Finishing says nothing, which is what finishing looks like

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
This commit is contained in:
Anachronaut
2026-09-06 19:49:43 -04:00
co-authored by Claude Opus 5
parent a13bbeb4db
commit afda6ca83b
60 changed files with 43 additions and 151 deletions
+4 -5
View File
@@ -199,12 +199,10 @@ lsColour:
; ---- What it is, said in colour ----
;
; The attribute reaches a terminal as well as the screen now, so this is one mechanism and
; not two. A directory in blue and an unfinished save in red; everything else plain, because
; whether a file is runnable cannot be known without opening it, and opening every file in a
; directory to colour a listing is a price nobody agreed to pay.
; not two. A directory in blue and an unfinished save in red; everything else plain.
SETD.0 Kind
LDA.0
BRA lsPlain
BRA lsFileInk
DECA
BRA lsBlue
INIA 0d1 ; An unfinished save, which is worth looking at.
@@ -212,7 +210,8 @@ lsColour:
lsBlue:
INIA 0d4
BRI lsInk
lsPlain:
lsFileInk:
RSTA
lsInk:
OUTA 0x06
+2 -1
View File
@@ -274,7 +274,8 @@ echo done
`echo` is a command rather than a program on purpose. `Say.sbx` has printed words since before
there were scripts and is the wrong shape for one: being a program, it has to be found on the
disk and loaded and started, it prefixes what it was told with `it says:`, and the system
prints `finished` after it - three lines of noise around one line of narration.
prints `finished` after it - three lines of noise around one line of narration. Two, now: the
system stopped saying `finished` after every program.
**The first two bytes must be `#!`**, or the shell refuses the file and says so. That is what
tells a script from anything else, and it is deliberately not the name and not a flag in the
+27 -12
View File
@@ -5126,8 +5126,9 @@ doClear:
;
; Says the rest of the line and nothing else. Say.sbx has done this since before there were
; scripts, and is the wrong shape for one: it is a program, so it has to be found on the
; disk and loaded and started, it prefixes what it was told with "it says:", and the system
; prints "finished" after it. That is three lines of noise around one line of narration.
; disk and loaded and started, and it prefixes what it was told with "it says:". That was
; three lines of noise around one line of narration when this was written - the system said
; "finished" after every program then, which is the third line and is gone now.
;
; A script telling you what it is doing is the ordinary case now, so it costs a command
; rather than a program. With nothing after it, a blank line - which is what anybody will
@@ -6830,24 +6831,41 @@ exitWorked:
RSTA
OUTA 0x06
; ---- Finished, or stopped ----
; ---- Stopped, or nothing at all ----
;
; A program that faulted did not finish, and saying so would be the shell's own word
; against what the fault screen just said in red immediately above it.
; A program that faulted did not finish, and says so - the fault screen printed in red
; immediately above, and a program that is gone should not look like one that ended.
SETD.1 FaultStopped
LDA.1
BRA exitFinished
RSTA
STA.1 ; Cleared, so the next program is not blamed for this one.
SETD.0 Stopped
BRI exitSay
exitFinished:
SETD.0 Finished
exitSay:
CALL printString
CALL newLine
BRI prompt
exitFinished:
; ---- Finishing says nothing, which is what finishing looks like ----
;
; It used to say "finished". That made sense when starting a program and getting the
; machine back was most of what the machine did; 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".
;
; 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 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 this asks - where a blank
; line printed every time would be right about half of the time.
INA 0x04
BRA prompt
CALL newLine
BRI prompt
; ---- dump ----
;
; dump Sixty four more bytes, carrying on from the last one.
@@ -8127,9 +8145,6 @@ FaultQ:
" Q "
FaultSystem:
"that was the system itself, so there is nowhere to carry on from. Start the machine again."
Finished:
"finished"
BreakText:
"break at "
ARegText:
+1 -2
View File
@@ -9,13 +9,12 @@ a file kept by asking
renamed it
deleted it
and it is gone
finished
> mkdir Notes
made
> cd Notes
/Notes> dir
0 files
8 of 32 entries, 308 blocks free
8 of 32 entries, 309 blocks free
/Notes> exit
halted
Execution halted.
-1
View File
@@ -12,7 +12,6 @@ A 44 B 55 Q 00 status 00
DP0 3000 DP1 3037 DP2 3030 DP3 5000 SP FFF5
press a key
carried on to the end
finished
> exit
halted
Execution halted.
-1
View File
@@ -2,7 +2,6 @@ CosmOS
> Claim
claiming more than was reserved was refused
and the size it really came to was taken
finished
> dir
Claim.sbx 580
claim.dat 266
-13
View File
@@ -1,43 +1,30 @@
CosmOS
> Copy /Input/empty.dat /Output/empty.dat
copied
finished
> Compare /Input/empty.dat /Output/empty.dat
the same
finished
> Copy /Input/exact.dat /Output/exact.dat
copied
finished
> Compare /Input/exact.dat /Output/exact.dat
the same
finished
> Copy /Input/tail.dat /Output/tail.dat
copied
finished
> Compare /Input/tail.dat /Output/tail.dat
the same
finished
> Copy /Input/large.dat /Output/large.dat
copied
finished
> Compare /Input/large.dat /Output/large.dat
the same
finished
> Compare /Input/large.dat /Input/different.dat
different
finished
> Copy /Input/missing.dat /Output/missing.dat
copy: cannot find the source
finished
> Compare /Input/large.dat /Input/missing.dat
compare: cannot find the second file
finished
> Copy
copy: give me a source and destination
finished
> Compare /Input/large.dat
compare: give me two files
finished
> exit
halted
Execution halted.
-2
View File
@@ -2,12 +2,10 @@ CosmOS
> drive 1
> Copy 1:/twoblocks.txt 0:/crossed.txt
copied
finished
> drive
1
> Say from drive one
it says: from drive one
finished
> drive
1
> cd 0:/
-7
View File
@@ -13,18 +13,14 @@ notes.txt 25
9 of 32 entries, 240 blocks free
/A> Type notes.txt
these are the notes in A
finished
/A> cd /B
/B> Type notes.txt
and these are the very different notes in B
finished
/B> Say reached the one in Apps
it says: reached the one in Apps
finished
/B> cd /A
/A> Say reached the one in A
Hello, World!
finished
/A> cd ..
> dir
Apps <dir>
@@ -35,14 +31,11 @@ B <dir>
> cd /B
/B> Type ../A/notes.txt
these are the notes in A
finished
/B> Wander /A
moved, and reading a bare name from there:
these are the notes in A
finished
/B> Type notes.txt
and these are the very different notes in B
finished
/B> cd nosuchplace
no such file
/B> cd notes.txt
-2
View File
@@ -26,7 +26,6 @@ poem.txt, new file
> w
written, 22 bytes
> q
finished
> run poem.txt
poem.txt, 3 lines
> l
@@ -36,7 +35,6 @@ poem.txt, 3 lines
> d 99
there is no such line
> q
finished
> exit
halted
Execution halted.
-5
View File
@@ -2,20 +2,15 @@ CosmOS
> Edit hello.asm
hello.asm, 31 lines
> q
finished
> Edit hello.asm
hello.asm, 31 lines
> q
finished
> Status
the last program left 0, which is: it did what it was asked
finished
> Edit long.txt
a line in it is longer than this can edit, so it has not been opened
finished
> Status
the last program left 1, which is: it did not
finished
> exit
halted
Execution halted.
+1 -3
View File
@@ -15,11 +15,9 @@ typed.txt, new file
> w
written, 13 bytes
> q
finished
> run typed.txt
> run typed.txt
typed.txt, 2 lines
> q
finished
> exit
halted
Execution halted.
-1
View File
@@ -17,7 +17,6 @@ CosmOS
the program was stopped
> Crash sideways
Crash opcode | service | bank | device | blind
finished
> dir
greet.sbx 211
hello.sbx 53
-3
View File
@@ -1,13 +1,10 @@
CosmOS
> Say before Flip
it says: before Flip
finished
> Flip
A screen is drawn where you cannot see it. A key shows it, another comes back.
finished
> Say after Flip
it says: after Flip
finished
> dir
greet.sbx 211
hello.sbx 53
+1 -4
View File
@@ -1,13 +1,10 @@
CosmOS
> Say before Grid
it says: before Grid
finished
> Grid
finished
>
>
> Say after Grid
it says: after Grid
finished
> dir
greet.sbx 211
hello.sbx 53
-2
View File
@@ -3,10 +3,8 @@ CosmOS
loaded, starting at 5000
> run
Hello, World!
finished
> run
Hello, World!
finished
> exit
halted
Execution halted.
-4
View File
@@ -1,13 +1,10 @@
CosmOS
> Say hello there
it says: hello there
finished
> Say.sbx spelled out in full
it says: spelled out in full
finished
> run once more
it says: once more
finished
> dir
Say.sbx 156
dir.sbx 156
@@ -20,7 +17,6 @@ Apps <dir>
8 of 16 entries, 54 blocks free
> Greet a program with no extension
it says: a program with no extension
finished
> hello.sh
> echo a script, started by its name
a script, started by its name
-2
View File
@@ -5,13 +5,11 @@ loaded, starting at 5000
keys, by interrupt. q stops.
ab
the console has been handed back
finished
>
> run
keys, by interrupt. q stops.
cd
the console has been handed back
finished
>
> monitor
x examine, d disassemble, a assemble, s set, b bank, g go, exit leaves
-1
View File
@@ -1,7 +1,6 @@
CosmOS
> Lander
Crashed.
finished
> exit
halted
Execution halted.
-1
View File
@@ -1,7 +1,6 @@
CosmOS
> Lander
Crashed.
finished
> exit
halted
Execution halted.
-1
View File
@@ -868,7 +868,6 @@ loaded, starting at 5000
##
the board has settled
finished
>
halted
Execution halted.
-1
View File
@@ -20,7 +20,6 @@ loaded, starting at 5000
stopped
finished
>
>
halted
-5
View File
@@ -8,24 +8,19 @@ tune.sbx Play.sbx notes.txt Apps/ hi.script
bad.script plain.script cross.script nonl.script outer.script
inner.script loop.script hush.script aloud.script args.script
pass.script holds.script
finished
> cd /Apps
/Apps> ls
Copy.sbx Say.sbx Where.sbx Walk.sbx ls.sbx Lander where.sh
finished
/Apps> cd /
> ls /Packages/app.Lander
Lander.sbx splash.tune
finished
> mkdir /empty
made
> cd /empty
/empty> ls
finished
/empty> cd /
> ls nowhere
there is no such directory: nowhere
finished
> exit
halted
Execution halted.
-1
View File
@@ -92,7 +92,6 @@ that one needs a value after it
820F 00 ?
* g 8200
hello, typed
finished
* exit
> dir
greet.sbx 211
-1
View File
@@ -3,7 +3,6 @@ CosmOS
x examine, d disassemble, a assemble, s set, b bank, g go, exit leaves
* Say hello from the monitor
it says: hello from the monitor
finished
* Crash opcode
that byte is not an instruction, at 5081
A 00 B 0F Q 00
-3
View File
@@ -50,7 +50,6 @@ line 42: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 43: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 44: ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- more --
finished
> run readable.txt
first line
second line
@@ -115,7 +114,6 @@ line 56: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 57: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 58: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 59: ABCDEFGHIJKLMNOPQRSTUVWXYZ
finished
> run readable.txt
first line
second line
@@ -167,7 +165,6 @@ line 44: ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- more --
line 45: ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- more --
finished
> exit
halted
Execution halted.
-2
View File
@@ -3,7 +3,6 @@ CosmOS
loaded, starting at 5000
> run
40
finished
> load More.sbx
loaded, starting at 5000
> run readable.txt
@@ -30,7 +29,6 @@ line 17: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 18: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 19: ABCDEFGHIJKLMNOPQRSTUVWXYZ
-- more --
finished
> exit
halted
Execution halted.
-2
View File
@@ -1,12 +1,10 @@
CosmOS
> Mode
40
finished
> echo a narrow screen
a narrow screen
> Mode
80
finished
> echo and a wide one again
and a wide one again
> exit
-1
View File
@@ -8,7 +8,6 @@ Pads present, as a bit each: 1
0: 0
0: 48
0: 0
finished
> exit
halted
Execution halted.
-1
View File
@@ -8,7 +8,6 @@ keys:
86 delete
5A Z
done
finished
>
> exit
halted
-1
View File
@@ -8,7 +8,6 @@ keys:
86 delete
5A Z
done
finished
>
> exit
halted
-1
View File
@@ -5,7 +5,6 @@ CosmOS
0 of 128 entries, 2031 blocks free
> Copy 0:/Say.sbx 1:/Say.sbx
copied
finished
> dir
Say.sbx 156
1 file
-2
View File
@@ -53,12 +53,10 @@ loaded, starting at 5000
a program, loaded off a disk, running on the system that loaded it
what should I call you? Anachronaut
hello, Anachronaut. that is all I do.
finished
> run
a program, loaded off a disk, running on the system that loaded it
what should I call you? Claude
hello, Claude. that is all I do.
finished
> exit
halted
Execution halted.
-3
View File
@@ -3,13 +3,10 @@ CosmOS
loaded, starting at 5000
> run
nothing was said
finished
> run notes.txt
it says: notes.txt
finished
> run a longer thing with spaces
it says: a longer thing with spaces
finished
> exit
halted
Execution halted.
-2
View File
@@ -4,12 +4,10 @@ CosmOS
saying what it is doing
> Say from a script
it says: from a script
finished
> echo
> Say and again
it says: and again
finished
> exit
halted
Execution halted.
-1
View File
@@ -16,7 +16,6 @@ all of it is blue yellow
> pass.script hello there
> Say $args
it says: hello there
finished
> do holds.script top level
> echo outer has $1
outer has top
-1
View File
@@ -2,7 +2,6 @@ CosmOS
> do bad.script
> Say before
it says: before
finished
> nosuchcommand
I do not know: nosuchcommand
stopped: that line did not work
-2
View File
@@ -2,11 +2,9 @@ CosmOS
> do cross.script
> Say across the block boundary
it says: across the block boundary
finished
> do nonl.script
> Say with no newline after me
it says: with no newline after me
finished
> exit
halted
Execution halted.
-1
View File
@@ -8,7 +8,6 @@ a file kept by asking
renamed it
deleted it
and it is gone
finished
> exit
halted
Execution halted.
-1
View File
@@ -3,7 +3,6 @@ this is the fallback: what boot.cfg asks for did not start
> Settle
the disk says the last start did not arrive, so this is the fallback
settled: the next start will use the configuration again
finished
> exit
halted
Execution halted.
-1
View File
@@ -1,7 +1,6 @@
CosmOS
> Settle
already settled: the next start will use the configuration
finished
> exit
halted
Execution halted.
-1
View File
@@ -43,7 +43,6 @@ holds.script 87
loaded, starting at 5000
> run the disk took its time
it says: the disk took its time
finished
> exit
halted
Execution halted.
-1
View File
@@ -288,7 +288,6 @@ loaded, starting at 5000
+----------------+
score 1 wasd steers, q stops
you ran into something
finished
>
halted
Execution halted.
-1
View File
@@ -23,7 +23,6 @@ End:
"Hello, World!"
---- lines: 21
finished
> exit
halted
Execution halted.
-3
View File
@@ -1,13 +1,10 @@
CosmOS
> Say before Sprite
it says: before Sprite
finished
> Sprite
A ball, over the shell's own words. Nothing underneath is written to. Press a key.
finished
> Say after Sprite
it says: after Sprite
finished
> dir
greet.sbx 211
hello.sbx 53
-2
View File
@@ -10,7 +10,6 @@ A 44 B 55 Q 00 status 00
DP0 3000 DP1 3037 DP2 3030 DP3 5000 SP FFF5
press a key
carried on to the end
finished
> ho $nope
nothing is set called nope
> echo $nope
@@ -38,7 +37,6 @@ A 44 B 55 Q 00 status 00
DP0 3000 DP1 3037 DP2 3030 DP3 5000 SP FFF5
press a key
carried on to the end
finished
> it
I do not know: it
>
-6
View File
@@ -1,22 +1,16 @@
CosmOS
> Say it worked
it says: it worked
finished
> Status
the last program left 0, which is: it did what it was asked
finished
> Type
type: give me a file name
finished
> Status
the last program left 2, which is: it was asked wrongly
finished
> Type /nothing/here.txt
type: cannot find the file, error 2
finished
> Status
the last program left 1, which is: it did not
finished
> exit
halted
Execution halted.
-1
View File
@@ -12,7 +12,6 @@ the old name now answers 2
the new name answers 0
a name that was never there answers 2
a block past the end answers 3
finished
> exit
halted
Execution halted.
+4 -5
View File
@@ -1,16 +1,15 @@
CosmOS
> CrCrash.sbx zz
Crash opcode | service | bank | device | blind
finished
> SaSay.sbxzz
> SaSay.sbxzz
I do not know: Say.sbxzz
> cd Apcd Apps/
> cd Apcd Apps/
/Apps> echo where am I
where am I
/Apps> cd /
> echo Apps/Secho Apps/Say.sbx 
> echo Apps/Secho Apps/Say.sbx 
Apps/Say.sbx
> echo /Apps/Cecho /Apps/Copy.sbx 
> echo /Apps/Cecho /Apps/Copy.sbx 
/Apps/Copy.sbx
> exit
halted
-1
View File
@@ -21,7 +21,6 @@ loaded, starting at 5000
18 keyword 0 [#Data]
20 string 14 [Hello, World!]
---- no more tokens
finished
> exit
halted
Execution halted.
-4
View File
@@ -8,22 +8,18 @@ rooted.txt 21
loaded, starting at 5000
> run the shallow one
it says: the shallow one
finished
> load /Apps/Deep/Say.sbx
loaded, starting at 5000
> run the deep one
Hello, World!
finished
> load /Apps/./Deep/../Say.sbx
loaded, starting at 5000
> run the shallow one again
it says: the shallow one again
finished
> load /Apps/Deep/../../Apps/./Deep/Say.sbx
loaded, starting at 5000
> run the deep one the long way round
Hello, World!
finished
> load /rooted.txt/Say.sbx
no such file
> load /Apps/Missing/Say.sbx
-1
View File
@@ -15,7 +15,6 @@ note.txt, new file
> w
written, 67 bytes
> q
finished
> dir
Folder <dir>
Edit.sbx 2243
-4
View File
@@ -64,15 +64,11 @@ line 56: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 57: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 58: ABCDEFGHIJKLMNOPQRSTUVWXYZ
line 59: ABCDEFGHIJKLMNOPQRSTUVWXYZ
finished
> run empty.txt
finished
> run missing.txt
type: cannot find the file, error 2
finished
> run
type: give me a file name
finished
> exit
halted
Execution halted.
-2
View File
@@ -37,7 +37,6 @@ f aloud.script 1
f args.script 1
f pass.script 1
f holds.script 1
finished
> cd /Apps
/Apps> Walk
f Copy.sbx 7
@@ -47,7 +46,6 @@ f Walk.sbx 1
f ls.sbx 3
f Lander 4
f where.sh 3
finished
/Apps> cd /
> exit
halted
-5
View File
@@ -1,28 +1,23 @@
CosmOS
> Where
loaded from /Where.sbx
finished
> Where splash.tune
loaded from /Where.sbx
beside it: /splash.tune
finished
> mkdir /work
made
> cd /work
/work> Where
loaded from /Apps/Where.sbx
finished
/work> Where tiles.atlas
loaded from /Apps/Where.sbx
beside it: /Apps/tiles.atlas
finished
/work> cd /
> load /Apps/Where.sbx
loaded, starting at 5000
> run notes.txt
loaded from /Apps/Where.sbx
beside it: /Apps/notes.txt
finished
> exit
halted
Execution halted.
+1 -2
View File
@@ -1,12 +1,11 @@
CosmOS
> Once /System/Boot/bare.bin
next start: /System/Boot/bare.bin, once
finished
> dir /System/Boot
System <dir>
Apps <dir>
0 files, 2 directories
8 of 32 entries, 305 blocks free
8 of 32 entries, 306 blocks free
> exit
halted
Execution halted.
-1
View File
@@ -2,7 +2,6 @@ stage two
CosmOS
> Once /System/Boot/bare.bin
next start: /System/Boot/bare.bin, once
finished
> Reboot
starting again
stage two
+1 -2
View File
@@ -7,13 +7,12 @@ a file kept by asking
renamed it
deleted it
and it is gone
finished
> mkdir Notes
made
> cd Notes
/Notes> dir
0 files
7 of 32 entries, 309 blocks free
7 of 32 entries, 310 blocks free
/Notes> exit
halted
Execution halted.
+1 -2
View File
@@ -7,13 +7,12 @@ a file kept by asking
renamed it
deleted it
and it is gone
finished
> mkdir Notes
made
> cd Notes
/Notes> dir
0 files
7 of 32 entries, 309 blocks free
7 of 32 entries, 310 blocks free
/Notes> exit
halted
Execution halted.
-1
View File
@@ -1,6 +1,5 @@
CosmOS
> tune
finished
> exit
halted
Execution halted.