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

Subversion Repositories opencores

[/] [opencores/] [trunk/] [inc/] [opcodes.v] - Blame information for rev 6

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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