0000 ; =========================================================================== 0000 0000 ; Segment type: Pure code 0000 segment seg000 0000 0000 ; =============== S U B R O U T I N E ======================================= 0000 0000 ; Attributes: thunk 0000 0000 public coldBoot 0000 coldBoot: ; ... 0000 C3 88 19 jp coldBoot_0 0000 ; End of function coldBoot 0000 0000 ; --------------------------------------------------------------------------- 0003 20 53 44 37+asc_3: .ascii ' SD70 Spectroscopy Controller / Version 1.8/1987 ' ; ... 0034 20 43 6F 70+ .ascii ' Copyright by Spectradata GmbH / FRG,' 0059 20 55 66 65+ .ascii ' Uferstrasse 74 D-2900 Oldenburg, Phone 0441/25652 ' 008D 00 00 00 00+ db [ 73h ], 0 0100 20 01 im2vec_100: dw isrNOP_120 ; ... 0100 ; vec 0; (unknown why these are reserved; maybe CTC 0) 0102 20 01 dw isrNOP_120 ; vec 2; (reserved; maybe CTC 1) 0104 20 01 dw isrNOP_120 ; vec 4; (reserved; maybe CTC 2) 0106 20 01 dw isrNOP_120 ; vec 6; (reserved; maybe CTC 3) 0108 20 01 dw isrNOP_120 ; vec 8; (reserved for pio1fpA) 010A 9D 22 dw isrPIO1fpb_229D ; vec 0ah; pio1fpB 010C BB 1D dw isrVec0c_1DBB ; vec 0ch; pio0bpA 010E C2 24 dw isvVec0e_24C2 ; vec 0eh; pio0bpB 0110 20 01 dw isrNOP_120 ; vec 10h; DART B TBMT 0112 20 01 dw isrNOP_120 ; vec 12h; DART B External/Status change 0114 20 01 dw isrNOP_120 ; vec 14h; DART B DAV 0116 20 01 dw isrNOP_120 ; vec 16h; DART B special rx; parity, overrun, framing 0118 20 01 dw isrNOP_120 ; vec 18h; DART A TBMT 011A 20 01 dw isrNOP_120 ; vec 1ah; DART A External/Status change 011C D8 24 dw isrDartArcv_24D8 ; vec 1ch; DART A DAV 011E 20 01 dw isrNOP_120 ; vec 1eh; DART A special rx; parity, overrun, framing 0120 0120 ; =============== S U B R O U T I N E ======================================= 0120 0120 ; null isr 0120 0120 isrNOP_120: ; ... 0120 FB ei 0121 ED 4D reti 0121 ; End of function isrNOP_120 0121 0123 ; --------------------------------------------------------------------------- 0123 ; START OF FUNCTION CHUNK FOR sub_787 0123 0123 infiniteloop_123: ; ... 0123 C3 23 01 jp $ 0123 ; END OF FUNCTION CHUNK FOR sub_787 0126 0126 ; =============== S U B R O U T I N E ======================================= 0126 0126 ; XXX handle button SPEED 0126 0126 btnSpeed_126: ; ... 0126 CD 2E 27 call sub_272E 0129 DD 21 71 22 ld ix, unk_2271 012D 21 29 22 ld hl, unk_2229 0130 06 0A ld b, 10 0132 11 06 00 ld de, 6 0135 0135 loc_135: ; ... 0135 CD 55 01 call sub_155 0138 CA 5D 01 jp z, loc_15D 013B DD 23 inc ix 013D DD 23 inc ix 013F DD 23 inc ix 0141 DD 23 inc ix 0143 19 add hl, de 0144 10 EF djnz loc_135 0146 21 6C 10 ld hl, lcdstrInvalidSpeedParam_106C 0149 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 014C 21 13 27 ld hl, promptQues_2713 ; '?' prompt 014F CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0152 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0152 ; End of function btnSpeed_126 0152 0155 0155 ; =============== S U B R O U T I N E ======================================= 0155 0155 0155 sub_155: ; ... 0155 FD 21 41 C2 ld iy, word_C241 0159 CD DA 11 call sub_11DA 015C C9 ret 015C ; End of function sub_155 015C 015D ; --------------------------------------------------------------------------- 015D ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 015D 015D loc_15D: ; ... 015D CD 66 01 call sub_166 0160 CD 21 1C call sub_1C21 0163 C3 F7 0E jp loc_EF7 0163 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0166 0166 ; =============== S U B R O U T I N E ======================================= 0166 0166 0166 sub_166: ; ... 0166 22 5F C2 ld (word_C25F), hl 0169 DD 22 61 C2 ld (word_C261), ix 016D C9 ret 016D ; End of function sub_166 016D 016E ; --------------------------------------------------------------------------- 016E ; START OF FUNCTION CHUNK FOR sub_1DDD 016E 016E infiniteloop_16E: ; ... 016E C3 23 01 jp infiniteloop_123 016E ; END OF FUNCTION CHUNK FOR sub_1DDD 0171 ; --------------------------------------------------------------------------- 0171 ; START OF FUNCTION CHUNK FOR sub_2489 0171 0171 loc_171: ; ... 0171 CD B0 1F call sub_1FB0 0174 CD DA 26 call loc_26DA 0177 DD 21 B4 01 ld ix, unk_1B4 017B FD 21 41 C2 ld iy, word_C241 017F CD DA 11 call sub_11DA 0182 CA AD 01 jp z, loc_1AD 0185 DD 21 B0 01 ld ix, unk_1B0 0189 CD DA 11 call sub_11DA 018C DA 9E 01 jp c, loc_19E 018F 2A 41 C2 ld hl, (word_C241) 0192 22 71 C2 ld (word_C271), hl 0195 CD F4 2B call sub_2BF4 0198 CD 19 1F call sub_1F19 019B C3 F7 0E jp loc_EF7 019E ; --------------------------------------------------------------------------- 019E 019E loc_19E: ; ... 019E 21 88 10 ld hl, lcdstrIvalidFilter_1088 01A1 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 01A4 21 13 27 ld hl, promptQues_2713 ; '?' prompt 01A7 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 01AA C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 01AD ; --------------------------------------------------------------------------- 01AD 01AD loc_1AD: ; ... 01AD C3 F7 0E jp loc_EF7 01AD ; END OF FUNCTION CHUNK FOR sub_2489 01AD ; --------------------------------------------------------------------------- 01B0 8F unk_1B0: db 8Fh ; ; ... 01B1 01 db 1 01B2 00 db 0 01B3 00 db 0 01B4 E8 unk_1B4: db 0E8h ; ; ... 01B5 03 db 3 01B6 00 db 0 01B7 00 db 0 01B8 ; --------------------------------------------------------------------------- 01B8 ; START OF FUNCTION CHUNK FOR btnFilt1_247D 01B8 01B8 loc_1B8: ; ... 01B8 CD B0 1F call sub_1FB0 01BB CD 45 26 call sub_2645 01BE DD 21 41 C2 ld ix, word_C241 01C2 21 45 C2 ld hl, unk_C245 01C5 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 01C8 21 DD 03 ld hl, lcdstrFilterNumber_3DD 01CB CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 01CE CD DA 26 call loc_26DA 01D1 3A 41 C2 ld a, (word_C241) 01D4 CD 73 02 call sub_273 01D4 ; END OF FUNCTION CHUNK FOR btnFilt1_247D 01D7 ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 01D7 01D7 loc_1D7: ; ... 01D7 DA C8 02 jp c, loc_2C8 01DA 32 B4 C5 ld (word_C5B3+1), a ; XXX this might actually be part of the previous item 01DD CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 01E0 21 83 0F ld hl, lcdstrInvalidGrating_F83 01E3 DC 19 0F call c, lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 01E6 21 13 27 ld hl, promptQues_2713 ; '?' prompt 01E9 DC A4 25 call c, sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 01EC DA 03 0F jp c, loc_F03 ; reset lamps and reset to initial state 01EF 21 45 C2 ld hl, unk_C245 01F2 CD A0 13 call sub_13A0 01F5 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 01F8 CD A1 1E call sub_1EA1 01FB CD 21 1C call sub_1C21 01FE 21 98 C4 ld hl, byte_C498 0201 CD E3 14 call sub_14E3 0204 DA D8 02 jp c, loc_2D8 0207 CD 3A 02 call sub_23A 020A DA E8 02 jp c, loc_2E8 020D AF xor a 020E 32 C2 C5 ld (byte_C5C2), a 0211 21 B3 C4 ld hl, unk_C4B3 0214 3A B4 C5 ld a, (word_C5B3+1) ; XXX this might actually be part of the previous item 0217 87 add a, a 0218 87 add a, a 0219 4F ld c, a 021A 06 00 ld b, 0 021C 09 add hl, bc 021D CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0220 11 20 00 ld de, 20h ; ' ' 0223 19 add hl, de 0224 DD 21 98 C4 ld ix, byte_C498 0228 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 022B 3A B4 C5 ld a, (word_C5B3+1) ; XXX this might actually be part of the previous item 022E 26 00 ld h, 0 0230 6F ld l, a 0231 22 69 C2 ld (word_C269), hl 0234 CD 81 2B call sub_2B81 0237 C3 F7 0E jp loc_EF7 0237 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 023A 023A ; =============== S U B R O U T I N E ======================================= 023A 023A 023A sub_23A: ; ... 023A DD 21 B3 C4 ld ix, unk_C4B3 023E 11 04 00 ld de, 4 0241 06 08 ld b, 8 0243 0243 loc_243: ; ... 0243 FD 21 86 13 ld iy, byte_1386 0247 CD DA 11 call sub_11DA 024A 28 1A jr z, loc_266 024C FD 21 BD C3 ld iy, dword_C3BD ; XXX might actually be 48 bits 0250 CD DA 11 call sub_11DA 0253 28 16 jr z, loc_26B 0255 DD E5 push ix 0257 DD 21 BD C3 ld ix, dword_C3BD ; XXX might actually be 48 bits 025B FD 21 42 13 ld iy, _const_1_dword_1342 025F CD DA 11 call sub_11DA 0262 DD E1 pop ix 0264 28 05 jr z, loc_26B 0266 0266 loc_266: ; ... 0266 DD 19 add ix, de 0268 10 D9 djnz loc_243 026A C9 ret 026B ; --------------------------------------------------------------------------- 026B 026B loc_26B: ; ... 026B 21 86 13 ld hl, byte_1386 026E CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0271 37 scf 0272 C9 ret 0272 ; End of function sub_23A 0272 0273 0273 ; =============== S U B R O U T I N E ======================================= 0273 0273 0273 sub_273: ; ... 0273 0273 ; FUNCTION CHUNK AT 0EF7 SIZE 00000018 BYTES 0273 0273 E6 0F and 0Fh 0275 4F ld c, a 0276 3A C0 02 ld a, (byte_2C0) 0279 91 sub c 027A CA 8A 02 jp z, loc_28A 027D 3A C4 02 ld a, (byte_2C4) 0280 91 sub c 0281 CA 9A 02 jp z, loc_29A 0284 3A BC 02 ld a, (byte_2BC) 0287 91 sub c 0288 79 ld a, c 0289 C9 ret 028A ; --------------------------------------------------------------------------- 028A 028A loc_28A: ; ... 028A E1 pop hl 028B 21 B8 10 ld hl, lcdstrFiltInit_10B8 028E CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0291 CD 16 2A call sub_2A16 0294 CD 21 1C call sub_1C21 0297 C3 F7 0E jp loc_EF7 029A ; --------------------------------------------------------------------------- 029A 029A loc_29A: ; ... 029A E1 pop hl 029B CD A1 02 call sub_2A1 029E C3 F7 0E jp loc_EF7 029E ; End of function sub_273 029E 02A1 02A1 ; =============== S U B R O U T I N E ======================================= 02A1 02A1 02A1 sub_2A1: ; ... 02A1 F5 push af 02A2 06 40 ld b, 40h ; '@' 02A4 21 B3 C4 ld hl, unk_C4B3 02A7 3A 86 13 ld a, (byte_1386) 02AA 02AA loc_2AA: ; ... 02AA 77 ld (hl), a 02AB 23 inc hl 02AC 10 FC djnz loc_2AA 02AE 21 F0 10 ld hl, lcdstrFiltTblInit_10F0 02B1 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 02B4 CD 16 2A call sub_2A16 02B7 CD 21 1C call sub_1C21 02BA 02BA loc_2BA: ; ... 02BA F1 pop af 02BB C9 ret 02BB ; End of function sub_2A1 02BB 02BB ; --------------------------------------------------------------------------- 02BC 07 byte_2BC: db 7 ; ... 02BD 00 db 0 02BE 00 db 0 02BF 00 db 0 02C0 08 byte_2C0: db 8 ; ... 02C1 00 db 0 02C2 00 db 0 02C3 00 db 0 02C4 09 byte_2C4: db 9 ; ... 02C5 00 db 0 02C6 00 db 0 02C7 00 db 0 02C8 ; --------------------------------------------------------------------------- 02C8 ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 02C8 02C8 loc_2C8: ; ... 02C8 D6 21 sub 21h ; '!' 02CA 88 adc a, b 02CB 10 CD djnz loc_29A 02CD 19 add hl, de 02CE 0F rrca 02CF 21 13 27 ld hl, promptQues_2713 ; '?' prompt 02D2 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 02D5 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 02D8 ; --------------------------------------------------------------------------- 02D8 02D8 loc_2D8: ; ... 02D8 D6 21 sub 21h ; '!' 02DA 9B sbc a, e 02DB 10 CD djnz loc_2AA 02DD 19 add hl, de 02DE 0F rrca 02DF 21 13 27 ld hl, promptQues_2713 ; '?' prompt 02E2 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 02E5 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 02E8 ; --------------------------------------------------------------------------- 02E8 02E8 loc_2E8: ; ... 02E8 D6 21 sub 21h ; '!' 02EA D1 pop de 02EB 10 CD djnz loc_2BA 02ED 19 add hl, de 02EE 0F rrca 02EF 21 13 27 ld hl, promptQues_2713 ; '?' prompt 02F2 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 02F5 CD 0F 0F call sub_F0F 02F8 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 02FB ; --------------------------------------------------------------------------- 02FB 02FB loc_2FB: ; ... 02FB 21 88 10 ld hl, lcdstrIvalidFilter_1088 02FE CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0301 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0304 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0307 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 030A ; --------------------------------------------------------------------------- 030A 030A loc_30A: ; ... 030A 3A 3F C2 ld a, (byte_C23F) ; XXX 'last command'? 030D FE 2A cp 2Ah ; '*' 030F 20 0D jr nz, loc_31E 0311 AF xor a 0312 32 C2 C5 ld (byte_C5C2), a 0315 21 E5 C3 ld hl, unk_C3E5 0318 CD 86 2C call sub_2C86 031B C3 5E 03 jp loc_35E 031E ; --------------------------------------------------------------------------- 031E 031E loc_31E: ; ... 031E FE 3F cp 3Fh ; '?' 0320 C2 2C 03 jp nz, loc_32C 0323 3A 67 C2 ld a, (byte_C267) 0326 CD 62 03 call sub_362 0329 C3 5E 03 jp loc_35E 032C ; --------------------------------------------------------------------------- 032C 032C loc_32C: ; ... 032C E6 0F and 0Fh 032E 4F ld c, a 032F 3A C0 02 ld a, (byte_2C0) 0332 91 sub c 0333 CC 8A 03 call z, sub_38A 0336 CA F7 0E jp z, loc_EF7 0339 3A C4 02 ld a, (byte_2C4) 033C 91 sub c 033D CC A1 02 call z, sub_2A1 0340 CA F7 0E jp z, loc_EF7 0343 3A BC 02 ld a, (byte_2BC) 0346 91 sub c 0347 79 ld a, c 0348 DA FB 02 jp c, loc_2FB 034B CD 61 03 call nullsub_1 034E F5 push af 034F 3E FF ld a, 0FFh 0351 32 C2 C5 ld (byte_C5C2), a 0354 F1 pop af 0355 26 00 ld h, 0 0357 6F ld l, a 0358 22 69 C2 ld (word_C269), hl 035B CD 81 2B call sub_2B81 035E 035E loc_35E: ; ... 035E C3 F7 0E jp loc_EF7 035E ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0361 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD CTRL-"+" TO EXPAND] 0362 0362 ; =============== S U B R O U T I N E ======================================= 0362 0362 0362 sub_362: ; ... 0362 F5 push af 0363 3E 02 ld a, 2 0365 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 0368 F1 pop af 0369 6F ld l, a 036A 26 00 ld h, 0 036C 22 41 C2 ld (word_C241), hl 036F 21 00 00 ld hl, 0 0372 22 43 C2 ld (word_C243), hl 0375 21 41 C2 ld hl, word_C241 0378 CD 62 14 call sub_1462 037B 7E ld a, (hl) 037C CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 037F 3E 0D ld a, 0Dh 0381 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 0384 3E 0A ld a, 0Ah 0386 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 0389 C9 ret 0389 ; End of function sub_362 0389 038A 038A ; =============== S U B R O U T I N E ======================================= 038A 038A 038A sub_38A: ; ... 038A F5 push af 038B 21 B8 10 ld hl, lcdstrFiltInit_10B8 038E CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0391 CD 16 2A call sub_2A16 0394 CD 21 1C call sub_1C21 0397 F1 pop af 0398 C9 ret 0398 ; End of function sub_38A 0398 0399 ; --------------------------------------------------------------------------- 0399 21 B8 10 ld hl, lcdstrFiltInit_10B8 039C CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 039F CD 16 2A call sub_2A16 03A2 CD 21 1C call sub_1C21 03A5 21 17 27 ld hl, promptStar_2717 ; '*' prompt 03A8 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 03AB C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 03AE ; --------------------------------------------------------------------------- 03AE ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 03AE 03AE loc_3AE: ; ... 03AE CD B0 1F call sub_1FB0 03B1 3A 3F C2 ld a, (byte_C23F) ; XXX 'last command'? 03B4 E6 0F and 0Fh 03B6 4F ld c, a 03B7 3A BC 02 ld a, (byte_2BC) 03BA 91 sub c 03BB 79 ld a, c 03BC F5 push af 03BD CD 45 26 call sub_2645 03C0 DD 21 41 C2 ld ix, word_C241 03C4 21 45 C2 ld hl, unk_C245 03C7 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 03CA F1 pop af 03CB C3 D7 01 jp loc_1D7 03CB ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 03CE ; --------------------------------------------------------------------------- 03CE ; START OF FUNCTION CHUNK FOR btnFilt2_2483 03CE 03CE loc_3CE: ; ... 03CE CD 45 26 call sub_2645 03D1 21 DD 03 ld hl, lcdstrFilterNumber_3DD 03D4 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 03D7 CD 5D 27 call sub_275D 03DA C3 F7 0E jp loc_EF7 03DA ; END OF FUNCTION CHUNK FOR btnFilt2_2483 03DA ; --------------------------------------------------------------------------- 03DD 00 lcdstrFilterNumber_3DD:db 0 ; ... 03DE 3C db 60 ; 1,20 03DF 46 49 4C 54+aFilterNumber@: .ascii 'FILTER NUMBER: @' 03EF 40 db 64 ; 1,24 03F0 03F0 ; =============== S U B R O U T I N E ======================================= 03F0 03F0 ; XXX a 'user mode' function (i.e. return address manipulated in ISR at 2527) 03F0 03F0 XXXhandleCommand_3F0: ; ... 03F0 03F0 ; FUNCTION CHUNK AT 015D SIZE 00000009 BYTES 03F0 ; FUNCTION CHUNK AT 01D7 SIZE 00000063 BYTES 03F0 ; FUNCTION CHUNK AT 02C8 SIZE 00000099 BYTES 03F0 ; FUNCTION CHUNK AT 03AE SIZE 00000020 BYTES 03F0 ; FUNCTION CHUNK AT 08FC SIZE 0000002F BYTES 03F0 ; FUNCTION CHUNK AT 0C8B SIZE 00000048 BYTES 03F0 ; FUNCTION CHUNK AT 0CD7 SIZE 00000054 BYTES 03F0 ; FUNCTION CHUNK AT 0D5D SIZE 0000014D BYTES 03F0 ; FUNCTION CHUNK AT 31C3 SIZE 000000BB BYTES 03F0 ; FUNCTION CHUNK AT 364C SIZE 00000012 BYTES 03F0 03F0 21 71 C0 ld hl, unk_C071 ; XXX appears to be command buffer from DART data at least (maybe also gpib) 03F3 03F3 loc_3F3: ; ... 03F3 7E ld a, (hl) 03F4 23 inc hl 03F5 FE 2E cp '.' 03F7 CA F3 03 jp z, loc_3F3 03FA FE 30 cp '0' 03FC DA 04 04 jp c, loc_404 03FF FE 3A cp ':' 0401 DA F3 03 jp c, loc_3F3 0404 0404 loc_404: ; ... 0404 32 3E C2 ld (byte_C23E), a ; XXX 'command' 0407 AF xor a 0408 32 3F C2 ld (byte_C23F), a ; XXX 'last command'? 040B 7E ld a, (hl) 040C FE 0D cp 0Dh 040E 28 07 jr z, loc_417 0410 FE 0A cp 0Ah 0412 28 03 jr z, loc_417 0414 32 3F C2 ld (byte_C23F), a ; XXX 'last command'? 0417 0417 loc_417: ; ... 0417 2B dec hl 0418 36 40 ld (hl), 40h ; '@' 041A 22 00 C0 ld (word_C000), hl ; XXX appears to be a buffer pointer; esp for DART data but maybe others 041D 21 62 0F ld hl, lcdstr29sp_F62 ; clear (1,12) to end-of-line 0420 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 0423 3A 3E C2 ld a, (byte_C23E) ; XXX 'command' 0426 FE 4C cp 4Ch ; 'L' 0428 CA 91 04 jp z, btnSlew_491 ; XXX handle button SLEW 042B FE 50 cp 50h ; 'P' 042D CA 40 09 jp z, sub_940 0430 FE 47 cp 47h ; 'G' 0432 CA 7F 09 jp z, btnGrat_97F ; XXX handle button GRAT 0435 FE 53 cp 53h ; 'S' 0437 CA FC 08 jp z, loc_8FC 043A FE 56 cp 56h ; 'V' 043C CA 6E 0B jp z, btnW1_B6E ; XXX handle button W1 043F FE 57 cp 57h ; 'W' 0441 CA BE 0B jp z, btnW2_BBE ; XXX handle button W2 0444 FE 41 cp 41h ; 'A' 0446 CA 0E 0C jp z, btnWstep_C0E ; XXX handle button WSTEP 0449 FE 43 cp 43h ; 'C' 044B CA D7 0C jp z, loc_CD7 044E FE 42 cp 42h ; 'B' 0450 CA 8B 0C jp z, loc_C8B 0453 FE 58 cp 58h ; 'X' 0455 CA C4 30 jp z, btnScan_30C4 ; XXX handle button SCAN 0458 FE 59 cp 59h ; 'Y' 045A CA 5D 0D jp z, loc_D5D 045D FE 44 cp 44h ; 'D' 045F CA 26 01 jp z, btnSpeed_126 ; XXX handle button SPEED 0462 FE 46 cp 46h ; 'F' 0464 CA AE 03 jp z, loc_3AE 0467 FE 4D cp 4Dh ; 'M' 0469 CA 0A 03 jp z, loc_30A 046C CD D8 1A call sub_1AD8 046F 21 7E 04 ld hl, lcdstrInvalidCommand_47E 0472 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0475 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0478 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 047B C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 047B ; End of function XXXhandleCommand_3F0 047B 047B ; --------------------------------------------------------------------------- 047E 0F lcdstrInvalidCommand_47E:db 0Fh ; ... 047F 34 db 52 ; (1,12) 0480 49 4E 56 41+ .ascii 'INVALID COMMAND@' 0490 2A db 42 ; (1,2) 0491 0491 ; =============== S U B R O U T I N E ======================================= 0491 0491 ; XXX handle button SLEW 0491 0491 btnSlew_491: ; ... 0491 CD 45 26 call sub_2645 0494 21 41 C2 ld hl, word_C241 0497 CD B0 1F call sub_1FB0 049A CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 049D 21 83 0F ld hl, lcdstrInvalidGrating_F83 04A0 DC 19 0F call c, lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 04A3 21 13 27 ld hl, promptQues_2713 ; '?' prompt 04A6 DC A4 25 call c, sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 04A9 DA 03 0F jp c, loc_F03 ; reset lamps and reset to initial state 04AC 21 41 C2 ld hl, word_C241 04AF CD A0 13 call sub_13A0 04B2 21 9C C5 ld hl, unk_C59C 04B5 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 04B8 CD A1 1E call sub_1EA1 04BB 21 1B C4 ld hl, unk_C41B 04BE CD 62 15 call sub_1562 ; XXX move 4byte thing from C498 to (hl) 04C1 CD E3 14 call sub_14E3 04C4 38 53 jr c, loc_519 04C6 AF xor a 04C7 32 1F C5 ld (byte_C51F), a 04CA DD 21 9C C5 ld ix, unk_C59C 04CE 21 E5 C3 ld hl, unk_C3E5 04D1 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 04D4 CD 34 20 call sub_2034 04D7 CD 42 20 call sub_2042 04DA 3E 89 ld a, 89h ; '' 04DC 32 6B C5 ld (byte_C56B), a 04DF 3A C2 C5 ld a, (byte_C5C2) 04E2 FE FF cp 0FFh 04E4 28 06 jr z, loc_4EC 04E6 21 9C C5 ld hl, unk_C59C 04E9 CD 86 2C call sub_2C86 04EC 04EC loc_4EC: ; ... 04EC 21 1B C4 ld hl, unk_C41B 04EF CD 28 05 call sub_528 04F2 F5 push af 04F3 FE 01 cp 1 04F5 CC E1 05 call z, sub_5E1 04F8 F1 pop af 04F9 FE 02 cp 2 04FB CC 81 05 call z, sub_581 04FE 21 D5 C3 ld hl, unk_C3D5 0501 DD 21 1B C4 ld ix, unk_C41B 0505 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0508 3E FF ld a, 0FFh 050A 32 1F C5 ld (byte_C51F), a 050D CD 3B 20 call sub_203B 0510 CD 46 20 call sub_2046 0513 CD 83 08 call sub_883 0516 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0519 ; --------------------------------------------------------------------------- 0519 0519 loc_519: ; ... 0519 21 46 0F ld hl, lcdstrInvSkewWavelen_F46 051C CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 051F 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0522 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0525 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0525 ; End of function btnSlew_491 0525 0528 0528 ; =============== S U B R O U T I N E ======================================= 0528 0528 0528 sub_528: ; ... 0528 E5 push hl 0529 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 052C 21 D5 C3 ld hl, unk_C3D5 052F CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0532 CD B7 15 call sub_15B7 0535 30 27 jr nc, loc_55E 0537 0537 loc_537: ; ... 0537 E1 pop hl 0538 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 053B 21 D5 C3 ld hl, unk_C3D5 053E CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0541 CD B7 15 call sub_15B7 0544 E5 push hl 0545 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 0548 22 87 C4 ld (word_C487), hl 054B 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 054E 22 89 C4 ld (word_C489), hl 0551 E1 pop hl 0552 21 F5 C3 ld hl, unk_C3F5 0555 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0558 CD B8 07 call sub_7B8 055B 3E 01 ld a, 1 055D C9 ret 055E ; --------------------------------------------------------------------------- 055E 055E loc_55E: ; ... 055E 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0561 CD 4A 12 call sub_124A 0564 28 D1 jr z, loc_537 0566 E1 pop hl 0567 E5 push hl 0568 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 056B 22 87 C4 ld (word_C487), hl 056E 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 0571 22 89 C4 ld (word_C489), hl 0574 E1 pop hl 0575 21 F5 C3 ld hl, unk_C3F5 0578 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 057B CD C5 07 call sub_7C5 057E 3E 02 ld a, 2 0580 C9 ret 0580 ; End of function sub_528 0580 0581 0581 ; =============== S U B R O U T I N E ======================================= 0581 0581 0581 sub_581: ; ... 0581 21 52 06 ld hl, word_652 0584 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0587 21 F5 C3 ld hl, unk_C3F5 058A CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 058D CD B7 15 call sub_15B7 0590 DA B1 05 jp c, loc_5B1 0593 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0596 CD 4A 12 call sub_124A 0599 CA 0F 06 jp z, sub_60F 059C CD C5 07 call sub_7C5 059F E5 push hl 05A0 2A F5 C3 ld hl, (unk_C3F5) 05A3 22 87 C4 ld (word_C487), hl 05A6 2A F7 C3 ld hl, (unk_C3F7) 05A9 22 89 C4 ld (word_C489), hl 05AC E1 pop hl 05AD CD D4 05 call sub_5D4 05B0 C9 ret 05B1 ; --------------------------------------------------------------------------- 05B1 05B1 loc_5B1: ; ... 05B1 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 05B4 E5 push hl 05B5 21 B3 17 ld hl, zeros_17AF+4 05B8 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 05BB E1 pop hl 05BC CD B7 15 call sub_15B7 05BF E5 push hl 05C0 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 05C3 22 87 C4 ld (word_C487), hl 05C6 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 05C9 22 89 C4 ld (word_C489), hl 05CC E1 pop hl 05CD CD B8 07 call sub_7B8 05D0 CD E1 05 call sub_5E1 05D3 C9 ret 05D3 ; End of function sub_581 05D3 05D4 05D4 ; =============== S U B R O U T I N E ======================================= 05D4 05D4 05D4 sub_5D4: ; ... 05D4 CD F8 20 call sub_20F8 05D7 21 87 C4 ld hl, word_C487 05DA CD 4A 12 call sub_124A 05DD C4 67 06 call nz, sub_667 05E0 C9 ret 05E0 ; End of function sub_5D4 05E0 05E1 05E1 ; =============== S U B R O U T I N E ======================================= 05E1 05E1 05E1 sub_5E1: ; ... 05E1 CD F8 20 call sub_20F8 05E4 21 52 06 ld hl, word_652 05E7 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 05EA 21 87 C4 ld hl, word_C487 05ED CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 05F0 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 05F3 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 05F6 CD 4A 12 call sub_124A 05F9 C8 ret z 05FA E5 push hl 05FB 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 05FE 22 87 C4 ld (word_C487), hl 0601 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 0604 22 89 C4 ld (word_C489), hl 0607 E1 pop hl 0608 CD 67 06 call sub_667 060B CD 0F 06 call sub_60F 060E C9 ret 060E ; End of function sub_5E1 060E 060F 060F ; =============== S U B R O U T I N E ======================================= 060F 060F 060F sub_60F: ; ... 060F CD F8 20 call sub_20F8 0612 E5 push hl 0613 D5 push de 0614 21 F4 01 ld hl, 500 0617 CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 061A D1 pop de 061B E1 pop hl 061C CD 56 06 call sub_656 061F E5 push hl 0620 2A 52 06 ld hl, (word_652) 0623 22 87 C4 ld (word_C487), hl 0626 2A 54 06 ld hl, (word_654) 0629 22 89 C4 ld (word_C489), hl 062C E1 pop hl 062D CD C5 07 call sub_7C5 0630 CD 67 06 call sub_667 0633 CD 5E 06 call sub_65E 0636 C9 ret 0636 ; End of function sub_60F 0636 0637 0637 ; =============== S U B R O U T I N E ======================================= 0637 0637 0637 sub_637: ; ... 0637 F5 push af 0638 AF xor a 0639 32 1F C5 ld (byte_C51F), a 063C 21 00 00 ld hl, 0 063F 22 87 C4 ld (word_C487), hl 0642 22 89 C4 ld (word_C489), hl 0645 CD B8 07 call sub_7B8 0648 CD E1 05 call sub_5E1 064B 3E FF ld a, 0FFh 064D 32 1F C5 ld (byte_C51F), a 0650 F1 pop af 0651 C9 ret 0651 ; End of function sub_637 0651 0651 ; --------------------------------------------------------------------------- 0652 30 00 word_652: dw 30h ; ... 0654 00 00 word_654: dw 0 ; ... 0656 0656 ; =============== S U B R O U T I N E ======================================= 0656 0656 0656 sub_656: ; ... 0656 F5 push af 0657 3E 02 ld a, 2 0659 CD 2B 09 call sub_92B 065C F1 pop af 065D C9 ret 065D ; End of function sub_656 065D 065E 065E ; =============== S U B R O U T I N E ======================================= 065E 065E 065E sub_65E: ; ... 065E F5 push af 065F 3A 73 C2 ld a, (byte_C273) 0662 CD 2B 09 call sub_92B 0665 F1 pop af 0666 C9 ret 0666 ; End of function sub_65E 0666 0667 0667 ; =============== S U B R O U T I N E ======================================= 0667 0667 0667 sub_667: ; ... 0667 F3 di 0668 3E FF ld a, 0FFh 066A 32 3E C5 ld (unk_C53E), a 066D AF xor a 066E 32 3F C5 ld (unk_C53F), a 0671 FB ei 0672 DD 21 87 C4 ld ix, word_C487 0676 CD 42 12 call sub_1242 0679 CA AA 06 jp z, loc_6AA 067C CD 5B 12 call sub_125B 067F CA AA 06 jp z, loc_6AA 0682 FD 21 09 08 ld iy, 809h 0686 CD DA 11 call sub_11DA 0689 D2 E2 06 jp nc, loc_6E2 068C FD 21 05 08 ld iy, 805h 0690 CD DA 11 call sub_11DA 0693 D2 B6 06 jp nc, loc_6B6 0696 ED 5B 1D 08 ld de, (word_81D) 069A ED 53 15 C4 ld (unk_C415), de 069E 069E loc_69E: ; ... 069E CD FF 11 call sub_11FF 06A1 DA AA 06 jp c, loc_6AA 06A4 CD 87 07 call sub_787 06A7 C3 9E 06 jp loc_69E 06AA ; --------------------------------------------------------------------------- 06AA 06AA loc_6AA: ; ... 06AA AF xor a 06AB 32 3E C5 ld (unk_C53E), a 06AE 3A 6B C5 ld a, (byte_C56B) 06B1 AF xor a 06B2 32 6B C5 ld (byte_C56B), a 06B5 C9 ret 06B6 ; --------------------------------------------------------------------------- 06B6 06B6 loc_6B6: ; ... 06B6 DD 6E 00 ld l, (ix+0) 06B9 DD 66 01 ld h, (ix+1) 06BC CB 45 bit 0, l 06BE CA CF 06 jp z, loc_6CF 06C1 CB 3C srl h 06C3 CB 1D rr l 06C5 22 13 C4 ld (unk_C413), hl 06C8 23 inc hl 06C9 22 11 C4 ld (unk_C411), hl 06CC C3 D9 06 jp loc_6D9 06CF ; --------------------------------------------------------------------------- 06CF 06CF loc_6CF: ; ... 06CF CB 3C srl h 06D1 CB 1D rr l 06D3 22 11 C4 ld (unk_C411), hl 06D6 22 13 C4 ld (unk_C413), hl 06D9 06D9 loc_6D9: ; ... 06D9 CD 2A 07 call sub_72A 06DC CD FE 06 call sub_6FE 06DF C3 AA 06 jp loc_6AA 06E2 ; --------------------------------------------------------------------------- 06E2 06E2 loc_6E2: ; ... 06E2 FD 21 01 08 ld iy, 801h 06E6 CD A4 12 call sub_12A4 06E9 2A 11 08 ld hl, (word_811) 06EC 22 13 C4 ld (unk_C413), hl 06EF 22 11 C4 ld (unk_C411), hl 06F2 CD 2A 07 call sub_72A 06F5 CD 55 07 call sub_755 06F8 CD FE 06 call sub_6FE 06FB C3 AA 06 jp loc_6AA 06FB ; End of function sub_667 06FB 06FE 06FE ; =============== S U B R O U T I N E ======================================= 06FE 06FE 06FE sub_6FE: ; ... 06FE ED 4B 15 C4 ld bc, (unk_C415) 0702 0702 loc_702: ; ... 0702 ED 43 15 C4 ld (unk_C415), bc 0706 ED 43 15 C4 ld (unk_C415), bc 070A CD 87 07 call sub_787 070D 03 inc bc 070E 0B dec bc 070F 03 inc bc 0710 0B dec bc 0711 03 inc bc 0712 0B dec bc 0713 00 nop 0714 0B dec bc 0715 0B dec bc 0716 0B dec bc 0717 03 inc bc 0718 2A 11 C4 ld hl, (unk_C411) 071B 11 01 00 ld de, 1 071E AF xor a 071F ED 52 sbc hl, de 0721 22 11 C4 ld (unk_C411), hl 0724 B4 or h 0725 B5 or l 0726 C8 ret z 0727 C3 02 07 jp loc_702 0727 ; End of function sub_6FE 0727 072A 072A ; =============== S U B R O U T I N E ======================================= 072A 072A 072A sub_72A: ; ... 072A 01 20 00 ld bc, 20h ; ' ' 072D 072D loc_72D: ; ... 072D ED 43 15 C4 ld (unk_C415), bc 0731 ED 43 15 C4 ld (unk_C415), bc 0735 CD 87 07 call sub_787 0738 03 inc bc 0739 0B dec bc 073A 03 inc bc 073B 0B dec bc 073C 03 inc bc 073D 0B dec bc 073E 00 nop 073F 03 inc bc 0740 03 inc bc 0741 03 inc bc 0742 0B dec bc 0743 2A 13 C4 ld hl, (unk_C413) 0746 11 01 00 ld de, 1 0749 AF xor a 074A ED 52 sbc hl, de 074C 22 13 C4 ld (unk_C413), hl 074F B4 or h 0750 B5 or l 0751 C8 ret z 0752 C3 2D 07 jp loc_72D 0752 ; End of function sub_72A 0752 0755 0755 ; =============== S U B R O U T I N E ======================================= 0755 0755 0755 sub_755: ; ... 0755 2A 87 C4 ld hl, (word_C487) 0758 11 01 00 ld de, 1 075B B7 or a 075C ED 52 sbc hl, de 075E 22 87 C4 ld (word_C487), hl 0761 2A 89 C4 ld hl, (word_C489) 0764 1B dec de 0765 ED 52 sbc hl, de 0767 22 89 C4 ld (word_C489), hl 076A D8 ret c 076B CD 87 07 call sub_787 076E C3 55 07 jp sub_755 076E ; End of function sub_755 076E 0771 0771 ; =============== S U B R O U T I N E ======================================= 0771 0771 0771 sub_771: ; ... 0771 F5 push af 0772 D5 push de 0773 E5 push hl 0774 2A A8 C5 ld hl, (unk_C5A8) 0777 22 15 C4 ld (unk_C415), hl 077A CD 87 07 call sub_787 077D 21 D0 07 ld hl, 2000 0780 CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 0783 E1 pop hl 0784 D1 pop de 0785 F1 pop af 0786 C9 ret 0786 ; End of function sub_771 0786 0787 0787 ; =============== S U B R O U T I N E ======================================= 0787 0787 0787 sub_787: ; ... 0787 0787 ; FUNCTION CHUNK AT 0123 SIZE 00000003 BYTES 0787 ; FUNCTION CHUNK AT 07D2 SIZE 00000003 BYTES 0787 0787 D3 48 out (48h), a ; XXX MONO related 0789 2A A8 C5 ld hl, (unk_C5A8) 078C ED 5B 15 C4 ld de, (unk_C415) 0790 0790 loc_790: ; ... 0790 ED 52 sbc hl, de 0792 D2 90 07 jp nc, loc_790 0795 3A 6E C5 ld a, (unk_C56E) 0798 FE FF cp 0FFh 079A CA A7 07 jp z, loc_7A7 079D E6 00 and 0 079F FE 00 cp 0 07A1 C2 D2 07 jp nz, loc_7D2 07A4 C3 B1 07 jp loc_7B1 07A7 ; --------------------------------------------------------------------------- 07A7 07A7 loc_7A7: ; ... 07A7 E6 00 and 0 07A9 FE 00 cp 0 07AB C2 D2 07 jp nz, loc_7D2 07AE C3 B1 07 jp loc_7B1 07B1 ; --------------------------------------------------------------------------- 07B1 07B1 loc_7B1: ; ... 07B1 3A 1F C5 ld a, (byte_C51F) 07B4 FE 00 cp 0 07B6 C8 ret z 07B7 C9 ret 07B7 ; End of function sub_787 07B7 07B8 07B8 ; =============== S U B R O U T I N E ======================================= 07B8 07B8 07B8 sub_7B8: ; ... 07B8 F5 push af 07B9 3A AC C4 ld a, (unk_C4AC) 07BC CB 87 res 0, a 07BE D3 30 out (30h), a ; XXX PIO0bp related 07C0 32 AC C4 ld (unk_C4AC), a 07C3 F1 pop af 07C4 C9 ret 07C4 ; End of function sub_7B8 07C4 07C5 07C5 ; =============== S U B R O U T I N E ======================================= 07C5 07C5 07C5 sub_7C5: ; ... 07C5 F5 push af 07C6 3A AC C4 ld a, (unk_C4AC) 07C9 CB C7 set 0, a 07CB D3 30 out (30h), a ; XXX PIO0bp related 07CD 32 AC C4 ld (unk_C4AC), a 07D0 F1 pop af 07D1 C9 ret 07D1 ; End of function sub_7C5 07D1 07D2 ; --------------------------------------------------------------------------- 07D2 ; START OF FUNCTION CHUNK FOR sub_787 07D2 07D2 loc_7D2: ; ... 07D2 C3 23 01 jp infiniteloop_123 07D2 ; END OF FUNCTION CHUNK FOR sub_787 07D5 07D5 ; =============== S U B R O U T I N E ======================================= 07D5 07D5 07D5 sub_7D5: 07D5 F5 push af 07D6 CD B8 07 call sub_7B8 07D9 07D9 loc_7D9: ; ... 07D9 21 D0 07 ld hl, 7D0h 07DC 22 87 C4 ld (word_C487), hl 07DF 21 00 00 ld hl, 0 07E2 22 89 C4 ld (word_C489), hl 07E5 CD 34 20 call sub_2034 07E8 21 0D 00 ld hl, 13 07EB CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 07EE CD 67 06 call sub_667 07F1 DB 30 in a, (30h) ; XXX PIO0bp 07F3 E6 30 and 30h ; '0' 07F5 FE 00 cp 0 07F7 20 E0 jr nz, loc_7D9 07F9 F1 pop af 07FA C9 ret 07FA ; End of function sub_7D5 07FA 07FB 07FB ; =============== S U B R O U T I N E ======================================= 07FB 07FB 07FB sub_7FB: 07FB F5 push af 07FC CD C5 07 call sub_7C5 07FF 18 D8 jr loc_7D9 07FF ; End of function sub_7FB 07FF 07FF ; --------------------------------------------------------------------------- 0801 80 db 80h ; 0802 00 db 0 0803 00 db 0 0804 00 db 0 0805 15 db 15h 0806 00 db 0 0807 00 db 0 0808 00 db 0 0809 A0 db 0A0h ; 080A 00 db 0 080B 00 db 0 080C 00 db 0 080D 60 db 60h ; ` 080E 00 db 0 080F 00 db 0 0810 00 db 0 0811 40 00 word_811: dw 40h ; ... 0813 00 db 0 0814 00 db 0 0815 00 A0 word_815: dw 0A000h ; ... 0817 00 db 0 0818 00 db 0 0819 F0 0F word_819: dw 0FF0h ; ... 081B 00 db 0 081C 00 db 0 081D 60 00 word_81D: dw 60h ; ... 081F 00 db 0 0820 00 db 0 0821 0821 ; =============== S U B R O U T I N E ======================================= 0821 0821 ; XXX test some byte C4AD and set carry if zero 0821 0821 sub_821: ; ... 0821 3A AD C4 ld a, (byte_C4AD) 0824 FE 00 cp 0 0826 C0 ret nz 0827 37 scf 0828 C9 ret 0828 ; End of function sub_821 0828 0829 0829 ; =============== S U B R O U T I N E ======================================= 0829 0829 0829 sub_829: ; ... 0829 21 D5 C3 ld hl, unk_C3D5 082C CD E3 14 call sub_14E3 082F DC 52 08 call c, sub_852 0832 3A 73 C2 ld a, (byte_C273) 0835 D6 0A sub 0Ah 0837 D4 7C 08 call nc, sub_87C 083A 3A 73 C2 ld a, (byte_C273) 083D CD 2B 09 call sub_92B 0840 2A 96 C4 ld hl, (word_C496) 0843 E5 push hl 0844 CD C7 0A call sub_AC7 0847 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 084A DC 60 08 call c, sub_860 084D E1 pop hl 084E CD DF 09 call sub_9DF 0851 C9 ret 0851 ; End of function sub_829 0851 0852 0852 ; =============== S U B R O U T I N E ======================================= 0852 0852 0852 sub_852: ; ... 0852 21 D5 C3 ld hl, unk_C3D5 0855 DD 21 6A 13 ld ix, unk_136A 0859 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 085C CD 8E 11 call sub_118E ; sr (hl); 3 bytes le 085F C9 ret 085F ; End of function sub_852 085F 0860 0860 ; =============== S U B R O U T I N E ======================================= 0860 0860 0860 sub_860: ; ... 0860 E1 pop hl 0861 21 B0 04 ld hl, 4B0h 0864 22 96 C4 ld (word_C496), hl 0867 E5 push hl 0868 CD C7 0A call sub_AC7 086B CD 27 14 call sub_1427 086E DD 21 82 C5 ld ix, unk_C582 0872 21 BC C5 ld hl, unk_C5BC 0875 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0878 CD D4 14 call sub_14D4 087B C9 ret 087B ; End of function sub_860 087B 087C 087C ; =============== S U B R O U T I N E ======================================= 087C 087C 087C sub_87C: ; ... 087C 3E 05 ld a, 5 087E 32 73 C2 ld (byte_C273), a 0881 C9 ret 0881 ; End of function sub_87C 0881 0882 ; --------------------------------------------------------------------------- 0882 C9 ret 0883 0883 ; =============== S U B R O U T I N E ======================================= 0883 0883 0883 sub_883: ; ... 0883 3E 02 ld a, 2 0885 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 0888 21 E5 C3 ld hl, unk_C3E5 088B CD 62 14 call sub_1462 088E 01 09 00 ld bc, 9 0891 09 add hl, bc 0892 3A AD C4 ld a, (byte_C4AD) 0895 ED 44 neg 0897 C6 0A add a, 0Ah 0899 47 ld b, a 089A CD B6 08 call sub_8B6 089D 3E 2E ld a, 2Eh ; '.' 089F CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 08A2 3A AD C4 ld a, (byte_C4AD) 08A5 47 ld b, a 08A6 B7 or a 08A7 C4 C6 08 call nz, sub_8C6 08AA 21 B1 08 ld hl, promptStar2_8B1 ; another star prompt 08AD CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 08B0 C9 ret 08B0 ; End of function sub_883 08B0 08B0 ; --------------------------------------------------------------------------- 08B1 0D promptStar2_8B1:db 0Dh ; ... 08B1 ; another star prompt 08B2 0A db 0Ah 08B3 2A db '*' 08B4 03 db 3 08B5 40 db '@' 08B6 08B6 ; =============== S U B R O U T I N E ======================================= 08B6 08B6 08B6 sub_8B6: ; ... 08B6 C5 push bc 08B7 08B7 loc_8B7: ; ... 08B7 7E ld a, (hl) 08B8 FE 30 cp 30h ; '0' 08BA 20 0B jr nz, loc_8C7 08BC 2B dec hl 08BD 10 F8 djnz loc_8B7 08BF 3E 30 ld a, 30h ; '0' 08C1 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 08C4 C1 pop bc 08C5 C9 ret 08C5 ; End of function sub_8B6 08C5 08C6 08C6 ; =============== S U B R O U T I N E ======================================= 08C6 08C6 08C6 sub_8C6: ; ... 08C6 C5 push bc 08C7 08C7 loc_8C7: ; ... 08C7 7E ld a, (hl) 08C8 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 08CB 2B dec hl 08CC 10 F9 djnz loc_8C7 08CE C1 pop bc 08CF C9 ret 08CF ; End of function sub_8C6 08CF 08D0 08D0 ; =============== S U B R O U T I N E ======================================= 08D0 08D0 08D0 sub_8D0: ; ... 08D0 DD 21 55 C2 ld ix, word_C255 08D4 21 41 C2 ld hl, word_C241 08D7 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 08DA 08DA loc_8DA: ; ... 08DA 21 B6 00 ld hl, 0B6h ; '' 08DD CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 08E0 DD 21 41 C2 ld ix, word_C241 08E4 CD 19 12 call sub_1219 08E7 00 nop 08E8 00 nop 08E9 00 nop 08EA 00 nop 08EB D2 DA 08 jp nc, loc_8DA 08EE C9 ret 08EE ; End of function sub_8D0 08EE 08EF ; --------------------------------------------------------------------------- 08EF 21 05 00 ld hl, 5 08F2 08F2 ; =============== S U B R O U T I N E ======================================= 08F2 08F2 ; XXX delay by expensively decrementing HL to zero 08F2 08F2 delay_8F2: ; ... 08F2 11 01 00 ld de, 1 08F5 B7 or a ; ensure carry clear 08F6 08F6 loop_8F6: ; ... 08F6 ED 52 sbc hl, de 08F8 C2 F6 08 jp nz, loop_8F6 08FB C9 ret 08FB ; End of function delay_8F2 08FB 08FC ; --------------------------------------------------------------------------- 08FC ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 08FC 08FC loc_8FC: ; ... 08FC CD DA 26 call loc_26DA 08FF 21 41 C2 ld hl, word_C241 0902 CD 29 28 call sub_2829 0905 3A 41 C2 ld a, (word_C241) 0908 D6 0A sub 0Ah 090A D2 1C 09 jp nc, loc_91C 090D 3A 41 C2 ld a, (word_C241) 0910 32 73 C2 ld (byte_C273), a 0913 CD 2B 09 call sub_92B 0916 CD 21 1C call sub_1C21 0919 C3 F7 0E jp loc_EF7 091C ; --------------------------------------------------------------------------- 091C 091C loc_91C: ; ... 091C 21 97 0F ld hl, lcdstrValidParam_F97 091F CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0922 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0925 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0928 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0928 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 092B 092B ; =============== S U B R O U T I N E ======================================= 092B 092B 092B sub_92B: ; ... 092B 47 ld b, a 092C 2A 15 08 ld hl, (word_815) 092F ED 5B 19 08 ld de, (word_819) 0933 FE 00 cp 0 0935 28 05 jr z, loc_93C 0937 AF xor a 0938 0938 loc_938: ; ... 0938 ED 52 sbc hl, de 093A 10 FC djnz loc_938 093C 093C loc_93C: ; ... 093C 22 A8 C5 ld (unk_C5A8), hl 093F C9 ret 093F ; End of function sub_92B 093F 0940 0940 ; =============== S U B R O U T I N E ======================================= 0940 0940 0940 sub_940: ; ... 0940 CD B0 1F call sub_1FB0 0943 CD 50 27 call sub_2750 0946 21 41 C2 ld hl, word_C241 0949 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 094C 21 8A 13 ld hl, unk_138A 094F CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0952 CD 2C 16 call sub_162C 0955 21 72 13 ld hl, unk_1372 0958 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 095B CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 095E 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0961 CD E3 14 call sub_14E3 0964 DA 70 09 jp c, loc_970 0967 21 D5 C3 ld hl, unk_C3D5 096A CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 096D C3 F7 0E jp loc_EF7 0970 ; --------------------------------------------------------------------------- 0970 0970 loc_970: ; ... 0970 21 B3 0F ld hl, lcdstrInvalidMaxPos_FB3 0973 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0976 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0979 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 097C C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 097C ; End of function sub_940 097C 097F 097F ; =============== S U B R O U T I N E ======================================= 097F 097F ; XXX handle button GRAT 097F 097F btnGrat_97F: ; ... 097F AF xor a 0980 32 AD C4 ld (byte_C4AD), a 0983 CD B0 1F call sub_1FB0 0986 CD DA 26 call loc_26DA 0989 CD CC 09 call sub_9CC 098C 2A 41 C2 ld hl, (word_C241) 098F CD C7 0A call sub_AC7 0992 3A AD C4 ld a, (byte_C4AD) 0995 FE 00 cp 0 0997 CA A0 09 jp z, loc_9A0 099A CD DF 09 call sub_9DF 099D C3 B8 09 jp loc_9B8 09A0 ; --------------------------------------------------------------------------- 09A0 09A0 loc_9A0: ; ... 09A0 21 00 00 ld hl, 0 09A3 22 96 C4 ld (word_C496), hl 09A6 CD BE 09 call sub_9BE 09A9 21 D3 0F ld hl, lcdstrInvalidGrating_FD3 09AC CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 09AF 21 13 27 ld hl, promptQues_2713 ; '?' prompt 09B2 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 09B5 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 09B8 ; --------------------------------------------------------------------------- 09B8 09B8 loc_9B8: ; ... 09B8 CD BE 09 call sub_9BE 09BB C3 F7 0E jp loc_EF7 09BB ; End of function btnGrat_97F 09BB 09BE 09BE ; =============== S U B R O U T I N E ======================================= 09BE 09BE 09BE sub_9BE: ; ... 09BE 3A AC C5 ld a, (unk_C5AC) 09C1 FE 63 cp 63h ; 'c' 09C3 3E 00 ld a, 0 09C5 32 AC C5 ld (unk_C5AC), a 09C8 C9 ret 09C8 ; End of function sub_9BE 09C8 09C9 ; --------------------------------------------------------------------------- 09C9 0E 00 ld c, 0 09CB C9 ret 09CC 09CC ; =============== S U B R O U T I N E ======================================= 09CC 09CC 09CC sub_9CC: ; ... 09CC F5 push af 09CD E5 push hl 09CE DD E5 push ix 09D0 DD 21 82 C5 ld ix, unk_C582 09D4 21 BC C5 ld hl, unk_C5BC 09D7 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 09DA DD E1 pop ix 09DC E1 pop hl 09DD F1 pop af 09DE C9 ret 09DE ; End of function sub_9CC 09DE 09DF 09DF ; =============== S U B R O U T I N E ======================================= 09DF 09DF 09DF sub_9DF: ; ... 09DF 22 96 C4 ld (word_C496), hl 09E2 22 41 C2 ld (word_C241), hl 09E5 21 00 00 ld hl, 0 09E8 22 43 C2 ld (word_C243), hl 09EB 21 41 C2 ld hl, word_C241 09EE CD AA 1E call sub_1EAA 09F1 CD 27 14 call sub_1427 09F4 CD D4 14 call sub_14D4 09F7 21 6A 13 ld hl, unk_136A 09FA CD 96 13 call sub_1396 09FD 21 F1 C3 ld hl, unk_C3F1 0A00 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A03 CD C0 16 call sub_16C0 0A06 21 B3 17 ld hl, zeros_17AF+4 0A09 CD 96 13 call sub_1396 0A0C 21 89 C5 ld hl, unk_C589 0A0F CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A12 CD 01 0B call sub_B01 0A15 21 D9 C3 ld hl, unk_C3D9 0A18 CD 96 13 call sub_1396 0A1B 21 E9 C3 ld hl, unk_C3E9 0A1E CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A21 21 2E C5 ld hl, unk_C52E 0A24 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A27 CD 69 1E call sub_1E69 0A2A 21 DD C3 ld hl, unk_C3DD 0A2D CD 96 13 call sub_1396 0A30 21 ED C3 ld hl, unk_C3ED 0A33 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A36 21 32 C5 ld hl, unk_C532 0A39 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A3C CD 7E 1E call sub_1E7E 0A3F 21 FD C3 ld hl, unk_C3FD 0A42 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0A45 21 72 13 ld hl, unk_1372 0A48 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0A4B CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 0A4E 21 41 C2 ld hl, word_C241 0A51 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A54 CD 96 13 call sub_1396 0A57 21 F9 C3 ld hl, unk_C3F9 0A5A CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A5D 21 D5 C3 ld hl, unk_C3D5 0A60 CD 96 13 call sub_1396 0A63 21 9C C5 ld hl, unk_C59C 0A66 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A69 21 72 13 ld hl, unk_1372 0A6C CD 96 13 call sub_1396 0A6F 21 89 C5 ld hl, unk_C589 0A72 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0A75 CD 4F 0B call sub_B4F 0A78 06 07 ld b, 7 0A7A 11 04 00 ld de, 4 0A7D 21 D7 C4 ld hl, unk_C4D7 0A80 DD 21 B7 C4 ld ix, unk_C4B7 0A84 0A84 loc_A84: ; ... 0A84 C5 push bc 0A85 D5 push de 0A86 E5 push hl 0A87 DD E5 push ix 0A89 CD D9 2C call sub_2CD9 0A8C 28 2E jr z, loc_ABC 0A8E 21 82 C5 ld hl, unk_C582 0A91 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0A94 E1 pop hl 0A95 E5 push hl 0A96 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0A99 CD D2 15 call sub_15D2 0A9C 21 BC C5 ld hl, unk_C5BC 0A9F CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0AA2 CD 2C 16 call sub_162C 0AA5 21 41 C2 ld hl, word_C241 0AA8 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0AAB CD A0 13 call sub_13A0 0AAE E1 pop hl 0AAF E5 push hl 0AB0 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0AB3 DD E1 pop ix 0AB5 E1 pop hl 0AB6 E5 push hl 0AB7 DD E5 push ix 0AB9 CD 62 15 call sub_1562 ; XXX move 4byte thing from C498 to (hl) 0ABC 0ABC loc_ABC: ; ... 0ABC DD E1 pop ix 0ABE E1 pop hl 0ABF D1 pop de 0AC0 C1 pop bc 0AC1 19 add hl, de 0AC2 DD 19 add ix, de 0AC4 10 BE djnz loc_A84 0AC6 C9 ret 0AC6 ; End of function sub_9DF 0AC6 0AC7 0AC7 ; =============== S U B R O U T I N E ======================================= 0AC7 0AC7 0AC7 sub_AC7: ; ... 0AC7 AF xor a 0AC8 32 AD C4 ld (byte_C4AD), a 0ACB FD E5 push iy 0ACD DD E5 push ix 0ACF C5 push bc 0AD0 FD 21 57 14 ld iy, unk_1457 0AD4 DD 21 45 14 ld ix, unk_1445 0AD8 06 0F ld b, 0Fh 0ADA 0ADA loc_ADA: ; ... 0ADA DD 56 01 ld d, (ix+1) 0ADD DD 5E 00 ld e, (ix+0) 0AE0 CD F1 0A call sub_AF1 0AE3 DD 23 inc ix 0AE5 DD 23 inc ix 0AE7 FD 23 inc iy 0AE9 10 EF djnz loc_ADA 0AEB C1 pop bc 0AEC DD E1 pop ix 0AEE FD E1 pop iy 0AF0 C9 ret 0AF0 ; End of function sub_AC7 0AF0 0AF1 0AF1 ; =============== S U B R O U T I N E ======================================= 0AF1 0AF1 0AF1 sub_AF1: ; ... 0AF1 F5 push af 0AF2 E5 push hl 0AF3 AF xor a 0AF4 ED 52 sbc hl, de 0AF6 20 06 jr nz, loc_AFE 0AF8 FD 7E 00 ld a, (iy+0) 0AFB 32 AD C4 ld (byte_C4AD), a 0AFE 0AFE loc_AFE: ; ... 0AFE E1 pop hl 0AFF F1 pop af 0B00 C9 ret 0B00 ; End of function sub_AF1 0B00 0B01 0B01 ; =============== S U B R O U T I N E ======================================= 0B01 0B01 0B01 sub_B01: ; ... 0B01 E5 push hl 0B02 D5 push de 0B03 21 D9 C3 ld hl, unk_C3D9 0B06 CD E3 14 call sub_14E3 0B09 DC 2D 0B call c, sub_B2D 0B0C 21 DD C3 ld hl, unk_C3DD 0B0F CD E3 14 call sub_14E3 0B12 DC 35 0B call c, sub_B35 0B15 21 FD C3 ld hl, unk_C3FD 0B18 CD E3 14 call sub_14E3 0B1B DC 3D 0B call c, sub_B3D 0B1E 2A 4D C2 ld hl, (word_C24D) 0B21 11 E8 03 ld de, 1000 0B24 AF xor a 0B25 ED 52 sbc hl, de 0B27 DC 45 0B call c, sub_B45 0B2A D1 pop de 0B2B E1 pop hl 0B2C C9 ret 0B2C ; End of function sub_B01 0B2C 0B2D 0B2D ; =============== S U B R O U T I N E ======================================= 0B2D 0B2D 0B2D sub_B2D: ; ... 0B2D DD 21 7A 13 ld ix, unk_137A 0B31 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0B34 C9 ret 0B34 ; End of function sub_B2D 0B34 0B35 0B35 ; =============== S U B R O U T I N E ======================================= 0B35 0B35 0B35 sub_B35: ; ... 0B35 DD 21 7E 13 ld ix, unk_137E 0B39 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0B3C C9 ret 0B3C ; End of function sub_B35 0B3C 0B3D 0B3D ; =============== S U B R O U T I N E ======================================= 0B3D 0B3D 0B3D sub_B3D: ; ... 0B3D DD 21 82 13 ld ix, unk_1382 0B41 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0B44 C9 ret 0B44 ; End of function sub_B3D 0B44 0B45 0B45 ; =============== S U B R O U T I N E ======================================= 0B45 0B45 0B45 sub_B45: ; ... 0B45 21 01 00 ld hl, 1 0B48 22 4D C2 ld (word_C24D), hl 0B4B 22 51 C2 ld (word_C251), hl 0B4E C9 ret 0B4E ; End of function sub_B45 0B4E 0B4F 0B4F ; =============== S U B R O U T I N E ======================================= 0B4F 0B4F 0B4F sub_B4F: ; ... 0B4F 21 17 C4 ld hl, unk_C417 0B52 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0B55 21 72 13 ld hl, unk_1372 0B58 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0B5B CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 0B5E 21 41 C2 ld hl, word_C241 0B61 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0B64 CD 96 13 call sub_1396 0B67 21 E1 C3 ld hl, unk_C3E1 0B6A CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0B6D C9 ret 0B6D ; End of function sub_B4F 0B6D 0B6E 0B6E ; =============== S U B R O U T I N E ======================================= 0B6E 0B6E ; XXX handle button W1 0B6E 0B6E btnW1_B6E: ; ... 0B6E CD 45 26 call sub_2645 0B71 21 41 C2 ld hl, word_C241 0B74 CD B0 1F call sub_1FB0 0B77 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 0B7A 21 83 0F ld hl, lcdstrInvalidGrating_F83 0B7D DC 19 0F call c, lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0B80 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0B83 DC A4 25 call c, sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0B86 DA 03 0F jp c, loc_F03 ; reset lamps and reset to initial state 0B89 21 41 C2 ld hl, word_C241 0B8C CD A0 13 call sub_13A0 0B8F 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0B92 CD A1 1E call sub_1EA1 0B95 21 98 C4 ld hl, byte_C498 0B98 CD E3 14 call sub_14E3 0B9B 38 12 jr c, loc_BAF 0B9D 21 E9 C3 ld hl, unk_C3E9 0BA0 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0BA3 CD 69 1E call sub_1E69 0BA6 21 D9 C3 ld hl, unk_C3D9 0BA9 CD 62 15 call sub_1562 ; XXX move 4byte thing from C498 to (hl) 0BAC C3 F7 0E jp loc_EF7 0BAF ; --------------------------------------------------------------------------- 0BAF 0BAF loc_BAF: ; ... 0BAF 21 E8 0F ld hl, lcdstrInvalidStartWavelength_FEA 0BB2 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0BB5 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0BB8 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0BBB C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0BBB ; End of function btnW1_B6E 0BBB 0BBE 0BBE ; =============== S U B R O U T I N E ======================================= 0BBE 0BBE ; XXX handle button W2 0BBE 0BBE btnW2_BBE: ; ... 0BBE CD 45 26 call sub_2645 0BC1 21 41 C2 ld hl, word_C241 0BC4 CD B0 1F call sub_1FB0 0BC7 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 0BCA 21 83 0F ld hl, lcdstrInvalidGrating_F83 0BCD DC 19 0F call c, lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0BD0 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0BD3 DC A4 25 call c, sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0BD6 DA 03 0F jp c, loc_F03 ; reset lamps and reset to initial state 0BD9 21 41 C2 ld hl, word_C241 0BDC CD A0 13 call sub_13A0 0BDF 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0BE2 CD A1 1E call sub_1EA1 0BE5 21 98 C4 ld hl, byte_C498 0BE8 CD E3 14 call sub_14E3 0BEB 38 12 jr c, loc_BFF 0BED 21 ED C3 ld hl, unk_C3ED 0BF0 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0BF3 CD 7E 1E call sub_1E7E 0BF6 21 DD C3 ld hl, unk_C3DD 0BF9 CD 62 15 call sub_1562 ; XXX move 4byte thing from C498 to (hl) 0BFC C3 F7 0E jp loc_EF7 0BFF ; --------------------------------------------------------------------------- 0BFF 0BFF loc_BFF: ; ... 0BFF 21 05 10 ld hl, lcdstrInvalidStopWavelength_1005 0C02 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0C05 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0C08 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0C0B C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0C0B ; End of function btnW2_BBE 0C0B 0C0E 0C0E ; =============== S U B R O U T I N E ======================================= 0C0E 0C0E ; XXX handle button WSTEP 0C0E 0C0E btnWstep_C0E: ; ... 0C0E CD 45 26 call sub_2645 0C11 21 41 C2 ld hl, word_C241 0C14 CD B0 1F call sub_1FB0 0C17 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 0C1A 21 83 0F ld hl, lcdstrInvalidGrating_F83 0C1D DC 19 0F call c, lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0C20 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0C23 DC A4 25 call c, sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0C26 DA 03 0F jp c, loc_F03 ; reset lamps and reset to initial state 0C29 21 41 C2 ld hl, word_C241 0C2C CD A0 13 call sub_13A0 0C2F 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0C32 CD A1 1E call sub_1EA1 0C35 21 98 C4 ld hl, byte_C498 0C38 CD E3 14 call sub_14E3 0C3B 38 2E jr c, loc_C6B 0C3D FD 21 98 C4 ld iy, byte_C498 0C41 CD 71 12 call sub_1271 0C44 D4 7A 0C call nc, sub_C7A 0C47 21 F9 C3 ld hl, unk_C3F9 0C4A CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0C4D 21 FD C3 ld hl, unk_C3FD 0C50 CD 62 15 call sub_1562 ; XXX move 4byte thing from C498 to (hl) 0C53 21 72 13 ld hl, unk_1372 0C56 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 0C59 21 FD C3 ld hl, unk_C3FD 0C5C CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 0C5F CD B7 15 call sub_15B7 0C62 21 FD C3 ld hl, unk_C3FD 0C65 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0C68 C3 F7 0E jp loc_EF7 0C6B ; --------------------------------------------------------------------------- 0C6B 0C6B loc_C6B: ; ... 0C6B 21 21 10 ld hl, lcdstrInvalidWavelengthIncrement_1021 0C6E CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0C71 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0C74 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0C77 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0C77 ; End of function btnWstep_C0E 0C77 0C7A 0C7A ; =============== S U B R O U T I N E ======================================= 0C7A 0C7A 0C7A sub_C7A: ; ... 0C7A DD 21 76 13 ld ix, unk_1376 0C7E 21 98 C4 ld hl, byte_C498 0C81 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0C84 21 76 13 ld hl, unk_1376 0C87 CD 96 13 call sub_1396 0C8A C9 ret 0C8A ; End of function sub_C7A 0C8A 0C8B ; --------------------------------------------------------------------------- 0C8B ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0C8B 0C8B loc_C8B: ; ... 0C8B CD 3B 27 call loc_273B 0C8E 21 41 C2 ld hl, word_C241 0C91 CD B0 1F call sub_1FB0 0C94 21 41 C2 ld hl, word_C241 0C97 CD BF 1E call sub_1EBF 0C9A CD 4A 12 call sub_124A 0C9D CA BA 0C jp z, loc_CBA 0CA0 FD 21 D3 0C ld iy, 0CD3h 0CA4 E5 push hl 0CA5 DD E1 pop ix 0CA7 CD DA 11 call sub_11DA 0CAA D2 BA 0C jp nc, loc_CBA 0CAD DD 21 41 C2 ld ix, word_C241 0CB1 21 55 C2 ld hl, word_C255 0CB4 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0CB7 C3 F7 0E jp loc_EF7 0CBA ; --------------------------------------------------------------------------- 0CBA 0CBA loc_CBA: ; ... 0CBA DD 21 42 13 ld ix, _const_1_dword_1342 0CBE 21 55 C2 ld hl, word_C255 0CC1 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0CC4 21 41 10 ld hl, lcdstrInvalidTimeInput_1041 0CC7 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0CCA 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0CCD CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0CD0 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0CD0 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0CD3 ; --------------------------------------------------------------------------- 0CD3 0CD3 loc_CD3: ; ... 0CD3 81 add a, c 0CD4 96 sub (hl) 0CD5 98 sbc a, b 0CD6 00 nop 0CD7 ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0CD7 0CD7 loc_CD7: ; ... 0CD7 CD DA 26 call loc_26DA 0CDA 21 41 C2 ld hl, word_C241 0CDD CD B0 1F call sub_1FB0 0CE0 21 41 C2 ld hl, word_C241 0CE3 CD AA 1E call sub_1EAA 0CE6 CD 4A 12 call sub_124A 0CE9 CA 0C 0D jp z, loc_D0C 0CEC FD 21 2B 0D ld iy, 0D2Bh 0CF0 E5 push hl 0CF1 DD E1 pop ix 0CF3 CD DA 11 call sub_11DA 0CF6 D2 0C 0D jp nc, loc_D0C 0CF9 DD 21 41 C2 ld ix, word_C241 0CFD 21 4D C2 ld hl, word_C24D 0D00 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0D03 21 51 C2 ld hl, word_C251 0D06 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0D09 C3 F7 0E jp loc_EF7 0D0C ; --------------------------------------------------------------------------- 0D0C 0D0C loc_D0C: ; ... 0D0C DD 21 42 13 ld ix, _const_1_dword_1342 0D10 21 4D C2 ld hl, word_C24D 0D13 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0D16 21 51 C2 ld hl, word_C251 0D19 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0D1C 21 41 10 ld hl, lcdstrInvalidTimeInput_1041 0D1F CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0D22 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0D25 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0D28 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0D28 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0D28 ; --------------------------------------------------------------------------- 0D2B 64 00 word_D2B: dw 100 ; ... 0D2D ; --------------------------------------------------------------------------- 0D2D 00 nop 0D2E 00 nop 0D2F 0D2F ; =============== S U B R O U T I N E ======================================= 0D2F 0D2F ; XXX something arrow left related 0D2F 0D2F sub_D2F: ; ... 0D2F CD 2D 11 call sub_112D 0D32 CA 53 0D jp z, loc_D53 0D35 CD 34 20 call sub_2034 0D38 CD B8 07 call sub_7B8 0D3B CD 71 07 call sub_771 0D3E C3 53 0D jp loc_D53 0D3E ; End of function sub_D2F 0D3E 0D41 0D41 ; =============== S U B R O U T I N E ======================================= 0D41 0D41 ; XXX something arrow right related 0D41 0D41 sub_D41: ; ... 0D41 CD 4E 11 call sub_114E 0D44 DA 53 0D jp c, loc_D53 0D47 CD 34 20 call sub_2034 0D4A CD C5 07 call sub_7C5 0D4D CD 71 07 call sub_771 0D50 C3 53 0D jp loc_D53 ; (well, wow this was pointless) 0D53 ; --------------------------------------------------------------------------- 0D53 0D53 loc_D53: ; ... 0D53 CD 91 34 call sub_3491 0D56 CD 3B 20 call sub_203B 0D59 CD 3D 1C call sub_1C3D 0D5C C9 ret 0D5C ; End of function sub_D41 0D5C 0D5D ; --------------------------------------------------------------------------- 0D5D ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0D5D 0D5D loc_D5D: ; ... 0D5D CD D6 1B call buzzer_1BD6 ; buzz for (c23ah) times 0D60 F3 di 0D61 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 0D64 32 39 C4 ld (byte_C439), a 0D67 AF xor a 0D68 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 0D6B FB ei 0D6C CD B0 1F call sub_1FB0 0D6F CD B3 24 call sub_24B3 ; XXX set mode button handlers to the ???unknown??? mode 0D72 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 0D75 DA 4C 36 jp c, loc_364C 0D78 AF xor a 0D79 32 3A C5 ld (byte_C53A), a ; XXX flags; 5 4 3 2 1 0D7C 21 D9 C3 ld hl, unk_C3D9 0D7F CD E3 14 call sub_14E3 0D82 DC 1E 36 call c, sub_361E 0D85 21 DD C3 ld hl, unk_C3DD 0D88 CD E3 14 call sub_14E3 0D8B DC 29 36 call c, sub_3629 0D8E CD 89 35 call sub_3589 0D91 CD 5B 35 call sub_355B 0D94 21 05 C4 ld hl, unk_C405 0D97 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 0D9A 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 0D9D CD 4A 12 call sub_124A 0DA0 CC 29 36 call z, sub_3629 0DA3 2A 4D C2 ld hl, (word_C24D) 0DA6 01 00 00 ld bc, 0 0DA9 B7 or a 0DAA ED 42 sbc hl, bc 0DAC CC DC 35 call z, sub_35DC 0DAF 2A 4D C2 ld hl, (word_C24D) 0DB2 ED 4B 2B 0D ld bc, (word_D2B) 0DB6 B7 or a 0DB7 ED 42 sbc hl, bc 0DB9 D4 3C 36 call nc, sub_363C 0DBC DD 21 05 C4 ld ix, unk_C405 0DC0 FD 21 D9 0E ld iy, byte_ED9 0DC4 CD DA 11 call sub_11DA 0DC7 DC 29 36 call c, sub_3629 0DCA 2A 61 C2 ld hl, (word_C261) 0DCD CD 4A 12 call sub_124A 0DD0 CC E1 0E call z, sub_EE1 0DD3 E5 push hl 0DD4 FD E1 pop iy 0DD6 DD 21 DD 0E ld ix, byte_EDD 0DDA CD DA 11 call sub_11DA 0DDD DC E1 0E call c, sub_EE1 0DE0 3A 3A C5 ld a, (byte_C53A) ; XXX flags; 5 4 3 2 1 0DE3 FE 00 cp 0 0DE5 C2 2C 0E jp nz, loc_E2C ; show 'scan start failed' 0DE8 21 4D C2 ld hl, word_C24D 0DEB 34 inc (hl) 0DEC 0DEC loc_DEC: ; ... 0DEC CD 2A 20 call sub_202A 0DEF 2A 4D C2 ld hl, (word_C24D) 0DF2 2B dec hl 0DF3 22 4D C2 ld (word_C24D), hl 0DF6 CD AE 35 call sub_35AE 0DF9 AF xor a 0DFA B4 or h 0DFB B5 or l 0DFC 28 11 jr z, loc_E0F 0DFE CD 20 20 call sub_2020 0E01 3A 40 C2 ld a, (byte_C240) 0E04 32 8D C4 ld (byte_C48D), a 0E07 FE 01 cp 1 0E09 CA 6D 0E jp z, loc_E6D 0E0C C3 35 0E jp loc_E35 0E0F ; --------------------------------------------------------------------------- 0E0F 0E0F loc_E0F: ; ... 0E0F F3 di 0E10 AF xor a 0E11 32 5E C2 ld (byte_C25E), a ; XXX some sort of flag 0E14 32 5D C2 ld (byte_C25D), a ; XXX some sort of flag 0E17 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 0E1A FB ei 0E1B CD 2A 20 call sub_202A 0E1E CD 51 20 call sub_2051 0E21 3A 8D C4 ld a, (byte_C48D) 0E24 FE 00 cp 0 0E26 C4 37 06 call nz, sub_637 0E29 C3 F7 0E jp loc_EF7 0E2C ; --------------------------------------------------------------------------- 0E2C 0E2C loc_E2C: ; ... 0E2C 21 57 10 ld hl, lcdstrScanStartFailed_1057 0E2F CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0E32 C3 55 36 jp loc_3655 ; show '?' prompt 0E35 ; --------------------------------------------------------------------------- 0E35 0E35 loc_E35: ; ... 0E35 21 E9 C3 ld hl, unk_C3E9 0E38 CD 90 1E call sub_1E90 0E3B CD EF 35 call sub_35EF 0E3E AF xor a 0E3F 32 1F C5 ld (byte_C51F), a 0E42 21 D9 C3 ld hl, unk_C3D9 0E45 CD 28 05 call sub_528 0E48 21 D5 C3 ld hl, unk_C3D5 0E4B DD 21 D9 C3 ld ix, unk_C3D9 0E4F CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0E52 FE 01 cp 1 0E54 F5 push af 0E55 CC E1 05 call z, sub_5E1 0E58 F1 pop af 0E59 FE 02 cp 2 0E5B CC 81 05 call z, sub_581 0E5E CD F7 35 call sub_35F7 0E61 CD AB 0E call sub_EAB 0E64 CD 4E 35 call sub_354E 0E67 CD 91 34 call sub_3491 0E6A C3 EC 0D jp loc_DEC 0E6D ; --------------------------------------------------------------------------- 0E6D 0E6D loc_E6D: ; ... 0E6D 21 E9 C3 ld hl, unk_C3E9 0E70 CD 90 1E call sub_1E90 0E73 CD AA 0E call nullsub_2 0E76 CD EF 35 call sub_35EF 0E79 AF xor a 0E7A 32 1F C5 ld (byte_C51F), a 0E7D 21 D9 C3 ld hl, unk_C3D9 0E80 CD 28 05 call sub_528 0E83 E5 push hl 0E84 21 D5 C3 ld hl, unk_C3D5 0E87 DD 21 D9 C3 ld ix, unk_C3D9 0E8B CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 0E8E E1 pop hl 0E8F FE 01 cp 1 0E91 F5 push af 0E92 CC E1 05 call z, sub_5E1 0E95 F1 pop af 0E96 FE 02 cp 2 0E98 CC 81 05 call z, sub_581 0E9B CD F7 35 call sub_35F7 0E9E CD C2 0E call sub_EC2 0EA1 CD 4E 35 call sub_354E 0EA4 CD 91 34 call sub_3491 0EA7 C3 EC 0D jp loc_DEC 0EA7 ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 0EAA ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD CTRL-"+" TO EXPAND] 0EAB 0EAB ; =============== S U B R O U T I N E ======================================= 0EAB 0EAB 0EAB sub_EAB: ; ... 0EAB CD C5 07 call sub_7C5 0EAE CD 2F 21 call sub_212F ; XXX AMD related 0EB1 DD 21 05 C4 ld ix, unk_C405 0EB5 CD EF 21 call sub_21EF 0EB8 CD B6 21 call sub_21B6 0EBB CD 0F 21 call sub_210F ; XXX AMD related 0EBE CD 07 21 call sub_2107 0EC1 C9 ret 0EC1 ; End of function sub_EAB 0EC1 0EC2 0EC2 ; =============== S U B R O U T I N E ======================================= 0EC2 0EC2 0EC2 sub_EC2: ; ... 0EC2 CD B8 07 call sub_7B8 0EC5 CD 2F 21 call sub_212F ; XXX AMD related 0EC8 DD 21 05 C4 ld ix, unk_C405 0ECC CD EF 21 call sub_21EF 0ECF CD B6 21 call sub_21B6 0ED2 CD 0F 21 call sub_210F ; XXX AMD related 0ED5 CD 07 21 call sub_2107 0ED8 C9 ret 0ED8 ; End of function sub_EC2 0ED8 0ED8 ; --------------------------------------------------------------------------- 0ED9 14 byte_ED9: db 14h ; ... 0EDA 00 db 0 0EDB 00 db 0 0EDC 00 db 0 0EDD 6A byte_EDD: db 6Ah ; ... 0EDE 18 db 18h 0EDF 00 db 0 0EE0 00 db 0 0EE1 0EE1 ; =============== S U B R O U T I N E ======================================= 0EE1 0EE1 0EE1 sub_EE1: ; ... 0EE1 21 41 22 ld hl, unk_2241 0EE4 22 5F C2 ld (word_C25F), hl 0EE7 21 81 22 ld hl, unk_2281 0EEA 22 61 C2 ld (word_C261), hl 0EED C9 ret 0EED ; End of function sub_EE1 0EED 0EEE ; --------------------------------------------------------------------------- 0EEE ; START OF FUNCTION CHUNK FOR sub_24AD 0EEE 0EEE loc_EEE: ; ... 0EEE 21 13 27 ld hl, promptQues_2713 ; '?' prompt 0EF1 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0EF4 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0EF4 ; END OF FUNCTION CHUNK FOR sub_24AD 0EF7 ; --------------------------------------------------------------------------- 0EF7 ; START OF FUNCTION CHUNK FOR sub_273 0EF7 0EF7 loc_EF7: ; ... 0EF7 21 17 27 ld hl, promptStar_2717 ; '*' prompt 0EFA CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 0EFD CD 3D 1C call sub_1C3D 0F00 C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 0F03 ; --------------------------------------------------------------------------- 0F03 0F03 loc_F03: ; ... 0F03 CD B7 24 call sub_24B7 ; reset lamps and reset to initial state 0F06 CD CF 1F call sub_1FCF ; XXX set button lamps in normal, unshifted, mode 0F09 31 00 C8 ld sp, 0C800h ; set TOS at end of RAM 0F0C C3 23 01 jp infiniteloop_123 0F0C ; END OF FUNCTION CHUNK FOR sub_273 0F0F 0F0F ; =============== S U B R O U T I N E ======================================= 0F0F 0F0F ; XXX delay XXX usec 0F0F 0F0F sub_F0F: ; ... 0F0F C5 push bc 0F10 F5 push af 0F11 06 02 ld b, 2 0F13 CD C2 29 call delay_29C2 ; delay for B times XXX usec 0F16 F1 pop af 0F17 C1 pop bc 0F18 C9 ret 0F18 ; End of function sub_F0F 0F18 0F19 0F19 ; =============== S U B R O U T I N E ======================================= 0F19 0F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 0F19 0F19 lcdstrSendWithEEOL_F19: ; ... 0F19 F5 push af 0F1A E5 push hl 0F1B 21 62 0F ld hl, lcdstr29sp_F62 ; clear (1,12) to end-of-line 0F1E CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 0F21 E1 pop hl 0F22 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 0F25 F1 pop af 0F26 C9 ret 0F26 ; End of function lcdstrSendWithEEOL_F19 0F26 0F26 ; --------------------------------------------------------------------------- 0F27 0F lcdstrScan_F27: db 0Fh ; ... 0F28 34 db 52 ; (1,12) 0F29 20 20 20 20+ .ascii ' SCAN: @' 0F3E 40 db 40h ; (as is) 0F3F 0F lcdstrOf_F3F: db 0Fh ; ... 0F40 4B db 75 ; (1,35) 0F41 4F 46 20 40 .ascii 'OF @' 0F45 40 db 40h ; (as is) 0F46 0F lcdstrInvSkewWavelen_F46:db 0Fh ; ... 0F47 34 db 52 ; (1,12) 0F48 49 4E 56 41+ .ascii 'INVALID SLEW WAVELENGTH @' 0F61 2A db 42 ; (1,2) 0F62 00 lcdstr29sp_F62: db 0 ; ... 0F62 ; clear (1,12) to end-of-line 0F63 34 db 52 ; (1,12) 0F64 20 20 20 20+ .ascii ' @' ; 29 spaces 0F82 34 db 52 ; (1,12) 0F83 0F lcdstrInvalidGrating_F83:db 0Fh ; ... 0F84 34 db 52 ; (1,12) 0F85 49 4E 56 41+ .ascii 'INVALID GRATING @' 0F96 2A db 42 ; (1,2) 0F97 0F lcdstrValidParam_F97:db 0Fh ; ... 0F98 34 db 52 ; (1,12) 0F99 56 41 4C 49+ .ascii 'VALID PARAMETER: 0...9 @' 0FB2 2A db 42 ; (1,2) 0FB3 0F lcdstrInvalidMaxPos_FB3:db 0Fh ; ... 0FB4 34 db 52 ; (1,12) 0FB5 49 4E 56 41+ .ascii 'INVALID! MAX. POSITION: 1200@' 0FD2 2A db 42 ; (1,2) 0FD3 0F lcdstrInvalidGrating_FD3:db 0Fh ; ... 0FD4 34 db 52 ; (1,12) 0FD5 49 4E 56 41+ .ascii 'INVALID GRATING! @' 0FE7 2A db 42 ; (1,2) 0FE8 0F lcdstrInvalidStartWavelength_FEA:db 0Fh ; ... 0FE9 34 db 52 ; (1,12) 0FEA 49 4E 56 41+ .ascii 'INVALID START WAVELENGTH @' 1004 2A db 42 ; (1,2) 1005 0F lcdstrInvalidStopWavelength_1005:db 0Fh ; ... 1006 34 db 52 ; (1,12) 1007 49 4E 56 41+ .ascii 'INVALID STOP WAVELENGTH @' 1020 2A db 42 ; (1,2) 1021 0F lcdstrInvalidWavelengthIncrement_1021:db 0Fh ; ... 1022 34 db 52 ; (1,12) 1023 49 4E 56 41+ .ascii 'INVALID WAVELENGTH INCREMENT@' 1040 2A db 42 ; (1,2) 1041 0F lcdstrInvalidTimeInput_1041:db 0Fh ; ... 1042 34 db 52 ; (1,12) 1043 49 4E 56 41+ .ascii 'INVALID TIME INPUT@' 1056 2A db 42 ; (1,2) 1057 0F lcdstrScanStartFailed_1057:db 0Fh ; ... 1058 34 db 52 ; (1,12) 1059 53 43 41 4E+ .ascii 'SCAN START FAILED@' 106B 2A db 42 ; (1,2) 106C 0F lcdstrInvalidSpeedParam_106C:db 0Fh ; ... 106D 34 db 52 ; (1,12) 106E 49 4E 56 41+ .ascii 'INVALID SPEED PARAMETER @' 1087 2A db 42 ; (1,2) 1088 0F lcdstrIvalidFilter_1088:db 0Fh ; ... 1089 34 db 52 ; (1,12) 108A 49 4E 56 41+ .ascii 'INVALID FILTER @' 109A 2A db 42 ; (1,2) 109B 0F lcdstrInvFiltWavelen_109B:db 0Fh 109C 34 db 52 ; (1,12) 109D 49 4E 56 41+ .ascii 'INVALID FILTER WAVELENGTH@' 10B7 2A db 42 ; (1,2) 10B8 0F lcdstrFiltInit_10B8:db 0Fh ; ... 10B9 34 db 52 ; (1,12) 10BA 46 49 4C 54+ .ascii 'FILTER INITIALIZATION@' 10D0 2A db 42 ; (1,2) 10D1 0F lcdstrIdentFiltWavelen_10D1:db 0Fh 10D2 34 db 52 ; (1,12) 10D3 49 44 45 4E+ .ascii 'IDENTICAL FILTER WAVELENGTH@' 10EF 2A db 42 ; (1,2) 10F0 0F lcdstrFiltTblInit_10F0:db 0Fh ; ... 10F1 34 db 52 ; (1,12) 10F2 46 49 4C 54+ .ascii 'FILTER TABLE INITIALIZATION@' 110E 2A db 42 ; (1,2) 110F 0F lcdstrFuncNotImpl_110F:db 0Fh 1110 34 db 52 ; (1,12) 1111 46 55 4E 43+ .ascii 'FUNCTION NOT IMPLEMENTED !@' 112C 2A db 42 ; (1,2) 112D 112D ; =============== S U B R O U T I N E ======================================= 112D 112D 112D sub_112D: ; ... 112D ED 5B D5 C3 ld de, (unk_C3D5) 1131 2A D7 C3 ld hl, (unk_C3D7) 1134 AF xor a 1135 B2 or d 1136 B3 or e 1137 CA 3E 11 jp z, loc_113E 113A 1B dec de 113B C3 46 11 jp loc_1146 113E ; --------------------------------------------------------------------------- 113E 113E loc_113E: ; ... 113E AF xor a 113F B4 or h 1140 B5 or l 1141 CA 46 11 jp z, loc_1146 1144 2B dec hl 1145 1B dec de 1146 1146 loc_1146: ; ... 1146 ED 53 D5 C3 ld (unk_C3D5), de 114A 22 D7 C3 ld (unk_C3D7), hl 114D C9 ret 114D ; End of function sub_112D 114D 114E 114E ; =============== S U B R O U T I N E ======================================= 114E 114E 114E sub_114E: ; ... 114E ED 5B D5 C3 ld de, (unk_C3D5) 1152 2A D7 C3 ld hl, (unk_C3D7) 1155 13 inc de 1156 AF xor a 1157 B2 or d 1158 B3 or e 1159 CA 5F 11 jp z, loc_115F 115C C3 67 11 jp loc_1167 115F ; --------------------------------------------------------------------------- 115F 115F loc_115F: ; ... 115F 23 inc hl 1160 AF xor a 1161 B4 or h 1162 B5 or l 1163 C2 67 11 jp nz, loc_1167 1166 37 scf 1167 1167 loc_1167: ; ... 1167 ED 53 D5 C3 ld (unk_C3D5), de 116B 22 D7 C3 ld (unk_C3D7), hl 116E C9 ret 116E ; End of function sub_114E 116E 116F 116F ; =============== S U B R O U T I N E ======================================= 116F 116F ; sl 2 (hl); 3 bytes le 116F 116F sub_116F: 116F CD 76 11 call sub_1176 ; sl (hl); 3 bytes le 1172 CD 76 11 call sub_1176 ; sl (hl); 3 bytes le 1175 C9 ret 1175 ; End of function sub_116F 1175 1176 1176 ; =============== S U B R O U T I N E ======================================= 1176 1176 ; sl (hl); 3 bytes le 1176 1176 sub_1176: ; ... 1176 F5 push af 1177 E5 push hl 1178 AF xor a ; clear carry 1179 CB 16 rl (hl) 117B 23 inc hl 117C CB 16 rl (hl) 117E 23 inc hl 117F CB 16 rl (hl) 1181 23 inc hl 1182 CB 16 rl (hl) 1184 E1 pop hl 1185 F1 pop af 1186 C9 ret 1186 ; End of function sub_1176 1186 1187 1187 ; =============== S U B R O U T I N E ======================================= 1187 1187 ; sr 2 (hl); 3 bytes le 1187 1187 sub_1187: 1187 CD 8E 11 call sub_118E ; sr (hl); 3 bytes le 118A CD 8E 11 call sub_118E ; sr (hl); 3 bytes le 118D C9 ret 118D ; End of function sub_1187 118D 118E 118E ; =============== S U B R O U T I N E ======================================= 118E 118E ; sr (hl); 3 bytes le 118E 118E sub_118E: ; ... 118E F5 push af 118F E5 push hl 1190 23 inc hl 1191 23 inc hl 1192 23 inc hl 1193 AF xor a ; clear carry 1194 CB 1E rr (hl) 1196 2B dec hl 1197 CB 1E rr (hl) 1199 2B dec hl 119A CB 1E rr (hl) 119C 2B dec hl 119D CB 1E rr (hl) 119F E1 pop hl 11A0 F1 pop af 11A1 C9 ret 11A1 ; End of function sub_118E 11A1 11A2 11A2 ; =============== S U B R O U T I N E ======================================= 11A2 11A2 11A2 sub_11A2: 11A2 F5 push af 11A3 D5 push de 11A4 C5 push bc 11A5 E5 push hl 11A6 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 11A9 21 D6 11 ld hl, byte_11D6 11AC CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 11AF CD D2 15 call sub_15D2 11B2 E1 pop hl 11B3 E5 push hl 11B4 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 11B7 E1 pop hl 11B8 C1 pop bc 11B9 D1 pop de 11BA F1 pop af 11BB C9 ret 11BB ; End of function sub_11A2 11BB 11BC 11BC ; =============== S U B R O U T I N E ======================================= 11BC 11BC 11BC sub_11BC: 11BC F5 push af 11BD D5 push de 11BE C5 push bc 11BF E5 push hl 11C0 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 11C3 21 D6 11 ld hl, byte_11D6 11C6 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 11C9 CD 2C 16 call sub_162C 11CC E1 pop hl 11CD E5 push hl 11CE CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 11D1 E1 pop hl 11D2 C1 pop bc 11D3 D1 pop de 11D4 F1 pop af 11D5 C9 ret 11D5 ; End of function sub_11BC 11D5 11D5 ; --------------------------------------------------------------------------- 11D6 19 byte_11D6: db 19h ; ... 11D7 00 db 0 11D8 00 db 0 11D9 00 db 0 11DA 11DA ; =============== S U B R O U T I N E ======================================= 11DA 11DA 11DA sub_11DA: ; ... 11DA C5 push bc 11DB E5 push hl 11DC D5 push de 11DD DD E5 push ix 11DF 01 03 00 ld bc, 3 11E2 FD 09 add iy, bc 11E4 DD 09 add ix, bc 11E6 DD E5 push ix 11E8 D1 pop de 11E9 FD E5 push iy 11EB E1 pop hl 11EC 06 04 ld b, 4 11EE 4F ld c, a 11EF 11EF loc_11EF: ; ... 11EF 1A ld a, (de) 11F0 BE cp (hl) 11F1 C2 F8 11 jp nz, loc_11F8 11F4 2B dec hl 11F5 1B dec de 11F6 10 F7 djnz loc_11EF 11F8 11F8 loc_11F8: ; ... 11F8 79 ld a, c 11F9 DD E1 pop ix 11FB D1 pop de 11FC E1 pop hl 11FD C1 pop bc 11FE C9 ret 11FE ; End of function sub_11DA 11FE 11FF 11FF ; =============== S U B R O U T I N E ======================================= 11FF 11FF 11FF sub_11FF: ; ... 11FF E5 push hl 1200 D5 push de 1201 2A 87 C4 ld hl, (word_C487) 1204 11 01 00 ld de, 1 1207 B7 or a 1208 ED 52 sbc hl, de 120A 22 87 C4 ld (word_C487), hl 120D 2A 89 C4 ld hl, (word_C489) 1210 1B dec de 1211 ED 52 sbc hl, de 1213 22 89 C4 ld (word_C489), hl 1216 D1 pop de 1217 E1 pop hl 1218 C9 ret 1218 ; End of function sub_11FF 1218 1219 1219 ; =============== S U B R O U T I N E ======================================= 1219 1219 1219 sub_1219: ; ... 1219 E5 push hl 121A D5 push de 121B C5 push bc 121C DD 6E 00 ld l, (ix+0) 121F DD 66 01 ld h, (ix+1) 1222 DD 5E 02 ld e, (ix+2) 1225 DD 56 03 ld d, (ix+3) 1228 01 01 00 ld bc, 1 122B B7 or a 122C ED 42 sbc hl, bc 122E DD 75 00 ld (ix+0), l 1231 DD 74 01 ld (ix+1), h 1234 0B dec bc 1235 EB ex de, hl 1236 ED 42 sbc hl, bc 1238 DD 75 02 ld (ix+2), l 123B DD 74 03 ld (ix+3), h 123E C1 pop bc 123F D1 pop de 1240 E1 pop hl 1241 C9 ret 1241 ; End of function sub_1219 1241 1242 1242 ; =============== S U B R O U T I N E ======================================= 1242 1242 1242 sub_1242: ; ... 1242 C5 push bc 1243 E5 push hl 1244 DD E5 push ix 1246 E1 pop hl 1247 C3 4C 12 jp loc_124C 1247 ; End of function sub_1242 1247 124A 124A ; =============== S U B R O U T I N E ======================================= 124A 124A 124A sub_124A: ; ... 124A C5 push bc 124B E5 push hl 124C 124C loc_124C: ; ... 124C 06 04 ld b, 4 124E 4F ld c, a 124F AF xor a 1250 1250 loc_1250: ; ... 1250 B6 or (hl) 1251 C2 57 12 jp nz, loc_1257 1254 23 inc hl 1255 10 F9 djnz loc_1250 1257 1257 loc_1257: ; ... 1257 79 ld a, c 1258 E1 pop hl 1259 C1 pop bc 125A C9 ret 125A ; End of function sub_124A 125A 125B 125B ; =============== S U B R O U T I N E ======================================= 125B 125B 125B sub_125B: ; ... 125B C5 push bc 125C E5 push hl 125D 21 87 C4 ld hl, word_C487 1260 06 04 ld b, 4 1262 3E FF ld a, 0FFh 1264 1264 loc_1264: ; ... 1264 A6 and (hl) 1265 23 inc hl 1266 10 FC djnz loc_1264 1268 FE FF cp 0FFh 126A E1 pop hl 126B C1 pop bc 126C C9 ret 126C ; End of function sub_125B 126C 126D ; --------------------------------------------------------------------------- 126D FD 21 41 C2 ld iy, word_C241 1271 1271 ; =============== S U B R O U T I N E ======================================= 1271 1271 1271 sub_1271: ; ... 1271 DD 21 72 13 ld ix, unk_1372 1275 CD DA 11 call sub_11DA 1278 C9 ret 1278 ; End of function sub_1271 1278 1279 ; --------------------------------------------------------------------------- 1279 DD E5 push ix 127B FD E5 push iy 127D DD 21 D5 C3 ld ix, unk_C3D5 1281 FD 21 72 13 ld iy, unk_1372 1285 CD DA 11 call sub_11DA 1288 FD E1 pop iy 128A DD E1 pop ix 128C C9 ret 128D 128D ; =============== S U B R O U T I N E ======================================= 128D 128D ; (ix) += (iy); 4 bytes 128D 128D accum32: ; ... 128D C5 push bc 128E D5 push de 128F E5 push hl 1290 DD E5 push ix ; get IX param in DE 1292 D1 pop de 1293 FD E5 push iy ; get IY param in HL 1295 E1 pop hl 1296 06 04 ld b, 4 ; 4 byte add 1298 AF xor a ; ensure carry clear 1299 1299 next_1299: ; ... 1299 1A ld a, (de) 129A 8E adc a, (hl) 129B 12 ld (de), a 129C 23 inc hl 129D 13 inc de 129E 10 F9 djnz next_1299 12A0 E1 pop hl 12A1 D1 pop de 12A2 C1 pop bc 12A3 C9 ret 12A3 ; End of function accum32 12A3 12A4 12A4 ; =============== S U B R O U T I N E ======================================= 12A4 12A4 12A4 sub_12A4: ; ... 12A4 C5 push bc 12A5 06 04 ld b, 4 12A7 D5 push de 12A8 E5 push hl 12A9 DD E5 push ix 12AB D1 pop de 12AC FD E5 push iy 12AE E1 pop hl 12AF 4F ld c, a 12B0 AF xor a 12B1 12B1 loc_12B1: ; ... 12B1 1A ld a, (de) 12B2 9E sbc a, (hl) 12B3 12 ld (de), a 12B4 13 inc de 12B5 23 inc hl 12B6 10 F9 djnz loc_12B1 12B8 79 ld a, c 12B9 E1 pop hl 12BA D1 pop de 12BB C1 pop bc 12BC C9 ret 12BC ; End of function sub_12A4 12BC 12BC ; --------------------------------------------------------------------------- 12BD FF db 0FFh 12BE C9 db 0C9h ; 12BF 9A db 9Ah ; 12C0 3B db 3Bh ; ; 12C1 12C1 ; =============== S U B R O U T I N E ======================================= 12C1 12C1 12C1 sub_12C1: ; ... 12C1 F5 push af 12C2 C5 push bc 12C3 D5 push de 12C4 E5 push hl ; hl param into iy 12C5 FD E1 pop iy 12C7 21 6F 17 ld hl, unk_176F 12CA 06 04 ld b, 4 12CC E5 push hl 12CD 21 00 00 ld hl, 0 12D0 22 85 C4 ld (unk_C485), hl 12D3 22 83 C4 ld (unk_C483), hl 12D6 22 81 C4 ld (unk_C481), hl ; XXX might be a 48-bit value 12D9 E1 pop hl 12DA 12DA loop_12DA: ; ... 12DA C5 push bc 12DB FD 7E 00 ld a, (iy+0) 12DE E6 0F and 0Fh 12E0 28 06 jr z, loc_12E8 12E2 4F ld c, a 12E3 CD 11 13 call sub_1311 12E6 18 04 jr loc_12EC 12E8 ; --------------------------------------------------------------------------- 12E8 12E8 loc_12E8: ; ... 12E8 11 08 00 ld de, 8 12EB 19 add hl, de 12EC 12EC loc_12EC: ; ... 12EC FD 7E 00 ld a, (iy+0) 12EF E6 F0 and 0F0h ; '' 12F1 0F rrca 12F2 0F rrca 12F3 0F rrca 12F4 0F rrca 12F5 28 06 jr z, loc_12FD 12F7 4F ld c, a 12F8 CD 11 13 call sub_1311 12FB 18 04 jr loc_1301 12FD ; --------------------------------------------------------------------------- 12FD 12FD loc_12FD: ; ... 12FD 11 08 00 ld de, 8 1300 19 add hl, de 1301 1301 loc_1301: ; ... 1301 FD 23 inc iy 1303 C1 pop bc 1304 10 D4 djnz loop_12DA 1306 FD E5 push iy ; XXX this confuses me because it puts IY into HL into DE and then that gets overwritten by the pop DE and the (ld hl), so why bother with all this? 1308 E1 pop hl 1309 EB ex de, hl 130A 21 82 C4 ld hl, unk_C482 130D D1 pop de 130E C1 pop bc 130F F1 pop af 1310 C9 ret 1310 ; End of function sub_12C1 1310 1311 1311 ; =============== S U B R O U T I N E ======================================= 1311 1311 1311 sub_1311: ; ... 1311 CB 41 bit 0, c 1313 C4 2E 13 call nz, sub_132E 1316 23 inc hl 1317 23 inc hl 1318 CB 49 bit 1, c 131A C4 2E 13 call nz, sub_132E 131D 23 inc hl 131E 23 inc hl 131F CB 51 bit 2, c 1321 C4 2E 13 call nz, sub_132E 1324 23 inc hl 1325 23 inc hl 1326 CB 59 bit 3, c 1328 C4 2E 13 call nz, sub_132E 132B 23 inc hl 132C 23 inc hl 132D C9 ret 132D ; End of function sub_1311 132D 132E 132E ; =============== S U B R O U T I N E ======================================= 132E 132E 132E sub_132E: ; ... 132E E5 push hl 132F 5E ld e, (hl) 1330 23 inc hl 1331 56 ld d, (hl) 1332 21 86 C4 ld hl, unk_C486 1335 A7 and a 1336 06 06 ld b, 6 1338 1338 loc_1338: ; ... 1338 1A ld a, (de) 1339 8E adc a, (hl) 133A 27 daa 133B 77 ld (hl), a 133C 1B dec de 133D 2B dec hl 133E 10 F8 djnz loc_1338 1340 E1 pop hl 1341 C9 ret 1341 ; End of function sub_132E 1341 1341 ; --------------------------------------------------------------------------- 1342 01 00 00 00 _const_1_dword_1342:dl 1 ; ... 1346 0A unk_1346: db 0Ah ; ... 1347 00 db 0 1348 00 db 0 1349 00 db 0 134A 64 db 64h ; d 134B 00 db 0 134C 00 db 0 134D 00 db 0 134E E8 db 0E8h ; 134F 03 db 3 1350 00 db 0 1351 00 db 0 1352 10 unk_1352: db 10h ; ... 1353 27 db 27h ; ' 1354 00 db 0 1355 00 db 0 1356 A0 unk_1356: db 0A0h ; ; ... 1357 86 db 86h ; 1358 01 db 1 1359 00 db 0 135A 40 db 40h ; @ 135B 42 db 42h ; B 135C 0F db 0Fh 135D 00 db 0 135E 80 db 80h ; 135F 96 db 96h ; 1360 98 db 98h ; 1361 00 db 0 1362 00 db 0 1363 E1 db 0E1h ; 1364 F5 db 0F5h ; 1365 05 db 5 1366 00 db 0 1367 CA db 0CAh ; 1368 9A db 9Ah ; 1369 3B db 3Bh ; ; 136A A0 unk_136A: db 0A0h ; ; ... 136B 4B db 4Bh ; K 136C 00 db 0 136D 00 db 0 136E 9F db 9Fh ; 136F 4B db 4Bh ; K 1370 00 db 0 1371 00 db 0 1372 A0 unk_1372: db 0A0h ; ; ... 1373 00 db 0 1374 00 db 0 1375 00 db 0 1376 A1 unk_1376: db 0A1h ; ; ... 1377 00 db 0 1378 00 db 0 1379 00 db 0 137A A0 unk_137A: db 0A0h ; ; ... 137B 19 db 19h 137C 00 db 0 137D 00 db 0 137E E0 unk_137E: db 0E0h ; ; ... 137F 1F db 1Fh 1380 00 db 0 1381 00 db 0 1382 10 unk_1382: db 10h ; ... 1383 00 db 0 1384 00 db 0 1385 00 db 0 1386 00 byte_1386: db 0 ; ... 1387 00 db 0 1388 00 db 0 1389 00 db 0 138A 71 unk_138A: db 71h ; q ; ... 138B 02 db 2 138C 00 db 0 138D 00 db 0 138E EE unk_138E: db 0EEh ; ; ... 138F 02 db 2 1390 00 db 0 1391 00 db 0 1392 0C db 0Ch 1393 00 db 0 1394 00 db 0 1395 00 db 0 1396 1396 ; =============== S U B R O U T I N E ======================================= 1396 1396 1396 sub_1396: ; ... 1396 E5 push hl 1397 C5 push bc 1398 DD E5 push ix 139A F5 push af 139B CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 139E 18 32 jr loc_13D2 139E ; End of function sub_1396 139E 13A0 13A0 ; =============== S U B R O U T I N E ======================================= 13A0 13A0 13A0 sub_13A0: ; ... 13A0 E5 push hl 13A1 C5 push bc 13A2 DD E5 push ix 13A4 F5 push af 13A5 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 13A8 21 8E C4 ld hl, unk_C48E 13AB CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13AE CD D2 15 call sub_15D2 13B1 21 8E 13 ld hl, unk_138E 13B4 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13B7 CD 2C 16 call sub_162C 13BA 21 82 C5 ld hl, unk_C582 13BD CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13C0 CD 2C 16 call sub_162C 13C3 21 72 13 ld hl, unk_1372 13C6 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13C9 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 13CC 21 98 C4 ld hl, byte_C498 13CF CD 50 15 call sub_1550 ; XXX move 12byte thing from C3BD to (hl) 13D2 13D2 loc_13D2: ; ... 13D2 21 AF C5 ld hl, dword_C5AF ; XXX this might actually be 48 bits 13D5 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 13D8 CD CD 16 call sub_16CD 13DB 21 82 C5 ld hl, unk_C582 13DE CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13E1 CD D2 15 call sub_15D2 13E4 21 8E 13 ld hl, unk_138E 13E7 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13EA CD D2 15 call sub_15D2 13ED 21 8E C4 ld hl, unk_C48E 13F0 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 13F3 CD 2C 16 call sub_162C 13F6 3A AD C4 ld a, (byte_C4AD) 13F9 FE 06 cp 6 13FB 20 24 jr nz, loc_1421 13FD 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 1400 CD C1 12 call sub_12C1 1403 3A 86 C4 ld a, (unk_C486) 1406 E6 0F and 0Fh 1408 FE 03 cp 3 140A 28 0A jr z, loc_1416 140C FE 06 cp 6 140E 28 06 jr z, loc_1416 1410 FE 09 cp 9 1412 28 02 jr z, loc_1416 1414 18 0B jr loc_1421 1416 ; --------------------------------------------------------------------------- 1416 1416 loc_1416: ; ... 1416 DD 21 BD C3 ld ix, dword_C3BD ; inc32 this loc 141A FD 21 42 13 ld iy, _const_1_dword_1342 141E CD 8D 12 call accum32 ; (ix) += (iy); 4 bytes 1421 1421 loc_1421: ; ... 1421 F1 pop af 1422 DD E1 pop ix 1424 C1 pop bc 1425 E1 pop hl 1426 C9 ret 1426 ; End of function sub_13A0 1426 1427 1427 ; =============== S U B R O U T I N E ======================================= 1427 1427 1427 sub_1427: ; ... 1427 21 42 13 ld hl, _const_1_dword_1342 142A CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 142D 21 46 13 ld hl, unk_1346 1430 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 1433 3A AD C4 ld a, (byte_C4AD) 1436 D6 01 sub 1 1438 47 ld b, a 1439 1439 loc_1439: ; ... 1439 CD D2 15 call sub_15D2 143C 10 FB djnz loc_1439 143E 21 82 C5 ld hl, unk_C582 1441 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 1444 C9 ret 1444 ; End of function sub_1427 1444 1444 ; --------------------------------------------------------------------------- 1445 60 unk_1445: db 60h ; ` ; ... 1446 09 db 9 1447 08 db 8 1448 07 db 7 1449 B0 db 0B0h ; 144A 04 db 4 144B 58 db 58h ; X 144C 02 db 2 144D 2C db 2Ch ; , 144E 01 db 1 144F 96 db 96h ; 1450 00 db 0 1451 64 db 64h ; d 1452 00 db 0 1453 32 db 32h ; 2 1454 00 db 0 1455 1E db 1Eh 1456 00 db 0 1457 05 unk_1457: db 5 ; ... 1458 06 db 6 1459 04 db 4 145A 03 db 3 145B 02 db 2 145C 02 db 2 145D 02 db 2 145E 02 db 2 145F 02 db 2 1460 8C db 8Ch ; 1461 C3 db 0C3h ; 1462 1462 ; =============== S U B R O U T I N E ======================================= 1462 1462 1462 sub_1462: ; ... 1462 CD C1 12 call sub_12C1 1465 DD 21 7D C4 ld ix, unk_C47D ; XXX seems a 12 char buffer end 1469 06 05 ld b, 5 146B 146B loc_146B: ; ... 146B 7E ld a, (hl) 146C CD 77 14 call sub_1477 ; XXX seems bin2hex; A b2h-> (IX), IX -= 2 146F 23 inc hl 1470 10 F9 djnz loc_146B 1472 DD E5 push ix ; get buffer start in HL by transferring and adjusting 1474 E1 pop hl 1475 23 inc hl 1476 C9 ret 1476 ; End of function sub_1462 1476 1477 1477 ; =============== S U B R O U T I N E ======================================= 1477 1477 ; XXX seems bin2hex; A b2h-> (IX), IX -= 2 1477 1477 sub_1477: ; ... 1477 F5 push af 1478 E6 0F and 0Fh 147A F6 30 or 30h ; '0' 147C DD 77 FF ld (ix+0FFh), a 147F F1 pop af 1480 CB 3F srl a 1482 CB 3F srl a 1484 CB 3F srl a 1486 CB 3F srl a 1488 F6 30 or 30h ; '0' 148A DD 77 00 ld (ix+0), a 148D DD 2B dec ix 148F DD 2B dec ix 1491 C9 ret 1491 ; End of function sub_1477 1491 1492 1492 ; =============== S U B R O U T I N E ======================================= 1492 1492 1492 sub_1492: ; ... 1492 C5 push bc 1493 E5 push hl 1494 D5 push de 1495 D5 push de 1496 DD E1 pop ix 1498 E1 pop hl 1499 13 inc de 149A 36 00 ld (hl), 0 149C 01 03 00 ld bc, 3 149F ED B0 ldir 14A1 E1 pop hl 14A2 FD 21 42 13 ld iy, _const_1_dword_1342 14A6 0E 09 ld c, 9 14A8 11 04 00 ld de, 4 14AB 14AB loc_14AB: ; ... 14AB 7E ld a, (hl) 14AC E6 0F and 0Fh 14AE FE 0F cp 0Fh 14B0 20 01 jr nz, loc_14B3 14B2 AF xor a 14B3 14B3 loc_14B3: ; ... 14B3 FE 00 cp 0 14B5 20 08 jr nz, loc_14BF 14B7 FD 19 add iy, de 14B9 0D dec c 14BA 2B dec hl 14BB 20 EE jr nz, loc_14AB 14BD 18 10 jr loc_14CF 14BF ; --------------------------------------------------------------------------- 14BF 14BF loc_14BF: ; ... 14BF 47 ld b, a 14C0 14C0 loc_14C0: ; ... 14C0 FD E5 push iy 14C2 CD 8D 12 call accum32 ; (ix) += (iy); 4 bytes 14C5 FD E1 pop iy 14C7 10 F7 djnz loc_14C0 14C9 FD 19 add iy, de 14CB 2B dec hl 14CC 0D dec c 14CD 20 DC jr nz, loc_14AB 14CF 14CF loc_14CF: ; ... 14CF DD E5 push ix 14D1 E1 pop hl 14D2 C1 pop bc 14D3 C9 ret 14D3 ; End of function sub_1492 14D3 14D4 14D4 ; =============== S U B R O U T I N E ======================================= 14D4 14D4 14D4 sub_14D4: ; ... 14D4 E5 push hl 14D5 2A 96 C4 ld hl, (word_C496) 14D8 22 8E C4 ld (unk_C48E), hl 14DB 21 00 00 ld hl, 0 14DE 22 90 C4 ld (unk_C490), hl 14E1 E1 pop hl 14E2 C9 ret 14E2 ; End of function sub_14D4 14E2 14E3 14E3 ; =============== S U B R O U T I N E ======================================= 14E3 14E3 14E3 sub_14E3: ; ... 14E3 E5 push hl 14E4 C5 push bc 14E5 DD E5 push ix 14E7 FD E5 push iy 14E9 E5 push hl 14EA FD E1 pop iy 14EC DD 21 6A 13 ld ix, unk_136A 14F0 CD DA 11 call sub_11DA 14F3 FD E1 pop iy 14F5 DD E1 pop ix 14F7 C1 pop bc 14F8 E1 pop hl 14F9 C9 ret 14F9 ; End of function sub_14E3 14F9 14FA 14FA ; =============== S U B R O U T I N E ======================================= 14FA 14FA 14FA sub_14FA: 14FA DD E5 push ix 14FC FD E5 push iy 14FE DD 21 F1 C3 ld ix, unk_C3F1 1502 FD 21 41 C2 ld iy, word_C241 1506 CD DA 11 call sub_11DA 1509 FD E1 pop iy 150B DD E1 pop ix 150D C9 ret 150D ; End of function sub_14FA 150D 150E 150E ; =============== S U B R O U T I N E ======================================= 150E 150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 150E 150E sub_150E: ; ... 150E F5 push af 150F E5 push hl 1510 C5 push bc 1511 D5 push de 1512 11 C9 C3 ld de, dword_C3C9 ; XXX this might actually be 48bits 1515 01 04 00 ld bc, 4 1518 ED B0 ldir 151A 21 00 00 ld hl, 0 151D 22 CD C3 ld (word_C3CD), hl ; XXX this might actually be part of the previous item 1520 D1 pop de 1521 C1 pop bc 1522 E1 pop hl 1523 F1 pop af 1524 C9 ret 1524 ; End of function sub_150E 1524 1525 1525 ; =============== S U B R O U T I N E ======================================= 1525 1525 ; XXX move 4byte thing from C3C9 to (hl) 1525 1525 sub_1525: 1525 F5 push af 1526 E5 push hl 1527 C5 push bc 1528 D5 push de 1529 EB ex de, hl 152A 21 C9 C3 ld hl, dword_C3C9 ; XXX this might actually be 48bits 152D 01 04 00 ld bc, 4 1530 ED B0 ldir 1532 D1 pop de 1533 C1 pop bc 1534 E1 pop hl 1535 F1 pop af 1536 C9 ret 1536 ; End of function sub_1525 1536 1537 1537 ; =============== S U B R O U T I N E ======================================= 1537 1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 1537 1537 sub_1537: ; ... 1537 F5 push af 1538 E5 push hl 1539 C5 push bc 153A D5 push de 153B 11 BD C3 ld de, dword_C3BD ; XXX might actually be 48 bits 153E 01 04 00 ld bc, 4 1541 ED B0 ldir 1543 21 AF 17 ld hl, zeros_17AF 1546 01 08 00 ld bc, 8 1549 ED B0 ldir 154B D1 pop de 154C C1 pop bc 154D E1 pop hl 154E F1 pop af 154F C9 ret 154F ; End of function sub_1537 154F 1550 1550 ; =============== S U B R O U T I N E ======================================= 1550 1550 ; XXX move 12byte thing from C3BD to (hl) 1550 1550 sub_1550: ; ... 1550 F5 push af 1551 E5 push hl 1552 C5 push bc 1553 D5 push de 1554 EB ex de, hl 1555 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 1558 01 0C 00 ld bc, 12 155B ED B0 ldir 155D D1 pop de 155E C1 pop bc 155F E1 pop hl 1560 F1 pop af 1561 C9 ret 1561 ; End of function sub_1550 1561 1562 1562 ; =============== S U B R O U T I N E ======================================= 1562 1562 ; XXX move 4byte thing from C498 to (hl) 1562 1562 sub_1562: ; ... 1562 F5 push af 1563 E5 push hl 1564 C5 push bc 1565 D5 push de 1566 EB ex de, hl 1567 21 98 C4 ld hl, byte_C498 156A 01 04 00 ld bc, 4 156D ED B0 ldir 156F D1 pop de 1570 C1 pop bc 1571 E1 pop hl 1572 F1 pop af 1573 C9 ret 1573 ; End of function sub_1562 1573 1574 1574 ; =============== S U B R O U T I N E ======================================= 1574 1574 ; XXX move 4byte thing from C3BD to (hl) 1574 1574 sub_1574: ; ... 1574 F5 push af 1575 E5 push hl 1576 C5 push bc 1577 D5 push de 1578 EB ex de, hl 1579 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 157C 01 04 00 ld bc, 4 157F ED B0 ldir 1581 D1 pop de 1582 C1 pop bc 1583 E1 pop hl 1584 F1 pop af 1585 C9 ret 1585 ; End of function sub_1574 1585 1586 1586 ; =============== S U B R O U T I N E ======================================= 1586 1586 ; XXX move (ix) to (hl); dword 1586 1586 sub_1586: ; ... 1586 F5 push af 1587 E5 push hl 1588 C5 push bc 1589 DD E5 push ix 158B 06 04 ld b, 4 158D 158D next_158D: ; ... 158D DD 4E 00 ld c, (ix+0) 1590 71 ld (hl), c 1591 23 inc hl 1592 DD 23 inc ix 1594 10 F7 djnz next_158D 1596 DD E1 pop ix 1598 C1 pop bc 1599 E1 pop hl 159A F1 pop af 159B C9 ret 159B ; End of function sub_1586 159B 159C 159C ; =============== S U B R O U T I N E ======================================= 159C 159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 159C 159C sub_159C: ; ... 159C 01 BD C3 ld bc, dword_C3BD ; XXX might actually be 48 bits 159F 11 C9 C3 ld de, dword_C3C9 ; XXX this might actually be 48bits 15A2 C5 push bc 15A3 D5 push de 15A4 E5 push hl 15A5 AF xor a ; ensure carry clear 15A6 EB ex de, hl 15A7 1E 06 ld e, 6 15A9 15A9 next_15A9: ; ... 15A9 0A ld a, (bc) 15AA 8E adc a, (hl) 15AB 02 ld (bc), a 15AC 1D dec e 15AD 28 04 jr z, leave_15B3 15AF 03 inc bc 15B0 23 inc hl 15B1 18 F6 jr next_15A9 15B3 ; --------------------------------------------------------------------------- 15B3 15B3 leave_15B3: ; ... 15B3 E1 pop hl 15B4 D1 pop de 15B5 C1 pop bc 15B6 C9 ret 15B6 ; End of function sub_159C 15B6 15B7 15B7 ; =============== S U B R O U T I N E ======================================= 15B7 15B7 15B7 sub_15B7: ; ... 15B7 01 BD C3 ld bc, dword_C3BD ; XXX might actually be 48 bits 15BA 11 C9 C3 ld de, dword_C3C9 ; XXX this might actually be 48bits 15BD C5 push bc 15BE D5 push de 15BF E5 push hl 15C0 AF xor a 15C1 EB ex de, hl 15C2 1E 06 ld e, 6 15C4 15C4 loc_15C4: ; ... 15C4 0A ld a, (bc) 15C5 9E sbc a, (hl) 15C6 02 ld (bc), a 15C7 1D dec e 15C8 28 04 jr z, loc_15CE 15CA 03 inc bc 15CB 23 inc hl 15CC 18 F6 jr loc_15C4 15CE ; --------------------------------------------------------------------------- 15CE 15CE loc_15CE: ; ... 15CE E1 pop hl 15CF D1 pop de 15D0 C1 pop bc 15D1 C9 ret 15D1 ; End of function sub_15B7 15D1 15D2 15D2 ; =============== S U B R O U T I N E ======================================= 15D2 15D2 15D2 sub_15D2: ; ... 15D2 21 C9 C3 ld hl, dword_C3C9 ; XXX this might actually be 48bits 15D5 11 BD C3 ld de, dword_C3BD ; XXX might actually be 48 bits 15D8 C5 push bc 15D9 EB ex de, hl 15DA E5 push hl 15DB 32 D1 C3 ld (unk_C3D1), a 15DE 01 06 00 ld bc, 6 15E1 09 add hl, bc 15E2 41 ld b, c 15E3 15E3 loc_15E3: ; ... 15E3 36 00 ld (hl), 0 15E5 23 inc hl 15E6 10 FB djnz loc_15E3 15E8 06 08 ld b, 8 15EA ED 43 CF C3 ld (unk_C3CF), bc 15EE 06 00 ld b, 0 15F0 AF xor a 15F1 15F1 loc_15F1: ; ... 15F1 E1 pop hl 15F2 E5 push hl 15F3 7E ld a, (hl) 15F4 1F rra 15F5 D2 05 16 jp nc, loc_1605 15F8 09 add hl, bc 15F9 41 ld b, c 15FA D5 push de 15FB EB ex de, hl 15FC AF xor a 15FD 15FD loc_15FD: ; ... 15FD 1A ld a, (de) 15FE 8E adc a, (hl) 15FF 12 ld (de), a 1600 23 inc hl 1601 13 inc de 1602 10 F9 djnz loc_15FD 1604 D1 pop de 1605 1605 loc_1605: ; ... 1605 E1 pop hl 1606 E5 push hl 1607 09 add hl, bc 1608 09 add hl, bc 1609 2B dec hl 160A C5 push bc 160B 06 0C ld b, 12 160D AF xor a 160E 160E loc_160E: ; ... 160E 7E ld a, (hl) 160F 1F rra 1610 77 ld (hl), a 1611 2B dec hl 1612 10 FA djnz loc_160E 1614 C1 pop bc 1615 21 D0 C3 ld hl, unk_C3D0 1618 35 dec (hl) 1619 C2 F1 15 jp nz, loc_15F1 161C 36 08 ld (hl), 8 161E 2B dec hl 161F 35 dec (hl) 1620 C2 F1 15 jp nz, loc_15F1 1623 E1 pop hl 1624 C1 pop bc 1625 11 BD C3 ld de, dword_C3BD ; XXX might actually be 48 bits 1628 3A D1 C3 ld a, (unk_C3D1) 162B C9 ret 162B ; End of function sub_15D2 162B 162C 162C ; =============== S U B R O U T I N E ======================================= 162C 162C 162C sub_162C: ; ... 162C 21 C9 C3 ld hl, dword_C3C9 ; XXX this might actually be 48bits 162F 11 BD C3 ld de, dword_C3BD ; XXX might actually be 48 bits 1632 C5 push bc 1633 EB ex de, hl 1634 E5 push hl 1635 32 D1 C3 ld (unk_C3D1), a 1638 01 06 00 ld bc, 6 163B 09 add hl, bc 163C 41 ld b, c 163D 163D loc_163D: ; ... 163D 36 00 ld (hl), 0 163F 23 inc hl 1640 10 FB djnz loc_163D 1642 06 08 ld b, 8 1644 ED 43 CF C3 ld (unk_C3CF), bc 1648 41 ld b, c 1649 AF xor a 164A D5 push de 164B E1 pop hl 164C 164C loc_164C: ; ... 164C 86 add a, (hl) 164D C2 56 16 jp nz, loc_1656 1650 23 inc hl 1651 10 F9 djnz loc_164C 1653 C3 99 16 jp loc_1699 1656 ; --------------------------------------------------------------------------- 1656 1656 loc_1656: ; ... 1656 E1 pop hl 1657 E5 push hl 1658 AF xor a 1659 06 0B ld b, 0Bh 165B 165B loc_165B: ; ... 165B 7E ld a, (hl) 165C 17 rla 165D 77 ld (hl), a 165E 23 inc hl 165F 10 FA djnz loc_165B 1661 E1 pop hl 1662 E5 push hl 1663 09 add hl, bc 1664 D5 push de 1665 EB ex de, hl 1666 41 ld b, c 1667 AF xor a 1668 1668 loc_1668: ; ... 1668 1A ld a, (de) 1669 9E sbc a, (hl) 166A 12 ld (de), a 166B 23 inc hl 166C 13 inc de 166D 10 F9 djnz loc_1668 166F D1 pop de 1670 DA 7C 16 jp c, loc_167C 1673 E1 pop hl 1674 E5 push hl 1675 3E 01 ld a, 1 1677 86 add a, (hl) 1678 77 ld (hl), a 1679 C3 8B 16 jp loc_168B 167C ; --------------------------------------------------------------------------- 167C 167C loc_167C: ; ... 167C E1 pop hl 167D E5 push hl 167E 09 add hl, bc 167F 41 ld b, c 1680 D5 push de 1681 EB ex de, hl 1682 AF xor a 1683 1683 loc_1683: ; ... 1683 1A ld a, (de) 1684 8E adc a, (hl) 1685 12 ld (de), a 1686 23 inc hl 1687 13 inc de 1688 10 F9 djnz loc_1683 168A D1 pop de 168B 168B loc_168B: ; ... 168B 21 D0 C3 ld hl, unk_C3D0 168E 35 dec (hl) 168F C2 56 16 jp nz, loc_1656 1692 36 08 ld (hl), 8 1694 2B dec hl 1695 35 dec (hl) 1696 C2 56 16 jp nz, loc_1656 1699 1699 loc_1699: ; ... 1699 E1 pop hl 169A C1 pop bc 169B 3A D1 C3 ld a, (unk_C3D1) 169E 11 BD C3 ld de, dword_C3BD ; XXX might actually be 48 bits 16A1 C9 ret 16A1 ; End of function sub_162C 16A1 16A2 ; --------------------------------------------------------------------------- 16A2 E5 push hl 16A3 21 A4 C4 ld hl, unk_C4A4 16A6 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 16A9 AF xor a 16AA CD B7 15 call sub_15B7 16AD 30 0F jr nc, loc_16BE 16AF 21 C9 C3 ld hl, dword_C3C9 ; XXX this might actually be 48bits 16B2 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 16B5 21 A4 C4 ld hl, unk_C4A4 16B8 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 16BB CD B7 15 call sub_15B7 16BE 16BE loc_16BE: ; ... 16BE E1 pop hl 16BF C9 ret 16C0 16C0 ; =============== S U B R O U T I N E ======================================= 16C0 16C0 16C0 sub_16C0: ; ... 16C0 21 D5 C3 ld hl, unk_C3D5 16C3 CD 96 13 call sub_1396 16C6 21 E5 C3 ld hl, unk_C3E5 16C9 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 16CC C9 ret 16CC ; End of function sub_16C0 16CC 16CD 16CD ; =============== S U B R O U T I N E ======================================= 16CD 16CD 16CD sub_16CD: ; ... 16CD CD D9 16 call sub_16D9 16D0 F5 push af 16D1 DC EE 16 call c, sub_16EE 16D4 F1 pop af 16D5 D4 00 17 call nc, sub_1700 16D8 C9 ret 16D8 ; End of function sub_16CD 16D8 16D9 16D9 ; =============== S U B R O U T I N E ======================================= 16D9 16D9 16D9 sub_16D9: ; ... 16D9 E5 push hl 16DA DD E5 push ix 16DC FD E5 push iy 16DE E5 push hl 16DF DD E1 pop ix 16E1 FD 21 72 13 ld iy, unk_1372 16E5 CD DA 11 call sub_11DA 16E8 FD E1 pop iy 16EA DD E1 pop ix 16EC E1 pop hl 16ED C9 ret 16ED ; End of function sub_16D9 16ED 16EE 16EE ; =============== S U B R O U T I N E ======================================= 16EE 16EE 16EE sub_16EE: ; ... 16EE CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 16F1 21 72 13 ld hl, unk_1372 16F4 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 16F7 CD B7 15 call sub_15B7 16FA 3E 01 ld a, 1 16FC 32 AE C5 ld (unk_C5AE), a 16FF C9 ret 16FF ; End of function sub_16EE 16FF 1700 1700 ; =============== S U B R O U T I N E ======================================= 1700 1700 1700 sub_1700: ; ... 1700 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 1703 21 72 13 ld hl, unk_1372 1706 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 1709 CD B7 15 call sub_15B7 170C 3E 00 ld a, 0 170E 32 AE C5 ld (unk_C5AE), a 1711 C9 ret 1711 ; End of function sub_1700 1711 1712 ; --------------------------------------------------------------------------- 1712 21 D5 C3 ld hl, unk_C3D5 1715 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 1718 21 17 C4 ld hl, unk_C417 171B CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 171E 3A 3B C5 ld a, (unk_C53B) 1721 CB 7F bit 7, a 1723 F5 push af 1724 C4 9C 15 call nz, sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 1727 F1 pop af 1728 CC B7 15 call z, sub_15B7 172B C9 ret 172C ; --------------------------------------------------------------------------- 172C CD 62 17 call sub_1762 172F CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 1732 21 E5 C3 ld hl, unk_C3E5 1735 18 1C jr loc_1753 1737 ; --------------------------------------------------------------------------- 1737 CD 62 17 call sub_1762 173A CD B7 15 call sub_15B7 173D 21 E5 C3 ld hl, unk_C3E5 1740 18 11 jr loc_1753 1742 ; --------------------------------------------------------------------------- 1742 CD 57 17 call sub_1757 1745 CD B7 15 call sub_15B7 1748 C9 ret 1749 ; --------------------------------------------------------------------------- 1749 CD 57 17 call sub_1757 174C CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 174F C9 ret 1750 ; --------------------------------------------------------------------------- 1750 21 D5 C3 ld hl, unk_C3D5 1753 1753 loc_1753: ; ... 1753 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 1756 C9 ret 1757 1757 ; =============== S U B R O U T I N E ======================================= 1757 1757 1757 sub_1757: ; ... 1757 21 D5 C3 ld hl, unk_C3D5 175A CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 175D 21 72 13 ld hl, unk_1372 1760 18 09 jr loc_176B 1760 ; End of function sub_1757 1760 1762 1762 ; =============== S U B R O U T I N E ======================================= 1762 1762 1762 sub_1762: ; ... 1762 21 E5 C3 ld hl, unk_C3E5 1765 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 1768 21 89 C5 ld hl, unk_C589 176B 176B loc_176B: ; ... 176B CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 176E C9 ret 176E ; End of function sub_1762 176E 176E ; --------------------------------------------------------------------------- 176F B8 unk_176F: db 0B8h ; ; ... 1770 17 db 17h 1771 BE db 0BEh ; 1772 17 db 17h 1773 C4 db 0C4h ; 1774 17 db 17h 1775 CA db 0CAh ; 1776 17 db 17h 1777 D0 db 0D0h ; 1778 17 db 17h 1779 D6 db 0D6h ; 177A 17 db 17h 177B DC db 0DCh ; 177C 17 db 17h 177D E2 db 0E2h ; 177E 17 db 17h 177F E8 db 0E8h ; 1780 17 db 17h 1781 EE db 0EEh ; 1782 17 db 17h 1783 F4 db 0F4h ; 1784 17 db 17h 1785 FA db 0FAh ; 1786 17 db 17h 1787 00 db 0 1788 18 db 18h 1789 06 db 6 178A 18 db 18h 178B 0C db 0Ch 178C 18 db 18h 178D 12 db 12h 178E 18 db 18h 178F 18 db 18h 1790 18 db 18h 1791 1E db 1Eh 1792 18 db 18h 1793 24 db 24h ; $ 1794 18 db 18h 1795 2A db 2Ah ; * 1796 18 db 18h 1797 30 db 30h ; 0 1798 18 db 18h 1799 36 db 36h ; 6 179A 18 db 18h 179B 3C db 3Ch ; < 179C 18 db 18h 179D 42 db 42h ; B 179E 18 db 18h 179F 48 db 48h ; H 17A0 18 db 18h 17A1 4E db 4Eh ; N 17A2 18 db 18h 17A3 54 db 54h ; T 17A4 18 db 18h 17A5 5A db 5Ah ; Z 17A6 18 db 18h 17A7 60 db 60h ; ` 17A8 18 db 18h 17A9 66 db 66h ; f 17AA 18 db 18h 17AB 6C db 6Ch ; l 17AC 18 db 18h 17AD 72 db 72h ; r 17AE 18 db 18h 17AF 00 00 00 00+zeros_17AF: db 0, 0, 0, 0, 0, 0, 0, 0 ; ... 17B7 00 db 0 17B8 01 db 1 17B9 00 db 0 17BA 00 db 0 17BB 00 db 0 17BC 00 db 0 17BD 00 db 0 17BE 02 db 2 17BF 00 db 0 17C0 00 db 0 17C1 00 db 0 17C2 00 db 0 17C3 00 db 0 17C4 04 db 4 17C5 00 db 0 17C6 00 db 0 17C7 00 db 0 17C8 00 db 0 17C9 00 db 0 17CA 08 db 8 17CB 00 db 0 17CC 00 db 0 17CD 00 db 0 17CE 00 db 0 17CF 00 db 0 17D0 16 db 16h 17D1 00 db 0 17D2 00 db 0 17D3 00 db 0 17D4 00 db 0 17D5 00 db 0 17D6 32 db 32h ; 2 17D7 00 db 0 17D8 00 db 0 17D9 00 db 0 17DA 00 db 0 17DB 00 db 0 17DC 64 db 64h ; d 17DD 00 db 0 17DE 00 db 0 17DF 00 db 0 17E0 00 db 0 17E1 01 db 1 17E2 28 db 28h ; ( 17E3 00 db 0 17E4 00 db 0 17E5 00 db 0 17E6 00 db 0 17E7 02 db 2 17E8 56 db 56h ; V 17E9 00 db 0 17EA 00 db 0 17EB 00 db 0 17EC 00 db 0 17ED 05 db 5 17EE 12 db 12h 17EF 00 db 0 17F0 00 db 0 17F1 00 db 0 17F2 00 db 0 17F3 10 db 10h 17F4 24 db 24h ; $ 17F5 00 db 0 17F6 00 db 0 17F7 00 db 0 17F8 00 db 0 17F9 20 db 20h 17FA 48 db 48h ; H 17FB 00 db 0 17FC 00 db 0 17FD 00 db 0 17FE 00 db 0 17FF 40 db 40h ; @ 1800 96 db 96h ; 1801 00 db 0 1802 00 db 0 1803 00 db 0 1804 00 db 0 1805 81 db 81h ; 1806 92 db 92h ; 1807 00 db 0 1808 00 db 0 1809 00 db 0 180A 01 db 1 180B 63 db 63h ; c 180C 84 db 84h ; 180D 00 db 0 180E 00 db 0 180F 00 db 0 1810 03 db 3 1811 27 db 27h ; ' 1812 68 db 68h ; h 1813 00 db 0 1814 00 db 0 1815 00 db 0 1816 06 db 6 1817 55 db 55h ; U 1818 36 db 36h ; 6 1819 00 db 0 181A 00 db 0 181B 00 db 0 181C 13 db 13h 181D 10 db 10h 181E 72 db 72h ; r 181F 00 db 0 1820 00 db 0 1821 00 db 0 1822 26 db 26h ; & 1823 21 db 21h ; ! 1824 44 db 44h ; D 1825 00 db 0 1826 00 db 0 1827 00 db 0 1828 52 db 52h ; R 1829 42 db 42h ; B 182A 88 db 88h ; 182B 00 db 0 182C 00 db 0 182D 01 db 1 182E 04 db 4 182F 85 db 85h ; 1830 76 db 76h ; v 1831 00 db 0 1832 00 db 0 1833 02 db 2 1834 09 db 9 1835 71 db 71h ; q 1836 52 db 52h ; R 1837 00 db 0 1838 00 db 0 1839 04 db 4 183A 19 db 19h 183B 43 db 43h ; C 183C 04 db 4 183D 00 db 0 183E 00 db 0 183F 08 db 8 1840 38 db 38h ; 8 1841 86 db 86h ; 1842 08 db 8 1843 00 db 0 1844 00 db 0 1845 16 db 16h 1846 77 db 77h ; w 1847 72 db 72h ; r 1848 16 db 16h 1849 00 db 0 184A 00 db 0 184B 33 db 33h ; 3 184C 55 db 55h ; U 184D 44 db 44h ; D 184E 32 db 32h ; 2 184F 00 db 0 1850 00 db 0 1851 67 db 67h ; g 1852 10 db 10h 1853 88 db 88h ; 1854 64 db 64h ; d 1855 00 db 0 1856 01 db 1 1857 34 db 34h ; 4 1858 21 db 21h ; ! 1859 77 db 77h ; w 185A 28 db 28h ; ( 185B 00 db 0 185C 02 db 2 185D 68 db 68h ; h 185E 43 db 43h ; C 185F 54 db 54h ; T 1860 56 db 56h ; V 1861 00 db 0 1862 05 db 5 1863 36 db 36h ; 6 1864 87 db 87h ; 1865 09 db 9 1866 12 db 12h 1867 00 db 0 1868 10 db 10h 1869 73 db 73h ; s 186A 74 db 74h ; t 186B 18 db 18h 186C 24 db 24h ; $ 186D 00 db 0 186E 21 db 21h ; ! 186F 47 db 47h ; G 1870 48 db 48h ; H 1871 36 db 36h ; 6 1872 48 db 48h ; H 1873 21 db 21h ; ! 1874 6A db 6Ah ; j 1875 13 db 13h 1876 ; --------------------------------------------------------------------------- 1876 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 1879 21 72 13 ld hl, unk_1372 187C CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 187F CD B7 15 call sub_15B7 1882 21 52 13 ld hl, unk_1352 1885 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 1888 CD D2 15 call sub_15D2 188B 21 FD C3 ld hl, unk_C3FD 188E CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 1891 CD D2 15 call sub_15D2 1894 21 05 C4 ld hl, unk_C405 1897 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 189A CD 2C 16 call sub_162C 189D 21 6F C5 ld hl, unk_C56F 18A0 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 18A3 C9 ret 18A4 ; --------------------------------------------------------------------------- 18A4 21 6A 13 ld hl, unk_136A 18A7 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 18AA 21 72 13 ld hl, unk_1372 18AD CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18B0 CD B7 15 call sub_15B7 18B3 21 52 13 ld hl, unk_1352 18B6 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18B9 CD D2 15 call sub_15D2 18BC 21 0D C4 ld hl, unk_C40D 18BF CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18C2 CD D2 15 call sub_15D2 18C5 21 05 C4 ld hl, unk_C405 18C8 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18CB CD 2C 16 call sub_162C 18CE 21 73 C5 ld hl, unk_C573 18D1 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 18D4 C9 ret 18D5 ; --------------------------------------------------------------------------- 18D5 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18D8 21 77 C5 ld hl, unk_C577 18DB 18DB loc_18DB: ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 18DB CD 37 15 call sub_1537 18DE CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 18E1 21 77 C5 ld hl, unk_C577 18E4 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 18E7 C3 FF 18 jp loc_18FF 18EA ; --------------------------------------------------------------------------- 18EA CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 18ED 21 77 C5 ld hl, unk_C577 18F0 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 18F3 CD B7 15 call sub_15B7 18F6 21 77 C5 ld hl, unk_C577 18F9 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 18FC C3 FF 18 jp loc_18FF 18FF ; --------------------------------------------------------------------------- 18FF 18FF loc_18FF: ; ... 18FF 21 2C 19 ld hl, off_192C 1902 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 1905 CD D2 15 call sub_15D2 1908 21 56 13 ld hl, unk_1356 190B CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 190E CD 2C 16 call sub_162C 1911 ED 5B BD C3 ld de, (dword_C3BD) ; XXX might actually be 48 bits 1915 21 48 0D ld hl, 3400 1918 AF xor a 1919 ED 52 sbc hl, de 191B 7D ld a, l ; XXX ok...? 191C 7C ld a, h ; XXX wack 191D E6 0F and 0Fh 191F C9 ret 191F ; --------------------------------------------------------------------------- 1920 0C db 0Ch 1921 00 db 0 1922 00 db 0 1923 00 db 0 1924 02 db 2 1925 00 db 0 1926 00 db 0 1927 00 db 0 1928 03 db 3 1929 00 db 0 192A 00 db 0 192B 00 db 0 192C 04 00 off_192C: dw asc_3+1 ; ... 192E 00 db 0 192F 00 db 0 1930 20 43 6F 70+ .ascii ' Copyright by Spectradata GmbH / FRG,' 1955 20 55 66 65+ .ascii ' Uferstrasse 76 D-2900 Oldenburg, Phone 0441/25652 ' 1988 1988 ; =============== S U B R O U T I N E ======================================= 1988 1988 1988 coldBoot_0: ; ... 1988 F3 di 1989 ED 5E im 2 198B 21 00 01 ld hl, im2vec_100 ; our IM2 vector table base 198E 7C ld a, h 198F ED 47 ld i, a 1991 31 00 C8 ld sp, 0C800h ; set TOS at end of RAM 1994 CD F4 1A call sub_1AF4 1997 CD D8 1A call sub_1AD8 199A 3E 11 ld a, 11h 199C 32 0E C0 ld (byte_C00E), a ; XXX XOFF 0x13 or XON 0x11 used as a flag in flow control 199F 32 63 C0 ld (inXoff_C063), a ; XONXOFF flag and actual character 19A2 32 6E C0 ld (lcdCP_C06E), a ; the current cursor position of the LCD, with bit 7 set 19A5 21 AF 25 ld hl, sub_25AF ; XXX dart send XOFF 19A8 22 64 C0 ld (pfnXOFF_C064), hl ; does either send XOFF or drop RTS depending on flow control option 19AB 21 2F 24 ld hl, modehandlers1st_242F ; mode key handlers for non-shifted (1st) state 19AE 11 AF C1 ld de, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 19B1 01 16 00 ld bc, 22 19B4 ED B0 ldir 19B6 3E 01 ld a, 1 19B8 32 3A C2 ld (byte_C23A), a 19BB 0E 68 ld c, 68h ; LCD control register 19BD 3E 38 ld a, 38h ; lcd config 8 bit, 2 line, 5x8 chars 19BF CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 19C2 3E 0F ld a, 0Fh ; display on, cursor on, blink on 19C4 CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 19C7 3E 01 ld a, 1 ; clear display 19C9 CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 19CC 06 04 ld b, 4 ; initialize all CTC this way for starters 19CE 3E 03 ld a, 3 ; no int, timer, presc16, no tc, reset 19D0 0E 20 ld c, 20h 19D2 19D2 loop_19D2: ; ... 19D2 ED 79 out (c), a ; default init this CTC channel 19D4 0C inc c 19D5 10 FB djnz loop_19D2 ; do the rest of the CTC 19D7 21 E4 29 ld hl, portblastColdBoot_29E4 ; port blast setup for 8255 and pio0bp and pio1fp 19DA CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 19DD DB 30 in a, (30h) ; XXX PIO0bp 19DF DB 32 in a, (32h) ; XXX PIO0bp 19E1 DB 5A in a, (5Ah) ; XXX PIO1fp 19E3 CD DD 20 call allLampsOn_20DD ; all LEDs ON 19E6 21 0D 2A ld hl, dartAinit_2A0D ; dart A basic init sequence, subsequently modded 19E9 01 09 00 ld bc, 9 19EC 11 04 C0 ld de, dartAconfig_C004 ; get DART init into RAM so we can tweak it as per DIP switches 19EF ED B0 ldir 19F1 3E 45 ld a, 45h ; setup CTC 2 for XXX unknown; 1 and 3 unused? 19F3 D3 22 out (22h), a ; no int, counter, falling edge, time constant follows 19F5 3E 02 ld a, 2 19F7 D3 22 out (22h), a ; time constant (div 2) 19F9 3E 45 ld a, 45h ; CTC 0 for BRG 19FB D3 20 out (20h), a ; no int, counter, falling edge, time constant follows 19FD DB 60 in a, (60h) ; RS232 DIP switches 19FF E6 07 and 7 ; mask BRG selection 1A01 11 00 00 ld de, 0 1A04 5F ld e, a 1A05 21 05 2A ld hl, brgDiv_2A05 ; brg divisors via ctc chan 0 1A08 19 add hl, de 1A09 7E ld a, (hl) 1A0A D3 20 out (20h), a ; time constant 1A0C FE AE cp 174 ; is it for 110? tweak the prescaler to help 1A0E 20 08 jr nz, cont_1A18 1A10 3A 06 C0 ld a, (dartWReg4_C006) ; wreg 4 1A13 CB EF set 5, a ; XXX surely a bug, because this is for the DART, not the CTC, and DART ignores this bit as per doc 1A13 ; use the 256 prescaler (instead of 16) 1A15 32 06 C0 ld (dartWReg4_C006), a ; wreg 4 1A18 1A18 cont_1A18: ; ... 1A18 DB 60 in a, (60h) ; RS232 DIP switches 1A1A CB 7F bit 7, a 1A1C 20 06 jr nz, cont_1A24 1A1E 21 BA 25 ld hl, sub_25BA ; XXX dart drop RTS 1A21 22 64 C0 ld (pfnXOFF_C064), hl ; does either send XOFF or drop RTS depending on flow control option 1A24 1A24 cont_1A24: ; ... 1A24 DD 21 06 C0 ld ix, dartWReg4_C006 ; wreg 4 1A28 CB 6F bit 5, a 1A2A 20 0C jr nz, cont_1A38 ; no parity 1A2C DD CB 00 C6 set 0, (ix+0) ; parity enable 1A30 CB 77 bit 6, a 1A32 20 04 jr nz, cont_1A38 ; parity odd 1A34 DD CB 00 CE set 1, (ix+0) ; parity even 1A38 1A38 cont_1A38: ; ... 1A38 CB 67 bit 4, a 1A3A 20 04 jr nz, cont_1A40 1A3C DD CB 00 DE set 3, (ix+0) ; two stop bits 1A40 1A40 cont_1A40: ; ... 1A40 DD 21 08 C0 ld ix, dartWReg3_C008 ; DART wreg 3 1A44 CB 5F bit 3, a 1A46 20 08 jr nz, cont_1A50 1A48 DD CB 00 FE set 7, (ix+0) ; rx 8 bits/char 1A4C DD CB 02 F6 set 6, (ix+2) ; tx 8 bits/char 1A50 1A50 cont_1A50: ; ... 1A50 CB 7F bit 7, a 1A52 20 04 jr nz, cont_1A58 1A54 DD CB 00 EE set 5, (ix+0) ; 'auto enables' CTS-related 1A58 1A58 cont_1A58: ; ... 1A58 06 09 ld b, 9 1A5A 0E 09 ld c, 9 ; dart A ctrl 1A5C 21 04 C0 ld hl, dartAconfig_C004 ; init sequence setup from 2A0D earlier 1A5F ED B3 otir 1A61 3E 12 ld a, 12h 1A63 D3 0B out (0Bh), a ; dart b reset ext status interrupts, setup for reg 2 1A65 3E 10 ld a, 10h 1A67 D3 0B out (0Bh), a ; ISR vector 0010h 1A69 3E 11 ld a, 11h 1A6B D3 0B out (0Bh), a ; dart b setup for reg 1 1A6D 3E 04 ld a, 4 1A6F D3 0B out (0Bh), a ; int all rx char (parity affect vector, status affects vector) 1A71 CD F8 20 call sub_20F8 1A74 21 40 1B ld hl, lcdstrSplashLine0_1B40 1A77 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1A7A DB 38 in a, (38h) ; GPIB DIP switch 1A7C CB 77 bit 6, a ; gpib? 1A7E CA 96 1A jp z, cont232_1A96 1A81 21 6C 1B ld hl, lcdstrSplashLine1_488_1B6C 1A84 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1A87 CD 50 28 call sub_2850 ; XXX GPIB related; probably init 1A8A C2 96 1A jp nz, cont232_1A96 1A8D 21 B3 28 ld hl, sub_28B3 ; XXX GPIB send byte in A (with 0x03 translated to 0d0a sequence) 1A90 22 6C C0 ld (pfnSendByte_C06C), hl ; XXX seems to be a 'send byte' routine depending on GPIB or 232 option selected by dip switch 1A93 C3 A2 1A jp loc_1AA2 1A96 ; --------------------------------------------------------------------------- 1A96 1A96 cont232_1A96: ; ... 1A96 21 98 1B ld hl, lcdstrSplashLine1_232_1B98 1A99 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1A9C 21 6E 25 ld hl, dartSendXlat_256E ; DART A send byte in A (with w xlat) 1A9F 22 6C C0 ld (pfnSendByte_C06C), hl ; XXX seems to be a 'send byte' routine depending on GPIB or 232 option selected by dip switch 1AA2 1AA2 loc_1AA2: ; ... 1AA2 CD 16 2A call sub_2A16 1AA5 06 05 ld b, 5 1AA7 CD C2 29 call delay_29C2 ; delay for B times XXX usec 1AAA CD 01 1C call sub_1C01 1AAD CD 21 1C call sub_1C21 1AB0 CD EA 20 call allLampsOff_20EA ; all LEDs OFF 1AB3 CD A5 20 call lamp2ndOn_20A5 ; LED '2nd' ON 1AB6 CD D6 1B call buzzer_1BD6 ; buzz for (c23ah) times 1AB9 CD 46 20 call sub_2046 1ABC CD 37 06 call sub_637 1ABF 21 41 22 ld hl, unk_2241 1AC2 22 5F C2 ld (word_C25F), hl 1AC5 21 81 22 ld hl, unk_2281 1AC8 22 61 C2 ld (word_C261), hl 1ACB CD 29 08 call sub_829 1ACE CD B7 24 call sub_24B7 ; XXX mode unshifted, 'SCAN' LED off 1AD1 CD CF 1F call sub_1FCF ; XXX set button lamps in normal, unshifted, mode 1AD4 FB ei 1AD5 C3 23 01 jp infiniteloop_123 1AD5 ; End of function coldBoot_0 1AD5 1AD8 1AD8 ; =============== S U B R O U T I N E ======================================= 1AD8 1AD8 1AD8 sub_1AD8: ; ... 1AD8 21 71 C0 ld hl, unk_C071 ; XXX appears to be command buffer from DART data at least (maybe also gpib) 1ADB 36 40 ld (hl), '@' 1ADD 22 00 C0 ld (word_C000), hl ; XXX appears to be a buffer pointer; esp for DART data but maybe others 1AE0 22 68 C0 ld (word_C068), hl ; XXX appears to be a buffer pointer; related to C000 1AE3 21 13 C0 ld hl, keybuf_C013 ; numeric key entry buffer 1AE6 36 40 ld (hl), '@' 1AE8 22 11 C0 ld (keybufptr_C011), hl ; current location in numeric key entry buffer 1AEB 22 6A C0 ld (word_C06A), hl 1AEE 3E 40 ld a, '@' 1AF0 32 10 C0 ld (curmodekeycode_C010), a ; current mode key code; '@' if none 1AF3 C9 ret 1AF3 ; End of function sub_1AD8 1AF3 1AF4 1AF4 ; =============== S U B R O U T I N E ======================================= 1AF4 1AF4 1AF4 sub_1AF4: ; ... 1AF4 AF xor a 1AF5 32 5C C2 ld (byte_C25C), a ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 1AF8 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 1AFB 32 C6 C5 ld (unk_C5C6), a 1AFE 32 6E C5 ld (unk_C56E), a 1B01 32 48 C4 ld (unk_C448), a 1B04 32 46 C4 ld (unk_C446), a 1B07 32 65 C4 ld (unk_C465), a 1B0A 32 3E C5 ld (unk_C53E), a 1B0D 32 3F C5 ld (unk_C53F), a 1B10 32 72 C4 ld (unk_C472), a ; XXX seems a 12 char buffer (for hex of 48-bit value) 1B13 32 29 C2 ld (unk_C229), a 1B16 32 5D C4 ld (unk_C45D), a 1B19 32 5E C2 ld (byte_C25E), a ; XXX some sort of flag 1B1C 32 5D C2 ld (byte_C25D), a ; XXX some sort of flag 1B1F F6 64 or 64h ; 'd' 1B21 32 41 C4 ld (unk_C441), a 1B24 3E 04 ld a, 4 1B26 32 42 C4 ld (unk_C442), a 1B29 3E 02 ld a, 2 1B2B 32 47 C4 ld (unk_C447), a 1B2E 32 42 C4 ld (unk_C442), a 1B31 21 8C C3 ld hl, unk_C38C 1B34 22 70 C4 ld (unk_C470), hl 1B37 CD D4 29 call sub_29D4 ; fill C229 with ten '0' chars 1B3A 3E 20 ld a, 20h ; ' ' 1B3C 32 81 C5 ld (unk_C581), a 1B3F C9 ret 1B3F ; End of function sub_1AF4 1B3F 1B3F ; --------------------------------------------------------------------------- 1B40 00 lcdstrSplashLine0_1B40:db 0 ; ... 1B41 01 db 1 ; (0,1) 1B42 20 20 53 20+ .ascii ' S P E C T R A D A T A G M B H FRG @' 1B6B 40 db '@' ; (as-is) 1B6C 00 lcdstrSplashLine1_488_1B6C:db 0 ; ... 1B6D 28 db 40 ; (1,0) 1B6E 20 20 20 20+ .ascii ' SD70 IEEE-488 Version 1.8 / 1987 @' 1B97 40 db '@' ; (as-is) 1B98 00 lcdstrSplashLine1_232_1B98:db 0 ; ... 1B99 28 db 40 ; (1,0) 1B9A 20 20 20 20+ .ascii ' SD70 RS232C Version 1.8 / 1987 @' 1BC3 40 db '@' ; (as-is) 1BC4 1BC4 ; =============== S U B R O U T I N E ======================================= 1BC4 1BC4 ; send a list of ports values 1BC4 1BC4 doPortBlast_1BC4: ; ... 1BC4 4E ld c, (hl) ; start is initial port number 1BC5 1BC5 next_1BC5: ; ... 1BC5 23 inc hl 1BC6 7E ld a, (hl) ; command or value 1BC7 FE 7F cp 7Fh ; end? 1BC9 C8 ret z 1BCA FE 7E cp 7Eh ; change port? 1BCC 20 04 jr nz, write_1BD2 1BCE 23 inc hl 1BCF 4E ld c, (hl) 1BD0 23 inc hl 1BD1 7E ld a, (hl) 1BD2 1BD2 write_1BD2: ; ... 1BD2 ED 79 out (c), a ; out you go 1BD4 18 EF jr next_1BC5 1BD4 ; End of function doPortBlast_1BC4 1BD4 1BD6 1BD6 ; =============== S U B R O U T I N E ======================================= 1BD6 1BD6 ; buzz for (c23ah) times 1BD6 1BD6 buzzer_1BD6: ; ... 1BD6 F5 push af 1BD7 C5 push bc 1BD8 D5 push de 1BD9 E5 push hl 1BDA 3A 3A C2 ld a, (byte_C23A) 1BDD 4F ld c, a 1BDE 1BDE puslegroups_1BDE: ; ... 1BDE 21 64 00 ld hl, 100 1BE1 11 01 00 ld de, 1 1BE4 1BE4 pulse100_1BE4: ; ... 1BE4 06 78 ld b, 120 1BE6 AF xor a 1BE7 D3 2A out (2Ah), a ; XXX 8255 C piezo 1BE9 1BE9 delay_1BE9: ; ... 1BE9 10 FE djnz $ 1BEB 2F cpl 1BEC D3 2A out (2Ah), a ; XXX 8255 C piezo 1BEE 06 78 ld b, 120 1BF0 1BF0 delay_1BF0: ; ... 1BF0 10 FE djnz $ 1BF2 B7 or a 1BF3 ED 52 sbc hl, de 1BF5 C2 E4 1B jp nz, pulse100_1BE4 1BF8 0D dec c 1BF9 C2 DE 1B jp nz, puslegroups_1BDE 1BFC E1 pop hl 1BFD D1 pop de 1BFE C1 pop bc 1BFF F1 pop af 1C00 C9 ret 1C00 ; End of function buzzer_1BD6 1C00 1C01 1C01 ; =============== S U B R O U T I N E ======================================= 1C01 1C01 1C01 sub_1C01: ; ... 1C01 3E 01 ld a, 1 1C03 0E 68 ld c, 68h ; 'h' 1C03 ; End of function sub_1C01 1C03 1C05 1C05 ; =============== S U B R O U T I N E ======================================= 1C05 1C05 ; LCD send byte to whichever port with wait for not busy 1C05 1C05 lcdWriteByte_1C05: ; ... 1C05 F5 push af 1C06 1C06 loop_1C06: ; ... 1C06 DB 68 in a, (68h) ; read LCD status 1C08 CB 7F bit 7, a ; busy? 1C0A 20 FA jr nz, loop_1C06 1C0C F1 pop af 1C0D ED 79 out (c), a ; send LCD byte to whichever port 1C0F C9 ret 1C0F ; End of function lcdWriteByte_1C05 1C0F 1C10 1C10 ; =============== S U B R O U T I N E ======================================= 1C10 1C10 ; get LCD cursor position and set b7 and save in c06e 1C10 1C10 saveLCDCP_1C10: ; ... 1C10 DB 68 in a, (68h) ; read LCD cursor position 1C12 CB FF set 7, a 1C14 32 6E C0 ld (lcdCP_C06E), a ; the current cursor position of the LCD, with bit 7 set 1C17 C9 ret 1C17 ; End of function saveLCDCP_1C10 1C17 1C18 1C18 ; =============== S U B R O U T I N E ======================================= 1C18 1C18 ; restore the LCD cursor position from c06e 1C18 1C18 restoreLCDCP_1C18: ; ... 1C18 3A 6E C0 ld a, (lcdCP_C06E) ; the current cursor position of the LCD, with bit 7 set 1C1B 0E 68 ld c, 68h 1C1D CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1C20 C9 ret 1C20 ; End of function restoreLCDCP_1C18 1C20 1C21 1C21 ; =============== S U B R O U T I N E ======================================= 1C21 1C21 1C21 sub_1C21: ; ... 1C21 E5 push hl 1C22 F5 push af 1C23 21 98 1C ld hl, lcdstrAprompt_1C98 1C26 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1C29 CD 03 1D call sub_1D03 1C2C CD D8 1A call sub_1AD8 1C2F F1 pop af 1C30 E1 pop hl 1C31 C9 ret 1C31 ; End of function sub_1C21 1C31 1C32 1C32 ; =============== S U B R O U T I N E ======================================= 1C32 1C32 ; XXX clear line and send lcdstring in (hl) 1C32 1C32 sub_1C32: 1C32 E5 push hl 1C33 C5 push bc 1C34 21 6D 1C ld hl, lcdstrClearLineWherever_1C6D 1C37 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1C3A C1 pop bc 1C3B E1 pop hl 1C3C C9 ret 1C3C ; End of function sub_1C32 1C3C 1C3D 1C3D ; =============== S U B R O U T I N E ======================================= 1C3D 1C3D 1C3D sub_1C3D: ; ... 1C3D E5 push hl 1C3E F5 push af 1C3F 21 CD 1C ld hl, lcdstrClearLine1_2_1CCD 1C42 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1C45 CD 03 1D call sub_1D03 1C48 F1 pop af 1C49 E1 pop hl 1C4A C9 ret 1C4A ; End of function sub_1C3D 1C4A 1C4B 1C4B ; =============== S U B R O U T I N E ======================================= 1C4B 1C4B ; show 'A:' prompt 1C4B 1C4B showAprompt_1C4B: ; ... 1C4B E5 push hl 1C4C F5 push af 1C4D CD 10 1C call saveLCDCP_1C10 ; get LCD cursor position and set b7 and save in c06e 1C50 21 C1 1C ld hl, lcdstrAprompt_1CC1 1C53 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1C56 CD 18 1C call restoreLCDCP_1C18 ; restore the LCD cursor position from c06e 1C59 F1 pop af 1C5A E1 pop hl 1C5B C9 ret 1C5B ; End of function showAprompt_1C4B 1C5B 1C5C 1C5C ; =============== S U B R O U T I N E ======================================= 1C5C 1C5C ; show 'B:' prompt 1C5C 1C5C showBprompt_1C5C: ; ... 1C5C E5 push hl 1C5D F5 push af 1C5E CD 10 1C call saveLCDCP_1C10 ; get LCD cursor position and set b7 and save in c06e 1C61 21 C7 1C ld hl, lcdstrBprompt_1CC7 1C64 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1C67 CD 18 1C call restoreLCDCP_1C18 ; restore the LCD cursor position from c06e 1C6A F1 pop af 1C6B E1 pop hl 1C6C C9 ret 1C6C ; End of function showBprompt_1C5C 1C6C 1C6C ; --------------------------------------------------------------------------- 1C6D 00 lcdstrClearLineWherever_1C6D:db 0 ; ... 1C6E 00 db 0 ; (as-is) 1C6F 20 20 20 20+ .ascii ' @' 1C97 00 db 0 ; (as-is) 1C98 00 lcdstrAprompt_1C98:db 0 ; ... 1C99 28 db 40 ; (1,0) 1C9A 41 3A 20 20+ .ascii 'A: @' 1CC0 2A db 42 ; (1,2) 1CC1 0F lcdstrAprompt_1CC1:db 0Fh ; ... 1CC2 28 db 40 ; (1,0) 1CC3 41 3A 40 .ascii 'A:@' 1CC6 2A db 42 ; (1,2) 1CC7 0F lcdstrBprompt_1CC7:db 0Fh ; ... 1CC8 28 db 40 ; (1,0) 1CC9 42 3A 40 .ascii 'B:@' 1CCC 2A db 42 1CCD 00 lcdstrClearLine1_2_1CCD:db 0 ; ... 1CCE 2A db 42 ; (1,2) 1CCF 20 20 20 20+ .ascii ' @' 1CF7 2A db 42 ; (1,2) 1CF8 3E db 3Eh ; > 1CF9 18 db 18h 1CFA ; --------------------------------------------------------------------------- 1CFA ; START OF FUNCTION CHUNK FOR sub_1D03 1CFA 1CFA loc_1CFA: ; ... 1CFA 0E 68 ld c, 68h ; 'h' 1CFC C3 05 1C jp lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1CFC ; END OF FUNCTION CHUNK FOR sub_1D03 1CFF ; --------------------------------------------------------------------------- 1CFF 3E 1C ld a, 1Ch 1D01 18 F7 jr loc_1CFA 1D03 1D03 ; =============== S U B R O U T I N E ======================================= 1D03 1D03 1D03 sub_1D03: ; ... 1D03 1D03 ; FUNCTION CHUNK AT 1CFA SIZE 00000005 BYTES 1D03 1D03 3E 0F ld a, 0Fh 1D05 18 F3 jr loc_1CFA 1D05 ; End of function sub_1D03 1D05 1D07 ; --------------------------------------------------------------------------- 1D07 3E 0C ld a, 0Ch 1D09 18 EF jr loc_1CFA 1D0B ; --------------------------------------------------------------------------- 1D0B 3E 0E ld a, 0Eh 1D0D 18 EB jr loc_1CFA 1D0F 1D0F ; =============== S U B R O U T I N E ======================================= 1D0F 1D0F ; cursor move to B (remember mod 40d) 1D0F 1D0F lcdSetCursorPos_1D0F: ; ... 1D0F AF xor a 1D10 B0 or b 1D11 C8 ret z 1D12 CD 1D 1D call lcdHome_1D1D ; return cursor to 0,0 1D15 3E 14 ld a, 14h ; cursor move right 1D17 1D17 loop_1D17: ; ... 1D17 CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D1A 10 FB djnz loop_1D17 ; remember, may advance to next line if greater than 40d 1D1C C9 ret 1D1C ; End of function lcdSetCursorPos_1D0F 1D1C 1D1D 1D1D ; =============== S U B R O U T I N E ======================================= 1D1D 1D1D ; return cursor to 0,0 1D1D 1D1D lcdHome_1D1D: ; ... 1D1D 0E 68 ld c, 68h 1D1F 3E 02 ld a, 2 1D21 CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D24 C9 ret 1D24 ; End of function lcdHome_1D1D 1D24 1D25 1D25 ; =============== S U B R O U T I N E ======================================= 1D25 1D25 ; send lcdstr to display 1D25 1D25 lcdstrSend_1D25: ; ... 1D25 7E ld a, (hl) 1D26 FE 00 cp 0 ; 0 means 'no command byte' 1D28 28 05 jr z, cont_1D2F 1D2A 0E 68 ld c, 68h ; otherwise, first byte is a command byte 1D2C CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D2F 1D2F cont_1D2F: ; ... 1D2F 23 inc hl 1D30 46 ld b, (hl) ; intial cursor position 1D31 CD 0F 1D call lcdSetCursorPos_1D0F ; cursor move to B (remember mod 40d) 1D34 23 inc hl 1D35 0E 69 ld c, 69h ; rest of this is text to send to LCD 1D37 1D37 next_1D37: ; ... 1D37 7E ld a, (hl) 1D38 FE 40 cp '@' ; terminator 1D3A 28 06 jr z, leave_1D42 1D3C CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D3F 23 inc hl 1D40 18 F5 jr next_1D37 1D42 ; --------------------------------------------------------------------------- 1D42 1D42 leave_1D42: ; ... 1D42 23 inc hl 1D43 46 ld b, (hl) ; final cursor position 1D44 B8 cp b 1D45 C8 ret z 1D46 CD 0F 1D call lcdSetCursorPos_1D0F ; cursor move to B (remember mod 40d) 1D49 C9 ret 1D49 ; End of function lcdstrSend_1D25 1D49 1D4A ; --------------------------------------------------------------------------- 1D4A F1 pop af 1D4B C9 ret 1D4C 1D4C ; =============== S U B R O U T I N E ======================================= 1D4C 1D4C ; LCD putc A 1D4C 1D4C lcdputc_1D4C: ; ... 1D4C 0E 69 ld c, 69h ; LCD data register 1D4E CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D51 C9 ret 1D51 ; End of function lcdputc_1D4C 1D51 1D52 1D52 ; =============== S U B R O U T I N E ======================================= 1D52 1D52 ; XXX backspace key entry buffer and lcd 1D52 1D52 sub_1D52: ; ... 1D52 CD 10 1C call saveLCDCP_1C10 ; get LCD cursor position and set b7 and save in c06e 1D55 FE C2 cp 0C2h ; second line; 26 col 1D57 C8 ret z 1D58 2A 11 C0 ld hl, (keybufptr_C011) ; current location in numeric key entry buffer 1D5B 11 13 C0 ld de, keybuf_C013 ; numeric key entry buffer 1D5E B7 or a 1D5F ED 52 sbc hl, de 1D61 C8 ret z ; leave if we were at the beginning already 1D62 2A 11 C0 ld hl, (keybufptr_C011) ; current location in numeric key entry buffer 1D65 2B dec hl ; backspace in key buffer 1D66 22 11 C0 ld (keybufptr_C011), hl ; current location in numeric key entry buffer 1D69 36 40 ld (hl), '@' ; (we do love our strudel-terminated strings) 1D6B 0E 68 ld c, 68h ; LCD instruction register 1D6D 3E 10 ld a, 10h ; set cursor pos to 0 1D6F CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D72 3E 20 ld a, ' ' ; clear the first char 1D74 0C inc c ; LCD data 1D75 CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D78 0D dec c ; LCD instruction 1D79 3E 10 ld a, 10h ; and again set cursor pos to 0 1D7B CD 05 1C call lcdWriteByte_1C05 ; LCD send byte to whichever port with wait for not busy 1D7E C9 ret 1D7E ; End of function sub_1D52 1D7E 1D7F 1D7F ; =============== S U B R O U T I N E ======================================= 1D7F 1D7F 1D7F sub_1D7F: 1D7F C5 push bc 1D80 CD 0F 1D call lcdSetCursorPos_1D0F ; cursor move to B (remember mod 40d) 1D83 CD 62 14 call sub_1462 1D86 01 09 00 ld bc, 9 1D89 09 add hl, bc 1D8A 18 10 jr loc_1D9C 1D8C ; --------------------------------------------------------------------------- 1D8C C5 push bc 1D8D CD 62 14 call sub_1462 1D90 01 09 00 ld bc, 9 1D93 09 add hl, bc 1D94 E5 push hl 1D95 21 CD 1C ld hl, lcdstrClearLine1_2_1CCD 1D98 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1D9B E1 pop hl 1D9C 1D9C loc_1D9C: ; ... 1D9C 06 0A ld b, 0Ah 1D9C ; End of function sub_1D7F 1D9C 1D9E ; START OF FUNCTION CHUNK FOR sub_1DAD 1D9E 1D9E loc_1D9E: ; ... 1D9E 7E ld a, (hl) 1D9F FE 30 cp 30h ; '0' 1DA1 20 0F jr nz, loc_1DB2 1DA3 2B dec hl 1DA4 10 F8 djnz loc_1D9E 1DA6 3E 30 ld a, 30h ; '0' 1DA8 CD 4C 1D call lcdputc_1D4C ; LCD putc A 1DAB C1 pop bc 1DAC C9 ret 1DAC ; END OF FUNCTION CHUNK FOR sub_1DAD 1DAD 1DAD ; =============== S U B R O U T I N E ======================================= 1DAD 1DAD 1DAD sub_1DAD: ; ... 1DAD 1DAD ; FUNCTION CHUNK AT 1D9E SIZE 0000000F BYTES 1DAD 1DAD C5 push bc 1DAE C3 9E 1D jp loc_1D9E 1DAE ; End of function sub_1DAD 1DAE 1DB1 1DB1 ; =============== S U B R O U T I N E ======================================= 1DB1 1DB1 1DB1 sub_1DB1: ; ... 1DB1 C5 push bc 1DB2 1DB2 loc_1DB2: ; ... 1DB2 7E ld a, (hl) 1DB3 CD 4C 1D call lcdputc_1D4C ; LCD putc A 1DB6 2B dec hl 1DB7 10 F9 djnz loc_1DB2 1DB9 C1 pop bc 1DBA C9 ret 1DBA ; End of function sub_1DB1 1DBA 1DBB 1DBB ; =============== S U B R O U T I N E ======================================= 1DBB 1DBB ; XXX pio0bpA switches and pulses and panikstop 1DBB 1DBB isrVec0c_1DBB: ; ... 1DBB F5 push af 1DBC C5 push bc 1DBD 06 00 ld b, 0 1DBF 1DBF loop_1DBF: ; ... 1DBF DB 30 in a, (30h) ; whack it 256 times 1DC1 10 FC djnz loop_1DBF 1DC3 1DC3 loop_1DC3: ; ... 1DC3 DB 30 in a, (30h) ; whack it another 256 times 1DC5 10 FC djnz loop_1DC3 1DC7 E6 0E and 0Eh 1DC9 FE 0E cp 0Eh 1DCB CA D8 1D jp z, leave_1DD8 1DCE C1 pop bc 1DCF F1 pop af 1DD0 C1 pop bc ; change resume address when we reti 1DD1 01 DD 1D ld bc, sub_1DDD ; XXX panikstop 1DD4 C5 push bc 1DD5 FB ei 1DD6 ED 4D reti 1DD8 ; --------------------------------------------------------------------------- 1DD8 1DD8 leave_1DD8: ; ... 1DD8 C1 pop bc 1DD9 F1 pop af 1DDA FB ei 1DDB ED 4D reti 1DDB ; End of function isrVec0c_1DBB 1DDB 1DDD 1DDD ; =============== S U B R O U T I N E ======================================= 1DDD 1DDD ; XXX panikstop 1DDD 1DDD sub_1DDD: ; ... 1DDD 1DDD ; FUNCTION CHUNK AT 016E SIZE 00000003 BYTES 1DDD 1DDD CD 58 1E call sub_1E58 ; XXX pulse 2a 500 times 1DE0 DB 30 in a, (30h) ; XXX PIO0bp related 1DE2 CB 4F bit 1, a 1DE4 CA 6E 01 jp z, infiniteloop_16E 1DE7 CB 57 bit 2, a 1DE9 CA 6E 01 jp z, infiniteloop_16E 1DEC CB 5F bit 3, a 1DEE CA 6E 01 jp z, infiniteloop_16E 1DF1 21 FA 1D ld hl, lcdstrSwitchClosedPanikstop_1DFA 1DF4 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1DF7 C3 23 01 jp infiniteloop_123 1DF7 ; End of function sub_1DDD 1DF7 1DF7 ; --------------------------------------------------------------------------- 1DFA 00 lcdstrSwitchClosedPanikstop_1DFA:db 0 ; ... 1DFB 2A db 42 ; (1,2) 1DFC 53 57 49 54+ .ascii 'SWITCH CLOSED !! ***PANIKSTOP***@' 1E1D 40 db '@' ; (as-is) 1E1E ; --------------------------------------------------------------------------- 1E1E F5 push af 1E1F C5 push bc 1E20 06 00 ld b, 0 1E22 1E22 loc_1E22: ; ... 1E22 DB 32 in a, (32h) ; XXX PIO0bp related 1E24 10 FC djnz loc_1E22 1E26 1E26 loc_1E26: ; ... 1E26 DB 32 in a, (32h) ; XXX PIO0bp related 1E28 10 FC djnz loc_1E26 1E2A E6 0E and 0Eh 1E2C FE 0E cp 0Eh 1E2E CA D8 1D jp z, leave_1DD8 1E31 C1 pop bc 1E32 F1 pop af 1E33 C1 pop bc 1E34 01 3B 1E ld bc, loc_1E3B 1E37 C5 push bc 1E38 FB ei 1E39 ED 4D reti 1E3B ; --------------------------------------------------------------------------- 1E3B 1E3B loc_1E3B: ; ... 1E3B CD 58 1E call sub_1E58 ; XXX pulse 2a 500 times 1E3E DB 32 in a, (32h) ; XXX PIO0bp related 1E40 CB 4F bit 1, a 1E42 CA 6E 01 jp z, infiniteloop_16E 1E45 CB 57 bit 2, a 1E47 CA 6E 01 jp z, infiniteloop_16E 1E4A CB 5F bit 3, a 1E4C CA 6E 01 jp z, infiniteloop_16E 1E4F 21 FA 1D ld hl, lcdstrSwitchClosedPanikstop_1DFA 1E52 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1E55 C3 23 01 jp infiniteloop_123 1E58 1E58 ; =============== S U B R O U T I N E ======================================= 1E58 1E58 ; XXX pulse 2a 500 times 1E58 1E58 sub_1E58: ; ... 1E58 3A 3A C2 ld a, (byte_C23A) 1E5B F5 push af 1E5C 3E 05 ld a, 5 ; force it to be 500 pulses in this case 1E5E 32 3A C2 ld (byte_C23A), a 1E61 CD D6 1B call buzzer_1BD6 ; buzz for (c23ah) times 1E64 F1 pop af 1E65 32 3A C2 ld (byte_C23A), a 1E68 C9 ret 1E68 ; End of function sub_1E58 1E68 1E69 1E69 ; =============== S U B R O U T I N E ======================================= 1E69 1E69 1E69 sub_1E69: ; ... 1E69 E5 push hl 1E6A CD 2C 1F call sub_1F2C 1E6D CD 1D 1D call lcdHome_1D1D ; return cursor to 0,0 1E70 21 6E 1F ld hl, lcdstrW1eq_1F6E 1E73 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1E76 E1 pop hl 1E77 CD 47 1F call sub_1F47 1E7A CD 3D 1C call sub_1C3D 1E7D C9 ret 1E7D ; End of function sub_1E69 1E7D 1E7E 1E7E ; =============== S U B R O U T I N E ======================================= 1E7E 1E7E 1E7E sub_1E7E: ; ... 1E7E E5 push hl 1E7F CD 3E 1F call sub_1F3E 1E82 21 75 1F ld hl, lcdstrW2eq_1F75 1E85 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1E88 E1 pop hl 1E89 CD 47 1F call sub_1F47 1E8C CD 3D 1C call sub_1C3D 1E8F C9 ret 1E8F ; End of function sub_1E7E 1E8F 1E90 1E90 ; =============== S U B R O U T I N E ======================================= 1E90 1E90 1E90 sub_1E90: ; ... 1E90 E5 push hl 1E91 CD 35 1F call sub_1F35 1E94 21 7C 1F ld hl, lcdstrPos0_15_1F7C ; just position to 0,15 1E97 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1E9A E1 pop hl 1E9B E5 push hl 1E9C CD 47 1F call sub_1F47 1E9F E1 pop hl 1EA0 C9 ret 1EA0 ; End of function sub_1E90 1EA0 1EA1 1EA1 ; =============== S U B R O U T I N E ======================================= 1EA1 1EA1 1EA1 sub_1EA1: ; ... 1EA1 CD 90 1E call sub_1E90 1EA4 E5 push hl 1EA5 CD 3D 1C call sub_1C3D 1EA8 E1 pop hl 1EA9 C9 ret 1EA9 ; End of function sub_1EA1 1EA9 1EAA 1EAA ; =============== S U B R O U T I N E ======================================= 1EAA 1EAA 1EAA sub_1EAA: ; ... 1EAA 3A AD C4 ld a, (byte_C4AD) 1EAD 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 1EB0 3E 00 ld a, 0 1EB2 32 AD C4 ld (byte_C4AD), a 1EB5 CD A1 1E call sub_1EA1 1EB8 3A 3D C2 ld a, (unk_C23D) ; XXX prev C4AD value 1EBB 32 AD C4 ld (byte_C4AD), a 1EBE C9 ret 1EBE ; End of function sub_1EAA 1EBE 1EBF 1EBF ; =============== S U B R O U T I N E ======================================= 1EBF 1EBF 1EBF sub_1EBF: ; ... 1EBF 3A AD C4 ld a, (byte_C4AD) 1EC2 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 1EC5 3E 03 ld a, 3 1EC7 32 AD C4 ld (byte_C4AD), a 1ECA CD A1 1E call sub_1EA1 1ECD 3A 3D C2 ld a, (unk_C23D) ; XXX prev C4AD value 1ED0 32 AD C4 ld (byte_C4AD), a 1ED3 C9 ret 1ED3 ; End of function sub_1EBF 1ED3 1ED4 1ED4 ; =============== S U B R O U T I N E ======================================= 1ED4 1ED4 1ED4 sub_1ED4: ; ... 1ED4 7E ld a, (hl) 1ED5 32 41 C2 ld (word_C241), a 1ED8 23 inc hl 1ED9 7E ld a, (hl) 1EDA 32 42 C2 ld (word_C241+1), a 1EDD 21 00 00 ld hl, 0 1EE0 22 43 C2 ld (word_C243), hl 1EE3 21 27 0F ld hl, lcdstrScan_F27 1EE6 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1EE9 3A AD C4 ld a, (byte_C4AD) 1EEC 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 1EEF 3E 00 ld a, 0 1EF1 32 AD C4 ld (byte_C4AD), a 1EF4 21 41 C2 ld hl, word_C241 1EF7 CD 47 1F call sub_1F47 1EFA 21 3F 0F ld hl, lcdstrOf_F3F 1EFD CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1F00 2A 51 C2 ld hl, (word_C251) 1F03 22 41 C2 ld (word_C241), hl 1F06 21 00 00 ld hl, 0 1F09 22 43 C2 ld (word_C243), hl 1F0C 21 41 C2 ld hl, word_C241 1F0F CD 47 1F call sub_1F47 1F12 3A 3D C2 ld a, (unk_C23D) ; XXX prev C4AD value 1F15 32 AD C4 ld (byte_C4AD), a 1F18 C9 ret 1F18 ; End of function sub_1ED4 1F18 1F19 1F19 ; =============== S U B R O U T I N E ======================================= 1F19 1F19 1F19 sub_1F19: ; ... 1F19 2A 6F C2 ld hl, (unk_C26F) 1F1C 22 41 C2 ld (word_C241), hl 1F1F 21 00 00 ld hl, 0 1F22 22 43 C2 ld (word_C243), hl 1F25 21 41 C2 ld hl, word_C241 1F28 CD AA 1E call sub_1EAA 1F2B C9 ret 1F2B ; End of function sub_1F19 1F2B 1F2C 1F2C ; =============== S U B R O U T I N E ======================================= 1F2C 1F2C 1F2C sub_1F2C: ; ... 1F2C E5 push hl 1F2D 21 80 1F ld hl, lcdstrClear0_1_1F80 1F30 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1F33 E1 pop hl 1F34 C9 ret 1F34 ; End of function sub_1F2C 1F34 1F35 1F35 ; =============== S U B R O U T I N E ======================================= 1F35 1F35 1F35 sub_1F35: ; ... 1F35 E5 push hl 1F36 21 A0 1F ld hl, lcdstrClear0_15_1FA0 1F39 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1F3C E1 pop hl 1F3D C9 ret 1F3D ; End of function sub_1F35 1F3D 1F3E 1F3E ; =============== S U B R O U T I N E ======================================= 1F3E 1F3E 1F3E sub_1F3E: ; ... 1F3E E5 push hl 1F3F 21 90 1F ld hl, lcdstrClear0_27_1F90 1F42 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 1F45 E1 pop hl 1F46 C9 ret 1F46 ; End of function sub_1F3E 1F46 1F47 1F47 ; =============== S U B R O U T I N E ======================================= 1F47 1F47 1F47 sub_1F47: ; ... 1F47 CD 62 14 call sub_1462 1F4A 01 09 00 ld bc, 9 1F4D 09 add hl, bc 1F4E 3A AD C4 ld a, (byte_C4AD) 1F51 ED 44 neg 1F53 C6 0A add a, 0Ah 1F55 47 ld b, a 1F56 CD AD 1D call sub_1DAD 1F59 3A AD C4 ld a, (byte_C4AD) 1F5C FE 00 cp 0 1F5E 28 05 jr z, loc_1F65 1F60 3E 2E ld a, 2Eh ; '.' 1F62 CD 4C 1D call lcdputc_1D4C ; LCD putc A 1F65 1F65 loc_1F65: ; ... 1F65 3A AD C4 ld a, (byte_C4AD) 1F68 47 ld b, a 1F69 B7 or a 1F6A C4 B1 1D call nz, sub_1DB1 1F6D C9 ret 1F6D ; End of function sub_1F47 1F6D 1F6D ; --------------------------------------------------------------------------- 1F6E 00 lcdstrW1eq_1F6E:db 0 ; ... 1F6F 01 db 1 ; (0,1) 1F70 57 31 3D 40 .ascii 'W1=@' 1F74 40 db '@' ; (as-is) 1F75 00 lcdstrW2eq_1F75:db 0 ; ... 1F76 1B db 27 ; (0,27) 1F77 57 32 3D 40 .ascii 'W2=@' 1F7B 40 db '@' ; (as-is) 1F7C 00 lcdstrPos0_15_1F7C:db 0 ; ... 1F7C ; just position to 0,15 1F7D 0F db 15 ; (0,15) 1F7E 40 db '@' 1F7F 40 db '@' ; (as-is) 1F80 00 lcdstrClear0_1_1F80:db 0 ; ... 1F81 01 db 1 ; (0,1) 1F82 20 20 20 20+ .ascii ' @' 1F8F 40 db '@' ; (as-is) 1F90 00 lcdstrClear0_27_1F90:db 0 ; ... 1F91 1B db 27 ; (0,27) 1F92 20 20 20 20+ .ascii ' @' 1F9F 40 db '@' ; (as-is) 1FA0 00 lcdstrClear0_15_1FA0:db 0 ; ... 1FA1 0F db 15 ; (0,15) 1FA2 20 20 20 20+ .ascii ' @' 1FAF 40 db '@' ; (as-is) 1FB0 1FB0 ; =============== S U B R O U T I N E ======================================= 1FB0 1FB0 ; XXX set lamps for XXX mode 1FB0 1FB0 sub_1FB0: ; ... 1FB0 CD F3 1F call lampSlewOff_1FF3 ; LED 'SLEW' OFF 1FB3 CD FD 1F call lampW1Off_1FFD ; LED 'W1' OFF 1FB6 CD 07 20 call lampW2On_2007 ; LED 'W2' OFF 1FB9 CD 11 20 call lampWstepOff_2011 ; LED 'WSTEP' ON 1FBC CD 1B 20 call lampSpeedOff_201B ; LED 'SPEED' OFF 1FBF CD 82 20 call lampGratOff_2082 ; LED 'GRAT' OFF 1FC2 CD 8C 20 call lampScanOff_208C ; LED 'SCAN' OFF 1FC5 CD 96 20 call lampLeftOff_2096 ; LED 'left' OFF 1FC8 CD A0 20 call lampRightOff_20A0 ; LED 'right' OFF 1FCB CD AA 20 call lamp2ndOff_20AA ; LED '2nd' OFF 1FCE C9 ret 1FCE ; End of function sub_1FB0 1FCE 1FCF 1FCF ; =============== S U B R O U T I N E ======================================= 1FCF 1FCF ; XXX set button lamps in normal, unshifted, mode 1FCF 1FCF sub_1FCF: ; ... 1FCF CD EE 1F call lampSlewOn_1FEE ; LED 'SLEW' ON 1FD2 CD F8 1F call lampW1On_1FF8 ; LED 'W1' ON 1FD5 CD 02 20 call lampW2On_2002 ; LED 'W2' ON 1FD8 CD 0C 20 call lampWstepOn_200C ; LED 'WSTEP' OFF 1FDB CD 16 20 call lampSpeedOn_2016 ; LED 'SPEED' ON 1FDE CD 7D 20 call lampGratOn_207D ; LED 'GRAT' ON 1FE1 CD 87 20 call lampScanOn_2087 ; LED 'SCAN' ON 1FE4 CD 91 20 call lampLeftOn_2091 ; LED 'left' ON 1FE7 CD 9B 20 call lampRightOn_209B ; LED 'right' ON 1FEA CD A5 20 call lamp2ndOn_20A5 ; LED '2nd' ON 1FED C9 ret 1FED ; End of function sub_1FCF 1FED 1FEE 1FEE ; =============== S U B R O U T I N E ======================================= 1FEE 1FEE ; LED 'SLEW' ON 1FEE 1FEE lampSlewOn_1FEE: ; ... 1FEE 3E DF ld a, 0DFh 1FF0 C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 1FF0 ; End of function lampSlewOn_1FEE 1FF0 1FF3 1FF3 ; =============== S U B R O U T I N E ======================================= 1FF3 1FF3 ; LED 'SLEW' OFF 1FF3 1FF3 lampSlewOff_1FF3: ; ... 1FF3 3E 20 ld a, 20h 1FF5 C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 1FF5 ; End of function lampSlewOff_1FF3 1FF5 1FF8 1FF8 ; =============== S U B R O U T I N E ======================================= 1FF8 1FF8 ; LED 'W1' ON 1FF8 1FF8 lampW1On_1FF8: ; ... 1FF8 3E BF ld a, 0BFh 1FFA C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 1FFA ; End of function lampW1On_1FF8 1FFA 1FFD 1FFD ; =============== S U B R O U T I N E ======================================= 1FFD 1FFD ; LED 'W1' OFF 1FFD 1FFD lampW1Off_1FFD: ; ... 1FFD 3E 40 ld a, 40h 1FFF C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 1FFF ; End of function lampW1Off_1FFD 1FFF 2002 2002 ; =============== S U B R O U T I N E ======================================= 2002 2002 ; LED 'W2' ON 2002 2002 lampW2On_2002: ; ... 2002 3E 7F ld a, 7Fh 2004 C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 2004 ; End of function lampW2On_2002 2004 2007 2007 ; =============== S U B R O U T I N E ======================================= 2007 2007 ; LED 'W2' OFF 2007 2007 lampW2On_2007: ; ... 2007 3E 80 ld a, 80h 2009 C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 2009 ; End of function lampW2On_2007 2009 200C 200C ; =============== S U B R O U T I N E ======================================= 200C 200C ; LED 'WSTEP' OFF 200C 200C lampWstepOn_200C: ; ... 200C 3E 7F ld a, 7Fh 200E C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 200E ; End of function lampWstepOn_200C 200E 2011 2011 ; =============== S U B R O U T I N E ======================================= 2011 2011 ; LED 'WSTEP' ON 2011 2011 lampWstepOff_2011: ; ... 2011 3E 80 ld a, 80h 2013 C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 2013 ; End of function lampWstepOff_2011 2013 2016 2016 ; =============== S U B R O U T I N E ======================================= 2016 2016 ; LED 'SPEED' ON 2016 2016 lampSpeedOn_2016: ; ... 2016 3E FE ld a, 0FEh 2018 C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 2018 ; End of function lampSpeedOn_2016 2018 201B 201B ; =============== S U B R O U T I N E ======================================= 201B 201B ; LED 'SPEED' OFF 201B 201B lampSpeedOff_201B: ; ... 201B 3E 01 ld a, 1 201D C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 201D ; End of function lampSpeedOff_201B 201D 2020 2020 ; =============== S U B R O U T I N E ======================================= 2020 2020 2020 sub_2020: ; ... 2020 CD 5A 20 call lampStopFPoff_205A ; LED 'STOP (fp red)' OFF 2023 2023 loc_2023: ; LED 'SLEW (fp green)' OFF 2023 CD 64 20 call lampSlewFPoff_2064 2026 CD 69 20 call lampScanFPon_2069 ; LED 'SCAN (fp yellow)' ON 2029 C9 ret 2029 ; End of function sub_2020 2029 202A 202A ; =============== S U B R O U T I N E ======================================= 202A 202A 202A sub_202A: ; ... 202A CD 6E 20 call lampScanFPoff_206E ; LED 'SCAN (fp yellow)' OFF 202D CD 64 20 call lampSlewFPoff_2064 ; LED 'SLEW (fp green)' OFF 2030 CD 55 20 call lampStopFPon_2055 ; LED 'STOP (fp red)' ON 2033 C9 ret 2033 ; End of function sub_202A 2033 2034 2034 ; =============== S U B R O U T I N E ======================================= 2034 2034 2034 sub_2034: ; ... 2034 CD 5F 20 call lampSlewFPon_205F ; LED 'SLEW (fp green)' ON 2037 CD 5A 20 call lampStopFPoff_205A ; LED 'STOP (fp red)' OFF 203A C9 ret 203A ; End of function sub_2034 203A 203B 203B ; =============== S U B R O U T I N E ======================================= 203B 203B 203B sub_203B: ; ... 203B CD 64 20 call lampSlewFPoff_2064 ; LED 'SLEW (fp green)' OFF 203E CD 55 20 call lampStopFPon_2055 ; LED 'STOP (fp red)' ON 2041 C9 ret 2041 ; End of function sub_203B 2041 2042 2042 ; =============== S U B R O U T I N E ======================================= 2042 2042 2042 sub_2042: ; ... 2042 CD 5A 20 call lampStopFPoff_205A ; LED 'STOP (fp red)' OFF 2045 C9 ret 2045 ; End of function sub_2042 2045 2046 2046 ; =============== S U B R O U T I N E ======================================= 2046 2046 2046 sub_2046: ; ... 2046 CD 55 20 call lampStopFPon_2055 ; LED 'STOP (fp red)' ON 2049 C9 ret 2049 ; End of function sub_2046 2049 204A 204A ; =============== S U B R O U T I N E ======================================= 204A 204A 204A sub_204A: ; ... 204A CD 64 20 call lampSlewFPoff_2064 ; LED 'SLEW (fp green)' OFF 204D CD 73 20 call lampPauseFPon_2073 ; LED 'PAUSE (fp red)' ON 2050 C9 ret 2050 ; End of function sub_204A 2050 2051 2051 ; =============== S U B R O U T I N E ======================================= 2051 2051 2051 sub_2051: ; ... 2051 CD 78 20 call lampPauseFPoff_2078 ; LED 'PAUSE (fp red)' OFF 2054 C9 ret 2054 ; End of function sub_2051 2054 2055 2055 ; =============== S U B R O U T I N E ======================================= 2055 2055 ; LED 'STOP (fp red)' ON 2055 2055 lampStopFPon_2055: ; ... 2055 3E FE ld a, 0FEh 2057 C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 2057 ; End of function lampStopFPon_2055 2057 205A 205A ; =============== S U B R O U T I N E ======================================= 205A 205A ; LED 'STOP (fp red)' OFF 205A 205A lampStopFPoff_205A: ; ... 205A 3E 01 ld a, 1 205C C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 205C ; End of function lampStopFPoff_205A 205C 205F 205F ; =============== S U B R O U T I N E ======================================= 205F 205F ; LED 'SLEW (fp green)' ON 205F 205F lampSlewFPon_205F: ; ... 205F 3E FD ld a, 0FDh 2061 C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 2061 ; End of function lampSlewFPon_205F 2061 2064 2064 ; =============== S U B R O U T I N E ======================================= 2064 2064 ; LED 'SLEW (fp green)' OFF 2064 2064 lampSlewFPoff_2064: ; ... 2064 3E 02 ld a, 2 2066 C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 2066 ; End of function lampSlewFPoff_2064 2066 2069 2069 ; =============== S U B R O U T I N E ======================================= 2069 2069 ; LED 'SCAN (fp yellow)' ON 2069 2069 lampScanFPon_2069: ; ... 2069 3E EF ld a, 0EFh 206B C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 206B ; End of function lampScanFPon_2069 206B 206E 206E ; =============== S U B R O U T I N E ======================================= 206E 206E ; LED 'SCAN (fp yellow)' OFF 206E 206E lampScanFPoff_206E: ; ... 206E 3E 10 ld a, 10h 2070 C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 2070 ; End of function lampScanFPoff_206E 2070 2073 2073 ; =============== S U B R O U T I N E ======================================= 2073 2073 ; LED 'PAUSE (fp red)' ON 2073 2073 lampPauseFPon_2073: ; ... 2073 3E FB ld a, 0FBh 2075 C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 2075 ; End of function lampPauseFPon_2073 2075 2078 2078 ; =============== S U B R O U T I N E ======================================= 2078 2078 ; LED 'PAUSE (fp red)' OFF 2078 2078 lampPauseFPoff_2078: ; ... 2078 3E 04 ld a, 4 207A C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 207A ; End of function lampPauseFPoff_2078 207A 207D 207D ; =============== S U B R O U T I N E ======================================= 207D 207D ; LED 'GRAT' ON 207D 207D lampGratOn_207D: ; ... 207D 3E BF ld a, 0BFh 207F C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 207F ; End of function lampGratOn_207D 207F 2082 2082 ; =============== S U B R O U T I N E ======================================= 2082 2082 ; LED 'GRAT' OFF 2082 2082 lampGratOff_2082: ; ... 2082 3E 40 ld a, 40h 2084 C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 2084 ; End of function lampGratOff_2082 2084 2087 2087 ; =============== S U B R O U T I N E ======================================= 2087 2087 ; LED 'SCAN' ON 2087 2087 lampScanOn_2087: ; ... 2087 3E DF ld a, 0DFh 2089 C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 2089 ; End of function lampScanOn_2087 2089 208C 208C ; =============== S U B R O U T I N E ======================================= 208C 208C ; LED 'SCAN' OFF 208C 208C lampScanOff_208C: ; ... 208C 3E 20 ld a, 20h 208E C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 208E ; End of function lampScanOff_208C 208E 2091 2091 ; =============== S U B R O U T I N E ======================================= 2091 2091 ; LED 'left' ON 2091 2091 lampLeftOn_2091: ; ... 2091 3E EF ld a, 0EFh 2093 C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 2093 ; End of function lampLeftOn_2091 2093 2096 2096 ; =============== S U B R O U T I N E ======================================= 2096 2096 ; LED 'left' OFF 2096 2096 lampLeftOff_2096: ; ... 2096 3E 10 ld a, 10h 2098 C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 2098 ; End of function lampLeftOff_2096 2098 209B 209B ; =============== S U B R O U T I N E ======================================= 209B 209B ; LED 'right' ON 209B 209B lampRightOn_209B: ; ... 209B 3E F7 ld a, 0F7h 209D C3 C6 20 jp ledsBon_20C6 ; LED port B ON (use AND mask in A, low = on) 209D ; End of function lampRightOn_209B 209D 20A0 20A0 ; =============== S U B R O U T I N E ======================================= 20A0 20A0 ; LED 'right' OFF 20A0 20A0 lampRightOff_20A0: ; ... 20A0 3E 08 ld a, 8 20A2 C3 D3 20 jp ledsBoff_20D3 ; LED port B OFF (use OR mask in A, high = off) 20A2 ; End of function lampRightOff_20A0 20A2 20A5 20A5 ; =============== S U B R O U T I N E ======================================= 20A5 20A5 ; LED '2nd' ON 20A5 20A5 lamp2ndOn_20A5: ; ... 20A5 3E F7 ld a, 0F7h 20A7 C3 AF 20 jp ledsAon_20AF ; LED port A ON (use AND mask in A, low = on) 20A7 ; End of function lamp2ndOn_20A5 20A7 20AA 20AA ; =============== S U B R O U T I N E ======================================= 20AA 20AA ; LED '2nd' OFF 20AA 20AA lamp2ndOff_20AA: ; ... 20AA 3E 08 ld a, 8 20AC C3 BC 20 jp ledsAoff_20BC ; LED port A OFF (use OR mask in A, high = off) 20AC ; End of function lamp2ndOff_20AA 20AC 20AF 20AF ; =============== S U B R O U T I N E ======================================= 20AF 20AF ; LED port A ON (use AND mask in A, low = on) 20AF 20AF ledsAon_20AF: ; ... 20AF E5 push hl 20B0 C5 push bc 20B1 21 66 C0 ld hl, ledsA_C066 ; LEDs 8255 port a 20B4 46 ld b, (hl) 20B5 A0 and b 20B6 20B6 loc_20B6: ; ... 20B6 77 ld (hl), a 20B7 D3 28 out (28h), a ; 8255 A LEDs 20B9 C1 pop bc 20BA E1 pop hl 20BB C9 ret 20BB ; End of function ledsAon_20AF 20BB 20BC 20BC ; =============== S U B R O U T I N E ======================================= 20BC 20BC ; LED port A OFF (use OR mask in A, high = off) 20BC 20BC ledsAoff_20BC: ; ... 20BC E5 push hl 20BD C5 push bc 20BE 21 66 C0 ld hl, ledsA_C066 ; LEDs 8255 port a 20C1 46 ld b, (hl) 20C2 B0 or b 20C3 C3 B6 20 jp loc_20B6 20C3 ; End of function ledsAoff_20BC 20C3 20C6 20C6 ; =============== S U B R O U T I N E ======================================= 20C6 20C6 ; LED port B ON (use AND mask in A, low = on) 20C6 20C6 ledsBon_20C6: ; ... 20C6 E5 push hl 20C7 C5 push bc 20C8 21 67 C0 ld hl, ledsB_C067 ; LEDs 8255 port b 20CB 46 ld b, (hl) 20CC A0 and b 20CD 20CD loc_20CD: ; ... 20CD 77 ld (hl), a 20CE D3 29 out (29h), a ; 8255 B LEDs 20D0 C1 pop bc 20D1 E1 pop hl 20D2 C9 ret 20D2 ; End of function ledsBon_20C6 20D2 20D3 20D3 ; =============== S U B R O U T I N E ======================================= 20D3 20D3 ; LED port B OFF (use OR mask in A, high = off) 20D3 20D3 ledsBoff_20D3: ; ... 20D3 E5 push hl 20D4 C5 push bc 20D5 21 67 C0 ld hl, ledsB_C067 ; LEDs 8255 port b 20D8 46 ld b, (hl) 20D9 B0 or b 20DA C3 CD 20 jp loc_20CD 20DA ; End of function ledsBoff_20D3 20DA 20DD 20DD ; =============== S U B R O U T I N E ======================================= 20DD 20DD ; all LEDs ON 20DD 20DD allLampsOn_20DD: ; ... 20DD 3E 00 ld a, 0 ; low is on 20DF 20DF loc_20DF: ; ... 20DF 32 67 C0 ld (ledsB_C067), a ; LEDs 8255 port b 20E2 32 66 C0 ld (ledsA_C066), a ; LEDs 8255 port a 20E5 D3 29 out (29h), a ; 8255 B LEDs 20E7 D3 28 out (28h), a ; 8255 A LEDs 20E9 C9 ret 20E9 ; End of function allLampsOn_20DD 20E9 20EA 20EA ; =============== S U B R O U T I N E ======================================= 20EA 20EA ; all LEDs OFF 20EA 20EA allLampsOff_20EA: ; ... 20EA 3E FF ld a, 0FFh ; high is off 20EC C3 DF 20 jp loc_20DF 20EC ; End of function allLampsOff_20EA 20EC 20EF ; --------------------------------------------------------------------------- 20EF ; START OF FUNCTION CHUNK FOR sub_20F8 20EF 20EF loc_20EF: ; ... 20EF D3 41 out (41h), a ; XXX AMD related 20F1 7D ld a, l 20F2 D3 40 out (40h), a ; XXX AMD related 20F4 7C ld a, h 20F5 D3 40 out (40h), a ; XXX AMD related 20F7 C9 ret 20F7 ; END OF FUNCTION CHUNK FOR sub_20F8 20F8 20F8 ; =============== S U B R O U T I N E ======================================= 20F8 20F8 20F8 sub_20F8: ; ... 20F8 20F8 ; FUNCTION CHUNK AT 20EF SIZE 00000009 BYTES 20F8 20F8 CD 22 21 call sub_2122 ; XXX AMD related 20FB 3E DF ld a, 0DFh ; '' 20FD D3 41 out (41h), a ; XXX AMD related 20FF 3E 05 ld a, 5 2101 21 00 00 ld hl, 0 2104 C3 EF 20 jp loc_20EF ; XXX AMD related 2104 ; End of function sub_20F8 2104 2107 2107 ; =============== S U B R O U T I N E ======================================= 2107 2107 2107 sub_2107: ; ... 2107 DB 41 in a, (41h) ; XXX AMD related 2109 CB 6F bit 5, a 210B C8 ret z 210C C3 07 21 jp sub_2107 210C ; End of function sub_2107 210C 210F 210F ; =============== S U B R O U T I N E ======================================= 210F 210F ; XXX AMD related 210F 210F sub_210F: ; ... 210F 3E DF ld a, 0DFh ; '' 2111 D3 41 out (41h), a ; XXX AMD related 2113 21 88 C1 ld hl, portblastXXX_C188 ; portblast zone 2116 CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 2119 3E 78 ld a, 78h ; 'x' 211B D3 41 out (41h), a ; XXX AMD related 211D 3E 64 ld a, 64h ; 'd' 211F D3 41 out (41h), a ; XXX AMD related 2121 C9 ret 2121 ; End of function sub_210F 2121 2122 2122 ; =============== S U B R O U T I N E ======================================= 2122 2122 ; XXX AMD related 2122 2122 sub_2122: ; ... 2122 3E FF ld a, 0FFh 2124 D3 41 out (41h), a ; XXX AMD related 2126 3E 5F ld a, 5Fh ; '_' 2128 D3 41 out (41h), a ; XXX AMD related 212A 3E 09 ld a, 9 212C D3 41 out (41h), a ; XXX AMD related 212E C9 ret 212E ; End of function sub_2122 212E 212F 212F ; =============== S U B R O U T I N E ======================================= 212F 212F ; XXX AMD related 212F 212F sub_212F: ; ... 212F CD 22 21 call sub_2122 ; XXX AMD related 2132 21 44 21 ld hl, portblastAMDXXX_2144 ; XXX AMD related 2135 CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 2138 21 6E 21 ld hl, portblastAMDXXXinit_216E ; XXX AMD related 213B 11 88 C1 ld de, portblastXXX_C188 ; portblast zone 213E 01 23 00 ld bc, 35 2141 ED B0 ldir 2143 C9 ret 2143 ; End of function sub_212F 2143 2143 ; --------------------------------------------------------------------------- 2144 41 portblastAMDXXX_2144:db 41h ; ... 2144 ; port 2145 17 db 17h 2146 7E db 7Eh ; change 2147 40 db 40h ; port 2148 D0 db 0D0h 2149 02 db 2 214A 7E db 7Eh ; change 214B 41 db 41h ; port 214C 01 db 1 214D 7E db 7Eh ; change 214E 40 db 40h ; port 214F 21 db 21h 2150 01 db 1 2151 7E db 7Eh ; change 2152 41 db 41h ; port 2153 02 db 2 2154 7E db 7Eh ; change 2155 40 db 40h ; port 2156 21 db 21h 2157 00 db 0 2158 7E db 7Eh ; change 2159 41 db 41h ; port 215A 03 db 3 215B 7E db 7Eh ; change 215C 40 db 40h ; port 215D 25 db 25h 215E 03 db 3 215F 7E db 7Eh ; change 2160 41 db 41h ; port 2161 04 db 4 2162 7E db 7Eh ; change 2163 40 db 40h ; port 2164 25 db 25h 2165 80 db 80h 2166 7E db 7Eh ; change 2167 41 db 41h ; port 2168 05 db 5 2169 7E db 7Eh ; change 216A 40 db 40h ; port 216B 05 db 5 216C 00 db 0 216D 7F db 7Fh ; end! 216E 41 portblastAMDXXXinit_216E:db 41h ; ... 216E ; port 216F 09 db 9 2170 7E db 7Eh ; change 2171 40 db 40h ; port 2172 02 db 2 2173 00 db 0 2174 7E db 7Eh ; change 2175 41 db 41h ; port 2176 0A db 0Ah 2177 7E db 7Eh ; change 2178 40 db 40h ; port 2179 02 db 2 217A 00 db 0 217B 7E db 7Eh ; change 217C 41 db 41h ; port 217D 0B db 0Bh 217E 7E db 7Eh ; change 217F 40 db 40h ; port 2180 02 db 2 2181 00 db 0 2182 7E db 7Eh ; change 2183 41 db 41h ; port 2184 0C db 0Ch 2185 7E db 7Eh ; change 2186 40 db 40h ; port 2187 02 db 2 2188 00 db 0 2189 7E db 7Eh ; change 218A 41 db 41h ; port 218B 0D db 0Dh 218C 7E db 7Eh ; change 218D 40 db 40h ; port 218E 02 db 2 218F 00 db 0 2190 7F db 7Fh ; end! 2191 2191 ; =============== S U B R O U T I N E ======================================= 2191 2191 2191 sub_2191: ; ... 2191 DD 7E 00 ld a, (ix+0) 2194 32 8C C1 ld (portblastXXX_C188+4), a ; portblast zone 2197 DD 7E 01 ld a, (ix+1) 219A 32 8D C1 ld (portblastXXX_C188+5), a ; portblast zone 219D DD 7E 02 ld a, (ix+2) 21A0 32 93 C1 ld (portblastXXX_C188+0Bh), a ; portblast zone 21A3 DD 7E 03 ld a, (ix+3) 21A6 32 94 C1 ld (portblastXXX_C188+0Ch), a ; portblast zone 21A9 DD 7E 04 ld a, (ix+4) 21AC 32 9A C1 ld (portblastXXX_C188+12h), a ; portblast zone 21AF DD 7E 05 ld a, (ix+5) 21B2 32 9B C1 ld (portblastXXX_C188+13h), a ; portblast zone 21B5 C9 ret 21B5 ; End of function sub_2191 21B5 21B6 21B6 ; =============== S U B R O U T I N E ======================================= 21B6 21B6 21B6 sub_21B6: ; ... 21B6 DD 2A 5F C2 ld ix, (word_C25F) 21BA CD 91 21 call sub_2191 21BD 3E FF ld a, 0FFh 21BF 32 70 C0 ld (unk_C070), a 21C2 CD C6 21 call sub_21C6 21C5 C9 ret 21C5 ; End of function sub_21B6 21C5 21C6 21C6 ; =============== S U B R O U T I N E ======================================= 21C6 21C6 21C6 sub_21C6: ; ... 21C6 DD 6E 04 ld l, (ix+4) 21C9 DD 66 05 ld h, (ix+5) 21CC 22 41 C2 ld (word_C241), hl 21CF 21 00 00 ld hl, 0 21D2 22 43 C2 ld (word_C243), hl 21D5 21 41 C2 ld hl, word_C241 21D8 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 21DB 21 EB 21 ld hl, byte_21EB 21DE CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 21E1 CD 2C 16 call sub_162C 21E4 21 63 C2 ld hl, unk_C263 21E7 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 21EA C9 ret 21EA ; End of function sub_21C6 21EA 21EA ; --------------------------------------------------------------------------- 21EB 80 byte_21EB: db 80h ; ... 21EC 25 db 25h 21ED 00 db 0 21EE 00 db 0 21EF 21EF ; =============== S U B R O U T I N E ======================================= 21EF 21EF 21EF sub_21EF: ; ... 21EF DD 6E 00 ld l, (ix+0) 21F2 DD 66 01 ld h, (ix+1) 21F5 E5 push hl 21F6 11 04 00 ld de, 4 21F9 B7 or a 21FA ED 52 sbc hl, de 21FC E1 pop hl 21FD 30 0A jr nc, loc_2209 21FF 21 15 22 ld hl, lcdstrErrorStepsLT4_2215 2202 CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 2205 CD D6 1B call buzzer_1BD6 ; buzz for (c23ah) times 2208 C9 ret 2209 ; --------------------------------------------------------------------------- 2209 2209 loc_2209: ; ... 2209 CB 3C srl h 220B CB 1D rr l 220D 30 02 jr nc, loc_2211 220F D3 48 out (48h), a ; XXX MONO related 2211 2211 loc_2211: ; ... 2211 22 A1 C1 ld (portblastXXX_C188+19h), hl ; portblast zone 2214 C9 ret 2214 ; End of function sub_21EF 2214 2214 ; --------------------------------------------------------------------------- 2215 00 lcdstrErrorStepsLT4_2215:db 0 ; ... 2216 37 db 55 ; (1,15) 2217 45 52 52 4F+ .ascii 'ERROR: STEPS < 4@' 2228 2A db 42 ; (1,2) 2229 64 unk_2229: db 64h ; d ; ... 222A 00 db 0 222B 64 db 64h ; d 222C 00 db 0 222D 80 db 80h ; 222E 25 db 25h ; % 222F 64 db 64h ; d 2230 00 db 0 2231 02 db 2 2232 00 db 0 2233 C0 db 0C0h ; 2234 12 db 12h 2235 64 db 64h ; d 2236 00 db 0 2237 02 db 2 2238 00 db 0 2239 60 db 60h ; ` 223A 09 db 9 223B 32 db 32h ; 2 223C 00 db 0 223D 05 db 5 223E 00 db 0 223F B0 db 0B0h ; 2240 04 db 4 2241 32 unk_2241: db 32h ; 2 ; ... 2242 00 db 0 2243 05 db 5 2244 00 db 0 2245 58 db 58h ; X 2246 02 db 2 2247 0A db 0Ah 2248 00 db 0 2249 05 db 5 224A 00 db 0 224B F0 db 0F0h ; 224C 00 db 0 224D 05 db 5 224E 00 db 0 224F 05 db 5 2250 00 db 0 2251 78 db 78h ; x 2252 00 db 0 2253 0A db 0Ah 2254 00 db 0 2255 05 db 5 2256 00 db 0 2257 30 db 30h ; 0 2258 00 db 0 2259 05 db 5 225A 00 db 0 225B 05 db 5 225C 00 db 0 225D 18 db 18h 225E 00 db 0 225F 02 db 2 2260 00 db 0 2261 04 db 4 2262 00 db 0 2263 0C db 0Ch 2264 00 db 0 2265 05 db 5 2266 00 db 0 2267 02 db 2 2268 00 db 0 2269 0A db 0Ah 226A 00 db 0 226B 02 db 2 226C 00 db 0 226D 02 db 2 226E 00 db 0 226F 04 db 4 2270 00 db 0 2271 71 unk_2271: db 71h ; q ; ... 2271 ; XXX 4 bytes entries, something to do with 'speed' 2272 02 db 2 2273 00 db 0 2274 00 db 0 2275 E2 db 0E2h ; ; e1 2276 04 db 4 2277 00 db 0 2278 00 db 0 2279 C4 db 0C4h ; ; e2 227A 09 db 9 227B 00 db 0 227C 00 db 0 227D 88 db 88h ; ; e3 227E 13 db 13h 227F 00 db 0 2280 00 db 0 2281 10 unk_2281: db 10h ; ... 2281 ; e4 2282 27 db 27h ; ' 2283 00 db 0 2284 00 db 0 2285 A8 db 0A8h ; ; e5 2286 61 db 61h ; a 2287 00 db 0 2288 00 db 0 2289 50 db 50h ; P ; e6 228A C3 db 0C3h ; 228B 00 db 0 228C 00 db 0 228D 48 db 48h ; H ; e7 228E E8 db 0E8h ; 228F 01 db 1 2290 00 db 0 2291 90 db 90h ; ; e8 2292 D0 db 0D0h ; 2293 03 db 3 2294 00 db 0 2295 20 db 20h ; e9 2296 A1 db 0A1h ; 2297 07 db 7 2298 00 db 0 2299 09 db 9 ; e10 229A 3D db 3Dh ; = 229B 00 db 0 229C 00 db 0 229D 229D ; =============== S U B R O U T I N E ======================================= 229D 229D ; pio1fpB; I suspect a front panel buttons 229D 229D isrPIO1fpb_229D: ; ... 229D 229D ; FUNCTION CHUNK AT 2361 SIZE 00000030 BYTES 229D 229D 08 ex af, af' 229E D9 exx 229F 06 00 ld b, 0 ; setup to whack 256 times. bogo debounce? 22A1 AF xor a 22A2 32 3C C2 ld (byte_C23C), a ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 22A5 22A5 loop_22A5: ; ... 22A5 DB 5A in a, (5Ah) ; whack it 256 times 22A7 10 FC djnz loop_22A5 22A9 22A9 loop_22A9: ; ... 22A9 DB 5A in a, (5Ah) ; whack it another 256 times 22AB 10 FC djnz loop_22A9 22AD 06 08 ld b, 8 ; OK, hopefully we got it now. 22AF 22AF loop_22AF: ; ... 22AF 07 rlca 22B0 30 05 jr nc, cont_22B7 ; find the topmost 0 bit 22B2 10 FB djnz loop_22AF 22B4 C3 4A 23 jp leaveISR_234A ; nothing found! stray? 22B7 ; --------------------------------------------------------------------------- 22B7 22B7 cont_22B7: ; ... 22B7 78 ld a, b ; the bit number 8 through 1 of the key down 22B8 06 04 ld b, 4 22BA 22BA whee_22BA: ; ... 22BA 0F rrca ; get it in the high nybble 22BB 10 FD djnz whee_22BA 22BD 57 ld d, a 22BE CD 91 23 call sub_2391 ; change mode and read pio1fpA 22C1 06 08 ld b, 8 22C3 22C3 loop_22C3: ; ... 22C3 07 rlca ; find the topmost 0 bit 22C4 30 05 jr nc, cont_22CB 22C6 10 FB djnz loop_22C3 22C8 C3 47 23 jp leaveISRKeyScan_2347 ; nothing found! stray? 22CB ; --------------------------------------------------------------------------- 22CB 22CB cont_22CB: ; ... 22CB 78 ld a, b 22CC B2 or d ; A now has scan code (high nybble = col, low nybble = row; 1-8) 22CD FE 42 cp 42h ; scan code for 'C' key (clear; effectively backspace I think) 22CF 20 09 jr nz, xlattokeycodeNum_22DA 22D1 CD 4F 23 call keyscanfinish_234F ; return pio1fp to normal mode and wait for key release 22D4 CD 52 1D call sub_1D52 ; XXX backspace key entry buffer and lcd 22D7 C3 4A 23 jp leaveISR_234A 22DA ; --------------------------------------------------------------------------- 22DA 22DA xlattokeycodeNum_22DA: ; ... 22DA 11 FF FF ld de, 0FFFFh 22DD 21 B8 23 ld hl, scancodes0_23B8 ; scancodes for numeric keypad 22E0 01 0C 00 ld bc, 12 22E3 22E3 search_22E3: ; ... 22E3 13 inc de ; entry number 22E4 ED A1 cpi 22E6 E2 14 23 jp po, xlattokeycodeMode_2314 ; did not find; try mode keys 22E9 20 F8 jr nz, search_22E3 22EB 21 C4 23 ld hl, keycodes0_23C4 ; keycodes for numeric keypad (ascii values) 22EE 19 add hl, de 22EF 7E ld a, (hl) ; now we have the numeric pad key code! (which is ascii) 22F0 CD 4C 1D call lcdputc_1D4C ; LCD putc A 22F3 2A 11 C0 ld hl, (keybufptr_C011) ; current location in numeric key entry buffer 22F6 77 ld (hl), a 22F7 23 inc hl 22F8 36 40 ld (hl), '@' 22FA 22 11 C0 ld (keybufptr_C011), hl ; current location in numeric key entry buffer 22FD 11 62 C0 ld de, keybuf_C013+4Fh ; end of key entry buffer 2300 B7 or a 2301 ED 52 sbc hl, de 2303 DA 47 23 jp c, leaveISRKeyScan_2347 ; still have space 2306 19 add hl, de ; fixing to overflow, so reset to empty 2307 36 00 ld (hl), 0 2309 21 13 C0 ld hl, keybuf_C013 ; numeric key entry buffer 230C 22 11 C0 ld (keybufptr_C011), hl ; current location in numeric key entry buffer 230F 36 40 ld (hl), '@' ; lest we forget, our beloved strudel 2311 C3 47 23 jp leaveISRKeyScan_2347 2314 ; --------------------------------------------------------------------------- 2314 2314 xlattokeycodeMode_2314: ; ... 2314 11 FF FF ld de, 0FFFFh 2317 21 CF 23 ld hl, scancodes1_23CF ; scan codes for mode buttons 231A 01 0C 00 ld bc, 12 231D 231D search_231D: ; ... 231D 13 inc de ; entry number 231E ED A1 cpi 2320 E2 47 23 jp po, leaveISRKeyScan_2347 2323 20 F8 jr nz, search_231D 2325 21 DB 23 ld hl, keycodes1_23DB ; key codes for mode buttons (binary values) 2328 19 add hl, de 2329 7E ld a, (hl) ; mode button key code in A 232A 32 10 C0 ld (curmodekeycode_C010), a ; current mode key code; '@' if none 232D FE 0E cp 0Eh ; arrow left? 232F CA 61 23 jp z, loc_2361 ; handle arrow left 2332 FE 10 cp 10h ; arrow right? 2334 CA 79 23 jp z, loc_2379 ; handle arrow right 2337 11 00 00 ld de, 0 233A 5F ld e, a 233B 21 AF C1 ld hl, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 233E 19 add hl, de 233F 5E ld e, (hl) 2340 23 inc hl 2341 56 ld d, (hl) 2342 E1 pop hl 2343 22 5A C2 ld (word_C25A), hl ; XXX a function pointer 2346 D5 push de 2347 2347 leaveISRKeyScan_2347: ; ... 2347 CD 4F 23 call keyscanfinish_234F ; return pio1fp to normal mode and wait for key release 2347 ; End of function isrPIO1fpb_229D 2347 234A ; START OF FUNCTION CHUNK FOR isrDartArcv_24D8 234A 234A leaveISR_234A: ; ... 234A 08 ex af, af' 234B D9 exx 234C FB ei ; non-prioritized interrupts enable here; have to because of EXX 234D ED 4D reti ; serves as int ack with Z80 peripherals 234D ; END OF FUNCTION CHUNK FOR isrDartArcv_24D8 234F 234F ; =============== S U B R O U T I N E ======================================= 234F 234F ; return pio1fp to normal mode and wait for key release 234F 234F keyscanfinish_234F: ; ... 234F F5 push af 2350 E5 push hl 2351 21 9C 23 ld hl, portblastPIO1fpAoutBinInt_239C ; set pio1fp A out B in, w/int on vec a 2354 CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 2357 2357 wait_2357: ; ... 2357 DB 5A in a, (5Ah) ; PIO1fpB wait for key release 2359 FE FF cp 0FFh 235B C2 57 23 jp nz, wait_2357 235E E1 pop hl 235F F1 pop af 2360 C9 ret 2360 ; End of function keyscanfinish_234F 2360 2361 ; --------------------------------------------------------------------------- 2361 ; START OF FUNCTION CHUNK FOR isrPIO1fpb_229D 2361 2361 loc_2361: ; ... 2361 21 9C 23 ld hl, portblastPIO1fpAoutBinInt_239C ; handle arrow left 2364 CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 2367 2367 repeat_2367: ; ... 2367 CD 2F 0D call sub_D2F ; XXX something arrow left related 236A DB 5A in a, (5Ah) ; read key cols 236C FE FF cp 0FFh ; key released? 236E C2 67 23 jp nz, repeat_2367 2371 E1 pop hl ; ignore the regular order of training 2372 21 23 01 ld hl, infiniteloop_123 ; his safety requires the infinite loop 2375 E5 push hl 2376 C3 4A 23 jp leaveISR_234A 2379 ; --------------------------------------------------------------------------- 2379 2379 loc_2379: ; ... 2379 21 9C 23 ld hl, portblastPIO1fpAoutBinInt_239C ; handle arrow right 237C CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 237F 237F loop_237F: ; ... 237F CD 41 0D call sub_D41 ; XXX something arrow right related 2382 DB 5A in a, (5Ah) ; read key cols 2384 FE FF cp 0FFh ; key released? 2386 C2 7F 23 jp nz, loop_237F 2389 E1 pop hl ; forget return address 238A 21 23 01 ld hl, infiniteloop_123 ; loop, der it is! 238D E5 push hl ; forge return address 238E C3 4A 23 jp leaveISR_234A 238E ; END OF FUNCTION CHUNK FOR isrPIO1fpb_229D 2391 2391 ; =============== S U B R O U T I N E ======================================= 2391 2391 ; change mode and read pio1fpA 2391 2391 sub_2391: ; ... 2391 E5 push hl 2392 21 AB 23 ld hl, portblastPIO1fpAinBoutNoint_23AB ; set pio1fp A input B output, no ints 2395 CD C4 1B call doPortBlast_1BC4 ; send a list of ports values 2398 DB 58 in a, (58h) ; read pio1fpA 239A E1 pop hl 239B C9 ret 239B ; End of function sub_2391 239B 239B ; --------------------------------------------------------------------------- 239C 59 portblastPIO1fpAoutBinInt_239C:db 59h ; ... 239C ; port; pio1fpActrl 239D FF db 0FFh ; 59, ff sel op mode 3 239E 00 db 0 ; 59, 00 all outputs 239F 07 db 7 ; 59, 07 set interrupt control; no mask, disable, or function, monitor for low 23A0 7E db 7Eh ; change 23A1 58 db 58h ; port; pio1fpAdata 23A2 00 db 0 ; 58, 00 write pio1fpA = 0 23A3 7E db 7Eh ; change 23A4 5B db 5Bh ; port; pio1fpBctrl 23A5 0A db 0Ah ; 5b, 0a IM2 vector base 000ah 23A6 FF db 0FFh ; 5b, ff sel op mode 3 23A7 FF db 0FFh ; 5b, ff all inputs 23A8 97 db 97h ; 5b, 97 set interrupt control; mask follows, enable, or function, monitor for low 23A9 00 db 0 ; 5b, 00 all can generate interrupt 23AA 7F db 7Fh ; end! 23AB 59 portblastPIO1fpAinBoutNoint_23AB:db 59h ; ... 23AB ; port; pio1fpActrl 23AC FF db 0FFh ; 59, ff sel op mode 3 23AD FF db 0FFh ; 59, ff all input 23AE 07 db 7 ; 59, 07 set interrupt control; no mask, disable, or function, monitor for low 23AF 7E db 7Eh ; change 23B0 5B db 5Bh ; port; pio1fpBctrl 23B1 FF db 0FFh ; 5b, ff sel op mode 3 23B2 00 db 0 ; 5b, 00 all outputs 23B3 07 db 7 ; 5b, 07 set interrupt control; no mask, disable, or function, monitor for low 23B4 7E db 7Eh ; change 23B5 5A db 5Ah ; port; pio1fpBdata 23B6 00 db 0 ; 5a, 00 write pio1fpB = 0 23B7 7F db 7Fh ; end! 23B8 41 scancodes0_23B8:db 41h ; ... 23B8 ; scancodes for numeric keypad 23B9 61 db 61h 23BA 51 db 51h 23BB 81 db 81h 23BC 71 db 71h 23BD 31 db 31h 23BE 11 db 11h 23BF 21 db 21h 23C0 22 db 22h 23C1 32 db 32h 23C2 52 db 52h 23C3 00 db 0 23C4 33 keycodes0_23C4: db '3' ; ... 23C4 ; keycodes for numeric keypad (ascii values) 23C5 32 db '2' 23C6 36 db '6' 23C7 31 db '1' 23C8 35 db '5' 23C9 2E db '.' 23CA 34 db '4' 23CB 30 db '0' 23CC 39 db '9' 23CD 38 db '8' 23CE 37 db '7' 23CF 13 scancodes1_23CF:db 13h ; ... 23CF ; scan codes for mode buttons 23D0 23 db 23h 23D1 33 db 33h 23D2 43 db 43h 23D3 53 db 53h 23D4 63 db 63h 23D5 73 db 73h 23D6 83 db 83h 23D7 16 db 16h 23D8 56 db 56h 23D9 76 db 76h 23DA 00 db 0 23DB 06 keycodes1_23DB: db 6 ; ... 23DB ; WSTEP 23DC 12 db 12h ; 2nd 23DD 14 db 14h ; ??? (not shown on eric's matrix) 23DE 10 db 10h ; arrow right 23DF 0A db 0Ah ; GRAT 23E0 0E db 0Eh ; arrow left 23E1 08 db 8 ; SPEED 23E2 0C db 0Ch ; SCAN 23E3 04 db 4 ; W2 23E4 00 db 0 ; SLEW 23E5 02 db 2 ; W1 23E6 23E6 ; =============== S U B R O U T I N E ======================================= 23E6 23E6 ; set back to first set of mode button handlers 23E6 23E6 setmodeUnshifted_23E6: ; ... 23E6 21 2F 24 ld hl, modehandlers1st_242F ; mode key handlers for non-shifted (1st) state 23E9 11 AF C1 ld de, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 23EC 01 16 00 ld bc, 22 23EF ED B0 ldir 23F1 CD 4B 1C call showAprompt_1C4B ; show 'A:' prompt 23F4 CD A5 20 call lamp2ndOn_20A5 ; LED '2nd' ON 23F7 C9 ret 23F7 ; End of function setmodeUnshifted_23E6 23F7 23F8 23F8 ; =============== S U B R O U T I N E ======================================= 23F8 23F8 ; set back to first set of mode button handlers 23F8 23F8 setmodeUnshiftedAndEnd_23F8: ; ... 23F8 21 2F 24 ld hl, modehandlers1st_242F ; mode key handlers for non-shifted (1st) state 23FB 11 AF C1 ld de, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 23FE 01 16 00 ld bc, 22 2401 ED B0 ldir 2403 CD 4B 1C call showAprompt_1C4B ; show 'A:' prompt 2406 CD A5 20 call lamp2ndOn_20A5 ; LED '2nd' ON 2409 C3 23 01 jp infiniteloop_123 ; return to ready state 2409 ; End of function setmodeUnshiftedAndEnd_23F8 2409 240C 240C ; =============== S U B R O U T I N E ======================================= 240C 240C ; set to 2nd (shifted) mode button handlers 240C 240C setmodeShiftedAndEnd_240C: ; ... 240C 21 48 24 ld hl, modeHandlers2nd_2448 ; mode key handlers for shifted (2nd) state 240F 11 AF C1 ld de, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 2412 01 16 00 ld bc, 22 2415 ED B0 ldir 2417 CD 5C 1C call showBprompt_1C5C ; show 'B:' prompt 241A CD AA 20 call lamp2ndOff_20AA ; LED '2nd' OFF 241D C3 23 01 jp infiniteloop_123 241D ; End of function setmodeShiftedAndEnd_240C 241D 2420 2420 ; =============== S U B R O U T I N E ======================================= 2420 2420 ; XXX set to an ???unknown??? set of mode button handlers 2420 2420 XXXsetmodeXXX_2420: ; ... 2420 21 5E 24 ld hl, modeHandlersXXX_245E ; mode key handlers for XXX state 2423 11 AF C1 ld de, apfnModeHandlers_C1AF ; mode handlers indexed by mode key code 2426 01 16 00 ld bc, 22 2429 ED B0 ldir 242B CD 87 20 call lampScanOn_2087 ; LED 'SCAN' ON 242E C9 ret 242E ; End of function XXXsetmodeXXX_2420 242E 242E ; --------------------------------------------------------------------------- 242F 91 04 modehandlers1st_242F:dw btnSlew_491 ; ... 242F ; SLEW 2431 6E 0B dw btnW1_B6E ; W1 2433 BE 0B dw btnW2_BBE ; W2 2435 0E 0C dw btnWstep_C0E ; WSTEP 2437 26 01 dw btnSpeed_126 ; SPEED 2439 7F 09 dw btnGrat_97F ; GRAT 243B C4 30 dw btnScan_30C4 ; SCAN 243D 45 24 dw infiniteloop_2445 ; arrow left 243F 45 24 dw infiniteloop_2445 ; arrow right 2441 0C 24 dw setmodeShiftedAndEnd_240C ; 2nd 2443 45 24 dw infiniteloop_2445 ; (XXX mystery key) 2445 2445 ; =============== S U B R O U T I N E ======================================= 2445 2445 2445 infiniteloop_2445: ; ... 2445 C3 23 01 jp infiniteloop_123 2445 ; End of function infiniteloop_2445 2445 2445 ; --------------------------------------------------------------------------- 2448 7D 24 modeHandlers2nd_2448:dw btnFilt1_247D ; ... 2448 ; FILT1 244A 83 24 dw btnFilt2_2483 ; FILT2 244C 8F 24 dw btnPosit_248F ; POSIT 244E 95 24 dw btnCycl_2495 ; CYCL 2450 9B 24 dw btnTime_249B ; TIME 2452 A1 24 dw btnMot_24A1 ; MOT 2454 A7 24 dw btnConst_24A7 ; CONST 2456 45 24 dw infiniteloop_2445 ; CAL 2458 45 24 dw infiniteloop_2445 ; (no label) 245A F8 23 dw setmodeUnshiftedAndEnd_23F8 ; 2nd 245C 45 24 dw infiniteloop_2445 ; (XXX mystery key) 245E 74 24 modeHandlersXXX_245E:dw jpC25A_2474 ; ... 245E ; SLEW 2460 74 24 dw jpC25A_2474 ; W1 2462 74 24 dw jpC25A_2474 ; W2 2464 74 24 dw jpC25A_2474 ; WSTEP 2466 74 24 dw jpC25A_2474 ; SPEED 2468 74 24 dw jpC25A_2474 ; GRAT 246A 06 36 dw sub_3606 ; SCAN 246C 74 24 dw jpC25A_2474 ; arrow left 246E 74 24 dw jpC25A_2474 ; arrow right 2470 74 24 dw jpC25A_2474 ; 2nd 2472 74 24 dw jpC25A_2474 ; (XXX mystery key) 2474 2474 ; =============== S U B R O U T I N E ======================================= 2474 2474 ; XXX (effectively jp (c25a) ) 2474 2474 jpC25A_2474: ; ... 2474 F3 di 2475 D9 exx 2476 2A 5A C2 ld hl, (word_C25A) ; XXX a function pointer 2479 E5 push hl 247A D9 exx 247B FB ei 247C C9 ret ; (effectively jp (c25a) ) 247C ; End of function jpC25A_2474 247C 247D 247D ; =============== S U B R O U T I N E ======================================= 247D 247D ; XXX handle button FILT1 247D 247D btnFilt1_247D: ; ... 247D 247D ; FUNCTION CHUNK AT 01B8 SIZE 0000001F BYTES 247D 247D CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 2480 C3 B8 01 jp loc_1B8 2480 ; End of function btnFilt1_247D 2480 2483 2483 ; =============== S U B R O U T I N E ======================================= 2483 2483 ; XXX handle button FILT2 2483 2483 btnFilt2_2483: ; ... 2483 2483 ; FUNCTION CHUNK AT 03CE SIZE 0000000F BYTES 2483 2483 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 2486 C3 CE 03 jp loc_3CE 2486 ; End of function btnFilt2_2483 2486 2489 2489 ; =============== S U B R O U T I N E ======================================= 2489 2489 2489 sub_2489: 2489 2489 ; FUNCTION CHUNK AT 0171 SIZE 0000003F BYTES 2489 2489 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 248C C3 71 01 jp loc_171 248C ; End of function sub_2489 248C 248F 248F ; =============== S U B R O U T I N E ======================================= 248F 248F ; XXX handle button POSIT 248F 248F btnPosit_248F: ; ... 248F CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 2492 C3 40 09 jp sub_940 2492 ; End of function btnPosit_248F 2492 2495 2495 ; =============== S U B R O U T I N E ======================================= 2495 2495 ; XXX handle button CYCL 2495 2495 btnCycl_2495: ; ... 2495 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 2498 C3 D7 0C jp loc_CD7 2498 ; End of function btnCycl_2495 2498 249B 249B ; =============== S U B R O U T I N E ======================================= 249B 249B ; XXX handle button TIME 249B 249B btnTime_249B: ; ... 249B CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 249E C3 8B 0C jp loc_C8B 249E ; End of function btnTime_249B 249E 24A1 24A1 ; =============== S U B R O U T I N E ======================================= 24A1 24A1 ; XXX handle button MOT 24A1 24A1 btnMot_24A1: ; ... 24A1 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 24A4 C3 FC 08 jp loc_8FC 24A4 ; End of function btnMot_24A1 24A4 24A7 24A7 ; =============== S U B R O U T I N E ======================================= 24A7 24A7 ; XXX handle button CONST 24A7 24A7 btnConst_24A7: ; ... 24A7 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 24AA C3 5D 0D jp loc_D5D 24AA ; End of function btnConst_24A7 24AA 24AD 24AD ; =============== S U B R O U T I N E ======================================= 24AD 24AD 24AD sub_24AD: 24AD 24AD ; FUNCTION CHUNK AT 0EEE SIZE 00000009 BYTES 24AD 24AD CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 24B0 C3 EE 0E jp loc_EEE 24B0 ; End of function sub_24AD 24B0 24B3 24B3 ; =============== S U B R O U T I N E ======================================= 24B3 24B3 ; XXX set mode button handlers to the ???unknown??? mode 24B3 24B3 sub_24B3: ; ... 24B3 CD 20 24 call XXXsetmodeXXX_2420 ; XXX set to an ???unknown??? set of mode button handlers 24B6 C9 ret 24B6 ; End of function sub_24B3 24B6 24B7 24B7 ; =============== S U B R O U T I N E ======================================= 24B7 24B7 ; XXX mode unshifted, 'SCAN' LED off 24B7 24B7 sub_24B7: ; ... 24B7 CD E6 23 call setmodeUnshifted_23E6 ; set back to first set of mode button handlers 24BA AF xor a 24BB 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 24BE CD 8C 20 call lampScanOff_208C ; LED 'SCAN' OFF 24C1 C9 ret 24C1 ; End of function sub_24B7 24C1 24C2 24C2 ; =============== S U B R O U T I N E ======================================= 24C2 24C2 ; pio0bpB 24C2 24C2 isvVec0e_24C2: ; ... 24C2 08 ex af, af' 24C3 D9 exx 24C4 3E FF ld a, 0FFh 24C6 32 3C C2 ld (byte_C23C), a ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 24C9 CD 1C 29 call sub_291C 24CC CB BF res 7, a 24CE CB 77 bit 6, a 24D0 CA D5 24 jp z, loc_24D5 24D3 CB AF res 5, a 24D5 24D5 loc_24D5: ; ... 24D5 C3 08 25 jp cont_2508 24D5 ; End of function isvVec0e_24C2 24D5 24D8 24D8 ; =============== S U B R O U T I N E ======================================= 24D8 24D8 ; DART A receive ISR 24D8 24D8 isrDartArcv_24D8: ; ... 24D8 24D8 ; FUNCTION CHUNK AT 234A SIZE 00000005 BYTES 24D8 24D8 08 ex af, af' 24D9 D9 exx 24DA 3E FF ld a, 0FFh 24DC 32 3C C2 ld (byte_C23C), a ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 24DF DB 08 in a, (8) ; dart a data 24E1 CB BF res 7, a ; force 7-bit ascii 24E3 CB 77 bit 6, a ; is there case? 24E5 CA EA 24 jp z, cont_24EA 24E8 CB AF res 5, a ; force upper case 24EA 24EA cont_24EA: ; ... 24EA FE 11 cp 11h ; is it XON? 24EC 20 06 jr nz, cont_24F4 24EE 32 0E C0 ld (byte_C00E), a ; stow XON in 'flag' and leave 24F1 C3 4A 23 jp leaveISR_234A 24F4 ; --------------------------------------------------------------------------- 24F4 24F4 cont_24F4: ; ... 24F4 47 ld b, a 24F5 3A 0E C0 ld a, (byte_C00E) ; XXX XOFF 0x13 or XON 0x11 used as a flag in flow control 24F8 FE 13 cp 13h ; if we're in XOFF mode, discard incoming stuff 24FA CA 4A 23 jp z, leaveISR_234A 24FD 78 ld a, b 24FE FE 13 cp 13h 2500 20 06 jr nz, cont_2508 2502 32 0E C0 ld (byte_C00E), a ; if we received XOFF, remember this mode and leave 2505 C3 4A 23 jp leaveISR_234A 2508 ; --------------------------------------------------------------------------- 2508 2508 cont_2508: ; ... 2508 FE 1B cp 1Bh ; ESC char? 250A CA 00 00 jp z, coldBoot 250D FE 0A cp 0Ah ; LF? 250F 20 1A jr nz, cont_252B 2511 F5 push af 2512 3A 5C C2 ld a, (byte_C25C) ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 2515 FE 00 cp 0 2517 CA 25 25 jp z, setupForHandler_2525 251A 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 251D AF xor a 251E 32 5C C2 ld (byte_C25C), a ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 2521 F1 pop af 2522 C3 4A 23 jp leaveISR_234A 2525 ; --------------------------------------------------------------------------- 2525 2525 setupForHandler_2525: ; ... 2525 F1 pop af 2526 E1 pop hl ; goodbye old return address (probably the infinite loop) 2527 21 F0 03 ld hl, XXXhandleCommand_3F0 ; XXX a 'user mode' function (i.e. return address manipulated in ISR at 2527) 252A E5 push hl ; hello new return address (command handler?) 252B 252B cont_252B: ; ... 252B FE 20 cp ' ' 252D CA 4A 23 jp z, leaveISR_234A ; ignore spaces 2530 FE 0D cp 0Dh 2532 CC 5C 25 call z, isrDartProcessCR_255C ; XXX if there is no pending char, come back, else leave ISR 2535 2A 00 C0 ld hl, (word_C000) ; XXX appears to be a buffer pointer; esp for DART data but maybe others 2538 77 ld (hl), a 2539 FE 4B cp 'K' 253B CA 56 25 jp z, savePendingCharAndLeave_2556 253E FE 55 cp 'U' 2540 CA 56 25 jp z, savePendingCharAndLeave_2556 2543 23 inc hl 2544 36 40 ld (hl), '@' 2546 22 00 C0 ld (word_C000), hl ; XXX appears to be a buffer pointer; esp for DART data but maybe others 2549 11 70 C1 ld de, unk_C170 ; point at which we should XOFF 254C B7 or a 254D ED 52 sbc hl, de 254F DA 4A 23 jp c, leaveISR_234A ; plenty of space in buffer; leave 2552 2A 64 C0 ld hl, (pfnXOFF_C064) ; does either send XOFF or drop RTS depending on flow control option 2555 E9 jp (hl) ; send XOFF (or drop RTS) and then leave 2556 ; --------------------------------------------------------------------------- 2556 2556 savePendingCharAndLeave_2556: ; ... 2556 32 5C C2 ld (byte_C25C), a ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 2559 C3 4A 23 jp leaveISR_234A 2559 ; End of function isrDartArcv_24D8 2559 255C 255C ; =============== S U B R O U T I N E ======================================= 255C 255C ; XXX if there is no pending char, come back, else leave ISR 255C 255C isrDartProcessCR_255C: ; ... 255C 47 ld b, a 255D 3A 5C C2 ld a, (byte_C25C) ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 2560 FE 00 cp 0 2562 78 ld a, b 2563 C8 ret z 2564 F1 pop af ; (destroy ret addr since we jp to fxn tail) 2565 C3 4A 23 jp leaveISR_234A 2565 ; End of function isrDartProcessCR_255C 2565 2568 2568 ; =============== S U B R O U T I N E ======================================= 2568 2568 ; send byte A to either GPIB or 232 (with xlat) 2568 2568 abstractSendByte_2568: ; ... 2568 E5 push hl ; save it 2569 2A 6C C0 ld hl, (pfnSendByte_C06C) ; get the function pointer on the stack 256C E3 ex (sp), hl ; presto-swappo; restore hl 256D C9 ret ; not a ret, but rather a jp to the function pointer 256D ; End of function abstractSendByte_2568 256D 256E 256E ; =============== S U B R O U T I N E ======================================= 256E 256E ; DART A send byte in A (with w xlat) 256E 256E dartSendXlat_256E: ; ... 256E F5 push af 256F 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 2572 FE 00 cp 0 2574 20 02 jr nz, cont_2578 2576 F1 pop af 2577 C9 ret 2578 ; --------------------------------------------------------------------------- 2578 2578 cont_2578: ; ... 2578 F1 pop af 2579 FE 02 cp 2 257B C8 ret z 257C FE 03 cp 3 257E C2 88 25 jp nz, sub_2588 ; DART A send byte in A 2581 3E 0D ld a, 0Dh 2583 CD 88 25 call sub_2588 ; DART A send byte in A 2586 3E 0A ld a, 0Ah 2586 ; End of function dartSendXlat_256E 2586 2588 2588 ; =============== S U B R O U T I N E ======================================= 2588 2588 ; DART A send byte in A 2588 2588 sub_2588: ; ... 2588 F5 push af 2589 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 258C FE 00 cp 0 258E 20 02 jr nz, wait_2592 2590 F1 pop af 2591 C9 ret 2592 ; --------------------------------------------------------------------------- 2592 2592 wait_2592: ; ... 2592 3A 0E C0 ld a, (byte_C00E) ; XXX XOFF 0x13 or XON 0x11 used as a flag in flow control 2595 FE 13 cp 13h ; DC3, XOFF, ctrl-s 2597 28 F9 jr z, wait_2592 2599 2599 wait_2599: ; ... 2599 DB 09 in a, (9) ; get dart a rreg 0 (status) 259B CB 57 bit 2, a ; TBMT? 259D CA 99 25 jp z, wait_2599 25A0 F1 pop af 25A1 D3 08 out (8), a ; dart a transmit data 25A3 C9 ret 25A3 ; End of function sub_2588 25A3 25A4 25A4 ; =============== S U B R O U T I N E ======================================= 25A4 25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 25A4 25A4 sendbytes_25A4: ; ... 25A4 7E ld a, (hl) 25A5 FE 40 cp '@' ; strudel-terminated list 25A7 C8 ret z 25A8 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 25AB 23 inc hl 25AC C3 A4 25 jp sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 25AC ; End of function sendbytes_25A4 25AC 25AF 25AF ; =============== S U B R O U T I N E ======================================= 25AF 25AF ; XXX dart send XOFF 25AF 25AF sub_25AF: ; ... 25AF 3E 13 ld a, 13h ; XOFF 25B1 32 63 C0 ld (inXoff_C063), a ; stick it in the flag 25B4 CD 6E 25 call dartSendXlat_256E ; DART A send byte in A (with w xlat) 25B7 C3 4A 23 jp leaveISR_234A 25B7 ; End of function sub_25AF 25B7 25BA 25BA ; =============== S U B R O U T I N E ======================================= 25BA 25BA ; XXX dart drop RTS 25BA 25BA sub_25BA: ; ... 25BA 3E 13 ld a, 13h ; XOFF 25BC 32 63 C0 ld (inXoff_C063), a ; XONXOFF flag and actual character 25BF 3E 15 ld a, 15h 25C1 D3 09 out (9), a ; dart a reset ext status, setup for reg 5 25C3 3A 0A C0 ld a, (dartWReg5_C00A) ; DART wreg 5; esp for rts/cts 25C6 CB 8F res 1, a 25C8 D3 09 out (9), a ; dart a clear RTS 25CA C3 4A 23 jp leaveISR_234A 25CA ; End of function sub_25BA 25CA 25CD 25CD ; =============== S U B R O U T I N E ======================================= 25CD 25CD ; XXX DART send XON 25CD 25CD sub_25CD: 25CD 3E 11 ld a, 11h ; XON 25CF CD 6E 25 call dartSendXlat_256E ; DART A send byte in A (with w xlat) 25D2 C9 ret 25D2 ; End of function sub_25CD 25D2 25D3 25D3 ; =============== S U B R O U T I N E ======================================= 25D3 25D3 ; XXX dart raise RTS 25D3 25D3 sub_25D3: 25D3 3E 15 ld a, 15h 25D5 D3 09 out (9), a ; dart a reset ext status, setup for reg 5 25D7 3A 0A C0 ld a, (dartWReg5_C00A) ; DART wreg 5; esp for rts/cts 25DA D3 09 out (9), a ; dart a wreg5 (presumably set RTS) 25DC C9 ret 25DC ; End of function sub_25D3 25DC 25DD 25DD ; =============== S U B R O U T I N E ======================================= 25DD 25DD 25DD sub_25DD: ; ... 25DD F5 push af 25DE E5 push hl 25DF C5 push bc 25E0 D5 push de 25E1 3E 02 ld a, 2 ; GPIB SRQ 25E3 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 25E6 CD 38 26 call sub_2638 25E9 3E FF ld a, 0FFh 25EB 32 2D C5 ld (unk_C52D), a ; XXX a flag of sorts 25EE C5 push bc 25EF CD 62 14 call sub_1462 25F2 11 7C C4 ld de, unk_C47C 25F5 C1 pop bc 25F6 25F6 loc_25F6: ; ... 25F6 1A ld a, (de) 25F7 F5 push af 25F8 3A 2D C5 ld a, (unk_C52D) ; XXX a flag of sorts 25FB FE 00 cp 0 25FD 28 07 jr z, loc_2606 25FF F1 pop af 2600 FE 30 cp 30h ; '0' 2602 20 03 jr nz, loc_2607 2604 18 08 jr loc_260E 2606 ; --------------------------------------------------------------------------- 2606 2606 loc_2606: ; ... 2606 F1 pop af 2607 2607 loc_2607: ; ... 2607 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 260A AF xor a 260B 32 2D C5 ld (unk_C52D), a ; XXX a flag of sorts 260E 260E loc_260E: ; ... 260E 1B dec de 260F 10 E5 djnz loc_25F6 2611 3A 2D C5 ld a, (unk_C52D) ; XXX a flag of sorts 2614 FE 00 cp 0 2616 28 05 jr z, loc_261D 2618 3E 30 ld a, 30h ; '0' 261A CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 261D 261D loc_261D: ; ... 261D 3E 2E ld a, 2Eh ; '.' 261F CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 2622 41 ld b, c 2623 2623 loc_2623: ; ... 2623 1A ld a, (de) 2624 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 2627 1B dec de 2628 10 F9 djnz loc_2623 262A AF xor a 262B 32 2D C5 ld (unk_C52D), a ; XXX a flag of sorts 262E 3E 03 ld a, 3 2630 CD 68 25 call abstractSendByte_2568 ; send byte A to either GPIB or 232 (with xlat) 2633 D1 pop de 2634 C1 pop bc 2635 E1 pop hl 2636 F1 pop af 2637 C9 ret 2637 ; End of function sub_25DD 2637 2638 2638 ; =============== S U B R O U T I N E ======================================= 2638 2638 2638 sub_2638: ; ... 2638 3A AD C4 ld a, (byte_C4AD) 263B 47 ld b, a 263C 3E 09 ld a, 9 263E 90 sub b 263F 47 ld b, a 2640 3E 09 ld a, 9 2642 90 sub b 2643 4F ld c, a 2644 C9 ret 2644 ; End of function sub_2638 2644 2645 2645 ; =============== S U B R O U T I N E ======================================= 2645 2645 2645 sub_2645: ; ... 2645 D5 push de 2646 C5 push bc 2647 E5 push hl 2648 CD D4 29 call sub_29D4 ; fill C229 with ten '0' chars 264B 3A AD C4 ld a, (byte_C4AD) 264E ED 44 neg 2650 C6 09 add a, 9 2652 47 ld b, a 2653 2653 loc_2653: ; ... 2653 CD 5D 27 call sub_275D 2656 CA 6B 26 jp z, loc_266B 2659 FE 2E cp 2Eh ; '.' 265B 28 1C jr z, loc_2679 265D 77 ld (hl), a 265E 23 inc hl 265F 10 F2 djnz loc_2653 2661 CD 5D 27 call sub_275D 2664 FE 2E cp 2Eh ; '.' 2666 C2 04 27 jp nz, loc_2704 2669 18 0E jr loc_2679 266B ; --------------------------------------------------------------------------- 266B 266B loc_266B: ; ... 266B FE 2E cp 2Eh ; '.' 266D CA 72 26 jp z, loc_2672 2670 77 ld (hl), a 2671 23 inc hl 2672 2672 loc_2672: ; ... 2672 3A AD C4 ld a, (byte_C4AD) 2675 47 ld b, a 2676 C3 9D 26 jp loc_269D 2679 ; --------------------------------------------------------------------------- 2679 2679 loc_2679: ; ... 2679 3A AD C4 ld a, (byte_C4AD) 267C 47 ld b, a 267D B7 or a 267E CA A5 26 jp z, loc_26A5 2681 2681 loc_2681: ; ... 2681 CD 5D 27 call sub_275D 2684 CA 92 26 jp z, loc_2692 2687 FE 2E cp 2Eh ; '.' 2689 CA 04 27 jp z, loc_2704 268C 77 ld (hl), a 268D 23 inc hl 268E 10 F1 djnz loc_2681 2690 18 13 jr loc_26A5 2692 ; --------------------------------------------------------------------------- 2692 2692 loc_2692: ; ... 2692 FE 2E cp 2Eh ; '.' 2694 CA 04 27 jp z, loc_2704 2697 77 ld (hl), a 2698 23 inc hl 2699 05 dec b 269A C3 9D 26 jp loc_269D 269D ; --------------------------------------------------------------------------- 269D 269D loc_269D: ; ... 269D 78 ld a, b 269E B7 or a 269F CA A5 26 jp z, loc_26A5 26A2 26A2 loc_26A2: ; ... 26A2 23 inc hl 26A3 10 FD djnz loc_26A2 26A5 26A5 loc_26A5: ; ... 26A5 EB ex de, hl 26A6 21 32 C2 ld hl, unk_C232 26A9 B7 or a 26AA ED 52 sbc hl, de 26AC CA C8 26 jp z, loc_26C8 26AF 45 ld b, l 26B0 C5 push bc 26B1 3E 09 ld a, 9 26B3 90 sub b 26B4 47 ld b, a 26B5 1B dec de 26B6 21 31 C2 ld hl, unk_C231 26B9 26B9 loc_26B9: ; ... 26B9 1A ld a, (de) 26BA 77 ld (hl), a 26BB 1B dec de 26BC 2B dec hl 26BD 10 FA djnz loc_26B9 26BF C1 pop bc 26C0 21 29 C2 ld hl, unk_C229 26C3 26C3 loc_26C3: ; ... 26C3 36 30 ld (hl), 30h ; '0' 26C5 23 inc hl 26C6 10 FB djnz loc_26C3 26C8 26C8 loc_26C8: ; ... 26C8 3E 40 ld a, 40h ; '@' 26CA 32 32 C2 ld (unk_C232), a 26CD 21 31 C2 ld hl, unk_C231 26D0 11 41 C2 ld de, word_C241 26D3 CD 92 14 call sub_1492 26D6 E1 pop hl 26D7 C1 pop bc 26D8 D1 pop de 26D9 C9 ret 26DA ; --------------------------------------------------------------------------- 26DA 26DA loc_26DA: ; ... 26DA 3A AD C4 ld a, (byte_C4AD) 26DD 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 26E0 AF xor a 26E1 32 AD C4 ld (byte_C4AD), a 26E4 CD 45 26 call sub_2645 26E7 3A 3D C2 ld a, (unk_C23D) ; XXX prev C4AD value 26EA 32 AD C4 ld (byte_C4AD), a 26ED C9 ret 26ED ; --------------------------------------------------------------------------- 26EE lcdstrInputNotAccepted_26EE: ; ... 26EE 00 db 0 26EF 3C db 60 ; (1,20) 26F0 49 4E 50 55+ .ascii 'INPUT NOT ACCEPTED@' 2703 2A db 42 ; (1,2) 2704 ; --------------------------------------------------------------------------- 2704 2704 loc_2704: ; ... 2704 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 2707 FE 00 cp 0 2709 28 10 jr z, loc_271B 270B 21 13 27 ld hl, promptQues_2713 ; '?' prompt 270E CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 2711 18 14 jr loc_2727 2711 ; --------------------------------------------------------------------------- 2713 02 promptQues_2713:db 2 ; ... 2713 ; '?' prompt; 2 is shorthand for GPIB SRQ 2714 3F db '?' 2715 03 db 3 ; 3 is shorthand for CRLF 2716 40 db '@' 2717 02 promptStar_2717:db 2 ; ... 2717 ; '*' prompt; 2 is shorthand for GPIB SRQ 2718 2A db '*' 2719 03 db 3 ; 3 is shorthand for CRLF 271A 40 db '@' 271B ; --------------------------------------------------------------------------- 271B 271B loc_271B: ; ... 271B 21 EE 26 ld hl, lcdstrInputNotAccepted_26EE 271E CD 25 1D call lcdstrSend_1D25 ; send lcdstr to display 2721 2A 11 C0 ld hl, (keybufptr_C011) ; current location in numeric key entry buffer 2724 22 6A C0 ld (word_C06A), hl 2727 2727 loc_2727: ; ... 2727 E1 pop hl 2728 C1 pop bc 2729 D1 pop de 272A E1 pop hl 272B C3 23 01 jp infiniteloop_123 272B ; End of function sub_2645 272B 272E 272E ; =============== S U B R O U T I N E ======================================= 272E 272E 272E sub_272E: ; ... 272E 3A AD C4 ld a, (byte_C4AD) 2731 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 2734 3E 04 ld a, 4 2736 32 AD C4 ld (byte_C4AD), a 2739 18 0B jr loc_2746 273B ; --------------------------------------------------------------------------- 273B 273B loc_273B: ; ... 273B 3A AD C4 ld a, (byte_C4AD) 273E 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 2741 3E 03 ld a, 3 2743 32 AD C4 ld (byte_C4AD), a 2746 2746 loc_2746: ; ... 2746 CD 45 26 call sub_2645 2749 3A 3D C2 ld a, (unk_C23D) ; XXX prev C4AD value 274C 32 AD C4 ld (byte_C4AD), a 274F C9 ret 274F ; End of function sub_272E 274F 2750 2750 ; =============== S U B R O U T I N E ======================================= 2750 2750 2750 sub_2750: ; ... 2750 3A AD C4 ld a, (byte_C4AD) 2753 32 3D C2 ld (unk_C23D), a ; XXX prev C4AD value 2756 3E 04 ld a, 4 2758 32 AD C4 ld (byte_C4AD), a 275B 18 E9 jr loc_2746 275B ; End of function sub_2750 275B 275D 275D ; =============== S U B R O U T I N E ======================================= 275D 275D 275D sub_275D: ; ... 275D D5 push de 275E E5 push hl 275F 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 2762 FE 00 cp 0 2764 C2 87 27 jp nz, loc_2787 2767 2767 loc_2767: ; ... 2767 2A 6A C0 ld hl, (word_C06A) 276A ED 5B 11 C0 ld de, (keybufptr_C011) ; current location in numeric key entry buffer 276E AF xor a 276F ED 52 sbc hl, de 2771 CA 67 27 jp z, loc_2767 2774 D2 67 27 jp nc, loc_2767 2777 2A 6A C0 ld hl, (word_C06A) 277A 7E ld a, (hl) 277B 23 inc hl 277C 22 6A C0 ld (word_C06A), hl 277F 5F ld e, a 2780 7E ld a, (hl) 2781 FE 40 cp 40h ; '@' 2783 7B ld a, e 2784 E1 pop hl 2785 D1 pop de 2786 C9 ret 2787 ; --------------------------------------------------------------------------- 2787 2787 loc_2787: ; ... 2787 2A 68 C0 ld hl, (word_C068) ; XXX appears to be a buffer pointer; related to C000 278A ED 5B 00 C0 ld de, (word_C000) ; XXX appears to be a buffer pointer; esp for DART data but maybe others 278E AF xor a 278F ED 52 sbc hl, de 2791 CA 87 27 jp z, loc_2787 2794 D2 87 27 jp nc, loc_2787 2797 2A 68 C0 ld hl, (word_C068) ; XXX appears to be a buffer pointer; related to C000 279A 7E ld a, (hl) 279B 23 inc hl 279C 22 68 C0 ld (word_C068), hl ; XXX appears to be a buffer pointer; related to C000 279F 5F ld e, a 27A0 7E ld a, (hl) 27A1 FE 40 cp '@' 27A3 C2 B1 27 jp nz, loc_27B1 27A6 21 71 C0 ld hl, unk_C071 ; XXX appears to be command buffer from DART data at least (maybe also gpib) 27A9 36 40 ld (hl), '@' 27AB 22 00 C0 ld (word_C000), hl ; XXX appears to be a buffer pointer; esp for DART data but maybe others 27AE 22 68 C0 ld (word_C068), hl ; XXX appears to be a buffer pointer; related to C000 27B1 27B1 loc_27B1: ; ... 27B1 7B ld a, e 27B2 E1 pop hl 27B3 D1 pop de 27B4 C9 ret 27B4 ; End of function sub_275D 27B4 27B5 ; --------------------------------------------------------------------------- 27B5 DD E5 push ix 27B7 DD 2A 68 C0 ld ix, (word_C068) ; XXX appears to be a buffer pointer; related to C000 27BB DD CB 01 76 bit 6, (ix+1) 27BF 28 58 jr z, loc_2819 27C1 DD 7E 01 ld a, (ix+1) 27C4 32 3E C2 ld (byte_C23E), a ; XXX 'command' 27C7 3E 0D ld a, 0Dh 27C9 DD BE 02 cp (ix+2) 27CC CA F3 27 jp z, loc_27F3 27CF 3E 0A ld a, 0Ah 27D1 DD BE 02 cp (ix+2) 27D4 CA F3 27 jp z, loc_27F3 27D7 DD 7E 02 ld a, (ix+2) 27DA 32 3F C2 ld (byte_C23F), a ; XXX 'last command'? 27DD 27DD loc_27DD: ; ... 27DD DD 7E 00 ld a, (ix+0) 27E0 01 05 00 ld bc, 5 27E3 DD 09 add ix, bc 27E5 DD 22 68 C0 ld (word_C068), ix ; XXX appears to be a buffer pointer; related to C000 27E9 BF cp a 27EA 18 38 jr loc_2824 27EC ; --------------------------------------------------------------------------- 27EC 3E FF ld a, 0FFh 27EE 32 3B C2 ld (byte_C23B), a 27F1 18 EA jr loc_27DD 27F3 ; --------------------------------------------------------------------------- 27F3 27F3 loc_27F3: ; ... 27F3 AF xor a 27F4 32 3F C2 ld (byte_C23F), a ; XXX 'last command'? 27F7 3E 40 ld a, 40h ; '@' 27F9 DD BE 04 cp (ix+4) 27FC 20 07 jr nz, loc_2805 27FE 3E FF ld a, 0FFh 2800 32 3B C2 ld (byte_C23B), a 2803 18 05 jr loc_280A 2805 ; --------------------------------------------------------------------------- 2805 2805 loc_2805: ; ... 2805 3E 00 ld a, 0 2807 32 3B C2 ld (byte_C23B), a 280A 280A loc_280A: ; ... 280A DD 7E 00 ld a, (ix+0) 280D 01 04 00 ld bc, 4 2810 DD 09 add ix, bc 2812 DD 22 68 C0 ld (word_C068), ix ; XXX appears to be a buffer pointer; related to C000 2816 BF cp a 2817 18 0B jr loc_2824 2819 ; --------------------------------------------------------------------------- 2819 2819 loc_2819: ; ... 2819 AF xor a 281A 3D dec a 281B DD 7E 00 ld a, (ix+0) 281E DD 23 inc ix 2820 DD 22 68 C0 ld (word_C068), ix ; XXX appears to be a buffer pointer; related to C000 2824 2824 loc_2824: ; ... 2824 DD E1 pop ix 2826 E1 pop hl 2827 D1 pop de 2828 C9 ret 2829 2829 ; =============== S U B R O U T I N E ======================================= 2829 2829 2829 sub_2829: ; ... 2829 CD 39 28 call sub_2839 282C 23 inc hl 282D CD 39 28 call sub_2839 2830 23 inc hl 2831 CD 39 28 call sub_2839 2834 23 inc hl 2835 CD 39 28 call sub_2839 2838 C9 ret 2838 ; End of function sub_2829 2838 2839 2839 ; =============== S U B R O U T I N E ======================================= 2839 2839 2839 sub_2839: ; ... 2839 7E ld a, (hl) 283A E6 0F and 0Fh 283C F6 30 or 30h ; '0' 283E CD 4C 1D call lcdputc_1D4C ; LCD putc A 2841 7E ld a, (hl) 2842 CB 3F srl a 2844 CB 3F srl a 2846 CB 3F srl a 2848 CB 3F srl a 284A F6 30 or 30h ; '0' 284C CD 4C 1D call lcdputc_1D4C ; LCD putc A 284F C9 ret 284F ; End of function sub_2839 284F 2850 2850 ; =============== S U B R O U T I N E ======================================= 2850 2850 ; XXX GPIB related; probably init 2850 2850 sub_2850: ; ... 2850 3E 02 ld a, 2 2852 D3 15 out (15h), a ; XXX GPIB related 2854 3E 01 ld a, 1 2856 D3 11 out (11h), a ; XXX GPIB related 2858 AF xor a 2859 D3 12 out (12h), a ; XXX GPIB related 285B 3E 31 ld a, 31h ; '1' 285D D3 14 out (14h), a ; XXX GPIB related 285F DB 38 in a, (38h) ; XXX GPIB DIP switches 2861 E6 1F and 1Fh 2863 D3 16 out (16h), a ; XXX GPIB related 2865 3E E0 ld a, 0E0h ; '' 2867 D3 16 out (16h), a ; XXX GPIB related 2869 3E 0A ld a, 0Ah 286B D3 17 out (17h), a ; XXX GPIB related 286D 3E 24 ld a, 24h ; '$' 286F D3 15 out (15h), a ; XXX GPIB related 2871 3E 80 ld a, 80h ; '' 2873 D3 15 out (15h), a ; XXX GPIB related 2875 3E A8 ld a, 0A8h ; '' 2877 D3 15 out (15h), a ; XXX GPIB related 2879 3E 00 ld a, 0 287B D3 15 out (15h), a ; XXX GPIB related 287D AF xor a 287E 32 37 C2 ld (unk_C237), a 2881 32 38 C2 ld (unk_C238), a 2884 3E BF ld a, 0BFh ; '' 2886 D3 13 out (13h), a ; XXX GPIB related 2888 DB 13 in a, (13h) ; XXX GPIB related 288A E6 BF and 0BFh ; '' 288C FE BF cp 0BFh ; '' 288E C0 ret nz 288F AF xor a 2890 D3 13 out (13h), a ; XXX GPIB related 2892 DB 13 in a, (13h) ; XXX GPIB related 2894 E6 BF and 0BFh ; '' 2896 FE 00 cp 0 2898 C0 ret nz 2899 3E 14 ld a, 14h 289B D3 15 out (15h), a ; XXX GPIB related 289D 21 00 00 ld hl, 0 28A0 22 35 C2 ld (unk_C235), hl 28A3 AF xor a 28A4 C9 ret 28A4 ; End of function sub_2850 28A4 28A5 ; --------------------------------------------------------------------------- 28A5 ; START OF FUNCTION CHUNK FOR sub_28B3 28A5 28A5 loc_28A5: ; ... 28A5 E5 push hl 28A6 D5 push de 28A7 C5 push bc 28A8 F5 push af 28A9 3E 06 ld a, 6 28AB D3 15 out (15h), a ; XXX GPIB related 28AD 32 39 C2 ld (byte_C239), a 28B0 C3 DA 28 jp loc_28DA 28B0 ; END OF FUNCTION CHUNK FOR sub_28B3 28B3 28B3 ; =============== S U B R O U T I N E ======================================= 28B3 28B3 ; XXX GPIB send byte in A (with 0x03 translated to 0d0a sequence) 28B3 28B3 sub_28B3: ; ... 28B3 28B3 ; FUNCTION CHUNK AT 28A5 SIZE 0000000E BYTES 28B3 ; FUNCTION CHUNK AT 29B1 SIZE 00000011 BYTES 28B3 28B3 F5 push af 28B4 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 28B7 FE 00 cp 0 28B9 20 02 jr nz, cont_28BD 28BB F1 pop af 28BC C9 ret 28BD ; --------------------------------------------------------------------------- 28BD 28BD cont_28BD: ; ... 28BD F1 pop af 28BE FE 02 cp 2 28C0 CA B1 29 jp z, loc_29B1 ; XXX GPIB SRQ? 28C3 FE 03 cp 3 28C5 C2 D2 28 jp nz, sub_28D2 28C8 3E 0D ld a, 0Dh 28CA CD D2 28 call sub_28D2 28CD 3E 0A ld a, 0Ah 28CF C3 A5 28 jp loc_28A5 28CF ; End of function sub_28B3 28CF 28D2 28D2 ; =============== S U B R O U T I N E ======================================= 28D2 28D2 28D2 sub_28D2: ; ... 28D2 E5 push hl 28D3 D5 push de 28D4 C5 push bc 28D5 F5 push af 28D6 AF xor a 28D7 32 39 C2 ld (byte_C239), a 28DA 28DA loc_28DA: ; ... 28DA ED 5B 35 C2 ld de, (unk_C235) 28DE CD 62 29 call sub_2962 28E1 CB 96 res 2, (hl) 28E3 CB 8E res 1, (hl) 28E5 F1 pop af 28E6 F5 push af 28E7 D3 10 out (10h), a ; XXX GPIB related 28E9 ED 5B 35 C2 ld de, (unk_C235) 28ED CD 62 29 call sub_2962 28F0 CD 39 29 call sub_2939 28F3 F1 pop af 28F4 CB 56 bit 2, (hl) 28F6 CA 18 29 jp z, loc_2918 28F9 F5 push af 28FA 3A 39 C2 ld a, (byte_C239) 28FD B7 or a 28FE CA 05 29 jp z, loc_2905 2901 3E 06 ld a, 6 2903 D3 15 out (15h), a ; XXX GPIB related 2905 2905 loc_2905: ; ... 2905 ED 5B 35 C2 ld de, (unk_C235) 2909 CD 62 29 call sub_2962 290C CB 8E res 1, (hl) 290E F1 pop af 290F D3 10 out (10h), a ; XXX GPIB related 2911 ED 5B 35 C2 ld de, (unk_C235) 2915 CD 62 29 call sub_2962 2918 2918 loc_2918: ; ... 2918 C1 pop bc 2919 D1 pop de 291A E1 pop hl 291B C9 ret 291B ; End of function sub_28D2 291B 291C 291C ; =============== S U B R O U T I N E ======================================= 291C 291C 291C sub_291C: ; ... 291C 21 37 C2 ld hl, unk_C237 291F CB A6 res 4, (hl) 2921 CD 39 29 call sub_2939 2924 CB 86 res 0, (hl) 2926 DB 10 in a, (10h) ; XXX GPIB related 2928 C9 ret 2928 ; End of function sub_291C 2928 2929 ; --------------------------------------------------------------------------- 2929 21 38 C2 ld hl, unk_C238 292C CB 9E res 3, (hl) 292E D3 10 out (10h), a ; XXX GPIB related 2930 11 FF FF ld de, 0FFFFh 2933 CD 4D 29 call sub_294D 2936 CB 9E res 3, (hl) 2938 C9 ret 2939 2939 ; =============== S U B R O U T I N E ======================================= 2939 2939 2939 sub_2939: ; ... 2939 21 37 C2 ld hl, unk_C237 293C DB 11 in a, (11h) ; XXX GPIB related 293E B6 or (hl) 293F 77 ld (hl), a 2940 C9 ret 2940 ; End of function sub_2939 2940 2941 2941 ; =============== S U B R O U T I N E ======================================= 2941 2941 2941 sub_2941: ; ... 2941 21 38 C2 ld hl, unk_C238 2944 DB 12 in a, (12h) ; XXX GPIB related 2946 CB AE res 5, (hl) 2948 CB A6 res 4, (hl) 294A B6 or (hl) 294B 77 ld (hl), a 294C C9 ret 294C ; End of function sub_2941 294C 294D 294D ; =============== S U B R O U T I N E ======================================= 294D 294D 294D sub_294D: ; ... 294D 06 20 ld b, 20h ; ' ' 294F 294F loc_294F: ; ... 294F CD 41 29 call sub_2941 2952 CB 5E bit 3, (hl) 2954 C0 ret nz 2955 10 F8 djnz loc_294F 2957 7A ld a, d 2958 B3 or e 2959 CA 4D 29 jp z, sub_294D 295C 1B dec de 295D 7A ld a, d 295E B3 or e 295F C2 4D 29 jp nz, sub_294D 295F ; End of function sub_294D 295F 2962 2962 ; =============== S U B R O U T I N E ======================================= 2962 2962 2962 sub_2962: ; ... 2962 06 2B ld b, 2Bh ; '+' 2964 2964 loc_2964: ; ... 2964 CD 39 29 call sub_2939 2967 CB 4E bit 1, (hl) 2969 C0 ret nz 296A 10 F8 djnz loc_2964 296C 7A ld a, d 296D B3 or e 296E CA 62 29 jp z, sub_2962 2971 1B dec de 2972 7A ld a, d 2973 B3 or e 2974 C2 62 29 jp nz, sub_2962 2977 DB 14 in a, (14h) ; XXX GPIB related 2979 CB 57 bit 2, a 297B C9 ret 297B ; End of function sub_2962 297B 297C ; --------------------------------------------------------------------------- 297C DB 14 in a, (14h) ; XXX GPIB related 297E CB 4F bit 1, a 2980 C9 ret 2981 ; --------------------------------------------------------------------------- 2981 DB 14 in a, (14h) ; XXX GPIB related 2983 E6 66 and 66h ; 'f' 2985 47 ld b, a 2986 CD 39 29 call sub_2939 2989 CB 66 bit 4, (hl) 298B CB A6 res 4, (hl) 298D 28 02 jr z, loc_2991 298F CB D8 set 3, b 2991 2991 loc_2991: ; ... 2991 78 ld a, b 2992 C9 ret 2993 ; --------------------------------------------------------------------------- 2993 CD 39 29 call sub_2939 2996 F5 push af 2997 E6 D3 and 0D3h ; '' 2999 77 ld (hl), a 299A F1 pop af 299B E6 2C and 2Ch ; ',' 299D F5 push af 299E CD 41 29 call sub_2941 29A1 F1 pop af 29A2 CB 6E bit 5, (hl) 29A4 CA A9 29 jp z, loc_29A9 29A7 CB CF set 1, a 29A9 29A9 loc_29A9: ; ... 29A9 CB 66 bit 4, (hl) 29AB CA B0 29 jp z, locret_29B0 29AE CB C7 set 0, a 29B0 29B0 locret_29B0: ; ... 29B0 C9 ret 29B1 ; --------------------------------------------------------------------------- 29B1 ; START OF FUNCTION CHUNK FOR sub_28B3 29B1 29B1 loc_29B1: ; ... 29B1 DB 38 in a, (38h) ; GPIB DIP switchs 29B3 CB 7F bit 7, a ; SRQ on/off 29B5 C8 ret z ; skip if SRQ on 29B6 3E 40 ld a, '@' 29B8 D3 13 out (13h), a ; GPIB send byte 29BA 29BA wait_29BA: ; ... 29BA DB 13 in a, (13h) ; XXX GPIB status ? 29BC CB 77 bit 6, a 29BE C2 BA 29 jp nz, wait_29BA 29C1 C9 ret 29C1 ; END OF FUNCTION CHUNK FOR sub_28B3 29C2 29C2 ; =============== S U B R O U T I N E ======================================= 29C2 29C2 ; delay for B times XXX usec 29C2 29C2 delay_29C2: ; ... 29C2 E5 push hl 29C3 D5 push de 29C4 29C4 outer_29C4: ; ... 29C4 21 FF FF ld hl, 0FFFFh 29C7 11 01 00 ld de, 1 29CA 29CA inner_29CA: ; ... 29CA B7 or a 29CB ED 52 sbc hl, de 29CD 20 FB jr nz, inner_29CA 29CF 10 F3 djnz outer_29C4 29D1 D1 pop de 29D2 E1 pop hl 29D3 C9 ret 29D3 ; End of function delay_29C2 29D3 29D4 29D4 ; =============== S U B R O U T I N E ======================================= 29D4 29D4 ; fill C229 with ten '0' chars 29D4 29D4 sub_29D4: ; ... 29D4 21 29 C2 ld hl, unk_C229 29D7 36 30 ld (hl), '0' 29D9 06 09 ld b, 9 29DB 29DB loop_29DB: ; ... 29DB 23 inc hl 29DC 36 30 ld (hl), '0' 29DE 10 FB djnz loop_29DB 29E0 21 29 C2 ld hl, unk_C229 29E3 C9 ret 29E3 ; End of function sub_29D4 29E3 29E3 ; --------------------------------------------------------------------------- 29E4 2B portblastColdBoot_29E4:db 2Bh ; ... 29E4 ; port; 8255 29E5 80 db 80h ; 2b, 80; mode set, active, grpA mode 0 output, grpB mode 0 output 29E6 00 db 0 ; 2b, 00 bit set/reset, port c b0 reset 29E7 7E db 7Eh ; change 29E8 59 db 59h ; port; pio1fpActrl 29E9 FF db 0FFh ; 59, ff; sel op mode 3 29EA 00 db 0 ; 59, 00; all outputs 29EB 07 db 7 ; 59, 07; set interrupt control; no mask, disable, or function, monitor for low 29EC 7E db 7Eh ; change 29ED 58 db 58h ; port; pio1fpAdata 29EE 00 db 0 ; 58, 00; write pio1fpA = 0 29EF 7E db 7Eh ; change 29F0 5B db 5Bh ; port; pio1fpBctrl 29F1 0A db 0Ah ; 5b, 0a; IM2 vector base 000ah 29F2 FF db 0FFh ; 5b, ff; sel op mode 3 29F3 FF db 0FFh ; 5b, ff; all inputs 29F4 97 db 97h ; 5b, 97; set interrupt control; mask follows, enable, or function, monitor for low 29F5 00 db 0 ; 5b, 00; all can generate interrupt 29F6 7E db 7Eh ; change 29F7 31 db 31h ; port; pio0bpActrl 29F8 0C db 0Ch ; 31, 0c; IM2 vector base 000ch 29F9 FF db 0FFh ; 31, ff; sel op mode 3 29FA 0E db 0Eh ; 31, 0e; b7,6,5,4,0 output; b3,2,1 input 29FB 97 db 97h ; 31, 97; set interrupt control; mask follows, enable, or function, monitor for low 29FC F1 db 0F1h ; 31, f1; b3,2,1 can generate interrupt 29FD 7E db 7Eh ; change 29FE 33 db 33h ; port; pio0bpBctrl 29FF 0E db 0Eh ; 33, 0e; IM2 vector base 000eh 2A00 FF db 0FFh ; 33, ff; set op mode 3 2A01 8E db 8Eh ; 33, 8e; b7,3,2,1 input; b6,5,4,0 output 2A02 97 db 97h ; 33, 97; set interrupt control; mask follows, enable, or function, monitor for low 2A03 79 db 79h ; 33, 79; b7,2,1 can generate interrupt 2A04 7F db 7Fh ; end! 2A05 AE brgDiv_2A05: db 174 ; ... 2A05 ; 110; XXX there are some doubts this works; might be 220 bps 2A06 80 db 128 ; 300 2A07 40 db 64 ; 600 2A08 20 db 32 ; 1200 2A09 10 db 16 ; 2400 2A0A 08 db 8 ; 4800 2A0B 02 db 2 ; 19200 2A0C 04 db 4 ; 9600 2A0D 18 dartAinit_2A0D: db 18h ; ... 2A0D ; dart A channel reset 2A0E 14 db 14h ; dart a ext/stat int reset, setup for reg 4 2A0F 84 db 84h ; x32 clock, 1 stop, no parity 2A10 13 db 13h ; dart A setup for reg 3 2A11 41 db 41h ; 7 bits/char, rx enable 2A12 15 db 15h ; dart a setup for reg 5 2A13 AA db 0AAh ; dtr, 7 bits/char, tx enable, rts 2A14 11 db 11h ; dart a setup for reg 1 2A15 18 db 18h ; int on all rx, parity does /not/ affect vector 2A16 2A16 ; =============== S U B R O U T I N E ======================================= 2A16 2A16 2A16 sub_2A16: ; ... 2A16 06 3C ld b, 60 2A18 2A18 loop_2A18: ; ... 2A18 CD EE 2A call sub_2AEE ; XXX read pio1fpB a lot 2A1B CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2A1E 10 F8 djnz loop_2A18 2A20 21 F4 01 ld hl, 1F4h 2A23 2A23 loc_2A23: ; ... 2A23 E5 push hl 2A24 06 FF ld b, 0FFh 2A26 2A26 loc_2A26: ; ... 2A26 DB 32 in a, (32h) ; XXX PIO0bp related 2A28 DB 32 in a, (32h) ; XXX PIO0bp related 2A2A DB 32 in a, (32h) ; XXX PIO0bp related 2A2C DB 32 in a, (32h) ; XXX PIO0bp related 2A2E CB 4F bit 1, a 2A30 28 0D jr z, loc_2A3F 2A32 10 F2 djnz loc_2A26 2A34 CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2A37 E1 pop hl 2A38 2B dec hl 2A39 7D ld a, l 2A3A B4 or h 2A3B 28 03 jr z, loc_2A40 2A3D 18 E4 jr loc_2A23 2A3F ; --------------------------------------------------------------------------- 2A3F 2A3F loc_2A3F: ; ... 2A3F E1 pop hl 2A40 2A40 loc_2A40: ; ... 2A40 C3 62 2A jp loc_2A62 2A43 ; --------------------------------------------------------------------------- 2A43 06 3C ld b, 3Ch ; '<' 2A45 2A45 loc_2A45: ; ... 2A45 CD EE 2A call sub_2AEE ; XXX read pio1fpB a lot 2A48 CD 63 2B call sub_2B63 2A4B 10 F8 djnz loc_2A45 2A4D 2A4D loc_2A4D: ; ... 2A4D 06 FF ld b, 0FFh 2A4F 2A4F loc_2A4F: ; ... 2A4F DB 5A in a, (5Ah) ; XXX PIO1fp related 2A51 DB 5A in a, (5Ah) ; XXX PIO1fp related 2A53 DB 5A in a, (5Ah) ; XXX PIO1fp related 2A55 DB 5A in a, (5Ah) ; XXX PIO1fp related 2A57 CB 5F bit 3, a 2A59 28 07 jr z, loc_2A62 2A5B 10 F2 djnz loc_2A4F 2A5D CD 63 2B call sub_2B63 2A60 18 EB jr loc_2A4D 2A62 ; --------------------------------------------------------------------------- 2A62 2A62 loc_2A62: ; ... 2A62 AF xor a 2A63 32 F3 C4 ld (unk_C4F3), a 2A66 32 C4 C5 ld (unk_C5C4), a 2A69 21 00 00 ld hl, 0 2A6C 22 67 C2 ld (byte_C267), hl 2A6F 22 69 C2 ld (word_C269), hl 2A72 22 6B C2 ld (unk_C26B), hl 2A75 22 6D C2 ld (unk_C26D), hl 2A78 22 6F C2 ld (unk_C26F), hl 2A7B 22 71 C2 ld (word_C271), hl 2A7E 22 B3 C4 ld (unk_C4B3), hl 2A81 22 B5 C4 ld (unk_C4B5), hl 2A84 22 7D C5 ld (unk_C57D), hl 2A87 22 7F C5 ld (unk_C57F), hl 2A8A 22 7B C5 ld (unk_C57B), hl 2A8D DD 21 74 C2 ld ix, unk_C274 2A91 21 00 00 ld hl, 0 2A94 CD C5 2A call sub_2AC5 2A97 21 30 00 ld hl, 30h ; '0' 2A9A CD C5 2A call sub_2AC5 2A9D 21 64 00 ld hl, 64h ; 'd' 2AA0 CD C5 2A call sub_2AC5 2AA3 21 94 00 ld hl, 94h ; '' 2AA6 CD C5 2A call sub_2AC5 2AA9 21 C8 00 ld hl, 0C8h ; '' 2AAC CD C5 2A call sub_2AC5 2AAF 21 F8 00 ld hl, 0F8h ; '' 2AB2 CD C5 2A call sub_2AC5 2AB5 21 2C 01 ld hl, 12Ch 2AB8 CD C5 2A call sub_2AC5 2ABB 21 5C 01 ld hl, 15Ch 2ABE CD C5 2A call sub_2AC5 2AC1 21 00 00 ld hl, 0 2AC4 C9 ret 2AC4 ; End of function sub_2A16 2AC4 2AC5 2AC5 ; =============== S U B R O U T I N E ======================================= 2AC5 2AC5 2AC5 sub_2AC5: ; ... 2AC5 DD 75 00 ld (ix+0), l 2AC8 DD 74 01 ld (ix+1), h 2ACB DD 23 inc ix 2ACD DD 23 inc ix 2ACF C9 ret 2ACF ; End of function sub_2AC5 2ACF 2AD0 ; --------------------------------------------------------------------------- 2AD0 21 F6 C4 ld hl, unk_C4F6 2AD3 36 00 ld (hl), 0 2AD5 23 inc hl 2AD6 36 0C ld (hl), 0Ch 2AD8 23 inc hl 2AD9 36 19 ld (hl), 19h 2ADB 23 inc hl 2ADC 36 25 ld (hl), 25h ; '%' 2ADE 23 inc hl 2ADF 36 32 ld (hl), 32h ; '2' 2AE1 23 inc hl 2AE2 36 3E ld (hl), 3Eh ; '>' 2AE4 23 inc hl 2AE5 36 4B ld (hl), 4Bh ; 'K' 2AE7 23 inc hl 2AE8 36 57 ld (hl), 57h ; 'W' 2AEA 21 00 00 ld hl, 0 2AED C9 ret 2AEE 2AEE ; =============== S U B R O U T I N E ======================================= 2AEE 2AEE ; XXX read pio1fpB a lot 2AEE 2AEE sub_2AEE: ; ... 2AEE F5 push af 2AEF C5 push bc 2AF0 06 FF ld b, 0FFh 2AF2 2AF2 loop_2AF2: ; ... 2AF2 DB 5A in a, (5Ah) ; XXX PIO1fpB whack 2AF4 DB 5A in a, (5Ah) ; XXX PIO1fpB whack 2AF6 DB 5A in a, (5Ah) ; XXX PIO1fpB whack 2AF8 DB 5A in a, (5Ah) ; XXX PIO1fpB whack 2AFA CB 57 bit 2, a ; this seems pointless because we pop af at the end, anyway 2AFC 00 nop 2AFD 00 nop 2AFE 00 nop 2AFF 00 nop 2B00 00 nop 2B01 10 EF djnz loop_2AF2 ; whack it 1020 times, cuz... 2B03 C1 pop bc 2B04 F1 pop af 2B05 C9 ret 2B05 ; End of function sub_2AEE 2B05 2B06 ; --------------------------------------------------------------------------- 2B06 06 07 ld b, 7 2B08 11 04 00 ld de, 4 2B0B 21 D7 C4 ld hl, unk_C4D7 2B0E 2B0E loc_2B0E: ; ... 2B0E C5 push bc 2B0F E5 push hl 2B10 D5 push de 2B11 CD E3 14 call sub_14E3 2B14 30 03 jr nc, loc_2B19 2B16 CD 42 2B call sub_2B42 2B19 2B19 loc_2B19: ; ... 2B19 D1 pop de 2B1A E1 pop hl 2B1B C1 pop bc 2B1C 19 add hl, de 2B1D 10 EF djnz loc_2B0E 2B1F 06 07 ld b, 7 2B21 11 04 00 ld de, 4 2B24 21 B7 C4 ld hl, unk_C4B7 2B27 2B27 loc_2B27: ; ... 2B27 C5 push bc 2B28 E5 push hl 2B29 D5 push de 2B2A CD 37 2B call sub_2B37 2B2D CC 42 2B call z, sub_2B42 2B30 D1 pop de 2B31 E1 pop hl 2B32 C1 pop bc 2B33 19 add hl, de 2B34 10 F1 djnz loc_2B27 2B36 C9 ret 2B37 2B37 ; =============== S U B R O U T I N E ======================================= 2B37 2B37 2B37 sub_2B37: ; ... 2B37 E5 push hl 2B38 DD E1 pop ix 2B3A FD 21 86 13 ld iy, byte_1386 2B3E CD DA 11 call sub_11DA 2B41 C9 ret 2B41 ; End of function sub_2B37 2B41 2B42 2B42 ; =============== S U B R O U T I N E ======================================= 2B42 2B42 2B42 sub_2B42: ; ... 2B42 DD 21 86 13 ld ix, byte_1386 2B46 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 2B49 C9 ret 2B49 ; End of function sub_2B42 2B49 2B4A ; --------------------------------------------------------------------------- 2B4A 21 B3 C4 ld hl, unk_C4B3 2B4D AF xor a 2B4E 06 40 ld b, 40h ; '@' 2B50 2B50 loc_2B50: ; ... 2B50 77 ld (hl), a 2B51 23 inc hl 2B52 10 FC djnz loc_2B50 2B54 C9 ret 2B55 2B55 ; =============== S U B R O U T I N E ======================================= 2B55 2B55 2B55 sub_2B55: 2B55 3E 01 ld a, 1 2B57 D3 32 out (32h), a ; XXX PIO0bp related 2B59 CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2B5C 21 8A 02 ld hl, 650 2B5F CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2B62 C9 ret 2B62 ; End of function sub_2B55 2B62 2B63 2B63 ; =============== S U B R O U T I N E ======================================= 2B63 2B63 2B63 sub_2B63: ; ... 2B63 3E 01 ld a, 1 2B65 CD 80 2B call nullsub_5 2B68 21 8A 02 ld hl, 650 2B6B CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2B6E C9 ret 2B6E ; End of function sub_2B63 2B6E 2B6F 2B6F ; =============== S U B R O U T I N E ======================================= 2B6F 2B6F 2B6F sub_2B6F: 2B6F 3E 01 ld a, 1 2B71 D3 32 out (32h), a ; XXX PIO0bp related 2B73 CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2B76 21 F4 01 ld hl, 500 2B79 CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2B7C C9 ret 2B7C ; End of function sub_2B6F 2B7C 2B7D 2B7D ; =============== S U B R O U T I N E ======================================= 2B7D 2B7D ; XXX eric's stepper thing? 2B7D 2B7D sub_2B7D: ; ... 2B7D D3 50 out (50h), a ; XXX L297 Stepper-Motor "Clock" 2B7F C9 ret 2B7F ; End of function sub_2B7D 2B7F 2B80 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD CTRL-"+" TO EXPAND] 2B81 2B81 ; =============== S U B R O U T I N E ======================================= 2B81 2B81 2B81 sub_2B81: ; ... 2B81 32 F4 C4 ld (unk_C4F4), a 2B84 21 74 C2 ld hl, unk_C274 2B87 16 00 ld d, 0 2B89 3A 67 C2 ld a, (byte_C267) 2B8C 5F ld e, a 2B8D EB ex de, hl 2B8E 29 add hl, hl 2B8F EB ex de, hl 2B90 19 add hl, de 2B91 E5 push hl 2B92 DD E1 pop ix 2B94 21 74 C2 ld hl, unk_C274 2B97 16 00 ld d, 0 2B99 3A F4 C4 ld a, (unk_C4F4) 2B9C 5F ld e, a 2B9D EB ex de, hl 2B9E 29 add hl, hl 2B9F EB ex de, hl 2BA0 19 add hl, de 2BA1 E5 push hl 2BA2 FD E1 pop iy 2BA4 DD 6E 00 ld l, (ix+0) 2BA7 DD 66 01 ld h, (ix+1) 2BAA FD 5E 00 ld e, (iy+0) 2BAD FD 56 01 ld d, (iy+1) 2BB0 AF xor a 2BB1 ED 52 sbc hl, de 2BB3 28 2A jr z, loc_2BDF 2BB5 38 2F jr c, loc_2BE6 2BB7 CD 64 2C call sub_2C64 2BBA 30 32 jr nc, loc_2BEE 2BBC 2BBC loc_2BBC: ; ... 2BBC CB C7 set 0, a 2BBE D3 32 out (32h), a ; XXX PIO0bp related 2BC0 2BC0 loc_2BC0: ; ... 2BC0 CD 41 2C call sub_2C41 2BC3 CA DF 2B jp z, loc_2BDF 2BC6 2BC6 loc_2BC6: ; ... 2BC6 E5 push hl 2BC7 CD EE 2A call sub_2AEE ; XXX read pio1fpB a lot 2BCA CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2BCD 21 8A 02 ld hl, 650 2BD0 CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2BD3 E1 pop hl 2BD4 2B dec hl 2BD5 7D ld a, l 2BD6 B4 or h 2BD7 20 ED jr nz, loc_2BC6 2BD9 2A 69 C2 ld hl, (word_C269) 2BDC 22 67 C2 ld (byte_C267), hl 2BDF 2BDF loc_2BDF: ; ... 2BDF 21 E8 03 ld hl, 1000 2BE2 CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2BE5 C9 ret 2BE6 ; --------------------------------------------------------------------------- 2BE6 2BE6 loc_2BE6: ; ... 2BE6 CD 7C 2C call sub_2C7C 2BE9 CD 64 2C call sub_2C64 2BEC 30 CE jr nc, loc_2BBC 2BEE 2BEE loc_2BEE: ; ... 2BEE CB 87 res 0, a 2BF0 D3 32 out (32h), a ; XXX PIO0bp related 2BF2 18 CC jr loc_2BC0 2BF2 ; End of function sub_2B81 2BF2 2BF4 2BF4 ; =============== S U B R O U T I N E ======================================= 2BF4 2BF4 2BF4 sub_2BF4: ; ... 2BF4 ED 5B 6F C2 ld de, (unk_C26F) 2BF8 2A 71 C2 ld hl, (word_C271) 2BFB AF xor a 2BFC ED 52 sbc hl, de 2BFE CA 2C 2C jp z, loc_2C2C 2C01 DA 33 2C jp c, loc_2C33 2C04 CD 64 2C call sub_2C64 2C07 30 32 jr nc, loc_2C3B 2C09 2C09 loc_2C09: ; ... 2C09 CB 87 res 0, a 2C0B D3 32 out (32h), a ; XXX PIO0bp related 2C0D 2C0D loc_2C0D: ; ... 2C0D CD 41 2C call sub_2C41 2C10 CA 2C 2C jp z, loc_2C2C 2C13 2C13 loc_2C13: ; ... 2C13 E5 push hl 2C14 CD EE 2A call sub_2AEE ; XXX read pio1fpB a lot 2C17 CD 7D 2B call sub_2B7D ; XXX eric's stepper thing? 2C1A 21 F4 01 ld hl, 500 2C1D CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2C20 E1 pop hl 2C21 2B dec hl 2C22 7D ld a, l 2C23 B4 or h 2C24 20 ED jr nz, loc_2C13 2C26 2A 71 C2 ld hl, (word_C271) 2C29 22 6F C2 ld (unk_C26F), hl 2C2C 2C2C loc_2C2C: ; ... 2C2C 21 E8 03 ld hl, 1000 2C2F CD F2 08 call delay_8F2 ; XXX delay by expensively decrementing HL to zero 2C32 C9 ret 2C33 ; --------------------------------------------------------------------------- 2C33 2C33 loc_2C33: ; ... 2C33 CD 7C 2C call sub_2C7C 2C36 CD 64 2C call sub_2C64 2C39 30 CE jr nc, loc_2C09 2C3B 2C3B loc_2C3B: ; ... 2C3B CB C7 set 0, a 2C3D D3 32 out (32h), a ; XXX PIO0bp related 2C3F 18 CC jr loc_2C0D 2C3F ; End of function sub_2BF4 2C3F 2C41 2C41 ; =============== S U B R O U T I N E ======================================= 2C41 2C41 2C41 sub_2C41: ; ... 2C41 7D ld a, l 2C42 B4 or h 2C43 C9 ret 2C43 ; End of function sub_2C41 2C43 2C44 2C44 ; =============== S U B R O U T I N E ======================================= 2C44 2C44 2C44 sub_2C44: 2C44 E5 push hl 2C45 D5 push de 2C46 C5 push bc 2C47 DD E5 push ix 2C49 FD E5 push iy 2C4B F5 push af 2C4C 22 41 C2 ld (word_C241), hl 2C4F 21 00 00 ld hl, 0 2C52 22 43 C2 ld (word_C243), hl 2C55 21 41 C2 ld hl, word_C241 2C58 CD AA 1E call sub_1EAA 2C5B F1 pop af 2C5C FD E1 pop iy 2C5E DD E1 pop ix 2C60 C1 pop bc 2C61 D1 pop de 2C62 E1 pop hl 2C63 C9 ret 2C63 ; End of function sub_2C44 2C63 2C64 2C64 ; =============== S U B R O U T I N E ======================================= 2C64 2C64 2C64 sub_2C64: ; ... 2C64 D5 push de 2C65 E5 push hl 2C66 11 C8 00 ld de, 200 2C69 EB ex de, hl 2C6A AF xor a 2C6B ED 52 sbc hl, de 2C6D 38 03 jr c, loc_2C72 2C6F E1 pop hl 2C70 D1 pop de 2C71 C9 ret 2C72 ; --------------------------------------------------------------------------- 2C72 2C72 loc_2C72: ; ... 2C72 21 90 01 ld hl, 400 2C75 AF xor a 2C76 ED 52 sbc hl, de 2C78 37 scf 2C79 D1 pop de 2C7A D1 pop de 2C7B C9 ret 2C7B ; End of function sub_2C64 2C7B 2C7C 2C7C ; =============== S U B R O U T I N E ======================================= 2C7C 2C7C 2C7C sub_2C7C: ; ... 2C7C D5 push de 2C7D EB ex de, hl 2C7E 21 00 00 ld hl, 0 2C81 AF xor a 2C82 ED 52 sbc hl, de 2C84 D1 pop de 2C85 C9 ret 2C85 ; End of function sub_2C7C 2C85 2C86 2C86 ; =============== S U B R O U T I N E ======================================= 2C86 2C86 2C86 sub_2C86: ; ... 2C86 E5 push hl 2C87 C5 push bc 2C88 D5 push de 2C89 DD E5 push ix 2C8B FD E5 push iy 2C8D AF xor a 2C8E 32 06 C5 ld (unk_C506), a 2C91 32 07 C5 ld (unk_C507), a 2C94 32 0C C5 ld (byte_C50C), a 2C97 DD 21 B3 C4 ld ix, unk_C4B3 2C9B 0E 00 ld c, 0 2C9D 06 08 ld b, 8 2C9F 2C9F loc_2C9F: ; ... 2C9F CD D9 2C call sub_2CD9 2CA2 28 0A jr z, loc_2CAE 2CA4 E5 push hl 2CA5 FD E1 pop iy 2CA7 CD DA 11 call sub_11DA 2CAA 30 21 jr nc, loc_2CCD 2CAC 38 25 jr c, loc_2CD3 2CAE 2CAE loc_2CAE: ; ... 2CAE 0C inc c 2CAF 11 04 00 ld de, 4 2CB2 DD 19 add ix, de 2CB4 10 E9 djnz loc_2C9F 2CB6 2CB6 loc_2CB6: ; ... 2CB6 3A 07 C5 ld a, (unk_C507) 2CB9 26 00 ld h, 0 2CBB 6F ld l, a 2CBC 22 69 C2 ld (word_C269), hl 2CBF CD 81 2B call sub_2B81 2CC2 CD E9 2C call sub_2CE9 2CC5 FD E1 pop iy 2CC7 DD E1 pop ix 2CC9 D1 pop de 2CCA C1 pop bc 2CCB E1 pop hl 2CCC C9 ret 2CCD ; --------------------------------------------------------------------------- 2CCD 2CCD loc_2CCD: ; ... 2CCD 79 ld a, c 2CCE 32 06 C5 ld (unk_C506), a 2CD1 18 E3 jr loc_2CB6 2CD3 ; --------------------------------------------------------------------------- 2CD3 2CD3 loc_2CD3: ; ... 2CD3 79 ld a, c 2CD4 32 07 C5 ld (unk_C507), a 2CD7 18 D5 jr loc_2CAE 2CD7 ; End of function sub_2C86 2CD7 2CD9 2CD9 ; =============== S U B R O U T I N E ======================================= 2CD9 2CD9 2CD9 sub_2CD9: ; ... 2CD9 DD E5 push ix 2CDB FD E5 push iy 2CDD FD 21 86 13 ld iy, byte_1386 2CE1 CD DA 11 call sub_11DA 2CE4 FD E1 pop iy 2CE6 DD E1 pop ix 2CE8 C9 ret 2CE8 ; End of function sub_2CD9 2CE8 2CE9 2CE9 ; =============== S U B R O U T I N E ======================================= 2CE9 2CE9 2CE9 sub_2CE9: ; ... 2CE9 ED 5B 67 C2 ld de, (byte_C267) 2CED 16 00 ld d, 0 2CEF 21 B3 C4 ld hl, unk_C4B3 2CF2 19 add hl, de 2CF3 19 add hl, de 2CF4 19 add hl, de 2CF5 19 add hl, de 2CF6 E5 push hl 2CF7 CD FF 2C call sub_2CFF 2CFA E1 pop hl 2CFB CD 75 2D call sub_2D75 2CFE C9 ret 2CFE ; End of function sub_2CE9 2CFE 2CFF 2CFF ; =============== S U B R O U T I N E ======================================= 2CFF 2CFF 2CFF sub_2CFF: ; ... 2CFF AF xor a 2D00 3E 07 ld a, 7 2D02 9B sbc a, e 2D03 47 ld b, a 2D04 FE 00 cp 0 2D06 28 5D jr z, loc_2D65 2D08 2D08 loc_2D08: ; ... 2D08 11 04 00 ld de, 4 2D0B 19 add hl, de 2D0C E5 push hl 2D0D E5 push hl 2D0E DD E1 pop ix 2D10 CD D9 2C call sub_2CD9 2D13 28 4D jr z, loc_2D62 2D15 21 FE C4 ld hl, unk_C4FE 2D18 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 2D1B 11 20 00 ld de, 20h ; ' ' 2D1E DD 19 add ix, de 2D20 21 0F C5 ld hl, unk_C50F 2D23 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 2D26 78 ld a, b 2D27 DE 07 sbc a, 7 2D29 ED 44 neg 2D2B 3C inc a 2D2C 32 0D C5 ld (byte_C50D), a 2D2F DD E5 push ix 2D31 FD E5 push iy 2D33 DD 21 0F C5 ld ix, unk_C50F 2D37 FD 21 D9 C3 ld iy, unk_C3D9 2D3B CD DA 11 call sub_11DA 2D3E FD E1 pop iy 2D40 DD E1 pop ix 2D42 38 17 jr c, loc_2D5B 2D44 DD E5 push ix 2D46 FD E5 push iy 2D48 FD 21 DD C3 ld iy, unk_C3DD 2D4C DD 21 0F C5 ld ix, unk_C50F 2D50 CD DA 11 call sub_11DA 2D53 FD E1 pop iy 2D55 DD E1 pop ix 2D57 30 02 jr nc, loc_2D5B 2D59 E1 pop hl 2D5A C9 ret 2D5B ; --------------------------------------------------------------------------- 2D5B 2D5B loc_2D5B: ; ... 2D5B AF xor a 2D5C B8 cp b 2D5D 20 03 jr nz, loc_2D62 2D5F E1 pop hl 2D60 18 03 jr loc_2D65 2D62 ; --------------------------------------------------------------------------- 2D62 2D62 loc_2D62: ; ... 2D62 E1 pop hl 2D63 10 A3 djnz loc_2D08 2D65 2D65 loc_2D65: ; ... 2D65 21 00 00 ld hl, 0 2D68 22 FE C4 ld (unk_C4FE), hl 2D6B 22 00 C5 ld (unk_C500), hl 2D6E 22 0F C5 ld (unk_C50F), hl 2D71 22 11 C5 ld (unk_C511), hl 2D74 C9 ret 2D74 ; End of function sub_2CFF 2D74 2D75 2D75 ; =============== S U B R O U T I N E ======================================= 2D75 2D75 2D75 sub_2D75: ; ... 2D75 3A 67 C2 ld a, (byte_C267) 2D78 FE 00 cp 0 2D7A 28 3C jr z, loc_2DB8 2D7C E5 push hl 2D7D FD E1 pop iy 2D7F 47 ld b, a 2D80 2D80 loc_2D80: ; ... 2D80 22 BA C5 ld (unk_C5BA), hl 2D83 AF xor a 2D84 11 04 00 ld de, 4 2D87 ED 52 sbc hl, de 2D89 E5 push hl 2D8A E5 push hl 2D8B DD E1 pop ix 2D8D CD D9 2C call sub_2CD9 2D90 28 23 jr z, loc_2DB5 2D92 CD C0 2D call sub_2DC0 2D95 38 17 jr c, loc_2DAE 2D97 DD E5 push ix 2D99 FD E5 push iy 2D9B FD 21 13 C5 ld iy, unk_C513 2D9F DD 21 DD C3 ld ix, unk_C3DD 2DA3 CD DA 11 call sub_11DA 2DA6 FD E1 pop iy 2DA8 DD E1 pop ix 2DAA 30 02 jr nc, loc_2DAE 2DAC E1 pop hl 2DAD C9 ret 2DAE ; --------------------------------------------------------------------------- 2DAE 2DAE loc_2DAE: ; ... 2DAE AF xor a 2DAF B8 cp b 2DB0 20 03 jr nz, loc_2DB5 2DB2 E1 pop hl 2DB3 18 03 jr loc_2DB8 2DB5 ; --------------------------------------------------------------------------- 2DB5 2DB5 loc_2DB5: ; ... 2DB5 E1 pop hl 2DB6 10 C8 djnz loc_2D80 2DB8 2DB8 loc_2DB8: ; ... 2DB8 CD C0 2D call sub_2DC0 2DBB AF xor a 2DBC 32 0E C5 ld (byte_C50E), a 2DBF C9 ret 2DBF ; End of function sub_2D75 2DBF 2DC0 2DC0 ; =============== S U B R O U T I N E ======================================= 2DC0 2DC0 2DC0 sub_2DC0: ; ... 2DC0 21 02 C5 ld hl, unk_C502 2DC3 FD E5 push iy 2DC5 DD E1 pop ix 2DC7 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 2DCA 11 20 00 ld de, 20h ; ' ' 2DCD DD 19 add ix, de 2DCF 21 13 C5 ld hl, unk_C513 2DD2 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 2DD5 05 dec b 2DD6 78 ld a, b 2DD7 32 0E C5 ld (byte_C50E), a 2DDA DD E5 push ix 2DDC FD E5 push iy 2DDE DD 21 D9 C3 ld ix, unk_C3D9 2DE2 FD 21 13 C5 ld iy, unk_C513 2DE6 CD DA 11 call sub_11DA 2DE9 FD E1 pop iy 2DEB DD E1 pop ix 2DED C9 ret 2DED ; End of function sub_2DC0 2DED 2DEE ; --------------------------------------------------------------------------- 2DEE ; START OF FUNCTION CHUNK FOR sub_327F 2DEE 2DEE loc_2DEE: ; ... 2DEE DD 21 B3 17 ld ix, zeros_17AF+4 2DF2 FD 21 0F C5 ld iy, unk_C50F 2DF6 CD DA 11 call sub_11DA 2DF9 CA B1 32 jp z, loc_32B1 2DFC 21 D5 C3 ld hl, unk_C3D5 2DFF CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2E02 21 FD C3 ld hl, unk_C3FD 2E05 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2E08 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 2E0B 21 17 C5 ld hl, unk_C517 2E0E CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2E11 21 0F C5 ld hl, unk_C50F 2E14 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2E17 CD B7 15 call sub_15B7 2E1A 30 03 jr nc, loc_2E1F 2E1C C3 B1 32 jp loc_32B1 2E1F ; --------------------------------------------------------------------------- 2E1F 2E1F loc_2E1F: ; ... 2E1F 21 1B C5 ld hl, unk_C51B 2E22 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2E25 21 0F C5 ld hl, unk_C50F 2E28 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2E2B 21 D5 C3 ld hl, unk_C3D5 2E2E CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2E31 CD B7 15 call sub_15B7 2E34 E5 push hl 2E35 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 2E38 22 87 C4 ld (word_C487), hl 2E3B 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 2E3E 22 89 C4 ld (word_C489), hl 2E41 E1 pop hl 2E42 CD C5 07 call sub_7C5 2E45 CD 67 06 call sub_667 2E48 CD 7A 30 call sub_307A 2E4B E5 push hl 2E4C D5 push de 2E4D 3A 0D C5 ld a, (byte_C50D) 2E50 26 00 ld h, 0 2E52 6F ld l, a 2E53 22 69 C2 ld (word_C269), hl 2E56 CD 81 2B call sub_2B81 2E59 D1 pop de 2E5A E1 pop hl 2E5B CD E9 2C call sub_2CE9 2E5E DD 21 B3 17 ld ix, zeros_17AF+4 2E62 FD 21 0F C5 ld iy, unk_C50F 2E66 CD DA 11 call sub_11DA 2E69 28 12 jr z, loc_2E7D 2E6B 21 17 C5 ld hl, unk_C517 2E6E CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2E71 21 0F C5 ld hl, unk_C50F 2E74 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2E77 CD B7 15 call sub_15B7 2E7A D2 1F 2E jp nc, loc_2E1F 2E7D 2E7D loc_2E7D: ; ... 2E7D E5 push hl 2E7E 2A 1B C5 ld hl, (unk_C51B) 2E81 22 87 C4 ld (word_C487), hl 2E84 2A 1D C5 ld hl, (unk_C51D) 2E87 22 89 C4 ld (word_C489), hl 2E8A E1 pop hl 2E8B C3 BF 32 jp loc_32BF 2E8E ; --------------------------------------------------------------------------- 2E8E 2E8E loc_2E8E: ; ... 2E8E DD 21 B3 17 ld ix, zeros_17AF+4 2E92 FD 21 0F C5 ld iy, unk_C50F 2E96 CD DA 11 call sub_11DA 2E99 CA 00 33 jp z, loc_3300 2E9C 21 DD C3 ld hl, unk_C3DD 2E9F CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2EA2 21 0F C5 ld hl, unk_C50F 2EA5 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2EA8 CD B7 15 call sub_15B7 2EAB 30 03 jr nc, loc_2EB0 2EAD C3 00 33 jp loc_3300 2EB0 ; --------------------------------------------------------------------------- 2EB0 2EB0 loc_2EB0: ; ... 2EB0 21 1B C5 ld hl, unk_C51B 2EB3 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2EB6 21 0F C5 ld hl, unk_C50F 2EB9 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2EBC 21 D5 C3 ld hl, unk_C3D5 2EBF CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2EC2 CD B7 15 call sub_15B7 2EC5 E5 push hl 2EC6 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 2EC9 22 87 C4 ld (word_C487), hl 2ECC 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 2ECF 22 89 C4 ld (word_C489), hl 2ED2 E1 pop hl 2ED3 CD C5 07 call sub_7C5 2ED6 CD 67 06 call sub_667 2ED9 CD 7A 30 call sub_307A 2EDC E5 push hl 2EDD D5 push de 2EDE 3A 0D C5 ld a, (byte_C50D) 2EE1 26 00 ld h, 0 2EE3 6F ld l, a 2EE4 22 69 C2 ld (word_C269), hl 2EE7 CD 81 2B call sub_2B81 2EEA D1 pop de 2EEB E1 pop hl 2EEC CD E9 2C call sub_2CE9 2EEF DD 21 B3 17 ld ix, zeros_17AF+4 2EF3 FD 21 0F C5 ld iy, unk_C50F 2EF7 CD DA 11 call sub_11DA 2EFA 28 12 jr z, loc_2F0E 2EFC 21 DD C3 ld hl, unk_C3DD 2EFF CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2F02 21 0F C5 ld hl, unk_C50F 2F05 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2F08 CD B7 15 call sub_15B7 2F0B D2 B0 2E jp nc, loc_2EB0 2F0E 2F0E loc_2F0E: ; ... 2F0E E5 push hl 2F0F 2A 1B C5 ld hl, (unk_C51B) 2F12 22 87 C4 ld (word_C487), hl 2F15 2A 1D C5 ld hl, (unk_C51D) 2F18 22 89 C4 ld (word_C489), hl 2F1B E1 pop hl 2F1C C3 0E 33 jp loc_330E 2F1C ; END OF FUNCTION CHUNK FOR sub_327F 2F1F ; --------------------------------------------------------------------------- 2F1F ; START OF FUNCTION CHUNK FOR sub_3341 2F1F 2F1F loc_2F1F: ; ... 2F1F DD 21 B3 17 ld ix, zeros_17AF+4 2F23 FD 21 13 C5 ld iy, unk_C513 2F27 CD DA 11 call sub_11DA 2F2A CA BB 33 jp z, loc_33BB 2F2D 3A 67 C2 ld a, (byte_C267) 2F30 FE 00 cp 0 2F32 CA BB 33 jp z, loc_33BB 2F35 21 D5 C3 ld hl, unk_C3D5 2F38 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2F3B 21 FD C3 ld hl, unk_C3FD 2F3E CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2F41 CD B7 15 call sub_15B7 2F44 21 17 C5 ld hl, unk_C517 2F47 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2F4A 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 2F4D CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2F50 21 13 C5 ld hl, unk_C513 2F53 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2F56 CD B7 15 call sub_15B7 2F59 30 03 jr nc, loc_2F5E 2F5B C3 BB 33 jp loc_33BB 2F5E ; --------------------------------------------------------------------------- 2F5E 2F5E loc_2F5E: ; ... 2F5E 21 1B C5 ld hl, unk_C51B 2F61 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2F64 21 13 C5 ld hl, unk_C513 2F67 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2F6A 21 D5 C3 ld hl, unk_C3D5 2F6D CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2F70 CD B7 15 call sub_15B7 2F73 E5 push hl 2F74 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 2F77 22 87 C4 ld (word_C487), hl 2F7A 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 2F7D 22 89 C4 ld (word_C489), hl 2F80 E1 pop hl 2F81 CD B8 07 call sub_7B8 2F84 CD 67 06 call sub_667 2F87 CD 93 30 call sub_3093 2F8A E5 push hl 2F8B D5 push de 2F8C 3A 0E C5 ld a, (byte_C50E) 2F8F 26 00 ld h, 0 2F91 6F ld l, a 2F92 22 69 C2 ld (word_C269), hl 2F95 CD 81 2B call sub_2B81 2F98 D1 pop de 2F99 E1 pop hl 2F9A 3A 0E C5 ld a, (byte_C50E) 2F9D FE 00 cp 0 2F9F 28 22 jr z, loc_2FC3 2FA1 CD E9 2C call sub_2CE9 2FA4 DD 21 B3 17 ld ix, zeros_17AF+4 2FA8 FD 21 13 C5 ld iy, unk_C513 2FAC CD DA 11 call sub_11DA 2FAF 28 12 jr z, loc_2FC3 2FB1 21 17 C5 ld hl, unk_C517 2FB4 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2FB7 21 13 C5 ld hl, unk_C513 2FBA CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2FBD CD B7 15 call sub_15B7 2FC0 D2 5E 2F jp nc, loc_2F5E 2FC3 2FC3 loc_2FC3: ; ... 2FC3 E5 push hl 2FC4 2A 1B C5 ld hl, (unk_C51B) 2FC7 22 87 C4 ld (word_C487), hl 2FCA 2A 1D C5 ld hl, (unk_C51D) 2FCD 22 89 C4 ld (word_C489), hl 2FD0 E1 pop hl 2FD1 C3 C9 33 jp loc_33C9 2FD4 ; --------------------------------------------------------------------------- 2FD4 2FD4 loc_2FD4: ; ... 2FD4 DD 21 B3 17 ld ix, zeros_17AF+4 2FD8 FD 21 13 C5 ld iy, unk_C513 2FDC CD DA 11 call sub_11DA 2FDF CA 62 33 jp z, loc_3362 2FE2 21 D9 C3 ld hl, unk_C3D9 2FE5 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 2FE8 21 0D C4 ld hl, unk_C40D 2FEB CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2FEE CD B7 15 call sub_15B7 2FF1 21 17 C5 ld hl, unk_C517 2FF4 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 2FF7 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 2FFA CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 2FFD 21 13 C5 ld hl, unk_C513 3000 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3003 CD B7 15 call sub_15B7 3006 30 03 jr nc, loc_300B 3008 C3 62 33 jp loc_3362 300B ; --------------------------------------------------------------------------- 300B 300B loc_300B: ; ... 300B 21 1B C5 ld hl, unk_C51B 300E CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3011 21 13 C5 ld hl, unk_C513 3014 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3017 21 D5 C3 ld hl, unk_C3D5 301A CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 301D CD B7 15 call sub_15B7 3020 E5 push hl 3021 2A BD C3 ld hl, (dword_C3BD) ; XXX might actually be 48 bits 3024 22 87 C4 ld (word_C487), hl 3027 2A BF C3 ld hl, (dword_C3BD+2) ; XXX might actually be 48 bits 302A 22 89 C4 ld (word_C489), hl 302D E1 pop hl 302E CD B8 07 call sub_7B8 3031 CD 67 06 call sub_667 3034 CD 93 30 call sub_3093 3037 E5 push hl 3038 D5 push de 3038 ; END OF FUNCTION CHUNK FOR sub_3341 3038 ; --------------------------------------------------------------------------- 3039 3A db 3Ah 303A ; --------------------------------------------------------------------------- 303A 0E C5 ld c, 0C5h ; '' 303C 26 00 ld h, 0 303E 6F ld l, a 303F 22 69 C2 ld (word_C269), hl 3042 CD 81 2B call sub_2B81 3045 D1 pop de 3046 E1 pop hl 3047 CD E9 2C call sub_2CE9 304A DD 21 B3 17 ld ix, zeros_17AF+4 304E FD 21 13 C5 ld iy, unk_C513 3052 CD DA 11 call sub_11DA 3055 28 12 jr z, loc_3069 3057 21 D9 C3 ld hl, unk_C3D9 305A CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 305D 21 13 C5 ld hl, unk_C513 3060 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3063 CD B7 15 call sub_15B7 3066 D2 0B 30 jp nc, loc_300B 3069 3069 loc_3069: ; ... 3069 E5 push hl 306A 2A 1B C5 ld hl, (unk_C51B) 306D 22 87 C4 ld (word_C487), hl 3070 2A 1D C5 ld hl, (unk_C51D) 3073 22 89 C4 ld (word_C489), hl 3076 E1 pop hl 3077 C3 70 33 jp loc_3370 307A 307A ; =============== S U B R O U T I N E ======================================= 307A 307A 307A sub_307A: ; ... 307A 21 D5 C3 ld hl, unk_C3D5 307D CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3080 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 3083 21 41 C2 ld hl, word_C241 3086 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3089 CD 96 13 call sub_1396 308C 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 308F CD 90 1E call sub_1E90 3092 C9 ret 3092 ; End of function sub_307A 3092 3093 3093 ; =============== S U B R O U T I N E ======================================= 3093 3093 3093 sub_3093: ; ... 3093 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 3096 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3099 3099 loc_3099: ; ... 3099 21 D5 C3 ld hl, unk_C3D5 309C CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 309F CD B7 15 call sub_15B7 30A2 21 41 C2 ld hl, word_C241 30A5 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 30A8 CD 96 13 call sub_1396 30AB 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 30AE CD 90 1E call sub_1E90 30B1 C9 ret 30B1 ; End of function sub_3093 30B1 30B2 30B2 ; =============== S U B R O U T I N E ======================================= 30B2 30B2 30B2 sub_30B2: 30B2 21 1B C5 ld hl, unk_C51B 30B5 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 30B8 C3 7A 30 jp sub_307A 30B8 ; End of function sub_30B2 30B8 30BB 30BB ; =============== S U B R O U T I N E ======================================= 30BB 30BB 30BB sub_30BB: 30BB 21 1B C5 ld hl, unk_C51B 30BE CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 30C1 C3 99 30 jp loc_3099 30C1 ; End of function sub_30BB 30C1 30C4 30C4 ; =============== S U B R O U T I N E ======================================= 30C4 30C4 ; XXX handle button SCAN 30C4 30C4 btnScan_30C4: ; ... 30C4 CD D6 1B call buzzer_1BD6 ; buzz for (c23ah) times 30C7 F3 di 30C8 3A 3C C2 ld a, (byte_C23C) ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag 30CB 32 39 C4 ld (byte_C439), a 30CE AF xor a 30CF 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 30D2 FB ei 30D3 CD B0 1F call sub_1FB0 30D6 CD B3 24 call sub_24B3 ; XXX set mode button handlers to the ???unknown??? mode 30D9 CD 21 08 call sub_821 ; XXX test some byte C4AD and set carry if zero 30DC DA 4C 36 jp c, loc_364C 30DF AF xor a 30E0 32 3A C5 ld (byte_C53A), a ; XXX flags; 5 4 3 2 1 30E3 21 D9 C3 ld hl, unk_C3D9 30E6 CD E3 14 call sub_14E3 30E9 DC 1E 36 call c, sub_361E 30EC 21 DD C3 ld hl, unk_C3DD 30EF CD E3 14 call sub_14E3 30F2 DC 29 36 call c, sub_3629 30F5 CD 89 35 call sub_3589 30F8 CD 5B 35 call sub_355B 30FB 21 05 C4 ld hl, unk_C405 30FE CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3101 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 3104 CD 4A 12 call sub_124A 3107 CC 34 36 call z, sub_3634 310A 2A 4D C2 ld hl, (word_C24D) 310D 01 00 00 ld bc, 0 3110 B7 or a 3111 ED 42 sbc hl, bc 3113 CC DC 35 call z, sub_35DC 3116 2A 4D C2 ld hl, (word_C24D) 3119 ED 4B 2B 0D ld bc, (word_D2B) 311D B7 or a 311E ED 42 sbc hl, bc 3120 D4 3C 36 call nc, sub_363C 3123 DD 21 05 C4 ld ix, unk_C405 3127 FD 21 FD C3 ld iy, unk_C3FD 312B CD DA 11 call sub_11DA 312E DC 34 36 call c, sub_3634 3131 21 55 C2 ld hl, word_C255 3134 CD 4A 12 call sub_124A 3137 CC CD 35 call z, sub_35CD 313A E5 push hl 313B FD E1 pop iy 313D DD 21 D3 0C ld ix, loc_CD3 3141 CD DA 11 call sub_11DA 3144 DC 44 36 call c, sub_3644 3147 3A 3A C5 ld a, (byte_C53A) ; XXX flags; 5 4 3 2 1 314A FE 00 cp 0 314C C2 C3 31 jp nz, loc_31C3 314F 21 05 C4 ld hl, unk_C405 3152 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3155 21 FD C3 ld hl, unk_C3FD 3158 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 315B CD 2C 16 call sub_162C 315E 21 01 C4 ld hl, unk_C401 3161 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3164 CD D2 15 call sub_15D2 3167 21 BD C3 ld hl, dword_C3BD ; XXX might actually be 48 bits 316A CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 316D 21 05 C4 ld hl, unk_C405 3170 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3173 CD B7 15 call sub_15B7 3176 21 0D C4 ld hl, unk_C40D 3179 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 317C CD 29 35 call sub_3529 317F 21 4D C2 ld hl, word_C24D 3182 34 inc (hl) 3183 3183 loc_3183: ; ... 3183 CD 2A 20 call sub_202A 3186 2A 4D C2 ld hl, (word_C24D) 3189 2B dec hl 318A 22 4D C2 ld (word_C24D), hl 318D CD AE 35 call sub_35AE 3190 AF xor a 3191 B4 or h 3192 B5 or l 3193 28 11 jr z, loc_31A6 3195 CD 20 20 call sub_2020 3198 3A 40 C2 ld a, (byte_C240) 319B 32 8D C4 ld (byte_C48D), a 319E FE 01 cp 1 31A0 CA 24 32 jp z, loc_3224 31A3 C3 CC 31 jp loc_31CC 31A3 ; End of function btnScan_30C4 31A3 31A6 ; --------------------------------------------------------------------------- 31A6 ; START OF FUNCTION CHUNK FOR sub_34AC 31A6 31A6 loc_31A6: ; ... 31A6 F3 di 31A7 AF xor a 31A8 32 5E C2 ld (byte_C25E), a ; XXX some sort of flag 31AB 32 5D C2 ld (byte_C25D), a ; XXX some sort of flag 31AE 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 31B1 FB ei 31B2 CD 2A 20 call sub_202A 31B5 CD 51 20 call sub_2051 31B8 3A 8D C4 ld a, (byte_C48D) 31BB FE 00 cp 0 31BD C4 37 06 call nz, sub_637 31C0 C3 F7 0E jp loc_EF7 31C0 ; END OF FUNCTION CHUNK FOR sub_34AC 31C3 ; --------------------------------------------------------------------------- 31C3 ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 31C3 31C3 loc_31C3: ; ... 31C3 21 57 10 ld hl, lcdstrScanStartFailed_1057 31C6 CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 31C9 C3 55 36 jp loc_3655 31CC ; --------------------------------------------------------------------------- 31CC 31CC loc_31CC: ; ... 31CC 21 E9 C3 ld hl, 0C3E9h 31CF CD 90 1E call sub_1E90 31D2 3A C2 C5 ld a, (byte_C5C2) 31D5 FE FF cp 0FFh 31D7 28 16 jr z, loc_31EF 31D9 21 E9 C3 ld hl, 0C3E9h 31DC CD 86 2C call sub_2C86 31DF 21 08 C5 ld hl, 0C508h 31E2 DD 21 FE C4 ld ix, 0C4FEh 31E6 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 31E9 3A 0D C5 ld a, (byte_C50D) 31EC 32 0C C5 ld (byte_C50C), a 31EF 31EF loc_31EF: ; ... 31EF CD 7E 32 call nullsub_3 31F2 CD EF 35 call sub_35EF 31F5 AF xor a 31F6 32 1F C5 ld (byte_C51F), a 31F9 21 D9 C3 ld hl, 0C3D9h 31FC CD 28 05 call sub_528 31FF 21 D5 C3 ld hl, 0C3D5h 3202 DD 21 D9 C3 ld ix, 0C3D9h 3206 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3209 FE 01 cp 1 320B F5 push af 320C CC E1 05 call z, sub_5E1 320F F1 pop af 3210 FE 02 cp 2 3212 CC 81 05 call z, sub_581 3215 CD F7 35 call sub_35F7 3218 CD 7F 32 call sub_327F 321B CD 4E 35 call sub_354E 321E CD 91 34 call sub_3491 3221 C3 83 31 jp loc_3183 3224 ; --------------------------------------------------------------------------- 3224 3224 loc_3224: ; ... 3224 21 E9 C3 ld hl, 0C3E9h 3227 CD 90 1E call sub_1E90 322A 3A C2 C5 ld a, (byte_C5C2) 322D FE FF cp 0FFh 322F 28 16 jr z, loc_3247 3231 21 E9 C3 ld hl, 0C3E9h 3234 CD 86 2C call sub_2C86 3237 21 08 C5 ld hl, 0C508h 323A DD 21 02 C5 ld ix, 0C502h 323E CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3241 3A 0E C5 ld a, (byte_C50E) 3244 32 0C C5 ld (byte_C50C), a 3247 3247 loc_3247: ; ... 3247 CD 7E 32 call nullsub_3 324A CD EF 35 call sub_35EF 324D AF xor a 324E 32 1F C5 ld (byte_C51F), a 3251 21 D9 C3 ld hl, 0C3D9h 3254 CD 28 05 call sub_528 3257 E5 push hl 3258 21 D5 C3 ld hl, 0C3D5h 325B DD 21 D9 C3 ld ix, 0C3D9h 325F CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3262 E1 pop hl 3263 FE 01 cp 1 3265 F5 push af 3266 CC E1 05 call z, sub_5E1 3269 F1 pop af 326A FE 02 cp 2 326C CC 81 05 call z, sub_581 326F CD F7 35 call sub_35F7 3272 CD 41 33 call sub_3341 3275 CD 4E 35 call sub_354E 3278 CD 91 34 call sub_3491 327B C3 83 31 jp loc_3183 327B ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 327E ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD CTRL-"+" TO EXPAND] 327F 327F ; =============== S U B R O U T I N E ======================================= 327F 327F 327F sub_327F: ; ... 327F 327F ; FUNCTION CHUNK AT 2DEE SIZE 00000131 BYTES 327F 327F CD 91 34 call sub_3491 3282 CD 20 20 call sub_2020 3285 3E 48 ld a, 48h ; 'H' 3287 32 63 C4 ld (unk_C463), a 328A CD 4A 20 call sub_204A 328D CD D0 08 call sub_8D0 3290 CD 51 20 call sub_2051 3293 CD AC 34 call sub_34AC 3296 ED 5B 01 C4 ld de, (unk_C401) 329A 2A 03 C4 ld hl, (unk_C403) 329D CD C5 07 call sub_7C5 32A0 AF xor a 32A1 B2 or d 32A2 B3 or e 32A3 28 48 jr z, loc_32ED 32A5 32A5 loc_32A5: ; ... 32A5 E5 push hl 32A6 D5 push de 32A7 3A C2 C5 ld a, (byte_C5C2) 32AA FE FF cp 0FFh 32AC 28 03 jr z, loc_32B1 32AE C3 EE 2D jp loc_2DEE 32B1 ; --------------------------------------------------------------------------- 32B1 32B1 loc_32B1: ; ... 32B1 E5 push hl 32B2 2A FD C3 ld hl, (unk_C3FD) 32B5 22 87 C4 ld (word_C487), hl 32B8 2A FF C3 ld hl, (unk_C3FF) 32BB 22 89 C4 ld (word_C489), hl 32BE E1 pop hl 32BF 32BF loc_32BF: ; ... 32BF CD FF 33 call sub_33FF 32C2 CD 96 34 call sub_3496 32C5 CD C5 07 call sub_7C5 32C8 CD EF 35 call sub_35EF 32CB CD 67 06 call sub_667 32CE CD 3D 34 call sub_343D 32D1 CD F7 35 call sub_35F7 32D4 CD 4A 20 call sub_204A 32D7 CD D0 08 call sub_8D0 32DA 3E 48 ld a, 48h ; 'H' 32DC 32 63 C4 ld (unk_C463), a 32DF CD 51 20 call sub_2051 32E2 CD AC 34 call sub_34AC 32E5 D1 pop de 32E6 E1 pop hl 32E7 1B dec de 32E8 AF xor a 32E9 B2 or d 32EA B3 or e 32EB 20 B8 jr nz, loc_32A5 32ED 32ED loc_32ED: ; ... 32ED AF xor a 32EE B4 or h 32EF B5 or l 32F0 28 04 jr z, loc_32F6 32F2 2B dec hl 32F3 1B dec de 32F4 18 AF jr loc_32A5 32F6 ; --------------------------------------------------------------------------- 32F6 32F6 loc_32F6: ; ... 32F6 3A C2 C5 ld a, (byte_C5C2) 32F9 FE FF cp 0FFh 32FB 28 03 jr z, loc_3300 32FD C3 8E 2E jp loc_2E8E 3300 ; --------------------------------------------------------------------------- 3300 3300 loc_3300: ; ... 3300 E5 push hl 3301 2A 0D C4 ld hl, (unk_C40D) 3304 22 87 C4 ld (word_C487), hl 3307 2A 0F C4 ld hl, (unk_C40F) 330A 22 89 C4 ld (word_C489), hl 330D E1 pop hl 330E 330E loc_330E: ; ... 330E CD 06 34 call sub_3406 3311 CD 96 34 call sub_3496 3314 CD C5 07 call sub_7C5 3317 DD 21 87 C4 ld ix, 0C487h 331B FD 21 B3 17 ld iy, 17B3h 331F CD DA 11 call sub_11DA 3322 C8 ret z 3323 CD EF 35 call sub_35EF 3326 CD 67 06 call sub_667 3329 CD 44 34 call sub_3444 332C CD F7 35 call sub_35F7 332F CD 4A 20 call sub_204A 3332 3E 48 ld a, 48h ; 'H' 3334 32 63 C4 ld (unk_C463), a 3337 CD D0 08 call sub_8D0 333A CD 51 20 call sub_2051 333D CD AC 34 call sub_34AC 3340 C9 ret 3340 ; End of function sub_327F 3340 3341 3341 ; =============== S U B R O U T I N E ======================================= 3341 3341 3341 sub_3341: ; ... 3341 3341 ; FUNCTION CHUNK AT 2F1F SIZE 0000011A BYTES 3341 3341 CD 91 34 call sub_3491 3344 CD 20 20 call sub_2020 3347 CD 4A 20 call sub_204A 334A 3E 48 ld a, 48h ; 'H' 334C 32 63 C4 ld (unk_C463), a 334F CD D0 08 call sub_8D0 3352 CD 51 20 call sub_2051 3355 CD AC 34 call sub_34AC 3358 3A C2 C5 ld a, (byte_C5C2) 335B FE FF cp 0FFh 335D 28 03 jr z, loc_3362 335F C3 D4 2F jp loc_2FD4 3362 ; --------------------------------------------------------------------------- 3362 3362 loc_3362: ; ... 3362 E5 push hl 3363 2A 0D C4 ld hl, (unk_C40D) 3366 22 87 C4 ld (word_C487), hl 3369 2A 0F C4 ld hl, (unk_C40F) 336C 22 89 C4 ld (word_C489), hl 336F E1 pop hl 3370 3370 loc_3370: ; ... 3370 CD 14 34 call loc_3414 3373 CD 96 34 call sub_3496 3376 DD 21 87 C4 ld ix, 0C487h 337A FD 21 B3 17 ld iy, 17B3h 337E CD DA 11 call sub_11DA 3381 28 20 jr z, loc_33A3 3383 CD B8 07 call sub_7B8 3386 CD EF 35 call sub_35EF 3389 CD 67 06 call sub_667 338C CD 52 34 call loc_3452 338F CD F7 35 call sub_35F7 3392 CD 4A 20 call sub_204A 3395 CD D0 08 call sub_8D0 3398 3E 48 ld a, 48h ; 'H' 339A 32 63 C4 ld (unk_C463), a 339D CD 51 20 call sub_2051 33A0 CD AC 34 call sub_34AC 33A3 33A3 loc_33A3: ; ... 33A3 ED 5B 01 C4 ld de, (unk_C401) 33A7 2A 03 C4 ld hl, (unk_C403) 33AA AF xor a 33AB B2 or d 33AC B3 or e 33AD 28 48 jr z, loc_33F7 33AF 33AF loc_33AF: ; ... 33AF E5 push hl 33B0 D5 push de 33B1 3A C2 C5 ld a, (byte_C5C2) 33B4 FE FF cp 0FFh 33B6 28 03 jr z, loc_33BB 33B8 C3 1F 2F jp loc_2F1F 33BB ; --------------------------------------------------------------------------- 33BB 33BB loc_33BB: ; ... 33BB E5 push hl 33BC 2A FD C3 ld hl, (unk_C3FD) 33BF 22 87 C4 ld (word_C487), hl 33C2 2A FF C3 ld hl, (unk_C3FF) 33C5 22 89 C4 ld (word_C489), hl 33C8 E1 pop hl 33C9 33C9 loc_33C9: ; ... 33C9 CD 0D 34 call loc_340D 33CC CD 96 34 call sub_3496 33CF CD B8 07 call sub_7B8 33D2 CD EF 35 call sub_35EF 33D5 CD 67 06 call sub_667 33D8 CD 4B 34 call loc_344B 33DB CD F7 35 call sub_35F7 33DE CD 4A 20 call sub_204A 33E1 CD D0 08 call sub_8D0 33E4 3E 48 ld a, 48h ; 'H' 33E6 32 63 C4 ld (unk_C463), a 33E9 CD 51 20 call sub_2051 33EC CD AC 34 call sub_34AC 33EF D1 pop de 33F0 E1 pop hl 33F1 1B dec de 33F2 AF xor a 33F3 B2 or d 33F4 B3 or e 33F5 20 B8 jr nz, loc_33AF 33F7 33F7 loc_33F7: ; ... 33F7 AF xor a 33F8 B4 or h 33F9 B5 or l 33FA C8 ret z 33FB 2B dec hl 33FC 1B dec de 33FD 18 B0 jr loc_33AF 33FD ; End of function sub_3341 33FD 33FF 33FF ; =============== S U B R O U T I N E ======================================= 33FF 33FF 33FF sub_33FF: ; ... 33FF E5 push hl 3400 21 F9 C3 ld hl, 0C3F9h 3403 C3 1B 34 jp loc_341B 3403 ; End of function sub_33FF 3403 3406 3406 ; =============== S U B R O U T I N E ======================================= 3406 3406 3406 sub_3406: ; ... 3406 E5 push hl 3407 21 09 C4 ld hl, 0C409h 340A C3 1B 34 jp loc_341B 340D ; --------------------------------------------------------------------------- 340D 340D loc_340D: ; ... 340D E5 push hl 340E 21 F9 C3 ld hl, 0C3F9h 3411 C3 2C 34 jp loc_342C 3414 ; --------------------------------------------------------------------------- 3414 3414 loc_3414: ; ... 3414 E5 push hl 3415 21 09 C4 ld hl, 0C409h 3418 C3 2C 34 jp loc_342C 341B ; --------------------------------------------------------------------------- 341B 341B loc_341B: ; ... 341B CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 341E 21 E5 C3 ld hl, 0C3E5h 3421 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3424 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 3427 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 342A E1 pop hl 342B C9 ret 342C ; --------------------------------------------------------------------------- 342C 342C loc_342C: ; ... 342C CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 342F 21 E5 C3 ld hl, 0C3E5h 3432 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3435 CD B7 15 call sub_15B7 3438 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 343B E1 pop hl 343C C9 ret 343C ; End of function sub_3406 343C 343D 343D ; =============== S U B R O U T I N E ======================================= 343D 343D 343D sub_343D: ; ... 343D E5 push hl 343E 21 FD C3 ld hl, 0C3FDh 3441 C3 6F 34 jp loc_346F 3441 ; End of function sub_343D 3441 3444 3444 ; =============== S U B R O U T I N E ======================================= 3444 3444 3444 sub_3444: ; ... 3444 E5 push hl 3445 21 0D C4 ld hl, 0C40Dh 3448 C3 6F 34 jp loc_346F 344B ; --------------------------------------------------------------------------- 344B 344B loc_344B: ; ... 344B E5 push hl 344C 21 FD C3 ld hl, 0C3FDh 344F C3 80 34 jp loc_3480 3452 ; --------------------------------------------------------------------------- 3452 3452 loc_3452: ; ... 3452 E5 push hl 3453 21 0D C4 ld hl, 0C40Dh 3456 C3 80 34 jp loc_3480 3459 ; --------------------------------------------------------------------------- 3459 E5 push hl 345A CD 6F 34 call loc_346F 345D 21 D5 C3 ld hl, 0C3D5h 3460 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3463 C9 ret 3464 ; --------------------------------------------------------------------------- 3464 E5 push hl 3465 CD 80 34 call loc_3480 3468 21 D5 C3 ld hl, 0C3D5h 346B CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 346E C9 ret 346F ; --------------------------------------------------------------------------- 346F 346F loc_346F: ; ... 346F CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3472 21 D5 C3 ld hl, 0C3D5h 3475 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3478 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 347B CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 347E E1 pop hl 347F C9 ret 3480 ; --------------------------------------------------------------------------- 3480 3480 loc_3480: ; ... 3480 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3483 21 D5 C3 ld hl, 0C3D5h 3486 CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3489 CD B7 15 call sub_15B7 348C CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 348F E1 pop hl 3490 C9 ret 3490 ; End of function sub_3444 3490 3491 3491 ; =============== S U B R O U T I N E ======================================= 3491 3491 3491 sub_3491: ; ... 3491 E5 push hl 3492 CD C0 16 call sub_16C0 3495 E1 pop hl 3495 ; End of function sub_3491 3495 3496 3496 ; =============== S U B R O U T I N E ======================================= 3496 3496 3496 sub_3496: ; ... 3496 E5 push hl 3497 21 E5 C3 ld hl, 0C3E5h 349A CD 90 1E call sub_1E90 349D 3A AE C5 ld a, (unk_C5AE) 34A0 FE 00 cp 0 34A2 C4 A7 34 call nz, nullsub_4 34A5 E1 pop hl 34A6 C9 ret 34A6 ; End of function sub_3496 34A6 34A7 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD CTRL-"+" TO EXPAND] 34A8 ; --------------------------------------------------------------------------- 34A8 C9 ret 34A9 ; --------------------------------------------------------------------------- 34A9 C9 ret 34AA ; --------------------------------------------------------------------------- 34AA C9 ret 34AB ; --------------------------------------------------------------------------- 34AB C9 ret 34AC 34AC ; =============== S U B R O U T I N E ======================================= 34AC 34AC 34AC sub_34AC: ; ... 34AC 34AC ; FUNCTION CHUNK AT 31A6 SIZE 0000001D BYTES 34AC 34AC 3A 39 C4 ld a, (byte_C439) 34AF FE 00 cp 0 34B1 C8 ret z 34B2 21 E5 C3 ld hl, 0C3E5h 34B5 CD DD 25 call sub_25DD 34B8 34B8 loc_34B8: ; ... 34B8 3A 59 C2 ld a, (byte_C259) ; XXX some sort of flag 34BB FE 55 cp 55h ; 'U' 34BD CA D0 34 jp z, loc_34D0 34C0 FE 4B cp 4Bh ; 'K' 34C2 CA D6 34 jp z, sub_34D6 34C5 3A 5E C2 ld a, (byte_C25E) ; XXX some sort of flag 34C8 FE 00 cp 0 34CA C2 D0 34 jp nz, loc_34D0 34CD C3 B8 34 jp loc_34B8 34D0 ; --------------------------------------------------------------------------- 34D0 34D0 loc_34D0: ; ... 34D0 CD D6 34 call sub_34D6 34D3 C3 A6 31 jp loc_31A6 34D3 ; End of function sub_34AC 34D3 34D6 34D6 ; =============== S U B R O U T I N E ======================================= 34D6 34D6 34D6 sub_34D6: ; ... 34D6 AF xor a 34D7 32 59 C2 ld (byte_C259), a ; XXX some sort of flag 34DA C9 ret 34DA ; End of function sub_34D6 34DA 34DB ; --------------------------------------------------------------------------- 34DB E5 push hl 34DC DD E5 push ix 34DE 21 E9 C3 ld hl, 0C3E9h 34E1 CD 69 1E call sub_1E69 34E4 21 2E C5 ld hl, 0C52Eh 34E7 DD 21 E9 C3 ld ix, 0C3E9h 34EB CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 34EE 21 ED C3 ld hl, 0C3EDh 34F1 CD 7E 1E call sub_1E7E 34F4 21 32 C5 ld hl, 0C532h 34F7 DD 21 ED C3 ld ix, 0C3EDh 34FB CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 34FE DD E1 pop ix 3500 E1 pop hl 3501 C9 ret 3502 ; --------------------------------------------------------------------------- 3502 E5 push hl 3503 DD E5 push ix 3505 21 ED C3 ld hl, 0C3EDh 3508 CD 69 1E call sub_1E69 350B 21 2E C5 ld hl, 0C52Eh 350E DD 21 ED C3 ld ix, 0C3EDh 3512 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3515 21 E9 C3 ld hl, 0C3E9h 3518 CD 7E 1E call sub_1E7E 351B 21 32 C5 ld hl, 0C532h 351E DD 21 E9 C3 ld ix, 0C3E9h 3522 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3525 DD E1 pop ix 3527 E1 pop hl 3528 C9 ret 3529 3529 ; =============== S U B R O U T I N E ======================================= 3529 3529 3529 sub_3529: ; ... 3529 E5 push hl 352A DD E5 push ix 352C 21 0D C4 ld hl, 0C40Dh 352F CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3532 21 72 13 ld hl, 1372h 3535 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3538 CD 9C 15 call sub_159C ; XXX (c3bd) += (c3c9); 48 bits; ret bc = c3bd, de = c3c9 353B 21 41 C2 ld hl, 0C241h 353E CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 3541 CD 96 13 call sub_1396 3544 21 09 C4 ld hl, 0C409h 3547 CD 74 15 call sub_1574 ; XXX move 4byte thing from C3BD to (hl) 354A DD E1 pop ix 354C E1 pop hl 354D C9 ret 354D ; End of function sub_3529 354D 354E 354E ; =============== S U B R O U T I N E ======================================= 354E 354E 354E sub_354E: ; ... 354E E5 push hl 354F 21 D5 C3 ld hl, 0C3D5h 3552 DD 21 DD C3 ld ix, 0C3DDh 3556 CD 86 15 call sub_1586 ; XXX move (ix) to (hl); dword 3559 E1 pop hl 355A C9 ret 355A ; End of function sub_354E 355A 355B 355B ; =============== S U B R O U T I N E ======================================= 355B 355B 355B sub_355B: ; ... 355B 3A 40 C2 ld a, (byte_C240) 355E FE 00 cp 0 3560 F5 push af 3561 CC 69 35 call z, sub_3569 3564 F1 pop af 3565 C4 79 35 call nz, sub_3579 3568 C9 ret 3568 ; End of function sub_355B 3568 3569 3569 ; =============== S U B R O U T I N E ======================================= 3569 3569 3569 sub_3569: ; ... 3569 21 DD C3 ld hl, 0C3DDh 356C CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 356F 21 D9 C3 ld hl, 0C3D9h 3572 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3575 CD B7 15 call sub_15B7 3578 C9 ret 3578 ; End of function sub_3569 3578 3579 3579 ; =============== S U B R O U T I N E ======================================= 3579 3579 3579 sub_3579: ; ... 3579 21 D9 C3 ld hl, 0C3D9h 357C CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 357F 21 DD C3 ld hl, 0C3DDh 3582 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3585 CD B7 15 call sub_15B7 3588 C9 ret 3588 ; End of function sub_3579 3588 3589 3589 ; =============== S U B R O U T I N E ======================================= 3589 3589 3589 sub_3589: ; ... 3589 E5 push hl 358A 21 ED C3 ld hl, 0C3EDh 358D CD 37 15 call sub_1537 ; XXX move (hl) to C3BD, 4 bytes with zero fill to 12 bytes 3590 21 E9 C3 ld hl, 0C3E9h 3593 CD 0E 15 call sub_150E ; XXX move (hl) to C3C9, 4 bytes with zero fill to 6 bytes 3596 CD B7 15 call sub_15B7 3599 F5 push af 359A D4 A3 35 call nc, sub_35A3 359D F1 pop af 359E DC A8 35 call c, sub_35A8 35A1 E1 pop hl 35A2 C9 ret 35A2 ; End of function sub_3589 35A2 35A3 35A3 ; =============== S U B R O U T I N E ======================================= 35A3 35A3 35A3 sub_35A3: ; ... 35A3 AF xor a 35A4 32 40 C2 ld (byte_C240), a 35A7 C9 ret 35A7 ; End of function sub_35A3 35A7 35A8 35A8 ; =============== S U B R O U T I N E ======================================= 35A8 35A8 35A8 sub_35A8: ; ... 35A8 3E 01 ld a, 1 35AA 32 40 C2 ld (byte_C240), a 35AD C9 ret 35AD ; End of function sub_35A8 35AD 35AE 35AE ; =============== S U B R O U T I N E ======================================= 35AE 35AE 35AE sub_35AE: ; ... 35AE E5 push hl 35AF C5 push bc 35B0 2A 51 C2 ld hl, (word_C251) 35B3 ED 4B 4D C2 ld bc, (word_C24D) 35B7 AF xor a 35B8 ED 42 sbc hl, bc 35BA 23 inc hl 35BB 22 41 C2 ld (word_C241), hl 35BE 21 00 00 ld hl, 0 35C1 22 43 C2 ld (word_C243), hl 35C4 21 41 C2 ld hl, 0C241h 35C7 CD D4 1E call sub_1ED4 35CA C1 pop bc 35CB E1 pop hl 35CC C9 ret 35CC ; End of function sub_35AE 35CC 35CD 35CD ; =============== S U B R O U T I N E ======================================= 35CD 35CD 35CD sub_35CD: ; ... 35CD E5 push hl 35CE 21 01 00 ld hl, 1 35D1 22 55 C2 ld (word_C255), hl 35D4 21 00 00 ld hl, 0 35D7 22 57 C2 ld (word_C257), hl 35DA E1 pop hl 35DB C9 ret 35DB ; End of function sub_35CD 35DB 35DC 35DC ; =============== S U B R O U T I N E ======================================= 35DC 35DC 35DC sub_35DC: ; ... 35DC 21 01 00 ld hl, 1 35DF 22 4D C2 ld (word_C24D), hl 35E2 22 51 C2 ld (word_C251), hl 35E5 21 00 00 ld hl, 0 35E8 22 4F C2 ld (unk_C24F), hl 35EB 22 53 C2 ld (word_C253), hl 35EE C9 ret 35EE ; End of function sub_35DC 35EE 35EF 35EF ; =============== S U B R O U T I N E ======================================= 35EF 35EF 35EF sub_35EF: ; ... 35EF F3 di 35F0 3E FF ld a, 0FFh 35F2 32 5D C2 ld (byte_C25D), a ; XXX some sort of flag 35F5 FB ei 35F6 C9 ret 35F6 ; End of function sub_35EF 35F6 35F7 35F7 ; =============== S U B R O U T I N E ======================================= 35F7 35F7 35F7 sub_35F7: ; ... 35F7 F3 di 35F8 AF xor a 35F9 32 5D C2 ld (byte_C25D), a ; XXX some sort of flag 35FC FB ei 35FD 3A 5E C2 ld a, (byte_C25E) ; XXX some sort of flag 3600 FE 00 cp 0 3602 C2 A6 31 jp nz, loc_31A6 3605 C9 ret 3605 ; End of function sub_35F7 3605 3606 3606 ; =============== S U B R O U T I N E ======================================= 3606 3606 3606 sub_3606: ; ... 3606 F3 di 3607 08 ex af, af' 3608 D9 exx 3609 3E FF ld a, 0FFh 360B 32 5E C2 ld (byte_C25E), a ; XXX some sort of flag 360E 3A 5D C2 ld a, (byte_C25D) ; XXX some sort of flag 3611 FE 00 cp 0 3613 CA A6 31 jp z, loc_31A6 3616 2A 5A C2 ld hl, (word_C25A) ; XXX a function pointer 3619 E5 push hl 361A D9 exx 361B 08 ex af, af' 361C FB ei 361D C9 ret ; (effectively jp (c25a) ) 361D ; End of function sub_3606 361D 361E 361E ; =============== S U B R O U T I N E ======================================= 361E 361E 361E sub_361E: ; ... 361E E5 push hl 361F CD 2C 1F call sub_1F2C 3622 21 3A C5 ld hl, byte_C53A ; XXX flags; 5 4 3 2 1 3625 CB CE set 1, (hl) 3627 E1 pop hl 3628 C9 ret 3628 ; End of function sub_361E 3628 3629 3629 ; =============== S U B R O U T I N E ======================================= 3629 3629 3629 sub_3629: ; ... 3629 E5 push hl 362A CD 3E 1F call sub_1F3E 362D 21 3A C5 ld hl, byte_C53A ; XXX flags; 5 4 3 2 1 3630 CB D6 set 2, (hl) 3632 E1 pop hl 3633 C9 ret 3633 ; End of function sub_3629 3633 3634 3634 ; =============== S U B R O U T I N E ======================================= 3634 3634 3634 sub_3634: ; ... 3634 E5 push hl 3635 21 3A C5 ld hl, byte_C53A ; XXX flags; 5 4 3 2 1 3638 CB DE set 3, (hl) 363A E1 pop hl 363B C9 ret 363B ; End of function sub_3634 363B 363C 363C ; =============== S U B R O U T I N E ======================================= 363C 363C 363C sub_363C: ; ... 363C E5 push hl 363D 21 3A C5 ld hl, byte_C53A ; XXX flags; 5 4 3 2 1 3640 CB E6 set 4, (hl) 3642 E1 pop hl 3643 C9 ret 3643 ; End of function sub_363C 3643 3644 3644 ; =============== S U B R O U T I N E ======================================= 3644 3644 3644 sub_3644: ; ... 3644 E5 push hl 3645 21 3A C5 ld hl, byte_C53A ; XXX flags; 5 4 3 2 1 3648 CB EE set 5, (hl) 364A E1 pop hl 364B C9 ret 364B ; End of function sub_3644 364B 364C ; --------------------------------------------------------------------------- 364C ; START OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 364C 364C loc_364C: ; ... 364C 21 83 0F ld hl, lcdstrInvalidGrating_F83 364F CD 19 0F call lcdstrSendWithEEOL_F19 ; LCD clear (1,12) to eol and send lcdstr in (HL) 3652 C3 55 36 jp loc_3655 ; whee! 3655 ; --------------------------------------------------------------------------- 3655 3655 loc_3655: ; ... 3655 21 13 27 ld hl, promptQues_2713 ; '?' prompt 3658 CD A4 25 call sendbytes_25A4 ; XXX send list (HL) through (C06C); abstract transmit routine for gpib or 232 365B C3 03 0F jp loc_F03 ; reset lamps and reset to initial state 365B ; END OF FUNCTION CHUNK FOR XXXhandleCommand_3F0 365B ; --------------------------------------------------------------------------- 365E 00 00 00 00+ db [ 9A2h ], 0 365E 00 00 00 00+; end of 'seg000' 365E 00 00 00 00+ C000 ; =========================================================================== C000 C000 ; Segment type: Regular C000 segment RAM C000 org 0C000h C000 ?? ?? word_C000: ds 2 ; ... C000 ; XXX appears to be a buffer pointer; esp for DART data but maybe others C002 ?? ds 1 C003 ?? ds 1 C004 ?? dartAconfig_C004:ds 1 ; ... C004 ; used during cold boot to setup dart port a C005 ?? ds 1 C006 ?? dartWReg4_C006: ds 1 ; ... C006 ; wreg 4 C007 ?? ds 1 C008 ?? dartWReg3_C008: ds 1 ; ... C008 ; DART wreg 3 C009 ?? ds 1 C00A ?? dartWReg5_C00A: ds 1 ; ... C00A ; DART wreg 5; esp for rts/cts C00B ?? ds 1 C00C ?? ds 1 C00D ?? ds 1 C00E ?? byte_C00E: ds 1 ; ... C00E ; XXX XOFF 0x13 or XON 0x11 used as a flag in flow control C00F ?? ds 1 C010 ?? curmodekeycode_C010:ds 1 ; ... C010 ; current mode key code; '@' if none C011 ?? ?? keybufptr_C011: ds 2 ; ... C011 ; current location in numeric key entry buffer C013 ?? ?? ?? ??+keybuf_C013: ds 50h ; ... C013 ?? ?? ?? ??+ ; numeric key entry buffer C063 ?? inXoff_C063: ds 1 ; ... C063 ; XONXOFF flag and actual character C064 ?? ?? pfnXOFF_C064: ds 2 ; ... C064 ; does either send XOFF or drop RTS depending on flow control option C066 ?? ledsA_C066: ds 1 ; ... C066 ; 7 = WSTEP, 6 = GRAT, 5 = SCAN, 4 = left C066 ; 3 = 2nd, 2 = nc, 1 = nc, 0 = SPEED C067 ?? ledsB_C067: ds 1 ; ... C067 ; 7 = W2, 6 = W1, 5 = SLEW, 4 = SCAN (fp, yellow), C067 ; 3 = right, 2 = PAUSE (fp, red), 1 = SLEW (fp, green), 0 = STOP (fp, red) C068 ?? ?? word_C068: ds 2 ; ... C068 ; XXX appears to be a buffer pointer; related to C000 C06A ?? ?? word_C06A: ds 2 C06C ?? ?? pfnSendByte_C06C:ds 2 ; ... C06C ; XXX seems to be a 'send byte' routine depending on GPIB or 232 option selected by dip switch C06E ?? lcdCP_C06E: ds 1 ; ... C06E ; the current cursor position of the LCD, with bit 7 set C06F ?? ds 1 C070 ?? unk_C070: ds 1 C071 ?? unk_C071: ds 1 ; ... C071 ; XXX appears to be command buffer from DART data at least (maybe also gpib) C072 ?? ds 1 C073 ?? ds 1 C074 ?? ds 1 C075 ?? ds 1 C076 ?? ds 1 C077 ?? ds 1 C078 ?? ds 1 C079 ?? ds 1 C07A ?? ds 1 C07B ?? ds 1 C07C ?? ds 1 C07D ?? ds 1 C07E ?? ds 1 C07F ?? ds 1 C080 ?? ds 1 C081 ?? ds 1 C082 ?? ds 1 C083 ?? ds 1 C084 ?? ds 1 C085 ?? ds 1 C086 ?? ds 1 C087 ?? ds 1 C088 ?? ds 1 C089 ?? ds 1 C08A ?? ds 1 C08B ?? ds 1 C08C ?? ds 1 C08D ?? ds 1 C08E ?? ds 1 C08F ?? ds 1 C090 ?? ds 1 C091 ?? ds 1 C092 ?? ds 1 C093 ?? ds 1 C094 ?? ds 1 C095 ?? ds 1 C096 ?? ds 1 C097 ?? ds 1 C098 ?? ds 1 C099 ?? ds 1 C09A ?? ds 1 C09B ?? ds 1 C09C ?? ds 1 C09D ?? ds 1 C09E ?? ds 1 C09F ?? ds 1 C0A0 ?? ds 1 C0A1 ?? ds 1 C0A2 ?? ds 1 C0A3 ?? ds 1 C0A4 ?? ds 1 C0A5 ?? ds 1 C0A6 ?? ds 1 C0A7 ?? ds 1 C0A8 ?? ds 1 C0A9 ?? ds 1 C0AA ?? ds 1 C0AB ?? ds 1 C0AC ?? ds 1 C0AD ?? ds 1 C0AE ?? ds 1 C0AF ?? ds 1 C0B0 ?? ds 1 C0B1 ?? ds 1 C0B2 ?? ds 1 C0B3 ?? ds 1 C0B4 ?? ds 1 C0B5 ?? ds 1 C0B6 ?? ds 1 C0B7 ?? ds 1 C0B8 ?? ds 1 C0B9 ?? ds 1 C0BA ?? ds 1 C0BB ?? ds 1 C0BC ?? ds 1 C0BD ?? ds 1 C0BE ?? ds 1 C0BF ?? ds 1 C0C0 ?? ds 1 C0C1 ?? ds 1 C0C2 ?? ds 1 C0C3 ?? ds 1 C0C4 ?? ds 1 C0C5 ?? ds 1 C0C6 ?? ds 1 C0C7 ?? ds 1 C0C8 ?? ds 1 C0C9 ?? ds 1 C0CA ?? ds 1 C0CB ?? ds 1 C0CC ?? ds 1 C0CD ?? ds 1 C0CE ?? ds 1 C0CF ?? ds 1 C0D0 ?? ds 1 C0D1 ?? ds 1 C0D2 ?? ds 1 C0D3 ?? ds 1 C0D4 ?? ds 1 C0D5 ?? ds 1 C0D6 ?? ds 1 C0D7 ?? ds 1 C0D8 ?? ds 1 C0D9 ?? ds 1 C0DA ?? ds 1 C0DB ?? ds 1 C0DC ?? ds 1 C0DD ?? ds 1 C0DE ?? ds 1 C0DF ?? ds 1 C0E0 ?? ds 1 C0E1 ?? ds 1 C0E2 ?? ds 1 C0E3 ?? ds 1 C0E4 ?? ds 1 C0E5 ?? ds 1 C0E6 ?? ds 1 C0E7 ?? ds 1 C0E8 ?? ds 1 C0E9 ?? ds 1 C0EA ?? ds 1 C0EB ?? ds 1 C0EC ?? ds 1 C0ED ?? ds 1 C0EE ?? ds 1 C0EF ?? ds 1 C0F0 ?? ds 1 C0F1 ?? ds 1 C0F2 ?? ds 1 C0F3 ?? ds 1 C0F4 ?? ds 1 C0F5 ?? ds 1 C0F6 ?? ds 1 C0F7 ?? ds 1 C0F8 ?? ds 1 C0F9 ?? ds 1 C0FA ?? ds 1 C0FB ?? ds 1 C0FC ?? ds 1 C0FD ?? ds 1 C0FE ?? ds 1 C0FF ?? ds 1 C100 ?? ds 1 C101 ?? ds 1 C102 ?? ds 1 C103 ?? ds 1 C104 ?? ds 1 C105 ?? ds 1 C106 ?? ds 1 C107 ?? ds 1 C108 ?? ds 1 C109 ?? ds 1 C10A ?? ds 1 C10B ?? ds 1 C10C ?? ds 1 C10D ?? ds 1 C10E ?? ds 1 C10F ?? ds 1 C110 ?? ds 1 C111 ?? ds 1 C112 ?? ds 1 C113 ?? ds 1 C114 ?? ds 1 C115 ?? ds 1 C116 ?? ds 1 C117 ?? ds 1 C118 ?? ds 1 C119 ?? ds 1 C11A ?? ds 1 C11B ?? ds 1 C11C ?? ds 1 C11D ?? ds 1 C11E ?? ds 1 C11F ?? ds 1 C120 ?? ds 1 C121 ?? ds 1 C122 ?? ds 1 C123 ?? ds 1 C124 ?? ds 1 C125 ?? ds 1 C126 ?? ds 1 C127 ?? ds 1 C128 ?? ds 1 C129 ?? ds 1 C12A ?? ds 1 C12B ?? ds 1 C12C ?? ds 1 C12D ?? ds 1 C12E ?? ds 1 C12F ?? ds 1 C130 ?? ds 1 C131 ?? ds 1 C132 ?? ds 1 C133 ?? ds 1 C134 ?? ds 1 C135 ?? ds 1 C136 ?? ds 1 C137 ?? ds 1 C138 ?? ds 1 C139 ?? ds 1 C13A ?? ds 1 C13B ?? ds 1 C13C ?? ds 1 C13D ?? ds 1 C13E ?? ds 1 C13F ?? ds 1 C140 ?? ds 1 C141 ?? ds 1 C142 ?? ds 1 C143 ?? ds 1 C144 ?? ds 1 C145 ?? ds 1 C146 ?? ds 1 C147 ?? ds 1 C148 ?? ds 1 C149 ?? ds 1 C14A ?? ds 1 C14B ?? ds 1 C14C ?? ds 1 C14D ?? ds 1 C14E ?? ds 1 C14F ?? ds 1 C150 ?? ds 1 C151 ?? ds 1 C152 ?? ds 1 C153 ?? ds 1 C154 ?? ds 1 C155 ?? ds 1 C156 ?? ds 1 C157 ?? ds 1 C158 ?? ds 1 C159 ?? ds 1 C15A ?? ds 1 C15B ?? ds 1 C15C ?? ds 1 C15D ?? ds 1 C15E ?? ds 1 C15F ?? ds 1 C160 ?? ds 1 C161 ?? ds 1 C162 ?? ds 1 C163 ?? ds 1 C164 ?? ds 1 C165 ?? ds 1 C166 ?? ds 1 C167 ?? ds 1 C168 ?? ds 1 C169 ?? ds 1 C16A ?? ds 1 C16B ?? ds 1 C16C ?? ds 1 C16D ?? ds 1 C16E ?? ds 1 C16F ?? ds 1 C170 ?? unk_C170: ds 1 ; ... C171 ?? ds 1 C172 ?? ds 1 C173 ?? ds 1 C174 ?? ds 1 C175 ?? ds 1 C176 ?? ds 1 C177 ?? ds 1 C178 ?? ds 1 C179 ?? ds 1 C17A ?? ds 1 C17B ?? ds 1 C17C ?? ds 1 C17D ?? ds 1 C17E ?? ds 1 C17F ?? ds 1 C180 ?? ds 1 C181 ?? ds 1 C182 ?? ds 1 C183 ?? ds 1 C184 ?? ds 1 C185 ?? ds 1 C186 ?? ds 1 C187 ?? ds 1 C188 ?? ?? ?? ??+portblastXXX_C188:ds 23h ; ... C188 ?? ?? ?? ??+ ; portblast zone C1AB ?? ds 1 C1AC ?? ds 1 C1AD ?? ds 1 C1AE ?? ds 1 C1AF ?? ?? ?? ??+apfnModeHandlers_C1AF:ds 16h ; ... C1AF ?? ?? ?? ??+ ; mode handlers indexed by mode key code C1C5 ?? ds 1 C1C6 ?? ds 1 C1C7 ?? ds 1 C1C8 ?? ds 1 C1C9 ?? ds 1 C1CA ?? ds 1 C1CB ?? ds 1 C1CC ?? ds 1 C1CD ?? ds 1 C1CE ?? ds 1 C1CF ?? ds 1 C1D0 ?? ds 1 C1D1 ?? ds 1 C1D2 ?? ds 1 C1D3 ?? ds 1 C1D4 ?? ds 1 C1D5 ?? ds 1 C1D6 ?? ds 1 C1D7 ?? ds 1 C1D8 ?? ds 1 C1D9 ?? ds 1 C1DA ?? ds 1 C1DB ?? ds 1 C1DC ?? ds 1 C1DD ?? ds 1 C1DE ?? ds 1 C1DF ?? ds 1 C1E0 ?? ds 1 C1E1 ?? ds 1 C1E2 ?? ds 1 C1E3 ?? ds 1 C1E4 ?? ds 1 C1E5 ?? ds 1 C1E6 ?? ds 1 C1E7 ?? ds 1 C1E8 ?? ds 1 C1E9 ?? ds 1 C1EA ?? ds 1 C1EB ?? ds 1 C1EC ?? ds 1 C1ED ?? ds 1 C1EE ?? ds 1 C1EF ?? ds 1 C1F0 ?? ds 1 C1F1 ?? ds 1 C1F2 ?? ds 1 C1F3 ?? ds 1 C1F4 ?? ds 1 C1F5 ?? ds 1 C1F6 ?? ds 1 C1F7 ?? ds 1 C1F8 ?? ds 1 C1F9 ?? ds 1 C1FA ?? ds 1 C1FB ?? ds 1 C1FC ?? ds 1 C1FD ?? ds 1 C1FE ?? ds 1 C1FF ?? ds 1 C200 ?? ds 1 C201 ?? ds 1 C202 ?? ds 1 C203 ?? ds 1 C204 ?? ds 1 C205 ?? ds 1 C206 ?? ds 1 C207 ?? ds 1 C208 ?? ds 1 C209 ?? ds 1 C20A ?? ds 1 C20B ?? ds 1 C20C ?? ds 1 C20D ?? ds 1 C20E ?? ds 1 C20F ?? ds 1 C210 ?? ds 1 C211 ?? ds 1 C212 ?? ds 1 C213 ?? ds 1 C214 ?? ds 1 C215 ?? ds 1 C216 ?? ds 1 C217 ?? ds 1 C218 ?? ds 1 C219 ?? ds 1 C21A ?? ds 1 C21B ?? ds 1 C21C ?? ds 1 C21D ?? ds 1 C21E ?? ds 1 C21F ?? ds 1 C220 ?? ds 1 C221 ?? ds 1 C222 ?? ds 1 C223 ?? ds 1 C224 ?? ds 1 C225 ?? ds 1 C226 ?? ds 1 C227 ?? ds 1 C228 ?? ds 1 C229 ?? unk_C229: ds 1 ; ... C22A ?? ds 1 C22B ?? ds 1 C22C ?? ds 1 C22D ?? ds 1 C22E ?? ds 1 C22F ?? ds 1 C230 ?? ds 1 C231 ?? unk_C231: ds 1 ; ... C232 ?? unk_C232: ds 1 ; ... C233 ?? ds 1 C234 ?? ds 1 C235 ?? unk_C235: ds 1 C236 ?? ds 1 C237 ?? unk_C237: ds 1 ; ... C238 ?? unk_C238: ds 1 ; ... C239 ?? byte_C239: ds 1 ; ... C23A ?? byte_C23A: ds 1 ; ... C23B ?? byte_C23B: ds 1 ; ... C23C ?? byte_C23C: ds 1 ; ... C23C ; XXX a flag of sorts; cleared in isrVec0a_229D, set in isvVec0e_24C2 and isrVec1c_24D8; seems a 'send enable' flag C23D ?? unk_C23D: ds 1 ; XXX prev C4AD value C23E ?? byte_C23E: ds 1 ; ... C23E ; XXX 'command' C23F ?? byte_C23F: ds 1 ; ... C23F ; XXX 'last command'? C240 ?? byte_C240: ds 1 ; ... C241 ?? ?? word_C241: ds 2 ; ... C243 ?? ?? word_C243: ds 2 ; ... C245 ?? unk_C245: ds 1 ; ... C246 ?? ds 1 C247 ?? ds 1 C248 ?? ds 1 C249 ?? ds 1 C24A ?? ds 1 C24B ?? ds 1 C24C ?? ds 1 C24D ?? ?? word_C24D: ds 2 ; ... C24F ?? unk_C24F: ds 1 C250 ?? ds 1 C251 ?? ?? word_C251: ds 2 ; ... C253 ?? ?? word_C253: ds 2 C255 ?? ?? word_C255: ds 2 ; ... C257 ?? ?? word_C257: ds 2 C259 ?? byte_C259: ds 1 ; ... C259 ; XXX some sort of flag C25A ?? ?? word_C25A: ds 2 ; ... C25A ; XXX a function pointer C25C ?? byte_C25C: ds 1 ; ... C25C ; XXX a pending char in DART isr; K and U. Reset to 0. transferred to byte_C259 C25D ?? byte_C25D: ds 1 ; ... C25D ; XXX some sort of flag C25E ?? byte_C25E: ds 1 ; ... C25E ; XXX some sort of flag C25F ?? ?? word_C25F: ds 2 ; ... C261 ?? ?? word_C261: ds 2 ; ... C263 ?? unk_C263: ds 1 ; ... C264 ?? ds 1 C265 ?? ds 1 C266 ?? ds 1 C267 ?? byte_C267: ds 1 ; ... C268 ?? ds 1 C269 ?? ?? word_C269: ds 2 ; ... C26B ?? unk_C26B: ds 1 C26C ?? ds 1 C26D ?? unk_C26D: ds 1 C26E ?? ds 1 C26F ?? unk_C26F: ds 1 C270 ?? ds 1 C271 ?? ?? word_C271: ds 2 ; ... C273 ?? byte_C273: ds 1 ; ... C274 ?? unk_C274: ds 1 ; ... C275 ?? ds 1 C276 ?? ds 1 C277 ?? ds 1 C278 ?? ds 1 C279 ?? ds 1 C27A ?? ds 1 C27B ?? ds 1 C27C ?? ds 1 C27D ?? ds 1 C27E ?? ds 1 C27F ?? ds 1 C280 ?? ds 1 C281 ?? ds 1 C282 ?? ds 1 C283 ?? ds 1 C284 ?? ds 1 C285 ?? ds 1 C286 ?? ds 1 C287 ?? ds 1 C288 ?? ds 1 C289 ?? ds 1 C28A ?? ds 1 C28B ?? ds 1 C28C ?? ds 1 C28D ?? ds 1 C28E ?? ds 1 C28F ?? ds 1 C290 ?? ds 1 C291 ?? ds 1 C292 ?? ds 1 C293 ?? ds 1 C294 ?? ds 1 C295 ?? ds 1 C296 ?? ds 1 C297 ?? ds 1 C298 ?? ds 1 C299 ?? ds 1 C29A ?? ds 1 C29B ?? ds 1 C29C ?? ds 1 C29D ?? ds 1 C29E ?? ds 1 C29F ?? ds 1 C2A0 ?? ds 1 C2A1 ?? ds 1 C2A2 ?? ds 1 C2A3 ?? ds 1 C2A4 ?? ds 1 C2A5 ?? ds 1 C2A6 ?? ds 1 C2A7 ?? ds 1 C2A8 ?? ds 1 C2A9 ?? ds 1 C2AA ?? ds 1 C2AB ?? ds 1 C2AC ?? ds 1 C2AD ?? ds 1 C2AE ?? ds 1 C2AF ?? ds 1 C2B0 ?? ds 1 C2B1 ?? ds 1 C2B2 ?? ds 1 C2B3 ?? ds 1 C2B4 ?? ds 1 C2B5 ?? ds 1 C2B6 ?? ds 1 C2B7 ?? ds 1 C2B8 ?? ds 1 C2B9 ?? ds 1 C2BA ?? ds 1 C2BB ?? ds 1 C2BC ?? ds 1 C2BD ?? ds 1 C2BE ?? ds 1 C2BF ?? ds 1 C2C0 ?? ds 1 C2C1 ?? ds 1 C2C2 ?? ds 1 C2C3 ?? ds 1 C2C4 ?? ds 1 C2C5 ?? ds 1 C2C6 ?? ds 1 C2C7 ?? ds 1 C2C8 ?? ds 1 C2C9 ?? ds 1 C2CA ?? ds 1 C2CB ?? ds 1 C2CC ?? ds 1 C2CD ?? ds 1 C2CE ?? ds 1 C2CF ?? ds 1 C2D0 ?? ds 1 C2D1 ?? ds 1 C2D2 ?? ds 1 C2D3 ?? ds 1 C2D4 ?? ds 1 C2D5 ?? ds 1 C2D6 ?? ds 1 C2D7 ?? ds 1 C2D8 ?? ds 1 C2D9 ?? ds 1 C2DA ?? ds 1 C2DB ?? ds 1 C2DC ?? ds 1 C2DD ?? ds 1 C2DE ?? ds 1 C2DF ?? ds 1 C2E0 ?? ds 1 C2E1 ?? ds 1 C2E2 ?? ds 1 C2E3 ?? ds 1 C2E4 ?? ds 1 C2E5 ?? ds 1 C2E6 ?? ds 1 C2E7 ?? ds 1 C2E8 ?? ds 1 C2E9 ?? ds 1 C2EA ?? ds 1 C2EB ?? ds 1 C2EC ?? ds 1 C2ED ?? ds 1 C2EE ?? ds 1 C2EF ?? ds 1 C2F0 ?? ds 1 C2F1 ?? ds 1 C2F2 ?? ds 1 C2F3 ?? ds 1 C2F4 ?? ds 1 C2F5 ?? ds 1 C2F6 ?? ds 1 C2F7 ?? ds 1 C2F8 ?? ds 1 C2F9 ?? ds 1 C2FA ?? ds 1 C2FB ?? ds 1 C2FC ?? ds 1 C2FD ?? ds 1 C2FE ?? ds 1 C2FF ?? ds 1 C300 ?? ds 1 C301 ?? ds 1 C302 ?? ds 1 C303 ?? ds 1 C304 ?? ds 1 C305 ?? ds 1 C306 ?? ds 1 C307 ?? ds 1 C308 ?? ds 1 C309 ?? ds 1 C30A ?? ds 1 C30B ?? ds 1 C30C ?? ds 1 C30D ?? ds 1 C30E ?? ds 1 C30F ?? ds 1 C310 ?? ds 1 C311 ?? ds 1 C312 ?? ds 1 C313 ?? ds 1 C314 ?? ds 1 C315 ?? ds 1 C316 ?? ds 1 C317 ?? ds 1 C318 ?? ds 1 C319 ?? ds 1 C31A ?? ds 1 C31B ?? ds 1 C31C ?? ds 1 C31D ?? ds 1 C31E ?? ds 1 C31F ?? ds 1 C320 ?? ds 1 C321 ?? ds 1 C322 ?? ds 1 C323 ?? ds 1 C324 ?? ds 1 C325 ?? ds 1 C326 ?? ds 1 C327 ?? ds 1 C328 ?? ds 1 C329 ?? ds 1 C32A ?? ds 1 C32B ?? ds 1 C32C ?? ds 1 C32D ?? ds 1 C32E ?? ds 1 C32F ?? ds 1 C330 ?? ds 1 C331 ?? ds 1 C332 ?? ds 1 C333 ?? ds 1 C334 ?? ds 1 C335 ?? ds 1 C336 ?? ds 1 C337 ?? ds 1 C338 ?? ds 1 C339 ?? ds 1 C33A ?? ds 1 C33B ?? ds 1 C33C ?? ds 1 C33D ?? ds 1 C33E ?? ds 1 C33F ?? ds 1 C340 ?? ds 1 C341 ?? ds 1 C342 ?? ds 1 C343 ?? ds 1 C344 ?? ds 1 C345 ?? ds 1 C346 ?? ds 1 C347 ?? ds 1 C348 ?? ds 1 C349 ?? ds 1 C34A ?? ds 1 C34B ?? ds 1 C34C ?? ds 1 C34D ?? ds 1 C34E ?? ds 1 C34F ?? ds 1 C350 ?? ds 1 C351 ?? ds 1 C352 ?? ds 1 C353 ?? ds 1 C354 ?? ds 1 C355 ?? ds 1 C356 ?? ds 1 C357 ?? ds 1 C358 ?? ds 1 C359 ?? ds 1 C35A ?? ds 1 C35B ?? ds 1 C35C ?? ds 1 C35D ?? ds 1 C35E ?? ds 1 C35F ?? ds 1 C360 ?? ds 1 C361 ?? ds 1 C362 ?? ds 1 C363 ?? ds 1 C364 ?? ds 1 C365 ?? ds 1 C366 ?? ds 1 C367 ?? ds 1 C368 ?? ds 1 C369 ?? ds 1 C36A ?? ds 1 C36B ?? ds 1 C36C ?? ds 1 C36D ?? ds 1 C36E ?? ds 1 C36F ?? ds 1 C370 ?? ds 1 C371 ?? ds 1 C372 ?? ds 1 C373 ?? ds 1 C374 ?? ds 1 C375 ?? ds 1 C376 ?? ds 1 C377 ?? ds 1 C378 ?? ds 1 C379 ?? ds 1 C37A ?? ds 1 C37B ?? ds 1 C37C ?? ds 1 C37D ?? ds 1 C37E ?? ds 1 C37F ?? ds 1 C380 ?? ds 1 C381 ?? ds 1 C382 ?? ds 1 C383 ?? ds 1 C384 ?? ds 1 C385 ?? ds 1 C386 ?? ds 1 C387 ?? ds 1 C388 ?? ds 1 C389 ?? ds 1 C38A ?? ds 1 C38B ?? ds 1 C38C ?? unk_C38C: ds 1 ; ... C38D ?? ds 1 C38E ?? ds 1 C38F ?? ds 1 C390 ?? ds 1 C391 ?? ds 1 C392 ?? ds 1 C393 ?? ds 1 C394 ?? ds 1 C395 ?? ds 1 C396 ?? ds 1 C397 ?? ds 1 C398 ?? ds 1 C399 ?? ds 1 C39A ?? ds 1 C39B ?? ds 1 C39C ?? ds 1 C39D ?? ds 1 C39E ?? ds 1 C39F ?? ds 1 C3A0 ?? ds 1 C3A1 ?? ds 1 C3A2 ?? ds 1 C3A3 ?? ds 1 C3A4 ?? ds 1 C3A5 ?? ds 1 C3A6 ?? ds 1 C3A7 ?? ds 1 C3A8 ?? ds 1 C3A9 ?? ds 1 C3AA ?? ds 1 C3AB ?? ds 1 C3AC ?? ds 1 C3AD ?? ds 1 C3AE ?? ds 1 C3AF ?? ds 1 C3B0 ?? ds 1 C3B1 ?? ds 1 C3B2 ?? ds 1 C3B3 ?? ds 1 C3B4 ?? ds 1 C3B5 ?? ds 1 C3B6 ?? ds 1 C3B7 ?? ds 1 C3B8 ?? ds 1 C3B9 ?? ds 1 C3BA ?? ds 1 C3BB ?? ds 1 C3BC ?? ds 1 C3BD ?? ?? ?? ?? dword_C3BD: ds 4 ; ... C3BD ; XXX might actually be 48 bits C3C1 ?? ?? ds 2 C3C3 ?? ?? ?? ??+ ds 1 C3C3 ?? ?? ds 1 C3C3 ds 1 C3C3 ds 1 C3C3 ds 1 C3C3 ds 1 C3C9 ?? ?? ?? ?? dword_C3C9: ds 4 ; ... C3C9 ; XXX this might actually be 48bits C3CD ?? ?? word_C3CD: ds 2 ; XXX this might actually be part of the previous item C3CF ?? unk_C3CF: ds 1 C3D0 ?? unk_C3D0: ds 1 ; ... C3D1 ?? unk_C3D1: ds 1 C3D2 ?? ds 1 C3D3 ?? ds 1 C3D4 ?? ds 1 C3D5 ?? unk_C3D5: ds 1 ; ... C3D6 ?? ds 1 C3D7 ?? unk_C3D7: ds 1 C3D8 ?? ds 1 C3D9 ?? unk_C3D9: ds 1 ; ... C3DA ?? ds 1 C3DB ?? ds 1 C3DC ?? ds 1 C3DD ?? unk_C3DD: ds 1 ; ... C3DE ?? ds 1 C3DF ?? ds 1 C3E0 ?? ds 1 C3E1 ?? unk_C3E1: ds 1 ; ... C3E2 ?? ds 1 C3E3 ?? ds 1 C3E4 ?? ds 1 C3E5 ?? unk_C3E5: ds 1 ; ... C3E6 ?? ds 1 C3E7 ?? ds 1 C3E8 ?? ds 1 C3E9 ?? unk_C3E9: ds 1 ; ... C3EA ?? ds 1 C3EB ?? ds 1 C3EC ?? ds 1 C3ED ?? unk_C3ED: ds 1 ; ... C3EE ?? ds 1 C3EF ?? ds 1 C3F0 ?? ds 1 C3F1 ?? unk_C3F1: ds 1 ; ... C3F2 ?? ds 1 C3F3 ?? ds 1 C3F4 ?? ds 1 C3F5 ?? unk_C3F5: ds 1 ; ... C3F6 ?? ds 1 C3F7 ?? unk_C3F7: ds 1 C3F8 ?? ds 1 C3F9 ?? unk_C3F9: ds 1 ; ... C3FA ?? ds 1 C3FB ?? ds 1 C3FC ?? ds 1 C3FD ?? unk_C3FD: ds 1 ; ... C3FE ?? ds 1 C3FF ?? unk_C3FF: ds 1 C400 ?? ds 1 C401 ?? unk_C401: ds 1 ; ... C402 ?? ds 1 C403 ?? unk_C403: ds 1 C404 ?? ds 1 C405 ?? unk_C405: ds 1 ; ... C406 ?? ds 1 C407 ?? ds 1 C408 ?? ds 1 C409 ?? ds 1 C40A ?? ds 1 C40B ?? ds 1 C40C ?? ds 1 C40D ?? unk_C40D: ds 1 ; ... C40E ?? ds 1 C40F ?? unk_C40F: ds 1 C410 ?? ds 1 C411 ?? unk_C411: ds 1 C412 ?? ds 1 C413 ?? unk_C413: ds 1 C414 ?? ds 1 C415 ?? unk_C415: ds 1 C416 ?? ds 1 C417 ?? unk_C417: ds 1 ; ... C418 ?? ds 1 C419 ?? ds 1 C41A ?? ds 1 C41B ?? unk_C41B: ds 1 ; ... C41C ?? ds 1 C41D ?? ds 1 C41E ?? ds 1 C41F ?? ds 1 C420 ?? ds 1 C421 ?? ds 1 C422 ?? ds 1 C423 ?? ds 1 C424 ?? ds 1 C425 ?? ds 1 C426 ?? ds 1 C427 ?? ds 1 C428 ?? ds 1 C429 ?? ds 1 C42A ?? ds 1 C42B ?? ds 1 C42C ?? ds 1 C42D ?? ds 1 C42E ?? ds 1 C42F ?? ds 1 C430 ?? ds 1 C431 ?? ds 1 C432 ?? ds 1 C433 ?? ds 1 C434 ?? ds 1 C435 ?? ds 1 C436 ?? ds 1 C437 ?? ds 1 C438 ?? ds 1 C439 ?? byte_C439: ds 1 ; ... C43A ?? ds 1 C43B ?? ds 1 C43C ?? ds 1 C43D ?? ds 1 C43E ?? ds 1 C43F ?? ds 1 C440 ?? ds 1 C441 ?? unk_C441: ds 1 C442 ?? unk_C442: ds 1 C443 ?? ds 1 C444 ?? ds 1 C445 ?? ds 1 C446 ?? unk_C446: ds 1 C447 ?? unk_C447: ds 1 C448 ?? unk_C448: ds 1 C449 ?? ds 1 C44A ?? ds 1 C44B ?? ds 1 C44C ?? ds 1 C44D ?? ds 1 C44E ?? ds 1 C44F ?? ds 1 C450 ?? ds 1 C451 ?? ds 1 C452 ?? ds 1 C453 ?? ds 1 C454 ?? ds 1 C455 ?? ds 1 C456 ?? ds 1 C457 ?? ds 1 C458 ?? ds 1 C459 ?? ds 1 C45A ?? ds 1 C45B ?? ds 1 C45C ?? ds 1 C45D ?? unk_C45D: ds 1 C45E ?? ds 1 C45F ?? ds 1 C460 ?? ds 1 C461 ?? ds 1 C462 ?? ds 1 C463 ?? unk_C463: ds 1 C464 ?? ds 1 C465 ?? unk_C465: ds 1 C466 ?? ds 1 C467 ?? ds 1 C468 ?? ds 1 C469 ?? ds 1 C46A ?? ds 1 C46B ?? ds 1 C46C ?? ds 1 C46D ?? ds 1 C46E ?? ds 1 C46F ?? ds 1 C470 ?? unk_C470: ds 1 C471 ?? ds 1 C472 ?? unk_C472: ds 1 ; XXX seems a 12 char buffer (for hex of 48-bit value) C473 ?? ds 1 C474 ?? ds 1 C475 ?? ds 1 C476 ?? ds 1 C477 ?? ds 1 C478 ?? ds 1 C479 ?? ds 1 C47A ?? ds 1 C47B ?? ds 1 C47C ?? unk_C47C: ds 1 ; ... C47D ?? unk_C47D: ds 1 ; ... C47D ; XXX seems a 12 char buffer end C47E ?? ds 1 C47F ?? ds 1 C480 ?? ds 1 C481 ?? unk_C481: ds 1 ; XXX might be a 48-bit value C482 ?? unk_C482: ds 1 ; ... C483 ?? unk_C483: ds 1 C484 ?? ds 1 C485 ?? unk_C485: ds 1 C486 ?? unk_C486: ds 1 ; ... C487 ?? ?? word_C487: ds 2 ; ... C489 ?? ?? word_C489: ds 2 ; ... C48B ?? ds 1 C48C ?? ds 1 C48D ?? byte_C48D: ds 1 ; ... C48E ?? unk_C48E: ds 1 ; ... C48F ?? ds 1 C490 ?? unk_C490: ds 1 C491 ?? ds 1 C492 ?? ds 1 C493 ?? ds 1 C494 ?? ds 1 C495 ?? ds 1 C496 ?? ?? word_C496: ds 2 ; ... C498 ?? ?? ?? ??+byte_C498: ds 1 ; ... C498 ?? ?? ?? ??+ ds 1 C498 ?? ?? ?? ?? ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C498 ds 1 C4A4 ?? unk_C4A4: ds 1 ; ... C4A5 ?? ds 1 C4A6 ?? ds 1 C4A7 ?? ds 1 C4A8 ?? ds 1 C4A9 ?? ds 1 C4AA ?? ds 1 C4AB ?? ds 1 C4AC ?? unk_C4AC: ds 1 C4AD ?? byte_C4AD: ds 1 ; ... C4AD ; 0, 3, 4, (others via params), backed up in C23D C4AE ?? ds 1 C4AF ?? ds 1 C4B0 ?? ds 1 C4B1 ?? ds 1 C4B2 ?? ds 1 C4B3 ?? unk_C4B3: ds 1 ; ... C4B4 ?? ds 1 C4B5 ?? unk_C4B5: ds 1 C4B6 ?? ds 1 C4B7 ?? unk_C4B7: ds 1 ; ... C4B8 ?? ds 1 C4B9 ?? ds 1 C4BA ?? ds 1 C4BB ?? ds 1 C4BC ?? ds 1 C4BD ?? ds 1 C4BE ?? ds 1 C4BF ?? ds 1 C4C0 ?? ds 1 C4C1 ?? ds 1 C4C2 ?? ds 1 C4C3 ?? ds 1 C4C4 ?? ds 1 C4C5 ?? ds 1 C4C6 ?? ds 1 C4C7 ?? ds 1 C4C8 ?? ds 1 C4C9 ?? ds 1 C4CA ?? ds 1 C4CB ?? ds 1 C4CC ?? ds 1 C4CD ?? ds 1 C4CE ?? ds 1 C4CF ?? ds 1 C4D0 ?? ds 1 C4D1 ?? ds 1 C4D2 ?? ds 1 C4D3 ?? ds 1 C4D4 ?? ds 1 C4D5 ?? ds 1 C4D6 ?? ds 1 C4D7 ?? unk_C4D7: ds 1 ; ... C4D8 ?? ds 1 C4D9 ?? ds 1 C4DA ?? ds 1 C4DB ?? ds 1 C4DC ?? ds 1 C4DD ?? ds 1 C4DE ?? ds 1 C4DF ?? ds 1 C4E0 ?? ds 1 C4E1 ?? ds 1 C4E2 ?? ds 1 C4E3 ?? ds 1 C4E4 ?? ds 1 C4E5 ?? ds 1 C4E6 ?? ds 1 C4E7 ?? ds 1 C4E8 ?? ds 1 C4E9 ?? ds 1 C4EA ?? ds 1 C4EB ?? ds 1 C4EC ?? ds 1 C4ED ?? ds 1 C4EE ?? ds 1 C4EF ?? ds 1 C4F0 ?? ds 1 C4F1 ?? ds 1 C4F2 ?? ds 1 C4F3 ?? unk_C4F3: ds 1 C4F4 ?? unk_C4F4: ds 1 C4F5 ?? ds 1 C4F6 ?? unk_C4F6: ds 1 ; ... C4F7 ?? ds 1 C4F8 ?? ds 1 C4F9 ?? ds 1 C4FA ?? ds 1 C4FB ?? ds 1 C4FC ?? ds 1 C4FD ?? ds 1 C4FE ?? unk_C4FE: ds 1 ; ... C4FF ?? ds 1 C500 ?? unk_C500: ds 1 C501 ?? ds 1 C502 ?? unk_C502: ds 1 ; ... C503 ?? ds 1 C504 ?? ds 1 C505 ?? ds 1 C506 ?? unk_C506: ds 1 C507 ?? unk_C507: ds 1 C508 ?? ds 1 C509 ?? ds 1 C50A ?? ds 1 C50B ?? ds 1 C50C ?? byte_C50C: ds 1 ; ... C50D ?? byte_C50D: ds 1 ; ... C50E ?? byte_C50E: ds 1 ; ... C50F ?? unk_C50F: ds 1 ; ... C510 ?? ds 1 C511 ?? unk_C511: ds 1 C512 ?? ds 1 C513 ?? unk_C513: ds 1 ; ... C514 ?? ds 1 C515 ?? ds 1 C516 ?? ds 1 C517 ?? unk_C517: ds 1 ; ... C518 ?? ds 1 C519 ?? ds 1 C51A ?? ds 1 C51B ?? unk_C51B: ds 1 ; ... C51C ?? ds 1 C51D ?? unk_C51D: ds 1 C51E ?? ds 1 C51F ?? byte_C51F: ds 1 ; ... C520 ?? ds 1 C521 ?? ds 1 C522 ?? ds 1 C523 ?? ds 1 C524 ?? ds 1 C525 ?? ds 1 C526 ?? ds 1 C527 ?? ds 1 C528 ?? ds 1 C529 ?? ds 1 C52A ?? ds 1 C52B ?? ds 1 C52C ?? ds 1 C52D ?? unk_C52D: ds 1 ; XXX a flag of sorts C52E ?? unk_C52E: ds 1 ; ... C52F ?? ds 1 C530 ?? ds 1 C531 ?? ds 1 C532 ?? unk_C532: ds 1 ; ... C533 ?? ds 1 C534 ?? ds 1 C535 ?? ds 1 C536 ?? ds 1 C537 ?? ds 1 C538 ?? ds 1 C539 ?? ds 1 C53A ?? byte_C53A: ds 1 ; ... C53A ; XXX flags; 5 4 3 2 1 C53B ?? unk_C53B: ds 1 C53C ?? ds 1 C53D ?? ds 1 C53E ?? unk_C53E: ds 1 C53F ?? unk_C53F: ds 1 C540 ?? ds 1 C541 ?? ds 1 C542 ?? ds 1 C543 ?? ds 1 C544 ?? ds 1 C545 ?? ds 1 C546 ?? ds 1 C547 ?? ds 1 C548 ?? ds 1 C549 ?? ds 1 C54A ?? ds 1 C54B ?? ds 1 C54C ?? ds 1 C54D ?? ds 1 C54E ?? ds 1 C54F ?? ds 1 C550 ?? ds 1 C551 ?? ds 1 C552 ?? ds 1 C553 ?? ds 1 C554 ?? ds 1 C555 ?? ds 1 C556 ?? ds 1 C557 ?? ds 1 C558 ?? ds 1 C559 ?? ds 1 C55A ?? ds 1 C55B ?? ds 1 C55C ?? ds 1 C55D ?? ds 1 C55E ?? ds 1 C55F ?? ds 1 C560 ?? ds 1 C561 ?? ds 1 C562 ?? ds 1 C563 ?? ds 1 C564 ?? ds 1 C565 ?? ds 1 C566 ?? ds 1 C567 ?? ds 1 C568 ?? ds 1 C569 ?? ds 1 C56A ?? ds 1 C56B ?? byte_C56B: ds 1 ; ... C56C ?? ds 1 C56D ?? ds 1 C56E ?? unk_C56E: ds 1 C56F ?? unk_C56F: ds 1 ; ... C570 ?? ds 1 C571 ?? ds 1 C572 ?? ds 1 C573 ?? unk_C573: ds 1 ; ... C574 ?? ds 1 C575 ?? ds 1 C576 ?? ds 1 C577 ?? unk_C577: ds 1 ; ... C578 ?? ds 1 C579 ?? ds 1 C57A ?? ds 1 C57B ?? unk_C57B: ds 1 C57C ?? ds 1 C57D ?? unk_C57D: ds 1 C57E ?? ds 1 C57F ?? unk_C57F: ds 1 C580 ?? ds 1 C581 ?? unk_C581: ds 1 C582 ?? unk_C582: ds 1 ; ... C583 ?? ds 1 C584 ?? ds 1 C585 ?? ds 1 C586 ?? ds 1 C587 ?? ds 1 C588 ?? ds 1 C589 ?? unk_C589: ds 1 ; ... C58A ?? ds 1 C58B ?? ds 1 C58C ?? ds 1 C58D ?? ds 1 C58E ?? ds 1 C58F ?? ds 1 C590 ?? ds 1 C591 ?? ds 1 C592 ?? ds 1 C593 ?? ds 1 C594 ?? ds 1 C595 ?? ds 1 C596 ?? ds 1 C597 ?? ds 1 C598 ?? ds 1 C599 ?? ds 1 C59A ?? ds 1 C59B ?? ds 1 C59C ?? unk_C59C: ds 1 ; ... C59D ?? ds 1 C59E ?? ds 1 C59F ?? ds 1 C5A0 ?? ds 1 C5A1 ?? ds 1 C5A2 ?? ds 1 C5A3 ?? ds 1 C5A4 ?? ds 1 C5A5 ?? ds 1 C5A6 ?? ds 1 C5A7 ?? ds 1 C5A8 ?? unk_C5A8: ds 1 C5A9 ?? ds 1 C5AA ?? ds 1 C5AB ?? ds 1 C5AC ?? unk_C5AC: ds 1 C5AD ?? ds 1 C5AE ?? unk_C5AE: ds 1 C5AF ?? ?? ?? ?? dword_C5AF: ds 4 ; ... C5AF ; XXX this might actually be 48 bits C5B3 ?? ?? word_C5B3: ds 2 ; ... C5B3 ; XXX this might actually be part of the previous item C5B5 ?? ds 1 C5B6 ?? ds 1 C5B7 ?? ds 1 C5B8 ?? ds 1 C5B9 ?? ds 1 C5BA ?? unk_C5BA: ds 1 C5BB ?? ds 1 C5BC ?? unk_C5BC: ds 1 ; ... C5BD ?? ds 1 C5BE ?? ds 1 C5BF ?? ds 1 C5C0 ?? ds 1 C5C1 ?? ds 1 C5C2 ?? byte_C5C2: ds 1 ; ... C5C3 ?? ds 1 C5C4 ?? unk_C5C4: ds 1 C5C5 ?? ds 1 C5C6 ?? unk_C5C6: ds 1 C5C7 ?? ds 1 C5C8 ?? ds 1 C5C9 ?? ds 1 C5CA ?? ds 1 C5CB ?? ds 1 C5CC ?? ds 1 C5CD ?? ds 1 C5CE ?? ds 1 C5CF ?? ds 1 C5D0 ?? ds 1 C5D1 ?? ds 1 C5D2 ?? ds 1 C5D3 ?? ds 1 C5D4 ?? ds 1 C5D5 ?? ds 1 C5D6 ?? ds 1 C5D7 ?? ds 1 C5D8 ?? ds 1 C5D9 ?? ds 1 C5DA ?? ds 1 C5DB ?? ds 1 C5DC ?? ds 1 C5DD ?? ds 1 C5DE ?? ds 1 C5DF ?? ds 1 C5E0 ?? ds 1 C5E1 ?? ds 1 C5E2 ?? ds 1 C5E3 ?? ds 1 C5E4 ?? ds 1 C5E5 ?? ds 1 C5E6 ?? ds 1 C5E7 ?? ds 1 C5E8 ?? ds 1 C5E9 ?? ds 1 C5EA ?? ds 1 C5EB ?? ds 1 C5EC ?? ds 1 C5ED ?? ds 1 C5EE ?? ds 1 C5EF ?? ds 1 C5F0 ?? ds 1 C5F1 ?? ds 1 C5F2 ?? ds 1 C5F3 ?? ds 1 C5F4 ?? ds 1 C5F5 ?? ds 1 C5F6 ?? ds 1 C5F7 ?? ds 1 C5F8 ?? ds 1 C5F9 ?? ds 1 C5FA ?? ds 1 C5FB ?? ds 1 C5FC ?? ds 1 C5FD ?? ds 1 C5FE ?? ds 1 C5FF ?? ds 1 C600 ?? ds 1 C601 ?? ds 1 C602 ?? ds 1 C603 ?? ds 1 C604 ?? ds 1 C605 ?? ds 1 C606 ?? ds 1 C607 ?? ds 1 C608 ?? ds 1 C609 ?? ds 1 C60A ?? ds 1 C60B ?? ds 1 C60C ?? ds 1 C60D ?? ds 1 C60E ?? ds 1 C60F ?? ds 1 C610 ?? ds 1 C611 ?? ds 1 C612 ?? ds 1 C613 ?? ds 1 C614 ?? ds 1 C615 ?? ds 1 C616 ?? ds 1 C617 ?? ds 1 C618 ?? ds 1 C619 ?? ds 1 C61A ?? ds 1 C61B ?? ds 1 C61C ?? ds 1 C61D ?? ds 1 C61E ?? ds 1 C61F ?? ds 1 C620 ?? ds 1 C621 ?? ds 1 C622 ?? ds 1 C623 ?? ds 1 C624 ?? ds 1 C625 ?? ds 1 C626 ?? ds 1 C627 ?? ds 1 C628 ?? ds 1 C629 ?? ds 1 C62A ?? ds 1 C62B ?? ds 1 C62C ?? ds 1 C62D ?? ds 1 C62E ?? ds 1 C62F ?? ds 1 C630 ?? ds 1 C631 ?? ds 1 C632 ?? ds 1 C633 ?? ds 1 C634 ?? ds 1 C635 ?? ds 1 C636 ?? ds 1 C637 ?? ds 1 C638 ?? ds 1 C639 ?? ds 1 C63A ?? ds 1 C63B ?? ds 1 C63C ?? ds 1 C63D ?? ds 1 C63E ?? ds 1 C63F ?? ds 1 C640 ?? ds 1 C641 ?? ds 1 C642 ?? ds 1 C643 ?? ds 1 C644 ?? ds 1 C645 ?? ds 1 C646 ?? ds 1 C647 ?? ds 1 C648 ?? ds 1 C649 ?? ds 1 C64A ?? ds 1 C64B ?? ds 1 C64C ?? ds 1 C64D ?? ds 1 C64E ?? ds 1 C64F ?? ds 1 C650 ?? ds 1 C651 ?? ds 1 C652 ?? ds 1 C653 ?? ds 1 C654 ?? ds 1 C655 ?? ds 1 C656 ?? ds 1 C657 ?? ds 1 C658 ?? ds 1 C659 ?? ds 1 C65A ?? ds 1 C65B ?? ds 1 C65C ?? ds 1 C65D ?? ds 1 C65E ?? ds 1 C65F ?? ds 1 C660 ?? ds 1 C661 ?? ds 1 C662 ?? ds 1 C663 ?? ds 1 C664 ?? ds 1 C665 ?? ds 1 C666 ?? ds 1 C667 ?? ds 1 C668 ?? ds 1 C669 ?? ds 1 C66A ?? ds 1 C66B ?? ds 1 C66C ?? ds 1 C66D ?? ds 1 C66E ?? ds 1 C66F ?? ds 1 C670 ?? ds 1 C671 ?? ds 1 C672 ?? ds 1 C673 ?? ds 1 C674 ?? ds 1 C675 ?? ds 1 C676 ?? ds 1 C677 ?? ds 1 C678 ?? ds 1 C679 ?? ds 1 C67A ?? ds 1 C67B ?? ds 1 C67C ?? ds 1 C67D ?? ds 1 C67E ?? ds 1 C67F ?? ds 1 C680 ?? ds 1 C681 ?? ds 1 C682 ?? ds 1 C683 ?? ds 1 C684 ?? ds 1 C685 ?? ds 1 C686 ?? ds 1 C687 ?? ds 1 C688 ?? ds 1 C689 ?? ds 1 C68A ?? ds 1 C68B ?? ds 1 C68C ?? ds 1 C68D ?? ds 1 C68E ?? ds 1 C68F ?? ds 1 C690 ?? ds 1 C691 ?? ds 1 C692 ?? ds 1 C693 ?? ds 1 C694 ?? ds 1 C695 ?? ds 1 C696 ?? ds 1 C697 ?? ds 1 C698 ?? ds 1 C699 ?? ds 1 C69A ?? ds 1 C69B ?? ds 1 C69C ?? ds 1 C69D ?? ds 1 C69E ?? ds 1 C69F ?? ds 1 C6A0 ?? ds 1 C6A1 ?? ds 1 C6A2 ?? ds 1 C6A3 ?? ds 1 C6A4 ?? ds 1 C6A5 ?? ds 1 C6A6 ?? ds 1 C6A7 ?? ds 1 C6A8 ?? ds 1 C6A9 ?? ds 1 C6AA ?? ds 1 C6AB ?? ds 1 C6AC ?? ds 1 C6AD ?? ds 1 C6AE ?? ds 1 C6AF ?? ds 1 C6B0 ?? ds 1 C6B1 ?? ds 1 C6B2 ?? ds 1 C6B3 ?? ds 1 C6B4 ?? ds 1 C6B5 ?? ds 1 C6B6 ?? ds 1 C6B7 ?? ds 1 C6B8 ?? ds 1 C6B9 ?? ds 1 C6BA ?? ds 1 C6BB ?? ds 1 C6BC ?? ds 1 C6BD ?? ds 1 C6BE ?? ds 1 C6BF ?? ds 1 C6C0 ?? ds 1 C6C1 ?? ds 1 C6C2 ?? ds 1 C6C3 ?? ds 1 C6C4 ?? ds 1 C6C5 ?? ds 1 C6C6 ?? ds 1 C6C7 ?? ds 1 C6C8 ?? ds 1 C6C9 ?? ds 1 C6CA ?? ds 1 C6CB ?? ds 1 C6CC ?? ds 1 C6CD ?? ds 1 C6CE ?? ds 1 C6CF ?? ds 1 C6D0 ?? ds 1 C6D1 ?? ds 1 C6D2 ?? ds 1 C6D3 ?? ds 1 C6D4 ?? ds 1 C6D5 ?? ds 1 C6D6 ?? ds 1 C6D7 ?? ds 1 C6D8 ?? ds 1 C6D9 ?? ds 1 C6DA ?? ds 1 C6DB ?? ds 1 C6DC ?? ds 1 C6DD ?? ds 1 C6DE ?? ds 1 C6DF ?? ds 1 C6E0 ?? ds 1 C6E1 ?? ds 1 C6E2 ?? ds 1 C6E3 ?? ds 1 C6E4 ?? ds 1 C6E5 ?? ds 1 C6E6 ?? ds 1 C6E7 ?? ds 1 C6E8 ?? ds 1 C6E9 ?? ds 1 C6EA ?? ds 1 C6EB ?? ds 1 C6EC ?? ds 1 C6ED ?? ds 1 C6EE ?? ds 1 C6EF ?? ds 1 C6F0 ?? ds 1 C6F1 ?? ds 1 C6F2 ?? ds 1 C6F3 ?? ds 1 C6F4 ?? ds 1 C6F5 ?? ds 1 C6F6 ?? ds 1 C6F7 ?? ds 1 C6F8 ?? ds 1 C6F9 ?? ds 1 C6FA ?? ds 1 C6FB ?? ds 1 C6FC ?? ds 1 C6FD ?? ds 1 C6FE ?? ds 1 C6FF ?? ds 1 C700 ?? ds 1 C701 ?? ds 1 C702 ?? ds 1 C703 ?? ds 1 C704 ?? ds 1 C705 ?? ds 1 C706 ?? ds 1 C707 ?? ds 1 C708 ?? ds 1 C709 ?? ds 1 C70A ?? ds 1 C70B ?? ds 1 C70C ?? ds 1 C70D ?? ds 1 C70E ?? ds 1 C70F ?? ds 1 C710 ?? ds 1 C711 ?? ds 1 C712 ?? ds 1 C713 ?? ds 1 C714 ?? ds 1 C715 ?? ds 1 C716 ?? ds 1 C717 ?? ds 1 C718 ?? ds 1 C719 ?? ds 1 C71A ?? ds 1 C71B ?? ds 1 C71C ?? ds 1 C71D ?? ds 1 C71E ?? ds 1 C71F ?? ds 1 C720 ?? ds 1 C721 ?? ds 1 C722 ?? ds 1 C723 ?? ds 1 C724 ?? ds 1 C725 ?? ds 1 C726 ?? ds 1 C727 ?? ds 1 C728 ?? ds 1 C729 ?? ds 1 C72A ?? ds 1 C72B ?? ds 1 C72C ?? ds 1 C72D ?? ds 1 C72E ?? ds 1 C72F ?? ds 1 C730 ?? ds 1 C731 ?? ds 1 C732 ?? ds 1 C733 ?? ds 1 C734 ?? ds 1 C735 ?? ds 1 C736 ?? ds 1 C737 ?? ds 1 C738 ?? ds 1 C739 ?? ds 1 C73A ?? ds 1 C73B ?? ds 1 C73C ?? ds 1 C73D ?? ds 1 C73E ?? ds 1 C73F ?? ds 1 C740 ?? ds 1 C741 ?? ds 1 C742 ?? ds 1 C743 ?? ds 1 C744 ?? ds 1 C745 ?? ds 1 C746 ?? ds 1 C747 ?? ds 1 C748 ?? ds 1 C749 ?? ds 1 C74A ?? ds 1 C74B ?? ds 1 C74C ?? ds 1 C74D ?? ds 1 C74E ?? ds 1 C74F ?? ds 1 C750 ?? ds 1 C751 ?? ds 1 C752 ?? ds 1 C753 ?? ds 1 C754 ?? ds 1 C755 ?? ds 1 C756 ?? ds 1 C757 ?? ds 1 C758 ?? ds 1 C759 ?? ds 1 C75A ?? ds 1 C75B ?? ds 1 C75C ?? ds 1 C75D ?? ds 1 C75E ?? ds 1 C75F ?? ds 1 C760 ?? ds 1 C761 ?? ds 1 C762 ?? ds 1 C763 ?? ds 1 C764 ?? ds 1 C765 ?? ds 1 C766 ?? ds 1 C767 ?? ds 1 C768 ?? ds 1 C769 ?? ds 1 C76A ?? ds 1 C76B ?? ds 1 C76C ?? ds 1 C76D ?? ds 1 C76E ?? ds 1 C76F ?? ds 1 C770 ?? ds 1 C771 ?? ds 1 C772 ?? ds 1 C773 ?? ds 1 C774 ?? ds 1 C775 ?? ds 1 C776 ?? ds 1 C777 ?? ds 1 C778 ?? ds 1 C779 ?? ds 1 C77A ?? ds 1 C77B ?? ds 1 C77C ?? ds 1 C77D ?? ds 1 C77E ?? ds 1 C77F ?? ds 1 C780 ?? ds 1 C781 ?? ds 1 C782 ?? ds 1 C783 ?? ds 1 C784 ?? ds 1 C785 ?? ds 1 C786 ?? ds 1 C787 ?? ds 1 C788 ?? ds 1 C789 ?? ds 1 C78A ?? ds 1 C78B ?? ds 1 C78C ?? ds 1 C78D ?? ds 1 C78E ?? ds 1 C78F ?? ds 1 C790 ?? ds 1 C791 ?? ds 1 C792 ?? ds 1 C793 ?? ds 1 C794 ?? ds 1 C795 ?? ds 1 C796 ?? ds 1 C797 ?? ds 1 C798 ?? ds 1 C799 ?? ds 1 C79A ?? ds 1 C79B ?? ds 1 C79C ?? ds 1 C79D ?? ds 1 C79E ?? ds 1 C79F ?? ds 1 C7A0 ?? ds 1 C7A1 ?? ds 1 C7A2 ?? ds 1 C7A3 ?? ds 1 C7A4 ?? ds 1 C7A5 ?? ds 1 C7A6 ?? ds 1 C7A7 ?? ds 1 C7A8 ?? ds 1 C7A9 ?? ds 1 C7AA ?? ds 1 C7AB ?? ds 1 C7AC ?? ds 1 C7AD ?? ds 1 C7AE ?? ds 1 C7AF ?? ds 1 C7B0 ?? ds 1 C7B1 ?? ds 1 C7B2 ?? ds 1 C7B3 ?? ds 1 C7B4 ?? ds 1 C7B5 ?? ds 1 C7B6 ?? ds 1 C7B7 ?? ds 1 C7B8 ?? ds 1 C7B9 ?? ds 1 C7BA ?? ds 1 C7BB ?? ds 1 C7BC ?? ds 1 C7BD ?? ds 1 C7BE ?? ds 1 C7BF ?? ds 1 C7C0 ?? ds 1 C7C1 ?? ds 1 C7C2 ?? ds 1 C7C3 ?? ds 1 C7C4 ?? ds 1 C7C5 ?? ds 1 C7C6 ?? ds 1 C7C7 ?? ds 1 C7C8 ?? ds 1 C7C9 ?? ds 1 C7CA ?? ds 1 C7CB ?? ds 1 C7CC ?? ds 1 C7CD ?? ds 1 C7CE ?? ds 1 C7CF ?? ds 1 C7D0 ?? ds 1 C7D1 ?? ds 1 C7D2 ?? ds 1 C7D3 ?? ds 1 C7D4 ?? ds 1 C7D5 ?? ds 1 C7D6 ?? ds 1 C7D7 ?? ds 1 C7D8 ?? ds 1 C7D9 ?? ds 1 C7DA ?? ds 1 C7DB ?? ds 1 C7DC ?? ds 1 C7DD ?? ds 1 C7DE ?? ds 1 C7DF ?? ds 1 C7E0 ?? ds 1 C7E1 ?? ds 1 C7E2 ?? ds 1 C7E3 ?? ds 1 C7E4 ?? ds 1 C7E5 ?? ds 1 C7E6 ?? ds 1 C7E7 ?? ds 1 C7E8 ?? ds 1 C7E9 ?? ds 1 C7EA ?? ds 1 C7EB ?? ds 1 C7EC ?? ds 1 C7ED ?? ds 1 C7EE ?? ds 1 C7EF ?? ds 1 C7F0 ?? ds 1 C7F1 ?? ds 1 C7F2 ?? ds 1 C7F3 ?? ds 1 C7F4 ?? ds 1 C7F5 ?? ds 1 C7F6 ?? ds 1 C7F7 ?? ds 1 C7F8 ?? ds 1 C7F9 ?? ds 1 C7FA ?? ds 1 C7FB ?? ds 1 C7FC ?? ds 1 C7FD ?? ds 1 C7FE ?? ds 1 C7FF ?? ds 1 C7FF ; end of 'RAM' C7FF C7FF C7FF end