;
;DASMZLG.MAC from DASM.ZLG (ver. >= 3.0)
;This routine is the ZILOG mnemonic disassembler module for DASM.MAC.
;It is included into DASM during assembly under M80.
;
       IF1
       .PRINTX /DASM with ZILOG-Standard Mnemonics/
       ENDIF
;
;  This is the Header to be printed for this module
;
HEADER:
       DEFB    'DASM for ZILOG-Standard Mnemonics',0dh,0ah
       DEFB    '       Derived from ZZSOURCE/RESOURCE',0dh,0ah
       DEFB    '$',0
;
;  This is the Disassembler Module -- Instruction to be disassembled
;    is pted to by PC
;
DASM:
       CALL    HSYM            ;WRITE A SYMBOL IF IT EXISTS
       ;.. AND PUT PC ON THE CRT
       LD      HL,(RPLPTR)     ;SEE IF THIS LINE IS REPLACED
       LD      A,H
       OR      L
       JR      Z,DASM1
       LD      B,(HL)
       INC     HL              ;SKIP THE '*'
       DEC     B
       CALL    NWLN0           ;PRINT THE REPLACING LINE AS A COMMENT
DASM1:
       LD      HL,(PC)
       EX      DE,HL
       LD      HL,(OFFSET)
       ADD     HL,DE           ;HL IS NOW THE BIASED PC
       LD      (BIASED),HL
       EX      DE,HL           ;DE IS NOW THE BIASED PC
       INC     HL
       LD      (PC),HL         ;THE NEW PC (NEXT BYTE)
       EX      DE,HL           ;DE IS THE BYTE AFTER THE INSTRUCTION
       LD      B,(HL)
       LD      HL,OPC-4
       CALL    GTCD
       CALL    TYPEOC
       CP      0AH             ;TYPES 0 THRU 9 ARE 1 BYTE
       JR      C,OLDPC         ; .. SO DON'T CHANGE THE PC
       LD      HL,(PC)
       INC     HL
       CP      10H             ;TYPES 0A THRU 0FH ARE 2-BYTERS
       JR      C,NEWPC
       CP      16H             ;TYPES 10H THRU 15H ARE 3 BYTES
       JR      NC,NEWPC
       INC     HL
NEWPC:
       LD      (PC),HL
OLDPC:
       PUSH    DE              ;SAVE THE 'E' REGISTER (MAY BE 'X' OR 'Y')
       LD      E,A
       LD      D,0
       LD      HL,JMPTBL
       ADD     HL,DE           ;ADD 2*OPCODE TYPE TO JMPTBL TO GET
       ADD     HL,DE           ;.. ROUTINE ADDRESS
       LD      E,(HL)
       INC     HL
       LD      D,(HL)
       EX      DE,HL           ;HL NOW CONTAINS THE ROUTINE ADDRESS
       POP     DE
       PUSH    HL
       LD      HL,(BIASED)
       RET                     ;'RETURN' TO THE ROUTINE
;
GTCD:
       LD      DE,4
NXTCD:
       ADD     HL,DE
NXTCD1:
       LD      A,(HL)
       OR      A               ;SEE IF WE'RE AT THE NEXT MASK YET
       INC     HL
       JP      P,NXTCD1        ;JUMP IF NOT
       AND     B               ;MASK OUT VARIABLES IN THE INSTRUCTION
       CP      (HL)            ;CHECK THE GENERIC INSTRUCTION TYPE
       JR      NZ,NXTCD
       INC     HL
       LD      A,(HL)          ;AFTER A MATCH, GET THE OPCODE TYPE
       LD      (OPCTP),A
       RET
;
TOC2:
       CP      20H             ;CONVERT SPACES IN THE TABLE TO TABS
       JR      NZ,TOC1
       LD      A,9
TOC1:
       CALL    COUT
TYPEOC:
       INC     HL              ;TYPE THE OPCODE THAT HL IS POINTING TO
       LD      A,(HL)
       OR      A
       JR      Z,TYPEOC
       JP      P,TOC2
       LD      HL,(PC)
       LD      A,(OPCTP)
       RET
