Lunar Porter never put the row origin back. The map is a ring 128 rows tall that the screen shows 25 of, and the shell leaves that origin wherever its last command finished - so a moon drawn into rows nought to 24 while the screen is reading from row forty is a moon nobody can see. It came out as terrain missing, or half there, depending on how far down the prompt had got. Running Pad first was enough; so was holding Return. Nothing here is tidiness. It is the difference between the rows a program WRITES and the rows the screen READS, and only one of those is under the program's control. Grid has always known this; Lander did not. The check for it needed writing twice. Forty returns caught nothing, because the shell runs an eighty column screen which is FIFTY rows tall - forty returns fill it and never scroll it, so the origin was still nought and the test passed against a build with the fix taken out. The screenful that matters is the one the shell is using, not the one the program is about to ask for. At eighty it is 28,608 pixels of moon with the fix and none at all without it. break.sh is what said so. The first version of this check looked exactly like a passing test. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
52 lines
1.2 KiB
Plaintext
52 lines
1.2 KiB
Plaintext
CosmOS
|
|
> monitor
|
|
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
|
|
the program was stopped
|
|
* nonsense
|
|
I do not know: nonsense
|
|
* b program
|
|
bank 00
|
|
* exit
|
|
> dir
|
|
greet.sbx 211
|
|
hello.sbx 53
|
|
Life.sbx 1396
|
|
Snake.sbx 2164
|
|
Keys.sbx 664
|
|
Say.sbx 156
|
|
Break.sbx 149
|
|
Grid.sbx 571
|
|
Press.sbx 872
|
|
Mode.sbx 48
|
|
Flip.sbx 173
|
|
Sprite.sbx 442
|
|
Depth.sbx 672
|
|
Lander.sbx 1575
|
|
Pad.sbx 264
|
|
Crash.sbx 632
|
|
vars.script 50
|
|
blocks.script 343
|
|
loops.script 272
|
|
tune.sbx 306
|
|
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
|
|
29 files, 1 directory
|
|
> exit
|
|
halted
|
|
Execution halted.
|
|
[exit 0]
|