Files
SplitBit-Emulator/Tests/expected/cosmosMonitor.out
T
AnachronautandClaude Opus 5 00b31b88af Lander opens on a splash, with music
The first customer for the player outside the program it was pulled out
of, and the argument for doing it: a splash needs no resident player at
all. Nothing else is happening while the logo is up, so Lander owns the
timer and all four channels exactly as Play does. Music UNDER a running
game is still deferred, and still the harder problem.

It polls the timer rather than being interrupted by it. Lander has no
vector segment and waits for the screen by reading port 0x30, so it waits
for a beat by reading port 0x50 - the same shape, and it brings no
handler that would have to be taken away before the game starts.

The tune is read off the disk. A missing one means the logo and silence
and the game starts anyway, the way a missing /lander.state means the
defaults stand.

FOUR THINGS THIS COST, each found by running it:

A subroutine cannot answer in A. CALL saves and restores it, so splashSkip
handed its caller back the A it already had - the channel number of the
last stepVoice - and the splash ended on its first pass whatever anybody
pressed. Q is what survives a RET, which nextRandom says twenty lines
away and I did not read.

Port 0x3D is how many window rows are SHOWN, and it is two once putGauge
runs and nothing before. A line written to row eleven went somewhere real
and was displayed nowhere.

A nought is not a keypress. It is what a recorded keyboard file holds
while nobody is typing, and a splash that took it for a key is one no
test could ever watch.

And skipping has to be free. Asked after blanking the window and reading
the file, a skipped splash still cost a fifth of a second - enough to
push the thruster test's early capture past the frame it looks at. Asked
first, it costs a pad read.

player.asm no longer asks a caller for Order0 to Order3: the voice records
name NoOrder instead, so a program whose tune comes from a file does not
have to define four order lists it never uses. That was the file case
finding a wart in the contract.

Every other Lander test now skips the splash with a space - a key the
game itself ignores, since it answers to q, z and the arrows - so they go
on testing what they tested. The one in sound.sh presses nothing, which
is what makes it the one that hears the music.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
2026-09-06 10:06:20 -04:00

135 lines
3.3 KiB
Plaintext

CosmOS
> monitor
x examine, d disassemble, a assemble, s set, b bank, g go, exit leaves
* b nonsense
b <program|data|number>
* b 9
there is no such bank
* load greet.sbx
loaded, starting at 5000
* b program
bank 00
* d 5000
5000 47 00 30 00 SETD.0 3000
5004 72 10 SWI 10
5006 47 00 30 44 SETD.0 3044
500A 72 10 SWI 10
500C 47 00 30 7A SETD.0 307A
5010 27 1F INIB 1F
5012 72 11 SWI 11
5014 47 00 30 5D SETD.0 305D
* x 5000
5000 47 00 30 00 72 10 47 00 30 44 72 10 47 00 30 7A G.0.r.G.0Dr.G.0z
5010 27 1F 72 11 47 00 30 5D 72 10 47 00 30 7A 72 10 '.r.G.0]r.G.0zr.
5020 47 00 30 65 72 10 20 72 12 00 00 00 00 00 00 00 G.0er. r........
5030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
* b data
bank 01
* x 3000
3000 61 20 70 72 6F 67 72 61 6D 2C 20 6C 6F 61 64 65 a program, loade
3010 64 20 6F 66 66 20 61 20 64 69 73 6B 2C 20 72 75 d off a disk, ru
3020 6E 6E 69 6E 67 20 6F 6E 20 74 68 65 20 73 79 73 nning on the sys
3030 74 65 6D 20 74 68 61 74 20 6C 6F 61 64 65 64 20 tem that loaded
* b 2
bank 02
* x 0
0000 01 FF 00 00 00 00 00 00 01 FF 00 00 00 00 00 00 ................
0010 03 FF 08 00 00 00 00 00 01 20 01 00 00 00 00 00 ......... ......
0020 00 FF 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 ................
0030 00 FF 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 ................
* s 0 FF
that bank will not be written
* b program
bank 00
* s 8000 26 48 D1 00 26 0A D1 00 18 12
* d 8000
8000 26 48 INIA 48
8002 D1 00 OUTA 00
8004 26 0A INIA 0A
8006 D1 00 OUTA 00
8008 18 SHR
8009 12 AND
800A 00 ?
800B 00 ?
* g 8000
H
that byte is not an instruction, at 800A
A 85 B 3F Q 05
the program was stopped
* d 8000
8000 26 48 INIA 48
8002 D1 00 OUTA 00
8004 26 0A INIA 0A
8006 D1 00 OUTA 00
8008 18 SHR
8009 12 AND
800A 00 ?
800B 00 ?
* b data
bank 01
* s 8100 68 65 6C 6C 6F 2C 20 74 79 70 65 64 0A 00
* b program
bank 00
* a 8200
8200: SETD.0 8100
8204: SWI 10
8206: lda.2
8208: LDD.0.1
820B: frobnicate
no such instruction
820B: INIA
that one needs a value after it
820B: SWI 12
820D: .
* d 8200
8200 47 00 81 00 SETD.0 8100
8204 72 10 SWI 10
8206 42 02 LDA.2
8208 4A 00 01 LDD.0.1
820B 72 12 SWI 12
820D 00 ?
820E 00 ?
820F 00 ?
* g 8200
hello, typed
finished
* 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 11260
Pad.sbx 264
Crash.sbx 632
vars.script 50
blocks.script 343
loops.script 272
splash.tune 218
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
31 files, 1 directory
> exit
halted
Execution halted.
[exit 0]