;
JMPTBL:
       DEFW    T0              ;SIMPLE 1 BYTE INSTRUCTIONS
       DEFW    T1              ;8 BIT, REGISTER ARITHMETIC & LOGICAL
       DEFW    T2              ;DEC & INC
       DEFW    T3              ;DOUBLE REGISTER SINGLE BYTE ARITHMETIC
       DEFW    T4              ;8 BIT LOAD FROM MEMORY
       DEFW    T5              ;8 BIT LOAD TO MEMORY
       DEFW    T6              ;POP's AND PUSH's
       DEFW    T7              ;CONDITIONAL RETURNS
       DEFW    T8              ;THE RST INSTRUCTIONS
       DEFW    T9              ;REGISTER TO REGISTER LOADS
;2 BYTE INSTRUCTIONS
       DEFW    TA              ;8 BIT LOAD IMMEDIATES
       DEFW    TB              ;8 BIT IMMEDIATE ARITH. & LOGICAL
       DEFW    TC              ;IN A,(n)
       DEFW    TD              ;OUT (n),A
       DEFW    TE              ;CONDITIONAL, RELATIVE JUMPS
       DEFW    TF              ;OTHER RELATIVE JUMPS
;3 BYTE INSTRUCTIONS
       DEFW    T10             ;16 BIT LOADS
       DEFW    T11             ;JUMPS & CALLS
       DEFW    T12             ;DIRECT LOADS
       DEFW    T13             ;DIRECT STORES
       DEFW    T14             ;LD (nn),A
       DEFW    T15             ;CONDITIONAL JUMPS & CALLS
;MULTI-BYTE OPCODES
       DEFW    T16             ;THE 'CB' SERIES {1, 1A, 2A}
       DEFW    T17             ;THE 'DD' SERIES {1B thru 25 & 2A}
       DEFW    T18             ;THE 'FD' SERIES {1B thru 25 & 2A}
       DEFW    T19             ;THE 'ED' SERIES {0, 2, 3, 26 thru 2A}
;1 BYTE
       DEFW    T1A             ;THE BIT, RES & SET FOR 'CB'
       DEFW    T1B             ;INDEX REGISTER LOADS
       DEFW    T1C             ;JUMP INDIRECT INDEX REGISTER
       DEFW    T1D             ;INDEX REGISTER ADD
;2 BYTE
       DEFW    T1E             ;INDEX REGISTER ARITH. AND LOGICAL
       DEFW    T1F             ;INDEXED LOAD TO REGISTER
       DEFW    T20             ;INDEXED REGISTER STORE
;3 BYTES AFTER 'DD' OR 'FE'
       DEFW    T21             ;LD xx,nn
       DEFW    T22             ;LD (nn),n
       DEFW    T23             ;LD xx,(nn)
       DEFW    T24             ;LD (xx+d),n
       DEFW    T25             ;THE 'CB' EXTENSIONS TO 'DD' OR 'FD'
;1 BYTE AFTER 'ED'
       DEFW    T26             ;IN r,(C)
       DEFW    T27             ;BLOCK MOVES
;3 BYTES AFTER 'ED'
       DEFW    T28             ;LD (nn),dd
       DEFW    T29             ;LD dd,(nn)
;WHATEVER IS LEFT
       DEFW    T2A             ;INDEFINED OPCODES
;
;ONE BYTE INSTRUCTIONS, SIMPLE
;
T0:
       JP      DCRLF
;
;ARITHMETIC & LOGICAL, 8 BIT, REGISTER
;
T1:
       CALL    PSREG           ;PRINT THE SOURCE REGISTER
       JP      DCRLF
;
;DEC AND INC INSTRUCTIONS
;
T2:
       CALL    PDREG           ;PRINT THE DESTINATION REGISTER
       JP      DCRLF
;
;DOUBLE REGISTER SINGLE BYTE
;
T3:
       CALL    PXSREG          ;PRINT HL, DE, BC, OR SP
       JP      DCRLF
T4:
       CALL    LPAR            ;  LD A,(BC or DE)
       CALL    PXSREG
       CALL    RPAR
       JP      DCRLF
T5:
       CALL    LPAR            ;  LD (BC or DE),A
       CALL    PXSREG
       CALL    RPAR
       CALL    PCMAA
       JP      DCRLF
