2725 lines
114 KiB
Plaintext
2725 lines
114 KiB
Plaintext
1: - 4000 SYS_RAM_START equ 0x4000
|
||
2: - 4010 SYS_BUF_START equ 0x4010
|
||
3: - 4110 PRG_RAM_START equ 0x4110
|
||
4: - FF00 PRG_RAM_TOP equ 0xFF00
|
||
5: - FFFF STACK_RAM_TOP equ 0xFFFF
|
||
6:
|
||
7: ;VAR_CONSOLE_CONF equ 0x07 ;CLK/TRG Clock @ 1843220.5/s
|
||
8: - 000F VAR_CONSOLE_CONF equ 0x0F ;CPU/16 Clock @ 230402.5625/s
|
||
9:
|
||
10: - 0018 VAR_CONSOLE_BAUD equ 24 ;BAUD timer constant
|
||
11: ;CLK/TRG Clock @ 1843220.5/s
|
||
12: ; -> 0x16 : 14400
|
||
13: ;CPU/16 Clock @ 230402.5625/s
|
||
14: ; -> 12 : 19200
|
||
15: ; -> 24 : 9600
|
||
16:
|
||
17: ; include IO device addresses
|
||
18: .include "addresses.s"
|
||
**** include/addresses.s ****
|
||
1: - 0000 CS_BANK equ 0000000b
|
||
2: - 0001 CS_DIP equ 0000001b
|
||
3: - 0004 CS_CTC_0 equ 0000100b
|
||
4: - 0005 CS_CTC_1 equ 0000101b
|
||
5: - 0006 CS_CTC_2 equ 0000110b
|
||
6: - 0007 CS_CTC_3 equ 0000111b
|
||
7: - 0008 CS_SIO_A_D equ 0001000b
|
||
8: - 0009 CS_SIO_A_C equ 0001001b
|
||
9: - 000A CS_SIO_B_D equ 0001010b
|
||
10: - 000B CS_SIO_B_C equ 0001011b
|
||
11:
|
||
12: - 0020 IO_RTC_SEC0 equ 00100000b
|
||
13: - 0021 IO_RTC_SEC1 equ 00100001b
|
||
14: - 0022 IO_RTC_MIN0 equ 00100010b
|
||
15: - 0023 IO_RTC_MIN1 equ 00100011b
|
||
16: - 0024 IO_RTC_HOUR equ 00100100b
|
||
17: - 0025 IO_RTC_AMPM equ 00100101b
|
||
18: - 0026 IO_RTC_DAY0 equ 00100110b
|
||
19: - 0027 IO_RTC_DAY1 equ 00100111b
|
||
20: - 0028 IO_RTC_MON0 equ 00101000b
|
||
21: - 0029 IO_RTC_MON1 equ 00101001b
|
||
22: - 002A IO_RTC_YERR0 equ 00101010b
|
||
23: - 002B IO_RTC_YEAR1 equ 00101011b
|
||
24: - 002C IO_RTC_WEEK equ 00101100b
|
||
25: - 002D IO_RTC_CTR_D equ 00101101b
|
||
26: - 002E IO_RTC_CTR_E equ 00101110b
|
||
27: - 002F IO_RTC_CTR_F equ 00101111b
|
||
28:
|
||
29: - 0040 IO_AY0_ADDR equ 01000000b ;64
|
||
30: - 0041 IO_AY0_DATA equ 01000001b ;65
|
||
31: - 0042 IO_AY1_ADDR equ 01000010b ;66
|
||
32: - 0043 IO_AY1_DATA equ 01000011b ;67
|
||
33:
|
||
34: - 0000 START_ROM equ 0x0000
|
||
35: - 0020 IO_REG0 equ 0x20
|
||
36:
|
||
37: - 0081 VDP_REG equ 0x81
|
||
38: - 0080 VDP_MEM equ 0x80
|
||
39:
|
||
40: - 0100 PROG_ROM_START equ 0x0100
|
||
41: - 4000 PROG_MEM_START equ 04000h
|
||
42:
|
||
43: - 0060 IO_PIO_0_A_D equ 0x60
|
||
44: - 0061 IO_PIO_0_A_C equ 0x61
|
||
45: - 0062 IO_PIO_0_B_D equ 0x62
|
||
46: - 0063 IO_PIO_0_B_C equ 0x63
|
||
47:
|
||
48: - 0064 IO_PIO_1_A_D equ 0x64 ;PS2
|
||
49: - 0065 IO_PIO_1_A_C equ 0x65
|
||
50: - 0066 IO_PIO_1_B_D equ 0x66
|
||
51: - 0067 IO_PIO_1_B_C equ 0x67
|
||
**** main.asm ****
|
||
19:
|
||
20: - 0000 org 0x0000
|
||
21: - 0000 RST_00: ;Hardware Restart
|
||
22: 0+10 0000 C35000 jp mon_start_init_sound
|
||
23:
|
||
24: - 0008 org 0x0008
|
||
25: - 0008 RST_08 ;Print Char
|
||
26: 10+10 0008 C3B60E jp EXEC_RST_08
|
||
27:
|
||
28: - 0010 org 0x0010
|
||
29: - 0010 RST_10 ;receive char
|
||
30: 20+10 0010 C3BA0E jp EXEC_RST_10
|
||
31:
|
||
32: - 0018 org 0x0018
|
||
33: - 0018 RST_18 ;Buffer length
|
||
34: 30+10 0018 C3C60E jp EXEC_RST_18
|
||
35:
|
||
36:
|
||
37: - 001B INT_VEC:
|
||
38: - 0044 org 0x0044
|
||
39: ;DEFW EXEC_INT_VDP
|
||
40:
|
||
41: ;memory var template
|
||
42: - 0044 mon_var_template:
|
||
43: - 4000 phase SYS_RAM_START
|
||
44:
|
||
45: - 4000 var_buffer_len:
|
||
46: - 4000 00 defb 0
|
||
47: - 4001 var_last_char:
|
||
48: - 4001 00 defb 0
|
||
49: - 4002 var_curserx:
|
||
50: - 4002 00 defb 0
|
||
51: - 4003 var_cursery:
|
||
52: - 4003 00 defb 0
|
||
53: - 4004 var_curserstate:
|
||
54: - 4004 00 defb 0
|
||
55: - 4005 var_curseron:
|
||
56: - 4005 00 defb 0
|
||
57: - 4006 var_curserchar:
|
||
58: - 4006 00 defb 0
|
||
59: - 4007 var_curserlastaddr:
|
||
60: - 4007 0000 defw 0
|
||
61: - 4009 var_scratch:
|
||
62: - 4009 ..4018 00 defs 16 ;16 bytes space for scratch vars
|
||
63: - 4019 var_ps2mem:
|
||
64: - 4019 ..4028 00 defs 16 ;16 bytes space for scratch vars
|
||
65: - 4029 var_buffer:
|
||
66: - 4029 00 defb 0 ;var lentgh
|
||
67:
|
||
68: - 402A mon_var_template_end:
|
||
69: - 006E dephase
|
||
70: ;end memory var template
|
||
71: - 0050 org 0x0050
|
||
72: - 0050 mon_start_init_sound:
|
||
73: ;CALL BTLDR_ENTRY ;call bootloader first
|
||
74: ;ld D,0x08 ; Select register #8
|
||
75: ;ld A,0x00 ; Volume channel A 0
|
||
76: ;call AY0_WRITE_REG
|
||
77: ;ld D,0x09 ; Select register #9
|
||
78: ;ld A,0x00 ; Volume channel B 0
|
||
79: ;call AY0_WRITE_REG
|
||
80: ;ld D,0x0A ; Select register #10
|
||
81: ;ld A,0x00 ; Volume channel C 0
|
||
82: ;call AY0_WRITE_REG
|
||
83:
|
||
84: - 0050 mon_start_init_ctc:
|
||
85: 40+10 0050 31FFFF ld sp, 0xffff
|
||
86: ; Set CTC Ch2 Interrupt Vector
|
||
87: ;LD A,40h ; it vector defined in bit 73,bit 21 don't care, bit 0 = 0
|
||
88: ;OUT (IO_CTC0_C0),A
|
||
89: ; Init CTC Channel 2
|
||
90: ;LD A,10100111b
|
||
91: ;OUT (IO_CTC0_C2),A
|
||
92: ;LD A,0x34 ; 55Hz ISR
|
||
93: ;LD A,0xFF ; 55Hz ISR
|
||
94: ;OUT (IO_CTC0_C2),A
|
||
95:
|
||
96: 50+4 0053 AF xor a
|
||
97: ;ld i, a
|
||
98: ;im 2 ;set int mode 2
|
||
99:
|
||
100: 54+13 0054 320440 ld (var_curserstate),a
|
||
101: 67+13 0057 320540 ld (var_curseron),a
|
||
102: 80+7 005A 3E20 ld a, " "
|
||
103: 87+13 005C 320640 ld (var_curserchar),a
|
||
104:
|
||
105:
|
||
106: ;ei ; Enable Interrupts
|
||
107:
|
||
108: ;jr mon_start_ram ;skip serial, cause not used atm
|
||
109: - 005F mon_start_init_serial:
|
||
110: 100+17 005F CD7002 call CONSOLE_INIT
|
||
111: - 0062 mon_start_ram:
|
||
112: 117+10 0062 214400 ld hl,mon_var_template
|
||
113: 127+10 0065 112A40 ld de,mon_var_template_end
|
||
114: 137+10 0068 010040 ld bc,SYS_RAM_START
|
||
115: - 006B mon_start_ram_loop:
|
||
116: 147+7 006B 7E ld a,(hl) ;copy values
|
||
117: 154+7 006C 02 ld (bc),a
|
||
118: 161+6 006D 23 inc hl
|
||
119: 167+6 006E 03 inc bc
|
||
120: 173+11 006F E5 push hl ;check if end is reached
|
||
121: 184+15 0070 ED52 sbc hl,de
|
||
122: 199+10 0072 E1 pop hl
|
||
123: 209+10 0073 C26B00 jp nz, mon_start_ram_loop
|
||
124: ;template copy done
|
||
125:
|
||
126: - 0076 mon_start_complete:
|
||
127:
|
||
128: ;call keyboard_init_io
|
||
129: ;call vdpconsole_init
|
||
130:
|
||
131: ;call print_str
|
||
132:
|
||
133:
|
||
134: ;jp splash_run
|
||
135:
|
||
136: ;jp ps2demo_run
|
||
137: ;call debug_init
|
||
138: ;call vdp_cursor_on
|
||
139: ;jp COLD
|
||
140:
|
||
141: 219+17 0076 CDBC02 call print_clear
|
||
142: 236+10 0079 21C90E ld hl, [STR_Banner_Start]
|
||
143: 246+17 007C CDB102 call print_str
|
||
144:
|
||
145: ;halt
|
||
146:
|
||
147: ;call vdp_cursor_on
|
||
148: 263+17 007F CD8B00 call PROMPT_BEGIN
|
||
149:
|
||
150: ;halt CPU if prompt exits
|
||
151: 280+4 0082 76 halt
|
||
152:
|
||
153: ; Misc Functions
|
||
154: - 0083 AY0_WRITE_REG:
|
||
155: 284+4 0083 47 LD B,A
|
||
156: 288+4 0084 7A LD A,D
|
||
157: 292+11 0085 D340 OUT (IO_AY0_ADDR),A
|
||
158: 303+4 0087 78 LD A,B
|
||
159: 307+11 0088 D341 OUT (IO_AY0_DATA),A
|
||
160: 318+10 008A C9 RET
|
||
161:
|
||
162: - 008B PROMPT_BEGIN:
|
||
163: 328+17 008B CDC302 call print_newLine
|
||
164: ;call A_RTS_ON
|
||
165: 345+7 008E 3E3E ld a,'>'
|
||
166: 352+17 0090 CDA902 call print_char
|
||
167: 369+4 0093 AF xor a ;reset buffer len
|
||
168: 373+13 0094 320040 ld (var_buffer_len),a
|
||
169:
|
||
170: - 0097 PROMPT_BEGIN_READ_LOOP:
|
||
171: 386+17 0097 CDEA02 call read_char
|
||
172: ;call keybd_read_ascii
|
||
173: 403+10 009A CA9700 jp z, PROMPT_BEGIN_READ_LOOP ; wait until char avail
|
||
174: 413+11 009D F5 push af
|
||
175: 424+10 009E F1 pop af
|
||
176: ; process special ops
|
||
177: 434+7 009F FE0D cp 13 ; enter
|
||
178: 441+10 00A1 CAEE00 jp z,PROMPT_BEGIN_READ_PROCESS
|
||
179: 451+7 00A4 FE0A cp 10
|
||
180: 458+10 00A6 CA9700 jp z, PROMPT_BEGIN_READ_LOOP; skip LF for file load
|
||
181: 468+7 00A9 FE08 cp 0x08 ; backspace 0x08 VT102 0x7f Putty
|
||
182: 475+10 00AB CAC800 jp z,PROMPT_BEGIN_READ_BACKSPACE
|
||
183:
|
||
184: 485+11 00AE F5 push af
|
||
185: ; a contains latest char
|
||
186: 496+10 00AF 212940 ld hl,[var_buffer]
|
||
187: 506+7 00B2 1600 ld d,0
|
||
188: 513+13 00B4 3A0040 ld a,(var_buffer_len)
|
||
189: 526+4 00B7 5F ld e,a
|
||
190: 530+11 00B8 19 add hl,de ;hl now contains pointer to last position in buffer
|
||
191: 541+4 00B9 3C inc a
|
||
192: 545+13 00BA 320040 ld (var_buffer_len),a ;store incremented buffer length
|
||
193:
|
||
194: 558+10 00BD F1 pop af
|
||
195: 568+7 00BE 77 ld (hl),a
|
||
196: 575+17 00BF CDA902 call print_char
|
||
197: 592+6 00C2 23 inc hl
|
||
198: 598+4 00C3 AF xor a ;a = 0
|
||
199: 602+7 00C4 77 ld (hl),a ;always add null termination after last char
|
||
200: 609+10 00C5 C39700 jp PROMPT_BEGIN_READ_LOOP
|
||
201:
|
||
202: - 00C8 PROMPT_BEGIN_READ_BACKSPACE:
|
||
203: 619+13 00C8 3A0040 ld a,(var_buffer_len)
|
||
204: 632+4 00CB A7 and a
|
||
205: 636+10 00CC CA9700 jp z, PROMPT_BEGIN_READ_LOOP ; do not continue if already at char 0
|
||
206: 646+4 00CF 3D dec a ;decrement length
|
||
207: 650+13 00D0 320040 ld (var_buffer_len),a ;and store it
|
||
208: 663+4 00D3 5F ld e,a ;load de with decremented value
|
||
209: 667+7 00D4 1600 ld d,0
|
||
210: 674+10 00D6 212940 ld hl,[var_buffer]
|
||
211: 684+11 00D9 19 add hl,de ;hl now contains pointer to last position in buffer
|
||
212: 695+4 00DA AF xor a ; store null byte to current location
|
||
213: 699+7 00DB 77 ld (hl),a
|
||
214: ;call print_delete
|
||
215: 706+7 00DC 3E08 ld a, 0x08
|
||
216: 713+17 00DE CDA902 call print_char
|
||
217: 730+7 00E1 3E20 ld a, 0x20
|
||
218: 737+17 00E3 CDA902 call print_char
|
||
219: 754+7 00E6 3E08 ld a, 0x08
|
||
220: 761+17 00E8 CDA902 call print_char
|
||
221: 778+10 00EB C39700 jp PROMPT_BEGIN_READ_LOOP
|
||
222:
|
||
223: - 00EE PROMPT_BEGIN_READ_PROCESS:
|
||
224: ;call print_newLine
|
||
225: ;ld hl,var_buffer
|
||
226: ;call print_str
|
||
227:
|
||
228: 788+13 00EE 3A2940 ld a,([var_buffer])
|
||
229: 801+7 00F1 FE24 cp '$' ;jump to addr
|
||
230: 808+10 00F3 CA2101 jp z, CMD_EXEC
|
||
231: 818+7 00F6 FE3F cp '?' ;print hexdump
|
||
232: 825+10 00F8 CA4001 jp z, CMD_VIEW
|
||
233: 835+7 00FB FE21 cp '!' ;set memory
|
||
234: 842+10 00FD CAAA01 jp z, CMD_SET
|
||
235: 852+7 0100 FE69 cp 'i' ;in IO
|
||
236: 859+10 0102 CA0F02 jp z, CMD_IO_READ
|
||
237: 869+7 0105 FE6F cp 'o' ;out IO
|
||
238: 876+10 0107 CAE601 jp z, CMD_IO_WRITE
|
||
239: 886+7 010A FE64 cp 'd' ;disassemble
|
||
240: 893+10 010C CA2B02 jp z, CMD_DASM
|
||
241: 903+7 010F FE78 cp 'x' ;start xmodem
|
||
242: 910+10 0111 CA150F jp z, xmodem_init
|
||
243:
|
||
244:
|
||
245: 920+17 0114 CDC302 call print_newLine
|
||
246: 937+10 0117 21F40E ld hl, [STR_Unknown]
|
||
247: 947+17 011A CDB102 call print_str
|
||
248: 964+10 011D C38B00 jp PROMPT_BEGIN
|
||
249:
|
||
250: 974+10 0120 C9 ret
|
||
251:
|
||
252: - 0121 CMD_EXEC:
|
||
253: 984+4 0121 AF xor a ;write null byte to buffer pos 0 to prevent reexecute the last command
|
||
254: 988+13 0122 322940 ld (var_buffer),a
|
||
255:
|
||
256: 1001+10 0125 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
257: 1011+17 0128 CD1603 call DHEX_TO_BYTE
|
||
258: 1028+4 012B 47 ld b,a ;store result in b
|
||
259: 1032+4 012C 7B ld a,e ;check for error
|
||
260: 1036+4 012D A7 and a
|
||
261: 1040+10 012E C26402 jp nz, CMD_SYNTAX_ERROR
|
||
262:
|
||
263: 1050+10 0131 212C40 ld hl,var_buffer+3 ;load 2nd byte
|
||
264: 1060+17 0134 CD1603 call DHEX_TO_BYTE
|
||
265: 1077+4 0137 4F ld c,a
|
||
266: 1081+4 0138 7B ld a,e ;check for error
|
||
267: 1085+4 0139 A7 and a
|
||
268: 1089+10 013A C26402 jp nz, CMD_SYNTAX_ERROR
|
||
269:
|
||
270: 1099+4 013D 60 ld h,b
|
||
271: 1103+4 013E 69 ld l,c
|
||
272: 1107+4 013F E9 jp (hl)
|
||
273:
|
||
274: - 0140 CMD_VIEW:
|
||
275: 1111+17 0140 CDC302 call print_newLine
|
||
276: 1128+10 0143 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
277: 1138+17 0146 CD1603 call DHEX_TO_BYTE
|
||
278: 1155+4 0149 47 ld b,a ;store result in b
|
||
279: 1159+4 014A 7B ld a,e ;check for error
|
||
280: 1163+4 014B A7 and a
|
||
281: 1167+10 014C C26402 jp nz, CMD_SYNTAX_ERROR
|
||
282:
|
||
283: 1177+10 014F 212C40 ld hl,var_buffer+3 ;load 2nd byte
|
||
284: 1187+17 0152 CD1603 call DHEX_TO_BYTE
|
||
285: 1204+4 0155 4F ld c,a
|
||
286: 1208+4 0156 7B ld a,e ;check for error
|
||
287: 1212+4 0157 A7 and a
|
||
288: 1216+10 0158 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
289:
|
||
290:
|
||
291: 1226+13 015B 3A2E40 ld a,(var_buffer+5)
|
||
292: 1239+7 015E FE20 cp ' '
|
||
293: 1246+10 0160 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
294:
|
||
295: 1256+10 0163 212F40 ld hl,var_buffer+6 ;load length
|
||
296: 1266+17 0166 CD1603 call DHEX_TO_BYTE
|
||
297: 1283+11 0169 F5 push af
|
||
298: 1294+4 016A 7B ld a,e ;check for error
|
||
299: 1298+4 016B A7 and a
|
||
300: 1302+10 016C C26402 jp nz, CMD_SYNTAX_ERROR
|
||
301:
|
||
302: ;draw header
|
||
303: 1312+10 016F 21F90E ld hl,[STR_HEXDUMP_HEADER]
|
||
304: 1322+17 0172 CDB102 call print_str
|
||
305:
|
||
306: 1339+10 0175 F1 pop af
|
||
307: ;loading vars done. display results
|
||
308: 1349+4 0176 60 ld h, b ;pointer to current byte
|
||
309: 1353+4 0177 69 ld l, c ;pointer to current byte
|
||
310: 1357+4 0178 47 ld b, a ;bytes counter
|
||
311:
|
||
312: ;draw row
|
||
313: - 0179 CMD_VIEW_ROW:
|
||
314: 1361+17 0179 CDC302 call print_newLine
|
||
315: 1378+4 017C 7C ld a,h ;print start
|
||
316: 1382+17 017D CDD902 call print_a_hex
|
||
317: 1399+4 0180 7D ld a,l
|
||
318: 1403+17 0181 CDD902 call print_a_hex
|
||
319: 1420+7 0184 3E20 ld a, ' '
|
||
320: 1427+17 0186 CDA902 call print_char
|
||
321: 1444+7 0189 0E08 ld c, 8 ;column counter
|
||
322: - 018B CMD_VIEW_ROW_LOOP:
|
||
323: 1451+7 018B 7E ld a,(hl)
|
||
324: 1458+17 018C CDD902 call print_a_hex
|
||
325:
|
||
326: 1475+6 018F 23 inc hl ;increment pointer
|
||
327: 1481+4 0190 05 dec b ;decrement byte counter
|
||
328: 1485+4 0191 0D dec c ;decrement column counter
|
||
329:
|
||
330: 1489+4 0192 78 ld a,b
|
||
331: 1493+4 0193 A7 and a
|
||
332: 1497+10 0194 CAA401 jp z,CMD_VIEW_END ;if byte counter = 0 -> end reached
|
||
333:
|
||
334: 1507+4 0197 79 ld a,c
|
||
335: 1511+4 0198 A7 and a
|
||
336: 1515+10 0199 CA7901 jp z,CMD_VIEW_ROW ;else if column counter = 0 -> 16 chars printed. next row
|
||
337:
|
||
338: 1525+7 019C 3E20 ld a, ' '
|
||
339: 1532+17 019E CDA902 call print_char
|
||
340: 1549+10 01A1 C38B01 jp CMD_VIEW_ROW_LOOP ;else
|
||
341: - 01A4 CMD_VIEW_END:
|
||
342: 1559+17 01A4 CDC302 call print_newLine
|
||
343: 1576+10 01A7 C38B00 jp PROMPT_BEGIN
|
||
344:
|
||
345: - 01AA CMD_SET:
|
||
346: 1586+10 01AA 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
347: 1596+17 01AD CD1603 call DHEX_TO_BYTE
|
||
348: 1613+4 01B0 47 ld b,a ;store result in b
|
||
349: 1617+4 01B1 7B ld a,e ;check for error
|
||
350: 1621+4 01B2 A7 and a
|
||
351: 1625+10 01B3 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
352:
|
||
353: 1635+10 01B6 212C40 ld hl,var_buffer+3 ;load 2nd byte
|
||
354: 1645+17 01B9 CD1603 call DHEX_TO_BYTE
|
||
355: 1662+4 01BC 4F ld c,a
|
||
356: 1666+4 01BD 7B ld a,e ;check for error
|
||
357: 1670+4 01BE A7 and a
|
||
358: 1674+10 01BF C26402 jp nz, CMD_SYNTAX_ERROR
|
||
359: ;bc now contains the start address
|
||
360:
|
||
361: 1684+10 01C2 212E40 ld hl,var_buffer+5
|
||
362: - 01C5 CMD_SET_LOOP:
|
||
363: 1694+7 01C5 7E ld a,(hl)
|
||
364: 1701+7 01C6 FE00 cp 0 ;if 0 then end
|
||
365: 1708+10 01C8 CAE001 jp z, CMD_SET_END
|
||
366: 1718+7 01CB FE20 cp ' '
|
||
367: 1725+10 01CD C26402 jp nz, CMD_SYNTAX_ERROR
|
||
368: 1735+6 01D0 23 inc hl ;next byte
|
||
369: 1741+17 01D1 CD1603 call DHEX_TO_BYTE
|
||
370: 1758+7 01D4 02 ld (bc),a ;load byte to
|
||
371: 1765+4 01D5 7B ld a,e
|
||
372: 1769+4 01D6 A7 and a
|
||
373: 1773+10 01D7 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
374: 1783+6 01DA 03 inc bc
|
||
375: 1789+6 01DB 23 inc hl
|
||
376: 1795+6 01DC 23 inc hl
|
||
377: 1801+10 01DD C3C501 jp CMD_SET_LOOP
|
||
378: - 01E0 CMD_SET_END:
|
||
379: 1811+17 01E0 CDC302 call print_newLine
|
||
380: 1828+10 01E3 C38B00 jp PROMPT_BEGIN
|
||
381:
|
||
382:
|
||
383: - 01E6 CMD_IO_WRITE:
|
||
384: 1838+10 01E6 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
385: 1848+17 01E9 CD1603 call DHEX_TO_BYTE
|
||
386: 1865+4 01EC 4F ld c,a ;store result in b
|
||
387: 1869+4 01ED 7B ld a,e ;check for error
|
||
388: 1873+4 01EE A7 and a
|
||
389: 1877+10 01EF C26402 jp nz, CMD_SYNTAX_ERROR
|
||
390:
|
||
391: 1887+13 01F2 3A2C40 ld a,(var_buffer+3)
|
||
392: 1900+7 01F5 FE20 cp ' '
|
||
393: 1907+10 01F7 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
394:
|
||
395: 1917+10 01FA 212D40 ld hl,var_buffer+4 ;load 1st byte
|
||
396: 1927+17 01FD CD1603 call DHEX_TO_BYTE
|
||
397: 1944+11 0200 F5 push af
|
||
398: 1955+4 0201 7B ld a,e ;check for error
|
||
399: 1959+4 0202 A7 and a
|
||
400: 1963+10 0203 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
401:
|
||
402: 1973+10 0206 F1 pop af
|
||
403: 1983+12 0207 ED79 out (c),a
|
||
404: 1995+17 0209 CDC302 call print_newLine
|
||
405: 2012+10 020C C38B00 jp PROMPT_BEGIN
|
||
406:
|
||
407: - 020F CMD_IO_READ:
|
||
408: 2022+10 020F 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
409: 2032+17 0212 CD1603 call DHEX_TO_BYTE
|
||
410: 2049+4 0215 4F ld c,a ;store result in b
|
||
411: 2053+4 0216 7B ld a,e ;check for error
|
||
412: 2057+4 0217 A7 and a
|
||
413: 2061+10 0218 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
414:
|
||
415: 2071+12 021B ED78 in a,(c)
|
||
416: 2083+11 021D F5 push af
|
||
417: 2094+17 021E CDC302 call print_newLine
|
||
418: 2111+10 0221 F1 pop af
|
||
419: 2121+17 0222 CDD902 call print_a_hex
|
||
420: 2138+17 0225 CDC302 call print_newLine
|
||
421: 2155+10 0228 C38B00 jp PROMPT_BEGIN
|
||
422:
|
||
423: - 022B CMD_DASM:
|
||
424: 2165+17 022B CDC302 call print_newLine
|
||
425: 2182+10 022E 212A40 ld hl,var_buffer+1 ;load 1st byte
|
||
426: 2192+17 0231 CD1603 call DHEX_TO_BYTE
|
||
427: 2209+4 0234 47 ld b,a ;store result in b
|
||
428: 2213+4 0235 7B ld a,e ;check for error
|
||
429: 2217+4 0236 A7 and a
|
||
430: 2221+10 0237 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
431:
|
||
432: 2231+10 023A 212C40 ld hl,var_buffer+3 ;load 2nd byte
|
||
433: 2241+17 023D CD1603 call DHEX_TO_BYTE
|
||
434: 2258+4 0240 4F ld c,a
|
||
435: 2262+4 0241 7B ld a,e ;check for error
|
||
436: 2266+4 0242 A7 and a
|
||
437: 2270+10 0243 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
438:
|
||
439:
|
||
440: 2280+13 0246 3A2E40 ld a,(var_buffer+5)
|
||
441: 2293+7 0249 FE20 cp ' '
|
||
442: 2300+10 024B C26402 jp nz, CMD_SYNTAX_ERROR
|
||
443:
|
||
444: 2310+10 024E 212F40 ld hl,var_buffer+6 ;load length
|
||
445: 2320+17 0251 CD1603 call DHEX_TO_BYTE
|
||
446: 2337+11 0254 F5 push af
|
||
447: 2348+4 0255 7B ld a,e ;check for error
|
||
448: 2352+4 0256 A7 and a
|
||
449: 2356+10 0257 C26402 jp nz, CMD_SYNTAX_ERROR
|
||
450:
|
||
451: 2366+4 025A 60 ld h,b
|
||
452: 2370+4 025B 69 ld l,c
|
||
453:
|
||
454: 2374+10 025C F1 pop af ;restore af
|
||
455: 2384+4 025D 47 ld b,a
|
||
456:
|
||
457: 2388+17 025E CD6703 call disassemble
|
||
458:
|
||
459:
|
||
460: 2405+10 0261 C38B00 jp PROMPT_BEGIN
|
||
461:
|
||
462: - 0264 CMD_SYNTAX_ERROR:
|
||
463: 2415+17 0264 CDC302 call print_newLine
|
||
464: 2432+10 0267 21EF0E ld hl, [STR_SyntaxError]
|
||
465: 2442+17 026A CDB102 call print_str
|
||
466: 2459+10 026D C38B00 jp PROMPT_BEGIN
|
||
467:
|
||
468:
|
||
469:
|
||
470: - 0270 Includes:
|
||
471: ;.include "bootldr.s"
|
||
472: .include "console.s"
|
||
**** include/console.s ****
|
||
1: ;DIP SWICTHES
|
||
2: ;1843200 CLK / x16 SIO CLOCK MODE = 115200
|
||
3: ;MAX BAUD RATE = 115200
|
||
4: ;DIP VALUE = 115200/<BAUD>
|
||
5: ;
|
||
6: ;9600 -> 12 / 00110000
|
||
7: ;
|
||
8:
|
||
9: - 0270 CONSOLE_INIT:
|
||
10: - 0270 CONSOLE_INIT_CTC:
|
||
11: ;LD A,00001111b ; Set /16 Divider, CPU Trigger, Time COnstant Follows
|
||
12: 2469+7 0270 3E4F LD A,01001111b ; External Trigger, Time COnstant Follows
|
||
13: 2476+11 0272 D304 OUT (CS_CTC_0),A
|
||
14: 2487+11 0274 DB01 IN A,(CS_DIP) ; Read BAUD from DIP-Switches
|
||
15: ;LD A,39
|
||
16: 2498+11 0276 D304 OUT (CS_CTC_0),A
|
||
17: - 0278 CONSOLE_INIT_SIO:
|
||
18: 2509+7 0278 3E30 LD A,00110000b ;write into WR0: error reset, select WR0
|
||
19: 2516+11 027A D309 OUT (CS_SIO_A_C),A
|
||
20: 2527+7 027C 3E18 LD a,018h ;write into WR0: channel reset
|
||
21: 2534+11 027E D309 OUT (CS_SIO_A_C),A
|
||
22: 2545+7 0280 3E04 LD a,004h ;write into WR0: select WR4
|
||
23: 2552+11 0282 D309 OUT (CS_SIO_A_C),A
|
||
24: 2563+7 0284 3E44 LD a,01000100b ;write into WR4: clkx16,1 stop bit, no parity
|
||
25: 2570+11 0286 D309 OUT (CS_SIO_A_C),A
|
||
26: 2581+7 0288 3E05 LD a,005h ;write into WR0: select WR5
|
||
27: 2588+11 028A D309 OUT (CS_SIO_A_C),A
|
||
28: 2599+7 028C 3EE8 LD a,11101000b ;DTR inactive, TX 8bit, BREAK off, TX on, RTS inactive
|
||
29: 2606+11 028E D309 OUT (CS_SIO_A_C),A
|
||
30: 2617+7 0290 3E01 LD a,01h ;write into WR0: select WR1
|
||
31: 2624+11 0292 D309 OUT (CS_SIO_A_C),A
|
||
32: 2635+7 0294 3E04 LD a,00000100b ;no interrupt in CH B, special RX condition affects vect
|
||
33: 2642+11 0296 D309 OUT (CS_SIO_A_C),A
|
||
34: 2653+7 0298 3E02 LD a,02h ;write into WR0: select WR2
|
||
35: 2660+11 029A D309 OUT (CS_SIO_A_C),A
|
||
36: 2671+7 029C 3E00 LD a,0h ;write into WR2: cmd line int vect (see int vec table)
|
||
37: ;bits D3,D2,D1 are changed according to RX condition
|
||
38: 2678+11 029E D309 OUT (CS_SIO_A_C),A
|
||
39: 2689+7 02A0 3E03 LD a,003h ;write into WR0: select WR3
|
||
40: 2696+11 02A2 D309 OUT (CS_SIO_A_C),A
|
||
41: 2707+7 02A4 3EC1 LD a,0C1h ;RX 8bit, auto enable off, RX on
|
||
42: 2714+11 02A6 D309 OUT (CS_SIO_A_C),A
|
||
43: ;Channel A RX active
|
||
44: 2725+10 02A8 C9 RET
|
||
45:
|
||
46: ; A contains char
|
||
47: ; Destroys A
|
||
48: - 02A9 print_char:
|
||
49: 2735+11 02A9 F5 push af
|
||
50: 2746+11 02AA D308 out (CS_SIO_A_D),a
|
||
51: 2757+17 02AC CDCE02 call print_wait_out
|
||
52: 2774+10 02AF F1 pop af
|
||
53: ;call print_char
|
||
54: 2784+10 02B0 C9 ret
|
||
55: ; HL contains pointer to string
|
||
56: ; Destroy A, HL
|
||
57:
|
||
58: - 02B1 print_str:
|
||
59: 2794+7 02B1 7E ld a, (hl)
|
||
60: 2801+4 02B2 B7 or a
|
||
61: 2805+7+5 02B3 2806 jr z,print_str_end
|
||
62: 2812+17 02B5 CDA902 call print_char
|
||
63: 2829+6 02B8 23 inc hl
|
||
64: 2835+12 02B9 18F6 jr print_str
|
||
65: - 02BB print_str_end:
|
||
66: 2847+10 02BB C9 ret
|
||
67:
|
||
68: - 02BC print_clear:
|
||
69: 2857+10 02BC 21FC02 ld hl, [MSG_CLEAR]
|
||
70: 2867+17 02BF CDB102 call print_str
|
||
71: 2884+10 02C2 C9 ret
|
||
72:
|
||
73: - 02C3 print_newLine:
|
||
74: 2894+7 02C3 3E0A ld a,10
|
||
75: 2901+17 02C5 CDA902 call print_char
|
||
76: 2918+7 02C8 3E0D ld a,13
|
||
77: 2925+17 02CA CDA902 call print_char
|
||
78: 2942+10 02CD C9 ret
|
||
79: ; destroys a
|
||
80: - 02CE print_wait_out:
|
||
81: ; check for TX buffer empty
|
||
82: 2952+4 02CE 97 sub a ;clear a, write into WR0: select RR0
|
||
83: 2956+4 02CF 3C inc a ;select RR1
|
||
84: 2960+11 02D0 D309 out (CS_SIO_A_C),A
|
||
85: 2971+11 02D2 DB09 in A,(CS_SIO_A_C) ;read RRx
|
||
86: 2982+8 02D4 CB47 bit 0,A
|
||
87: 2990+7+5 02D6 28F6 jr z,print_wait_out
|
||
88: 2997+10 02D8 C9 ret
|
||
89:
|
||
90: - 02D9 print_a_hex:
|
||
91: 3007+11 02D9 F5 push af
|
||
92: 3018+11 02DA C5 push bc
|
||
93: 3029+11 02DB D5 push de
|
||
94: 3040+17 02DC CD4D03 call STRCONV_BYTES_TO_HEX
|
||
95: 3057+4 02DF 78 ld a,b
|
||
96: 3061+17 02E0 CDA902 call print_char
|
||
97: 3078+4 02E3 79 ld a,c
|
||
98: 3082+17 02E4 CDA902 call print_char
|
||
99: 3099+10 02E7 D1 pop de
|
||
100: 3109+10 02E8 C1 pop bc
|
||
101: 3119+10 02E9 F1 pop af
|
||
102:
|
||
103: - 02EA read_char:
|
||
104: 3129+17 02EA CD0D03 call A_RTS_ON
|
||
105: 3146+4 02ED 00 nop
|
||
106: 3150+4 02EE AF xor a ; a = 0
|
||
107: 3154+11 02EF D309 out (CS_SIO_A_C), a ; select reg 0
|
||
108: 3165+11 02F1 DB09 in a, (CS_SIO_A_C) ; read reg 0
|
||
109: 3176+7 02F3 E601 and 1 ; mask D0 (recieve char available)
|
||
110: 3183+17 02F5 CD0403 call A_RTS_OFF
|
||
111: 3200+5+6 02F8 C8 ret Z ; return 0 if no char
|
||
112: 3205+11 02F9 DB08 in a, (CS_SIO_A_D) ; read char if avail
|
||
113: 3216+10 02FB C9 ret ; return
|
||
114:
|
||
115: ;MSG_CRSR_0:
|
||
116: ; db 0x1B, "[?25h",0
|
||
117: ;MSG_CRSR_1:
|
||
118: ; db 0x1B, "[?25l",0
|
||
119: - 02FC MSG_CLEAR:
|
||
120: - 02FC 1B5B324A db 27, '[2J', 27, '[H',0
|
||
1B5B4800
|
||
121:
|
||
122:
|
||
123:
|
||
124: ; Serial Util Functions
|
||
125: - 0304 A_RTS_OFF:
|
||
126: 3226+7 0304 3E05 ld a,005h ;write into WR0: select WR5
|
||
127: 3233+11 0306 D309 out (CS_SIO_A_C),A
|
||
128: 3244+7 0308 3E68 ld a,068h ;DTR inactiveh, TX 8bit, BREAK off, TX on, RTS inactive
|
||
129: 3251+11 030A D309 out (CS_SIO_A_C),A
|
||
130: 3262+10 030C C9 ret
|
||
131: - 030D A_RTS_ON:
|
||
132: 3272+7 030D 3E05 ld a,005h ;write into WR0: select WR5
|
||
133: 3279+11 030F D309 out (CS_SIO_A_C),A
|
||
134: 3290+7 0311 3EEA ld a,0EAh ;DTR active, TX 8bit, BREAK off, TX on, RTS active
|
||
135: 3297+11 0313 D309 out (CS_SIO_A_C),A
|
||
**** main.asm ****
|
||
473: 3308+10 0315 C9 ret
|
||
474: .include "conversions.s"
|
||
**** include/conversions.s ****
|
||
1: ; HL Contains Address to string
|
||
2: ; E is 0xFF if error
|
||
3: ; E is 0x00 if okay
|
||
4: ; A returns byte
|
||
5: ; A,DE are destroyed
|
||
6: - 0316 DHEX_TO_BYTE:
|
||
7: 3318+11 0316 E5 PUSH HL ;Backup pointer
|
||
8: ; Load First Byte
|
||
9: 3329+7 0317 7E LD A,(HL) ;Load first char (high)
|
||
10: 3336+17 0318 CD3603 CALL HEX_TO_BIN ;Conv chart to 4bit
|
||
11: 3353+7+5 031B 3815 jr C, DHEX_TO_BYTE_FAILED ;If error jmp to DHEX_TO_BYTE_FAILED
|
||
12: 3360+8 031D CB27 SLA A ;shift result to upper 4 bits
|
||
13: 3368+8 031F CB27 SLA A
|
||
14: 3376+8 0321 CB27 SLA A
|
||
15: 3384+8 0323 CB27 SLA A
|
||
16: 3392+4 0325 57 LD D,A ;store result in D
|
||
17:
|
||
18: 3396+6 0326 23 INC HL ;next byte
|
||
19: 3402+7 0327 7E LD A,(HL) ;load 2nd char (lower)
|
||
20: 3409+17 0328 CD3603 CALL HEX_TO_BIN ;Conv chart to 4bit
|
||
21: 3426+7+5 032B 3805 jr C, DHEX_TO_BYTE_FAILED ;If error jmp to DHEX_TO_BYTE_FAILED
|
||
22: 3433+4 032D B2 OR D ;merge D with accumulator
|
||
23:
|
||
24: 3437+10 032E E1 POP HL ;restor original pointer
|
||
25: 3447+7 032F 1E00 LD E,0x00 ;set error to 0x00 = no error
|
||
26: 3454+10 0331 C9 RET
|
||
27: - 0332 DHEX_TO_BYTE_FAILED:
|
||
28: 3464+7 0332 1EFF LD E,0xFF ;set error to oxFF
|
||
29: ;LD A,0x00
|
||
30: 3471+10 0334 E1 POP HL
|
||
31: 3481+10 0335 C9 RET
|
||
32:
|
||
33: ; REG A Contains CHAR-Low
|
||
34: ; If failed, Carry is set
|
||
35: - 0336 HEX_TO_BIN:
|
||
36: 3491+7 0336 D630 SUB 48 ; 0 is 0
|
||
37: 3498+10 0338 EA4B03 jp PE, HEX_TO_INVALID_2; to low (SUB overflow)
|
||
38: 3508+7 033B FE0A CP 10 ; Value is between 0 and 9
|
||
39: 3515+7+5 033D 3805 JR C, HEX_TO_BIN_2
|
||
40: 3522+7 033F D607 SUB 7
|
||
41: 3529+10 0341 EA4B03 jp PE, HEX_TO_INVALID_2; to low (SUB overflow)
|
||
42: - 0344 HEX_TO_BIN_2:
|
||
43: 3539+7 0344 FE10 CP 16
|
||
44: 3546+7+5 0346 3003 JR NC, HEX_TO_INVALID_2; if bigger than 15-> fail
|
||
45: 3553+7 0348 E60F AND 0x0F
|
||
46: 3560+10 034A C9 RET
|
||
47: - 034B HEX_TO_INVALID_2:
|
||
48: 3570+4 034B 37 SCF ;set carry flag
|
||
49: 3574+10 034C C9 RET
|
||
50:
|
||
51:
|
||
52: ;*****************
|
||
53: ; Convert Byte to Hex Char (ASCII)
|
||
54: ;*****************
|
||
55: ;Description: the StrLength function inline
|
||
56: ;
|
||
57: ;Inputs: A contains input byte
|
||
58: ;
|
||
59: ;Outputs: BC contains 2 Bytes of ASCII (HEX)
|
||
60: ;
|
||
61: ;Destroys: A, BC,
|
||
62: - 034D STRCONV_BYTES_TO_HEX:
|
||
63: 3584+11 034D F5 PUSH AF;Backup A Register
|
||
64: 3595+4 034E 1F RRA
|
||
65: 3599+4 034F 1F RRA
|
||
66: 3603+4 0350 1F RRA
|
||
67: 3607+4 0351 1F RRA
|
||
68: 3611+17 0352 CD5C03 CALL STRCONV_BYTES_TO_HEX_1
|
||
69: ;LD A,D
|
||
70: 3628+4 0355 47 LD B,A
|
||
71: 3632+10 0356 F1 POP AF ; Reload first Byte
|
||
72: 3642+17 0357 CD5C03 CALL STRCONV_BYTES_TO_HEX_1
|
||
73: ;LD A,D
|
||
74: 3659+4 035A 4F LD C,A
|
||
75: 3663+10 035B C9 RET
|
||
76:
|
||
77: - 035C STRCONV_BYTES_TO_HEX_1:
|
||
78: 3673+7 035C E60F AND 0x0F
|
||
79: 3680+7 035E C630 ADD 48
|
||
80: 3687+7 0360 FE3A CP 58 ; Check if less than 58 (less than ASCII 9)
|
||
81: ;JR C, STRCONV_BYTES_TO_HEX_2
|
||
82: 3694+5+6 0362 D8 RET C
|
||
83: 3699+7 0363 C607 ADD 7 ; A-F
|
||
84: 3706+10 0365 C9 RET
|
||
85: - 0366 STRCONV_BYTES_TO_HEX_2:
|
||
86: ;LD D,A
|
||
87: 3716+10 0366 C9 RET
|
||
88:
|
||
89:
|
||
**** main.asm ****
|
||
475: ;.include "basic.s"
|
||
476: .include "disassembler.s"
|
||
**** include/disassembler.s ****
|
||
1: - 4110 var_opcode_start equ PRG_RAM_START ;16 bit pointer to opcode in mem
|
||
2: - 4112 var_opcode_table equ PRG_RAM_START+2 ;16 bit pointer to opcode in table
|
||
3: - 4114 var_opcode equ PRG_RAM_START+4 ;8 bit opcode value
|
||
4: - 4115 var_opcode_x equ PRG_RAM_START+5 ;8 bit opcode extension value
|
||
5: - 4116 var_opcode_length equ PRG_RAM_START+6 ;8 bit opcode length (in bytes)
|
||
6: - 4117 var_opcode_string equ PRG_RAM_START+7 ;16 bit pointer to opcode string
|
||
7: - 4119 var_opcode_pcount equ PRG_RAM_START+9 ;8 bit opcode param count
|
||
8: - 411A var_bytes_count equ PRG_RAM_START+10 ;bytes to examine
|
||
9: ; HL contains start address
|
||
10: ; B contains length
|
||
11: - 0367 disassemble:
|
||
12: 3726+4 0367 78 ld a,b
|
||
13: 3730+13 0368 321A41 ld (var_bytes_count),a
|
||
14: - 036B disassemble_next:
|
||
15:
|
||
16:
|
||
17: 3743+16 036B 221041 ld (var_opcode_start), hl ;16 bit pointer to opcode in mem
|
||
18: 3759+7 036E 7E ld a,(hl) ;load opcode to find in A
|
||
19: 3766+13 036F 321441 ld (var_opcode), a ;8 bit opcode value
|
||
20: 3779+6 0372 23 inc hl
|
||
21: 3785+7 0373 7E ld a,(hl) ;load opcode to find in A
|
||
22: 3792+13 0374 321541 ld (var_opcode_x), a ;8 bit opcode extended value
|
||
23: 3805+6 0377 2B dec hl
|
||
24: 3811+17 0378 CD5B04 call disassemble_table_seek
|
||
25: 3828+4 037B 78 ld a,b
|
||
26: 3832+4 037C B1 or c
|
||
27: 3836+10 037D CA3D04 jp z, disassemble_err ;if bc==0000h
|
||
28:
|
||
29: 3846+20 0380 ED431241 ld (var_opcode_table), bc ;16 bit pointer to opcode in table
|
||
30:
|
||
31: ;load params
|
||
32: 3866+6 0384 03 inc bc
|
||
33: 3872+6 0385 03 inc bc
|
||
34: 3878+6 0386 03 inc bc
|
||
35: 3884+6 0387 03 inc bc
|
||
36: 3890+7 0388 0A ld a,(bc)
|
||
37: 3897+13 0389 321641 ld (var_opcode_length),A ;8 bit opcode length (in bytes)
|
||
38: 3910+6 038C 03 inc bc
|
||
39: 3916+7 038D 0A ld a, (bc)
|
||
40: 3923+4 038E 5F ld e,a
|
||
41: 3927+6 038F 03 inc bc
|
||
42: 3933+7 0390 0A ld a, (bc)
|
||
43: 3940+4 0391 57 ld d,a
|
||
44: 3944+20 0392 ED531741 ld (var_opcode_string),de ;16 bit pointer to opcode string
|
||
45: 3964+6 0396 03 inc bc
|
||
46: 3970+7 0397 0A ld a,(bc)
|
||
47: 3977+13 0398 321941 ld (var_opcode_pcount),A ;8 bit opcode param count
|
||
48:
|
||
49: ;values are prepared. Continue with print
|
||
50:
|
||
51: 3990+16 039B 2A1041 ld hl,(var_opcode_start) ;print address
|
||
52: 4006+17 039E CDA304 call dasm_print16hex_addr
|
||
53:
|
||
54: 4023+13 03A1 3A1641 ld a,(var_opcode_length)
|
||
55: 4036+4 03A4 47 ld b, a
|
||
56:
|
||
57: ;print up to 4 opcode bytes
|
||
58: 4040+16 03A5 2A1041 ld hl,(var_opcode_start)
|
||
59:
|
||
60: - 03A8 disassemble_print_opcode_raw
|
||
61: 4056+7 03A8 7E ld a,(hl) ;load first byte
|
||
62: 4063+17 03A9 CDD902 call print_a_hex
|
||
63: 4080+6 03AC 23 inc hl
|
||
64: 4086+8+5 03AD 10F9 djnz disassemble_print_opcode_raw
|
||
65:
|
||
66: 4094+7 03AF 3E68 ld a,"h"
|
||
67: 4101+17 03B1 CDA902 call print_char
|
||
68: ;fill empty spots
|
||
69: 4118+13 03B4 3A1641 ld a,(var_opcode_length)
|
||
70: 4131+4 03B7 47 ld b,a
|
||
71: 4135+7 03B8 3E06 ld a,6
|
||
72: 4142+4 03BA 90 sub b
|
||
73: 4146+4 03BB 47 ld b,a
|
||
74:
|
||
75: - 03BC disassemble_print_opcode_raw_fill:
|
||
76: 4150+7 03BC 3E20 ld a," "
|
||
77: 4157+17 03BE CDA902 call print_char
|
||
78: 4174+7 03C1 3E20 ld a," "
|
||
79: 4181+17 03C3 CDA902 call print_char
|
||
80: 4198+8+5 03C6 10F4 djnz disassemble_print_opcode_raw_fill
|
||
81: 4206+7 03C8 3E20 ld a," "
|
||
82: 4213+17 03CA CDA902 call print_char
|
||
83:
|
||
84: 4230+11 03CD E5 push hl
|
||
85: ;print opcode
|
||
86: 4241+16 03CE 2A1741 ld hl,(var_opcode_string)
|
||
87: 4257+17 03D1 CDB102 call print_str
|
||
88:
|
||
89:
|
||
90: ;print params
|
||
91: 4274+13 03D4 3A1941 ld a,(var_opcode_pcount)
|
||
92: 4287+4 03D7 B7 or a
|
||
93: 4291+10 03D8 CA3A04 jp z, disassemble_print_opcode_params_end ;skip if no params
|
||
94:
|
||
95: 4301+16 03DB 2A1241 ld hl,(var_opcode_table)
|
||
96: 4317+10 03DE 010800 ld bc, 8
|
||
97: 4327+11 03E1 09 add hl,bc ;hl now has address of first param
|
||
98: 4338+13 03E2 3A1941 ld a,(var_opcode_pcount)
|
||
99: 4351+4 03E5 47 ld b,a
|
||
100: - 03E6 disassemble_print_opcode_params_loop:
|
||
101: ;ld a,(hl) ;load param
|
||
102: ;call print_a_hex
|
||
103: 4355+7 03E6 7E ld a,(hl) ;load param
|
||
104:
|
||
105: 4362+7 03E7 FE01 cp 0x01
|
||
106: 4369+10+7 03E9 CCC904 call z, param_01
|
||
107: 4379+7 03EC FE02 cp 0x02
|
||
108: 4386+10+7 03EE CCF004 call z, param_02
|
||
109: 4396+7 03F1 FE03 cp 0x03
|
||
110: 4403+10+7 03F3 CC0D05 call z, param_03
|
||
111: 4413+7 03F6 FE04 cp 0x04
|
||
112: 4420+10+7 03F8 CC4905 call z, param_04
|
||
113: 4430+7 03FB FE05 cp 0x05
|
||
114: 4437+10+7 03FD CC5F05 call z, param_05
|
||
115: 4447+7 0400 FE06 cp 0x06
|
||
116: 4454+10+7 0402 CC6C05 call z, param_06
|
||
117: 4464+7 0405 FE07 cp 0x07
|
||
118: 4471+10+7 0407 CC8605 call z, param_07
|
||
119: 4481+7 040A FE08 cp 0x08
|
||
120: 4488+10+7 040C CC9305 call z, param_08
|
||
121: 4498+7 040F FE09 cp 0x09
|
||
122: 4505+10+7 0411 CCA805 call z, param_09
|
||
123: 4515+7 0414 FE10 cp 0x10
|
||
124: 4522+10+7 0416 CCBD05 call z, param_10
|
||
125: 4532+7 0419 FE11 cp 0x11
|
||
126: 4539+10+7 041B CCCD05 call z, param_11
|
||
127: 4549+7 041E FE12 cp 0x12
|
||
128: 4556+10+7 0420 CCD505 call z, param_12
|
||
129: 4566+7 0423 FE13 cp 0x13
|
||
130: 4573+10+7 0425 CC0D06 call z, param_13
|
||
131: 4583+7 0428 FE0A cp 0x0A
|
||
132: 4590+10+7 042A CC9F05 call z, param_0A
|
||
133: ;strings
|
||
134: 4600+7 042D FE80 cp 0x80
|
||
135: 4607+10+7 042F CC2C06 call z, param_80
|
||
136: 4617+7 0432 FE81 cp 0x81
|
||
137: 4624+10+7 0434 CC2306 call z, param_81
|
||
138: 4634+6 0437 23 inc hl
|
||
139: 4640+8+5 0438 10AC djnz disassemble_print_opcode_params_loop
|
||
140: - 043A disassemble_print_opcode_params_end:
|
||
141: 4648+10 043A E1 pop hl
|
||
142: 4658+12 043B 1810 jr disassemble_continue
|
||
143:
|
||
144:
|
||
145: - 043D disassemble_err:
|
||
146: 4670+17 043D CDA304 call dasm_print16hex_addr
|
||
147: 4687+7 0440 7E ld a,(hl)
|
||
148: 4694+17 0441 CDBB04 call dasm_print8hex ;print value
|
||
149: 4711+6 0444 23 inc hl
|
||
150: 4717+11 0445 E5 push hl
|
||
151: 4728+10 0446 21780E ld hl, [dasm_UU]
|
||
152: 4738+17 0449 CDB102 call print_str
|
||
153: 4755+10 044C E1 pop hl
|
||
154:
|
||
155: - 044D disassemble_continue:
|
||
156:
|
||
157: 4765+17 044D CDC302 call print_newLine
|
||
158: ;inc hl
|
||
159: 4782+13 0450 3A1A41 ld a,(var_bytes_count)
|
||
160: 4795+4 0453 3D dec a
|
||
161: 4799+13 0454 321A41 ld (var_bytes_count),a
|
||
162: 4812+10 0457 C26B03 jp nz, disassemble_next
|
||
163: 4822+10 045A C9 ret
|
||
164:
|
||
165:
|
||
166:
|
||
167: ;A contains opcode
|
||
168: ;BC contains returned position
|
||
169: - 045B disassemble_table_seek:
|
||
170: 4832+11 045B E5 push hl
|
||
171: 4843+10 045C 217606 ld hl, [dasm_opcode_table]
|
||
172: - 045F disassemble_table_seek_loop:
|
||
173: 4853+13 045F 3A1441 ld a,(var_opcode)
|
||
174: 4866+4 0462 4F ld c,a
|
||
175: 4870+7 0463 7E ld a,(hl)
|
||
176: 4877+7 0464 FEFF cp 0xFF ; if null
|
||
177: 4884+10 0466 CA9D04 jp z, disassemble_table_notfound
|
||
178:
|
||
179: ;apply mask
|
||
180: 4894+11 0469 F5 push af
|
||
181: 4905+6 046A 23 inc hl
|
||
182: 4911+7 046B 46 ld b,(hl) ;load mask
|
||
183: 4918+6 046C 2B dec hl
|
||
184: 4924+4 046D 79 ld a,c
|
||
185: 4928+4 046E A0 and b ;apply mask
|
||
186: 4932+4 046F 4F ld c,a
|
||
187: 4936+10 0470 F1 pop af
|
||
188:
|
||
189: 4946+4 0471 B9 cp c ; if match
|
||
190: 4950+7+5 0472 280B jr z, disassemble_table_first_match
|
||
191: 4957+7 0474 0600 ld b,0
|
||
192: 4964+7 0476 0E07 ld c,7
|
||
193: 4971+11 0478 09 add hl,bc
|
||
194: 4982+7 0479 7E ld a,(hl)
|
||
195: 4989+4 047A 4F ld c,a
|
||
196: 4993+11 047B 09 add hl,bc
|
||
197: 5004+6 047C 23 inc hl
|
||
198: 5010+12 047D 18E0 jr disassemble_table_seek_loop
|
||
199:
|
||
200: - 047F disassemble_table_first_match
|
||
201: 5022+6 047F 23 inc hl
|
||
202: 5028+6 0480 23 inc hl
|
||
203: 5034+7 0481 4E ld c,(hl) ;load opcode x from table
|
||
204: 5041+6 0482 23 inc hl
|
||
205: 5047+13 0483 3A1541 ld a,(var_opcode_x) ;load current opcode x
|
||
206: 5060+7 0486 46 ld b,(hl) ;load mask
|
||
207: 5067+4 0487 A0 and b ;apply mask
|
||
208: 5071+4 0488 B9 cp c ;compare to table
|
||
209: 5075+6 0489 2B dec hl
|
||
210: 5081+6 048A 2B dec hl
|
||
211: 5087+6 048B 2B dec hl
|
||
212: 5093+7+5 048C 280B jr z, disassemble_table_found ;IF FOUND
|
||
213: 5100+7 048E 0600 ld b,0 ;else continue with next
|
||
214:
|
||
215: 5107+7 0490 0E07 ld c,7
|
||
216: 5114+11 0492 09 add hl,bc
|
||
217: 5125+7 0493 7E ld a,(hl)
|
||
218: 5132+4 0494 4F ld c,a
|
||
219: 5136+11 0495 09 add hl,bc
|
||
220: 5147+6 0496 23 inc hl
|
||
221: 5153+12 0497 18C6 jr disassemble_table_seek_loop
|
||
222:
|
||
223: - 0499 disassemble_table_found
|
||
224: 5165+4 0499 44 ld b,H
|
||
225: 5169+4 049A 4D ld c,l
|
||
226: 5173+10 049B E1 pop hl
|
||
227: 5183+10 049C C9 ret
|
||
228:
|
||
229: - 049D disassemble_table_notfound
|
||
230: 5193+7 049D 0600 ld b,0
|
||
231: 5200+7 049F 0E00 ld c,0
|
||
232: 5207+10 04A1 E1 pop hl
|
||
233: 5217+10 04A2 C9 ret
|
||
234:
|
||
235:
|
||
236:
|
||
237:
|
||
238: - 04A3 dasm_print16hex_addr:
|
||
239: 5227+7 04A3 3E24 ld a,"$"
|
||
240: 5234+17 04A5 CDA902 call print_char
|
||
241: 5251+4 04A8 7C ld a,h
|
||
242: 5255+17 04A9 CDD902 call print_a_hex
|
||
243: 5272+4 04AC 7D ld a,l
|
||
244: 5276+17 04AD CDD902 call print_a_hex
|
||
245: 5293+7 04B0 3E68 ld a,"h"
|
||
246: 5300+17 04B2 CDA902 call print_char
|
||
247: 5317+7 04B5 3E20 ld a," "
|
||
248: 5324+17 04B7 CDA902 call print_char
|
||
249: 5341+10 04BA C9 ret
|
||
250:
|
||
251: - 04BB dasm_print8hex:
|
||
252: 5351+17 04BB CDD902 call print_a_hex
|
||
253: 5368+7 04BE 3E68 ld a,"h"
|
||
254: 5375+17 04C0 CDA902 call print_char
|
||
255: 5392+7 04C3 3E20 ld a," "
|
||
256: 5399+17 04C5 CDA902 call print_char
|
||
257: 5416+10 04C8 C9 ret
|
||
258:
|
||
259:
|
||
260:
|
||
261:
|
||
262:
|
||
263:
|
||
264:
|
||
265: - 04C9 param_01: ; 0x01 16bit address pointer
|
||
266: 5426+11 04C9 E5 push hl
|
||
267: 5437+20 04CA ED5B1041 ld de,(var_opcode_start)
|
||
268: 5457+6 04CE 13 inc de
|
||
269: 5463+7 04CF 1A ld a,(de)
|
||
270: 5470+4 04D0 6F ld l,a
|
||
271: 5474+6 04D1 13 inc de
|
||
272: 5480+7 04D2 1A ld a,(de)
|
||
273: 5487+4 04D3 67 ld h,a
|
||
274:
|
||
275: 5491+7 04D4 3E24 ld a,"$"
|
||
276: 5498+17 04D6 CDA902 call print_char
|
||
277: 5515+4 04D9 7C ld a,h
|
||
278: 5519+17 04DA CDD902 call print_a_hex
|
||
279: 5536+4 04DD 7D ld a,l
|
||
280: 5540+17 04DE CDD902 call print_a_hex
|
||
281: 5557+7 04E1 3E68 ld a,"h"
|
||
282: 5564+17 04E3 CDA902 call print_char
|
||
283: 5581+7 04E6 3E20 ld a," "
|
||
284: 5588+17 04E8 CDA902 call print_char
|
||
285: 5605+17 04EB CD6706 call param_comma
|
||
286: 5622+10 04EE E1 pop hl
|
||
287: 5632+10 04EF C9 ret
|
||
288:
|
||
289: - 04F0 param_02:
|
||
290: 5642+11 04F0 C5 push bc
|
||
291: 5653+20 04F1 ED5B1041 ld de,(var_opcode_start)
|
||
292: 5673+7 04F5 1A ld a,(de)
|
||
293: 5680+4 04F6 1F rra
|
||
294: 5684+4 04F7 1F rra
|
||
295: 5688+7 04F8 E60E and 0x0E
|
||
296:
|
||
297: 5695+11 04FA E5 push hl
|
||
298: 5706+10 04FB 21810E ld hl, [dasm_printFlags_table]
|
||
299: 5716+7 04FE 0600 ld b,0
|
||
300: 5723+4 0500 4F ld c,a
|
||
301: 5727+11 0501 09 add hl,bc
|
||
302: 5738+17 0502 CDB102 call print_str
|
||
303: 5755+7 0505 3E20 ld a, " "
|
||
304: 5762+17 0507 CDA902 call print_char
|
||
305: 5779+10 050A E1 pop hl
|
||
306: 5789+10 050B C1 pop bc
|
||
307: 5799+10 050C C9 ret
|
||
308:
|
||
309:
|
||
310: - 050D param_03:
|
||
311: 5809+20 050D ED5B1041 ld de,(var_opcode_start)
|
||
312: 5829+6 0511 13 inc de
|
||
313: 5835+7 0512 1A ld a,(de)
|
||
314:
|
||
315: 5842+11 0513 F5 push af
|
||
316: 5853+7 0514 E680 and 0x80
|
||
317: 5860+10 0516 C22E05 jp nz, param_03_neg
|
||
318: 5870+7 0519 3E24 ld a,"$"
|
||
319: 5877+17 051B CDA902 call print_char
|
||
320: 5894+7 051E 3E2B ld a,"+"
|
||
321: 5901+17 0520 CDA902 call print_char
|
||
322: 5918+10 0523 F1 pop af
|
||
323: 5928+17 0524 CDD902 call print_a_hex
|
||
324: 5945+7 0527 3E68 ld a,"h"
|
||
325: 5952+17 0529 CDA902 call print_char
|
||
326: 5969+12 052C 1817 jr param_03_done
|
||
327:
|
||
328: - 052E param_03_neg:
|
||
329: 5981+7 052E 3E24 ld a,"$"
|
||
330: 5988+17 0530 CDA902 call print_char
|
||
331: 6005+7 0533 3E2D ld a,"-"
|
||
332: 6012+17 0535 CDA902 call print_char
|
||
333: 6029+10 0538 F1 pop af
|
||
334: 6039+8 0539 ED44 neg
|
||
335: 6047+17 053B CDD902 call print_a_hex
|
||
336: 6064+7 053E 3E68 ld a,"h"
|
||
337: 6071+17 0540 CDA902 call print_char
|
||
338: 6088+12 0543 1800 jr param_03_done
|
||
339:
|
||
340: - 0545 param_03_done:
|
||
341: 6100+17 0545 CD6706 call param_comma
|
||
342: 6117+10 0548 C9 ret
|
||
343:
|
||
344:
|
||
345: - 0549 param_04:
|
||
346: 6127+20 0549 ED5B1041 ld de,(var_opcode_start)
|
||
347: 6147+6 054D 13 inc de
|
||
348: 6153+7 054E 1A ld a,(de)
|
||
349: 6160+7 054F FE4D cp 0x4D
|
||
350: 6167+7+5 0551 2806 jr z,param_04_i
|
||
351: 6174+7 0553 3E4E ld a,"N"
|
||
352: 6181+17 0555 CDA902 call print_char
|
||
353: 6198+10 0558 C9 ret
|
||
354: - 0559 param_04_i:
|
||
355: 6208+7 0559 3E49 ld a,"I"
|
||
356: 6215+17 055B CDA902 call print_char
|
||
357: 6232+10 055E C9 ret
|
||
358:
|
||
359: - 055F param_05:
|
||
360: 6242+11 055F C5 push bc
|
||
361: 6253+20 0560 ED5B1041 ld de,(var_opcode_start)
|
||
362: 6273+7 0564 1A ld a,(de)
|
||
363: 6280+7 0565 E638 and 0x38
|
||
364: ; print hex char
|
||
365: 6287+17 0567 CDBB04 call dasm_print8hex
|
||
366: 6304+10 056A C1 pop bc
|
||
367: 6314+10 056B C9 ret
|
||
368:
|
||
369:
|
||
370: - 056C param_06:
|
||
371: 6324+11 056C C5 push bc
|
||
372: 6335+20 056D ED5B1041 ld de,(var_opcode_start)
|
||
373: 6355+7 0571 1A ld a,(de)
|
||
374: 6362+4 0572 1F rra
|
||
375: 6366+4 0573 1F rra
|
||
376: 6370+4 0574 1F rra
|
||
377: 6374+7 0575 E607 and 0x07
|
||
378: 6381+17 0577 CD4206 call param_printRegister
|
||
379: 6398+7 057A 3E20 ld a," "
|
||
380: 6405+17 057C CDA902 call print_char
|
||
381: 6422+7 057F 3E2C ld a,","
|
||
382: 6429+17 0581 CDA902 call print_char
|
||
383: 6446+10 0584 C1 pop bc
|
||
384: 6456+10 0585 C9 ret
|
||
385:
|
||
386: - 0586 param_07:
|
||
387: 6466+11 0586 C5 push bc
|
||
388: 6477+20 0587 ED5B1041 ld de,(var_opcode_start)
|
||
389: 6497+7 058B 1A ld a,(de)
|
||
390: 6504+7 058C E607 and 0x07
|
||
391:
|
||
392: 6511+17 058E CD4206 call param_printRegister
|
||
393: 6528+10 0591 C1 pop bc
|
||
394: 6538+10 0592 C9 ret
|
||
395:
|
||
396: - 0593 param_08:
|
||
397: 6548+11 0593 C5 push bc
|
||
398: 6559+20 0594 ED5B1041 ld de,(var_opcode_start)
|
||
399: 6579+6 0598 13 inc de
|
||
400: 6585+7 0599 1A ld a,(de)
|
||
401: 6592+17 059A CDBB04 call dasm_print8hex
|
||
402: 6609+10 059D C1 pop bc
|
||
403: 6619+10 059E C9 ret
|
||
404:
|
||
405:
|
||
406: - 059F param_0A:
|
||
407: 6629+11 059F E5 push hl
|
||
408: 6640+20 05A0 ED5B1041 ld de,(var_opcode_start)
|
||
409: 6660+6 05A4 13 inc de
|
||
410: 6666+6 05A5 13 inc de
|
||
411: 6672+12 05A6 1806 jr param_09_0A
|
||
412: - 05A8 param_09:
|
||
413: 6684+11 05A8 E5 push hl
|
||
414: 6695+20 05A9 ED5B1041 ld de,(var_opcode_start)
|
||
415: 6715+6 05AD 13 inc de
|
||
416: - 05AE param_09_0A:
|
||
417: 6721+7 05AE 1A ld a,(de)
|
||
418: 6728+4 05AF 6F ld l,a
|
||
419: 6732+6 05B0 13 inc de
|
||
420: 6738+7 05B1 1A ld a,(de)
|
||
421: 6745+4 05B2 67 ld h,a
|
||
422: 6749+4 05B3 7C ld a,h
|
||
423: 6753+17 05B4 CDD902 call print_a_hex
|
||
424: 6770+4 05B7 7D ld a,l
|
||
425: 6774+17 05B8 CDD902 call print_a_hex
|
||
426: 6791+10 05BB E1 pop hl
|
||
427: 6801+10 05BC C9 ret
|
||
428:
|
||
429: - 05BD param_10:
|
||
430: 6811+11 05BD C5 push bc
|
||
431: 6822+20 05BE ED5B1041 ld de,(var_opcode_start)
|
||
432: 6842+7 05C2 1A ld a,(de)
|
||
433: 6849+4 05C3 1F rra
|
||
434: 6853+4 05C4 1F rra
|
||
435: 6857+4 05C5 1F rra
|
||
436: 6861+7 05C6 E607 and 0x07
|
||
437: 6868+17 05C8 CD4206 call param_printRegister
|
||
438: 6885+10 05CB C1 pop bc
|
||
439: 6895+10 05CC C9 ret
|
||
440:
|
||
441:
|
||
442: - 05CD param_11:
|
||
443: 6905+11 05CD E5 push hl
|
||
444: 6916+11 05CE C5 push bc
|
||
445: 6927+20 05CF ED5B1041 ld de,(var_opcode_start)
|
||
446: 6947+12 05D3 1807 jr param_11_12
|
||
447: - 05D5 param_12:
|
||
448: 6959+11 05D5 E5 push hl
|
||
449: 6970+11 05D6 C5 push bc
|
||
450: 6981+20 05D7 ED5B1041 ld de,(var_opcode_start)
|
||
451: 7001+6 05DB 13 inc de
|
||
452:
|
||
453: - 05DC param_11_12:
|
||
454: 7007+7 05DC 1A ld a,(de)
|
||
455: 7014+4 05DD 1F rra
|
||
456: 7018+4 05DE 1F rra
|
||
457: 7022+4 05DF 1F rra
|
||
458: 7026+7 05E0 E606 and 0x06
|
||
459: 7033+11 05E2 F5 push af
|
||
460: ;check which table to use
|
||
461: 7044+16 05E3 2A1041 ld hl, (var_opcode_start)
|
||
462: 7060+7 05E6 7E ld a,(hl)
|
||
463: 7067+7 05E7 FEDD cp 0xDD
|
||
464: 7074+7+5 05E9 2809 jr z,param_11_12_ix
|
||
465: 7081+7 05EB FEFD cp 0xFD
|
||
466: 7088+7+5 05ED 280A jr z,param_11_12_iy
|
||
467: - 05EF param_11_12_def:
|
||
468: 7095+10 05EF 21910E ld hl, [dasm_printRegister8_table]
|
||
469: 7105+12 05F2 1808 jr param_11_12_all
|
||
470: - 05F4 param_11_12_ix:
|
||
471: 7117+10 05F4 21990E ld hl, [dasm_printRegisterIX_table]
|
||
472: 7127+12 05F7 1803 jr param_11_12_all
|
||
473: - 05F9 param_11_12_iy:
|
||
474: 7139+10 05F9 21A10E ld hl, [dasm_printRegisterIY_table]
|
||
475: - 05FC param_11_12_all:
|
||
476: 7149+10 05FC F1 pop af
|
||
477: 7159+7 05FD 0600 ld b,0
|
||
478: 7166+4 05FF 4F ld c,a
|
||
479: 7170+11 0600 09 add hl, bc
|
||
480: 7181+7 0601 7E ld a,(hl)
|
||
481: 7188+17 0602 CDA902 call print_char
|
||
482: 7205+6 0605 23 inc hl
|
||
483: 7211+7 0606 7E ld a,(hl)
|
||
484: 7218+17 0607 CDA902 call print_char
|
||
485: 7235+10 060A C1 pop bc
|
||
486: 7245+10 060B E1 pop hl
|
||
487: 7255+10 060C C9 ret
|
||
488:
|
||
489: - 060D param_13:
|
||
490: 7265+11 060D E5 push hl
|
||
491: 7276+11 060E C5 push bc
|
||
492: 7287+20 060F ED5B1041 ld de,(var_opcode_start)
|
||
493: 7307+7 0613 1A ld a,(de)
|
||
494: 7314+4 0614 1F rra
|
||
495: 7318+4 0615 1F rra
|
||
496: 7322+4 0616 1F rra
|
||
497: 7326+7 0617 E606 and 0x06
|
||
498: 7333+11 0619 F5 push af
|
||
499: ;check which table to use
|
||
500: 7344+16 061A 2A1041 ld hl, (var_opcode_start)
|
||
501: 7360+7 061D 7E ld a,(hl)
|
||
502: 7367+10 061E 21A90E ld hl, [dasm_printRegisterSP_table]
|
||
503: 7377+12 0621 18D9 jr param_11_12_all ;reuse code from 11_12
|
||
504:
|
||
505:
|
||
506: - 0623 param_81:
|
||
507: 7389+11 0623 E5 push hl
|
||
508: 7400+11 0624 C5 push bc
|
||
509: 7411+16 0625 2A1741 ld hl, (var_opcode_string)
|
||
510: 7427+7 0628 0602 ld b,2
|
||
511: 7434+12 062A 1807 jr param_80_seek
|
||
512: - 062C param_80:
|
||
513: 7446+11 062C E5 push hl
|
||
514: 7457+11 062D C5 push bc
|
||
515: 7468+16 062E 2A1741 ld hl, (var_opcode_string)
|
||
516: 7484+7 0631 0601 ld b,1
|
||
517: - 0633 param_80_seek:
|
||
518: 7491+7 0633 7E ld a,(hl)
|
||
519: 7498+6 0634 23 inc hl
|
||
520: 7504+4 0635 A7 and a
|
||
521: 7508+7+5 0636 20FB jr nz, param_80_seek
|
||
522: ;found
|
||
523: 7515+4 0638 05 dec b ;found but counter too high
|
||
524: 7519+10 0639 C23306 jp nz, param_80_seek
|
||
525:
|
||
526: 7529+17 063C CDB102 call print_str
|
||
527: 7546+10 063F C1 pop bc
|
||
528: 7556+10 0640 E1 pop hl
|
||
529: 7566+10 0641 C9 ret
|
||
530:
|
||
531:
|
||
532:
|
||
533: - 0642 param_printRegister:
|
||
534: 7576+11 0642 E5 push hl
|
||
535: 7587+7 0643 FE06 cp 0x06
|
||
536: 7594+7+5 0645 2811 jr z, param_printRegisterHL
|
||
537: 7601+7 0647 FE07 cp 0x07
|
||
538: 7608+7+5 0649 2815 jr z, param_printRegisterA
|
||
539: 7615+10 064B 21910E ld hl, [dasm_printRegister8_table]
|
||
540: 7625+7 064E 0600 ld b,0
|
||
541: 7632+4 0650 4F ld c,a
|
||
542: 7636+11 0651 09 add hl,bc
|
||
543: 7647+7 0652 7E ld a, (hl)
|
||
544: 7654+17 0653 CDA902 call print_char
|
||
545: 7671+10 0656 E1 pop hl
|
||
546: 7681+10 0657 C9 ret
|
||
547:
|
||
548: - 0658 param_printRegisterHL:
|
||
549: 7691+10 0658 21B10E ld hl, [dasm_printRegister8_table_HL]
|
||
550: 7701+17 065B CDB102 call print_str
|
||
551: 7718+10 065E E1 pop hl
|
||
552: 7728+10 065F C9 ret
|
||
553:
|
||
554: - 0660 param_printRegisterA:
|
||
555: 7738+7 0660 3E41 ld a,"A"
|
||
556: 7745+17 0662 CDA902 call print_char
|
||
557: 7762+10 0665 E1 pop hl
|
||
558: 7772+10 0666 C9 ret
|
||
559:
|
||
560:
|
||
561: - 0667 param_comma:
|
||
562: 7782+4 0667 78 ld a,b
|
||
563: 7786+7 0668 FE01 cp 1
|
||
564: 7793+5+6 066A C8 ret z
|
||
565: 7798+7 066B 3E20 ld a," "
|
||
566: 7805+17 066D CDA902 call print_char
|
||
567: 7822+7 0670 3E2C ld a,","
|
||
568: 7829+17 0672 CDA902 call print_char
|
||
**** main.asm ****
|
||
477: 7846+10 0675 C9 ret
|
||
478: .include "disassembler_table.s"
|
||
**** include/disassembler_table.s ****
|
||
1: ;disassembler tables
|
||
2:
|
||
3: - 0676 dasm_opcode_table:
|
||
4: ;byte 0 = opcode
|
||
5: ;byte 1 = opcode mask
|
||
6: ;byte 2 = opcode extended
|
||
7: ;byte 3 = opcode extended mask
|
||
8: ;byte 4 = length
|
||
9: ;byte 5+6 = pointer to string
|
||
10: ;byte 7 = params = count of paramters
|
||
11: ;byte 8+ = paramters
|
||
12: ; 0x01 16bit address pointer
|
||
13: ; 0x02 flag bit 3-5
|
||
14: ; 0x03 relative jmp address
|
||
15: ; 0x04 RETI/RETN
|
||
16: ; 0x05 RST Vector
|
||
17: ; 0x06 register (r)
|
||
18: ; 0x07 register (r')
|
||
19: ; 0x08 8-Bit value
|
||
20: ; 0x09 16-Bit value
|
||
21: ; 0x0A 16-bit value with offset +1
|
||
22: ; 0x10 same as 0x06 without ","
|
||
23: ; 0x11 print 16 bit register from 1st byte
|
||
24: ; 0x12 print 16 bit register from 2nd byte
|
||
25: ; 0x13 push/pop register lookup
|
||
26: ; 0x80 print string suffix
|
||
27: ; 0x81 print string suffix 2
|
||
28: - 0676 00FF0000 defb 0x00, 0xFF, 0x00, 0x00, 1, [dasm_00], [dasm_00]>>8,0 ;NOP
|
||
01CE0A00
|
||
29: ;General-Purpose Arithmetic and CPU Control Groups
|
||
30: - 067E 27FF0000 defb 0x27, 0xFF, 0x00, 0x00, 1, [dasm_27], [dasm_27]>>8, 0 ;DAA
|
||
01990B00
|
||
31: - 0686 2FFF0000 defb 0x2F, 0xFF, 0x00, 0x00, 1, [dasm_2F], [dasm_2F]>>8, 0 ;CPL
|
||
019D0B00
|
||
32: - 068E EDFF44FF defb 0xED, 0xFF, 0x44, 0xFF, 2, [dasm_ED_44], [dasm_ED_44]>>8, 0 ;NEG
|
||
02A10B00
|
||
33: - 0696 3FFF0000 defb 0x3f, 0xFF, 0x00, 0x00, 1, [dasm_3F], [dasm_3F]>>8, 0 ;CCF
|
||
01A50B00
|
||
34: - 069E 37FF0000 defb 0x37, 0xFF, 0x00, 0x00, 1, [dasm_37], [dasm_37]>>8, 0 ;SCF
|
||
01A90B00
|
||
35: ;defb 0x00, 0xFF, 0x00, 0x00, 1, [dasm_00], [dasm_00]>>8,0 ;NOP -> already at top for performance reasons
|
||
36: - 06A6 76FF0000 defb 0x76, 0xFF, 0x00, 0x00, 1, [dasm_76], [dasm_76]>>8, 0 ;HALT
|
||
01AD0B00
|
||
37: - 06AE F3FF0000 defb 0xF3, 0xFF, 0x00, 0x00, 1, [dasm_F3], [dasm_F3]>>8, 0 ;DI
|
||
01B20B00
|
||
38: - 06B6 FBFF0000 defb 0xFB, 0xFF, 0x00, 0x00, 1, [dasm_FB], [dasm_FB]>>8, 0 ;EI
|
||
01B50B00
|
||
39: - 06BE EDFF46FF defb 0xED, 0xFF, 0x46, 0xFF, 2, [dasm_ED_46], [dasm_ED_46]>>8, 0 ;IM 0
|
||
02B80B00
|
||
40: - 06C6 EDFF56FF defb 0xED, 0xFF, 0x56, 0xFF, 2, [dasm_ED_56], [dasm_ED_56]>>8, 0 ;IM 1
|
||
02BD0B00
|
||
41: - 06CE EDFF5EFF defb 0xED, 0xFF, 0x5E, 0xFF, 2, [dasm_ED_5E], [dasm_ED_5E]>>8, 0 ;IM 2
|
||
02C20B00
|
||
42:
|
||
43: ;Exchange, Block Transfer, and Search Group
|
||
44: - 06D6 EBFF0000 defb 0xEB, 0xFF, 0x00, 0x00, 1, [dasm_BE], [dasm_BE]>>8, 0 ;EX DE, HL
|
||
01C70B00
|
||
45: - 06DE 08FF0000 defb 0x08, 0xFF, 0x00, 0x00, 1, [dasm_08], [dasm_08]>>8, 0 ;EX AF, AF′
|
||
01D10B00
|
||
46: - 06E6 D9FF0000 defb 0xD9, 0xFF, 0x00, 0x00, 1, [dasm_D9], [dasm_D9]>>8, 0 ;EXX
|
||
01DE0B00
|
||
47: - 06EE E3FF0000 defb 0xE3, 0xFF, 0x00, 0x00, 1, [dasm_E3], [dasm_E3]>>8, 0 ;EX (SP), HL
|
||
01E20B00
|
||
48: - 06F6 DDFFE3FF defb 0xDD, 0xFF, 0xE3, 0xFF, 2, [dasm_DD_E3], [dasm_DD_E3]>>8, 0 ;EX (SP), IX
|
||
02EE0B00
|
||
49: - 06FE FDFFE3FF defb 0xFD, 0xFF, 0xE3, 0xFF, 2, [dasm_FD_E3], [dasm_FD_E3]>>8, 0 ;EX (SP), IY
|
||
02FA0B00
|
||
50: - 0706 EDFFA0FF defb 0xED, 0xFF, 0xA0, 0xFF, 2, [dasm_ED_A0], [dasm_ED_A0]>>8, 0 ;LDI
|
||
02060C00
|
||
51: - 070E EDFFB0FF defb 0xED, 0xFF, 0xB0, 0xFF, 2, [dasm_ED_B0], [dasm_ED_B0]>>8, 0 ;LDIR
|
||
020A0C00
|
||
52: - 0716 EDFFA8FF defb 0xED, 0xFF, 0xA8, 0xFF, 2, [dasm_ED_A8], [dasm_ED_A8]>>8, 0 ;LDD
|
||
020F0C00
|
||
53: - 071E EDFFB8FF defb 0xED, 0xFF, 0xB8, 0xFF, 2, [dasm_ED_B8], [dasm_ED_B8]>>8, 0 ;LDDR
|
||
02130C00
|
||
54: - 0726 EDFFA1FF defb 0xED, 0xFF, 0xA1, 0xFF, 2, [dasm_ED_A1], [dasm_ED_A1]>>8, 0 ;CPI
|
||
02180C00
|
||
55: - 072E EDFFB1FF defb 0xED, 0xFF, 0xB1, 0xFF, 2, [dasm_ED_B1], [dasm_ED_B1]>>8, 0 ;CPIR
|
||
021C0C00
|
||
56: - 0736 EDFFA9FF defb 0xED, 0xFF, 0xA9, 0xFF, 2, [dasm_ED_A9], [dasm_ED_A9]>>8, 0 ;CPD
|
||
02210C00
|
||
57: - 073E EDFFB9FF defb 0xED, 0xFF, 0xB9, 0xFF, 2, [dasm_ED_B9], [dasm_ED_B9]>>8, 0 ;CPDR
|
||
02250C00
|
||
58:
|
||
59: ;JUMP Group
|
||
60: - 0746 C3FF0000 defb 0xC3, 0xFF, 0x00, 0x00, 3, [dasm_C3], [dasm_C3]>>8,1, 0x01 ;JP nn
|
||
03D20A01
|
||
01
|
||
61: - 074F C2C70000 defb 0xC2, 0xC7, 0x00, 0x00, 3, [dasm_C3], [dasm_C3]>>8,3, 0x02, 0x80, 0x01 ;JP cc,nn
|
||
03D20A03
|
||
028001
|
||
62: - 075A 18FF0000 defb 0x18, 0xFF, 0x00, 0x00, 2, [dasm_18], [dasm_18]>>8,1, 0x03 ;JR e
|
||
02D90A01
|
||
03
|
||
63: - 0763 38FF0000 defb 0x38, 0xFF, 0x00, 0x00, 2, [dasm_38], [dasm_38]>>8,1, 0x03 ;JR C,e
|
||
02DD0A01
|
||
03
|
||
64: - 076C 30FF0000 defb 0x30, 0xFF, 0x00, 0x00, 2, [dasm_30], [dasm_30]>>8,1, 0x03 ;JR NC,e
|
||
02E40A01
|
||
03
|
||
65: - 0775 28FF0000 defb 0x28, 0xFF, 0x00, 0x00, 2, [dasm_28], [dasm_28]>>8,1, 0x03 ;JR Z,e
|
||
02EC0A01
|
||
03
|
||
66: - 077E 20FF0000 defb 0x20, 0xFF, 0x00, 0x00, 2, [dasm_20], [dasm_20]>>8,1, 0x03 ;JR NZ,e
|
||
02F30A01
|
||
03
|
||
67: - 0787 E9FF0000 defb 0xE9, 0xFF, 0x00, 0x00, 2, [dasm_E9], [dasm_E9]>>8,0 ;JP (HL)
|
||
02FB0A00
|
||
68: - 078F DDFFE9FF defb 0xDD, 0xFF, 0xE9, 0xFF, 2, [dasm_DD], [dasm_DD]>>8,0 ;JP (IX)
|
||
02040B00
|
||
69: - 0797 FDFFE9FF defb 0xFD, 0xFF, 0xE9, 0xFF, 2, [dasm_FD], [dasm_FD]>>8,0 ;JP (IY)
|
||
020D0B00
|
||
70: - 079F 10FF0000 defb 0x10, 0xFF, 0x00, 0x00, 2, [dasm_10], [dasm_10]>>8,1, 0x03 ;DJNZ, e
|
||
02160B01
|
||
03
|
||
71: ;Call and Return Group
|
||
72: - 07A8 CDFF0000 defb 0xCD, 0xFF, 0x00, 0x00, 3, [dasm_CD], [dasm_CD]>>8,1, 0x01 ;CALL nn
|
||
031C0B01
|
||
01
|
||
73: - 07B1 C4C70000 defb 0xC4, 0xC7, 0x00, 0x00, 3, [dasm_CD], [dasm_CD]>>8,2, 0x02, 0x01 ;CALL cc,nn
|
||
031C0B02
|
||
0201
|
||
74: - 07BB C9FF0000 defb 0xC9, 0xFF, 0x00, 0x00, 1, [dasm_C9], [dasm_C9]>>8,0 ;RET
|
||
01220B00
|
||
75: - 07C3 C0C70000 defb 0xC0, 0xC7, 0x00, 0x00, 1, [dasm_C9], [dasm_C9]>>8,1, 0x02 ;RET cc
|
||
01220B01
|
||
02
|
||
76: - 07CC EDFF4DFF defb 0xED, 0xFF, 0x4D, 0xFF, 2, [dasm_ED_4D], [dasm_ED_4D]>>8,0 ;RETI
|
||
02270B00
|
||
77: - 07D4 EDFF45FF defb 0xED, 0xFF, 0x45, 0xFF, 2, [dasm_ED_45], [dasm_ED_45]>>8,0 ;RETN
|
||
022C0B00
|
||
78:
|
||
79: - 07DC C7C70000 defb 0xC7, 0xC7, 0x00, 0x00, 1, [dasm_FF], [dasm_FF]>>8,1, 0x05 ;RST
|
||
01310B01
|
||
05
|
||
80: ;8-Bit load group
|
||
81: - 07E5 0AFF0000 defb 0x0A, 0xFF, 0x00, 0x00, 1, [dasm_0A], [dasm_0A]>>8, 0 ;LD A, (BC)
|
||
01360B00
|
||
82: - 07ED 1AFF0000 defb 0x1A, 0xFF, 0x00, 0x00, 1, [dasm_1A], [dasm_1A]>>8, 0 ;LD A, (DE)
|
||
01400B00
|
||
83: - 07F5 3AFF0000 defb 0x3A, 0xFF, 0x00, 0x00, 3, [dasm_3A], [dasm_3A]>>8, 2, 0x09, 0x80 ;LD A, (nn)
|
||
034A0B02
|
||
0980
|
||
84: - 07FF 02FF0000 defb 0x02, 0xFF, 0x00, 0x00, 1, [dasm_02], [dasm_02]>>8, 0 ;LD (BC), A
|
||
01540B00
|
||
85: - 0807 12FF0000 defb 0x12, 0xFF, 0x00, 0x00, 1, [dasm_12], [dasm_12]>>8, 0 ;LD (DE), A
|
||
015F0B00
|
||
86: - 080F 32FF0000 defb 0x32, 0xFF, 0x00, 0x00, 3, [dasm_32], [dasm_32]>>8, 2, 0x09, 0x80 ;LD (nn), A
|
||
036A0B02
|
||
0980
|
||
87: - 0819 EDFF57FF defb 0xED, 0xFF, 0x57, 0xFF, 2, [dasm__ED_57], [dasm__ED_57]>>8, 0 ;LD A, I
|
||
02790B00
|
||
88: - 0821 EDFF5FFF defb 0xED, 0xFF, 0x5F, 0xFF, 2, [dasm__ED_5F], [dasm__ED_5F]>>8, 0 ;LD A, R
|
||
02810B00
|
||
89: - 0829 EDFF47FF defb 0xED, 0xFF, 0x47, 0xFF, 2, [dasm__ED_47], [dasm__ED_47]>>8, 0 ;LD I, A
|
||
02890B00
|
||
90: - 0831 EDFF4FFF defb 0xED, 0xFF, 0x4F, 0xFF, 2, [dasm__ED_4F], [dasm__ED_4F]>>8, 0 ;LD R, A
|
||
02910B00
|
||
91:
|
||
92: - 0839 06C70000 defb 0x06, 0xC7, 0x00, 0x00, 2, [dasm__LD], [dasm__LD]>>8, 2, 0x06, 0x08 ;LD r, n
|
||
02750B02
|
||
0608
|
||
93: - 0843 40C00000 defb 0x40, 0xC0, 0x00, 0x00, 1, [dasm__LD], [dasm__LD]>>8, 2, 0x06, 0x07 ;LD r, r' / LD r, (HL) / LD (HL), r
|
||
01750B02
|
||
0607
|
||
94:
|
||
95: ;8-Bit Arithmetic Group
|
||
96: - 084D 80F80000 defb 0x80, 0xF8, 0x00, 0x00, 1, [dasm_80C6], [dasm_80C6]>>8, 1, 0x07 ;ADD A, r / ADD A, (HL)
|
||
012A0C01
|
||
07
|
||
97: - 0856 C6FF0000 defb 0xC6, 0xFF, 0x00, 0x00, 2, [dasm_80C6], [dasm_80C6]>>8, 1, 0x08 ;ADD A, n
|
||
022A0C01
|
||
08
|
||
98: - 085F DDFF86FF defb 0xDD, 0xFF, 0x86, 0xFF, 3, [dasm_DD_86], [dasm_DD_86]>>8, 2, 0x08, 0x80 ;ADD A, (IX + d)
|
||
03320C02
|
||
0880
|
||
99: - 0869 FDFF86FF defb 0xFD, 0xFF, 0x86, 0xFF, 3, [dasm_FD_86], [dasm_FD_86]>>8, 2, 0x08, 0x80 ;ADD A, (IY + d)
|
||
03410C02
|
||
0880
|
||
100: - 0873 C8F80000 defb 0xC8, 0xF8, 0x00, 0x00, 1, [dasm_C88E], [dasm_C88E]>>8, 1, 0x07 ;ADC A, r / ADC A, (HL)
|
||
01500C01
|
||
07
|
||
101: - 087C 8EF80000 defb 0x8E, 0xF8, 0x00, 0x00, 2, [dasm_C88E], [dasm_C88E]>>8, 1, 0x08 ;ADC A, n
|
||
02500C01
|
||
08
|
||
102: - 0885 DDFF8EFF defb 0xDD, 0xFF, 0x8E, 0xFF, 3, [dasm_DD_8E], [dasm_DD_8E]>>8, 2, 0x08, 0x80 ;ADC A, (IX + d)
|
||
03580C02
|
||
0880
|
||
103: - 088F FDFF8EFF defb 0xFD, 0xFF, 0x8E, 0xFF, 3, [dasm_FD_8E], [dasm_FD_8E]>>8, 2, 0x08, 0x80 ;ADC A, (IY + d)
|
||
03670C02
|
||
0880
|
||
104: - 0899 90F80000 defb 0x90, 0xF8, 0x00, 0x00, 1, [dasm__SUB], [dasm__SUB]>>8, 1, 0x07 ;SUB r / SUB A, (HL)
|
||
01760C01
|
||
07
|
||
105: - 08A2 D6FF0000 defb 0xD6, 0xFF, 0x00, 0x00, 2, [dasm__SUB], [dasm__SUB]>>8, 1, 0x08 ;SUB n
|
||
02760C01
|
||
08
|
||
106: - 08AB DDFF96FF defb 0xDD, 0xFF, 0x96, 0xFF, 3, [dasm_DD_96], [dasm_DD_96]>>8, 2, 0x08, 0x80 ;SUB (IX + d)
|
||
037B0C02
|
||
0880
|
||
107: - 08B5 FDFF96FF defb 0xFD, 0xFF, 0x96, 0xFF, 3, [dasm_FD_96], [dasm_FD_96]>>8, 2, 0x08, 0x80 ;SUB (IY + d)
|
||
03870C02
|
||
0880
|
||
108: - 08BF 94F80000 defb 0x94, 0xF8, 0x00, 0x00, 1, [dasm__SBC], [dasm__SBC]>>8, 1, 0x07 ;SBC A,r / SBC A, (HL)
|
||
01930C01
|
||
07
|
||
109: - 08C8 DEFF0000 defb 0xDE, 0xFF, 0x00, 0x00, 2, [dasm__SBC], [dasm__SBC]>>8, 1, 0x08 ;SBC A,n
|
||
02930C01
|
||
08
|
||
110: - 08D1 DDFF9EFF defb 0xDD, 0xFF, 0x9E, 0xFF, 3, [dasm_DD_9E], [dasm_DD_9E]>>8, 2, 0x08, 0x80 ;SBC A,(IX + d)
|
||
039B0C02
|
||
0880
|
||
111: - 08DB FDFF9EFF defb 0xFD, 0xFF, 0x9E, 0xFF, 3, [dasm_FD_9E], [dasm_FD_9E]>>8, 2, 0x08, 0x80 ;SBC A,(IY + d)
|
||
03A90C02
|
||
0880
|
||
112: - 08E5 A0F80000 defb 0xA0, 0xF8, 0x00, 0x00, 1, [dasm__AND], [dasm__AND]>>8, 1, 0x07 ;AND A,r / AND A, (HL)
|
||
01B70C01
|
||
07
|
||
113: - 08EE E6FF0000 defb 0xE6, 0xFF, 0x00, 0x00, 2, [dasm__AND], [dasm__AND]>>8, 1, 0x08 ;AND A,n
|
||
02B70C01
|
||
08
|
||
114: - 08F7 DDFFA6FF defb 0xDD, 0xFF, 0xA6, 0xFF, 3, [dasm_DD_A6], [dasm_DD_A6]>>8, 2, 0x08, 0x80 ;AND A,(IX + d)
|
||
03BC0C02
|
||
0880
|
||
115: - 0901 FDFFA6FF defb 0xFD, 0xFF, 0xA6, 0xFF, 3, [dasm_FD_A6], [dasm_FD_A6]>>8, 2, 0x08, 0x80 ;AND A,(IY + d)
|
||
03C80C02
|
||
0880
|
||
116: - 090B B0F80000 defb 0xB0, 0xF8, 0x00, 0x00, 1, [dasm__OR], [dasm__OR]>>8, 1, 0x07 ;OR A,r / OR A, (HL)
|
||
01D40C01
|
||
07
|
||
117: - 0914 F6FF0000 defb 0xF6, 0xFF, 0x00, 0x00, 2, [dasm__OR], [dasm__OR]>>8, 1, 0x08 ;OR A,n
|
||
02D40C01
|
||
08
|
||
118: - 091D DDFFB6FF defb 0xDD, 0xFF, 0xB6, 0xFF, 3, [dasm_DD_B6], [dasm_DD_B6]>>8, 2, 0x08, 0x80 ;OR A,(IX + d)
|
||
03D80C02
|
||
0880
|
||
119: - 0927 FDFFB6FF defb 0xFD, 0xFF, 0xB6, 0xFF, 3, [dasm_FD_B6], [dasm_FD_B6]>>8, 2, 0x08, 0x80 ;OR A,(IY + d)
|
||
03E30C02
|
||
0880
|
||
120: - 0931 A8F80000 defb 0xA8, 0xF8, 0x00, 0x00, 1, [dasm__XOR], [dasm__XOR]>>8, 1, 0x07 ;XOR A,r / XOR A, (HL)
|
||
01EE0C01
|
||
07
|
||
121: - 093A EEFF0000 defb 0xEE, 0xFF, 0x00, 0x00, 2, [dasm__XOR], [dasm__XOR]>>8, 1, 0x08 ;XOR A,n
|
||
02EE0C01
|
||
08
|
||
122: - 0943 DDFFAEFF defb 0xDD, 0xFF, 0xAE, 0xFF, 3, [dasm_DD_AE], [dasm_DD_AE]>>8, 2, 0x08, 0x80 ;XOR A,(IX + d)
|
||
03F30C02
|
||
0880
|
||
123: - 094D FDFFAEFF defb 0xFD, 0xFF, 0xAE, 0xFF, 3, [dasm_FD_AE], [dasm_FD_AE]>>8, 2, 0x08, 0x80 ;XOR A,(IY + d)
|
||
03FF0C02
|
||
0880
|
||
124: - 0957 B8F80000 defb 0xB8, 0xF8, 0x00, 0x00, 1, [dasm__CP], [dasm__CP]>>8, 1, 0x07 ;CP A,r / CP A, (HL)
|
||
010B0D01
|
||
07
|
||
125: - 0960 FEFF0000 defb 0xFE, 0xFF, 0x00, 0x00, 2, [dasm__CP], [dasm__CP]>>8, 1, 0x08 ;CP A,n
|
||
020B0D01
|
||
08
|
||
126: - 0969 DDFFBEFF defb 0xDD, 0xFF, 0xBE, 0xFF, 3, [dasm_DD_BE], [dasm_DD_BE]>>8, 2, 0x08, 0x80 ;CP A,(IX + d)
|
||
030F0D02
|
||
0880
|
||
127: - 0973 FDFFBEFF defb 0xFD, 0xFF, 0xBE, 0xFF, 3, [dasm_FD_BE], [dasm_FD_BE]>>8, 2, 0x08, 0x80 ;CP A,(IY + d)
|
||
031A0D02
|
||
0880
|
||
128: - 097D 04C70000 defb 0x04, 0xC7, 0x00, 0x00, 1, [dasm__INC], [dasm__INC]>>8, 1, 0x10 ;INC r / INC (HL)
|
||
01250D01
|
||
10
|
||
129: - 0986 DDFF34FF defb 0xDD, 0xFF, 0x34, 0xFF, 3, [dasm_DD_34], [dasm_DD_34]>>8, 2, 0x08, 0x80 ;INC (IX + d)
|
||
032A0D02
|
||
0880
|
||
130: - 0990 FDFF34FF defb 0xFD, 0xFF, 0x34, 0xFF, 3, [dasm_FD_34], [dasm_FD_34]>>8, 2, 0x08, 0x80 ;INC (IY + d)
|
||
03360D02
|
||
0880
|
||
131: - 099A 05C70000 defb 0x05, 0xC7, 0x00, 0x00, 1, [dasm__DEC], [dasm__DEC]>>8, 1, 0x10 ;DEC r / DEC (HL)
|
||
01420D01
|
||
10
|
||
132: - 09A3 DDFF35FF defb 0xDD, 0xFF, 0x35, 0xFF, 3, [dasm_DD_35], [dasm_DD_35]>>8, 2, 0x08, 0x80 ;DEC (IX + d)
|
||
03470D02
|
||
0880
|
||
133: - 09AD FDFF35FF defb 0xFD, 0xFF, 0x35, 0xFF, 3, [dasm_FD_35], [dasm_FD_35]>>8, 2, 0x08, 0x80 ;DEC (IY + d)
|
||
03530D02
|
||
0880
|
||
134: ;16-Bit Arithmetic Group
|
||
135: - 09B7 09CF0000 defb 0x09, 0xCF, 0x00, 0x00, 1, [dasm_09], [dasm_09]>>8, 1, 0x11 ;ADD HL, ss
|
||
015F0D01
|
||
11
|
||
136: - 09C0 EDFF4ACF defb 0xED, 0xFF, 0x4A, 0xCF, 2, [dasm_ED_4A], [dasm_ED_4A]>>8, 1, 0x12 ;ADC HL, ss
|
||
02680D01
|
||
12
|
||
137: - 09C9 EDFF42CF defb 0xED, 0xFF, 0x42, 0xCF, 2, [dasm_ED_42], [dasm_ED_42]>>8, 1, 0x12 ;SBC HL, ss
|
||
02710D01
|
||
12
|
||
138: - 09D2 DDFF09CF defb 0xDD, 0xFF, 0x09, 0xCF, 2, [dasm_DD_09], [dasm_DD_09]>>8, 1, 0x12 ;ADD IX, ss
|
||
027A0D01
|
||
12
|
||
139: - 09DB FDFF09CF defb 0xFD, 0xFF, 0x09, 0xCF, 2, [dasm_FD_09], [dasm_FD_09]>>8, 1, 0x12 ;ADD IY, ss
|
||
02830D01
|
||
12
|
||
140: - 09E4 03CF0000 defb 0x03, 0xCF, 0x00, 0x00, 1, [dasm_03], [dasm_03]>>8, 1, 0x11 ;INC ss
|
||
018C0D01
|
||
11
|
||
141: - 09ED DDFF23FF defb 0xDD, 0xFF, 0x23, 0xFF, 2, [dasm_DD_23], [dasm_DD_23]>>8, 0 ;INC IX
|
||
02910D00
|
||
142: - 09F5 FDFF23FF defb 0xFD, 0xFF, 0x23, 0xFF, 2, [dasm_FD_23], [dasm_FD_23]>>8, 0 ;INC IY
|
||
029A0D00
|
||
143: - 09FD 0BCF0000 defb 0x0B, 0xCF, 0x00, 0x00, 1, [dasm_0B], [dasm_0B]>>8, 1, 0x11 ;DEC ss
|
||
01A30D01
|
||
11
|
||
144: - 0A06 DDFF2BFF defb 0xDD, 0xFF, 0x2B, 0xFF, 2, [dasm_DD_2B], [dasm_DD_2B]>>8, 0 ;DEC IX
|
||
02A80D00
|
||
145: - 0A0E FDFF2BFF defb 0xFD, 0xFF, 0x2B, 0xFF, 2, [dasm_FD_2B], [dasm_FD_2B]>>8, 0 ;DEC IY
|
||
02B10D00
|
||
146: ;16-Bit Load Group
|
||
147: - 0A16 01CF0000 defb 0x01, 0xCF, 0x00, 0x00, 3, [dasm_01], [dasm_01]>>8, 3, 0x11, 0x80, 0x09 ;LD dd, nn
|
||
03BA0D03
|
||
118009
|
||
148: - 0A21 DDFF21FF defb 0xDD, 0xFF, 0x21, 0xFF, 4, [dasm_DD_01], [dasm_DD_01]>>8, 1, 0x0A ;LD IX, nn
|
||
04C10D01
|
||
0A
|
||
149: - 0A2A FDFF21FF defb 0xFD, 0xFF, 0x21, 0xFF, 4, [dasm_FD_01], [dasm_FD_01]>>8, 1, 0x0A ;LD IY, nn
|
||
04C90D01
|
||
0A
|
||
150: - 0A33 2AFF0000 defb 0x2A, 0xFF, 0x00, 0x00, 3, [dasm_2A], [dasm_2A]>>8, 2, 0x09, 0x80 ;LD HL, (nn)
|
||
03D10D02
|
||
0980
|
||
151: - 0A3D EDFF4BCF defb 0xED, 0xFF, 0x4B, 0xCF, 4, [dasm_ED_4B], [dasm_ED_4B]>>8, 4, 0x12, 0x80, 0x0A, 0x81 ;LD dd, (nn)
|
||
04DD0D04
|
||
12800A81
|
||
152: - 0A49 DDFF2AFF defb 0xDD, 0xFF, 0x2A, 0xFF, 4, [dasm_DD_2A], [dasm_DD_2A]>>8, 1, 0x0A ;LD IX, (nn)
|
||
04E80D01
|
||
0A
|
||
153: - 0A52 FDFF2AFF defb 0xFD, 0xFF, 0x2A, 0xFF, 4, [dasm_FD_2A], [dasm_FD_2A]>>8, 1, 0x0A ;LD IY, (nn)
|
||
04F40D01
|
||
0A
|
||
154: - 0A5B 22FF0000 defb 0x22, 0xFF, 0x00, 0x00, 3, [dasm_22], [dasm_22]>>8, 2, 0x0A, 0x80 ;LD (nn), HL
|
||
03000E02
|
||
0A80
|
||
155: - 0A65 EDFF43CF defb 0xED, 0xFF, 0x43, 0xCF, 4, [dasm_ED_43], [dasm_ED_43]>>8, 3, 0x0A, 0x80, 0x12 ;LD (nn), dd
|
||
040C0E03
|
||
0A8012
|
||
156: - 0A70 DDFF22CF defb 0xDD, 0xFF, 0x22, 0xCF, 4, [dasm_DD_22], [dasm_DD_22]>>8, 2, 0x0A, 0x80 ;LD (nn), IX
|
||
04160E02
|
||
0A80
|
||
157: - 0A7A FDFF22CF defb 0xFD, 0xFF, 0x22, 0xCF, 4, [dasm_FD_22], [dasm_FD_22]>>8, 2, 0x0A, 0x80 ;LD (nn), IY
|
||
04220E02
|
||
0A80
|
||
158: - 0A84 F9FF0000 defb 0xF9, 0xFF, 0x00, 0x00, 1, [dasm_F9], [dasm_F9]>>8, 0 ;LD SP, HL
|
||
012E0E00
|
||
159: - 0A8C DDFFF9FF defb 0xDD, 0xFF, 0xF9, 0xFF, 2, [dasm_DD_F9], [dasm_DD_F9]>>8, 0 ;LD SP, IX
|
||
02380E00
|
||
160: - 0A94 FDFFF9FF defb 0xFD, 0xFF, 0xF9, 0xFF, 2, [dasm_FD_F9], [dasm_FD_F9]>>8, 0 ;LD SP, IY
|
||
02420E00
|
||
161: - 0A9C C5CF0000 defb 0xC5, 0xCF, 0x00, 0x00, 1, [dasm_E5], [dasm_E5]>>8, 1, 0x13 ;PUSH qq
|
||
014C0E01
|
||
13
|
||
162: - 0AA5 DDFFE5FF defb 0xDD, 0xFF, 0xE5, 0xFF, 2, [dasm_DD_E5], [dasm_DD_E5]>>8, 0 ;PUSH IX
|
||
02520E00
|
||
163: - 0AAD FDFFE5FF defb 0xFD, 0xFF, 0xE5, 0xFF, 2, [dasm_FD_E5], [dasm_FD_E5]>>8, 0 ;PUSH IY
|
||
025A0E00
|
||
164: - 0AB5 C1CF0000 defb 0xC1, 0xCF, 0x00, 0x00, 1, [dasm_E1], [dasm_E1]>>8, 1, 0x13 ;POP qq
|
||
01620E01
|
||
13
|
||
165: - 0ABE DDFFE1FF defb 0xDD, 0xFF, 0xE1, 0xFF, 2, [dasm_DD_E1], [dasm_DD_E1]>>8, 0 ;POP IX
|
||
02680E00
|
||
166: - 0AC6 FDFFE1FF defb 0xFD, 0xFF, 0xE1, 0xFF, 2, [dasm_FD_E1], [dasm_FD_E1]>>8, 0 ;POP IY
|
||
02700E00
|
||
167:
|
||
168:
|
||
169: - 0ACE 4E4F5000 dasm_00: db "NOP",0x00
|
||
170: ;JUMP Group
|
||
171: - 0AD2 4A502000 dasm_C3: db "JP ",0x00,", ",0x00
|
||
2C2000
|
||
172: - 0AD9 4A522000 dasm_18: db "JR ",0x00
|
||
173: - 0ADD 4A522043 dasm_38: db "JR C, ",0x00
|
||
2C2000
|
||
174: - 0AE4 4A52204E dasm_30: db "JR NC, ",0x00
|
||
432C2000
|
||
175: - 0AEC 4A52205A dasm_28: db "JR Z, ",0x00
|
||
2C2000
|
||
176: - 0AF3 4A52204E dasm_20: db "JR NZ, ",0x00
|
||
5A2C2000
|
||
177: - 0AFB 4A502028 dasm_E9: db "JP (HL) ",0x00
|
||
484C2920
|
||
00
|
||
178: - 0B04 4A502028 dasm_DD: db "JP (IX) ",0x00
|
||
49582920
|
||
00
|
||
179: - 0B0D 4A502028 dasm_FD: db "JP (IY) ",0x00
|
||
49592920
|
||
00
|
||
180: - 0B16 444A4E5A dasm_10: db "DJNZ ",0x00
|
||
2000
|
||
181: ;Call and Return Group
|
||
182: - 0B1C 43414C4C dasm_CD: db "CALL ",0x00
|
||
2000
|
||
183: - 0B22 52455420 dasm_C9: db "RET ",0x00
|
||
00
|
||
184: - 0B27 52455449 dasm_ED_4D: db "RETI",0x00
|
||
00
|
||
185: - 0B2C 5245544E dasm_ED_45: db "RETN",0x00
|
||
00
|
||
186: - 0B31 52535420 dasm_FF: db "RST ",0x00
|
||
00
|
||
187: ;8-Bit load group
|
||
188: - 0B36 4C442041 dasm_0A: db "LD A,(BC)",0x00
|
||
2C284243
|
||
2900
|
||
189: - 0B40 4C442041 dasm_1A: db "LD A,(DE)",0x00
|
||
2C284445
|
||
2900
|
||
190: - 0B4A 4C442041 dasm_3A: db "LD A,(",0x00, "h)",0x00
|
||
2C280068
|
||
2900
|
||
191: - 0B54 4C442028 dasm_02: db "LD (BC), A",0x00
|
||
4243292C
|
||
204100
|
||
192: - 0B5F 4C442028 dasm_12: db "LD (DE), A",0x00
|
||
4445292C
|
||
204100
|
||
193: - 0B6A 4C442028 dasm_32: db "LD (",0x00, "h), A",0x00
|
||
0068292C
|
||
204100
|
||
194: - 0B75 4C442000 dasm__LD: db "LD ",0x00
|
||
195: - 0B79 4C442041 dasm__ED_57: db "LD A, I",0x00
|
||
2C204900
|
||
196: - 0B81 4C442041 dasm__ED_5F: db "LD A, R",0x00
|
||
2C205200
|
||
197: - 0B89 4C442049 dasm__ED_47: db "LD I, A",0x00
|
||
2C204100
|
||
198: - 0B91 4C442052 dasm__ED_4F: db "LD R, A",0x00
|
||
2C204100
|
||
199: ;General-Purpose Arithmetic and CPU Control Groups
|
||
200: - 0B99 44414100 dasm_27: db "DAA",0x00
|
||
201: - 0B9D 43504C00 dasm_2F: db "CPL",0x00
|
||
202: - 0BA1 4E454700 dasm_ED_44: db "NEG",0x00
|
||
203: - 0BA5 43434600 dasm_3F: db "CCF",0x00
|
||
204: - 0BA9 53434600 dasm_37: db "SCF",0x00
|
||
205: - 0BAD 48414C54 dasm_76: db "HALT",0x00
|
||
00
|
||
206: - 0BB2 444900 dasm_F3: db "DI",0x00
|
||
207: - 0BB5 454900 dasm_FB: db "EI",0x00
|
||
208: - 0BB8 494D2030 dasm_ED_46: db "IM 0",0x00
|
||
00
|
||
209: - 0BBD 494D2031 dasm_ED_56: db "IM 1",0x00
|
||
00
|
||
210: - 0BC2 494D2032 dasm_ED_5E: db "IM 2",0x00
|
||
00
|
||
211: ;Exchange, Block Transfer, and Search Group
|
||
212: - 0BC7 45582044 dasm_BE: db "EX DE, HL",0x00
|
||
452C2048
|
||
4C00
|
||
213: - 0BD1 45582041 dasm_08: db "EX AF, AF′",0x00
|
||
462C2041
|
||
46E280B2
|
||
00
|
||
214: - 0BDE 45585800 dasm_D9: db "EXX",0x00
|
||
215: - 0BE2 45582028 dasm_E3: db "EX (SP), HL",0x00
|
||
5350292C
|
||
20484C00
|
||
216: - 0BEE 45582028 dasm_DD_E3: db "EX (SP), IX",0x00
|
||
5350292C
|
||
20495800
|
||
217: - 0BFA 45582028 dasm_FD_E3: db "EX (SP), IY",0x00
|
||
5350292C
|
||
20495900
|
||
218: - 0C06 4C444900 dasm_ED_A0: db "LDI",0x00
|
||
219: - 0C0A 4C444952 dasm_ED_B0: db "LDIR",0x00
|
||
00
|
||
220: - 0C0F 4C444400 dasm_ED_A8: db "LDD",0x00
|
||
221: - 0C13 4C444452 dasm_ED_B8: db "LDDR",0x00
|
||
00
|
||
222: - 0C18 43504900 dasm_ED_A1: db "CPI",0x00
|
||
223: - 0C1C 43504952 dasm_ED_B1: db "CPIR",0x00
|
||
00
|
||
224: - 0C21 43504400 dasm_ED_A9: db "CPD",0x00
|
||
225: - 0C25 43504452 dasm_ED_B9: db "CPDR",0x00
|
||
00
|
||
226: ;8-Bit Arithmetic Group
|
||
227: - 0C2A 41444420 dasm_80C6: db "ADD A, ", 0x00
|
||
412C2000
|
||
228: - 0C32 41444420 dasm_DD_86: db "ADD A, (IX+", 0x00, "h)",0x00
|
||
412C2028
|
||
49582B00
|
||
682900
|
||
229: - 0C41 41444420 dasm_FD_86: db "ADD A, (IY+", 0x00, "h)",0x00
|
||
412C2028
|
||
49592B00
|
||
682900
|
||
230: - 0C50 41444320 dasm_C88E: db "ADC A, ", 0x00
|
||
412C2000
|
||
231: - 0C58 41444320 dasm_DD_8E: db "ADC A, (IX+", 0x00, "h)",0x00
|
||
412C2028
|
||
49582B00
|
||
682900
|
||
232: - 0C67 41444320 dasm_FD_8E: db "ADC A, (IY+", 0x00, "h)",0x00
|
||
412C2028
|
||
49592B00
|
||
682900
|
||
233: - 0C76 53554220 dasm__SUB: db "SUB ", 0x00
|
||
00
|
||
234: - 0C7B 53554220 dasm_DD_96: db "SUB (IX+", 0x00, "h)",0x00
|
||
2849582B
|
||
00682900
|
||
235: - 0C87 53554220 dasm_FD_96: db "SUB (IY+", 0x00, "h)",0x00
|
||
2849592B
|
||
00682900
|
||
236: - 0C93 53424320 dasm__SBC: db "SBC A, ", 0x00
|
||
412C2000
|
||
237: - 0C9B 53424320 dasm_DD_9E: db "SBC A,(IX+", 0x00, "h)",0x00
|
||
412C2849
|
||
582B0068
|
||
2900
|
||
238: - 0CA9 53424320 dasm_FD_9E: db "SBC A,(IY+", 0x00, "h)",0x00
|
||
412C2849
|
||
592B0068
|
||
2900
|
||
239: - 0CB7 414E4420 dasm__AND: db "AND ", 0x00
|
||
00
|
||
240: - 0CBC 414E4420 dasm_DD_A6: db "AND (IX+", 0x00, "h)",0x00
|
||
2849582B
|
||
00682900
|
||
241: - 0CC8 414E4420 dasm_FD_A6: db "AND (IY+", 0x00, "h)",0x00
|
||
2849592B
|
||
00682900
|
||
242: - 0CD4 4F522000 dasm__OR: db "OR ", 0x00
|
||
243: - 0CD8 4F522028 dasm_DD_B6: db "OR (IX+", 0x00, "h)",0x00
|
||
49582B00
|
||
682900
|
||
244: - 0CE3 4F522028 dasm_FD_B6: db "OR (IY+", 0x00, "h)",0x00
|
||
49592B00
|
||
682900
|
||
245: - 0CEE 584F5220 dasm__XOR: db "XOR ", 0x00
|
||
00
|
||
246: - 0CF3 584F5220 dasm_DD_AE: db "XOR (IX+", 0x00, "h)",0x00
|
||
2849582B
|
||
00682900
|
||
247: - 0CFF 584F5220 dasm_FD_AE: db "XOR (IY+", 0x00, "h)",0x00
|
||
2849592B
|
||
00682900
|
||
248: - 0D0B 43502000 dasm__CP: db "CP ", 0x00
|
||
249: - 0D0F 43502028 dasm_DD_BE: db "CP (IX+", 0x00, "h)",0x00
|
||
49582B00
|
||
682900
|
||
250: - 0D1A 43502028 dasm_FD_BE: db "CP (IY+", 0x00, "h)",0x00
|
||
49592B00
|
||
682900
|
||
251: - 0D25 494E4320 dasm__INC: db "INC ", 0x00
|
||
00
|
||
252: - 0D2A 494E4320 dasm_DD_34: db "INC (IX+", 0x00, "h)",0x00
|
||
2849582B
|
||
00682900
|
||
253: - 0D36 494E4320 dasm_FD_34: db "INC (IY+", 0x00, "h)",0x00
|
||
2849592B
|
||
00682900
|
||
254: - 0D42 44454320 dasm__DEC: db "DEC ", 0x00
|
||
00
|
||
255: - 0D47 44454320 dasm_DD_35: db "DEC (IX+", 0x00, "h)",0x00
|
||
2849582B
|
||
00682900
|
||
256: - 0D53 44454320 dasm_FD_35: db "DEC (IY+", 0x00, "h)",0x00
|
||
2849592B
|
||
00682900
|
||
257: ;16-Bit Arithmetic Group
|
||
258: - 0D5F 41444420 dasm_09: db "ADD HL, ",0x00
|
||
484C2C20
|
||
00
|
||
259: - 0D68 41444320 dasm_ED_4A: db "ADC HL, ",0x00
|
||
484C2C20
|
||
00
|
||
260: - 0D71 53424320 dasm_ED_42: db "SBC HL, ",0x00
|
||
484C2C20
|
||
00
|
||
261: - 0D7A 41444420 dasm_DD_09: db "ADD IX, ",0x00
|
||
49582C20
|
||
00
|
||
262: - 0D83 41444420 dasm_FD_09: db "ADD IY, ",0x00
|
||
49592C20
|
||
00
|
||
263: - 0D8C 494E4320 dasm_03: db "INC ",0x00
|
||
00
|
||
264: - 0D91 494E4320 dasm_DD_23: db "INC IX, ",0x00
|
||
49582C20
|
||
00
|
||
265: - 0D9A 494E4320 dasm_FD_23: db "INC IY, ",0x00
|
||
49592C20
|
||
00
|
||
266: - 0DA3 44454320 dasm_0B: db "DEC ",0x00
|
||
00
|
||
267: - 0DA8 44454320 dasm_DD_2B: db "DEC IX, ",0x00
|
||
49582C20
|
||
00
|
||
268: - 0DB1 44454320 dasm_FD_2B: db "DEC IY, ",0x00
|
||
49592C20
|
||
00
|
||
269: ;16-Bit Load Group
|
||
270: - 0DBA 4C442000 dasm_01: db "LD ",0x00, ", ",0x00
|
||
2C2000
|
||
271: - 0DC1 4C442049 dasm_DD_01: db "LD IX, ",0x00
|
||
582C2000
|
||
272: - 0DC9 4C442049 dasm_FD_01: db "LD IY, ",0x00
|
||
592C2000
|
||
273: - 0DD1 4C442048 dasm_2A: db "LD HL, (",0x00,"h)",0x00
|
||
4C2C2028
|
||
00682900
|
||
274: - 0DDD 4C442000 dasm_ED_4B: db "LD ",0x00,", (",0x00,"h)",0x00
|
||
2C202800
|
||
682900
|
||
275: - 0DE8 4C442049 dasm_DD_2A: db "LD IX, (",0x00,"h)",0x00
|
||
582C2028
|
||
00682900
|
||
276: - 0DF4 4C442049 dasm_FD_2A: db "LD IY, (",0x00,"h)",0x00
|
||
592C2028
|
||
00682900
|
||
277: - 0E00 4C442028 dasm_22: db "LD (",0x00,"h), HL",0x00
|
||
0068292C
|
||
20484C00
|
||
278: - 0E0C 4C442028 dasm_ED_43: db "LD (",0x00,"h), ",0x00
|
||
0068292C
|
||
2000
|
||
279: - 0E16 4C442028 dasm_DD_22: db "LD (",0x00,"h), IX",0x00
|
||
0068292C
|
||
20495800
|
||
280: - 0E22 4C442028 dasm_FD_22: db "LD (",0x00,"h), IY",0x00
|
||
0068292C
|
||
20495900
|
||
281: - 0E2E 4C442053 dasm_F9: db "LD SP, HL",0x00
|
||
502C2048
|
||
4C00
|
||
282: - 0E38 4C442053 dasm_DD_F9: db "LD SP, IX",0x00
|
||
502C2049
|
||
5800
|
||
283: - 0E42 4C442053 dasm_FD_F9: db "LD SP, IY",0x00
|
||
502C2049
|
||
5900
|
||
284: - 0E4C 50555348 dasm_E5: db "PUSH ",0x00
|
||
2000
|
||
285: - 0E52 50555348 dasm_DD_E5: db "PUSH IX",0x00
|
||
20495800
|
||
286: - 0E5A 50555348 dasm_FD_E5: db "PUSH IY",0x00
|
||
20495900
|
||
287: - 0E62 50555348 dasm_E1: db "PUSH ",0x00
|
||
2000
|
||
288: - 0E68 50555348 dasm_DD_E1: db "PUSH IX",0x00
|
||
20495800
|
||
289: - 0E70 50555348 dasm_FD_E1: db "PUSH IY",0x00
|
||
20495900
|
||
290:
|
||
291: ;Misc
|
||
292: - 0E78 2E3F2E00 dasm_UU: db ".?.",0x00
|
||
293: - 0E7C 20202020 dasm_UW: db " ",0x00
|
||
00
|
||
294:
|
||
295: - 0E81 dasm_printFlags_table:
|
||
296: - 0E81 4E5A db "NZ"
|
||
297: - 0E83 5A00 db "Z",0
|
||
298: - 0E85 4E43 db "NC"
|
||
299: - 0E87 4300 db "C",0
|
||
300: - 0E89 504F db "PO"
|
||
301: - 0E8B 5045 db "PE"
|
||
302: - 0E8D 5000 db "P",0
|
||
303: - 0E8F 4D00 db "M",0
|
||
304:
|
||
305: - 0E91 dasm_printRegister8_table:
|
||
306: - 0E91 42 db "B"
|
||
307: - 0E92 43 db "C"
|
||
308: - 0E93 44 db "D"
|
||
309: - 0E94 45 db "E"
|
||
310: - 0E95 48 db "H"
|
||
311: - 0E96 4C db "L"
|
||
312: - 0E97 53 db "S" ;only 18 bit (SP)
|
||
313: - 0E98 50 db "P" ;only 18 bit (SP)
|
||
314:
|
||
315: - 0E99 dasm_printRegisterIX_table:
|
||
316: - 0E99 4243 db "BC"
|
||
317: - 0E9B 4445 db "DE"
|
||
318: - 0E9D 4958 db "IX"
|
||
319: - 0E9F 5350 db "SP"
|
||
320: - 0EA1 dasm_printRegisterIY_table:
|
||
321: - 0EA1 4243 db "BC"
|
||
322: - 0EA3 4445 db "DE"
|
||
323: - 0EA5 4959 db "IY"
|
||
324: - 0EA7 5350 db "SP"
|
||
325:
|
||
326: - 0EA9 dasm_printRegisterSP_table:
|
||
327: - 0EA9 4243 db "BC"
|
||
328: - 0EAB 4445 db "DE"
|
||
329: - 0EAD 484C db "HL"
|
||
330: - 0EAF 4146 db "AF"
|
||
331:
|
||
332: - 0EB1 dasm_printRegister8_table_HL:
|
||
**** main.asm ****
|
||
479: - 0EB1 28484C29 db "(HL)", 0
|
||
00
|
||
480: .include "rst.s"
|
||
**** include/rst.s ****
|
||
1: - 0EB6 EXEC_RST_08:
|
||
2: 7856+17 0EB6 CDA902 call print_char
|
||
3: 7873+10 0EB9 C9 ret
|
||
4:
|
||
5:
|
||
6: - 0EBA EXEC_RST_10:
|
||
7: 7883+11 0EBA C5 push bc
|
||
8: 7894+11 0EBB D5 push de
|
||
9: 7905+11 0EBC E5 push hl
|
||
10: ;call vdp_cursor_on
|
||
11: 7916+17 0EBD CDEA02 call read_char
|
||
12: 7933+11 0EC0 F5 push af
|
||
13: ;call vdp_cursor_off
|
||
14: 7944+10 0EC1 F1 pop af
|
||
15: 7954+10 0EC2 E1 pop hl
|
||
16: 7964+10 0EC3 D1 pop de
|
||
17: 7974+10 0EC4 C1 pop bc
|
||
18: 7984+10 0EC5 C9 ret
|
||
19:
|
||
20: - 0EC6 EXEC_RST_18:
|
||
21: 7994+7 0EC6 3E00 ld a,0
|
||
22: 8001+10 0EC8 C9 ret
|
||
**** main.asm ****
|
||
481: ; Strings
|
||
482: - 0EC9 STR_Banner_Start:
|
||
483: - 0EC9 5A384320 db "Z8C Monitor V2 by Dennis Gunia (2022)",0
|
||
4D6F6E69
|
||
746F7220
|
||
56322062
|
||
79204465
|
||
6E6E6973
|
||
2047756E
|
||
69612028
|
||
32303232
|
||
2900
|
||
484: - 0EEF STR_SyntaxError:
|
||
485: - 0EEF 73796E3F db "syn?",0
|
||
00
|
||
486: - 0EF4 STR_Unknown:
|
||
487: - 0EF4 636D643F db "cmd?",0
|
||
00
|
||
488: - 0EF9 STR_HEXDUMP_HEADER:
|
||
489: - 0EF9 42415345 db 'BASE 0 1 2 3 4 5 6 7',0
|
||
20302020
|
||
31202032
|
||
20203320
|
||
20342020
|
||
35202036
|
||
20203700
|
||
490:
|
||
491: .include "xmodem.s"
|
||
**** include/xmodem.s ****
|
||
1: ;-------------------------------------------------------------------------
|
||
2: ; Z80 XMODEM implementation by Dennis Gunia
|
||
3: ; 2022 - www,dennisgunia.de
|
||
4: ;
|
||
5: ; important doc: https://web.mit.edu/6.115/www/amulet/xmodem.htm
|
||
6: ; http://www.blunk-electronic.de/train-z/pdf/xymodem.pdf
|
||
7: ;-------------------------------------------------------------------------
|
||
8:
|
||
9: ;Symbols
|
||
10: - 0001 SYM_SOH equ 0x01
|
||
11: - 0004 SYM_EOT equ 0x04
|
||
12: - 0006 SYM_ACK equ 0x06
|
||
13: - 0015 SYM_NAK equ 0x15
|
||
14: - 0017 SYM_ETB equ 0x17
|
||
15: - 0018 SYM_CAN equ 0x18
|
||
16: - 0043 SYM_C equ 0x43
|
||
17:
|
||
18: ;Memory locations
|
||
19: - 40FB MEM_VAR_BLOCK equ 0x40FB ;last block
|
||
20: - 40FC MEM_VAR_TIMEA equ 0x40FC ;timer var (mills)
|
||
21: - 40FE MEM_VAR_TIMER equ 0x40FE ;timer var (seconds)
|
||
22: - 40FE MEM_INT_VEC_T equ 0x40FE ;interrupt vector table
|
||
23:
|
||
24: - 4400 MEM_LOC_LOAD equ 0x4400 ;load location for program
|
||
25:
|
||
26: ;XMODEM routine
|
||
27: - 0F15 xmodem_init:
|
||
28: 8011+17 0F15 CD0403 call A_RTS_OFF
|
||
29:
|
||
30: 8028+7 0F18 3EA7 LD A,10100111b ; Init CTC Channel 3
|
||
31: 8035+11 0F1A D306 OUT (CS_CTC_2),A
|
||
32: 8046+7 0F1C 3E0E LD A,14 ; 1028.57Hz ISR
|
||
33: 8053+11 0F1E D306 OUT (CS_CTC_2),A
|
||
34: 8064+7 0F20 3E00 LD A,00h ; Set CTC Ch3 Interrupt Vector
|
||
35: 8071+11 0F22 D304 OUT (CS_CTC_0),A
|
||
36: ;load int vector to ram
|
||
37: 8082+10 0F24 21F50F ld hl,xmodem_int ;CTC Ch3 INT routine
|
||
38: 8092+16 0F27 220442 ld (0x4200 + 0x04),hl
|
||
39: ;reset timer vars
|
||
40: 8108+10 0F2A 210000 ld hl,0x0000
|
||
41: 8118+16 0F2D 22FC40 ld (MEM_VAR_TIMEA),hl
|
||
42: 8134+16 0F30 22FE40 ld (MEM_VAR_TIMER),hl
|
||
43:
|
||
44: 8150+7 0F33 3E42 ld a,0x42 ; Set interrupt vector register
|
||
45: 8157+9 0F35 ED47 ld i,a
|
||
46: 8166+8 0F37 ED5E im 2 ; Z80 Interrupt mode
|
||
47:
|
||
48: 8174+10 0F39 217010 ld hl,MSG_START ; Print start banner
|
||
49: 8184+17 0F3C CDB102 call print_str
|
||
50: 8201+4 0F3F FB ei ; Enable interrupts
|
||
51: ; init done. Continue with xmodem_await_conn
|
||
52: 8205+17 0F40 CDA610 call xmodem_wait
|
||
53:
|
||
54: - 0F43 xmodem_await_conn: ;Wait for initial connection
|
||
55: 8222+7 0F43 3E43 ld a, SYM_C ;Send C to notify sender, that we want CRC
|
||
56: 8229+17 0F45 CD4610 call xmodem_out
|
||
57: 8246+17 0F48 CD1910 call xmodem_read_wait ;Read with timeout
|
||
58: 8263+10 0F4B DA430F jp c, xmodem_await_conn ;Carry flag set = timeout -> repeat
|
||
59: ;else continue
|
||
60:
|
||
61: - 0F4E xmodem_packet: ;XmodemCRC packet start
|
||
62: ;use 1st byte to decide further processing
|
||
63: 8273+7 0F4E FE04 cp SYM_EOT ;End of Transmission
|
||
64: 8280+10 0F50 CAAC0F jp z, xmodem_packet_EOT
|
||
65: 8290+7 0F53 FE18 cp SYM_CAN ;Cancel (Force receiver to start sending C's)
|
||
66: 8297+10 0F55 CA430F jp z, xmodem_await_conn
|
||
67: 8307+7 0F58 FE01 cp SYM_SOH ;Start of
|
||
68: 8314+10 0F5A CA600F jp z, xmodem_packet_get
|
||
69:
|
||
70: 8324+10 0F5D C3B40F jp xmodem_err ;anything else is an error -> abort transmission
|
||
71:
|
||
72: - 0F60 xmodem_packet_get: ;if first byte == SYM_SOH -> receive block
|
||
73: 8334+17 0F60 CD1910 call xmodem_read_wait ;get byte 2 => block ID
|
||
74: 8351+10 0F63 DA9810 jp c, xmodem_nak
|
||
75: 8361+4 0F66 47 ld b,a
|
||
76: 8365+13 0F67 32FB40 ld (MEM_VAR_BLOCK), a ;store block id to memory
|
||
77: 8378+17 0F6A CD1910 call xmodem_read_wait ;get byte 3 => block ID complement
|
||
78: 8395+10 0F6D DA9810 jp c, xmodem_nak
|
||
79: 8405+4 0F70 80 add b
|
||
80: 8409+7 0F71 FEFF cp 255 ;both size infos should always sum to 255
|
||
81: 8416+10 0F73 C2B40F jp nz,xmodem_err ;if not 255 then its an error
|
||
82:
|
||
83: ;calculate block start address in RAM
|
||
84: ;multiply by 128
|
||
85: ;use more efficient bit-wise operations
|
||
86: 8426+4 0F76 3D dec a ;a-1 to remove 1 sector offset
|
||
87: 8430+4 0F77 78 ld a,b
|
||
88: 8434+4 0F78 1F rra ;shift 1 bit to the right
|
||
89: 8438+7 0F79 E67F and 0x7F
|
||
90: 8445+4 0F7B 67 ld h,a
|
||
91: 8449+4 0F7C 78 ld a,b
|
||
92: 8453+4 0F7D 3D dec a ;a-1 to remove 1 sector offset
|
||
93: 8457+4 0F7E 0F rrca ;shift bit0 to bit 7
|
||
94: 8461+7 0F7F E680 and 0x80 ;mask out all other bits
|
||
95: 8468+4 0F81 6F ld l,a
|
||
96: ;result:
|
||
97: ;hl = 0aaaaaaa a000000
|
||
98:
|
||
99: 8472+10 0F82 110044 ld de,MEM_LOC_LOAD
|
||
100: 8482+11 0F85 19 add hl,de ;add calculated offset to base address
|
||
101: ;hl now contains the true start address of this sector
|
||
102:
|
||
103: 8493+7 0F86 0680 ld b,128 ;preload counter for data baytes
|
||
104: 8500+7 0F88 0E00 ld c,0 ;packet length counter ( used for overflow error )
|
||
105:
|
||
106: - 0F8A xmodem_packet_get_data: ;get 128 data bytes (loop)
|
||
107: 8507+11 0F8A E5 push hl ;push hl onto stack because xmodem_read_wait destroys hl
|
||
108: 8518+17 0F8B CD1910 call xmodem_read_wait ;read byte or timeout
|
||
109: 8535+10 0F8E DA9810 jp c, xmodem_nak ;if timeout -> nak and retry
|
||
110: 8545+10 0F91 E1 pop hl ;restore hl
|
||
111: 8555+7 0F92 77 ld (hl), a ;store received byte in memory
|
||
112: 8562+6 0F93 23 inc hl ;increment pointer
|
||
113: 8568+4 0F94 0C inc c ;increment packet length counter
|
||
114: 8572+4 0F95 05 dec b ;decerment data bytes remmaining
|
||
115: 8576+10 0F96 C28A0F jp nz, xmodem_packet_get_data ;if bytes remaining, loop
|
||
116: ;else continue with crc bytes
|
||
117:
|
||
118: - 0F99 xmodem_packet_get_crc: ;get 16-Bit CRC
|
||
119: 8586+17 0F99 CD1910 call xmodem_read_wait
|
||
120: 8603+10 0F9C DA9810 jp c, xmodem_nak
|
||
121: 8613+4 0F9F 57 ld d,a
|
||
122: 8617+4 0FA0 0C inc c
|
||
123: 8621+17 0FA1 CD1910 call xmodem_read_wait
|
||
124: 8638+10 0FA4 DA9810 jp c, xmodem_nak
|
||
125: 8648+4 0FA7 5F ld e,a
|
||
126: 8652+4 0FA8 0C inc c
|
||
127: ;de now contains CRC value
|
||
128: ;check if c is not bigger than 130 byte (128 data + 2crc)
|
||
129: ;TODO if so NACK
|
||
130:
|
||
131: ;de contains 16-bit CRC
|
||
132: ;TODO if crc error NACK
|
||
133: 8656+10 0FA9 C38A10 jp xmodem_ack ;ack block -> then jump to start again
|
||
134:
|
||
135: - 0FAC xmodem_packet_EOT: ;End of transmission SUB.
|
||
136: 8666+7 0FAC 3E06 ld a, SYM_ACK ;Acknowledge EOT
|
||
137: 8673+17 0FAE CD4610 call xmodem_out
|
||
138: 8690+10 0FB1 C3EE0F jp xmodem_end ;and end xmodem
|
||
139:
|
||
140:
|
||
141:
|
||
142: - 0FB4 xmodem_err: ;non recoverable error -> abort
|
||
143: 8700+7 0FB4 3E18 ld a, SYM_CAN
|
||
144: 8707+17 0FB6 CD4610 call xmodem_out
|
||
145: 8724+7 0FB9 3E18 ld a, SYM_CAN
|
||
146: 8731+17 0FBB CD4610 call xmodem_out
|
||
147: 8748+7 0FBE 3E18 ld a, SYM_CAN
|
||
148: 8755+17 0FC0 CD4610 call xmodem_out
|
||
149: 8772+7 0FC3 3E18 ld a, SYM_CAN
|
||
150: 8779+17 0FC5 CD4610 call xmodem_out
|
||
151: 8796+7 0FC8 3E18 ld a, SYM_CAN
|
||
152: 8803+17 0FCA CD4610 call xmodem_out
|
||
153: 8820+7 0FCD 3E18 ld a, SYM_CAN
|
||
154: 8827+17 0FCF CD4610 call xmodem_out
|
||
155: 8844+7 0FD2 3E18 ld a, SYM_CAN
|
||
156: 8851+17 0FD4 CD4610 call xmodem_out
|
||
157: 8868+7 0FD7 3E18 ld a, SYM_CAN
|
||
158: 8875+17 0FD9 CD4610 call xmodem_out
|
||
159: 8892+7 0FDC 3E18 ld a, SYM_CAN
|
||
160: 8899+17 0FDE CD4610 call xmodem_out
|
||
161: 8916+7 0FE1 3E18 ld a, SYM_CAN
|
||
162: 8923+17 0FE3 CD4610 call xmodem_out
|
||
163: 8940+7 0FE6 3E18 ld a, SYM_CAN
|
||
164:
|
||
165: 8947+10 0FE8 215710 ld hl, MSG_ERROR
|
||
166: 8957+17 0FEB CDB102 call print_str
|
||
167:
|
||
168: ;overflow to end
|
||
169: - 0FEE xmodem_end:
|
||
170: 8974+4 0FEE F3 di ;disable interrupts
|
||
171: 8978+17 0FEF CDC302 call print_newLine ;print new line
|
||
172: 8995+10 0FF2 C38B00 jp PROMPT_BEGIN ;return ti prompt
|
||
173:
|
||
174: ;isr is used as counter for timeouts
|
||
175: - 0FF5 xmodem_int:
|
||
176: 9005+4 0FF5 F3 di ;setup ISR (disable further interrupts, exchange registers)
|
||
177: 9009+4 0FF6 08 ex AF,AF'
|
||
178: 9013+4 0FF7 D9 exx
|
||
179:
|
||
180: 9017+16 0FF8 2AFC40 ld hl,(MEM_VAR_TIMEA) ;millis counter
|
||
181: 9033+6 0FFB 23 inc hl
|
||
182: 9039+16 0FFC 22FC40 ld (MEM_VAR_TIMEA),hl
|
||
183:
|
||
184: 9055+10 0FFF 110404 ld de,1028 ;every 1028 millis counter
|
||
185: 9065+15 1002 ED52 sbc hl,de
|
||
186: 9080+10 1004 C21410 jp nz, xmodem_int_cont ;if less than 1028 millis, loop
|
||
187:
|
||
188: 9090+10 1007 210000 ld hl,0 ;reset millis
|
||
189: 9100+16 100A 22FC40 ld (MEM_VAR_TIMEA),hl
|
||
190: 9116+16 100D 2AFE40 ld hl,(MEM_VAR_TIMER) ;incement seconds
|
||
191: 9132+6 1010 23 inc hl
|
||
192: 9138+16 1011 22FE40 ld (MEM_VAR_TIMER),hl
|
||
193: - 1014 xmodem_int_cont: ;end isr
|
||
194: 9154+4 1014 08 ex AF,AF' ;restore registers
|
||
195: 9158+4 1015 D9 exx
|
||
196: 9162+4 1016 FB EI ;enable interrupts
|
||
197: 9166+14 1017 ED4D reti ;exit ISR
|
||
198:
|
||
199:
|
||
200:
|
||
201:
|
||
202:
|
||
203: ; A returns char
|
||
204: ; Carry is set if timeout
|
||
205: - 0003 xmodem_read_timeount equ 3 ;3 seconds timeout
|
||
206: - 1019 xmodem_read_wait:
|
||
207: 9180+4 1019 F3 di
|
||
208: 9184+10 101A 210000 ld hl,0
|
||
209: 9194+16 101D 22FC40 ld (MEM_VAR_TIMEA),hl
|
||
210: 9210+16 1020 22FE40 ld (MEM_VAR_TIMER),hl
|
||
211: 9226+4 1023 FB ei
|
||
212: 9230+17 1024 CD0D03 call A_RTS_ON
|
||
213: - 1027 xmodem_read_wait_loop:
|
||
214: ;check timeout
|
||
215: 9247+16 1027 2AFE40 ld hl,(MEM_VAR_TIMER)
|
||
216: 9263+4 102A 7D ld a, l
|
||
217: 9267+7 102B FE03 cp xmodem_read_timeount
|
||
218: 9274+10 102D CA4410 jp z, xmodem_read_wait_timeout ;if timeout retry
|
||
219:
|
||
220: ; if no timeout
|
||
221: 9284+4 1030 AF xor a ; a = 0
|
||
222: 9288+11 1031 D309 out (CS_SIO_A_C), a ; select reg 0
|
||
223: 9299+11 1033 DB09 in a, (CS_SIO_A_C) ; read reg 0
|
||
224: 9310+7 1035 E601 and 1 ; mask D0 (recieve char available)
|
||
225: 9317+10 1037 CA2710 jp Z,xmodem_read_wait_loop ; wait if no char
|
||
226:
|
||
227: ; if char avail
|
||
228: 9327+11 103A DB08 in a, (CS_SIO_A_D) ; read char
|
||
229: ;call debug_a_hex
|
||
230: 9338+11 103C F5 push af
|
||
231: 9349+17 103D CD0403 call A_RTS_OFF
|
||
232: 9366+10 1040 F1 pop af
|
||
233: 9376+4 1041 37 scf
|
||
234: 9380+4 1042 3F ccf
|
||
235: 9384+10 1043 C9 ret ; return
|
||
236: - 1044 xmodem_read_wait_timeout:
|
||
237: 9394+4 1044 37 scf
|
||
238: 9398+10 1045 C9 ret
|
||
239:
|
||
240:
|
||
241: - 1046 xmodem_out:
|
||
242: 9408+11 1046 D308 out (CS_SIO_A_D), a
|
||
243: 9419+17 1048 CD4C10 call xmodem_wait_out
|
||
244: 9436+10 104B C9 ret
|
||
245:
|
||
246: - 104C xmodem_wait_out:
|
||
247: 9446+4 104C 97 sub a ;clear a, write into WR0: select RR0
|
||
248: 9450+4 104D 3C inc a ;select RR1
|
||
249: 9454+11 104E D309 out (CS_SIO_A_C),A
|
||
250: 9465+11 1050 DB09 in A,(CS_SIO_A_C) ;read RRx
|
||
251: 9476+8 1052 CB47 bit 0,A
|
||
252: 9484+7+5 1054 28F6 jr z,xmodem_wait_out
|
||
253: 9491+10 1056 C9 ret
|
||
254:
|
||
255: - 1057 MSG_ERROR:
|
||
256: - 1057 4572726F db "Error: unexpected byte",13,10,0
|
||
723A2075
|
||
6E657870
|
||
65637465
|
||
64206279
|
||
74650D0A
|
||
00
|
||
257:
|
||
258: - 1070 MSG_START:
|
||
259: - 1070 41776169 db "Await xmodem connection",13,10,0
|
||
7420786D
|
||
6F64656D
|
||
20636F6E
|
||
6E656374
|
||
696F6E0D
|
||
0A00
|
||
260:
|
||
261:
|
||
262: - 108A xmodem_ack: ;ack routine. Only use when expecting transmission afterwards.
|
||
263: 9501+7 108A 3E06 ld a, SYM_ACK ;send ACK
|
||
264: 9508+17 108C CD4610 call xmodem_out
|
||
265: 9525+17 108F CD1910 call xmodem_read_wait ;wait for response
|
||
266: 9542+10 1092 DA8A10 jp c, xmodem_ack ;if timeout repeat
|
||
267: 9552+10 1095 C34E0F jp xmodem_packet ;if received, continue with new packet
|
||
268:
|
||
269: - 1098 xmodem_nak: ;nak routine. Only use when expecting transmission afterwards.
|
||
270: 9562+7 1098 3E15 ld a, SYM_NAK ;send NAK
|
||
271: 9569+17 109A CD4610 call xmodem_out
|
||
272: 9586+17 109D CD1910 call xmodem_read_wait ;wait for response
|
||
273: 9603+10 10A0 DA9810 jp c, xmodem_nak ;if timeout repeat
|
||
274: 9613+10 10A3 C34E0F jp xmodem_packet ;if received, continue with new packet
|
||
275:
|
||
276: - 10A6 xmodem_wait:
|
||
277: 9623+10 10A6 21FF00 ld hl, 0xFF
|
||
278: 9633+10 10A9 010100 ld bc, 0x01
|
||
279: - 10AC xmodem_wait_1:
|
||
280: 9643+4 10AC 00 nop
|
||
281: 9647+4 10AD 00 nop
|
||
282: 9651+4 10AE 00 nop
|
||
283: 9655+4 10AF 00 nop
|
||
284: 9659+15 10B0 ED42 sbc hl,bc
|
||
285: 9674+5+6 10B2 C8 ret Z
|
||
**** main.asm ****
|
||
492: 9679+12 10B3 18F7 jr xmodem_wait_1
|
||
**** main.asm ****
|
||
493: ;.include "debug.s"
|
||
|
||
|
||
|
||
Statistics:
|
||
|
||
4 passes
|
||
0 jr promotions
|
||
332 symbols
|
||
4251 bytes
|
||
|
||
|
||
|
||
Symbol Table:
|
||
|
||
AY0_WRITE_REG 83 131
|
||
A_RTS_OFF 304 772
|
||
A_RTS_ON 30D 781
|
||
CMD_DASM 22B 555
|
||
CMD_EXEC 121 289
|
||
CMD_IO_READ 20F 527
|
||
CMD_IO_WRITE 1E6 486
|
||
CMD_SET 1AA 426
|
||
CMD_SET_END 1E0 480
|
||
CMD_SET_LOOP 1C5 453
|
||
CMD_SYNTAX_ERROR 264 612
|
||
CMD_VIEW 140 320
|
||
CMD_VIEW_END 1A4 420
|
||
CMD_VIEW_ROW 179 377
|
||
CMD_VIEW_ROW_LOOP 18B 395
|
||
CONSOLE_INIT 270 624
|
||
CONSOLE_INIT_CTC 270 624
|
||
CONSOLE_INIT_SIO 278 632
|
||
CS_BANK =00 0
|
||
CS_CTC_0 =04 4
|
||
CS_CTC_1 =05 5
|
||
CS_CTC_2 =06 6
|
||
CS_CTC_3 =07 7
|
||
CS_DIP =01 1
|
||
CS_SIO_A_C =09 9
|
||
CS_SIO_A_D =08 8
|
||
CS_SIO_B_C =0B 11
|
||
CS_SIO_B_D =0A 10
|
||
DHEX_TO_BYTE 316 790
|
||
DHEX_TO_BYTE_FAILED 332 818
|
||
EXEC_RST_08 EB6 3766
|
||
EXEC_RST_10 EBA 3770
|
||
EXEC_RST_18 EC6 3782
|
||
HEX_TO_BIN 336 822
|
||
HEX_TO_BIN_2 344 836
|
||
HEX_TO_INVALID_2 34B 843
|
||
INT_VEC 1B 27
|
||
IO_AY0_ADDR =40 64
|
||
IO_AY0_DATA =41 65
|
||
IO_AY1_ADDR =42 66
|
||
IO_AY1_DATA =43 67
|
||
IO_PIO_0_A_C =61 97
|
||
IO_PIO_0_A_D =60 96
|
||
IO_PIO_0_B_C =63 99
|
||
IO_PIO_0_B_D =62 98
|
||
IO_PIO_1_A_C =65 101
|
||
IO_PIO_1_A_D =64 100
|
||
IO_PIO_1_B_C =67 103
|
||
IO_PIO_1_B_D =66 102
|
||
IO_REG0 =20 32
|
||
IO_RTC_AMPM =25 37
|
||
IO_RTC_CTR_D =2D 45
|
||
IO_RTC_CTR_E =2E 46
|
||
IO_RTC_CTR_F =2F 47
|
||
IO_RTC_DAY0 =26 38
|
||
IO_RTC_DAY1 =27 39
|
||
IO_RTC_HOUR =24 36
|
||
IO_RTC_MIN0 =22 34
|
||
IO_RTC_MIN1 =23 35
|
||
IO_RTC_MON0 =28 40
|
||
IO_RTC_MON1 =29 41
|
||
IO_RTC_SEC0 =20 32
|
||
IO_RTC_SEC1 =21 33
|
||
IO_RTC_WEEK =2C 44
|
||
IO_RTC_YEAR1 =2B 43
|
||
IO_RTC_YERR0 =2A 42
|
||
Includes 270 624
|
||
MEM_INT_VEC_T =40FE 16638
|
||
MEM_LOC_LOAD =4400 17408
|
||
MEM_VAR_BLOCK =40FB 16635
|
||
MEM_VAR_TIMEA =40FC 16636
|
||
MEM_VAR_TIMER =40FE 16638
|
||
MSG_CLEAR 2FC 764
|
||
MSG_ERROR 1057 4183
|
||
MSG_START 1070 4208
|
||
PRG_RAM_START =4110 16656
|
||
PRG_RAM_TOP =FF00 65280
|
||
PROG_MEM_START =4000 16384
|
||
PROG_ROM_START = 100 256
|
||
PROMPT_BEGIN 8B 139
|
||
PROMPT_BEGIN_READ_BACKSPACE C8 200
|
||
PROMPT_BEGIN_READ_LOOP 97 151
|
||
PROMPT_BEGIN_READ_PROCESS EE 238
|
||
RST_00 00 0
|
||
RST_08 08 8
|
||
RST_10 10 16
|
||
RST_18 18 24
|
||
STACK_RAM_TOP =FFFF 65535
|
||
START_ROM =00 0
|
||
STRCONV_BYTES_TO_HEX 34D 845
|
||
STRCONV_BYTES_TO_HEX_1 35C 860
|
||
STRCONV_BYTES_TO_HEX_2 366 870
|
||
STR_Banner_Start EC9 3785
|
||
STR_HEXDUMP_HEADER EF9 3833
|
||
STR_SyntaxError EEF 3823
|
||
STR_Unknown EF4 3828
|
||
SYM_ACK =06 6
|
||
SYM_C =43 67
|
||
SYM_CAN =18 24
|
||
SYM_EOT =04 4
|
||
SYM_ETB =17 23
|
||
SYM_NAK =15 21
|
||
SYM_SOH =01 1
|
||
SYS_BUF_START =4010 16400
|
||
SYS_RAM_START =4000 16384
|
||
VAR_CONSOLE_BAUD=18 24
|
||
VAR_CONSOLE_CONF=0F 15
|
||
VDP_MEM =80 128
|
||
VDP_REG =81 129
|
||
dasm_00 ACE 2766
|
||
dasm_01 DBA 3514
|
||
dasm_02 B54 2900
|
||
dasm_03 D8C 3468
|
||
dasm_08 BD1 3025
|
||
dasm_09 D5F 3423
|
||
dasm_0A B36 2870
|
||
dasm_0B DA3 3491
|
||
dasm_10 B16 2838
|
||
dasm_12 B5F 2911
|
||
dasm_18 AD9 2777
|
||
dasm_1A B40 2880
|
||
dasm_20 AF3 2803
|
||
dasm_22 E00 3584
|
||
dasm_27 B99 2969
|
||
dasm_28 AEC 2796
|
||
dasm_2A DD1 3537
|
||
dasm_2F B9D 2973
|
||
dasm_30 AE4 2788
|
||
dasm_32 B6A 2922
|
||
dasm_37 BA9 2985
|
||
dasm_38 ADD 2781
|
||
dasm_3A B4A 2890
|
||
dasm_3F BA5 2981
|
||
dasm_76 BAD 2989
|
||
dasm_80C6 C2A 3114
|
||
dasm_BE BC7 3015
|
||
dasm_C3 AD2 2770
|
||
dasm_C88E C50 3152
|
||
dasm_C9 B22 2850
|
||
dasm_CD B1C 2844
|
||
dasm_D9 BDE 3038
|
||
dasm_DD B04 2820
|
||
dasm_DD_01 DC1 3521
|
||
dasm_DD_09 D7A 3450
|
||
dasm_DD_22 E16 3606
|
||
dasm_DD_23 D91 3473
|
||
dasm_DD_2A DE8 3560
|
||
dasm_DD_2B DA8 3496
|
||
dasm_DD_34 D2A 3370
|
||
dasm_DD_35 D47 3399
|
||
dasm_DD_86 C32 3122
|
||
dasm_DD_8E C58 3160
|
||
dasm_DD_96 C7B 3195
|
||
dasm_DD_9E C9B 3227
|
||
dasm_DD_A6 CBC 3260
|
||
dasm_DD_AE CF3 3315
|
||
dasm_DD_B6 CD8 3288
|
||
dasm_DD_BE D0F 3343
|
||
dasm_DD_E1 E68 3688
|
||
dasm_DD_E3 BEE 3054
|
||
dasm_DD_E5 E52 3666
|
||
dasm_DD_F9 E38 3640
|
||
dasm_E1 E62 3682
|
||
dasm_E3 BE2 3042
|
||
dasm_E5 E4C 3660
|
||
dasm_E9 AFB 2811
|
||
dasm_ED_42 D71 3441
|
||
dasm_ED_43 E0C 3596
|
||
dasm_ED_44 BA1 2977
|
||
dasm_ED_45 B2C 2860
|
||
dasm_ED_46 BB8 3000
|
||
dasm_ED_4A D68 3432
|
||
dasm_ED_4B DDD 3549
|
||
dasm_ED_4D B27 2855
|
||
dasm_ED_56 BBD 3005
|
||
dasm_ED_5E BC2 3010
|
||
dasm_ED_A0 C06 3078
|
||
dasm_ED_A1 C18 3096
|
||
dasm_ED_A8 C0F 3087
|
||
dasm_ED_A9 C21 3105
|
||
dasm_ED_B0 C0A 3082
|
||
dasm_ED_B1 C1C 3100
|
||
dasm_ED_B8 C13 3091
|
||
dasm_ED_B9 C25 3109
|
||
dasm_F3 BB2 2994
|
||
dasm_F9 E2E 3630
|
||
dasm_FB BB5 2997
|
||
dasm_FD B0D 2829
|
||
dasm_FD_01 DC9 3529
|
||
dasm_FD_09 D83 3459
|
||
dasm_FD_22 E22 3618
|
||
dasm_FD_23 D9A 3482
|
||
dasm_FD_2A DF4 3572
|
||
dasm_FD_2B DB1 3505
|
||
dasm_FD_34 D36 3382
|
||
dasm_FD_35 D53 3411
|
||
dasm_FD_86 C41 3137
|
||
dasm_FD_8E C67 3175
|
||
dasm_FD_96 C87 3207
|
||
dasm_FD_9E CA9 3241
|
||
dasm_FD_A6 CC8 3272
|
||
dasm_FD_AE CFF 3327
|
||
dasm_FD_B6 CE3 3299
|
||
dasm_FD_BE D1A 3354
|
||
dasm_FD_E1 E70 3696
|
||
dasm_FD_E3 BFA 3066
|
||
dasm_FD_E5 E5A 3674
|
||
dasm_FD_F9 E42 3650
|
||
dasm_FF B31 2865
|
||
dasm_UU E78 3704
|
||
dasm_UW E7C 3708
|
||
dasm__AND CB7 3255
|
||
dasm__CP D0B 3339
|
||
dasm__DEC D42 3394
|
||
dasm__ED_47 B89 2953
|
||
dasm__ED_4F B91 2961
|
||
dasm__ED_57 B79 2937
|
||
dasm__ED_5F B81 2945
|
||
dasm__INC D25 3365
|
||
dasm__LD B75 2933
|
||
dasm__OR CD4 3284
|
||
dasm__SBC C93 3219
|
||
dasm__SUB C76 3190
|
||
dasm__XOR CEE 3310
|
||
dasm_opcode_table 676 1654
|
||
dasm_print16hex_addr 4A3 1187
|
||
dasm_print8hex 4BB 1211
|
||
dasm_printFlags_table E81 3713
|
||
dasm_printRegister8_table E91 3729
|
||
dasm_printRegister8_table_HL EB1 3761
|
||
dasm_printRegisterIX_table E99 3737
|
||
dasm_printRegisterIY_table EA1 3745
|
||
dasm_printRegisterSP_table EA9 3753
|
||
disassemble 367 871
|
||
disassemble_continue 44D 1101
|
||
disassemble_err 43D 1085
|
||
disassemble_next 36B 875
|
||
disassemble_print_opcode_params_end 43A 1082
|
||
disassemble_print_opcode_params_loop 3E6 998
|
||
disassemble_print_opcode_raw 3A8 936
|
||
disassemble_print_opcode_raw_fill 3BC 956
|
||
disassemble_table_first_match 47F 1151
|
||
disassemble_table_found 499 1177
|
||
disassemble_table_notfound 49D 1181
|
||
disassemble_table_seek 45B 1115
|
||
disassemble_table_seek_loop 45F 1119
|
||
mon_start_complete 76 118
|
||
mon_start_init_ctc 50 80
|
||
mon_start_init_serial 5F 95
|
||
mon_start_init_sound 50 80
|
||
mon_start_ram 62 98
|
||
mon_start_ram_loop 6B 107
|
||
mon_var_template 44 68
|
||
mon_var_template_end 402A 16426
|
||
param_01 4C9 1225
|
||
param_02 4F0 1264
|
||
param_03 50D 1293
|
||
param_03_done 545 1349
|
||
param_03_neg 52E 1326
|
||
param_04 549 1353
|
||
param_04_i 559 1369
|
||
param_05 55F 1375
|
||
param_06 56C 1388
|
||
param_07 586 1414
|
||
param_08 593 1427
|
||
param_09 5A8 1448
|
||
param_09_0A 5AE 1454
|
||
param_0A 59F 1439
|
||
param_10 5BD 1469
|
||
param_11 5CD 1485
|
||
param_11_12 5DC 1500
|
||
param_11_12_all 5FC 1532
|
||
param_11_12_def 5EF 1519
|
||
param_11_12_ix 5F4 1524
|
||
param_11_12_iy 5F9 1529
|
||
param_12 5D5 1493
|
||
param_13 60D 1549
|
||
param_80 62C 1580
|
||
param_80_seek 633 1587
|
||
param_81 623 1571
|
||
param_comma 667 1639
|
||
param_printRegister 642 1602
|
||
param_printRegisterA 660 1632
|
||
param_printRegisterHL 658 1624
|
||
print_a_hex 2D9 729
|
||
print_char 2A9 681
|
||
print_clear 2BC 700
|
||
print_newLine 2C3 707
|
||
print_str 2B1 689
|
||
print_str_end 2BB 699
|
||
print_wait_out 2CE 718
|
||
read_char 2EA 746
|
||
var_buffer 4029 16425
|
||
var_buffer_len 4000 16384
|
||
var_bytes_count=411A 16666
|
||
var_curserchar 4006 16390
|
||
var_curserlastaddr 4007 16391
|
||
var_curseron 4005 16389
|
||
var_curserstate 4004 16388
|
||
var_curserx 4002 16386
|
||
var_cursery 4003 16387
|
||
var_last_char 4001 16385
|
||
var_opcode =4114 16660
|
||
var_opcode_length=4116 16662
|
||
var_opcode_pcount=4119 16665
|
||
var_opcode_start=4110 16656
|
||
var_opcode_string=4117 16663
|
||
var_opcode_table=4112 16658
|
||
var_opcode_x =4115 16661
|
||
var_ps2mem 4019 16409
|
||
var_scratch 4009 16393
|
||
xmodem_ack 108A 4234
|
||
xmodem_await_conn F43 3907
|
||
xmodem_end FEE 4078
|
||
xmodem_err FB4 4020
|
||
xmodem_init F15 3861
|
||
xmodem_int FF5 4085
|
||
xmodem_int_cont 1014 4116
|
||
xmodem_nak 1098 4248
|
||
xmodem_out 1046 4166
|
||
xmodem_packet F4E 3918
|
||
xmodem_packet_EOT FAC 4012
|
||
xmodem_packet_get F60 3936
|
||
xmodem_packet_get_crc F99 3993
|
||
xmodem_packet_get_data F8A 3978
|
||
xmodem_read_timeount=03 3
|
||
xmodem_read_wait 1019 4121
|
||
xmodem_read_wait_loop 1027 4135
|
||
xmodem_read_wait_timeout 1044 4164
|
||
xmodem_wait 10A6 4262
|
||
xmodem_wait_1 10AC 4268
|
||
xmodem_wait_out 104C 4172
|