OpenCores
URL https://opencores.org/ocsvn/wb_z80/wb_z80/trunk

Subversion Repositories wb_z80

[/] [wb_z80/] [trunk/] [inc/] [opcodes.v] - Blame information for rev 40

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 bporcella
///////////////////////////////////////////////////////////////////////////////////////////////////
2
//                                                                                               //
3
//  file name:   opcodes.v                                                                       //
4
//  description: opcode parameters for z80                                                       //
5
//  project:     wb_z80                                                                          //
6
//                                                                                               //
7
//  Author: B.J. Porcella                                                                        //
8
//  e-mail: bporcella@sbcglobal.net                                                              //
9
//                                                                                               //
10
//                                                                                               //
11
//                                                                                               //
12
///////////////////////////////////////////////////////////////////////////////////////////////////
13
//                                                                                               //
14
// Copyright (C) 2000-2002 B.J. Porcella                                                         //
15
//                         Real Time Solutions                                                   //
16
//                                                                                               //
17
//                                                                                               //
18
// This source file may be used and distributed without                                          //
19
// restriction provided that this copyright statement is not                                     //
20
// removed from the file and that any derivative work contains                                   //
21
// the original copyright notice and the associated disclaimer.                                  //
22
//                                                                                               //
23
//     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY                                       //
24
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED                                     //
25
// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS                                     //
26
// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR                                        //
27
// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,                                           //
28
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES                                      //
29
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE                                     //
30
// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR                                          //
31
// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF                                    //
32
// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT                                    //
33
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT                                    //
34
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE                                           //
35
// POSSIBILITY OF SUCH DAMAGE.                                                                   //
36
//                                                                                               //
37
//-------1---------2---------3--------Comments on file  -------------7---------8---------9--------0
38
// This file is fundamentally a hack of an opcode file found on:
39
//     http://www.z80.info/  (perhaps written by Thomas Scherrer)
40
//
41
// The purpose of the origiional file was to aid in low level z80 software debug.
42
// Here, we are trying to make the parameters we use for instruction decoding
43
// as easy to understand as possible.
44
//
45
// The origional file is included as a comment below.  (this is a very long file)
46
// It is then re-produced with transformations --  so the significance of the parameters should 
47
// be very clear.
48
//
49
// Note how assembler syntax is transformed 
50
// into verilog symbols.    
51
// 
52
//
53
// I'm going to define all parameters as standard integer length as they will be used
54
// in comparisons of various lengths..............   
55
// generally 8 bits, but there is 3 bit extension that may apply to any parameter...
56
//    0
57
//    1  CBgrp   (shifts and Bit banging)
58
//    2  DDgrp   (mostly indexed addressing)
59
//    3  DDCBgrp  (indexed bit banging)
60
//    3  EDgrp   (a wild mix of stuff )
61
//    4  FDgrp    (more indexed stuff )
62
//    5  FDCBgrp   (indexed bit banging)
63
//
64
//
65
//-------1---------2---------3--------CVS Log -----------------------7---------8---------9--------0
66
//
67
//  $Id: opcodes.v,v 1.1.1.1 2004-04-13 23:47:56 bporcella Exp $
68
//
69
//  $Date: 2004-04-13 23:47:56 $
70
//  $Revision: 1.1.1.1 $
71
//  $Author: bporcella $
72
//  $Locker:  $
73
//  $State: Exp $
74
//
75
// Change History:
76
//      $Log: not supported by cvs2svn $
77
//
78
//
79
//-------1---------2---------3--------Comments on file  -------------7---------8---------9--------0
80
//
81
parameter  NOP          = 10'h00,//      NOP         ; 00
82
           LDsBC_NN     = 10'h01,//      LD BC,NN    ; 01 XX XX
83
           LDs6BC7_A    = 10'h02,//      LD (BC),A   ; 02 
84
           INCsBC       = 10'h03,//      INC BC      ; 03
85
           INCsB        = 10'h04,//      INC B       ; 04
86
           DECsB        = 10'h05,//      DEC B       ; 05
