Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
716 lvd 1
#include "defs.h"
2
#include "tables.h"
3
#include "op_noprefix.h"
4
#include "op_fd.h"
5
 
6
/* FD prefix opcodes */
7
 
8
//#ifdef Z80_COMMON
784 DimkaM 9
static Z80OPCODE opy_09(Z80 *cpu) { // add iy,bc
716 lvd 10
   cpu->memptr = cpu->iy+1;
11
   cpu->f = (cpu->f & ~(NF | CF | F5 | F3 | HF));
12
   cpu->f |= (((cpu->iy & 0x0FFF) + (cpu->bc & 0x0FFF)) >> 8) & 0x10; /* HF */
13
   cpu->iy = (cpu->iy & 0xFFFF) + (cpu->bc & 0xFFFF);
14
   if (cpu->iy & 0x10000) cpu->f |= CF;
15
   cpu->f |= (cpu->yh & (F5 | F3));
16
   cpu->t += 7;
17
}
784 DimkaM 18
static Z80OPCODE opy_19(Z80 *cpu) { // add iy,de
716 lvd 19
   cpu->memptr = cpu->iy+1;
20
   cpu->f = (cpu->f & ~(NF | CF | F5 | F3 | HF));
21
   cpu->f |= (((cpu->iy & 0x0FFF) + (cpu->de & 0x0FFF)) >> 8) & 0x10; /* HF */
22
   cpu->iy = (cpu->iy & 0xFFFF) + (cpu->de & 0xFFFF);
23
   if (cpu->iy & 0x10000) cpu->f |= CF;
24
   cpu->f |= (cpu->yh & (F5 | F3));
25
   cpu->t += 7;
26
}
27
//#endif
28
//#ifndef Z80_COMMON
784 DimkaM 29
static Z80OPCODE opy_21(Z80 *cpu) { // ld iy,nnnn
716 lvd 30
   cpu->yl = cpu->MemIf->xm(cpu->pc++);
31
   cpu->yh = cpu->MemIf->xm(cpu->pc++);
32
   cpu->t += 6;
33
}
784 DimkaM 34
static Z80OPCODE opy_22(Z80 *cpu) { // ld (nnnn),iy | M:6 T:20 (4, 4, 3, 3, 3, 3)
716 lvd 35
   unsigned adr = cpu->MemIf->xm(cpu->pc++);
36
   adr += cpu->MemIf->xm(cpu->pc++)*0x100;
37
   cpu->memptr = adr+1;
38
   cpu->MemIf->wm(adr, cpu->yl);
39
   cpu->MemIf->wm(adr+1, cpu->yh);
40
   cpu->t += 12;
41
}
42
//#endif
43
//#ifdef Z80_COMMON
784 DimkaM 44
static Z80OPCODE opy_23(Z80 *cpu) { // inc iy
716 lvd 45
   cpu->iy++;
46
   cpu->t += 2;
47
}
784 DimkaM 48
static Z80OPCODE opy_24(Z80 *cpu) { // inc yh
716 lvd 49
   inc8(cpu, cpu->yh);
50
}
784 DimkaM 51
static Z80OPCODE opy_25(Z80 *cpu) { // dec yh
716 lvd 52
   dec8(cpu, cpu->yh);
53
}
54
//#endif
55
//#ifndef Z80_COMMON
784 DimkaM 56
static Z80OPCODE opy_26(Z80 *cpu) { // ld yh,nn
716 lvd 57
   cpu->yh = cpu->MemIf->xm(cpu->pc++);
58
   cpu->t += 3;
59
}
60
//#endif
61
//#ifdef Z80_COMMON
784 DimkaM 62
static Z80OPCODE opy_29(Z80 *cpu) { // add iy,iy
716 lvd 63
   cpu->memptr = cpu->iy+1;
64
   cpu->f = (cpu->f & ~(NF | CF | F5 | F3 | HF));
65
   cpu->f |= ((cpu->iy >> 7) & 0x10); /* HF */
66
   cpu->iy = (cpu->iy & 0xFFFF)*2;
67
   if (cpu->iy & 0x10000) cpu->f |= CF;
68
   cpu->f |= (cpu->yh & (F5 | F3));
69
   cpu->t += 7;
70
}
71
//#endif
72
//#ifndef Z80_COMMON
784 DimkaM 73
static Z80OPCODE opy_2A(Z80 *cpu) { // ld iy,(nnnn)
716 lvd 74
   unsigned adr = cpu->MemIf->xm(cpu->pc++);
75
   adr += cpu->MemIf->xm(cpu->pc++)*0x100;
76
   cpu->memptr = adr+1;
77
   cpu->yl = cpu->MemIf->rm(adr);
78
   cpu->yh = cpu->MemIf->rm(adr+1);
79
   cpu->t += 12;
80
}
81
//#endif
82
//#ifdef Z80_COMMON
784 DimkaM 83
static Z80OPCODE opy_2B(Z80 *cpu) { // dec iy
716 lvd 84
   cpu->iy--;
85
   cpu->t += 2;
86
}
784 DimkaM 87
static Z80OPCODE opy_2C(Z80 *cpu) { // inc yl
716 lvd 88
   inc8(cpu, cpu->yl);
89
}
784 DimkaM 90
static Z80OPCODE opy_2D(Z80 *cpu) { // dec yl
716 lvd 91
   dec8(cpu, cpu->yl);
92
}
93
//#endif
94
//#ifndef Z80_COMMON
784 DimkaM 95
static Z80OPCODE opy_2E(Z80 *cpu) { // ld yl,nn
716 lvd 96
   cpu->yl = cpu->MemIf->xm(cpu->pc++);
97
   cpu->t += 3;
98
}
784 DimkaM 99
static Z80OPCODE opy_34(Z80 *cpu) { // inc (iy+nn) | M:6 T:23 (4, 4, 3, 5, 4, 3)
100
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
101
   unsigned char t = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 102
   inc8(cpu, t);
784 DimkaM 103
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), t);
716 lvd 104
   cpu->t += 15;
