]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/ddtz.180
Server: get_time command/response
[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
L
960; divide x/y\r
961; x: hl\r
962; y: de\r
963; return:\r
964; x/y: hl\r
965; rem: de\r
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
a16ba2b0 974l0b89h:\r
8590a76b
L
975 ex de,hl ;x\r
976 add hl,hl ;x <<= 1\r
977 ex de,hl ;r\r
978 adc hl,hl ;r <<= 1\r
979\r
980 or a\r
981 sbc hl,bc\r
982 inc de\r
983 jr nc,div_no_restore\r
984 add hl,bc\r
985 dec de\r
986div_no_restore:\r
987 dec a\r
988 jr nz,l0b89h\r
989 ex de,hl\r
990 pop bc\r
fecee241 991 ret\r
a16ba2b0
L
992\r
993do_op_and:\r
8590a76b
L
994 ld a,h\r
995 and d\r
996 ld h,a\r
997 ld a,l\r
998 and e\r
999 ld l,a\r
1000 jr l0b58h\r
a16ba2b0
L
1001\r
1002do_op_or:\r
8590a76b
L
1003 ld a,h\r
1004 or d\r
1005 ld h,a\r
1006 ld a,l\r
1007 or e\r
1008 ld l,a\r
1009 jr l0b58h\r
a16ba2b0
L
1010\r
1011do_op_xor:\r
8590a76b
L
1012 ld a,h\r
1013 xor d\r
1014 ld h,a\r
1015 ld a,l\r
1016 xor e\r
1017 ld l,a\r
1018 jr l0b58h\r
a16ba2b0
L
1019\r
1020do_binary_op:\r
8590a76b
L
1021 push hl\r
1022 ld hl,tab_op_a\r
1023 call lookupch\r
1024 ld a,b\r
1025 ld hl,tab_func_opa\r
1026 add a,a\r
1027 call ADD_HL_A\r
1028 ld c,(hl)\r
1029 inc hl\r
1030 ld b,(hl)\r
1031 pop hl\r
fecee241 1032 ret\r
a16ba2b0
L
1033\r
1034tab_op_a:\r
1035 DB '+-*/%&!#',0\r
1036tab_func_opa:\r
8590a76b
L
1037 defw do_op_add\r
1038 defw do_op_sub\r
1039 defw do_op_mlt\r
1040 defw do_op_div\r
1041 defw do_op_mod\r
1042 defw do_op_and\r
1043 defw do_op_or\r
1044 defw do_op_xor\r
1045 defw 0\r
a16ba2b0
L
1046\r
1047fact_factor:\r
8590a76b
L
1048 call do_factor\r
1049 ret nc\r
1050 jp ERROR\r
a16ba2b0
L
1051\r
1052do_factor:\r
8590a76b
L
1053 call chk.sp\r
1054 call get.number\r
1055 ret nc\r
1056 inc de\r
1057 ld hl,TOPRAM\r
1058 cp 'T'\r
1059 ret z\r
1060 ld hl,(HILOD)\r
1061 cp 'H'\r
1062 ret z\r
1063 ld hl,(MAXLOD)\r
1064 cp 'M'\r
1065 ret z\r
1066 ld hl,TPA\r
1067 cp 'L'\r
1068 ret z\r
1069 ld hl,(offs.@)\r
1070 cp '@'\r
1071 ret z\r
1072 ld hl,(OFFS.pc)\r
1073 cp '$'\r
1074 ret z\r
1075 cp '-'\r
1076 jr z,fact_factneg\r
1077 cp '~'\r
1078 jr z,fact_factinv\r
1079 cp '+'\r
1080 jr z,fact_factor\r
1081 cp '^'\r
1082 jr z,fact_reg.CPU\r
1083 cp 'Y'\r
1084 jr z,fact_reg.Y\r
1085 cp '('\r
1086 jr z,fact_mem\r
1087 cp '['\r
1088 jp z,EXPR_BRCKT ;0c35 [ expression ]\r
1089 cp ''''\r
1090 jr z,fact_factstring\r
1091 dec de\r
fecee241
L
1092 scf\r
1093 ret\r
a16ba2b0
L
1094\r
1095fact_reg.Y:\r
8590a76b
L
1096 call get.decdigit\r
1097 jp c,ERROR\r
1098 inc de\r
1099 add a,a\r
1100 ld hl,reg.Y\r
1101 call ADD_HL_A\r
1102 ld a,(hl)\r
1103 inc hl\r
1104 ld h,(hl)\r
1105 ld l,a\r
1106 and a\r
fecee241 1107 ret\r
a16ba2b0 1108fact_factstring:\r
8590a76b 1109 ld hl,0\r
a16ba2b0 1110l0c56h:\r
8590a76b
L
1111 ld a,(de)\r
1112 cp ''''\r
1113 jr z,l0c62h\r
1114 and a\r
1115 ret z\r
a16ba2b0 1116l0c5dh:\r
8590a76b
L
1117 ld h,l\r
1118 ld l,a\r
1119 inc de\r
1120 jr l0c56h\r
a16ba2b0
L
1121\r
1122l0c62h:\r
8590a76b
L
1123 inc de\r
1124 ld a,(de)\r
1125 cp ''''\r
1126 jr z,l0c5dh\r
1127 sub '.'\r
1128 or a\r
1129 ret nz\r
1130 inc de\r
1131 set 7,l\r
fecee241 1132 ret\r
a16ba2b0
L
1133\r
1134fact_reg.CPU:\r
8590a76b
L
1135 call sub_1315h\r
1136 jr nc,l0cbbh\r
1137 ld a,(hl)\r
1138 inc hl\r
1139 ld h,(hl)\r
1140 ld l,a\r
1141 and a\r
1142 bit 0,c\r
1143 ret nz\r
1144 ld h,000h\r
fecee241 1145 ret\r
a16ba2b0
L
1146\r
1147fact_factneg:\r
8590a76b
L
1148 call fact_factor\r
1149 dec hl\r
a16ba2b0 1150cpl.hl:\r
8590a76b 1151 ld a,h\r
fecee241 1152 cpl\r
8590a76b
L
1153 ld h,a\r
1154 ld a,l\r
fecee241 1155 cpl\r
8590a76b 1156 ld l,a\r
fecee241 1157 ret\r
a16ba2b0 1158fact_factinv:\r
8590a76b
L
1159 call fact_factor\r
1160 jr cpl.hl\r
a16ba2b0
L
1161\r
1162fact_mem:\r
8590a76b
L
1163 call EXPR1\r
1164 jr c,l0cbbh\r
1165 ld a,(de)\r
1166 cp ')'\r
1167 jr nz,l0cbbh\r
1168 inc de\r
a16ba2b0 1169 comst\r
8590a76b
L
1170 ld a,(hl)\r
1171 inc hl ;\r
1172 ld h,(hl) ;\r
a16ba2b0 1173 comend\r
8590a76b
L
1174 ld l,a\r
1175 ld a,(de)\r
1176 inc de\r
1177 cp '.'\r
1178 ret z\r
1179 dec de\r
1180 xor a\r
1181 ld h,a\r
fecee241 1182 ret\r
a16ba2b0
L
1183\r
1184EXPR_BRCKT:\r
8590a76b
L
1185 call EXPR1\r
1186 jr c,l0cbbh\r
1187 ld a,(de)\r
1188 cp ']'\r
1189 inc de\r
1190 ret z\r
a16ba2b0 1191l0cbbh:\r
8590a76b 1192 jp ERROR\r
a16ba2b0
L
1193\r
1194get.number:\r
8590a76b
L
1195 call get.hexdigit\r
1196 ret c\r
1197 push de\r
a16ba2b0 1198l0cc3h:\r
8590a76b
L
1199 inc de\r
1200 call get.hexdigit\r
1201 jr nc,l0cc3h\r
1202 pop de\r
1203 cp '.'\r
1204 jr z,l0d04h\r
1205 cp '"'\r
1206 jr z,l0ce9h\r
1207 ld hl,0\r
a16ba2b0 1208l0cd5h:\r
8590a76b
L
1209 call get.hexdigit\r
1210 jr c,l0ce4h\r
1211 add hl,hl\r
1212 add hl,hl\r
1213 add hl,hl\r
1214 add hl,hl\r
1215 call ADD_HL_A\r
1216 inc de\r
1217 jr l0cd5h\r
a16ba2b0 1218l0ce4h:\r
8590a76b
L
1219 xor 'H'\r
1220 ret nz\r
1221 inc de\r
fecee241 1222 ret\r
a16ba2b0
L
1223\r
1224l0ce9h:\r
8590a76b 1225 ld hl,0\r
a16ba2b0 1226l0cech:\r
8590a76b 1227 call get.decdigit\r
a16ba2b0 1228l0cefh:\r
8590a76b
L
1229 inc de\r
1230 jr c,l0cf8h\r
1231 add hl,hl\r
1232 call ADD_HL_A\r
1233 jr l0cech\r
a16ba2b0 1234l0cf8h:\r
8590a76b
L
1235 cp '"'\r
1236 jp nz,ERROR\r
1237 call get.decdigit\r
1238 jr nc,l0cefh\r
1239 or a\r
fecee241 1240 ret\r
a16ba2b0 1241l0d04h:\r
8590a76b 1242 ld hl,0\r
a16ba2b0 1243l0d07h:\r
8590a76b
L
1244 call get.decdigit\r
1245 inc de\r
1246 jr c,l0d1ah\r
1247 push bc\r
1248 add hl,hl ;0d0e hl *= 10\r
1249 ld b,h\r
1250 ld c,l\r
1251 add hl,hl\r
1252 add hl,hl\r
1253 add hl,bc\r
1254 pop bc\r
1255 call ADD_HL_A\r
1256 jr l0d07h\r
a16ba2b0 1257l0d1ah:\r
8590a76b
L
1258 cp '.'\r
1259 ret z\r
1260 jp ERROR\r
a16ba2b0
L
1261\r
1262sub_0d20h:\r
8590a76b
L
1263 ld a,(de)\r
1264 cp 05bh\r
1265 jr l0d28h\r
a16ba2b0
L
1266\r
1267get.hexdigit:\r
8590a76b 1268 ld a,(de)\r
a16ba2b0 1269sub_0d26h:\r
8590a76b 1270 cp 'F'+1\r
a16ba2b0 1271l0d28h:\r
fecee241 1272 ccf\r
8590a76b
L
1273 ret c\r
1274 cp 'A'\r
1275 jr c,l0d32h\r
1276 sub 'A'-10\r
fecee241 1277 ret\r
a16ba2b0
L
1278\r
1279get.decdigit:\r
8590a76b 1280 ld a,(de)\r
a16ba2b0 1281l0d32h:\r
8590a76b
L
1282 cp '9'+1\r
1283 jr l0d39h\r
a16ba2b0 1284get.bindigit:\r
8590a76b
L
1285 ld a,(de)\r
1286 cp '1'+1\r
a16ba2b0 1287l0d39h:\r
fecee241 1288 ccf\r
8590a76b
L
1289 ret c\r
1290 cp '0'\r
1291 ret c\r
1292 sub '0'\r
fecee241 1293 ret\r
a16ba2b0
L
1294\r
1295l0d41h:\r
8590a76b 1296 call assert_eol\r
a16ba2b0
L
1297\r
1298prnt_cpustat:\r
8590a76b
L
1299 call prnt_f\r
1300 call outbl2\r
1301 ld hl,b_0x0DFD_start\r
1302 ld de,b_0x0E1D_start\r
1303 ld b,006h\r
a16ba2b0 1304l0d52h:\r
8590a76b
L
1305 call prnt_regs\r
1306 djnz l0d52h\r
1307 push hl\r
1308 push de\r
1309 ld iy,(REG.PC)\r
1310 call sub_1f77h\r
fecee241 1311 exx\r
8590a76b
L
1312 ex af,af'\r
1313 call CRLF\r
1314 call prnt_f2\r
1315 call outbl2\r
1316 pop de\r
1317 pop hl\r
1318 ld b,007h\r
a16ba2b0 1319l0d6fh:\r
8590a76b
L
1320 call prnt_regs\r
1321 djnz l0d6fh\r
fecee241 1322 exx\r
8590a76b
L
1323 ex af,af'\r
1324 and a\r
1325 jr z,l0d7fh\r
1326 call outbl6\r
1327 call sub_1f5bh\r
a16ba2b0 1328l0d7fh:\r
8590a76b 1329 jp crlf\r
a16ba2b0
L
1330\r
1331prnt_f:\r
8590a76b
L
1332 ld a,(reg.f)\r
1333 call prnt_flags\r
1334 ld a,(reg.iff)\r
1335 cp 0f3h\r
1336 jp z,outbl\r
1337 ld a,'E'\r
1338 jp outchar\r
a16ba2b0
L
1339\r
1340prnt_f2:\r
8590a76b
L
1341 ld a,(reg.f2)\r
1342 call prnt_flags\r
1343 jp outbl\r
a16ba2b0
L
1344\r
1345prnt_flags:\r
8590a76b
L
1346 ld b,a\r
1347 ld a,'S'\r
1348 call sub_0dbeh\r
1349 ld a,'Z'\r
1350 call sub_0dbeh\r
1351 rl b\r
1352 ld a,'H'\r
1353 call sub_0dbeh\r
1354 rl b\r
1355 ld a,'V'\r
1356 call sub_0dbeh\r
1357 ld a,'N'\r
1358 call sub_0dbeh\r
1359 ld a,'C'\r
a16ba2b0 1360sub_0dbeh:\r
8590a76b
L
1361 rl b\r
1362 jp c,OUTCHAR\r
1363 jp OUTBL\r
a16ba2b0
L
1364\r
1365prnt_regs:\r
8590a76b
L
1366 push bc\r
1367 push de\r
1368 call PSTR\r
1369 ld a,'='\r
1370 call OUTCHAR\r
1371 ex (sp),hl\r
1372 ld e,(hl)\r
1373 inc hl\r
1374 ld d,(hl)\r
1375 inc hl\r
1376 ld a,(hl)\r
1377 inc hl\r
1378 push hl\r
1379 and a\r
1380 jr z,l0df2h\r
1381 push af\r
1382 ld a,(de)\r
1383 ld l,a\r
1384 inc de\r
1385 ld a,(de)\r
1386 ld h,a\r
1387 pop af\r
1388 dec a\r
1389 jr z,l0dedh\r
1390 call out.hl.@\r
1391 call z,outbl6\r
1392 jr l0df6h\r
a16ba2b0 1393l0dedh:\r
8590a76b
L
1394 call out.hl\r
1395 jr l0df6h\r
a16ba2b0 1396l0df2h:\r
8590a76b
L
1397 ld a,(de)\r
1398 call out.hex\r
a16ba2b0 1399l0df6h:\r
8590a76b
L
1400 call OUTBL\r
1401 pop de\r
1402 pop hl\r
1403 pop bc\r
fecee241 1404 ret\r
a16ba2b0
L
1405\r
1406b_0x0DFD_start:\r
1407 DC 'A '\r
1408 DC 'BC '\r
1409 DC 'DE '\r
1410 DC 'HL '\r
1411 DC 'SP'\r
1412 DC 'PC'\r
1413 DC 'A'''\r
1414 DC 'BC'''\r
1415 DC 'DE'''\r
1416 DC 'HL'''\r
1417 DC 'IX'\r
1418 DC 'IY'\r
1419 DC 'I'\r
1420 DB 0\r
1421\r
1422b_0x0E1D_start:\r
8590a76b
L
1423 defw reg.a\r
1424 defb 000h\r
1425 defw reg.c\r
1426 defb 001h\r
1427 defw reg.e\r
1428 defb 001h\r
1429 defw reg.l\r
1430 defb 001h\r
1431 defw reg.sp\r
1432 defb 001h\r
1433 defw reg.pc\r
1434 defb 002h\r
1435 defw reg.a2\r
1436 defb 000h\r
1437 defw reg.c2\r
1438 defb 001h\r
1439 defw reg.e2\r
1440 defb 001h\r
1441 defw reg.l2\r
1442 defb 001h\r
1443 defw reg.ix\r
1444 defb 001h\r
1445 defw reg.iy\r
1446 defb 001h\r
1447 defw reg.i\r
fecee241 1448 dw 0\r
a16ba2b0
L
1449\r
1450CMD.G:\r
8590a76b
L
1451 sub a\r
1452 ld (TCFLG),a\r
1453 ld (XA747),a\r
1454 call EXPR\r
1455 jr c,l0e54h\r
1456 ld (REG.PC),hl\r
a16ba2b0 1457l0e54h:\r
8590a76b
L
1458 call SKIPBL\r
1459 jp z,l1183h\r
1460 cp ';'\r
1461 jp nz,ERROR\r
1462 inc de\r
1463 ld a,002h\r
1464 call sub_0f24h\r
1465 jp l1183h\r
a16ba2b0
L
1466\r
1467sub_0e68h:\r
8590a76b
L
1468 ld b,BP_CNT\r
1469 ld ix,bp_tab\r
a16ba2b0 1470l0e6eh:\r
8590a76b
L
1471 ld a,(ix+000h)\r
1472 and 0f1h\r
1473 ld (ix+000h),a\r
1474 call sub_11c5h\r
1475 ld de,BP_SIZE\r
1476 add ix,de\r
1477 djnz l0e6eh\r
fecee241 1478 ret\r
a16ba2b0
L
1479\r
1480CMD.B:\r
8590a76b
L
1481 call SKIPBL\r
1482 jr z,l0ecbh\r
1483 inc de\r
1484 cp 'X'\r
1485 jr z,l0e91h\r
1486 dec de\r
1487 ld a,001h\r
1488 jp sub_0f24h\r
a16ba2b0 1489l0e91h:\r
8590a76b
L
1490 call SKIPBL\r
1491 jr z,l0ea6h\r
a16ba2b0 1492l0e96h:\r
8590a76b
L
1493 call EXPR\r
1494 jp c,assert_eol\r
1495 push de\r
1496 call sub_0ea7h\r
1497 pop de\r
1498 call skip_to_nextarg\r
1499 jr l0e96h\r
a16ba2b0 1500l0ea6h:\r
fecee241 1501 scf\r
a16ba2b0 1502sub_0ea7h:\r
8590a76b
L
1503 ld b,BP_CNT\r
1504 ld ix,bp_tab\r
a16ba2b0 1505l0eadh:\r
8590a76b
L
1506 push af\r
1507 jr c,l0ebbh\r
1508 ld e,(ix+002h)\r
1509 ld d,(ix+003h)\r
1510 call CP.HL.DE\r
1511 jr nz,l0ec2h\r
a16ba2b0 1512l0ebbh:\r
8590a76b
L
1513 ld (ix+000h),000h\r
1514 call sub_11c5h\r
a16ba2b0 1515l0ec2h:\r
8590a76b
L
1516 ld de,BP_SIZE\r
1517 add ix,de\r
1518 pop af\r
1519 djnz l0eadh\r
fecee241 1520 ret\r
a16ba2b0 1521l0ecbh:\r
8590a76b
L
1522 ld b,BP_CNT\r
1523 ld ix,bp_tab\r
a16ba2b0 1524l0ed1h:\r
8590a76b
L
1525 bit 0,(ix+000h)\r
1526 jr z,l0f1ch\r
1527 ld a,'R'\r
1528 bit 4,(ix+000h)\r
1529 jr nz,l0ee1h\r
1530 ld a,' '\r
a16ba2b0 1531l0ee1h:\r
8590a76b
L
1532 call OUTCHAR\r
1533 call OUTBL\r
1534 ld l,(ix+002h)\r
1535 ld h,(ix+003h)\r
1536 call out.hl.@\r
1537 call outbl2\r
1538 ld a,':'\r
1539 call OUTCHAR\r
1540 ld l,(ix+004h)\r
1541 ld h,(ix+005h)\r
1542 call out.hl\r
1543 ld l,(ix+006h)\r
1544 ld h,(ix+007h)\r
1545 ld a,h\r
1546 or l\r
1547 jr z,l0f19h\r
1548 call outbl4\r
1549 ld a,'I'\r
1550 call OUTCHAR\r
1551 call outbl2\r
1552 call PSTR\r
a16ba2b0 1553l0f19h:\r
8590a76b 1554 call CRLF\r
a16ba2b0 1555l0f1ch:\r
8590a76b
L
1556 ld de,BP_SIZE\r
1557 add ix,de\r
1558 djnz l0ed1h\r
fecee241 1559 ret\r
a16ba2b0
L
1560\r
1561sub_0f24h:\r
8590a76b
L
1562 ld b,a\r
1563 call SKIPBL\r
1564 ret z\r
1565 cp 'R'\r
1566 jr nz,l0f30h\r
1567 inc de\r
1568 set 4,b\r
a16ba2b0 1569l0f30h:\r
8590a76b
L
1570 push bc\r
1571 call EXPR\r
1572 jp c,ERROR\r
1573 pop bc\r
1574 bit 0,b\r
1575 push bc\r
1576 push de\r
1577 push hl\r
1578 call nz,sub_0ea7h\r
1579 pop hl\r
1580 call sub_0f68h\r
1581 pop de\r
1582 ld (ix+002h),l\r
1583 ld (ix+003h),h\r
1584 call sub_0f80h\r
1585 ld (ix+004h),l\r
1586 ld (ix+005h),h\r
1587 call sub_0f91h\r
1588 ld (ix+006h),l\r
1589 ld (ix+007h),h\r
1590 call skip_to_nextarg\r
1591 pop af\r
1592 ld (ix+000h),a\r
1593 and 00fh\r
1594 jr sub_0f24h\r
a16ba2b0 1595sub_0f68h:\r
8590a76b
L
1596 ld b,BP_CNT\r
1597 ld ix,bp_tab\r
a16ba2b0 1598l0f6eh:\r
8590a76b
L
1599 ld a,(ix+000h)\r
1600 and 00fh\r
1601 ret z\r
1602 push bc\r
1603 ld bc,BP_SIZE\r
1604 add ix,bc\r
1605 pop bc\r
1606 djnz l0f6eh\r
1607 jp ERROR\r
a16ba2b0
L
1608\r
1609sub_0f80h:\r
8590a76b
L
1610 call SKIPBL\r
1611 ld hl,1\r
1612 cp 03ah\r
1613 ret nz\r
1614 inc de\r
1615 call EXPR\r
1616 jp c,ERROR\r
fecee241 1617 ret\r
a16ba2b0 1618sub_0f91h:\r
8590a76b
L
1619 call SKIPBL\r
1620 cp 049h\r
1621 ld hl,0\r
1622 ret nz\r
1623 inc de\r
1624 call SKIPBL\r
1625 push de\r
1626 call EXPR\r
1627 jp c,ERROR\r
1628 ex de,hl\r
1629 pop de\r
1630 push de\r
1631 sbc hl,de\r
1632 ld b,h\r
1633 ld c,l\r
1634 ld hl,(sexp1)\r
1635 push hl\r
1636 add hl,bc\r
1637 ld de,sexpbufe\r
1638 call CP.HL.DE\r
1639 jp nc,ERROR\r
1640 pop hl\r
1641 ld (sexp2),hl\r
1642 pop de\r
1643 ex de,hl\r
fecee241 1644 ldir\r
8590a76b
L
1645 xor a\r
1646 ld (de),a\r
1647 inc de\r
1648 ex de,hl\r
1649 ld (sexp1),hl\r
1650 ld hl,(sexp2)\r
fecee241 1651 ret\r
a16ba2b0
L
1652\r
1653bpddtz:\r
1654 if ROMSYS\r
29605004
L
1655 ld h,ROMEN\r
1656 jr z,l0fd2h\r
1657 inc h\r
a16ba2b0 1658l0fd2h:\r
29605004
L
1659 push hl ;save rom enable stat\r
1660 endif\r
1661 push bc\r
1662 push de\r
1663 push ix\r
1664 push iy\r
1665 ld a,i\r
1666 ld h,a\r
1667 ld l,000h\r
1668 push hl ;save I register\r
1669\r
1670 if CPU_Z180\r
1671 ld a,0f3h ;DI\r
1672 jp po,l0fe6h\r
1673 ld a,0fbh ;EI\r
1674 else ;NMOS Z80 design flaw\r
1675 call getiff ;return Carry set, if INTs are disabled.\r
1676 ld a,0f3h ;DI\r
1677 jr c,l0fe6h\r
1678 ld a,0fbh ;EI\r
a16ba2b0 1679 endif\r
a16ba2b0 1680l0fe6h:\r
29605004
L
1681 ld (reg.iff),a\r
1682 ld hl,ivtab\r
1683 ld a,h\r
1684 ld i,a\r
1685 call ddtei\r
1686 ex af,af'\r
1687 push af\r
1688 exx\r
1689 push bc\r
1690 push de\r
1691 push hl\r
1692 call bp.unset\r
1693 if CPU_Z180\r
1694 in0 a,(itc)\r
1695 jp p,l1017h\r
1696 res TRAP,a\r
1697 out0 (itc),a\r
1698 bit UFO,a\r
1699 jr z,l1011h\r
1700 ld hl,(REG.PC)\r
1701 dec hl\r
1702 ld (REG.PC),hl\r
a16ba2b0 1703l1011h:\r
29605004
L
1704 ld hl,MSG_trap\r
1705 call PSTR\r
a16ba2b0 1706l1017h:\r
29605004
L
1707 endif\r
1708\r
1709 ld a,(XBFE8)\r
1710 dec a\r
1711 jr z,l1051h\r
1712 call inchar\r
1713 jr c,l102eh\r
1714 call sub_1059h\r
1715 and a\r
1716 jp z,l1183h\r
1717 and 083h\r
1718 jp z,l284ah\r
a16ba2b0 1719l102eh:\r
29605004 1720 call sub_0e68h\r
fecee241 1721 call prnt_cpustat\r
29605004 1722 jp DDTZML\r
a16ba2b0 1723\r
29605004 1724 if CPU_Z180\r
a16ba2b0
L
1725MSG_trap:\r
1726 DB CR,LF,'Undefined opcode trap'\r
1727 DB CR,LF,0\r
29605004 1728 endif\r
a16ba2b0
L
1729\r
1730l1051h:\r
fecee241
L
1731 ld (XBFE8),a\r
1732 ld c,007h\r
1733 jp l119fh\r
a16ba2b0 1734sub_1059h:\r
fecee241
L
1735 ld a,080h\r
1736 ex af,af'\r
1737 sub a\r
1738 ld (XA747),a\r
1739 ld b,BP_CNT\r
1740 ld ix,bp_tab\r
a16ba2b0 1741l1066h:\r
fecee241
L
1742 ld a,(ix+000h)\r
1743 and 007h\r
1744 jr z,l107eh\r
1745 ld e,(ix+002h)\r
1746 ld d,(ix+003h)\r
1747 ld hl,(REG.PC)\r
1748 call CP.HL.DE\r
1749 push bc\r
1750 call z,sub_1087h\r
1751 pop bc\r
a16ba2b0 1752l107eh:\r
fecee241
L
1753 ld de,BP_SIZE\r
1754 add ix,de\r
1755 djnz l1066h\r
1756 ex af,af'\r
1757 ret\r
a16ba2b0 1758sub_1087h:\r
fecee241
L
1759 ex af,af'\r
1760 res 7,a\r
1761 ex af,af'\r
1762 ld e,(ix+006h)\r
1763 ld d,(ix+007h)\r
1764 ld a,d\r
1765 or e\r
1766 ld hl,0ffffh\r
1767 call nz,EXPR\r
1768 ld a,h\r
1769 or l\r
1770 jr z,l10aeh\r
1771 ld e,(ix+004h)\r
1772 ld d,(ix+005h)\r
1773 dec de\r
1774 ld a,d\r
1775 or e\r
1776 jr z,l10b9h\r
1777 ld (ix+004h),e\r
1778 ld (ix+005h),d\r
a16ba2b0 1779l10aeh:\r
fecee241
L
1780 bit 4,(ix+000h)\r
1781 ret z\r
1782 ld a,001h\r
1783 ld (XA747),a\r
1784 ret\r
a16ba2b0 1785l10b9h:\r
fecee241
L
1786 ex af,af'\r
1787 or (ix+000h)\r
1788 ex af,af'\r
a16ba2b0
L
1789 ret\r
1790\r
1791bp.unset:\r
fecee241
L
1792 ld b,BP_CNT\r
1793 ld ix,bp_tab\r
a16ba2b0 1794l10c5h:\r
fecee241
L
1795 bit 5,(ix+000h)\r
1796 res 5,(ix+000h)\r
1797 jr z,l10e7h\r
1798 ld l,(ix+002h)\r
1799 ld h,(ix+003h)\r
cdc4625b 1800 ld a,(ddtzrst)\r
fecee241
L
1801 comst\r
1802 cp (hl)\r
a16ba2b0 1803 comend\r
fecee241
L
1804 jr nz,l10e7h\r
1805 ld a,(ix+001h)\r
1806 comst\r
1807 ld (hl),a\r
a16ba2b0
L
1808 comend\r
1809l10e7h:\r
fecee241
L
1810 res 3,(ix+000h)\r
1811 ld de,BP_SIZE\r
1812 add ix,de\r
1813 djnz l10c5h\r
1814 ret\r
a16ba2b0 1815sub_10f3h:\r
fecee241
L
1816 ld b,BP_CNT\r
1817 ld ix,bp_tab\r
a16ba2b0 1818l10f9h:\r
fecee241
L
1819 ld a,(ix+000h)\r
1820 and 003h\r
1821 jr z,l110dh\r
1822 ld e,(ix+002h)\r
1823 ld d,(ix+003h)\r
1824 ld hl,(REG.PC)\r
1825 call CP.HL.DE\r
1826 ret z\r
a16ba2b0 1827l110dh:\r
fecee241
L
1828 ld de,BP_SIZE\r
1829 add ix,de\r
1830 djnz l10f9h\r
1831 sub a\r
1832 inc a\r
1833 ret\r
a16ba2b0 1834sub_1117h:\r
fecee241
L
1835 call sub_0f68h\r
1836 ld (ix+004h),001h\r
1837 ld (ix+005h),000h\r
1838 ld (ix+002h),l\r
1839 ld (ix+003h),h\r
1840 ld (ix+006h),000h\r
1841 ld (ix+007h),000h\r
1842 ld a,(XBFE8)\r
1843 and a\r
1844 ld a,008h\r
1845 jr nz,l113ah\r
1846 ld a,004h\r
a16ba2b0 1847l113ah:\r
fecee241
L
1848 ld (ix+000h),a\r
1849 ret\r
a16ba2b0
L
1850\r
1851bp.set:\r
fecee241
L
1852 ld b,BP_CNT\r
1853 ld ix,bp_tab\r
a16ba2b0 1854l1144h:\r
fecee241
L
1855 ld a,(ix+000h)\r
1856 and c\r
1857 jr z,l117bh\r
1858 set 5,(ix+000h)\r
1859 ld l,(ix+002h)\r
1860 ld h,(ix+003h)\r
1861\r
1862\r
cdc4625b 1863 ld a,(ddtzrst)\r
fecee241
L
1864 comst\r
1865 ld e,(hl)\r
1866 ld (hl),a\r
a16ba2b0 1867 comend\r
fecee241
L
1868 ld (ix+001h),e\r
1869 and 038h\r
1870 ld h,0\r
1871 ld l,a\r
1872 ld de,bpent\r
a16ba2b0 1873 comst ;\r
fecee241
L
1874 ld (hl),0c3h\r
1875 inc hl\r
1876 ld (hl),e\r
1877 inc hl\r
1878 ld (hl),d\r
a16ba2b0
L
1879 comend\r
1880\r
fecee241 1881\r
a16ba2b0 1882l117bh:\r
fecee241
L
1883 ld de,BP_SIZE\r
1884 add ix,de\r
1885 djnz l1144h\r
a16ba2b0 1886 ret\r
fecee241 1887\r
a16ba2b0 1888l1183h:\r
fecee241
L
1889 sub a\r
1890 ld (XBFE8),a\r
1891 ld a,(XA747)\r
1892 and a\r
1893 call nz,prnt_cpustat\r
1894 call sub_10f3h\r
1895 ld c,007h\r
1896 jr nz,l119fh\r
1897 ld a,001h\r
1898 ld (XBFE8),a\r
1899 call sub_26e7h\r
1900 ld c,008h\r
a16ba2b0 1901l119fh:\r
fecee241 1902 call bp.set\r
a16ba2b0 1903 ld sp,$stack ;11a2 set/restore user cpu state\r
fecee241
L
1904 pop hl\r
1905 pop de\r
1906 pop bc\r
1907 pop af\r
1908 exx\r
1909 ex af,af'\r
1910 pop af\r
1911 ld i,a\r
1912 pop iy\r
1913 pop ix\r
1914 pop de\r
1915 pop bc\r
a16ba2b0 1916 if ROMSYS\r
fecee241
L
1917 pop hl\r
1918 ld a,l\r
1919 and M_MWI\r
1920 ld l,a\r
1921 di\r
1922 in0 a,(dcntl)\r
1923 and ~M_MWI\r
1924 or l\r
1925 ld l,a\r
1926 ld a,h\r
a16ba2b0
L
1927 else\r
1928 pop hl\r
1929 di\r
1930 endif\r
1931 jp $go ;11c2 common ram, switch banks and go to user prog\r
1932\r
1933sub_11c5h:\r
fecee241
L
1934 ld a,(ix+000h)\r
1935 and 003h\r
1936 ret nz\r
1937 ld e,(ix+006h)\r
1938 ld d,(ix+007h)\r
1939 ld a,d\r
1940 or e\r
1941 ret z\r
1942 push bc\r
1943 ld h,d\r
1944 ld l,e\r
1945 sub a\r
1946 ld (ix+006h),a\r
1947 ld (ix+007h),a\r
1948 ld bc,0ffffh\r
1949 cpir\r
a16ba2b0 1950l11e3h:\r
fecee241
L
1951 push de\r
1952 ld de,(sexp1)\r
1953 call CP.HL.DE\r
1954 pop de\r
1955 jr nc,l11f9h\r
1956 call sub_11ffh\r
a16ba2b0 1957l11f1h:\r
fecee241
L
1958 ld a,(hl)\r
1959 ldi\r
1960 and a\r
1961 jr nz,l11f1h\r
1962 jr l11e3h\r
a16ba2b0 1963l11f9h:\r
fecee241
L
1964 ld (sexp1),de\r
1965 pop bc\r
1966 ret\r
a16ba2b0 1967sub_11ffh:\r
fecee241
L
1968 ld iy,bp_tab\r
1969 push de\r
a16ba2b0 1970l1204h:\r
fecee241
L
1971 ld e,(iy+006h)\r
1972 ld d,(iy+007h)\r
1973 call CP.HL.DE\r
1974 jr z,l1216h\r
1975 ld de,BP_SIZE\r
1976 add iy,de\r
1977 jr l1204h\r
a16ba2b0 1978l1216h:\r
fecee241
L
1979 pop de\r
1980 ld (iy+006h),e\r
1981 ld (iy+007h),d\r
1982 ret\r
a16ba2b0
L
1983\r
1984CMD.Y:\r
fecee241
L
1985 call get.decdigit\r
1986 jr c,l122fh\r
1987 inc de\r
1988 push af\r
1989 call assert_eol\r
1990 pop af\r
1991 call sub_1248h\r
1992 jp l127ch\r
a16ba2b0 1993l122fh:\r
fecee241
L
1994 call assert_eol\r
1995 xor a\r
a16ba2b0 1996l1233h:\r
fecee241
L
1997 push af\r
1998 call sub_1248h\r
1999 call outbl4\r
2000 pop af\r
2001 inc a\r
2002 bit 0,a\r
2003 push af\r
2004 call z,CRLF\r
2005 pop af\r
2006 cp LF\r
2007 jr c,l1233h\r
2008 ret\r
a16ba2b0
L
2009\r
2010sub_1248h:\r
fecee241
L
2011 ld c,a\r
2012 ld b,0\r
2013 add a,'0'+080h\r
2014 ld de,msg.Y+1\r
2015 ld (de),a\r
2016 dec de\r
2017 ld hl,reg.Y\r
2018 add hl,bc\r
2019 add hl,bc\r
2020 ex de,hl\r
2021 ld c,003h\r
2022 jp l129ah\r
a16ba2b0
L
2023\r
2024CMD.X:\r
fecee241
L
2025 call SKIPBL\r
2026 call sub_1315h\r
2027 jp nc,l0d41h\r
2028 call assert_eol\r
2029 ld a,b\r
2030 cp 01fh\r
2031 jr z,l12c6h\r
2032 cp 020h\r
2033 jr z,l12b6h\r
2034 ex de,hl\r
2035 ld hl,b_0x132A_start\r
2036 call sub_0a48h\r
a16ba2b0 2037l1279h:\r
fecee241 2038 call l129ah\r
a16ba2b0 2039l127ch:\r
fecee241
L
2040 call OUTBL\r
2041 push de\r
2042 push bc\r
2043 call INLINE\r
2044 call SKIPBL\r
2045 jr z,l1297h\r
2046 call get_arg\r
2047 ld b,h\r
2048 ld c,l\r
2049 pop af\r
2050 pop hl\r
2051 ld (hl),c\r
2052 bit 0,a\r
2053 ret z\r
2054 inc hl\r
2055 ld (hl),b\r
2056 ret\r
a16ba2b0 2057l1297h:\r
fecee241
L
2058 pop af\r
2059 pop hl\r
2060 ret\r
a16ba2b0 2061l129ah:\r
fecee241
L
2062 ld b,c\r
2063 call PSTR\r
2064 ld a,'='\r
2065 call OUTCHAR\r
2066 ld a,(de)\r
2067 bit 0,b\r
2068 jp z,out.hex\r
2069 ld l,a\r
2070 inc de\r
2071 ld a,(de)\r
2072 dec de\r
2073 ld h,a\r
2074 bit 1,b\r
2075 jp z,out.hl\r
2076 jp out.hl.@\r
a16ba2b0
L
2077\r
2078l12b6h:\r
fecee241
L
2079 call prnt_f\r
2080 ld a,0f3h\r
2081 ld (reg.iff),a\r
2082 scf\r
2083 call sub_12d1h\r
2084 ld (reg.f),a\r
2085 ret\r
a16ba2b0
L
2086\r
2087l12c6h:\r
fecee241
L
2088 call prnt_f2\r
2089 and a\r
2090 call sub_12d1h\r
2091 ld (reg.f2),a\r
2092 ret\r
a16ba2b0
L
2093\r
2094sub_12d1h:\r
fecee241
L
2095 ex af,af'\r
2096 ld b,000h\r
2097 call outbl\r
2098 call assert_eol\r
2099 call inline\r
a16ba2b0 2100l12ddh:\r
fecee241
L
2101 call skipbl\r
2102 ld a,b\r
2103 ret z\r
2104 push bc\r
2105 ld hl,tab_pr_flags\r
2106 call lookupch\r
2107 jp nc,error\r
2108 ld a,b\r
2109 cp 008h\r
2110 jr z,l12feh\r
2111 inc b\r
2112 ld a,001h\r
2113 jr l12f7h\r
a16ba2b0 2114l12f6h:\r
fecee241 2115 rlca\r
a16ba2b0 2116l12f7h:\r
fecee241
L
2117 djnz l12f6h\r
2118 pop bc\r
2119 or b\r
2120 ld b,a\r
2121 jr l12ddh\r
a16ba2b0 2122l12feh:\r
fecee241
L
2123 ex af,af'\r
2124 jp nc,ERROR\r
2125 ex af,af'\r
2126 ld a,0FBh\r
2127 ld (reg.iff),a\r
2128 pop bc\r
2129 jr l12ddh\r
a16ba2b0
L
2130\r
2131tab_pr_flags:\r
2132 db 'CNV H ZSE'\r
2133 db 0\r
2134\r
2135sub_1315h:\r
fecee241
L
2136 call sub_0a0eh\r
2137 ret nc\r
2138 ld a,b\r
2139 add a,b\r
2140 add a,b\r
2141 ld hl,b_0x136C_start\r
2142 call ADD_HL_A\r
2143 ld c,(hl)\r
2144 inc hl\r
2145 ld a,(hl)\r
2146 inc hl\r
2147 ld h,(hl)\r
2148 ld l,a\r
2149 scf\r
2150 ret\r
a16ba2b0
L
2151\r
2152b_0x132A_start:\r
29605004
L
2153 if ROMSYS\r
2154 DC 'ROMSEL'\r
2155 endif\r
2156 if CPU_Z180\r
a16ba2b0
L
2157 DC 'CBAR'\r
2158 DC 'BBR'\r
29605004
L
2159 else\r
2160 DC 'BNK'\r
2161 endif\r
a16ba2b0
L
2162 DC 'BC'''\r
2163 DC 'DE'''\r
2164 DC 'HL'''\r
2165 DC 'BC'\r
2166 DC 'DE'\r
2167 DC 'HL'\r
2168 DC 'A'''\r
2169 DC 'B'''\r
2170 DC 'C'''\r
2171 DC 'D'''\r
2172 DC 'E'''\r
2173 DC 'H'''\r
2174 DC 'L'''\r
2175 DC 'A'\r
2176 DC 'B'\r
2177 DC 'C'\r
2178 DC 'D'\r
2179 DC 'E'\r
2180 DC 'H'\r
2181 DC 'L'\r
2182 DC 'IX'\r
2183 DC 'IY'\r
2184 DC 'SP'\r
2185 DC 'PC'\r
2186 DC 'X'\r
2187 DC 'Y'\r
2188 DC 'S'\r
2189 DC 'P'\r
2190 DC 'I'\r
2191 DC 'F'''\r
2192 DC 'F'\r
a16ba2b0
L
2193 DB 0\r
2194b_0x136C_start:\r
29605004 2195 if ROMSYS\r
fecee241
L
2196 defb 000h\r
2197 defw uromen\r
29605004
L
2198 endif\r
2199 if CPU_Z180\r
fecee241
L
2200 defb 000h\r
2201 defw ucbar\r
2202 defb 000h\r
2203 defw ubbr\r
29605004 2204 else\r
fecee241
L
2205 defb 000h\r
2206 defw ubnk\r
29605004 2207 endif\r
fecee241
L
2208 defb 003h\r
2209 defw reg.c2\r
2210 defb 003h\r
2211 defw reg.e2\r
2212 defb 003h\r
2213 defw reg.l2\r
2214 defb 003h\r
2215 defw reg.c\r
2216 defb 003h\r
2217 defw reg.e\r
2218 defb 003h\r
2219 defw reg.l\r
2220 defb 000h\r
2221 defw reg.a2\r
2222 defb 000h\r
2223 defw reg.b2\r
2224 defb 000h\r
2225 defw reg.c2\r
2226 defb 000h\r
2227 defw reg.d2\r
2228 defb 000h\r
2229 defw reg.e2\r
2230 defb 000h\r
2231 defw reg.h2\r
2232 defb 000h\r
2233 defw reg.l2\r
2234 defb 000h\r
2235 defw reg.a\r
2236 defb 000h\r
2237 defw reg.b\r
2238 defb 000h\r
2239 defw reg.c\r
2240 defb 000h\r
2241 defw reg.d\r
2242 defb 000h\r
2243 defw reg.e\r
2244 defb 000h\r
2245 defw reg.h\r
2246 defb 000h\r
2247 defw reg.l\r
2248 defb 003h\r
2249 defw reg.ix\r
2250 defb 003h\r
2251 defw reg.iy\r
2252 defb 003h\r
2253 defw reg.sp\r
2254 defb 003h\r
2255 defw reg.pc\r
2256 defb 003h\r
2257 defw reg.ix\r
2258 defb 003h\r
2259 defw reg.iy\r
2260 defb 003h\r
2261 defw reg.sp\r
2262 defb 003h\r
2263 defw reg.pc\r
2264 defb 000h\r
2265 defw reg.i\r
2266 defb 000h\r
2267 defw reg.f2\r
2268 defb 000h\r
2269 defw reg.f\r
a16ba2b0 2270CMD.S:\r
fecee241
L
2271 ld hl,(lst.S)\r
2272 call get_lastarg_def\r
a16ba2b0 2273l13d8h:\r
fecee241
L
2274 ld (lst.S),hl\r
2275 call out.hl.@\r
2276 call OUTBL\r
2277 comst\r
2278 ld a,(hl)\r
a16ba2b0 2279 comend\r
fecee241
L
2280 call out.hex\r
2281 call outbl2\r
2282 call INLINE\r
2283 call SKIPBL\r
2284 inc hl\r
2285 jr z,l13d8h\r
2286 dec hl\r
2287 inc de\r
2288 cp '.'\r
2289 jp z,assert_eol\r
2290 cp '-'\r
2291 jr nz,l1406h\r
2292 ld a,(de)\r
2293 or a\r
2294 dec hl\r
2295 jr z,l13d8h\r
2296 inc hl\r
a16ba2b0 2297l1406h:\r
fecee241
L
2298 dec de\r
2299 call get_bytes_m\r
2300 jr l13d8h\r
a16ba2b0
L
2301\r
2302CMD.@:\r
fecee241
L
2303 call assert_eol\r
2304 ld hl,MSG_at\r
2305 ld de,offs.@\r
2306 ld c,001h\r
2307 jp l1279h\r
a16ba2b0
L
2308MSG_at:\r
2309 dc '@'\r
2310\r
2311CMD.I:\r
fecee241
L
2312 ld hl,CMD.I\r
2313 ld (CMD_RPT),hl\r
2314 ld hl,(lst.IP)\r
2315 call get_lastarg_def\r
2316 ld (lst.IP),hl\r
2317 ld b,h\r
2318 ld c,l\r
29605004 2319 if CPU_Z180\r
fecee241
L
2320 ld a,b\r
2321 or a\r
2322 jr nz,l1442h\r
2323 ld a,c\r
2324 ld hl,ucbar\r
2325 cp cbar\r
2326 jr z,l143fh\r
2327 ld hl,ubbr\r
2328 cp bbr\r
2329 jr nz,l1442h\r
a16ba2b0 2330l143fh:\r
fecee241
L
2331 ld a,(hl)\r
2332 jr l1444h\r
a16ba2b0 2333l1442h:\r
29605004 2334 endif\r
fecee241 2335 in a,(c)\r
a16ba2b0 2336l1444h:\r
fecee241
L
2337 push af\r
2338 call out.hex\r
2339 call outbl4\r
2340 pop af\r
2341 call out.bin.b\r
2342 jp CRLF\r
a16ba2b0 2343CMD.O:\r
fecee241
L
2344 ld hl,CMD.O\r
2345 ld (CMD_RPT),hl\r
2346 ld hl,(lst.OD)\r
2347 call get_arg_def\r
2348 ld a,l\r
2349 ld (lst.OD),a\r
2350 push af\r
2351 call skip_to_nextarg\r
2352 ld hl,(lst.OP)\r
2353 call get_lastarg_def\r
2354 ld (lst.OP),hl\r
2355 ld b,h\r
2356 ld c,l\r
29605004 2357 if CPU_Z180\r
fecee241
L
2358 ld a,b\r
2359 or a\r
2360 jr nz,l1489h\r
2361 ld a,c\r
2362 ld hl,ucbar\r
2363 cp cbar\r
2364 jr z,l148dh\r
2365 ld hl,ubbr\r
2366 cp bbr\r
2367 jr z,l148dh\r
2368 cp cbr\r
2369 jp z,ERROR\r
a16ba2b0 2370l1489h:\r
29605004 2371 endif\r
fecee241
L
2372 pop af\r
2373 out (c),a\r
2374 ret\r
29605004 2375 if CPU_Z180\r
a16ba2b0 2376l148dh:\r
fecee241
L
2377 pop af\r
2378 ld (hl),a\r
2379 ret\r
29605004 2380 endif\r
a16ba2b0
L
2381\r
2382CMD.V:\r
2383 call get_arg3 ;1490 get from, size, to\r
2384cmp_mem:\r
fecee241
L
2385 push bc\r
2386 comst\r
2387 ld a,(de)\r
2388 ld b,(hl)\r
a16ba2b0 2389 comend\r
fecee241
L
2390 cp b\r
2391 jr z,l14bah\r
2392 ld c,a\r
2393 call out.hl.@\r
2394 call OUTBL\r
2395 ld a,b\r
2396 call out.hex\r
2397 call outbl2\r
2398 ld a,c\r
2399 call out.hex\r
2400 call OUTBL\r
2401 ex de,hl\r
2402 call out.hl.@\r
2403 ex de,hl\r
2404 call CRLF\r
a16ba2b0 2405l14bah:\r
fecee241
L
2406 pop bc\r
2407 inc hl\r
2408 inc de\r
2409 dec bc\r
2410 ld a,b\r
2411 or c\r
2412 jr nz,cmp_mem\r
2413 ret\r
a16ba2b0
L
2414\r
2415CMD.M:\r
fecee241
L
2416 ld a,(de)\r
2417 cp 'V'\r
2418 jr nz,bm_nv\r
2419 inc de\r
a16ba2b0
L
2420bm_nv:\r
2421 push af ;14c9 save 'V' flag\r
fecee241
L
2422 call get_arg3\r
2423 push hl\r
2424 push de\r
2425 push bc\r
2426 call CP.HL.DE\r
2427 jr nc,bm_mvdown\r
2428 add hl,bc\r
2429 ex de,hl\r
2430 add hl,bc\r
2431 ex de,hl\r
2432 dec hl\r
2433 dec de\r
2434 comst\r
2435 lddr\r
a16ba2b0 2436 comend\r
fecee241 2437 jr bm_done\r
a16ba2b0 2438bm_mvdown:\r
fecee241
L
2439 comst\r
2440 ldir\r
a16ba2b0
L
2441 comend\r
2442bm_done:\r
fecee241
L
2443 pop bc\r
2444 pop de\r
2445 pop hl\r
2446 pop af\r
a16ba2b0 2447 jr z,cmp_mem ;14ed validate?\r
fecee241 2448 ret\r
a16ba2b0 2449CMD.H:\r
fecee241
L
2450 call EXPR\r
2451 jp c,l173ch\r
2452 call skip_to_nextarg\r
2453 push hl\r
2454 call EXPR\r
2455 push af\r
2456 call assert_eol\r
2457 pop af\r
2458 ex de,hl\r
2459 pop hl\r
2460 jr c,l1511h\r
2461 push hl\r
2462 push de\r
2463 add hl,de\r
2464 call l1511h\r
2465 pop de\r
2466 pop hl\r
2467 and a\r
2468 sbc hl,de\r
a16ba2b0
L
2469l1511h:\r
2470 call out.hl ;1511 val\r
fecee241 2471 call outbl2\r
a16ba2b0 2472 call sub_0928h ;1517 -val\r
fecee241 2473 call outbl4\r
a16ba2b0 2474 call out.hl.dec ;151d dec\r
fecee241 2475 call outbl2\r
a16ba2b0 2476 call out.hl.decm ;1523 -dec\r
fecee241 2477 call outbl4\r
a16ba2b0 2478 call out.bin.w ;1529 bin\r
fecee241
L
2479 call outbl2\r
2480 ld a,l\r
2481 call out.ascii\r
2482 jp CRLF\r
a16ba2b0
L
2483\r
2484CMD.Q:\r
fecee241
L
2485 ld a,(de)\r
2486 sub 'J'\r
2487 ld (lst.Qj),a\r
2488 jr nz,l153fh\r
2489 inc de\r
a16ba2b0 2490l153fh:\r
fecee241
L
2491 call get_arg_range\r
2492 push bc\r
2493 push hl\r
2494 call sub_15a7h\r
2495 pop hl\r
a16ba2b0 2496l1548h:\r
fecee241
L
2497 call sub_1594h\r
2498 jr nz,l1562h\r
2499 push bc\r
2500 push hl\r
2501 ld a,(lst.Qj)\r
2502 or a\r
2503 jr nz,l1559h\r
2504 ld bc,-8\r
2505 add hl,bc\r
a16ba2b0 2506l1559h:\r
fecee241
L
2507 ld bc,MEMDUMP_CNT\r
2508 and a\r
2509 call memdump\r
2510 pop hl\r
2511 pop bc\r
a16ba2b0 2512l1562h:\r
fecee241
L
2513 inc hl\r
2514 ex (sp),hl\r
2515 dec hl\r
2516 ld a,h\r
2517 or l\r
2518 ex (sp),hl\r
2519 jr nz,l1548h\r
2520 pop bc\r
2521 ret\r
a16ba2b0
L
2522\r
2523CMD.Z:\r
fecee241
L
2524 call get_arg_range\r
2525 push bc\r
2526 push hl\r
2527 call sub_15a7h\r
2528 ld a,b\r
2529 pop hl\r
2530 pop bc\r
2531 push hl\r
2532 ex de,hl\r
a16ba2b0 2533l1579h:\r
fecee241
L
2534 push af\r
2535 ld a,(hl)\r
2536 comst\r
2537 ld (de),a\r
a16ba2b0 2538 comend\r
fecee241
L
2539 pop af\r
2540 inc de\r
2541 cpi\r
2542 jp po,l1592h\r
2543 dec a\r
2544 jr nz,l1579h\r
2545 pop hl\r
2546 comst\r
2547 ldir\r
a16ba2b0 2548 comend\r
fecee241 2549 ret\r
a16ba2b0 2550l1592h:\r
fecee241
L
2551 pop hl\r
2552 ret\r
a16ba2b0
L
2553\r
2554sub_1594h:\r
fecee241
L
2555 push hl\r
2556 push de\r
2557 push bc\r
a16ba2b0 2558l1597h:\r
fecee241
L
2559 ld a,(de)\r
2560 comst\r
2561 cp (hl)\r
a16ba2b0 2562 comend\r
fecee241
L
2563 jr nz,l15a3h\r
2564 inc de\r
2565 inc hl\r
2566 djnz l1597h\r
a16ba2b0 2567l15a3h:\r
fecee241
L
2568 pop bc\r
2569 pop de\r
2570 pop hl\r
2571 ret\r
a16ba2b0
L
2572\r
2573sub_15a7h:\r
fecee241
L
2574 ld hl,ci.buf+1\r
2575 call get_bytes\r
2576 ld de,ci.buf+1\r
2577 and a\r
2578 sbc hl,de\r
2579 ld b,l\r
2580 ret nz\r
2581 jp ERROR\r
a16ba2b0
L
2582\r
2583get_bytes:\r
2584 db 0e6h ;15b8 and 037h (clear carry, skip next opc)\r
2585get_bytes_m:\r
2586 scf\r
2587l15bah:\r
fecee241
L
2588 push af\r
2589 call skip_to_nextarg\r
2590 cp 'W'\r
2591 jr nz,l15d9h\r
2592 inc de\r
2593 push hl\r
2594 call sub_0a68h\r
2595 ex de,hl\r
2596 pop bc\r
2597 pop af\r
2598 push af\r
2599 push bc\r
2600 ex (sp),hl\r
2601 jr nc,l15d3h\r
2602 comst\r
a16ba2b0 2603l15d3h:\r
fecee241 2604 ld (hl),e\r
a16ba2b0 2605 comend\r
fecee241
L
2606 inc hl\r
2607 ld c,d\r
2608 pop de\r
2609 jr l15e5h\r
a16ba2b0 2610l15d9h:\r
fecee241
L
2611 cp ''''\r
2612 jr z,l15f1h\r
2613 push hl\r
2614 call EXPR\r
2615 ld c,l\r
2616 pop hl\r
2617 jr c,l1626h\r
a16ba2b0 2618l15e5h:\r
fecee241
L
2619 pop af\r
2620 push af\r
2621 jr nc,l15edh\r
2622 comst\r
a16ba2b0 2623l15edh:\r
fecee241 2624 ld (hl),c\r
a16ba2b0 2625 comend\r
fecee241
L
2626 inc hl\r
2627 jr l161eh\r
a16ba2b0 2628l15f1h:\r
fecee241
L
2629 inc de\r
2630 ld a,(de)\r
2631 cp ''''\r
2632 jr z,l1607h\r
2633 or a\r
2634 jr z,l1626h\r
a16ba2b0 2635l15fah:\r
fecee241
L
2636 ld c,a\r
2637 pop af\r
2638 push af\r
2639 jr nc,l1603h\r
2640 comst\r
a16ba2b0 2641l1603h:\r
fecee241 2642 ld (hl),c\r
a16ba2b0 2643 comend\r
fecee241
L
2644 inc hl\r
2645 jr l15f1h\r
a16ba2b0 2646l1607h:\r
fecee241
L
2647 inc de\r
2648 ld a,(de)\r
2649 cp ''''\r
2650 jr z,l15fah\r
2651 cp '.'\r
2652 jr nz,l161eh\r
2653 inc de\r
2654 dec hl\r
2655 pop af\r
2656 push af\r
2657 jr nc,l161bh\r
2658 comst\r
a16ba2b0 2659l161bh:\r
fecee241 2660 set 7,(hl)\r
a16ba2b0 2661 comend\r
fecee241 2662 inc hl\r
a16ba2b0 2663l161eh:\r
fecee241
L
2664 pop af\r
2665 jr nc,l15bah\r
2666 ld (lst.S),hl\r
2667 jr l15bah\r
a16ba2b0
L
2668\r
2669l1626h:\r
fecee241
L
2670 pop af\r
2671 ret nc\r
2672 ld (lst.S),hl\r
2673 ret\r
a16ba2b0
L
2674\r
2675CMD.D:\r
fecee241
L
2676 ld hl,CMD.D\r
2677 ld (CMD_RPT),hl\r
2678 ld hl,(lst.D)\r
2679 ld bc,00080h\r
2680 call sub_0a82h\r
2681 scf\r
a16ba2b0 2682memdump:\r
fecee241
L
2683 push bc\r
2684 push de\r
2685 push hl\r
2686 ex af,af'\r
a16ba2b0 2687l1640h:\r
fecee241
L
2688 call out.hl.@\r
2689 call z,outbl2\r
2690 call OUTBL\r
2691 ld de,0\r
a16ba2b0 2692l164ch:\r
fecee241
L
2693 comst\r
2694 ld a,(hl)\r
a16ba2b0 2695 comend\r
fecee241
L
2696 inc hl\r
2697 call out.hex\r
2698 call OUTBL\r
2699 dec bc\r
2700 inc e\r
2701 ld a,e\r
2702 cp 010h\r
2703 jr z,l1668h\r
2704 and 003h\r
2705 call z,OUTBL\r
2706 ld a,b\r
2707 or c\r
2708 jr nz,l164ch\r
a16ba2b0 2709l1668h:\r
fecee241
L
2710 call OUTBL\r
2711 and a\r
2712 sbc hl,de\r
a16ba2b0 2713l166eh:\r
fecee241
L
2714 comst\r
2715 ld a,(hl)\r
a16ba2b0 2716 comend\r
fecee241
L
2717 call sub_168fh\r
2718 call OUTCHAR\r
2719 inc hl\r
2720 dec e\r
2721 jr nz,l166eh\r
2722 ex af,af'\r
2723 jr nc,l1683h\r
2724 ld (lst.D),hl\r
a16ba2b0 2725l1683h:\r
fecee241
L
2726 ex af,af'\r
2727 call CRLF\r
2728 ld a,b\r
2729 or c\r
2730 jr nz,l1640h\r
2731 pop hl\r
2732 pop de\r
2733 pop bc\r
2734 ret\r
a16ba2b0 2735sub_168fh:\r
fecee241
L
2736 and 07fh\r
2737 cp 07fh\r
2738 jr z,l1698h\r
2739 cp 020h\r
2740 ret nc\r
a16ba2b0 2741l1698h:\r
fecee241
L
2742 ld a,02eh\r
2743 ret\r
a16ba2b0
L
2744\r
2745; Read Intel Hex File from console.\r
a16ba2b0 2746CMD.R:\r
fecee241 2747 ld hl,0\r
3531528e 2748 call get_lastarg_def ;169e get offset from command line\r
fecee241
L
2749 push hl\r
2750 ld hl,0\r
2751 ld (HILOD),hl\r
a16ba2b0 2752w_recstart:\r
fecee241
L
2753 call i.getchar\r
2754 jr z,l16deh\r
2755 cp ':'\r
2756 jr nz,w_recstart\r
a16ba2b0
L
2757 ld c,0 ;16b1 init checksum\r
2758 call i.gethexbyte ;16b3 record len\r
fecee241 2759 ld b,a\r
a16ba2b0 2760 call i.gethexbyte ;16b7 address high\r
fecee241 2761 ld h,a\r
a16ba2b0 2762 call i.gethexbyte ;16bb address low\r
fecee241 2763 ld l,a\r
a16ba2b0 2764 call i.gethexbyte ;16bf record type (ignored)\r
fecee241 2765 ld a,b\r
a16ba2b0 2766 and a ;16c3 record len == 0?\r
fecee241 2767 jr z,l16deh\r
a16ba2b0 2768l16c6h:\r
fecee241 2769 call i.gethexbyte\r
3531528e 2770 pop de ;16c9 offset\r
fecee241
L
2771 push de\r
2772 push hl\r
2773 add hl,de\r
2774 call i.storebyte\r
2775 pop hl\r
2776 inc hl\r
3531528e
L
2777 djnz l16c6h ;16d2 repeat for record len\r
2778 call i.gethexbyte ;16d4 checksum\r
fecee241
L
2779 ld a,c\r
2780 and a\r
a16ba2b0
L
2781 jp nz,ERROR ;16d9 exit if checksum error\r
2782 jr w_recstart ;16dc next record\r
2783l16deh:\r
fecee241
L
2784 pop hl\r
2785 call i.gethexbyte\r
2786 jp l173fh\r
a16ba2b0
L
2787\r
2788i.gethexbyte:\r
fecee241
L
2789 call sub_16f6h\r
2790 rlca\r
2791 rlca\r
2792 rlca\r
2793 rlca\r
2794 ld d,a\r
2795 call sub_16f6h\r
2796 add a,d\r
2797 ld d,a\r
2798 add a,c\r
2799 ld c,a\r
2800 ld a,d\r
2801 ret\r
a16ba2b0
L
2802\r
2803sub_16f6h:\r
fecee241
L
2804 call i.getchar\r
2805 jr z,l16ffh\r
2806 call sub_0d26h\r
2807 ret nc\r
a16ba2b0 2808l16ffh:\r
fecee241 2809 jp ERROR\r
a16ba2b0
L
2810\r
2811i.getchar:\r
fecee241
L
2812 call $ci\r
2813 cp 01ah\r
2814 ret\r
a16ba2b0
L
2815\r
2816i.storebyte:\r
fecee241
L
2817 push af\r
2818 push de\r
3531528e 2819 ld de,TPA ;170a lowest allowed load address\r
fecee241
L
2820 call CP.HL.DE\r
2821 jp c,ERROR\r
3531528e 2822 ld de,$stcka ;1713 highest allowed load address\r
fecee241
L
2823 call CP.HL.DE\r
2824 jp nc,ERROR\r
2825 ld de,(HILOD)\r
2826 call CP.HL.DE\r
2827 jr c,l1728h\r
2828 ld (HILOD),hl\r
a16ba2b0 2829l1728h:\r
fecee241
L
2830 ld de,(MAXLOD)\r
2831 call CP.HL.DE\r
2832 jr c,l1734h\r
2833 ld (MAXLOD),hl\r
a16ba2b0 2834l1734h:\r
fecee241
L
2835 pop de\r
2836 pop af\r
2837 comst\r
3531528e 2838 ld (hl),a ;173a store byte\r
a16ba2b0 2839 comend\r
fecee241 2840 ret\r
a16ba2b0
L
2841\r
2842l173ch:\r
fecee241 2843 call assert_eol\r
a16ba2b0 2844l173fh:\r
fecee241
L
2845 ld hl,MSG_high\r
2846 call PSTR\r
2847 ld hl,(HILOD)\r
2848 call out.hl\r
2849 ld hl,MSG_max\r
2850 call PSTR\r
2851 ld hl,(MAXLOD)\r
2852 call out.hl\r
2853 jp CRLF\r
a16ba2b0
L
2854\r
2855MSG_high:\r
2856 DC 'High = '\r
2857MSG_max:\r
2858 DC ' Max = '\r
2859\r
2860CMD.A:\r
fecee241
L
2861 ld hl,(lst.A)\r
2862 call get_lastarg_def\r
2863 push hl\r
2864 pop iy\r
2865 ld hl,l17c4h\r
2866 ld (CMD_ERR),hl\r
2867 ld (XB068),sp\r
a16ba2b0 2868l177ch:\r
fecee241
L
2869 push iy\r
2870 pop hl\r
2871 ld (lst.A),hl\r
2872 ld (OFFS.pc),hl\r
2873 push hl\r
2874 call sub_1f3fh\r
2875 pop iy\r
2876 ld c,b\r
2877 ld de,(offs.@)\r
2878 ld a,d\r
2879 or e\r
2880 ld b,011h\r
2881 jr z,l1798h\r
2882 ld b,019h\r
a16ba2b0 2883l1798h:\r
fecee241
L
2884 call OUTBL\r
2885 ld a,(CON.COL)\r
2886 cp b\r
2887 jr c,l1798h\r
2888 push bc\r
2889 call INLINE\r
2890 pop bc\r
2891 call SKIPBL\r
2892 cp '.'\r
2893 ret z\r
2894 cp '-'\r
2895 jr nz,l17b6h\r
2896 ld iy,(XB06C)\r
2897 jr l177ch\r
a16ba2b0 2898l17b6h:\r
fecee241
L
2899 and a\r
2900 call nz,sub_17cdh\r
2901 ld (XB06C),iy\r
2902 ld b,0\r
2903 add iy,bc\r
2904 jr l177ch\r
a16ba2b0 2905l17c4h:\r
fecee241
L
2906 call l07eah\r
2907 ld sp,(XB068)\r
2908 jr l177ch\r
a16ba2b0
L
2909\r
2910sub_17cdh:\r
fecee241
L
2911 call SKIPBL\r
2912 ld hl,t_MNEMONICS\r
2913 call sub_0a15h\r
2914 jp nc,ERROR\r
2915 call SKIPBL\r
2916 push de\r
2917 ld a,b\r
2918 add a,b\r
2919 add a,b\r
2920 ld hl,b_0x17EE_start\r
2921 call ADD_HL_A\r
2922 ld e,(hl)\r
2923 inc hl\r
2924 ld d,(hl)\r
2925 inc hl\r
2926 ld b,(hl)\r
2927 ex de,hl\r
2928 pop de\r
2929 jp (hl)\r
a16ba2b0
L
2930\r
2931b_0x17EE_start:\r
fecee241 2932 defw l1b54h\r
a16ba2b0
L
2933\r
2934b_0x17F0_start:\r
fecee241 2935 defb 088h\r
a16ba2b0
L
2936\r
2937b_0x17F1_start:\r
fecee241 2938 defw l1b74h\r
a16ba2b0
L
2939\r
2940b_0x17F3_start:\r
fecee241 2941 defb 080h\r
a16ba2b0
L
2942\r
2943b_0x17F4_start:\r
fecee241 2944 defw l1babh\r
a16ba2b0
L
2945\r
2946b_0x17F6_start:\r
fecee241 2947 defb 0a0h\r
a16ba2b0
L
2948\r
2949b_0x17F7_start:\r
fecee241 2950 defw l1c14h\r
a16ba2b0
L
2951\r
2952b_0x17F9_start:\r
fecee241 2953 defb 040h\r
a16ba2b0
L
2954\r
2955b_0x17FA_start:\r
fecee241 2956 defw l1c38h\r
a16ba2b0
L
2957\r
2958b_0x17FC_start:\r
fecee241 2959 defb 0c4h\r
a16ba2b0
L
2960\r
2961b_0x17FD_start:\r
fecee241 2962 defw l1b36h\r
a16ba2b0
L
2963\r
2964b_0x17FF_start:\r
fecee241 2965 defb 03fh\r
a16ba2b0
L
2966\r
2967b_0x1800_start:\r
fecee241 2968 defw l1babh\r
a16ba2b0
L
2969\r
2970b_0x1802_start:\r
fecee241 2971 defb 0b8h\r
a16ba2b0
L
2972\r
2973b_0x1803_start:\r
fecee241 2974 defw gen.opc.ED2\r
a16ba2b0
L
2975\r
2976b_0x1805_start:\r
fecee241 2977 defb 0a9h\r
a16ba2b0
L
2978\r
2979b_0x1806_start:\r
fecee241 2980 defw gen.opc.ED2\r
a16ba2b0
L
2981\r
2982b_0x1808_start:\r
fecee241 2983 defb 0b9h\r
a16ba2b0
L
2984\r
2985b_0x1809_start:\r
fecee241 2986 defw gen.opc.ED2\r
a16ba2b0
L
2987\r
2988b_0x180B_start:\r
fecee241 2989 defb 0a1h\r
a16ba2b0
L
2990\r
2991b_0x180C_start:\r
fecee241 2992 defw gen.opc.ED2\r
a16ba2b0
L
2993\r
2994b_0x180E_start:\r
fecee241 2995 defb 0b1h\r
a16ba2b0
L
2996\r
2997b_0x180F_start:\r
fecee241 2998 defw l1b36h\r
a16ba2b0
L
2999\r
3000b_0x1811_start:\r
fecee241 3001 defb 02fh\r
a16ba2b0
L
3002\r
3003b_0x1812_start:\r
fecee241 3004 defw l1b36h\r
a16ba2b0
L
3005\r
3006b_0x1814_start:\r
fecee241 3007 defb 027h\r
a16ba2b0
L
3008\r
3009b_0x1815_start:\r
fecee241 3010 defw l1dabh\r
a16ba2b0
L
3011\r
3012b_0x1817_start:\r
fecee241 3013 defb 005h\r
a16ba2b0
L
3014\r
3015b_0x1818_start:\r
fecee241 3016 defw l1b36h\r
a16ba2b0
L
3017\r
3018b_0x181A_start:\r
fecee241 3019 defb 0f3h\r
a16ba2b0
L
3020\r
3021b_0x181B_start:\r
fecee241 3022 defw l1ca4h\r
a16ba2b0
L
3023\r
3024b_0x181D_start:\r
fecee241 3025 defb 010h\r
a16ba2b0
L
3026\r
3027b_0x181E_start:\r
fecee241 3028 defw l1b36h\r
a16ba2b0
L
3029\r
3030b_0x1820_start:\r
fecee241 3031 defb 0fbh\r
a16ba2b0
L
3032\r
3033b_0x1821_start:\r
fecee241 3034 defw l1d54h\r
a16ba2b0
L
3035\r
3036b_0x1823_start:\r
fecee241 3037 defb 0e3h\r
a16ba2b0
L
3038\r
3039b_0x1824_start:\r
fecee241 3040 defw l1b36h\r
a16ba2b0
L
3041\r
3042b_0x1826_start:\r
fecee241 3043 defb 0d9h\r
a16ba2b0
L
3044\r
3045b_0x1827_start:\r
fecee241 3046 defw l1b36h\r
a16ba2b0
L
3047\r
3048b_0x1829_start:\r
fecee241 3049 defb 076h\r
a16ba2b0
L
3050\r
3051b_0x182A_start:\r
fecee241 3052 defw l1cbfh\r
a16ba2b0
L
3053\r
3054b_0x182C_start:\r
fecee241 3055 defb 046h\r
a16ba2b0
L
3056\r
3057b_0x182D_start:\r
fecee241 3058 defw l1cf8h\r
a16ba2b0
L
3059\r
3060b_0x182F_start:\r
fecee241 3061 defb 040h\r
a16ba2b0
L
3062\r
3063b_0x1830_start:\r
fecee241 3064 defw l1dabh\r
a16ba2b0
L
3065\r
3066b_0x1832_start:\r
fecee241 3067 defb 004h\r
a16ba2b0
L
3068\r
3069b_0x1833_start:\r
fecee241 3070 defw gen.opc.ED2\r
a16ba2b0
L
3071\r
3072b_0x1835_start:\r
fecee241 3073 defb 0aah\r
a16ba2b0
L
3074\r
3075b_0x1836_start:\r
fecee241 3076 defw gen.opc.ED2\r
a16ba2b0
L
3077\r
3078b_0x1838_start:\r
fecee241 3079 defb 0bah\r
a16ba2b0
L
3080\r
3081b_0x1839_start:\r
fecee241 3082 defw gen.opc.ED2\r
a16ba2b0
L
3083\r
3084b_0x183B_start:\r
fecee241 3085 defb 0a2h\r
a16ba2b0
L
3086\r
3087b_0x183C_start:\r
fecee241 3088 defw gen.opc.ED2\r
a16ba2b0
L
3089\r
3090b_0x183E_start:\r
fecee241 3091 defb 0b2h\r
a16ba2b0
L
3092\r
3093b_0x183F_start:\r
fecee241 3094 defw l1c5eh\r
a16ba2b0
L
3095\r
3096b_0x1841_start:\r
fecee241 3097 defb 0c2h\r
a16ba2b0
L
3098\r
3099b_0x1842_start:\r
fecee241 3100 defw l1cabh\r
a16ba2b0
L
3101\r
3102b_0x1844_start:\r
fecee241 3103 defb 020h\r
a16ba2b0
L
3104\r
3105b_0x1845_start:\r
fecee241 3106 defw l1934h\r
a16ba2b0
L
3107\r
3108b_0x1847_start:\r
fecee241 3109 defb 040h\r
a16ba2b0
L
3110\r
3111b_0x1848_start:\r
fecee241 3112 defw gen.opc.ED2\r
a16ba2b0
L
3113\r
3114b_0x184A_start:\r
fecee241 3115 defb 0a8h\r
a16ba2b0
L
3116\r
3117b_0x184B_start:\r
fecee241 3118 defw gen.opc.ED2\r
a16ba2b0
L
3119\r
3120b_0x184D_start:\r
fecee241 3121 defb 0b8h\r
a16ba2b0
L
3122\r
3123b_0x184E_start:\r
fecee241 3124 defw gen.opc.ED2\r
a16ba2b0
L
3125\r
3126b_0x1850_start:\r
fecee241 3127 defb 0a0h\r
a16ba2b0
L
3128\r
3129b_0x1851_start:\r
fecee241 3130 defw gen.opc.ED2\r
a16ba2b0
L
3131\r
3132b_0x1853_start:\r
fecee241 3133 defb 0b0h\r
a16ba2b0
L
3134\r
3135b_0x1854_start:\r
fecee241 3136 defw gen.opc.ED2\r
a16ba2b0
L
3137\r
3138b_0x1856_start:\r
fecee241 3139 defb 044h\r
a16ba2b0
L
3140\r
3141b_0x1857_start:\r
fecee241 3142 defw l1b36h\r
a16ba2b0
L
3143\r
3144b_0x1859_start:\r
fecee241 3145 defb 000h\r
a16ba2b0
L
3146\r
3147b_0x185A_start:\r
fecee241 3148 defw l1babh\r
a16ba2b0
L
3149\r
3150b_0x185C_start:\r
fecee241 3151 defb 0b0h\r
a16ba2b0
L
3152\r
3153b_0x185D_start:\r
fecee241 3154 defw gen.opc.ED2\r
a16ba2b0
L
3155\r
3156b_0x185F_start:\r
fecee241 3157 defb 0bbh\r
a16ba2b0
L
3158\r
3159b_0x1860_start:\r
fecee241 3160 defw gen.opc.ED2\r
a16ba2b0
L
3161\r
3162b_0x1862_start:\r
fecee241 3163 defb 0b3h\r
a16ba2b0
L
3164\r
3165b_0x1863_start:\r
fecee241 3166 defw l1d2ch\r
a16ba2b0
L
3167\r
3168b_0x1865_start:\r
fecee241 3169 defb 041h\r
a16ba2b0
L
3170\r
3171b_0x1866_start:\r
fecee241 3172 defw gen.opc.ED2\r
a16ba2b0
L
3173\r
3174b_0x1868_start:\r
fecee241 3175 defb 0abh\r
a16ba2b0
L
3176\r
3177b_0x1869_start:\r
fecee241 3178 defw gen.opc.ED2\r
a16ba2b0
L
3179\r
3180b_0x186B_start:\r
fecee241 3181 defb 0a3h\r
a16ba2b0
L
3182\r
3183b_0x186C_start:\r
fecee241 3184 defw l1ce4h\r
a16ba2b0
L
3185\r
3186b_0x186E_start:\r
fecee241 3187 defb 0c1h\r
a16ba2b0
L
3188\r
3189b_0x186F_start:\r
fecee241 3190 defw l1ce4h\r
a16ba2b0
L
3191\r
3192b_0x1871_start:\r
fecee241 3193 defb 0c5h\r
a16ba2b0
L
3194\r
3195b_0x1872_start:\r
fecee241 3196 defw l1c14h\r
a16ba2b0
L
3197\r
3198b_0x1874_start:\r
fecee241 3199 defb 080h\r
a16ba2b0
L
3200\r
3201b_0x1875_start:\r
fecee241 3202 defw l1c50h\r
a16ba2b0
L
3203\r
3204b_0x1877_start:\r
fecee241 3205 defb 0c0h\r
a16ba2b0
L
3206\r
3207b_0x1878_start:\r
fecee241 3208 defw gen.opc.ED2\r
a16ba2b0
L
3209\r
3210b_0x187A_start:\r
fecee241 3211 defb 04dh\r
a16ba2b0
L
3212\r
3213b_0x187B_start:\r
fecee241 3214 defw gen.opc.ED2\r
a16ba2b0
L
3215\r
3216b_0x187D_start:\r
fecee241 3217 defb 045h\r
a16ba2b0
L
3218\r
3219b_0x187E_start:\r
fecee241 3220 defw l1bd8h\r
a16ba2b0
L
3221\r
3222b_0x1880_start:\r
fecee241 3223 defb 010h\r
a16ba2b0
L
3224\r
3225b_0x1881_start:\r
fecee241 3226 defw l1b36h\r
a16ba2b0
L
3227\r
3228b_0x1883_start:\r
fecee241 3229 defb 017h\r
a16ba2b0
L
3230\r
3231b_0x1884_start:\r
fecee241 3232 defw l1bd8h\r
a16ba2b0
L
3233\r
3234b_0x1886_start:\r
fecee241 3235 defb 000h\r
a16ba2b0
L
3236\r
3237b_0x1887_start:\r
fecee241 3238 defw l1b36h\r
a16ba2b0
L
3239\r
3240b_0x1889_start:\r
fecee241 3241 defb 007h\r
a16ba2b0
L
3242\r
3243b_0x188A_start:\r
fecee241 3244 defw gen.opc.ED2\r
a16ba2b0
L
3245\r
3246b_0x188C_start:\r
fecee241 3247 defb 06fh\r
a16ba2b0
L
3248\r
3249b_0x188D_start:\r
fecee241 3250 defw l1bd8h\r
a16ba2b0
L
3251\r
3252b_0x188F_start:\r
fecee241 3253 defb 018h\r
a16ba2b0
L
3254\r
3255b_0x1890_start:\r
fecee241 3256 defw l1b36h\r
a16ba2b0
L
3257\r
3258b_0x1892_start:\r
fecee241 3259 defb 01fh\r
a16ba2b0
L
3260\r
3261b_0x1893_start:\r
fecee241 3262 defw l1bd8h\r
a16ba2b0
L
3263\r
3264b_0x1895_start:\r
fecee241 3265 defb 008h\r
a16ba2b0
L
3266\r
3267b_0x1896_start:\r
fecee241 3268 defw l1b36h\r
a16ba2b0
L
3269\r
3270b_0x1898_start:\r
fecee241 3271 defb 00fh\r
a16ba2b0
L
3272\r
3273b_0x1899_start:\r
fecee241 3274 defw gen.opc.ED2\r
a16ba2b0
L
3275\r
3276b_0x189B_start:\r
fecee241 3277 defb 067h\r
a16ba2b0
L
3278\r
3279b_0x189C_start:\r
fecee241 3280 defw l1cd5h\r
a16ba2b0
L
3281\r
3282b_0x189E_start:\r
fecee241 3283 defb 0c7h\r
a16ba2b0
L
3284\r
3285b_0x189F_start:\r
fecee241 3286 defw l1b54h\r
a16ba2b0
L
3287\r
3288b_0x18A1_start:\r
fecee241 3289 defb 098h\r
a16ba2b0
L
3290\r
3291b_0x18A2_start:\r
fecee241 3292 defw l1b36h\r
a16ba2b0
L
3293\r
3294b_0x18A4_start:\r
fecee241 3295 defb 037h\r
a16ba2b0
L
3296\r
3297b_0x18A5_start:\r
fecee241 3298 defw l1c14h\r
a16ba2b0
L
3299\r
3300b_0x18A7_start:\r
fecee241 3301 defb 0c0h\r
a16ba2b0
L
3302\r
3303b_0x18A8_start:\r
fecee241 3304 defw l1bd8h\r
a16ba2b0
L
3305\r
3306b_0x18AA_start:\r
fecee241 3307 defb 020h\r
a16ba2b0
L
3308\r
3309b_0x18AB_start:\r
fecee241 3310 defw l1bd8h\r
a16ba2b0
L
3311\r
3312b_0x18AD_start:\r
fecee241 3313 defb 028h\r
a16ba2b0
L
3314\r
3315b_0x18AE_start:\r
fecee241 3316 defw l1bd8h\r
a16ba2b0
L
3317\r
3318b_0x18B0_start:\r
fecee241 3319 defb 038h\r
a16ba2b0
L
3320\r
3321b_0x18B1_start:\r
fecee241 3322 defw l1babh\r
a16ba2b0
L
3323\r
3324b_0x18B3_start:\r
fecee241 3325 defb 090h\r
a16ba2b0
L
3326\r
3327b_0x18B4_start:\r
fecee241 3328 defw l1babh\r
a16ba2b0
L
3329\r
3330b_0x18B6_start:\r
fecee241 3331 defb 0a8h\r
a16ba2b0
L
3332\r
3333b_0x18B7_start:\r
fecee241 3334 defw A.IN0\r
a16ba2b0
L
3335\r
3336b_0x18B9_start:\r
fecee241 3337 defb 000h\r
a16ba2b0
L
3338\r
3339b_0x18BA_start:\r
fecee241 3340 defw A.MLT\r
a16ba2b0
L
3341\r
3342b_0x18BC_start:\r
fecee241
L
3343 defb 04ch\r
3344 ld b,e\r
3345 dec de\r
a16ba2b0
L
3346\r
3347b_0x18BF_start:\r
fecee241 3348 defb 08bh\r
a16ba2b0
L
3349\r
3350b_0x18C0_start:\r
fecee241 3351 defw gen.opc.ED2\r
a16ba2b0
L
3352\r
3353b_0x18C2_start:\r
fecee241 3354 defb 09bh\r
a16ba2b0
L
3355\r
3356b_0x18C3_start:\r
fecee241 3357 defw gen.opc.ED2\r
a16ba2b0
L
3358\r
3359b_0x18C5_start:\r
fecee241 3360 defb 083h\r
a16ba2b0
L
3361\r
3362b_0x18C6_start:\r
fecee241 3363 defw gen.opc.ED2\r
a16ba2b0
L
3364\r
3365b_0x18C8_start:\r
fecee241 3366 defb 093h\r
a16ba2b0
L
3367\r
3368b_0x18C9_start:\r
fecee241 3369 defw l18fdh\r
a16ba2b0
L
3370\r
3371b_0x18CB_start:\r
fecee241 3372 defb 001h\r
a16ba2b0
L
3373\r
3374b_0x18CC_start:\r
fecee241 3375 defw gen.opc.ED2\r
a16ba2b0
L
3376\r
3377b_0x18CE_start:\r
fecee241 3378 defb 076h\r
a16ba2b0
L
3379\r
3380b_0x18CF_start:\r
fecee241 3381 defw l191dh\r
a16ba2b0
L
3382\r
3383b_0x18D1_start:\r
fecee241 3384 defb 004h\r
a16ba2b0
L
3385\r
3386b_0x18D2_start:\r
fecee241 3387 defw l192ch\r
a16ba2b0
L
3388\r
3389b_0x18D4_start:\r
fecee241 3390 defb 074h\r
a16ba2b0 3391A.IN0:\r
fecee241
L
3392 call sub_1e41h\r
3393 jr nc,l1931h\r
3394 cp 006h\r
3395 jr z,l1931h\r
3396 rlca\r
3397 rlca\r
3398 rlca\r
3399 add a,b\r
3400 ld b,a\r
3401 call sub_1ed1h\r
3402 call sub_1e06h\r
a16ba2b0 3403l18e9h:\r
fecee241
L
3404 call assert_eol\r
3405 comst\r
3406 ld (iy+000h),0edh\r
3407 ld (iy+001h),b\r
3408 ld (iy+002h),l\r
a16ba2b0 3409 comend\r
fecee241
L
3410 ld c,003h\r
3411 ret\r
a16ba2b0 3412l18fdh:\r
fecee241
L
3413 call sub_1e06h\r
3414 call sub_1ed1h\r
3415 call sub_1e41h\r
3416 jr nc,l1931h\r
3417 cp 006h\r
3418 jr z,l1931h\r
3419 rlca\r
3420 rlca\r
3421 rlca\r
3422 add a,b\r
3423 ld b,a\r
3424 jr l18e9h\r
a16ba2b0 3425A.MLT:\r
fecee241
L
3426 call sub_1e2eh\r
3427 jr nc,l1931h\r
3428 add a,b\r
3429 ld b,a\r
3430 jp gen.opc.ED2\r
a16ba2b0 3431l191dh:\r
fecee241
L
3432 call sub_1e41h\r
3433 jr nc,l192ah\r
3434 rlca\r
3435 rlca\r
3436 rlca\r
3437 add a,b\r
3438 ld b,a\r
3439 jp gen.opc.ED2\r
a16ba2b0 3440l192ah:\r
fecee241 3441 ld b,064h\r
a16ba2b0 3442l192ch:\r
fecee241
L
3443 call sub_1e12h\r
3444 jr l18e9h\r
a16ba2b0 3445l1931h:\r
fecee241 3446 jp ERROR\r
a16ba2b0 3447l1934h:\r
fecee241
L
3448 call sub_1e41h\r
3449 jp c,l19bfh\r
3450 call sub_1e68h\r
3451 jp c,l1a64h\r
3452 call sub_1e2eh\r
3453 jp c,l1a93h\r
3454 call sub_1e50h\r
3455 jp c,l1af0h\r
3456 ld a,(de)\r
3457 cp 049h\r
3458 jp z,l1b0ch\r
3459 cp 052h\r
3460 jp z,l1b14h\r
3461 cp 028h\r
3462 jp nz,ERROR\r
3463 inc de\r
3464 call sub_1e2eh\r
3465 jp c,l1b23h\r
3466 call tst_EXPR\r
3467 call sub_1ed8h\r
3468 call sub_1ed1h\r
3469 call sub_1e2eh\r
3470 jr c,l19adh\r
3471 call sub_1e50h\r
3472 jr nc,l1991h\r
3473 ld b,022h\r
a16ba2b0 3474l1978h:\r
fecee241
L
3475 call assert_eol\r
3476 ld a,(pfx.IXY)\r
a16ba2b0 3477l197eh:\r
fecee241
L
3478 comst\r
3479 ld (iy+000h),a\r
3480 ld (iy+001h),b\r
3481 ld (iy+002h),l\r
3482 ld (iy+003h),h\r
a16ba2b0 3483 comend\r
fecee241
L
3484 ld c,004h\r
3485 ret\r
a16ba2b0 3486l1991h:\r
fecee241
L
3487 ld a,(de)\r
3488 cp 041h\r
3489 jp nz,ERROR\r
3490 inc de\r
3491 ld b,032h\r
a16ba2b0 3492l199ah:\r
fecee241
L
3493 call assert_eol\r
3494 comst\r
3495 ld (iy+000h),b\r
3496 ld (iy+001h),l\r
3497 ld (iy+002h),h\r
a16ba2b0 3498 comend\r
fecee241
L
3499 ld c,003h\r
3500 ret\r
a16ba2b0 3501l19adh:\r
fecee241
L
3502 cp 020h\r
3503 jr z,l19bbh\r
3504 add a,043h\r
3505 ld b,a\r
a16ba2b0 3506l19b4h:\r
fecee241
L
3507 call assert_eol\r
3508 ld a,0edh\r
3509 jr l197eh\r
a16ba2b0 3510l19bbh:\r
fecee241
L
3511 ld b,022h\r
3512 jr l199ah\r
a16ba2b0 3513l19bfh:\r
fecee241
L
3514 ld b,a\r
3515 call sub_1ed1h\r
3516 call sub_1e41h\r
3517 jr nc,l19dbh\r
3518 push af\r
3519 ld a,b\r
3520 rlca\r
3521 rlca\r
3522 rlca\r
3523 ld b,a\r
3524 pop af\r
3525 add a,b\r
3526 add a,040h\r
3527 cp 076h\r
3528 jp z,ERROR\r
a16ba2b0 3529l19d7h:\r
fecee241
L
3530 ld b,a\r
3531 jp l1b36h\r
a16ba2b0 3532l19dbh:\r
fecee241
L
3533 call sub_1e68h\r
3534 jr nc,l1a02h\r
3535 ld a,b\r
3536 rlca\r
3537 rlca\r
3538 rlca\r
3539 add a,046h\r
3540 cp 076h\r
3541 jp z,ERROR\r
a16ba2b0 3542l19ebh:\r
fecee241
L
3543 ld b,a\r
3544 call assert_eol\r
3545 ld a,(pfx.IXY)\r
3546 comst\r
3547 ld (iy+000h),a\r
3548 ld (iy+001h),b\r
3549 ld (iy+002h),c\r
a16ba2b0 3550 comend\r
fecee241
L
3551 ld c,003h\r
3552 ret\r
a16ba2b0 3553l1a02h:\r
fecee241
L
3554 ld a,(de)\r
3555 cp 'I'\r
3556 jr z,l1a15h\r
3557 cp 'R'\r
3558 jr nz,l1a21h\r
3559 ld a,b\r
3560 cp 007h\r
3561 jp nz,ERROR\r
3562 ld b,05fh\r
3563 jr l1a1dh\r
a16ba2b0 3564l1a15h:\r
fecee241
L
3565 ld a,b\r
3566 cp 007h\r
3567 jp nz,ERROR\r
3568 ld b,057h\r
a16ba2b0 3569l1a1dh:\r
fecee241
L
3570 inc de\r
3571 jp gen.opc.ED2\r
a16ba2b0 3572l1a21h:\r
fecee241
L
3573 cp '('\r
3574 jr z,l1a3fh\r
3575 call sub_1e12h\r
a16ba2b0 3576 ld a,b ;1a28 ld r,nn\r
fecee241
L
3577 rlca\r
3578 rlca\r
3579 rlca\r
3580 add a,006h\r
a16ba2b0 3581l1a2eh:\r
fecee241 3582 ld b,a\r
a16ba2b0 3583l1a2fh:\r
fecee241
L
3584 call assert_eol\r
3585 comst\r
3586 ld (iy+000h),b\r
3587 ld (iy+001h),l\r
a16ba2b0 3588 comend\r
fecee241
L
3589 ld c,002h\r
3590 ret\r
a16ba2b0 3591l1a3fh:\r
fecee241
L
3592 inc de\r
3593 ld a,b\r
3594 cp 007h\r
3595 jp nz,ERROR\r
3596 call sub_1e2eh\r
3597 jr nc,l1a59h\r
3598 cp 030h\r
3599 jp nc,ERROR\r
3600 add a,00ah\r
3601 ld b,a\r
3602 call sub_1ed8h\r
3603 jp l1b36h\r
a16ba2b0 3604l1a59h:\r
fecee241
L
3605 call tst_EXPR\r
3606 call sub_1ed8h\r
3607 ld b,03ah\r
3608 jp l199ah\r
a16ba2b0 3609l1a64h:\r
fecee241
L
3610 call sub_1ed1h\r
3611 call sub_1e41h\r
3612 jr nc,l1a76h\r
3613 cp 006h\r
3614 jp z,ERROR\r
3615 add a,070h\r
3616 jp l19ebh\r
a16ba2b0 3617l1a76h:\r
fecee241
L
3618 call sub_1e12h\r
3619 call assert_eol\r
3620 ld a,(pfx.IXY)\r
3621 comst\r
a16ba2b0 3622 ld (iy+000h),a ;1a83 dd/fd\r
fecee241 3623 ld (iy+001h),036h\r
a16ba2b0
L
3624 ld (iy+002h),c ;1a8a displacement\r
3625 ld (iy+003h),l ;1a8d nn\r
3626 comend\r
fecee241
L
3627 ld c,4\r
3628 ret\r
a16ba2b0 3629l1a93h:\r
fecee241
L
3630 ld b,a\r
3631 call sub_1ed1h\r
3632 ld hl,t_HL.AF\r
3633 call sub_0a23h\r
3634 jr c,l1abeh\r
3635 call sub_1e50h\r
3636 jr nc,l1ac7h\r
3637 ld a,b\r
3638 cp 030h\r
3639 jr nz,l1b20h\r
3640 ld b,0f9h\r
a16ba2b0 3641l1aabh:\r
fecee241
L
3642 call assert_eol\r
3643 ld a,(pfx.IXY)\r
3644 comst\r
3645 ld (iy+000h),a\r
3646 ld (iy+001h),b\r
a16ba2b0 3647 comend\r
fecee241
L
3648 ld c,002h\r
3649 ret\r
a16ba2b0 3650l1abeh:\r
fecee241
L
3651 ld a,b\r
3652 cp 030h\r
3653 jr nz,l1b20h\r
3654 ld b,0f9h\r
3655 jr l1b36h\r
a16ba2b0 3656l1ac7h:\r
fecee241
L
3657 ld a,(de)\r
3658 cp 028h\r
3659 jr nz,l1ae3h\r
3660 inc de\r
3661 call tst_EXPR\r
3662 call sub_1ed8h\r
3663 ld a,b\r
3664 cp 020h\r
3665 jr z,l1adeh\r
3666 add a,04bh\r
3667 ld b,a\r
3668 jp l19b4h\r
a16ba2b0 3669l1adeh:\r
fecee241
L
3670 ld b,02ah\r
3671 jp l199ah\r
a16ba2b0 3672l1ae3h:\r
fecee241
L
3673 call tst_EXPR\r
3674 call assert_eol\r
3675 ld a,001h\r
3676 add a,b\r
3677 ld b,a\r
3678 jp l199ah\r
a16ba2b0 3679l1af0h:\r
fecee241
L
3680 call sub_1ed1h\r
3681 ld a,(de)\r
3682 cp 028h\r
3683 jr nz,l1b04h\r
3684 inc de\r
3685 call tst_EXPR\r
3686 call sub_1ed8h\r
3687 ld b,02ah\r
3688 jp l1978h\r
a16ba2b0 3689l1b04h:\r
fecee241
L
3690 call tst_EXPR\r
3691 ld b,021h\r
3692 jp l1978h\r
a16ba2b0 3693l1b0ch:\r
fecee241
L
3694 inc de\r
3695 call sub_1ed1h\r
3696 ld b,047h\r
3697 jr l1b1ah\r
a16ba2b0 3698l1b14h:\r
fecee241
L
3699 inc de\r
3700 call sub_1ed1h\r
3701 ld b,04fh\r
a16ba2b0 3702l1b1ah:\r
fecee241
L
3703 ld a,(de)\r
3704 inc de\r
3705 cp 041h\r
3706 jr z,gen.opc.ED2\r
a16ba2b0 3707l1b20h:\r
fecee241 3708 jp ERROR\r
a16ba2b0 3709l1b23h:\r
fecee241
L
3710 cp 020h\r
3711 jr nc,l1b20h\r
3712 add a,002h\r
3713 ld b,a\r
3714 call sub_1ed8h\r
3715 call sub_1ed1h\r
3716 ld a,(de)\r
3717 cp 041h\r
3718 jr nz,l1b20h\r
3719 inc de\r
a16ba2b0 3720l1b36h:\r
fecee241
L
3721 call assert_eol\r
3722 comst\r
3723 ld (iy+000h),b\r
a16ba2b0 3724 comend\r
fecee241
L
3725 ld c,001h\r
3726 ret\r
a16ba2b0 3727gen.opc.ED2:\r
fecee241
L
3728 call assert_eol\r
3729 comst\r
3730 ld (iy+000h),0edh\r
3731 ld (iy+001h),b\r
a16ba2b0 3732 comend\r
fecee241
L
3733 ld c,002h\r
3734 ret\r
a16ba2b0 3735l1b54h:\r
fecee241
L
3736 ld hl,t_HL.AF\r
3737 call sub_0a23h\r
3738 jr nc,l1babh\r
3739 call sub_1ed1h\r
3740 call sub_1e2eh\r
3741 jp nc,ERROR\r
3742 push af\r
3743 ld a,b\r
3744 cp 088h\r
3745 ld b,04ah\r
3746 jr z,l1b6fh\r
3747 ld b,042h\r
a16ba2b0 3748l1b6fh:\r
fecee241
L
3749 pop af\r
3750 add a,b\r
a16ba2b0 3751l1b71h:\r
fecee241
L
3752 ld b,a\r
3753 jr gen.opc.ED2\r
a16ba2b0 3754l1b74h:\r
fecee241
L
3755 ld hl,t_HL.AF\r
3756 call sub_0a23h\r
3757 jr c,l1b9dh\r
3758 call sub_1e50h\r
3759 jr nc,l1babh\r
3760 call sub_1ed1h\r
3761 ld hl,t_BC.DE.IX.SP\r
3762 ld a,(pfx.IXY)\r
3763 cp 0fdh\r
3764 jr nz,l1b91h\r
3765 ld hl,t_BC.DE.IY.SP\r
a16ba2b0 3766l1b91h:\r
fecee241
L
3767 call sub_1e2bh\r
3768 jp nc,ERROR\r
3769 add a,009h\r
a16ba2b0 3770l1b99h:\r
fecee241
L
3771 ld b,a\r
3772 jp l1aabh\r
a16ba2b0 3773l1b9dh:\r
fecee241
L
3774 call sub_1ed1h\r
3775 call sub_1e2eh\r
3776 jp nc,ERROR\r
3777 add a,009h\r
3778 jp l19d7h\r
a16ba2b0 3779l1babh:\r
fecee241
L
3780 ld a,(de)\r
3781 cp 041h\r
3782 jr nz,l1bbbh\r
3783 push de\r
3784 inc de\r
3785 call skip_to_nextarg\r
3786 jr z,l1bbah\r
3787 pop de\r
3788 jr l1bbbh\r
a16ba2b0 3789l1bbah:\r
fecee241 3790 pop af\r
a16ba2b0 3791l1bbbh:\r
fecee241
L
3792 call sub_1e41h\r
3793 jr c,l1bceh\r
3794 call sub_1e68h\r
3795 jr c,l1bd2h\r
3796 call sub_1e12h\r
3797 ld a,b\r
3798 add a,046h\r
3799 jp l1a2eh\r
a16ba2b0 3800l1bceh:\r
fecee241
L
3801 add a,b\r
3802 jp l19d7h\r
a16ba2b0 3803l1bd2h:\r
fecee241
L
3804 ld a,b\r
3805 add a,006h\r
3806 jp l19ebh\r
a16ba2b0 3807l1bd8h:\r
fecee241
L
3808 call sub_1e41h\r
3809 jr c,l1c01h\r
3810 call sub_1e68h\r
3811 jp nc,ERROR\r
3812 ld a,b\r
3813 add a,006h\r
3814 ld b,a\r
a16ba2b0 3815l1be7h:\r
fecee241
L
3816 call assert_eol\r
3817 ld a,(pfx.IXY)\r
3818 comst\r
3819 ld (iy+000h),a\r
3820 ld (iy+001h),0cbh\r
3821 ld (iy+002h),c\r
3822 ld (iy+003h),b\r
a16ba2b0 3823 comend\r
fecee241
L
3824 ld c,004h\r
3825 ret\r
a16ba2b0 3826l1c01h:\r
fecee241 3827 add a,b\r
a16ba2b0 3828l1c02h:\r
fecee241
L
3829 ld b,a\r
3830 call assert_eol\r
3831 comst\r
3832 ld (iy+000h),0cbh\r
3833 ld (iy+001h),b\r
a16ba2b0 3834 comend\r
fecee241
L
3835 ld c,002h\r
3836 ret\r
a16ba2b0 3837l1c14h:\r
fecee241
L
3838 call sub_1de6h\r
3839 call sub_1ed1h\r
3840 call sub_1e41h\r
3841 jr c,l1c2fh\r
3842 call sub_1e68h\r
3843 jp nc,ERROR\r
3844 ld a,l\r
3845 rlca\r
3846 rlca\r
3847 rlca\r
3848 add a,006h\r
3849 add a,b\r
3850 ld b,a\r
3851 jr l1be7h\r
a16ba2b0 3852l1c2fh:\r
fecee241
L
3853 add a,b\r
3854 ld b,a\r
3855 ld a,l\r
3856 rlca\r
3857 rlca\r
3858 rlca\r
3859 add a,b\r
3860 jr l1c02h\r
a16ba2b0 3861l1c38h:\r
fecee241
L
3862 push de\r
3863 call sub_1eb8h\r
3864 jr nc,l1c47h\r
3865 add a,b\r
3866 ld b,a\r
3867 call skip_to_nextarg\r
3868 jr z,l1c49h\r
3869 pop de\r
3870 push de\r
a16ba2b0 3871l1c47h:\r
fecee241 3872 ld b,0cdh\r
a16ba2b0 3873l1c49h:\r
fecee241
L
3874 pop af\r
3875 call tst_EXPR\r
3876 jp l199ah\r
a16ba2b0 3877l1c50h:\r
fecee241
L
3878 call sub_1eb8h\r
3879 jr nc,l1c59h\r
3880 add a,b\r
3881 ld b,a\r
3882 jr l1c5bh\r
a16ba2b0 3883l1c59h:\r
fecee241 3884 ld b,0c9h\r
a16ba2b0 3885l1c5bh:\r
fecee241 3886 jp l1b36h\r
a16ba2b0 3887l1c5eh:\r
fecee241
L
3888 push de\r
3889 call sub_1eb8h\r
3890 jr c,l1c71h\r
a16ba2b0 3891l1c64h:\r
fecee241
L
3892 pop de\r
3893 ld hl,b_0x1C97_start\r
3894 call sub_0a15h\r
3895 jr c,l1c7fh\r
3896 ld b,0c3h\r
3897 jr l1c79h\r
a16ba2b0 3898l1c71h:\r
fecee241
L
3899 add a,b\r
3900 ld b,a\r
3901 call skip_to_nextarg\r
3902 jr nz,l1c64h\r
3903 pop af\r
a16ba2b0 3904l1c79h:\r
fecee241
L
3905 call tst_EXPR\r
3906 jp l199ah\r
a16ba2b0 3907l1c7fh:\r
fecee241
L
3908 call assert_eol\r
3909 ld a,b\r
3910 and a\r
3911 jr nz,l1c8bh\r
3912 ld b,0e9h\r
3913 jp l1b36h\r
a16ba2b0 3914l1c8bh:\r
fecee241
L
3915 ld b,0ddh\r
3916 dec a\r
3917 jr z,l1c92h\r
3918 ld b,0fdh\r
a16ba2b0 3919l1c92h:\r
fecee241
L
3920 ld l,0e9h\r
3921 jp l1a2fh\r
a16ba2b0
L
3922\r
3923b_0x1C97_start:\r
3924 DC '(HL)'\r
3925 DC '(IX)'\r
3926 DC '(IY)'\r
3927 DB 0\r
3928\r
3929l1ca4h:\r
fecee241
L
3930 call skip_to_nextarg\r
3931 ld b,010h\r
3932 jr l1cb9h\r
a16ba2b0 3933l1cabh:\r
fecee241
L
3934 call sub_1ebfh\r
3935 jr c,l1cb4h\r
3936 ld b,018h\r
3937 jr l1cb9h\r
a16ba2b0 3938l1cb4h:\r
fecee241
L
3939 add a,b\r
3940 ld b,a\r
3941 call sub_1ed1h\r
a16ba2b0 3942l1cb9h:\r
fecee241
L
3943 call sub_1defh\r
3944 jp l1a2fh\r
a16ba2b0 3945l1cbfh:\r
fecee241
L
3946 call sub_1e12h\r
3947 ld a,l\r
3948 cp 003h\r
3949 jr nc,l1d23h\r
3950 and a\r
3951 jr z,l1cd2h\r
3952 ld b,056h\r
3953 cp 001h\r
3954 jr z,l1cd2h\r
3955 ld b,05eh\r
a16ba2b0 3956l1cd2h:\r
fecee241 3957 jp gen.opc.ED2\r
a16ba2b0 3958l1cd5h:\r
fecee241
L
3959 call sub_1e12h\r
3960 ld a,l\r
3961 push af\r
3962 add a,b\r
3963 ld b,a\r
3964 pop af\r
3965 and 0c7h\r
3966 jr nz,l1d23h\r
3967 jp l1b36h\r
a16ba2b0 3968l1ce4h:\r
fecee241
L
3969 call sub_1e50h\r
3970 jr c,l1cf2h\r
3971 call sub_1e25h\r
3972 jr nc,l1d23h\r
3973 add a,b\r
3974 jp l19d7h\r
a16ba2b0 3975l1cf2h:\r
fecee241
L
3976 ld a,b\r
3977 add a,020h\r
3978 jp l1b99h\r
a16ba2b0 3979l1cf8h:\r
fecee241
L
3980 call sub_1e41h\r
3981 jr nc,l1d23h\r
3982 cp 006h\r
3983 jr z,l1d23h\r
3984 rlca\r
3985 rlca\r
3986 rlca\r
3987 add a,b\r
3988 ld b,a\r
3989 cp 078h\r
3990 jr nz,l1d1ah\r
3991 call sub_1ed1h\r
3992 call sub_1d26h\r
3993 jr c,l1d20h\r
3994 call sub_1e06h\r
3995 ld b,0dbh\r
3996 jp l1a2fh\r
a16ba2b0 3997l1d1ah:\r
fecee241
L
3998 call sub_1ed1h\r
3999 call sub_1d26h\r
a16ba2b0 4000l1d20h:\r
fecee241 4001 jp c,gen.opc.ED2\r
a16ba2b0 4002l1d23h:\r
fecee241 4003 jp ERROR\r
a16ba2b0 4004sub_1d26h:\r
fecee241
L
4005 ld hl,t__C_\r
4006 jp sub_0a23h\r
a16ba2b0 4007l1d2ch:\r
fecee241
L
4008 call sub_1d26h\r
4009 jr nc,l1d44h\r
4010 call sub_1ed1h\r
4011 call sub_1e41h\r
4012 jr nc,l1d23h\r
4013 cp 006h\r
4014 jr z,l1d23h\r
4015 rlca\r
4016 rlca\r
4017 rlca\r
4018 add a,b\r
4019 jp l1b71h\r
a16ba2b0 4020l1d44h:\r
fecee241
L
4021 call sub_1e06h\r
4022 call sub_1ed1h\r
4023 cp 041h\r
4024 jr nz,l1d23h\r
4025 inc de\r
4026 ld b,0d3h\r
4027 jp l1a2fh\r
a16ba2b0 4028l1d54h:\r
fecee241
L
4029 ld hl,b_0x1D80_start\r
4030 call sub_0a15h\r
4031 jp nc,ERROR\r
4032 ld c,b\r
4033 call assert_eol\r
4034 ld b,000h\r
4035 ld hl,b_0x1DA1_start\r
4036 add hl,bc\r
4037 add hl,bc\r
4038 ld a,(hl)\r
4039 comst\r
4040 ld (iy+000h),a\r
a16ba2b0 4041 comend\r
fecee241
L
4042 ld c,001h\r
4043 inc hl\r
4044 ld a,(hl)\r
4045 and a\r
4046 ret z\r
4047 comst\r
4048 ld (iy+001h),a\r
a16ba2b0 4049 comend\r
fecee241
L
4050 ld c,002h\r
4051 ret\r
a16ba2b0
L
4052\r
4053b_0x1D80_start:\r
4054 DC 'AF,AF'''\r
4055l1d86h:\r
4056 DC 'DE,HL'\r
4057 DC '(SP),HL'\r
4058 DC '(SP),IX'\r
4059 DC '(SP),IY'\r
fecee241 4060 db 000h\r
a16ba2b0
L
4061\r
4062b_0x1DA1_start:\r
fecee241
L
4063 db 008h\r
4064 db 000h\r
4065 db 0ebh\r
4066 db 000h\r
4067 db 0e3h\r
4068 db 000h\r
4069 db 0ddh\r
4070 db 0e3h\r
4071 db 0fdh\r
4072 db 0e3h\r
a16ba2b0 4073l1dabh:\r
fecee241
L
4074 call sub_1e50h\r
4075 jr c,l1dc6h\r
4076 call sub_1e2eh\r
4077 jr c,l1dd2h\r
4078 call sub_1e41h\r
4079 jr c,l1ddfh\r
4080 call sub_1e68h\r
4081 jp nc,ERROR\r
4082 ld a,b\r
4083 add a,030h\r
4084 jp l19ebh\r
a16ba2b0 4085l1dc6h:\r
fecee241
L
4086 ld a,b\r
4087 ld b,023h\r
4088 cp 004h\r
4089 jr z,l1dcfh\r
4090 ld b,02bh\r
a16ba2b0 4091l1dcfh:\r
fecee241 4092 jp l1aabh\r
a16ba2b0 4093l1dd2h:\r
fecee241
L
4094 push af\r
4095 ld a,b\r
4096 ld b,003h\r
4097 cp 004h\r
4098 jr z,l1ddch\r
4099 ld b,00bh\r
a16ba2b0 4100l1ddch:\r
fecee241
L
4101 pop af\r
4102 jr l1de2h\r
a16ba2b0 4103l1ddfh:\r
fecee241
L
4104 rlca\r
4105 rlca\r
4106 rlca\r
a16ba2b0 4107l1de2h:\r
fecee241
L
4108 add a,b\r
4109 jp l19d7h\r
a16ba2b0 4110sub_1de6h:\r
fecee241
L
4111 call sub_1e12h\r
4112 ld a,l\r
4113 cp 008h\r
4114 jr nc,error1\r
4115 ret\r
a16ba2b0 4116sub_1defh:\r
fecee241
L
4117 call tst_EXPR\r
4118 push bc\r
4119 push iy\r
4120 pop bc\r
4121 and a\r
4122 sbc hl,bc\r
4123 dec hl\r
4124 dec hl\r
4125 pop bc\r
4126 call sub_1e15h\r
4127 ld a,h\r
4128 xor l\r
4129 bit 7,a\r
4130 jr nz,error1\r
4131 ret\r
a16ba2b0 4132sub_1e06h:\r
fecee241
L
4133 ld a,(de)\r
4134 cp 028h\r
4135 jr nz,sub_1e12h\r
4136 inc de\r
4137 call sub_1e12h\r
4138 jp sub_1ed8h\r
a16ba2b0
L
4139\r
4140sub_1e12h:\r
fecee241 4141 call tst_EXPR\r
a16ba2b0 4142sub_1e15h:\r
fecee241
L
4143 ld a,h\r
4144 and a\r
4145 ret z\r
4146 inc a\r
4147 ret z\r
4148 jr error1\r
a16ba2b0
L
4149\r
4150tst_EXPR:\r
fecee241
L
4151 push bc\r
4152 call EXPR\r
4153 pop bc\r
4154 ret nc\r
a16ba2b0 4155error1:\r
fecee241 4156 jp ERROR\r
a16ba2b0 4157sub_1e25h:\r
fecee241
L
4158 push hl\r
4159 ld hl,t_BC.DE.HL.AF\r
4160 jr l1e32h\r
a16ba2b0 4161sub_1e2bh:\r
fecee241
L
4162 push hl\r
4163 jr l1e32h\r
a16ba2b0 4164sub_1e2eh:\r
fecee241
L
4165 push hl\r
4166 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 4167l1e32h:\r
fecee241
L
4168 push bc\r
4169 call sub_0a15h\r
4170 jr nc,l1e3eh\r
4171 ld a,b\r
4172 rlca\r
4173 rlca\r
4174 rlca\r
4175 rlca\r
4176 scf\r
a16ba2b0 4177l1e3eh:\r
fecee241
L
4178 pop bc\r
4179 pop hl\r
4180 ret\r
a16ba2b0 4181sub_1e41h:\r
fecee241
L
4182 call SKIPBL\r
4183 push bc\r
4184 push hl\r
4185 ld hl,t_BCDEHL_HL_A\r
4186 call sub_0a15h\r
4187 ld a,b\r
4188 pop hl\r
4189 pop bc\r
4190 ret\r
a16ba2b0 4191sub_1e50h:\r
fecee241
L
4192 push hl\r
4193 push bc\r
4194 ld hl,t_IX.IY\r
4195 call sub_0a15h\r
4196 jr nc,l1e65h\r
4197 ld a,0ddh\r
4198 dec b\r
4199 jr nz,l1e61h\r
4200 ld a,0fdh\r
a16ba2b0 4201l1e61h:\r
fecee241
L
4202 ld (pfx.IXY),a\r
4203 scf\r
a16ba2b0 4204l1e65h:\r
fecee241
L
4205 pop bc\r
4206 pop hl\r
4207 ret\r
a16ba2b0 4208sub_1e68h:\r
fecee241
L
4209 push hl\r
4210 push bc\r
4211 ld a,(de)\r
4212 cp '('\r
4213 jr nz,l1eb4h\r
4214 push de\r
4215 inc de\r
4216 ld hl,t_IX.IY\r
4217 call sub_0a15h\r
4218 jr nc,l1eb3h\r
4219 pop af\r
4220 ld a,0ddh\r
4221 dec b\r
4222 jr nz,l1e81h\r
4223 ld a,0fdh\r
a16ba2b0 4224l1e81h:\r
fecee241
L
4225 ld (pfx.IXY),a\r
4226 ld a,(de)\r
4227 cp '+'\r
4228 jr z,l1e95h\r
4229 cp ')'\r
4230 ld hl,0\r
4231 jr z,l1eadh\r
4232 cp '-'\r
4233 jp nz,ERROR\r
a16ba2b0 4234l1e95h:\r
fecee241
L
4235 push af\r
4236 inc de\r
a16ba2b0 4237 call sub_1e12h ;1e97 get displacement\r
fecee241
L
4238 pop af\r
4239 cp '+'\r
4240 jr z,l1ea7h\r
4241 ld b,h\r
4242 ld c,l\r
4243 ld hl,0\r
4244 and a\r
4245 sbc hl,bc\r
a16ba2b0 4246l1ea7h:\r
fecee241
L
4247 ld a,(de)\r
4248 cp ')'\r
4249 jp nz,ERROR\r
a16ba2b0 4250l1eadh:\r
fecee241
L
4251 inc de\r
4252 pop bc\r
4253 ld c,l\r
4254 pop hl\r
4255 scf\r
4256 ret\r
a16ba2b0 4257l1eb3h:\r
fecee241 4258 pop de\r
a16ba2b0 4259l1eb4h:\r
fecee241
L
4260 pop bc\r
4261 pop hl\r
4262 and a\r
4263 ret\r
a16ba2b0 4264sub_1eb8h:\r
fecee241
L
4265 ld hl,t_tstfl_ZCPS\r
4266 ld c,007h\r
4267 jr l1ec4h\r
a16ba2b0 4268sub_1ebfh:\r
fecee241
L
4269 ld hl,t_tstfl_ZC\r
4270 ld c,003h\r
a16ba2b0 4271l1ec4h:\r
fecee241
L
4272 push bc\r
4273 call sub_0a15h\r
4274 ld a,b\r
4275 pop bc\r
4276 ret nc\r
4277 and c\r
4278 rlca\r
4279 rlca\r
4280 rlca\r
4281 scf\r
4282 ret\r
a16ba2b0 4283sub_1ed1h:\r
fecee241
L
4284 call skip_to_nextarg\r
4285 ret z\r
a16ba2b0 4286l1ed5h:\r
fecee241 4287 jp ERROR\r
a16ba2b0 4288sub_1ed8h:\r
fecee241
L
4289 ld a,(de)\r
4290 cp 029h\r
4291 jr nz,l1ed5h\r
4292 inc de\r
4293 ret\r
a16ba2b0 4294CMD.L:\r
fecee241
L
4295 ld hl,CMD.L\r
4296 ld (CMD_RPT),hl\r
4297 call EXPR\r
4298 jr nc,l1eedh\r
4299 ld hl,(lst.L)\r
a16ba2b0 4300l1eedh:\r
fecee241
L
4301 push hl\r
4302 pop iy\r
4303 call skip_to_nextarg\r
4304 call sub_0aa5h\r
4305 jr nc,l1f17h\r
4306 call assert_eol\r
4307 ld b,010h\r
a16ba2b0 4308l1efdh:\r
fecee241
L
4309 push bc\r
4310 push iy\r
4311 pop hl\r
4312 push hl\r
4313 call sub_1f3fh\r
4314 call CRLF\r
4315 pop iy\r
4316 ld c,b\r
4317 ld b,000h\r
4318 add iy,bc\r
4319 ld (lst.L),iy\r
4320 pop bc\r
4321 djnz l1efdh\r
4322 ret\r
a16ba2b0 4323l1f17h:\r
fecee241
L
4324 call assert_eol\r
4325 ld h,b\r
4326 ld l,c\r
4327 ld a,b\r
4328 or c\r
4329 jr nz,l1f21h\r
4330 dec hl\r
a16ba2b0 4331l1f21h:\r
fecee241
L
4332 push hl\r
4333 push iy\r
4334 pop hl\r
4335 push hl\r
4336 call sub_1f3fh\r
4337 call CRLF\r
4338 pop iy\r
4339 ld e,b\r
4340 ld d,000h\r
4341 add iy,de\r
4342 ld (lst.L),iy\r
4343 pop hl\r
4344 and a\r
4345 sbc hl,de\r
4346 ret z\r
4347 ret c\r
4348 jr l1f21h\r
a16ba2b0 4349sub_1f3fh:\r
fecee241
L
4350 call out.hl.@\r
4351 call z,OUTBL\r
4352 call OUTBL\r
4353 sub a\r
4354 ld (CON.COL),a\r
4355 call sub_1f77h\r
4356 and a\r
4357 ret z\r
a16ba2b0 4358l1f51h:\r
fecee241
L
4359 call OUTBL\r
4360 ld a,(CON.COL)\r
4361 cp 010h\r
4362 jr c,l1f51h\r
a16ba2b0 4363sub_1f5bh:\r
fecee241
L
4364 ld de,(offs.@)\r
4365 ld a,d\r
4366 or e\r
4367 ret z\r
4368 ld a,'('\r
4369 call OUTCHAR\r
4370 ld a,'@'\r
4371 call OUTCHAR\r
4372 and a\r
4373 sbc hl,de\r
4374 call out.hl\r
4375 ld a,')'\r
4376 jp OUTCHAR\r
a16ba2b0 4377sub_1f77h:\r
fecee241
L
4378 sub a\r
4379 ld (XBE03),a\r
4380 call sub_1f9eh\r
4381 jr nc,l1f91h\r
4382 push bc\r
4383 call sub_2581h\r
4384 ex de,hl\r
4385 call sub_1fdbh\r
4386 pop bc\r
4387 ld a,(XBE03)\r
4388 ld hl,(XBE01)\r
4389 scf\r
4390 ret\r
a16ba2b0 4391l1f91h:\r
fecee241
L
4392 ld hl,b_0x1F9B_start\r
4393 call PSTR\r
4394 ld b,001h\r
4395 sub a\r
4396 ret\r
a16ba2b0
L
4397\r
4398b_0x1F9B_start:\r
4399 DC '???'\r
fecee241 4400\r
a16ba2b0 4401sub_1f9eh:\r
fecee241
L
4402 sub a\r
4403 ld (is.pfx.IXY),a\r
4404 comst\r
4405 ld a,(iy+000h)\r
a16ba2b0 4406 comend\r
fecee241
L
4407 cp 0edh\r
4408 jp z,disas_pfx.ED\r
4409 cp 0ddh\r
4410 jr z,l1fc5h\r
4411 cp 0fdh\r
4412 jr z,l1fc9h\r
a16ba2b0 4413sub_1fb6h:\r
fecee241
L
4414 comst\r
4415 ld a,(iy+000h)\r
a16ba2b0 4416 comend\r
fecee241
L
4417 cp 0cbh\r
4418 jp z,l2061h\r
4419 jp l2078h\r
a16ba2b0 4420l1fc5h:\r
fecee241
L
4421 ld a,001h\r
4422 jr l1fcbh\r
a16ba2b0 4423l1fc9h:\r
fecee241 4424 ld a,002h\r
a16ba2b0 4425l1fcbh:\r
fecee241
L
4426 ld (is.pfx.IXY),a\r
4427 call sub_1fdch\r
4428 ret nc\r
4429 push bc\r
4430 call sub_1fb6h\r
4431 pop af\r
4432 add a,b\r
4433 ld b,a\r
4434 scf\r
4435 ret\r
a16ba2b0
L
4436\r
4437sub_1fdbh:\r
fecee241 4438 jp (hl)\r
a16ba2b0
L
4439\r
4440sub_1fdch:\r
fecee241
L
4441 inc iy\r
4442 ld hl,b_0x2011_start\r
4443 call sub_20bbh\r
4444 ld b,002h\r
4445 ret c\r
4446 ld hl,l202ch\r
4447 call sub_20bbh\r
4448 ld b,001h\r
4449 ret c\r
4450 comst\r
4451 ld a,(iy+000h)\r
a16ba2b0 4452 comend\r
fecee241
L
4453 cp 0cbh\r
4454 jr nz,l200fh\r
4455 comst\r
4456 ld a,(iy+002h)\r
a16ba2b0 4457 comend\r
fecee241
L
4458 cp 036h\r
4459 ret z\r
4460 and 007h\r
4461 cp 006h\r
4462 jr nz,l200fh\r
4463 ld b,002h\r
4464 scf\r
4465 ret\r
a16ba2b0 4466l200fh:\r
fecee241
L
4467 and a\r
4468 ret\r
a16ba2b0
L
4469\r
4470b_0x2011_start:\r
fecee241
L
4471 db 034h\r
4472 db 035h\r
4473 db 036h\r
4474 db 046h\r
4475 db 04eh\r
4476 db 056h\r
4477 db 05eh\r
4478 db 066h\r
4479 db 06eh\r
4480 db 070h\r
4481 db 071h\r
4482 db 072h\r
4483 db 073h\r
4484 db 074h\r
4485 db 075h\r
4486 db 076h\r
4487 db 077h\r
4488 db 07eh\r
4489 db 086h\r
4490 db 08eh\r
4491 db 096h\r
4492 db 09eh\r
4493 db 0a6h\r
4494 db 0aeh\r
4495 db 0b6h\r
4496 db 0beh\r
4497 db 000h\r
a16ba2b0 4498l202ch:\r
fecee241
L
4499 db 009h\r
4500 db 019h\r
4501 db 021h\r
4502 db 022h\r
4503 db 023h\r
4504 db 029h\r
4505 db 02ah\r
4506 db 02bh\r
4507 db 039h\r
4508 db 0e1h\r
4509 db 0e3h\r
4510 db 0e5h\r
4511 db 0e9h\r
4512 db 0f9h\r
4513 db 000h\r
a16ba2b0
L
4514\r
4515disas_pfx.ED:\r
fecee241
L
4516 inc iy\r
4517 ld hl,b_0x2200_start\r
4518 call sub_209dh\r
4519 ld b,002h\r
4520 ret c\r
4521 ld hl,l2235h\r
4522 call lookup_opc\r
4523 ld b,002h\r
4524 ret c\r
4525 ld hl,l228bh\r
4526 call lookup_opc\r
4527 ld b,003h\r
4528 ret c\r
4529 ld hl,l22b4h\r
4530 call lookup_opc\r
4531 ld b,004h\r
4532 ret\r
a16ba2b0 4533l2061h:\r
fecee241
L
4534 push iy\r
4535 inc iy\r
4536 ld a,(is.pfx.IXY)\r
4537 and a\r
4538 jr z,l206dh\r
4539 inc iy\r
a16ba2b0 4540l206dh:\r
fecee241
L
4541 ld hl,l22c9h\r
4542 call lookup_opc\r
4543 pop iy\r
4544 ld b,002h\r
4545 ret\r
a16ba2b0 4546l2078h:\r
fecee241
L
4547 ld hl,b_0x218B_start\r
4548 call lookup_opc\r
4549 ld b,002h\r
4550 ret c\r
4551 ld hl,b_0x20ED_start\r
4552 call sub_209dh\r
4553 ld b,001h\r
4554 ret c\r
4555 ld hl,b_0x2108_start\r
4556 call lookup_opc\r
4557 ld b,001h\r
4558 ret c\r
4559 ld hl,b_0x21D2_start\r
4560 call lookup_opc\r
4561 ret nc\r
4562 ld b,003h\r
4563 ret\r
a16ba2b0
L
4564\r
4565sub_209dh:\r
fecee241
L
4566 ld a,(hl)\r
4567 cp 0ffh\r
4568 ret z\r
4569 comst\r
4570 cp (iy+000h)\r
a16ba2b0 4571 comend\r
fecee241
L
4572 jr z,l20aeh\r
4573 inc hl\r
4574 inc hl\r
4575 jr sub_209dh\r
a16ba2b0 4576l20aeh:\r
fecee241
L
4577 inc hl\r
4578 ld c,(hl)\r
4579 ld hl,t_MNEMONICS\r
4580 ld b,000h\r
4581 add hl,bc\r
4582 ld de,l230bh\r
4583 scf\r
4584 ret\r
a16ba2b0 4585sub_20bbh:\r
fecee241
L
4586 ld a,(hl)\r
4587 and a\r
4588 ret z\r
4589 inc hl\r
4590 comst\r
4591 cp (iy+000h)\r
a16ba2b0 4592 comend\r
fecee241
L
4593 jr nz,sub_20bbh\r
4594 scf\r
4595 ret\r
a16ba2b0
L
4596\r
4597lookup_opc:\r
fecee241
L
4598 comst\r
4599 ld a,(iy+000h)\r
a16ba2b0 4600 comend\r
fecee241
L
4601 and (hl)\r
4602 inc hl\r
4603 cp (hl)\r
4604 jr z,l20dfh\r
4605 inc hl\r
4606 inc hl\r
4607 inc hl\r
4608 inc hl\r
4609 ld a,(hl)\r
4610 and a\r
4611 jr nz,lookup_opc\r
4612 ret\r
a16ba2b0 4613l20dfh:\r
fecee241
L
4614 inc hl\r
4615 ld c,(hl)\r
4616 inc hl\r
4617 ld e,(hl)\r
4618 inc hl\r
4619 ld d,(hl)\r
4620 ld hl,t_MNEMONICS\r
4621 ld b,000h\r
4622 add hl,bc\r
4623 scf\r
4624 ret\r
a16ba2b0
L
4625\r
4626b_0x20ED_start: ; 1 byte opcodes (no parameters)\r
4627 db 076h ;20ed halt\r
fecee241 4628 db 039h ;20ee\r
a16ba2b0 4629 db 0d9h ;20ef exx\r
fecee241 4630 db 036h\r
a16ba2b0 4631 db 0f3h ;20f1 di\r
fecee241 4632 db 02ch\r
a16ba2b0 4633 db 0fbh ;20f3 ei\r
fecee241 4634 db 032h\r
a16ba2b0 4635 db 000h ;20f5 nop\r
fecee241 4636 db 069h\r
a16ba2b0 4637 db 007h ;20f7 rlca\r
fecee241 4638 db 09eh\r
a16ba2b0 4639 db 00fh ;20f9 rrca\r
fecee241 4640 db 0adh\r
a16ba2b0 4641 db 017h ;20fb rla\r
fecee241 4642 db 098h\r
a16ba2b0 4643 db 01fh ;20fd rra\r
fecee241 4644 db 0a7h\r
a16ba2b0 4645 db 027h ;20ff daa\r
fecee241 4646 db 026h\r
a16ba2b0 4647 db 02fh ;2101 cpl\r
fecee241 4648 db 023h\r
a16ba2b0 4649 db 037h ;2103 scf\r
fecee241 4650 db 0bah\r
a16ba2b0 4651 db 03fh ;2105 ccf\r
fecee241 4652 db 010h\r
a16ba2b0
L
4653 db 0ffh ;2107 EOT\r
4654\r
4655b_0x2108_start: ; 1 byte opcodes\r
4656 defb 0c0h ;2108 ld r,r\r
fecee241
L
4657 defb 040h\r
4658 defb 056h\r
4659 defw l22fch\r
a16ba2b0
L
4660\r
4661 defb 0f8h ;210d add a,r\r
fecee241
L
4662 defb 080h\r
4663 defb 003h\r
4664 defw l2305h\r
a16ba2b0
L
4665\r
4666 defb 0f8h ;2112 adc a,r\r
fecee241
L
4667 defb 088h\r
4668 defb 000h\r
4669 defw l2305h\r
4670\r
4671 defb 0f8h\r
4672 defb 090h\r
4673 defb 0c9h\r
4674 defw l24ebh\r
4675\r
4676 defb 0f8h\r
4677 defb 098h\r
4678 defb 0b7h\r
4679 defw l2305h\r
4680\r
4681 defb 0f8h\r
4682 defb 0a0h\r
4683 defb 006h\r
4684 defw l24ebh\r
4685\r
4686 defb 0f8h\r
4687 defb 0a8h\r
4688 defb 0cch\r
4689 defw l24ebh\r
4690\r
4691 defb 0f8h\r
4692 defb 0b0h\r
4693 defb 06ch\r
4694 defw l24ebh\r
4695\r
4696 defb 0f8h\r
4697 defb 0b8h\r
4698 defb 013h\r
4699 defw l24ebh\r
4700\r
4701 defb 0c7h\r
a16ba2b0 4702 defb 0c0h ;2136 ret cc\r
fecee241
L
4703 defb 08bh\r
4704 defw l2561h\r
a16ba2b0 4705\r
30d1329e 4706 defb 0c7h ;213a rst\r
fecee241
L
4707 defb 0c7h\r
4708 defb 0b4h\r
4709 defw l231eh\r
a16ba2b0
L
4710\r
4711 defb 0ffh ;213f ret\r
fecee241
L
4712 defb 0c9h\r
4713 defb 08bh\r
4714 defw l230bh\r
a16ba2b0
L
4715\r
4716 defb 0cfh ;2144 pop rr\r
fecee241
L
4717 defb 0c1h\r
4718 defb 081h\r
4719 defw l2546h\r
a16ba2b0
L
4720\r
4721 defb 0cfh ;2149 push rr\r
fecee241
L
4722 defb 0c5h\r
4723 defb 084h\r
4724 defw l2546h\r
a16ba2b0
L
4725\r
4726 defb 0ffh ;214e ex (sp),hl\r
fecee241
L
4727 defb 0e3h\r
4728 defb 034h\r
4729 defw l232ah\r
a16ba2b0
L
4730\r
4731 defb 0ffh ;2153 jp (hl)\r
fecee241
L
4732 defb 0e9h\r
4733 defb 052h\r
4734 defw l2338h\r
a16ba2b0
L
4735\r
4736 defb 0ffh ;2158 ex de,hl\r
fecee241
L
4737 defb 0ebh\r
4738 defb 034h\r
4739 defw l2345h\r
a16ba2b0
L
4740\r
4741 defb 0ffh ;215d ld sp,hl\r
fecee241
L
4742 defb 0f9h\r
4743 defb 056h\r
4744 defw l234bh\r
a16ba2b0
L
4745\r
4746 defb 0cfh ;2162 inc rr\r
fecee241
L
4747 defb 003h\r
4748 defb 041h\r
4749 defw l254bh\r
a16ba2b0
L
4750\r
4751 defb 0cfh ;2167 dec rr\r
fecee241
L
4752 defb 00bh\r
4753 defb 029h\r
4754 defw l254bh\r
a16ba2b0 4755\r
8590a76b 4756\r
a16ba2b0 4757 defb 0c7h ;216c inc r\r
fecee241
L
4758 defb 004h\r
4759 defb 041h\r
4760 defw l24dfh\r
a16ba2b0
L
4761\r
4762 defb 0c7h ;2171 dec r\r
fecee241
L
4763 defb 005h\r
4764 defb 029h\r
4765 defw l24dfh\r
a16ba2b0
L
4766\r
4767 defb 0ffh ;2176 ex af,af'\r
fecee241
L
4768 defb 008h\r
4769 defb 034h\r
4770 defw l2357h\r
a16ba2b0
L
4771\r
4772 defb 0cfh ;217b add hl,rr\r
fecee241
L
4773 defb 009h\r
4774 defb 003h\r
4775 defw l235dh\r
a16ba2b0
L
4776\r
4777 defb 0efh ;2180 ld (rr),a ;rr=bc,de\r
fecee241
L
4778 defb 002h\r
4779 defb 056h\r
4780 defw l2366h\r
a16ba2b0
L
4781\r
4782 defb 0efh ;2185 ld a,(rr) ;rr=bc,de\r
fecee241
L
4783 defb 00ah\r
4784 defb 056h\r
4785 defw l236fh\r
a16ba2b0
L
4786\r
4787 defb 000h ;218a EOT\r
4788\r
4789b_0x218B_start: ; 2 byte opdodes\r
4790 defb 0c7h ;218b ld r,nn\r
fecee241
L
4791 defb 006h\r
4792 defb 056h\r
4793 defw l2384h\r
a16ba2b0
L
4794\r
4795 defb 0ffh ;2190 add a,nn\r
fecee241
L
4796 defb 0c6h\r
4797 defb 003h\r
4798 defw l237fh\r
a16ba2b0
L
4799\r
4800 defb 0ffh ;2195 adc a,nn\r
fecee241
L
4801 defb 0ceh\r
4802 defb 000h\r
4803 defw l237fh\r
a16ba2b0
L
4804\r
4805 defb 0ffh ;219a sub a,nn\r
fecee241
L
4806 defb 0d6h\r
4807 defb 0c9h\r
4808 defw l2397h\r
a16ba2b0 4809\r
fecee241
L
4810 defb 0ffh\r
4811 defb 0deh\r
4812 defb 0b7h\r
4813 defw l237fh\r
a16ba2b0
L
4814\r
4815 defb 0ffh ;21a4 and a,nn\r
fecee241
L
4816 defb 0e6h\r
4817 defb 006h\r
4818 defw l2397h\r
a16ba2b0 4819\r
fecee241
L
4820 defb 0ffh\r
4821 defb 0eeh\r
4822 defb 0cch\r
4823 defw l2397h\r
a16ba2b0 4824\r
fecee241
L
4825 defb 0ffh\r
4826 defb 0f6h\r
4827 defb 06ch\r
4828 defw l2397h\r
a16ba2b0
L
4829\r
4830 defb 0ffh ;21b3 cp a,nn\r
fecee241
L
4831 defb 0feh\r
4832 defb 013h\r
4833 defw l2397h\r
a16ba2b0
L
4834\r
4835 defb 0ffh ;21b8 djnz\r
fecee241
L
4836 defb 010h\r
4837 defb 02eh\r
4838 defw l23b0h\r
a16ba2b0
L
4839\r
4840 defb 0ffh ;21bd jr\r
fecee241
L
4841 defb 018h\r
4842 defb 054h\r
4843 defw l23b0h\r
a16ba2b0
L
4844\r
4845 defb 0e7h ;21c2 jr,cc\r
fecee241
L
4846 defb 020h\r
4847 defb 054h\r
4848 defw l23a1h\r
a16ba2b0 4849\r
fecee241 4850 defb 0ffh\r
a16ba2b0 4851 defb 0d3h ;21c8 out (nn),a\r
fecee241
L
4852 defb 076h\r
4853 defw l23d5h\r
a16ba2b0
L
4854\r
4855 defb 0ffh ;21cc in a,(nn)\r
fecee241
L
4856 defb 0dbh\r
4857 defb 03fh\r
4858 defw l23c3h\r
a16ba2b0
L
4859\r
4860 defb 000h ;21d1 EOT\r
4861\r
4862b_0x21D2_start: ; 3 byte opcodes\r
fecee241
L
4863 defb 0c7h\r
4864 defb 0c2h\r
4865 defb 052h\r
4866 defw l23e0h\r
4867\r
4868 defb 0c7h\r
4869 defb 0c4h\r
4870 defb 00ch\r
4871 defw l23e0h\r
4872\r
4873 defb 0cfh\r
4874 defb 001h\r
4875 defb 056h\r
4876 defw l23fch\r
4877\r
4878 defb 0ffh\r
4879 defb 0c3h\r
4880 defb 052h\r
4881 defw l23e6h\r
4882\r
4883 defb 0ffh\r
4884 defb 0cdh\r
4885 defb 00ch\r
4886 defw l23e6h\r
4887\r
4888 defb 0ffh\r
4889 defb 022h\r
4890 defb 056h\r
4891 defw l2404h\r
4892\r
4893 defb 0ffh\r
4894 defb 02ah\r
4895 defb 056h\r
4896 defw l240dh\r
4897\r
4898 defb 0ffh\r
4899 defb 032h\r
4900 defb 056h\r
4901 defw l2416h\r
4902\r
4903 defb 0ffh\r
4904 defb 03ah\r
4905 defb 056h\r
4906 defw l2421h\r
4907\r
4908 defb 000h\r
a16ba2b0
L
4909\r
4910b_0x2200_start: ; prefix ED + 1 byte opcode\r
4911 defb 044h ;2200 neg\r
fecee241 4912 defb 066h\r
a16ba2b0 4913 defb 045h ;2202 retn\r
fecee241 4914 defb 092h\r
a16ba2b0 4915 defb 04dh ;2204 reti\r
fecee241 4916 defb 08eh\r
a16ba2b0 4917 defb 067h ;2206 rrd\r
fecee241 4918 defb 0b1h\r
a16ba2b0 4919 defb 06fh ;2208 rld\r
fecee241 4920 defb 0a2h\r
a16ba2b0 4921 defb 0a0h ;220a ldi\r
fecee241
L
4922 defb 05fh\r
4923 defb 0a1h\r
4924 defb 01ch\r
4925 defb 0a2h\r
4926 defb 04bh\r
4927 defb 0a3h\r
4928 defb 07dh\r
a16ba2b0 4929 defb 0a8h ;2212 ldd\r
fecee241
L
4930 defb 058h\r
4931 defb 0a9h\r
4932 defb 015h\r
4933 defb 0aah\r
4934 defb 044h\r
4935 defb 0abh\r
4936 defb 079h\r
a16ba2b0 4937 defb 0b0h ;221a ldir\r
fecee241
L
4938 defb 062h\r
4939 defb 0b1h\r
4940 defb 01fh\r
4941 defb 0b2h\r
4942 defb 04eh\r
4943 defb 0b3h\r
4944 defb 072h\r
a16ba2b0 4945 defb 0b8h ;2222 lddr\r
fecee241
L
4946 defb 05bh\r
4947 defb 0b9h\r
4948 defb 018h\r
4949 defb 0bah\r
4950 defb 047h\r
4951 defb 0bbh\r
4952 defb 06eh\r
a16ba2b0 4953 defb 08bh ;222a otdm\r
fecee241 4954 defb 0d5h\r
a16ba2b0 4955 defb 09bh ;222c otdmr\r
fecee241 4956 defb 0d9h\r
a16ba2b0 4957 defb 083h ;222e otim\r
fecee241 4958 defb 0deh\r
a16ba2b0 4959 defb 093h ;2230 otimr\r
fecee241 4960 defb 0e2h\r
a16ba2b0 4961 defb 076h ;2232 slp\r
fecee241 4962 defb 0ebh\r
a16ba2b0 4963 defb 0ffh ;2234 EOT\r
fecee241 4964\r
a16ba2b0
L
4965l2235h:\r
4966 defb 0e7h ;2235 in r,(c) ;r=bcde\r
fecee241
L
4967 defb 040h\r
4968 defb 03fh\r
4969 defw l2455h\r
a16ba2b0
L
4970\r
4971 defb 0f7h ;223a in r,(c) ;r=hl\r
fecee241
L
4972 defb 060h\r
4973 defb 03fh\r
4974 defw l2455h\r
a16ba2b0
L
4975\r
4976 defb 0ffh ;223f in r,(c) ;r=a\r
fecee241
L
4977 defb 078h\r
4978 defb 03fh\r
4979 defw l2455h\r
a16ba2b0 4980\r
fecee241
L
4981 defb 0e7h\r
4982 defb 041h\r
4983 defb 076h\r
4984 defw l2461h\r
a16ba2b0 4985\r
fecee241
L
4986 defb 0f7h\r
4987 defb 061h\r
4988 defb 076h\r
4989 defw l2461h\r
a16ba2b0
L
4990\r
4991 defb 0ffh ;224e out (c),r ;r=a\r
fecee241
L
4992 defb 079h\r
4993 defb 076h\r
4994 defw l2461h\r
a16ba2b0
L
4995\r
4996 defb 0cfh ;2253 sbc hl,rr\r
fecee241
L
4997 defb 042h\r
4998 defb 0b7h\r
4999 defw l246dh\r
a16ba2b0
L
5000\r
5001 defb 0cfh ;2258 adc hl,rr\r
fecee241
L
5002 defb 04ah\r
5003 defb 000h\r
5004 defw l246dh\r
a16ba2b0
L
5005\r
5006 defb 0ffh ;225d im 0\r
fecee241
L
5007 defb 046h\r
5008 defb 03dh\r
5009 defw l2427h\r
a16ba2b0
L
5010\r
5011 defb 0ffh ;2262 im 1\r
fecee241
L
5012 defb 056h\r
5013 defb 03dh\r
5014 defw l242bh\r
a16ba2b0
L
5015\r
5016 defb 0ffh ;2267 im 2\r
fecee241
L
5017 defb 05eh\r
5018 defb 03dh\r
5019 defw l242fh\r
a16ba2b0
L
5020\r
5021 defb 0ffh ;226c ld i,a\r
fecee241
L
5022 defb 047h\r
5023 defb 056h\r
5024 defw l2434h\r
a16ba2b0 5025\r
fecee241
L
5026 defb 0ffh\r
5027 defb 057h\r
5028 defb 056h\r
5029 defw l2439h\r
a16ba2b0 5030\r
fecee241
L
5031 defb 0ffh\r
5032 defb 04fh\r
5033 defb 056h\r
5034 defw l243eh\r
a16ba2b0 5035\r
fecee241
L
5036 defb 0ffh\r
5037 defb 05fh\r
5038 defb 056h\r
5039 defw l2443h\r
a16ba2b0
L
5040\r
5041 defb 0cfh ;2280 mlt rr\r
fecee241
L
5042 defb 04ch\r
5043 defb 0d2h\r
5044 defw l254bh\r
a16ba2b0
L
5045\r
5046 defb 0c7h ;2285 tst r\r
fecee241
L
5047 defb 004h\r
5048 defb 0eeh\r
5049 defw l24dfh\r
a16ba2b0 5050\r
fecee241 5051 defb 000h\r
a16ba2b0
L
5052\r
5053l228bh:\r
fecee241
L
5054 defb 0e7h\r
5055 defb 000h\r
5056 defb 0cfh\r
a16ba2b0
L
5057\r
5058b_0x228E_start:\r
fecee241 5059 defw l230ch\r
a16ba2b0
L
5060\r
5061b_0x2290_start:\r
fecee241
L
5062 defb 0f7h\r
5063 defb 020h\r
5064 defb 0cfh\r
a16ba2b0
L
5065\r
5066b_0x2293_start:\r
fecee241 5067 defw l230ch\r
a16ba2b0
L
5068\r
5069b_0x2295_start:\r
fecee241
L
5070 defb 0ffh\r
5071 defb 038h\r
5072 defb 0cfh\r
a16ba2b0
L
5073\r
5074b_0x2298_start:\r
fecee241 5075 defw l230ch\r
a16ba2b0
L
5076\r
5077b_0x229A_start:\r
fecee241
L
5078 defb 0e7h\r
5079 defb 001h\r
5080 defb 0e7h\r
a16ba2b0
L
5081\r
5082b_0x229D_start:\r
fecee241 5083 defw l2315h\r
a16ba2b0
L
5084\r
5085b_0x229F_start:\r
fecee241
L
5086 defb 0f7h\r
5087 defb 021h\r
5088 defb 0e7h\r
a16ba2b0
L
5089\r
5090b_0x22A2_start:\r
fecee241 5091 defw l2315h\r
a16ba2b0
L
5092\r
5093b_0x22A4_start:\r
fecee241
L
5094 defb 0ffh\r
5095 defb 039h\r
5096 defb 0e7h\r
a16ba2b0
L
5097\r
5098b_0x22A7_start:\r
fecee241 5099 defw l2315h\r
a16ba2b0
L
5100\r
5101b_0x22A9_start:\r
fecee241
L
5102 defb 0ffh\r
5103 defb 064h\r
5104 defb 0eeh\r
a16ba2b0
L
5105\r
5106b_0x22AC_start:\r
fecee241 5107 defw l2397h\r
a16ba2b0
L
5108\r
5109b_0x22AE_start:\r
fecee241
L
5110 defb 0ffh\r
5111 defb 074h\r
5112 defb 0f1h\r
a16ba2b0
L
5113\r
5114b_0x22B1_start:\r
fecee241 5115 defw l2397h\r
a16ba2b0
L
5116\r
5117b_0x22B3_start:\r
fecee241 5118 defb 000h\r
a16ba2b0 5119l22b4h:\r
fecee241
L
5120 defb 0efh\r
5121 defb 043h\r
5122 defb 056h\r
a16ba2b0
L
5123\r
5124b_0x22B7_start:\r
fecee241 5125 defw l2476h\r
a16ba2b0
L
5126\r
5127b_0x22B9_start:\r
fecee241
L
5128 defb 0ffh\r
5129 defb 073h\r
5130 defb 056h\r
a16ba2b0
L
5131\r
5132b_0x22BC_start:\r
fecee241 5133 defw l2476h\r
a16ba2b0
L
5134\r
5135b_0x22BE_start:\r
fecee241
L
5136 defb 0efh\r
5137 defb 04bh\r
5138 defb 056h\r
a16ba2b0
L
5139\r
5140b_0x22C1_start:\r
fecee241 5141 defw l247fh\r
a16ba2b0
L
5142\r
5143b_0x22C3_start:\r
fecee241
L
5144 defb 0ffh\r
5145 defb 07bh\r
5146 defb 056h\r
a16ba2b0
L
5147\r
5148b_0x22C6_start:\r
fecee241 5149 defw l247fh\r
a16ba2b0
L
5150\r
5151b_0x22C8_start:\r
fecee241 5152 defb 000h\r
a16ba2b0 5153l22c9h:\r
fecee241
L
5154 defb 0f8h\r
5155 defb 000h\r
5156 defb 09bh\r
a16ba2b0
L
5157\r
5158b_0x22CC_start:\r
fecee241 5159 defw l24aeh\r
a16ba2b0
L
5160\r
5161b_0x22CE_start:\r
fecee241
L
5162 defb 0f8h\r
5163 defb 008h\r
5164 defb 0aah\r
a16ba2b0
L
5165\r
5166b_0x22D1_start:\r
fecee241 5167 defw l24aeh\r
a16ba2b0
L
5168\r
5169b_0x22D3_start:\r
fecee241
L
5170 defb 0f8h\r
5171 defb 010h\r
5172 defb 096h\r
a16ba2b0
L
5173\r
5174b_0x22D6_start:\r
fecee241 5175 defw l24aeh\r
a16ba2b0
L
5176\r
5177b_0x22D8_start:\r
fecee241
L
5178 defb 0f8h\r
5179 defb 018h\r
5180 defb 0a5h\r
a16ba2b0
L
5181\r
5182b_0x22DB_start:\r
fecee241 5183 defw l24aeh\r
a16ba2b0
L
5184\r
5185b_0x22DD_start:\r
fecee241
L
5186 defb 0f8h\r
5187 defb 020h\r
5188 defb 0c0h\r
a16ba2b0
L
5189\r
5190b_0x22E0_start:\r
fecee241 5191 defw l24aeh\r
a16ba2b0
L
5192\r
5193b_0x22E2_start:\r
fecee241
L
5194 defb 0f8h\r
5195 defb 028h\r
5196 defb 0c3h\r
a16ba2b0
L
5197\r
5198b_0x22E5_start:\r
fecee241 5199 defw l24aeh\r
a16ba2b0
L
5200\r
5201b_0x22E7_start:\r
fecee241
L
5202 defb 0f8h\r
5203 defb 038h\r
5204 defb 0c6h\r
a16ba2b0
L
5205\r
5206b_0x22EA_start:\r
fecee241 5207 defw l24aeh\r
a16ba2b0
L
5208\r
5209b_0x22EC_start:\r
fecee241
L
5210 defb 0c0h\r
5211 defb 040h\r
5212 defb 009h\r
a16ba2b0
L
5213\r
5214b_0x22EF_start:\r
fecee241 5215 defw l2487h\r
a16ba2b0
L
5216\r
5217b_0x22F1_start:\r
fecee241
L
5218 defb 0c0h\r
5219 defb 080h\r
5220 defb 088h\r
a16ba2b0
L
5221\r
5222b_0x22F4_start:\r
fecee241 5223 defw l2487h\r
a16ba2b0
L
5224\r
5225b_0x22F6_start:\r
fecee241
L
5226 defb 0c0h\r
5227 defb 0c0h\r
5228 defb 0bdh\r
a16ba2b0
L
5229\r
5230b_0x22F9_start:\r
fecee241 5231 defw l2487h\r
a16ba2b0
L
5232\r
5233b_0x22FB_start:\r
fecee241 5234 defb 000h\r
a16ba2b0 5235l22fch:\r
fecee241
L
5236 call l24dfh\r
5237 call sub_257ch\r
5238 jp l24ebh\r
a16ba2b0 5239l2305h:\r
fecee241
L
5240 call sub_2579h\r
5241 jp l24ebh\r
a16ba2b0 5242l230bh:\r
fecee241 5243 ret\r
a16ba2b0 5244l230ch:\r
fecee241
L
5245 call l24dfh\r
5246 call sub_257ch\r
5247 jp l23c6h\r
a16ba2b0 5248l2315h:\r
fecee241
L
5249 call l23c6h\r
5250 call sub_257ch\r
5251 jp l24dfh\r
a16ba2b0 5252l231eh:\r
fecee241
L
5253 comst\r
5254 ld a,(iy+000h)\r
a16ba2b0 5255 comend\r
fecee241
L
5256 and 038h\r
5257 jp out.hex\r
a16ba2b0 5258l232ah:\r
fecee241
L
5259 ld hl,b_0x2333_start\r
5260 call PSTR\r
5261 jp l253eh\r
a16ba2b0
L
5262\r
5263b_0x2333_start:\r
5264 DC '(SP),'\r
5265\r
5266l2338h:\r
fecee241
L
5267 ld a,'('\r
5268 call OUTCHAR\r
5269 call l253eh\r
5270 ld a,')'\r
5271 jp OUTCHAR\r
a16ba2b0 5272l2345h:\r
fecee241
L
5273 ld hl,l1d86h\r
5274 jp PSTR\r
a16ba2b0 5275l234bh:\r
fecee241
L
5276 ld hl,b_0x2354_start\r
5277 call PSTR\r
5278 jp l253eh\r
a16ba2b0
L
5279\r
5280b_0x2354_start:\r
5281 DC 'SP,'\r
5282\r
5283l2357h:\r
fecee241
L
5284 ld hl,b_0x1D80_start\r
5285 jp PSTR\r
a16ba2b0 5286l235dh:\r
fecee241
L
5287 call l253eh\r
5288 call sub_257ch\r
5289 jp l254bh\r
a16ba2b0 5290l2366h:\r
fecee241
L
5291 call sub_2372h\r
5292 call sub_257ch\r
5293 jp l23dbh\r
a16ba2b0 5294l236fh:\r
fecee241 5295 call sub_2579h\r
a16ba2b0 5296sub_2372h:\r
fecee241
L
5297 ld a,'('\r
5298 call OUTCHAR\r
5299 call l254bh\r
5300 ld a,')'\r
5301 jp OUTCHAR\r
a16ba2b0 5302l237fh:\r
fecee241
L
5303 call sub_2579h\r
5304 jr l2397h\r
a16ba2b0 5305l2384h:\r
fecee241
L
5306 call l24dfh\r
5307 call sub_257ch\r
5308 ld a,(is.pfx.IXY)\r
5309 and a\r
5310 comst\r
5311 ld a,(iy+002h)\r
a16ba2b0 5312 comend\r
fecee241 5313 jr nz,l239eh\r
a16ba2b0 5314l2397h:\r
fecee241
L
5315 comst\r
5316 ld a,(iy+001h)\r
a16ba2b0
L
5317 comend\r
5318l239eh:\r
fecee241 5319 jp out.hex\r
a16ba2b0 5320l23a1h:\r
fecee241
L
5321 comst\r
5322 ld a,(iy+000h)\r
a16ba2b0 5323 comend\r
fecee241
L
5324 and 018h\r
5325 call sub_2568h\r
5326 call sub_257ch\r
a16ba2b0 5327l23b0h:\r
fecee241
L
5328 comst\r
5329 ld c,(iy+001h)\r
a16ba2b0 5330 comend\r
fecee241
L
5331 ld a,c\r
5332 rla\r
5333 sbc a,a\r
5334 ld b,a\r
5335 push iy\r
5336 pop hl\r
5337 add hl,bc\r
5338 inc hl\r
5339 inc hl\r
5340 jr l23f0h\r
a16ba2b0 5341l23c3h:\r
fecee241 5342 call sub_2579h\r
a16ba2b0 5343l23c6h:\r
fecee241
L
5344 ld a,028h\r
5345 call OUTCHAR\r
5346 comst\r
5347 ld a,(iy+001h)\r
a16ba2b0 5348 comend\r
fecee241 5349 jp l252bh\r
a16ba2b0 5350l23d5h:\r
fecee241
L
5351 call l23c6h\r
5352 call sub_257ch\r
a16ba2b0 5353l23dbh:\r
fecee241
L
5354 ld a,041h\r
5355 jp OUTCHAR\r
a16ba2b0 5356l23e0h:\r
fecee241
L
5357 call l2561h\r
5358 call sub_257ch\r
a16ba2b0 5359l23e6h:\r
fecee241
L
5360 comst\r
5361 ld l,(iy+001h)\r
5362 ld h,(iy+002h)\r
a16ba2b0
L
5363 comend\r
5364l23f0h:\r
fecee241 5365 ld a,002h\r
a16ba2b0 5366sub_23f2h:\r
fecee241
L
5367 ld (XBE03),a\r
5368 ld (XBE01),hl\r
5369 call out.hl\r
5370 ret\r
a16ba2b0 5371l23fch:\r
fecee241
L
5372 call l254bh\r
5373 call sub_257ch\r
5374 jr l23e6h\r
a16ba2b0 5375l2404h:\r
fecee241
L
5376 call sub_24c6h\r
5377 call sub_257ch\r
5378 jp l253eh\r
a16ba2b0 5379l240dh:\r
fecee241
L
5380 call l253eh\r
5381 call sub_257ch\r
5382 jp sub_24c6h\r
a16ba2b0 5383l2416h:\r
fecee241
L
5384 call sub_24c6h\r
5385 call sub_257ch\r
5386 ld a,041h\r
5387 jp OUTCHAR\r
a16ba2b0 5388l2421h:\r
fecee241
L
5389 call sub_2579h\r
5390 jp sub_24c6h\r
a16ba2b0 5391l2427h:\r
fecee241
L
5392 ld a,030h\r
5393 jr l2431h\r
a16ba2b0 5394l242bh:\r
fecee241
L
5395 ld a,031h\r
5396 jr l2431h\r
a16ba2b0 5397l242fh:\r
fecee241 5398 ld a,032h\r
a16ba2b0 5399l2431h:\r
fecee241 5400 jp OUTCHAR\r
a16ba2b0 5401l2434h:\r
fecee241
L
5402 ld hl,b_0x2449_start\r
5403 jr l2446h\r
a16ba2b0 5404l2439h:\r
fecee241
L
5405 ld hl,l244ch\r
5406 jr l2446h\r
a16ba2b0 5407l243eh:\r
fecee241
L
5408 ld hl,l244fh\r
5409 jr l2446h\r
a16ba2b0 5410l2443h:\r
fecee241 5411 ld hl,l2452h\r
a16ba2b0 5412l2446h:\r
fecee241 5413 jp PSTR\r
a16ba2b0
L
5414\r
5415b_0x2449_start:\r
5416 DC 'I,A'\r
5417l244ch:\r
5418 DC 'A,I'\r
5419l244fh:\r
5420 DC 'R,A'\r
5421l2452h:\r
5422 DC 'A,R'\r
5423\r
5424l2455h:\r
fecee241
L
5425 call l24dfh\r
5426 call sub_257ch\r
5427 ld hl,t__C_\r
5428 jp PSTR\r
a16ba2b0 5429l2461h:\r
fecee241
L
5430 ld hl,t__C_\r
5431 call PSTR\r
5432 call sub_257ch\r
5433 jp l24dfh\r
a16ba2b0 5434l246dh:\r
fecee241
L
5435 call l253eh\r
5436 call sub_257ch\r
5437 jp l254bh\r
a16ba2b0 5438l2476h:\r
fecee241
L
5439 call sub_24c6h\r
5440 call sub_257ch\r
5441 jp l254bh\r
a16ba2b0 5442l247fh:\r
fecee241
L
5443 call l254bh\r
5444 call sub_257ch\r
5445 jr sub_24c6h\r
a16ba2b0 5446l2487h:\r
fecee241
L
5447 ld a,(is.pfx.IXY)\r
5448 and a\r
5449 jr nz,l2496h\r
5450 comst\r
5451 ld a,(iy+001h)\r
a16ba2b0 5452 comend\r
fecee241 5453 jr l249dh\r
a16ba2b0 5454l2496h:\r
fecee241
L
5455 comst\r
5456 ld a,(iy+002h)\r
a16ba2b0
L
5457 comend\r
5458l249dh:\r
fecee241
L
5459 push af\r
5460 rra\r
5461 rra\r
5462 rra\r
5463 and 007h\r
5464 add a,'0'\r
5465 call OUTCHAR\r
5466 call sub_257ch\r
5467 pop af\r
5468 jr l24f2h\r
a16ba2b0 5469l24aeh:\r
fecee241
L
5470 ld a,(is.pfx.IXY)\r
5471 and a\r
5472 jr nz,l24bdh\r
5473 comst\r
5474 ld a,(iy+001h)\r
a16ba2b0 5475 comend\r
fecee241 5476 jr l24c4h\r
a16ba2b0 5477l24bdh:\r
fecee241
L
5478 comst\r
5479 ld a,(iy+002h)\r
a16ba2b0
L
5480 comend\r
5481l24c4h:\r
fecee241 5482 jr l24f2h\r
a16ba2b0 5483sub_24c6h:\r
fecee241
L
5484 ld a,'('\r
5485 call OUTCHAR\r
5486 comst\r
5487 ld l,(iy+001h)\r
5488 ld h,(iy+002h)\r
a16ba2b0 5489 comend\r
fecee241
L
5490 ld a,001h\r
5491 call sub_23f2h\r
5492 ld a,')'\r
5493 jp OUTCHAR\r
a16ba2b0 5494l24dfh:\r
fecee241
L
5495 comst\r
5496 ld a,(iy+000h)\r
a16ba2b0 5497 comend\r
fecee241
L
5498 rra\r
5499 rra\r
5500 rra\r
5501 jr l24f2h\r
a16ba2b0 5502l24ebh:\r
fecee241
L
5503 comst\r
5504 ld a,(iy+000h)\r
a16ba2b0
L
5505 comend\r
5506l24f2h:\r
fecee241
L
5507 and 007h\r
5508 cp 006h\r
5509 jr nz,l2533h\r
5510 ld a,(is.pfx.IXY)\r
5511 and a\r
5512 ld a,006h\r
5513 jr z,l2533h\r
5514 ld hl,b_0x2538_start\r
5515 ld a,(is.pfx.IXY)\r
5516 dec a\r
5517 jr z,l250ch\r
5518 ld hl,b_0x253B_start\r
a16ba2b0 5519l250ch:\r
fecee241
L
5520 call PSTR\r
5521 comst\r
5522 ld a,(iy+001h)\r
a16ba2b0 5523 comend\r
fecee241
L
5524 and a\r
5525 push af\r
5526 jp m,l2523h\r
5527 ld a,'+'\r
5528 call OUTCHAR\r
5529 pop af\r
5530 jr l252bh\r
a16ba2b0 5531l2523h:\r
fecee241
L
5532 ld a,'-'\r
5533 call OUTCHAR\r
5534 pop af\r
5535 neg\r
a16ba2b0 5536l252bh:\r
fecee241
L
5537 call out.hex\r
5538 ld a,')'\r
5539 jp OUTCHAR\r
a16ba2b0 5540l2533h:\r
fecee241
L
5541 ld hl,t_BCDEHL_HL_A\r
5542 jr l2572h\r
a16ba2b0
L
5543\r
5544b_0x2538_start:\r
5545 DC '(IX'\r
5546b_0x253B_start:\r
5547 DC '(IY'\r
5548\r
5549l253eh:\r
fecee241
L
5550 ld a,(is.pfx.IXY)\r
5551 ld hl,t_HL.IX.IY\r
5552 jr l2572h\r
a16ba2b0 5553l2546h:\r
fecee241
L
5554 ld hl,t_BC.DE.HL.AF\r
5555 jr l254eh\r
a16ba2b0 5556l254bh:\r
fecee241 5557 ld hl,t_BC.DE.HL.SP\r
a16ba2b0 5558l254eh:\r
fecee241
L
5559 comst\r
5560 ld a,(iy+000h)\r
a16ba2b0 5561 comend\r
fecee241
L
5562 rra\r
5563 rra\r
5564 rra\r
5565 rra\r
5566 and 003h\r
5567 cp 002h\r
5568 jr z,l253eh\r
5569 jr l2572h\r
a16ba2b0 5570l2561h:\r
fecee241
L
5571 comst\r
5572 ld a,(iy+000h)\r
a16ba2b0
L
5573 comend\r
5574sub_2568h:\r
fecee241
L
5575 rra\r
5576 rra\r
5577 rra\r
5578 and 007h\r
5579 ld hl,t_tstfl_ZCPS\r
5580 jr l2572h\r
a16ba2b0 5581l2572h:\r
fecee241
L
5582 ld b,a\r
5583 call sub_0a48h\r
5584 jp PSTR\r
a16ba2b0 5585sub_2579h:\r
fecee241 5586 call l23dbh\r
a16ba2b0 5587sub_257ch:\r
fecee241
L
5588 ld a,','\r
5589 jp OUTCHAR\r
a16ba2b0 5590sub_2581h:\r
fecee241 5591 call PSTR\r
a16ba2b0 5592l2584h:\r
fecee241
L
5593 call OUTBL\r
5594 inc c\r
5595 ld a,c\r
5596 cp 006h\r
5597 jr nz,l2584h\r
5598 ret\r
a16ba2b0
L
5599\r
5600t_MNEMONICS:\r
5601 DC 'ADC'\r
5602 DC 'ADD'\r
5603 DC 'AND'\r
5604 DC 'BIT'\r
5605 DC 'CALL'\r
5606 DC 'CCF'\r
5607 DC 'CP'\r
5608 DC 'CPD'\r
5609 DC 'CPDR'\r
5610 DC 'CPI'\r
5611 DC 'CPIR'\r
5612 DC 'CPL'\r
5613 DC 'DAA'\r
5614 DC 'DEC'\r
5615 DC 'DI'\r
5616 DC 'DJNZ'\r
5617 DC 'EI'\r
5618 DC 'EX'\r
5619 DC 'EXX'\r
5620 DC 'HALT'\r
5621 DC 'IM'\r
5622 DC 'IN'\r
5623 DC 'INC'\r
5624 DC 'IND'\r
5625 DC 'INDR'\r
5626 DC 'INI'\r
5627 DC 'INIR'\r
5628 DC 'JP'\r
5629 DC 'JR'\r
5630 DC 'LD'\r
5631 DC 'LDD'\r
5632 DC 'LDDR'\r
5633 DC 'LDI'\r
5634 DC 'LDIR'\r
5635 DC 'NEG'\r
5636 DC 'NOP'\r
5637 DC 'OR'\r
5638 DC 'OTDR'\r
5639 DC 'OTIR'\r
5640 DC 'OUT'\r
5641 DC 'OUTD'\r
5642 DC 'OUTI'\r
5643 DC 'POP'\r
5644 DC 'PUSH'\r
5645 DC 'RES'\r
5646 DC 'RET'\r
5647 DC 'RETI'\r
5648 DC 'RETN'\r
5649 DC 'RL'\r
5650 DC 'RLA'\r
5651 DC 'RLC'\r
5652 DC 'RLCA'\r
5653 DC 'RLD'\r
5654 DC 'RR'\r
5655 DC 'RRA'\r
5656 DC 'RRC'\r
5657 DC 'RRCA'\r
5658 DC 'RRD'\r
5659 DC 'RST'\r
5660 DC 'SBC'\r
5661 DC 'SCF'\r
5662 DC 'SET'\r
5663 DC 'SLA'\r
5664 DC 'SRA'\r
5665 DC 'SRL'\r
5666 DC 'SUB'\r
5667 DC 'XOR'\r
5668 DC 'IN0'\r
5669 DC 'MLT'\r
5670 DC 'OTDM'\r
5671 DC 'OTDMR'\r
5672 DC 'OTIM'\r
5673 DC 'OTIMR'\r
5674 DC 'OUT0'\r
5675 DC 'SLP'\r
5676 DC 'TST'\r
5677 DC 'TSTIO'\r
5678 DB 0\r
fecee241 5679\r
a16ba2b0
L
5680t_BCDEHL_HL_A:\r
5681 DC 'B'\r
5682 DC 'C'\r
5683 DC 'D'\r
5684 DC 'E'\r
5685 DC 'H'\r
5686 DC 'L'\r
5687 DC '(HL)'\r
5688 DC 'A'\r
5689 DB 0\r
5690t_BC.DE.HL.SP:\r
5691 DC 'BC'\r
5692 DC 'DE'\r
5693 DC 'HL'\r
5694 DC 'SP'\r
5695 DB 0\r
5696t_BC.DE.HL.AF:\r
5697 DC 'BC'\r
5698 DC 'DE'\r
5699t_HL.AF:\r
5700 DC 'HL'\r
5701 DC 'AF'\r
5702 DB 0\r
5703t_BC.DE.IY.SP:\r
5704 DC 'BC'\r
5705 DC 'DE'\r
5706 DC 'IY'\r
5707 DC 'SP'\r
5708 DB 0\r
5709t_BC.DE.IX.SP:\r
5710 DC 'BC'\r
5711 DC 'DE'\r
5712 DC 'IX'\r
5713 DC 'SP'\r
5714 DB 0\r
5715t_HL.IX.IY:\r
5716 DC 'HL'\r
5717t_IX.IY:\r
5718 DC 'IX'\r
5719 DC 'IY'\r
5720 DB 0\r
5721t_tstfl_ZC:\r
5722 DC 'NZ'\r
5723 DC 'Z'\r
5724 DC 'NC'\r
5725 DC 'C'\r
5726 DC 'NE'\r
5727 DC 'EQ'\r
5728 DC 'GE'\r
5729 DC 'LT'\r
5730 DB 0\r
5731t_tstfl_ZCPS:\r
5732 DC 'NZ'\r
5733 DC 'Z'\r
5734 DC 'NC'\r
5735 DC 'C'\r
5736 DC 'PO'\r
5737 DC 'PE'\r
5738 DC 'P'\r
5739 DC 'M'\r
5740 DC 'NE'\r
5741 DC 'EQ'\r
5742 DC 'GE'\r
5743 DC 'LT'\r
5744 DC 'NV'\r
5745 DC 'V'\r
5746 DB 0\r
5747t__C_:\r
5748 DC '(C)'\r
5749 DB 0\r
5750\r
5751sub_26e7h:\r
fecee241
L
5752 ld hl,(REG.PC)\r
5753 ld a,h\r
5754 or l\r
5755 jr z,l2715h\r
5756 ld iy,(REG.PC)\r
5757 call sub_1f9eh\r
5758 jp nc,ERROR\r
5759 ld c,b\r
5760 ld b,000h\r
5761 ld hl,(REG.PC)\r
5762 add hl,bc\r
5763 call sub_1117h\r
5764 ld iy,(REG.PC)\r
5765 ld hl,b_0x2717_start\r
5766 call lookup_opc\r
5767 ccf\r
5768 ret c\r
5769 ex de,hl\r
5770 call CALL.HL\r
5771 call c,sub_1117h\r
a16ba2b0 5772l2715h:\r
fecee241
L
5773 scf\r
5774 ret\r
a16ba2b0
L
5775\r
5776b_0x2717_start:\r
fecee241
L
5777 db 0ffh\r
5778 db 0ddh\r
5779 db 000h\r
a16ba2b0
L
5780 dw x278d\r
5781\r
fecee241
L
5782 db 0ffh\r
5783 db 0fdh\r
5784 db 000h\r
a16ba2b0
L
5785 dw x2792\r
5786\r
fecee241
L
5787 db 0ffh\r
5788 db 0edh\r
5789 db 000h\r
a16ba2b0
L
5790 dw x27a2\r
5791\r
5792l2726h:\r
fecee241
L
5793 db 0ffh\r
5794 db 0cdh\r
5795 db 000h\r
a16ba2b0
L
5796 dw x275e\r
5797\r
fecee241
L
5798 db 0ffh\r
5799 db 0c3h\r
5800 db 000h\r
a16ba2b0
L
5801 dw x2769\r
5802\r
fecee241
L
5803 db 0ffh\r
5804 db 0e9h\r
5805 db 000h\r
a16ba2b0
L
5806 dw x2788\r
5807\r
fecee241
L
5808 db 0ffh\r
5809 db 0c9h\r
5810 db 000h\r
a16ba2b0
L
5811 dw x27c9\r
5812\r
fecee241
L
5813 db 0ffh\r
5814 db 0cfh\r
5815 db 000h\r
a16ba2b0
L
5816 dw x280e\r
5817\r
fecee241
L
5818 db 0c7h\r
5819 db 0c7h\r
5820 db 000h\r
a16ba2b0
L
5821 dw x27ea\r
5822\r
fecee241
L
5823 db 0c7h\r
5824 db 0c4h\r
5825 db 000h\r
a16ba2b0
L
5826 dw x275e\r
5827\r
fecee241
L
5828 db 0f7h\r
5829 db 010h\r
5830 db 000h\r
a16ba2b0
L
5831 dw x2775\r
5832\r
fecee241
L
5833 db 0e7h\r
5834 db 020h\r
5835 db 000h\r
a16ba2b0
L
5836 dw x2775\r
5837\r
fecee241
L
5838 db 0c7h\r
5839 db 0c2h\r
5840 db 000h\r
a16ba2b0
L
5841 dw x2769\r
5842\r
fecee241
L
5843 db 0c7h\r
5844 db 0c0h\r
5845 db 000h\r
a16ba2b0
L
5846 dw x27b3\r
5847\r
fecee241 5848 db 000h\r
a16ba2b0
L
5849\r
5850x275e:\r
fecee241
L
5851 ld a,(XBFE8)\r
5852 and a\r
5853 jr nz,x2769\r
5854 ld a,(TCFLG)\r
5855 and a\r
5856 ret nz\r
a16ba2b0
L
5857\r
5858x2769:\r
fecee241
L
5859 comst\r
5860 ld l,(iy+001h)\r
5861 ld h,(iy+002h)\r
a16ba2b0 5862 comend\r
fecee241
L
5863 scf\r
5864 ret\r
a16ba2b0
L
5865\r
5866x2775:\r
fecee241
L
5867 comst\r
5868 ld c,(iy+001h)\r
a16ba2b0 5869 comend\r
fecee241
L
5870 ld a,c\r
5871 rla\r
5872 sbc a,a\r
5873 ld b,a\r
5874 ld hl,(REG.PC)\r
5875 add hl,bc\r
5876 inc hl\r
5877 inc hl\r
5878 scf\r
5879 ret\r
a16ba2b0
L
5880\r
5881x2788:\r
fecee241
L
5882 ld hl,(REG.L)\r
5883 scf\r
5884 ret\r
a16ba2b0
L
5885\r
5886x278d:\r
fecee241
L
5887 ld hl,(reg.ix)\r
5888 jr l2795h\r
a16ba2b0
L
5889\r
5890x2792:\r
fecee241 5891 ld hl,(reg.iy)\r
a16ba2b0 5892l2795h:\r
fecee241
L
5893 comst\r
5894 ld a,(iy+001h)\r
a16ba2b0 5895 comend\r
fecee241
L
5896 cp 0e9h\r
5897 scf\r
5898 ret z\r
5899 and a\r
5900 ret\r
a16ba2b0
L
5901\r
5902x27a2:\r
fecee241
L
5903 comst\r
5904 ld a,(iy+001h)\r
a16ba2b0 5905 comend\r
fecee241
L
5906 cp 04dh\r
5907 jr z,x27c9\r
5908 cp 045h\r
5909 jr z,x27c9\r
5910 and a\r
5911 ret\r
a16ba2b0
L
5912\r
5913x27b3:\r
fecee241
L
5914 comst\r
5915 ld a,(iy+000h)\r
a16ba2b0 5916 comend\r
fecee241
L
5917 ld (XBEDD),a\r
5918 ld hl,(REG.F)\r
5919 push hl\r
5920 pop af\r
5921 call XBEDD\r
5922 scf\r
5923 jr c,x27c9\r
5924 ret\r
a16ba2b0
L
5925\r
5926x27c9:\r
fecee241
L
5927 ld a,(XBFE8)\r
5928 and a\r
5929 jr nz,l27dah\r
5930 ld a,(TCFLG)\r
5931 and a\r
5932 jr z,l27dah\r
5933 call l27dah\r
5934 pop hl\r
5935 ret\r
a16ba2b0 5936l27dah:\r
fecee241
L
5937 ld hl,(REG.SP)\r
5938 comst\r
5939 ld e,(hl)\r
5940 inc hl\r
5941 ld d,(hl)\r
a16ba2b0 5942 comend\r
fecee241
L
5943 ex de,hl\r
5944 call sub_1117h\r
5945 and a\r
5946 ret\r
a16ba2b0
L
5947\r
5948x27ea:\r
cdc4625b 5949 ld a,(ddtzrst)\r
fecee241
L
5950 comst\r
5951 cp (iy+000h)\r
a16ba2b0 5952 comend\r
fecee241
L
5953 ret z\r
5954 comst\r
5955 ld a,(iy+000h)\r
a16ba2b0 5956 comend\r
fecee241
L
5957 and 038h\r
5958 ld l,a\r
5959 ld h,000h\r
5960 ld a,(XBFE8)\r
5961 and a\r
5962 jr nz,l280ch\r
5963 ld a,(TCFLG)\r
5964 and a\r
5965 ret nz\r
a16ba2b0 5966l280ch:\r
fecee241
L
5967 scf\r
5968 ret\r
a16ba2b0
L
5969\r
5970x280e:\r
fecee241
L
5971 and a\r
5972 ret\r
a16ba2b0
L
5973\r
5974CMD.C:\r
fecee241
L
5975 ld hl,CMD.C\r
5976 ld a,001h\r
5977 jr l281bh\r
a16ba2b0
L
5978\r
5979CMD.T:\r
fecee241
L
5980 xor a\r
5981 ld hl,CMD.T\r
a16ba2b0 5982l281bh:\r
fecee241
L
5983 ld (CMD_RPT),hl\r
5984 ld (TCFLG),a\r
5985 ld a,(de)\r
5986 sub 'N'\r
5987 jr nz,l2827h\r
5988 inc de\r
a16ba2b0 5989l2827h:\r
fecee241
L
5990 ld (TCNFLG),a\r
5991 ld a,(de)\r
5992 sub 'J'\r
5993 jr nz,l2830h\r
5994 inc de\r
a16ba2b0 5995l2830h:\r
fecee241
L
5996 ld (TRJFLG),a\r
5997 call sub_289fh\r
5998 jr z,l283eh\r
5999 ld hl,1\r
6000 call get_lastarg_def\r
a16ba2b0 6001l283eh:\r
fecee241
L
6002 ld (TCCSTR),hl\r
6003 sub a\r
6004 ld (XA747),a\r
a16ba2b0 6005l2845h:\r
fecee241
L
6006 call sub_26e7h\r
6007 jr l289ch\r
a16ba2b0 6008l284ah:\r
fecee241
L
6009 call sub_0e68h\r
6010 ld a,(TRJFLG)\r
6011 and a\r
6012 jr nz,l2864h\r
6013 ld iy,(REG.PC)\r
6014 call sub_28c1h\r
6015 jr z,l2864h\r
6016 ld hl,l2726h\r
6017 call lookup_opc\r
6018 jr nc,l2845h\r
a16ba2b0 6019l2864h:\r
fecee241
L
6020 ld a,(XBFEA)\r
6021 and a\r
6022 jr z,l2881h\r
6023 ld de,(TCCSTR)\r
6024 call EXPR\r
6025 ld a,h\r
6026 or l\r
6027 add a,0ffh\r
6028 sbc a,a\r
6029 ld hl,XBFEA\r
6030 xor (hl)\r
6031 bit 1,a\r
6032 jr z,l288ch\r
a16ba2b0 6033l287eh:\r
fecee241 6034 jp l102eh\r
a16ba2b0 6035l2881h:\r
fecee241
L
6036 ld hl,(TCCSTR)\r
6037 dec hl\r
6038 ld (TCCSTR),hl\r
6039 ld a,h\r
6040 or l\r
6041 jr z,l287eh\r
a16ba2b0 6042l288ch:\r
fecee241
L
6043 call sub_26e7h\r
6044 jr nc,l287eh\r
6045 ld a,(TCNFLG)\r
6046 ld b,a\r
6047 ld a,(XA747)\r
6048 or b\r
6049 ld (XA747),a\r
a16ba2b0 6050l289ch:\r
fecee241 6051 jp l1183h\r
a16ba2b0
L
6052\r
6053sub_289fh:\r
fecee241
L
6054 call SKIPBL\r
6055 xor a\r
6056 ld (XBFEA),a\r
6057 ld a,(de)\r
6058 cp 'U'\r
6059 jr z,l28aeh\r
6060 cp 'W'\r
6061 ret nz\r
a16ba2b0
L
6062\r
6063l28aeh:\r
fecee241
L
6064 inc de\r
6065 push af\r
6066 push de\r
6067 call EXPR\r
6068 jp c,ERROR\r
6069 call assert_eol\r
6070 pop hl\r
6071 pop af\r
6072 ld (XBFEA),a\r
6073 sub a\r
6074 ret\r
a16ba2b0
L
6075\r
6076sub_28c1h:\r
fecee241
L
6077 comst\r
6078 ld a,(iy+000h)\r
a16ba2b0
L
6079 ld b,(iy+0001)\r
6080 comend\r
fecee241
L
6081 cp 0edh\r
6082 jr z,l28dbh\r
6083 and 0dfh\r
6084 cp 0ddh\r
6085 ret nz\r
a16ba2b0 6086 ld a,b\r
fecee241
L
6087 cp 0e9h\r
6088 ret\r
a16ba2b0
L
6089l28dbh:\r
6090 ld a,b\r
fecee241
L
6091 and 0f7h\r
6092 cp 045h\r
6093 ret\r
a16ba2b0
L
6094\r
6095?excom:\r
fecee241
L
6096 ex (sp),hl\r
6097 push af\r
6098 push bc\r
6099 push de\r
6100 ld c,(hl)\r
6101 ld b,000h\r
6102 inc hl\r
a16ba2b0
L
6103 ld a,?lcmax\r
6104 sub c\r
fecee241 6105 ld de,?exeit\r
a16ba2b0
L
6106 ldir\r
6107 ex de,hl\r
6108 ld (hl),018h\r
6109 inc hl\r
6110 ld (hl),a\r
6111 ex de,hl\r
fecee241
L
6112 pop de\r
6113 pop bc\r
6114 pop af\r
6115 ex (sp),hl\r
29605004 6116 if CPU_Z180\r
fecee241
L
6117 push hl\r
6118 ld hl,(ubbr)\r
a16ba2b0 6119\r
29605004 6120 else\r
fecee241
L
6121 push af\r
6122 ld a,(ubnk)\r
29605004 6123 endif\r
a16ba2b0 6124 if ROMSYS\r
fecee241
L
6125 push af\r
6126 ld a,(uromen)\r
a16ba2b0 6127 endif\r
fecee241
L
6128 jp ?comcod\r
6129\r
a16ba2b0
L
6130;------------------------------------------\r
6131; ddtram\r
6132;------------------------------------------\r
6133\r
6134vartab:\r
8df5b655
L
6135; dseg\r
6136 cseg\r
fecee241 6137ddtram:\r
a16ba2b0 6138;todo:\r
4caee1ec 6139; The following 2 params are changeable by user.\r
a16ba2b0
L
6140; Should these moved to top ram?\r
6141;\r
cdc4625b
L
6142ddtzrst:\r
6143 rst DDTZRSTVEC ;rst used by ddtz\r
29605004 6144ddtei: ei ;ints enabled/disabled while ddtz is running\r
a16ba2b0 6145 ret ;\r
a16ba2b0 6146offs.pc:\r
fecee241 6147 dw TPA\r
a16ba2b0 6148offs.@:\r
fecee241 6149 dw 0\r
a16ba2b0 6150CMD_ERR:\r
fecee241 6151 dw 0\r
a16ba2b0 6152CMD_RPT:\r
fecee241 6153 dw DDTZML\r
a16ba2b0 6154ci.buf:\r
fecee241 6155 db 80\r
a16ba2b0
L
6156 rept 83\r
6157 db 0\r
6158 endm\r
a16ba2b0 6159CON.COL:\r
fecee241 6160 db 0\r
a16ba2b0 6161XA747:\r
fecee241 6162 db 0\r
a16ba2b0 6163bp_tab:\r
fecee241 6164 rept BP_CNT\r
a16ba2b0
L
6165 db 0,0\r
6166 dw 0,0,0\r
6167 endm\r
6168BP_SIZE equ 8\r
a16ba2b0 6169sexp1:\r
fecee241 6170 dw sexpbuf\r
a16ba2b0 6171sexp2:\r
fecee241 6172 dw sexpbuf\r
a16ba2b0 6173sexpbuf:\r
fecee241 6174 rept 128\r
a16ba2b0
L
6175 db 0\r
6176 endm\r
a16ba2b0
L
6177sexpbufe:\r
6178\r
6179msg.Y:\r
fecee241 6180 dc 'Y0'\r
a16ba2b0 6181reg.Y:\r
fecee241 6182 rept 10\r
a16ba2b0
L
6183 dw 0\r
6184 endm\r
a16ba2b0 6185lst.S:\r
fecee241 6186 dw 0\r
a16ba2b0 6187lst.IP:\r
fecee241 6188 dw 0\r
a16ba2b0 6189lst.OP:\r
fecee241 6190 dw 0\r
a16ba2b0 6191lst.OD:\r
a16ba2b0 6192 db 0\r
a16ba2b0 6193lst.Qj:\r
a16ba2b0 6194 db 0\r
a16ba2b0 6195lst.D:\r
fecee241 6196 dw 0\r
a16ba2b0 6197HILOD:\r
fecee241 6198 dw 0\r
a16ba2b0 6199MAXLOD:\r
fecee241 6200 dw 0\r
a16ba2b0 6201XB068:\r
fecee241 6202 dw 0\r
a16ba2b0 6203lst.A:\r
fecee241 6204 dw 0\r
a16ba2b0 6205XB06C:\r
fecee241 6206 dw 0\r
a16ba2b0 6207pfx.IXY:\r
fecee241 6208 db 000h\r
a16ba2b0 6209is.pfx.IXY:\r
fecee241 6210 db 000h\r
a16ba2b0 6211lst.L:\r
fecee241 6212 dw 0\r
a16ba2b0 6213XBE01:\r
fecee241 6214 dw 0\r
a16ba2b0 6215XBE03:\r
fecee241 6216 db 000h\r
a16ba2b0 6217XBEDD:\r
a16ba2b0 6218 ret ;ret cc\r
fecee241
L
6219 and a\r
6220 pop hl\r
6221 inc hl\r
6222 jp (hl)\r
a16ba2b0 6223XBFE8:\r
fecee241 6224 db 0\r
a16ba2b0 6225TCFLG:\r
fecee241 6226 db 0\r
a16ba2b0 6227XBFEA:\r
fecee241 6228 db 0\r
a16ba2b0 6229TCCSTR:\r
fecee241 6230 dw 0\r
a16ba2b0 6231TCNFLG:\r
fecee241 6232 db 0\r
a16ba2b0 6233TRJFLG:\r
fecee241 6234 db 0\r
a16ba2b0 6235wstrtflg:\r
a16ba2b0 6236 db 1\r
a16ba2b0
L
6237\r
6238 cseg\r
6239vartabe:\r
6240\r
6241;------------------------------------------\r
6242\r
6243 .phase sysram_start+stacksize\r
6244$stack:\r
6245$stcka equ $ - stacksize\r
6246\r
6247curphse defl $\r
6248 .dephase\r
6249sysramc:\r
6250 .phase curphse\r
6251topcodbeg:\r
6252\r
6253reg.l2: db 0 ; 0fe50h\r
6254reg.h2: db 0 ; 0fe51h\r
6255reg.e2: db 0 ; 0fe52h\r
6256reg.d2: db 0 ; 0fe53h\r
6257reg.c2: db 0 ; 0fe54h\r
6258reg.b2: db 0 ; 0fe55h\r
6259reg.f2: db 0 ; 0fe56h\r
6260reg.a2: db 0 ; 0fe57h\r
6261 db 0\r
6262reg.i: db high ivtab\r
6263reg.iy: dw 0 ; 0fe5ah\r
6264reg.ix: dw 0 ; 0fe5ch\r
6265reg.e: db 0 ; 0fe5eh\r
6266reg.d: db 0 ; 0fe5fh\r
6267reg.c: db 0 ; 0fe60h\r
6268reg.b: db 0 ; 0fe61h\r
6269 if ROMSYS\r
6270udcntl: db CWAITIO ; 0fe62h (mem-, io- wait)\r
6271uromen: db ROM_DIS ; 0fe63h\r
6272 endif\r
29605004 6273 if CPU_Z180\r
a16ba2b0
L
6274ubbr: db 0 ; 0fe64h\r
6275ucbar: db USR$CBAR ; 0fe65h\r
29605004
L
6276 else\r
6277 db 0 ; 0fe64h\r
6278ubnk: db 0 ; 0fe65h\r
6279 endif\r
a16ba2b0
L
6280reg.f: db 0 ; 0fe66h\r
6281reg.a: db 0 ; 0fe67h\r
6282reg.l: db 0 ; 0fe68h\r
6283reg.h: db 0 ; 0fe69h\r
6284reg.sp: dw TOPRAM ; 0fe6ah\r
6285\r
6286$go:\r
6287 if ROMSYS\r
6288 out (000h),a ;064c fe6c\r
fecee241 6289 out0 (dcntl),l\r
29605004 6290 pop hl\r
a16ba2b0 6291 endif\r
29605004 6292 if CPU_Z180\r
fecee241
L
6293 out0 (cbar),h\r
6294 out0 (bbr),l\r
29605004
L
6295 else\r
6296 ld a,h\r
6297 call selbnk\r
6298 endif\r
fecee241
L
6299 pop af\r
6300 pop hl\r
6301 ld sp,(reg.sp)\r
a16ba2b0 6302reg.iff:\r
fecee241 6303 ei\r
a16ba2b0
L
6304 db 0C3h ;jp TPA ;065f feff ($+1): reg.pc\r
6305reg.pc:\r
6306 dw TPA\r
fecee241 6307\r
a16ba2b0
L
6308bpent:\r
6309 ld (reg.l),hl ;0662 fe82: bpent:\r
fecee241
L
6310 pop hl\r
6311 dec hl\r
6312 ld (reg.pc),hl\r
6313 ld (reg.sp),sp\r
6314 ld sp,reg.l\r
6315 push af\r
29605004 6316 if CPU_Z180\r
fecee241
L
6317;;; TODO: cbar on trap?\r
6318 in0 h,(cbar)\r
6319 in0 l,(bbr)\r
6320 ld a,SYS$CBAR\r
6321 out0 (cbar),a\r
29605004
L
6322 else\r
6323 ld a,(@cbnk)\r
6324 ld h,a\r
6325 xor a\r
6326 ld l,a\r
6327 call selbnk\r
6328 endif\r
fecee241 6329 push hl\r
a16ba2b0
L
6330\r
6331 if ROMSYS\r
fecee241
L
6332 in0 l,(dcntl)\r
6333 ld a,CWAITROM+CWAITIO\r
6334 out0 (dcntl),a\r
6335 ld a,($crom)\r
6336 cp c$rom\r
6337 ld a,ROM_EN\r
6338 out (000h),a\r
a16ba2b0
L
6339 endif\r
6340\r
fecee241 6341 jp bpddtz\r
a16ba2b0
L
6342\r
6343?comcod:\r
6344 if ROMSYS\r
6345 out (000h),a ;0692 feb2\r
fecee241 6346 pop af\r
a16ba2b0
L
6347 endif\r
6348\r
29605004 6349 if CPU_Z180\r
fecee241
L
6350 out0 (cbar),h\r
6351 out0 (bbr),l\r
6352 pop hl\r
29605004
L
6353 else\r
6354 call selbnk\r
6355 pop af\r
6356 endif\r
a16ba2b0
L
6357?exeit:\r
6358 ds ?lcmax+2\r
fecee241 6359 push af\r
29605004 6360 if CPU_Z180\r
fecee241
L
6361 ld a,SYS$CBAR\r
6362 out0 (cbar),a\r
a16ba2b0 6363\r
29605004
L
6364;;; TODO: bbr?\r
6365 else\r
6366 xor a\r
6367 call selbnk\r
6368 endif\r
a16ba2b0 6369 if ROMSYS\r
fecee241
L
6370 ld a,ROM_EN\r
6371 out (000h),a\r
a16ba2b0 6372 endif\r
fecee241
L
6373\r
6374 pop af\r
6375 ret\r
a16ba2b0
L
6376\r
6377topcodend:\r
6378curph defl $\r
6379 .dephase\r
6380sysrame:\r
6381\r
6382 end\r