;
;POP AND PUSH
;
T6:
       CALL    PXQREG          ;PRINT HL, DE, BC, OR AF
       JP      DCRLF
;
;CONDITIONAL RETURNS
;
T7:
       CALL    PRCND
       JP      DCRLF
;
;THE RST INSTRUCTIONS
;
T8:
       LD      A,(HL)
       AND     38H
       CALL    PRST
       JP      DCRLF
;
;REGISTER TO REGISTER LOADS
;
T9:
       CALL    PDREG
       CALL    COMMA
       LD      HL,(BIASED)
       CALL    PSREG
       JP      DCRLF
;
;TWO BYTE INSTRUCTIONS
; 8 BIT IMMEDIATE LOADS
;
TA:
       CALL    PDREG
       CALL    COMMA
       LD      HL,(BIASED)
;ARITHMETIC & LOGICAL IMMEDIATES
TB:
       INC     HL
DTABYT:
       LD      A,(HL)
       CP      ' '
       JR      C,NOTASC
       CP      5BH
       JR      NC,NOTASC
       CALL    PASCII
       LD      A,''''
       CALL    COUT
       LD      A,(XCSW)        ;WANT SYMBOL COMMENTS?
       OR      A
       JP      Z,DCRLF
       CALL    TAB
       CALL    SEMI
NOTASC:
       LD      A,(HL)
       CP      0AH
       JR      C,NTSC0
       CALL    PASHEX
       LD      A,'H'
       CALL    COUT
       JP      DCRLF
NTSC0:
       ADD     A,'0'
       CALL    COUT
       JP      DCRLF
;
;IN
;
TC:
       CALL    LPAR            ;FOR 'IN A,(C)'
       INC     HL
       LD      A,(HL)
       CALL    PASHEX
       LD      A,'H'
       CALL    COUT
       CALL    RPAR
       JP      DCRLF
;OUT
TD:
       CALL    LPAR
       INC     HL
       LD      A,(HL)
       CALL    PASHEX
       LD      A,'H'
       CALL    COUT
       CALL    RPAR
       CALL    COMMA
       LD      A,'A'
       CALL    COUT
       JP      DCRLF
;
;CONDITIONAL RELATIVE JUMPS
;
TE:
       CALL    PRCND1          ;THE SPECIAL CC LIST
       LD      HL,(BIASED)
       CALL    COMMA
;OTHER RELATIVE INSTRUCTIONS
TF:
       INC     HL
       LD      A,(HL)
       LD      E,A
       LD      D,0
       LD      HL,(PC)
       OR      A
       JP      P,PSTV
       DEC     D
PSTV:
       ADD     HL,DE
       EX      DE,HL
       CALL    PRNTDE
       CALL    C,PDERTN
       JP      DCRLF
;
;THREE BYTE INSTRUCTIONS
;16 BIT LOADS
;
T10:
       CALL    PXSREG
       CALL    COMMA
       LD      HL,(BIASED)
;JUMPS AND CALLS
T11:
       CALL    PRNN
       CALL    C,PDERTN
       JP      DCRLF
;
;LOAD DIRECT
;
T12:
       CALL    DRADR
       CALL    C,PDERTN
       JP      DCRLF
DRADR:
       CALL    LPAR            ;PRINT THE VALUE FOR DE IN PARENTHESIS
       CALL    PRNN
       PUSH    AF
       CALL    RPAR
       POP     AF
       RET
;
;STORE DIRECT
;
T13:
       CALL    DRADR
       PUSH    AF
       CALL    COMMA
       LD      A,'H'
       CALL    COUT
       LD      A,'L'
       CALL    COUT
       POP     AF
       CALL    C,PDERTN
       JP      DCRLF
;
;STORE ACCUMULATOR DIRECT
;
T14:
       CALL    DRADR
       PUSH    AF
       CALL    PCMAA
       POP     AF
       CALL    C,PDERTN
       JP      DCRLF
;
;CONDITIONAL JUMPS & CALLS
;
T15:
       CALL    PRCND
       CALL    COMMA
       LD      HL,(BIASED)
       CALL    PRNN
       CALL    C,PDERTN
       JP      DCRLF
;
;THE 'CB' SERIES LEAD IN
;
T16:
       INC     HL
       LD      B,(HL)          ;THE SECOND BYTE OF THE INSTRUCTION
       LD      (BIASED),HL
       LD      HL,OPC2-4
       CALL    GTCD            ;FIND THE TYPE OF THE 'CB' INSTRUCTION
       CALL    TYPEOC
       JP      OLDPC
;
;THE 'DD' SERIES LEAD IN
;
T17:
       LD      E,'X'           ;FOR THE 'IX' INSTRUCTIONS
T170:
       PUSH    DE
       INC     HL
       LD      (BIASED),HL
       LD      B,(HL)
       LD      HL,OPC3-4
       CALL    GTCD
       CALL    TYPEOC
       POP     DE
       CP      1EH
       JP      C,OLDPC
       CP      2AH
       JP      Z,OLDPC
       CP      21H
       INC     HL
       JP      C,NEWPC
       INC     HL
       JP      NEWPC
;
;THE 'FD' SERIES LEAD IN
;
T18:
       LD      E,'Y'
       JR      T170
;
;THE 'ED' SERIES LEAD IN
;
T19:
       INC     HL
       LD      (BIASED),HL
       LD      B,(HL)
       LD      HL,OPC4-4
       CALL    GTCD
       CALL    TYPEOC
       CP      28H
       JP      C,OLDPC
       CP      2AH
       JP      Z,OLDPC
       INC     HL
       INC     HL
       JP      NEWPC
;
;BIT, RES AND SET
;
T1A:
       CALL    PBIT
       CALL    COMMA
       CALL    PSREG
       JP      DCRLF
;
;INDEX REGISTER MOVES
;
T1B:
       CALL    PRXX            ;TO TYPE EITHER 'IX' OR 'IY'
       JP      DCRLF
;
;JUMP INDIRECT TO INDEX REGISTER
;
T1C:
       CALL    LPAR
       CALL    PRXX
       CALL    RPAR
       JP      DCRLF
;
;INDEX REGISTER ADDITION
;
T1D:
       CALL    PRXX
       CALL    COMMA
       LD      A,E
       CP      'X'
       LD      A,(HL)
       LD      HL,IXREGS
       JR      Z,T1D0
       LD      HL,IYREGS
T1D0:
       CALL    PXREG
       JP      DCRLF
;
;INDEX REGISTER ARITHMETIC AND LOGICAL
;
T1E:
       INC     HL
       CALL    PDISP           ;PRINT '(IX(Y)+d)
       JP      DCRLF
;
;INDEXED LOAD TO REGISTER
;
T1F:
       CALL    PDREG
       CALL    COMMA
       LD      HL,(BIASED)
       INC     HL
       CALL    PDISP
       JP      DCRLF
;
;INDEXED REGISTER STORE
;
T20:
       INC     HL
       CALL    PDISP
       CALL    COMMA
       LD      HL,(BIASED)
       CALL    PSREG
       JP      DCRLF
;
; LD xx,nn
;
T21:
       CALL    PRXX
       CALL    COMMA
       CALL    PRNN
       CALL    C,PDERTN
       JP      DCRLF
;
; LD (nn),xx
;
T22:
       CALL    LPAR
       PUSH    DE
       CALL    PRNN
       EX      DE,HL           ;HL NOW CONTAINS THE NUMBER
       POP     DE              ;RECOVER THE 'E' REG.  ('X' OR 'Y')
       PUSH    AF              ;SAVE THE CARRY FOR A LATER 'PEDRTN'
       CALL    RPAR
       CALL    COMMA
       CALL    PRXX
       POP     AF              ;THE CARRY FLAG IS RESTORED
       EX      DE,HL           ;DE AGAIN CONTAINS THE VALUE FOR nn
       CALL    C,PDERTN
       JP      DCRLF
;
; LD xx,(nn)
;
T23:
       CALL    PRXX
       CALL    COMMA
       CALL    LPAR
       CALL    PRNN
       PUSH    AF              ;SAVE Cy VALUE
       CALL    RPAR
       POP     AF
       CALL    C,PDERTN
       JP      DCRLF
;
; LD (xx+d),n
;
T24:
       INC     HL
       CALL    PDISP
       CALL    COMMA
       JP      TB
;
;THE 'CB' EXTENSIONS TO 'DD' OR 'FD'
;
T25:
       INC     HL
       INC     HL
       LD      B,(HL)
       LD      HL,OPC2-4
       PUSH    DE              ;SAVE 'X' OR 'Y'
       CALL    GTCD
       CALL    TYPEOC
       POP     DE
       LD      A,B             ;GET THE O.C.
       AND     7
       CP      6
       JR      NZ,ILLEG
       LD      A,(OPCTP)
       LD      HL,(BIASED)
       CP      1AH
       JP      C,T1E
       JR      Z,DD12
ILLEG:
       LD      HL,(PC)
       DEC     HL
       DEC     HL
       LD      (PC),HL
       JP      T2A
DD12:
       INC     HL
       INC     HL
       CALL    PBIT
       CALL    COMMA
       DEC     HL
       DEC     HL
       JP      T1E
;
; IN r,(C)
;
T26:
       CALL    PDREG
       CALL    COMMA
       CALL    LPAR
       LD      A,'C'
       CALL    COUT
       CALL    RPAR
       JP      DCRLF
;
;THE BLOCK MOVES AND I/O
;
T27:
       LD      A,(HL)
       AND     8
       LD      A,'I'           ;AN INCREMENTING TYPE OF INSTRUCTION?
       JP      Z,T270
       LD      A,'D'           ;NO, IT WAS DECREMENTING
T270:
       CALL    COUT
       LD      A,(HL)
       AND     10H
       JP      Z,DCRLF
       LD      A,'R'           ;A REPEATING INSTRUCTION TYPE
       CALL    COUT
       JP      DCRLF
;
; LD (nn),dd
;
T28:
       CALL    LPAR
       CALL    PRNN
       PUSH    AF              ;SAVE Cy VALUE
       PUSH    DE              ;SAVE THE 'NN' VALUE
       CALL    RPAR
       CALL    COMMA
       LD      HL,(BIASED)
       CALL    PXSREG
       POP     DE
       POP     AF
       CALL    C,PDERTN
       JP      DCRLF
;
; LD dd,(nn)
;
T29:
       CALL    PXSREG
       CALL    COMMA
       LD      HL,(BIASED)
       CALL    LPAR
       CALL    PRNN
       PUSH    AF
       CALL    RPAR
       POP     AF
       CALL    C,PDERTN
       JP      DCRLF
;
;ALL UNDEFINED OPCODES COME HERE FOR A 'DB VALUE' TREATMENT
;
T2A:
       LD      HL,(PC)
       DEC     HL
       LD      (PC),HL
       LD      HL,(BIASED)
       DEC     HL
       CALL    PSTG
       DEFB    'DB',9,0
       JP      DTABYT
;
;  VARIOUS CHARACTERS TO PRINT
;
COMMA:
       LD      A,','
       JP      COUT
TAB:
       LD      A,9
       JP      COUT
SEMI:
       LD      A,';'
       JP      COUT
LPAR:
       LD      A,'('
       JP      COUT
RPAR:
       LD      A,')'
       JP      COUT
PCMAA:
       CALL    COMMA
       LD      A,'A'
       JP      COUT
;
;  PRINT THE CONDITION CODE LETTERS FOR THIS INSTRUCTION.
;
PRCND:
       LD      A,(HL)
       AND     38H             ;FOR A FULL SET OF CONDITION CODES
PRC:
       RRCA
       RRCA
       LD      HL,CNDTAB
       CALL    SKIP
       LD      A,(HL)
       CALL    COUT
       INC     HL
       LD      A,(HL)
       CP      '.'
       CALL    NZ,COUT
       RET
PRCND1:
       LD      A,(HL)
       AND     18H
       JR      PRC
CNDTAB:
       DEFB    'NZZ.NCC.POPEP.M.'
;
;  PRINT THE SOURCE REGISTER FOR A BYTE
;
PSREG:
       LD      A,(HL)
PREG:
       LD      HL,REGTAB
       AND     7
       CP      6               ;MUST CATCH THE (HL) REFERENCES
       JP      Z,PHLREG
       CALL    SKIP
       LD      A,(HL)
       JP      COUT
PHLREG:
       CALL    LPAR
       LD      A,'H'
       CALL    COUT
       LD      A,'L'
       CALL    COUT
       JP      RPAR
PDREG:
       LD      A,(HL)          ;PRINT THE DESTINATION REGISTER FOR A BYTE
       RRA
       RRA
       RRA
       JP      PREG
;
;  ADVANCE H&L BY (A)
;
SKIP:
       ADD     A,L
       LD      L,A
       RET     NC
       INC     H
       RET
REGTAB:
       DEFB    'BCDEHLMA'      ;'M' IS NEVER PRINTED - '(HL)' IS INSTEAD
;
;  PRINT A DOUBLE REGISTER PAIR
;
PXSREG:
       LD      A,(HL)
       LD      HL,DREGS
       JR      PXREG
PXQREG:
       LD      A,(HL)
       LD      HL,DREGQ
PXREG:
       RRA
       RRA
       RRA
       AND     6
       CALL    SKIP
       LD      A,(HL)
       CALL    COUT
       INC     HL
       LD      A,(HL)
       JP      COUT
DREGS:
       DEFB    'BCDEHLSP'
DREGQ:
       DEFB    'BCDEHLAF'
IXREGS:
       DEFB    'BCDEIXSP'
IYREGS:
       DEFB    'BCDEIYSP'
;
PBIT:
       LD      A,(HL)
       RRA
       RRA
       RRA
       AND     7
       ADD     A,'0'
       JP      COUT
PRXX:
       LD      A,'I'
       CALL    COUT
       LD      A,E
       JP      COUT
;
;PRINT A LEADING QUOTE AND THEN THE ASCII
;.. (PRINT '' FOR ').
;
PASCII:
       PUSH    AF
       LD      A,''''
       CALL    COUT
       POP     AF
       CP      ''''
       JP      NZ,COUT
       PUSH    AF
       CALL    COUT
       POP     AF
       JP      COUT
;PRINT THE VALUE IN A AS HEX
;  WITH A LEADING ZERO IF NECESSARY
PASHEX:
       CP      0A0H
       JP      C,PHEX
       PUSH    AF
       LD      A,'0'
       CALL    COUT
       POP     AF
       JP      PHEX
;PRINT THE STRING AT (HL) FOR (B) CHARACTERS.
PRNT:
       LD      A,(HL)
       CALL    COUT
       INC     HL
       DEC     B
       JP      NZ,PRNT
       RET
;
;PRINT A DISPLACEMENT IN THE FORM '(IX+d)'
PDISP:
       CALL    LPAR
       CALL    PRXX
       LD      A,'+'
       CALL    COUT
       LD      A,(HL)
       CALL    PASHEX
       LD      A,'H'
       CALL    COUT
       JP      RPAR
;
;PRINT THE NEXT 2 BYTES AS A SYMBOL (AND RETURN Cy=1) IF POSSIBLE
;
PRNN:
       INC     HL
       LD      E,(HL)
       INC     HL
       LD      D,(HL)
PRNTDE:
       PUSH    DE
       CALL    SYMSCH
       JP      C,NOMTCH
       CALL    PRNT            ;GOT ONE, SO PRINT IT
       POP     DE
       SCF                     ;INDICATE THAT A SYMBOL WAS PRINTED
       RET
NOMTCH:
       LD      A,(BUILD)       ;DO WE BUILD A SYMBOL?
       OR      A
       POP     DE
       JR      Z,NOBLD         ;JUST PRINT THE HEX VALUE
       PUSH    DE
       CALL    BLDSYM
       POP     DE
       JR      NOBLD
PDERTN:
       LD      A,(XCSW)
       OR      A
       RET     Z               ;DON'T PRINT THE SYMBOL AS A COMMENT
       CALL    TAB             ;WE'LL PRINT A VALUE AS A COMMENT
       CALL    SEMI
NOBLD:
       LD      A,D
       OR      E
       LD      A,'0'
       JR      Z,NOBLD1
       LD      A,D
       OR      A
       JR      Z,NOBLD2
       CALL    PASHEX          ;PRINT THE HIGH ORDER BYTE
       LD      A,E
       CALL    PHEX
NOBLD0:
       LD      A,'H'
NOBLD1:
       CALL    COUT
       OR      A               ;CLEAR THE CARRY
       RET
NOBLD2:
       LD      A,E
PRST:
       CP      0AH
       JR      C,NOBLD3
       CALL    PASHEX
       JR      NOBLD0
NOBLD3:
       ADD     A,'0'
       JR      NOBLD1
;
;  OPCODE TABLES
;
OPC:
       DEFB    0FFH,0EBH,0,'EX DE,HL'
       DEFB    0FFH,008H,0,'EX AF,AF'''
       DEFB    0FFH,0D9H,0,'EXX'
       DEFB    0FFH,0E3H,0,'EX (SP),HL'
       DEFB    0FFH,027H,0,'DAA'
       DEFB    0FFH,0F3H,0,'DI'
       DEFB    0FFH,0FBH,0,'EI'
       DEFB    0FFH,076H,0,'HALT'
       DEFB    0FFH,02FH,0,'CPL'
       DEFB    0FFH,03FH,0,'CCF'
       DEFB    0FFH,000H,0,'NOP'
       DEFB    0FFH,037H,0,'SCF'
       DEFB    0FFH,0E9H,0,'JP (HL)'
       DEFB    0FFH,007H,0,'RLCA'
       DEFB    0FFH,017H,0,'RLA'
       DEFB    0FFH,00FH,0,'RRCA'
       DEFB    0FFH,01FH,0,'RRA'
       DEFB    0FFH,0C9H,0,'RET'
       DEFB    0FFH,0F9H,0,'LD SP,HL'
       DEFB    0F8H,088H,1,'ADC A,'
       DEFB    0F8H,080H,1,'ADD A,'
       DEFB    0F8H,0A0H,1,'AND '
       DEFB    0F8H,0B8H,1,'CP '
       DEFB    0F8H,0B0H,1,'OR '
       DEFB    0F8H,098H,1,'SBC A,'
       DEFB    0F8H,090H,1,'SUB '
       DEFB    0F8H,0A8H,1,'XOR '
       DEFB    0C7H,005H,2,'DEC '
       DEFB    0C7H,004H,2,'INC '
       DEFB    0CFH,009H,3,'ADD HL,'
       DEFB    0CFH,00BH,3,'DEC '
       DEFB    0CFH,003H,3,'INC '
       DEFB    0EFH,00AH,4,'LD A,'
       DEFB    0EFH,002H,5,'LD '
       DEFB    0CFH,0C1H,6,'POP '
       DEFB    0CFH,0C5H,6,'PUSH '
       DEFB    0C7H,0C0H,7,'RET '
       DEFB    0C7H,0C7H,8,'RST '
       DEFB    0C0H,040H,9,'LD '
       DEFB    0C7H,006H,0AH,'LD '
       DEFB    0FFH,0C6H,0BH,'ADD A,'
       DEFB    0FFH,0CEH,0BH,'ADC A,'
       DEFB    0FFH,0E6H,0BH,'AND '
       DEFB    0FFH,0FEH,0BH,'CP '
       DEFB    0FFH,0F6H,0BH,'OR '
       DEFB    0FFH,0D6H,0BH,'SUB '
       DEFB    0FFH,0DEH,0BH,'SBC A,'
       DEFB    0FFH,0EEH,0BH,'XOR '
       DEFB    0FFH,0DBH,0CH,'IN A,'
       DEFB    0FFH,0D3H,0DH,'OUT '
       DEFB    0E7H,020H,0EH,'JR '
       DEFB    0FFH,010H,0FH,'DJNZ '
       DEFB    0FFH,018H,0FH,'JR '
       DEFB    0CFH,001H,10H,'LD '
       DEFB    0FFH,0C3H,11H,'JP '
       DEFB    0FFH,0CDH,11H,'CALL '
       DEFB    0FFH,03AH,12H,'LD A,'
       DEFB    0FFH,02AH,12H,'LD HL,'
       DEFB    0FFH,022H,13H,'LD '
       DEFB    0FFH,032H,14H,'LD '
       DEFB    0C7H,0C4H,15H,'CALL '
       DEFB    0C7H,0C2H,15H,'JP '
       DEFB    0FFH,0CBH,16H,0,0
       DEFB    0FFH,0DDH,17H,0,0
       DEFB    0FFH,0FDH,18H,0,0
       DEFB    0FFH,0EDH,19H