105
}
784 DimkaM 106
static Z80OPCODE opy_35(Z80 *cpu) { // dec (iy+nn) | M:6 T:23 (4, 4, 3, 5, 4, 3)
107
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
108
   unsigned char t = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 109
   dec8(cpu, t);
784 DimkaM 110
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), t);
716 lvd 111
   cpu->t += 15;
112
}
784 DimkaM 113
static Z80OPCODE opy_36(Z80 *cpu) { // ld (iy+nn),nn | M:5 T:19 (4, 4, 3, 5, 3)
114
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
115
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->MemIf->rm(cpu->pc++));
716 lvd 116
   cpu->t += 11;
117
}
118
//#endif
119
//#ifdef Z80_COMMON
784 DimkaM 120
static Z80OPCODE opy_39(Z80 *cpu) { // add iy,sp
716 lvd 121
   cpu->memptr = cpu->iy+1;
122
   cpu->f = (cpu->f & ~(NF | CF | F5 | F3 | HF));
123
   cpu->f |= (((cpu->iy & 0x0FFF) + (cpu->sp & 0x0FFF)) >> 8) & 0x10; /* HF */
124
   cpu->iy = (cpu->iy & 0xFFFF) + (cpu->sp & 0xFFFF);
125
   if (cpu->iy & 0x10000) cpu->f |= CF;
126
   cpu->f |= (cpu->yh & (F5 | F3));
127
   cpu->t += 7;
128
}
784 DimkaM 129
static Z80OPCODE opy_44(Z80 *cpu) { // ld b,yh
716 lvd 130
   cpu->b = cpu->yh;
131
}
784 DimkaM 132
static Z80OPCODE opy_45(Z80 *cpu) { // ld b,yl
716 lvd 133
   cpu->b = cpu->yl;
134
}
135
//#endif
136
//#ifndef Z80_COMMON
784 DimkaM 137
static Z80OPCODE opy_46(Z80 *cpu) { // ld b,(iy+nn)
138
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
139
   cpu->b = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 140
   cpu->t += 11;
141
}
142
//#endif
143
//#ifdef Z80_COMMON
784 DimkaM 144
static Z80OPCODE opy_4C(Z80 *cpu) { // ld c,yh
716 lvd 145
   cpu->c = cpu->yh;
146
}
784 DimkaM 147
static Z80OPCODE opy_4D(Z80 *cpu) { // ld c,yl
716 lvd 148
   cpu->c = cpu->yl;
149
}
150
//#endif
151
//#ifndef Z80_COMMON
784 DimkaM 152
static Z80OPCODE opy_4E(Z80 *cpu) { // ld c,(iy+nn)
153
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
154
   cpu->c = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 155
   cpu->t += 11;
156
}
157
//#endif
158
//#ifdef Z80_COMMON
784 DimkaM 159
static Z80OPCODE opy_54(Z80 *cpu) { // ld d,yh
716 lvd 160
   cpu->d = cpu->yh;
161
}
784 DimkaM 162
static Z80OPCODE opy_55(Z80 *cpu) { // ld d,yl
716 lvd 163
   cpu->d = cpu->yl;
164
}
165
//#endif
166
//#ifndef Z80_COMMON
784 DimkaM 167
static Z80OPCODE opy_56(Z80 *cpu) { // ld d,(iy+nn)
168
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
169
   cpu->d = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 170
   cpu->t += 11;
171
}
172
//#endif
173
//#ifdef Z80_COMMON
784 DimkaM 174
static Z80OPCODE opy_5C(Z80 *cpu) { // ld e,yh
716 lvd 175
   cpu->e = cpu->yh;
176
}
784 DimkaM 177
static Z80OPCODE opy_5D(Z80 *cpu) { // ld e,yl
716 lvd 178
   cpu->e = cpu->yl;
179
}
180
//#endif
181
//#ifndef Z80_COMMON
784 DimkaM 182
static Z80OPCODE opy_5E(Z80 *cpu) { // ld e,(iy+nn)
183
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
184
   cpu->e = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 185
   cpu->t += 11;
186
}
187
//#endif
188
//#ifdef Z80_COMMON
784 DimkaM 189
static Z80OPCODE opy_60(Z80 *cpu) { // ld yh,b
716 lvd 190
   cpu->yh = cpu->b;
191
}
784 DimkaM 192
static Z80OPCODE opy_61(Z80 *cpu) { // ld yh,c
716 lvd 193
   cpu->yh = cpu->c;
194
}
784 DimkaM 195
static Z80OPCODE opy_62(Z80 *cpu) { // ld yh,d
716 lvd 196
   cpu->yh = cpu->d;
197
}
784 DimkaM 198
static Z80OPCODE opy_63(Z80 *cpu) { // ld yh,e
716 lvd 199
   cpu->yh = cpu->e;
200
}
784 DimkaM 201
static Z80OPCODE opy_65(Z80 *cpu) { // ld yh,yl
716 lvd 202
   cpu->yh = cpu->yl;
203
}
204
//#endif
205
//#ifndef Z80_COMMON
784 DimkaM 206
static Z80OPCODE opy_66(Z80 *cpu) { // ld h,(iy+nn)
207
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
208
   cpu->h = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 209
   cpu->t += 11;
210
}
211
//#endif
212
//#ifdef Z80_COMMON
784 DimkaM 213
static Z80OPCODE opy_67(Z80 *cpu) { // ld yh,a
716 lvd 214
   cpu->yh = cpu->a;
215
}
784 DimkaM 216
static Z80OPCODE opy_68(Z80 *cpu) { // ld yl,b
716 lvd 217
   cpu->yl = cpu->b;
218
}
784 DimkaM 219
static Z80OPCODE opy_69(Z80 *cpu) { // ld yl,c
716 lvd 220
   cpu->yl = cpu->c;
221
}
784 DimkaM 222
static Z80OPCODE opy_6A(Z80 *cpu) { // ld yl,d
716 lvd 223
   cpu->yl = cpu->d;
224
}
784 DimkaM 225
static Z80OPCODE opy_6B(Z80 *cpu) { // ld yl,e
716 lvd 226
   cpu->yl = cpu->e;
227
}
784 DimkaM 228
static Z80OPCODE opy_6C(Z80 *cpu) { // ld yl,yh
716 lvd 229
   cpu->yl = cpu->yh;
230
}
231
//#endif
232
//#ifndef Z80_COMMON
784 DimkaM 233
static Z80OPCODE opy_6E(Z80 *cpu) { // ld l,(iy+nn)
234
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
235
   cpu->l = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 236
   cpu->t += 11;
237
}
238
//#endif
239
//#ifdef Z80_COMMON
784 DimkaM 240
static Z80OPCODE opy_6F(Z80 *cpu) { // ld yl,a
716 lvd 241
   cpu->yl = cpu->a;
242
}
243
//#endif
244
//#ifndef Z80_COMMON
784 DimkaM 245
static Z80OPCODE opy_70(Z80 *cpu) { // ld (iy+nn),b | M:5 T:19 (4, 4, 3, 5, 3)
246
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
247
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->b);
716 lvd 248
   cpu->t += 11;
