1 ; hardware-unabhaengiger, ROM-faehiger Z80-disassembler
3 ; die adresse, ab der disassembliert serden soll, ist in der
4 ; 16-bit Speicherzelle DADR abzulegen. danach kann eines der
5 ; entrys DISSCR (ausgabe eines bildschirms) oder DISLIN
6 ; (ausgabe einer zeile) aufgerufen werden. da die Folgeadressen
7 ; durch das programm ebenfalls wieder in der Speicherzelle
8 ; DADR abgelegt werden, ist mehrfacher aufruf ohne laden
9 ; von neuen adressen moeglich.
10 ; zur ausgabe muss ein Unterprogramm mit dem Namen PRTSTR
11 ; erstellt werden, dem in hl die adresse eines Null-terminierten
12 ; Strings uebergeben wird.
16 LPP equ 15 ; anzahl zeilen/bildschirm ausgabe
17 MNEPOS equ 11h ; Offset des mnemonics in ausgabe-Workspace
19 ; disassembliere einen bildschirm voll
21 ld b,LPP ; einen bildschirm mit LPP zeilen
23 push bc ; disassemblieren
29 ; disassembliere eine zeile
31 call CLWO ; Workspace fuer eine zeile ausgabe loeschen
32 ld hl,WRKS ; adresse der ausgabe-Workspace -> hl
33 ld de,(DADR) ; disassemblier-adresse -> de
34 call PRBY ; adresse in de ausgeben
35 inc hl ; blank ausgeben
36 ld (PRTMP),hl ; vordere printposition retten
37 ld c,0 ; Steuerflag loeschen
38 dec de ; laufende adr.-1 -> de
40 call PRNB ; laufendes byte ausgeben
41 ld a,(de) ; laufendes byte -> a
42 ld b,a ; und in b retten
43 cp 0EDH ; preafix ED ?
45 set 4,c ; ja, ED-Flag setzen
46 jr .DL13 ; und naechstes byte bearbeiten
48 cp 0FDH ; preafix FD ?
50 set 6,c ; ja, FD-Flag setzen
51 jr .DL16 ; und Index-Flag setzen
53 cp 0DDH ; preafix DD ?
56 set 5,c ; Index-Flag fuer ix/iy-adressierung setzen
57 ld hl,(PRTMP) ; vordere printposition -> hl
58 jr .DL13 ; naechstes byte bearbeiten
60 ld hl,WRKS+MNEPOS ; hl auf Operator position setzen
63 ld a,b ; befehlsbyte aus b holen
64 cp 0CBH ; preafix CB ?
66 inc de ; ja, pointer auf naechstes byte setzen
67 bit 5,c ; ix/iy-Flag ?
69 inc de ; ja, pointer auf naechstes byte setzen
71 ld a,(de) ; naechstes byte -> a
72 ld b,a ; und in b retten
73 push de ; disassemblieradr. retten
75 ld e,0E8H ; de = pointer auf "set"
78 ld e,0E4H ; nein, de = pointer auf "res"
81 ld e,0E0H ; nein, de = pointer auf "bit"
84 and 38h ; loesche bits 0..2 und 6..7
85 rrca ; division durch 2
88 ld d,high(CBMTAB) ; de = pointer auf CB-mnemonic
90 call TRBY ; mnemonic ausgeben
91 pop de ; akt. disassemblieradr. wieder -> de
92 ld a,b ; byte wieder -> a
93 bit 5,c ; ix/iy-Flag ?
95 dec de ; eins zurueck bei ix/iy-adressierung
97 dec de ; pointer wieder auf CB-preafix
98 cp 40h ; CB-befehl < 40h ?
100 and 38h ; nein, bits 0..2 und 6..7 loeschen
101 rrca ; division durch 8 -> 1. Operanden
104 call PRO1 ; 1. Operanden ausgeben
105 ld a,b ; byte wieder -> a
106 set 7,c ; Komma-Flag setzen
108 and 7 ; bits 3..7 loeschen -> 2. Operanden
109 set 4,a ; buchstaben-Flag setzen
110 call PRO1 ; 2. Operanden ausgeben
111 call PRNB ; befehlsbyte vorne ausgeben
112 jp INAD ; fertig, adresse merken und Workspace ausgeben
116 push de ; disassemblieradr. retten
119 cp 40h ; nein, < 40h ?
121 cp 80h ; nein, > 80h ?
123 ld e,50h ; nein, de = pointer auf "ld"
126 ld e,5CH ; nein, de = pointer auf "halt"
128 jr .DL26 ; mnemonic ausgeben
132 and 38h ; ja, bits 0..2 und 6..7 loeschen
133 rrca ; division durch 2 -> Operator
134 ld e,a ; Operator -> e
135 jr .DL26 ; mnemonic ausgeben
137 sub 80h ; wenn > C0H, -80 -> Tabellenoperator
139 ld e,a ; Operator -> e
141 ld a,(de) ; LSB mnemonic-adresse -> a
145 call TRBY ; mnemonic ausgeben
146 pop de ; akt. disassemblieradr. wieder -> de
147 ld a,b ; befehlsbyte wieder -> a
148 push de ; disassemblieradr. retten
151 cp 80h ; nein, > 80 ?
153 cp 76h ; nein, halt ?
155 ld a,0FFH ; ja, leeren Operanden -> a
156 jr .DL31 ; Operanden ausgeben
158 and 38h ; loesche bits 0..2 und 6..7
159 rrca ; division durch 8 -> 1. Operanden
162 set 4,a ; buchstabenflag setzen
163 jr .DL31 ; Operanden ausgeben
169 and 0F8H ; ja, Register-bits loeschen
172 ld a,b ; byte wieder -> a
173 and 7 ; nur Register bits uebrig lassen
174 set 4,a ; buchstaben-Flag setzen
177 ld a,17h ; ja, 17 = Register a ausgeben
178 jr .DL31 ; Operanden ausgeben
180 sub 80h ; wenn > C0, -80 -> Operandentabelle
182 ld e,a ; LSB Operandentabelle -> e
184 ld a,(de) ; 1. Operanden -> a
186 pop de ; akt. disassemblieradr. wieder -> de
187 call PRO1 ; 1. Operanden ausgeben
188 ld a,b ; befehlsbyte wieder -> a
189 push de ; akt. disassemblieradr. retten
192 cp 0C0H ; nein, < C0 ?
196 ld a,0FFH ; ja, wieder leeren Operanden -> a
197 jr .DL35 ; Operanden ausgeben
199 and 7 ; loesche bits 3..7, -> 2. Operanden
200 set 4,a ; buchstabenflag setzen
201 jr .DL35 ; Operanden ausgeben
203 sub 80h ; wenn > C0 : 80 abziehen
205 add a,80h ; LSB Operandentabelle -> a
208 ld a,(de) ; 2. Operanden -> a
210 pop de ; akt. disassemblieradr. wieder -> de
211 set 7,c ; Komma-Flag setzen
212 call PRO1 ; 2. Operanden ausgeben
213 jp INAD ; fertig, adresse merken und Workspace ausgeben
217 sub 40h ; 40 vom 2. byte subtrahieren
218 jp c,ERRO ; Fehler wenn carry
219 cp 60h ; 2. byte < A0 ?
222 jp nc,ERRO ; ja, Fehler
223 jr .DL37 ; nein, weiter
225 sub 20h ; aus 60..7F wird 00..20
227 add a,80h ; LSB Operatortabelle -> a
230 ld a,(de) ; LSB mnemonic-adresse -> a
232 jp z,ERRO ; ja, Fehler
235 call TRBY ; mnemonic ausgeben
236 pop de ; disassemblieradr. wieder -> de
237 ld a,b ; befehlsbyte wieder -> a
239 jp nc,INAD ; nein, Workspace ausgeben und fertig
240 push de ; disassemblieradr. retten
241 sub 40h ; LSB 1. Operanden in a
244 ld a,(de) ; 1. Operanden -> a
245 pop de ; akt. disassemblieradr. wieder -> de
246 call PRO1 ; 1. Operanden ausgeben
247 ld a,b ; befehlsbyte wieder -> a
249 jp nc,INAD ; ja, Workspace ausgeben und fertig
250 push de ; akt. disassemblieradr. retten
251 ld e,a ; LSB Operandentabelle -> e
253 ld a,(de) ; 2. Operanden -> a
254 set 7,c ; buchstabenflag setzen
256 pop de ; akt. disassemblieradr. retten
257 call PRO1 ; 2. Operanden ausgeben
258 jp INAD ; fertig, adresse merken und Workspace ausgeben
262 cp 0FFH ; leere Operand ?
264 cp 17h ; nein, Register "a" ausgeben ?
266 ld a,18h ; ja, umkodieren
268 cp 16h ; Register "(hl)" ausgeben ?
270 ld a,0B4H ; ja, umkodieren
272 bit 7,c ; 2. Operand ?
274 ld (hl),',' ; ja, "," ausgeben
275 inc hl ; naechste printposition -> hl
279 ld (hl),'(' ; ja, "(" ausgeben
280 inc hl ; naechste printposition -> hl
282 bit 4,a ; buchstabe ?
283 jr nz,PRBU ; ja, buchstaben ausgeben
284 bit 6,a ; nein, bitnummer/rst-adresse ?
285 jr nz,DIST ; ja, distanz ausgeben
286 bit 5,a ; nein, bitnummer ?
287 jr nz,PRO2 ; ja, rst ausgeben
288 and 7 ; nein, bits 3..7 loeschen
289 call PRCH ; hexbyte ausgeben
295 and 6 ; loesche bits 0 und 4..7
296 rrca ; division durch 2
297 call PRCH ; oberes Nibble ausgeben
298 pop af ; a wieder herstellen
300 ld a,'0' ; nein, "0" -> a
302 ld a,'8' ; ja, "8" -> a
304 ld (hl),a ; "0" oder "8" ausgeben
305 inc hl ; naechste printposition -> hl
310 bit 0,a ; relative distanz ?
311 jr z,PR_N ; nein, N ausgeben
312 call PRNB ; byte vorne ausgeben
313 push de ; akt. disassemblieradr. retten
314 ld a,(de) ; distanzbyte -> a
315 inc de ; disassemblieradr. erhoehen
316 rlca ; bit 7 distanzbyte -> carry
318 jr nc,.DL06 ; Vorwaertsprung
319 set 0,c ; Flag fuer Rueckwaertssprung setzen
321 add a,e ; distanz zu PC addieren
323 bit 0,c ; Flag testen
324 jr nc,.DL07 ; kein Ueberlauf
325 jr nz,.DL08 ; Rueckwaertssprung
326 inc d ; MSB PC erhoehen
327 jr .DL08 ; zieladresse ausgeben
329 jr z,.DL08 ; bei Vorwaertssprung zieladresse ausgeben
330 dec d ; sonst MSB PC erniedrigen
332 call PRBY ; zieladresse in de ausgeben
333 pop de ; akt. disassemblieradresse wieder -> de
340 jr z,PRNN ; nein, NN ausgeben
341 call PRVH ; ja, byte vorne und hinten ausgeben
342 jr @DL12 ; ")" bearbeiten
346 call PRNB ; byte vorne ausgeben
347 call PRVH ; byte vorne und hinten ausgeben
348 dec de ; de -> LSB von NN
349 call PRBH ; byte hinten ausgeben
350 inc de ; akt. disassemblieradr. wieder -> de
351 jr @DL12 ; ")" bearbeiten
353 ; buchstaben ausgeben
356 push bc ; Flags in c retten
357 push de ; akt. disassemblieradr. retten
359 ld de,REGTAB ; de zeigt auf die Register-Namen
360 bit 5,a ; 2 buchstaben ?
362 inc b ; ja, anzahl erhoehen
364 bit 6,a ; Sprungbedingung ?
366 ld de,SPRTAB ; ja, de zeigt auf condition-Namen
368 res 7,a ; Klammer-bit loeschen
371 bit 5,c ; ja, Indexregister ?
373 ld a,0AH ; ja, a -> ix-Register
374 bit 6,c ; iy-Register ?
376 ld a,0CH ; ja, a -> iy-Register
378 and 0FH ; loesche oberes Nibble
379 add a,e ; und addiere zur basis in de
382 ld a,(de) ; zeichen -> a
383 ld (hl),a ; zeichen ausgeben
384 inc de ; Tabellen-adresse erhoehen
385 inc hl ; naechste printposition
386 djnz .DL50 ; naechstes zeichen
387 pop de ; Register wieder herstellen
393 bit 5,c ; nein, Indexregister ?
395 ld a,(de) ; ja, befehlsbyte nach DD/FD -> a
396 cp 0E9H ; "jp (ix/iy)" ?
398 ld (hl),'+' ; nein, "+" ausgeben
399 inc hl ; naechste printposition
400 call PRVH ; Offset ausgeben
402 pop af ; a wieder herstellen
405 ld (hl),')' ; ja, ")" ausgeben
406 inc hl ; naechste printposition
411 ld de,CBMTAB+24 ; pointer auf "????" -> de
412 call TRBY ; als mnemonic ausgeben
413 pop de ; akt. disassemblieradr. vom Stack holen
415 ; disassemblier-adresse erhoehen und merken
423 ld hl,WRKS ; adresse Workspace -> hl
424 call TrimString32 ; remove trailing spaces
425 call PRTSTR ; Workspace aufs Terminal ausgeben
431 ; remove trailing spaces
453 ld hl,WRKS ; Workspace mit Space fuellen
454 ld de,WRKS+1 ; und mit Null terminieren
462 ; 4 bytes transferieren
466 ex de,hl ; de=printposition, hl=mnemonic
467 ldir ; bytes transferieren
468 ex de,hl ; hl ist wieder printposition
469 pop bc ; bc wieder herstellen
473 ; byte vorne und hinten ausgeben
475 call PRNB ; byte vorne ausgeben
477 ; byte hinten ausgeben
480 ld a,(de) ; byte -> a
481 call PRAK ; a ausgeben
482 pop af ; a wieder herstellen
485 ; byte vorne ausgeben
488 inc de ; de auf naechstes byte setzen
489 push hl ; akt. printposition retten
490 ld hl,(PRTMP) ; vordere printposition -> hl
491 ld a,(de) ; byte -> a
492 call PRAK ; a ausgeben
494 ld (PRTMP),hl ; vordere printposition retten
495 pop hl ; akt. printposition wieder -> hl
496 pop af ; a wieder herstellen
502 call PRAK ; a ausgeben
508 rrca ; oberes Nibble ins untere schieben
512 call PRCH ; oberes Nibble ausgeben
513 pop af ; a wieder herstellen
514 call PRCH ; unteres Nibble ausgeben
517 ; unteres Nibble in ASCII-hex umwandeln und in Workspace schreiben
524 ld (hl),a ; ASCII-ziffer in Workspace schreiben
525 inc hl ; printposition erhoehen
528 ; die hier folgenden Tabellen muessen am anfang einer page
529 ; beginnen, und die Reihenfolge der Tabellen darf auf keinen
530 ; Fall geaendert werden, weil das LSB der Tabellenadressen
531 ; durch arithmetische Operationen mit den Op-codes berechnet
536 ; Tabelle mit den Z80-mnemonics
572 ; LSB-adressen der mnemonics in MNETAB fuer
573 ; befehle 00..3F ohne preafix ED/CB
574 defb 024h,050h,050h,054h,054h,058h,050h,030h ; nop ld ld inc inc dec ld rlca
575 defb 070h,000h,050h,058h,054h,058h,050h,040h ; ex add ld dec inc dec ld rrca
576 defb 028h,050h,050h,054h,054h,058h,050h,034h ; djnz ld ld inc inc dec ld rla
577 defb 020h,000h,050h,058h,054h,058h,050h,044h ; jr add ld dec inc dec ld rra
578 defb 020h,050h,050h,054h,054h,058h,050h,038h ; jr ld ld inc inc dec ld daa
579 defb 020h,000h,050h,058h,054h,058h,050h,048h ; jr add ld dec inc dec ld cpl
580 defb 020h,050h,050h,054h,054h,058h,050h,03CH ; jr ld ld inc inc dec ld scf
581 defb 020h,000h,050h,058h,054h,058h,050h,04CH ; jr add ld dec inc dec ld ccf
583 ; LSB-adressen der mnemonics in MNETAB fuer
584 ; befehle C0..FF ohne preafix ED/CB
585 defb 060h,064h,068h,068h,078h,07CH,000h,080h ; ret pop jp jp call push add ret
586 defb 060h,060h,068h,0F1H,078h,078h,004h,080h ; ret ret jp (CB) call call adc rst
587 defb 060h,064h,068h,06CH,078h,07CH,008h,080h ; ret pop jp out call push sub rst
588 defb 060h,084h,068h,088h,078h,0F0H,00CH,080h ; ret exx jp in call (DD) sbc rst
589 defb 060h,064h,068h,070h,078h,07CH,010h,080h ; ret pop jp ex call push and rst
590 defb 060h,068h,068h,02CH,078h,0F2H,014h,080h ; ret jp jp ex call (ED) xor rst
591 defb 060h,064h,068h,074h,078h,07CH,018h,080h ; ret pop jp di call push or rst
592 defb 060h,050h,068h,090h,078h,0F8H,01CH,080h ; ret ld jp ei call (FD) cp rst
594 ; LSB-adressen der mnemonics in MNETAB fuer
595 ; befehle 40..7F mit preafix ED
596 defb 088h,06CH,00CH,050h,0ACH,0B0H,0F8H,050h ; in out sbc ld neg retn im ld
597 defb 088h,06CH,004h,050h,0FFH,0D8H,0FFH,050h ; in out adc ld reti ld
598 defb 088h,06CH,00CH,050h,0FFH,0FFH,0F8H,050h ; in out sbc ld im ld
599 defb 088h,06CH,004h,050h,0FFH,0FFH,0F8H,050h ; in out adc ld im ld
600 defb 088h,06CH,00CH,0FFH,0FFH,0FFH,0FFH,0B4H ; in out sbc rrd
601 defb 088h,06CH,004h,0FFH,0FFH,0FFH,0FFH,0DCH ; in out adc rld
602 defb 0FFH,0FFH,00CH,050h,0FFH,0FFH,0FFH,0FFH ; sbc ld
603 defb 088h,06CH,004h,050h,0FFH,0FFH,0FFH,0FFH ; in out adc ld
605 ; LSB-adressen der mnemonics in MNETAB fuer
606 ; befehle A0..BF mit praefix ED
607 defb 094h,0F0H,09CH,0A4H,0FFH,0FFH,0FFH,0FFH ; ldi cpi ini outi
608 defb 0B8H,0C0H,0C8H,0D4H,0FFH,0FFH,0FFH,0FFH ; ldd cpd ind outd
609 defb 098h,0F4H,0A0H,0A8H,0FFH,0FFH,0FFH,0FFH ; ldir cpir inir otir
610 defb 0BCH,0C4H,0CCH,0D0H,0FFH,0FFH,0FFH,0FFH ; lddr cpdr indr otdr
612 ; Tabelle der Sprungbedingungen
615 defb 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
617 ; Tabelle der Register
619 defm 'BCDEHLSPAFIXIYIR'
621 ; Tabelle der Operanden:
622 ; bit 7: zahl/buchstabe
623 ; bit 6: einfach/doppelt
624 ; bit 5: Register/Sprungbedingung
625 ; bit 4: ohne/mit Klammer
626 ; bit 0..3: Offset in der Tabelle der Registernamen
628 ; befehle 00..3F ohne preafix ED/CB
631 defb 0FFH,030h,0B0H,030h,010h,010h,010h,0FFH ; - bc (bc) bc b b b -
632 defb 038h,034h,017h,030h,011h,011h,011h,0FFH ; af hl a bc c c c -
633 defb 041h,032h,0B2H,032h,012h,012h,012h,0FFH ; DIS de (de) de d d d -
634 defb 041h,034h,017h,032h,013h,013h,013h,0FFH ; DIS hl a de e e e -
635 defb 070h,034h,0C4H,034h,014h,014h,014h,0FFH ; nz hl (NN) hl h h h -
636 defb 051h,034h,034h,034h,015h,015h,015h,0FFH ; z hl hl hl l l l -
637 defb 072h,036h,0C4H,036h,016h,016h,016h,0FFH ; nc sp (NN) sp (hl) (hl) (hl) -
638 defb 011h,034h,017h,036h,017h,017h,017h,0FFH ; c hl a sp a a a -
640 ; befehle C0..FF ohne preafix ED/CB
642 defb 070h,030h,070h,044h,070h,030h,017h,020h ; nz bc nz NN nz bc a 00
643 defb 051h,0FFH,051h,0F1H,051h,044h,017h,021h ; z - z *CB z NN a 08
644 defb 072h,032h,072h,0C2H,072h,032h,042h,022h ; nc de nc (N) nc de N 10
645 defb 053h,0FFH,053h,017h,053h,0F2H,017h,023h ; c - c a c *DD a 18
646 defb 074h,034h,074h,0B6H,074h,034h,042h,024h ; po hl po (sp) po hl N 20
647 defb 076h,016h,076h,032h,076h,0F4H,042h,025h ; pe (hl) pe de pe *ED N 28
648 defb 058h,038h,058h,0FFH,058h,038h,042h,026h ; p af p - p af N 30
649 defb 059h,036h,059h,0FFH,059h,0F8H,042h,027h ; m sp m - m *FD N 38
651 ; befehle 00..3F ohne preafix ED/CB
653 defb 0FFH,044h,017h,0FFH,0FFH,0FFH,042h,0FFH ; - NN a - - - N -
654 defb 038h,030h,0B0H,0FFH,0FFH,0FFH,042h,0FFH ; af bc (bc) - - - N -
655 defb 0FFH,044h,017h,0FFH,0FFH,0FFH,042h,0FFH ; - NN a - - - N -
656 defb 0FFH,032h,0B2H,0FFH,0FFH,0FFH,042h,0FFH ; - de (de) - - - N -
657 defb 041h,044h,034h,0FFH,0FFH,0FFH,042h,0FFH ; DIS NN hl - - - N -
658 defb 041h,034h,0C4H,0FFH,0FFH,0FFH,042h,0FFH ; DIS hl (NN) - - - N -
659 defb 041h,044h,017h,0FFH,0FFH,0FFH,042h,0FFH ; DIS NN a - - - N -
660 defb 041h,036h,0C4H,0FFH,0FFH,0FFH,042h,0FFH ; DIS sp (NN) - - - N -
662 ; befehle C0..FF ohne praefix ED/CB
664 defb 0FFH,0FFH,044h,0FFH,044h,0FFH,042h,0FFH ; - - NN - NN - N -
665 defb 0FFH,0FFH,044h,0FFH,044h,0FFH,042h,0FFH ; - - NN *CB NN - N -
666 defb 0FFH,0FFH,044h,017h,044h,0FFH,0FFH,0FFH ; - - NN a NN - - -
667 defb 0FFH,0FFH,044h,0C2H,044h,0FFH,042h,0FFH ; - - NN (N) NN *DD N -
668 defb 0FFH,0FFH,044h,034h,044h,0FFH,0FFH,0FFH ; - - NN hl NN - - -
669 defb 0FFH,0FFH,044h,034h,044h,0FFH,0FFH,0FFH ; - - NN hl NN *ED - -
670 defb 0FFH,0FFH,044h,0FFH,044h,0FFH,0FFH,0FFH ; - - NN - NN - - -
671 defb 0FFH,034h,044h,0FFH,044h,0FFH,0FFH,0FFH ; - hl NN - NN *FD - -
674 ; befehle 40..7F mit praefix ED
676 defb 010h,091h,034h,0C4H,0FFH,0FFH,000h,01EH ; b (c) hl (NN) - - 0 I
677 defb 011h,091h,034h,030h,0FFH,0FFH,0FFH,01FH ; c (c) hl bc - - - R
678 defb 012h,091h,034h,0C4H,0FFH,0FFH,001h,017h ; d (c) hl (NN) - - 1 a
679 defb 013h,091h,034h,032h,0FFH,0FFH,002h,017h ; e (c) hl de - - 2 a
680 defb 014h,091h,034h,0C4H,0FFH,0FFH,076h,0FFH ; h (c) hl - - - - -
681 defb 015h,091h,034h,0FFH,0FFH,0FFH,0FFH,0FFH ; l (c) hl - - - - -
682 defb 0FFH,0FFH,034h,0C4H,0FFH,0FFH,0FFH,0FFH ; - - hl (NN) - - - -
683 defb 017h,091h,034h,036h,0FFH,0FFH,0FFH,0FFH ; a (c) hl sp - - - -
685 ; befehle 40..7F mit preafix ED
687 defb 091h,010h,030h,030h,0FFH,0FFH,0FFH,017h ; (c) b bc bc - - - a
688 defb 091h,011h,030h,0C4H,0FFH,0FFH,0FFH,017h ; (c) c bc (NN) - - - a
689 defb 091h,012h,032h,032h,0FFH,0FFH,0FFH,01EH ; (c) d de de - - - I
690 defb 091h,013h,032h,0C4H,0FFH,0FFH,0FFH,01FH ; (c) e de (NN) - - - R
691 defb 091h,014h,034h,034h,0FFH,0FFH,0FFH,0FFH ; (c) h hl - - - - -
692 defb 091h,015h,034h,0FFH,0FFH,0FFH,0FFH,0FFH ; (c) l hl - - - - -
693 defb 0FFH,0FFH,036h,036h,0FFH,0FFH,0FFH,0FFH ; - - sp sp - - - -
694 defb 091h,017h,036h,0C4H,0FFH,0FFH,0FFH,0FFH ; (c) a sp (NN) - - - -
696 ; Tabelle der mnemonics mit praefix CB
703 WRKS: defs 34,0 ; Workspace zur aufbereitung einer ausgabezeile
704 PRTMP: defs 2,0 ; temoraerer Speicher fuer printposition
705 DADR: defs 2,0 ; disassemblier-adresse