The shell printed "finished" every time a program gave the machine back. That made sense when starting a program and getting the machine back was most of what the machine did and the prompt was the only other thing on the screen. Under a listing, between two commands, it is noise. And it was printed whatever the program made of it, so a program that had just explained what went wrong was answered with the word "finished" - "there is no such directory: nowhere" and then, immediately, "finished". The prompt coming back is what says a program is over. It is the same argument osLastStatus is made of: a program that failed has already said so in words, and anything the shell adds beside that is the shell talking over it. A program that FAULTED still says so, because the fault screen printed in red above and a program that is gone should not look like one that ended. A NEWLINE ONLY IF ONE IS WANTED. A program that stopped part way along a line would leave the prompt sitting in the middle of its last output, which the word used to prevent by accident. The console knows which column the cursor is in, so the shell asks - where a blank line printed every time would be right about half of the time, and an empty directory listed with ls would be followed by a blank line for no reason. Fifty nine recorded sessions lose the word. Two of them move a cursor up a row with it, which is the same fact seen from the screen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
1.6 KiB
1.6 KiB
CosmOS
> Crash opcode
that byte is not an instruction, at 5081
A 00 B 0F Q 00
the program was stopped
> Crash service
nothing is installed at service 28, at 5084
A 00 B 0F Q 00
the program was stopped
> Crash bank
a bank that is not there, or an address past its end, at 509E
A 01 B 0F Q 00
the program was stopped
> Crash device
nothing is installed for the device on port 00, at 50A5
A 02 B 0F Q 00
the program was stopped
> Crash sideways
Crash opcode | service | bank | device | blind
> dir
greet.sbx 211
hello.sbx 53
Life.sbx 1396
Snake.sbx 2164
Keys.sbx 664
Say.sbx 156
Where.sbx 827
Break.sbx 149
Grid.sbx 571
Press.sbx 872
Mode.sbx 48
Flip.sbx 173
Sprite.sbx 442
Depth.sbx 672
Packages <dir>
Pad.sbx 264
Crash.sbx 632
vars.script 50
blocks.script 343
loops.script 272
tune.sbx 318
Play.sbx 2526
notes.txt 21
Apps <dir>
hi.script 121
bad.script 45
plain.script 24
cross.script 280
nonl.script 38
outer.script 376
inner.script 44
loop.script 35
hush.script 42
aloud.script 59
args.script 64
pass.script 20
holds.script 87
35 files, 2 directories
47 of 64 entries, 1890 blocks free
> exit
halted
Execution halted.
[exit 0]
> Crash opcode
that byte is not an instruction, at 5081
A 00 B 0F Q 00
the program was stopped
> Crash service
nothing is installed at service 28, at 5084
A 00 B 0F Q 00
the program was stopped
> Crash bank
a bank that is not there, or an address past its end, at 509E
A 01 B 0F Q 00
the program was stopped
> Crash device
nothing is installed for the device on port 00, at 50A5
A 02 B 0F Q 00
the program was stopped
> Crash sideways
Crash opcode | service | bank | device | blind
> dir
greet.sbx 211
hello.sbx 53
Life.sbx 1396
Snake.sbx 2164
Keys.sbx 664
Say.sbx 156
Where.sbx 827
Break.sbx 149
Grid.sbx 571
Press.sbx 872
Mode.sbx 48
Flip.sbx 173
Sprite.sbx 442
Depth.sbx 672
Packages <dir>
Pad.sbx 264
Crash.sbx 632
vars.script 50
blocks.script 343
loops.script 272
tune.sbx 318
Play.sbx 2526
notes.txt 21
Apps <dir>
hi.script 121
bad.script 45
plain.script 24
cross.script 280
nonl.script 38
outer.script 376
inner.script 44
loop.script 35
hush.script 42
aloud.script 59
args.script 64
pass.script 20
holds.script 87
35 files, 2 directories
47 of 64 entries, 1890 blocks free
> exit
halted
Execution halted.
[exit 0]