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

Subversion Repositories tv80

[/] [tv80/] [branches/] [restruc1/] [env/] [op_decode.v] - Blame information for rev 115

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

Line No. Rev Author Line
1 31 ghutchis
/*
2
 * Z80 instruction decoder
3
 * Author: Guy Hutchison
4
 */
5
 
6
module op_decode;
7
 
8
task decode0;
9
  input [7:0] opcode;
10
  inout [7:0] state;
11
  begin
12
  case (opcode)
13
    8'h00 : $display ("%t: OPCODE  : NOP   ", $time);
14
    8'h01 :
15
      begin
16
        $display ("%t: OPCODE  : LD    BC,word", $time);
17
        state = {4'd1, 4'd2};
18
      end
19
    8'h02 : $display ("%t: OPCODE  : LD    (BC),A", $time);
20
    8'h03 : $display ("%t: OPCODE  : INC   BC", $time);
21
    8'h04 : $display ("%t: OPCODE  : INC   B", $time);
22
    8'h05 : $display ("%t: OPCODE  : DEC   B", $time);
23
    8'h06 :
24
      begin
25
        $display ("%t: OPCODE  : LD    B,byte", $time);
26
        state = {4'd1, 4'd1};
27
      end
28
    8'h07 : $display ("%t: OPCODE  : RLCA  ", $time);
29
    8'h08 : $display ("%t: OPCODE  : EX    AF,AF'", $time);
30
    8'h09 : $display ("%t: OPCODE  : ADD   HL,BC", $time);
31
    8'h0a : $display ("%t: OPCODE  : LD    A,(BC)", $time);
32
    8'h0b : $display ("%t: OPCODE  : DEC   BC", $time);
33
    8'h0c : $display ("%t: OPCODE  : INC   C", $time);
34
    8'h0d : $display ("%t: OPCODE  : DEC   C", $time);
35
    8'h0e :
36
      begin
37
        $display ("%t: OPCODE  : LD    C,byte", $time);
38
        state = {4'd1, 4'd1};
39
      end
40
    8'h0f : $display ("%t: OPCODE  : RRCA  ", $time);
41
    8'h10 :
42
      begin
43
        $display ("%t: OPCODE  : DJNZ  index", $time);
44
        state = {4'd1, 4'd1};
45
      end
46
    8'h11 :
47
      begin
48
        $display ("%t: OPCODE  : LD    DE,word", $time);
49
        state = {4'd1, 4'd2};
50
      end
51
    8'h12 : $display ("%t: OPCODE  : LD    (DE),A", $time);
52
    8'h13 : $display ("%t: OPCODE  : INC   DE", $time);
53
    8'h14 : $display ("%t: OPCODE  : INC   D", $time);
54
    8'h15 : $display ("%t: OPCODE  : DEC   D", $time);
55
    8'h16 :
56
      begin
57
        $display ("%t: OPCODE  : LD    D,byte", $time);
58
        state = {4'd1, 4'd1};
59
      end
60
    8'h17 : $display ("%t: OPCODE  : RLA   ", $time);
61
    8'h18 :
62
      begin
63
        $display ("%t: OPCODE  : JR    index", $time);
64
        state = {4'd1, 4'd1};
65
      end
66
    8'h19 : $display ("%t: OPCODE  : ADD   HL,DE", $time);
67
    8'h1a : $display ("%t: OPCODE  : LD    A,(DE)", $time);
68
    8'h1b : $display ("%t: OPCODE  : DEC   DE", $time);
69
    8'h1c : $display ("%t: OPCODE  : INC   E", $time);
70
    8'h1d : $display ("%t: OPCODE  : DEC   E", $time);
71
    8'h1e :
72
      begin
73
        $display ("%t: OPCODE  : LD    E,byte", $time);
74
        state = {4'd1, 4'd1};
75
      end
76
    8'h1f : $display ("%t: OPCODE  : RRA   ", $time);
77
    8'h20 :
78
      begin
79
        $display ("%t: OPCODE  : JR    NZ,index", $time);
80
        state = {4'd1, 4'd1};
81
      end
82
    8'h21 :
83
      begin
84
        $display ("%t: OPCODE  : LD    HL,word", $time);
85
        state = {4'd1, 4'd2};
86
      end
87
    8'h22 :
88
      begin
89
        $display ("%t: OPCODE  : LD    (word),HL", $time);
90
        state = {4'd1, 4'd2};
91
      end
92
    8'h23 : $display ("%t: OPCODE  : INC   HL", $time);
93
    8'h24 : $display ("%t: OPCODE  : INC   H", $time);
94
    8'h25 : $display ("%t: OPCODE  : DEC   H", $time);
95
    8'h26 :
96
      begin
97
        $display ("%t: OPCODE  : LD    H,byte", $time);
98
        state = {4'd1, 4'd1};
99
      end
100
    8'h27 : $display ("%t: OPCODE  : DAA   ", $time);
101
    8'h28 :
102
      begin
103
        $display ("%t: OPCODE  : JR    Z,index", $time);
104
        state = {4'd1, 4'd1};
105
      end
106
    8'h29 : $display ("%t: OPCODE  : ADD   HL,HL", $time);
107
    8'h2a :
108
      begin
109
        $display ("%t: OPCODE  : LD    HL,(word)", $time);
110
        state = {4'd1, 4'd2};
111
      end
112
    8'h2b : $display ("%t: OPCODE  : DEC   HL", $time);
113
    8'h2c : $display ("%t: OPCODE  : INC   L", $time);
114
    8'h2d : $display ("%t: OPCODE  : DEC   L", $time);
115
    8'h2e :
116
      begin
117
        $display ("%t: OPCODE  : LD    L,byte", $time);
118
        state = {4'd1, 4'd1};
119
      end
120
    8'h2f : $display ("%t: OPCODE  : CPL   ", $time);
121
    8'h30 :
122
      begin
123
        $display ("%t: OPCODE  : JR    NC,index", $time);
124
        state = {4'd1, 4'd1};
125
      end
126
    8'h31 :
127
      begin
128
        $display ("%t: OPCODE  : LD    SP,word", $time);
129
        state = {4'd1, 4'd2};
130
      end
131
    8'h32 :
132
      begin
133
        $display ("%t: OPCODE  : LD    (word),A", $time);
134
        state = {4'd1, 4'd2};
135
      end
136
    8'h33 : $display ("%t: OPCODE  : INC   SP", $time);
137
    8'h34 : $display ("%t: OPCODE  : INC   (HL)", $time);
138
    8'h35 : $display ("%t: OPCODE  : DEC   (HL)", $time);
139
    8'h36 :
140
      begin
141
        $display ("%t: OPCODE  : LD    (HL),byte", $time);
142
        state = {4'd1, 4'd1};
143
      end
144
    8'h37 : $display ("%t: OPCODE  : SCF   ", $time);
145
    8'h38 :
146
      begin
147
        $display ("%t: OPCODE  : JR    C,index", $time);
148
        state = {4'd1, 4'd1};
149
      end
150
    8'h39 : $display ("%t: OPCODE  : ADD   HL,SP", $time);
151
    8'h3a :
152
      begin
153
        $display ("%t: OPCODE  : LD    A,(word)", $time);
154
        state = {4'd1, 4'd2};
155
      end
156
    8'h3b : $display ("%t: OPCODE  : DEC   SP", $time);
157
    8'h3c : $display ("%t: OPCODE  : INC   A", $time);
158
    8'h3d : $display ("%t: OPCODE  : DEC   A", $time);
159
    8'h3e :
160
      begin
161
        $display ("%t: OPCODE  : LD    A,byte", $time);
162
        state = {4'd1, 4'd1};
163
      end
164
    8'h3f : $display ("%t: OPCODE  : CCF   ", $time);
165
    8'h40 : $display ("%t: OPCODE  : LD    B,B", $time);
166
    8'h41 : $display ("%t: OPCODE  : LD    B,C", $time);
167
    8'h42 : $display ("%t: OPCODE  : LD    B,D", $time);
168
    8'h43 : $display ("%t: OPCODE  : LD    B,E", $time);
169
    8'h44 : $display ("%t: OPCODE  : LD    B,H", $time);
170
    8'h45 : $display ("%t: OPCODE  : LD    B,L", $time);
171
    8'h46 : $display ("%t: OPCODE  : LD    B,(HL)", $time);
172
    8'h47 : $display ("%t: OPCODE  : LD    B,A", $time);
173
    8'h48 : $display ("%t: OPCODE  : LD    C,B", $time);
174
    8'h49 : $display ("%t: OPCODE  : LD    C,C", $time);
175
    8'h4a : $display ("%t: OPCODE  : LD    C,D", $time);
176
    8'h4b : $display ("%t: OPCODE  : LD    C,E", $time);
177
    8'h4c : $display ("%t: OPCODE  : LD    C,H", $time);
178
    8'h4d : $display ("%t: OPCODE  : LD    C,L", $time);
179
    8'h4e : $display ("%t: OPCODE  : LD    C,(HL)", $time);
180
    8'h4f : $display ("%t: OPCODE  : LD    C,A", $time);
181
    8'h50 : $display ("%t: OPCODE  : LD    D,B", $time);
182
    8'h51 : $display ("%t: OPCODE  : LD    D,C", $time);
183
    8'h52 : $display ("%t: OPCODE  : LD    D,D", $time);
184
    8'h53 : $display ("%t: OPCODE  : LD    D,E", $time);
185
    8'h54 : $display ("%t: OPCODE  : LD    D,H", $time);
186
    8'h55 : $display ("%t: OPCODE  : LD    D,L", $time);
187
    8'h56 : $display ("%t: OPCODE  : LD    D,(HL)", $time);
188
    8'h57 : $display ("%t: OPCODE  : LD    D,A", $time);
189
    8'h58 : $display ("%t: OPCODE  : LD    E,B", $time);
190
    8'h59 : $display ("%t: OPCODE  : LD    E,C", $time);
191
    8'h5a : $display ("%t: OPCODE  : LD    E,D", $time);
192
    8'h5b : $display ("%t: OPCODE  : LD    E,E", $time);
193
    8'h5c : $display ("%t: OPCODE  : LD    E,H", $time);
194
    8'h5d : $display ("%t: OPCODE  : LD    E,L", $time);
195
    8'h5e : $display ("%t: OPCODE  : LD    E,(HL)", $time);
196
    8'h5f : $display ("%t: OPCODE  : LD    E,A", $time);
197
    8'h60 : $display ("%t: OPCODE  : LD    H,B", $time);
198
    8'h61 : $display ("%t: OPCODE  : LD    H,C", $time);
199
    8'h62 : $display ("%t: OPCODE  : LD    H,D", $time);
200
    8'h63 : $display ("%t: OPCODE  : LD    H,E", $time);
201
    8'h64 : $display ("%t: OPCODE  : LD    H,H", $time);
202
    8'h65 : $display ("%t: OPCODE  : LD    H,L", $time);
203
    8'h66 : $display ("%t: OPCODE  : LD    H,(HL)", $time);
204
    8'h67 : $display ("%t: OPCODE  : LD    H,A", $time);
205
    8'h68 : $display ("%t: OPCODE  : LD    L,B", $time);
206
    8'h69 : $display ("%t: OPCODE  : LD    L,C", $time);
207
    8'h6a : $display ("%t: OPCODE  : LD    L,D", $time);
208
    8'h6b : $display ("%t: OPCODE  : LD    L,E", $time);
209
    8'h6c : $display ("%t: OPCODE  : LD    L,H", $time);
210
    8'h6d : $display ("%t: OPCODE  : LD    L,L", $time);
211
    8'h6e : $display ("%t: OPCODE  : LD    L,(HL)", $time);
212
    8'h6f : $display ("%t: OPCODE  : LD    L,A", $time);
213
    8'h70 : $display ("%t: OPCODE  : LD    (HL),B", $time);
214
    8'h71 : $display ("%t: OPCODE  : LD    (HL),C", $time);
215
    8'h72 : $display ("%t: OPCODE  : LD    (HL),D", $time);
216
    8'h73 : $display ("%t: OPCODE  : LD    (HL),E", $time);
217
    8'h74 : $display ("%t: OPCODE  : LD    (HL),H", $time);
218
    8'h75 : $display ("%t: OPCODE  : LD    (HL),L", $time);
219
    8'h76 : $display ("%t: OPCODE  : HLT   ", $time);
220
    8'h77 : $display ("%t: OPCODE  : LD    (HL),A", $time);
221
    8'h78 : $display ("%t: OPCODE  : LD    A,B", $time);
222
    8'h79 : $display ("%t: OPCODE  : LD    A,C", $time);
223
    8'h7a : $display ("%t: OPCODE  : LD    A,D", $time);
224
    8'h7b : $display ("%t: OPCODE  : LD    A,E", $time);
225
    8'h7c : $display ("%t: OPCODE  : LD    A,H", $time);
226
    8'h7d : $display ("%t: OPCODE  : LD    A,L", $time);
227
    8'h7e : $display ("%t: OPCODE  : LD    A,(HL)", $time);
228
    8'h7f : $display ("%t: OPCODE  : LD    A,A", $time);
229
    8'h80 : $display ("%t: OPCODE  : ADD   A,B", $time);
230
    8'h81 : $display ("%t: OPCODE  : ADD   A,C", $time);
231
    8'h82 : $display ("%t: OPCODE  : ADD   A,D", $time);
232
    8'h83 : $display ("%t: OPCODE  : ADD   A,E", $time);
233
    8'h84 : $display ("%t: OPCODE  : ADD   A,H", $time);
234
    8'h85 : $display ("%t: OPCODE  : ADD   A,L", $time);
