"do build.sh cosmos.asm" looked for a file called "build.sh cosmos.asm", because scriptOpen copied the whole rest of the line into the name. So a script could be told nothing, and a launcher - a script whose entire job is to hand on what it was told - could not exist. Now the name is cut off the front and what follows is kept whole. $1 to $9 are the words of it, walked out on demand, and $args is all of them. Nothing is stored per parameter, so there is no limit on how many a script may be handed and no second number to keep in step. Both ways of starting a script pass them on: "do" and typing the name. A word that was not given is an error that stops the script, like every other name this shell does not know. Expanding it to nothing would let a command run with an argument missing and then report success, which is what stop-on-failure exists to prevent. $args is always set inside a script, empty if it was given nothing, so "if same $args" can be asked. ---- And the count that describes the block was already wrong ---- Found while adding a field to it. The state one script keeps for another is saved by a single copy of a fixed number of bytes, and that number was 71 against a block of 77: six bytes of line position had been added in the middle of it years after the count was written. So the tail of every saved script was never saved, and #quiet in a helper stayed behind in the script that called it - the opposite of what this file's own comment promises and the README documents. The unsaved line position turned out not to matter, because a loop keeps its own copy in the block record. Nothing said so. Three numbers describe this block and all three now say so in a comment, and cosmosScriptNest ends on a helper that goes quiet and a caller that must not stay that way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
39 lines
1.1 KiB
Plaintext
39 lines
1.1 KiB
Plaintext
CosmOS
|
|
> help
|
|
dir list what is on the disk
|
|
load <file> read a program off the disk
|
|
run [words] start what was loaded, and tell it those words
|
|
<name> [words] look where you are and then in /Apps, and start that
|
|
cd [path] go to a directory, or to the root with nothing after it
|
|
mkdir <path> make a directory
|
|
rmdir <path> remove an empty one
|
|
do <file> [words] run the lines in a file, which must start with #!
|
|
echo [words] say them
|
|
clear empty the screen
|
|
delete <file> take it off the disk
|
|
rename <file> <to> call it something else
|
|
monitor look at memory, change it, and jump into it
|
|
help this
|
|
exit stop, or leave the monitor if you are in it
|
|
> dir
|
|
greeting.txt 17
|
|
filler1.txt 8
|
|
filler2.txt 8
|
|
filler3.txt 8
|
|
filler4.txt 8
|
|
filler5.txt 8
|
|
filler6.txt 8
|
|
filler7.txt 8
|
|
filler8.txt 8
|
|
across.txt 700
|
|
empty.txt 0
|
|
aName22CharactersLong! 22
|
|
12 files
|
|
>
|
|
> frobnicate
|
|
I do not know: frobnicate
|
|
> exit
|
|
halted
|
|
Execution halted.
|
|
[exit 0]
|