87
           LDsB_N       = 10'h06,//      LD B,N      ; 06 XX
88
           RLCA         = 10'h07,//      RLCA        ; 07
89
           EXsAF_AFp    = 10'h08,//      EX AF,AF'   ; 08
90
           ADDsHL_BC    = 10'h09,//      ADD HL,BC   ; 09
91
           LDsA_6BC7    = 10'h0A,//      LD A,(BC)   ; 0A
92
           DECsBC       = 10'h0B,//      DEC BC      ; 0B
93
           INCsC        = 10'h0C,//      INC C       ; 0C
94
           DECsC        = 10'h0D,//      DEC C       ; 0D
95
           LDsC_N       = 10'h0E,//      LD C,N      ; 0E XX
96
           RRCA         = 10'h0F,//      RRCA        ; 0F
97
           DJNZs$t2     = 10'h10,//      DJNZ $+2     ; 10 XX
98
           LDsDE_NN     = 10'h11,//      LD DE,NN     ; 11 XX XX
99
           LDs6DE7_A    = 10'h12,//      LD (DE),A    ; 12
100
           INCsDE       = 10'h13,//      INC DE       ; 13
101
           INCsD        = 10'h14,//      INC D        ; 14
102
           DECsD        = 10'h15,//      DEC D        ; 15
103
           LDsD_N       = 10'h16,//      LD D,N       ; 16 XX
104
           RLA          = 10'h17,//      RLA          ; 17
105
           JRs$t2       = 10'h18,//      JR $+2       ; 18 XX
106
           ADDsHL_DE    = 10'h19,//      ADD HL,DE    ; 19
107
           LDsA_6DE7    = 10'h1A,//      LD A,(DE)    ; 1A
108
           DECsDE       = 10'h1B,//      DEC DE       ; 1B
109
           INCsE        = 10'h1C,//      INC E        ; 1C
110
           DECsE        = 10'h1D,//      DEC E        ; 1D
111
           LDsE_N       = 10'h1E,//      LD E,N       ; 1E XX
112
           RRA          = 10'h1F,//      RRA          ; 1F
113
           JRsNZ_$t2    = 10'h20,//      JR NZ,$+2    ; 20
114
           LDsHL_NN     = 10'h21,//      LD HL,NN     ; 21 XX XX
115
           LDs6NN7_HL   = 10'h22,//      LD (NN),HL   ; 22 XX XX
116
           INCsHL       = 10'h23,//      INC HL       ; 23
117
           INCsH        = 10'h24,//      INC H        ; 24
118
           DECsH        = 10'h25,//      DEC H        ; 25
119
           LDsH_N       = 10'h26,//      LD H,N       ; 26 XX
120
           DAA          = 10'h27,//      DAA          ; 27
121
           JRsZ_$t2     = 10'h28,//      JR Z,$+2     ; 28 XX
122
           ADDsHL_HL    = 10'h29,//      ADD HL,HL    ; 29
123
           LDsHL_6NN7   = 10'h2A,//      LD HL,(NN)   ; 2A XX XX
124
           DECsHL       = 10'h2B,//      DEC HL       ; 2B
125
           INCsL        = 10'h2C,//      INC L        ; 2C
126
           DECsL        = 10'h2D,//      DEC L        ; 2D
127
           LDsL_N       = 10'h2E,//      LD L,N       ; 2E XX
128
           CPL          = 10'h2F,//      CPL          ; 2F
129
           JRsNC_$t2    = 10'h30,//      JR NC,$+2    ; 30 XX
130
           LDsSP_NN     = 10'h31,//      LD SP,NN     ; 31 XX XX
131
           LDs6NN7_A    = 10'h32,//      LD (NN),A    ; 32 XX XX
132
           INCsSP       = 10'h33,//      INC SP       ; 33
133
           INCs6HL7     = 10'h34,//      INC (HL)     ; 34
134
           DECs6HL7     = 10'h35,//      DEC (HL)     ; 35
135
           LDs6HL7_N    = 10'h36,//      LD (HL),N    ; 36 XX
136
           SCF          = 10'h37,//      SCF          ; 37