235
    8'h86 : $display ("%t: OPCODE  : ADD   A,(HL)", $time);
236
    8'h87 : $display ("%t: OPCODE  : ADD   A,A", $time);
237
    8'h88 : $display ("%t: OPCODE  : ADC   A,B", $time);
238
    8'h89 : $display ("%t: OPCODE  : ADC   A,C", $time);
239
    8'h8a : $display ("%t: OPCODE  : ADC   A,D", $time);
240
    8'h8b : $display ("%t: OPCODE  : ADC   A,E", $time);
241
    8'h8c : $display ("%t: OPCODE  : ADC   A,H", $time);
242
    8'h8d : $display ("%t: OPCODE  : ADC   A,L", $time);
243
    8'h8e : $display ("%t: OPCODE  : ADC   A,(HL)", $time);
244
    8'h8f : $display ("%t: OPCODE  : ADC   A,A", $time);
245
    8'h90 : $display ("%t: OPCODE  : SUB   B", $time);
246
    8'h91 : $display ("%t: OPCODE  : SUB   C", $time);
247
    8'h92 : $display ("%t: OPCODE  : SUB   D", $time);
248
    8'h93 : $display ("%t: OPCODE  : SUB   E", $time);
249
    8'h94 : $display ("%t: OPCODE  : SUB   H", $time);
250
    8'h95 : $display ("%t: OPCODE  : SUB   L", $time);
251
    8'h96 : $display ("%t: OPCODE  : SUB   (HL)", $time);
252
    8'h97 : $display ("%t: OPCODE  : SUB   A", $time);
253
    8'h98 : $display ("%t: OPCODE  : SBC   B", $time);
254
    8'h99 : $display ("%t: OPCODE  : SBC   C", $time);
255
    8'h9a : $display ("%t: OPCODE  : SBC   D", $time);
256
    8'h9b : $display ("%t: OPCODE  : SBC   E", $time);
257
    8'h9c : $display ("%t: OPCODE  : SBC   H", $time);
258
    8'h9d : $display ("%t: OPCODE  : SBC   L", $time);
259
    8'h9e : $display ("%t: OPCODE  : SBC   (HL)", $time);
260
    8'h9f : $display ("%t: OPCODE  : SBC   A", $time);
261
    8'ha0 : $display ("%t: OPCODE  : AND   B", $time);
262
    8'ha1 : $display ("%t: OPCODE  : AND   C", $time);
263
    8'ha2 : $display ("%t: OPCODE  : AND   D", $time);
264
    8'ha3 : $display ("%t: OPCODE  : AND   E", $time);
265
    8'ha4 : $display ("%t: OPCODE  : AND   H", $time);
266
    8'ha5 : $display ("%t: OPCODE  : AND   L", $time);
267
    8'ha6 : $display ("%t: OPCODE  : AND   (HL)", $time);
268
    8'ha7 : $display ("%t: OPCODE  : AND   A", $time);
269
    8'ha8 : $display ("%t: OPCODE  : XOR   B", $time);
270
    8'ha9 : $display ("%t: OPCODE  : XOR   C", $time);
271
    8'haa : $display ("%t: OPCODE  : XOR   D", $time);
272
    8'hab : $display ("%t: OPCODE  : XOR   E", $time);
273
    8'hac : $display ("%t: OPCODE  : XOR   H", $time);
274
    8'had : $display ("%t: OPCODE  : XOR   L", $time);
275
    8'hae : $display ("%t: OPCODE  : XOR   (HL)", $time);
276
    8'haf : $display ("%t: OPCODE  : XOR   A", $time);
277
    8'hb0 : $display ("%t: OPCODE  : OR    B", $time);
278
    8'hb1 : $display ("%t: OPCODE  : OR    C", $time);
279
    8'hb2 : $display ("%t: OPCODE  : OR    D", $time);
280
    8'hb3 : $display ("%t: OPCODE  : OR    E", $time);
281
    8'hb4 : $display ("%t: OPCODE  : OR    H", $time);
282
    8'hb5 : $display ("%t: OPCODE  : OR    L", $time);
283
    8'hb6 : $display ("%t: OPCODE  : OR    (HL)", $time);
284
    8'hb7 : $display ("%t: OPCODE  : OR    A", $time);
285
    8'hb8 : $display ("%t: OPCODE  : CP    B", $time);
286
    8'hb9 : $display ("%t: OPCODE  : CP    C", $time);
287
    8'hba : $display ("%t: OPCODE  : CP    D", $time);
288
    8'hbb : $display ("%t: OPCODE  : CP    E", $time);
289
    8'hbc : $display ("%t: OPCODE  : CP    H", $time);
290
    8'hbd : $display ("%t: OPCODE  : CP    L", $time);
291
    8'hbe : $display ("%t: OPCODE  : CP    (HL)", $time);
292
    8'hbf : $display ("%t: OPCODE  : CP    A", $time);
293
    8'hc0 : $display ("%t: OPCODE  : RET   NZ", $time);
294
    8'hc1 : $display ("%t: OPCODE  : POP   BC", $time);
295
    8'hc2 :
296
      begin
297
        $display ("%t: OPCODE  : JP    NZ,address", $time);
298
        state = {4'd1, 4'd2};
299
      end
300
    8'hc3 :
301
      begin
302
        $display ("%t: OPCODE  : JP    address", $time);
303
        state = {4'd1, 4'd2};
304
      end
305
    8'hc4 :
306
      begin
307
        $display ("%t: OPCODE  : CALL  NZ,address", $time);
308
        state = {4'd1, 4'd2};
309
      end
310
    8'hc5 : $display ("%t: OPCODE  : PUSH  BC", $time);
311
    8'hc6 :
312
      begin
313
        $display ("%t: OPCODE  : ADD   A,byte", $time);
314
        state = {4'd1, 4'd1};
315
      end
316
    8'hc7 : $display ("%t: OPCODE  : RST   0", $time);
317
    8'hc8 : $display ("%t: OPCODE  : RET   Z", $time);
318
    8'hc9 : $display ("%t: OPCODE  : RET   ", $time);
319
    8'hca :
320
      begin
321
        $display ("%t: OPCODE  : JP    Z,address", $time);
322
        state = {4'd1, 4'd2};
323
      end
324
    8'hcb : state = 8'hcb;
325
    8'hcc :
326
      begin
327
        $display ("%t: OPCODE  : CALL  Z,address", $time);
328
        state = {4'd1, 4'd2};
329
      end
330
    8'hcd :
331
      begin
332
        $display ("%t: OPCODE  : CALL  address", $time);
333
        state = {4'd1, 4'd2};
334
      end
335
    8'hce :
336
      begin
337
        $display ("%t: OPCODE  : ADC   A,byte", $time);
338
        state = {4'd1, 4'd1};
339
      end
340
    8'hcf : $display ("%t: OPCODE  : RST   8", $time);
341
    8'hd0 : $display ("%t: OPCODE  : RET   NC", $time);
342
    8'hd1 : $display ("%t: OPCODE  : POP   DE", $time);
343
    8'hd2 :
344
      begin
345
        $display ("%t: OPCODE  : JP    NC,address", $time);
346
        state = {4'd1, 4'd2};
347
      end
348 42 ghutchis
    8'hd3 :
349
      begin
350
        $display ("%t: OPCODE  : OUT   (byte),A", $time);
351
        state = {4'd1, 4'd1};
352
      end
353 31 ghutchis
    8'hd4 :
354
      begin
355
        $display ("%t: OPCODE  : CALL  NC,address", $time);
356
        state = {4'd1, 4'd2};
357
      end
358
    8'hd5 : $display ("%t: OPCODE  : PUSH  DE", $time);
359
    8'hd6 :
360
      begin
361
        $display ("%t: OPCODE  : SUB   byte", $time);
362
        state = {4'd1, 4'd1};
363
      end
364
    8'hd7 : $display ("%t: OPCODE  : RST   10H", $time);
365
    8'hd8 : $display ("%t: OPCODE  : RET   C", $time);
366
    8'hd9 : $display ("%t: OPCODE  : EXX   ", $time);
367
    8'hda :
368
      begin
369
        $display ("%t: OPCODE  : JP    C,address", $time);
370
        state = {4'd1, 4'd2};
371
      end
372
    8'hdb :
373
      begin
374
        $display ("%t: OPCODE  : IN    A,(byte)", $time);
375
        state = {4'd1, 4'd1};
376
      end
377
    8'hdc :
378
      begin
379
        $display ("%t: OPCODE  : CALL  C,address", $time);
380
        state = {4'd1, 4'd2};
381
      end
382
    8'hdd : state = 8'hdd;
383
    8'hde :
384
      begin
385
        $display ("%t: OPCODE  : SBC   byte", $time);
386
        state = {4'd1, 4'd1};
387
      end
388
    8'hdf : $display ("%t: OPCODE  : RST   18H", $time);
389
    8'he0 : $display ("%t: OPCODE  : RET   PO", $time);
390
    8'he1 : $display ("%t: OPCODE  : POP   HL", $time);
391
    8'he2 :
392
      begin
393
        $display ("%t: OPCODE  : JP    PO,address", $time);
394
        state = {4'd1, 4'd2};
395
      end
396
    8'he3 : $display ("%t: OPCODE  : EX    (SP),HL", $time);
397
    8'he4 :
398
      begin
399
        $display ("%t: OPCODE  : CALL  PO,address", $time);
400
        state = {4'd1, 4'd2};
401
      end
402
    8'he5 : $display ("%t: OPCODE  : PUSH  HL", $time);
403
    8'he6 :
404
      begin
405
        $display ("%t: OPCODE  : AND   byte", $time);
406
        state = {4'd1, 4'd1};
407
      end
408
    8'he7 : $display ("%t: OPCODE  : RST   20H", $time);
409
    8'he8 : $display ("%t: OPCODE  : RET   PE", $time);
410
    8'he9 : $display ("%t: OPCODE  : JP    (HL)", $time);
411
    8'hea :
412
      begin
413
        $display ("%t: OPCODE  : JP    PE,address", $time);
414
        state = {4'd1, 4'd2};
415
      end
416
    8'heb : $display ("%t: OPCODE  : EX    DE,HL", $time);
417
    8'hec :
418
      begin
419
        $display ("%t: OPCODE  : CALL  PE,address", $time);
420
        state = {4'd1, 4'd2};
421
      end
422
    8'hed : state = 8'hed;
423
    8'hee :
424
      begin
425
        $display ("%t: OPCODE  : XOR   byte", $time);
426
        state = {4'd1, 4'd1};
427
      end
428
    8'hef : $display ("%t: OPCODE  : RST   28H", $time);
429
    8'hf0 : $display ("%t: OPCODE  : RET   P", $time);
430
    8'hf1 : $display ("%t: OPCODE  : POP   AF", $time);
431
    8'hf2 :
432
      begin
433
        $display ("%t: OPCODE  : JP    P,address", $time);
434
        state = {4'd1, 4'd2};
435
      end
436
    8'hf3 : $display ("%t: OPCODE  : DI    ", $time);
437
    8'hf4 :
438
      begin
439
        $display ("%t: OPCODE  : CALL  P,address", $time);
440
        state = {4'd1, 4'd2};
441
      end
442
    8'hf5 : $display ("%t: OPCODE  : PUSH  AF", $time);
443
    8'hf6 :
444
      begin
445
        $display ("%t: OPCODE  : OR    byte", $time);
446
        state = {4'd1, 4'd1};
447
      end
448
    8'hf7 : $display ("%t: OPCODE  : RST   30H", $time);
449
    8'hf8 : $display ("%t: OPCODE  : RET   M", $time);
450
    8'hf9 : $display ("%t: OPCODE  : LD    SP,HL", $time);
451
    8'hfa :
452
      begin
453
        $display ("%t: OPCODE  : JM    M,address", $time);
454
        state = {4'd1, 4'd2};
455
      end
456
    8'hfb : $display ("%t: OPCODE  : EI    ", $time);
457
    8'hfc :
458
      begin
459
        $display ("%t: OPCODE  : CALL  M,address", $time);
460
        state = {4'd1, 4'd2};
461
      end
462
    8'hfd : state = 8'hfd;
463
    8'hfe :
464
      begin
465
        $display ("%t: OPCODE  : CP    byte", $time);
466
        state = {4'd1, 4'd1};
467
      end
468
    8'hff : $display ("%t: OPCODE  : RST   38H", $time);
469
  endcase
470
  end
471
endtask
472
task decode1;
473
  input [7:0] opcode;
474
  inout [7:0] state;
475
  begin
476
  casex (state)
477
    8'hcb :
478
      begin
479
        case (opcode)
480
          8'h07 :
481
            begin
482
              $display ("%t: OPCODE  : RLC   A", $time);
483
              state = { 4'd0, 4'd0 };
484
            end
485
          8'h00 :
486
            begin
487
              $display ("%t: OPCODE  : RLC   B", $time);
488
              state = { 4'd0, 4'd0 };
489
            end
490
          8'h01 :
491
            begin
492
              $display ("%t: OPCODE  : RLC   C", $time);
493
              state = { 4'd0, 4'd0 };
494
            end
495
          8'h02 :
496
            begin
497
              $display ("%t: OPCODE  : RLC   D", $time);
498
              state = { 4'd0, 4'd0 };
499
            end
500
          8'h03 :
501
            begin
502
              $display ("%t: OPCODE  : RLC   E", $time);
503
              state = { 4'd0, 4'd0 };
504
            end
505
          8'h04 :
506
            begin
507
              $display ("%t: OPCODE  : RLC   H", $time);
508
              state = { 4'd0, 4'd0 };
509
            end
510
          8'h05 :
511
            begin
512
              $display ("%t: OPCODE  : RLC   L", $time);
