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 26

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

powered by: WebSVN 2.1.0

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