1 /* autogenerated from ./opcodes_ddfd.dat, do not edit */
2
3 /*ADD IX,BC*/
op_DD_0x09(Z80EX_CONTEXT * cpu)4 static void op_DD_0x09(Z80EX_CONTEXT *cpu)
5 {
6 ADD16(IX,BC);
7 T_WAIT_UNTIL(11);
8 return;
9 }
10
11 /*ADD IX,DE*/
op_DD_0x19(Z80EX_CONTEXT * cpu)12 static void op_DD_0x19(Z80EX_CONTEXT *cpu)
13 {
14 ADD16(IX,DE);
15 T_WAIT_UNTIL(11);
16 return;
17 }
18
19 /*LD IX,@*/
op_DD_0x21(Z80EX_CONTEXT * cpu)20 static void op_DD_0x21(Z80EX_CONTEXT *cpu)
21 {
22 temp_word.b.l=READ_OP();
23 temp_word.b.h=READ_OP();
24 LD16(IX,temp_word.w);
25 T_WAIT_UNTIL(10);
26 return;
27 }
28
29 /*LD (@),IX*/
op_DD_0x22(Z80EX_CONTEXT * cpu)30 static void op_DD_0x22(Z80EX_CONTEXT *cpu)
31 {
32 temp_addr.b.l=READ_OP();
33 temp_addr.b.h=READ_OP();
34 LD_RP_TO_ADDR_MPTR_16(temp_word.w,IX, temp_addr.w);
35 WRITE_MEM(temp_addr.w,temp_word.b.l,10);
36 WRITE_MEM(temp_addr.w+1,temp_word.b.h,13);
37 T_WAIT_UNTIL(16);
38 return;
39 }
40
41 /*INC IX*/
op_DD_0x23(Z80EX_CONTEXT * cpu)42 static void op_DD_0x23(Z80EX_CONTEXT *cpu)
43 {
44 INC16(IX);
45 T_WAIT_UNTIL(6);
46 return;
47 }
48
49 /*INC IXH*/
op_DD_0x24(Z80EX_CONTEXT * cpu)50 static void op_DD_0x24(Z80EX_CONTEXT *cpu)
51 {
52 INC(IXH);
53 T_WAIT_UNTIL(4);
54 return;
55 }
56
57 /*DEC IXH*/
op_DD_0x25(Z80EX_CONTEXT * cpu)58 static void op_DD_0x25(Z80EX_CONTEXT *cpu)
59 {
60 DEC(IXH);
61 T_WAIT_UNTIL(4);
62 return;
63 }
64
65 /*LD IXH,#*/
op_DD_0x26(Z80EX_CONTEXT * cpu)66 static void op_DD_0x26(Z80EX_CONTEXT *cpu)
67 {
68 temp_byte=READ_OP();
69 LD(IXH,temp_byte);
70 T_WAIT_UNTIL(7);
71 return;
72 }
73
74 /*ADD IX,IX*/
op_DD_0x29(Z80EX_CONTEXT * cpu)75 static void op_DD_0x29(Z80EX_CONTEXT *cpu)
76 {
77 ADD16(IX,IX);
78 T_WAIT_UNTIL(11);
79 return;
80 }
81
82 /*LD IX,(@)*/
op_DD_0x2a(Z80EX_CONTEXT * cpu)83 static void op_DD_0x2a(Z80EX_CONTEXT *cpu)
84 {
85 temp_addr.b.l=READ_OP();
86 temp_addr.b.h=READ_OP();
87 READ_MEM(temp_word.b.l,temp_addr.w,10);
88 READ_MEM(temp_word.b.h,temp_addr.w+1,13);
89 LD_RP_FROM_ADDR_MPTR_16(IX,temp_word.w, temp_addr.w);
90 T_WAIT_UNTIL(16);
91 return;
92 }
93
94 /*DEC IX*/
op_DD_0x2b(Z80EX_CONTEXT * cpu)95 static void op_DD_0x2b(Z80EX_CONTEXT *cpu)
96 {
97 DEC16(IX);
98 T_WAIT_UNTIL(6);
99 return;
100 }
101
102 /*INC IXL*/
op_DD_0x2c(Z80EX_CONTEXT * cpu)103 static void op_DD_0x2c(Z80EX_CONTEXT *cpu)
104 {
105 INC(IXL);
106 T_WAIT_UNTIL(4);
107 return;
108 }
109
110 /*DEC IXL*/
op_DD_0x2d(Z80EX_CONTEXT * cpu)111 static void op_DD_0x2d(Z80EX_CONTEXT *cpu)
112 {
113 DEC(IXL);
114 T_WAIT_UNTIL(4);
115 return;
116 }
117
118 /*LD IXL,#*/
op_DD_0x2e(Z80EX_CONTEXT * cpu)119 static void op_DD_0x2e(Z80EX_CONTEXT *cpu)
120 {
121 temp_byte=READ_OP();
122 LD(IXL,temp_byte);
123 T_WAIT_UNTIL(7);
124 return;
125 }
126
127 /*INC (IX+$)*/
op_DD_0x34(Z80EX_CONTEXT * cpu)128 static void op_DD_0x34(Z80EX_CONTEXT *cpu)
129 {
130 temp_byte=READ_OP();
131 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
132 MEMPTR=(IX+temp_byte_s);
133 READ_MEM(temp_byte,(IX+temp_byte_s),12);
134 INC(temp_byte);
135 WRITE_MEM((IX+temp_byte_s),temp_byte,16);
136 T_WAIT_UNTIL(19);
137 return;
138 }
139
140 /*DEC (IX+$)*/
op_DD_0x35(Z80EX_CONTEXT * cpu)141 static void op_DD_0x35(Z80EX_CONTEXT *cpu)
142 {
143 temp_byte=READ_OP();
144 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
145 MEMPTR=(IX+temp_byte_s);
146 READ_MEM(temp_byte,(IX+temp_byte_s),12);
147 DEC(temp_byte);
148 WRITE_MEM((IX+temp_byte_s),temp_byte,16);
149 T_WAIT_UNTIL(19);
150 return;
151 }
152
153 /*LD (IX+$),#*/
op_DD_0x36(Z80EX_CONTEXT * cpu)154 static void op_DD_0x36(Z80EX_CONTEXT *cpu)
155 {
156 temp_byte=READ_OP();
157 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
158 MEMPTR=(IX+temp_byte_s);
159 temp_byte=READ_OP();
160 LD(temp_byte,temp_byte);
161 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
162 T_WAIT_UNTIL(15);
163 return;
164 }
165
166 /*ADD IX,SP*/
op_DD_0x39(Z80EX_CONTEXT * cpu)167 static void op_DD_0x39(Z80EX_CONTEXT *cpu)
168 {
169 ADD16(IX,SP);
170 T_WAIT_UNTIL(11);
171 return;
172 }
173
174 /*LD B,IXH*/
op_DD_0x44(Z80EX_CONTEXT * cpu)175 static void op_DD_0x44(Z80EX_CONTEXT *cpu)
176 {
177 LD(B,IXH);
178 T_WAIT_UNTIL(4);
179 return;
180 }
181
182 /*LD B,IXL*/
op_DD_0x45(Z80EX_CONTEXT * cpu)183 static void op_DD_0x45(Z80EX_CONTEXT *cpu)
184 {
185 LD(B,IXL);
186 T_WAIT_UNTIL(4);
187 return;
188 }
189
190 /*LD B,(IX+$)*/
op_DD_0x46(Z80EX_CONTEXT * cpu)191 static void op_DD_0x46(Z80EX_CONTEXT *cpu)
192 {
193 temp_byte=READ_OP();
194 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
195 MEMPTR=(IX+temp_byte_s);
196 READ_MEM(temp_byte,(IX+temp_byte_s),12);
197 LD(B,temp_byte);
198 T_WAIT_UNTIL(15);
199 return;
200 }
201
202 /*LD C,IXH*/
op_DD_0x4c(Z80EX_CONTEXT * cpu)203 static void op_DD_0x4c(Z80EX_CONTEXT *cpu)
204 {
205 LD(C,IXH);
206 T_WAIT_UNTIL(4);
207 return;
208 }
209
210 /*LD C,IXL*/
op_DD_0x4d(Z80EX_CONTEXT * cpu)211 static void op_DD_0x4d(Z80EX_CONTEXT *cpu)
212 {
213 LD(C,IXL);
214 T_WAIT_UNTIL(4);
215 return;
216 }
217
218 /*LD C,(IX+$)*/
op_DD_0x4e(Z80EX_CONTEXT * cpu)219 static void op_DD_0x4e(Z80EX_CONTEXT *cpu)
220 {
221 temp_byte=READ_OP();
222 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
223 MEMPTR=(IX+temp_byte_s);
224 READ_MEM(temp_byte,(IX+temp_byte_s),12);
225 LD(C,temp_byte);
226 T_WAIT_UNTIL(15);
227 return;
228 }
229
230 /*LD D,IXH*/
op_DD_0x54(Z80EX_CONTEXT * cpu)231 static void op_DD_0x54(Z80EX_CONTEXT *cpu)
232 {
233 LD(D,IXH);
234 T_WAIT_UNTIL(4);
235 return;
236 }
237
238 /*LD D,IXL*/
op_DD_0x55(Z80EX_CONTEXT * cpu)239 static void op_DD_0x55(Z80EX_CONTEXT *cpu)
240 {
241 LD(D,IXL);
242 T_WAIT_UNTIL(4);
243 return;
244 }
245
246 /*LD D,(IX+$)*/
op_DD_0x56(Z80EX_CONTEXT * cpu)247 static void op_DD_0x56(Z80EX_CONTEXT *cpu)
248 {
249 temp_byte=READ_OP();
250 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
251 MEMPTR=(IX+temp_byte_s);
252 READ_MEM(temp_byte,(IX+temp_byte_s),12);
253 LD(D,temp_byte);
254 T_WAIT_UNTIL(15);
255 return;
256 }
257
258 /*LD E,IXH*/
op_DD_0x5c(Z80EX_CONTEXT * cpu)259 static void op_DD_0x5c(Z80EX_CONTEXT *cpu)
260 {
261 LD(E,IXH);
262 T_WAIT_UNTIL(4);
263 return;
264 }
265
266 /*LD E,IXL*/
op_DD_0x5d(Z80EX_CONTEXT * cpu)267 static void op_DD_0x5d(Z80EX_CONTEXT *cpu)
268 {
269 LD(E,IXL);
270 T_WAIT_UNTIL(4);
271 return;
272 }
273
274 /*LD E,(IX+$)*/
op_DD_0x5e(Z80EX_CONTEXT * cpu)275 static void op_DD_0x5e(Z80EX_CONTEXT *cpu)
276 {
277 temp_byte=READ_OP();
278 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
279 MEMPTR=(IX+temp_byte_s);
280 READ_MEM(temp_byte,(IX+temp_byte_s),12);
281 LD(E,temp_byte);
282 T_WAIT_UNTIL(15);
283 return;
284 }
285
286 /*LD IXH,B*/
op_DD_0x60(Z80EX_CONTEXT * cpu)287 static void op_DD_0x60(Z80EX_CONTEXT *cpu)
288 {
289 LD(IXH,B);
290 T_WAIT_UNTIL(4);
291 return;
292 }
293
294 /*LD IXH,C*/
op_DD_0x61(Z80EX_CONTEXT * cpu)295 static void op_DD_0x61(Z80EX_CONTEXT *cpu)
296 {
297 LD(IXH,C);
298 T_WAIT_UNTIL(4);
299 return;
300 }
301
302 /*LD IXH,D*/
op_DD_0x62(Z80EX_CONTEXT * cpu)303 static void op_DD_0x62(Z80EX_CONTEXT *cpu)
304 {
305 LD(IXH,D);
306 T_WAIT_UNTIL(4);
307 return;
308 }
309
310 /*LD IXH,E*/
op_DD_0x63(Z80EX_CONTEXT * cpu)311 static void op_DD_0x63(Z80EX_CONTEXT *cpu)
312 {
313 LD(IXH,E);
314 T_WAIT_UNTIL(4);
315 return;
316 }
317
318 /*LD IXH,IXH*/
op_DD_0x64(Z80EX_CONTEXT * cpu)319 static void op_DD_0x64(Z80EX_CONTEXT *cpu)
320 {
321 LD(IXH,IXH);
322 T_WAIT_UNTIL(4);
323 return;
324 }
325
326 /*LD IXH,IXL*/
op_DD_0x65(Z80EX_CONTEXT * cpu)327 static void op_DD_0x65(Z80EX_CONTEXT *cpu)
328 {
329 LD(IXH,IXL);
330 T_WAIT_UNTIL(4);
331 return;
332 }
333
334 /*LD H,(IX+$)*/
op_DD_0x66(Z80EX_CONTEXT * cpu)335 static void op_DD_0x66(Z80EX_CONTEXT *cpu)
336 {
337 temp_byte=READ_OP();
338 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
339 MEMPTR=(IX+temp_byte_s);
340 READ_MEM(temp_byte,(IX+temp_byte_s),12);
341 LD(H,temp_byte);
342 T_WAIT_UNTIL(15);
343 return;
344 }
345
346 /*LD IXH,A*/
op_DD_0x67(Z80EX_CONTEXT * cpu)347 static void op_DD_0x67(Z80EX_CONTEXT *cpu)
348 {
349 LD(IXH,A);
350 T_WAIT_UNTIL(4);
351 return;
352 }
353
354 /*LD IXL,B*/
op_DD_0x68(Z80EX_CONTEXT * cpu)355 static void op_DD_0x68(Z80EX_CONTEXT *cpu)
356 {
357 LD(IXL,B);
358 T_WAIT_UNTIL(4);
359 return;
360 }
361
362 /*LD IXL,C*/
op_DD_0x69(Z80EX_CONTEXT * cpu)363 static void op_DD_0x69(Z80EX_CONTEXT *cpu)
364 {
365 LD(IXL,C);
366 T_WAIT_UNTIL(4);
367 return;
368 }
369
370 /*LD IXL,D*/
op_DD_0x6a(Z80EX_CONTEXT * cpu)371 static void op_DD_0x6a(Z80EX_CONTEXT *cpu)
372 {
373 LD(IXL,D);
374 T_WAIT_UNTIL(4);
375 return;
376 }
377
378 /*LD IXL,E*/
op_DD_0x6b(Z80EX_CONTEXT * cpu)379 static void op_DD_0x6b(Z80EX_CONTEXT *cpu)
380 {
381 LD(IXL,E);
382 T_WAIT_UNTIL(4);
383 return;
384 }
385
386 /*LD IXL,IXH*/
op_DD_0x6c(Z80EX_CONTEXT * cpu)387 static void op_DD_0x6c(Z80EX_CONTEXT *cpu)
388 {
389 LD(IXL,IXH);
390 T_WAIT_UNTIL(4);
391 return;
392 }
393
394 /*LD IXL,IXL*/
op_DD_0x6d(Z80EX_CONTEXT * cpu)395 static void op_DD_0x6d(Z80EX_CONTEXT *cpu)
396 {
397 LD(IXL,IXL);
398 T_WAIT_UNTIL(4);
399 return;
400 }
401
402 /*LD L,(IX+$)*/
op_DD_0x6e(Z80EX_CONTEXT * cpu)403 static void op_DD_0x6e(Z80EX_CONTEXT *cpu)
404 {
405 temp_byte=READ_OP();
406 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
407 MEMPTR=(IX+temp_byte_s);
408 READ_MEM(temp_byte,(IX+temp_byte_s),12);
409 LD(L,temp_byte);
410 T_WAIT_UNTIL(15);
411 return;
412 }
413
414 /*LD IXL,A*/
op_DD_0x6f(Z80EX_CONTEXT * cpu)415 static void op_DD_0x6f(Z80EX_CONTEXT *cpu)
416 {
417 LD(IXL,A);
418 T_WAIT_UNTIL(4);
419 return;
420 }
421
422 /*LD (IX+$),B*/
op_DD_0x70(Z80EX_CONTEXT * cpu)423 static void op_DD_0x70(Z80EX_CONTEXT *cpu)
424 {
425 temp_byte=READ_OP();
426 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
427 MEMPTR=(IX+temp_byte_s);
428 LD(temp_byte,B);
429 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
430 T_WAIT_UNTIL(15);
431 return;
432 }
433
434 /*LD (IX+$),C*/
op_DD_0x71(Z80EX_CONTEXT * cpu)435 static void op_DD_0x71(Z80EX_CONTEXT *cpu)
436 {
437 temp_byte=READ_OP();
438 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
439 MEMPTR=(IX+temp_byte_s);
440 LD(temp_byte,C);
441 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
442 T_WAIT_UNTIL(15);
443 return;
444 }
445
446 /*LD (IX+$),D*/
op_DD_0x72(Z80EX_CONTEXT * cpu)447 static void op_DD_0x72(Z80EX_CONTEXT *cpu)
448 {
449 temp_byte=READ_OP();
450 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
451 MEMPTR=(IX+temp_byte_s);
452 LD(temp_byte,D);
453 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
454 T_WAIT_UNTIL(15);
455 return;
456 }
457
458 /*LD (IX+$),E*/
op_DD_0x73(Z80EX_CONTEXT * cpu)459 static void op_DD_0x73(Z80EX_CONTEXT *cpu)
460 {
461 temp_byte=READ_OP();
462 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
463 MEMPTR=(IX+temp_byte_s);
464 LD(temp_byte,E);
465 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
466 T_WAIT_UNTIL(15);
467 return;
468 }
469
470 /*LD (IX+$),H*/
op_DD_0x74(Z80EX_CONTEXT * cpu)471 static void op_DD_0x74(Z80EX_CONTEXT *cpu)
472 {
473 temp_byte=READ_OP();
474 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
475 MEMPTR=(IX+temp_byte_s);
476 LD(temp_byte,H);
477 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
478 T_WAIT_UNTIL(15);
479 return;
480 }
481
482 /*LD (IX+$),L*/
op_DD_0x75(Z80EX_CONTEXT * cpu)483 static void op_DD_0x75(Z80EX_CONTEXT *cpu)
484 {
485 temp_byte=READ_OP();
486 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
487 MEMPTR=(IX+temp_byte_s);
488 LD(temp_byte,L);
489 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
490 T_WAIT_UNTIL(15);
491 return;
492 }
493
494 /*LD (IX+$),A*/
op_DD_0x77(Z80EX_CONTEXT * cpu)495 static void op_DD_0x77(Z80EX_CONTEXT *cpu)
496 {
497 temp_byte=READ_OP();
498 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
499 MEMPTR=(IX+temp_byte_s);
500 LD(temp_byte,A);
501 WRITE_MEM((IX+temp_byte_s),temp_byte,12);
502 T_WAIT_UNTIL(15);
503 return;
504 }
505
506 /*LD A,IXH*/
op_DD_0x7c(Z80EX_CONTEXT * cpu)507 static void op_DD_0x7c(Z80EX_CONTEXT *cpu)
508 {
509 LD(A,IXH);
510 T_WAIT_UNTIL(4);
511 return;
512 }
513
514 /*LD A,IXL*/
op_DD_0x7d(Z80EX_CONTEXT * cpu)515 static void op_DD_0x7d(Z80EX_CONTEXT *cpu)
516 {
517 LD(A,IXL);
518 T_WAIT_UNTIL(4);
519 return;
520 }
521
522 /*LD A,(IX+$)*/
op_DD_0x7e(Z80EX_CONTEXT * cpu)523 static void op_DD_0x7e(Z80EX_CONTEXT *cpu)
524 {
525 temp_byte=READ_OP();
526 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
527 MEMPTR=(IX+temp_byte_s);
528 READ_MEM(temp_byte,(IX+temp_byte_s),12);
529 LD(A,temp_byte);
530 T_WAIT_UNTIL(15);
531 return;
532 }
533
534 /*ADD A,IXH*/
op_DD_0x84(Z80EX_CONTEXT * cpu)535 static void op_DD_0x84(Z80EX_CONTEXT *cpu)
536 {
537 ADD(A,IXH);
538 T_WAIT_UNTIL(4);
539 return;
540 }
541
542 /*ADD A,IXL*/
op_DD_0x85(Z80EX_CONTEXT * cpu)543 static void op_DD_0x85(Z80EX_CONTEXT *cpu)
544 {
545 ADD(A,IXL);
546 T_WAIT_UNTIL(4);
547 return;
548 }
549
550 /*ADD A,(IX+$)*/
op_DD_0x86(Z80EX_CONTEXT * cpu)551 static void op_DD_0x86(Z80EX_CONTEXT *cpu)
552 {
553 temp_byte=READ_OP();
554 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
555 MEMPTR=(IX+temp_byte_s);
556 READ_MEM(temp_byte,(IX+temp_byte_s),12);
557 ADD(A,temp_byte);
558 T_WAIT_UNTIL(15);
559 return;
560 }
561
562 /*ADC A,IXH*/
op_DD_0x8c(Z80EX_CONTEXT * cpu)563 static void op_DD_0x8c(Z80EX_CONTEXT *cpu)
564 {
565 ADC(A,IXH);
566 T_WAIT_UNTIL(4);
567 return;
568 }
569
570 /*ADC A,IXL*/
op_DD_0x8d(Z80EX_CONTEXT * cpu)571 static void op_DD_0x8d(Z80EX_CONTEXT *cpu)
572 {
573 ADC(A,IXL);
574 T_WAIT_UNTIL(4);
575 return;
576 }
577
578 /*ADC A,(IX+$)*/
op_DD_0x8e(Z80EX_CONTEXT * cpu)579 static void op_DD_0x8e(Z80EX_CONTEXT *cpu)
580 {
581 temp_byte=READ_OP();
582 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
583 MEMPTR=(IX+temp_byte_s);
584 READ_MEM(temp_byte,(IX+temp_byte_s),12);
585 ADC(A,temp_byte);
586 T_WAIT_UNTIL(15);
587 return;
588 }
589
590 /*SUB IXH*/
op_DD_0x94(Z80EX_CONTEXT * cpu)591 static void op_DD_0x94(Z80EX_CONTEXT *cpu)
592 {
593 SUB(IXH);
594 T_WAIT_UNTIL(4);
595 return;
596 }
597
598 /*SUB IXL*/
op_DD_0x95(Z80EX_CONTEXT * cpu)599 static void op_DD_0x95(Z80EX_CONTEXT *cpu)
600 {
601 SUB(IXL);
602 T_WAIT_UNTIL(4);
603 return;
604 }
605
606 /*SUB (IX+$)*/
op_DD_0x96(Z80EX_CONTEXT * cpu)607 static void op_DD_0x96(Z80EX_CONTEXT *cpu)
608 {
609 temp_byte=READ_OP();
610 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
611 MEMPTR=(IX+temp_byte_s);
612 READ_MEM(temp_byte,(IX+temp_byte_s),12);
613 SUB(temp_byte);
614 T_WAIT_UNTIL(15);
615 return;
616 }
617
618 /*SBC A,IXH*/
op_DD_0x9c(Z80EX_CONTEXT * cpu)619 static void op_DD_0x9c(Z80EX_CONTEXT *cpu)
620 {
621 SBC(A,IXH);
622 T_WAIT_UNTIL(4);
623 return;
624 }
625
626 /*SBC A,IXL*/
op_DD_0x9d(Z80EX_CONTEXT * cpu)627 static void op_DD_0x9d(Z80EX_CONTEXT *cpu)
628 {
629 SBC(A,IXL);
630 T_WAIT_UNTIL(4);
631 return;
632 }
633
634 /*SBC A,(IX+$)*/
op_DD_0x9e(Z80EX_CONTEXT * cpu)635 static void op_DD_0x9e(Z80EX_CONTEXT *cpu)
636 {
637 temp_byte=READ_OP();
638 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
639 MEMPTR=(IX+temp_byte_s);
640 READ_MEM(temp_byte,(IX+temp_byte_s),12);
641 SBC(A,temp_byte);
642 T_WAIT_UNTIL(15);
643 return;
644 }
645
646 /*AND IXH*/
op_DD_0xa4(Z80EX_CONTEXT * cpu)647 static void op_DD_0xa4(Z80EX_CONTEXT *cpu)
648 {
649 AND(IXH);
650 T_WAIT_UNTIL(4);
651 return;
652 }
653
654 /*AND IXL*/
op_DD_0xa5(Z80EX_CONTEXT * cpu)655 static void op_DD_0xa5(Z80EX_CONTEXT *cpu)
656 {
657 AND(IXL);
658 T_WAIT_UNTIL(4);
659 return;
660 }
661
662 /*AND (IX+$)*/
op_DD_0xa6(Z80EX_CONTEXT * cpu)663 static void op_DD_0xa6(Z80EX_CONTEXT *cpu)
664 {
665 temp_byte=READ_OP();
666 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
667 MEMPTR=(IX+temp_byte_s);
668 READ_MEM(temp_byte,(IX+temp_byte_s),12);
669 AND(temp_byte);
670 T_WAIT_UNTIL(15);
671 return;
672 }
673
674 /*XOR IXH*/
op_DD_0xac(Z80EX_CONTEXT * cpu)675 static void op_DD_0xac(Z80EX_CONTEXT *cpu)
676 {
677 XOR(IXH);
678 T_WAIT_UNTIL(4);
679 return;
680 }
681
682 /*XOR IXL*/
op_DD_0xad(Z80EX_CONTEXT * cpu)683 static void op_DD_0xad(Z80EX_CONTEXT *cpu)
684 {
685 XOR(IXL);
686 T_WAIT_UNTIL(4);
687 return;
688 }
689
690 /*XOR (IX+$)*/
op_DD_0xae(Z80EX_CONTEXT * cpu)691 static void op_DD_0xae(Z80EX_CONTEXT *cpu)
692 {
693 temp_byte=READ_OP();
694 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
695 MEMPTR=(IX+temp_byte_s);
696 READ_MEM(temp_byte,(IX+temp_byte_s),12);
697 XOR(temp_byte);
698 T_WAIT_UNTIL(15);
699 return;
700 }
701
702 /*OR IXH*/
op_DD_0xb4(Z80EX_CONTEXT * cpu)703 static void op_DD_0xb4(Z80EX_CONTEXT *cpu)
704 {
705 OR(IXH);
706 T_WAIT_UNTIL(4);
707 return;
708 }
709
710 /*OR IXL*/
op_DD_0xb5(Z80EX_CONTEXT * cpu)711 static void op_DD_0xb5(Z80EX_CONTEXT *cpu)
712 {
713 OR(IXL);
714 T_WAIT_UNTIL(4);
715 return;
716 }
717
718 /*OR (IX+$)*/
op_DD_0xb6(Z80EX_CONTEXT * cpu)719 static void op_DD_0xb6(Z80EX_CONTEXT *cpu)
720 {
721 temp_byte=READ_OP();
722 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
723 MEMPTR=(IX+temp_byte_s);
724 READ_MEM(temp_byte,(IX+temp_byte_s),12);
725 OR(temp_byte);
726 T_WAIT_UNTIL(15);
727 return;
728 }
729
730 /*CP IXH*/
op_DD_0xbc(Z80EX_CONTEXT * cpu)731 static void op_DD_0xbc(Z80EX_CONTEXT *cpu)
732 {
733 CP(IXH);
734 T_WAIT_UNTIL(4);
735 return;
736 }
737
738 /*CP IXL*/
op_DD_0xbd(Z80EX_CONTEXT * cpu)739 static void op_DD_0xbd(Z80EX_CONTEXT *cpu)
740 {
741 CP(IXL);
742 T_WAIT_UNTIL(4);
743 return;
744 }
745
746 /*CP (IX+$)*/
op_DD_0xbe(Z80EX_CONTEXT * cpu)747 static void op_DD_0xbe(Z80EX_CONTEXT *cpu)
748 {
749 temp_byte=READ_OP();
750 temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
751 MEMPTR=(IX+temp_byte_s);
752 READ_MEM(temp_byte,(IX+temp_byte_s),12);
753 CP(temp_byte);
754 T_WAIT_UNTIL(15);
755 return;
756 }
757
758
759 /*POP IX*/
op_DD_0xe1(Z80EX_CONTEXT * cpu)760 static void op_DD_0xe1(Z80EX_CONTEXT *cpu)
761 {
762 POP(IX, /*rd*/4,7);
763 T_WAIT_UNTIL(10);
764 return;
765 }
766
767 /*EX (SP),IX*/
op_DD_0xe3(Z80EX_CONTEXT * cpu)768 static void op_DD_0xe3(Z80EX_CONTEXT *cpu)
769 {
770 READ_MEM(temp_word.b.l,(SP),4);
771 READ_MEM(temp_word.b.h,(SP+1),7);
772 EX_MPTR(temp_word.w,IX);
773 WRITE_MEM((SP),temp_word.b.l,11);
774 WRITE_MEM((SP+1),temp_word.b.h,14);
775 T_WAIT_UNTIL(19);
776 return;
777 }
778
779 /*PUSH IX*/
op_DD_0xe5(Z80EX_CONTEXT * cpu)780 static void op_DD_0xe5(Z80EX_CONTEXT *cpu)
781 {
782 PUSH(IX, /*wr*/5,8);
783 T_WAIT_UNTIL(11);
784 return;
785 }
786
787 /*JP IX*/
op_DD_0xe9(Z80EX_CONTEXT * cpu)788 static void op_DD_0xe9(Z80EX_CONTEXT *cpu)
789 {
790 JP_NO_MPTR(IX);
791 T_WAIT_UNTIL(4);
792 return;
793 }
794
795 /*LD SP,IX*/
op_DD_0xf9(Z80EX_CONTEXT * cpu)796 static void op_DD_0xf9(Z80EX_CONTEXT *cpu)
797 {
798 LD16(SP,IX);
799 T_WAIT_UNTIL(6);
800 return;
801 }
802
803
804
805 /**/
806 static const z80ex_opcode_fn opcodes_dd[0x100] = {
807 NULL , NULL , NULL , NULL ,
808 NULL , NULL , NULL , NULL ,
809 NULL , op_DD_0x09 , NULL , NULL ,
810 NULL , NULL , NULL , NULL ,
811 NULL , NULL , NULL , NULL ,
812 NULL , NULL , NULL , NULL ,
813 NULL , op_DD_0x19 , NULL , NULL ,
814 NULL , NULL , NULL , NULL ,
815 NULL , op_DD_0x21 , op_DD_0x22 , op_DD_0x23 ,
816 op_DD_0x24 , op_DD_0x25 , op_DD_0x26 , NULL ,
817 NULL , op_DD_0x29 , op_DD_0x2a , op_DD_0x2b ,
818 op_DD_0x2c , op_DD_0x2d , op_DD_0x2e , NULL ,
819 NULL , NULL , NULL , NULL ,
820 op_DD_0x34 , op_DD_0x35 , op_DD_0x36 , NULL ,
821 NULL , op_DD_0x39 , NULL , NULL ,
822 NULL , NULL , NULL , NULL ,
823 NULL , NULL , NULL , NULL ,
824 op_DD_0x44 , op_DD_0x45 , op_DD_0x46 , NULL ,
825 NULL , NULL , NULL , NULL ,
826 op_DD_0x4c , op_DD_0x4d , op_DD_0x4e , NULL ,
827 NULL , NULL , NULL , NULL ,
828 op_DD_0x54 , op_DD_0x55 , op_DD_0x56 , NULL ,
829 NULL , NULL , NULL , NULL ,
830 op_DD_0x5c , op_DD_0x5d , op_DD_0x5e , NULL ,
831 op_DD_0x60 , op_DD_0x61 , op_DD_0x62 , op_DD_0x63 ,
832 op_DD_0x64 , op_DD_0x65 , op_DD_0x66 , op_DD_0x67 ,
833 op_DD_0x68 , op_DD_0x69 , op_DD_0x6a , op_DD_0x6b ,
834 op_DD_0x6c , op_DD_0x6d , op_DD_0x6e , op_DD_0x6f ,
835 op_DD_0x70 , op_DD_0x71 , op_DD_0x72 , op_DD_0x73 ,
836 op_DD_0x74 , op_DD_0x75 , NULL , op_DD_0x77 ,
837 NULL , NULL , NULL , NULL ,
838 op_DD_0x7c , op_DD_0x7d , op_DD_0x7e , NULL ,
839 NULL , NULL , NULL , NULL ,
840 op_DD_0x84 , op_DD_0x85 , op_DD_0x86 , NULL ,
841 NULL , NULL , NULL , NULL ,
842 op_DD_0x8c , op_DD_0x8d , op_DD_0x8e , NULL ,
843 NULL , NULL , NULL , NULL ,
844 op_DD_0x94 , op_DD_0x95 , op_DD_0x96 , NULL ,
845 NULL , NULL , NULL , NULL ,
846 op_DD_0x9c , op_DD_0x9d , op_DD_0x9e , NULL ,
847 NULL , NULL , NULL , NULL ,
848 op_DD_0xa4 , op_DD_0xa5 , op_DD_0xa6 , NULL ,
849 NULL , NULL , NULL , NULL ,
850 op_DD_0xac , op_DD_0xad , op_DD_0xae , NULL ,
851 NULL , NULL , NULL , NULL ,
852 op_DD_0xb4 , op_DD_0xb5 , op_DD_0xb6 , NULL ,
853 NULL , NULL , NULL , NULL ,
854 op_DD_0xbc , op_DD_0xbd , op_DD_0xbe , NULL ,
855 NULL , NULL , NULL , NULL ,
856 NULL , NULL , NULL , NULL ,
857 NULL , NULL , NULL , NULL ,
858 NULL , NULL , NULL , NULL ,
859 NULL , NULL , NULL , NULL ,
860 NULL , NULL , NULL , NULL ,
861 NULL , NULL , NULL , NULL ,
862 NULL , NULL , NULL , NULL ,
863 NULL , op_DD_0xe1 , NULL , op_DD_0xe3 ,
864 NULL , op_DD_0xe5 , NULL , NULL ,
865 NULL , op_DD_0xe9 , NULL , NULL ,
866 NULL , NULL , NULL , NULL ,
867 NULL , NULL , NULL , NULL ,
868 NULL , NULL , NULL , NULL ,
869 NULL , op_DD_0xf9 , NULL , NULL ,
870 NULL , NULL , NULL , NULL
871 };
872