513
              state = { 4'd0, 4'd0 };
514
            end
515
          8'h06 :
516
            begin
517
              $display ("%t: OPCODE  : RLC   (HL)", $time);
518
              state = { 4'd0, 4'd0 };
519
            end
520
          8'h17 :
521
            begin
522
              $display ("%t: OPCODE  : RL    A", $time);
523
              state = { 4'd0, 4'd0 };
524
            end
525
          8'h10 :
526
            begin
527
              $display ("%t: OPCODE  : RL    B", $time);
528
              state = { 4'd0, 4'd0 };
529
            end
530
          8'h11 :
531
            begin
532
              $display ("%t: OPCODE  : RL    C", $time);
533
              state = { 4'd0, 4'd0 };
534
            end
535
          8'h12 :
536
            begin
537
              $display ("%t: OPCODE  : RL    D", $time);
538
              state = { 4'd0, 4'd0 };
539
            end
540
          8'h13 :
541
            begin
542
              $display ("%t: OPCODE  : RL    E", $time);
543
              state = { 4'd0, 4'd0 };
544
            end
545
          8'h14 :
546
            begin
547
              $display ("%t: OPCODE  : RL    H", $time);
548
              state = { 4'd0, 4'd0 };
549
            end
550
          8'h15 :
551
            begin
552
              $display ("%t: OPCODE  : RL    L", $time);
553
              state = { 4'd0, 4'd0 };
554
            end
555
          8'h16 :
556
            begin
557
              $display ("%t: OPCODE  : RL    (HL)", $time);
558
              state = { 4'd0, 4'd0 };
559
            end
560
          8'h0f :
561
            begin
562
              $display ("%t: OPCODE  : RRC   A", $time);
563
              state = { 4'd0, 4'd0 };
564
            end
565
          8'h08 :
566
            begin
567
              $display ("%t: OPCODE  : RRC   B", $time);
568
              state = { 4'd0, 4'd0 };
569
            end
570
          8'h09 :
571
            begin
572
              $display ("%t: OPCODE  : RRC   C", $time);
573
              state = { 4'd0, 4'd0 };
574
            end
575
          8'h0a :
576
            begin
577
              $display ("%t: OPCODE  : RRC   D", $time);
578
              state = { 4'd0, 4'd0 };
579
            end
580
          8'h0b :
581
            begin
582
              $display ("%t: OPCODE  : RRC   E", $time);
583
              state = { 4'd0, 4'd0 };
584
            end
585
          8'h0c :
586
            begin
587
              $display ("%t: OPCODE  : RRC   H", $time);
588
              state = { 4'd0, 4'd0 };
589
            end
590
          8'h0d :
591
            begin
592
              $display ("%t: OPCODE  : RRC   L", $time);
593
              state = { 4'd0, 4'd0 };
594
            end
595
          8'h0e :
596
            begin
597
              $display ("%t: OPCODE  : RRC   (HL)", $time);
598
              state = { 4'd0, 4'd0 };
599
            end
600
          8'h1f :
601
            begin
602
              $display ("%t: OPCODE  : RL    A", $time);
603
              state = { 4'd0, 4'd0 };
604
            end
605
          8'h18 :
606
            begin
607
              $display ("%t: OPCODE  : RL    B", $time);
608
              state = { 4'd0, 4'd0 };
609
            end
610
          8'h19 :
611
            begin
612
              $display ("%t: OPCODE  : RL    C", $time);
613
              state = { 4'd0, 4'd0 };
614
            end
615
          8'h1a :
616
            begin
617
              $display ("%t: OPCODE  : RL    D", $time);
618
              state = { 4'd0, 4'd0 };
619
            end
620
          8'h1b :
621
            begin
622
              $display ("%t: OPCODE  : RL    E", $time);
623
              state = { 4'd0, 4'd0 };
624
            end
625
          8'h1c :
626
            begin
627
              $display ("%t: OPCODE  : RL    H", $time);
628
              state = { 4'd0, 4'd0 };
629
            end
630
          8'h1d :
631
            begin
632
              $display ("%t: OPCODE  : RL    L", $time);
633
              state = { 4'd0, 4'd0 };
634
            end
635
          8'h1e :
636
            begin
637
              $display ("%t: OPCODE  : RL    (HL)", $time);
638
              state = { 4'd0, 4'd0 };
639
            end
640
          8'h47 :
641
            begin
642
              $display ("%t: OPCODE  : BIT   0,A", $time);
643
              state = { 4'd0, 4'd0 };
644
            end
645
          8'h40 :
646
            begin
647
              $display ("%t: OPCODE  : BIT   0,B", $time);
648
              state = { 4'd0, 4'd0 };
649
            end
650
          8'h41 :
651
            begin
652
              $display ("%t: OPCODE  : BIT   0,C", $time);
653
              state = { 4'd0, 4'd0 };
654
            end
655
          8'h42 :
656
            begin
657
              $display ("%t: OPCODE  : BIT   0,D", $time);
658
              state = { 4'd0, 4'd0 };
659
            end
660
          8'h43 :
661
            begin
662
              $display ("%t: OPCODE  : BIT   0,E", $time);
663
              state = { 4'd0, 4'd0 };
664
            end
665
          8'h44 :
666
            begin
667
              $display ("%t: OPCODE  : BIT   0,H", $time);
668
              state = { 4'd0, 4'd0 };
669
            end
670
          8'h45 :
671
            begin
672
              $display ("%t: OPCODE  : BIT   0,L", $time);
673
              state = { 4'd0, 4'd0 };
674
            end
675
          8'h46 :
676
            begin
677
              $display ("%t: OPCODE  : BIT   0,(HL)", $time);
678
              state = { 4'd0, 4'd0 };
679
            end
680
          8'h4f :
681
            begin
682
              $display ("%t: OPCODE  : BIT   1,A", $time);
683
              state = { 4'd0, 4'd0 };
684
            end
685
          8'h48 :
686
            begin
687
              $display ("%t: OPCODE  : BIT   1,B", $time);
688
              state = { 4'd0, 4'd0 };
689
            end
690
          8'h49 :
691
            begin
692
              $display ("%t: OPCODE  : BIT   1,C", $time);
693
              state = { 4'd0, 4'd0 };
694
            end
695
          8'h4a :
696
            begin
697
              $display ("%t: OPCODE  : BIT   1,D", $time);
698
              state = { 4'd0, 4'd0 };
699
            end
700
          8'h4b :
701
            begin
702
              $display ("%t: OPCODE  : BIT   1,E", $time);
703
              state = { 4'd0, 4'd0 };
704
            end
705
          8'h4c :
706
            begin
707
              $display ("%t: OPCODE  : BIT   1,H", $time);
708
              state = { 4'd0, 4'd0 };
709
            end
710
          8'h4d :
711
            begin
712
              $display ("%t: OPCODE  : BIT   1,L", $time);
713
              state = { 4'd0, 4'd0 };
714
            end
715
          8'h4e :
716
            begin
717
              $display ("%t: OPCODE  : BIT   1,(HL)", $time);
718
              state = { 4'd0, 4'd0 };
719
            end
720
          8'h57 :
721
            begin
722
              $display ("%t: OPCODE  : BIT   2,A", $time);
723
              state = { 4'd0, 4'd0 };
724
            end
725
          8'h50 :
726
            begin
727
              $display ("%t: OPCODE  : BIT   2,B", $time);
728
              state = { 4'd0, 4'd0 };
729
            end
730
          8'h51 :
731
            begin
732
              $display ("%t: OPCODE  : BIT   2,C", $time);
733
              state = { 4'd0, 4'd0 };
734
            end
735
          8'h52 :
736
            begin
737
              $display ("%t: OPCODE  : BIT   2,D", $time);
738
              state = { 4'd0, 4'd0 };
739
            end
740
          8'h53 :
741
            begin
742
              $display ("%t: OPCODE  : BIT   2,E", $time);
743
              state = { 4'd0, 4'd0 };
744
            end
745
          8'h54 :
746
            begin
747
              $display ("%t: OPCODE  : BIT   2,H", $time);
748
              state = { 4'd0, 4'd0 };
749
            end
750
          8'h55 :
751
            begin
752
              $display ("%t: OPCODE  : BIT   2,L", $time);
753
              state = { 4'd0, 4'd0 };
754
            end
755
          8'h56 :
756
            begin
757
              $display ("%t: OPCODE  : BIT   2,(HL)", $time);
758
              state = { 4'd0, 4'd0 };
759
            end
760
          8'h5f :
761
            begin
762
              $display ("%t: OPCODE  : BIT   3,A", $time);
763
              state = { 4'd0, 4'd0 };
764
            end
765
          8'h58 :
766
            begin
767
              $display ("%t: OPCODE  : BIT   3,B", $time);
768
              state = { 4'd0, 4'd0 };
769
            end
770
          8'h59 :
771
            begin
772
              $display ("%t: OPCODE  : BIT   3,C", $time);
773
              state = { 4'd0, 4'd0 };
774
            end
775
          8'h5a :
776
            begin
777
              $display ("%t: OPCODE  : BIT   3,D", $time);
778
              state = { 4'd0, 4'd0 };
779
            end
780
          8'h5b :
781
            begin
782
              $display ("%t: OPCODE  : BIT   3,E", $time);
783
              state = { 4'd0, 4'd0 };
784
            end
785
          8'h5c :
786
            begin
787
              $display ("%t: OPCODE  : BIT   3,H", $time);
788
              state = { 4'd0, 4'd0 };
789
            end
790
          8'h5d :
791
            begin
792
              $display ("%t: OPCODE  : BIT   3,L", $time);
793
              state = { 4'd0, 4'd0 };
794
            end
795
          8'h5e :
796
            begin
797
              $display ("%t: OPCODE  : BIT   3,(HL)", $time);
798
              state = { 4'd0, 4'd0 };
799
            end
800
          8'h67 :
801
            begin
802
              $display ("%t: OPCODE  : BIT   4,A", $time);
803
              state = { 4'd0, 4'd0 };
804
            end
805
          8'h60 :
806
            begin
807
              $display ("%t: OPCODE  : BIT   4,B", $time);
808
              state = { 4'd0, 4'd0 };
809
            end
810
          8'h61 :
811
            begin
812
              $display ("%t: OPCODE  : BIT   4,C", $time);
813
              state = { 4'd0, 4'd0 };
814
            end
815
          8'h62 :
816
            begin
817
              $display ("%t: OPCODE  : BIT   4,D", $time);
818
              state = { 4'd0, 4'd0 };
819
            end
820
          8'h63 :
821
            begin
822
              $display ("%t: OPCODE  : BIT   4,E", $time);
823
              state = { 4'd0, 4'd0 };
824
            end
825
          8'h64 :
826
            begin
827
              $display ("%t: OPCODE  : BIT   4,H", $time);
828
              state = { 4'd0, 4'd0 };
829
            end
830
          8'h65 :
831
            begin
832
              $display ("%t: OPCODE  : BIT   4,L", $time);
833
              state = { 4'd0, 4'd0 };
834
            end
835
          8'h66 :
836
            begin
837
              $display ("%t: OPCODE  : BIT   4,(HL)", $time);
838
              state = { 4'd0, 4'd0 };
839
            end
840
          8'h6f :
841
            begin
842
              $display ("%t: OPCODE  : BIT   5,A", $time);
843
              state = { 4'd0, 4'd0 };
844
            end
845
          8'h68 :
846
            begin
847
              $display ("%t: OPCODE  : BIT   5,B", $time);
848
              state = { 4'd0, 4'd0 };
849
            end
850
          8'h69 :
851
            begin
852
              $display ("%t: OPCODE  : BIT   5,C", $time);
853
              state = { 4'd0, 4'd0 };
854
            end
855
          8'h6a :
856
            begin
857
              $display ("%t: OPCODE  : BIT   5,D", $time);
858
              state = { 4'd0, 4'd0 };
859
            end
860
          8'h6b :
861
            begin
862
              $display ("%t: OPCODE  : BIT   5,E", $time);
863
              state = { 4'd0, 4'd0 };
864
            end
865
          8'h6c :
866
            begin
867
              $display ("%t: OPCODE  : BIT   5,H", $time);
868
              state = { 4'd0, 4'd0 };
869
            end
870
          8'h6d :
871
            begin
872
              $display ("%t: OPCODE  : BIT   5,L", $time);
873
              state = { 4'd0, 4'd0 };
874
            end
875
          8'h6e :
876
            begin
877
              $display ("%t: OPCODE  : BIT   5,(HL)", $time);
878
              state = { 4'd0, 4'd0 };
879
            end
880
          8'h77 :
881
            begin
882
              $display ("%t: OPCODE  : BIT   6,A", $time);
883
              state = { 4'd0, 4'd0 };
884
            end
885
          8'h70 :
886
            begin
887
              $display ("%t: OPCODE  : BIT   6,B", $time);
888
              state = { 4'd0, 4'd0 };
889
            end
890
          8'h71 :
891
            begin
892
              $display ("%t: OPCODE  : BIT   6,C", $time);
893
              state = { 4'd0, 4'd0 };
894
            end
895
          8'h72 :
896
            begin
897
              $display ("%t: OPCODE  : BIT   6,D", $time);
898
              state = { 4'd0, 4'd0 };
899
            end
900
          8'h73 :
901
            begin
902
              $display ("%t: OPCODE  : BIT   6,E", $time);
903
              state = { 4'd0, 4'd0 };
904
            end
905
          8'h74 :
906
            begin
907
              $display ("%t: OPCODE  : BIT   6,H", $time);
908
              state = { 4'd0, 4'd0 };
909
            end
910
          8'h75 :
911
            begin
