]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/ddtz.180
switch fifos conin,conout
[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
8590a76b 1232 call get.decdigit\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
1242 call get.decdigit\r
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
29605004 2200 if ROMSYS\r
fecee241
L
2201 defb 000h\r
2202 defw uromen\r
29605004
L
2203 endif\r
2204 if CPU_Z180\r
fecee241
L
2205 defb 000h\r
2206 defw ucbar\r
2207 defb 000h\r
2208 defw ubbr\r
29605004 2209 else\r
fecee241
L
2210 defb 000h\r
2211 defw ubnk\r
29605004 2212 endif\r
fecee241
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
fecee241
L
2276 ld hl,(lst.S)\r
2277 call get_lastarg_def\r
a16ba2b0 2278l13d8h:\r
fecee241
L
2279 ld (lst.S),hl\r
2280 call out.hl.@\r
2281 call OUTBL\r
2282 comst\r
2283 ld a,(hl)\r
a16ba2b0 2284 comend\r
fecee241
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
fecee241
L
2303 dec de\r
2304 call get_bytes_m\r
2305 jr l13d8h\r
a16ba2b0
L
2306\r
2307CMD.@:\r
fecee241
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
fecee241
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
fecee241
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
fecee241
L
2336 ld a,(hl)\r
2337 jr l1444h\r
a16ba2b0 2338l1442h:\r
29605004 2339 endif\r
fecee241 2340 in a,(c)\r
a16ba2b0 2341l1444h:\r
fecee241
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
fecee241
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
fecee241
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
fecee241
L
2377 pop af\r
2378 out (c),a\r
2379 ret\r
29605004 2380 if CPU_Z180\r
a16ba2b0 2381l148dh:\r
fecee241
L
2382 pop af\r
2383 ld (hl),a\r
2384 ret\r
29605004 2385 endif\r
a16ba2b0
L
2386\r
2387CMD.V:\r
2388 call get_arg3 ;1490 get from, size, to\r
2389cmp_mem:\r
fecee241
L
2390 push bc\r
2391 comst\r
2392 ld a,(de)\r
2393 ld b,(hl)\r
a16ba2b0 2394 comend\r
fecee241
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
fecee241
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
2418 ret\r
a16ba2b0
L
2419\r
2420CMD.M:\r
fecee241
L
2421 ld a,(de)\r
2422 cp 'V'\r
2423 jr nz,bm_nv\r
2424 inc de\r
a16ba2b0
L
2425bm_nv:\r
2426 push af ;14c9 save 'V' flag\r
fecee241
L
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
2439 comst\r
2440 lddr\r
a16ba2b0 2441 comend\r
fecee241 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
fecee241
L
2448 pop bc\r
2449 pop de\r
2450 pop hl\r
2451 pop af\r
a16ba2b0 2452 jr z,cmp_mem ;14ed validate?\r
fecee241 2453 ret\r
a16ba2b0 2454CMD.H:\r
fecee241
L
2455 call EXPR\r
2456 jp c,l173ch\r
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
L
2474l1511h:\r
2475 call out.hl ;1511 val\r
fecee241 2476 call outbl2\r
a16ba2b0 2477 call sub_0928h ;1517 -val\r
fecee241 2478 call outbl4\r
a16ba2b0 2479 call out.hl.dec ;151d dec\r
fecee241 2480 call outbl2\r
a16ba2b0 2481 call out.hl.decm ;1523 -dec\r
fecee241 2482 call outbl4\r
a16ba2b0 2483 call out.bin.w ;1529 bin\r
fecee241
L
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
a16ba2b0
L
2938\r
2939b_0x17F0_start:\r
fecee241 2940 defb 088h\r
a16ba2b0
L
2941\r
2942b_0x17F1_start:\r
fecee241 2943 defw l1b74h\r
a16ba2b0
L
2944\r
2945b_0x17F3_start:\r
fecee241 2946 defb 080h\r
a16ba2b0
L
2947\r
2948b_0x17F4_start:\r
fecee241 2949 defw l1babh\r
a16ba2b0
L
2950\r
2951b_0x17F6_start:\r
fecee241 2952 defb 0a0h\r
a16ba2b0
L
2953\r
2954b_0x17F7_start:\r
fecee241 2955 defw l1c14h\r
a16ba2b0
L
2956\r
2957b_0x17F9_start:\r
fecee241 2958 defb 040h\r
a16ba2b0
L
2959\r
2960b_0x17FA_start:\r
fecee241 2961 defw l1c38h\r
a16ba2b0
L
2962\r
2963b_0x17FC_start:\r
fecee241 2964 defb 0c4h\r
a16ba2b0
L
2965\r
2966b_0x17FD_start:\r
fecee241 2967 defw l1b36h\r
a16ba2b0
L
2968\r
2969b_0x17FF_start:\r
fecee241 2970 defb 03fh\r
a16ba2b0
L
2971\r
2972b_0x1800_start:\r
fecee241 2973 defw l1babh\r
a16ba2b0
L
2974\r
2975b_0x1802_start:\r
fecee241 2976 defb 0b8h\r
a16ba2b0
L
2977\r
2978b_0x1803_start:\r
fecee241 2979 defw gen.opc.ED2\r
a16ba2b0
L
2980\r
2981b_0x1805_start:\r
fecee241 2982 defb 0a9h\r
a16ba2b0
L
2983\r
2984b_0x1806_start:\r
fecee241 2985 defw gen.opc.ED2\r
a16ba2b0
L
2986\r
2987b_0x1808_start:\r
fecee241 2988 defb 0b9h\r
a16ba2b0
L
2989\r
2990b_0x1809_start:\r
fecee241 2991 defw gen.opc.ED2\r
a16ba2b0
L
2992\r
2993b_0x180B_start:\r
fecee241 2994 defb 0a1h\r
a16ba2b0
L
2995\r
2996b_0x180C_start:\r
fecee241 2997 defw gen.opc.ED2\r
a16ba2b0
L
2998\r
2999b_0x180E_start:\r
fecee241 3000 defb 0b1h\r
a16ba2b0
L
3001\r
3002b_0x180F_start:\r
fecee241 3003 defw l1b36h\r
a16ba2b0
L
3004\r
3005b_0x1811_start:\r
fecee241 3006 defb 02fh\r
a16ba2b0
L
3007\r
3008b_0x1812_start:\r
fecee241 3009 defw l1b36h\r
a16ba2b0
L
3010\r
3011b_0x1814_start:\r
fecee241 3012 defb 027h\r
a16ba2b0
L
3013\r
3014b_0x1815_start:\r
fecee241 3015 defw l1dabh\r
a16ba2b0
L
3016\r
3017b_0x1817_start:\r
fecee241 3018 defb 005h\r
a16ba2b0
L
3019\r
3020b_0x1818_start:\r
fecee241 3021 defw l1b36h\r
a16ba2b0
L
3022\r
3023b_0x181A_start:\r
fecee241 3024 defb 0f3h\r
a16ba2b0
L
3025\r
3026b_0x181B_start:\r
fecee241 3027 defw l1ca4h\r
a16ba2b0
L
3028\r
3029b_0x181D_start:\r
fecee241 3030 defb 010h\r
a16ba2b0
L
3031\r
3032b_0x181E_start:\r
fecee241 3033 defw l1b36h\r
a16ba2b0
L
3034\r
3035b_0x1820_start:\r
fecee241 3036 defb 0fbh\r
a16ba2b0
L
3037\r
3038b_0x1821_start:\r
fecee241 3039 defw l1d54h\r
a16ba2b0
L
3040\r
3041b_0x1823_start:\r
fecee241 3042 defb 0e3h\r
a16ba2b0
L
3043\r
3044b_0x1824_start:\r
fecee241 3045 defw l1b36h\r
a16ba2b0
L
3046\r
3047b_0x1826_start:\r
fecee241 3048 defb 0d9h\r
a16ba2b0
L
3049\r
3050b_0x1827_start:\r
fecee241 3051 defw l1b36h\r
a16ba2b0
L
3052\r
3053b_0x1829_start:\r
fecee241 3054 defb 076h\r
a16ba2b0
L
3055\r
3056b_0x182A_start:\r
fecee241 3057 defw l1cbfh\r
a16ba2b0
L
3058\r
3059b_0x182C_start:\r
fecee241 3060 defb 046h\r
a16ba2b0
L
3061\r
3062b_0x182D_start:\r
fecee241 3063 defw l1cf8h\r
a16ba2b0
L
3064\r
3065b_0x182F_start:\r
fecee241 3066 defb 040h\r
a16ba2b0
L
3067\r
3068b_0x1830_start:\r
fecee241 3069 defw l1dabh\r
a16ba2b0
L
3070\r
3071b_0x1832_start:\r
fecee241 3072 defb 004h\r
a16ba2b0
L
3073\r
3074b_0x1833_start:\r
fecee241 3075 defw gen.opc.ED2\r
a16ba2b0
L
3076\r
3077b_0x1835_start:\r
fecee241 3078 defb 0aah\r
a16ba2b0
L
3079\r
3080b_0x1836_start:\r
fecee241 3081 defw gen.opc.ED2\r
a16ba2b0
L
3082\r
3083b_0x1838_start:\r
fecee241 3084 defb 0bah\r
a16ba2b0
L
3085\r
3086b_0x1839_start:\r
fecee241 3087 defw gen.opc.ED2\r
a16ba2b0
L
3088\r
3089b_0x183B_start:\r
fecee241 3090 defb 0a2h\r
a16ba2b0
L
3091\r
3092b_0x183C_start:\r
fecee241 3093 defw gen.opc.ED2\r
a16ba2b0
L
3094\r
3095b_0x183E_start:\r
fecee241 3096 defb 0b2h\r
a16ba2b0
L
3097\r
3098b_0x183F_start:\r
fecee241 3099 defw l1c5eh\r
a16ba2b0
L
3100\r
3101b_0x1841_start:\r
fecee241 3102 defb 0c2h\r
a16ba2b0
L
3103\r
3104b_0x1842_start:\r
fecee241 3105 defw l1cabh\r
a16ba2b0
L
3106\r
3107b_0x1844_start:\r
fecee241 3108 defb 020h\r
a16ba2b0
L
3109\r
3110b_0x1845_start:\r
fecee241 3111 defw l1934h\r
a16ba2b0
L
3112\r
3113b_0x1847_start:\r
fecee241 3114 defb 040h\r
a16ba2b0
L
3115\r
3116b_0x1848_start:\r
fecee241 3117 defw gen.opc.ED2\r
a16ba2b0
L
3118\r
3119b_0x184A_start:\r
fecee241 3120 defb 0a8h\r
a16ba2b0
L
3121\r
3122b_0x184B_start:\r
fecee241 3123 defw gen.opc.ED2\r
a16ba2b0
L
3124\r
3125b_0x184D_start:\r
fecee241 3126 defb 0b8h\r
a16ba2b0
L
3127\r
3128b_0x184E_start:\r
fecee241 3129 defw gen.opc.ED2\r
a16ba2b0
L
3130\r
3131b_0x1850_start:\r
fecee241 3132 defb 0a0h\r
a16ba2b0
L
3133\r
3134b_0x1851_start:\r
fecee241 3135 defw gen.opc.ED2\r
a16ba2b0
L
3136\r
3137b_0x1853_start:\r
fecee241 3138 defb 0b0h\r
a16ba2b0
L
3139\r
3140b_0x1854_start:\r
fecee241 3141 defw gen.opc.ED2\r
a16ba2b0
L
3142\r
3143b_0x1856_start:\r
fecee241 3144 defb 044h\r
a16ba2b0
L
3145\r
3146b_0x1857_start:\r
fecee241 3147 defw l1b36h\r
a16ba2b0
L
3148\r
3149b_0x1859_start:\r
fecee241 3150 defb 000h\r
a16ba2b0
L
3151\r
3152b_0x185A_start:\r
fecee241 3153 defw l1babh\r
a16ba2b0
L
3154\r
3155b_0x185C_start:\r
fecee241 3156 defb 0b0h\r
a16ba2b0
L
3157\r
3158b_0x185D_start:\r
fecee241 3159 defw gen.opc.ED2\r
a16ba2b0
L
3160\r
3161b_0x185F_start:\r
fecee241 3162 defb 0bbh\r
a16ba2b0
L
3163\r
3164b_0x1860_start:\r
fecee241 3165 defw gen.opc.ED2\r
a16ba2b0
L
3166\r
3167b_0x1862_start:\r
fecee241 3168 defb 0b3h\r
a16ba2b0
L
3169\r
3170b_0x1863_start:\r
fecee241 3171 defw l1d2ch\r
a16ba2b0
L
3172\r
3173b_0x1865_start:\r
fecee241 3174 defb 041h\r
a16ba2b0
L
3175\r
3176b_0x1866_start:\r
fecee241 3177 defw gen.opc.ED2\r
a16ba2b0
L
3178\r
3179b_0x1868_start:\r
fecee241 3180 defb 0abh\r
a16ba2b0
L
3181\r
3182b_0x1869_start:\r
fecee241 3183 defw gen.opc.ED2\r
a16ba2b0
L
3184\r
3185b_0x186B_start:\r
fecee241 3186 defb 0a3h\r
a16ba2b0
L
3187\r
3188b_0x186C_start:\r
fecee241 3189 defw l1ce4h\r
a16ba2b0
L
3190\r
3191b_0x186E_start:\r
fecee241 3192 defb 0c1h\r
a16ba2b0
L
3193\r
3194b_0x186F_start:\r
fecee241 3195 defw l1ce4h\r
a16ba2b0
L
3196\r
3197b_0x1871_start:\r
fecee241 3198 defb 0c5h\r
a16ba2b0
L
3199\r
3200b_0x1872_start:\r
fecee241 3201 defw l1c14h\r
a16ba2b0
L
3202\r
3203b_0x1874_start:\r
fecee241 3204 defb 080h\r
a16ba2b0
L
3205\r
3206b_0x1875_start:\r
fecee241 3207 defw l1c50h\r
a16ba2b0
L
3208\r
3209b_0x1877_start:\r
fecee241 3210 defb 0c0h\r
a16ba2b0
L
3211\r
3212b_0x1878_start:\r
fecee241 3213 defw gen.opc.ED2\r
a16ba2b0
L
3214\r
3215b_0x187A_start:\r
fecee241 3216 defb 04dh\r
a16ba2b0
L
3217\r
3218b_0x187B_start:\r
fecee241 3219 defw gen.opc.ED2\r
a16ba2b0
L
3220\r
3221b_0x187D_start:\r
fecee241 3222 defb 045h\r
a16ba2b0
L
3223\r
3224b_0x187E_start:\r
fecee241 3225 defw l1bd8h\r
a16ba2b0
L
3226\r
3227b_0x1880_start:\r
fecee241 3228 defb 010h\r
a16ba2b0
L
3229\r
3230b_0x1881_start:\r
fecee241 3231 defw l1b36h\r
a16ba2b0
L
3232\r
3233b_0x1883_start:\r
fecee241 3234 defb 017h\r
a16ba2b0
L
3235\r
3236b_0x1884_start:\r
fecee241 3237 defw l1bd8h\r
a16ba2b0
L
3238\r
3239b_0x1886_start:\r
fecee241 3240 defb 000h\r
a16ba2b0
L
3241\r
3242b_0x1887_start:\r
fecee241 3243 defw l1b36h\r
a16ba2b0
L
3244\r
3245b_0x1889_start:\r
fecee241 3246 defb 007h\r
a16ba2b0
L
3247\r
3248b_0x188A_start:\r
fecee241 3249 defw gen.opc.ED2\r
a16ba2b0
L
3250\r
3251b_0x188C_start:\r
fecee241 3252 defb 06fh\r
a16ba2b0
L
3253\r
3254b_0x188D_start:\r
fecee241 3255 defw l1bd8h\r
a16ba2b0
L
3256\r
3257b_0x188F_start:\r
fecee241 3258 defb 018h\r
a16ba2b0
L
3259\r
3260b_0x1890_start:\r
fecee241 3261 defw l1b36h\r
a16ba2b0
L
3262\r
3263b_0x1892_start:\r
fecee241 3264 defb 01fh\r
a16ba2b0
L
3265\r
3266b_0x1893_start:\r
fecee241 3267 defw l1bd8h\r
a16ba2b0
L
3268\r
3269b_0x1895_start:\r
fecee241 3270 defb 008h\r
a16ba2b0
L
3271\r
3272b_0x1896_start:\r
fecee241 3273 defw l1b36h\r
a16ba2b0
L
3274\r
3275b_0x1898_start:\r
fecee241 3276 defb 00fh\r
a16ba2b0
L
3277\r
3278b_0x1899_start:\r
fecee241 3279 defw gen.opc.ED2\r
a16ba2b0
L
3280\r
3281b_0x189B_start:\r
fecee241 3282 defb 067h\r
a16ba2b0
L
3283\r
3284b_0x189C_start:\r
fecee241 3285 defw l1cd5h\r
a16ba2b0
L
3286\r
3287b_0x189E_start:\r
fecee241 3288 defb 0c7h\r
a16ba2b0
L
3289\r
3290b_0x189F_start:\r
fecee241 3291 defw l1b54h\r
a16ba2b0
L
3292\r
3293b_0x18A1_start:\r
fecee241 3294 defb 098h\r
a16ba2b0
L
3295\r
3296b_0x18A2_start:\r
fecee241 3297 defw l1b36h\r
a16ba2b0
L
3298\r
3299b_0x18A4_start:\r
fecee241 3300 defb 037h\r
a16ba2b0
L
3301\r
3302b_0x18A5_start:\r
fecee241 3303 defw l1c14h\r
a16ba2b0
L
3304\r
3305b_0x18A7_start:\r
fecee241 3306 defb 0c0h\r
a16ba2b0
L
3307\r
3308b_0x18A8_start:\r
fecee241 3309 defw l1bd8h\r
a16ba2b0
L
3310\r
3311b_0x18AA_start:\r
fecee241 3312 defb 020h\r
a16ba2b0
L
3313\r
3314b_0x18AB_start:\r
fecee241 3315 defw l1bd8h\r
a16ba2b0
L
3316\r
3317b_0x18AD_start:\r
fecee241 3318 defb 028h\r
a16ba2b0
L
3319\r
3320b_0x18AE_start:\r
fecee241 3321 defw l1bd8h\r
a16ba2b0
L
3322\r
3323b_0x18B0_start:\r
fecee241 3324 defb 038h\r
a16ba2b0
L
3325\r
3326b_0x18B1_start:\r
fecee241 3327 defw l1babh\r
a16ba2b0
L
3328\r
3329b_0x18B3_start:\r
fecee241 3330 defb 090h\r
a16ba2b0
L
3331\r
3332b_0x18B4_start:\r
fecee241 3333 defw l1babh\r
a16ba2b0
L
3334\r
3335b_0x18B6_start:\r
fecee241 3336 defb 0a8h\r
a16ba2b0
L
3337\r
3338b_0x18B7_start:\r
fecee241 3339 defw A.IN0\r
a16ba2b0
L
3340\r
3341b_0x18B9_start:\r
fecee241 3342 defb 000h\r
a16ba2b0
L
3343\r
3344b_0x18BA_start:\r
fecee241 3345 defw A.MLT\r
a16ba2b0
L
3346\r
3347b_0x18BC_start:\r
fecee241
L
3348 defb 04ch\r
3349 ld b,e\r
3350 dec de\r
a16ba2b0
L
3351\r
3352b_0x18BF_start:\r
fecee241 3353 defb 08bh\r
a16ba2b0
L
3354\r
3355b_0x18C0_start:\r
fecee241 3356 defw gen.opc.ED2\r
a16ba2b0
L
3357\r
3358b_0x18C2_start:\r
fecee241 3359 defb 09bh\r
a16ba2b0
L
3360\r
3361b_0x18C3_start:\r
fecee241 3362 defw gen.opc.ED2\r
a16ba2b0
L
3363\r
3364b_0x18C5_start:\r
fecee241 3365 defb 083h\r
a16ba2b0
L
3366\r
3367b_0x18C6_start:\r
fecee241 3368 defw gen.opc.ED2\r
a16ba2b0
L
3369\r
3370b_0x18C8_start:\r
fecee241 3371 defb 093h\r
a16ba2b0
L
3372\r
3373b_0x18C9_start:\r
fecee241 3374 defw l18fdh\r
a16ba2b0
L
3375\r
3376b_0x18CB_start:\r
fecee241 3377 defb 001h\r
a16ba2b0
L
3378\r
3379b_0x18CC_start:\r
fecee241 3380 defw gen.opc.ED2\r
a16ba2b0
L
3381\r
3382b_0x18CE_start:\r
fecee241 3383 defb 076h\r
a16ba2b0
L
3384\r
3385b_0x18CF_start:\r
fecee241 3386 defw l191dh\r
a16ba2b0
L
3387\r
3388b_0x18D1_start:\r
fecee241 3389 defb 004h\r
a16ba2b0
L
3390\r
3391b_0x18D2_start:\r
fecee241 3392 defw l192ch\r
a16ba2b0
L
3393\r
3394b_0x18D4_start:\r
fecee241 3395 defb 074h\r
a16ba2b0 3396A.IN0:\r
fecee241
L
3397 call sub_1e41h\r
3398 jr nc,l1931h\r
3399 cp 006h\r
3400 jr z,l1931h\r
3401 rlca\r
3402 rlca\r
3403 rlca\r
3404 add a,b\r
3405 ld b,a\r
3406 call sub_1ed1h\r
3407 call sub_1e06h\r
a16ba2b0 3408l18e9h:\r
fecee241
L
3409 call assert_eol\r
3410 comst\r
3411 ld (iy+000h),0edh\r
3412 ld (iy+001h),b\r
3413 ld (iy+002h),l\r
a16ba2b0 3414 comend\r
fecee241
L
3415 ld c,003h\r
3416 ret\r
a16ba2b0 3417l18fdh:\r
fecee241
L
3418 call sub_1e06h\r
3419 call sub_1ed1h\r
3420 call sub_1e41h\r
3421 jr nc,l1931h\r
3422 cp 006h\r
3423 jr z,l1931h\r
3424 rlca\r
3425 rlca\r
3426 rlca\r
3427 add a,b\r
3428 ld b,a\r
3429 jr l18e9h\r
a16ba2b0 3430A.MLT:\r
fecee241
L
3431 call sub_1e2eh\r
3432 jr nc,l1931h\r
3433 add a,b\r
3434 ld b,a\r
3435 jp gen.opc.ED2\r
a16ba2b0 3436l191dh:\r
fecee241
L
3437 call sub_1e41h\r
3438 jr nc,l192ah\r
3439 rlca\r
3440 rlca\r
3441 rlca\r
3442 add a,b\r
3443 ld b,a\r
3444 jp gen.opc.ED2\r
a16ba2b0 3445l192ah:\r
fecee241 3446 ld b,064h\r
a16ba2b0 3447l192ch:\r
fecee241
L
3448 call sub_1e12h\r
3449 jr l18e9h\r
a16ba2b0 3450l1931h:\r
fecee241 3451 jp ERROR\r
a16ba2b0 3452l1934h:\r
fecee241
L
3453 call sub_1e41h\r
3454 jp c,l19bfh\r
3455 call sub_1e68h\r
3456 jp c,l1a64h\r
3457 call sub_1e2eh\r
3458 jp c,l1a93h\r
3459 call sub_1e50h\r
3460 jp c,l1af0h\r
3461 ld a,(de)\r
3462 cp 049h\r
3463 jp z,l1b0ch\r
3464 cp 052h\r
3465 jp z,l1b14h\r
3466 cp 028h\r
3467 jp nz,ERROR\r
3468 inc de\r
3469 call sub_1e2eh\r
3470 jp c,l1b23h\r
3471 call tst_EXPR\r
3472 call sub_1ed8h\r
3473 call sub_1ed1h\r
3474 call sub_1e2eh\r
3475 jr c,l19adh\r
3476 call sub_1e50h\r
3477 jr nc,l1991h\r
3478 ld b,022h\r
a16ba2b0 3479l1978h:\r
fecee241
L
3480 call assert_eol\r
3481 ld a,(pfx.IXY)\r
a16ba2b0 3482l197eh:\r
fecee241
L
3483 comst\r
3484 ld (iy+000h),a\r
3485 ld (iy+001h),b\r
3486 ld (iy+002h),l\r
3487 ld (iy+003h),h\r
a16ba2b0 3488 comend\r
fecee241
L
3489 ld c,004h\r
3490 ret\r
a16ba2b0 3491l1991h:\r
fecee241
L
3492 ld a,(de)\r
3493 cp 041h\r
3494 jp nz,ERROR\r
3495 inc de\r
3496 ld b,032h\r
a16ba2b0 3497l199ah:\r
fecee241
L
3498 call assert_eol\r
3499 comst\r
3500 ld (iy+000h),b\r
3501 ld (iy+001h),l\r
3502 ld (iy+002h),h\r
a16ba2b0 3503 comend\r
fecee241
L
3504 ld c,003h\r
3505 ret\r
a16ba2b0 3506l19adh:\r
fecee241
L
3507 cp 020h\r
3508 jr z,l19bbh\r
3509 add a,043h\r
3510 ld b,a\r
a16ba2b0 3511l19b4h:\r
fecee241
L
3512 call assert_eol\r
3513 ld a,0edh\r
3514 jr l197eh\r
a16ba2b0 3515l19bbh:\r
fecee241
L
3516 ld b,022h\r
3517 jr l199ah\r
a16ba2b0 3518l19bfh:\r
fecee241
L
3519 ld b,a\r
3520 call sub_1ed1h\r
3521 call sub_1e41h\r
3522 jr nc,l19dbh\r
3523 push af\r
3524 ld a,b\r
3525 rlca\r
3526 rlca\r
3527 rlca\r
3528 ld b,a\r
3529 pop af\r
3530 add a,b\r
3531 add a,040h\r
3532 cp 076h\r
3533 jp z,ERROR\r
a16ba2b0 3534l19d7h:\r
fecee241
L
3535 ld b,a\r
3536 jp l1b36h\r
a16ba2b0 3537l19dbh:\r
fecee241
L
3538 call sub_1e68h\r
3539 jr nc,l1a02h\r
3540 ld a,b\r
3541 rlca\r
3542 rlca\r
3543 rlca\r
3544 add a,046h\r
3545 cp 076h\r
3546 jp z,ERROR\r
a16ba2b0 3547l19ebh:\r
fecee241
L
3548 ld b,a\r
3549 call assert_eol\r
3550 ld a,(pfx.IXY)\r
3551 comst\r
3552 ld (iy+000h),a\r
3553 ld (iy+001h),b\r
3554 ld (iy+002h),c\r
a16ba2b0 3555 comend\r
fecee241
L
3556 ld c,003h\r
3557 ret\r
a16ba2b0 3558l1a02h:\r
fecee241
L
3559 ld a,(de)\r
3560 cp 'I'\r
3561 jr z,l1a15h\r
3562 cp 'R'\r
3563 jr nz,l1a21h\r
3564 ld a,b\r
3565 cp 007h\r
3566 jp nz,ERROR\r
3567 ld b,05fh\r
3568 jr l1a1dh\r
a16ba2b0 3569l1a15h:\r
fecee241
L
3570 ld a,b\r
3571 cp 007h\r
3572 jp nz,ERROR\r
3573 ld b,057h\r
a16ba2b0 3574l1a1dh:\r
fecee241
L
3575 inc de\r
3576 jp gen.opc.ED2\r
a16ba2b0 3577l1a21h:\r
fecee241
L
3578 cp '('\r
3579 jr z,l1a3fh\r
3580 call sub_1e12h\r
a16ba2b0 3581 ld a,b ;1a28 ld r,nn\r
fecee241
L
3582 rlca\r
3583 rlca\r
3584 rlca\r
3585 add a,006h\r
a16ba2b0 3586l1a2eh:\r
fecee241 3587 ld b,a\r
a16ba2b0 3588l1a2fh:\r
fecee241
L
3589 call assert_eol\r
3590 comst\r
3591 ld (iy+000h),b\r
3592 ld (iy+001h),l\r
a16ba2b0 3593 comend\r
fecee241
L
3594 ld c,002h\r
3595 ret\r
a16ba2b0 3596l1a3fh:\r
fecee241
L
3597 inc de\r
3598 ld a,b\r
3599 cp 007h\r
3600 jp nz,ERROR\r
3601 call sub_1e2eh\r
3602 jr nc,l1a59h\r
3603 cp 030h\r
3604 jp nc,ERROR\r
3605 add a,00ah\r
3606 ld b,a\r
3607 call sub_1ed8h\r
3608 jp l1b36h\r
a16ba2b0 3609l1a59h:\r
fecee241
L
3610 call tst_EXPR\r
3611 call sub_1ed8h\r
3612 ld b,03ah\r
3613 jp l199ah\r
a16ba2b0 3614l1a64h:\r
fecee241
L
3615 call sub_1ed1h\r
3616 call sub_1e41h\r
3617 jr nc,l1a76h\r
3618 cp 006h\r
3619 jp z,ERROR\r
3620 add a,070h\r
3621 jp l19ebh\r
a16ba2b0 3622l1a76h:\r
fecee241
L
3623 call sub_1e12h\r
3624 call assert_eol\r
3625 ld a,(pfx.IXY)\r
3626 comst\r
a16ba2b0 3627 ld (iy+000h),a ;1a83 dd/fd\r
fecee241 3628 ld (iy+001h),036h\r
a16ba2b0
L
3629 ld (iy+002h),c ;1a8a displacement\r
3630 ld (iy+003h),l ;1a8d nn\r
3631 comend\r
fecee241
L
3632 ld c,4\r
3633 ret\r
a16ba2b0 3634l1a93h:\r
fecee241
L
3635 ld b,a\r
3636 call sub_1ed1h\r
3637 ld hl,t_HL.AF\r
3638 call sub_0a23h\r
3639 jr c,l1abeh\r
3640 call sub_1e50h\r
3641 jr nc,l1ac7h\r
3642 ld a,b\r
3643 cp 030h\r
3644 jr nz,l1b20h\r
3645 ld b,0f9h\r
a16ba2b0 3646l1aabh:\r
fecee241
L
3647 call assert_eol\r
3648 ld a,(pfx.IXY)\r
3649 comst\r
3650 ld (iy+000h),a\r
3651 ld (iy+001h),b\r
a16ba2b0 3652 comend\r
fecee241
L
3653 ld c,002h\r
3654 ret\r
a16ba2b0 3655l1abeh:\r
fecee241
L
3656 ld a,b\r
3657 cp 030h\r
3658 jr nz,l1b20h\r
3659 ld b,0f9h\r
3660 jr l1b36h\r
a16ba2b0 3661l1ac7h:\r
fecee241
L
3662 ld a,(de)\r
3663 cp 028h\r
3664 jr nz,l1ae3h\r
3665 inc de\r
3666 call tst_EXPR\r
3667 call sub_1ed8h\r
3668 ld a,b\r
3669 cp 020h\r
3670 jr z,l1adeh\r
3671 add a,04bh\r
3672 ld b,a\r
3673 jp l19b4h\r
a16ba2b0 3674l1adeh:\r
fecee241
L
3675 ld b,02ah\r
3676 jp l199ah\r
a16ba2b0 3677l1ae3h:\r
fecee241
L
3678 call tst_EXPR\r
3679 call assert_eol\r
3680 ld a,001h\r
3681 add a,b\r
3682 ld b,a\r
3683 jp l199ah\r
a16ba2b0 3684l1af0h:\r
fecee241
L
3685 call sub_1ed1h\r
3686 ld a,(de)\r
3687 cp 028h\r
3688 jr nz,l1b04h\r
3689 inc de\r
3690 call tst_EXPR\r
3691 call sub_1ed8h\r
3692 ld b,02ah\r
3693 jp l1978h\r
a16ba2b0 3694l1b04h:\r
fecee241
L
3695 call tst_EXPR\r
3696 ld b,021h\r
3697 jp l1978h\r
a16ba2b0 3698l1b0ch:\r
fecee241
L
3699 inc de\r
3700 call sub_1ed1h\r
3701 ld b,047h\r
3702 jr l1b1ah\r
a16ba2b0 3703l1b14h:\r
fecee241
L
3704 inc de\r
3705 call sub_1ed1h\r
3706 ld b,04fh\r
a16ba2b0 3707l1b1ah:\r
fecee241
L
3708 ld a,(de)\r
3709 inc de\r
3710 cp 041h\r
3711 jr z,gen.opc.ED2\r
a16ba2b0 3712l1b20h:\r
fecee241 3713 jp ERROR\r
a16ba2b0 3714l1b23h:\r
fecee241
L
3715 cp 020h\r
3716 jr nc,l1b20h\r
3717 add a,002h\r
3718 ld b,a\r
3719 call sub_1ed8h\r
3720 call sub_1ed1h\r
3721 ld a,(de)\r
3722 cp 041h\r
3723 jr nz,l1b20h\r
3724 inc de\r
a16ba2b0 3725l1b36h:\r
fecee241
L
3726 call assert_eol\r
3727 comst\r
3728 ld (iy+000h),b\r
a16ba2b0 3729 comend\r
fecee241
L
3730 ld c,001h\r
3731 ret\r
a16ba2b0 3732gen.opc.ED2:\r
fecee241
L
3733 call assert_eol\r
3734 comst\r
3735 ld (iy+000h),0edh\r
3736 ld (iy+001h),b\r
a16ba2b0 3737 comend\r
fecee241
L
3738 ld c,002h\r
3739 ret\r
a16ba2b0 3740l1b54h:\r
fecee241
L
3741 ld hl,t_HL.AF\r
3742 call sub_0a23h\r
3743 jr nc,l1babh\r
3744 call sub_1ed1h\r
3745 call sub_1e2eh\r
3746 jp nc,ERROR\r
3747 push af\r
3748 ld a,b\r
3749 cp 088h\r
3750 ld b,04ah\r
3751 jr z,l1b6fh\r
3752 ld b,042h\r
a16ba2b0 3753l1b6fh:\r
fecee241
L
3754 pop af\r
3755 add a,b\r
a16ba2b0 3756l1b71h:\r
fecee241
L
3757 ld b,a\r
3758 jr gen.opc.ED2\r
a16ba2b0 3759l1b74h:\r
fecee241
L
3760 ld hl,t_HL.AF\r
3761 call sub_0a23h\r
3762 jr c,l1b9dh\r
3763 call sub_1e50h\r
3764 jr nc,l1babh\r
3765 call sub_1ed1h\r
3766 ld hl,t_BC.DE.IX.SP\r
3767 ld a,(pfx.IXY)\r
3768 cp 0fdh\r
3769 jr nz,l1b91h\r
3770 ld hl,t_BC.DE.IY.SP\r
a16ba2b0 3771l1b91h:\r
fecee241
L
3772 call sub_1e2bh\r
3773 jp nc,ERROR\r
3774 add a,009h\r
a16ba2b0 3775l1b99h:\r
fecee241
L
3776 ld b,a\r
3777 jp l1aabh\r
a16ba2b0 3778l1b9dh:\r
fecee241
L
3779 call sub_1ed1h\r
3780 call sub_1e2eh\r
3781 jp nc,ERROR\r
3782 add a,009h\r
3783 jp l19d7h\r
a16ba2b0 3784l1babh:\r
fecee241
L
3785 ld a,(de)\r
3786 cp 041h\r
3787 jr nz,l1bbbh\r
3788 push de\r
3789 inc de\r
3790 call skip_to_nextarg\r
3791 jr z,l1bbah\r
3792 pop de\r
3793 jr l1bbbh\r
a16ba2b0 3794l1bbah:\r
fecee241 3795 pop af\r
a16ba2b0 3796l1bbbh:\r
fecee241
L
3797 call sub_1e41h\r
3798 jr c,l1bceh\r
3799 call sub_1e68h\r
3800 jr c,l1bd2h\r
3801 call sub_1e12h\r
3802 ld a,b\r
3803 add a,046h\r
3804 jp l1a2eh\r
a16ba2b0 3805l1bceh:\r
fecee241
L
3806 add a,b\r
3807 jp l19d7h\r
a16ba2b0 3808l1bd2h:\r
fecee241
L
3809 ld a,b\r
3810 add a,006h\r
3811 jp l19ebh\r
a16ba2b0 3812l1bd8h:\r
fecee241
L
3813 call sub_1e41h\r
3814 jr c,l1c01h\r
3815 call sub_1e68h\r
3816 jp nc,ERROR\r
3817 ld a,b\r
3818 add a,006h\r
3819 ld b,a\r
a16ba2b0 3820l1be7h:\r
fecee241
L
3821 call assert_eol\r
3822 ld a,(pfx.IXY)\r
3823 comst\r
3824 ld (iy+000h),a\r
3825 ld (iy+001h),0cbh\r
3826 ld (iy+002h),c\r
3827 ld (iy+003h),b\r
a16ba2b0 3828 comend\r
fecee241
L
3829 ld c,004h\r
3830 ret\r
a16ba2b0 3831l1c01h:\r
fecee241 3832 add a,b\r
a16ba2b0 3833l1c02h:\r
fecee241
L
3834 ld b,a\r
3835 call assert_eol\r
3836 comst\r
3837 ld (iy+000h),0cbh\r
3838 ld (iy+001h),b\r
a16ba2b0 3839 comend\r
fecee241
L
3840 ld c,002h\r
3841 ret\r
a16ba2b0 3842l1c14h:\r
fecee241
L
3843 call sub_1de6h\r
3844 call sub_1ed1h\r
3845 call sub_1e41h\r
3846 jr c,l1c2fh\r
3847 call sub_1e68h\r
3848 jp nc,ERROR\r
3849 ld a,l\r
3850 rlca\r
3851 rlca\r
3852 rlca\r
3853 add a,006h\r
3854 add a,b\r
3855 ld b,a\r
3856 jr l1be7h\r
a16ba2b0 3857l1c2fh:\r
fecee241
L
3858 add a,b\r
3859 ld b,a\r
3860 ld a,l\r
3861 rlca\r
3862 rlca\r
3863 rlca\r
3864 add a,b\r
3865 jr l1c02h\r
a16ba2b0 3866l1c38h:\r
fecee241
L
3867 push de\r
3868 call sub_1eb8h\r
3869 jr nc,l1c47h\r
3870 add a,b\r
3871 ld b,a\r
3872 call skip_to_nextarg\r
3873 jr z,l1c49h\r
3874 pop de\r
3875 push de\r
a16ba2b0 3876l1c47h:\r
fecee241 3877 ld b,0cdh\r
a16ba2b0 3878l1c49h:\r
fecee241
L
3879 pop af\r
3880 call tst_EXPR\r
3881 jp l199ah\r
a16ba2b0 3882l1c50h:\r
fecee241
L
3883 call sub_1eb8h\r
3884 jr nc,l1c59h\r
3885 add a,b\r
3886 ld b,a\r
3887 jr l1c5bh\r
a16ba2b0 3888l1c59h:\r
fecee241 3889 ld b,0c9h\r
a16ba2b0 3890l1c5bh:\r
fecee241 3891 jp l1b36h\r
a16ba2b0 3892l1c5eh:\r
fecee241
L
3893 push de\r
3894 call sub_1eb8h\r
3895 jr c,l1c71h\r
a16ba2b0 3896l1c64h:\r
fecee241
L
3897 pop de\r
3898 ld hl,b_0x1C97_start\r
3899 call sub_0a15h\r
3900 jr c,l1c7fh\r
3901 ld b,0c3h\r
3902 jr l1c79h\r
a16ba2b0 3903l1c71h:\r
fecee241
L
3904 add a,b\r
3905 ld b,a\r
3906 call skip_to_nextarg\r
3907 jr nz,l1c64h\r
3908 pop af\r
a16ba2b0 3909l1c79h:\r
fecee241
L
3910 call tst_EXPR\r
3911 jp l199ah\r
a16ba2b0 3912l1c7fh:\r
fecee241
L
3913 call assert_eol\r
3914 ld a,b\r
3915 and a\r
3916 jr nz,l1c8bh\r
3917 ld b,0e9h\r
3918 jp l1b36h\r
a16ba2b0 3919l1c8bh:\r
fecee241
L
3920 ld b,0ddh\r
3921 dec a\r
3922 jr z,l1c92h\r
3923 ld b,0fdh\r
a16ba2b0 3924l1c92h:\r
fecee241
L
3925 ld l,0e9h\r
3926 jp l1a2fh\r
a16ba2b0
L
3927\r
3928b_0x1C97_start:\r
3929 DC '(HL)'\r
3930 DC '(IX)'\r
3931 DC '(IY)'\r
3932 DB 0\r
3933\r
3934l1ca4h:\r
fecee241
L
3935 call skip_to_nextarg\r
3936 ld b,010h\r
3937 jr l1cb9h\r
a16ba2b0 3938l1cabh:\r
fecee241
L
3939 call sub_1ebfh\r
3940 jr c,l1cb4h\r
3941 ld b,018h\r
3942 jr l1cb9h\r
a16ba2b0 3943l1cb4h:\r
fecee241
L
3944 add a,b\r
3945 ld b,a\r
3946 call sub_1ed1h\r
a16ba2b0 3947l1cb9h:\r
fecee241
L
3948 call sub_1defh\r
3949 jp l1a2fh\r
a16ba2b0 3950l1cbfh:\r
fecee241
L
3951 call sub_1e12h\r
3952 ld a,l\r
3953 cp 003h\r
3954 jr nc,l1d23h\r
3955 and a\r
3956 jr z,l1cd2h\r
3957 ld b,056h\r
3958 cp 001h\r
3959 jr z,l1cd2h\r
3960 ld b,05eh\r
a16ba2b0 3961l1cd2h:\r
fecee241 3962 jp gen.opc.ED2\r
a16ba2b0 3963l1cd5h:\r
fecee241
L
3964 call sub_1e12h\r
3965 ld a,l\r
3966 push af\r
3967 add a,b\r
3968 ld b,a\r
3969 pop af\r
3970 and 0c7h\r
3971 jr nz,l1d23h\r
3972 jp l1b36h\r
a16ba2b0 3973l1ce4h:\r
fecee241
L
3974 call sub_1e50h\r
3975 jr c,l1cf2h\r
3976 call sub_1e25h\r
3977 jr nc,l1d23h\r
3978 add a,b\r
3979 jp l19d7h\r
a16ba2b0 3980l1cf2h:\r
fecee241
L
3981 ld a,b\r
3982 add a,020h\r
3983 jp l1b99h\r
a16ba2b0 3984l1cf8h:\r
fecee241
L
3985 call sub_1e41h\r
3986 jr nc,l1d23h\r
3987 cp 006h\r
3988 jr z,l1d23h\r
3989 rlca\r
3990 rlca\r
3991 rlca\r
3992 add a,b\r
3993 ld b,a\r
3994 cp 078h\r
3995 jr nz,l1d1ah\r
3996 call sub_1ed1h\r
3997 call sub_1d26h\r
3998 jr c,l1d20h\r
3999 call sub_1e06h\r
4000 ld b,0dbh\r
4001 jp l1a2fh\r
a16ba2b0 4002l1d1ah:\r
fecee241
L
4003 call sub_1ed1h\r
4004 call sub_1d26h\r
a16ba2b0 4005l1d20h:\r
fecee241 4006 jp c,gen.opc.ED2\r
a16ba2b0 4007l1d23h:\r
fecee241 4008 jp ERROR\r
a16ba2b0 4009sub_1d26h:\r
fecee241
L
4010 ld hl,t__C_\r
4011 jp sub_0a23h\r
a16ba2b0 4012l1d2ch:\r
fecee241
L
4013 call sub_1d26h\r
4014 jr nc,l1d44h\r
4015 call sub_1ed1h\r
4016 call sub_1e41h\r
4017 jr nc,l1d23h\r
4018 cp 006h\r
4019 jr z,l1d23h\r
4020 rlca\r
4021 rlca\r
4022 rlca\r
4023 add a,b\r
4024 jp l1b71h\r
a16ba2b0 4025l1d44h:\r
fecee241
L
4026 call sub_1e06h\r
4027 call sub_1ed1h\r
4028 cp 041h\r
4029 jr nz,l1d23h\r
4030 inc de\r
4031 ld b,0d3h\r
4032 jp l1a2fh\r
a16ba2b0 4033l1d54h:\r
fecee241
L
4034 ld hl,b_0x1D80_start\r
4035 call sub_0a15h\r
4036 jp nc,ERROR\r
4037 ld c,b\r
4038 call assert_eol\r
4039 ld b,000h\r
4040 ld hl,b_0x1DA1_start\r
4041 add hl,bc\r
4042 add hl,bc\r
4043 ld a,(hl)\r
4044 comst\r
4045 ld (iy+000h),a\r
a16ba2b0 4046 comend\r
fecee241
L
4047 ld c,001h\r
4048 inc hl\r
4049 ld a,(hl)\r
4050 and a\r
4051 ret z\r
4052 comst\r
4053 ld (iy+001h),a\r
a16ba2b0 4054 comend\r
fecee241
L
4055 ld c,002h\r
4056 ret\r
a16ba2b0
L
4057\r
4058b_0x1D80_start:\r
4059 DC 'AF,AF'''\r
4060l1d86h:\r
4061 DC 'DE,HL'\r
4062 DC '(SP),HL'\r
4063 DC '(SP),IX'\r
4064 DC '(SP),IY'\r
fecee241 4065 db 000h\r
a16ba2b0
L
4066\r
4067b_0x1DA1_start:\r
fecee241
L
4068 db 008h\r
4069 db 000h\r
4070 db 0ebh\r
4071 db 000h\r
4072 db 0e3h\r
4073 db 000h\r
4074 db 0ddh\r
4075 db 0e3h\r
4076 db 0fdh\r
4077 db 0e3h\r
a16ba2b0 4078l1dabh:\r
fecee241
L
4079 call sub_1e50h\r
4080 jr c,l1dc6h\r
4081 call sub_1e2eh\r
4082 jr c,l1dd2h\r
4083 call sub_1e41h\r
4084 jr c,l1ddfh\r
4085 call sub_1e68h\r
4086 jp nc,ERROR\r
4087 ld a,b\r
4088 add a,030h\r
4089 jp l19ebh\r
a16ba2b0 4090l1dc6h:\r
fecee241
L
4091 ld a,b\r
4092 ld b,023h\r
4093 cp 004h\r
4094 jr z,l1dcfh\r
4095 ld b,02bh\r
a16ba2b0 4096l1dcfh:\r
fecee241 4097 jp l1aabh\r
a16ba2b0 4098l1dd2h:\r
fecee241
L
4099 push af\r
4100 ld a,b\r
4101 ld b,003h\r
4102 cp 004h\r
4103 jr z,l1ddch\r
4104 ld b,00bh\r
a16ba2b0 4105l1ddch:\r
fecee241
L
4106 pop af\r
4107 jr l1de2h\r
a16ba2b0 4108l1ddfh:\r
fecee241
L
4109 rlca\r
4110 rlca\r
4111 rlca\r
a16ba2b0 4112l1de2h:\r
fecee241
L
4113 add a,b\r
4114 jp l19d7h\r
a16ba2b0 4115sub_1de6h:\r
fecee241
L
4116 call sub_1e12h\r
4117 ld a,l\r
4118 cp 008h\r
4119 jr nc,error1\r
4120 ret\r
a16ba2b0 4121sub_1defh:\r
fecee241
L
4122 call tst_EXPR\r
4123 push bc\r
4124 push iy\r
4125 pop bc\r
4126 and a\r
4127 sbc hl,bc\r
4128 dec hl\r
4129 dec hl\r
4130 pop bc\r
4131 call sub_1e15h\r
4132 ld a,h\r
4133 xor l\r
4134 bit 7,a\r
4135 jr nz,error1\r
4136 ret\r
a16ba2b0 4137sub_1e06h:\r
fecee241
L
4138 ld a,(de)\r
4139 cp 028h\r
4140 jr nz,sub_1e12h\r
4141 inc de\r
4142 call sub_1e12h\r
4143 jp sub_1ed8h\r
a16ba2b0
L
4144\r
4145sub_1e12h:\r
fecee241 4146 call tst_EXPR\r
a16ba2b0 4147sub_1e15h:\r
fecee241
L
4148 ld a,h\r
4149 and a\r
4150 ret z\r
4151 inc a\r
4152 ret z\r
4153 jr error1\r
a16ba2b0
L
4154\r
4155tst_EXPR:\r
fecee241
L
4156 push bc\r
4157 call EXPR\r
4158 pop bc\r
4159 ret nc\r
a16ba2b0 4160error1:\r
fecee241 4161 jp ERROR\r
a16ba2b0 4162sub_1e25h:\r
fecee241
L
4163 push hl\r
4164 ld hl,t_BC.DE.HL.AF\r
4165 jr l1e32h\r
a16ba2b0 4166sub_1e2bh:\r
fecee241
L
4167 push hl\r
4168 jr l1e32h\r
a16ba2b0 4169sub_1e2eh:\r
fecee241
L
4170 push hl\r
4171 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 4172l1e32h:\r
fecee241
L
4173 push bc\r
4174 call sub_0a15h\r
4175 jr nc,l1e3eh\r
4176 ld a,b\r
4177 rlca\r
4178 rlca\r
4179 rlca\r
4180 rlca\r
4181 scf\r
a16ba2b0 4182l1e3eh:\r
fecee241
L
4183 pop bc\r
4184 pop hl\r
4185 ret\r
a16ba2b0 4186sub_1e41h:\r
fecee241
L
4187 call SKIPBL\r
4188 push bc\r
4189 push hl\r
4190 ld hl,t_BCDEHL_HL_A\r
4191 call sub_0a15h\r
4192 ld a,b\r
4193 pop hl\r
4194 pop bc\r
4195 ret\r
a16ba2b0 4196sub_1e50h:\r
fecee241
L
4197 push hl\r
4198 push bc\r
4199 ld hl,t_IX.IY\r
4200 call sub_0a15h\r
4201 jr nc,l1e65h\r
4202 ld a,0ddh\r
4203 dec b\r
4204 jr nz,l1e61h\r
4205 ld a,0fdh\r
a16ba2b0 4206l1e61h:\r
fecee241
L
4207 ld (pfx.IXY),a\r
4208 scf\r
a16ba2b0 4209l1e65h:\r
fecee241
L
4210 pop bc\r
4211 pop hl\r
4212 ret\r
a16ba2b0 4213sub_1e68h:\r
fecee241
L
4214 push hl\r
4215 push bc\r
4216 ld a,(de)\r
4217 cp '('\r
4218 jr nz,l1eb4h\r
4219 push de\r
4220 inc de\r
4221 ld hl,t_IX.IY\r
4222 call sub_0a15h\r
4223 jr nc,l1eb3h\r
4224 pop af\r
4225 ld a,0ddh\r
4226 dec b\r
4227 jr nz,l1e81h\r
4228 ld a,0fdh\r
a16ba2b0 4229l1e81h:\r
fecee241
L
4230 ld (pfx.IXY),a\r
4231 ld a,(de)\r
4232 cp '+'\r
4233 jr z,l1e95h\r
4234 cp ')'\r
4235 ld hl,0\r
4236 jr z,l1eadh\r
4237 cp '-'\r
4238 jp nz,ERROR\r
a16ba2b0 4239l1e95h:\r
fecee241
L
4240 push af\r
4241 inc de\r
a16ba2b0 4242 call sub_1e12h ;1e97 get displacement\r
fecee241
L
4243 pop af\r
4244 cp '+'\r
4245 jr z,l1ea7h\r
4246 ld b,h\r
4247 ld c,l\r
4248 ld hl,0\r
4249 and a\r
4250 sbc hl,bc\r
a16ba2b0 4251l1ea7h:\r
fecee241
L
4252 ld a,(de)\r
4253 cp ')'\r
4254 jp nz,ERROR\r
a16ba2b0 4255l1eadh:\r
fecee241
L
4256 inc de\r
4257 pop bc\r
4258 ld c,l\r
4259 pop hl\r
4260 scf\r
4261 ret\r
a16ba2b0 4262l1eb3h:\r
fecee241 4263 pop de\r
a16ba2b0 4264l1eb4h:\r
fecee241
L
4265 pop bc\r
4266 pop hl\r
4267 and a\r
4268 ret\r
a16ba2b0 4269sub_1eb8h:\r
fecee241
L
4270 ld hl,t_tstfl_ZCPS\r
4271 ld c,007h\r
4272 jr l1ec4h\r
a16ba2b0 4273sub_1ebfh:\r
fecee241
L
4274 ld hl,t_tstfl_ZC\r
4275 ld c,003h\r
a16ba2b0 4276l1ec4h:\r
fecee241
L
4277 push bc\r
4278 call sub_0a15h\r
4279 ld a,b\r
4280 pop bc\r
4281 ret nc\r
4282 and c\r
4283 rlca\r
4284 rlca\r
4285 rlca\r
4286 scf\r
4287 ret\r
a16ba2b0 4288sub_1ed1h:\r
fecee241
L
4289 call skip_to_nextarg\r
4290 ret z\r
a16ba2b0 4291l1ed5h:\r
fecee241 4292 jp ERROR\r
a16ba2b0 4293sub_1ed8h:\r
fecee241
L
4294 ld a,(de)\r
4295 cp 029h\r
4296 jr nz,l1ed5h\r
4297 inc de\r
4298 ret\r
a16ba2b0 4299CMD.L:\r
fecee241
L
4300 ld hl,CMD.L\r
4301 ld (CMD_RPT),hl\r
4302 call EXPR\r
4303 jr nc,l1eedh\r
4304 ld hl,(lst.L)\r
a16ba2b0 4305l1eedh:\r
fecee241
L
4306 push hl\r
4307 pop iy\r
4308 call skip_to_nextarg\r
4309 call sub_0aa5h\r
4310 jr nc,l1f17h\r
4311 call assert_eol\r
4312 ld b,010h\r
a16ba2b0 4313l1efdh:\r
fecee241
L
4314 push bc\r
4315 push iy\r
4316 pop hl\r
4317 push hl\r
4318 call sub_1f3fh\r
4319 call CRLF\r
4320 pop iy\r
4321 ld c,b\r
4322 ld b,000h\r
4323 add iy,bc\r
4324 ld (lst.L),iy\r
4325 pop bc\r
4326 djnz l1efdh\r
4327 ret\r
a16ba2b0 4328l1f17h:\r
fecee241
L
4329 call assert_eol\r
4330 ld h,b\r
4331 ld l,c\r
4332 ld a,b\r
4333 or c\r
4334 jr nz,l1f21h\r
4335 dec hl\r
a16ba2b0 4336l1f21h:\r
fecee241
L
4337 push hl\r
4338 push iy\r
4339 pop hl\r
4340 push hl\r
4341 call sub_1f3fh\r
4342 call CRLF\r
4343 pop iy\r
4344 ld e,b\r
4345 ld d,000h\r
4346 add iy,de\r
4347 ld (lst.L),iy\r
4348 pop hl\r
4349 and a\r
4350 sbc hl,de\r
4351 ret z\r
4352 ret c\r
4353 jr l1f21h\r
a16ba2b0 4354sub_1f3fh:\r
fecee241
L
4355 call out.hl.@\r
4356 call z,OUTBL\r
4357 call OUTBL\r
4358 sub a\r
4359 ld (CON.COL),a\r
4360 call sub_1f77h\r
4361 and a\r
4362 ret z\r
a16ba2b0 4363l1f51h:\r
fecee241
L
4364 call OUTBL\r
4365 ld a,(CON.COL)\r
4366 cp 010h\r
4367 jr c,l1f51h\r
a16ba2b0 4368sub_1f5bh:\r
fecee241
L
4369 ld de,(offs.@)\r
4370 ld a,d\r
4371 or e\r
4372 ret z\r
4373 ld a,'('\r
4374 call OUTCHAR\r
4375 ld a,'@'\r
4376 call OUTCHAR\r
4377 and a\r
4378 sbc hl,de\r
4379 call out.hl\r
4380 ld a,')'\r
4381 jp OUTCHAR\r
a16ba2b0 4382sub_1f77h:\r
fecee241
L
4383 sub a\r
4384 ld (XBE03),a\r
4385 call sub_1f9eh\r
4386 jr nc,l1f91h\r
4387 push bc\r
4388 call sub_2581h\r
4389 ex de,hl\r
4390 call sub_1fdbh\r
4391 pop bc\r
4392 ld a,(XBE03)\r
4393 ld hl,(XBE01)\r
4394 scf\r
4395 ret\r
a16ba2b0 4396l1f91h:\r
fecee241
L
4397 ld hl,b_0x1F9B_start\r
4398 call PSTR\r
4399 ld b,001h\r
4400 sub a\r
4401 ret\r
a16ba2b0
L
4402\r
4403b_0x1F9B_start:\r
4404 DC '???'\r
fecee241 4405\r
a16ba2b0 4406sub_1f9eh:\r
fecee241
L
4407 sub a\r
4408 ld (is.pfx.IXY),a\r
4409 comst\r
4410 ld a,(iy+000h)\r
a16ba2b0 4411 comend\r
fecee241
L
4412 cp 0edh\r
4413 jp z,disas_pfx.ED\r
4414 cp 0ddh\r
4415 jr z,l1fc5h\r
4416 cp 0fdh\r
4417 jr z,l1fc9h\r
a16ba2b0 4418sub_1fb6h:\r
fecee241
L
4419 comst\r
4420 ld a,(iy+000h)\r
a16ba2b0 4421 comend\r
fecee241
L
4422 cp 0cbh\r
4423 jp z,l2061h\r
4424 jp l2078h\r
a16ba2b0 4425l1fc5h:\r
fecee241
L
4426 ld a,001h\r
4427 jr l1fcbh\r
a16ba2b0 4428l1fc9h:\r
fecee241 4429 ld a,002h\r
a16ba2b0 4430l1fcbh:\r
fecee241
L
4431 ld (is.pfx.IXY),a\r
4432 call sub_1fdch\r
4433 ret nc\r
4434 push bc\r
4435 call sub_1fb6h\r
4436 pop af\r
4437 add a,b\r
4438 ld b,a\r
4439 scf\r
4440 ret\r
a16ba2b0
L
4441\r
4442sub_1fdbh:\r
fecee241 4443 jp (hl)\r
a16ba2b0
L
4444\r
4445sub_1fdch:\r
fecee241
L
4446 inc iy\r
4447 ld hl,b_0x2011_start\r
4448 call sub_20bbh\r
4449 ld b,002h\r
4450 ret c\r
4451 ld hl,l202ch\r
4452 call sub_20bbh\r
4453 ld b,001h\r
4454 ret c\r
4455 comst\r
4456 ld a,(iy+000h)\r
a16ba2b0 4457 comend\r
fecee241
L
4458 cp 0cbh\r
4459 jr nz,l200fh\r
4460 comst\r
4461 ld a,(iy+002h)\r
a16ba2b0 4462 comend\r
fecee241
L
4463 cp 036h\r
4464 ret z\r
4465 and 007h\r
4466 cp 006h\r
4467 jr nz,l200fh\r
4468 ld b,002h\r
4469 scf\r
4470 ret\r
a16ba2b0 4471l200fh:\r
fecee241
L
4472 and a\r
4473 ret\r
a16ba2b0
L
4474\r
4475b_0x2011_start:\r
fecee241
L
4476 db 034h\r
4477 db 035h\r
4478 db 036h\r
4479 db 046h\r
4480 db 04eh\r
4481 db 056h\r
4482 db 05eh\r
4483 db 066h\r
4484 db 06eh\r
4485 db 070h\r
4486 db 071h\r
4487 db 072h\r
4488 db 073h\r
4489 db 074h\r
4490 db 075h\r
4491 db 076h\r
4492 db 077h\r
4493 db 07eh\r
4494 db 086h\r
4495 db 08eh\r
4496 db 096h\r
4497 db 09eh\r
4498 db 0a6h\r
4499 db 0aeh\r
4500 db 0b6h\r
4501 db 0beh\r
4502 db 000h\r
a16ba2b0 4503l202ch:\r
fecee241
L
4504 db 009h\r
4505 db 019h\r
4506 db 021h\r
4507 db 022h\r
4508 db 023h\r
4509 db 029h\r
4510 db 02ah\r
4511 db 02bh\r
4512 db 039h\r
4513 db 0e1h\r
4514 db 0e3h\r
4515 db 0e5h\r
4516 db 0e9h\r
4517 db 0f9h\r
4518 db 000h\r
a16ba2b0
L
4519\r
4520disas_pfx.ED:\r
fecee241
L
4521 inc iy\r
4522 ld hl,b_0x2200_start\r
4523 call sub_209dh\r
4524 ld b,002h\r
4525 ret c\r
4526 ld hl,l2235h\r
4527 call lookup_opc\r
4528 ld b,002h\r
4529 ret c\r
4530 ld hl,l228bh\r
4531 call lookup_opc\r
4532 ld b,003h\r
4533 ret c\r
4534 ld hl,l22b4h\r
4535 call lookup_opc\r
4536 ld b,004h\r
4537 ret\r
a16ba2b0 4538l2061h:\r
fecee241
L
4539 push iy\r
4540 inc iy\r
4541 ld a,(is.pfx.IXY)\r
4542 and a\r
4543 jr z,l206dh\r
4544 inc iy\r
a16ba2b0 4545l206dh:\r
fecee241
L
4546 ld hl,l22c9h\r
4547 call lookup_opc\r
4548 pop iy\r
4549 ld b,002h\r
4550 ret\r
a16ba2b0 4551l2078h:\r
fecee241
L
4552 ld hl,b_0x218B_start\r
4553 call lookup_opc\r
4554 ld b,002h\r
4555 ret c\r
4556 ld hl,b_0x20ED_start\r
4557 call sub_209dh\r
4558 ld b,001h\r
4559 ret c\r
4560 ld hl,b_0x2108_start\r
4561 call lookup_opc\r
4562 ld b,001h\r
4563 ret c\r
4564 ld hl,b_0x21D2_start\r
4565 call lookup_opc\r
4566 ret nc\r
4567 ld b,003h\r
4568 ret\r
a16ba2b0
L
4569\r
4570sub_209dh:\r
fecee241
L
4571 ld a,(hl)\r
4572 cp 0ffh\r
4573 ret z\r
4574 comst\r
4575 cp (iy+000h)\r
a16ba2b0 4576 comend\r
fecee241
L
4577 jr z,l20aeh\r
4578 inc hl\r
4579 inc hl\r
4580 jr sub_209dh\r
a16ba2b0 4581l20aeh:\r
fecee241
L
4582 inc hl\r
4583 ld c,(hl)\r
4584 ld hl,t_MNEMONICS\r
4585 ld b,000h\r
4586 add hl,bc\r
4587 ld de,l230bh\r
4588 scf\r
4589 ret\r
a16ba2b0 4590sub_20bbh:\r
fecee241
L
4591 ld a,(hl)\r
4592 and a\r
4593 ret z\r
4594 inc hl\r
4595 comst\r
4596 cp (iy+000h)\r
a16ba2b0 4597 comend\r
fecee241
L
4598 jr nz,sub_20bbh\r
4599 scf\r
4600 ret\r
a16ba2b0
L
4601\r
4602lookup_opc:\r
fecee241
L
4603 comst\r
4604 ld a,(iy+000h)\r
a16ba2b0 4605 comend\r
fecee241
L
4606 and (hl)\r
4607 inc hl\r
4608 cp (hl)\r
4609 jr z,l20dfh\r
4610 inc hl\r
4611 inc hl\r
4612 inc hl\r
4613 inc hl\r
4614 ld a,(hl)\r
4615 and a\r
4616 jr nz,lookup_opc\r
4617 ret\r
a16ba2b0 4618l20dfh:\r
fecee241
L
4619 inc hl\r
4620 ld c,(hl)\r
4621 inc hl\r
4622 ld e,(hl)\r
4623 inc hl\r
4624 ld d,(hl)\r
4625 ld hl,t_MNEMONICS\r
4626 ld b,000h\r
4627 add hl,bc\r
4628 scf\r
4629 ret\r
a16ba2b0
L
4630\r
4631b_0x20ED_start: ; 1 byte opcodes (no parameters)\r
4632 db 076h ;20ed halt\r
fecee241 4633 db 039h ;20ee\r
a16ba2b0 4634 db 0d9h ;20ef exx\r
fecee241 4635 db 036h\r
a16ba2b0 4636 db 0f3h ;20f1 di\r
fecee241 4637 db 02ch\r
a16ba2b0 4638 db 0fbh ;20f3 ei\r
fecee241 4639 db 032h\r
a16ba2b0 4640 db 000h ;20f5 nop\r
fecee241 4641 db 069h\r
a16ba2b0 4642 db 007h ;20f7 rlca\r
fecee241 4643 db 09eh\r
a16ba2b0 4644 db 00fh ;20f9 rrca\r
fecee241 4645 db 0adh\r
a16ba2b0 4646 db 017h ;20fb rla\r
fecee241 4647 db 098h\r
a16ba2b0 4648 db 01fh ;20fd rra\r
fecee241 4649 db 0a7h\r
a16ba2b0 4650 db 027h ;20ff daa\r
fecee241 4651 db 026h\r
a16ba2b0 4652 db 02fh ;2101 cpl\r
fecee241 4653 db 023h\r
a16ba2b0 4654 db 037h ;2103 scf\r
fecee241 4655 db 0bah\r
a16ba2b0 4656 db 03fh ;2105 ccf\r
fecee241 4657 db 010h\r
a16ba2b0
L
4658 db 0ffh ;2107 EOT\r
4659\r
4660b_0x2108_start: ; 1 byte opcodes\r
4661 defb 0c0h ;2108 ld r,r\r
fecee241
L
4662 defb 040h\r
4663 defb 056h\r
4664 defw l22fch\r
a16ba2b0
L
4665\r
4666 defb 0f8h ;210d add a,r\r
fecee241
L
4667 defb 080h\r
4668 defb 003h\r
4669 defw l2305h\r
a16ba2b0
L
4670\r
4671 defb 0f8h ;2112 adc a,r\r
fecee241
L
4672 defb 088h\r
4673 defb 000h\r
4674 defw l2305h\r
4675\r
4676 defb 0f8h\r
4677 defb 090h\r
4678 defb 0c9h\r
4679 defw l24ebh\r
4680\r
4681 defb 0f8h\r
4682 defb 098h\r
4683 defb 0b7h\r
4684 defw l2305h\r
4685\r
4686 defb 0f8h\r
4687 defb 0a0h\r
4688 defb 006h\r
4689 defw l24ebh\r
4690\r
4691 defb 0f8h\r
4692 defb 0a8h\r
4693 defb 0cch\r
4694 defw l24ebh\r
4695\r
4696 defb 0f8h\r
4697 defb 0b0h\r
4698 defb 06ch\r
4699 defw l24ebh\r
4700\r
4701 defb 0f8h\r
4702 defb 0b8h\r
4703 defb 013h\r
4704 defw l24ebh\r
4705\r
4706 defb 0c7h\r
a16ba2b0 4707 defb 0c0h ;2136 ret cc\r
fecee241
L
4708 defb 08bh\r
4709 defw l2561h\r
a16ba2b0 4710\r
30d1329e 4711 defb 0c7h ;213a rst\r
fecee241
L
4712 defb 0c7h\r
4713 defb 0b4h\r
4714 defw l231eh\r
a16ba2b0
L
4715\r
4716 defb 0ffh ;213f ret\r
fecee241
L
4717 defb 0c9h\r
4718 defb 08bh\r
4719 defw l230bh\r
a16ba2b0
L
4720\r
4721 defb 0cfh ;2144 pop rr\r
fecee241
L
4722 defb 0c1h\r
4723 defb 081h\r
4724 defw l2546h\r
a16ba2b0
L
4725\r
4726 defb 0cfh ;2149 push rr\r
fecee241
L
4727 defb 0c5h\r
4728 defb 084h\r
4729 defw l2546h\r
a16ba2b0
L
4730\r
4731 defb 0ffh ;214e ex (sp),hl\r
fecee241
L
4732 defb 0e3h\r
4733 defb 034h\r
4734 defw l232ah\r
a16ba2b0
L
4735\r
4736 defb 0ffh ;2153 jp (hl)\r
fecee241
L
4737 defb 0e9h\r
4738 defb 052h\r
4739 defw l2338h\r
a16ba2b0
L
4740\r
4741 defb 0ffh ;2158 ex de,hl\r
fecee241
L
4742 defb 0ebh\r
4743 defb 034h\r
4744 defw l2345h\r
a16ba2b0
L
4745\r
4746 defb 0ffh ;215d ld sp,hl\r
fecee241
L
4747 defb 0f9h\r
4748 defb 056h\r
4749 defw l234bh\r
a16ba2b0
L
4750\r
4751 defb 0cfh ;2162 inc rr\r
fecee241
L
4752 defb 003h\r
4753 defb 041h\r
4754 defw l254bh\r
a16ba2b0
L
4755\r
4756 defb 0cfh ;2167 dec rr\r
fecee241
L
4757 defb 00bh\r
4758 defb 029h\r
4759 defw l254bh\r
a16ba2b0 4760\r
8590a76b 4761\r
a16ba2b0 4762 defb 0c7h ;216c inc r\r
fecee241
L
4763 defb 004h\r
4764 defb 041h\r
4765 defw l24dfh\r
a16ba2b0
L
4766\r
4767 defb 0c7h ;2171 dec r\r
fecee241
L
4768 defb 005h\r
4769 defb 029h\r
4770 defw l24dfh\r
a16ba2b0
L
4771\r
4772 defb 0ffh ;2176 ex af,af'\r
fecee241
L
4773 defb 008h\r
4774 defb 034h\r
4775 defw l2357h\r
a16ba2b0
L
4776\r
4777 defb 0cfh ;217b add hl,rr\r
fecee241
L
4778 defb 009h\r
4779 defb 003h\r
4780 defw l235dh\r
a16ba2b0
L
4781\r
4782 defb 0efh ;2180 ld (rr),a ;rr=bc,de\r
fecee241
L
4783 defb 002h\r
4784 defb 056h\r
4785 defw l2366h\r
a16ba2b0
L
4786\r
4787 defb 0efh ;2185 ld a,(rr) ;rr=bc,de\r
fecee241
L
4788 defb 00ah\r
4789 defb 056h\r
4790 defw l236fh\r
a16ba2b0
L
4791\r
4792 defb 000h ;218a EOT\r
4793\r
4794b_0x218B_start: ; 2 byte opdodes\r
4795 defb 0c7h ;218b ld r,nn\r
fecee241
L
4796 defb 006h\r
4797 defb 056h\r
4798 defw l2384h\r
a16ba2b0
L
4799\r
4800 defb 0ffh ;2190 add a,nn\r
fecee241
L
4801 defb 0c6h\r
4802 defb 003h\r
4803 defw l237fh\r
a16ba2b0
L
4804\r
4805 defb 0ffh ;2195 adc a,nn\r
fecee241
L
4806 defb 0ceh\r
4807 defb 000h\r
4808 defw l237fh\r
a16ba2b0
L
4809\r
4810 defb 0ffh ;219a sub a,nn\r
fecee241
L
4811 defb 0d6h\r
4812 defb 0c9h\r
4813 defw l2397h\r
a16ba2b0 4814\r
fecee241
L
4815 defb 0ffh\r
4816 defb 0deh\r
4817 defb 0b7h\r
4818 defw l237fh\r
a16ba2b0
L
4819\r
4820 defb 0ffh ;21a4 and a,nn\r
fecee241
L
4821 defb 0e6h\r
4822 defb 006h\r
4823 defw l2397h\r
a16ba2b0 4824\r
fecee241
L
4825 defb 0ffh\r
4826 defb 0eeh\r
4827 defb 0cch\r
4828 defw l2397h\r
a16ba2b0 4829\r
fecee241
L
4830 defb 0ffh\r
4831 defb 0f6h\r
4832 defb 06ch\r
4833 defw l2397h\r
a16ba2b0
L
4834\r
4835 defb 0ffh ;21b3 cp a,nn\r
fecee241
L
4836 defb 0feh\r
4837 defb 013h\r
4838 defw l2397h\r
a16ba2b0
L
4839\r
4840 defb 0ffh ;21b8 djnz\r
fecee241
L
4841 defb 010h\r
4842 defb 02eh\r
4843 defw l23b0h\r
a16ba2b0
L
4844\r
4845 defb 0ffh ;21bd jr\r
fecee241
L
4846 defb 018h\r
4847 defb 054h\r
4848 defw l23b0h\r
a16ba2b0
L
4849\r
4850 defb 0e7h ;21c2 jr,cc\r
fecee241
L
4851 defb 020h\r
4852 defb 054h\r
4853 defw l23a1h\r
a16ba2b0 4854\r
fecee241 4855 defb 0ffh\r
a16ba2b0 4856 defb 0d3h ;21c8 out (nn),a\r
fecee241
L
4857 defb 076h\r
4858 defw l23d5h\r
a16ba2b0
L
4859\r
4860 defb 0ffh ;21cc in a,(nn)\r
fecee241
L
4861 defb 0dbh\r
4862 defb 03fh\r
4863 defw l23c3h\r
a16ba2b0
L
4864\r
4865 defb 000h ;21d1 EOT\r
4866\r
4867b_0x21D2_start: ; 3 byte opcodes\r
fecee241
L
4868 defb 0c7h\r
4869 defb 0c2h\r
4870 defb 052h\r
4871 defw l23e0h\r
4872\r
4873 defb 0c7h\r
4874 defb 0c4h\r
4875 defb 00ch\r
4876 defw l23e0h\r
4877\r
4878 defb 0cfh\r
4879 defb 001h\r
4880 defb 056h\r
4881 defw l23fch\r
4882\r
4883 defb 0ffh\r
4884 defb 0c3h\r
4885 defb 052h\r
4886 defw l23e6h\r
4887\r
4888 defb 0ffh\r
4889 defb 0cdh\r
4890 defb 00ch\r
4891 defw l23e6h\r
4892\r
4893 defb 0ffh\r
4894 defb 022h\r
4895 defb 056h\r
4896 defw l2404h\r
4897\r
4898 defb 0ffh\r
4899 defb 02ah\r
4900 defb 056h\r
4901 defw l240dh\r
4902\r
4903 defb 0ffh\r
4904 defb 032h\r
4905 defb 056h\r
4906 defw l2416h\r
4907\r
4908 defb 0ffh\r
4909 defb 03ah\r
4910 defb 056h\r
4911 defw l2421h\r
4912\r
4913 defb 000h\r
a16ba2b0
L
4914\r
4915b_0x2200_start: ; prefix ED + 1 byte opcode\r
4916 defb 044h ;2200 neg\r
fecee241 4917 defb 066h\r
a16ba2b0 4918 defb 045h ;2202 retn\r
fecee241 4919 defb 092h\r
a16ba2b0 4920 defb 04dh ;2204 reti\r
fecee241 4921 defb 08eh\r
a16ba2b0 4922 defb 067h ;2206 rrd\r
fecee241 4923 defb 0b1h\r
a16ba2b0 4924 defb 06fh ;2208 rld\r
fecee241 4925 defb 0a2h\r
a16ba2b0 4926 defb 0a0h ;220a ldi\r
fecee241
L
4927 defb 05fh\r
4928 defb 0a1h\r
4929 defb 01ch\r
4930 defb 0a2h\r
4931 defb 04bh\r
4932 defb 0a3h\r
4933 defb 07dh\r
a16ba2b0 4934 defb 0a8h ;2212 ldd\r
fecee241
L
4935 defb 058h\r
4936 defb 0a9h\r
4937 defb 015h\r
4938 defb 0aah\r
4939 defb 044h\r
4940 defb 0abh\r
4941 defb 079h\r
a16ba2b0 4942 defb 0b0h ;221a ldir\r
fecee241
L
4943 defb 062h\r
4944 defb 0b1h\r
4945 defb 01fh\r
4946 defb 0b2h\r
4947 defb 04eh\r
4948 defb 0b3h\r
4949 defb 072h\r
a16ba2b0 4950 defb 0b8h ;2222 lddr\r
fecee241
L
4951 defb 05bh\r
4952 defb 0b9h\r
4953 defb 018h\r
4954 defb 0bah\r
4955 defb 047h\r
4956 defb 0bbh\r
4957 defb 06eh\r
a16ba2b0 4958 defb 08bh ;222a otdm\r
fecee241 4959 defb 0d5h\r
a16ba2b0 4960 defb 09bh ;222c otdmr\r
fecee241 4961 defb 0d9h\r
a16ba2b0 4962 defb 083h ;222e otim\r
fecee241 4963 defb 0deh\r
a16ba2b0 4964 defb 093h ;2230 otimr\r
fecee241 4965 defb 0e2h\r
a16ba2b0 4966 defb 076h ;2232 slp\r
fecee241 4967 defb 0ebh\r
a16ba2b0 4968 defb 0ffh ;2234 EOT\r
fecee241 4969\r
a16ba2b0
L
4970l2235h:\r
4971 defb 0e7h ;2235 in r,(c) ;r=bcde\r
fecee241
L
4972 defb 040h\r
4973 defb 03fh\r
4974 defw l2455h\r
a16ba2b0
L
4975\r
4976 defb 0f7h ;223a in r,(c) ;r=hl\r
fecee241
L
4977 defb 060h\r
4978 defb 03fh\r
4979 defw l2455h\r
a16ba2b0
L
4980\r
4981 defb 0ffh ;223f in r,(c) ;r=a\r
fecee241
L
4982 defb 078h\r
4983 defb 03fh\r
4984 defw l2455h\r
a16ba2b0 4985\r
fecee241
L
4986 defb 0e7h\r
4987 defb 041h\r
4988 defb 076h\r
4989 defw l2461h\r
a16ba2b0 4990\r
fecee241
L
4991 defb 0f7h\r
4992 defb 061h\r
4993 defb 076h\r
4994 defw l2461h\r
a16ba2b0
L
4995\r
4996 defb 0ffh ;224e out (c),r ;r=a\r
fecee241
L
4997 defb 079h\r
4998 defb 076h\r
4999 defw l2461h\r
a16ba2b0
L
5000\r
5001 defb 0cfh ;2253 sbc hl,rr\r
fecee241
L
5002 defb 042h\r
5003 defb 0b7h\r
5004 defw l246dh\r
a16ba2b0
L
5005\r
5006 defb 0cfh ;2258 adc hl,rr\r
fecee241
L
5007 defb 04ah\r
5008 defb 000h\r
5009 defw l246dh\r
a16ba2b0
L
5010\r
5011 defb 0ffh ;225d im 0\r
fecee241
L
5012 defb 046h\r
5013 defb 03dh\r
5014 defw l2427h\r
a16ba2b0
L
5015\r
5016 defb 0ffh ;2262 im 1\r
fecee241
L
5017 defb 056h\r
5018 defb 03dh\r
5019 defw l242bh\r
a16ba2b0
L
5020\r
5021 defb 0ffh ;2267 im 2\r
fecee241
L
5022 defb 05eh\r
5023 defb 03dh\r
5024 defw l242fh\r
a16ba2b0
L
5025\r
5026 defb 0ffh ;226c ld i,a\r
fecee241
L
5027 defb 047h\r
5028 defb 056h\r
5029 defw l2434h\r
a16ba2b0 5030\r
fecee241
L
5031 defb 0ffh\r
5032 defb 057h\r
5033 defb 056h\r
5034 defw l2439h\r
a16ba2b0 5035\r
fecee241
L
5036 defb 0ffh\r
5037 defb 04fh\r
5038 defb 056h\r
5039 defw l243eh\r
a16ba2b0 5040\r
fecee241
L
5041 defb 0ffh\r
5042 defb 05fh\r
5043 defb 056h\r
5044 defw l2443h\r
a16ba2b0
L
5045\r
5046 defb 0cfh ;2280 mlt rr\r
fecee241
L
5047 defb 04ch\r
5048 defb 0d2h\r
5049 defw l254bh\r
a16ba2b0
L
5050\r
5051 defb 0c7h ;2285 tst r\r
fecee241
L
5052 defb 004h\r
5053 defb 0eeh\r
5054 defw l24dfh\r
a16ba2b0 5055\r
fecee241 5056 defb 000h\r
a16ba2b0
L
5057\r
5058l228bh:\r
fecee241
L
5059 defb 0e7h\r
5060 defb 000h\r
5061 defb 0cfh\r
a16ba2b0
L
5062\r
5063b_0x228E_start:\r
fecee241 5064 defw l230ch\r
a16ba2b0
L
5065\r
5066b_0x2290_start:\r
fecee241
L
5067 defb 0f7h\r
5068 defb 020h\r
5069 defb 0cfh\r
a16ba2b0
L
5070\r
5071b_0x2293_start:\r
fecee241 5072 defw l230ch\r
a16ba2b0
L
5073\r
5074b_0x2295_start:\r
fecee241
L
5075 defb 0ffh\r
5076 defb 038h\r
5077 defb 0cfh\r
a16ba2b0
L
5078\r
5079b_0x2298_start:\r
fecee241 5080 defw l230ch\r
a16ba2b0
L
5081\r
5082b_0x229A_start:\r
fecee241
L
5083 defb 0e7h\r
5084 defb 001h\r
5085 defb 0e7h\r
a16ba2b0
L
5086\r
5087b_0x229D_start:\r
fecee241 5088 defw l2315h\r
a16ba2b0
L
5089\r
5090b_0x229F_start:\r
fecee241
L
5091 defb 0f7h\r
5092 defb 021h\r
5093 defb 0e7h\r
a16ba2b0
L
5094\r
5095b_0x22A2_start:\r
fecee241 5096 defw l2315h\r
a16ba2b0
L
5097\r
5098b_0x22A4_start:\r
fecee241
L
5099 defb 0ffh\r
5100 defb 039h\r
5101 defb 0e7h\r
a16ba2b0
L
5102\r
5103b_0x22A7_start:\r
fecee241 5104 defw l2315h\r
a16ba2b0
L
5105\r
5106b_0x22A9_start:\r
fecee241
L
5107 defb 0ffh\r
5108 defb 064h\r
5109 defb 0eeh\r
a16ba2b0
L
5110\r
5111b_0x22AC_start:\r
fecee241 5112 defw l2397h\r
a16ba2b0
L
5113\r
5114b_0x22AE_start:\r
fecee241
L
5115 defb 0ffh\r
5116 defb 074h\r
5117 defb 0f1h\r
a16ba2b0
L
5118\r
5119b_0x22B1_start:\r
fecee241 5120 defw l2397h\r
a16ba2b0
L
5121\r
5122b_0x22B3_start:\r
fecee241 5123 defb 000h\r
a16ba2b0 5124l22b4h:\r
fecee241
L
5125 defb 0efh\r
5126 defb 043h\r
5127 defb 056h\r
a16ba2b0
L
5128\r
5129b_0x22B7_start:\r
fecee241 5130 defw l2476h\r
a16ba2b0
L
5131\r
5132b_0x22B9_start:\r
fecee241
L
5133 defb 0ffh\r
5134 defb 073h\r
5135 defb 056h\r
a16ba2b0
L
5136\r
5137b_0x22BC_start:\r
fecee241 5138 defw l2476h\r
a16ba2b0
L
5139\r
5140b_0x22BE_start:\r
fecee241
L
5141 defb 0efh\r
5142 defb 04bh\r
5143 defb 056h\r
a16ba2b0
L
5144\r
5145b_0x22C1_start:\r
fecee241 5146 defw l247fh\r
a16ba2b0
L
5147\r
5148b_0x22C3_start:\r
fecee241
L
5149 defb 0ffh\r
5150 defb 07bh\r
5151 defb 056h\r
a16ba2b0
L
5152\r
5153b_0x22C6_start:\r
fecee241 5154 defw l247fh\r
a16ba2b0
L
5155\r
5156b_0x22C8_start:\r
fecee241 5157 defb 000h\r
a16ba2b0 5158l22c9h:\r
fecee241
L
5159 defb 0f8h\r
5160 defb 000h\r
5161 defb 09bh\r
a16ba2b0
L
5162\r
5163b_0x22CC_start:\r
fecee241 5164 defw l24aeh\r
a16ba2b0
L
5165\r
5166b_0x22CE_start:\r
fecee241
L
5167 defb 0f8h\r
5168 defb 008h\r
5169 defb 0aah\r
a16ba2b0
L
5170\r
5171b_0x22D1_start:\r
fecee241 5172 defw l24aeh\r
a16ba2b0
L
5173\r
5174b_0x22D3_start:\r
fecee241
L
5175 defb 0f8h\r
5176 defb 010h\r
5177 defb 096h\r
a16ba2b0
L
5178\r
5179b_0x22D6_start:\r
fecee241 5180 defw l24aeh\r
a16ba2b0
L
5181\r
5182b_0x22D8_start:\r
fecee241
L
5183 defb 0f8h\r
5184 defb 018h\r
5185 defb 0a5h\r
a16ba2b0
L
5186\r
5187b_0x22DB_start:\r
fecee241 5188 defw l24aeh\r
a16ba2b0
L
5189\r
5190b_0x22DD_start:\r
fecee241
L
5191 defb 0f8h\r
5192 defb 020h\r
5193 defb 0c0h\r
a16ba2b0
L
5194\r
5195b_0x22E0_start:\r
fecee241 5196 defw l24aeh\r
a16ba2b0
L
5197\r
5198b_0x22E2_start:\r
fecee241
L
5199 defb 0f8h\r
5200 defb 028h\r
5201 defb 0c3h\r
a16ba2b0
L
5202\r
5203b_0x22E5_start:\r
fecee241 5204 defw l24aeh\r
a16ba2b0
L
5205\r
5206b_0x22E7_start:\r
fecee241
L
5207 defb 0f8h\r
5208 defb 038h\r
5209 defb 0c6h\r
a16ba2b0
L
5210\r
5211b_0x22EA_start:\r
fecee241 5212 defw l24aeh\r
a16ba2b0
L
5213\r
5214b_0x22EC_start:\r
fecee241
L
5215 defb 0c0h\r
5216 defb 040h\r
5217 defb 009h\r
a16ba2b0
L
5218\r
5219b_0x22EF_start:\r
fecee241 5220 defw l2487h\r
a16ba2b0
L
5221\r
5222b_0x22F1_start:\r
fecee241
L
5223 defb 0c0h\r
5224 defb 080h\r
5225 defb 088h\r
a16ba2b0
L
5226\r
5227b_0x22F4_start:\r
fecee241 5228 defw l2487h\r
a16ba2b0
L
5229\r
5230b_0x22F6_start:\r
fecee241
L
5231 defb 0c0h\r
5232 defb 0c0h\r
5233 defb 0bdh\r
a16ba2b0
L
5234\r
5235b_0x22F9_start:\r
fecee241 5236 defw l2487h\r
a16ba2b0
L
5237\r
5238b_0x22FB_start:\r
fecee241 5239 defb 000h\r
a16ba2b0 5240l22fch:\r
fecee241
L
5241 call l24dfh\r
5242 call sub_257ch\r
5243 jp l24ebh\r
a16ba2b0 5244l2305h:\r
fecee241
L
5245 call sub_2579h\r
5246 jp l24ebh\r
a16ba2b0 5247l230bh:\r
fecee241 5248 ret\r
a16ba2b0 5249l230ch:\r
fecee241
L
5250 call l24dfh\r
5251 call sub_257ch\r
5252 jp l23c6h\r
a16ba2b0 5253l2315h:\r
fecee241
L
5254 call l23c6h\r
5255 call sub_257ch\r
5256 jp l24dfh\r
a16ba2b0 5257l231eh:\r
fecee241
L
5258 comst\r
5259 ld a,(iy+000h)\r
a16ba2b0 5260 comend\r
fecee241
L
5261 and 038h\r
5262 jp out.hex\r
a16ba2b0 5263l232ah:\r
fecee241
L
5264 ld hl,b_0x2333_start\r
5265 call PSTR\r
5266 jp l253eh\r
a16ba2b0
L
5267\r
5268b_0x2333_start:\r
5269 DC '(SP),'\r
5270\r
5271l2338h:\r
fecee241
L
5272 ld a,'('\r
5273 call OUTCHAR\r
5274 call l253eh\r
5275 ld a,')'\r
5276 jp OUTCHAR\r
a16ba2b0 5277l2345h:\r
fecee241
L
5278 ld hl,l1d86h\r
5279 jp PSTR\r
a16ba2b0 5280l234bh:\r
fecee241
L
5281 ld hl,b_0x2354_start\r
5282 call PSTR\r
5283 jp l253eh\r
a16ba2b0
L
5284\r
5285b_0x2354_start:\r
5286 DC 'SP,'\r
5287\r
5288l2357h:\r
fecee241
L
5289 ld hl,b_0x1D80_start\r
5290 jp PSTR\r
a16ba2b0 5291l235dh:\r
fecee241
L
5292 call l253eh\r
5293 call sub_257ch\r
5294 jp l254bh\r
a16ba2b0 5295l2366h:\r
fecee241
L
5296 call sub_2372h\r
5297 call sub_257ch\r
5298 jp l23dbh\r
a16ba2b0 5299l236fh:\r
fecee241 5300 call sub_2579h\r
a16ba2b0 5301sub_2372h:\r
fecee241
L
5302 ld a,'('\r
5303 call OUTCHAR\r
5304 call l254bh\r
5305 ld a,')'\r
5306 jp OUTCHAR\r
a16ba2b0 5307l237fh:\r
fecee241
L
5308 call sub_2579h\r
5309 jr l2397h\r
a16ba2b0 5310l2384h:\r
fecee241
L
5311 call l24dfh\r
5312 call sub_257ch\r
5313 ld a,(is.pfx.IXY)\r
5314 and a\r
5315 comst\r
5316 ld a,(iy+002h)\r
a16ba2b0 5317 comend\r
fecee241 5318 jr nz,l239eh\r
a16ba2b0 5319l2397h:\r
fecee241
L
5320 comst\r
5321 ld a,(iy+001h)\r
a16ba2b0
L
5322 comend\r
5323l239eh:\r
fecee241 5324 jp out.hex\r
a16ba2b0 5325l23a1h:\r
fecee241
L
5326 comst\r
5327 ld a,(iy+000h)\r
a16ba2b0 5328 comend\r
fecee241
L
5329 and 018h\r
5330 call sub_2568h\r
5331 call sub_257ch\r
a16ba2b0 5332l23b0h:\r
fecee241
L
5333 comst\r
5334 ld c,(iy+001h)\r
a16ba2b0 5335 comend\r
fecee241
L
5336 ld a,c\r
5337 rla\r
5338 sbc a,a\r
5339 ld b,a\r
5340 push iy\r
5341 pop hl\r
5342 add hl,bc\r
5343 inc hl\r
5344 inc hl\r
5345 jr l23f0h\r
a16ba2b0 5346l23c3h:\r
fecee241 5347 call sub_2579h\r
a16ba2b0 5348l23c6h:\r
fecee241
L
5349 ld a,028h\r
5350 call OUTCHAR\r
5351 comst\r
5352 ld a,(iy+001h)\r
a16ba2b0 5353 comend\r
fecee241 5354 jp l252bh\r
a16ba2b0 5355l23d5h:\r
fecee241
L
5356 call l23c6h\r
5357 call sub_257ch\r
a16ba2b0 5358l23dbh:\r
fecee241
L
5359 ld a,041h\r
5360 jp OUTCHAR\r
a16ba2b0 5361l23e0h:\r
fecee241
L
5362 call l2561h\r
5363 call sub_257ch\r
a16ba2b0 5364l23e6h:\r
fecee241
L
5365 comst\r
5366 ld l,(iy+001h)\r
5367 ld h,(iy+002h)\r
a16ba2b0
L
5368 comend\r
5369l23f0h:\r
fecee241 5370 ld a,002h\r
a16ba2b0 5371sub_23f2h:\r
fecee241
L
5372 ld (XBE03),a\r
5373 ld (XBE01),hl\r
5374 call out.hl\r
5375 ret\r
a16ba2b0 5376l23fch:\r
fecee241
L
5377 call l254bh\r
5378 call sub_257ch\r
5379 jr l23e6h\r
a16ba2b0 5380l2404h:\r
fecee241
L
5381 call sub_24c6h\r
5382 call sub_257ch\r
5383 jp l253eh\r
a16ba2b0 5384l240dh:\r
fecee241
L
5385 call l253eh\r
5386 call sub_257ch\r
5387 jp sub_24c6h\r
a16ba2b0 5388l2416h:\r
fecee241
L
5389 call sub_24c6h\r
5390 call sub_257ch\r
5391 ld a,041h\r
5392 jp OUTCHAR\r
a16ba2b0 5393l2421h:\r
fecee241
L
5394 call sub_2579h\r
5395 jp sub_24c6h\r
a16ba2b0 5396l2427h:\r
fecee241
L
5397 ld a,030h\r
5398 jr l2431h\r
a16ba2b0 5399l242bh:\r
fecee241
L
5400 ld a,031h\r
5401 jr l2431h\r
a16ba2b0 5402l242fh:\r
fecee241 5403 ld a,032h\r
a16ba2b0 5404l2431h:\r
fecee241 5405 jp OUTCHAR\r
a16ba2b0 5406l2434h:\r
fecee241
L
5407 ld hl,b_0x2449_start\r
5408 jr l2446h\r
a16ba2b0 5409l2439h:\r
fecee241
L
5410 ld hl,l244ch\r
5411 jr l2446h\r
a16ba2b0 5412l243eh:\r
fecee241
L
5413 ld hl,l244fh\r
5414 jr l2446h\r
a16ba2b0 5415l2443h:\r
fecee241 5416 ld hl,l2452h\r
a16ba2b0 5417l2446h:\r
fecee241 5418 jp PSTR\r
a16ba2b0
L
5419\r
5420b_0x2449_start:\r
5421 DC 'I,A'\r
5422l244ch:\r
5423 DC 'A,I'\r
5424l244fh:\r
5425 DC 'R,A'\r
5426l2452h:\r
5427 DC 'A,R'\r
5428\r
5429l2455h:\r
fecee241
L
5430 call l24dfh\r
5431 call sub_257ch\r
5432 ld hl,t__C_\r
5433 jp PSTR\r
a16ba2b0 5434l2461h:\r
fecee241
L
5435 ld hl,t__C_\r
5436 call PSTR\r
5437 call sub_257ch\r
5438 jp l24dfh\r
a16ba2b0 5439l246dh:\r
fecee241
L
5440 call l253eh\r
5441 call sub_257ch\r
5442 jp l254bh\r
a16ba2b0 5443l2476h:\r
fecee241
L
5444 call sub_24c6h\r
5445 call sub_257ch\r
5446 jp l254bh\r
a16ba2b0 5447l247fh:\r
fecee241
L
5448 call l254bh\r
5449 call sub_257ch\r
5450 jr sub_24c6h\r
a16ba2b0 5451l2487h:\r
fecee241
L
5452 ld a,(is.pfx.IXY)\r
5453 and a\r
5454 jr nz,l2496h\r
5455 comst\r
5456 ld a,(iy+001h)\r
a16ba2b0 5457 comend\r
fecee241 5458 jr l249dh\r
a16ba2b0 5459l2496h:\r
fecee241
L
5460 comst\r
5461 ld a,(iy+002h)\r
a16ba2b0
L
5462 comend\r
5463l249dh:\r
fecee241
L
5464 push af\r
5465 rra\r
5466 rra\r
5467 rra\r
5468 and 007h\r
5469 add a,'0'\r
5470 call OUTCHAR\r
5471 call sub_257ch\r
5472 pop af\r
5473 jr l24f2h\r
a16ba2b0 5474l24aeh:\r
fecee241
L
5475 ld a,(is.pfx.IXY)\r
5476 and a\r
5477 jr nz,l24bdh\r
5478 comst\r
5479 ld a,(iy+001h)\r
a16ba2b0 5480 comend\r
fecee241 5481 jr l24c4h\r
a16ba2b0 5482l24bdh:\r
fecee241
L
5483 comst\r
5484 ld a,(iy+002h)\r
a16ba2b0
L
5485 comend\r
5486l24c4h:\r
fecee241 5487 jr l24f2h\r
a16ba2b0 5488sub_24c6h:\r
fecee241
L
5489 ld a,'('\r
5490 call OUTCHAR\r
5491 comst\r
5492 ld l,(iy+001h)\r
5493 ld h,(iy+002h)\r
a16ba2b0 5494 comend\r
fecee241
L
5495 ld a,001h\r
5496 call sub_23f2h\r
5497 ld a,')'\r
5498 jp OUTCHAR\r
a16ba2b0 5499l24dfh:\r
fecee241
L
5500 comst\r
5501 ld a,(iy+000h)\r
a16ba2b0 5502 comend\r
fecee241
L
5503 rra\r
5504 rra\r
5505 rra\r
5506 jr l24f2h\r
a16ba2b0 5507l24ebh:\r
fecee241
L
5508 comst\r
5509 ld a,(iy+000h)\r
a16ba2b0
L
5510 comend\r
5511l24f2h:\r
fecee241
L
5512 and 007h\r
5513 cp 006h\r
5514 jr nz,l2533h\r
5515 ld a,(is.pfx.IXY)\r
5516 and a\r
5517 ld a,006h\r
5518 jr z,l2533h\r
5519 ld hl,b_0x2538_start\r
5520 ld a,(is.pfx.IXY)\r
5521 dec a\r
5522 jr z,l250ch\r
5523 ld hl,b_0x253B_start\r
a16ba2b0 5524l250ch:\r
fecee241
L
5525 call PSTR\r
5526 comst\r
5527 ld a,(iy+001h)\r
a16ba2b0 5528 comend\r
fecee241
L
5529 and a\r
5530 push af\r
5531 jp m,l2523h\r
5532 ld a,'+'\r
5533 call OUTCHAR\r
5534 pop af\r
5535 jr l252bh\r
a16ba2b0 5536l2523h:\r
fecee241
L
5537 ld a,'-'\r
5538 call OUTCHAR\r
5539 pop af\r
5540 neg\r
a16ba2b0 5541l252bh:\r
fecee241
L
5542 call out.hex\r
5543 ld a,')'\r
5544 jp OUTCHAR\r
a16ba2b0 5545l2533h:\r
fecee241
L
5546 ld hl,t_BCDEHL_HL_A\r
5547 jr l2572h\r
a16ba2b0
L
5548\r
5549b_0x2538_start:\r
5550 DC '(IX'\r
5551b_0x253B_start:\r
5552 DC '(IY'\r
5553\r
5554l253eh:\r
fecee241
L
5555 ld a,(is.pfx.IXY)\r
5556 ld hl,t_HL.IX.IY\r
5557 jr l2572h\r
a16ba2b0 5558l2546h:\r
fecee241
L
5559 ld hl,t_BC.DE.HL.AF\r
5560 jr l254eh\r
a16ba2b0 5561l254bh:\r
fecee241 5562 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 5563l254eh:\r
fecee241
L
5564 comst\r
5565 ld a,(iy+000h)\r
a16ba2b0 5566 comend\r
fecee241
L
5567 rra\r
5568 rra\r
5569 rra\r
5570 rra\r
5571 and 003h\r
5572 cp 002h\r
5573 jr z,l253eh\r
5574 jr l2572h\r
a16ba2b0 5575l2561h:\r
fecee241
L
5576 comst\r
5577 ld a,(iy+000h)\r
a16ba2b0
L
5578 comend\r
5579sub_2568h:\r
fecee241
L
5580 rra\r
5581 rra\r
5582 rra\r
5583 and 007h\r
5584 ld hl,t_tstfl_ZCPS\r
5585 jr l2572h\r
a16ba2b0 5586l2572h:\r
fecee241
L
5587 ld b,a\r
5588 call sub_0a48h\r
5589 jp PSTR\r
a16ba2b0 5590sub_2579h:\r
fecee241 5591 call l23dbh\r
a16ba2b0 5592sub_257ch:\r
fecee241
L
5593 ld a,','\r
5594 jp OUTCHAR\r
a16ba2b0 5595sub_2581h:\r
fecee241 5596 call PSTR\r
a16ba2b0 5597l2584h:\r
fecee241
L
5598 call OUTBL\r
5599 inc c\r
5600 ld a,c\r
5601 cp 006h\r
5602 jr nz,l2584h\r
5603 ret\r
a16ba2b0
L
5604\r
5605t_MNEMONICS:\r
5606 DC 'ADC'\r
5607 DC 'ADD'\r
5608 DC 'AND'\r
5609 DC 'BIT'\r
5610 DC 'CALL'\r
5611 DC 'CCF'\r
5612 DC 'CP'\r
5613 DC 'CPD'\r
5614 DC 'CPDR'\r
5615 DC 'CPI'\r
5616 DC 'CPIR'\r
5617 DC 'CPL'\r
5618 DC 'DAA'\r
5619 DC 'DEC'\r
5620 DC 'DI'\r
5621 DC 'DJNZ'\r
5622 DC 'EI'\r
5623 DC 'EX'\r
5624 DC 'EXX'\r
5625 DC 'HALT'\r
5626 DC 'IM'\r
5627 DC 'IN'\r
5628 DC 'INC'\r
5629 DC 'IND'\r
5630 DC 'INDR'\r
5631 DC 'INI'\r
5632 DC 'INIR'\r
5633 DC 'JP'\r
5634 DC 'JR'\r
5635 DC 'LD'\r
5636 DC 'LDD'\r
5637 DC 'LDDR'\r
5638 DC 'LDI'\r
5639 DC 'LDIR'\r
5640 DC 'NEG'\r
5641 DC 'NOP'\r
5642 DC 'OR'\r
5643 DC 'OTDR'\r
5644 DC 'OTIR'\r
5645 DC 'OUT'\r
5646 DC 'OUTD'\r
5647 DC 'OUTI'\r
5648 DC 'POP'\r
5649 DC 'PUSH'\r
5650 DC 'RES'\r
5651 DC 'RET'\r
5652 DC 'RETI'\r
5653 DC 'RETN'\r
5654 DC 'RL'\r
5655 DC 'RLA'\r
5656 DC 'RLC'\r
5657 DC 'RLCA'\r
5658 DC 'RLD'\r
5659 DC 'RR'\r
5660 DC 'RRA'\r
5661 DC 'RRC'\r
5662 DC 'RRCA'\r
5663 DC 'RRD'\r
5664 DC 'RST'\r
5665 DC 'SBC'\r
5666 DC 'SCF'\r
5667 DC 'SET'\r
5668 DC 'SLA'\r
5669 DC 'SRA'\r
5670 DC 'SRL'\r
5671 DC 'SUB'\r
5672 DC 'XOR'\r
5673 DC 'IN0'\r
5674 DC 'MLT'\r
5675 DC 'OTDM'\r
5676 DC 'OTDMR'\r
5677 DC 'OTIM'\r
5678 DC 'OTIMR'\r
5679 DC 'OUT0'\r
5680 DC 'SLP'\r
5681 DC 'TST'\r
5682 DC 'TSTIO'\r
5683 DB 0\r
fecee241 5684\r
a16ba2b0
L
5685t_BCDEHL_HL_A:\r
5686 DC 'B'\r
5687 DC 'C'\r
5688 DC 'D'\r
5689 DC 'E'\r
5690 DC 'H'\r
5691 DC 'L'\r
5692 DC '(HL)'\r
5693 DC 'A'\r
5694 DB 0\r
5695t_BC.DE.HL.SP:\r
5696 DC 'BC'\r
5697 DC 'DE'\r
5698 DC 'HL'\r
5699 DC 'SP'\r
5700 DB 0\r
5701t_BC.DE.HL.AF:\r
5702 DC 'BC'\r
5703 DC 'DE'\r
5704t_HL.AF:\r
5705 DC 'HL'\r
5706 DC 'AF'\r
5707 DB 0\r
5708t_BC.DE.IY.SP:\r
5709 DC 'BC'\r
5710 DC 'DE'\r
5711 DC 'IY'\r
5712 DC 'SP'\r
5713 DB 0\r
5714t_BC.DE.IX.SP:\r
5715 DC 'BC'\r
5716 DC 'DE'\r
5717 DC 'IX'\r
5718 DC 'SP'\r
5719 DB 0\r
5720t_HL.IX.IY:\r
5721 DC 'HL'\r
5722t_IX.IY:\r
5723 DC 'IX'\r
5724 DC 'IY'\r
5725 DB 0\r
5726t_tstfl_ZC:\r
5727 DC 'NZ'\r
5728 DC 'Z'\r
5729 DC 'NC'\r
5730 DC 'C'\r
5731 DC 'NE'\r
5732 DC 'EQ'\r
5733 DC 'GE'\r
5734 DC 'LT'\r
5735 DB 0\r
5736t_tstfl_ZCPS:\r
5737 DC 'NZ'\r
5738 DC 'Z'\r
5739 DC 'NC'\r
5740 DC 'C'\r
5741 DC 'PO'\r
5742 DC 'PE'\r
5743 DC 'P'\r
5744 DC 'M'\r
5745 DC 'NE'\r
5746 DC 'EQ'\r
5747 DC 'GE'\r
5748 DC 'LT'\r
5749 DC 'NV'\r
5750 DC 'V'\r
5751 DB 0\r
5752t__C_:\r
5753 DC '(C)'\r
5754 DB 0\r
5755\r
5756sub_26e7h:\r
fecee241
L
5757 ld hl,(REG.PC)\r
5758 ld a,h\r
5759 or l\r
5760 jr z,l2715h\r
5761 ld iy,(REG.PC)\r
5762 call sub_1f9eh\r
5763 jp nc,ERROR\r
5764 ld c,b\r
5765 ld b,000h\r
5766 ld hl,(REG.PC)\r
5767 add hl,bc\r
5768 call sub_1117h\r
5769 ld iy,(REG.PC)\r
5770 ld hl,b_0x2717_start\r
5771 call lookup_opc\r
5772 ccf\r
5773 ret c\r
5774 ex de,hl\r
5775 call CALL.HL\r
5776 call c,sub_1117h\r
a16ba2b0 5777l2715h:\r
fecee241
L
5778 scf\r
5779 ret\r
a16ba2b0
L
5780\r
5781b_0x2717_start:\r
fecee241
L
5782 db 0ffh\r
5783 db 0ddh\r
5784 db 000h\r
a16ba2b0
L
5785 dw x278d\r
5786\r
fecee241
L
5787 db 0ffh\r
5788 db 0fdh\r
5789 db 000h\r
a16ba2b0
L
5790 dw x2792\r
5791\r
fecee241
L
5792 db 0ffh\r
5793 db 0edh\r
5794 db 000h\r
a16ba2b0
L
5795 dw x27a2\r
5796\r
5797l2726h:\r
fecee241
L
5798 db 0ffh\r
5799 db 0cdh\r
5800 db 000h\r
a16ba2b0
L
5801 dw x275e\r
5802\r
fecee241
L
5803 db 0ffh\r
5804 db 0c3h\r
5805 db 000h\r
a16ba2b0
L
5806 dw x2769\r
5807\r
fecee241
L
5808 db 0ffh\r
5809 db 0e9h\r
5810 db 000h\r
a16ba2b0
L
5811 dw x2788\r
5812\r
fecee241
L
5813 db 0ffh\r
5814 db 0c9h\r
5815 db 000h\r
a16ba2b0
L
5816 dw x27c9\r
5817\r
fecee241
L
5818 db 0ffh\r
5819 db 0cfh\r
5820 db 000h\r
a16ba2b0
L
5821 dw x280e\r
5822\r
fecee241
L
5823 db 0c7h\r
5824 db 0c7h\r
5825 db 000h\r
a16ba2b0
L
5826 dw x27ea\r
5827\r
fecee241
L
5828 db 0c7h\r
5829 db 0c4h\r
5830 db 000h\r
a16ba2b0
L
5831 dw x275e\r
5832\r
fecee241
L
5833 db 0f7h\r
5834 db 010h\r
5835 db 000h\r
a16ba2b0
L
5836 dw x2775\r
5837\r
fecee241
L
5838 db 0e7h\r
5839 db 020h\r
5840 db 000h\r
a16ba2b0
L
5841 dw x2775\r
5842\r
fecee241
L
5843 db 0c7h\r
5844 db 0c2h\r
5845 db 000h\r
a16ba2b0
L
5846 dw x2769\r
5847\r
fecee241
L
5848 db 0c7h\r
5849 db 0c0h\r
5850 db 000h\r
a16ba2b0
L
5851 dw x27b3\r
5852\r
fecee241 5853 db 000h\r
a16ba2b0
L
5854\r
5855x275e:\r
fecee241
L
5856 ld a,(XBFE8)\r
5857 and a\r
5858 jr nz,x2769\r
5859 ld a,(TCFLG)\r
5860 and a\r
5861 ret nz\r
a16ba2b0
L
5862\r
5863x2769:\r
fecee241
L
5864 comst\r
5865 ld l,(iy+001h)\r
5866 ld h,(iy+002h)\r
a16ba2b0 5867 comend\r
fecee241
L
5868 scf\r
5869 ret\r
a16ba2b0
L
5870\r
5871x2775:\r
fecee241
L
5872 comst\r
5873 ld c,(iy+001h)\r
a16ba2b0 5874 comend\r
fecee241
L
5875 ld a,c\r
5876 rla\r
5877 sbc a,a\r
5878 ld b,a\r
5879 ld hl,(REG.PC)\r
5880 add hl,bc\r
5881 inc hl\r
5882 inc hl\r
5883 scf\r
5884 ret\r
a16ba2b0
L
5885\r
5886x2788:\r
fecee241
L
5887 ld hl,(REG.L)\r
5888 scf\r
5889 ret\r
a16ba2b0
L
5890\r
5891x278d:\r
fecee241
L
5892 ld hl,(reg.ix)\r
5893 jr l2795h\r
a16ba2b0
L
5894\r
5895x2792:\r
fecee241 5896 ld hl,(reg.iy)\r
a16ba2b0 5897l2795h:\r
fecee241
L
5898 comst\r
5899 ld a,(iy+001h)\r
a16ba2b0 5900 comend\r
fecee241
L
5901 cp 0e9h\r
5902 scf\r
5903 ret z\r
5904 and a\r
5905 ret\r
a16ba2b0
L
5906\r
5907x27a2:\r
fecee241
L
5908 comst\r
5909 ld a,(iy+001h)\r
a16ba2b0 5910 comend\r
fecee241
L
5911 cp 04dh\r
5912 jr z,x27c9\r
5913 cp 045h\r
5914 jr z,x27c9\r
5915 and a\r
5916 ret\r
a16ba2b0
L
5917\r
5918x27b3:\r
fecee241
L
5919 comst\r
5920 ld a,(iy+000h)\r
a16ba2b0 5921 comend\r
fecee241
L
5922 ld (XBEDD),a\r
5923 ld hl,(REG.F)\r
5924 push hl\r
5925 pop af\r
5926 call XBEDD\r
5927 scf\r
5928 jr c,x27c9\r
5929 ret\r
a16ba2b0
L
5930\r
5931x27c9:\r
fecee241
L
5932 ld a,(XBFE8)\r
5933 and a\r
5934 jr nz,l27dah\r
5935 ld a,(TCFLG)\r
5936 and a\r
5937 jr z,l27dah\r
5938 call l27dah\r
5939 pop hl\r
5940 ret\r
a16ba2b0 5941l27dah:\r
fecee241
L
5942 ld hl,(REG.SP)\r
5943 comst\r
5944 ld e,(hl)\r
5945 inc hl\r
5946 ld d,(hl)\r
a16ba2b0 5947 comend\r
fecee241
L
5948 ex de,hl\r
5949 call sub_1117h\r
5950 and a\r
5951 ret\r
a16ba2b0
L
5952\r
5953x27ea:\r
cdc4625b 5954 ld a,(ddtzrst)\r
fecee241
L
5955 comst\r
5956 cp (iy+000h)\r
a16ba2b0 5957 comend\r
fecee241
L
5958 ret z\r
5959 comst\r
5960 ld a,(iy+000h)\r
a16ba2b0 5961 comend\r
fecee241
L
5962 and 038h\r
5963 ld l,a\r
5964 ld h,000h\r
5965 ld a,(XBFE8)\r
5966 and a\r
5967 jr nz,l280ch\r
5968 ld a,(TCFLG)\r
5969 and a\r
5970 ret nz\r
a16ba2b0 5971l280ch:\r
fecee241
L
5972 scf\r
5973 ret\r
a16ba2b0
L
5974\r
5975x280e:\r
fecee241
L
5976 and a\r
5977 ret\r
a16ba2b0
L
5978\r
5979CMD.C:\r
fecee241
L
5980 ld hl,CMD.C\r
5981 ld a,001h\r
5982 jr l281bh\r
a16ba2b0
L
5983\r
5984CMD.T:\r
fecee241
L
5985 xor a\r
5986 ld hl,CMD.T\r
a16ba2b0 5987l281bh:\r
fecee241
L
5988 ld (CMD_RPT),hl\r
5989 ld (TCFLG),a\r
5990 ld a,(de)\r
5991 sub 'N'\r
5992 jr nz,l2827h\r
5993 inc de\r
a16ba2b0 5994l2827h:\r
fecee241
L
5995 ld (TCNFLG),a\r
5996 ld a,(de)\r
5997 sub 'J'\r
5998 jr nz,l2830h\r
5999 inc de\r
a16ba2b0 6000l2830h:\r
fecee241
L
6001 ld (TRJFLG),a\r
6002 call sub_289fh\r
6003 jr z,l283eh\r
6004 ld hl,1\r
6005 call get_lastarg_def\r
a16ba2b0 6006l283eh:\r
fecee241
L
6007 ld (TCCSTR),hl\r
6008 sub a\r
6009 ld (XA747),a\r
a16ba2b0 6010l2845h:\r
fecee241
L
6011 call sub_26e7h\r
6012 jr l289ch\r
a16ba2b0 6013l284ah:\r
fecee241
L
6014 call sub_0e68h\r
6015 ld a,(TRJFLG)\r
6016 and a\r
6017 jr nz,l2864h\r
6018 ld iy,(REG.PC)\r
6019 call sub_28c1h\r
6020 jr z,l2864h\r
6021 ld hl,l2726h\r
6022 call lookup_opc\r
6023 jr nc,l2845h\r
a16ba2b0 6024l2864h:\r
fecee241
L
6025 ld a,(XBFEA)\r
6026 and a\r
6027 jr z,l2881h\r
6028 ld de,(TCCSTR)\r
6029 call EXPR\r
6030 ld a,h\r
6031 or l\r
6032 add a,0ffh\r
6033 sbc a,a\r
6034 ld hl,XBFEA\r
6035 xor (hl)\r
6036 bit 1,a\r
6037 jr z,l288ch\r
a16ba2b0 6038l287eh:\r
fecee241 6039 jp l102eh\r
a16ba2b0 6040l2881h:\r
fecee241
L
6041 ld hl,(TCCSTR)\r
6042 dec hl\r
6043 ld (TCCSTR),hl\r
6044 ld a,h\r
6045 or l\r
6046 jr z,l287eh\r
a16ba2b0 6047l288ch:\r
fecee241
L
6048 call sub_26e7h\r
6049 jr nc,l287eh\r
6050 ld a,(TCNFLG)\r
6051 ld b,a\r
6052 ld a,(XA747)\r
6053 or b\r
6054 ld (XA747),a\r
a16ba2b0 6055l289ch:\r
fecee241 6056 jp l1183h\r
a16ba2b0
L
6057\r
6058sub_289fh:\r
fecee241
L
6059 call SKIPBL\r
6060 xor a\r
6061 ld (XBFEA),a\r
6062 ld a,(de)\r
6063 cp 'U'\r
6064 jr z,l28aeh\r
6065 cp 'W'\r
6066 ret nz\r
a16ba2b0
L
6067\r
6068l28aeh:\r
fecee241
L
6069 inc de\r
6070 push af\r
6071 push de\r
6072 call EXPR\r
6073 jp c,ERROR\r
6074 call assert_eol\r
6075 pop hl\r
6076 pop af\r
6077 ld (XBFEA),a\r
6078 sub a\r
6079 ret\r
a16ba2b0
L
6080\r
6081sub_28c1h:\r
fecee241
L
6082 comst\r
6083 ld a,(iy+000h)\r
a16ba2b0
L
6084 ld b,(iy+0001)\r
6085 comend\r
fecee241
L
6086 cp 0edh\r
6087 jr z,l28dbh\r
6088 and 0dfh\r
6089 cp 0ddh\r
6090 ret nz\r
a16ba2b0 6091 ld a,b\r
fecee241
L
6092 cp 0e9h\r
6093 ret\r
a16ba2b0
L
6094l28dbh:\r
6095 ld a,b\r
fecee241
L
6096 and 0f7h\r
6097 cp 045h\r
6098 ret\r
a16ba2b0
L
6099\r
6100?excom:\r
fecee241
L
6101 ex (sp),hl\r
6102 push af\r
6103 push bc\r
6104 push de\r
6105 ld c,(hl)\r
6106 ld b,000h\r
6107 inc hl\r
a16ba2b0
L
6108 ld a,?lcmax\r
6109 sub c\r
fecee241 6110 ld de,?exeit\r
a16ba2b0
L
6111 ldir\r
6112 ex de,hl\r
6113 ld (hl),018h\r
6114 inc hl\r
6115 ld (hl),a\r
6116 ex de,hl\r
fecee241
L
6117 pop de\r
6118 pop bc\r
6119 pop af\r
6120 ex (sp),hl\r
29605004 6121 if CPU_Z180\r
fecee241
L
6122 push hl\r
6123 ld hl,(ubbr)\r
a16ba2b0 6124\r
29605004 6125 else\r
fecee241
L
6126 push af\r
6127 ld a,(ubnk)\r
29605004 6128 endif\r
a16ba2b0 6129 if ROMSYS\r
fecee241
L
6130 push af\r
6131 ld a,(uromen)\r
a16ba2b0 6132 endif\r
fecee241
L
6133 jp ?comcod\r
6134\r
a16ba2b0
L
6135;------------------------------------------\r
6136; ddtram\r
6137;------------------------------------------\r
6138\r
6139vartab:\r
8df5b655
L
6140; dseg\r
6141 cseg\r
fecee241 6142ddtram:\r
a16ba2b0 6143;todo:\r
4caee1ec 6144; The following 2 params are changeable by user.\r
a16ba2b0
L
6145; Should these moved to top ram?\r
6146;\r
cdc4625b
L
6147ddtzrst:\r
6148 rst DDTZRSTVEC ;rst used by ddtz\r
29605004 6149ddtei: ei ;ints enabled/disabled while ddtz is running\r
a16ba2b0 6150 ret ;\r
a16ba2b0 6151offs.pc:\r
fecee241 6152 dw TPA\r
a16ba2b0 6153offs.@:\r
fecee241 6154 dw 0\r
a16ba2b0 6155CMD_ERR:\r
fecee241 6156 dw 0\r
a16ba2b0 6157CMD_RPT:\r
fecee241 6158 dw DDTZML\r
a16ba2b0 6159ci.buf:\r
fecee241 6160 db 80\r
a16ba2b0
L
6161 rept 83\r
6162 db 0\r
6163 endm\r
a16ba2b0 6164CON.COL:\r
fecee241 6165 db 0\r
a16ba2b0 6166XA747:\r
fecee241 6167 db 0\r
a16ba2b0 6168bp_tab:\r
fecee241 6169 rept BP_CNT\r
a16ba2b0
L
6170 db 0,0\r
6171 dw 0,0,0\r
6172 endm\r
6173BP_SIZE equ 8\r
a16ba2b0 6174sexp1:\r
fecee241 6175 dw sexpbuf\r
a16ba2b0 6176sexp2:\r
fecee241 6177 dw sexpbuf\r
a16ba2b0 6178sexpbuf:\r
fecee241 6179 rept 128\r
a16ba2b0
L
6180 db 0\r
6181 endm\r
a16ba2b0
L
6182sexpbufe:\r
6183\r
6184msg.Y:\r
fecee241 6185 dc 'Y0'\r
a16ba2b0 6186reg.Y:\r
fecee241 6187 rept 10\r
a16ba2b0
L
6188 dw 0\r
6189 endm\r
a16ba2b0 6190lst.S:\r
fecee241 6191 dw 0\r
a16ba2b0 6192lst.IP:\r
fecee241 6193 dw 0\r
a16ba2b0 6194lst.OP:\r
fecee241 6195 dw 0\r
a16ba2b0 6196lst.OD:\r
a16ba2b0 6197 db 0\r
a16ba2b0 6198lst.Qj:\r
a16ba2b0 6199 db 0\r
a16ba2b0 6200lst.D:\r
fecee241 6201 dw 0\r
a16ba2b0 6202HILOD:\r
fecee241 6203 dw 0\r
a16ba2b0 6204MAXLOD:\r
fecee241 6205 dw 0\r
a16ba2b0 6206XB068:\r
fecee241 6207 dw 0\r
a16ba2b0 6208lst.A:\r
fecee241 6209 dw 0\r
a16ba2b0 6210XB06C:\r
fecee241 6211 dw 0\r
a16ba2b0 6212pfx.IXY:\r
fecee241 6213 db 000h\r
a16ba2b0 6214is.pfx.IXY:\r
fecee241 6215 db 000h\r
a16ba2b0 6216lst.L:\r
fecee241 6217 dw 0\r
a16ba2b0 6218XBE01:\r
fecee241 6219 dw 0\r
a16ba2b0 6220XBE03:\r
fecee241 6221 db 000h\r
a16ba2b0 6222XBEDD:\r
a16ba2b0 6223 ret ;ret cc\r
fecee241
L
6224 and a\r
6225 pop hl\r
6226 inc hl\r
6227 jp (hl)\r
a16ba2b0 6228XBFE8:\r
fecee241 6229 db 0\r
a16ba2b0 6230TCFLG:\r
fecee241 6231 db 0\r
a16ba2b0 6232XBFEA:\r
fecee241 6233 db 0\r
a16ba2b0 6234TCCSTR:\r
fecee241 6235 dw 0\r
a16ba2b0 6236TCNFLG:\r
fecee241 6237 db 0\r
a16ba2b0 6238TRJFLG:\r
fecee241 6239 db 0\r
a16ba2b0 6240wstrtflg:\r
a16ba2b0 6241 db 1\r
a16ba2b0
L
6242\r
6243 cseg\r
6244vartabe:\r
6245\r
6246;------------------------------------------\r
6247\r
ad9bc17c 6248 .phase sysram_start+bs$stack$size\r
a16ba2b0 6249$stack:\r
ad9bc17c 6250$stcka equ $ - bs$stack$size\r
a16ba2b0
L
6251\r
6252curphse defl $\r
6253 .dephase\r
6254sysramc:\r
6255 .phase curphse\r
6256topcodbeg:\r
6257\r
6258reg.l2: db 0 ; 0fe50h\r
6259reg.h2: db 0 ; 0fe51h\r
6260reg.e2: db 0 ; 0fe52h\r
6261reg.d2: db 0 ; 0fe53h\r
6262reg.c2: db 0 ; 0fe54h\r
6263reg.b2: db 0 ; 0fe55h\r
6264reg.f2: db 0 ; 0fe56h\r
6265reg.a2: db 0 ; 0fe57h\r
6266 db 0\r
6267reg.i: db high ivtab\r
6268reg.iy: dw 0 ; 0fe5ah\r
6269reg.ix: dw 0 ; 0fe5ch\r
6270reg.e: db 0 ; 0fe5eh\r
6271reg.d: db 0 ; 0fe5fh\r
6272reg.c: db 0 ; 0fe60h\r
6273reg.b: db 0 ; 0fe61h\r
6274 if ROMSYS\r
6275udcntl: db CWAITIO ; 0fe62h (mem-, io- wait)\r
6276uromen: db ROM_DIS ; 0fe63h\r
6277 endif\r
29605004 6278 if CPU_Z180\r
a16ba2b0
L
6279ubbr: db 0 ; 0fe64h\r
6280ucbar: db USR$CBAR ; 0fe65h\r
29605004
L
6281 else\r
6282 db 0 ; 0fe64h\r
6283ubnk: db 0 ; 0fe65h\r
6284 endif\r
a16ba2b0
L
6285reg.f: db 0 ; 0fe66h\r
6286reg.a: db 0 ; 0fe67h\r
6287reg.l: db 0 ; 0fe68h\r
6288reg.h: db 0 ; 0fe69h\r
6289reg.sp: dw TOPRAM ; 0fe6ah\r
6290\r
6291$go:\r
6292 if ROMSYS\r
6293 out (000h),a ;064c fe6c\r
fecee241 6294 out0 (dcntl),l\r
29605004 6295 pop hl\r
a16ba2b0 6296 endif\r
29605004 6297 if CPU_Z180\r
fecee241
L
6298 out0 (cbar),h\r
6299 out0 (bbr),l\r
29605004
L
6300 else\r
6301 ld a,h\r
6302 call selbnk\r
6303 endif\r
fecee241
L
6304 pop af\r
6305 pop hl\r
6306 ld sp,(reg.sp)\r
a16ba2b0 6307reg.iff:\r
fecee241 6308 ei\r
a16ba2b0
L
6309 db 0C3h ;jp TPA ;065f feff ($+1): reg.pc\r
6310reg.pc:\r
6311 dw TPA\r
fecee241 6312\r
a16ba2b0
L
6313bpent:\r
6314 ld (reg.l),hl ;0662 fe82: bpent:\r
fecee241
L
6315 pop hl\r
6316 dec hl\r
6317 ld (reg.pc),hl\r
6318 ld (reg.sp),sp\r
6319 ld sp,reg.l\r
6320 push af\r
29605004 6321 if CPU_Z180\r
fecee241
L
6322;;; TODO: cbar on trap?\r
6323 in0 h,(cbar)\r
6324 in0 l,(bbr)\r
6325 ld a,SYS$CBAR\r
6326 out0 (cbar),a\r
29605004
L
6327 else\r
6328 ld a,(@cbnk)\r
6329 ld h,a\r
6330 xor a\r
6331 ld l,a\r
6332 call selbnk\r
6333 endif\r
fecee241 6334 push hl\r
a16ba2b0
L
6335\r
6336 if ROMSYS\r
fecee241
L
6337 in0 l,(dcntl)\r
6338 ld a,CWAITROM+CWAITIO\r
6339 out0 (dcntl),a\r
6340 ld a,($crom)\r
6341 cp c$rom\r
6342 ld a,ROM_EN\r
6343 out (000h),a\r
a16ba2b0
L
6344 endif\r
6345\r
fecee241 6346 jp bpddtz\r
a16ba2b0
L
6347\r
6348?comcod:\r
6349 if ROMSYS\r
6350 out (000h),a ;0692 feb2\r
fecee241 6351 pop af\r
a16ba2b0
L
6352 endif\r
6353\r
29605004 6354 if CPU_Z180\r
fecee241
L
6355 out0 (cbar),h\r
6356 out0 (bbr),l\r
6357 pop hl\r
29605004
L
6358 else\r
6359 call selbnk\r
6360 pop af\r
6361 endif\r
a16ba2b0
L
6362?exeit:\r
6363 ds ?lcmax+2\r
fecee241 6364 push af\r
29605004 6365 if CPU_Z180\r
fecee241
L
6366 ld a,SYS$CBAR\r
6367 out0 (cbar),a\r
a16ba2b0 6368\r
29605004
L
6369;;; TODO: bbr?\r
6370 else\r
6371 xor a\r
6372 call selbnk\r
6373 endif\r
a16ba2b0 6374 if ROMSYS\r
fecee241
L
6375 ld a,ROM_EN\r
6376 out (000h),a\r
a16ba2b0 6377 endif\r
fecee241
L
6378\r
6379 pop af\r
6380 ret\r
a16ba2b0
L
6381\r
6382topcodend:\r
6383curph defl $\r
6384 .dephase\r
6385sysrame:\r
6386\r
6387 end\r