137
           JRsC_$t2     = 10'h38,//      JR C,$+2     ; 38 XX
138
           ADDsHL_SP    = 10'h39,//      ADD HL,SP    ; 39
139
           LDsA_6NN7    = 10'h3A,//      LD A,(NN)    ; 3A XX XX
140
           DECsSP       = 10'h3B,//      DEC SP       ; 3B
141
           INCsA        = 10'h3C,//      INC A        ; 3C
142
           DECsA        = 10'h3D,//      DEC A        ; 3D
143
           LDsA_N       = 10'h3E,//      LD A,N       ; 3E XX
144
           CCF          = 10'h3F,//      CCF          ; 3F
145
           LDsB_B       = 10'h40,//      LD B,B       ; 40
146
           LDsB_C       = 10'h41,//      LD B,C       ; 41
147
           LDsB_D       = 10'h42,//      LD B,D       ; 42
148
           LDsB_E       = 10'h43,//      LD B,E       ; 43
149
           LDsB_H       = 10'h44,//      LD B,H       ; 44
150
           LDsB_L       = 10'h45,//      LD B,L       ; 45
151
           LDsB_6HL7    = 10'h46,//      LD B,(HL)    ; 46
152
           LDsB_A       = 10'h47,//      LD B,A       ; 47
153
           LDsC_B       = 10'h48,//      LD C,B       ; 48
154
           LDsC_C       = 10'h49,//      LD C,C       ; 49
155
           LDsC_D       = 10'h4A,//      LD C,D       ; 4A
156
           LDsC_E       = 10'h4B,//      LD C,E       ; 4B
157
           LDsC_H       = 10'h4C,//      LD C,H       ; 4C
158
           LDsC_L       = 10'h4D,//      LD C,L       ; 4D
159
           LDsC_6HL7    = 10'h4E,//      LD C,(HL)    ; 4E
160
           LDsC_A       = 10'h4F,//      LD C,A       ; 4F
161
           LDsD_B       = 10'h50,//      LD D,B       ; 50
162
           LDsD_C       = 10'h51,//      LD D,C       ; 51
163
           LDsD_D       = 10'h52,//      LD D,D       ; 52
164
           LDsD_E       = 10'h53,//      LD D,E       ; 53
165
           LDsD_H       = 10'h54,//      LD D,H       ; 54
166
           LDsD_L       = 10'h55,//      LD D,L       ; 55
167
           LDsD_6HL7    = 10'h56,//      LD D,(HL)    ; 56
168
           LDsD_A       = 10'h57,//      LD D,A       ; 57
169
           LDsE_B       = 10'h58,//      LD E,B       ; 58
170
           LDsE_C       = 10'h59,//      LD E,C       ; 59
171
           LDsE_D       = 10'h5A,//      LD E,D       ; 5A
172
           LDsE_E       = 10'h5B,//      LD E,E       ; 5B
173
           LDsE_H       = 10'h5C,//      LD E,H       ; 5C
174
           LDsE_L       = 10'h5D,//      LD E,L       ; 5D
175
           LDsE_6HL7    = 10'h5E,//      LD E,(HL)    ; 5E
176
           LDsE_A       = 10'h5F,//      LD E,A       ; 5F
177
           LDsH_B       = 10'h60,//      LD H,B       ; 60
178
           LDsH_C       = 10'h61,//      LD H,C       ; 61
179
           LDsH_D       = 10'h62,//      LD H,D       ; 62
180
           LDsH_E       = 10'h63,//      LD H,E       ; 63
181
           LDsH_H       = 10'h64,//      LD H,H       ; 64
182
           LDsH_L       = 10'h65,//      LD H,L       ; 65
183
           LDsH_6HL7    = 10'h66,//      LD H,(HL)    ; 66
184
           LDsH_A       = 10'h67,//      LD H,A       ; 67
185
           LDsL_B       = 10'h68,//      LD L,B       ; 68
186
           LDsL_C       = 10'h69,//      LD L,C       ; 69
187
           LDsL_D       = 10'h6A,//      LD L,D       ; 6A
