]> cloudbase.mooo.com Git - ddt180.git/blame - ddt180.z80
Allow symbols in expressions. Print symbol in H command.
[ddt180.git] / ddt180.z80
CommitLineData
0c4244e5 1; Disassembled ddtz.com, version "DDT/Z [8101]"\r
ed6c425a 2; with modified relocater.\r
0c4244e5 3;\r
ed6c425a
L
4; Build steps:\r
5; - Assemble to a .REL file with M80 or a compatible assembler.\r
6; - Use Digital Research Link-80 to generate a .PRL file (op switch).\r
7; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.\r
0c4244e5
L
8\r
9;-------------------------------------------------------------------------------\r
10; Relocation loader\r
11;\r
0c4244e5 12\r
ed6c425a
L
13TPA equ 0100h\r
14 cseg\r
15 .phase TPA\r
16\r
899547a8 17 jp start\r
0c4244e5 18\r
0c4244e5 19ldr_end:\r
ed6c425a 20ldr_size equ $ - TPA\r
899547a8 21current_phase defl $\r
0c4244e5 22\r
ed6c425a 23 .dephase\r
899547a8
L
24current_cseg defl $\r
25\r
0c4244e5
L
26;-------------------------------------------------------------------------------\r
27; DDT/Z core\r
28;\r
29\r
30; Some greneral definitions\r
31\r
32TAB equ 9\r
33LF equ 10\r
34CR equ 13\r
35\r
36; CP/M memory layout\r
37\r
38BDOS equ 5\r
c788b3b7
L
39dfcb1 equ 05ch\r
40dfcb2 equ 06ch\r
0c4244e5
L
41DMA_BUF equ 080h\r
42TPA equ 0100h\r
43\r
44; BDOS function calls\r
45\r
46BDOS_CIN equ 1 ;Console Input\r
47BDOS_COUT equ 2 ;Console Output\r
48BDOS_PSTR equ 9 ;Print String\r
49BDOS_CBUF equ 10 ;Read Console Buffer\r
50BDOS_CSTAT equ 11 ;Get Console Status\r
51BDOS_OPEN equ 15 ;Open File\r
52BDOS_CLOSE equ 16 ;Close File\r
53BDOS_DELETE equ 19 ;Delete File\r
54BDOS_READ equ 20 ;Read Sequential\r
55BDOS_WRITE equ 21 ;Write Sequential\r
56BDOS_CREATE equ 22 ;Make File\r
57BDOS_SETDMA equ 26 ;Set DMA Address\r
58\r
59; ddtz specific definitions\r
60\r
61STACK_SIZE equ 64 ;ddtz internal stack\r
62CONBUF_SIZE equ 80 ;Size of console input buffer\r
63EXPR_BUF_SIZE equ 128 ;expressen buffer for conditional breakpoints\r
64BP_CNT equ 12 ;Number of breakpoints\r
65BP_SIZE equ 8 ;Size of a breakpoint record\r
66YREG_CNT equ 10 ;Number of Y registers (0..9)\r
67\r
68;-------------------------------------------------------------------------------\r
69\r
70ddtz_base:\r
c788b3b7 71 jp ddtz_bdos\r
0c4244e5 72l0003h:\r
c788b3b7 73 rst 30h\r
0c4244e5 74sub_0004h:\r
c788b3b7
L
75 nop\r
76 ret\r
77ddtz_bdos:\r
78 jp 0\r
0c4244e5 79\r
899547a8
L
80current_cseg defl $ - current_cseg\r
81 .phase current_phase + current_cseg\r
82signon:\r
83 db 'DDT/180',TAB\r
ac35765e 84 db '[8101] 003',CR,LF,'$'\r
899547a8
L
85msgz80:\r
86 db 'Z80 or better required!',cr,lf,'$'\r
87\r
88current_phase defl $\r
89 .dephase\r
90current_cseg defl $\r
91 ds STACK_SIZE - (current_phase - signon)\r
92\r
0c4244e5
L
93\r
94stack:\r
9bed91b3
L
95reg.l2: db 000h\r
96reg.h2: db 000h\r
97reg.e2: db 000h\r
98reg.d2: db 000h\r
99reg.c2: db 000h\r
100reg.b2: db 000h\r
101reg.f2: db 000h\r
102reg.a2: db 000h\r
103l004eh: db 000h\r
104reg.i: db 000h\r
105reg.iy: dw 0000h\r
106reg.ix: dw 0000h\r
107reg.f: db 000h\r
108reg.a: db 000h\r
109reg.c: db 000h\r
110reg.b: db 000h\r
111reg.e: db 000h\r
112reg.d: db 000h\r
113reg.l: db 000h\r
114reg.h: db 000h\r
115reg_sp: dw TPA\r
0c4244e5 116reg.iff:\r
9bed91b3
L
117 db 0f3h\r
118 db 0c3h\r
ac35765e
L
119reg.pc: dw TPA\r
120var.$: dw 0000h\r
121var.@: dw 0\r
0c4244e5 122\r
ac35765e 123error_func:dw l0146h\r
9bed91b3 124cmd_rpt:dw mainloop\r
0c4244e5
L
125\r
126conbuf:\r
9bed91b3 127 db CONBUF_SIZE\r
0c4244e5 128\r
c788b3b7
L
129 ld sp,stack\r
130 exx\r
131 ld de,ddtz_base\r
132 or a\r
133 sbc hl,de\r
134 add hl,de\r
135 jr c,l0079h\r
136 ex de,hl\r
0c4244e5 137l0079h:\r
c788b3b7 138 ld de,TPA\r
0c4244e5 139l007ch:\r
c788b3b7
L
140 dec hl\r
141 ld (hl),000h\r
142 ld a,h\r
143 sub d\r
144 ld b,a\r
145 ld a,l\r
146 sub e\r
147 or b\r
148 jr nz,l007ch\r
149 ld a,i\r
150 ld (reg.i),a\r
151 ld a,0f3h\r
152 jp po,l0093h\r
153 ld a,0fbh\r
0c4244e5 154l0093h:\r
c788b3b7
L
155 ld (reg.iff),a\r
156 call sub_0004h\r
157 ld hl,ddtz_base\r
158 ld l,000h\r
159 ld (reg_sp),hl\r
160 call cpy_fcb2\r
161 ld a,(dfcb1+1)\r
162 cp ' '\r
163 ld hl,0\r
164 call nz,read_file\r
165 jr mainloop\r
0c4244e5
L
166\r
167 ds CONBUF_SIZE + 3 - ($ - conbuf)\r
168\r
ac35765e
L
169CMDTAB:\r
170 dw cmd_@ ;examine/substitute the displacement register @\r
171 dw cmd_A ;Assemble\r
172 dw cmd_B ;Breakpoints display/set/clear\r
173 dw cmd_C ;trace over Calls\r
174 dw cmd_D ;Display memory in hex and ascii\r
175 dw ERROR ;\r
176 dw cmd_F ;specify Filename and command line\r
177 dw cmd_G ;Go\r
178 dw cmd_H ;compute Hex and other expressions\r
179 dw cmd_I ;Input a byte from port\r
180 dw ERROR ;\r
181 dw ERROR ;\r
182 dw cmd_L ;List disassembled code\r
183 dw cmd_M ;Move memory [and verify]\r
184 dw ERROR ;\r
185 dw cmd_O ;Output a byte to port\r
186 dw ERROR ;\r
187 dw cmd_Q ;Qery memory for byte string\r
188 dw cmd_R ;Read binary or hex file and/or symbol file\r
189 dw cmd_S ;Substitute memory\r
190 dw cmd_T ;Trace\r
191 dw ERROR ;\r
192 dw cmd_V ;Verify (compare) two memory areas\r
193 dw cmd_W ;Write a file to disk\r
194 dw cmd_X ;eXamine [and substitute] registers\r
195 dw cmd_Y ;examine [and substitute] Y variables\r
196 dw cmd_Z ;Zap (fill) memory with a byte string\r
197\r
0c4244e5 198mainloop:\r
0716e834
L
199 ld sp,stack\r
200 ld hl,l0146h\r
ac35765e
L
201 ld (error_func),hl\r
202 ld hl,(reg.pc)\r
203 ld (var.$),hl\r
0716e834
L
204 call bp_clr_temporary\r
205 ld hl,(cmd_rpt)\r
206 ld de,mainloop\r
207 call cp_hl_de\r
208 ld a,'>'\r
209 call outchar\r
210 call nz,outchar\r
211 call z,outbl\r
212 call get_line\r
213 call skipbl\r
214 jr z,exe_hl\r
215 ld hl,mainloop\r
216 ld (cmd_rpt),hl\r
217 inc de\r
218 sub '@'\r
219 jr c,ERROR\r
220 cp 'Z'+1-'@'\r
221 jr nc,ERROR\r
222 add a,a\r
223 ld hl,CMDTAB\r
224 call add_hl_a\r
225 ld a,(hl)\r
226 inc hl\r
227 ld h,(hl)\r
228 ld l,a\r
229 jr exe_hl\r
ac35765e 230\r
0c4244e5 231ERROR:\r
ac35765e 232 ld hl,(error_func)\r
0c4244e5 233exe_hl:\r
0716e834
L
234 call CALL_HL\r
235 jr mainloop\r
0c4244e5 236\r
0c4244e5 237l0146h:\r
0716e834
L
238 ld a,'?'\r
239 call outchar\r
ac35765e
L
240 ;fall thru\r
241crlf:\r
242 call inchar\r
243 ld a,CR\r
244 call outchar\r
245 ld a,LF\r
246 call outchar\r
247 ld a,0\r
248 ld (con_col),a\r
249 jr c,mainloop\r
250 ret\r
251\r
0c4244e5 252out.hl.@:\r
0716e834
L
253 call out_hl\r
254 push de\r
255 push hl\r
ac35765e 256 ld de,(var.@)\r
0716e834
L
257 ld a,d\r
258 or e\r
259 jr z,l01bfh\r
260 call outbl\r
261 ld a,'@'\r
262 call outchar\r
263 and a\r
264 sbc hl,de\r
265 call out_hl\r
0c4244e5 266l01bfh:\r
0716e834
L
267 pop hl\r
268 pop de\r
269 ret\r
3f9577cd 270\r
0c4244e5 271sub_01d9h:\r
0716e834
L
272 ld a,'-'\r
273 call outchar\r
274 dec hl\r
275 jp cpl.hl\r
0c4244e5
L
276\r
277out_hl_dec_neg:\r
0716e834
L
278 push hl\r
279 call sub_01d9h\r
280 defb 03eh\r
0c4244e5 281out.hl.dec:\r
0716e834
L
282 push hl\r
283 ld b,006h\r
284 call sub_01f9h\r
285 pop hl\r
286 ld a,'.'\r
287 call outchar\r
0c4244e5 288l01f3h:\r
0716e834
L
289 call outbl\r
290 djnz l01f3h\r
291 ret\r
0c4244e5 292sub_01f9h:\r
0716e834
L
293 dec b\r
294 push de\r
295 ld de,10\r
296 call div_hl_de\r
297 ld a,h\r
298 or l\r
299 call nz,sub_01f9h\r
300 ld a,e\r
301 pop de\r
302 jr out_dgt\r
0c4244e5
L
303\r
304out_hl_neg:\r
0716e834
L
305 push hl\r
306 call sub_01d9h\r
307 call out_hl\r
308 pop hl\r
309 ret\r
0c4244e5
L
310\r
311out_hl:\r
0716e834
L
312 ld a,h\r
313 call out_hex\r
314 ld a,l\r
0c4244e5
L
315\r
316out_hex:\r
0716e834
L
317 push af\r
318 rra\r
319 rra\r
320 rra\r
321 rra\r
322 call out_dgt\r
323 pop af\r
0c4244e5
L
324\r
325out_dgt:\r
0716e834
L
326 and 0fh\r
327 cp 10\r
328 jr c,l0229h\r
329 add a,007h\r
0c4244e5 330l0229h:\r
0716e834
L
331 add a,'0'\r
332 jr outchar\r
5023df4f 333\r
01cb8973
L
334out.bin.w:\r
335 ld a,h\r
336 call out.bin.b\r
337 ld a,l\r
338out.bin.b:\r
339 ld b,8\r
340l01c9h:\r
341 add a,a\r
342 push af\r
343 ld a,00\r
344 adc a,a\r
345 call out_dgt\r
346 pop af\r
347 djnz l01c9h\r
348 ld a,'"'\r
349 jr outchar\r
350\r
0c4244e5 351out.ascii:\r
0716e834
L
352 push af\r
353 res 7,a\r
354 cp ' '\r
5023df4f
L
355 push af\r
356 call nc,outbl\r
357 call outquote\r
358 pop af\r
0716e834
L
359 jr nc,l0242h\r
360 sub 0c0h\r
5023df4f
L
361 ex af,af'\r
362 ld a,'^'\r
363 call outchar\r
364 ex af,af'\r
0c4244e5 365l0242h:\r
0716e834 366 call outchar\r
0716e834
L
367 cp ''''\r
368 call z,outchar\r
0716e834
L
369 ex af,af'\r
370 call outquote\r
371 pop af\r
372 or a\r
373 ld a,'.'\r
374 call m,outchar\r
375 ex af,af'\r
0716e834 376 ret\r
646e8b05 377\r
01cb8973
L
378outbl6:\r
379 call outbl2\r
380outbl4:\r
381 call outbl2\r
382outbl2:\r
383 call outbl\r
384outbl:\r
385 ld a,' '\r
386 jr outchar\r
387\r
25a690e5
L
388p_char_lparen:\r
389 ld a,'('\r
390 jr outchar\r
391\r
0c4244e5 392outquote:\r
0716e834 393 ld a,''''\r
0c4244e5 394outchar:\r
0716e834
L
395 push hl\r
396 push de\r
397 push bc\r
398 push af\r
399 and 07fh\r
400 ld e,a\r
401 ld c,BDOS_COUT\r
402 call ddtz_bdos\r
403 ld hl,con_col\r
404 inc (hl)\r
405 pop af\r
406 pop bc\r
407 pop de\r
408 pop hl\r
409 ret\r
9bed91b3 410\r
01cb8973
L
411pstr:\r
412 ld c,0\r
413l028ah:\r
414 ld a,(hl)\r
415 inc hl\r
416 and a\r
417 ret z\r
418 call outchar\r
419 inc c\r
420 and a\r
421 ret m\r
422 jr l028ah\r
423\r
424pstr_inl:\r
425 ex (sp),hl\r
426 call pstr\r
427 ex (sp),hl\r
428 ret\r
429\r
0c4244e5 430inchar:\r
0716e834
L
431 push hl\r
432 push de\r
433 push bc\r
434 ld c,BDOS_CSTAT\r
435 call ddtz_bdos\r
436 and a\r
437 jr z,l0284h\r
438 ld c,BDOS_CIN\r
439 call ddtz_bdos\r
440 scf\r
0c4244e5 441l0284h:\r
0716e834
L
442 pop bc\r
443 pop de\r
444 pop hl\r
445 ret\r
ac35765e 446\r
01cb8973
L
447get_line:\r
448 push hl\r
449 ld de,conbuf\r
450 ld c,BDOS_CBUF\r
451 call ddtz_bdos\r
452 call crlf\r
453 ld de,conbuf+1\r
454 ld a,(de)\r
455 ld b,a\r
0716e834 456 ld c,0\r
01cb8973
L
457 inc b\r
458l0162h:\r
459 inc de\r
460 dec b\r
461 jr z,l0194h\r
462 ld a,(de)\r
463 bit 0,c\r
464 call z,toupper\r
465 ld (de),a\r
466 cp ''''\r
467 jr nz,l0162h\r
468 push de\r
469 dec de\r
470 ld a,(de)\r
471 cp ''''\r
472 jr z,l0190h\r
473 dec de\r
474 ld a,(de)\r
475 cp '^'\r
476 jr z,l0184h\r
477 dec de\r
478 ld a,(de)\r
479 cp '^'\r
480 jr nz,l0190h\r
481l0184h:\r
482 inc de\r
483 push bc\r
484 call sub_0303h\r
485 pop bc\r
486 dec de\r
487 ld a,(de)\r
488 cp ''''\r
489 jr z,l0191h\r
490l0190h:\r
0716e834 491 inc c\r
01cb8973
L
492l0191h:\r
493 pop de\r
494 jr l0162h\r
495l0194h:\r
496 xor a\r
497 ld (de),a\r
498 ld de,conbuf+2\r
499 pop hl\r
d1f2492e
L
500 ret\r
501\r
01cb8973
L
502toupper:\r
503 cp 'a'\r
504 ret c\r
505 cp 'z'+1\r
0716e834 506 ret nc\r
01cb8973 507 and 05fh\r
0716e834 508 ret\r
0c4244e5
L
509\r
510skipbl0:\r
0716e834 511 inc de\r
0c4244e5 512skipbl:\r
0716e834
L
513 ld a,(de)\r
514 cp ' '\r
515 jr z,skipbl0\r
516 cp TAB\r
517 jr z,skipbl0\r
518 or a\r
519 ret\r
0c4244e5
L
520\r
521next_arg:\r
0716e834
L
522 call skipbl\r
523 cp ','\r
524 ret nz\r
525 inc de\r
526 call skipbl\r
527 cp a\r
528 ret\r
0c4244e5
L
529\r
530assert_eol:\r
0716e834
L
531 call skipbl\r
532 ret z\r
0c4244e5 533to_error:\r
0716e834 534 jp ERROR\r
0c4244e5
L
535\r
536chk_sp:\r
0716e834
L
537 push hl\r
538 push de\r
539 ld hl,0\r
540 add hl,sp\r
541 ld de,stack-40\r
542 call cp_hl_de\r
543 pop de\r
544 pop hl\r
545 jr c,to_error\r
546 ret\r
0c4244e5 547\r
01cb8973
L
548add_hl_a:\r
549 add a,l\r
550 ld l,a\r
551 ret nc\r
552 inc h\r
553 ret\r
554\r
0c4244e5 555cp_hl_de:\r
0716e834
L
556 and a\r
557 sbc hl,de\r
558 add hl,de\r
559 ret\r
0c4244e5
L
560\r
561lookupch:\r
0716e834 562 ld b,0\r
0c4244e5 563l02f5h:\r
0716e834
L
564 ld a,(hl)\r
565 and a\r
566 ret z\r
567 ld a,(de)\r
568 cp (hl)\r
569 jr z,l0300h\r
570 inc hl\r
571 inc b\r
572 jr l02f5h\r
0c4244e5 573l0300h:\r
0716e834
L
574 scf\r
575 inc de\r
576 ret\r
0c4244e5
L
577\r
578sub_0303h:\r
0716e834
L
579 ld hl,b_0cc3_start\r
580 ld b,07fh\r
581 jr l030ch\r
b0b4005c 582\r
0c4244e5 583sub_030ah:\r
0716e834 584 ld b,0ffh\r
0c4244e5 585l030ch:\r
0716e834
L
586 inc b\r
587 ld a,(hl)\r
588 and a\r
589 ret z\r
590 call sub_031ch\r
591 jr nc,l030ch\r
592 res 7,b\r
593 ret\r
0c4244e5
L
594\r
595sub_0318h:\r
0716e834
L
596 push bc\r
597 res 7,b\r
598 defb 03eh\r
0c4244e5 599sub_031ch:\r
0716e834
L
600 push bc\r
601 push de\r
0c4244e5 602l031eh:\r
0716e834
L
603 ld a,(de)\r
604 xor (hl)\r
605 and 07fh\r
606 jr nz,l0336h\r
607 bit 7,(hl)\r
608 inc hl\r
609 inc de\r
610 jr z,l031eh\r
611 scf\r
612 bit 7,b\r
613 call z,sub_060ch\r
614 jr nc,l0339h\r
615 pop af\r
616 scf\r
617 pop bc\r
618 ret\r
0c4244e5 619l0336h:\r
0716e834 620 call sub_0345h\r
0c4244e5 621l0339h:\r
0716e834
L
622 pop de\r
623 and a\r
624 pop bc\r
625 ret\r
646e8b05
L
626\r
627sel_dc_string:\r
0716e834 628 inc b\r
0c4244e5 629l033eh:\r
0716e834
L
630 dec b\r
631 ret z\r
632 call sub_0345h\r
633 jr l033eh\r
646e8b05 634\r
0c4244e5 635sub_0345h:\r
0716e834
L
636 ld a,(hl)\r
637 and a\r
638 ret z\r
0c4244e5 639l0348h:\r
0716e834
L
640 ld a,(hl)\r
641 inc hl\r
642 and a\r
643 ret m\r
644 jr l0348h\r
646e8b05 645\r
0c4244e5 646sub_034eh:\r
0716e834
L
647 call get_arg_range\r
648 push hl\r
649 push bc\r
650 call next_arg\r
651 call sub_0363h\r
652 ex de,hl\r
653 pop bc\r
654 pop hl\r
655 ret\r
0c4244e5
L
656\r
657sub_035dh:\r
0716e834
L
658 call expr\r
659 jr c,error0\r
660 ret\r
0c4244e5
L
661\r
662sub_0363h:\r
0716e834 663 call sub_035dh\r
0c4244e5 664l0366h:\r
0716e834 665 jp assert_eol\r
0c4244e5
L
666\r
667get_lastarg_def:\r
0716e834
L
668 call get_arg_def\r
669 jr l0366h\r
b0b4005c 670\r
0c4244e5 671get_arg_def:\r
0716e834
L
672 push hl\r
673 call expr\r
674 jr c,l0375h\r
675 ex (sp),hl\r
0c4244e5 676l0375h:\r
0716e834
L
677 pop hl\r
678 ret\r
b0b4005c 679\r
0c4244e5 680sub_0377h:\r
0716e834
L
681 call b_037c_start\r
682 jr l0366h\r
0c4244e5
L
683\r
684b_037c_start:\r
0716e834 685 defb 0e6h\r
0c4244e5 686get_arg_range:\r
0716e834
L
687 scf\r
688 ex af,af'\r
689 push bc\r
690 push hl\r
691 call expr\r
692 jr nc,l038ch\r
693 ex af,af'\r
694 jr c,error0\r
695 ex af,af'\r
696 pop hl\r
697 defb 03eh\r
0c4244e5 698l038ch:\r
0716e834
L
699 pop af\r
700 call get_range\r
701 jr nc,l0398h\r
702 ex af,af'\r
703 pop bc\r
704 ret nc\r
0c4244e5 705error0:\r
0716e834 706 jp ERROR\r
0c4244e5 707l0398h:\r
0716e834
L
708 pop af\r
709 ret\r
0c4244e5 710\r
b0b4005c 711get_range:\r
0716e834
L
712 call next_arg\r
713 cp 'S'\r
714 jr nz,l03a2h\r
715 inc de\r
0c4244e5 716l03a2h:\r
0716e834
L
717 push hl\r
718 push af\r
719 call expr\r
720 jr c,l03b8h\r
721 ld b,h\r
722 ld c,l\r
723 pop af\r
724 pop hl\r
725 jr z,l03b6h\r
726 ld a,c\r
727 sub l\r
728 ld c,a\r
729 ld a,b\r
730 sbc a,h\r
731 ld b,a\r
732 inc bc\r
0c4244e5 733l03b6h:\r
0716e834
L
734 and a\r
735 ret\r
0c4244e5 736l03b8h:\r
0716e834
L
737 pop af\r
738 pop hl\r
739 jr z,error0\r
740 scf\r
741 ret\r
0c4244e5
L
742\r
743expr:\r
0716e834 744 call skipbl\r
0c4244e5 745expr1:\r
0716e834
L
746 call do_subexpr\r
747 ret c\r
748 call do_rel_op\r
749 ret nc\r
750 push bc\r
751 push hl\r
752 call do_subexpr\r
753 jr c,error0\r
754 ex de,hl\r
755 ex (sp),hl\r
756 and a\r
757 sbc hl,de\r
758 ld hl,0ffffh\r
759 pop de\r
760 ret\r
0c4244e5
L
761\r
762do_op_eq:\r
0716e834
L
763 jr z,l03edh\r
764 jr l03ech\r
0c4244e5 765do_op_ne:\r
0716e834
L
766 jr nz,l03edh\r
767 jr l03ech\r
0c4244e5 768do_op_le:\r
0716e834 769 jr z,l03edh\r
0c4244e5 770do_op_lt:\r
0716e834
L
771 jr c,l03edh\r
772 jr l03ech\r
0c4244e5 773do_op_gt:\r
0716e834 774 jr z,l03ech\r
0c4244e5 775do_op_ge:\r
0716e834 776 jr nc,l03edh\r
0c4244e5 777l03ech:\r
0716e834 778 inc hl\r
0c4244e5 779l03edh:\r
0716e834
L
780 and a\r
781 ret\r
0c4244e5 782do_rel_op:\r
0716e834
L
783 push hl\r
784 ld hl,tab_eq_le_ge\r
785 call lookupch\r
786 jr nc,l041dh\r
787 ld a,b\r
788 or a\r
789 jr z,l0411h\r
790 ld a,(de)\r
791 cp '='\r
792 jr nz,l0406h\r
793 inc de\r
794 inc b\r
795 inc b\r
796 jr l0411h\r
0c4244e5 797l0406h:\r
0716e834
L
798 bit 0,b\r
799 jr z,l0411h\r
800 cp '>'\r
801 jr nz,l0411h\r
802 inc de\r
803 ld b,005h\r
0c4244e5 804l0411h:\r
0716e834
L
805 ld hl,tab_func_eqlege\r
806 ld a,b\r
807 add a,a\r
808 call add_hl_a\r
809 ld c,(hl)\r
810 inc hl\r
811 ld b,(hl)\r
812 scf\r
0c4244e5 813l041dh:\r
0716e834
L
814 pop hl\r
815 ret\r
0c4244e5
L
816\r
817tab_eq_le_ge:\r
818 db '=<>',0\r
819\r
820tab_func_eqlege:\r
0716e834
L
821 dw do_op_eq\r
822 dw do_op_lt\r
823 dw do_op_gt\r
824 dw do_op_le\r
825 dw do_op_ge\r
826 dw do_op_ne\r
0c4244e5
L
827\r
828do_subexpr:\r
0716e834
L
829 call do_factor\r
830 ret c\r
0c4244e5 831l0433h:\r
0716e834
L
832 call do_binary_op\r
833 push hl\r
834 push bc\r
835 call do_factor\r
836 pop bc\r
837 ex de,hl\r
838 ex (sp),hl\r
839 jr nc,l0447h\r
840 pop de\r
841 ld a,b\r
842 or c\r
843 ret z\r
844 jp ERROR\r
0c4244e5
L
845\r
846l0447h:\r
0716e834
L
847 ld a,b\r
848 or c\r
849 push bc\r
850 ret nz\r
851 pop bc\r
0c4244e5
L
852\r
853doop_add:\r
0716e834 854 add hl,de\r
0c4244e5 855l044dh:\r
0716e834
L
856 pop de\r
857 jr l0433h\r
0c4244e5
L
858\r
859doop_sub:\r
0716e834
L
860 and a\r
861 sbc hl,de\r
862 jr l044dh\r
0c4244e5
L
863\r
864doop_mlt:\r
0716e834
L
865 push bc\r
866 ld b,h\r
867 ld c,l\r
868 ld hl,0\r
869 ld a,010h\r
0c4244e5 870l045dh:\r
0716e834
L
871 add hl,hl\r
872 ex de,hl\r
873 add hl,hl\r
874 ex de,hl\r
875 jr nc,l0464h\r
876 add hl,bc\r
0c4244e5 877l0464h:\r
0716e834
L
878 dec a\r
879 jr nz,l045dh\r
880 pop bc\r
881 jr l044dh\r
0c4244e5
L
882\r
883doop_div:\r
0716e834
L
884 call div_hl_de\r
885 jr l044dh\r
0c4244e5
L
886\r
887doop_mod:\r
0716e834
L
888 call div_hl_de\r
889 ex de,hl\r
890 jr l044dh\r
0c4244e5
L
891\r
892; divide x/y\r
893; hl: x\r
894; de: y\r
895; return:\r
896; hl: q (x/y)\r
897; de: r (x%y)\r
898\r
899div_hl_de:\r
0716e834
L
900 push bc\r
901 ex de,hl\r
902 ld b,h\r
903 ld c,l\r
904 ld hl,0\r
905 ld a,16\r
0c4244e5
L
906\r
907; de: x (x shifted out, q shifted in)\r
908; bc: y\r
909; hl: r (initially 0)\r
910\r
911l047eh:\r
0716e834
L
912 push af\r
913 add hl,hl\r
914 ex de,hl\r
915 xor a\r
916 add hl,hl\r
917 ex de,hl\r
918 adc a,l\r
919 sub c\r
920 ld l,a\r
921 ld a,h\r
922 sbc a,b\r
923 ld h,a\r
924 inc de\r
925 jr nc,l048fh\r
926 add hl,bc\r
927 dec de\r
0c4244e5 928l048fh:\r
0716e834
L
929 pop af\r
930 dec a\r
931 jr nz,l047eh\r
932 ex de,hl\r
933 pop bc\r
934 ret\r
0c4244e5
L
935\r
936doop_and:\r
0716e834
L
937 ld a,h\r
938 and d\r
939 ld h,a\r
940 ld a,l\r
941 and e\r
942 ld l,a\r
943 jr l044dh\r
0c4244e5
L
944\r
945doop_or:\r
0716e834
L
946 ld a,h\r
947 or d\r
948 ld h,a\r
949 ld a,l\r
950 or e\r
951 ld l,a\r
952 jr l044dh\r
0c4244e5
L
953\r
954doop_xor:\r
0716e834
L
955 ld a,h\r
956 xor d\r
957 ld h,a\r
958 ld a,l\r
959 xor e\r
960 ld l,a\r
961 jr l044dh\r
0c4244e5
L
962\r
963do_binary_op:\r
0716e834
L
964 push hl\r
965 ld hl,tab_op_a\r
966 call lookupch\r
967 ld a,b\r
968 ld hl,tblf_opa\r
969 add a,a\r
970 call add_hl_a\r
971 ld c,(hl)\r
972 inc hl\r
973 ld b,(hl)\r
974 pop hl\r
975 ret\r
0c4244e5
L
976\r
977tab_op_a:\r
978 DB '+-*/%&!#',0\r
979\r
980tblf_opa:\r
0716e834
L
981 dw doop_add\r
982 dw doop_sub\r
983 dw doop_mlt\r
984 dw doop_div\r
985 dw doop_mod\r
986 dw doop_and\r
987 dw doop_or\r
988 dw doop_xor\r
989 dw 0\r
0c4244e5
L
990\r
991fact_factor:\r
0716e834
L
992 call do_factor\r
993 ret nc\r
994 jp ERROR\r
0c4244e5
L
995\r
996do_factor:\r
0716e834
L
997 call chk_sp\r
998 call get.number\r
999 ret nc\r
1000 inc de\r
1001 ld hl,(BDOS+1)\r
1002 cp 'T'\r
1003 ret z\r
1004 ld hl,(high_load)\r
1005 cp 'H'\r
1006 ret z\r
1007 ld hl,(max_load)\r
1008 cp 'M'\r
1009 ret z\r
1010 ld hl,TPA\r
1011 cp 'L'\r
1012 ret z\r
ac35765e 1013 ld hl,(var.@)\r
0716e834
L
1014 cp '@'\r
1015 ret z\r
ac35765e 1016 ld hl,(var.$)\r
0716e834
L
1017 cp '$'\r
1018 ret z\r
1019 cp '-'\r
1020 jr z,fact_factneg\r
1021 cp '~'\r
1022 jr z,fact_factinv\r
1023 cp '+'\r
1024 jr z,fact_factor\r
1025 cp '^'\r
1026 jr z,fact_reg.CPU\r
1027 cp 'Y'\r
1028 jr z,fact_reg.Y\r
1029 cp '('\r
1030 jr z,fact_mem\r
1031 cp '['\r
3a4deef9 1032 jr z,expr_brckt\r
0716e834
L
1033 cp ''''\r
1034 jr z,fact_factstring\r
3a4deef9
L
1035 cp '.'\r
1036 jr z,fact_symbol\r
0716e834
L
1037 dec de\r
1038 scf\r
1039 ret\r
0c4244e5
L
1040\r
1041fact_reg.Y:\r
0716e834 1042 call get.decdigit\r
3a4deef9 1043 jr c,error4\r
0716e834
L
1044 inc de\r
1045 add a,a\r
1046 ld hl,reg_Y\r
1047 call add_hl_a\r
1048 ld a,(hl)\r
1049 inc hl\r
1050 ld h,(hl)\r
1051 ld l,a\r
1052 and a\r
1053 ret\r
0c4244e5
L
1054\r
1055fact_factstring:\r
0716e834 1056 ld hl,0\r
0c4244e5 1057l054bh:\r
0716e834
L
1058 ld a,(de)\r
1059 cp ''''\r
1060 jr z,l0557h\r
1061 and a\r
1062 ret z\r
0c4244e5 1063l0552h:\r
0716e834
L
1064 ld h,l\r
1065 ld l,a\r
1066 inc de\r
1067 jr l054bh\r
0c4244e5 1068l0557h:\r
0716e834
L
1069 inc de\r
1070 ld a,(de)\r
1071 cp ''''\r
1072 jr z,l0552h\r
1073 sub '.'\r
1074 or a\r
1075 ret nz\r
1076 inc de\r
1077 set 7,l\r
1078 ret\r
0c4244e5
L
1079\r
1080fact_reg.CPU:\r
0716e834
L
1081 call sub_0caeh\r
1082 jr nc,error4\r
1083 ld a,(hl)\r
1084 inc hl\r
1085 ld h,(hl)\r
1086 ld l,a\r
1087 and a\r
1088 bit 0,c\r
1089 ret nz\r
1090 ld h,000h\r
1091 ret\r
0c4244e5
L
1092\r
1093fact_factneg:\r
0716e834
L
1094 call fact_factor\r
1095 dec hl\r
0c4244e5 1096cpl.hl:\r
0716e834
L
1097 ld a,h\r
1098 cpl\r
1099 ld h,a\r
1100 ld a,l\r
1101 cpl\r
1102 ld l,a\r
1103 ret\r
0c4244e5
L
1104\r
1105fact_factinv:\r
0716e834
L
1106 call fact_factor\r
1107 jr cpl.hl\r
0c4244e5
L
1108\r
1109fact_mem:\r
0716e834
L
1110 call expr1\r
1111 jr c,error4\r
1112 ld a,(de)\r
1113 cp ')'\r
1114 jr nz,error4\r
1115 inc de\r
1116 ld a,(hl)\r
1117 inc hl\r
1118 ld h,(hl)\r
1119 ld l,a\r
1120 ld a,(de)\r
1121 inc de\r
1122 cp '.'\r
1123 ret z\r
1124 dec de\r
1125 xor a\r
1126 ld h,a\r
1127 ret\r
0c4244e5
L
1128\r
1129expr_brckt:\r
0716e834
L
1130 call expr1\r
1131 jr c,error4\r
1132 ld a,(de)\r
1133 cp ']'\r
1134 inc de\r
1135 ret z\r
0c4244e5 1136error4:\r
0716e834 1137 jp ERROR\r
0c4244e5 1138\r
3a4deef9
L
1139fact_symbol:\r
1140 push bc\r
1141 ld hl,ddtz_base\r
1142\r
1143fs_nxtsym:\r
1144 ld a,(hl) ;symlen\r
1145 cp 0c3h\r
1146 jr z,error4\r
1147 ld b,a\r
1148 inc b\r
1149 push hl\r
1150 push de\r
1151fs_2:\r
1152 ld a,(de)\r
1153 call test_termchar\r
1154 jr z,fs_endstr\r
1155 dec b\r
1156 jr z,fs_cont\r
1157 inc de\r
1158 dec hl\r
1159 cp (hl)\r
1160 jr z,fs_2\r
1161fs_cont:\r
1162 pop de\r
1163 pop hl\r
1164 ld a,(hl)\r
1165 add a,3\r
1166 call sub_hl_a\r
1167 jr fs_nxtsym\r
1168\r
1169fs_endstr:\r
1170 dec b\r
1171 jr nz,fs_cont\r
1172 pop hl\r
1173 pop hl\r
1174 inc hl\r
1175 ld a,(hl)\r
1176 inc hl\r
1177 ld h,(hl)\r
1178 ld l,a\r
1179 or a\r
1180 pop bc\r
1181 ret\r
1182\r
1183t_trmchrs:\r
1184 db ' !#&()*+,-/:;<=>[\]{|}',0\r
1185t_trmchrs_len equ $ - t_trmchrs\r
1186\r
1187test_termchar:\r
1188 push hl\r
1189 push bc\r
1190 ld hl,t_trmchrs\r
1191 ld bc,t_trmchrs_len\r
1192 cpir\r
1193 pop bc\r
1194 pop hl\r
1195 ret\r
1196\r
1197\r
1198\r
0c4244e5 1199get.number:\r
0716e834
L
1200 call get.hexdigit\r
1201 ret c\r
1202 push de\r
0c4244e5 1203test_number:\r
0716e834
L
1204 inc de\r
1205 call get.hexdigit\r
1206 jr nc,test_number\r
1207 pop de\r
1208 cp '.'\r
1209 jr z,get_dec_number\r
1210 cp '"'\r
1211 jr z,get_bin_number\r
1212 ld hl,0\r
0c4244e5 1213next_hexdigit:\r
0716e834
L
1214 call get.hexdigit\r
1215 jr c,hexnum_done\r
1216 add hl,hl\r
1217 add hl,hl\r
1218 add hl,hl\r
1219 add hl,hl\r
1220 call add_hl_a\r
1221 inc de\r
1222 jr next_hexdigit\r
0c4244e5
L
1223\r
1224hexnum_done:\r
0716e834
L
1225 xor 'H'\r
1226 ret nz\r
1227 inc de\r
1228 ret\r
0c4244e5
L
1229\r
1230get_bin_number:\r
0716e834 1231 ld hl,0\r
0c4244e5 1232next_bindigit:\r
0716e834 1233 call get.bindigit\r
0c4244e5 1234l05dbh:\r
0716e834
L
1235 inc de\r
1236 jr c,l05e4h\r
1237 add hl,hl\r
1238 call add_hl_a\r
1239 jr next_bindigit\r
0c4244e5 1240l05e4h:\r
0716e834
L
1241 cp '"'\r
1242 jp nz,ERROR\r
1243 call get.bindigit\r
1244 jr nc,l05dbh\r
1245 or a\r
1246 ret\r
0c4244e5
L
1247\r
1248get_dec_number:\r
0716e834 1249 ld hl,0\r
0c4244e5 1250next_decdigit:\r
0716e834
L
1251 call get.decdigit\r
1252 inc de\r
1253 jr c,decnum_done\r
1254 push bc\r
1255 add hl,hl\r
1256 ld b,h\r
1257 ld c,l\r
1258 add hl,hl\r
1259 add hl,hl\r
1260 add hl,bc\r
1261 pop bc\r
1262 call add_hl_a\r
1263 jr next_decdigit\r
0c4244e5 1264decnum_done:\r
0716e834
L
1265 cp '.'\r
1266 ret z\r
1267 jp ERROR\r
0c4244e5
L
1268\r
1269sub_060ch:\r
0716e834
L
1270 ld a,(de)\r
1271 cp '['\r
1272 jr l0614h\r
0c4244e5
L
1273\r
1274get.hexdigit:\r
c788b3b7 1275 ld a,(de)\r
0c4244e5 1276hex_digit:\r
c788b3b7 1277 cp 'F'+1\r
0c4244e5 1278l0614h:\r
c788b3b7
L
1279 ccf\r
1280 ret c\r
1281 cp 'A'\r
1282 jr c,l061eh\r
1283 sub 'A'-10\r
1284 ret\r
0c4244e5
L
1285\r
1286get.decdigit:\r
c788b3b7 1287 ld a,(de)\r
0c4244e5 1288l061eh:\r
c788b3b7
L
1289 cp '9'+1\r
1290 jr l0625h\r
0c4244e5
L
1291\r
1292get.bindigit:\r
c788b3b7
L
1293 ld a,(de)\r
1294 cp '1'+1\r
0c4244e5 1295l0625h:\r
c788b3b7
L
1296 ccf\r
1297 ret c\r
1298 cp '0'\r
1299 ret c\r
1300 sub '0'\r
1301 ret\r
0c4244e5 1302\r
25a690e5 1303p_cpustat0:\r
0716e834 1304 call assert_eol\r
25a690e5 1305p_cpustat:\r
0716e834
L
1306 call p_f\r
1307 call outbl2\r
1308 ld hl,b_06e9_start\r
1309 ld de,b_0709_start\r
1310 ld b,6\r
0c4244e5 1311l063eh:\r
0716e834
L
1312 call p_regs\r
1313 djnz l063eh\r
1314 push hl\r
1315 push de\r
ac35765e 1316 ld iy,(reg.pc)\r
0716e834
L
1317 call p_disas_instr\r
1318 exx\r
1319 ex af,af'\r
1320 call crlf\r
1321 call p_f2\r
1322 call outbl2\r
1323 pop de\r
1324 pop hl\r
1325 ld b,7\r
0c4244e5 1326l065bh:\r
0716e834
L
1327 call p_regs\r
1328 djnz l065bh\r
1329 exx\r
1330 ex af,af'\r
1331 and a\r
1332 jr z,l066bh\r
1333 call outbl6\r
1334 call p_offset\r
0c4244e5 1335l066bh:\r
0716e834 1336 jp crlf\r
0c4244e5 1337\r
25a690e5 1338p_f:\r
0716e834
L
1339 ld a,(reg.f)\r
1340 call p_flags\r
1341 ld a,(reg.iff)\r
1342 cp 0f3h\r
1343 jp z,outbl\r
1344 ld a,'E'\r
1345 jp outchar\r
25a690e5 1346p_f2:\r
0716e834
L
1347 ld a,(reg.f2)\r
1348 call p_flags\r
1349 jp outbl\r
25a690e5 1350p_flags:\r
0716e834
L
1351 ld b,a\r
1352 ld a,'S'\r
1353 call sub_06aah\r
1354 ld a,'Z'\r
1355 call sub_06aah\r
1356 rl b\r
1357 ld a,'H'\r
1358 call sub_06aah\r
1359 rl b\r
1360 ld a,'V'\r
1361 call sub_06aah\r
1362 ld a,'N'\r
1363 call sub_06aah\r
1364 ld a,'C'\r
0c4244e5 1365sub_06aah:\r
0716e834
L
1366 rl b\r
1367 jp c,outchar\r
1368 jp outbl\r
25a690e5
L
1369\r
1370p_regs:\r
0716e834
L
1371 push bc\r
1372 push de\r
1373 call pstr\r
1374 ld a,'='\r
1375 call outchar\r
1376 ex (sp),hl\r
1377 ld e,(hl)\r
1378 inc hl\r
1379 ld d,(hl)\r
1380 inc hl\r
1381 ld a,(hl)\r
1382 inc hl\r
1383 push hl\r
1384 and a\r
1385 jr z,l06deh\r
1386 push af\r
1387 ld a,(de)\r
1388 ld l,a\r
1389 inc de\r
1390 ld a,(de)\r
1391 ld h,a\r
1392 pop af\r
1393 dec a\r
1394 jr z,l06d9h\r
1395 call out.hl.@\r
1396 call z,outbl6\r
1397 jr l06e2h\r
0c4244e5 1398l06d9h:\r
0716e834
L
1399 call out_hl\r
1400 jr l06e2h\r
0c4244e5 1401l06deh:\r
0716e834
L
1402 ld a,(de)\r
1403 call out_hex\r
0c4244e5 1404l06e2h:\r
0716e834
L
1405 call outbl\r
1406 pop de\r
1407 pop hl\r
1408 pop bc\r
1409 ret\r
0c4244e5
L
1410\r
1411b_06e9_start:\r
1412 DC 'A '\r
1413 DC 'BC '\r
1414 DC 'DE '\r
1415 DC 'HL '\r
1416 DC 'SP'\r
1417 DC 'PC'\r
899547a8
L
1418 DC 'a'''\r
1419 DC 'bc'''\r
1420 DC 'de'''\r
1421 DC 'hl'''\r
0c4244e5
L
1422 DC 'IX'\r
1423 DC 'IY'\r
1424 DC 'I'\r
1425 DB 0\r
1426\r
1427b_0709_start:\r
0716e834
L
1428 dw reg.a\r
1429 db 000h\r
1430 dw reg.c\r
1431 db 001h\r
1432 dw reg.e\r
1433 db 001h\r
1434 dw reg.l\r
1435 db 001h\r
1436 dw reg_sp\r
1437 db 001h\r
ac35765e 1438 dw reg.pc\r
0716e834
L
1439 db 002h\r
1440 dw reg.a2\r
1441 db 000h\r
1442 dw reg.c2\r
1443 db 001h\r
1444 dw reg.e2\r
1445 db 001h\r
1446 dw reg.l2\r
1447 db 001h\r
1448 dw reg.ix\r
1449 db 001h\r
1450 dw reg.iy\r
1451 db 001h\r
1452 dw reg.i\r
1453 db 000h\r
1454 db 000h\r
0c4244e5
L
1455\r
1456cmd_G:\r
0716e834
L
1457 sub a\r
1458 ld (trace_call_flag),a\r
1459 ld (l0941h),a\r
1460 call expr\r
1461 jr c,l0740h\r
ac35765e 1462 ld (reg.pc),hl\r
0c4244e5 1463l0740h:\r
0716e834
L
1464 call skipbl\r
1465 jp z,user_go\r
1466 cp ';'\r
1467 jp nz,ERROR\r
1468 inc de\r
1469 ld a,002h\r
1470 call bp_enter\r
1471 jp user_go\r
0c4244e5
L
1472\r
1473bp_clr_temporary:\r
0716e834
L
1474 ld b,BP_CNT\r
1475 ld ix,bp_tab\r
0c4244e5 1476l075ah:\r
0716e834
L
1477 ld a,(ix+000h)\r
1478 and 0f1h\r
1479 ld (ix+000h),a\r
1480 call bp_clr_condition\r
1481 ld de,BP_SIZE\r
1482 add ix,de\r
1483 djnz l075ah\r
1484 ret\r
0c4244e5
L
1485\r
1486cmd_B:\r
0716e834
L
1487 call skipbl\r
1488 jr z,l07b7h\r
1489 inc de\r
1490 cp 'X'\r
1491 jr z,l077dh\r
1492 dec de\r
1493 ld a,001h\r
1494 jp bp_enter\r
0c4244e5 1495l077dh:\r
0716e834
L
1496 call skipbl\r
1497 jr z,bp_clr_all\r
0c4244e5 1498l0782h:\r
0716e834
L
1499 call expr\r
1500 jp c,assert_eol\r
1501 push de\r
1502 call bp_clr\r
1503 pop de\r
1504 call next_arg\r
1505 jr l0782h\r
0c4244e5
L
1506\r
1507bp_clr_all:\r
0716e834 1508 scf\r
0c4244e5 1509bp_clr:\r
0716e834
L
1510 ld b,BP_CNT\r
1511 ld ix,bp_tab\r
0c4244e5 1512l0799h:\r
0716e834
L
1513 push af\r
1514 jr c,l07a7h\r
1515 ld e,(ix+002h)\r
1516 ld d,(ix+003h)\r
1517 call cp_hl_de\r
1518 jr nz,l07aeh\r
0c4244e5 1519l07a7h:\r
0716e834
L
1520 ld (ix+000h),000h\r
1521 call bp_clr_condition\r
0c4244e5 1522l07aeh:\r
0716e834
L
1523 ld de,BP_SIZE\r
1524 add ix,de\r
1525 pop af\r
1526 djnz l0799h\r
1527 ret\r
0c4244e5
L
1528\r
1529l07b7h:\r
0716e834
L
1530 ld b,BP_CNT\r
1531 ld ix,bp_tab\r
0c4244e5 1532l07bdh:\r
0716e834
L
1533 bit 0,(ix+000h)\r
1534 jr z,l0808h\r
1535 ld a,'R'\r
1536 bit 4,(ix+000h)\r
1537 jr nz,l07cdh\r
1538 ld a,' '\r
0c4244e5 1539l07cdh:\r
0716e834
L
1540 call outchar\r
1541 call outbl\r
1542 ld l,(ix+002h)\r
1543 ld h,(ix+003h)\r
1544 call out.hl.@\r
1545 call outbl2\r
1546 ld a,':'\r
1547 call outchar\r
1548 ld l,(ix+004h)\r
1549 ld h,(ix+005h)\r
1550 call out_hl\r
1551 ld l,(ix+006h)\r
1552 ld h,(ix+007h)\r
1553 ld a,h\r
1554 or l\r
1555 jr z,l0805h\r
1556 call outbl4\r
1557 ld a,'I'\r
1558 call outchar\r
1559 call outbl2\r
1560 call pstr\r
0c4244e5 1561l0805h:\r
0716e834 1562 call crlf\r
0c4244e5 1563l0808h:\r
0716e834
L
1564 ld de,BP_SIZE\r
1565 add ix,de\r
1566 djnz l07bdh\r
1567 ret\r
0c4244e5
L
1568\r
1569; Add break points to list\r
1570; A = 1 Permanent (B command)\r
1571; A = 2 Temporary (G command)\r
1572\r
1573bp_enter:\r
0716e834
L
1574 ld b,a\r
1575 call skipbl\r
1576 ret z\r
1577 cp 'R'\r
1578 jr nz,l081ch\r
1579 inc de\r
1580 set 4,b\r
0c4244e5 1581l081ch:\r
0716e834
L
1582 push bc\r
1583 call expr\r
1584 jp c,ERROR\r
1585 pop bc\r
1586 bit 0,b\r
1587 push bc\r
1588 push de\r
1589 push hl\r
1590 call nz,bp_clr\r
1591 pop hl\r
1592 call bp_get_freeslot\r
1593 pop de\r
1594 ld (ix+002h),l\r
1595 ld (ix+003h),h\r
1596 call bp_get_count\r
1597 ld (ix+004h),l\r
1598 ld (ix+005h),h\r
1599 call bp_get_condition\r
1600 ld (ix+006h),l\r
1601 ld (ix+007h),h\r
1602 call next_arg\r
1603 pop af\r
1604 ld (ix+000h),a\r
1605 and 00fh\r
1606 jr bp_enter\r
0c4244e5
L
1607\r
1608bp_get_freeslot:\r
0716e834
L
1609 ld b,BP_CNT\r
1610 ld ix,bp_tab\r
0c4244e5 1611l085ah:\r
0716e834
L
1612 ld a,(ix+000h)\r
1613 and 00fh\r
1614 ret z\r
1615 push bc\r
1616 ld bc,BP_SIZE\r
1617 add ix,bc\r
1618 pop bc\r
1619 djnz l085ah\r
1620 jp ERROR\r
0c4244e5
L
1621\r
1622bp_get_count:\r
0716e834
L
1623 call skipbl\r
1624 ld hl,1\r
1625 cp ':'\r
1626 ret nz\r
1627 inc de\r
1628 call expr\r
1629 jp c,ERROR\r
1630 ret\r
0c4244e5
L
1631\r
1632bp_get_condition:\r
0716e834
L
1633 call skipbl\r
1634 cp 'I'\r
1635 ld hl,0\r
1636 ret nz\r
1637 inc de\r
1638 call skipbl\r
1639 push de\r
1640 call expr\r
1641 jp c,ERROR\r
1642 ex de,hl\r
1643 pop de\r
1644 push de\r
1645 sbc hl,de\r
1646 ld b,h\r
1647 ld c,l\r
1648 ld hl,(expr_p1)\r
1649 push hl\r
1650 add hl,bc\r
1651 ld de,expr_bufe\r
1652 call cp_hl_de\r
1653 jp nc,ERROR\r
1654 pop hl\r
1655 ld (expr_p2),hl\r
1656 pop de\r
1657 ex de,hl\r
1658 ldir\r
1659 xor a\r
1660 ld (de),a\r
1661 inc de\r
1662 ex de,hl\r
1663 ld (expr_p1),hl\r
1664 ld hl,(expr_p2)\r
1665 ret\r
0c4244e5
L
1666\r
1667bpddtz:\r
0716e834
L
1668 ld (reg.l),hl\r
1669 pop hl\r
1670 dec hl\r
ac35765e 1671 ld (reg.pc),hl\r
0716e834
L
1672 ld (reg_sp),sp\r
1673 ld sp,reg.l\r
1674 push de\r
1675 push bc\r
1676 push af\r
1677 push ix\r
1678 push iy\r
1679 ld a,i\r
1680 call sub_0004h\r
1681 ld h,a\r
1682 ld l,000h\r
1683 push hl\r
1684 ld a,0f3h\r
1685 jp po,l08dfh\r
1686 ld a,0fbh\r
0c4244e5 1687l08dfh:\r
0716e834
L
1688 ld (reg.iff),a\r
1689 ex af,af'\r
1690 push af\r
1691 exx\r
1692 push bc\r
1693 push de\r
1694 push hl\r
1695 call sub_097ah\r
1696 ld a,(b_21e2_start)\r
1697 dec a\r
1698 jr z,l090bh\r
1699 call inchar\r
1700 jr c,l0902h\r
1701 call sub_0913h\r
1702 and a\r
1703 jp z,user_go\r
1704 and 083h\r
1705 jp z,l2151h\r
0c4244e5 1706l0902h:\r
0716e834
L
1707 call bp_clr_temporary\r
1708 call p_cpustat\r
1709 jp mainloop\r
0c4244e5
L
1710\r
1711l090bh:\r
0716e834
L
1712 ld (b_21e2_start),a\r
1713 ld c,007h\r
1714 jp l0a41h\r
0c4244e5
L
1715\r
1716sub_0913h:\r
0716e834
L
1717 ld a,080h\r
1718 ex af,af'\r
1719 sub a\r
1720 ld (l0941h),a\r
1721 ld b,BP_CNT\r
1722 ld ix,bp_tab\r
0c4244e5 1723l0920h:\r
0716e834
L
1724 ld a,(ix+000h)\r
1725 and 007h\r
1726 jr z,l0938h\r
1727 ld e,(ix+002h)\r
1728 ld d,(ix+003h)\r
ac35765e 1729 ld hl,(reg.pc)\r
0716e834
L
1730 call cp_hl_de\r
1731 push bc\r
1732 call z,sub_0942h\r
1733 pop bc\r
0c4244e5 1734l0938h:\r
0716e834
L
1735 ld de,BP_SIZE\r
1736 add ix,de\r
1737 djnz l0920h\r
1738 ex af,af'\r
1739 ret\r
0c4244e5 1740\r
0c4244e5 1741sub_0942h:\r
0716e834
L
1742 ex af,af'\r
1743 res 7,a\r
1744 ex af,af'\r
1745 ld e,(ix+006h)\r
1746 ld d,(ix+007h)\r
1747 ld a,d\r
1748 or e\r
1749 ld hl,0ffffh\r
1750 call nz,expr\r
1751 ld a,h\r
1752 or l\r
1753 jr z,l0969h\r
1754 ld e,(ix+004h)\r
1755 ld d,(ix+005h)\r
1756 dec de\r
1757 ld a,d\r
1758 or e\r
1759 jr z,l0974h\r
1760 ld (ix+004h),e\r
1761 ld (ix+005h),d\r
0c4244e5 1762l0969h:\r
0716e834
L
1763 bit 4,(ix+000h)\r
1764 ret z\r
1765 ld a,001h\r
1766 ld (l0941h),a\r
1767 ret\r
0c4244e5 1768l0974h:\r
0716e834
L
1769 ex af,af'\r
1770 or (ix+000h)\r
1771 ex af,af'\r
1772 ret\r
0c4244e5
L
1773\r
1774sub_097ah:\r
0716e834
L
1775 ld b,BP_CNT\r
1776 ld ix,bp_tab\r
0c4244e5 1777l0980h:\r
0716e834
L
1778 bit 5,(ix+000h)\r
1779 res 5,(ix+000h)\r
1780 jr z,l099ah\r
1781 ld l,(ix+002h)\r
1782 ld h,(ix+003h)\r
1783 ld a,(l0003h)\r
1784 cp (hl)\r
1785 jr nz,l099ah\r
1786 ld a,(ix+001h)\r
1787 ld (hl),a\r
0c4244e5 1788l099ah:\r
0716e834
L
1789 res 3,(ix+000h)\r
1790 ld de,BP_SIZE\r
1791 add ix,de\r
1792 djnz l0980h\r
1793 ret\r
0c4244e5
L
1794\r
1795sub_09a6h:\r
0716e834
L
1796 ld b,BP_CNT\r
1797 ld ix,bp_tab\r
0c4244e5 1798l09ach:\r
0716e834
L
1799 ld a,(ix+000h)\r
1800 and 003h\r
1801 jr z,l09c0h\r
1802 ld e,(ix+002h)\r
1803 ld d,(ix+003h)\r
ac35765e 1804 ld hl,(reg.pc)\r
0716e834
L
1805 call cp_hl_de\r
1806 ret z\r
0c4244e5 1807l09c0h:\r
0716e834
L
1808 ld de,BP_SIZE\r
1809 add ix,de\r
1810 djnz l09ach\r
1811 sub a\r
1812 inc a\r
1813 ret\r
0c4244e5
L
1814\r
1815sub_09cah:\r
0716e834
L
1816 call bp_get_freeslot\r
1817 ld (ix+004h),001h\r
1818 ld (ix+005h),000h\r
1819 ld (ix+002h),l\r
1820 ld (ix+003h),h\r
1821 ld (ix+006h),000h\r
1822 ld (ix+007h),000h\r
1823 ld a,(b_21e2_start)\r
1824 and a\r
1825 ld a,008h\r
1826 jr nz,l09edh\r
1827 ld a,004h\r
0c4244e5 1828l09edh:\r
0716e834
L
1829 ld (ix+000h),a\r
1830 ret\r
0c4244e5
L
1831\r
1832sub_09f1h:\r
0716e834
L
1833 ld b,BP_CNT\r
1834 ld ix,bp_tab\r
0c4244e5 1835l09f7h:\r
0716e834
L
1836 ld a,(ix+000h)\r
1837 and c\r
1838 jr z,l0a1dh\r
1839 set 5,(ix+000h)\r
1840 ld l,(ix+002h)\r
1841 ld h,(ix+003h)\r
1842 ld a,(hl)\r
1843 ld (ix+001h),a\r
1844 ld a,(l0003h)\r
1845 ld (hl),a\r
1846 and 038h\r
1847 ld h,000h\r
1848 ld l,a\r
1849 ld (hl),0c3h\r
1850 inc hl\r
1851 ld de,bpddtz\r
1852 ld (hl),e\r
1853 inc hl\r
1854 ld (hl),d\r
0c4244e5 1855l0a1dh:\r
0716e834
L
1856 ld de,BP_SIZE\r
1857 add ix,de\r
1858 djnz l09f7h\r
1859 ret\r
0c4244e5
L
1860\r
1861user_go:\r
0716e834
L
1862 sub a\r
1863 ld (b_21e2_start),a\r
1864 ld a,(l0941h)\r
1865 and a\r
1866 call nz,p_cpustat\r
1867 call sub_09a6h\r
1868 ld c,007h\r
1869 jr nz,l0a41h\r
1870 ld a,001h\r
1871 ld (b_21e2_start),a\r
1872 call sub_1ffeh\r
1873 ld c,008h\r
0c4244e5 1874l0a41h:\r
0716e834
L
1875 call sub_09f1h\r
1876 ld sp,reg.l2\r
1877 pop hl\r
1878 pop de\r
1879 pop bc\r
1880 pop af\r
1881 exx\r
1882 ex af,af'\r
1883 pop af\r
1884 ld i,a\r
1885 pop iy\r
1886 pop ix\r
1887 pop af\r
1888 pop bc\r
1889 pop de\r
1890 pop hl\r
1891 ld sp,(reg_sp)\r
1892 jp reg.iff\r
0c4244e5
L
1893\r
1894bp_clr_condition:\r
0716e834
L
1895 ld a,(ix+000h)\r
1896 and 003h\r
1897 ret nz\r
1898 ld e,(ix+006h)\r
1899 ld d,(ix+007h)\r
1900 ld a,d\r
1901 or e\r
1902 ret z\r
1903 push bc\r
1904 ld h,d\r
1905 ld l,e\r
1906 sub a\r
1907 ld (ix+006h),a\r
1908 ld (ix+007h),a\r
1909 ld bc,0ffffh\r
1910 cpir\r
0c4244e5 1911l0a7dh:\r
0716e834
L
1912 push de\r
1913 ld de,(expr_p1)\r
1914 call cp_hl_de\r
1915 pop de\r
1916 jr nc,l0a93h\r
1917 call sub_0a99h\r
0c4244e5 1918l0a8bh:\r
0716e834
L
1919 ld a,(hl)\r
1920 ldi\r
1921 and a\r
1922 jr nz,l0a8bh\r
1923 jr l0a7dh\r
0c4244e5 1924l0a93h:\r
0716e834
L
1925 ld (expr_p1),de\r
1926 pop bc\r
1927 ret\r
0c4244e5
L
1928\r
1929sub_0a99h:\r
0716e834
L
1930 ld iy,bp_tab\r
1931 push de\r
0c4244e5 1932l0a9eh:\r
0716e834
L
1933 ld e,(iy+006h)\r
1934 ld d,(iy+007h)\r
1935 call cp_hl_de\r
1936 jr z,l0ab0h\r
1937 ld de,BP_SIZE\r
1938 add iy,de\r
1939 jr l0a9eh\r
0c4244e5 1940l0ab0h:\r
0716e834
L
1941 pop de\r
1942 ld (iy+006h),e\r
1943 ld (iy+007h),d\r
1944 ret\r
0c4244e5 1945\r
0c4244e5 1946cmd_Y:\r
0716e834
L
1947 call get.decdigit\r
1948 jr c,l0bc3h\r
1949 inc de\r
1950 push af\r
1951 call assert_eol\r
1952 pop af\r
1953 call sub_0bdch\r
1954 jp l0c15h\r
0c4244e5 1955l0bc3h:\r
0716e834
L
1956 call assert_eol\r
1957 xor a\r
0c4244e5 1958l0bc7h:\r
0716e834
L
1959 push af\r
1960 call sub_0bdch\r
1961 call outbl4\r
1962 pop af\r
1963 inc a\r
1964 bit 0,a\r
1965 push af\r
1966 call z,crlf\r
1967 pop af\r
1968 cp YREG_CNT\r
1969 jr c,l0bc7h\r
1970 ret\r
0c4244e5
L
1971\r
1972sub_0bdch:\r
0716e834
L
1973 ld c,a\r
1974 ld b,0\r
1975 add a,'0'+080h\r
1976 ld de,msg_Y+1\r
1977 ld (de),a\r
1978 dec de\r
1979 ld hl,reg_Y\r
1980 add hl,bc\r
1981 add hl,bc\r
1982 ex de,hl\r
1983 ld c,003h\r
1984 jp l0c33h\r
0c4244e5
L
1985\r
1986cmd_X:\r
0716e834
L
1987 call skipbl\r
1988 call sub_0caeh\r
1989 jp nc,p_cpustat0\r
1990 call assert_eol\r
1991 ld a,b\r
1992 cp 01eh\r
1993 jr z,l0c5fh\r
1994 cp 01fh\r
1995 jr z,l0c4fh\r
1996 cp 01dh\r
1997 jp z,ERROR\r
1998 ex de,hl\r
1999 ld hl,b_0cc3_start\r
2000 call sel_dc_string\r
0c4244e5 2001l0c12h:\r
0716e834 2002 call l0c33h\r
0c4244e5 2003l0c15h:\r
0716e834
L
2004 call outbl\r
2005 push de\r
2006 push bc\r
2007 call get_line\r
2008 call skipbl\r
2009 jr z,l0c30h\r
2010 call sub_0363h\r
2011 ld b,h\r
2012 ld c,l\r
2013 pop af\r
2014 pop hl\r
2015 ld (hl),c\r
2016 bit 0,a\r
2017 ret z\r
2018 inc hl\r
2019 ld (hl),b\r
2020 ret\r
0c4244e5 2021l0c30h:\r
0716e834
L
2022 pop af\r
2023 pop hl\r
2024 ret\r
d1f2492e 2025\r
0c4244e5 2026l0c33h:\r
0716e834
L
2027 ld b,c\r
2028 call pstr\r
2029 ld a,'='\r
2030 call outchar\r
2031 ld a,(de)\r
2032 bit 0,b\r
2033 jp z,out_hex\r
2034 ld l,a\r
2035 inc de\r
2036 ld a,(de)\r
2037 dec de\r
2038 ld h,a\r
2039 bit 1,b\r
2040 jp z,out_hl\r
2041 jp out.hl.@\r
0c4244e5
L
2042\r
2043l0c4fh:\r
0716e834
L
2044 call p_f\r
2045 ld a,0f3h\r
2046 ld (reg.iff),a\r
2047 scf\r
2048 call sub_0c6ah\r
2049 ld (reg.f),a\r
2050 ret\r
0c4244e5 2051l0c5fh:\r
0716e834
L
2052 call p_f2\r
2053 and a\r
2054 call sub_0c6ah\r
2055 ld (reg.f2),a\r
2056 ret\r
0c4244e5 2057sub_0c6ah:\r
0716e834
L
2058 ex af,af'\r
2059 ld b,000h\r
2060 call outbl\r
2061 call assert_eol\r
2062 call get_line\r
0c4244e5 2063l0c76h:\r
0716e834
L
2064 call skipbl\r
2065 ld a,b\r
2066 ret z\r
2067 push bc\r
2068 ld hl,b_0ca4_start\r
2069 call lookupch\r
2070 jp nc,ERROR\r
2071 ld a,b\r
2072 cp 008h\r
2073 jr z,l0c97h\r
2074 pop bc\r
2075 rlca\r
2076 rlca\r
2077 rlca\r
2078 add a,0c0h\r
2079 ld (l0c94h),a\r
2080 defb 0cbh\r
0c4244e5 2081l0c94h:\r
0716e834
L
2082 defb 0c0h\r
2083 jr l0c76h\r
0c4244e5 2084l0c97h:\r
0716e834
L
2085 ex af,af'\r
2086 jp nc,ERROR\r
2087 ex af,af'\r
2088 ld a,0fbh\r
2089 ld (reg.iff),a\r
2090 pop bc\r
2091 jr l0c76h\r
0c4244e5
L
2092\r
2093b_0ca4_start:\r
2094 db 'CNV H ZSE',0\r
2095\r
2096sub_0caeh:\r
0716e834
L
2097 call sub_0303h\r
2098 ret nc\r
2099 ld a,b\r
2100 add a,b\r
2101 add a,b\r
2102 ld hl,b_0cfa_start\r
2103 call add_hl_a\r
2104 ld c,(hl)\r
2105 inc hl\r
2106 ld a,(hl)\r
2107 inc hl\r
2108 ld h,(hl)\r
2109 ld l,a\r
2110 scf\r
2111 ret\r
0c4244e5
L
2112\r
2113b_0cc3_start:\r
2114 DC 'BC'''\r
2115 DC 'DE'''\r
2116 DC 'HL'''\r
2117 DC 'BC'\r
2118 DC 'DE'\r
2119 DC 'HL'\r
2120 DC 'A'''\r
2121 DC 'B'''\r
2122 DC 'C'''\r
2123 DC 'D'''\r
2124 DC 'E'''\r
2125 DC 'H'''\r
2126 DC 'L'''\r
2127 DC 'A'\r
2128 DC 'B'\r
2129 DC 'C'\r
2130 DC 'D'\r
2131 DC 'E'\r
2132 DC 'H'\r
2133 DC 'L'\r
2134 DC 'IX'\r
2135 DC 'IY'\r
2136 DC 'SP'\r
2137 DC 'PC'\r
2138 DC 'X'\r
2139 DC 'Y'\r
2140 DC 'S'\r
2141 DC 'P'\r
2142 DC 'I'\r
2143 DC 'IP'\r
2144 DC 'F'''\r
2145 DC 'F'\r
2146 DB 0\r
2147\r
2148b_0cfa_start:\r
0716e834
L
2149 db 003h\r
2150 dw reg.c2\r
2151 db 003h\r
2152 dw reg.e2\r
2153 db 003h\r
2154 dw reg.l2\r
2155 db 003h\r
2156 dw reg.c\r
2157 db 003h\r
2158 dw reg.e\r
2159 db 003h\r
2160 dw reg.l\r
2161 db 000h\r
2162 dw reg.a2\r
2163 db 000h\r
2164 dw reg.b2\r
2165 db 000h\r
2166 dw reg.c2\r
2167 db 000h\r
2168 dw reg.d2\r
2169 db 000h\r
2170 dw reg.e2\r
2171 db 000h\r
2172 dw reg.h2\r
2173 db 000h\r
2174 dw reg.l2\r
2175 db 000h\r
2176 dw reg.a\r
2177 db 000h\r
2178 dw reg.b\r
2179 db 000h\r
2180 dw reg.c\r
2181 db 000h\r
2182 dw reg.d\r
2183 db 000h\r
2184 dw reg.e\r
2185 db 000h\r
2186 dw reg.h\r
2187 db 000h\r
2188 dw reg.l\r
2189 db 003h\r
2190 dw reg.ix\r
2191 db 003h\r
2192 dw reg.iy\r
2193 db 003h\r
2194 dw reg_sp\r
2195 db 003h\r
ac35765e 2196 dw reg.pc\r
0716e834
L
2197 db 003h\r
2198 dw reg.ix\r
2199 db 003h\r
2200 dw reg.iy\r
2201 db 003h\r
2202 dw reg_sp\r
2203 db 003h\r
ac35765e 2204 dw reg.pc\r
0716e834
L
2205 db 000h\r
2206 dw reg.i\r
2207 db 003h\r
2208 dw l004eh\r
2209 db 000h\r
2210 dw reg.f2\r
2211 db 000h\r
2212 dw reg.f\r
0c4244e5
L
2213\r
2214cmd_S:\r
0716e834
L
2215 ld hl,(last_S)\r
2216 call get_lastarg_def\r
0c4244e5 2217l0d60h:\r
0716e834
L
2218 ld (last_S),hl\r
2219 call out.hl.@\r
2220 call outbl\r
2221 ld a,(hl)\r
2222 call out_hex\r
2223 call outbl2\r
2224 call get_line\r
2225 call skipbl\r
2226 inc hl\r
2227 jr z,l0d60h\r
2228 dec hl\r
2229 inc de\r
2230 cp '.'\r
2231 jp z,assert_eol\r
2232 cp '-'\r
2233 jr nz,l0d8ah\r
2234 ld a,(de)\r
2235 or a\r
2236 dec hl\r
2237 jr z,l0d60h\r
2238 inc hl\r
0c4244e5 2239l0d8ah:\r
0716e834
L
2240 dec de\r
2241 call sub_0ef8h\r
2242 jr l0d60h\r
0c4244e5 2243\r
0c4244e5 2244cmd_@:\r
0716e834 2245 call assert_eol\r
ac35765e
L
2246 ld hl,msg_@\r
2247 ld de,var.@\r
0716e834
L
2248 ld c,001h\r
2249 jp l0c12h\r
0c4244e5 2250\r
ac35765e 2251msg_@:\r
0716e834 2252 dc '@'\r
0c4244e5 2253\r
0c4244e5 2254cmd_I:\r
0716e834
L
2255 ld hl,cmd_I\r
2256 ld (cmd_rpt),hl\r
2257 ld hl,(last_I)\r
2258 call get_lastarg_def\r
2259 ld (last_I),hl\r
2260 ld b,h\r
2261 ld c,l\r
2262 in a,(c)\r
2263 push af\r
2264 call out_hex\r
2265 call outbl4\r
2266 pop af\r
2267 call out.bin.b\r
2268 jp crlf\r
0c4244e5 2269\r
0c4244e5 2270cmd_O:\r
0716e834
L
2271 ld hl,cmd_O\r
2272 ld (cmd_rpt),hl\r
2273 ld hl,(last_O_val)\r
2274 call get_arg_def\r
2275 ld a,l\r
2276 ld (last_O_val),a\r
2277 push af\r
2278 call next_arg\r
2279 ld hl,(last_O_addr)\r
2280 call get_lastarg_def\r
2281 ld (last_O_addr),hl\r
2282 ld b,h\r
2283 ld c,l\r
2284 pop af\r
2285 out (c),a\r
2286 ret\r
0c4244e5
L
2287\r
2288cmd_V:\r
0716e834 2289 call sub_034eh\r
0c4244e5 2290l0dedh:\r
0716e834
L
2291 push bc\r
2292 ld a,(de)\r
2293 ld b,(hl)\r
2294 cp b\r
2295 jr z,l0e10h\r
2296 ld c,a\r
2297 call out.hl.@\r
2298 call outbl\r
2299 ld a,b\r
2300 call out_hex\r
2301 call outbl2\r
2302 ld a,c\r
2303 call out_hex\r
2304 call outbl\r
2305 ex de,hl\r
2306 call out.hl.@\r
2307 ex de,hl\r
2308 call crlf\r
0c4244e5 2309l0e10h:\r
0716e834
L
2310 pop bc\r
2311 inc hl\r
2312 inc de\r
2313 dec bc\r
2314 ld a,b\r
2315 or c\r
2316 jr nz,l0dedh\r
2317 ret\r
0c4244e5
L
2318\r
2319cmd_M:\r
0716e834
L
2320 ld a,(de)\r
2321 cp 'V'\r
2322 jr nz,l0e1fh\r
2323 inc de\r
0c4244e5 2324l0e1fh:\r
0716e834
L
2325 push af\r
2326 call sub_034eh\r
2327 push hl\r
2328 push de\r
2329 push bc\r
2330 call cp_hl_de\r
3f9577cd 2331 jr nc,cmdm_up\r
0716e834
L
2332 add hl,bc\r
2333 ex de,hl\r
2334 add hl,bc\r
2335 ex de,hl\r
2336 dec hl\r
2337 dec de\r
2338 lddr\r
3f9577cd
L
2339 db 01h ;swallow ldir instruction (ld bc,...)\r
2340cmdm_up:\r
2341 ldir\r
0716e834
L
2342 pop bc\r
2343 pop de\r
2344 pop hl\r
2345 pop af\r
2346 jr z,l0dedh\r
2347 ret\r
0c4244e5
L
2348\r
2349cmd_H:\r
3f9577cd
L
2350 ld a,(de)\r
2351 cp 'S'\r
2352 jr z,p_symbols\r
2353\r
0716e834
L
2354 call expr\r
2355 jp c,p_max_high0\r
2356 call next_arg\r
2357 push hl\r
2358 call expr\r
2359 push af\r
2360 call assert_eol\r
2361 pop af\r
2362 ex de,hl\r
2363 pop hl\r
2364 jr c,l0e5eh\r
2365 push hl\r
2366 push de\r
2367 add hl,de\r
2368 call l0e5eh\r
2369 pop de\r
2370 pop hl\r
2371 and a\r
2372 sbc hl,de\r
0c4244e5 2373l0e5eh:\r
0716e834
L
2374 call out_hl\r
2375 call outbl2\r
2376 call out_hl_neg\r
2377 call outbl4\r
2378 call out.hl.dec\r
2379 call outbl2\r
2380 call out_hl_dec_neg\r
2381 call outbl4\r
2382 call out.bin.w\r
3a4deef9 2383 call outbl\r
0716e834
L
2384 ld a,l\r
2385 call out.ascii\r
3a4deef9
L
2386 call outbl\r
2387 call p_symbol\r
0716e834 2388 jp crlf\r
0c4244e5 2389\r
3f9577cd
L
2390p_symbols:\r
2391 inc de\r
2392 call assert_eol\r
2393 ld hl,ddtz_base+2\r
2394psym_l:\r
2395 ld d,(hl)\r
2396 dec hl\r
2397 ld e,(hl)\r
2398 dec hl\r
2399 ld b,(hl)\r
2400 dec hl\r
2401 ld a,b\r
3a4deef9
L
2402 cp 0c3h\r
2403 ret z\r
3f9577cd
L
2404\r
2405 ex de,hl\r
2406 call out_hl\r
2407 ex de,hl\r
2408 call outbl\r
2409psymch_l:\r
2410 ld a,(hl)\r
2411 dec hl\r
2412 call outchar\r
2413 djnz psymch_l\r
2414 call crlf\r
2415 jr psym_l\r
2416\r
3a4deef9
L
2417\r
2418p_symbol:\r
2419 if 0\r
2420 ld a,(dash_flag)\r
2421 or a\r
2422 ret nz\r
2423 endif\r
2424 call sym_getname\r
2425 ret z\r
2426 ld a,'.'\r
2427 call outchar\r
3f9577cd
L
2428p_symstr:\r
2429 ld b,(hl)\r
2430pss_l:\r
2431 dec hl\r
2432 ld a,(hl)\r
2433 call outchar\r
2434 djnz pss_l\r
2435 ret\r
2436\r
3f9577cd
L
2437p_label:\r
2438 if 0\r
2439 ld a,(dash_flag)\r
2440 or a\r
2441 ret nz\r
2442 endif\r
2443 push hl\r
2444 call sym_getname\r
2445 jr z,pl_e\r
2446 call p_symstr\r
2447 ld a,':'\r
2448 call outchar\r
2449 call crlf\r
2450pl_e:\r
2451 pop hl\r
2452 ret\r
2453\r
2454sym_getname:\r
2455 push de\r
2456 push hl\r
2457 ld hl,ddtz_base+2\r
2458sgn_l:\r
2459 ld d,(hl)\r
2460 dec hl\r
2461 ld e,(hl)\r
2462 dec hl\r
2463 ld a,(hl)\r
2464 cp 0c3h\r
2465 jr z,sgn_e\r
2466\r
2467 ex (sp),hl\r
2468 call cp_hl_de\r
2469 jr z,sgn_e\r
2470 ex (sp),hl\r
2471 call sub_hl_a1\r
2472 jr sgn_l\r
2473sgn_e:\r
2474 sub 0c3h\r
2475 pop hl\r
2476 pop de\r
2477 ret\r
2478\r
2479sub_hl_a1:\r
2480 dec hl\r
2481sub_hl_a:\r
2482 push bc\r
2483 ld c,a\r
2484 ld b,0\r
2485 or a\r
2486 sbc hl,bc\r
2487 pop bc\r
2488 ret\r
2489\r
0c4244e5 2490cmd_Q:\r
0716e834
L
2491 ld a,(de)\r
2492 sub 'J'\r
2493 ld (cmd_Q_jopt),a\r
2494 jr nz,l0e8dh\r
2495 inc de\r
0c4244e5 2496l0e8dh:\r
0716e834
L
2497 call get_arg_range\r
2498 push bc\r
2499 push hl\r
2500 call sub_0ee6h\r
2501 pop hl\r
0c4244e5 2502l0e96h:\r
0716e834
L
2503 call sub_0ed7h\r
2504 jr nz,l0eb0h\r
2505 push bc\r
2506 push hl\r
2507 ld a,(cmd_Q_jopt)\r
2508 or a\r
2509 jr nz,l0ea7h\r
2510 ld bc,-8\r
2511 add hl,bc\r
0c4244e5 2512l0ea7h:\r
0716e834
L
2513 ld bc,16\r
2514 and a\r
2515 call sub_0f58h\r
2516 pop hl\r
2517 pop bc\r
0c4244e5 2518l0eb0h:\r
0716e834
L
2519 inc hl\r
2520 ex (sp),hl\r
2521 dec hl\r
2522 ld a,h\r
2523 or l\r
2524 ex (sp),hl\r
2525 jr nz,l0e96h\r
2526 pop bc\r
2527 ret\r
0c4244e5
L
2528\r
2529cmd_Z:\r
0716e834
L
2530 call get_arg_range\r
2531 push bc\r
2532 push hl\r
2533 call sub_0ee6h\r
2534 ld a,b\r
2535 pop hl\r
2536 pop bc\r
2537 push hl\r
2538 ex de,hl\r
0c4244e5 2539l0ec7h:\r
0716e834
L
2540 ldi\r
2541 jp po,l0ed3h\r
2542 dec a\r
2543 jr nz,l0ec7h\r
2544 pop hl\r
2545 ldir\r
2546 ret\r
0c4244e5 2547l0ed3h:\r
0716e834
L
2548 pop hl\r
2549 ret\r
0c4244e5 2550\r
0c4244e5 2551sub_0ed7h:\r
0716e834 2552 push hl\r
0c4244e5 2553 push de\r
0716e834 2554 push bc\r
0c4244e5 2555l0edah:\r
0716e834
L
2556 ld a,(de)\r
2557 cp (hl)\r
2558 jr nz,l0ee2h\r
2559 inc de\r
2560 inc hl\r
2561 djnz l0edah\r
0c4244e5 2562l0ee2h:\r
0716e834
L
2563 pop bc\r
2564 pop de\r
2565 pop hl\r
2566 ret\r
0c4244e5
L
2567\r
2568sub_0ee6h:\r
0716e834
L
2569 ld hl,conbuf+1\r
2570 call sub_0ef7h\r
2571 ld de,conbuf+1\r
2572 and a\r
2573 sbc hl,de\r
2574 ld b,l\r
2575 ret nz\r
2576 jp ERROR\r
0c4244e5
L
2577\r
2578sub_0ef7h:\r
0716e834 2579 db 0e6h ; and 037h (clear carry)\r
0c4244e5 2580sub_0ef8h:\r
0716e834 2581 scf\r
0c4244e5 2582l0ef9h:\r
0716e834
L
2583 push af\r
2584 call next_arg\r
2585 cp 'W'\r
2586 jr nz,l0f0eh\r
2587 inc de\r
2588 push hl\r
2589 call sub_035dh\r
2590 ex de,hl\r
2591 ex (sp),hl\r
2592 ld (hl),e\r
2593 inc hl\r
2594 ld a,d\r
2595 pop de\r
2596 jr l0f1ah\r
0c4244e5 2597l0f0eh:\r
0716e834
L
2598 cp ''''\r
2599 jr z,l0f1eh\r
2600 push hl\r
2601 call expr\r
2602 ld a,l\r
2603 pop hl\r
2604 jr c,l0f42h\r
0c4244e5 2605l0f1ah:\r
0716e834
L
2606 ld (hl),a\r
2607 inc hl\r
2608 jr l0f3ah\r
0c4244e5 2609l0f1eh:\r
0716e834
L
2610 inc de\r
2611 ld a,(de)\r
2612 cp ''''\r
2613 jr z,l0f2bh\r
2614 or a\r
2615 jr z,l0f42h\r
0c4244e5 2616l0f27h:\r
0716e834
L
2617 ld (hl),a\r
2618 inc hl\r
2619 jr l0f1eh\r
0c4244e5 2620l0f2bh:\r
0716e834
L
2621 inc de\r
2622 ld a,(de)\r
2623 cp ''''\r
2624 jr z,l0f27h\r
2625 cp '.'\r
2626 jr nz,l0f3ah\r
2627 inc de\r
2628 dec hl\r
2629 set 7,(hl)\r
2630 inc hl\r
0c4244e5 2631l0f3ah:\r
0716e834
L
2632 pop af\r
2633 jr nc,l0ef9h\r
2634 ld (last_S),hl\r
2635 jr l0ef9h\r
0c4244e5 2636l0f42h:\r
0716e834
L
2637 pop af\r
2638 ret nc\r
2639 ld (last_S),hl\r
2640 ret\r
0c4244e5
L
2641\r
2642cmd_D:\r
0716e834
L
2643 ld hl,cmd_D\r
2644 ld (cmd_rpt),hl\r
2645 ld hl,(last_D)\r
2646 ld bc,128\r
2647 call sub_0377h\r
2648 scf\r
0c4244e5 2649sub_0f58h:\r
0716e834
L
2650 push bc\r
2651 push de\r
2652 push hl\r
2653 ex af,af'\r
0c4244e5 2654l0f5ch:\r
0716e834
L
2655 call out.hl.@\r
2656 call z,outbl2\r
2657 call outbl\r
2658 ld de,0\r
0c4244e5 2659l0f68h:\r
0716e834
L
2660 ld a,(hl)\r
2661 inc hl\r
2662 call out_hex\r
2663 call outbl\r
2664 dec bc\r
2665 inc e\r
2666 ld a,e\r
2667 cp 010h\r
2668 jr z,l0f80h\r
2669 and 003h\r
2670 call z,outbl\r
2671 ld a,b\r
2672 or c\r
2673 jr nz,l0f68h\r
0c4244e5 2674l0f80h:\r
0716e834
L
2675 call outbl\r
2676 and a\r
2677 sbc hl,de\r
0c4244e5 2678l0f86h:\r
0716e834
L
2679 ld a,(hl)\r
2680 call sub_0fa3h\r
2681 call outchar\r
2682 inc hl\r
2683 dec e\r
2684 jr nz,l0f86h\r
2685 ex af,af'\r
2686 jr nc,l0f97h\r
2687 ld (last_D),hl\r
0c4244e5 2688l0f97h:\r
0716e834
L
2689 ex af,af'\r
2690 call crlf\r
2691 ld a,b\r
2692 or c\r
2693 jr nz,l0f5ch\r
2694 pop hl\r
2695 pop de\r
2696 pop bc\r
2697 ret\r
0c4244e5
L
2698\r
2699sub_0fa3h:\r
0716e834
L
2700 and 07fh\r
2701 cp 07fh\r
2702 jr z,l0fach\r
2703 cp ' '\r
2704 ret nc\r
0c4244e5 2705l0fach:\r
0716e834
L
2706 ld a,'.'\r
2707 ret\r
0c4244e5
L
2708\r
2709cmd_F:\r
c788b3b7
L
2710 push de\r
2711 ld hl,DMA_BUF+1\r
2712 ld (hl),' '\r
2713 inc hl\r
0c4244e5 2714l0fb6h:\r
c788b3b7
L
2715 ld a,(de)\r
2716 ld (hl),a\r
2717 inc hl\r
2718 inc de\r
2719 and a\r
2720 jr nz,l0fb6h\r
2721 ld a,l\r
2722 sub DMA_BUF+2\r
2723 ld (DMA_BUF),a\r
2724 pop hl\r
2725 ld de,dfcb1\r
2726 call parse_filename\r
2727 ld de,dfcb2\r
2728 call parse_filename\r
2729 ;fall thru\r
2730\r
2731cpy_fcb2:\r
2732 ld hl,dfcb2\r
2733 ld de,fcbsym\r
2734 ld bc,16\r
2735 ldir\r
2736 ret\r
0c4244e5
L
2737\r
2738parse_filename:\r
0716e834
L
2739 call sub_102ch\r
2740 push de\r
2741 push bc\r
2742 ld b,(hl)\r
2743 inc hl\r
2744 ld a,(hl)\r
2745 cp ':'\r
2746 jr nz,l0fe1h\r
2747 inc hl\r
2748 ld a,b\r
2749 sub 040h\r
2750 and 01fh\r
2751 jr l0fe3h\r
0c4244e5 2752l0fe1h:\r
0716e834
L
2753 dec hl\r
2754 xor a\r
0c4244e5 2755l0fe3h:\r
0716e834
L
2756 ld (de),a\r
2757 inc de\r
2758 ld b,8\r
2759 call sub_0ff2h\r
2760 ld b,3\r
2761 call sub_0ff2h\r
2762 pop bc\r
2763 pop de\r
2764 ret\r
0c4244e5
L
2765\r
2766sub_0ff2h:\r
0716e834
L
2767 call sub_1012h\r
2768 jr z,l0ffeh\r
2769 inc hl\r
2770 ld (de),a\r
2771 inc de\r
2772 djnz sub_0ff2h\r
2773 jr l1003h\r
0c4244e5 2774l0ffeh:\r
0716e834 2775 ld a,c\r
0c4244e5 2776l0fffh:\r
0716e834
L
2777 ld (de),a\r
2778 inc de\r
2779 djnz l0fffh\r
0c4244e5 2780l1003h:\r
0716e834
L
2781 call sub_1012h\r
2782 inc hl\r
2783 jr nz,l1003h\r
2784 cp '*'\r
2785 jr z,l1003h\r
2786 cp '.'\r
2787 ret z\r
2788 dec hl\r
2789 ret\r
0c4244e5
L
2790\r
2791sub_1012h:\r
0716e834
L
2792 ld a,(hl)\r
2793 ld c,' '\r
2794 and 01fh\r
2795 ret z\r
2796 ld a,(hl)\r
2797 cp ' '\r
2798 ret z\r
2799 call sub_1043h\r
2800 ret z\r
2801 cp '/'\r
2802 ret z\r
2803 cp '.'\r
2804 ret z\r
2805 ld c,'?'\r
2806 cp '*'\r
2807 ret\r
0c4244e5
L
2808\r
2809l102bh:\r
0716e834 2810 inc hl\r
0c4244e5 2811sub_102ch:\r
0716e834
L
2812 ld a,(hl)\r
2813 cp '/'\r
2814 jr z,l103bh\r
2815 call sub_1043h\r
2816 jr z,l102bh\r
0c4244e5 2817l1036h:\r
0716e834
L
2818 cp ' '\r
2819 jr z,l102bh\r
2820 ret\r
0c4244e5
L
2821\r
2822l103bh:\r
0716e834
L
2823 ld a,(hl)\r
2824 cp ' '+1\r
2825 jr c,l1036h\r
2826 inc hl\r
2827 jr l103bh\r
0c4244e5
L
2828\r
2829sub_1043h:\r
0716e834
L
2830 cp '='\r
2831 ret z\r
2832 cp '_'\r
2833 ret z\r
2834 cp ','\r
2835 ret\r
0c4244e5 2836\r
c788b3b7
L
2837setup_fcb:\r
2838 push de\r
2839 ld hl,12\r
2840 add hl,de\r
2841 xor a\r
2842 ld b,21\r
0c4244e5 2843l1052h:\r
c788b3b7
L
2844 ld (hl),a\r
2845 inc hl\r
2846 djnz l1052h\r
2847 ld de,DMA_BUF\r
2848 ld c,BDOS_SETDMA\r
2849 call ddtz_bdos\r
2850 pop de\r
2851 ret\r
0c4244e5 2852\r
c788b3b7
L
2853file_open:\r
2854 ld (cur_fcb),de\r
0716e834
L
2855 call setup_fcb\r
2856 ld c,BDOS_OPEN\r
2857 call ddtz_bdos\r
2858 inc a\r
2859 jp z,ERROR\r
2860 ld a,080h\r
2861 ld (cmdR_rindex),a\r
c788b3b7 2862 ret\r
0c4244e5
L
2863\r
2864read_byte:\r
0716e834
L
2865 ld a,(cmdR_rindex)\r
2866 cp 080h\r
2867 jr nz,l1111h\r
2868 call read_sector\r
2869 ret z\r
2870 sub a\r
0c4244e5 2871l1111h:\r
0716e834
L
2872 inc a\r
2873 ld (cmdR_rindex),a\r
2874 push hl\r
2875 add a,07fh\r
2876 ld l,a\r
2877 ld h,000h\r
2878 ld a,(hl)\r
2879 pop hl\r
2880 cp 01ah\r
2881 ret\r
0c4244e5 2882\r
0c4244e5 2883read_sector:\r
0716e834
L
2884 push hl\r
2885 push de\r
2886 push bc\r
2887 ld de,(cur_fcb)\r
2888 ld c,BDOS_READ\r
2889 call ddtz_bdos\r
2890 dec a\r
2891 jr z,l1132h\r
2892 jp p,ERROR\r
0c4244e5 2893l1132h:\r
0716e834
L
2894 pop bc\r
2895 pop de\r
2896 pop hl\r
2897 ret\r
0c4244e5
L
2898\r
2899cmdR_storebyte:\r
0716e834
L
2900 push af\r
2901 push de\r
2902 ld de,TPA\r
2903 call cp_hl_de\r
2904 jp c,ERROR\r
2905 ld de,(BDOS+1)\r
2906 call cp_hl_de\r
2907 jp nc,ERROR\r
2908 ld de,(high_load)\r
2909 call cp_hl_de\r
2910 jr c,l1157h\r
2911 ld (high_load),hl\r
0c4244e5 2912l1157h:\r
0716e834
L
2913 ld de,(max_load)\r
2914 call cp_hl_de\r
2915 jr c,l1163h\r
2916 ld (max_load),hl\r
0c4244e5 2917l1163h:\r
0716e834
L
2918 pop de\r
2919 pop af\r
2920 ld (hl),a\r
2921 ret\r
0c4244e5
L
2922\r
2923strncmp:\r
0716e834
L
2924 ld a,(de)\r
2925 cp (hl)\r
2926 inc de\r
2927 inc hl\r
2928 ret nz\r
2929 djnz strncmp\r
2930 ret\r
0c4244e5 2931\r
c788b3b7
L
2932str_hex:\r
2933 db 'HEX'\r
2934\r
2935read_hexchar:\r
2936 call read_hexdigit\r
2937 rlca\r
2938 rlca\r
2939 rlca\r
2940 rlca\r
2941 ld d,a\r
2942 call read_hexdigit\r
2943 add a,d\r
2944 ld d,a\r
2945 add a,c\r
2946 ld c,a\r
2947 ld a,d\r
2948 ret\r
2949\r
2950read_hexdigit:\r
2951 call read_byte\r
2952 jr z,error8\r
2953hex_digit_v:\r
2954 call hex_digit\r
2955 ret nc\r
2956error8:\r
2957 jp ERROR\r
2958\r
2959read_hexbyte:\r
2960 call read_byte\r
2961read_hexbyte0:\r
2962 push bc\r
2963 call hex_digit_v\r
2964 rlca\r
2965 rlca\r
2966 rlca\r
2967 rlca\r
2968 ld c,a\r
2969 call read_byte\r
2970 call hex_digit_v\r
2971 or c\r
2972 pop bc\r
2973 ret\r
2974\r
2975cmd_R:\r
0716e834
L
2976 ld hl,0\r
2977 call get_lastarg_def\r
c788b3b7
L
2978read_file:\r
2979 ld de,dfcb1+1\r
2980 ld a,(de)\r
2981 cp '?'\r
2982 jr z,read_symfile\r
2983 dec de\r
0716e834
L
2984 push hl\r
2985 ld hl,0\r
2986 ld (high_load),hl\r
c788b3b7 2987 call file_open\r
0716e834
L
2988 ld hl,dfcb1+9\r
2989 ld de,str_hex\r
2990 ld b,3\r
2991 call strncmp\r
2992 pop hl\r
2993 jr z,read_hexfile\r
2994 ld de,TPA\r
2995 add hl,de\r
2996 push hl\r
c788b3b7 2997l108eh:\r
0716e834
L
2998 call read_sector\r
2999 pop hl\r
3000 jr z,read_symfile\r
3001 ld de,DMA_BUF\r
3002 ld b,080h\r
c788b3b7 3003l109ah:\r
0716e834
L
3004 ld a,(de)\r
3005 call cmdR_storebyte\r
3006 inc de\r
3007 inc hl\r
3008 djnz l109ah\r
3009 push hl\r
3010 jr l108eh\r
c788b3b7
L
3011\r
3012read_hexfile:\r
0716e834 3013 push hl\r
c788b3b7 3014l10aeh:\r
0716e834
L
3015 call read_byte\r
3016 jr z,rdhex_done\r
3017 cp ':'\r
3018 jr nz,l10aeh\r
3019 ld c,0\r
3020 call read_hexchar\r
3021 ld b,a\r
3022 call read_hexchar\r
3023 ld h,a\r
3024 call read_hexchar\r
3025 ld l,a\r
3026 ld a,b\r
3027 and a\r
3028 jr z,rdhex_done\r
3029 call read_hexchar\r
c788b3b7 3030l10cch:\r
0716e834
L
3031 call read_hexchar\r
3032 pop de\r
3033 push de\r
3034 push hl\r
3035 add hl,de\r
3036 call cmdR_storebyte\r
3037 pop hl\r
3038 inc hl\r
3039 djnz l10cch\r
3040 call read_hexchar\r
3041 ld a,c\r
3042 and a\r
3043 jr nz,error9\r
3044 jr l10aeh\r
c788b3b7 3045rdhex_done:\r
0716e834
L
3046 pop hl\r
3047 jr read_symfile\r
c788b3b7
L
3048\r
3049read_symfile:\r
3050 ld de,fcbsym+1\r
3051 ld a,(de)\r
3052 cp ' '\r
3053 jp z,p_max_high\r
3054\r
d1f2492e
L
3055 call pstr_inl\r
3056 db 'SYMBOLS',CR,LF+80h\r
c788b3b7
L
3057\r
3058 dec de\r
3059 call file_open\r
3060;------------------------------------------------------------------------\r
3061rs_1:\r
3062 call read_byte\r
3063rs_2:\r
3064 cp 1ah\r
3065 jr z,p_max_high\r
3066 cp '!'\r
3067 jr c,rs_1\r
3068 call read_hexbyte0\r
3069 ld d,a\r
3070 call read_hexbyte ; symval\r
3071 ld e,a\r
3072 push de ; symval\r
3073 call read_byte\r
3074 cp ' '\r
3075 jr z,rs_4\r
3076 pop hl ; discard symval\r
3077rs_3: call read_byte\r
3078 cp ' '\r
3079 jr c,rs_2\r
3080 jr rs_3\r
3081;\r
3082rs_4: ld hl,(BDOS+1) ;\r
3083 ld e,0 ; setup symlen\r
3084rs_5: dec hl ;\r
3085 call read_byte ;\r
3086 cp TAB ;\r
3087 jr z,rs_6 ;\r
3088 cp CR ;\r
3089 jr z,rs_6 ;\r
3090 cp '!' ;\r
3091 jr c,error9 ;\r
3092 ld (hl),a ;\r
3093 inc e ; symlen++\r
3094 ld a,e ;\r
3095 cp 10h+1 ;\r
3096 jr c,rs_5 ;\r
3097error9:\r
3098 jp ERROR ;\r
3099;\r
3100rs_6: push de ; symlen\r
3101 push hl ;\r
3102 ex de,hl ;\r
3103 ld hl,(BDOS+1) ;\r
3104 inc hl ;\r
3105 ld e,(hl) ;\r
3106 inc hl ;\r
3107 ld d,(hl) ;\r
3108 pop hl ;\r
3109 ld (hl),d ;\r
3110 dec hl ;\r
3111 ld (hl),e ;\r
3112 dec hl ;\r
3113 ld (hl),0c3h ;\r
3114\r
3115 ld de,(max_load) ;\r
3116 call cp_hl_de ;\r
0716e834 3117 jr c,error9 ;\r
c788b3b7
L
3118\r
3119 ld de,(reg_sp) ;\r
3120 call cp_hl_de ;\r
3121 jr nc,rs_61 ;\r
3122 ld (reg_sp),hl ;\r
3123rs_61:\r
3124\r
3125 ld de,(BDOS+1) ;\r
3126 ld (BDOS+1),hl ;\r
3127 ex de,hl ;\r
3128 pop de ;\r
3129 ld (hl),e ; symlen\r
3130 inc hl ;\r
3131 pop de ; symval\r
3132 ld (hl),e ;\r
3133 inc hl ;\r
3134 ld (hl),d ;\r
3135 jp rs_1 ;\r
3136;------------------------------------------------------------------------\r
3137\r
25a690e5 3138p_max_high0:\r
d1f2492e 3139 call assert_eol\r
25a690e5 3140p_max_high:\r
d1f2492e 3141 call pstr_inl\r
0c4244e5 3142 DC 'High = '\r
d1f2492e
L
3143 ld hl,(high_load)\r
3144 call out_hl\r
3145 call pstr_inl\r
0c4244e5 3146 DC ' Max = '\r
d1f2492e
L
3147 ld hl,(max_load)\r
3148 call out_hl\r
3a4deef9
L
3149 call pstr_inl\r
3150 DC ' Top = '\r
3151 ld hl,(BDOS+1)\r
3152 call out_hl\r
d1f2492e 3153 jp crlf\r
0c4244e5 3154\r
0c4244e5 3155cmd_W:\r
0716e834
L
3156 call get_arg_range\r
3157 call assert_eol\r
3158 push hl\r
3159 ld a,c\r
3160 add a,07fh\r
3161 jr nc,l11adh\r
3162 inc b\r
0c4244e5 3163l11adh:\r
0716e834
L
3164 and 080h\r
3165 ld c,a\r
3166 push bc\r
3167 ld a,(dfcb1+1)\r
3168 cp ' '\r
3169 jr z,error5\r
c788b3b7 3170 ld de,dfcb1\r
0716e834
L
3171 call setup_fcb\r
3172 push de\r
3173 ld c,BDOS_DELETE\r
3174 call ddtz_bdos\r
3175 pop de\r
3176 ld c,BDOS_CREATE\r
3177 call ddtz_bdos\r
3178 inc a\r
3179 jr z,error5\r
3180 pop bc\r
3181 pop hl\r
0c4244e5 3182l11cch:\r
0716e834
L
3183 ld a,b\r
3184 or c\r
3185 jr z,close_file\r
3186 push bc\r
3187 ld de,080h ; DMA_BUF\r
3188 ld b,d\r
3189 ld c,e\r
3190 ldir\r
3191 call write_sector\r
3192 ex (sp),hl\r
3193 ld bc,0ff80h\r
3194 add hl,bc\r
3195 ex (sp),hl\r
3196 pop bc\r
3197 jr l11cch\r
0c4244e5
L
3198\r
3199write_sector:\r
0716e834
L
3200 push hl\r
3201 ld de,dfcb1\r
3202 ld c,BDOS_WRITE\r
3203 call ddtz_bdos\r
3204 pop hl\r
3205 and a\r
3206 ret z\r
3207 call close_file\r
0c4244e5 3208error5:\r
0716e834 3209 jp ERROR\r
0c4244e5
L
3210\r
3211close_file:\r
0716e834
L
3212 ld de,dfcb1\r
3213 ld c,BDOS_CLOSE\r
3214 jp ddtz_bdos\r
0c4244e5
L
3215\r
3216cmd_A:\r
0716e834
L
3217 ld hl,(last_A)\r
3218 call get_lastarg_def\r
3219 push hl\r
3220 pop iy\r
3221 ld hl,l1259h\r
ac35765e 3222 ld (error_func),hl\r
0716e834 3223 ld (l1262h),sp\r
0c4244e5 3224l1211h:\r
0716e834
L
3225 push iy\r
3226 pop hl\r
3227 ld (last_A),hl\r
ac35765e 3228 ld (var.$),hl\r
0716e834
L
3229 push hl\r
3230 call p_disas_line\r
3231 pop iy\r
3232 ld c,b\r
ac35765e 3233 ld de,(var.@)\r
0716e834
L
3234 ld a,d\r
3235 or e\r
3236 ld b,011h\r
3237 jr z,l122dh\r
3238 ld b,019h\r
0c4244e5 3239l122dh:\r
0716e834
L
3240 call outbl\r
3241 ld a,(con_col)\r
3242 cp b\r
3243 jr c,l122dh\r
3244 push bc\r
3245 call get_line\r
3246 pop bc\r
3247 call skipbl\r
3248 cp '.'\r
3249 ret z\r
3250 cp '-'\r
3251 jr nz,l124bh\r
3252 ld iy,(cmd_A_prev)\r
3253 jr l1211h\r
0c4244e5 3254l124bh:\r
0716e834
L
3255 and a\r
3256 call nz,sub_1268h\r
3257 ld (cmd_A_prev),iy\r
3258 ld b,0\r
3259 add iy,bc\r
3260 jr l1211h\r
ac35765e 3261\r
0c4244e5 3262l1259h:\r
0716e834
L
3263 call l0146h\r
3264 ld sp,(l1262h)\r
3265 jr l1211h\r
0c4244e5 3266\r
0c4244e5 3267sub_1268h:\r
0716e834
L
3268 call skipbl\r
3269 ld hl,t_MNEMONICS\r
3270 call sub_030ah\r
3271 jp nc,ERROR\r
3272 call skipbl\r
3273 push de\r
3274 ld a,b\r
3275 add a,b\r
3276 add a,b\r
3277 ld hl,b_1289_start\r
3278 call add_hl_a\r
3279 ld e,(hl)\r
3280 inc hl\r
3281 ld d,(hl)\r
3282 inc hl\r
3283 ld b,(hl)\r
3284 ex de,hl\r
3285 pop de\r
646e8b05
L
3286\r
3287CALL_HL:\r
0716e834 3288 jp (hl)\r
0c4244e5
L
3289\r
3290b_1289_start:\r
0716e834
L
3291 dw as.ADC_SBC ;ADC\r
3292 db 088h ;\r
3293 dw as.ADD ;ADD\r
3294 db 080h ;\r
3295 dw as.AND_CP_OR_SUB_XOR ;AND\r
3296 db 0a0h ;\r
3297 dw as.BITOP ;BIT\r
3298 db 040h ;\r
3299 dw as.CALL ;CALL\r
3300 db 0c4h ;\r
3301 dw as.opc.noarg ;CCF\r
3302 db 03fh ;\r
3303 dw as.AND_CP_OR_SUB_XOR ;CP\r
3304 db 0b8h ;\r
3305 dw gen.opc.ED2 ;CPD\r
3306 db 0a9h ;\r
3307 dw gen.opc.ED2 ;CPDR\r
3308 db 0b9h ;\r
3309 dw gen.opc.ED2 ;CPI\r
3310 db 0a1h ;\r
3311 dw gen.opc.ED2 ;CPIR\r
3312 db 0b1h ;\r
3313 dw as.opc.noarg ;CPL\r
3314 db 02fh ;\r
3315 dw as.opc.noarg ;DAA\r
3316 db 027h ;\r
3317 dw as.DEC_INC ;DEC\r
3318 db 005h ;\r
3319 dw as.opc.noarg ;DI\r
3320 db 0f3h ;\r
3321 dw as.DJNZ ;DJNZ\r
3322 db 010h ;\r
3323 dw as.opc.noarg ;EI\r
3324 db 0fbh ;\r
3325 dw as.EX ;EX\r
3326 db 0e3h ;\r
3327 dw as.opc.noarg ;EXX\r
3328 db 0d9h ;\r
3329 dw as.opc.noarg ;HALT\r
3330 db 076h ;\r
3331 dw as.IM ;IM\r
3332 db 046h ;\r
3333 dw as.IN ;IN\r
3334 db 040h ;\r
3335 dw as.DEC_INC ;INC\r
3336 db 004h ;\r
3337 dw gen.opc.ED2 ;IND\r
3338 db 0aah ;\r
3339 dw gen.opc.ED2 ;INDR\r
3340 db 0bah ;\r
3341 dw gen.opc.ED2 ;INI\r
3342 db 0a2h ;\r
3343 dw gen.opc.ED2 ;INIR\r
3344 db 0b2h ;\r
3345 dw as.JP ;JP\r
3346 db 0c2h ;\r
3347 dw as.JR ;JR\r
3348 db 020h ;\r
3349 dw as.LD ;LD\r
3350 db 040h ;\r
3351 dw gen.opc.ED2 ;LDD\r
3352 db 0a8h ;\r
3353 dw gen.opc.ED2 ;LDDR\r
3354 db 0b8h ;\r
3355 dw gen.opc.ED2 ;LDI\r
3356 db 0a0h ;\r
3357 dw gen.opc.ED2 ;LDIR\r
3358 db 0b0h ;\r
3359 dw gen.opc.ED2 ;NEG\r
3360 db 044h ;\r
3361 dw as.opc.noarg ;NOP\r
3362 db 000h ;\r
3363 dw as.AND_CP_OR_SUB_XOR ;OR\r
3364 db 0b0h ;\r
3365 dw gen.opc.ED2 ;OTDR\r
3366 db 0bbh ;\r
3367 dw gen.opc.ED2 ;OTIR\r
3368 db 0b3h ;\r
3369 dw as.OUT ;OUT\r
3370 db 041h ;\r
3371 dw gen.opc.ED2 ;OUTD\r
3372 db 0abh ;\r
3373 dw gen.opc.ED2 ;OUTI\r
3374 db 0a3h ;\r
3375 dw as.POP_PUSH ;POP\r
3376 db 0c1h ;\r
3377 dw as.POP_PUSH ;PUSH\r
3378 db 0c5h ;\r
3379 dw as.BITOP ;RES\r
3380 db 080h ;\r
3381 dw as.RET ;RET\r
3382 db 0c0h ;\r
3383 dw gen.opc.ED2 ;RETI\r
3384 db 04dh ;\r
3385 dw gen.opc.ED2 ;RETN\r
3386 db 045h ;\r
3387 dw as.SHIFTOP ;RL\r
3388 db 010h ;\r
3389 dw as.opc.noarg ;RLA\r
3390 db 017h ;\r
3391 dw as.SHIFTOP ;RLC\r
3392 db 000h ;\r
3393 dw as.opc.noarg ;RLCA\r
3394 db 007h ;\r
3395 dw gen.opc.ED2 ;RLD\r
3396 db 06fh ;\r
3397 dw as.SHIFTOP ;RR\r
3398 db 018h ;\r
3399 dw as.opc.noarg ;RRA\r
3400 db 01fh ;\r
3401 dw as.SHIFTOP ;RRC\r
3402 db 008h ;\r
3403 dw as.opc.noarg ;RRCA\r
3404 db 00fh ;\r
3405 dw gen.opc.ED2 ;RRD\r
3406 db 067h ;\r
3407 dw as.RST ;RST\r
3408 db 0c7h ;\r
3409 dw as.ADC_SBC ;SBC\r
3410 db 098h ;\r
3411 dw as.opc.noarg ;SCF\r
3412 db 037h ;\r
3413 dw as.BITOP ;SET\r
3414 db 0c0h ;\r
3415 dw as.SHIFTOP ;SLA\r
3416 db 020h ;\r
3417 dw as.SHIFTOP ;SRA\r
3418 db 028h ;\r
3419 dw as.SHIFTOP ;SRL\r
3420 db 038h ;\r
3421 dw as.AND_CP_OR_SUB_XOR ;SUB\r
3422 db 090h ;\r
3423 dw as.AND_CP_OR_SUB_XOR ;XOR\r
3424 db 0a8h ;\r
9bed91b3
L
3425\r
3426 dw as.IN0 ;IN0\r
3427 db 000h ;\r
3428 dw as.MLT ;MLT\r
3429 db 04ch ;\r
3430 dw gen.opc.ED2 ;OTDM\r
3431 db 08bh ;\r
3432 dw gen.opc.ED2 ;OTDMR\r
3433 db 09bh ;\r
3434 dw gen.opc.ED2 ;OTIM\r
3435 db 083h ;\r
3436 dw gen.opc.ED2 ;OTIMR\r
3437 db 093h ;\r
3438 dw as.OUTO ;OUT0\r
3439 db 001h ;\r
3440 dw gen.opc.ED2 ;SLP\r
3441 db 076h ;\r
3442 dw as.TST ;TST\r
3443 db 004h ;\r
3444 dw as.TSTIO ;TSTIO\r
3445 db 074h ;\r
b0b4005c
L
3446\r
3447as.TST:\r
3448 call arg.r_HL_A ;\r
3449 jr nc,as.tst_0\r
3450 rlca\r
3451 rlca\r
3452 rlca\r
3453 add a,b\r
3454 ld b,a\r
3455 jp gen.opc.ED2\r
3456as.tst_0:\r
3457 ld b,064h\r
3458as.TSTIO:\r
3459 call arg.imm_8bit ;\r
3460 jr as.store_io0\r
3461\r
3462as.IN0:\r
3463 call arg.r_HL_A ;\r
3464 jr nc,error7\r
3465 cp 006h\r
3466 jr z,error7\r
3467 rlca\r
3468 rlca\r
3469 rlca\r
3470 add a,b\r
3471 ld b,a\r
3472 call assert_comma ;\r
3473 call arg.addr_8bit ;\r
3474 jr as.store_io0\r
3475\r
3476as.OUTO:\r
3477 call arg.addr_8bit ;\r
3478 call assert_comma ;\r
3479 call arg.r_HL_A ;\r
3480 jr nc,error7\r
3481 cp 006h\r
3482 jr z,error7\r
3483 rlca\r
3484 rlca\r
3485 rlca\r
3486 add a,b\r
3487 ld b,a\r
3488\r
3489as.store_io0:\r
3490 call assert_eol\r
3491 ld (iy+000h),0edh\r
3492 ld (iy+001h),b\r
3493 ld (iy+002h),l\r
3494 ld c,003h\r
3495 ret\r
3496\r
3497as.MLT:\r
3498 call arg.ww ;\r
3499 jr nc,error7\r
3500 add a,b\r
3501 ld b,a\r
3502 jp gen.opc.ED2\r
3503\r
3504error7:\r
3505 jp ERROR\r
3506\r
3507as.LD:\r
0716e834
L
3508 call arg.r_HL_A\r
3509 jr c,l13d4h\r
3510 call arg.IDX_displcmnt\r
3511 jp c,l1471h\r
3512 call arg.ww\r
3513 jp c,l149ch\r
3514 call arg.IX_IY\r
3515 jp c,l14f5h\r
3516 ld a,(de)\r
3517 cp 'I'\r
3518 jp z,l1511h\r
3519 cp 'R'\r
3520 jp z,l1519h\r
3521 cp '('\r
3522 jp nz,ERROR\r
3523 inc de\r
3524 call arg.ww\r
3525 jp c,l1528h\r
3526 call test_expr\r
3527 call test_paren_close\r
3528 call assert_comma\r
3529 call arg.ww\r
3530 jr c,l13c2h\r
3531 call arg.IX_IY\r
3532 jr nc,l13aah\r
3533 ld b,022h\r
0c4244e5 3534l1395h:\r
0716e834
L
3535 call assert_eol\r
3536 ld a,(prefix_ixiy)\r
0c4244e5 3537l139bh:\r
0716e834
L
3538 ld (iy+000h),a\r
3539 ld (iy+001h),b\r
3540 ld (iy+002h),l\r
3541 ld (iy+003h),h\r
3542 ld c,004h\r
3543 ret\r
0c4244e5 3544l13aah:\r
0716e834
L
3545 ld a,(de)\r
3546 cp 'A'\r
3547 jp nz,ERROR\r
3548 inc de\r
3549 ld b,032h\r
b0b4005c 3550as.store_3:\r
0716e834
L
3551 call assert_eol\r
3552 ld (iy+000h),b\r
3553 ld (iy+001h),l\r
3554 ld (iy+002h),h\r
3555 ld c,003h\r
3556 ret\r
0c4244e5 3557l13c2h:\r
0716e834
L
3558 cp 020h\r
3559 jr z,l13d0h\r
3560 add a,043h\r
3561 ld b,a\r
0c4244e5 3562l13c9h:\r
0716e834
L
3563 call assert_eol\r
3564 ld a,0edh\r
3565 jr l139bh\r
0c4244e5 3566l13d0h:\r
0716e834
L
3567 ld b,022h\r
3568 jr as.store_3\r
0c4244e5 3569l13d4h:\r
0716e834
L
3570 ld b,a\r
3571 call assert_comma\r
3572 call arg.r_HL_A\r
3573 jr nc,l13f0h\r
3574 push af\r
3575 ld a,b\r
3576 rlca\r
3577 rlca\r
3578 rlca\r
3579 ld b,a\r
3580 pop af\r
3581 add a,b\r
3582 add a,040h\r
3583 cp 076h\r
3584 jp z,ERROR\r
0c4244e5 3585l13ech:\r
0716e834
L
3586 ld b,a\r
3587 jp as.opc.noarg\r
0c4244e5 3588l13f0h:\r
0716e834
L
3589 call arg.IDX_displcmnt\r
3590 jr nc,l1413h\r
3591 ld a,b\r
3592 rlca\r
3593 rlca\r
3594 rlca\r
3595 add a,046h\r
3596 cp 076h\r
3597 jp z,ERROR\r
b0b4005c 3598\r
0c4244e5 3599l1400h:\r
0716e834
L
3600 ld b,a\r
3601 call assert_eol\r
3602 ld (iy+001h),b\r
3603 ld (iy+002h),c\r
3604 ld a,(prefix_ixiy)\r
3605 ld (iy+000h),a\r
3606 ld c,003h\r
3607 ret\r
0c4244e5 3608l1413h:\r
0716e834
L
3609 ld a,(de)\r
3610 cp 'I'\r
3611 jr z,l1426h\r
3612 cp 'R'\r
3613 jr nz,l1432h\r
3614 ld a,b\r
3615 cp 007h\r
3616 jp nz,ERROR\r
3617 ld b,05fh\r
3618 jr l142eh\r
0c4244e5 3619l1426h:\r
0716e834
L
3620 ld a,b\r
3621 cp 007h\r
3622 jp nz,ERROR\r
3623 ld b,057h\r
0c4244e5 3624l142eh:\r
0716e834
L
3625 inc de\r
3626 jp gen.opc.ED2\r
0c4244e5 3627l1432h:\r
0716e834
L
3628 cp '('\r
3629 jr z,l144ch\r
3630 call arg.imm_8bit\r
3631 ld a,b\r
3632 rlca\r
3633 rlca\r
3634 rlca\r
3635 add a,006h\r
0c4244e5 3636l143fh:\r
0716e834 3637 ld b,a\r
b0b4005c 3638as.store_2:\r
0716e834
L
3639 call assert_eol\r
3640 ld (iy+000h),b\r
3641 ld (iy+001h),l\r
3642 ld c,002h\r
3643 ret\r
0c4244e5 3644l144ch:\r
0716e834
L
3645 inc de\r
3646 ld a,b\r
3647 cp 007h\r
3648 jp nz,ERROR\r
3649 call arg.ww\r
3650 jr nc,l1466h\r
3651 cp 030h\r
3652 jp nc,ERROR\r
3653 add a,00ah\r
3654 ld b,a\r
3655 call test_paren_close\r
3656 jp as.opc.noarg\r
0c4244e5 3657l1466h:\r
0716e834
L
3658 call test_expr\r
3659 call test_paren_close\r
3660 ld b,03ah\r
3661 jp as.store_3\r
b0b4005c 3662\r
0c4244e5 3663l1471h:\r
0716e834
L
3664 call assert_comma\r
3665 call arg.r_HL_A\r
3666 jr nc,l1483h\r
3667 cp 006h\r
3668 jp z,ERROR\r
3669 add a,070h\r
3670 jp l1400h\r
b0b4005c 3671\r
0c4244e5 3672l1483h:\r
0716e834
L
3673 call arg.imm_8bit\r
3674 call assert_eol\r
3675 ld a,(prefix_ixiy)\r
3676 ld (iy+000h),a\r
3677 ld (iy+001h),036h\r
3678 ld (iy+002h),c\r
3679 ld (iy+003h),l\r
3680 ld c,004h\r
3681 ret\r
0c4244e5 3682l149ch:\r
0716e834
L
3683 ld b,a\r
3684 call assert_comma\r
3685 ld hl,t_HL.AF\r
3686 call sub_0318h\r
3687 jr c,l14c3h\r
3688 call arg.IX_IY\r
3689 jr nc,l14cch\r
3690 ld a,b\r
3691 cp 030h\r
3692 jr nz,error6\r
3693 ld b,0f9h\r
0c4244e5 3694l14b4h:\r
0716e834
L
3695 call assert_eol\r
3696 ld a,(prefix_ixiy)\r
3697 ld (iy+000h),a\r
3698 ld (iy+001h),b\r
3699 ld c,002h\r
3700 ret\r
0c4244e5 3701l14c3h:\r
0716e834
L
3702 ld a,b\r
3703 cp 030h\r
3704 jr nz,error6\r
3705 ld b,0f9h\r
3706 jr as.opc.noarg ;14ca\r
0c4244e5 3707l14cch:\r
0716e834
L
3708 ld a,(de)\r
3709 cp '('\r
3710 jr nz,l14e8h\r
3711 inc de\r
3712 call test_expr\r
3713 call test_paren_close\r
3714 ld a,b\r
3715 cp 020h\r
3716 jr z,l14e3h\r
3717 add a,04bh\r
3718 ld b,a\r
3719 jp l13c9h\r
0c4244e5 3720l14e3h:\r
0716e834
L
3721 ld b,02ah\r
3722 jp as.store_3\r
0c4244e5 3723l14e8h:\r
0716e834
L
3724 call test_expr\r
3725 call assert_eol\r
3726 ld a,001h\r
3727 add a,b\r
3728 ld b,a\r
3729 jp as.store_3\r
0c4244e5 3730l14f5h:\r
0716e834
L
3731 call assert_comma\r
3732 ld a,(de)\r
3733 cp '('\r
3734 jr nz,l1509h\r
3735 inc de\r
3736 call test_expr\r
3737 call test_paren_close\r
3738 ld b,02ah\r
3739 jp l1395h\r
0c4244e5 3740l1509h:\r
0716e834
L
3741 call test_expr\r
3742 ld b,021h\r
3743 jp l1395h\r
0c4244e5 3744l1511h:\r
0716e834
L
3745 inc de\r
3746 call assert_comma\r
3747 ld b,047h\r
3748 jr l151fh\r
0c4244e5 3749l1519h:\r
0716e834
L
3750 inc de\r
3751 call assert_comma\r
3752 ld b,04fh\r
0c4244e5 3753l151fh:\r
0716e834
L
3754 ld a,(de)\r
3755 inc de\r
3756 cp 'A'\r
3757 jr z,gen.opc.ED2\r
0c4244e5 3758error6:\r
0716e834 3759 jp ERROR\r
0c4244e5
L
3760\r
3761l1528h:\r
0716e834
L
3762 cp 020h\r
3763 jr nc,error6\r
3764 add a,002h\r
3765 ld b,a\r
3766 call test_paren_close\r
3767 call assert_comma\r
3768 ld a,(de)\r
3769 cp 'A'\r
3770 jr nz,error6\r
3771 inc de\r
b0b4005c 3772as.opc.noarg:\r
0716e834
L
3773 call assert_eol\r
3774 ld (iy+000h),b\r
3775 ld c,001h\r
3776 ret\r
0c4244e5 3777\r
b0b4005c 3778gen.opc.ED2:\r
0716e834
L
3779 call assert_eol\r
3780 ld (iy+000h),0edh\r
3781 ld (iy+001h),b\r
3782 ld c,002h\r
3783 ret\r
0c4244e5 3784\r
b0b4005c 3785as.ADC_SBC:\r
0716e834
L
3786 ld hl,t_HL.AF\r
3787 call sub_0318h\r
3788 jr nc,as.AND_CP_OR_SUB_XOR\r
3789 call assert_comma\r
3790 call arg.ww\r
3791 jp nc,ERROR\r
3792 push af\r
3793 ld a,b\r
3794 cp 088h\r
3795 ld b,04ah\r
3796 jr z,l156ch\r
3797 ld b,042h\r
0c4244e5 3798l156ch:\r
0716e834
L
3799 pop af\r
3800 add a,b\r
0c4244e5 3801l156eh:\r
0716e834
L
3802 ld b,a\r
3803 jr gen.opc.ED2\r
b0b4005c 3804as.ADD:\r
0716e834
L
3805 ld hl,t_HL.AF\r
3806 call sub_0318h\r
3807 jr c,l159ah\r
3808 call arg.IX_IY\r
3809 jr nc,as.AND_CP_OR_SUB_XOR\r
3810 call assert_comma\r
3811 ld hl,t_BC.DE.IX.SP\r
3812 ld a,(prefix_ixiy)\r
3813 cp 0fdh\r
3814 jr nz,l158eh\r
3815 ld hl,t_BC.DE.IY.SP\r
0c4244e5 3816l158eh:\r
0716e834
L
3817 call arg.reg_16bit\r
3818 jp nc,ERROR\r
3819 add a,009h\r
0c4244e5 3820l1596h:\r
0716e834
L
3821 ld b,a\r
3822 jp l14b4h\r
0c4244e5 3823l159ah:\r
0716e834
L
3824 call assert_comma\r
3825 call arg.ww\r
3826 jp nc,ERROR\r
3827 add a,009h\r
3828 jp l13ech\r
b0b4005c 3829as.AND_CP_OR_SUB_XOR:\r
0716e834
L
3830 ld a,(de)\r
3831 cp 'A'\r
3832 jr nz,l15b8h\r
3833 push de\r
3834 inc de\r
3835 call next_arg\r
3836 jr z,l15b7h\r
3837 pop de\r
3838 jr l15b8h\r
0c4244e5 3839l15b7h:\r
0716e834 3840 pop af\r
0c4244e5 3841l15b8h:\r
0716e834
L
3842 call arg.r_HL_A\r
3843 jr c,l15cbh\r
3844 call arg.IDX_displcmnt\r
3845 jr c,l15cfh\r
3846 call arg.imm_8bit\r
3847 ld a,b\r
3848 add a,046h\r
3849 jp l143fh\r
0c4244e5 3850l15cbh:\r
0716e834
L
3851 add a,b\r
3852 jp l13ech\r
0c4244e5 3853l15cfh:\r
0716e834
L
3854 ld a,b\r
3855 add a,006h\r
3856 jp l1400h\r
b0b4005c
L
3857\r
3858as.SHIFTOP:\r
0716e834
L
3859 call arg.r_HL_A\r
3860 jr c,l15fah\r
3861 call arg.IDX_displcmnt\r
3862 jp nc,ERROR\r
3863 ld a,b\r
3864 add a,006h\r
3865 ld b,a\r
0c4244e5 3866l15e4h:\r
0716e834
L
3867 call assert_eol\r
3868 ld a,(prefix_ixiy)\r
3869 ld (iy+000h),a\r
3870 ld (iy+001h),0cbh\r
3871 ld (iy+002h),c\r
3872 ld (iy+003h),b\r
3873 ld c,004h\r
3874 ret\r
b0b4005c 3875\r
0c4244e5 3876l15fah:\r
0716e834 3877 add a,b\r
0c4244e5 3878l15fbh:\r
0716e834
L
3879 ld b,a\r
3880 call assert_eol\r
3881 ld (iy+001h),b\r
3882 ld (iy+000h),0cbh\r
3883 ld c,002h\r
3884 ret\r
b0b4005c
L
3885\r
3886as.BITOP:\r
0716e834
L
3887 call arg.bit\r
3888 call assert_comma\r
3889 call arg.r_HL_A\r
3890 jr c,l1624h\r
3891 call arg.IDX_displcmnt\r
3892 jp nc,ERROR\r
3893 ld a,l\r
3894 rlca\r
3895 rlca\r
3896 rlca\r
3897 add a,006h\r
3898 add a,b\r
3899 ld b,a\r
3900 jr l15e4h\r
0c4244e5 3901l1624h:\r
0716e834
L
3902 add a,b\r
3903 ld b,a\r
3904 ld a,l\r
3905 rlca\r
3906 rlca\r
3907 rlca\r
3908 add a,b\r
3909 jr l15fbh\r
b0b4005c
L
3910\r
3911as.CALL:\r
0716e834
L
3912 push de\r
3913 call arg.cc_ZCPS\r
3914 jr nc,l163ch\r
3915 add a,b\r
3916 ld b,a\r
3917 call next_arg\r
3918 jr z,l163eh\r
3919 pop de\r
3920 push de\r
0c4244e5 3921l163ch:\r
0716e834 3922 ld b,0cdh\r
0c4244e5 3923l163eh:\r
0716e834
L
3924 pop af\r
3925 call test_expr\r
3926 jp as.store_3\r
b0b4005c
L
3927\r
3928as.RET:\r
0716e834
L
3929 call arg.cc_ZCPS\r
3930 jr nc,l164eh\r
3931 add a,b\r
3932 ld b,a\r
3933 jr l1650h\r
0c4244e5 3934l164eh:\r
0716e834 3935 ld b,0c9h\r
0c4244e5 3936l1650h:\r
0716e834 3937 jp as.opc.noarg\r
b0b4005c
L
3938\r
3939as.JP:\r
0716e834
L
3940 push de\r
3941 call arg.cc_ZCPS\r
3942 jr c,l1666h\r
0c4244e5 3943l1659h:\r
0716e834
L
3944 pop de\r
3945 ld hl,l168ch\r
3946 call sub_030ah\r
3947 jr c,l1674h\r
3948 ld b,0c3h\r
3949 jr l166eh\r
b0b4005c 3950\r
0c4244e5 3951l1666h:\r
0716e834
L
3952 add a,b\r
3953 ld b,a\r
3954 call next_arg\r
3955 jr nz,l1659h\r
3956 pop af\r
0c4244e5 3957l166eh:\r
0716e834
L
3958 call test_expr\r
3959 jp as.store_3\r
0c4244e5 3960l1674h:\r
0716e834
L
3961 call assert_eol\r
3962 ld a,b\r
3963 and a\r
3964 jr nz,l1680h\r
3965 ld b,0e9h\r
3966 jp as.opc.noarg\r
0c4244e5 3967l1680h:\r
0716e834
L
3968 ld b,0ddh\r
3969 dec a\r
3970 jr z,l1687h\r
3971 ld b,0fdh\r
0c4244e5 3972l1687h:\r
0716e834
L
3973 ld l,0e9h\r
3974 jp as.store_2\r
0c4244e5
L
3975\r
3976l168ch:\r
3977 DC '(HL)'\r
3978 DC '(IX)'\r
3979 DC '(IY)'\r
3980 DB 0\r
3981\r
b0b4005c 3982as.DJNZ:\r
0716e834
L
3983 call next_arg\r
3984 ld b,010h\r
3985 jr l16aeh\r
b0b4005c 3986as.JR:\r
0716e834
L
3987 call arg.cc_ZC\r
3988 jr c,l16a9h\r
3989 ld b,018h\r
3990 jr l16aeh\r
0c4244e5 3991l16a9h:\r
0716e834
L
3992 add a,b\r
3993 ld b,a\r
3994 call assert_comma\r
0c4244e5 3995l16aeh:\r
0716e834
L
3996 call arg.j_displ\r
3997 jp as.store_2\r
0c4244e5 3998\r
b0b4005c 3999as.IM:\r
0716e834
L
4000 call arg.imm_8bit\r
4001 ld a,l\r
4002 cp 003h\r
4003 jr nc,error2\r
4004 and a\r
4005 jr z,l16c7h\r
4006 ld b,056h\r
4007 cp 001h\r
4008 jr z,l16c7h\r
4009 ld b,05eh\r
0c4244e5 4010l16c7h:\r
0716e834 4011 jp gen.opc.ED2\r
0c4244e5 4012\r
b0b4005c 4013as.RST:\r
0716e834
L
4014 call arg.imm_8bit\r
4015 ld a,l\r
4016 push af\r
4017 add a,b\r
4018 ld b,a\r
4019 pop af\r
4020 and 0c7h\r
4021 jr nz,error2\r
4022 jp as.opc.noarg\r
0c4244e5 4023\r
b0b4005c 4024as.POP_PUSH:\r
0716e834
L
4025 call arg.IX_IY\r
4026 jr c,l16e7h\r
4027 call arg.zz\r
4028 jr nc,error2\r
4029 add a,b\r
4030 jp l13ech\r
0c4244e5 4031l16e7h:\r
0716e834
L
4032 ld a,b\r
4033 add a,020h\r
4034 jp l1596h\r
0c4244e5 4035\r
b0b4005c 4036as.IN:\r
0716e834
L
4037 call arg.r_HL_A\r
4038 jr nc,error2\r
4039 cp 006h\r
4040 jr z,error2\r
4041 rlca\r
4042 rlca\r
4043 rlca\r
4044 add a,b\r
4045 ld b,a\r
4046 cp 078h\r
4047 jr nz,l170fh\r
4048 call assert_comma\r
4049 call sub_171bh\r
4050 jr c,l1715h\r
4051 call arg.addr_8bit\r
4052 ld b,0dbh\r
4053 jp as.store_2\r
0c4244e5 4054l170fh:\r
0716e834
L
4055 call assert_comma\r
4056 call sub_171bh\r
0c4244e5 4057l1715h:\r
0716e834 4058 jp c,gen.opc.ED2\r
0c4244e5 4059error2:\r
0716e834 4060 jp ERROR\r
0c4244e5
L
4061\r
4062sub_171bh:\r
0716e834
L
4063 ld hl,t__C_\r
4064 jp sub_0318h\r
0c4244e5 4065\r
b0b4005c 4066as.OUT:\r
0716e834
L
4067 call sub_171bh\r
4068 jr nc,l1739h\r
4069 call assert_comma\r
4070 call arg.r_HL_A\r
4071 jr nc,error2\r
4072 cp 006h\r
4073 jr z,error2\r
4074 rlca\r
4075 rlca\r
4076 rlca\r
4077 add a,b\r
4078 jp l156eh\r
0c4244e5
L
4079\r
4080l1739h:\r
0716e834
L
4081 call arg.addr_8bit\r
4082 call assert_comma\r
4083 cp 'A'\r
4084 jr nz,error2\r
4085 inc de\r
4086 ld b,0d3h\r
4087 jp as.store_2\r
0c4244e5 4088\r
b0b4005c 4089as.EX:\r
0716e834
L
4090 ld hl,b_176d_start\r
4091 call sub_030ah\r
4092 jp nc,ERROR\r
4093 ld c,b\r
4094 call assert_eol\r
4095 ld b,000h\r
4096 ld hl,l178eh\r
4097 add hl,bc\r
4098 add hl,bc\r
4099 ld a,(hl)\r
4100 ld (iy+000h),a\r
4101 ld c,001h\r
4102 inc hl\r
4103 ld a,(hl)\r
4104 and a\r
4105 ret z\r
4106 ld (iy+001h),a\r
4107 ld c,002h\r
4108 ret\r
0c4244e5
L
4109\r
4110b_176d_start:\r
4111 DC 'AF,AF'''\r
4112l1773h:\r
4113 DC 'DE,HL'\r
4114 DC '(SP),HL'\r
4115 DC '(SP),IX'\r
4116 DC '(SP),IY'\r
4117 db 0\r
4118l178eh:\r
0716e834
L
4119 db 008h,000h\r
4120 db 0ebh,000h\r
4121 db 0e3h,000h\r
4122 db 0ddh,0e3h\r
4123 db 0fdh,0e3h\r
0c4244e5 4124\r
b0b4005c 4125as.DEC_INC:\r
0716e834
L
4126 call arg.IX_IY\r
4127 jr c,l17b3h\r
4128 call arg.ww\r
4129 jr c,l17bfh\r
4130 call arg.r_HL_A\r
4131 jr c,l17cch\r
4132 call arg.IDX_displcmnt\r
4133 jp nc,ERROR\r
4134 ld a,b\r
4135 add a,030h\r
4136 jp l1400h\r
0c4244e5 4137l17b3h:\r
0716e834
L
4138 ld a,b\r
4139 ld b,023h\r
4140 cp 004h\r
4141 jr z,l17bch\r
4142 ld b,02bh\r
0c4244e5 4143l17bch:\r
0716e834 4144 jp l14b4h\r
0c4244e5 4145l17bfh:\r
0716e834
L
4146 push af\r
4147 ld a,b\r
4148 ld b,003h\r
4149 cp 004h\r
4150 jr z,l17c9h\r
4151 ld b,00bh\r
0c4244e5 4152l17c9h:\r
0716e834
L
4153 pop af\r
4154 jr l17cfh\r
0c4244e5 4155l17cch:\r
0716e834
L
4156 rlca\r
4157 rlca\r
4158 rlca\r
0c4244e5 4159l17cfh:\r
0716e834
L
4160 add a,b\r
4161 jp l13ech\r
b0b4005c
L
4162\r
4163arg.bit:\r
0716e834
L
4164 call arg.imm_8bit\r
4165 ld a,l\r
4166 cp 008h\r
4167 jr nc,error3\r
4168 ret\r
b0b4005c
L
4169\r
4170arg.j_displ:\r
0716e834
L
4171 call test_expr\r
4172 push bc\r
4173 push iy\r
4174 pop bc\r
4175 and a\r
4176 sbc hl,bc\r
4177 dec hl\r
4178 dec hl\r
4179 pop bc\r
4180 call sub_1802h\r
4181 ld a,h\r
4182 xor l\r
4183 bit 7,a\r
4184 jr nz,error3\r
4185 ret\r
0c4244e5 4186\r
b0b4005c 4187arg.addr_8bit:\r
0716e834
L
4188 ld a,(de)\r
4189 cp '('\r
4190 jr nz,arg.imm_8bit\r
4191 inc de\r
4192 call arg.imm_8bit\r
4193 jp test_paren_close\r
0c4244e5 4194\r
b0b4005c 4195arg.imm_8bit:\r
0716e834 4196 call test_expr\r
0c4244e5 4197sub_1802h:\r
0716e834
L
4198 ld a,h\r
4199 and a\r
4200 ret z\r
4201 inc a\r
4202 ret z\r
4203 jr error3\r
0c4244e5
L
4204\r
4205test_expr:\r
0716e834
L
4206 push bc\r
4207 call expr\r
4208 pop bc\r
4209 ret nc\r
0c4244e5 4210error3:\r
0716e834 4211 jp ERROR\r
0c4244e5 4212\r
b0b4005c 4213arg.zz:\r
0716e834
L
4214 push hl\r
4215 ld hl,t_BC.DE.HL.AF\r
4216 jr l181fh\r
0c4244e5 4217\r
b0b4005c 4218arg.reg_16bit:\r
0716e834
L
4219 push hl\r
4220 jr l181fh\r
0c4244e5 4221\r
b0b4005c 4222arg.ww:\r
0716e834
L
4223 push hl\r
4224 ld hl,t_BC.DE.HL.SP\r
0c4244e5 4225l181fh:\r
0716e834
L
4226 push bc\r
4227 call sub_030ah\r
4228 jr nc,l182bh\r
4229 ld a,b\r
4230 rlca\r
4231 rlca\r
4232 rlca\r
4233 rlca\r
4234 scf\r
0c4244e5 4235l182bh:\r
0716e834
L
4236 pop bc\r
4237 pop hl\r
4238 ret\r
0c4244e5 4239\r
b0b4005c 4240arg.r_HL_A:\r
0716e834
L
4241 call skipbl\r
4242 push bc\r
4243 push hl\r
4244 ld hl,t_BCDEHL_HL_A\r
4245 call sub_030ah\r
4246 ld a,b\r
4247 pop hl\r
4248 pop bc\r
4249 ret\r
0c4244e5 4250\r
b0b4005c 4251arg.IX_IY:\r
0716e834
L
4252 push hl\r
4253 push bc\r
4254 ld hl,t_IX.IY\r
4255 call sub_030ah\r
4256 jr nc,l1852h\r
4257 ld a,0ddh\r
4258 dec b\r
4259 jr nz,l184eh\r
4260 ld a,0fdh\r
0c4244e5 4261l184eh:\r
0716e834
L
4262 ld (prefix_ixiy),a\r
4263 scf\r
0c4244e5 4264l1852h:\r
0716e834
L
4265 pop bc\r
4266 pop hl\r
4267 ret\r
b0b4005c
L
4268\r
4269arg.IDX_displcmnt:\r
0716e834
L
4270 push hl\r
4271 push bc\r
4272 ld a,(de)\r
4273 cp '('\r
4274 jr nz,l18a1h\r
4275 push de\r
4276 inc de\r
4277 ld hl,t_IX.IY\r
4278 call sub_030ah\r
4279 jr nc,l18a0h\r
4280 pop af\r
4281 ld a,0ddh\r
4282 dec b\r
4283 jr nz,l186eh\r
4284 ld a,0fdh\r
0c4244e5 4285l186eh:\r
0716e834
L
4286 ld (prefix_ixiy),a\r
4287 ld a,(de)\r
4288 cp '+'\r
4289 jr z,l1882h\r
4290 cp ')'\r
4291 ld hl,0\r
4292 jr z,l189ah\r
4293 cp '-'\r
4294 jp nz,ERROR\r
0c4244e5 4295l1882h:\r
0716e834
L
4296 push af\r
4297 inc de\r
4298 call arg.imm_8bit\r
4299 pop af\r
4300 cp '+'\r
4301 jr z,l1894h\r
4302 ld b,h\r
4303 ld c,l\r
4304 ld hl,0\r
4305 and a\r
4306 sbc hl,bc\r
0c4244e5 4307l1894h:\r
0716e834
L
4308 ld a,(de)\r
4309 cp ')'\r
4310 jp nz,ERROR\r
0c4244e5 4311l189ah:\r
0716e834
L
4312 inc de\r
4313 pop bc\r
4314 ld c,l\r
4315 pop hl\r
4316 scf\r
4317 ret\r
0c4244e5 4318l18a0h:\r
0716e834 4319 pop de\r
0c4244e5 4320l18a1h:\r
0716e834
L
4321 pop bc\r
4322 pop hl\r
4323 and a\r
4324 ret\r
0c4244e5 4325\r
b0b4005c 4326arg.cc_ZCPS:\r
0716e834
L
4327 ld hl,t_tstfl_ZCPS\r
4328 ld c,007h\r
4329 jr l18b1h\r
0c4244e5 4330\r
b0b4005c 4331arg.cc_ZC:\r
0716e834
L
4332 ld hl,t_tstfl_ZC\r
4333 ld c,003h\r
0c4244e5 4334l18b1h:\r
0716e834
L
4335 push bc\r
4336 call sub_030ah\r
4337 ld a,b\r
4338 pop bc\r
4339 ret nc\r
4340 and c\r
4341 rlca\r
4342 rlca\r
4343 rlca\r
4344 scf\r
4345 ret\r
0c4244e5
L
4346\r
4347assert_comma:\r
0716e834
L
4348 call next_arg\r
4349 ret z\r
0c4244e5 4350l18c2h:\r
0716e834 4351 jp ERROR\r
0c4244e5
L
4352\r
4353test_paren_close:\r
0716e834
L
4354 ld a,(de)\r
4355 cp ')'\r
4356 jr nz,l18c2h\r
4357 inc de\r
4358 ret\r
0c4244e5 4359\r
0c4244e5 4360cmd_L:\r
0716e834
L
4361 ld hl,cmd_L\r
4362 ld (cmd_rpt),hl\r
4363 call expr\r
4364 jr nc,l18dbh\r
4365 ld hl,(last_L)\r
0c4244e5 4366l18dbh:\r
0716e834
L
4367 push hl\r
4368 pop iy\r
4369 call next_arg\r
4370 call get_range\r
4371 jr nc,l1905h\r
4372 call assert_eol\r
4373 ld b,16\r
0c4244e5 4374l18ebh:\r
0716e834
L
4375 push bc\r
4376 push iy\r
4377 pop hl\r
4378 push hl\r
4379 call p_disas_line\r
4380 call crlf\r
4381 pop iy\r
4382 ld c,b\r
4383 ld b,0\r
4384 add iy,bc\r
4385 ld (last_L),iy\r
4386 pop bc\r
4387 djnz l18ebh\r
4388 ret\r
0c4244e5 4389l1905h:\r
0716e834
L
4390 call assert_eol\r
4391 ld h,b\r
4392 ld l,c\r
4393 ld a,b\r
4394 or c\r
4395 jr nz,l190fh\r
4396 dec hl\r
0c4244e5 4397l190fh:\r
0716e834
L
4398 push hl\r
4399 push iy\r
4400 pop hl\r
4401 push hl\r
4402 call p_disas_line\r
4403 call crlf\r
4404 pop iy\r
4405 ld e,b\r
4406 ld d,000h\r
4407 add iy,de\r
4408 ld (last_L),iy\r
4409 pop hl\r
4410 and a\r
4411 sbc hl,de\r
4412 ret z\r
4413 ret c\r
4414 jr l190fh\r
0c4244e5 4415\r
25a690e5 4416p_disas_line:\r
3f9577cd
L
4417 call p_label\r
4418 call outbl2\r
0716e834
L
4419 call out.hl.@\r
4420 call z,outbl\r
4421 call outbl\r
4422 sub a\r
4423 ld (con_col),a\r
4424 call p_disas_instr\r
4425 and a\r
4426 ret z\r
0c4244e5
L
4427\r
4428l193fh:\r
0716e834
L
4429 call outbl\r
4430 ld a,(con_col)\r
4431 cp 16\r
4432 jr c,l193fh\r
0c4244e5 4433\r
25a690e5 4434p_offset:\r
ac35765e 4435 ld de,(var.@)\r
0716e834
L
4436 ld a,d\r
4437 or e\r
4438 ret z\r
4439 call p_char_lparen\r
4440 ld a,'@'\r
4441 call outchar\r
4442 and a\r
4443 sbc hl,de\r
4444 call out_hl\r
4445 jp out_rparen\r
0c4244e5 4446\r
25a690e5 4447p_disas_instr:\r
0716e834
L
4448 sub a\r
4449 ld (l1ffdh),a\r
4450 call disas_get_instrlen\r
4451 jr nc,l197fh\r
4452 push bc\r
4453 call p_mnemonic\r
4454 ex de,hl\r
4455 call call_hl\r
4456 pop bc\r
4457 ld a,(l1ffdh)\r
4458 ld hl,(l1ffbh)\r
4459 scf\r
4460 ret\r
0c4244e5
L
4461\r
4462l197fh:\r
d1f2492e 4463 call pstr_inl\r
0c4244e5 4464 DC '???'\r
d1f2492e
L
4465 ld b,001h\r
4466 sub a\r
4467 ret\r
0c4244e5
L
4468\r
4469disas_get_instrlen:\r
0716e834
L
4470 sub a\r
4471 ld (isprefix_ixiy),a\r
4472 ld a,(iy+000h)\r
4473 cp 0edh\r
4474 jp z,disas_pfx.ED\r
4475 cp 0ddh\r
4476 jr z,l19abh\r
4477 cp 0fdh\r
4478 jr z,l19afh\r
0c4244e5 4479sub_19a0h:\r
0716e834
L
4480 ld a,(iy+000h)\r
4481 cp 0cbh\r
4482 jp z,disas_pfx.CB\r
4483 jp disas_nopfx\r
0c4244e5 4484l19abh:\r
0716e834
L
4485 ld a,1\r
4486 jr l19b1h\r
0c4244e5 4487l19afh:\r
0716e834 4488 ld a,2\r
0c4244e5 4489l19b1h:\r
0716e834
L
4490 ld (isprefix_ixiy),a\r
4491 call disas_pfx.DDFD\r
4492 ret nc\r
4493 push bc\r
4494 call sub_19a0h\r
4495 pop af\r
4496 add a,b\r
4497 ld b,a\r
4498 scf\r
4499 ret\r
0c4244e5 4500\r
0c4244e5 4501disas_pfx.DDFD:\r
0716e834
L
4502 inc iy\r
4503 ld hl,b_19ef_start\r
4504 call test_DDFD\r
4505 ld b,002h\r
4506 ret c\r
4507 ld hl,l1a0ah\r
4508 call test_DDFD\r
4509 ld b,001h\r
4510 ret c\r
4511 ld a,(iy+000h)\r
4512 cp 0cbh\r
4513 jr nz,l19edh\r
4514 ld a,(iy+002h)\r
4515 cp 036h\r
4516 ret z\r
4517 and 007h\r
4518 cp 006h\r
4519 jr nz,l19edh\r
4520 ld b,002h\r
4521 scf\r
4522 ret\r
0c4244e5 4523l19edh:\r
0716e834
L
4524 and a\r
4525 ret\r
0c4244e5 4526\r
eb982d46 4527; DD/FD 3 byte (ix+d)/(iy+d)\r
0c4244e5 4528b_19ef_start:\r
0716e834
L
4529 db 034h\r
4530 db 035h\r
4531 db 036h\r
4532 db 046h\r
4533 db 04eh\r
4534 db 056h\r
4535 db 05eh\r
4536 db 066h\r
4537 db 06eh\r
4538 db 070h\r
4539 db 071h\r
4540 db 072h\r
4541 db 073h\r
4542 db 074h\r
4543 db 075h\r
4544 db 077h\r
4545 db 07eh\r
4546 db 086h\r
4547 db 08eh\r
4548 db 096h\r
4549 db 09eh\r
4550 db 0a6h\r
4551 db 0aeh\r
4552 db 0b6h\r
4553 db 0beh\r
4554 db 0\r
0c4244e5 4555\r
eb982d46 4556; DD/FD 2 byte\r
0c4244e5 4557l1a0ah:\r
0716e834
L
4558 db 009h\r
4559 db 019h\r
4560 db 021h\r
4561 db 022h\r
4562 db 023h\r
4563 db 029h\r
4564 db 02ah\r
4565 db 02bh\r
4566 db 039h\r
4567 db 0e1h\r
4568 db 0e3h\r
4569 db 0e5h\r
4570 db 0e9h\r
4571 db 0f9h\r
4572 db 0\r
0c4244e5
L
4573\r
4574disas_pfx.ED:\r
0716e834
L
4575 inc iy\r
4576 ld hl,b_1bc9_start\r
4577 call sub_1a72h\r
4578 ld b,2\r
4579 ret c\r
4580 ld hl,b_1bf4_start\r
4581 call lookup_opc\r
4582 ld b,2\r
4583 ret c\r
b0b4005c
L
4584\r
4585 ld hl,l228bh\r
4586 call lookup_opc\r
4587 ld b,3\r
4588 ret c\r
0716e834
L
4589 ld hl,b_1c40_start\r
4590 call lookup_opc\r
4591 ld b,4\r
4592 ret\r
0c4244e5
L
4593\r
4594disas_pfx.CB:\r
0716e834
L
4595 push iy\r
4596 inc iy\r
4597 ld a,(isprefix_ixiy)\r
4598 and a\r
4599 jr z,l1a42h\r
4600 inc iy\r
0c4244e5 4601l1a42h:\r
0716e834
L
4602 ld hl,b_1c55_start\r
4603 call lookup_opc\r
4604 pop iy\r
4605 ld b,2\r
4606 ret\r
0c4244e5
L
4607\r
4608disas_nopfx:\r
0716e834
L
4609 ld hl,b_1b54_start\r
4610 call lookup_opc\r
4611 ld b,2\r
4612 ret c\r
4613 ld hl,b_1ab6_start\r
4614 call sub_1a72h\r
4615 ld b,1\r
4616 ret c\r
4617 ld hl,b_1ad1_start\r
4618 call lookup_opc\r
4619 ld b,1\r
4620 ret c\r
4621 ld hl,b_1b9b_start\r
4622 call lookup_opc\r
4623 ret nc\r
4624 ld b,3\r
4625 ret\r
0c4244e5
L
4626\r
4627sub_1a72h:\r
0716e834
L
4628 ld a,(hl)\r
4629 cp 0ffh\r
4630 ret z\r
4631 cp (iy+000h)\r
4632 jr z,l1a7fh\r
4633 inc hl\r
4634 inc hl\r
4635 jr sub_1a72h\r
0c4244e5 4636l1a7fh:\r
0716e834
L
4637 inc hl\r
4638 ld c,(hl)\r
4639 ld hl,t_MNEMONICS\r
4640 ld b,0\r
4641 add hl,bc\r
4642 ld de,l1c97h\r
4643 scf\r
4644 ret\r
0c4244e5
L
4645\r
4646test_DDFD:\r
0716e834
L
4647 ld a,(hl)\r
4648 and a\r
4649 ret z\r
4650 inc hl\r
4651 cp (iy+000h)\r
4652 jr nz,test_DDFD\r
4653 scf\r
4654 ret\r
0c4244e5
L
4655\r
4656lookup_opc:\r
0716e834
L
4657 ld a,(iy+000h)\r
4658 and (hl)\r
4659 inc hl\r
4660 cp (hl)\r
4661 jr z,l1aa8h\r
4662 inc hl\r
4663 inc hl\r
4664 inc hl\r
4665 inc hl\r
4666 ld a,(hl)\r
4667 and a\r
4668 jr nz,lookup_opc\r
4669 ret\r
0c4244e5 4670l1aa8h:\r
0716e834
L
4671 inc hl\r
4672 ld c,(hl)\r
4673 inc hl\r
4674 ld e,(hl)\r
4675 inc hl\r
4676 ld d,(hl)\r
4677 ld hl,t_MNEMONICS\r
4678 ld b,000h\r
4679 add hl,bc\r
4680 scf\r
4681 ret\r
0c4244e5 4682\r
b0b4005c
L
4683; 1 byte opcodes (no parameters)\r
4684; Format: db opcode, t_MNEMONICS-index\r
0c4244e5 4685b_1ab6_start:\r
b0b4005c
L
4686 db 076h,039h ;halt\r
4687 db 0d9h,036h ;exx\r
4688 db 0f3h,02ch ;di\r
4689 db 0fbh,032h ;ei\r
4690 db 000h,069h ;nop\r
4691 db 007h,09eh ;rlca\r
4692 db 00fh,0adh ;rrca\r
4693 db 017h,098h ;rla\r
4694 db 01fh,0a7h ;rra\r
4695 db 027h,026h ;daa\r
4696 db 02fh,023h ;cpl\r
4697 db 037h,0bah ;scf\r
4698 db 03fh,010h ;ccf\r
4699 db 0ffh\r
4700\r
0c4244e5
L
4701\r
4702; 1 byte opcodes\r
b0b4005c
L
4703; Format: db mask, match, t_MNEMONICS-index\r
4704; dw argument formating fuction\r
0c4244e5 4705b_1ad1_start:\r
b0b4005c 4706 db 0c0h,040h,056h ;ld r,r\r
25a690e5 4707 dw p_arg_r_r\r
b0b4005c 4708 db 0f8h,080h,003h ;add a,r\r
25a690e5 4709 dw p_arg_a_r\r
b0b4005c 4710 db 0f8h,088h,000h ;adc a,r\r
25a690e5
L
4711 dw p_arg_a_r\r
4712 db 0f8h,090h,0c9h ;sub r\r
4713 dw p_arg_rs\r
4714 db 0f8h,098h,0b7h ;sbc a,r\r
4715 dw p_arg_a_r\r
4716 db 0f8h,0a0h,006h ;and r\r
4717 dw p_arg_rs\r
4718 db 0f8h,0a8h,0cch ;xor r\r
4719 dw p_arg_rs\r
4720 db 0f8h,0b0h,06ch ;or r\r
4721 dw p_arg_rs\r
4722 db 0f8h,0b8h,013h ;cp r\r
4723 dw p_arg_rs\r
b0b4005c 4724 db 0c7h,0c0h,08bh ;ret cc\r
25a690e5 4725 dw p_arg_cc\r
b0b4005c
L
4726 db 0c7h,0c7h,0b4h ;rst\r
4727 dw l1c98h\r
4728 db 0ffh,0c9h,08bh ;ret\r
4729 dw l1c97h\r
4730 db 0cfh,0c1h,081h ;pop rr\r
25a690e5 4731 dw p_arg_zz\r
b0b4005c 4732 db 0cfh,0c5h,084h ;push rr\r
25a690e5 4733 dw p_arg_zz\r
b0b4005c
L
4734 db 0ffh,0e3h,034h ;ex (sp),hl\r
4735 dw l1ca0h\r
4736 db 0ffh,0e9h,052h ;jp (hl)\r
4737 dw l1caeh\r
4738 db 0ffh,0ebh,034h ;ex de,hl\r
25a690e5 4739 dw p_arg_ex_dehl\r
b0b4005c
L
4740 db 0ffh,0f9h,056h ;ld sp,hl\r
4741 dw l1cc1h\r
4742 db 0cfh,003h,041h ;inc rr\r
25a690e5 4743 dw p_arg_ww\r
b0b4005c 4744 db 0cfh,00bh,029h ;dec rr\r
25a690e5 4745 dw p_arg_ww\r
b0b4005c 4746 db 0c7h,004h,041h ;inc r\r
25a690e5 4747 dw p_arg_r\r
b0b4005c 4748 db 0c7h,005h,029h ;dec r\r
25a690e5 4749 dw p_arg_r\r
b0b4005c 4750 db 0ffh,008h,034h ;ex af,af'\r
25a690e5 4751 dw p_arg_ex_afaf\r
b0b4005c
L
4752 db 0cfh,009h,003h ;add hl,rr\r
4753 dw l1cd3h\r
4754 db 0efh,002h,056h ;ld (rr),a ;rr=bc,de\r
4755 dw l1cdch\r
4756 db 0efh,00ah,056h ;ld a,(rr) ;rr=bc,de\r
4757 dw l1ce5h\r
4758 db 0\r
0c4244e5
L
4759\r
4760; 2 byte opdodes\r
4761b_1b54_start:\r
b0b4005c
L
4762 db 0c7h,006h,056h ;ld r,nn\r
4763 dw l1cfah\r
4764 db 0ffh,0c6h,003h ;add a,nn\r
4765 dw l1cf5h\r
4766 db 0ffh,0ceh,000h ;adc a,nn\r
4767 dw l1cf5h\r
4768 db 0ffh,0d6h,0c9h ;sub a,nn\r
4769 dw l1d09h\r
4770 db 0ffh,0deh,0b7h ;sbc a,nn\r
4771 dw l1cf5h\r
4772 db 0ffh,0e6h,006h ;and a,nn\r
4773 dw l1d09h\r
4774 db 0ffh,0eeh,0cch ;xor nn\r
4775 dw l1d09h\r
4776 db 0ffh,0f6h,06ch ;or nn\r
4777 dw l1d09h\r
4778 db 0ffh,0feh,013h ;cp a,nn\r
4779 dw l1d09h\r
4780 db 0ffh,010h,02eh ;djnz\r
4781 dw l1d1ah\r
4782 db 0ffh,018h,054h ;jr\r
4783 dw l1d1ah\r
4784 db 0e7h,020h,054h ;jr,cc\r
4785 dw l1d0fh\r
4786 db 0ffh,0d3h,076h ;out (nn),a\r
4787 dw l1d37h\r
4788 db 0ffh,0dbh,03fh ;in a,(nn)\r
4789 dw l1d29h\r
4790 db 0\r
0c4244e5
L
4791\r
4792; 3 byte opcodes\r
4793b_1b9b_start:\r
25a690e5
L
4794 db 0c7h,0c2h,052h ;jp cc,mn\r
4795 dw p_arg_cc_mn\r
4796 db 0c7h,0c4h,00ch ;call cc,mn\r
4797 dw p_arg_cc_mn\r
4798 db 0cfh,001h,056h ;ld ww,mn\r
4799 dw p_arg_ww_mn\r
4800 db 0ffh,0c3h,052h ;jp mn\r
4801 dw p_arg_mn\r
4802 db 0ffh,0cdh,00ch ;call mn\r
4803 dw p_arg_mn\r
4804 db 0ffh,022h,056h ;ld (mn),hl\r
4805 dw p_arg_addr_hl\r
4806 db 0ffh,02ah,056h ;ld hl,(mn)\r
4807 dw p_arg_hl_addr\r
4808 db 0ffh,032h,056h ;ld (mn),a\r
4809 dw p_arg_addr_a\r
4810 db 0ffh,03ah,056h ;ld a,(mn)\r
4811 dw p_arg_a_addr\r
b0b4005c
L
4812 db 0\r
4813\r
4814; Prefix ED + 1 byte opcode, no arguments\r
4815; Format: opcode, t_MNEMONICS index\r
0c4244e5 4816b_1bc9_start:\r
b0b4005c
L
4817 db 044h,066h ;neg\r
4818 db 045h,092h ;retn\r
4819 db 04dh,08eh ;reti\r
4820 db 067h,0b1h ;rrd\r
4821 db 06fh,0a2h ;rld\r
4822 db 0a0h,05fh ;ldi\r
4823 db 0a1h,01ch ;cpi\r
4824 db 0a2h,04bh ;ini\r
4825 db 0a3h,07dh ;outi\r
4826 db 0a8h,058h ;ldd\r
4827 db 0a9h,015h ;cpd\r
4828 db 0aah,044h ;ind\r
4829 db 0abh,079h ;outd\r
4830 db 0b0h,062h ;ldir\r
4831 db 0b1h,01fh ;cpir\r
4832 db 0b2h,04eh ;inir\r
4833 db 0b3h,072h ;otir\r
4834 db 0b8h,05bh ;lddr\r
4835 db 0b9h,018h ;cpdr\r
4836 db 0bah,047h ;indr\r
4837 db 0bbh,06eh ;otdr\r
4838 db 08bh,0d5h ;otdm\r
4839 db 09bh,0d9h ;otdmr\r
4840 db 083h,0deh ;otim\r
4841 db 093h,0e2h ;otimr\r
4842 db 076h,0ebh ;slp\r
4843 db 0ffh ;<end mark>\r
0c4244e5
L
4844\r
4845b_1bf4_start:\r
646e8b05 4846 db 0e7h,040h,03fh ;in r,(c) ;r=b,c,d,e\r
25a690e5 4847 dw p_arg_in_c ;\r
646e8b05 4848 db 0f7h,060h,03fh ;in r,(c) ;r=h,l\r
25a690e5 4849 dw p_arg_in_c ;\r
b0b4005c 4850 db 0ffh,078h,03fh ;in r,(c) ;r=a\r
25a690e5 4851 dw p_arg_in_c ;\r
646e8b05 4852 db 0e7h,041h,076h ;out (c),r ;r=b,c,d,e\r
25a690e5 4853 dw p_arg_out_c ;\r
646e8b05 4854 db 0f7h,061h,076h ;out (c),r ;r=h,l\r
25a690e5 4855 dw p_arg_out_c ;\r
b0b4005c 4856 db 0ffh,079h,076h ;out (c),r ;r=a\r
25a690e5 4857 dw p_arg_out_c ;\r
b0b4005c
L
4858 db 0cfh,042h,0b7h ;sbc hl,rr\r
4859 dw l1dcah ;\r
4860 db 0cfh,04ah,000h ;adc hl,rr\r
4861 dw l1dcah ;\r
4862 db 0ffh,046h,03dh ;im 0\r
4863 dw l1d85h ;\r
4864 db 0ffh,056h,03dh ;im 1\r
4865 dw l1d89h ;\r
4866 db 0ffh,05eh,03dh ;im 2\r
4867 dw l1d8dh ;\r
4868 db 0ffh,047h,056h ;ld i,a\r
4869 dw l1d92h ;\r
4870 db 0ffh,057h,056h ;ld a,i\r
4871 dw l1d97h ;\r
4872 db 0ffh,04fh,056h ;ld r,a\r
4873 dw l1d9ch ;\r
4874 db 0ffh,05fh,056h ;ld a,r\r
4875 dw l1da1h\r
4876 db 0cfh,04ch,0d2h ;mlt rr\r
25a690e5 4877 dw p_arg_ww\r
b0b4005c 4878 db 0c7h,004h,0eeh ;tst r\r
25a690e5 4879 dw p_arg_r\r
b0b4005c
L
4880 db 0\r
4881\r
4882l228bh:\r
646e8b05 4883 db 0e7h,000h,0cfh ;in0 r,(m) ;r=b,c,d,e\r
25a690e5 4884 dw p_arg_r_m\r
646e8b05 4885 db 0f7h,020h,0cfh ;in0 r,(m) ;r=h,l\r
25a690e5 4886 dw p_arg_r_m\r
b0b4005c 4887 db 0ffh,038h,0cfh ;in0 a,(m)\r
25a690e5 4888 dw p_arg_r_m\r
646e8b05 4889 db 0e7h,001h,0e7h ;out0 (m),r ;r=b,c,d,e\r
25a690e5 4890 dw p_arg_m_r\r
646e8b05 4891 db 0f7h,021h,0e7h ;out0 (m),r ;r=h,l\r
25a690e5 4892 dw p_arg_m_r\r
b0b4005c 4893 db 0ffh,039h,0e7h ;out0 (m),a\r
25a690e5 4894 dw p_arg_m_r\r
b0b4005c
L
4895 db 0ffh,064h,0eeh ;tst m\r
4896 dw l1d09h\r
4897 db 0ffh,074h,0f1h ;tstio m\r
4898 dw l1d09h\r
4899 db 0\r
0c4244e5
L
4900\r
4901b_1c40_start:\r
b0b4005c 4902 db 0efh,043h,056h ;ld (mn),ww ;ww=bc,de\r
25a690e5 4903 dw p_arg_addr_ww\r
b0b4005c 4904 db 0ffh,073h,056h ;ld (mn),sp\r
25a690e5 4905 dw p_arg_addr_ww\r
b0b4005c 4906 db 0efh,04bh,056h ;ld ww,(mn) ;ww=bc,de\r
25a690e5 4907 dw p_arg_ww_addr\r
b0b4005c 4908 db 0ffh,07bh,056h ;ld sp,(mn)\r
25a690e5 4909 dw p_arg_ww_addr\r
b0b4005c
L
4910 db 0\r
4911\r
4912; CB\r
0c4244e5 4913b_1c55_start:\r
b0b4005c
L
4914 db 0f8h,000h,09bh ;rlc g\r
4915 dw l1e03h\r
4916 db 0f8h,008h,0aah ;rrc g\r
4917 dw l1e03h\r
4918 db 0f8h,010h,096h ;rl g\r
4919 dw l1e03h\r
4920 db 0f8h,018h,0a5h ;rr g\r
4921 dw l1e03h\r
4922 db 0f8h,020h,0c0h ;sla g\r
4923 dw l1e03h\r
4924 db 0f8h,028h,0c3h ;sra g\r
4925 dw l1e03h\r
4926 db 0f8h,038h,0c6h ;srl g\r
4927 dw l1e03h\r
4928 db 0c0h,040h,009h ;bit b,g\r
25a690e5 4929 dw p_arg_bitop\r
b0b4005c 4930 db 0c0h,080h,088h ;res b,g\r
25a690e5 4931 dw p_arg_bitop\r
b0b4005c 4932 db 0c0h,0c0h,0bdh ;set b,g\r
25a690e5 4933 dw p_arg_bitop\r
b0b4005c 4934 db 0\r
0c4244e5 4935\r
25a690e5 4936p_arg_r_r:\r
0716e834
L
4937 call p_arg_r\r
4938 call p_char_comma\r
4939 jp p_arg_rs\r
25a690e5 4940p_arg_a_r:\r
0716e834
L
4941 call p_A_comma\r
4942 jp p_arg_rs\r
0c4244e5 4943l1c97h:\r
0716e834 4944 ret\r
b0b4005c 4945\r
25a690e5
L
4946p_arg_r_m:\r
4947 call p_arg_r\r
4948 call p_char_comma\r
b0b4005c 4949 jp sub_1d2ch\r
25a690e5
L
4950\r
4951p_arg_m_r:\r
b0b4005c 4952 call sub_1d2ch\r
25a690e5
L
4953 call p_char_comma\r
4954 jp p_arg_r\r
b0b4005c 4955\r
0c4244e5 4956l1c98h:\r
0716e834
L
4957 ld a,(iy+000h)\r
4958 and 038h\r
4959 jp out_hex\r
25a690e5 4960\r
0c4244e5 4961l1ca0h:\r
0716e834 4962 call pstr_inl\r
0c4244e5 4963 DC '(SP),'\r
0716e834 4964 jp p_arg_hlixiy\r
25a690e5 4965\r
0c4244e5 4966l1caeh:\r
0716e834
L
4967 call p_char_lparen\r
4968 call p_arg_hlixiy\r
25a690e5
L
4969 jr out_rparen\r
4970\r
4971p_arg_ex_dehl:\r
0716e834
L
4972 ld hl,l1773h\r
4973 jp pstr\r
25a690e5 4974\r
0c4244e5 4975l1cc1h:\r
d1f2492e 4976 call pstr_inl\r
0c4244e5 4977 DC 'SP,'\r
d1f2492e 4978 jp p_arg_hlixiy\r
25a690e5
L
4979\r
4980p_arg_ex_afaf:\r
0716e834
L
4981 ld hl,b_176d_start\r
4982 jp pstr\r
25a690e5 4983\r
0c4244e5 4984l1cd3h:\r
0716e834
L
4985 call p_arg_hlixiy\r
4986 call p_char_comma\r
4987 jp p_arg_ww\r
0c4244e5 4988l1cdch:\r
0716e834
L
4989 call sub_1ce8h\r
4990 call p_char_comma\r
4991 jp p_char_A\r
0c4244e5
L
4992\r
4993l1ce5h:\r
0716e834 4994 call p_A_comma\r
0c4244e5 4995sub_1ce8h:\r
0716e834
L
4996 call p_char_lparen\r
4997 call p_arg_ww\r
25a690e5 4998out_rparen:\r
0716e834 4999 jp p_char_rparen\r
25a690e5 5000\r
0c4244e5 5001l1cf5h:\r
0716e834
L
5002 call p_A_comma\r
5003 jr l1d09h\r
0c4244e5 5004l1cfah:\r
0716e834
L
5005 call p_arg_r\r
5006 call p_char_comma\r
5007 ld a,(isprefix_ixiy)\r
5008 and a\r
5009 ld a,(iy+002h)\r
5010 jr nz,l1d0ch\r
0c4244e5 5011l1d09h:\r
0716e834 5012 ld a,(iy+001h)\r
0c4244e5 5013l1d0ch:\r
0716e834 5014 jp out_hex\r
b0b4005c 5015\r
0c4244e5 5016l1d0fh:\r
0716e834
L
5017 ld a,(iy+000h)\r
5018 and 018h\r
5019 call p_arg_cc0\r
5020 call p_char_comma\r
0c4244e5 5021l1d1ah:\r
0716e834
L
5022 ld c,(iy+001h)\r
5023 ld a,c\r
5024 rla\r
5025 sbc a,a\r
5026 ld b,a\r
5027 push iy\r
5028 pop hl\r
5029 add hl,bc\r
5030 inc hl\r
5031 inc hl\r
5032 jr l1d4eh\r
0c4244e5 5033l1d29h:\r
0716e834 5034 call p_A_comma\r
0c4244e5 5035sub_1d2ch:\r
0716e834
L
5036 call p_char_lparen\r
5037 ld a,(iy+001h)\r
5038 jp l1e6bh\r
0c4244e5 5039l1d37h:\r
0716e834 5040 call sub_1d2ch\r
25a690e5
L
5041 jr p_char_comma_A\r
5042\r
5043p_arg_cc_mn:\r
0716e834
L
5044 call p_arg_cc\r
5045 call p_char_comma\r
25a690e5 5046p_arg_mn:\r
0716e834
L
5047 ld l,(iy+001h)\r
5048 ld h,(iy+002h)\r
0c4244e5 5049l1d4eh:\r
0716e834 5050 ld a,002h\r
0c4244e5 5051sub_1d50h:\r
0716e834
L
5052 ld (l1ffdh),a\r
5053 ld (l1ffbh),hl\r
5054 call out_hl\r
5055 ret\r
25a690e5 5056p_arg_ww_mn:\r
0716e834
L
5057 call p_arg_ww\r
5058 call p_char_comma\r
5059 jr p_arg_mn\r
25a690e5
L
5060\r
5061p_arg_addr_hl:\r
0716e834
L
5062 call sub_1e13h\r
5063 call p_char_comma\r
5064 jp p_arg_hlixiy\r
25a690e5 5065p_arg_hl_addr:\r
0716e834
L
5066 call p_arg_hlixiy\r
5067 call p_char_comma\r
5068 jp sub_1e13h\r
25a690e5
L
5069\r
5070p_arg_addr_a:\r
0716e834 5071 call sub_1e13h\r
25a690e5 5072p_char_comma_A:\r
0716e834 5073 call p_char_comma\r
25a690e5 5074p_char_A:\r
0716e834
L
5075 ld a,'A'\r
5076 jr outchar1\r
25a690e5 5077p_arg_a_addr:\r
0716e834
L
5078 call p_A_comma\r
5079 jp sub_1e13h\r
0c4244e5 5080l1d85h:\r
0716e834
L
5081 ld a,'0'\r
5082 jr outchar1\r
0c4244e5 5083l1d89h:\r
0716e834
L
5084 ld a,'1'\r
5085 jr outchar1\r
0c4244e5 5086l1d8dh:\r
0716e834
L
5087 ld a,'2'\r
5088 jr outchar1\r
25a690e5
L
5089\r
5090p_A_comma:\r
0716e834 5091 call p_char_A\r
25a690e5 5092p_char_comma:\r
0716e834 5093 ld a,','\r
25a690e5 5094outchar1:\r
0716e834 5095 jp outchar\r
25a690e5 5096\r
0c4244e5 5097l1d92h:\r
0716e834
L
5098 ld hl,b_1da7_start\r
5099 jr l1da4h\r
0c4244e5 5100l1d97h:\r
0716e834
L
5101 ld hl,l1daah\r
5102 jr l1da4h\r
0c4244e5 5103l1d9ch:\r
0716e834
L
5104 ld hl,l1dadh\r
5105 jr l1da4h\r
0c4244e5 5106l1da1h:\r
0716e834 5107 ld hl,l1db0h\r
0c4244e5 5108l1da4h:\r
0716e834 5109 jp pstr\r
0c4244e5
L
5110\r
5111b_1da7_start:\r
5112 DC 'I,A'\r
5113l1daah:\r
5114 DC 'A,I'\r
5115l1dadh:\r
5116 DC 'R,A'\r
5117l1db0h:\r
5118 DC 'A,R'\r
5119\r
25a690e5 5120p_arg_in_c:\r
0716e834
L
5121 call p_arg_r\r
5122 call p_char_comma\r
5123 ld hl,t__C_\r
5124 jp pstr\r
25a690e5
L
5125\r
5126p_arg_out_c:\r
0716e834
L
5127 ld hl,t__C_\r
5128 call pstr\r
5129 call p_char_comma\r
5130 jr p_arg_r\r
25a690e5 5131\r
0c4244e5 5132l1dcah:\r
0716e834
L
5133 call p_arg_hlixiy\r
5134 call p_char_comma\r
5135 jp p_arg_ww\r
25a690e5
L
5136\r
5137p_arg_addr_ww:\r
0716e834
L
5138 call sub_1e13h\r
5139 call p_char_comma\r
5140 jp p_arg_ww\r
25a690e5
L
5141\r
5142p_arg_ww_addr:\r
0716e834
L
5143 call p_arg_ww\r
5144 call p_char_comma\r
5145 jr sub_1e13h\r
25a690e5
L
5146\r
5147p_arg_bitop:\r
0716e834
L
5148 ld a,(isprefix_ixiy)\r
5149 and a\r
5150 jr nz,l1defh\r
5151 ld a,(iy+001h)\r
5152 jr l1df2h\r
0c4244e5 5153l1defh:\r
0716e834 5154 ld a,(iy+002h)\r
0c4244e5 5155l1df2h:\r
0716e834
L
5156 push af\r
5157 rra\r
5158 rra\r
5159 rra\r
5160 and 007h\r
5161 add a,'0'\r
5162 call outchar\r
5163 call p_char_comma\r
5164 pop af\r
5165 jr p_arg_r0\r
25a690e5 5166\r
0c4244e5 5167l1e03h:\r
0716e834
L
5168 ld a,(isprefix_ixiy)\r
5169 and a\r
5170 jr nz,l1e0eh\r
5171 ld a,(iy+001h)\r
5172 jr l1e11h\r
0c4244e5 5173l1e0eh:\r
0716e834 5174 ld a,(iy+002h)\r
0c4244e5 5175l1e11h:\r
0716e834 5176 jr p_arg_r0\r
25a690e5 5177\r
0c4244e5 5178sub_1e13h:\r
0716e834
L
5179 call p_char_lparen\r
5180 ld l,(iy+001h)\r
5181 ld h,(iy+002h)\r
5182 ld a,001h\r
5183 call sub_1d50h\r
25a690e5
L
5184\r
5185p_char_rparen:\r
0716e834
L
5186 ld a,')'\r
5187 jp outchar\r
25a690e5
L
5188\r
5189p_arg_r:\r
0716e834
L
5190 ld a,(iy+000h)\r
5191 rra\r
5192 rra\r
5193 rra\r
5194 jr p_arg_r0\r
25a690e5 5195p_arg_rs:\r
0716e834 5196 ld a,(iy+000h)\r
25a690e5 5197p_arg_r0:\r
0716e834
L
5198 and 007h\r
5199 cp 006h\r
5200 jr nz,p_arg_r1\r
5201 ld a,(isprefix_ixiy)\r
5202 and a\r
5203 ld a,006h\r
5204 jr z,p_arg_r1\r
5205 ld hl,b_1e78_start\r
5206 ld a,(isprefix_ixiy)\r
5207 dec a\r
5208 jr z,l1e4dh\r
5209 ld hl,l1e7bh\r
0c4244e5 5210l1e4dh:\r
0716e834
L
5211 call pstr\r
5212 ld a,(iy+001h)\r
5213 and a\r
5214 jp m,l1e61h\r
5215 ld a,'+'\r
5216 call outchar\r
5217 ld a,(iy+001h)\r
5218 jr l1e6bh\r
0c4244e5 5219l1e61h:\r
0716e834
L
5220 ld a,'-'\r
5221 call outchar\r
5222 ld a,(iy+001h)\r
5223 neg\r
0c4244e5 5224l1e6bh:\r
0716e834 5225 call out_hex\r
25a690e5 5226 jr p_char_rparen\r
646e8b05 5227\r
25a690e5 5228p_arg_r1:\r
0716e834
L
5229 ld hl,t_BCDEHL_HL_A\r
5230 jr p_arg\r
0c4244e5
L
5231\r
5232b_1e78_start:\r
5233 DC '(IX'\r
5234l1e7bh:\r
5235 DC '(IY'\r
646e8b05 5236\r
25a690e5 5237p_arg_hlixiy:\r
0716e834
L
5238 ld a,(isprefix_ixiy)\r
5239 ld hl,t_HL.IX.IY\r
5240 jr p_arg\r
25a690e5 5241p_arg_zz:\r
0716e834
L
5242 ld hl,t_BC.DE.HL.AF\r
5243 jr l1e8eh\r
25a690e5 5244p_arg_ww:\r
0716e834 5245 ld hl,t_BC.DE.HL.SP\r
0c4244e5 5246l1e8eh:\r
0716e834
L
5247 ld a,(iy+000h)\r
5248 rra\r
5249 rra\r
5250 rra\r
5251 rra\r
5252 and 003h\r
5253 cp 002h\r
5254 jr z,p_arg_hlixiy\r
5255 jr p_arg\r
646e8b05 5256\r
25a690e5 5257p_arg_cc:\r
0716e834 5258 ld a,(iy+000h)\r
25a690e5 5259p_arg_cc0:\r
0716e834
L
5260 rra\r
5261 rra\r
5262 rra\r
5263 and 007h\r
5264 ld hl,t_tstfl_ZCPS\r
25a690e5 5265p_arg:\r
0716e834
L
5266 ld b,a\r
5267 call sel_dc_string\r
5268 jp pstr\r
0c4244e5 5269\r
25a690e5 5270p_mnemonic:\r
0716e834 5271 call pstr\r
0c4244e5 5272l1ebch:\r
0716e834
L
5273 call outbl\r
5274 inc c\r
5275 ld a,c\r
5276 cp 5\r
5277 jr c,l1ebch\r
5278 ret\r
0c4244e5
L
5279\r
5280t_MNEMONICS:\r
5281 DC 'ADC'\r
5282 DC 'ADD'\r
5283 DC 'AND'\r
5284 DC 'BIT'\r
5285 DC 'CALL'\r
5286 DC 'CCF'\r
5287 DC 'CP'\r
5288 DC 'CPD'\r
5289 DC 'CPDR'\r
5290 DC 'CPI'\r
5291 DC 'CPIR'\r
5292 DC 'CPL'\r
5293 DC 'DAA'\r
5294 DC 'DEC'\r
5295 DC 'DI'\r
5296 DC 'DJNZ'\r
5297 DC 'EI'\r
5298 DC 'EX'\r
5299 DC 'EXX'\r
5300 DC 'HALT'\r
5301 DC 'IM'\r
5302 DC 'IN'\r
5303 DC 'INC'\r
5304 DC 'IND'\r
5305 DC 'INDR'\r
5306 DC 'INI'\r
5307 DC 'INIR'\r
5308 DC 'JP'\r
5309 DC 'JR'\r
5310 DC 'LD'\r
5311 DC 'LDD'\r
5312 DC 'LDDR'\r
5313 DC 'LDI'\r
5314 DC 'LDIR'\r
5315 DC 'NEG'\r
5316 DC 'NOP'\r
5317 DC 'OR'\r
5318 DC 'OTDR'\r
5319 DC 'OTIR'\r
5320 DC 'OUT'\r
5321 DC 'OUTD'\r
5322 DC 'OUTI'\r
5323 DC 'POP'\r
5324 DC 'PUSH'\r
5325 DC 'RES'\r
5326 DC 'RET'\r
5327 DC 'RETI'\r
5328 DC 'RETN'\r
5329 DC 'RL'\r
5330 DC 'RLA'\r
5331 DC 'RLC'\r
5332 DC 'RLCA'\r
5333 DC 'RLD'\r
5334 DC 'RR'\r
5335 DC 'RRA'\r
5336 DC 'RRC'\r
5337 DC 'RRCA'\r
5338 DC 'RRD'\r
5339 DC 'RST'\r
5340 DC 'SBC'\r
5341 DC 'SCF'\r
5342 DC 'SET'\r
5343 DC 'SLA'\r
5344 DC 'SRA'\r
5345 DC 'SRL'\r
5346 DC 'SUB'\r
5347 DC 'XOR'\r
0c4244e5
L
5348 DC 'IN0'\r
5349 DC 'MLT'\r
5350 DC 'OTDM'\r
5351 DC 'OTDMR'\r
5352 DC 'OTIM'\r
5353 DC 'OTIMR'\r
5354 DC 'OUT0'\r
5355 DC 'SLP'\r
5356 DC 'TST'\r
5357 DC 'TSTIO'\r
0c4244e5
L
5358 DB 0\r
5359\r
5360t_BCDEHL_HL_A:\r
5361 DC 'B'\r
5362 DC 'C'\r
5363 DC 'D'\r
5364 DC 'E'\r
5365 DC 'H'\r
5366 DC 'L'\r
5367 DC '(HL)'\r
5368 DC 'A'\r
5369 DB 0\r
5370t_BC.DE.HL.SP:\r
5371 DC 'BC'\r
5372 DC 'DE'\r
5373 DC 'HL'\r
5374 DC 'SP'\r
5375 DB 0\r
5376t_BC.DE.HL.AF:\r
5377 DC 'BC'\r
5378 DC 'DE'\r
5379t_HL.AF:\r
5380 DC 'HL'\r
5381 DC 'AF'\r
5382 DB 0\r
5383t_BC.DE.IY.SP:\r
5384 DC 'BC'\r
5385 DC 'DE'\r
5386 DC 'IY'\r
5387 DC 'SP'\r
5388 DB 0\r
5389t_BC.DE.IX.SP:\r
5390 DC 'BC'\r
5391 DC 'DE'\r
5392 DC 'IX'\r
5393 DC 'SP'\r
5394 DB 0\r
5395t_HL.IX.IY:\r
5396 DC 'HL'\r
5397t_IX.IY:\r
5398 DC 'IX'\r
5399 DC 'IY'\r
5400 DB 0\r
5401t_tstfl_ZC:\r
5402 DC 'NZ'\r
5403 DC 'Z'\r
5404 DC 'NC'\r
5405 DC 'C'\r
5406 DC 'NE'\r
5407 DC 'EQ'\r
5408 DC 'GE'\r
5409 DC 'LT'\r
5410 DB 0\r
5411t_tstfl_ZCPS:\r
5412 DC 'NZ'\r
5413 DC 'Z'\r
5414 DC 'NC'\r
5415 DC 'C'\r
5416 DC 'PO'\r
5417 DC 'PE'\r
5418 DC 'P'\r
5419 DC 'M'\r
5420 DC 'NE'\r
5421 DC 'EQ'\r
5422 DC 'GE'\r
5423 DC 'LT'\r
5424 DC 'NV'\r
5425 DC 'V'\r
5426 DB 0\r
5427t__C_:\r
5428 DC '(C)'\r
5429 DB 0\r
5430\r
0c4244e5 5431sub_1ffeh:\r
ac35765e 5432 ld hl,(reg.pc)\r
0716e834
L
5433 ld a,h\r
5434 or l\r
5435 jr z,l2037h\r
5436 ld de,BDOS\r
5437 and a\r
5438 sbc hl,de\r
5439 ld hl,l20edh\r
5440 jr z,l2031h\r
ac35765e 5441 ld iy,(reg.pc)\r
0716e834
L
5442 call disas_get_instrlen\r
5443 jp nc,ERROR\r
5444 ld c,b\r
5445 ld b,000h\r
ac35765e 5446 ld hl,(reg.pc)\r
0716e834
L
5447 add hl,bc\r
5448 call sub_09cah\r
ac35765e 5449 ld iy,(reg.pc)\r
0716e834
L
5450 ld hl,b_2039_start\r
5451 call lookup_opc\r
5452 ccf\r
5453 ret c\r
5454 ex de,hl\r
0c4244e5 5455l2031h:\r
0716e834
L
5456 call CALL_HL\r
5457 call c,sub_09cah\r
0c4244e5 5458l2037h:\r
0716e834
L
5459 scf\r
5460 ret\r
0c4244e5
L
5461\r
5462b_2039_start:\r
646e8b05 5463 db 0ffh,0ddh,000h ;Prefix DD\r
b0b4005c 5464 dw l20a7h\r
646e8b05 5465 db 0ffh,0fdh,000h ;Prefix FD\r
b0b4005c 5466 dw l20ach\r
646e8b05 5467 db 0ffh,0edh,000h ;Prefix ED\r
b0b4005c 5468 dw l20b8h\r
0c4244e5
L
5469\r
5470b_2048_start:\r
646e8b05 5471 db 0ffh,0cdh,000h ;call mn\r
b0b4005c 5472 dw l2080h\r
646e8b05 5473 db 0ffh,0c3h,000h ;jp mn\r
b0b4005c 5474 dw l208bh\r
646e8b05 5475 db 0ffh,0e9h,000h ;jp ()\r
b0b4005c 5476 dw l20a2h\r
646e8b05 5477 db 0ffh,0c9h,000h ;ret\r
b0b4005c 5478 dw l20dch\r
646e8b05 5479 db 0ffh,0cfh,000h ;rst 8\r
b0b4005c 5480 dw l2115h\r
646e8b05 5481 db 0c7h,0c7h,000h ;\r
b0b4005c 5482 dw l20f9h\r
646e8b05 5483 db 0c7h,0c4h,000h ;\r
b0b4005c 5484 dw l2080h\r
646e8b05 5485 db 0f7h,010h,000h ;\r
b0b4005c 5486 dw l2093h\r
646e8b05 5487 db 0e7h,020h,000h ;\r
b0b4005c 5488 dw l2093h\r
646e8b05 5489 db 0c7h,0c2h,000h ;\r
b0b4005c 5490 dw l208bh\r
646e8b05 5491 db 0c7h,0c0h,000h ;\r
b0b4005c
L
5492 dw l20c5h\r
5493 db 0\r
0c4244e5
L
5494\r
5495l2080h:\r
0716e834
L
5496 ld a,(b_21e2_start)\r
5497 and a\r
5498 jr nz,l208bh\r
5499 ld a,(trace_call_flag)\r
5500 and a\r
5501 ret nz\r
0c4244e5 5502l208bh:\r
0716e834
L
5503 ld l,(iy+001h)\r
5504 ld h,(iy+002h)\r
5505 scf\r
5506 ret\r
0c4244e5 5507l2093h:\r
0716e834
L
5508 ld c,(iy+001h)\r
5509 ld a,c\r
5510 rla\r
5511 sbc a,a\r
5512 ld b,a\r
ac35765e 5513 ld hl,(reg.pc)\r
0716e834
L
5514 add hl,bc\r
5515 inc hl\r
5516 inc hl\r
5517 scf\r
5518 ret\r
0c4244e5 5519l20a2h:\r
0716e834
L
5520 ld hl,(reg.l)\r
5521 scf\r
5522 ret\r
0c4244e5 5523l20a7h:\r
0716e834
L
5524 ld hl,(reg.ix)\r
5525 jr l20afh\r
0c4244e5 5526l20ach:\r
0716e834 5527 ld hl,(reg.iy)\r
0c4244e5 5528l20afh:\r
0716e834
L
5529 ld a,(iy+001h)\r
5530 cp 0e9h\r
5531 scf\r
5532 ret z\r
5533 and a\r
5534 ret\r
0c4244e5 5535l20b8h:\r
0716e834
L
5536 ld a,(iy+001h)\r
5537 cp 04dh\r
5538 jr z,l20dch\r
5539 cp 045h\r
5540 jr z,l20dch\r
5541 and a\r
5542 ret\r
0c4244e5 5543l20c5h:\r
0716e834
L
5544 ld a,(iy+000h)\r
5545 ld (l20d7h),a\r
5546 ld hl,(reg.f)\r
5547 push hl\r
5548 pop af\r
5549 call l20d7h\r
5550 scf\r
5551 jr c,l20dch\r
5552 ret\r
0c4244e5 5553l20d7h:\r
0716e834
L
5554 nop\r
5555 and a\r
5556 pop hl\r
5557 inc hl\r
5558 jp (hl)\r
0c4244e5
L
5559\r
5560l20dch:\r
0716e834
L
5561 ld a,(b_21e2_start)\r
5562 and a\r
5563 jr nz,l20edh\r
5564 ld a,(trace_call_flag)\r
5565 and a\r
5566 jr z,l20edh\r
5567 call l20edh\r
5568 pop hl\r
5569 ret\r
0c4244e5 5570l20edh:\r
0716e834
L
5571 ld hl,(reg_sp)\r
5572 ld e,(hl)\r
5573 inc hl\r
5574 ld d,(hl)\r
5575 ex de,hl\r
5576 call sub_09cah\r
5577 and a\r
5578 ret\r
0c4244e5
L
5579\r
5580l20f9h:\r
0716e834
L
5581 ld a,(l0003h)\r
5582 cp (iy+000h)\r
5583 ret z\r
5584 ld a,(iy+000h)\r
5585 and 038h\r
5586 ld l,a\r
5587 ld h,000h\r
5588 ld a,(b_21e2_start)\r
5589 and a\r
5590 jr nz,l2113h\r
5591 ld a,(trace_call_flag)\r
5592 and a\r
5593 ret nz\r
0c4244e5 5594l2113h:\r
0716e834
L
5595 scf\r
5596 ret\r
0c4244e5 5597l2115h:\r
0716e834
L
5598 and a\r
5599 ret\r
0c4244e5 5600cmd_C:\r
0716e834
L
5601 ld hl,cmd_C\r
5602 ld a,001h\r
5603 jr l2122h\r
0c4244e5 5604cmd_T:\r
0716e834
L
5605 xor a\r
5606 ld hl,cmd_T\r
0c4244e5 5607l2122h:\r
0716e834
L
5608 ld (cmd_rpt),hl\r
5609 ld (trace_call_flag),a\r
5610 ld a,(de)\r
5611 sub 'N'\r
5612 jr nz,l212eh\r
5613 inc de\r
0c4244e5 5614l212eh:\r
0716e834
L
5615 ld (trace_N_flag),a\r
5616 ld a,(de)\r
5617 sub 'J'\r
5618 jr nz,l2137h\r
5619 inc de\r
0c4244e5 5620l2137h:\r
0716e834
L
5621 ld (trace_J_flag),a\r
5622 call sub_21a6h\r
5623 jr z,l2145h\r
5624 ld hl,1\r
5625 call get_lastarg_def\r
0c4244e5 5626l2145h:\r
0716e834
L
5627 ld (trace_count),hl\r
5628 sub a\r
5629 ld (l0941h),a\r
0c4244e5 5630l214ch:\r
0716e834
L
5631 call sub_1ffeh\r
5632 jr l21a3h\r
0c4244e5
L
5633\r
5634l2151h:\r
0716e834
L
5635 call bp_clr_temporary\r
5636 ld a,(trace_J_flag)\r
5637 and a\r
5638 jr nz,l216bh\r
ac35765e 5639 ld iy,(reg.pc)\r
0716e834
L
5640 call sub_21c8h\r
5641 jr z,l216bh\r
5642 ld hl,b_2048_start\r
5643 call lookup_opc\r
5644 jr nc,l214ch\r
0c4244e5 5645l216bh:\r
0716e834
L
5646 ld a,(trace_UW_flag)\r
5647 and a\r
5648 jr z,l2188h\r
5649 ld de,(trace_count)\r
5650 call expr\r
5651 ld a,h\r
5652 or l\r
5653 add a,0ffh\r
5654 sbc a,a\r
5655 ld hl,trace_UW_flag\r
5656 xor (hl)\r
5657 bit 1,a\r
5658 jr z,l2193h\r
0c4244e5 5659l2185h:\r
0716e834 5660 jp l0902h\r
0c4244e5 5661l2188h:\r
0716e834
L
5662 ld hl,(trace_count)\r
5663 dec hl\r
5664 ld (trace_count),hl\r
5665 ld a,h\r
5666 or l\r
5667 jr z,l2185h\r
0c4244e5 5668l2193h:\r
0716e834
L
5669 call sub_1ffeh\r
5670 jr nc,l2185h\r
5671 ld a,(trace_N_flag)\r
5672 ld b,a\r
5673 ld a,(l0941h)\r
5674 or b\r
5675 ld (l0941h),a\r
0c4244e5 5676l21a3h:\r
0716e834 5677 jp user_go\r
0c4244e5
L
5678\r
5679sub_21a6h:\r
0716e834
L
5680 call skipbl\r
5681 xor a\r
5682 ld (trace_UW_flag),a\r
5683 ld a,(de)\r
5684 cp 'U'\r
5685 jr z,l21b5h\r
5686 cp 'W'\r
5687 ret nz\r
0c4244e5 5688l21b5h:\r
0716e834
L
5689 inc de\r
5690 push af\r
5691 push de\r
5692 call expr\r
5693 jp c,ERROR\r
5694 call assert_eol\r
5695 pop hl\r
5696 pop af\r
5697 ld (trace_UW_flag),a\r
5698 sub a\r
5699 ret\r
0c4244e5
L
5700\r
5701sub_21c8h:\r
0716e834
L
5702 ld a,(iy+000h)\r
5703 cp 0edh\r
5704 jr z,l21dah\r
5705 and 0dfh\r
5706 cp 0ddh\r
5707 ret nz\r
5708 ld a,(iy+001h)\r
5709 cp 0e9h\r
5710 ret\r
0c4244e5 5711l21dah:\r
0716e834
L
5712 ld a,(iy+001h)\r
5713 and 0f7h\r
5714 cp 045h\r
5715 ret\r
0c4244e5
L
5716\r
5717b_21e2_start:\r
9bed91b3 5718 db 0\r
0c4244e5 5719trace_call_flag:\r
9bed91b3 5720 db 0 ;1=call, 0=trace\r
0c4244e5 5721trace_UW_flag:\r
9bed91b3 5722 db 0 ;0 or 'U' or 'W'\r
0c4244e5 5723trace_count:\r
9bed91b3 5724 dw 0\r
0c4244e5 5725trace_N_flag:\r
9bed91b3 5726 db 0 ;0 if 'N'\r
0c4244e5 5727trace_J_flag:\r
9bed91b3
L
5728 db 0 ;0 if 'J'\r
5729\r
5730;-------------------------------------------------------------------------------\r
5731\r
5732con_col:\r
5733 db 0\r
5734\r
5735l0941h:\r
5736 db 0\r
5737\r
5738bp_tab:\r
5739 rept BP_CNT\r
5740 rept BP_SIZE\r
5741 db 0\r
5742 endm\r
5743 endm\r
5744\r
5745expr_p1:\r
5746 dw expr_buf\r
5747expr_p2:\r
5748 dw expr_buf\r
5749\r
5750expr_buf:\r
5751current_cseg defl $ - current_cseg\r
5752 .phase current_phase + current_cseg\r
5753\r
5754start:\r
5755 LD SP,ldr_end+(stack-ddtz_base)\r
5756 LD DE,signon ;ldr_end+(expr_buf-ddtz_base)\r
5757 LD C,BDOS_PSTR\r
5758 CALL BDOS\r
5759\r
5760 xor a\r
5761 dec a\r
5762 jp po,reloc\r
5763 ld de,msgz80\r
5764 LD C,BDOS_PSTR\r
5765 CALL BDOS\r
5766 jp 0\r
5767\r
5768reloc:\r
5769 LD HL,ldr_end+ddtz_size ;start of reloc bitmap\r
5770 ld bc,0108h ;init bit counter\r
5771\r
5772 EXX\r
5773 LD HL,(BDOS+1)\r
c788b3b7 5774 LD (ldr_end+(ddtz_bdos+1-ddtz_base)),HL\r
9bed91b3
L
5775 LD BC,ddtz_size-1\r
5776 LD D,B\r
5777 LD E,0FFH\r
5778 INC DE ;size rounded up to next page boundary\r
5779 INC BC ;ddtz_size\r
5780 OR A\r
5781 SBC HL,DE ;BDOS - size\r
5782 LD (BDOS+1),HL ;-> new BDOS entry\r
5783\r
5784 push hl\r
5785 PUSH BC\r
5786 ld de,ldr_end\r
5787 sbc hl,de\r
5788 EX DE,HL ;-> DE\r
5789 LD HL,ldr_size\r
5790 add hl,bc\r
5791 ld b,h\r
5792 ld c,l\r
5793 LD HL,TPA\r
5794reloc_lp:\r
5795 EXX\r
5796 djnz reloc_nl\r
5797 ld b,c ;reload bit counter\r
5798 LD e,(HL) ;get next 8 relocation bits\r
5799 INC HL\r
5800reloc_nl:\r
5801 sla e\r
5802 EXX\r
5803 JR NC,reloc_next\r
5804 DEC HL\r
5805 LD A,(HL)\r
5806 ADD A,E\r
5807 LD (HL),A\r
5808 INC HL\r
5809 LD A,(HL)\r
5810 ADC A,D\r
5811 LD (HL),A\r
5812reloc_next:\r
5813 cpi\r
5814 jp pe,reloc_lp\r
5815 dec hl\r
5816\r
5817 POP BC\r
5818 pop de\r
5819 EX DE,HL\r
5820 ADD HL,BC\r
5821 EX DE,HL\r
5822 DEC DE\r
5823 LDDR\r
5824 LD HL,conbuf+2-ddtz_base\r
5825 ADD HL,DE\r
5826 JP (HL)\r
5827\r
5828current_phase defl $\r
5829 .dephase\r
5830current_cseg defl $\r
5831\r
5832 ds EXPR_BUF_SIZE - ($ - expr_buf)\r
5833expr_bufe:\r
5834\r
5835msg_Y:\r
5836 dc 'Yn'\r
5837reg_Y:\r
5838 rept YREG_CNT\r
5839 dw 0\r
5840 endm\r
5841\r
5842last_S:\r
5843 dw TPA\r
5844\r
5845last_I:\r
5846 dw 0\r
5847\r
5848last_O_addr:\r
5849 dw 0\r
5850last_O_val:\r
5851 db 0\r
5852\r
5853cmd_Q_jopt:\r
5854 db -1\r
5855\r
5856last_D:\r
5857 dw TPA\r
5858\r
5859cmdR_rindex:\r
5860 db 0\r
5861\r
5862high_load:\r
5863 dw TPA\r
5864max_load:\r
5865 dw TPA\r
5866\r
5867l1262h:\r
5868 dw 0\r
5869last_A:\r
5870 dw TPA\r
5871cmd_A_prev:\r
5872 dw TPA\r
5873\r
5874prefix_ixiy:\r
5875 db 0\r
5876\r
5877isprefix_ixiy:\r
5878 db 0\r
5879last_L:\r
5880 dw TPA\r
5881l1ffbh:\r
5882 dw 0\r
5883l1ffdh:\r
5884 db 0\r
0c4244e5 5885\r
c788b3b7
L
5886cur_fcb:\r
5887 dw 0\r
5888fcbsym:\r
5889 ds 33\r
5890\r
0c4244e5
L
5891ddtz_size equ $-ddtz_base\r
5892ddtz_end:\r
5893\r
5894;-------------------------------------------------------------------------------\r
0c4244e5
L
5895\r
5896 end\r