249
}
784 DimkaM 250
static Z80OPCODE opy_71(Z80 *cpu) { // ld (iy+nn),c | M:5 T:19 (4, 4, 3, 5, 3)
251
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
252
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->c);
716 lvd 253
   cpu->t += 11;
254
}
784 DimkaM 255
static Z80OPCODE opy_72(Z80 *cpu) { // ld (iy+nn),d | M:5 T:19 (4, 4, 3, 5, 3)
256
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
257
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->d);
716 lvd 258
   cpu->t += 11;
259
}
784 DimkaM 260
static Z80OPCODE opy_73(Z80 *cpu) { // ld (iy+nn),e | M:5 T:19 (4, 4, 3, 5, 3)
261
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
262
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->e);
716 lvd 263
   cpu->t += 11;
264
}
784 DimkaM 265
static Z80OPCODE opy_74(Z80 *cpu) { // ld (iy+nn),h | M:5 T:19 (4, 4, 3, 5, 3)
266
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
267
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->h);
716 lvd 268
   cpu->t += 11;
269
}
784 DimkaM 270
static Z80OPCODE opy_75(Z80 *cpu) { // ld (iy+nn),l | M:5 T:19 (4, 4, 3, 5, 3)
271
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
272
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->l);
716 lvd 273
   cpu->t += 11;
