Break left DP1 and DP2 alone, so what a stop printed for them was whatever the shell happened to have left there - which is a CosmOS address, which moves whenever CosmOS is touched at all. The recorded output had to be taken again four times in one day's work, every time for a value that is not this program's and that nothing should ever depend on. It sets all three of the pointers it owns now, rotated between the two stops so that every one of them visibly changes, the way A and B already did. DP3 stays as the system left it: it is where the program was entered, which is the one thing worth seeing here that this program did not choose, and it is steady because it is this program's own base. A demonstration of what the registers were should show registers somebody chose. Then every line of the record is being asserted rather than merely observed, and a reader can tell which is which. Checked both ways: sixty four bytes added to CosmOS's data no longer moves it, and reading the frame at the wrong offset still fails it. cosmosRun and cosmosMonitor move because Break is sixteen bytes longer and both of them list the disk it sits on. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
75 lines
2.3 KiB
Plaintext
75 lines
2.3 KiB
Plaintext
CosmOS
|
|
> x examine, d disassemble, a assemble, s set, b bank, g go, exit leaves
|
|
* b <program|data|number>
|
|
* there is no such bank
|
|
* loaded, starting at 4000
|
|
* bank 00
|
|
* 4000 47 00 20 00 SETD.0 2000
|
|
4004 18 10 SWI 10
|
|
4006 47 00 20 44 SETD.0 2044
|
|
400A 18 10 SWI 10
|
|
400C 47 00 20 7A SETD.0 207A
|
|
4010 27 1F INIB 1F
|
|
4012 18 11 SWI 11
|
|
4014 47 00 20 5D SETD.0 205D
|
|
* 4000 47 00 20 00 18 10 47 00 20 44 18 10 47 00 20 7A G. ...G. D..G. z
|
|
4010 27 1F 18 11 47 00 20 5D 18 10 47 00 20 7A 18 10 '...G. ]..G. z..
|
|
4020 47 00 20 65 18 10 18 12 00 00 00 00 00 00 00 00 G. e............
|
|
4030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
|
* bank 01
|
|
* 2000 61 20 70 72 6F 67 72 61 6D 2C 20 6C 6F 61 64 65 a program, loade
|
|
2010 64 20 6F 66 66 20 61 20 64 69 73 6B 2C 20 72 75 d off a disk, ru
|
|
2020 6E 6E 69 6E 67 20 6F 6E 20 74 68 65 20 73 79 73 nning on the sys
|
|
2030 74 65 6D 20 74 68 61 74 20 6C 6F 61 64 65 64 20 tem that loaded
|
|
* bank 02
|
|
* 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 ................
|
|
* that bank will not be written
|
|
* bank 00
|
|
* * 8000 26 48 INIA 48
|
|
8002 D1 00 OUTA 00
|
|
8004 26 0A INIA 0A
|
|
8006 D1 00 OUTA 00
|
|
8008 18 12 SWI 12
|
|
800A 00 ADD
|
|
800B 00 ADD
|
|
800C 00 ADD
|
|
* H
|
|
finished
|
|
* 8000 26 48 INIA 48
|
|
8002 D1 00 OUTA 00
|
|
8004 26 0A INIA 0A
|
|
8006 D1 00 OUTA 00
|
|
8008 18 12 SWI 12
|
|
800A 00 ADD
|
|
800B 00 ADD
|
|
800C 00 ADD
|
|
* bank 01
|
|
* * bank 00
|
|
* 8200: 8204: 8206: 8208: 820B: no such instruction
|
|
820B: that one needs a value after it
|
|
820B: 820D: * 8200 47 00 81 00 SETD.0 8100
|
|
8204 18 10 SWI 10
|
|
8206 42 02 LDA.2
|
|
8208 4A 00 01 LDD.0.1
|
|
820B 18 12 SWI 12
|
|
820D 00 ADD
|
|
820E 00 ADD
|
|
820F 00 ADD
|
|
* hello, typed
|
|
finished
|
|
* > greet.sbx 210
|
|
hello.sbx 52
|
|
Life.sbx 1411
|
|
Snake.sbx 2175
|
|
Keys.sbx 663
|
|
Say.sbx 155
|
|
Break.sbx 148
|
|
notes.txt 21
|
|
8 files
|
|
> halted
|
|
Execution halted.
|
|
[exit 0]
|