912
              $display ("%t: OPCODE  : BIT   6,L", $time);
913
              state = { 4'd0, 4'd0 };
914
            end
915
          8'h76 :
916
            begin
917
              $display ("%t: OPCODE  : BIT   6,(HL)", $time);
918
              state = { 4'd0, 4'd0 };
919
            end
920
          8'h7f :
921
            begin
922
              $display ("%t: OPCODE  : BIT   7,A", $time);
923
              state = { 4'd0, 4'd0 };
924
            end
925
          8'h78 :
926
            begin
927
              $display ("%t: OPCODE  : BIT   7,B", $time);
928
              state = { 4'd0, 4'd0 };
929
            end
930
          8'h79 :
931
            begin
932
              $display ("%t: OPCODE  : BIT   7,C", $time);
933
              state = { 4'd0, 4'd0 };
934
            end
935
          8'h7a :
936
            begin
937
              $display ("%t: OPCODE  : BIT   7,D", $time);
938
              state = { 4'd0, 4'd0 };
939
            end
940
          8'h7b :
941
            begin
942
              $display ("%t: OPCODE  : BIT   7,E", $time);
943
              state = { 4'd0, 4'd0 };
944
            end
945
          8'h7c :
946
            begin
947
              $display ("%t: OPCODE  : BIT   7,H", $time);
948
              state = { 4'd0, 4'd0 };
949
            end
950
          8'h7d :
951
            begin
952
              $display ("%t: OPCODE  : BIT   7,L", $time);
953
              state = { 4'd0, 4'd0 };
954
            end
955
          8'h7e :
956
            begin
957
              $display ("%t: OPCODE  : BIT   7,(HL)", $time);
958
              state = { 4'd0, 4'd0 };
959
            end
960
          8'h87 :
961
            begin
962
              $display ("%t: OPCODE  : RES   0,A", $time);
963
              state = { 4'd0, 4'd0 };
964
            end
965
          8'h80 :
966
            begin
967
              $display ("%t: OPCODE  : RES   0,B", $time);
968
              state = { 4'd0, 4'd0 };
969
            end
970
          8'h81 :
971
            begin
972
              $display ("%t: OPCODE  : RES   0,C", $time);
973
              state = { 4'd0, 4'd0 };
974
            end
975
          8'h82 :
976
            begin
977
              $display ("%t: OPCODE  : RES   0,D", $time);
978
              state = { 4'd0, 4'd0 };
979
            end
980
          8'h83 :
981
            begin
982
              $display ("%t: OPCODE  : RES   0,E", $time);
983
              state = { 4'd0, 4'd0 };
984
            end
985
          8'h84 :
986
            begin
987
              $display ("%t: OPCODE  : RES   0,H", $time);
988
              state = { 4'd0, 4'd0 };
989
            end
990
          8'h85 :
991
            begin
992
              $display ("%t: OPCODE  : RES   0,L", $time);
993
              state = { 4'd0, 4'd0 };
994
            end
995
          8'h86 :
996
            begin
997
              $display ("%t: OPCODE  : RES   0,(HL)", $time);
998
              state = { 4'd0, 4'd0 };
999
            end
1000
          8'h8f :
1001
            begin
1002
              $display ("%t: OPCODE  : RES   1,A", $time);
1003
              state = { 4'd0, 4'd0 };
1004
            end
1005
          8'h88 :
1006
            begin
1007
              $display ("%t: OPCODE  : RES   1,B", $time);
1008
              state = { 4'd0, 4'd0 };
1009
            end
1010
          8'h89 :
1011
            begin
1012
              $display ("%t: OPCODE  : RES   1,C", $time);
1013
              state = { 4'd0, 4'd0 };
1014
            end
1015
          8'h8a :
1016
            begin
1017
              $display ("%t: OPCODE  : RES   1,D", $time);
1018
              state = { 4'd0, 4'd0 };
1019
            end
1020
          8'h8b :
1021
            begin
1022
              $display ("%t: OPCODE  : RES   1,E", $time);
1023
              state = { 4'd0, 4'd0 };
1024
            end
1025
          8'h8c :
1026
            begin
1027
              $display ("%t: OPCODE  : RES   1,H", $time);
1028
              state = { 4'd0, 4'd0 };
1029
            end
1030
          8'h8d :
1031
            begin
1032
              $display ("%t: OPCODE  : RES   1,L", $time);
1033
              state = { 4'd0, 4'd0 };
1034
            end
1035
          8'h8e :
1036
            begin
1037
              $display ("%t: OPCODE  : RES   1,(HL)", $time);
1038
              state = { 4'd0, 4'd0 };
1039
            end
1040
          8'h97 :
1041
            begin
1042
              $display ("%t: OPCODE  : RES   2,A", $time);
1043
              state = { 4'd0, 4'd0 };
1044
            end
1045
          8'h90 :
1046
            begin
1047
              $display ("%t: OPCODE  : RES   2,B", $time);
1048
              state = { 4'd0, 4'd0 };
1049
            end
1050
          8'h91 :
1051
            begin
1052
              $display ("%t: OPCODE  : RES   2,C", $time);
1053
              state = { 4'd0, 4'd0 };
1054
            end
1055
          8'h92 :
1056
            begin
1057
              $display ("%t: OPCODE  : RES   2,D", $time);
1058
              state = { 4'd0, 4'd0 };
1059
            end
1060
          8'h93 :
1061
            begin
1062
              $display ("%t: OPCODE  : RES   2,E", $time);
1063
              state = { 4'd0, 4'd0 };
1064
            end
1065
          8'h94 :
1066
            begin
1067
              $display ("%t: OPCODE  : RES   2,H", $time);
1068
              state = { 4'd0, 4'd0 };
1069
            end
1070
          8'h95 :
1071
            begin
1072
              $display ("%t: OPCODE  : RES   2,L", $time);
1073
              state = { 4'd0, 4'd0 };
1074
            end
1075
          8'h96 :
1076
            begin
1077
              $display ("%t: OPCODE  : RES   2,(HL)", $time);
1078
              state = { 4'd0, 4'd0 };
1079
            end
1080
          8'h9f :
1081
            begin
1082
              $display ("%t: OPCODE  : RES   3,A", $time);
1083
              state = { 4'd0, 4'd0 };
1084
            end
1085
          8'h98 :
1086
            begin
1087
              $display ("%t: OPCODE  : RES   3,B", $time);
1088
              state = { 4'd0, 4'd0 };
1089
            end
1090
          8'h99 :
1091
            begin
1092
              $display ("%t: OPCODE  : RES   3,C", $time);
1093
              state = { 4'd0, 4'd0 };
1094
            end
1095
          8'h9a :
1096
            begin
1097
              $display ("%t: OPCODE  : RES   3,D", $time);
1098
              state = { 4'd0, 4'd0 };
1099
            end
1100
          8'h9b :
1101
            begin
1102
              $display ("%t: OPCODE  : RES   3,E", $time);
1103
              state = { 4'd0, 4'd0 };
1104
            end
1105
          8'h9c :
1106
            begin
1107
              $display ("%t: OPCODE  : RES   3,H", $time);
1108
              state = { 4'd0, 4'd0 };
1109
            end
1110
          8'h9d :
1111
            begin
1112
              $display ("%t: OPCODE  : RES   3,L", $time);
1113
              state = { 4'd0, 4'd0 };
1114
            end
1115
          8'h9e :
1116
            begin
1117
              $display ("%t: OPCODE  : RES   3,(HL)", $time);
1118
              state = { 4'd0, 4'd0 };
1119
            end
1120
          8'ha7 :
1121
            begin
1122
              $display ("%t: OPCODE  : RES   4,A", $time);
1123
              state = { 4'd0, 4'd0 };
1124
            end
1125
          8'ha0 :
1126
            begin
1127
              $display ("%t: OPCODE  : RES   4,B", $time);
1128
              state = { 4'd0, 4'd0 };
1129
            end
1130
          8'ha1 :
1131
            begin
1132
              $display ("%t: OPCODE  : RES   4,C", $time);
1133
              state = { 4'd0, 4'd0 };
1134
            end
1135
          8'ha2 :
1136
            begin
1137
              $display ("%t: OPCODE  : RES   4,D", $time);
1138
              state = { 4'd0, 4'd0 };
1139
            end
1140
          8'ha3 :
1141
            begin
1142
              $display ("%t: OPCODE  : RES   4,E", $time);
1143
              state = { 4'd0, 4'd0 };
1144
            end
1145
          8'ha4 :
1146
            begin
1147
              $display ("%t: OPCODE  : RES   4,H", $time);
1148
              state = { 4'd0, 4'd0 };
1149
            end
1150
          8'ha5 :
1151
            begin
1152
              $display ("%t: OPCODE  : RES   4,L", $time);
1153
              state = { 4'd0, 4'd0 };
1154
            end
1155
          8'ha6 :
1156
            begin
1157
              $display ("%t: OPCODE  : RES   4,(HL)", $time);
1158
              state = { 4'd0, 4'd0 };
1159
            end
1160
          8'haf :
1161
            begin
1162
              $display ("%t: OPCODE  : RES   5,A", $time);
1163
              state = { 4'd0, 4'd0 };
1164
            end
1165
          8'ha8 :
1166
            begin
1167
              $display ("%t: OPCODE  : RES   5,B", $time);
1168
              state = { 4'd0, 4'd0 };
1169
            end
1170
          8'ha9 :
1171
            begin
1172
              $display ("%t: OPCODE  : RES   5,C", $time);
1173
              state = { 4'd0, 4'd0 };
1174
            end
1175
          8'haa :
1176
            begin
1177
              $display ("%t: OPCODE  : RES   5,D", $time);
1178
              state = { 4'd0, 4'd0 };
1179
            end
1180
          8'hab :
1181
            begin
1182
              $display ("%t: OPCODE  : RES   5,E", $time);
1183
              state = { 4'd0, 4'd0 };
1184
            end
1185
          8'hac :
1186
            begin
1187
              $display ("%t: OPCODE  : RES   5,H", $time);
1188
              state = { 4'd0, 4'd0 };
1189
            end
1190
          8'had :
1191
            begin
1192
              $display ("%t: OPCODE  : RES   5,L", $time);
1193
              state = { 4'd0, 4'd0 };
1194
            end
1195
          8'hae :
1196
            begin
1197
              $display ("%t: OPCODE  : RES   5,(HL)", $time);
1198
              state = { 4'd0, 4'd0 };
1199
            end
1200
          8'hb7 :
1201
            begin
1202
              $display ("%t: OPCODE  : RES   6,A", $time);
1203
              state = { 4'd0, 4'd0 };
1204
            end
1205
          8'hb0 :
1206
            begin
1207
              $display ("%t: OPCODE  : RES   6,B", $time);
1208
              state = { 4'd0, 4'd0 };
1209
            end
1210
          8'hb1 :
1211
            begin
1212
              $display ("%t: OPCODE  : RES   6,C", $time);
1213
              state = { 4'd0, 4'd0 };
1214
            end
1215
          8'hb2 :
1216
            begin
1217
              $display ("%t: OPCODE  : RES   6,D", $time);
1218
              state = { 4'd0, 4'd0 };
1219
            end
1220
          8'hb3 :
1221
            begin
1222
              $display ("%t: OPCODE  : RES   6,E", $time);
1223
              state = { 4'd0, 4'd0 };
1224
            end
1225
          8'hb4 :
1226
            begin
1227
              $display ("%t: OPCODE  : RES   6,H", $time);
1228
              state = { 4'd0, 4'd0 };
1229
            end
1230
          8'hb5 :
1231
            begin
1232
              $display ("%t: OPCODE  : RES   6,L", $time);
1233
              state = { 4'd0, 4'd0 };
1234
            end
1235
          8'hb6 :
1236
            begin
1237
              $display ("%t: OPCODE  : RES   6,(HL)", $time);
1238
              state = { 4'd0, 4'd0 };
1239
            end
1240
          8'hbf :
1241
            begin
1242
              $display ("%t: OPCODE  : RES   7,A", $time);
1243
              state = { 4'd0, 4'd0 };
1244
            end
1245
          8'hb8 :
1246
            begin
1247
              $display ("%t: OPCODE  : RES   7,B", $time);
1248
              state = { 4'd0, 4'd0 };
1249
            end
1250
          8'hb9 :
1251
            begin
1252
              $display ("%t: OPCODE  : RES   7,C", $time);
1253
              state = { 4'd0, 4'd0 };
1254
            end
1255
          8'hba :
1256
            begin
1257
              $display ("%t: OPCODE  : RES   7,D", $time);
1258
              state = { 4'd0, 4'd0 };
1259
            end
1260
          8'hbb :
1261
            begin
1262
              $display ("%t: OPCODE  : RES   7,E", $time);
1263
              state = { 4'd0, 4'd0 };
1264
            end
1265
          8'hbc :
1266
            begin
1267
              $display ("%t: OPCODE  : RES   7,H", $time);
1268
              state = { 4'd0, 4'd0 };
1269
            end
1270
          8'hbd :
1271
            begin
1272
              $display ("%t: OPCODE  : RES   7,L", $time);
1273
              state = { 4'd0, 4'd0 };
1274
            end
1275
          8'hbe :
1276
            begin
1277
              $display ("%t: OPCODE  : RES   7,(HL)", $time);
1278
              state = { 4'd0, 4'd0 };
1279
            end
1280
          8'hc7 :
1281
            begin
1282
              $display ("%t: OPCODE  : SET   0,A", $time);
1283
              state = { 4'd0, 4'd0 };
1284
            end
1285
          8'hc0 :
1286
            begin
1287
              $display ("%t: OPCODE  : SET   0,B", $time);
