URL
https://opencores.org/ocsvn/wb_z80/wb_z80/trunk
Subversion Repositories wb_z80
[/] [wb_z80/] [trunk/] [inc/] [work_updreg.v] - Rev 40
Go to most recent revision | Compare with Previous | Blame | View Log
/////////////////////////////////////////////////////////////////////////////////////////////////// // // // file name: work_updr.v // // description: opcode parameters for z80 // // project: wb_z80 // // // // Author: B.J. Porcella // // e-mail: bporcella@sbcglobal.net // // // // // // // /////////////////////////////////////////////////////////////////////////////////////////////////// // // // Copyright (C) 2000-2002 B.J. Porcella // // Real Time Solutions // // // // // // This source file may be used and distributed without // // restriction provided that this copyright statement is not // // removed from the file and that any derivative work contains // // the original copyright notice and the associated disclaimer. // // // // THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY // // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED // // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS // // FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR // // OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, // // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE // // GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR // // BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF // // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT // // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // // POSSIBILITY OF SUCH DAMAGE. // // // //-------1---------2---------3--------Comments on file -------------7---------8---------9--------0 // // not really a source file -- more of a work file -- as named. // but I probably will keep it around. // // dice up all defined instructions for updating each register. // // // //-------1---------2---------3--------CVS Log -----------------------7---------8---------9--------0 // // $Id: work_updreg.v,v 1.1.1.1 2004-04-13 23:48:00 bporcella Exp $ // // $Date: 2004-04-13 23:48:00 $ // $Revision: 1.1.1.1 $ // $Author: bporcella $ // $Locker: $ // $State: Exp $ // // Change History: // $Log: not supported by cvs2svn $ // // //-------1---------2---------3--------Comments on file -------------7---------8---------9--------0 // NOP = 10'h00,// NOP ; 00 // update ar RLCA = 10'h07,// RLCA ; 07 EXsAF_AFp = 10'h08,// EX AF,AF' ; 08 LDsA_6BC7 = 10'h0A,// LD A,(BC) ; 0A RRCA = 10'h0F,// RRCA ; 0F RLA = 10'h17,// RLA ; 17 LDsA_6DE7 = 10'h1A,// LD A,(DE) ; 1A RRA = 10'h1F,// RRA ; 1F DAA = 10'h27,// DAA ; 27 CPL = 10'h2F,// CPL ; 2F a <= ~a LDsA_6NN7 = 10'h3A,// LD A,(NN) ; 3A XX XX INCsA = 10'h3C,// INC A ; 3C DECsA = 10'h3D,// DEC A ; 3D LDsA_N = 10'h3E,// LD A,N ; 3E XX LDsA_B = 10'h78,// LD A,B ; 78 LDsA_C = 10'h79,// LD A,C ; 79 LDsA_D = 10'h7A,// LD A,D ; 7A LDsA_E = 10'h7B,// LD A,E ; 7B LDsA_H = 10'h7C,// LD A,H ; 7C LDsA_L = 10'h7D,// LD A,L ; 7D LDsA_6HL7 = 10'h7E,// LD A,(HL) ; 7E LDsA_A = 10'h7F,// LD A,A ; 7F ADDsA_B = 10'h80,// ADD A,B ; 80 ADDsA_C = 10'h81,// ADD A,C ; 81 ADDsA_D = 10'h82,// ADD A,D ; 82 ADDsA_E = 10'h83,// ADD A,E ; 83 ADDsA_H = 10'h84,// ADD A,H ; 84 ADDsA_L = 10'h85,// ADD A,L ; 85 ADDsA_6HL7 = 10'h86,// ADD A,(HL) ; 86 ADDsA_A = 10'h87,// ADD A,A ; 87 ADCsA_B = 10'h88,// ADC A,B ; 88 ADCsA_C = 10'h89,// ADC A,C ; 89 ADCsA_D = 10'h8A,// ADC A,D ; 8A ADCsA_E = 10'h8B,// ADC A,E ; 8B ADCsA_H = 10'h8C,// ADC A,H ; 8C ADCsA_L = 10'h8D,// ADC A,L ; 8D ADCsA_6HL7 = 10'h8E,// ADC A,(HL) ; 8E ADCsA_A = 10'h8F,// ADC A,A ; 8F SUBsB = 10'h90,// SUB B ; 90 SUBsC = 10'h91,// SUB C ; 91 SUBsD = 10'h92,// SUB D ; 92 SUBsE = 10'h93,// SUB E ; 93 SUBsH = 10'h94,// SUB H ; 94 SUBsL = 10'h95,// SUB L ; 95 SUBs6HL7 = 10'h96,// SUB (HL) ; 96 SUBsA = 10'h97,// SUB A ; 97 SBCsB = 10'h98,// SBC B ; 98 SBCsC = 10'h99,// SBC C ; 99 SBCsD = 10'h9A,// SBC D ; 9A SBCsE = 10'h9B,// SBC E ; 9B SBCsH = 10'h9C,// SBC H ; 9C SBCsL = 10'h9D,// SBC L ; 9D SBCs6HL7 = 10'h9E,// SBC (HL) ; 9E SBCsA = 10'h9F,// SBC A ; 9F ANDsB = 10'hA0,// AND B ; A0 ANDsC = 10'hA1,// AND C ; A1 ANDsD = 10'hA2,// AND D ; A2 ANDsE = 10'hA3,// AND E ; A3 ANDsH = 10'hA4,// AND H ; A4 ANDsL = 10'hA5,// AND L ; A5 ANDs6HL7 = 10'hA6,// AND (HL) ; A6 ANDsA = 10'hA7,// AND A ; A7 XORsB = 10'hA8,// XOR B ; A8 XORsC = 10'hA9,// XOR C ; A9 XORsD = 10'hAA,// XOR D ; AA XORsE = 10'hAB,// XOR E ; AB XORsH = 10'hAC,// XOR H ; AC XORsL = 10'hAD,// XOR L ; AD XORs6HL7 = 10'hAE,// XOR (HL) ; AE XORsA = 10'hAF,// XOR A ; AF ORsB = 10'hB0,// OR B ; B0 ORsC = 10'hB1,// OR C ; B1 ORsD = 10'hB2,// OR D ; B2 ORsE = 10'hB3,// OR E ; B3 ORsH = 10'hB4,// OR H ; B4 ORsL = 10'hB5,// OR L ; B5 ORs6HL7 = 10'hB6,// OR (HL) ; B6 ORsA = 10'hB7,// OR A ; B7 ADDsA_N = 10'hC6,// ADD A,N ; C6 XX ADCsA_N = 10'hCE,// ADC A,N ; CE XX SUBsN = 10'hD6,// SUB N ; D6 XX EXX = 10'hD9,// EXX ; D9 INsA_6N7 = 10'hDB,// IN A,(N) ; DB XX SBCsA_N = 10'hDE,// SBC A,N ; DE XX ANDsN = 10'hE6,// AND N ; E6 XX XORsN = 10'hEE,// XOR N ; EE XX POPsAF = 10'hF1,// POP AF ; F1 ORsN = 10'hF6,// OR N ; F6 XX ED_NEG = 5'b01___100, // compair with {ir[7:6],ir[2:0]} all A<= -A // update br LDsBC_nn = 10'h01,// LD BC,NN ; 01 XX XX INCsBC = 10'h03,// INC BC ; 03 INCsB = 10'h04,// INC B ; 04 DECsB = 10'h05,// DEC B ; 05 LDsB_N = 10'h06,// LD B,N ; 06 XX DECsBC = 10'h0B,// DEC BC ; 0B DJNZs$t2 = 10'h10,// DJNZ $+2 ; 10 XX //pre dec br LDsB_B = 10'h40,// LD B,B ; 40 LDsB_C = 10'h41,// LD B,C ; 41 LDsB_D = 10'h42,// LD B,D ; 42 LDsB_E = 10'h43,// LD B,E ; 43 LDsB_H = 10'h44,// LD B,H ; 44 LDsB_L = 10'h45,// LD B,L ; 45 LDsB_6HL7 = 10'h46,// LD B,(HL) ; 46 LDsB_A = 10'h47,// LD B,A ; 47 POPsBC = 10'hC1,// POP BC ; C1 EXX = 10'hD9,// EXX ; D9 // update cr LDsBC_nn = 10'h01,// LD BC,NN ; 01 XX XX INCsBC = 10'h03,// INC BC ; 03 DECsBC = 10'h0B,// DEC BC ; 0B INCsC = 10'h0C,// INC C ; 0C DECsC = 10'h0D,// DEC C ; 0D LDsC_N = 10'h0E,// LD C,N ; 0E XX LDsC_B = 10'h48,// LD C,B ; 48 LDsC_C = 10'h49,// LD C,C ; 49 LDsC_D = 10'h4A,// LD C,D ; 4A LDsC_E = 10'h4B,// LD C,E ; 4B LDsC_H = 10'h4C,// LD C,H ; 4C LDsC_L = 10'h4D,// LD C,L ; 4D LDsC_6HL7 = 10'h4E,// LD C,(HL) ; 4E LDsC_A = 10'h4F,// LD C,A ; 4F POPsBC = 10'hC1,// POP BC ; C1 EXX = 10'hD9,// EXX ; D9 // update dr LDsDE_NN = 10'h11,// LD DE,NN ; 11 XX XX INCsDE = 10'h13,// INC DE ; 13 INCsD = 10'h14,// INC D ; 14 DECsD = 10'h15,// DEC D ; 15 LDsD_N = 10'h16,// LD D,N ; 16 XX DECsDE = 10'h1B,// DEC DE ; 1B LDsD_B = 10'h50,// LD D,B ; 50 LDsD_C = 10'h51,// LD D,C ; 51 LDsD_D = 10'h52,// LD D,D ; 52 LDsD_E = 10'h53,// LD D,E ; 53 LDsD_H = 10'h54,// LD D,H ; 54 LDsD_L = 10'h55,// LD D,L ; 55 LDsD_6HL7 = 10'h56,// LD D,(HL) ; 56 LDsD_A = 10'h57,// LD D,A ; 57 POPsDE = 10'hD1,// POP DE ; D1 EXX = 10'hD9,// EXX ; D9 EXsDE_HL = 10'hEB,// EX DE,HL ; EB // update er LDsDE_NN = 10'h11,// LD DE,NN ; 11 XX XX INCsDE = 10'h13,// INC DE ; 13 DECsDE = 10'h1B,// DEC DE ; 1B INCsE = 10'h1C,// INC E ; 1C DECsE = 10'h1D,// DEC E ; 1D LDsE_N = 10'h1E,// LD E,N ; 1E XX LDsE_B = 10'h58,// LD E,B ; 58 LDsE_C = 10'h59,// LD E,C ; 59 LDsE_D = 10'h5A,// LD E,D ; 5A LDsE_E = 10'h5B,// LD E,E ; 5B LDsE_H = 10'h5C,// LD E,H ; 5C LDsE_L = 10'h5D,// LD E,L ; 5D LDsE_6HL7 = 10'h5E,// LD E,(HL) ; 5E LDsE_A = 10'h5F,// LD E,A ; 5F POPsDE = 10'hD1,// POP DE ; D1 EXX = 10'hD9,// EXX ; D9 EXsDE_HL = 10'hEB,// EX DE,HL ; EB // update hr ADDsHL_BC = 10'h09,// ADD HL,BC ; 09 ADDsHL_DE = 10'h19,// ADD HL,DE ; 19 LDsHL_NN = 10'h21,// LD HL,NN ; 21 XX XX INCsHL = 10'h23,// INC HL ; 23 INCsH = 10'h24,// INC H ; 24 DECsH = 10'h25,// DEC H ; 25 LDsH_N = 10'h26,// LD H,N ; 26 XX ADDsHL_HL = 10'h29,// ADD HL,HL ; 29 LDsHL_6NN7 = 10'h2A,// LD HL,(NN) ; 2A XX XX DECsHL = 10'h2B,// DEC HL ; 2B ADDsHL_SP = 10'h39,// ADD HL,SP ; 39 LDsH_B = 10'h60,// LD H,B ; 60 LDsH_C = 10'h61,// LD H,C ; 61 LDsH_D = 10'h62,// LD H,D ; 62 LDsH_E = 10'h63,// LD H,E ; 63 LDsH_H = 10'h64,// LD H,H ; 64 LDsH_L = 10'h65,// LD H,L ; 65 LDsH_6HL7 = 10'h66,// LD H,(HL) ; 66 LDsH_A = 10'h67,// LD H,A ; 67 EXX = 10'hD9,// EXX ; D9 POPsHL = 10'hE1,// POP HL ; E1 EXs6SP7_HL = 10'hE3,// EX (SP),HL ; E3 EXsDE_HL = 10'hEB,// EX DE,HL ; EB // update lr ADDsHL_BC = 10'h09,// ADD HL,BC ; 09 ADDsHL_DE = 10'h19,// ADD HL,DE ; 19 LDsHL_NN = 10'h21,// LD HL,NN ; 21 XX XX INCsHL = 10'h23,// INC HL ; 23 ADDsHL_HL = 10'h29,// ADD HL,HL ; 29 LDsHL_6NN7 = 10'h2A,// LD HL,(NN) ; 2A XX XX DECsHL = 10'h2B,// DEC HL ; 2B INCsL = 10'h2C,// INC L ; 2C DECsL = 10'h2D,// DEC L ; 2D LDsL_N = 10'h2E,// LD L,N ; 2E XX ADDsHL_SP = 10'h39,// ADD HL,SP ; 39 LDsL_B = 10'h68,// LD L,B ; 68 LDsL_C = 10'h69,// LD L,C ; 69 LDsL_D = 10'h6A,// LD L,D ; 6A LDsL_E = 10'h6B,// LD L,E ; 6B LDsL_H = 10'h6C,// LD L,H ; 6C LDsL_L = 10'h6D,// LD L,L ; 6D LDsL_6HL7 = 10'h6E,// LD L,(HL) ; 6E LDsL_A = 10'h6F,// LD L,A ; 6F EXX = 10'hD9,// EXX ; D9 POPsHL = 10'hE1,// POP HL ; E1 EXs6SP7_HL = 10'hE3,// EX (SP),HL ; E3 EXsDE_HL = 10'hEB,// EX DE,HL ; EB // update ixr // update iyr // update fr SCF = 10'h37,// SCF ; 37 EXsAF_AFp = 10'h08,// EX AF,AF' ; 08 CCF = 10'h3F,// CCF ; 3F CPsB = 10'hB8,// CP B ; B8 CPsC = 10'hB9,// CP C ; B9 CPsD = 10'hBA,// CP D ; BA CPsE = 10'hBB,// CP E ; BB CPsH = 10'hBC,// CP H ; BC CPsL = 10'hBD,// CP L ; BD CPs6HL7 = 10'hBE,// CP (HL) ; BE CPsA = 10'hBF,// CP A ; BF CPsN = 10'hFE,// CP N ; FE XX EXX = 10'hD9,// EXX ; D9 POPsAF = 10'hF1,// POP AF ; F1 // update shadow register EXsAF_AFp = 10'h08,// EX AF,AF' ; 08 EXX = 10'hD9,// EXX ; D9 // stuff to worry about LDsSP_NN = 10'h31,// LD SP,NN ; 31 XX XX INCsSP = 10'h33,// INC SP ; 33 DECsSP = 10'h3B,// DEC SP ; 3B // memory stors and others LDs6DE7_A = 10'h12,// LD (DE),A ; 12 LDs6BC7_A = 10'h02,// LD (BC),A ; 02 JRs$t2 = 10'h18,// JR $+2 ; 18 XX JRsNZ_$t2 = 10'h20,// JR NZ,$+2 ; 20 LDs6NN7_HL = 10'h22,// LD (NN),HL ; 22 XX XX JRsZ_$t2 = 10'h28,// JR Z,$+2 ; 28 XX JRsNC_$t2 = 10'h30,// JR NC,$+2 ; 30 XX LDs6NN7_A = 10'h32,// LD (NN),A ; 32 XX XX INCs6HL7 = 10'h34,// INC (HL) ; 34 DECs6HL7 = 10'h35,// DEC (HL) ; 35 LDs6HL7_N = 10'h36,// LD (HL),N ; 36 XX JRsC_$t2 = 10'h38,// JR C,$+2 ; 38 XX LDs6HL7_B = 10'h70,// LD (HL),B ; 70 LDs6HL7_C = 10'h71,// LD (HL),C ; 71 LDs6HL7_D = 10'h72,// LD (HL),D ; 72 LDs6HL7_E = 10'h73,// LD (HL),E ; 73 LDs6HL7_H = 10'h74,// LD (HL),H ; 74 LDs6HL7_L = 10'h75,// LD (HL),L ; 75 HALT = 10'h76,// HALT ; 76 LDs6HL7_A = 10'h77,// LD (HL),A ; 77 RETsNZ = 10'hC0,// RET NZ ; C0 JPsNZ = 10'hC2,// JP NZ ; C2 XX XX JP = 10'hC3,// JP ; C3 XX XX CALLsNZ_NN = 10'hC4,// CALL NZ,NN ; C4 XX XX PUSHsBC = 10'hC5,// PUSH BC ; C5 RSTs0 = 10'hC7,// RST 0 ; C7 RETsZ = 10'hC8,// RET Z ; C8 RET = 10'hC9,// RET ; C9 JPsZ = 10'hCA,// JP Z ; CA XX XX CALLsZ_NN = 10'hCC,// CALL Z,NN ; CC XX XX CBgrp = 10'hCB,// CBgrp is rotates and bit munging below CALLsNN = 10'hCD,// CALL NN ; CD XX XX RSTs8H = 10'hCF,// RST 8H ; CF RETsNC = 10'hD0,// RET NC ; D0 JPsNC = 10'hD2,// JP NC, ; D2 XX XX OUTs6N7_A = 10'hD3,// OUT (N),A ; D3 XX CALLsNC_NN = 10'hD4,// CALL NC,NN ; D4 XX XX PUSHsDE = 10'hD5,// PUSH DE ; D5 RSTs10H = 10'hD7,// RST 10H ; D7 RETsC = 10'hD8,// RET C ; D8 JPsC = 10'hDA,// JP C ; DA XX XX CALLsC_NN = 10'hDC,// CALL C,NN ; DC XX XX DDgrp = 10'hDD,// DDgrp RSTs18H = 10'hDF,// RST 18H ; DF RETsPO = 10'hE0,// RET PO ; E0 // ret if positive JPsPO = 10'hE2,// JP PO ; E2 XX XX EXs6SP7_HL = 10'hE3,// EX (SP),HL ; E3 CALLsPO_NN = 10'hE4,// CALL PO,NN ; E4 XX XX PUSHsHL = 10'hE5,// PUSH HL ; E5 RSTs20H = 10'hE7,// RST 20H ; E7 RETsPE = 10'hE8,// RET PE ; E8 JPsHL = 10'hE9,// JP HL ; E9 // documented as indirect IS NOT JPsPE = 10'hEA,// JP PE, ; EA XX XX CALLsPE_NN = 10'hEC,// CALL PE,NN ; EC XX XX EDgrp = 10'hED,// EDgrp ED RSTs28H = 10'hEF,// RST 28H ; EF RETsP = 10'hF0,// RET P ; F0 JPsP = 10'hF2,// JP P ; F2 XX XX DI = 10'hF3,// DI ; F3 CALLsP_NN = 10'hF4,// CALL P,NN ; F4 XX XX PUSHsAF = 10'hF5,// PUSH AF ; F5 RSTs30H = 10'hF7,// RST 30H ; F7 RETsM = 10'hF8,// RET M ; F8 LDsSP_HL = 10'hF9,// LD SP,HL ; F9 JPsM = 10'hFA,// JP M, ; FA XX XX EI = 10'hFB,// EI ; FB CALLsM_NN = 10'hFC,// CALL M,NN ; FC XX XX FDgrp = 10'hFD,// FDgrp FD RSTs38H = 10'hFF,// RST 38H ; FF // the CB set // These have enough structure that I don't believe I will define a parameter for each // First cut below // put together a decode term here for all registers CB_RLC = 7'b01_00_000, // these must be compaired with ir[9:3] CB_RRC = 7'b01_00_001, // these must be compaired with ir[9:3] CB_RL = 7'b01_00_010, // these must be compaired with ir[9:3] CB_RR = 7'b01_00_011, // these must be compaired with ir[9:3] CB_SLA = 7'b01_00_100, // these must be compaired with ir[9:3] CB_SRA = 7'b01_00_101, // these must be compaired with ir[9:3] CB_SLL = 7'b01_00_110, // these must be compaired with ir[9:3] CB_SRL = 7'b01_00_111, // these must be compaired with ir[9:3] CB_BIT = 4'b01_01, // these must be compaired with ir[9:6] CB_RES = 4'b01_10, // these must be compaired with ir[9:6] CB_SET = 4'b01_11, // these must be compaired with ir[9:6] CB_MEM = 3'h110, // this must be compaired with ir[2:0] // note these are all read-modify-writ except CB_BIT // The ED Group // These are the "unique instructions in the 46, 47 rows that NEED? to be implemented // Not sure I want to worry about all undocumented stuff in these rows - hard to believe // It will matter.(IM modes are very system dependent - hard to believe even a programmer // would use undocumented instructions to muck with this stuff) ED_IMs0 = 10'h246// IM 0 ; ED 46 set IM0 ED_LDsI_A = 10'h247// LD I,A ; ED 47 move a to I ED_IMs1 = 10'h256// IM 1 ; ED 56 set IM1 ED_LDsA_I = 10'h257// LD A,I ; ED 57 move I to A ED_IMs2 = 10'h25E// IM 2 ; ED 5E set IM2 ED_RRD = 10'h267// RRD ; ED 67 nibble roates A HL ED_RLD = 10'h26F// RLD ; ED 6F nibble roates A HL ED_LDI = 10'h2A0// LDI ; ED A0 These are block move ED_CPI = 10'h2A1// CPI ; ED A1 type insts that don't repeat ED_INI = 10'h2A2// INI ; ED A2 ED_OUTI = 10'h2A3// OUTI ; ED A3 ED_LDD = 10'h2A8// LDD ; ED A8 ED_CPD = 10'h2A9// CPD ; ED A9 ED_IND = 10'h2AA// IND ; ED AA ED_OUTD = 10'h2AB// OUTD ; ED AB ED_LDIR = 10'h2B0// LDIR ; ED B0 These are block move ED_CPIR = 10'h2B1// CPIR ; ED B1 type insts that DO repeat ED_INIR = 10'h2B2// INIR ; ED B2 ED_OTIR = 10'h2B3// OTIR ; ED B3 ED_LDDR = 10'h2B8// LDDR ; ED B8 ED_CPDR = 10'h2B9// CPDR ; ED B9 ED_INDR = 10'h2BA// INDR ; ED BA ED_OTDR = 10'h2BB// OTDR ; ED BB // the ED gropu definitions from 40 to 7f from document on undocumented insts..... // // ED40 IN B,(C) ED50 IN D,(C) ED60 IN H,(C) ED70 IN (C) / IN F,(C) // ED41 OUT (C),B ED51 OUT (C),D ED61 OUT (C),H ED71 OUT (C),0* // ED42 SBC HL,BC ED52 SBC HL,DE ED62 SBC HL,HL ED72 SBC HL,SP // ED43 LD (nn),BC ED53 LD (nn),DE ED63 LD (nn),HL ED73 LD (nn),SP // ED44 NEG ED54 NEG* ED64 NEG* ED74 NEG* // ED45 RETN ED55 RETN* ED65 RETN* ED75 RETN* // ED46 IM 0 ED56 IM 1 ED66 IM 0* ED76 IM 1* // ED47 LD I,A ED57 LD A,I ED67 RRD ED77 NOP* // ED48 IN C,(C) ED58 IN E,(C) ED68 IN L,(C) ED78 IN A,(C) // ED49 OUT (C),C ED59 OUT (C),E ED69 OUT (C),L ED79 OUT (C),A // ED4A ADC HL,BC ED5A ADC HL,DE ED6A ADC HL,HL ED7A ADC HL,SP // ED4B LD BC,(nn) ED5B LD DE,(nn) ED6B LD HL,(nn) ED7B LD SP,(nn) // ED4C NEG* ED5C NEG* ED6C NEG* ED7C NEG* // ED4D RETI ED5D RETN* ED6D RETN* ED7D RETN* // ED4E IM 0* ED5E IM 2 ED6E IM 0* ED7E IM 2* // ED4F LD R,A ED5F LD A,R ED6F RLD ED7F NOP* //The ED70 instruction reads from I/O port C, //but does not store the result. //It just affects the flags. Hard to test. like the other IN x,(C) instruction. // //ED71 simply outs the value 0 to I/O port C. // This suggests that we should decode as follows: // I hope if I don't get all the IM duplicates right it won't be a tragedy ED_INsREG_6C7 = 5'b01___000,// compair with {ir[7:6],ir[2:0]} ED_SBCsHL_REG = 6'b01__0010, // compair with {ir[9:6],ir[3:0]} ED_ADCsHL_REG = 6'b01__1010, // compair with {ir[9:6],ir[3:0]} ED_LDs6NN7_REG = 6'b01__0011, // compair with {ir[9:6],ir[3:0]} REG = BC,DE,HL,SP ED_LDsREG_6NN7 = 6'b01__1011, // compair with {ir[9:6],ir[3:0]} REG = BC,DE,HL,SP ED_NEG = 5'b01___100, // compair with {ir[9:6],ir[2:0]} all A<= -A ED_RETN = 5'b01___101, // compair with {ir[9:6],ir[2:0]} and !reti DBL_REG_BC = 2'b00, // compair with ir[5:4] DBL_REG_DE = 2'b00, // compair with ir[5:4] DBL_REG_HL = 2'b00, // compair with ir[5:4] DBL_REG_SP = 2'b00, // compair with ir[5:4] REG8_B = 3'b000, REG8_C = 3'b001, REG8_D = 3'b010, REG8_E = 3'b011, REG8_H = 3'b100, REG8_L = 3'b101, REG8_A = 3'b110, REG8_A = 3'b111;
Go to most recent revision | Compare with Previous | Blame | View Log