Annotated disassembly ===================== From **disassembly.py -a** on 2024 10 10 .. code-block:: text loading program: Combined Q1 image from IC25-IC32 loaded 1024 bytes from roms/JDC/IC25.BIN at address 0000h loaded 1024 bytes from roms/JDC/IC26.BIN at address 0400h loaded 1024 bytes from roms/JDC/IC27.BIN at address 0800h loaded 1024 bytes from roms/JDC/IC28.BIN at address 0c00h loaded 1024 bytes from roms/JDC/IC29.BIN at address 1000h loaded 1024 bytes from roms/JDC/IC30.BIN at address 1400h loaded 1024 bytes from roms/JDC/IC31.BIN at address 1800h loaded 1024 bytes from roms/JDC/IC32.BIN at address 1c00h ;jump tables 0000 c3 e5 01 ; jp 0x1e5 | reset START 0003 c3 77 00 ; jp 0x77 | TOSTR 0006 c3 5b 01 ; jp 0x15b | TODEC 0009 c3 53 05 ; jp 0x553 | UPDIS 000c c3 42 06 ; jp 0x642 | MUL 000f c3 52 06 ; jp 0x652 | DIV 0012 c3 8a 06 ; jp 0x68a | BICHAR 0015 c3 7f 06 ; jp 0x67f | NHL 0018 c3 0f 02 ; jp 0x20f | START 001b c3 da 03 ; jp 0x3da | KFILE 001e c3 7d 04 ; jp 0x47d | KEYIN 0021 c3 b4 06 ; jp 0x6b4 | GETDN 0024 c3 0b 04 ; jp 0x40b | NKEY 0027 c3 58 04 ; jp 0x458 | DISPLAY 002a c3 8f 03 ; jp 0x38f | PRINTER 002d c3 e8 06 ; jp 0x6e8 | CARB 0030 c3 cb 04 ; jp 0x4cb | STOP 0033 c3 e6 04 ; jp 0x4e6 | PROCH 0036 18 14 ; jr 0x4c | INTRET 0038 18 18 ; jr 0x52 | 003a 14 ; inc d | 003b 00 ; nop | 003c c3 67 07 ; jp 0x767 | SHIFTY ;Return Address (copied to 4080) 003f c3 3f 00 ; jp 0x3f | ;JP to interrupt routine (copied to 4083) 0042 c3 b1 02 ; jp 0x2b1 | ;JP to wait-for-keyboard-or-printer 0045 c3 15 08 ; jp 0x815 | ;UNEXPLORED 0048 c9 ; ret | 0049 c9 ; ret | 004a c9 ; ret | 004b c9 ; ret | 004c c3 62 03 ; jp 0x362 | 004f c3 34 07 ; jp 0x734 | ;interrupt38 chain 0052 c3 de 01 ; jp 0x1de | ;UNEXPLORED 0055 20 51 ; jr nz, 0xa8 | 0057 31 2d 4c ; ld sp, 0x4c2d | 005a 69 ; ld l, c | 005b 74 ; ld (hl), h | 005c 65 ; ld h, l | 005d 00 ; nop | 005e 20 51 ; jr nz, 0xb1 | 0060 31 2d 4d ; ld sp, 0x4d2d | 0063 61 ; ld h, c | 0064 67 ; ld h, a | 0065 6e ; ld l, (hl) | 0066 75 ; ld (hl), l | 0067 73 ; ld (hl), e | 0068 20 6b ; jr nz, 0xd5 | 006a 6c ; ld l, h | 006b 61 ; ld h, c | 006c 72 ; ld (hl), d | 006d 20 74 ; jr nz, 0xe3 | 006f 69 ; ld l, c | 0070 6c ; ld l, h | 0071 20 62 ; jr nz, 0xd5 | 0073 72 ; ld (hl), d | 0074 75 ; ld (hl), l | 0075 67 ; ld h, a | 0076 65 ; ld h, l | 0077 e1 ; pop hl | 0078 22 81 40 ; ld (0x4081), hl | 007b 21 14 42 ; ld hl, 0x4214 | 007e 0e 04 ; ld c, 0x4 | 0080 d1 ; pop de | 0081 7b ; ld a, e | 0082 cd f4 00 ; call 0xf4 | 0085 7a ; ld a, d | 0086 cd f4 00 ; call 0xf4 | 0089 0d ; dec c | 008a 20 f4 ; jr nz, 0x80 | 008c 23 ; inc hl | 008d 23 ; inc hl | 008e 7a ; ld a, d | 008f 87 ; add a, a | 0090 f5 ; push af | 0091 5f ; ld e, a | 0092 7e ; ld a, (hl) | 0093 fe 30 ; cp 0x30 | 0095 28 52 ; jr z, 0xe9 | 0097 55 ; ld d, l | 0098 2e 14 ; ld l, 0x14 | 009a 2b ; dec hl | 009b 7e ; ld a, (hl) | 009c fe 30 ; cp 0x30 | 009e 28 fa ; jr z, 0x9a | 00a0 7d ; ld a, l | 00a1 4f ; ld c, a | 00a2 3c ; inc a | 00a3 92 ; sub d | 00a4 47 ; ld b, a | 00a5 21 30 30 ; ld hl, 0x3030 | 00a8 22 02 42 ; ld (0x4202), hl | 00ab 22 04 42 ; ld (0x4204), hl | 00ae 26 42 ; ld h, 0x42 | 00b0 7b ; ld a, e | 00b1 69 ; ld l, c | 00b2 23 ; inc hl | 00b3 23 ; inc hl | 00b4 fe 81 ; cp 0x81 | 00b6 da 4c 01 ; jp c, 0x14c | 00b9 fe 8f ; cp 0x8f | 00bb 30 4e ; jr nc, 0x10b | 00bd d6 7b ; sub 0x7b | 00bf 6f ; ld l, a | 00c0 91 ; sub c | 00c1 28 0c ; jr z, 0xcf | 00c3 30 42 ; jr nc, 0x107 | 00c5 15 ; dec d | 00c6 04 ; inc b | 00c7 0e 2e ; ld c, 0x2e | 00c9 7e ; ld a, (hl) | 00ca 71 ; ld (hl), c | 00cb 2d ; dec l | 00cc 4f ; ld c, a | 00cd 20 fa ; jr nz, 0xc9 | 00cf f1 ; pop af | 00d0 30 05 ; jr nc, 0xd7 | 00d2 15 ; dec d | 00d3 04 ; inc b | 00d4 6a ; ld l, d | 00d5 36 2d ; ld (hl), 0x2d | 00d7 5a ; ld e, d | 00d8 16 42 ; ld d, 0x42 | 00da 78 ; ld a, b | 00db fe 10 ; cp 0x10 | 00dd 38 02 ; jr c, 0xe1 | 00df 06 10 ; ld b, 0x10 | 00e1 48 ; ld c, b | 00e2 06 00 ; ld b, 0x0 | 00e4 d5 ; push de | 00e5 c5 ; push bc | 00e6 c3 80 40 ; jp 0x4080 | 00e9 2c ; inc l | 00ea 04 ; inc b | 00eb 05 ; dec b | 00ec 20 a9 ; jr nz, 0x97 | 00ee 06 01 ; ld b, 0x1 | 00f0 16 13 ; ld d, 0x13 | 00f2 18 db ; jr 0xcf | ;binary to hex? 00f4 47 ; ld b, a | 00f5 e6 0f ; and 0xf | 00f7 c6 30 ; add a, 0x30 | 00f9 2b ; dec hl | 00fa 77 ; ld (hl), a | 00fb 2b ; dec hl | 00fc 78 ; ld a, b | 00fd 0f ; rrca | 00fe 0f ; rrca | 00ff 0f ; rrca | 0100 0f ; rrca | 0101 e6 0f ; and 0xf | 0103 c6 30 ; add a, 0x30 | 0105 77 ; ld (hl), a | 0106 c9 ; ret | ;UNEXPLORED 0107 80 ; add a, b | 0108 47 ; ld b, a | 0109 18 c4 ; jr 0xcf | 010b 0e 2b ; ld c, 0x2b | 010d d6 80 ; sub 0x80 | 010f 5f ; ld e, a | 0110 7d ; ld a, l | 0111 fe 11 ; cp 0x11 | 0113 38 02 ; jr c, 0x117 | 0115 2e 11 ; ld l, 0x11 | 0117 71 ; ld (hl), c | 0118 7a ; ld a, d | 0119 b7 ; or a | 011a 7b ; ld a, e | 011b ea 22 01 ; jp pe, 0x122 | 011e 79 ; ld a, c | 011f d6 2c ; sub 0x2c | 0121 83 ; add a, e | 0122 2d ; dec l | 0123 36 45 ; ld (hl), 0x45 | 0125 0e 2f ; ld c, 0x2f | 0127 23 ; inc hl | 0128 23 ; inc hl | 0129 0c ; inc c | 012a d6 0a ; sub 0xa | 012c 30 fb ; jr nc, 0x129 | 012e c6 3a ; add a, 0x3a | 0130 47 ; ld b, a | 0131 79 ; ld a, c | 0132 fe 3a ; cp 0x3a | 0134 38 02 ; jr c, 0x138 | 0136 0e 39 ; ld c, 0x39 | 0138 71 ; ld (hl), c | 0139 23 ; inc hl | 013a 70 ; ld (hl), b | 013b 15 ; dec d | 013c 7d ; ld a, l | 013d 92 ; sub d | 013e 3c ; inc a | 013f 47 ; ld b, a | 0140 6a ; ld l, d | 0141 36 2e ; ld (hl), 0x2e | 0143 18 8a ; jr 0xcf | 0145 0e 2d ; ld c, 0x2d | 0147 2f ; cpl | 0148 c6 81 ; add a, 0x81 | 014a 18 c3 ; jr 0x10f | 014c fe 7c ; cp 0x7c | 014e 38 f5 ; jr c, 0x145 | 0150 d6 7b ; sub 0x7b | 0152 57 ; ld d, a | 0153 6f ; ld l, a | 0154 91 ; sub c | 0155 2f ; cpl | 0156 3c ; inc a | 0157 47 ; ld b, a | 0158 c3 c6 00 ; jp 0xc6 | 015b cd 06 18 ; call 0x1806 | 015e e1 ; pop hl | 015f 22 81 40 ; ld (0x4081), hl | 0162 c1 ; pop bc | 0163 0c ; inc c | 0164 1e 00 ; ld e, 0x0 | 0166 43 ; ld b, e | 0167 53 ; ld d, e | 0168 e1 ; pop hl | 0169 cd c2 01 ; call 0x1c2 | 016c 28 24 ; jr z, 0x192 | 016e 30 f9 ; jr nc, 0x169 | 0170 e5 ; push hl | 0171 21 06 42 ; ld hl, 0x4206 | 0174 b6 ; or (hl) | 0175 77 ; ld (hl), a | 0176 cd 67 07 ; call 0x767 | 0179 e1 ; pop hl | 017a 78 ; ld a, b | 017b 92 ; sub d | 017c 47 ; ld b, a | 017d cd c2 01 ; call 0x1c2 | 0180 28 10 ; jr z, 0x192 | 0182 38 ec ; jr c, 0x170 | 0184 fe 15 ; cp 0x15 | 0186 20 0a ; jr nz, 0x192 | 0188 d5 ; push de | 0189 e5 ; push hl | 018a cd e8 06 ; call 0x6e8 | 018d 7b ; ld a, e | 018e 80 ; add a, b | 018f e1 ; pop hl | 0190 47 ; ld b, a | 0191 d1 ; pop de | 0192 78 ; ld a, b | 0193 1f ; rra | 0194 4f ; ld c, a | 0195 da 9c 01 ; jp c, 0x19c | 0198 cd 67 07 ; call 0x767 | 019b 0d ; dec c | 019c 21 10 42 ; ld hl, 0x4210 | 019f 2b ; dec hl | 01a0 7d ; ld a, l | 01a1 fe 06 ; cp 0x6 | 01a3 28 04 ; jr z, 0x1a9 | 01a5 7e ; ld a, (hl) | 01a6 b7 ; or a | 01a7 28 f6 ; jr z, 0x19f | 01a9 79 ; ld a, c | 01aa 85 ; add a, l | 01ab c6 3b ; add a, 0x3b | 01ad e6 7f ; and 0x7f | 01af b3 ; or e | 01b0 23 ; inc hl | 01b1 77 ; ld (hl), a | 01b2 c5 ; push bc | 01b3 c5 ; push bc | 01b4 c5 ; push bc | 01b5 c5 ; push bc | 01b6 cd 00 18 ; call 0x1800 | 01b9 c3 80 40 ; jp 0x4080 | 01bc 16 01 ; ld d, 0x1 | 01be 18 02 ; jr 0x1c2 | 01c0 1e 80 ; ld e, 0x80 | 01c2 0d ; dec c | 01c3 c8 ; ret z | 01c4 7e ; ld a, (hl) | 01c5 e6 7f ; and 0x7f | 01c7 23 ; inc hl | 01c8 d6 30 ; sub 0x30 | 01ca 38 05 ; jr c, 0x1d1 | 01cc fe 0a ; cp 0xa | 01ce c0 ; ret nz | 01cf b7 ; or a | 01d0 c9 ; ret | 01d1 3c ; inc a | 01d2 3c ; inc a | 01d3 28 e7 ; jr z, 0x1bc | 01d5 3c ; inc a | 01d6 28 e8 ; jr z, 0x1c0 | 01d8 3c ; inc a | 01d9 3c ; inc a | 01da 28 e6 ; jr z, 0x1c2 | 01dc b7 ; or a | 01dd c9 ; ret | ;interrupt routine() 01de f5 ; push af | 01df c5 ; push bc | 01e0 d5 ; push de | 01e1 e5 ; push hl | 01e2 c3 83 40 ; jp 0x4083 | ;start() 01e5 ed 56 ; im 0x1 | 01e7 3e 04 ; ld a, 0x4 | set keyboard mode 2 (ASM IO page 73) 01e9 d3 01 ; out (0x1), a | 01eb 11 3f 00 ; ld de, 0x3f | prepare registers for copy and clearing 01ee 21 80 40 ; ld hl, 0x4080 | 01f1 f9 ; ld sp, hl | 01f2 eb ; ex de, hl | 01f3 01 09 00 ; ld bc, 0x9 | 01f6 ed b0 ; ldir | copy jump tables from 003f:0047 to 4080:4088 01f8 97 ; sub a | 01f9 12 ; ld (de), a | 01fa 1c ; inc e | 01fb 20 fb ; jr nz, 0x1f8 | clear RAM from 4089 to 40ff 01fd 3e a0 ; ld a, 0xa0 | printer control - reset printer, raise ribbon 01ff d3 07 ; out (0x7), a | 0201 db 05 ; in a, (0x5) | printer status - check result (0 is good) 0203 b7 ; or a | 0204 20 06 ; jr nz, 0x20c | 0206 21 fd 07 ; ld hl, 0x7fd | 0209 22 84 40 ; ld (0x4084), hl | 020c cd 10 04 ; call 0x410 | clear keyboard buffer, update display ;Main program loop 020f 21 80 40 ; ld hl, 0x4080 | reset stack pointer to x4080 0212 f9 ; ld sp, hl | 0213 cd 15 08 ; call 0x815 | CLRDK 0216 3a 8e 40 ; ld a, (0x408e) | get a = Unused 0219 0f ; rrca | 021a 38 15 ; jr c, 0x231 | 021c 21 89 40 ; ld hl, 0x4089 | 021f 7e ; ld a, (hl) | a = PLC (lsb of addr of last char loaded to printer buffer) 0220 23 ; inc hl | 0221 96 ; sub (hl) | ensure there are no buffered chars to print??? 0222 20 ef ; jr nz, 0x213 | 0224 db 0c ; in a, (0xc) | UNKNOWN INPUT from 0xc 0226 cb 77 ; bit 0x6, a | check bit 6 - unknown 0228 20 07 ; jr nz, 0x231 | 022a 07 ; rlca | 022b 38 e6 ; jr c, 0x213 | 022d 3e 81 ; ld a, 0x81 | 022f d3 0c ; out (0xc), a | UNKNOWN OUTPUT to 0xc 0231 cd b3 04 ; call 0x4b3 | clear display 0234 db 1a ; in a, (0x1a) | Get status for disk 2 0236 b7 ; or a | 0237 28 0b ; jr z, 0x244 | disk status == 0 -> Q1-Lite 0239 e6 08 ; and 0x8 | else if bit 3 (0x8) clear -> Q1-Magnus 023b 20 07 ; jr nz, 0x244 | 023d 21 5e 00 ; ld hl, 0x5e | HL -> " Q1-Magnus klar til brug" 0240 0e 18 ; ld c, 0x18 | 0242 18 05 ; jr 0x249 | 0244 21 55 00 ; ld hl, 0x55 | HL -> " Q1-Lite" 0247 0e 16 ; ld c, 0x16 | 0249 cd a0 02 ; call 0x2a0 | get display width 024c 91 ; sub c | 024d cb 3f ; srl a | 024f 47 ; ld b, a | 0250 c5 ; push bc | 0251 e5 ; push hl | 0252 cd 93 02 ; call 0x293 | ??? 0255 e1 ; pop hl | 0256 0e 0a ; ld c, 0xa | 0258 cd 58 04 ; call 0x458 | print " Q1-Magnus/Lite" 025b 21 68 00 ; ld hl, 0x68 | 025e 0e 0e ; ld c, 0xe | 0260 cd 58 04 ; call 0x458 | print " Klar til brug" 0263 c1 ; pop bc | 0264 db 04 ; in a, (0x4) | get display status 0266 e6 18 ; and 0x18 | check if 40 or 80 bytes 0268 20 01 ; jr nz, 0x26b | 026a 04 ; inc b | 026b cd 93 02 ; call 0x293 | 026e 21 8e 40 ; ld hl, 0x408e | 0271 cb 8e ; res 0x1, (hl) | 0273 cd da 03 ; call 0x3da | get keyboard input (returns when command is entered) 0276 cd b3 04 ; call 0x4b3 | clear display ;load and run program 0279 21 0f 02 ; ld hl, 0x20f | set return to Main loop 027c 22 81 40 ; ld (0x4081), hl | 027f cd 0f 08 ; call 0x80f | LOADER 0282 21 8e 40 ; ld hl, 0x408e | USE OF FIELD REPORTED AS UNUSED 0285 cb ce ; set 0x1, (hl) | 0287 ca 80 40 ; jp z, 0x4080 | jump to loaded program start??? 028a cd 18 08 ; call 0x818 | REPORT 028d cd 10 04 ; call 0x410 | clear keyboard buffer, update display 0290 c3 0f 02 ; jp 0x20f | back to Main loop ;print "Q1 Lite/Magnus ..." 0293 21 55 00 ; ld hl, 0x55 | String "Q1 Lite" 0296 c5 ; push bc | 0297 0e 01 ; ld c, 0x1 | 0299 cd 58 04 ; call 0x458 | display(SPC) 029c c1 ; pop bc | 029d 10 f4 ; djnz 0x293 | 029f c9 ; ret | ;Display width? 02a0 db 04 ; in a, (0x4) | 02a2 cb 5f ; bit 0x3, a | 02a4 3e 50 ; ld a, 0x50 | 80 characters 02a6 c0 ; ret nz | 02a7 db 04 ; in a, (0x4) | 02a9 cb 67 ; bit 0x4, a | 02ab 3e 28 ; ld a, 0x28 | 40 characters 02ad c0 ; ret nz | 02ae c6 07 ; add a, 0x7 | 02b0 c9 ; ret | ;interrupt processing routine() 02b1 cd d8 04 ; call 0x4d8 | 02b4 db 05 ; in a, (0x5) | 02b6 b7 ; or a | 02b7 fa 62 03 ; jp m, 0x362 | 02ba 01 00 00 ; ld bc, 0x0 | 02bd 51 ; ld d, c | 02be 59 ; ld e, c | 02bf 3a 8d 40 ; ld a, (0x408d) | get a = RIB 02c2 b7 ; or a | 02c3 28 02 ; jr z, 0x2c7 | 02c5 1e 0a ; ld e, 0xa | 02c7 21 89 40 ; ld hl, 0x4089 | 02ca 7e ; ld a, (hl) | 02cb 23 ; inc hl | 02cc 96 ; sub (hl) | 02cd 28 5d ; jr z, 0x32c | 02cf 6e ; ld l, (hl) | 02d0 26 41 ; ld h, 0x41 | 02d2 2c ; inc l | 02d3 7d ; ld a, l | 02d4 f6 80 ; or 0x80 | 02d6 6f ; ld l, a | 02d7 32 8a 40 ; ld (0x408a), a | set PTC = a 02da 7e ; ld a, (hl) | 02db 62 ; ld h, d | 02dc 6b ; ld l, e | 02dd 3c ; inc a | 02de fe 20 ; cp 0x20 | 02e0 28 4a ; jr z, 0x32c | 02e2 3d ; dec a | 02e3 fe 20 ; cp 0x20 | 02e5 38 06 ; jr c, 0x2ed | 02e7 20 43 ; jr nz, 0x32c | 02e9 21 0a 00 ; ld hl, 0xa | 02ec 19 ; add hl, de | 02ed fe 08 ; cp 0x8 | 02ef 20 04 ; jr nz, 0x2f5 | 02f1 21 f6 ff ; ld hl, 0xfff6 | 02f4 19 ; add hl, de | 02f5 fe 0d ; cp 0xd | 02f7 20 08 ; jr nz, 0x301 | 02f9 2a 8b 40 ; ld hl, (0x408b) | get hl = POS 02fc f5 ; push af | 02fd cd 7f 06 ; call 0x67f | 0300 f1 ; pop af | 0301 eb ; ex de, hl | 0302 69 ; ld l, c | 0303 60 ; ld h, b | 0304 fe 02 ; cp 0x2 | 0306 20 02 ; jr nz, 0x30a | 0308 13 ; inc de | 0309 13 ; inc de | 030a fe 06 ; cp 0x6 | 030c 20 01 ; jr nz, 0x30f | 030e 13 ; inc de | 030f fe 0d ; cp 0xd | 0311 28 02 ; jr z, 0x315 | 0313 fe 0a ; cp 0xa | 0315 20 04 ; jr nz, 0x31b | 0317 21 08 00 ; ld hl, 0x8 | 031a 09 ; add hl, bc | 031b fe 01 ; cp 0x1 | 031d 20 04 ; jr nz, 0x323 | 031f 2b ; dec hl | 0320 2b ; dec hl | 0321 2b ; dec hl | 0322 2b ; dec hl | 0323 fe 03 ; cp 0x3 | 0325 20 01 ; jr nz, 0x328 | 0327 23 ; inc hl | 0328 44 ; ld b, h | 0329 4d ; ld c, l | 032a 18 9b ; jr 0x2c7 | 032c 32 8d 40 ; ld (0x408d), a | set RIB = a 032f f5 ; push af | 0330 c5 ; push bc | 0331 7a ; ld a, d | 0332 b3 ; or e | 0333 28 22 ; jr z, 0x357 | 0335 2a 8b 40 ; ld hl, (0x408b) | get hl = POS 0338 19 ; add hl, de | 0339 22 8b 40 ; ld (0x408b), hl | set POS = hl 033c 0e 20 ; ld c, 0x20 | 033e 30 08 ; jr nc, 0x348 | 0340 0e 24 ; ld c, 0x24 | 0342 eb ; ex de, hl | 0343 cd 7f 06 ; call 0x67f | 0346 eb ; ex de, hl | 0347 b7 ; or a | 0348 7a ; ld a, d | 0349 1f ; rra | 034a 57 ; ld d, a | 034b 7b ; ld a, e | 034c 1f ; rra | 034d 5f ; ld e, a | 034e 1f ; rra | 034f 1f ; rra | 0350 e6 40 ; and 0x40 | 0352 b1 ; or c | 0353 4f ; ld c, a | 0354 cd 6b 03 ; call 0x36b | 0357 d1 ; pop de | 0358 0e 28 ; ld c, 0x28 | 035a cd 68 03 ; call 0x368 | 035d f1 ; pop af | 035e 28 02 ; jr z, 0x362 | 0360 d3 05 ; out (0x5), a | 0362 e1 ; pop hl | 0363 d1 ; pop de | 0364 c1 ; pop bc | 0365 f1 ; pop af | 0366 fb ; ei | 0367 c9 ; ret | ;UNEXPLORED 0368 7b ; ld a, e | 0369 b2 ; or d | 036a c8 ; ret z | 036b 62 ; ld h, d | 036c 6b ; ld l, e | 036d 14 ; inc d | 036e 15 ; dec d | 036f f2 79 03 ; jp p, 0x379 | 0372 0c ; inc c | 0373 0c ; inc c | 0374 0c ; inc c | 0375 0c ; inc c | 0376 cd 7f 06 ; call 0x67f | 0379 7c ; ld a, h | 037a b1 ; or c | 037b d3 07 ; out (0x7), a | move printer carriage 037d 7d ; ld a, l | 037e d3 06 ; out (0x6), a | 0380 c9 ; ret | ;text string - CLR, PRINTER FAULT 0381 0d ; dec c | 0382 50 ; ld d, b | 0383 52 ; ld d, d | 0384 49 ; ld c, c | 0385 4e ; ld c, (hl) | 0386 54 ; ld d, h | 0387 45 ; ld b, l | 0388 52 ; ld d, d | 0389 20 46 ; jr nz, 0x3d1 | 038b 41 ; ld b, c | 038c 55 ; ld d, l | 038d 4c ; ld c, h | 038e 54 ; ld d, h | ;check printer status 038f 0c ; inc c | 0390 0d ; dec c | 0391 c8 ; ret z | 0392 db 05 ; in a, (0x5) | 0394 cb 6f ; bit 0x5, a | test for out of ribbon 0396 28 10 ; jr z, 0x3a8 | 0398 d9 ; exx | 0399 0e 0e ; ld c, 0xe | 039b 21 81 03 ; ld hl, 0x381 | 039e cd 58 04 ; call 0x458 | display PRINTER FAULT 03a1 cd cb 04 ; call 0x4cb | 03a4 cd b3 04 ; call 0x4b3 | 03a7 d9 ; exx | 03a8 7e ; ld a, (hl) | 03a9 b7 ; or a | 03aa 28 1e ; jr z, 0x3ca | 03ac e5 ; push hl | 03ad 21 8a 40 ; ld hl, 0x408a | 03b0 7e ; ld a, (hl) | 03b1 2b ; dec hl | 03b2 96 ; sub (hl) | 03b3 e6 7f ; and 0x7f | 03b5 3d ; dec a | 03b6 28 15 ; jr z, 0x3cd | 03b8 7e ; ld a, (hl) | 03b9 3c ; inc a | 03ba f6 80 ; or 0x80 | 03bc e1 ; pop hl | 03bd 5f ; ld e, a | 03be 16 41 ; ld d, 0x41 | 03c0 7e ; ld a, (hl) | 03c1 12 ; ld (de), a | 03c2 7b ; ld a, e | 03c3 32 89 40 ; ld (0x4089), a | set PLC = a 03c6 23 ; inc hl | 03c7 0d ; dec c | 03c8 20 c8 ; jr nz, 0x392 | 03ca f3 ; di | 03cb ff ; rst 0x38 | ;UNEXPLORED 03cd c5 ; push bc | 03ce cd 86 40 ; call 0x4086 | 03d1 c1 ; pop bc | 03d2 e1 ; pop hl | 03d3 f3 ; di | 03d4 ff ; rst 0x38 | ;UNEXPLORED 03d5 18 b8 ; jr 0x38f | check printer status 03d7 cd 10 04 ; call 0x410 | clear keyboard buffer, update display 03da cd a9 04 ; call 0x4a9 | get keyboard input, result in a 03dd 3a 92 40 ; ld a, (0x4092) | get a = TOOK 03e0 6f ; ld l, a | 03e1 26 41 ; ld h, 0x41 | 03e3 0e 00 ; ld c, 0x0 | 03e5 7e ; ld a, (hl) | 03e6 2c ; inc l | 03e7 fa d7 03 ; jp m, 0x3d7 | 03ea fe 20 ; cp 0x20 | ignore leading spaces (0x20) 03ec 28 f7 ; jr z, 0x3e5 | 03ee 7d ; ld a, l | 03ef 3d ; dec a | 03f0 32 92 40 ; ld (0x4092), a | set TOOK = a 03f3 06 08 ; ld b, 0x8 | 03f5 0c ; inc c | 03f6 7e ; ld a, (hl) | 03f7 23 ; inc hl | 03f8 fe 30 ; cp 0x30 | 03fa 05 ; dec b | 03fb 28 02 ; jr z, 0x3ff | 03fd 30 f6 ; jr nc, 0x3f5 | 03ff 21 da 40 ; ld hl, 0x40da | 0402 06 08 ; ld b, 0x8 | 0404 2b ; dec hl | 0405 36 20 ; ld (hl), 0x20 | 0407 10 fb ; djnz 0x404 | 0409 18 72 ; jr 0x47d | ;clear keyboard buffer, update display 0410 21 00 41 ; ld hl, 0x4100 | 0413 f3 ; di | 0414 36 00 ; ld (hl), 0x0 | 0416 2c ; inc l | 0417 3e 20 ; ld a, 0x20 | 0419 77 ; ld (hl), a | 041a 2c ; inc l | 041b f2 19 04 ; jp p, 0x419 | 041e 32 94 40 ; ld (0x4094), a | set UNDER = a 0421 cd 53 05 ; call 0x553 | update display 0424 97 ; sub a | a = 0 0425 32 92 40 ; ld (0x4092), a | set TOOK = a 0428 32 95 40 ; ld (0x4095), a | set KSIZ = a 042b 32 93 40 ; ld (0x4093), a | set CURSE = a 042e 32 98 40 ; ld (0x4098), a | set ACTK = a 0431 32 8f 40 ; ld (0x408f), a | set HEXX = a 0434 32 90 40 ; ld (0x4090), a | set INSF = a 0437 ff ; rst 0x38 | 0438 c9 ; ret | ;UNEXPLORED 0439 ed 5b 96 40 ; ld de, (0x4096) | get de = OSEZ (# chars used for display) 043d 3e 05 ; ld a, 0x5 | 043f d3 04 ; out (0x4), a | display ctrl (0x05) Reset, Unbuffer 0441 3e 08 ; ld a, 0x8 | 0443 1c ; inc e | 0444 cd 4e 04 ; call 0x44e | 0447 15 ; dec d | 0448 f8 ; ret m | 0449 cd 50 04 ; call 0x450 | 044c 18 f9 ; jr 0x447 | ;print A, E times (entry 0x450) 044e 1d ; dec e | 044f c8 ; ret z | 0450 d3 04 ; out (0x4), a | 0452 1d ; dec e | 0453 c8 ; ret z | 0454 d3 04 ; out (0x4), a | 0456 18 f6 ; jr 0x44e | ;display() - string=HL, len=C 0458 f3 ; di | 0459 cd 39 04 ; call 0x439 | 045c ed 5b 96 40 ; ld de, (0x4096) | get de = OSEZ (# chars used for display) 0460 0c ; inc c | 0461 0d ; dec c | 0462 28 10 ; jr z, 0x474 | 0464 7e ; ld a, (hl) | 0465 23 ; inc hl | 0466 b7 ; or a | 0467 28 0b ; jr z, 0x474 | 0469 d3 03 ; out (0x3), a | 046b 13 ; inc de | 046c fe 0d ; cp 0xd | 046e cc b3 04 ; call z, 0x4b3 | 0471 0d ; dec c | 0472 20 f0 ; jr nz, 0x464 | 0474 eb ; ex de, hl | 0475 22 96 40 ; ld (0x4096), hl | set OSEZ (# chars used for display) = hl 0478 cd 56 05 ; call 0x556 | 047b fb ; ei | 047c c9 ; ret | ;KEYIN() 047d e5 ; push hl | 047e cd a9 04 ; call 0x4a9 | 0481 d1 ; pop de | 0482 21 92 40 ; ld hl, 0x4092 | 0485 6e ; ld l, (hl) | 0486 26 41 ; ld h, 0x41 | 0488 3a 95 40 ; ld a, (0x4095) | get a = KSIZ 048b 47 ; ld b, a | 048c 0c ; inc c | 048d 78 ; ld a, b | 048e bd ; cp l | 048f 28 0e ; jr z, 0x49f | 0491 0d ; dec c | 0492 28 06 ; jr z, 0x49a | 0494 7e ; ld a, (hl) | 0495 12 ; ld (de), a | 0496 23 ; inc hl | 0497 13 ; inc de | 0498 18 f3 ; jr 0x48d | 049a 7d ; ld a, l | 049b 32 92 40 ; ld (0x4092), a | set TOOK = a 049e c9 ; ret | 049f 0d ; dec c | 04a0 ca 10 04 ; jp z, 0x410 | 04a3 3e 20 ; ld a, 0x20 | 04a5 12 ; ld (de), a | 04a6 13 ; inc de | 04a7 18 f6 ; jr 0x49f | ;wait for keyboard 04a9 3a 98 40 ; ld a, (0x4098) | get a = ACTK 04ac b7 ; or a | 04ad c0 ; ret nz | 04ae cd 86 40 ; call 0x4086 | 04b1 18 f6 ; jr 0x4a9 | ;clear display? 04b3 11 00 04 ; ld de, 0x400 | 04b6 3e 20 ; ld a, 0x20 | 04b8 d3 03 ; out (0x3), a | 04ba d3 03 ; out (0x3), a | 04bc 1d ; dec e | 04bd 20 f9 ; jr nz, 0x4b8 | 04bf 15 ; dec d | 04c0 20 f6 ; jr nz, 0x4b8 | 04c2 ed 53 96 40 ; ld (0x4096), de | set OSEZ (# chars used for display) = de 04c6 3e 05 ; ld a, 0x5 | 04c8 d3 04 ; out (0x4), a | 04ca c9 ; ret | ;disable interrupt, get key?, enable interrupt 04cb f3 ; di | 04cc cd d1 04 ; call 0x4d1 | 04cf fb ; ei | 04d0 c9 ; ret | ;STOP, wait for key GO (0xe) 04d1 db 01 ; in a, (0x1) | 04d3 fe 0e ; cp 0xe | key: GO 04d5 20 fa ; jr nz, 0x4d1 | 04d7 c9 ; ret | ;read_key() 04d8 db 01 ; in a, (0x1) | 04da b7 ; or a | 04db c8 ; ret z | 04dc fe 0f ; cp 0xf | key: STOP 04de 28 f1 ; jr z, 0x4d1 | 04e0 21 98 40 ; ld hl, 0x4098 | 04e3 34 ; inc (hl) | 04e4 35 ; dec (hl) | 04e5 c0 ; ret nz | 04e6 21 93 40 ; ld hl, 0x4093 | 04e9 11 94 40 ; ld de, 0x4094 | 04ec 46 ; ld b, (hl) | 04ed 48 ; ld c, b | 04ee fe 9a ; cp 0x9a | 04f0 ca 99 05 ; jp z, 0x599 | 04f3 fe 9e ; cp 0x9e | 04f5 ca a8 05 ; jp z, 0x5a8 | 04f8 30 42 ; jr nc, 0x53c | 04fa fe 84 ; cp 0x84 | 04fc 30 4a ; jr nc, 0x548 | 04fe fe 1b ; cp 0x1b | key: CLEAR ENTRY 0500 ca 10 04 ; jp z, 0x410 | 0503 fe 1e ; cp 0x1e | key: INSERT MODE 0505 ca d4 05 ; jp z, 0x5d4 | 0508 fe 1d ; cp 0x1d | key: DEL CHAR 050a ca f6 05 ; jp z, 0x5f6 | 050d fe 10 ; cp 0x10 | key: REV TAB 050f ca e9 05 ; jp z, 0x5e9 | 0512 fe 09 ; cp 0x9 | key: TAB 0514 ca da 05 ; jp z, 0x5da | 0517 fe 1a ; cp 0x1a | key: 0x1a undocumented 0519 ca ce 05 ; jp z, 0x5ce | 051c fe 04 ; cp 0x4 | key: CORR 051e 20 09 ; jr nz, 0x529 | 0520 1a ; ld a, (de) | 0521 0d ; dec c | 0522 f2 83 05 ; jp p, 0x583 | 0525 0c ; inc c | 0526 c3 83 05 ; jp 0x583 | 0529 38 11 ; jr c, 0x53c | 052b fe 1c ; cp 0x1c | key: CHAR ADV 052d 20 03 ; jr nz, 0x532 | 052f 1a ; ld a, (de) | 0530 18 4c ; jr 0x57e | 0532 30 08 ; jr nc, 0x53c | 0534 fe 0b ; cp 0xb | key: CLEAR ENTRY 0536 30 10 ; jr nc, 0x548 | 0538 fe 08 ; cp 0x8 | key: 0x08 undocumented 053a 38 0c ; jr c, 0x548 | 053c e6 7f ; and 0x7f | 053e fe 03 ; cp 0x3 | key: TAB SET 0540 20 21 ; jr nz, 0x563 | 0542 cd b5 05 ; call 0x5b5 | 0545 b6 ; or (hl) | 0546 77 ; ld (hl), a | 0547 c9 ; ret | ;UNEXPLORED 0548 32 98 40 ; ld (0x4098), a | set ACTK = a 054b 32 91 40 ; ld (0x4091), a | set FUNKEY = a 054e 1a ; ld a, (de) | 054f 6e ; ld l, (hl) | 0550 26 41 ; ld h, 0x41 | 0552 77 ; ld (hl), a | ;updis() - called after printing line? 0553 cd 39 04 ; call 0x439 | 0556 21 00 41 ; ld hl, 0x4100 | 0559 3a 95 40 ; ld a, (0x4095) | get a = KSIZ 055c 47 ; ld b, a | 055d 04 ; inc b | 055e 0e 03 ; ld c, 0x3 | 0560 ed b3 ; otir | z80 otir instruction - B bytes from HL to port C 0562 c9 ; ret | ;handle tab clear (clears tab bit in hl?) 0563 fe 02 ; cp 0x2 | key: TAB CLR 0565 20 07 ; jr nz, 0x56e | 0567 cd b5 05 ; call 0x5b5 | 056a 2f ; cpl | 056b a6 ; and (hl) | 056c 77 ; ld (hl), a | 056d c9 ; ret | ;unknown HEXX function? 056e 21 8f 40 ; ld hl, 0x408f | HEXX 0571 34 ; inc (hl) | 0572 35 ; dec (hl) | 0573 c2 07 06 ; jp nz, 0x607 | 0576 21 90 40 ; ld hl, 0x4090 | INSF 0579 34 ; inc (hl) | 057a 35 ; dec (hl) | 057b c4 2b 06 ; call nz, 0x62b | 057e 0c ; inc c | 057f f2 83 05 ; jp p, 0x583 | 0582 0d ; dec c | 0583 26 41 ; ld h, 0x41 | 0585 68 ; ld l, b | 0586 77 ; ld (hl), a | 0587 69 ; ld l, c | ;update cursor position and current size of line 0588 7e ; ld a, (hl) | 0589 36 00 ; ld (hl), 0x0 | 058b 12 ; ld (de), a | 058c 21 93 40 ; ld hl, 0x4093 | CURSE (cursor position) 058f 71 ; ld (hl), c | 0590 23 ; inc hl | 0591 23 ; inc hl | 0592 7e ; ld a, (hl) | 0593 b9 ; cp c | 0594 30 bd ; jr nc, 0x553 | 0596 71 ; ld (hl), c | 0597 18 ba ; jr 0x553 | update display ;unknown (on key 0x9a?) 0599 cd a0 02 ; call 0x2a0 | 059c ed 44 ; neg | 059e 81 ; add a, c | 059f 4f ; ld c, a | 05a0 1a ; ld a, (de) | 05a1 f2 83 05 ; jp p, 0x583 | 05a4 0e 00 ; ld c, 0x0 | 05a6 18 db ; jr 0x583 | ;unknown (on key 0x9e?) 05a8 cd a0 02 ; call 0x2a0 | 05ab 81 ; add a, c | 05ac 4f ; ld c, a | 05ad 1a ; ld a, (de) | 05ae f2 83 05 ; jp p, 0x583 | 05b1 0e 7f ; ld c, 0x7f | 05b3 18 ce ; jr 0x583 | ;get tab position bit?? 05b5 79 ; ld a, c | 05b6 e6 f8 ; and 0xf8 | 05b8 0f ; rrca | 05b9 0f ; rrca | 05ba 0f ; rrca | 05bb c6 c0 ; add a, 0xc0 | hl = tab positions 05bd 26 40 ; ld h, 0x40 | 05bf 6f ; ld l, a | 05c0 79 ; ld a, c | 05c1 e6 07 ; and 0x7 | 05c3 d5 ; push de | 05c4 57 ; ld d, a | 05c5 3e 80 ; ld a, 0x80 | 05c7 15 ; dec d | 05c8 07 ; rlca | 05c9 f2 c7 05 ; jp p, 0x5c7 | 05cc d1 ; pop de | 05cd c9 ; ret | ;something with HEX last key 05ce 3e 81 ; ld a, 0x81 | 05d0 32 8f 40 ; ld (0x408f), a | set HEXX = a 05d3 c9 ; ret | ;Toggle INSERT mode (on key 0x1e) 05d4 21 90 40 ; ld hl, 0x4090 | hl = INSF 05d7 ae ; xor (hl) | 05d8 77 ; ld (hl), a | 05d9 c9 ; ret | ;tab() 05da 0c ; inc c | 05db 1a ; ld a, (de) | 05dc fa 82 05 ; jp m, 0x582 | 05df cd b5 05 ; call 0x5b5 | 05e2 a6 ; and (hl) | 05e3 28 f5 ; jr z, 0x5da | 05e5 1a ; ld a, (de) | 05e6 c3 83 05 ; jp 0x583 | ;UNEXPLORED 05e7 83 ; add a, e | 05e8 05 ; dec b | ;rev_tab() 05e9 0d ; dec c | 05ea 1a ; ld a, (de) | 05eb fa 25 05 ; jp m, 0x525 | 05ee cd b5 05 ; call 0x5b5 | 05f1 a6 ; and (hl) | 05f2 28 f5 ; jr z, 0x5e9 | 05f4 18 ef ; jr 0x5e5 | ;del_char() 05f6 21 7f 41 ; ld hl, 0x417f | 05f9 0e 20 ; ld c, 0x20 | 05fb 7d ; ld a, l | 05fc b8 ; cp b | 05fd 7e ; ld a, (hl) | 05fe 71 ; ld (hl), c | 05ff 48 ; ld c, b | 0600 ca 88 05 ; jp z, 0x588 | done - update cursor position and current size of line 0603 2d ; dec l | 0604 4f ; ld c, a | 0605 18 f4 ; jr 0x5fb | ;hexx_input()? 0607 f6 20 ; or 0x20 | 0609 d6 30 ; sub 0x30 | 060b fe 10 ; cp 0x10 | 060d 38 02 ; jr c, 0x611 | 060f d6 27 ; sub 0x27 | 0611 35 ; dec (hl) | 0612 34 ; inc (hl) | 0613 f2 1d 06 ; jp p, 0x61d | 0616 c6 10 ; add a, 0x10 | 0618 77 ; ld (hl), a | 0619 1a ; ld a, (de) | 061a c3 83 05 ; jp 0x583 | 061d 4f ; ld c, a | 061e 7e ; ld a, (hl) | 061f 07 ; rlca | 0620 07 ; rlca | 0621 07 ; rlca | 0622 07 ; rlca | 0623 3d ; dec a | 0624 b1 ; or c | 0625 36 00 ; ld (hl), 0x0 | 0627 48 ; ld c, b | 0628 c3 76 05 ; jp 0x576 | ;UNEXPLORED 062b 26 41 ; ld h, 0x41 | 062d 68 ; ld l, b | 062e 2c ; inc l | 062f f8 ; ret m | 0630 f5 ; push af | 0631 1a ; ld a, (de) | 0632 4e ; ld c, (hl) | 0633 77 ; ld (hl), a | 0634 79 ; ld a, c | 0635 2c ; inc l | 0636 f2 32 06 ; jp p, 0x632 | 0639 48 ; ld c, b | 063a f1 ; pop af | 063b 21 95 40 ; ld hl, 0x4095 | 063e 34 ; inc (hl) | 063f f0 ; ret p | 0640 35 ; dec (hl) | 0641 c9 ; ret | ;multiply() = de * bc 0642 3e 10 ; ld a, 0x10 | 0644 21 00 00 ; ld hl, 0x0 | 0647 29 ; add hl, hl | 0648 eb ; ex de, hl | 0649 29 ; add hl, hl | 064a eb ; ex de, hl | 064b 30 01 ; jr nc, 0x64e | 064d 09 ; add hl, bc | 064e 3d ; dec a | 064f 20 f6 ; jr nz, 0x647 | 0651 c9 ; ret | ;divide() = hl / de 0652 7a ; ld a, d | 0653 ac ; xor h | 0654 f5 ; push af | 0655 aa ; xor d | 0656 fc 7f 06 ; call m, 0x67f | 0659 29 ; add hl, hl | 065a eb ; ex de, hl | 065b 24 ; inc h | 065c 25 ; dec h | 065d f4 7f 06 ; call p, 0x67f | 0660 44 ; ld b, h | 0661 4d ; ld c, l | 0662 21 00 00 ; ld hl, 0x0 | 0665 3e 0f ; ld a, 0xf | 0667 29 ; add hl, hl | 0668 eb ; ex de, hl | 0669 29 ; add hl, hl | 066a eb ; ex de, hl | 066b 30 01 ; jr nc, 0x66e | 066d 23 ; inc hl | 066e e5 ; push hl | 066f 09 ; add hl, bc | 0670 30 15 ; jr nc, 0x687 | 0672 13 ; inc de | 0673 33 ; inc sp | 0674 33 ; inc sp | 0675 3d ; dec a | 0676 20 ef ; jr nz, 0x667 | 0678 f1 ; pop af | 0679 f0 ; ret p | 067a eb ; ex de, hl | 067b cd 7f 06 ; call 0x67f | 067e eb ; ex de, hl | 067f 7c ; ld a, h | 0680 2f ; cpl | 0681 67 ; ld h, a | 0682 7d ; ld a, l | 0683 2f ; cpl | 0684 6f ; ld l, a | 0685 23 ; inc hl | 0686 c9 ; ret | 0687 e1 ; pop hl | 0688 18 eb ; jr 0x675 | ;bin_to_string() 068a 01 00 00 ; ld bc, 0x0 | 068d 24 ; inc h | 068e 25 ; dec h | 068f f5 ; push af | 0690 fc 7f 06 ; call m, 0x67f | 0693 d5 ; push de | 0694 c5 ; push bc | 0695 11 0a 00 ; ld de, 0xa | 0698 cd 52 06 ; call 0x652 | call divide() hl/10 069b 7d ; ld a, l | 069c c6 30 ; add a, 0x30 | 069e c1 ; pop bc | 069f 0c ; inc c | 06a0 e1 ; pop hl | 06a1 77 ; ld (hl), a | 06a2 2b ; dec hl | 06a3 eb ; ex de, hl | 06a4 7c ; ld a, h | 06a5 b5 ; or l | 06a6 20 eb ; jr nz, 0x693 | 06a8 13 ; inc de | 06a9 f1 ; pop af | 06aa f0 ; ret p | 06ab 0c ; inc c | 06ac 3e 2d ; ld a, 0x2d | 06ae 1b ; dec de | 06af 12 ; ld (de), a | 06b0 c9 ; ret | ;UNEXPLORED 06b1 cd 10 04 ; call 0x410 | 06b4 cd a9 04 ; call 0x4a9 | 06b7 21 92 40 ; ld hl, 0x4092 | 06ba 6e ; ld l, (hl) | 06bb 26 41 ; ld h, 0x41 | 06bd 3a 95 40 ; ld a, (0x4095) | get a = KSIZ 06c0 95 ; sub l | 06c1 4f ; ld c, a | 06c2 47 ; ld b, a | 06c3 28 ec ; jr z, 0x6b1 | 06c5 0c ; inc c | 06c6 cd c2 01 ; call 0x1c2 | 06c9 28 e6 ; jr z, 0x6b1 | 06cb 30 f9 ; jr nc, 0x6c6 | 06cd cd c2 01 ; call 0x1c2 | 06d0 28 06 ; jr z, 0x6d8 | 06d2 38 f9 ; jr c, 0x6cd | 06d4 fe 15 ; cp 0x15 | 06d6 28 f5 ; jr z, 0x6cd | 06d8 d1 ; pop de | 06d9 78 ; ld a, b | 06da 91 ; sub c | 06db 4f ; ld c, a | 06dc 21 40 42 ; ld hl, 0x4240 | 06df e5 ; push hl | 06e0 c5 ; push bc | 06e1 d5 ; push de | 06e2 cd 7d 04 ; call 0x47d | 06e5 c3 5b 01 ; jp 0x15b | 06e8 11 00 00 ; ld de, 0x0 | 06eb 0c ; inc c | 06ec 0d ; dec c | 06ed c8 ; ret z | 06ee 7e ; ld a, (hl) | 06ef e6 7f ; and 0x7f | 06f1 23 ; inc hl | 06f2 d6 30 ; sub 0x30 | 06f4 38 2d ; jr c, 0x723 | 06f6 fe 0a ; cp 0xa | 06f8 30 f2 ; jr nc, 0x6ec | 06fa 2b ; dec hl | 06fb e5 ; push hl | 06fc 62 ; ld h, d | 06fd 6b ; ld l, e | 06fe 29 ; add hl, hl | 06ff 38 0d ; jr c, 0x70e | 0701 29 ; add hl, hl | 0702 38 0a ; jr c, 0x70e | 0704 19 ; add hl, de | 0705 38 07 ; jr c, 0x70e | 0707 29 ; add hl, hl | 0708 38 04 ; jr c, 0x70e | 070a 5f ; ld e, a | 070b 16 00 ; ld d, 0x0 | 070d 19 ; add hl, de | 070e eb ; ex de, hl | 070f e1 ; pop hl | 0710 d8 ; ret c | 0711 0d ; dec c | 0712 c8 ; ret z | 0713 23 ; inc hl | 0714 7e ; ld a, (hl) | 0715 f6 80 ; or 0x80 | 0717 d6 30 ; sub 0x30 | 0719 f0 ; ret p | 071a e6 7f ; and 0x7f | 071c fe 0a ; cp 0xa | 071e 38 db ; jr c, 0x6fb | 0720 14 ; inc d | 0721 15 ; dec d | 0722 c9 ; ret | 0723 d6 fe ; sub 0xfe | 0725 c8 ; ret z | 0726 3c ; inc a | 0727 20 c3 ; jr nz, 0x6ec | 0729 cd ec 06 ; call 0x6ec | 072c d8 ; ret c | 072d eb ; ex de, hl | 072e cd 7f 06 ; call 0x67f | 0731 bf ; cp a | 0732 eb ; ex de, hl | 0733 c9 ; ret | ;UNEXPLORED 0734 e5 ; push hl | 0735 0c ; inc c | 0736 04 ; inc b | 0737 2b ; dec hl | 0738 23 ; inc hl | 0739 0d ; dec c | 073a 28 26 ; jr z, 0x762 | 073c 7e ; ld a, (hl) | 073d b7 ; or a | 073e 28 22 ; jr z, 0x762 | 0740 e5 ; push hl | 0741 d5 ; push de | 0742 c5 ; push bc | 0743 0c ; inc c | 0744 05 ; dec b | 0745 28 11 ; jr z, 0x758 | 0747 1a ; ld a, (de) | 0748 b7 ; or a | 0749 28 0d ; jr z, 0x758 | 074b 0d ; dec c | 074c 28 05 ; jr z, 0x753 | 074e 13 ; inc de | 074f be ; cp (hl) | 0750 23 ; inc hl | 0751 28 f1 ; jr z, 0x744 | 0753 c1 ; pop bc | 0754 d1 ; pop de | 0755 e1 ; pop hl | 0756 18 e0 ; jr 0x738 | 0758 f1 ; pop af | 0759 f1 ; pop af | 075a d1 ; pop de | 075b e1 ; pop hl | 075c cd 7f 06 ; call 0x67f | 075f 19 ; add hl, de | 0760 23 ; inc hl | 0761 c9 ; ret | 0762 f1 ; pop af | 0763 21 00 00 ; ld hl, 0x0 | 0766 c9 ; ret | ;called from x003c (nibbl rotation?) 0767 c5 ; push bc | 0768 06 10 ; ld b, 0x10 | 076a 21 00 42 ; ld hl, 0x4200 | 076d af ; xor a | 076e ed 6f ; rld | 0770 23 ; inc hl | 0771 10 fb ; djnz 0x76e | 0773 c1 ; pop bc | 0774 c9 ; ret | ;UNEXPLORED 0775 cd d8 04 ; call 0x4d8 | call getkey? 0778 21 89 40 ; ld hl, 0x4089 | 077b 7e ; ld a, (hl) | 077c 23 ; inc hl | 077d be ; cp (hl) | 077e 28 3c ; jr z, 0x7bc | 0780 db 0c ; in a, (0xc) | unknown input (0xc undocumented, rs232?) 0782 cb 77 ; bit 0x6, a | 0784 28 06 ; jr z, 0x78c | 0786 3e c0 ; ld a, 0xc0 | 0788 d3 0c ; out (0xc), a | 078a 18 30 ; jr 0x7bc | 078c e6 80 ; and 0x80 | 078e 20 2c ; jr nz, 0x7bc | 0790 21 89 40 ; ld hl, 0x4089 | 0793 7e ; ld a, (hl) | 0794 23 ; inc hl | 0795 96 ; sub (hl) | 0796 28 24 ; jr z, 0x7bc | 0798 6e ; ld l, (hl) | 0799 26 41 ; ld h, 0x41 | 079b 2c ; inc l | 079c 7d ; ld a, l | 079d f6 80 ; or 0x80 | 079f 32 8a 40 ; ld (0x408a), a | set PTC = a 07a2 6f ; ld l, a | 07a3 7e ; ld a, (hl) | 07a4 fe 0d ; cp 0xd | 07a6 20 04 ; jr nz, 0x7ac | 07a8 3e 0a ; ld a, 0xa | 07aa 18 06 ; jr 0x7b2 | 07ac fe 0a ; cp 0xa | 07ae 20 02 ; jr nz, 0x7b2 | 07b0 3e 0d ; ld a, 0xd | 07b2 fe 7f ; cp 0x7f | 07b4 20 02 ; jr nz, 0x7b8 | 07b6 3e 7e ; ld a, 0x7e | 07b8 e6 7f ; and 0x7f | 07ba d3 0c ; out (0xc), a | 07bc c3 36 00 ; jp 0x36 | 07bf 41 ; ld b, c | 07c0 7e ; ld a, (hl) | 07c1 12 ; ld (de), a | 07c2 7b ; ld a, e | 07c3 32 89 40 ; ld (0x4089), a | set PLC = a 07c6 23 ; inc hl | 07c7 0d ; dec c | 07c8 20 c8 ; jr nz, 0x792 | 07ca f3 ; di | 07cb ff ; rst 0x38 | 07cc c9 ; ret | 07cd c5 ; push bc | 07ce cd 86 40 ; call 0x4086 | 07d1 c1 ; pop bc | 07d2 e1 ; pop hl | 07d3 f3 ; di | 07d4 ff ; rst 0x38 | 07d5 18 b8 ; jr 0x78f | 07d7 cd 10 04 ; call 0x410 | 07da cd a9 04 ; call 0x4a9 | 07dd 3a 92 40 ; ld a, (0x4092) | get a = TOOK 07e0 6f ; ld l, a | 07e1 26 41 ; ld h, 0x41 | 07e3 0e 00 ; ld c, 0x0 | 07e5 7e ; ld a, (hl) | 07e6 2c ; inc l | 07e7 fa d7 03 ; jp m, 0x3d7 | 07ea fe 20 ; cp 0x20 | 07ec 28 f7 ; jr z, 0x7e5 | 07ee 7d ; ld a, l | 07ef 3d ; dec a | 07f0 32 92 40 ; ld (0x4092), a | set TOOK = a 07f3 06 08 ; ld b, 0x8 | 07f5 0c ; inc c | 07f6 7e ; ld a, (hl) | 07f7 23 ; inc hl | 07f8 fe 30 ; cp 0x30 | 07fa 05 ; dec b | 07fb 28 02 ; jr z, 0x7ff | 07fd c3 75 07 ; jp 0x775 | ;READ vec 0800 c3 8e 08 ; jp 0x88e | ;WRITE vec 0803 c3 4a 09 ; jp 0x94a | ;REWRITE vec 0806 c3 75 09 ; jp 0x975 | ;KEY[SEARCH] vec 0809 c3 4f 0e ; jp 0xe4f | ;OPEN vec 080c c3 30 08 ; jp 0x830 | ;LOADER vec 080f c3 1e 0d ; jp 0xd1e | jump to loader() ;CLOSE vec 0812 c3 e0 0c ; jp 0xce0 | ;CLRDK vec 0815 c3 6b 0d ; jp 0xd6b | ;REPORT vec 0818 c3 8e 0d ; jp 0xd8e | ;unknown jump vectors 081b c3 ab 0b ; jp 0xbab | 081e c3 34 0c ; jp 0xc34 | 0821 c3 36 09 ; jp 0x936 | 0824 c3 45 09 ; jp 0x945 | 0827 c3 3b 0b ; jp 0xb3b | 082a c3 5a 0b ; jp 0xb5a | 082d c3 67 0b ; jp 0xb67 | ;open() 0830 97 ; sub a | 0831 32 ad 40 ; ld (0x40ad), a | set Disk # = a 0834 3e 80 ; ld a, 0x80 | 0836 32 13 42 ; ld (0x4213), a | 0839 e5 ; push hl | 083a 3a a5 40 ; ld a, (0x40a5) | get a = AD (access denined) 083d 2f ; cpl | a = bit mask of allowed drives 083e 47 ; ld b, a | 083f 21 13 42 ; ld hl, 0x4213 | 0842 7e ; ld a, (hl) | 0843 07 ; rlca | get next potential disk 0844 77 ; ld (hl), a | 0845 21 ad 40 ; ld hl, 0x40ad | get disk# from index file 0848 34 ; inc (hl) | 0849 a0 ; and b | is disk available? 084a e1 ; pop hl | 084b 28 2f ; jr z, 0x87c | 084d e5 ; push hl | 084e 11 02 00 ; ld de, 0x2 | 0851 01 9f 40 ; ld bc, 0x409f | Current record number on index? 0854 cd e1 0f ; call 0xfe1 | setup FD for INDEX (rpt, #records, record size) 0857 02 ; ld (bc), a | 0858 0b ; dec bc | 0859 02 ; ld (bc), a | 085a 3e 08 ; ld a, 0x8 | 085c 23 ; inc hl | 085d 23 ; inc hl | 085e cd 09 08 ; call 0x809 | call KEY[SEARCH] 0861 e1 ; pop hl | 0862 20 18 ; jr nz, 0x87c | 0864 11 18 00 ; ld de, 0x18 | 0867 3e 01 ; ld a, 0x1 | 0869 cd 00 08 ; call 0x800 | call READ 086c 21 ad 40 ; ld hl, 0x40ad | get disk# from index file 086f 46 ; ld b, (hl) | 0870 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 0873 11 0f 00 ; ld de, 0xf | 0876 19 ; add hl, de | 0877 70 ; ld (hl), b | 0878 01 df 0d ; ld bc, 0xddf | 087b c9 ; ret | 087c e5 ; push hl | 087d 21 13 42 ; ld hl, 0x4213 | 0880 7e ; ld a, (hl) | 0881 fe 80 ; cp 0x80 | 0883 fa 3a 08 ; jp m, 0x83a | 0886 3e 04 ; ld a, 0x4 | 0888 b7 ; or a | 0889 e1 ; pop hl | 088a 01 df 0d ; ld bc, 0xddf | 088d c9 ; ret | ;read() 088e cd b8 0f ; call 0xfb8 | 0891 c3 00 10 ; jp 0x1000 | 0894 cd f0 0a ; call 0xaf0 | 0897 c0 ; ret nz | 0898 21 9d 40 ; ld hl, 0x409d | 089b 36 20 ; ld (hl), 0x20 | 089d cd 5a 0b ; call 0xb5a | 08a0 cd d3 0a ; call 0xad3 | 08a3 cd 3b 0b ; call 0xb3b | 08a6 1e ff ; ld e, 0xff | 08a8 cd 67 0b ; call 0xb67 | 08ab ca 36 09 ; jp z, 0x936 | 08ae cd 8d 0c ; call 0xc8d | 08b1 c2 36 09 ; jp nz, 0x936 | 08b4 3a b8 40 ; ld a, (0x40b8) | get a = PART2 unused length 08b7 3c ; inc a | 08b8 47 ; ld b, a | 08b9 0e 19 ; ld c, 0x19 | 08bb d9 ; exx | 08bc 2a b6 40 ; ld hl, (0x40b6) | get hl = PART1 (length to be transferred) 08bf 7c ; ld a, h | 08c0 1f ; rra | 08c1 7d ; ld a, l | 08c2 1f ; rra | 08c3 47 ; ld b, a | 08c4 21 ee 08 ; ld hl, 0x8ee | 08c7 30 04 ; jr nc, 0x8cd | 08c9 21 f4 08 ; ld hl, 0x8f4 | 08cc 04 ; inc b | 08cd e5 ; push hl | 08ce 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 08d1 2b ; dec hl | 08d2 56 ; ld d, (hl) | 08d3 db 1a ; in a, (0x1a) | 08d5 0e 1a ; ld c, 0x1a | 08d7 ed 78 ; in a, (c) | 08d9 f2 d7 08 ; jp p, 0x8d7 | 08dc 0d ; dec c | 08dd db 19 ; in a, (0x19) | read byte from disk 2 08df fe 9b ; cp 0x9b | is Data record? 08e1 c8 ; ret z | 08e2 e1 ; pop hl | 08e3 21 9d 40 ; ld hl, 0x409d | 08e6 3e 02 ; ld a, 0x2 | 08e8 35 ; dec (hl) | 08e9 28 4b ; jr z, 0x936 | 08eb 18 b9 ; jr 0x8a6 | 08ed 23 ; inc hl | 08ee ed 58 ; in e, (c) | read byte from disk 2 08f0 72 ; ld (hl), d | 08f1 23 ; inc hl | 08f2 73 ; ld (hl), e | 08f3 83 ; add a, e | 08f4 ed 50 ; in d, (c) | read byte from disk 2 08f6 82 ; add a, d | 08f7 05 ; dec b | 08f8 20 f3 ; jr nz, 0x8ed | 08fa d9 ; exx | 08fb ed 68 ; in l, (c) | 08fd 85 ; add a, l | 08fe 05 ; dec b | 08ff 20 fa ; jr nz, 0x8fb | 0901 95 ; sub l | 0902 bd ; cp l | 0903 db 19 ; in a, (0x19) | read byte from disk 2 0905 20 dc ; jr nz, 0x8e3 | 0907 d9 ; exx | 0908 23 ; inc hl | 0909 72 ; ld (hl), d | 090a fe 10 ; cp 0x10 | 090c 20 d5 ; jr nz, 0x8e3 | 090e 07 ; rlca | 090f 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 0912 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 0915 eb ; ex de, hl | 0916 2a 20 42 ; ld hl, (0x4220) | 0919 19 ; add hl, de | 091a 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 091d d9 ; exx | 091e dd 34 00 ; inc (ix + 0x0) | 0921 20 03 ; jr nz, 0x926 | 0923 dd 34 01 ; inc (ix + 0x1) | 0926 3e 20 ; ld a, 0x20 | 0928 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 092b 97 ; sub a | 092c 21 9c 40 ; ld hl, 0x409c | 092f 1c ; inc e | 0930 35 ; dec (hl) | 0931 c2 a8 08 ; jp nz, 0x8a8 | 0934 18 0f ; jr 0x945 | 0936 dd 34 00 ; inc (ix + 0x0) | increment Record Number (LO) 0939 20 03 ; jr nz, 0x93e | 093b dd 34 01 ; inc (ix + 0x1) | increment Record Number (HI) 093e 21 9c 40 ; ld hl, 0x409c | 0941 35 ; dec (hl) | 0942 20 f2 ; jr nz, 0x936 | 0944 b7 ; or a | 0945 fb ; ei | 0946 dd e5 ; push ix | 0948 c1 ; pop bc | 0949 c9 ; ret | ;write jump() 094a cd b8 0f ; call 0xfb8 | 094d c3 03 10 ; jp 0x1003 | 0950 cd f0 0a ; call 0xaf0 | 0953 c0 ; ret nz | 0954 cd 5a 0b ; call 0xb5a | 0957 cd d3 0a ; call 0xad3 | 095a dd 5e 0e ; ld e, (ix + 0xe) | 095d 16 00 ; ld d, 0x0 | 095f dd 7e 10 ; ld a, (ix + 0x10) | 0962 dd 96 12 ; sub (ix + 0x12) | 0965 21 00 00 ; ld hl, 0x0 | 0968 3d ; dec a | 0969 19 ; add hl, de | 096a 3c ; inc a | 096b 20 fc ; jr nz, 0x969 | 096d dd 75 0a ; ld (ix + 0xa), l | 0970 dd 74 0b ; ld (ix + 0xb), h | 0973 18 0d ; jr 0x982 | ;rewrite() 0975 cd b8 0f ; call 0xfb8 | 0978 c3 06 10 ; jp 0x1006 | 097b cd f0 0a ; call 0xaf0 | 097e c0 ; ret nz | 097f cd d3 0a ; call 0xad3 | 0982 21 9d 40 ; ld hl, 0x409d | 0985 36 20 ; ld (hl), 0x20 | 0987 dd 7e 13 ; ld a, (ix + 0x13) | 098a b7 ; or a | 098b 3e 07 ; ld a, 0x7 | 098d fa 36 09 ; jp m, 0x936 | 0990 21 29 42 ; ld hl, 0x4229 | 0993 77 ; ld (hl), a | 0994 21 22 42 ; ld hl, 0x4222 | 0997 36 00 ; ld (hl), 0x0 | 0999 22 24 42 ; ld (0x4224), hl | 099c cd 3b 0b ; call 0xb3b | 099f 1e ff ; ld e, 0xff | 09a1 cd 67 0b ; call 0xb67 | 09a4 28 57 ; jr z, 0x9fd | 09a6 cd 8d 0c ; call 0xc8d | 09a9 20 8b ; jr nz, 0x936 | 09ab db 19 ; in a, (0x19) | 09ad 3e 80 ; ld a, 0x80 | 09af d3 1b ; out (0x1b), a | 09b1 d9 ; exx | 09b2 2a b6 40 ; ld hl, (0x40b6) | get hl = PART1 (length to be transferred) 09b5 db 19 ; in a, (0x19) | 09b7 eb ; ex de, hl | 09b8 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 09bb db 19 ; in a, (0x19) | 09bd 1b ; dec de | 09be 7a ; ld a, d | 09bf 13 ; inc de | 09c0 0f ; rrca | 09c1 db 19 ; in a, (0x19) | 09c3 3a b8 40 ; ld a, (0x40b8) | get a = PART2 unused length 09c6 57 ; ld d, a | 09c7 db 19 ; in a, (0x19) | 09c9 14 ; inc d | 09ca 01 19 00 ; ld bc, 0x19 | 09cd db 19 ; in a, (0x19) | 09cf 3e 9b ; ld a, 0x9b | 09d1 d3 19 ; out (0x19), a | 09d3 d2 c8 0a ; jp nc, 0xac8 | 09d6 86 ; add a, (hl) | 09d7 ed a3 ; outi | 09d9 20 fb ; jr nz, 0x9d6 | 09db 43 ; ld b, e | 09dc 86 ; add a, (hl) | 09dd ed a3 ; outi | 09df 20 fb ; jr nz, 0x9dc | 09e1 15 ; dec d | 09e2 28 05 ; jr z, 0x9e9 | 09e4 ed 41 ; out (c), b | 09e6 15 ; dec d | 09e7 20 fb ; jr nz, 0x9e4 | 09e9 d3 19 ; out (0x19), a | 09eb 2a 24 42 ; ld hl, (0x4224) | 09ee 16 10 ; ld d, 0x10 | 09f0 ed 51 ; out (c), d | 09f2 86 ; add a, (hl) | 09f3 77 ; ld (hl), a | 09f4 af ; xor a | 09f5 d3 19 ; out (0x19), a | 09f7 00 ; nop | 09f8 00 ; nop | 09f9 d3 19 ; out (0x19), a | 09fb d3 1b ; out (0x1b), a | 09fd 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 0a00 eb ; ex de, hl | 0a01 2a 20 42 ; ld hl, (0x4220) | 0a04 19 ; add hl, de | 0a05 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 0a08 d9 ; exx | 0a09 1c ; inc e | 0a0a dd 34 00 ; inc (ix + 0x0) | 0a0d 20 03 ; jr nz, 0xa12 | 0a0f dd 34 01 ; inc (ix + 0x1) | 0a12 21 9b 40 ; ld hl, 0x409b | 0a15 35 ; dec (hl) | 0a16 20 89 ; jr nz, 0x9a1 | 0a18 23 ; inc hl | 0a19 7e ; ld a, (hl) | 0a1a ed 44 ; neg | 0a1c dd 86 00 ; add a, (ix + 0x0) | 0a1f dd 77 00 ; ld (ix + 0x0), a | 0a22 38 03 ; jr c, 0xa27 | 0a24 dd 35 01 ; dec (ix + 0x1) | 0a27 1e ff ; ld e, 0xff | 0a29 3e 23 ; ld a, 0x23 | 0a2b 32 24 42 ; ld (0x4224), a | 0a2e cd 67 0b ; call 0xb67 | 0a31 ca 36 09 ; jp z, 0x936 | 0a34 cd 8d 0c ; call 0xc8d | 0a37 c2 36 09 ; jp nz, 0x936 | 0a3a db 19 ; in a, (0x19) | 0a3c dd 6e 0c ; ld l, (ix + 0xc) | 0a3f dd 66 0d ; ld h, (ix + 0xd) | 0a42 2c ; inc l | 0a43 25 ; dec h | 0a44 28 03 ; jr z, 0xa49 | 0a46 2d ; dec l | 0a47 26 01 ; ld h, 0x1 | 0a49 01 19 00 ; ld bc, 0x19 | 0a4c db 1a ; in a, (0x1a) | 0a4e db 1a ; in a, (0x1a) | 0a50 b7 ; or a | 0a51 f2 4e 0a ; jp p, 0xa4e | 0a54 db 19 ; in a, (0x19) | 0a56 80 ; add a, b | 0a57 ed 40 ; in b, (c) | 0a59 2d ; dec l | 0a5a 20 fa ; jr nz, 0xa56 | 0a5c 80 ; add a, b | 0a5d ed 40 ; in b, (c) | 0a5f 25 ; dec h | 0a60 20 fa ; jr nz, 0xa5c | 0a62 b8 ; cp b | 0a63 db 19 ; in a, (0x19) | 0a65 20 49 ; jr nz, 0xab0 | 0a67 fe 10 ; cp 0x10 | 0a69 20 45 ; jr nz, 0xab0 | 0a6b 3a 22 42 ; ld a, (0x4222) | 0a6e 90 ; sub b | 0a6f 32 22 42 ; ld (0x4222), a | 0a72 21 9d 40 ; ld hl, 0x409d | 0a75 36 14 ; ld (hl), 0x14 | 0a77 2a 20 42 ; ld hl, (0x4220) | 0a7a 44 ; ld b, h | 0a7b 4d ; ld c, l | 0a7c 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 0a7f 09 ; add hl, bc | 0a80 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 0a83 1c ; inc e | 0a84 dd 34 00 ; inc (ix + 0x0) | 0a87 20 03 ; jr nz, 0xa8c | 0a89 dd 34 01 ; inc (ix + 0x1) | 0a8c 21 9c 40 ; ld hl, 0x409c | 0a8f 35 ; dec (hl) | 0a90 20 9c ; jr nz, 0xa2e | 0a92 3a 22 42 ; ld a, (0x4222) | 0a95 b7 ; or a | 0a96 ca 45 09 ; jp z, 0x945 | 0a99 21 29 42 ; ld hl, 0x4229 | 0a9c 35 ; dec (hl) | 0a9d 3e 03 ; ld a, 0x3 | 0a9f 28 15 ; jr z, 0xab6 | 0aa1 2a 26 42 ; ld hl, (0x4226) | 0aa4 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 0aa7 3a 28 42 ; ld a, (0x4228) | 0aaa 32 9c 40 ; ld (0x409c), a | set SNRT (# recs to be transfd) = a 0aad c3 94 09 ; jp 0x994 | 0ab0 3e 03 ; ld a, 0x3 | 0ab2 21 9d 40 ; ld hl, 0x409d | 0ab5 35 ; dec (hl) | 0ab6 ca 36 09 ; jp z, 0x936 | 0ab9 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 0abc 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 0abf 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 0ac2 32 9b 40 ; ld (0x409b), a | set NRT (disk record count) = a 0ac5 c3 9f 09 ; jp 0x99f | 0ac8 86 ; add a, (hl) | 0ac9 ed a3 ; outi | 0acb 43 ; ld b, e | 0acc 05 ; dec b | 0acd 86 ; add a, (hl) | 0ace ed a3 ; outi | 0ad0 c3 dc 09 ; jp 0x9dc | 0ad3 dd 4e 0c ; ld c, (ix + 0xc) | 0ad6 dd 46 0d ; ld b, (ix + 0xd) | 0ad9 7b ; ld a, e | 0ada 2f ; cpl | 0adb 6f ; ld l, a | 0adc 7a ; ld a, d | 0add 2f ; cpl | 0ade 67 ; ld h, a | 0adf 09 ; add hl, bc | 0ae0 23 ; inc hl | 0ae1 38 05 ; jr c, 0xae8 | 0ae3 50 ; ld d, b | 0ae4 59 ; ld e, c | 0ae5 21 00 00 ; ld hl, 0x0 | 0ae8 22 b8 40 ; ld (0x40b8), hl | set PART2 unused length = hl 0aeb eb ; ex de, hl | 0aec 22 b6 40 ; ld (0x40b6), hl | set PART1 (length to be transferred) = hl 0aef c9 ; ret | 0af0 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 0af3 32 9c 40 ; ld (0x409c), a | set SNRT (# recs to be transfd) = a 0af6 6b ; ld l, e | 0af7 62 ; ld h, d | 0af8 22 20 42 ; ld (0x4220), hl | 0afb dd 6e 0f ; ld l, (ix + 0xf) | 0afe 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 0b01 bd ; cp l | 0b02 28 28 ; jr z, 0xb2c | 0b04 3e 80 ; ld a, 0x80 | 0b06 65 ; ld h, l | 0b07 07 ; rlca | 0b08 2d ; dec l | 0b09 20 fc ; jr nz, 0xb07 | 0b0b 6c ; ld l, h | 0b0c 67 ; ld h, a | 0b0d d3 1a ; out (0x1a), a | 0b0f 97 ; sub a | 0b10 d3 0a ; out (0xa), a | 0b12 db 1a ; in a, (0x1a) | 0b14 0f ; rrca | 0b15 38 e4 ; jr c, 0xafb | 0b17 7c ; ld a, h | 0b18 d3 1a ; out (0x1a), a | 0b1a 7d ; ld a, l | 0b1b 32 a0 40 ; ld (0x40a0), a | set DISK (selected disk drive #) = a 0b1e 3e ff ; ld a, 0xff | 0b20 32 a1 40 ; ld (0x40a1), a | set TRKS (track # for drive 1) = a 0b23 2e 94 ; ld l, 0x94 | 0b25 06 05 ; ld b, 0x5 | 0b27 cd 2c 0c ; call 0xc2c | 0b2a 10 fb ; djnz 0xb27 | 0b2c db 1a ; in a, (0x1a) | 0b2e e6 40 ; and 0x40 | 0b30 28 02 ; jr z, 0xb34 | 0b32 97 ; sub a | 0b33 c9 ; ret | 0b34 3e 05 ; ld a, 0x5 | 0b36 dd e5 ; push ix | 0b38 c1 ; pop bc | 0b39 b7 ; or a | 0b3a c9 ; ret | ;UNEXPLORED 0b3b dd 7e 16 ; ld a, (ix + 0x16) | 0b3e dd 77 00 ; ld (ix + 0x0), a | 0b41 dd 7e 17 ; ld a, (ix + 0x17) | 0b44 dd 77 01 ; ld (ix + 0x1), a | 0b47 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 0b4a 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 0b4d 22 26 42 ; ld (0x4226), hl | 0b50 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 0b53 32 9b 40 ; ld (0x409b), a | set NRT (disk record count) = a 0b56 32 28 42 ; ld (0x4228), a | 0b59 c9 ; ret | 0b5a dd 7e 00 ; ld a, (ix + 0x0) | 0b5d dd 77 16 ; ld (ix + 0x16), a | 0b60 dd 7e 01 ; ld a, (ix + 0x1) | 0b63 dd 77 17 ; ld (ix + 0x17), a | 0b66 c9 ; ret | 0b67 dd 7e 01 ; ld a, (ix + 0x1) | 0b6a dd be 0b ; cp (ix + 0xb) | 0b6d 20 06 ; jr nz, 0xb75 | 0b6f dd 7e 00 ; ld a, (ix + 0x0) | 0b72 dd be 0a ; cp (ix + 0xa) | 0b75 d8 ; ret c | 0b76 97 ; sub a | 0b77 3e 06 ; ld a, 0x6 | 0b79 c9 ; ret | 0b7a 0e 1a ; ld c, 0x1a | 0b7c 21 10 27 ; ld hl, 0x2710 | 0b7f f3 ; di | 0b80 ed 78 ; in a, (c) | 0b82 ed 78 ; in a, (c) | 0b84 fa 95 0b ; jp m, 0xb95 | 0b87 2d ; dec l | 0b88 20 f8 ; jr nz, 0xb82 | 0b8a ed 78 ; in a, (c) | 0b8c fa 95 0b ; jp m, 0xb95 | 0b8f 25 ; dec h | 0b90 20 f0 ; jr nz, 0xb82 | 0b92 fb ; ei | 0b93 3c ; inc a | 0b94 c9 ; ret | 0b95 db 19 ; in a, (0x19) | 0b97 fe 9e ; cp 0x9e | 0b99 20 e5 ; jr nz, 0xb80 | 0b9b 0d ; dec c | 0b9c ed 40 ; in b, (c) | 0b9e ed 48 ; in c, (c) | 0ba0 db 19 ; in a, (0x19) | 0ba2 90 ; sub b | 0ba3 91 ; sub c | 0ba4 20 da ; jr nz, 0xb80 | 0ba6 fb ; ei | 0ba7 21 a1 40 ; ld hl, 0x40a1 | 0baa 70 ; ld (hl), b | 0bab 21 a1 40 ; ld hl, 0x40a1 | 0bae 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 0bb1 3c ; inc a | 0bb2 e6 fe ; and 0xfe | 0bb4 fe 06 ; cp 0x6 | 0bb6 28 0b ; jr z, 0xbc3 | 0bb8 3a 1b 10 ; ld a, (0x101b) | 0bbb fe c3 ; cp 0xc3 | 0bbd ca 1b 10 ; jp z, 0x101b | 0bc0 c3 00 00 ; jp 0x0 | 0bc3 7e ; ld a, (hl) | 0bc4 72 ; ld (hl), d | 0bc5 fe fe ; cp 0xfe | 0bc7 d0 ; ret nc | 0bc8 47 ; ld b, a | 0bc9 21 00 4d ; ld hl, 0x4d00 | 0bcc bc ; cp h | 0bcd 38 06 ; jr c, 0xbd5 | 0bcf ed 44 ; neg | 0bd1 c6 99 ; add a, 0x99 | 0bd3 47 ; ld b, a | 0bd4 2c ; inc l | 0bd5 7a ; ld a, d | 0bd6 bc ; cp h | 0bd7 38 07 ; jr c, 0xbe0 | 0bd9 ed 44 ; neg | 0bdb c6 99 ; add a, 0x99 | 0bdd 57 ; ld d, a | 0bde cb fd ; set 0x7, l | 0be0 7d ; ld a, l | 0be1 b7 ; or a | 0be2 28 18 ; jr z, 0xbfc | 0be4 fe 81 ; cp 0x81 | 0be6 28 14 ; jr z, 0xbfc | 0be8 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 0beb 67 ; ld h, a | 0bec 3e 80 ; ld a, 0x80 | 0bee 07 ; rlca | 0bef 25 ; dec h | 0bf0 20 fc ; jr nz, 0xbee | 0bf2 cb 85 ; res 0x0, l | 0bf4 b5 ; or l | 0bf5 d3 1a ; out (0x1a), a | 0bf7 2e 02 ; ld l, 0x2 | 0bf9 cd 2c 0c ; call 0xc2c | 0bfc 78 ; ld a, b | 0bfd 92 ; sub d | 0bfe 47 ; ld b, a | 0bff c8 ; ret z | 0c00 0e 00 ; ld c, 0x0 | 0c02 30 05 ; jr nc, 0xc09 | 0c04 0e 40 ; ld c, 0x40 | 0c06 ed 44 ; neg | 0c08 47 ; ld b, a | 0c09 79 ; ld a, c | 0c0a b7 ; or a | 0c0b 20 09 ; jr nz, 0xc16 | 0c0d db 1a ; in a, (0x1a) | 0c0f e6 10 ; and 0x10 | 0c11 28 03 ; jr z, 0xc16 | 0c13 01 40 03 ; ld bc, 0x340 | 0c16 3e 20 ; ld a, 0x20 | 0c18 b1 ; or c | 0c19 d3 1b ; out (0x1b), a | 0c1b 79 ; ld a, c | 0c1c d3 1b ; out (0x1b), a | 0c1e 2e d5 ; ld l, 0xd5 | 0c20 cd 2c 0c ; call 0xc2c | 0c23 cd 2c 0c ; call 0xc2c | 0c26 05 ; dec b | 0c27 20 e0 ; jr nz, 0xc09 | 0c29 2e 9d ; ld l, 0x9d | 0c2b 04 ; inc b | 0c2c db 19 ; in a, (0x19) | 0c2e 2d ; dec l | 0c2f db 19 ; in a, (0x19) | 0c31 c8 ; ret z | 0c32 18 f8 ; jr 0xc2c | 0c34 21 9d 40 ; ld hl, 0x409d | 0c37 36 0a ; ld (hl), 0xa | 0c39 fb ; ei | 0c3a dd 6e 00 ; ld l, (ix + 0x0) | 0c3d dd 66 01 ; ld h, (ix + 0x1) | 0c40 dd 7e 0e ; ld a, (ix + 0xe) | 0c43 dd 46 10 ; ld b, (ix + 0x10) | 0c46 05 ; dec b | 0c47 2f ; cpl | 0c48 3c ; inc a | 0c49 5f ; ld e, a | 0c4a 16 ff ; ld d, 0xff | 0c4c 78 ; ld a, b | 0c4d 19 ; add hl, de | 0c4e 3c ; inc a | 0c4f 38 fc ; jr c, 0xc4d | 0c51 57 ; ld d, a | 0c52 7d ; ld a, l | 0c53 93 ; sub e | 0c54 5f ; ld e, a | 0c55 cd 7a 0b ; call 0xb7a | 0c58 21 a1 40 ; ld hl, 0x40a1 | 0c5b 56 ; ld d, (hl) | 0c5c 28 2f ; jr z, 0xc8d | 0c5e 2e 9d ; ld l, 0x9d | 0c60 cd 2c 0c ; call 0xc2c | 0c63 21 00 80 ; ld hl, 0x8000 | 0c66 0e 1a ; ld c, 0x1a | 0c68 2d ; dec l | 0c69 28 0b ; jr z, 0xc76 | 0c6b ed 40 ; in b, (c) | 0c6d f2 68 0c ; jp p, 0xc68 | 0c70 db 19 ; in a, (0x19) | 0c72 d6 9b ; sub 0x9b | 0c74 28 17 ; jr z, 0xc8d | 0c76 25 ; dec h | 0c77 20 ef ; jr nz, 0xc68 | 0c79 21 9d 40 ; ld hl, 0x409d | 0c7c 35 ; dec (hl) | 0c7d 01 00 01 ; ld bc, 0x100 | 0c80 28 3a ; jr z, 0xcbc | 0c82 db 1a ; in a, (0x1a) | 0c84 e6 10 ; and 0x10 | 0c86 20 34 ; jr nz, 0xcbc | 0c88 cd 09 0c ; call 0xc09 | 0c8b 18 d1 ; jr 0xc5e | 0c8d 7b ; ld a, e | 0c8e dd 6e 0e ; ld l, (ix + 0xe) | 0c91 bd ; cp l | 0c92 30 a5 ; jr nc, 0xc39 | 0c94 21 00 08 ; ld hl, 0x800 | 0c97 0e 1a ; ld c, 0x1a | 0c99 f3 ; di | 0c9a db 1a ; in a, (0x1a) | 0c9c ed 78 ; in a, (c) | 0c9e f2 9c 0c ; jp p, 0xc9c | 0ca1 db 19 ; in a, (0x19) | 0ca3 fe 9e ; cp 0x9e | 0ca5 20 0f ; jr nz, 0xcb6 | 0ca7 db 19 ; in a, (0x19) | 0ca9 ba ; cp d | 0caa 20 14 ; jr nz, 0xcc0 | 0cac db 19 ; in a, (0x19) | 0cae bb ; cp e | 0caf 20 05 ; jr nz, 0xcb6 | 0cb1 db 19 ; in a, (0x19) | 0cb3 93 ; sub e | 0cb4 92 ; sub d | 0cb5 c8 ; ret z | 0cb6 fb ; ei | 0cb7 2b ; dec hl | 0cb8 7d ; ld a, l | 0cb9 b4 ; or h | 0cba 20 dd ; jr nz, 0xc99 | 0cbc 3e 01 ; ld a, 0x1 | 0cbe b7 ; or a | 0cbf c9 ; ret | 0cc0 4f ; ld c, a | 0cc1 db 19 ; in a, (0x19) | 0cc3 47 ; ld b, a | 0cc4 db 19 ; in a, (0x19) | 0cc6 91 ; sub c | 0cc7 90 ; sub b | 0cc8 41 ; ld b, c | 0cc9 0e 1a ; ld c, 0x1a | 0ccb 20 cc ; jr nz, 0xc99 | 0ccd db 19 ; in a, (0x19) | 0ccf fe 10 ; cp 0x10 | 0cd1 20 c6 ; jr nz, 0xc99 | 0cd3 78 ; ld a, b | 0cd4 32 a1 40 ; ld (0x40a1), a | set TRKS (track # for drive 1) = a 0cd7 21 9d 40 ; ld hl, 0x409d | 0cda 35 ; dec (hl) | 0cdb 28 df ; jr z, 0xcbc | 0cdd c3 39 0c ; jp 0xc39 | 0ce0 01 0a 00 ; ld bc, 0xa | 0ce3 54 ; ld d, h | 0ce4 5d ; ld e, l | 0ce5 09 ; add hl, bc | 0ce6 eb ; ex de, hl | 0ce7 7e ; ld a, (hl) | 0ce8 36 00 ; ld (hl), 0x0 | 0cea 12 ; ld (de), a | 0ceb 23 ; inc hl | 0cec 13 ; inc de | 0ced 7e ; ld a, (hl) | 0cee 36 00 ; ld (hl), 0x0 | 0cf0 12 ; ld (de), a | 0cf1 13 ; inc de | 0cf2 13 ; inc de | 0cf3 13 ; inc de | 0cf4 13 ; inc de | 0cf5 1a ; ld a, (de) | 0cf6 32 ad 40 ; ld (0x40ad), a | set Disk # = a 0cf9 cd e1 0f ; call 0xfe1 | 0cfc 12 ; ld (de), a | 0cfd 11 02 00 ; ld de, 0x2 | 0d00 01 9e 40 ; ld bc, 0x409e | 0d03 02 ; ld (bc), a | 0d04 03 ; inc bc | 0d05 02 ; ld (bc), a | 0d06 0b ; dec bc | 0d07 3e 08 ; ld a, 0x8 | 0d09 e5 ; push hl | 0d0a 23 ; inc hl | 0d0b cd 09 08 ; call 0x809 | 0d0e e1 ; pop hl | 0d0f 20 09 ; jr nz, 0xd1a | 0d11 2b ; dec hl | 0d12 3e 01 ; ld a, 0x1 | 0d14 11 14 00 ; ld de, 0x14 | 0d17 cc 03 08 ; call z, 0x803 | 0d1a 01 df 0d ; ld bc, 0xddf | 0d1d c9 ; ret | ;loader() 0d1e 21 d0 40 ; ld hl, 0x40d0 | loader() - hl = FD for loaded file 0d21 cd 30 08 ; call 0x830 | call OPEN 0d24 c0 ; ret nz | 0d25 3a da 40 ; ld a, (0x40da) | get a = Number of Records (LFILE) 0d28 4f ; ld c, a | 0d29 06 01 ; ld b, 0x1 | 0d2b 78 ; ld a, b | 0d2c b9 ; cp c | 0d2d 30 34 ; jr nc, 0xd63 | 0d2f 21 d0 40 ; ld hl, 0x40d0 | hl = Record # 0d32 70 ; ld (hl), b | 0d33 04 ; inc b | 0d34 04 ; inc b | 0d35 11 ff 00 ; ld de, 0xff | 0d38 c5 ; push bc | 0d39 01 d0 40 ; ld bc, 0x40d0 | 0d3c 21 00 42 ; ld hl, 0x4200 | 0d3f 3e 01 ; ld a, 0x1 | Read 1 record 0d41 cd 00 08 ; call 0x800 | call READ 0d44 e1 ; pop hl | 0d45 c0 ; ret nz | 0d46 e5 ; push hl | 0d47 21 ff 42 ; ld hl, 0x42ff | 0d4a 77 ; ld (hl), a | 0d4b 2c ; inc l | 0d4c c1 ; pop bc | 0d4d 7e ; ld a, (hl) | 0d4e b7 ; or a | 0d4f 28 da ; jr z, 0xd2b | 0d51 c5 ; push bc | 0d52 23 ; inc hl | 0d53 5e ; ld e, (hl) | 0d54 23 ; inc hl | 0d55 56 ; ld d, (hl) | 0d56 23 ; inc hl | 0d57 4e ; ld c, (hl) | 0d58 0c ; inc c | 0d59 0d ; dec c | 0d5a 23 ; inc hl | 0d5b 28 ef ; jr z, 0xd4c | 0d5d 06 00 ; ld b, 0x0 | 0d5f ed b0 ; ldir | 0d61 18 e9 ; jr 0xd4c | 0d63 3e 01 ; ld a, 0x1 | 0d65 a0 ; and b | 0d66 c8 ; ret z | 0d67 06 00 ; ld b, 0x0 | 0d69 18 c0 ; jr 0xd2b | ;clrdk() 0d6b 21 8b 0d ; ld hl, 0xd8b | 0d6e 11 fa 13 ; ld de, 0x13fa | 0d71 06 03 ; ld b, 0x3 | 0d73 1a ; ld a, (de) | 0d74 be ; cp (hl) | check if "IWS" version 0d75 20 07 ; jr nz, 0xd7e | 0d77 23 ; inc hl | 0d78 13 ; inc de | 0d79 10 f8 ; djnz 0xd73 | 0d7b cd 15 10 ; call 0x1015 | call IWS specific code ;deselect all disks() 0d7e 97 ; sub a | 0d7f 32 a0 40 ; ld (0x40a0), a | set DISK (selected disk drive #) = a 0d82 d3 1b ; out (0x1b), a | 0d84 d3 0b ; out (0xb), a | 0d86 d3 1a ; out (0x1a), a | 0d88 d3 0a ; out (0xa), a | 0d8a c9 ; ret | ;text string? - IWS 0d8b 49 ; ld c, c | 0d8c 57 ; ld d, a | 0d8d 53 ; ld d, e | ;report() 0d8e c5 ; push bc | 0d8f f5 ; push af | 0d90 cd 6b 0d ; call 0xd6b | clrdk() 0d93 21 ec 0d ; ld hl, 0xdec | 0d96 0e 01 ; ld c, 0x1 | 0d98 cd 27 00 ; call 0x27 | print "CR?" 0d9b f1 ; pop af | 0d9c fe 04 ; cp 0x4 | 0x4 = Key not found 0d9e 28 33 ; jr z, 0xdd3 | 0da0 fe 09 ; cp 0x9 | 0da2 fa a7 0d ; jp m, 0xda7 | 0da5 3e 09 ; ld a, 0x9 | ;print nth error message 0da7 21 ed 0d ; ld hl, 0xded | Start of error messages 0daa 4e ; ld c, (hl) | 0dab cb 79 ; bit 0x7, c | Message separators have Bit 7 set 0dad 23 ; inc hl | 0dae 28 fa ; jr z, 0xdaa | 0db0 3d ; dec a | 0db1 20 f7 ; jr nz, 0xdaa | 0db3 cb b9 ; res 0x7, c | 0db5 cd 27 00 ; call 0x27 | print: "NOT FOUND" 0db8 0e 04 ; ld c, 0x4 | 0dba 21 e8 0d ; ld hl, 0xde8 | string: " ON " 0dbd cd 27 00 ; call 0x27 | print: " ON" 0dc0 0e 08 ; ld c, 0x8 | 0dc2 e1 ; pop hl | 0dc3 23 ; inc hl | 0dc4 23 ; inc hl | 0dc5 cd 27 00 ; call 0x27 | print: "INDEX" 0dc8 cd 30 00 ; call 0x30 | STOP 0dcb 0e 01 ; ld c, 0x1 | 0dcd 21 ec 0d ; ld hl, 0xdec | 0dd0 c3 27 00 ; jp 0x27 | 0dd3 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 0dd6 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 0dd9 4f ; ld c, a | 0dda cd 27 00 ; call 0x27 | 0ddd 3e 04 ; ld a, 0x4 | A=4 - fourth err msg: "NOT FOUND" 0ddf 18 c6 ; jr 0xda7 | ;text strings - INDEX .. WEIRD ERR 0de1 49 ; ld c, c | 0de2 4e ; ld c, (hl) | 0de3 44 ; ld b, h | 0de4 45 ; ld b, l | 0de5 58 ; ld e, b | 0de6 20 20 ; jr nz, 0xe08 | 0de8 20 4f ; jr nz, 0xe39 | 0dea 4e ; ld c, (hl) | 0deb 20 0d ; jr nz, 0xdfa | 0ded 8a ; adc a, d | 0dee 46 ; ld b, (hl) | 0def 4f ; ld c, a | 0df0 52 ; ld d, d | 0df1 4d ; ld c, l | 0df2 41 ; ld b, c | 0df3 54 ; ld d, h | 0df4 20 45 ; jr nz, 0xe3b | 0df6 52 ; ld d, d | 0df7 52 ; ld d, d | 0df8 88 ; adc a, b | 0df9 52 ; ld d, d | 0dfa 45 ; ld b, l | 0dfb 41 ; ld b, c | 0dfc 44 ; ld b, h | 0dfd 20 45 ; jr nz, 0xe44 | 0dff 52 ; ld d, d | 0e00 52 ; ld d, d | 0e01 89 ; adc a, c | 0e02 57 ; ld d, a | 0e03 52 ; ld d, d | 0e04 49 ; ld c, c | 0e05 54 ; ld d, h | 0e06 45 ; ld b, l | 0e07 20 45 ; jr nz, 0xe4e | 0e09 52 ; ld d, d | 0e0a 52 ; ld d, d | 0e0b 8a ; adc a, d | 0e0c 20 4e ; jr nz, 0xe5c | 0e0e 4f ; ld c, a | 0e0f 54 ; ld d, h | 0e10 20 46 ; jr nz, 0xe58 | 0e12 4f ; ld c, a | 0e13 55 ; ld d, l | 0e14 4e ; ld c, (hl) | 0e15 44 ; ld b, h | 0e16 87 ; add a, a | 0e17 4e ; ld c, (hl) | 0e18 4f ; ld c, a | 0e19 20 44 ; jr nz, 0xe5f | 0e1b 49 ; ld c, c | 0e1c 53 ; ld d, e | 0e1d 4b ; ld c, e | 0e1e 8a ; adc a, d | 0e1f 50 ; ld d, b | 0e20 41 ; ld b, c | 0e21 53 ; ld d, e | 0e22 53 ; ld d, e | 0e23 45 ; ld b, l | 0e24 44 ; ld b, h | 0e25 20 45 ; jr nz, 0xe6c | 0e27 4f ; ld c, a | 0e28 46 ; ld b, (hl) | 0e29 8d ; adc a, l | 0e2a 57 ; ld d, a | 0e2b 52 ; ld d, d | 0e2c 49 ; ld c, c | 0e2d 54 ; ld d, h | 0e2e 45 ; ld b, l | 0e2f 20 50 ; jr nz, 0xe81 | 0e31 52 ; ld d, d | 0e32 4f ; ld c, a | 0e33 54 ; ld d, h | 0e34 45 ; ld b, l | 0e35 43 ; ld b, e | 0e36 54 ; ld d, h | 0e37 8d ; adc a, l | 0e38 44 ; ld b, h | 0e39 41 ; ld b, c | 0e3a 54 ; ld d, h | 0e3b 41 ; ld b, c | 0e3c 20 4c ; jr nz, 0xe8a | 0e3e 49 ; ld c, c | 0e3f 4e ; ld c, (hl) | 0e40 4b ; ld c, e | 0e41 20 45 ; jr nz, 0xe88 | 0e43 52 ; ld d, d | 0e44 52 ; ld d, d | 0e45 89 ; adc a, c | 0e46 57 ; ld d, a | 0e47 45 ; ld b, l | 0e48 49 ; ld c, c | 0e49 52 ; ld d, d | 0e4a 44 ; ld b, h | 0e4b 20 45 ; jr nz, 0xe92 | 0e4d 52 ; ld d, d | 0e4e 52 ; ld d, d | ;key search() 0e4f cd b8 0f ; call 0xfb8 | 0e52 c3 09 10 ; jp 0x1009 | 0e55 e5 ; push hl | 0e56 d5 ; push de | 0e57 cd f0 0a ; call 0xaf0 | 0e5a d1 ; pop de | 0e5b e1 ; pop hl | 0e5c c0 ; ret nz | 0e5d 22 4a 42 ; ld (0x424a), hl | 0e60 dd 7e 0a ; ld a, (ix + 0xa) | 0e63 dd b6 0b ; or (ix + 0xb) | 0e66 ca 98 0f ; jp z, 0xf98 | 0e69 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 0e6c b7 ; or a | 0e6d 28 f7 ; jr z, 0xe66 | 0e6f 4f ; ld c, a | 0e70 06 00 ; ld b, 0x0 | 0e72 09 ; add hl, bc | 0e73 22 20 42 ; ld (0x4220), hl | 0e76 47 ; ld b, a | 0e77 3e 9b ; ld a, 0x9b | 0e79 2b ; dec hl | 0e7a 86 ; add a, (hl) | 0e7b 10 fc ; djnz 0xe79 | 0e7d 08 ; ex af, af' | 0e7e c5 ; push bc | 0e7f e1 ; pop hl | 0e80 19 ; add hl, de | 0e81 dd 7e 0c ; ld a, (ix + 0xc) | 0e84 95 ; sub l | 0e85 6f ; ld l, a | 0e86 dd 7e 0d ; ld a, (ix + 0xd) | 0e89 9c ; sbc a, h | 0e8a da 98 0f ; jp c, 0xf98 | 0e8d 08 ; ex af, af' | 0e8e 67 ; ld h, a | 0e8f 22 50 42 ; ld (0x4250), hl | 0e92 08 ; ex af, af' | 0e93 67 ; ld h, a | 0e94 b5 ; or l | 0e95 2b ; dec hl | 0e96 7c ; ld a, h | 0e97 21 5b 0f ; ld hl, 0xf5b | 0e9a 28 09 ; jr z, 0xea5 | 0e9c b7 ; or a | 0e9d 21 55 0f ; ld hl, 0xf55 | 0ea0 28 03 ; jr z, 0xea5 | 0ea2 21 50 0f ; ld hl, 0xf50 | 0ea5 e5 ; push hl | 0ea6 fd e1 ; pop iy | 0ea8 63 ; ld h, e | 0ea9 2e 1a ; ld l, 0x1a | 0eab 22 52 42 ; ld (0x4252), hl | 0eae 61 ; ld h, c | 0eaf 2d ; dec l | 0eb0 22 4c 42 ; ld (0x424c), hl | 0eb3 7a ; ld a, d | 0eb4 b3 ; or e | 0eb5 21 33 0f ; ld hl, 0xf33 | 0eb8 28 0b ; jr z, 0xec5 | 0eba 1b ; dec de | 0ebb 7a ; ld a, d | 0ebc b7 ; or a | 0ebd 21 2d 0f ; ld hl, 0xf2d | 0ec0 28 03 ; jr z, 0xec5 | 0ec2 21 28 0f ; ld hl, 0xf28 | 0ec5 22 4e 42 ; ld (0x424e), hl | 0ec8 21 46 0f ; ld hl, 0xf46 | 0ecb 22 54 42 ; ld (0x4254), hl | 0ece cd aa 0f ; call 0xfaa | 0ed1 dd 6e 00 ; ld l, (ix + 0x0) | 0ed4 dd 66 01 ; ld h, (ix + 0x1) | 0ed7 22 48 42 ; ld (0x4248), hl | 0eda 1e ff ; ld e, 0xff | 0edc 3e 24 ; ld a, 0x24 | 0ede 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 0ee1 cd 8d 0c ; call 0xc8d | 0ee4 20 2b ; jr nz, 0xf11 | 0ee6 d5 ; push de | 0ee7 16 00 ; ld d, 0x0 | 0ee9 ed 73 a2 40 ; ld (0x40a2), sp | set TRKS (track # for drive 2) = sp 0eed 31 4a 42 ; ld sp, 0x424a | 0ef0 e1 ; pop hl | 0ef1 c1 ; pop bc | 0ef2 d9 ; exx | 0ef3 e1 ; pop hl | 0ef4 d1 ; pop de | 0ef5 7a ; ld a, d | 0ef6 08 ; ex af, af' | 0ef7 c1 ; pop bc | 0ef8 ed 78 ; in a, (c) | 0efa ed 78 ; in a, (c) | 0efc f2 fa 0e ; jp p, 0xefa | 0eff 0d ; dec c | 0f00 ed 78 ; in a, (c) | 0f02 fe 9b ; cp 0x9b | 0f04 20 02 ; jr nz, 0xf08 | 0f06 08 ; ex af, af' | 0f07 e9 ; jp (hl) | 0f08 ed 7b a2 40 ; ld sp, (0x40a2) | get sp = TRKS (track # for drive 2) 0f0c 3e 02 ; ld a, 0x2 | 0f0e d1 ; pop de | 0f0f 18 04 ; jr 0xf15 | 0f11 1e ff ; ld e, 0xff | 0f13 3e 01 ; ld a, 0x1 | 0f15 21 9d 40 ; ld hl, 0x409d | 0f18 35 ; dec (hl) | 0f19 20 c6 ; jr nz, 0xee1 | 0f1b 2a 48 42 ; ld hl, (0x4248) | 0f1e dd 75 00 ; ld (ix + 0x0), l | 0f21 dd 74 01 ; ld (ix + 0x1), h | 0f24 b7 ; or a | 0f25 c3 45 09 ; jp 0x945 | 0f28 ed 50 ; in d, (c) | 0f2a 82 ; add a, d | 0f2b 10 fb ; djnz 0xf28 | 0f2d ed 50 ; in d, (c) | 0f2f 82 ; add a, d | 0f30 10 fb ; djnz 0xf2d | 0f32 57 ; ld d, a | 0f33 43 ; ld b, e | 0f34 d9 ; exx | 0f35 db 19 ; in a, (0x19) | 0f37 96 ; sub (hl) | 0f38 c0 ; ret nz | 0f39 23 ; inc hl | 0f3a 10 f9 ; djnz 0xf35 | 0f3c d9 ; exx | 0f3d db 19 ; in a, (0x19) | 0f3f fd e9 ; jp (iy) | 0f41 ed 50 ; in d, (c) | 0f43 23 ; inc hl | 0f44 96 ; sub (hl) | 0f45 82 ; add a, d | 0f46 10 f9 ; djnz 0xf41 | 0f48 47 ; ld b, a | 0f49 db 19 ; in a, (0x19) | 0f4b d9 ; exx | 0f4c fd e9 ; jp (iy) | 0f4e ed 50 ; in d, (c) | 0f50 82 ; add a, d | 0f51 10 fb ; djnz 0xf4e | 0f53 ed 50 ; in d, (c) | 0f55 82 ; add a, d | 0f56 10 fb ; djnz 0xf53 | 0f58 57 ; ld d, a | 0f59 db 19 ; in a, (0x19) | 0f5b 92 ; sub d | 0f5c d9 ; exx | 0f5d 90 ; sub b | 0f5e 20 a8 ; jr nz, 0xf08 | 0f60 db 19 ; in a, (0x19) | 0f62 fe 10 ; cp 0x10 | 0f64 20 a2 ; jr nz, 0xf08 | 0f66 eb ; ex de, hl | 0f67 2a 20 42 ; ld hl, (0x4220) | 0f6a ed 52 ; sbc hl, de | 0f6c ed 7b a2 40 ; ld sp, (0x40a2) | get sp = TRKS (track # for drive 2) 0f70 d1 ; pop de | 0f71 c2 77 0f ; jp nz, 0xf77 | 0f74 97 ; sub a | 0f75 18 30 ; jr 0xfa7 | 0f77 1c ; inc e | 0f78 dd 34 00 ; inc (ix + 0x0) | 0f7b c2 81 0f ; jp nz, 0xf81 | 0f7e dd 34 01 ; inc (ix + 0x1) | 0f81 cd 67 0b ; call 0xb67 | 0f84 cc ae 0f ; call z, 0xfae | 0f87 2a 48 42 ; ld hl, (0x4248) | 0f8a 7d ; ld a, l | 0f8b dd be 00 ; cp (ix + 0x0) | 0f8e c2 dc 0e ; jp nz, 0xedc | 0f91 7c ; ld a, h | 0f92 dd 96 01 ; sub (ix + 0x1) | 0f95 c2 dc 0e ; jp nz, 0xedc | 0f98 dd 7e 0a ; ld a, (ix + 0xa) | 0f9b dd 77 00 ; ld (ix + 0x0), a | 0f9e dd 7e 0b ; ld a, (ix + 0xb) | 0fa1 dd 77 01 ; ld (ix + 0x1), a | 0fa4 3e 04 ; ld a, 0x4 | 0fa6 b7 ; or a | 0fa7 c3 45 09 ; jp 0x945 | 0faa cd 67 0b ; call 0xb67 | 0fad c0 ; ret nz | 0fae 97 ; sub a | 0faf dd 77 00 ; ld (ix + 0x0), a | 0fb2 dd 77 01 ; ld (ix + 0x1), a | 0fb5 1e ff ; ld e, 0xff | 0fb7 c9 ; ret | ;write() 0fb8 c5 ; push bc | 0fb9 dd e1 ; pop ix | 0fbb 08 ; ex af, af' | 0fbc 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 0fbf dd be 0f ; cp (ix + 0xf) | 0fc2 28 03 ; jr z, 0xfc7 | 0fc4 cd 7e 0d ; call 0xd7e | deselect disks 0fc7 3a 00 10 ; ld a, (0x1000) | 0fca 3c ; inc a | 0fcb ca da 0f ; jp z, 0xfda | jump to 0xfda if no ROM in addr 0x1000 0fce dd 7e 0f ; ld a, (ix + 0xf) | a = Disk # 0fd1 3c ; inc a | 0fd2 e6 fe ; and 0xfe | 0fd4 fe 06 ; cp 0x6 | max disk # reached ? 0fd6 28 02 ; jr z, 0xfda | 0fd8 08 ; ex af, af' | 0fd9 c9 ; ret | no, return ok? 0fda e3 ; ex (sp), hl | 0fdb 23 ; inc hl | 0fdc 23 ; inc hl | 0fdd 23 ; inc hl | 0fde e3 ; ex (sp), hl | 0fdf 08 ; ex af, af' | 0fe0 c9 ; ret | ;Setup disk: Records:88, Rec per Track: 130, Rec len 24 bytes 0fe1 d9 ; exx | 0fe2 3a ad 40 ; ld a, (0x40ad) | get a = Disk # 0fe5 3c ; inc a | 0fe6 e6 fe ; and 0xfe | 0fe8 fe 06 ; cp 0x6 | 0fea 21 58 00 ; ld hl, 0x58 | # records = 0x58 (88) 0fed 28 02 ; jr z, 0xff1 | 0fef 2e 82 ; ld l, 0x82 | Records per Track = 0x82 (130) 0ff1 22 a8 40 ; ld (0x40a8), hl | set Number of Records = hl 0ff4 7d ; ld a, l | 0ff5 32 ac 40 ; ld (0x40ac), a | set Records/Track = a 0ff8 2e 28 ; ld l, 0x28 | Record Length = 0x28 (24) 0ffa 22 aa 40 ; ld (0x40aa), hl | set Record Length = hl 0ffd 97 ; sub a | 0ffe d9 ; exx | 0fff c9 ; ret | ;UNEXPLORED 1000 c3 8d 10 ; jp 0x108d | ;write? 1003 c3 44 11 ; jp 0x1144 | ;UNEXPLORED 1006 c3 69 11 ; jp 0x1169 | ;key search jump vector 1009 c3 6b 16 ; jp 0x166b | ;UNEXPLORED 100c c3 30 10 ; jp 0x1030 | 100f c3 18 15 ; jp 0x1518 | 1012 c3 c8 14 ; jp 0x14c8 | ;unknown IWS code jump vector 1015 c3 6a 15 ; jp 0x156a | 1018 c3 ac 15 ; jp 0x15ac | 101b c3 99 13 ; jp 0x1399 | 101e c3 1b 14 ; jp 0x141b | 1021 c3 2f 11 ; jp 0x112f | 1024 c3 3f 11 ; jp 0x113f | 1027 c3 25 13 ; jp 0x1325 | 102a c3 44 13 ; jp 0x1344 | 102d c3 51 13 ; jp 0x1351 | 1030 97 ; sub a | 1031 32 ad 40 ; ld (0x40ad), a | set Disk # = a 1034 3e 80 ; ld a, 0x80 | 1036 32 13 42 ; ld (0x4213), a | 1039 e5 ; push hl | 103a 3a a5 40 ; ld a, (0x40a5) | get a = AD (access denined) 103d 2f ; cpl | 103e 47 ; ld b, a | 103f 21 13 42 ; ld hl, 0x4213 | 1042 7e ; ld a, (hl) | 1043 07 ; rlca | 1044 77 ; ld (hl), a | 1045 21 ad 40 ; ld hl, 0x40ad | 1048 34 ; inc (hl) | 1049 a0 ; and b | 104a e1 ; pop hl | 104b 28 2e ; jr z, 0x107b | 104d e5 ; push hl | 104e 11 02 00 ; ld de, 0x2 | 1051 01 9f 40 ; ld bc, 0x409f | 1054 97 ; sub a | 1055 02 ; ld (bc), a | 1056 0b ; dec bc | 1057 02 ; ld (bc), a | 1058 3e 08 ; ld a, 0x8 | 105a 23 ; inc hl | 105b 23 ; inc hl | 105c cd 09 10 ; call 0x1009 | 105f e1 ; pop hl | 1060 c2 7b 10 ; jp nz, 0x107b | 1063 11 18 00 ; ld de, 0x18 | 1066 3e 01 ; ld a, 0x1 | 1068 cd 00 10 ; call 0x1000 | 106b 21 ad 40 ; ld hl, 0x40ad | 106e 46 ; ld b, (hl) | 106f 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 1072 11 0f 00 ; ld de, 0xf | 1075 19 ; add hl, de | 1076 70 ; ld (hl), b | 1077 01 03 16 ; ld bc, 0x1603 | 107a c9 ; ret | 107b e5 ; push hl | 107c 21 13 42 ; ld hl, 0x4213 | 107f 7e ; ld a, (hl) | 1080 fe 80 ; cp 0x80 | 1082 fa 3a 10 ; jp m, 0x103a | 1085 3e 04 ; ld a, 0x4 | 1087 b7 ; or a | 1088 e1 ; pop hl | 1089 01 03 16 ; ld bc, 0x1603 | 108c c9 ; ret | 108d cd de 12 ; call 0x12de | 1090 c0 ; ret nz | 1091 21 9d 40 ; ld hl, 0x409d | 1094 36 20 ; ld (hl), 0x20 | set ERC (error count) to 32 1096 cd 44 13 ; call 0x1344 | 1099 cd c1 12 ; call 0x12c1 | 109c cd 25 13 ; call 0x1325 | 109f 1e ff ; ld e, 0xff | 10a1 cd 51 13 ; call 0x1351 | 10a4 ca 2f 11 ; jp z, 0x112f | 10a7 cd 75 14 ; call 0x1475 | 10aa c2 2f 11 ; jp nz, 0x112f | 10ad 3a b8 40 ; ld a, (0x40b8) | get a = PART2 unused length 10b0 3c ; inc a | 10b1 47 ; ld b, a | 10b2 0e 09 ; ld c, 0x9 | 10b4 d9 ; exx | 10b5 2a b6 40 ; ld hl, (0x40b6) | get hl = PART1 (length to be transferred) 10b8 7c ; ld a, h | 10b9 1f ; rra | 10ba 7d ; ld a, l | 10bb 1f ; rra | 10bc 47 ; ld b, a | 10bd 21 e7 10 ; ld hl, 0x10e7 | 10c0 30 04 ; jr nc, 0x10c6 | 10c2 21 ed 10 ; ld hl, 0x10ed | 10c5 04 ; inc b | 10c6 e5 ; push hl | 10c7 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 10ca 2b ; dec hl | 10cb 56 ; ld d, (hl) | 10cc db 0a ; in a, (0xa) | 10ce 0e 0a ; ld c, 0xa | 10d0 ed 78 ; in a, (c) | 10d2 f2 d0 10 ; jp p, 0x10d0 | 10d5 0d ; dec c | 10d6 db 09 ; in a, (0x9) | 10d8 fe 9b ; cp 0x9b | 10da c8 ; ret z | 10db e1 ; pop hl | 10dc 21 9d 40 ; ld hl, 0x409d | 10df 3e 02 ; ld a, 0x2 | 10e1 35 ; dec (hl) | 10e2 28 4b ; jr z, 0x112f | 10e4 18 b9 ; jr 0x109f | 10e6 23 ; inc hl | 10e7 ed 58 ; in e, (c) | 10e9 72 ; ld (hl), d | 10ea 23 ; inc hl | 10eb 73 ; ld (hl), e | 10ec 83 ; add a, e | 10ed ed 50 ; in d, (c) | 10ef 82 ; add a, d | 10f0 05 ; dec b | 10f1 20 f3 ; jr nz, 0x10e6 | 10f3 d9 ; exx | 10f4 ed 68 ; in l, (c) | 10f6 85 ; add a, l | 10f7 05 ; dec b | 10f8 20 fa ; jr nz, 0x10f4 | 10fa 95 ; sub l | 10fb bd ; cp l | 10fc db 09 ; in a, (0x9) | 10fe 20 dc ; jr nz, 0x10dc | 1100 d9 ; exx | 1101 23 ; inc hl | 1102 72 ; ld (hl), d | 1103 fe 10 ; cp 0x10 | is end of record? 1105 20 d5 ; jr nz, 0x10dc | 1107 07 ; rlca | 1108 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 110b 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 110e eb ; ex de, hl | 110f 2a 20 42 ; ld hl, (0x4220) | 1112 19 ; add hl, de | 1113 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 1116 d9 ; exx | 1117 dd 34 00 ; inc (ix + 0x0) | 111a 20 03 ; jr nz, 0x111f | 111c dd 34 01 ; inc (ix + 0x1) | 111f 3e 20 ; ld a, 0x20 | 1121 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 1124 97 ; sub a | 1125 21 9c 40 ; ld hl, 0x409c | 1128 1c ; inc e | 1129 35 ; dec (hl) | 112a c2 a1 10 ; jp nz, 0x10a1 | 112d 18 10 ; jr 0x113f | jump to return of (unknown) disk function ;increment current record number (and return) 112f dd 34 00 ; inc (ix + 0x0) | 1132 20 03 ; jr nz, 0x1137 | 1134 dd 34 01 ; inc (ix + 0x1) | 1137 21 9c 40 ; ld hl, 0x409c | 113a 35 ; dec (hl) | 113b c2 2f 11 ; jp nz, 0x112f | 113e b7 ; or a | ;return from (unknown) disk function 113f fb ; ei | 1140 dd e5 ; push ix | 1142 c1 ; pop bc | 1143 c9 ; ret | ;write?? 1144 cd de 12 ; call 0x12de | 1147 c0 ; ret nz | 1148 cd 44 13 ; call 0x1344 | 114b cd c1 12 ; call 0x12c1 | 114e dd 5e 0e ; ld e, (ix + 0xe) | 1151 16 00 ; ld d, 0x0 | 1153 dd 7e 10 ; ld a, (ix + 0x10) | 1156 dd 96 12 ; sub (ix + 0x12) | 1159 21 00 00 ; ld hl, 0x0 | 115c 3d ; dec a | 115d 19 ; add hl, de | 115e 3c ; inc a | 115f 20 fc ; jr nz, 0x115d | 1161 dd 75 0a ; ld (ix + 0xa), l | 1164 dd 74 0b ; ld (ix + 0xb), h | 1167 18 07 ; jr 0x1170 | 1169 cd de 12 ; call 0x12de | 116c c0 ; ret nz | 116d cd c1 12 ; call 0x12c1 | 1170 21 9d 40 ; ld hl, 0x409d | 1173 36 20 ; ld (hl), 0x20 | 1175 dd 7e 13 ; ld a, (ix + 0x13) | 1178 b7 ; or a | 1179 3e 07 ; ld a, 0x7 | 117b fa 2f 11 ; jp m, 0x112f | 117e 21 29 42 ; ld hl, 0x4229 | 1181 77 ; ld (hl), a | 1182 21 22 42 ; ld hl, 0x4222 | 1185 36 00 ; ld (hl), 0x0 | 1187 22 24 42 ; ld (0x4224), hl | 118a cd 25 13 ; call 0x1325 | 118d 1e ff ; ld e, 0xff | 118f cd 51 13 ; call 0x1351 | 1192 28 57 ; jr z, 0x11eb | 1194 cd 75 14 ; call 0x1475 | 1197 20 96 ; jr nz, 0x112f | 1199 db 09 ; in a, (0x9) | 119b 3e 80 ; ld a, 0x80 | 119d d3 0b ; out (0xb), a | 119f d9 ; exx | 11a0 2a b6 40 ; ld hl, (0x40b6) | get hl = PART1 (length to be transferred) 11a3 db 09 ; in a, (0x9) | 11a5 eb ; ex de, hl | 11a6 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 11a9 db 09 ; in a, (0x9) | 11ab 1b ; dec de | 11ac 7a ; ld a, d | 11ad 13 ; inc de | 11ae 0f ; rrca | 11af db 09 ; in a, (0x9) | 11b1 3a b8 40 ; ld a, (0x40b8) | get a = PART2 unused length 11b4 57 ; ld d, a | 11b5 db 09 ; in a, (0x9) | 11b7 14 ; inc d | 11b8 01 09 00 ; ld bc, 0x9 | 11bb db 09 ; in a, (0x9) | 11bd 3e 9b ; ld a, 0x9b | 11bf d3 09 ; out (0x9), a | write Data Record identifier 0x9b 11c1 d2 b6 12 ; jp nc, 0x12b6 | 11c4 86 ; add a, (hl) | 11c5 ed a3 ; outi | write (hl+i) to disk, i = 0 to b 11c7 20 fb ; jr nz, 0x11c4 | 11c9 43 ; ld b, e | 11ca 86 ; add a, (hl) | 11cb ed a3 ; outi | write (hl+i) to disk, i = 0 to b 11cd 20 fb ; jr nz, 0x11ca | 11cf 15 ; dec d | 11d0 28 05 ; jr z, 0x11d7 | 11d2 ed 41 ; out (c), b | write checksum 11d4 15 ; dec d | 11d5 20 fb ; jr nz, 0x11d2 | 11d7 d3 09 ; out (0x9), a | 11d9 2a 24 42 ; ld hl, (0x4224) | 11dc 16 10 ; ld d, 0x10 | write end of record terminator 0x10 11de ed 51 ; out (c), d | 11e0 86 ; add a, (hl) | 11e1 77 ; ld (hl), a | 11e2 af ; xor a | 11e3 d3 09 ; out (0x9), a | 11e5 00 ; nop | 11e6 00 ; nop | 11e7 d3 09 ; out (0x9), a | 11e9 d3 0b ; out (0xb), a | 11eb 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 11ee eb ; ex de, hl | 11ef 2a 20 42 ; ld hl, (0x4220) | 11f2 19 ; add hl, de | 11f3 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 11f6 d9 ; exx | 11f7 1c ; inc e | 11f8 dd 34 00 ; inc (ix + 0x0) | 11fb 20 03 ; jr nz, 0x1200 | 11fd dd 34 01 ; inc (ix + 0x1) | 1200 21 9b 40 ; ld hl, 0x409b | 1203 35 ; dec (hl) | 1204 20 89 ; jr nz, 0x118f | 1206 23 ; inc hl | 1207 7e ; ld a, (hl) | 1208 ed 44 ; neg | 120a dd 86 00 ; add a, (ix + 0x0) | 120d dd 77 00 ; ld (ix + 0x0), a | 1210 38 03 ; jr c, 0x1215 | 1212 dd 35 01 ; dec (ix + 0x1) | 1215 1e ff ; ld e, 0xff | 1217 3e 23 ; ld a, 0x23 | 1219 32 24 42 ; ld (0x4224), a | 121c cd 51 13 ; call 0x1351 | 121f ca 2f 11 ; jp z, 0x112f | 1222 cd 75 14 ; call 0x1475 | 1225 c2 2f 11 ; jp nz, 0x112f | 1228 db 09 ; in a, (0x9) | 122a dd 6e 0c ; ld l, (ix + 0xc) | 122d dd 66 0d ; ld h, (ix + 0xd) | 1230 2c ; inc l | 1231 25 ; dec h | 1232 28 03 ; jr z, 0x1237 | 1234 2d ; dec l | 1235 26 01 ; ld h, 0x1 | 1237 01 09 00 ; ld bc, 0x9 | 123a db 0a ; in a, (0xa) | 123c db 0a ; in a, (0xa) | 123e b7 ; or a | 123f f2 3c 12 ; jp p, 0x123c | 1242 db 09 ; in a, (0x9) | 1244 80 ; add a, b | 1245 ed 40 ; in b, (c) | 1247 2d ; dec l | 1248 20 fa ; jr nz, 0x1244 | 124a 80 ; add a, b | 124b ed 40 ; in b, (c) | 124d 25 ; dec h | 124e 20 fa ; jr nz, 0x124a | 1250 b8 ; cp b | 1251 db 09 ; in a, (0x9) | 1253 20 49 ; jr nz, 0x129e | 1255 fe 10 ; cp 0x10 | 1257 20 45 ; jr nz, 0x129e | 1259 3a 22 42 ; ld a, (0x4222) | 125c 90 ; sub b | 125d 32 22 42 ; ld (0x4222), a | 1260 21 9d 40 ; ld hl, 0x409d | 1263 36 14 ; ld (hl), 0x14 | 1265 2a 20 42 ; ld hl, (0x4220) | 1268 44 ; ld b, h | 1269 4d ; ld c, l | 126a 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 126d 09 ; add hl, bc | 126e 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 1271 1c ; inc e | 1272 dd 34 00 ; inc (ix + 0x0) | 1275 20 03 ; jr nz, 0x127a | 1277 dd 34 01 ; inc (ix + 0x1) | 127a 21 9c 40 ; ld hl, 0x409c | 127d 35 ; dec (hl) | 127e 20 9c ; jr nz, 0x121c | 1280 3a 22 42 ; ld a, (0x4222) | 1283 b7 ; or a | 1284 ca 3f 11 ; jp z, 0x113f | ;unknown (disk?) function 1285 3f ; ccf | 1286 11 21 29 ; ld de, 0x2921 | 1289 42 ; ld b, d | 128a 35 ; dec (hl) | 128b 3e 03 ; ld a, 0x3 | 128d 28 15 ; jr z, 0x12a4 | 128f 2a 26 42 ; ld hl, (0x4226) | 1292 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 1295 3a 28 42 ; ld a, (0x4228) | 1298 32 9c 40 ; ld (0x409c), a | set SNRT (# recs to be transfd) = a 129b c3 82 11 ; jp 0x1182 | 129e 3e 03 ; ld a, 0x3 | 12a0 21 9d 40 ; ld hl, 0x409d | 12a3 35 ; dec (hl) | 12a4 ca 2f 11 ; jp z, 0x112f | 12a7 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 12aa 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 12ad 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 12b0 32 9b 40 ; ld (0x409b), a | set NRT (disk record count) = a 12b3 c3 8d 11 ; jp 0x118d | 12b6 86 ; add a, (hl) | 12b7 ed a3 ; outi | 12b9 43 ; ld b, e | 12ba 05 ; dec b | 12bb 86 ; add a, (hl) | 12bc ed a3 ; outi | 12be c3 ca 11 ; jp 0x11ca | ;Set PART1 and PART2 12c1 dd 4e 0c ; ld c, (ix + 0xc) | bc = record length 12c4 dd 46 0d ; ld b, (ix + 0xd) | 12c7 7b ; ld a, e | 12c8 2f ; cpl | 12c9 6f ; ld l, a | 12ca 7a ; ld a, d | 12cb 2f ; cpl | 12cc 67 ; ld h, a | 12cd 09 ; add hl, bc | 12ce 23 ; inc hl | 12cf 38 05 ; jr c, 0x12d6 | 12d1 50 ; ld d, b | 12d2 59 ; ld e, c | 12d3 21 00 00 ; ld hl, 0x0 | 12d6 22 b8 40 ; ld (0x40b8), hl | set PART2 unused length = hl 12d9 eb ; ex de, hl | 12da 22 b6 40 ; ld (0x40b6), hl | set PART1 (length to be transferred) = hl 12dd c9 ; ret | ;Select disk, wait for drive/data ready 12de 22 99 40 ; ld (0x4099), hl | set THERE (addr for disk transfer) = hl 12e1 32 9c 40 ; ld (0x409c), a | set SNRT (# recs to be transfd) = a 12e4 6b ; ld l, e | 12e5 62 ; ld h, d | 12e6 22 20 42 ; ld (0x4220), hl | Store INDEX (curr rec no on index) 12e9 dd 6e 0f ; ld l, (ix + 0xf) | get l = disk# on INDEX 12ec 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 12ef bd ; cp l | 12f0 28 27 ; jr z, 0x1319 | 12f2 3e 80 ; ld a, 0x80 | 12f4 65 ; ld h, l | 12f5 07 ; rlca | 12f6 2d ; dec l | 12f7 20 fc ; jr nz, 0x12f5 | 12f9 6c ; ld l, h | 12fa 67 ; ld h, a | 12fb d3 0a ; out (0xa), a | 12fd db 0a ; in a, (0xa) | 12ff 0f ; rrca | 1300 38 e7 ; jr c, 0x12e9 | 1302 7c ; ld a, h | 1303 d3 0a ; out (0xa), a | select disk 1305 7d ; ld a, l | 1306 32 a0 40 ; ld (0x40a0), a | set DISK (selected disk drive #) = a 1309 3e ff ; ld a, 0xff | 130b 32 a1 40 ; ld (0x40a1), a | set TRKS (track # for drive 1) = a 130e 2e 24 ; ld l, 0x24 | Skip 143 bytes (track 0) 1310 cd 0e 14 ; call 0x140e | 1313 cd 0e 14 ; call 0x140e | Skip 1023 bytes (track 0) 1316 cd 0e 14 ; call 0x140e | Skip 1023 bytes (track 0) 1319 db 0a ; in a, (0xa) | get disk status 131b e6 40 ; and 0x40 | check if disk is ready 131d 28 02 ; jr z, 0x1321 | goto error return 131f 97 ; sub a | 1320 c9 ; ret | return OK 1321 3e 05 ; ld a, 0x5 | 1323 b7 ; or a | 1324 c9 ; ret | return error # 5 (inferred) ;Copy rec before last to ROS INDEX 1325 dd 7e 16 ; ld a, (ix + 0x16) | rec before last 1328 dd 77 00 ; ld (ix + 0x0), a | 132b dd 7e 17 ; ld a, (ix + 0x17) | 132e dd 77 01 ; ld (ix + 0x1), a | set current record number on INDEX 1331 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 1334 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 1337 22 26 42 ; ld (0x4226), hl | 133a 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 133d 32 9b 40 ; ld (0x409b), a | set NRT (disk record count) = a 1340 32 28 42 ; ld (0x4228), a | 1343 c9 ; ret | ;Adjust last record number??? 1344 dd 7e 00 ; ld a, (ix + 0x0) | copy record number (hi+lo) to last reordnumber on INDEX FD 1347 dd 77 16 ; ld (ix + 0x16), a | 134a dd 7e 01 ; ld a, (ix + 0x1) | 134d dd 77 17 ; ld (ix + 0x17), a | 1350 c9 ; ret | ;Compare ROS INDEX with INDEX FD??? 1351 dd 7e 01 ; ld a, (ix + 0x1) | get a = current record # on INDEX (LO) 1354 dd be 0b ; cp (ix + 0xb) | compare with same (LO) on INDEX FD 1357 c2 60 13 ; jp nz, 0x1360 | 135a dd 7e 00 ; ld a, (ix + 0x0) | compare with same (HI) on INDEX FD 135d dd be 0a ; cp (ix + 0xa) | 1360 d8 ; ret c | 1361 97 ; sub a | 1362 3e 06 ; ld a, 0x6 | 1364 c9 ; ret | ;Search for valid ID Record 1365 d5 ; push de | 1366 0e 0a ; ld c, 0xa | 1368 21 10 27 ; ld hl, 0x2710 | test for disk ready h*l times (0x27 * 0x10) 136b f3 ; di | 136c ed 78 ; in a, (c) | 136e ed 78 ; in a, (c) | 1370 fa 82 13 ; jp m, 0x1382 | 1373 2d ; dec l | 1374 20 f8 ; jr nz, 0x136e | 1376 ed 78 ; in a, (c) | 1378 fa 82 13 ; jp m, 0x1382 | 137b 25 ; dec h | 137c 20 f0 ; jr nz, 0x136e | 137e fb ; ei | 137f d1 ; pop de | 1380 3c ; inc a | 1381 c9 ; ret | drive was not ready for a while 1382 db 09 ; in a, (0x9) | read byte (ID record) 1384 fe 9e ; cp 0x9e | check if ID record (0x9e) 1386 20 e4 ; jr nz, 0x136c | 1388 0d ; dec c | 1389 ed 40 ; in b, (c) | get b = Track 138b ed 48 ; in c, (c) | get c = Sector 138d db 09 ; in a, (0x9) | get a = check sum 138f 90 ; sub b | 1390 91 ; sub c | 1391 20 d9 ; jr nz, 0x136c | bad cksum, find next ID record 1393 fb ; ei | ID Record, read with good cksum 1394 21 a1 40 ; ld hl, 0x40a1 | 1397 70 ; ld (hl), b | store track# for current record 1398 d1 ; pop de | 1399 21 a1 40 ; ld hl, 0x40a1 | Track # for drive 1 139c 7e ; ld a, (hl) | 139d 72 ; ld (hl), d | 139e fe fe ; cp 0xfe | check for ?? end of tracks or not index track 13a0 d0 ; ret nc | 13a1 47 ; ld b, a | 13a2 21 00 4d ; ld hl, 0x4d00 | 13a5 bc ; cp h | 13a6 38 06 ; jr c, 0x13ae | 13a8 ed 44 ; neg | 13aa c6 99 ; add a, 0x99 | 13ac 47 ; ld b, a | 13ad 2c ; inc l | 13ae 7a ; ld a, d | 13af bc ; cp h | 13b0 38 07 ; jr c, 0x13b9 | 13b2 ed 44 ; neg | 13b4 c6 99 ; add a, 0x99 | 13b6 57 ; ld d, a | 13b7 cb fd ; set 0x7, l | 13b9 7d ; ld a, l | 13ba b7 ; or a | 13bb 28 18 ; jr z, 0x13d5 | 13bd fe 81 ; cp 0x81 | 13bf 28 14 ; jr z, 0x13d5 | 13c1 3a a0 40 ; ld a, (0x40a0) | get a = DISK (selected disk drive #) 13c4 67 ; ld h, a | 13c5 3e 80 ; ld a, 0x80 | 13c7 07 ; rlca | 13c8 25 ; dec h | 13c9 20 fc ; jr nz, 0x13c7 | 13cb cb 85 ; res 0x0, l | 13cd b5 ; or l | 13ce d3 0a ; out (0xa), a | select drive (and side) 13d0 2e 05 ; ld l, 0x5 | 13d2 cd 0e 14 ; call 0x140e | skip 23 bytes 13d5 78 ; ld a, b | 13d6 92 ; sub d | 13d7 47 ; ld b, a | 13d8 c8 ; ret z | 13d9 0e 00 ; ld c, 0x0 | 13db 30 05 ; jr nc, 0x13e2 | 13dd 0e 40 ; ld c, 0x40 | step direction UP 13df ed 44 ; neg | 13e1 47 ; ld b, a | 13e2 79 ; ld a, c | 13e3 b7 ; or a | 13e4 20 06 ; jr nz, 0x13ec | 13e6 db 0a ; in a, (0xa) | 13e8 e6 10 ; and 0x10 | check if at Track 0 13ea 20 1d ; jr nz, 0x1409 | 13ec 3e 20 ; ld a, 0x20 | Track step bit 13ee b1 ; or c | 13ef d3 0b ; out (0xb), a | 13f1 79 ; ld a, c | 13f2 d3 0b ; out (0xb), a | 13f4 2e 30 ; ld l, 0x30 | Skip 191 bytes 13f6 cd 0e 14 ; call 0x140e | 13f9 db 0a ; in a, (0xa) | 13fb e6 02 ; and 0x2 | Double density? 13fd 20 05 ; jr nz, 0x1404 | 13ff 2e 4d ; ld l, 0x4d | Skip 307 bytes 1401 cd 0e 14 ; call 0x140e | 1404 05 ; dec b | 1405 20 db ; jr nz, 0x13e2 | 1407 04 ; inc b | 1408 c9 ; ret | 1409 01 40 03 ; ld bc, 0x340 | 140c 18 de ; jr 0x13ec | step to next track ;skip 4*l + 3 bytes 140e db 09 ; in a, (0x9) | read byte from disk 1410 00 ; nop | 1411 db 09 ; in a, (0x9) | read byte from disk 1413 2d ; dec l | 1414 db 09 ; in a, (0x9) | read byte from disk 1416 c8 ; ret z | 1417 db 09 ; in a, (0x9) | read byte from disk 1419 18 f3 ; jr 0x140e | ;UNEXPLORED 141b 21 9d 40 ; ld hl, 0x409d | 141e 36 0a ; ld (hl), 0xa | set ERC to 10 1420 fb ; ei | 1421 dd 5e 00 ; ld e, (ix + 0x0) | record number (HI) from INDEX FD 1424 dd 56 01 ; ld d, (ix + 0x1) | record number (LO) from INDEX FD 1427 dd 7e 0e ; ld a, (ix + 0xe) | 142a dd 46 10 ; ld b, (ix + 0x10) | first track (HI) ? 142d 05 ; dec b | 142e 2f ; cpl | 142f 3c ; inc a | 1430 6f ; ld l, a | 1431 26 ff ; ld h, 0xff | 1433 eb ; ex de, hl | 1434 78 ; ld a, b | 1435 19 ; add hl, de | 1436 3c ; inc a | 1437 38 fc ; jr c, 0x1435 | 1439 57 ; ld d, a | 143a 7d ; ld a, l | 143b 93 ; sub e | 143c 5f ; ld e, a | 143d cd 65 13 ; call 0x1365 | 1440 21 a1 40 ; ld hl, 0x40a1 | 1443 56 ; ld d, (hl) | 1444 28 2f ; jr z, 0x1475 | 1446 2e 46 ; ld l, 0x46 | Skip 279 bytes 1448 cd 0e 14 ; call 0x140e | 144b 21 00 80 ; ld hl, 0x8000 | 144e 0e 0a ; ld c, 0xa | 1450 2d ; dec l | 1451 28 0b ; jr z, 0x145e | 1453 ed 40 ; in b, (c) | 1455 f2 50 14 ; jp p, 0x1450 | 1458 db 09 ; in a, (0x9) | 145a d6 9b ; sub 0x9b | Data Record (0x9b) 145c 28 17 ; jr z, 0x1475 | 145e 25 ; dec h | 145f 20 ef ; jr nz, 0x1450 | 1461 21 9d 40 ; ld hl, 0x409d | No Data Record found after 128 reads 1464 35 ; dec (hl) | 1465 01 00 01 ; ld bc, 0x100 | 1468 28 3a ; jr z, 0x14a4 | 146a db 0a ; in a, (0xa) | get disk status 146c e6 10 ; and 0x10 | track 0 selected 146e 20 34 ; jr nz, 0x14a4 | 1470 cd e2 13 ; call 0x13e2 | 1473 18 d1 ; jr 0x1446 | ;UNEXPLORED 1475 7b ; ld a, e | 1476 dd 6e 0e ; ld l, (ix + 0xe) | Track/Record 1479 bd ; cp l | 147a 30 a4 ; jr nc, 0x1420 | ;search for INDEX file? 147c 21 00 08 ; ld hl, 0x800 | 147f 0e 0a ; ld c, 0xa | 1481 f3 ; di | 1482 db 0a ; in a, (0xa) | get disk status 1484 ed 78 ; in a, (c) | 1486 f2 84 14 ; jp p, 0x1484 | 1489 db 09 ; in a, (0x9) | read byte (ID record) from disk 148b fe 9e ; cp 0x9e | check if ID record (0x9e) 148d 20 0f ; jr nz, 0x149e | 148f db 09 ; in a, (0x9) | read byte (TRACK#) from disk 1491 ba ; cp d | 1492 20 14 ; jr nz, 0x14a8 | 1494 db 09 ; in a, (0x9) | read byte (SECTOR#) from disk 1496 bb ; cp e | 1497 20 05 ; jr nz, 0x149e | 1499 db 09 ; in a, (0x9) | read byte (CHECK SUM) from disk 149b 93 ; sub e | 149c 92 ; sub d | 149d c8 ; ret z | return if checksum good 149e fb ; ei | 149f 2b ; dec hl | 14a0 7d ; ld a, l | 14a1 b4 ; or h | 14a2 20 dd ; jr nz, 0x1481 | 14a4 3e 01 ; ld a, 0x1 | return error code 1? 14a6 b7 ; or a | 14a7 c9 ; ret | ;UNEXPLORED 14a8 4f ; ld c, a | 14a9 db 09 ; in a, (0x9) | read byte from disk 14ab 47 ; ld b, a | 14ac db 09 ; in a, (0x9) | read byte from disk 14ae 91 ; sub c | 14af 90 ; sub b | 14b0 41 ; ld b, c | 14b1 0e 0a ; ld c, 0xa | 14b3 20 cc ; jr nz, 0x1481 | checksum good if a = 0 14b5 db 09 ; in a, (0x9) | 14b7 fe 10 ; cp 0x10 | end of record marker 14b9 20 c6 ; jr nz, 0x1481 | 14bb 78 ; ld a, b | 14bc 32 a1 40 ; ld (0x40a1), a | set TRKS (track # for drive 1) = a 14bf 21 9d 40 ; ld hl, 0x409d | 14c2 35 ; dec (hl) | 14c3 28 df ; jr z, 0x14a4 | 14c5 c3 20 14 ; jp 0x1420 | 14c8 01 0a 00 ; ld bc, 0xa | 14cb 54 ; ld d, h | 14cc 5d ; ld e, l | 14cd 09 ; add hl, bc | 14ce eb ; ex de, hl | 14cf 7e ; ld a, (hl) | 14d0 36 00 ; ld (hl), 0x0 | 14d2 12 ; ld (de), a | 14d3 23 ; inc hl | 14d4 13 ; inc de | 14d5 7e ; ld a, (hl) | 14d6 36 00 ; ld (hl), 0x0 | 14d8 12 ; ld (de), a | 14d9 13 ; inc de | 14da 13 ; inc de | 14db 13 ; inc de | 14dc 13 ; inc de | 14dd 1a ; ld a, (de) | 14de 32 ad 40 ; ld (0x40ad), a | set Disk # = a 14e1 fe 07 ; cp 0x7 | 14e3 fa f0 14 ; jp m, 0x14f0 | 14e6 28 04 ; jr z, 0x14ec | 14e8 fe 08 ; cp 0x8 | 14ea 20 04 ; jr nz, 0x14f0 | 14ec 3e 7a ; ld a, 0x7a | 14ee 18 02 ; jr 0x14f2 | 14f0 3e 82 ; ld a, 0x82 | 14f2 32 ac 40 ; ld (0x40ac), a | set Records/Track = a 14f5 97 ; sub a | 14f6 12 ; ld (de), a | 14f7 11 02 00 ; ld de, 0x2 | 14fa 01 9e 40 ; ld bc, 0x409e | 14fd 02 ; ld (bc), a | 14fe 03 ; inc bc | 14ff 02 ; ld (bc), a | 1500 0b ; dec bc | 1501 3e 08 ; ld a, 0x8 | 1503 e5 ; push hl | 1504 23 ; inc hl | 1505 cd 09 10 ; call 0x1009 | 1508 e1 ; pop hl | 1509 20 09 ; jr nz, 0x1514 | 150b 2b ; dec hl | 150c 3e 01 ; ld a, 0x1 | 150e 11 14 00 ; ld de, 0x14 | 1511 cc 03 10 ; call z, 0x1003 | 1514 01 03 16 ; ld bc, 0x1603 | 1517 c9 ; ret | 1518 21 d0 40 ; ld hl, 0x40d0 | 151b cd 30 10 ; call 0x1030 | 151e c0 ; ret nz | 151f 06 03 ; ld b, 0x3 | 1521 3a da 40 ; ld a, (0x40da) | get a = Number of Records (LFILE) 1524 4f ; ld c, a | 1525 78 ; ld a, b | 1526 b9 ; cp c | 1527 30 37 ; jr nc, 0x1560 | 1529 21 d0 40 ; ld hl, 0x40d0 | 152c 70 ; ld (hl), b | 152d 04 ; inc b | 152e 04 ; inc b | 152f 04 ; inc b | 1530 04 ; inc b | 1531 11 ff 00 ; ld de, 0xff | 1534 c5 ; push bc | 1535 01 d0 40 ; ld bc, 0x40d0 | 1538 21 00 42 ; ld hl, 0x4200 | 153b 3e 01 ; ld a, 0x1 | 153d cd 00 10 ; call 0x1000 | 1540 e1 ; pop hl | 1541 c0 ; ret nz | 1542 e5 ; push hl | 1543 21 ff 42 ; ld hl, 0x42ff | 1546 36 00 ; ld (hl), 0x0 | 1548 2c ; inc l | 1549 c1 ; pop bc | 154a 7e ; ld a, (hl) | 154b b7 ; or a | 154c 28 d3 ; jr z, 0x1521 | 154e c5 ; push bc | 154f 23 ; inc hl | 1550 5e ; ld e, (hl) | 1551 23 ; inc hl | 1552 56 ; ld d, (hl) | 1553 23 ; inc hl | 1554 4e ; ld c, (hl) | 1555 0c ; inc c | 1556 0d ; dec c | 1557 23 ; inc hl | 1558 28 ef ; jr z, 0x1549 | 155a 06 00 ; ld b, 0x0 | 155c ed b0 ; ldir | 155e 18 e9 ; jr 0x1549 | 1560 3e 03 ; ld a, 0x3 | 1562 a0 ; and b | 1563 3d ; dec a | 1564 fe ff ; cp 0xff | 1566 c8 ; ret z | 1567 47 ; ld b, a | 1568 18 b7 ; jr 0x1521 | ;unknown IWS function i 156a 97 ; sub a | 156b d3 0b ; out (0xb), a | 156d 32 a0 40 ; ld (0x40a0), a | set DISK (selected disk drive #) = a 1570 3e 00 ; ld a, 0x0 | 1572 d3 0a ; out (0xa), a | 1574 21 a8 40 ; ld hl, 0x40a8 | 1577 3e 82 ; ld a, 0x82 | 1579 77 ; ld (hl), a | 157a 23 ; inc hl | 157b 23 ; inc hl | 157c 36 28 ; ld (hl), 0x28 | 157e 23 ; inc hl | 157f 23 ; inc hl | 1580 77 ; ld (hl), a | 1581 cd 94 15 ; call 0x1594 | 1584 ca 37 14 ; jp z, 0x1437 | 1587 cd 9c 15 ; call 0x159c | 158a ca 15 10 ; jp z, 0x1015 | 158d c9 ; ret | ;UNEXPLORED 158e 4d ; ld c, l | 158f 55 ; ld d, l | 1590 58 ; ld e, b | 1591 49 ; ld c, c | 1592 57 ; ld d, a | 1593 53 ; ld d, e | ;unknown IWS function ii 1594 21 8e 15 ; ld hl, 0x158e | 1597 11 fa 17 ; ld de, 0x17fa | 159a 18 06 ; jr 0x15a2 | 159c 21 91 15 ; ld hl, 0x1591 | 159f 11 31 14 ; ld de, 0x1431 | 15a2 06 03 ; ld b, 0x3 | 15a4 1a ; ld a, (de) | 15a5 be ; cp (hl) | 15a6 c0 ; ret nz | 15a7 23 ; inc hl | 15a8 13 ; inc de | 15a9 10 f9 ; djnz 0x15a4 | 15ab c9 ; ret | ;unknown IWS functions 15ac c5 ; push bc | 15ad f5 ; push af | 15ae cd 6a 15 ; call 0x156a | 15b1 21 10 16 ; ld hl, 0x1610 | 15b4 0e 01 ; ld c, 0x1 | 15b6 cd 27 00 ; call 0x27 | 15b9 f1 ; pop af | 15ba fe 04 ; cp 0x4 | 15bc 28 39 ; jr z, 0x15f7 | 15be fe 09 ; cp 0x9 | 15c0 fa c5 15 ; jp m, 0x15c5 | 15c3 3e 09 ; ld a, 0x9 | 15c5 21 11 16 ; ld hl, 0x1611 | error text "FORMAT ERR" 15c8 4e ; ld c, (hl) | 15c9 cb 79 ; bit 0x7, c | 15cb 23 ; inc hl | 15cc 28 fa ; jr z, 0x15c8 | 15ce 3d ; dec a | 15cf 20 f7 ; jr nz, 0x15c8 | 15d1 cb b9 ; res 0x7, c | 15d3 cd 27 00 ; call 0x27 | call DISPLAY 15d6 0e 04 ; ld c, 0x4 | 15d8 21 0c 16 ; ld hl, 0x160c | error text "ON" 15db cd 27 00 ; call 0x27 | call DISPLAY 15de 0e 08 ; ld c, 0x8 | 15e0 e1 ; pop hl | 15e1 23 ; inc hl | 15e2 23 ; inc hl | 15e3 cd 27 00 ; call 0x27 | call DISPLAY 15e6 cd 94 15 ; call 0x1594 | 15e9 ca 37 14 ; jp z, 0x1437 | 15ec cd 30 00 ; call 0x30 | call STOP 15ef 0e 01 ; ld c, 0x1 | 15f1 21 10 16 ; ld hl, 0x1610 | 15f4 c3 27 00 ; jp 0x27 | 15f7 2a 99 40 ; ld hl, (0x4099) | get hl = THERE (addr for disk transfer) 15fa 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 15fd 4f ; ld c, a | 15fe cd 27 00 ; call 0x27 | call DISPLAY 1601 3e 04 ; ld a, 0x4 | 1603 18 c0 ; jr 0x15c5 | ;ASCI CHARS ERROR MESSAGES 1605 49 ; ld c, c | 1606 4e ; ld c, (hl) | 1607 44 ; ld b, h | 1608 45 ; ld b, l | 1609 58 ; ld e, b | 160a 20 20 ; jr nz, 0x162c | 160c 20 4f ; jr nz, 0x165d | 160e 4e ; ld c, (hl) | 160f 20 0d ; jr nz, 0x161e | 1611 8a ; adc a, d | 1612 46 ; ld b, (hl) | 1613 4f ; ld c, a | 1614 52 ; ld d, d | 1615 4d ; ld c, l | 1616 41 ; ld b, c | 1617 54 ; ld d, h | 1618 20 45 ; jr nz, 0x165f | 161a 52 ; ld d, d | 161b 52 ; ld d, d | 161c 02 ; ld (bc), a | 161d 89 ; adc a, c | 161e 57 ; ld d, a | 161f 52 ; ld d, d | 1620 49 ; ld c, c | 1621 54 ; ld d, h | 1622 45 ; ld b, l | 1623 20 45 ; jr nz, 0x166a | 1625 52 ; ld d, d | 1626 52 ; ld d, d | 1627 8a ; adc a, d | 1628 20 4e ; jr nz, 0x1678 | 162a 4f ; ld c, a | 162b 54 ; ld d, h | 162c 20 46 ; jr nz, 0x1674 | 162e 4f ; ld c, a | 162f 55 ; ld d, l | 1630 4e ; ld c, (hl) | 1631 44 ; ld b, h | 1632 87 ; add a, a | 1633 4e ; ld c, (hl) | 1634 4f ; ld c, a | 1635 20 44 ; jr nz, 0x167b | 1637 49 ; ld c, c | 1638 53 ; ld d, e | 1639 4b ; ld c, e | 163a 8a ; adc a, d | 163b 50 ; ld d, b | 163c 41 ; ld b, c | 163d 53 ; ld d, e | 163e 53 ; ld d, e | 163f 45 ; ld b, l | 1640 44 ; ld b, h | 1641 20 45 ; jr nz, 0x1688 | 1643 4f ; ld c, a | 1644 46 ; ld b, (hl) | 1645 8d ; adc a, l | 1646 57 ; ld d, a | 1647 52 ; ld d, d | 1648 49 ; ld c, c | 1649 54 ; ld d, h | 164a 45 ; ld b, l | 164b 20 50 ; jr nz, 0x169d | 164d 52 ; ld d, d | 164e 4f ; ld c, a | 164f 54 ; ld d, h | 1650 45 ; ld b, l | 1651 43 ; ld b, e | 1652 54 ; ld d, h | 1653 8d ; adc a, l | 1654 44 ; ld b, h | 1655 41 ; ld b, c | 1656 54 ; ld d, h | 1657 41 ; ld b, c | 1658 20 4c ; jr nz, 0x16a6 | 165a 49 ; ld c, c | 165b 4e ; ld c, (hl) | 165c 4b ; ld c, e | 165d 20 45 ; jr nz, 0x16a4 | 165f 52 ; ld d, d | 1660 52 ; ld d, d | 1661 89 ; adc a, c | 1662 57 ; ld d, a | 1663 45 ; ld b, l | 1664 49 ; ld c, c | 1665 52 ; ld d, d | 1666 44 ; ld b, h | 1667 20 45 ; jr nz, 0x16ae | 1669 52 ; ld d, d | 166a 52 ; ld d, d | ;KEY ()? 166b e5 ; push hl | 166c d5 ; push de | 166d cd de 12 ; call 0x12de | 1670 d1 ; pop de | 1671 e1 ; pop hl | 1672 c0 ; ret nz | 1673 22 4a 42 ; ld (0x424a), hl | 1676 dd 7e 0a ; ld a, (ix + 0xa) | get a = # of records HI 1679 dd b6 0b ; or (ix + 0xb) | get a = # of records LO 167c ca b1 17 ; jp z, 0x17b1 | 167f 3a 9c 40 ; ld a, (0x409c) | get a = SNRT (# recs to be transfd) 1682 b7 ; or a | 1683 28 f7 ; jr z, 0x167c | 1685 4f ; ld c, a | 1686 06 00 ; ld b, 0x0 | 1688 09 ; add hl, bc | checksum on FILE FD? 1689 22 20 42 ; ld (0x4220), hl | 168c 47 ; ld b, a | 168d 3e 9b ; ld a, 0x9b | 168f 2b ; dec hl | 1690 86 ; add a, (hl) | checksum on filename (increment) 1691 10 fc ; djnz 0x168f | 1693 08 ; ex af, af' | 1694 c5 ; push bc | 1695 e1 ; pop hl | 1696 19 ; add hl, de | 1697 dd 7e 0c ; ld a, (ix + 0xc) | record len on INDEX FD (HI) 169a 95 ; sub l | 169b 6f ; ld l, a | 169c dd 7e 0d ; ld a, (ix + 0xd) | record len on INDEX FD (LO) 169f 9c ; sbc a, h | 16a0 da b1 17 ; jp c, 0x17b1 | 16a3 08 ; ex af, af' | 16a4 67 ; ld h, a | 16a5 22 50 42 ; ld (0x4250), hl | 16a8 08 ; ex af, af' | 16a9 67 ; ld h, a | 16aa b5 ; or l | 16ab 2b ; dec hl | 16ac 7c ; ld a, h | 16ad 21 74 17 ; ld hl, 0x1774 | 16b0 28 09 ; jr z, 0x16bb | 16b2 b7 ; or a | 16b3 21 6e 17 ; ld hl, 0x176e | 16b6 28 03 ; jr z, 0x16bb | 16b8 21 69 17 ; ld hl, 0x1769 | 16bb e5 ; push hl | 16bc fd e1 ; pop iy | 16be 63 ; ld h, e | 16bf 2e 0a ; ld l, 0xa | 16c1 22 52 42 ; ld (0x4252), hl | 16c4 61 ; ld h, c | 16c5 2d ; dec l | 16c6 22 4c 42 ; ld (0x424c), hl | 16c9 7a ; ld a, d | 16ca b3 ; or e | 16cb 21 4c 17 ; ld hl, 0x174c | 16ce 28 0b ; jr z, 0x16db | 16d0 1b ; dec de | 16d1 7a ; ld a, d | 16d2 b7 ; or a | 16d3 21 46 17 ; ld hl, 0x1746 | 16d6 28 03 ; jr z, 0x16db | 16d8 21 41 17 ; ld hl, 0x1741 | 16db 22 4e 42 ; ld (0x424e), hl | 16de 21 5f 17 ; ld hl, 0x175f | 16e1 22 54 42 ; ld (0x4254), hl | 16e4 cd c3 17 ; call 0x17c3 | 16e7 dd 6e 00 ; ld l, (ix + 0x0) | hl = current record number 16ea dd 66 01 ; ld h, (ix + 0x1) | 16ed 22 48 42 ; ld (0x4248), hl | 16f0 1e ff ; ld e, 0xff | 16f2 3e 24 ; ld a, 0x24 | 16f4 32 9d 40 ; ld (0x409d), a | set ERC (disk error count) = a 16f7 cd 75 14 ; call 0x1475 | 16fa 20 2e ; jr nz, 0x172a | 16fc d5 ; push de | 16fd 21 00 00 ; ld hl, 0x0 | 1700 54 ; ld d, h | 1701 39 ; add hl, sp | 1702 22 a2 40 ; ld (0x40a2), hl | set TRKS (track # for drive 2) = hl 1705 21 4a 42 ; ld hl, 0x424a | 1708 f9 ; ld sp, hl | 1709 e1 ; pop hl | 170a c1 ; pop bc | 170b d9 ; exx | 170c e1 ; pop hl | 170d d1 ; pop de | 170e 7a ; ld a, d | 170f 08 ; ex af, af' | 1710 c1 ; pop bc | 1711 ed 78 ; in a, (c) | 1713 ed 78 ; in a, (c) | 1715 f2 13 17 ; jp p, 0x1713 | 1718 0d ; dec c | 1719 ed 78 ; in a, (c) | 171b fe 9b ; cp 0x9b | 171d 20 02 ; jr nz, 0x1721 | 171f 08 ; ex af, af' | 1720 e9 ; jp (hl) | 1721 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 1724 f9 ; ld sp, hl | 1725 3e 02 ; ld a, 0x2 | 1727 d1 ; pop de | 1728 18 04 ; jr 0x172e | 172a 1e ff ; ld e, 0xff | 172c 3e 01 ; ld a, 0x1 | 172e 21 9d 40 ; ld hl, 0x409d | hl = addr of ERC (disk error count) 1731 35 ; dec (hl) | 1732 20 c3 ; jr nz, 0x16f7 | 1734 2a 48 42 ; ld hl, (0x4248) | 1737 dd 75 00 ; ld (ix + 0x0), l | 173a dd 74 01 ; ld (ix + 0x1), h | 173d b7 ; or a | 173e c3 3f 11 ; jp 0x113f | 1741 ed 50 ; in d, (c) | 1743 82 ; add a, d | 1744 10 fb ; djnz 0x1741 | 1746 ed 50 ; in d, (c) | 1748 82 ; add a, d | 1749 10 fb ; djnz 0x1746 | 174b 57 ; ld d, a | 174c 43 ; ld b, e | 174d d9 ; exx | 174e db 09 ; in a, (0x9) | 1750 96 ; sub (hl) | 1751 c0 ; ret nz | 1752 23 ; inc hl | 1753 10 f9 ; djnz 0x174e | 1755 d9 ; exx | filename match on record 1756 db 09 ; in a, (0x9) | 1758 fd e9 ; jp (iy) | 175a ed 50 ; in d, (c) | 175c 23 ; inc hl | 175d 96 ; sub (hl) | 175e 82 ; add a, d | 175f 10 f9 ; djnz 0x175a | 1761 47 ; ld b, a | 1762 db 09 ; in a, (0x9) | 1764 d9 ; exx | 1765 fd e9 ; jp (iy) | 1767 ed 50 ; in d, (c) | 1769 82 ; add a, d | 176a 10 fb ; djnz 0x1767 | 176c ed 50 ; in d, (c) | 176e 82 ; add a, d | 176f 10 fb ; djnz 0x176c | 1771 57 ; ld d, a | 1772 db 09 ; in a, (0x9) | 1774 92 ; sub d | 1775 d9 ; exx | 1776 90 ; sub b | 1777 20 a8 ; jr nz, 0x1721 | 1779 db 09 ; in a, (0x9) | checksum good on data record 177b fe 10 ; cp 0x10 | end-of-record marker 177d 20 a2 ; jr nz, 0x1721 | 177f eb ; ex de, hl | 1780 2a 20 42 ; ld hl, (0x4220) | 1783 ed 52 ; sbc hl, de | 1785 2a a2 40 ; ld hl, (0x40a2) | get hl = TRKS (track # for drive 2) 1788 f9 ; ld sp, hl | 1789 d1 ; pop de | 178a c2 90 17 ; jp nz, 0x1790 | 178d 97 ; sub a | 178e 18 30 ; jr 0x17c0 | 1790 1c ; inc e | 1791 dd 34 00 ; inc (ix + 0x0) | 1794 c2 9a 17 ; jp nz, 0x179a | 1797 dd 34 01 ; inc (ix + 0x1) | 179a cd 51 13 ; call 0x1351 | 179d cc c7 17 ; call z, 0x17c7 | 17a0 2a 48 42 ; ld hl, (0x4248) | 17a3 7d ; ld a, l | 17a4 dd be 00 ; cp (ix + 0x0) | 17a7 c2 f2 16 ; jp nz, 0x16f2 | 17aa 7c ; ld a, h | 17ab dd 96 01 ; sub (ix + 0x1) | 17ae c2 f2 16 ; jp nz, 0x16f2 | 17b1 dd 7e 0a ; ld a, (ix + 0xa) | 17b4 dd 77 00 ; ld (ix + 0x0), a | 17b7 dd 7e 0b ; ld a, (ix + 0xb) | 17ba dd 77 01 ; ld (ix + 0x1), a | 17bd 3e 04 ; ld a, 0x4 | 17bf b7 ; or a | 17c0 c3 3f 11 ; jp 0x113f | 17c3 cd 51 13 ; call 0x1351 | 17c6 c0 ; ret nz | 17c7 97 ; sub a | 17c8 dd 77 00 ; ld (ix + 0x0), a | 17cb dd 77 01 ; ld (ix + 0x1), a | 17ce 1e ff ; ld e, 0xff | 17d0 c9 ; ret | 17d1 ff ; rst 0x38 | 17d2 ff ; rst 0x38 | 17d3 ff ; rst 0x38 | 17d4 ff ; rst 0x38 | 17d5 ff ; rst 0x38 | 17d6 ff ; rst 0x38 | 17d7 ff ; rst 0x38 | 17d8 ff ; rst 0x38 | 17d9 ff ; rst 0x38 | 17da ff ; rst 0x38 | 17db ff ; rst 0x38 | 17dc ff ; rst 0x38 | 17dd ff ; rst 0x38 | 17de ff ; rst 0x38 | 17df ff ; rst 0x38 | 17e0 ff ; rst 0x38 | 17e1 ff ; rst 0x38 | 17e2 ff ; rst 0x38 | 17e3 ff ; rst 0x38 | 17e4 ff ; rst 0x38 | 17e5 ff ; rst 0x38 | 17e6 ff ; rst 0x38 | 17e7 ff ; rst 0x38 | 17e8 ff ; rst 0x38 | 17e9 ff ; rst 0x38 | 17ea ff ; rst 0x38 | 17eb ff ; rst 0x38 | 17ec ff ; rst 0x38 | 17ed ff ; rst 0x38 | 17ee ff ; rst 0x38 | 17ef ff ; rst 0x38 | 17f0 ff ; rst 0x38 | 17f1 ff ; rst 0x38 | 17f2 ff ; rst 0x38 | 17f3 ff ; rst 0x38 | 17f4 ff ; rst 0x38 | 17f5 ff ; rst 0x38 | 17f6 ff ; rst 0x38 | 17f7 ff ; rst 0x38 | 17f8 ff ; rst 0x38 | 17f9 ff ; rst 0x38 | 17fa ff ; rst 0x38 | 17fb ff ; rst 0x38 | 17fc ff ; rst 0x38 | 17fd ff ; rst 0x38 | 17fe ff ; rst 0x38 | 17ff ff ; rst 0x38 | ;PL/1 jump vectors 1800 c3 ce 1c ; jp 0x1cce | PL/1 NORMY (ROS p.19) 1803 c3 78 18 ; jp 0x1878 | PL/1 GIN (ROS p.19) 1806 c3 53 1f ; jp 0x1f53 | PL/1 CLEAR (ROS p.19) 1809 c3 7c 18 ; jp 0x187c | PL/1 START (ROS p.19) ;PL/1 instruction vectors 180c 9d ; sbc a, l | 180d 18 fb ; jr 0x180a | 180f 1c ; inc e | 1810 cb 1d ; rr l | 1812 ac ; xor h | 1813 18 15 ; jr 0x182a | 1815 1d ; dec e | 1816 78 ; ld a, b | 1817 1d ; dec e | 1818 92 ; sub d | 1819 19 ; add hl, de | 181a 37 ; scf | 181b 1c ; inc e | 181c dd 1b ; dec de | 181e 12 ; ld (de), a | 181f 1c ; inc e | 1820 a5 ; and l | 1821 18 4d ; jr 0x1870 | 1823 1c ; inc e | 1824 b4 ; or h | 1825 18 be ; jr 0x17e5 | 1827 1d ; dec e | 1828 bb ; cp e | 1829 18 b3 ; jr 0x17de | 182b 1e c3 ; ld e, 0xc3 | 182d 18 24 ; jr 0x1853 | 182f 1e 2c ; ld e, 0x2c | 1831 1b ; dec de | 1832 38 1b ; jr c, 0x184f | 1834 44 ; ld b, h | 1835 1b ; dec de | 1836 cc 18 e8 ; call z, 0xe818 | 1839 1a ; ld a, (de) | 183a d7 ; rst 0x10 | 183b 1b ; dec de | 183c f1 ; pop af | 183d 1a ; ld a, (de) | 183e 20 1b ; jr nz, 0x185b | 1840 f5 ; push af | 1841 18 18 ; jr 0x185b | 1843 00 ; nop | 1844 34 ; inc (hl) | 1845 1d ; dec e | 1846 38 1d ; jr c, 0x1865 | 1848 fb ; ei | 1849 18 38 ; jr 0x1883 | 184b 19 ; add hl, de | 184c 61 ; ld h, c | 184d 1d ; dec e | 184e 42 ; ld b, d | 184f 1d ; dec e | 1850 c9 ; ret | 1851 1b ; dec de | 1852 4a ; ld c, d | 1853 19 ; add hl, de | 1854 39 ; add hl, sp | 1855 19 ; add hl, de | 1856 50 ; ld d, b | 1857 19 ; add hl, de | 1858 6b ; ld l, e | 1859 19 ; add hl, de | 185a 58 ; ld e, b | 185b 19 ; add hl, de | 185c 73 ; ld (hl), e | 185d 19 ; add hl, de | 185e db 19 ; in a, (0x19) | 1860 3f ; ccf | 1861 19 ; add hl, de | 1862 77 ; ld (hl), a | 1863 1b ; dec de | 1864 af ; xor a | 1865 1b ; dec de | 1866 bc ; cp h | 1867 1b ; dec de | 1868 4d ; ld c, l | 1869 1b ; dec de | 186a d0 ; ret nc | 186b 1b ; dec de | 186c db 1f ; in a, (0x1f) | 186e b9 ; cp c | 186f 19 ; add hl, de | 1870 ea 18 df ; jp pe, 0xdf18 | 1873 18 b0 ; jr 0x1825 | 1875 1f ; rra | 1876 f2 1f e1 ; jp p, 0xe11f | ;return from subrouine? 1878 e1 ; pop hl | 1879 c3 7f 18 ; jp 0x187f | ;run microcode program 187c 2a fe 40 ; ld hl, (0x40fe) | Interpretive Program Counter 187f 7e ; ld a, (hl) | get instruction (or data) 1880 23 ; inc hl | 1881 87 ; add a, a | 1882 fa 95 18 ; jp m, 0x1895 | jump if a > 63 (is address?) 1885 da 95 18 ; jp c, 0x1895 | 1888 22 fe 40 ; ld (0x40fe), hl | 188b c6 0c ; add a, 0xc | 188d 6f ; ld l, a | 188e 26 18 ; ld h, 0x18 | 1890 7e ; ld a, (hl) | a = (0x18xx) xx = 2*a + 12; ex. instr 0xa is at 0x1820 -> jp 0x18a5 1891 23 ; inc hl | 1892 66 ; ld h, (hl) | 1893 6f ; ld l, a | 1894 e9 ; jp (hl) | jump to instruction code 1895 1f ; rra | get original value of a 1896 5e ; ld e, (hl) | get next byte of address 1897 23 ; inc hl | 1898 57 ; ld d, a | 1899 d5 ; push de | push address on stack 189a c3 7f 18 ; jp 0x187f | get next instr or address 189d e1 ; pop hl | INST 00 - stack number from address on stack 189e 4e ; ld c, (hl) | 189f 23 ; inc hl | 18a0 46 ; ld b, (hl) | 18a1 c5 ; push bc | 18a2 c3 7c 18 ; jp 0x187c | get next instr or address 18a5 e1 ; pop hl | INST 0A - add 18a6 d1 ; pop de | 18a7 19 ; add hl, de | 18a8 e5 ; push hl | 18a9 c3 7c 18 ; jp 0x187c | get next instr or address 18ac d1 ; pop de | INST 03 - store binary number at stack address 18ad e1 ; pop hl | 18ae 73 ; ld (hl), e | 18af 23 ; inc hl | 18b0 72 ; ld (hl), d | 18b1 c3 7c 18 ; jp 0x187c | get next instr or address 18b4 e1 ; pop hl | INST 0C - replace binary number with negation 18b5 cd 15 00 ; call 0x15 | call NhL routine 18b8 c3 a8 18 ; jp 0x18a8 | 18bb d1 ; pop de | INST 0E - multiply binary 18bc c1 ; pop bc | 18bd cd 0c 00 ; call 0xc | call MUL routine 18c0 c3 a8 18 ; jp 0x18a8 | 18c3 d1 ; pop de | INST 10 - divide binary 18c4 e1 ; pop hl | 18c5 cd 0f 00 ; call 0xf | call DIV routine 18c8 d5 ; push de | 18c9 c3 7c 18 ; jp 0x187c | get next instr or address 18cc cd 2b 1d ; call 0x1d2b | INST 15 - PUT data to specified device driver 18cf 41 ; ld b, c | 18d0 cd 2b 1d ; call 0x1d2b | increment IPC 18d3 21 fb 40 ; ld hl, 0x40fb | Output routine for PUT 18d6 36 c3 ; ld (hl), 0xc3 | 18d8 23 ; inc hl | 18d9 71 ; ld (hl), c | 18da 23 ; inc hl | 18db 70 ; ld (hl), b | 18dc c3 7c 18 ; jp 0x187c | get next instr or address 18df 2a fe 40 ; ld hl, (0x40fe) | INST 33 - byte 2 and 3 is binary number, stacked 18e2 46 ; ld b, (hl) | 18e3 23 ; inc hl | 18e4 4e ; ld c, (hl) | 18e5 c5 ; push bc | 18e6 23 ; inc hl | 18e7 c3 7f 18 ; jp 0x187f | 18ea 2a fe 40 ; ld hl, (0x40fe) | INST 32 - byte 2 is binary number, stacked 18ed 4e ; ld c, (hl) | 18ee 23 ; inc hl | 18ef 06 00 ; ld b, 0x0 | 18f1 c5 ; push bc | 18f2 c3 7f 18 ; jp 0x187f | 18f5 cd 03 00 ; call 0x3 | INST 1A - Convert from decimal to character 18f8 c3 7c 18 ; jp 0x187c | get next instr or address 18fb e1 ; pop hl | INST 1E - Call to address on top of the stack 18fc 7e ; ld a, (hl) | 18fd 23 ; inc hl | 18fe 23 ; inc hl | 18ff fe 04 ; cp 0x4 | 1901 d2 fc 18 ; jp nc, 0x18fc | 1904 2b ; dec hl | 1905 2b ; dec hl | 1906 22 00 42 ; ld (0x4200), hl | 1909 d1 ; pop de | 190a 14 ; inc d | 190b 15 ; dec d | 190c ca 1b 19 ; jp z, 0x191b | 190f 2b ; dec hl | 1910 4e ; ld c, (hl) | 1911 2b ; dec hl | 1912 46 ; ld b, (hl) | 1913 7b ; ld a, e | 1914 02 ; ld (bc), a | 1915 7a ; ld a, d | 1916 03 ; inc bc | 1917 02 ; ld (bc), a | 1918 c3 09 19 ; jp 0x1909 | 191b 2a 00 42 ; ld hl, (0x4200) | 191e 7e ; ld a, (hl) | 191f 23 ; inc hl | 1920 eb ; ex de, hl | 1921 2a fe 40 ; ld hl, (0x40fe) | 1924 eb ; ex de, hl | 1925 01 78 18 ; ld bc, 0x1878 | 1928 d5 ; push de | 1929 c5 ; push bc | 192a b7 ; or a | 192b c2 7f 18 ; jp nz, 0x187f | 192e e9 ; jp (hl) | 192f 21 ff 42 ; ld hl, 0x42ff | 1932 2d ; dec l | 1933 77 ; ld (hl), a | 1934 0d ; dec c | 1935 c2 32 19 ; jp nz, 0x1932 | 1938 c9 ; ret | INST 1F - return from subroutine 1939 cd 21 00 ; call 0x21 | INST 24 - Get decimal number from input 193c c3 7c 18 ; jp 0x187c | get next instr or address 193f c1 ; pop bc | INST 2A - Output character N times 1940 d1 ; pop de | 1941 7b ; ld a, e | 1942 41 ; ld b, c | 1943 cd 2f 19 ; call 0x192f | 1946 48 ; ld c, b | 1947 c3 6d 19 ; jp 0x196d | 194a cd 24 00 ; call 0x24 | INST 23 - Get new line of keyboard input 194d c3 7c 18 ; jp 0x187c | get next instr or address 1950 c1 ; pop bc | INST 25 - Get character string from input 1951 e1 ; pop hl | 1952 cd 1e 00 ; call 0x1e | 1955 c3 7c 18 ; jp 0x187c | get next instr or address 1958 cd 03 00 ; call 0x3 | INST 27 - Put decimal number 195b 3e 20 ; ld a, 0x20 | 195d 0e 10 ; ld c, 0x10 | 195f cd 2f 19 ; call 0x192f | 1962 c1 ; pop bc | 1963 3e 10 ; ld a, 0x10 | 1965 91 ; sub c | 1966 c5 ; push bc | 1967 4f ; ld c, a | 1968 cd fb 40 ; call 0x40fb | 196b c1 ; pop bc | INST 26 - Put character string 196c e1 ; pop hl | 196d cd fb 40 ; call 0x40fb | 1970 c3 7c 18 ; jp 0x187c | get next instr or address 1973 d1 ; pop de | INST 28 - Put Edit character string 1974 c1 ; pop bc | 1975 e1 ; pop hl | 1976 e5 ; push hl | 1977 d5 ; push de | 1978 cd e7 1f ; call 0x1fe7 | 197b 7b ; ld a, e | 197c 90 ; sub b | 197d da 6b 19 ; jp c, 0x196b | 1980 e1 ; pop hl | 1981 e1 ; pop hl | 1982 f5 ; push af | 1983 48 ; ld c, b | 1984 cd fb 40 ; call 0x40fb | 1987 c1 ; pop bc | 1988 48 ; ld c, b | 1989 3e 20 ; ld a, 0x20 | 198b cd 2f 19 ; call 0x192f | 198e 48 ; ld c, b | 198f c3 6d 19 ; jp 0x196d | 1992 c1 ; pop bc | INST 06 - store a string of bytes 1993 e1 ; pop hl | 1994 d1 ; pop de | 1995 03 ; inc bc | 1996 13 ; inc de | 1997 1b ; dec de | 1998 7a ; ld a, d | 1999 b3 ; or e | 199a ca b5 19 ; jp z, 0x19b5 | 199d 0b ; dec bc | 199e 78 ; ld a, b | 199f b1 ; or c | 19a0 7e ; ld a, (hl) | 19a1 23 ; inc hl | 19a2 e3 ; ex (sp), hl | 19a3 ca ac 19 ; jp z, 0x19ac | 19a6 77 ; ld (hl), a | 19a7 23 ; inc hl | 19a8 e3 ; ex (sp), hl | 19a9 c3 97 19 ; jp 0x1997 | 19ac 36 00 ; ld (hl), 0x0 | 19ae 23 ; inc hl | 19af 1b ; dec de | 19b0 7a ; ld a, d | 19b1 b3 ; or e | 19b2 c2 ac 19 ; jp nz, 0x19ac | 19b5 e1 ; pop hl | 19b6 c3 7c 18 ; jp 0x187c | get next instr or address 19b9 c1 ; pop bc | INST 31 - store string (no padding) 19ba 79 ; ld a, c | 19bb e1 ; pop hl | 19bc c1 ; pop bc | 19bd 47 ; ld b, a | 19be d1 ; pop de | 19bf 0c ; inc c | 19c0 04 ; inc b | 19c1 0d ; dec c | 19c2 ca d4 19 ; jp z, 0x19d4 | 19c5 05 ; dec b | 19c6 ca d4 19 ; jp z, 0x19d4 | 19c9 7e ; ld a, (hl) | 19ca b7 ; or a | 19cb ca d4 19 ; jp z, 0x19d4 | 19ce 23 ; inc hl | 19cf 12 ; ld (de), a | 19d0 13 ; inc de | 19d1 c3 c1 19 ; jp 0x19c1 | 19d4 06 00 ; ld b, 0x0 | 19d6 d5 ; push de | 19d7 c5 ; push bc | 19d8 c3 7c 18 ; jp 0x187c | get next instr or address 19db c1 ; pop bc | INST 29 - Put Edit decimal number 19dc 79 ; ld a, c | 19dd c1 ; pop bc | 19de d1 ; pop de | 19df e1 ; pop hl | 19e0 57 ; ld d, a | 19e1 14 ; inc d | 19e2 1c ; inc e | 19e3 7e ; ld a, (hl) | 19e4 32 1f 42 ; ld (0x421f), a | 19e7 fe 2d ; cp 0x2d | 19e9 ca f1 19 ; jp z, 0x19f1 | 19ec fe 30 ; cp 0x30 | 19ee c2 f3 19 ; jp nz, 0x19f3 | 19f1 23 ; inc hl | 19f2 1d ; dec e | 19f3 c5 ; push bc | 19f4 01 ff 00 ; ld bc, 0xff | 19f7 ca 1e 1a ; jp z, 0x1a1e | 19fa 7b ; ld a, e | 19fb d6 05 ; sub 0x5 | 19fd da 10 1a ; jp c, 0x1a10 | 1a00 e5 ; push hl | 1a01 85 ; add a, l | 1a02 6f ; ld l, a | 1a03 d2 07 1a ; jp nc, 0x1a07 | 1a06 24 ; inc h | 1a07 7e ; ld a, (hl) | 1a08 e1 ; pop hl | 1a09 fe 45 ; cp 0x45 | 1a0b c2 10 1a ; jp nz, 0x1a10 | 1a0e 1e 01 ; ld e, 0x1 | 1a10 0c ; inc c | 1a11 1d ; dec e | 1a12 ca 1e 1a ; jp z, 0x1a1e | 1a15 7e ; ld a, (hl) | 1a16 23 ; inc hl | 1a17 fe 2e ; cp 0x2e | 1a19 c2 10 1a ; jp nz, 0x1a10 | 1a1c 1d ; dec e | 1a1d 2b ; dec hl | 1a1e e3 ; ex (sp), hl | 1a1f 04 ; inc b | 1a20 15 ; dec d | 1a21 ca 2d 1a ; jp z, 0x1a2d | 1a24 7e ; ld a, (hl) | 1a25 23 ; inc hl | 1a26 fe 56 ; cp 0x56 | 1a28 c2 1f 1a ; jp nz, 0x1a1f | 1a2b 15 ; dec d | 1a2c 2b ; dec hl | 1a2d eb ; ex de, hl | 1a2e e3 ; ex (sp), hl | 1a2f d5 ; push de | 1a30 e5 ; push hl | 1a31 e5 ; push hl | 1a32 21 41 42 ; ld hl, 0x4241 | 1a35 36 00 ; ld (hl), 0x0 | 1a37 2b ; dec hl | 1a38 1b ; dec de | 1a39 05 ; dec b | 1a3a ca ad 1a ; jp z, 0x1aad | 1a3d 0c ; inc c | 1a3e 0d ; dec c | 1a3f ca 6f 1a ; jp z, 0x1a6f | 1a42 1a ; ld a, (de) | 1a43 1b ; dec de | 1a44 fe 2e ; cp 0x2e | 1a46 ca 58 1a ; jp z, 0x1a58 | 1a49 fe 2c ; cp 0x2c | 1a4b ca 58 1a ; jp z, 0x1a58 | 1a4e fe 20 ; cp 0x20 | 1a50 ca 58 1a ; jp z, 0x1a58 | 1a53 e3 ; ex (sp), hl | 1a54 0d ; dec c | 1a55 2b ; dec hl | 1a56 7e ; ld a, (hl) | 1a57 e3 ; ex (sp), hl | 1a58 77 ; ld (hl), a | 1a59 2b ; dec hl | 1a5a c3 39 1a ; jp 0x1a39 | 1a5d 1a ; ld a, (de) | 1a5e e6 fd ; and 0xfd | 1a60 fe 2c ; cp 0x2c | 1a62 1a ; ld a, (de) | 1a63 c0 ; ret nz | 1a64 1b ; dec de | 1a65 1a ; ld a, (de) | 1a66 13 ; inc de | 1a67 fe 30 ; cp 0x30 | 1a69 d8 ; ret c | 1a6a fe 5a ; cp 0x5a | 1a6c c8 ; ret z | 1a6d 1a ; ld a, (de) | 1a6e c9 ; ret | 1a6f cd 5d 1a ; call 0x1a5d | 1a72 fe 24 ; cp 0x24 | 1a74 ca a6 1a ; jp z, 0x1aa6 | 1a77 fe 2d ; cp 0x2d | 1a79 c2 86 1a ; jp nz, 0x1a86 | 1a7c 3a 1f 42 ; ld a, (0x421f) | 1a7f fe 2d ; cp 0x2d | 1a81 ca a6 1a ; jp z, 0x1aa6 | 1a84 3e 20 ; ld a, 0x20 | 1a86 fe 30 ; cp 0x30 | 1a88 ca 6f 1a ; jp z, 0x1a6f | 1a8b cd 5d 1a ; call 0x1a5d | 1a8e fe 2d ; cp 0x2d | 1a90 da a1 1a ; jp c, 0x1aa1 | 1a93 fe 2e ; cp 0x2e | 1a95 ca a1 1a ; jp z, 0x1aa1 | 1a98 fe 39 ; cp 0x39 | 1a9a 3e 30 ; ld a, 0x30 | 1a9c ca a6 1a ; jp z, 0x1aa6 | 1a9f 3e 20 ; ld a, 0x20 | 1aa1 fe 24 ; cp 0x24 | 1aa3 ca 9f 1a ; jp z, 0x1a9f | 1aa6 1b ; dec de | 1aa7 77 ; ld (hl), a | 1aa8 2b ; dec hl | 1aa9 05 ; dec b | 1aaa c2 86 1a ; jp nz, 0x1a86 | 1aad f1 ; pop af | 1aae c1 ; pop bc | 1aaf d1 ; pop de | 1ab0 e3 ; ex (sp), hl | 1ab1 24 ; inc h | 1ab2 c5 ; push bc | 1ab3 01 40 42 ; ld bc, 0x4240 | 1ab6 25 ; dec h | 1ab7 ca df 1a ; jp z, 0x1adf | 1aba 2c ; inc l | 1abb 2d ; dec l | 1abc ca d0 1a ; jp z, 0x1ad0 | 1abf 13 ; inc de | 1ac0 1a ; ld a, (de) | 1ac1 fe 39 ; cp 0x39 | 1ac3 c2 cb 1a ; jp nz, 0x1acb | 1ac6 e3 ; ex (sp), hl | 1ac7 23 ; inc hl | 1ac8 7e ; ld a, (hl) | 1ac9 e3 ; ex (sp), hl | 1aca 2d ; dec l | 1acb 03 ; inc bc | 1acc 02 ; ld (bc), a | 1acd c3 b6 1a ; jp 0x1ab6 | 1ad0 13 ; inc de | 1ad1 1a ; ld a, (de) | 1ad2 fe 39 ; cp 0x39 | 1ad4 c2 d9 1a ; jp nz, 0x1ad9 | 1ad7 3e 30 ; ld a, 0x30 | 1ad9 03 ; inc bc | 1ada 02 ; ld (bc), a | 1adb 25 ; dec h | 1adc c2 d0 1a ; jp nz, 0x1ad0 | 1adf f1 ; pop af | 1ae0 e1 ; pop hl | 1ae1 79 ; ld a, c | 1ae2 95 ; sub l | 1ae3 23 ; inc hl | 1ae4 4f ; ld c, a | 1ae5 c3 6d 19 ; jp 0x196d | 1ae8 c1 ; pop bc | INST 16 - Convert from character to binary 1ae9 e1 ; pop hl | 1aea cd 2d 00 ; call 0x2d | call CARB (ch to binary) 1aed d5 ; push de | 1aee c3 7c 18 ; jp 0x187c | get next instr or address 1af1 e1 ; pop hl | INST 18 - Convert from binary to decimal 1af2 22 64 42 ; ld (0x4264), hl | 1af5 e1 ; pop hl | 1af6 22 66 42 ; ld (0x4266), hl | 1af9 e1 ; pop hl | 1afa 22 68 42 ; ld (0x4268), hl | 1afd e1 ; pop hl | 1afe 22 6a 42 ; ld (0x426a), hl | 1b01 e1 ; pop hl | 1b02 11 32 42 ; ld de, 0x4232 | 1b05 cd 12 00 ; call 0x12 | call BICHAR 1b08 d5 ; push de | 1b09 c5 ; push bc | 1b0a cd 06 00 ; call 0x6 | call TOSTR 1b0d 2a 6a 42 ; ld hl, (0x426a) | 1b10 e5 ; push hl | 1b11 2a 68 42 ; ld hl, (0x4268) | 1b14 e5 ; push hl | 1b15 2a 66 42 ; ld hl, (0x4266) | 1b18 e5 ; push hl | 1b19 2a 64 42 ; ld hl, (0x4264) | 1b1c e5 ; push hl | 1b1d c3 7c 18 ; jp 0x187c | get next instr or address 1b20 e1 ; pop hl | INST 19 - Convert from binary to character 1b21 11 32 42 ; ld de, 0x4232 | 1b24 cd 12 00 ; call 0x12 | call TODEC 1b27 d5 ; push de | 1b28 c5 ; push bc | 1b29 c3 7c 18 ; jp 0x187c | get next instr or address 1b2c e1 ; pop hl | INST 12 - And binary 1b2d d1 ; pop de | 1b2e 7d ; ld a, l | 1b2f a3 ; and e | 1b30 6f ; ld l, a | 1b31 7c ; ld a, h | 1b32 a2 ; and d | 1b33 67 ; ld h, a | 1b34 e5 ; push hl | 1b35 c3 7c 18 ; jp 0x187c | get next instr or address 1b38 e1 ; pop hl | INST 13 - Or binary 1b39 d1 ; pop de | 1b3a 7d ; ld a, l | 1b3b b3 ; or e | 1b3c 6f ; ld l, a | 1b3d 7c ; ld a, h | 1b3e b2 ; or d | 1b3f 67 ; ld h, a | 1b40 e5 ; push hl | 1b41 c3 7c 18 ; jp 0x187c | get next instr or address 1b44 e1 ; pop hl | INST 14 - Ones complement binary 1b45 cd 15 00 ; call 0x15 | call NHL (negate binary in hl) 1b48 2b ; dec hl | 1b49 e5 ; push hl | 1b4a c3 7c 18 ; jp 0x187c | get next instr or address 1b4d d1 ; pop de | INST 2E - Read key 1b4e e1 ; pop hl | 1b4f 22 14 42 ; ld (0x4214), hl | 1b52 e1 ; pop hl | 1b53 22 16 42 ; ld (0x4216), hl | 1b56 c1 ; pop bc | 1b57 e1 ; pop hl | 1b58 e3 ; ex (sp), hl | 1b59 7d ; ld a, l | 1b5a e1 ; pop hl | 1b5b cd 09 08 ; call 0x809 | call KEY[SEARCH] 1b5e 2a fe 40 ; ld hl, (0x40fe) | 1b61 5e ; ld e, (hl) | 1b62 23 ; inc hl | 1b63 22 fe 40 ; ld (0x40fe), hl | 1b66 c2 81 1b ; jp nz, 0x1b81 | 1b69 7b ; ld a, e | 1b6a 2a 16 42 ; ld hl, (0x4216) | 1b6d eb ; ex de, hl | 1b6e 2a 14 42 ; ld hl, (0x4214) | 1b71 cd 00 08 ; call 0x800 | call READ 1b74 c3 81 1b ; jp 0x1b81 | 1b77 cd 2b 1d ; call 0x1d2b | INST 2B - Read from disk 1b7a 79 ; ld a, c | 1b7b e1 ; pop hl | 1b7c d1 ; pop de | 1b7d c1 ; pop bc | 1b7e cd 00 08 ; call 0x800 | call READ ;return from file operations 1b81 32 f5 40 ; ld (0x40f5), a | set ONCODE = a 1b84 ca 97 1b ; jp z, 0x1b97 | 1b87 fe 06 ; cp 0x6 | 1b89 ca a9 1b ; jp z, 0x1ba9 | 1b8c 2a f7 40 ; ld hl, (0x40f7) | 1b8f 24 ; inc h | 1b90 25 ; dec h | 1b91 ca a3 1b ; jp z, 0x1ba3 | 1b94 22 fe 40 ; ld (0x40fe), hl | 1b97 21 00 00 ; ld hl, 0x0 | 1b9a 22 f9 40 ; ld (0x40f9), hl | 1b9d 22 f7 40 ; ld (0x40f7), hl | 1ba0 c3 7c 18 ; jp 0x187c | run loaded program! ;misc PL/1 code 1ba3 cd 18 08 ; call 0x818 | call (error) REPORT 1ba6 c3 97 1b ; jp 0x1b97 | 1ba9 2a f9 40 ; ld hl, (0x40f9) | 1bac c3 8f 1b ; jp 0x1b8f | 1baf cd 2b 1d ; call 0x1d2b | INST 2C - write on disk 1bb2 79 ; ld a, c | 1bb3 e1 ; pop hl | 1bb4 d1 ; pop de | 1bb5 c1 ; pop bc | 1bb6 cd 03 08 ; call 0x803 | call WRITE 1bb9 c3 81 1b ; jp 0x1b81 | 1bbc cd 2b 1d ; call 0x1d2b | INST 2D - rewrite on disk 1bbf 79 ; ld a, c | 1bc0 e1 ; pop hl | 1bc1 d1 ; pop de | 1bc2 c1 ; pop bc | 1bc3 cd 06 08 ; call 0x806 | call REWRITE 1bc6 c3 81 1b ; jp 0x1b81 | 1bc9 e1 ; pop hl | INST 22 - open file 1bca cd 0c 08 ; call 0x80c | call OPEN 1bcd c3 81 1b ; jp 0x1b81 | 1bd0 e1 ; pop hl | INST 2F - file description on top of stack 1bd1 cd 12 08 ; call 0x812 | 1bd4 c3 81 1b ; jp 0x1b81 | 1bd7 cd 06 00 ; call 0x6 | INST 17 - Convert from character to decimal 1bda c3 7c 18 ; jp 0x187c | get next instr or address 1bdd cd fb 1d ; call 0x1dfb | INST 08 - compare decimal 1be0 e5 ; push hl | 1be1 1a ; ld a, (de) | 1be2 0e 08 ; ld c, 0x8 | 1be4 b6 ; or (hl) | 1be5 f2 e9 1b ; jp p, 0x1be9 | 1be8 eb ; ex de, hl | 1be9 1a ; ld a, (de) | 1bea be ; cp (hl) | 1beb c2 f4 1b ; jp nz, 0x1bf4 | 1bee 2b ; dec hl | 1bef 1b ; dec de | 1bf0 0d ; dec c | 1bf1 c2 e9 1b ; jp nz, 0x1be9 | 1bf4 e1 ; pop hl | 1bf5 23 ; inc hl | 1bf6 f9 ; ld sp, hl | 1bf7 3e 02 ; ld a, 0x2 | 1bf9 ca 02 1c ; jp z, 0x1c02 | 1bfc 3d ; dec a | 1bfd d2 02 1c ; jp nc, 0x1c02 | 1c00 07 ; rlca | 1c01 07 ; rlca | 1c02 2a fe 40 ; ld hl, (0x40fe) | 1c05 a6 ; and (hl) | 1c06 01 00 00 ; ld bc, 0x0 | 1c09 23 ; inc hl | 1c0a ca 0e 1c ; jp z, 0x1c0e | 1c0d 0b ; dec bc | 1c0e c5 ; push bc | 1c0f c3 7f 18 ; jp 0x187f | 1c12 c1 ; pop bc | INST 09 - compare character strings 1c13 79 ; ld a, c | 1c14 d1 ; pop de | 1c15 c1 ; pop bc | 1c16 e1 ; pop hl | 1c17 47 ; ld b, a | 1c18 04 ; inc b | 1c19 0c ; inc c | 1c1a 1a ; ld a, (de) | 1c1b 05 ; dec b | 1c1c c2 21 1c ; jp nz, 0x1c21 | 1c1f 04 ; inc b | 1c20 97 ; sub a | 1c21 0d ; dec c | 1c22 c2 2e 1c ; jp nz, 0x1c2e | 1c25 0c ; inc c | 1c26 21 07 1c ; ld hl, 0x1c07 | 1c29 05 ; dec b | 1c2a ca f7 1b ; jp z, 0x1bf7 | 1c2d 04 ; inc b | 1c2e be ; cp (hl) | 1c2f c2 f7 1b ; jp nz, 0x1bf7 | 1c32 23 ; inc hl | 1c33 13 ; inc de | 1c34 c3 1a 1c ; jp 0x1c1a | 1c37 d1 ; pop de | INST 07 - compare binary numbers 1c38 e1 ; pop hl | 1c39 7a ; ld a, d | 1c3a ac ; xor h | 1c3b fa 48 1c ; jp m, 0x1c48 | 1c3e 7a ; ld a, d | 1c3f bc ; cp h | 1c40 c2 f7 1b ; jp nz, 0x1bf7 | 1c43 7b ; ld a, e | 1c44 bd ; cp l | 1c45 c3 f7 1b ; jp 0x1bf7 | 1c48 7c ; ld a, h | 1c49 ba ; cp d | 1c4a c3 f7 1b ; jp 0x1bf7 | 1c4d cd fb 1d ; call 0x1dfb | INST 0B - add decimal 1c50 47 ; ld b, a | 1c51 ae ; xor (hl) | 1c52 4f ; ld c, a | 1c53 e6 80 ; and 0x80 | 1c55 80 ; add a, b | 1c56 96 ; sub (hl) | 1c57 da 60 1c ; jp c, 0x1c60 | 1c5a ca 9a 1c ; jp z, 0x1c9a | 1c5d 2f ; cpl | 1c5e 3c ; inc a | 1c5f eb ; ex de, hl | 1c60 e5 ; push hl | 1c61 61 ; ld h, c | 1c62 3d ; dec a | 1c63 47 ; ld b, a | 1c64 c6 07 ; add a, 0x7 | 1c66 d2 c0 1c ; jp nc, 0x1cc0 | 1c69 4f ; ld c, a | 1c6a 0c ; inc c | 1c6b 2f ; cpl | 1c6c 83 ; add a, e | 1c6d 5f ; ld e, a | 1c6e 7d ; ld a, l | 1c6f d6 07 ; sub 0x7 | 1c71 6f ; ld l, a | 1c72 24 ; inc h | 1c73 25 ; dec h | 1c74 62 ; ld h, d | 1c75 fa 8b 1c ; jp m, 0x1c8b | 1c78 cd 06 1e ; call 0x1e06 | 1c7b d2 c0 1c ; jp nc, 0x1cc0 | 1c7e 04 ; inc b | 1c7f ca b3 1c ; jp z, 0x1cb3 | 1c82 7e ; ld a, (hl) | 1c83 ce 00 ; adc a, 0x0 | 1c85 27 ; daa | 1c86 77 ; ld (hl), a | 1c87 23 ; inc hl | 1c88 c3 7b 1c ; jp 0x1c7b | 1c8b cd 12 1e ; call 0x1e12 | 1c8e da c0 1c ; jp c, 0x1cc0 | 1c91 3e 99 ; ld a, 0x99 | 1c93 86 ; add a, (hl) | 1c94 27 ; daa | 1c95 77 ; ld (hl), a | 1c96 23 ; inc hl | 1c97 c3 8e 1c ; jp 0x1c8e | 1c9a 1b ; dec de | 1c9b 2b ; dec hl | 1c9c 1a ; ld a, (de) | 1c9d be ; cp (hl) | 1c9e da ac 1c ; jp c, 0x1cac | 1ca1 ca 9a 1c ; jp z, 0x1c9a | 1ca4 cd fb 1d ; call 0x1dfb | 1ca7 eb ; ex de, hl | 1ca8 97 ; sub a | 1ca9 c3 60 1c ; jp 0x1c60 | 1cac cd fb 1d ; call 0x1dfb | 1caf 97 ; sub a | 1cb0 c3 60 1c ; jp 0x1c60 | 1cb3 1e 07 ; ld e, 0x7 | 1cb5 16 01 ; ld d, 0x1 | 1cb7 34 ; inc (hl) | 1cb8 2b ; dec hl | 1cb9 7e ; ld a, (hl) | 1cba 72 ; ld (hl), d | 1cbb 57 ; ld d, a | 1cbc 1d ; dec e | 1cbd c2 b8 1c ; jp nz, 0x1cb8 | 1cc0 e1 ; pop hl | 1cc1 11 11 00 ; ld de, 0x11 | 1cc4 cd d1 1c ; call 0x1cd1 | 1cc7 f1 ; pop af | 1cc8 f1 ; pop af | 1cc9 f1 ; pop af | 1cca f1 ; pop af | 1ccb c3 7c 18 ; jp 0x187c | get next instr or address ;NORMY() 1cce 11 09 00 ; ld de, 0x9 | 1cd1 4e ; ld c, (hl) | 1cd2 eb ; ex de, hl | 1cd3 39 ; add hl, sp | 1cd4 06 07 ; ld b, 0x7 | 1cd6 1b ; dec de | 1cd7 1a ; ld a, (de) | 1cd8 b7 ; or a | 1cd9 c2 e6 1c ; jp nz, 0x1ce6 | 1cdc 0d ; dec c | 1cdd 05 ; dec b | 1cde c2 d6 1c ; jp nz, 0x1cd6 | 1ce1 0e 07 ; ld c, 0x7 | 1ce3 c3 f6 1c ; jp 0x1cf6 | 1ce6 71 ; ld (hl), c | 1ce7 3e 07 ; ld a, 0x7 | 1ce9 90 ; sub b | 1cea 4f ; ld c, a | 1ceb 2b ; dec hl | 1cec 1a ; ld a, (de) | 1ced 1b ; dec de | 1cee 77 ; ld (hl), a | 1cef 05 ; dec b | 1cf0 c2 eb 1c ; jp nz, 0x1ceb | 1cf3 0d ; dec c | 1cf4 f8 ; ret m | 1cf5 2b ; dec hl | 1cf6 36 00 ; ld (hl), 0x0 | 1cf8 c3 f3 1c ; jp 0x1cf3 | 1cfb d1 ; pop de | INST 01 - stack float from address on stack 1cfc 01 00 00 ; ld bc, 0x0 | push 8 0x00 on stack (subroutine?) 1cff c5 ; push bc | 1d00 c5 ; push bc | 1d01 c5 ; push bc | 1d02 c5 ; push bc | 1d03 cd 2b 1d ; call 0x1d2b | increment IPC 1d06 21 07 00 ; ld hl, 0x7 | 1d09 39 ; add hl, sp | 1d0a 1a ; ld a, (de) | 1d0b 13 ; inc de | 1d0c 77 ; ld (hl), a | 1d0d 2b ; dec hl | 1d0e 0d ; dec c | 1d0f c2 0a 1d ; jp nz, 0x1d0a | 1d12 c3 7c 18 ; jp 0x187c | get next instr or address 1d15 cd 2b 1d ; call 0x1d2b | INST 04 - store float 1d18 21 09 00 ; ld hl, 0x9 | 1d1b 39 ; add hl, sp | 1d1c 56 ; ld d, (hl) | 1d1d 2b ; dec hl | 1d1e 5e ; ld e, (hl) | 1d1f 2b ; dec hl | 1d20 7e ; ld a, (hl) | 1d21 12 ; ld (de), a | 1d22 13 ; inc de | 1d23 0d ; dec c | 1d24 c2 1f 1d ; jp nz, 0x1d1f | 1d27 f1 ; pop af | 1d28 c3 c7 1c ; jp 0x1cc7 | ;increment IPC value 1d2b 2a fe 40 ; ld hl, (0x40fe) | hl = IPC addr 1d2e 4e ; ld c, (hl) | 1d2f 23 ; inc hl | 1d30 22 fe 40 ; ld (0x40fe), hl | 1d33 c9 ; ret | ;misc PL/1 code 1d34 e1 ; pop hl | INST 1C - Go to address on top of stack 1d35 c3 7f 18 ; jp 0x187f | 1d38 e1 ; pop hl | INST 1D - Go to address on top of stack (conditional) 1d39 c1 ; pop bc | 1d3a 78 ; ld a, b | 1d3b b1 ; or c | 1d3c c2 7c 18 ; jp nz, 0x187c | get next instr or address 1d3f c3 7f 18 ; jp 0x187f | 1d42 21 0b 00 ; ld hl, 0xb | INST 21 - Do loop control for decimal indexes 1d45 39 ; add hl, sp | 1d46 4e ; ld c, (hl) | 1d47 11 08 00 ; ld de, 0x8 | 1d4a 19 ; add hl, de | 1d4b 7e ; ld a, (hl) | 1d4c 23 ; inc hl | 1d4d b7 ; or a | 1d4e ca 5c 1d ; jp z, 0x1d5c | 1d51 a9 ; xor c | 1d52 fa 5c 1d ; jp m, 0x1d5c | 1d55 d1 ; pop de | 1d56 d1 ; pop de | 1d57 f9 ; ld sp, hl | 1d58 eb ; ex de, hl | 1d59 c3 7f 18 ; jp 0x187f | 1d5c d1 ; pop de | 1d5d c1 ; pop bc | 1d5e c3 57 1d ; jp 0x1d57 | 1d61 d1 ; pop de | INST 20 - Do loop control for binary indexes 1d62 e1 ; pop hl | 1d63 c1 ; pop bc | 1d64 e3 ; ex (sp), hl | 1d65 7c ; ld a, h | 1d66 b5 ; or l | 1d67 ca 73 1d ; jp z, 0x1d73 | 1d6a 7c ; ld a, h | 1d6b a8 ; xor b | 1d6c fa 73 1d ; jp m, 0x1d73 | 1d6f e1 ; pop hl | 1d70 c3 7f 18 ; jp 0x187f | 1d73 eb ; ex de, hl | 1d74 d1 ; pop de | 1d75 c3 7f 18 ; jp 0x187f | 1d78 2a fe 40 ; ld hl, (0x40fe) | INST 05 - store decimal number as fixed point 1d7b 4e ; ld c, (hl) | 1d7c 23 ; inc hl | 1d7d 46 ; ld b, (hl) | 1d7e 23 ; inc hl | 1d7f 22 fe 40 ; ld (0x40fe), hl | 1d82 21 09 00 ; ld hl, 0x9 | 1d85 39 ; add hl, sp | 1d86 56 ; ld d, (hl) | 1d87 2b ; dec hl | 1d88 5e ; ld e, (hl) | 1d89 2b ; dec hl | 1d8a 7e ; ld a, (hl) | 1d8b eb ; ex de, hl | 1d8c e5 ; push hl | 1d8d d5 ; push de | 1d8e 90 ; sub b | 1d8f 87 ; add a, a | 1d90 f2 9f 1d ; jp p, 0x1d9f | 1d93 36 00 ; ld (hl), 0x0 | 1d95 23 ; inc hl | 1d96 0d ; dec c | 1d97 ca b9 1d ; jp z, 0x1db9 | 1d9a 3c ; inc a | 1d9b 3c ; inc a | 1d9c fa 93 1d ; jp m, 0x1d93 | 1d9f 1b ; dec de | 1da0 1a ; ld a, (de) | 1da1 77 ; ld (hl), a | 1da2 23 ; inc hl | 1da3 0d ; dec c | 1da4 c2 9f 1d ; jp nz, 0x1d9f | 1da7 e6 f0 ; and 0xf0 | 1da9 2b ; dec hl | 1daa 05 ; dec b | 1dab f2 af 1d ; jp p, 0x1daf | 1dae 77 ; ld (hl), a | 1daf d1 ; pop de | 1db0 e1 ; pop hl | 1db1 1a ; ld a, (de) | 1db2 e6 80 ; and 0x80 | 1db4 b6 ; or (hl) | 1db5 77 ; ld (hl), a | 1db6 c3 27 1d ; jp 0x1d27 | 1db9 f1 ; pop af | 1dba f1 ; pop af | 1dbb c3 27 1d ; jp 0x1d27 | 1dbe cd fb 1d ; call 0x1dfb | INST 0D - negate decimal? 1dc1 b7 ; or a | 1dc2 ca 7c 18 ; jp z, 0x187c | get next instr or address 1dc5 ee 80 ; xor 0x80 | 1dc7 12 ; ld (de), a | 1dc8 c3 7c 18 ; jp 0x187c | get next instr or address 1dcb d1 ; pop de | INST 02 - stack dec num from address on stack 1dcc 01 00 00 ; ld bc, 0x0 | 1dcf c5 ; push bc | 1dd0 c5 ; push bc | 1dd1 c5 ; push bc | 1dd2 c5 ; push bc | 1dd3 2a fe 40 ; ld hl, (0x40fe) | 1dd6 4e ; ld c, (hl) | 1dd7 23 ; inc hl | 1dd8 7e ; ld a, (hl) | 1dd9 23 ; inc hl | 1dda 22 fe 40 ; ld (0x40fe), hl | 1ddd 21 07 00 ; ld hl, 0x7 | 1de0 39 ; add hl, sp | 1de1 e5 ; push hl | 1de2 77 ; ld (hl), a | 1de3 2b ; dec hl | 1de4 1a ; ld a, (de) | 1de5 13 ; inc de | 1de6 0d ; dec c | 1de7 f2 e2 1d ; jp p, 0x1de2 | 1dea e1 ; pop hl | 1deb 2b ; dec hl | 1dec 7e ; ld a, (hl) | 1ded 47 ; ld b, a | 1dee e6 7f ; and 0x7f | 1df0 77 ; ld (hl), a | 1df1 a8 ; xor b | 1df2 23 ; inc hl | 1df3 b6 ; or (hl) | 1df4 77 ; ld (hl), a | 1df5 cd ce 1c ; call 0x1cce | call aaaa() 1df8 c3 7c 18 ; jp 0x187c | get next instr or address 1dfb 21 09 00 ; ld hl, 0x9 | 1dfe 11 08 00 ; ld de, 0x8 | 1e01 39 ; add hl, sp | 1e02 eb ; ex de, hl | 1e03 19 ; add hl, de | 1e04 1a ; ld a, (de) | 1e05 c9 ; ret | 1e06 b7 ; or a | 1e07 1a ; ld a, (de) | 1e08 8e ; adc a, (hl) | 1e09 27 ; daa | 1e0a 77 ; ld (hl), a | 1e0b 23 ; inc hl | 1e0c 13 ; inc de | 1e0d 0d ; dec c | 1e0e c2 07 1e ; jp nz, 0x1e07 | 1e11 c9 ; ret | 1e12 37 ; scf | 1e13 3e 99 ; ld a, 0x99 | 1e15 ce 00 ; adc a, 0x0 | 1e17 eb ; ex de, hl | 1e18 96 ; sub (hl) | 1e19 eb ; ex de, hl | 1e1a 86 ; add a, (hl) | 1e1b 27 ; daa | 1e1c 77 ; ld (hl), a | 1e1d 13 ; inc de | 1e1e 23 ; inc hl | 1e1f 0d ; dec c | 1e20 c2 13 1e ; jp nz, 0x1e13 | 1e23 c9 ; ret | 1e24 cd 53 1f ; call 0x1f53 | INST 11 - divide decimal 1e27 cd fb 1d ; call 0x1dfb | 1e2a b7 ; or a | 1e2b ca c7 1c ; jp z, 0x1cc7 | 1e2e 7e ; ld a, (hl) | 1e2f b7 ; or a | 1e30 ca c7 1c ; jp z, 0x1cc7 | 1e33 e5 ; push hl | 1e34 06 07 ; ld b, 0x7 | 1e36 21 18 42 ; ld hl, 0x4218 | 1e39 36 00 ; ld (hl), 0x0 | 1e3b 2b ; dec hl | 1e3c 1b ; dec de | 1e3d 1a ; ld a, (de) | 1e3e 77 ; ld (hl), a | 1e3f b7 ; or a | 1e40 ca 44 1e ; jp z, 0x1e44 | 1e43 4d ; ld c, l | 1e44 2b ; dec hl | 1e45 05 ; dec b | 1e46 c2 3c 1e ; jp nz, 0x1e3c | 1e49 36 ff ; ld (hl), 0xff | 1e4b 69 ; ld l, c | 1e4c e3 ; ex (sp), hl | 1e4d 11 0d 42 ; ld de, 0x420d | 1e50 06 07 ; ld b, 0x7 | 1e52 2b ; dec hl | 1e53 7e ; ld a, (hl) | 1e54 12 ; ld (de), a | 1e55 1b ; dec de | 1e56 05 ; dec b | 1e57 c2 52 1e ; jp nz, 0x1e52 | 1e5a 06 11 ; ld b, 0x11 | 1e5c 05 ; dec b | 1e5d c2 76 1e ; jp nz, 0x1e76 | 1e60 f1 ; pop af | 1e61 cd fb 1d ; call 0x1dfb | 1e64 96 ; sub (hl) | 1e65 2f ; cpl | 1e66 c6 41 ; add a, 0x41 | 1e68 21 07 42 ; ld hl, 0x4207 | 1e6b 34 ; inc (hl) | 1e6c 35 ; dec (hl) | 1e6d ca 72 1e ; jp z, 0x1e72 | 1e70 3c ; inc a | 1e71 23 ; inc hl | 1e72 77 ; ld (hl), a | 1e73 c3 c1 1c ; jp 0x1cc1 | 1e76 cd 3c 00 ; call 0x3c | 1e79 11 18 42 ; ld de, 0x4218 | 1e7c 21 0f 42 ; ld hl, 0x420f | 1e7f 1a ; ld a, (de) | 1e80 be ; cp (hl) | 1e81 1b ; dec de | 1e82 2b ; dec hl | 1e83 ca 7f 1e ; jp z, 0x1e7f | 1e86 3c ; inc a | 1e87 ca 8d 1e ; jp z, 0x1e8d | 1e8a d2 5c 1e ; jp nc, 0x1e5c | 1e8d 21 00 42 ; ld hl, 0x4200 | 1e90 34 ; inc (hl) | 1e91 d1 ; pop de | 1e92 d5 ; push de | 1e93 7b ; ld a, e | 1e94 d6 09 ; sub 0x9 | 1e96 6f ; ld l, a | 1e97 3e 19 ; ld a, 0x19 | 1e99 93 ; sub e | 1e9a 4f ; ld c, a | 1e9b cd 12 1e ; call 0x1e12 | 1e9e c3 79 1e ; jp 0x1e79 | 1ea1 12 ; ld (de), a | 1ea2 1f ; rra | 1ea3 78 ; ld a, b | 1ea4 1f ; rra | 1ea5 71 ; ld (hl), c | 1ea6 1f ; rra | 1ea7 89 ; adc a, c | 1ea8 1f ; rra | 1ea9 69 ; ld l, c | 1eaa 1f ; rra | 1eab 93 ; sub e | 1eac 1f ; rra | 1ead 9e ; sbc a, (hl) | 1eae 1f ; rra | 1eaf 81 ; add a, c | 1eb0 1f ; rra | 1eb1 62 ; ld h, d | 1eb2 1f ; rra | 1eb3 cd 53 1f ; call 0x1f53 | INST 0F - multiply decimal 1eb6 cd fb 1d ; call 0x1dfb | 1eb9 86 ; add a, (hl) | 1eba d6 41 ; sub 0x41 | 1ebc 32 10 42 ; ld (0x4210), a | 1ebf 3e ff ; ld a, 0xff | 1ec1 12 ; ld (de), a | 1ec2 06 07 ; ld b, 0x7 | 1ec4 4b ; ld c, e | 1ec5 0d ; dec c | 1ec6 1b ; dec de | 1ec7 1a ; ld a, (de) | 1ec8 b7 ; or a | 1ec9 ca cd 1e ; jp z, 0x1ecd | 1ecc 4b ; ld c, e | 1ecd 05 ; dec b | 1ece c2 c6 1e ; jp nz, 0x1ec6 | 1ed1 59 ; ld e, c | 1ed2 06 01 ; ld b, 0x1 | 1ed4 e5 ; push hl | 1ed5 0e 07 ; ld c, 0x7 | 1ed7 e5 ; push hl | 1ed8 26 42 ; ld h, 0x42 | 1eda 7b ; ld a, e | 1edb 95 ; sub l | 1edc c6 17 ; add a, 0x17 | 1ede 6f ; ld l, a | 1edf e3 ; ex (sp), hl | 1ee0 2b ; dec hl | 1ee1 7e ; ld a, (hl) | 1ee2 e3 ; ex (sp), hl | 1ee3 c5 ; push bc | 1ee4 e5 ; push hl | 1ee5 d5 ; push de | 1ee6 05 ; dec b | 1ee7 c2 ee 1e ; jp nz, 0x1eee | 1eea 0f ; rrca | 1eeb 0f ; rrca | 1eec 0f ; rrca | 1eed 0f ; rrca | 1eee e6 0f ; and 0xf | 1ef0 ca 36 1f ; jp z, 0x1f36 | 1ef3 07 ; rlca | 1ef4 c6 9f ; add a, 0x9f | 1ef6 4f ; ld c, a | 1ef7 06 1e ; ld b, 0x1e | 1ef9 d2 fd 1e ; jp nc, 0x1efd | 1efc 04 ; inc b | 1efd 0a ; ld a, (bc) | 1efe 32 81 40 ; ld (0x4081), a | 1f01 03 ; inc bc | 1f02 0a ; ld a, (bc) | 1f03 32 82 40 ; ld (0x4082), a | 1f06 06 00 ; ld b, 0x0 | 1f08 1a ; ld a, (de) | 1f09 13 ; inc de | 1f0a 48 ; ld c, b | 1f0b d5 ; push de | 1f0c 06 00 ; ld b, 0x0 | 1f0e 5f ; ld e, a | 1f0f c3 80 40 ; jp 0x4080 | 1f12 d1 ; pop de | 1f13 86 ; add a, (hl) | 1f14 27 ; daa | 1f15 d2 19 1f ; jp nc, 0x1f19 | 1f18 04 ; inc b | 1f19 81 ; add a, c | 1f1a 27 ; daa | 1f1b d2 1f 1f ; jp nc, 0x1f1f | 1f1e 04 ; inc b | 1f1f 77 ; ld (hl), a | 1f20 23 ; inc hl | 1f21 1a ; ld a, (de) | 1f22 3c ; inc a | 1f23 c2 08 1f ; jp nz, 0x1f08 | 1f26 7e ; ld a, (hl) | 1f27 80 ; add a, b | 1f28 27 ; daa | 1f29 77 ; ld (hl), a | 1f2a d2 36 1f ; jp nc, 0x1f36 | 1f2d 23 ; inc hl | 1f2e 7e ; ld a, (hl) | 1f2f ce 00 ; adc a, 0x0 | 1f31 27 ; daa | 1f32 77 ; ld (hl), a | 1f33 da 2d 1f ; jp c, 0x1f2d | 1f36 d1 ; pop de | 1f37 e1 ; pop hl | 1f38 2b ; dec hl | 1f39 c1 ; pop bc | 1f3a 0d ; dec c | 1f3b c2 df 1e ; jp nz, 0x1edf | 1f3e 05 ; dec b | 1f3f ca 4b 1f ; jp z, 0x1f4b | 1f42 e1 ; pop hl | 1f43 21 10 42 ; ld hl, 0x4210 | 1f46 7e ; ld a, (hl) | 1f47 2b ; dec hl | 1f48 c3 6b 1e ; jp 0x1e6b | 1f4b cd 3c 00 ; call 0x3c | 1f4e e1 ; pop hl | 1f4f e1 ; pop hl | 1f50 c3 d5 1e ; jp 0x1ed5 | ;CLEAR() - clear 16 bytes in scratch 1f53 06 08 ; ld b, 0x8 | 1f55 21 0f 42 ; ld hl, 0x420f | 1f58 97 ; sub a | 1f59 77 ; ld (hl), a | 1f5a 2b ; dec hl | 1f5b 77 ; ld (hl), a | 1f5c 2b ; dec hl | 1f5d 05 ; dec b | 1f5e c2 59 1f ; jp nz, 0x1f59 | 1f61 c9 ; ret | ;misc PL/1 code 1f62 83 ; add a, e | 1f63 27 ; daa | 1f64 d2 69 1f ; jp nc, 0x1f69 | 1f67 06 04 ; ld b, 0x4 | 1f69 57 ; ld d, a | 1f6a 82 ; add a, d | 1f6b 27 ; daa | 1f6c d2 71 1f ; jp nc, 0x1f71 | 1f6f 04 ; inc b | 1f70 04 ; inc b | 1f71 57 ; ld d, a | 1f72 82 ; add a, d | 1f73 27 ; daa | 1f74 d2 78 1f ; jp nc, 0x1f78 | 1f77 04 ; inc b | 1f78 83 ; add a, e | 1f79 27 ; daa | 1f7a d2 12 1f ; jp nc, 0x1f12 | 1f7d 04 ; inc b | 1f7e c3 12 1f ; jp 0x1f12 | 1f81 83 ; add a, e | 1f82 27 ; daa | 1f83 d2 88 1f ; jp nc, 0x1f88 | 1f86 06 04 ; ld b, 0x4 | 1f88 5f ; ld e, a | 1f89 83 ; add a, e | 1f8a 27 ; daa | 1f8b 5f ; ld e, a | 1f8c d2 78 1f ; jp nc, 0x1f78 | 1f8f 04 ; inc b | 1f90 c3 77 1f ; jp 0x1f77 | 1f93 83 ; add a, e | 1f94 27 ; daa | 1f95 5f ; ld e, a | 1f96 d2 71 1f ; jp nc, 0x1f71 | 1f99 06 03 ; ld b, 0x3 | 1f9b c3 71 1f ; jp 0x1f71 | 1f9e 57 ; ld d, a | 1f9f 83 ; add a, e | 1fa0 27 ; daa | 1fa1 5f ; ld e, a | 1fa2 d2 a7 1f ; jp nc, 0x1fa7 | 1fa5 06 03 ; ld b, 0x3 | 1fa7 83 ; add a, e | 1fa8 27 ; daa | 1fa9 d2 72 1f ; jp nc, 0x1f72 | 1fac 04 ; inc b | 1fad c3 72 1f ; jp 0x1f72 | 1fb0 c1 ; pop bc | INST 34 - VERIFY 1fb1 e1 ; pop hl | 1fb2 d1 ; pop de | 1fb3 1c ; inc e | 1fb4 1d ; dec e | 1fb5 ca d4 1f ; jp z, 0x1fd4 | 1fb8 e3 ; ex (sp), hl | 1fb9 7e ; ld a, (hl) | 1fba 23 ; inc hl | 1fbb e3 ; ex (sp), hl | 1fbc c5 ; push bc | 1fbd e5 ; push hl | 1fbe be ; cp (hl) | 1fbf ca cf 1f ; jp z, 0x1fcf | 1fc2 23 ; inc hl | 1fc3 0d ; dec c | 1fc4 c2 be 1f ; jp nz, 0x1fbe | 1fc7 41 ; ld b, c | 1fc8 f1 ; pop af | 1fc9 f1 ; pop af | 1fca f1 ; pop af | 1fcb c5 ; push bc | 1fcc c3 7c 18 ; jp 0x187c | get next instr or address 1fcf e1 ; pop hl | 1fd0 c1 ; pop bc | 1fd1 c3 b4 1f ; jp 0x1fb4 | 1fd4 f1 ; pop af | 1fd5 53 ; ld d, e | 1fd6 1b ; dec de | 1fd7 d5 ; push de | 1fd8 c3 7c 18 ; jp 0x187c | get next instr or address 1fdb c1 ; pop bc | INST 30 - string length 1fdc e1 ; pop hl | 1fdd cd e7 1f ; call 0x1fe7 | 1fe0 48 ; ld c, b | 1fe1 06 00 ; ld b, 0x0 | 1fe3 c5 ; push bc | 1fe4 c3 7c 18 ; jp 0x187c | get next instr or address 1fe7 0c ; inc c | 1fe8 7e ; ld a, (hl) | 1fe9 23 ; inc hl | 1fea b7 ; or a | 1feb c8 ; ret z | 1fec 0d ; dec c | 1fed c8 ; ret z | 1fee 04 ; inc b | 1fef c3 e8 1f ; jp 0x1fe8 | 1ff2 c1 ; pop bc | INST 35 - INDEX 1ff3 d1 ; pop de | 1ff4 79 ; ld a, c | 1ff5 c1 ; pop bc | 1ff6 e1 ; pop hl | 1ff7 47 ; ld b, a | 1ff8 cd 39 00 ; call 0x39 | jump via 0x4f to 0x734 1ffb e5 ; push hl | 1ffc c3 7c 18 ; jp 0x187c | get next instr or address 1fff ff ; rst 0x38 |