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