A4000 + Uniboot = error "Expression is a string"

chat about arc/risc pc gaming & RISC OS software here (NOT the core OS!)Related forum: adventures


Post Reply
stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Tue Mar 12, 2019 6:54 pm

I've just rebuilt an A4000 and have installed the "Universal !Boot Sequence", downloaded from www.riscos.com. (http://www.riscos.com/ftp_space/310/index.htm)

Now every time I cold boot the machine at the end of the boot process before Pinboard starts I get an error dialog come up "Expression is a string".

Does anyone happen to know what script in !Boot is causing this and how to fix the issue. It's rather annoying.

User avatar
IanS
Posts: 878
Joined: Mon Aug 31, 2009 6:02 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by IanS » Tue Mar 12, 2019 7:11 pm

It doesn't generate that error here. I've just installed that download on a RISC OS 3.11 machine.

How did you unpack the file?

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Tue Mar 12, 2019 7:51 pm

IanS wrote:
Tue Mar 12, 2019 7:11 pm
It doesn't generate that error here. I've just installed that download on a RISC OS 3.11 machine.

How did you unpack the file?
I downloaded it via NetSurf on a Raspberry Pi running the latest RiscOS distribution and then put it onto the hard disk I'd formatted using RiscOS on the Pi for use in the A4000. I then unpacked it using !SparkFS on the A4000 and copied the !Boot into the root of the hard disk, did "*opt 4,2" and "*conf. drive 4" to set the hard disk to boot.

P.S. I've tried this multiple times with the same result. (Warm restarts work fine.)
Last edited by stephen_usher on Tue Mar 12, 2019 7:54 pm, edited 2 times in total.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sat Mar 16, 2019 3:19 pm

Interestingly the error is appearing after the script calls \Choices.Desktop but before the Desktop script starts to run. (I tested using Error lines in the scripts.)

steve3000
Posts: 1984
Joined: Sun Nov 25, 2012 12:43 am
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by steve3000 » Sat Mar 16, 2019 5:00 pm

Uniboot can become confused if your machine is anything other than completely standard.

Do you have any podules fitted? (Some network cards cause problems)

Or do you have any modules unplugged? (Try *unplug to see)

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sat Mar 16, 2019 6:42 pm

steve3000 wrote:
Sat Mar 16, 2019 5:00 pm
Uniboot can become confused if your machine is anything other than completely standard.

Do you have any podules fitted? (Some network cards cause problems)

Or do you have any modules unplugged? (Try *unplug to see)
There are no podules and the error is there even if I clear the NVRAM (Delete on power-up) and then set the hard disk to boot with no other changes.

matt_nottm
Posts: 120
Joined: Sat Feb 11, 2017 11:54 am
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by matt_nottm » Sat Mar 16, 2019 6:50 pm

I believe that error is when system variables expand and the line being executed extends beyond 255 characters. Are there lots of files being added, do you have a long drive name, etc?

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sat Mar 16, 2019 10:05 pm

matt_nottm wrote:
Sat Mar 16, 2019 6:50 pm
I believe that error is when system variables expand and the line being executed extends beyond 255 characters. Are there lots of files being added, do you have a long drive name, etc?
No, as the RiscOS 3.1 doesn't support long file names the disk hasn't been formatted with that capability. Also, there's not a great deal on the drive other than uniboot and some apps (and a couple of games).
Last edited by stephen_usher on Sat Mar 16, 2019 10:06 pm, edited 1 time in total.

sirbod
Posts: 975
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by sirbod » Sun Mar 17, 2019 7:10 am

stephen_usher wrote:
Tue Mar 12, 2019 6:54 pm
at the end of the boot process before Pinboard starts I get an error dialog come up "Expression is a string".

Does anyone happen to know what script in !Boot is causing this and how to fix the issue. It's rather annoying.
The error means a numerical check is being done against a string. So there's possibly a Set being used instead of SetEval, or there's a check that should be surrounded by quotes.

Follow the Obey files that get called by !Boot.!Run and add a line with "Obey" on it, to terminate the Obey file early. Do that until you track down the offending line. If it's not obvious where a particular script is located, look in !Boot.Utils - I think the initial Wimp boot script lives there.

As the error occurs just before the pinboard is loaded, it's very likely to be something in !Boot.Choices.Boot or the script that launches them, so it's worth moving everything out of !Boot.Choices.Boot.Tasks first to rule them out.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sun Mar 17, 2019 8:58 am

As I noted in an earlier post, I used Error calls to to just what you said and noted where the message appears, and it seems somewhere inbetween two scripts.

sirbod
Posts: 975
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by sirbod » Sun Mar 17, 2019 9:27 am

stephen_usher wrote:
Sun Mar 17, 2019 8:58 am
As I noted in an earlier post, I used Error calls to to just what you said and noted where the message appears, and it seems somewhere inbetween two scripts.
Sorry, missed that post. Boot$OSVersion is created as a string but used as a value when checks are done - if it's not converted to a value on-the-fly, it will trigger the error you're seeing.