188
           LDsL_E       = 10'h6B,//      LD L,E       ; 6B
189
           LDsL_H       = 10'h6C,//      LD L,H       ; 6C
190
           LDsL_L       = 10'h6D,//      LD L,L       ; 6D
191
           LDsL_6HL7    = 10'h6E,//      LD L,(HL)    ; 6E
192
           LDsL_A       = 10'h6F,//      LD L,A       ; 6F
193
           LDs6HL7_B    = 10'h70,//      LD (HL),B    ; 70
194
           LDs6HL7_C    = 10'h71,//      LD (HL),C    ; 71
195
           LDs6HL7_D    = 10'h72,//      LD (HL),D    ; 72
196
           LDs6HL7_E    = 10'h73,//      LD (HL),E    ; 73
197
           LDs6HL7_H    = 10'h74,//      LD (HL),H    ; 74
198
           LDs6HL7_L    = 10'h75,//      LD (HL),L    ; 75
199
           HALT         = 10'h76,//      HALT         ; 76
200
           LDs6HL7_A    = 10'h77,//      LD (HL),A    ; 77
201
           LDsA_B       = 10'h78,//      LD A,B       ; 78
202
           LDsA_C       = 10'h79,//      LD A,C       ; 79
203
           LDsA_D       = 10'h7A,//      LD A,D       ; 7A
204
           LDsA_E       = 10'h7B,//      LD A,E       ; 7B
205
           LDsA_H       = 10'h7C,//      LD A,H       ; 7C
206
           LDsA_L       = 10'h7D,//      LD A,L       ; 7D
207
           LDsA_6HL7    = 10'h7E,//      LD A,(HL)    ; 7E
208
           LDsA_A       = 10'h7F,//      LD A,A       ; 7F
209
           ADDsA_B      = 10'h80,//      ADD A,B      ; 80
210
           ADDsA_C      = 10'h81,//      ADD A,C      ; 81
211
           ADDsA_D      = 10'h82,//      ADD A,D      ; 82
212
           ADDsA_E      = 10'h83,//      ADD A,E      ; 83
213
           ADDsA_H      = 10'h84,//      ADD A,H      ; 84
214
           ADDsA_L      = 10'h85,//      ADD A,L      ; 85
215
           ADDsA_6HL7   = 10'h86,//      ADD A,(HL)   ; 86
216
           ADDsA_A      = 10'h87,//      ADD A,A      ; 87
217
           ADCsA_B      = 10'h88,//      ADC A,B      ; 88
218
           ADCsA_C      = 10'h89,//      ADC A,C      ; 89
219
           ADCsA_D      = 10'h8A,//      ADC A,D      ; 8A
220
           ADCsA_E      = 10'h8B,//      ADC A,E      ; 8B
221
           ADCsA_H      = 10'h8C,//      ADC A,H      ; 8C
222
           ADCsA_L      = 10'h8D,//      ADC A,L      ; 8D
223
           ADCsA_6HL7   = 10'h8E,//      ADC A,(HL)   ; 8E
224
           ADCsA_A      = 10'h8F,//      ADC A,A      ; 8F
225
           SUBsB        = 10'h90,//      SUB B        ; 90
226
           SUBsC        = 10'h91,//      SUB C        ; 91
227
           SUBsD        = 10'h92,//      SUB D        ; 92
228
           SUBsE        = 10'h93,//      SUB E        ; 93
229
           SUBsH        = 10'h94,//      SUB H        ; 94
230
           SUBsL        = 10'h95,//      SUB L        ; 95
231
           SUBs6HL7     = 10'h96,//      SUB (HL)     ; 96
232
           SUBsA        = 10'h97,//      SUB A        ; 97
233
           SBCsB        = 10'h98,//      SBC B        ; 98
234
           SBCsC        = 10'h99,//      SBC C        ; 99
235
           SBCsD        = 10'h9A,//      SBC D        ; 9A
236
           SBCsE        = 10'h9B,//      SBC E        ; 9B
237
           SBCsH        = 10'h9C,//      SBC H        ; 9C
