]> cloudbase.mooo.com Git - ddt180.git/blob - ddt180.z80
ec59e039c91d64026ea23cb2ce02926a6922d0b3
[ddt180.git] / ddt180.z80
1 ; Disassembled ddtz.com, version "DDT/Z [8101]"
2 ; with modified relocater.
3 ;
4 ; Build steps:
5 ; - Assemble to a .REL file with M80 or a compatible assembler.
6 ; - Use Digital Research Link-80 to generate a .PRL file (op switch).
7 ; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.
8
9 ;-------------------------------------------------------------------------------
10 ; Relocation loader
11 ;
12
13 TPA equ 0100h
14 cseg
15 .phase TPA
16
17 jp start
18
19 ldr_end:
20 ldr_size equ $ - TPA
21 current_phase defl $
22
23 .dephase
24 current_cseg defl $
25
26 ;-------------------------------------------------------------------------------
27 ; DDT/Z core
28 ;
29
30 ; Some greneral definitions
31
32 TAB equ 9
33 LF equ 10
34 CR equ 13
35
36 ; CP/M memory layout
37
38 BDOS equ 5
39 FCB equ 05ch
40 FCB2 equ 06ch
41 DMA_BUF equ 080h
42 TPA equ 0100h
43
44 ; BDOS function calls
45
46 BDOS_CIN equ 1 ;Console Input
47 BDOS_COUT equ 2 ;Console Output
48 BDOS_PSTR equ 9 ;Print String
49 BDOS_CBUF equ 10 ;Read Console Buffer
50 BDOS_CSTAT equ 11 ;Get Console Status
51 BDOS_OPEN equ 15 ;Open File
52 BDOS_CLOSE equ 16 ;Close File
53 BDOS_DELETE equ 19 ;Delete File
54 BDOS_READ equ 20 ;Read Sequential
55 BDOS_WRITE equ 21 ;Write Sequential
56 BDOS_CREATE equ 22 ;Make File
57 BDOS_SETDMA equ 26 ;Set DMA Address
58
59 ; ddtz specific definitions
60
61 STACK_SIZE equ 64 ;ddtz internal stack
62 CONBUF_SIZE equ 80 ;Size of console input buffer
63 EXPR_BUF_SIZE equ 128 ;expressen buffer for conditional breakpoints
64 BP_CNT equ 12 ;Number of breakpoints
65 BP_SIZE equ 8 ;Size of a breakpoint record
66 YREG_CNT equ 10 ;Number of Y registers (0..9)
67
68 ;-------------------------------------------------------------------------------
69
70 ddtz_base:
71 jp 0 ;0000 c3 00 00 . . .
72 l0003h:
73 rst 30h ;0003 f7 .
74 sub_0004h:
75 nop ;0004 00 .
76 ret ;0005 c9 .
77
78 current_cseg defl $ - current_cseg
79 .phase current_phase + current_cseg
80 signon:
81 db 'DDT/180',TAB
82 db '[8101] 002',CR,LF,'$'
83 msgz80:
84 db 'Z80 or better required!',cr,lf,'$'
85
86 current_phase defl $
87 .dephase
88 current_cseg defl $
89 ds STACK_SIZE - (current_phase - signon)
90
91
92 stack:
93 reg.l2: db 000h
94 reg.h2: db 000h
95 reg.e2: db 000h
96 reg.d2: db 000h
97 reg.c2: db 000h
98 reg.b2: db 000h
99 reg.f2: db 000h
100 reg.a2: db 000h
101 l004eh: db 000h
102 reg.i: db 000h
103 reg.iy: dw 0000h
104 reg.ix: dw 0000h
105 reg.f: db 000h
106 reg.a: db 000h
107 reg.c: db 000h
108 reg.b: db 000h
109 reg.e: db 000h
110 reg.d: db 000h
111 reg.l: db 000h
112 reg.h: db 000h
113 reg_sp: dw TPA
114 reg.iff:
115 db 0f3h
116 db 0c3h
117 REG.PC: dw TPA
118 l0062h: dw 0000h
119 offs.@: dw 0
120
121 CMD_ERR:dw l0146h
122 cmd_rpt:dw mainloop
123
124 conbuf:
125 db CONBUF_SIZE
126
127 ld sp,stack ;006b 31 46 00 1 F .
128 exx ;006e d9 .
129 ld de,ddtz_base ;006f 11 00 00 . . .
130 or a ;0072 b7 .
131 sbc hl,de ;0073 ed 52 . R
132 add hl,de ;0075 19 .
133 jr c,l0079h ;0076 38 01 8 .
134 ex de,hl ;0078 eb .
135 l0079h:
136 ld de,TPA ;0079 11 00 01 . . .
137 l007ch:
138 dec hl ;007c 2b +
139 ld (hl),000h ;007d 36 00 6 .
140 ld a,h ;007f 7c |
141 sub d ;0080 92 .
142 ld b,a ;0081 47 G
143 ld a,l ;0082 7d }
144 sub e ;0083 93 .
145 or b ;0084 b0 .
146 jr nz,l007ch ;0085 20 f5 .
147 ld a,i ;0087 ed 57 . W
148 ld (reg.i),a ;0089 32 4f 00 2 O .
149 ld a,0f3h ;008c 3e f3 > .
150 jp po,l0093h ;008e e2 93 00 . . .
151 ld a,0fbh ;0091 3e fb > .
152 l0093h:
153 ld (reg.iff),a ;0093 32 5e 00 2 ^ .
154 call sub_0004h ;0096 cd 04 00 . . .
155 ld hl,ddtz_base ;0099 21 00 00 ! . .
156 ld l,000h ;009c 2e 00 . .
157 ld (reg_sp),hl ;009e 22 5c 00 " \ .
158 ld a,(FCB+1) ;00a1 3a 5d 00 : ] .
159 cp ' ' ;00a4 fe 20 .
160 ld hl,0 ;00a6 21 00 00 ! . .
161 call nz,read_file ;00a9 c4 68 10 . h .
162 jr mainloop ;00ac 18 0f . .
163
164 ds CONBUF_SIZE + 3 - ($ - conbuf)
165
166 mainloop:
167 ld sp,stack ;00bd 31 46 00 1 F .
168 ld hl,l0146h ;00c0 21 46 01 ! F .
169 ld (CMD_ERR),hl ;00c3 22 66 00 " f .
170 ld hl,(REG.PC) ;00c6 2a 60 00 * ` .
171 ld (l0062h),hl ;00c9 22 62 00 " b .
172 call bp_clr_temporary ;00cc cd 54 07 . T .
173 ld hl,(cmd_rpt) ;00cf 2a 68 00 * h .
174 ld de,mainloop ;00d2 11 bd 00 . . .
175 call cp_hl_de ;00d5 cd ee 02 . . .
176 ld a,'>' ;00d8 3e 3e > >
177 call outchar ;00da cd 5d 02 . ] .
178 call nz,outchar ;00dd c4 5d 02 . ] .
179 call z,outbl ;00e0 cc 9f 02 . . .
180 call get_line ;00e3 cd 4e 01 . N .
181 call skipbl ;00e6 cd bf 02 . . .
182 jr z,exe_hl ;00e9 28 1f ( .
183 ld hl,mainloop ;00eb 21 bd 00 ! . .
184 ld (cmd_rpt),hl ;00ee 22 68 00 " h .
185 inc de ;00f1 13 .
186 sub '@' ;00f2 d6 40 . @
187 jr c,ERROR ;00f4 38 11 8 .
188 cp 'Z'+1-'@' ;00f6 fe 1b . .
189 jr nc,ERROR ;00f8 30 0d 0 .
190 add a,a ;00fa 87 .
191 ld hl,CMDTAB ;00fb 21 10 01 ! . .
192 call add_hl_a ;00fe cd b9 02 . . .
193 ld a,(hl) ;0101 7e ~
194 inc hl ;0102 23 #
195 ld h,(hl) ;0103 66 f
196 ld l,a ;0104 6f o
197 jr exe_hl ;0105 18 03 . .
198 ERROR:
199 ld hl,(CMD_ERR) ;0107 2a 66 00 * f .
200 exe_hl:
201 call CALL_HL ;010a cd 0f 01 . . .
202 jr mainloop ;010d 18 ae . .
203
204 CMDTAB:
205 dw cmd_@ ;0110 92 0d . .
206 dw cmd_A ;0112 fe 11 . .
207 dw cmd_B ;0114 6d 07 m .
208 dw cmd_C ;0116 17 21 . !
209 dw cmd_D ;0118 48 0f H .
210 dw ERROR ;011a 07 01 . .
211 dw cmd_F ;011c af 0f . .
212 dw cmd_G ;011e 31 07 1 .
213 dw cmd_H ;0120 3d 0e = .
214 dw cmd_I ;0122 a3 0d . .
215 dw ERROR ;0124 07 01 . .
216 dw ERROR ;0126 07 01 . .
217 dw cmd_L ;0128 cd 18 . .
218 dw cmd_M ;012a 19 0e . .
219 dw ERROR ;012c 07 01 . .
220 dw cmd_O ;012e c7 0d . .
221 dw ERROR ;0130 07 01 . .
222 dw cmd_Q ;0132 84 0e . .
223 dw cmd_R ;0134 62 10 b .
224 dw cmd_S ;0136 5a 0d Z .
225 dw cmd_T ;0138 1e 21 . !
226 dw ERROR ;013a 07 01 . .
227 dw cmd_V ;013c ea 0d . .
228 dw cmd_W ;013e a0 11 . .
229 dw cmd_X ;0140 f1 0b . .
230 dw cmd_Y ;0142 b2 0b . .
231 dw cmd_Z ;0144 ba 0e . .
232
233 l0146h:
234 ld a,'?' ;0146 3e 3f > ?
235 call outchar ;0148 cd 5d 02 . ] .
236 jp crlf ;014b c3 a3 02 . . .
237 get_line:
238 push hl ;014e e5 .
239 ld de,conbuf ;014f 11 6a 00 . j .
240 ld c,BDOS_CBUF ;0152 0e 0a . .
241 call ddtz_base ;0154 cd 00 00 . . .
242 call crlf ;0157 cd a3 02 . . .
243 ld de,conbuf+1 ;015a 11 6b 00 . k .
244 ld a,(de) ;015d 1a .
245 ld b,a ;015e 47 G
246 ld c,0 ;015f 0e 00 . .
247 inc b ;0161 04 .
248 l0162h:
249 inc de ;0162 13 .
250 dec b ;0163 05 .
251 jr z,l0194h ;0164 28 2e ( .
252 ld a,(de) ;0166 1a .
253 bit 0,c ;0167 cb 41 . A
254 call z,toupper ;0169 cc 9b 01 . . .
255 ld (de),a ;016c 12 .
256 cp '''' ;016d fe 27 . '
257 jr nz,l0162h ;016f 20 f1 .
258 push de ;0171 d5 .
259 dec de ;0172 1b .
260 ld a,(de) ;0173 1a .
261 cp '''' ;0174 fe 27 . '
262 jr z,l0190h ;0176 28 18 ( .
263 dec de ;0178 1b .
264 ld a,(de) ;0179 1a .
265 cp '^' ;017a fe 5e . ^
266 jr z,l0184h ;017c 28 06 ( .
267 dec de ;017e 1b .
268 ld a,(de) ;017f 1a .
269 cp '^' ;0180 fe 5e . ^
270 jr nz,l0190h ;0182 20 0c .
271 l0184h:
272 inc de ;0184 13 .
273 push bc ;0185 c5 .
274 call sub_0303h ;0186 cd 03 03 . . .
275 pop bc ;0189 c1 .
276 dec de ;018a 1b .
277 ld a,(de) ;018b 1a .
278 cp '''' ;018c fe 27 . '
279 jr z,l0191h ;018e 28 01 ( .
280 l0190h:
281 inc c ;0190 0c .
282 l0191h:
283 pop de ;0191 d1 .
284 jr l0162h ;0192 18 ce . .
285 l0194h:
286 xor a ;0194 af .
287 ld (de),a ;0195 12 .
288 ld de,conbuf+2 ;0196 11 6c 00 . l .
289 pop hl ;0199 e1 .
290 ret ;019a c9 .
291
292 toupper:
293 cp 'a' ;019b fe 61 . a
294 ret c ;019d d8 .
295 cp 'z'+1 ;019e fe 7b . {
296 ret nc ;01a0 d0 .
297 and 05fh ;01a1 e6 5f . _
298 ret ;01a3 c9 .
299
300 out.hl.@:
301 call out_hl ;01a4 cd 13 02 . . .
302 push de ;01a7 d5 .
303 push hl ;01a8 e5 .
304 ld de,(offs.@) ;01a9 ed 5b 64 00 . [ d .
305 ld a,d ;01ad 7a z
306 or e ;01ae b3 .
307 jr z,l01bfh ;01af 28 0e ( .
308 call outbl ;01b1 cd 9f 02 . . .
309 ld a,'@' ;01b4 3e 40 > @
310 call outchar ;01b6 cd 5d 02 . ] .
311 and a ;01b9 a7 .
312 sbc hl,de ;01ba ed 52 . R
313 call out_hl ;01bc cd 13 02 . . .
314 l01bfh:
315 pop hl ;01bf e1 .
316 pop de ;01c0 d1 .
317 ret ;01c1 c9 .
318 out.bin.w:
319 ld a,h ;01c2 7c |
320 call out.bin.b ;01c3 cd c7 01 . . .
321 ld a,l ;01c6 7d }
322 out.bin.b:
323 ld b,8 ;01c7 06 08 . .
324 l01c9h:
325 add a,a ;01c9 87 .
326 push af ;01ca f5 .
327 ld a,00 ;01cb 3e 00 > .
328 adc a,a ;01cd 8f .
329 call out_dgt ;01ce cd 21 02 . ! .
330 pop af ;01d1 f1 .
331 djnz l01c9h ;01d2 10 f5 . .
332 ld a,'"' ;01d4 3e 22 > "
333 jp outchar ;01d6 c3 5d 02 . ] .
334
335 sub_01d9h:
336 ld a,'-' ;01d9 3e 2d > -
337 call outchar ;01db cd 5d 02 . ] .
338 dec hl ;01de 2b +
339 jp cpl.hl ;01df c3 79 05 . y .
340
341 out_hl_dec_neg:
342 push hl ;01e2 e5 .
343 call sub_01d9h ;01e3 cd d9 01 . . .
344 defb 03eh ;01e6 3e >
345 out.hl.dec:
346 push hl ;01e7 e5 .
347 ld b,006h ;01e8 06 06 . .
348 call sub_01f9h ;01ea cd f9 01 . . .
349 pop hl ;01ed e1 .
350 ld a,'.' ;01ee 3e 2e > .
351 call outchar ;01f0 cd 5d 02 . ] .
352 l01f3h:
353 call outbl ;01f3 cd 9f 02 . . .
354 djnz l01f3h ;01f6 10 fb . .
355 ret ;01f8 c9 .
356 sub_01f9h:
357 dec b ;01f9 05 .
358 push de ;01fa d5 .
359 ld de,10 ;01fb 11 0a 00 . . .
360 call div_hl_de ;01fe cd 75 04 . u .
361 ld a,h ;0201 7c |
362 or l ;0202 b5 .
363 call nz,sub_01f9h ;0203 c4 f9 01 . . .
364 ld a,e ;0206 7b {
365 pop de ;0207 d1 .
366 jr out_dgt ;0208 18 17 . .
367
368 out_hl_neg:
369 push hl ;020a e5 .
370 call sub_01d9h ;020b cd d9 01 . . .
371 call out_hl ;020e cd 13 02 . . .
372 pop hl ;0211 e1 .
373 ret ;0212 c9 .
374
375 out_hl:
376 ld a,h ;0213 7c |
377 call out_hex ;0214 cd 18 02 . . .
378 ld a,l ;0217 7d }
379
380 out_hex:
381 push af ;0218 f5 .
382 rra ;0219 1f .
383 rra ;021a 1f .
384 rra ;021b 1f .
385 rra ;021c 1f .
386 call out_dgt ;021d cd 21 02 . ! .
387 pop af ;0220 f1 .
388
389 out_dgt:
390 and 0fh ;0221 e6 0f . .
391 cp 10 ;0223 fe 0a . .
392 jr c,l0229h ;0225 38 02 8 .
393 add a,007h ;0227 c6 07 . .
394 l0229h:
395 add a,'0' ;0229 c6 30 . 0
396 jr outchar ;022b 18 30 . 0
397 l022dh:
398 ld a,'-' ;022d 3e 2d > -
399 call outchar ;022f cd 5d 02 . ] .
400 ld a,040h ;0232 3e 40 > @
401 out.ascii:
402 ex af,af' ;0234 08 .
403 call outquote ;0235 cd 5b 02 . [ .
404 ex af,af' ;0238 08 .
405 push af ;0239 f5 .
406 res 7,a ;023a cb bf . .
407 cp ' ' ;023c fe 20 .
408 jr nc,l0242h ;023e 30 02 0 .
409 sub 0c0h ;0240 d6 c0 . .
410 l0242h:
411 call outchar ;0242 cd 5d 02 . ] .
412 push af ;0245 f5 .
413 cp '''' ;0246 fe 27 . '
414 call z,outchar ;0248 cc 5d 02 . ] .
415 pop af ;024b f1 .
416 ex af,af' ;024c 08 .
417 call outquote ;024d cd 5b 02 . [ .
418 pop af ;0250 f1 .
419 or a ;0251 b7 .
420 ld a,'.' ;0252 3e 2e > .
421 call m,outchar ;0254 fc 5d 02 . ] .
422 ex af,af' ;0257 08 .
423 jr c,l022dh ;0258 38 d3 8 .
424 ret ;025a c9 .
425
426 p_char_lparen:
427 ld a,'('
428 jr outchar
429
430 outquote:
431 ld a,'''' ;025b 3e 27 > '
432 outchar:
433 push hl ;025d e5 .
434 push de ;025e d5 .
435 push bc ;025f c5 .
436 push af ;0260 f5 .
437 and 07fh ;0261 e6 7f . \7f
438 ld e,a ;0263 5f _
439 ld c,BDOS_COUT ;0264 0e 02 . .
440 call ddtz_base ;0266 cd 00 00 . . .
441 ld hl,con_col ;0269 21 72 02 ! r .
442 inc (hl) ;026c 34 4
443 pop af ;026d f1 .
444 pop bc ;026e c1 .
445 pop de ;026f d1 .
446 pop hl ;0270 e1 .
447 ret ;0271 c9 .
448
449 inchar:
450 push hl ;0273 e5 .
451 push de ;0274 d5 .
452 push bc ;0275 c5 .
453 ld c,BDOS_CSTAT ;0276 0e 0b . .
454 call ddtz_base ;0278 cd 00 00 . . .
455 and a ;027b a7 .
456 jr z,l0284h ;027c 28 06 ( .
457 ld c,BDOS_CIN ;027e 0e 01 . .
458 call ddtz_base ;0280 cd 00 00 . . .
459 scf ;0283 37 7
460 l0284h:
461 pop bc ;0284 c1 .
462 pop de ;0285 d1 .
463 pop hl ;0286 e1 .
464 ret ;0287 c9 .
465 pstr:
466 ld c,0 ;0288 0e 00 . .
467 l028ah:
468 ld a,(hl) ;028a 7e ~
469 and a ;028b a7 .
470 ret z ;028c c8 .
471 call outchar ;028d cd 5d 02 . ] .
472 inc c ;0290 0c .
473 inc hl ;0291 23 #
474 and a ;0292 a7 .
475 ret m ;0293 f8 .
476 jr l028ah ;0294 18 f4 . .
477
478 outbl6:
479 call outbl2 ;0296 cd 9c 02 . . .
480 outbl4:
481 call outbl2 ;0299 cd 9c 02 . . .
482 outbl2:
483 call outbl ;029c cd 9f 02 . . .
484 outbl:
485 ld a,' ' ;029f 3e 20 >
486 jr outchar ;02a1 18 ba . .
487 crlf:
488 call inchar ;02a3 cd 73 02 . s .
489 ld a,CR ;02a6 3e 0d > .
490 call outchar ;02a8 cd 5d 02 . ] .
491 ld a,LF ;02ab 3e 0a > .
492 call outchar ;02ad cd 5d 02 . ] .
493 ld a,0 ;02b0 3e 00 > .
494 ld (con_col),a ;02b2 32 72 02 2 r .
495 jp c,mainloop ;02b5 da bd 00 . . .
496 ret ;02b8 c9 .
497 add_hl_a:
498 add a,l ;02b9 85 .
499 ld l,a ;02ba 6f o
500 ret nc ;02bb d0 .
501 inc h ;02bc 24 $
502 ret ;02bd c9 .
503
504 skipbl0:
505 inc de ;02be 13 .
506 skipbl:
507 ld a,(de) ;02bf 1a .
508 cp ' ' ;02c0 fe 20 .
509 jr z,skipbl0 ;02c2 28 fa ( .
510 cp TAB ;02c4 fe 09 . .
511 jr z,skipbl0 ;02c6 28 f6 ( .
512 or a ;02c8 b7 .
513 ret ;02c9 c9 .
514
515 next_arg:
516 call skipbl ;02ca cd bf 02 . . .
517 cp ',' ;02cd fe 2c . ,
518 ret nz ;02cf c0 .
519 inc de ;02d0 13 .
520 call skipbl ;02d1 cd bf 02 . . .
521 cp a ;02d4 bf .
522 ret ;02d5 c9 .
523
524 assert_eol:
525 call skipbl ;02d6 cd bf 02 . . .
526 ret z ;02d9 c8 .
527 to_error:
528 jp ERROR ;02da c3 07 01 . . .
529
530 chk_sp:
531 push hl ;02dd e5 .
532 push de ;02de d5 .
533 ld hl,0 ;02df 21 00 00 ! . .
534 add hl,sp ;02e2 39 9
535 ld de,stack-40 ;02e3 11 1e 00 . . .
536 call cp_hl_de ;02e6 cd ee 02 . . .
537 pop de ;02e9 d1 .
538 pop hl ;02ea e1 .
539 jr c,to_error ;02eb 38 ed 8 .
540 ret ;02ed c9 .
541
542 cp_hl_de:
543 and a ;02ee a7 .
544 sbc hl,de ;02ef ed 52 . R
545 add hl,de ;02f1 19 .
546 ret ;02f2 c9 .
547
548 lookupch:
549 ld b,0 ;02f3 06 00 . .
550 l02f5h:
551 ld a,(hl) ;02f5 7e ~
552 and a ;02f6 a7 .
553 ret z ;02f7 c8 .
554 ld a,(de) ;02f8 1a .
555 cp (hl) ;02f9 be .
556 jr z,l0300h ;02fa 28 04 ( .
557 inc hl ;02fc 23 #
558 inc b ;02fd 04 .
559 jr l02f5h ;02fe 18 f5 . .
560 l0300h:
561 scf ;0300 37 7
562 inc de ;0301 13 .
563 ret ;0302 c9 .
564
565 sub_0303h:
566 ld hl,b_0cc3_start ;0303 21 c3 0c ! . .
567 ld b,07fh ;0306 06 7f .
568 jr l030ch ;0308 18 02 . .
569
570 sub_030ah:
571 ld b,0ffh ;030a 06 ff . .
572 l030ch:
573 inc b ;030c 04 .
574 ld a,(hl) ;030d 7e ~
575 and a ;030e a7 .
576 ret z ;030f c8 .
577 call sub_031ch ;0310 cd 1c 03 . . .
578 jr nc,l030ch ;0313 30 f7 0 .
579 res 7,b ;0315 cb b8 . .
580 ret ;0317 c9 .
581
582 sub_0318h:
583 push bc ;0318 c5 .
584 res 7,b ;0319 cb b8 . .
585 defb 03eh ;031b 3e >
586 sub_031ch:
587 push bc ;031c c5 .
588 push de ;031d d5 .
589 l031eh:
590 ld a,(de) ;031e 1a .
591 xor (hl) ;031f ae .
592 and 07fh ;0320 e6 7f .
593 jr nz,l0336h ;0322 20 12 .
594 bit 7,(hl) ;0324 cb 7e . ~
595 inc hl ;0326 23 #
596 inc de ;0327 13 .
597 jr z,l031eh ;0328 28 f4 ( .
598 scf ;032a 37 7
599 bit 7,b ;032b cb 78 . x
600 call z,sub_060ch ;032d cc 0c 06 . . .
601 jr nc,l0339h ;0330 30 07 0 .
602 pop af ;0332 f1 .
603 scf ;0333 37 7
604 pop bc ;0334 c1 .
605 ret ;0335 c9 .
606 l0336h:
607 call sub_0345h ;0336 cd 45 03 . E .
608 l0339h:
609 pop de ;0339 d1 .
610 and a ;033a a7 .
611 pop bc ;033b c1 .
612 ret ;033c c9 .
613
614 sel_dc_string:
615 inc b ;033d 04 .
616 l033eh:
617 dec b ;033e 05 .
618 ret z ;033f c8 .
619 call sub_0345h ;0340 cd 45 03 . E .
620 jr l033eh ;0343 18 f9 . .
621
622 sub_0345h:
623 ld a,(hl) ;0345 7e ~
624 and a ;0346 a7 .
625 ret z ;0347 c8 .
626 l0348h:
627 ld a,(hl) ;0348 7e ~
628 inc hl ;0349 23 #
629 and a ;034a a7 .
630 ret m ;034b f8 .
631 jr l0348h ;034c 18 fa . .
632
633 sub_034eh:
634 call get_arg_range ;034e cd 7d 03 . } .
635 push hl ;0351 e5 .
636 push bc ;0352 c5 .
637 call next_arg ;0353 cd ca 02 . . .
638 call sub_0363h ;0356 cd 63 03 . c .
639 ex de,hl ;0359 eb .
640 pop bc ;035a c1 .
641 pop hl ;035b e1 .
642 ret ;035c c9 .
643
644 sub_035dh:
645 call expr ;035d cd be 03 . . .
646 jr c,error0 ;0360 38 33 8 3
647 ret ;0362 c9 .
648
649 sub_0363h:
650 call sub_035dh ;0363 cd 5d 03 . ] .
651 l0366h:
652 jp assert_eol ;0366 c3 d6 02 . . .
653
654 get_lastarg_def:
655 call get_arg_def ;0369 cd 6e 03 . n .
656 jr l0366h ;036c 18 f8 . .
657
658 get_arg_def:
659 push hl ;036e e5 .
660 call expr ;036f cd be 03 . . .
661 jr c,l0375h ;0372 38 01 8 .
662 ex (sp),hl ;0374 e3 .
663 l0375h:
664 pop hl ;0375 e1 .
665 ret ;0376 c9 .
666
667 sub_0377h:
668 call b_037c_start ;0377 cd 7c 03 . | .
669 jr l0366h ;037a 18 ea . .
670
671 b_037c_start:
672 defb 0e6h ;037c e6 .
673 get_arg_range:
674 scf ;037d 37 7
675 ex af,af' ;037e 08 .
676 push bc ;037f c5 .
677 push hl ;0380 e5 .
678 call expr ;0381 cd be 03 . . .
679 jr nc,l038ch ;0384 30 06 0 .
680 ex af,af' ;0386 08 .
681 jr c,error0 ;0387 38 0c 8 .
682 ex af,af' ;0389 08 .
683 pop hl ;038a e1 .
684 defb 03eh ;038b 3e >
685 l038ch:
686 pop af ;038c f1 .
687 call get_range ;038d cd 9a 03 . . .
688 jr nc,l0398h ;0390 30 06 0 .
689 ex af,af' ;0392 08 .
690 pop bc ;0393 c1 .
691 ret nc ;0394 d0 .
692 error0:
693 jp ERROR ;0395 c3 07 01 . . .
694 l0398h:
695 pop af ;0398 f1 .
696 ret ;0399 c9 .
697
698 get_range:
699 call next_arg ;039a cd ca 02 . . .
700 cp 'S' ;039d fe 53 . S
701 jr nz,l03a2h ;039f 20 01 .
702 inc de ;03a1 13 .
703 l03a2h:
704 push hl ;03a2 e5 .
705 push af ;03a3 f5 .
706 call expr ;03a4 cd be 03 . . .
707 jr c,l03b8h ;03a7 38 0f 8 .
708 ld b,h ;03a9 44 D
709 ld c,l ;03aa 4d M
710 pop af ;03ab f1 .
711 pop hl ;03ac e1 .
712 jr z,l03b6h ;03ad 28 07 ( .
713 ld a,c ;03af 79 y
714 sub l ;03b0 95 .
715 ld c,a ;03b1 4f O
716 ld a,b ;03b2 78 x
717 sbc a,h ;03b3 9c .
718 ld b,a ;03b4 47 G
719 inc bc ;03b5 03 .
720 l03b6h:
721 and a ;03b6 a7 .
722 ret ;03b7 c9 .
723 l03b8h:
724 pop af ;03b8 f1 .
725 pop hl ;03b9 e1 .
726 jr z,error0 ;03ba 28 d9 ( .
727 scf ;03bc 37 7
728 ret ;03bd c9 .
729
730 expr:
731 call skipbl ;03be cd bf 02 . . .
732 expr1:
733 call do_subexpr ;03c1 cd 2f 04 . / .
734 ret c ;03c4 d8 .
735 call do_rel_op ;03c5 cd ef 03 . . .
736 ret nc ;03c8 d0 .
737 push bc ;03c9 c5 .
738 push hl ;03ca e5 .
739 call do_subexpr ;03cb cd 2f 04 . / .
740 jr c,error0 ;03ce 38 c5 8 .
741 ex de,hl ;03d0 eb .
742 ex (sp),hl ;03d1 e3 .
743 and a ;03d2 a7 .
744 sbc hl,de ;03d3 ed 52 . R
745 ld hl,0ffffh ;03d5 21 ff ff ! . .
746 pop de ;03d8 d1 .
747 ret ;03d9 c9 .
748
749 do_op_eq:
750 jr z,l03edh ;03da 28 11 ( .
751 jr l03ech ;03dc 18 0e . .
752 do_op_ne:
753 jr nz,l03edh ;03de 20 0d .
754 jr l03ech ;03e0 18 0a . .
755 do_op_le:
756 jr z,l03edh ;03e2 28 09 ( .
757 do_op_lt:
758 jr c,l03edh ;03e4 38 07 8 .
759 jr l03ech ;03e6 18 04 . .
760 do_op_gt:
761 jr z,l03ech ;03e8 28 02 ( .
762 do_op_ge:
763 jr nc,l03edh ;03ea 30 01 0 .
764 l03ech:
765 inc hl ;03ec 23 #
766 l03edh:
767 and a ;03ed a7 .
768 ret ;03ee c9 .
769 do_rel_op:
770 push hl ;03ef e5 .
771 ld hl,tab_eq_le_ge ;03f0 21 1f 04 ! . .
772 call lookupch ;03f3 cd f3 02 . . .
773 jr nc,l041dh ;03f6 30 25 0 %
774 ld a,b ;03f8 78 x
775 or a ;03f9 b7 .
776 jr z,l0411h ;03fa 28 15 ( .
777 ld a,(de) ;03fc 1a .
778 cp '=' ;03fd fe 3d . =
779 jr nz,l0406h ;03ff 20 05 .
780 inc de ;0401 13 .
781 inc b ;0402 04 .
782 inc b ;0403 04 .
783 jr l0411h ;0404 18 0b . .
784 l0406h:
785 bit 0,b ;0406 cb 40 . @
786 jr z,l0411h ;0408 28 07 ( .
787 cp '>' ;040a fe 3e . >
788 jr nz,l0411h ;040c 20 03 .
789 inc de ;040e 13 .
790 ld b,005h ;040f 06 05 . .
791 l0411h:
792 ld hl,tab_func_eqlege ;0411 21 23 04 ! # .
793 ld a,b ;0414 78 x
794 add a,a ;0415 87 .
795 call add_hl_a ;0416 cd b9 02 . . .
796 ld c,(hl) ;0419 4e N
797 inc hl ;041a 23 #
798 ld b,(hl) ;041b 46 F
799 scf ;041c 37 7
800 l041dh:
801 pop hl ;041d e1 .
802 ret ;041e c9 .
803
804 tab_eq_le_ge:
805 db '=<>',0
806
807 tab_func_eqlege:
808 dw do_op_eq ;0423 da 03 . .
809 dw do_op_lt ;0425 e4 03 . .
810 dw do_op_gt ;0427 e8 03 . .
811 dw do_op_le ;0429 e2 03 . .
812 dw do_op_ge ;042b ea 03 . .
813 dw do_op_ne ;042d de 03 . .
814
815 do_subexpr:
816 call do_factor ;042f cd e4 04 . . .
817 ret c ;0432 d8 .
818 l0433h:
819 call do_binary_op ;0433 cd ae 04 . . .
820 push hl ;0436 e5 .
821 push bc ;0437 c5 .
822 call do_factor ;0438 cd e4 04 . . .
823 pop bc ;043b c1 .
824 ex de,hl ;043c eb .
825 ex (sp),hl ;043d e3 .
826 jr nc,l0447h ;043e 30 07 0 .
827 pop de ;0440 d1 .
828 ld a,b ;0441 78 x
829 or c ;0442 b1 .
830 ret z ;0443 c8 .
831 jp ERROR ;0444 c3 07 01 . . .
832
833 l0447h:
834 ld a,b ;0447 78 x
835 or c ;0448 b1 .
836 push bc ;0449 c5 .
837 ret nz ;044a c0 .
838 pop bc ;044b c1 .
839
840 doop_add:
841 add hl,de ;044c 19 .
842 l044dh:
843 pop de ;044d d1 .
844 jr l0433h ;044e 18 e3 . .
845
846 doop_sub:
847 and a ;0450 a7 .
848 sbc hl,de ;0451 ed 52 . R
849 jr l044dh ;0453 18 f8 . .
850
851 doop_mlt:
852 push bc ;0455 c5 .
853 ld b,h ;0456 44 D
854 ld c,l ;0457 4d M
855 ld hl,0 ;0458 21 00 00 ! . .
856 ld a,010h ;045b 3e 10 > .
857 l045dh:
858 add hl,hl ;045d 29 )
859 ex de,hl ;045e eb .
860 add hl,hl ;045f 29 )
861 ex de,hl ;0460 eb .
862 jr nc,l0464h ;0461 30 01 0 .
863 add hl,bc ;0463 09 .
864 l0464h:
865 dec a ;0464 3d =
866 jr nz,l045dh ;0465 20 f6 .
867 pop bc ;0467 c1 .
868 jr l044dh ;0468 18 e3 . .
869
870 doop_div:
871 call div_hl_de ;046a cd 75 04 . u .
872 jr l044dh ;046d 18 de . .
873
874 doop_mod:
875 call div_hl_de ;046f cd 75 04 . u .
876 ex de,hl ;0472 eb .
877 jr l044dh ;0473 18 d8 . .
878
879 ; divide x/y
880 ; hl: x
881 ; de: y
882 ; return:
883 ; hl: q (x/y)
884 ; de: r (x%y)
885
886 div_hl_de:
887 push bc ;0475 c5 .
888 ex de,hl ;0476 eb .
889 ld b,h ;0477 44 D
890 ld c,l ;0478 4d M
891 ld hl,0 ;0479 21 00 00 ! . .
892 ld a,16 ;047c 3e 10 > .
893
894 ; de: x (x shifted out, q shifted in)
895 ; bc: y
896 ; hl: r (initially 0)
897
898 l047eh:
899 push af ;047e f5 .
900 add hl,hl ;047f 29 )
901 ex de,hl ;0480 eb .
902 xor a ;0481 af .
903 add hl,hl ;0482 29 )
904 ex de,hl ;0483 eb .
905 adc a,l ;0484 8d .
906 sub c ;0485 91 .
907 ld l,a ;0486 6f o
908 ld a,h ;0487 7c |
909 sbc a,b ;0488 98 .
910 ld h,a ;0489 67 g
911 inc de ;048a 13 .
912 jr nc,l048fh ;048b 30 02 0 .
913 add hl,bc ;048d 09 .
914 dec de ;048e 1b .
915 l048fh:
916 pop af ;048f f1 .
917 dec a ;0490 3d =
918 jr nz,l047eh ;0491 20 eb .
919 ex de,hl ;0493 eb .
920 pop bc ;0494 c1 .
921 ret ;0495 c9 .
922
923 doop_and:
924 ld a,h ;0496 7c |
925 and d ;0497 a2 .
926 ld h,a ;0498 67 g
927 ld a,l ;0499 7d }
928 and e ;049a a3 .
929 ld l,a ;049b 6f o
930 jr l044dh ;049c 18 af . .
931
932 doop_or:
933 ld a,h ;049e 7c |
934 or d ;049f b2 .
935 ld h,a ;04a0 67 g
936 ld a,l ;04a1 7d }
937 or e ;04a2 b3 .
938 ld l,a ;04a3 6f o
939 jr l044dh ;04a4 18 a7 . .
940
941 doop_xor:
942 ld a,h ;04a6 7c |
943 xor d ;04a7 aa .
944 ld h,a ;04a8 67 g
945 ld a,l ;04a9 7d }
946 xor e ;04aa ab .
947 ld l,a ;04ab 6f o
948 jr l044dh ;04ac 18 9f . .
949
950 do_binary_op:
951 push hl ;04ae e5 .
952 ld hl,tab_op_a ;04af 21 c2 04 ! . .
953 call lookupch ;04b2 cd f3 02 . . .
954 ld a,b ;04b5 78 x
955 ld hl,tblf_opa ;04b6 21 cb 04 ! . .
956 add a,a ;04b9 87 .
957 call add_hl_a ;04ba cd b9 02 . . .
958 ld c,(hl) ;04bd 4e N
959 inc hl ;04be 23 #
960 ld b,(hl) ;04bf 46 F
961 pop hl ;04c0 e1 .
962 ret ;04c1 c9 .
963
964 tab_op_a:
965 DB '+-*/%&!#',0
966
967 tblf_opa:
968 dw doop_add ;04cb 4c 04 L .
969 dw doop_sub ;04cd 50 04 P .
970 dw doop_mlt ;04cf 55 04 U .
971 dw doop_div ;04d1 6a 04 j .
972 dw doop_mod ;04d3 6f 04 o .
973 dw doop_and ;04d5 96 04 . .
974 dw doop_or ;04d7 9e 04 . .
975 dw doop_xor ;04d9 a6 04 . .
976 dw 0 ;04db 00 00 . .
977
978 fact_factor:
979 call do_factor ;04dd cd e4 04 . . .
980 ret nc ;04e0 d0 .
981 jp ERROR ;04e1 c3 07 01 . . .
982
983 do_factor:
984 call chk_sp ;04e4 cd dd 02 . . .
985 call get.number ;04e7 cd aa 05 . . .
986 ret nc ;04ea d0 .
987 inc de ;04eb 13 .
988 ld hl,ddtz_base-1 ;04ec 21 ff ff ! . .
989 cp 'T' ;04ef fe 54 . T
990 ret z ;04f1 c8 .
991 ld hl,(high_load) ;04f2 2a 9c 11 * . .
992 cp 'H' ;04f5 fe 48 . H
993 ret z ;04f7 c8 .
994 ld hl,(max_load) ;04f8 2a 9e 11 * . .
995 cp 'M' ;04fb fe 4d . M
996 ret z ;04fd c8 .
997 ld hl,TPA ;04fe 21 00 01 ! . .
998 cp 'L' ;0501 fe 4c . L
999 ret z ;0503 c8 .
1000 ld hl,(offs.@) ;0504 2a 64 00 * d .
1001 cp '@' ;0507 fe 40 . @
1002 ret z ;0509 c8 .
1003 ld hl,(l0062h) ;050a 2a 62 00 * b .
1004 cp '$' ;050d fe 24 . $
1005 ret z ;050f c8 .
1006 cp '-' ;0510 fe 2d . -
1007 jr z,fact_factneg ;0512 28 61 ( a
1008 cp '~' ;0514 fe 7e . ~
1009 jr z,fact_factinv ;0516 28 68 ( h
1010 cp '+' ;0518 fe 2b . +
1011 jr z,fact_factor ;051a 28 c1 ( .
1012 cp '^' ;051c fe 5e . ^
1013 jr z,fact_reg.CPU ;051e 28 45 ( E
1014 cp 'Y' ;0520 fe 59 . Y
1015 jr z,fact_reg.Y ;0522 28 10 ( .
1016 cp '(' ;0524 fe 28 . (
1017 jr z,fact_mem ;0526 28 5d ( ]
1018 cp '[' ;0528 fe 5b . [
1019 jp z,expr_brckt ;052a ca 9d 05 . . .
1020 cp '''' ;052d fe 27 . '
1021 jr z,fact_factstring ;052f 28 17 ( .
1022 dec de ;0531 1b .
1023 scf ;0532 37 7
1024 ret ;0533 c9 .
1025
1026 fact_reg.Y:
1027 call get.decdigit ;0534 cd 1d 06 . . .
1028 jp c,ERROR ;0537 da 07 01 . . .
1029 inc de ;053a 13 .
1030 add a,a ;053b 87 .
1031 ld hl,reg_Y ;053c 21 9e 0b ! . .
1032 call add_hl_a ;053f cd b9 02 . . .
1033 ld a,(hl) ;0542 7e ~
1034 inc hl ;0543 23 #
1035 ld h,(hl) ;0544 66 f
1036 ld l,a ;0545 6f o
1037 and a ;0546 a7 .
1038 ret ;0547 c9 .
1039
1040 fact_factstring:
1041 ld hl,0 ;0548 21 00 00 ! . .
1042 l054bh:
1043 ld a,(de) ;054b 1a .
1044 cp '''' ;054c fe 27 . '
1045 jr z,l0557h ;054e 28 07 ( .
1046 and a ;0550 a7 .
1047 ret z ;0551 c8 .
1048 l0552h:
1049 ld h,l ;0552 65 e
1050 ld l,a ;0553 6f o
1051 inc de ;0554 13 .
1052 jr l054bh ;0555 18 f4 . .
1053 l0557h:
1054 inc de ;0557 13 .
1055 ld a,(de) ;0558 1a .
1056 cp '''' ;0559 fe 27 . '
1057 jr z,l0552h ;055b 28 f5 ( .
1058 sub '.' ;055d d6 2e . .
1059 or a ;055f b7 .
1060 ret nz ;0560 c0 .
1061 inc de ;0561 13 .
1062 set 7,l ;0562 cb fd . .
1063 ret ;0564 c9 .
1064
1065 fact_reg.CPU:
1066 call sub_0caeh ;0565 cd ae 0c . . .
1067 jr nc,error4 ;0568 30 3d 0 =
1068 ld a,(hl) ;056a 7e ~
1069 inc hl ;056b 23 #
1070 ld h,(hl) ;056c 66 f
1071 ld l,a ;056d 6f o
1072 and a ;056e a7 .
1073 bit 0,c ;056f cb 41 . A
1074 ret nz ;0571 c0 .
1075 ld h,000h ;0572 26 00 & .
1076 ret ;0574 c9 .
1077
1078 fact_factneg:
1079 call fact_factor ;0575 cd dd 04 . . .
1080 dec hl ;0578 2b +
1081 cpl.hl:
1082 ld a,h ;0579 7c |
1083 cpl ;057a 2f /
1084 ld h,a ;057b 67 g
1085 ld a,l ;057c 7d }
1086 cpl ;057d 2f /
1087 ld l,a ;057e 6f o
1088 ret ;057f c9 .
1089
1090 fact_factinv:
1091 call fact_factor ;0580 cd dd 04 . . .
1092 jr cpl.hl ;0583 18 f4 . .
1093
1094 fact_mem:
1095 call expr1 ;0585 cd c1 03 . . .
1096 jr c,error4 ;0588 38 1d 8 .
1097 ld a,(de) ;058a 1a .
1098 cp ')' ;058b fe 29 . )
1099 jr nz,error4 ;058d 20 18 .
1100 inc de ;058f 13 .
1101 ld a,(hl) ;0590 7e ~
1102 inc hl ;0591 23 #
1103 ld h,(hl) ;0592 66 f
1104 ld l,a ;0593 6f o
1105 ld a,(de) ;0594 1a .
1106 inc de ;0595 13 .
1107 cp '.' ;0596 fe 2e . .
1108 ret z ;0598 c8 .
1109 dec de ;0599 1b .
1110 xor a ;059a af .
1111 ld h,a ;059b 67 g
1112 ret ;059c c9 .
1113
1114 expr_brckt:
1115 call expr1 ;059d cd c1 03 . . .
1116 jr c,error4 ;05a0 38 05 8 .
1117 ld a,(de) ;05a2 1a .
1118 cp ']' ;05a3 fe 5d . ]
1119 inc de ;05a5 13 .
1120 ret z ;05a6 c8 .
1121 error4:
1122 jp ERROR ;05a7 c3 07 01 . . .
1123
1124 get.number:
1125 call get.hexdigit ;05aa cd 11 06 . . .
1126 ret c ;05ad d8 .
1127 push de ;05ae d5 .
1128 test_number:
1129 inc de ;05af 13 .
1130 call get.hexdigit ;05b0 cd 11 06 . . .
1131 jr nc,test_number ;05b3 30 fa 0 .
1132 pop de ;05b5 d1 .
1133 cp '.' ;05b6 fe 2e . .
1134 jr z,get_dec_number ;05b8 28 36 ( 6
1135 cp '"' ;05ba fe 22 . "
1136 jr z,get_bin_number ;05bc 28 17 ( .
1137 ld hl,0 ;05be 21 00 00 ! . .
1138 next_hexdigit:
1139 call get.hexdigit ;05c1 cd 11 06 . . .
1140 jr c,hexnum_done ;05c4 38 0a 8 .
1141 add hl,hl ;05c6 29 )
1142 add hl,hl ;05c7 29 )
1143 add hl,hl ;05c8 29 )
1144 add hl,hl ;05c9 29 )
1145 call add_hl_a ;05ca cd b9 02 . . .
1146 inc de ;05cd 13 .
1147 jr next_hexdigit ;05ce 18 f1 . .
1148
1149 hexnum_done:
1150 xor 'H' ;05d0 ee 48 . H
1151 ret nz ;05d2 c0 .
1152 inc de ;05d3 13 .
1153 ret ;05d4 c9 .
1154
1155 get_bin_number:
1156 ld hl,0 ;05d5 21 00 00 ! . .
1157 next_bindigit:
1158 call get.bindigit ;05d8 cd 22 06 . " .
1159 l05dbh:
1160 inc de ;05db 13 .
1161 jr c,l05e4h ;05dc 38 06 8 .
1162 add hl,hl ;05de 29 )
1163 call add_hl_a ;05df cd b9 02 . . .
1164 jr next_bindigit ;05e2 18 f4 . .
1165 l05e4h:
1166 cp '"' ;05e4 fe 22 . "
1167 jp nz,ERROR ;05e6 c2 07 01 . . .
1168 call get.bindigit ;05e9 cd 22 06 . " .
1169 jr nc,l05dbh ;05ec 30 ed 0 .
1170 or a ;05ee b7 .
1171 ret ;05ef c9 .
1172
1173 get_dec_number:
1174 ld hl,0 ;05f0 21 00 00 ! . .
1175 next_decdigit:
1176 call get.decdigit ;05f3 cd 1d 06 . . .
1177 inc de ;05f6 13 .
1178 jr c,decnum_done ;05f7 38 0d 8 .
1179 push bc ;05f9 c5 .
1180 add hl,hl ;05fa 29 )
1181 ld b,h ;05fb 44 D
1182 ld c,l ;05fc 4d M
1183 add hl,hl ;05fd 29 )
1184 add hl,hl ;05fe 29 )
1185 add hl,bc ;05ff 09 .
1186 pop bc ;0600 c1 .
1187 call add_hl_a ;0601 cd b9 02 . . .
1188 jr next_decdigit ;0604 18 ed . .
1189 decnum_done:
1190 cp '.' ;0606 fe 2e . .
1191 ret z ;0608 c8 .
1192 jp ERROR ;0609 c3 07 01 . . .
1193
1194 sub_060ch:
1195 ld a,(de) ;060c 1a .
1196 cp '[' ;060d fe 5b . [
1197 jr l0614h ;060f 18 03 . .
1198
1199 get.hexdigit:
1200 ld a,(de) ;0611 1a .
1201 hex_digit:
1202 cp 'F'+1 ;0612 fe 47 . G
1203 l0614h:
1204 ccf ;0614 3f ?
1205 ret c ;0615 d8 .
1206 cp 'A' ;0616 fe 41 . A
1207 jr c,l061eh ;0618 38 04 8 .
1208 sub 'A'-10 ;061a d6 37 . 7
1209 ret ;061c c9 .
1210
1211 get.decdigit:
1212 ld a,(de) ;061d 1a .
1213 l061eh:
1214 cp '9'+1 ;061e fe 3a . :
1215 jr l0625h ;0620 18 03 . .
1216
1217 get.bindigit:
1218 ld a,(de) ;0622 1a .
1219 cp '1'+1 ;0623 fe 32 . 2
1220 l0625h:
1221 ccf ;0625 3f ?
1222 ret c ;0626 d8 .
1223 cp '0' ;0627 fe 30 . 0
1224 ret c ;0629 d8 .
1225 sub '0' ;062a d6 30 . 0
1226 ret ;062c c9 .
1227
1228 p_cpustat0:
1229 call assert_eol ;062d cd d6 02 . . .
1230 p_cpustat:
1231 call p_f ;0630 cd 6e 06 . n .
1232 call outbl2 ;0633 cd 9c 02 . . .
1233 ld hl,b_06e9_start ;0636 21 e9 06 ! . .
1234 ld de,b_0709_start ;0639 11 09 07 . . .
1235 ld b,6 ;063c 06 06 . .
1236 l063eh:
1237 call p_regs ;063e cd b2 06 . . .
1238 djnz l063eh ;0641 10 fb . .
1239 push hl ;0643 e5 .
1240 push de ;0644 d5 .
1241 ld iy,(REG.PC) ;0645 fd 2a 60 00 . * ` .
1242 call p_disas_instr ;0649 cd 65 19 . e .
1243 exx ;064c d9 .
1244 ex af,af' ;064d 08 .
1245 call crlf ;064e cd a3 02 . . .
1246 call p_f2 ;0651 cd 81 06 . . .
1247 call outbl2 ;0654 cd 9c 02 . . .
1248 pop de ;0657 d1 .
1249 pop hl ;0658 e1 .
1250 ld b,7 ;0659 06 07 . .
1251 l065bh:
1252 call p_regs ;065b cd b2 06 . . .
1253 djnz l065bh ;065e 10 fb . .
1254 exx ;0660 d9 .
1255 ex af,af' ;0661 08 .
1256 and a ;0662 a7 .
1257 jr z,l066bh ;0663 28 06 ( .
1258 call outbl6 ;0665 cd 96 02 . . .
1259 call p_offset ;0668 cd 49 19 . I .
1260 l066bh:
1261 jp crlf ;066b c3 a3 02 . . .
1262
1263 p_f:
1264 ld a,(reg.f) ;066e 3a 54 00 : T .
1265 call p_flags ;0671 cd 8a 06 . . .
1266 ld a,(reg.iff) ;0674 3a 5e 00 : ^ .
1267 cp 0f3h ;0677 fe f3 . .
1268 jp z,outbl ;0679 ca 9f 02 . . .
1269 ld a,'E' ;067c 3e 45 > E
1270 jp outchar ;067e c3 5d 02 . ] .
1271 p_f2:
1272 ld a,(reg.f2) ;0681 3a 4c 00 : L .
1273 call p_flags ;0684 cd 8a 06 . . .
1274 jp outbl ;0687 c3 9f 02 . . .
1275 p_flags:
1276 ld b,a ;068a 47 G
1277 ld a,'S' ;068b 3e 53 > S
1278 call sub_06aah ;068d cd aa 06 . . .
1279 ld a,'Z' ;0690 3e 5a > Z
1280 call sub_06aah ;0692 cd aa 06 . . .
1281 rl b ;0695 cb 10 . .
1282 ld a,'H' ;0697 3e 48 > H
1283 call sub_06aah ;0699 cd aa 06 . . .
1284 rl b ;069c cb 10 . .
1285 ld a,'V' ;069e 3e 56 > V
1286 call sub_06aah ;06a0 cd aa 06 . . .
1287 ld a,'N' ;06a3 3e 4e > N
1288 call sub_06aah ;06a5 cd aa 06 . . .
1289 ld a,'C' ;06a8 3e 43 > C
1290 sub_06aah:
1291 rl b ;06aa cb 10 . .
1292 jp c,outchar ;06ac da 5d 02 . ] .
1293 jp outbl ;06af c3 9f 02 . . .
1294
1295 p_regs:
1296 push bc ;06b2 c5 .
1297 push de ;06b3 d5 .
1298 call pstr ;06b4 cd 88 02 . . .
1299 ld a,'=' ;06b7 3e 3d > =
1300 call outchar ;06b9 cd 5d 02 . ] .
1301 ex (sp),hl ;06bc e3 .
1302 ld e,(hl) ;06bd 5e ^
1303 inc hl ;06be 23 #
1304 ld d,(hl) ;06bf 56 V
1305 inc hl ;06c0 23 #
1306 ld a,(hl) ;06c1 7e ~
1307 inc hl ;06c2 23 #
1308 push hl ;06c3 e5 .
1309 and a ;06c4 a7 .
1310 jr z,l06deh ;06c5 28 17 ( .
1311 push af ;06c7 f5 .
1312 ld a,(de) ;06c8 1a .
1313 ld l,a ;06c9 6f o
1314 inc de ;06ca 13 .
1315 ld a,(de) ;06cb 1a .
1316 ld h,a ;06cc 67 g
1317 pop af ;06cd f1 .
1318 dec a ;06ce 3d =
1319 jr z,l06d9h ;06cf 28 08 ( .
1320 call out.hl.@ ;06d1 cd a4 01 . . .
1321 call z,outbl6 ;06d4 cc 96 02 . . .
1322 jr l06e2h ;06d7 18 09 . .
1323 l06d9h:
1324 call out_hl ;06d9 cd 13 02 . . .
1325 jr l06e2h ;06dc 18 04 . .
1326 l06deh:
1327 ld a,(de) ;06de 1a .
1328 call out_hex ;06df cd 18 02 . . .
1329 l06e2h:
1330 call outbl ;06e2 cd 9f 02 . . .
1331 pop de ;06e5 d1 .
1332 pop hl ;06e6 e1 .
1333 pop bc ;06e7 c1 .
1334 ret ;06e8 c9 .
1335
1336 b_06e9_start:
1337 DC 'A '
1338 DC 'BC '
1339 DC 'DE '
1340 DC 'HL '
1341 DC 'SP'
1342 DC 'PC'
1343 DC 'a'''
1344 DC 'bc'''
1345 DC 'de'''
1346 DC 'hl'''
1347 DC 'IX'
1348 DC 'IY'
1349 DC 'I'
1350 DB 0
1351
1352 b_0709_start:
1353 dw reg.a ;0709 55 00 U .
1354 db 000h ;070b 00 .
1355 dw reg.c ;070c 56 00 V .
1356 db 001h ;070e 01 .
1357 dw reg.e ;070f 58 00 X .
1358 db 001h ;0711 01 .
1359 dw reg.l ;0712 5a 00 Z .
1360 db 001h ;0714 01 .
1361 dw reg_sp ;0715 5c 00 \ .
1362 db 001h ;0717 01 .
1363 dw REG.PC ;0718 60 00 ` .
1364 db 002h ;071a 02 .
1365 dw reg.a2 ;071b 4d 00 M .
1366 db 000h ;071d 00 .
1367 dw reg.c2 ;071e 4a 00 J .
1368 db 001h ;0720 01 .
1369 dw reg.e2 ;0721 48 00 H .
1370 db 001h ;0723 01 .
1371 dw reg.l2 ;0724 46 00 F .
1372 db 001h ;0726 01 .
1373 dw reg.ix ;0727 52 00 R .
1374 db 001h ;0729 01 .
1375 dw reg.iy ;072a 50 00 P .
1376 db 001h ;072c 01 .
1377 dw reg.i ;072d 4f 00 O .
1378 db 000h ;072f 00 .
1379 db 000h ;0730 00 .
1380
1381 cmd_G:
1382 sub a ;0731 97 .
1383 ld (trace_call_flag),a ;0732 32 e3 21 2 . !
1384 ld (l0941h),a ;0735 32 41 09 2 A .
1385 call expr ;0738 cd be 03 . . .
1386 jr c,l0740h ;073b 38 03 8 .
1387 ld (REG.PC),hl ;073d 22 60 00 " ` .
1388 l0740h:
1389 call skipbl ;0740 cd bf 02 . . .
1390 jp z,user_go ;0743 ca 25 0a . % .
1391 cp ';' ;0746 fe 3b . ;
1392 jp nz,ERROR ;0748 c2 07 01 . . .
1393 inc de ;074b 13 .
1394 ld a,002h ;074c 3e 02 > .
1395 call bp_enter ;074e cd 10 08 . . .
1396 jp user_go ;0751 c3 25 0a . % .
1397
1398 bp_clr_temporary:
1399 ld b,BP_CNT ;0754 06 0c . .
1400 ld ix,bp_tab ;0756 dd 21 b8 0a . ! . .
1401 l075ah:
1402 ld a,(ix+000h) ;075a dd 7e 00 . ~ .
1403 and 0f1h ;075d e6 f1 . .
1404 ld (ix+000h),a ;075f dd 77 00 . w .
1405 call bp_clr_condition ;0762 cd 5f 0a . _ .
1406 ld de,BP_SIZE ;0765 11 08 00 . . .
1407 add ix,de ;0768 dd 19 . .
1408 djnz l075ah ;076a 10 ee . .
1409 ret ;076c c9 .
1410
1411 cmd_B:
1412 call skipbl ;076d cd bf 02 . . .
1413 jr z,l07b7h ;0770 28 45 ( E
1414 inc de ;0772 13 .
1415 cp 'X' ;0773 fe 58 . X
1416 jr z,l077dh ;0775 28 06 ( .
1417 dec de ;0777 1b .
1418 ld a,001h ;0778 3e 01 > .
1419 jp bp_enter ;077a c3 10 08 . . .
1420 l077dh:
1421 call skipbl ;077d cd bf 02 . . .
1422 jr z,bp_clr_all ;0780 28 10 ( .
1423 l0782h:
1424 call expr ;0782 cd be 03 . . .
1425 jp c,assert_eol ;0785 da d6 02 . . .
1426 push de ;0788 d5 .
1427 call bp_clr ;0789 cd 93 07 . . .
1428 pop de ;078c d1 .
1429 call next_arg ;078d cd ca 02 . . .
1430 jr l0782h ;0790 18 f0 . .
1431
1432 bp_clr_all:
1433 scf ;0792 37 7
1434 bp_clr:
1435 ld b,BP_CNT ;0793 06 0c . .
1436 ld ix,bp_tab ;0795 dd 21 b8 0a . ! . .
1437 l0799h:
1438 push af ;0799 f5 .
1439 jr c,l07a7h ;079a 38 0b 8 .
1440 ld e,(ix+002h) ;079c dd 5e 02 . ^ .
1441 ld d,(ix+003h) ;079f dd 56 03 . V .
1442 call cp_hl_de ;07a2 cd ee 02 . . .
1443 jr nz,l07aeh ;07a5 20 07 .
1444 l07a7h:
1445 ld (ix+000h),000h ;07a7 dd 36 00 00 . 6 . .
1446 call bp_clr_condition ;07ab cd 5f 0a . _ .
1447 l07aeh:
1448 ld de,BP_SIZE ;07ae 11 08 00 . . .
1449 add ix,de ;07b1 dd 19 . .
1450 pop af ;07b3 f1 .
1451 djnz l0799h ;07b4 10 e3 . .
1452 ret ;07b6 c9 .
1453
1454 l07b7h:
1455 ld b,BP_CNT ;07b7 06 0c . .
1456 ld ix,bp_tab ;07b9 dd 21 b8 0a . ! . .
1457 l07bdh:
1458 bit 0,(ix+000h) ;07bd dd cb 00 46 . . . F
1459 jr z,l0808h ;07c1 28 45 ( E
1460 ld a,'R' ;07c3 3e 52 > R
1461 bit 4,(ix+000h) ;07c5 dd cb 00 66 . . . f
1462 jr nz,l07cdh ;07c9 20 02 .
1463 ld a,' ' ;07cb 3e 20 >
1464 l07cdh:
1465 call outchar ;07cd cd 5d 02 . ] .
1466 call outbl ;07d0 cd 9f 02 . . .
1467 ld l,(ix+002h) ;07d3 dd 6e 02 . n .
1468 ld h,(ix+003h) ;07d6 dd 66 03 . f .
1469 call out.hl.@ ;07d9 cd a4 01 . . .
1470 call outbl2 ;07dc cd 9c 02 . . .
1471 ld a,':' ;07df 3e 3a > :
1472 call outchar ;07e1 cd 5d 02 . ] .
1473 ld l,(ix+004h) ;07e4 dd 6e 04 . n .
1474 ld h,(ix+005h) ;07e7 dd 66 05 . f .
1475 call out_hl ;07ea cd 13 02 . . .
1476 ld l,(ix+006h) ;07ed dd 6e 06 . n .
1477 ld h,(ix+007h) ;07f0 dd 66 07 . f .
1478 ld a,h ;07f3 7c |
1479 or l ;07f4 b5 .
1480 jr z,l0805h ;07f5 28 0e ( .
1481 call outbl4 ;07f7 cd 99 02 . . .
1482 ld a,'I' ;07fa 3e 49 > I
1483 call outchar ;07fc cd 5d 02 . ] .
1484 call outbl2 ;07ff cd 9c 02 . . .
1485 call pstr ;0802 cd 88 02 . . .
1486 l0805h:
1487 call crlf ;0805 cd a3 02 . . .
1488 l0808h:
1489 ld de,BP_SIZE ;0808 11 08 00 . . .
1490 add ix,de ;080b dd 19 . .
1491 djnz l07bdh ;080d 10 ae . .
1492 ret ;080f c9 .
1493
1494 ; Add break points to list
1495 ; A = 1 Permanent (B command)
1496 ; A = 2 Temporary (G command)
1497
1498 bp_enter:
1499 ld b,a ;0810 47 G
1500 call skipbl ;0811 cd bf 02 . . .
1501 ret z ;0814 c8 .
1502 cp 'R' ;0815 fe 52 . R
1503 jr nz,l081ch ;0817 20 03 .
1504 inc de ;0819 13 .
1505 set 4,b ;081a cb e0 . .
1506 l081ch:
1507 push bc ;081c c5 .
1508 call expr ;081d cd be 03 . . .
1509 jp c,ERROR ;0820 da 07 01 . . .
1510 pop bc ;0823 c1 .
1511 bit 0,b ;0824 cb 40 . @
1512 push bc ;0826 c5 .
1513 push de ;0827 d5 .
1514 push hl ;0828 e5 .
1515 call nz,bp_clr ;0829 c4 93 07 . . .
1516 pop hl ;082c e1 .
1517 call bp_get_freeslot ;082d cd 54 08 . T .
1518 pop de ;0830 d1 .
1519 ld (ix+002h),l ;0831 dd 75 02 . u .
1520 ld (ix+003h),h ;0834 dd 74 03 . t .
1521 call bp_get_count ;0837 cd 6c 08 . l .
1522 ld (ix+004h),l ;083a dd 75 04 . u .
1523 ld (ix+005h),h ;083d dd 74 05 . t .
1524 call bp_get_condition ;0840 cd 7d 08 . } .
1525 ld (ix+006h),l ;0843 dd 75 06 . u .
1526 ld (ix+007h),h ;0846 dd 74 07 . t .
1527 call next_arg ;0849 cd ca 02 . . .
1528 pop af ;084c f1 .
1529 ld (ix+000h),a ;084d dd 77 00 . w .
1530 and 00fh ;0850 e6 0f . .
1531 jr bp_enter ;0852 18 bc . .
1532
1533 bp_get_freeslot:
1534 ld b,BP_CNT ;0854 06 0c . .
1535 ld ix,bp_tab ;0856 dd 21 b8 0a . ! . .
1536 l085ah:
1537 ld a,(ix+000h) ;085a dd 7e 00 . ~ .
1538 and 00fh ;085d e6 0f . .
1539 ret z ;085f c8 .
1540 push bc ;0860 c5 .
1541 ld bc,BP_SIZE ;0861 01 08 00 . . .
1542 add ix,bc ;0864 dd 09 . .
1543 pop bc ;0866 c1 .
1544 djnz l085ah ;0867 10 f1 . .
1545 jp ERROR ;0869 c3 07 01 . . .
1546
1547 bp_get_count:
1548 call skipbl ;086c cd bf 02 . . .
1549 ld hl,1 ;086f 21 01 00 ! . .
1550 cp ':' ;0872 fe 3a . :
1551 ret nz ;0874 c0 .
1552 inc de ;0875 13 .
1553 call expr ;0876 cd be 03 . . .
1554 jp c,ERROR ;0879 da 07 01 . . .
1555 ret ;087c c9 .
1556
1557 bp_get_condition:
1558 call skipbl ;087d cd bf 02 . . .
1559 cp 'I' ;0880 fe 49 . I
1560 ld hl,0 ;0882 21 00 00 ! . .
1561 ret nz ;0885 c0 .
1562 inc de ;0886 13 .
1563 call skipbl ;0887 cd bf 02 . . .
1564 push de ;088a d5 .
1565 call expr ;088b cd be 03 . . .
1566 jp c,ERROR ;088e da 07 01 . . .
1567 ex de,hl ;0891 eb .
1568 pop de ;0892 d1 .
1569 push de ;0893 d5 .
1570 sbc hl,de ;0894 ed 52 . R
1571 ld b,h ;0896 44 D
1572 ld c,l ;0897 4d M
1573 ld hl,(expr_p1) ;0898 2a 18 0b * . .
1574 push hl ;089b e5 .
1575 add hl,bc ;089c 09 .
1576 ld de,expr_bufe ;089d 11 9c 0b . . .
1577 call cp_hl_de ;08a0 cd ee 02 . . .
1578 jp nc,ERROR ;08a3 d2 07 01 . . .
1579 pop hl ;08a6 e1 .
1580 ld (expr_p2),hl ;08a7 22 1a 0b " . .
1581 pop de ;08aa d1 .
1582 ex de,hl ;08ab eb .
1583 ldir ;08ac ed b0 . .
1584 xor a ;08ae af .
1585 ld (de),a ;08af 12 .
1586 inc de ;08b0 13 .
1587 ex de,hl ;08b1 eb .
1588 ld (expr_p1),hl ;08b2 22 18 0b " . .
1589 ld hl,(expr_p2) ;08b5 2a 1a 0b * . .
1590 ret ;08b8 c9 .
1591
1592 bpddtz:
1593 ld (reg.l),hl ;08b9 22 5a 00 " Z .
1594 pop hl ;08bc e1 .
1595 dec hl ;08bd 2b +
1596 ld (REG.PC),hl ;08be 22 60 00 " ` .
1597 ld (reg_sp),sp ;08c1 ed 73 5c 00 . s \ .
1598 ld sp,reg.l ;08c5 31 5a 00 1 Z .
1599 push de ;08c8 d5 .
1600 push bc ;08c9 c5 .
1601 push af ;08ca f5 .
1602 push ix ;08cb dd e5 . .
1603 push iy ;08cd fd e5 . .
1604 ld a,i ;08cf ed 57 . W
1605 call sub_0004h ;08d1 cd 04 00 . . .
1606 ld h,a ;08d4 67 g
1607 ld l,000h ;08d5 2e 00 . .
1608 push hl ;08d7 e5 .
1609 ld a,0f3h ;08d8 3e f3 > .
1610 jp po,l08dfh ;08da e2 df 08 . . .
1611 ld a,0fbh ;08dd 3e fb > .
1612 l08dfh:
1613 ld (reg.iff),a ;08df 32 5e 00 2 ^ .
1614 ex af,af' ;08e2 08 .
1615 push af ;08e3 f5 .
1616 exx ;08e4 d9 .
1617 push bc ;08e5 c5 .
1618 push de ;08e6 d5 .
1619 push hl ;08e7 e5 .
1620 call sub_097ah ;08e8 cd 7a 09 . z .
1621 ld a,(b_21e2_start) ;08eb 3a e2 21 : . !
1622 dec a ;08ee 3d =
1623 jr z,l090bh ;08ef 28 1a ( .
1624 call inchar ;08f1 cd 73 02 . s .
1625 jr c,l0902h ;08f4 38 0c 8 .
1626 call sub_0913h ;08f6 cd 13 09 . . .
1627 and a ;08f9 a7 .
1628 jp z,user_go ;08fa ca 25 0a . % .
1629 and 083h ;08fd e6 83 . .
1630 jp z,l2151h ;08ff ca 51 21 . Q !
1631 l0902h:
1632 call bp_clr_temporary ;0902 cd 54 07 . T .
1633 call p_cpustat ;0905 cd 30 06 . 0 .
1634 jp mainloop ;0908 c3 bd 00 . . .
1635
1636 l090bh:
1637 ld (b_21e2_start),a ;090b 32 e2 21 2 . !
1638 ld c,007h ;090e 0e 07 . .
1639 jp l0a41h ;0910 c3 41 0a . A .
1640
1641 sub_0913h:
1642 ld a,080h ;0913 3e 80 > .
1643 ex af,af' ;0915 08 .
1644 sub a ;0916 97 .
1645 ld (l0941h),a ;0917 32 41 09 2 A .
1646 ld b,BP_CNT ;091a 06 0c . .
1647 ld ix,bp_tab ;091c dd 21 b8 0a . ! . .
1648 l0920h:
1649 ld a,(ix+000h) ;0920 dd 7e 00 . ~ .
1650 and 007h ;0923 e6 07 . .
1651 jr z,l0938h ;0925 28 11 ( .
1652 ld e,(ix+002h) ;0927 dd 5e 02 . ^ .
1653 ld d,(ix+003h) ;092a dd 56 03 . V .
1654 ld hl,(REG.PC) ;092d 2a 60 00 * ` .
1655 call cp_hl_de ;0930 cd ee 02 . . .
1656 push bc ;0933 c5 .
1657 call z,sub_0942h ;0934 cc 42 09 . B .
1658 pop bc ;0937 c1 .
1659 l0938h:
1660 ld de,BP_SIZE ;0938 11 08 00 . . .
1661 add ix,de ;093b dd 19 . .
1662 djnz l0920h ;093d 10 e1 . .
1663 ex af,af' ;093f 08 .
1664 ret ;0940 c9 .
1665
1666 sub_0942h:
1667 ex af,af' ;0942 08 .
1668 res 7,a ;0943 cb bf . .
1669 ex af,af' ;0945 08 .
1670 ld e,(ix+006h) ;0946 dd 5e 06 . ^ .
1671 ld d,(ix+007h) ;0949 dd 56 07 . V .
1672 ld a,d ;094c 7a z
1673 or e ;094d b3 .
1674 ld hl,0ffffh ;094e 21 ff ff ! . .
1675 call nz,expr ;0951 c4 be 03 . . .
1676 ld a,h ;0954 7c |
1677 or l ;0955 b5 .
1678 jr z,l0969h ;0956 28 11 ( .
1679 ld e,(ix+004h) ;0958 dd 5e 04 . ^ .
1680 ld d,(ix+005h) ;095b dd 56 05 . V .
1681 dec de ;095e 1b .
1682 ld a,d ;095f 7a z
1683 or e ;0960 b3 .
1684 jr z,l0974h ;0961 28 11 ( .
1685 ld (ix+004h),e ;0963 dd 73 04 . s .
1686 ld (ix+005h),d ;0966 dd 72 05 . r .
1687 l0969h:
1688 bit 4,(ix+000h) ;0969 dd cb 00 66 . . . f
1689 ret z ;096d c8 .
1690 ld a,001h ;096e 3e 01 > .
1691 ld (l0941h),a ;0970 32 41 09 2 A .
1692 ret ;0973 c9 .
1693 l0974h:
1694 ex af,af' ;0974 08 .
1695 or (ix+000h) ;0975 dd b6 00 . . .
1696 ex af,af' ;0978 08 .
1697 ret ;0979 c9 .
1698
1699 sub_097ah:
1700 ld b,BP_CNT ;097a 06 0c . .
1701 ld ix,bp_tab ;097c dd 21 b8 0a . ! . .
1702 l0980h:
1703 bit 5,(ix+000h) ;0980 dd cb 00 6e . . . n
1704 res 5,(ix+000h) ;0984 dd cb 00 ae . . . .
1705 jr z,l099ah ;0988 28 10 ( .
1706 ld l,(ix+002h) ;098a dd 6e 02 . n .
1707 ld h,(ix+003h) ;098d dd 66 03 . f .
1708 ld a,(l0003h) ;0990 3a 03 00 : . .
1709 cp (hl) ;0993 be .
1710 jr nz,l099ah ;0994 20 04 .
1711 ld a,(ix+001h) ;0996 dd 7e 01 . ~ .
1712 ld (hl),a ;0999 77 w
1713 l099ah:
1714 res 3,(ix+000h) ;099a dd cb 00 9e . . . .
1715 ld de,BP_SIZE ;099e 11 08 00 . . .
1716 add ix,de ;09a1 dd 19 . .
1717 djnz l0980h ;09a3 10 db . .
1718 ret ;09a5 c9 .
1719
1720 sub_09a6h:
1721 ld b,BP_CNT ;09a6 06 0c . .
1722 ld ix,bp_tab ;09a8 dd 21 b8 0a . ! . .
1723 l09ach:
1724 ld a,(ix+000h) ;09ac dd 7e 00 . ~ .
1725 and 003h ;09af e6 03 . .
1726 jr z,l09c0h ;09b1 28 0d ( .
1727 ld e,(ix+002h) ;09b3 dd 5e 02 . ^ .
1728 ld d,(ix+003h) ;09b6 dd 56 03 . V .
1729 ld hl,(REG.PC) ;09b9 2a 60 00 * ` .
1730 call cp_hl_de ;09bc cd ee 02 . . .
1731 ret z ;09bf c8 .
1732 l09c0h:
1733 ld de,BP_SIZE ;09c0 11 08 00 . . .
1734 add ix,de ;09c3 dd 19 . .
1735 djnz l09ach ;09c5 10 e5 . .
1736 sub a ;09c7 97 .
1737 inc a ;09c8 3c <
1738 ret ;09c9 c9 .
1739
1740 sub_09cah:
1741 call bp_get_freeslot ;09ca cd 54 08 . T .
1742 ld (ix+004h),001h ;09cd dd 36 04 01 . 6 . .
1743 ld (ix+005h),000h ;09d1 dd 36 05 00 . 6 . .
1744 ld (ix+002h),l ;09d5 dd 75 02 . u .
1745 ld (ix+003h),h ;09d8 dd 74 03 . t .
1746 ld (ix+006h),000h ;09db dd 36 06 00 . 6 . .
1747 ld (ix+007h),000h ;09df dd 36 07 00 . 6 . .
1748 ld a,(b_21e2_start) ;09e3 3a e2 21 : . !
1749 and a ;09e6 a7 .
1750 ld a,008h ;09e7 3e 08 > .
1751 jr nz,l09edh ;09e9 20 02 .
1752 ld a,004h ;09eb 3e 04 > .
1753 l09edh:
1754 ld (ix+000h),a ;09ed dd 77 00 . w .
1755 ret ;09f0 c9 .
1756
1757 sub_09f1h:
1758 ld b,BP_CNT ;09f1 06 0c . .
1759 ld ix,bp_tab ;09f3 dd 21 b8 0a . ! . .
1760 l09f7h:
1761 ld a,(ix+000h) ;09f7 dd 7e 00 . ~ .
1762 and c ;09fa a1 .
1763 jr z,l0a1dh ;09fb 28 20 (
1764 set 5,(ix+000h) ;09fd dd cb 00 ee . . . .
1765 ld l,(ix+002h) ;0a01 dd 6e 02 . n .
1766 ld h,(ix+003h) ;0a04 dd 66 03 . f .
1767 ld a,(hl) ;0a07 7e ~
1768 ld (ix+001h),a ;0a08 dd 77 01 . w .
1769 ld a,(l0003h) ;0a0b 3a 03 00 : . .
1770 ld (hl),a ;0a0e 77 w
1771 and 038h ;0a0f e6 38 . 8
1772 ld h,000h ;0a11 26 00 & .
1773 ld l,a ;0a13 6f o
1774 ld (hl),0c3h ;0a14 36 c3 6 .
1775 inc hl ;0a16 23 #
1776 ld de,bpddtz ;0a17 11 b9 08 . . .
1777 ld (hl),e ;0a1a 73 s
1778 inc hl ;0a1b 23 #
1779 ld (hl),d ;0a1c 72 r
1780 l0a1dh:
1781 ld de,BP_SIZE ;0a1d 11 08 00 . . .
1782 add ix,de ;0a20 dd 19 . .
1783 djnz l09f7h ;0a22 10 d3 . .
1784 ret ;0a24 c9 .
1785
1786 user_go:
1787 sub a ;0a25 97 .
1788 ld (b_21e2_start),a ;0a26 32 e2 21 2 . !
1789 ld a,(l0941h) ;0a29 3a 41 09 : A .
1790 and a ;0a2c a7 .
1791 call nz,p_cpustat ;0a2d c4 30 06 . 0 .
1792 call sub_09a6h ;0a30 cd a6 09 . . .
1793 ld c,007h ;0a33 0e 07 . .
1794 jr nz,l0a41h ;0a35 20 0a .
1795 ld a,001h ;0a37 3e 01 > .
1796 ld (b_21e2_start),a ;0a39 32 e2 21 2 . !
1797 call sub_1ffeh ;0a3c cd fe 1f . . .
1798 ld c,008h ;0a3f 0e 08 . .
1799 l0a41h:
1800 call sub_09f1h ;0a41 cd f1 09 . . .
1801 ld sp,reg.l2 ;0a44 31 46 00 1 F .
1802 pop hl ;0a47 e1 .
1803 pop de ;0a48 d1 .
1804 pop bc ;0a49 c1 .
1805 pop af ;0a4a f1 .
1806 exx ;0a4b d9 .
1807 ex af,af' ;0a4c 08 .
1808 pop af ;0a4d f1 .
1809 ld i,a ;0a4e ed 47 . G
1810 pop iy ;0a50 fd e1 . .
1811 pop ix ;0a52 dd e1 . .
1812 pop af ;0a54 f1 .
1813 pop bc ;0a55 c1 .
1814 pop de ;0a56 d1 .
1815 pop hl ;0a57 e1 .
1816 ld sp,(reg_sp) ;0a58 ed 7b 5c 00 . { \ .
1817 jp reg.iff ;0a5c c3 5e 00 . ^ .
1818
1819 bp_clr_condition:
1820 ld a,(ix+000h) ;0a5f dd 7e 00 . ~ .
1821 and 003h ;0a62 e6 03 . .
1822 ret nz ;0a64 c0 .
1823 ld e,(ix+006h) ;0a65 dd 5e 06 . ^ .
1824 ld d,(ix+007h) ;0a68 dd 56 07 . V .
1825 ld a,d ;0a6b 7a z
1826 or e ;0a6c b3 .
1827 ret z ;0a6d c8 .
1828 push bc ;0a6e c5 .
1829 ld h,d ;0a6f 62 b
1830 ld l,e ;0a70 6b k
1831 sub a ;0a71 97 .
1832 ld (ix+006h),a ;0a72 dd 77 06 . w .
1833 ld (ix+007h),a ;0a75 dd 77 07 . w .
1834 ld bc,0ffffh ;0a78 01 ff ff . . .
1835 cpir ;0a7b ed b1 . .
1836 l0a7dh:
1837 push de ;0a7d d5 .
1838 ld de,(expr_p1) ;0a7e ed 5b 18 0b . [ . .
1839 call cp_hl_de ;0a82 cd ee 02 . . .
1840 pop de ;0a85 d1 .
1841 jr nc,l0a93h ;0a86 30 0b 0 .
1842 call sub_0a99h ;0a88 cd 99 0a . . .
1843 l0a8bh:
1844 ld a,(hl) ;0a8b 7e ~
1845 ldi ;0a8c ed a0 . .
1846 and a ;0a8e a7 .
1847 jr nz,l0a8bh ;0a8f 20 fa .
1848 jr l0a7dh ;0a91 18 ea . .
1849 l0a93h:
1850 ld (expr_p1),de ;0a93 ed 53 18 0b . S . .
1851 pop bc ;0a97 c1 .
1852 ret ;0a98 c9 .
1853
1854 sub_0a99h:
1855 ld iy,bp_tab ;0a99 fd 21 b8 0a . ! . .
1856 push de ;0a9d d5 .
1857 l0a9eh:
1858 ld e,(iy+006h) ;0a9e fd 5e 06 . ^ .
1859 ld d,(iy+007h) ;0aa1 fd 56 07 . V .
1860 call cp_hl_de ;0aa4 cd ee 02 . . .
1861 jr z,l0ab0h ;0aa7 28 07 ( .
1862 ld de,BP_SIZE ;0aa9 11 08 00 . . .
1863 add iy,de ;0aac fd 19 . .
1864 jr l0a9eh ;0aae 18 ee . .
1865 l0ab0h:
1866 pop de ;0ab0 d1 .
1867 ld (iy+006h),e ;0ab1 fd 73 06 . s .
1868 ld (iy+007h),d ;0ab4 fd 72 07 . r .
1869 ret ;0ab7 c9 .
1870
1871 cmd_Y:
1872 call get.decdigit ;0bb2 cd 1d 06 . . .
1873 jr c,l0bc3h ;0bb5 38 0c 8 .
1874 inc de ;0bb7 13 .
1875 push af ;0bb8 f5 .
1876 call assert_eol ;0bb9 cd d6 02 . . .
1877 pop af ;0bbc f1 .
1878 call sub_0bdch ;0bbd cd dc 0b . . .
1879 jp l0c15h ;0bc0 c3 15 0c . . .
1880 l0bc3h:
1881 call assert_eol ;0bc3 cd d6 02 . . .
1882 xor a ;0bc6 af .
1883 l0bc7h:
1884 push af ;0bc7 f5 .
1885 call sub_0bdch ;0bc8 cd dc 0b . . .
1886 call outbl4 ;0bcb cd 99 02 . . .
1887 pop af ;0bce f1 .
1888 inc a ;0bcf 3c <
1889 bit 0,a ;0bd0 cb 47 . G
1890 push af ;0bd2 f5 .
1891 call z,crlf ;0bd3 cc a3 02 . . .
1892 pop af ;0bd6 f1 .
1893 cp YREG_CNT ;0bd7 fe 0a . .
1894 jr c,l0bc7h ;0bd9 38 ec 8 .
1895 ret ;0bdb c9 .
1896
1897 sub_0bdch:
1898 ld c,a ;0bdc 4f O
1899 ld b,0 ;0bdd 06 00 . .
1900 add a,'0'+080h ;0bdf c6 b0 . .
1901 ld de,msg_Y+1 ;0be1 11 9d 0b . . .
1902 ld (de),a ;0be4 12 .
1903 dec de ;0be5 1b .
1904 ld hl,reg_Y ;0be6 21 9e 0b ! . .
1905 add hl,bc ;0be9 09 .
1906 add hl,bc ;0bea 09 .
1907 ex de,hl ;0beb eb .
1908 ld c,003h ;0bec 0e 03 . .
1909 jp l0c33h ;0bee c3 33 0c . 3 .
1910
1911 cmd_X:
1912 call skipbl ;0bf1 cd bf 02 . . .
1913 call sub_0caeh ;0bf4 cd ae 0c . . .
1914 jp nc,p_cpustat0 ;0bf7 d2 2d 06 . - .
1915 call assert_eol ;0bfa cd d6 02 . . .
1916 ld a,b ;0bfd 78 x
1917 cp 01eh ;0bfe fe 1e . .
1918 jr z,l0c5fh ;0c00 28 5d ( ]
1919 cp 01fh ;0c02 fe 1f . .
1920 jr z,l0c4fh ;0c04 28 49 ( I
1921 cp 01dh ;0c06 fe 1d . .
1922 jp z,ERROR ;0c08 ca 07 01 . . .
1923 ex de,hl ;0c0b eb .
1924 ld hl,b_0cc3_start ;0c0c 21 c3 0c ! . .
1925 call sel_dc_string ;0c0f cd 3d 03 . = .
1926 l0c12h:
1927 call l0c33h ;0c12 cd 33 0c . 3 .
1928 l0c15h:
1929 call outbl ;0c15 cd 9f 02 . . .
1930 push de ;0c18 d5 .
1931 push bc ;0c19 c5 .
1932 call get_line ;0c1a cd 4e 01 . N .
1933 call skipbl ;0c1d cd bf 02 . . .
1934 jr z,l0c30h ;0c20 28 0e ( .
1935 call sub_0363h ;0c22 cd 63 03 . c .
1936 ld b,h ;0c25 44 D
1937 ld c,l ;0c26 4d M
1938 pop af ;0c27 f1 .
1939 pop hl ;0c28 e1 .
1940 ld (hl),c ;0c29 71 q
1941 bit 0,a ;0c2a cb 47 . G
1942 ret z ;0c2c c8 .
1943 inc hl ;0c2d 23 #
1944 ld (hl),b ;0c2e 70 p
1945 ret ;0c2f c9 .
1946 l0c30h:
1947 pop af ;0c30 f1 .
1948 pop hl ;0c31 e1 .
1949 ret ;0c32 c9 .
1950 l0c33h:
1951 ld b,c ;0c33 41 A
1952 call pstr ;0c34 cd 88 02 . . .
1953 ld a,'=' ;0c37 3e 3d > =
1954 call outchar ;0c39 cd 5d 02 . ] .
1955 ld a,(de) ;0c3c 1a .
1956 bit 0,b ;0c3d cb 40 . @
1957 jp z,out_hex ;0c3f ca 18 02 . . .
1958 ld l,a ;0c42 6f o
1959 inc de ;0c43 13 .
1960 ld a,(de) ;0c44 1a .
1961 dec de ;0c45 1b .
1962 ld h,a ;0c46 67 g
1963 bit 1,b ;0c47 cb 48 . H
1964 jp z,out_hl ;0c49 ca 13 02 . . .
1965 jp out.hl.@ ;0c4c c3 a4 01 . . .
1966
1967 l0c4fh:
1968 call p_f ;0c4f cd 6e 06 . n .
1969 ld a,0f3h ;0c52 3e f3 > .
1970 ld (reg.iff),a ;0c54 32 5e 00 2 ^ .
1971 scf ;0c57 37 7
1972 call sub_0c6ah ;0c58 cd 6a 0c . j .
1973 ld (reg.f),a ;0c5b 32 54 00 2 T .
1974 ret ;0c5e c9 .
1975 l0c5fh:
1976 call p_f2 ;0c5f cd 81 06 . . .
1977 and a ;0c62 a7 .
1978 call sub_0c6ah ;0c63 cd 6a 0c . j .
1979 ld (reg.f2),a ;0c66 32 4c 00 2 L .
1980 ret ;0c69 c9 .
1981 sub_0c6ah:
1982 ex af,af' ;0c6a 08 .
1983 ld b,000h ;0c6b 06 00 . .
1984 call outbl ;0c6d cd 9f 02 . . .
1985 call assert_eol ;0c70 cd d6 02 . . .
1986 call get_line ;0c73 cd 4e 01 . N .
1987 l0c76h:
1988 call skipbl ;0c76 cd bf 02 . . .
1989 ld a,b ;0c79 78 x
1990 ret z ;0c7a c8 .
1991 push bc ;0c7b c5 .
1992 ld hl,b_0ca4_start ;0c7c 21 a4 0c ! . .
1993 call lookupch ;0c7f cd f3 02 . . .
1994 jp nc,ERROR ;0c82 d2 07 01 . . .
1995 ld a,b ;0c85 78 x
1996 cp 008h ;0c86 fe 08 . .
1997 jr z,l0c97h ;0c88 28 0d ( .
1998 pop bc ;0c8a c1 .
1999 rlca ;0c8b 07 .
2000 rlca ;0c8c 07 .
2001 rlca ;0c8d 07 .
2002 add a,0c0h ;0c8e c6 c0 . .
2003 ld (l0c94h),a ;0c90 32 94 0c 2 . .
2004 defb 0cbh ;0c93 cb .
2005 l0c94h:
2006 defb 0c0h ;0c94 c0 .
2007 jr l0c76h ;0c95 18 df . .
2008 l0c97h:
2009 ex af,af' ;0c97 08 .
2010 jp nc,ERROR ;0c98 d2 07 01 . . .
2011 ex af,af' ;0c9b 08 .
2012 ld a,0fbh ;0c9c 3e fb > .
2013 ld (reg.iff),a ;0c9e 32 5e 00 2 ^ .
2014 pop bc ;0ca1 c1 .
2015 jr l0c76h ;0ca2 18 d2 . .
2016
2017 b_0ca4_start:
2018 db 'CNV H ZSE',0
2019
2020 sub_0caeh:
2021 call sub_0303h ;0cae cd 03 03 . . .
2022 ret nc ;0cb1 d0 .
2023 ld a,b ;0cb2 78 x
2024 add a,b ;0cb3 80 .
2025 add a,b ;0cb4 80 .
2026 ld hl,b_0cfa_start ;0cb5 21 fa 0c ! . .
2027 call add_hl_a ;0cb8 cd b9 02 . . .
2028 ld c,(hl) ;0cbb 4e N
2029 inc hl ;0cbc 23 #
2030 ld a,(hl) ;0cbd 7e ~
2031 inc hl ;0cbe 23 #
2032 ld h,(hl) ;0cbf 66 f
2033 ld l,a ;0cc0 6f o
2034 scf ;0cc1 37 7
2035 ret ;0cc2 c9 .
2036
2037 b_0cc3_start:
2038 DC 'BC'''
2039 DC 'DE'''
2040 DC 'HL'''
2041 DC 'BC'
2042 DC 'DE'
2043 DC 'HL'
2044 DC 'A'''
2045 DC 'B'''
2046 DC 'C'''
2047 DC 'D'''
2048 DC 'E'''
2049 DC 'H'''
2050 DC 'L'''
2051 DC 'A'
2052 DC 'B'
2053 DC 'C'
2054 DC 'D'
2055 DC 'E'
2056 DC 'H'
2057 DC 'L'
2058 DC 'IX'
2059 DC 'IY'
2060 DC 'SP'
2061 DC 'PC'
2062 DC 'X'
2063 DC 'Y'
2064 DC 'S'
2065 DC 'P'
2066 DC 'I'
2067 DC 'IP'
2068 DC 'F'''
2069 DC 'F'
2070 DB 0
2071
2072 b_0cfa_start:
2073 db 003h ;0cfa 03 .
2074 dw reg.c2 ;0cfb 4a 00 J .
2075 db 003h ;0cfd 03 .
2076 dw reg.e2 ;0cfe 48 00 H .
2077 db 003h ;0d00 03 .
2078 dw reg.l2 ;0d01 46 00 F .
2079 db 003h ;0d03 03 .
2080 dw reg.c ;0d04 56 00 V .
2081 db 003h ;0d06 03 .
2082 dw reg.e ;0d07 58 00 X .
2083 db 003h ;0d09 03 .
2084 dw reg.l ;0d0a 5a 00 Z .
2085 db 000h ;0d0c 00 .
2086 dw reg.a2 ;0d0d 4d 00 M .
2087 db 000h ;0d0f 00 .
2088 dw reg.b2 ;0d10 4b 00 K .
2089 db 000h ;0d12 00 .
2090 dw reg.c2 ;0d13 4a 00 J .
2091 db 000h ;0d15 00 .
2092 dw reg.d2 ;0d16 49 00 I .
2093 db 000h ;0d18 00 .
2094 dw reg.e2 ;0d19 48 00 H .
2095 db 000h ;0d1b 00 .
2096 dw reg.h2 ;0d1c 47 00 G .
2097 db 000h ;0d1e 00 .
2098 dw reg.l2 ;0d1f 46 00 F .
2099 db 000h ;0d21 00 .
2100 dw reg.a ;0d22 55 00 U .
2101 db 000h ;0d24 00 .
2102 dw reg.b ;0d25 57 00 W .
2103 db 000h ;0d27 00 .
2104 dw reg.c ;0d28 56 00 V .
2105 db 000h ;0d2a 00 .
2106 dw reg.d ;0d2b 59 00 Y .
2107 db 000h ;0d2d 00 .
2108 dw reg.e ;0d2e 58 00 X .
2109 db 000h ;0d30 00 .
2110 dw reg.h ;0d31 5b 00 [ .
2111 db 000h ;0d33 00 .
2112 dw reg.l ;0d34 5a 00 Z .
2113 db 003h ;0d36 03 .
2114 dw reg.ix ;0d37 52 00 R .
2115 db 003h ;0d39 03 .
2116 dw reg.iy ;0d3a 50 00 P .
2117 db 003h ;0d3c 03 .
2118 dw reg_sp ;0d3d 5c 00 \ .
2119 db 003h ;0d3f 03 .
2120 dw REG.PC ;0d40 60 00 ` .
2121 db 003h ;0d42 03 .
2122 dw reg.ix ;0d43 52 00 R .
2123 db 003h ;0d45 03 .
2124 dw reg.iy ;0d46 50 00 P .
2125 db 003h ;0d48 03 .
2126 dw reg_sp ;0d49 5c 00 \ .
2127 db 003h ;0d4b 03 .
2128 dw REG.PC ;0d4c 60 00 ` .
2129 db 000h ;0d4e 00 .
2130 dw reg.i ;0d4f 4f 00 O .
2131 db 003h ;0d51 03 .
2132 dw l004eh ;0d52 4e 00 N .
2133 db 000h ;0d54 00 .
2134 dw reg.f2 ;0d55 4c 00 L .
2135 db 000h ;0d57 00 .
2136 dw reg.f ;0d58 54 00 T .
2137
2138 cmd_S:
2139 ld hl,(last_S) ;0d5a 2a 90 0d * . .
2140 call get_lastarg_def ;0d5d cd 69 03 . i .
2141 l0d60h:
2142 ld (last_S),hl ;0d60 22 90 0d " . .
2143 call out.hl.@ ;0d63 cd a4 01 . . .
2144 call outbl ;0d66 cd 9f 02 . . .
2145 ld a,(hl) ;0d69 7e ~
2146 call out_hex ;0d6a cd 18 02 . . .
2147 call outbl2 ;0d6d cd 9c 02 . . .
2148 call get_line ;0d70 cd 4e 01 . N .
2149 call skipbl ;0d73 cd bf 02 . . .
2150 inc hl ;0d76 23 #
2151 jr z,l0d60h ;0d77 28 e7 ( .
2152 dec hl ;0d79 2b +
2153 inc de ;0d7a 13 .
2154 cp '.' ;0d7b fe 2e . .
2155 jp z,assert_eol ;0d7d ca d6 02 . . .
2156 cp '-' ;0d80 fe 2d . -
2157 jr nz,l0d8ah ;0d82 20 06 .
2158 ld a,(de) ;0d84 1a .
2159 or a ;0d85 b7 .
2160 dec hl ;0d86 2b +
2161 jr z,l0d60h ;0d87 28 d7 ( .
2162 inc hl ;0d89 23 #
2163 l0d8ah:
2164 dec de ;0d8a 1b .
2165 call sub_0ef8h ;0d8b cd f8 0e . . .
2166 jr l0d60h ;0d8e 18 d0 . .
2167
2168 cmd_@:
2169 call assert_eol ;0d92 cd d6 02 . . .
2170 ld hl,msg_offset ;0d95 21 a0 0d ! . .
2171 ld de,offs.@ ;0d98 11 64 00 . d .
2172 ld c,001h ;0d9b 0e 01 . .
2173 jp l0c12h ;0d9d c3 12 0c . . .
2174
2175 msg_offset:
2176 dc '@' ;0da0 c0 .
2177
2178 cmd_I:
2179 ld hl,cmd_I ;0da3 21 a3 0d ! . .
2180 ld (cmd_rpt),hl ;0da6 22 68 00 " h .
2181 ld hl,(last_I) ;0da9 2a a1 0d * . .
2182 call get_lastarg_def ;0dac cd 69 03 . i .
2183 ld (last_I),hl ;0daf 22 a1 0d " . .
2184 ld b,h ;0db2 44 D
2185 ld c,l ;0db3 4d M
2186 in a,(c) ;0db4 ed 78 . x
2187 push af ;0db6 f5 .
2188 call out_hex ;0db7 cd 18 02 . . .
2189 call outbl4 ;0dba cd 99 02 . . .
2190 pop af ;0dbd f1 .
2191 call out.bin.b ;0dbe cd c7 01 . . .
2192 jp crlf ;0dc1 c3 a3 02 . . .
2193
2194 cmd_O:
2195 ld hl,cmd_O ;0dc7 21 c7 0d ! . .
2196 ld (cmd_rpt),hl ;0dca 22 68 00 " h .
2197 ld hl,(last_O_val) ;0dcd 2a c6 0d * . .
2198 call get_arg_def ;0dd0 cd 6e 03 . n .
2199 ld a,l ;0dd3 7d }
2200 ld (last_O_val),a ;0dd4 32 c6 0d 2 . .
2201 push af ;0dd7 f5 .
2202 call next_arg ;0dd8 cd ca 02 . . .
2203 ld hl,(last_O_addr) ;0ddb 2a c4 0d * . .
2204 call get_lastarg_def ;0dde cd 69 03 . i .
2205 ld (last_O_addr),hl ;0de1 22 c4 0d " . .
2206 ld b,h ;0de4 44 D
2207 ld c,l ;0de5 4d M
2208 pop af ;0de6 f1 .
2209 out (c),a ;0de7 ed 79 . y
2210 ret ;0de9 c9 .
2211
2212 cmd_V:
2213 call sub_034eh ;0dea cd 4e 03 . N .
2214 l0dedh:
2215 push bc ;0ded c5 .
2216 ld a,(de) ;0dee 1a .
2217 ld b,(hl) ;0def 46 F
2218 cp b ;0df0 b8 .
2219 jr z,l0e10h ;0df1 28 1d ( .
2220 ld c,a ;0df3 4f O
2221 call out.hl.@ ;0df4 cd a4 01 . . .
2222 call outbl ;0df7 cd 9f 02 . . .
2223 ld a,b ;0dfa 78 x
2224 call out_hex ;0dfb cd 18 02 . . .
2225 call outbl2 ;0dfe cd 9c 02 . . .
2226 ld a,c ;0e01 79 y
2227 call out_hex ;0e02 cd 18 02 . . .
2228 call outbl ;0e05 cd 9f 02 . . .
2229 ex de,hl ;0e08 eb .
2230 call out.hl.@ ;0e09 cd a4 01 . . .
2231 ex de,hl ;0e0c eb .
2232 call crlf ;0e0d cd a3 02 . . .
2233 l0e10h:
2234 pop bc ;0e10 c1 .
2235 inc hl ;0e11 23 #
2236 inc de ;0e12 13 .
2237 dec bc ;0e13 0b .
2238 ld a,b ;0e14 78 x
2239 or c ;0e15 b1 .
2240 jr nz,l0dedh ;0e16 20 d5 .
2241 ret ;0e18 c9 .
2242
2243 cmd_M:
2244 ld a,(de) ;0e19 1a .
2245 cp 'V' ;0e1a fe 56 . V
2246 jr nz,l0e1fh ;0e1c 20 01 .
2247 inc de ;0e1e 13 .
2248 l0e1fh:
2249 push af ;0e1f f5 .
2250 call sub_034eh ;0e20 cd 4e 03 . N .
2251 push hl ;0e23 e5 .
2252 push de ;0e24 d5 .
2253 push bc ;0e25 c5 .
2254 call cp_hl_de ;0e26 cd ee 02 . . .
2255 jr nc,$+11 ;0e29 30 09 0 .
2256 add hl,bc ;0e2b 09 .
2257 ex de,hl ;0e2c eb .
2258 add hl,bc ;0e2d 09 .
2259 ex de,hl ;0e2e eb .
2260 dec hl ;0e2f 2b +
2261 dec de ;0e30 1b .
2262 lddr ;0e31 ed b8 . .
2263 ld bc,0b0edh ;0e33 01 ed b0 . . .
2264 pop bc ;0e36 c1 .
2265 pop de ;0e37 d1 .
2266 pop hl ;0e38 e1 .
2267 pop af ;0e39 f1 .
2268 jr z,l0dedh ;0e3a 28 b1 ( .
2269 ret ;0e3c c9 .
2270
2271 cmd_H:
2272 call expr ;0e3d cd be 03 . . .
2273 jp c,p_max_high0 ;0e40 da 6f 11 . o .
2274 call next_arg ;0e43 cd ca 02 . . .
2275 push hl ;0e46 e5 .
2276 call expr ;0e47 cd be 03 . . .
2277 push af ;0e4a f5 .
2278 call assert_eol ;0e4b cd d6 02 . . .
2279 pop af ;0e4e f1 .
2280 ex de,hl ;0e4f eb .
2281 pop hl ;0e50 e1 .
2282 jr c,l0e5eh ;0e51 38 0b 8 .
2283 push hl ;0e53 e5 .
2284 push de ;0e54 d5 .
2285 add hl,de ;0e55 19 .
2286 call l0e5eh ;0e56 cd 5e 0e . ^ .
2287 pop de ;0e59 d1 .
2288 pop hl ;0e5a e1 .
2289 and a ;0e5b a7 .
2290 sbc hl,de ;0e5c ed 52 . R
2291 l0e5eh:
2292 call out_hl ;0e5e cd 13 02 . . .
2293 call outbl2 ;0e61 cd 9c 02 . . .
2294 call out_hl_neg ;0e64 cd 0a 02 . . .
2295 call outbl4 ;0e67 cd 99 02 . . .
2296 call out.hl.dec ;0e6a cd e7 01 . . .
2297 call outbl2 ;0e6d cd 9c 02 . . .
2298 call out_hl_dec_neg ;0e70 cd e2 01 . . .
2299 call outbl4 ;0e73 cd 99 02 . . .
2300 call out.bin.w ;0e76 cd c2 01 . . .
2301 call outbl2 ;0e79 cd 9c 02 . . .
2302 ld a,l ;0e7c 7d }
2303 call out.ascii ;0e7d cd 34 02 . 4 .
2304 jp crlf ;0e80 c3 a3 02 . . .
2305
2306 cmd_Q:
2307 ld a,(de) ;0e84 1a .
2308 sub 'J' ;0e85 d6 4a . J
2309 ld (cmd_Q_jopt),a ;0e87 32 83 0e 2 . .
2310 jr nz,l0e8dh ;0e8a 20 01 .
2311 inc de ;0e8c 13 .
2312 l0e8dh:
2313 call get_arg_range ;0e8d cd 7d 03 . } .
2314 push bc ;0e90 c5 .
2315 push hl ;0e91 e5 .
2316 call sub_0ee6h ;0e92 cd e6 0e . . .
2317 pop hl ;0e95 e1 .
2318 l0e96h:
2319 call sub_0ed7h ;0e96 cd d7 0e . . .
2320 jr nz,l0eb0h ;0e99 20 15 .
2321 push bc ;0e9b c5 .
2322 push hl ;0e9c e5 .
2323 ld a,(cmd_Q_jopt) ;0e9d 3a 83 0e : . .
2324 or a ;0ea0 b7 .
2325 jr nz,l0ea7h ;0ea1 20 04 .
2326 ld bc,-8 ;0ea3 01 f8 ff . . .
2327 add hl,bc ;0ea6 09 .
2328 l0ea7h:
2329 ld bc,16 ;0ea7 01 10 00 . . .
2330 and a ;0eaa a7 .
2331 call sub_0f58h ;0eab cd 58 0f . X .
2332 pop hl ;0eae e1 .
2333 pop bc ;0eaf c1 .
2334 l0eb0h:
2335 inc hl ;0eb0 23 #
2336 ex (sp),hl ;0eb1 e3 .
2337 dec hl ;0eb2 2b +
2338 ld a,h ;0eb3 7c |
2339 or l ;0eb4 b5 .
2340 ex (sp),hl ;0eb5 e3 .
2341 jr nz,l0e96h ;0eb6 20 de .
2342 pop bc ;0eb8 c1 .
2343 ret ;0eb9 c9 .
2344
2345 cmd_Z:
2346 call get_arg_range ;0eba cd 7d 03 . } .
2347 push bc ;0ebd c5 .
2348 push hl ;0ebe e5 .
2349 call sub_0ee6h ;0ebf cd e6 0e . . .
2350 ld a,b ;0ec2 78 x
2351 pop hl ;0ec3 e1 .
2352 pop bc ;0ec4 c1 .
2353 push hl ;0ec5 e5 .
2354 ex de,hl ;0ec6 eb .
2355 l0ec7h:
2356 ldi ;0ec7 ed a0 . .
2357 jp po,l0ed3h ;0ec9 e2 d3 0e . . .
2358 dec a ;0ecc 3d =
2359 jr nz,l0ec7h ;0ecd 20 f8 .
2360 pop hl ;0ecf e1 .
2361 ldir ;0ed0 ed b0 . .
2362 ret ;0ed2 c9 .
2363 l0ed3h:
2364 pop hl ;0ed3 e1 .
2365 ret ;0ed4 c9 .
2366
2367 sub_0ed7h:
2368 push hl ;0ed7 e5 d5 . .
2369 push de
2370 push bc ;0ed9 c5 .
2371 l0edah:
2372 ld a,(de) ;0eda 1a .
2373 cp (hl) ;0edb be .
2374 jr nz,l0ee2h ;0edc 20 04 .
2375 inc de ;0ede 13 .
2376 inc hl ;0edf 23 #
2377 djnz l0edah ;0ee0 10 f8 . .
2378 l0ee2h:
2379 pop bc ;0ee2 c1 .
2380 pop de ;0ee3 d1 .
2381 pop hl ;0ee4 e1 .
2382 ret ;0ee5 c9 .
2383
2384 sub_0ee6h:
2385 ld hl,conbuf+1 ;0ee6 21 6b 00 ! k .
2386 call sub_0ef7h ;0ee9 cd f7 0e . . .
2387 ld de,conbuf+1 ;0eec 11 6b 00 . k .
2388 and a ;0eef a7 .
2389 sbc hl,de ;0ef0 ed 52 . R
2390 ld b,l ;0ef2 45 E
2391 ret nz ;0ef3 c0 .
2392 jp ERROR ;0ef4 c3 07 01 . . .
2393
2394 sub_0ef7h:
2395 db 0e6h ;0ef7 e6 and 037h (clear carry)
2396 sub_0ef8h:
2397 scf ;0ef8 37 . 7
2398 l0ef9h:
2399 push af ;0ef9 f5 .
2400 call next_arg ;0efa cd ca 02 . . .
2401 cp 'W' ;0efd fe 57 . W
2402 jr nz,l0f0eh ;0eff 20 0d .
2403 inc de ;0f01 13 .
2404 push hl ;0f02 e5 .
2405 call sub_035dh ;0f03 cd 5d 03 . ] .
2406 ex de,hl ;0f06 eb .
2407 ex (sp),hl ;0f07 e3 .
2408 ld (hl),e ;0f08 73 s
2409 inc hl ;0f09 23 #
2410 ld a,d ;0f0a 7a z
2411 pop de ;0f0b d1 .
2412 jr l0f1ah ;0f0c 18 0c . .
2413 l0f0eh:
2414 cp '''' ;0f0e fe 27 . '
2415 jr z,l0f1eh ;0f10 28 0c ( .
2416 push hl ;0f12 e5 .
2417 call expr ;0f13 cd be 03 . . .
2418 ld a,l ;0f16 7d }
2419 pop hl ;0f17 e1 .
2420 jr c,l0f42h ;0f18 38 28 8 (
2421 l0f1ah:
2422 ld (hl),a ;0f1a 77 w
2423 inc hl ;0f1b 23 #
2424 jr l0f3ah ;0f1c 18 1c . .
2425 l0f1eh:
2426 inc de ;0f1e 13 .
2427 ld a,(de) ;0f1f 1a .
2428 cp '''' ;0f20 fe 27 . '
2429 jr z,l0f2bh ;0f22 28 07 ( .
2430 or a ;0f24 b7 .
2431 jr z,l0f42h ;0f25 28 1b ( .
2432 l0f27h:
2433 ld (hl),a ;0f27 77 w
2434 inc hl ;0f28 23 #
2435 jr l0f1eh ;0f29 18 f3 . .
2436 l0f2bh:
2437 inc de ;0f2b 13 .
2438 ld a,(de) ;0f2c 1a .
2439 cp '''' ;0f2d fe 27 . '
2440 jr z,l0f27h ;0f2f 28 f6 ( .
2441 cp '.' ;0f31 fe 2e . .
2442 jr nz,l0f3ah ;0f33 20 05 .
2443 inc de ;0f35 13 .
2444 dec hl ;0f36 2b +
2445 set 7,(hl) ;0f37 cb fe . .
2446 inc hl ;0f39 23 #
2447 l0f3ah:
2448 pop af ;0f3a f1 .
2449 jr nc,l0ef9h ;0f3b 30 bc 0 .
2450 ld (last_S),hl ;0f3d 22 90 0d " . .
2451 jr l0ef9h ;0f40 18 b7 . .
2452 l0f42h:
2453 pop af ;0f42 f1 .
2454 ret nc ;0f43 d0 .
2455 ld (last_S),hl ;0f44 22 90 0d " . .
2456 ret ;0f47 c9 .
2457
2458 cmd_D:
2459 ld hl,cmd_D ;0f48 21 48 0f ! H .
2460 ld (cmd_rpt),hl ;0f4b 22 68 00 " h .
2461 ld hl,(last_D) ;0f4e 2a d5 0e * . .
2462 ld bc,128 ;0f51 01 80 00 . . .
2463 call sub_0377h ;0f54 cd 77 03 . w .
2464 scf ;0f57 37 7
2465 sub_0f58h:
2466 push bc ;0f58 c5 .
2467 push de ;0f59 d5 .
2468 push hl ;0f5a e5 .
2469 ex af,af' ;0f5b 08 .
2470 l0f5ch:
2471 call out.hl.@ ;0f5c cd a4 01 . . .
2472 call z,outbl2 ;0f5f cc 9c 02 . . .
2473 call outbl ;0f62 cd 9f 02 . . .
2474 ld de,0 ;0f65 11 00 00 . . .
2475 l0f68h:
2476 ld a,(hl) ;0f68 7e ~
2477 inc hl ;0f69 23 #
2478 call out_hex ;0f6a cd 18 02 . . .
2479 call outbl ;0f6d cd 9f 02 . . .
2480 dec bc ;0f70 0b .
2481 inc e ;0f71 1c .
2482 ld a,e ;0f72 7b {
2483 cp 010h ;0f73 fe 10 . .
2484 jr z,l0f80h ;0f75 28 09 ( .
2485 and 003h ;0f77 e6 03 . .
2486 call z,outbl ;0f79 cc 9f 02 . . .
2487 ld a,b ;0f7c 78 x
2488 or c ;0f7d b1 .
2489 jr nz,l0f68h ;0f7e 20 e8 .
2490 l0f80h:
2491 call outbl ;0f80 cd 9f 02 . . .
2492 and a ;0f83 a7 .
2493 sbc hl,de ;0f84 ed 52 . R
2494 l0f86h:
2495 ld a,(hl) ;0f86 7e ~
2496 call sub_0fa3h ;0f87 cd a3 0f . . .
2497 call outchar ;0f8a cd 5d 02 . ] .
2498 inc hl ;0f8d 23 #
2499 dec e ;0f8e 1d .
2500 jr nz,l0f86h ;0f8f 20 f5 .
2501 ex af,af' ;0f91 08 .
2502 jr nc,l0f97h ;0f92 30 03 0 .
2503 ld (last_D),hl ;0f94 22 d5 0e " . .
2504 l0f97h:
2505 ex af,af' ;0f97 08 .
2506 call crlf ;0f98 cd a3 02 . . .
2507 ld a,b ;0f9b 78 x
2508 or c ;0f9c b1 .
2509 jr nz,l0f5ch ;0f9d 20 bd .
2510 pop hl ;0f9f e1 .
2511 pop de ;0fa0 d1 .
2512 pop bc ;0fa1 c1 .
2513 ret ;0fa2 c9 .
2514
2515 sub_0fa3h:
2516 and 07fh ;0fa3 e6 7f . \7f
2517 cp 07fh ;0fa5 fe 7f . \7f
2518 jr z,l0fach ;0fa7 28 03 ( .
2519 cp ' ' ;0fa9 fe 20 .
2520 ret nc ;0fab d0 .
2521 l0fach:
2522 ld a,'.' ;0fac 3e 2e > .
2523 ret ;0fae c9 .
2524
2525 cmd_F:
2526 push de ;0faf d5 .
2527 ld hl,DMA_BUF+1 ;0fb0 21 81 00 ! . .
2528 ld (hl),' ' ;0fb3 36 20 6
2529 inc hl ;0fb5 23 #
2530 l0fb6h:
2531 ld a,(de) ;0fb6 1a .
2532 ld (hl),a ;0fb7 77 w
2533 inc hl ;0fb8 23 #
2534 inc de ;0fb9 13 .
2535 and a ;0fba a7 .
2536 jr nz,l0fb6h ;0fbb 20 f9 .
2537 ld a,l ;0fbd 7d }
2538 sub DMA_BUF+2 ;0fbe d6 82 . .
2539 ld (DMA_BUF),a ;0fc0 32 80 00 2 . .
2540 pop hl ;0fc3 e1 .
2541 ld de,FCB ;0fc4 11 5c 00 . \ .
2542 call parse_filename ;0fc7 cd cd 0f . . .
2543 ld de,FCB2 ;0fca 11 6c 00 . l .
2544
2545 parse_filename:
2546 call sub_102ch ;0fcd cd 2c 10 . , .
2547 push de ;0fd0 d5 .
2548 push bc ;0fd1 c5 .
2549 ld b,(hl) ;0fd2 46 F
2550 inc hl ;0fd3 23 #
2551 ld a,(hl) ;0fd4 7e ~
2552 cp ':' ;0fd5 fe 3a . :
2553 jr nz,l0fe1h ;0fd7 20 08 .
2554 inc hl ;0fd9 23 #
2555 ld a,b ;0fda 78 x
2556 sub 040h ;0fdb d6 40 . @
2557 and 01fh ;0fdd e6 1f . .
2558 jr l0fe3h ;0fdf 18 02 . .
2559 l0fe1h:
2560 dec hl ;0fe1 2b +
2561 xor a ;0fe2 af .
2562 l0fe3h:
2563 ld (de),a ;0fe3 12 .
2564 inc de ;0fe4 13 .
2565 ld b,8 ;0fe5 06 08 . .
2566 call sub_0ff2h ;0fe7 cd f2 0f . . .
2567 ld b,3 ;0fea 06 03 . .
2568 call sub_0ff2h ;0fec cd f2 0f . . .
2569 pop bc ;0fef c1 .
2570 pop de ;0ff0 d1 .
2571 ret ;0ff1 c9 .
2572
2573 sub_0ff2h:
2574 call sub_1012h ;0ff2 cd 12 10 . . .
2575 jr z,l0ffeh ;0ff5 28 07 ( .
2576 inc hl ;0ff7 23 #
2577 ld (de),a ;0ff8 12 .
2578 inc de ;0ff9 13 .
2579 djnz sub_0ff2h ;0ffa 10 f6 . .
2580 jr l1003h ;0ffc 18 05 . .
2581 l0ffeh:
2582 ld a,c ;0ffe 79 y
2583 l0fffh:
2584 ld (de),a ;0fff 12 .
2585 inc de ;1000 13 .
2586 djnz l0fffh ;1001 10 fc . .
2587 l1003h:
2588 call sub_1012h ;1003 cd 12 10 . . .
2589 inc hl ;1006 23 #
2590 jr nz,l1003h ;1007 20 fa .
2591 cp '*' ;1009 fe 2a . *
2592 jr z,l1003h ;100b 28 f6 ( .
2593 cp '.' ;100d fe 2e . .
2594 ret z ;100f c8 .
2595 dec hl ;1010 2b +
2596 ret ;1011 c9 .
2597
2598 sub_1012h:
2599 ld a,(hl) ;1012 7e ~
2600 ld c,' ' ;1013 0e 20 .
2601 and 01fh ;1015 e6 1f . .
2602 ret z ;1017 c8 .
2603 ld a,(hl) ;1018 7e ~
2604 cp ' ' ;1019 fe 20 .
2605 ret z ;101b c8 .
2606 call sub_1043h ;101c cd 43 10 . C .
2607 ret z ;101f c8 .
2608 cp '/' ;1020 fe 2f . /
2609 ret z ;1022 c8 .
2610 cp '.' ;1023 fe 2e . .
2611 ret z ;1025 c8 .
2612 ld c,'?' ;1026 0e 3f . ?
2613 cp '*' ;1028 fe 2a . *
2614 ret ;102a c9 .
2615
2616 l102bh:
2617 inc hl ;102b 23 #
2618 sub_102ch:
2619 ld a,(hl) ;102c 7e ~
2620 cp '/' ;102d fe 2f . /
2621 jr z,l103bh ;102f 28 0a ( .
2622 call sub_1043h ;1031 cd 43 10 . C .
2623 jr z,l102bh ;1034 28 f5 ( .
2624 l1036h:
2625 cp ' ' ;1036 fe 20 .
2626 jr z,l102bh ;1038 28 f1 ( .
2627 ret ;103a c9 .
2628
2629 l103bh:
2630 ld a,(hl) ;103b 7e ~
2631 cp ' '+1 ;103c fe 21 . !
2632 jr c,l1036h ;103e 38 f6 8 .
2633 inc hl ;1040 23 #
2634 jr l103bh ;1041 18 f8 . .
2635
2636 sub_1043h:
2637 cp '=' ;1043 fe 3d . =
2638 ret z ;1045 c8 .
2639 cp '_' ;1046 fe 5f . _
2640 ret z ;1048 c8 .
2641 cp ',' ;1049 fe 2c . ,
2642 ret ;104b c9 .
2643
2644 fcb_clear_rc:
2645 xor a ;104c af .
2646 ld hl,FCB+12 ;104d 21 68 00 ! h .
2647 ld b,21 ;1050 06 15 . .
2648 l1052h:
2649 ld (hl),a ;1052 77 w
2650 inc hl ;1053 23 #
2651 djnz l1052h ;1054 10 fc . .
2652 ld de,DMA_BUF ;1056 11 80 00 . . .
2653 ld c,BDOS_SETDMA ;1059 0e 1a . .
2654 call ddtz_base ;105b cd 00 00 . . .
2655 ld de,FCB ;105e 11 5c 00 . \ .
2656 ret ;1061 c9 .
2657
2658 cmd_R:
2659 ld hl,0 ;1062 21 00 00 ! . .
2660 call get_lastarg_def ;1065 cd 69 03 . i .
2661 read_file:
2662 push hl ;1068 e5 .
2663 ld hl,0 ;1069 21 00 00 ! . .
2664 ld (high_load),hl ;106c 22 9c 11 " . .
2665 call fcb_clear_rc ;106f cd 4c 10 . L .
2666 ld c,BDOS_OPEN ;1072 0e 0f . .
2667 call ddtz_base ;1074 cd 00 00 . . .
2668 inc a ;1077 3c <
2669 jp z,ERROR ;1078 ca 07 01 . . .
2670 ld hl,FCB+9 ;107b 21 65 00 ! e .
2671 ld de,str_hex ;107e 11 a5 10 . . .
2672 ld b,3 ;1081 06 03 . .
2673 call strncmp ;1083 cd 67 11 . g .
2674 pop hl ;1086 e1 .
2675 jr z,read_hexfile ;1087 28 1f ( .
2676 ld de,TPA ;1089 11 00 01 . . .
2677 add hl,de ;108c 19 .
2678 push hl ;108d e5 .
2679 l108eh:
2680 call read_sector ;108e cd 21 11 . ! .
2681 pop hl ;1091 e1 .
2682 jp z,p_max_high ;1092 ca 72 11 . r .
2683 ld de,DMA_BUF ;1095 11 80 00 . . .
2684 ld b,080h ;1098 06 80 . .
2685 l109ah:
2686 ld a,(de) ;109a 1a .
2687 call cmdR_storebyte ;109b cd 36 11 . 6 .
2688 inc de ;109e 13 .
2689 inc hl ;109f 23 #
2690 djnz l109ah ;10a0 10 f8 . .
2691 push hl ;10a2 e5 .
2692 jr l108eh ;10a3 18 e9 . .
2693
2694 str_hex:
2695 db 'HEX' ;10a5 48 H E X
2696
2697 read_hexfile:
2698 push hl ;10a8 e5 .
2699 ld a,080h ;10a9 3e 80 > .
2700 ld (cmdR_rindex),a ;10ab 32 20 11 2 .
2701 l10aeh:
2702 call read_byte ;10ae cd 05 11 . . .
2703 jr z,rdhex_done ;10b1 28 31 ( 1
2704 cp ':' ;10b3 fe 3a . :
2705 jr nz,l10aeh ;10b5 20 f7 .
2706 ld c,0 ;10b7 0e 00 . .
2707 call read_hexchar ;10b9 cd e8 10 . . .
2708 ld b,a ;10bc 47 G
2709 call read_hexchar ;10bd cd e8 10 . . .
2710 ld h,a ;10c0 67 g
2711 call read_hexchar ;10c1 cd e8 10 . . .
2712 ld l,a ;10c4 6f o
2713 ld a,b ;10c5 78 x
2714 and a ;10c6 a7 .
2715 jr z,rdhex_done ;10c7 28 1b ( .
2716 call read_hexchar ;10c9 cd e8 10 . . .
2717 l10cch:
2718 call read_hexchar ;10cc cd e8 10 . . .
2719 pop de ;10cf d1 .
2720 push de ;10d0 d5 .
2721 push hl ;10d1 e5 .
2722 add hl,de ;10d2 19 .
2723 call cmdR_storebyte ;10d3 cd 36 11 . 6 .
2724 pop hl ;10d6 e1 .
2725 inc hl ;10d7 23 #
2726 djnz l10cch ;10d8 10 f2 . .
2727 call read_hexchar ;10da cd e8 10 . . .
2728 ld a,c ;10dd 79 y
2729 and a ;10de a7 .
2730 jp nz,ERROR ;10df c2 07 01 . . .
2731 jr l10aeh ;10e2 18 ca . .
2732 rdhex_done:
2733 pop hl ;10e4 e1 .
2734 jp p_max_high ;10e5 c3 72 11 . r .
2735
2736 read_hexchar:
2737 call read_hexdigit ;10e8 cd f9 10 . . .
2738 rlca ;10eb 07 .
2739 rlca ;10ec 07 .
2740 rlca ;10ed 07 .
2741 rlca ;10ee 07 .
2742 ld d,a ;10ef 57 W
2743 call read_hexdigit ;10f0 cd f9 10 . . .
2744 add a,d ;10f3 82 .
2745 ld d,a ;10f4 57 W
2746 add a,c ;10f5 81 .
2747 ld c,a ;10f6 4f O
2748 ld a,d ;10f7 7a z
2749 ret ;10f8 c9 .
2750
2751 read_hexdigit:
2752 call read_byte ;10f9 cd 05 11 . . .
2753 jr z,l1102h ;10fc 28 04 ( .
2754 call hex_digit ;10fe cd 12 06 . . .
2755 ret nc ;1101 d0 .
2756 l1102h:
2757 jp ERROR ;1102 c3 07 01 . . .
2758
2759 read_byte:
2760 ld a,(cmdR_rindex) ;1105 3a 20 11 : .
2761 cp 080h ;1108 fe 80 . .
2762 jr nz,l1111h ;110a 20 05 .
2763 call read_sector ;110c cd 21 11 . ! .
2764 ret z ;110f c8 .
2765 sub a ;1110 97 .
2766 l1111h:
2767 inc a ;1111 3c <
2768 ld (cmdR_rindex),a ;1112 32 20 11 2 .
2769 push hl ;1115 e5 .
2770 add a,07fh ;1116 c6 7f . \7f
2771 ld l,a ;1118 6f o
2772 ld h,000h ;1119 26 00 & .
2773 ld a,(hl) ;111b 7e ~
2774 pop hl ;111c e1 .
2775 cp 01ah ;111d fe 1a . .
2776 ret ;111f c9 .
2777
2778 read_sector:
2779 push hl ;1121 e5 .
2780 push de ;1122 d5 .
2781 push bc ;1123 c5 .
2782 ld de,FCB ;1124 11 5c 00 . \ .
2783 ld c,BDOS_READ ;1127 0e 14 . .
2784 call ddtz_base ;1129 cd 00 00 . . .
2785 dec a ;112c 3d =
2786 jr z,l1132h ;112d 28 03 ( .
2787 jp p,ERROR ;112f f2 07 01 . . .
2788 l1132h:
2789 pop bc ;1132 c1 .
2790 pop de ;1133 d1 .
2791 pop hl ;1134 e1 .
2792 ret ;1135 c9 .
2793
2794 cmdR_storebyte:
2795 push af ;1136 f5 .
2796 push de ;1137 d5 .
2797 ld de,TPA ;1138 11 00 01 . . .
2798 call cp_hl_de ;113b cd ee 02 . . .
2799 jp c,ERROR ;113e da 07 01 . . .
2800 ld de,(BDOS+1) ;1141 ed 5b 06 00 . [ . .
2801 call cp_hl_de ;1145 cd ee 02 . . .
2802 jp nc,ERROR ;1148 d2 07 01 . . .
2803 ld de,(high_load) ;114b ed 5b 9c 11 . [ . .
2804 call cp_hl_de ;114f cd ee 02 . . .
2805 jr c,l1157h ;1152 38 03 8 .
2806 ld (high_load),hl ;1154 22 9c 11 " . .
2807 l1157h:
2808 ld de,(max_load) ;1157 ed 5b 9e 11 . [ . .
2809 call cp_hl_de ;115b cd ee 02 . . .
2810 jr c,l1163h ;115e 38 03 8 .
2811 ld (max_load),hl ;1160 22 9e 11 " . .
2812 l1163h:
2813 pop de ;1163 d1 .
2814 pop af ;1164 f1 .
2815 ld (hl),a ;1165 77 w
2816 ret ;1166 c9 .
2817
2818 strncmp:
2819 ld a,(de) ;1167 1a .
2820 cp (hl) ;1168 be .
2821 inc de ;1169 13 .
2822 inc hl ;116a 23 #
2823 ret nz ;116b c0 .
2824 djnz strncmp ;116c 10 f9 . .
2825 ret ;116e c9 .
2826
2827 p_max_high0:
2828 call assert_eol ;116f cd d6 02 . . .
2829 p_max_high:
2830 ld hl,msg_high ;1172 21 8d 11 ! . .
2831 call pstr ;1175 cd 88 02 . . .
2832 ld hl,(high_load) ;1178 2a 9c 11 * . .
2833 call out_hl ;117b cd 13 02 . . .
2834 ld hl,msg_max ;117e 21 94 11 ! . .
2835 call pstr ;1181 cd 88 02 . . .
2836 ld hl,(max_load) ;1184 2a 9e 11 * . .
2837 call out_hl ;1187 cd 13 02 . . .
2838 jp crlf ;118a c3 a3 02 . . .
2839
2840 msg_high:
2841 DC 'High = '
2842 msg_max:
2843 DC ' Max = '
2844
2845 cmd_W:
2846 call get_arg_range ;11a0 cd 7d 03 . } .
2847 call assert_eol ;11a3 cd d6 02 . . .
2848 push hl ;11a6 e5 .
2849 ld a,c ;11a7 79 y
2850 add a,07fh ;11a8 c6 7f . \7f
2851 jr nc,l11adh ;11aa 30 01 0 .
2852 inc b ;11ac 04 .
2853 l11adh:
2854 and 080h ;11ad e6 80 . .
2855 ld c,a ;11af 4f O
2856 push bc ;11b0 c5 .
2857 ld a,(FCB+1) ;11b1 3a 5d 00 : ] .
2858 cp ' ' ;11b4 fe 20 .
2859 jr z,error5 ;11b6 28 3b ( ;
2860 call fcb_clear_rc ;11b8 cd 4c 10 . L .
2861 push de ;11bb d5 .
2862 ld c,BDOS_DELETE ;11bc 0e 13 . .
2863 call ddtz_base ;11be cd 00 00 . . .
2864 pop de ;11c1 d1 .
2865 ld c,BDOS_CREATE ;11c2 0e 16 . .
2866 call ddtz_base ;11c4 cd 00 00 . . .
2867 inc a ;11c7 3c <
2868 jr z,error5 ;11c8 28 29 ( )
2869 pop bc ;11ca c1 .
2870 pop hl ;11cb e1 .
2871 l11cch:
2872 ld a,b ;11cc 78 x
2873 or c ;11cd b1 .
2874 jr z,close_file ;11ce 28 26 ( &
2875 push bc ;11d0 c5 .
2876 ld de,080h ;11d1 11 80 00 . . . DMA_BUF
2877 ld b,d ;11d4 42 B
2878 ld c,e ;11d5 4b K
2879 ldir ;11d6 ed b0 . .
2880 call write_sector ;11d8 cd e4 11 . . .
2881 ex (sp),hl ;11db e3 .
2882 ld bc,0ff80h ;11dc 01 80 ff . . .
2883 add hl,bc ;11df 09 .
2884 ex (sp),hl ;11e0 e3 .
2885 pop bc ;11e1 c1 .
2886 jr l11cch ;11e2 18 e8 . .
2887
2888 write_sector:
2889 push hl ;11e4 e5 .
2890 ld de,FCB ;11e5 11 5c 00 . \ .
2891 ld c,BDOS_WRITE ;11e8 0e 15 . .
2892 call ddtz_base ;11ea cd 00 00 . . .
2893 pop hl ;11ed e1 .
2894 and a ;11ee a7 .
2895 ret z ;11ef c8 .
2896 call close_file ;11f0 cd f6 11 . . .
2897 error5:
2898 jp ERROR ;11f3 c3 07 01 . . .
2899
2900 close_file:
2901 ld de,FCB ;11f6 11 5c 00 . \ .
2902 ld c,BDOS_CLOSE ;11f9 0e 10 . .
2903 jp ddtz_base ;11fb c3 00 00 . . .
2904
2905 cmd_A:
2906 ld hl,(last_A) ;11fe 2a 64 12 * d .
2907 call get_lastarg_def ;1201 cd 69 03 . i .
2908 push hl ;1204 e5 .
2909 pop iy ;1205 fd e1 . .
2910 ld hl,l1259h ;1207 21 59 12 ! Y .
2911 ld (CMD_ERR),hl ;120a 22 66 00 " f .
2912 ld (l1262h),sp ;120d ed 73 62 12 . s b .
2913 l1211h:
2914 push iy ;1211 fd e5 . .
2915 pop hl ;1213 e1 .
2916 ld (last_A),hl ;1214 22 64 12 " d .
2917 ld (l0062h),hl ;1217 22 62 00 " b .
2918 push hl ;121a e5 .
2919 call p_disas_line ;121b cd 2d 19 . - .
2920 pop iy ;121e fd e1 . .
2921 ld c,b ;1220 48 H
2922 ld de,(offs.@) ;1221 ed 5b 64 00 . [ d .
2923 ld a,d ;1225 7a z
2924 or e ;1226 b3 .
2925 ld b,011h ;1227 06 11 . .
2926 jr z,l122dh ;1229 28 02 ( .
2927 ld b,019h ;122b 06 19 . .
2928 l122dh:
2929 call outbl ;122d cd 9f 02 . . .
2930 ld a,(con_col) ;1230 3a 72 02 : r .
2931 cp b ;1233 b8 .
2932 jr c,l122dh ;1234 38 f7 8 .
2933 push bc ;1236 c5 .
2934 call get_line ;1237 cd 4e 01 . N .
2935 pop bc ;123a c1 .
2936 call skipbl ;123b cd bf 02 . . .
2937 cp '.' ;123e fe 2e . .
2938 ret z ;1240 c8 .
2939 cp '-' ;1241 fe 2d . -
2940 jr nz,l124bh ;1243 20 06 .
2941 ld iy,(cmd_A_prev) ;1245 fd 2a 66 12 . * f .
2942 jr l1211h ;1249 18 c6 . .
2943 l124bh:
2944 and a ;124b a7 .
2945 call nz,sub_1268h ;124c c4 68 12 . h .
2946 ld (cmd_A_prev),iy ;124f fd 22 66 12 . " f .
2947 ld b,0 ;1253 06 00 . .
2948 add iy,bc ;1255 fd 09 . .
2949 jr l1211h ;1257 18 b8 . .
2950 l1259h:
2951 call l0146h ;1259 cd 46 01 . F .
2952 ld sp,(l1262h) ;125c ed 7b 62 12 . { b .
2953 jr l1211h ;1260 18 af . .
2954
2955 sub_1268h:
2956 call skipbl ;1268 cd bf 02 . . .
2957 ld hl,t_MNEMONICS ;126b 21 c6 1e ! . .
2958 call sub_030ah ;126e cd 0a 03 . . .
2959 jp nc,ERROR ;1271 d2 07 01 . . .
2960 call skipbl ;1274 cd bf 02 . . .
2961 push de ;1277 d5 .
2962 ld a,b ;1278 78 x
2963 add a,b ;1279 80 .
2964 add a,b ;127a 80 .
2965 ld hl,b_1289_start ;127b 21 89 12 ! . .
2966 call add_hl_a ;127e cd b9 02 . . .
2967 ld e,(hl) ;1281 5e ^
2968 inc hl ;1282 23 #
2969 ld d,(hl) ;1283 56 V
2970 inc hl ;1284 23 #
2971 ld b,(hl) ;1285 46 F
2972 ex de,hl ;1286 eb .
2973 pop de ;1287 d1 .
2974
2975 CALL_HL:
2976 jp (hl) ;1288 e9 .
2977
2978 b_1289_start:
2979 dw as.ADC_SBC ;ADC 1289 51 15 Q .
2980 db 088h ; 128b 88 .
2981 dw as.ADD ;ADD 128c 71 15 q .
2982 db 080h ; 128e 80 .
2983 dw as.AND_CP_OR_SUB_XOR ;AND 128f a8 15 . .
2984 db 0a0h ; 1291 a0 .
2985 dw as.BITOP ;BIT 1292 09 16 . .
2986 db 040h ; 1294 40 @
2987 dw as.CALL ;CALL 1295 2d 16 - .
2988 db 0c4h ; 1297 c4 .
2989 dw as.opc.noarg ;CCF 1298 3b 15 ; .
2990 db 03fh ; 129a 3f ?
2991 dw as.AND_CP_OR_SUB_XOR ;CP 129b a8 15 . .
2992 db 0b8h ; 129d b8 .
2993 dw gen.opc.ED2 ;CPD 129e 44 15 D .
2994 db 0a9h ; 12a0 a9 .
2995 dw gen.opc.ED2 ;CPDR 12a1 44 15 D .
2996 db 0b9h ; 12a3 b9 .
2997 dw gen.opc.ED2 ;CPI 12a4 44 15 D .
2998 db 0a1h ; 12a6 a1 .
2999 dw gen.opc.ED2 ;CPIR 12a7 44 15 D .
3000 db 0b1h ; 12a9 b1 .
3001 dw as.opc.noarg ;CPL 12aa 3b 15 ; .
3002 db 02fh ; 12ac 2f /
3003 dw as.opc.noarg ;DAA 12ad 3b 15 ; .
3004 db 027h ; 12af 27 '
3005 dw as.DEC_INC ;DEC 12b0 98 17 . .
3006 db 005h ; 12b2 05 .
3007 dw as.opc.noarg ;DI 12b3 3b 15 ; .
3008 db 0f3h ; 12b5 f3 .
3009 dw as.DJNZ ;DJNZ 12b6 99 16 . .
3010 db 010h ; 12b8 10 .
3011 dw as.opc.noarg ;EI 12b9 3b 15 ; .
3012 db 0fbh ; 12bb fb .
3013 dw as.EX ;EX 12bc 49 17 I .
3014 db 0e3h ; 12be e3 .
3015 dw as.opc.noarg ;EXX 12bf 3b 15 ; .
3016 db 0d9h ; 12c1 d9 .
3017 dw as.opc.noarg ;HALT 12c2 3b 15 ; .
3018 db 076h ; 12c4 76 v
3019 dw as.IM ;IM 12c5 b4 16 . .
3020 db 046h ; 12c7 46 F
3021 dw as.IN ;IN 12c8 ed 16 . .
3022 db 040h ; 12ca 40 @
3023 dw as.DEC_INC ;INC 12cb 98 17 . .
3024 db 004h ; 12cd 04 .
3025 dw gen.opc.ED2 ;IND 12ce 44 15 D .
3026 db 0aah ; 12d0 aa .
3027 dw gen.opc.ED2 ;INDR 12d1 44 15 D .
3028 db 0bah ; 12d3 ba .
3029 dw gen.opc.ED2 ;INI 12d4 44 15 D .
3030 db 0a2h ; 12d6 a2 .
3031 dw gen.opc.ED2 ;INIR 12d7 44 15 D .
3032 db 0b2h ; 12d9 b2 .
3033 dw as.JP ;JP 12da 53 16 S .
3034 db 0c2h ; 12dc c2 .
3035 dw as.JR ;JR 12dd a0 16 . .
3036 db 020h ; 12df 20
3037 dw as.LD ;LD 12e0 52 13 R .
3038 db 040h ; 12e2 40 @
3039 dw gen.opc.ED2 ;LDD 12e3 44 15 D .
3040 db 0a8h ; 12e5 a8 .
3041 dw gen.opc.ED2 ;LDDR 12e6 44 15 D .
3042 db 0b8h ; 12e8 b8 .
3043 dw gen.opc.ED2 ;LDI 12e9 44 15 D .
3044 db 0a0h ; 12eb a0 .
3045 dw gen.opc.ED2 ;LDIR 12ec 44 15 D .
3046 db 0b0h ; 12ee b0 .
3047 dw gen.opc.ED2 ;NEG 12ef 44 15 D .
3048 db 044h ; 12f1 44 D
3049 dw as.opc.noarg ;NOP 12f2 3b 15 ; .
3050 db 000h ; 12f4 00 .
3051 dw as.AND_CP_OR_SUB_XOR ;OR 12f5 a8 15 . .
3052 db 0b0h ; 12f7 b0 .
3053 dw gen.opc.ED2 ;OTDR 12f8 44 15 D .
3054 db 0bbh ; 12fa bb .
3055 dw gen.opc.ED2 ;OTIR 12fb 44 15 D .
3056 db 0b3h ; 12fd b3 .
3057 dw as.OUT ;OUT 12fe 21 17 ! .
3058 db 041h ; 1300 41 A
3059 dw gen.opc.ED2 ;OUTD 1301 44 15 D .
3060 db 0abh ; 1303 ab .
3061 dw gen.opc.ED2 ;OUTI 1304 44 15 D .
3062 db 0a3h ; 1306 a3 .
3063 dw as.POP_PUSH ;POP 1307 d9 16 . .
3064 db 0c1h ; 1309 c1 .
3065 dw as.POP_PUSH ;PUSH 130a d9 16 . .
3066 db 0c5h ; 130c c5 .
3067 dw as.BITOP ;RES 130d 09 16 . .
3068 db 080h ; 130f 80 .
3069 dw as.RET ;RET 1310 45 16 E .
3070 db 0c0h ; 1312 c0 .
3071 dw gen.opc.ED2 ;RETI 1313 44 15 D .
3072 db 04dh ; 1315 4d M
3073 dw gen.opc.ED2 ;RETN 1316 44 15 D .
3074 db 045h ; 1318 45 E
3075 dw as.SHIFTOP ;RL 1319 d5 15 . .
3076 db 010h ; 131b 10 .
3077 dw as.opc.noarg ;RLA 131c 3b 15 ; .
3078 db 017h ; 131e 17 .
3079 dw as.SHIFTOP ;RLC 131f d5 15 . .
3080 db 000h ; 1321 00 .
3081 dw as.opc.noarg ;RLCA 1322 3b 15 ; .
3082 db 007h ; 1324 07 .
3083 dw gen.opc.ED2 ;RLD 1325 44 15 D .
3084 db 06fh ; 1327 6f o
3085 dw as.SHIFTOP ;RR 1328 d5 15 . .
3086 db 018h ; 132a 18 .
3087 dw as.opc.noarg ;RRA 132b 3b 15 ; .
3088 db 01fh ; 132d 1f .
3089 dw as.SHIFTOP ;RRC 132e d5 15 . .
3090 db 008h ; 1330 08 .
3091 dw as.opc.noarg ;RRCA 1331 3b 15 ; .
3092 db 00fh ; 1333 0f .
3093 dw gen.opc.ED2 ;RRD 1334 44 15 D .
3094 db 067h ; 1336 67 g
3095 dw as.RST ;RST 1337 ca 16 . .
3096 db 0c7h ; 1339 c7 .
3097 dw as.ADC_SBC ;SBC 133a 51 15 Q .
3098 db 098h ; 133c 98 .
3099 dw as.opc.noarg ;SCF 133d 3b 15 ; .
3100 db 037h ; 133f 37 7
3101 dw as.BITOP ;SET 1340 09 16 . .
3102 db 0c0h ; 1342 c0 .
3103 dw as.SHIFTOP ;SLA 1343 d5 15 . .
3104 db 020h ; 1345 20
3105 dw as.SHIFTOP ;SRA 1346 d5 15 . .
3106 db 028h ; 1348 28 (
3107 dw as.SHIFTOP ;SRL 1349 d5 15 . .
3108 db 038h ; 134b 38 8
3109 dw as.AND_CP_OR_SUB_XOR ;SUB 134c a8 15 . .
3110 db 090h ; 134e 90 .
3111 dw as.AND_CP_OR_SUB_XOR ;XOR 134f a8 15 . .
3112 db 0a8h ; 1351 a8 .
3113
3114 dw as.IN0 ;IN0
3115 db 000h ;
3116 dw as.MLT ;MLT
3117 db 04ch ;
3118 dw gen.opc.ED2 ;OTDM
3119 db 08bh ;
3120 dw gen.opc.ED2 ;OTDMR
3121 db 09bh ;
3122 dw gen.opc.ED2 ;OTIM
3123 db 083h ;
3124 dw gen.opc.ED2 ;OTIMR
3125 db 093h ;
3126 dw as.OUTO ;OUT0
3127 db 001h ;
3128 dw gen.opc.ED2 ;SLP
3129 db 076h ;
3130 dw as.TST ;TST
3131 db 004h ;
3132 dw as.TSTIO ;TSTIO
3133 db 074h ;
3134
3135 as.TST:
3136 call arg.r_HL_A ;
3137 jr nc,as.tst_0
3138 rlca
3139 rlca
3140 rlca
3141 add a,b
3142 ld b,a
3143 jp gen.opc.ED2
3144 as.tst_0:
3145 ld b,064h
3146 as.TSTIO:
3147 call arg.imm_8bit ;
3148 jr as.store_io0
3149
3150 as.IN0:
3151 call arg.r_HL_A ;
3152 jr nc,error7
3153 cp 006h
3154 jr z,error7
3155 rlca
3156 rlca
3157 rlca
3158 add a,b
3159 ld b,a
3160 call assert_comma ;
3161 call arg.addr_8bit ;
3162 jr as.store_io0
3163
3164 as.OUTO:
3165 call arg.addr_8bit ;
3166 call assert_comma ;
3167 call arg.r_HL_A ;
3168 jr nc,error7
3169 cp 006h
3170 jr z,error7
3171 rlca
3172 rlca
3173 rlca
3174 add a,b
3175 ld b,a
3176
3177 as.store_io0:
3178 call assert_eol
3179 ld (iy+000h),0edh
3180 ld (iy+001h),b
3181 ld (iy+002h),l
3182 ld c,003h
3183 ret
3184
3185 as.MLT:
3186 call arg.ww ;
3187 jr nc,error7
3188 add a,b
3189 ld b,a
3190 jp gen.opc.ED2
3191
3192 error7:
3193 jp ERROR
3194
3195 as.LD:
3196 call arg.r_HL_A ;1352 cd 2e 18 . . .
3197 jr c,l13d4h ;1355 38 7d 8 }
3198 call arg.IDX_displcmnt ;1357 cd 55 18 . U .
3199 jp c,l1471h ;135a da 71 14 . q .
3200 call arg.ww ;135d cd 1b 18 . . .
3201 jp c,l149ch ;1360 da 9c 14 . . .
3202 call arg.IX_IY ;1363 cd 3d 18 . = .
3203 jp c,l14f5h ;1366 da f5 14 . . .
3204 ld a,(de) ;1369 1a .
3205 cp 'I' ;136a fe 49 . I
3206 jp z,l1511h ;136c ca 11 15 . . .
3207 cp 'R' ;136f fe 52 . R
3208 jp z,l1519h ;1371 ca 19 15 . . .
3209 cp '(' ;1374 fe 28 . (
3210 jp nz,ERROR ;1376 c2 07 01 . . .
3211 inc de ;1379 13 .
3212 call arg.ww ;137a cd 1b 18 . . .
3213 jp c,l1528h ;137d da 28 15 . ( .
3214 call test_expr ;1380 cd 09 18 . . .
3215 call test_paren_close ;1383 cd c5 18 . . .
3216 call assert_comma ;1386 cd be 18 . . .
3217 call arg.ww ;1389 cd 1b 18 . . .
3218 jr c,l13c2h ;138c 38 34 8 4
3219 call arg.IX_IY ;138e cd 3d 18 . = .
3220 jr nc,l13aah ;1391 30 17 0 .
3221 ld b,022h ;1393 06 22 . "
3222 l1395h:
3223 call assert_eol ;1395 cd d6 02 . . .
3224 ld a,(prefix_ixiy) ;1398 3a cc 18 : . .
3225 l139bh:
3226 ld (iy+000h),a ;139b fd 77 00 . w .
3227 ld (iy+001h),b ;139e fd 70 01 . p .
3228 ld (iy+002h),l ;13a1 fd 75 02 . u .
3229 ld (iy+003h),h ;13a4 fd 74 03 . t .
3230 ld c,004h ;13a7 0e 04 . .
3231 ret ;13a9 c9 .
3232 l13aah:
3233 ld a,(de) ;13aa 1a .
3234 cp 'A' ;13ab fe 41 . A
3235 jp nz,ERROR ;13ad c2 07 01 . . .
3236 inc de ;13b0 13 .
3237 ld b,032h ;13b1 06 32 . 2
3238 as.store_3:
3239 call assert_eol ;13b3 cd d6 02 . . .
3240 ld (iy+000h),b ;13b6 fd 70 00 . p .
3241 ld (iy+001h),l ;13b9 fd 75 01 . u .
3242 ld (iy+002h),h ;13bc fd 74 02 . t .
3243 ld c,003h ;13bf 0e 03 . .
3244 ret ;13c1 c9 .
3245 l13c2h:
3246 cp 020h ;13c2 fe 20 .
3247 jr z,l13d0h ;13c4 28 0a ( .
3248 add a,043h ;13c6 c6 43 . C
3249 ld b,a ;13c8 47 G
3250 l13c9h:
3251 call assert_eol ;13c9 cd d6 02 . . .
3252 ld a,0edh ;13cc 3e ed > .
3253 jr l139bh ;13ce 18 cb . .
3254 l13d0h:
3255 ld b,022h ;13d0 06 22 . "
3256 jr as.store_3 ;13d2 18 df . .
3257 l13d4h:
3258 ld b,a ;13d4 47 G
3259 call assert_comma ;13d5 cd be 18 . . .
3260 call arg.r_HL_A ;13d8 cd 2e 18 . . .
3261 jr nc,l13f0h ;13db 30 13 0 .
3262 push af ;13dd f5 .
3263 ld a,b ;13de 78 x
3264 rlca ;13df 07 .
3265 rlca ;13e0 07 .
3266 rlca ;13e1 07 .
3267 ld b,a ;13e2 47 G
3268 pop af ;13e3 f1 .
3269 add a,b ;13e4 80 .
3270 add a,040h ;13e5 c6 40 . @
3271 cp 076h ;13e7 fe 76 . v
3272 jp z,ERROR ;13e9 ca 07 01 . . .
3273 l13ech:
3274 ld b,a ;13ec 47 G
3275 jp as.opc.noarg ;13ed c3 3b 15 . ; .
3276 l13f0h:
3277 call arg.IDX_displcmnt ;13f0 cd 55 18 . U .
3278 jr nc,l1413h ;13f3 30 1e 0 .
3279 ld a,b ;13f5 78 x
3280 rlca ;13f6 07 .
3281 rlca ;13f7 07 .
3282 rlca ;13f8 07 .
3283 add a,046h ;13f9 c6 46 . F
3284 cp 076h ;13fb fe 76 . v
3285 jp z,ERROR ;13fd ca 07 01 . . .
3286
3287 l1400h:
3288 ld b,a ;1400 47 G
3289 call assert_eol ;1401 cd d6 02 . . .
3290 ld (iy+001h),b ;1404 fd 70 01 . p .
3291 ld (iy+002h),c ;1407 fd 71 02 . q .
3292 ld a,(prefix_ixiy) ;140a 3a cc 18 : . .
3293 ld (iy+000h),a ;140d fd 77 00 . w .
3294 ld c,003h ;1410 0e 03 . .
3295 ret ;1412 c9 .
3296 l1413h:
3297 ld a,(de) ;1413 1a .
3298 cp 'I' ;1414 fe 49 . I
3299 jr z,l1426h ;1416 28 0e ( .
3300 cp 'R' ;1418 fe 52 . R
3301 jr nz,l1432h ;141a 20 16 .
3302 ld a,b ;141c 78 x
3303 cp 007h ;141d fe 07 . .
3304 jp nz,ERROR ;141f c2 07 01 . . .
3305 ld b,05fh ;1422 06 5f . _
3306 jr l142eh ;1424 18 08 . .
3307 l1426h:
3308 ld a,b ;1426 78 x
3309 cp 007h ;1427 fe 07 . .
3310 jp nz,ERROR ;1429 c2 07 01 . . .
3311 ld b,057h ;142c 06 57 . W
3312 l142eh:
3313 inc de ;142e 13 .
3314 jp gen.opc.ED2 ;142f c3 44 15 . D .
3315 l1432h:
3316 cp '(' ;1432 fe 28 . (
3317 jr z,l144ch ;1434 28 16 ( .
3318 call arg.imm_8bit ;1436 cd ff 17 . . .
3319 ld a,b ;1439 78 x
3320 rlca ;143a 07 .
3321 rlca ;143b 07 .
3322 rlca ;143c 07 .
3323 add a,006h ;143d c6 06 . .
3324 l143fh:
3325 ld b,a ;143f 47 G
3326 as.store_2:
3327 call assert_eol ;1440 cd d6 02 . . .
3328 ld (iy+000h),b ;1443 fd 70 00 . p .
3329 ld (iy+001h),l ;1446 fd 75 01 . u .
3330 ld c,002h ;1449 0e 02 . .
3331 ret ;144b c9 .
3332 l144ch:
3333 inc de ;144c 13 .
3334 ld a,b ;144d 78 x
3335 cp 007h ;144e fe 07 . .
3336 jp nz,ERROR ;1450 c2 07 01 . . .
3337 call arg.ww ;1453 cd 1b 18 . . .
3338 jr nc,l1466h ;1456 30 0e 0 .
3339 cp 030h ;1458 fe 30 . 0
3340 jp nc,ERROR ;145a d2 07 01 . . .
3341 add a,00ah ;145d c6 0a . .
3342 ld b,a ;145f 47 G
3343 call test_paren_close ;1460 cd c5 18 . . .
3344 jp as.opc.noarg ;1463 c3 3b 15 . ; .
3345 l1466h:
3346 call test_expr ;1466 cd 09 18 . . .
3347 call test_paren_close ;1469 cd c5 18 . . .
3348 ld b,03ah ;146c 06 3a . :
3349 jp as.store_3 ;146e c3 b3 13 . . .
3350
3351 l1471h:
3352 call assert_comma ;1471 cd be 18 . . .
3353 call arg.r_HL_A ;1474 cd 2e 18 . . .
3354 jr nc,l1483h ;1477 30 0a 0 .
3355 cp 006h ;1479 fe 06 . .
3356 jp z,ERROR ;147b ca 07 01 . . .
3357 add a,070h ;147e c6 70 . p
3358 jp l1400h ;1480 c3 00 14 . . .
3359
3360 l1483h:
3361 call arg.imm_8bit ;1483 cd ff 17 . . .
3362 call assert_eol ;1486 cd d6 02 . . .
3363 ld a,(prefix_ixiy) ;1489 3a cc 18 : . .
3364 ld (iy+000h),a ;148c fd 77 00 . w .
3365 ld (iy+001h),036h ;148f fd 36 01 36 . 6 . 6
3366 ld (iy+002h),c ;1493 fd 71 02 . q .
3367 ld (iy+003h),l ;1496 fd 75 03 . u .
3368 ld c,004h ;1499 0e 04 . .
3369 ret ;149b c9 .
3370 l149ch:
3371 ld b,a ;149c 47 G
3372 call assert_comma ;149d cd be 18 . . .
3373 ld hl,t_HL.AF ;14a0 21 af 1f ! . .
3374 call sub_0318h ;14a3 cd 18 03 . . .
3375 jr c,l14c3h ;14a6 38 1b 8 .
3376 call arg.IX_IY ;14a8 cd 3d 18 . = .
3377 jr nc,l14cch ;14ab 30 1f 0 .
3378 ld a,b ;14ad 78 x
3379 cp 030h ;14ae fe 30 . 0
3380 jr nz,error6 ;14b0 20 73 s
3381 ld b,0f9h ;14b2 06 f9 . .
3382 l14b4h:
3383 call assert_eol ;14b4 cd d6 02 . . .
3384 ld a,(prefix_ixiy) ;14b7 3a cc 18 : . .
3385 ld (iy+000h),a ;14ba fd 77 00 . w .
3386 ld (iy+001h),b ;14bd fd 70 01 . p .
3387 ld c,002h ;14c0 0e 02 . .
3388 ret ;14c2 c9 .
3389 l14c3h:
3390 ld a,b ;14c3 78 x
3391 cp 030h ;14c4 fe 30 . 0
3392 jr nz,error6 ;14c6 20 5d ]
3393 ld b,0f9h ;14c8 06 f9 . .
3394 jr as.opc.noarg ;14ca 18 6f . o
3395 l14cch:
3396 ld a,(de) ;14cc 1a .
3397 cp '(' ;14cd fe 28 . (
3398 jr nz,l14e8h ;14cf 20 17 .
3399 inc de ;14d1 13 .
3400 call test_expr ;14d2 cd 09 18 . . .
3401 call test_paren_close ;14d5 cd c5 18 . . .
3402 ld a,b ;14d8 78 x
3403 cp 020h ;14d9 fe 20 .
3404 jr z,l14e3h ;14db 28 06 ( .
3405 add a,04bh ;14dd c6 4b . K
3406 ld b,a ;14df 47 G
3407 jp l13c9h ;14e0 c3 c9 13 . . .
3408 l14e3h:
3409 ld b,02ah ;14e3 06 2a . *
3410 jp as.store_3 ;14e5 c3 b3 13 . . .
3411 l14e8h:
3412 call test_expr ;14e8 cd 09 18 . . .
3413 call assert_eol ;14eb cd d6 02 . . .
3414 ld a,001h ;14ee 3e 01 > .
3415 add a,b ;14f0 80 .
3416 ld b,a ;14f1 47 G
3417 jp as.store_3 ;14f2 c3 b3 13 . . .
3418 l14f5h:
3419 call assert_comma ;14f5 cd be 18 . . .
3420 ld a,(de) ;14f8 1a .
3421 cp '(' ;14f9 fe 28 . (
3422 jr nz,l1509h ;14fb 20 0c .
3423 inc de ;14fd 13 .
3424 call test_expr ;14fe cd 09 18 . . .
3425 call test_paren_close ;1501 cd c5 18 . . .
3426 ld b,02ah ;1504 06 2a . *
3427 jp l1395h ;1506 c3 95 13 . . .
3428 l1509h:
3429 call test_expr ;1509 cd 09 18 . . .
3430 ld b,021h ;150c 06 21 . !
3431 jp l1395h ;150e c3 95 13 . . .
3432 l1511h:
3433 inc de ;1511 13 .
3434 call assert_comma ;1512 cd be 18 . . .
3435 ld b,047h ;1515 06 47 . G
3436 jr l151fh ;1517 18 06 . .
3437 l1519h:
3438 inc de ;1519 13 .
3439 call assert_comma ;151a cd be 18 . . .
3440 ld b,04fh ;151d 06 4f . O
3441 l151fh:
3442 ld a,(de) ;151f 1a .
3443 inc de ;1520 13 .
3444 cp 'A' ;1521 fe 41 . A
3445 jr z,gen.opc.ED2 ;1523 28 1f ( .
3446 error6:
3447 jp ERROR ;1525 c3 07 01 . . .
3448
3449 l1528h:
3450 cp 020h ;1528 fe 20 .
3451 jr nc,error6 ;152a 30 f9 0 .
3452 add a,002h ;152c c6 02 . .
3453 ld b,a ;152e 47 G
3454 call test_paren_close ;152f cd c5 18 . . .
3455 call assert_comma ;1532 cd be 18 . . .
3456 ld a,(de) ;1535 1a .
3457 cp 'A' ;1536 fe 41 . A
3458 jr nz,error6 ;1538 20 eb .
3459 inc de ;153a 13 .
3460 as.opc.noarg:
3461 call assert_eol ;153b cd d6 02 . . .
3462 ld (iy+000h),b ;153e fd 70 00 . p .
3463 ld c,001h ;1541 0e 01 . .
3464 ret ;1543 c9 .
3465
3466 gen.opc.ED2:
3467 call assert_eol ;1544 cd d6 02 . . .
3468 ld (iy+000h),0edh ;1547 fd 36 00 ed . 6 . .
3469 ld (iy+001h),b ;154b fd 70 01 . p .
3470 ld c,002h ;154e 0e 02 . .
3471 ret ;1550 c9 .
3472
3473 as.ADC_SBC:
3474 ld hl,t_HL.AF ;1551 21 af 1f ! . .
3475 call sub_0318h ;1554 cd 18 03 . . .
3476 jr nc,as.AND_CP_OR_SUB_XOR ;1557 30 4f 0 O
3477 call assert_comma ;1559 cd be 18 . . .
3478 call arg.ww ;155c cd 1b 18 . . .
3479 jp nc,ERROR ;155f d2 07 01 . . .
3480 push af ;1562 f5 .
3481 ld a,b ;1563 78 x
3482 cp 088h ;1564 fe 88 . .
3483 ld b,04ah ;1566 06 4a . J
3484 jr z,l156ch ;1568 28 02 ( .
3485 ld b,042h ;156a 06 42 . B
3486 l156ch:
3487 pop af ;156c f1 .
3488 add a,b ;156d 80 .
3489 l156eh:
3490 ld b,a ;156e 47 G
3491 jr gen.opc.ED2 ;156f 18 d3 . .
3492 as.ADD:
3493 ld hl,t_HL.AF ;1571 21 af 1f ! . .
3494 call sub_0318h ;1574 cd 18 03 . . .
3495 jr c,l159ah ;1577 38 21 8 !
3496 call arg.IX_IY ;1579 cd 3d 18 . = .
3497 jr nc,as.AND_CP_OR_SUB_XOR ;157c 30 2a 0 *
3498 call assert_comma ;157e cd be 18 . . .
3499 ld hl,t_BC.DE.IX.SP ;1581 21 bd 1f ! . .
3500 ld a,(prefix_ixiy) ;1584 3a cc 18 : . .
3501 cp 0fdh ;1587 fe fd . .
3502 jr nz,l158eh ;1589 20 03 .
3503 ld hl,t_BC.DE.IY.SP ;158b 21 b4 1f ! . .
3504 l158eh:
3505 call arg.reg_16bit ;158e cd 18 18 . . .
3506 jp nc,ERROR ;1591 d2 07 01 . . .
3507 add a,009h ;1594 c6 09 . .
3508 l1596h:
3509 ld b,a ;1596 47 G
3510 jp l14b4h ;1597 c3 b4 14 . . .
3511 l159ah:
3512 call assert_comma ;159a cd be 18 . . .
3513 call arg.ww ;159d cd 1b 18 . . .
3514 jp nc,ERROR ;15a0 d2 07 01 . . .
3515 add a,009h ;15a3 c6 09 . .
3516 jp l13ech ;15a5 c3 ec 13 . . .
3517 as.AND_CP_OR_SUB_XOR:
3518 ld a,(de) ;15a8 1a .
3519 cp 'A' ;15a9 fe 41 . A
3520 jr nz,l15b8h ;15ab 20 0b .
3521 push de ;15ad d5 .
3522 inc de ;15ae 13 .
3523 call next_arg ;15af cd ca 02 . . .
3524 jr z,l15b7h ;15b2 28 03 ( .
3525 pop de ;15b4 d1 .
3526 jr l15b8h ;15b5 18 01 . .
3527 l15b7h:
3528 pop af ;15b7 f1 .
3529 l15b8h:
3530 call arg.r_HL_A ;15b8 cd 2e 18 . . .
3531 jr c,l15cbh ;15bb 38 0e 8 .
3532 call arg.IDX_displcmnt ;15bd cd 55 18 . U .
3533 jr c,l15cfh ;15c0 38 0d 8 .
3534 call arg.imm_8bit ;15c2 cd ff 17 . . .
3535 ld a,b ;15c5 78 x
3536 add a,046h ;15c6 c6 46 . F
3537 jp l143fh ;15c8 c3 3f 14 . ? .
3538 l15cbh:
3539 add a,b ;15cb 80 .
3540 jp l13ech ;15cc c3 ec 13 . . .
3541 l15cfh:
3542 ld a,b ;15cf 78 x
3543 add a,006h ;15d0 c6 06 . .
3544 jp l1400h ;15d2 c3 00 14 . . .
3545
3546 as.SHIFTOP:
3547 call arg.r_HL_A ;15d5 cd 2e 18 . . .
3548 jr c,l15fah ;15d8 38 20 8
3549 call arg.IDX_displcmnt ;15da cd 55 18 . U .
3550 jp nc,ERROR ;15dd d2 07 01 . . .
3551 ld a,b ;15e0 78 x
3552 add a,006h ;15e1 c6 06 . .
3553 ld b,a ;15e3 47 G
3554 l15e4h:
3555 call assert_eol ;15e4 cd d6 02 . . .
3556 ld a,(prefix_ixiy) ;15e7 3a cc 18 : . .
3557 ld (iy+000h),a ;15ea fd 77 00 . w .
3558 ld (iy+001h),0cbh ;15ed fd 36 01 cb . 6 . .
3559 ld (iy+002h),c ;15f1 fd 71 02 . q .
3560 ld (iy+003h),b ;15f4 fd 70 03 . p .
3561 ld c,004h ;15f7 0e 04 . .
3562 ret ;15f9 c9 .
3563
3564 l15fah:
3565 add a,b ;15fa 80 .
3566 l15fbh:
3567 ld b,a ;15fb 47 G
3568 call assert_eol ;15fc cd d6 02 . . .
3569 ld (iy+001h),b ;15ff fd 70 01 . p .
3570 ld (iy+000h),0cbh ;1602 fd 36 00 cb . 6 . .
3571 ld c,002h ;1606 0e 02 . .
3572 ret ;1608 c9 .
3573
3574 as.BITOP:
3575 call arg.bit ;1609 cd d3 17 . . .
3576 call assert_comma ;160c cd be 18 . . .
3577 call arg.r_HL_A ;160f cd 2e 18 . . .
3578 jr c,l1624h ;1612 38 10 8 .
3579 call arg.IDX_displcmnt ;1614 cd 55 18 . U .
3580 jp nc,ERROR ;1617 d2 07 01 . . .
3581 ld a,l ;161a 7d }
3582 rlca ;161b 07 .
3583 rlca ;161c 07 .
3584 rlca ;161d 07 .
3585 add a,006h ;161e c6 06 . .
3586 add a,b ;1620 80 .
3587 ld b,a ;1621 47 G
3588 jr l15e4h ;1622 18 c0 . .
3589 l1624h:
3590 add a,b ;1624 80 .
3591 ld b,a ;1625 47 G
3592 ld a,l ;1626 7d }
3593 rlca ;1627 07 .
3594 rlca ;1628 07 .
3595 rlca ;1629 07 .
3596 add a,b ;162a 80 .
3597 jr l15fbh ;162b 18 ce . .
3598
3599 as.CALL:
3600 push de ;162d d5 .
3601 call arg.cc_ZCPS ;162e cd a5 18 . . .
3602 jr nc,l163ch ;1631 30 09 0 .
3603 add a,b ;1633 80 .
3604 ld b,a ;1634 47 G
3605 call next_arg ;1635 cd ca 02 . . .
3606 jr z,l163eh ;1638 28 04 ( .
3607 pop de ;163a d1 .
3608 push de ;163b d5 .
3609 l163ch:
3610 ld b,0cdh ;163c 06 cd . .
3611 l163eh:
3612 pop af ;163e f1 .
3613 call test_expr ;163f cd 09 18 . . .
3614 jp as.store_3 ;1642 c3 b3 13 . . .
3615
3616 as.RET:
3617 call arg.cc_ZCPS ;1645 cd a5 18 . . .
3618 jr nc,l164eh ;1648 30 04 0 .
3619 add a,b ;164a 80 .
3620 ld b,a ;164b 47 G
3621 jr l1650h ;164c 18 02 . .
3622 l164eh:
3623 ld b,0c9h ;164e 06 c9 . .
3624 l1650h:
3625 jp as.opc.noarg ;1650 c3 3b 15 . ; .
3626
3627 as.JP:
3628 push de ;1653 d5 .
3629 call arg.cc_ZCPS ;1654 cd a5 18 . . .
3630 jr c,l1666h ;1657 38 0d 8 .
3631 l1659h:
3632 pop de ;1659 d1 .
3633 ld hl,l168ch ;165a 21 8c 16 ! . .
3634 call sub_030ah ;165d cd 0a 03 . . .
3635 jr c,l1674h ;1660 38 12 8 .
3636 ld b,0c3h ;1662 06 c3 . .
3637 jr l166eh ;1664 18 08 . .
3638
3639 l1666h:
3640 add a,b ;1666 80 .
3641 ld b,a ;1667 47 G
3642 call next_arg ;1668 cd ca 02 . . .
3643 jr nz,l1659h ;166b 20 ec .
3644 pop af ;166d f1 .
3645 l166eh:
3646 call test_expr ;166e cd 09 18 . . .
3647 jp as.store_3 ;1671 c3 b3 13 . . .
3648 l1674h:
3649 call assert_eol ;1674 cd d6 02 . . .
3650 ld a,b ;1677 78 x
3651 and a ;1678 a7 .
3652 jr nz,l1680h ;1679 20 05 .
3653 ld b,0e9h ;167b 06 e9 . .
3654 jp as.opc.noarg ;167d c3 3b 15 . ; .
3655 l1680h:
3656 ld b,0ddh ;1680 06 dd . .
3657 dec a ;1682 3d =
3658 jr z,l1687h ;1683 28 02 ( .
3659 ld b,0fdh ;1685 06 fd . .
3660 l1687h:
3661 ld l,0e9h ;1687 2e e9 . .
3662 jp as.store_2 ;1689 c3 40 14 . @ .
3663
3664 l168ch:
3665 DC '(HL)'
3666 DC '(IX)'
3667 DC '(IY)'
3668 DB 0
3669
3670 as.DJNZ:
3671 call next_arg ;1699 cd ca 02 . . .
3672 ld b,010h ;169c 06 10 . .
3673 jr l16aeh ;169e 18 0e . .
3674 as.JR:
3675 call arg.cc_ZC ;16a0 cd ac 18 . . .
3676 jr c,l16a9h ;16a3 38 04 8 .
3677 ld b,018h ;16a5 06 18 . .
3678 jr l16aeh ;16a7 18 05 . .
3679 l16a9h:
3680 add a,b ;16a9 80 .
3681 ld b,a ;16aa 47 G
3682 call assert_comma ;16ab cd be 18 . . .
3683 l16aeh:
3684 call arg.j_displ ;16ae cd dc 17 . . .
3685 jp as.store_2 ;16b1 c3 40 14 . @ .
3686
3687 as.IM:
3688 call arg.imm_8bit ;16b4 cd ff 17 . . .
3689 ld a,l ;16b7 7d }
3690 cp 003h ;16b8 fe 03 . .
3691 jr nc,error2 ;16ba 30 5c 0 \
3692 and a ;16bc a7 .
3693 jr z,l16c7h ;16bd 28 08 ( .
3694 ld b,056h ;16bf 06 56 . V
3695 cp 001h ;16c1 fe 01 . .
3696 jr z,l16c7h ;16c3 28 02 ( .
3697 ld b,05eh ;16c5 06 5e . ^
3698 l16c7h:
3699 jp gen.opc.ED2 ;16c7 c3 44 15 . D .
3700
3701 as.RST:
3702 call arg.imm_8bit ;16ca cd ff 17 . . .
3703 ld a,l ;16cd 7d }
3704 push af ;16ce f5 .
3705 add a,b ;16cf 80 .
3706 ld b,a ;16d0 47 G
3707 pop af ;16d1 f1 .
3708 and 0c7h ;16d2 e6 c7 . .
3709 jr nz,error2 ;16d4 20 42 B
3710 jp as.opc.noarg ;16d6 c3 3b 15 . ; .
3711
3712 as.POP_PUSH:
3713 call arg.IX_IY ;16d9 cd 3d 18 . = .
3714 jr c,l16e7h ;16dc 38 09 8 .
3715 call arg.zz ;16de cd 12 18 . . .
3716 jr nc,error2 ;16e1 30 35 0 5
3717 add a,b ;16e3 80 .
3718 jp l13ech ;16e4 c3 ec 13 . . .
3719 l16e7h:
3720 ld a,b ;16e7 78 x
3721 add a,020h ;16e8 c6 20 .
3722 jp l1596h ;16ea c3 96 15 . . .
3723
3724 as.IN:
3725 call arg.r_HL_A ;16ed cd 2e 18 . . .
3726 jr nc,error2 ;16f0 30 26 0 &
3727 cp 006h ;16f2 fe 06 . .
3728 jr z,error2 ;16f4 28 22 ( "
3729 rlca ;16f6 07 .
3730 rlca ;16f7 07 .
3731 rlca ;16f8 07 .
3732 add a,b ;16f9 80 .
3733 ld b,a ;16fa 47 G
3734 cp 078h ;16fb fe 78 . x
3735 jr nz,l170fh ;16fd 20 10 .
3736 call assert_comma ;16ff cd be 18 . . .
3737 call sub_171bh ;1702 cd 1b 17 . . .
3738 jr c,l1715h ;1705 38 0e 8 .
3739 call arg.addr_8bit ;1707 cd f3 17 . . .
3740 ld b,0dbh ;170a 06 db . .
3741 jp as.store_2 ;170c c3 40 14 . @ .
3742 l170fh:
3743 call assert_comma ;170f cd be 18 . . .
3744 call sub_171bh ;1712 cd 1b 17 . . .
3745 l1715h:
3746 jp c,gen.opc.ED2 ;1715 da 44 15 . D .
3747 error2:
3748 jp ERROR ;1718 c3 07 01 . . .
3749
3750 sub_171bh:
3751 ld hl,t__C_ ;171b 21 f4 1f ! . .
3752 jp sub_0318h ;171e c3 18 03 . . .
3753
3754 as.OUT:
3755 call sub_171bh ;1721 cd 1b 17 . . .
3756 jr nc,l1739h ;1724 30 13 0 .
3757 call assert_comma ;1726 cd be 18 . . .
3758 call arg.r_HL_A ;1729 cd 2e 18 . . .
3759 jr nc,error2 ;172c 30 ea 0 .
3760 cp 006h ;172e fe 06 . .
3761 jr z,error2 ;1730 28 e6 ( .
3762 rlca ;1732 07 .
3763 rlca ;1733 07 .
3764 rlca ;1734 07 .
3765 add a,b ;1735 80 .
3766 jp l156eh ;1736 c3 6e 15 . n .
3767
3768 l1739h:
3769 call arg.addr_8bit ;1739 cd f3 17 . . .
3770 call assert_comma ;173c cd be 18 . . .
3771 cp 'A' ;173f fe 41 . A
3772 jr nz,error2 ;1741 20 d5 .
3773 inc de ;1743 13 .
3774 ld b,0d3h ;1744 06 d3 . .
3775 jp as.store_2 ;1746 c3 40 14 . @ .
3776
3777 as.EX:
3778 ld hl,b_176d_start ;1749 21 6d 17 ! m .
3779 call sub_030ah ;174c cd 0a 03 . . .
3780 jp nc,ERROR ;174f d2 07 01 . . .
3781 ld c,b ;1752 48 H
3782 call assert_eol ;1753 cd d6 02 . . .
3783 ld b,000h ;1756 06 00 . .
3784 ld hl,l178eh ;1758 21 8e 17 ! . .
3785 add hl,bc ;175b 09 .
3786 add hl,bc ;175c 09 .
3787 ld a,(hl) ;175d 7e ~
3788 ld (iy+000h),a ;175e fd 77 00 . w .
3789 ld c,001h ;1761 0e 01 . .
3790 inc hl ;1763 23 #
3791 ld a,(hl) ;1764 7e ~
3792 and a ;1765 a7 .
3793 ret z ;1766 c8 .
3794 ld (iy+001h),a ;1767 fd 77 01 . w .
3795 ld c,002h ;176a 0e 02 . .
3796 ret ;176c c9 .
3797
3798 b_176d_start:
3799 DC 'AF,AF'''
3800 l1773h:
3801 DC 'DE,HL'
3802 DC '(SP),HL'
3803 DC '(SP),IX'
3804 DC '(SP),IY'
3805 db 0
3806 l178eh:
3807 db 008h,000h ;178e 08 .
3808 db 0ebh,000h ;1790 eb .
3809 db 0e3h,000h ;1792 e3 .
3810 db 0ddh,0e3h ;1794 dd .
3811 db 0fdh,0e3h ;1796 fd .
3812
3813 as.DEC_INC:
3814 call arg.IX_IY ;1798 cd 3d 18 . = .
3815 jr c,l17b3h ;179b 38 16 8 .
3816 call arg.ww ;179d cd 1b 18 . . .
3817 jr c,l17bfh ;17a0 38 1d 8 .
3818 call arg.r_HL_A ;17a2 cd 2e 18 . . .
3819 jr c,l17cch ;17a5 38 25 8 %
3820 call arg.IDX_displcmnt ;17a7 cd 55 18 . U .
3821 jp nc,ERROR ;17aa d2 07 01 . . .
3822 ld a,b ;17ad 78 x
3823 add a,030h ;17ae c6 30 . 0
3824 jp l1400h ;17b0 c3 00 14 . . .
3825 l17b3h:
3826 ld a,b ;17b3 78 x
3827 ld b,023h ;17b4 06 23 . #
3828 cp 004h ;17b6 fe 04 . .
3829 jr z,l17bch ;17b8 28 02 ( .
3830 ld b,02bh ;17ba 06 2b . +
3831 l17bch:
3832 jp l14b4h ;17bc c3 b4 14 . . .
3833 l17bfh:
3834 push af ;17bf f5 .
3835 ld a,b ;17c0 78 x
3836 ld b,003h ;17c1 06 03 . .
3837 cp 004h ;17c3 fe 04 . .
3838 jr z,l17c9h ;17c5 28 02 ( .
3839 ld b,00bh ;17c7 06 0b . .
3840 l17c9h:
3841 pop af ;17c9 f1 .
3842 jr l17cfh ;17ca 18 03 . .
3843 l17cch:
3844 rlca ;17cc 07 .
3845 rlca ;17cd 07 .
3846 rlca ;17ce 07 .
3847 l17cfh:
3848 add a,b ;17cf 80 .
3849 jp l13ech ;17d0 c3 ec 13 . . .
3850
3851 arg.bit:
3852 call arg.imm_8bit ;17d3 cd ff 17 . . .
3853 ld a,l ;17d6 7d }
3854 cp 008h ;17d7 fe 08 . .
3855 jr nc,error3 ;17d9 30 34 0 4
3856 ret ;17db c9 .
3857
3858 arg.j_displ:
3859 call test_expr ;17dc cd 09 18 . . .
3860 push bc ;17df c5 .
3861 push iy ;17e0 fd e5 . .
3862 pop bc ;17e2 c1 .
3863 and a ;17e3 a7 .
3864 sbc hl,bc ;17e4 ed 42 . B
3865 dec hl ;17e6 2b +
3866 dec hl ;17e7 2b +
3867 pop bc ;17e8 c1 .
3868 call sub_1802h ;17e9 cd 02 18 . . .
3869 ld a,h ;17ec 7c |
3870 xor l ;17ed ad .
3871 bit 7,a ;17ee cb 7f . \7f
3872 jr nz,error3 ;17f0 20 1d .
3873 ret ;17f2 c9 .
3874
3875 arg.addr_8bit:
3876 ld a,(de) ;17f3 1a .
3877 cp '(' ;17f4 fe 28 . (
3878 jr nz,arg.imm_8bit ;17f6 20 07 .
3879 inc de ;17f8 13 .
3880 call arg.imm_8bit ;17f9 cd ff 17 . . .
3881 jp test_paren_close ;17fc c3 c5 18 . . .
3882
3883 arg.imm_8bit:
3884 call test_expr ;17ff cd 09 18 . . .
3885 sub_1802h:
3886 ld a,h ;1802 7c |
3887 and a ;1803 a7 .
3888 ret z ;1804 c8 .
3889 inc a ;1805 3c <
3890 ret z ;1806 c8 .
3891 jr error3 ;1807 18 06 . .
3892
3893 test_expr:
3894 push bc ;1809 c5 .
3895 call expr ;180a cd be 03 . . .
3896 pop bc ;180d c1 .
3897 ret nc ;180e d0 .
3898 error3:
3899 jp ERROR ;180f c3 07 01 . . .
3900
3901 arg.zz:
3902 push hl ;1812 e5 .
3903 ld hl,t_BC.DE.HL.AF ;1813 21 ab 1f ! . .
3904 jr l181fh ;1816 18 07 . .
3905
3906 arg.reg_16bit:
3907 push hl ;1818 e5 .
3908 jr l181fh ;1819 18 04 . .
3909
3910 arg.ww:
3911 push hl ;181b e5 .
3912 ld hl,t_BC.DE.HL.SP ;181c 21 a2 1f ! . .
3913 l181fh:
3914 push bc ;181f c5 .
3915 call sub_030ah ;1820 cd 0a 03 . . .
3916 jr nc,l182bh ;1823 30 06 0 .
3917 ld a,b ;1825 78 x
3918 rlca ;1826 07 .
3919 rlca ;1827 07 .
3920 rlca ;1828 07 .
3921 rlca ;1829 07 .
3922 scf ;182a 37 7
3923 l182bh:
3924 pop bc ;182b c1 .
3925 pop hl ;182c e1 .
3926 ret ;182d c9 .
3927
3928 arg.r_HL_A:
3929 call skipbl ;182e cd bf 02 . . .
3930 push bc ;1831 c5 .
3931 push hl ;1832 e5 .
3932 ld hl,t_BCDEHL_HL_A ;1833 21 96 1f ! . .
3933 call sub_030ah ;1836 cd 0a 03 . . .
3934 ld a,b ;1839 78 x
3935 pop hl ;183a e1 .
3936 pop bc ;183b c1 .
3937 ret ;183c c9 .
3938
3939 arg.IX_IY:
3940 push hl ;183d e5 .
3941 push bc ;183e c5 .
3942 ld hl,t_IX.IY ;183f 21 c8 1f ! . .
3943 call sub_030ah ;1842 cd 0a 03 . . .
3944 jr nc,l1852h ;1845 30 0b 0 .
3945 ld a,0ddh ;1847 3e dd > .
3946 dec b ;1849 05 .
3947 jr nz,l184eh ;184a 20 02 .
3948 ld a,0fdh ;184c 3e fd > .
3949 l184eh:
3950 ld (prefix_ixiy),a ;184e 32 cc 18 2 . .
3951 scf ;1851 37 7
3952 l1852h:
3953 pop bc ;1852 c1 .
3954 pop hl ;1853 e1 .
3955 ret ;1854 c9 .
3956
3957 arg.IDX_displcmnt:
3958 push hl ;1855 e5 .
3959 push bc ;1856 c5 .
3960 ld a,(de) ;1857 1a .
3961 cp '(' ;1858 fe 28 . (
3962 jr nz,l18a1h ;185a 20 45 E
3963 push de ;185c d5 .
3964 inc de ;185d 13 .
3965 ld hl,t_IX.IY ;185e 21 c8 1f ! . .
3966 call sub_030ah ;1861 cd 0a 03 . . .
3967 jr nc,l18a0h ;1864 30 3a 0 :
3968 pop af ;1866 f1 .
3969 ld a,0ddh ;1867 3e dd > .
3970 dec b ;1869 05 .
3971 jr nz,l186eh ;186a 20 02 .
3972 ld a,0fdh ;186c 3e fd > .
3973 l186eh:
3974 ld (prefix_ixiy),a ;186e 32 cc 18 2 . .
3975 ld a,(de) ;1871 1a .
3976 cp '+' ;1872 fe 2b . +
3977 jr z,l1882h ;1874 28 0c ( .
3978 cp ')' ;1876 fe 29 . )
3979 ld hl,0 ;1878 21 00 00 ! . .
3980 jr z,l189ah ;187b 28 1d ( .
3981 cp '-' ;187d fe 2d . -
3982 jp nz,ERROR ;187f c2 07 01 . . .
3983 l1882h:
3984 push af ;1882 f5 .
3985 inc de ;1883 13 .
3986 call arg.imm_8bit ;1884 cd ff 17 . . .
3987 pop af ;1887 f1 .
3988 cp '+' ;1888 fe 2b . +
3989 jr z,l1894h ;188a 28 08 ( .
3990 ld b,h ;188c 44 D
3991 ld c,l ;188d 4d M
3992 ld hl,0 ;188e 21 00 00 ! . .
3993 and a ;1891 a7 .
3994 sbc hl,bc ;1892 ed 42 . B
3995 l1894h:
3996 ld a,(de) ;1894 1a .
3997 cp ')' ;1895 fe 29 . )
3998 jp nz,ERROR ;1897 c2 07 01 . . .
3999 l189ah:
4000 inc de ;189a 13 .
4001 pop bc ;189b c1 .
4002 ld c,l ;189c 4d M
4003 pop hl ;189d e1 .
4004 scf ;189e 37 7
4005 ret ;189f c9 .
4006 l18a0h:
4007 pop de ;18a0 d1 .
4008 l18a1h:
4009 pop bc ;18a1 c1 .
4010 pop hl ;18a2 e1 .
4011 and a ;18a3 a7 .
4012 ret ;18a4 c9 .
4013
4014 arg.cc_ZCPS:
4015 ld hl,t_tstfl_ZCPS ;18a5 21 dc 1f ! . .
4016 ld c,007h ;18a8 0e 07 . .
4017 jr l18b1h ;18aa 18 05 . .
4018
4019 arg.cc_ZC:
4020 ld hl,t_tstfl_ZC ;18ac 21 cd 1f ! . .
4021 ld c,003h ;18af 0e 03 . .
4022 l18b1h:
4023 push bc ;18b1 c5 .
4024 call sub_030ah ;18b2 cd 0a 03 . . .
4025 ld a,b ;18b5 78 x
4026 pop bc ;18b6 c1 .
4027 ret nc ;18b7 d0 .
4028 and c ;18b8 a1 .
4029 rlca ;18b9 07 .
4030 rlca ;18ba 07 .
4031 rlca ;18bb 07 .
4032 scf ;18bc 37 7
4033 ret ;18bd c9 .
4034
4035 assert_comma:
4036 call next_arg ;18be cd ca 02 . . .
4037 ret z ;18c1 c8 .
4038 l18c2h:
4039 jp ERROR ;18c2 c3 07 01 . . .
4040
4041 test_paren_close:
4042 ld a,(de) ;18c5 1a .
4043 cp ')' ;18c6 fe 29 . )
4044 jr nz,l18c2h ;18c8 20 f8 .
4045 inc de ;18ca 13 .
4046 ret ;18cb c9 .
4047
4048 cmd_L:
4049 ld hl,cmd_L ;18cd 21 cd 18 ! . .
4050 ld (cmd_rpt),hl ;18d0 22 68 00 " h .
4051 call expr ;18d3 cd be 03 . . .
4052 jr nc,l18dbh ;18d6 30 03 0 .
4053 ld hl,(last_L) ;18d8 2a f9 1f * . .
4054 l18dbh:
4055 push hl ;18db e5 .
4056 pop iy ;18dc fd e1 . .
4057 call next_arg ;18de cd ca 02 . . .
4058 call get_range ;18e1 cd 9a 03 . . .
4059 jr nc,l1905h ;18e4 30 1f 0 .
4060 call assert_eol ;18e6 cd d6 02 . . .
4061 ld b,16 ;18e9 06 10 . .
4062 l18ebh:
4063 push bc ;18eb c5 .
4064 push iy ;18ec fd e5 . .
4065 pop hl ;18ee e1 .
4066 push hl ;18ef e5 .
4067 call p_disas_line ;18f0 cd 2d 19 . - .
4068 call crlf ;18f3 cd a3 02 . . .
4069 pop iy ;18f6 fd e1 . .
4070 ld c,b ;18f8 48 H
4071 ld b,0 ;18f9 06 00 . .
4072 add iy,bc ;18fb fd 09 . .
4073 ld (last_L),iy ;18fd fd 22 f9 1f . " . .
4074 pop bc ;1901 c1 .
4075 djnz l18ebh ;1902 10 e7 . .
4076 ret ;1904 c9 .
4077 l1905h:
4078 call assert_eol ;1905 cd d6 02 . . .
4079 ld h,b ;1908 60 `
4080 ld l,c ;1909 69 i
4081 ld a,b ;190a 78 x
4082 or c ;190b b1 .
4083 jr nz,l190fh ;190c 20 01 .
4084 dec hl ;190e 2b +
4085 l190fh:
4086 push hl ;190f e5 .
4087 push iy ;1910 fd e5 . .
4088 pop hl ;1912 e1 .
4089 push hl ;1913 e5 .
4090 call p_disas_line ;1914 cd 2d 19 . - .
4091 call crlf ;1917 cd a3 02 . . .
4092 pop iy ;191a fd e1 . .
4093 ld e,b ;191c 58 X
4094 ld d,000h ;191d 16 00 . .
4095 add iy,de ;191f fd 19 . .
4096 ld (last_L),iy ;1921 fd 22 f9 1f . " . .
4097 pop hl ;1925 e1 .
4098 and a ;1926 a7 .
4099 sbc hl,de ;1927 ed 52 . R
4100 ret z ;1929 c8 .
4101 ret c ;192a d8 .
4102 jr l190fh ;192b 18 e2 . .
4103
4104 p_disas_line:
4105 call out.hl.@ ;192d cd a4 01 . . .
4106 call z,outbl ;1930 cc 9f 02 . . .
4107 call outbl ;1933 cd 9f 02 . . .
4108 sub a ;1936 97 .
4109 ld (con_col),a ;1937 32 72 02 2 r .
4110 call p_disas_instr ;193a cd 65 19 . e .
4111 and a ;193d a7 .
4112 ret z ;193e c8 .
4113
4114 l193fh:
4115 call outbl ;193f cd 9f 02 . . .
4116 ld a,(con_col) ;1942 3a 72 02 : r .
4117 cp 16 ;1945 fe 10 . .
4118 jr c,l193fh ;1947 38 f6 8 .
4119
4120 p_offset:
4121 ld de,(offs.@) ;1949 ed 5b 64 00 . [ d .
4122 ld a,d ;194d 7a z
4123 or e ;194e b3 .
4124 ret z ;194f c8 .
4125 call p_char_lparen ;1952 cd 5d 02 . ] .
4126 ld a,'@' ;1955 3e 40 > @
4127 call outchar ;1957 cd 5d 02 . ] .
4128 and a ;195a a7 .
4129 sbc hl,de ;195b ed 52 . R
4130 call out_hl ;195d cd 13 02 . . .
4131 jp out_rparen ;1962 c3 5d 02 . ] .
4132
4133 p_disas_instr:
4134 sub a ;1965 97 .
4135 ld (l1ffdh),a ;1966 32 fd 1f 2 . .
4136 call disas_get_instrlen ;1969 cd 8c 19 . . .
4137 jr nc,l197fh ;196c 30 11 0 .
4138 push bc ;196e c5 .
4139 call p_mnemonic ;196f cd b9 1e . . .
4140 ex de,hl ;1972 eb .
4141 call call_hl ;1973 cd c1 19 . . .
4142 pop bc ;1976 c1 .
4143 ld a,(l1ffdh) ;1977 3a fd 1f : . .
4144 ld hl,(l1ffbh) ;197a 2a fb 1f * . .
4145 scf ;197d 37 7
4146 ret ;197e c9 .
4147
4148 l197fh:
4149 ld hl,msg_undef_opcode ;197f 21 89 19 ! . .
4150 call pstr ;1982 cd 88 02 . . .
4151 ld b,001h ;1985 06 01 . .
4152 sub a ;1987 97 .
4153 ret ;1988 c9 .
4154
4155 msg_undef_opcode:
4156 DC '???'
4157
4158 disas_get_instrlen:
4159 sub a ;198c 97 .
4160 ld (isprefix_ixiy),a ;198d 32 f8 1f 2 . .
4161 ld a,(iy+000h) ;1990 fd 7e 00 . ~ .
4162 cp 0edh ;1993 fe ed . .
4163 jp z,disas_pfx.ED ;1995 ca 19 1a . . .
4164 cp 0ddh ;1998 fe dd . .
4165 jr z,l19abh ;199a 28 0f ( .
4166 cp 0fdh ;199c fe fd . .
4167 jr z,l19afh ;199e 28 0f ( .
4168 sub_19a0h:
4169 ld a,(iy+000h) ;19a0 fd 7e 00 . ~ .
4170 cp 0cbh ;19a3 fe cb . .
4171 jp z,disas_pfx.CB ;19a5 ca 36 1a . 6 .
4172 jp disas_nopfx ;19a8 c3 4d 1a . M .
4173 l19abh:
4174 ld a,1 ;19ab 3e 01 > .
4175 jr l19b1h ;19ad 18 02 . .
4176 l19afh:
4177 ld a,2 ;19af 3e 02 > .
4178 l19b1h:
4179 ld (isprefix_ixiy),a ;19b1 32 f8 1f 2 . .
4180 call disas_pfx.DDFD ;19b4 cd c2 19 . . .
4181 ret nc ;19b7 d0 .
4182 push bc ;19b8 c5 .
4183 call sub_19a0h ;19b9 cd a0 19 . . .
4184 pop af ;19bc f1 .
4185 add a,b ;19bd 80 .
4186 ld b,a ;19be 47 G
4187 scf ;19bf 37 7
4188 ret ;19c0 c9 .
4189
4190 disas_pfx.DDFD:
4191 inc iy ;19c2 fd 23 . #
4192 ld hl,b_19ef_start ;19c4 21 ef 19 ! . .
4193 call test_DDFD ;19c7 cd 8c 1a . . .
4194 ld b,002h ;19ca 06 02 . .
4195 ret c ;19cc d8 .
4196 ld hl,l1a0ah ;19cd 21 0a 1a ! . .
4197 call test_DDFD ;19d0 cd 8c 1a . . .
4198 ld b,001h ;19d3 06 01 . .
4199 ret c ;19d5 d8 .
4200 ld a,(iy+000h) ;19d6 fd 7e 00 . ~ .
4201 cp 0cbh ;19d9 fe cb . .
4202 jr nz,l19edh ;19db 20 10 .
4203 ld a,(iy+002h) ;19dd fd 7e 02 . ~ .
4204 cp 036h ;19e0 fe 36 . 6
4205 ret z ;19e2 c8 .
4206 and 007h ;19e3 e6 07 . .
4207 cp 006h ;19e5 fe 06 . .
4208 jr nz,l19edh ;19e7 20 04 .
4209 ld b,002h ;19e9 06 02 . .
4210 scf ;19eb 37 7
4211 ret ;19ec c9 .
4212 l19edh:
4213 and a ;19ed a7 .
4214 ret ;19ee c9 .
4215
4216 ; DD/FD 3 byte (ix+d)/(iy+d)
4217 b_19ef_start:
4218 db 034h ;19ef 34 4
4219 db 035h ;19f0 35 5
4220 db 036h ;19f1 36 6
4221 db 046h ;19f2 46 F
4222 db 04eh ;19f3 4e N
4223 db 056h ;19f4 56 V
4224 db 05eh ;19f5 5e ^
4225 db 066h ;19f6 66 f
4226 db 06eh ;19f7 6e n
4227 db 070h ;19f8 70 p
4228 db 071h ;19f9 71 q
4229 db 072h ;19fa 72 r
4230 db 073h ;19fb 73 s
4231 db 074h ;19fc 74 t
4232 db 075h ;19fd 75 u
4233 db 077h ;19ff 77 w
4234 db 07eh ;1a00 7e ~
4235 db 086h ;1a01 86 .
4236 db 08eh ;1a02 8e .
4237 db 096h ;1a03 96 .
4238 db 09eh ;1a04 9e .
4239 db 0a6h ;1a05 a6 .
4240 db 0aeh ;1a06 ae .
4241 db 0b6h ;1a07 b6 .
4242 db 0beh ;1a08 be .
4243 db 0 ;1a09 00 .
4244
4245 ; DD/FD 2 byte
4246 l1a0ah:
4247 db 009h ;1a0a 09 .
4248 db 019h ;1a0b 19 .
4249 db 021h ;1a0c 21 !
4250 db 022h ;1a0d 22 "
4251 db 023h ;1a0e 23 #
4252 db 029h ;1a0f 29 )
4253 db 02ah ;1a10 2a *
4254 db 02bh ;1a11 2b +
4255 db 039h ;1a12 39 9
4256 db 0e1h ;1a13 e1 .
4257 db 0e3h ;1a14 e3 .
4258 db 0e5h ;1a15 e5 .
4259 db 0e9h ;1a16 e9 .
4260 db 0f9h ;1a17 f9 .
4261 db 0 ;1a18 00 .
4262
4263 disas_pfx.ED:
4264 inc iy ;1a19 fd 23 . #
4265 ld hl,b_1bc9_start ;1a1b 21 c9 1b ! . .
4266 call sub_1a72h ;1a1e cd 72 1a . r .
4267 ld b,2 ;1a21 06 02 . .
4268 ret c ;1a23 d8 .
4269 ld hl,b_1bf4_start ;1a24 21 f4 1b ! . .
4270 call lookup_opc ;1a27 cd 97 1a . . .
4271 ld b,2 ;1a2a 06 02 . .
4272 ret c ;1a2c d8 .
4273
4274 ld hl,l228bh
4275 call lookup_opc
4276 ld b,3
4277 ret c
4278 ld hl,b_1c40_start ;1a2d 21 40 1c ! @ .
4279 call lookup_opc ;1a30 cd 97 1a . . .
4280 ld b,4 ;1a33 06 04 . .
4281 ret ;1a35 c9 .
4282
4283 disas_pfx.CB:
4284 push iy ;1a36 fd e5 . .
4285 inc iy ;1a38 fd 23 . #
4286 ld a,(isprefix_ixiy) ;1a3a 3a f8 1f : . .
4287 and a ;1a3d a7 .
4288 jr z,l1a42h ;1a3e 28 02 ( .
4289 inc iy ;1a40 fd 23 . #
4290 l1a42h:
4291 ld hl,b_1c55_start ;1a42 21 55 1c ! U .
4292 call lookup_opc ;1a45 cd 97 1a . . .
4293 pop iy ;1a48 fd e1 . .
4294 ld b,2 ;1a4a 06 02 . .
4295 ret ;1a4c c9 .
4296
4297 disas_nopfx:
4298 ld hl,b_1b54_start ;1a4d 21 54 1b ! T .
4299 call lookup_opc ;1a50 cd 97 1a . . .
4300 ld b,2 ;1a53 06 02 . .
4301 ret c ;1a55 d8 .
4302 ld hl,b_1ab6_start ;1a56 21 b6 1a ! . .
4303 call sub_1a72h ;1a59 cd 72 1a . r .
4304 ld b,1 ;1a5c 06 01 . .
4305 ret c ;1a5e d8 .
4306 ld hl,b_1ad1_start ;1a5f 21 d1 1a ! . .
4307 call lookup_opc ;1a62 cd 97 1a . . .
4308 ld b,1 ;1a65 06 01 . .
4309 ret c ;1a67 d8 .
4310 ld hl,b_1b9b_start ;1a68 21 9b 1b ! . .
4311 call lookup_opc ;1a6b cd 97 1a . . .
4312 ret nc ;1a6e d0 .
4313 ld b,3 ;1a6f 06 03 . .
4314 ret ;1a71 c9 .
4315
4316 sub_1a72h:
4317 ld a,(hl) ;1a72 7e ~
4318 cp 0ffh ;1a73 fe ff . .
4319 ret z ;1a75 c8 .
4320 cp (iy+000h) ;1a76 fd be 00 . . .
4321 jr z,l1a7fh ;1a79 28 04 ( .
4322 inc hl ;1a7b 23 #
4323 inc hl ;1a7c 23 #
4324 jr sub_1a72h ;1a7d 18 f3 . .
4325 l1a7fh:
4326 inc hl ;1a7f 23 #
4327 ld c,(hl) ;1a80 4e N
4328 ld hl,t_MNEMONICS ;1a81 21 c6 1e ! . .
4329 ld b,0 ;1a84 06 00 . .
4330 add hl,bc ;1a86 09 .
4331 ld de,l1c97h ;1a87 11 97 1c . . .
4332 scf ;1a8a 37 7
4333 ret ;1a8b c9 .
4334
4335 test_DDFD:
4336 ld a,(hl) ;1a8c 7e ~
4337 and a ;1a8d a7 .
4338 ret z ;1a8e c8 .
4339 inc hl ;1a8f 23 #
4340 cp (iy+000h) ;1a90 fd be 00 . . .
4341 jr nz,test_DDFD ;1a93 20 f7 .
4342 scf ;1a95 37 7
4343 ret ;1a96 c9 .
4344
4345 lookup_opc:
4346 ld a,(iy+000h) ;1a97 fd 7e 00 . ~ .
4347 and (hl) ;1a9a a6 .
4348 inc hl ;1a9b 23 #
4349 cp (hl) ;1a9c be .
4350 jr z,l1aa8h ;1a9d 28 09 ( .
4351 inc hl ;1a9f 23 #
4352 inc hl ;1aa0 23 #
4353 inc hl ;1aa1 23 #
4354 inc hl ;1aa2 23 #
4355 ld a,(hl) ;1aa3 7e ~
4356 and a ;1aa4 a7 .
4357 jr nz,lookup_opc ;1aa5 20 f0 .
4358 ret ;1aa7 c9 .
4359 l1aa8h:
4360 inc hl ;1aa8 23 #
4361 ld c,(hl) ;1aa9 4e N
4362 inc hl ;1aaa 23 #
4363 ld e,(hl) ;1aab 5e ^
4364 inc hl ;1aac 23 #
4365 ld d,(hl) ;1aad 56 V
4366 ld hl,t_MNEMONICS ;1aae 21 c6 1e ! . .
4367 ld b,000h ;1ab1 06 00 . .
4368 add hl,bc ;1ab3 09 .
4369 scf ;1ab4 37 7
4370 ret ;1ab5 c9 .
4371
4372 ; 1 byte opcodes (no parameters)
4373 ; Format: db opcode, t_MNEMONICS-index
4374 b_1ab6_start:
4375 db 076h,039h ;halt
4376 db 0d9h,036h ;exx
4377 db 0f3h,02ch ;di
4378 db 0fbh,032h ;ei
4379 db 000h,069h ;nop
4380 db 007h,09eh ;rlca
4381 db 00fh,0adh ;rrca
4382 db 017h,098h ;rla
4383 db 01fh,0a7h ;rra
4384 db 027h,026h ;daa
4385 db 02fh,023h ;cpl
4386 db 037h,0bah ;scf
4387 db 03fh,010h ;ccf
4388 db 0ffh
4389
4390
4391 ; 1 byte opcodes
4392 ; Format: db mask, match, t_MNEMONICS-index
4393 ; dw argument formating fuction
4394 b_1ad1_start:
4395 db 0c0h,040h,056h ;ld r,r
4396 dw p_arg_r_r
4397 db 0f8h,080h,003h ;add a,r
4398 dw p_arg_a_r
4399 db 0f8h,088h,000h ;adc a,r
4400 dw p_arg_a_r
4401 db 0f8h,090h,0c9h ;sub r
4402 dw p_arg_rs
4403 db 0f8h,098h,0b7h ;sbc a,r
4404 dw p_arg_a_r
4405 db 0f8h,0a0h,006h ;and r
4406 dw p_arg_rs
4407 db 0f8h,0a8h,0cch ;xor r
4408 dw p_arg_rs
4409 db 0f8h,0b0h,06ch ;or r
4410 dw p_arg_rs
4411 db 0f8h,0b8h,013h ;cp r
4412 dw p_arg_rs
4413 db 0c7h,0c0h,08bh ;ret cc
4414 dw p_arg_cc
4415 db 0c7h,0c7h,0b4h ;rst
4416 dw l1c98h
4417 db 0ffh,0c9h,08bh ;ret
4418 dw l1c97h
4419 db 0cfh,0c1h,081h ;pop rr
4420 dw p_arg_zz
4421 db 0cfh,0c5h,084h ;push rr
4422 dw p_arg_zz
4423 db 0ffh,0e3h,034h ;ex (sp),hl
4424 dw l1ca0h
4425 db 0ffh,0e9h,052h ;jp (hl)
4426 dw l1caeh
4427 db 0ffh,0ebh,034h ;ex de,hl
4428 dw p_arg_ex_dehl
4429 db 0ffh,0f9h,056h ;ld sp,hl
4430 dw l1cc1h
4431 db 0cfh,003h,041h ;inc rr
4432 dw p_arg_ww
4433 db 0cfh,00bh,029h ;dec rr
4434 dw p_arg_ww
4435 db 0c7h,004h,041h ;inc r
4436 dw p_arg_r
4437 db 0c7h,005h,029h ;dec r
4438 dw p_arg_r
4439 db 0ffh,008h,034h ;ex af,af'
4440 dw p_arg_ex_afaf
4441 db 0cfh,009h,003h ;add hl,rr
4442 dw l1cd3h
4443 db 0efh,002h,056h ;ld (rr),a ;rr=bc,de
4444 dw l1cdch
4445 db 0efh,00ah,056h ;ld a,(rr) ;rr=bc,de
4446 dw l1ce5h
4447 db 0
4448
4449 ; 2 byte opdodes
4450 b_1b54_start:
4451 db 0c7h,006h,056h ;ld r,nn
4452 dw l1cfah
4453 db 0ffh,0c6h,003h ;add a,nn
4454 dw l1cf5h
4455 db 0ffh,0ceh,000h ;adc a,nn
4456 dw l1cf5h
4457 db 0ffh,0d6h,0c9h ;sub a,nn
4458 dw l1d09h
4459 db 0ffh,0deh,0b7h ;sbc a,nn
4460 dw l1cf5h
4461 db 0ffh,0e6h,006h ;and a,nn
4462 dw l1d09h
4463 db 0ffh,0eeh,0cch ;xor nn
4464 dw l1d09h
4465 db 0ffh,0f6h,06ch ;or nn
4466 dw l1d09h
4467 db 0ffh,0feh,013h ;cp a,nn
4468 dw l1d09h
4469 db 0ffh,010h,02eh ;djnz
4470 dw l1d1ah
4471 db 0ffh,018h,054h ;jr
4472 dw l1d1ah
4473 db 0e7h,020h,054h ;jr,cc
4474 dw l1d0fh
4475 db 0ffh,0d3h,076h ;out (nn),a
4476 dw l1d37h
4477 db 0ffh,0dbh,03fh ;in a,(nn)
4478 dw l1d29h
4479 db 0
4480
4481 ; 3 byte opcodes
4482 b_1b9b_start:
4483 db 0c7h,0c2h,052h ;jp cc,mn
4484 dw p_arg_cc_mn
4485 db 0c7h,0c4h,00ch ;call cc,mn
4486 dw p_arg_cc_mn
4487 db 0cfh,001h,056h ;ld ww,mn
4488 dw p_arg_ww_mn
4489 db 0ffh,0c3h,052h ;jp mn
4490 dw p_arg_mn
4491 db 0ffh,0cdh,00ch ;call mn
4492 dw p_arg_mn
4493 db 0ffh,022h,056h ;ld (mn),hl
4494 dw p_arg_addr_hl
4495 db 0ffh,02ah,056h ;ld hl,(mn)
4496 dw p_arg_hl_addr
4497 db 0ffh,032h,056h ;ld (mn),a
4498 dw p_arg_addr_a
4499 db 0ffh,03ah,056h ;ld a,(mn)
4500 dw p_arg_a_addr
4501 db 0
4502
4503 ; Prefix ED + 1 byte opcode, no arguments
4504 ; Format: opcode, t_MNEMONICS index
4505 b_1bc9_start:
4506 db 044h,066h ;neg
4507 db 045h,092h ;retn
4508 db 04dh,08eh ;reti
4509 db 067h,0b1h ;rrd
4510 db 06fh,0a2h ;rld
4511 db 0a0h,05fh ;ldi
4512 db 0a1h,01ch ;cpi
4513 db 0a2h,04bh ;ini
4514 db 0a3h,07dh ;outi
4515 db 0a8h,058h ;ldd
4516 db 0a9h,015h ;cpd
4517 db 0aah,044h ;ind
4518 db 0abh,079h ;outd
4519 db 0b0h,062h ;ldir
4520 db 0b1h,01fh ;cpir
4521 db 0b2h,04eh ;inir
4522 db 0b3h,072h ;otir
4523 db 0b8h,05bh ;lddr
4524 db 0b9h,018h ;cpdr
4525 db 0bah,047h ;indr
4526 db 0bbh,06eh ;otdr
4527 db 08bh,0d5h ;otdm
4528 db 09bh,0d9h ;otdmr
4529 db 083h,0deh ;otim
4530 db 093h,0e2h ;otimr
4531 db 076h,0ebh ;slp
4532 db 0ffh ;<end mark>
4533
4534 b_1bf4_start:
4535 db 0e7h,040h,03fh ;in r,(c) ;r=b,c,d,e
4536 dw p_arg_in_c ;
4537 db 0f7h,060h,03fh ;in r,(c) ;r=h,l
4538 dw p_arg_in_c ;
4539 db 0ffh,078h,03fh ;in r,(c) ;r=a
4540 dw p_arg_in_c ;
4541 db 0e7h,041h,076h ;out (c),r ;r=b,c,d,e
4542 dw p_arg_out_c ;
4543 db 0f7h,061h,076h ;out (c),r ;r=h,l
4544 dw p_arg_out_c ;
4545 db 0ffh,079h,076h ;out (c),r ;r=a
4546 dw p_arg_out_c ;
4547 db 0cfh,042h,0b7h ;sbc hl,rr
4548 dw l1dcah ;
4549 db 0cfh,04ah,000h ;adc hl,rr
4550 dw l1dcah ;
4551 db 0ffh,046h,03dh ;im 0
4552 dw l1d85h ;
4553 db 0ffh,056h,03dh ;im 1
4554 dw l1d89h ;
4555 db 0ffh,05eh,03dh ;im 2
4556 dw l1d8dh ;
4557 db 0ffh,047h,056h ;ld i,a
4558 dw l1d92h ;
4559 db 0ffh,057h,056h ;ld a,i
4560 dw l1d97h ;
4561 db 0ffh,04fh,056h ;ld r,a
4562 dw l1d9ch ;
4563 db 0ffh,05fh,056h ;ld a,r
4564 dw l1da1h
4565 db 0cfh,04ch,0d2h ;mlt rr
4566 dw p_arg_ww
4567 db 0c7h,004h,0eeh ;tst r
4568 dw p_arg_r
4569 db 0
4570
4571 l228bh:
4572 db 0e7h,000h,0cfh ;in0 r,(m) ;r=b,c,d,e
4573 dw p_arg_r_m
4574 db 0f7h,020h,0cfh ;in0 r,(m) ;r=h,l
4575 dw p_arg_r_m
4576 db 0ffh,038h,0cfh ;in0 a,(m)
4577 dw p_arg_r_m
4578 db 0e7h,001h,0e7h ;out0 (m),r ;r=b,c,d,e
4579 dw p_arg_m_r
4580 db 0f7h,021h,0e7h ;out0 (m),r ;r=h,l
4581 dw p_arg_m_r
4582 db 0ffh,039h,0e7h ;out0 (m),a
4583 dw p_arg_m_r
4584 db 0ffh,064h,0eeh ;tst m
4585 dw l1d09h
4586 db 0ffh,074h,0f1h ;tstio m
4587 dw l1d09h
4588 db 0
4589
4590 b_1c40_start:
4591 db 0efh,043h,056h ;ld (mn),ww ;ww=bc,de
4592 dw p_arg_addr_ww
4593 db 0ffh,073h,056h ;ld (mn),sp
4594 dw p_arg_addr_ww
4595 db 0efh,04bh,056h ;ld ww,(mn) ;ww=bc,de
4596 dw p_arg_ww_addr
4597 db 0ffh,07bh,056h ;ld sp,(mn)
4598 dw p_arg_ww_addr
4599 db 0
4600
4601 ; CB
4602 b_1c55_start:
4603 db 0f8h,000h,09bh ;rlc g
4604 dw l1e03h
4605 db 0f8h,008h,0aah ;rrc g
4606 dw l1e03h
4607 db 0f8h,010h,096h ;rl g
4608 dw l1e03h
4609 db 0f8h,018h,0a5h ;rr g
4610 dw l1e03h
4611 db 0f8h,020h,0c0h ;sla g
4612 dw l1e03h
4613 db 0f8h,028h,0c3h ;sra g
4614 dw l1e03h
4615 db 0f8h,038h,0c6h ;srl g
4616 dw l1e03h
4617 db 0c0h,040h,009h ;bit b,g
4618 dw p_arg_bitop
4619 db 0c0h,080h,088h ;res b,g
4620 dw p_arg_bitop
4621 db 0c0h,0c0h,0bdh ;set b,g
4622 dw p_arg_bitop
4623 db 0
4624
4625 p_arg_r_r:
4626 call p_arg_r ;1c88 cd 28 1e . ( .
4627 call p_char_comma ;1c8b cd b4 1e . . .
4628 jp p_arg_rs ;1c8e c3 30 1e . 0 .
4629 p_arg_a_r:
4630 call p_A_comma ;1c91 cd b1 1e . . .
4631 jp p_arg_rs ;1c94 c3 30 1e . 0 .
4632 l1c97h:
4633 ret ;1c97 c9 .
4634
4635 ;-----------------------------------------------------
4636 p_arg_r_m:
4637 call p_arg_r
4638 call p_char_comma
4639 jp sub_1d2ch
4640
4641 p_arg_m_r:
4642 call sub_1d2ch
4643 call p_char_comma
4644 jp p_arg_r
4645 ;-----------------------------------------------------
4646
4647 l1c98h:
4648 ld a,(iy+000h) ;1c98 fd 7e 00 . ~ .
4649 and 038h ;1c9b e6 38 . 8
4650 jp out_hex ;1c9d c3 18 02 . . .
4651
4652 l1ca0h:
4653 ld hl,b_1ca9_start ;1ca0 21 a9 1c ! . .
4654 call pstr ;1ca3 cd 88 02 . . .
4655 jp p_arg_hlixiy ;1ca6 c3 7e 1e . ~ .
4656
4657 b_1ca9_start:
4658 DC '(SP),'
4659
4660 l1caeh:
4661 call p_char_lparen ;1cb0 cd 5d 02 . ] .
4662 call p_arg_hlixiy ;1cb3 cd 7e 1e . ~ .
4663 jr out_rparen
4664
4665 p_arg_ex_dehl:
4666 ld hl,l1773h ;1cbb 21 73 17 ! s .
4667 jp pstr ;1cbe c3 88 02 . . .
4668
4669 l1cc1h:
4670 ld hl,b_1cca_start ;1cc1 21 ca 1c ! . .
4671 call pstr ;1cc4 cd 88 02 . . .
4672 jp p_arg_hlixiy ;1cc7 c3 7e 1e . ~ .
4673
4674 b_1cca_start:
4675 DC 'SP,'
4676
4677 p_arg_ex_afaf:
4678 ld hl,b_176d_start ;1ccd 21 6d 17 ! m .
4679 jp pstr ;1cd0 c3 88 02 . . .
4680
4681 l1cd3h:
4682 call p_arg_hlixiy ;1cd3 cd 7e 1e . ~ .
4683 call p_char_comma ;1cd6 cd b4 1e . . .
4684 jp p_arg_ww ;1cd9 c3 8b 1e . . .
4685 l1cdch:
4686 call sub_1ce8h ;1cdc cd e8 1c . . .
4687 call p_char_comma ;1cdf cd b4 1e . . .
4688 jp p_char_A ;1ce2 c3 3d 1d . = .
4689
4690 l1ce5h:
4691 call p_A_comma ;1ce5 cd b1 1e . . .
4692 sub_1ce8h:
4693 call p_char_lparen ;1cea cd 5d 02 . ] .
4694 call p_arg_ww ;1ced cd 8b 1e . . .
4695 out_rparen:
4696 jp p_char_rparen ;1cf2 c3 5d 02 . ] .
4697
4698 l1cf5h:
4699 call p_A_comma ;1cf5 cd b1 1e . . .
4700 jr l1d09h ;1cf8 18 0f . .
4701 l1cfah:
4702 call p_arg_r ;1cfa cd 28 1e . ( .
4703 call p_char_comma ;1cfd cd b4 1e . . .
4704 ld a,(isprefix_ixiy) ;1d00 3a f8 1f : . .
4705 and a ;1d03 a7 .
4706 ld a,(iy+002h) ;1d04 fd 7e 02 . ~ .
4707 jr nz,l1d0ch ;1d07 20 03 .
4708 l1d09h:
4709 ld a,(iy+001h) ;1d09 fd 7e 01 . ~ .
4710 l1d0ch:
4711 jp out_hex ;1d0c c3 18 02 . . .
4712
4713 l1d0fh:
4714 ld a,(iy+000h) ;1d0f fd 7e 00 . ~ .
4715 and 018h ;1d12 e6 18 . .
4716 call p_arg_cc0 ;1d14 cd a0 1e . . .
4717 call p_char_comma ;1d17 cd b4 1e . . .
4718 l1d1ah:
4719 ld c,(iy+001h) ;1d1a fd 4e 01 . N .
4720 ld a,c ;1d1d 79 y
4721 rla ;1d1e 17 .
4722 sbc a,a ;1d1f 9f .
4723 ld b,a ;1d20 47 G
4724 push iy ;1d21 fd e5 . .
4725 pop hl ;1d23 e1 .
4726 add hl,bc ;1d24 09 .
4727 inc hl ;1d25 23 #
4728 inc hl ;1d26 23 #
4729 jr l1d4eh ;1d27 18 25 . %
4730 l1d29h:
4731 call p_A_comma ;1d29 cd b1 1e . . .
4732 sub_1d2ch:
4733 call p_char_lparen ;1d2e cd 5d 02 . ] .
4734 ld a,(iy+001h) ;1d31 fd 7e 01 . ~ .
4735 jp l1e6bh ;1d34 c3 6b 1e . k .
4736 l1d37h:
4737 call sub_1d2ch ;1d37 cd 2c 1d . , .
4738 jr p_char_comma_A
4739
4740 p_arg_cc_mn:
4741 call p_arg_cc ;1d42 cd 9d 1e . . .
4742 call p_char_comma ;1d45 cd b4 1e . . .
4743 p_arg_mn:
4744 ld l,(iy+001h) ;1d48 fd 6e 01 . n .
4745 ld h,(iy+002h) ;1d4b fd 66 02 . f .
4746 l1d4eh:
4747 ld a,002h ;1d4e 3e 02 > .
4748 sub_1d50h:
4749 ld (l1ffdh),a ;1d50 32 fd 1f 2 . .
4750 ld (l1ffbh),hl ;1d53 22 fb 1f " . .
4751 call out_hl ;1d56 cd 13 02 . . .
4752 ret ;1d59 c9 .
4753 p_arg_ww_mn:
4754 call p_arg_ww ;1d5a cd 8b 1e . . .
4755 call p_char_comma ;1d5d cd b4 1e . . .
4756 jr p_arg_mn ;1d60 18 e6 . .
4757
4758 p_arg_addr_hl:
4759 call sub_1e13h ;1d62 cd 13 1e . . .
4760 call p_char_comma ;1d65 cd b4 1e . . .
4761 jp p_arg_hlixiy ;1d68 c3 7e 1e . ~ .
4762 p_arg_hl_addr:
4763 call p_arg_hlixiy ;1d6b cd 7e 1e . ~ .
4764 call p_char_comma ;1d6e cd b4 1e . . .
4765 jp sub_1e13h ;1d71 c3 13 1e . . .
4766
4767 p_arg_addr_a:
4768 call sub_1e13h ;1d74 cd 13 1e . . .
4769 p_char_comma_A:
4770 call p_char_comma ;1d77 cd b4 1e . . .
4771 p_char_A:
4772 ld a,'A' ;1d7a 3e 41 > A
4773 jr outchar1 ;1d87 18 06 . .
4774 p_arg_a_addr:
4775 call p_A_comma ;1d7f cd b1 1e . . .
4776 jp sub_1e13h ;1d82 c3 13 1e . . .
4777 l1d85h:
4778 ld a,'0' ;1d85 3e 30 > 0
4779 jr outchar1 ;1d87 18 06 . .
4780 l1d89h:
4781 ld a,'1' ;1d89 3e 31 > 1
4782 jr outchar1 ;1d8b 18 02 . .
4783 l1d8dh:
4784 ld a,'2' ;1d8d 3e 32 > 2
4785 jr outchar1 ;1d8b 18 02 . .
4786
4787 p_A_comma:
4788 call p_char_A ;1eb1 cd 3d 1d . = .
4789 p_char_comma:
4790 ld a,',' ;1eb4 3e 2c > ,
4791 outchar1:
4792 jp outchar ;1eb6 c3 5d 02 . ] .
4793
4794 l1d92h:
4795 ld hl,b_1da7_start ;1d92 21 a7 1d ! . .
4796 jr l1da4h ;1d95 18 0d . .
4797 l1d97h:
4798 ld hl,l1daah ;1d97 21 aa 1d ! . .
4799 jr l1da4h ;1d9a 18 08 . .
4800 l1d9ch:
4801 ld hl,l1dadh ;1d9c 21 ad 1d ! . .
4802 jr l1da4h ;1d9f 18 03 . .
4803 l1da1h:
4804 ld hl,l1db0h ;1da1 21 b0 1d ! . .
4805 l1da4h:
4806 jp pstr ;1da4 c3 88 02 . . .
4807
4808 b_1da7_start:
4809 DC 'I,A'
4810 l1daah:
4811 DC 'A,I'
4812 l1dadh:
4813 DC 'R,A'
4814 l1db0h:
4815 DC 'A,R'
4816
4817 p_arg_in_c:
4818 call p_arg_r ;1db3 cd 28 1e . ( .
4819 call p_char_comma ;1db6 cd b4 1e . . .
4820 ld hl,t__C_ ;1db9 21 f4 1f ! . .
4821 jp pstr ;1dbc c3 88 02 . . .
4822
4823 p_arg_out_c:
4824 ld hl,t__C_ ;1dbf 21 f4 1f ! . .
4825 call pstr ;1dc2 cd 88 02 . . .
4826 call p_char_comma ;1dc5 cd b4 1e . . .
4827 jr p_arg_r ;1dc8 18 5e . ^
4828
4829 l1dcah:
4830 call p_arg_hlixiy ;1dca cd 7e 1e . ~ .
4831 call p_char_comma ;1dcd cd b4 1e . . .
4832 jp p_arg_ww ;1dd0 c3 8b 1e . . .
4833
4834 p_arg_addr_ww:
4835 call sub_1e13h ;1dd3 cd 13 1e . . .
4836 call p_char_comma ;1dd6 cd b4 1e . . .
4837 jp p_arg_ww ;1dd9 c3 8b 1e . . .
4838
4839 p_arg_ww_addr:
4840 call p_arg_ww ;1ddc cd 8b 1e . . .
4841 call p_char_comma ;1ddf cd b4 1e . . .
4842 jr sub_1e13h ;1de2 18 2f . /
4843
4844 p_arg_bitop:
4845 ld a,(isprefix_ixiy) ;1de4 3a f8 1f : . .
4846 and a ;1de7 a7 .
4847 jr nz,l1defh ;1de8 20 05 .
4848 ld a,(iy+001h) ;1dea fd 7e 01 . ~ .
4849 jr l1df2h ;1ded 18 03 . .
4850 l1defh:
4851 ld a,(iy+002h) ;1def fd 7e 02 . ~ .
4852 l1df2h:
4853 push af ;1df2 f5 .
4854 rra ;1df3 1f .
4855 rra ;1df4 1f .
4856 rra ;1df5 1f .
4857 and 007h ;1df6 e6 07 . .
4858 add a,'0' ;1df8 c6 30 . 0
4859 call outchar ;1dfa cd 5d 02 . ] .
4860 call p_char_comma ;1dfd cd b4 1e . . .
4861 pop af ;1e00 f1 .
4862 jr p_arg_r0 ;1e01 18 30 . 0
4863
4864 l1e03h:
4865 ld a,(isprefix_ixiy) ;1e03 3a f8 1f : . .
4866 and a ;1e06 a7 .
4867 jr nz,l1e0eh ;1e07 20 05 .
4868 ld a,(iy+001h) ;1e09 fd 7e 01 . ~ .
4869 jr l1e11h ;1e0c 18 03 . .
4870 l1e0eh:
4871 ld a,(iy+002h) ;1e0e fd 7e 02 . ~ .
4872 l1e11h:
4873 jr p_arg_r0 ;1e11 18 20 .
4874
4875 sub_1e13h:
4876 call p_char_lparen ;1e15 cd 5d 02 . ] .
4877 ld l,(iy+001h) ;1e18 fd 6e 01 . n .
4878 ld h,(iy+002h) ;1e1b fd 66 02 . f .
4879 ld a,001h ;1e1e 3e 01 > .
4880 call sub_1d50h ;1e20 cd 50 1d . P .
4881
4882 p_char_rparen:
4883 ld a,')' ;1e23 3e 29 > )
4884 jp outchar ;1e25 c3 5d 02 . ] .
4885
4886 p_arg_r:
4887 ld a,(iy+000h) ;1e28 fd 7e 00 . ~ .
4888 rra ;1e2b 1f .
4889 rra ;1e2c 1f .
4890 rra ;1e2d 1f .
4891 jr p_arg_r0 ;1e2e 18 03 . .
4892 p_arg_rs:
4893 ld a,(iy+000h) ;1e30 fd 7e 00 . ~ .
4894 p_arg_r0:
4895 and 007h ;1e33 e6 07 . .
4896 cp 006h ;1e35 fe 06 . .
4897 jr nz,p_arg_r1 ;1e37 20 3a :
4898 ld a,(isprefix_ixiy) ;1e39 3a f8 1f : . .
4899 and a ;1e3c a7 .
4900 ld a,006h ;1e3d 3e 06 > .
4901 jr z,p_arg_r1 ;1e3f 28 32 ( 2
4902 ld hl,b_1e78_start ;1e41 21 78 1e ! x .
4903 ld a,(isprefix_ixiy) ;1e44 3a f8 1f : . .
4904 dec a ;1e47 3d =
4905 jr z,l1e4dh ;1e48 28 03 ( .
4906 ld hl,l1e7bh ;1e4a 21 7b 1e ! { .
4907 l1e4dh:
4908 call pstr ;1e4d cd 88 02 . . .
4909 ld a,(iy+001h) ;1e50 fd 7e 01 . ~ .
4910 and a ;1e53 a7 .
4911 jp m,l1e61h ;1e54 fa 61 1e . a .
4912 ld a,'+' ;1e57 3e 2b > +
4913 call outchar ;1e59 cd 5d 02 . ] .
4914 ld a,(iy+001h) ;1e5c fd 7e 01 . ~ .
4915 jr l1e6bh ;1e5f 18 0a . .
4916 l1e61h:
4917 ld a,'-' ;1e61 3e 2d > -
4918 call outchar ;1e63 cd 5d 02 . ] .
4919 ld a,(iy+001h) ;1e66 fd 7e 01 . ~ .
4920 neg ;1e69 ed 44 . D
4921 l1e6bh:
4922 call out_hex ;1e6b cd 18 02 . . .
4923 jr p_char_rparen
4924
4925 p_arg_r1:
4926 ld hl,t_BCDEHL_HL_A ;1e73 21 96 1f ! . .
4927 jr p_arg ;1e76 18 32 . 2
4928
4929 b_1e78_start:
4930 DC '(IX'
4931 l1e7bh:
4932 DC '(IY'
4933
4934 p_arg_hlixiy:
4935 ld a,(isprefix_ixiy) ;1e7e 3a f8 1f : . .
4936 ld hl,t_HL.IX.IY ;1e81 21 c6 1f ! . .
4937 jr p_arg ;1e84 18 24 . $
4938 p_arg_zz:
4939 ld hl,t_BC.DE.HL.AF ;1e86 21 ab 1f ! . .
4940 jr l1e8eh ;1e89 18 03 . .
4941 p_arg_ww:
4942 ld hl,t_BC.DE.HL.SP ;1e8b 21 a2 1f ! . .
4943 l1e8eh:
4944 ld a,(iy+000h) ;1e8e fd 7e 00 . ~ .
4945 rra ;1e91 1f .
4946 rra ;1e92 1f .
4947 rra ;1e93 1f .
4948 rra ;1e94 1f .
4949 and 003h ;1e95 e6 03 . .
4950 cp 002h ;1e97 fe 02 . .
4951 jr z,p_arg_hlixiy ;1e99 28 e3 ( .
4952 jr p_arg ;1e9b 18 0d . .
4953
4954 p_arg_cc:
4955 ld a,(iy+000h) ;1e9d fd 7e 00 . ~ .
4956 p_arg_cc0:
4957 rra ;1ea0 1f .
4958 rra ;1ea1 1f .
4959 rra ;1ea2 1f .
4960 and 007h ;1ea3 e6 07 . .
4961 ld hl,t_tstfl_ZCPS ;1ea5 21 dc 1f ! . .
4962 p_arg:
4963 ld b,a ;1eaa 47 G
4964 call sel_dc_string ;1eab cd 3d 03 . = .
4965 jp pstr ;1eae c3 88 02 . . .
4966
4967 p_mnemonic:
4968 call pstr ;1eb9 cd 88 02 . . .
4969 l1ebch:
4970 call outbl ;1ebc cd 9f 02 . . .
4971 inc c ;1ebf 0c .
4972 ld a,c ;1ec0 79 y
4973 cp 5 ;1ec1 fe 05 . .
4974 jr c,l1ebch ;1ec3 20 f7 .
4975 ret ;1ec5 c9 .
4976
4977 t_MNEMONICS:
4978 DC 'ADC'
4979 DC 'ADD'
4980 DC 'AND'
4981 DC 'BIT'
4982 DC 'CALL'
4983 DC 'CCF'
4984 DC 'CP'
4985 DC 'CPD'
4986 DC 'CPDR'
4987 DC 'CPI'
4988 DC 'CPIR'
4989 DC 'CPL'
4990 DC 'DAA'
4991 DC 'DEC'
4992 DC 'DI'
4993 DC 'DJNZ'
4994 DC 'EI'
4995 DC 'EX'
4996 DC 'EXX'
4997 DC 'HALT'
4998 DC 'IM'
4999 DC 'IN'
5000 DC 'INC'
5001 DC 'IND'
5002 DC 'INDR'
5003 DC 'INI'
5004 DC 'INIR'
5005 DC 'JP'
5006 DC 'JR'
5007 DC 'LD'
5008 DC 'LDD'
5009 DC 'LDDR'
5010 DC 'LDI'
5011 DC 'LDIR'
5012 DC 'NEG'
5013 DC 'NOP'
5014 DC 'OR'
5015 DC 'OTDR'
5016 DC 'OTIR'
5017 DC 'OUT'
5018 DC 'OUTD'
5019 DC 'OUTI'
5020 DC 'POP'
5021 DC 'PUSH'
5022 DC 'RES'
5023 DC 'RET'
5024 DC 'RETI'
5025 DC 'RETN'
5026 DC 'RL'
5027 DC 'RLA'
5028 DC 'RLC'
5029 DC 'RLCA'
5030 DC 'RLD'
5031 DC 'RR'
5032 DC 'RRA'
5033 DC 'RRC'
5034 DC 'RRCA'
5035 DC 'RRD'
5036 DC 'RST'
5037 DC 'SBC'
5038 DC 'SCF'
5039 DC 'SET'
5040 DC 'SLA'
5041 DC 'SRA'
5042 DC 'SRL'
5043 DC 'SUB'
5044 DC 'XOR'
5045 DC 'IN0'
5046 DC 'MLT'
5047 DC 'OTDM'
5048 DC 'OTDMR'
5049 DC 'OTIM'
5050 DC 'OTIMR'
5051 DC 'OUT0'
5052 DC 'SLP'
5053 DC 'TST'
5054 DC 'TSTIO'
5055 DB 0
5056
5057 t_BCDEHL_HL_A:
5058 DC 'B'
5059 DC 'C'
5060 DC 'D'
5061 DC 'E'
5062 DC 'H'
5063 DC 'L'
5064 DC '(HL)'
5065 DC 'A'
5066 DB 0
5067 t_BC.DE.HL.SP:
5068 DC 'BC'
5069 DC 'DE'
5070 DC 'HL'
5071 DC 'SP'
5072 DB 0
5073 t_BC.DE.HL.AF:
5074 DC 'BC'
5075 DC 'DE'
5076 t_HL.AF:
5077 DC 'HL'
5078 DC 'AF'
5079 DB 0
5080 t_BC.DE.IY.SP:
5081 DC 'BC'
5082 DC 'DE'
5083 DC 'IY'
5084 DC 'SP'
5085 DB 0
5086 t_BC.DE.IX.SP:
5087 DC 'BC'
5088 DC 'DE'
5089 DC 'IX'
5090 DC 'SP'
5091 DB 0
5092 t_HL.IX.IY:
5093 DC 'HL'
5094 t_IX.IY:
5095 DC 'IX'
5096 DC 'IY'
5097 DB 0
5098 t_tstfl_ZC:
5099 DC 'NZ'
5100 DC 'Z'
5101 DC 'NC'
5102 DC 'C'
5103 DC 'NE'
5104 DC 'EQ'
5105 DC 'GE'
5106 DC 'LT'
5107 DB 0
5108 t_tstfl_ZCPS:
5109 DC 'NZ'
5110 DC 'Z'
5111 DC 'NC'
5112 DC 'C'
5113 DC 'PO'
5114 DC 'PE'
5115 DC 'P'
5116 DC 'M'
5117 DC 'NE'
5118 DC 'EQ'
5119 DC 'GE'
5120 DC 'LT'
5121 DC 'NV'
5122 DC 'V'
5123 DB 0
5124 t__C_:
5125 DC '(C)'
5126 DB 0
5127
5128 sub_1ffeh:
5129 ld hl,(REG.PC) ;1ffe 2a 60 00 * ` .
5130 ld a,h ;2001 7c |
5131 or l ;2002 b5 .
5132 jr z,l2037h ;2003 28 32 ( 2
5133 ld de,BDOS ;2005 11 05 00 . . .
5134 and a ;2008 a7 .
5135 sbc hl,de ;2009 ed 52 . R
5136 ld hl,l20edh ;200b 21 ed 20 ! .
5137 jr z,l2031h ;200e 28 21 ( !
5138 ld iy,(REG.PC) ;2010 fd 2a 60 00 . * ` .
5139 call disas_get_instrlen ;2014 cd 8c 19 . . .
5140 jp nc,ERROR ;2017 d2 07 01 . . .
5141 ld c,b ;201a 48 H
5142 ld b,000h ;201b 06 00 . .
5143 ld hl,(REG.PC) ;201d 2a 60 00 * ` .
5144 add hl,bc ;2020 09 .
5145 call sub_09cah ;2021 cd ca 09 . . .
5146 ld iy,(REG.PC) ;2024 fd 2a 60 00 . * ` .
5147 ld hl,b_2039_start ;2028 21 39 20 ! 9
5148 call lookup_opc ;202b cd 97 1a . . .
5149 ccf ;202e 3f ?
5150 ret c ;202f d8 .
5151 ex de,hl ;2030 eb .
5152 l2031h:
5153 call CALL_HL ;2031 cd 0f 01 . . .
5154 call c,sub_09cah ;2034 dc ca 09 . . .
5155 l2037h:
5156 scf ;2037 37 7
5157 ret ;2038 c9 .
5158
5159 b_2039_start:
5160 db 0ffh,0ddh,000h ;Prefix DD
5161 dw l20a7h
5162 db 0ffh,0fdh,000h ;Prefix FD
5163 dw l20ach
5164 db 0ffh,0edh,000h ;Prefix ED
5165 dw l20b8h
5166
5167 b_2048_start:
5168 db 0ffh,0cdh,000h ;call mn
5169 dw l2080h
5170 db 0ffh,0c3h,000h ;jp mn
5171 dw l208bh
5172 db 0ffh,0e9h,000h ;jp ()
5173 dw l20a2h
5174 db 0ffh,0c9h,000h ;ret
5175 dw l20dch
5176 db 0ffh,0cfh,000h ;rst 8
5177 dw l2115h
5178 db 0c7h,0c7h,000h ;
5179 dw l20f9h
5180 db 0c7h,0c4h,000h ;
5181 dw l2080h
5182 db 0f7h,010h,000h ;
5183 dw l2093h
5184 db 0e7h,020h,000h ;
5185 dw l2093h
5186 db 0c7h,0c2h,000h ;
5187 dw l208bh
5188 db 0c7h,0c0h,000h ;
5189 dw l20c5h
5190 db 0
5191
5192 l2080h:
5193 ld a,(b_21e2_start) ;2080 3a e2 21 : . !
5194 and a ;2083 a7 .
5195 jr nz,l208bh ;2084 20 05 .
5196 ld a,(trace_call_flag) ;2086 3a e3 21 : . !
5197 and a ;2089 a7 .
5198 ret nz ;208a c0 .
5199 l208bh:
5200 ld l,(iy+001h) ;208b fd 6e 01 . n .
5201 ld h,(iy+002h) ;208e fd 66 02 . f .
5202 scf ;2091 37 7
5203 ret ;2092 c9 .
5204 l2093h:
5205 ld c,(iy+001h) ;2093 fd 4e 01 . N .
5206 ld a,c ;2096 79 y
5207 rla ;2097 17 .
5208 sbc a,a ;2098 9f .
5209 ld b,a ;2099 47 G
5210 ld hl,(REG.PC) ;209a 2a 60 00 * ` .
5211 add hl,bc ;209d 09 .
5212 inc hl ;209e 23 #
5213 inc hl ;209f 23 #
5214 scf ;20a0 37 7
5215 ret ;20a1 c9 .
5216 l20a2h:
5217 ld hl,(reg.l) ;20a2 2a 5a 00 * Z .
5218 scf ;20a5 37 7
5219 ret ;20a6 c9 .
5220 l20a7h:
5221 ld hl,(reg.ix) ;20a7 2a 52 00 * R .
5222 jr l20afh ;20aa 18 03 . .
5223 l20ach:
5224 ld hl,(reg.iy) ;20ac 2a 50 00 * P .
5225 l20afh:
5226 ld a,(iy+001h) ;20af fd 7e 01 . ~ .
5227 cp 0e9h ;20b2 fe e9 . .
5228 scf ;20b4 37 7
5229 ret z ;20b5 c8 .
5230 and a ;20b6 a7 .
5231 ret ;20b7 c9 .
5232 l20b8h:
5233 ld a,(iy+001h) ;20b8 fd 7e 01 . ~ .
5234 cp 04dh ;20bb fe 4d . M
5235 jr z,l20dch ;20bd 28 1d ( .
5236 cp 045h ;20bf fe 45 . E
5237 jr z,l20dch ;20c1 28 19 ( .
5238 and a ;20c3 a7 .
5239 ret ;20c4 c9 .
5240 l20c5h:
5241 ld a,(iy+000h) ;20c5 fd 7e 00 . ~ .
5242 ld (l20d7h),a ;20c8 32 d7 20 2 .
5243 ld hl,(reg.f) ;20cb 2a 54 00 * T .
5244 push hl ;20ce e5 .
5245 pop af ;20cf f1 .
5246 call l20d7h ;20d0 cd d7 20 . .
5247 scf ;20d3 37 7
5248 jr c,l20dch ;20d4 38 06 8 .
5249 ret ;20d6 c9 .
5250 l20d7h:
5251 nop ;20d7 00 .
5252 and a ;20d8 a7 .
5253 pop hl ;20d9 e1 .
5254 inc hl ;20da 23 #
5255 jp (hl) ;20db e9 .
5256
5257 l20dch:
5258 ld a,(b_21e2_start) ;20dc 3a e2 21 : . !
5259 and a ;20df a7 .
5260 jr nz,l20edh ;20e0 20 0b .
5261 ld a,(trace_call_flag) ;20e2 3a e3 21 : . !
5262 and a ;20e5 a7 .
5263 jr z,l20edh ;20e6 28 05 ( .
5264 call l20edh ;20e8 cd ed 20 . .
5265 pop hl ;20eb e1 .
5266 ret ;20ec c9 .
5267 l20edh:
5268 ld hl,(reg_sp) ;20ed 2a 5c 00 * \ .
5269 ld e,(hl) ;20f0 5e ^
5270 inc hl ;20f1 23 #
5271 ld d,(hl) ;20f2 56 V
5272 ex de,hl ;20f3 eb .
5273 call sub_09cah ;20f4 cd ca 09 . . .
5274 and a ;20f7 a7 .
5275 ret ;20f8 c9 .
5276
5277 l20f9h:
5278 ld a,(l0003h) ;20f9 3a 03 00 : . .
5279 cp (iy+000h) ;20fc fd be 00 . . .
5280 ret z ;20ff c8 .
5281 ld a,(iy+000h) ;2100 fd 7e 00 . ~ .
5282 and 038h ;2103 e6 38 . 8
5283 ld l,a ;2105 6f o
5284 ld h,000h ;2106 26 00 & .
5285 ld a,(b_21e2_start) ;2108 3a e2 21 : . !
5286 and a ;210b a7 .
5287 jr nz,l2113h ;210c 20 05 .
5288 ld a,(trace_call_flag) ;210e 3a e3 21 : . !
5289 and a ;2111 a7 .
5290 ret nz ;2112 c0 .
5291 l2113h:
5292 scf ;2113 37 7
5293 ret ;2114 c9 .
5294 l2115h:
5295 and a ;2115 a7 .
5296 ret ;2116 c9 .
5297 cmd_C:
5298 ld hl,cmd_C ;2117 21 17 21 ! . !
5299 ld a,001h ;211a 3e 01 > .
5300 jr l2122h ;211c 18 04 . .
5301 cmd_T:
5302 xor a ;211e af .
5303 ld hl,cmd_T ;211f 21 1e 21 ! . !
5304 l2122h:
5305 ld (cmd_rpt),hl ;2122 22 68 00 " h .
5306 ld (trace_call_flag),a ;2125 32 e3 21 2 . !
5307 ld a,(de) ;2128 1a .
5308 sub 'N' ;2129 d6 4e . N
5309 jr nz,l212eh ;212b 20 01 .
5310 inc de ;212d 13 .
5311 l212eh:
5312 ld (trace_N_flag),a ;212e 32 e7 21 2 . !
5313 ld a,(de) ;2131 1a .
5314 sub 'J' ;2132 d6 4a . J
5315 jr nz,l2137h ;2134 20 01 .
5316 inc de ;2136 13 .
5317 l2137h:
5318 ld (trace_J_flag),a ;2137 32 e8 21 2 . !
5319 call sub_21a6h ;213a cd a6 21 . . !
5320 jr z,l2145h ;213d 28 06 ( .
5321 ld hl,1 ;213f 21 01 00 ! . .
5322 call get_lastarg_def ;2142 cd 69 03 . i .
5323 l2145h:
5324 ld (trace_count),hl ;2145 22 e5 21 " . !
5325 sub a ;2148 97 .
5326 ld (l0941h),a ;2149 32 41 09 2 A .
5327 l214ch:
5328 call sub_1ffeh ;214c cd fe 1f . . .
5329 jr l21a3h ;214f 18 52 . R
5330
5331 l2151h:
5332 call bp_clr_temporary ;2151 cd 54 07 . T .
5333 ld a,(trace_J_flag) ;2154 3a e8 21 : . !
5334 and a ;2157 a7 .
5335 jr nz,l216bh ;2158 20 11 .
5336 ld iy,(REG.PC) ;215a fd 2a 60 00 . * ` .
5337 call sub_21c8h ;215e cd c8 21 . . !
5338 jr z,l216bh ;2161 28 08 ( .
5339 ld hl,b_2048_start ;2163 21 48 20 ! H
5340 call lookup_opc ;2166 cd 97 1a . . .
5341 jr nc,l214ch ;2169 30 e1 0 .
5342 l216bh:
5343 ld a,(trace_UW_flag) ;216b 3a e4 21 : . !
5344 and a ;216e a7 .
5345 jr z,l2188h ;216f 28 17 ( .
5346 ld de,(trace_count) ;2171 ed 5b e5 21 . [ . !
5347 call expr ;2175 cd be 03 . . .
5348 ld a,h ;2178 7c |
5349 or l ;2179 b5 .
5350 add a,0ffh ;217a c6 ff . .
5351 sbc a,a ;217c 9f .
5352 ld hl,trace_UW_flag ;217d 21 e4 21 ! . !
5353 xor (hl) ;2180 ae .
5354 bit 1,a ;2181 cb 4f . O
5355 jr z,l2193h ;2183 28 0e ( .
5356 l2185h:
5357 jp l0902h ;2185 c3 02 09 . . .
5358 l2188h:
5359 ld hl,(trace_count) ;2188 2a e5 21 * . !
5360 dec hl ;218b 2b +
5361 ld (trace_count),hl ;218c 22 e5 21 " . !
5362 ld a,h ;218f 7c |
5363 or l ;2190 b5 .
5364 jr z,l2185h ;2191 28 f2 ( .
5365 l2193h:
5366 call sub_1ffeh ;2193 cd fe 1f . . .
5367 jr nc,l2185h ;2196 30 ed 0 .
5368 ld a,(trace_N_flag) ;2198 3a e7 21 : . !
5369 ld b,a ;219b 47 G
5370 ld a,(l0941h) ;219c 3a 41 09 : A .
5371 or b ;219f b0 .
5372 ld (l0941h),a ;21a0 32 41 09 2 A .
5373 l21a3h:
5374 jp user_go ;21a3 c3 25 0a . % .
5375
5376 sub_21a6h:
5377 call skipbl ;21a6 cd bf 02 . . .
5378 xor a ;21a9 af .
5379 ld (trace_UW_flag),a ;21aa 32 e4 21 2 . !
5380 ld a,(de) ;21ad 1a .
5381 cp 'U' ;21ae fe 55 . U
5382 jr z,l21b5h ;21b0 28 03 ( .
5383 cp 'W' ;21b2 fe 57 . W
5384 ret nz ;21b4 c0 .
5385 l21b5h:
5386 inc de ;21b5 13 .
5387 push af ;21b6 f5 .
5388 push de ;21b7 d5 .
5389 call expr ;21b8 cd be 03 . . .
5390 jp c,ERROR ;21bb da 07 01 . . .
5391 call assert_eol ;21be cd d6 02 . . .
5392 pop hl ;21c1 e1 .
5393 pop af ;21c2 f1 .
5394 ld (trace_UW_flag),a ;21c3 32 e4 21 2 . !
5395 sub a ;21c6 97 .
5396 ret ;21c7 c9 .
5397
5398 sub_21c8h:
5399 ld a,(iy+000h) ;21c8 fd 7e 00 . ~ .
5400 cp 0edh ;21cb fe ed . .
5401 jr z,l21dah ;21cd 28 0b ( .
5402 and 0dfh ;21cf e6 df . .
5403 cp 0ddh ;21d1 fe dd . .
5404 ret nz ;21d3 c0 .
5405 ld a,(iy+001h) ;21d4 fd 7e 01 . ~ .
5406 cp 0e9h ;21d7 fe e9 . .
5407 ret ;21d9 c9 .
5408 l21dah:
5409 ld a,(iy+001h) ;21da fd 7e 01 . ~ .
5410 and 0f7h ;21dd e6 f7 . .
5411 cp 045h ;21df fe 45 . E
5412 ret ;21e1 c9 .
5413
5414 b_21e2_start:
5415 db 0
5416 trace_call_flag:
5417 db 0 ;1=call, 0=trace
5418 trace_UW_flag:
5419 db 0 ;0 or 'U' or 'W'
5420 trace_count:
5421 dw 0
5422 trace_N_flag:
5423 db 0 ;0 if 'N'
5424 trace_J_flag:
5425 db 0 ;0 if 'J'
5426
5427 ;-------------------------------------------------------------------------------
5428
5429 con_col:
5430 db 0
5431
5432 l0941h:
5433 db 0
5434
5435 bp_tab:
5436 rept BP_CNT
5437 rept BP_SIZE
5438 db 0
5439 endm
5440 endm
5441
5442 expr_p1:
5443 dw expr_buf
5444 expr_p2:
5445 dw expr_buf
5446
5447 expr_buf:
5448 current_cseg defl $ - current_cseg
5449 .phase current_phase + current_cseg
5450
5451 start:
5452 LD SP,ldr_end+(stack-ddtz_base)
5453 LD DE,signon ;ldr_end+(expr_buf-ddtz_base)
5454 LD C,BDOS_PSTR
5455 CALL BDOS
5456
5457 xor a
5458 dec a
5459 jp po,reloc
5460 ld de,msgz80
5461 LD C,BDOS_PSTR
5462 CALL BDOS
5463 jp 0
5464
5465 reloc:
5466 LD HL,ldr_end+ddtz_size ;start of reloc bitmap
5467 ld bc,0108h ;init bit counter
5468
5469 EXX
5470 LD HL,(BDOS+1)
5471 LD (ldr_end+1),HL
5472 LD BC,ddtz_size-1
5473 LD D,B
5474 LD E,0FFH
5475 INC DE ;size rounded up to next page boundary
5476 INC BC ;ddtz_size
5477 OR A
5478 SBC HL,DE ;BDOS - size
5479 LD (BDOS+1),HL ;-> new BDOS entry
5480
5481 push hl
5482 PUSH BC
5483 ld de,ldr_end
5484 sbc hl,de
5485 EX DE,HL ;-> DE
5486 LD HL,ldr_size
5487 add hl,bc
5488 ld b,h
5489 ld c,l
5490 LD HL,TPA
5491 reloc_lp:
5492 EXX
5493 djnz reloc_nl
5494 ld b,c ;reload bit counter
5495 LD e,(HL) ;get next 8 relocation bits
5496 INC HL
5497 reloc_nl:
5498 sla e
5499 EXX
5500 JR NC,reloc_next
5501 DEC HL
5502 LD A,(HL)
5503 ADD A,E
5504 LD (HL),A
5505 INC HL
5506 LD A,(HL)
5507 ADC A,D
5508 LD (HL),A
5509 reloc_next:
5510 cpi
5511 jp pe,reloc_lp
5512 dec hl
5513
5514 POP BC
5515 pop de
5516 EX DE,HL
5517 ADD HL,BC
5518 EX DE,HL
5519 DEC DE
5520 LDDR
5521 LD HL,conbuf+2-ddtz_base
5522 ADD HL,DE
5523 JP (HL)
5524
5525 current_phase defl $
5526 .dephase
5527 current_cseg defl $
5528
5529 ds EXPR_BUF_SIZE - ($ - expr_buf)
5530 expr_bufe:
5531
5532 msg_Y:
5533 dc 'Yn'
5534 reg_Y:
5535 rept YREG_CNT
5536 dw 0
5537 endm
5538
5539 last_S:
5540 dw TPA
5541
5542 last_I:
5543 dw 0
5544
5545 last_O_addr:
5546 dw 0
5547 last_O_val:
5548 db 0
5549
5550 cmd_Q_jopt:
5551 db -1
5552
5553 last_D:
5554 dw TPA
5555
5556 cmdR_rindex:
5557 db 0
5558
5559 high_load:
5560 dw TPA
5561 max_load:
5562 dw TPA
5563
5564 l1262h:
5565 dw 0
5566 last_A:
5567 dw TPA
5568 cmd_A_prev:
5569 dw TPA
5570
5571 prefix_ixiy:
5572 db 0
5573
5574 isprefix_ixiy:
5575 db 0
5576 last_L:
5577 dw TPA
5578 l1ffbh:
5579 dw 0
5580 l1ffdh:
5581 db 0
5582
5583 ddtz_size equ $-ddtz_base
5584 ddtz_end:
5585
5586 ;-------------------------------------------------------------------------------
5587
5588 end