1288
              state = { 4'd0, 4'd0 };
1289
            end
1290
          8'hc1 :
1291
            begin
1292
              $display ("%t: OPCODE  : SET   0,C", $time);
1293
              state = { 4'd0, 4'd0 };
1294
            end
1295
          8'hc2 :
1296
            begin
1297
              $display ("%t: OPCODE  : SET   0,D", $time);
1298
              state = { 4'd0, 4'd0 };
1299
            end
1300
          8'hc3 :
1301
            begin
1302
              $display ("%t: OPCODE  : SET   0,E", $time);
1303
              state = { 4'd0, 4'd0 };
1304
            end
1305
          8'hc4 :
1306
            begin
1307
              $display ("%t: OPCODE  : SET   0,H", $time);
1308
              state = { 4'd0, 4'd0 };
1309
            end
1310
          8'hc5 :
1311
            begin
1312
              $display ("%t: OPCODE  : SET   0,L", $time);
1313
              state = { 4'd0, 4'd0 };
1314
            end
1315
          8'hc6 :
1316
            begin
1317
              $display ("%t: OPCODE  : SET   0,(HL)", $time);
1318
              state = { 4'd0, 4'd0 };
1319
            end
1320
          8'hcf :
1321
            begin
1322
              $display ("%t: OPCODE  : SET   1,A", $time);
1323
              state = { 4'd0, 4'd0 };
1324
            end
1325
          8'hc8 :
1326
            begin
1327
              $display ("%t: OPCODE  : SET   1,B", $time);
1328
              state = { 4'd0, 4'd0 };
1329
            end
1330
          8'hc9 :
1331
            begin
1332
              $display ("%t: OPCODE  : SET   1,C", $time);
1333
              state = { 4'd0, 4'd0 };
1334
            end
1335
          8'hca :
1336
            begin
1337
              $display ("%t: OPCODE  : SET   1,D", $time);
1338
              state = { 4'd0, 4'd0 };
1339
            end
1340
          8'hcb :
1341
            begin
1342
              $display ("%t: OPCODE  : SET   1,E", $time);
1343
              state = { 4'd0, 4'd0 };
1344
            end
1345
          8'hcc :
1346
            begin
1347
              $display ("%t: OPCODE  : SET   1,H", $time);
1348
              state = { 4'd0, 4'd0 };
1349
            end
1350
          8'hcd :
1351
            begin
1352
              $display ("%t: OPCODE  : SET   1,L", $time);
1353
              state = { 4'd0, 4'd0 };
1354
            end
1355
          8'hce :
1356
            begin
1357
              $display ("%t: OPCODE  : SET   1,(HL)", $time);
1358
              state = { 4'd0, 4'd0 };
1359
            end
1360
          8'hd7 :
1361
            begin
1362
              $display ("%t: OPCODE  : SET   2,A", $time);
1363
              state = { 4'd0, 4'd0 };
1364
            end
1365
          8'hd0 :
1366
            begin
1367
              $display ("%t: OPCODE  : SET   2,B", $time);
1368
              state = { 4'd0, 4'd0 };
1369
            end
1370
          8'hd1 :
1371
            begin
1372
              $display ("%t: OPCODE  : SET   2,C", $time);
1373
              state = { 4'd0, 4'd0 };
1374
            end
1375
          8'hd2 :
1376
            begin
1377
              $display ("%t: OPCODE  : SET   2,D", $time);
1378
              state = { 4'd0, 4'd0 };
1379
            end
1380
          8'hd3 :
1381
            begin
1382
              $display ("%t: OPCODE  : SET   2,E", $time);
1383
              state = { 4'd0, 4'd0 };
1384
            end
1385
          8'hd4 :
1386
            begin
1387
              $display ("%t: OPCODE  : SET   2,H", $time);
1388
              state = { 4'd0, 4'd0 };
1389
            end
1390
          8'hd5 :
1391
            begin
1392
              $display ("%t: OPCODE  : SET   2,L", $time);
1393
              state = { 4'd0, 4'd0 };
1394
            end
1395
          8'hd6 :
1396
            begin
1397
              $display ("%t: OPCODE  : SET   2,(HL)", $time);
1398
              state = { 4'd0, 4'd0 };
1399
            end
1400
          8'hdf :
1401
            begin
1402
              $display ("%t: OPCODE  : SET   3,A", $time);
1403
              state = { 4'd0, 4'd0 };
1404
            end
1405
          8'hd8 :
1406
            begin
1407
              $display ("%t: OPCODE  : SET   3,B", $time);
1408
              state = { 4'd0, 4'd0 };
1409
            end
1410
          8'hd9 :
1411
            begin
1412
              $display ("%t: OPCODE  : SET   3,C", $time);
1413
              state = { 4'd0, 4'd0 };
1414
            end
1415
          8'hda :
1416
            begin
1417
              $display ("%t: OPCODE  : SET   3,D", $time);
1418
              state = { 4'd0, 4'd0 };
1419
            end
1420
          8'hdb :
1421
            begin
1422
              $display ("%t: OPCODE  : SET   3,E", $time);
1423
              state = { 4'd0, 4'd0 };
1424
            end
1425
          8'hdc :
1426
            begin
1427
              $display ("%t: OPCODE  : SET   3,H", $time);
1428
              state = { 4'd0, 4'd0 };
1429
            end
1430
          8'hdd :
1431
            begin
1432
              $display ("%t: OPCODE  : SET   3,L", $time);
1433
              state = { 4'd0, 4'd0 };
1434
            end
1435
          8'hde :
1436
            begin
1437
              $display ("%t: OPCODE  : SET   3,(HL)", $time);
1438
              state = { 4'd0, 4'd0 };
1439
            end
1440
          8'he7 :
1441
            begin
1442
              $display ("%t: OPCODE  : SET   4,A", $time);
1443
              state = { 4'd0, 4'd0 };
1444
            end
1445
          8'he0 :
1446
            begin
1447
              $display ("%t: OPCODE  : SET   4,B", $time);
1448
              state = { 4'd0, 4'd0 };
1449
            end
1450
          8'he1 :
1451
            begin
1452
              $display ("%t: OPCODE  : SET   4,C", $time);
1453
              state = { 4'd0, 4'd0 };
1454
            end
1455
          8'he2 :
1456
            begin
1457
              $display ("%t: OPCODE  : SET   4,D", $time);
1458
              state = { 4'd0, 4'd0 };
1459
            end
1460
          8'he3 :
1461
            begin
1462
              $display ("%t: OPCODE  : SET   4,E", $time);
1463
              state = { 4'd0, 4'd0 };
1464
            end
1465
          8'he4 :
1466
            begin
1467
              $display ("%t: OPCODE  : SET   4,H", $time);
1468
              state = { 4'd0, 4'd0 };
1469
            end
1470
          8'he5 :
1471
            begin
1472
              $display ("%t: OPCODE  : SET   4,L", $time);
1473
              state = { 4'd0, 4'd0 };
1474
            end
1475
          8'he6 :
1476
            begin
1477
              $display ("%t: OPCODE  : SET   4,(HL)", $time);
1478
              state = { 4'd0, 4'd0 };
1479
            end
1480
          8'hef :
1481
            begin
1482
              $display ("%t: OPCODE  : SET   5,A", $time);
1483
              state = { 4'd0, 4'd0 };
1484
            end
1485
          8'he8 :
1486
            begin
1487
              $display ("%t: OPCODE  : SET   5,B", $time);
1488
              state = { 4'd0, 4'd0 };
1489
            end
1490
          8'he9 :
1491
            begin
1492
              $display ("%t: OPCODE  : SET   5,C", $time);
1493
              state = { 4'd0, 4'd0 };
1494
            end
1495
          8'hea :
1496
            begin
1497
              $display ("%t: OPCODE  : SET   5,D", $time);
1498
              state = { 4'd0, 4'd0 };
1499
            end
1500
          8'heb :
1501
            begin
1502
              $display ("%t: OPCODE  : SET   5,E", $time);
1503
              state = { 4'd0, 4'd0 };
1504
            end
1505
          8'hec :
1506
            begin
1507
              $display ("%t: OPCODE  : SET   5,H", $time);
1508
              state = { 4'd0, 4'd0 };
1509
            end
1510
          8'hed :
1511
            begin
1512
              $display ("%t: OPCODE  : SET   5,L", $time);
1513
              state = { 4'd0, 4'd0 };
1514
            end
1515
          8'hee :
1516
            begin
1517
              $display ("%t: OPCODE  : SET   5,(HL)", $time);
1518
              state = { 4'd0, 4'd0 };
1519
            end
1520
          8'hf7 :
1521
            begin
1522
              $display ("%t: OPCODE  : SET   6,A", $time);
1523
              state = { 4'd0, 4'd0 };
1524
            end
1525
          8'hf0 :
1526
            begin
1527
              $display ("%t: OPCODE  : SET   6,B", $time);
1528
              state = { 4'd0, 4'd0 };
1529
            end
1530
          8'hf1 :
1531
            begin
1532
              $display ("%t: OPCODE  : SET   6,C", $time);
1533
              state = { 4'd0, 4'd0 };
1534
            end
1535
          8'hf2 :
1536
            begin
1537
              $display ("%t: OPCODE  : SET   6,D", $time);
1538
              state = { 4'd0, 4'd0 };
1539
            end
1540
          8'hf3 :
1541
            begin
1542
              $display ("%t: OPCODE  : SET   6,E", $time);
1543
              state = { 4'd0, 4'd0 };
1544
            end
1545
          8'hf4 :
1546
            begin
1547
              $display ("%t: OPCODE  : SET   6,H", $time);
1548
              state = { 4'd0, 4'd0 };
1549
            end
1550
          8'hf5 :
1551
            begin
1552
              $display ("%t: OPCODE  : SET   6,L", $time);
1553
              state = { 4'd0, 4'd0 };
1554
            end
1555
          8'hf6 :
1556
            begin
1557
              $display ("%t: OPCODE  : SET   6,(HL)", $time);
1558
              state = { 4'd0, 4'd0 };
1559
            end
1560
          8'hff :
1561
            begin
1562
              $display ("%t: OPCODE  : SET   7,A", $time);
1563
              state = { 4'd0, 4'd0 };
1564
            end
1565
          8'hf8 :
1566
            begin
1567
              $display ("%t: OPCODE  : SET   7,B", $time);
1568
              state = { 4'd0, 4'd0 };
1569
            end
1570
          8'hf9 :
1571
            begin
1572
              $display ("%t: OPCODE  : SET   7,C", $time);
1573
              state = { 4'd0, 4'd0 };
1574
            end
1575
          8'hfa :
1576
            begin
1577
              $display ("%t: OPCODE  : SET   7,D", $time);
1578
              state = { 4'd0, 4'd0 };
1579
            end
1580
          8'hfb :
1581
            begin
1582
              $display ("%t: OPCODE  : SET   7,E", $time);
1583
              state = { 4'd0, 4'd0 };
1584
            end
1585
          8'hfc :
1586
            begin
1587
              $display ("%t: OPCODE  : SET   7,H", $time);
1588
              state = { 4'd0, 4'd0 };
1589
            end
1590
          8'hfd :
1591
            begin
1592
              $display ("%t: OPCODE  : SET   7,L", $time);
1593
              state = { 4'd0, 4'd0 };
1594
            end
1595
          8'hfe :
1596
            begin
1597
              $display ("%t: OPCODE  : SET   7,(HL)", $time);
1598
              state = { 4'd0, 4'd0 };
1599
            end
1600
          8'h27 :
1601
            begin
1602
              $display ("%t: OPCODE  : SLA   A", $time);
1603
              state = { 4'd0, 4'd0 };
1604
            end
1605
          8'h20 :
1606
            begin
1607
              $display ("%t: OPCODE  : SLA   B", $time);
1608
              state = { 4'd0, 4'd0 };
1609
            end
1610
          8'h21 :
1611
            begin
1612
              $display ("%t: OPCODE  : SLA   C", $time);
1613
              state = { 4'd0, 4'd0 };
1614
            end
1615
          8'h22 :
1616
            begin
1617
              $display ("%t: OPCODE  : SLA   D", $time);
1618
              state = { 4'd0, 4'd0 };
1619
            end
1620
          8'h23 :
1621
            begin
1622
              $display ("%t: OPCODE  : SLA   E", $time);
1623
              state = { 4'd0, 4'd0 };
1624
            end
1625
          8'h24 :
1626
            begin
1627
              $display ("%t: OPCODE  : SLA   H", $time);
1628
              state = { 4'd0, 4'd0 };
1629
            end
1630
          8'h25 :
1631
            begin
1632
              $display ("%t: OPCODE  : SLA   L", $time);
1633
              state = { 4'd0, 4'd0 };
1634
            end
1635
          8'h26 :
1636
            begin
1637
              $display ("%t: OPCODE  : SLA   (HL)", $time);
1638
              state = { 4'd0, 4'd0 };
1639
            end
1640
          8'h2f :
1641
            begin
1642
              $display ("%t: OPCODE  : SRA   A", $time);
1643
              state = { 4'd0, 4'd0 };
1644
            end
1645
          8'h28 :
1646
            begin
1647
              $display ("%t: OPCODE  : SRA   B", $time);
1648
              state = { 4'd0, 4'd0 };
1649
            end
1650
          8'h29 :
1651
            begin
1652
              $display ("%t: OPCODE  : SRA   C", $time);
1653
              state = { 4'd0, 4'd0 };
1654
            end
1655
          8'h2a :
1656
            begin
1657
              $display ("%t: OPCODE  : SRA   D", $time);
1658
              state = { 4'd0, 4'd0 };
1659
            end
1660
          8'h2b :
1661
            begin
