.TITLE EM8080 .IDENT /EM8080 V1.2/ ; ; ; ; MODULE REGISTER USAGE: ; R0,R1 Scratch registers. ; R2 BC Register pair. ; R3 DE Register pair. ; R4 HL Register pair. ; R5 Accumulator (bottom byte only). ; R6 Stack pointer (SP). ; R7 Program counter (PC). ; R8 Result of last condition setting operation. ; R9 Least significant bit is Carry (C). ; R10 Holds accumulator prior to last AC setting op. ; R11 Points to NEXT_INST for shorter jump ; ; BEGIN:: ; V_BOOT JUMPS HERE TO LOOP FOREVER JSB RESTORE_REGS ;Pick up Initial Registers. CLRL R8 ;Initialise conditon codes. CLRL R9 ;Initialise Carry. CLRL R10 ;Initialise Half Carry. MOVAB B^NEXT_INST,R11 ;Set up NEXT_INST pointer. ; NEXT_INST: CASEB (R7)+, #0, #255 10$: .WORD OPCODE_00-10$, OPCODE_01-10$, OPCODE_02-10$, OPCODE_03-10$, OPCODE_04-10$ .WORD OPCODE_05-10$, OPCODE_06-10$, OPCODE_07-10$, OPCODE_08-10$, OPCODE_09-10$ .WORD OPCODE_0A-10$, OPCODE_0B-10$, OPCODE_0C-10$, OPCODE_0D-10$, OPCODE_0E-10$ .WORD OPCODE_0F-10$, OPCODE_10-10$, OPCODE_11-10$, OPCODE_12-10$, OPCODE_13-10$ .WORD OPCODE_14-10$, OPCODE_15-10$, OPCODE_16-10$, OPCODE_17-10$, OPCODE_18-10$ .WORD OPCODE_19-10$, OPCODE_1A-10$, OPCODE_1B-10$, OPCODE_1C-10$, OPCODE_1D-10$ .WORD OPCODE_1E-10$, OPCODE_1F-10$, OPCODE_20-10$, OPCODE_21-10$, OPCODE_22-10$ .WORD OPCODE_23-10$, OPCODE_24-10$, OPCODE_25-10$, OPCODE_26-10$, OPCODE_27-10$ .WORD OPCODE_28-10$, OPCODE_29-10$, OPCODE_2A-10$, OPCODE_2B-10$, OPCODE_2C-10$ .WORD OPCODE_2D-10$, OPCODE_2E-10$, OPCODE_2F-10$, OPCODE_30-10$, OPCODE_31-10$ .WORD OPCODE_32-10$, OPCODE_33-10$, OPCODE_34-10$, OPCODE_35-10$, OPCODE_36-10$ .WORD OPCODE_37-10$, OPCODE_38-10$, OPCODE_39-10$, OPCODE_3A-10$, OPCODE_3B-10$ .WORD OPCODE_3C-10$, OPCODE_3D-10$, OPCODE_3E-10$, OPCODE_3F-10$, OPCODE_40-10$ .WORD OPCODE_41-10$, OPCODE_42-10$, OPCODE_43-10$, OPCODE_44-10$, OPCODE_45-10$ .WORD OPCODE_46-10$, OPCODE_47-10$, OPCODE_48-10$, OPCODE_49-10$, OPCODE_4A-10$ .WORD OPCODE_4B-10$, OPCODE_4C-10$, OPCODE_4D-10$, OPCODE_4E-10$, OPCODE_4F-10$ .WORD OPCODE_50-10$, OPCODE_51-10$, OPCODE_52-10$, OPCODE_53-10$, OPCODE_54-10$ .WORD OPCODE_55-10$, OPCODE_56-10$, OPCODE_57-10$, OPCODE_58-10$, OPCODE_59-10$ .WORD OPCODE_5A-10$, OPCODE_5B-10$, OPCODE_5C-10$, OPCODE_5D-10$, OPCODE_5E-10$ .WORD OPCODE_5F-10$, OPCODE_60-10$, OPCODE_61-10$, OPCODE_62-10$, OPCODE_63-10$ .WORD OPCODE_64-10$, OPCODE_65-10$, OPCODE_66-10$, OPCODE_67-10$, OPCODE_68-10$ .WORD OPCODE_69-10$, OPCODE_6A-10$, OPCODE_6B-10$, OPCODE_6C-10$, OPCODE_6D-10$ .WORD OPCODE_6E-10$, OPCODE_6F-10$, OPCODE_70-10$, OPCODE_71-10$, OPCODE_72-10$ .WORD OPCODE_73-10$, OPCODE_74-10$, OPCODE_75-10$, OPCODE_76-10$, OPCODE_77-10$ .WORD OPCODE_78-10$, OPCODE_79-10$, OPCODE_7A-10$, OPCODE_7B-10$, OPCODE_7C-10$ .WORD OPCODE_7D-10$, OPCODE_7E-10$, OPCODE_7F-10$, OPCODE_80-10$, OPCODE_81-10$ .WORD OPCODE_82-10$, OPCODE_83-10$, OPCODE_84-10$, OPCODE_85-10$, OPCODE_86-10$ .WORD OPCODE_87-10$, OPCODE_88-10$, OPCODE_89-10$, OPCODE_8A-10$, OPCODE_8B-10$ .WORD OPCODE_8C-10$, OPCODE_8D-10$, OPCODE_8E-10$, OPCODE_8F-10$, OPCODE_90-10$ .WORD OPCODE_91-10$, OPCODE_92-10$, OPCODE_93-10$, OPCODE_94-10$, OPCODE_95-10$ .WORD OPCODE_96-10$, OPCODE_97-10$, OPCODE_98-10$, OPCODE_99-10$, OPCODE_9A-10$ .WORD OPCODE_9B-10$, OPCODE_9C-10$, OPCODE_9D-10$, OPCODE_9E-10$, OPCODE_9F-10$ .WORD OPCODE_A0-10$, OPCODE_A1-10$, OPCODE_A2-10$, OPCODE_A3-10$, OPCODE_A4-10$ .WORD OPCODE_A5-10$, OPCODE_A6-10$, OPCODE_A7-10$, OPCODE_A8-10$, OPCODE_A9-10$ .WORD OPCODE_AA-10$, OPCODE_AB-10$, OPCODE_AC-10$, OPCODE_AD-10$, OPCODE_AE-10$ .WORD OPCODE_AF-10$, OPCODE_B0-10$, OPCODE_B1-10$, OPCODE_B2-10$, OPCODE_B3-10$ .WORD OPCODE_B4-10$, OPCODE_B5-10$, OPCODE_B6-10$, OPCODE_B7-10$, OPCODE_B8-10$ .WORD OPCODE_B9-10$, OPCODE_BA-10$, OPCODE_BB-10$, OPCODE_BC-10$, OPCODE_BD-10$ .WORD OPCODE_BE-10$, OPCODE_BF-10$, OPCODE_C0-10$, OPCODE_C1-10$, OPCODE_C2-10$ .WORD OPCODE_C3-10$, OPCODE_C4-10$, OPCODE_C5-10$, OPCODE_C6-10$, OPCODE_C7-10$ .WORD OPCODE_C8-10$, OPCODE_C9-10$, OPCODE_CA-10$, OPCODE_CB-10$, OPCODE_CC-10$ .WORD OPCODE_CD-10$, OPCODE_CE-10$, OPCODE_CF-10$, OPCODE_D0-10$, OPCODE_D1-10$ .WORD OPCODE_D2-10$, OPCODE_D3-10$, OPCODE_D4-10$, OPCODE_D5-10$, OPCODE_D6-10$ .WORD OPCODE_D7-10$, OPCODE_D8-10$, OPCODE_D9-10$, OPCODE_DA-10$, OPCODE_DB-10$ .WORD OPCODE_DC-10$, OPCODE_DD-10$, OPCODE_DE-10$, OPCODE_DF-10$, OPCODE_E0-10$ .WORD OPCODE_E1-10$, OPCODE_E2-10$, OPCODE_E3-10$, OPCODE_E4-10$, OPCODE_E5-10$ .WORD OPCODE_E6-10$, OPCODE_E7-10$, OPCODE_E8-10$, OPCODE_E9-10$, OPCODE_EA-10$ .WORD OPCODE_EB-10$, OPCODE_EC-10$, OPCODE_ED-10$, OPCODE_EE-10$, OPCODE_EF-10$ .WORD OPCODE_F0-10$, OPCODE_F1-10$, OPCODE_F2-10$, OPCODE_F3-10$, OPCODE_F4-10$ .WORD OPCODE_F5-10$, OPCODE_F6-10$, OPCODE_F7-10$, OPCODE_F8-10$, OPCODE_F9-10$ .WORD OPCODE_FA-10$, OPCODE_FB-10$, OPCODE_FC-10$, OPCODE_FD-10$, OPCODE_FE-10$ .WORD OPCODE_FF-10$ ; OPCODE_00: JMP (R11) ; NOP ; OPCODE_01: MOVW (R7)+,R2 ; LD BC nn JMP (R11) ; LXI B ; OPCODE_02: MOVB R5,(R2) ; LD (BC) A JMP (R11) ; STAX B ; OPCODE_06: MOVB (R7)+,R1 INSV R1,#8,#8,R2 ; LD B n JMP (R11) ; MVI B ; OPCODE_07: ROTL #1,R5,R5 ; RLCA ROTL #-8,R5,R9 INSV R9,#0,#1,R5 JMP (R11) ; RLC ; OPCODE_08: BRW ILLEGAL_INST ; *** ; OPCODE_0A: MOVB (R2),R5 ; LD A (BC) JMP (R11) ; LDAX B ; OPCODE_0E: MOVB (R7)+,R2 ; LD C n JMP (R11) ; MVI C ; OPCODE_0F: MOVB R5,R9 ; RRCA ROTL #-1,R5,R5 INSV R9,#7,#1,R5 JMP (R11) ; RRC ; OPCODE_10: BRW ILLEGAL_INST ; *** ; OPCODE_11: MOVW (R7)+,R3 ; LD DE nn JMP (R11) ; LXI D ; OPCODE_12: MOVB R5,(R3) ; LD (DE) A JMP (R11) ; STAX D ; OPCODE_16: MOVB (R7)+,R1 INSV R1,#8,#8,R3 ; LD D n JMP (R11) ; MVI D ; OPCODE_17: ASHL #1,R5,R5 ; RLA INSV R9,#0,#1,R5 ROTL #-8,R5,R9 ; REMEMBER CARRY. JMP (R11) ; RAL ; OPCODE_18: BRW ILLEGAL_INST ; *** ; OPCODE_1A: MOVB (R3),R5 ; LD A (DE) JMP (R11) ; LDAX D ; OPCODE_1E: MOVB (R7)+,R3 ; LD E n JMP (R11) ; MVI E ; OPCODE_1F: INSV R9,#8,#1,R5 ; RRA MOVB R5,R9 ROTL #-1,R5,R5 JMP (R11) ; RAR ; OPCODE_20: BRW ILLEGAL_INST ; *** ; OPCODE_21: MOVW (R7)+,R4 ; LD HL nn JMP (R11) ; LXI H ; OPCODE_22: MOVZWL (R7)+,R1 MOVW R4,(R1) ; LD (nn) HL JMP (R11) ; SHLD ; OPCODE_26: MOVB (R7)+,R1 INSV R1,#8,#8,R4 ; LD H n JMP (R11) ; MVI H ; OPCODE_27: MOVB R5,R10 CMPZV #0,#4,R5,#10 BGEQU 10$ SUBB3 R10,R8,R1 XORB3 R10,R8,R0 XORB2 R1,R0 BBC #4,R0,20$ 10$: ADDB #6,R5 20$: BLBS R9,30$ CMPB R5,#^XA0 BLSSU 40$ 30$: ADDB #^X60,R5 MOVPSL R9 40$: MOVB R5,R8 JMP (R11) ; DAA ; OPCODE_28: BRW ILLEGAL_INST ; *** ; OPCODE_2A: MOVZWL (R7)+,R1 ; LD HL (nn) MOVW (R1),R4 JMP (R11) ; LHLD ; OPCODE_2E: MOVB (R7)+,R4 ; LD L n JMP (R11) ; MVI L ; OPCODE_2F: MCOMB R5,R5 ; CPL JMP (R11) ; CMA ; OPCODE_30: BRW ILLEGAL_INST ; *** ; OPCODE_31: MOVW (R7)+,R6 ; LD SP nn JMP (R11) ; LXI SP ; OPCODE_32: MOVZWL (R7)+,R1 MOVB R5,(R1) ; LD (nn) A JMP (R11) ; STA ; OPCODE_03: INCW R2 ; INC BC JMP (R11) ; INX B ; OPCODE_13: INCW R3 ; INC DE JMP (R11) ; INX D ; OPCODE_23: INCW R4 ; INC HL JMP (R11) ; INX H ; OPCODE_33: INCW R6 ; INC SP JMP (R11) ; INX SP ; OPCODE_36: MOVB (R7)+,(R4) ; LD (HL) n JMP (R11) ; MVI M ; OPCODE_37: MOVB #1,R9 ; SCF JMP (R11) ; STC ; OPCODE_38: BRW ILLEGAL_INST ; *** ; OPCODE_09: ADDW R2,R4 ; ADD HL BC MOVPSL R9 JMP (R11) ; DAD B ; OPCODE_19: ADDW R3,R4 ; ADD HL DE MOVPSL R9 JMP (R11) ; DAD D ; OPCODE_29: ADDW R4,R4 ; ADD HL HL MOVPSL R9 JMP (R11) ; DAD H ; OPCODE_39: ADDW R6,R4 ; ADD HL SP MOVPSL R9 JMP (R11) ; DAD SP ; OPCODE_3A: MOVZWL (R7)+,R1 MOVB (R1),R5 ; LD A (nn) JMP (R11) ; LDA ; OPCODE_0B: DECW R2 ; DEC BC JMP (R11) ; DCX B ; OPCODE_1B: DECW R3 ; DEC DE JMP (R11) ; DCX D ; OPCODE_2B: DECW R4 ; DEC HL JMP (R11) ; DCX H ; OPCODE_3B: DECW R6 ; DEC SP JMP (R11) ; DCX SP ; OPCODE_04: ADDW #256,R2 ; INC B ROTL #-8,R2,R8 ; REMEMBER RESULT. JMP (R11) ; INR B ; OPCODE_0C: INCB R2 ; INC C MOVB R2,R8 ; REMEMBER RESULT. JMP (R11) ; INR C ; OPCODE_14: ADDW #256,R3 ; INC D ROTL #-8,R3,R8 ; REMEMBER RESULT. JMP (R11) ; INR D ; OPCODE_1C: INCB R3 ; INC E MOVB R3,R8 ; REMEMBER RESULT. JMP (R11) ; INR E ; OPCODE_24: ADDW #256,R4 ; INC H ROTL #-8,R4,R8 ; REMEMBER RESULT. JMP (R11) ; INR H ; OPCODE_2C: INCB R4 ; INC L MOVB R4,R8 ; REMEMBER RESULT. JMP (R11) ; INR L ; OPCODE_34: INCB (R4) ; INC (HL) MOVB (R4),R8 ; REMEMBER RESULT. JMP (R11) ; INR M ; OPCODE_3C: MOVB R5,R10 INCB R5 ; INC A MOVB R5,R8 ; REMEMBER RESULT. JMP (R11) ; INR A ; OPCODE_05: SUBW #256,R2 ; DEC B ROTL #-8,R2,R8 ; REMEMBER RESULT. JMP (R11) ; DCR B ; OPCODE_0D: DECB R2 ; DEC C MOVB R2,R8 ; REMEMBER RESULT. JMP (R11) ; DCR C ; OPCODE_15: SUBW #256,R3 ; DEC D ROTL #-8,R3,R8 ; REMEMBER RESULT. JMP (R11) ; DCR D ; OPCODE_1D: DECB R3 ; DEC E MOVB R3,R8 ; REMEMBER RESULT. JMP (R11) ; DCR E ; OPCODE_25: SUBW #256,R4 ; DEC H ROTL #-8,R4,R8 ; REMEMBER RESULT. JMP (R11) ; DCR H ; OPCODE_2D: DECB R4 ; DEC L MOVB R4,R8 ; REMEMBER RESULT. JMP (R11) ; DCR L ; OPCODE_35: DECB (R4) ; DEC (HL) MOVB (R4),R8 ; REMEMBER RESULT. JMP (R11) ; DCR M ; OPCODE_3D: DECB R5 ; DEC A MOVB R5,R8 ; REMEMBER RESULT. JMP (R11) ; DCR A ; OPCODE_3E: MOVB (R7)+,R5 ; LD A n JMP (R11) ; MVI A ; OPCODE_3F: MCOMB R9,R9 ; CCF JMP (R11) ; CMC ; OPCODE_40: JMP (R11) ; MOV B,B ; OPCODE_41: INSV R2,#8,#8,R2 ; LD B C JMP (R11) ; MOV B,C ; OPCODE_42: ROTL #-8,R3,R1 INSV R1,#8,#8,R2 ; LD B D JMP (R11) ; MOV B,D ; OPCODE_43: INSV R3,#8,#8,R2 ; LD B E JMP (R11) ; MOV B,E ; OPCODE_44: ROTL #-8,R4,R1 INSV R1,#8,#8,R2 ; LD B H JMP (R11) ; MOV B,H ; OPCODE_45: INSV R4,#8,#8,R2 ; LD B L JMP (R11) ; MOV B,L ; OPCODE_46: INSV (R4),#8,#8,R2 ; LD B (HL) JMP (R11) ; MOV B,M ; OPCODE_47: INSV R5,#8,#8,R2 ; LD B A JMP (R11) ; MOV B,A ; OPCODE_48: ROTL #-8,R2,R1 MOVB R1,R2 ; LD C B JMP (R11) ; MOV C,B ; OPCODE_49: JMP (R11) ; MOV C,C ; OPCODE_4A: ROTL #-8,R3,R1 MOVB R1,R2 ; LD C D JMP (R11) ; MOV C,D ; OPCODE_4B: MOVB R3,R2 ; LD C E JMP (R11) ; MOV C,E ; OPCODE_4C: ROTL #-8,R4,R1 MOVB R1,R2 ; LD C H JMP (R11) ; MOV C,H ; OPCODE_4D: MOVB R4,R2 ; LD C L JMP (R11) ; MOV C,L ; OPCODE_4E: MOVB (R4),R2 ; LD C (HL) JMP (R11) ; MOV C,M ; OPCODE_4F: MOVB R5,R2 ; LD C A JMP (R11) ; MOV C,A ; OPCODE_50: ROTL #-8,R2,R1 INSV R1,#8,#8,R3 ; LD D B JMP (R11) ; MOV D,B ; OPCODE_51: INSV R2,#8,#8,R3 ; LD D C JMP (R11) ; MOV D,C ; OPCODE_52: JMP (R11) ; MOV D,D ; OPCODE_53: INSV R3,#8,#8,R3 ; LD D E JMP (R11) ; MOV D,E ; OPCODE_54: ROTL #-8,R4,R1 INSV R1,#8,#8,R3 ; LD D H JMP (R11) ; MOV D,H ; OPCODE_55: INSV R4,#8,#8,R3 ; LD D L JMP (R11) ; MOV D,L ; OPCODE_56: INSV (R4),#8,#8,R3 ; LD D (HL) JMP (R11) ; MOV D,M ; OPCODE_57: INSV R5,#8,#8,R3 ; LD D A JMP (R11) ; MOV D,A ; OPCODE_58: ROTL #-8,R2,R1 MOVB R1,R3 ; LD E B JMP (R11) ; MOV E,B ; OPCODE_59: MOVB R2,R3 ; LD E C JMP (R11) ; MOV E,C ; OPCODE_5A: ROTL #-8,R3,R1 MOVB R1,R3 ; LD E D JMP (R11) ; MOV E,D ; OPCODE_5B: JMP (R11) ; MOV E,E ; OPCODE_5C: ROTL #-8,R4,R1 MOVB R1,R3 ; LD E H JMP (R11) ; MOV E,H ; OPCODE_5D: MOVB R4,R3 ; LD E L JMP (R11) ; MOV E,L ; OPCODE_5E: MOVB (R4),R3 ; LD E (HL) JMP (R11) ; MOV E,M ; OPCODE_5F: MOVB R5,R3 ; LD E A JMP (R11) ; MOV E,A ; OPCODE_60: ROTL #-8,R2,R1 INSV R1,#8,#8,R4 ; LD H B JMP (R11) ; MOV H,B ; OPCODE_61: INSV R2,#8,#8,R4 ; LD H C JMP (R11) ; MOV H,C ; OPCODE_62: ROTL #-8,R3,R1 INSV R1,#8,#8,R4 ; LD H D JMP (R11) ; MOV H,D ; OPCODE_63: INSV R3,#8,#8,R4 ; LD H E JMP (R11) ; MOV H,E ; OPCODE_64: JMP (R11) ; MOV H,H ; OPCODE_65: INSV R4,#8,#8,R4 ; LD H L JMP (R11) ; MOV H,L ; OPCODE_66: INSV (R4),#8,#8,R4 ; LD H (HL) JMP (R11) ; MOV H,M ; OPCODE_67: INSV R5,#8,#8,R4 ; LD H A JMP (R11) ; MOV H,A ; OPCODE_68: ROTL #-8,R2,R1 MOVB R1,R4 ; LD L B JMP (R11) ; MOV L,B ; OPCODE_69: MOVB R2,R4 ; LD L C JMP (R11) ; MOV L,C ; OPCODE_6A: ROTL #-8,R3,R1 MOVB R1,R4 ; LD L D JMP (R11) ; MOV L,D ; OPCODE_6B: MOVB R3,R4 ; LD L E JMP (R11) ; MOV L,E ; OPCODE_6C: ROTL #-8,R4,R1 MOVB R1,R4 ; LD L H JMP (R11) ; MOV L,H ; OPCODE_6D: JMP (R11) ; MOV L,L ; OPCODE_6E: MOVB (R4),R4 ; LD L (HL) JMP (R11) ; MOV L,M ; OPCODE_6F: MOVB R5,R4 ; LD L A JMP (R11) ; MOV L,A ; OPCODE_70: ROTL #-8,R2,R1 MOVB R1,(R4) ; LD (HL) B JMP (R11) ; MOV M,B ; OPCODE_71: MOVB R2,(R4) ; LD (HL) C JMP (R11) ; MOV M,C ; OPCODE_72: ROTL #-8,R3,R1 MOVB R1,(R4) ; LD (HL) D JMP (R11) ; MOV M,D ; OPCODE_73: MOVB R3,(R4) ; LD (HL) E JMP (R11) ; MOV M,E ; OPCODE_74: ROTL #-8,R4,R1 MOVB R1,(R4) ; LD (HL) H JMP (R11) ; MOV M,H ; OPCODE_75: MOVB R4,(R4) ; LD (HL) L JMP (R11) ; MOV M,L ; OPCODE_76: BRW HALT_INST ; HLT ; OPCODE_77: MOVB R5,(R4) ; LD (HL) A JMP (R11) ; MOV M,A ; OPCODE_78: ROTL #-8,R2,R1 MOVB R1,R5 ; LD A B JMP (R11) ; MOV A,B ; OPCODE_79: MOVB R2,R5 ; LD A C JMP (R11) ; MOV A,C ; OPCODE_7A: ROTL #-8,R3,R1 MOVB R1,R5 ; LD A D JMP (R11) ; MOV A,D ; OPCODE_7B: MOVB R3,R5 ; LD A E JMP (R11) ; MOV A,E ; OPCODE_7C: ROTL #-8,R4,R5 ; LD A H JMP (R11) ; MOV A,H ; OPCODE_7D: MOVB R4,R5 ; LD A L JMP (R11) ; MOV A,L ; OPCODE_7E: MOVB (R4),R5 ; LD A (HL) JMP (R11) ; MOV A,M ; OPCODE_7F: JMP (R11) ; MOV A,A ; OPCODE_80: MOVB R5,R10 ROTL #-8,R2,R1 ADDB R1,R5 ; ADD A B MOVPSL R9 ; ADD B MOVB R5,R8 JMP (R11) ; OPCODE_81: MOVB R5,R10 ADDB R2,R5 ; ADD A C MOVPSL R9 ; ADD C MOVB R5,R8 JMP (R11) ; OPCODE_82: MOVB R5,R10 ROTL #-8,R3,R1 ADDB R1,R5 ; ADD A D MOVPSL R9 ; ADD D MOVB R5,R8 JMP (R11) ; OPCODE_83: MOVB R5,R10 ADDB R3,R5 ; ADD A E MOVPSL R9 ; ADD E MOVB R5,R8 JMP (R11) ; OPCODE_84: MOVB R5,R10 ROTL #-8,R4,R1 ADDB R1,R5 ; ADD A H MOVPSL R9 ; ADD H MOVB R5,R8 JMP (R11) ; OPCODE_85: MOVB R5,R10 ADDB R4,R5 ; ADD A L MOVPSL R9 ; ADD L MOVB R5,R8 JMP (R11) ; OPCODE_86: MOVB R5,R10 ADDB (R4),R5 ; ADD A (HL) MOVPSL R9 ; ADD M MOVB R5,R8 JMP (R11) ; OPCODE_87: MOVB R5,R10 ADDB R5,R5 ; ADD A A MOVPSL R9 ; ADD A MOVB R5,R8 JMP (R11) ; OPCODE_C6: MOVB R5,R10 ADDB (R7)+,R5 ; ADD A n MOVPSL R9 ; ADI MOVB R5,R8 JMP (R11) ; OPCODE_88: EXTZV #8,#8,R2,R1 ; ADC A B BRB ADC_INST ; ADC B ; OPCODE_89: MOVZBW R2,R1 ; ADC A C BRB ADC_INST ; ADC C ; OPCODE_8A: EXTZV #8,#8,R3,R1 ; ADC A D BRB ADC_INST ; ADC D ; OPCODE_8B: MOVZBW R3,R1 ; ADC A E BRB ADC_INST ; ADC E ; OPCODE_8C: EXTZV #8,#8,R4,R1 ; ADC A H BRB ADC_INST ; ADC H ; OPCODE_8D: MOVZBW R4,R1 ; ADC A L BRB ADC_INST ; ADC L ; OPCODE_8E: MOVZBW (R4),R1 ; ADC A (HL) BRB ADC_INST ; ADC M ; OPCODE_8F: MOVZBW R5,R1 ; ADC A A BRB ADC_INST ; ADC A ; OPCODE_CE: MOVZBW (R7)+,R1 ; ADC A n ; ADC n ADC_INST: MOVB R5,R10 MOVZBW R5,R5 BLBC R9,10$ INCW R5 10$: ADDW2 R1,R5 ROTL #-8,R5,R9 MOVB R5,R8 JMP (R11) ; OPCODE_90: ROTL #-8,R2,R1 SUBB R1,R5 ; SUB A B MOVPSL R9 ; SUB B MOVB R5,R8 JMP (R11) ; OPCODE_91: SUBB R2,R5 ; SUB A C MOVPSL R9 ; SUB C MOVB R5,R8 JMP (R11) ; OPCODE_92: ROTL #-8,R3,R1 SUBB R1,R5 ; SUB A D MOVPSL R9 ; SUB D MOVB R5,R8 JMP (R11) ; OPCODE_93: SUBB R3,R5 ; SUB A E MOVPSL R9 ; SUB E MOVB R5,R8 JMP (R11) ; OPCODE_94: ROTL #-8,R4,R1 SUBB R1,R5 ; SUB A H MOVPSL R9 ; SUB H MOVB R5,R8 JMP (R11) ; OPCODE_95: SUBB R4,R5 ; SUB A L MOVPSL R9 ; SUB M MOVB R5,R8 JMP (R11) ; OPCODE_96: SUBB (R4),R5 ; SUB A (HL) MOVPSL R9 ; SUB M MOVB R5,R8 JMP (R11) ; OPCODE_97: SUBB R5,R5 ; SUB A A MOVPSL R9 ; SUB A MOVB R5,R8 JMP (R11) ; OPCODE_D6: SUBB2 (R7)+,R5 ; SUB A n MOVPSL R9 ; SUI MOVB R5,R8 JMP (R11) ; OPCODE_98: EXTZV #8,#8,R2,R1 ; SBB A B BRB SBC_INST ; SBB B ; OPCODE_99: MOVZBW R2,R1 ; SBC A C BRB SBC_INST ; SBB C ; OPCODE_9A: EXTZV #8,#8,R3,R1 ; SBC A D BRB SBC_INST ; SBB D ; OPCODE_9B: MOVZBW R3,R1 ; SBC A E BRB SBC_INST ; SBB E ; OPCODE_9C: EXTZV #8,#8,R4,R1 ; SBC A H BRB SBC_INST ; SBB H ; OPCODE_9D: MOVZBW R4,R1 ; SBC A L BRB SBC_INST ; SBB L ; OPCODE_9E: MOVZBW (R4),R1 ; SBC A (HL) BRB SBC_INST ; SBB M ; OPCODE_9F: MOVZBW R5,R1 ; SBC A A BRB SBC_INST ; SBB A ; OPCODE_DE: MOVZBW (R7)+,R1 ; SBC A n ; SBI n SBC_INST: MOVZBW R5,R5 BLBC R9,10$ DECW R5 10$: SUBW2 R1,R5 ROTL #-8,R5,R9 MOVB R5,R8 JMP (R11) ; OPCODE_A0: ROTL #-8,R2,R1 MCOMB R1,R1 ; AND A B BICB2 R1,R5 ; ANA B MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A1: MCOMB R2,R1 ; AND A C BICB2 R1,R5 ; ANA C MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A2: ROTL #-8,R3,R1 MCOMB R1,R1 ; AND A D BICB2 R1,R5 ; ANA D MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A3: MCOMB R3,R1 ; AND A E BICB2 R1,R5 ; ANA H MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A4: ROTL #-8,R4,R1 MCOMB R1,R1 ; AND A H BICB2 R1,R5 ; ANA H MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A5: MCOMB R4,R1 ; AND A L BICB2 R1,R5 ; ANA L MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A6: MCOMB (R4),R1 ; AND A (HL) BICB2 R1,R5 ; ANA M MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A7: MCOMB R5,R1 ; AND A A BICB2 R1,R5 ; ANA A MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_E6: MCOMB (R7)+,R1 ; AND A n BICB2 R1,R5 ; ANI MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_A8: ROTL #-8,R2,R1 XORB R1,R5 ; XOR A B BRB XOR_INST ; XRA B ; OPCODE_A9: XORB R2,R5 ; XOR A C BRB XOR_INST ; XRA C ; OPCODE_AA: ROTL #-8,R3,R1 XORB R1,R5 ; XOR A D BRB XOR_INST ; XRA D ; OPCODE_AB: XORB R3,R5 ; XOR A E BRB XOR_INST ; XRA E ; OPCODE_AC: ROTL #-8,R4,R1 XORB R1,R5 ; XOR A H BRB XOR_INST ; XRA H ; OPCODE_AD: XORB R4,R5 ; XOR A L BRB XOR_INST ; XRA L ; OPCODE_AE: XORB (R4),R5 ; XOR A (HL) BRB XOR_INST ; XRA M ; OPCODE_AF: XORB R5,R5 ; XOR A A BRB XOR_INST ; XRA A ; OPCODE_EE: XORB (R7)+,R5 ; XOR A n ; XRI XOR_INST: MOVB R5,R8 CLRB R9 JMP (R11) ; OPCODE_B0: ROTL #-8,R2,R1 BISB R1,R5 ; OR A B MOVB R5,R8 ; ORA B CLRB R9 JMP (R11) ; OPCODE_B1: BISB R2,R5 ; OR A C MOVB R5,R8 ; ORA C CLRB R9 JMP (R11) ; OPCODE_B2: ROTL #-8,R3,R1 BISB R1,R5 ; OR A D MOVB R5,R8 ; ORA D CLRB R9 JMP (R11) ; OPCODE_B3: BISB R3,R5 ; OR A E MOVB R5,R8 ; ORA E CLRB R9 JMP (R11) ; OPCODE_B4: ROTL #-8,R4,R1 BISB R1,R5 ; OR A H MOVB R5,R8 ; ORA H CLRB R9 JMP (R11) ; OPCODE_B5: BISB R4,R5 ; OR A L MOVB R5,R8 ; ORA L CLRB R9 JMP (R11) ; OPCODE_B6: BISB (R4),R5 ; OR A (HL) MOVB R5,R8 ; ORA M CLRB R9 JMP (R11) ; OPCODE_B7: BISB R5,R5 ; OR A A MOVB R5,R8 ; ORA A CLRB R9 JMP (R11) ; OPCODE_F6: BISB (R7)+,R5 ; OR A n MOVB R5,R8 ; ORI CLRB R9 JMP (R11) ; OPCODE_B8: ROTL #-8,R2,R1 SUBB3 R1,R5,R8 ; CP A B MOVPSL R9 JMP (R11) ; CMP B ; OPCODE_B9: SUBB3 R2,R5,R8 ; CP A C MOVPSL R9 JMP (R11) ; CMP C ; OPCODE_BA: ROTL #-8,R3,R1 SUBB3 R1,R5,R8 ; CP A D MOVPSL R9 JMP (R11) ; CMP D ; OPCODE_BB: SUBB3 R3,R5,R8 ; CP A E MOVPSL R9 JMP (R11) ; CMP E ; OPCODE_BC: ROTL #-8,R4,R1 SUBB3 R1,R5,R8 ; CP A H MOVPSL R9 JMP (R11) ; CMP H ; OPCODE_BD: SUBB3 R4,R5,R8 ; CP A L MOVPSL R9 JMP (R11) ; CMP L ; OPCODE_BE: SUBB3 (R4),R5,R8 ; CP A (HL) MOVPSL R9 JMP (R11) ; CMP M ; OPCODE_BF: SUBB3 R5,R5,R8 ; CP A A MOVPSL R9 JMP (R11) ; CMP A ; OPCODE_FE: SUBB3 (R7)+,R5,R8 ; CP A n MOVPSL R9 JMP (R11) ; CPI ; OPCODE_C2: TSTB R8 BNEQ JMP_INST TSTW (R7)+ JMP (R11) ; JNZ ; OPCODE_CA: TSTB R8 BEQL JMP_INST TSTW (R7)+ JMP (R11) ; JZ ; OPCODE_D2: BLBC R9,JMP_INST TSTW (R7)+ JMP (R11) ; JNC ; OPCODE_DA: BLBS R9,JMP_INST TSTW (R7)+ JMP (R11) ; JC ; OPCODE_F2: TSTB R8 BGEQ JMP_INST TSTW (R7)+ JMP (R11) ; JP ; OPCODE_FA: TSTB R8 BLSS JMP_INST TSTW (R7)+ JMP (R11) ; JM ; JMP_INST: OPCODE_C3: MOVZWL (R7)+,R7 ; JP nn JMP (R11) ; JMP ; OPCODE_C0: TSTB R8 ; RET NZ BNEQ RET_INST JMP (R11) ; RNZ ; OPCODE_C8: TSTB R8 ; RET Z BEQL RET_INST JMP (R11) ; RZ ; OPCODE_D0: BLBC R9,RET_INST JMP (R11) ; RNC ; OPCODE_D8: BLBS R9,RET_INST JMP (R11) ; RC ; OPCODE_F0: TSTB R8 BGEQ RET_INST JMP (R11) ; RP ; OPCODE_F8: TSTB R8 BLSS RET_INST JMP (R11) ; RM ; RET_INST: OPCODE_C9: MOVZWL (R6)+,R7 JMP (R11) ; RET ; OPCODE_CB: BRW ILLEGAL_INST ; *** ; OPCODE_C4: MOVW (R7)+,R1 TSTB R8 BNEQ CALL_INST JMP (R11) ; CNZ ; OPCODE_CC: MOVW (R7)+,R1 TSTB R8 BEQL CALL_INST JMP (R11) ; CZ ; OPCODE_D4: MOVW (R7)+,R1 BLBC R9,CALL_INST JMP (R11) ; CNC ; OPCODE_DC: MOVW (R7)+,R1 BLBS R9,CALL_INST JMP (R11) ; CC ; OPCODE_F4: MOVW (R7)+,R1 TSTB R8 BGEQ CALL_INST JMP (R11) ; CP ; OPCODE_FC: MOVW (R7)+,R1 TSTB R8 BLSS CALL_INST JMP (R11) ; CM ; OPCODE_CD: MOVW (R7)+,R1 CALL_INST: MOVW R7,-(R6) MOVZWL R1,R7 JMP (R11) ; CALL ; OPCODE_D3: MOVZBL (R7)+,-(SP) JSB SAVE_REGS ; Save 8080 context. CALLS #1,OUT_INST ; Do OUT stuff. JSB RESTORE_REGS ; Restore 8080 context. JMP (R11) ; OUT ; OPCODE_D9: BRW ILLEGAL_INST ; *** ; OPCODE_DB: MOVZBL (R7)+,-(SP) JSB SAVE_REGS ; Save 8080 context. CALLS #1,IN_INST ; Do IN stuff. JSB RESTORE_REGS ; Restore 8080 context. JMP (R11) ; IN ; OPCODE_DD: BRW ILLEGAL_INST ; *** ; OPCODE_E0: BPT ; ??? JMP (R11) ; RPO ; OPCODE_E2: BPT ; ??? JMP (R11) ; JPO ; OPCODE_E3: MOVZWL R4,R1 MOVW (R6),R4 MOVW R1,(R6) ; EX (SP) HL JMP (R11) ; XTHL ; OPCODE_E4: BPT ;??? JMP (R11) ; CPO ; OPCODE_E8: BPT ;??? JMP (R11) ; RPE ; OPCODE_E9: MOVZWL R4,R7 ; JP (HL) JMP (R11) ; PCHL ; OPCODE_EA: BPT ;??? JMP (R11) ; JPE ; OPCODE_EB: MOVZWL R4,R1 MOVW R3,R4 MOVW R1,R3 ; EX DE HL JMP (R11) ; XCHG ; OPCODE_EC: BPT ;??? JMP (R11) ; CPE ; OPCODE_ED: BRW ILLEGAL_INST ; *** ; OPCODE_C1: MOVW (R6)+,R2 JMP (R11) ; POP B ; OPCODE_D1: MOVW (R6)+,R3 JMP (R11) ; POP D ; OPCODE_E1: MOVW (R6)+,R4 JMP (R11) ; POP H ; OPCODE_F1: MOVB #^X81,R8 MOVB (R6)+,R9 ; GET FLAGS BLSS 10$ CLRB R8 BBS #6,R9,10$ MOVB #3,R8 10$: MOVZBL (R6)+,R5 JMP (R11) ; POP PSW ; OPCODE_F3: JMP (R11) ; DI ; OPCODE_C5: MOVW R2,-(R6) JMP (R11) ; PUSH B ; OPCODE_D5: MOVW R3,-(R6) JMP (R11) ; PUSH D ; OPCODE_E5: MOVW R4,-(R6) JMP (R11) ; PUSH H ; OPCODE_F5: TSTB R8 MOVPSL R1 ASHL #4,R1,R1 INSV #1,#1,#5,R1 INSV R9,#0,#1,R1 MOVB R5,-(R6) MOVB R1,-(R6) JMP (R11) ; PUSH PSW ; OPCODE_F9: MOVZWL R4,R6 ; LD SP HL JMP (R11) ; SPHL ; OPCODE_FB: JMP (R11) ; EI ; OPCODE_FD: BRW ILLEGAL_INST ; *** ; OPCODE_C7: MOVW R7,-(R6) CLRL R7 JMP (R11) ; RST 0 ; OPCODE_CF: MOVW R7,-(R6) MOVZBL #8,R7 JMP (R11) ; RST 1 ; OPCODE_D7: MOVW R7,-(R6) MOVZBL #16,R7 JMP (R11) ; RST 2 ; OPCODE_DF: MOVW R7,-(R6) MOVZBL #24,R7 JMP (R11) ; RST 3 ; OPCODE_E7: MOVW R7,-(R6) MOVZBL #32,R7 JMP (R11) ; RST 4 ; OPCODE_EF: MOVW R7,-(R6) MOVZBL #40,R7 JMP (R11) ; RST 5 ; OPCODE_F7: MOVW R7,-(R6) MOVZBL #48,R7 JMP (R11) ; RST 6 ; OPCODE_FF: MOVW R7,-(R6) MOVZBL #56,R7 JMP (R11) ; RST 7 ; ; ; HALT_INST: ILLEGAL_INST: BPT JMP (R11) ; ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ; REG_BC:: REG_C:: .BYTE 0 REG_B:: .BYTE 0 ; REG_DE:: REG_E:: .BYTE 0 REG_D:: .BYTE 0 ; REG_HL:: REG_L:: .BYTE 0 REG_H:: .BYTE 0 ; REG_A:: .BYTE 0 ; REG_SP::.WORD 0 ; REG_PC::.WORD 0 ; ; SAVE_REGS:: MOVW R2,REG_BC ; Save BC MOVW R3,REG_DE MOVW R4,REG_HL MOVB R5,REG_A MOVW R6,REG_SP MOVW R7,REG_PC RSB ; CONTEXT ALL SAVED ; RESTORE_REGS:: MOVZWL REG_PC,R7 MOVZWL REG_SP,R6 MOVB REG_A,R5 MOVZWL REG_HL,R4 MOVZWL REG_DE,R3 MOVZWL REG_BC,R2 RSB ; CONTEXT ALL RESTORED. ; ;------------------------------------------------------------------------------ ; ; ;NOP ==^X00 ;LXI_B ==^X01 ;STAX_B ==^X02 ;MVI_B ==^X06 ;RLC ==^X07 ;OP_08 ==^X08 ;LDAX_B ==^X0A ;MVI_C ==^X0E ;RRC ==^X0F ;OP_10 ==^X10 ;LXI_D ==^X11 ;STAX_D ==^X12 ;MVI_D ==^X16 ;RAL ==^X17 ;OP_18 ==^X18 ;LDAX_D ==^X1A ;MVI_E ==^X1E ;RAR ==^X1F ;OP_20 ==^X20 ;LXI_H ==^X21 ;SHLD ==^X22 ;MVI_H ==^X26 ;DAA ==^X27 ;OP_28 ==^X28 ;LHLD ==^X2A ;MVI_L ==^X2E ;CMA ==^X2F ;OP_30 ==^X30 ;LXI_SP ==^X31 ;STA ==^X32 ;INX_B ==^X03 ;INX_D ==^X13 ;INX_H ==^X23 ;INX_SP ==^X33 ;MVI_M ==^X36 ;STC ==^X37 ;OP_38 ==^X38 ;DAD_B ==^X09 ;DAD_D ==^X19 ;DAD_H ==^X29 ;DAD_SP ==^X39 ;LDA ==^X3A ;DCX_B ==^X0B ;DCX_D ==^X1B ;DCX_H ==^X2B ;DCX_SP ==^X3B ;INR_B ==^X04 ;INR_C ==^X0C ;INR_D ==^X14 ;INR_E ==^X1C ;INR_H ==^X24 ;INR_L ==^X2C ;INR_M ==^X34 ;INR_A ==^X3C ;DCR_B ==^X05 ;DCR_C ==^X0D ;DCR_D ==^X15 ;DCR_E ==^X1D ;DCR_H ==^X25 ;DCR_L ==^X2D ;DCR_M ==^X35 ;DCR_A ==^X3D ;MVI_A ==^X3E ;CMC ==^X3F ;MOV_B_B ==^X40 ;MOV_B_C ==^X41 ;MOV_B_D ==^X42 ;MOV_B_E ==^X43 ;MOV_B_H ==^X44 ;MOV_B_L ==^X45 ;MOV_B_M ==^X46 ;MOV_B_A ==^X47 ;MOV_C_B ==^X48 ;MOV_C_C ==^X49 ;MOV_C_D ==^X4A ;MOV_C_E ==^X4B ;MOV_C_H ==^X4C ;MOV_C_L ==^X4D ;MOV_C_M ==^X4E ;MOV_C_A ==^X4F ;MOV_D_B ==^X50 ;MOV_D_C ==^X51 ;MOV_D_D ==^X52 ;MOV_D_E ==^X53 ;MOV_D_H ==^X54 ;MOV_D_L ==^X55 ;MOV_D_M ==^X56 ;MOV_D_A ==^X57 ;MOV_E_B ==^X58 ;MOV_E_C ==^X59 ;MOV_E_D ==^X5A ;MOV_E_E ==^X5B ;MOV_E_H ==^X5C ;MOV_E_L ==^X5D ;MOV_E_M ==^X5E ;MOV_E_A ==^X5F ;MOV_H_B ==^X60 ;MOV_H_C ==^X61 ;MOV_H_D ==^X62 ;MOV_H_E ==^X63 ;MOV_H_H ==^X64 ;MOV_H_L ==^X65 ;MOV_H_M ==^X66 ;MOV_H_A ==^X67 ;MOV_L_B ==^X68 ;MOV_L_C ==^X69 ;MOV_L_D ==^X6A ;MOV_L_E ==^X6B ;MOV_L_H ==^X6C ;MOV_L_L ==^X6D ;MOV_L_M ==^X6E ;MOV_L_A ==^X6F ;MOV_M_B ==^X70 ;MOV_M_C ==^X71 ;MOV_M_D ==^X72 ;MOV_M_E ==^X73 ;MOV_M_H ==^X74 ;MOV_M_L ==^X75 ;HLT ==^X76 ;MOV_M_A ==^X77 ;MOV_A_B ==^X78 ;MOV_A_C ==^X79 ;MOV_A_D ==^X7A ;MOV_A_E ==^X7B ;MOV_A_H ==^X7C ;MOV_A_L ==^X7D ;MOV_A_M ==^X7E ;MOV_A_A ==^X7F ;ADD_B ==^X80 ;ADD_C ==^X81 ;ADD_D ==^X82 ;ADD_E ==^X83 ;ADD_H ==^X84 ;ADD_L ==^X85 ;ADD_M ==^X86 ;ADD_A ==^X87 ;ADI ==^XC6 ;ADC_B ==^X88 ;ADC_C ==^X89 ;ADC_D ==^X8A ;ADC_E ==^X8B ;ADC_H ==^X8C ;ADC_L ==^X8D ;ADC_M ==^X8E ;ADC_A ==^X8F ;ACI ==^XCE ;SUB_B ==^X90 ;SUB_C ==^X91 ;SUB_D ==^X92 ;SUB_E ==^X93 ;SUB_H ==^X94 ;SUB_L ==^X95 ;SUB_M ==^X96 ;SUB_A ==^X97 ;SUI ==^XD6 ;SBB_B ==^X98 ;SBB_C ==^X99 ;SBB_D ==^X9A ;SBB_E ==^X9B ;SBB_H ==^X9C ;SBB_L ==^X9D ;SBB_M ==^X9E ;SBB_A ==^X9F ;SBI ==^XDE ;ANA_B ==^XA0 ;ANA_C ==^XA1 ;ANA_D ==^XA2 ;ANA_E ==^XA3 ;ANA_H ==^XA4 ;ANA_L ==^XA5 ;ANA_M ==^XA6 ;ANA_A ==^XA7 ;ANI ==^XE6 ;XRA_B ==^XA8 ;XRA_C ==^XA9 ;XRA_D ==^XAA ;XRA_E ==^XAB ;XRA_H ==^XAC ;XRA_L ==^XAD ;XRA_M ==^XAE ;XRA_A ==^XAF ;XRI ==^XEE ;ORA_B ==^XB0 ;ORA_C ==^XB1 ;ORA_D ==^XB2 ;ORA_E ==^XB3 ;ORA_H ==^XB4 ;ORA_L ==^XB5 ;ORA_M ==^XB6 ;ORA_A ==^XB7 ;ORI ==^XF6 ;CMP_B ==^XB8 ;CMP_C ==^XB9 ;CMP_D ==^XBA ;CMP_E ==^XBB ;CMP_H ==^XBC ;CMP_L ==^XBD ;CMP_M ==^XBE ;CMP_A ==^XBF ;CPI ==^XFE ;JNZ ==^XC2 ;JZ ==^XCA ;JNC ==^XD2 ;JC ==^XDA ;JP ==^XF2 ;JM ==^XFA ;JMP ==^XC3 ;RNZ ==^XC0 ;RZ ==^XC8 ;RNC ==^XD0 ;RC ==^XD8 ;RP ==^XF0 ;RM ==^XF8 ;RET ==^XC9 ;OP_CB ==^XCB ;CNZ ==^XC4 ;CZ ==^XCC ;CNC ==^XD4 ;CC ==^XDC ;CP ==^XF4 ;CM ==^XFC ;CALL ==^XCD ;OUT ==^XD3 ;OP_D9 ==^XD9 ;IN ==^XDB ;OP_DD ==^XDD ;RPO ==^XE0 ;JPO ==^XE2 ;XTHL ==^XE3 ;CPO ==^XE4 ;RPE ==^XE8 ;PCHL ==^XE9 ;JPE ==^XEA ;XCHG ==^XEB ;CPE ==^XEC ;OP_ED ==^XED ;POP_B ==^XC1 ;POP_D ==^XD1 ;POP_H ==^XE1 ;POP_PSW ==^XF1 ;DI ==^XF3 ;PUSH_B ==^XC5 ;PUSH_D ==^XD5 ;PUSH_H ==^XE5 ;PUSH_PSW==^XF5 ;SPHL ==^XF9 ;EI ==^XFB ;OP_FD ==^XFD ;RST_0 ==^XC7 ;RST_1 ==^XCF ;RST_2 ==^XD7 ;RST_3 ==^XDF ;RST_4 ==^XE7 ;RST_5 ==^XEF ;RST_6 ==^XF7 ;RST_7 ==^XFF ; .END