I've been trying to get my old software from BITD working both on real machines and emulators, and I've noticed something bizarre.
Under RO2 (at least in an emulator), things work fine.
Under RO3 (both emulator and real machines), I sometimes get the error "Bad file name 'Net:%Logon'".
After much trial and error, I've realised that this happens if file commands are abbreviated.
So, under RO2 "*L.<filename>", "*LO.<Filename>", and "*LOAD <filename>" all work. Under RO3, only *LOAD works; the abbreviated forms generate the error.
It happens after a clean boot, on any file. So it's not program-specific.
Is this a recognised phenomenon? Is there an easy workaround?
Command abbreviations under RO3
Re: Command abbreviations under RO3
Someone decided to make the alias search handle abbreviated commands in the early days (can't remember whether Arthur was afflicted); bad move IMO.
RISC OS 3 set up more aliases than RISC OS 2.
You could Unset alias$Logon
RISC OS 3 set up more aliases than RISC OS 2.
You could Unset alias$Logon
Miserable old curmudgeon who still likes a bit of an ARM wrestle now and then. Pi 4, 3, ARMX6, SA Risc PC, A540, A440
Re: Command abbreviations under RO3
Thank you!
You have no idea how much grief that issue's caused me this year (or how much work I now have ahead of me, putting "incompatible" software on multiple machines).
Wish I'd asked sooner!
You have no idea how much grief that issue's caused me this year (or how much work I now have ahead of me, putting "incompatible" software on multiple machines).
Wish I'd asked sooner!
Re: Command abbreviations under RO3
You should never ever ever ever ever ever ever ever ever ever ever ever ever ever embed abbreviations into released code, as you have ZERO knowledge of the OTHER PERSON'S machine that it will be run on. On your machine *D. may match DUMP, on my machine *D. may match DESTROY.
Code: Select all
$ bbcbasic
PDP11 BBC BASIC IV Version 0.45
(C) Copyright J.G.Harston 1989,2005-2024
>_
- IanJeffray
- Posts: 6018
- Joined: Sat Jun 06, 2020 3:50 pm
- Contact:
Re: Command abbreviations under RO3
Code: Select all
*Set Alias$L. LOAD %*0
- BeebMaster
- Posts: 7433
- Joined: Sun Aug 02, 2009 5:59 pm
- Location: Lost in the BeebVault!
- Contact:
Re: Command abbreviations under RO3
I would definitely concur that using minimum command abbreviations should be avoided for any code that might find its way onto a different machine. The only real case for it would be if there is just simply insufficient memory for the code without using an abbreviation. That really ought never to happen on an Archimedes, but could happen on Beebs.
Is this an appropriate place to vent a long-standing gripe of mine: why on Earth did Acorn replace "*I AM" with "*LOGON" in RISC OS?
Is this an appropriate place to vent a long-standing gripe of mine: why on Earth did Acorn replace "*I AM" with "*LOGON" in RISC OS?
Re: Command abbreviations under RO3
Most of the command parsing and matching under RO is done by the OS itself (the module provides a table of commands, help strings, entry points, etc, and the OS does all the hard work), so the space in the middle breaks the system. The command would have to be just "*I" - which would then screw up the automated output of the *Help tables.BeebMaster wrote: ↑Tue Oct 17, 2023 5:30 pm why on Earth did Acorn replace "*I AM" with "*LOGON" in RISC OS?
That said, the RO3 PRMs note that NetFS intercepts the Unknown Command service call to implement commands that are server-side, so it might have been possible to "special case" this one although it would be missing from the help.