1662
              $display ("%t: OPCODE  : SRA   E", $time);
1663
              state = { 4'd0, 4'd0 };
1664
            end
1665
          8'h2c :
1666
            begin
1667
              $display ("%t: OPCODE  : SRA   H", $time);
1668
              state = { 4'd0, 4'd0 };
1669
            end
1670
          8'h2d :
1671
            begin
1672
              $display ("%t: OPCODE  : SRA   L", $time);
1673
              state = { 4'd0, 4'd0 };
1674
            end
1675
          8'h2e :
1676
            begin
1677
              $display ("%t: OPCODE  : SRA   (HL)", $time);
1678
              state = { 4'd0, 4'd0 };
1679
            end
1680
          8'h3f :
1681
            begin
1682
              $display ("%t: OPCODE  : SRL   A", $time);
1683
              state = { 4'd0, 4'd0 };
1684
            end
1685
          8'h38 :
1686
            begin
1687
              $display ("%t: OPCODE  : SRL   B", $time);
1688
              state = { 4'd0, 4'd0 };
1689
            end
1690
          8'h39 :
1691
            begin
1692
              $display ("%t: OPCODE  : SRL   C", $time);
1693
              state = { 4'd0, 4'd0 };
1694
            end
1695
          8'h3a :
1696
            begin
1697
              $display ("%t: OPCODE  : SRL   D", $time);
1698
              state = { 4'd0, 4'd0 };
1699
            end
1700
          8'h3b :
1701
            begin
1702
              $display ("%t: OPCODE  : SRL   E", $time);
1703
              state = { 4'd0, 4'd0 };
1704
            end
1705
          8'h3c :
1706
            begin
1707
              $display ("%t: OPCODE  : SRL   H", $time);
1708
              state = { 4'd0, 4'd0 };
1709
            end
1710
          8'h3d :
1711
            begin
1712
              $display ("%t: OPCODE  : SRL   L", $time);
1713
              state = { 4'd0, 4'd0 };
1714
            end
1715
          8'h3e :
1716
            begin
1717
              $display ("%t: OPCODE  : SRL   (HL)", $time);
1718
              state = { 4'd0, 4'd0 };
1719
            end
1720
        endcase
1721
      end
1722
    8'hdd :
1723
      begin
1724
        case (opcode)
1725
          8'h7e :
1726
            begin
1727
              $display ("%t: OPCODE  : LD    A,(IX+index)", $time);
1728
              state = { 4'd1, 4'd1 };
1729
            end
1730
          8'h46 :
1731
            begin
1732
              $display ("%t: OPCODE  : LD    B,(IX+index)", $time);
1733
              state = { 4'd1, 4'd1 };
1734
            end
1735
          8'h4e :
1736
            begin
1737
              $display ("%t: OPCODE  : LD    C,(IX+index)", $time);
1738
              state = { 4'd1, 4'd1 };
1739
            end
1740
          8'h56 :
1741
            begin
1742
              $display ("%t: OPCODE  : LD    D,(IX+index)", $time);
1743
              state = { 4'd1, 4'd1 };
1744
            end
1745
          8'h5e :
1746
            begin
1747
              $display ("%t: OPCODE  : LD    E,(IX+index)", $time);
1748
              state = { 4'd1, 4'd1 };
1749
            end
1750
          8'h66 :
1751
            begin
1752
              $display ("%t: OPCODE  : LD    H,(IX+index)", $time);
1753
              state = { 4'd1, 4'd1 };
1754
            end
1755
          8'h6e :
1756
            begin
1757
              $display ("%t: OPCODE  : LD    L,(IX+index)", $time);
1758
              state = { 4'd1, 4'd1 };
1759
            end
1760
          8'h77 :
1761
            begin
1762
              $display ("%t: OPCODE  : LD    (IX+index),A", $time);
1763
              state = { 4'd1, 4'd1 };
1764
            end
1765
          8'h70 :
1766
            begin
1767
              $display ("%t: OPCODE  : LD    (IX+index),B", $time);
1768
              state = { 4'd1, 4'd1 };
1769
            end
1770
          8'h71 :
1771
            begin
1772
              $display ("%t: OPCODE  : LD    (IX+index),C", $time);
1773
              state = { 4'd1, 4'd1 };
1774
            end
1775
          8'h72 :
1776
            begin
1777
              $display ("%t: OPCODE  : LD    (IX+index),D", $time);
1778
              state = { 4'd1, 4'd1 };
1779
            end
1780
          8'h73 :
1781
            begin
1782
              $display ("%t: OPCODE  : LD    (IX+index),E", $time);
1783
              state = { 4'd1, 4'd1 };
1784
            end
1785
          8'h74 :
1786
            begin
1787
              $display ("%t: OPCODE  : LD    (IX+index),H", $time);
1788
              state = { 4'd1, 4'd1 };
1789
            end
1790
          8'h75 :
1791
            begin
1792
              $display ("%t: OPCODE  : LD    (IX+index),L", $time);
1793
              state = { 4'd1, 4'd1 };
1794
            end
1795
          8'h76 :
1796
            begin
1797
              $display ("%t: OPCODE  : LD    (IX+index),byte", $time);
1798
              state = { 4'd1, 4'd1 };
1799
            end
1800
          8'h36 :
1801
            begin
1802
              $display ("%t: OPCODE  : LD    (IX+index),byte", $time);
1803
              state = { 4'd1, 4'd1 };
1804
            end
1805
          8'h21 :
1806
            begin
1807
              $display ("%t: OPCODE  : LD    IX,word", $time);
1808
              state = { 4'd1, 4'd2 };
1809
            end
1810
          8'h2a :
1811
            begin
1812
              $display ("%t: OPCODE  : LD    IX,(word)", $time);
1813
              state = { 4'd1, 4'd2 };
1814
            end
1815
          8'h22 :
1816
            begin
1817
              $display ("%t: OPCODE  : LD    (word),IX", $time);
1818
              state = { 4'd1, 4'd2 };
1819
            end
1820
          8'h22 :
1821
            begin
1822
              $display ("%t: OPCODE  : LD    (word),IY", $time);
1823
              state = { 4'd1, 4'd2 };
1824
            end
1825
          8'hf9 :
1826
            begin
1827
              $display ("%t: OPCODE  : LD    SP,IX", $time);
1828
              state = { 4'd0, 4'd0 };
1829
            end
1830
          8'he3 :
1831
            begin
1832
              $display ("%t: OPCODE  : EX    (SP),IX", $time);
1833
              state = { 4'd0, 4'd0 };
1834
            end
1835
          8'h86 :
1836
            begin
1837
              $display ("%t: OPCODE  : ADD   A,(IX+index)", $time);
1838
              state = { 4'd1, 4'd1 };
1839
            end
1840
          8'h8e :
1841
            begin
1842
              $display ("%t: OPCODE  : ADC   A,(IX+index)", $time);
1843
              state = { 4'd1, 4'd1 };
1844
            end
1845
          8'h96 :
1846
            begin
1847
              $display ("%t: OPCODE  : SUB   (IX+index)", $time);
1848
              state = { 4'd1, 4'd1 };
1849
            end
1850
          8'h9e :
1851
            begin
1852
              $display ("%t: OPCODE  : SBC   (IX+index)", $time);
1853
              state = { 4'd1, 4'd1 };
1854
            end
1855
          8'h09 :
1856
            begin
1857
              $display ("%t: OPCODE  : ADD   IX,BC", $time);
1858
              state = { 4'd0, 4'd0 };
1859
            end
1860
          8'h19 :
1861
            begin
1862
              $display ("%t: OPCODE  : ADD   IX,DE", $time);
1863
              state = { 4'd0, 4'd0 };
1864
            end
1865
          8'h29 :
1866
            begin
1867
              $display ("%t: OPCODE  : ADD   IX,IX", $time);
1868
              state = { 4'd0, 4'd0 };
1869
            end
1870
          8'h39 :
1871
            begin
1872
              $display ("%t: OPCODE  : ADD   IX,SP", $time);
1873
              state = { 4'd0, 4'd0 };
1874
            end
1875
          8'h34 :
1876
            begin
1877
              $display ("%t: OPCODE  : INC   (IX+index)", $time);
1878
              state = { 4'd1, 4'd1 };
1879
            end
1880
          8'h35 :
1881
            begin
1882
              $display ("%t: OPCODE  : DEC   (IX+index)", $time);
1883
              state = { 4'd1, 4'd1 };
1884
            end
1885
          8'h23 :
1886
            begin
1887
              $display ("%t: OPCODE  : INC   IX", $time);
1888
              state = { 4'd0, 4'd0 };
1889
            end
1890
          8'h2b :
1891
            begin
1892
              $display ("%t: OPCODE  : DEC   IX", $time);
1893
              state = { 4'd0, 4'd0 };
1894
            end
1895
          8'hcb :
1896
            begin
1897
              $display ("%t: OPCODE  : RLC   (IX+index)", $time);
1898
              state = { 4'd1, 4'd1 };
1899
            end
1900
          8'hcb :
1901
            begin
1902
              $display ("%t: OPCODE  : RL    (IX+index)", $time);
1903
              state = { 4'd1, 4'd1 };
1904
            end
1905
          8'hcb :
1906
            begin
1907
              $display ("%t: OPCODE  : RRC   (IX+index)", $time);
1908
              state = { 4'd1, 4'd1 };
1909
            end
1910
          8'hcb :
1911
            begin
1912
              $display ("%t: OPCODE  : RL    (IX+index)", $time);
1913
              state = { 4'd1, 4'd1 };
1914
            end
1915
          8'ha6 :
1916
            begin
1917
              $display ("%t: OPCODE  : AND   (IX+index)", $time);
1918
              state = { 4'd1, 4'd1 };
1919
            end
1920
          8'hae :
1921
            begin
1922
              $display ("%t: OPCODE  : XOR   (IX+index)", $time);
1923
              state = { 4'd1, 4'd1 };
1924
            end
1925
          8'hb6 :
1926
            begin
1927
              $display ("%t: OPCODE  : OR    (IX+index)", $time);
1928
              state = { 4'd1, 4'd1 };
1929
            end
1930
          8'hbe :
1931
            begin
1932
              $display ("%t: OPCODE  : CP    (IX+index)", $time);
1933
              state = { 4'd1, 4'd1 };
1934
            end
1935
          8'he9 :
1936
            begin
1937
              $display ("%t: OPCODE  : JP    (IX)", $time);
1938
              state = { 4'd0, 4'd0 };
1939
            end
1940
          8'he5 :
1941
            begin
1942
              $display ("%t: OPCODE  : PUSH  IX", $time);
1943
              state = { 4'd0, 4'd0 };
1944
            end
1945
          8'he1 :
1946
            begin
1947
              $display ("%t: OPCODE  : POP   IX", $time);
1948
              state = { 4'd0, 4'd0 };
1949
            end
1950
          8'hcb :
1951
            begin
1952
              $display ("%t: OPCODE  : BIT   0,(IX+index)", $time);
1953
              state = { 4'd1, 4'd1 };
1954
            end
1955
          8'hcb :
1956
            begin
1957
              $display ("%t: OPCODE  : BIT   1,(IX+index)", $time);
1958
              state = { 4'd1, 4'd1 };
1959
            end
1960
          8'hcb :
1961
            begin
1962
              $display ("%t: OPCODE  : BIT   2,(IX+index)", $time);
1963
              state = { 4'd1, 4'd1 };
1964
            end
1965
          8'hcb :
1966
            begin
1967
              $display ("%t: OPCODE  : BIT   3,(IX+index)", $time);
1968
              state = { 4'd1, 4'd1 };
1969
            end
1970
          8'hcb :
1971
            begin
1972
              $display ("%t: OPCODE  : BIT   4,(IX+index)", $time);
1973
              state = { 4'd1, 4'd1 };
1974
            end
1975
          8'hcb :
1976
            begin
1977
              $display ("%t: OPCODE  : BIT   5,(IX+index)", $time);
1978
              state = { 4'd1, 4'd1 };
1979
            end
1980
          8'hcb :
1981
            begin
1982
              $display ("%t: OPCODE  : BIT   6,(IX+index)", $time);
1983
              state = { 4'd1, 4'd1 };
1984
            end
1985
          8'hcb :
1986
            begin
1987
              $display ("%t: OPCODE  : BIT   7,(IX+index)", $time);
1988
              state = { 4'd1, 4'd1 };
1989
            end
1990
          8'hcb :
1991
            begin
1992
              $display ("%t: OPCODE  : RES   0,(IX+index)", $time);
1993
              state = { 4'd1, 4'd1 };
1994
            end
1995
          8'hcb :
1996
            begin
1997
              $display ("%t: OPCODE  : RES   1,(IX+index)", $time);
1998
              state = { 4'd1, 4'd1 };
1999
            end
2000
          8'hcb :
2001
            begin
2002
              $display ("%t: OPCODE  : RES   2,(IX+index)", $time);
2003
              state = { 4'd1, 4'd1 };
2004
            end
2005
          8'hcb :
2006
            begin
2007
              $display ("%t: OPCODE  : RES   3,(IX+index)", $time);
2008
              state = { 4'd1, 4'd1 };
2009
            end
2010
          8'hcb :
2011
            begin
2012
              $display ("%t: OPCODE  : RES   4,(IX+index)", $time);
2013
              state = { 4'd1, 4'd1 };
2014
            end
2015
          8'hcb :
2016
            begin
2017
              $display ("%t: OPCODE  : RES   5,(IX+index)", $time);
2018
              state = { 4'd1, 4'd1 };
2019
            end
2020
          8'hcb :
2021
            begin
2022
              $display ("%t: OPCODE  : RES   6,(IX+index)", $time);
