]>
Commit | Line | Data |
---|---|---|
0c4244e5 L |
1 | ; Disassembled ddtz.com, version "DDT/Z [8101]"\r |
2 | ;\r | |
3 | ; Assemble with M80 or a compatible assembler\r | |
4 | ; to (re)create the original .com file.\r | |
5 | \r | |
6 | ;-------------------------------------------------------------------------------\r | |
7 | ; Relocation loader\r | |
8 | ;\r | |
9 | ASEG\r | |
10 | ORG 00100H\r | |
11 | \r | |
12 | LD SP,ldr_end+stack\r | |
13 | LD C,BDOS_PSTR\r | |
14 | LD DE,ldr_end+expr_buf\r | |
15 | CALL BDOS\r | |
16 | LD HL,bitmap\r | |
17 | EXX\r | |
18 | LD HL,(BDOS+1)\r | |
19 | LD (ldr_end+1),HL\r | |
20 | LD BC,ddtz_size-1\r | |
21 | LD D,B\r | |
22 | LD E,0FFH\r | |
23 | INC DE\r | |
24 | INC BC\r | |
25 | PUSH BC\r | |
26 | OR A\r | |
27 | SBC HL,DE\r | |
28 | LD (BDOS+1),HL\r | |
29 | EX DE,HL\r | |
30 | LD HL,ldr_end-1\r | |
31 | A0128: INC HL\r | |
32 | LD A,L\r | |
33 | AND 007H\r | |
34 | JR NZ,A0133\r | |
35 | EXX\r | |
36 | LD A,(HL)\r | |
37 | INC HL\r | |
38 | EXX\r | |
39 | EX AF,AF'\r | |
40 | A0133: EX AF,AF'\r | |
41 | ADD A,A\r | |
42 | JR NC,A0141\r | |
43 | EX AF,AF'\r | |
44 | DEC HL\r | |
45 | LD A,(HL)\r | |
46 | ADD A,E\r | |
47 | LD (HL),A\r | |
48 | INC HL\r | |
49 | LD A,(HL)\r | |
50 | ADC A,D\r | |
51 | LD (HL),A\r | |
52 | EX AF,AF'\r | |
53 | A0141: EX AF,AF'\r | |
54 | DEC BC\r | |
55 | LD A,B\r | |
56 | OR C\r | |
57 | JR NZ,A0128\r | |
58 | POP BC\r | |
59 | EX DE,HL\r | |
60 | ADD HL,BC\r | |
61 | EX DE,HL\r | |
62 | DEC DE\r | |
63 | LDDR\r | |
64 | LD HL,conbuf+2\r | |
65 | ADD HL,DE\r | |
66 | JP (HL)\r | |
67 | \r | |
68 | rept (($+7) and 0FFF8H) - $\r | |
69 | DEFB 000H\r | |
70 | endm\r | |
71 | \r | |
72 | ldr_end:\r | |
73 | \r | |
74 | .phase 0\r | |
75 | ;-------------------------------------------------------------------------------\r | |
76 | ; DDT/Z core\r | |
77 | ;\r | |
78 | \r | |
79 | ; Some greneral definitions\r | |
80 | \r | |
81 | TAB equ 9\r | |
82 | LF equ 10\r | |
83 | CR equ 13\r | |
84 | \r | |
85 | ; CP/M memory layout\r | |
86 | \r | |
87 | BDOS equ 5\r | |
88 | FCB equ 05ch\r | |
89 | FCB2 equ 06ch\r | |
90 | DMA_BUF equ 080h\r | |
91 | TPA equ 0100h\r | |
92 | \r | |
93 | ; BDOS function calls\r | |
94 | \r | |
95 | BDOS_CIN equ 1 ;Console Input\r | |
96 | BDOS_COUT equ 2 ;Console Output\r | |
97 | BDOS_PSTR equ 9 ;Print String\r | |
98 | BDOS_CBUF equ 10 ;Read Console Buffer\r | |
99 | BDOS_CSTAT equ 11 ;Get Console Status\r | |
100 | BDOS_OPEN equ 15 ;Open File\r | |
101 | BDOS_CLOSE equ 16 ;Close File\r | |
102 | BDOS_DELETE equ 19 ;Delete File\r | |
103 | BDOS_READ equ 20 ;Read Sequential\r | |
104 | BDOS_WRITE equ 21 ;Write Sequential\r | |
105 | BDOS_CREATE equ 22 ;Make File\r | |
106 | BDOS_SETDMA equ 26 ;Set DMA Address\r | |
107 | \r | |
108 | ; ddtz specific definitions\r | |
109 | \r | |
110 | STACK_SIZE equ 64 ;ddtz internal stack\r | |
111 | CONBUF_SIZE equ 80 ;Size of console input buffer\r | |
112 | EXPR_BUF_SIZE equ 128 ;expressen buffer for conditional breakpoints\r | |
113 | BP_CNT equ 12 ;Number of breakpoints\r | |
114 | BP_SIZE equ 8 ;Size of a breakpoint record\r | |
115 | YREG_CNT equ 10 ;Number of Y registers (0..9)\r | |
116 | \r | |
117 | ;-------------------------------------------------------------------------------\r | |
118 | \r | |
119 | ddtz_base:\r | |
120 | jp 0 ;0000 c3 00 00 . . .\r | |
121 | l0003h:\r | |
122 | rst 30h ;0003 f7 .\r | |
123 | sub_0004h:\r | |
124 | nop ;0004 00 .\r | |
125 | ret ;0005 c9 .\r | |
126 | \r | |
127 | ds STACK_SIZE\r | |
128 | \r | |
129 | stack:\r | |
130 | reg.l2: db 000h ;0046 00 .\r | |
131 | reg.h2: db 000h ;0047 00 .\r | |
132 | reg.e2: db 000h ;0048 00 .\r | |
133 | reg.d2: db 000h ;0049 00 .\r | |
134 | reg.c2: db 000h ;004a 00 .\r | |
135 | reg.b2: db 000h ;004b 00 .\r | |
136 | reg.f2: db 000h ;004c 00 .\r | |
137 | reg.a2: db 000h ;004d 00 .\r | |
138 | l004eh: db 000h ;004e 00 .\r | |
139 | reg.i: db 000h ;004f 00 .\r | |
140 | reg.iy: dw 0000h ;0050 00 .\r | |
141 | reg.ix: dw 0000h ;0052 00 .\r | |
142 | reg.f: db 000h ;0054 00 .\r | |
143 | reg.a: db 000h ;0055 00 .\r | |
144 | reg.c: db 000h ;0056 00 .\r | |
145 | reg.b: db 000h ;0057 00 .\r | |
146 | reg.e: db 000h ;0058 00 .\r | |
147 | reg.d: db 000h ;0059 00 .\r | |
148 | reg.l: db 000h ;005a 00 .\r | |
149 | reg.h: db 000h ;005b 00 .\r | |
150 | reg_sp: dw TPA ;005c 00 01 .\r | |
151 | reg.iff:\r | |
152 | db 0f3h ;005e f3 .\r | |
153 | db 0c3h ;005f c3 .\r | |
154 | REG.PC: dw TPA ;0060 00 01 .\r | |
155 | l0062h: dw 0000h ;0062 00 00 .\r | |
156 | offs.@: dw 0 ;0064 00 00 .\r | |
157 | \r | |
158 | CMD_ERR:dw l0146h ;0066 46 01 F .\r | |
159 | cmd_rpt:dw mainloop ;0068 bd 00 . .\r | |
160 | \r | |
161 | conbuf:\r | |
162 | db CONBUF_SIZE ;006a 50 P\r | |
163 | \r | |
164 | ld sp,stack ;006b 31 46 00 1 F .\r | |
165 | exx ;006e d9 .\r | |
166 | ld de,ddtz_base ;006f 11 00 00 . . .\r | |
167 | or a ;0072 b7 .\r | |
168 | sbc hl,de ;0073 ed 52 . R\r | |
169 | add hl,de ;0075 19 .\r | |
170 | jr c,l0079h ;0076 38 01 8 .\r | |
171 | ex de,hl ;0078 eb .\r | |
172 | l0079h:\r | |
173 | ld de,TPA ;0079 11 00 01 . . .\r | |
174 | l007ch:\r | |
175 | dec hl ;007c 2b +\r | |
176 | ld (hl),000h ;007d 36 00 6 .\r | |
177 | ld a,h ;007f 7c |\r | |
178 | sub d ;0080 92 .\r | |
179 | ld b,a ;0081 47 G\r | |
180 | ld a,l ;0082 7d }\r | |
181 | sub e ;0083 93 .\r | |
182 | or b ;0084 b0 .\r | |
183 | jr nz,l007ch ;0085 20 f5 .\r | |
184 | ld a,i ;0087 ed 57 . W\r | |
185 | ld (reg.i),a ;0089 32 4f 00 2 O .\r | |
186 | ld a,0f3h ;008c 3e f3 > .\r | |
187 | jp po,l0093h ;008e e2 93 00 . . .\r | |
188 | ld a,0fbh ;0091 3e fb > .\r | |
189 | l0093h:\r | |
190 | ld (reg.iff),a ;0093 32 5e 00 2 ^ .\r | |
191 | call sub_0004h ;0096 cd 04 00 . . .\r | |
192 | ld hl,ddtz_base ;0099 21 00 00 ! . .\r | |
193 | ld l,000h ;009c 2e 00 . .\r | |
194 | ld (reg_sp),hl ;009e 22 5c 00 " \ .\r | |
195 | ld a,(FCB+1) ;00a1 3a 5d 00 : ] .\r | |
196 | cp ' ' ;00a4 fe 20 .\r | |
197 | ld hl,0 ;00a6 21 00 00 ! . .\r | |
198 | call nz,read_file ;00a9 c4 68 10 . h .\r | |
199 | jr mainloop ;00ac 18 0f . .\r | |
200 | \r | |
201 | ds CONBUF_SIZE + 3 - ($ - conbuf)\r | |
202 | \r | |
203 | mainloop:\r | |
204 | ld sp,stack ;00bd 31 46 00 1 F .\r | |
205 | ld hl,l0146h ;00c0 21 46 01 ! F .\r | |
206 | ld (CMD_ERR),hl ;00c3 22 66 00 " f .\r | |
207 | ld hl,(REG.PC) ;00c6 2a 60 00 * ` .\r | |
208 | ld (l0062h),hl ;00c9 22 62 00 " b .\r | |
209 | call bp_clr_temporary ;00cc cd 54 07 . T .\r | |
210 | ld hl,(cmd_rpt) ;00cf 2a 68 00 * h .\r | |
211 | ld de,mainloop ;00d2 11 bd 00 . . .\r | |
212 | call cp_hl_de ;00d5 cd ee 02 . . .\r | |
213 | ld a,'>' ;00d8 3e 3e > >\r | |
214 | call outchar ;00da cd 5d 02 . ] .\r | |
215 | call nz,outchar ;00dd c4 5d 02 . ] .\r | |
216 | call z,outbl ;00e0 cc 9f 02 . . .\r | |
217 | call get_line ;00e3 cd 4e 01 . N .\r | |
218 | call skipbl ;00e6 cd bf 02 . . .\r | |
219 | jr z,exe_hl ;00e9 28 1f ( .\r | |
220 | ld hl,mainloop ;00eb 21 bd 00 ! . .\r | |
221 | ld (cmd_rpt),hl ;00ee 22 68 00 " h .\r | |
222 | inc de ;00f1 13 .\r | |
223 | sub '@' ;00f2 d6 40 . @\r | |
224 | jr c,ERROR ;00f4 38 11 8 .\r | |
225 | cp 'Z'+1-'@' ;00f6 fe 1b . .\r | |
226 | jr nc,ERROR ;00f8 30 0d 0 .\r | |
227 | add a,a ;00fa 87 .\r | |
228 | ld hl,CMDTAB ;00fb 21 10 01 ! . .\r | |
229 | call add_hl_a ;00fe cd b9 02 . . .\r | |
230 | ld a,(hl) ;0101 7e ~\r | |
231 | inc hl ;0102 23 #\r | |
232 | ld h,(hl) ;0103 66 f\r | |
233 | ld l,a ;0104 6f o\r | |
234 | jr exe_hl ;0105 18 03 . .\r | |
235 | ERROR:\r | |
236 | ld hl,(CMD_ERR) ;0107 2a 66 00 * f .\r | |
237 | exe_hl:\r | |
238 | call CALL_HL ;010a cd 0f 01 . . .\r | |
239 | jr mainloop ;010d 18 ae . .\r | |
240 | CALL_HL:\r | |
241 | jp (hl) ;010f e9 .\r | |
242 | \r | |
243 | CMDTAB:\r | |
244 | defw cmd_@ ;0110 92 0d . .\r | |
245 | defw cmd_A ;0112 fe 11 . .\r | |
246 | defw cmd_B ;0114 6d 07 m .\r | |
247 | defw cmd_C ;0116 17 21 . !\r | |
248 | defw cmd_D ;0118 48 0f H .\r | |
249 | defw ERROR ;011a 07 01 . .\r | |
250 | defw cmd_F ;011c af 0f . .\r | |
251 | defw cmd_G ;011e 31 07 1 .\r | |
252 | defw cmd_H ;0120 3d 0e = .\r | |
253 | defw cmd_I ;0122 a3 0d . .\r | |
254 | defw ERROR ;0124 07 01 . .\r | |
255 | defw ERROR ;0126 07 01 . .\r | |
256 | defw cmd_L ;0128 cd 18 . .\r | |
257 | defw cmd_M ;012a 19 0e . .\r | |
258 | defw ERROR ;012c 07 01 . .\r | |
259 | defw cmd_O ;012e c7 0d . .\r | |
260 | defw ERROR ;0130 07 01 . .\r | |
261 | defw cmd_Q ;0132 84 0e . .\r | |
262 | defw cmd_R ;0134 62 10 b .\r | |
263 | defw cmd_S ;0136 5a 0d Z .\r | |
264 | defw cmd_T ;0138 1e 21 . !\r | |
265 | defw ERROR ;013a 07 01 . .\r | |
266 | defw cmd_V ;013c ea 0d . .\r | |
267 | defw cmd_W ;013e a0 11 . .\r | |
268 | defw cmd_X ;0140 f1 0b . .\r | |
269 | defw cmd_Y ;0142 b2 0b . .\r | |
270 | defw cmd_Z ;0144 ba 0e . .\r | |
271 | \r | |
272 | l0146h:\r | |
273 | ld a,'?' ;0146 3e 3f > ?\r | |
274 | call outchar ;0148 cd 5d 02 . ] .\r | |
275 | jp crlf ;014b c3 a3 02 . . .\r | |
276 | get_line:\r | |
277 | push hl ;014e e5 .\r | |
278 | ld de,conbuf ;014f 11 6a 00 . j .\r | |
279 | ld c,BDOS_CBUF ;0152 0e 0a . .\r | |
280 | call ddtz_base ;0154 cd 00 00 . . .\r | |
281 | call crlf ;0157 cd a3 02 . . .\r | |
282 | ld de,conbuf+1 ;015a 11 6b 00 . k .\r | |
283 | ld a,(de) ;015d 1a .\r | |
284 | ld b,a ;015e 47 G\r | |
990f66ca | 285 | ld c,0 ;015f 0e 00 . .\r |
0c4244e5 L |
286 | inc b ;0161 04 .\r |
287 | l0162h:\r | |
288 | inc de ;0162 13 .\r | |
289 | dec b ;0163 05 .\r | |
290 | jr z,l0194h ;0164 28 2e ( .\r | |
291 | ld a,(de) ;0166 1a .\r | |
292 | bit 0,c ;0167 cb 41 . A\r | |
293 | call z,toupper ;0169 cc 9b 01 . . .\r | |
294 | ld (de),a ;016c 12 .\r | |
295 | cp '''' ;016d fe 27 . '\r | |
296 | jr nz,l0162h ;016f 20 f1 .\r | |
297 | push de ;0171 d5 .\r | |
298 | dec de ;0172 1b .\r | |
299 | ld a,(de) ;0173 1a .\r | |
300 | cp '''' ;0174 fe 27 . '\r | |
301 | jr z,l0190h ;0176 28 18 ( .\r | |
302 | dec de ;0178 1b .\r | |
303 | ld a,(de) ;0179 1a .\r | |
304 | cp '^' ;017a fe 5e . ^\r | |
305 | jr z,l0184h ;017c 28 06 ( .\r | |
306 | dec de ;017e 1b .\r | |
307 | ld a,(de) ;017f 1a .\r | |
308 | cp '^' ;0180 fe 5e . ^\r | |
309 | jr nz,l0190h ;0182 20 0c .\r | |
310 | l0184h:\r | |
311 | inc de ;0184 13 .\r | |
312 | push bc ;0185 c5 .\r | |
313 | call sub_0303h ;0186 cd 03 03 . . .\r | |
314 | pop bc ;0189 c1 .\r | |
315 | dec de ;018a 1b .\r | |
316 | ld a,(de) ;018b 1a .\r | |
317 | cp '''' ;018c fe 27 . '\r | |
318 | jr z,l0191h ;018e 28 01 ( .\r | |
319 | l0190h:\r | |
320 | inc c ;0190 0c .\r | |
321 | l0191h:\r | |
322 | pop de ;0191 d1 .\r | |
323 | jr l0162h ;0192 18 ce . .\r | |
324 | l0194h:\r | |
325 | xor a ;0194 af .\r | |
326 | ld (de),a ;0195 12 .\r | |
327 | ld de,conbuf+2 ;0196 11 6c 00 . l .\r | |
328 | pop hl ;0199 e1 .\r | |
329 | ret ;019a c9 .\r | |
330 | \r | |
331 | toupper:\r | |
332 | cp 'a' ;019b fe 61 . a\r | |
333 | ret c ;019d d8 .\r | |
334 | cp 'z'+1 ;019e fe 7b . {\r | |
335 | ret nc ;01a0 d0 .\r | |
336 | and 05fh ;01a1 e6 5f . _\r | |
337 | ret ;01a3 c9 .\r | |
338 | \r | |
339 | out.hl.@:\r | |
340 | call out_hl ;01a4 cd 13 02 . . .\r | |
341 | push de ;01a7 d5 .\r | |
342 | push hl ;01a8 e5 .\r | |
343 | ld de,(offs.@) ;01a9 ed 5b 64 00 . [ d .\r | |
344 | ld a,d ;01ad 7a z\r | |
345 | or e ;01ae b3 .\r | |
346 | jr z,l01bfh ;01af 28 0e ( .\r | |
347 | call outbl ;01b1 cd 9f 02 . . .\r | |
348 | ld a,'@' ;01b4 3e 40 > @\r | |
349 | call outchar ;01b6 cd 5d 02 . ] .\r | |
350 | and a ;01b9 a7 .\r | |
351 | sbc hl,de ;01ba ed 52 . R\r | |
352 | call out_hl ;01bc cd 13 02 . . .\r | |
353 | l01bfh:\r | |
354 | pop hl ;01bf e1 .\r | |
355 | pop de ;01c0 d1 .\r | |
356 | ret ;01c1 c9 .\r | |
357 | out.bin.w:\r | |
358 | ld a,h ;01c2 7c |\r | |
359 | call out.bin.b ;01c3 cd c7 01 . . .\r | |
360 | ld a,l ;01c6 7d }\r | |
361 | out.bin.b:\r | |
362 | ld b,8 ;01c7 06 08 . .\r | |
363 | l01c9h:\r | |
364 | add a,a ;01c9 87 .\r | |
365 | push af ;01ca f5 .\r | |
366 | ld a,00 ;01cb 3e 00 > .\r | |
367 | adc a,a ;01cd 8f .\r | |
368 | call out_dgt ;01ce cd 21 02 . ! .\r | |
369 | pop af ;01d1 f1 .\r | |
370 | djnz l01c9h ;01d2 10 f5 . .\r | |
371 | ld a,'"' ;01d4 3e 22 > "\r | |
372 | jp outchar ;01d6 c3 5d 02 . ] .\r | |
373 | \r | |
374 | sub_01d9h:\r | |
375 | ld a,'-' ;01d9 3e 2d > -\r | |
376 | call outchar ;01db cd 5d 02 . ] .\r | |
377 | dec hl ;01de 2b +\r | |
378 | jp cpl.hl ;01df c3 79 05 . y .\r | |
379 | \r | |
380 | out_hl_dec_neg:\r | |
381 | push hl ;01e2 e5 .\r | |
382 | call sub_01d9h ;01e3 cd d9 01 . . .\r | |
383 | defb 03eh ;01e6 3e >\r | |
384 | out.hl.dec:\r | |
385 | push hl ;01e7 e5 .\r | |
386 | ld b,006h ;01e8 06 06 . .\r | |
387 | call sub_01f9h ;01ea cd f9 01 . . .\r | |
388 | pop hl ;01ed e1 .\r | |
389 | ld a,'.' ;01ee 3e 2e > .\r | |
390 | call outchar ;01f0 cd 5d 02 . ] .\r | |
391 | l01f3h:\r | |
392 | call outbl ;01f3 cd 9f 02 . . .\r | |
393 | djnz l01f3h ;01f6 10 fb . .\r | |
394 | ret ;01f8 c9 .\r | |
395 | sub_01f9h:\r | |
396 | dec b ;01f9 05 .\r | |
397 | push de ;01fa d5 .\r | |
398 | ld de,10 ;01fb 11 0a 00 . . .\r | |
399 | call div_hl_de ;01fe cd 75 04 . u .\r | |
400 | ld a,h ;0201 7c |\r | |
401 | or l ;0202 b5 .\r | |
402 | call nz,sub_01f9h ;0203 c4 f9 01 . . .\r | |
403 | ld a,e ;0206 7b {\r | |
404 | pop de ;0207 d1 .\r | |
405 | jr out_dgt ;0208 18 17 . .\r | |
406 | \r | |
407 | out_hl_neg:\r | |
408 | push hl ;020a e5 .\r | |
409 | call sub_01d9h ;020b cd d9 01 . . .\r | |
410 | call out_hl ;020e cd 13 02 . . .\r | |
411 | pop hl ;0211 e1 .\r | |
412 | ret ;0212 c9 .\r | |
413 | \r | |
414 | out_hl:\r | |
415 | ld a,h ;0213 7c |\r | |
416 | call out_hex ;0214 cd 18 02 . . .\r | |
417 | ld a,l ;0217 7d }\r | |
418 | \r | |
419 | out_hex:\r | |
420 | push af ;0218 f5 .\r | |
421 | rra ;0219 1f .\r | |
422 | rra ;021a 1f .\r | |
423 | rra ;021b 1f .\r | |
424 | rra ;021c 1f .\r | |
425 | call out_dgt ;021d cd 21 02 . ! .\r | |
426 | pop af ;0220 f1 .\r | |
427 | \r | |
428 | out_dgt:\r | |
429 | and 0fh ;0221 e6 0f . .\r | |
430 | cp 10 ;0223 fe 0a . .\r | |
431 | jr c,l0229h ;0225 38 02 8 .\r | |
432 | add a,007h ;0227 c6 07 . .\r | |
433 | l0229h:\r | |
434 | add a,'0' ;0229 c6 30 . 0\r | |
435 | jr outchar ;022b 18 30 . 0\r | |
436 | l022dh:\r | |
437 | ld a,'-' ;022d 3e 2d > -\r | |
438 | call outchar ;022f cd 5d 02 . ] .\r | |
439 | ld a,040h ;0232 3e 40 > @\r | |
440 | out.ascii:\r | |
441 | ex af,af' ;0234 08 .\r | |
442 | call outquote ;0235 cd 5b 02 . [ .\r | |
443 | ex af,af' ;0238 08 .\r | |
444 | push af ;0239 f5 .\r | |
445 | res 7,a ;023a cb bf . .\r | |
446 | cp ' ' ;023c fe 20 .\r | |
447 | jr nc,l0242h ;023e 30 02 0 .\r | |
448 | sub 0c0h ;0240 d6 c0 . .\r | |
449 | l0242h:\r | |
450 | call outchar ;0242 cd 5d 02 . ] .\r | |
451 | push af ;0245 f5 .\r | |
452 | cp '''' ;0246 fe 27 . '\r | |
453 | call z,outchar ;0248 cc 5d 02 . ] .\r | |
454 | pop af ;024b f1 .\r | |
455 | ex af,af' ;024c 08 .\r | |
456 | call outquote ;024d cd 5b 02 . [ .\r | |
457 | pop af ;0250 f1 .\r | |
458 | or a ;0251 b7 .\r | |
459 | ld a,'.' ;0252 3e 2e > .\r | |
460 | call m,outchar ;0254 fc 5d 02 . ] .\r | |
461 | ex af,af' ;0257 08 .\r | |
462 | jr c,l022dh ;0258 38 d3 8 .\r | |
463 | ret ;025a c9 .\r | |
990f66ca | 464 | \r |
0c4244e5 L |
465 | outquote:\r |
466 | ld a,'''' ;025b 3e 27 > '\r | |
467 | outchar:\r | |
468 | push hl ;025d e5 .\r | |
469 | push de ;025e d5 .\r | |
470 | push bc ;025f c5 .\r | |
471 | push af ;0260 f5 .\r | |
472 | and 07fh ;0261 e6 7f . \7f\r | |
473 | ld e,a ;0263 5f _\r | |
474 | ld c,BDOS_COUT ;0264 0e 02 . .\r | |
475 | call ddtz_base ;0266 cd 00 00 . . .\r | |
476 | ld hl,con_col ;0269 21 72 02 ! r .\r | |
477 | inc (hl) ;026c 34 4\r | |
478 | pop af ;026d f1 .\r | |
479 | pop bc ;026e c1 .\r | |
480 | pop de ;026f d1 .\r | |
481 | pop hl ;0270 e1 .\r | |
482 | ret ;0271 c9 .\r | |
483 | con_col:\r | |
484 | db 0 ;0272 00 .\r | |
485 | inchar:\r | |
486 | push hl ;0273 e5 .\r | |
487 | push de ;0274 d5 .\r | |
488 | push bc ;0275 c5 .\r | |
489 | ld c,BDOS_CSTAT ;0276 0e 0b . .\r | |
490 | call ddtz_base ;0278 cd 00 00 . . .\r | |
491 | and a ;027b a7 .\r | |
492 | jr z,l0284h ;027c 28 06 ( .\r | |
493 | ld c,BDOS_CIN ;027e 0e 01 . .\r | |
494 | call ddtz_base ;0280 cd 00 00 . . .\r | |
495 | scf ;0283 37 7\r | |
496 | l0284h:\r | |
497 | pop bc ;0284 c1 .\r | |
498 | pop de ;0285 d1 .\r | |
499 | pop hl ;0286 e1 .\r | |
500 | ret ;0287 c9 .\r | |
501 | pstr:\r | |
990f66ca | 502 | ld c,0 ;0288 0e 00 . .\r |
0c4244e5 L |
503 | l028ah:\r |
504 | ld a,(hl) ;028a 7e ~\r | |
505 | and a ;028b a7 .\r | |
506 | ret z ;028c c8 .\r | |
507 | call outchar ;028d cd 5d 02 . ] .\r | |
508 | inc c ;0290 0c .\r | |
509 | inc hl ;0291 23 #\r | |
510 | and a ;0292 a7 .\r | |
511 | ret m ;0293 f8 .\r | |
512 | jr l028ah ;0294 18 f4 . .\r | |
513 | \r | |
514 | outbl6:\r | |
515 | call outbl2 ;0296 cd 9c 02 . . .\r | |
516 | outbl4:\r | |
517 | call outbl2 ;0299 cd 9c 02 . . .\r | |
518 | outbl2:\r | |
519 | call outbl ;029c cd 9f 02 . . .\r | |
520 | outbl:\r | |
521 | ld a,' ' ;029f 3e 20 >\r | |
522 | jr outchar ;02a1 18 ba . .\r | |
523 | crlf:\r | |
524 | call inchar ;02a3 cd 73 02 . s .\r | |
525 | ld a,CR ;02a6 3e 0d > .\r | |
526 | call outchar ;02a8 cd 5d 02 . ] .\r | |
527 | ld a,LF ;02ab 3e 0a > .\r | |
528 | call outchar ;02ad cd 5d 02 . ] .\r | |
529 | ld a,0 ;02b0 3e 00 > .\r | |
530 | ld (con_col),a ;02b2 32 72 02 2 r .\r | |
531 | jp c,mainloop ;02b5 da bd 00 . . .\r | |
532 | ret ;02b8 c9 .\r | |
533 | add_hl_a:\r | |
534 | add a,l ;02b9 85 .\r | |
535 | ld l,a ;02ba 6f o\r | |
536 | ret nc ;02bb d0 .\r | |
537 | inc h ;02bc 24 $\r | |
538 | ret ;02bd c9 .\r | |
539 | \r | |
540 | skipbl0:\r | |
541 | inc de ;02be 13 .\r | |
542 | skipbl:\r | |
543 | ld a,(de) ;02bf 1a .\r | |
544 | cp ' ' ;02c0 fe 20 .\r | |
545 | jr z,skipbl0 ;02c2 28 fa ( .\r | |
546 | cp TAB ;02c4 fe 09 . .\r | |
547 | jr z,skipbl0 ;02c6 28 f6 ( .\r | |
548 | or a ;02c8 b7 .\r | |
549 | ret ;02c9 c9 .\r | |
550 | \r | |
551 | next_arg:\r | |
552 | call skipbl ;02ca cd bf 02 . . .\r | |
553 | cp ',' ;02cd fe 2c . ,\r | |
554 | ret nz ;02cf c0 .\r | |
555 | inc de ;02d0 13 .\r | |
556 | call skipbl ;02d1 cd bf 02 . . .\r | |
557 | cp a ;02d4 bf .\r | |
558 | ret ;02d5 c9 .\r | |
559 | \r | |
560 | assert_eol:\r | |
561 | call skipbl ;02d6 cd bf 02 . . .\r | |
562 | ret z ;02d9 c8 .\r | |
563 | to_error:\r | |
564 | jp ERROR ;02da c3 07 01 . . .\r | |
565 | \r | |
566 | chk_sp:\r | |
567 | push hl ;02dd e5 .\r | |
568 | push de ;02de d5 .\r | |
569 | ld hl,0 ;02df 21 00 00 ! . .\r | |
570 | add hl,sp ;02e2 39 9\r | |
571 | ld de,stack-40 ;02e3 11 1e 00 . . .\r | |
572 | call cp_hl_de ;02e6 cd ee 02 . . .\r | |
573 | pop de ;02e9 d1 .\r | |
574 | pop hl ;02ea e1 .\r | |
575 | jr c,to_error ;02eb 38 ed 8 .\r | |
576 | ret ;02ed c9 .\r | |
577 | \r | |
578 | cp_hl_de:\r | |
579 | and a ;02ee a7 .\r | |
580 | sbc hl,de ;02ef ed 52 . R\r | |
581 | add hl,de ;02f1 19 .\r | |
582 | ret ;02f2 c9 .\r | |
583 | \r | |
584 | lookupch:\r | |
585 | ld b,0 ;02f3 06 00 . .\r | |
586 | l02f5h:\r | |
587 | ld a,(hl) ;02f5 7e ~\r | |
588 | and a ;02f6 a7 .\r | |
589 | ret z ;02f7 c8 .\r | |
590 | ld a,(de) ;02f8 1a .\r | |
591 | cp (hl) ;02f9 be .\r | |
592 | jr z,l0300h ;02fa 28 04 ( .\r | |
593 | inc hl ;02fc 23 #\r | |
594 | inc b ;02fd 04 .\r | |
595 | jr l02f5h ;02fe 18 f5 . .\r | |
596 | l0300h:\r | |
597 | scf ;0300 37 7\r | |
598 | inc de ;0301 13 .\r | |
599 | ret ;0302 c9 .\r | |
600 | \r | |
601 | sub_0303h:\r | |
602 | ld hl,b_0cc3_start ;0303 21 c3 0c ! . .\r | |
603 | ld b,07fh ;0306 06 7f .\r | |
604 | jr l030ch ;0308 18 02 . .\r | |
15f6bf95 | 605 | \r |
0c4244e5 L |
606 | sub_030ah:\r |
607 | ld b,0ffh ;030a 06 ff . .\r | |
608 | l030ch:\r | |
609 | inc b ;030c 04 .\r | |
610 | ld a,(hl) ;030d 7e ~\r | |
611 | and a ;030e a7 .\r | |
612 | ret z ;030f c8 .\r | |
613 | call sub_031ch ;0310 cd 1c 03 . . .\r | |
614 | jr nc,l030ch ;0313 30 f7 0 .\r | |
615 | res 7,b ;0315 cb b8 . .\r | |
616 | ret ;0317 c9 .\r | |
617 | \r | |
618 | sub_0318h:\r | |
619 | push bc ;0318 c5 .\r | |
620 | res 7,b ;0319 cb b8 . .\r | |
621 | defb 03eh ;031b 3e >\r | |
622 | sub_031ch:\r | |
623 | push bc ;031c c5 .\r | |
624 | push de ;031d d5 .\r | |
625 | l031eh:\r | |
626 | ld a,(de) ;031e 1a .\r | |
627 | xor (hl) ;031f ae .\r | |
628 | and 07fh ;0320 e6 7f .\r | |
629 | jr nz,l0336h ;0322 20 12 .\r | |
630 | bit 7,(hl) ;0324 cb 7e . ~\r | |
631 | inc hl ;0326 23 #\r | |
632 | inc de ;0327 13 .\r | |
633 | jr z,l031eh ;0328 28 f4 ( .\r | |
634 | scf ;032a 37 7\r | |
635 | bit 7,b ;032b cb 78 . x\r | |
636 | call z,sub_060ch ;032d cc 0c 06 . . .\r | |
637 | jr nc,l0339h ;0330 30 07 0 .\r | |
638 | pop af ;0332 f1 .\r | |
639 | scf ;0333 37 7\r | |
640 | pop bc ;0334 c1 .\r | |
641 | ret ;0335 c9 .\r | |
642 | l0336h:\r | |
643 | call sub_0345h ;0336 cd 45 03 . E .\r | |
644 | l0339h:\r | |
645 | pop de ;0339 d1 .\r | |
646 | and a ;033a a7 .\r | |
647 | pop bc ;033b c1 .\r | |
648 | ret ;033c c9 .\r | |
990f66ca L |
649 | \r |
650 | sel_dc_string:\r | |
0c4244e5 L |
651 | inc b ;033d 04 .\r |
652 | l033eh:\r | |
653 | dec b ;033e 05 .\r | |
654 | ret z ;033f c8 .\r | |
655 | call sub_0345h ;0340 cd 45 03 . E .\r | |
656 | jr l033eh ;0343 18 f9 . .\r | |
990f66ca | 657 | \r |
0c4244e5 L |
658 | sub_0345h:\r |
659 | ld a,(hl) ;0345 7e ~\r | |
660 | and a ;0346 a7 .\r | |
661 | ret z ;0347 c8 .\r | |
662 | l0348h:\r | |
663 | ld a,(hl) ;0348 7e ~\r | |
664 | inc hl ;0349 23 #\r | |
665 | and a ;034a a7 .\r | |
666 | ret m ;034b f8 .\r | |
667 | jr l0348h ;034c 18 fa . .\r | |
990f66ca | 668 | \r |
0c4244e5 L |
669 | sub_034eh:\r |
670 | call get_arg_range ;034e cd 7d 03 . } .\r | |
671 | push hl ;0351 e5 .\r | |
672 | push bc ;0352 c5 .\r | |
673 | call next_arg ;0353 cd ca 02 . . .\r | |
674 | call sub_0363h ;0356 cd 63 03 . c .\r | |
675 | ex de,hl ;0359 eb .\r | |
676 | pop bc ;035a c1 .\r | |
677 | pop hl ;035b e1 .\r | |
678 | ret ;035c c9 .\r | |
679 | \r | |
680 | sub_035dh:\r | |
681 | call expr ;035d cd be 03 . . .\r | |
682 | jr c,error0 ;0360 38 33 8 3\r | |
683 | ret ;0362 c9 .\r | |
684 | \r | |
685 | sub_0363h:\r | |
686 | call sub_035dh ;0363 cd 5d 03 . ] .\r | |
687 | l0366h:\r | |
688 | jp assert_eol ;0366 c3 d6 02 . . .\r | |
689 | \r | |
690 | get_lastarg_def:\r | |
691 | call get_arg_def ;0369 cd 6e 03 . n .\r | |
692 | jr l0366h ;036c 18 f8 . .\r | |
15f6bf95 | 693 | \r |
0c4244e5 L |
694 | get_arg_def:\r |
695 | push hl ;036e e5 .\r | |
696 | call expr ;036f cd be 03 . . .\r | |
697 | jr c,l0375h ;0372 38 01 8 .\r | |
698 | ex (sp),hl ;0374 e3 .\r | |
699 | l0375h:\r | |
700 | pop hl ;0375 e1 .\r | |
701 | ret ;0376 c9 .\r | |
15f6bf95 | 702 | \r |
0c4244e5 L |
703 | sub_0377h:\r |
704 | call b_037c_start ;0377 cd 7c 03 . | .\r | |
705 | jr l0366h ;037a 18 ea . .\r | |
706 | \r | |
707 | b_037c_start:\r | |
708 | defb 0e6h ;037c e6 .\r | |
709 | get_arg_range:\r | |
710 | scf ;037d 37 7\r | |
711 | ex af,af' ;037e 08 .\r | |
712 | push bc ;037f c5 .\r | |
713 | push hl ;0380 e5 .\r | |
714 | call expr ;0381 cd be 03 . . .\r | |
715 | jr nc,l038ch ;0384 30 06 0 .\r | |
716 | ex af,af' ;0386 08 .\r | |
717 | jr c,error0 ;0387 38 0c 8 .\r | |
718 | ex af,af' ;0389 08 .\r | |
719 | pop hl ;038a e1 .\r | |
720 | defb 03eh ;038b 3e >\r | |
721 | l038ch:\r | |
722 | pop af ;038c f1 .\r | |
15f6bf95 | 723 | call get_range ;038d cd 9a 03 . . .\r |
0c4244e5 L |
724 | jr nc,l0398h ;0390 30 06 0 .\r |
725 | ex af,af' ;0392 08 .\r | |
726 | pop bc ;0393 c1 .\r | |
727 | ret nc ;0394 d0 .\r | |
728 | error0:\r | |
729 | jp ERROR ;0395 c3 07 01 . . .\r | |
730 | l0398h:\r | |
731 | pop af ;0398 f1 .\r | |
732 | ret ;0399 c9 .\r | |
733 | \r | |
15f6bf95 | 734 | get_range:\r |
0c4244e5 L |
735 | call next_arg ;039a cd ca 02 . . .\r |
736 | cp 'S' ;039d fe 53 . S\r | |
737 | jr nz,l03a2h ;039f 20 01 .\r | |
738 | inc de ;03a1 13 .\r | |
739 | l03a2h:\r | |
740 | push hl ;03a2 e5 .\r | |
741 | push af ;03a3 f5 .\r | |
742 | call expr ;03a4 cd be 03 . . .\r | |
743 | jr c,l03b8h ;03a7 38 0f 8 .\r | |
744 | ld b,h ;03a9 44 D\r | |
745 | ld c,l ;03aa 4d M\r | |
746 | pop af ;03ab f1 .\r | |
747 | pop hl ;03ac e1 .\r | |
748 | jr z,l03b6h ;03ad 28 07 ( .\r | |
749 | ld a,c ;03af 79 y\r | |
750 | sub l ;03b0 95 .\r | |
751 | ld c,a ;03b1 4f O\r | |
752 | ld a,b ;03b2 78 x\r | |
753 | sbc a,h ;03b3 9c .\r | |
754 | ld b,a ;03b4 47 G\r | |
755 | inc bc ;03b5 03 .\r | |
756 | l03b6h:\r | |
757 | and a ;03b6 a7 .\r | |
758 | ret ;03b7 c9 .\r | |
759 | l03b8h:\r | |
760 | pop af ;03b8 f1 .\r | |
761 | pop hl ;03b9 e1 .\r | |
762 | jr z,error0 ;03ba 28 d9 ( .\r | |
763 | scf ;03bc 37 7\r | |
764 | ret ;03bd c9 .\r | |
765 | \r | |
766 | expr:\r | |
767 | call skipbl ;03be cd bf 02 . . .\r | |
768 | expr1:\r | |
769 | call do_subexpr ;03c1 cd 2f 04 . / .\r | |
770 | ret c ;03c4 d8 .\r | |
771 | call do_rel_op ;03c5 cd ef 03 . . .\r | |
772 | ret nc ;03c8 d0 .\r | |
773 | push bc ;03c9 c5 .\r | |
774 | push hl ;03ca e5 .\r | |
775 | call do_subexpr ;03cb cd 2f 04 . / .\r | |
776 | jr c,error0 ;03ce 38 c5 8 .\r | |
777 | ex de,hl ;03d0 eb .\r | |
778 | ex (sp),hl ;03d1 e3 .\r | |
779 | and a ;03d2 a7 .\r | |
780 | sbc hl,de ;03d3 ed 52 . R\r | |
781 | ld hl,0ffffh ;03d5 21 ff ff ! . .\r | |
782 | pop de ;03d8 d1 .\r | |
783 | ret ;03d9 c9 .\r | |
784 | \r | |
785 | do_op_eq:\r | |
786 | jr z,l03edh ;03da 28 11 ( .\r | |
787 | jr l03ech ;03dc 18 0e . .\r | |
788 | do_op_ne:\r | |
789 | jr nz,l03edh ;03de 20 0d .\r | |
790 | jr l03ech ;03e0 18 0a . .\r | |
791 | do_op_le:\r | |
792 | jr z,l03edh ;03e2 28 09 ( .\r | |
793 | do_op_lt:\r | |
794 | jr c,l03edh ;03e4 38 07 8 .\r | |
795 | jr l03ech ;03e6 18 04 . .\r | |
796 | do_op_gt:\r | |
797 | jr z,l03ech ;03e8 28 02 ( .\r | |
798 | do_op_ge:\r | |
799 | jr nc,l03edh ;03ea 30 01 0 .\r | |
800 | l03ech:\r | |
801 | inc hl ;03ec 23 #\r | |
802 | l03edh:\r | |
803 | and a ;03ed a7 .\r | |
804 | ret ;03ee c9 .\r | |
805 | do_rel_op:\r | |
806 | push hl ;03ef e5 .\r | |
807 | ld hl,tab_eq_le_ge ;03f0 21 1f 04 ! . .\r | |
808 | call lookupch ;03f3 cd f3 02 . . .\r | |
809 | jr nc,l041dh ;03f6 30 25 0 %\r | |
810 | ld a,b ;03f8 78 x\r | |
811 | or a ;03f9 b7 .\r | |
812 | jr z,l0411h ;03fa 28 15 ( .\r | |
813 | ld a,(de) ;03fc 1a .\r | |
814 | cp '=' ;03fd fe 3d . =\r | |
815 | jr nz,l0406h ;03ff 20 05 .\r | |
816 | inc de ;0401 13 .\r | |
817 | inc b ;0402 04 .\r | |
818 | inc b ;0403 04 .\r | |
819 | jr l0411h ;0404 18 0b . .\r | |
820 | l0406h:\r | |
821 | bit 0,b ;0406 cb 40 . @\r | |
822 | jr z,l0411h ;0408 28 07 ( .\r | |
823 | cp '>' ;040a fe 3e . >\r | |
824 | jr nz,l0411h ;040c 20 03 .\r | |
825 | inc de ;040e 13 .\r | |
826 | ld b,005h ;040f 06 05 . .\r | |
827 | l0411h:\r | |
828 | ld hl,tab_func_eqlege ;0411 21 23 04 ! # .\r | |
829 | ld a,b ;0414 78 x\r | |
830 | add a,a ;0415 87 .\r | |
831 | call add_hl_a ;0416 cd b9 02 . . .\r | |
832 | ld c,(hl) ;0419 4e N\r | |
833 | inc hl ;041a 23 #\r | |
834 | ld b,(hl) ;041b 46 F\r | |
835 | scf ;041c 37 7\r | |
836 | l041dh:\r | |
837 | pop hl ;041d e1 .\r | |
838 | ret ;041e c9 .\r | |
839 | \r | |
840 | tab_eq_le_ge:\r | |
841 | db '=<>',0\r | |
842 | \r | |
843 | tab_func_eqlege:\r | |
844 | defw do_op_eq ;0423 da 03 . .\r | |
845 | defw do_op_lt ;0425 e4 03 . .\r | |
846 | defw do_op_gt ;0427 e8 03 . .\r | |
847 | defw do_op_le ;0429 e2 03 . .\r | |
848 | defw do_op_ge ;042b ea 03 . .\r | |
849 | defw do_op_ne ;042d de 03 . .\r | |
850 | \r | |
851 | do_subexpr:\r | |
852 | call do_factor ;042f cd e4 04 . . .\r | |
853 | ret c ;0432 d8 .\r | |
854 | l0433h:\r | |
855 | call do_binary_op ;0433 cd ae 04 . . .\r | |
856 | push hl ;0436 e5 .\r | |
857 | push bc ;0437 c5 .\r | |
858 | call do_factor ;0438 cd e4 04 . . .\r | |
859 | pop bc ;043b c1 .\r | |
990f66ca L |
860 | ex de,hl ;043c eb .\r |
861 | ex (sp),hl ;043d e3 .\r | |
0c4244e5 L |
862 | jr nc,l0447h ;043e 30 07 0 .\r |
863 | pop de ;0440 d1 .\r | |
864 | ld a,b ;0441 78 x\r | |
865 | or c ;0442 b1 .\r | |
866 | ret z ;0443 c8 .\r | |
867 | jp ERROR ;0444 c3 07 01 . . .\r | |
868 | \r | |
869 | l0447h:\r | |
870 | ld a,b ;0447 78 x\r | |
871 | or c ;0448 b1 .\r | |
872 | push bc ;0449 c5 .\r | |
873 | ret nz ;044a c0 .\r | |
874 | pop bc ;044b c1 .\r | |
875 | \r | |
876 | doop_add:\r | |
877 | add hl,de ;044c 19 .\r | |
878 | l044dh:\r | |
879 | pop de ;044d d1 .\r | |
880 | jr l0433h ;044e 18 e3 . .\r | |
881 | \r | |
882 | doop_sub:\r | |
883 | and a ;0450 a7 .\r | |
884 | sbc hl,de ;0451 ed 52 . R\r | |
885 | jr l044dh ;0453 18 f8 . .\r | |
886 | \r | |
887 | doop_mlt:\r | |
888 | push bc ;0455 c5 .\r | |
889 | ld b,h ;0456 44 D\r | |
890 | ld c,l ;0457 4d M\r | |
891 | ld hl,0 ;0458 21 00 00 ! . .\r | |
892 | ld a,010h ;045b 3e 10 > .\r | |
893 | l045dh:\r | |
894 | add hl,hl ;045d 29 )\r | |
895 | ex de,hl ;045e eb .\r | |
896 | add hl,hl ;045f 29 )\r | |
897 | ex de,hl ;0460 eb .\r | |
898 | jr nc,l0464h ;0461 30 01 0 .\r | |
899 | add hl,bc ;0463 09 .\r | |
900 | l0464h:\r | |
901 | dec a ;0464 3d =\r | |
902 | jr nz,l045dh ;0465 20 f6 .\r | |
903 | pop bc ;0467 c1 .\r | |
904 | jr l044dh ;0468 18 e3 . .\r | |
905 | \r | |
906 | doop_div:\r | |
907 | call div_hl_de ;046a cd 75 04 . u .\r | |
908 | jr l044dh ;046d 18 de . .\r | |
909 | \r | |
910 | doop_mod:\r | |
911 | call div_hl_de ;046f cd 75 04 . u .\r | |
912 | ex de,hl ;0472 eb .\r | |
913 | jr l044dh ;0473 18 d8 . .\r | |
914 | \r | |
915 | ; divide x/y\r | |
916 | ; hl: x\r | |
917 | ; de: y\r | |
918 | ; return:\r | |
919 | ; hl: q (x/y)\r | |
920 | ; de: r (x%y)\r | |
921 | \r | |
922 | div_hl_de:\r | |
923 | push bc ;0475 c5 .\r | |
924 | ex de,hl ;0476 eb .\r | |
925 | ld b,h ;0477 44 D\r | |
926 | ld c,l ;0478 4d M\r | |
927 | ld hl,0 ;0479 21 00 00 ! . .\r | |
928 | ld a,16 ;047c 3e 10 > .\r | |
929 | \r | |
930 | ; de: x (x shifted out, q shifted in)\r | |
931 | ; bc: y\r | |
932 | ; hl: r (initially 0)\r | |
933 | \r | |
934 | l047eh:\r | |
935 | push af ;047e f5 .\r | |
936 | add hl,hl ;047f 29 )\r | |
937 | ex de,hl ;0480 eb .\r | |
938 | xor a ;0481 af .\r | |
939 | add hl,hl ;0482 29 )\r | |
940 | ex de,hl ;0483 eb .\r | |
941 | adc a,l ;0484 8d .\r | |
942 | sub c ;0485 91 .\r | |
943 | ld l,a ;0486 6f o\r | |
944 | ld a,h ;0487 7c |\r | |
945 | sbc a,b ;0488 98 .\r | |
946 | ld h,a ;0489 67 g\r | |
947 | inc de ;048a 13 .\r | |
948 | jr nc,l048fh ;048b 30 02 0 .\r | |
949 | add hl,bc ;048d 09 .\r | |
950 | dec de ;048e 1b .\r | |
951 | l048fh:\r | |
952 | pop af ;048f f1 .\r | |
953 | dec a ;0490 3d =\r | |
954 | jr nz,l047eh ;0491 20 eb .\r | |
955 | ex de,hl ;0493 eb .\r | |
956 | pop bc ;0494 c1 .\r | |
957 | ret ;0495 c9 .\r | |
958 | \r | |
959 | doop_and:\r | |
960 | ld a,h ;0496 7c |\r | |
961 | and d ;0497 a2 .\r | |
962 | ld h,a ;0498 67 g\r | |
963 | ld a,l ;0499 7d }\r | |
964 | and e ;049a a3 .\r | |
965 | ld l,a ;049b 6f o\r | |
966 | jr l044dh ;049c 18 af . .\r | |
967 | \r | |
968 | doop_or:\r | |
969 | ld a,h ;049e 7c |\r | |
970 | or d ;049f b2 .\r | |
971 | ld h,a ;04a0 67 g\r | |
972 | ld a,l ;04a1 7d }\r | |
973 | or e ;04a2 b3 .\r | |
974 | ld l,a ;04a3 6f o\r | |
975 | jr l044dh ;04a4 18 a7 . .\r | |
976 | \r | |
977 | doop_xor:\r | |
978 | ld a,h ;04a6 7c |\r | |
979 | xor d ;04a7 aa .\r | |
980 | ld h,a ;04a8 67 g\r | |
981 | ld a,l ;04a9 7d }\r | |
982 | xor e ;04aa ab .\r | |
983 | ld l,a ;04ab 6f o\r | |
984 | jr l044dh ;04ac 18 9f . .\r | |
985 | \r | |
986 | do_binary_op:\r | |
987 | push hl ;04ae e5 .\r | |
988 | ld hl,tab_op_a ;04af 21 c2 04 ! . .\r | |
989 | call lookupch ;04b2 cd f3 02 . . .\r | |
990 | ld a,b ;04b5 78 x\r | |
991 | ld hl,tblf_opa ;04b6 21 cb 04 ! . .\r | |
992 | add a,a ;04b9 87 .\r | |
993 | call add_hl_a ;04ba cd b9 02 . . .\r | |
994 | ld c,(hl) ;04bd 4e N\r | |
995 | inc hl ;04be 23 #\r | |
996 | ld b,(hl) ;04bf 46 F\r | |
997 | pop hl ;04c0 e1 .\r | |
998 | ret ;04c1 c9 .\r | |
999 | \r | |
1000 | tab_op_a:\r | |
1001 | DB '+-*/%&!#',0\r | |
1002 | \r | |
1003 | tblf_opa:\r | |
1004 | defw doop_add ;04cb 4c 04 L .\r | |
1005 | defw doop_sub ;04cd 50 04 P .\r | |
1006 | defw doop_mlt ;04cf 55 04 U .\r | |
1007 | defw doop_div ;04d1 6a 04 j .\r | |
1008 | defw doop_mod ;04d3 6f 04 o .\r | |
1009 | defw doop_and ;04d5 96 04 . .\r | |
1010 | defw doop_or ;04d7 9e 04 . .\r | |
1011 | defw doop_xor ;04d9 a6 04 . .\r | |
1012 | defw 0 ;04db 00 00 . .\r | |
1013 | \r | |
1014 | fact_factor:\r | |
1015 | call do_factor ;04dd cd e4 04 . . .\r | |
1016 | ret nc ;04e0 d0 .\r | |
1017 | jp ERROR ;04e1 c3 07 01 . . .\r | |
1018 | \r | |
1019 | do_factor:\r | |
1020 | call chk_sp ;04e4 cd dd 02 . . .\r | |
1021 | call get.number ;04e7 cd aa 05 . . .\r | |
1022 | ret nc ;04ea d0 .\r | |
1023 | inc de ;04eb 13 .\r | |
1024 | ld hl,ddtz_base-1 ;04ec 21 ff ff ! . .\r | |
1025 | cp 'T' ;04ef fe 54 . T\r | |
1026 | ret z ;04f1 c8 .\r | |
1027 | ld hl,(high_load) ;04f2 2a 9c 11 * . .\r | |
1028 | cp 'H' ;04f5 fe 48 . H\r | |
1029 | ret z ;04f7 c8 .\r | |
1030 | ld hl,(max_load) ;04f8 2a 9e 11 * . .\r | |
1031 | cp 'M' ;04fb fe 4d . M\r | |
1032 | ret z ;04fd c8 .\r | |
1033 | ld hl,TPA ;04fe 21 00 01 ! . .\r | |
1034 | cp 'L' ;0501 fe 4c . L\r | |
1035 | ret z ;0503 c8 .\r | |
1036 | ld hl,(offs.@) ;0504 2a 64 00 * d .\r | |
1037 | cp '@' ;0507 fe 40 . @\r | |
1038 | ret z ;0509 c8 .\r | |
1039 | ld hl,(l0062h) ;050a 2a 62 00 * b .\r | |
1040 | cp '$' ;050d fe 24 . $\r | |
1041 | ret z ;050f c8 .\r | |
1042 | cp '-' ;0510 fe 2d . -\r | |
1043 | jr z,fact_factneg ;0512 28 61 ( a\r | |
1044 | cp '~' ;0514 fe 7e . ~\r | |
1045 | jr z,fact_factinv ;0516 28 68 ( h\r | |
1046 | cp '+' ;0518 fe 2b . +\r | |
1047 | jr z,fact_factor ;051a 28 c1 ( .\r | |
1048 | cp '^' ;051c fe 5e . ^\r | |
1049 | jr z,fact_reg.CPU ;051e 28 45 ( E\r | |
1050 | cp 'Y' ;0520 fe 59 . Y\r | |
1051 | jr z,fact_reg.Y ;0522 28 10 ( .\r | |
1052 | cp '(' ;0524 fe 28 . (\r | |
1053 | jr z,fact_mem ;0526 28 5d ( ]\r | |
1054 | cp '[' ;0528 fe 5b . [\r | |
1055 | jp z,expr_brckt ;052a ca 9d 05 . . .\r | |
1056 | cp '''' ;052d fe 27 . '\r | |
1057 | jr z,fact_factstring ;052f 28 17 ( .\r | |
1058 | dec de ;0531 1b .\r | |
1059 | scf ;0532 37 7\r | |
1060 | ret ;0533 c9 .\r | |
1061 | \r | |
1062 | fact_reg.Y:\r | |
1063 | call get.decdigit ;0534 cd 1d 06 . . .\r | |
1064 | jp c,ERROR ;0537 da 07 01 . . .\r | |
1065 | inc de ;053a 13 .\r | |
1066 | add a,a ;053b 87 .\r | |
1067 | ld hl,reg_Y ;053c 21 9e 0b ! . .\r | |
1068 | call add_hl_a ;053f cd b9 02 . . .\r | |
1069 | ld a,(hl) ;0542 7e ~\r | |
1070 | inc hl ;0543 23 #\r | |
1071 | ld h,(hl) ;0544 66 f\r | |
1072 | ld l,a ;0545 6f o\r | |
1073 | and a ;0546 a7 .\r | |
1074 | ret ;0547 c9 .\r | |
1075 | \r | |
1076 | fact_factstring:\r | |
1077 | ld hl,0 ;0548 21 00 00 ! . .\r | |
1078 | l054bh:\r | |
1079 | ld a,(de) ;054b 1a .\r | |
1080 | cp '''' ;054c fe 27 . '\r | |
1081 | jr z,l0557h ;054e 28 07 ( .\r | |
1082 | and a ;0550 a7 .\r | |
1083 | ret z ;0551 c8 .\r | |
1084 | l0552h:\r | |
1085 | ld h,l ;0552 65 e\r | |
1086 | ld l,a ;0553 6f o\r | |
1087 | inc de ;0554 13 .\r | |
1088 | jr l054bh ;0555 18 f4 . .\r | |
1089 | l0557h:\r | |
1090 | inc de ;0557 13 .\r | |
1091 | ld a,(de) ;0558 1a .\r | |
1092 | cp '''' ;0559 fe 27 . '\r | |
1093 | jr z,l0552h ;055b 28 f5 ( .\r | |
1094 | sub '.' ;055d d6 2e . .\r | |
1095 | or a ;055f b7 .\r | |
1096 | ret nz ;0560 c0 .\r | |
1097 | inc de ;0561 13 .\r | |
1098 | set 7,l ;0562 cb fd . .\r | |
1099 | ret ;0564 c9 .\r | |
1100 | \r | |
1101 | fact_reg.CPU:\r | |
1102 | call sub_0caeh ;0565 cd ae 0c . . .\r | |
1103 | jr nc,error4 ;0568 30 3d 0 =\r | |
1104 | ld a,(hl) ;056a 7e ~\r | |
1105 | inc hl ;056b 23 #\r | |
1106 | ld h,(hl) ;056c 66 f\r | |
1107 | ld l,a ;056d 6f o\r | |
1108 | and a ;056e a7 .\r | |
1109 | bit 0,c ;056f cb 41 . A\r | |
1110 | ret nz ;0571 c0 .\r | |
1111 | ld h,000h ;0572 26 00 & .\r | |
1112 | ret ;0574 c9 .\r | |
1113 | \r | |
1114 | fact_factneg:\r | |
1115 | call fact_factor ;0575 cd dd 04 . . .\r | |
1116 | dec hl ;0578 2b +\r | |
1117 | cpl.hl:\r | |
1118 | ld a,h ;0579 7c |\r | |
1119 | cpl ;057a 2f /\r | |
1120 | ld h,a ;057b 67 g\r | |
1121 | ld a,l ;057c 7d }\r | |
1122 | cpl ;057d 2f /\r | |
1123 | ld l,a ;057e 6f o\r | |
1124 | ret ;057f c9 .\r | |
1125 | \r | |
1126 | fact_factinv:\r | |
1127 | call fact_factor ;0580 cd dd 04 . . .\r | |
1128 | jr cpl.hl ;0583 18 f4 . .\r | |
1129 | \r | |
1130 | fact_mem:\r | |
1131 | call expr1 ;0585 cd c1 03 . . .\r | |
1132 | jr c,error4 ;0588 38 1d 8 .\r | |
1133 | ld a,(de) ;058a 1a .\r | |
1134 | cp ')' ;058b fe 29 . )\r | |
1135 | jr nz,error4 ;058d 20 18 .\r | |
1136 | inc de ;058f 13 .\r | |
1137 | ld a,(hl) ;0590 7e ~\r | |
1138 | inc hl ;0591 23 #\r | |
1139 | ld h,(hl) ;0592 66 f\r | |
1140 | ld l,a ;0593 6f o\r | |
1141 | ld a,(de) ;0594 1a .\r | |
1142 | inc de ;0595 13 .\r | |
1143 | cp '.' ;0596 fe 2e . .\r | |
1144 | ret z ;0598 c8 .\r | |
1145 | dec de ;0599 1b .\r | |
1146 | xor a ;059a af .\r | |
1147 | ld h,a ;059b 67 g\r | |
1148 | ret ;059c c9 .\r | |
1149 | \r | |
1150 | expr_brckt:\r | |
1151 | call expr1 ;059d cd c1 03 . . .\r | |
1152 | jr c,error4 ;05a0 38 05 8 .\r | |
1153 | ld a,(de) ;05a2 1a .\r | |
1154 | cp ']' ;05a3 fe 5d . ]\r | |
1155 | inc de ;05a5 13 .\r | |
1156 | ret z ;05a6 c8 .\r | |
1157 | error4:\r | |
1158 | jp ERROR ;05a7 c3 07 01 . . .\r | |
1159 | \r | |
1160 | get.number:\r | |
1161 | call get.hexdigit ;05aa cd 11 06 . . .\r | |
1162 | ret c ;05ad d8 .\r | |
1163 | push de ;05ae d5 .\r | |
1164 | test_number:\r | |
1165 | inc de ;05af 13 .\r | |
1166 | call get.hexdigit ;05b0 cd 11 06 . . .\r | |
1167 | jr nc,test_number ;05b3 30 fa 0 .\r | |
1168 | pop de ;05b5 d1 .\r | |
1169 | cp '.' ;05b6 fe 2e . .\r | |
1170 | jr z,get_dec_number ;05b8 28 36 ( 6\r | |
1171 | cp '"' ;05ba fe 22 . "\r | |
1172 | jr z,get_bin_number ;05bc 28 17 ( .\r | |
1173 | ld hl,0 ;05be 21 00 00 ! . .\r | |
1174 | next_hexdigit:\r | |
1175 | call get.hexdigit ;05c1 cd 11 06 . . .\r | |
1176 | jr c,hexnum_done ;05c4 38 0a 8 .\r | |
1177 | add hl,hl ;05c6 29 )\r | |
1178 | add hl,hl ;05c7 29 )\r | |
1179 | add hl,hl ;05c8 29 )\r | |
1180 | add hl,hl ;05c9 29 )\r | |
1181 | call add_hl_a ;05ca cd b9 02 . . .\r | |
1182 | inc de ;05cd 13 .\r | |
1183 | jr next_hexdigit ;05ce 18 f1 . .\r | |
1184 | \r | |
1185 | hexnum_done:\r | |
1186 | xor 'H' ;05d0 ee 48 . H\r | |
1187 | ret nz ;05d2 c0 .\r | |
1188 | inc de ;05d3 13 .\r | |
1189 | ret ;05d4 c9 .\r | |
1190 | \r | |
1191 | get_bin_number:\r | |
1192 | ld hl,0 ;05d5 21 00 00 ! . .\r | |
1193 | next_bindigit:\r | |
1194 | call get.bindigit ;05d8 cd 22 06 . " .\r | |
1195 | l05dbh:\r | |
1196 | inc de ;05db 13 .\r | |
1197 | jr c,l05e4h ;05dc 38 06 8 .\r | |
1198 | add hl,hl ;05de 29 )\r | |
1199 | call add_hl_a ;05df cd b9 02 . . .\r | |
1200 | jr next_bindigit ;05e2 18 f4 . .\r | |
1201 | l05e4h:\r | |
1202 | cp '"' ;05e4 fe 22 . "\r | |
1203 | jp nz,ERROR ;05e6 c2 07 01 . . .\r | |
1204 | call get.bindigit ;05e9 cd 22 06 . " .\r | |
1205 | jr nc,l05dbh ;05ec 30 ed 0 .\r | |
1206 | or a ;05ee b7 .\r | |
1207 | ret ;05ef c9 .\r | |
1208 | \r | |
1209 | get_dec_number:\r | |
1210 | ld hl,0 ;05f0 21 00 00 ! . .\r | |
1211 | next_decdigit:\r | |
1212 | call get.decdigit ;05f3 cd 1d 06 . . .\r | |
1213 | inc de ;05f6 13 .\r | |
1214 | jr c,decnum_done ;05f7 38 0d 8 .\r | |
1215 | push bc ;05f9 c5 .\r | |
1216 | add hl,hl ;05fa 29 )\r | |
1217 | ld b,h ;05fb 44 D\r | |
1218 | ld c,l ;05fc 4d M\r | |
1219 | add hl,hl ;05fd 29 )\r | |
1220 | add hl,hl ;05fe 29 )\r | |
1221 | add hl,bc ;05ff 09 .\r | |
1222 | pop bc ;0600 c1 .\r | |
1223 | call add_hl_a ;0601 cd b9 02 . . .\r | |
1224 | jr next_decdigit ;0604 18 ed . .\r | |
1225 | decnum_done:\r | |
1226 | cp '.' ;0606 fe 2e . .\r | |
1227 | ret z ;0608 c8 .\r | |
1228 | jp ERROR ;0609 c3 07 01 . . .\r | |
1229 | \r | |
1230 | sub_060ch:\r | |
1231 | ld a,(de) ;060c 1a .\r | |
1232 | cp '[' ;060d fe 5b . [\r | |
1233 | jr l0614h ;060f 18 03 . .\r | |
1234 | \r | |
1235 | get.hexdigit:\r | |
1236 | ld a,(de) ;0611 1a .\r | |
1237 | hex_digit:\r | |
1238 | cp 'F'+1 ;0612 fe 47 . G\r | |
1239 | l0614h:\r | |
1240 | ccf ;0614 3f ?\r | |
1241 | ret c ;0615 d8 .\r | |
1242 | cp 'A' ;0616 fe 41 . A\r | |
1243 | jr c,l061eh ;0618 38 04 8 .\r | |
1244 | sub 'A'-10 ;061a d6 37 . 7\r | |
1245 | ret ;061c c9 .\r | |
1246 | \r | |
1247 | get.decdigit:\r | |
1248 | ld a,(de) ;061d 1a .\r | |
1249 | l061eh:\r | |
1250 | cp '9'+1 ;061e fe 3a . :\r | |
1251 | jr l0625h ;0620 18 03 . .\r | |
1252 | \r | |
1253 | get.bindigit:\r | |
1254 | ld a,(de) ;0622 1a .\r | |
1255 | cp '1'+1 ;0623 fe 32 . 2\r | |
1256 | l0625h:\r | |
1257 | ccf ;0625 3f ?\r | |
1258 | ret c ;0626 d8 .\r | |
1259 | cp '0' ;0627 fe 30 . 0\r | |
1260 | ret c ;0629 d8 .\r | |
1261 | sub '0' ;062a d6 30 . 0\r | |
1262 | ret ;062c c9 .\r | |
1263 | \r | |
25a690e5 | 1264 | p_cpustat0:\r |
0c4244e5 | 1265 | call assert_eol ;062d cd d6 02 . . .\r |
25a690e5 L |
1266 | p_cpustat:\r |
1267 | call p_f ;0630 cd 6e 06 . n .\r | |
0c4244e5 L |
1268 | call outbl2 ;0633 cd 9c 02 . . .\r |
1269 | ld hl,b_06e9_start ;0636 21 e9 06 ! . .\r | |
1270 | ld de,b_0709_start ;0639 11 09 07 . . .\r | |
1271 | ld b,6 ;063c 06 06 . .\r | |
1272 | l063eh:\r | |
25a690e5 | 1273 | call p_regs ;063e cd b2 06 . . .\r |
0c4244e5 L |
1274 | djnz l063eh ;0641 10 fb . .\r |
1275 | push hl ;0643 e5 .\r | |
1276 | push de ;0644 d5 .\r | |
1277 | ld iy,(REG.PC) ;0645 fd 2a 60 00 . * ` .\r | |
25a690e5 | 1278 | call p_disas_instr ;0649 cd 65 19 . e .\r |
0c4244e5 L |
1279 | exx ;064c d9 .\r |
1280 | ex af,af' ;064d 08 .\r | |
1281 | call crlf ;064e cd a3 02 . . .\r | |
25a690e5 | 1282 | call p_f2 ;0651 cd 81 06 . . .\r |
0c4244e5 L |
1283 | call outbl2 ;0654 cd 9c 02 . . .\r |
1284 | pop de ;0657 d1 .\r | |
1285 | pop hl ;0658 e1 .\r | |
1286 | ld b,7 ;0659 06 07 . .\r | |
1287 | l065bh:\r | |
25a690e5 | 1288 | call p_regs ;065b cd b2 06 . . .\r |
0c4244e5 L |
1289 | djnz l065bh ;065e 10 fb . .\r |
1290 | exx ;0660 d9 .\r | |
1291 | ex af,af' ;0661 08 .\r | |
1292 | and a ;0662 a7 .\r | |
1293 | jr z,l066bh ;0663 28 06 ( .\r | |
1294 | call outbl6 ;0665 cd 96 02 . . .\r | |
25a690e5 | 1295 | call p_offset ;0668 cd 49 19 . I .\r |
0c4244e5 L |
1296 | l066bh:\r |
1297 | jp crlf ;066b c3 a3 02 . . .\r | |
1298 | \r | |
25a690e5 | 1299 | p_f:\r |
0c4244e5 | 1300 | ld a,(reg.f) ;066e 3a 54 00 : T .\r |
25a690e5 | 1301 | call p_flags ;0671 cd 8a 06 . . .\r |
0c4244e5 L |
1302 | ld a,(reg.iff) ;0674 3a 5e 00 : ^ .\r |
1303 | cp 0f3h ;0677 fe f3 . .\r | |
1304 | jp z,outbl ;0679 ca 9f 02 . . .\r | |
1305 | ld a,'E' ;067c 3e 45 > E\r | |
1306 | jp outchar ;067e c3 5d 02 . ] .\r | |
25a690e5 | 1307 | p_f2:\r |
0c4244e5 | 1308 | ld a,(reg.f2) ;0681 3a 4c 00 : L .\r |
25a690e5 | 1309 | call p_flags ;0684 cd 8a 06 . . .\r |
0c4244e5 | 1310 | jp outbl ;0687 c3 9f 02 . . .\r |
25a690e5 | 1311 | p_flags:\r |
0c4244e5 L |
1312 | ld b,a ;068a 47 G\r |
1313 | ld a,'S' ;068b 3e 53 > S\r | |
1314 | call sub_06aah ;068d cd aa 06 . . .\r | |
1315 | ld a,'Z' ;0690 3e 5a > Z\r | |
1316 | call sub_06aah ;0692 cd aa 06 . . .\r | |
1317 | rl b ;0695 cb 10 . .\r | |
1318 | ld a,'H' ;0697 3e 48 > H\r | |
1319 | call sub_06aah ;0699 cd aa 06 . . .\r | |
1320 | rl b ;069c cb 10 . .\r | |
1321 | ld a,'V' ;069e 3e 56 > V\r | |
1322 | call sub_06aah ;06a0 cd aa 06 . . .\r | |
1323 | ld a,'N' ;06a3 3e 4e > N\r | |
1324 | call sub_06aah ;06a5 cd aa 06 . . .\r | |
1325 | ld a,'C' ;06a8 3e 43 > C\r | |
1326 | sub_06aah:\r | |
1327 | rl b ;06aa cb 10 . .\r | |
1328 | jp c,outchar ;06ac da 5d 02 . ] .\r | |
1329 | jp outbl ;06af c3 9f 02 . . .\r | |
25a690e5 L |
1330 | \r |
1331 | p_regs:\r | |
0c4244e5 L |
1332 | push bc ;06b2 c5 .\r |
1333 | push de ;06b3 d5 .\r | |
1334 | call pstr ;06b4 cd 88 02 . . .\r | |
1335 | ld a,'=' ;06b7 3e 3d > =\r | |
1336 | call outchar ;06b9 cd 5d 02 . ] .\r | |
1337 | ex (sp),hl ;06bc e3 .\r | |
1338 | ld e,(hl) ;06bd 5e ^\r | |
1339 | inc hl ;06be 23 #\r | |
1340 | ld d,(hl) ;06bf 56 V\r | |
1341 | inc hl ;06c0 23 #\r | |
1342 | ld a,(hl) ;06c1 7e ~\r | |
1343 | inc hl ;06c2 23 #\r | |
1344 | push hl ;06c3 e5 .\r | |
1345 | and a ;06c4 a7 .\r | |
1346 | jr z,l06deh ;06c5 28 17 ( .\r | |
1347 | push af ;06c7 f5 .\r | |
1348 | ld a,(de) ;06c8 1a .\r | |
1349 | ld l,a ;06c9 6f o\r | |
1350 | inc de ;06ca 13 .\r | |
1351 | ld a,(de) ;06cb 1a .\r | |
1352 | ld h,a ;06cc 67 g\r | |
1353 | pop af ;06cd f1 .\r | |
1354 | dec a ;06ce 3d =\r | |
1355 | jr z,l06d9h ;06cf 28 08 ( .\r | |
1356 | call out.hl.@ ;06d1 cd a4 01 . . .\r | |
1357 | call z,outbl6 ;06d4 cc 96 02 . . .\r | |
1358 | jr l06e2h ;06d7 18 09 . .\r | |
1359 | l06d9h:\r | |
1360 | call out_hl ;06d9 cd 13 02 . . .\r | |
1361 | jr l06e2h ;06dc 18 04 . .\r | |
1362 | l06deh:\r | |
1363 | ld a,(de) ;06de 1a .\r | |
1364 | call out_hex ;06df cd 18 02 . . .\r | |
1365 | l06e2h:\r | |
1366 | call outbl ;06e2 cd 9f 02 . . .\r | |
1367 | pop de ;06e5 d1 .\r | |
1368 | pop hl ;06e6 e1 .\r | |
1369 | pop bc ;06e7 c1 .\r | |
1370 | ret ;06e8 c9 .\r | |
1371 | \r | |
1372 | b_06e9_start:\r | |
1373 | DC 'A '\r | |
1374 | DC 'BC '\r | |
1375 | DC 'DE '\r | |
1376 | DC 'HL '\r | |
1377 | DC 'SP'\r | |
1378 | DC 'PC'\r | |
1379 | DC 'A'''\r | |
1380 | DC 'BC'''\r | |
1381 | DC 'DE'''\r | |
1382 | DC 'HL'''\r | |
1383 | DC 'IX'\r | |
1384 | DC 'IY'\r | |
1385 | DC 'I'\r | |
1386 | DB 0\r | |
1387 | \r | |
1388 | b_0709_start:\r | |
1389 | defw reg.a ;0709 55 00 U .\r | |
1390 | defb 000h ;070b 00 .\r | |
1391 | defw reg.c ;070c 56 00 V .\r | |
1392 | defb 001h ;070e 01 .\r | |
1393 | defw reg.e ;070f 58 00 X .\r | |
1394 | defb 001h ;0711 01 .\r | |
1395 | defw reg.l ;0712 5a 00 Z .\r | |
1396 | defb 001h ;0714 01 .\r | |
1397 | defw reg_sp ;0715 5c 00 \ .\r | |
1398 | defb 001h ;0717 01 .\r | |
1399 | defw REG.PC ;0718 60 00 ` .\r | |
1400 | defb 002h ;071a 02 .\r | |
1401 | defw reg.a2 ;071b 4d 00 M .\r | |
1402 | defb 000h ;071d 00 .\r | |
1403 | defw reg.c2 ;071e 4a 00 J .\r | |
1404 | defb 001h ;0720 01 .\r | |
1405 | defw reg.e2 ;0721 48 00 H .\r | |
1406 | defb 001h ;0723 01 .\r | |
1407 | defw reg.l2 ;0724 46 00 F .\r | |
1408 | defb 001h ;0726 01 .\r | |
1409 | defw reg.ix ;0727 52 00 R .\r | |
1410 | defb 001h ;0729 01 .\r | |
1411 | defw reg.iy ;072a 50 00 P .\r | |
1412 | defb 001h ;072c 01 .\r | |
1413 | defw reg.i ;072d 4f 00 O .\r | |
1414 | defb 000h ;072f 00 .\r | |
1415 | defb 000h ;0730 00 .\r | |
1416 | \r | |
1417 | cmd_G:\r | |
1418 | sub a ;0731 97 .\r | |
1419 | ld (trace_call_flag),a ;0732 32 e3 21 2 . !\r | |
1420 | ld (l0941h),a ;0735 32 41 09 2 A .\r | |
1421 | call expr ;0738 cd be 03 . . .\r | |
1422 | jr c,l0740h ;073b 38 03 8 .\r | |
1423 | ld (REG.PC),hl ;073d 22 60 00 " ` .\r | |
1424 | l0740h:\r | |
1425 | call skipbl ;0740 cd bf 02 . . .\r | |
1426 | jp z,user_go ;0743 ca 25 0a . % .\r | |
1427 | cp ';' ;0746 fe 3b . ;\r | |
1428 | jp nz,ERROR ;0748 c2 07 01 . . .\r | |
1429 | inc de ;074b 13 .\r | |
1430 | ld a,002h ;074c 3e 02 > .\r | |
1431 | call bp_enter ;074e cd 10 08 . . .\r | |
1432 | jp user_go ;0751 c3 25 0a . % .\r | |
1433 | \r | |
1434 | bp_clr_temporary:\r | |
1435 | ld b,BP_CNT ;0754 06 0c . .\r | |
1436 | ld ix,bp_tab ;0756 dd 21 b8 0a . ! . .\r | |
1437 | l075ah:\r | |
1438 | ld a,(ix+000h) ;075a dd 7e 00 . ~ .\r | |
1439 | and 0f1h ;075d e6 f1 . .\r | |
1440 | ld (ix+000h),a ;075f dd 77 00 . w .\r | |
1441 | call bp_clr_condition ;0762 cd 5f 0a . _ .\r | |
1442 | ld de,BP_SIZE ;0765 11 08 00 . . .\r | |
1443 | add ix,de ;0768 dd 19 . .\r | |
1444 | djnz l075ah ;076a 10 ee . .\r | |
1445 | ret ;076c c9 .\r | |
1446 | \r | |
1447 | cmd_B:\r | |
1448 | call skipbl ;076d cd bf 02 . . .\r | |
1449 | jr z,l07b7h ;0770 28 45 ( E\r | |
1450 | inc de ;0772 13 .\r | |
1451 | cp 'X' ;0773 fe 58 . X\r | |
1452 | jr z,l077dh ;0775 28 06 ( .\r | |
1453 | dec de ;0777 1b .\r | |
1454 | ld a,001h ;0778 3e 01 > .\r | |
1455 | jp bp_enter ;077a c3 10 08 . . .\r | |
1456 | l077dh:\r | |
1457 | call skipbl ;077d cd bf 02 . . .\r | |
1458 | jr z,bp_clr_all ;0780 28 10 ( .\r | |
1459 | l0782h:\r | |
1460 | call expr ;0782 cd be 03 . . .\r | |
1461 | jp c,assert_eol ;0785 da d6 02 . . .\r | |
1462 | push de ;0788 d5 .\r | |
1463 | call bp_clr ;0789 cd 93 07 . . .\r | |
1464 | pop de ;078c d1 .\r | |
1465 | call next_arg ;078d cd ca 02 . . .\r | |
1466 | jr l0782h ;0790 18 f0 . .\r | |
1467 | \r | |
1468 | bp_clr_all:\r | |
1469 | scf ;0792 37 7\r | |
1470 | bp_clr:\r | |
1471 | ld b,BP_CNT ;0793 06 0c . .\r | |
1472 | ld ix,bp_tab ;0795 dd 21 b8 0a . ! . .\r | |
1473 | l0799h:\r | |
1474 | push af ;0799 f5 .\r | |
1475 | jr c,l07a7h ;079a 38 0b 8 .\r | |
1476 | ld e,(ix+002h) ;079c dd 5e 02 . ^ .\r | |
1477 | ld d,(ix+003h) ;079f dd 56 03 . V .\r | |
1478 | call cp_hl_de ;07a2 cd ee 02 . . .\r | |
1479 | jr nz,l07aeh ;07a5 20 07 .\r | |
1480 | l07a7h:\r | |
1481 | ld (ix+000h),000h ;07a7 dd 36 00 00 . 6 . .\r | |
1482 | call bp_clr_condition ;07ab cd 5f 0a . _ .\r | |
1483 | l07aeh:\r | |
1484 | ld de,BP_SIZE ;07ae 11 08 00 . . .\r | |
1485 | add ix,de ;07b1 dd 19 . .\r | |
1486 | pop af ;07b3 f1 .\r | |
1487 | djnz l0799h ;07b4 10 e3 . .\r | |
1488 | ret ;07b6 c9 .\r | |
1489 | \r | |
1490 | l07b7h:\r | |
1491 | ld b,BP_CNT ;07b7 06 0c . .\r | |
1492 | ld ix,bp_tab ;07b9 dd 21 b8 0a . ! . .\r | |
1493 | l07bdh:\r | |
1494 | bit 0,(ix+000h) ;07bd dd cb 00 46 . . . F\r | |
1495 | jr z,l0808h ;07c1 28 45 ( E\r | |
1496 | ld a,'R' ;07c3 3e 52 > R\r | |
1497 | bit 4,(ix+000h) ;07c5 dd cb 00 66 . . . f\r | |
1498 | jr nz,l07cdh ;07c9 20 02 .\r | |
1499 | ld a,' ' ;07cb 3e 20 >\r | |
1500 | l07cdh:\r | |
1501 | call outchar ;07cd cd 5d 02 . ] .\r | |
1502 | call outbl ;07d0 cd 9f 02 . . .\r | |
1503 | ld l,(ix+002h) ;07d3 dd 6e 02 . n .\r | |
1504 | ld h,(ix+003h) ;07d6 dd 66 03 . f .\r | |
1505 | call out.hl.@ ;07d9 cd a4 01 . . .\r | |
1506 | call outbl2 ;07dc cd 9c 02 . . .\r | |
1507 | ld a,':' ;07df 3e 3a > :\r | |
1508 | call outchar ;07e1 cd 5d 02 . ] .\r | |
1509 | ld l,(ix+004h) ;07e4 dd 6e 04 . n .\r | |
1510 | ld h,(ix+005h) ;07e7 dd 66 05 . f .\r | |
1511 | call out_hl ;07ea cd 13 02 . . .\r | |
1512 | ld l,(ix+006h) ;07ed dd 6e 06 . n .\r | |
1513 | ld h,(ix+007h) ;07f0 dd 66 07 . f .\r | |
1514 | ld a,h ;07f3 7c |\r | |
1515 | or l ;07f4 b5 .\r | |
1516 | jr z,l0805h ;07f5 28 0e ( .\r | |
1517 | call outbl4 ;07f7 cd 99 02 . . .\r | |
1518 | ld a,'I' ;07fa 3e 49 > I\r | |
1519 | call outchar ;07fc cd 5d 02 . ] .\r | |
1520 | call outbl2 ;07ff cd 9c 02 . . .\r | |
1521 | call pstr ;0802 cd 88 02 . . .\r | |
1522 | l0805h:\r | |
1523 | call crlf ;0805 cd a3 02 . . .\r | |
1524 | l0808h:\r | |
1525 | ld de,BP_SIZE ;0808 11 08 00 . . .\r | |
1526 | add ix,de ;080b dd 19 . .\r | |
1527 | djnz l07bdh ;080d 10 ae . .\r | |
1528 | ret ;080f c9 .\r | |
1529 | \r | |
1530 | ; Add break points to list\r | |
1531 | ; A = 1 Permanent (B command)\r | |
1532 | ; A = 2 Temporary (G command)\r | |
1533 | \r | |
1534 | bp_enter:\r | |
1535 | ld b,a ;0810 47 G\r | |
1536 | call skipbl ;0811 cd bf 02 . . .\r | |
1537 | ret z ;0814 c8 .\r | |
1538 | cp 'R' ;0815 fe 52 . R\r | |
1539 | jr nz,l081ch ;0817 20 03 .\r | |
1540 | inc de ;0819 13 .\r | |
1541 | set 4,b ;081a cb e0 . .\r | |
1542 | l081ch:\r | |
1543 | push bc ;081c c5 .\r | |
1544 | call expr ;081d cd be 03 . . .\r | |
1545 | jp c,ERROR ;0820 da 07 01 . . .\r | |
1546 | pop bc ;0823 c1 .\r | |
1547 | bit 0,b ;0824 cb 40 . @\r | |
1548 | push bc ;0826 c5 .\r | |
1549 | push de ;0827 d5 .\r | |
1550 | push hl ;0828 e5 .\r | |
1551 | call nz,bp_clr ;0829 c4 93 07 . . .\r | |
1552 | pop hl ;082c e1 .\r | |
1553 | call bp_get_freeslot ;082d cd 54 08 . T .\r | |
1554 | pop de ;0830 d1 .\r | |
1555 | ld (ix+002h),l ;0831 dd 75 02 . u .\r | |
1556 | ld (ix+003h),h ;0834 dd 74 03 . t .\r | |
1557 | call bp_get_count ;0837 cd 6c 08 . l .\r | |
1558 | ld (ix+004h),l ;083a dd 75 04 . u .\r | |
1559 | ld (ix+005h),h ;083d dd 74 05 . t .\r | |
1560 | call bp_get_condition ;0840 cd 7d 08 . } .\r | |
1561 | ld (ix+006h),l ;0843 dd 75 06 . u .\r | |
1562 | ld (ix+007h),h ;0846 dd 74 07 . t .\r | |
1563 | call next_arg ;0849 cd ca 02 . . .\r | |
1564 | pop af ;084c f1 .\r | |
1565 | ld (ix+000h),a ;084d dd 77 00 . w .\r | |
1566 | and 00fh ;0850 e6 0f . .\r | |
1567 | jr bp_enter ;0852 18 bc . .\r | |
1568 | \r | |
1569 | bp_get_freeslot:\r | |
1570 | ld b,BP_CNT ;0854 06 0c . .\r | |
1571 | ld ix,bp_tab ;0856 dd 21 b8 0a . ! . .\r | |
1572 | l085ah:\r | |
1573 | ld a,(ix+000h) ;085a dd 7e 00 . ~ .\r | |
1574 | and 00fh ;085d e6 0f . .\r | |
1575 | ret z ;085f c8 .\r | |
1576 | push bc ;0860 c5 .\r | |
1577 | ld bc,BP_SIZE ;0861 01 08 00 . . .\r | |
1578 | add ix,bc ;0864 dd 09 . .\r | |
1579 | pop bc ;0866 c1 .\r | |
1580 | djnz l085ah ;0867 10 f1 . .\r | |
1581 | jp ERROR ;0869 c3 07 01 . . .\r | |
1582 | \r | |
1583 | bp_get_count:\r | |
1584 | call skipbl ;086c cd bf 02 . . .\r | |
1585 | ld hl,1 ;086f 21 01 00 ! . .\r | |
1586 | cp ':' ;0872 fe 3a . :\r | |
1587 | ret nz ;0874 c0 .\r | |
1588 | inc de ;0875 13 .\r | |
1589 | call expr ;0876 cd be 03 . . .\r | |
1590 | jp c,ERROR ;0879 da 07 01 . . .\r | |
1591 | ret ;087c c9 .\r | |
1592 | \r | |
1593 | bp_get_condition:\r | |
1594 | call skipbl ;087d cd bf 02 . . .\r | |
1595 | cp 'I' ;0880 fe 49 . I\r | |
1596 | ld hl,0 ;0882 21 00 00 ! . .\r | |
1597 | ret nz ;0885 c0 .\r | |
1598 | inc de ;0886 13 .\r | |
1599 | call skipbl ;0887 cd bf 02 . . .\r | |
1600 | push de ;088a d5 .\r | |
1601 | call expr ;088b cd be 03 . . .\r | |
1602 | jp c,ERROR ;088e da 07 01 . . .\r | |
1603 | ex de,hl ;0891 eb .\r | |
1604 | pop de ;0892 d1 .\r | |
1605 | push de ;0893 d5 .\r | |
1606 | sbc hl,de ;0894 ed 52 . R\r | |
1607 | ld b,h ;0896 44 D\r | |
1608 | ld c,l ;0897 4d M\r | |
1609 | ld hl,(expr_p1) ;0898 2a 18 0b * . .\r | |
1610 | push hl ;089b e5 .\r | |
1611 | add hl,bc ;089c 09 .\r | |
1612 | ld de,expr_bufe ;089d 11 9c 0b . . .\r | |
1613 | call cp_hl_de ;08a0 cd ee 02 . . .\r | |
1614 | jp nc,ERROR ;08a3 d2 07 01 . . .\r | |
1615 | pop hl ;08a6 e1 .\r | |
1616 | ld (expr_p2),hl ;08a7 22 1a 0b " . .\r | |
1617 | pop de ;08aa d1 .\r | |
1618 | ex de,hl ;08ab eb .\r | |
1619 | ldir ;08ac ed b0 . .\r | |
1620 | xor a ;08ae af .\r | |
1621 | ld (de),a ;08af 12 .\r | |
1622 | inc de ;08b0 13 .\r | |
1623 | ex de,hl ;08b1 eb .\r | |
1624 | ld (expr_p1),hl ;08b2 22 18 0b " . .\r | |
1625 | ld hl,(expr_p2) ;08b5 2a 1a 0b * . .\r | |
1626 | ret ;08b8 c9 .\r | |
1627 | \r | |
1628 | bpddtz:\r | |
1629 | ld (reg.l),hl ;08b9 22 5a 00 " Z .\r | |
1630 | pop hl ;08bc e1 .\r | |
1631 | dec hl ;08bd 2b +\r | |
1632 | ld (REG.PC),hl ;08be 22 60 00 " ` .\r | |
1633 | ld (reg_sp),sp ;08c1 ed 73 5c 00 . s \ .\r | |
1634 | ld sp,reg.l ;08c5 31 5a 00 1 Z .\r | |
1635 | push de ;08c8 d5 .\r | |
1636 | push bc ;08c9 c5 .\r | |
1637 | push af ;08ca f5 .\r | |
1638 | push ix ;08cb dd e5 . .\r | |
1639 | push iy ;08cd fd e5 . .\r | |
1640 | ld a,i ;08cf ed 57 . W\r | |
1641 | call sub_0004h ;08d1 cd 04 00 . . .\r | |
1642 | ld h,a ;08d4 67 g\r | |
1643 | ld l,000h ;08d5 2e 00 . .\r | |
1644 | push hl ;08d7 e5 .\r | |
1645 | ld a,0f3h ;08d8 3e f3 > .\r | |
1646 | jp po,l08dfh ;08da e2 df 08 . . .\r | |
1647 | ld a,0fbh ;08dd 3e fb > .\r | |
1648 | l08dfh:\r | |
1649 | ld (reg.iff),a ;08df 32 5e 00 2 ^ .\r | |
1650 | ex af,af' ;08e2 08 .\r | |
1651 | push af ;08e3 f5 .\r | |
1652 | exx ;08e4 d9 .\r | |
1653 | push bc ;08e5 c5 .\r | |
1654 | push de ;08e6 d5 .\r | |
1655 | push hl ;08e7 e5 .\r | |
1656 | call sub_097ah ;08e8 cd 7a 09 . z .\r | |
1657 | ld a,(b_21e2_start) ;08eb 3a e2 21 : . !\r | |
1658 | dec a ;08ee 3d =\r | |
1659 | jr z,l090bh ;08ef 28 1a ( .\r | |
1660 | call inchar ;08f1 cd 73 02 . s .\r | |
1661 | jr c,l0902h ;08f4 38 0c 8 .\r | |
1662 | call sub_0913h ;08f6 cd 13 09 . . .\r | |
1663 | and a ;08f9 a7 .\r | |
1664 | jp z,user_go ;08fa ca 25 0a . % .\r | |
1665 | and 083h ;08fd e6 83 . .\r | |
1666 | jp z,l2151h ;08ff ca 51 21 . Q !\r | |
1667 | l0902h:\r | |
1668 | call bp_clr_temporary ;0902 cd 54 07 . T .\r | |
25a690e5 | 1669 | call p_cpustat ;0905 cd 30 06 . 0 .\r |
0c4244e5 L |
1670 | jp mainloop ;0908 c3 bd 00 . . .\r |
1671 | \r | |
1672 | l090bh:\r | |
1673 | ld (b_21e2_start),a ;090b 32 e2 21 2 . !\r | |
1674 | ld c,007h ;090e 0e 07 . .\r | |
1675 | jp l0a41h ;0910 c3 41 0a . A .\r | |
1676 | \r | |
1677 | sub_0913h:\r | |
1678 | ld a,080h ;0913 3e 80 > .\r | |
1679 | ex af,af' ;0915 08 .\r | |
1680 | sub a ;0916 97 .\r | |
1681 | ld (l0941h),a ;0917 32 41 09 2 A .\r | |
1682 | ld b,BP_CNT ;091a 06 0c . .\r | |
1683 | ld ix,bp_tab ;091c dd 21 b8 0a . ! . .\r | |
1684 | l0920h:\r | |
1685 | ld a,(ix+000h) ;0920 dd 7e 00 . ~ .\r | |
1686 | and 007h ;0923 e6 07 . .\r | |
1687 | jr z,l0938h ;0925 28 11 ( .\r | |
1688 | ld e,(ix+002h) ;0927 dd 5e 02 . ^ .\r | |
1689 | ld d,(ix+003h) ;092a dd 56 03 . V .\r | |
1690 | ld hl,(REG.PC) ;092d 2a 60 00 * ` .\r | |
1691 | call cp_hl_de ;0930 cd ee 02 . . .\r | |
1692 | push bc ;0933 c5 .\r | |
1693 | call z,sub_0942h ;0934 cc 42 09 . B .\r | |
1694 | pop bc ;0937 c1 .\r | |
1695 | l0938h:\r | |
1696 | ld de,BP_SIZE ;0938 11 08 00 . . .\r | |
1697 | add ix,de ;093b dd 19 . .\r | |
1698 | djnz l0920h ;093d 10 e1 . .\r | |
1699 | ex af,af' ;093f 08 .\r | |
1700 | ret ;0940 c9 .\r | |
1701 | \r | |
1702 | l0941h:\r | |
1703 | db 0 ;0941 00 .\r | |
1704 | \r | |
1705 | sub_0942h:\r | |
1706 | ex af,af' ;0942 08 .\r | |
1707 | res 7,a ;0943 cb bf . .\r | |
1708 | ex af,af' ;0945 08 .\r | |
1709 | ld e,(ix+006h) ;0946 dd 5e 06 . ^ .\r | |
1710 | ld d,(ix+007h) ;0949 dd 56 07 . V .\r | |
1711 | ld a,d ;094c 7a z\r | |
1712 | or e ;094d b3 .\r | |
1713 | ld hl,0ffffh ;094e 21 ff ff ! . .\r | |
1714 | call nz,expr ;0951 c4 be 03 . . .\r | |
1715 | ld a,h ;0954 7c |\r | |
1716 | or l ;0955 b5 .\r | |
1717 | jr z,l0969h ;0956 28 11 ( .\r | |
1718 | ld e,(ix+004h) ;0958 dd 5e 04 . ^ .\r | |
1719 | ld d,(ix+005h) ;095b dd 56 05 . V .\r | |
1720 | dec de ;095e 1b .\r | |
1721 | ld a,d ;095f 7a z\r | |
1722 | or e ;0960 b3 .\r | |
1723 | jr z,l0974h ;0961 28 11 ( .\r | |
1724 | ld (ix+004h),e ;0963 dd 73 04 . s .\r | |
1725 | ld (ix+005h),d ;0966 dd 72 05 . r .\r | |
1726 | l0969h:\r | |
1727 | bit 4,(ix+000h) ;0969 dd cb 00 66 . . . f\r | |
1728 | ret z ;096d c8 .\r | |
1729 | ld a,001h ;096e 3e 01 > .\r | |
1730 | ld (l0941h),a ;0970 32 41 09 2 A .\r | |
1731 | ret ;0973 c9 .\r | |
1732 | l0974h:\r | |
1733 | ex af,af' ;0974 08 .\r | |
1734 | or (ix+000h) ;0975 dd b6 00 . . .\r | |
1735 | ex af,af' ;0978 08 .\r | |
1736 | ret ;0979 c9 .\r | |
1737 | \r | |
1738 | sub_097ah:\r | |
1739 | ld b,BP_CNT ;097a 06 0c . .\r | |
1740 | ld ix,bp_tab ;097c dd 21 b8 0a . ! . .\r | |
1741 | l0980h:\r | |
1742 | bit 5,(ix+000h) ;0980 dd cb 00 6e . . . n\r | |
1743 | res 5,(ix+000h) ;0984 dd cb 00 ae . . . .\r | |
1744 | jr z,l099ah ;0988 28 10 ( .\r | |
1745 | ld l,(ix+002h) ;098a dd 6e 02 . n .\r | |
1746 | ld h,(ix+003h) ;098d dd 66 03 . f .\r | |
1747 | ld a,(l0003h) ;0990 3a 03 00 : . .\r | |
1748 | cp (hl) ;0993 be .\r | |
1749 | jr nz,l099ah ;0994 20 04 .\r | |
1750 | ld a,(ix+001h) ;0996 dd 7e 01 . ~ .\r | |
1751 | ld (hl),a ;0999 77 w\r | |
1752 | l099ah:\r | |
1753 | res 3,(ix+000h) ;099a dd cb 00 9e . . . .\r | |
1754 | ld de,BP_SIZE ;099e 11 08 00 . . .\r | |
1755 | add ix,de ;09a1 dd 19 . .\r | |
1756 | djnz l0980h ;09a3 10 db . .\r | |
1757 | ret ;09a5 c9 .\r | |
1758 | \r | |
1759 | sub_09a6h:\r | |
1760 | ld b,BP_CNT ;09a6 06 0c . .\r | |
1761 | ld ix,bp_tab ;09a8 dd 21 b8 0a . ! . .\r | |
1762 | l09ach:\r | |
1763 | ld a,(ix+000h) ;09ac dd 7e 00 . ~ .\r | |
1764 | and 003h ;09af e6 03 . .\r | |
1765 | jr z,l09c0h ;09b1 28 0d ( .\r | |
1766 | ld e,(ix+002h) ;09b3 dd 5e 02 . ^ .\r | |
1767 | ld d,(ix+003h) ;09b6 dd 56 03 . V .\r | |
1768 | ld hl,(REG.PC) ;09b9 2a 60 00 * ` .\r | |
1769 | call cp_hl_de ;09bc cd ee 02 . . .\r | |
1770 | ret z ;09bf c8 .\r | |
1771 | l09c0h:\r | |
1772 | ld de,BP_SIZE ;09c0 11 08 00 . . .\r | |
1773 | add ix,de ;09c3 dd 19 . .\r | |
1774 | djnz l09ach ;09c5 10 e5 . .\r | |
1775 | sub a ;09c7 97 .\r | |
1776 | inc a ;09c8 3c <\r | |
1777 | ret ;09c9 c9 .\r | |
1778 | \r | |
1779 | sub_09cah:\r | |
1780 | call bp_get_freeslot ;09ca cd 54 08 . T .\r | |
1781 | ld (ix+004h),001h ;09cd dd 36 04 01 . 6 . .\r | |
1782 | ld (ix+005h),000h ;09d1 dd 36 05 00 . 6 . .\r | |
1783 | ld (ix+002h),l ;09d5 dd 75 02 . u .\r | |
1784 | ld (ix+003h),h ;09d8 dd 74 03 . t .\r | |
1785 | ld (ix+006h),000h ;09db dd 36 06 00 . 6 . .\r | |
1786 | ld (ix+007h),000h ;09df dd 36 07 00 . 6 . .\r | |
1787 | ld a,(b_21e2_start) ;09e3 3a e2 21 : . !\r | |
1788 | and a ;09e6 a7 .\r | |
1789 | ld a,008h ;09e7 3e 08 > .\r | |
1790 | jr nz,l09edh ;09e9 20 02 .\r | |
1791 | ld a,004h ;09eb 3e 04 > .\r | |
1792 | l09edh:\r | |
1793 | ld (ix+000h),a ;09ed dd 77 00 . w .\r | |
1794 | ret ;09f0 c9 .\r | |
1795 | \r | |
1796 | sub_09f1h:\r | |
1797 | ld b,BP_CNT ;09f1 06 0c . .\r | |
1798 | ld ix,bp_tab ;09f3 dd 21 b8 0a . ! . .\r | |
1799 | l09f7h:\r | |
1800 | ld a,(ix+000h) ;09f7 dd 7e 00 . ~ .\r | |
1801 | and c ;09fa a1 .\r | |
1802 | jr z,l0a1dh ;09fb 28 20 (\r | |
1803 | set 5,(ix+000h) ;09fd dd cb 00 ee . . . .\r | |
1804 | ld l,(ix+002h) ;0a01 dd 6e 02 . n .\r | |
1805 | ld h,(ix+003h) ;0a04 dd 66 03 . f .\r | |
1806 | ld a,(hl) ;0a07 7e ~\r | |
1807 | ld (ix+001h),a ;0a08 dd 77 01 . w .\r | |
1808 | ld a,(l0003h) ;0a0b 3a 03 00 : . .\r | |
1809 | ld (hl),a ;0a0e 77 w\r | |
1810 | and 038h ;0a0f e6 38 . 8\r | |
1811 | ld h,000h ;0a11 26 00 & .\r | |
1812 | ld l,a ;0a13 6f o\r | |
1813 | ld (hl),0c3h ;0a14 36 c3 6 .\r | |
1814 | inc hl ;0a16 23 #\r | |
1815 | ld de,bpddtz ;0a17 11 b9 08 . . .\r | |
1816 | ld (hl),e ;0a1a 73 s\r | |
1817 | inc hl ;0a1b 23 #\r | |
1818 | ld (hl),d ;0a1c 72 r\r | |
1819 | l0a1dh:\r | |
1820 | ld de,BP_SIZE ;0a1d 11 08 00 . . .\r | |
1821 | add ix,de ;0a20 dd 19 . .\r | |
1822 | djnz l09f7h ;0a22 10 d3 . .\r | |
1823 | ret ;0a24 c9 .\r | |
1824 | \r | |
1825 | user_go:\r | |
1826 | sub a ;0a25 97 .\r | |
1827 | ld (b_21e2_start),a ;0a26 32 e2 21 2 . !\r | |
1828 | ld a,(l0941h) ;0a29 3a 41 09 : A .\r | |
1829 | and a ;0a2c a7 .\r | |
25a690e5 | 1830 | call nz,p_cpustat ;0a2d c4 30 06 . 0 .\r |
0c4244e5 L |
1831 | call sub_09a6h ;0a30 cd a6 09 . . .\r |
1832 | ld c,007h ;0a33 0e 07 . .\r | |
1833 | jr nz,l0a41h ;0a35 20 0a .\r | |
1834 | ld a,001h ;0a37 3e 01 > .\r | |
1835 | ld (b_21e2_start),a ;0a39 32 e2 21 2 . !\r | |
1836 | call sub_1ffeh ;0a3c cd fe 1f . . .\r | |
1837 | ld c,008h ;0a3f 0e 08 . .\r | |
1838 | l0a41h:\r | |
1839 | call sub_09f1h ;0a41 cd f1 09 . . .\r | |
1840 | ld sp,reg.l2 ;0a44 31 46 00 1 F .\r | |
1841 | pop hl ;0a47 e1 .\r | |
1842 | pop de ;0a48 d1 .\r | |
1843 | pop bc ;0a49 c1 .\r | |
1844 | pop af ;0a4a f1 .\r | |
1845 | exx ;0a4b d9 .\r | |
1846 | ex af,af' ;0a4c 08 .\r | |
1847 | pop af ;0a4d f1 .\r | |
1848 | ld i,a ;0a4e ed 47 . G\r | |
1849 | pop iy ;0a50 fd e1 . .\r | |
1850 | pop ix ;0a52 dd e1 . .\r | |
1851 | pop af ;0a54 f1 .\r | |
1852 | pop bc ;0a55 c1 .\r | |
1853 | pop de ;0a56 d1 .\r | |
1854 | pop hl ;0a57 e1 .\r | |
1855 | ld sp,(reg_sp) ;0a58 ed 7b 5c 00 . { \ .\r | |
1856 | jp reg.iff ;0a5c c3 5e 00 . ^ .\r | |
1857 | \r | |
1858 | bp_clr_condition:\r | |
1859 | ld a,(ix+000h) ;0a5f dd 7e 00 . ~ .\r | |
1860 | and 003h ;0a62 e6 03 . .\r | |
1861 | ret nz ;0a64 c0 .\r | |
1862 | ld e,(ix+006h) ;0a65 dd 5e 06 . ^ .\r | |
1863 | ld d,(ix+007h) ;0a68 dd 56 07 . V .\r | |
1864 | ld a,d ;0a6b 7a z\r | |
1865 | or e ;0a6c b3 .\r | |
1866 | ret z ;0a6d c8 .\r | |
1867 | push bc ;0a6e c5 .\r | |
1868 | ld h,d ;0a6f 62 b\r | |
1869 | ld l,e ;0a70 6b k\r | |
1870 | sub a ;0a71 97 .\r | |
1871 | ld (ix+006h),a ;0a72 dd 77 06 . w .\r | |
1872 | ld (ix+007h),a ;0a75 dd 77 07 . w .\r | |
1873 | ld bc,0ffffh ;0a78 01 ff ff . . .\r | |
1874 | cpir ;0a7b ed b1 . .\r | |
1875 | l0a7dh:\r | |
1876 | push de ;0a7d d5 .\r | |
1877 | ld de,(expr_p1) ;0a7e ed 5b 18 0b . [ . .\r | |
1878 | call cp_hl_de ;0a82 cd ee 02 . . .\r | |
1879 | pop de ;0a85 d1 .\r | |
1880 | jr nc,l0a93h ;0a86 30 0b 0 .\r | |
1881 | call sub_0a99h ;0a88 cd 99 0a . . .\r | |
1882 | l0a8bh:\r | |
1883 | ld a,(hl) ;0a8b 7e ~\r | |
1884 | ldi ;0a8c ed a0 . .\r | |
1885 | and a ;0a8e a7 .\r | |
1886 | jr nz,l0a8bh ;0a8f 20 fa .\r | |
1887 | jr l0a7dh ;0a91 18 ea . .\r | |
1888 | l0a93h:\r | |
1889 | ld (expr_p1),de ;0a93 ed 53 18 0b . S . .\r | |
1890 | pop bc ;0a97 c1 .\r | |
1891 | ret ;0a98 c9 .\r | |
1892 | \r | |
1893 | sub_0a99h:\r | |
1894 | ld iy,bp_tab ;0a99 fd 21 b8 0a . ! . .\r | |
1895 | push de ;0a9d d5 .\r | |
1896 | l0a9eh:\r | |
1897 | ld e,(iy+006h) ;0a9e fd 5e 06 . ^ .\r | |
1898 | ld d,(iy+007h) ;0aa1 fd 56 07 . V .\r | |
1899 | call cp_hl_de ;0aa4 cd ee 02 . . .\r | |
1900 | jr z,l0ab0h ;0aa7 28 07 ( .\r | |
1901 | ld de,BP_SIZE ;0aa9 11 08 00 . . .\r | |
1902 | add iy,de ;0aac fd 19 . .\r | |
1903 | jr l0a9eh ;0aae 18 ee . .\r | |
1904 | l0ab0h:\r | |
1905 | pop de ;0ab0 d1 .\r | |
1906 | ld (iy+006h),e ;0ab1 fd 73 06 . s .\r | |
1907 | ld (iy+007h),d ;0ab4 fd 72 07 . r .\r | |
1908 | ret ;0ab7 c9 .\r | |
1909 | \r | |
1910 | bp_tab:\r | |
1911 | rept BP_CNT\r | |
1912 | rept BP_SIZE\r | |
1913 | db 0\r | |
1914 | endm\r | |
1915 | endm\r | |
1916 | \r | |
1917 | expr_p1:\r | |
1918 | defw expr_buf ;0b18 1c 0b . .\r | |
1919 | expr_p2:\r | |
1920 | defw expr_buf ;0b1a 1c 0b . .\r | |
1921 | \r | |
1922 | expr_buf:\r | |
1923 | db 'DDT/Z',TAB\r | |
1924 | db '[8101]',CR,LF,'$'\r | |
1925 | db 000h ;0b2b 00 .\r | |
1926 | db 06dh ;0b2c 6d m\r | |
1927 | db 085h ;0b2d 85 .\r | |
1928 | db 0cch ;0b2e cc .\r | |
1929 | db 0f6h ;0b2f f6 .\r | |
1930 | db 053h ;0b30 53 S\r | |
1931 | db 05bh ;0b31 5b [\r | |
1932 | \r | |
1933 | ds EXPR_BUF_SIZE - ($ - expr_buf)\r | |
1934 | expr_bufe:\r | |
1935 | \r | |
1936 | msg_Y:\r | |
1937 | dc 'Yn' ;0b9c 59 ee Y n.\r | |
1938 | reg_Y:\r | |
1939 | rept YREG_CNT\r | |
1940 | dw 0\r | |
1941 | endm\r | |
1942 | \r | |
1943 | cmd_Y:\r | |
1944 | call get.decdigit ;0bb2 cd 1d 06 . . .\r | |
1945 | jr c,l0bc3h ;0bb5 38 0c 8 .\r | |
1946 | inc de ;0bb7 13 .\r | |
1947 | push af ;0bb8 f5 .\r | |
1948 | call assert_eol ;0bb9 cd d6 02 . . .\r | |
1949 | pop af ;0bbc f1 .\r | |
1950 | call sub_0bdch ;0bbd cd dc 0b . . .\r | |
1951 | jp l0c15h ;0bc0 c3 15 0c . . .\r | |
1952 | l0bc3h:\r | |
1953 | call assert_eol ;0bc3 cd d6 02 . . .\r | |
1954 | xor a ;0bc6 af .\r | |
1955 | l0bc7h:\r | |
1956 | push af ;0bc7 f5 .\r | |
1957 | call sub_0bdch ;0bc8 cd dc 0b . . .\r | |
1958 | call outbl4 ;0bcb cd 99 02 . . .\r | |
1959 | pop af ;0bce f1 .\r | |
1960 | inc a ;0bcf 3c <\r | |
1961 | bit 0,a ;0bd0 cb 47 . G\r | |
1962 | push af ;0bd2 f5 .\r | |
1963 | call z,crlf ;0bd3 cc a3 02 . . .\r | |
1964 | pop af ;0bd6 f1 .\r | |
1965 | cp YREG_CNT ;0bd7 fe 0a . .\r | |
1966 | jr c,l0bc7h ;0bd9 38 ec 8 .\r | |
1967 | ret ;0bdb c9 .\r | |
1968 | \r | |
1969 | sub_0bdch:\r | |
1970 | ld c,a ;0bdc 4f O\r | |
1971 | ld b,0 ;0bdd 06 00 . .\r | |
1972 | add a,'0'+080h ;0bdf c6 b0 . .\r | |
1973 | ld de,msg_Y+1 ;0be1 11 9d 0b . . .\r | |
1974 | ld (de),a ;0be4 12 .\r | |
1975 | dec de ;0be5 1b .\r | |
1976 | ld hl,reg_Y ;0be6 21 9e 0b ! . .\r | |
1977 | add hl,bc ;0be9 09 .\r | |
1978 | add hl,bc ;0bea 09 .\r | |
1979 | ex de,hl ;0beb eb .\r | |
1980 | ld c,003h ;0bec 0e 03 . .\r | |
1981 | jp l0c33h ;0bee c3 33 0c . 3 .\r | |
1982 | \r | |
1983 | cmd_X:\r | |
1984 | call skipbl ;0bf1 cd bf 02 . . .\r | |
1985 | call sub_0caeh ;0bf4 cd ae 0c . . .\r | |
25a690e5 | 1986 | jp nc,p_cpustat0 ;0bf7 d2 2d 06 . - .\r |
0c4244e5 L |
1987 | call assert_eol ;0bfa cd d6 02 . . .\r |
1988 | ld a,b ;0bfd 78 x\r | |
1989 | cp 01eh ;0bfe fe 1e . .\r | |
1990 | jr z,l0c5fh ;0c00 28 5d ( ]\r | |
1991 | cp 01fh ;0c02 fe 1f . .\r | |
1992 | jr z,l0c4fh ;0c04 28 49 ( I\r | |
1993 | cp 01dh ;0c06 fe 1d . .\r | |
1994 | jp z,ERROR ;0c08 ca 07 01 . . .\r | |
1995 | ex de,hl ;0c0b eb .\r | |
1996 | ld hl,b_0cc3_start ;0c0c 21 c3 0c ! . .\r | |
990f66ca | 1997 | call sel_dc_string ;0c0f cd 3d 03 . = .\r |
0c4244e5 L |
1998 | l0c12h:\r |
1999 | call l0c33h ;0c12 cd 33 0c . 3 .\r | |
2000 | l0c15h:\r | |
2001 | call outbl ;0c15 cd 9f 02 . . .\r | |
2002 | push de ;0c18 d5 .\r | |
2003 | push bc ;0c19 c5 .\r | |
2004 | call get_line ;0c1a cd 4e 01 . N .\r | |
2005 | call skipbl ;0c1d cd bf 02 . . .\r | |
2006 | jr z,l0c30h ;0c20 28 0e ( .\r | |
2007 | call sub_0363h ;0c22 cd 63 03 . c .\r | |
2008 | ld b,h ;0c25 44 D\r | |
2009 | ld c,l ;0c26 4d M\r | |
2010 | pop af ;0c27 f1 .\r | |
2011 | pop hl ;0c28 e1 .\r | |
2012 | ld (hl),c ;0c29 71 q\r | |
2013 | bit 0,a ;0c2a cb 47 . G\r | |
2014 | ret z ;0c2c c8 .\r | |
2015 | inc hl ;0c2d 23 #\r | |
2016 | ld (hl),b ;0c2e 70 p\r | |
2017 | ret ;0c2f c9 .\r | |
2018 | l0c30h:\r | |
2019 | pop af ;0c30 f1 .\r | |
2020 | pop hl ;0c31 e1 .\r | |
2021 | ret ;0c32 c9 .\r | |
2022 | l0c33h:\r | |
2023 | ld b,c ;0c33 41 A\r | |
2024 | call pstr ;0c34 cd 88 02 . . .\r | |
2025 | ld a,'=' ;0c37 3e 3d > =\r | |
2026 | call outchar ;0c39 cd 5d 02 . ] .\r | |
2027 | ld a,(de) ;0c3c 1a .\r | |
2028 | bit 0,b ;0c3d cb 40 . @\r | |
2029 | jp z,out_hex ;0c3f ca 18 02 . . .\r | |
2030 | ld l,a ;0c42 6f o\r | |
2031 | inc de ;0c43 13 .\r | |
2032 | ld a,(de) ;0c44 1a .\r | |
2033 | dec de ;0c45 1b .\r | |
2034 | ld h,a ;0c46 67 g\r | |
2035 | bit 1,b ;0c47 cb 48 . H\r | |
2036 | jp z,out_hl ;0c49 ca 13 02 . . .\r | |
2037 | jp out.hl.@ ;0c4c c3 a4 01 . . .\r | |
2038 | \r | |
2039 | l0c4fh:\r | |
25a690e5 | 2040 | call p_f ;0c4f cd 6e 06 . n .\r |
0c4244e5 L |
2041 | ld a,0f3h ;0c52 3e f3 > .\r |
2042 | ld (reg.iff),a ;0c54 32 5e 00 2 ^ .\r | |
2043 | scf ;0c57 37 7\r | |
2044 | call sub_0c6ah ;0c58 cd 6a 0c . j .\r | |
2045 | ld (reg.f),a ;0c5b 32 54 00 2 T .\r | |
2046 | ret ;0c5e c9 .\r | |
2047 | l0c5fh:\r | |
25a690e5 | 2048 | call p_f2 ;0c5f cd 81 06 . . .\r |
0c4244e5 L |
2049 | and a ;0c62 a7 .\r |
2050 | call sub_0c6ah ;0c63 cd 6a 0c . j .\r | |
2051 | ld (reg.f2),a ;0c66 32 4c 00 2 L .\r | |
2052 | ret ;0c69 c9 .\r | |
2053 | sub_0c6ah:\r | |
2054 | ex af,af' ;0c6a 08 .\r | |
2055 | ld b,000h ;0c6b 06 00 . .\r | |
2056 | call outbl ;0c6d cd 9f 02 . . .\r | |
2057 | call assert_eol ;0c70 cd d6 02 . . .\r | |
2058 | call get_line ;0c73 cd 4e 01 . N .\r | |
2059 | l0c76h:\r | |
2060 | call skipbl ;0c76 cd bf 02 . . .\r | |
2061 | ld a,b ;0c79 78 x\r | |
2062 | ret z ;0c7a c8 .\r | |
2063 | push bc ;0c7b c5 .\r | |
2064 | ld hl,b_0ca4_start ;0c7c 21 a4 0c ! . .\r | |
2065 | call lookupch ;0c7f cd f3 02 . . .\r | |
2066 | jp nc,ERROR ;0c82 d2 07 01 . . .\r | |
2067 | ld a,b ;0c85 78 x\r | |
2068 | cp 008h ;0c86 fe 08 . .\r | |
2069 | jr z,l0c97h ;0c88 28 0d ( .\r | |
2070 | pop bc ;0c8a c1 .\r | |
2071 | rlca ;0c8b 07 .\r | |
2072 | rlca ;0c8c 07 .\r | |
2073 | rlca ;0c8d 07 .\r | |
2074 | add a,0c0h ;0c8e c6 c0 . .\r | |
2075 | ld (l0c94h),a ;0c90 32 94 0c 2 . .\r | |
2076 | defb 0cbh ;0c93 cb .\r | |
2077 | l0c94h:\r | |
2078 | defb 0c0h ;0c94 c0 .\r | |
2079 | jr l0c76h ;0c95 18 df . .\r | |
2080 | l0c97h:\r | |
2081 | ex af,af' ;0c97 08 .\r | |
2082 | jp nc,ERROR ;0c98 d2 07 01 . . .\r | |
2083 | ex af,af' ;0c9b 08 .\r | |
2084 | ld a,0fbh ;0c9c 3e fb > .\r | |
2085 | ld (reg.iff),a ;0c9e 32 5e 00 2 ^ .\r | |
2086 | pop bc ;0ca1 c1 .\r | |
2087 | jr l0c76h ;0ca2 18 d2 . .\r | |
2088 | \r | |
2089 | b_0ca4_start:\r | |
2090 | db 'CNV H ZSE',0\r | |
2091 | \r | |
2092 | sub_0caeh:\r | |
2093 | call sub_0303h ;0cae cd 03 03 . . .\r | |
2094 | ret nc ;0cb1 d0 .\r | |
2095 | ld a,b ;0cb2 78 x\r | |
2096 | add a,b ;0cb3 80 .\r | |
2097 | add a,b ;0cb4 80 .\r | |
2098 | ld hl,b_0cfa_start ;0cb5 21 fa 0c ! . .\r | |
2099 | call add_hl_a ;0cb8 cd b9 02 . . .\r | |
2100 | ld c,(hl) ;0cbb 4e N\r | |
2101 | inc hl ;0cbc 23 #\r | |
2102 | ld a,(hl) ;0cbd 7e ~\r | |
2103 | inc hl ;0cbe 23 #\r | |
2104 | ld h,(hl) ;0cbf 66 f\r | |
2105 | ld l,a ;0cc0 6f o\r | |
2106 | scf ;0cc1 37 7\r | |
2107 | ret ;0cc2 c9 .\r | |
2108 | \r | |
2109 | b_0cc3_start:\r | |
2110 | DC 'BC'''\r | |
2111 | DC 'DE'''\r | |
2112 | DC 'HL'''\r | |
2113 | DC 'BC'\r | |
2114 | DC 'DE'\r | |
2115 | DC 'HL'\r | |
2116 | DC 'A'''\r | |
2117 | DC 'B'''\r | |
2118 | DC 'C'''\r | |
2119 | DC 'D'''\r | |
2120 | DC 'E'''\r | |
2121 | DC 'H'''\r | |
2122 | DC 'L'''\r | |
2123 | DC 'A'\r | |
2124 | DC 'B'\r | |
2125 | DC 'C'\r | |
2126 | DC 'D'\r | |
2127 | DC 'E'\r | |
2128 | DC 'H'\r | |
2129 | DC 'L'\r | |
2130 | DC 'IX'\r | |
2131 | DC 'IY'\r | |
2132 | DC 'SP'\r | |
2133 | DC 'PC'\r | |
2134 | DC 'X'\r | |
2135 | DC 'Y'\r | |
2136 | DC 'S'\r | |
2137 | DC 'P'\r | |
2138 | DC 'I'\r | |
2139 | DC 'IP'\r | |
2140 | DC 'F'''\r | |
2141 | DC 'F'\r | |
2142 | DB 0\r | |
2143 | \r | |
2144 | b_0cfa_start:\r | |
2145 | defb 003h ;0cfa 03 .\r | |
2146 | defw reg.c2 ;0cfb 4a 00 J .\r | |
2147 | defb 003h ;0cfd 03 .\r | |
2148 | defw reg.e2 ;0cfe 48 00 H .\r | |
2149 | defb 003h ;0d00 03 .\r | |
2150 | defw reg.l2 ;0d01 46 00 F .\r | |
2151 | defb 003h ;0d03 03 .\r | |
2152 | defw reg.c ;0d04 56 00 V .\r | |
2153 | defb 003h ;0d06 03 .\r | |
2154 | defw reg.e ;0d07 58 00 X .\r | |
2155 | defb 003h ;0d09 03 .\r | |
2156 | defw reg.l ;0d0a 5a 00 Z .\r | |
2157 | defb 000h ;0d0c 00 .\r | |
2158 | defw reg.a2 ;0d0d 4d 00 M .\r | |
2159 | defb 000h ;0d0f 00 .\r | |
2160 | defw reg.b2 ;0d10 4b 00 K .\r | |
2161 | defb 000h ;0d12 00 .\r | |
2162 | defw reg.c2 ;0d13 4a 00 J .\r | |
2163 | defb 000h ;0d15 00 .\r | |
2164 | defw reg.d2 ;0d16 49 00 I .\r | |
2165 | defb 000h ;0d18 00 .\r | |
2166 | defw reg.e2 ;0d19 48 00 H .\r | |
2167 | defb 000h ;0d1b 00 .\r | |
2168 | defw reg.h2 ;0d1c 47 00 G .\r | |
2169 | defb 000h ;0d1e 00 .\r | |
2170 | defw reg.l2 ;0d1f 46 00 F .\r | |
2171 | defb 000h ;0d21 00 .\r | |
2172 | defw reg.a ;0d22 55 00 U .\r | |
2173 | defb 000h ;0d24 00 .\r | |
2174 | defw reg.b ;0d25 57 00 W .\r | |
2175 | defb 000h ;0d27 00 .\r | |
2176 | defw reg.c ;0d28 56 00 V .\r | |
2177 | defb 000h ;0d2a 00 .\r | |
2178 | defw reg.d ;0d2b 59 00 Y .\r | |
2179 | defb 000h ;0d2d 00 .\r | |
2180 | defw reg.e ;0d2e 58 00 X .\r | |
2181 | defb 000h ;0d30 00 .\r | |
2182 | defw reg.h ;0d31 5b 00 [ .\r | |
2183 | defb 000h ;0d33 00 .\r | |
2184 | defw reg.l ;0d34 5a 00 Z .\r | |
2185 | defb 003h ;0d36 03 .\r | |
2186 | defw reg.ix ;0d37 52 00 R .\r | |
2187 | defb 003h ;0d39 03 .\r | |
2188 | defw reg.iy ;0d3a 50 00 P .\r | |
2189 | defb 003h ;0d3c 03 .\r | |
2190 | defw reg_sp ;0d3d 5c 00 \ .\r | |
2191 | defb 003h ;0d3f 03 .\r | |
2192 | defw REG.PC ;0d40 60 00 ` .\r | |
2193 | defb 003h ;0d42 03 .\r | |
2194 | defw reg.ix ;0d43 52 00 R .\r | |
2195 | defb 003h ;0d45 03 .\r | |
2196 | defw reg.iy ;0d46 50 00 P .\r | |
2197 | defb 003h ;0d48 03 .\r | |
2198 | defw reg_sp ;0d49 5c 00 \ .\r | |
2199 | defb 003h ;0d4b 03 .\r | |
2200 | defw REG.PC ;0d4c 60 00 ` .\r | |
2201 | defb 000h ;0d4e 00 .\r | |
2202 | defw reg.i ;0d4f 4f 00 O .\r | |
2203 | defb 003h ;0d51 03 .\r | |
2204 | defw l004eh ;0d52 4e 00 N .\r | |
2205 | defb 000h ;0d54 00 .\r | |
2206 | defw reg.f2 ;0d55 4c 00 L .\r | |
2207 | defb 000h ;0d57 00 .\r | |
2208 | defw reg.f ;0d58 54 00 T .\r | |
2209 | \r | |
2210 | cmd_S:\r | |
2211 | ld hl,(last_S) ;0d5a 2a 90 0d * . .\r | |
2212 | call get_lastarg_def ;0d5d cd 69 03 . i .\r | |
2213 | l0d60h:\r | |
2214 | ld (last_S),hl ;0d60 22 90 0d " . .\r | |
2215 | call out.hl.@ ;0d63 cd a4 01 . . .\r | |
2216 | call outbl ;0d66 cd 9f 02 . . .\r | |
2217 | ld a,(hl) ;0d69 7e ~\r | |
2218 | call out_hex ;0d6a cd 18 02 . . .\r | |
2219 | call outbl2 ;0d6d cd 9c 02 . . .\r | |
2220 | call get_line ;0d70 cd 4e 01 . N .\r | |
2221 | call skipbl ;0d73 cd bf 02 . . .\r | |
2222 | inc hl ;0d76 23 #\r | |
2223 | jr z,l0d60h ;0d77 28 e7 ( .\r | |
2224 | dec hl ;0d79 2b +\r | |
2225 | inc de ;0d7a 13 .\r | |
2226 | cp '.' ;0d7b fe 2e . .\r | |
2227 | jp z,assert_eol ;0d7d ca d6 02 . . .\r | |
2228 | cp '-' ;0d80 fe 2d . -\r | |
2229 | jr nz,l0d8ah ;0d82 20 06 .\r | |
2230 | ld a,(de) ;0d84 1a .\r | |
2231 | or a ;0d85 b7 .\r | |
2232 | dec hl ;0d86 2b +\r | |
2233 | jr z,l0d60h ;0d87 28 d7 ( .\r | |
2234 | inc hl ;0d89 23 #\r | |
2235 | l0d8ah:\r | |
2236 | dec de ;0d8a 1b .\r | |
2237 | call sub_0ef8h ;0d8b cd f8 0e . . .\r | |
2238 | jr l0d60h ;0d8e 18 d0 . .\r | |
2239 | \r | |
2240 | last_S:\r | |
2241 | defw TPA ;0d90 00 01 . .\r | |
2242 | cmd_@:\r | |
2243 | call assert_eol ;0d92 cd d6 02 . . .\r | |
2244 | ld hl,msg_offset ;0d95 21 a0 0d ! . .\r | |
2245 | ld de,offs.@ ;0d98 11 64 00 . d .\r | |
2246 | ld c,001h ;0d9b 0e 01 . .\r | |
2247 | jp l0c12h ;0d9d c3 12 0c . . .\r | |
2248 | \r | |
2249 | msg_offset:\r | |
2250 | dc '@' ;0da0 c0 .\r | |
2251 | \r | |
2252 | last_I:\r | |
2253 | defw 0 ;0da1 00 00 . .\r | |
2254 | cmd_I:\r | |
2255 | ld hl,cmd_I ;0da3 21 a3 0d ! . .\r | |
2256 | ld (cmd_rpt),hl ;0da6 22 68 00 " h .\r | |
2257 | ld hl,(last_I) ;0da9 2a a1 0d * . .\r | |
2258 | call get_lastarg_def ;0dac cd 69 03 . i .\r | |
2259 | ld (last_I),hl ;0daf 22 a1 0d " . .\r | |
2260 | ld b,h ;0db2 44 D\r | |
2261 | ld c,l ;0db3 4d M\r | |
2262 | in a,(c) ;0db4 ed 78 . x\r | |
2263 | push af ;0db6 f5 .\r | |
2264 | call out_hex ;0db7 cd 18 02 . . .\r | |
2265 | call outbl4 ;0dba cd 99 02 . . .\r | |
2266 | pop af ;0dbd f1 .\r | |
2267 | call out.bin.b ;0dbe cd c7 01 . . .\r | |
2268 | jp crlf ;0dc1 c3 a3 02 . . .\r | |
2269 | \r | |
2270 | last_O_addr:\r | |
2271 | dw 0 ;0dc4 00 .\r | |
2272 | last_O_val:\r | |
2273 | db 0 ;0dc6 00 .\r | |
2274 | cmd_O:\r | |
2275 | ld hl,cmd_O ;0dc7 21 c7 0d ! . .\r | |
2276 | ld (cmd_rpt),hl ;0dca 22 68 00 " h .\r | |
2277 | ld hl,(last_O_val) ;0dcd 2a c6 0d * . .\r | |
2278 | call get_arg_def ;0dd0 cd 6e 03 . n .\r | |
2279 | ld a,l ;0dd3 7d }\r | |
2280 | ld (last_O_val),a ;0dd4 32 c6 0d 2 . .\r | |
2281 | push af ;0dd7 f5 .\r | |
2282 | call next_arg ;0dd8 cd ca 02 . . .\r | |
2283 | ld hl,(last_O_addr) ;0ddb 2a c4 0d * . .\r | |
2284 | call get_lastarg_def ;0dde cd 69 03 . i .\r | |
2285 | ld (last_O_addr),hl ;0de1 22 c4 0d " . .\r | |
2286 | ld b,h ;0de4 44 D\r | |
2287 | ld c,l ;0de5 4d M\r | |
2288 | pop af ;0de6 f1 .\r | |
2289 | out (c),a ;0de7 ed 79 . y\r | |
2290 | ret ;0de9 c9 .\r | |
2291 | \r | |
2292 | cmd_V:\r | |
2293 | call sub_034eh ;0dea cd 4e 03 . N .\r | |
2294 | l0dedh:\r | |
2295 | push bc ;0ded c5 .\r | |
2296 | ld a,(de) ;0dee 1a .\r | |
2297 | ld b,(hl) ;0def 46 F\r | |
2298 | cp b ;0df0 b8 .\r | |
2299 | jr z,l0e10h ;0df1 28 1d ( .\r | |
2300 | ld c,a ;0df3 4f O\r | |
2301 | call out.hl.@ ;0df4 cd a4 01 . . .\r | |
2302 | call outbl ;0df7 cd 9f 02 . . .\r | |
2303 | ld a,b ;0dfa 78 x\r | |
2304 | call out_hex ;0dfb cd 18 02 . . .\r | |
2305 | call outbl2 ;0dfe cd 9c 02 . . .\r | |
2306 | ld a,c ;0e01 79 y\r | |
2307 | call out_hex ;0e02 cd 18 02 . . .\r | |
2308 | call outbl ;0e05 cd 9f 02 . . .\r | |
2309 | ex de,hl ;0e08 eb .\r | |
2310 | call out.hl.@ ;0e09 cd a4 01 . . .\r | |
2311 | ex de,hl ;0e0c eb .\r | |
2312 | call crlf ;0e0d cd a3 02 . . .\r | |
2313 | l0e10h:\r | |
2314 | pop bc ;0e10 c1 .\r | |
2315 | inc hl ;0e11 23 #\r | |
2316 | inc de ;0e12 13 .\r | |
2317 | dec bc ;0e13 0b .\r | |
2318 | ld a,b ;0e14 78 x\r | |
2319 | or c ;0e15 b1 .\r | |
2320 | jr nz,l0dedh ;0e16 20 d5 .\r | |
2321 | ret ;0e18 c9 .\r | |
2322 | \r | |
2323 | cmd_M:\r | |
2324 | ld a,(de) ;0e19 1a .\r | |
2325 | cp 'V' ;0e1a fe 56 . V\r | |
2326 | jr nz,l0e1fh ;0e1c 20 01 .\r | |
2327 | inc de ;0e1e 13 .\r | |
2328 | l0e1fh:\r | |
2329 | push af ;0e1f f5 .\r | |
2330 | call sub_034eh ;0e20 cd 4e 03 . N .\r | |
2331 | push hl ;0e23 e5 .\r | |
2332 | push de ;0e24 d5 .\r | |
2333 | push bc ;0e25 c5 .\r | |
2334 | call cp_hl_de ;0e26 cd ee 02 . . .\r | |
2335 | jr nc,$+11 ;0e29 30 09 0 .\r | |
2336 | add hl,bc ;0e2b 09 .\r | |
2337 | ex de,hl ;0e2c eb .\r | |
2338 | add hl,bc ;0e2d 09 .\r | |
2339 | ex de,hl ;0e2e eb .\r | |
2340 | dec hl ;0e2f 2b +\r | |
2341 | dec de ;0e30 1b .\r | |
2342 | lddr ;0e31 ed b8 . .\r | |
2343 | ld bc,0b0edh ;0e33 01 ed b0 . . .\r | |
2344 | pop bc ;0e36 c1 .\r | |
2345 | pop de ;0e37 d1 .\r | |
2346 | pop hl ;0e38 e1 .\r | |
2347 | pop af ;0e39 f1 .\r | |
2348 | jr z,l0dedh ;0e3a 28 b1 ( .\r | |
2349 | ret ;0e3c c9 .\r | |
2350 | \r | |
2351 | cmd_H:\r | |
2352 | call expr ;0e3d cd be 03 . . .\r | |
25a690e5 | 2353 | jp c,p_max_high0 ;0e40 da 6f 11 . o .\r |
0c4244e5 L |
2354 | call next_arg ;0e43 cd ca 02 . . .\r |
2355 | push hl ;0e46 e5 .\r | |
2356 | call expr ;0e47 cd be 03 . . .\r | |
2357 | push af ;0e4a f5 .\r | |
2358 | call assert_eol ;0e4b cd d6 02 . . .\r | |
2359 | pop af ;0e4e f1 .\r | |
2360 | ex de,hl ;0e4f eb .\r | |
2361 | pop hl ;0e50 e1 .\r | |
2362 | jr c,l0e5eh ;0e51 38 0b 8 .\r | |
2363 | push hl ;0e53 e5 .\r | |
2364 | push de ;0e54 d5 .\r | |
2365 | add hl,de ;0e55 19 .\r | |
2366 | call l0e5eh ;0e56 cd 5e 0e . ^ .\r | |
2367 | pop de ;0e59 d1 .\r | |
2368 | pop hl ;0e5a e1 .\r | |
2369 | and a ;0e5b a7 .\r | |
2370 | sbc hl,de ;0e5c ed 52 . R\r | |
2371 | l0e5eh:\r | |
2372 | call out_hl ;0e5e cd 13 02 . . .\r | |
2373 | call outbl2 ;0e61 cd 9c 02 . . .\r | |
2374 | call out_hl_neg ;0e64 cd 0a 02 . . .\r | |
2375 | call outbl4 ;0e67 cd 99 02 . . .\r | |
2376 | call out.hl.dec ;0e6a cd e7 01 . . .\r | |
2377 | call outbl2 ;0e6d cd 9c 02 . . .\r | |
2378 | call out_hl_dec_neg ;0e70 cd e2 01 . . .\r | |
2379 | call outbl4 ;0e73 cd 99 02 . . .\r | |
2380 | call out.bin.w ;0e76 cd c2 01 . . .\r | |
2381 | call outbl2 ;0e79 cd 9c 02 . . .\r | |
2382 | ld a,l ;0e7c 7d }\r | |
2383 | call out.ascii ;0e7d cd 34 02 . 4 .\r | |
2384 | jp crlf ;0e80 c3 a3 02 . . .\r | |
2385 | \r | |
2386 | cmd_Q_jopt:\r | |
2387 | db -1 ;0e83 ff .\r | |
2388 | \r | |
2389 | cmd_Q:\r | |
2390 | ld a,(de) ;0e84 1a .\r | |
2391 | sub 'J' ;0e85 d6 4a . J\r | |
2392 | ld (cmd_Q_jopt),a ;0e87 32 83 0e 2 . .\r | |
2393 | jr nz,l0e8dh ;0e8a 20 01 .\r | |
2394 | inc de ;0e8c 13 .\r | |
2395 | l0e8dh:\r | |
2396 | call get_arg_range ;0e8d cd 7d 03 . } .\r | |
2397 | push bc ;0e90 c5 .\r | |
2398 | push hl ;0e91 e5 .\r | |
2399 | call sub_0ee6h ;0e92 cd e6 0e . . .\r | |
2400 | pop hl ;0e95 e1 .\r | |
2401 | l0e96h:\r | |
2402 | call sub_0ed7h ;0e96 cd d7 0e . . .\r | |
2403 | jr nz,l0eb0h ;0e99 20 15 .\r | |
2404 | push bc ;0e9b c5 .\r | |
2405 | push hl ;0e9c e5 .\r | |
2406 | ld a,(cmd_Q_jopt) ;0e9d 3a 83 0e : . .\r | |
2407 | or a ;0ea0 b7 .\r | |
2408 | jr nz,l0ea7h ;0ea1 20 04 .\r | |
2409 | ld bc,-8 ;0ea3 01 f8 ff . . .\r | |
2410 | add hl,bc ;0ea6 09 .\r | |
2411 | l0ea7h:\r | |
2412 | ld bc,16 ;0ea7 01 10 00 . . .\r | |
2413 | and a ;0eaa a7 .\r | |
2414 | call sub_0f58h ;0eab cd 58 0f . X .\r | |
2415 | pop hl ;0eae e1 .\r | |
2416 | pop bc ;0eaf c1 .\r | |
2417 | l0eb0h:\r | |
2418 | inc hl ;0eb0 23 #\r | |
2419 | ex (sp),hl ;0eb1 e3 .\r | |
2420 | dec hl ;0eb2 2b +\r | |
2421 | ld a,h ;0eb3 7c |\r | |
2422 | or l ;0eb4 b5 .\r | |
2423 | ex (sp),hl ;0eb5 e3 .\r | |
2424 | jr nz,l0e96h ;0eb6 20 de .\r | |
2425 | pop bc ;0eb8 c1 .\r | |
2426 | ret ;0eb9 c9 .\r | |
2427 | \r | |
2428 | cmd_Z:\r | |
2429 | call get_arg_range ;0eba cd 7d 03 . } .\r | |
2430 | push bc ;0ebd c5 .\r | |
2431 | push hl ;0ebe e5 .\r | |
2432 | call sub_0ee6h ;0ebf cd e6 0e . . .\r | |
2433 | ld a,b ;0ec2 78 x\r | |
2434 | pop hl ;0ec3 e1 .\r | |
2435 | pop bc ;0ec4 c1 .\r | |
2436 | push hl ;0ec5 e5 .\r | |
2437 | ex de,hl ;0ec6 eb .\r | |
2438 | l0ec7h:\r | |
2439 | ldi ;0ec7 ed a0 . .\r | |
2440 | jp po,l0ed3h ;0ec9 e2 d3 0e . . .\r | |
2441 | dec a ;0ecc 3d =\r | |
2442 | jr nz,l0ec7h ;0ecd 20 f8 .\r | |
2443 | pop hl ;0ecf e1 .\r | |
2444 | ldir ;0ed0 ed b0 . .\r | |
2445 | ret ;0ed2 c9 .\r | |
2446 | l0ed3h:\r | |
2447 | pop hl ;0ed3 e1 .\r | |
2448 | ret ;0ed4 c9 .\r | |
2449 | \r | |
2450 | last_D:\r | |
2451 | dw TPA\r | |
2452 | \r | |
2453 | sub_0ed7h:\r | |
2454 | push hl ;0ed7 e5 d5 . .\r | |
2455 | push de\r | |
2456 | push bc ;0ed9 c5 .\r | |
2457 | l0edah:\r | |
2458 | ld a,(de) ;0eda 1a .\r | |
2459 | cp (hl) ;0edb be .\r | |
2460 | jr nz,l0ee2h ;0edc 20 04 .\r | |
2461 | inc de ;0ede 13 .\r | |
2462 | inc hl ;0edf 23 #\r | |
2463 | djnz l0edah ;0ee0 10 f8 . .\r | |
2464 | l0ee2h:\r | |
2465 | pop bc ;0ee2 c1 .\r | |
2466 | pop de ;0ee3 d1 .\r | |
2467 | pop hl ;0ee4 e1 .\r | |
2468 | ret ;0ee5 c9 .\r | |
2469 | \r | |
2470 | sub_0ee6h:\r | |
2471 | ld hl,conbuf+1 ;0ee6 21 6b 00 ! k .\r | |
2472 | call sub_0ef7h ;0ee9 cd f7 0e . . .\r | |
2473 | ld de,conbuf+1 ;0eec 11 6b 00 . k .\r | |
2474 | and a ;0eef a7 .\r | |
2475 | sbc hl,de ;0ef0 ed 52 . R\r | |
2476 | ld b,l ;0ef2 45 E\r | |
2477 | ret nz ;0ef3 c0 .\r | |
2478 | jp ERROR ;0ef4 c3 07 01 . . .\r | |
2479 | \r | |
2480 | sub_0ef7h:\r | |
2481 | db 0e6h ;0ef7 e6 and 037h (clear carry)\r | |
2482 | sub_0ef8h:\r | |
2483 | scf ;0ef8 37 . 7\r | |
2484 | l0ef9h:\r | |
2485 | push af ;0ef9 f5 .\r | |
2486 | call next_arg ;0efa cd ca 02 . . .\r | |
2487 | cp 'W' ;0efd fe 57 . W\r | |
2488 | jr nz,l0f0eh ;0eff 20 0d .\r | |
2489 | inc de ;0f01 13 .\r | |
2490 | push hl ;0f02 e5 .\r | |
2491 | call sub_035dh ;0f03 cd 5d 03 . ] .\r | |
2492 | ex de,hl ;0f06 eb .\r | |
2493 | ex (sp),hl ;0f07 e3 .\r | |
2494 | ld (hl),e ;0f08 73 s\r | |
2495 | inc hl ;0f09 23 #\r | |
2496 | ld a,d ;0f0a 7a z\r | |
2497 | pop de ;0f0b d1 .\r | |
2498 | jr l0f1ah ;0f0c 18 0c . .\r | |
2499 | l0f0eh:\r | |
2500 | cp '''' ;0f0e fe 27 . '\r | |
2501 | jr z,l0f1eh ;0f10 28 0c ( .\r | |
2502 | push hl ;0f12 e5 .\r | |
2503 | call expr ;0f13 cd be 03 . . .\r | |
2504 | ld a,l ;0f16 7d }\r | |
2505 | pop hl ;0f17 e1 .\r | |
2506 | jr c,l0f42h ;0f18 38 28 8 (\r | |
2507 | l0f1ah:\r | |
2508 | ld (hl),a ;0f1a 77 w\r | |
2509 | inc hl ;0f1b 23 #\r | |
2510 | jr l0f3ah ;0f1c 18 1c . .\r | |
2511 | l0f1eh:\r | |
2512 | inc de ;0f1e 13 .\r | |
2513 | ld a,(de) ;0f1f 1a .\r | |
2514 | cp '''' ;0f20 fe 27 . '\r | |
2515 | jr z,l0f2bh ;0f22 28 07 ( .\r | |
2516 | or a ;0f24 b7 .\r | |
2517 | jr z,l0f42h ;0f25 28 1b ( .\r | |
2518 | l0f27h:\r | |
2519 | ld (hl),a ;0f27 77 w\r | |
2520 | inc hl ;0f28 23 #\r | |
2521 | jr l0f1eh ;0f29 18 f3 . .\r | |
2522 | l0f2bh:\r | |
2523 | inc de ;0f2b 13 .\r | |
2524 | ld a,(de) ;0f2c 1a .\r | |
2525 | cp '''' ;0f2d fe 27 . '\r | |
2526 | jr z,l0f27h ;0f2f 28 f6 ( .\r | |
2527 | cp '.' ;0f31 fe 2e . .\r | |
2528 | jr nz,l0f3ah ;0f33 20 05 .\r | |
2529 | inc de ;0f35 13 .\r | |
2530 | dec hl ;0f36 2b +\r | |
2531 | set 7,(hl) ;0f37 cb fe . .\r | |
2532 | inc hl ;0f39 23 #\r | |
2533 | l0f3ah:\r | |
2534 | pop af ;0f3a f1 .\r | |
2535 | jr nc,l0ef9h ;0f3b 30 bc 0 .\r | |
2536 | ld (last_S),hl ;0f3d 22 90 0d " . .\r | |
2537 | jr l0ef9h ;0f40 18 b7 . .\r | |
2538 | l0f42h:\r | |
2539 | pop af ;0f42 f1 .\r | |
2540 | ret nc ;0f43 d0 .\r | |
2541 | ld (last_S),hl ;0f44 22 90 0d " . .\r | |
2542 | ret ;0f47 c9 .\r | |
2543 | \r | |
2544 | cmd_D:\r | |
2545 | ld hl,cmd_D ;0f48 21 48 0f ! H .\r | |
2546 | ld (cmd_rpt),hl ;0f4b 22 68 00 " h .\r | |
2547 | ld hl,(last_D) ;0f4e 2a d5 0e * . .\r | |
2548 | ld bc,128 ;0f51 01 80 00 . . .\r | |
2549 | call sub_0377h ;0f54 cd 77 03 . w .\r | |
2550 | scf ;0f57 37 7\r | |
2551 | sub_0f58h:\r | |
2552 | push bc ;0f58 c5 .\r | |
2553 | push de ;0f59 d5 .\r | |
2554 | push hl ;0f5a e5 .\r | |
2555 | ex af,af' ;0f5b 08 .\r | |
2556 | l0f5ch:\r | |
2557 | call out.hl.@ ;0f5c cd a4 01 . . .\r | |
2558 | call z,outbl2 ;0f5f cc 9c 02 . . .\r | |
2559 | call outbl ;0f62 cd 9f 02 . . .\r | |
2560 | ld de,0 ;0f65 11 00 00 . . .\r | |
2561 | l0f68h:\r | |
2562 | ld a,(hl) ;0f68 7e ~\r | |
2563 | inc hl ;0f69 23 #\r | |
2564 | call out_hex ;0f6a cd 18 02 . . .\r | |
2565 | call outbl ;0f6d cd 9f 02 . . .\r | |
2566 | dec bc ;0f70 0b .\r | |
2567 | inc e ;0f71 1c .\r | |
2568 | ld a,e ;0f72 7b {\r | |
2569 | cp 010h ;0f73 fe 10 . .\r | |
2570 | jr z,l0f80h ;0f75 28 09 ( .\r | |
2571 | and 003h ;0f77 e6 03 . .\r | |
2572 | call z,outbl ;0f79 cc 9f 02 . . .\r | |
2573 | ld a,b ;0f7c 78 x\r | |
2574 | or c ;0f7d b1 .\r | |
2575 | jr nz,l0f68h ;0f7e 20 e8 .\r | |
2576 | l0f80h:\r | |
2577 | call outbl ;0f80 cd 9f 02 . . .\r | |
2578 | and a ;0f83 a7 .\r | |
2579 | sbc hl,de ;0f84 ed 52 . R\r | |
2580 | l0f86h:\r | |
2581 | ld a,(hl) ;0f86 7e ~\r | |
2582 | call sub_0fa3h ;0f87 cd a3 0f . . .\r | |
2583 | call outchar ;0f8a cd 5d 02 . ] .\r | |
2584 | inc hl ;0f8d 23 #\r | |
2585 | dec e ;0f8e 1d .\r | |
2586 | jr nz,l0f86h ;0f8f 20 f5 .\r | |
2587 | ex af,af' ;0f91 08 .\r | |
2588 | jr nc,l0f97h ;0f92 30 03 0 .\r | |
2589 | ld (last_D),hl ;0f94 22 d5 0e " . .\r | |
2590 | l0f97h:\r | |
2591 | ex af,af' ;0f97 08 .\r | |
2592 | call crlf ;0f98 cd a3 02 . . .\r | |
2593 | ld a,b ;0f9b 78 x\r | |
2594 | or c ;0f9c b1 .\r | |
2595 | jr nz,l0f5ch ;0f9d 20 bd .\r | |
2596 | pop hl ;0f9f e1 .\r | |
2597 | pop de ;0fa0 d1 .\r | |
2598 | pop bc ;0fa1 c1 .\r | |
2599 | ret ;0fa2 c9 .\r | |
2600 | \r | |
2601 | sub_0fa3h:\r | |
2602 | and 07fh ;0fa3 e6 7f . \7f\r | |
2603 | cp 07fh ;0fa5 fe 7f . \7f\r | |
2604 | jr z,l0fach ;0fa7 28 03 ( .\r | |
2605 | cp ' ' ;0fa9 fe 20 .\r | |
2606 | ret nc ;0fab d0 .\r | |
2607 | l0fach:\r | |
2608 | ld a,'.' ;0fac 3e 2e > .\r | |
2609 | ret ;0fae c9 .\r | |
2610 | \r | |
2611 | cmd_F:\r | |
2612 | push de ;0faf d5 .\r | |
2613 | ld hl,DMA_BUF+1 ;0fb0 21 81 00 ! . .\r | |
2614 | ld (hl),' ' ;0fb3 36 20 6\r | |
2615 | inc hl ;0fb5 23 #\r | |
2616 | l0fb6h:\r | |
2617 | ld a,(de) ;0fb6 1a .\r | |
2618 | ld (hl),a ;0fb7 77 w\r | |
2619 | inc hl ;0fb8 23 #\r | |
2620 | inc de ;0fb9 13 .\r | |
2621 | and a ;0fba a7 .\r | |
2622 | jr nz,l0fb6h ;0fbb 20 f9 .\r | |
2623 | ld a,l ;0fbd 7d }\r | |
2624 | sub DMA_BUF+2 ;0fbe d6 82 . .\r | |
2625 | ld (DMA_BUF),a ;0fc0 32 80 00 2 . .\r | |
2626 | pop hl ;0fc3 e1 .\r | |
2627 | ld de,FCB ;0fc4 11 5c 00 . \ .\r | |
2628 | call parse_filename ;0fc7 cd cd 0f . . .\r | |
2629 | ld de,FCB2 ;0fca 11 6c 00 . l .\r | |
2630 | \r | |
2631 | parse_filename:\r | |
2632 | call sub_102ch ;0fcd cd 2c 10 . , .\r | |
2633 | push de ;0fd0 d5 .\r | |
2634 | push bc ;0fd1 c5 .\r | |
2635 | ld b,(hl) ;0fd2 46 F\r | |
2636 | inc hl ;0fd3 23 #\r | |
2637 | ld a,(hl) ;0fd4 7e ~\r | |
2638 | cp ':' ;0fd5 fe 3a . :\r | |
2639 | jr nz,l0fe1h ;0fd7 20 08 .\r | |
2640 | inc hl ;0fd9 23 #\r | |
2641 | ld a,b ;0fda 78 x\r | |
2642 | sub 040h ;0fdb d6 40 . @\r | |
2643 | and 01fh ;0fdd e6 1f . .\r | |
2644 | jr l0fe3h ;0fdf 18 02 . .\r | |
2645 | l0fe1h:\r | |
2646 | dec hl ;0fe1 2b +\r | |
2647 | xor a ;0fe2 af .\r | |
2648 | l0fe3h:\r | |
2649 | ld (de),a ;0fe3 12 .\r | |
2650 | inc de ;0fe4 13 .\r | |
2651 | ld b,8 ;0fe5 06 08 . .\r | |
2652 | call sub_0ff2h ;0fe7 cd f2 0f . . .\r | |
2653 | ld b,3 ;0fea 06 03 . .\r | |
2654 | call sub_0ff2h ;0fec cd f2 0f . . .\r | |
2655 | pop bc ;0fef c1 .\r | |
2656 | pop de ;0ff0 d1 .\r | |
2657 | ret ;0ff1 c9 .\r | |
2658 | \r | |
2659 | sub_0ff2h:\r | |
2660 | call sub_1012h ;0ff2 cd 12 10 . . .\r | |
2661 | jr z,l0ffeh ;0ff5 28 07 ( .\r | |
2662 | inc hl ;0ff7 23 #\r | |
2663 | ld (de),a ;0ff8 12 .\r | |
2664 | inc de ;0ff9 13 .\r | |
2665 | djnz sub_0ff2h ;0ffa 10 f6 . .\r | |
2666 | jr l1003h ;0ffc 18 05 . .\r | |
2667 | l0ffeh:\r | |
2668 | ld a,c ;0ffe 79 y\r | |
2669 | l0fffh:\r | |
2670 | ld (de),a ;0fff 12 .\r | |
2671 | inc de ;1000 13 .\r | |
2672 | djnz l0fffh ;1001 10 fc . .\r | |
2673 | l1003h:\r | |
2674 | call sub_1012h ;1003 cd 12 10 . . .\r | |
2675 | inc hl ;1006 23 #\r | |
2676 | jr nz,l1003h ;1007 20 fa .\r | |
2677 | cp '*' ;1009 fe 2a . *\r | |
2678 | jr z,l1003h ;100b 28 f6 ( .\r | |
2679 | cp '.' ;100d fe 2e . .\r | |
2680 | ret z ;100f c8 .\r | |
2681 | dec hl ;1010 2b +\r | |
2682 | ret ;1011 c9 .\r | |
2683 | \r | |
2684 | sub_1012h:\r | |
2685 | ld a,(hl) ;1012 7e ~\r | |
2686 | ld c,' ' ;1013 0e 20 .\r | |
2687 | and 01fh ;1015 e6 1f . .\r | |
2688 | ret z ;1017 c8 .\r | |
2689 | ld a,(hl) ;1018 7e ~\r | |
2690 | cp ' ' ;1019 fe 20 .\r | |
2691 | ret z ;101b c8 .\r | |
2692 | call sub_1043h ;101c cd 43 10 . C .\r | |
2693 | ret z ;101f c8 .\r | |
2694 | cp '/' ;1020 fe 2f . /\r | |
2695 | ret z ;1022 c8 .\r | |
2696 | cp '.' ;1023 fe 2e . .\r | |
2697 | ret z ;1025 c8 .\r | |
2698 | ld c,'?' ;1026 0e 3f . ?\r | |
2699 | cp '*' ;1028 fe 2a . *\r | |
2700 | ret ;102a c9 .\r | |
2701 | \r | |
2702 | l102bh:\r | |
2703 | inc hl ;102b 23 #\r | |
2704 | sub_102ch:\r | |
2705 | ld a,(hl) ;102c 7e ~\r | |
2706 | cp '/' ;102d fe 2f . /\r | |
2707 | jr z,l103bh ;102f 28 0a ( .\r | |
2708 | call sub_1043h ;1031 cd 43 10 . C .\r | |
2709 | jr z,l102bh ;1034 28 f5 ( .\r | |
2710 | l1036h:\r | |
2711 | cp ' ' ;1036 fe 20 .\r | |
2712 | jr z,l102bh ;1038 28 f1 ( .\r | |
2713 | ret ;103a c9 .\r | |
2714 | \r | |
2715 | l103bh:\r | |
2716 | ld a,(hl) ;103b 7e ~\r | |
2717 | cp ' '+1 ;103c fe 21 . !\r | |
2718 | jr c,l1036h ;103e 38 f6 8 .\r | |
2719 | inc hl ;1040 23 #\r | |
2720 | jr l103bh ;1041 18 f8 . .\r | |
2721 | \r | |
2722 | sub_1043h:\r | |
2723 | cp '=' ;1043 fe 3d . =\r | |
2724 | ret z ;1045 c8 .\r | |
2725 | cp '_' ;1046 fe 5f . _\r | |
2726 | ret z ;1048 c8 .\r | |
2727 | cp ',' ;1049 fe 2c . ,\r | |
2728 | ret ;104b c9 .\r | |
2729 | \r | |
2730 | fcb_clear_rc:\r | |
2731 | xor a ;104c af .\r | |
2732 | ld hl,FCB+12 ;104d 21 68 00 ! h .\r | |
2733 | ld b,21 ;1050 06 15 . .\r | |
2734 | l1052h:\r | |
2735 | ld (hl),a ;1052 77 w\r | |
2736 | inc hl ;1053 23 #\r | |
2737 | djnz l1052h ;1054 10 fc . .\r | |
2738 | ld de,DMA_BUF ;1056 11 80 00 . . .\r | |
2739 | ld c,BDOS_SETDMA ;1059 0e 1a . .\r | |
2740 | call ddtz_base ;105b cd 00 00 . . .\r | |
2741 | ld de,FCB ;105e 11 5c 00 . \ .\r | |
2742 | ret ;1061 c9 .\r | |
2743 | \r | |
2744 | cmd_R:\r | |
2745 | ld hl,0 ;1062 21 00 00 ! . .\r | |
2746 | call get_lastarg_def ;1065 cd 69 03 . i .\r | |
2747 | read_file:\r | |
2748 | push hl ;1068 e5 .\r | |
2749 | ld hl,0 ;1069 21 00 00 ! . .\r | |
2750 | ld (high_load),hl ;106c 22 9c 11 " . .\r | |
2751 | call fcb_clear_rc ;106f cd 4c 10 . L .\r | |
2752 | ld c,BDOS_OPEN ;1072 0e 0f . .\r | |
2753 | call ddtz_base ;1074 cd 00 00 . . .\r | |
2754 | inc a ;1077 3c <\r | |
2755 | jp z,ERROR ;1078 ca 07 01 . . .\r | |
2756 | ld hl,FCB+9 ;107b 21 65 00 ! e .\r | |
2757 | ld de,str_hex ;107e 11 a5 10 . . .\r | |
2758 | ld b,3 ;1081 06 03 . .\r | |
2759 | call strncmp ;1083 cd 67 11 . g .\r | |
2760 | pop hl ;1086 e1 .\r | |
2761 | jr z,read_hexfile ;1087 28 1f ( .\r | |
2762 | ld de,TPA ;1089 11 00 01 . . .\r | |
2763 | add hl,de ;108c 19 .\r | |
2764 | push hl ;108d e5 .\r | |
2765 | l108eh:\r | |
2766 | call read_sector ;108e cd 21 11 . ! .\r | |
2767 | pop hl ;1091 e1 .\r | |
25a690e5 | 2768 | jp z,p_max_high ;1092 ca 72 11 . r .\r |
0c4244e5 L |
2769 | ld de,DMA_BUF ;1095 11 80 00 . . .\r |
2770 | ld b,080h ;1098 06 80 . .\r | |
2771 | l109ah:\r | |
2772 | ld a,(de) ;109a 1a .\r | |
2773 | call cmdR_storebyte ;109b cd 36 11 . 6 .\r | |
2774 | inc de ;109e 13 .\r | |
2775 | inc hl ;109f 23 #\r | |
2776 | djnz l109ah ;10a0 10 f8 . .\r | |
2777 | push hl ;10a2 e5 .\r | |
2778 | jr l108eh ;10a3 18 e9 . .\r | |
2779 | \r | |
2780 | str_hex:\r | |
2781 | db 'HEX' ;10a5 48 H E X\r | |
2782 | \r | |
2783 | read_hexfile:\r | |
2784 | push hl ;10a8 e5 .\r | |
2785 | ld a,080h ;10a9 3e 80 > .\r | |
2786 | ld (cmdR_rindex),a ;10ab 32 20 11 2 .\r | |
2787 | l10aeh:\r | |
2788 | call read_byte ;10ae cd 05 11 . . .\r | |
2789 | jr z,rdhex_done ;10b1 28 31 ( 1\r | |
2790 | cp ':' ;10b3 fe 3a . :\r | |
2791 | jr nz,l10aeh ;10b5 20 f7 .\r | |
2792 | ld c,0 ;10b7 0e 00 . .\r | |
2793 | call read_hexchar ;10b9 cd e8 10 . . .\r | |
2794 | ld b,a ;10bc 47 G\r | |
2795 | call read_hexchar ;10bd cd e8 10 . . .\r | |
2796 | ld h,a ;10c0 67 g\r | |
2797 | call read_hexchar ;10c1 cd e8 10 . . .\r | |
2798 | ld l,a ;10c4 6f o\r | |
2799 | ld a,b ;10c5 78 x\r | |
2800 | and a ;10c6 a7 .\r | |
2801 | jr z,rdhex_done ;10c7 28 1b ( .\r | |
2802 | call read_hexchar ;10c9 cd e8 10 . . .\r | |
2803 | l10cch:\r | |
2804 | call read_hexchar ;10cc cd e8 10 . . .\r | |
2805 | pop de ;10cf d1 .\r | |
2806 | push de ;10d0 d5 .\r | |
2807 | push hl ;10d1 e5 .\r | |
2808 | add hl,de ;10d2 19 .\r | |
2809 | call cmdR_storebyte ;10d3 cd 36 11 . 6 .\r | |
2810 | pop hl ;10d6 e1 .\r | |
2811 | inc hl ;10d7 23 #\r | |
2812 | djnz l10cch ;10d8 10 f2 . .\r | |
2813 | call read_hexchar ;10da cd e8 10 . . .\r | |
2814 | ld a,c ;10dd 79 y\r | |
2815 | and a ;10de a7 .\r | |
2816 | jp nz,ERROR ;10df c2 07 01 . . .\r | |
2817 | jr l10aeh ;10e2 18 ca . .\r | |
2818 | rdhex_done:\r | |
2819 | pop hl ;10e4 e1 .\r | |
25a690e5 | 2820 | jp p_max_high ;10e5 c3 72 11 . r .\r |
0c4244e5 L |
2821 | \r |
2822 | read_hexchar:\r | |
2823 | call read_hexdigit ;10e8 cd f9 10 . . .\r | |
2824 | rlca ;10eb 07 .\r | |
2825 | rlca ;10ec 07 .\r | |
2826 | rlca ;10ed 07 .\r | |
2827 | rlca ;10ee 07 .\r | |
2828 | ld d,a ;10ef 57 W\r | |
2829 | call read_hexdigit ;10f0 cd f9 10 . . .\r | |
2830 | add a,d ;10f3 82 .\r | |
2831 | ld d,a ;10f4 57 W\r | |
2832 | add a,c ;10f5 81 .\r | |
2833 | ld c,a ;10f6 4f O\r | |
2834 | ld a,d ;10f7 7a z\r | |
2835 | ret ;10f8 c9 .\r | |
2836 | \r | |
2837 | read_hexdigit:\r | |
2838 | call read_byte ;10f9 cd 05 11 . . .\r | |
2839 | jr z,l1102h ;10fc 28 04 ( .\r | |
2840 | call hex_digit ;10fe cd 12 06 . . .\r | |
2841 | ret nc ;1101 d0 .\r | |
2842 | l1102h:\r | |
2843 | jp ERROR ;1102 c3 07 01 . . .\r | |
2844 | \r | |
2845 | read_byte:\r | |
2846 | ld a,(cmdR_rindex) ;1105 3a 20 11 : .\r | |
2847 | cp 080h ;1108 fe 80 . .\r | |
2848 | jr nz,l1111h ;110a 20 05 .\r | |
2849 | call read_sector ;110c cd 21 11 . ! .\r | |
2850 | ret z ;110f c8 .\r | |
2851 | sub a ;1110 97 .\r | |
2852 | l1111h:\r | |
2853 | inc a ;1111 3c <\r | |
2854 | ld (cmdR_rindex),a ;1112 32 20 11 2 .\r | |
2855 | push hl ;1115 e5 .\r | |
2856 | add a,07fh ;1116 c6 7f . \7f\r | |
2857 | ld l,a ;1118 6f o\r | |
2858 | ld h,000h ;1119 26 00 & .\r | |
2859 | ld a,(hl) ;111b 7e ~\r | |
2860 | pop hl ;111c e1 .\r | |
2861 | cp 01ah ;111d fe 1a . .\r | |
2862 | ret ;111f c9 .\r | |
2863 | \r | |
2864 | cmdR_rindex:\r | |
2865 | db 0 ;1120 00 .\r | |
2866 | \r | |
2867 | read_sector:\r | |
2868 | push hl ;1121 e5 .\r | |
2869 | push de ;1122 d5 .\r | |
2870 | push bc ;1123 c5 .\r | |
2871 | ld de,FCB ;1124 11 5c 00 . \ .\r | |
2872 | ld c,BDOS_READ ;1127 0e 14 . .\r | |
2873 | call ddtz_base ;1129 cd 00 00 . . .\r | |
2874 | dec a ;112c 3d =\r | |
2875 | jr z,l1132h ;112d 28 03 ( .\r | |
2876 | jp p,ERROR ;112f f2 07 01 . . .\r | |
2877 | l1132h:\r | |
2878 | pop bc ;1132 c1 .\r | |
2879 | pop de ;1133 d1 .\r | |
2880 | pop hl ;1134 e1 .\r | |
2881 | ret ;1135 c9 .\r | |
2882 | \r | |
2883 | cmdR_storebyte:\r | |
2884 | push af ;1136 f5 .\r | |
2885 | push de ;1137 d5 .\r | |
2886 | ld de,TPA ;1138 11 00 01 . . .\r | |
2887 | call cp_hl_de ;113b cd ee 02 . . .\r | |
2888 | jp c,ERROR ;113e da 07 01 . . .\r | |
2889 | ld de,(BDOS+1) ;1141 ed 5b 06 00 . [ . .\r | |
2890 | call cp_hl_de ;1145 cd ee 02 . . .\r | |
2891 | jp nc,ERROR ;1148 d2 07 01 . . .\r | |
2892 | ld de,(high_load) ;114b ed 5b 9c 11 . [ . .\r | |
2893 | call cp_hl_de ;114f cd ee 02 . . .\r | |
2894 | jr c,l1157h ;1152 38 03 8 .\r | |
2895 | ld (high_load),hl ;1154 22 9c 11 " . .\r | |
2896 | l1157h:\r | |
2897 | ld de,(max_load) ;1157 ed 5b 9e 11 . [ . .\r | |
2898 | call cp_hl_de ;115b cd ee 02 . . .\r | |
2899 | jr c,l1163h ;115e 38 03 8 .\r | |
2900 | ld (max_load),hl ;1160 22 9e 11 " . .\r | |
2901 | l1163h:\r | |
2902 | pop de ;1163 d1 .\r | |
2903 | pop af ;1164 f1 .\r | |
2904 | ld (hl),a ;1165 77 w\r | |
2905 | ret ;1166 c9 .\r | |
2906 | \r | |
2907 | strncmp:\r | |
2908 | ld a,(de) ;1167 1a .\r | |
2909 | cp (hl) ;1168 be .\r | |
2910 | inc de ;1169 13 .\r | |
2911 | inc hl ;116a 23 #\r | |
2912 | ret nz ;116b c0 .\r | |
2913 | djnz strncmp ;116c 10 f9 . .\r | |
2914 | ret ;116e c9 .\r | |
2915 | \r | |
25a690e5 | 2916 | p_max_high0:\r |
0c4244e5 | 2917 | call assert_eol ;116f cd d6 02 . . .\r |
25a690e5 | 2918 | p_max_high:\r |
0c4244e5 L |
2919 | ld hl,msg_high ;1172 21 8d 11 ! . .\r |
2920 | call pstr ;1175 cd 88 02 . . .\r | |
2921 | ld hl,(high_load) ;1178 2a 9c 11 * . .\r | |
2922 | call out_hl ;117b cd 13 02 . . .\r | |
2923 | ld hl,msg_max ;117e 21 94 11 ! . .\r | |
2924 | call pstr ;1181 cd 88 02 . . .\r | |
2925 | ld hl,(max_load) ;1184 2a 9e 11 * . .\r | |
2926 | call out_hl ;1187 cd 13 02 . . .\r | |
2927 | jp crlf ;118a c3 a3 02 . . .\r | |
2928 | \r | |
2929 | msg_high:\r | |
2930 | DC 'High = '\r | |
2931 | msg_max:\r | |
2932 | DC ' Max = '\r | |
2933 | \r | |
2934 | high_load:\r | |
2935 | defw TPA ;119c 00 01 . .\r | |
2936 | max_load:\r | |
2937 | defw TPA ;119e 00 01 . .\r | |
2938 | \r | |
2939 | cmd_W:\r | |
2940 | call get_arg_range ;11a0 cd 7d 03 . } .\r | |
2941 | call assert_eol ;11a3 cd d6 02 . . .\r | |
2942 | push hl ;11a6 e5 .\r | |
2943 | ld a,c ;11a7 79 y\r | |
2944 | add a,07fh ;11a8 c6 7f . \7f\r | |
2945 | jr nc,l11adh ;11aa 30 01 0 .\r | |
2946 | inc b ;11ac 04 .\r | |
2947 | l11adh:\r | |
2948 | and 080h ;11ad e6 80 . .\r | |
2949 | ld c,a ;11af 4f O\r | |
2950 | push bc ;11b0 c5 .\r | |
2951 | ld a,(FCB+1) ;11b1 3a 5d 00 : ] .\r | |
2952 | cp ' ' ;11b4 fe 20 .\r | |
2953 | jr z,error5 ;11b6 28 3b ( ;\r | |
2954 | call fcb_clear_rc ;11b8 cd 4c 10 . L .\r | |
2955 | push de ;11bb d5 .\r | |
2956 | ld c,BDOS_DELETE ;11bc 0e 13 . .\r | |
2957 | call ddtz_base ;11be cd 00 00 . . .\r | |
2958 | pop de ;11c1 d1 .\r | |
2959 | ld c,BDOS_CREATE ;11c2 0e 16 . .\r | |
2960 | call ddtz_base ;11c4 cd 00 00 . . .\r | |
2961 | inc a ;11c7 3c <\r | |
2962 | jr z,error5 ;11c8 28 29 ( )\r | |
2963 | pop bc ;11ca c1 .\r | |
2964 | pop hl ;11cb e1 .\r | |
2965 | l11cch:\r | |
2966 | ld a,b ;11cc 78 x\r | |
2967 | or c ;11cd b1 .\r | |
2968 | jr z,close_file ;11ce 28 26 ( &\r | |
2969 | push bc ;11d0 c5 .\r | |
2970 | ld de,080h ;11d1 11 80 00 . . . DMA_BUF\r | |
2971 | ld b,d ;11d4 42 B\r | |
2972 | ld c,e ;11d5 4b K\r | |
2973 | ldir ;11d6 ed b0 . .\r | |
2974 | call write_sector ;11d8 cd e4 11 . . .\r | |
2975 | ex (sp),hl ;11db e3 .\r | |
2976 | ld bc,0ff80h ;11dc 01 80 ff . . .\r | |
2977 | add hl,bc ;11df 09 .\r | |
2978 | ex (sp),hl ;11e0 e3 .\r | |
2979 | pop bc ;11e1 c1 .\r | |
2980 | jr l11cch ;11e2 18 e8 . .\r | |
2981 | \r | |
2982 | write_sector:\r | |
2983 | push hl ;11e4 e5 .\r | |
2984 | ld de,FCB ;11e5 11 5c 00 . \ .\r | |
2985 | ld c,BDOS_WRITE ;11e8 0e 15 . .\r | |
2986 | call ddtz_base ;11ea cd 00 00 . . .\r | |
2987 | pop hl ;11ed e1 .\r | |
2988 | and a ;11ee a7 .\r | |
2989 | ret z ;11ef c8 .\r | |
2990 | call close_file ;11f0 cd f6 11 . . .\r | |
2991 | error5:\r | |
2992 | jp ERROR ;11f3 c3 07 01 . . .\r | |
2993 | \r | |
2994 | close_file:\r | |
2995 | ld de,FCB ;11f6 11 5c 00 . \ .\r | |
2996 | ld c,BDOS_CLOSE ;11f9 0e 10 . .\r | |
2997 | jp ddtz_base ;11fb c3 00 00 . . .\r | |
2998 | \r | |
2999 | cmd_A:\r | |
3000 | ld hl,(last_A) ;11fe 2a 64 12 * d .\r | |
3001 | call get_lastarg_def ;1201 cd 69 03 . i .\r | |
3002 | push hl ;1204 e5 .\r | |
3003 | pop iy ;1205 fd e1 . .\r | |
3004 | ld hl,l1259h ;1207 21 59 12 ! Y .\r | |
3005 | ld (CMD_ERR),hl ;120a 22 66 00 " f .\r | |
3006 | ld (l1262h),sp ;120d ed 73 62 12 . s b .\r | |
3007 | l1211h:\r | |
3008 | push iy ;1211 fd e5 . .\r | |
3009 | pop hl ;1213 e1 .\r | |
3010 | ld (last_A),hl ;1214 22 64 12 " d .\r | |
3011 | ld (l0062h),hl ;1217 22 62 00 " b .\r | |
3012 | push hl ;121a e5 .\r | |
25a690e5 | 3013 | call p_disas_line ;121b cd 2d 19 . - .\r |
0c4244e5 L |
3014 | pop iy ;121e fd e1 . .\r |
3015 | ld c,b ;1220 48 H\r | |
3016 | ld de,(offs.@) ;1221 ed 5b 64 00 . [ d .\r | |
3017 | ld a,d ;1225 7a z\r | |
3018 | or e ;1226 b3 .\r | |
3019 | ld b,011h ;1227 06 11 . .\r | |
3020 | jr z,l122dh ;1229 28 02 ( .\r | |
3021 | ld b,019h ;122b 06 19 . .\r | |
3022 | l122dh:\r | |
3023 | call outbl ;122d cd 9f 02 . . .\r | |
3024 | ld a,(con_col) ;1230 3a 72 02 : r .\r | |
3025 | cp b ;1233 b8 .\r | |
3026 | jr c,l122dh ;1234 38 f7 8 .\r | |
3027 | push bc ;1236 c5 .\r | |
3028 | call get_line ;1237 cd 4e 01 . N .\r | |
3029 | pop bc ;123a c1 .\r | |
3030 | call skipbl ;123b cd bf 02 . . .\r | |
3031 | cp '.' ;123e fe 2e . .\r | |
3032 | ret z ;1240 c8 .\r | |
3033 | cp '-' ;1241 fe 2d . -\r | |
3034 | jr nz,l124bh ;1243 20 06 .\r | |
3035 | ld iy,(cmd_A_prev) ;1245 fd 2a 66 12 . * f .\r | |
3036 | jr l1211h ;1249 18 c6 . .\r | |
3037 | l124bh:\r | |
3038 | and a ;124b a7 .\r | |
3039 | call nz,sub_1268h ;124c c4 68 12 . h .\r | |
3040 | ld (cmd_A_prev),iy ;124f fd 22 66 12 . " f .\r | |
3041 | ld b,0 ;1253 06 00 . .\r | |
3042 | add iy,bc ;1255 fd 09 . .\r | |
3043 | jr l1211h ;1257 18 b8 . .\r | |
3044 | l1259h:\r | |
3045 | call l0146h ;1259 cd 46 01 . F .\r | |
3046 | ld sp,(l1262h) ;125c ed 7b 62 12 . { b .\r | |
3047 | jr l1211h ;1260 18 af . .\r | |
3048 | \r | |
3049 | l1262h:\r | |
3050 | dw 0 ;1262 00 00 .\r | |
3051 | last_A:\r | |
3052 | dw TPA ;1264 00 01 .\r | |
3053 | cmd_A_prev:\r | |
3054 | dw TPA ;1266 00 01 . .\r | |
3055 | \r | |
3056 | sub_1268h:\r | |
3057 | call skipbl ;1268 cd bf 02 . . .\r | |
3058 | ld hl,t_MNEMONICS ;126b 21 c6 1e ! . .\r | |
3059 | call sub_030ah ;126e cd 0a 03 . . .\r | |
3060 | jp nc,ERROR ;1271 d2 07 01 . . .\r | |
3061 | call skipbl ;1274 cd bf 02 . . .\r | |
3062 | push de ;1277 d5 .\r | |
3063 | ld a,b ;1278 78 x\r | |
3064 | add a,b ;1279 80 .\r | |
3065 | add a,b ;127a 80 .\r | |
3066 | ld hl,b_1289_start ;127b 21 89 12 ! . .\r | |
3067 | call add_hl_a ;127e cd b9 02 . . .\r | |
3068 | ld e,(hl) ;1281 5e ^\r | |
3069 | inc hl ;1282 23 #\r | |
3070 | ld d,(hl) ;1283 56 V\r | |
3071 | inc hl ;1284 23 #\r | |
3072 | ld b,(hl) ;1285 46 F\r | |
3073 | ex de,hl ;1286 eb .\r | |
3074 | pop de ;1287 d1 .\r | |
3075 | jp (hl) ;1288 e9 .\r | |
3076 | \r | |
3077 | b_1289_start:\r | |
15f6bf95 L |
3078 | defw as.ADC_SBC ;ADC 1289 51 15 Q .\r |
3079 | defb 088h ; 128b 88 .\r | |
3080 | defw as.ADD ;ADD 128c 71 15 q .\r | |
3081 | defb 080h ; 128e 80 .\r | |
3082 | defw as.AND_CP_OR_SUB_XOR ;AND 128f a8 15 . .\r | |
3083 | defb 0a0h ; 1291 a0 .\r | |
3084 | defw as.BITOP ;BIT 1292 09 16 . .\r | |
3085 | defb 040h ; 1294 40 @\r | |
3086 | defw as.CALL ;CALL 1295 2d 16 - .\r | |
3087 | defb 0c4h ; 1297 c4 .\r | |
3088 | defw as.opc.noarg ;CCF 1298 3b 15 ; .\r | |
3089 | defb 03fh ; 129a 3f ?\r | |
3090 | defw as.AND_CP_OR_SUB_XOR ;CP 129b a8 15 . .\r | |
3091 | defb 0b8h ; 129d b8 .\r | |
3092 | defw gen.opc.ED2 ;CPD 129e 44 15 D .\r | |
3093 | defb 0a9h ; 12a0 a9 .\r | |
3094 | defw gen.opc.ED2 ;CPDR 12a1 44 15 D .\r | |
3095 | defb 0b9h ; 12a3 b9 .\r | |
3096 | defw gen.opc.ED2 ;CPI 12a4 44 15 D .\r | |
3097 | defb 0a1h ; 12a6 a1 .\r | |
3098 | defw gen.opc.ED2 ;CPIR 12a7 44 15 D .\r | |
3099 | defb 0b1h ; 12a9 b1 .\r | |
3100 | defw as.opc.noarg ;CPL 12aa 3b 15 ; .\r | |
3101 | defb 02fh ; 12ac 2f /\r | |
3102 | defw as.opc.noarg ;DAA 12ad 3b 15 ; .\r | |
3103 | defb 027h ; 12af 27 '\r | |
3104 | defw as.DEC_INC ;DEC 12b0 98 17 . .\r | |
3105 | defb 005h ; 12b2 05 .\r | |
3106 | defw as.opc.noarg ;DI 12b3 3b 15 ; .\r | |
3107 | defb 0f3h ; 12b5 f3 .\r | |
3108 | defw as.DJNZ ;DJNZ 12b6 99 16 . .\r | |
3109 | defb 010h ; 12b8 10 .\r | |
3110 | defw as.opc.noarg ;EI 12b9 3b 15 ; .\r | |
3111 | defb 0fbh ; 12bb fb .\r | |
3112 | defw as.EX ;EX 12bc 49 17 I .\r | |
3113 | defb 0e3h ; 12be e3 .\r | |
3114 | defw as.opc.noarg ;EXX 12bf 3b 15 ; .\r | |
3115 | defb 0d9h ; 12c1 d9 .\r | |
3116 | defw as.opc.noarg ;HALT 12c2 3b 15 ; .\r | |
3117 | defb 076h ; 12c4 76 v\r | |
3118 | defw as.IM ;IM 12c5 b4 16 . .\r | |
3119 | defb 046h ; 12c7 46 F\r | |
3120 | defw as.IN ;IN 12c8 ed 16 . .\r | |
3121 | defb 040h ; 12ca 40 @\r | |
3122 | defw as.DEC_INC ;INC 12cb 98 17 . .\r | |
3123 | defb 004h ; 12cd 04 .\r | |
3124 | defw gen.opc.ED2 ;IND 12ce 44 15 D .\r | |
3125 | defb 0aah ; 12d0 aa .\r | |
3126 | defw gen.opc.ED2 ;INDR 12d1 44 15 D .\r | |
3127 | defb 0bah ; 12d3 ba .\r | |
3128 | defw gen.opc.ED2 ;INI 12d4 44 15 D .\r | |
3129 | defb 0a2h ; 12d6 a2 .\r | |
3130 | defw gen.opc.ED2 ;INIR 12d7 44 15 D .\r | |
3131 | defb 0b2h ; 12d9 b2 .\r | |
3132 | defw as.JP ;JP 12da 53 16 S .\r | |
3133 | defb 0c2h ; 12dc c2 .\r | |
3134 | defw as.JR ;JR 12dd a0 16 . .\r | |
3135 | defb 020h ; 12df 20\r | |
3136 | defw as.LD ;LD 12e0 52 13 R .\r | |
3137 | defb 040h ; 12e2 40 @\r | |
3138 | defw gen.opc.ED2 ;LDD 12e3 44 15 D .\r | |
3139 | defb 0a8h ; 12e5 a8 .\r | |
3140 | defw gen.opc.ED2 ;LDDR 12e6 44 15 D .\r | |
3141 | defb 0b8h ; 12e8 b8 .\r | |
3142 | defw gen.opc.ED2 ;LDI 12e9 44 15 D .\r | |
3143 | defb 0a0h ; 12eb a0 .\r | |
3144 | defw gen.opc.ED2 ;LDIR 12ec 44 15 D .\r | |
3145 | defb 0b0h ; 12ee b0 .\r | |
3146 | defw gen.opc.ED2 ;NEG 12ef 44 15 D .\r | |
3147 | defb 044h ; 12f1 44 D\r | |
3148 | defw as.opc.noarg ;NOP 12f2 3b 15 ; .\r | |
3149 | defb 000h ; 12f4 00 .\r | |
3150 | defw as.AND_CP_OR_SUB_XOR ;OR 12f5 a8 15 . .\r | |
3151 | defb 0b0h ; 12f7 b0 .\r | |
3152 | defw gen.opc.ED2 ;OTDR 12f8 44 15 D .\r | |
3153 | defb 0bbh ; 12fa bb .\r | |
3154 | defw gen.opc.ED2 ;OTIR 12fb 44 15 D .\r | |
3155 | defb 0b3h ; 12fd b3 .\r | |
3156 | defw as.OUT ;OUT 12fe 21 17 ! .\r | |
3157 | defb 041h ; 1300 41 A\r | |
3158 | defw gen.opc.ED2 ;OUTD 1301 44 15 D .\r | |
3159 | defb 0abh ; 1303 ab .\r | |
3160 | defw gen.opc.ED2 ;OUTI 1304 44 15 D .\r | |
3161 | defb 0a3h ; 1306 a3 .\r | |
3162 | defw as.POP_PUSH ;POP 1307 d9 16 . .\r | |
3163 | defb 0c1h ; 1309 c1 .\r | |
3164 | defw as.POP_PUSH ;PUSH 130a d9 16 . .\r | |
3165 | defb 0c5h ; 130c c5 .\r | |
3166 | defw as.BITOP ;RES 130d 09 16 . .\r | |
3167 | defb 080h ; 130f 80 .\r | |
3168 | defw as.RET ;RET 1310 45 16 E .\r | |
3169 | defb 0c0h ; 1312 c0 .\r | |
3170 | defw gen.opc.ED2 ;RETI 1313 44 15 D .\r | |
3171 | defb 04dh ; 1315 4d M\r | |
3172 | defw gen.opc.ED2 ;RETN 1316 44 15 D .\r | |
3173 | defb 045h ; 1318 45 E\r | |
3174 | defw as.SHIFTOP ;RL 1319 d5 15 . .\r | |
3175 | defb 010h ; 131b 10 .\r | |
3176 | defw as.opc.noarg ;RLA 131c 3b 15 ; .\r | |
3177 | defb 017h ; 131e 17 .\r | |
3178 | defw as.SHIFTOP ;RLC 131f d5 15 . .\r | |
3179 | defb 000h ; 1321 00 .\r | |
3180 | defw as.opc.noarg ;RLCA 1322 3b 15 ; .\r | |
3181 | defb 007h ; 1324 07 .\r | |
3182 | defw gen.opc.ED2 ;RLD 1325 44 15 D .\r | |
3183 | defb 06fh ; 1327 6f o\r | |
3184 | defw as.SHIFTOP ;RR 1328 d5 15 . .\r | |
3185 | defb 018h ; 132a 18 .\r | |
3186 | defw as.opc.noarg ;RRA 132b 3b 15 ; .\r | |
3187 | defb 01fh ; 132d 1f .\r | |
3188 | defw as.SHIFTOP ;RRC 132e d5 15 . .\r | |
3189 | defb 008h ; 1330 08 .\r | |
3190 | defw as.opc.noarg ;RRCA 1331 3b 15 ; .\r | |
3191 | defb 00fh ; 1333 0f .\r | |
3192 | defw gen.opc.ED2 ;RRD 1334 44 15 D .\r | |
3193 | defb 067h ; 1336 67 g\r | |
3194 | defw as.RST ;RST 1337 ca 16 . .\r | |
3195 | defb 0c7h ; 1339 c7 .\r | |
3196 | defw as.ADC_SBC ;SBC 133a 51 15 Q .\r | |
3197 | defb 098h ; 133c 98 .\r | |
3198 | defw as.opc.noarg ;SCF 133d 3b 15 ; .\r | |
3199 | defb 037h ; 133f 37 7\r | |
3200 | defw as.BITOP ;SET 1340 09 16 . .\r | |
3201 | defb 0c0h ; 1342 c0 .\r | |
3202 | defw as.SHIFTOP ;SLA 1343 d5 15 . .\r | |
3203 | defb 020h ; 1345 20\r | |
3204 | defw as.SHIFTOP ;SRA 1346 d5 15 . .\r | |
3205 | defb 028h ; 1348 28 (\r | |
3206 | defw as.SHIFTOP ;SRL 1349 d5 15 . .\r | |
3207 | defb 038h ; 134b 38 8\r | |
3208 | defw as.AND_CP_OR_SUB_XOR ;SUB 134c a8 15 . .\r | |
3209 | defb 090h ; 134e 90 .\r | |
3210 | defw as.AND_CP_OR_SUB_XOR ;XOR 134f a8 15 . .\r | |
3211 | defb 0a8h ; 1351 a8 .\r | |
3212 | \r | |
3213 | as.LD:\r | |
3214 | call arg.r_HL_A ;1352 cd 2e 18 . . .\r | |
0c4244e5 | 3215 | jr c,l13d4h ;1355 38 7d 8 }\r |
15f6bf95 | 3216 | call arg.IDX_displcmnt ;1357 cd 55 18 . U .\r |
0c4244e5 | 3217 | jp c,l1471h ;135a da 71 14 . q .\r |
15f6bf95 | 3218 | call arg.ww ;135d cd 1b 18 . . .\r |
0c4244e5 | 3219 | jp c,l149ch ;1360 da 9c 14 . . .\r |
15f6bf95 | 3220 | call arg.IX_IY ;1363 cd 3d 18 . = .\r |
0c4244e5 L |
3221 | jp c,l14f5h ;1366 da f5 14 . . .\r |
3222 | ld a,(de) ;1369 1a .\r | |
3223 | cp 'I' ;136a fe 49 . I\r | |
3224 | jp z,l1511h ;136c ca 11 15 . . .\r | |
3225 | cp 'R' ;136f fe 52 . R\r | |
3226 | jp z,l1519h ;1371 ca 19 15 . . .\r | |
3227 | cp '(' ;1374 fe 28 . (\r | |
3228 | jp nz,ERROR ;1376 c2 07 01 . . .\r | |
3229 | inc de ;1379 13 .\r | |
15f6bf95 | 3230 | call arg.ww ;137a cd 1b 18 . . .\r |
0c4244e5 L |
3231 | jp c,l1528h ;137d da 28 15 . ( .\r |
3232 | call test_expr ;1380 cd 09 18 . . .\r | |
3233 | call test_paren_close ;1383 cd c5 18 . . .\r | |
3234 | call assert_comma ;1386 cd be 18 . . .\r | |
15f6bf95 | 3235 | call arg.ww ;1389 cd 1b 18 . . .\r |
0c4244e5 | 3236 | jr c,l13c2h ;138c 38 34 8 4\r |
15f6bf95 | 3237 | call arg.IX_IY ;138e cd 3d 18 . = .\r |
0c4244e5 L |
3238 | jr nc,l13aah ;1391 30 17 0 .\r |
3239 | ld b,022h ;1393 06 22 . "\r | |
3240 | l1395h:\r | |
3241 | call assert_eol ;1395 cd d6 02 . . .\r | |
3242 | ld a,(prefix_ixiy) ;1398 3a cc 18 : . .\r | |
3243 | l139bh:\r | |
3244 | ld (iy+000h),a ;139b fd 77 00 . w .\r | |
3245 | ld (iy+001h),b ;139e fd 70 01 . p .\r | |
3246 | ld (iy+002h),l ;13a1 fd 75 02 . u .\r | |
3247 | ld (iy+003h),h ;13a4 fd 74 03 . t .\r | |
3248 | ld c,004h ;13a7 0e 04 . .\r | |
3249 | ret ;13a9 c9 .\r | |
3250 | l13aah:\r | |
3251 | ld a,(de) ;13aa 1a .\r | |
3252 | cp 'A' ;13ab fe 41 . A\r | |
3253 | jp nz,ERROR ;13ad c2 07 01 . . .\r | |
3254 | inc de ;13b0 13 .\r | |
3255 | ld b,032h ;13b1 06 32 . 2\r | |
15f6bf95 | 3256 | as.store_3:\r |
0c4244e5 L |
3257 | call assert_eol ;13b3 cd d6 02 . . .\r |
3258 | ld (iy+000h),b ;13b6 fd 70 00 . p .\r | |
3259 | ld (iy+001h),l ;13b9 fd 75 01 . u .\r | |
3260 | ld (iy+002h),h ;13bc fd 74 02 . t .\r | |
3261 | ld c,003h ;13bf 0e 03 . .\r | |
3262 | ret ;13c1 c9 .\r | |
3263 | l13c2h:\r | |
3264 | cp 020h ;13c2 fe 20 .\r | |
3265 | jr z,l13d0h ;13c4 28 0a ( .\r | |
3266 | add a,043h ;13c6 c6 43 . C\r | |
3267 | ld b,a ;13c8 47 G\r | |
3268 | l13c9h:\r | |
3269 | call assert_eol ;13c9 cd d6 02 . . .\r | |
3270 | ld a,0edh ;13cc 3e ed > .\r | |
3271 | jr l139bh ;13ce 18 cb . .\r | |
3272 | l13d0h:\r | |
3273 | ld b,022h ;13d0 06 22 . "\r | |
15f6bf95 | 3274 | jr as.store_3 ;13d2 18 df . .\r |
0c4244e5 L |
3275 | l13d4h:\r |
3276 | ld b,a ;13d4 47 G\r | |
3277 | call assert_comma ;13d5 cd be 18 . . .\r | |
15f6bf95 | 3278 | call arg.r_HL_A ;13d8 cd 2e 18 . . .\r |
0c4244e5 L |
3279 | jr nc,l13f0h ;13db 30 13 0 .\r |
3280 | push af ;13dd f5 .\r | |
3281 | ld a,b ;13de 78 x\r | |
3282 | rlca ;13df 07 .\r | |
3283 | rlca ;13e0 07 .\r | |
3284 | rlca ;13e1 07 .\r | |
3285 | ld b,a ;13e2 47 G\r | |
3286 | pop af ;13e3 f1 .\r | |
3287 | add a,b ;13e4 80 .\r | |
3288 | add a,040h ;13e5 c6 40 . @\r | |
3289 | cp 076h ;13e7 fe 76 . v\r | |
3290 | jp z,ERROR ;13e9 ca 07 01 . . .\r | |
3291 | l13ech:\r | |
3292 | ld b,a ;13ec 47 G\r | |
15f6bf95 | 3293 | jp as.opc.noarg ;13ed c3 3b 15 . ; .\r |
0c4244e5 | 3294 | l13f0h:\r |
15f6bf95 | 3295 | call arg.IDX_displcmnt ;13f0 cd 55 18 . U .\r |
0c4244e5 L |
3296 | jr nc,l1413h ;13f3 30 1e 0 .\r |
3297 | ld a,b ;13f5 78 x\r | |
3298 | rlca ;13f6 07 .\r | |
3299 | rlca ;13f7 07 .\r | |
3300 | rlca ;13f8 07 .\r | |
3301 | add a,046h ;13f9 c6 46 . F\r | |
3302 | cp 076h ;13fb fe 76 . v\r | |
3303 | jp z,ERROR ;13fd ca 07 01 . . .\r | |
15f6bf95 | 3304 | \r |
0c4244e5 L |
3305 | l1400h:\r |
3306 | ld b,a ;1400 47 G\r | |
3307 | call assert_eol ;1401 cd d6 02 . . .\r | |
3308 | ld (iy+001h),b ;1404 fd 70 01 . p .\r | |
3309 | ld (iy+002h),c ;1407 fd 71 02 . q .\r | |
3310 | ld a,(prefix_ixiy) ;140a 3a cc 18 : . .\r | |
3311 | ld (iy+000h),a ;140d fd 77 00 . w .\r | |
3312 | ld c,003h ;1410 0e 03 . .\r | |
3313 | ret ;1412 c9 .\r | |
3314 | l1413h:\r | |
3315 | ld a,(de) ;1413 1a .\r | |
3316 | cp 'I' ;1414 fe 49 . I\r | |
3317 | jr z,l1426h ;1416 28 0e ( .\r | |
3318 | cp 'R' ;1418 fe 52 . R\r | |
3319 | jr nz,l1432h ;141a 20 16 .\r | |
3320 | ld a,b ;141c 78 x\r | |
3321 | cp 007h ;141d fe 07 . .\r | |
3322 | jp nz,ERROR ;141f c2 07 01 . . .\r | |
3323 | ld b,05fh ;1422 06 5f . _\r | |
3324 | jr l142eh ;1424 18 08 . .\r | |
3325 | l1426h:\r | |
3326 | ld a,b ;1426 78 x\r | |
3327 | cp 007h ;1427 fe 07 . .\r | |
3328 | jp nz,ERROR ;1429 c2 07 01 . . .\r | |
3329 | ld b,057h ;142c 06 57 . W\r | |
3330 | l142eh:\r | |
3331 | inc de ;142e 13 .\r | |
15f6bf95 | 3332 | jp gen.opc.ED2 ;142f c3 44 15 . D .\r |
0c4244e5 L |
3333 | l1432h:\r |
3334 | cp '(' ;1432 fe 28 . (\r | |
3335 | jr z,l144ch ;1434 28 16 ( .\r | |
15f6bf95 | 3336 | call arg.imm_8bit ;1436 cd ff 17 . . .\r |
0c4244e5 L |
3337 | ld a,b ;1439 78 x\r |
3338 | rlca ;143a 07 .\r | |
3339 | rlca ;143b 07 .\r | |
3340 | rlca ;143c 07 .\r | |
3341 | add a,006h ;143d c6 06 . .\r | |
3342 | l143fh:\r | |
3343 | ld b,a ;143f 47 G\r | |
15f6bf95 | 3344 | as.store_2:\r |
0c4244e5 L |
3345 | call assert_eol ;1440 cd d6 02 . . .\r |
3346 | ld (iy+000h),b ;1443 fd 70 00 . p .\r | |
3347 | ld (iy+001h),l ;1446 fd 75 01 . u .\r | |
3348 | ld c,002h ;1449 0e 02 . .\r | |
3349 | ret ;144b c9 .\r | |
3350 | l144ch:\r | |
3351 | inc de ;144c 13 .\r | |
3352 | ld a,b ;144d 78 x\r | |
3353 | cp 007h ;144e fe 07 . .\r | |
3354 | jp nz,ERROR ;1450 c2 07 01 . . .\r | |
15f6bf95 | 3355 | call arg.ww ;1453 cd 1b 18 . . .\r |
0c4244e5 L |
3356 | jr nc,l1466h ;1456 30 0e 0 .\r |
3357 | cp 030h ;1458 fe 30 . 0\r | |
3358 | jp nc,ERROR ;145a d2 07 01 . . .\r | |
3359 | add a,00ah ;145d c6 0a . .\r | |
3360 | ld b,a ;145f 47 G\r | |
3361 | call test_paren_close ;1460 cd c5 18 . . .\r | |
15f6bf95 | 3362 | jp as.opc.noarg ;1463 c3 3b 15 . ; .\r |
0c4244e5 L |
3363 | l1466h:\r |
3364 | call test_expr ;1466 cd 09 18 . . .\r | |
3365 | call test_paren_close ;1469 cd c5 18 . . .\r | |
3366 | ld b,03ah ;146c 06 3a . :\r | |
15f6bf95 L |
3367 | jp as.store_3 ;146e c3 b3 13 . . .\r |
3368 | \r | |
0c4244e5 L |
3369 | l1471h:\r |
3370 | call assert_comma ;1471 cd be 18 . . .\r | |
15f6bf95 | 3371 | call arg.r_HL_A ;1474 cd 2e 18 . . .\r |
0c4244e5 L |
3372 | jr nc,l1483h ;1477 30 0a 0 .\r |
3373 | cp 006h ;1479 fe 06 . .\r | |
3374 | jp z,ERROR ;147b ca 07 01 . . .\r | |
3375 | add a,070h ;147e c6 70 . p\r | |
3376 | jp l1400h ;1480 c3 00 14 . . .\r | |
15f6bf95 | 3377 | \r |
0c4244e5 | 3378 | l1483h:\r |
15f6bf95 | 3379 | call arg.imm_8bit ;1483 cd ff 17 . . .\r |
0c4244e5 L |
3380 | call assert_eol ;1486 cd d6 02 . . .\r |
3381 | ld a,(prefix_ixiy) ;1489 3a cc 18 : . .\r | |
3382 | ld (iy+000h),a ;148c fd 77 00 . w .\r | |
3383 | ld (iy+001h),036h ;148f fd 36 01 36 . 6 . 6\r | |
3384 | ld (iy+002h),c ;1493 fd 71 02 . q .\r | |
3385 | ld (iy+003h),l ;1496 fd 75 03 . u .\r | |
3386 | ld c,004h ;1499 0e 04 . .\r | |
3387 | ret ;149b c9 .\r | |
3388 | l149ch:\r | |
3389 | ld b,a ;149c 47 G\r | |
3390 | call assert_comma ;149d cd be 18 . . .\r | |
3391 | ld hl,t_HL.AF ;14a0 21 af 1f ! . .\r | |
3392 | call sub_0318h ;14a3 cd 18 03 . . .\r | |
3393 | jr c,l14c3h ;14a6 38 1b 8 .\r | |
15f6bf95 | 3394 | call arg.IX_IY ;14a8 cd 3d 18 . = .\r |
0c4244e5 L |
3395 | jr nc,l14cch ;14ab 30 1f 0 .\r |
3396 | ld a,b ;14ad 78 x\r | |
3397 | cp 030h ;14ae fe 30 . 0\r | |
3398 | jr nz,error6 ;14b0 20 73 s\r | |
3399 | ld b,0f9h ;14b2 06 f9 . .\r | |
3400 | l14b4h:\r | |
3401 | call assert_eol ;14b4 cd d6 02 . . .\r | |
3402 | ld a,(prefix_ixiy) ;14b7 3a cc 18 : . .\r | |
3403 | ld (iy+000h),a ;14ba fd 77 00 . w .\r | |
3404 | ld (iy+001h),b ;14bd fd 70 01 . p .\r | |
3405 | ld c,002h ;14c0 0e 02 . .\r | |
3406 | ret ;14c2 c9 .\r | |
3407 | l14c3h:\r | |
3408 | ld a,b ;14c3 78 x\r | |
3409 | cp 030h ;14c4 fe 30 . 0\r | |
3410 | jr nz,error6 ;14c6 20 5d ]\r | |
3411 | ld b,0f9h ;14c8 06 f9 . .\r | |
15f6bf95 | 3412 | jr as.opc.noarg ;14ca 18 6f . o\r |
0c4244e5 L |
3413 | l14cch:\r |
3414 | ld a,(de) ;14cc 1a .\r | |
3415 | cp '(' ;14cd fe 28 . (\r | |
3416 | jr nz,l14e8h ;14cf 20 17 .\r | |
3417 | inc de ;14d1 13 .\r | |
3418 | call test_expr ;14d2 cd 09 18 . . .\r | |
3419 | call test_paren_close ;14d5 cd c5 18 . . .\r | |
3420 | ld a,b ;14d8 78 x\r | |
3421 | cp 020h ;14d9 fe 20 .\r | |
3422 | jr z,l14e3h ;14db 28 06 ( .\r | |
3423 | add a,04bh ;14dd c6 4b . K\r | |
3424 | ld b,a ;14df 47 G\r | |
3425 | jp l13c9h ;14e0 c3 c9 13 . . .\r | |
3426 | l14e3h:\r | |
3427 | ld b,02ah ;14e3 06 2a . *\r | |
15f6bf95 | 3428 | jp as.store_3 ;14e5 c3 b3 13 . . .\r |
0c4244e5 L |
3429 | l14e8h:\r |
3430 | call test_expr ;14e8 cd 09 18 . . .\r | |
3431 | call assert_eol ;14eb cd d6 02 . . .\r | |
3432 | ld a,001h ;14ee 3e 01 > .\r | |
3433 | add a,b ;14f0 80 .\r | |
3434 | ld b,a ;14f1 47 G\r | |
15f6bf95 | 3435 | jp as.store_3 ;14f2 c3 b3 13 . . .\r |
0c4244e5 L |
3436 | l14f5h:\r |
3437 | call assert_comma ;14f5 cd be 18 . . .\r | |
3438 | ld a,(de) ;14f8 1a .\r | |
3439 | cp '(' ;14f9 fe 28 . (\r | |
3440 | jr nz,l1509h ;14fb 20 0c .\r | |
3441 | inc de ;14fd 13 .\r | |
3442 | call test_expr ;14fe cd 09 18 . . .\r | |
3443 | call test_paren_close ;1501 cd c5 18 . . .\r | |
3444 | ld b,02ah ;1504 06 2a . *\r | |
3445 | jp l1395h ;1506 c3 95 13 . . .\r | |
3446 | l1509h:\r | |
3447 | call test_expr ;1509 cd 09 18 . . .\r | |
3448 | ld b,021h ;150c 06 21 . !\r | |
3449 | jp l1395h ;150e c3 95 13 . . .\r | |
3450 | l1511h:\r | |
3451 | inc de ;1511 13 .\r | |
3452 | call assert_comma ;1512 cd be 18 . . .\r | |
3453 | ld b,047h ;1515 06 47 . G\r | |
3454 | jr l151fh ;1517 18 06 . .\r | |
3455 | l1519h:\r | |
3456 | inc de ;1519 13 .\r | |
3457 | call assert_comma ;151a cd be 18 . . .\r | |
3458 | ld b,04fh ;151d 06 4f . O\r | |
3459 | l151fh:\r | |
3460 | ld a,(de) ;151f 1a .\r | |
3461 | inc de ;1520 13 .\r | |
3462 | cp 'A' ;1521 fe 41 . A\r | |
15f6bf95 | 3463 | jr z,gen.opc.ED2 ;1523 28 1f ( .\r |
0c4244e5 L |
3464 | error6:\r |
3465 | jp ERROR ;1525 c3 07 01 . . .\r | |
3466 | \r | |
3467 | l1528h:\r | |
3468 | cp 020h ;1528 fe 20 .\r | |
3469 | jr nc,error6 ;152a 30 f9 0 .\r | |
3470 | add a,002h ;152c c6 02 . .\r | |
3471 | ld b,a ;152e 47 G\r | |
3472 | call test_paren_close ;152f cd c5 18 . . .\r | |
3473 | call assert_comma ;1532 cd be 18 . . .\r | |
3474 | ld a,(de) ;1535 1a .\r | |
3475 | cp 'A' ;1536 fe 41 . A\r | |
3476 | jr nz,error6 ;1538 20 eb .\r | |
3477 | inc de ;153a 13 .\r | |
15f6bf95 | 3478 | as.opc.noarg:\r |
0c4244e5 L |
3479 | call assert_eol ;153b cd d6 02 . . .\r |
3480 | ld (iy+000h),b ;153e fd 70 00 . p .\r | |
3481 | ld c,001h ;1541 0e 01 . .\r | |
3482 | ret ;1543 c9 .\r | |
3483 | \r | |
15f6bf95 | 3484 | gen.opc.ED2:\r |
0c4244e5 L |
3485 | call assert_eol ;1544 cd d6 02 . . .\r |
3486 | ld (iy+000h),0edh ;1547 fd 36 00 ed . 6 . .\r | |
3487 | ld (iy+001h),b ;154b fd 70 01 . p .\r | |
3488 | ld c,002h ;154e 0e 02 . .\r | |
3489 | ret ;1550 c9 .\r | |
3490 | \r | |
15f6bf95 | 3491 | as.ADC_SBC:\r |
0c4244e5 L |
3492 | ld hl,t_HL.AF ;1551 21 af 1f ! . .\r |
3493 | call sub_0318h ;1554 cd 18 03 . . .\r | |
15f6bf95 | 3494 | jr nc,as.AND_CP_OR_SUB_XOR ;1557 30 4f 0 O\r |
0c4244e5 | 3495 | call assert_comma ;1559 cd be 18 . . .\r |
15f6bf95 | 3496 | call arg.ww ;155c cd 1b 18 . . .\r |
0c4244e5 L |
3497 | jp nc,ERROR ;155f d2 07 01 . . .\r |
3498 | push af ;1562 f5 .\r | |
3499 | ld a,b ;1563 78 x\r | |
3500 | cp 088h ;1564 fe 88 . .\r | |
3501 | ld b,04ah ;1566 06 4a . J\r | |
3502 | jr z,l156ch ;1568 28 02 ( .\r | |
3503 | ld b,042h ;156a 06 42 . B\r | |
3504 | l156ch:\r | |
3505 | pop af ;156c f1 .\r | |
3506 | add a,b ;156d 80 .\r | |
3507 | l156eh:\r | |
3508 | ld b,a ;156e 47 G\r | |
15f6bf95 L |
3509 | jr gen.opc.ED2 ;156f 18 d3 . .\r |
3510 | as.ADD:\r | |
0c4244e5 L |
3511 | ld hl,t_HL.AF ;1571 21 af 1f ! . .\r |
3512 | call sub_0318h ;1574 cd 18 03 . . .\r | |
3513 | jr c,l159ah ;1577 38 21 8 !\r | |
15f6bf95 L |
3514 | call arg.IX_IY ;1579 cd 3d 18 . = .\r |
3515 | jr nc,as.AND_CP_OR_SUB_XOR ;157c 30 2a 0 *\r | |
0c4244e5 L |
3516 | call assert_comma ;157e cd be 18 . . .\r |
3517 | ld hl,t_BC.DE.IX.SP ;1581 21 bd 1f ! . .\r | |
3518 | ld a,(prefix_ixiy) ;1584 3a cc 18 : . .\r | |
3519 | cp 0fdh ;1587 fe fd . .\r | |
3520 | jr nz,l158eh ;1589 20 03 .\r | |
3521 | ld hl,t_BC.DE.IY.SP ;158b 21 b4 1f ! . .\r | |
3522 | l158eh:\r | |
15f6bf95 | 3523 | call arg.reg_16bit ;158e cd 18 18 . . .\r |
0c4244e5 L |
3524 | jp nc,ERROR ;1591 d2 07 01 . . .\r |
3525 | add a,009h ;1594 c6 09 . .\r | |
3526 | l1596h:\r | |
3527 | ld b,a ;1596 47 G\r | |
3528 | jp l14b4h ;1597 c3 b4 14 . . .\r | |
3529 | l159ah:\r | |
3530 | call assert_comma ;159a cd be 18 . . .\r | |
15f6bf95 | 3531 | call arg.ww ;159d cd 1b 18 . . .\r |
0c4244e5 L |
3532 | jp nc,ERROR ;15a0 d2 07 01 . . .\r |
3533 | add a,009h ;15a3 c6 09 . .\r | |
3534 | jp l13ech ;15a5 c3 ec 13 . . .\r | |
15f6bf95 | 3535 | as.AND_CP_OR_SUB_XOR:\r |
0c4244e5 L |
3536 | ld a,(de) ;15a8 1a .\r |
3537 | cp 'A' ;15a9 fe 41 . A\r | |
3538 | jr nz,l15b8h ;15ab 20 0b .\r | |
3539 | push de ;15ad d5 .\r | |
3540 | inc de ;15ae 13 .\r | |
3541 | call next_arg ;15af cd ca 02 . . .\r | |
3542 | jr z,l15b7h ;15b2 28 03 ( .\r | |
3543 | pop de ;15b4 d1 .\r | |
3544 | jr l15b8h ;15b5 18 01 . .\r | |
3545 | l15b7h:\r | |
3546 | pop af ;15b7 f1 .\r | |
3547 | l15b8h:\r | |
15f6bf95 | 3548 | call arg.r_HL_A ;15b8 cd 2e 18 . . .\r |
0c4244e5 | 3549 | jr c,l15cbh ;15bb 38 0e 8 .\r |
15f6bf95 | 3550 | call arg.IDX_displcmnt ;15bd cd 55 18 . U .\r |
0c4244e5 | 3551 | jr c,l15cfh ;15c0 38 0d 8 .\r |
15f6bf95 | 3552 | call arg.imm_8bit ;15c2 cd ff 17 . . .\r |
0c4244e5 L |
3553 | ld a,b ;15c5 78 x\r |
3554 | add a,046h ;15c6 c6 46 . F\r | |
3555 | jp l143fh ;15c8 c3 3f 14 . ? .\r | |
3556 | l15cbh:\r | |
3557 | add a,b ;15cb 80 .\r | |
3558 | jp l13ech ;15cc c3 ec 13 . . .\r | |
3559 | l15cfh:\r | |
3560 | ld a,b ;15cf 78 x\r | |
3561 | add a,006h ;15d0 c6 06 . .\r | |
3562 | jp l1400h ;15d2 c3 00 14 . . .\r | |
15f6bf95 L |
3563 | \r |
3564 | as.SHIFTOP:\r | |
3565 | call arg.r_HL_A ;15d5 cd 2e 18 . . .\r | |
0c4244e5 | 3566 | jr c,l15fah ;15d8 38 20 8\r |
15f6bf95 | 3567 | call arg.IDX_displcmnt ;15da cd 55 18 . U .\r |
0c4244e5 L |
3568 | jp nc,ERROR ;15dd d2 07 01 . . .\r |
3569 | ld a,b ;15e0 78 x\r | |
3570 | add a,006h ;15e1 c6 06 . .\r | |
3571 | ld b,a ;15e3 47 G\r | |
3572 | l15e4h:\r | |
3573 | call assert_eol ;15e4 cd d6 02 . . .\r | |
3574 | ld a,(prefix_ixiy) ;15e7 3a cc 18 : . .\r | |
3575 | ld (iy+000h),a ;15ea fd 77 00 . w .\r | |
3576 | ld (iy+001h),0cbh ;15ed fd 36 01 cb . 6 . .\r | |
3577 | ld (iy+002h),c ;15f1 fd 71 02 . q .\r | |
3578 | ld (iy+003h),b ;15f4 fd 70 03 . p .\r | |
3579 | ld c,004h ;15f7 0e 04 . .\r | |
3580 | ret ;15f9 c9 .\r | |
15f6bf95 | 3581 | \r |
0c4244e5 L |
3582 | l15fah:\r |
3583 | add a,b ;15fa 80 .\r | |
3584 | l15fbh:\r | |
3585 | ld b,a ;15fb 47 G\r | |
3586 | call assert_eol ;15fc cd d6 02 . . .\r | |
3587 | ld (iy+001h),b ;15ff fd 70 01 . p .\r | |
3588 | ld (iy+000h),0cbh ;1602 fd 36 00 cb . 6 . .\r | |
3589 | ld c,002h ;1606 0e 02 . .\r | |
3590 | ret ;1608 c9 .\r | |
15f6bf95 L |
3591 | \r |
3592 | as.BITOP:\r | |
3593 | call arg.bit ;1609 cd d3 17 . . .\r | |
0c4244e5 | 3594 | call assert_comma ;160c cd be 18 . . .\r |
15f6bf95 | 3595 | call arg.r_HL_A ;160f cd 2e 18 . . .\r |
0c4244e5 | 3596 | jr c,l1624h ;1612 38 10 8 .\r |
15f6bf95 | 3597 | call arg.IDX_displcmnt ;1614 cd 55 18 . U .\r |
0c4244e5 L |
3598 | jp nc,ERROR ;1617 d2 07 01 . . .\r |
3599 | ld a,l ;161a 7d }\r | |
3600 | rlca ;161b 07 .\r | |
3601 | rlca ;161c 07 .\r | |
3602 | rlca ;161d 07 .\r | |
3603 | add a,006h ;161e c6 06 . .\r | |
3604 | add a,b ;1620 80 .\r | |
3605 | ld b,a ;1621 47 G\r | |
3606 | jr l15e4h ;1622 18 c0 . .\r | |
3607 | l1624h:\r | |
3608 | add a,b ;1624 80 .\r | |
3609 | ld b,a ;1625 47 G\r | |
3610 | ld a,l ;1626 7d }\r | |
3611 | rlca ;1627 07 .\r | |
3612 | rlca ;1628 07 .\r | |
3613 | rlca ;1629 07 .\r | |
3614 | add a,b ;162a 80 .\r | |
3615 | jr l15fbh ;162b 18 ce . .\r | |
15f6bf95 L |
3616 | \r |
3617 | as.CALL:\r | |
0c4244e5 | 3618 | push de ;162d d5 .\r |
15f6bf95 | 3619 | call arg.cc_ZCPS ;162e cd a5 18 . . .\r |
0c4244e5 L |
3620 | jr nc,l163ch ;1631 30 09 0 .\r |
3621 | add a,b ;1633 80 .\r | |
3622 | ld b,a ;1634 47 G\r | |
3623 | call next_arg ;1635 cd ca 02 . . .\r | |
3624 | jr z,l163eh ;1638 28 04 ( .\r | |
3625 | pop de ;163a d1 .\r | |
3626 | push de ;163b d5 .\r | |
3627 | l163ch:\r | |
3628 | ld b,0cdh ;163c 06 cd . .\r | |
3629 | l163eh:\r | |
3630 | pop af ;163e f1 .\r | |
3631 | call test_expr ;163f cd 09 18 . . .\r | |
15f6bf95 L |
3632 | jp as.store_3 ;1642 c3 b3 13 . . .\r |
3633 | \r | |
3634 | as.RET:\r | |
3635 | call arg.cc_ZCPS ;1645 cd a5 18 . . .\r | |
0c4244e5 L |
3636 | jr nc,l164eh ;1648 30 04 0 .\r |
3637 | add a,b ;164a 80 .\r | |
3638 | ld b,a ;164b 47 G\r | |
3639 | jr l1650h ;164c 18 02 . .\r | |
3640 | l164eh:\r | |
3641 | ld b,0c9h ;164e 06 c9 . .\r | |
3642 | l1650h:\r | |
15f6bf95 L |
3643 | jp as.opc.noarg ;1650 c3 3b 15 . ; .\r |
3644 | \r | |
3645 | as.JP:\r | |
0c4244e5 | 3646 | push de ;1653 d5 .\r |
15f6bf95 | 3647 | call arg.cc_ZCPS ;1654 cd a5 18 . . .\r |
0c4244e5 L |
3648 | jr c,l1666h ;1657 38 0d 8 .\r |
3649 | l1659h:\r | |
3650 | pop de ;1659 d1 .\r | |
3651 | ld hl,l168ch ;165a 21 8c 16 ! . .\r | |
3652 | call sub_030ah ;165d cd 0a 03 . . .\r | |
3653 | jr c,l1674h ;1660 38 12 8 .\r | |
3654 | ld b,0c3h ;1662 06 c3 . .\r | |
3655 | jr l166eh ;1664 18 08 . .\r | |
15f6bf95 | 3656 | \r |
0c4244e5 L |
3657 | l1666h:\r |
3658 | add a,b ;1666 80 .\r | |
3659 | ld b,a ;1667 47 G\r | |
3660 | call next_arg ;1668 cd ca 02 . . .\r | |
3661 | jr nz,l1659h ;166b 20 ec .\r | |
3662 | pop af ;166d f1 .\r | |
3663 | l166eh:\r | |
3664 | call test_expr ;166e cd 09 18 . . .\r | |
15f6bf95 | 3665 | jp as.store_3 ;1671 c3 b3 13 . . .\r |
0c4244e5 L |
3666 | l1674h:\r |
3667 | call assert_eol ;1674 cd d6 02 . . .\r | |
3668 | ld a,b ;1677 78 x\r | |
3669 | and a ;1678 a7 .\r | |
3670 | jr nz,l1680h ;1679 20 05 .\r | |
3671 | ld b,0e9h ;167b 06 e9 . .\r | |
15f6bf95 | 3672 | jp as.opc.noarg ;167d c3 3b 15 . ; .\r |
0c4244e5 L |
3673 | l1680h:\r |
3674 | ld b,0ddh ;1680 06 dd . .\r | |
3675 | dec a ;1682 3d =\r | |
3676 | jr z,l1687h ;1683 28 02 ( .\r | |
3677 | ld b,0fdh ;1685 06 fd . .\r | |
3678 | l1687h:\r | |
3679 | ld l,0e9h ;1687 2e e9 . .\r | |
15f6bf95 | 3680 | jp as.store_2 ;1689 c3 40 14 . @ .\r |
0c4244e5 L |
3681 | \r |
3682 | l168ch:\r | |
3683 | DC '(HL)'\r | |
3684 | DC '(IX)'\r | |
3685 | DC '(IY)'\r | |
3686 | DB 0\r | |
3687 | \r | |
15f6bf95 | 3688 | as.DJNZ:\r |
0c4244e5 L |
3689 | call next_arg ;1699 cd ca 02 . . .\r |
3690 | ld b,010h ;169c 06 10 . .\r | |
3691 | jr l16aeh ;169e 18 0e . .\r | |
15f6bf95 L |
3692 | as.JR:\r |
3693 | call arg.cc_ZC ;16a0 cd ac 18 . . .\r | |
0c4244e5 L |
3694 | jr c,l16a9h ;16a3 38 04 8 .\r |
3695 | ld b,018h ;16a5 06 18 . .\r | |
3696 | jr l16aeh ;16a7 18 05 . .\r | |
3697 | l16a9h:\r | |
3698 | add a,b ;16a9 80 .\r | |
3699 | ld b,a ;16aa 47 G\r | |
3700 | call assert_comma ;16ab cd be 18 . . .\r | |
3701 | l16aeh:\r | |
15f6bf95 L |
3702 | call arg.j_displ ;16ae cd dc 17 . . .\r |
3703 | jp as.store_2 ;16b1 c3 40 14 . @ .\r | |
0c4244e5 | 3704 | \r |
15f6bf95 L |
3705 | as.IM:\r |
3706 | call arg.imm_8bit ;16b4 cd ff 17 . . .\r | |
0c4244e5 L |
3707 | ld a,l ;16b7 7d }\r |
3708 | cp 003h ;16b8 fe 03 . .\r | |
3709 | jr nc,error2 ;16ba 30 5c 0 \\r | |
3710 | and a ;16bc a7 .\r | |
3711 | jr z,l16c7h ;16bd 28 08 ( .\r | |
3712 | ld b,056h ;16bf 06 56 . V\r | |
3713 | cp 001h ;16c1 fe 01 . .\r | |
3714 | jr z,l16c7h ;16c3 28 02 ( .\r | |
3715 | ld b,05eh ;16c5 06 5e . ^\r | |
3716 | l16c7h:\r | |
15f6bf95 | 3717 | jp gen.opc.ED2 ;16c7 c3 44 15 . D .\r |
0c4244e5 | 3718 | \r |
15f6bf95 L |
3719 | as.RST:\r |
3720 | call arg.imm_8bit ;16ca cd ff 17 . . .\r | |
0c4244e5 L |
3721 | ld a,l ;16cd 7d }\r |
3722 | push af ;16ce f5 .\r | |
3723 | add a,b ;16cf 80 .\r | |
3724 | ld b,a ;16d0 47 G\r | |
3725 | pop af ;16d1 f1 .\r | |
3726 | and 0c7h ;16d2 e6 c7 . .\r | |
3727 | jr nz,error2 ;16d4 20 42 B\r | |
15f6bf95 | 3728 | jp as.opc.noarg ;16d6 c3 3b 15 . ; .\r |
0c4244e5 | 3729 | \r |
15f6bf95 L |
3730 | as.POP_PUSH:\r |
3731 | call arg.IX_IY ;16d9 cd 3d 18 . = .\r | |
0c4244e5 | 3732 | jr c,l16e7h ;16dc 38 09 8 .\r |
15f6bf95 | 3733 | call arg.zz ;16de cd 12 18 . . .\r |
0c4244e5 L |
3734 | jr nc,error2 ;16e1 30 35 0 5\r |
3735 | add a,b ;16e3 80 .\r | |
3736 | jp l13ech ;16e4 c3 ec 13 . . .\r | |
3737 | l16e7h:\r | |
3738 | ld a,b ;16e7 78 x\r | |
3739 | add a,020h ;16e8 c6 20 .\r | |
3740 | jp l1596h ;16ea c3 96 15 . . .\r | |
3741 | \r | |
15f6bf95 L |
3742 | as.IN:\r |
3743 | call arg.r_HL_A ;16ed cd 2e 18 . . .\r | |
0c4244e5 L |
3744 | jr nc,error2 ;16f0 30 26 0 &\r |
3745 | cp 006h ;16f2 fe 06 . .\r | |
3746 | jr z,error2 ;16f4 28 22 ( "\r | |
3747 | rlca ;16f6 07 .\r | |
3748 | rlca ;16f7 07 .\r | |
3749 | rlca ;16f8 07 .\r | |
3750 | add a,b ;16f9 80 .\r | |
3751 | ld b,a ;16fa 47 G\r | |
3752 | cp 078h ;16fb fe 78 . x\r | |
3753 | jr nz,l170fh ;16fd 20 10 .\r | |
3754 | call assert_comma ;16ff cd be 18 . . .\r | |
3755 | call sub_171bh ;1702 cd 1b 17 . . .\r | |
3756 | jr c,l1715h ;1705 38 0e 8 .\r | |
15f6bf95 | 3757 | call arg.addr_8bit ;1707 cd f3 17 . . .\r |
0c4244e5 | 3758 | ld b,0dbh ;170a 06 db . .\r |
15f6bf95 | 3759 | jp as.store_2 ;170c c3 40 14 . @ .\r |
0c4244e5 L |
3760 | l170fh:\r |
3761 | call assert_comma ;170f cd be 18 . . .\r | |
3762 | call sub_171bh ;1712 cd 1b 17 . . .\r | |
3763 | l1715h:\r | |
15f6bf95 | 3764 | jp c,gen.opc.ED2 ;1715 da 44 15 . D .\r |
0c4244e5 L |
3765 | error2:\r |
3766 | jp ERROR ;1718 c3 07 01 . . .\r | |
3767 | \r | |
3768 | sub_171bh:\r | |
3769 | ld hl,t__C_ ;171b 21 f4 1f ! . .\r | |
3770 | jp sub_0318h ;171e c3 18 03 . . .\r | |
3771 | \r | |
15f6bf95 | 3772 | as.OUT:\r |
0c4244e5 L |
3773 | call sub_171bh ;1721 cd 1b 17 . . .\r |
3774 | jr nc,l1739h ;1724 30 13 0 .\r | |
3775 | call assert_comma ;1726 cd be 18 . . .\r | |
15f6bf95 | 3776 | call arg.r_HL_A ;1729 cd 2e 18 . . .\r |
0c4244e5 L |
3777 | jr nc,error2 ;172c 30 ea 0 .\r |
3778 | cp 006h ;172e fe 06 . .\r | |
3779 | jr z,error2 ;1730 28 e6 ( .\r | |
3780 | rlca ;1732 07 .\r | |
3781 | rlca ;1733 07 .\r | |
3782 | rlca ;1734 07 .\r | |
3783 | add a,b ;1735 80 .\r | |
3784 | jp l156eh ;1736 c3 6e 15 . n .\r | |
3785 | \r | |
3786 | l1739h:\r | |
15f6bf95 | 3787 | call arg.addr_8bit ;1739 cd f3 17 . . .\r |
0c4244e5 L |
3788 | call assert_comma ;173c cd be 18 . . .\r |
3789 | cp 'A' ;173f fe 41 . A\r | |
3790 | jr nz,error2 ;1741 20 d5 .\r | |
3791 | inc de ;1743 13 .\r | |
3792 | ld b,0d3h ;1744 06 d3 . .\r | |
15f6bf95 | 3793 | jp as.store_2 ;1746 c3 40 14 . @ .\r |
0c4244e5 | 3794 | \r |
15f6bf95 | 3795 | as.EX:\r |
0c4244e5 L |
3796 | ld hl,b_176d_start ;1749 21 6d 17 ! m .\r |
3797 | call sub_030ah ;174c cd 0a 03 . . .\r | |
3798 | jp nc,ERROR ;174f d2 07 01 . . .\r | |
3799 | ld c,b ;1752 48 H\r | |
3800 | call assert_eol ;1753 cd d6 02 . . .\r | |
3801 | ld b,000h ;1756 06 00 . .\r | |
3802 | ld hl,l178eh ;1758 21 8e 17 ! . .\r | |
3803 | add hl,bc ;175b 09 .\r | |
3804 | add hl,bc ;175c 09 .\r | |
3805 | ld a,(hl) ;175d 7e ~\r | |
3806 | ld (iy+000h),a ;175e fd 77 00 . w .\r | |
3807 | ld c,001h ;1761 0e 01 . .\r | |
3808 | inc hl ;1763 23 #\r | |
3809 | ld a,(hl) ;1764 7e ~\r | |
3810 | and a ;1765 a7 .\r | |
3811 | ret z ;1766 c8 .\r | |
3812 | ld (iy+001h),a ;1767 fd 77 01 . w .\r | |
3813 | ld c,002h ;176a 0e 02 . .\r | |
3814 | ret ;176c c9 .\r | |
3815 | \r | |
3816 | b_176d_start:\r | |
3817 | DC 'AF,AF'''\r | |
3818 | l1773h:\r | |
3819 | DC 'DE,HL'\r | |
3820 | DC '(SP),HL'\r | |
3821 | DC '(SP),IX'\r | |
3822 | DC '(SP),IY'\r | |
3823 | db 0\r | |
3824 | l178eh:\r | |
3825 | db 008h,000h ;178e 08 .\r | |
3826 | db 0ebh,000h ;1790 eb .\r | |
3827 | db 0e3h,000h ;1792 e3 .\r | |
3828 | db 0ddh,0e3h ;1794 dd .\r | |
3829 | db 0fdh,0e3h ;1796 fd .\r | |
3830 | \r | |
15f6bf95 L |
3831 | as.DEC_INC:\r |
3832 | call arg.IX_IY ;1798 cd 3d 18 . = .\r | |
0c4244e5 | 3833 | jr c,l17b3h ;179b 38 16 8 .\r |
15f6bf95 | 3834 | call arg.ww ;179d cd 1b 18 . . .\r |
0c4244e5 | 3835 | jr c,l17bfh ;17a0 38 1d 8 .\r |
15f6bf95 | 3836 | call arg.r_HL_A ;17a2 cd 2e 18 . . .\r |
0c4244e5 | 3837 | jr c,l17cch ;17a5 38 25 8 %\r |
15f6bf95 | 3838 | call arg.IDX_displcmnt ;17a7 cd 55 18 . U .\r |
0c4244e5 L |
3839 | jp nc,ERROR ;17aa d2 07 01 . . .\r |
3840 | ld a,b ;17ad 78 x\r | |
3841 | add a,030h ;17ae c6 30 . 0\r | |
3842 | jp l1400h ;17b0 c3 00 14 . . .\r | |
3843 | l17b3h:\r | |
3844 | ld a,b ;17b3 78 x\r | |
3845 | ld b,023h ;17b4 06 23 . #\r | |
3846 | cp 004h ;17b6 fe 04 . .\r | |
3847 | jr z,l17bch ;17b8 28 02 ( .\r | |
3848 | ld b,02bh ;17ba 06 2b . +\r | |
3849 | l17bch:\r | |
3850 | jp l14b4h ;17bc c3 b4 14 . . .\r | |
3851 | l17bfh:\r | |
3852 | push af ;17bf f5 .\r | |
3853 | ld a,b ;17c0 78 x\r | |
3854 | ld b,003h ;17c1 06 03 . .\r | |
3855 | cp 004h ;17c3 fe 04 . .\r | |
3856 | jr z,l17c9h ;17c5 28 02 ( .\r | |
3857 | ld b,00bh ;17c7 06 0b . .\r | |
3858 | l17c9h:\r | |
3859 | pop af ;17c9 f1 .\r | |
3860 | jr l17cfh ;17ca 18 03 . .\r | |
3861 | l17cch:\r | |
3862 | rlca ;17cc 07 .\r | |
3863 | rlca ;17cd 07 .\r | |
3864 | rlca ;17ce 07 .\r | |
3865 | l17cfh:\r | |
3866 | add a,b ;17cf 80 .\r | |
3867 | jp l13ech ;17d0 c3 ec 13 . . .\r | |
15f6bf95 L |
3868 | \r |
3869 | arg.bit:\r | |
3870 | call arg.imm_8bit ;17d3 cd ff 17 . . .\r | |
0c4244e5 L |
3871 | ld a,l ;17d6 7d }\r |
3872 | cp 008h ;17d7 fe 08 . .\r | |
3873 | jr nc,error3 ;17d9 30 34 0 4\r | |
3874 | ret ;17db c9 .\r | |
15f6bf95 L |
3875 | \r |
3876 | arg.j_displ:\r | |
0c4244e5 L |
3877 | call test_expr ;17dc cd 09 18 . . .\r |
3878 | push bc ;17df c5 .\r | |
3879 | push iy ;17e0 fd e5 . .\r | |
3880 | pop bc ;17e2 c1 .\r | |
3881 | and a ;17e3 a7 .\r | |
3882 | sbc hl,bc ;17e4 ed 42 . B\r | |
3883 | dec hl ;17e6 2b +\r | |
3884 | dec hl ;17e7 2b +\r | |
3885 | pop bc ;17e8 c1 .\r | |
3886 | call sub_1802h ;17e9 cd 02 18 . . .\r | |
3887 | ld a,h ;17ec 7c |\r | |
3888 | xor l ;17ed ad .\r | |
3889 | bit 7,a ;17ee cb 7f . \7f\r | |
3890 | jr nz,error3 ;17f0 20 1d .\r | |
3891 | ret ;17f2 c9 .\r | |
3892 | \r | |
15f6bf95 | 3893 | arg.addr_8bit:\r |
0c4244e5 L |
3894 | ld a,(de) ;17f3 1a .\r |
3895 | cp '(' ;17f4 fe 28 . (\r | |
15f6bf95 | 3896 | jr nz,arg.imm_8bit ;17f6 20 07 .\r |
0c4244e5 | 3897 | inc de ;17f8 13 .\r |
15f6bf95 | 3898 | call arg.imm_8bit ;17f9 cd ff 17 . . .\r |
0c4244e5 L |
3899 | jp test_paren_close ;17fc c3 c5 18 . . .\r |
3900 | \r | |
15f6bf95 | 3901 | arg.imm_8bit:\r |
0c4244e5 L |
3902 | call test_expr ;17ff cd 09 18 . . .\r |
3903 | sub_1802h:\r | |
3904 | ld a,h ;1802 7c |\r | |
3905 | and a ;1803 a7 .\r | |
3906 | ret z ;1804 c8 .\r | |
3907 | inc a ;1805 3c <\r | |
3908 | ret z ;1806 c8 .\r | |
3909 | jr error3 ;1807 18 06 . .\r | |
3910 | \r | |
3911 | test_expr:\r | |
3912 | push bc ;1809 c5 .\r | |
3913 | call expr ;180a cd be 03 . . .\r | |
3914 | pop bc ;180d c1 .\r | |
3915 | ret nc ;180e d0 .\r | |
3916 | error3:\r | |
3917 | jp ERROR ;180f c3 07 01 . . .\r | |
3918 | \r | |
15f6bf95 | 3919 | arg.zz:\r |
0c4244e5 L |
3920 | push hl ;1812 e5 .\r |
3921 | ld hl,t_BC.DE.HL.AF ;1813 21 ab 1f ! . .\r | |
3922 | jr l181fh ;1816 18 07 . .\r | |
3923 | \r | |
15f6bf95 | 3924 | arg.reg_16bit:\r |
0c4244e5 L |
3925 | push hl ;1818 e5 .\r |
3926 | jr l181fh ;1819 18 04 . .\r | |
3927 | \r | |
15f6bf95 | 3928 | arg.ww:\r |
0c4244e5 L |
3929 | push hl ;181b e5 .\r |
3930 | ld hl,t_BC.DE.HL.SP ;181c 21 a2 1f ! . .\r | |
3931 | l181fh:\r | |
3932 | push bc ;181f c5 .\r | |
3933 | call sub_030ah ;1820 cd 0a 03 . . .\r | |
3934 | jr nc,l182bh ;1823 30 06 0 .\r | |
3935 | ld a,b ;1825 78 x\r | |
3936 | rlca ;1826 07 .\r | |
3937 | rlca ;1827 07 .\r | |
3938 | rlca ;1828 07 .\r | |
3939 | rlca ;1829 07 .\r | |
3940 | scf ;182a 37 7\r | |
3941 | l182bh:\r | |
3942 | pop bc ;182b c1 .\r | |
3943 | pop hl ;182c e1 .\r | |
3944 | ret ;182d c9 .\r | |
3945 | \r | |
15f6bf95 | 3946 | arg.r_HL_A:\r |
0c4244e5 L |
3947 | call skipbl ;182e cd bf 02 . . .\r |
3948 | push bc ;1831 c5 .\r | |
3949 | push hl ;1832 e5 .\r | |
3950 | ld hl,t_BCDEHL_HL_A ;1833 21 96 1f ! . .\r | |
3951 | call sub_030ah ;1836 cd 0a 03 . . .\r | |
3952 | ld a,b ;1839 78 x\r | |
3953 | pop hl ;183a e1 .\r | |
3954 | pop bc ;183b c1 .\r | |
3955 | ret ;183c c9 .\r | |
3956 | \r | |
15f6bf95 | 3957 | arg.IX_IY:\r |
0c4244e5 L |
3958 | push hl ;183d e5 .\r |
3959 | push bc ;183e c5 .\r | |
3960 | ld hl,t_IX.IY ;183f 21 c8 1f ! . .\r | |
3961 | call sub_030ah ;1842 cd 0a 03 . . .\r | |
3962 | jr nc,l1852h ;1845 30 0b 0 .\r | |
3963 | ld a,0ddh ;1847 3e dd > .\r | |
3964 | dec b ;1849 05 .\r | |
3965 | jr nz,l184eh ;184a 20 02 .\r | |
3966 | ld a,0fdh ;184c 3e fd > .\r | |
3967 | l184eh:\r | |
3968 | ld (prefix_ixiy),a ;184e 32 cc 18 2 . .\r | |
3969 | scf ;1851 37 7\r | |
3970 | l1852h:\r | |
3971 | pop bc ;1852 c1 .\r | |
3972 | pop hl ;1853 e1 .\r | |
3973 | ret ;1854 c9 .\r | |
15f6bf95 L |
3974 | \r |
3975 | arg.IDX_displcmnt:\r | |
0c4244e5 L |
3976 | push hl ;1855 e5 .\r |
3977 | push bc ;1856 c5 .\r | |
3978 | ld a,(de) ;1857 1a .\r | |
3979 | cp '(' ;1858 fe 28 . (\r | |
3980 | jr nz,l18a1h ;185a 20 45 E\r | |
3981 | push de ;185c d5 .\r | |
3982 | inc de ;185d 13 .\r | |
3983 | ld hl,t_IX.IY ;185e 21 c8 1f ! . .\r | |
3984 | call sub_030ah ;1861 cd 0a 03 . . .\r | |
3985 | jr nc,l18a0h ;1864 30 3a 0 :\r | |
3986 | pop af ;1866 f1 .\r | |
3987 | ld a,0ddh ;1867 3e dd > .\r | |
3988 | dec b ;1869 05 .\r | |
3989 | jr nz,l186eh ;186a 20 02 .\r | |
3990 | ld a,0fdh ;186c 3e fd > .\r | |
3991 | l186eh:\r | |
3992 | ld (prefix_ixiy),a ;186e 32 cc 18 2 . .\r | |
3993 | ld a,(de) ;1871 1a .\r | |
3994 | cp '+' ;1872 fe 2b . +\r | |
3995 | jr z,l1882h ;1874 28 0c ( .\r | |
3996 | cp ')' ;1876 fe 29 . )\r | |
3997 | ld hl,0 ;1878 21 00 00 ! . .\r | |
3998 | jr z,l189ah ;187b 28 1d ( .\r | |
3999 | cp '-' ;187d fe 2d . -\r | |
4000 | jp nz,ERROR ;187f c2 07 01 . . .\r | |
4001 | l1882h:\r | |
4002 | push af ;1882 f5 .\r | |
4003 | inc de ;1883 13 .\r | |
15f6bf95 | 4004 | call arg.imm_8bit ;1884 cd ff 17 . . .\r |
0c4244e5 L |
4005 | pop af ;1887 f1 .\r |
4006 | cp '+' ;1888 fe 2b . +\r | |
4007 | jr z,l1894h ;188a 28 08 ( .\r | |
4008 | ld b,h ;188c 44 D\r | |
4009 | ld c,l ;188d 4d M\r | |
4010 | ld hl,0 ;188e 21 00 00 ! . .\r | |
4011 | and a ;1891 a7 .\r | |
4012 | sbc hl,bc ;1892 ed 42 . B\r | |
4013 | l1894h:\r | |
4014 | ld a,(de) ;1894 1a .\r | |
4015 | cp ')' ;1895 fe 29 . )\r | |
4016 | jp nz,ERROR ;1897 c2 07 01 . . .\r | |
4017 | l189ah:\r | |
4018 | inc de ;189a 13 .\r | |
4019 | pop bc ;189b c1 .\r | |
4020 | ld c,l ;189c 4d M\r | |
4021 | pop hl ;189d e1 .\r | |
4022 | scf ;189e 37 7\r | |
4023 | ret ;189f c9 .\r | |
4024 | l18a0h:\r | |
4025 | pop de ;18a0 d1 .\r | |
4026 | l18a1h:\r | |
4027 | pop bc ;18a1 c1 .\r | |
4028 | pop hl ;18a2 e1 .\r | |
4029 | and a ;18a3 a7 .\r | |
4030 | ret ;18a4 c9 .\r | |
4031 | \r | |
15f6bf95 | 4032 | arg.cc_ZCPS:\r |
0c4244e5 L |
4033 | ld hl,t_tstfl_ZCPS ;18a5 21 dc 1f ! . .\r |
4034 | ld c,007h ;18a8 0e 07 . .\r | |
4035 | jr l18b1h ;18aa 18 05 . .\r | |
4036 | \r | |
15f6bf95 | 4037 | arg.cc_ZC:\r |
0c4244e5 L |
4038 | ld hl,t_tstfl_ZC ;18ac 21 cd 1f ! . .\r |
4039 | ld c,003h ;18af 0e 03 . .\r | |
4040 | l18b1h:\r | |
4041 | push bc ;18b1 c5 .\r | |
4042 | call sub_030ah ;18b2 cd 0a 03 . . .\r | |
4043 | ld a,b ;18b5 78 x\r | |
4044 | pop bc ;18b6 c1 .\r | |
4045 | ret nc ;18b7 d0 .\r | |
4046 | and c ;18b8 a1 .\r | |
4047 | rlca ;18b9 07 .\r | |
4048 | rlca ;18ba 07 .\r | |
4049 | rlca ;18bb 07 .\r | |
4050 | scf ;18bc 37 7\r | |
4051 | ret ;18bd c9 .\r | |
4052 | \r | |
4053 | assert_comma:\r | |
4054 | call next_arg ;18be cd ca 02 . . .\r | |
4055 | ret z ;18c1 c8 .\r | |
4056 | l18c2h:\r | |
4057 | jp ERROR ;18c2 c3 07 01 . . .\r | |
4058 | \r | |
4059 | test_paren_close:\r | |
4060 | ld a,(de) ;18c5 1a .\r | |
4061 | cp ')' ;18c6 fe 29 . )\r | |
4062 | jr nz,l18c2h ;18c8 20 f8 .\r | |
4063 | inc de ;18ca 13 .\r | |
4064 | ret ;18cb c9 .\r | |
4065 | \r | |
4066 | prefix_ixiy:\r | |
4067 | db 0 ;18cc 00 .\r | |
4068 | \r | |
4069 | cmd_L:\r | |
4070 | ld hl,cmd_L ;18cd 21 cd 18 ! . .\r | |
4071 | ld (cmd_rpt),hl ;18d0 22 68 00 " h .\r | |
4072 | call expr ;18d3 cd be 03 . . .\r | |
4073 | jr nc,l18dbh ;18d6 30 03 0 .\r | |
4074 | ld hl,(last_L) ;18d8 2a f9 1f * . .\r | |
4075 | l18dbh:\r | |
4076 | push hl ;18db e5 .\r | |
4077 | pop iy ;18dc fd e1 . .\r | |
4078 | call next_arg ;18de cd ca 02 . . .\r | |
15f6bf95 | 4079 | call get_range ;18e1 cd 9a 03 . . .\r |
0c4244e5 L |
4080 | jr nc,l1905h ;18e4 30 1f 0 .\r |
4081 | call assert_eol ;18e6 cd d6 02 . . .\r | |
15f6bf95 | 4082 | ld b,16 ;18e9 06 10 . .\r |
0c4244e5 L |
4083 | l18ebh:\r |
4084 | push bc ;18eb c5 .\r | |
4085 | push iy ;18ec fd e5 . .\r | |
4086 | pop hl ;18ee e1 .\r | |
4087 | push hl ;18ef e5 .\r | |
25a690e5 | 4088 | call p_disas_line ;18f0 cd 2d 19 . - .\r |
0c4244e5 L |
4089 | call crlf ;18f3 cd a3 02 . . .\r |
4090 | pop iy ;18f6 fd e1 . .\r | |
4091 | ld c,b ;18f8 48 H\r | |
4092 | ld b,0 ;18f9 06 00 . .\r | |
4093 | add iy,bc ;18fb fd 09 . .\r | |
4094 | ld (last_L),iy ;18fd fd 22 f9 1f . " . .\r | |
4095 | pop bc ;1901 c1 .\r | |
4096 | djnz l18ebh ;1902 10 e7 . .\r | |
4097 | ret ;1904 c9 .\r | |
4098 | l1905h:\r | |
4099 | call assert_eol ;1905 cd d6 02 . . .\r | |
4100 | ld h,b ;1908 60 `\r | |
4101 | ld l,c ;1909 69 i\r | |
4102 | ld a,b ;190a 78 x\r | |
4103 | or c ;190b b1 .\r | |
4104 | jr nz,l190fh ;190c 20 01 .\r | |
4105 | dec hl ;190e 2b +\r | |
4106 | l190fh:\r | |
4107 | push hl ;190f e5 .\r | |
4108 | push iy ;1910 fd e5 . .\r | |
4109 | pop hl ;1912 e1 .\r | |
4110 | push hl ;1913 e5 .\r | |
25a690e5 | 4111 | call p_disas_line ;1914 cd 2d 19 . - .\r |
0c4244e5 L |
4112 | call crlf ;1917 cd a3 02 . . .\r |
4113 | pop iy ;191a fd e1 . .\r | |
4114 | ld e,b ;191c 58 X\r | |
4115 | ld d,000h ;191d 16 00 . .\r | |
4116 | add iy,de ;191f fd 19 . .\r | |
4117 | ld (last_L),iy ;1921 fd 22 f9 1f . " . .\r | |
4118 | pop hl ;1925 e1 .\r | |
4119 | and a ;1926 a7 .\r | |
4120 | sbc hl,de ;1927 ed 52 . R\r | |
4121 | ret z ;1929 c8 .\r | |
4122 | ret c ;192a d8 .\r | |
4123 | jr l190fh ;192b 18 e2 . .\r | |
4124 | \r | |
25a690e5 | 4125 | p_disas_line:\r |
0c4244e5 L |
4126 | call out.hl.@ ;192d cd a4 01 . . .\r |
4127 | call z,outbl ;1930 cc 9f 02 . . .\r | |
4128 | call outbl ;1933 cd 9f 02 . . .\r | |
4129 | sub a ;1936 97 .\r | |
4130 | ld (con_col),a ;1937 32 72 02 2 r .\r | |
25a690e5 | 4131 | call p_disas_instr ;193a cd 65 19 . e .\r |
0c4244e5 L |
4132 | and a ;193d a7 .\r |
4133 | ret z ;193e c8 .\r | |
4134 | \r | |
4135 | l193fh:\r | |
4136 | call outbl ;193f cd 9f 02 . . .\r | |
4137 | ld a,(con_col) ;1942 3a 72 02 : r .\r | |
4138 | cp 16 ;1945 fe 10 . .\r | |
4139 | jr c,l193fh ;1947 38 f6 8 .\r | |
4140 | \r | |
25a690e5 | 4141 | p_offset:\r |
0c4244e5 L |
4142 | ld de,(offs.@) ;1949 ed 5b 64 00 . [ d .\r |
4143 | ld a,d ;194d 7a z\r | |
4144 | or e ;194e b3 .\r | |
4145 | ret z ;194f c8 .\r | |
4146 | ld a,'(' ;1950 3e 28 > (\r | |
4147 | call outchar ;1952 cd 5d 02 . ] .\r | |
4148 | ld a,'@' ;1955 3e 40 > @\r | |
4149 | call outchar ;1957 cd 5d 02 . ] .\r | |
4150 | and a ;195a a7 .\r | |
4151 | sbc hl,de ;195b ed 52 . R\r | |
4152 | call out_hl ;195d cd 13 02 . . .\r | |
4153 | ld a,')' ;1960 3e 29 > )\r | |
4154 | jp outchar ;1962 c3 5d 02 . ] .\r | |
4155 | \r | |
25a690e5 | 4156 | p_disas_instr:\r |
0c4244e5 L |
4157 | sub a ;1965 97 .\r |
4158 | ld (l1ffdh),a ;1966 32 fd 1f 2 . .\r | |
4159 | call disas_get_instrlen ;1969 cd 8c 19 . . .\r | |
4160 | jr nc,l197fh ;196c 30 11 0 .\r | |
4161 | push bc ;196e c5 .\r | |
25a690e5 | 4162 | call p_mnemonic ;196f cd b9 1e . . .\r |
0c4244e5 | 4163 | ex de,hl ;1972 eb .\r |
f2bb0732 | 4164 | call CALL_HL2 ;1973 cd c1 19 . . .\r |
0c4244e5 L |
4165 | pop bc ;1976 c1 .\r |
4166 | ld a,(l1ffdh) ;1977 3a fd 1f : . .\r | |
4167 | ld hl,(l1ffbh) ;197a 2a fb 1f * . .\r | |
4168 | scf ;197d 37 7\r | |
4169 | ret ;197e c9 .\r | |
4170 | \r | |
4171 | l197fh:\r | |
4172 | ld hl,msg_undef_opcode ;197f 21 89 19 ! . .\r | |
4173 | call pstr ;1982 cd 88 02 . . .\r | |
4174 | ld b,001h ;1985 06 01 . .\r | |
4175 | sub a ;1987 97 .\r | |
4176 | ret ;1988 c9 .\r | |
4177 | \r | |
4178 | msg_undef_opcode:\r | |
4179 | DC '???'\r | |
4180 | \r | |
4181 | disas_get_instrlen:\r | |
4182 | sub a ;198c 97 .\r | |
4183 | ld (isprefix_ixiy),a ;198d 32 f8 1f 2 . .\r | |
4184 | ld a,(iy+000h) ;1990 fd 7e 00 . ~ .\r | |
4185 | cp 0edh ;1993 fe ed . .\r | |
4186 | jp z,disas_pfx.ED ;1995 ca 19 1a . . .\r | |
4187 | cp 0ddh ;1998 fe dd . .\r | |
4188 | jr z,l19abh ;199a 28 0f ( .\r | |
4189 | cp 0fdh ;199c fe fd . .\r | |
4190 | jr z,l19afh ;199e 28 0f ( .\r | |
4191 | sub_19a0h:\r | |
4192 | ld a,(iy+000h) ;19a0 fd 7e 00 . ~ .\r | |
4193 | cp 0cbh ;19a3 fe cb . .\r | |
4194 | jp z,disas_pfx.CB ;19a5 ca 36 1a . 6 .\r | |
4195 | jp disas_nopfx ;19a8 c3 4d 1a . M .\r | |
4196 | l19abh:\r | |
4197 | ld a,1 ;19ab 3e 01 > .\r | |
4198 | jr l19b1h ;19ad 18 02 . .\r | |
4199 | l19afh:\r | |
4200 | ld a,2 ;19af 3e 02 > .\r | |
4201 | l19b1h:\r | |
4202 | ld (isprefix_ixiy),a ;19b1 32 f8 1f 2 . .\r | |
4203 | call disas_pfx.DDFD ;19b4 cd c2 19 . . .\r | |
4204 | ret nc ;19b7 d0 .\r | |
4205 | push bc ;19b8 c5 .\r | |
4206 | call sub_19a0h ;19b9 cd a0 19 . . .\r | |
4207 | pop af ;19bc f1 .\r | |
4208 | add a,b ;19bd 80 .\r | |
4209 | ld b,a ;19be 47 G\r | |
4210 | scf ;19bf 37 7\r | |
4211 | ret ;19c0 c9 .\r | |
4212 | \r | |
f2bb0732 | 4213 | CALL_HL2:\r |
0c4244e5 L |
4214 | jp (hl) ;19c1 e9 .\r |
4215 | \r | |
4216 | disas_pfx.DDFD:\r | |
4217 | inc iy ;19c2 fd 23 . #\r | |
4218 | ld hl,b_19ef_start ;19c4 21 ef 19 ! . .\r | |
4219 | call test_DDFD ;19c7 cd 8c 1a . . .\r | |
4220 | ld b,002h ;19ca 06 02 . .\r | |
4221 | ret c ;19cc d8 .\r | |
4222 | ld hl,l1a0ah ;19cd 21 0a 1a ! . .\r | |
4223 | call test_DDFD ;19d0 cd 8c 1a . . .\r | |
4224 | ld b,001h ;19d3 06 01 . .\r | |
4225 | ret c ;19d5 d8 .\r | |
4226 | ld a,(iy+000h) ;19d6 fd 7e 00 . ~ .\r | |
4227 | cp 0cbh ;19d9 fe cb . .\r | |
4228 | jr nz,l19edh ;19db 20 10 .\r | |
4229 | ld a,(iy+002h) ;19dd fd 7e 02 . ~ .\r | |
4230 | cp 036h ;19e0 fe 36 . 6\r | |
4231 | ret z ;19e2 c8 .\r | |
4232 | and 007h ;19e3 e6 07 . .\r | |
4233 | cp 006h ;19e5 fe 06 . .\r | |
4234 | jr nz,l19edh ;19e7 20 04 .\r | |
4235 | ld b,002h ;19e9 06 02 . .\r | |
4236 | scf ;19eb 37 7\r | |
4237 | ret ;19ec c9 .\r | |
4238 | l19edh:\r | |
4239 | and a ;19ed a7 .\r | |
4240 | ret ;19ee c9 .\r | |
4241 | \r | |
a531a417 | 4242 | ; DD/FD 3 byte (ix+d)/(iy+d)\r |
0c4244e5 L |
4243 | b_19ef_start:\r |
4244 | defb 034h ;19ef 34 4\r | |
4245 | defb 035h ;19f0 35 5\r | |
4246 | defb 036h ;19f1 36 6\r | |
4247 | defb 046h ;19f2 46 F\r | |
4248 | defb 04eh ;19f3 4e N\r | |
4249 | defb 056h ;19f4 56 V\r | |
4250 | defb 05eh ;19f5 5e ^\r | |
4251 | defb 066h ;19f6 66 f\r | |
4252 | defb 06eh ;19f7 6e n\r | |
4253 | defb 070h ;19f8 70 p\r | |
4254 | defb 071h ;19f9 71 q\r | |
4255 | defb 072h ;19fa 72 r\r | |
4256 | defb 073h ;19fb 73 s\r | |
4257 | defb 074h ;19fc 74 t\r | |
4258 | defb 075h ;19fd 75 u\r | |
4259 | ; ????\r | |
4260 | defb 076h ;19fe 76 v ????\r | |
4261 | defb 077h ;19ff 77 w\r | |
4262 | defb 07eh ;1a00 7e ~\r | |
4263 | defb 086h ;1a01 86 .\r | |
4264 | defb 08eh ;1a02 8e .\r | |
4265 | defb 096h ;1a03 96 .\r | |
4266 | defb 09eh ;1a04 9e .\r | |
4267 | defb 0a6h ;1a05 a6 .\r | |
4268 | defb 0aeh ;1a06 ae .\r | |
4269 | defb 0b6h ;1a07 b6 .\r | |
4270 | defb 0beh ;1a08 be .\r | |
4271 | defb 0 ;1a09 00 .\r | |
4272 | \r | |
a531a417 | 4273 | ; DD/FD 2 byte\r |
0c4244e5 L |
4274 | l1a0ah:\r |
4275 | defb 009h ;1a0a 09 .\r | |
4276 | defb 019h ;1a0b 19 .\r | |
4277 | defb 021h ;1a0c 21 !\r | |
4278 | defb 022h ;1a0d 22 "\r | |
4279 | defb 023h ;1a0e 23 #\r | |
4280 | defb 029h ;1a0f 29 )\r | |
4281 | defb 02ah ;1a10 2a *\r | |
4282 | defb 02bh ;1a11 2b +\r | |
4283 | defb 039h ;1a12 39 9\r | |
4284 | defb 0e1h ;1a13 e1 .\r | |
4285 | defb 0e3h ;1a14 e3 .\r | |
4286 | defb 0e5h ;1a15 e5 .\r | |
4287 | defb 0e9h ;1a16 e9 .\r | |
4288 | defb 0f9h ;1a17 f9 .\r | |
4289 | defb 0 ;1a18 00 .\r | |
4290 | \r | |
4291 | disas_pfx.ED:\r | |
4292 | inc iy ;1a19 fd 23 . #\r | |
4293 | ld hl,b_1bc9_start ;1a1b 21 c9 1b ! . .\r | |
4294 | call sub_1a72h ;1a1e cd 72 1a . r .\r | |
4295 | ld b,2 ;1a21 06 02 . .\r | |
4296 | ret c ;1a23 d8 .\r | |
4297 | ld hl,b_1bf4_start ;1a24 21 f4 1b ! . .\r | |
4298 | call lookup_opc ;1a27 cd 97 1a . . .\r | |
4299 | ld b,2 ;1a2a 06 02 . .\r | |
4300 | ret c ;1a2c d8 .\r | |
4301 | ld hl,b_1c40_start ;1a2d 21 40 1c ! @ .\r | |
4302 | call lookup_opc ;1a30 cd 97 1a . . .\r | |
4303 | ld b,4 ;1a33 06 04 . .\r | |
4304 | ret ;1a35 c9 .\r | |
4305 | \r | |
4306 | disas_pfx.CB:\r | |
4307 | push iy ;1a36 fd e5 . .\r | |
4308 | inc iy ;1a38 fd 23 . #\r | |
4309 | ld a,(isprefix_ixiy) ;1a3a 3a f8 1f : . .\r | |
4310 | and a ;1a3d a7 .\r | |
4311 | jr z,l1a42h ;1a3e 28 02 ( .\r | |
4312 | inc iy ;1a40 fd 23 . #\r | |
4313 | l1a42h:\r | |
4314 | ld hl,b_1c55_start ;1a42 21 55 1c ! U .\r | |
4315 | call lookup_opc ;1a45 cd 97 1a . . .\r | |
4316 | pop iy ;1a48 fd e1 . .\r | |
4317 | ld b,2 ;1a4a 06 02 . .\r | |
4318 | ret ;1a4c c9 .\r | |
4319 | \r | |
4320 | disas_nopfx:\r | |
4321 | ld hl,b_1b54_start ;1a4d 21 54 1b ! T .\r | |
4322 | call lookup_opc ;1a50 cd 97 1a . . .\r | |
4323 | ld b,2 ;1a53 06 02 . .\r | |
4324 | ret c ;1a55 d8 .\r | |
4325 | ld hl,b_1ab6_start ;1a56 21 b6 1a ! . .\r | |
4326 | call sub_1a72h ;1a59 cd 72 1a . r .\r | |
4327 | ld b,1 ;1a5c 06 01 . .\r | |
4328 | ret c ;1a5e d8 .\r | |
4329 | ld hl,b_1ad1_start ;1a5f 21 d1 1a ! . .\r | |
4330 | call lookup_opc ;1a62 cd 97 1a . . .\r | |
4331 | ld b,1 ;1a65 06 01 . .\r | |
4332 | ret c ;1a67 d8 .\r | |
4333 | ld hl,b_1b9b_start ;1a68 21 9b 1b ! . .\r | |
4334 | call lookup_opc ;1a6b cd 97 1a . . .\r | |
4335 | ret nc ;1a6e d0 .\r | |
4336 | ld b,3 ;1a6f 06 03 . .\r | |
4337 | ret ;1a71 c9 .\r | |
4338 | \r | |
4339 | sub_1a72h:\r | |
4340 | ld a,(hl) ;1a72 7e ~\r | |
4341 | cp 0ffh ;1a73 fe ff . .\r | |
4342 | ret z ;1a75 c8 .\r | |
4343 | cp (iy+000h) ;1a76 fd be 00 . . .\r | |
4344 | jr z,l1a7fh ;1a79 28 04 ( .\r | |
4345 | inc hl ;1a7b 23 #\r | |
4346 | inc hl ;1a7c 23 #\r | |
4347 | jr sub_1a72h ;1a7d 18 f3 . .\r | |
4348 | l1a7fh:\r | |
4349 | inc hl ;1a7f 23 #\r | |
4350 | ld c,(hl) ;1a80 4e N\r | |
4351 | ld hl,t_MNEMONICS ;1a81 21 c6 1e ! . .\r | |
4352 | ld b,0 ;1a84 06 00 . .\r | |
4353 | add hl,bc ;1a86 09 .\r | |
4354 | ld de,l1c97h ;1a87 11 97 1c . . .\r | |
4355 | scf ;1a8a 37 7\r | |
4356 | ret ;1a8b c9 .\r | |
4357 | \r | |
4358 | test_DDFD:\r | |
4359 | ld a,(hl) ;1a8c 7e ~\r | |
4360 | and a ;1a8d a7 .\r | |
4361 | ret z ;1a8e c8 .\r | |
4362 | inc hl ;1a8f 23 #\r | |
4363 | cp (iy+000h) ;1a90 fd be 00 . . .\r | |
4364 | jr nz,test_DDFD ;1a93 20 f7 .\r | |
4365 | scf ;1a95 37 7\r | |
4366 | ret ;1a96 c9 .\r | |
4367 | \r | |
4368 | lookup_opc:\r | |
4369 | ld a,(iy+000h) ;1a97 fd 7e 00 . ~ .\r | |
4370 | and (hl) ;1a9a a6 .\r | |
4371 | inc hl ;1a9b 23 #\r | |
4372 | cp (hl) ;1a9c be .\r | |
4373 | jr z,l1aa8h ;1a9d 28 09 ( .\r | |
4374 | inc hl ;1a9f 23 #\r | |
4375 | inc hl ;1aa0 23 #\r | |
4376 | inc hl ;1aa1 23 #\r | |
4377 | inc hl ;1aa2 23 #\r | |
4378 | ld a,(hl) ;1aa3 7e ~\r | |
4379 | and a ;1aa4 a7 .\r | |
4380 | jr nz,lookup_opc ;1aa5 20 f0 .\r | |
4381 | ret ;1aa7 c9 .\r | |
4382 | l1aa8h:\r | |
4383 | inc hl ;1aa8 23 #\r | |
4384 | ld c,(hl) ;1aa9 4e N\r | |
4385 | inc hl ;1aaa 23 #\r | |
4386 | ld e,(hl) ;1aab 5e ^\r | |
4387 | inc hl ;1aac 23 #\r | |
4388 | ld d,(hl) ;1aad 56 V\r | |
4389 | ld hl,t_MNEMONICS ;1aae 21 c6 1e ! . .\r | |
4390 | ld b,000h ;1ab1 06 00 . .\r | |
4391 | add hl,bc ;1ab3 09 .\r | |
4392 | scf ;1ab4 37 7\r | |
4393 | ret ;1ab5 c9 .\r | |
4394 | \r | |
15f6bf95 L |
4395 | ; 1 byte opcodes (no parameters)\r |
4396 | ; Format: db opcode, t_MNEMONICS-index\r | |
0c4244e5 | 4397 | b_1ab6_start:\r |
15f6bf95 L |
4398 | db 076h,039h ;halt\r |
4399 | db 0d9h,036h ;exx\r | |
4400 | db 0f3h,02ch ;di\r | |
4401 | db 0fbh,032h ;ei\r | |
4402 | db 000h,069h ;nop\r | |
4403 | db 007h,09eh ;rlca\r | |
4404 | db 00fh,0adh ;rrca\r | |
4405 | db 017h,098h ;rla\r | |
4406 | db 01fh,0a7h ;rra\r | |
4407 | db 027h,026h ;daa\r | |
4408 | db 02fh,023h ;cpl\r | |
4409 | db 037h,0bah ;scf\r | |
4410 | db 03fh,010h ;ccf\r | |
4411 | db 0ffh\r | |
4412 | \r | |
0c4244e5 L |
4413 | \r |
4414 | ; 1 byte opcodes\r | |
15f6bf95 L |
4415 | ; Format: db mask, match, t_MNEMONICS-index\r |
4416 | ; dw argument formating fuction\r | |
0c4244e5 | 4417 | b_1ad1_start:\r |
15f6bf95 | 4418 | db 0c0h,040h,056h ;ld r,r\r |
25a690e5 | 4419 | dw p_arg_r_r\r |
15f6bf95 | 4420 | db 0f8h,080h,003h ;add a,r\r |
25a690e5 | 4421 | dw p_arg_a_r\r |
15f6bf95 | 4422 | db 0f8h,088h,000h ;adc a,r\r |
25a690e5 L |
4423 | dw p_arg_a_r\r |
4424 | db 0f8h,090h,0c9h ;sub r\r | |
4425 | dw p_arg_rs\r | |
4426 | db 0f8h,098h,0b7h ;sbc a,r\r | |
4427 | dw p_arg_a_r\r | |
4428 | db 0f8h,0a0h,006h ;and r\r | |
4429 | dw p_arg_rs\r | |
4430 | db 0f8h,0a8h,0cch ;xor r\r | |
4431 | dw p_arg_rs\r | |
4432 | db 0f8h,0b0h,06ch ;or r\r | |
4433 | dw p_arg_rs\r | |
4434 | db 0f8h,0b8h,013h ;cp r\r | |
4435 | dw p_arg_rs\r | |
15f6bf95 | 4436 | db 0c7h,0c0h,08bh ;ret cc\r |
25a690e5 | 4437 | dw p_arg_cc\r |
15f6bf95 L |
4438 | db 0c7h,0c7h,0b4h ;rst\r |
4439 | dw l1c98h\r | |
4440 | db 0ffh,0c9h,08bh ;ret\r | |
4441 | dw l1c97h\r | |
4442 | db 0cfh,0c1h,081h ;pop rr\r | |
25a690e5 | 4443 | dw p_arg_zz\r |
15f6bf95 | 4444 | db 0cfh,0c5h,084h ;push rr\r |
25a690e5 | 4445 | dw p_arg_zz\r |
15f6bf95 L |
4446 | db 0ffh,0e3h,034h ;ex (sp),hl\r |
4447 | dw l1ca0h\r | |
4448 | db 0ffh,0e9h,052h ;jp (hl)\r | |
4449 | dw l1caeh\r | |
4450 | db 0ffh,0ebh,034h ;ex de,hl\r | |
25a690e5 | 4451 | dw p_arg_ex_dehl\r |
15f6bf95 L |
4452 | db 0ffh,0f9h,056h ;ld sp,hl\r |
4453 | dw l1cc1h\r | |
4454 | db 0cfh,003h,041h ;inc rr\r | |
25a690e5 | 4455 | dw p_arg_ww\r |
15f6bf95 | 4456 | db 0cfh,00bh,029h ;dec rr\r |
25a690e5 | 4457 | dw p_arg_ww\r |
15f6bf95 | 4458 | db 0c7h,004h,041h ;inc r\r |
25a690e5 | 4459 | dw p_arg_r\r |
15f6bf95 | 4460 | db 0c7h,005h,029h ;dec r\r |
25a690e5 | 4461 | dw p_arg_r\r |
15f6bf95 | 4462 | db 0ffh,008h,034h ;ex af,af'\r |
25a690e5 | 4463 | dw p_arg_ex_afaf\r |
15f6bf95 L |
4464 | db 0cfh,009h,003h ;add hl,rr\r |
4465 | dw l1cd3h\r | |
4466 | db 0efh,002h,056h ;ld (rr),a ;rr=bc,de\r | |
4467 | dw l1cdch\r | |
4468 | db 0efh,00ah,056h ;ld a,(rr) ;rr=bc,de\r | |
4469 | dw l1ce5h\r | |
4470 | db 0\r | |
0c4244e5 L |
4471 | \r |
4472 | ; 2 byte opdodes\r | |
4473 | b_1b54_start:\r | |
15f6bf95 L |
4474 | db 0c7h,006h,056h ;ld r,nn\r |
4475 | dw l1cfah\r | |
4476 | db 0ffh,0c6h,003h ;add a,nn\r | |
4477 | dw l1cf5h\r | |
4478 | db 0ffh,0ceh,000h ;adc a,nn\r | |
4479 | dw l1cf5h\r | |
4480 | db 0ffh,0d6h,0c9h ;sub a,nn\r | |
4481 | dw l1d09h\r | |
4482 | db 0ffh,0deh,0b7h ;sbc a,nn\r | |
4483 | dw l1cf5h\r | |
4484 | db 0ffh,0e6h,006h ;and a,nn\r | |
4485 | dw l1d09h\r | |
4486 | db 0ffh,0eeh,0cch ;xor nn\r | |
4487 | dw l1d09h\r | |
4488 | db 0ffh,0f6h,06ch ;or nn\r | |
4489 | dw l1d09h\r | |
4490 | db 0ffh,0feh,013h ;cp a,nn\r | |
4491 | dw l1d09h\r | |
4492 | db 0ffh,010h,02eh ;djnz\r | |
4493 | dw l1d1ah\r | |
4494 | db 0ffh,018h,054h ;jr\r | |
4495 | dw l1d1ah\r | |
4496 | db 0e7h,020h,054h ;jr,cc\r | |
4497 | dw l1d0fh\r | |
4498 | db 0ffh,0d3h,076h ;out (nn),a\r | |
4499 | dw l1d37h\r | |
4500 | db 0ffh,0dbh,03fh ;in a,(nn)\r | |
4501 | dw l1d29h\r | |
4502 | db 0\r | |
0c4244e5 L |
4503 | \r |
4504 | ; 3 byte opcodes\r | |
4505 | b_1b9b_start:\r | |
25a690e5 L |
4506 | db 0c7h,0c2h,052h ;jp cc,mn\r |
4507 | dw p_arg_cc_mn\r | |
4508 | db 0c7h,0c4h,00ch ;call cc,mn\r | |
4509 | dw p_arg_cc_mn\r | |
4510 | db 0cfh,001h,056h ;ld ww,mn\r | |
4511 | dw p_arg_ww_mn\r | |
4512 | db 0ffh,0c3h,052h ;jp mn\r | |
4513 | dw p_arg_mn\r | |
4514 | db 0ffh,0cdh,00ch ;call mn\r | |
4515 | dw p_arg_mn\r | |
4516 | db 0ffh,022h,056h ;ld (mn),hl\r | |
4517 | dw p_arg_addr_hl\r | |
4518 | db 0ffh,02ah,056h ;ld hl,(mn)\r | |
4519 | dw p_arg_hl_addr\r | |
4520 | db 0ffh,032h,056h ;ld (mn),a\r | |
4521 | dw p_arg_addr_a\r | |
4522 | db 0ffh,03ah,056h ;ld a,(mn)\r | |
4523 | dw p_arg_a_addr\r | |
15f6bf95 L |
4524 | db 0\r |
4525 | \r | |
4526 | ; Prefix ED + 1 byte opcode, no arguments\r | |
4527 | ; Format: opcode, t_MNEMONICS index\r | |
0c4244e5 | 4528 | b_1bc9_start:\r |
15f6bf95 L |
4529 | db 044h,066h ;neg\r |
4530 | db 045h,092h ;retn\r | |
4531 | db 04dh,08eh ;reti\r | |
4532 | db 067h,0b1h ;rrd\r | |
4533 | db 06fh,0a2h ;rld\r | |
4534 | db 0a0h,05fh ;ldi\r | |
4535 | db 0a1h,01ch ;cpi\r | |
4536 | db 0a2h,04bh ;ini\r | |
4537 | db 0a3h,07dh ;outi\r | |
4538 | db 0a8h,058h ;ldd\r | |
4539 | db 0a9h,015h ;cpd\r | |
4540 | db 0aah,044h ;ind\r | |
4541 | db 0abh,079h ;outd\r | |
4542 | db 0b0h,062h ;ldir\r | |
4543 | db 0b1h,01fh ;cpir\r | |
4544 | db 0b2h,04eh ;inir\r | |
4545 | db 0b3h,072h ;otir\r | |
4546 | db 0b8h,05bh ;lddr\r | |
4547 | db 0b9h,018h ;cpdr\r | |
4548 | db 0bah,047h ;indr\r | |
4549 | db 0bbh,06eh ;otdr\r | |
4550 | db 0ffh ;<end mark>\r | |
0c4244e5 L |
4551 | \r |
4552 | b_1bf4_start:\r | |
990f66ca | 4553 | db 0e7h,040h,03fh ;in r,(c) ;r=b,c,d,e\r |
25a690e5 | 4554 | dw p_arg_in_c ;\r |
990f66ca | 4555 | db 0f7h,060h,03fh ;in r,(c) ;r=h,l\r |
25a690e5 | 4556 | dw p_arg_in_c ;\r |
15f6bf95 | 4557 | db 0ffh,078h,03fh ;in r,(c) ;r=a\r |
25a690e5 | 4558 | dw p_arg_in_c ;\r |
990f66ca | 4559 | db 0e7h,041h,076h ;out (c),r ;r=b,c,d,e\r |
25a690e5 | 4560 | dw p_arg_out_c ;\r |
990f66ca | 4561 | db 0f7h,061h,076h ;out (c),r ;r=h,l\r |
25a690e5 | 4562 | dw p_arg_out_c ;\r |
15f6bf95 | 4563 | db 0ffh,079h,076h ;out (c),r ;r=a\r |
25a690e5 | 4564 | dw p_arg_out_c ;\r |
15f6bf95 L |
4565 | db 0cfh,042h,0b7h ;sbc hl,rr\r |
4566 | dw l1dcah ;\r | |
4567 | db 0cfh,04ah,000h ;adc hl,rr\r | |
4568 | dw l1dcah ;\r | |
4569 | db 0ffh,046h,03dh ;im 0\r | |
4570 | dw l1d85h ;\r | |
4571 | db 0ffh,056h,03dh ;im 1\r | |
4572 | dw l1d89h ;\r | |
4573 | db 0ffh,05eh,03dh ;im 2\r | |
4574 | dw l1d8dh ;\r | |
4575 | db 0ffh,047h,056h ;ld i,a\r | |
4576 | dw l1d92h ;\r | |
4577 | db 0ffh,057h,056h ;ld a,i\r | |
4578 | dw l1d97h ;\r | |
4579 | db 0ffh,04fh,056h ;ld r,a\r | |
4580 | dw l1d9ch ;\r | |
4581 | db 0ffh,05fh,056h ;ld a,r\r | |
4582 | dw l1da1h\r | |
4583 | db 0\r | |
0c4244e5 L |
4584 | \r |
4585 | b_1c40_start:\r | |
15f6bf95 | 4586 | db 0efh,043h,056h ;ld (mn),ww ;ww=bc,de\r |
25a690e5 | 4587 | dw p_arg_addr_ww\r |
15f6bf95 | 4588 | db 0ffh,073h,056h ;ld (mn),sp\r |
25a690e5 | 4589 | dw p_arg_addr_ww\r |
15f6bf95 | 4590 | db 0efh,04bh,056h ;ld ww,(mn) ;ww=bc,de\r |
25a690e5 | 4591 | dw p_arg_ww_addr\r |
15f6bf95 | 4592 | db 0ffh,07bh,056h ;ld sp,(mn)\r |
25a690e5 | 4593 | dw p_arg_ww_addr\r |
15f6bf95 L |
4594 | db 0\r |
4595 | \r | |
4596 | ; CB\r | |
0c4244e5 | 4597 | b_1c55_start:\r |
15f6bf95 L |
4598 | db 0f8h,000h,09bh ;rlc g\r |
4599 | dw l1e03h\r | |
4600 | db 0f8h,008h,0aah ;rrc g\r | |
4601 | dw l1e03h\r | |
4602 | db 0f8h,010h,096h ;rl g\r | |
4603 | dw l1e03h\r | |
4604 | db 0f8h,018h,0a5h ;rr g\r | |
4605 | dw l1e03h\r | |
4606 | db 0f8h,020h,0c0h ;sla g\r | |
4607 | dw l1e03h\r | |
4608 | db 0f8h,028h,0c3h ;sra g\r | |
4609 | dw l1e03h\r | |
4610 | db 0f8h,038h,0c6h ;srl g\r | |
4611 | dw l1e03h\r | |
4612 | db 0c0h,040h,009h ;bit b,g\r | |
25a690e5 | 4613 | dw p_arg_bitop\r |
15f6bf95 | 4614 | db 0c0h,080h,088h ;res b,g\r |
25a690e5 | 4615 | dw p_arg_bitop\r |
15f6bf95 | 4616 | db 0c0h,0c0h,0bdh ;set b,g\r |
25a690e5 | 4617 | dw p_arg_bitop\r |
15f6bf95 | 4618 | db 0\r |
0c4244e5 | 4619 | \r |
25a690e5 L |
4620 | p_arg_r_r:\r |
4621 | call p_arg_r ;1c88 cd 28 1e . ( .\r | |
4622 | call p_char_comma ;1c8b cd b4 1e . . .\r | |
4623 | jp p_arg_rs ;1c8e c3 30 1e . 0 .\r | |
4624 | p_arg_a_r:\r | |
4625 | call p_A_comma ;1c91 cd b1 1e . . .\r | |
4626 | jp p_arg_rs ;1c94 c3 30 1e . 0 .\r | |
0c4244e5 L |
4627 | l1c97h:\r |
4628 | ret ;1c97 c9 .\r | |
4629 | l1c98h:\r | |
4630 | ld a,(iy+000h) ;1c98 fd 7e 00 . ~ .\r | |
4631 | and 038h ;1c9b e6 38 . 8\r | |
4632 | jp out_hex ;1c9d c3 18 02 . . .\r | |
25a690e5 | 4633 | \r |
0c4244e5 L |
4634 | l1ca0h:\r |
4635 | ld hl,b_1ca9_start ;1ca0 21 a9 1c ! . .\r | |
4636 | call pstr ;1ca3 cd 88 02 . . .\r | |
25a690e5 | 4637 | jp p_arg_hlixiy ;1ca6 c3 7e 1e . ~ .\r |
0c4244e5 L |
4638 | \r |
4639 | b_1ca9_start:\r | |
4640 | DC '(SP),'\r | |
25a690e5 | 4641 | \r |
0c4244e5 L |
4642 | l1caeh:\r |
4643 | ld a,'(' ;1cae 3e 28 > (\r | |
4644 | call outchar ;1cb0 cd 5d 02 . ] .\r | |
25a690e5 | 4645 | call p_arg_hlixiy ;1cb3 cd 7e 1e . ~ .\r |
0c4244e5 L |
4646 | ld a,')' ;1cb6 3e 29 > )\r |
4647 | jp outchar ;1cb8 c3 5d 02 . ] .\r | |
25a690e5 | 4648 | p_arg_ex_dehl:\r |
0c4244e5 L |
4649 | ld hl,l1773h ;1cbb 21 73 17 ! s .\r |
4650 | jp pstr ;1cbe c3 88 02 . . .\r | |
25a690e5 | 4651 | \r |
0c4244e5 L |
4652 | l1cc1h:\r |
4653 | ld hl,b_1cca_start ;1cc1 21 ca 1c ! . .\r | |
4654 | call pstr ;1cc4 cd 88 02 . . .\r | |
25a690e5 | 4655 | jp p_arg_hlixiy ;1cc7 c3 7e 1e . ~ .\r |
0c4244e5 L |
4656 | \r |
4657 | b_1cca_start:\r | |
4658 | DC 'SP,'\r | |
25a690e5 L |
4659 | \r |
4660 | p_arg_ex_afaf:\r | |
0c4244e5 L |
4661 | ld hl,b_176d_start ;1ccd 21 6d 17 ! m .\r |
4662 | jp pstr ;1cd0 c3 88 02 . . .\r | |
25a690e5 | 4663 | \r |
0c4244e5 | 4664 | l1cd3h:\r |
25a690e5 L |
4665 | call p_arg_hlixiy ;1cd3 cd 7e 1e . ~ .\r |
4666 | call p_char_comma ;1cd6 cd b4 1e . . .\r | |
4667 | jp p_arg_ww ;1cd9 c3 8b 1e . . .\r | |
0c4244e5 L |
4668 | l1cdch:\r |
4669 | call sub_1ce8h ;1cdc cd e8 1c . . .\r | |
25a690e5 L |
4670 | call p_char_comma ;1cdf cd b4 1e . . .\r |
4671 | jp p_char_A ;1ce2 c3 3d 1d . = .\r | |
0c4244e5 L |
4672 | \r |
4673 | l1ce5h:\r | |
25a690e5 | 4674 | call p_A_comma ;1ce5 cd b1 1e . . .\r |
0c4244e5 L |
4675 | sub_1ce8h:\r |
4676 | ld a,'(' ;1ce8 3e 28 > (\r | |
4677 | call outchar ;1cea cd 5d 02 . ] .\r | |
f2bb0732 | 4678 | call p_arg_ww ;1ced cd 8b 1e . . .\r |
0c4244e5 L |
4679 | ld a,')' ;1cf0 3e 29 > )\r |
4680 | jp outchar ;1cf2 c3 5d 02 . ] .\r | |
4681 | l1cf5h:\r | |
25a690e5 | 4682 | call p_A_comma ;1cf5 cd b1 1e . . .\r |
0c4244e5 L |
4683 | jr l1d09h ;1cf8 18 0f . .\r |
4684 | l1cfah:\r | |
25a690e5 L |
4685 | call p_arg_r ;1cfa cd 28 1e . ( .\r |
4686 | call p_char_comma ;1cfd cd b4 1e . . .\r | |
0c4244e5 L |
4687 | ld a,(isprefix_ixiy) ;1d00 3a f8 1f : . .\r |
4688 | and a ;1d03 a7 .\r | |
4689 | ld a,(iy+002h) ;1d04 fd 7e 02 . ~ .\r | |
4690 | jr nz,l1d0ch ;1d07 20 03 .\r | |
4691 | l1d09h:\r | |
4692 | ld a,(iy+001h) ;1d09 fd 7e 01 . ~ .\r | |
4693 | l1d0ch:\r | |
4694 | jp out_hex ;1d0c c3 18 02 . . .\r | |
15f6bf95 | 4695 | \r |
0c4244e5 L |
4696 | l1d0fh:\r |
4697 | ld a,(iy+000h) ;1d0f fd 7e 00 . ~ .\r | |
4698 | and 018h ;1d12 e6 18 . .\r | |
25a690e5 L |
4699 | call p_arg_cc0 ;1d14 cd a0 1e . . .\r |
4700 | call p_char_comma ;1d17 cd b4 1e . . .\r | |
0c4244e5 L |
4701 | l1d1ah:\r |
4702 | ld c,(iy+001h) ;1d1a fd 4e 01 . N .\r | |
4703 | ld a,c ;1d1d 79 y\r | |
4704 | rla ;1d1e 17 .\r | |
4705 | sbc a,a ;1d1f 9f .\r | |
4706 | ld b,a ;1d20 47 G\r | |
4707 | push iy ;1d21 fd e5 . .\r | |
4708 | pop hl ;1d23 e1 .\r | |
4709 | add hl,bc ;1d24 09 .\r | |
4710 | inc hl ;1d25 23 #\r | |
4711 | inc hl ;1d26 23 #\r | |
4712 | jr l1d4eh ;1d27 18 25 . %\r | |
4713 | l1d29h:\r | |
25a690e5 | 4714 | call p_A_comma ;1d29 cd b1 1e . . .\r |
0c4244e5 L |
4715 | sub_1d2ch:\r |
4716 | ld a,'(' ;1d2c 3e 28 > (\r | |
4717 | call outchar ;1d2e cd 5d 02 . ] .\r | |
4718 | ld a,(iy+001h) ;1d31 fd 7e 01 . ~ .\r | |
4719 | jp l1e6bh ;1d34 c3 6b 1e . k .\r | |
4720 | l1d37h:\r | |
4721 | call sub_1d2ch ;1d37 cd 2c 1d . , .\r | |
f2bb0732 L |
4722 | call p_char_comma ;1d3a cd b4 1e . . .\r |
4723 | p_char_A:\r | |
0c4244e5 L |
4724 | ld a,'A' ;1d3d 3e 41 > A\r |
4725 | jp outchar ;1d3f c3 5d 02 . ] .\r | |
4726 | \r | |
25a690e5 L |
4727 | p_arg_cc_mn:\r |
4728 | call p_arg_cc ;1d42 cd 9d 1e . . .\r | |
4729 | call p_char_comma ;1d45 cd b4 1e . . .\r | |
4730 | p_arg_mn:\r | |
0c4244e5 L |
4731 | ld l,(iy+001h) ;1d48 fd 6e 01 . n .\r |
4732 | ld h,(iy+002h) ;1d4b fd 66 02 . f .\r | |
4733 | l1d4eh:\r | |
4734 | ld a,002h ;1d4e 3e 02 > .\r | |
4735 | sub_1d50h:\r | |
4736 | ld (l1ffdh),a ;1d50 32 fd 1f 2 . .\r | |
4737 | ld (l1ffbh),hl ;1d53 22 fb 1f " . .\r | |
4738 | call out_hl ;1d56 cd 13 02 . . .\r | |
4739 | ret ;1d59 c9 .\r | |
25a690e5 L |
4740 | p_arg_ww_mn:\r |
4741 | call p_arg_ww ;1d5a cd 8b 1e . . .\r | |
4742 | call p_char_comma ;1d5d cd b4 1e . . .\r | |
4743 | jr p_arg_mn ;1d60 18 e6 . .\r | |
4744 | \r | |
4745 | p_arg_addr_hl:\r | |
0c4244e5 | 4746 | call sub_1e13h ;1d62 cd 13 1e . . .\r |
25a690e5 L |
4747 | call p_char_comma ;1d65 cd b4 1e . . .\r |
4748 | jp p_arg_hlixiy ;1d68 c3 7e 1e . ~ .\r | |
4749 | p_arg_hl_addr:\r | |
4750 | call p_arg_hlixiy ;1d6b cd 7e 1e . ~ .\r | |
4751 | call p_char_comma ;1d6e cd b4 1e . . .\r | |
0c4244e5 | 4752 | jp sub_1e13h ;1d71 c3 13 1e . . .\r |
25a690e5 L |
4753 | \r |
4754 | p_arg_addr_a:\r | |
0c4244e5 | 4755 | call sub_1e13h ;1d74 cd 13 1e . . .\r |
25a690e5 L |
4756 | p_char_comma_A:\r |
4757 | call p_char_comma ;1d77 cd b4 1e . . .\r | |
0c4244e5 | 4758 | ld a,'A' ;1d7a 3e 41 > A\r |
f2bb0732 | 4759 | jp outchar ;1d87 18 06 . .\r |
25a690e5 L |
4760 | p_arg_a_addr:\r |
4761 | call p_A_comma ;1d7f cd b1 1e . . .\r | |
0c4244e5 L |
4762 | jp sub_1e13h ;1d82 c3 13 1e . . .\r |
4763 | l1d85h:\r | |
4764 | ld a,'0' ;1d85 3e 30 > 0\r | |
4765 | jr l1d8fh ;1d87 18 06 . .\r | |
4766 | l1d89h:\r | |
4767 | ld a,'1' ;1d89 3e 31 > 1\r | |
4768 | jr l1d8fh ;1d8b 18 02 . .\r | |
4769 | l1d8dh:\r | |
4770 | ld a,'2' ;1d8d 3e 32 > 2\r | |
4771 | l1d8fh:\r | |
4772 | jp outchar ;1d8f c3 5d 02 . ] .\r | |
4773 | l1d92h:\r | |
4774 | ld hl,b_1da7_start ;1d92 21 a7 1d ! . .\r | |
4775 | jr l1da4h ;1d95 18 0d . .\r | |
4776 | l1d97h:\r | |
4777 | ld hl,l1daah ;1d97 21 aa 1d ! . .\r | |
4778 | jr l1da4h ;1d9a 18 08 . .\r | |
4779 | l1d9ch:\r | |
4780 | ld hl,l1dadh ;1d9c 21 ad 1d ! . .\r | |
4781 | jr l1da4h ;1d9f 18 03 . .\r | |
4782 | l1da1h:\r | |
4783 | ld hl,l1db0h ;1da1 21 b0 1d ! . .\r | |
4784 | l1da4h:\r | |
4785 | jp pstr ;1da4 c3 88 02 . . .\r | |
4786 | \r | |
4787 | b_1da7_start:\r | |
4788 | DC 'I,A'\r | |
4789 | l1daah:\r | |
4790 | DC 'A,I'\r | |
4791 | l1dadh:\r | |
4792 | DC 'R,A'\r | |
4793 | l1db0h:\r | |
4794 | DC 'A,R'\r | |
4795 | \r | |
25a690e5 L |
4796 | p_arg_in_c:\r |
4797 | call p_arg_r ;1db3 cd 28 1e . ( .\r | |
4798 | call p_char_comma ;1db6 cd b4 1e . . .\r | |
0c4244e5 L |
4799 | ld hl,t__C_ ;1db9 21 f4 1f ! . .\r |
4800 | jp pstr ;1dbc c3 88 02 . . .\r | |
25a690e5 L |
4801 | \r |
4802 | p_arg_out_c:\r | |
0c4244e5 L |
4803 | ld hl,t__C_ ;1dbf 21 f4 1f ! . .\r |
4804 | call pstr ;1dc2 cd 88 02 . . .\r | |
25a690e5 L |
4805 | call p_char_comma ;1dc5 cd b4 1e . . .\r |
4806 | jr p_arg_r ;1dc8 18 5e . ^\r | |
4807 | \r | |
0c4244e5 | 4808 | l1dcah:\r |
25a690e5 L |
4809 | call p_arg_hlixiy ;1dca cd 7e 1e . ~ .\r |
4810 | call p_char_comma ;1dcd cd b4 1e . . .\r | |
4811 | jp p_arg_ww ;1dd0 c3 8b 1e . . .\r | |
4812 | \r | |
4813 | p_arg_addr_ww:\r | |
0c4244e5 | 4814 | call sub_1e13h ;1dd3 cd 13 1e . . .\r |
25a690e5 L |
4815 | call p_char_comma ;1dd6 cd b4 1e . . .\r |
4816 | jp p_arg_ww ;1dd9 c3 8b 1e . . .\r | |
4817 | \r | |
4818 | p_arg_ww_addr:\r | |
4819 | call p_arg_ww ;1ddc cd 8b 1e . . .\r | |
4820 | call p_char_comma ;1ddf cd b4 1e . . .\r | |
0c4244e5 | 4821 | jr sub_1e13h ;1de2 18 2f . /\r |
25a690e5 L |
4822 | \r |
4823 | p_arg_bitop:\r | |
0c4244e5 L |
4824 | ld a,(isprefix_ixiy) ;1de4 3a f8 1f : . .\r |
4825 | and a ;1de7 a7 .\r | |
4826 | jr nz,l1defh ;1de8 20 05 .\r | |
4827 | ld a,(iy+001h) ;1dea fd 7e 01 . ~ .\r | |
4828 | jr l1df2h ;1ded 18 03 . .\r | |
4829 | l1defh:\r | |
4830 | ld a,(iy+002h) ;1def fd 7e 02 . ~ .\r | |
4831 | l1df2h:\r | |
4832 | push af ;1df2 f5 .\r | |
4833 | rra ;1df3 1f .\r | |
4834 | rra ;1df4 1f .\r | |
4835 | rra ;1df5 1f .\r | |
4836 | and 007h ;1df6 e6 07 . .\r | |
4837 | add a,'0' ;1df8 c6 30 . 0\r | |
4838 | call outchar ;1dfa cd 5d 02 . ] .\r | |
25a690e5 | 4839 | call p_char_comma ;1dfd cd b4 1e . . .\r |
0c4244e5 | 4840 | pop af ;1e00 f1 .\r |
25a690e5 L |
4841 | jr p_arg_r0 ;1e01 18 30 . 0\r |
4842 | \r | |
0c4244e5 L |
4843 | l1e03h:\r |
4844 | ld a,(isprefix_ixiy) ;1e03 3a f8 1f : . .\r | |
4845 | and a ;1e06 a7 .\r | |
4846 | jr nz,l1e0eh ;1e07 20 05 .\r | |
4847 | ld a,(iy+001h) ;1e09 fd 7e 01 . ~ .\r | |
4848 | jr l1e11h ;1e0c 18 03 . .\r | |
4849 | l1e0eh:\r | |
4850 | ld a,(iy+002h) ;1e0e fd 7e 02 . ~ .\r | |
4851 | l1e11h:\r | |
25a690e5 L |
4852 | jr p_arg_r0 ;1e11 18 20 .\r |
4853 | \r | |
0c4244e5 L |
4854 | sub_1e13h:\r |
4855 | ld a,'(' ;1e13 3e 28 > (\r | |
4856 | call outchar ;1e15 cd 5d 02 . ] .\r | |
4857 | ld l,(iy+001h) ;1e18 fd 6e 01 . n .\r | |
4858 | ld h,(iy+002h) ;1e1b fd 66 02 . f .\r | |
4859 | ld a,001h ;1e1e 3e 01 > .\r | |
4860 | call sub_1d50h ;1e20 cd 50 1d . P .\r | |
25a690e5 L |
4861 | \r |
4862 | p_char_rparen:\r | |
0c4244e5 L |
4863 | ld a,')' ;1e23 3e 29 > )\r |
4864 | jp outchar ;1e25 c3 5d 02 . ] .\r | |
25a690e5 L |
4865 | \r |
4866 | p_arg_r:\r | |
0c4244e5 L |
4867 | ld a,(iy+000h) ;1e28 fd 7e 00 . ~ .\r |
4868 | rra ;1e2b 1f .\r | |
4869 | rra ;1e2c 1f .\r | |
4870 | rra ;1e2d 1f .\r | |
25a690e5 L |
4871 | jr p_arg_r0 ;1e2e 18 03 . .\r |
4872 | p_arg_rs:\r | |
0c4244e5 | 4873 | ld a,(iy+000h) ;1e30 fd 7e 00 . ~ .\r |
25a690e5 | 4874 | p_arg_r0:\r |
0c4244e5 L |
4875 | and 007h ;1e33 e6 07 . .\r |
4876 | cp 006h ;1e35 fe 06 . .\r | |
25a690e5 | 4877 | jr nz,p_arg_r1 ;1e37 20 3a :\r |
0c4244e5 L |
4878 | ld a,(isprefix_ixiy) ;1e39 3a f8 1f : . .\r |
4879 | and a ;1e3c a7 .\r | |
4880 | ld a,006h ;1e3d 3e 06 > .\r | |
25a690e5 | 4881 | jr z,p_arg_r1 ;1e3f 28 32 ( 2\r |
0c4244e5 L |
4882 | ld hl,b_1e78_start ;1e41 21 78 1e ! x .\r |
4883 | ld a,(isprefix_ixiy) ;1e44 3a f8 1f : . .\r | |
4884 | dec a ;1e47 3d =\r | |
4885 | jr z,l1e4dh ;1e48 28 03 ( .\r | |
4886 | ld hl,l1e7bh ;1e4a 21 7b 1e ! { .\r | |
4887 | l1e4dh:\r | |
4888 | call pstr ;1e4d cd 88 02 . . .\r | |
4889 | ld a,(iy+001h) ;1e50 fd 7e 01 . ~ .\r | |
4890 | and a ;1e53 a7 .\r | |
4891 | jp m,l1e61h ;1e54 fa 61 1e . a .\r | |
4892 | ld a,'+' ;1e57 3e 2b > +\r | |
4893 | call outchar ;1e59 cd 5d 02 . ] .\r | |
4894 | ld a,(iy+001h) ;1e5c fd 7e 01 . ~ .\r | |
4895 | jr l1e6bh ;1e5f 18 0a . .\r | |
4896 | l1e61h:\r | |
4897 | ld a,'-' ;1e61 3e 2d > -\r | |
4898 | call outchar ;1e63 cd 5d 02 . ] .\r | |
4899 | ld a,(iy+001h) ;1e66 fd 7e 01 . ~ .\r | |
4900 | neg ;1e69 ed 44 . D\r | |
4901 | l1e6bh:\r | |
4902 | call out_hex ;1e6b cd 18 02 . . .\r | |
4903 | ld a,')' ;1e6e 3e 29 > )\r | |
4904 | jp outchar ;1e70 c3 5d 02 . ] .\r | |
990f66ca | 4905 | \r |
25a690e5 | 4906 | p_arg_r1:\r |
0c4244e5 | 4907 | ld hl,t_BCDEHL_HL_A ;1e73 21 96 1f ! . .\r |
25a690e5 | 4908 | jr p_arg ;1e76 18 32 . 2\r |
0c4244e5 L |
4909 | \r |
4910 | b_1e78_start:\r | |
4911 | DC '(IX'\r | |
4912 | l1e7bh:\r | |
4913 | DC '(IY'\r | |
990f66ca | 4914 | \r |
25a690e5 | 4915 | p_arg_hlixiy:\r |
0c4244e5 L |
4916 | ld a,(isprefix_ixiy) ;1e7e 3a f8 1f : . .\r |
4917 | ld hl,t_HL.IX.IY ;1e81 21 c6 1f ! . .\r | |
25a690e5 L |
4918 | jr p_arg ;1e84 18 24 . $\r |
4919 | p_arg_zz:\r | |
0c4244e5 L |
4920 | ld hl,t_BC.DE.HL.AF ;1e86 21 ab 1f ! . .\r |
4921 | jr l1e8eh ;1e89 18 03 . .\r | |
25a690e5 | 4922 | p_arg_ww:\r |
0c4244e5 L |
4923 | ld hl,t_BC.DE.HL.SP ;1e8b 21 a2 1f ! . .\r |
4924 | l1e8eh:\r | |
4925 | ld a,(iy+000h) ;1e8e fd 7e 00 . ~ .\r | |
4926 | rra ;1e91 1f .\r | |
4927 | rra ;1e92 1f .\r | |
4928 | rra ;1e93 1f .\r | |
4929 | rra ;1e94 1f .\r | |
4930 | and 003h ;1e95 e6 03 . .\r | |
4931 | cp 002h ;1e97 fe 02 . .\r | |
25a690e5 L |
4932 | jr z,p_arg_hlixiy ;1e99 28 e3 ( .\r |
4933 | jr p_arg ;1e9b 18 0d . .\r | |
990f66ca | 4934 | \r |
25a690e5 | 4935 | p_arg_cc:\r |
0c4244e5 | 4936 | ld a,(iy+000h) ;1e9d fd 7e 00 . ~ .\r |
25a690e5 | 4937 | p_arg_cc0:\r |
0c4244e5 L |
4938 | rra ;1ea0 1f .\r |
4939 | rra ;1ea1 1f .\r | |
4940 | rra ;1ea2 1f .\r | |
4941 | and 007h ;1ea3 e6 07 . .\r | |
4942 | ld hl,t_tstfl_ZCPS ;1ea5 21 dc 1f ! . .\r | |
4943 | jr l1eaah ;1ea8 18 00 . .\r | |
4944 | l1eaah:\r | |
25a690e5 | 4945 | p_arg:\r |
0c4244e5 | 4946 | ld b,a ;1eaa 47 G\r |
990f66ca | 4947 | call sel_dc_string ;1eab cd 3d 03 . = .\r |
0c4244e5 L |
4948 | jp pstr ;1eae c3 88 02 . . .\r |
4949 | \r | |
f2bb0732 L |
4950 | p_A_comma:\r |
4951 | call p_char_A ;1eb1 cd 3d 1d . = .\r | |
4952 | p_char_comma:\r | |
0c4244e5 L |
4953 | ld a,',' ;1eb4 3e 2c > ,\r |
4954 | jp outchar ;1eb6 c3 5d 02 . ] .\r | |
4955 | \r | |
25a690e5 | 4956 | p_mnemonic:\r |
0c4244e5 L |
4957 | call pstr ;1eb9 cd 88 02 . . .\r |
4958 | l1ebch:\r | |
4959 | call outbl ;1ebc cd 9f 02 . . .\r | |
4960 | inc c ;1ebf 0c .\r | |
4961 | ld a,c ;1ec0 79 y\r | |
4962 | cp 5 ;1ec1 fe 05 . .\r | |
4963 | jr nz,l1ebch ;1ec3 20 f7 .\r | |
4964 | ret ;1ec5 c9 .\r | |
4965 | \r | |
4966 | t_MNEMONICS:\r | |
4967 | DC 'ADC'\r | |
4968 | DC 'ADD'\r | |
4969 | DC 'AND'\r | |
4970 | DC 'BIT'\r | |
4971 | DC 'CALL'\r | |
4972 | DC 'CCF'\r | |
4973 | DC 'CP'\r | |
4974 | DC 'CPD'\r | |
4975 | DC 'CPDR'\r | |
4976 | DC 'CPI'\r | |
4977 | DC 'CPIR'\r | |
4978 | DC 'CPL'\r | |
4979 | DC 'DAA'\r | |
4980 | DC 'DEC'\r | |
4981 | DC 'DI'\r | |
4982 | DC 'DJNZ'\r | |
4983 | DC 'EI'\r | |
4984 | DC 'EX'\r | |
4985 | DC 'EXX'\r | |
4986 | DC 'HALT'\r | |
4987 | DC 'IM'\r | |
4988 | DC 'IN'\r | |
4989 | DC 'INC'\r | |
4990 | DC 'IND'\r | |
4991 | DC 'INDR'\r | |
4992 | DC 'INI'\r | |
4993 | DC 'INIR'\r | |
4994 | DC 'JP'\r | |
4995 | DC 'JR'\r | |
4996 | DC 'LD'\r | |
4997 | DC 'LDD'\r | |
4998 | DC 'LDDR'\r | |
4999 | DC 'LDI'\r | |
5000 | DC 'LDIR'\r | |
5001 | DC 'NEG'\r | |
5002 | DC 'NOP'\r | |
5003 | DC 'OR'\r | |
5004 | DC 'OTDR'\r | |
5005 | DC 'OTIR'\r | |
5006 | DC 'OUT'\r | |
5007 | DC 'OUTD'\r | |
5008 | DC 'OUTI'\r | |
5009 | DC 'POP'\r | |
5010 | DC 'PUSH'\r | |
5011 | DC 'RES'\r | |
5012 | DC 'RET'\r | |
5013 | DC 'RETI'\r | |
5014 | DC 'RETN'\r | |
5015 | DC 'RL'\r | |
5016 | DC 'RLA'\r | |
5017 | DC 'RLC'\r | |
5018 | DC 'RLCA'\r | |
5019 | DC 'RLD'\r | |
5020 | DC 'RR'\r | |
5021 | DC 'RRA'\r | |
5022 | DC 'RRC'\r | |
5023 | DC 'RRCA'\r | |
5024 | DC 'RRD'\r | |
5025 | DC 'RST'\r | |
5026 | DC 'SBC'\r | |
5027 | DC 'SCF'\r | |
5028 | DC 'SET'\r | |
5029 | DC 'SLA'\r | |
5030 | DC 'SRA'\r | |
5031 | DC 'SRL'\r | |
5032 | DC 'SUB'\r | |
5033 | DC 'XOR'\r | |
5034 | if 0\r | |
5035 | DC 'IN0'\r | |
5036 | DC 'MLT'\r | |
5037 | DC 'OTDM'\r | |
5038 | DC 'OTDMR'\r | |
5039 | DC 'OTIM'\r | |
5040 | DC 'OTIMR'\r | |
5041 | DC 'OUT0'\r | |
5042 | DC 'SLP'\r | |
5043 | DC 'TST'\r | |
5044 | DC 'TSTIO'\r | |
5045 | endif\r | |
5046 | DB 0\r | |
5047 | \r | |
5048 | t_BCDEHL_HL_A:\r | |
5049 | DC 'B'\r | |
5050 | DC 'C'\r | |
5051 | DC 'D'\r | |
5052 | DC 'E'\r | |
5053 | DC 'H'\r | |
5054 | DC 'L'\r | |
5055 | DC '(HL)'\r | |
5056 | DC 'A'\r | |
5057 | DB 0\r | |
5058 | t_BC.DE.HL.SP:\r | |
5059 | DC 'BC'\r | |
5060 | DC 'DE'\r | |
5061 | DC 'HL'\r | |
5062 | DC 'SP'\r | |
5063 | DB 0\r | |
5064 | t_BC.DE.HL.AF:\r | |
5065 | DC 'BC'\r | |
5066 | DC 'DE'\r | |
5067 | t_HL.AF:\r | |
5068 | DC 'HL'\r | |
5069 | DC 'AF'\r | |
5070 | DB 0\r | |
5071 | t_BC.DE.IY.SP:\r | |
5072 | DC 'BC'\r | |
5073 | DC 'DE'\r | |
5074 | DC 'IY'\r | |
5075 | DC 'SP'\r | |
5076 | DB 0\r | |
5077 | t_BC.DE.IX.SP:\r | |
5078 | DC 'BC'\r | |
5079 | DC 'DE'\r | |
5080 | DC 'IX'\r | |
5081 | DC 'SP'\r | |
5082 | DB 0\r | |
5083 | t_HL.IX.IY:\r | |
5084 | DC 'HL'\r | |
5085 | t_IX.IY:\r | |
5086 | DC 'IX'\r | |
5087 | DC 'IY'\r | |
5088 | DB 0\r | |
5089 | t_tstfl_ZC:\r | |
5090 | DC 'NZ'\r | |
5091 | DC 'Z'\r | |
5092 | DC 'NC'\r | |
5093 | DC 'C'\r | |
5094 | DC 'NE'\r | |
5095 | DC 'EQ'\r | |
5096 | DC 'GE'\r | |
5097 | DC 'LT'\r | |
5098 | DB 0\r | |
5099 | t_tstfl_ZCPS:\r | |
5100 | DC 'NZ'\r | |
5101 | DC 'Z'\r | |
5102 | DC 'NC'\r | |
5103 | DC 'C'\r | |
5104 | DC 'PO'\r | |
5105 | DC 'PE'\r | |
5106 | DC 'P'\r | |
5107 | DC 'M'\r | |
5108 | DC 'NE'\r | |
5109 | DC 'EQ'\r | |
5110 | DC 'GE'\r | |
5111 | DC 'LT'\r | |
5112 | DC 'NV'\r | |
5113 | DC 'V'\r | |
5114 | DB 0\r | |
5115 | t__C_:\r | |
5116 | DC '(C)'\r | |
5117 | DB 0\r | |
5118 | \r | |
5119 | isprefix_ixiy:\r | |
5120 | db 0 ;1ff8 00 .\r | |
5121 | last_L:\r | |
5122 | dw TPA ;1ff9 00 01 .\r | |
5123 | l1ffbh:\r | |
5124 | dw 0 ;1ffb 00 00 .\r | |
5125 | l1ffdh:\r | |
5126 | db 0 ;1ffd 00 .\r | |
5127 | \r | |
5128 | sub_1ffeh:\r | |
5129 | ld hl,(REG.PC) ;1ffe 2a 60 00 * ` .\r | |
5130 | ld a,h ;2001 7c |\r | |
5131 | or l ;2002 b5 .\r | |
5132 | jr z,l2037h ;2003 28 32 ( 2\r | |
5133 | ld de,BDOS ;2005 11 05 00 . . .\r | |
5134 | and a ;2008 a7 .\r | |
5135 | sbc hl,de ;2009 ed 52 . R\r | |
5136 | ld hl,l20edh ;200b 21 ed 20 ! .\r | |
5137 | jr z,l2031h ;200e 28 21 ( !\r | |
5138 | ld iy,(REG.PC) ;2010 fd 2a 60 00 . * ` .\r | |
5139 | call disas_get_instrlen ;2014 cd 8c 19 . . .\r | |
5140 | jp nc,ERROR ;2017 d2 07 01 . . .\r | |
5141 | ld c,b ;201a 48 H\r | |
5142 | ld b,000h ;201b 06 00 . .\r | |
5143 | ld hl,(REG.PC) ;201d 2a 60 00 * ` .\r | |
5144 | add hl,bc ;2020 09 .\r | |
5145 | call sub_09cah ;2021 cd ca 09 . . .\r | |
5146 | ld iy,(REG.PC) ;2024 fd 2a 60 00 . * ` .\r | |
5147 | ld hl,b_2039_start ;2028 21 39 20 ! 9\r | |
5148 | call lookup_opc ;202b cd 97 1a . . .\r | |
5149 | ccf ;202e 3f ?\r | |
5150 | ret c ;202f d8 .\r | |
5151 | ex de,hl ;2030 eb .\r | |
5152 | l2031h:\r | |
5153 | call CALL_HL ;2031 cd 0f 01 . . .\r | |
5154 | call c,sub_09cah ;2034 dc ca 09 . . .\r | |
5155 | l2037h:\r | |
5156 | scf ;2037 37 7\r | |
5157 | ret ;2038 c9 .\r | |
5158 | \r | |
5159 | b_2039_start:\r | |
990f66ca | 5160 | db 0ffh,0ddh,000h ;Prefix DD\r |
15f6bf95 | 5161 | dw l20a7h\r |
990f66ca | 5162 | db 0ffh,0fdh,000h ;Prefix FD\r |
15f6bf95 | 5163 | dw l20ach\r |
990f66ca | 5164 | db 0ffh,0edh,000h ;Prefix ED\r |
15f6bf95 | 5165 | dw l20b8h\r |
0c4244e5 L |
5166 | \r |
5167 | b_2048_start:\r | |
990f66ca | 5168 | db 0ffh,0cdh,000h ;call mn\r |
15f6bf95 | 5169 | dw l2080h\r |
990f66ca | 5170 | db 0ffh,0c3h,000h ;jp mn\r |
15f6bf95 | 5171 | dw l208bh\r |
990f66ca | 5172 | db 0ffh,0e9h,000h ;jp ()\r |
15f6bf95 | 5173 | dw l20a2h\r |
990f66ca | 5174 | db 0ffh,0c9h,000h ;ret\r |
15f6bf95 | 5175 | dw l20dch\r |
990f66ca | 5176 | db 0ffh,0cfh,000h ;rst 8\r |
15f6bf95 | 5177 | dw l2115h\r |
990f66ca | 5178 | db 0c7h,0c7h,000h ;\r |
15f6bf95 | 5179 | dw l20f9h\r |
990f66ca | 5180 | db 0c7h,0c4h,000h ;\r |
15f6bf95 | 5181 | dw l2080h\r |
990f66ca | 5182 | db 0f7h,010h,000h ;\r |
15f6bf95 | 5183 | dw l2093h\r |
990f66ca | 5184 | db 0e7h,020h,000h ;\r |
15f6bf95 | 5185 | dw l2093h\r |
990f66ca | 5186 | db 0c7h,0c2h,000h ;\r |
15f6bf95 | 5187 | dw l208bh\r |
990f66ca | 5188 | db 0c7h,0c0h,000h ;\r |
15f6bf95 L |
5189 | dw l20c5h\r |
5190 | db 0\r | |
0c4244e5 L |
5191 | \r |
5192 | l2080h:\r | |
5193 | ld a,(b_21e2_start) ;2080 3a e2 21 : . !\r | |
5194 | and a ;2083 a7 .\r | |
5195 | jr nz,l208bh ;2084 20 05 .\r | |
5196 | ld a,(trace_call_flag) ;2086 3a e3 21 : . !\r | |
5197 | and a ;2089 a7 .\r | |
5198 | ret nz ;208a c0 .\r | |
5199 | l208bh:\r | |
5200 | ld l,(iy+001h) ;208b fd 6e 01 . n .\r | |
5201 | ld h,(iy+002h) ;208e fd 66 02 . f .\r | |
5202 | scf ;2091 37 7\r | |
5203 | ret ;2092 c9 .\r | |
5204 | l2093h:\r | |
5205 | ld c,(iy+001h) ;2093 fd 4e 01 . N .\r | |
5206 | ld a,c ;2096 79 y\r | |
5207 | rla ;2097 17 .\r | |
5208 | sbc a,a ;2098 9f .\r | |
5209 | ld b,a ;2099 47 G\r | |
5210 | ld hl,(REG.PC) ;209a 2a 60 00 * ` .\r | |
5211 | add hl,bc ;209d 09 .\r | |
5212 | inc hl ;209e 23 #\r | |
5213 | inc hl ;209f 23 #\r | |
5214 | scf ;20a0 37 7\r | |
5215 | ret ;20a1 c9 .\r | |
5216 | l20a2h:\r | |
5217 | ld hl,(reg.l) ;20a2 2a 5a 00 * Z .\r | |
5218 | scf ;20a5 37 7\r | |
5219 | ret ;20a6 c9 .\r | |
5220 | l20a7h:\r | |
5221 | ld hl,(reg.ix) ;20a7 2a 52 00 * R .\r | |
5222 | jr l20afh ;20aa 18 03 . .\r | |
5223 | l20ach:\r | |
5224 | ld hl,(reg.iy) ;20ac 2a 50 00 * P .\r | |
5225 | l20afh:\r | |
5226 | ld a,(iy+001h) ;20af fd 7e 01 . ~ .\r | |
5227 | cp 0e9h ;20b2 fe e9 . .\r | |
5228 | scf ;20b4 37 7\r | |
5229 | ret z ;20b5 c8 .\r | |
5230 | and a ;20b6 a7 .\r | |
5231 | ret ;20b7 c9 .\r | |
5232 | l20b8h:\r | |
5233 | ld a,(iy+001h) ;20b8 fd 7e 01 . ~ .\r | |
5234 | cp 04dh ;20bb fe 4d . M\r | |
5235 | jr z,l20dch ;20bd 28 1d ( .\r | |
5236 | cp 045h ;20bf fe 45 . E\r | |
5237 | jr z,l20dch ;20c1 28 19 ( .\r | |
5238 | and a ;20c3 a7 .\r | |
5239 | ret ;20c4 c9 .\r | |
5240 | l20c5h:\r | |
5241 | ld a,(iy+000h) ;20c5 fd 7e 00 . ~ .\r | |
5242 | ld (l20d7h),a ;20c8 32 d7 20 2 .\r | |
5243 | ld hl,(reg.f) ;20cb 2a 54 00 * T .\r | |
5244 | push hl ;20ce e5 .\r | |
5245 | pop af ;20cf f1 .\r | |
5246 | call l20d7h ;20d0 cd d7 20 . .\r | |
5247 | scf ;20d3 37 7\r | |
5248 | jr c,l20dch ;20d4 38 06 8 .\r | |
5249 | ret ;20d6 c9 .\r | |
5250 | l20d7h:\r | |
5251 | nop ;20d7 00 .\r | |
5252 | and a ;20d8 a7 .\r | |
5253 | pop hl ;20d9 e1 .\r | |
5254 | inc hl ;20da 23 #\r | |
5255 | jp (hl) ;20db e9 .\r | |
5256 | \r | |
5257 | l20dch:\r | |
5258 | ld a,(b_21e2_start) ;20dc 3a e2 21 : . !\r | |
5259 | and a ;20df a7 .\r | |
5260 | jr nz,l20edh ;20e0 20 0b .\r | |
5261 | ld a,(trace_call_flag) ;20e2 3a e3 21 : . !\r | |
5262 | and a ;20e5 a7 .\r | |
5263 | jr z,l20edh ;20e6 28 05 ( .\r | |
5264 | call l20edh ;20e8 cd ed 20 . .\r | |
5265 | pop hl ;20eb e1 .\r | |
5266 | ret ;20ec c9 .\r | |
5267 | l20edh:\r | |
5268 | ld hl,(reg_sp) ;20ed 2a 5c 00 * \ .\r | |
5269 | ld e,(hl) ;20f0 5e ^\r | |
5270 | inc hl ;20f1 23 #\r | |
5271 | ld d,(hl) ;20f2 56 V\r | |
5272 | ex de,hl ;20f3 eb .\r | |
5273 | call sub_09cah ;20f4 cd ca 09 . . .\r | |
5274 | and a ;20f7 a7 .\r | |
5275 | ret ;20f8 c9 .\r | |
5276 | \r | |
5277 | l20f9h:\r | |
5278 | ld a,(l0003h) ;20f9 3a 03 00 : . .\r | |
5279 | cp (iy+000h) ;20fc fd be 00 . . .\r | |
5280 | ret z ;20ff c8 .\r | |
5281 | ld a,(iy+000h) ;2100 fd 7e 00 . ~ .\r | |
5282 | and 038h ;2103 e6 38 . 8\r | |
5283 | ld l,a ;2105 6f o\r | |
5284 | ld h,000h ;2106 26 00 & .\r | |
5285 | ld a,(b_21e2_start) ;2108 3a e2 21 : . !\r | |
5286 | and a ;210b a7 .\r | |
5287 | jr nz,l2113h ;210c 20 05 .\r | |
5288 | ld a,(trace_call_flag) ;210e 3a e3 21 : . !\r | |
5289 | and a ;2111 a7 .\r | |
5290 | ret nz ;2112 c0 .\r | |
5291 | l2113h:\r | |
5292 | scf ;2113 37 7\r | |
5293 | ret ;2114 c9 .\r | |
5294 | l2115h:\r | |
5295 | and a ;2115 a7 .\r | |
5296 | ret ;2116 c9 .\r | |
5297 | cmd_C:\r | |
5298 | ld hl,cmd_C ;2117 21 17 21 ! . !\r | |
5299 | ld a,001h ;211a 3e 01 > .\r | |
5300 | jr l2122h ;211c 18 04 . .\r | |
5301 | cmd_T:\r | |
5302 | xor a ;211e af .\r | |
5303 | ld hl,cmd_T ;211f 21 1e 21 ! . !\r | |
5304 | l2122h:\r | |
5305 | ld (cmd_rpt),hl ;2122 22 68 00 " h .\r | |
5306 | ld (trace_call_flag),a ;2125 32 e3 21 2 . !\r | |
5307 | ld a,(de) ;2128 1a .\r | |
5308 | sub 'N' ;2129 d6 4e . N\r | |
5309 | jr nz,l212eh ;212b 20 01 .\r | |
5310 | inc de ;212d 13 .\r | |
5311 | l212eh:\r | |
5312 | ld (trace_N_flag),a ;212e 32 e7 21 2 . !\r | |
5313 | ld a,(de) ;2131 1a .\r | |
5314 | sub 'J' ;2132 d6 4a . J\r | |
5315 | jr nz,l2137h ;2134 20 01 .\r | |
5316 | inc de ;2136 13 .\r | |
5317 | l2137h:\r | |
5318 | ld (trace_J_flag),a ;2137 32 e8 21 2 . !\r | |
5319 | call sub_21a6h ;213a cd a6 21 . . !\r | |
5320 | jr z,l2145h ;213d 28 06 ( .\r | |
5321 | ld hl,1 ;213f 21 01 00 ! . .\r | |
5322 | call get_lastarg_def ;2142 cd 69 03 . i .\r | |
5323 | l2145h:\r | |
5324 | ld (trace_count),hl ;2145 22 e5 21 " . !\r | |
5325 | sub a ;2148 97 .\r | |
5326 | ld (l0941h),a ;2149 32 41 09 2 A .\r | |
5327 | l214ch:\r | |
5328 | call sub_1ffeh ;214c cd fe 1f . . .\r | |
5329 | jr l21a3h ;214f 18 52 . R\r | |
5330 | \r | |
5331 | l2151h:\r | |
5332 | call bp_clr_temporary ;2151 cd 54 07 . T .\r | |
5333 | ld a,(trace_J_flag) ;2154 3a e8 21 : . !\r | |
5334 | and a ;2157 a7 .\r | |
5335 | jr nz,l216bh ;2158 20 11 .\r | |
5336 | ld iy,(REG.PC) ;215a fd 2a 60 00 . * ` .\r | |
5337 | call sub_21c8h ;215e cd c8 21 . . !\r | |
5338 | jr z,l216bh ;2161 28 08 ( .\r | |
5339 | ld hl,b_2048_start ;2163 21 48 20 ! H\r | |
5340 | call lookup_opc ;2166 cd 97 1a . . .\r | |
5341 | jr nc,l214ch ;2169 30 e1 0 .\r | |
5342 | l216bh:\r | |
5343 | ld a,(trace_UW_flag) ;216b 3a e4 21 : . !\r | |
5344 | and a ;216e a7 .\r | |
5345 | jr z,l2188h ;216f 28 17 ( .\r | |
5346 | ld de,(trace_count) ;2171 ed 5b e5 21 . [ . !\r | |
5347 | call expr ;2175 cd be 03 . . .\r | |
5348 | ld a,h ;2178 7c |\r | |
5349 | or l ;2179 b5 .\r | |
5350 | add a,0ffh ;217a c6 ff . .\r | |
5351 | sbc a,a ;217c 9f .\r | |
5352 | ld hl,trace_UW_flag ;217d 21 e4 21 ! . !\r | |
5353 | xor (hl) ;2180 ae .\r | |
5354 | bit 1,a ;2181 cb 4f . O\r | |
5355 | jr z,l2193h ;2183 28 0e ( .\r | |
5356 | l2185h:\r | |
5357 | jp l0902h ;2185 c3 02 09 . . .\r | |
5358 | l2188h:\r | |
5359 | ld hl,(trace_count) ;2188 2a e5 21 * . !\r | |
5360 | dec hl ;218b 2b +\r | |
5361 | ld (trace_count),hl ;218c 22 e5 21 " . !\r | |
5362 | ld a,h ;218f 7c |\r | |
5363 | or l ;2190 b5 .\r | |
5364 | jr z,l2185h ;2191 28 f2 ( .\r | |
5365 | l2193h:\r | |
5366 | call sub_1ffeh ;2193 cd fe 1f . . .\r | |
5367 | jr nc,l2185h ;2196 30 ed 0 .\r | |
5368 | ld a,(trace_N_flag) ;2198 3a e7 21 : . !\r | |
5369 | ld b,a ;219b 47 G\r | |
5370 | ld a,(l0941h) ;219c 3a 41 09 : A .\r | |
5371 | or b ;219f b0 .\r | |
5372 | ld (l0941h),a ;21a0 32 41 09 2 A .\r | |
5373 | l21a3h:\r | |
5374 | jp user_go ;21a3 c3 25 0a . % .\r | |
5375 | \r | |
5376 | sub_21a6h:\r | |
5377 | call skipbl ;21a6 cd bf 02 . . .\r | |
5378 | xor a ;21a9 af .\r | |
5379 | ld (trace_UW_flag),a ;21aa 32 e4 21 2 . !\r | |
5380 | ld a,(de) ;21ad 1a .\r | |
5381 | cp 'U' ;21ae fe 55 . U\r | |
5382 | jr z,l21b5h ;21b0 28 03 ( .\r | |
5383 | cp 'W' ;21b2 fe 57 . W\r | |
5384 | ret nz ;21b4 c0 .\r | |
5385 | l21b5h:\r | |
5386 | inc de ;21b5 13 .\r | |
5387 | push af ;21b6 f5 .\r | |
5388 | push de ;21b7 d5 .\r | |
5389 | call expr ;21b8 cd be 03 . . .\r | |
5390 | jp c,ERROR ;21bb da 07 01 . . .\r | |
5391 | call assert_eol ;21be cd d6 02 . . .\r | |
5392 | pop hl ;21c1 e1 .\r | |
5393 | pop af ;21c2 f1 .\r | |
5394 | ld (trace_UW_flag),a ;21c3 32 e4 21 2 . !\r | |
5395 | sub a ;21c6 97 .\r | |
5396 | ret ;21c7 c9 .\r | |
5397 | \r | |
5398 | sub_21c8h:\r | |
5399 | ld a,(iy+000h) ;21c8 fd 7e 00 . ~ .\r | |
5400 | cp 0edh ;21cb fe ed . .\r | |
5401 | jr z,l21dah ;21cd 28 0b ( .\r | |
5402 | and 0dfh ;21cf e6 df . .\r | |
5403 | cp 0ddh ;21d1 fe dd . .\r | |
5404 | ret nz ;21d3 c0 .\r | |
5405 | ld a,(iy+001h) ;21d4 fd 7e 01 . ~ .\r | |
5406 | cp 0e9h ;21d7 fe e9 . .\r | |
5407 | ret ;21d9 c9 .\r | |
5408 | l21dah:\r | |
5409 | ld a,(iy+001h) ;21da fd 7e 01 . ~ .\r | |
5410 | and 0f7h ;21dd e6 f7 . .\r | |
5411 | cp 045h ;21df fe 45 . E\r | |
5412 | ret ;21e1 c9 .\r | |
5413 | \r | |
5414 | b_21e2_start:\r | |
5415 | db 0 ;21e2 00 .\r | |
5416 | trace_call_flag:\r | |
5417 | db 0 ;1=call, 0=trace 21e3 00 .\r | |
5418 | trace_UW_flag:\r | |
5419 | db 0 ;0 or 'U' or 'W' 21e4 00 .\r | |
5420 | trace_count:\r | |
5421 | dw 0 ;21e5 00 00 .\r | |
5422 | trace_N_flag:\r | |
5423 | db 0 ;0 if 'N' 21e7 00 .\r | |
5424 | trace_J_flag:\r | |
5425 | db 0 ;0 if 'J' 21e8 00 .\r | |
5426 | \r | |
5427 | ddtz_size equ $-ddtz_base\r | |
5428 | ddtz_end:\r | |
5429 | \r | |
5430 | ;-------------------------------------------------------------------------------\r | |
5431 | .dephase\r | |
5432 | bitmap:\r | |
5433 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5434 | db 000H,000H,000H,000H,001H,044H,040H,000H\r | |
5435 | db 000H,010H,084H,090H,080H,010H,000H,001H\r | |
5436 | db 024H,092H,049H,009H,024H,084H,080H,004H\r | |
5437 | db 080H,048H,055H,055H,055H,055H,055H,055H\r | |
5438 | db 054H,024H,042H,048H,000H,010H,000H,000H\r | |
5439 | db 000H,080H,000H,080H,002H,008H,010H,082H\r | |
5440 | db 004H,000H,080H,084H,044H,008H,024H,000H\r | |
5441 | db 084H,004H,082H,001H,000H,000H,041H,000H\r | |
5442 | db 008H,021H,002H,000H,000H,090H,000H,020H\r | |
5443 | db 020H,001H,000H,092H,004H,021H,009H,000H\r | |
5444 | db 000H,008H,010H,088H,004H,080H,000H,000H\r | |
5445 | db 004H,000H,020H,000H,000H,001H,000H,080H\r | |
5446 | db 020H,000H,084H,081H,004H,090H,040H,040H\r | |
5447 | db 010H,001H,001H,008H,002H,000H,000H,000H\r | |
5448 | db 091H,004H,000H,000H,000H,000H,024H,000H\r | |
5449 | db 000H,000H,010H,080H,00AH,0AAH,044H,020H\r | |
5450 | db 002H,000H,000H,000H,000H,008H,040H,000H\r | |
5451 | db 000H,000H,000H,000H,000H,000H,048H,088H\r | |
5452 | db 000H,00AH,0AAH,0A1H,012H,042H,008H,020H\r | |
5453 | db 002H,008H,000H,000H,000H,008H,002H,042H\r | |
5454 | db 040H,000H,000H,000H,001H,000H,001H,000H\r | |
5455 | db 021H,000H,000H,001H,000H,048H,020H,000H\r | |
5456 | db 010H,008H,000H,020H,040H,090H,004H,000H\r | |
5457 | db 010H,010H,000H,000H,000H,001H,024H,090H\r | |
5458 | db 080H,090H,092H,004H,001H,024H,092H,010H\r | |
5459 | db 092H,041H,008H,010H,021H,002H,042H,010H\r | |
5460 | db 000H,000H,012H,010H,048H,000H,000H,000H\r | |
5461 | db 000H,024H,092H,049H,024H,092H,009H,021H\r | |
5462 | db 024H,020H,090H,040H,008H,001H,000H,009H\r | |
5463 | db 009H,011H,000H,080H,008H,004H,000H,008H\r | |
5464 | db 000H,001H,020H,012H,010H,008H,000H,042H\r | |
5465 | db 049H,000H,010H,001H,020H,011H,000H,040H\r | |
5466 | db 020H,010H,000H,040H,000H,012H,000H,091H\r | |
5467 | db 000H,044H,080H,021H,024H,040H,009H,010H\r | |
5468 | db 089H,000H,010H,008H,040H,024H,010H,088H\r | |
5469 | db 049H,024H,020H,041H,000H,001H,022H,000H\r | |
5470 | db 000H,000H,010H,000H,000H,000H,020H,001H\r | |
5471 | db 000H,000H,020H,000H,000H,010H,000H,012H\r | |
5472 | db 000H,008H,000H,000H,004H,000H,002H,000H\r | |
5473 | db 000H,004H,000H,040H,000H,091H,020H,012H\r | |
5474 | db 012H,000H,000H,012H,000H,000H,000H,000H\r | |
5475 | db 048H,020H,002H,008H,002H,000H,000H,000H\r | |
5476 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5477 | db 000H,000H,000H,050H,000H,000H,000H,000H\r | |
5478 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5479 | db 000H,000H,000H,000H,000H,000H,008H,011H\r | |
5480 | db 024H,024H,004H,000H,010H,080H,092H,048H\r | |
5481 | db 000H,022H,049H,009H,008H,000H,002H,010H\r | |
5482 | db 040H,012H,042H,024H,044H,081H,024H,082H\r | |
5483 | db 048H,000H,020H,020H,080H,000H,081H,020H\r | |
5484 | db 000H,000H,000H,000H,000H,000H,000H,009H\r | |
5485 | db 024H,092H,049H,024H,092H,049H,024H,092H\r | |
5486 | db 049H,024H,092H,049H,024H,089H,024H,001H\r | |
5487 | db 000H,004H,009H,021H,004H,092H,040H,048H\r | |
5488 | db 090H,049H,022H,024H,090H,008H,002H,044H\r | |
5489 | db 089H,011H,000H,000H,020H,080H,000H,001H\r | |
5490 | db 024H,044H,000H,080H,092H,049H,024H,091H\r | |
5491 | db 020H,041H,008H,081H,000H,004H,000H,008H\r | |
5492 | db 040H,010H,000H,000H,000H,092H,002H,008H\r | |
5493 | db 004H,000H,004H,000H,000H,000H,000H,001H\r | |
5494 | db 002H,024H,082H,002H,048H,009H,000H,010H\r | |
5495 | db 020H,048H,002H,020H,000H,000H,000H,000H\r | |
5496 | db 000H,041H,000H,000H,000H,042H,008H,000H\r | |
5497 | db 004H,000H,000H,002H,000H,000H,010H,000H\r | |
5498 | db 000H,000H,000H,004H,001H,002H,042H,020H\r | |
5499 | db 084H,000H,088H,004H,000H,004H,080H,011H\r | |
5500 | db 010H,012H,004H,008H,041H,020H,020H,010H\r | |
5501 | db 089H,002H,008H,000H,000H,010H,040H,004H\r | |
5502 | db 081H,022H,042H,024H,020H,000H,049H,024H\r | |
5503 | db 092H,048H,000H,000H,024H,000H,000H,020H\r | |
5504 | db 082H,000H,000H,020H,000H,008H,024H,004H\r | |
5505 | db 090H,048H,082H,044H,008H,001H,020H,044H\r | |
5506 | db 000H,082H,020H,011H,000H,024H,092H,004H\r | |
5507 | db 080H,024H,092H,049H,024H,092H,049H,024H\r | |
5508 | db 092H,049H,024H,092H,049H,024H,092H,049H\r | |
5509 | db 024H,092H,049H,024H,092H,049H,024H,092H\r | |
5510 | db 049H,024H,088H,049H,024H,082H,010H,089H\r | |
5511 | db 024H,090H,081H,020H,000H,001H,004H,000H\r | |
5512 | db 000H,010H,001H,020H,000H,011H,020H,001H\r | |
5513 | db 010H,008H,000H,000H,040H,010H,040H,080H\r | |
5514 | db 020H,000H,024H,008H,024H,090H,092H,004H\r | |
5515 | db 024H,090H,000H,001H,024H,020H,002H,040H\r | |
5516 | db 000H,000H,009H,000H,021H,024H,009H,000H\r | |
5517 | db 090H,090H,088H,008H,001H,000H,048H,004H\r | |
5518 | db 002H,000H,012H,012H,040H,000H,012H,010H\r | |
5519 | db 092H,004H,090H,049H,021H,000H,040H,021H\r | |
5520 | db 008H,022H,009H,009H,002H,040H,000H,002H\r | |
5521 | db 000H,012H,042H,040H,000H,000H,081H,000H\r | |
5522 | db 049H,000H,022H,009H,000H,020H,092H,001H\r | |
5523 | db 000H,010H,000H,010H,020H,004H,092H,000H\r | |
5524 | db 000H,048H,000H,090H,082H,009H,000H,000H\r | |
5525 | db 048H,042H,049H,024H,090H,090H,000H,092H\r | |
5526 | db 000H,092H,044H,020H,000H,000H,000H,000H\r | |
5527 | db 000H,000H,000H,021H,008H,048H,020H,002H\r | |
5528 | db 000H,000H,024H,002H,000H,010H,000H,012H\r | |
5529 | db 040H,008H,044H,002H,020H,000H,084H,080H\r | |
5530 | db 048H,000H,080H,000H,090H,000H,080H,000H\r | |
5531 | db 042H,000H,000H,040H,001H,002H,008H,000H\r | |
5532 | db 088H,001H,024H,020H,090H,080H,024H,000H\r | |
5533 | db 081H,000H,002H,040H,008H,001H,024H,048H\r | |
5534 | db 048H,008H,008H,041H,008H,090H,044H,048H\r | |
5535 | db 048H,001H,001H,000H,001H,020H,012H,010H\r | |
5536 | db 002H,041H,020H,000H,000H,000H,000H,000H\r | |
5537 | db 000H,000H,000H,004H,082H,041H,020H,008H\r | |
5538 | db 009H,001H,020H,090H,048H,024H,000H,000H\r | |
5539 | db 010H,040H,000H,000H,000H,000H,080H,000H\r | |
5540 | db 000H,000H,004H,021H,008H,042H,010H,084H\r | |
5541 | db 021H,008H,042H,010H,084H,021H,008H,042H\r | |
5542 | db 010H,084H,020H,084H,021H,008H,042H,010H\r | |
5543 | db 084H,021H,008H,041H,008H,042H,010H,084H\r | |
5544 | db 021H,000H,000H,000H,000H,000H,000H,084H\r | |
5545 | db 021H,008H,042H,010H,084H,021H,008H,042H\r | |
5546 | db 008H,042H,010H,042H,010H,084H,021H,008H\r | |
5547 | db 042H,024H,092H,001H,024H,080H,024H,024H\r | |
5548 | db 092H,041H,024H,092H,049H,009H,009H,009H\r | |
5549 | db 020H,002H,002H,040H,000H,010H,082H,048H\r | |
5550 | db 049H,000H,024H,089H,009H,024H,092H,042H\r | |
5551 | db 048H,000H,048H,042H,012H,000H,004H,092H\r | |
5552 | db 049H,009H,024H,092H,042H,000H,000H,009H\r | |
5553 | db 004H,000H,001H,000H,021H,000H,000H,010H\r | |
5554 | db 012H,009H,002H,010H,004H,004H,024H,000H\r | |
5555 | db 090H,084H,000H,000H,001H,004H,090H,092H\r | |
5556 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5557 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5558 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5559 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5560 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5561 | db 080H,004H,012H,041H,011H,024H,012H,004H\r | |
5562 | db 021H,008H,042H,010H,084H,021H,008H,042H\r | |
5563 | db 020H,080H,000H,008H,008H,042H,000H,000H\r | |
5564 | db 000H,024H,020H,002H,008H,021H,002H,010H\r | |
5565 | db 000H,020H,080H,040H,049H,000H,080H,048H\r | |
5566 | db 009H,012H,012H,004H,084H,084H,009H,001H\r | |
5567 | db 001H,022H,004H,022H,024H,088H,000H,024H\r | |
5568 | db 084H,000H,000H,000H,000H,000H,000H,01AH\r | |
5569 | db 004H,000H,001H,000H,021H,000H,000H,010H\r | |
5570 | db 012H,009H,002H,010H,004H,004H,024H,000H\r | |
5571 | db 090H,084H,000H,000H,001H,004H,090H,092H\r | |
5572 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5573 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5574 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5575 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5576 | db 000H,000H,000H,000H,000H,000H,000H,000H\r | |
5577 | db 080H,004H,012H,041H,011H,024H,012H,004H\r | |
5578 | db 021H,008H,042H,010H,084H,021H,008H,042H\r | |
5579 | db 020H,080H,000H,008H,008H,042H,000H,000H\r | |
5580 | db 000H,024H,020H,002H,008H,021H,002H,010H\r | |
5581 | db 000H,020H,080H,040H,049H,000H,080H,048H\r | |
5582 | db 009H,012H,012H,004H,084H,084H,009H,001H\r | |
5583 | db 001H,022H,004H,022H,024H,088H,000H,024H\r | |
5584 | db 084H,000H,000H,000H,000H,000H,000H\r | |
5585 | \r | |
5586 | end\r |