a <address>, then instructions until a line that is just a dot. The syntax is the assembler's own: a selector rides on the mnemonic as LDA.0 or LDD.0.1, and leaving one off means Data Pointer 0 exactly as it does in a source file, so nothing learned at the monitor has to be unlearned when writing a program. Case is folded, since the assembler does not care either. Numbers are hexadecimal and bare. A source file writes 0x2000 or 0d16 because it has both and must say which; a monitor has one and says so once, in the manual, rather than on every line. It reads the same table the disassembler does, searched the other way round, which is the point of it being a table rather than two lists: what a writes, d reads back, and neither can drift from the other or from the assembler both were generated from. Instruction lengths come from the shared shape table too, so the cursor cannot get out of step with what was written. THE WHOLE LINE IS UNDERSTOOD BEFORE ANYTHING IS WRITTEN. Emitting the opcode first and discovering a missing operand afterwards leaves half an instruction in memory, which the next line usually covers up and the last line of a session does not. Written that way first and fixed. What cannot be written is a label, and that is the whole difference between this and the assembler proper: a label is a promise to fill an address in later, and later is what a line at a time does not have. The recorded test now types in a complete program - a string poked into Data Memory, instructions assembled into Program Memory, and the result run - and includes a lower case mnemonic, both selector forms, an instruction that does not exist and one missing its value, so the refusals sit beside the successes. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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 2000
|
|
* bank 00
|
|
* 2000 47 00 10 00 SETD.0 1000
|
|
2004 18 10 SWI 10
|
|
2006 47 00 10 44 SETD.0 1044
|
|
200A 18 10 SWI 10
|
|
200C 47 00 10 7A SETD.0 107A
|
|
2010 27 1F INIB 1F
|
|
2012 18 11 SWI 11
|
|
2014 47 00 10 5D SETD.0 105D
|
|
* 2000 47 00 10 00 18 10 47 00 10 44 18 10 47 00 10 7A G.....G..D..G..z
|
|
2010 27 1F 18 11 47 00 10 5D 18 10 47 00 10 7A 18 10 '...G..]..G..z..
|
|
2020 47 00 10 65 18 10 18 12 00 00 00 00 00 00 00 00 G..e............
|
|
2030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
|
* bank 01
|
|
* 1000 61 20 70 72 6F 67 72 61 6D 2C 20 6C 6F 61 64 65 a program, loade
|
|
1010 64 20 6F 66 66 20 61 20 64 69 73 6B 2C 20 72 75 d off a disk, ru
|
|
1020 6E 6E 69 6E 67 20 6F 6E 20 74 68 65 20 73 79 73 nning on the sys
|
|
1030 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 132
|
|
notes.txt 21
|
|
8 files
|
|
> halted
|
|
Execution halted.
|
|
[exit 0]
|