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