238
           SBCsL        = 10'h9D,//      SBC L        ; 9D
239
           SBCs6HL7     = 10'h9E,//      SBC (HL)     ; 9E
240
           SBCsA        = 10'h9F,//      SBC A        ; 9F
241
           ANDsB        = 10'hA0,//      AND B        ; A0
242
           ANDsC        = 10'hA1,//      AND C        ; A1
243
           ANDsD        = 10'hA2,//      AND D        ; A2
244
           ANDsE        = 10'hA3,//      AND E        ; A3
245
           ANDsH        = 10'hA4,//      AND H        ; A4
246
           ANDsL        = 10'hA5,//      AND L        ; A5
247
           ANDs6HL7     = 10'hA6,//      AND (HL)     ; A6
248
           ANDsA        = 10'hA7,//      AND A        ; A7
249
           XORsB        = 10'hA8,//      XOR B        ; A8
250
           XORsC        = 10'hA9,//      XOR C        ; A9
251
           XORsD        = 10'hAA,//      XOR D        ; AA
252
           XORsE        = 10'hAB,//      XOR E        ; AB
253
           XORsH        = 10'hAC,//      XOR H        ; AC
254
           XORsL        = 10'hAD,//      XOR L        ; AD
255
           XORs6HL7     = 10'hAE,//      XOR (HL)     ; AE
256
           XORsA        = 10'hAF,//      XOR A        ; AF
257
           ORsB         = 10'hB0,//      OR B         ; B0
258
           ORsC         = 10'hB1,//      OR C         ; B1
259
           ORsD         = 10'hB2,//      OR D         ; B2
260
           ORsE         = 10'hB3,//      OR E         ; B3
261
           ORsH         = 10'hB4,//      OR H         ; B4
262
           ORsL         = 10'hB5,//      OR L         ; B5
263
           ORs6HL7      = 10'hB6,//      OR (HL)      ; B6
264
           ORsA         = 10'hB7,//      OR A         ; B7
265
           CPsB         = 10'hB8,//      CP B         ; B8
266
           CPsC         = 10'hB9,//      CP C         ; B9
267
           CPsD         = 10'hBA,//      CP D         ; BA
268
           CPsE         = 10'hBB,//      CP E         ; BB
269
           CPsH         = 10'hBC,//      CP H         ; BC
270
           CPsL         = 10'hBD,//      CP L         ; BD
271
           CPs6HL7      = 10'hBE,//      CP (HL)      ; BE
272
           CPsA         = 10'hBF,//      CP A         ; BF
273
           RETsNZ       = 10'hC0,//      RET NZ       ; C0
274
           POPsBC       = 10'hC1,//      POP BC       ; C1
275
           JPsNZ        = 10'hC2,//      JP NZ        ; C2 XX XX
276
           JP           = 10'hC3,//      JP           ; C3 XX XX
277
           CALLsNZ_NN   = 10'hC4,//      CALL NZ,NN   ; C4 XX XX
278
           PUSHsBC      = 10'hC5,//      PUSH BC      ; C5
279
           ADDsA_N      = 10'hC6,//      ADD A,N      ; C6 XX
280
           RSTs0        = 10'hC7,//      RST 0        ; C7
281
           RETsZ        = 10'hC8,//      RET Z        ; C8
282
           RET          = 10'hC9,//      RET          ; C9
283
           JPsZ         = 10'hCA,//      JP Z         ; CA XX XX
284
           CALLsZ_NN    = 10'hCC,//      CALL Z,NN    ; CC XX XX
285
           CBgrp        = 10'hCB,//       CBgrp is rotates and bit munging below
286
           CALLsNN      = 10'hCD,//      CALL NN      ; CD XX XX
287
           ADCsA_N      = 10'hCE,//      ADC A,N      ; CE XX
288
           RSTs8H       = 10'hCF,//      RST 8H       ; CF 
289
           RETsNC       = 10'hD0,//      RET NC       ; D0
290
           POPsDE       = 10'hD1,//      POP DE       ; D1
291
           JPsNC        = 10'hD2,//      JP NC,       ; D2 XX XX