274
}
784 DimkaM 275
static Z80OPCODE opy_77(Z80 *cpu) { // ld (iy+nn),a | M:5 T:19 (4, 4, 3, 5, 3)
276
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
277
   cpu->MemIf->wm(unsigned(int(cpu->iy) + ofs), cpu->a);
716 lvd 278
   cpu->t += 11;
279
}
280
//#endif
281
//#ifdef Z80_COMMON
784 DimkaM 282
static Z80OPCODE opy_7C(Z80 *cpu) { // ld a,yh
716 lvd 283
   cpu->a = cpu->yh;
284
}
784 DimkaM 285
static Z80OPCODE opy_7D(Z80 *cpu) { // ld a,yl
716 lvd 286
   cpu->a = cpu->yl;
287
}
288
//#endif
289
//#ifndef Z80_COMMON
784 DimkaM 290
static Z80OPCODE opy_7E(Z80 *cpu) { // ld a,(iy+nn)
291
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
292
   cpu->a = cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs));
716 lvd 293
   cpu->t += 11;
294
}
295
//#endif
296
//#ifdef Z80_COMMON
784 DimkaM 297
static Z80OPCODE opy_84(Z80 *cpu) { // add a,yh
716 lvd 298
   add8(cpu, cpu->yh);
299
}
784 DimkaM 300
static Z80OPCODE opy_85(Z80 *cpu) { // add a,yl
716 lvd 301
   add8(cpu, cpu->yl);
302
}
303
//#endif
304
//#ifndef Z80_COMMON
784 DimkaM 305
static Z80OPCODE opy_86(Z80 *cpu) { // add a,(iy+nn)
306
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
307
   add8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 308
   cpu->t += 11;
309
}
310
//#endif
311
//#ifdef Z80_COMMON
784 DimkaM 312
static Z80OPCODE opy_8C(Z80 *cpu) { // adc a,yh
716 lvd 313
   adc8(cpu, cpu->yh);
314
}
784 DimkaM 315
static Z80OPCODE opy_8D(Z80 *cpu) { // adc a,yl
716 lvd 316
   adc8(cpu, cpu->yl);
317
}
318
//#endif
319
//#ifndef Z80_COMMON
784 DimkaM 320
static Z80OPCODE opy_8E(Z80 *cpu) { // adc a,(iy+nn)
321
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
322
   adc8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 323
   cpu->t += 11;
324
}
325
//#endif
326
//#ifdef Z80_COMMON
784 DimkaM 327
static Z80OPCODE opy_94(Z80 *cpu) { // sub yh
716 lvd 328
   sub8(cpu, cpu->yh);
329
}
784 DimkaM 330
static Z80OPCODE opy_95(Z80 *cpu) { // sub yl
716 lvd 331
   sub8(cpu, cpu->yl);
332
}
333
//#endif
334
//#ifndef Z80_COMMON
784 DimkaM 335
static Z80OPCODE opy_96(Z80 *cpu) { // sub (iy+nn)
336
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
337
   sub8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 338
   cpu->t += 11;
339
}
340
//#endif
341
//#ifdef Z80_COMMON
784 DimkaM 342
static Z80OPCODE opy_9C(Z80 *cpu) { // sbc a,yh
716 lvd 343
   sbc8(cpu, cpu->yh);
344
}
784 DimkaM 345
static Z80OPCODE opy_9D(Z80 *cpu) { // sbc a,yl
716 lvd 346
   sbc8(cpu, cpu->yl);
347
}
348
//#endif
349
//#ifndef Z80_COMMON
784 DimkaM 350
static Z80OPCODE opy_9E(Z80 *cpu) { // sbc a,(iy+nn)
351
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
352
   sbc8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 353
   cpu->t += 11;
354
}
355
//#endif
356
//#ifdef Z80_COMMON
784 DimkaM 357
static Z80OPCODE opy_A4(Z80 *cpu) { // and yh
716 lvd 358
   and8(cpu, cpu->yh);
359
}
784 DimkaM 360
static Z80OPCODE opy_A5(Z80 *cpu) { // and yl
716 lvd 361
   and8(cpu, cpu->yl);
362
}
363
//#endif
364
//#ifndef Z80_COMMON
784 DimkaM 365
static Z80OPCODE opy_A6(Z80 *cpu) { // and (iy+nn)
366
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
367
   and8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 368
   cpu->t += 11;
369
}
370
//#endif
371
//#ifdef Z80_COMMON
784 DimkaM 372
static Z80OPCODE opy_AC(Z80 *cpu) { // xor yh
716 lvd 373
   xor8(cpu, cpu->yh);
374
}
784 DimkaM 375
static Z80OPCODE opy_AD(Z80 *cpu) { // xor yl
716 lvd 376
   xor8(cpu, cpu->yl);
377
}
378
//#endif
379
//#ifndef Z80_COMMON
784 DimkaM 380
static Z80OPCODE opy_AE(Z80 *cpu) { // xor (iy+nn)
381
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
382
   xor8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 383
   cpu->t += 11;
384
}
385
//#endif
386
//#ifdef Z80_COMMON
784 DimkaM 387
static Z80OPCODE opy_B4(Z80 *cpu) { // or yh
716 lvd 388
   or8(cpu, cpu->yh);
389
}
784 DimkaM 390
static Z80OPCODE opy_B5(Z80 *cpu) { // or yl
716 lvd 391
   or8(cpu, cpu->yl);
392
}
393
//#endif
394
//#ifndef Z80_COMMON
784 DimkaM 395
static Z80OPCODE opy_B6(Z80 *cpu) { // or (iy+nn)
396
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
397
   or8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 398
   cpu->t += 11;
399
}
400
//#endif
401
//#ifdef Z80_COMMON
784 DimkaM 402
static Z80OPCODE opy_BC(Z80 *cpu) { // cp yh
716 lvd 403
   cp8(cpu, cpu->yh);
404
}
784 DimkaM 405
static Z80OPCODE opy_BD(Z80 *cpu) { // cp yl
716 lvd 406
   cp8(cpu, cpu->yl);
407
}
408
//#endif
409
//#ifndef Z80_COMMON
784 DimkaM 410
static Z80OPCODE opy_BE(Z80 *cpu) { // cp (iy+nn)
411
   signed char ofs = i8(cpu->MemIf->xm(cpu->pc++));
412
   cp8(cpu, cpu->MemIf->rm(unsigned(int(cpu->iy) + ofs)));
716 lvd 413
   cpu->t += 11;
414
}
784 DimkaM 415
static Z80OPCODE opy_E1(Z80 *cpu) { // pop iy
716 lvd 416
   cpu->yl = cpu->MemIf->rm(cpu->sp++);
417
   cpu->yh = cpu->MemIf->rm(cpu->sp++);
418
   cpu->t += 6;
419
}
784 DimkaM 420
static Z80OPCODE opy_E3(Z80 *cpu) { // ex (sp),iy | M:6 T:23 (4, 4, 3, 4, 3, 5)
716 lvd 421
   unsigned tmp = cpu->MemIf->rm(cpu->sp) + 0x100*cpu->MemIf->rm(cpu->sp + 1);
422
   cpu->MemIf->wm(cpu->sp, cpu->yl);
423
   cpu->MemIf->wm(cpu->sp+1, cpu->yh);
424
   cpu->memptr = tmp;
425
   cpu->iy = tmp;
426
   cpu->t += 15;
427
}
784 DimkaM 428
static Z80OPCODE opy_E5(Z80 *cpu) { // push iy | M:4 T:15 (4, 5, 3, 3) 
716 lvd 429
   cpu->MemIf->wm(--cpu->sp, cpu->yh);
430
   cpu->MemIf->wm(--cpu->sp, cpu->yl);
431
   cpu->t += 7;
432
}
433
//#endif
434
//#ifdef Z80_COMMON
784 DimkaM 435
static Z80OPCODE opy_E9(Z80 *cpu) { // jp (iy)
436
   cpu->last_branch = u16(cpu->pc-2);
716 lvd 437
   cpu->pc = cpu->iy;
438
}
784 DimkaM 439
static Z80OPCODE opy_F9(Z80 *cpu) { // ld sp,iy
716 lvd 440
   cpu->sp = cpu->iy;
441
   cpu->t += 2;
442
}
443
//#endif
444
//#ifndef Z80_COMMON
445
 
