]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/ddtz.180
Disable msg- i/o-fifos for test with avr
[z180-stamp.git] / z180 / ddtz.180
CommitLineData
a16ba2b0
L
1 page 255\r
2 .z80\r
3\r
4 external $ci, $co, $cists\r
5\r
6 global ddtz,bpent\r
7 global $stack\r
8\r
9\r
10 include config.inc\r
11 include z180reg.inc\r
12 include z180.lib\r
13\r
14BS equ 08h\r
15TAB equ 09h\r
16CR equ 0dh\r
17LF equ 0ah\r
18DEL equ 7fh\r
19CNTRX equ 'X'-'@'\r
20\r
21TPA equ 100h\r
22TOPRAM equ 0f000h\r
23\r
24\r
25MEMDUMP_CNT equ 16 ;mem dump bytes per line\r
26BP_CNT equ 12 ;number of breakbpoints\r
27\r
28\r
29;--------------------------------------------------\r
30; \r
31\r
32; copy code to common memory and execute it there\r
33comst macro\r
34 call ?excom\r
35 ds 1\r
36?lcs defl $\r
37 endm\r
38\r
39; mark end of common code snippet\r
40comend macro\r
41?lce defl $\r
42?lclen defl ?lce-?lcs\r
43 org ?lcs-1\r
44 db ?lclen\r
45 org ?lce\r
46 ifndef ?lcmax\r
47?lcmax defl 0\r
48 endif\r
49 if ?lclen gt ?lcmax\r
50?lcmax defl ?lclen\r
51 endif\r
52 endm\r
53\r
54; repeat execution of last common code snippet\r
55comrep macro\r
56 call ?exclst\r
57 endm\r
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
100 jr nz,ddtz_w\r
101\r
102 exx\r
103 ld hl,sysramc\r
104 ld de,topcodbeg\r
105 ld bc,topcodend-topcodbeg\r
106 ldir \r
107 \r
108 ld hl,vartab\r
109 ld de,ddtram\r
110 ld bc,vartabe-vartab\r
111 ldir \r
112 exx\r
113\r
114 ld a,e\r
115 ld (ubbr),a\r
116 \r
117ddtz_w:\r
118 ld hl,MSG ;073c\r
119 call PSTR ;073f\r
120 call ddtei ;0742\r
121\r
122; DDTZ main loop\r
123\r
124DDTZML:\r
125 ld sp,$stack ;0761\r
126 ld hl,l07eah ;0764\r
127 ld (CMD_ERR),hl ;0767\r
128 ld hl,(REG.PC) ;076a\r
129 ld (OFFS.pc),hl ;076d\r
130 call sub_0e68h ;0770\r
131 ld hl,(CMD_RPT) ;0773\r
132 ld de,DDTZML ;0776\r
133 call CP.HL.DE ;0779\r
134 ld a,'>' ;077c\r
135 call OUTCHAR ;077e\r
136 call nz,OUTCHAR ;0781\r
137 call z,OUTBL ;0784\r
138 call INLINE ;0787\r
139 call SKIPBL ;078a\r
140 jr z,exe_hl ;078d\r
141 ld hl,DDTZML ;078f\r
142 ld (CMD_RPT),hl ;0792\r
143 inc de ;0795\r
144 sub '?' ;0796\r
145 jr c,ERROR ;0798\r
146 cp 'Z'+1-'?' ;079a\r
147 jr nc,ERROR ;079c\r
148 add a,a ;079e\r
149 ld hl,CMDTAB ;079f\r
150 call ADD_HL_A ;07a2\r
151 ld a,(hl) ;07a5\r
152 inc hl ;07a6\r
153 ld h,(hl) ;07a7\r
154 ld l,a ;07a8\r
155 jr exe_hl ;07a9\r
156ERROR:\r
157 ld hl,(CMD_ERR) ;07ab\r
158exe_hl:\r
159 call CALL.HL ;07ae\r
160 jr DDTZML ;07b1\r
161\r
162CALL.HL:\r
163 jp (hl) ;07b3\r
164\r
165\r
166CMDTAB:\r
167 defw CMD.?\r
168 defw CMD.@ ;07b4\r
169 defw CMD.A ;07b6\r
170 defw CMD.B ;07b8\r
171 defw CMD.C ;07ba\r
172 defw CMD.D ;07bc\r
173 defw ERROR ;07be\r
174 defw ERROR ;07c0\r
175 defw CMD.G ;07c2\r
176 defw CMD.H ;07c4\r
177 defw CMD.I ;07c6\r
178 defw ERROR ;07c8\r
179 defw ERROR ;07ca\r
180 defw CMD.L ;07cc\r
181 defw CMD.M ;07ce\r
182 defw ERROR ;07d0\r
183 defw CMD.O ;07d2\r
184 defw ERROR ;07d4\r
185 defw CMD.Q ;07d6\r
186 defw CMD.R ;07d8\r
187 defw CMD.S ;07da\r
188 defw CMD.T ;07dc\r
189 defw ERROR ;07de\r
190 defw CMD.V ;07e0\r
191 defw ERROR ;07e2\r
192 defw CMD.X ;07e4\r
193 defw CMD.Y ;07e6\r
194 defw CMD.Z ;07e8\r
195l07eah:\r
196 ld a,'?' ;07ea\r
197 call OUTCHAR ;07ec\r
198 jp CRLF ;07ef\r
199\r
200CMD.?:\r
201 call assert_eol\r
202 ld hl,HLPMSG\r
203 call PSTR\r
204 ret\r
205\r
206DELC:\r
207 ld a,b ;07f2\r
208 or a ;07f3\r
209 ret z ;07f4\r
210 ld a,BS ;07f5\r
211 call $co ;07f7\r
212 ld a,' ' ;07fa\r
213 call $co ;07fc\r
214 ld a,BS ;07ff\r
215 call $co ;0801\r
216 dec hl ;0804\r
217 dec b ;0805\r
218 inc c ;0806\r
219 ld a,(hl) ;0807\r
220 cp ' ' ;0808\r
221 ret nc ;080a\r
222 ld a,BS ;080b\r
223 call $co ;080d\r
224 ld a,' ' ;0810\r
225 call $co ;0812\r
226 ld a,BS ;0815\r
227 call $co ;0817\r
228 ret ;081a\r
229DELL:\r
230 ld a,b ;081b\r
231 or a ;081c\r
232 ret z ;081d\r
233 call DELC ;081e\r
234 jr DELL ;0821\r
235\r
236INLINE:\r
237 push hl ;0823\r
238 ld hl,CI.BUF ;0824\r
239 ld c,(hl) ;0827\r
240 inc hl ;0828\r
241 ld b,000h ;0829\r
242 inc hl ;082b\r
243inlnxtch:\r
244 ld a,c ;082c\r
245 or a ;082d\r
246 jr z,inl_e ;082e\r
247 call $ci ;0830\r
248 cp CR ;0833\r
249 jr z,inl_e ;0835\r
250 cp LF ;0837\r
251 jr z,inl_e ;0839\r
252 cp BS ;083b\r
253 jr nz,l0844h ;083d\r
254 call DELC ;083f\r
255 jr inlnxtch ;0842\r
256l0844h:\r
257 cp DEL ;0844\r
258 jr nz,l084dh ;0846\r
259 call DELC ;0848\r
260 jr inlnxtch ;084b\r
261l084dh:\r
262 cp CNTRX ;084d\r
263 jr nz,l0856h ;084f\r
264 call DELL ;0851\r
265 jr inlnxtch ;0854\r
266l0856h:\r
267 cp TAB ;0856\r
268 jr nz,l085ch ;0858\r
269 ld a,' ' ;085a\r
270l085ch:\r
271 ld (hl),a ;085c\r
272 cp ' ' ;085d\r
273 jr nc,l0869h ;085f\r
274 ld a,'^' ;0861\r
275 call $co ;0863\r
276 ld a,(hl) ;0866\r
277 add a,'@' ;0867\r
278l0869h:\r
279 call $co ;0869\r
280 inc hl ;086c\r
281 inc b ;086d\r
282 dec c ;086e\r
283 jr inlnxtch ;086f\r
284\r
285inl_e:\r
286 ld hl,ci.buf+1 ;0871\r
287 ld (hl),b ;0874\r
288 call CRLF ;0875\r
289 ld de,ci.buf+1 ;0878\r
290 ld a,(de) ;087b\r
291 ld b,a ;087c\r
292 ld c,000h ;087d\r
293 inc b ;087f\r
294l0880h:\r
295 inc de ;0880\r
296 dec b ;0881\r
297 jr z,l08b2h ;0882\r
298 ld a,(de) ;0884\r
299 bit 0,c ;0885\r
300 call z,UPCASE ;0887\r
301 ld (de),a ;088a\r
302 cp '''' ;088b\r
303 jr nz,l0880h ;088d\r
304 push de ;088f\r
305 dec de ;0890\r
306 ld a,(de) ;0891\r
307 cp '''' ;0892\r
308 jr z,l08aeh ;0894\r
309 dec de ;0896\r
310 ld a,(de) ;0897\r
311 cp '^' ;0898\r
312 jr z,l08a2h ;089a\r
313 dec de ;089c\r
314 ld a,(de) ;089d\r
315 cp '^' ;089e\r
316 jr nz,l08aeh ;08a0\r
317l08a2h:\r
318 inc de ;08a2\r
319 push bc ;08a3\r
320 call sub_0a0eh ;08a4\r
321 pop bc ;08a7\r
322 dec de ;08a8\r
323 ld a,(de) ;08a9\r
324 cp '''' ;08aa\r
325 jr z,l08afh ;08ac\r
326l08aeh:\r
327 inc c ;08ae\r
328l08afh:\r
329 pop de ;08af\r
330 jr l0880h ;08b0\r
331l08b2h:\r
332 xor a ;08b2\r
333 ld (de),a ;08b3\r
334 ld de,ci.buf+2 ;08b4\r
335 pop hl ;08b7\r
336 ret ;08b8\r
337\r
338UPCASE:\r
339 cp 'a' ;08b9\r
340 ret c ;08bb\r
341 cp 'z'+1 ;08bc\r
342 ret nc ;08be\r
343 and 05fh ;08bf\r
344 ret ;08c1\r
345\r
346out.hl.@:\r
347 call out.hl ;08c2\r
348 push de ;08c5\r
349 push hl ;08c6\r
350 ld de,(offs.@) ;08c7\r
351 ld a,d ;08cb\r
352 or e ;08cc\r
353 jr z,l08ddh ;08cd\r
354 call OUTBL ;08cf\r
355 ld a,'@' ;08d2\r
356 call OUTCHAR ;08d4\r
357 and a ;08d7\r
358 sbc hl,de ;08d8\r
359 call out.hl ;08da\r
360l08ddh:\r
361 pop hl ;08dd\r
362 pop de ;08de\r
363 ret ;08df\r
364\r
365out.bin.w:\r
366 ld a,h ;08e0\r
367 call out.bin.b ;08e1\r
368 ld a,l ;08e4\r
369out.bin.b:\r
370 ld b,008h ;08e5\r
371l08e7h:\r
372 add a,a ;08e7\r
373 push af ;08e8\r
374 ld a,0 ;08e9\r
375 adc a,a ;08eb\r
376 call out.digit ;08ec\r
377 pop af ;08ef\r
378 djnz l08e7h ;08f0\r
379 ld a,'"' ;08f2\r
380 jp OUTCHAR ;08f4\r
381\r
382sub_08f7h:\r
383 ld a,'-' ;08f7\r
384 call OUTCHAR ;08f9\r
385 dec hl ;08fc\r
386 jp cpl.hl ;08fd\r
387\r
388out.hl.decm:\r
389 push hl ;0900\r
390 call sub_08f7h ;0901\r
391 db 3eh ;0904 ld a,0E5h\r
392out.hl.dec:\r
393 push hl\r
394 ld b,6 ;0906\r
395 call sub_0917h ;0908\r
396 pop hl ;090b\r
397 ld a,'.' ;090c\r
398 call OUTCHAR ;090e\r
399l0911h:\r
400 call OUTBL ;0911\r
401 djnz l0911h ;0914\r
402 ret ;0916\r
403\r
404\r
405sub_0917h:\r
406 dec b ;0917\r
407 push de ;0918\r
408 ld de,10 ;0919\r
409 call DIV_HL_DE ;091c\r
410 ld a,h ;091f\r
411 or l ;0920\r
412 call nz,sub_0917h ;0921\r
413 ld a,e ;0924\r
414 pop de ;0925\r
415 jr out.digit ;0926\r
416\r
417sub_0928h:\r
418 push hl ;0928\r
419 call sub_08f7h ;0929\r
420 call out.hl ;092c\r
421 pop hl ;092f\r
422 ret ;0930\r
423out.hl:\r
424 ld a,h ;0931\r
425 call out.hex ;0932\r
426 ld a,l ;0935\r
427out.hex:\r
428 push af ;0936\r
429 rra ;0937\r
430 rra ;0938\r
431 rra ;0939\r
432 rra ;093a\r
433 call out.digit ;093b\r
434 pop af ;093e\r
435out.digit:\r
436 and 00fh ;093f\r
437 cp 10 ;0941\r
438 jr c,l0947h ;0943\r
439 add a,007h ;0945\r
440l0947h:\r
441 add a,'0' ;0947\r
442 jr OUTCHAR ;0949\r
443l094bh:\r
444 ld a,'-' ;094b\r
445 call OUTCHAR ;094d\r
446 ld a,040h ;0950\r
447out.ascii:\r
448 ex af,af' ;0952\r
449 call outquote ;0953\r
450 ex af,af' ;0956\r
451 push af ;0957\r
452 res 7,a ;0958\r
453 cp ' ' ;095a\r
454 jr nc,l0960h ;095c\r
455 sub 0c0h ;095e\r
456l0960h:\r
457 call OUTCHAR ;0960\r
458 push af ;0963\r
459 cp '''' ;0964\r
460 call z,OUTCHAR ;0966\r
461 pop af ;0969\r
462 ex af,af' ;096a\r
463 call outquote ;096b\r
464 pop af ;096e\r
465 or a ;096f\r
466 ld a,'.' ;0970\r
467 call m,OUTCHAR ;0972\r
468 ex af,af' ;0975\r
469 jr c,l094bh ;0976\r
470 ret ;0978\r
471\r
472outquote:\r
473 ld a,'''' ;0979\r
474OUTCHAR:\r
475 push hl ;097b\r
476 push af ;097c\r
477 and 07fh ;097d\r
478 call $co ;097f\r
479 ld hl,CON.COL ;0982\r
480 inc (hl) ;0985\r
481 pop af ;0986\r
482 pop hl ;0987\r
483 ret ;0988\r
484\r
485inchar:\r
486 call $cists ;0989\r
487 and a ;098c\r
488 ret z ;098d\r
489 call $ci ;098e\r
490 scf ;0991\r
491 ret ;0992\r
492\r
493PSTR:\r
494 ld c,000h ;0993\r
495l0995h:\r
496 ld a,(hl) ;0995\r
497 and a ;0996\r
498 ret z ;0997\r
499 call OUTCHAR ;0998\r
500 inc c ;099b\r
501 inc hl ;099c\r
502 and a ;099d\r
503 ret m ;099e\r
504 jr l0995h ;099f\r
505\r
506outbl6:\r
507 call outbl2 ;09a1\r
508outbl4:\r
509 call outbl2 ;09a4\r
510outbl2:\r
511 call OUTBL ;09a7\r
512OUTBL:\r
513 ld a,' ' ;09aa\r
514 jr OUTCHAR ;09ac\r
515CRLF:\r
516 call inchar ;09ae\r
517 ld a,CR ;09b1\r
518 call OUTCHAR ;09b3\r
519 ld a,LF ;09b6\r
520 call OUTCHAR ;09b8\r
521 ld a,000h ;09bb\r
522 ld (CON.COL),a ;09bd\r
523 jp c,DDTZML ;09c0\r
524 ret ;09c3\r
525\r
526ADD_HL_A:\r
527 add a,l ;09c4\r
528 ld l,a ;09c5\r
529 ret nc ;09c6\r
530 inc h ;09c7\r
531 ret ;09c8\r
532\r
533SKIPBL0:\r
534 inc de ;09c9\r
535SKIPBL:\r
536 ld a,(de) ;09ca\r
537 cp ' ' ;09cb\r
538 jr z,SKIPBL0 ;09cd\r
539 cp 009h ;09cf\r
540 jr z,SKIPBL0 ;09d1\r
541 or a ;09d3\r
542 ret ;09d4\r
543\r
544skip_to_nextarg:\r
545 call SKIPBL ;09d5\r
546 cp ',' ;09d8\r
547 ret nz ;09da\r
548 inc de ;09db\r
549 call SKIPBL ;09dc\r
550 cp a ;09df\r
551 ret ;09e0\r
552\r
553assert_eol:\r
554 call SKIPBL ;09e1\r
555 ret z ;09e4\r
556l09e5h:\r
557 jp ERROR ;09e5\r
558\r
559chk.sp:\r
560 push hl ;09e8\r
561 push de ;09e9\r
562 ld hl,0 ;09ea\r
563 add hl,sp ;09ed\r
564 ld de,$stack-50 ;09ee\r
565 call CP.HL.DE ;09f1\r
566 pop de ;09f4\r
567 pop hl ;09f5\r
568 jr c,l09e5h ;09f6\r
569 ret ;09f8\r
570\r
571CP.HL.DE:\r
572 and a ;09f9\r
573 sbc hl,de ;09fa\r
574 add hl,de ;09fc\r
575 ret ;09fd\r
576\r
577lookupch:\r
578 ld b,000h ;09fe\r
579l0a00h:\r
580 ld a,(hl) ;0a00\r
581 and a ;0a01\r
582 ret z ;0a02\r
583 ld a,(de) ;0a03\r
584 cp (hl) ;0a04\r
585 jr z,l0a0bh ;0a05\r
586 inc hl ;0a07\r
587 inc b ;0a08\r
588 jr l0a00h ;0a09\r
589l0a0bh:\r
590 scf ;0a0b\r
591 inc de ;0a0c\r
592 ret ;0a0d\r
593\r
594sub_0a0eh:\r
595 ld hl,b_0x132A_start ;0a0e\r
596 ld b,07fh ;0a11\r
597 jr l0a17h ;0a13\r
598\r
599sub_0a15h:\r
600 ld b,0ffh ;0a15\r
601l0a17h:\r
602 inc b ;0a17\r
603 ld a,(hl) ;0a18\r
604 and a ;0a19\r
605 ret z ;0a1a\r
606 call l0a27 ;0a1b\r
607 jr nc,l0a17h ;0a1e\r
608 res 7,b ;0a20\r
609 ret ;0a22\r
610\r
611sub_0a23h:\r
612 push bc ;0a23\r
613 res 7,b ;0a24\r
614 db 3eh ;0a26 ld a,0c5h\r
615l0a27:\r
616 push bc ;0a27\r
617 push de ;0a28\r
618l0a29h:\r
619 ld a,(de) ;0a29\r
620 xor (hl) ;0a2a\r
621 and 07fh ;0a2b\r
622 jr nz,l0a41h ;0a2d\r
623 bit 7,(hl) ;0a2f\r
624 inc hl ;0a31\r
625 inc de ;0a32\r
626 jr z,l0a29h ;0a33\r
627 scf ;0a35\r
628 bit 7,b ;0a36\r
629 call z,sub_0d20h ;0a38\r
630 jr nc,l0a44h ;0a3b\r
631 pop af ;0a3d\r
632 scf ;0a3e\r
633 pop bc ;0a3f\r
634 ret ;0a40\r
635\r
636l0a41h:\r
637 call sub_0a50h ;0a41\r
638l0a44h:\r
639 pop de ;0a44\r
640 and a ;0a45\r
641 pop bc ;0a46\r
642 ret ;0a47\r
643\r
644sub_0a48h:\r
645 inc b ;0a48\r
646l0a49h:\r
647 dec b ;0a49\r
648 ret z ;0a4a\r
649 call sub_0a50h ;0a4b\r
650 jr l0a49h ;0a4e\r
651sub_0a50h:\r
652 ld a,(hl) ;0a50\r
653 and a ;0a51\r
654 ret z ;0a52\r
655l0a53h:\r
656 ld a,(hl) ;0a53\r
657 inc hl ;0a54\r
658 and a ;0a55\r
659 ret m ;0a56\r
660 jr l0a53h ;0a57\r
661\r
662get_arg3:\r
663 call get_arg_range ;0a59\r
664 push hl ;0a5c\r
665 push bc ;0a5d\r
666 call skip_to_nextarg ;0a5e\r
667 call get_arg ;0a61\r
668 ex de,hl ;0a64\r
669 pop bc ;0a65\r
670 pop hl ;0a66\r
671 ret ;0a67\r
672\r
673sub_0a68h:\r
674 call EXPR ;0a68\r
675 jr c,error0 ;0a6b\r
676 ret ;0a6d\r
677\r
678get_arg:\r
679 call sub_0a68h ;0a6e\r
680l0a71h:\r
681 jp assert_eol ;0a71\r
682\r
683get_lastarg_def:\r
684 call get_arg_def ;0a74\r
685 jr l0a71h ;0a77\r
686\r
687get_arg_def:\r
688 push hl ;0a79\r
689 call EXPR ;0a7a\r
690 jr c,l0a80h ;0a7d\r
691 ex (sp),hl ;0a7f\r
692l0a80h:\r
693 pop hl ;0a80\r
694 ret ;0a81\r
695\r
696sub_0a82h:\r
697 call sub_0a87h ;0a82\r
698 jr l0a71h ;0a85\r
699\r
700sub_0a87h:\r
701 db 0e6h ;0a87 and 037h (clear carry)\r
702get_arg_range:\r
703 scf\r
704 ex af,af' ;0a89\r
705 push bc ;0a8a\r
706 push hl ;0a8b\r
707 call EXPR ;0a8c\r
708 jr nc,l0a97h ;0a8f\r
709 ex af,af' ;0a91\r
710 jr c,error0 ;0a92\r
711 ex af,af' ;0a94\r
712 pop hl ;0a95\r
713\r
714 defb 03eh ;0a96\r
715l0a97h:\r
716 pop af ;0a97\r
717 call sub_0aa5h ;0a98\r
718 jr nc,l0aa3h ;0a9b\r
719 ex af,af' ;0a9d\r
720 pop bc ;0a9e\r
721 ret nc ;0a9f\r
722error0:\r
723 jp ERROR ;0aa0\r
724\r
725l0aa3h:\r
726 pop af ;0aa3\r
727 ret ;0aa4\r
728\r
729sub_0aa5h:\r
730 call skip_to_nextarg ;0aa5\r
731 cp 'S' ;0aa8\r
732 jr nz,l0aadh ;0aaa\r
733 inc de ;0aac\r
734l0aadh:\r
735 push hl ;0aad\r
736 push af ;0aae\r
737 call EXPR ;0aaf\r
738 jr c,l0ac3h ;0ab2\r
739 ld b,h ;0ab4\r
740 ld c,l ;0ab5\r
741 pop af ;0ab6\r
742 pop hl ;0ab7\r
743 jr z,l0ac1h ;0ab8\r
744 ld a,c ;0aba\r
745 sub l ;0abb\r
746 ld c,a ;0abc\r
747 ld a,b ;0abd\r
748 sbc a,h ;0abe\r
749 ld b,a ;0abf\r
750 inc bc ;0ac0\r
751l0ac1h:\r
752 and a ;0ac1\r
753 ret ;0ac2\r
754\r
755l0ac3h:\r
756 pop af ;0ac3\r
757 pop hl ;0ac4\r
758 jr z,error0 ;0ac5\r
759 scf ;0ac7\r
760 ret ;0ac8\r
761\r
762EXPR:\r
763 call SKIPBL ;0ac9\r
764EXPR1:\r
765 call do_subexpr ;0acc\r
766 ret c ;0acf\r
767 call do_rel_op ;0ad0\r
768 ret nc ;0ad3\r
769 push bc ;0ad4\r
770 push hl ;0ad5\r
771 call do_subexpr ;0ad6\r
772 jr c,error0 ;0ad9\r
773 ex de,hl ;0adb\r
774 ex (sp),hl ;0adc\r
775 and a ;0add\r
776 sbc hl,de ;0ade\r
777 ld hl,0ffffh ;0ae0\r
778 pop de ;0ae3\r
779 ret ;0ae4\r
780\r
781do_op_eq:\r
782 jr z,l0af8h ;0ae5\r
783 jr l0af7h ;0ae7\r
784do_op_ne:\r
785 jr nz,l0af8h ;0ae9\r
786 jr l0af7h ;0aeb\r
787do_op_le:\r
788 jr z,l0af8h ;0aed\r
789do_op_lt:\r
790 jr c,l0af8h ;0aef\r
791 jr l0af7h ;0af1\r
792do_op_gt:\r
793 jr z,l0af7h ;0af3\r
794do_op_ge:\r
795 jr nc,l0af8h ;0af5\r
796l0af7h:\r
797 inc hl ;0af7\r
798l0af8h:\r
799 and a ;0af8\r
800 ret ;0af9\r
801\r
802do_rel_op:\r
803 push hl ;0afa\r
804 ld hl,tab_eq_le_ge ;0afb\r
805 call lookupch ;0afe\r
806 jr nc,l0b28h ;0b01\r
807 ld a,b ;0b03\r
808 or a ;0b04\r
809 jr z,l0b1ch ;0b05\r
810 ld a,(de) ;0b07\r
811 cp '=' ;0b08\r
812 jr nz,l0b11h ;0b0a\r
813 inc de ;0b0c\r
814 inc b ;0b0d\r
815 inc b ;0b0e\r
816 jr l0b1ch ;0b0f\r
817\r
818l0b11h:\r
819 bit 0,b ;0b11\r
820 jr z,l0b1ch ;0b13\r
821 cp '>' ;0b15\r
822 jr nz,l0b1ch ;0b17\r
823 inc de ;0b19\r
824 ld b,005h ;0b1a\r
825l0b1ch:\r
826 ld hl,tab_func_eqlege ;0b1c\r
827 ld a,b ;0b1f\r
828 add a,a ;0b20\r
829 call ADD_HL_A ;0b21\r
830 ld c,(hl) ;0b24\r
831 inc hl ;0b25\r
832 ld b,(hl) ;0b26\r
833 scf ;0b27\r
834l0b28h:\r
835 pop hl ;0b28\r
836 ret ;0b29\r
837\r
838tab_eq_le_ge:\r
839 db '=<>',0\r
840\r
841tab_func_eqlege:\r
842 defw do_op_eq ;0b2e\r
843 defw do_op_lt ;0b30\r
844 defw do_op_gt ;0b32\r
845 defw do_op_le ;0b34\r
846 defw do_op_ge ;0b36\r
847 defw do_op_ne ;0b38\r
848\r
849do_subexpr:\r
850 call do_factor ;0b3a\r
851 ret c ;0b3d\r
852l0b3eh:\r
853 call do_binary_op ;0b3e\r
854 push hl ;0b41\r
855 push bc ;0b42\r
856 call do_factor ;0b43\r
857 pop bc ;0b46\r
858 ex de,hl ;0b47\r
859 ex (sp),hl ;0b48\r
860 jr nc,l0b52h ;0b49\r
861 pop de ;0b4b\r
862 ld a,b ;0b4c\r
863 or c ;0b4d\r
864 ret z ;0b4e\r
865 jp ERROR ;0b4f\r
866\r
867l0b52h:\r
868 ld a,b ;0b52\r
869 or c ;0b53\r
870 push bc ;0b54\r
871 ret nz ;0b55\r
872 pop bc ;0b56\r
873do_op_add:\r
874 add hl,de ;0b57\r
875l0b58h:\r
876 pop de ;0b58\r
877 jr l0b3eh ;0b59\r
878\r
879do_op_sub:\r
880 and a ;0b5b\r
881 sbc hl,de ;0b5c\r
882 jr l0b58h ;0b5e\r
883\r
884do_op_mlt:\r
885 push bc ;0b60\r
886 ld b,h\r
887 ld c,e\r
888 ld h,e\r
889 ld e,l\r
890 mlt bc\r
891 mlt de\r
892 mlt hl\r
893 ld a,h\r
894 add a,c\r
895 add a,e\r
896 ld h,a\r
897 pop bc ;0b72\r
898 jr l0b58h ;0b73\r
899\r
900do_op_div:\r
901 call DIV_HL_DE ;0b75\r
902 jr l0b58h ;0b78\r
903\r
904do_op_mod:\r
905 call DIV_HL_DE ;0b7a\r
906 ex de,hl ;0b7d\r
907 jr l0b58h ;0b7e\r
908\r
909DIV_HL_DE:\r
910 push bc ;0b80\r
911 ex de,hl ;0b81\r
912 ld b,h ;0b82\r
913 ld c,l ;0b83\r
914 ld hl,0 ;0b84\r
915 ld a,16 ;0b87\r
916l0b89h:\r
917 push af ;0b89\r
918 add hl,hl ;0b8a\r
919 ex de,hl ;0b8b\r
920 xor a ;0b8c\r
921 add hl,hl ;0b8d\r
922 ex de,hl ;0b8e\r
923 adc a,l ;0b8f\r
924 sub c ;0b90\r
925 ld l,a ;0b91\r
926 ld a,h ;0b92\r
927 sbc a,b ;0b93\r
928 ld h,a ;0b94\r
929 inc de ;0b95\r
930 jr nc,l0b9ah ;0b96\r
931 add hl,bc ;0b98\r
932 dec de ;0b99\r
933l0b9ah:\r
934 pop af ;0b9a\r
935 dec a ;0b9b\r
936 jr nz,l0b89h ;0b9c\r
937 ex de,hl ;0b9e\r
938 pop bc ;0b9f\r
939 ret ;0ba0\r
940\r
941do_op_and:\r
942 ld a,h ;0ba1\r
943 and d ;0ba2\r
944 ld h,a ;0ba3\r
945 ld a,l ;0ba4\r
946 and e ;0ba5\r
947 ld l,a ;0ba6\r
948 jr l0b58h ;0ba7\r
949\r
950do_op_or:\r
951 ld a,h ;0ba9\r
952 or d ;0baa\r
953 ld h,a ;0bab\r
954 ld a,l ;0bac\r
955 or e ;0bad\r
956 ld l,a ;0bae\r
957 jr l0b58h ;0baf\r
958\r
959do_op_xor:\r
960 ld a,h ;0bb1\r
961 xor d ;0bb2\r
962 ld h,a ;0bb3\r
963 ld a,l ;0bb4\r
964 xor e ;0bb5\r
965 ld l,a ;0bb6\r
966 jr l0b58h ;0bb7\r
967\r
968do_binary_op:\r
969 push hl ;0bb9\r
970 ld hl,tab_op_a ;0bba\r
971 call lookupch ;0bbd\r
972 ld a,b ;0bc0\r
973 ld hl,tab_func_opa ;0bc1\r
974 add a,a ;0bc4\r
975 call ADD_HL_A ;0bc5\r
976 ld c,(hl) ;0bc8\r
977 inc hl ;0bc9\r
978 ld b,(hl) ;0bca\r
979 pop hl ;0bcb\r
980 ret ;0bcc\r
981\r
982tab_op_a:\r
983 DB '+-*/%&!#',0\r
984tab_func_opa:\r
985 defw do_op_add ;0bd6\r
986 defw do_op_sub ;0bd8\r
987 defw do_op_mlt ;0bda\r
988 defw do_op_div ;0bdc\r
989 defw do_op_mod ;0bde\r
990 defw do_op_and ;0be0\r
991 defw do_op_or ;0be2\r
992 defw do_op_xor ;0be4\r
993 defw 0 ;0be6\r
994\r
995fact_factor:\r
996 call do_factor ;0be8\r
997 ret nc ;0beb\r
998 jp ERROR ;0bec\r
999\r
1000do_factor:\r
1001 call chk.sp ;0bef\r
1002 call get.number ;0bf2\r
1003 ret nc ;0bf5\r
1004 inc de ;0bf6\r
1005 ld hl,TOPRAM ;0bf7\r
1006 cp 'T' ;0bfa\r
1007 ret z ;0bfc\r
1008 ld hl,(HILOD) ;0bfd\r
1009 cp 'H' ;0c00\r
1010 ret z ;0c02\r
1011 ld hl,(MAXLOD) ;0c03\r
1012 cp 'M' ;0c06\r
1013 ret z ;0c08\r
1014 ld hl,TPA ;0c09\r
1015 cp 'L' ;0c0c\r
1016 ret z ;0c0e\r
1017 ld hl,(offs.@) ;0c0f\r
1018 cp '@' ;0c12\r
1019 ret z ;0c14\r
1020 ld hl,(OFFS.pc) ;0c15\r
1021 cp '$' ;0c18\r
1022 ret z ;0c1a\r
1023 cp '-' ;0c1b\r
1024 jr z,fact_factneg ;0c1d\r
1025 cp '~' ;0c1f\r
1026 jr z,fact_factinv ;0c21\r
1027 cp '+' ;0c23\r
1028 jr z,fact_factor ;0c25\r
1029 cp '^' ;0c27\r
1030 jr z,fact_reg.CPU ;0c29\r
1031 cp 'Y' ;0c2b\r
1032 jr z,fact_reg.Y ;0c2d\r
1033 cp '(' ;0c2f\r
1034 jr z,fact_mem ;0c31\r
1035 cp '[' ;0c33\r
1036 jp z,EXPR_BRCKT ;0c35 [ expression ]\r
1037 cp '''' ;0c38\r
1038 jr z,fact_factstring ;0c3a\r
1039 dec de ;0c3c\r
1040 scf ;0c3d\r
1041 ret ;0c3e\r
1042\r
1043fact_reg.Y:\r
1044 call get.decdigit ;0c3f\r
1045 jp c,ERROR ;0c42\r
1046 inc de ;0c45\r
1047 add a,a ;0c46\r
1048 ld hl,reg.Y ;0c47\r
1049 call ADD_HL_A ;0c4a\r
1050 ld a,(hl) ;0c4d\r
1051 inc hl ;0c4e\r
1052 ld h,(hl) ;0c4f\r
1053 ld l,a ;0c50\r
1054 and a ;0c51\r
1055 ret ;0c52\r
1056fact_factstring:\r
1057 ld hl,0 ;0c53\r
1058l0c56h:\r
1059 ld a,(de) ;0c56\r
1060 cp '''' ;0c57\r
1061 jr z,l0c62h ;0c59\r
1062 and a ;0c5b\r
1063 ret z ;0c5c\r
1064l0c5dh:\r
1065 ld h,l ;0c5d\r
1066 ld l,a ;0c5e\r
1067 inc de ;0c5f\r
1068 jr l0c56h ;0c60\r
1069\r
1070l0c62h:\r
1071 inc de ;0c62\r
1072 ld a,(de) ;0c63\r
1073 cp '''' ;0c64\r
1074 jr z,l0c5dh ;0c66\r
1075 sub '.' ;0c68\r
1076 or a ;0c6a\r
1077 ret nz ;0c6b\r
1078 inc de ;0c6c\r
1079 set 7,l ;0c6d\r
1080 ret ;0c6f\r
1081\r
1082fact_reg.CPU:\r
1083 call sub_1315h ;0c70\r
1084 jr nc,l0cbbh ;0c73\r
1085 ld a,(hl) ;0c75\r
1086 inc hl ;0c76\r
1087 ld h,(hl) ;0c77\r
1088 ld l,a ;0c78\r
1089 and a ;0c79\r
1090 bit 0,c ;0c7a\r
1091 ret nz ;0c7c\r
1092 ld h,000h ;0c7d\r
1093 ret ;0c7f\r
1094\r
1095fact_factneg:\r
1096 call fact_factor ;0c80\r
1097 dec hl ;0c83\r
1098cpl.hl:\r
1099 ld a,h ;0c84\r
1100 cpl ;0c85\r
1101 ld h,a ;0c86\r
1102 ld a,l ;0c87\r
1103 cpl ;0c88\r
1104 ld l,a ;0c89\r
1105 ret ;0c8a\r
1106fact_factinv:\r
1107 call fact_factor ;0c8b\r
1108 jr cpl.hl ;0c8e\r
1109\r
1110fact_mem:\r
1111 call EXPR1 ;0c90\r
1112 jr c,l0cbbh ;0c93\r
1113 ld a,(de) ;0c95\r
1114 cp ')' ;0c96\r
1115 jr nz,l0cbbh ;0c98\r
1116 inc de ;0c9a\r
1117 comst\r
1118 ld a,(hl) ;0c9f\r
1119 inc hl ;\r
1120 ld h,(hl) ;\r
1121 comend\r
1122 ld l,a ;0ca7\r
1123 ld a,(de) ;0ca8\r
1124 inc de ;0ca9\r
1125 cp '.' ;0caa\r
1126 ret z ;0cac\r
1127 dec de ;0cad\r
1128 xor a ;0cae\r
1129 ld h,a ;0caf\r
1130 ret ;0cb0\r
1131\r
1132EXPR_BRCKT:\r
1133 call EXPR1 ;0cb1\r
1134 jr c,l0cbbh ;0cb4\r
1135 ld a,(de) ;0cb6\r
1136 cp ']' ;0cb7\r
1137 inc de ;0cb9\r
1138 ret z ;0cba\r
1139l0cbbh:\r
1140 jp ERROR ;0cbb\r
1141\r
1142get.number:\r
1143 call get.hexdigit ;0cbe\r
1144 ret c ;0cc1\r
1145 push de ;0cc2\r
1146l0cc3h:\r
1147 inc de ;0cc3\r
1148 call get.hexdigit ;0cc4\r
1149 jr nc,l0cc3h ;0cc7\r
1150 pop de ;0cc9\r
1151 cp '.' ;0cca\r
1152 jr z,l0d04h ;0ccc\r
1153 cp '"' ;0cce\r
1154 jr z,l0ce9h ;0cd0\r
1155 ld hl,0 ;0cd2\r
1156l0cd5h:\r
1157 call get.hexdigit ;0cd5\r
1158 jr c,l0ce4h ;0cd8\r
1159 add hl,hl ;0cda\r
1160 add hl,hl ;0cdb\r
1161 add hl,hl ;0cdc\r
1162 add hl,hl ;0cdd\r
1163 call ADD_HL_A ;0cde\r
1164 inc de ;0ce1\r
1165 jr l0cd5h ;0ce2\r
1166l0ce4h:\r
1167 xor 'H' ;0ce4\r
1168 ret nz ;0ce6\r
1169 inc de ;0ce7\r
1170 ret ;0ce8\r
1171\r
1172l0ce9h:\r
1173 ld hl,0 ;0ce9\r
1174l0cech:\r
1175 call get.decdigit ;0cec\r
1176l0cefh:\r
1177 inc de ;0cef\r
1178 jr c,l0cf8h ;0cf0\r
1179 add hl,hl ;0cf2\r
1180 call ADD_HL_A ;0cf3\r
1181 jr l0cech ;0cf6\r
1182l0cf8h:\r
1183 cp '"' ;0cf8\r
1184 jp nz,ERROR ;0cfa\r
1185 call get.decdigit ;0cfd\r
1186 jr nc,l0cefh ;0d00\r
1187 or a ;0d02\r
1188 ret ;0d03\r
1189l0d04h:\r
1190 ld hl,0 ;0d04\r
1191l0d07h:\r
1192 call get.decdigit ;0d07\r
1193 inc de ;0d0a\r
1194 jr c,l0d1ah ;0d0b\r
1195 push bc ;0d0d\r
1196 add hl,hl ;0d0e hl *= 10\r
1197 ld b,h ;0d0f\r
1198 ld c,l ;0d10\r
1199 add hl,hl ;0d11\r
1200 add hl,hl ;0d12\r
1201 add hl,bc ;0d13\r
1202 pop bc ;0d14\r
1203 call ADD_HL_A ;0d15\r
1204 jr l0d07h ;0d18\r
1205l0d1ah:\r
1206 cp '.' ;0d1a\r
1207 ret z ;0d1c\r
1208 jp ERROR ;0d1d\r
1209\r
1210sub_0d20h:\r
1211 ld a,(de) ;0d20\r
1212 cp 05bh ;0d21\r
1213 jr l0d28h ;0d23\r
1214\r
1215get.hexdigit:\r
1216 ld a,(de) ;0d25\r
1217sub_0d26h:\r
1218 cp 'F'+1 ;0d26\r
1219l0d28h:\r
1220 ccf ;0d28\r
1221 ret c ;0d29\r
1222 cp 'A' ;0d2a\r
1223 jr c,l0d32h ;0d2c\r
1224 sub 'A'-10 ;0d2e\r
1225 ret ;0d30\r
1226\r
1227get.decdigit:\r
1228 ld a,(de) ;0d31\r
1229l0d32h:\r
1230 cp '9'+1 ;0d32\r
1231 jr l0d39h ;0d34\r
1232get.bindigit:\r
1233 ld a,(de) ;0d36\r
1234 cp '1'+1 ;0d37\r
1235l0d39h:\r
1236 ccf ;0d39\r
1237 ret c ;0d3a\r
1238 cp '0' ;0d3b\r
1239 ret c ;0d3d\r
1240 sub '0' ;0d3e\r
1241 ret ;0d40\r
1242\r
1243l0d41h:\r
1244 call assert_eol ;0d41\r
1245\r
1246prnt_cpustat:\r
1247 call prnt_f ;0d44\r
1248 call outbl2 ;0d47\r
1249 ld hl,b_0x0DFD_start ;0d4a\r
1250 ld de,b_0x0E1D_start ;0d4d\r
1251 ld b,006h ;0d50\r
1252l0d52h:\r
1253 call prnt_regs ;0d52\r
1254 djnz l0d52h ;0d55\r
1255 push hl ;0d57\r
1256 push de ;0d58\r
1257 ld iy,(REG.PC) ;0d59\r
1258 call sub_1f77h ;0d5d\r
1259 exx ;0d60\r
1260 ex af,af' ;0d61\r
1261 call CRLF ;0d62\r
1262 call prnt_f2 ;0d65\r
1263 call outbl2 ;0d68\r
1264 pop de ;0d6b\r
1265 pop hl ;0d6c\r
1266 ld b,007h ;0d6d\r
1267l0d6fh:\r
1268 call prnt_regs ;0d6f\r
1269 djnz l0d6fh ;0d72\r
1270 exx ;0d74\r
1271 ex af,af' ;0d75\r
1272 and a ;0d76\r
1273 jr z,l0d7fh ;0d77\r
1274 call outbl6 ;0d79\r
1275 call sub_1f5bh ;0d7c\r
1276l0d7fh:\r
1277 jp crlf ;0d7f\r
1278\r
1279prnt_f:\r
1280 ld a,(reg.f) ;0d82\r
1281 call prnt_flags ;0d85\r
1282 ld a,(reg.iff) ;0d88\r
1283 cp 0f3h ;0d8b\r
1284 jp z,outbl ;0d8d\r
1285 ld a,'E' ;0d90\r
1286 jp outchar ;0d92\r
1287\r
1288prnt_f2:\r
1289 ld a,(reg.f2) ;0d95\r
1290 call prnt_flags ;0d98\r
1291 jp outbl ;0d9b\r
1292\r
1293prnt_flags:\r
1294 ld b,a ;0d9e\r
1295 ld a,'S' ;0d9f\r
1296 call sub_0dbeh ;0da1\r
1297 ld a,'Z' ;0da4\r
1298 call sub_0dbeh ;0da6\r
1299 rl b ;0da9\r
1300 ld a,'H' ;0dab\r
1301 call sub_0dbeh ;0dad\r
1302 rl b ;0db0\r
1303 ld a,'V' ;0db2\r
1304 call sub_0dbeh ;0db4\r
1305 ld a,'N' ;0db7\r
1306 call sub_0dbeh ;0db9\r
1307 ld a,'C' ;0dbc\r
1308sub_0dbeh:\r
1309 rl b ;0dbe\r
1310 jp c,OUTCHAR ;0dc0\r
1311 jp OUTBL ;0dc3\r
1312\r
1313prnt_regs:\r
1314 push bc ;0dc6\r
1315 push de ;0dc7\r
1316 call PSTR ;0dc8\r
1317 ld a,'=' ;0dcb\r
1318 call OUTCHAR ;0dcd\r
1319 ex (sp),hl ;0dd0\r
1320 ld e,(hl) ;0dd1\r
1321 inc hl ;0dd2\r
1322 ld d,(hl) ;0dd3\r
1323 inc hl ;0dd4\r
1324 ld a,(hl) ;0dd5\r
1325 inc hl ;0dd6\r
1326 push hl ;0dd7\r
1327 and a ;0dd8\r
1328 jr z,l0df2h ;0dd9\r
1329 push af ;0ddb\r
1330 ld a,(de) ;0ddc\r
1331 ld l,a ;0ddd\r
1332 inc de ;0dde\r
1333 ld a,(de) ;0ddf\r
1334 ld h,a ;0de0\r
1335 pop af ;0de1\r
1336 dec a ;0de2\r
1337 jr z,l0dedh ;0de3\r
1338 call out.hl.@ ;0de5\r
1339 call z,outbl6 ;0de8\r
1340 jr l0df6h ;0deb\r
1341l0dedh:\r
1342 call out.hl ;0ded\r
1343 jr l0df6h ;0df0\r
1344l0df2h:\r
1345 ld a,(de) ;0df2\r
1346 call out.hex ;0df3\r
1347l0df6h:\r
1348 call OUTBL ;0df6\r
1349 pop de ;0df9\r
1350 pop hl ;0dfa\r
1351 pop bc ;0dfb\r
1352 ret ;0dfc\r
1353\r
1354b_0x0DFD_start:\r
1355 DC 'A '\r
1356 DC 'BC '\r
1357 DC 'DE '\r
1358 DC 'HL '\r
1359 DC 'SP'\r
1360 DC 'PC'\r
1361 DC 'A'''\r
1362 DC 'BC'''\r
1363 DC 'DE'''\r
1364 DC 'HL'''\r
1365 DC 'IX'\r
1366 DC 'IY'\r
1367 DC 'I'\r
1368 DB 0\r
1369\r
1370b_0x0E1D_start:\r
1371 defw reg.a ;0e1d\r
1372 defb 000h ;0e1f\r
1373 defw reg.c ;0e20\r
1374 defb 001h ;0e22\r
1375 defw reg.e ;0e23\r
1376 defb 001h ;0e25\r
1377 defw reg.l ;0e26\r
1378 defb 001h ;0e28\r
1379 defw reg.sp ;0e29\r
1380 defb 001h ;0e2b\r
1381 defw reg.pc ;0e2c\r
1382 defb 002h ;0e2e\r
1383 defw reg.a2 ;0e2f\r
1384 defb 000h ;0e31\r
1385 defw reg.c2 ;0e32\r
1386 defb 001h ;0e34\r
1387 defw reg.e2 ;0e35\r
1388 defb 001h ;0e37\r
1389 defw reg.l2 ;0e38\r
1390 defb 001h ;0e3a\r
1391 defw reg.ix ;0e3b\r
1392 defb 001h ;0e3d\r
1393 defw reg.iy ;0e3e\r
1394 defb 001h ;0e40\r
1395 defw reg.i ;0e41\r
1396 dw 0 ;0e43\r
1397\r
1398CMD.G:\r
1399 sub a ;0e45\r
1400 ld (TCFLG),a ;0e46\r
1401 ld (XA747),a ;0e49\r
1402 call EXPR ;0e4c\r
1403 jr c,l0e54h ;0e4f\r
1404 ld (REG.PC),hl ;0e51\r
1405l0e54h:\r
1406 call SKIPBL ;0e54\r
1407 jp z,l1183h ;0e57\r
1408 cp ';' ;0e5a\r
1409 jp nz,ERROR ;0e5c\r
1410 inc de ;0e5f\r
1411 ld a,002h ;0e60\r
1412 call sub_0f24h ;0e62\r
1413 jp l1183h ;0e65\r
1414\r
1415sub_0e68h:\r
1416 ld b,BP_CNT ;0e68\r
1417 ld ix,bp_tab ;0e6a\r
1418l0e6eh:\r
1419 ld a,(ix+000h) ;0e6e\r
1420 and 0f1h ;0e71\r
1421 ld (ix+000h),a ;0e73\r
1422 call sub_11c5h ;0e76\r
1423 ld de,BP_SIZE ;0e79\r
1424 add ix,de ;0e7c\r
1425 djnz l0e6eh ;0e7e\r
1426 ret ;0e80\r
1427\r
1428CMD.B:\r
1429 call SKIPBL ;0e81\r
1430 jr z,l0ecbh ;0e84\r
1431 inc de ;0e86\r
1432 cp 'X' ;0e87\r
1433 jr z,l0e91h ;0e89\r
1434 dec de ;0e8b\r
1435 ld a,001h ;0e8c\r
1436 jp sub_0f24h ;0e8e\r
1437l0e91h:\r
1438 call SKIPBL ;0e91\r
1439 jr z,l0ea6h ;0e94\r
1440l0e96h:\r
1441 call EXPR ;0e96\r
1442 jp c,assert_eol ;0e99\r
1443 push de ;0e9c\r
1444 call sub_0ea7h ;0e9d\r
1445 pop de ;0ea0\r
1446 call skip_to_nextarg ;0ea1\r
1447 jr l0e96h ;0ea4\r
1448l0ea6h:\r
1449 scf ;0ea6\r
1450sub_0ea7h:\r
1451 ld b,BP_CNT ;0ea7\r
1452 ld ix,bp_tab ;0ea9\r
1453l0eadh:\r
1454 push af ;0ead\r
1455 jr c,l0ebbh ;0eae\r
1456 ld e,(ix+002h) ;0eb0\r
1457 ld d,(ix+003h) ;0eb3\r
1458 call CP.HL.DE ;0eb6\r
1459 jr nz,l0ec2h ;0eb9\r
1460l0ebbh:\r
1461 ld (ix+000h),000h ;0ebb\r
1462 call sub_11c5h ;0ebf\r
1463l0ec2h:\r
1464 ld de,BP_SIZE ;0ec2\r
1465 add ix,de ;0ec5\r
1466 pop af ;0ec7\r
1467 djnz l0eadh ;0ec8\r
1468 ret ;0eca\r
1469l0ecbh:\r
1470 ld b,BP_CNT ;0ecb\r
1471 ld ix,bp_tab ;0ecd\r
1472l0ed1h:\r
1473 bit 0,(ix+000h) ;0ed1\r
1474 jr z,l0f1ch ;0ed5\r
1475 ld a,'R' ;0ed7\r
1476 bit 4,(ix+000h) ;0ed9\r
1477 jr nz,l0ee1h ;0edd\r
1478 ld a,' ' ;0edf\r
1479l0ee1h:\r
1480 call OUTCHAR ;0ee1\r
1481 call OUTBL ;0ee4\r
1482 ld l,(ix+002h) ;0ee7\r
1483 ld h,(ix+003h) ;0eea\r
1484 call out.hl.@ ;0eed\r
1485 call outbl2 ;0ef0\r
1486 ld a,':' ;0ef3\r
1487 call OUTCHAR ;0ef5\r
1488 ld l,(ix+004h) ;0ef8\r
1489 ld h,(ix+005h) ;0efb\r
1490 call out.hl ;0efe\r
1491 ld l,(ix+006h) ;0f01\r
1492 ld h,(ix+007h) ;0f04\r
1493 ld a,h ;0f07\r
1494 or l ;0f08\r
1495 jr z,l0f19h ;0f09\r
1496 call outbl4 ;0f0b\r
1497 ld a,'I' ;0f0e\r
1498 call OUTCHAR ;0f10\r
1499 call outbl2 ;0f13\r
1500 call PSTR ;0f16\r
1501l0f19h:\r
1502 call CRLF ;0f19\r
1503l0f1ch:\r
1504 ld de,BP_SIZE ;0f1c\r
1505 add ix,de ;0f1f\r
1506 djnz l0ed1h ;0f21\r
1507 ret ;0f23\r
1508\r
1509sub_0f24h:\r
1510 ld b,a ;0f24\r
1511 call SKIPBL ;0f25\r
1512 ret z ;0f28\r
1513 cp 'R' ;0f29\r
1514 jr nz,l0f30h ;0f2b\r
1515 inc de ;0f2d\r
1516 set 4,b ;0f2e\r
1517l0f30h:\r
1518 push bc ;0f30\r
1519 call EXPR ;0f31\r
1520 jp c,ERROR ;0f34\r
1521 pop bc ;0f37\r
1522 bit 0,b ;0f38\r
1523 push bc ;0f3a\r
1524 push de ;0f3b\r
1525 push hl ;0f3c\r
1526 call nz,sub_0ea7h ;0f3d\r
1527 pop hl ;0f40\r
1528 call sub_0f68h ;0f41\r
1529 pop de ;0f44\r
1530 ld (ix+002h),l ;0f45\r
1531 ld (ix+003h),h ;0f48\r
1532 call sub_0f80h ;0f4b\r
1533 ld (ix+004h),l ;0f4e\r
1534 ld (ix+005h),h ;0f51\r
1535 call sub_0f91h ;0f54\r
1536 ld (ix+006h),l ;0f57\r
1537 ld (ix+007h),h ;0f5a\r
1538 call skip_to_nextarg ;0f5d\r
1539 pop af ;0f60\r
1540 ld (ix+000h),a ;0f61\r
1541 and 00fh ;0f64\r
1542 jr sub_0f24h ;0f66\r
1543sub_0f68h:\r
1544 ld b,BP_CNT ;0f68\r
1545 ld ix,bp_tab ;0f6a\r
1546l0f6eh:\r
1547 ld a,(ix+000h) ;0f6e\r
1548 and 00fh ;0f71\r
1549 ret z ;0f73\r
1550 push bc ;0f74\r
1551 ld bc,BP_SIZE ;0f75\r
1552 add ix,bc ;0f78\r
1553 pop bc ;0f7a\r
1554 djnz l0f6eh ;0f7b\r
1555 jp ERROR ;0f7d\r
1556\r
1557sub_0f80h:\r
1558 call SKIPBL ;0f80\r
1559 ld hl,1 ;0f83\r
1560 cp 03ah ;0f86\r
1561 ret nz ;0f88\r
1562 inc de ;0f89\r
1563 call EXPR ;0f8a\r
1564 jp c,ERROR ;0f8d\r
1565 ret ;0f90\r
1566sub_0f91h:\r
1567 call SKIPBL ;0f91\r
1568 cp 049h ;0f94\r
1569 ld hl,0 ;0f96\r
1570 ret nz ;0f99\r
1571 inc de ;0f9a\r
1572 call SKIPBL ;0f9b\r
1573 push de ;0f9e\r
1574 call EXPR ;0f9f\r
1575 jp c,ERROR ;0fa2\r
1576 ex de,hl ;0fa5\r
1577 pop de ;0fa6\r
1578 push de ;0fa7\r
1579 sbc hl,de ;0fa8\r
1580 ld b,h ;0faa\r
1581 ld c,l ;0fab\r
1582 ld hl,(sexp1) ;0fac\r
1583 push hl ;0faf\r
1584 add hl,bc ;0fb0\r
1585 ld de,sexpbufe ;0fb1\r
1586 call CP.HL.DE ;0fb4\r
1587 jp nc,ERROR ;0fb7\r
1588 pop hl ;0fba\r
1589 ld (sexp2),hl ;0fbb\r
1590 pop de ;0fbe\r
1591 ex de,hl ;0fbf\r
1592 ldir ;0fc0\r
1593 xor a ;0fc2\r
1594 ld (de),a ;0fc3\r
1595 inc de ;0fc4\r
1596 ex de,hl ;0fc5\r
1597 ld (sexp1),hl ;0fc6\r
1598 ld hl,(sexp2) ;0fc9\r
1599 ret ;0fcc\r
1600\r
1601bpddtz:\r
1602 if ROMSYS\r
1603 ld h,ROMEN ;0fcd\r
1604 jr z,l0fd2h ;0fcf\r
1605 inc h ;0fd1\r
1606l0fd2h:\r
1607 push hl ;0fd2 save rom enable stat\r
1608 endif\r
1609 push bc ;0fd3\r
1610 push de ;0fd4\r
1611 push ix ;0fd5\r
1612 push iy ;0fd7\r
1613 ld a,i ;0fd9\r
1614 ld h,a ;0fdb\r
1615 ld l,000h ;0fdc\r
1616 push hl ;0fde\r
1617 ld a,0f3h ;0fdf DI\r
1618 jp po,l0fe6h ;0fe1\r
1619 ld a,0fbh ;0fe4 EI\r
1620l0fe6h:\r
1621 ld (reg.iff),a ;0fe6\r
1622 ld hl,ivtab ;0fe9\r
1623 ld a,h ;0fec\r
1624 ld i,a ;0fed\r
1625 call ddtei ;0fef\r
1626 ex af,af' ;0ff2\r
1627 push af ;0ff3\r
1628 exx ;0ff4\r
1629 push bc ;0ff5\r
1630 push de ;0ff6\r
1631 push hl ;0ff7\r
1632 call bp.unset ;0ff8\r
1633 in0 a,(itc) ;0ffb\r
1634 jp p,l1017h ;0ffe\r
1635 res TRAP,a ;1001\r
1636 out0 (itc),a ;1003\r
1637 bit UFO,a ;1006\r
1638 jr z,l1011h ;1008\r
1639 ld hl,(REG.PC) ;100a\r
1640 dec hl ;100d\r
1641 ld (REG.PC),hl ;100e\r
1642l1011h:\r
1643 ld hl,MSG_trap ;1011\r
1644 call PSTR ;1014\r
1645l1017h:\r
1646 ld a,(XBFE8) ;1017\r
1647 dec a ;101a\r
1648 jr z,l1051h ;101b\r
1649 call inchar ;101d\r
1650 jr c,l102eh ;1020\r
1651 call sub_1059h ;1022\r
1652 and a ;1025\r
1653 jp z,l1183h ;1026\r
1654 and 083h ;1029\r
1655 jp z,l284ah ;102b\r
1656l102eh:\r
1657 call sub_0e68h ;102e\r
1658 call prnt_cpustat ;1031\r
1659 jp DDTZML ;1034\r
1660\r
1661MSG_trap:\r
1662 DB CR,LF,'Undefined opcode trap'\r
1663 DB CR,LF,0\r
1664\r
1665l1051h:\r
1666 ld (XBFE8),a ;1051\r
1667 ld c,007h ;1054\r
1668 jp l119fh ;1056\r
1669sub_1059h:\r
1670 ld a,080h ;1059\r
1671 ex af,af' ;105b\r
1672 sub a ;105c\r
1673 ld (XA747),a ;105d\r
1674 ld b,BP_CNT ;1060\r
1675 ld ix,bp_tab ;1062\r
1676l1066h:\r
1677 ld a,(ix+000h) ;1066\r
1678 and 007h ;1069\r
1679 jr z,l107eh ;106b\r
1680 ld e,(ix+002h) ;106d\r
1681 ld d,(ix+003h) ;1070\r
1682 ld hl,(REG.PC) ;1073\r
1683 call CP.HL.DE ;1076\r
1684 push bc ;1079\r
1685 call z,sub_1087h ;107a\r
1686 pop bc ;107d\r
1687l107eh:\r
1688 ld de,BP_SIZE ;107e\r
1689 add ix,de ;1081\r
1690 djnz l1066h ;1083\r
1691 ex af,af' ;1085\r
1692 ret ;1086\r
1693sub_1087h:\r
1694 ex af,af' ;1087\r
1695 res 7,a ;1088\r
1696 ex af,af' ;108a\r
1697 ld e,(ix+006h) ;108b\r
1698 ld d,(ix+007h) ;108e\r
1699 ld a,d ;1091\r
1700 or e ;1092\r
1701 ld hl,0ffffh ;1093\r
1702 call nz,EXPR ;1096\r
1703 ld a,h ;1099\r
1704 or l ;109a\r
1705 jr z,l10aeh ;109b\r
1706 ld e,(ix+004h) ;109d\r
1707 ld d,(ix+005h) ;10a0\r
1708 dec de ;10a3\r
1709 ld a,d ;10a4\r
1710 or e ;10a5\r
1711 jr z,l10b9h ;10a6\r
1712 ld (ix+004h),e ;10a8\r
1713 ld (ix+005h),d ;10ab\r
1714l10aeh:\r
1715 bit 4,(ix+000h) ;10ae\r
1716 ret z ;10b2\r
1717 ld a,001h ;10b3\r
1718 ld (XA747),a ;10b5\r
1719 ret ;10b8\r
1720l10b9h:\r
1721 ex af,af' ;10b9\r
1722 or (ix+000h) ;10ba\r
1723 ex af,af' ;10bd\r
1724 ret\r
1725\r
1726bp.unset:\r
1727 ld b,BP_CNT ;10bf\r
1728 ld ix,bp_tab ;10c1\r
1729l10c5h:\r
1730 bit 5,(ix+000h) ;10c5\r
1731 res 5,(ix+000h) ;10c9\r
1732 jr z,l10e7h ;10cd\r
1733 ld l,(ix+002h) ;10cf\r
1734 ld h,(ix+003h) ;10d2\r
1735 ld a,(ddtrst) ;10d5\r
1736 comst ;10e2\r
1737 cp (hl) ;10dc\r
1738 comend\r
1739 jr nz,l10e7h ;10dd\r
1740 ld a,(ix+001h) ;10df\r
1741 comst ;10e2\r
1742 ld (hl),a ;10e6\r
1743 comend\r
1744l10e7h:\r
1745 res 3,(ix+000h) ;10e7\r
1746 ld de,BP_SIZE ;10eb\r
1747 add ix,de ;10ee\r
1748 djnz l10c5h ;10f0\r
1749 ret ;10f2\r
1750sub_10f3h:\r
1751 ld b,BP_CNT ;10f3\r
1752 ld ix,bp_tab ;10f5\r
1753l10f9h:\r
1754 ld a,(ix+000h) ;10f9\r
1755 and 003h ;10fc\r
1756 jr z,l110dh ;10fe\r
1757 ld e,(ix+002h) ;1100\r
1758 ld d,(ix+003h) ;1103\r
1759 ld hl,(REG.PC) ;1106\r
1760 call CP.HL.DE ;1109\r
1761 ret z ;110c\r
1762l110dh:\r
1763 ld de,BP_SIZE ;110d\r
1764 add ix,de ;1110\r
1765 djnz l10f9h ;1112\r
1766 sub a ;1114\r
1767 inc a ;1115\r
1768 ret ;1116\r
1769sub_1117h:\r
1770 call sub_0f68h ;1117\r
1771 ld (ix+004h),001h ;111a\r
1772 ld (ix+005h),000h ;111e\r
1773 ld (ix+002h),l ;1122\r
1774 ld (ix+003h),h ;1125\r
1775 ld (ix+006h),000h ;1128\r
1776 ld (ix+007h),000h ;112c\r
1777 ld a,(XBFE8) ;1130\r
1778 and a ;1133\r
1779 ld a,008h ;1134\r
1780 jr nz,l113ah ;1136\r
1781 ld a,004h ;1138\r
1782l113ah:\r
1783 ld (ix+000h),a ;113a\r
1784 ret ;113d\r
1785\r
1786bp.set:\r
1787 ld b,BP_CNT ;113e\r
1788 ld ix,bp_tab ;1140\r
1789l1144h:\r
1790 ld a,(ix+000h) ;1144\r
1791 and c ;1147\r
1792 jr z,l117bh ;1148\r
1793 set 5,(ix+000h) ;114a\r
1794 ld l,(ix+002h) ;114e\r
1795 ld h,(ix+003h) ;1151\r
1796\r
1797 if 0\r
1798\r
1799 comst ;1154\r
1800 ld a,(hl) ;1158\r
1801 comend\r
1802 ld (ix+001h),a ;1159\r
1803 ld a,(ddtrst) ;115c\r
1804 comst ;115f\r
1805 ld (hl),a ;1163\r
1806 comend\r
1807 and 038h ;1164\r
1808 ld h,000h ;1166\r
1809 ld l,a ;1168\r
1810 ld a,0c3h ;1169\r
1811 comrep ;116b\r
1812 inc hl ;116e\r
1813 ld de,bpent ;116f\r
1814 ld a,e ;1172\r
1815 comrep ;1173\r
1816 inc hl ;1176\r
1817 ld a,d ;1177\r
1818 comrep ;1178\r
1819 \r
1820 else\r
1821\r
1822 ld a,(ddtrst) ;115c\r
1823 comst ;115f\r
1824 ld e,(hl) ;1158\r
1825 ld (hl),a ;1163\r
1826 comend\r
1827 ld (ix+001h),e ;1159\r
1828 and 038h ;1164\r
1829 ld h,0 ;1166\r
1830 ld l,a ;1168\r
1831 ld de,bpent ;116f\r
1832 comst ;\r
1833 ld (hl),0c3h ;1169\r
1834 inc hl ;116e\r
1835 ld (hl),e ;1172\r
1836 inc hl ;1176\r
1837 ld (hl),d ;1177\r
1838 comend\r
1839\r
1840 endif\r
1841 \r
1842l117bh:\r
1843 ld de,BP_SIZE ;117b\r
1844 add ix,de ;117e\r
1845 djnz l1144h ;1180\r
1846 ret\r
1847 ;1182\r
1848l1183h:\r
1849 sub a ;1183\r
1850 ld (XBFE8),a ;1184\r
1851 ld a,(XA747) ;1187\r
1852 and a ;118a\r
1853 call nz,prnt_cpustat ;118b\r
1854 call sub_10f3h ;118e\r
1855 ld c,007h ;1191\r
1856 jr nz,l119fh ;1193\r
1857 ld a,001h ;1195\r
1858 ld (XBFE8),a ;1197\r
1859 call sub_26e7h ;119a\r
1860 ld c,008h ;119d\r
1861l119fh:\r
1862 call bp.set ;119f\r
1863 ld sp,$stack ;11a2 set/restore user cpu state\r
1864 pop hl ;11a5\r
1865 pop de ;11a6\r
1866 pop bc ;11a7\r
1867 pop af ;11a8\r
1868 exx ;11a9\r
1869 ex af,af' ;11aa\r
1870 pop af ;11ab\r
1871 ld i,a ;11ac\r
1872 pop iy ;11ae\r
1873 pop ix ;11b0\r
1874 pop de ;11b2\r
1875 pop bc ;11b3\r
1876 if ROMSYS\r
1877 pop hl ;11b4\r
1878 ld a,l ;11b5\r
1879 and M_MWI ;11b6\r
1880 ld l,a ;11b8\r
1881 di ;11b9\r
1882 in0 a,(dcntl) ;11ba\r
1883 and ~M_MWI ;11bd\r
1884 or l ;11bf\r
1885 ld l,a ;11c0\r
1886 ld a,h ;11c1\r
1887 else\r
1888 pop hl\r
1889 di\r
1890 endif\r
1891 jp $go ;11c2 common ram, switch banks and go to user prog\r
1892\r
1893sub_11c5h:\r
1894 ld a,(ix+000h) ;11c5\r
1895 and 003h ;11c8\r
1896 ret nz ;11ca\r
1897 ld e,(ix+006h) ;11cb\r
1898 ld d,(ix+007h) ;11ce\r
1899 ld a,d ;11d1\r
1900 or e ;11d2\r
1901 ret z ;11d3\r
1902 push bc ;11d4\r
1903 ld h,d ;11d5\r
1904 ld l,e ;11d6\r
1905 sub a ;11d7\r
1906 ld (ix+006h),a ;11d8\r
1907 ld (ix+007h),a ;11db\r
1908 ld bc,0ffffh ;11de\r
1909 cpir ;11e1\r
1910l11e3h:\r
1911 push de ;11e3\r
1912 ld de,(sexp1) ;11e4\r
1913 call CP.HL.DE ;11e8\r
1914 pop de ;11eb\r
1915 jr nc,l11f9h ;11ec\r
1916 call sub_11ffh ;11ee\r
1917l11f1h:\r
1918 ld a,(hl) ;11f1\r
1919 ldi ;11f2\r
1920 and a ;11f4\r
1921 jr nz,l11f1h ;11f5\r
1922 jr l11e3h ;11f7\r
1923l11f9h:\r
1924 ld (sexp1),de ;11f9\r
1925 pop bc ;11fd\r
1926 ret ;11fe\r
1927sub_11ffh:\r
1928 ld iy,bp_tab ;11ff\r
1929 push de ;1203\r
1930l1204h:\r
1931 ld e,(iy+006h) ;1204\r
1932 ld d,(iy+007h) ;1207\r
1933 call CP.HL.DE ;120a\r
1934 jr z,l1216h ;120d\r
1935 ld de,BP_SIZE ;120f\r
1936 add iy,de ;1212\r
1937 jr l1204h ;1214\r
1938l1216h:\r
1939 pop de ;1216\r
1940 ld (iy+006h),e ;1217\r
1941 ld (iy+007h),d ;121a\r
1942 ret ;121d\r
1943\r
1944CMD.Y:\r
1945 call get.decdigit ;121e\r
1946 jr c,l122fh ;1221\r
1947 inc de ;1223\r
1948 push af ;1224\r
1949 call assert_eol ;1225\r
1950 pop af ;1228\r
1951 call sub_1248h ;1229\r
1952 jp l127ch ;122c\r
1953l122fh:\r
1954 call assert_eol ;122f\r
1955 xor a ;1232\r
1956l1233h:\r
1957 push af ;1233\r
1958 call sub_1248h ;1234\r
1959 call outbl4 ;1237\r
1960 pop af ;123a\r
1961 inc a ;123b\r
1962 bit 0,a ;123c\r
1963 push af ;123e\r
1964 call z,CRLF ;123f\r
1965 pop af ;1242\r
1966 cp LF ;1243\r
1967 jr c,l1233h ;1245\r
1968 ret ;1247\r
1969\r
1970sub_1248h:\r
1971 ld c,a ;1248\r
1972 ld b,0 ;1249\r
1973 add a,'0'+080h ;124b\r
1974 ld de,msg.Y+1 ;124d\r
1975 ld (de),a ;1250\r
1976 dec de ;1251\r
1977 ld hl,reg.Y ;1252\r
1978 add hl,bc ;1255\r
1979 add hl,bc ;1256\r
1980 ex de,hl ;1257\r
1981 ld c,003h ;1258\r
1982 jp l129ah ;125a\r
1983\r
1984CMD.X:\r
1985 call SKIPBL ;125d\r
1986 call sub_1315h ;1260\r
1987 jp nc,l0d41h ;1263\r
1988 call assert_eol ;1266\r
1989 ld a,b ;1269\r
1990 cp 01fh ;126a\r
1991 jr z,l12c6h ;126c\r
1992 cp 020h ;126e\r
1993 jr z,l12b6h ;1270\r
1994 ex de,hl ;1272\r
1995 ld hl,b_0x132A_start ;1273\r
1996 call sub_0a48h ;1276\r
1997l1279h:\r
1998 call l129ah ;1279\r
1999l127ch:\r
2000 call OUTBL ;127c\r
2001 push de ;127f\r
2002 push bc ;1280\r
2003 call INLINE ;1281\r
2004 call SKIPBL ;1284\r
2005 jr z,l1297h ;1287\r
2006 call get_arg ;1289\r
2007 ld b,h ;128c\r
2008 ld c,l ;128d\r
2009 pop af ;128e\r
2010 pop hl ;128f\r
2011 ld (hl),c ;1290\r
2012 bit 0,a ;1291\r
2013 ret z ;1293\r
2014 inc hl ;1294\r
2015 ld (hl),b ;1295\r
2016 ret ;1296\r
2017l1297h:\r
2018 pop af ;1297\r
2019 pop hl ;1298\r
2020 ret ;1299\r
2021l129ah:\r
2022 ld b,c ;129a\r
2023 call PSTR ;129b\r
2024 ld a,'=' ;129e\r
2025 call OUTCHAR ;12a0\r
2026 ld a,(de) ;12a3\r
2027 bit 0,b ;12a4\r
2028 jp z,out.hex ;12a6\r
2029 ld l,a ;12a9\r
2030 inc de ;12aa\r
2031 ld a,(de) ;12ab\r
2032 dec de ;12ac\r
2033 ld h,a ;12ad\r
2034 bit 1,b ;12ae\r
2035 jp z,out.hl ;12b0\r
2036 jp out.hl.@ ;12b3\r
2037\r
2038l12b6h:\r
2039 call prnt_f ;12b6\r
2040 ld a,0f3h ;12b9\r
2041 ld (reg.iff),a ;12bb\r
2042 scf ;12be\r
2043 call sub_12d1h ;12bf\r
2044 ld (reg.f),a ;12c2\r
2045 ret ;12c5\r
2046\r
2047l12c6h:\r
2048 call prnt_f2 ;12c6\r
2049 and a ;12c9\r
2050 call sub_12d1h ;12ca\r
2051 ld (reg.f2),a ;12cd\r
2052 ret ;12d0\r
2053\r
2054sub_12d1h:\r
2055 ex af,af' ;12d1\r
2056 ld b,000h ;12d2\r
2057 call outbl ;12d4\r
2058 call assert_eol ;12d7\r
2059 call inline ;12da\r
2060l12ddh:\r
2061 call skipbl ;12dd\r
2062 ld a,b ;12e0\r
2063 ret z ;12e1\r
2064 push bc ;12e2\r
2065 ld hl,tab_pr_flags ;12e3\r
2066 call lookupch ;12e6\r
2067 jp nc,error ;12e9\r
2068 ld a,b ;12ec\r
2069 cp 008h ;12ed\r
2070 jr z,l12feh ;12ef\r
2071 inc b ;12f1\r
2072 ld a,001h ;12f2\r
2073 jr l12f7h ;12f4\r
2074l12f6h:\r
2075 rlca ;12f6\r
2076l12f7h:\r
2077 djnz l12f6h ;12f7\r
2078 pop bc ;12f9\r
2079 or b ;12fa\r
2080 ld b,a ;12fb\r
2081 jr l12ddh ;12fc\r
2082l12feh:\r
2083 ex af,af' ;12fe\r
2084 jp nc,ERROR ;12ff\r
2085 ex af,af' ;1302\r
2086 ld a,0FBh ;1303\r
2087 ld (reg.iff),a ;1305\r
2088 pop bc ;1308\r
2089 jr l12ddh ;1309\r
2090\r
2091tab_pr_flags:\r
2092 db 'CNV H ZSE'\r
2093 db 0\r
2094\r
2095sub_1315h:\r
2096 call sub_0a0eh ;1315\r
2097 ret nc ;1318\r
2098 ld a,b ;1319\r
2099 add a,b ;131a\r
2100 add a,b ;131b\r
2101 ld hl,b_0x136C_start ;131c\r
2102 call ADD_HL_A ;131f\r
2103 ld c,(hl) ;1322\r
2104 inc hl ;1323\r
2105 ld a,(hl) ;1324\r
2106 inc hl ;1325\r
2107 ld h,(hl) ;1326\r
2108 ld l,a ;1327\r
2109 scf ;1328\r
2110 ret ;1329\r
2111\r
2112b_0x132A_start:\r
2113 DC 'CBAR'\r
2114 DC 'BBR'\r
2115 DC 'BC'''\r
2116 DC 'DE'''\r
2117 DC 'HL'''\r
2118 DC 'BC'\r
2119 DC 'DE'\r
2120 DC 'HL'\r
2121 DC 'A'''\r
2122 DC 'B'''\r
2123 DC 'C'''\r
2124 DC 'D'''\r
2125 DC 'E'''\r
2126 DC 'H'''\r
2127 DC 'L'''\r
2128 DC 'A'\r
2129 DC 'B'\r
2130 DC 'C'\r
2131 DC 'D'\r
2132 DC 'E'\r
2133 DC 'H'\r
2134 DC 'L'\r
2135 DC 'IX'\r
2136 DC 'IY'\r
2137 DC 'SP'\r
2138 DC 'PC'\r
2139 DC 'X'\r
2140 DC 'Y'\r
2141 DC 'S'\r
2142 DC 'P'\r
2143 DC 'I'\r
2144 DC 'F'''\r
2145 DC 'F'\r
2146 if ROMSYS\r
2147 DC 'ROMSEL'\r
2148 endif\r
2149 DB 0\r
2150b_0x136C_start:\r
2151 defb 000h ;136c\r
2152 defw ucbar ;136d\r
2153 defb 000h ;136f\r
2154 defw ubbr ;1370\r
2155 defb 003h ;1372\r
2156 defw reg.c2 ;1373\r
2157 defb 003h ;1375\r
2158 defw reg.e2 ;1376\r
2159 defb 003h ;1378\r
2160 defw reg.l2 ;1379\r
2161 defb 003h ;137b\r
2162 defw reg.c ;137c\r
2163 defb 003h ;137e\r
2164 defw reg.e ;137f\r
2165 defb 003h ;1381\r
2166 defw reg.l ;1382\r
2167 defb 000h ;1384\r
2168 defw reg.a2 ;1385\r
2169 defb 000h ;1387\r
2170 defw reg.b2 ;1388\r
2171 defb 000h ;138a\r
2172 defw reg.c2 ;138b\r
2173 defb 000h ;138d\r
2174 defw reg.d2 ;138e\r
2175 defb 000h ;1390\r
2176 defw reg.e2 ;1391\r
2177 defb 000h ;1393\r
2178 defw reg.h2 ;1394\r
2179 defb 000h ;1396\r
2180 defw reg.l2 ;1397\r
2181 defb 000h ;1399\r
2182 defw reg.a ;139a\r
2183 defb 000h ;139c\r
2184 defw reg.b ;139d\r
2185 defb 000h ;139f\r
2186 defw reg.c ;13a0\r
2187 defb 000h ;13a2\r
2188 defw reg.d ;13a3\r
2189 defb 000h ;13a5\r
2190 defw reg.e ;13a6\r
2191 defb 000h ;13a8\r
2192 defw reg.h ;13a9\r
2193 defb 000h ;13ab\r
2194 defw reg.l ;13ac\r
2195 defb 003h ;13ae\r
2196 defw reg.ix ;13af\r
2197 defb 003h ;13b1\r
2198 defw reg.iy ;13b2\r
2199 defb 003h ;13b4\r
2200 defw reg.sp ;13b5\r
2201 defb 003h ;13b7\r
2202 defw reg.pc ;13b8\r
2203 defb 003h ;13ba\r
2204 defw reg.ix ;13bb\r
2205 defb 003h ;13bd\r
2206 defw reg.iy ;13be\r
2207 defb 003h ;13c0\r
2208 defw reg.sp ;13c1\r
2209 defb 003h ;13c3\r
2210 defw reg.pc ;13c4\r
2211 defb 000h ;13c6\r
2212 defw reg.i ;13c7\r
2213 defb 000h ;13c9\r
2214 defw reg.f2 ;13ca\r
2215 defb 000h ;13cc\r
2216 defw reg.f ;13cd\r
2217 if ROMSYS\r
2218 defb 000h ;13cf\r
2219 defw uromen ;13d0\r
2220 endif\r
2221CMD.S:\r
2222 ld hl,(lst.S) ;13d2\r
2223 call get_lastarg_def ;13d5\r
2224l13d8h:\r
2225 ld (lst.S),hl ;13d8\r
2226 call out.hl.@ ;13db\r
2227 call OUTBL ;13de\r
2228 comst ;13e1\r
2229 ld a,(hl) ;13e5\r
2230 comend\r
2231 call out.hex ;13e6\r
2232 call outbl2 ;13e9\r
2233 call INLINE ;13ec\r
2234 call SKIPBL ;13ef\r
2235 inc hl ;13f2\r
2236 jr z,l13d8h ;13f3\r
2237 dec hl ;13f5\r
2238 inc de ;13f6\r
2239 cp '.' ;13f7\r
2240 jp z,assert_eol ;13f9\r
2241 cp '-' ;13fc\r
2242 jr nz,l1406h ;13fe\r
2243 ld a,(de) ;1400\r
2244 or a ;1401\r
2245 dec hl ;1402\r
2246 jr z,l13d8h ;1403\r
2247 inc hl ;1405\r
2248l1406h:\r
2249 dec de ;1406\r
2250 call get_bytes_m ;1407\r
2251 jr l13d8h ;140a\r
2252\r
2253CMD.@:\r
2254 call assert_eol ;140c\r
2255 ld hl,MSG_at ;140f\r
2256 ld de,offs.@ ;1412\r
2257 ld c,001h ;1415\r
2258 jp l1279h ;1417\r
2259MSG_at:\r
2260 dc '@'\r
2261\r
2262CMD.I:\r
2263 ld hl,CMD.I ;141b\r
2264 ld (CMD_RPT),hl ;141e\r
2265 ld hl,(lst.IP) ;1421\r
2266 call get_lastarg_def ;1424\r
2267 ld (lst.IP),hl ;1427\r
2268 ld b,h ;142a\r
2269 ld c,l ;142b\r
2270 ld a,b ;142c\r
2271 or a ;142d\r
2272 jr nz,l1442h ;142e\r
2273 ld a,c ;1430\r
2274 ld hl,ucbar ;1431\r
2275 cp cbar ;1434\r
2276 jr z,l143fh ;1436\r
2277 ld hl,ubbr ;1438\r
2278 cp bbr ;143b\r
2279 jr nz,l1442h ;143d\r
2280l143fh:\r
2281 ld a,(hl) ;143f\r
2282 jr l1444h ;1440\r
2283l1442h:\r
2284 in a,(c) ;1442\r
2285l1444h:\r
2286 push af ;1444\r
2287 call out.hex ;1445\r
2288 call outbl4 ;1448\r
2289 pop af ;144b\r
2290 call out.bin.b ;144c\r
2291 jp CRLF ;144f\r
2292CMD.O:\r
2293 ld hl,CMD.O ;1452\r
2294 ld (CMD_RPT),hl ;1455\r
2295 ld hl,(lst.OD) ;1458\r
2296 call get_arg_def ;145b\r
2297 ld a,l ;145e\r
2298 ld (lst.OD),a ;145f\r
2299 push af ;1462\r
2300 call skip_to_nextarg ;1463\r
2301 ld hl,(lst.OP) ;1466\r
2302 call get_lastarg_def ;1469\r
2303 ld (lst.OP),hl ;146c\r
2304 ld b,h ;146f\r
2305 ld c,l ;1470\r
2306 ld a,b ;1471\r
2307 or a ;1472\r
2308 jr nz,l1489h ;1473\r
2309 ld a,c ;1475\r
2310 ld hl,ucbar ;1476\r
2311 cp cbar ;1479\r
2312 jr z,l148dh ;147b\r
2313 ld hl,ubbr ;147d\r
2314 cp bbr ;1480\r
2315 jr z,l148dh ;1482\r
2316 cp cbr ;1484\r
2317 jp z,ERROR ;1486\r
2318l1489h:\r
2319 pop af ;1489\r
2320 out (c),a ;148a\r
2321 ret ;148c\r
2322l148dh:\r
2323 pop af ;148d\r
2324 ld (hl),a ;148e\r
2325 ret ;148f\r
2326\r
2327CMD.V:\r
2328 call get_arg3 ;1490 get from, size, to\r
2329cmp_mem:\r
2330 push bc ;1493\r
2331 comst ;1494\r
2332 ld a,(de) ;1498\r
2333 ld b,(hl) ;1499\r
2334 comend\r
2335 cp b ;149a\r
2336 jr z,l14bah ;149b\r
2337 ld c,a ;149d\r
2338 call out.hl.@ ;149e\r
2339 call OUTBL ;14a1\r
2340 ld a,b ;14a4\r
2341 call out.hex ;14a5\r
2342 call outbl2 ;14a8\r
2343 ld a,c ;14ab\r
2344 call out.hex ;14ac\r
2345 call OUTBL ;14af\r
2346 ex de,hl ;14b2\r
2347 call out.hl.@ ;14b3\r
2348 ex de,hl ;14b6\r
2349 call CRLF ;14b7\r
2350l14bah:\r
2351 pop bc ;14ba\r
2352 inc hl ;14bb\r
2353 inc de ;14bc\r
2354 dec bc ;14bd\r
2355 ld a,b ;14be\r
2356 or c ;14bf\r
2357 jr nz,cmp_mem ;14c0\r
2358 ret ;14c2\r
2359\r
2360CMD.M:\r
2361 ld a,(de) ;14c3\r
2362 cp 'V' ;14c4\r
2363 jr nz,bm_nv ;14c6\r
2364 inc de ;14c8\r
2365bm_nv:\r
2366 push af ;14c9 save 'V' flag\r
2367 call get_arg3 ;14ca\r
2368 push hl ;14cd\r
2369 push de ;14ce\r
2370 push bc ;14cf\r
2371 call CP.HL.DE ;14d0\r
2372 jr nc,bm_mvdown ;14d3\r
2373 add hl,bc ;14d5\r
2374 ex de,hl ;14d6\r
2375 add hl,bc ;14d7\r
2376 ex de,hl ;14d8\r
2377 dec hl ;14d9\r
2378 dec de ;14da\r
2379 comst ;14db\r
2380 lddr ;14df\r
2381 comend\r
2382 jr bm_done ;14e1\r
2383bm_mvdown:\r
2384 comst ;14e3\r
2385 ldir ;14e7\r
2386 comend\r
2387bm_done:\r
2388 pop bc ;14e9\r
2389 pop de ;14ea\r
2390 pop hl ;14eb\r
2391 pop af ;14ec\r
2392 jr z,cmp_mem ;14ed validate?\r
2393 ret ;14ef\r
2394CMD.H:\r
2395 call EXPR ;14f0\r
2396 jp c,l173ch ;14f3\r
2397 call skip_to_nextarg ;14f6\r
2398 push hl ;14f9\r
2399 call EXPR ;14fa\r
2400 push af ;14fd\r
2401 call assert_eol ;14fe\r
2402 pop af ;1501\r
2403 ex de,hl ;1502\r
2404 pop hl ;1503\r
2405 jr c,l1511h ;1504\r
2406 push hl ;1506\r
2407 push de ;1507\r
2408 add hl,de ;1508\r
2409 call l1511h ;1509\r
2410 pop de ;150c\r
2411 pop hl ;150d\r
2412 and a ;150e\r
2413 sbc hl,de ;150f\r
2414l1511h:\r
2415 call out.hl ;1511 val\r
2416 call outbl2 ;1514\r
2417 call sub_0928h ;1517 -val\r
2418 call outbl4 ;151a\r
2419 call out.hl.dec ;151d dec\r
2420 call outbl2 ;1520\r
2421 call out.hl.decm ;1523 -dec\r
2422 call outbl4 ;1526\r
2423 call out.bin.w ;1529 bin\r
2424 call outbl2 ;152c\r
2425 ld a,l ;152f\r
2426 call out.ascii ;1530\r
2427 jp CRLF ;1533\r
2428\r
2429CMD.Q:\r
2430 ld a,(de) ;1536\r
2431 sub 'J' ;1537\r
2432 ld (lst.Qj),a ;1539\r
2433 jr nz,l153fh ;153c\r
2434 inc de ;153e\r
2435l153fh:\r
2436 call get_arg_range ;153f\r
2437 push bc ;1542\r
2438 push hl ;1543\r
2439 call sub_15a7h ;1544\r
2440 pop hl ;1547\r
2441l1548h:\r
2442 call sub_1594h ;1548\r
2443 jr nz,l1562h ;154b\r
2444 push bc ;154d\r
2445 push hl ;154e\r
2446 ld a,(lst.Qj) ;154f\r
2447 or a ;1552\r
2448 jr nz,l1559h ;1553\r
2449 ld bc,-8 ;1555\r
2450 add hl,bc ;1558\r
2451l1559h:\r
2452 ld bc,MEMDUMP_CNT ;1559\r
2453 and a ;155c\r
2454 call memdump ;155d\r
2455 pop hl ;1560\r
2456 pop bc ;1561\r
2457l1562h:\r
2458 inc hl ;1562\r
2459 ex (sp),hl ;1563\r
2460 dec hl ;1564\r
2461 ld a,h ;1565\r
2462 or l ;1566\r
2463 ex (sp),hl ;1567\r
2464 jr nz,l1548h ;1568\r
2465 pop bc ;156a\r
2466 ret ;156b\r
2467\r
2468CMD.Z:\r
2469 call get_arg_range ;156c\r
2470 push bc ;156f\r
2471 push hl ;1570\r
2472 call sub_15a7h ;1571\r
2473 ld a,b ;1574\r
2474 pop hl ;1575\r
2475 pop bc ;1576\r
2476 push hl ;1577\r
2477 ex de,hl ;1578\r
2478l1579h:\r
2479 push af ;1579\r
2480 ld a,(hl) ;157a\r
2481 comst ;157b\r
2482 ld (de),a ;157f\r
2483 comend\r
2484 pop af ;1580\r
2485 inc de ;1581\r
2486 cpi ;1582\r
2487 jp po,l1592h ;1584\r
2488 dec a ;1587\r
2489 jr nz,l1579h ;1588\r
2490 pop hl ;158a\r
2491 comst ;158b\r
2492 ldir ;158f\r
2493 comend\r
2494 ret ;1591\r
2495l1592h:\r
2496 pop hl ;1592\r
2497 ret ;1593\r
2498\r
2499sub_1594h:\r
2500 push hl ;1594\r
2501 push de ;1595\r
2502 push bc ;1596\r
2503l1597h:\r
2504 ld a,(de) ;1597\r
2505 comst ;1598\r
2506 cp (hl) ;159c\r
2507 comend\r
2508 jr nz,l15a3h ;159d\r
2509 inc de ;159f\r
2510 inc hl ;15a0\r
2511 djnz l1597h ;15a1\r
2512l15a3h:\r
2513 pop bc ;15a3\r
2514 pop de ;15a4\r
2515 pop hl ;15a5\r
2516 ret ;15a6\r
2517\r
2518sub_15a7h:\r
2519 ld hl,ci.buf+1 ;15a7\r
2520 call get_bytes ;15aa\r
2521 ld de,ci.buf+1 ;15ad\r
2522 and a ;15b0\r
2523 sbc hl,de ;15b1\r
2524 ld b,l ;15b3\r
2525 ret nz ;15b4\r
2526 jp ERROR ;15b5\r
2527\r
2528get_bytes:\r
2529 db 0e6h ;15b8 and 037h (clear carry, skip next opc)\r
2530get_bytes_m:\r
2531 scf\r
2532l15bah:\r
2533 push af ;15ba\r
2534 call skip_to_nextarg ;15bb\r
2535 cp 'W' ;15be\r
2536 jr nz,l15d9h ;15c0\r
2537 inc de ;15c2\r
2538 push hl ;15c3\r
2539 call sub_0a68h ;15c4\r
2540 ex de,hl ;15c7\r
2541 pop bc ;15c8\r
2542 pop af ;15c9\r
2543 push af ;15ca\r
2544 push bc ;15cb\r
2545 ex (sp),hl ;15cc\r
2546 jr nc,l15d3h ;15cd\r
2547 comst ;15cf\r
2548l15d3h:\r
2549 ld (hl),e ;15d3\r
2550 comend\r
2551 inc hl ;15d4\r
2552 ld c,d ;15d5\r
2553 pop de ;15d6\r
2554 jr l15e5h ;15d7\r
2555l15d9h:\r
2556 cp '''' ;15d9\r
2557 jr z,l15f1h ;15db\r
2558 push hl ;15dd\r
2559 call EXPR ;15de\r
2560 ld c,l ;15e1\r
2561 pop hl ;15e2\r
2562 jr c,l1626h ;15e3\r
2563l15e5h:\r
2564 pop af ;15e5\r
2565 push af ;15e6\r
2566 jr nc,l15edh ;15e7\r
2567 comst ;15e9\r
2568l15edh:\r
2569 ld (hl),c ;15ed\r
2570 comend\r
2571 inc hl ;15ee\r
2572 jr l161eh ;15ef\r
2573l15f1h:\r
2574 inc de ;15f1\r
2575 ld a,(de) ;15f2\r
2576 cp '''' ;15f3\r
2577 jr z,l1607h ;15f5\r
2578 or a ;15f7\r
2579 jr z,l1626h ;15f8\r
2580l15fah:\r
2581 ld c,a ;15fa\r
2582 pop af ;15fb\r
2583 push af ;15fc\r
2584 jr nc,l1603h ;15fd\r
2585 comst ;15ff\r
2586l1603h:\r
2587 ld (hl),c ;1603\r
2588 comend\r
2589 inc hl ;1604\r
2590 jr l15f1h ;1605\r
2591l1607h:\r
2592 inc de ;1607\r
2593 ld a,(de) ;1608\r
2594 cp '''' ;1609\r
2595 jr z,l15fah ;160b\r
2596 cp '.' ;160d\r
2597 jr nz,l161eh ;160f\r
2598 inc de ;1611\r
2599 dec hl ;1612\r
2600 pop af ;1613\r
2601 push af ;1614\r
2602 jr nc,l161bh ;1615\r
2603 comst ;1617\r
2604l161bh:\r
2605 set 7,(hl) ;161b\r
2606 comend\r
2607 inc hl ;161d\r
2608l161eh:\r
2609 pop af ;161e\r
2610 jr nc,l15bah ;161f\r
2611 ld (lst.S),hl ;1621\r
2612 jr l15bah ;1624\r
2613\r
2614l1626h:\r
2615 pop af ;1626\r
2616 ret nc ;1627\r
2617 ld (lst.S),hl ;1628\r
2618 ret ;162b\r
2619\r
2620CMD.D:\r
2621 ld hl,CMD.D ;162c\r
2622 ld (CMD_RPT),hl ;162f\r
2623 ld hl,(lst.D) ;1632\r
2624 ld bc,00080h ;1635\r
2625 call sub_0a82h ;1638\r
2626 scf ;163b\r
2627memdump:\r
2628 push bc ;163c\r
2629 push de ;163d\r
2630 push hl ;163e\r
2631 ex af,af' ;163f\r
2632l1640h:\r
2633 call out.hl.@ ;1640\r
2634 call z,outbl2 ;1643\r
2635 call OUTBL ;1646\r
2636 ld de,0 ;1649\r
2637l164ch:\r
2638 comst ;164c\r
2639 ld a,(hl) ;1650\r
2640 comend\r
2641 inc hl ;1651\r
2642 call out.hex ;1652\r
2643 call OUTBL ;1655\r
2644 dec bc ;1658\r
2645 inc e ;1659\r
2646 ld a,e ;165a\r
2647 cp 010h ;165b\r
2648 jr z,l1668h ;165d\r
2649 and 003h ;165f\r
2650 call z,OUTBL ;1661\r
2651 ld a,b ;1664\r
2652 or c ;1665\r
2653 jr nz,l164ch ;1666\r
2654l1668h:\r
2655 call OUTBL ;1668\r
2656 and a ;166b\r
2657 sbc hl,de ;166c\r
2658l166eh:\r
2659 comst ;166e\r
2660 ld a,(hl) ;1672\r
2661 comend\r
2662 call sub_168fh ;1673\r
2663 call OUTCHAR ;1676\r
2664 inc hl ;1679\r
2665 dec e ;167a\r
2666 jr nz,l166eh ;167b\r
2667 ex af,af' ;167d\r
2668 jr nc,l1683h ;167e\r
2669 ld (lst.D),hl ;1680\r
2670l1683h:\r
2671 ex af,af' ;1683\r
2672 call CRLF ;1684\r
2673 ld a,b ;1687\r
2674 or c ;1688\r
2675 jr nz,l1640h ;1689\r
2676 pop hl ;168b\r
2677 pop de ;168c\r
2678 pop bc ;168d\r
2679 ret ;168e\r
2680sub_168fh:\r
2681 and 07fh ;168f\r
2682 cp 07fh ;1691\r
2683 jr z,l1698h ;1693\r
2684 cp 020h ;1695\r
2685 ret nc ;1697\r
2686l1698h:\r
2687 ld a,02eh ;1698\r
2688 ret ;169a\r
2689\r
2690; Read Intel Hex File from console.\r
2691\r
2692CMD.R:\r
2693 ld hl,0 ;169b\r
2694 call get_lastarg_def ;169e\r
2695 push hl ;16a1\r
2696 ld hl,0 ;16a2\r
2697 ld (HILOD),hl ;16a5\r
2698w_recstart:\r
2699 call i.getchar ;16a8\r
2700 jr z,l16deh ;16ab\r
2701 cp ':' ;16ad\r
2702 jr nz,w_recstart ;16af\r
2703 ld c,0 ;16b1 init checksum\r
2704 call i.gethexbyte ;16b3 record len\r
2705 ld b,a ;16b6\r
2706 call i.gethexbyte ;16b7 address high\r
2707 ld h,a ;16ba\r
2708 call i.gethexbyte ;16bb address low\r
2709 ld l,a ;16be\r
2710 call i.gethexbyte ;16bf record type (ignored)\r
2711 ld a,b ;16c2\r
2712 and a ;16c3 record len == 0?\r
2713 jr z,l16deh ;16c4\r
2714l16c6h:\r
2715 call i.gethexbyte ;16c6\r
2716 pop de ;16c9\r
2717 push de ;16ca\r
2718 push hl ;16cb\r
2719 add hl,de ;16cc\r
2720 call i.storebyte ;16cd\r
2721 pop hl ;16d0\r
2722 inc hl ;16d1\r
2723 djnz l16c6h ;16d2\r
2724 call i.gethexbyte ;16d4\r
2725 ld a,c ;16d7\r
2726 and a ;16d8\r
2727 jp nz,ERROR ;16d9 exit if checksum error\r
2728 jr w_recstart ;16dc next record\r
2729l16deh:\r
2730 pop hl ;16de\r
2731 call i.gethexbyte ;16df\r
2732 jp l173fh ;16e2\r
2733\r
2734i.gethexbyte:\r
2735 call sub_16f6h ;16e5\r
2736 rlca ;16e8\r
2737 rlca ;16e9\r
2738 rlca ;16ea\r
2739 rlca ;16eb\r
2740 ld d,a ;16ec\r
2741 call sub_16f6h ;16ed\r
2742 add a,d ;16f0\r
2743 ld d,a ;16f1\r
2744 add a,c ;16f2\r
2745 ld c,a ;16f3\r
2746 ld a,d ;16f4\r
2747 ret ;16f5\r
2748\r
2749sub_16f6h:\r
2750 call i.getchar ;16f6\r
2751 jr z,l16ffh ;16f9\r
2752 call sub_0d26h ;16fb\r
2753 ret nc ;16fe\r
2754l16ffh:\r
2755 jp ERROR ;16ff\r
2756\r
2757i.getchar:\r
2758 call $ci ;1702\r
2759 cp 01ah ;1705\r
2760 ret ;1707\r
2761\r
2762i.storebyte:\r
2763 push af ;1708\r
2764 push de ;1709\r
2765 ld de,TPA ;170a\r
2766 call CP.HL.DE ;170d\r
2767 jp c,ERROR ;1710\r
2768 ld de,$stcka ;1713\r
2769 call CP.HL.DE ;1716\r
2770 jp nc,ERROR ;1719\r
2771 ld de,(HILOD) ;171c\r
2772 call CP.HL.DE ;1720\r
2773 jr c,l1728h ;1723\r
2774 ld (HILOD),hl ;1725\r
2775l1728h:\r
2776 ld de,(MAXLOD) ;1728\r
2777 call CP.HL.DE ;172c\r
2778 jr c,l1734h ;172f\r
2779 ld (MAXLOD),hl ;1731\r
2780l1734h:\r
2781 pop de ;1734\r
2782 pop af ;1735\r
2783 comst ;1736\r
2784 ld (hl),a ;173a\r
2785 comend\r
2786 ret ;173b\r
2787\r
2788l173ch:\r
2789 call assert_eol ;173c\r
2790l173fh:\r
2791 ld hl,MSG_high ;173f\r
2792 call PSTR ;1742\r
2793 ld hl,(HILOD) ;1745\r
2794 call out.hl ;1748\r
2795 ld hl,MSG_max ;174b\r
2796 call PSTR ;174e\r
2797 ld hl,(MAXLOD) ;1751\r
2798 call out.hl ;1754\r
2799 jp CRLF ;1757\r
2800\r
2801MSG_high:\r
2802 DC 'High = '\r
2803MSG_max:\r
2804 DC ' Max = '\r
2805\r
2806CMD.A:\r
2807 ld hl,(lst.A) ;1769\r
2808 call get_lastarg_def ;176c\r
2809 push hl ;176f\r
2810 pop iy ;1770\r
2811 ld hl,l17c4h ;1772\r
2812 ld (CMD_ERR),hl ;1775\r
2813 ld (XB068),sp ;1778\r
2814l177ch:\r
2815 push iy ;177c\r
2816 pop hl ;177e\r
2817 ld (lst.A),hl ;177f\r
2818 ld (OFFS.pc),hl ;1782\r
2819 push hl ;1785\r
2820 call sub_1f3fh ;1786\r
2821 pop iy ;1789\r
2822 ld c,b ;178b\r
2823 ld de,(offs.@) ;178c\r
2824 ld a,d ;1790\r
2825 or e ;1791\r
2826 ld b,011h ;1792\r
2827 jr z,l1798h ;1794\r
2828 ld b,019h ;1796\r
2829l1798h:\r
2830 call OUTBL ;1798\r
2831 ld a,(CON.COL) ;179b\r
2832 cp b ;179e\r
2833 jr c,l1798h ;179f\r
2834 push bc ;17a1\r
2835 call INLINE ;17a2\r
2836 pop bc ;17a5\r
2837 call SKIPBL ;17a6\r
2838 cp '.' ;17a9\r
2839 ret z ;17ab\r
2840 cp '-' ;17ac\r
2841 jr nz,l17b6h ;17ae\r
2842 ld iy,(XB06C) ;17b0\r
2843 jr l177ch ;17b4\r
2844l17b6h:\r
2845 and a ;17b6\r
2846 call nz,sub_17cdh ;17b7\r
2847 ld (XB06C),iy ;17ba\r
2848 ld b,0 ;17be\r
2849 add iy,bc ;17c0\r
2850 jr l177ch ;17c2\r
2851l17c4h:\r
2852 call l07eah ;17c4\r
2853 ld sp,(XB068) ;17c7\r
2854 jr l177ch ;17cb\r
2855\r
2856sub_17cdh:\r
2857 call SKIPBL ;17cd\r
2858 ld hl,t_MNEMONICS ;17d0\r
2859 call sub_0a15h ;17d3\r
2860 jp nc,ERROR ;17d6\r
2861 call SKIPBL ;17d9\r
2862 push de ;17dc\r
2863 ld a,b ;17dd\r
2864 add a,b ;17de\r
2865 add a,b ;17df\r
2866 ld hl,b_0x17EE_start ;17e0\r
2867 call ADD_HL_A ;17e3\r
2868 ld e,(hl) ;17e6\r
2869 inc hl ;17e7\r
2870 ld d,(hl) ;17e8\r
2871 inc hl ;17e9\r
2872 ld b,(hl) ;17ea\r
2873 ex de,hl ;17eb\r
2874 pop de ;17ec\r
2875 jp (hl) ;17ed\r
2876\r
2877b_0x17EE_start:\r
2878 defw l1b54h ;17ee\r
2879\r
2880b_0x17F0_start:\r
2881 defb 088h ;17f0\r
2882\r
2883b_0x17F1_start:\r
2884 defw l1b74h ;17f1\r
2885\r
2886b_0x17F3_start:\r
2887 defb 080h ;17f3\r
2888\r
2889b_0x17F4_start:\r
2890 defw l1babh ;17f4\r
2891\r
2892b_0x17F6_start:\r
2893 defb 0a0h ;17f6\r
2894\r
2895b_0x17F7_start:\r
2896 defw l1c14h ;17f7\r
2897\r
2898b_0x17F9_start:\r
2899 defb 040h ;17f9\r
2900\r
2901b_0x17FA_start:\r
2902 defw l1c38h ;17fa\r
2903\r
2904b_0x17FC_start:\r
2905 defb 0c4h ;17fc\r
2906\r
2907b_0x17FD_start:\r
2908 defw l1b36h ;17fd\r
2909\r
2910b_0x17FF_start:\r
2911 defb 03fh ;17ff\r
2912\r
2913b_0x1800_start:\r
2914 defw l1babh ;1800\r
2915\r
2916b_0x1802_start:\r
2917 defb 0b8h ;1802\r
2918\r
2919b_0x1803_start:\r
2920 defw gen.opc.ED2 ;1803\r
2921\r
2922b_0x1805_start:\r
2923 defb 0a9h ;1805\r
2924\r
2925b_0x1806_start:\r
2926 defw gen.opc.ED2 ;1806\r
2927\r
2928b_0x1808_start:\r
2929 defb 0b9h ;1808\r
2930\r
2931b_0x1809_start:\r
2932 defw gen.opc.ED2 ;1809\r
2933\r
2934b_0x180B_start:\r
2935 defb 0a1h ;180b\r
2936\r
2937b_0x180C_start:\r
2938 defw gen.opc.ED2 ;180c\r
2939\r
2940b_0x180E_start:\r
2941 defb 0b1h ;180e\r
2942\r
2943b_0x180F_start:\r
2944 defw l1b36h ;180f\r
2945\r
2946b_0x1811_start:\r
2947 defb 02fh ;1811\r
2948\r
2949b_0x1812_start:\r
2950 defw l1b36h ;1812\r
2951\r
2952b_0x1814_start:\r
2953 defb 027h ;1814\r
2954\r
2955b_0x1815_start:\r
2956 defw l1dabh ;1815\r
2957\r
2958b_0x1817_start:\r
2959 defb 005h ;1817\r
2960\r
2961b_0x1818_start:\r
2962 defw l1b36h ;1818\r
2963\r
2964b_0x181A_start:\r
2965 defb 0f3h ;181a\r
2966\r
2967b_0x181B_start:\r
2968 defw l1ca4h ;181b\r
2969\r
2970b_0x181D_start:\r
2971 defb 010h ;181d\r
2972\r
2973b_0x181E_start:\r
2974 defw l1b36h ;181e\r
2975\r
2976b_0x1820_start:\r
2977 defb 0fbh ;1820\r
2978\r
2979b_0x1821_start:\r
2980 defw l1d54h ;1821\r
2981\r
2982b_0x1823_start:\r
2983 defb 0e3h ;1823\r
2984\r
2985b_0x1824_start:\r
2986 defw l1b36h ;1824\r
2987\r
2988b_0x1826_start:\r
2989 defb 0d9h ;1826\r
2990\r
2991b_0x1827_start:\r
2992 defw l1b36h ;1827\r
2993\r
2994b_0x1829_start:\r
2995 defb 076h ;1829\r
2996\r
2997b_0x182A_start:\r
2998 defw l1cbfh ;182a\r
2999\r
3000b_0x182C_start:\r
3001 defb 046h ;182c\r
3002\r
3003b_0x182D_start:\r
3004 defw l1cf8h ;182d\r
3005\r
3006b_0x182F_start:\r
3007 defb 040h ;182f\r
3008\r
3009b_0x1830_start:\r
3010 defw l1dabh ;1830\r
3011\r
3012b_0x1832_start:\r
3013 defb 004h ;1832\r
3014\r
3015b_0x1833_start:\r
3016 defw gen.opc.ED2 ;1833\r
3017\r
3018b_0x1835_start:\r
3019 defb 0aah ;1835\r
3020\r
3021b_0x1836_start:\r
3022 defw gen.opc.ED2 ;1836\r
3023\r
3024b_0x1838_start:\r
3025 defb 0bah ;1838\r
3026\r
3027b_0x1839_start:\r
3028 defw gen.opc.ED2 ;1839\r
3029\r
3030b_0x183B_start:\r
3031 defb 0a2h ;183b\r
3032\r
3033b_0x183C_start:\r
3034 defw gen.opc.ED2 ;183c\r
3035\r
3036b_0x183E_start:\r
3037 defb 0b2h ;183e\r
3038\r
3039b_0x183F_start:\r
3040 defw l1c5eh ;183f\r
3041\r
3042b_0x1841_start:\r
3043 defb 0c2h ;1841\r
3044\r
3045b_0x1842_start:\r
3046 defw l1cabh ;1842\r
3047\r
3048b_0x1844_start:\r
3049 defb 020h ;1844\r
3050\r
3051b_0x1845_start:\r
3052 defw l1934h ;1845\r
3053\r
3054b_0x1847_start:\r
3055 defb 040h ;1847\r
3056\r
3057b_0x1848_start:\r
3058 defw gen.opc.ED2 ;1848\r
3059\r
3060b_0x184A_start:\r
3061 defb 0a8h ;184a\r
3062\r
3063b_0x184B_start:\r
3064 defw gen.opc.ED2 ;184b\r
3065\r
3066b_0x184D_start:\r
3067 defb 0b8h ;184d\r
3068\r
3069b_0x184E_start:\r
3070 defw gen.opc.ED2 ;184e\r
3071\r
3072b_0x1850_start:\r
3073 defb 0a0h ;1850\r
3074\r
3075b_0x1851_start:\r
3076 defw gen.opc.ED2 ;1851\r
3077\r
3078b_0x1853_start:\r
3079 defb 0b0h ;1853\r
3080\r
3081b_0x1854_start:\r
3082 defw gen.opc.ED2 ;1854\r
3083\r
3084b_0x1856_start:\r
3085 defb 044h ;1856\r
3086\r
3087b_0x1857_start:\r
3088 defw l1b36h ;1857\r
3089\r
3090b_0x1859_start:\r
3091 defb 000h ;1859\r
3092\r
3093b_0x185A_start:\r
3094 defw l1babh ;185a\r
3095\r
3096b_0x185C_start:\r
3097 defb 0b0h ;185c\r
3098\r
3099b_0x185D_start:\r
3100 defw gen.opc.ED2 ;185d\r
3101\r
3102b_0x185F_start:\r
3103 defb 0bbh ;185f\r
3104\r
3105b_0x1860_start:\r
3106 defw gen.opc.ED2 ;1860\r
3107\r
3108b_0x1862_start:\r
3109 defb 0b3h ;1862\r
3110\r
3111b_0x1863_start:\r
3112 defw l1d2ch ;1863\r
3113\r
3114b_0x1865_start:\r
3115 defb 041h ;1865\r
3116\r
3117b_0x1866_start:\r
3118 defw gen.opc.ED2 ;1866\r
3119\r
3120b_0x1868_start:\r
3121 defb 0abh ;1868\r
3122\r
3123b_0x1869_start:\r
3124 defw gen.opc.ED2 ;1869\r
3125\r
3126b_0x186B_start:\r
3127 defb 0a3h ;186b\r
3128\r
3129b_0x186C_start:\r
3130 defw l1ce4h ;186c\r
3131\r
3132b_0x186E_start:\r
3133 defb 0c1h ;186e\r
3134\r
3135b_0x186F_start:\r
3136 defw l1ce4h ;186f\r
3137\r
3138b_0x1871_start:\r
3139 defb 0c5h ;1871\r
3140\r
3141b_0x1872_start:\r
3142 defw l1c14h ;1872\r
3143\r
3144b_0x1874_start:\r
3145 defb 080h ;1874\r
3146\r
3147b_0x1875_start:\r
3148 defw l1c50h ;1875\r
3149\r
3150b_0x1877_start:\r
3151 defb 0c0h ;1877\r
3152\r
3153b_0x1878_start:\r
3154 defw gen.opc.ED2 ;1878\r
3155\r
3156b_0x187A_start:\r
3157 defb 04dh ;187a\r
3158\r
3159b_0x187B_start:\r
3160 defw gen.opc.ED2 ;187b\r
3161\r
3162b_0x187D_start:\r
3163 defb 045h ;187d\r
3164\r
3165b_0x187E_start:\r
3166 defw l1bd8h ;187e\r
3167\r
3168b_0x1880_start:\r
3169 defb 010h ;1880\r
3170\r
3171b_0x1881_start:\r
3172 defw l1b36h ;1881\r
3173\r
3174b_0x1883_start:\r
3175 defb 017h ;1883\r
3176\r
3177b_0x1884_start:\r
3178 defw l1bd8h ;1884\r
3179\r
3180b_0x1886_start:\r
3181 defb 000h ;1886\r
3182\r
3183b_0x1887_start:\r
3184 defw l1b36h ;1887\r
3185\r
3186b_0x1889_start:\r
3187 defb 007h ;1889\r
3188\r
3189b_0x188A_start:\r
3190 defw gen.opc.ED2 ;188a\r
3191\r
3192b_0x188C_start:\r
3193 defb 06fh ;188c\r
3194\r
3195b_0x188D_start:\r
3196 defw l1bd8h ;188d\r
3197\r
3198b_0x188F_start:\r
3199 defb 018h ;188f\r
3200\r
3201b_0x1890_start:\r
3202 defw l1b36h ;1890\r
3203\r
3204b_0x1892_start:\r
3205 defb 01fh ;1892\r
3206\r
3207b_0x1893_start:\r
3208 defw l1bd8h ;1893\r
3209\r
3210b_0x1895_start:\r
3211 defb 008h ;1895\r
3212\r
3213b_0x1896_start:\r
3214 defw l1b36h ;1896\r
3215\r
3216b_0x1898_start:\r
3217 defb 00fh ;1898\r
3218\r
3219b_0x1899_start:\r
3220 defw gen.opc.ED2 ;1899\r
3221\r
3222b_0x189B_start:\r
3223 defb 067h ;189b\r
3224\r
3225b_0x189C_start:\r
3226 defw l1cd5h ;189c\r
3227\r
3228b_0x189E_start:\r
3229 defb 0c7h ;189e\r
3230\r
3231b_0x189F_start:\r
3232 defw l1b54h ;189f\r
3233\r
3234b_0x18A1_start:\r
3235 defb 098h ;18a1\r
3236\r
3237b_0x18A2_start:\r
3238 defw l1b36h ;18a2\r
3239\r
3240b_0x18A4_start:\r
3241 defb 037h ;18a4\r
3242\r
3243b_0x18A5_start:\r
3244 defw l1c14h ;18a5\r
3245\r
3246b_0x18A7_start:\r
3247 defb 0c0h ;18a7\r
3248\r
3249b_0x18A8_start:\r
3250 defw l1bd8h ;18a8\r
3251\r
3252b_0x18AA_start:\r
3253 defb 020h ;18aa\r
3254\r
3255b_0x18AB_start:\r
3256 defw l1bd8h ;18ab\r
3257\r
3258b_0x18AD_start:\r
3259 defb 028h ;18ad\r
3260\r
3261b_0x18AE_start:\r
3262 defw l1bd8h ;18ae\r
3263\r
3264b_0x18B0_start:\r
3265 defb 038h ;18b0\r
3266\r
3267b_0x18B1_start:\r
3268 defw l1babh ;18b1\r
3269\r
3270b_0x18B3_start:\r
3271 defb 090h ;18b3\r
3272\r
3273b_0x18B4_start:\r
3274 defw l1babh ;18b4\r
3275\r
3276b_0x18B6_start:\r
3277 defb 0a8h ;18b6\r
3278\r
3279b_0x18B7_start:\r
3280 defw A.IN0 ;18b7\r
3281\r
3282b_0x18B9_start:\r
3283 defb 000h ;18b9\r
3284\r
3285b_0x18BA_start:\r
3286 defw A.MLT ;18ba\r
3287\r
3288b_0x18BC_start:\r
3289 defb 04ch ;18bc\r
3290 ld b,e ;18bd\r
3291 dec de ;18be\r
3292\r
3293b_0x18BF_start:\r
3294 defb 08bh ;18bf\r
3295\r
3296b_0x18C0_start:\r
3297 defw gen.opc.ED2 ;18c0\r
3298\r
3299b_0x18C2_start:\r
3300 defb 09bh ;18c2\r
3301\r
3302b_0x18C3_start:\r
3303 defw gen.opc.ED2 ;18c3\r
3304\r
3305b_0x18C5_start:\r
3306 defb 083h ;18c5\r
3307\r
3308b_0x18C6_start:\r
3309 defw gen.opc.ED2 ;18c6\r
3310\r
3311b_0x18C8_start:\r
3312 defb 093h ;18c8\r
3313\r
3314b_0x18C9_start:\r
3315 defw l18fdh ;18c9\r
3316\r
3317b_0x18CB_start:\r
3318 defb 001h ;18cb\r
3319\r
3320b_0x18CC_start:\r
3321 defw gen.opc.ED2 ;18cc\r
3322\r
3323b_0x18CE_start:\r
3324 defb 076h ;18ce\r
3325\r
3326b_0x18CF_start:\r
3327 defw l191dh ;18cf\r
3328\r
3329b_0x18D1_start:\r
3330 defb 004h ;18d1\r
3331\r
3332b_0x18D2_start:\r
3333 defw l192ch ;18d2\r
3334\r
3335b_0x18D4_start:\r
3336 defb 074h ;18d4\r
3337A.IN0:\r
3338 call sub_1e41h ;18d5\r
3339 jr nc,l1931h ;18d8\r
3340 cp 006h ;18da\r
3341 jr z,l1931h ;18dc\r
3342 rlca ;18de\r
3343 rlca ;18df\r
3344 rlca ;18e0\r
3345 add a,b ;18e1\r
3346 ld b,a ;18e2\r
3347 call sub_1ed1h ;18e3\r
3348 call sub_1e06h ;18e6\r
3349l18e9h:\r
3350 call assert_eol ;18e9\r
3351 comst ;18ec\r
3352 ld (iy+000h),0edh ;18f0\r
3353 ld (iy+001h),b ;18f4\r
3354 ld (iy+002h),l ;18f7\r
3355 comend\r
3356 ld c,003h ;18fa\r
3357 ret ;18fc\r
3358l18fdh:\r
3359 call sub_1e06h ;18fd\r
3360 call sub_1ed1h ;1900\r
3361 call sub_1e41h ;1903\r
3362 jr nc,l1931h ;1906\r
3363 cp 006h ;1908\r
3364 jr z,l1931h ;190a\r
3365 rlca ;190c\r
3366 rlca ;190d\r
3367 rlca ;190e\r
3368 add a,b ;190f\r
3369 ld b,a ;1910\r
3370 jr l18e9h ;1911\r
3371A.MLT:\r
3372 call sub_1e2eh ;1913\r
3373 jr nc,l1931h ;1916\r
3374 add a,b ;1918\r
3375 ld b,a ;1919\r
3376 jp gen.opc.ED2 ;191a\r
3377l191dh:\r
3378 call sub_1e41h ;191d\r
3379 jr nc,l192ah ;1920\r
3380 rlca ;1922\r
3381 rlca ;1923\r
3382 rlca ;1924\r
3383 add a,b ;1925\r
3384 ld b,a ;1926\r
3385 jp gen.opc.ED2 ;1927\r
3386l192ah:\r
3387 ld b,064h ;192a\r
3388l192ch:\r
3389 call sub_1e12h ;192c\r
3390 jr l18e9h ;192f\r
3391l1931h:\r
3392 jp ERROR ;1931\r
3393l1934h:\r
3394 call sub_1e41h ;1934\r
3395 jp c,l19bfh ;1937\r
3396 call sub_1e68h ;193a\r
3397 jp c,l1a64h ;193d\r
3398 call sub_1e2eh ;1940\r
3399 jp c,l1a93h ;1943\r
3400 call sub_1e50h ;1946\r
3401 jp c,l1af0h ;1949\r
3402 ld a,(de) ;194c\r
3403 cp 049h ;194d\r
3404 jp z,l1b0ch ;194f\r
3405 cp 052h ;1952\r
3406 jp z,l1b14h ;1954\r
3407 cp 028h ;1957\r
3408 jp nz,ERROR ;1959\r
3409 inc de ;195c\r
3410 call sub_1e2eh ;195d\r
3411 jp c,l1b23h ;1960\r
3412 call tst_EXPR ;1963\r
3413 call sub_1ed8h ;1966\r
3414 call sub_1ed1h ;1969\r
3415 call sub_1e2eh ;196c\r
3416 jr c,l19adh ;196f\r
3417 call sub_1e50h ;1971\r
3418 jr nc,l1991h ;1974\r
3419 ld b,022h ;1976\r
3420l1978h:\r
3421 call assert_eol ;1978\r
3422 ld a,(pfx.IXY) ;197b\r
3423l197eh:\r
3424 comst ;197e\r
3425 ld (iy+000h),a ;1982\r
3426 ld (iy+001h),b ;1985\r
3427 ld (iy+002h),l ;1988\r
3428 ld (iy+003h),h ;198b\r
3429 comend\r
3430 ld c,004h ;198e\r
3431 ret ;1990\r
3432l1991h:\r
3433 ld a,(de) ;1991\r
3434 cp 041h ;1992\r
3435 jp nz,ERROR ;1994\r
3436 inc de ;1997\r
3437 ld b,032h ;1998\r
3438l199ah:\r
3439 call assert_eol ;199a\r
3440 comst ;199d\r
3441 ld (iy+000h),b ;19a1\r
3442 ld (iy+001h),l ;19a4\r
3443 ld (iy+002h),h ;19a7\r
3444 comend\r
3445 ld c,003h ;19aa\r
3446 ret ;19ac\r
3447l19adh:\r
3448 cp 020h ;19ad\r
3449 jr z,l19bbh ;19af\r
3450 add a,043h ;19b1\r
3451 ld b,a ;19b3\r
3452l19b4h:\r
3453 call assert_eol ;19b4\r
3454 ld a,0edh ;19b7\r
3455 jr l197eh ;19b9\r
3456l19bbh:\r
3457 ld b,022h ;19bb\r
3458 jr l199ah ;19bd\r
3459l19bfh:\r
3460 ld b,a ;19bf\r
3461 call sub_1ed1h ;19c0\r
3462 call sub_1e41h ;19c3\r
3463 jr nc,l19dbh ;19c6\r
3464 push af ;19c8\r
3465 ld a,b ;19c9\r
3466 rlca ;19ca\r
3467 rlca ;19cb\r
3468 rlca ;19cc\r
3469 ld b,a ;19cd\r
3470 pop af ;19ce\r
3471 add a,b ;19cf\r
3472 add a,040h ;19d0\r
3473 cp 076h ;19d2\r
3474 jp z,ERROR ;19d4\r
3475l19d7h:\r
3476 ld b,a ;19d7\r
3477 jp l1b36h ;19d8\r
3478l19dbh:\r
3479 call sub_1e68h ;19db\r
3480 jr nc,l1a02h ;19de\r
3481 ld a,b ;19e0\r
3482 rlca ;19e1\r
3483 rlca ;19e2\r
3484 rlca ;19e3\r
3485 add a,046h ;19e4\r
3486 cp 076h ;19e6\r
3487 jp z,ERROR ;19e8\r
3488l19ebh:\r
3489 ld b,a ;19eb\r
3490 call assert_eol ;19ec\r
3491 ld a,(pfx.IXY) ;19ef\r
3492 comst ;19f2\r
3493 ld (iy+000h),a ;19f6\r
3494 ld (iy+001h),b ;19f9\r
3495 ld (iy+002h),c ;19fc\r
3496 comend\r
3497 ld c,003h ;19ff\r
3498 ret ;1a01\r
3499l1a02h:\r
3500 ld a,(de) ;1a02\r
3501 cp 'I' ;1a03\r
3502 jr z,l1a15h ;1a05\r
3503 cp 'R' ;1a07\r
3504 jr nz,l1a21h ;1a09\r
3505 ld a,b ;1a0b\r
3506 cp 007h ;1a0c\r
3507 jp nz,ERROR ;1a0e\r
3508 ld b,05fh ;1a11\r
3509 jr l1a1dh ;1a13\r
3510l1a15h:\r
3511 ld a,b ;1a15\r
3512 cp 007h ;1a16\r
3513 jp nz,ERROR ;1a18\r
3514 ld b,057h ;1a1b\r
3515l1a1dh:\r
3516 inc de ;1a1d\r
3517 jp gen.opc.ED2 ;1a1e\r
3518l1a21h:\r
3519 cp '(' ;1a21\r
3520 jr z,l1a3fh ;1a23\r
3521 call sub_1e12h ;1a25\r
3522 ld a,b ;1a28 ld r,nn\r
3523 rlca ;1a29\r
3524 rlca ;1a2a\r
3525 rlca ;1a2b\r
3526 add a,006h ;1a2c\r
3527l1a2eh:\r
3528 ld b,a ;1a2e\r
3529l1a2fh:\r
3530 call assert_eol ;1a2f\r
3531 comst ;1a32\r
3532 ld (iy+000h),b ;1a36\r
3533 ld (iy+001h),l ;1a39\r
3534 comend\r
3535 ld c,002h ;1a3c\r
3536 ret ;1a3e\r
3537l1a3fh:\r
3538 inc de ;1a3f\r
3539 ld a,b ;1a40\r
3540 cp 007h ;1a41\r
3541 jp nz,ERROR ;1a43\r
3542 call sub_1e2eh ;1a46\r
3543 jr nc,l1a59h ;1a49\r
3544 cp 030h ;1a4b\r
3545 jp nc,ERROR ;1a4d\r
3546 add a,00ah ;1a50\r
3547 ld b,a ;1a52\r
3548 call sub_1ed8h ;1a53\r
3549 jp l1b36h ;1a56\r
3550l1a59h:\r
3551 call tst_EXPR ;1a59\r
3552 call sub_1ed8h ;1a5c\r
3553 ld b,03ah ;1a5f\r
3554 jp l199ah ;1a61\r
3555l1a64h:\r
3556 call sub_1ed1h ;1a64\r
3557 call sub_1e41h ;1a67\r
3558 jr nc,l1a76h ;1a6a\r
3559 cp 006h ;1a6c\r
3560 jp z,ERROR ;1a6e\r
3561 add a,070h ;1a71\r
3562 jp l19ebh ;1a73\r
3563l1a76h:\r
3564 call sub_1e12h ;1a76\r
3565 call assert_eol ;1a79\r
3566 ld a,(pfx.IXY) ;1a7c\r
3567 comst ;1a7f\r
3568 ld (iy+000h),a ;1a83 dd/fd\r
3569 ld (iy+001h),036h ;1a86\r
3570 ld (iy+002h),c ;1a8a displacement\r
3571 ld (iy+003h),l ;1a8d nn\r
3572 comend\r
3573 ld c,4 ;1a90\r
3574 ret ;1a92\r
3575l1a93h:\r
3576 ld b,a ;1a93\r
3577 call sub_1ed1h ;1a94\r
3578 ld hl,t_HL.AF ;1a97\r
3579 call sub_0a23h ;1a9a\r
3580 jr c,l1abeh ;1a9d\r
3581 call sub_1e50h ;1a9f\r
3582 jr nc,l1ac7h ;1aa2\r
3583 ld a,b ;1aa4\r
3584 cp 030h ;1aa5\r
3585 jr nz,l1b20h ;1aa7\r
3586 ld b,0f9h ;1aa9\r
3587l1aabh:\r
3588 call assert_eol ;1aab\r
3589 ld a,(pfx.IXY) ;1aae\r
3590 comst ;1ab1\r
3591 ld (iy+000h),a ;1ab5\r
3592 ld (iy+001h),b ;1ab8\r
3593 comend\r
3594 ld c,002h ;1abb\r
3595 ret ;1abd\r
3596l1abeh:\r
3597 ld a,b ;1abe\r
3598 cp 030h ;1abf\r
3599 jr nz,l1b20h ;1ac1\r
3600 ld b,0f9h ;1ac3\r
3601 jr l1b36h ;1ac5\r
3602l1ac7h:\r
3603 ld a,(de) ;1ac7\r
3604 cp 028h ;1ac8\r
3605 jr nz,l1ae3h ;1aca\r
3606 inc de ;1acc\r
3607 call tst_EXPR ;1acd\r
3608 call sub_1ed8h ;1ad0\r
3609 ld a,b ;1ad3\r
3610 cp 020h ;1ad4\r
3611 jr z,l1adeh ;1ad6\r
3612 add a,04bh ;1ad8\r
3613 ld b,a ;1ada\r
3614 jp l19b4h ;1adb\r
3615l1adeh:\r
3616 ld b,02ah ;1ade\r
3617 jp l199ah ;1ae0\r
3618l1ae3h:\r
3619 call tst_EXPR ;1ae3\r
3620 call assert_eol ;1ae6\r
3621 ld a,001h ;1ae9\r
3622 add a,b ;1aeb\r
3623 ld b,a ;1aec\r
3624 jp l199ah ;1aed\r
3625l1af0h:\r
3626 call sub_1ed1h ;1af0\r
3627 ld a,(de) ;1af3\r
3628 cp 028h ;1af4\r
3629 jr nz,l1b04h ;1af6\r
3630 inc de ;1af8\r
3631 call tst_EXPR ;1af9\r
3632 call sub_1ed8h ;1afc\r
3633 ld b,02ah ;1aff\r
3634 jp l1978h ;1b01\r
3635l1b04h:\r
3636 call tst_EXPR ;1b04\r
3637 ld b,021h ;1b07\r
3638 jp l1978h ;1b09\r
3639l1b0ch:\r
3640 inc de ;1b0c\r
3641 call sub_1ed1h ;1b0d\r
3642 ld b,047h ;1b10\r
3643 jr l1b1ah ;1b12\r
3644l1b14h:\r
3645 inc de ;1b14\r
3646 call sub_1ed1h ;1b15\r
3647 ld b,04fh ;1b18\r
3648l1b1ah:\r
3649 ld a,(de) ;1b1a\r
3650 inc de ;1b1b\r
3651 cp 041h ;1b1c\r
3652 jr z,gen.opc.ED2 ;1b1e\r
3653l1b20h:\r
3654 jp ERROR ;1b20\r
3655l1b23h:\r
3656 cp 020h ;1b23\r
3657 jr nc,l1b20h ;1b25\r
3658 add a,002h ;1b27\r
3659 ld b,a ;1b29\r
3660 call sub_1ed8h ;1b2a\r
3661 call sub_1ed1h ;1b2d\r
3662 ld a,(de) ;1b30\r
3663 cp 041h ;1b31\r
3664 jr nz,l1b20h ;1b33\r
3665 inc de ;1b35\r
3666l1b36h:\r
3667 call assert_eol ;1b36\r
3668 comst ;1b39\r
3669 ld (iy+000h),b ;1b3d\r
3670 comend\r
3671 ld c,001h ;1b40\r
3672 ret ;1b42\r
3673gen.opc.ED2:\r
3674 call assert_eol ;1b43\r
3675 comst ;1b46\r
3676 ld (iy+000h),0edh ;1b4a\r
3677 ld (iy+001h),b ;1b4e\r
3678 comend\r
3679 ld c,002h ;1b51\r
3680 ret ;1b53\r
3681l1b54h:\r
3682 ld hl,t_HL.AF ;1b54\r
3683 call sub_0a23h ;1b57\r
3684 jr nc,l1babh ;1b5a\r
3685 call sub_1ed1h ;1b5c\r
3686 call sub_1e2eh ;1b5f\r
3687 jp nc,ERROR ;1b62\r
3688 push af ;1b65\r
3689 ld a,b ;1b66\r
3690 cp 088h ;1b67\r
3691 ld b,04ah ;1b69\r
3692 jr z,l1b6fh ;1b6b\r
3693 ld b,042h ;1b6d\r
3694l1b6fh:\r
3695 pop af ;1b6f\r
3696 add a,b ;1b70\r
3697l1b71h:\r
3698 ld b,a ;1b71\r
3699 jr gen.opc.ED2 ;1b72\r
3700l1b74h:\r
3701 ld hl,t_HL.AF ;1b74\r
3702 call sub_0a23h ;1b77\r
3703 jr c,l1b9dh ;1b7a\r
3704 call sub_1e50h ;1b7c\r
3705 jr nc,l1babh ;1b7f\r
3706 call sub_1ed1h ;1b81\r
3707 ld hl,t_BC.DE.IX.SP ;1b84\r
3708 ld a,(pfx.IXY) ;1b87\r
3709 cp 0fdh ;1b8a\r
3710 jr nz,l1b91h ;1b8c\r
3711 ld hl,t_BC.DE.IY.SP ;1b8e\r
3712l1b91h:\r
3713 call sub_1e2bh ;1b91\r
3714 jp nc,ERROR ;1b94\r
3715 add a,009h ;1b97\r
3716l1b99h:\r
3717 ld b,a ;1b99\r
3718 jp l1aabh ;1b9a\r
3719l1b9dh:\r
3720 call sub_1ed1h ;1b9d\r
3721 call sub_1e2eh ;1ba0\r
3722 jp nc,ERROR ;1ba3\r
3723 add a,009h ;1ba6\r
3724 jp l19d7h ;1ba8\r
3725l1babh:\r
3726 ld a,(de) ;1bab\r
3727 cp 041h ;1bac\r
3728 jr nz,l1bbbh ;1bae\r
3729 push de ;1bb0\r
3730 inc de ;1bb1\r
3731 call skip_to_nextarg ;1bb2\r
3732 jr z,l1bbah ;1bb5\r
3733 pop de ;1bb7\r
3734 jr l1bbbh ;1bb8\r
3735l1bbah:\r
3736 pop af ;1bba\r
3737l1bbbh:\r
3738 call sub_1e41h ;1bbb\r
3739 jr c,l1bceh ;1bbe\r
3740 call sub_1e68h ;1bc0\r
3741 jr c,l1bd2h ;1bc3\r
3742 call sub_1e12h ;1bc5\r
3743 ld a,b ;1bc8\r
3744 add a,046h ;1bc9\r
3745 jp l1a2eh ;1bcb\r
3746l1bceh:\r
3747 add a,b ;1bce\r
3748 jp l19d7h ;1bcf\r
3749l1bd2h:\r
3750 ld a,b ;1bd2\r
3751 add a,006h ;1bd3\r
3752 jp l19ebh ;1bd5\r
3753l1bd8h:\r
3754 call sub_1e41h ;1bd8\r
3755 jr c,l1c01h ;1bdb\r
3756 call sub_1e68h ;1bdd\r
3757 jp nc,ERROR ;1be0\r
3758 ld a,b ;1be3\r
3759 add a,006h ;1be4\r
3760 ld b,a ;1be6\r
3761l1be7h:\r
3762 call assert_eol ;1be7\r
3763 ld a,(pfx.IXY) ;1bea\r
3764 comst ;1bed\r
3765 ld (iy+000h),a ;1bf1\r
3766 ld (iy+001h),0cbh ;1bf4\r
3767 ld (iy+002h),c ;1bf8\r
3768 ld (iy+003h),b ;1bfb\r
3769 comend\r
3770 ld c,004h ;1bfe\r
3771 ret ;1c00\r
3772l1c01h:\r
3773 add a,b ;1c01\r
3774l1c02h:\r
3775 ld b,a ;1c02\r
3776 call assert_eol ;1c03\r
3777 comst ;1c06\r
3778 ld (iy+000h),0cbh ;1c0a\r
3779 ld (iy+001h),b ;1c0e\r
3780 comend\r
3781 ld c,002h ;1c11\r
3782 ret ;1c13\r
3783l1c14h:\r
3784 call sub_1de6h ;1c14\r
3785 call sub_1ed1h ;1c17\r
3786 call sub_1e41h ;1c1a\r
3787 jr c,l1c2fh ;1c1d\r
3788 call sub_1e68h ;1c1f\r
3789 jp nc,ERROR ;1c22\r
3790 ld a,l ;1c25\r
3791 rlca ;1c26\r
3792 rlca ;1c27\r
3793 rlca ;1c28\r
3794 add a,006h ;1c29\r
3795 add a,b ;1c2b\r
3796 ld b,a ;1c2c\r
3797 jr l1be7h ;1c2d\r
3798l1c2fh:\r
3799 add a,b ;1c2f\r
3800 ld b,a ;1c30\r
3801 ld a,l ;1c31\r
3802 rlca ;1c32\r
3803 rlca ;1c33\r
3804 rlca ;1c34\r
3805 add a,b ;1c35\r
3806 jr l1c02h ;1c36\r
3807l1c38h:\r
3808 push de ;1c38\r
3809 call sub_1eb8h ;1c39\r
3810 jr nc,l1c47h ;1c3c\r
3811 add a,b ;1c3e\r
3812 ld b,a ;1c3f\r
3813 call skip_to_nextarg ;1c40\r
3814 jr z,l1c49h ;1c43\r
3815 pop de ;1c45\r
3816 push de ;1c46\r
3817l1c47h:\r
3818 ld b,0cdh ;1c47\r
3819l1c49h:\r
3820 pop af ;1c49\r
3821 call tst_EXPR ;1c4a\r
3822 jp l199ah ;1c4d\r
3823l1c50h:\r
3824 call sub_1eb8h ;1c50\r
3825 jr nc,l1c59h ;1c53\r
3826 add a,b ;1c55\r
3827 ld b,a ;1c56\r
3828 jr l1c5bh ;1c57\r
3829l1c59h:\r
3830 ld b,0c9h ;1c59\r
3831l1c5bh:\r
3832 jp l1b36h ;1c5b\r
3833l1c5eh:\r
3834 push de ;1c5e\r
3835 call sub_1eb8h ;1c5f\r
3836 jr c,l1c71h ;1c62\r
3837l1c64h:\r
3838 pop de ;1c64\r
3839 ld hl,b_0x1C97_start ;1c65\r
3840 call sub_0a15h ;1c68\r
3841 jr c,l1c7fh ;1c6b\r
3842 ld b,0c3h ;1c6d\r
3843 jr l1c79h ;1c6f\r
3844l1c71h:\r
3845 add a,b ;1c71\r
3846 ld b,a ;1c72\r
3847 call skip_to_nextarg ;1c73\r
3848 jr nz,l1c64h ;1c76\r
3849 pop af ;1c78\r
3850l1c79h:\r
3851 call tst_EXPR ;1c79\r
3852 jp l199ah ;1c7c\r
3853l1c7fh:\r
3854 call assert_eol ;1c7f\r
3855 ld a,b ;1c82\r
3856 and a ;1c83\r
3857 jr nz,l1c8bh ;1c84\r
3858 ld b,0e9h ;1c86\r
3859 jp l1b36h ;1c88\r
3860l1c8bh:\r
3861 ld b,0ddh ;1c8b\r
3862 dec a ;1c8d\r
3863 jr z,l1c92h ;1c8e\r
3864 ld b,0fdh ;1c90\r
3865l1c92h:\r
3866 ld l,0e9h ;1c92\r
3867 jp l1a2fh ;1c94\r
3868\r
3869b_0x1C97_start:\r
3870 DC '(HL)'\r
3871 DC '(IX)'\r
3872 DC '(IY)'\r
3873 DB 0\r
3874\r
3875l1ca4h:\r
3876 call skip_to_nextarg ;1ca4\r
3877 ld b,010h ;1ca7\r
3878 jr l1cb9h ;1ca9\r
3879l1cabh:\r
3880 call sub_1ebfh ;1cab\r
3881 jr c,l1cb4h ;1cae\r
3882 ld b,018h ;1cb0\r
3883 jr l1cb9h ;1cb2\r
3884l1cb4h:\r
3885 add a,b ;1cb4\r
3886 ld b,a ;1cb5\r
3887 call sub_1ed1h ;1cb6\r
3888l1cb9h:\r
3889 call sub_1defh ;1cb9\r
3890 jp l1a2fh ;1cbc\r
3891l1cbfh:\r
3892 call sub_1e12h ;1cbf\r
3893 ld a,l ;1cc2\r
3894 cp 003h ;1cc3\r
3895 jr nc,l1d23h ;1cc5\r
3896 and a ;1cc7\r
3897 jr z,l1cd2h ;1cc8\r
3898 ld b,056h ;1cca\r
3899 cp 001h ;1ccc\r
3900 jr z,l1cd2h ;1cce\r
3901 ld b,05eh ;1cd0\r
3902l1cd2h:\r
3903 jp gen.opc.ED2 ;1cd2\r
3904l1cd5h:\r
3905 call sub_1e12h ;1cd5\r
3906 ld a,l ;1cd8\r
3907 push af ;1cd9\r
3908 add a,b ;1cda\r
3909 ld b,a ;1cdb\r
3910 pop af ;1cdc\r
3911 and 0c7h ;1cdd\r
3912 jr nz,l1d23h ;1cdf\r
3913 jp l1b36h ;1ce1\r
3914l1ce4h:\r
3915 call sub_1e50h ;1ce4\r
3916 jr c,l1cf2h ;1ce7\r
3917 call sub_1e25h ;1ce9\r
3918 jr nc,l1d23h ;1cec\r
3919 add a,b ;1cee\r
3920 jp l19d7h ;1cef\r
3921l1cf2h:\r
3922 ld a,b ;1cf2\r
3923 add a,020h ;1cf3\r
3924 jp l1b99h ;1cf5\r
3925l1cf8h:\r
3926 call sub_1e41h ;1cf8\r
3927 jr nc,l1d23h ;1cfb\r
3928 cp 006h ;1cfd\r
3929 jr z,l1d23h ;1cff\r
3930 rlca ;1d01\r
3931 rlca ;1d02\r
3932 rlca ;1d03\r
3933 add a,b ;1d04\r
3934 ld b,a ;1d05\r
3935 cp 078h ;1d06\r
3936 jr nz,l1d1ah ;1d08\r
3937 call sub_1ed1h ;1d0a\r
3938 call sub_1d26h ;1d0d\r
3939 jr c,l1d20h ;1d10\r
3940 call sub_1e06h ;1d12\r
3941 ld b,0dbh ;1d15\r
3942 jp l1a2fh ;1d17\r
3943l1d1ah:\r
3944 call sub_1ed1h ;1d1a\r
3945 call sub_1d26h ;1d1d\r
3946l1d20h:\r
3947 jp c,gen.opc.ED2 ;1d20\r
3948l1d23h:\r
3949 jp ERROR ;1d23\r
3950sub_1d26h:\r
3951 ld hl,t__C_ ;1d26\r
3952 jp sub_0a23h ;1d29\r
3953l1d2ch:\r
3954 call sub_1d26h ;1d2c\r
3955 jr nc,l1d44h ;1d2f\r
3956 call sub_1ed1h ;1d31\r
3957 call sub_1e41h ;1d34\r
3958 jr nc,l1d23h ;1d37\r
3959 cp 006h ;1d39\r
3960 jr z,l1d23h ;1d3b\r
3961 rlca ;1d3d\r
3962 rlca ;1d3e\r
3963 rlca ;1d3f\r
3964 add a,b ;1d40\r
3965 jp l1b71h ;1d41\r
3966l1d44h:\r
3967 call sub_1e06h ;1d44\r
3968 call sub_1ed1h ;1d47\r
3969 cp 041h ;1d4a\r
3970 jr nz,l1d23h ;1d4c\r
3971 inc de ;1d4e\r
3972 ld b,0d3h ;1d4f\r
3973 jp l1a2fh ;1d51\r
3974l1d54h:\r
3975 ld hl,b_0x1D80_start ;1d54\r
3976 call sub_0a15h ;1d57\r
3977 jp nc,ERROR ;1d5a\r
3978 ld c,b ;1d5d\r
3979 call assert_eol ;1d5e\r
3980 ld b,000h ;1d61\r
3981 ld hl,b_0x1DA1_start ;1d63\r
3982 add hl,bc ;1d66\r
3983 add hl,bc ;1d67\r
3984 ld a,(hl) ;1d68\r
3985 comst ;1d69\r
3986 ld (iy+000h),a ;1d6d\r
3987 comend\r
3988 ld c,001h ;1d70\r
3989 inc hl ;1d72\r
3990 ld a,(hl) ;1d73\r
3991 and a ;1d74\r
3992 ret z ;1d75\r
3993 comst ;1d76\r
3994 ld (iy+001h),a ;1d7a\r
3995 comend\r
3996 ld c,002h ;1d7d\r
3997 ret ;1d7f\r
3998\r
3999b_0x1D80_start:\r
4000 DC 'AF,AF'''\r
4001l1d86h:\r
4002 DC 'DE,HL'\r
4003 DC '(SP),HL'\r
4004 DC '(SP),IX'\r
4005 DC '(SP),IY'\r
4006 db 000h ;1da0\r
4007\r
4008b_0x1DA1_start:\r
4009 db 008h ;1da1\r
4010 db 000h ;1da2\r
4011 db 0ebh ;1da3\r
4012 db 000h ;1da4\r
4013 db 0e3h ;1da5\r
4014 db 000h ;1da6\r
4015 db 0ddh ;1da7\r
4016 db 0e3h ;1da8\r
4017 db 0fdh ;1da9\r
4018 db 0e3h ;1daa\r
4019l1dabh:\r
4020 call sub_1e50h ;1dab\r
4021 jr c,l1dc6h ;1dae\r
4022 call sub_1e2eh ;1db0\r
4023 jr c,l1dd2h ;1db3\r
4024 call sub_1e41h ;1db5\r
4025 jr c,l1ddfh ;1db8\r
4026 call sub_1e68h ;1dba\r
4027 jp nc,ERROR ;1dbd\r
4028 ld a,b ;1dc0\r
4029 add a,030h ;1dc1\r
4030 jp l19ebh ;1dc3\r
4031l1dc6h:\r
4032 ld a,b ;1dc6\r
4033 ld b,023h ;1dc7\r
4034 cp 004h ;1dc9\r
4035 jr z,l1dcfh ;1dcb\r
4036 ld b,02bh ;1dcd\r
4037l1dcfh:\r
4038 jp l1aabh ;1dcf\r
4039l1dd2h:\r
4040 push af ;1dd2\r
4041 ld a,b ;1dd3\r
4042 ld b,003h ;1dd4\r
4043 cp 004h ;1dd6\r
4044 jr z,l1ddch ;1dd8\r
4045 ld b,00bh ;1dda\r
4046l1ddch:\r
4047 pop af ;1ddc\r
4048 jr l1de2h ;1ddd\r
4049l1ddfh:\r
4050 rlca ;1ddf\r
4051 rlca ;1de0\r
4052 rlca ;1de1\r
4053l1de2h:\r
4054 add a,b ;1de2\r
4055 jp l19d7h ;1de3\r
4056sub_1de6h:\r
4057 call sub_1e12h ;1de6\r
4058 ld a,l ;1de9\r
4059 cp 008h ;1dea\r
4060 jr nc,error1 ;1dec\r
4061 ret ;1dee\r
4062sub_1defh:\r
4063 call tst_EXPR ;1def\r
4064 push bc ;1df2\r
4065 push iy ;1df3\r
4066 pop bc ;1df5\r
4067 and a ;1df6\r
4068 sbc hl,bc ;1df7\r
4069 dec hl ;1df9\r
4070 dec hl ;1dfa\r
4071 pop bc ;1dfb\r
4072 call sub_1e15h ;1dfc\r
4073 ld a,h ;1dff\r
4074 xor l ;1e00\r
4075 bit 7,a ;1e01\r
4076 jr nz,error1 ;1e03\r
4077 ret ;1e05\r
4078sub_1e06h:\r
4079 ld a,(de) ;1e06\r
4080 cp 028h ;1e07\r
4081 jr nz,sub_1e12h ;1e09\r
4082 inc de ;1e0b\r
4083 call sub_1e12h ;1e0c\r
4084 jp sub_1ed8h ;1e0f\r
4085\r
4086sub_1e12h:\r
4087 call tst_EXPR ;1e12\r
4088sub_1e15h:\r
4089 ld a,h ;1e15\r
4090 and a ;1e16\r
4091 ret z ;1e17\r
4092 inc a ;1e18\r
4093 ret z ;1e19\r
4094 jr error1 ;1e1a\r
4095\r
4096tst_EXPR:\r
4097 push bc ;1e1c\r
4098 call EXPR ;1e1d\r
4099 pop bc ;1e20\r
4100 ret nc ;1e21\r
4101error1:\r
4102 jp ERROR ;1e22\r
4103sub_1e25h:\r
4104 push hl ;1e25\r
4105 ld hl,t_BC.DE.HL.AF ;1e26\r
4106 jr l1e32h ;1e29\r
4107sub_1e2bh:\r
4108 push hl ;1e2b\r
4109 jr l1e32h ;1e2c\r
4110sub_1e2eh:\r
4111 push hl ;1e2e\r
4112 ld hl,t_BC.DE.HL.SP ;1e2f\r
4113l1e32h:\r
4114 push bc ;1e32\r
4115 call sub_0a15h ;1e33\r
4116 jr nc,l1e3eh ;1e36\r
4117 ld a,b ;1e38\r
4118 rlca ;1e39\r
4119 rlca ;1e3a\r
4120 rlca ;1e3b\r
4121 rlca ;1e3c\r
4122 scf ;1e3d\r
4123l1e3eh:\r
4124 pop bc ;1e3e\r
4125 pop hl ;1e3f\r
4126 ret ;1e40\r
4127sub_1e41h:\r
4128 call SKIPBL ;1e41\r
4129 push bc ;1e44\r
4130 push hl ;1e45\r
4131 ld hl,t_BCDEHL_HL_A ;1e46\r
4132 call sub_0a15h ;1e49\r
4133 ld a,b ;1e4c\r
4134 pop hl ;1e4d\r
4135 pop bc ;1e4e\r
4136 ret ;1e4f\r
4137sub_1e50h:\r
4138 push hl ;1e50\r
4139 push bc ;1e51\r
4140 ld hl,t_IX.IY ;1e52\r
4141 call sub_0a15h ;1e55\r
4142 jr nc,l1e65h ;1e58\r
4143 ld a,0ddh ;1e5a\r
4144 dec b ;1e5c\r
4145 jr nz,l1e61h ;1e5d\r
4146 ld a,0fdh ;1e5f\r
4147l1e61h:\r
4148 ld (pfx.IXY),a ;1e61\r
4149 scf ;1e64\r
4150l1e65h:\r
4151 pop bc ;1e65\r
4152 pop hl ;1e66\r
4153 ret ;1e67\r
4154sub_1e68h:\r
4155 push hl ;1e68\r
4156 push bc ;1e69\r
4157 ld a,(de) ;1e6a\r
4158 cp '(' ;1e6b\r
4159 jr nz,l1eb4h ;1e6d\r
4160 push de ;1e6f\r
4161 inc de ;1e70\r
4162 ld hl,t_IX.IY ;1e71\r
4163 call sub_0a15h ;1e74\r
4164 jr nc,l1eb3h ;1e77\r
4165 pop af ;1e79\r
4166 ld a,0ddh ;1e7a\r
4167 dec b ;1e7c\r
4168 jr nz,l1e81h ;1e7d\r
4169 ld a,0fdh ;1e7f\r
4170l1e81h:\r
4171 ld (pfx.IXY),a ;1e81\r
4172 ld a,(de) ;1e84\r
4173 cp '+' ;1e85\r
4174 jr z,l1e95h ;1e87\r
4175 cp ')' ;1e89\r
4176 ld hl,0 ;1e8b\r
4177 jr z,l1eadh ;1e8e\r
4178 cp '-' ;1e90\r
4179 jp nz,ERROR ;1e92\r
4180l1e95h:\r
4181 push af ;1e95\r
4182 inc de ;1e96\r
4183 call sub_1e12h ;1e97 get displacement\r
4184 pop af ;1e9a\r
4185 cp '+' ;1e9b\r
4186 jr z,l1ea7h ;1e9d\r
4187 ld b,h ;1e9f\r
4188 ld c,l ;1ea0\r
4189 ld hl,0 ;1ea1\r
4190 and a ;1ea4\r
4191 sbc hl,bc ;1ea5\r
4192l1ea7h:\r
4193 ld a,(de) ;1ea7\r
4194 cp ')' ;1ea8\r
4195 jp nz,ERROR ;1eaa\r
4196l1eadh:\r
4197 inc de ;1ead\r
4198 pop bc ;1eae\r
4199 ld c,l ;1eaf\r
4200 pop hl ;1eb0\r
4201 scf ;1eb1\r
4202 ret ;1eb2\r
4203l1eb3h:\r
4204 pop de ;1eb3\r
4205l1eb4h:\r
4206 pop bc ;1eb4\r
4207 pop hl ;1eb5\r
4208 and a ;1eb6\r
4209 ret ;1eb7\r
4210sub_1eb8h:\r
4211 ld hl,t_tstfl_ZCPS ;1eb8\r
4212 ld c,007h ;1ebb\r
4213 jr l1ec4h ;1ebd\r
4214sub_1ebfh:\r
4215 ld hl,t_tstfl_ZC ;1ebf\r
4216 ld c,003h ;1ec2\r
4217l1ec4h:\r
4218 push bc ;1ec4\r
4219 call sub_0a15h ;1ec5\r
4220 ld a,b ;1ec8\r
4221 pop bc ;1ec9\r
4222 ret nc ;1eca\r
4223 and c ;1ecb\r
4224 rlca ;1ecc\r
4225 rlca ;1ecd\r
4226 rlca ;1ece\r
4227 scf ;1ecf\r
4228 ret ;1ed0\r
4229sub_1ed1h:\r
4230 call skip_to_nextarg ;1ed1\r
4231 ret z ;1ed4\r
4232l1ed5h:\r
4233 jp ERROR ;1ed5\r
4234sub_1ed8h:\r
4235 ld a,(de) ;1ed8\r
4236 cp 029h ;1ed9\r
4237 jr nz,l1ed5h ;1edb\r
4238 inc de ;1edd\r
4239 ret ;1ede\r
4240CMD.L:\r
4241 ld hl,CMD.L ;1edf\r
4242 ld (CMD_RPT),hl ;1ee2\r
4243 call EXPR ;1ee5\r
4244 jr nc,l1eedh ;1ee8\r
4245 ld hl,(lst.L) ;1eea\r
4246l1eedh:\r
4247 push hl ;1eed\r
4248 pop iy ;1eee\r
4249 call skip_to_nextarg ;1ef0\r
4250 call sub_0aa5h ;1ef3\r
4251 jr nc,l1f17h ;1ef6\r
4252 call assert_eol ;1ef8\r
4253 ld b,010h ;1efb\r
4254l1efdh:\r
4255 push bc ;1efd\r
4256 push iy ;1efe\r
4257 pop hl ;1f00\r
4258 push hl ;1f01\r
4259 call sub_1f3fh ;1f02\r
4260 call CRLF ;1f05\r
4261 pop iy ;1f08\r
4262 ld c,b ;1f0a\r
4263 ld b,000h ;1f0b\r
4264 add iy,bc ;1f0d\r
4265 ld (lst.L),iy ;1f0f\r
4266 pop bc ;1f13\r
4267 djnz l1efdh ;1f14\r
4268 ret ;1f16\r
4269l1f17h:\r
4270 call assert_eol ;1f17\r
4271 ld h,b ;1f1a\r
4272 ld l,c ;1f1b\r
4273 ld a,b ;1f1c\r
4274 or c ;1f1d\r
4275 jr nz,l1f21h ;1f1e\r
4276 dec hl ;1f20\r
4277l1f21h:\r
4278 push hl ;1f21\r
4279 push iy ;1f22\r
4280 pop hl ;1f24\r
4281 push hl ;1f25\r
4282 call sub_1f3fh ;1f26\r
4283 call CRLF ;1f29\r
4284 pop iy ;1f2c\r
4285 ld e,b ;1f2e\r
4286 ld d,000h ;1f2f\r
4287 add iy,de ;1f31\r
4288 ld (lst.L),iy ;1f33\r
4289 pop hl ;1f37\r
4290 and a ;1f38\r
4291 sbc hl,de ;1f39\r
4292 ret z ;1f3b\r
4293 ret c ;1f3c\r
4294 jr l1f21h ;1f3d\r
4295sub_1f3fh:\r
4296 call out.hl.@ ;1f3f\r
4297 call z,OUTBL ;1f42\r
4298 call OUTBL ;1f45\r
4299 sub a ;1f48\r
4300 ld (CON.COL),a ;1f49\r
4301 call sub_1f77h ;1f4c\r
4302 and a ;1f4f\r
4303 ret z ;1f50\r
4304l1f51h:\r
4305 call OUTBL ;1f51\r
4306 ld a,(CON.COL) ;1f54\r
4307 cp 010h ;1f57\r
4308 jr c,l1f51h ;1f59\r
4309sub_1f5bh:\r
4310 ld de,(offs.@) ;1f5b\r
4311 ld a,d ;1f5f\r
4312 or e ;1f60\r
4313 ret z ;1f61\r
4314 ld a,'(' ;1f62\r
4315 call OUTCHAR ;1f64\r
4316 ld a,'@' ;1f67\r
4317 call OUTCHAR ;1f69\r
4318 and a ;1f6c\r
4319 sbc hl,de ;1f6d\r
4320 call out.hl ;1f6f\r
4321 ld a,')' ;1f72\r
4322 jp OUTCHAR ;1f74\r
4323sub_1f77h:\r
4324 sub a ;1f77\r
4325 ld (XBE03),a ;1f78\r
4326 call sub_1f9eh ;1f7b\r
4327 jr nc,l1f91h ;1f7e\r
4328 push bc ;1f80\r
4329 call sub_2581h ;1f81\r
4330 ex de,hl ;1f84\r
4331 call sub_1fdbh ;1f85\r
4332 pop bc ;1f88\r
4333 ld a,(XBE03) ;1f89\r
4334 ld hl,(XBE01) ;1f8c\r
4335 scf ;1f8f\r
4336 ret ;1f90\r
4337l1f91h:\r
4338 ld hl,b_0x1F9B_start ;1f91\r
4339 call PSTR ;1f94\r
4340 ld b,001h ;1f97\r
4341 sub a ;1f99\r
4342 ret ;1f9a\r
4343\r
4344b_0x1F9B_start:\r
4345 DC '???'\r
4346 \r
4347sub_1f9eh:\r
4348 sub a ;1f9e\r
4349 ld (is.pfx.IXY),a ;1f9f\r
4350 comst ;1fa2\r
4351 ld a,(iy+000h) ;1fa6\r
4352 comend\r
4353 cp 0edh ;1fa9\r
4354 jp z,disas_pfx.ED ;1fab\r
4355 cp 0ddh ;1fae\r
4356 jr z,l1fc5h ;1fb0\r
4357 cp 0fdh ;1fb2\r
4358 jr z,l1fc9h ;1fb4\r
4359sub_1fb6h:\r
4360 comst ;1fb6\r
4361 ld a,(iy+000h) ;1fba\r
4362 comend\r
4363 cp 0cbh ;1fbd\r
4364 jp z,l2061h ;1fbf\r
4365 jp l2078h ;1fc2\r
4366l1fc5h:\r
4367 ld a,001h ;1fc5\r
4368 jr l1fcbh ;1fc7\r
4369l1fc9h:\r
4370 ld a,002h ;1fc9\r
4371l1fcbh:\r
4372 ld (is.pfx.IXY),a ;1fcb\r
4373 call sub_1fdch ;1fce\r
4374 ret nc ;1fd1\r
4375 push bc ;1fd2\r
4376 call sub_1fb6h ;1fd3\r
4377 pop af ;1fd6\r
4378 add a,b ;1fd7\r
4379 ld b,a ;1fd8\r
4380 scf ;1fd9\r
4381 ret ;1fda\r
4382\r
4383sub_1fdbh:\r
4384 jp (hl) ;1fdb\r
4385\r
4386sub_1fdch:\r
4387 inc iy ;1fdc\r
4388 ld hl,b_0x2011_start ;1fde\r
4389 call sub_20bbh ;1fe1\r
4390 ld b,002h ;1fe4\r
4391 ret c ;1fe6\r
4392 ld hl,l202ch ;1fe7\r
4393 call sub_20bbh ;1fea\r
4394 ld b,001h ;1fed\r
4395 ret c ;1fef\r
4396 comst ;1ff0\r
4397 ld a,(iy+000h) ;1ff4\r
4398 comend\r
4399 cp 0cbh ;1ff7\r
4400 jr nz,l200fh ;1ff9\r
4401 comst ;1ffb\r
4402 ld a,(iy+002h) ;1fff\r
4403 comend\r
4404 cp 036h ;2002\r
4405 ret z ;2004\r
4406 and 007h ;2005\r
4407 cp 006h ;2007\r
4408 jr nz,l200fh ;2009\r
4409 ld b,002h ;200b\r
4410 scf ;200d\r
4411 ret ;200e\r
4412l200fh:\r
4413 and a ;200f\r
4414 ret ;2010\r
4415\r
4416b_0x2011_start:\r
4417 db 034h ;2011\r
4418 db 035h ;2012\r
4419 db 036h ;2013\r
4420 db 046h ;2014\r
4421 db 04eh ;2015\r
4422 db 056h ;2016\r
4423 db 05eh ;2017\r
4424 db 066h ;2018\r
4425 db 06eh ;2019\r
4426 db 070h ;201a\r
4427 db 071h ;201b\r
4428 db 072h ;201c\r
4429 db 073h ;201d\r
4430 db 074h ;201e\r
4431 db 075h ;201f\r
4432 db 076h ;2020\r
4433 db 077h ;2021\r
4434 db 07eh ;2022\r
4435 db 086h ;2023\r
4436 db 08eh ;2024\r
4437 db 096h ;2025\r
4438 db 09eh ;2026\r
4439 db 0a6h ;2027\r
4440 db 0aeh ;2028\r
4441 db 0b6h ;2029\r
4442 db 0beh ;202a\r
4443 db 000h ;202b\r
4444l202ch:\r
4445 db 009h ;202c\r
4446 db 019h ;202d\r
4447 db 021h ;202e\r
4448 db 022h ;202f\r
4449 db 023h ;2030\r
4450 db 029h ;2031\r
4451 db 02ah ;2032\r
4452 db 02bh ;2033\r
4453 db 039h ;2034\r
4454 db 0e1h ;2035\r
4455 db 0e3h ;2036\r
4456 db 0e5h ;2037\r
4457 db 0e9h ;2038\r
4458 db 0f9h ;2039\r
4459 db 000h ;203a\r
4460\r
4461disas_pfx.ED:\r
4462 inc iy ;203b\r
4463 ld hl,b_0x2200_start ;203d\r
4464 call sub_209dh ;2040\r
4465 ld b,002h ;2043\r
4466 ret c ;2045\r
4467 ld hl,l2235h ;2046\r
4468 call lookup_opc ;2049\r
4469 ld b,002h ;204c\r
4470 ret c ;204e\r
4471 ld hl,l228bh ;204f\r
4472 call lookup_opc ;2052\r
4473 ld b,003h ;2055\r
4474 ret c ;2057\r
4475 ld hl,l22b4h ;2058\r
4476 call lookup_opc ;205b\r
4477 ld b,004h ;205e\r
4478 ret ;2060\r
4479l2061h:\r
4480 push iy ;2061\r
4481 inc iy ;2063\r
4482 ld a,(is.pfx.IXY) ;2065\r
4483 and a ;2068\r
4484 jr z,l206dh ;2069\r
4485 inc iy ;206b\r
4486l206dh:\r
4487 ld hl,l22c9h ;206d\r
4488 call lookup_opc ;2070\r
4489 pop iy ;2073\r
4490 ld b,002h ;2075\r
4491 ret ;2077\r
4492l2078h:\r
4493 ld hl,b_0x218B_start ;2078\r
4494 call lookup_opc ;207b\r
4495 ld b,002h ;207e\r
4496 ret c ;2080\r
4497 ld hl,b_0x20ED_start ;2081\r
4498 call sub_209dh ;2084\r
4499 ld b,001h ;2087\r
4500 ret c ;2089\r
4501 ld hl,b_0x2108_start ;208a\r
4502 call lookup_opc ;208d\r
4503 ld b,001h ;2090\r
4504 ret c ;2092\r
4505 ld hl,b_0x21D2_start ;2093\r
4506 call lookup_opc ;2096\r
4507 ret nc ;2099\r
4508 ld b,003h ;209a\r
4509 ret ;209c\r
4510\r
4511sub_209dh:\r
4512 ld a,(hl) ;209d\r
4513 cp 0ffh ;209e\r
4514 ret z ;20a0\r
4515 comst ;20a1\r
4516 cp (iy+000h) ;20a5\r
4517 comend\r
4518 jr z,l20aeh ;20a8\r
4519 inc hl ;20aa\r
4520 inc hl ;20ab\r
4521 jr sub_209dh ;20ac\r
4522l20aeh:\r
4523 inc hl ;20ae\r
4524 ld c,(hl) ;20af\r
4525 ld hl,t_MNEMONICS ;20b0\r
4526 ld b,000h ;20b3\r
4527 add hl,bc ;20b5\r
4528 ld de,l230bh ;20b6\r
4529 scf ;20b9\r
4530 ret ;20ba\r
4531sub_20bbh:\r
4532 ld a,(hl) ;20bb\r
4533 and a ;20bc\r
4534 ret z ;20bd\r
4535 inc hl ;20be\r
4536 comst ;20bf\r
4537 cp (iy+000h) ;20c3\r
4538 comend\r
4539 jr nz,sub_20bbh ;20c6\r
4540 scf ;20c8\r
4541 ret ;20c9\r
4542\r
4543lookup_opc:\r
4544 comst ;20ca\r
4545 ld a,(iy+000h) ;20ce\r
4546 comend\r
4547 and (hl) ;20d1\r
4548 inc hl ;20d2\r
4549 cp (hl) ;20d3\r
4550 jr z,l20dfh ;20d4\r
4551 inc hl ;20d6\r
4552 inc hl ;20d7\r
4553 inc hl ;20d8\r
4554 inc hl ;20d9\r
4555 ld a,(hl) ;20da\r
4556 and a ;20db\r
4557 jr nz,lookup_opc ;20dc\r
4558 ret ;20de\r
4559l20dfh:\r
4560 inc hl ;20df\r
4561 ld c,(hl) ;20e0\r
4562 inc hl ;20e1\r
4563 ld e,(hl) ;20e2\r
4564 inc hl ;20e3\r
4565 ld d,(hl) ;20e4\r
4566 ld hl,t_MNEMONICS ;20e5\r
4567 ld b,000h ;20e8\r
4568 add hl,bc ;20ea\r
4569 scf ;20eb\r
4570 ret ;20ec\r
4571\r
4572b_0x20ED_start: ; 1 byte opcodes (no parameters)\r
4573 db 076h ;20ed halt\r
4574 db 039h ;20ee \r
4575 db 0d9h ;20ef exx\r
4576 db 036h ;20f0\r
4577 db 0f3h ;20f1 di\r
4578 db 02ch ;20f2\r
4579 db 0fbh ;20f3 ei\r
4580 db 032h ;20f4\r
4581 db 000h ;20f5 nop\r
4582 db 069h ;20f6\r
4583 db 007h ;20f7 rlca\r
4584 db 09eh ;20f8\r
4585 db 00fh ;20f9 rrca\r
4586 db 0adh ;20fa\r
4587 db 017h ;20fb rla\r
4588 db 098h ;20fc\r
4589 db 01fh ;20fd rra\r
4590 db 0a7h ;20fe\r
4591 db 027h ;20ff daa\r
4592 db 026h ;2100\r
4593 db 02fh ;2101 cpl\r
4594 db 023h ;2102\r
4595 db 037h ;2103 scf\r
4596 db 0bah ;2104\r
4597 db 03fh ;2105 ccf\r
4598 db 010h ;2106\r
4599 db 0ffh ;2107 EOT\r
4600\r
4601b_0x2108_start: ; 1 byte opcodes\r
4602 defb 0c0h ;2108 ld r,r\r
4603 defb 040h ;2109\r
4604 defb 056h ;210a\r
4605 defw l22fch ;210b\r
4606\r
4607 defb 0f8h ;210d add a,r\r
4608 defb 080h ;210e\r
4609 defb 003h ;210f\r
4610 defw l2305h ;2110\r
4611\r
4612 defb 0f8h ;2112 adc a,r\r
4613 defb 088h ;2113\r
4614 defb 000h ;2114\r
4615 defw l2305h ;2115\r
4616\r
4617 defb 0f8h ;2117\r
4618 defb 090h ;2118\r
4619 defb 0c9h ;2119\r
4620 defw l24ebh ;211a\r
4621\r
4622 defb 0f8h ;211c\r
4623 defb 098h ;211d\r
4624 defb 0b7h ;211e\r
4625 defw l2305h ;211f\r
4626\r
4627 defb 0f8h ;2121\r
4628 defb 0a0h ;2122\r
4629 defb 006h ;2123\r
4630 defw l24ebh ;2124\r
4631\r
4632 defb 0f8h ;2126\r
4633 defb 0a8h ;2127\r
4634 defb 0cch ;2128\r
4635 defw l24ebh ;2129\r
4636\r
4637 defb 0f8h ;212b\r
4638 defb 0b0h ;212c\r
4639 defb 06ch ;212d\r
4640 defw l24ebh ;212e\r
4641\r
4642 defb 0f8h ;2130\r
4643 defb 0b8h ;2131\r
4644 defb 013h ;2132\r
4645 defw l24ebh ;2133\r
4646\r
4647 defb 0c7h ;2135\r
4648 defb 0c0h ;2136 ret cc\r
4649 defb 08bh ;2137\r
4650 defw l2561h ;2138\r
4651\r
4652 defb 0c7h ;213a rst \r
4653 defb 0c7h ;213b\r
4654 defb 0b4h ;213c\r
4655 defw l231eh ;213d\r
4656\r
4657 defb 0ffh ;213f ret\r
4658 defb 0c9h ;2140\r
4659 defb 08bh ;2141\r
4660 defw l230bh ;2142\r
4661\r
4662 defb 0cfh ;2144 pop rr\r
4663 defb 0c1h ;2145\r
4664 defb 081h ;2146\r
4665 defw l2546h ;2147\r
4666\r
4667 defb 0cfh ;2149 push rr\r
4668 defb 0c5h ;214a\r
4669 defb 084h ;214b\r
4670 defw l2546h ;214c\r
4671\r
4672 defb 0ffh ;214e ex (sp),hl\r
4673 defb 0e3h ;214f\r
4674 defb 034h ;2150\r
4675 defw l232ah ;2151\r
4676\r
4677 defb 0ffh ;2153 jp (hl)\r
4678 defb 0e9h ;2154\r
4679 defb 052h ;2155\r
4680 defw l2338h ;2156\r
4681\r
4682 defb 0ffh ;2158 ex de,hl\r
4683 defb 0ebh ;2159\r
4684 defb 034h ;215a\r
4685 defw l2345h ;215b\r
4686\r
4687 defb 0ffh ;215d ld sp,hl\r
4688 defb 0f9h ;215e\r
4689 defb 056h ;215f\r
4690 defw l234bh ;2160\r
4691\r
4692 defb 0cfh ;2162 inc rr\r
4693 defb 003h ;2163\r
4694 defb 041h ;2164\r
4695 defw l254bh ;2165\r
4696\r
4697 defb 0cfh ;2167 dec rr\r
4698 defb 00bh ;2168\r
4699 defb 029h ;2169\r
4700 defw l254bh ;216a\r
4701\r
4702 defb 0c7h ;216c inc r\r
4703 defb 004h ;216d\r
4704 defb 041h ;216e\r
4705 defw l24dfh ;216f\r
4706\r
4707 defb 0c7h ;2171 dec r\r
4708 defb 005h ;2172\r
4709 defb 029h ;2173\r
4710 defw l24dfh ;2174\r
4711\r
4712 defb 0ffh ;2176 ex af,af'\r
4713 defb 008h ;2177\r
4714 defb 034h ;2178\r
4715 defw l2357h ;2179\r
4716\r
4717 defb 0cfh ;217b add hl,rr\r
4718 defb 009h ;217c\r
4719 defb 003h ;217d\r
4720 defw l235dh ;217e\r
4721\r
4722 defb 0efh ;2180 ld (rr),a ;rr=bc,de\r
4723 defb 002h ;2181\r
4724 defb 056h ;2182\r
4725 defw l2366h ;2183\r
4726\r
4727 defb 0efh ;2185 ld a,(rr) ;rr=bc,de\r
4728 defb 00ah ;2186\r
4729 defb 056h ;2187\r
4730 defw l236fh ;2188\r
4731\r
4732 defb 000h ;218a EOT\r
4733\r
4734b_0x218B_start: ; 2 byte opdodes\r
4735 defb 0c7h ;218b ld r,nn\r
4736 defb 006h ;218c\r
4737 defb 056h ;218d\r
4738 defw l2384h ;218e\r
4739\r
4740 defb 0ffh ;2190 add a,nn\r
4741 defb 0c6h ;2191\r
4742 defb 003h ;2192\r
4743 defw l237fh ;2193\r
4744\r
4745 defb 0ffh ;2195 adc a,nn\r
4746 defb 0ceh ;2196\r
4747 defb 000h ;2197\r
4748 defw l237fh ;2198\r
4749\r
4750 defb 0ffh ;219a sub a,nn\r
4751 defb 0d6h ;219b\r
4752 defb 0c9h ;219c\r
4753 defw l2397h ;219d\r
4754\r
4755 defb 0ffh ;219f\r
4756 defb 0deh ;21a0\r
4757 defb 0b7h ;21a1\r
4758 defw l237fh ;21a2\r
4759\r
4760 defb 0ffh ;21a4 and a,nn\r
4761 defb 0e6h ;21a5\r
4762 defb 006h ;21a6\r
4763 defw l2397h ;21a7\r
4764\r
4765 defb 0ffh ;21a9\r
4766 defb 0eeh ;21aa\r
4767 defb 0cch ;21ab\r
4768 defw l2397h ;21ac\r
4769\r
4770 defb 0ffh ;21ae\r
4771 defb 0f6h ;21af\r
4772 defb 06ch ;21b0\r
4773 defw l2397h ;21b1\r
4774\r
4775 defb 0ffh ;21b3 cp a,nn\r
4776 defb 0feh ;21b4\r
4777 defb 013h ;21b5\r
4778 defw l2397h ;21b6\r
4779\r
4780 defb 0ffh ;21b8 djnz\r
4781 defb 010h ;21b9\r
4782 defb 02eh ;21ba\r
4783 defw l23b0h ;21bb\r
4784\r
4785 defb 0ffh ;21bd jr\r
4786 defb 018h ;21be\r
4787 defb 054h ;21bf\r
4788 defw l23b0h ;21c0\r
4789\r
4790 defb 0e7h ;21c2 jr,cc\r
4791 defb 020h ;21c3\r
4792 defb 054h ;21c4\r
4793 defw l23a1h ;21c5\r
4794\r
4795 defb 0ffh ;21c7\r
4796 defb 0d3h ;21c8 out (nn),a\r
4797 defb 076h ;21c9\r
4798 defw l23d5h ;21ca\r
4799\r
4800 defb 0ffh ;21cc in a,(nn)\r
4801 defb 0dbh ;21cd\r
4802 defb 03fh ;21ce\r
4803 defw l23c3h ;21cf\r
4804\r
4805 defb 000h ;21d1 EOT\r
4806\r
4807b_0x21D2_start: ; 3 byte opcodes\r
4808 defb 0c7h ;21d2\r
4809 defb 0c2h ;21d3\r
4810 defb 052h ;21d4\r
4811 defw l23e0h ;21d5\r
4812\r
4813 defb 0c7h ;21d7\r
4814 defb 0c4h ;21d8\r
4815 defb 00ch ;21d9\r
4816 defw l23e0h ;21da\r
4817\r
4818 defb 0cfh ;21dc\r
4819 defb 001h ;21dd\r
4820 defb 056h ;21de\r
4821 defw l23fch ;21df\r
4822\r
4823 defb 0ffh ;21e1\r
4824 defb 0c3h ;21e2\r
4825 defb 052h ;21e3\r
4826 defw l23e6h ;21e4\r
4827\r
4828 defb 0ffh ;21e6\r
4829 defb 0cdh ;21e7\r
4830 defb 00ch ;21e8\r
4831 defw l23e6h ;21e9\r
4832\r
4833 defb 0ffh ;21eb\r
4834 defb 022h ;21ec\r
4835 defb 056h ;21ed\r
4836 defw l2404h ;21ee\r
4837\r
4838 defb 0ffh ;21f0\r
4839 defb 02ah ;21f1\r
4840 defb 056h ;21f2\r
4841 defw l240dh ;21f3\r
4842\r
4843 defb 0ffh ;21f5\r
4844 defb 032h ;21f6\r
4845 defb 056h ;21f7\r
4846 defw l2416h ;21f8\r
4847\r
4848 defb 0ffh ;21fa\r
4849 defb 03ah ;21fb\r
4850 defb 056h ;21fc\r
4851 defw l2421h ;21fd\r
4852\r
4853 defb 000h ;21ff\r
4854\r
4855b_0x2200_start: ; prefix ED + 1 byte opcode\r
4856 defb 044h ;2200 neg\r
4857 defb 066h ;2201\r
4858 defb 045h ;2202 retn\r
4859 defb 092h ;2203\r
4860 defb 04dh ;2204 reti\r
4861 defb 08eh ;2205\r
4862 defb 067h ;2206 rrd\r
4863 defb 0b1h ;2207\r
4864 defb 06fh ;2208 rld\r
4865 defb 0a2h ;2209\r
4866 defb 0a0h ;220a ldi\r
4867 defb 05fh ;220b\r
4868 defb 0a1h ;220c\r
4869 defb 01ch ;220d\r
4870 defb 0a2h ;220e\r
4871 defb 04bh ;220f\r
4872 defb 0a3h ;2210\r
4873 defb 07dh ;2211\r
4874 defb 0a8h ;2212 ldd\r
4875 defb 058h ;2213\r
4876 defb 0a9h ;2214\r
4877 defb 015h ;2215\r
4878 defb 0aah ;2216\r
4879 defb 044h ;2217\r
4880 defb 0abh ;2218\r
4881 defb 079h ;2219\r
4882 defb 0b0h ;221a ldir\r
4883 defb 062h ;221b\r
4884 defb 0b1h ;221c\r
4885 defb 01fh ;221d\r
4886 defb 0b2h ;221e\r
4887 defb 04eh ;221f\r
4888 defb 0b3h ;2220\r
4889 defb 072h ;2221\r
4890 defb 0b8h ;2222 lddr\r
4891 defb 05bh ;2223\r
4892 defb 0b9h ;2224\r
4893 defb 018h ;2225\r
4894 defb 0bah ;2226\r
4895 defb 047h ;2227\r
4896 defb 0bbh ;2228\r
4897 defb 06eh ;2229\r
4898 defb 08bh ;222a otdm\r
4899 defb 0d5h ;222b\r
4900 defb 09bh ;222c otdmr\r
4901 defb 0d9h ;222d\r
4902 defb 083h ;222e otim\r
4903 defb 0deh ;222f\r
4904 defb 093h ;2230 otimr\r
4905 defb 0e2h ;2231\r
4906 defb 076h ;2232 slp\r
4907 defb 0ebh ;2233\r
4908 defb 0ffh ;2234 EOT\r
4909 \r
4910l2235h:\r
4911 defb 0e7h ;2235 in r,(c) ;r=bcde\r
4912 defb 040h ;2236\r
4913 defb 03fh ;2237\r
4914 defw l2455h ;2238\r
4915\r
4916 defb 0f7h ;223a in r,(c) ;r=hl\r
4917 defb 060h ;223b\r
4918 defb 03fh ;223c\r
4919 defw l2455h ;223d\r
4920\r
4921 defb 0ffh ;223f in r,(c) ;r=a\r
4922 defb 078h ;2240\r
4923 defb 03fh ;2241\r
4924 defw l2455h ;2242\r
4925\r
4926 defb 0e7h ;2244\r
4927 defb 041h ;2245\r
4928 defb 076h ;2246\r
4929 defw l2461h ;2247\r
4930\r
4931 defb 0f7h ;2249\r
4932 defb 061h ;224a\r
4933 defb 076h ;224b\r
4934 defw l2461h ;224c\r
4935\r
4936 defb 0ffh ;224e out (c),r ;r=a\r
4937 defb 079h ;224f\r
4938 defb 076h ;2250\r
4939 defw l2461h ;2251\r
4940\r
4941 defb 0cfh ;2253 sbc hl,rr\r
4942 defb 042h ;2254\r
4943 defb 0b7h ;2255\r
4944 defw l246dh ;2256\r
4945\r
4946 defb 0cfh ;2258 adc hl,rr\r
4947 defb 04ah ;2259\r
4948 defb 000h ;225a\r
4949 defw l246dh ;225b\r
4950\r
4951 defb 0ffh ;225d im 0\r
4952 defb 046h ;225e\r
4953 defb 03dh ;225f\r
4954 defw l2427h ;2260\r
4955\r
4956 defb 0ffh ;2262 im 1\r
4957 defb 056h ;2263\r
4958 defb 03dh ;2264\r
4959 defw l242bh ;2265\r
4960\r
4961 defb 0ffh ;2267 im 2\r
4962 defb 05eh ;2268\r
4963 defb 03dh ;2269\r
4964 defw l242fh ;226a\r
4965\r
4966 defb 0ffh ;226c ld i,a\r
4967 defb 047h ;226d\r
4968 defb 056h ;226e\r
4969 defw l2434h ;226f\r
4970\r
4971 defb 0ffh ;2271\r
4972 defb 057h ;2272\r
4973 defb 056h ;2273\r
4974 defw l2439h ;2274\r
4975\r
4976 defb 0ffh ;2276\r
4977 defb 04fh ;2277\r
4978 defb 056h ;2278\r
4979 defw l243eh ;2279\r
4980\r
4981 defb 0ffh ;227b\r
4982 defb 05fh ;227c\r
4983 defb 056h ;227d\r
4984 defw l2443h ;227e\r
4985\r
4986 defb 0cfh ;2280 mlt rr\r
4987 defb 04ch ;2281\r
4988 defb 0d2h ;2282\r
4989 defw l254bh ;2283\r
4990\r
4991 defb 0c7h ;2285 tst r\r
4992 defb 004h ;2286\r
4993 defb 0eeh ;2287\r
4994 defw l24dfh ;2288\r
4995\r
4996 defb 000h ;228a\r
4997\r
4998l228bh:\r
4999 defb 0e7h ;228b\r
5000 defb 000h ;228c\r
5001 defb 0cfh ;228d\r
5002\r
5003b_0x228E_start:\r
5004 defw l230ch ;228e\r
5005\r
5006b_0x2290_start:\r
5007 defb 0f7h ;2290\r
5008 defb 020h ;2291\r
5009 defb 0cfh ;2292\r
5010\r
5011b_0x2293_start:\r
5012 defw l230ch ;2293\r
5013\r
5014b_0x2295_start:\r
5015 defb 0ffh ;2295\r
5016 defb 038h ;2296\r
5017 defb 0cfh ;2297\r
5018\r
5019b_0x2298_start:\r
5020 defw l230ch ;2298\r
5021\r
5022b_0x229A_start:\r
5023 defb 0e7h ;229a\r
5024 defb 001h ;229b\r
5025 defb 0e7h ;229c\r
5026\r
5027b_0x229D_start:\r
5028 defw l2315h ;229d\r
5029\r
5030b_0x229F_start:\r
5031 defb 0f7h ;229f\r
5032 defb 021h ;22a0\r
5033 defb 0e7h ;22a1\r
5034\r
5035b_0x22A2_start:\r
5036 defw l2315h ;22a2\r
5037\r
5038b_0x22A4_start:\r
5039 defb 0ffh ;22a4\r
5040 defb 039h ;22a5\r
5041 defb 0e7h ;22a6\r
5042\r
5043b_0x22A7_start:\r
5044 defw l2315h ;22a7\r
5045\r
5046b_0x22A9_start:\r
5047 defb 0ffh ;22a9\r
5048 defb 064h ;22aa\r
5049 defb 0eeh ;22ab\r
5050\r
5051b_0x22AC_start:\r
5052 defw l2397h ;22ac\r
5053\r
5054b_0x22AE_start:\r
5055 defb 0ffh ;22ae\r
5056 defb 074h ;22af\r
5057 defb 0f1h ;22b0\r
5058\r
5059b_0x22B1_start:\r
5060 defw l2397h ;22b1\r
5061\r
5062b_0x22B3_start:\r
5063 defb 000h ;22b3\r
5064l22b4h:\r
5065 defb 0efh ;22b4\r
5066 defb 043h ;22b5\r
5067 defb 056h ;22b6\r
5068\r
5069b_0x22B7_start:\r
5070 defw l2476h ;22b7\r
5071\r
5072b_0x22B9_start:\r
5073 defb 0ffh ;22b9\r
5074 defb 073h ;22ba\r
5075 defb 056h ;22bb\r
5076\r
5077b_0x22BC_start:\r
5078 defw l2476h ;22bc\r
5079\r
5080b_0x22BE_start:\r
5081 defb 0efh ;22be\r
5082 defb 04bh ;22bf\r
5083 defb 056h ;22c0\r
5084\r
5085b_0x22C1_start:\r
5086 defw l247fh ;22c1\r
5087\r
5088b_0x22C3_start:\r
5089 defb 0ffh ;22c3\r
5090 defb 07bh ;22c4\r
5091 defb 056h ;22c5\r
5092\r
5093b_0x22C6_start:\r
5094 defw l247fh ;22c6\r
5095\r
5096b_0x22C8_start:\r
5097 defb 000h ;22c8\r
5098l22c9h:\r
5099 defb 0f8h ;22c9\r
5100 defb 000h ;22ca\r
5101 defb 09bh ;22cb\r
5102\r
5103b_0x22CC_start:\r
5104 defw l24aeh ;22cc\r
5105\r
5106b_0x22CE_start:\r
5107 defb 0f8h ;22ce\r
5108 defb 008h ;22cf\r
5109 defb 0aah ;22d0\r
5110\r
5111b_0x22D1_start:\r
5112 defw l24aeh ;22d1\r
5113\r
5114b_0x22D3_start:\r
5115 defb 0f8h ;22d3\r
5116 defb 010h ;22d4\r
5117 defb 096h ;22d5\r
5118\r
5119b_0x22D6_start:\r
5120 defw l24aeh ;22d6\r
5121\r
5122b_0x22D8_start:\r
5123 defb 0f8h ;22d8\r
5124 defb 018h ;22d9\r
5125 defb 0a5h ;22da\r
5126\r
5127b_0x22DB_start:\r
5128 defw l24aeh ;22db\r
5129\r
5130b_0x22DD_start:\r
5131 defb 0f8h ;22dd\r
5132 defb 020h ;22de\r
5133 defb 0c0h ;22df\r
5134\r
5135b_0x22E0_start:\r
5136 defw l24aeh ;22e0\r
5137\r
5138b_0x22E2_start:\r
5139 defb 0f8h ;22e2\r
5140 defb 028h ;22e3\r
5141 defb 0c3h ;22e4\r
5142\r
5143b_0x22E5_start:\r
5144 defw l24aeh ;22e5\r
5145\r
5146b_0x22E7_start:\r
5147 defb 0f8h ;22e7\r
5148 defb 038h ;22e8\r
5149 defb 0c6h ;22e9\r
5150\r
5151b_0x22EA_start:\r
5152 defw l24aeh ;22ea\r
5153\r
5154b_0x22EC_start:\r
5155 defb 0c0h ;22ec\r
5156 defb 040h ;22ed\r
5157 defb 009h ;22ee\r
5158\r
5159b_0x22EF_start:\r
5160 defw l2487h ;22ef\r
5161\r
5162b_0x22F1_start:\r
5163 defb 0c0h ;22f1\r
5164 defb 080h ;22f2\r
5165 defb 088h ;22f3\r
5166\r
5167b_0x22F4_start:\r
5168 defw l2487h ;22f4\r
5169\r
5170b_0x22F6_start:\r
5171 defb 0c0h ;22f6\r
5172 defb 0c0h ;22f7\r
5173 defb 0bdh ;22f8\r
5174\r
5175b_0x22F9_start:\r
5176 defw l2487h ;22f9\r
5177\r
5178b_0x22FB_start:\r
5179 defb 000h ;22fb\r
5180l22fch:\r
5181 call l24dfh ;22fc\r
5182 call sub_257ch ;22ff\r
5183 jp l24ebh ;2302\r
5184l2305h:\r
5185 call sub_2579h ;2305\r
5186 jp l24ebh ;2308\r
5187l230bh:\r
5188 ret ;230b\r
5189l230ch:\r
5190 call l24dfh ;230c\r
5191 call sub_257ch ;230f\r
5192 jp l23c6h ;2312\r
5193l2315h:\r
5194 call l23c6h ;2315\r
5195 call sub_257ch ;2318\r
5196 jp l24dfh ;231b\r
5197l231eh:\r
5198 comst ;231e\r
5199 ld a,(iy+000h) ;2322\r
5200 comend\r
5201 and 038h ;2325\r
5202 jp out.hex ;2327\r
5203l232ah:\r
5204 ld hl,b_0x2333_start ;232a\r
5205 call PSTR ;232d\r
5206 jp l253eh ;2330\r
5207\r
5208b_0x2333_start:\r
5209 DC '(SP),'\r
5210\r
5211l2338h:\r
5212 ld a,'(' ;2338\r
5213 call OUTCHAR ;233a\r
5214 call l253eh ;233d\r
5215 ld a,')' ;2340\r
5216 jp OUTCHAR ;2342\r
5217l2345h:\r
5218 ld hl,l1d86h ;2345\r
5219 jp PSTR ;2348\r
5220l234bh:\r
5221 ld hl,b_0x2354_start ;234b\r
5222 call PSTR ;234e\r
5223 jp l253eh ;2351\r
5224\r
5225b_0x2354_start:\r
5226 DC 'SP,'\r
5227\r
5228l2357h:\r
5229 ld hl,b_0x1D80_start ;2357\r
5230 jp PSTR ;235a\r
5231l235dh:\r
5232 call l253eh ;235d\r
5233 call sub_257ch ;2360\r
5234 jp l254bh ;2363\r
5235l2366h:\r
5236 call sub_2372h ;2366\r
5237 call sub_257ch ;2369\r
5238 jp l23dbh ;236c\r
5239l236fh:\r
5240 call sub_2579h ;236f\r
5241sub_2372h:\r
5242 ld a,'(' ;2372\r
5243 call OUTCHAR ;2374\r
5244 call l254bh ;2377\r
5245 ld a,')' ;237a\r
5246 jp OUTCHAR ;237c\r
5247l237fh:\r
5248 call sub_2579h ;237f\r
5249 jr l2397h ;2382\r
5250l2384h:\r
5251 call l24dfh ;2384\r
5252 call sub_257ch ;2387\r
5253 ld a,(is.pfx.IXY) ;238a\r
5254 and a ;238d\r
5255 comst ;238e\r
5256 ld a,(iy+002h) ;2392\r
5257 comend\r
5258 jr nz,l239eh ;2395\r
5259l2397h:\r
5260 comst ;2397\r
5261 ld a,(iy+001h) ;239b\r
5262 comend\r
5263l239eh:\r
5264 jp out.hex ;239e\r
5265l23a1h:\r
5266 comst ;23a1\r
5267 ld a,(iy+000h) ;23a5\r
5268 comend\r
5269 and 018h ;23a8\r
5270 call sub_2568h ;23aa\r
5271 call sub_257ch ;23ad\r
5272l23b0h:\r
5273 comst ;23b0\r
5274 ld c,(iy+001h) ;23b4\r
5275 comend\r
5276 ld a,c ;23b7\r
5277 rla ;23b8\r
5278 sbc a,a ;23b9\r
5279 ld b,a ;23ba\r
5280 push iy ;23bb\r
5281 pop hl ;23bd\r
5282 add hl,bc ;23be\r
5283 inc hl ;23bf\r
5284 inc hl ;23c0\r
5285 jr l23f0h ;23c1\r
5286l23c3h:\r
5287 call sub_2579h ;23c3\r
5288l23c6h:\r
5289 ld a,028h ;23c6\r
5290 call OUTCHAR ;23c8\r
5291 comst ;23cb\r
5292 ld a,(iy+001h) ;23cf\r
5293 comend\r
5294 jp l252bh ;23d2\r
5295l23d5h:\r
5296 call l23c6h ;23d5\r
5297 call sub_257ch ;23d8\r
5298l23dbh:\r
5299 ld a,041h ;23db\r
5300 jp OUTCHAR ;23dd\r
5301l23e0h:\r
5302 call l2561h ;23e0\r
5303 call sub_257ch ;23e3\r
5304l23e6h:\r
5305 comst ;23e6\r
5306 ld l,(iy+001h) ;23ea\r
5307 ld h,(iy+002h) ;23ed\r
5308 comend\r
5309l23f0h:\r
5310 ld a,002h ;23f0\r
5311sub_23f2h:\r
5312 ld (XBE03),a ;23f2\r
5313 ld (XBE01),hl ;23f5\r
5314 call out.hl ;23f8\r
5315 ret ;23fb\r
5316l23fch:\r
5317 call l254bh ;23fc\r
5318 call sub_257ch ;23ff\r
5319 jr l23e6h ;2402\r
5320l2404h:\r
5321 call sub_24c6h ;2404\r
5322 call sub_257ch ;2407\r
5323 jp l253eh ;240a\r
5324l240dh:\r
5325 call l253eh ;240d\r
5326 call sub_257ch ;2410\r
5327 jp sub_24c6h ;2413\r
5328l2416h:\r
5329 call sub_24c6h ;2416\r
5330 call sub_257ch ;2419\r
5331 ld a,041h ;241c\r
5332 jp OUTCHAR ;241e\r
5333l2421h:\r
5334 call sub_2579h ;2421\r
5335 jp sub_24c6h ;2424\r
5336l2427h:\r
5337 ld a,030h ;2427\r
5338 jr l2431h ;2429\r
5339l242bh:\r
5340 ld a,031h ;242b\r
5341 jr l2431h ;242d\r
5342l242fh:\r
5343 ld a,032h ;242f\r
5344l2431h:\r
5345 jp OUTCHAR ;2431\r
5346l2434h:\r
5347 ld hl,b_0x2449_start ;2434\r
5348 jr l2446h ;2437\r
5349l2439h:\r
5350 ld hl,l244ch ;2439\r
5351 jr l2446h ;243c\r
5352l243eh:\r
5353 ld hl,l244fh ;243e\r
5354 jr l2446h ;2441\r
5355l2443h:\r
5356 ld hl,l2452h ;2443\r
5357l2446h:\r
5358 jp PSTR ;2446\r
5359\r
5360b_0x2449_start:\r
5361 DC 'I,A'\r
5362l244ch:\r
5363 DC 'A,I'\r
5364l244fh:\r
5365 DC 'R,A'\r
5366l2452h:\r
5367 DC 'A,R'\r
5368\r
5369l2455h:\r
5370 call l24dfh ;2455\r
5371 call sub_257ch ;2458\r
5372 ld hl,t__C_ ;245b\r
5373 jp PSTR ;245e\r
5374l2461h:\r
5375 ld hl,t__C_ ;2461\r
5376 call PSTR ;2464\r
5377 call sub_257ch ;2467\r
5378 jp l24dfh ;246a\r
5379l246dh:\r
5380 call l253eh ;246d\r
5381 call sub_257ch ;2470\r
5382 jp l254bh ;2473\r
5383l2476h:\r
5384 call sub_24c6h ;2476\r
5385 call sub_257ch ;2479\r
5386 jp l254bh ;247c\r
5387l247fh:\r
5388 call l254bh ;247f\r
5389 call sub_257ch ;2482\r
5390 jr sub_24c6h ;2485\r
5391l2487h:\r
5392 ld a,(is.pfx.IXY) ;2487\r
5393 and a ;248a\r
5394 jr nz,l2496h ;248b\r
5395 comst ;248d\r
5396 ld a,(iy+001h) ;2491\r
5397 comend\r
5398 jr l249dh ;2494\r
5399l2496h:\r
5400 comst ;2496\r
5401 ld a,(iy+002h) ;249a\r
5402 comend\r
5403l249dh:\r
5404 push af ;249d\r
5405 rra ;249e\r
5406 rra ;249f\r
5407 rra ;24a0\r
5408 and 007h ;24a1\r
5409 add a,'0' ;24a3\r
5410 call OUTCHAR ;24a5\r
5411 call sub_257ch ;24a8\r
5412 pop af ;24ab\r
5413 jr l24f2h ;24ac\r
5414l24aeh:\r
5415 ld a,(is.pfx.IXY) ;24ae\r
5416 and a ;24b1\r
5417 jr nz,l24bdh ;24b2\r
5418 comst ;24b4\r
5419 ld a,(iy+001h) ;24b8\r
5420 comend\r
5421 jr l24c4h ;24bb\r
5422l24bdh:\r
5423 comst ;24bd\r
5424 ld a,(iy+002h) ;24c1\r
5425 comend\r
5426l24c4h:\r
5427 jr l24f2h ;24c4\r
5428sub_24c6h:\r
5429 ld a,'(' ;24c6\r
5430 call OUTCHAR ;24c8\r
5431 comst ;24cb\r
5432 ld l,(iy+001h) ;24cf\r
5433 ld h,(iy+002h) ;24d2\r
5434 comend\r
5435 ld a,001h ;24d5\r
5436 call sub_23f2h ;24d7\r
5437 ld a,')' ;24da\r
5438 jp OUTCHAR ;24dc\r
5439l24dfh:\r
5440 comst ;24df\r
5441 ld a,(iy+000h) ;24e3\r
5442 comend\r
5443 rra ;24e6\r
5444 rra ;24e7\r
5445 rra ;24e8\r
5446 jr l24f2h ;24e9\r
5447l24ebh:\r
5448 comst ;24eb\r
5449 ld a,(iy+000h) ;24ef\r
5450 comend\r
5451l24f2h:\r
5452 and 007h ;24f2\r
5453 cp 006h ;24f4\r
5454 jr nz,l2533h ;24f6\r
5455 ld a,(is.pfx.IXY) ;24f8\r
5456 and a ;24fb\r
5457 ld a,006h ;24fc\r
5458 jr z,l2533h ;24fe\r
5459 ld hl,b_0x2538_start ;2500\r
5460 ld a,(is.pfx.IXY) ;2503\r
5461 dec a ;2506\r
5462 jr z,l250ch ;2507\r
5463 ld hl,b_0x253B_start ;2509\r
5464l250ch:\r
5465 call PSTR ;250c\r
5466 comst ;250f\r
5467 ld a,(iy+001h) ;2513\r
5468 comend\r
5469 and a ;2516\r
5470 push af ;2517\r
5471 jp m,l2523h ;2518\r
5472 ld a,'+' ;251b\r
5473 call OUTCHAR ;251d\r
5474 pop af ;2520\r
5475 jr l252bh ;2521\r
5476l2523h:\r
5477 ld a,'-' ;2523\r
5478 call OUTCHAR ;2525\r
5479 pop af ;2528\r
5480 neg ;2529\r
5481l252bh:\r
5482 call out.hex ;252b\r
5483 ld a,')' ;252e\r
5484 jp OUTCHAR ;2530\r
5485l2533h:\r
5486 ld hl,t_BCDEHL_HL_A ;2533\r
5487 jr l2572h ;2536\r
5488\r
5489b_0x2538_start:\r
5490 DC '(IX'\r
5491b_0x253B_start:\r
5492 DC '(IY'\r
5493\r
5494l253eh:\r
5495 ld a,(is.pfx.IXY) ;253e\r
5496 ld hl,t_HL.IX.IY ;2541\r
5497 jr l2572h ;2544\r
5498l2546h:\r
5499 ld hl,t_BC.DE.HL.AF ;2546\r
5500 jr l254eh ;2549\r
5501l254bh:\r
5502 ld hl,t_BC.DE.HL.SP ;254b\r
5503l254eh:\r
5504 comst ;254e\r
5505 ld a,(iy+000h) ;2552\r
5506 comend\r
5507 rra ;2555\r
5508 rra ;2556\r
5509 rra ;2557\r
5510 rra ;2558\r
5511 and 003h ;2559\r
5512 cp 002h ;255b\r
5513 jr z,l253eh ;255d\r
5514 jr l2572h ;255f\r
5515l2561h:\r
5516 comst ;2561\r
5517 ld a,(iy+000h) ;2565\r
5518 comend\r
5519sub_2568h:\r
5520 rra ;2568\r
5521 rra ;2569\r
5522 rra ;256a\r
5523 and 007h ;256b\r
5524 ld hl,t_tstfl_ZCPS ;256d\r
5525 jr l2572h ;2570\r
5526l2572h:\r
5527 ld b,a ;2572\r
5528 call sub_0a48h ;2573\r
5529 jp PSTR ;2576\r
5530sub_2579h:\r
5531 call l23dbh ;2579\r
5532sub_257ch:\r
5533 ld a,',' ;257c\r
5534 jp OUTCHAR ;257e\r
5535sub_2581h:\r
5536 call PSTR ;2581\r
5537l2584h:\r
5538 call OUTBL ;2584\r
5539 inc c ;2587\r
5540 ld a,c ;2588\r
5541 cp 006h ;2589\r
5542 jr nz,l2584h ;258b\r
5543 ret ;258d\r
5544\r
5545t_MNEMONICS:\r
5546 DC 'ADC'\r
5547 DC 'ADD'\r
5548 DC 'AND'\r
5549 DC 'BIT'\r
5550 DC 'CALL'\r
5551 DC 'CCF'\r
5552 DC 'CP'\r
5553 DC 'CPD'\r
5554 DC 'CPDR'\r
5555 DC 'CPI'\r
5556 DC 'CPIR'\r
5557 DC 'CPL'\r
5558 DC 'DAA'\r
5559 DC 'DEC'\r
5560 DC 'DI'\r
5561 DC 'DJNZ'\r
5562 DC 'EI'\r
5563 DC 'EX'\r
5564 DC 'EXX'\r
5565 DC 'HALT'\r
5566 DC 'IM'\r
5567 DC 'IN'\r
5568 DC 'INC'\r
5569 DC 'IND'\r
5570 DC 'INDR'\r
5571 DC 'INI'\r
5572 DC 'INIR'\r
5573 DC 'JP'\r
5574 DC 'JR'\r
5575 DC 'LD'\r
5576 DC 'LDD'\r
5577 DC 'LDDR'\r
5578 DC 'LDI'\r
5579 DC 'LDIR'\r
5580 DC 'NEG'\r
5581 DC 'NOP'\r
5582 DC 'OR'\r
5583 DC 'OTDR'\r
5584 DC 'OTIR'\r
5585 DC 'OUT'\r
5586 DC 'OUTD'\r
5587 DC 'OUTI'\r
5588 DC 'POP'\r
5589 DC 'PUSH'\r
5590 DC 'RES'\r
5591 DC 'RET'\r
5592 DC 'RETI'\r
5593 DC 'RETN'\r
5594 DC 'RL'\r
5595 DC 'RLA'\r
5596 DC 'RLC'\r
5597 DC 'RLCA'\r
5598 DC 'RLD'\r
5599 DC 'RR'\r
5600 DC 'RRA'\r
5601 DC 'RRC'\r
5602 DC 'RRCA'\r
5603 DC 'RRD'\r
5604 DC 'RST'\r
5605 DC 'SBC'\r
5606 DC 'SCF'\r
5607 DC 'SET'\r
5608 DC 'SLA'\r
5609 DC 'SRA'\r
5610 DC 'SRL'\r
5611 DC 'SUB'\r
5612 DC 'XOR'\r
5613 DC 'IN0'\r
5614 DC 'MLT'\r
5615 DC 'OTDM'\r
5616 DC 'OTDMR'\r
5617 DC 'OTIM'\r
5618 DC 'OTIMR'\r
5619 DC 'OUT0'\r
5620 DC 'SLP'\r
5621 DC 'TST'\r
5622 DC 'TSTIO'\r
5623 DB 0\r
5624 \r
5625t_BCDEHL_HL_A:\r
5626 DC 'B'\r
5627 DC 'C'\r
5628 DC 'D'\r
5629 DC 'E'\r
5630 DC 'H'\r
5631 DC 'L'\r
5632 DC '(HL)'\r
5633 DC 'A'\r
5634 DB 0\r
5635t_BC.DE.HL.SP:\r
5636 DC 'BC'\r
5637 DC 'DE'\r
5638 DC 'HL'\r
5639 DC 'SP'\r
5640 DB 0\r
5641t_BC.DE.HL.AF:\r
5642 DC 'BC'\r
5643 DC 'DE'\r
5644t_HL.AF:\r
5645 DC 'HL'\r
5646 DC 'AF'\r
5647 DB 0\r
5648t_BC.DE.IY.SP:\r
5649 DC 'BC'\r
5650 DC 'DE'\r
5651 DC 'IY'\r
5652 DC 'SP'\r
5653 DB 0\r
5654t_BC.DE.IX.SP:\r
5655 DC 'BC'\r
5656 DC 'DE'\r
5657 DC 'IX'\r
5658 DC 'SP'\r
5659 DB 0\r
5660t_HL.IX.IY:\r
5661 DC 'HL'\r
5662t_IX.IY:\r
5663 DC 'IX'\r
5664 DC 'IY'\r
5665 DB 0\r
5666t_tstfl_ZC:\r
5667 DC 'NZ'\r
5668 DC 'Z'\r
5669 DC 'NC'\r
5670 DC 'C'\r
5671 DC 'NE'\r
5672 DC 'EQ'\r
5673 DC 'GE'\r
5674 DC 'LT'\r
5675 DB 0\r
5676t_tstfl_ZCPS:\r
5677 DC 'NZ'\r
5678 DC 'Z'\r
5679 DC 'NC'\r
5680 DC 'C'\r
5681 DC 'PO'\r
5682 DC 'PE'\r
5683 DC 'P'\r
5684 DC 'M'\r
5685 DC 'NE'\r
5686 DC 'EQ'\r
5687 DC 'GE'\r
5688 DC 'LT'\r
5689 DC 'NV'\r
5690 DC 'V'\r
5691 DB 0\r
5692t__C_:\r
5693 DC '(C)'\r
5694 DB 0\r
5695\r
5696sub_26e7h:\r
5697 ld hl,(REG.PC) ;26e7\r
5698 ld a,h ;26ea\r
5699 or l ;26eb\r
5700 jr z,l2715h ;26ec\r
5701 ld iy,(REG.PC) ;26ee\r
5702 call sub_1f9eh ;26f2\r
5703 jp nc,ERROR ;26f5\r
5704 ld c,b ;26f8\r
5705 ld b,000h ;26f9\r
5706 ld hl,(REG.PC) ;26fb\r
5707 add hl,bc ;26fe\r
5708 call sub_1117h ;26ff\r
5709 ld iy,(REG.PC) ;2702\r
5710 ld hl,b_0x2717_start ;2706\r
5711 call lookup_opc ;2709\r
5712 ccf ;270c\r
5713 ret c ;270d\r
5714 ex de,hl ;270e\r
5715 call CALL.HL ;270f\r
5716 call c,sub_1117h ;2712\r
5717l2715h:\r
5718 scf ;2715\r
5719 ret ;2716\r
5720\r
5721b_0x2717_start:\r
5722 db 0ffh ;2717\r
5723 db 0ddh ;2718\r
5724 db 000h ;2719\r
5725 dw x278d\r
5726\r
5727 db 0ffh ;271c\r
5728 db 0fdh ;271d\r
5729 db 000h ;271e\r
5730 dw x2792\r
5731\r
5732 db 0ffh ;2721\r
5733 db 0edh ;2722\r
5734 db 000h ;2723\r
5735 dw x27a2\r
5736\r
5737l2726h:\r
5738 db 0ffh ;2726\r
5739 db 0cdh ;2727\r
5740 db 000h ;2728\r
5741 dw x275e\r
5742\r
5743 db 0ffh ;272b\r
5744 db 0c3h ;272c\r
5745 db 000h ;272d\r
5746 dw x2769\r
5747\r
5748 db 0ffh ;2730\r
5749 db 0e9h ;2731\r
5750 db 000h ;2732\r
5751 dw x2788\r
5752\r
5753 db 0ffh ;2735\r
5754 db 0c9h ;2736\r
5755 db 000h ;2737\r
5756 dw x27c9\r
5757\r
5758 db 0ffh ;273a\r
5759 db 0cfh ;273b\r
5760 db 000h ;273c\r
5761 dw x280e\r
5762\r
5763 db 0c7h ;273f\r
5764 db 0c7h ;2740\r
5765 db 000h ;2741\r
5766 dw x27ea\r
5767\r
5768 db 0c7h ;2744\r
5769 db 0c4h ;2745\r
5770 db 000h ;2746\r
5771 dw x275e\r
5772\r
5773 db 0f7h ;2749\r
5774 db 010h ;274a\r
5775 db 000h ;274b\r
5776 dw x2775\r
5777\r
5778 db 0e7h ;274e\r
5779 db 020h ;274f\r
5780 db 000h ;2750\r
5781 dw x2775\r
5782\r
5783 db 0c7h ;2753\r
5784 db 0c2h ;2754\r
5785 db 000h ;2755\r
5786 dw x2769\r
5787\r
5788 db 0c7h ;2758\r
5789 db 0c0h ;2759\r
5790 db 000h ;275a\r
5791 dw x27b3\r
5792\r
5793 db 000h ;275d\r
5794\r
5795x275e:\r
5796 ld a,(XBFE8) ;275e\r
5797 and a ;2761\r
5798 jr nz,x2769 ;2762\r
5799 ld a,(TCFLG) ;2764\r
5800 and a ;2767\r
5801 ret nz ;2768\r
5802\r
5803x2769:\r
5804 comst ;2769\r
5805 ld l,(iy+001h) ;276d\r
5806 ld h,(iy+002h) ;2770\r
5807 comend\r
5808 scf ;2773\r
5809 ret ;2774\r
5810\r
5811x2775:\r
5812 comst ;2775\r
5813 ld c,(iy+001h) ;2779\r
5814 comend\r
5815 ld a,c ;277c\r
5816 rla ;277d\r
5817 sbc a,a ;277e\r
5818 ld b,a ;277f\r
5819 ld hl,(REG.PC) ;2780\r
5820 add hl,bc ;2783\r
5821 inc hl ;2784\r
5822 inc hl ;2785\r
5823 scf ;2786\r
5824 ret ;2787\r
5825\r
5826x2788:\r
5827 ld hl,(REG.L) ;2788\r
5828 scf ;278b\r
5829 ret ;278c\r
5830\r
5831x278d:\r
5832 ld hl,(reg.ix) ;278d\r
5833 jr l2795h ;2790\r
5834\r
5835x2792:\r
5836 ld hl,(reg.iy) ;2792\r
5837l2795h:\r
5838 comst ;2795\r
5839 ld a,(iy+001h) ;2799\r
5840 comend\r
5841 cp 0e9h ;279c\r
5842 scf ;279e\r
5843 ret z ;279f\r
5844 and a ;27a0\r
5845 ret ;27a1\r
5846\r
5847x27a2:\r
5848 comst ;27a2\r
5849 ld a,(iy+001h) ;27a6\r
5850 comend\r
5851 cp 04dh ;27a9\r
5852 jr z,x27c9 ;27ab\r
5853 cp 045h ;27ad\r
5854 jr z,x27c9 ;27af\r
5855 and a ;27b1\r
5856 ret ;27b2\r
5857\r
5858x27b3:\r
5859 comst ;27b3\r
5860 ld a,(iy+000h) ;27b7\r
5861 comend\r
5862 ld (XBEDD),a ;27ba\r
5863 ld hl,(REG.F) ;27bd\r
5864 push hl ;27c0\r
5865 pop af ;27c1\r
5866 call XBEDD ;27c2\r
5867 scf ;27c5\r
5868 jr c,x27c9 ;27c6\r
5869 ret ;27c8\r
5870\r
5871x27c9:\r
5872 ld a,(XBFE8) ;27c9\r
5873 and a ;27cc\r
5874 jr nz,l27dah ;27cd\r
5875 ld a,(TCFLG) ;27cf\r
5876 and a ;27d2\r
5877 jr z,l27dah ;27d3\r
5878 call l27dah ;27d5\r
5879 pop hl ;27d8\r
5880 ret ;27d9\r
5881l27dah:\r
5882 ld hl,(REG.SP) ;27da\r
5883 comst ;27dd\r
5884 ld e,(hl) ;27e1\r
5885 inc hl ;27e2\r
5886 ld d,(hl) ;27e3\r
5887 comend\r
5888 ex de,hl ;27e4\r
5889 call sub_1117h ;27e5\r
5890 and a ;27e8\r
5891 ret ;27e9\r
5892\r
5893x27ea:\r
5894 ld a,(ddtrst) ;27ea\r
5895 comst ;27ed\r
5896 cp (iy+000h) ;27f1\r
5897 comend\r
5898 ret z ;27f4\r
5899 comst ;27f5\r
5900 ld a,(iy+000h) ;27f9\r
5901 comend\r
5902 and 038h ;27fc\r
5903 ld l,a ;27fe\r
5904 ld h,000h ;27ff\r
5905 ld a,(XBFE8) ;2801\r
5906 and a ;2804\r
5907 jr nz,l280ch ;2805\r
5908 ld a,(TCFLG) ;2807\r
5909 and a ;280a\r
5910 ret nz ;280b\r
5911l280ch:\r
5912 scf ;280c\r
5913 ret ;280d\r
5914\r
5915x280e:\r
5916 and a ;280e\r
5917 ret ;280f\r
5918\r
5919CMD.C:\r
5920 ld hl,CMD.C ;2810\r
5921 ld a,001h ;2813\r
5922 jr l281bh ;2815\r
5923\r
5924CMD.T:\r
5925 xor a ;2817\r
5926 ld hl,CMD.T ;2818\r
5927l281bh:\r
5928 ld (CMD_RPT),hl ;281b\r
5929 ld (TCFLG),a ;281e\r
5930 ld a,(de) ;2821\r
5931 sub 'N' ;2822\r
5932 jr nz,l2827h ;2824\r
5933 inc de ;2826\r
5934l2827h:\r
5935 ld (TCNFLG),a ;2827\r
5936 ld a,(de) ;282a\r
5937 sub 'J' ;282b\r
5938 jr nz,l2830h ;282d\r
5939 inc de ;282f\r
5940l2830h:\r
5941 ld (TRJFLG),a ;2830\r
5942 call sub_289fh ;2833\r
5943 jr z,l283eh ;2836\r
5944 ld hl,1 ;2838\r
5945 call get_lastarg_def ;283b\r
5946l283eh:\r
5947 ld (TCCSTR),hl ;283e\r
5948 sub a ;2841\r
5949 ld (XA747),a ;2842\r
5950l2845h:\r
5951 call sub_26e7h ;2845\r
5952 jr l289ch ;2848\r
5953l284ah:\r
5954 call sub_0e68h ;284a\r
5955 ld a,(TRJFLG) ;284d\r
5956 and a ;2850\r
5957 jr nz,l2864h ;2851\r
5958 ld iy,(REG.PC) ;2853\r
5959 call sub_28c1h ;2857\r
5960 jr z,l2864h ;285a\r
5961 ld hl,l2726h ;285c\r
5962 call lookup_opc ;285f\r
5963 jr nc,l2845h ;2862\r
5964l2864h:\r
5965 ld a,(XBFEA) ;2864\r
5966 and a ;2867\r
5967 jr z,l2881h ;2868\r
5968 ld de,(TCCSTR) ;286a\r
5969 call EXPR ;286e\r
5970 ld a,h ;2871\r
5971 or l ;2872\r
5972 add a,0ffh ;2873\r
5973 sbc a,a ;2875\r
5974 ld hl,XBFEA ;2876\r
5975 xor (hl) ;2879\r
5976 bit 1,a ;287a\r
5977 jr z,l288ch ;287c\r
5978l287eh:\r
5979 jp l102eh ;287e\r
5980l2881h:\r
5981 ld hl,(TCCSTR) ;2881\r
5982 dec hl ;2884\r
5983 ld (TCCSTR),hl ;2885\r
5984 ld a,h ;2888\r
5985 or l ;2889\r
5986 jr z,l287eh ;288a\r
5987l288ch:\r
5988 call sub_26e7h ;288c\r
5989 jr nc,l287eh ;288f\r
5990 ld a,(TCNFLG) ;2891\r
5991 ld b,a ;2894\r
5992 ld a,(XA747) ;2895\r
5993 or b ;2898\r
5994 ld (XA747),a ;2899\r
5995l289ch:\r
5996 jp l1183h ;289c\r
5997\r
5998sub_289fh:\r
5999 call SKIPBL ;289f\r
6000 xor a ;28a2\r
6001 ld (XBFEA),a ;28a3\r
6002 ld a,(de) ;28a6\r
6003 cp 'U' ;28a7\r
6004 jr z,l28aeh ;28a9\r
6005 cp 'W' ;28ab\r
6006 ret nz ;28ad\r
6007\r
6008l28aeh:\r
6009 inc de ;28ae\r
6010 push af ;28af\r
6011 push de ;28b0\r
6012 call EXPR ;28b1\r
6013 jp c,ERROR ;28b4\r
6014 call assert_eol ;28b7\r
6015 pop hl ;28ba\r
6016 pop af ;28bb\r
6017 ld (XBFEA),a ;28bc\r
6018 sub a ;28bf\r
6019 ret ;28c0\r
6020\r
6021sub_28c1h:\r
6022 comst \r
6023 ld a,(iy+000h) \r
6024 ld b,(iy+0001)\r
6025 comend\r
6026 cp 0edh \r
6027 jr z,l28dbh \r
6028 and 0dfh \r
6029 cp 0ddh \r
6030 ret nz \r
6031 ld a,b\r
6032 cp 0e9h \r
6033 ret \r
6034l28dbh:\r
6035 ld a,b\r
6036 and 0f7h \r
6037 cp 045h \r
6038 ret \r
6039\r
6040?excom:\r
6041 ex (sp),hl ;28e7\r
6042 push af ;28e8\r
6043 push bc ;28e9\r
6044 push de ;28ea\r
6045 ld c,(hl) ;28eb\r
6046 ld b,000h ;28ec\r
6047 inc hl ;28ee\r
6048 ld a,?lcmax\r
6049 sub c\r
6050 ld de,?exeit ;28ef\r
6051 ldir\r
6052 ex de,hl\r
6053 ld (hl),018h\r
6054 inc hl\r
6055 ld (hl),a\r
6056 ex de,hl\r
6057 pop de ;28f7\r
6058 pop bc ;28f8\r
6059 pop af ;28f9\r
6060 ex (sp),hl ;28fa\r
6061?exclst:\r
6062 push hl ;28fb\r
6063 ld hl,(ubbr) ;2900\r
6064\r
6065 if ROMSYS\r
6066 push af ;28fc\r
6067 ld a,(uromen) ;28fd\r
6068 endif\r
6069 jp ?comcod ;2903\r
6070 \r
6071;------------------------------------------\r
6072; ddtram\r
6073;------------------------------------------\r
6074\r
6075vartab:\r
6076 dseg\r
6077ddtram: \r
6078;todo:\r
4caee1ec 6079; The following 2 params are changeable by user.\r
a16ba2b0
L
6080; Should these moved to top ram?\r
6081;\r
6082ddtrst: inidat ;\r
6083 rst DRSTNUM ;rst used by ddtz\r
6084 inidate ;\r
6085ddtei: inidat ;\r
6086 ei ;ints enabled/disabled while ddtz is running\r
6087 ret ;\r
6088 inidate ;\r
6089offs.pc:\r
6090 inidat \r
6091 dw TPA \r
6092 inidate\r
6093offs.@:\r
6094 inidat\r
6095 dw 0 \r
6096 inidate\r
6097CMD_ERR:\r
6098 inidat\r
6099 dw 0 \r
6100 inidate\r
6101CMD_RPT:\r
6102 inidat\r
6103 dw DDTZML \r
6104 inidate\r
6105ci.buf:\r
6106 inidat\r
6107 db 80 \r
6108 rept 83\r
6109 db 0\r
6110 endm\r
6111 inidate\r
6112CON.COL:\r
6113 inidat\r
6114 db 0 \r
6115 inidate\r
6116XA747:\r
6117 inidat\r
6118 db 0 \r
6119 inidate\r
6120bp_tab:\r
6121 inidat\r
6122 rept BP_CNT \r
6123 db 0,0\r
6124 dw 0,0,0\r
6125 endm\r
6126BP_SIZE equ 8\r
6127 inidate\r
6128sexp1:\r
6129 inidat\r
6130 dw sexpbuf \r
6131 inidate\r
6132sexp2:\r
6133 inidat\r
6134 dw sexpbuf \r
6135 inidate\r
6136sexpbuf:\r
6137 inidat\r
6138 rept 128 \r
6139 db 0\r
6140 endm\r
6141 inidate\r
6142sexpbufe:\r
6143\r
6144msg.Y:\r
6145 inidat\r
6146 dc 'Y0' \r
6147 inidate\r
6148reg.Y:\r
6149 inidat\r
6150 rept 10 \r
6151 dw 0\r
6152 endm\r
6153 inidate\r
6154lst.S:\r
6155 inidat\r
6156 dw 0 \r
6157 inidate\r
6158lst.IP:\r
6159 inidat\r
6160 dw 0 \r
6161 inidate\r
6162lst.OP:\r
6163 inidat\r
6164 dw 0 \r
6165 inidate\r
6166lst.OD:\r
6167 inidat\r
6168 db 0\r
6169 inidate\r
6170lst.Qj:\r
6171 inidat\r
6172 db 0\r
6173 inidate\r
6174lst.D:\r
6175 inidat\r
6176 dw 0 \r
6177 inidate\r
6178HILOD:\r
6179 inidat\r
6180 dw 0 \r
6181 inidate\r
6182MAXLOD:\r
6183 inidat\r
6184 dw 0 \r
6185 inidate\r
6186XB068:\r
6187 inidat\r
6188 dw 0 \r
6189 inidate\r
6190lst.A:\r
6191 inidat\r
6192 dw 0 \r
6193 inidate\r
6194XB06C:\r
6195 inidat\r
6196 dw 0 \r
6197 inidate\r
6198pfx.IXY:\r
6199 inidat\r
6200 db 000h \r
6201 inidate\r
6202is.pfx.IXY:\r
6203 inidat\r
6204 db 000h \r
6205 inidate\r
6206lst.L:\r
6207 inidat\r
6208 dw 0 \r
6209 inidate\r
6210XBE01:\r
6211 inidat\r
6212 dw 0 \r
6213 inidate\r
6214XBE03:\r
6215 inidat\r
6216 db 000h \r
6217 inidate\r
6218XBEDD:\r
6219 inidat\r
6220 ret ;ret cc\r
6221 and a \r
6222 pop hl \r
6223 inc hl \r
6224 jp (hl) \r
6225 inidate\r
6226XBFE8:\r
6227 inidat\r
6228 db 0 \r
6229 inidate\r
6230TCFLG:\r
6231 inidat\r
6232 db 0 \r
6233 inidate\r
6234XBFEA:\r
6235 inidat\r
6236 db 0 \r
6237 inidate\r
6238TCCSTR:\r
6239 inidat\r
6240 dw 0 \r
6241 inidate\r
6242TCNFLG:\r
6243 inidat\r
6244 db 0 \r
6245 inidate\r
6246TRJFLG:\r
6247 inidat\r
6248 db 0 \r
6249 inidate\r
6250wstrtflg:\r
6251 inidat\r
6252 db 1\r
6253 inidate\r
6254\r
6255 cseg\r
6256vartabe:\r
6257\r
6258;------------------------------------------\r
6259\r
6260 .phase sysram_start+stacksize\r
6261$stack:\r
6262$stcka equ $ - stacksize\r
6263\r
6264curphse defl $\r
6265 .dephase\r
6266sysramc:\r
6267 .phase curphse\r
6268topcodbeg:\r
6269\r
6270reg.l2: db 0 ; 0fe50h\r
6271reg.h2: db 0 ; 0fe51h\r
6272reg.e2: db 0 ; 0fe52h\r
6273reg.d2: db 0 ; 0fe53h\r
6274reg.c2: db 0 ; 0fe54h\r
6275reg.b2: db 0 ; 0fe55h\r
6276reg.f2: db 0 ; 0fe56h\r
6277reg.a2: db 0 ; 0fe57h\r
6278 db 0\r
6279reg.i: db high ivtab\r
6280reg.iy: dw 0 ; 0fe5ah\r
6281reg.ix: dw 0 ; 0fe5ch\r
6282reg.e: db 0 ; 0fe5eh\r
6283reg.d: db 0 ; 0fe5fh\r
6284reg.c: db 0 ; 0fe60h\r
6285reg.b: db 0 ; 0fe61h\r
6286 if ROMSYS\r
6287udcntl: db CWAITIO ; 0fe62h (mem-, io- wait)\r
6288uromen: db ROM_DIS ; 0fe63h\r
6289 endif\r
6290ubbr: db 0 ; 0fe64h\r
6291ucbar: db USR$CBAR ; 0fe65h\r
6292reg.f: db 0 ; 0fe66h\r
6293reg.a: db 0 ; 0fe67h\r
6294reg.l: db 0 ; 0fe68h\r
6295reg.h: db 0 ; 0fe69h\r
6296reg.sp: dw TOPRAM ; 0fe6ah\r
6297\r
6298$go:\r
6299 if ROMSYS\r
6300 out (000h),a ;064c fe6c\r
6301 out0 (dcntl),l ;064e\r
6302 pop hl ;0651\r
6303 endif\r
6304 out0 (cbar),h ;0652\r
6305 out0 (bbr),l ;0655\r
6306 pop af ;0658\r
6307 pop hl ;0659\r
6308 ld sp,(reg.sp) ;065a\r
6309reg.iff:\r
6310 ei ;065e\r
6311 db 0C3h ;jp TPA ;065f feff ($+1): reg.pc\r
6312reg.pc:\r
6313 dw TPA\r
6314 \r
6315bpent:\r
6316 ld (reg.l),hl ;0662 fe82: bpent:\r
6317 pop hl ;0665\r
6318 dec hl ;0666\r
6319 ld (reg.pc),hl ;0667\r
6320 ld (reg.sp),sp ;066a\r
6321 ld sp,reg.l ;066e\r
6322 push af ;0671\r
6323 in0 h,(cbar) ;0672\r
6324 in0 l,(bbr) ;0675\r
6325 push hl ;0678\r
6326 ld a,SYS$CBAR ;0679\r
6327 out0 (cbar),a ;067b\r
6328\r
6329 if ROMSYS\r
6330 in0 l,(dcntl) ;067e\r
6331 ld a,CWAITROM+CWAITIO ;0681\r
6332 out0 (dcntl),a ;0683\r
6333 ld a,($crom) ;0686\r
6334 cp c$rom ;0689\r
6335 ld a,ROM_EN ;068b\r
6336 out (000h),a ;068d\r
6337 endif\r
6338\r
6339 jp bpddtz ;068f\r
6340\r
6341?comcod:\r
6342 if ROMSYS\r
6343 out (000h),a ;0692 feb2\r
6344 pop af ;069a\r
6345 endif\r
6346\r
6347 out0 (cbar),h ;0694\r
6348 out0 (bbr),l ;0697\r
6349 pop hl ;069b\r
6350?exeit:\r
6351 ds ?lcmax+2\r
6352 push af ;069f\r
6353 ld a,SYS$CBAR ;06a0\r
6354 out0 (cbar),a ;06a2\r
6355\r
6356 if ROMSYS\r
6357 ld a,ROM_EN ;06a5\r
6358 out (000h),a ;06a7\r
6359 endif\r
6360 \r
6361 pop af ;06a9\r
6362 ret ;06aa\r
6363\r
6364topcodend:\r
6365curph defl $\r
6366 .dephase\r
6367sysrame:\r
6368\r
6369 end\r
6370\r