292
           OUTs6N7_A    = 10'hD3,//      OUT (N),A    ; D3 XX
293
           CALLsNC_NN   = 10'hD4,//      CALL NC,NN   ; D4 XX XX
294
           PUSHsDE      = 10'hD5,//      PUSH DE      ; D5
295
           SUBsN        = 10'hD6,//      SUB N        ; D6 XX
296
           RSTs10H      = 10'hD7,//      RST 10H      ; D7
297
           RETsC        = 10'hD8,//      RET C        ; D8
298
           EXX          = 10'hD9,//      EXX          ; D9
299
           JPsC         = 10'hDA,//      JP C         ; DA XX XX
300
           INsA_6N7     = 10'hDB,//      IN A,(N)     ; DB XX
301
           CALLsC_NN    = 10'hDC,//      CALL C,NN    ; DC XX XX
302
           DDgrp        = 10'hDD,//      DDgrp   
303
           SBCsA_N      = 10'hDE,//      SBC A,N      ; DE XX
304
           RSTs18H      = 10'hDF,//      RST 18H      ; DF
305
           RETsPO       = 10'hE0,//      RET PO       ; E0
306
           POPsHL       = 10'hE1,//      POP HL       ; E1
307
           JPsPO        = 10'hE2,//      JP PO        ; E2 XX XX
308
           EXs6SP7_HL   = 10'hE3,//      EX (SP),HL   ; E3
309
           CALLsPO_NN   = 10'hE4,//      CALL PO,NN   ; E4 XX XX
310
           PUSHsHL      = 10'hE5,//      PUSH HL      ; E5
311
           ANDsN        = 10'hE6,//      AND N        ; E6 XX
312
           RSTs20H      = 10'hE7,//      RST 20H      ; E7
313
           RETsPE       = 10'hE8,//      RET PE       ; E8
314
           JPsHL        = 10'hE9,//      JP HL        ; E9 // documented as indirect IS NOT
315
           JPsPE        = 10'hEA,//      JP PE,       ; EA XX XX
316
           EXsDE_HL     = 10'hEB,//      EX DE,HL     ; EB
317
           CALLsPE_NN   = 10'hEC,//      CALL PE,NN   ; EC XX XX
318
           EDgrp        = 10'hED,//      EDgrp          ED
319
           XORsN        = 10'hEE,//      XOR N        ; EE XX
320
           RSTs28H      = 10'hEF,//      RST 28H      ; EF        
321
           RETsP        = 10'hF0,//      RET P        ; F0
322
           POPsAF       = 10'hF1,//      POP AF       ; F1
323
           JPsP         = 10'hF2,//      JP P         ; F2 XX XX
324
           DI           = 10'hF3,//      DI           ; F3
325
           CALLsP_NN    = 10'hF4,//      CALL P,NN    ; F4 XX XX
326
           PUSHsAF      = 10'hF5,//      PUSH AF      ; F5
327
           ORsN         = 10'hF6,//      OR N         ; F6 XX
328
           RSTs30H      = 10'hF7,//      RST 30H      ; F7
329
           RETsM        = 10'hF8,//      RET M        ; F8
330
           LDsSP_HL     = 10'hF9,//      LD SP,HL     ; F9
331
           JPsM         = 10'hFA,//      JP M,        ; FA XX XX
332
           EI           = 10'hFB,//      EI           ; FB
333
           CALLsM_NN    = 10'hFC,//      CALL M,NN    ; FC XX XX
334
           FDgrp        = 10'hFD,//      FDgrp          FD
335
           CPsN         = 10'hFE,//      CP N         ; FE XX
336
           RSTs38H      = 10'hFF,//      RST 38H      ; FF
337
 
338
//  the CB set
339
//  These have enough structure that I don't believe I will define a parameter for each
340
//  First cut below
341
           CB_RLC   = 7'b01_00_000,  // these must be compaired with ir[9:3]
342
           CB_RRC   = 7'b01_00_001,  // these must be compaired with ir[9:3]
343
           CB_RL    = 7'b01_00_010,  // these must be compaired with ir[9:3]