OPC2:
       DEFB    0F8H,000H,01H,'RLC '
       DEFB    0F8H,008H,01H,'RRC '
       DEFB    0F8H,010H,01H,'RL '
       DEFB    0F8H,018H,01H,'RR '
       DEFB    0F8H,020H,01H,'SLA '
       DEFB    0F8H,028H,01H,'SRA '
       DEFB    0F8H,038H,01H,'SRL '
       DEFB    0C0H,040H,1AH,'BIT '
       DEFB    0C0H,080H,1AH,'RES '
       DEFB    0C0H,0C0H,1AH,'SET '
       DEFB    080H,000H,2AH
OPC3:
       DEFB    0FFH,0E3H,1BH,'EX (SP),'
       DEFB    0FFH,0E9H,1CH,'JP '
       DEFB    0FFH,0F9H,1BH,'LD SP,'
       DEFB    0FFH,0E1H,1BH,'POP '
       DEFB    0FFH,0E5H,1BH,'PUSH '
       DEFB    0CFH,009H,1DH,'ADD '
       DEFB    0FFH,023H,1BH,'INC '
       DEFB    0FFH,02BH,1BH,'DEC '
       DEFB    0FFH,034H,1EH,'INC '
       DEFB    0FFH,035H,1EH,'DEC '
       DEFB    0FFH,086H,1EH,'ADD A,'
       DEFB    0FFH,08EH,1EH,'ADC A,'
       DEFB    0FFH,096H,1EH,'SUB '
       DEFB    0FFH,09EH,1EH,'SBC A,'
       DEFB    0FFH,0A6H,1EH,'AND '
       DEFB    0FFH,0AEH,1EH,'XOR '
       DEFB    0FFH,0B6H,1EH,'OR '
       DEFB    0FFH,0BEH,1EH,'CP '
       DEFB    0C7H,046H,1FH,'LD '
       DEFB    0F8H,070H,20H,'LD '
       DEFB    0FFH,021H,21H,'LD '
       DEFB    0FFH,022H,22H,'LD '
       DEFB    0FFH,02AH,23H,'LD '
       DEFB    0FFH,036H,24H,'LD '
       DEFB    0FFH,0CBH,25H,0,0
       DEFB    080H,000H,2AH,0,0
       DEFB    080H,080H,2AH
