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

Subversion Repositories opencores

[/] [opencores/] [trunk/] [inc/] [work_updreg.v] - Blame information for rev 18

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

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

powered by: WebSVN 2.1.0

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