344
           CB_RR    = 7'b01_00_011,  // these must be compaired with ir[9:3]
345
           CB_SLA   = 7'b01_00_100,  // these must be compaired with ir[9:3]
346
           CB_SRA   = 7'b01_00_101,  // these must be compaired with ir[9:3]
347
           CB_SLL   = 7'b01_00_110,  // these must be compaired with ir[9:3]
348
           CB_SRL   = 7'b01_00_111,  // these must be compaired with ir[9:3]
349
 
350
           CB_BIT   = 4'b01_01,    // these must be compaired with ir[9:6]
351
           CB_RES   = 4'b01_10,    // these must be compaired with ir[9:6]
352
           CB_SET   = 4'b01_11,    // these must be compaired with ir[9:6]
353
 
354
           CB_MEM   = 3'b110,   // this must be compaired with ir[2:0] 
355
                             // note these are all read-modify-writ except CB_BIT
356
 
357
//  The ED Group
358
// These are the "unique instructions in the 46, 47 rows that NEED? to be implemented
359
// Not sure I want to worry about all undocumented stuff in these rows - hard to believe
360
// It will matter.(IM modes are very system dependent  - hard to believe even a programmer
361
// would use undocumented instructions to muck with this stuff)
362
           ED_IMs0      =  10'h246,  //      IM 0       ; ED 46   set IM0
363
           ED_LDsI_A    =  10'h247,  //      LD I,A     ; ED 47   move a to I
364
           ED_IMs1      =  10'h256,  //      IM 1       ; ED 56   set IM1
365
           ED_LDsA_I    =  10'h257,  //      LD A,I     ; ED 57   move I to A
366
           ED_IMs2      =  10'h25E,  //      IM 2       ; ED 5E   set IM2
367
           ED_RRD       =  10'h267,  //      RRD        ; ED 67   nibble roates A HL
368
           ED_RLD       =  10'h26F,  //      RLD        ; ED 6F   nibble roates A HL
369
 
370
 
371
           ED_LDI       =  10'h2A0,  //      LDI        ; ED A0    These are block move 
372
           ED_CPI       =  10'h2A1,  //      CPI        ; ED A1    type insts that don't repeat
373
           ED_INI       =  10'h2A2,  //      INI        ; ED A2
374
           ED_OUTI      =  10'h2A3,  //      OUTI       ; ED A3
375
           ED_LDD       =  10'h2A8,  //      LDD        ; ED A8
376
           ED_CPD       =  10'h2A9,  //      CPD        ; ED A9
377
           ED_IND       =  10'h2AA,  //      IND        ; ED AA
378
           ED_OUTD      =  10'h2AB,  //      OUTD       ; ED AB
379
           ED_LDIR      =  10'h2B0,  //      LDIR       ; ED B0    These are block move 
380
           ED_CPIR      =  10'h2B1,  //      CPIR       ; ED B1    type insts that DO repeat
381
           ED_INIR      =  10'h2B2,  //      INIR       ; ED B2
382
           ED_OTIR      =  10'h2B3,  //      OTIR       ; ED B3
383
           ED_LDDR      =  10'h2B8,  //      LDDR       ; ED B8
384
           ED_CPDR      =  10'h2B9,  //      CPDR       ; ED B9
385
           ED_INDR      =  10'h2BA,  //      INDR       ; ED BA
386
           ED_OTDR      =  10'h2BB,  //      OTDR       ; ED BB
387
 
388
//    the ED  gropu definitions from 40 to 7f from document on undocumented insts..... 
389
//
390
//  ED40 IN B,(C)     ED50 IN D,(C)        ED60 IN H,(C)     ED70 IN (C) / IN F,(C)
391
//  ED41 OUT (C),B    ED51 OUT (C),D       ED61 OUT (C),H    ED71 OUT (C),0*
392
//  ED42 SBC HL,BC    ED52 SBC HL,DE       ED62 SBC HL,HL    ED72 SBC HL,SP
393
//  ED43 LD (nn),BC   ED53 LD (nn),DE      ED63 LD (nn),HL   ED73 LD (nn),SP
394
//  ED44 NEG          ED54 NEG*            ED64 NEG*         ED74 NEG*
395
//  ED45 RETN         ED55 RETN*           ED65 RETN*        ED75 RETN*
396
//  ED46 IM 0         ED56 IM 1            ED66 IM 0*        ED76 IM 1*
397
//  ED47 LD I,A       ED57 LD A,I          ED67 RRD          ED77 NOP*
398
 