If !Boot.Choices.Boot.Desktop is triggering the issue, what is the value of Boot$OSVersion? Does it contain any letters or dots? There's a fixup done for Boot$OSVersion in !Boot.Choices.Boot.PreDesktop, where it checks for "3.50" and changes is to "350" - copy that line and adjust if Boot$OSVersion contains anything other than numbers.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sun Mar 17, 2019 9:51 am

sirbod wrote:
Sun Mar 17, 2019 9:27 am
stephen_usher wrote:
Sun Mar 17, 2019 8:58 am
As I noted in an earlier post, I used Error calls to to just what you said and noted where the message appears, and it seems somewhere inbetween two scripts.
Sorry, missed that post. Boot$OSVersion is created as a string but used as a value when checks are done - if it's not converted to a value on-the-fly, it will trigger the error you're seeing.

If !Boot.Choices.Boot.Desktop is triggering the issue, what is the value of Boot$OSVersion? Does it contain any letters or dots? There's a fixup done for Boot$OSVersion in !Boot.Choices.Boot.PreDesktop, where it checks for "3.50" and changes is to "350" - copy that line and adjust if Boot$OSVersion contains anything other than numbers.
The problem is that the error appears before the first statement within !Boot.Choices.Boot.Desktop. I put the "Error" line as the first line in the file and its dialog appeared after the one giving the error. So it's happening some time between the desktop starting and this script starting.

sirbod
Posts: 975
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by sirbod » Sun Mar 17, 2019 10:27 am

!Boot.Choices.Boot.Desktop is called as the last thing in !Boot.Utils.BootRun. What happens if you comment out that line and then manually run !Boot.Choices.Boot.Desktop?

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sun Mar 17, 2019 12:31 pm

sirbod wrote:
Sun Mar 17, 2019 10:27 am
!Boot.Choices.Boot.Desktop is called as the last thing in !Boot.Utils.BootRun. What happens if you comment out that line and then manually run !Boot.Choices.Boot.Desktop?
With that line commented out the system drops to the * prompt.

If you then type "desktop" and hit return to start the desktop then the error dialog pops up a while after the Vprotect banner is displayed and before the screen is cleared ready for pinboard to start.

sirbod
Posts: 975
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by sirbod » Sun Mar 17, 2019 4:16 pm

stephen_usher wrote:
Sun Mar 17, 2019 12:31 pm
type "desktop" and hit return to start the desktop then the error dialog pops up a while after the Vprotect banner is displayed and before the screen is cleared
That rules out anything in !Boot.Choices.Boot.Tasks. It's likely to be something in Resources or a loaded Module possibly attempting to start a filer.

I've tried both versions of Uniboot on www.riscos.com and they both work without issue, so my guess would be its not extracted correctly assuming you previously had no !Boot and have no Podules fitted.

Try deleting !Boot and extracting Uniboot again, and failing that try UniBoot2, which is probably more up to date than Uniboot. There's also the updated System Resources on ROOL, which will contain the latest FPEmulator, WindowManager, network drivers and various other fixes that have been rolled back to earlier RISC OS versions.
Last edited by sirbod on Sun Mar 17, 2019 4:17 pm, edited 1 time in total.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sun Mar 17, 2019 5:35 pm

I've deleted and replaced !Boot twice, extracting the archive with !SparkFS with no error.

Before I can get any other version of Uniboot on there I'll have to swap the Gotek out for the original floppy first.

Are you sure that the System Resources mentioned in your post will work under 3.1 on an A4000? The earliest model they say they support is the A7000.

sirbod
Posts: 975
Joined: Mon Apr 09, 2012 8:44 am
Location: Essex
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by sirbod » Sun Mar 17, 2019 7:13 pm

stephen_usher wrote:
Sun Mar 17, 2019 5:35 pm
Are you sure that the System Resources mentioned in your post will work under 3.1 on an A4000? The earliest model they say they support is the A7000.
Not sure where you're reading that, the archive is for all pre-RISC OS 5 machines. If you look inside the archive, you'll find the majority of the Modules are for RISC OS 3.1x, just extract it and run !SysMerge to update !Boot.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Sun Mar 17, 2019 8:32 pm

OK. I'll have to swap the drive over and put it on a floppy before I try.

stephen_usher
Posts: 54
Joined: Sun Apr 10, 2016 1:47 pm
Contact:

Re: A4000 + Uniboot = error "Expression is a string"

Post by stephen_usher » Mon Mar 25, 2019 10:41 pm

Well, I found my CF-to-IDE adapters along with a 128MB CF card. Formatted it under Risc OS 3.11 and then copied over FancyBoot and installed it...

The same error.

Maybe during the graphical start-up it's tickling a hardware fault of some kind that the ROM based version doesn't care about?

Post Reply