446
STEPFUNC const iy_opcode[0x100] = {
447
 
448
    op_00,  op_01,  op_02,  op_03,  op_04,  op_05,  op_06,  op_07,
449
    op_08, opy_09,  op_0A,  op_0B,  op_0C,  op_0D,  op_0E,  op_0F,
450
    op_10,  op_11,  op_12,  op_13,  op_14,  op_15,  op_16,  op_17,
451
    op_18, opy_19,  op_1A,  op_1B,  op_1C,  op_1D,  op_1E,  op_1F,
452
    op_20, opy_21, opy_22, opy_23, opy_24, opy_25, opy_26,  op_27,
453
    op_28, opy_29, opy_2A, opy_2B, opy_2C, opy_2D, opy_2E,  op_2F,
454
    op_30,  op_31,  op_32,  op_33, opy_34, opy_35, opy_36,  op_37,
455
    op_38, opy_39,  op_3A,  op_3B,  op_3C,  op_3D,  op_3E,  op_3F,
456
 
457
    op_40,  op_41,  op_42,  op_43, opy_44, opy_45, opy_46,  op_47,
458
    op_48,  op_49,  op_4A,  op_4B, opy_4C, opy_4D, opy_4E,  op_4F,
459
    op_50,  op_51,  op_52,  op_53, opy_54, opy_55, opy_56,  op_57,
460
    op_58,  op_59,  op_5A,  op_5B, opy_5C, opy_5D, opy_5E,  op_5F,
461
   opy_60, opy_61, opy_62, opy_63,  op_64, opy_65, opy_66, opy_67,
462
   opy_68, opy_69, opy_6A, opy_6B, opy_6C,  op_6D, opy_6E, opy_6F,
463
   opy_70, opy_71, opy_72, opy_73, opy_74, opy_75,  op_76, opy_77,
464
    op_78,  op_79,  op_7A,  op_7B, opy_7C, opy_7D, opy_7E,  op_7F,
465
 
466
    op_80,  op_81,  op_82,  op_83, opy_84, opy_85, opy_86,  op_87,
467
    op_88,  op_89,  op_8A,  op_8B, opy_8C, opy_8D, opy_8E,  op_8F,
468
    op_90,  op_91,  op_92,  op_93, opy_94, opy_95, opy_96,  op_97,
469
    op_98,  op_99,  op_9A,  op_9B, opy_9C, opy_9D, opy_9E,  op_9F,
470
    op_A0,  op_A1,  op_A2,  op_A3, opy_A4, opy_A5, opy_A6,  op_A7,
471
    op_A8,  op_A9,  op_AA,  op_AB, opy_AC, opy_AD, opy_AE,  op_AF,
472
    op_B0,  op_B1,  op_B2,  op_B3, opy_B4, opy_B5, opy_B6,  op_B7,
473
    op_B8,  op_B9,  op_BA,  op_BB, opy_BC, opy_BD, opy_BE,  op_BF,
474
 
475
    op_C0,  op_C1,  op_C2,  op_C3,  op_C4,  op_C5,  op_C6,  op_C7,
476
    op_C8,  op_C9,  op_CA,  op_CB,  op_CC,  op_CD,  op_CE,  op_CF,
477
    op_D0,  op_D1,  op_D2,  op_D3,  op_D4,  op_D5,  op_D6,  op_D7,
478
    op_D8,  op_D9,  op_DA,  op_DB,  op_DC,  op_DD,  op_DE,  op_DF,
479
    op_E0, opy_E1,  op_E2, opy_E3,  op_E4, opy_E5,  op_E6,  op_E7,
480
    op_E8, opy_E9,  op_EA,  op_EB,  op_EC,  op_ED,  op_EE,  op_EF,
481
    op_F0,  op_F1,  op_F2,  op_F3,  op_F4,  op_F5,  op_F6,  op_F7,
482
    op_F8, opy_F9,  op_FA,  op_FB,  op_FC,  op_FD,  op_FE,  op_FF,
483
 
484
};
485
//#endif