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

Subversion Repositories vg_z80_sbc

[/] [vg_z80_sbc/] [trunk/] [rtl/] [opcodes.v] - Blame information for rev 35

Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

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