2023
              state = { 4'd1, 4'd1 };
2024
            end
2025
          8'hcb :
2026
            begin
2027
              $display ("%t: OPCODE  : RES   7,(IX+index)", $time);
2028
              state = { 4'd1, 4'd1 };
2029
            end
2030
          8'hcb :
2031
            begin
2032
              $display ("%t: OPCODE  : SET   0,(IX+index)", $time);
2033
              state = { 4'd1, 4'd1 };
2034
            end
2035
          8'hcb :
2036
            begin
2037
              $display ("%t: OPCODE  : SET   1,(IX+index)", $time);
2038
              state = { 4'd1, 4'd1 };
2039
            end
2040
          8'hcb :
2041
            begin
2042
              $display ("%t: OPCODE  : SET   2,(IX+index)", $time);
2043
              state = { 4'd1, 4'd1 };
2044
            end
2045
          8'hcb :
2046
            begin
2047
              $display ("%t: OPCODE  : SET   3,(IX+index)", $time);
2048
              state = { 4'd1, 4'd1 };
2049
            end
2050
          8'hcb :
2051
            begin
2052
              $display ("%t: OPCODE  : SET   4,(IX+index)", $time);
2053
              state = { 4'd1, 4'd1 };
2054
            end
2055
          8'hcb :
2056
            begin
2057
              $display ("%t: OPCODE  : SET   5,(IX+index)", $time);
2058
              state = { 4'd1, 4'd1 };
2059
            end
2060
          8'hcb :
2061
            begin
2062
              $display ("%t: OPCODE  : SET   6,(IX+index)", $time);
2063
              state = { 4'd1, 4'd1 };
2064
            end
2065
          8'hcb :
2066
            begin
2067
              $display ("%t: OPCODE  : SET   7,(IX+index)", $time);
2068
              state = { 4'd1, 4'd1 };
2069
            end
2070
          8'hcb :
2071
            begin
2072
              $display ("%t: OPCODE  : SLA   (IX+index)", $time);
2073
              state = { 4'd1, 4'd1 };
2074
            end
2075
          8'hcb :
2076
            begin
2077
              $display ("%t: OPCODE  : SRA   (IX+index)", $time);
2078
              state = { 4'd1, 4'd1 };
2079
            end
2080
          8'hcb :
2081
            begin
2082
              $display ("%t: OPCODE  : SRL   (IX+index)", $time);
2083
              state = { 4'd1, 4'd1 };
2084
            end
2085
        endcase
2086
      end
2087
    8'hed :
2088
      begin
2089
        case (opcode)
2090
          8'h57 :
2091
            begin
2092
              $display ("%t: OPCODE  : LD    A,I", $time);
2093
              state = { 4'd0, 4'd0 };
2094
            end
2095
          8'h4b :
2096
            begin
2097
              $display ("%t: OPCODE  : LD    BC,(word)", $time);
2098
              state = { 4'd1, 4'd2 };
2099
            end
2100
          8'h5b :
2101
            begin
2102
              $display ("%t: OPCODE  : LD    DE,(word)", $time);
2103
              state = { 4'd1, 4'd2 };
2104
            end
2105
          8'h6b :
2106
            begin
2107
              $display ("%t: OPCODE  : LD    HL,(word)", $time);
2108
              state = { 4'd1, 4'd2 };
2109
            end
2110
          8'h7b :
2111
            begin
2112
              $display ("%t: OPCODE  : LD    SP,(word)", $time);
2113
              state = { 4'd1, 4'd2 };
2114
            end
2115
          8'h43 :
2116
            begin
2117
              $display ("%t: OPCODE  : LD    (word),BC", $time);
2118
              state = { 4'd1, 4'd2 };
2119
            end
2120
          8'h53 :
2121
            begin
2122
              $display ("%t: OPCODE  : LD    (word),DE", $time);
2123
              state = { 4'd1, 4'd2 };
2124
            end
2125
          8'h6b :
2126
            begin
2127
              $display ("%t: OPCODE  : LD    (word),HL", $time);
2128
              state = { 4'd1, 4'd2 };
2129
            end
2130
          8'h73 :
2131
            begin
2132
              $display ("%t: OPCODE  : LD    (word),SP", $time);
2133
              state = { 4'd1, 4'd2 };
2134
            end
2135
          8'h4a :
2136
            begin
2137
              $display ("%t: OPCODE  : ADC   HL,BC", $time);
2138
              state = { 4'd0, 4'd0 };
2139
            end
2140
          8'h5a :
2141
            begin
2142
              $display ("%t: OPCODE  : ADC   HL,DE", $time);
2143
              state = { 4'd0, 4'd0 };
2144
            end
2145
          8'h6a :
2146
            begin
2147
              $display ("%t: OPCODE  : ADC   HL,HL", $time);
2148
              state = { 4'd0, 4'd0 };
2149
            end
2150
          8'h7a :
2151
            begin
2152
              $display ("%t: OPCODE  : ADC   HL,SP", $time);
2153
              state = { 4'd0, 4'd0 };
2154
            end
2155
          8'h42 :
2156
            begin
2157
              $display ("%t: OPCODE  : SBC   HL,BC", $time);
2158
              state = { 4'd0, 4'd0 };
2159
            end
2160
          8'h52 :
2161
            begin
2162
              $display ("%t: OPCODE  : SBC   HL,DE", $time);
2163
              state = { 4'd0, 4'd0 };
2164
            end
2165
          8'h62 :
2166
            begin
2167
              $display ("%t: OPCODE  : SBC   HL,HL", $time);
2168
              state = { 4'd0, 4'd0 };
2169
            end
2170
          8'h72 :
2171
            begin
2172
              $display ("%t: OPCODE  : SBC   HL,SP", $time);
2173
              state = { 4'd0, 4'd0 };
2174
            end
2175
          8'h46 :
2176
            begin
2177
              $display ("%t: OPCODE  : IM    0", $time);
2178
              state = { 4'd0, 4'd0 };
2179
            end
2180
          8'h56 :
2181
            begin
2182
              $display ("%t: OPCODE  : IM    1", $time);
2183
              state = { 4'd0, 4'd0 };
2184
            end
2185
          8'h5e :
2186
            begin
2187
              $display ("%t: OPCODE  : IM    2", $time);
2188
              state = { 4'd0, 4'd0 };
2189
            end
2190
          8'h47 :
2191
            begin
2192
              $display ("%t: OPCODE  : LD    I,A", $time);
2193
              state = { 4'd0, 4'd0 };
2194
            end
2195
          8'h44 :
2196
            begin
2197
              $display ("%t: OPCODE  : NEG   ", $time);
2198
              state = { 4'd0, 4'd0 };
2199
            end
2200
          8'h6f :
2201
            begin
2202
              $display ("%t: OPCODE  : RLD   ", $time);
2203
              state = { 4'd0, 4'd0 };
2204
            end
2205
          8'h67 :
2206
            begin
2207
              $display ("%t: OPCODE  : RRD   ", $time);
2208
              state = { 4'd0, 4'd0 };
2209
            end
2210
          8'ha1 :
2211
            begin
2212
              $display ("%t: OPCODE  : CPI   ", $time);
2213
              state = { 4'd0, 4'd0 };
2214
            end
2215
          8'hb1 :
2216
            begin
2217
              $display ("%t: OPCODE  : CPIR  ", $time);
2218
              state = { 4'd0, 4'd0 };
2219
            end
2220
          8'ha9 :
2221
            begin
2222
              $display ("%t: OPCODE  : CPD   ", $time);
2223
              state = { 4'd0, 4'd0 };
2224
            end
2225
          8'hb9 :
2226
            begin
2227
              $display ("%t: OPCODE  : CPDR  ", $time);
2228
              state = { 4'd0, 4'd0 };
2229
            end
2230
          8'h4d :
2231
            begin
2232
              $display ("%t: OPCODE  : RETI  ", $time);
2233
              state = { 4'd0, 4'd0 };
2234
            end
2235
          8'h45 :
2236
            begin
2237
              $display ("%t: OPCODE  : RETN  ", $time);
2238
              state = { 4'd0, 4'd0 };
2239
            end
2240
          8'h78 :
2241
            begin
2242
              $display ("%t: OPCODE  : IN    A,(C)", $time);
2243
              state = { 4'd0, 4'd0 };
2244
            end
2245
          8'h40 :
2246
            begin
2247
              $display ("%t: OPCODE  : IN    B,(C)", $time);
2248
              state = { 4'd0, 4'd0 };
2249
            end
2250
          8'h48 :
2251
            begin
2252
              $display ("%t: OPCODE  : IN    C,(C)", $time);
2253
              state = { 4'd0, 4'd0 };
2254
            end
2255
          8'h50 :
2256
            begin
2257
              $display ("%t: OPCODE  : IN    D,(C)", $time);
2258
              state = { 4'd0, 4'd0 };
2259
            end
2260
          8'h58 :
2261
            begin
2262
              $display ("%t: OPCODE  : IN    E,(C)", $time);
2263
              state = { 4'd0, 4'd0 };
2264
            end
2265
          8'h60 :
2266
            begin
2267
              $display ("%t: OPCODE  : IN    H,(C)", $time);
2268
              state = { 4'd0, 4'd0 };
2269
            end
2270
          8'h68 :
2271
            begin
2272
              $display ("%t: OPCODE  : IN    L,(C)", $time);
2273
              state = { 4'd0, 4'd0 };
2274
            end
2275
          8'ha2 :
2276
            begin
2277
              $display ("%t: OPCODE  : INI   ", $time);
2278
              state = { 4'd0, 4'd0 };
2279
            end
2280
          8'hb2 :
2281
            begin
2282
              $display ("%t: OPCODE  : INIR  ", $time);
2283
              state = { 4'd0, 4'd0 };
2284
            end
2285
          8'haa :
2286
            begin
2287
              $display ("%t: OPCODE  : IND   ", $time);
2288
              state = { 4'd0, 4'd0 };
2289
            end
2290
          8'hba :
2291
            begin
2292
              $display ("%t: OPCODE  : INDR  ", $time);
2293
              state = { 4'd0, 4'd0 };
2294
            end
2295
          8'h79 :
2296
            begin
2297
              $display ("%t: OPCODE  : OUT   (C),A", $time);
2298
              state = { 4'd0, 4'd0 };
2299
            end
2300
          8'h41 :
2301
            begin
2302
              $display ("%t: OPCODE  : OUT   (C),B", $time);
2303
              state = { 4'd0, 4'd0 };
2304
            end
2305
          8'h49 :
2306
            begin
2307
              $display ("%t: OPCODE  : OUT   (C),C", $time);
2308
              state = { 4'd0, 4'd0 };
2309
            end
2310
          8'h51 :
2311
            begin
2312
              $display ("%t: OPCODE  : OUT   (C),D", $time);
2313
              state = { 4'd0, 4'd0 };
2314
            end
2315
          8'h59 :
2316
            begin
2317
              $display ("%t: OPCODE  : OUT   (C),E", $time);
2318
              state = { 4'd0, 4'd0 };
2319
            end
2320
          8'h61 :
2321
            begin
2322
              $display ("%t: OPCODE  : OUT   (C),H", $time);
2323
              state = { 4'd0, 4'd0 };
2324
            end
2325
          8'h69 :
2326
            begin
2327
              $display ("%t: OPCODE  : OUT   (C),L", $time);
2328
              state = { 4'd0, 4'd0 };
2329
            end
2330
          8'ha3 :
2331
            begin
2332
              $display ("%t: OPCODE  : OUTI  ", $time);
2333
              state = { 4'd0, 4'd0 };
2334
            end
2335
          8'hb3 :
2336
            begin
2337
              $display ("%t: OPCODE  : OTIR  ", $time);
2338
              state = { 4'd0, 4'd0 };
2339
            end
2340
          8'hab :
2341
            begin
2342
              $display ("%t: OPCODE  : OUTD  ", $time);
2343
              state = { 4'd0, 4'd0 };
2344
            end
2345
          8'hbb :
2346
            begin
2347
              $display ("%t: OPCODE  : OTDR  ", $time);
2348
              state = { 4'd0, 4'd0 };
2349
            end
2350
          8'ha0 :
2351
            begin
2352
              $display ("%t: OPCODE  : LDI   ", $time);
2353
              state = { 4'd0, 4'd0 };
2354
            end
2355
          8'hb0 :
2356
            begin
2357
              $display ("%t: OPCODE  : LDIR  ", $time);
2358
              state = { 4'd0, 4'd0 };
2359
            end
2360
          8'ha8 :
2361
            begin
2362
              $display ("%t: OPCODE  : LDD   ", $time);
2363
              state = { 4'd0, 4'd0 };
2364
            end
2365
          8'hb8 :
2366
            begin
2367
              $display ("%t: OPCODE  : LDDR  ", $time);
2368
              state = { 4'd0, 4'd0 };
2369
            end
2370
        endcase
2371
      end
2372
    8'hfd :
2373
      begin
2374
        case (opcode)
2375
          8'h7e :
2376
            begin
2377
              $display ("%t: OPCODE  : LD    A,(IY+index)", $time);
2378
              state = { 4'd1, 4'd1 };
2379
            end
2380
          8'h46 :
2381
            begin
2382
              $display ("%t: OPCODE  : LD    B,(IY+index)", $time);
2383
              state = { 4'd1, 4'd1 };
2384
            end
2385
          8'h4e :
2386
            begin
2387
              $display ("%t: OPCODE  : LD    C,(IY+index)", $time);
2388
              state = { 4'd1, 4'd1 };
2389
            end
2390
          8'h56 :
2391
            begin
2392
              $display ("%t: OPCODE  : LD    D,(IY+index)", $time);
