]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/ddtz.180
DDTZ: remove some unused labels
[z180-stamp.git] / z180 / ddtz.180
CommitLineData
a16ba2b0
L
1 page 255\r
2 .z80\r
3\r
30d1329e 4 extrn ?const,?conin,?cono\r
29605004
L
5 extrn getiff\r
6 extrn selbnk,@cbnk\r
a16ba2b0
L
7\r
8 global ddtz,bpent\r
9 global $stack\r
10\r
11\r
12 include config.inc\r
29605004 13 if CPU_Z180\r
a16ba2b0
L
14 include z180reg.inc\r
15 include z180.lib\r
29605004 16 endif\r
a16ba2b0
L
17\r
18BS equ 08h\r
19TAB equ 09h\r
20CR equ 0dh\r
21LF equ 0ah\r
22DEL equ 7fh\r
23CNTRX equ 'X'-'@'\r
24\r
25TPA equ 100h\r
26TOPRAM equ 0f000h\r
27\r
28\r
29MEMDUMP_CNT equ 16 ;mem dump bytes per line\r
30BP_CNT equ 12 ;number of breakbpoints\r
31\r
32\r
33;--------------------------------------------------\r
30d1329e 34;\r
a16ba2b0
L
35\r
36; copy code to common memory and execute it there\r
37comst macro\r
38 call ?excom\r
39 ds 1\r
40?lcs defl $\r
41 endm\r
42\r
43; mark end of common code snippet\r
44comend macro\r
45?lce defl $\r
46?lclen defl ?lce-?lcs\r
47 org ?lcs-1\r
48 db ?lclen\r
49 org ?lce\r
50 ifndef ?lcmax\r
51?lcmax defl 0\r
52 endif\r
53 if ?lclen gt ?lcmax\r
54?lcmax defl ?lclen\r
55 endif\r
56 endm\r
57\r
a16ba2b0
L
58\r
59\r
60\r
61 cseg\r
62\r
63;----------------------------------------------------------\r
64\r
65MSG:\r
66 DB 'DDT/Z - HD64180 (ROM)'\r
67 DB CR,LF,0\r
68\r
69HLPMSG:\r
70 DB 'DDT/Z180 (ROM) Commands:',CR,LF\r
71 DB '> @ examine/substitute the displacement register @',CR,LF\r
72 DB '> A [address] Assemble',CR,LF\r
73 DB '> B[X] display [or clear] all Breakpoints',CR,LF\r
74 DB ' B breakp [:count] [breakp..] set Breakpoints',CR,LF\r
75 DB ' BX address [address..] clear Breakpoints',CR,LF\r
76 DB '>>C[N][J] [count] trace over Calls [No list] [Jumps only]',CR,LF\r
77 DB ' C[N][J] W|U expression trace over Calls While|Until ...',CR,LF\r
78 DB '>>D [startadr] [endadr] Display memory in hex and ascii',CR,LF\r
79 DB '> G [startadr] [;breakp..] Go [to start] [temporary breakpoints]',CR,LF\r
80 DB '> H [expression [expression]] compute expressions / show High/max load adr.',CR,LF\r
81 DB '>>I [port] Input a byte from port',CR,LF\r
82 DB '>>L [startadr] [endadr] List disassembled code',CR,LF\r
83 DB '> M[V] startadr endadr destadr Move memory [and verify]',CR,LF\r
84 DB '>>O [byte] [port] Output a byte to port',CR,LF\r
85 DB '> Q[J] startadr endadr bytes Qery memory for byte string [Justified]',CR,LF\r
86 DB '> R [displacement] Read intel hex from console [add displacemt]',CR,LF\r
87 DB '> S address Substitute memory',CR,LF\r
88 DB '>>T[N][J] [count] Trace [No list] [Jumps only] [count steps]',CR,LF\r
89 DB ' T[N][J] W|U expression Trace While|Until expression',CR,LF\r
90 DB '> V startadr endadr destadr Verify (compare) two memory areas',CR,LF\r
91 DB '> X[register] eXamine [and substitute] registers',CR,LF\r
92 DB '> Y[0..9] eXamine [and substitute] Y variables',CR,LF\r
93 DB '> Z startadr endadr bytes Zap (fill) memory with a byte string',CR,LF\r
94 DB 0\r
95\r
96ddtz:\r
97 ld sp,$stack\r
98 ld a,(wstrtflg) ;check warm start flag\r
99 or a\r
29605004 100;;; jr nz,ddtz_w\r
a16ba2b0
L
101\r
102 exx\r
103 ld hl,sysramc\r
104 ld de,topcodbeg\r
105 ld bc,topcodend-topcodbeg\r
30d1329e
L
106 ldir\r
107\r
a16ba2b0
L
108 exx\r
109\r
29605004 110 if CPU_Z180\r
a16ba2b0
L
111 ld a,e\r
112 ld (ubbr),a\r
29605004 113 endif\r
30d1329e 114\r
a16ba2b0 115ddtz_w:\r
fecee241
L
116 ld hl,MSG\r
117 call PSTR\r
118 call ddtei\r
a16ba2b0
L
119\r
120; DDTZ main loop\r
121\r
122DDTZML:\r
fecee241
L
123 ld sp,$stack\r
124 ld hl,l07eah\r
125 ld (CMD_ERR),hl\r
126 ld hl,(REG.PC)\r
127 ld (OFFS.pc),hl\r
128 call sub_0e68h\r
129 ld hl,(CMD_RPT)\r
130 ld de,DDTZML\r
131 call CP.HL.DE\r
132 ld a,'>'\r
133 call OUTCHAR\r
134 call nz,OUTCHAR\r
135 call z,OUTBL\r
136 call INLINE\r
137 call SKIPBL\r
138 jr z,exe_hl\r
139 ld hl,DDTZML\r
140 ld (CMD_RPT),hl\r
141 inc de\r
142 sub '?'\r
143 jr c,ERROR\r
144 cp 'Z'+1-'?'\r
145 jr nc,ERROR\r
146 add a,a\r
147 ld hl,CMDTAB\r
148 call ADD_HL_A\r
149 ld a,(hl)\r
150 inc hl\r
151 ld h,(hl)\r
152 ld l,a\r
153 jr exe_hl\r
a16ba2b0 154ERROR:\r
fecee241 155 ld hl,(CMD_ERR)\r
a16ba2b0 156exe_hl:\r
fecee241
L
157 call CALL.HL\r
158 jr DDTZML\r
a16ba2b0
L
159\r
160CALL.HL:\r
fecee241 161 jp (hl)\r
a16ba2b0
L
162\r
163\r
164CMDTAB:\r
fecee241
L
165 defw CMD.? ;Help\r
166 defw CMD.@ ;Offset\r
167 defw CMD.A ;Assemble\r
168 defw CMD.B ;Breakpoint\r
169 defw CMD.C ;Call\r
170 defw CMD.D ;Display\r
171 defw ERROR ;\r
172 defw ERROR ;\r
173 defw CMD.G ;Go\r
174 defw CMD.H ;Hex Math\r
175 defw CMD.I ;In Port\r
176 defw ERROR ;\r
177 defw ERROR ;\r
178 defw CMD.L ;List\r
179 defw CMD.M ;Move\r
180 defw ERROR ;\r
181 defw CMD.O ;Out Port\r
182 defw ERROR ;\r
183 defw CMD.Q ;Query\r
184 defw CMD.R ;Read Intel Hex\r
185 defw CMD.S ;Substitute\r
186 defw CMD.T ;Trace\r
187 defw ERROR ;\r
188 defw CMD.V ;Verify\r
189 defw ERROR ;\r
190 defw CMD.X ;eXamine\r
191 defw CMD.Y ;eXamine Y Registers\r
192 defw CMD.Z ;Zap (fill) memory\r
a16ba2b0 193l07eah:\r
fecee241
L
194 ld a,'?'\r
195 call OUTCHAR\r
196 jp CRLF\r
a16ba2b0
L
197\r
198CMD.?:\r
199 call assert_eol\r
200 ld hl,HLPMSG\r
201 call PSTR\r
202 ret\r
203\r
30d1329e
L
204$ci:\r
205 push hl\r
206 push de\r
207 push bc\r
208 call ?conin\r
209 pop bc\r
210 pop de\r
211 pop hl\r
212 ret\r
213\r
214$co:\r
215 push hl\r
216 push de\r
217 push bc\r
218 ld c,a\r
219 call ?cono\r
220 pop bc\r
221 pop de\r
222 pop hl\r
223 ret\r
224\r
a16ba2b0 225DELC:\r
30d1329e
L
226 ld a,b\r
227 or a\r
228 ret z\r
229 call DELC1\r
230 dec hl\r
231 dec b\r
232 inc c\r
233 ld a,(hl)\r
234 cp ' '\r
235 ret nc\r
236DELC1:\r
237 push de\r
238 push hl\r
239 push bc\r
240 ld c,BS\r
241 call ?cono\r
242 ld c,' '\r
243 call ?cono\r
244 ld c,BS\r
245 call ?cono\r
246 pop bc\r
247 pop hl\r
248 pop de\r
249 ret\r
250\r
a16ba2b0 251DELL:\r
3531528e
L
252 ld a,b ;\r
253 or a ;\r
254 ret z ;\r
255 call DELC ;\r
256 jr DELL ;\r
a16ba2b0
L
257\r
258INLINE:\r
3531528e
L
259 push hl ;\r
260 ld hl,CI.BUF ;\r
261 ld c,(hl) ;\r
262 inc hl ;\r
263 ld b,000h ;\r
264 inc hl ;\r
a16ba2b0 265inlnxtch:\r
3531528e
L
266 ld a,c ;\r
267 or a ;\r
268 jr z,inl_e ;\r
269 call $ci ;\r
270 cp CR ;\r
271 jr z,inl_e ;Accept line\r
272 cp LF ;\r
273 jr z,inl_e ;Accept line\r
274 cp BS ;\r
275 jr nz,l0844h ;\r
276 call DELC ;Delete Char\r
277 jr inlnxtch ;\r
a16ba2b0 278l0844h:\r
3531528e
L
279 cp DEL ;\r
280 jr nz,l084dh ;\r
281 call DELC ;Delete Char\r
282 jr inlnxtch ;\r
a16ba2b0 283l084dh:\r
3531528e
L
284 cp CNTRX ;\r
285 jr nz,l0856h ;\r
286 call DELL ;Delete Line\r
287 jr inlnxtch ;\r
a16ba2b0 288l0856h:\r
3531528e
L
289 cp TAB ;\r
290 jr nz,l085ch ;\r
291 ld a,' ' ;\r
a16ba2b0 292l085ch:\r
3531528e
L
293 ld (hl),a ;\r
294 cp ' ' ;\r
295 jr nc,l0869h ;\r
29605004 296 ld a,'^' ;Controll characters\r
3531528e
L
297 call $co ;\r
298 ld a,(hl) ;\r
299 add a,'@' ;\r
a16ba2b0 300l0869h:\r
3531528e
L
301 call $co ;\r
302 inc hl ;\r
303 inc b ;\r
304 dec c ;\r
305 jr inlnxtch ;\r
a16ba2b0
L
306\r
307inl_e:\r
3531528e
L
308 ld hl,ci.buf+1 ;\r
309 ld (hl),b ;\r
310 call CRLF ;\r
311 ld de,ci.buf+1 ;\r
312 ld a,(de) ;\r
313 ld b,a ;\r
314 ld c,000h ;\r
315 inc b ;\r
a16ba2b0 316l0880h:\r
3531528e
L
317 inc de ;\r
318 dec b ;\r
319 jr z,l08b2h ;\r
320 ld a,(de) ;\r
321 bit 0,c ;\r
322 call z,UPCASE ;\r
323 ld (de),a ;\r
324 cp '''' ;\r
325 jr nz,l0880h ;\r
326 push de ;\r
327 dec de ;\r
328 ld a,(de) ;\r
329 cp '''' ;\r
330 jr z,l08aeh ;\r
331 dec de ;\r
332 ld a,(de) ;\r
333 cp '^' ;\r
334 jr z,l08a2h ;\r
335 dec de ;\r
336 ld a,(de) ;\r
337 cp '^' ;\r
338 jr nz,l08aeh ;\r
a16ba2b0 339l08a2h:\r
3531528e
L
340 inc de ;\r
341 push bc ;\r
342 call sub_0a0eh ;\r
343 pop bc ;\r
344 dec de ;\r
345 ld a,(de) ;\r
346 cp '''' ;\r
347 jr z,l08afh ;\r
a16ba2b0 348l08aeh:\r
3531528e 349 inc c ;\r
a16ba2b0 350l08afh:\r
3531528e
L
351 pop de ;\r
352 jr l0880h ;\r
a16ba2b0 353l08b2h:\r
3531528e
L
354 xor a ;\r
355 ld (de),a ;\r
356 ld de,ci.buf+2 ;\r
357 pop hl ;\r
358 ret ;\r
a16ba2b0
L
359\r
360UPCASE:\r
3531528e
L
361 cp 'a' ;\r
362 ret c ;\r
363 cp 'z'+1 ;\r
364 ret nc ;\r
365 and 05fh ;\r
366 ret ;\r
a16ba2b0
L
367\r
368out.hl.@:\r
3531528e
L
369 call out.hl ;\r
370 push de ;\r
371 push hl ;\r
372 ld de,(offs.@) ;\r
373 ld a,d ;\r
374 or e ;\r
375 jr z,l08ddh ;\r
376 call OUTBL ;\r
377 ld a,'@' ;\r
378 call OUTCHAR ;\r
379 and a ;\r
380 sbc hl,de ;\r
381 call out.hl ;\r
a16ba2b0 382l08ddh:\r
3531528e
L
383 pop hl ;\r
384 pop de ;\r
385 ret ;\r
a16ba2b0
L
386\r
387out.bin.w:\r
3531528e
L
388 ld a,h ;\r
389 call out.bin.b ;\r
390 ld a,l ;\r
a16ba2b0 391out.bin.b:\r
3531528e 392 ld b,008h ;\r
a16ba2b0 393l08e7h:\r
3531528e
L
394 add a,a ;\r
395 push af ;\r
396 ld a,0 ;\r
397 adc a,a ;\r
398 call out.digit ;\r
399 pop af ;\r
400 djnz l08e7h ;\r
401 ld a,'"' ;\r
402 jp OUTCHAR ;\r
a16ba2b0
L
403\r
404sub_08f7h:\r
3531528e
L
405 ld a,'-' ;\r
406 call OUTCHAR ;\r
407 dec hl ;\r
408 jp cpl.hl ;\r
a16ba2b0
L
409\r
410out.hl.decm:\r
3531528e
L
411 push hl ;\r
412 call sub_08f7h ;\r
413 db 3eh ; ld a,0E5h\r
a16ba2b0
L
414out.hl.dec:\r
415 push hl\r
3531528e
L
416 ld b,6 ;\r
417 call sub_0917h ;\r
418 pop hl ;\r
419 ld a,'.' ;\r
420 call OUTCHAR ;\r
a16ba2b0 421l0911h:\r
3531528e
L
422 call OUTBL ;\r
423 djnz l0911h ;\r
424 ret ;\r
a16ba2b0
L
425\r
426\r
427sub_0917h:\r
fecee241
L
428 dec b\r
429 push de\r
430 ld de,10\r
431 call DIV_HL_DE\r
432 ld a,h\r
433 or l\r
434 call nz,sub_0917h\r
435 ld a,e\r
436 pop de\r
437 jr out.digit\r
a16ba2b0
L
438\r
439sub_0928h:\r
fecee241
L
440 push hl\r
441 call sub_08f7h\r
442 call out.hl\r
443 pop hl\r
444 ret\r
a16ba2b0 445out.hl:\r
fecee241
L
446 ld a,h\r
447 call out.hex\r
448 ld a,l\r
a16ba2b0 449out.hex:\r
fecee241
L
450 push af\r
451 rra\r
452 rra\r
453 rra\r
454 rra\r
455 call out.digit\r
456 pop af\r
a16ba2b0 457out.digit:\r
fecee241
L
458 and 00fh\r
459 cp 10\r
460 jr c,l0947h\r
461 add a,007h\r
a16ba2b0 462l0947h:\r
fecee241
L
463 add a,'0'\r
464 jr OUTCHAR\r
a16ba2b0 465l094bh:\r
fecee241
L
466 ld a,'-'\r
467 call OUTCHAR\r
468 ld a,040h\r
a16ba2b0 469out.ascii:\r
fecee241
L
470 ex af,af'\r
471 call outquote\r
472 ex af,af'\r
473 push af\r
474 res 7,a\r
475 cp ' '\r
476 jr nc,l0960h\r
477 sub 0c0h\r
a16ba2b0 478l0960h:\r
fecee241
L
479 call OUTCHAR\r
480 push af\r
481 cp ''''\r
482 call z,OUTCHAR\r
483 pop af\r
484 ex af,af'\r
485 call outquote\r
486 pop af\r
487 or a\r
488 ld a,'.'\r
489 call m,OUTCHAR\r
490 ex af,af'\r
491 jr c,l094bh\r
492 ret\r
a16ba2b0
L
493\r
494outquote:\r
fecee241 495 ld a,''''\r
a16ba2b0 496OUTCHAR:\r
30d1329e
L
497 push hl\r
498 push de\r
499 push bc\r
500 push af\r
501 and 07fh\r
502 ld c,a\r
503 call ?cono\r
504 ld hl,CON.COL\r
505 inc (hl)\r
506 pop af\r
507 pop bc\r
508 pop de\r
509 pop hl\r
fecee241 510 ret\r
a16ba2b0
L
511\r
512inchar:\r
30d1329e
L
513 push hl\r
514 push de\r
515 push bc\r
516 call ?const\r
517 and a\r
518 jr z,inch1\r
519 call ?conin\r
fecee241 520 scf\r
30d1329e
L
521inch1:\r
522 pop bc\r
523 pop de\r
524 pop hl\r
fecee241 525 ret\r
a16ba2b0
L
526\r
527PSTR:\r
fecee241 528 ld c,000h\r
a16ba2b0 529l0995h:\r
fecee241
L
530 ld a,(hl)\r
531 and a\r
532 ret z\r
533 call OUTCHAR\r
534 inc c\r
535 inc hl\r
536 and a\r
537 ret m\r
538 jr l0995h\r
a16ba2b0
L
539\r
540outbl6:\r
fecee241 541 call outbl2\r
a16ba2b0 542outbl4:\r
fecee241 543 call outbl2\r
a16ba2b0 544outbl2:\r
fecee241 545 call OUTBL\r
a16ba2b0 546OUTBL:\r
fecee241
L
547 ld a,' '\r
548 jr OUTCHAR\r
a16ba2b0 549CRLF:\r
fecee241
L
550 call inchar\r
551 ld a,CR\r
552 call OUTCHAR\r
553 ld a,LF\r
554 call OUTCHAR\r
555 ld a,000h\r
556 ld (CON.COL),a\r
557 jp c,DDTZML\r
558 ret\r
a16ba2b0
L
559\r
560ADD_HL_A:\r
fecee241
L
561 add a,l\r
562 ld l,a\r
563 ret nc\r
564 inc h\r
565 ret\r
a16ba2b0
L
566\r
567SKIPBL0:\r
fecee241 568 inc de\r
a16ba2b0 569SKIPBL:\r
fecee241
L
570 ld a,(de)\r
571 cp ' '\r
572 jr z,SKIPBL0\r
573 cp 009h\r
574 jr z,SKIPBL0\r
575 or a\r
576 ret\r
a16ba2b0
L
577\r
578skip_to_nextarg:\r
fecee241
L
579 call SKIPBL\r
580 cp ','\r
581 ret nz\r
582 inc de\r
583 call SKIPBL\r
584 cp a\r
585 ret\r
a16ba2b0
L
586\r
587assert_eol:\r
fecee241
L
588 call SKIPBL\r
589 ret z\r
a16ba2b0 590l09e5h:\r
fecee241 591 jp ERROR\r
a16ba2b0
L
592\r
593chk.sp:\r
fecee241
L
594 push hl\r
595 push de\r
596 ld hl,0\r
597 add hl,sp\r
598 ld de,$stack-50\r
599 call CP.HL.DE\r
600 pop de\r
601 pop hl\r
602 jr c,l09e5h\r
603 ret\r
a16ba2b0
L
604\r
605CP.HL.DE:\r
fecee241
L
606 and a\r
607 sbc hl,de\r
608 add hl,de\r
609 ret\r
a16ba2b0
L
610\r
611lookupch:\r
fecee241 612 ld b,000h\r
a16ba2b0 613l0a00h:\r
fecee241
L
614 ld a,(hl)\r
615 and a\r
616 ret z\r
617 ld a,(de)\r
618 cp (hl)\r
619 jr z,l0a0bh\r
620 inc hl\r
621 inc b\r
622 jr l0a00h\r
a16ba2b0 623l0a0bh:\r
fecee241
L
624 scf\r
625 inc de\r
626 ret\r
a16ba2b0
L
627\r
628sub_0a0eh:\r
fecee241
L
629 ld hl,b_0x132A_start\r
630 ld b,07fh\r
631 jr l0a17h\r
a16ba2b0
L
632\r
633sub_0a15h:\r
fecee241 634 ld b,0ffh\r
a16ba2b0 635l0a17h:\r
fecee241
L
636 inc b\r
637 ld a,(hl)\r
638 and a\r
639 ret z\r
640 call l0a27\r
641 jr nc,l0a17h\r
642 res 7,b\r
643 ret\r
a16ba2b0
L
644\r
645sub_0a23h:\r
fecee241
L
646 push bc\r
647 res 7,b\r
a16ba2b0
L
648 db 3eh ;0a26 ld a,0c5h\r
649l0a27:\r
fecee241
L
650 push bc\r
651 push de\r
a16ba2b0 652l0a29h:\r
fecee241
L
653 ld a,(de)\r
654 xor (hl)\r
655 and 07fh\r
656 jr nz,l0a41h\r
657 bit 7,(hl)\r
658 inc hl\r
659 inc de\r
660 jr z,l0a29h\r
661 scf\r
662 bit 7,b\r
663 call z,sub_0d20h\r
664 jr nc,l0a44h\r
665 pop af\r
666 scf\r
667 pop bc\r
668 ret\r
a16ba2b0
L
669\r
670l0a41h:\r
fecee241 671 call sub_0a50h\r
a16ba2b0 672l0a44h:\r
fecee241
L
673 pop de\r
674 and a\r
675 pop bc\r
676 ret\r
a16ba2b0
L
677\r
678sub_0a48h:\r
fecee241 679 inc b\r
a16ba2b0 680l0a49h:\r
fecee241
L
681 dec b\r
682 ret z\r
683 call sub_0a50h\r
684 jr l0a49h\r
a16ba2b0 685sub_0a50h:\r
fecee241
L
686 ld a,(hl)\r
687 and a\r
688 ret z\r
a16ba2b0 689l0a53h:\r
fecee241
L
690 ld a,(hl)\r
691 inc hl\r
692 and a\r
693 ret m\r
694 jr l0a53h\r
a16ba2b0
L
695\r
696get_arg3:\r
fecee241
L
697 call get_arg_range\r
698 push hl\r
699 push bc\r
700 call skip_to_nextarg\r
701 call get_arg\r
702 ex de,hl\r
703 pop bc\r
704 pop hl\r
705 ret\r
a16ba2b0
L
706\r
707sub_0a68h:\r
fecee241
L
708 call EXPR\r
709 jr c,error0\r
710 ret\r
a16ba2b0
L
711\r
712get_arg:\r
fecee241 713 call sub_0a68h\r
a16ba2b0 714l0a71h:\r
fecee241 715 jp assert_eol\r
a16ba2b0
L
716\r
717get_lastarg_def:\r
fecee241
L
718 call get_arg_def\r
719 jr l0a71h\r
a16ba2b0
L
720\r
721get_arg_def:\r
fecee241
L
722 push hl\r
723 call EXPR\r
724 jr c,l0a80h\r
725 ex (sp),hl\r
a16ba2b0 726l0a80h:\r
fecee241
L
727 pop hl\r
728 ret\r
a16ba2b0
L
729\r
730sub_0a82h:\r
fecee241
L
731 call sub_0a87h\r
732 jr l0a71h\r
a16ba2b0
L
733\r
734sub_0a87h:\r
735 db 0e6h ;0a87 and 037h (clear carry)\r
736get_arg_range:\r
737 scf\r
fecee241
L
738 ex af,af'\r
739 push bc\r
740 push hl\r
741 call EXPR\r
742 jr nc,l0a97h\r
743 ex af,af'\r
744 jr c,error0\r
745 ex af,af'\r
746 pop hl\r
747\r
748 defb 03eh\r
a16ba2b0 749l0a97h:\r
fecee241
L
750 pop af\r
751 call sub_0aa5h\r
752 jr nc,l0aa3h\r
753 ex af,af'\r
754 pop bc\r
755 ret nc\r
a16ba2b0 756error0:\r
fecee241 757 jp ERROR\r
a16ba2b0
L
758\r
759l0aa3h:\r
fecee241
L
760 pop af\r
761 ret\r
a16ba2b0
L
762\r
763sub_0aa5h:\r
fecee241
L
764 call skip_to_nextarg\r
765 cp 'S'\r
766 jr nz,l0aadh\r
767 inc de\r
a16ba2b0 768l0aadh:\r
fecee241
L
769 push hl\r
770 push af\r
771 call EXPR\r
772 jr c,l0ac3h\r
773 ld b,h\r
774 ld c,l\r
775 pop af\r
776 pop hl\r
777 jr z,l0ac1h\r
778 ld a,c\r
779 sub l\r
780 ld c,a\r
781 ld a,b\r
782 sbc a,h\r
783 ld b,a\r
784 inc bc\r
a16ba2b0 785l0ac1h:\r
fecee241
L
786 and a\r
787 ret\r
a16ba2b0
L
788\r
789l0ac3h:\r
fecee241
L
790 pop af\r
791 pop hl\r
792 jr z,error0\r
793 scf\r
794 ret\r
a16ba2b0
L
795\r
796EXPR:\r
fecee241 797 call SKIPBL\r
a16ba2b0 798EXPR1:\r
fecee241
L
799 call do_subexpr\r
800 ret c\r
801 call do_rel_op\r
802 ret nc\r
803 push bc\r
804 push hl\r
805 call do_subexpr\r
806 jr c,error0\r
807 ex de,hl\r
808 ex (sp),hl\r
809 and a\r
810 sbc hl,de\r
811 ld hl,0ffffh\r
812 pop de\r
813 ret\r
a16ba2b0
L
814\r
815do_op_eq:\r
fecee241
L
816 jr z,l0af8h\r
817 jr l0af7h\r
a16ba2b0 818do_op_ne:\r
fecee241
L
819 jr nz,l0af8h\r
820 jr l0af7h\r
a16ba2b0 821do_op_le:\r
fecee241 822 jr z,l0af8h\r
a16ba2b0 823do_op_lt:\r
fecee241
L
824 jr c,l0af8h\r
825 jr l0af7h\r
a16ba2b0 826do_op_gt:\r
fecee241 827 jr z,l0af7h\r
a16ba2b0 828do_op_ge:\r
fecee241 829 jr nc,l0af8h\r
a16ba2b0 830l0af7h:\r
fecee241 831 inc hl\r
a16ba2b0 832l0af8h:\r
fecee241
L
833 and a\r
834 ret\r
a16ba2b0
L
835\r
836do_rel_op:\r
fecee241
L
837 push hl\r
838 ld hl,tab_eq_le_ge\r
839 call lookupch\r
840 jr nc,l0b28h\r
841 ld a,b\r
842 or a\r
843 jr z,l0b1ch\r
844 ld a,(de)\r
845 cp '='\r
846 jr nz,l0b11h\r
847 inc de\r
848 inc b\r
849 inc b\r
850 jr l0b1ch\r
a16ba2b0
L
851\r
852l0b11h:\r
fecee241
L
853 bit 0,b\r
854 jr z,l0b1ch\r
855 cp '>'\r
856 jr nz,l0b1ch\r
857 inc de\r
858 ld b,005h\r
a16ba2b0 859l0b1ch:\r
fecee241
L
860 ld hl,tab_func_eqlege\r
861 ld a,b\r
862 add a,a\r
863 call ADD_HL_A\r
864 ld c,(hl)\r
865 inc hl\r
866 ld b,(hl)\r
867 scf\r
a16ba2b0 868l0b28h:\r
fecee241
L
869 pop hl\r
870 ret\r
a16ba2b0
L
871\r
872tab_eq_le_ge:\r
873 db '=<>',0\r
874\r
875tab_func_eqlege:\r
fecee241
L
876 defw do_op_eq\r
877 defw do_op_lt\r
878 defw do_op_gt\r
879 defw do_op_le\r
880 defw do_op_ge\r
881 defw do_op_ne\r
a16ba2b0
L
882\r
883do_subexpr:\r
fecee241
L
884 call do_factor\r
885 ret c\r
a16ba2b0 886l0b3eh:\r
fecee241
L
887 call do_binary_op\r
888 push hl\r
889 push bc\r
890 call do_factor\r
891 pop bc\r
892 ex de,hl\r
893 ex (sp),hl\r
894 jr nc,l0b52h\r
895 pop de\r
896 ld a,b\r
897 or c\r
898 ret z\r
899 jp ERROR\r
a16ba2b0
L
900\r
901l0b52h:\r
fecee241
L
902 ld a,b\r
903 or c\r
904 push bc\r
905 ret nz\r
906 pop bc\r
a16ba2b0 907do_op_add:\r
fecee241 908 add hl,de\r
a16ba2b0 909l0b58h:\r
fecee241
L
910 pop de\r
911 jr l0b3eh\r
a16ba2b0
L
912\r
913do_op_sub:\r
fecee241
L
914 and a\r
915 sbc hl,de\r
916 jr l0b58h\r
a16ba2b0
L
917\r
918do_op_mlt:\r
29605004
L
919 push bc\r
920 if CPU_Z180\r
a16ba2b0
L
921 ld b,h\r
922 ld c,e\r
923 ld h,e\r
924 ld e,l\r
925 mlt bc\r
926 mlt de\r
927 mlt hl\r
928 ld a,h\r
929 add a,c\r
930 add a,e\r
931 ld h,a\r
29605004
L
932 else\r
933 ld b,h\r
934 ld c,l\r
935 ld hl,0\r
936 ld a,16\r
937mlt_1:\r
938 add hl,hl\r
939 ex de,hl\r
940 add hl,hl\r
941 ex de,hl\r
942 jr nc,mlt_2\r
943 add hl,bc\r
944mlt_2:\r
945 dec a\r
946 jr nz,mlt_1\r
947 endif\r
948 pop bc\r
949 jr l0b58h\r
a16ba2b0
L
950\r
951do_op_div:\r
fecee241
L
952 call DIV_HL_DE\r
953 jr l0b58h\r
a16ba2b0
L
954\r
955do_op_mod:\r
fecee241
L
956 call DIV_HL_DE\r
957 ex de,hl\r
958 jr l0b58h\r
a16ba2b0 959\r
8590a76b 960; divide x/y\r
ad9bc17c
L
961; hl: x\r
962; de: y\r
8590a76b 963; return:\r
ad9bc17c
L
964; hl: q (x/y)\r
965; de: r (x%y)\r
8590a76b 966\r
a16ba2b0 967DIV_HL_DE:\r
8590a76b
L
968 push bc\r
969 ex de,hl ;de = x, hl = y\r
970 ld b,h ;bc = y\r
971 ld c,l\r
972 ld hl,0 ;r = 0\r
973 ld a,16 ;count\r
ad9bc17c
L
974\r
975; de: x (x shifted out, q shifted in)\r
976; bc: y\r
977; hl: r (initially 0)\r
978\r
a16ba2b0 979l0b89h:\r
8590a76b
L
980 ex de,hl ;x\r
981 add hl,hl ;x <<= 1\r
982 ex de,hl ;r\r
983 adc hl,hl ;r <<= 1\r
984\r
985 or a\r
986 sbc hl,bc\r
987 inc de\r
988 jr nc,div_no_restore\r
989 add hl,bc\r
990 dec de\r
991div_no_restore:\r
992 dec a\r
993 jr nz,l0b89h\r
ad9bc17c 994 ex de,hl ;hl: q de: r\r
8590a76b 995 pop bc\r
fecee241 996 ret\r
a16ba2b0
L
997\r
998do_op_and:\r
8590a76b
L
999 ld a,h\r
1000 and d\r
1001 ld h,a\r
1002 ld a,l\r
1003 and e\r
1004 ld l,a\r
1005 jr l0b58h\r
a16ba2b0
L
1006\r
1007do_op_or:\r
8590a76b
L
1008 ld a,h\r
1009 or d\r
1010 ld h,a\r
1011 ld a,l\r
1012 or e\r
1013 ld l,a\r
1014 jr l0b58h\r
a16ba2b0
L
1015\r
1016do_op_xor:\r
8590a76b
L
1017 ld a,h\r
1018 xor d\r
1019 ld h,a\r
1020 ld a,l\r
1021 xor e\r
1022 ld l,a\r
1023 jr l0b58h\r
a16ba2b0
L
1024\r
1025do_binary_op:\r
8590a76b
L
1026 push hl\r
1027 ld hl,tab_op_a\r
1028 call lookupch\r
1029 ld a,b\r
1030 ld hl,tab_func_opa\r
1031 add a,a\r
1032 call ADD_HL_A\r
1033 ld c,(hl)\r
1034 inc hl\r
1035 ld b,(hl)\r
1036 pop hl\r
fecee241 1037 ret\r
a16ba2b0
L
1038\r
1039tab_op_a:\r
1040 DB '+-*/%&!#',0\r
1041tab_func_opa:\r
8590a76b
L
1042 defw do_op_add\r
1043 defw do_op_sub\r
1044 defw do_op_mlt\r
1045 defw do_op_div\r
1046 defw do_op_mod\r
1047 defw do_op_and\r
1048 defw do_op_or\r
1049 defw do_op_xor\r
1050 defw 0\r
a16ba2b0
L
1051\r
1052fact_factor:\r
8590a76b
L
1053 call do_factor\r
1054 ret nc\r
1055 jp ERROR\r
a16ba2b0
L
1056\r
1057do_factor:\r
8590a76b
L
1058 call chk.sp\r
1059 call get.number\r
1060 ret nc\r
1061 inc de\r
1062 ld hl,TOPRAM\r
1063 cp 'T'\r
1064 ret z\r
1065 ld hl,(HILOD)\r
1066 cp 'H'\r
1067 ret z\r
1068 ld hl,(MAXLOD)\r
1069 cp 'M'\r
1070 ret z\r
1071 ld hl,TPA\r
1072 cp 'L'\r
1073 ret z\r
1074 ld hl,(offs.@)\r
1075 cp '@'\r
1076 ret z\r
1077 ld hl,(OFFS.pc)\r
1078 cp '$'\r
1079 ret z\r
1080 cp '-'\r
1081 jr z,fact_factneg\r
1082 cp '~'\r
1083 jr z,fact_factinv\r
1084 cp '+'\r
1085 jr z,fact_factor\r
1086 cp '^'\r
1087 jr z,fact_reg.CPU\r
1088 cp 'Y'\r
1089 jr z,fact_reg.Y\r
1090 cp '('\r
1091 jr z,fact_mem\r
1092 cp '['\r
1093 jp z,EXPR_BRCKT ;0c35 [ expression ]\r
1094 cp ''''\r
1095 jr z,fact_factstring\r
1096 dec de\r
fecee241
L
1097 scf\r
1098 ret\r
a16ba2b0
L
1099\r
1100fact_reg.Y:\r
8590a76b
L
1101 call get.decdigit\r
1102 jp c,ERROR\r
1103 inc de\r
1104 add a,a\r
1105 ld hl,reg.Y\r
1106 call ADD_HL_A\r
1107 ld a,(hl)\r
1108 inc hl\r
1109 ld h,(hl)\r
1110 ld l,a\r
1111 and a\r
fecee241 1112 ret\r
a16ba2b0 1113fact_factstring:\r
8590a76b 1114 ld hl,0\r
a16ba2b0 1115l0c56h:\r
8590a76b
L
1116 ld a,(de)\r
1117 cp ''''\r
1118 jr z,l0c62h\r
1119 and a\r
1120 ret z\r
a16ba2b0 1121l0c5dh:\r
8590a76b
L
1122 ld h,l\r
1123 ld l,a\r
1124 inc de\r
1125 jr l0c56h\r
a16ba2b0
L
1126\r
1127l0c62h:\r
8590a76b
L
1128 inc de\r
1129 ld a,(de)\r
1130 cp ''''\r
1131 jr z,l0c5dh\r
1132 sub '.'\r
1133 or a\r
1134 ret nz\r
1135 inc de\r
1136 set 7,l\r
fecee241 1137 ret\r
a16ba2b0
L
1138\r
1139fact_reg.CPU:\r
8590a76b
L
1140 call sub_1315h\r
1141 jr nc,l0cbbh\r
1142 ld a,(hl)\r
1143 inc hl\r
1144 ld h,(hl)\r
1145 ld l,a\r
1146 and a\r
1147 bit 0,c\r
1148 ret nz\r
1149 ld h,000h\r
fecee241 1150 ret\r
a16ba2b0
L
1151\r
1152fact_factneg:\r
8590a76b
L
1153 call fact_factor\r
1154 dec hl\r
a16ba2b0 1155cpl.hl:\r
8590a76b 1156 ld a,h\r
fecee241 1157 cpl\r
8590a76b
L
1158 ld h,a\r
1159 ld a,l\r
fecee241 1160 cpl\r
8590a76b 1161 ld l,a\r
fecee241 1162 ret\r
a16ba2b0 1163fact_factinv:\r
8590a76b
L
1164 call fact_factor\r
1165 jr cpl.hl\r
a16ba2b0
L
1166\r
1167fact_mem:\r
8590a76b
L
1168 call EXPR1\r
1169 jr c,l0cbbh\r
1170 ld a,(de)\r
1171 cp ')'\r
1172 jr nz,l0cbbh\r
1173 inc de\r
a16ba2b0 1174 comst\r
8590a76b
L
1175 ld a,(hl)\r
1176 inc hl ;\r
1177 ld h,(hl) ;\r
a16ba2b0 1178 comend\r
8590a76b
L
1179 ld l,a\r
1180 ld a,(de)\r
1181 inc de\r
1182 cp '.'\r
1183 ret z\r
1184 dec de\r
1185 xor a\r
1186 ld h,a\r
fecee241 1187 ret\r
a16ba2b0
L
1188\r
1189EXPR_BRCKT:\r
8590a76b
L
1190 call EXPR1\r
1191 jr c,l0cbbh\r
1192 ld a,(de)\r
1193 cp ']'\r
1194 inc de\r
1195 ret z\r
a16ba2b0 1196l0cbbh:\r
8590a76b 1197 jp ERROR\r
a16ba2b0
L
1198\r
1199get.number:\r
8590a76b
L
1200 call get.hexdigit\r
1201 ret c\r
1202 push de\r
a16ba2b0 1203l0cc3h:\r
8590a76b
L
1204 inc de\r
1205 call get.hexdigit\r
1206 jr nc,l0cc3h\r
1207 pop de\r
1208 cp '.'\r
1209 jr z,l0d04h\r
1210 cp '"'\r
1211 jr z,l0ce9h\r
1212 ld hl,0\r
a16ba2b0 1213l0cd5h:\r
8590a76b
L
1214 call get.hexdigit\r
1215 jr c,l0ce4h\r
1216 add hl,hl\r
1217 add hl,hl\r
1218 add hl,hl\r
1219 add hl,hl\r
1220 call ADD_HL_A\r
1221 inc de\r
1222 jr l0cd5h\r
a16ba2b0 1223l0ce4h:\r
8590a76b
L
1224 xor 'H'\r
1225 ret nz\r
1226 inc de\r
fecee241 1227 ret\r
a16ba2b0
L
1228\r
1229l0ce9h:\r
8590a76b 1230 ld hl,0\r
a16ba2b0 1231l0cech:\r
9f8d835b 1232 call get.bindigit\r
a16ba2b0 1233l0cefh:\r
8590a76b
L
1234 inc de\r
1235 jr c,l0cf8h\r
1236 add hl,hl\r
1237 call ADD_HL_A\r
1238 jr l0cech\r
a16ba2b0 1239l0cf8h:\r
8590a76b
L
1240 cp '"'\r
1241 jp nz,ERROR\r
9f8d835b 1242 call get.bindigit\r
8590a76b
L
1243 jr nc,l0cefh\r
1244 or a\r
fecee241 1245 ret\r
a16ba2b0 1246l0d04h:\r
8590a76b 1247 ld hl,0\r
a16ba2b0 1248l0d07h:\r
8590a76b
L
1249 call get.decdigit\r
1250 inc de\r
1251 jr c,l0d1ah\r
1252 push bc\r
1253 add hl,hl ;0d0e hl *= 10\r
1254 ld b,h\r
1255 ld c,l\r
1256 add hl,hl\r
1257 add hl,hl\r
1258 add hl,bc\r
1259 pop bc\r
1260 call ADD_HL_A\r
1261 jr l0d07h\r
a16ba2b0 1262l0d1ah:\r
8590a76b
L
1263 cp '.'\r
1264 ret z\r
1265 jp ERROR\r
a16ba2b0
L
1266\r
1267sub_0d20h:\r
8590a76b
L
1268 ld a,(de)\r
1269 cp 05bh\r
1270 jr l0d28h\r
a16ba2b0
L
1271\r
1272get.hexdigit:\r
8590a76b 1273 ld a,(de)\r
a16ba2b0 1274sub_0d26h:\r
8590a76b 1275 cp 'F'+1\r
a16ba2b0 1276l0d28h:\r
fecee241 1277 ccf\r
8590a76b
L
1278 ret c\r
1279 cp 'A'\r
1280 jr c,l0d32h\r
1281 sub 'A'-10\r
fecee241 1282 ret\r
a16ba2b0
L
1283\r
1284get.decdigit:\r
8590a76b 1285 ld a,(de)\r
a16ba2b0 1286l0d32h:\r
8590a76b
L
1287 cp '9'+1\r
1288 jr l0d39h\r
a16ba2b0 1289get.bindigit:\r
8590a76b
L
1290 ld a,(de)\r
1291 cp '1'+1\r
a16ba2b0 1292l0d39h:\r
fecee241 1293 ccf\r
8590a76b
L
1294 ret c\r
1295 cp '0'\r
1296 ret c\r
1297 sub '0'\r
fecee241 1298 ret\r
a16ba2b0
L
1299\r
1300l0d41h:\r
8590a76b 1301 call assert_eol\r
a16ba2b0
L
1302\r
1303prnt_cpustat:\r
8590a76b
L
1304 call prnt_f\r
1305 call outbl2\r
1306 ld hl,b_0x0DFD_start\r
1307 ld de,b_0x0E1D_start\r
1308 ld b,006h\r
a16ba2b0 1309l0d52h:\r
8590a76b
L
1310 call prnt_regs\r
1311 djnz l0d52h\r
1312 push hl\r
1313 push de\r
1314 ld iy,(REG.PC)\r
1315 call sub_1f77h\r
fecee241 1316 exx\r
8590a76b
L
1317 ex af,af'\r
1318 call CRLF\r
1319 call prnt_f2\r
1320 call outbl2\r
1321 pop de\r
1322 pop hl\r
1323 ld b,007h\r
a16ba2b0 1324l0d6fh:\r
8590a76b
L
1325 call prnt_regs\r
1326 djnz l0d6fh\r
fecee241 1327 exx\r
8590a76b
L
1328 ex af,af'\r
1329 and a\r
1330 jr z,l0d7fh\r
1331 call outbl6\r
1332 call sub_1f5bh\r
a16ba2b0 1333l0d7fh:\r
8590a76b 1334 jp crlf\r
a16ba2b0
L
1335\r
1336prnt_f:\r
8590a76b
L
1337 ld a,(reg.f)\r
1338 call prnt_flags\r
1339 ld a,(reg.iff)\r
1340 cp 0f3h\r
1341 jp z,outbl\r
1342 ld a,'E'\r
1343 jp outchar\r
a16ba2b0
L
1344\r
1345prnt_f2:\r
8590a76b
L
1346 ld a,(reg.f2)\r
1347 call prnt_flags\r
1348 jp outbl\r
a16ba2b0
L
1349\r
1350prnt_flags:\r
8590a76b
L
1351 ld b,a\r
1352 ld a,'S'\r
1353 call sub_0dbeh\r
1354 ld a,'Z'\r
1355 call sub_0dbeh\r
1356 rl b\r
1357 ld a,'H'\r
1358 call sub_0dbeh\r
1359 rl b\r
1360 ld a,'V'\r
1361 call sub_0dbeh\r
1362 ld a,'N'\r
1363 call sub_0dbeh\r
1364 ld a,'C'\r
a16ba2b0 1365sub_0dbeh:\r
8590a76b
L
1366 rl b\r
1367 jp c,OUTCHAR\r
1368 jp OUTBL\r
a16ba2b0
L
1369\r
1370prnt_regs:\r
8590a76b
L
1371 push bc\r
1372 push de\r
1373 call PSTR\r
1374 ld a,'='\r
1375 call OUTCHAR\r
1376 ex (sp),hl\r
1377 ld e,(hl)\r
1378 inc hl\r
1379 ld d,(hl)\r
1380 inc hl\r
1381 ld a,(hl)\r
1382 inc hl\r
1383 push hl\r
1384 and a\r
1385 jr z,l0df2h\r
1386 push af\r
1387 ld a,(de)\r
1388 ld l,a\r
1389 inc de\r
1390 ld a,(de)\r
1391 ld h,a\r
1392 pop af\r
1393 dec a\r
1394 jr z,l0dedh\r
1395 call out.hl.@\r
1396 call z,outbl6\r
1397 jr l0df6h\r
a16ba2b0 1398l0dedh:\r
8590a76b
L
1399 call out.hl\r
1400 jr l0df6h\r
a16ba2b0 1401l0df2h:\r
8590a76b
L
1402 ld a,(de)\r
1403 call out.hex\r
a16ba2b0 1404l0df6h:\r
8590a76b
L
1405 call OUTBL\r
1406 pop de\r
1407 pop hl\r
1408 pop bc\r
fecee241 1409 ret\r
a16ba2b0
L
1410\r
1411b_0x0DFD_start:\r
1412 DC 'A '\r
1413 DC 'BC '\r
1414 DC 'DE '\r
1415 DC 'HL '\r
1416 DC 'SP'\r
1417 DC 'PC'\r
1418 DC 'A'''\r
1419 DC 'BC'''\r
1420 DC 'DE'''\r
1421 DC 'HL'''\r
1422 DC 'IX'\r
1423 DC 'IY'\r
1424 DC 'I'\r
1425 DB 0\r
1426\r
1427b_0x0E1D_start:\r
8590a76b
L
1428 defw reg.a\r
1429 defb 000h\r
1430 defw reg.c\r
1431 defb 001h\r
1432 defw reg.e\r
1433 defb 001h\r
1434 defw reg.l\r
1435 defb 001h\r
1436 defw reg.sp\r
1437 defb 001h\r
1438 defw reg.pc\r
1439 defb 002h\r
1440 defw reg.a2\r
1441 defb 000h\r
1442 defw reg.c2\r
1443 defb 001h\r
1444 defw reg.e2\r
1445 defb 001h\r
1446 defw reg.l2\r
1447 defb 001h\r
1448 defw reg.ix\r
1449 defb 001h\r
1450 defw reg.iy\r
1451 defb 001h\r
1452 defw reg.i\r
fecee241 1453 dw 0\r
a16ba2b0
L
1454\r
1455CMD.G:\r
8590a76b
L
1456 sub a\r
1457 ld (TCFLG),a\r
1458 ld (XA747),a\r
1459 call EXPR\r
1460 jr c,l0e54h\r
1461 ld (REG.PC),hl\r
a16ba2b0 1462l0e54h:\r
8590a76b
L
1463 call SKIPBL\r
1464 jp z,l1183h\r
1465 cp ';'\r
1466 jp nz,ERROR\r
1467 inc de\r
1468 ld a,002h\r
1469 call sub_0f24h\r
1470 jp l1183h\r
a16ba2b0
L
1471\r
1472sub_0e68h:\r
8590a76b
L
1473 ld b,BP_CNT\r
1474 ld ix,bp_tab\r
a16ba2b0 1475l0e6eh:\r
8590a76b
L
1476 ld a,(ix+000h)\r
1477 and 0f1h\r
1478 ld (ix+000h),a\r
1479 call sub_11c5h\r
1480 ld de,BP_SIZE\r
1481 add ix,de\r
1482 djnz l0e6eh\r
fecee241 1483 ret\r
a16ba2b0
L
1484\r
1485CMD.B:\r
8590a76b
L
1486 call SKIPBL\r
1487 jr z,l0ecbh\r
1488 inc de\r
1489 cp 'X'\r
1490 jr z,l0e91h\r
1491 dec de\r
1492 ld a,001h\r
1493 jp sub_0f24h\r
a16ba2b0 1494l0e91h:\r
8590a76b
L
1495 call SKIPBL\r
1496 jr z,l0ea6h\r
a16ba2b0 1497l0e96h:\r
8590a76b
L
1498 call EXPR\r
1499 jp c,assert_eol\r
1500 push de\r
1501 call sub_0ea7h\r
1502 pop de\r
1503 call skip_to_nextarg\r
1504 jr l0e96h\r
a16ba2b0 1505l0ea6h:\r
fecee241 1506 scf\r
a16ba2b0 1507sub_0ea7h:\r
8590a76b
L
1508 ld b,BP_CNT\r
1509 ld ix,bp_tab\r
a16ba2b0 1510l0eadh:\r
8590a76b
L
1511 push af\r
1512 jr c,l0ebbh\r
1513 ld e,(ix+002h)\r
1514 ld d,(ix+003h)\r
1515 call CP.HL.DE\r
1516 jr nz,l0ec2h\r
a16ba2b0 1517l0ebbh:\r
8590a76b
L
1518 ld (ix+000h),000h\r
1519 call sub_11c5h\r
a16ba2b0 1520l0ec2h:\r
8590a76b
L
1521 ld de,BP_SIZE\r
1522 add ix,de\r
1523 pop af\r
1524 djnz l0eadh\r
fecee241 1525 ret\r
a16ba2b0 1526l0ecbh:\r
8590a76b
L
1527 ld b,BP_CNT\r
1528 ld ix,bp_tab\r
a16ba2b0 1529l0ed1h:\r
8590a76b
L
1530 bit 0,(ix+000h)\r
1531 jr z,l0f1ch\r
1532 ld a,'R'\r
1533 bit 4,(ix+000h)\r
1534 jr nz,l0ee1h\r
1535 ld a,' '\r
a16ba2b0 1536l0ee1h:\r
8590a76b
L
1537 call OUTCHAR\r
1538 call OUTBL\r
1539 ld l,(ix+002h)\r
1540 ld h,(ix+003h)\r
1541 call out.hl.@\r
1542 call outbl2\r
1543 ld a,':'\r
1544 call OUTCHAR\r
1545 ld l,(ix+004h)\r
1546 ld h,(ix+005h)\r
1547 call out.hl\r
1548 ld l,(ix+006h)\r
1549 ld h,(ix+007h)\r
1550 ld a,h\r
1551 or l\r
1552 jr z,l0f19h\r
1553 call outbl4\r
1554 ld a,'I'\r
1555 call OUTCHAR\r
1556 call outbl2\r
1557 call PSTR\r
a16ba2b0 1558l0f19h:\r
8590a76b 1559 call CRLF\r
a16ba2b0 1560l0f1ch:\r
8590a76b
L
1561 ld de,BP_SIZE\r
1562 add ix,de\r
1563 djnz l0ed1h\r
fecee241 1564 ret\r
a16ba2b0
L
1565\r
1566sub_0f24h:\r
8590a76b
L
1567 ld b,a\r
1568 call SKIPBL\r
1569 ret z\r
1570 cp 'R'\r
1571 jr nz,l0f30h\r
1572 inc de\r
1573 set 4,b\r
a16ba2b0 1574l0f30h:\r
8590a76b
L
1575 push bc\r
1576 call EXPR\r
1577 jp c,ERROR\r
1578 pop bc\r
1579 bit 0,b\r
1580 push bc\r
1581 push de\r
1582 push hl\r
1583 call nz,sub_0ea7h\r
1584 pop hl\r
1585 call sub_0f68h\r
1586 pop de\r
1587 ld (ix+002h),l\r
1588 ld (ix+003h),h\r
1589 call sub_0f80h\r
1590 ld (ix+004h),l\r
1591 ld (ix+005h),h\r
1592 call sub_0f91h\r
1593 ld (ix+006h),l\r
1594 ld (ix+007h),h\r
1595 call skip_to_nextarg\r
1596 pop af\r
1597 ld (ix+000h),a\r
1598 and 00fh\r
1599 jr sub_0f24h\r
a16ba2b0 1600sub_0f68h:\r
8590a76b
L
1601 ld b,BP_CNT\r
1602 ld ix,bp_tab\r
a16ba2b0 1603l0f6eh:\r
8590a76b
L
1604 ld a,(ix+000h)\r
1605 and 00fh\r
1606 ret z\r
1607 push bc\r
1608 ld bc,BP_SIZE\r
1609 add ix,bc\r
1610 pop bc\r
1611 djnz l0f6eh\r
1612 jp ERROR\r
a16ba2b0
L
1613\r
1614sub_0f80h:\r
8590a76b
L
1615 call SKIPBL\r
1616 ld hl,1\r
1617 cp 03ah\r
1618 ret nz\r
1619 inc de\r
1620 call EXPR\r
1621 jp c,ERROR\r
fecee241 1622 ret\r
a16ba2b0 1623sub_0f91h:\r
8590a76b
L
1624 call SKIPBL\r
1625 cp 049h\r
1626 ld hl,0\r
1627 ret nz\r
1628 inc de\r
1629 call SKIPBL\r
1630 push de\r
1631 call EXPR\r
1632 jp c,ERROR\r
1633 ex de,hl\r
1634 pop de\r
1635 push de\r
1636 sbc hl,de\r
1637 ld b,h\r
1638 ld c,l\r
1639 ld hl,(sexp1)\r
1640 push hl\r
1641 add hl,bc\r
1642 ld de,sexpbufe\r
1643 call CP.HL.DE\r
1644 jp nc,ERROR\r
1645 pop hl\r
1646 ld (sexp2),hl\r
1647 pop de\r
1648 ex de,hl\r
fecee241 1649 ldir\r
8590a76b
L
1650 xor a\r
1651 ld (de),a\r
1652 inc de\r
1653 ex de,hl\r
1654 ld (sexp1),hl\r
1655 ld hl,(sexp2)\r
fecee241 1656 ret\r
a16ba2b0
L
1657\r
1658bpddtz:\r
1659 if ROMSYS\r
29605004
L
1660 ld h,ROMEN\r
1661 jr z,l0fd2h\r
1662 inc h\r
a16ba2b0 1663l0fd2h:\r
29605004
L
1664 push hl ;save rom enable stat\r
1665 endif\r
1666 push bc\r
1667 push de\r
1668 push ix\r
1669 push iy\r
1670 ld a,i\r
1671 ld h,a\r
1672 ld l,000h\r
1673 push hl ;save I register\r
1674\r
1675 if CPU_Z180\r
1676 ld a,0f3h ;DI\r
1677 jp po,l0fe6h\r
1678 ld a,0fbh ;EI\r
1679 else ;NMOS Z80 design flaw\r
1680 call getiff ;return Carry set, if INTs are disabled.\r
1681 ld a,0f3h ;DI\r
1682 jr c,l0fe6h\r
1683 ld a,0fbh ;EI\r
a16ba2b0 1684 endif\r
a16ba2b0 1685l0fe6h:\r
29605004
L
1686 ld (reg.iff),a\r
1687 ld hl,ivtab\r
1688 ld a,h\r
1689 ld i,a\r
1690 call ddtei\r
1691 ex af,af'\r
1692 push af\r
1693 exx\r
1694 push bc\r
1695 push de\r
1696 push hl\r
1697 call bp.unset\r
1698 if CPU_Z180\r
1699 in0 a,(itc)\r
1700 jp p,l1017h\r
1701 res TRAP,a\r
1702 out0 (itc),a\r
1703 bit UFO,a\r
1704 jr z,l1011h\r
1705 ld hl,(REG.PC)\r
1706 dec hl\r
1707 ld (REG.PC),hl\r
a16ba2b0 1708l1011h:\r
29605004
L
1709 ld hl,MSG_trap\r
1710 call PSTR\r
a16ba2b0 1711l1017h:\r
29605004
L
1712 endif\r
1713\r
1714 ld a,(XBFE8)\r
1715 dec a\r
1716 jr z,l1051h\r
1717 call inchar\r
1718 jr c,l102eh\r
1719 call sub_1059h\r
1720 and a\r
1721 jp z,l1183h\r
1722 and 083h\r
1723 jp z,l284ah\r
a16ba2b0 1724l102eh:\r
29605004 1725 call sub_0e68h\r
fecee241 1726 call prnt_cpustat\r
29605004 1727 jp DDTZML\r
a16ba2b0 1728\r
29605004 1729 if CPU_Z180\r
a16ba2b0
L
1730MSG_trap:\r
1731 DB CR,LF,'Undefined opcode trap'\r
1732 DB CR,LF,0\r
29605004 1733 endif\r
a16ba2b0
L
1734\r
1735l1051h:\r
fecee241
L
1736 ld (XBFE8),a\r
1737 ld c,007h\r
1738 jp l119fh\r
a16ba2b0 1739sub_1059h:\r
fecee241
L
1740 ld a,080h\r
1741 ex af,af'\r
1742 sub a\r
1743 ld (XA747),a\r
1744 ld b,BP_CNT\r
1745 ld ix,bp_tab\r
a16ba2b0 1746l1066h:\r
fecee241
L
1747 ld a,(ix+000h)\r
1748 and 007h\r
1749 jr z,l107eh\r
1750 ld e,(ix+002h)\r
1751 ld d,(ix+003h)\r
1752 ld hl,(REG.PC)\r
1753 call CP.HL.DE\r
1754 push bc\r
1755 call z,sub_1087h\r
1756 pop bc\r
a16ba2b0 1757l107eh:\r
fecee241
L
1758 ld de,BP_SIZE\r
1759 add ix,de\r
1760 djnz l1066h\r
1761 ex af,af'\r
1762 ret\r
a16ba2b0 1763sub_1087h:\r
fecee241
L
1764 ex af,af'\r
1765 res 7,a\r
1766 ex af,af'\r
1767 ld e,(ix+006h)\r
1768 ld d,(ix+007h)\r
1769 ld a,d\r
1770 or e\r
1771 ld hl,0ffffh\r
1772 call nz,EXPR\r
1773 ld a,h\r
1774 or l\r
1775 jr z,l10aeh\r
1776 ld e,(ix+004h)\r
1777 ld d,(ix+005h)\r
1778 dec de\r
1779 ld a,d\r
1780 or e\r
1781 jr z,l10b9h\r
1782 ld (ix+004h),e\r
1783 ld (ix+005h),d\r
a16ba2b0 1784l10aeh:\r
fecee241
L
1785 bit 4,(ix+000h)\r
1786 ret z\r
1787 ld a,001h\r
1788 ld (XA747),a\r
1789 ret\r
a16ba2b0 1790l10b9h:\r
fecee241
L
1791 ex af,af'\r
1792 or (ix+000h)\r
1793 ex af,af'\r
a16ba2b0
L
1794 ret\r
1795\r
1796bp.unset:\r
fecee241
L
1797 ld b,BP_CNT\r
1798 ld ix,bp_tab\r
a16ba2b0 1799l10c5h:\r
fecee241
L
1800 bit 5,(ix+000h)\r
1801 res 5,(ix+000h)\r
1802 jr z,l10e7h\r
1803 ld l,(ix+002h)\r
1804 ld h,(ix+003h)\r
cdc4625b 1805 ld a,(ddtzrst)\r
fecee241
L
1806 comst\r
1807 cp (hl)\r
a16ba2b0 1808 comend\r
fecee241
L
1809 jr nz,l10e7h\r
1810 ld a,(ix+001h)\r
1811 comst\r
1812 ld (hl),a\r
a16ba2b0
L
1813 comend\r
1814l10e7h:\r
fecee241
L
1815 res 3,(ix+000h)\r
1816 ld de,BP_SIZE\r
1817 add ix,de\r
1818 djnz l10c5h\r
1819 ret\r
a16ba2b0 1820sub_10f3h:\r
fecee241
L
1821 ld b,BP_CNT\r
1822 ld ix,bp_tab\r
a16ba2b0 1823l10f9h:\r
fecee241
L
1824 ld a,(ix+000h)\r
1825 and 003h\r
1826 jr z,l110dh\r
1827 ld e,(ix+002h)\r
1828 ld d,(ix+003h)\r
1829 ld hl,(REG.PC)\r
1830 call CP.HL.DE\r
1831 ret z\r
a16ba2b0 1832l110dh:\r
fecee241
L
1833 ld de,BP_SIZE\r
1834 add ix,de\r
1835 djnz l10f9h\r
1836 sub a\r
1837 inc a\r
1838 ret\r
a16ba2b0 1839sub_1117h:\r
fecee241
L
1840 call sub_0f68h\r
1841 ld (ix+004h),001h\r
1842 ld (ix+005h),000h\r
1843 ld (ix+002h),l\r
1844 ld (ix+003h),h\r
1845 ld (ix+006h),000h\r
1846 ld (ix+007h),000h\r
1847 ld a,(XBFE8)\r
1848 and a\r
1849 ld a,008h\r
1850 jr nz,l113ah\r
1851 ld a,004h\r
a16ba2b0 1852l113ah:\r
fecee241
L
1853 ld (ix+000h),a\r
1854 ret\r
a16ba2b0
L
1855\r
1856bp.set:\r
fecee241
L
1857 ld b,BP_CNT\r
1858 ld ix,bp_tab\r
a16ba2b0 1859l1144h:\r
fecee241
L
1860 ld a,(ix+000h)\r
1861 and c\r
1862 jr z,l117bh\r
1863 set 5,(ix+000h)\r
1864 ld l,(ix+002h)\r
1865 ld h,(ix+003h)\r
1866\r
1867\r
cdc4625b 1868 ld a,(ddtzrst)\r
fecee241
L
1869 comst\r
1870 ld e,(hl)\r
1871 ld (hl),a\r
a16ba2b0 1872 comend\r
fecee241
L
1873 ld (ix+001h),e\r
1874 and 038h\r
1875 ld h,0\r
1876 ld l,a\r
1877 ld de,bpent\r
a16ba2b0 1878 comst ;\r
fecee241
L
1879 ld (hl),0c3h\r
1880 inc hl\r
1881 ld (hl),e\r
1882 inc hl\r
1883 ld (hl),d\r
a16ba2b0
L
1884 comend\r
1885\r
fecee241 1886\r
a16ba2b0 1887l117bh:\r
fecee241
L
1888 ld de,BP_SIZE\r
1889 add ix,de\r
1890 djnz l1144h\r
a16ba2b0 1891 ret\r
fecee241 1892\r
a16ba2b0 1893l1183h:\r
fecee241
L
1894 sub a\r
1895 ld (XBFE8),a\r
1896 ld a,(XA747)\r
1897 and a\r
1898 call nz,prnt_cpustat\r
1899 call sub_10f3h\r
1900 ld c,007h\r
1901 jr nz,l119fh\r
1902 ld a,001h\r
1903 ld (XBFE8),a\r
1904 call sub_26e7h\r
1905 ld c,008h\r
a16ba2b0 1906l119fh:\r
fecee241 1907 call bp.set\r
a16ba2b0 1908 ld sp,$stack ;11a2 set/restore user cpu state\r
fecee241
L
1909 pop hl\r
1910 pop de\r
1911 pop bc\r
1912 pop af\r
1913 exx\r
1914 ex af,af'\r
1915 pop af\r
1916 ld i,a\r
1917 pop iy\r
1918 pop ix\r
1919 pop de\r
1920 pop bc\r
a16ba2b0 1921 if ROMSYS\r
fecee241
L
1922 pop hl\r
1923 ld a,l\r
1924 and M_MWI\r
1925 ld l,a\r
1926 di\r
1927 in0 a,(dcntl)\r
1928 and ~M_MWI\r
1929 or l\r
1930 ld l,a\r
1931 ld a,h\r
a16ba2b0
L
1932 else\r
1933 pop hl\r
1934 di\r
1935 endif\r
1936 jp $go ;11c2 common ram, switch banks and go to user prog\r
1937\r
1938sub_11c5h:\r
fecee241
L
1939 ld a,(ix+000h)\r
1940 and 003h\r
1941 ret nz\r
1942 ld e,(ix+006h)\r
1943 ld d,(ix+007h)\r
1944 ld a,d\r
1945 or e\r
1946 ret z\r
1947 push bc\r
1948 ld h,d\r
1949 ld l,e\r
1950 sub a\r
1951 ld (ix+006h),a\r
1952 ld (ix+007h),a\r
1953 ld bc,0ffffh\r
1954 cpir\r
a16ba2b0 1955l11e3h:\r
fecee241
L
1956 push de\r
1957 ld de,(sexp1)\r
1958 call CP.HL.DE\r
1959 pop de\r
1960 jr nc,l11f9h\r
1961 call sub_11ffh\r
a16ba2b0 1962l11f1h:\r
fecee241
L
1963 ld a,(hl)\r
1964 ldi\r
1965 and a\r
1966 jr nz,l11f1h\r
1967 jr l11e3h\r
a16ba2b0 1968l11f9h:\r
fecee241
L
1969 ld (sexp1),de\r
1970 pop bc\r
1971 ret\r
a16ba2b0 1972sub_11ffh:\r
fecee241
L
1973 ld iy,bp_tab\r
1974 push de\r
a16ba2b0 1975l1204h:\r
fecee241
L
1976 ld e,(iy+006h)\r
1977 ld d,(iy+007h)\r
1978 call CP.HL.DE\r
1979 jr z,l1216h\r
1980 ld de,BP_SIZE\r
1981 add iy,de\r
1982 jr l1204h\r
a16ba2b0 1983l1216h:\r
fecee241
L
1984 pop de\r
1985 ld (iy+006h),e\r
1986 ld (iy+007h),d\r
1987 ret\r
a16ba2b0
L
1988\r
1989CMD.Y:\r
fecee241
L
1990 call get.decdigit\r
1991 jr c,l122fh\r
1992 inc de\r
1993 push af\r
1994 call assert_eol\r
1995 pop af\r
1996 call sub_1248h\r
1997 jp l127ch\r
a16ba2b0 1998l122fh:\r
fecee241
L
1999 call assert_eol\r
2000 xor a\r
a16ba2b0 2001l1233h:\r
fecee241
L
2002 push af\r
2003 call sub_1248h\r
2004 call outbl4\r
2005 pop af\r
2006 inc a\r
2007 bit 0,a\r
2008 push af\r
2009 call z,CRLF\r
2010 pop af\r
2011 cp LF\r
2012 jr c,l1233h\r
2013 ret\r
a16ba2b0
L
2014\r
2015sub_1248h:\r
fecee241
L
2016 ld c,a\r
2017 ld b,0\r
2018 add a,'0'+080h\r
2019 ld de,msg.Y+1\r
2020 ld (de),a\r
2021 dec de\r
2022 ld hl,reg.Y\r
2023 add hl,bc\r
2024 add hl,bc\r
2025 ex de,hl\r
2026 ld c,003h\r
2027 jp l129ah\r
a16ba2b0
L
2028\r
2029CMD.X:\r
fecee241
L
2030 call SKIPBL\r
2031 call sub_1315h\r
2032 jp nc,l0d41h\r
2033 call assert_eol\r
2034 ld a,b\r
2035 cp 01fh\r
2036 jr z,l12c6h\r
2037 cp 020h\r
2038 jr z,l12b6h\r
2039 ex de,hl\r
2040 ld hl,b_0x132A_start\r
2041 call sub_0a48h\r
a16ba2b0 2042l1279h:\r
fecee241 2043 call l129ah\r
a16ba2b0 2044l127ch:\r
fecee241
L
2045 call OUTBL\r
2046 push de\r
2047 push bc\r
2048 call INLINE\r
2049 call SKIPBL\r
2050 jr z,l1297h\r
2051 call get_arg\r
2052 ld b,h\r
2053 ld c,l\r
2054 pop af\r
2055 pop hl\r
2056 ld (hl),c\r
2057 bit 0,a\r
2058 ret z\r
2059 inc hl\r
2060 ld (hl),b\r
2061 ret\r
a16ba2b0 2062l1297h:\r
fecee241
L
2063 pop af\r
2064 pop hl\r
2065 ret\r
a16ba2b0 2066l129ah:\r
fecee241
L
2067 ld b,c\r
2068 call PSTR\r
2069 ld a,'='\r
2070 call OUTCHAR\r
2071 ld a,(de)\r
2072 bit 0,b\r
2073 jp z,out.hex\r
2074 ld l,a\r
2075 inc de\r
2076 ld a,(de)\r
2077 dec de\r
2078 ld h,a\r
2079 bit 1,b\r
2080 jp z,out.hl\r
2081 jp out.hl.@\r
a16ba2b0
L
2082\r
2083l12b6h:\r
fecee241
L
2084 call prnt_f\r
2085 ld a,0f3h\r
2086 ld (reg.iff),a\r
2087 scf\r
2088 call sub_12d1h\r
2089 ld (reg.f),a\r
2090 ret\r
a16ba2b0
L
2091\r
2092l12c6h:\r
fecee241
L
2093 call prnt_f2\r
2094 and a\r
2095 call sub_12d1h\r
2096 ld (reg.f2),a\r
2097 ret\r
a16ba2b0
L
2098\r
2099sub_12d1h:\r
fecee241
L
2100 ex af,af'\r
2101 ld b,000h\r
2102 call outbl\r
2103 call assert_eol\r
2104 call inline\r
a16ba2b0 2105l12ddh:\r
fecee241
L
2106 call skipbl\r
2107 ld a,b\r
2108 ret z\r
2109 push bc\r
2110 ld hl,tab_pr_flags\r
2111 call lookupch\r
2112 jp nc,error\r
2113 ld a,b\r
2114 cp 008h\r
2115 jr z,l12feh\r
2116 inc b\r
2117 ld a,001h\r
2118 jr l12f7h\r
a16ba2b0 2119l12f6h:\r
fecee241 2120 rlca\r
a16ba2b0 2121l12f7h:\r
fecee241
L
2122 djnz l12f6h\r
2123 pop bc\r
2124 or b\r
2125 ld b,a\r
2126 jr l12ddh\r
a16ba2b0 2127l12feh:\r
fecee241
L
2128 ex af,af'\r
2129 jp nc,ERROR\r
2130 ex af,af'\r
2131 ld a,0FBh\r
2132 ld (reg.iff),a\r
2133 pop bc\r
2134 jr l12ddh\r
a16ba2b0
L
2135\r
2136tab_pr_flags:\r
2137 db 'CNV H ZSE'\r
2138 db 0\r
2139\r
2140sub_1315h:\r
fecee241
L
2141 call sub_0a0eh\r
2142 ret nc\r
2143 ld a,b\r
2144 add a,b\r
2145 add a,b\r
2146 ld hl,b_0x136C_start\r
2147 call ADD_HL_A\r
2148 ld c,(hl)\r
2149 inc hl\r
2150 ld a,(hl)\r
2151 inc hl\r
2152 ld h,(hl)\r
2153 ld l,a\r
2154 scf\r
2155 ret\r
a16ba2b0
L
2156\r
2157b_0x132A_start:\r
29605004
L
2158 if ROMSYS\r
2159 DC 'ROMSEL'\r
2160 endif\r
2161 if CPU_Z180\r
a16ba2b0
L
2162 DC 'CBAR'\r
2163 DC 'BBR'\r
29605004
L
2164 else\r
2165 DC 'BNK'\r
2166 endif\r
a16ba2b0
L
2167 DC 'BC'''\r
2168 DC 'DE'''\r
2169 DC 'HL'''\r
2170 DC 'BC'\r
2171 DC 'DE'\r
2172 DC 'HL'\r
2173 DC 'A'''\r
2174 DC 'B'''\r
2175 DC 'C'''\r
2176 DC 'D'''\r
2177 DC 'E'''\r
2178 DC 'H'''\r
2179 DC 'L'''\r
2180 DC 'A'\r
2181 DC 'B'\r
2182 DC 'C'\r
2183 DC 'D'\r
2184 DC 'E'\r
2185 DC 'H'\r
2186 DC 'L'\r
2187 DC 'IX'\r
2188 DC 'IY'\r
2189 DC 'SP'\r
2190 DC 'PC'\r
2191 DC 'X'\r
2192 DC 'Y'\r
2193 DC 'S'\r
2194 DC 'P'\r
2195 DC 'I'\r
2196 DC 'F'''\r
2197 DC 'F'\r
a16ba2b0
L
2198 DB 0\r
2199b_0x136C_start:\r
8bbf185e
L
2200 if ROMSYS\r
2201 defb 000h\r
2202 defw uromen\r
29605004
L
2203 endif\r
2204 if CPU_Z180\r
8bbf185e
L
2205 defb 000h\r
2206 defw ucbar\r
2207 defb 000h\r
2208 defw ubbr\r
29605004 2209 else\r
8bbf185e
L
2210 defb 000h\r
2211 defw ubnk\r
29605004 2212 endif\r
8bbf185e
L
2213 defb 003h\r
2214 defw reg.c2\r
2215 defb 003h\r
2216 defw reg.e2\r
2217 defb 003h\r
2218 defw reg.l2\r
2219 defb 003h\r
2220 defw reg.c\r
2221 defb 003h\r
2222 defw reg.e\r
2223 defb 003h\r
2224 defw reg.l\r
2225 defb 000h\r
2226 defw reg.a2\r
2227 defb 000h\r
2228 defw reg.b2\r
2229 defb 000h\r
2230 defw reg.c2\r
2231 defb 000h\r
2232 defw reg.d2\r
2233 defb 000h\r
2234 defw reg.e2\r
2235 defb 000h\r
2236 defw reg.h2\r
2237 defb 000h\r
2238 defw reg.l2\r
2239 defb 000h\r
2240 defw reg.a\r
2241 defb 000h\r
2242 defw reg.b\r
2243 defb 000h\r
2244 defw reg.c\r
2245 defb 000h\r
2246 defw reg.d\r
2247 defb 000h\r
2248 defw reg.e\r
2249 defb 000h\r
2250 defw reg.h\r
2251 defb 000h\r
2252 defw reg.l\r
2253 defb 003h\r
2254 defw reg.ix\r
2255 defb 003h\r
2256 defw reg.iy\r
2257 defb 003h\r
2258 defw reg.sp\r
2259 defb 003h\r
2260 defw reg.pc\r
2261 defb 003h\r
2262 defw reg.ix\r
2263 defb 003h\r
2264 defw reg.iy\r
2265 defb 003h\r
2266 defw reg.sp\r
2267 defb 003h\r
2268 defw reg.pc\r
2269 defb 000h\r
2270 defw reg.i\r
2271 defb 000h\r
2272 defw reg.f2\r
2273 defb 000h\r
2274 defw reg.f\r
a16ba2b0 2275CMD.S:\r
8bbf185e
L
2276 ld hl,(lst.S)\r
2277 call get_lastarg_def\r
a16ba2b0 2278l13d8h:\r
8bbf185e
L
2279 ld (lst.S),hl\r
2280 call out.hl.@\r
2281 call OUTBL\r
fecee241 2282 comst\r
8bbf185e 2283 ld a,(hl)\r
a16ba2b0 2284 comend\r
8bbf185e
L
2285 call out.hex\r
2286 call outbl2\r
2287 call INLINE\r
2288 call SKIPBL\r
2289 inc hl\r
2290 jr z,l13d8h\r
2291 dec hl\r
2292 inc de\r
2293 cp '.'\r
2294 jp z,assert_eol\r
2295 cp '-'\r
2296 jr nz,l1406h\r
2297 ld a,(de)\r
2298 or a\r
2299 dec hl\r
2300 jr z,l13d8h\r
2301 inc hl\r
a16ba2b0 2302l1406h:\r
8bbf185e
L
2303 dec de\r
2304 call get_bytes_m\r
2305 jr l13d8h\r
a16ba2b0
L
2306\r
2307CMD.@:\r
8bbf185e
L
2308 call assert_eol\r
2309 ld hl,MSG_at\r
2310 ld de,offs.@\r
2311 ld c,001h\r
2312 jp l1279h\r
a16ba2b0
L
2313MSG_at:\r
2314 dc '@'\r
2315\r
2316CMD.I:\r
8bbf185e
L
2317 ld hl,CMD.I\r
2318 ld (CMD_RPT),hl\r
2319 ld hl,(lst.IP)\r
2320 call get_lastarg_def\r
2321 ld (lst.IP),hl\r
2322 ld b,h\r
2323 ld c,l\r
29605004 2324 if CPU_Z180\r
8bbf185e
L
2325 ld a,b\r
2326 or a\r
2327 jr nz,l1442h\r
2328 ld a,c\r
2329 ld hl,ucbar\r
2330 cp cbar\r
2331 jr z,l143fh\r
2332 ld hl,ubbr\r
2333 cp bbr\r
2334 jr nz,l1442h\r
a16ba2b0 2335l143fh:\r
8bbf185e
L
2336 ld a,(hl)\r
2337 jr l1444h\r
a16ba2b0 2338l1442h:\r
29605004 2339 endif\r
8bbf185e 2340 in a,(c)\r
a16ba2b0 2341l1444h:\r
8bbf185e
L
2342 push af\r
2343 call out.hex\r
2344 call outbl4\r
2345 pop af\r
2346 call out.bin.b\r
2347 jp CRLF\r
a16ba2b0 2348CMD.O:\r
8bbf185e
L
2349 ld hl,CMD.O\r
2350 ld (CMD_RPT),hl\r
2351 ld hl,(lst.OD)\r
2352 call get_arg_def\r
2353 ld a,l\r
2354 ld (lst.OD),a\r
2355 push af\r
2356 call skip_to_nextarg\r
2357 ld hl,(lst.OP)\r
2358 call get_lastarg_def\r
2359 ld (lst.OP),hl\r
2360 ld b,h\r
2361 ld c,l\r
29605004 2362 if CPU_Z180\r
8bbf185e
L
2363 ld a,b\r
2364 or a\r
2365 jr nz,l1489h\r
2366 ld a,c\r
2367 ld hl,ucbar\r
2368 cp cbar\r
2369 jr z,l148dh\r
2370 ld hl,ubbr\r
2371 cp bbr\r
2372 jr z,l148dh\r
2373 cp cbr\r
2374 jp z,ERROR\r
a16ba2b0 2375l1489h:\r
29605004 2376 endif\r
8bbf185e
L
2377 pop af\r
2378 out (c),a\r
fecee241 2379 ret\r
29605004 2380 if CPU_Z180\r
a16ba2b0 2381l148dh:\r
8bbf185e
L
2382 pop af\r
2383 ld (hl),a\r
2384 ret\r
29605004 2385 endif\r
a16ba2b0
L
2386\r
2387CMD.V:\r
8bbf185e 2388 call get_arg3 ;1490 get from, size, to\r
a16ba2b0 2389cmp_mem:\r
8bbf185e 2390 push bc\r
fecee241 2391 comst\r
8bbf185e
L
2392 ld a,(de)\r
2393 ld b,(hl)\r
a16ba2b0 2394 comend\r
8bbf185e
L
2395 cp b\r
2396 jr z,l14bah\r
2397 ld c,a\r
2398 call out.hl.@\r
2399 call OUTBL\r
2400 ld a,b\r
2401 call out.hex\r
2402 call outbl2\r
2403 ld a,c\r
2404 call out.hex\r
2405 call OUTBL\r
2406 ex de,hl\r
2407 call out.hl.@\r
2408 ex de,hl\r
2409 call CRLF\r
a16ba2b0 2410l14bah:\r
8bbf185e
L
2411 pop bc\r
2412 inc hl\r
2413 inc de\r
2414 dec bc\r
2415 ld a,b\r
2416 or c\r
2417 jr nz,cmp_mem\r
fecee241 2418 ret\r
a16ba2b0
L
2419\r
2420CMD.M:\r
8bbf185e
L
2421 ld a,(de)\r
2422 cp 'V'\r
2423 jr nz,bm_nv\r
2424 inc de\r
a16ba2b0 2425bm_nv:\r
8bbf185e
L
2426 push af ;14c9 save 'V' flag\r
2427 call get_arg3\r
2428 push hl\r
2429 push de\r
2430 push bc\r
2431 call CP.HL.DE\r
2432 jr nc,bm_mvdown\r
2433 add hl,bc\r
2434 ex de,hl\r
2435 add hl,bc\r
2436 ex de,hl\r
2437 dec hl\r
2438 dec de\r
fecee241 2439 comst\r
8bbf185e 2440 lddr\r
a16ba2b0 2441 comend\r
8bbf185e 2442 jr bm_done\r
a16ba2b0 2443bm_mvdown:\r
fecee241
L
2444 comst\r
2445 ldir\r
a16ba2b0
L
2446 comend\r
2447bm_done:\r
8bbf185e
L
2448 pop bc\r
2449 pop de\r
2450 pop hl\r
2451 pop af\r
2452 jr z,cmp_mem ;14ed validate?\r
fecee241 2453 ret\r
a16ba2b0 2454CMD.H:\r
8bbf185e 2455 call EXPR\r
9f8d835b 2456 jp c,l173ch ;no parameters, print High and Max\r
8bbf185e
L
2457 call skip_to_nextarg\r
2458 push hl\r
2459 call EXPR\r
2460 push af\r
2461 call assert_eol\r
2462 pop af\r
2463 ex de,hl\r
2464 pop hl\r
2465 jr c,l1511h\r
2466 push hl\r
2467 push de\r
2468 add hl,de\r
2469 call l1511h\r
2470 pop de\r
2471 pop hl\r
2472 and a\r
2473 sbc hl,de\r
a16ba2b0 2474l1511h:\r
8bbf185e
L
2475 call out.hl ;1511 val\r
2476 call outbl2\r
2477 call sub_0928h ;1517 -val\r
2478 call outbl4\r
2479 call out.hl.dec ;151d dec\r
2480 call outbl2\r
2481 call out.hl.decm ;1523 -dec\r
2482 call outbl4\r
2483 call out.bin.w ;1529 bin\r
2484 call outbl2\r
2485 ld a,l\r
2486 call out.ascii\r
2487 jp CRLF\r
a16ba2b0
L
2488\r
2489CMD.Q:\r
fecee241
L
2490 ld a,(de)\r
2491 sub 'J'\r
2492 ld (lst.Qj),a\r
2493 jr nz,l153fh\r
2494 inc de\r
a16ba2b0 2495l153fh:\r
fecee241
L
2496 call get_arg_range\r
2497 push bc\r
2498 push hl\r
2499 call sub_15a7h\r
2500 pop hl\r
a16ba2b0 2501l1548h:\r
fecee241
L
2502 call sub_1594h\r
2503 jr nz,l1562h\r
2504 push bc\r
2505 push hl\r
2506 ld a,(lst.Qj)\r
2507 or a\r
2508 jr nz,l1559h\r
2509 ld bc,-8\r
2510 add hl,bc\r
a16ba2b0 2511l1559h:\r
fecee241
L
2512 ld bc,MEMDUMP_CNT\r
2513 and a\r
2514 call memdump\r
2515 pop hl\r
2516 pop bc\r
a16ba2b0 2517l1562h:\r
fecee241
L
2518 inc hl\r
2519 ex (sp),hl\r
2520 dec hl\r
2521 ld a,h\r
2522 or l\r
2523 ex (sp),hl\r
2524 jr nz,l1548h\r
2525 pop bc\r
2526 ret\r
a16ba2b0
L
2527\r
2528CMD.Z:\r
fecee241
L
2529 call get_arg_range\r
2530 push bc\r
2531 push hl\r
2532 call sub_15a7h\r
2533 ld a,b\r
2534 pop hl\r
2535 pop bc\r
2536 push hl\r
2537 ex de,hl\r
a16ba2b0 2538l1579h:\r
fecee241
L
2539 push af\r
2540 ld a,(hl)\r
2541 comst\r
2542 ld (de),a\r
a16ba2b0 2543 comend\r
fecee241
L
2544 pop af\r
2545 inc de\r
2546 cpi\r
2547 jp po,l1592h\r
2548 dec a\r
2549 jr nz,l1579h\r
2550 pop hl\r
2551 comst\r
2552 ldir\r
a16ba2b0 2553 comend\r
fecee241 2554 ret\r
a16ba2b0 2555l1592h:\r
fecee241
L
2556 pop hl\r
2557 ret\r
a16ba2b0
L
2558\r
2559sub_1594h:\r
fecee241
L
2560 push hl\r
2561 push de\r
2562 push bc\r
a16ba2b0 2563l1597h:\r
fecee241
L
2564 ld a,(de)\r
2565 comst\r
2566 cp (hl)\r
a16ba2b0 2567 comend\r
fecee241
L
2568 jr nz,l15a3h\r
2569 inc de\r
2570 inc hl\r
2571 djnz l1597h\r
a16ba2b0 2572l15a3h:\r
fecee241
L
2573 pop bc\r
2574 pop de\r
2575 pop hl\r
2576 ret\r
a16ba2b0
L
2577\r
2578sub_15a7h:\r
fecee241
L
2579 ld hl,ci.buf+1\r
2580 call get_bytes\r
2581 ld de,ci.buf+1\r
2582 and a\r
2583 sbc hl,de\r
2584 ld b,l\r
2585 ret nz\r
2586 jp ERROR\r
a16ba2b0
L
2587\r
2588get_bytes:\r
2589 db 0e6h ;15b8 and 037h (clear carry, skip next opc)\r
2590get_bytes_m:\r
2591 scf\r
2592l15bah:\r
fecee241
L
2593 push af\r
2594 call skip_to_nextarg\r
2595 cp 'W'\r
2596 jr nz,l15d9h\r
2597 inc de\r
2598 push hl\r
2599 call sub_0a68h\r
2600 ex de,hl\r
2601 pop bc\r
2602 pop af\r
2603 push af\r
2604 push bc\r
2605 ex (sp),hl\r
2606 jr nc,l15d3h\r
2607 comst\r
a16ba2b0 2608l15d3h:\r
fecee241 2609 ld (hl),e\r
a16ba2b0 2610 comend\r
fecee241
L
2611 inc hl\r
2612 ld c,d\r
2613 pop de\r
2614 jr l15e5h\r
a16ba2b0 2615l15d9h:\r
fecee241
L
2616 cp ''''\r
2617 jr z,l15f1h\r
2618 push hl\r
2619 call EXPR\r
2620 ld c,l\r
2621 pop hl\r
2622 jr c,l1626h\r
a16ba2b0 2623l15e5h:\r
fecee241
L
2624 pop af\r
2625 push af\r
2626 jr nc,l15edh\r
2627 comst\r
a16ba2b0 2628l15edh:\r
fecee241 2629 ld (hl),c\r
a16ba2b0 2630 comend\r
fecee241
L
2631 inc hl\r
2632 jr l161eh\r
a16ba2b0 2633l15f1h:\r
fecee241
L
2634 inc de\r
2635 ld a,(de)\r
2636 cp ''''\r
2637 jr z,l1607h\r
2638 or a\r
2639 jr z,l1626h\r
a16ba2b0 2640l15fah:\r
fecee241
L
2641 ld c,a\r
2642 pop af\r
2643 push af\r
2644 jr nc,l1603h\r
2645 comst\r
a16ba2b0 2646l1603h:\r
fecee241 2647 ld (hl),c\r
a16ba2b0 2648 comend\r
fecee241
L
2649 inc hl\r
2650 jr l15f1h\r
a16ba2b0 2651l1607h:\r
fecee241
L
2652 inc de\r
2653 ld a,(de)\r
2654 cp ''''\r
2655 jr z,l15fah\r
2656 cp '.'\r
2657 jr nz,l161eh\r
2658 inc de\r
2659 dec hl\r
2660 pop af\r
2661 push af\r
2662 jr nc,l161bh\r
2663 comst\r
a16ba2b0 2664l161bh:\r
fecee241 2665 set 7,(hl)\r
a16ba2b0 2666 comend\r
fecee241 2667 inc hl\r
a16ba2b0 2668l161eh:\r
fecee241
L
2669 pop af\r
2670 jr nc,l15bah\r
2671 ld (lst.S),hl\r
2672 jr l15bah\r
a16ba2b0
L
2673\r
2674l1626h:\r
fecee241
L
2675 pop af\r
2676 ret nc\r
2677 ld (lst.S),hl\r
2678 ret\r
a16ba2b0
L
2679\r
2680CMD.D:\r
fecee241
L
2681 ld hl,CMD.D\r
2682 ld (CMD_RPT),hl\r
2683 ld hl,(lst.D)\r
2684 ld bc,00080h\r
2685 call sub_0a82h\r
2686 scf\r
a16ba2b0 2687memdump:\r
fecee241
L
2688 push bc\r
2689 push de\r
2690 push hl\r
2691 ex af,af'\r
a16ba2b0 2692l1640h:\r
fecee241
L
2693 call out.hl.@\r
2694 call z,outbl2\r
2695 call OUTBL\r
2696 ld de,0\r
a16ba2b0 2697l164ch:\r
fecee241
L
2698 comst\r
2699 ld a,(hl)\r
a16ba2b0 2700 comend\r
fecee241
L
2701 inc hl\r
2702 call out.hex\r
2703 call OUTBL\r
2704 dec bc\r
2705 inc e\r
2706 ld a,e\r
2707 cp 010h\r
2708 jr z,l1668h\r
2709 and 003h\r
2710 call z,OUTBL\r
2711 ld a,b\r
2712 or c\r
2713 jr nz,l164ch\r
a16ba2b0 2714l1668h:\r
fecee241
L
2715 call OUTBL\r
2716 and a\r
2717 sbc hl,de\r
a16ba2b0 2718l166eh:\r
fecee241
L
2719 comst\r
2720 ld a,(hl)\r
a16ba2b0 2721 comend\r
fecee241
L
2722 call sub_168fh\r
2723 call OUTCHAR\r
2724 inc hl\r
2725 dec e\r
2726 jr nz,l166eh\r
2727 ex af,af'\r
2728 jr nc,l1683h\r
2729 ld (lst.D),hl\r
a16ba2b0 2730l1683h:\r
fecee241
L
2731 ex af,af'\r
2732 call CRLF\r
2733 ld a,b\r
2734 or c\r
2735 jr nz,l1640h\r
2736 pop hl\r
2737 pop de\r
2738 pop bc\r
2739 ret\r
a16ba2b0 2740sub_168fh:\r
fecee241
L
2741 and 07fh\r
2742 cp 07fh\r
2743 jr z,l1698h\r
2744 cp 020h\r
2745 ret nc\r
a16ba2b0 2746l1698h:\r
fecee241
L
2747 ld a,02eh\r
2748 ret\r
a16ba2b0
L
2749\r
2750; Read Intel Hex File from console.\r
a16ba2b0 2751CMD.R:\r
fecee241 2752 ld hl,0\r
3531528e 2753 call get_lastarg_def ;169e get offset from command line\r
fecee241
L
2754 push hl\r
2755 ld hl,0\r
2756 ld (HILOD),hl\r
a16ba2b0 2757w_recstart:\r
fecee241
L
2758 call i.getchar\r
2759 jr z,l16deh\r
2760 cp ':'\r
2761 jr nz,w_recstart\r
a16ba2b0
L
2762 ld c,0 ;16b1 init checksum\r
2763 call i.gethexbyte ;16b3 record len\r
fecee241 2764 ld b,a\r
a16ba2b0 2765 call i.gethexbyte ;16b7 address high\r
fecee241 2766 ld h,a\r
a16ba2b0 2767 call i.gethexbyte ;16bb address low\r
fecee241 2768 ld l,a\r
a16ba2b0 2769 call i.gethexbyte ;16bf record type (ignored)\r
fecee241 2770 ld a,b\r
a16ba2b0 2771 and a ;16c3 record len == 0?\r
fecee241 2772 jr z,l16deh\r
a16ba2b0 2773l16c6h:\r
fecee241 2774 call i.gethexbyte\r
3531528e 2775 pop de ;16c9 offset\r
fecee241
L
2776 push de\r
2777 push hl\r
2778 add hl,de\r
2779 call i.storebyte\r
2780 pop hl\r
2781 inc hl\r
3531528e
L
2782 djnz l16c6h ;16d2 repeat for record len\r
2783 call i.gethexbyte ;16d4 checksum\r
fecee241
L
2784 ld a,c\r
2785 and a\r
a16ba2b0
L
2786 jp nz,ERROR ;16d9 exit if checksum error\r
2787 jr w_recstart ;16dc next record\r
2788l16deh:\r
fecee241
L
2789 pop hl\r
2790 call i.gethexbyte\r
2791 jp l173fh\r
a16ba2b0
L
2792\r
2793i.gethexbyte:\r
fecee241
L
2794 call sub_16f6h\r
2795 rlca\r
2796 rlca\r
2797 rlca\r
2798 rlca\r
2799 ld d,a\r
2800 call sub_16f6h\r
2801 add a,d\r
2802 ld d,a\r
2803 add a,c\r
2804 ld c,a\r
2805 ld a,d\r
2806 ret\r
a16ba2b0
L
2807\r
2808sub_16f6h:\r
fecee241
L
2809 call i.getchar\r
2810 jr z,l16ffh\r
2811 call sub_0d26h\r
2812 ret nc\r
a16ba2b0 2813l16ffh:\r
fecee241 2814 jp ERROR\r
a16ba2b0
L
2815\r
2816i.getchar:\r
fecee241
L
2817 call $ci\r
2818 cp 01ah\r
2819 ret\r
a16ba2b0
L
2820\r
2821i.storebyte:\r
fecee241
L
2822 push af\r
2823 push de\r
3531528e 2824 ld de,TPA ;170a lowest allowed load address\r
fecee241
L
2825 call CP.HL.DE\r
2826 jp c,ERROR\r
3531528e 2827 ld de,$stcka ;1713 highest allowed load address\r
fecee241
L
2828 call CP.HL.DE\r
2829 jp nc,ERROR\r
2830 ld de,(HILOD)\r
2831 call CP.HL.DE\r
2832 jr c,l1728h\r
2833 ld (HILOD),hl\r
a16ba2b0 2834l1728h:\r
fecee241
L
2835 ld de,(MAXLOD)\r
2836 call CP.HL.DE\r
2837 jr c,l1734h\r
2838 ld (MAXLOD),hl\r
a16ba2b0 2839l1734h:\r
fecee241
L
2840 pop de\r
2841 pop af\r
2842 comst\r
3531528e 2843 ld (hl),a ;173a store byte\r
a16ba2b0 2844 comend\r
fecee241 2845 ret\r
a16ba2b0
L
2846\r
2847l173ch:\r
fecee241 2848 call assert_eol\r
a16ba2b0 2849l173fh:\r
fecee241
L
2850 ld hl,MSG_high\r
2851 call PSTR\r
2852 ld hl,(HILOD)\r
2853 call out.hl\r
2854 ld hl,MSG_max\r
2855 call PSTR\r
2856 ld hl,(MAXLOD)\r
2857 call out.hl\r
2858 jp CRLF\r
a16ba2b0
L
2859\r
2860MSG_high:\r
2861 DC 'High = '\r
2862MSG_max:\r
2863 DC ' Max = '\r
2864\r
2865CMD.A:\r
fecee241
L
2866 ld hl,(lst.A)\r
2867 call get_lastarg_def\r
2868 push hl\r
2869 pop iy\r
2870 ld hl,l17c4h\r
2871 ld (CMD_ERR),hl\r
2872 ld (XB068),sp\r
a16ba2b0 2873l177ch:\r
fecee241
L
2874 push iy\r
2875 pop hl\r
2876 ld (lst.A),hl\r
2877 ld (OFFS.pc),hl\r
2878 push hl\r
2879 call sub_1f3fh\r
2880 pop iy\r
2881 ld c,b\r
2882 ld de,(offs.@)\r
2883 ld a,d\r
2884 or e\r
2885 ld b,011h\r
2886 jr z,l1798h\r
2887 ld b,019h\r
a16ba2b0 2888l1798h:\r
fecee241
L
2889 call OUTBL\r
2890 ld a,(CON.COL)\r
2891 cp b\r
2892 jr c,l1798h\r
2893 push bc\r
2894 call INLINE\r
2895 pop bc\r
2896 call SKIPBL\r
2897 cp '.'\r
2898 ret z\r
2899 cp '-'\r
2900 jr nz,l17b6h\r
2901 ld iy,(XB06C)\r
2902 jr l177ch\r
a16ba2b0 2903l17b6h:\r
fecee241
L
2904 and a\r
2905 call nz,sub_17cdh\r
2906 ld (XB06C),iy\r
2907 ld b,0\r
2908 add iy,bc\r
2909 jr l177ch\r
a16ba2b0 2910l17c4h:\r
fecee241
L
2911 call l07eah\r
2912 ld sp,(XB068)\r
2913 jr l177ch\r
a16ba2b0
L
2914\r
2915sub_17cdh:\r
fecee241
L
2916 call SKIPBL\r
2917 ld hl,t_MNEMONICS\r
2918 call sub_0a15h\r
2919 jp nc,ERROR\r
2920 call SKIPBL\r
2921 push de\r
2922 ld a,b\r
2923 add a,b\r
2924 add a,b\r
2925 ld hl,b_0x17EE_start\r
2926 call ADD_HL_A\r
2927 ld e,(hl)\r
2928 inc hl\r
2929 ld d,(hl)\r
2930 inc hl\r
2931 ld b,(hl)\r
2932 ex de,hl\r
2933 pop de\r
2934 jp (hl)\r
a16ba2b0
L
2935\r
2936b_0x17EE_start:\r
fecee241 2937 defw l1b54h\r
fecee241 2938 defb 088h\r
fecee241 2939 defw l1b74h\r
fecee241 2940 defb 080h\r
fecee241 2941 defw l1babh\r
fecee241 2942 defb 0a0h\r
fecee241 2943 defw l1c14h\r
fecee241 2944 defb 040h\r
fecee241 2945 defw l1c38h\r
fecee241 2946 defb 0c4h\r
fecee241 2947 defw l1b36h\r
fecee241 2948 defb 03fh\r
fecee241 2949 defw l1babh\r
fecee241 2950 defb 0b8h\r
fecee241 2951 defw gen.opc.ED2\r
fecee241 2952 defb 0a9h\r
fecee241 2953 defw gen.opc.ED2\r
fecee241 2954 defb 0b9h\r
fecee241 2955 defw gen.opc.ED2\r
fecee241 2956 defb 0a1h\r
fecee241 2957 defw gen.opc.ED2\r
fecee241 2958 defb 0b1h\r
fecee241 2959 defw l1b36h\r
fecee241 2960 defb 02fh\r
fecee241 2961 defw l1b36h\r
fecee241 2962 defb 027h\r
fecee241 2963 defw l1dabh\r
fecee241 2964 defb 005h\r
fecee241 2965 defw l1b36h\r
fecee241 2966 defb 0f3h\r
fecee241 2967 defw l1ca4h\r
fecee241 2968 defb 010h\r
fecee241 2969 defw l1b36h\r
fecee241 2970 defb 0fbh\r
fecee241 2971 defw l1d54h\r
fecee241 2972 defb 0e3h\r
fecee241 2973 defw l1b36h\r
fecee241 2974 defb 0d9h\r
fecee241 2975 defw l1b36h\r
fecee241 2976 defb 076h\r
fecee241 2977 defw l1cbfh\r
fecee241 2978 defb 046h\r
fecee241 2979 defw l1cf8h\r
fecee241 2980 defb 040h\r
fecee241 2981 defw l1dabh\r
fecee241 2982 defb 004h\r
fecee241 2983 defw gen.opc.ED2\r
fecee241 2984 defb 0aah\r
fecee241 2985 defw gen.opc.ED2\r
fecee241 2986 defb 0bah\r
fecee241 2987 defw gen.opc.ED2\r
fecee241 2988 defb 0a2h\r
fecee241 2989 defw gen.opc.ED2\r
fecee241 2990 defb 0b2h\r
fecee241 2991 defw l1c5eh\r
fecee241 2992 defb 0c2h\r
fecee241 2993 defw l1cabh\r
fecee241 2994 defb 020h\r
fecee241 2995 defw l1934h\r
fecee241 2996 defb 040h\r
fecee241 2997 defw gen.opc.ED2\r
fecee241 2998 defb 0a8h\r
fecee241 2999 defw gen.opc.ED2\r
fecee241 3000 defb 0b8h\r
fecee241 3001 defw gen.opc.ED2\r
fecee241 3002 defb 0a0h\r
fecee241 3003 defw gen.opc.ED2\r
fecee241 3004 defb 0b0h\r
fecee241 3005 defw gen.opc.ED2\r
fecee241 3006 defb 044h\r
fecee241 3007 defw l1b36h\r
fecee241 3008 defb 000h\r
fecee241 3009 defw l1babh\r
fecee241 3010 defb 0b0h\r
fecee241 3011 defw gen.opc.ED2\r
fecee241 3012 defb 0bbh\r
fecee241 3013 defw gen.opc.ED2\r
fecee241 3014 defb 0b3h\r
fecee241 3015 defw l1d2ch\r
fecee241 3016 defb 041h\r
fecee241 3017 defw gen.opc.ED2\r
fecee241 3018 defb 0abh\r
fecee241 3019 defw gen.opc.ED2\r
fecee241 3020 defb 0a3h\r
fecee241 3021 defw l1ce4h\r
fecee241 3022 defb 0c1h\r
fecee241 3023 defw l1ce4h\r
fecee241 3024 defb 0c5h\r
fecee241 3025 defw l1c14h\r
fecee241 3026 defb 080h\r
fecee241 3027 defw l1c50h\r
fecee241 3028 defb 0c0h\r
fecee241 3029 defw gen.opc.ED2\r
fecee241 3030 defb 04dh\r
fecee241 3031 defw gen.opc.ED2\r
fecee241 3032 defb 045h\r
fecee241 3033 defw l1bd8h\r
fecee241 3034 defb 010h\r
fecee241 3035 defw l1b36h\r
fecee241 3036 defb 017h\r
fecee241 3037 defw l1bd8h\r
fecee241 3038 defb 000h\r
fecee241 3039 defw l1b36h\r
fecee241 3040 defb 007h\r
fecee241 3041 defw gen.opc.ED2\r
fecee241 3042 defb 06fh\r
fecee241 3043 defw l1bd8h\r
fecee241 3044 defb 018h\r
fecee241 3045 defw l1b36h\r
fecee241 3046 defb 01fh\r
fecee241 3047 defw l1bd8h\r
fecee241 3048 defb 008h\r
fecee241 3049 defw l1b36h\r
fecee241 3050 defb 00fh\r
fecee241 3051 defw gen.opc.ED2\r
fecee241 3052 defb 067h\r
fecee241 3053 defw l1cd5h\r
fecee241 3054 defb 0c7h\r
fecee241 3055 defw l1b54h\r
fecee241 3056 defb 098h\r
fecee241 3057 defw l1b36h\r
fecee241 3058 defb 037h\r
fecee241 3059 defw l1c14h\r
fecee241 3060 defb 0c0h\r
fecee241 3061 defw l1bd8h\r
fecee241 3062 defb 020h\r
fecee241 3063 defw l1bd8h\r
fecee241 3064 defb 028h\r
fecee241 3065 defw l1bd8h\r
fecee241 3066 defb 038h\r
fecee241 3067 defw l1babh\r
fecee241 3068 defb 090h\r
fecee241 3069 defw l1babh\r
fecee241 3070 defb 0a8h\r
fecee241 3071 defw A.IN0\r
fecee241 3072 defb 000h\r
fecee241 3073 defw A.MLT\r
a16ba2b0 3074b_0x18BC_start:\r
fecee241
L
3075 defb 04ch\r
3076 ld b,e\r
3077 dec de\r
a16ba2b0
L
3078\r
3079b_0x18BF_start:\r
fecee241 3080 defb 08bh\r
fecee241 3081 defw gen.opc.ED2\r
fecee241 3082 defb 09bh\r
fecee241 3083 defw gen.opc.ED2\r
fecee241 3084 defb 083h\r
fecee241 3085 defw gen.opc.ED2\r
fecee241 3086 defb 093h\r
fecee241 3087 defw l18fdh\r
fecee241 3088 defb 001h\r
fecee241 3089 defw gen.opc.ED2\r
fecee241 3090 defb 076h\r
fecee241 3091 defw l191dh\r
fecee241 3092 defb 004h\r
fecee241 3093 defw l192ch\r
fecee241 3094 defb 074h\r
a16ba2b0 3095A.IN0:\r
fecee241
L
3096 call sub_1e41h\r
3097 jr nc,l1931h\r
3098 cp 006h\r
3099 jr z,l1931h\r
3100 rlca\r
3101 rlca\r
3102 rlca\r
3103 add a,b\r
3104 ld b,a\r
3105 call sub_1ed1h\r
3106 call sub_1e06h\r
a16ba2b0 3107l18e9h:\r
fecee241
L
3108 call assert_eol\r
3109 comst\r
3110 ld (iy+000h),0edh\r
3111 ld (iy+001h),b\r
3112 ld (iy+002h),l\r
a16ba2b0 3113 comend\r
fecee241
L
3114 ld c,003h\r
3115 ret\r
a16ba2b0 3116l18fdh:\r
fecee241
L
3117 call sub_1e06h\r
3118 call sub_1ed1h\r
3119 call sub_1e41h\r
3120 jr nc,l1931h\r
3121 cp 006h\r
3122 jr z,l1931h\r
3123 rlca\r
3124 rlca\r
3125 rlca\r
3126 add a,b\r
3127 ld b,a\r
3128 jr l18e9h\r
a16ba2b0 3129A.MLT:\r
fecee241
L
3130 call sub_1e2eh\r
3131 jr nc,l1931h\r
3132 add a,b\r
3133 ld b,a\r
3134 jp gen.opc.ED2\r
a16ba2b0 3135l191dh:\r
fecee241
L
3136 call sub_1e41h\r
3137 jr nc,l192ah\r
3138 rlca\r
3139 rlca\r
3140 rlca\r
3141 add a,b\r
3142 ld b,a\r
3143 jp gen.opc.ED2\r
a16ba2b0 3144l192ah:\r
fecee241 3145 ld b,064h\r
a16ba2b0 3146l192ch:\r
fecee241
L
3147 call sub_1e12h\r
3148 jr l18e9h\r
a16ba2b0 3149l1931h:\r
fecee241 3150 jp ERROR\r
a16ba2b0 3151l1934h:\r
fecee241
L
3152 call sub_1e41h\r
3153 jp c,l19bfh\r
3154 call sub_1e68h\r
3155 jp c,l1a64h\r
3156 call sub_1e2eh\r
3157 jp c,l1a93h\r
3158 call sub_1e50h\r
3159 jp c,l1af0h\r
3160 ld a,(de)\r
3161 cp 049h\r
3162 jp z,l1b0ch\r
3163 cp 052h\r
3164 jp z,l1b14h\r
3165 cp 028h\r
3166 jp nz,ERROR\r
3167 inc de\r
3168 call sub_1e2eh\r
3169 jp c,l1b23h\r
3170 call tst_EXPR\r
3171 call sub_1ed8h\r
3172 call sub_1ed1h\r
3173 call sub_1e2eh\r
3174 jr c,l19adh\r
3175 call sub_1e50h\r
3176 jr nc,l1991h\r
3177 ld b,022h\r
a16ba2b0 3178l1978h:\r
fecee241
L
3179 call assert_eol\r
3180 ld a,(pfx.IXY)\r
a16ba2b0 3181l197eh:\r
fecee241
L
3182 comst\r
3183 ld (iy+000h),a\r
3184 ld (iy+001h),b\r
3185 ld (iy+002h),l\r
3186 ld (iy+003h),h\r
a16ba2b0 3187 comend\r
fecee241
L
3188 ld c,004h\r
3189 ret\r
a16ba2b0 3190l1991h:\r
fecee241
L
3191 ld a,(de)\r
3192 cp 041h\r
3193 jp nz,ERROR\r
3194 inc de\r
3195 ld b,032h\r
a16ba2b0 3196l199ah:\r
fecee241
L
3197 call assert_eol\r
3198 comst\r
3199 ld (iy+000h),b\r
3200 ld (iy+001h),l\r
3201 ld (iy+002h),h\r
a16ba2b0 3202 comend\r
fecee241
L
3203 ld c,003h\r
3204 ret\r
a16ba2b0 3205l19adh:\r
fecee241
L
3206 cp 020h\r
3207 jr z,l19bbh\r
3208 add a,043h\r
3209 ld b,a\r
a16ba2b0 3210l19b4h:\r
fecee241
L
3211 call assert_eol\r
3212 ld a,0edh\r
3213 jr l197eh\r
a16ba2b0 3214l19bbh:\r
fecee241
L
3215 ld b,022h\r
3216 jr l199ah\r
a16ba2b0 3217l19bfh:\r
fecee241
L
3218 ld b,a\r
3219 call sub_1ed1h\r
3220 call sub_1e41h\r
3221 jr nc,l19dbh\r
3222 push af\r
3223 ld a,b\r
3224 rlca\r
3225 rlca\r
3226 rlca\r
3227 ld b,a\r
3228 pop af\r
3229 add a,b\r
3230 add a,040h\r
3231 cp 076h\r
3232 jp z,ERROR\r
a16ba2b0 3233l19d7h:\r
fecee241
L
3234 ld b,a\r
3235 jp l1b36h\r
a16ba2b0 3236l19dbh:\r
fecee241
L
3237 call sub_1e68h\r
3238 jr nc,l1a02h\r
3239 ld a,b\r
3240 rlca\r
3241 rlca\r
3242 rlca\r
3243 add a,046h\r
3244 cp 076h\r
3245 jp z,ERROR\r
a16ba2b0 3246l19ebh:\r
fecee241
L
3247 ld b,a\r
3248 call assert_eol\r
3249 ld a,(pfx.IXY)\r
3250 comst\r
3251 ld (iy+000h),a\r
3252 ld (iy+001h),b\r
3253 ld (iy+002h),c\r
a16ba2b0 3254 comend\r
fecee241
L
3255 ld c,003h\r
3256 ret\r
a16ba2b0 3257l1a02h:\r
fecee241
L
3258 ld a,(de)\r
3259 cp 'I'\r
3260 jr z,l1a15h\r
3261 cp 'R'\r
3262 jr nz,l1a21h\r
3263 ld a,b\r
3264 cp 007h\r
3265 jp nz,ERROR\r
3266 ld b,05fh\r
3267 jr l1a1dh\r
a16ba2b0 3268l1a15h:\r
fecee241
L
3269 ld a,b\r
3270 cp 007h\r
3271 jp nz,ERROR\r
3272 ld b,057h\r
a16ba2b0 3273l1a1dh:\r
fecee241
L
3274 inc de\r
3275 jp gen.opc.ED2\r
a16ba2b0 3276l1a21h:\r
fecee241
L
3277 cp '('\r
3278 jr z,l1a3fh\r
3279 call sub_1e12h\r
a16ba2b0 3280 ld a,b ;1a28 ld r,nn\r
fecee241
L
3281 rlca\r
3282 rlca\r
3283 rlca\r
3284 add a,006h\r
a16ba2b0 3285l1a2eh:\r
fecee241 3286 ld b,a\r
a16ba2b0 3287l1a2fh:\r
fecee241
L
3288 call assert_eol\r
3289 comst\r
3290 ld (iy+000h),b\r
3291 ld (iy+001h),l\r
a16ba2b0 3292 comend\r
fecee241
L
3293 ld c,002h\r
3294 ret\r
a16ba2b0 3295l1a3fh:\r
fecee241
L
3296 inc de\r
3297 ld a,b\r
3298 cp 007h\r
3299 jp nz,ERROR\r
3300 call sub_1e2eh\r
3301 jr nc,l1a59h\r
3302 cp 030h\r
3303 jp nc,ERROR\r
3304 add a,00ah\r
3305 ld b,a\r
3306 call sub_1ed8h\r
3307 jp l1b36h\r
a16ba2b0 3308l1a59h:\r
fecee241
L
3309 call tst_EXPR\r
3310 call sub_1ed8h\r
3311 ld b,03ah\r
3312 jp l199ah\r
a16ba2b0 3313l1a64h:\r
fecee241
L
3314 call sub_1ed1h\r
3315 call sub_1e41h\r
3316 jr nc,l1a76h\r
3317 cp 006h\r
3318 jp z,ERROR\r
3319 add a,070h\r
3320 jp l19ebh\r
a16ba2b0 3321l1a76h:\r
fecee241
L
3322 call sub_1e12h\r
3323 call assert_eol\r
3324 ld a,(pfx.IXY)\r
3325 comst\r
a16ba2b0 3326 ld (iy+000h),a ;1a83 dd/fd\r
fecee241 3327 ld (iy+001h),036h\r
a16ba2b0
L
3328 ld (iy+002h),c ;1a8a displacement\r
3329 ld (iy+003h),l ;1a8d nn\r
3330 comend\r
fecee241
L
3331 ld c,4\r
3332 ret\r
a16ba2b0 3333l1a93h:\r
fecee241
L
3334 ld b,a\r
3335 call sub_1ed1h\r
3336 ld hl,t_HL.AF\r
3337 call sub_0a23h\r
3338 jr c,l1abeh\r
3339 call sub_1e50h\r
3340 jr nc,l1ac7h\r
3341 ld a,b\r
3342 cp 030h\r
3343 jr nz,l1b20h\r
3344 ld b,0f9h\r
a16ba2b0 3345l1aabh:\r
fecee241
L
3346 call assert_eol\r
3347 ld a,(pfx.IXY)\r
3348 comst\r
3349 ld (iy+000h),a\r
3350 ld (iy+001h),b\r
a16ba2b0 3351 comend\r
fecee241
L
3352 ld c,002h\r
3353 ret\r
a16ba2b0 3354l1abeh:\r
fecee241
L
3355 ld a,b\r
3356 cp 030h\r
3357 jr nz,l1b20h\r
3358 ld b,0f9h\r
3359 jr l1b36h\r
a16ba2b0 3360l1ac7h:\r
fecee241
L
3361 ld a,(de)\r
3362 cp 028h\r
3363 jr nz,l1ae3h\r
3364 inc de\r
3365 call tst_EXPR\r
3366 call sub_1ed8h\r
3367 ld a,b\r
3368 cp 020h\r
3369 jr z,l1adeh\r
3370 add a,04bh\r
3371 ld b,a\r
3372 jp l19b4h\r
a16ba2b0 3373l1adeh:\r
fecee241
L
3374 ld b,02ah\r
3375 jp l199ah\r
a16ba2b0 3376l1ae3h:\r
fecee241
L
3377 call tst_EXPR\r
3378 call assert_eol\r
3379 ld a,001h\r
3380 add a,b\r
3381 ld b,a\r
3382 jp l199ah\r
a16ba2b0 3383l1af0h:\r
fecee241
L
3384 call sub_1ed1h\r
3385 ld a,(de)\r
3386 cp 028h\r
3387 jr nz,l1b04h\r
3388 inc de\r
3389 call tst_EXPR\r
3390 call sub_1ed8h\r
3391 ld b,02ah\r
3392 jp l1978h\r
a16ba2b0 3393l1b04h:\r
fecee241
L
3394 call tst_EXPR\r
3395 ld b,021h\r
3396 jp l1978h\r
a16ba2b0 3397l1b0ch:\r
fecee241
L
3398 inc de\r
3399 call sub_1ed1h\r
3400 ld b,047h\r
3401 jr l1b1ah\r
a16ba2b0 3402l1b14h:\r
fecee241
L
3403 inc de\r
3404 call sub_1ed1h\r
3405 ld b,04fh\r
a16ba2b0 3406l1b1ah:\r
fecee241
L
3407 ld a,(de)\r
3408 inc de\r
3409 cp 041h\r
3410 jr z,gen.opc.ED2\r
a16ba2b0 3411l1b20h:\r
fecee241 3412 jp ERROR\r
a16ba2b0 3413l1b23h:\r
fecee241
L
3414 cp 020h\r
3415 jr nc,l1b20h\r
3416 add a,002h\r
3417 ld b,a\r
3418 call sub_1ed8h\r
3419 call sub_1ed1h\r
3420 ld a,(de)\r
3421 cp 041h\r
3422 jr nz,l1b20h\r
3423 inc de\r
a16ba2b0 3424l1b36h:\r
fecee241
L
3425 call assert_eol\r
3426 comst\r
3427 ld (iy+000h),b\r
a16ba2b0 3428 comend\r
fecee241
L
3429 ld c,001h\r
3430 ret\r
a16ba2b0 3431gen.opc.ED2:\r
fecee241
L
3432 call assert_eol\r
3433 comst\r
3434 ld (iy+000h),0edh\r
3435 ld (iy+001h),b\r
a16ba2b0 3436 comend\r
fecee241
L
3437 ld c,002h\r
3438 ret\r
a16ba2b0 3439l1b54h:\r
fecee241
L
3440 ld hl,t_HL.AF\r
3441 call sub_0a23h\r
3442 jr nc,l1babh\r
3443 call sub_1ed1h\r
3444 call sub_1e2eh\r
3445 jp nc,ERROR\r
3446 push af\r
3447 ld a,b\r
3448 cp 088h\r
3449 ld b,04ah\r
3450 jr z,l1b6fh\r
3451 ld b,042h\r
a16ba2b0 3452l1b6fh:\r
fecee241
L
3453 pop af\r
3454 add a,b\r
a16ba2b0 3455l1b71h:\r
fecee241
L
3456 ld b,a\r
3457 jr gen.opc.ED2\r
a16ba2b0 3458l1b74h:\r
fecee241
L
3459 ld hl,t_HL.AF\r
3460 call sub_0a23h\r
3461 jr c,l1b9dh\r
3462 call sub_1e50h\r
3463 jr nc,l1babh\r
3464 call sub_1ed1h\r
3465 ld hl,t_BC.DE.IX.SP\r
3466 ld a,(pfx.IXY)\r
3467 cp 0fdh\r
3468 jr nz,l1b91h\r
3469 ld hl,t_BC.DE.IY.SP\r
a16ba2b0 3470l1b91h:\r
fecee241
L
3471 call sub_1e2bh\r
3472 jp nc,ERROR\r
3473 add a,009h\r
a16ba2b0 3474l1b99h:\r
fecee241
L
3475 ld b,a\r
3476 jp l1aabh\r
a16ba2b0 3477l1b9dh:\r
fecee241
L
3478 call sub_1ed1h\r
3479 call sub_1e2eh\r
3480 jp nc,ERROR\r
3481 add a,009h\r
3482 jp l19d7h\r
a16ba2b0 3483l1babh:\r
fecee241
L
3484 ld a,(de)\r
3485 cp 041h\r
3486 jr nz,l1bbbh\r
3487 push de\r
3488 inc de\r
3489 call skip_to_nextarg\r
3490 jr z,l1bbah\r
3491 pop de\r
3492 jr l1bbbh\r
a16ba2b0 3493l1bbah:\r
fecee241 3494 pop af\r
a16ba2b0 3495l1bbbh:\r
fecee241
L
3496 call sub_1e41h\r
3497 jr c,l1bceh\r
3498 call sub_1e68h\r
3499 jr c,l1bd2h\r
3500 call sub_1e12h\r
3501 ld a,b\r
3502 add a,046h\r
3503 jp l1a2eh\r
a16ba2b0 3504l1bceh:\r
fecee241
L
3505 add a,b\r
3506 jp l19d7h\r
a16ba2b0 3507l1bd2h:\r
fecee241
L
3508 ld a,b\r
3509 add a,006h\r
3510 jp l19ebh\r
a16ba2b0 3511l1bd8h:\r
fecee241
L
3512 call sub_1e41h\r
3513 jr c,l1c01h\r
3514 call sub_1e68h\r
3515 jp nc,ERROR\r
3516 ld a,b\r
3517 add a,006h\r
3518 ld b,a\r
a16ba2b0 3519l1be7h:\r
fecee241
L
3520 call assert_eol\r
3521 ld a,(pfx.IXY)\r
3522 comst\r
3523 ld (iy+000h),a\r
3524 ld (iy+001h),0cbh\r
3525 ld (iy+002h),c\r
3526 ld (iy+003h),b\r
a16ba2b0 3527 comend\r
fecee241
L
3528 ld c,004h\r
3529 ret\r
a16ba2b0 3530l1c01h:\r
fecee241 3531 add a,b\r
a16ba2b0 3532l1c02h:\r
fecee241
L
3533 ld b,a\r
3534 call assert_eol\r
3535 comst\r
3536 ld (iy+000h),0cbh\r
3537 ld (iy+001h),b\r
a16ba2b0 3538 comend\r
fecee241
L
3539 ld c,002h\r
3540 ret\r
a16ba2b0 3541l1c14h:\r
fecee241
L
3542 call sub_1de6h\r
3543 call sub_1ed1h\r
3544 call sub_1e41h\r
3545 jr c,l1c2fh\r
3546 call sub_1e68h\r
3547 jp nc,ERROR\r
3548 ld a,l\r
3549 rlca\r
3550 rlca\r
3551 rlca\r
3552 add a,006h\r
3553 add a,b\r
3554 ld b,a\r
3555 jr l1be7h\r
a16ba2b0 3556l1c2fh:\r
fecee241
L
3557 add a,b\r
3558 ld b,a\r
3559 ld a,l\r
3560 rlca\r
3561 rlca\r
3562 rlca\r
3563 add a,b\r
3564 jr l1c02h\r
a16ba2b0 3565l1c38h:\r
fecee241
L
3566 push de\r
3567 call sub_1eb8h\r
3568 jr nc,l1c47h\r
3569 add a,b\r
3570 ld b,a\r
3571 call skip_to_nextarg\r
3572 jr z,l1c49h\r
3573 pop de\r
3574 push de\r
a16ba2b0 3575l1c47h:\r
fecee241 3576 ld b,0cdh\r
a16ba2b0 3577l1c49h:\r
fecee241
L
3578 pop af\r
3579 call tst_EXPR\r
3580 jp l199ah\r
a16ba2b0 3581l1c50h:\r
fecee241
L
3582 call sub_1eb8h\r
3583 jr nc,l1c59h\r
3584 add a,b\r
3585 ld b,a\r
3586 jr l1c5bh\r
a16ba2b0 3587l1c59h:\r
fecee241 3588 ld b,0c9h\r
a16ba2b0 3589l1c5bh:\r
fecee241 3590 jp l1b36h\r
a16ba2b0 3591l1c5eh:\r
fecee241
L
3592 push de\r
3593 call sub_1eb8h\r
3594 jr c,l1c71h\r
a16ba2b0 3595l1c64h:\r
fecee241
L
3596 pop de\r
3597 ld hl,b_0x1C97_start\r
3598 call sub_0a15h\r
3599 jr c,l1c7fh\r
3600 ld b,0c3h\r
3601 jr l1c79h\r
a16ba2b0 3602l1c71h:\r
fecee241
L
3603 add a,b\r
3604 ld b,a\r
3605 call skip_to_nextarg\r
3606 jr nz,l1c64h\r
3607 pop af\r
a16ba2b0 3608l1c79h:\r
fecee241
L
3609 call tst_EXPR\r
3610 jp l199ah\r
a16ba2b0 3611l1c7fh:\r
fecee241
L
3612 call assert_eol\r
3613 ld a,b\r
3614 and a\r
3615 jr nz,l1c8bh\r
3616 ld b,0e9h\r
3617 jp l1b36h\r
a16ba2b0 3618l1c8bh:\r
fecee241
L
3619 ld b,0ddh\r
3620 dec a\r
3621 jr z,l1c92h\r
3622 ld b,0fdh\r
a16ba2b0 3623l1c92h:\r
fecee241
L
3624 ld l,0e9h\r
3625 jp l1a2fh\r
a16ba2b0
L
3626\r
3627b_0x1C97_start:\r
3628 DC '(HL)'\r
3629 DC '(IX)'\r
3630 DC '(IY)'\r
3631 DB 0\r
3632\r
3633l1ca4h:\r
fecee241
L
3634 call skip_to_nextarg\r
3635 ld b,010h\r
3636 jr l1cb9h\r
a16ba2b0 3637l1cabh:\r
fecee241
L
3638 call sub_1ebfh\r
3639 jr c,l1cb4h\r
3640 ld b,018h\r
3641 jr l1cb9h\r
a16ba2b0 3642l1cb4h:\r
fecee241
L
3643 add a,b\r
3644 ld b,a\r
3645 call sub_1ed1h\r
a16ba2b0 3646l1cb9h:\r
fecee241
L
3647 call sub_1defh\r
3648 jp l1a2fh\r
a16ba2b0 3649l1cbfh:\r
fecee241
L
3650 call sub_1e12h\r
3651 ld a,l\r
3652 cp 003h\r
3653 jr nc,l1d23h\r
3654 and a\r
3655 jr z,l1cd2h\r
3656 ld b,056h\r
3657 cp 001h\r
3658 jr z,l1cd2h\r
3659 ld b,05eh\r
a16ba2b0 3660l1cd2h:\r
fecee241 3661 jp gen.opc.ED2\r
a16ba2b0 3662l1cd5h:\r
fecee241
L
3663 call sub_1e12h\r
3664 ld a,l\r
3665 push af\r
3666 add a,b\r
3667 ld b,a\r
3668 pop af\r
3669 and 0c7h\r
3670 jr nz,l1d23h\r
3671 jp l1b36h\r
a16ba2b0 3672l1ce4h:\r
fecee241
L
3673 call sub_1e50h\r
3674 jr c,l1cf2h\r
3675 call sub_1e25h\r
3676 jr nc,l1d23h\r
3677 add a,b\r
3678 jp l19d7h\r
a16ba2b0 3679l1cf2h:\r
fecee241
L
3680 ld a,b\r
3681 add a,020h\r
3682 jp l1b99h\r
a16ba2b0 3683l1cf8h:\r
fecee241
L
3684 call sub_1e41h\r
3685 jr nc,l1d23h\r
3686 cp 006h\r
3687 jr z,l1d23h\r
3688 rlca\r
3689 rlca\r
3690 rlca\r
3691 add a,b\r
3692 ld b,a\r
3693 cp 078h\r
3694 jr nz,l1d1ah\r
3695 call sub_1ed1h\r
3696 call sub_1d26h\r
3697 jr c,l1d20h\r
3698 call sub_1e06h\r
3699 ld b,0dbh\r
3700 jp l1a2fh\r
a16ba2b0 3701l1d1ah:\r
fecee241
L
3702 call sub_1ed1h\r
3703 call sub_1d26h\r
a16ba2b0 3704l1d20h:\r
fecee241 3705 jp c,gen.opc.ED2\r
a16ba2b0 3706l1d23h:\r
fecee241 3707 jp ERROR\r
a16ba2b0 3708sub_1d26h:\r
fecee241
L
3709 ld hl,t__C_\r
3710 jp sub_0a23h\r
a16ba2b0 3711l1d2ch:\r
fecee241
L
3712 call sub_1d26h\r
3713 jr nc,l1d44h\r
3714 call sub_1ed1h\r
3715 call sub_1e41h\r
3716 jr nc,l1d23h\r
3717 cp 006h\r
3718 jr z,l1d23h\r
3719 rlca\r
3720 rlca\r
3721 rlca\r
3722 add a,b\r
3723 jp l1b71h\r
a16ba2b0 3724l1d44h:\r
fecee241
L
3725 call sub_1e06h\r
3726 call sub_1ed1h\r
3727 cp 041h\r
3728 jr nz,l1d23h\r
3729 inc de\r
3730 ld b,0d3h\r
3731 jp l1a2fh\r
a16ba2b0 3732l1d54h:\r
fecee241
L
3733 ld hl,b_0x1D80_start\r
3734 call sub_0a15h\r
3735 jp nc,ERROR\r
3736 ld c,b\r
3737 call assert_eol\r
3738 ld b,000h\r
3739 ld hl,b_0x1DA1_start\r
3740 add hl,bc\r
3741 add hl,bc\r
3742 ld a,(hl)\r
3743 comst\r
3744 ld (iy+000h),a\r
a16ba2b0 3745 comend\r
fecee241
L
3746 ld c,001h\r
3747 inc hl\r
3748 ld a,(hl)\r
3749 and a\r
3750 ret z\r
3751 comst\r
3752 ld (iy+001h),a\r
a16ba2b0 3753 comend\r
fecee241
L
3754 ld c,002h\r
3755 ret\r
a16ba2b0
L
3756\r
3757b_0x1D80_start:\r
3758 DC 'AF,AF'''\r
3759l1d86h:\r
3760 DC 'DE,HL'\r
3761 DC '(SP),HL'\r
3762 DC '(SP),IX'\r
3763 DC '(SP),IY'\r
fecee241 3764 db 000h\r
a16ba2b0
L
3765\r
3766b_0x1DA1_start:\r
fecee241
L
3767 db 008h\r
3768 db 000h\r
3769 db 0ebh\r
3770 db 000h\r
3771 db 0e3h\r
3772 db 000h\r
3773 db 0ddh\r
3774 db 0e3h\r
3775 db 0fdh\r
3776 db 0e3h\r
a16ba2b0 3777l1dabh:\r
fecee241
L
3778 call sub_1e50h\r
3779 jr c,l1dc6h\r
3780 call sub_1e2eh\r
3781 jr c,l1dd2h\r
3782 call sub_1e41h\r
3783 jr c,l1ddfh\r
3784 call sub_1e68h\r
3785 jp nc,ERROR\r
3786 ld a,b\r
3787 add a,030h\r
3788 jp l19ebh\r
a16ba2b0 3789l1dc6h:\r
fecee241
L
3790 ld a,b\r
3791 ld b,023h\r
3792 cp 004h\r
3793 jr z,l1dcfh\r
3794 ld b,02bh\r
a16ba2b0 3795l1dcfh:\r
fecee241 3796 jp l1aabh\r
a16ba2b0 3797l1dd2h:\r
fecee241
L
3798 push af\r
3799 ld a,b\r
3800 ld b,003h\r
3801 cp 004h\r
3802 jr z,l1ddch\r
3803 ld b,00bh\r
a16ba2b0 3804l1ddch:\r
fecee241
L
3805 pop af\r
3806 jr l1de2h\r
a16ba2b0 3807l1ddfh:\r
fecee241
L
3808 rlca\r
3809 rlca\r
3810 rlca\r
a16ba2b0 3811l1de2h:\r
fecee241
L
3812 add a,b\r
3813 jp l19d7h\r
a16ba2b0 3814sub_1de6h:\r
fecee241
L
3815 call sub_1e12h\r
3816 ld a,l\r
3817 cp 008h\r
3818 jr nc,error1\r
3819 ret\r
a16ba2b0 3820sub_1defh:\r
fecee241
L
3821 call tst_EXPR\r
3822 push bc\r
3823 push iy\r
3824 pop bc\r
3825 and a\r
3826 sbc hl,bc\r
3827 dec hl\r
3828 dec hl\r
3829 pop bc\r
3830 call sub_1e15h\r
3831 ld a,h\r
3832 xor l\r
3833 bit 7,a\r
3834 jr nz,error1\r
3835 ret\r
a16ba2b0 3836sub_1e06h:\r
fecee241
L
3837 ld a,(de)\r
3838 cp 028h\r
3839 jr nz,sub_1e12h\r
3840 inc de\r
3841 call sub_1e12h\r
3842 jp sub_1ed8h\r
a16ba2b0
L
3843\r
3844sub_1e12h:\r
fecee241 3845 call tst_EXPR\r
a16ba2b0 3846sub_1e15h:\r
fecee241
L
3847 ld a,h\r
3848 and a\r
3849 ret z\r
3850 inc a\r
3851 ret z\r
3852 jr error1\r
a16ba2b0
L
3853\r
3854tst_EXPR:\r
fecee241
L
3855 push bc\r
3856 call EXPR\r
3857 pop bc\r
3858 ret nc\r
a16ba2b0 3859error1:\r
fecee241 3860 jp ERROR\r
a16ba2b0 3861sub_1e25h:\r
fecee241
L
3862 push hl\r
3863 ld hl,t_BC.DE.HL.AF\r
3864 jr l1e32h\r
a16ba2b0 3865sub_1e2bh:\r
fecee241
L
3866 push hl\r
3867 jr l1e32h\r
a16ba2b0 3868sub_1e2eh:\r
fecee241
L
3869 push hl\r
3870 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 3871l1e32h:\r
fecee241
L
3872 push bc\r
3873 call sub_0a15h\r
3874 jr nc,l1e3eh\r
3875 ld a,b\r
3876 rlca\r
3877 rlca\r
3878 rlca\r
3879 rlca\r
3880 scf\r
a16ba2b0 3881l1e3eh:\r
fecee241
L
3882 pop bc\r
3883 pop hl\r
3884 ret\r
a16ba2b0 3885sub_1e41h:\r
fecee241
L
3886 call SKIPBL\r
3887 push bc\r
3888 push hl\r
3889 ld hl,t_BCDEHL_HL_A\r
3890 call sub_0a15h\r
3891 ld a,b\r
3892 pop hl\r
3893 pop bc\r
3894 ret\r
a16ba2b0 3895sub_1e50h:\r
fecee241
L
3896 push hl\r
3897 push bc\r
3898 ld hl,t_IX.IY\r
3899 call sub_0a15h\r
3900 jr nc,l1e65h\r
3901 ld a,0ddh\r
3902 dec b\r
3903 jr nz,l1e61h\r
3904 ld a,0fdh\r
a16ba2b0 3905l1e61h:\r
fecee241
L
3906 ld (pfx.IXY),a\r
3907 scf\r
a16ba2b0 3908l1e65h:\r
fecee241
L
3909 pop bc\r
3910 pop hl\r
3911 ret\r
a16ba2b0 3912sub_1e68h:\r
fecee241
L
3913 push hl\r
3914 push bc\r
3915 ld a,(de)\r
3916 cp '('\r
3917 jr nz,l1eb4h\r
3918 push de\r
3919 inc de\r
3920 ld hl,t_IX.IY\r
3921 call sub_0a15h\r
3922 jr nc,l1eb3h\r
3923 pop af\r
3924 ld a,0ddh\r
3925 dec b\r
3926 jr nz,l1e81h\r
3927 ld a,0fdh\r
a16ba2b0 3928l1e81h:\r
fecee241
L
3929 ld (pfx.IXY),a\r
3930 ld a,(de)\r
3931 cp '+'\r
3932 jr z,l1e95h\r
3933 cp ')'\r
3934 ld hl,0\r
3935 jr z,l1eadh\r
3936 cp '-'\r
3937 jp nz,ERROR\r
a16ba2b0 3938l1e95h:\r
fecee241
L
3939 push af\r
3940 inc de\r
a16ba2b0 3941 call sub_1e12h ;1e97 get displacement\r
fecee241
L
3942 pop af\r
3943 cp '+'\r
3944 jr z,l1ea7h\r
3945 ld b,h\r
3946 ld c,l\r
3947 ld hl,0\r
3948 and a\r
3949 sbc hl,bc\r
a16ba2b0 3950l1ea7h:\r
fecee241
L
3951 ld a,(de)\r
3952 cp ')'\r
3953 jp nz,ERROR\r
a16ba2b0 3954l1eadh:\r
fecee241
L
3955 inc de\r
3956 pop bc\r
3957 ld c,l\r
3958 pop hl\r
3959 scf\r
3960 ret\r
a16ba2b0 3961l1eb3h:\r
fecee241 3962 pop de\r
a16ba2b0 3963l1eb4h:\r
fecee241
L
3964 pop bc\r
3965 pop hl\r
3966 and a\r
3967 ret\r
a16ba2b0 3968sub_1eb8h:\r
fecee241
L
3969 ld hl,t_tstfl_ZCPS\r
3970 ld c,007h\r
3971 jr l1ec4h\r
a16ba2b0 3972sub_1ebfh:\r
fecee241
L
3973 ld hl,t_tstfl_ZC\r
3974 ld c,003h\r
a16ba2b0 3975l1ec4h:\r
fecee241
L
3976 push bc\r
3977 call sub_0a15h\r
3978 ld a,b\r
3979 pop bc\r
3980 ret nc\r
3981 and c\r
3982 rlca\r
3983 rlca\r
3984 rlca\r
3985 scf\r
3986 ret\r
a16ba2b0 3987sub_1ed1h:\r
fecee241
L
3988 call skip_to_nextarg\r
3989 ret z\r
a16ba2b0 3990l1ed5h:\r
fecee241 3991 jp ERROR\r
a16ba2b0 3992sub_1ed8h:\r
fecee241
L
3993 ld a,(de)\r
3994 cp 029h\r
3995 jr nz,l1ed5h\r
3996 inc de\r
3997 ret\r
a16ba2b0 3998CMD.L:\r
fecee241
L
3999 ld hl,CMD.L\r
4000 ld (CMD_RPT),hl\r
4001 call EXPR\r
4002 jr nc,l1eedh\r
4003 ld hl,(lst.L)\r
a16ba2b0 4004l1eedh:\r
fecee241
L
4005 push hl\r
4006 pop iy\r
4007 call skip_to_nextarg\r
4008 call sub_0aa5h\r
4009 jr nc,l1f17h\r
4010 call assert_eol\r
4011 ld b,010h\r
a16ba2b0 4012l1efdh:\r
fecee241
L
4013 push bc\r
4014 push iy\r
4015 pop hl\r
4016 push hl\r
4017 call sub_1f3fh\r
4018 call CRLF\r
4019 pop iy\r
4020 ld c,b\r
4021 ld b,000h\r
4022 add iy,bc\r
4023 ld (lst.L),iy\r
4024 pop bc\r
4025 djnz l1efdh\r
4026 ret\r
a16ba2b0 4027l1f17h:\r
fecee241
L
4028 call assert_eol\r
4029 ld h,b\r
4030 ld l,c\r
4031 ld a,b\r
4032 or c\r
4033 jr nz,l1f21h\r
4034 dec hl\r
a16ba2b0 4035l1f21h:\r
fecee241
L
4036 push hl\r
4037 push iy\r
4038 pop hl\r
4039 push hl\r
4040 call sub_1f3fh\r
4041 call CRLF\r
4042 pop iy\r
4043 ld e,b\r
4044 ld d,000h\r
4045 add iy,de\r
4046 ld (lst.L),iy\r
4047 pop hl\r
4048 and a\r
4049 sbc hl,de\r
4050 ret z\r
4051 ret c\r
4052 jr l1f21h\r
a16ba2b0 4053sub_1f3fh:\r
fecee241
L
4054 call out.hl.@\r
4055 call z,OUTBL\r
4056 call OUTBL\r
4057 sub a\r
4058 ld (CON.COL),a\r
4059 call sub_1f77h\r
4060 and a\r
4061 ret z\r
a16ba2b0 4062l1f51h:\r
fecee241
L
4063 call OUTBL\r
4064 ld a,(CON.COL)\r
4065 cp 010h\r
4066 jr c,l1f51h\r
a16ba2b0 4067sub_1f5bh:\r
fecee241
L
4068 ld de,(offs.@)\r
4069 ld a,d\r
4070 or e\r
4071 ret z\r
4072 ld a,'('\r
4073 call OUTCHAR\r
4074 ld a,'@'\r
4075 call OUTCHAR\r
4076 and a\r
4077 sbc hl,de\r
4078 call out.hl\r
4079 ld a,')'\r
4080 jp OUTCHAR\r
a16ba2b0 4081sub_1f77h:\r
fecee241
L
4082 sub a\r
4083 ld (XBE03),a\r
4084 call sub_1f9eh\r
4085 jr nc,l1f91h\r
4086 push bc\r
4087 call sub_2581h\r
4088 ex de,hl\r
4089 call sub_1fdbh\r
4090 pop bc\r
4091 ld a,(XBE03)\r
4092 ld hl,(XBE01)\r
4093 scf\r
4094 ret\r
a16ba2b0 4095l1f91h:\r
fecee241
L
4096 ld hl,b_0x1F9B_start\r
4097 call PSTR\r
4098 ld b,001h\r
4099 sub a\r
4100 ret\r
a16ba2b0
L
4101\r
4102b_0x1F9B_start:\r
4103 DC '???'\r
fecee241 4104\r
a16ba2b0 4105sub_1f9eh:\r
fecee241
L
4106 sub a\r
4107 ld (is.pfx.IXY),a\r
4108 comst\r
4109 ld a,(iy+000h)\r
a16ba2b0 4110 comend\r
fecee241
L
4111 cp 0edh\r
4112 jp z,disas_pfx.ED\r
4113 cp 0ddh\r
4114 jr z,l1fc5h\r
4115 cp 0fdh\r
4116 jr z,l1fc9h\r
a16ba2b0 4117sub_1fb6h:\r
fecee241
L
4118 comst\r
4119 ld a,(iy+000h)\r
a16ba2b0 4120 comend\r
fecee241
L
4121 cp 0cbh\r
4122 jp z,l2061h\r
4123 jp l2078h\r
a16ba2b0 4124l1fc5h:\r
fecee241
L
4125 ld a,001h\r
4126 jr l1fcbh\r
a16ba2b0 4127l1fc9h:\r
fecee241 4128 ld a,002h\r
a16ba2b0 4129l1fcbh:\r
fecee241
L
4130 ld (is.pfx.IXY),a\r
4131 call sub_1fdch\r
4132 ret nc\r
4133 push bc\r
4134 call sub_1fb6h\r
4135 pop af\r
4136 add a,b\r
4137 ld b,a\r
4138 scf\r
4139 ret\r
a16ba2b0
L
4140\r
4141sub_1fdbh:\r
fecee241 4142 jp (hl)\r
a16ba2b0
L
4143\r
4144sub_1fdch:\r
fecee241
L
4145 inc iy\r
4146 ld hl,b_0x2011_start\r
4147 call sub_20bbh\r
4148 ld b,002h\r
4149 ret c\r
4150 ld hl,l202ch\r
4151 call sub_20bbh\r
4152 ld b,001h\r
4153 ret c\r
4154 comst\r
4155 ld a,(iy+000h)\r
a16ba2b0 4156 comend\r
fecee241
L
4157 cp 0cbh\r
4158 jr nz,l200fh\r
4159 comst\r
4160 ld a,(iy+002h)\r
a16ba2b0 4161 comend\r
fecee241
L
4162 cp 036h\r
4163 ret z\r
4164 and 007h\r
4165 cp 006h\r
4166 jr nz,l200fh\r
4167 ld b,002h\r
4168 scf\r
4169 ret\r
a16ba2b0 4170l200fh:\r
fecee241
L
4171 and a\r
4172 ret\r
a16ba2b0
L
4173\r
4174b_0x2011_start:\r
fecee241
L
4175 db 034h\r
4176 db 035h\r
4177 db 036h\r
4178 db 046h\r
4179 db 04eh\r
4180 db 056h\r
4181 db 05eh\r
4182 db 066h\r
4183 db 06eh\r
4184 db 070h\r
4185 db 071h\r
4186 db 072h\r
4187 db 073h\r
4188 db 074h\r
4189 db 075h\r
4190 db 076h\r
4191 db 077h\r
4192 db 07eh\r
4193 db 086h\r
4194 db 08eh\r
4195 db 096h\r
4196 db 09eh\r
4197 db 0a6h\r
4198 db 0aeh\r
4199 db 0b6h\r
4200 db 0beh\r
4201 db 000h\r
a16ba2b0 4202l202ch:\r
fecee241
L
4203 db 009h\r
4204 db 019h\r
4205 db 021h\r
4206 db 022h\r
4207 db 023h\r
4208 db 029h\r
4209 db 02ah\r
4210 db 02bh\r
4211 db 039h\r
4212 db 0e1h\r
4213 db 0e3h\r
4214 db 0e5h\r
4215 db 0e9h\r
4216 db 0f9h\r
4217 db 000h\r
a16ba2b0
L
4218\r
4219disas_pfx.ED:\r
fecee241
L
4220 inc iy\r
4221 ld hl,b_0x2200_start\r
4222 call sub_209dh\r
4223 ld b,002h\r
4224 ret c\r
4225 ld hl,l2235h\r
4226 call lookup_opc\r
4227 ld b,002h\r
4228 ret c\r
4229 ld hl,l228bh\r
4230 call lookup_opc\r
4231 ld b,003h\r
4232 ret c\r
4233 ld hl,l22b4h\r
4234 call lookup_opc\r
4235 ld b,004h\r
4236 ret\r
a16ba2b0 4237l2061h:\r
fecee241
L
4238 push iy\r
4239 inc iy\r
4240 ld a,(is.pfx.IXY)\r
4241 and a\r
4242 jr z,l206dh\r
4243 inc iy\r
a16ba2b0 4244l206dh:\r
fecee241
L
4245 ld hl,l22c9h\r
4246 call lookup_opc\r
4247 pop iy\r
4248 ld b,002h\r
4249 ret\r
a16ba2b0 4250l2078h:\r
fecee241
L
4251 ld hl,b_0x218B_start\r
4252 call lookup_opc\r
4253 ld b,002h\r
4254 ret c\r
4255 ld hl,b_0x20ED_start\r
4256 call sub_209dh\r
4257 ld b,001h\r
4258 ret c\r
4259 ld hl,b_0x2108_start\r
4260 call lookup_opc\r
4261 ld b,001h\r
4262 ret c\r
4263 ld hl,b_0x21D2_start\r
4264 call lookup_opc\r
4265 ret nc\r
4266 ld b,003h\r
4267 ret\r
a16ba2b0
L
4268\r
4269sub_209dh:\r
fecee241
L
4270 ld a,(hl)\r
4271 cp 0ffh\r
4272 ret z\r
4273 comst\r
4274 cp (iy+000h)\r
a16ba2b0 4275 comend\r
fecee241
L
4276 jr z,l20aeh\r
4277 inc hl\r
4278 inc hl\r
4279 jr sub_209dh\r
a16ba2b0 4280l20aeh:\r
fecee241
L
4281 inc hl\r
4282 ld c,(hl)\r
4283 ld hl,t_MNEMONICS\r
4284 ld b,000h\r
4285 add hl,bc\r
4286 ld de,l230bh\r
4287 scf\r
4288 ret\r
a16ba2b0 4289sub_20bbh:\r
fecee241
L
4290 ld a,(hl)\r
4291 and a\r
4292 ret z\r
4293 inc hl\r
4294 comst\r
4295 cp (iy+000h)\r
a16ba2b0 4296 comend\r
fecee241
L
4297 jr nz,sub_20bbh\r
4298 scf\r
4299 ret\r
a16ba2b0
L
4300\r
4301lookup_opc:\r
fecee241
L
4302 comst\r
4303 ld a,(iy+000h)\r
a16ba2b0 4304 comend\r
fecee241
L
4305 and (hl)\r
4306 inc hl\r
4307 cp (hl)\r
4308 jr z,l20dfh\r
4309 inc hl\r
4310 inc hl\r
4311 inc hl\r
4312 inc hl\r
4313 ld a,(hl)\r
4314 and a\r
4315 jr nz,lookup_opc\r
4316 ret\r
a16ba2b0 4317l20dfh:\r
fecee241
L
4318 inc hl\r
4319 ld c,(hl)\r
4320 inc hl\r
4321 ld e,(hl)\r
4322 inc hl\r
4323 ld d,(hl)\r
4324 ld hl,t_MNEMONICS\r
4325 ld b,000h\r
4326 add hl,bc\r
4327 scf\r
4328 ret\r
a16ba2b0
L
4329\r
4330b_0x20ED_start: ; 1 byte opcodes (no parameters)\r
4331 db 076h ;20ed halt\r
fecee241 4332 db 039h ;20ee\r
a16ba2b0 4333 db 0d9h ;20ef exx\r
fecee241 4334 db 036h\r
a16ba2b0 4335 db 0f3h ;20f1 di\r
fecee241 4336 db 02ch\r
a16ba2b0 4337 db 0fbh ;20f3 ei\r
fecee241 4338 db 032h\r
a16ba2b0 4339 db 000h ;20f5 nop\r
fecee241 4340 db 069h\r
a16ba2b0 4341 db 007h ;20f7 rlca\r
fecee241 4342 db 09eh\r
a16ba2b0 4343 db 00fh ;20f9 rrca\r
fecee241 4344 db 0adh\r
a16ba2b0 4345 db 017h ;20fb rla\r
fecee241 4346 db 098h\r
a16ba2b0 4347 db 01fh ;20fd rra\r
fecee241 4348 db 0a7h\r
a16ba2b0 4349 db 027h ;20ff daa\r
fecee241 4350 db 026h\r
a16ba2b0 4351 db 02fh ;2101 cpl\r
fecee241 4352 db 023h\r
a16ba2b0 4353 db 037h ;2103 scf\r
fecee241 4354 db 0bah\r
a16ba2b0 4355 db 03fh ;2105 ccf\r
fecee241 4356 db 010h\r
a16ba2b0
L
4357 db 0ffh ;2107 EOT\r
4358\r
4359b_0x2108_start: ; 1 byte opcodes\r
4360 defb 0c0h ;2108 ld r,r\r
fecee241
L
4361 defb 040h\r
4362 defb 056h\r
4363 defw l22fch\r
a16ba2b0
L
4364\r
4365 defb 0f8h ;210d add a,r\r
fecee241
L
4366 defb 080h\r
4367 defb 003h\r
4368 defw l2305h\r
a16ba2b0
L
4369\r
4370 defb 0f8h ;2112 adc a,r\r
fecee241
L
4371 defb 088h\r
4372 defb 000h\r
4373 defw l2305h\r
4374\r
4375 defb 0f8h\r
4376 defb 090h\r
4377 defb 0c9h\r
4378 defw l24ebh\r
4379\r
4380 defb 0f8h\r
4381 defb 098h\r
4382 defb 0b7h\r
4383 defw l2305h\r
4384\r
4385 defb 0f8h\r
4386 defb 0a0h\r
4387 defb 006h\r
4388 defw l24ebh\r
4389\r
4390 defb 0f8h\r
4391 defb 0a8h\r
4392 defb 0cch\r
4393 defw l24ebh\r
4394\r
4395 defb 0f8h\r
4396 defb 0b0h\r
4397 defb 06ch\r
4398 defw l24ebh\r
4399\r
4400 defb 0f8h\r
4401 defb 0b8h\r
4402 defb 013h\r
4403 defw l24ebh\r
4404\r
4405 defb 0c7h\r
a16ba2b0 4406 defb 0c0h ;2136 ret cc\r
fecee241
L
4407 defb 08bh\r
4408 defw l2561h\r
a16ba2b0 4409\r
30d1329e 4410 defb 0c7h ;213a rst\r
fecee241
L
4411 defb 0c7h\r
4412 defb 0b4h\r
4413 defw l231eh\r
a16ba2b0
L
4414\r
4415 defb 0ffh ;213f ret\r
fecee241
L
4416 defb 0c9h\r
4417 defb 08bh\r
4418 defw l230bh\r
a16ba2b0
L
4419\r
4420 defb 0cfh ;2144 pop rr\r
fecee241
L
4421 defb 0c1h\r
4422 defb 081h\r
4423 defw l2546h\r
a16ba2b0
L
4424\r
4425 defb 0cfh ;2149 push rr\r
fecee241
L
4426 defb 0c5h\r
4427 defb 084h\r
4428 defw l2546h\r
a16ba2b0
L
4429\r
4430 defb 0ffh ;214e ex (sp),hl\r
fecee241
L
4431 defb 0e3h\r
4432 defb 034h\r
4433 defw l232ah\r
a16ba2b0
L
4434\r
4435 defb 0ffh ;2153 jp (hl)\r
fecee241
L
4436 defb 0e9h\r
4437 defb 052h\r
4438 defw l2338h\r
a16ba2b0
L
4439\r
4440 defb 0ffh ;2158 ex de,hl\r
fecee241
L
4441 defb 0ebh\r
4442 defb 034h\r
4443 defw l2345h\r
a16ba2b0
L
4444\r
4445 defb 0ffh ;215d ld sp,hl\r
fecee241
L
4446 defb 0f9h\r
4447 defb 056h\r
4448 defw l234bh\r
a16ba2b0
L
4449\r
4450 defb 0cfh ;2162 inc rr\r
fecee241
L
4451 defb 003h\r
4452 defb 041h\r
4453 defw l254bh\r
a16ba2b0
L
4454\r
4455 defb 0cfh ;2167 dec rr\r
fecee241
L
4456 defb 00bh\r
4457 defb 029h\r
4458 defw l254bh\r
a16ba2b0 4459\r
8590a76b 4460\r
a16ba2b0 4461 defb 0c7h ;216c inc r\r
fecee241
L
4462 defb 004h\r
4463 defb 041h\r
4464 defw l24dfh\r
a16ba2b0
L
4465\r
4466 defb 0c7h ;2171 dec r\r
fecee241
L
4467 defb 005h\r
4468 defb 029h\r
4469 defw l24dfh\r
a16ba2b0
L
4470\r
4471 defb 0ffh ;2176 ex af,af'\r
fecee241
L
4472 defb 008h\r
4473 defb 034h\r
4474 defw l2357h\r
a16ba2b0
L
4475\r
4476 defb 0cfh ;217b add hl,rr\r
fecee241
L
4477 defb 009h\r
4478 defb 003h\r
4479 defw l235dh\r
a16ba2b0
L
4480\r
4481 defb 0efh ;2180 ld (rr),a ;rr=bc,de\r
fecee241
L
4482 defb 002h\r
4483 defb 056h\r
4484 defw l2366h\r
a16ba2b0
L
4485\r
4486 defb 0efh ;2185 ld a,(rr) ;rr=bc,de\r
fecee241
L
4487 defb 00ah\r
4488 defb 056h\r
4489 defw l236fh\r
a16ba2b0
L
4490\r
4491 defb 000h ;218a EOT\r
4492\r
4493b_0x218B_start: ; 2 byte opdodes\r
4494 defb 0c7h ;218b ld r,nn\r
fecee241
L
4495 defb 006h\r
4496 defb 056h\r
4497 defw l2384h\r
a16ba2b0
L
4498\r
4499 defb 0ffh ;2190 add a,nn\r
fecee241
L
4500 defb 0c6h\r
4501 defb 003h\r
4502 defw l237fh\r
a16ba2b0
L
4503\r
4504 defb 0ffh ;2195 adc a,nn\r
fecee241
L
4505 defb 0ceh\r
4506 defb 000h\r
4507 defw l237fh\r
a16ba2b0
L
4508\r
4509 defb 0ffh ;219a sub a,nn\r
fecee241
L
4510 defb 0d6h\r
4511 defb 0c9h\r
4512 defw l2397h\r
a16ba2b0 4513\r
fecee241
L
4514 defb 0ffh\r
4515 defb 0deh\r
4516 defb 0b7h\r
4517 defw l237fh\r
a16ba2b0
L
4518\r
4519 defb 0ffh ;21a4 and a,nn\r
fecee241
L
4520 defb 0e6h\r
4521 defb 006h\r
4522 defw l2397h\r
a16ba2b0 4523\r
fecee241
L
4524 defb 0ffh\r
4525 defb 0eeh\r
4526 defb 0cch\r
4527 defw l2397h\r
a16ba2b0 4528\r
fecee241
L
4529 defb 0ffh\r
4530 defb 0f6h\r
4531 defb 06ch\r
4532 defw l2397h\r
a16ba2b0
L
4533\r
4534 defb 0ffh ;21b3 cp a,nn\r
fecee241
L
4535 defb 0feh\r
4536 defb 013h\r
4537 defw l2397h\r
a16ba2b0
L
4538\r
4539 defb 0ffh ;21b8 djnz\r
fecee241
L
4540 defb 010h\r
4541 defb 02eh\r
4542 defw l23b0h\r
a16ba2b0
L
4543\r
4544 defb 0ffh ;21bd jr\r
fecee241
L
4545 defb 018h\r
4546 defb 054h\r
4547 defw l23b0h\r
a16ba2b0
L
4548\r
4549 defb 0e7h ;21c2 jr,cc\r
fecee241
L
4550 defb 020h\r
4551 defb 054h\r
4552 defw l23a1h\r
a16ba2b0 4553\r
fecee241 4554 defb 0ffh\r
a16ba2b0 4555 defb 0d3h ;21c8 out (nn),a\r
fecee241
L
4556 defb 076h\r
4557 defw l23d5h\r
a16ba2b0
L
4558\r
4559 defb 0ffh ;21cc in a,(nn)\r
fecee241
L
4560 defb 0dbh\r
4561 defb 03fh\r
4562 defw l23c3h\r
a16ba2b0
L
4563\r
4564 defb 000h ;21d1 EOT\r
4565\r
4566b_0x21D2_start: ; 3 byte opcodes\r
fecee241
L
4567 defb 0c7h\r
4568 defb 0c2h\r
4569 defb 052h\r
4570 defw l23e0h\r
4571\r
4572 defb 0c7h\r
4573 defb 0c4h\r
4574 defb 00ch\r
4575 defw l23e0h\r
4576\r
4577 defb 0cfh\r
4578 defb 001h\r
4579 defb 056h\r
4580 defw l23fch\r
4581\r
4582 defb 0ffh\r
4583 defb 0c3h\r
4584 defb 052h\r
4585 defw l23e6h\r
4586\r
4587 defb 0ffh\r
4588 defb 0cdh\r
4589 defb 00ch\r
4590 defw l23e6h\r
4591\r
4592 defb 0ffh\r
4593 defb 022h\r
4594 defb 056h\r
4595 defw l2404h\r
4596\r
4597 defb 0ffh\r
4598 defb 02ah\r
4599 defb 056h\r
4600 defw l240dh\r
4601\r
4602 defb 0ffh\r
4603 defb 032h\r
4604 defb 056h\r
4605 defw l2416h\r
4606\r
4607 defb 0ffh\r
4608 defb 03ah\r
4609 defb 056h\r
4610 defw l2421h\r
4611\r
4612 defb 000h\r
a16ba2b0
L
4613\r
4614b_0x2200_start: ; prefix ED + 1 byte opcode\r
4615 defb 044h ;2200 neg\r
fecee241 4616 defb 066h\r
a16ba2b0 4617 defb 045h ;2202 retn\r
fecee241 4618 defb 092h\r
a16ba2b0 4619 defb 04dh ;2204 reti\r
fecee241 4620 defb 08eh\r
a16ba2b0 4621 defb 067h ;2206 rrd\r
fecee241 4622 defb 0b1h\r
a16ba2b0 4623 defb 06fh ;2208 rld\r
fecee241 4624 defb 0a2h\r
a16ba2b0 4625 defb 0a0h ;220a ldi\r
fecee241
L
4626 defb 05fh\r
4627 defb 0a1h\r
4628 defb 01ch\r
4629 defb 0a2h\r
4630 defb 04bh\r
4631 defb 0a3h\r
4632 defb 07dh\r
a16ba2b0 4633 defb 0a8h ;2212 ldd\r
fecee241
L
4634 defb 058h\r
4635 defb 0a9h\r
4636 defb 015h\r
4637 defb 0aah\r
4638 defb 044h\r
4639 defb 0abh\r
4640 defb 079h\r
a16ba2b0 4641 defb 0b0h ;221a ldir\r
fecee241
L
4642 defb 062h\r
4643 defb 0b1h\r
4644 defb 01fh\r
4645 defb 0b2h\r
4646 defb 04eh\r
4647 defb 0b3h\r
4648 defb 072h\r
a16ba2b0 4649 defb 0b8h ;2222 lddr\r
fecee241
L
4650 defb 05bh\r
4651 defb 0b9h\r
4652 defb 018h\r
4653 defb 0bah\r
4654 defb 047h\r
4655 defb 0bbh\r
4656 defb 06eh\r
a16ba2b0 4657 defb 08bh ;222a otdm\r
fecee241 4658 defb 0d5h\r
a16ba2b0 4659 defb 09bh ;222c otdmr\r
fecee241 4660 defb 0d9h\r
a16ba2b0 4661 defb 083h ;222e otim\r
fecee241 4662 defb 0deh\r
a16ba2b0 4663 defb 093h ;2230 otimr\r
fecee241 4664 defb 0e2h\r
a16ba2b0 4665 defb 076h ;2232 slp\r
fecee241 4666 defb 0ebh\r
a16ba2b0 4667 defb 0ffh ;2234 EOT\r
fecee241 4668\r
a16ba2b0
L
4669l2235h:\r
4670 defb 0e7h ;2235 in r,(c) ;r=bcde\r
fecee241
L
4671 defb 040h\r
4672 defb 03fh\r
4673 defw l2455h\r
a16ba2b0
L
4674\r
4675 defb 0f7h ;223a in r,(c) ;r=hl\r
fecee241
L
4676 defb 060h\r
4677 defb 03fh\r
4678 defw l2455h\r
a16ba2b0
L
4679\r
4680 defb 0ffh ;223f in r,(c) ;r=a\r
fecee241
L
4681 defb 078h\r
4682 defb 03fh\r
4683 defw l2455h\r
a16ba2b0 4684\r
fecee241
L
4685 defb 0e7h\r
4686 defb 041h\r
4687 defb 076h\r
4688 defw l2461h\r
a16ba2b0 4689\r
fecee241
L
4690 defb 0f7h\r
4691 defb 061h\r
4692 defb 076h\r
4693 defw l2461h\r
a16ba2b0
L
4694\r
4695 defb 0ffh ;224e out (c),r ;r=a\r
fecee241
L
4696 defb 079h\r
4697 defb 076h\r
4698 defw l2461h\r
a16ba2b0
L
4699\r
4700 defb 0cfh ;2253 sbc hl,rr\r
fecee241
L
4701 defb 042h\r
4702 defb 0b7h\r
4703 defw l246dh\r
a16ba2b0
L
4704\r
4705 defb 0cfh ;2258 adc hl,rr\r
fecee241
L
4706 defb 04ah\r
4707 defb 000h\r
4708 defw l246dh\r
a16ba2b0
L
4709\r
4710 defb 0ffh ;225d im 0\r
fecee241
L
4711 defb 046h\r
4712 defb 03dh\r
4713 defw l2427h\r
a16ba2b0
L
4714\r
4715 defb 0ffh ;2262 im 1\r
fecee241
L
4716 defb 056h\r
4717 defb 03dh\r
4718 defw l242bh\r
a16ba2b0
L
4719\r
4720 defb 0ffh ;2267 im 2\r
fecee241
L
4721 defb 05eh\r
4722 defb 03dh\r
4723 defw l242fh\r
a16ba2b0
L
4724\r
4725 defb 0ffh ;226c ld i,a\r
fecee241
L
4726 defb 047h\r
4727 defb 056h\r
4728 defw l2434h\r
a16ba2b0 4729\r
fecee241
L
4730 defb 0ffh\r
4731 defb 057h\r
4732 defb 056h\r
4733 defw l2439h\r
a16ba2b0 4734\r
fecee241
L
4735 defb 0ffh\r
4736 defb 04fh\r
4737 defb 056h\r
4738 defw l243eh\r
a16ba2b0 4739\r
fecee241
L
4740 defb 0ffh\r
4741 defb 05fh\r
4742 defb 056h\r
4743 defw l2443h\r
a16ba2b0
L
4744\r
4745 defb 0cfh ;2280 mlt rr\r
fecee241
L
4746 defb 04ch\r
4747 defb 0d2h\r
4748 defw l254bh\r
a16ba2b0
L
4749\r
4750 defb 0c7h ;2285 tst r\r
fecee241
L
4751 defb 004h\r
4752 defb 0eeh\r
4753 defw l24dfh\r
a16ba2b0 4754\r
fecee241 4755 defb 000h\r
a16ba2b0
L
4756\r
4757l228bh:\r
fecee241
L
4758 defb 0e7h\r
4759 defb 000h\r
4760 defb 0cfh\r
fecee241 4761 defw l230ch\r
a16ba2b0 4762\r
fecee241
L
4763 defb 0f7h\r
4764 defb 020h\r
4765 defb 0cfh\r
fecee241 4766 defw l230ch\r
a16ba2b0 4767\r
fecee241
L
4768 defb 0ffh\r
4769 defb 038h\r
4770 defb 0cfh\r
fecee241 4771 defw l230ch\r
a16ba2b0 4772\r
fecee241
L
4773 defb 0e7h\r
4774 defb 001h\r
4775 defb 0e7h\r
fecee241 4776 defw l2315h\r
a16ba2b0 4777\r
fecee241
L
4778 defb 0f7h\r
4779 defb 021h\r
4780 defb 0e7h\r
fecee241 4781 defw l2315h\r
a16ba2b0 4782\r
fecee241
L
4783 defb 0ffh\r
4784 defb 039h\r
4785 defb 0e7h\r
fecee241 4786 defw l2315h\r
a16ba2b0 4787\r
fecee241
L
4788 defb 0ffh\r
4789 defb 064h\r
4790 defb 0eeh\r
fecee241 4791 defw l2397h\r
a16ba2b0 4792\r
fecee241
L
4793 defb 0ffh\r
4794 defb 074h\r
4795 defb 0f1h\r
fecee241 4796 defw l2397h\r
fecee241 4797 defb 000h\r
12266039 4798\r
a16ba2b0 4799l22b4h:\r
fecee241
L
4800 defb 0efh\r
4801 defb 043h\r
4802 defb 056h\r
a16ba2b0
L
4803\r
4804b_0x22B7_start:\r
fecee241 4805 defw l2476h\r
a16ba2b0
L
4806\r
4807b_0x22B9_start:\r
fecee241
L
4808 defb 0ffh\r
4809 defb 073h\r
4810 defb 056h\r
a16ba2b0
L
4811\r
4812b_0x22BC_start:\r
fecee241 4813 defw l2476h\r
a16ba2b0
L
4814\r
4815b_0x22BE_start:\r
fecee241
L
4816 defb 0efh\r
4817 defb 04bh\r
4818 defb 056h\r
a16ba2b0
L
4819\r
4820b_0x22C1_start:\r
fecee241 4821 defw l247fh\r
a16ba2b0
L
4822\r
4823b_0x22C3_start:\r
fecee241
L
4824 defb 0ffh\r
4825 defb 07bh\r
4826 defb 056h\r
a16ba2b0
L
4827\r
4828b_0x22C6_start:\r
fecee241 4829 defw l247fh\r
a16ba2b0
L
4830\r
4831b_0x22C8_start:\r
fecee241 4832 defb 000h\r
a16ba2b0 4833l22c9h:\r
fecee241
L
4834 defb 0f8h\r
4835 defb 000h\r
4836 defb 09bh\r
a16ba2b0
L
4837\r
4838b_0x22CC_start:\r
fecee241 4839 defw l24aeh\r
a16ba2b0
L
4840\r
4841b_0x22CE_start:\r
fecee241
L
4842 defb 0f8h\r
4843 defb 008h\r
4844 defb 0aah\r
a16ba2b0
L
4845\r
4846b_0x22D1_start:\r
fecee241 4847 defw l24aeh\r
a16ba2b0
L
4848\r
4849b_0x22D3_start:\r
fecee241
L
4850 defb 0f8h\r
4851 defb 010h\r
4852 defb 096h\r
a16ba2b0
L
4853\r
4854b_0x22D6_start:\r
fecee241 4855 defw l24aeh\r
a16ba2b0
L
4856\r
4857b_0x22D8_start:\r
fecee241
L
4858 defb 0f8h\r
4859 defb 018h\r
4860 defb 0a5h\r
a16ba2b0
L
4861\r
4862b_0x22DB_start:\r
fecee241 4863 defw l24aeh\r
a16ba2b0
L
4864\r
4865b_0x22DD_start:\r
fecee241
L
4866 defb 0f8h\r
4867 defb 020h\r
4868 defb 0c0h\r
a16ba2b0
L
4869\r
4870b_0x22E0_start:\r
fecee241 4871 defw l24aeh\r
a16ba2b0
L
4872\r
4873b_0x22E2_start:\r
fecee241
L
4874 defb 0f8h\r
4875 defb 028h\r
4876 defb 0c3h\r
a16ba2b0
L
4877\r
4878b_0x22E5_start:\r
fecee241 4879 defw l24aeh\r
a16ba2b0
L
4880\r
4881b_0x22E7_start:\r
fecee241
L
4882 defb 0f8h\r
4883 defb 038h\r
4884 defb 0c6h\r
a16ba2b0
L
4885\r
4886b_0x22EA_start:\r
fecee241 4887 defw l24aeh\r
a16ba2b0
L
4888\r
4889b_0x22EC_start:\r
fecee241
L
4890 defb 0c0h\r
4891 defb 040h\r
4892 defb 009h\r
a16ba2b0
L
4893\r
4894b_0x22EF_start:\r
fecee241 4895 defw l2487h\r
a16ba2b0
L
4896\r
4897b_0x22F1_start:\r
fecee241
L
4898 defb 0c0h\r
4899 defb 080h\r
4900 defb 088h\r
a16ba2b0
L
4901\r
4902b_0x22F4_start:\r
fecee241 4903 defw l2487h\r
a16ba2b0
L
4904\r
4905b_0x22F6_start:\r
fecee241
L
4906 defb 0c0h\r
4907 defb 0c0h\r
4908 defb 0bdh\r
a16ba2b0
L
4909\r
4910b_0x22F9_start:\r
fecee241 4911 defw l2487h\r
a16ba2b0
L
4912\r
4913b_0x22FB_start:\r
fecee241 4914 defb 000h\r
a16ba2b0 4915l22fch:\r
fecee241
L
4916 call l24dfh\r
4917 call sub_257ch\r
4918 jp l24ebh\r
a16ba2b0 4919l2305h:\r
fecee241
L
4920 call sub_2579h\r
4921 jp l24ebh\r
a16ba2b0 4922l230bh:\r
fecee241 4923 ret\r
a16ba2b0 4924l230ch:\r
fecee241
L
4925 call l24dfh\r
4926 call sub_257ch\r
4927 jp l23c6h\r
a16ba2b0 4928l2315h:\r
fecee241
L
4929 call l23c6h\r
4930 call sub_257ch\r
4931 jp l24dfh\r
a16ba2b0 4932l231eh:\r
fecee241
L
4933 comst\r
4934 ld a,(iy+000h)\r
a16ba2b0 4935 comend\r
fecee241
L
4936 and 038h\r
4937 jp out.hex\r
a16ba2b0 4938l232ah:\r
fecee241
L
4939 ld hl,b_0x2333_start\r
4940 call PSTR\r
4941 jp l253eh\r
a16ba2b0
L
4942\r
4943b_0x2333_start:\r
4944 DC '(SP),'\r
4945\r
4946l2338h:\r
fecee241
L
4947 ld a,'('\r
4948 call OUTCHAR\r
4949 call l253eh\r
4950 ld a,')'\r
4951 jp OUTCHAR\r
a16ba2b0 4952l2345h:\r
fecee241
L
4953 ld hl,l1d86h\r
4954 jp PSTR\r
a16ba2b0 4955l234bh:\r
fecee241
L
4956 ld hl,b_0x2354_start\r
4957 call PSTR\r
4958 jp l253eh\r
a16ba2b0
L
4959\r
4960b_0x2354_start:\r
4961 DC 'SP,'\r
4962\r
4963l2357h:\r
fecee241
L
4964 ld hl,b_0x1D80_start\r
4965 jp PSTR\r
a16ba2b0 4966l235dh:\r
fecee241
L
4967 call l253eh\r
4968 call sub_257ch\r
4969 jp l254bh\r
a16ba2b0 4970l2366h:\r
fecee241
L
4971 call sub_2372h\r
4972 call sub_257ch\r
4973 jp l23dbh\r
a16ba2b0 4974l236fh:\r
fecee241 4975 call sub_2579h\r
a16ba2b0 4976sub_2372h:\r
fecee241
L
4977 ld a,'('\r
4978 call OUTCHAR\r
4979 call l254bh\r
4980 ld a,')'\r
4981 jp OUTCHAR\r
a16ba2b0 4982l237fh:\r
fecee241
L
4983 call sub_2579h\r
4984 jr l2397h\r
a16ba2b0 4985l2384h:\r
fecee241
L
4986 call l24dfh\r
4987 call sub_257ch\r
4988 ld a,(is.pfx.IXY)\r
4989 and a\r
4990 comst\r
4991 ld a,(iy+002h)\r
a16ba2b0 4992 comend\r
fecee241 4993 jr nz,l239eh\r
a16ba2b0 4994l2397h:\r
fecee241
L
4995 comst\r
4996 ld a,(iy+001h)\r
a16ba2b0
L
4997 comend\r
4998l239eh:\r
fecee241 4999 jp out.hex\r
a16ba2b0 5000l23a1h:\r
fecee241
L
5001 comst\r
5002 ld a,(iy+000h)\r
a16ba2b0 5003 comend\r
fecee241
L
5004 and 018h\r
5005 call sub_2568h\r
5006 call sub_257ch\r
a16ba2b0 5007l23b0h:\r
fecee241
L
5008 comst\r
5009 ld c,(iy+001h)\r
a16ba2b0 5010 comend\r
fecee241
L
5011 ld a,c\r
5012 rla\r
5013 sbc a,a\r
5014 ld b,a\r
5015 push iy\r
5016 pop hl\r
5017 add hl,bc\r
5018 inc hl\r
5019 inc hl\r
5020 jr l23f0h\r
a16ba2b0 5021l23c3h:\r
fecee241 5022 call sub_2579h\r
a16ba2b0 5023l23c6h:\r
fecee241
L
5024 ld a,028h\r
5025 call OUTCHAR\r
5026 comst\r
5027 ld a,(iy+001h)\r
a16ba2b0 5028 comend\r
fecee241 5029 jp l252bh\r
a16ba2b0 5030l23d5h:\r
fecee241
L
5031 call l23c6h\r
5032 call sub_257ch\r
a16ba2b0 5033l23dbh:\r
fecee241
L
5034 ld a,041h\r
5035 jp OUTCHAR\r
a16ba2b0 5036l23e0h:\r
fecee241
L
5037 call l2561h\r
5038 call sub_257ch\r
a16ba2b0 5039l23e6h:\r
fecee241
L
5040 comst\r
5041 ld l,(iy+001h)\r
5042 ld h,(iy+002h)\r
a16ba2b0
L
5043 comend\r
5044l23f0h:\r
fecee241 5045 ld a,002h\r
a16ba2b0 5046sub_23f2h:\r
fecee241
L
5047 ld (XBE03),a\r
5048 ld (XBE01),hl\r
5049 call out.hl\r
5050 ret\r
a16ba2b0 5051l23fch:\r
fecee241
L
5052 call l254bh\r
5053 call sub_257ch\r
5054 jr l23e6h\r
a16ba2b0 5055l2404h:\r
fecee241
L
5056 call sub_24c6h\r
5057 call sub_257ch\r
5058 jp l253eh\r
a16ba2b0 5059l240dh:\r
fecee241
L
5060 call l253eh\r
5061 call sub_257ch\r
5062 jp sub_24c6h\r
a16ba2b0 5063l2416h:\r
fecee241
L
5064 call sub_24c6h\r
5065 call sub_257ch\r
5066 ld a,041h\r
5067 jp OUTCHAR\r
a16ba2b0 5068l2421h:\r
fecee241
L
5069 call sub_2579h\r
5070 jp sub_24c6h\r
a16ba2b0 5071l2427h:\r
fecee241
L
5072 ld a,030h\r
5073 jr l2431h\r
a16ba2b0 5074l242bh:\r
fecee241
L
5075 ld a,031h\r
5076 jr l2431h\r
a16ba2b0 5077l242fh:\r
fecee241 5078 ld a,032h\r
a16ba2b0 5079l2431h:\r
fecee241 5080 jp OUTCHAR\r
a16ba2b0 5081l2434h:\r
fecee241
L
5082 ld hl,b_0x2449_start\r
5083 jr l2446h\r
a16ba2b0 5084l2439h:\r
fecee241
L
5085 ld hl,l244ch\r
5086 jr l2446h\r
a16ba2b0 5087l243eh:\r
fecee241
L
5088 ld hl,l244fh\r
5089 jr l2446h\r
a16ba2b0 5090l2443h:\r
fecee241 5091 ld hl,l2452h\r
a16ba2b0 5092l2446h:\r
fecee241 5093 jp PSTR\r
a16ba2b0
L
5094\r
5095b_0x2449_start:\r
5096 DC 'I,A'\r
5097l244ch:\r
5098 DC 'A,I'\r
5099l244fh:\r
5100 DC 'R,A'\r
5101l2452h:\r
5102 DC 'A,R'\r
5103\r
5104l2455h:\r
fecee241
L
5105 call l24dfh\r
5106 call sub_257ch\r
5107 ld hl,t__C_\r
5108 jp PSTR\r
a16ba2b0 5109l2461h:\r
fecee241
L
5110 ld hl,t__C_\r
5111 call PSTR\r
5112 call sub_257ch\r
5113 jp l24dfh\r
a16ba2b0 5114l246dh:\r
fecee241
L
5115 call l253eh\r
5116 call sub_257ch\r
5117 jp l254bh\r
a16ba2b0 5118l2476h:\r
fecee241
L
5119 call sub_24c6h\r
5120 call sub_257ch\r
5121 jp l254bh\r
a16ba2b0 5122l247fh:\r
fecee241
L
5123 call l254bh\r
5124 call sub_257ch\r
5125 jr sub_24c6h\r
a16ba2b0 5126l2487h:\r
fecee241
L
5127 ld a,(is.pfx.IXY)\r
5128 and a\r
5129 jr nz,l2496h\r
5130 comst\r
5131 ld a,(iy+001h)\r
a16ba2b0 5132 comend\r
fecee241 5133 jr l249dh\r
a16ba2b0 5134l2496h:\r
fecee241
L
5135 comst\r
5136 ld a,(iy+002h)\r
a16ba2b0
L
5137 comend\r
5138l249dh:\r
fecee241
L
5139 push af\r
5140 rra\r
5141 rra\r
5142 rra\r
5143 and 007h\r
5144 add a,'0'\r
5145 call OUTCHAR\r
5146 call sub_257ch\r
5147 pop af\r
5148 jr l24f2h\r
a16ba2b0 5149l24aeh:\r
fecee241
L
5150 ld a,(is.pfx.IXY)\r
5151 and a\r
5152 jr nz,l24bdh\r
5153 comst\r
5154 ld a,(iy+001h)\r
a16ba2b0 5155 comend\r
fecee241 5156 jr l24c4h\r
a16ba2b0 5157l24bdh:\r
fecee241
L
5158 comst\r
5159 ld a,(iy+002h)\r
a16ba2b0
L
5160 comend\r
5161l24c4h:\r
fecee241 5162 jr l24f2h\r
a16ba2b0 5163sub_24c6h:\r
fecee241
L
5164 ld a,'('\r
5165 call OUTCHAR\r
5166 comst\r
5167 ld l,(iy+001h)\r
5168 ld h,(iy+002h)\r
a16ba2b0 5169 comend\r
fecee241
L
5170 ld a,001h\r
5171 call sub_23f2h\r
5172 ld a,')'\r
5173 jp OUTCHAR\r
a16ba2b0 5174l24dfh:\r
fecee241
L
5175 comst\r
5176 ld a,(iy+000h)\r
a16ba2b0 5177 comend\r
fecee241
L
5178 rra\r
5179 rra\r
5180 rra\r
5181 jr l24f2h\r
a16ba2b0 5182l24ebh:\r
fecee241
L
5183 comst\r
5184 ld a,(iy+000h)\r
a16ba2b0
L
5185 comend\r
5186l24f2h:\r
fecee241
L
5187 and 007h\r
5188 cp 006h\r
5189 jr nz,l2533h\r
5190 ld a,(is.pfx.IXY)\r
5191 and a\r
5192 ld a,006h\r
5193 jr z,l2533h\r
5194 ld hl,b_0x2538_start\r
5195 ld a,(is.pfx.IXY)\r
5196 dec a\r
5197 jr z,l250ch\r
5198 ld hl,b_0x253B_start\r
a16ba2b0 5199l250ch:\r
fecee241
L
5200 call PSTR\r
5201 comst\r
5202 ld a,(iy+001h)\r
a16ba2b0 5203 comend\r
fecee241
L
5204 and a\r
5205 push af\r
5206 jp m,l2523h\r
5207 ld a,'+'\r
5208 call OUTCHAR\r
5209 pop af\r
5210 jr l252bh\r
a16ba2b0 5211l2523h:\r
fecee241
L
5212 ld a,'-'\r
5213 call OUTCHAR\r
5214 pop af\r
5215 neg\r
a16ba2b0 5216l252bh:\r
fecee241
L
5217 call out.hex\r
5218 ld a,')'\r
5219 jp OUTCHAR\r
a16ba2b0 5220l2533h:\r
fecee241
L
5221 ld hl,t_BCDEHL_HL_A\r
5222 jr l2572h\r
a16ba2b0
L
5223\r
5224b_0x2538_start:\r
5225 DC '(IX'\r
5226b_0x253B_start:\r
5227 DC '(IY'\r
5228\r
5229l253eh:\r
fecee241
L
5230 ld a,(is.pfx.IXY)\r
5231 ld hl,t_HL.IX.IY\r
5232 jr l2572h\r
a16ba2b0 5233l2546h:\r
fecee241
L
5234 ld hl,t_BC.DE.HL.AF\r
5235 jr l254eh\r
a16ba2b0 5236l254bh:\r
fecee241 5237 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 5238l254eh:\r
fecee241
L
5239 comst\r
5240 ld a,(iy+000h)\r
a16ba2b0 5241 comend\r
fecee241
L
5242 rra\r
5243 rra\r
5244 rra\r
5245 rra\r
5246 and 003h\r
5247 cp 002h\r
5248 jr z,l253eh\r
5249 jr l2572h\r
a16ba2b0 5250l2561h:\r
fecee241
L
5251 comst\r
5252 ld a,(iy+000h)\r
a16ba2b0
L
5253 comend\r
5254sub_2568h:\r
fecee241
L
5255 rra\r
5256 rra\r
5257 rra\r
5258 and 007h\r
5259 ld hl,t_tstfl_ZCPS\r
5260 jr l2572h\r
a16ba2b0 5261l2572h:\r
fecee241
L
5262 ld b,a\r
5263 call sub_0a48h\r
5264 jp PSTR\r
a16ba2b0 5265sub_2579h:\r
fecee241 5266 call l23dbh\r
a16ba2b0 5267sub_257ch:\r
fecee241
L
5268 ld a,','\r
5269 jp OUTCHAR\r
a16ba2b0 5270sub_2581h:\r
fecee241 5271 call PSTR\r
a16ba2b0 5272l2584h:\r
fecee241
L
5273 call OUTBL\r
5274 inc c\r
5275 ld a,c\r
5276 cp 006h\r
5277 jr nz,l2584h\r
5278 ret\r
a16ba2b0
L
5279\r
5280t_MNEMONICS:\r
5281 DC 'ADC'\r
5282 DC 'ADD'\r
5283 DC 'AND'\r
5284 DC 'BIT'\r
5285 DC 'CALL'\r
5286 DC 'CCF'\r
5287 DC 'CP'\r
5288 DC 'CPD'\r
5289 DC 'CPDR'\r
5290 DC 'CPI'\r
5291 DC 'CPIR'\r
5292 DC 'CPL'\r
5293 DC 'DAA'\r
5294 DC 'DEC'\r
5295 DC 'DI'\r
5296 DC 'DJNZ'\r
5297 DC 'EI'\r
5298 DC 'EX'\r
5299 DC 'EXX'\r
5300 DC 'HALT'\r
5301 DC 'IM'\r
5302 DC 'IN'\r
5303 DC 'INC'\r
5304 DC 'IND'\r
5305 DC 'INDR'\r
5306 DC 'INI'\r
5307 DC 'INIR'\r
5308 DC 'JP'\r
5309 DC 'JR'\r
5310 DC 'LD'\r
5311 DC 'LDD'\r
5312 DC 'LDDR'\r
5313 DC 'LDI'\r
5314 DC 'LDIR'\r
5315 DC 'NEG'\r
5316 DC 'NOP'\r
5317 DC 'OR'\r
5318 DC 'OTDR'\r
5319 DC 'OTIR'\r
5320 DC 'OUT'\r
5321 DC 'OUTD'\r
5322 DC 'OUTI'\r
5323 DC 'POP'\r
5324 DC 'PUSH'\r
5325 DC 'RES'\r
5326 DC 'RET'\r
5327 DC 'RETI'\r
5328 DC 'RETN'\r
5329 DC 'RL'\r
5330 DC 'RLA'\r
5331 DC 'RLC'\r
5332 DC 'RLCA'\r
5333 DC 'RLD'\r
5334 DC 'RR'\r
5335 DC 'RRA'\r
5336 DC 'RRC'\r
5337 DC 'RRCA'\r
5338 DC 'RRD'\r
5339 DC 'RST'\r
5340 DC 'SBC'\r
5341 DC 'SCF'\r
5342 DC 'SET'\r
5343 DC 'SLA'\r
5344 DC 'SRA'\r
5345 DC 'SRL'\r
5346 DC 'SUB'\r
5347 DC 'XOR'\r
5348 DC 'IN0'\r
5349 DC 'MLT'\r
5350 DC 'OTDM'\r
5351 DC 'OTDMR'\r
5352 DC 'OTIM'\r
5353 DC 'OTIMR'\r
5354 DC 'OUT0'\r
5355 DC 'SLP'\r
5356 DC 'TST'\r
5357 DC 'TSTIO'\r
5358 DB 0\r
fecee241 5359\r
a16ba2b0
L
5360t_BCDEHL_HL_A:\r
5361 DC 'B'\r
5362 DC 'C'\r
5363 DC 'D'\r
5364 DC 'E'\r
5365 DC 'H'\r
5366 DC 'L'\r
5367 DC '(HL)'\r
5368 DC 'A'\r
5369 DB 0\r
5370t_BC.DE.HL.SP:\r
5371 DC 'BC'\r
5372 DC 'DE'\r
5373 DC 'HL'\r
5374 DC 'SP'\r
5375 DB 0\r
5376t_BC.DE.HL.AF:\r
5377 DC 'BC'\r
5378 DC 'DE'\r
5379t_HL.AF:\r
5380 DC 'HL'\r
5381 DC 'AF'\r
5382 DB 0\r
5383t_BC.DE.IY.SP:\r
5384 DC 'BC'\r
5385 DC 'DE'\r
5386 DC 'IY'\r
5387 DC 'SP'\r
5388 DB 0\r
5389t_BC.DE.IX.SP:\r
5390 DC 'BC'\r
5391 DC 'DE'\r
5392 DC 'IX'\r
5393 DC 'SP'\r
5394 DB 0\r
5395t_HL.IX.IY:\r
5396 DC 'HL'\r
5397t_IX.IY:\r
5398 DC 'IX'\r
5399 DC 'IY'\r
5400 DB 0\r
5401t_tstfl_ZC:\r
5402 DC 'NZ'\r
5403 DC 'Z'\r
5404 DC 'NC'\r
5405 DC 'C'\r
5406 DC 'NE'\r
5407 DC 'EQ'\r
5408 DC 'GE'\r
5409 DC 'LT'\r
5410 DB 0\r
5411t_tstfl_ZCPS:\r
5412 DC 'NZ'\r
5413 DC 'Z'\r
5414 DC 'NC'\r
5415 DC 'C'\r
5416 DC 'PO'\r
5417 DC 'PE'\r
5418 DC 'P'\r
5419 DC 'M'\r
5420 DC 'NE'\r
5421 DC 'EQ'\r
5422 DC 'GE'\r
5423 DC 'LT'\r
5424 DC 'NV'\r
5425 DC 'V'\r
5426 DB 0\r
5427t__C_:\r
5428 DC '(C)'\r
5429 DB 0\r
5430\r
5431sub_26e7h:\r
fecee241
L
5432 ld hl,(REG.PC)\r
5433 ld a,h\r
5434 or l\r
5435 jr z,l2715h\r
5436 ld iy,(REG.PC)\r
5437 call sub_1f9eh\r
5438 jp nc,ERROR\r
5439 ld c,b\r
5440 ld b,000h\r
5441 ld hl,(REG.PC)\r
5442 add hl,bc\r
5443 call sub_1117h\r
5444 ld iy,(REG.PC)\r
5445 ld hl,b_0x2717_start\r
5446 call lookup_opc\r
5447 ccf\r
5448 ret c\r
5449 ex de,hl\r
5450 call CALL.HL\r
5451 call c,sub_1117h\r
a16ba2b0 5452l2715h:\r
fecee241
L
5453 scf\r
5454 ret\r
a16ba2b0
L
5455\r
5456b_0x2717_start:\r
fecee241
L
5457 db 0ffh\r
5458 db 0ddh\r
5459 db 000h\r
a16ba2b0
L
5460 dw x278d\r
5461\r
fecee241
L
5462 db 0ffh\r
5463 db 0fdh\r
5464 db 000h\r
a16ba2b0
L
5465 dw x2792\r
5466\r
fecee241
L
5467 db 0ffh\r
5468 db 0edh\r
5469 db 000h\r
a16ba2b0
L
5470 dw x27a2\r
5471\r
5472l2726h:\r
fecee241
L
5473 db 0ffh\r
5474 db 0cdh\r
5475 db 000h\r
a16ba2b0
L
5476 dw x275e\r
5477\r
fecee241
L
5478 db 0ffh\r
5479 db 0c3h\r
5480 db 000h\r
a16ba2b0
L
5481 dw x2769\r
5482\r
fecee241
L
5483 db 0ffh\r
5484 db 0e9h\r
5485 db 000h\r
a16ba2b0
L
5486 dw x2788\r
5487\r
fecee241
L
5488 db 0ffh\r
5489 db 0c9h\r
5490 db 000h\r
a16ba2b0
L
5491 dw x27c9\r
5492\r
fecee241
L
5493 db 0ffh\r
5494 db 0cfh\r
5495 db 000h\r
a16ba2b0
L
5496 dw x280e\r
5497\r
fecee241
L
5498 db 0c7h\r
5499 db 0c7h\r
5500 db 000h\r
a16ba2b0
L
5501 dw x27ea\r
5502\r
fecee241
L
5503 db 0c7h\r
5504 db 0c4h\r
5505 db 000h\r
a16ba2b0
L
5506 dw x275e\r
5507\r
fecee241
L
5508 db 0f7h\r
5509 db 010h\r
5510 db 000h\r
a16ba2b0
L
5511 dw x2775\r
5512\r
fecee241
L
5513 db 0e7h\r
5514 db 020h\r
5515 db 000h\r
a16ba2b0
L
5516 dw x2775\r
5517\r
fecee241
L
5518 db 0c7h\r
5519 db 0c2h\r
5520 db 000h\r
a16ba2b0
L
5521 dw x2769\r
5522\r
fecee241
L
5523 db 0c7h\r
5524 db 0c0h\r
5525 db 000h\r
a16ba2b0
L
5526 dw x27b3\r
5527\r
fecee241 5528 db 000h\r
a16ba2b0
L
5529\r
5530x275e:\r
fecee241
L
5531 ld a,(XBFE8)\r
5532 and a\r
5533 jr nz,x2769\r
5534 ld a,(TCFLG)\r
5535 and a\r
5536 ret nz\r
a16ba2b0
L
5537\r
5538x2769:\r
fecee241
L
5539 comst\r
5540 ld l,(iy+001h)\r
5541 ld h,(iy+002h)\r
a16ba2b0 5542 comend\r
fecee241
L
5543 scf\r
5544 ret\r
a16ba2b0
L
5545\r
5546x2775:\r
fecee241
L
5547 comst\r
5548 ld c,(iy+001h)\r
a16ba2b0 5549 comend\r
fecee241
L
5550 ld a,c\r
5551 rla\r
5552 sbc a,a\r
5553 ld b,a\r
5554 ld hl,(REG.PC)\r
5555 add hl,bc\r
5556 inc hl\r
5557 inc hl\r
5558 scf\r
5559 ret\r
a16ba2b0
L
5560\r
5561x2788:\r
fecee241
L
5562 ld hl,(REG.L)\r
5563 scf\r
5564 ret\r
a16ba2b0
L
5565\r
5566x278d:\r
fecee241
L
5567 ld hl,(reg.ix)\r
5568 jr l2795h\r
a16ba2b0
L
5569\r
5570x2792:\r
fecee241 5571 ld hl,(reg.iy)\r
a16ba2b0 5572l2795h:\r
fecee241
L
5573 comst\r
5574 ld a,(iy+001h)\r
a16ba2b0 5575 comend\r
fecee241
L
5576 cp 0e9h\r
5577 scf\r
5578 ret z\r
5579 and a\r
5580 ret\r
a16ba2b0
L
5581\r
5582x27a2:\r
fecee241
L
5583 comst\r
5584 ld a,(iy+001h)\r
a16ba2b0 5585 comend\r
fecee241
L
5586 cp 04dh\r
5587 jr z,x27c9\r
5588 cp 045h\r
5589 jr z,x27c9\r
5590 and a\r
5591 ret\r
a16ba2b0
L
5592\r
5593x27b3:\r
fecee241
L
5594 comst\r
5595 ld a,(iy+000h)\r
a16ba2b0 5596 comend\r
fecee241
L
5597 ld (XBEDD),a\r
5598 ld hl,(REG.F)\r
5599 push hl\r
5600 pop af\r
5601 call XBEDD\r
5602 scf\r
5603 jr c,x27c9\r
5604 ret\r
a16ba2b0
L
5605\r
5606x27c9:\r
fecee241
L
5607 ld a,(XBFE8)\r
5608 and a\r
5609 jr nz,l27dah\r
5610 ld a,(TCFLG)\r
5611 and a\r
5612 jr z,l27dah\r
5613 call l27dah\r
5614 pop hl\r
5615 ret\r
a16ba2b0 5616l27dah:\r
fecee241
L
5617 ld hl,(REG.SP)\r
5618 comst\r
5619 ld e,(hl)\r
5620 inc hl\r
5621 ld d,(hl)\r
a16ba2b0 5622 comend\r
fecee241
L
5623 ex de,hl\r
5624 call sub_1117h\r
5625 and a\r
5626 ret\r
a16ba2b0
L
5627\r
5628x27ea:\r
cdc4625b 5629 ld a,(ddtzrst)\r
fecee241
L
5630 comst\r
5631 cp (iy+000h)\r
a16ba2b0 5632 comend\r
fecee241
L
5633 ret z\r
5634 comst\r
5635 ld a,(iy+000h)\r
a16ba2b0 5636 comend\r
fecee241
L
5637 and 038h\r
5638 ld l,a\r
5639 ld h,000h\r
5640 ld a,(XBFE8)\r
5641 and a\r
5642 jr nz,l280ch\r
5643 ld a,(TCFLG)\r
5644 and a\r
5645 ret nz\r
a16ba2b0 5646l280ch:\r
fecee241
L
5647 scf\r
5648 ret\r
a16ba2b0
L
5649\r
5650x280e:\r
fecee241
L
5651 and a\r
5652 ret\r
a16ba2b0
L
5653\r
5654CMD.C:\r
fecee241
L
5655 ld hl,CMD.C\r
5656 ld a,001h\r
5657 jr l281bh\r
a16ba2b0
L
5658\r
5659CMD.T:\r
fecee241
L
5660 xor a\r
5661 ld hl,CMD.T\r
a16ba2b0 5662l281bh:\r
fecee241
L
5663 ld (CMD_RPT),hl\r
5664 ld (TCFLG),a\r
5665 ld a,(de)\r
5666 sub 'N'\r
5667 jr nz,l2827h\r
5668 inc de\r
a16ba2b0 5669l2827h:\r
fecee241
L
5670 ld (TCNFLG),a\r
5671 ld a,(de)\r
5672 sub 'J'\r
5673 jr nz,l2830h\r
5674 inc de\r
a16ba2b0 5675l2830h:\r
fecee241
L
5676 ld (TRJFLG),a\r
5677 call sub_289fh\r
5678 jr z,l283eh\r
5679 ld hl,1\r
5680 call get_lastarg_def\r
a16ba2b0 5681l283eh:\r
fecee241
L
5682 ld (TCCSTR),hl\r
5683 sub a\r
5684 ld (XA747),a\r
a16ba2b0 5685l2845h:\r
fecee241
L
5686 call sub_26e7h\r
5687 jr l289ch\r
a16ba2b0 5688l284ah:\r
fecee241
L
5689 call sub_0e68h\r
5690 ld a,(TRJFLG)\r
5691 and a\r
5692 jr nz,l2864h\r
5693 ld iy,(REG.PC)\r
5694 call sub_28c1h\r
5695 jr z,l2864h\r
5696 ld hl,l2726h\r
5697 call lookup_opc\r
5698 jr nc,l2845h\r
a16ba2b0 5699l2864h:\r
fecee241
L
5700 ld a,(XBFEA)\r
5701 and a\r
5702 jr z,l2881h\r
5703 ld de,(TCCSTR)\r
5704 call EXPR\r
5705 ld a,h\r
5706 or l\r
5707 add a,0ffh\r
5708 sbc a,a\r
5709 ld hl,XBFEA\r
5710 xor (hl)\r
5711 bit 1,a\r
5712 jr z,l288ch\r
a16ba2b0 5713l287eh:\r
fecee241 5714 jp l102eh\r
a16ba2b0 5715l2881h:\r
fecee241
L
5716 ld hl,(TCCSTR)\r
5717 dec hl\r
5718 ld (TCCSTR),hl\r
5719 ld a,h\r
5720 or l\r
5721 jr z,l287eh\r
a16ba2b0 5722l288ch:\r
fecee241
L
5723 call sub_26e7h\r
5724 jr nc,l287eh\r
5725 ld a,(TCNFLG)\r
5726 ld b,a\r
5727 ld a,(XA747)\r
5728 or b\r
5729 ld (XA747),a\r
a16ba2b0 5730l289ch:\r
fecee241 5731 jp l1183h\r
a16ba2b0
L
5732\r
5733sub_289fh:\r
fecee241
L
5734 call SKIPBL\r
5735 xor a\r
5736 ld (XBFEA),a\r
5737 ld a,(de)\r
5738 cp 'U'\r
5739 jr z,l28aeh\r
5740 cp 'W'\r
5741 ret nz\r
a16ba2b0
L
5742\r
5743l28aeh:\r
fecee241
L
5744 inc de\r
5745 push af\r
5746 push de\r
5747 call EXPR\r
5748 jp c,ERROR\r
5749 call assert_eol\r
5750 pop hl\r
5751 pop af\r
5752 ld (XBFEA),a\r
5753 sub a\r
5754 ret\r
a16ba2b0
L
5755\r
5756sub_28c1h:\r
fecee241
L
5757 comst\r
5758 ld a,(iy+000h)\r
a16ba2b0
L
5759 ld b,(iy+0001)\r
5760 comend\r
fecee241
L
5761 cp 0edh\r
5762 jr z,l28dbh\r
5763 and 0dfh\r
5764 cp 0ddh\r
5765 ret nz\r
a16ba2b0 5766 ld a,b\r
fecee241
L
5767 cp 0e9h\r
5768 ret\r
a16ba2b0
L
5769l28dbh:\r
5770 ld a,b\r
fecee241
L
5771 and 0f7h\r
5772 cp 045h\r
5773 ret\r
a16ba2b0
L
5774\r
5775?excom:\r
fecee241
L
5776 ex (sp),hl\r
5777 push af\r
5778 push bc\r
5779 push de\r
5780 ld c,(hl)\r
5781 ld b,000h\r
5782 inc hl\r
a16ba2b0
L
5783 ld a,?lcmax\r
5784 sub c\r
fecee241 5785 ld de,?exeit\r
a16ba2b0
L
5786 ldir\r
5787 ex de,hl\r
5788 ld (hl),018h\r
5789 inc hl\r
5790 ld (hl),a\r
5791 ex de,hl\r
fecee241
L
5792 pop de\r
5793 pop bc\r
5794 pop af\r
5795 ex (sp),hl\r
29605004 5796 if CPU_Z180\r
fecee241
L
5797 push hl\r
5798 ld hl,(ubbr)\r
a16ba2b0 5799\r
29605004 5800 else\r
fecee241
L
5801 push af\r
5802 ld a,(ubnk)\r
29605004 5803 endif\r
a16ba2b0 5804 if ROMSYS\r
fecee241
L
5805 push af\r
5806 ld a,(uromen)\r
a16ba2b0 5807 endif\r
fecee241
L
5808 jp ?comcod\r
5809\r
a16ba2b0
L
5810;------------------------------------------\r
5811; ddtram\r
5812;------------------------------------------\r
5813\r
5814vartab:\r
8df5b655
L
5815; dseg\r
5816 cseg\r
fecee241 5817ddtram:\r
a16ba2b0 5818;todo:\r
4caee1ec 5819; The following 2 params are changeable by user.\r
a16ba2b0
L
5820; Should these moved to top ram?\r
5821;\r
cdc4625b
L
5822ddtzrst:\r
5823 rst DDTZRSTVEC ;rst used by ddtz\r
29605004 5824ddtei: ei ;ints enabled/disabled while ddtz is running\r
a16ba2b0 5825 ret ;\r
a16ba2b0 5826offs.pc:\r
fecee241 5827 dw TPA\r
a16ba2b0 5828offs.@:\r
fecee241 5829 dw 0\r
a16ba2b0 5830CMD_ERR:\r
fecee241 5831 dw 0\r
a16ba2b0 5832CMD_RPT:\r
fecee241 5833 dw DDTZML\r
a16ba2b0 5834ci.buf:\r
fecee241 5835 db 80\r
a16ba2b0
L
5836 rept 83\r
5837 db 0\r
5838 endm\r
a16ba2b0 5839CON.COL:\r
fecee241 5840 db 0\r
a16ba2b0 5841XA747:\r
fecee241 5842 db 0\r
a16ba2b0 5843bp_tab:\r
fecee241 5844 rept BP_CNT\r
a16ba2b0
L
5845 db 0,0\r
5846 dw 0,0,0\r
5847 endm\r
5848BP_SIZE equ 8\r
a16ba2b0 5849sexp1:\r
fecee241 5850 dw sexpbuf\r
a16ba2b0 5851sexp2:\r
fecee241 5852 dw sexpbuf\r
a16ba2b0 5853sexpbuf:\r
fecee241 5854 rept 128\r
a16ba2b0
L
5855 db 0\r
5856 endm\r
a16ba2b0
L
5857sexpbufe:\r
5858\r
5859msg.Y:\r
fecee241 5860 dc 'Y0'\r
a16ba2b0 5861reg.Y:\r
fecee241 5862 rept 10\r
a16ba2b0
L
5863 dw 0\r
5864 endm\r
a16ba2b0 5865lst.S:\r
fecee241 5866 dw 0\r
a16ba2b0 5867lst.IP:\r
fecee241 5868 dw 0\r
a16ba2b0 5869lst.OP:\r
fecee241 5870 dw 0\r
a16ba2b0 5871lst.OD:\r
a16ba2b0 5872 db 0\r
a16ba2b0 5873lst.Qj:\r
a16ba2b0 5874 db 0\r
a16ba2b0 5875lst.D:\r
fecee241 5876 dw 0\r
a16ba2b0 5877HILOD:\r
fecee241 5878 dw 0\r
a16ba2b0 5879MAXLOD:\r
fecee241 5880 dw 0\r
a16ba2b0 5881XB068:\r
fecee241 5882 dw 0\r
a16ba2b0 5883lst.A:\r
fecee241 5884 dw 0\r
a16ba2b0 5885XB06C:\r
fecee241 5886 dw 0\r
a16ba2b0 5887pfx.IXY:\r
fecee241 5888 db 000h\r
a16ba2b0 5889is.pfx.IXY:\r
fecee241 5890 db 000h\r
a16ba2b0 5891lst.L:\r
fecee241 5892 dw 0\r
a16ba2b0 5893XBE01:\r
fecee241 5894 dw 0\r
a16ba2b0 5895XBE03:\r
fecee241 5896 db 000h\r
a16ba2b0 5897XBEDD:\r
a16ba2b0 5898 ret ;ret cc\r
fecee241
L
5899 and a\r
5900 pop hl\r
5901 inc hl\r
5902 jp (hl)\r
a16ba2b0 5903XBFE8:\r
fecee241 5904 db 0\r
a16ba2b0 5905TCFLG:\r
fecee241 5906 db 0\r
a16ba2b0 5907XBFEA:\r
fecee241 5908 db 0\r
a16ba2b0 5909TCCSTR:\r
fecee241 5910 dw 0\r
a16ba2b0 5911TCNFLG:\r
fecee241 5912 db 0\r
a16ba2b0 5913TRJFLG:\r
fecee241 5914 db 0\r
a16ba2b0 5915wstrtflg:\r
a16ba2b0 5916 db 1\r
a16ba2b0
L
5917\r
5918 cseg\r
5919vartabe:\r
5920\r
5921;------------------------------------------\r
5922\r
ad9bc17c 5923 .phase sysram_start+bs$stack$size\r
a16ba2b0 5924$stack:\r
ad9bc17c 5925$stcka equ $ - bs$stack$size\r
a16ba2b0
L
5926\r
5927curphse defl $\r
5928 .dephase\r
5929sysramc:\r
5930 .phase curphse\r
5931topcodbeg:\r
5932\r
5933reg.l2: db 0 ; 0fe50h\r
5934reg.h2: db 0 ; 0fe51h\r
5935reg.e2: db 0 ; 0fe52h\r
5936reg.d2: db 0 ; 0fe53h\r
5937reg.c2: db 0 ; 0fe54h\r
5938reg.b2: db 0 ; 0fe55h\r
5939reg.f2: db 0 ; 0fe56h\r
5940reg.a2: db 0 ; 0fe57h\r
5941 db 0\r
5942reg.i: db high ivtab\r
5943reg.iy: dw 0 ; 0fe5ah\r
5944reg.ix: dw 0 ; 0fe5ch\r
5945reg.e: db 0 ; 0fe5eh\r
5946reg.d: db 0 ; 0fe5fh\r
5947reg.c: db 0 ; 0fe60h\r
5948reg.b: db 0 ; 0fe61h\r
5949 if ROMSYS\r
5950udcntl: db CWAITIO ; 0fe62h (mem-, io- wait)\r
5951uromen: db ROM_DIS ; 0fe63h\r
5952 endif\r
29605004 5953 if CPU_Z180\r
a16ba2b0
L
5954ubbr: db 0 ; 0fe64h\r
5955ucbar: db USR$CBAR ; 0fe65h\r
29605004
L
5956 else\r
5957 db 0 ; 0fe64h\r
5958ubnk: db 0 ; 0fe65h\r
5959 endif\r
a16ba2b0
L
5960reg.f: db 0 ; 0fe66h\r
5961reg.a: db 0 ; 0fe67h\r
5962reg.l: db 0 ; 0fe68h\r
5963reg.h: db 0 ; 0fe69h\r
5964reg.sp: dw TOPRAM ; 0fe6ah\r
5965\r
5966$go:\r
5967 if ROMSYS\r
5968 out (000h),a ;064c fe6c\r
fecee241 5969 out0 (dcntl),l\r
29605004 5970 pop hl\r
a16ba2b0 5971 endif\r
29605004 5972 if CPU_Z180\r
fecee241
L
5973 out0 (cbar),h\r
5974 out0 (bbr),l\r
29605004
L
5975 else\r
5976 ld a,h\r
5977 call selbnk\r
5978 endif\r
fecee241
L
5979 pop af\r
5980 pop hl\r
5981 ld sp,(reg.sp)\r
a16ba2b0 5982reg.iff:\r
fecee241 5983 ei\r
a16ba2b0
L
5984 db 0C3h ;jp TPA ;065f feff ($+1): reg.pc\r
5985reg.pc:\r
5986 dw TPA\r
fecee241 5987\r
a16ba2b0
L
5988bpent:\r
5989 ld (reg.l),hl ;0662 fe82: bpent:\r
fecee241
L
5990 pop hl\r
5991 dec hl\r
5992 ld (reg.pc),hl\r
5993 ld (reg.sp),sp\r
5994 ld sp,reg.l\r
5995 push af\r
29605004 5996 if CPU_Z180\r
fecee241
L
5997;;; TODO: cbar on trap?\r
5998 in0 h,(cbar)\r
5999 in0 l,(bbr)\r
6000 ld a,SYS$CBAR\r
6001 out0 (cbar),a\r
29605004
L
6002 else\r
6003 ld a,(@cbnk)\r
6004 ld h,a\r
6005 xor a\r
6006 ld l,a\r
6007 call selbnk\r
6008 endif\r
fecee241 6009 push hl\r
a16ba2b0
L
6010\r
6011 if ROMSYS\r
fecee241
L
6012 in0 l,(dcntl)\r
6013 ld a,CWAITROM+CWAITIO\r
6014 out0 (dcntl),a\r
6015 ld a,($crom)\r
6016 cp c$rom\r
6017 ld a,ROM_EN\r
6018 out (000h),a\r
a16ba2b0
L
6019 endif\r
6020\r
fecee241 6021 jp bpddtz\r
a16ba2b0
L
6022\r
6023?comcod:\r
6024 if ROMSYS\r
6025 out (000h),a ;0692 feb2\r
fecee241 6026 pop af\r
a16ba2b0
L
6027 endif\r
6028\r
29605004 6029 if CPU_Z180\r
fecee241
L
6030 out0 (cbar),h\r
6031 out0 (bbr),l\r
6032 pop hl\r
29605004
L
6033 else\r
6034 call selbnk\r
6035 pop af\r
6036 endif\r
a16ba2b0
L
6037?exeit:\r
6038 ds ?lcmax+2\r
fecee241 6039 push af\r
29605004 6040 if CPU_Z180\r
fecee241
L
6041 ld a,SYS$CBAR\r
6042 out0 (cbar),a\r
a16ba2b0 6043\r
29605004
L
6044;;; TODO: bbr?\r
6045 else\r
6046 xor a\r
6047 call selbnk\r
6048 endif\r
a16ba2b0 6049 if ROMSYS\r
fecee241
L
6050 ld a,ROM_EN\r
6051 out (000h),a\r
a16ba2b0 6052 endif\r
fecee241
L
6053\r
6054 pop af\r
6055 ret\r
a16ba2b0
L
6056\r
6057topcodend:\r
6058curph defl $\r
6059 .dephase\r
6060sysrame:\r
6061\r
6062 end\r