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