2393
              state = { 4'd1, 4'd1 };
2394
            end
2395
          8'h5e :
2396
            begin
2397
              $display ("%t: OPCODE  : LD    E,(IY+index)", $time);
2398
              state = { 4'd1, 4'd1 };
2399
            end
2400
          8'h66 :
2401
            begin
2402
              $display ("%t: OPCODE  : LD    H,(IY+index)", $time);
2403
              state = { 4'd1, 4'd1 };
2404
            end
2405
          8'h6e :
2406
            begin
2407
              $display ("%t: OPCODE  : LD    L,(IY+index)", $time);
2408
              state = { 4'd1, 4'd1 };
2409
            end
2410
          8'h77 :
2411
            begin
2412
              $display ("%t: OPCODE  : LD    (IY+index),A", $time);
2413
              state = { 4'd1, 4'd1 };
2414
            end
2415
          8'h70 :
2416
            begin
2417
              $display ("%t: OPCODE  : LD    (IY+index),B", $time);
2418
              state = { 4'd1, 4'd1 };
2419
            end
2420
          8'h71 :
2421
            begin
2422
              $display ("%t: OPCODE  : LD    (IY+index),C", $time);
2423
              state = { 4'd1, 4'd1 };
2424
            end
2425
          8'h72 :
2426
            begin
2427
              $display ("%t: OPCODE  : LD    (IY+index),D", $time);
2428
              state = { 4'd1, 4'd1 };
2429
            end
2430
          8'h73 :
2431
            begin
2432
              $display ("%t: OPCODE  : LD    (IY+index),E", $time);
2433
              state = { 4'd1, 4'd1 };
2434
            end
2435
          8'h74 :
2436
            begin
2437
              $display ("%t: OPCODE  : LD    (IY+index),H", $time);
2438
              state = { 4'd1, 4'd1 };
2439
            end
2440
          8'h75 :
2441
            begin
2442
              $display ("%t: OPCODE  : LD    (IY+index),L", $time);
2443
              state = { 4'd1, 4'd1 };
2444
            end
2445
          8'h76 :
2446
            begin
2447
              $display ("%t: OPCODE  : LD    (IY+index),byte", $time);
2448
              state = { 4'd1, 4'd1 };
2449
            end
2450
          8'h36 :
2451
            begin
2452
              $display ("%t: OPCODE  : LD    (IY+index),byte", $time);
2453
              state = { 4'd1, 4'd1 };
2454
            end
2455
          8'h21 :
2456
            begin
2457
              $display ("%t: OPCODE  : LD    IY,word", $time);
2458
              state = { 4'd1, 4'd2 };
2459
            end
2460
          8'h2a :
2461
            begin
2462
              $display ("%t: OPCODE  : LD    IY,(word)", $time);
2463
              state = { 4'd1, 4'd2 };
2464
            end
2465
          8'hf9 :
2466
            begin
2467
              $display ("%t: OPCODE  : LD    SP,IY", $time);
2468
              state = { 4'd0, 4'd0 };
2469
            end
2470
          8'he3 :
2471
            begin
2472
              $display ("%t: OPCODE  : EX    (SP),IY", $time);
2473
              state = { 4'd0, 4'd0 };
2474
            end
2475
          8'h86 :
2476
            begin
2477
              $display ("%t: OPCODE  : ADD   A,(IY+index)", $time);
2478
              state = { 4'd1, 4'd1 };
2479
            end
2480
          8'h8e :
2481
            begin
2482
              $display ("%t: OPCODE  : ADC   A,(IY+index)", $time);
2483
              state = { 4'd1, 4'd1 };
2484
            end
2485
          8'h96 :
2486
            begin
2487
              $display ("%t: OPCODE  : SUB   (IX+index)", $time);
2488
              state = { 4'd1, 4'd1 };
2489
            end
2490
          8'h9e :
2491
            begin
2492
              $display ("%t: OPCODE  : SBC   (IX+index)", $time);
2493
              state = { 4'd1, 4'd1 };
2494
            end
2495
          8'h09 :
2496
            begin
2497
              $display ("%t: OPCODE  : ADD   IY,BC", $time);
2498
              state = { 4'd0, 4'd0 };
2499
            end
2500
          8'h19 :
2501
            begin
2502
              $display ("%t: OPCODE  : ADD   IY,DE", $time);
2503
              state = { 4'd0, 4'd0 };
2504
            end
2505
          8'h29 :
2506
            begin
2507
              $display ("%t: OPCODE  : ADD   IY,IY", $time);
2508
              state = { 4'd0, 4'd0 };
2509
            end
2510
          8'h39 :
2511
            begin
2512
              $display ("%t: OPCODE  : ADD   IY,SP", $time);
2513
              state = { 4'd0, 4'd0 };
2514
            end
2515
          8'h34 :
2516
            begin
2517
              $display ("%t: OPCODE  : INC   (IY+index)", $time);
2518
              state = { 4'd1, 4'd1 };
2519
            end
2520
          8'h35 :
2521
            begin
2522
              $display ("%t: OPCODE  : DEC   (IY+index)", $time);
2523
              state = { 4'd1, 4'd1 };
2524
            end
2525
          8'h23 :
2526
            begin
2527
              $display ("%t: OPCODE  : INC   IY", $time);
2528
              state = { 4'd0, 4'd0 };
2529
            end
2530
          8'h2b :
2531
            begin
2532
              $display ("%t: OPCODE  : DEC   IY", $time);
2533
              state = { 4'd0, 4'd0 };
2534
            end
2535
          8'hcb :
2536
            begin
2537
              $display ("%t: OPCODE  : RLC   (IY+index)", $time);
2538
              state = { 4'd1, 4'd1 };
2539
            end
2540
          8'hcb :
2541
            begin
2542
              $display ("%t: OPCODE  : RL    (IY+index)", $time);
2543
              state = { 4'd1, 4'd1 };
2544
            end
2545
          8'hcb :
2546
            begin
2547
              $display ("%t: OPCODE  : RRC   (IY+index)", $time);
2548
              state = { 4'd1, 4'd1 };
2549
            end
2550
          8'hcb :
2551
            begin
2552
              $display ("%t: OPCODE  : RL    (IY+index)", $time);
2553
              state = { 4'd1, 4'd1 };
2554
            end
2555
          8'ha6 :
2556
            begin
2557
              $display ("%t: OPCODE  : AND   (IY+index)", $time);
2558
              state = { 4'd1, 4'd1 };
2559
            end
2560
          8'hae :
2561
            begin
2562
              $display ("%t: OPCODE  : XOR   (IY+index)", $time);
2563
              state = { 4'd1, 4'd1 };
2564
            end
2565
          8'hb6 :
2566
            begin
2567
              $display ("%t: OPCODE  : OR    (IY+index)", $time);
2568
              state = { 4'd1, 4'd1 };
2569
            end
2570
          8'hbe :
2571
            begin
2572
              $display ("%t: OPCODE  : CP    (IY+index)", $time);
2573
              state = { 4'd1, 4'd1 };
2574
            end
2575
          8'he9 :
2576
            begin
2577
              $display ("%t: OPCODE  : JP    (IY)", $time);
2578
              state = { 4'd0, 4'd0 };
2579
            end
2580
          8'he5 :
2581
            begin
2582
              $display ("%t: OPCODE  : PUSH  IY", $time);
2583
              state = { 4'd0, 4'd0 };
2584
            end
2585
          8'he1 :
2586
            begin
2587
              $display ("%t: OPCODE  : POP   IY", $time);
2588
              state = { 4'd0, 4'd0 };
2589
            end
2590
          8'hcb :
2591
            begin
2592
              $display ("%t: OPCODE  : BIT   0,(IY+index)", $time);
2593
              state = { 4'd1, 4'd1 };
2594
            end
2595
          8'hcb :
2596
            begin
2597
              $display ("%t: OPCODE  : BIT   1,(IY+index)", $time);
2598
              state = { 4'd1, 4'd1 };
2599
            end
2600
          8'hcb :
2601
            begin
2602
              $display ("%t: OPCODE  : BIT   2,(IY+index)", $time);
2603
              state = { 4'd1, 4'd1 };
2604
            end
2605
          8'hcb :
2606
            begin
2607
              $display ("%t: OPCODE  : BIT   3,(IY+index)", $time);
2608
              state = { 4'd1, 4'd1 };
2609
            end
2610
          8'hcb :
2611
            begin
2612
              $display ("%t: OPCODE  : BIT   4,(IY+index)", $time);
2613
              state = { 4'd1, 4'd1 };
2614
            end
2615
          8'hcb :
2616
            begin
2617
              $display ("%t: OPCODE  : BIT   5,(IY+index)", $time);
2618
              state = { 4'd1, 4'd1 };
2619
            end
2620
          8'hcb :
2621
            begin
2622
              $display ("%t: OPCODE  : BIT   6,(IY+index)", $time);
2623
              state = { 4'd1, 4'd1 };
2624
            end
2625
          8'hcb :
2626
            begin
2627
              $display ("%t: OPCODE  : BIT   7,(IY+index)", $time);
2628
              state = { 4'd1, 4'd1 };
2629
            end
2630
          8'hcb :
2631
            begin
2632
              $display ("%t: OPCODE  : RES   0,(IY+index)", $time);
2633
              state = { 4'd1, 4'd1 };
2634
            end
2635
          8'hcb :
2636
            begin
2637
              $display ("%t: OPCODE  : RES   1,(IY+index)", $time);
2638
              state = { 4'd1, 4'd1 };
2639
            end
2640
          8'hcb :
2641
            begin
2642
              $display ("%t: OPCODE  : RES   2,(IY+index)", $time);
2643
              state = { 4'd1, 4'd1 };
2644
            end
2645
          8'hcb :
2646
            begin
2647
              $display ("%t: OPCODE  : RES   3,(IY+index)", $time);
2648
              state = { 4'd1, 4'd1 };
2649
            end
2650
          8'hcb :
2651
            begin
2652
              $display ("%t: OPCODE  : RES   4,(IY+index)", $time);
2653
              state = { 4'd1, 4'd1 };
2654
            end
2655
          8'hcb :
2656
            begin
2657
              $display ("%t: OPCODE  : RES   5,(IY+index)", $time);
2658
              state = { 4'd1, 4'd1 };
2659
            end
2660
          8'hcb :
2661
            begin
2662
              $display ("%t: OPCODE  : RES   6,(IY+index)", $time);
2663
              state = { 4'd1, 4'd1 };
2664
            end
2665
          8'hcb :
2666
            begin
2667
              $display ("%t: OPCODE  : RES   7,(IY+index)", $time);
2668
              state = { 4'd1, 4'd1 };
2669
            end
2670
          8'hcb :
2671
            begin
2672
              $display ("%t: OPCODE  : SET   0,(IY+index)", $time);
2673
              state = { 4'd1, 4'd1 };
2674
            end
2675
          8'hcb :
2676
            begin
2677
              $display ("%t: OPCODE  : SET   1,(IY+index)", $time);
2678
              state = { 4'd1, 4'd1 };
2679
            end
2680
          8'hcb :
2681
            begin
2682
              $display ("%t: OPCODE  : SET   2,(IY+index)", $time);
2683
              state = { 4'd1, 4'd1 };
2684
            end
2685
          8'hcb :
2686
            begin
2687
              $display ("%t: OPCODE  : SET   3,(IY+index)", $time);
2688
              state = { 4'd1, 4'd1 };
2689
            end
2690
          8'hcb :
2691
            begin
2692
              $display ("%t: OPCODE  : SET   4,(IY+index)", $time);
2693
              state = { 4'd1, 4'd1 };
2694
            end
2695
          8'hcb :
2696
            begin
2697
              $display ("%t: OPCODE  : SET   5,(IY+index)", $time);
2698
              state = { 4'd1, 4'd1 };
2699
            end
2700
          8'hcb :
2701
            begin
2702
              $display ("%t: OPCODE  : SET   6,(IY+index)", $time);
2703
              state = { 4'd1, 4'd1 };
2704
            end
2705
          8'hcb :
2706
            begin
2707
              $display ("%t: OPCODE  : SET   7,(IY+index)", $time);
2708
              state = { 4'd1, 4'd1 };
2709
            end
2710
          8'hcb :
2711
            begin
2712
              $display ("%t: OPCODE  : SLA   (IY+index)", $time);
2713
              state = { 4'd1, 4'd1 };
2714
            end
2715
          8'hcb :
2716
            begin
2717
              $display ("%t: OPCODE  : SRA   (IY+index)", $time);
2718
              state = { 4'd1, 4'd1 };
2719
            end
2720
          8'hcb :
2721
            begin
2722
              $display ("%t: OPCODE  : SRL   (IY+index)", $time);
2723
              state = { 4'd1, 4'd1 };
2724
            end
2725
        endcase
2726
      end // case: 8'hfd
2727
 
2728
    default :
2729
      begin
2730
        $display ("%t: OPCODE  : Unknown opcode %x", $time, opcode);
2731
      end
2732
  endcase
2733
  end
2734
endtask
2735
 
2736
  task decode;
2737
    input [7:0] byte;
2738
    inout [7:0] state;
2739
    begin
2740
      if (state == 0)
2741
        decode0 (byte, state);
2742
      else if (state[7:4] == 1)
2743
        begin
2744
          state[3:0] = state[3:0] - 1;
2745
          if (state[3:0] == 0)
2746
            state[7:0] = 0;
2747
        end
2748
      else
2749
        begin
2750
          decode1 (byte, state);
2751
        end
2752
    end
2753
  endtask // decode
2754
 
2755
endmodule // op_decode

powered by: WebSVN 2.1.0

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