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 40

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

powered by: WebSVN 2.1.0

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