399
//  ED48 IN C,(C)     ED58 IN E,(C)        ED68 IN L,(C)     ED78 IN A,(C)
400
//  ED49 OUT (C),C    ED59 OUT (C),E       ED69 OUT (C),L    ED79 OUT (C),A
401
//  ED4A ADC HL,BC    ED5A ADC HL,DE       ED6A ADC HL,HL    ED7A ADC HL,SP
402
//  ED4B LD BC,(nn)   ED5B LD DE,(nn)      ED6B LD HL,(nn)   ED7B LD SP,(nn)
403
//  ED4C NEG*         ED5C NEG*            ED6C NEG*         ED7C NEG*
404
//  ED4D RETI         ED5D RETN*           ED6D RETN*        ED7D RETN*
405
//  ED4E IM 0*        ED5E IM 2            ED6E IM 0*        ED7E IM 2*
406
//  ED4F LD R,A       ED5F LD A,R          ED6F RLD          ED7F NOP*
407
 
408
 
409
//The ED70 instruction reads from I/O port C, 
410
//but does not store the result.
411
//It just affects the flags.  Hard to test.    like the other IN x,(C) instruction. 
412
//
413
//ED71 simply outs the value 0 to I/O port C.
414
//  This suggests that we should decode as follows:
415
//  I hope if I don't get all the IM duplicates right it won't be a tragedy
416
        ED_INsREG_6C7  =    7'b1001___000, // compair with {ir[9:6],ir[2:0]}
417
        ED_OUTs6C7_REG =    7'b1001___001, // compair with {ir[9:6],ir[2:0]}
418
        ED_SBCsHL_REG  =    8'b1001__0010, // compair with {ir[9:6],ir[3:0]}
419
        ED_ADCsHL_REG  =    8'b1001__1010, // compair with {ir[9:6],ir[3:0]}
420
        ED_LDs6NN7_REG =    8'b1001__0011, // compair with {ir[9:6],ir[3:0]}  REG = BC,DE,HL,SP                   
421
        ED_LDsREG_6NN7 =    8'b1001__1011, // compair with {ir[9:6],ir[3:0]}  REG = BC,DE,HL,SP
422
        ED_NEG         =    7'b1001___100, // compair with {ir[9:6],ir[2:0]}  all A<= -A                  
423
        ED_RETN        =    7'b1001___101, // compair with {ir[9:6],ir[2:0]} and !reti
424
 
425
        DBL_REG_BC   = 2'b00,  // compair with ir[5:4]
426
        DBL_REG_DE   = 2'b00,  // compair with ir[5:4]
427
        DBL_REG_HL   = 2'b00,  // compair with ir[5:4]
428
        DBL_REG_SP   = 2'b00,  // compair with ir[5:4]
429
 
430
        REG8_B = 3'b000,
431
        REG8_C = 3'b001,
432
        REG8_D = 3'b010,
433
        REG8_E = 3'b011,
434
        REG8_H = 3'b100,
435
        REG8_L = 3'b101,
436
        REG8_MEM = 3'b110,
437
        REG8_A = 3'b111;
438
 
439
 
440
 
441
 
442
 
443
 
444
 
445
 
446
 
447
 
448
 
449
 
450
 
451
 
452
 
453
 
454
 
455
 
456
 
457
 
458
 
459
 
460
 
461
 
462
 
463
 
464
 
465
 
466
 
467
 
468
 
469
 
470
 
471
 
472
 
473
 
474
 
475
 
476
 
477
 
478
 
479
 
480
 
481
 
482
 
483
 
484
 
485
 
486
 
487
 
488
 

powered by: WebSVN 2.1.0

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