OPC4:
       DEFB    0FEH,070H,2AH,0,0;PREVENTS 'IN (HL),(C)'
       DEFB    0FFH,044H,00H,'NEG'
       DEFB    0FFH,045H,00H,'RETN'
       DEFB    0FFH,046H,00H,'IM 0'
       DEFB    0FFH,056H,00H,'IM 1'
       DEFB    0FFH,05EH,00H,'IM 2'
       DEFB    0FFH,047H,00H,'LD I,A'
       DEFB    0FFH,04DH,00H,'RETI'
       DEFB    0FFH,04FH,00H,'LD R,A'
       DEFB    0FFH,057H,00H,'LD A,I'
       DEFB    0FFH,05FH,00H,'LD A,R'
       DEFB    0FFH,067H,00H,'RRD'
       DEFB    0FFH,06FH,00H,'RLD'
       DEFB    0CFH,042H,03H,'SBC HL,'
       DEFB    0CFH,04AH,03H,'ADC HL,'
       DEFB    0C7H,040H,26H,'IN '
       DEFB    0C7H,041H,02H,'OUT (C),'
       DEFB    0E7H,0A0H,27H,'LD'
       DEFB    0E7H,0A1H,27H,'CP'
       DEFB    0E7H,0A2H,27H,'IN'
       DEFB    0F7H,0A3H,27H,'OUT'
       DEFB    0F7H,0B3H,27H,'OT'
       DEFB    0CFH,043H,28H,'LD '
       DEFB    0CFH,04BH,29H,'LD '
       DEFB    080H,000H,2AH,0,0
       DEFB    080H,080H,2AH
;
;  END OF OPCODE TABLE
;