OpenCores
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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.