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

Subversion Repositories wb_z80

[/] [wb_z80/] [trunk/] [rtl/] [opcodes.v] - Blame information for rev 25

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

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

powered by: WebSVN 2.1.0

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