Xemu [doxygen]  hyppo 0a42be3a057156924bc1b626a687bd6e27349c45 @ Sat 19 Mar 02:15:11 CET 2022
opcodes_base.c
Go to the documentation of this file.
1 /* autogenerated from ./opcodes_base.dat, do not edit */
2 
3 /*NOP*/
4 static void op_0x00(void)
5 {
6  T_WAIT_UNTIL(4);
7  return;
8 }
9 
10 /*LD BC,@*/
11 static void op_0x01(void)
12 {
13  temp_word.b.l=READ_OP();
14  temp_word.b.h=READ_OP();
15  LD16(BC,temp_word.w);
16  T_WAIT_UNTIL(10);
17  return;
18 }
19 
20 /*LD (BC),A*/
21 static void op_0x02(void)
22 {
24  WRITE_MEM((BC),temp_byte,4);
25  T_WAIT_UNTIL(7);
26  return;
27 }
28 
29 /*INC BC*/
30 static void op_0x03(void)
31 {
32  INC16(BC);
33  T_WAIT_UNTIL(6);
34  return;
35 }
36 
37 /*INC B*/
38 static void op_0x04(void)
39 {
40  INC(B);
41  T_WAIT_UNTIL(4);
42  return;
43 }
44 
45 /*DEC B*/
46 static void op_0x05(void)
47 {
48  DEC(B);
49  T_WAIT_UNTIL(4);
50  return;
51 }
52 
53 /*LD B,#*/
54 static void op_0x06(void)
55 {
57  LD(B,temp_byte);
58  T_WAIT_UNTIL(7);
59  return;
60 }
61 
62 /*RLCA*/
63 static void op_0x07(void)
64 {
65  RLCA();
66  T_WAIT_UNTIL(4);
67  return;
68 }
69 
70 /*EX AF,AF'*/
71 static void op_0x08(void)
72 {
73  EX(AF,AF_);
74  T_WAIT_UNTIL(4);
75  return;
76 }
77 
78 /*ADD HL,BC*/
79 static void op_0x09(void)
80 {
81  ADD16(HL,BC);
82  T_WAIT_UNTIL(11);
83  return;
84 }
85 
86 /*LD A,(BC)*/
87 static void op_0x0a(void)
88 {
89  READ_MEM(temp_byte,(BC),4);
91  T_WAIT_UNTIL(7);
92  return;
93 }
94 
95 /*DEC BC*/
96 static void op_0x0b(void)
97 {
98  DEC16(BC);
99  T_WAIT_UNTIL(6);
100  return;
101 }
102 
103 /*INC C*/
104 static void op_0x0c(void)
105 {
106  INC(C);
107  T_WAIT_UNTIL(4);
108  return;
109 }
110 
111 /*DEC C*/
112 static void op_0x0d(void)
113 {
114  DEC(C);
115  T_WAIT_UNTIL(4);
116  return;
117 }
118 
119 /*LD C,#*/
120 static void op_0x0e(void)
121 {
122  temp_byte=READ_OP();
123  LD(C,temp_byte);
124  T_WAIT_UNTIL(7);
125  return;
126 }
127 
128 /*RRCA*/
129 static void op_0x0f(void)
130 {
131  RRCA();
132  T_WAIT_UNTIL(4);
133  return;
134 }
135 
136 /*DJNZ %*/
137 static void op_0x10(void)
138 {
139  temp_byte=READ_OP();
140  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
141  DJNZ(temp_byte_s, /*t:*/ /*t1*/8,/*t2*/13);
142  return;
143 }
144 
145 /*LD DE,@*/
146 static void op_0x11(void)
147 {
148  temp_word.b.l=READ_OP();
149  temp_word.b.h=READ_OP();
150  LD16(DE,temp_word.w);
151  T_WAIT_UNTIL(10);
152  return;
153 }
154 
155 /*LD (DE),A*/
156 static void op_0x12(void)
157 {
159  WRITE_MEM((DE),temp_byte,4);
160  T_WAIT_UNTIL(7);
161  return;
162 }
163 
164 /*INC DE*/
165 static void op_0x13(void)
166 {
167  INC16(DE);
168  T_WAIT_UNTIL(6);
169  return;
170 }
171 
172 /*INC D*/
173 static void op_0x14(void)
174 {
175  INC(D);
176  T_WAIT_UNTIL(4);
177  return;
178 }
179 
180 /*DEC D*/
181 static void op_0x15(void)
182 {
183  DEC(D);
184  T_WAIT_UNTIL(4);
185  return;
186 }
187 
188 /*LD D,#*/
189 static void op_0x16(void)
190 {
191  temp_byte=READ_OP();
192  LD(D,temp_byte);
193  T_WAIT_UNTIL(7);
194  return;
195 }
196 
197 /*RLA*/
198 static void op_0x17(void)
199 {
200  RLA();
201  T_WAIT_UNTIL(4);
202  return;
203 }
204 
205 /*JR %*/
206 static void op_0x18(void)
207 {
208  temp_byte=READ_OP();
209  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
210  JR(temp_byte_s);
211  T_WAIT_UNTIL(12);
212  return;
213 }
214 
215 /*ADD HL,DE*/
216 static void op_0x19(void)
217 {
218  ADD16(HL,DE);
219  T_WAIT_UNTIL(11);
220  return;
221 }
222 
223 /*LD A,(DE)*/
224 static void op_0x1a(void)
225 {
226  READ_MEM(temp_byte,(DE),4);
228  T_WAIT_UNTIL(7);
229  return;
230 }
231 
232 /*DEC DE*/
233 static void op_0x1b(void)
234 {
235  DEC16(DE);
236  T_WAIT_UNTIL(6);
237  return;
238 }
239 
240 /*INC E*/
241 static void op_0x1c(void)
242 {
243  INC(E);
244  T_WAIT_UNTIL(4);
245  return;
246 }
247 
248 /*DEC E*/
249 static void op_0x1d(void)
250 {
251  DEC(E);
252  T_WAIT_UNTIL(4);
253  return;
254 }
255 
256 /*LD E,#*/
257 static void op_0x1e(void)
258 {
259  temp_byte=READ_OP();
260  LD(E,temp_byte);
261  T_WAIT_UNTIL(7);
262  return;
263 }
264 
265 /*RRA*/
266 static void op_0x1f(void)
267 {
268  RRA();
269  T_WAIT_UNTIL(4);
270  return;
271 }
272 
273 /*JR NZ,%*/
274 static void op_0x20(void)
275 {
276  temp_byte=READ_OP();
277  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
278  if(!(F & FLAG_Z)) {
279  JR(temp_byte_s);
280  T_WAIT_UNTIL(12);
281  }
282  else { T_WAIT_UNTIL(7);}
283  return;
284 }
285 
286 /*LD HL,@*/
287 static void op_0x21(void)
288 {
289  temp_word.b.l=READ_OP();
290  temp_word.b.h=READ_OP();
291  LD16(HL,temp_word.w);
292  T_WAIT_UNTIL(10);
293  return;
294 }
295 
296 /*LD (@),HL*/
297 static void op_0x22(void)
298 {
299  temp_addr.b.l=READ_OP();
300  temp_addr.b.h=READ_OP();
302  WRITE_MEM(temp_addr.w,temp_word.b.l,10);
303  WRITE_MEM(temp_addr.w+1,temp_word.b.h,13);
304  T_WAIT_UNTIL(16);
305  return;
306 }
307 
308 /*INC HL*/
309 static void op_0x23(void)
310 {
311  INC16(HL);
312  T_WAIT_UNTIL(6);
313  return;
314 }
315 
316 /*INC H*/
317 static void op_0x24(void)
318 {
319  INC(H);
320  T_WAIT_UNTIL(4);
321  return;
322 }
323 
324 /*DEC H*/
325 static void op_0x25(void)
326 {
327  DEC(H);
328  T_WAIT_UNTIL(4);
329  return;
330 }
331 
332 /*LD H,#*/
333 static void op_0x26(void)
334 {
335  temp_byte=READ_OP();
336  LD(H,temp_byte);
337  T_WAIT_UNTIL(7);
338  return;
339 }
340 
341 /*DAA*/
342 static void op_0x27(void)
343 {
344  DAA();
345  T_WAIT_UNTIL(4);
346  return;
347 }
348 
349 /*JR Z,%*/
350 static void op_0x28(void)
351 {
352  temp_byte=READ_OP();
353  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
354  if(F & FLAG_Z) {
355  JR(temp_byte_s);
356  T_WAIT_UNTIL(12);
357  }
358  else { T_WAIT_UNTIL(7);}
359  return;
360 }
361 
362 /*ADD HL,HL*/
363 static void op_0x29(void)
364 {
365  ADD16(HL,HL);
366  T_WAIT_UNTIL(11);
367  return;
368 }
369 
370 /*LD HL,(@)*/
371 static void op_0x2a(void)
372 {
373  temp_addr.b.l=READ_OP();
374  temp_addr.b.h=READ_OP();
375  READ_MEM(temp_word.b.l,temp_addr.w,10);
376  READ_MEM(temp_word.b.h,temp_addr.w+1,13);
378  T_WAIT_UNTIL(16);
379  return;
380 }
381 
382 /*DEC HL*/
383 static void op_0x2b(void)
384 {
385  DEC16(HL);
386  T_WAIT_UNTIL(6);
387  return;
388 }
389 
390 /*INC L*/
391 static void op_0x2c(void)
392 {
393  INC(L);
394  T_WAIT_UNTIL(4);
395  return;
396 }
397 
398 /*DEC L*/
399 static void op_0x2d(void)
400 {
401  DEC(L);
402  T_WAIT_UNTIL(4);
403  return;
404 }
405 
406 /*LD L,#*/
407 static void op_0x2e(void)
408 {
409  temp_byte=READ_OP();
410  LD(L,temp_byte);
411  T_WAIT_UNTIL(7);
412  return;
413 }
414 
415 /*CPL*/
416 static void op_0x2f(void)
417 {
418  CPL();
419  T_WAIT_UNTIL(4);
420  return;
421 }
422 
423 /*JR NC,%*/
424 static void op_0x30(void)
425 {
426  temp_byte=READ_OP();
427  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
428  if(!(F & FLAG_C)) {
429  JR(temp_byte_s);
430  T_WAIT_UNTIL(12);
431  }
432  else { T_WAIT_UNTIL(7);}
433  return;
434 }
435 
436 /*LD SP,@*/
437 static void op_0x31(void)
438 {
439  temp_word.b.l=READ_OP();
440  temp_word.b.h=READ_OP();
441  LD16(SP,temp_word.w);
442  T_WAIT_UNTIL(10);
443  return;
444 }
445 
446 /*LD (@),A*/
447 static void op_0x32(void)
448 {
449  temp_addr.b.l=READ_OP();
450  temp_addr.b.h=READ_OP();
453  T_WAIT_UNTIL(13);
454  return;
455 }
456 
457 /*INC SP*/
458 static void op_0x33(void)
459 {
460  INC16(SP);
461  T_WAIT_UNTIL(6);
462  return;
463 }
464 
465 /*INC (HL)*/
466 static void op_0x34(void)
467 {
468  READ_MEM(temp_byte,(HL),4);
469  INC(temp_byte);
470  WRITE_MEM((HL),temp_byte,8);
471  T_WAIT_UNTIL(11);
472  return;
473 }
474 
475 /*DEC (HL)*/
476 static void op_0x35(void)
477 {
478  READ_MEM(temp_byte,(HL),4);
479  DEC(temp_byte);
480  WRITE_MEM((HL),temp_byte,8);
481  T_WAIT_UNTIL(11);
482  return;
483 }
484 
485 /*LD (HL),#*/
486 static void op_0x36(void)
487 {
488  temp_byte=READ_OP();
490  WRITE_MEM((HL),temp_byte,7);
491  T_WAIT_UNTIL(10);
492  return;
493 }
494 
495 /*SCF*/
496 static void op_0x37(void)
497 {
498  SCF();
499  T_WAIT_UNTIL(4);
500  return;
501 }
502 
503 /*JR C,%*/
504 static void op_0x38(void)
505 {
506  temp_byte=READ_OP();
507  temp_byte_s=(temp_byte & 0x80)? -(((~temp_byte) & 0x7f)+1): temp_byte;
508  if(F & FLAG_C) {
509  JR(temp_byte_s);
510  T_WAIT_UNTIL(12);
511  }
512  else { T_WAIT_UNTIL(7);}
513  return;
514 }
515 
516 /*ADD HL,SP*/
517 static void op_0x39(void)
518 {
519  ADD16(HL,SP);
520  T_WAIT_UNTIL(11);
521  return;
522 }
523 
524 /*LD A,(@)*/
525 static void op_0x3a(void)
526 {
527  temp_addr.b.l=READ_OP();
528  temp_addr.b.h=READ_OP();
531  T_WAIT_UNTIL(13);
532  return;
533 }
534 
535 /*DEC SP*/
536 static void op_0x3b(void)
537 {
538  DEC16(SP);
539  T_WAIT_UNTIL(6);
540  return;
541 }
542 
543 /*INC A*/
544 static void op_0x3c(void)
545 {
546  INC(A);
547  T_WAIT_UNTIL(4);
548  return;
549 }
550 
551 /*DEC A*/
552 static void op_0x3d(void)
553 {
554  DEC(A);
555  T_WAIT_UNTIL(4);
556  return;
557 }
558 
559 /*LD A,#*/
560 static void op_0x3e(void)
561 {
562  temp_byte=READ_OP();
563  LD(A,temp_byte);
564  T_WAIT_UNTIL(7);
565  return;
566 }
567 
568 /*CCF*/
569 static void op_0x3f(void)
570 {
571  CCF();
572  T_WAIT_UNTIL(4);
573  return;
574 }
575 
576 /*LD B,B*/
577 static void op_0x40(void)
578 {
579  LD(B,B);
580  T_WAIT_UNTIL(4);
581  return;
582 }
583 
584 /*LD B,C*/
585 static void op_0x41(void)
586 {
587  LD(B,C);
588  T_WAIT_UNTIL(4);
589  return;
590 }
591 
592 /*LD B,D*/
593 static void op_0x42(void)
594 {
595  LD(B,D);
596  T_WAIT_UNTIL(4);
597  return;
598 }
599 
600 /*LD B,E*/
601 static void op_0x43(void)
602 {
603  LD(B,E);
604  T_WAIT_UNTIL(4);
605  return;
606 }
607 
608 /*LD B,H*/
609 static void op_0x44(void)
610 {
611  LD(B,H);
612  T_WAIT_UNTIL(4);
613  return;
614 }
615 
616 /*LD B,L*/
617 static void op_0x45(void)
618 {
619  LD(B,L);
620  T_WAIT_UNTIL(4);
621  return;
622 }
623 
624 /*LD B,(HL)*/
625 static void op_0x46(void)
626 {
627  READ_MEM(temp_byte,(HL),4);
628  LD(B,temp_byte);
629  T_WAIT_UNTIL(7);
630  return;
631 }
632 
633 /*LD B,A*/
634 static void op_0x47(void)
635 {
636  LD(B,A);
637  T_WAIT_UNTIL(4);
638  return;
639 }
640 
641 /*LD C,B*/
642 static void op_0x48(void)
643 {
644  LD(C,B);
645  T_WAIT_UNTIL(4);
646  return;
647 }
648 
649 /*LD C,C*/
650 static void op_0x49(void)
651 {
652  LD(C,C);
653  T_WAIT_UNTIL(4);
654  return;
655 }
656 
657 /*LD C,D*/
658 static void op_0x4a(void)
659 {
660  LD(C,D);
661  T_WAIT_UNTIL(4);
662  return;
663 }
664 
665 /*LD C,E*/
666 static void op_0x4b(void)
667 {
668  LD(C,E);
669  T_WAIT_UNTIL(4);
670  return;
671 }
672 
673 /*LD C,H*/
674 static void op_0x4c(void)
675 {
676  LD(C,H);
677  T_WAIT_UNTIL(4);
678  return;
679 }
680 
681 /*LD C,L*/
682 static void op_0x4d(void)
683 {
684  LD(C,L);
685  T_WAIT_UNTIL(4);
686  return;
687 }
688 
689 /*LD C,(HL)*/
690 static void op_0x4e(void)
691 {
692  READ_MEM(temp_byte,(HL),4);
693  LD(C,temp_byte);
694  T_WAIT_UNTIL(7);
695  return;
696 }
697 
698 /*LD C,A*/
699 static void op_0x4f(void)
700 {
701  LD(C,A);
702  T_WAIT_UNTIL(4);
703  return;
704 }
705 
706 /*LD D,B*/
707 static void op_0x50(void)
708 {
709  LD(D,B);
710  T_WAIT_UNTIL(4);
711  return;
712 }
713 
714 /*LD D,C*/
715 static void op_0x51(void)
716 {
717  LD(D,C);
718  T_WAIT_UNTIL(4);
719  return;
720 }
721 
722 /*LD D,D*/
723 static void op_0x52(void)
724 {
725  LD(D,D);
726  T_WAIT_UNTIL(4);
727  return;
728 }
729 
730 /*LD D,E*/
731 static void op_0x53(void)
732 {
733  LD(D,E);
734  T_WAIT_UNTIL(4);
735  return;
736 }
737 
738 /*LD D,H*/
739 static void op_0x54(void)
740 {
741  LD(D,H);
742  T_WAIT_UNTIL(4);
743  return;
744 }
745 
746 /*LD D,L*/
747 static void op_0x55(void)
748 {
749  LD(D,L);
750  T_WAIT_UNTIL(4);
751  return;
752 }
753 
754 /*LD D,(HL)*/
755 static void op_0x56(void)
756 {
757  READ_MEM(temp_byte,(HL),4);
758  LD(D,temp_byte);
759  T_WAIT_UNTIL(7);
760  return;
761 }
762 
763 /*LD D,A*/
764 static void op_0x57(void)
765 {
766  LD(D,A);
767  T_WAIT_UNTIL(4);
768  return;
769 }
770 
771 /*LD E,B*/
772 static void op_0x58(void)
773 {
774  LD(E,B);
775  T_WAIT_UNTIL(4);
776  return;
777 }
778 
779 /*LD E,C*/
780 static void op_0x59(void)
781 {
782  LD(E,C);
783  T_WAIT_UNTIL(4);
784  return;
785 }
786 
787 /*LD E,D*/
788 static void op_0x5a(void)
789 {
790  LD(E,D);
791  T_WAIT_UNTIL(4);
792  return;
793 }
794 
795 /*LD E,E*/
796 static void op_0x5b(void)
797 {
798  LD(E,E);
799  T_WAIT_UNTIL(4);
800  return;
801 }
802 
803 /*LD E,H*/
804 static void op_0x5c(void)
805 {
806  LD(E,H);
807  T_WAIT_UNTIL(4);
808  return;
809 }
810 
811 /*LD E,L*/
812 static void op_0x5d(void)
813 {
814  LD(E,L);
815  T_WAIT_UNTIL(4);
816  return;
817 }
818 
819 /*LD E,(HL)*/
820 static void op_0x5e(void)
821 {
822  READ_MEM(temp_byte,(HL),4);
823  LD(E,temp_byte);
824  T_WAIT_UNTIL(7);
825  return;
826 }
827 
828 /*LD E,A*/
829 static void op_0x5f(void)
830 {
831  LD(E,A);
832  T_WAIT_UNTIL(4);
833  return;
834 }
835 
836 /*LD H,B*/
837 static void op_0x60(void)
838 {
839  LD(H,B);
840  T_WAIT_UNTIL(4);
841  return;
842 }
843 
844 /*LD H,C*/
845 static void op_0x61(void)
846 {
847  LD(H,C);
848  T_WAIT_UNTIL(4);
849  return;
850 }
851 
852 /*LD H,D*/
853 static void op_0x62(void)
854 {
855  LD(H,D);
856  T_WAIT_UNTIL(4);
857  return;
858 }
859 
860 /*LD H,E*/
861 static void op_0x63(void)
862 {
863  LD(H,E);
864  T_WAIT_UNTIL(4);
865  return;
866 }
867 
868 /*LD H,H*/
869 static void op_0x64(void)
870 {
871  LD(H,H);
872  T_WAIT_UNTIL(4);
873  return;
874 }
875 
876 /*LD H,L*/
877 static void op_0x65(void)
878 {
879  LD(H,L);
880  T_WAIT_UNTIL(4);
881  return;
882 }
883 
884 /*LD H,(HL)*/
885 static void op_0x66(void)
886 {
887  READ_MEM(temp_byte,(HL),4);
888  LD(H,temp_byte);
889  T_WAIT_UNTIL(7);
890  return;
891 }
892 
893 /*LD H,A*/
894 static void op_0x67(void)
895 {
896  LD(H,A);
897  T_WAIT_UNTIL(4);
898  return;
899 }
900 
901 /*LD L,B*/
902 static void op_0x68(void)
903 {
904  LD(L,B);
905  T_WAIT_UNTIL(4);
906  return;
907 }
908 
909 /*LD L,C*/
910 static void op_0x69(void)
911 {
912  LD(L,C);
913  T_WAIT_UNTIL(4);
914  return;
915 }
916 
917 /*LD L,D*/
918 static void op_0x6a(void)
919 {
920  LD(L,D);
921  T_WAIT_UNTIL(4);
922  return;
923 }
924 
925 /*LD L,E*/
926 static void op_0x6b(void)
927 {
928  LD(L,E);
929  T_WAIT_UNTIL(4);
930  return;
931 }
932 
933 /*LD L,H*/
934 static void op_0x6c(void)
935 {
936  LD(L,H);
937  T_WAIT_UNTIL(4);
938  return;
939 }
940 
941 /*LD L,L*/
942 static void op_0x6d(void)
943 {
944  LD(L,L);
945  T_WAIT_UNTIL(4);
946  return;
947 }
948 
949 /*LD L,(HL)*/
950 static void op_0x6e(void)
951 {
952  READ_MEM(temp_byte,(HL),4);
953  LD(L,temp_byte);
954  T_WAIT_UNTIL(7);
955  return;
956 }
957 
958 /*LD L,A*/
959 static void op_0x6f(void)
960 {
961  LD(L,A);
962  T_WAIT_UNTIL(4);
963  return;
964 }
965 
966 /*LD (HL),B*/
967 static void op_0x70(void)
968 {
969  LD(temp_byte,B);
970  WRITE_MEM((HL),temp_byte,4);
971  T_WAIT_UNTIL(7);
972  return;
973 }
974 
975 /*LD (HL),C*/
976 static void op_0x71(void)
977 {
978  LD(temp_byte,C);
979  WRITE_MEM((HL),temp_byte,4);
980  T_WAIT_UNTIL(7);
981  return;
982 }
983 
984 /*LD (HL),D*/
985 static void op_0x72(void)
986 {
987  LD(temp_byte,D);
988  WRITE_MEM((HL),temp_byte,4);
989  T_WAIT_UNTIL(7);
990  return;
991 }
992 
993 /*LD (HL),E*/
994 static void op_0x73(void)
995 {
996  LD(temp_byte,E);
997  WRITE_MEM((HL),temp_byte,4);
998  T_WAIT_UNTIL(7);
999  return;
1000 }
1001 
1002 /*LD (HL),H*/
1003 static void op_0x74(void)
1004 {
1005  LD(temp_byte,H);
1006  WRITE_MEM((HL),temp_byte,4);
1007  T_WAIT_UNTIL(7);
1008  return;
1009 }
1010 
1011 /*LD (HL),L*/
1012 static void op_0x75(void)
1013 {
1014  LD(temp_byte,L);
1015  WRITE_MEM((HL),temp_byte,4);
1016  T_WAIT_UNTIL(7);
1017  return;
1018 }
1019 
1020 /*HALT*/
1021 static void op_0x76(void)
1022 {
1023  HALT();
1024  T_WAIT_UNTIL(4);
1025  return;
1026 }
1027 
1028 /*LD (HL),A*/
1029 static void op_0x77(void)
1030 {
1031  LD(temp_byte,A);
1032  WRITE_MEM((HL),temp_byte,4);
1033  T_WAIT_UNTIL(7);
1034  return;
1035 }
1036 
1037 /*LD A,B*/
1038 static void op_0x78(void)
1039 {
1040  LD(A,B);
1041  T_WAIT_UNTIL(4);
1042  return;
1043 }
1044 
1045 /*LD A,C*/
1046 static void op_0x79(void)
1047 {
1048  LD(A,C);
1049  T_WAIT_UNTIL(4);
1050  return;
1051 }
1052 
1053 /*LD A,D*/
1054 static void op_0x7a(void)
1055 {
1056  LD(A,D);
1057  T_WAIT_UNTIL(4);
1058  return;
1059 }
1060 
1061 /*LD A,E*/
1062 static void op_0x7b(void)
1063 {
1064  LD(A,E);
1065  T_WAIT_UNTIL(4);
1066  return;
1067 }
1068 
1069 /*LD A,H*/
1070 static void op_0x7c(void)
1071 {
1072  LD(A,H);
1073  T_WAIT_UNTIL(4);
1074  return;
1075 }
1076 
1077 /*LD A,L*/
1078 static void op_0x7d(void)
1079 {
1080  LD(A,L);
1081  T_WAIT_UNTIL(4);
1082  return;
1083 }
1084 
1085 /*LD A,(HL)*/
1086 static void op_0x7e(void)
1087 {
1088  READ_MEM(temp_byte,(HL),4);
1089  LD(A,temp_byte);
1090  T_WAIT_UNTIL(7);
1091  return;
1092 }
1093 
1094 /*LD A,A*/
1095 static void op_0x7f(void)
1096 {
1097  LD(A,A);
1098  T_WAIT_UNTIL(4);
1099  return;
1100 }
1101 
1102 /*ADD A,B*/
1103 static void op_0x80(void)
1104 {
1105  ADD(A,B);
1106  T_WAIT_UNTIL(4);
1107  return;
1108 }
1109 
1110 /*ADD A,C*/
1111 static void op_0x81(void)
1112 {
1113  ADD(A,C);
1114  T_WAIT_UNTIL(4);
1115  return;
1116 }
1117 
1118 /*ADD A,D*/
1119 static void op_0x82(void)
1120 {
1121  ADD(A,D);
1122  T_WAIT_UNTIL(4);
1123  return;
1124 }
1125 
1126 /*ADD A,E*/
1127 static void op_0x83(void)
1128 {
1129  ADD(A,E);
1130  T_WAIT_UNTIL(4);
1131  return;
1132 }
1133 
1134 /*ADD A,H*/
1135 static void op_0x84(void)
1136 {
1137  ADD(A,H);
1138  T_WAIT_UNTIL(4);
1139  return;
1140 }
1141 
1142 /*ADD A,L*/
1143 static void op_0x85(void)
1144 {
1145  ADD(A,L);
1146  T_WAIT_UNTIL(4);
1147  return;
1148 }
1149 
1150 /*ADD A,(HL)*/
1151 static void op_0x86(void)
1152 {
1153  READ_MEM(temp_byte,(HL),4);
1154  ADD(A,temp_byte);
1155  T_WAIT_UNTIL(7);
1156  return;
1157 }
1158 
1159 /*ADD A,A*/
1160 static void op_0x87(void)
1161 {
1162  ADD(A,A);
1163  T_WAIT_UNTIL(4);
1164  return;
1165 }
1166 
1167 /*ADC A,B*/
1168 static void op_0x88(void)
1169 {
1170  ADC(A,B);
1171  T_WAIT_UNTIL(4);
1172  return;
1173 }
1174 
1175 /*ADC A,C*/
1176 static void op_0x89(void)
1177 {
1178  ADC(A,C);
1179  T_WAIT_UNTIL(4);
1180  return;
1181 }
1182 
1183 /*ADC A,D*/
1184 static void op_0x8a(void)
1185 {
1186  ADC(A,D);
1187  T_WAIT_UNTIL(4);
1188  return;
1189 }
1190 
1191 /*ADC A,E*/
1192 static void op_0x8b(void)
1193 {
1194  ADC(A,E);
1195  T_WAIT_UNTIL(4);
1196  return;
1197 }
1198 
1199 /*ADC A,H*/
1200 static void op_0x8c(void)
1201 {
1202  ADC(A,H);
1203  T_WAIT_UNTIL(4);
1204  return;
1205 }
1206 
1207 /*ADC A,L*/
1208 static void op_0x8d(void)
1209 {
1210  ADC(A,L);
1211  T_WAIT_UNTIL(4);
1212  return;
1213 }
1214 
1215 /*ADC A,(HL)*/
1216 static void op_0x8e(void)
1217 {
1218  READ_MEM(temp_byte,(HL),4);
1219  ADC(A,temp_byte);
1220  T_WAIT_UNTIL(7);
1221  return;
1222 }
1223 
1224 /*ADC A,A*/
1225 static void op_0x8f(void)
1226 {
1227  ADC(A,A);
1228  T_WAIT_UNTIL(4);
1229  return;
1230 }
1231 
1232 /*SUB B*/
1233 static void op_0x90(void)
1234 {
1235  SUB(B);
1236  T_WAIT_UNTIL(4);
1237  return;
1238 }
1239 
1240 /*SUB C*/
1241 static void op_0x91(void)
1242 {
1243  SUB(C);
1244  T_WAIT_UNTIL(4);
1245  return;
1246 }
1247 
1248 /*SUB D*/
1249 static void op_0x92(void)
1250 {
1251  SUB(D);
1252  T_WAIT_UNTIL(4);
1253  return;
1254 }
1255 
1256 /*SUB E*/
1257 static void op_0x93(void)
1258 {
1259  SUB(E);
1260  T_WAIT_UNTIL(4);
1261  return;
1262 }
1263 
1264 /*SUB H*/
1265 static void op_0x94(void)
1266 {
1267  SUB(H);
1268  T_WAIT_UNTIL(4);
1269  return;
1270 }
1271 
1272 /*SUB L*/
1273 static void op_0x95(void)
1274 {
1275  SUB(L);
1276  T_WAIT_UNTIL(4);
1277  return;
1278 }
1279 
1280 /*SUB (HL)*/
1281 static void op_0x96(void)
1282 {
1283  READ_MEM(temp_byte,(HL),4);
1284  SUB(temp_byte);
1285  T_WAIT_UNTIL(7);
1286  return;
1287 }
1288 
1289 /*SUB A*/
1290 static void op_0x97(void)
1291 {
1292  SUB(A);
1293  T_WAIT_UNTIL(4);
1294  return;
1295 }
1296 
1297 /*SBC A,B*/
1298 static void op_0x98(void)
1299 {
1300  SBC(A,B);
1301  T_WAIT_UNTIL(4);
1302  return;
1303 }
1304 
1305 /*SBC A,C*/
1306 static void op_0x99(void)
1307 {
1308  SBC(A,C);
1309  T_WAIT_UNTIL(4);
1310  return;
1311 }
1312 
1313 /*SBC A,D*/
1314 static void op_0x9a(void)
1315 {
1316  SBC(A,D);
1317  T_WAIT_UNTIL(4);
1318  return;
1319 }
1320 
1321 /*SBC A,E*/
1322 static void op_0x9b(void)
1323 {
1324  SBC(A,E);
1325  T_WAIT_UNTIL(4);
1326  return;
1327 }
1328 
1329 /*SBC A,H*/
1330 static void op_0x9c(void)
1331 {
1332  SBC(A,H);
1333  T_WAIT_UNTIL(4);
1334  return;
1335 }
1336 
1337 /*SBC A,L*/
1338 static void op_0x9d(void)
1339 {
1340  SBC(A,L);
1341  T_WAIT_UNTIL(4);
1342  return;
1343 }
1344 
1345 /*SBC A,(HL)*/
1346 static void op_0x9e(void)
1347 {
1348  READ_MEM(temp_byte,(HL),4);
1349  SBC(A,temp_byte);
1350  T_WAIT_UNTIL(7);
1351  return;
1352 }
1353 
1354 /*SBC A,A*/
1355 static void op_0x9f(void)
1356 {
1357  SBC(A,A);
1358  T_WAIT_UNTIL(4);
1359  return;
1360 }
1361 
1362 /*AND B*/
1363 static void op_0xa0(void)
1364 {
1365  AND(B);
1366  T_WAIT_UNTIL(4);
1367  return;
1368 }
1369 
1370 /*AND C*/
1371 static void op_0xa1(void)
1372 {
1373  AND(C);
1374  T_WAIT_UNTIL(4);
1375  return;
1376 }
1377 
1378 /*AND D*/
1379 static void op_0xa2(void)
1380 {
1381  AND(D);
1382  T_WAIT_UNTIL(4);
1383  return;
1384 }
1385 
1386 /*AND E*/
1387 static void op_0xa3(void)
1388 {
1389  AND(E);
1390  T_WAIT_UNTIL(4);
1391  return;
1392 }
1393 
1394 /*AND H*/
1395 static void op_0xa4(void)
1396 {
1397  AND(H);
1398  T_WAIT_UNTIL(4);
1399  return;
1400 }
1401 
1402 /*AND L*/
1403 static void op_0xa5(void)
1404 {
1405  AND(L);
1406  T_WAIT_UNTIL(4);
1407  return;
1408 }
1409 
1410 /*AND (HL)*/
1411 static void op_0xa6(void)
1412 {
1413  READ_MEM(temp_byte,(HL),4);
1414  AND(temp_byte);
1415  T_WAIT_UNTIL(7);
1416  return;
1417 }
1418 
1419 /*AND A*/
1420 static void op_0xa7(void)
1421 {
1422  AND(A);
1423  T_WAIT_UNTIL(4);
1424  return;
1425 }
1426 
1427 /*XOR B*/
1428 static void op_0xa8(void)
1429 {
1430  XOR(B);
1431  T_WAIT_UNTIL(4);
1432  return;
1433 }
1434 
1435 /*XOR C*/
1436 static void op_0xa9(void)
1437 {
1438  XOR(C);
1439  T_WAIT_UNTIL(4);
1440  return;
1441 }
1442 
1443 /*XOR D*/
1444 static void op_0xaa(void)
1445 {
1446  XOR(D);
1447  T_WAIT_UNTIL(4);
1448  return;
1449 }
1450 
1451 /*XOR E*/
1452 static void op_0xab(void)
1453 {
1454  XOR(E);
1455  T_WAIT_UNTIL(4);
1456  return;
1457 }
1458 
1459 /*XOR H*/
1460 static void op_0xac(void)
1461 {
1462  XOR(H);
1463  T_WAIT_UNTIL(4);
1464  return;
1465 }
1466 
1467 /*XOR L*/
1468 static void op_0xad(void)
1469 {
1470  XOR(L);
1471  T_WAIT_UNTIL(4);
1472  return;
1473 }
1474 
1475 /*XOR (HL)*/
1476 static void op_0xae(void)
1477 {
1478  READ_MEM(temp_byte,(HL),4);
1479  XOR(temp_byte);
1480  T_WAIT_UNTIL(7);
1481  return;
1482 }
1483 
1484 /*XOR A*/
1485 static void op_0xaf(void)
1486 {
1487  XOR(A);
1488  T_WAIT_UNTIL(4);
1489  return;
1490 }
1491 
1492 /*OR B*/
1493 static void op_0xb0(void)
1494 {
1495  OR(B);
1496  T_WAIT_UNTIL(4);
1497  return;
1498 }
1499 
1500 /*OR C*/
1501 static void op_0xb1(void)
1502 {
1503  OR(C);
1504  T_WAIT_UNTIL(4);
1505  return;
1506 }
1507 
1508 /*OR D*/
1509 static void op_0xb2(void)
1510 {
1511  OR(D);
1512  T_WAIT_UNTIL(4);
1513  return;
1514 }
1515 
1516 /*OR E*/
1517 static void op_0xb3(void)
1518 {
1519  OR(E);
1520  T_WAIT_UNTIL(4);
1521  return;
1522 }
1523 
1524 /*OR H*/
1525 static void op_0xb4(void)
1526 {
1527  OR(H);
1528  T_WAIT_UNTIL(4);
1529  return;
1530 }
1531 
1532 /*OR L*/
1533 static void op_0xb5(void)
1534 {
1535  OR(L);
1536  T_WAIT_UNTIL(4);
1537  return;
1538 }
1539 
1540 /*OR (HL)*/
1541 static void op_0xb6(void)
1542 {
1543  READ_MEM(temp_byte,(HL),4);
1544  OR(temp_byte);
1545  T_WAIT_UNTIL(7);
1546  return;
1547 }
1548 
1549 /*OR A*/
1550 static void op_0xb7(void)
1551 {
1552  OR(A);
1553  T_WAIT_UNTIL(4);
1554  return;
1555 }
1556 
1557 /*CP B*/
1558 static void op_0xb8(void)
1559 {
1560  CP(B);
1561  T_WAIT_UNTIL(4);
1562  return;
1563 }
1564 
1565 /*CP C*/
1566 static void op_0xb9(void)
1567 {
1568  CP(C);
1569  T_WAIT_UNTIL(4);
1570  return;
1571 }
1572 
1573 /*CP D*/
1574 static void op_0xba(void)
1575 {
1576  CP(D);
1577  T_WAIT_UNTIL(4);
1578  return;
1579 }
1580 
1581 /*CP E*/
1582 static void op_0xbb(void)
1583 {
1584  CP(E);
1585  T_WAIT_UNTIL(4);
1586  return;
1587 }
1588 
1589 /*CP H*/
1590 static void op_0xbc(void)
1591 {
1592  CP(H);
1593  T_WAIT_UNTIL(4);
1594  return;
1595 }
1596 
1597 /*CP L*/
1598 static void op_0xbd(void)
1599 {
1600  CP(L);
1601  T_WAIT_UNTIL(4);
1602  return;
1603 }
1604 
1605 /*CP (HL)*/
1606 static void op_0xbe(void)
1607 {
1608  READ_MEM(temp_byte,(HL),4);
1609  CP(temp_byte);
1610  T_WAIT_UNTIL(7);
1611  return;
1612 }
1613 
1614 /*CP A*/
1615 static void op_0xbf(void)
1616 {
1617  CP(A);
1618  T_WAIT_UNTIL(4);
1619  return;
1620 }
1621 
1622 /*RET NZ*/
1623 static void op_0xc0(void)
1624 {
1625  if(!(F & FLAG_Z)) {
1626  RET(/*rd*/5,8);
1627  T_WAIT_UNTIL(11);
1628  }
1629  else { T_WAIT_UNTIL(5);}
1630  return;
1631 }
1632 
1633 /*POP BC*/
1634 static void op_0xc1(void)
1635 {
1636  POP(BC, /*rd*/4,7);
1637  T_WAIT_UNTIL(10);
1638  return;
1639 }
1640 
1641 /*JP NZ,@*/
1642 static void op_0xc2(void)
1643 {
1644  temp_word.b.l=READ_OP();
1645  temp_word.b.h=READ_OP();
1646  if(!(F & FLAG_Z)) {
1647  JP(temp_word.w);
1648  T_WAIT_UNTIL(10);
1649  }
1650  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1651  return;
1652 }
1653 
1654 /*JP @*/
1655 static void op_0xc3(void)
1656 {
1657  temp_word.b.l=READ_OP();
1658  temp_word.b.h=READ_OP();
1659  JP(temp_word.w);
1660  T_WAIT_UNTIL(10);
1661  return;
1662 }
1663 
1664 /*CALL NZ,@*/
1665 static void op_0xc4(void)
1666 {
1667  temp_word.b.l=READ_OP();
1668  temp_word.b.h=READ_OP();
1669  if(!(F & FLAG_Z)) {
1670  CALL(temp_word.w, /*wr*/11,14);
1671  T_WAIT_UNTIL(17);
1672  }
1673  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1674  return;
1675 }
1676 
1677 /*PUSH BC*/
1678 static void op_0xc5(void)
1679 {
1680  PUSH(BC, /*wr*/5,8);
1681  T_WAIT_UNTIL(11);
1682  return;
1683 }
1684 
1685 /*ADD A,#*/
1686 static void op_0xc6(void)
1687 {
1688  temp_byte=READ_OP();
1689  ADD(A,temp_byte);
1690  T_WAIT_UNTIL(7);
1691  return;
1692 }
1693 
1694 /*RST 0x00*/
1695 static void op_0xc7(void)
1696 {
1697  RST(0x00, /*wr*/5,8);
1698  T_WAIT_UNTIL(11);
1699  return;
1700 }
1701 
1702 /*RET Z*/
1703 static void op_0xc8(void)
1704 {
1705  if(F & FLAG_Z) {
1706  RET(/*rd*/5,8);
1707  T_WAIT_UNTIL(11);
1708  }
1709  else { T_WAIT_UNTIL(5);}
1710  return;
1711 }
1712 
1713 /*RET*/
1714 static void op_0xc9(void)
1715 {
1716  RET(/*rd*/4,7);
1717  T_WAIT_UNTIL(10);
1718  return;
1719 }
1720 
1721 /*JP Z,@*/
1722 static void op_0xca(void)
1723 {
1724  temp_word.b.l=READ_OP();
1725  temp_word.b.h=READ_OP();
1726  if(F & FLAG_Z) {
1727  JP(temp_word.w);
1728  T_WAIT_UNTIL(10);
1729  }
1730  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1731  return;
1732 }
1733 
1734 static void op_p_CB(void)
1735 {
1736  z80ex.prefix=0xCB;
1737  z80ex.noint_once=1;
1738 }
1739 
1740 /*CALL Z,@*/
1741 static void op_0xcc(void)
1742 {
1743  temp_word.b.l=READ_OP();
1744  temp_word.b.h=READ_OP();
1745  if(F & FLAG_Z) {
1746  CALL(temp_word.w, /*wr*/11,14);
1747  T_WAIT_UNTIL(17);
1748  }
1749  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1750  return;
1751 }
1752 
1753 /*CALL @*/
1754 static void op_0xcd(void)
1755 {
1756  temp_word.b.l=READ_OP();
1757  temp_word.b.h=READ_OP();
1758  CALL(temp_word.w, /*wr*/11,14);
1759  T_WAIT_UNTIL(17);
1760  return;
1761 }
1762 
1763 /*ADC A,#*/
1764 static void op_0xce(void)
1765 {
1766  temp_byte=READ_OP();
1767  ADC(A,temp_byte);
1768  T_WAIT_UNTIL(7);
1769  return;
1770 }
1771 
1772 /*RST 0x08*/
1773 static void op_0xcf(void)
1774 {
1775  RST(0x08, /*wr*/5,8);
1776  T_WAIT_UNTIL(11);
1777  return;
1778 }
1779 
1780 /*RET NC*/
1781 static void op_0xd0(void)
1782 {
1783  if(!(F & FLAG_C)) {
1784  RET(/*rd*/5,8);
1785  T_WAIT_UNTIL(11);
1786  }
1787  else { T_WAIT_UNTIL(5);}
1788  return;
1789 }
1790 
1791 /*POP DE*/
1792 static void op_0xd1(void)
1793 {
1794  POP(DE, /*rd*/4,7);
1795  T_WAIT_UNTIL(10);
1796  return;
1797 }
1798 
1799 /*JP NC,@*/
1800 static void op_0xd2(void)
1801 {
1802  temp_word.b.l=READ_OP();
1803  temp_word.b.h=READ_OP();
1804  if(!(F & FLAG_C)) {
1805  JP(temp_word.w);
1806  T_WAIT_UNTIL(10);
1807  }
1808  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1809  return;
1810 }
1811 
1812 /*OUT (#),A*/
1813 static void op_0xd3(void)
1814 {
1815  temp_word.w=(READ_OP() + ( A << 8 ));
1816  OUT_A(temp_word.w,A, /*wr*/8);
1817  T_WAIT_UNTIL(11);
1818  return;
1819 }
1820 
1821 /*CALL NC,@*/
1822 static void op_0xd4(void)
1823 {
1824  temp_word.b.l=READ_OP();
1825  temp_word.b.h=READ_OP();
1826  if(!(F & FLAG_C)) {
1827  CALL(temp_word.w, /*wr*/11,14);
1828  T_WAIT_UNTIL(17);
1829  }
1830  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1831  return;
1832 }
1833 
1834 /*PUSH DE*/
1835 static void op_0xd5(void)
1836 {
1837  PUSH(DE, /*wr*/5,8);
1838  T_WAIT_UNTIL(11);
1839  return;
1840 }
1841 
1842 /*SUB #*/
1843 static void op_0xd6(void)
1844 {
1845  temp_byte=READ_OP();
1846  SUB(temp_byte);
1847  T_WAIT_UNTIL(7);
1848  return;
1849 }
1850 
1851 /*RST 0x10*/
1852 static void op_0xd7(void)
1853 {
1854  RST(0x10, /*wr*/5,8);
1855  T_WAIT_UNTIL(11);
1856  return;
1857 }
1858 
1859 /*RET C*/
1860 static void op_0xd8(void)
1861 {
1862  if(F & FLAG_C) {
1863  RET(/*rd*/5,8);
1864  T_WAIT_UNTIL(11);
1865  }
1866  else { T_WAIT_UNTIL(5);}
1867  return;
1868 }
1869 
1870 /*EXX*/
1871 static void op_0xd9(void)
1872 {
1873  EXX();
1874  T_WAIT_UNTIL(4);
1875  return;
1876 }
1877 
1878 /*JP C,@*/
1879 static void op_0xda(void)
1880 {
1881  temp_word.b.l=READ_OP();
1882  temp_word.b.h=READ_OP();
1883  if(F & FLAG_C) {
1884  JP(temp_word.w);
1885  T_WAIT_UNTIL(10);
1886  }
1887  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1888  return;
1889 }
1890 
1891 /*IN A,(#)*/
1892 static void op_0xdb(void)
1893 {
1894  temp_word.w=(READ_OP() + ( A << 8 ));
1895  IN_A(A,temp_word.w, /*rd*/8);
1896  T_WAIT_UNTIL(11);
1897  return;
1898 }
1899 
1900 /*CALL C,@*/
1901 static void op_0xdc(void)
1902 {
1903  temp_word.b.l=READ_OP();
1904  temp_word.b.h=READ_OP();
1905  if(F & FLAG_C) {
1906  CALL(temp_word.w, /*wr*/11,14);
1907  T_WAIT_UNTIL(17);
1908  }
1909  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1910  return;
1911 }
1912 
1913 static void op_p_DD(void)
1914 {
1915  z80ex.prefix=0xDD;
1916  z80ex.noint_once=1;
1917 }
1918 
1919 /*SBC A,#*/
1920 static void op_0xde(void)
1921 {
1922  temp_byte=READ_OP();
1923  SBC(A,temp_byte);
1924  T_WAIT_UNTIL(7);
1925  return;
1926 }
1927 
1928 /*RST 0x18*/
1929 static void op_0xdf(void)
1930 {
1931  RST(0x18, /*wr*/5,8);
1932  T_WAIT_UNTIL(11);
1933  return;
1934 }
1935 
1936 /*RET PO*/
1937 static void op_0xe0(void)
1938 {
1939  if(!(F & FLAG_P)) {
1940  RET(/*rd*/5,8);
1941  T_WAIT_UNTIL(11);
1942  }
1943  else { T_WAIT_UNTIL(5);}
1944  return;
1945 }
1946 
1947 /*POP HL*/
1948 static void op_0xe1(void)
1949 {
1950  POP(HL, /*rd*/4,7);
1951  T_WAIT_UNTIL(10);
1952  return;
1953 }
1954 
1955 /*JP PO,@*/
1956 static void op_0xe2(void)
1957 {
1958  temp_word.b.l=READ_OP();
1959  temp_word.b.h=READ_OP();
1960  if(!(F & FLAG_P)) {
1961  JP(temp_word.w);
1962  T_WAIT_UNTIL(10);
1963  }
1964  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1965  return;
1966 }
1967 
1968 /*EX (SP),HL*/
1969 static void op_0xe3(void)
1970 {
1971  READ_MEM(temp_word.b.l,(SP),4);
1972  READ_MEM(temp_word.b.h,(SP+1),7);
1973  EX_MPTR(temp_word.w,HL);
1974  WRITE_MEM((SP),temp_word.b.l,11);
1975  WRITE_MEM((SP+1),temp_word.b.h,14);
1976  T_WAIT_UNTIL(19);
1977  return;
1978 }
1979 
1980 /*CALL PO,@*/
1981 static void op_0xe4(void)
1982 {
1983  temp_word.b.l=READ_OP();
1984  temp_word.b.h=READ_OP();
1985  if(!(F & FLAG_P)) {
1986  CALL(temp_word.w, /*wr*/11,14);
1987  T_WAIT_UNTIL(17);
1988  }
1989  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
1990  return;
1991 }
1992 
1993 /*PUSH HL*/
1994 static void op_0xe5(void)
1995 {
1996  PUSH(HL, /*wr*/5,8);
1997  T_WAIT_UNTIL(11);
1998  return;
1999 }
2000 
2001 /*AND #*/
2002 static void op_0xe6(void)
2003 {
2004  temp_byte=READ_OP();
2005  AND(temp_byte);
2006  T_WAIT_UNTIL(7);
2007  return;
2008 }
2009 
2010 /*RST 0x20*/
2011 static void op_0xe7(void)
2012 {
2013  RST(0x20, /*wr*/5,8);
2014  T_WAIT_UNTIL(11);
2015  return;
2016 }
2017 
2018 /*RET PE*/
2019 static void op_0xe8(void)
2020 {
2021  if(F & FLAG_P) {
2022  RET(/*rd*/5,8);
2023  T_WAIT_UNTIL(11);
2024  }
2025  else { T_WAIT_UNTIL(5);}
2026  return;
2027 }
2028 
2029 /*JP HL*/
2030 static void op_0xe9(void)
2031 {
2032  JP_NO_MPTR(HL);
2033  T_WAIT_UNTIL(4);
2034  return;
2035 }
2036 
2037 /*JP PE,@*/
2038 static void op_0xea(void)
2039 {
2040  temp_word.b.l=READ_OP();
2041  temp_word.b.h=READ_OP();
2042  if(F & FLAG_P) {
2043  JP(temp_word.w);
2044  T_WAIT_UNTIL(10);
2045  }
2046  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2047  return;
2048 }
2049 
2050 /*EX DE,HL*/
2051 static void op_0xeb(void)
2052 {
2053  EX(DE,HL);
2054  T_WAIT_UNTIL(4);
2055  return;
2056 }
2057 
2058 /*CALL PE,@*/
2059 static void op_0xec(void)
2060 {
2061  temp_word.b.l=READ_OP();
2062  temp_word.b.h=READ_OP();
2063  if(F & FLAG_P) {
2064  CALL(temp_word.w, /*wr*/11,14);
2065  T_WAIT_UNTIL(17);
2066  }
2067  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2068  return;
2069 }
2070 
2071 static void op_p_ED(void)
2072 {
2073  z80ex.prefix=0xED;
2074  z80ex.noint_once=1;
2075 }
2076 
2077 /*XOR #*/
2078 static void op_0xee(void)
2079 {
2080  temp_byte=READ_OP();
2081  XOR(temp_byte);
2082  T_WAIT_UNTIL(7);
2083  return;
2084 }
2085 
2086 /*RST 0x28*/
2087 static void op_0xef(void)
2088 {
2089  RST(0x28, /*wr*/5,8);
2090  T_WAIT_UNTIL(11);
2091  return;
2092 }
2093 
2094 /*RET P*/
2095 static void op_0xf0(void)
2096 {
2097  if(!(F & FLAG_S)) {
2098  RET(/*rd*/5,8);
2099  T_WAIT_UNTIL(11);
2100  }
2101  else { T_WAIT_UNTIL(5);}
2102  return;
2103 }
2104 
2105 /*POP AF*/
2106 static void op_0xf1(void)
2107 {
2108  POP(AF, /*rd*/4,7);
2109  T_WAIT_UNTIL(10);
2110  return;
2111 }
2112 
2113 /*JP P,@*/
2114 static void op_0xf2(void)
2115 {
2116  temp_word.b.l=READ_OP();
2117  temp_word.b.h=READ_OP();
2118  if(!(F & FLAG_S)) {
2119  JP(temp_word.w);
2120  T_WAIT_UNTIL(10);
2121  }
2122  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2123  return;
2124 }
2125 
2126 /*DI*/
2127 static void op_0xf3(void)
2128 {
2129  DI();
2130  T_WAIT_UNTIL(4);
2131  return;
2132 }
2133 
2134 /*CALL P,@*/
2135 static void op_0xf4(void)
2136 {
2137  temp_word.b.l=READ_OP();
2138  temp_word.b.h=READ_OP();
2139  if(!(F & FLAG_S)) {
2140  CALL(temp_word.w, /*wr*/11,14);
2141  T_WAIT_UNTIL(17);
2142  }
2143  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2144  return;
2145 }
2146 
2147 /*PUSH AF*/
2148 static void op_0xf5(void)
2149 {
2150  PUSH(AF, /*wr*/5,8);
2151  T_WAIT_UNTIL(11);
2152  return;
2153 }
2154 
2155 /*OR #*/
2156 static void op_0xf6(void)
2157 {
2158  temp_byte=READ_OP();
2159  OR(temp_byte);
2160  T_WAIT_UNTIL(7);
2161  return;
2162 }
2163 
2164 /*RST 0x30*/
2165 static void op_0xf7(void)
2166 {
2167  RST(0x30, /*wr*/5,8);
2168  T_WAIT_UNTIL(11);
2169  return;
2170 }
2171 
2172 /*RET M*/
2173 static void op_0xf8(void)
2174 {
2175  if(F & FLAG_S) {
2176  RET(/*rd*/5,8);
2177  T_WAIT_UNTIL(11);
2178  }
2179  else { T_WAIT_UNTIL(5);}
2180  return;
2181 }
2182 
2183 /*LD SP,HL*/
2184 static void op_0xf9(void)
2185 {
2186  LD16(SP,HL);
2187  T_WAIT_UNTIL(6);
2188  return;
2189 }
2190 
2191 /*JP M,@*/
2192 static void op_0xfa(void)
2193 {
2194  temp_word.b.l=READ_OP();
2195  temp_word.b.h=READ_OP();
2196  if(F & FLAG_S) {
2197  JP(temp_word.w);
2198  T_WAIT_UNTIL(10);
2199  }
2200  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2201  return;
2202 }
2203 
2204 /*EI*/
2205 static void op_0xfb(void)
2206 {
2207  EI();
2208  T_WAIT_UNTIL(4);
2209  return;
2210 }
2211 
2212 /*CALL M,@*/
2213 static void op_0xfc(void)
2214 {
2215  temp_word.b.l=READ_OP();
2216  temp_word.b.h=READ_OP();
2217  if(F & FLAG_S) {
2218  CALL(temp_word.w, /*wr*/11,14);
2219  T_WAIT_UNTIL(17);
2220  }
2221  else { T_WAIT_UNTIL(10);MEMPTR=temp_word.w;}
2222  return;
2223 }
2224 
2225 static void op_p_FD(void)
2226 {
2227  z80ex.prefix=0xFD;
2228  z80ex.noint_once=1;
2229 }
2230 
2231 /*CP #*/
2232 static void op_0xfe(void)
2233 {
2234  temp_byte=READ_OP();
2235  CP(temp_byte);
2236  T_WAIT_UNTIL(7);
2237  return;
2238 }
2239 
2240 /*RST 0x38*/
2241 static void op_0xff(void)
2242 {
2243  RST(0x38, /*wr*/5,8);
2244  T_WAIT_UNTIL(11);
2245  return;
2246 }
2247 
2248 
2249 
2250 
2251 static const z80ex_opcode_fn opcodes_base[0x100] = {
2252  op_0x00 , op_0x01 , op_0x02 , op_0x03 ,
2253  op_0x04 , op_0x05 , op_0x06 , op_0x07 ,
2254  op_0x08 , op_0x09 , op_0x0a , op_0x0b ,
2255  op_0x0c , op_0x0d , op_0x0e , op_0x0f ,
2256  op_0x10 , op_0x11 , op_0x12 , op_0x13 ,
2257  op_0x14 , op_0x15 , op_0x16 , op_0x17 ,
2258  op_0x18 , op_0x19 , op_0x1a , op_0x1b ,
2259  op_0x1c , op_0x1d , op_0x1e , op_0x1f ,
2260  op_0x20 , op_0x21 , op_0x22 , op_0x23 ,
2261  op_0x24 , op_0x25 , op_0x26 , op_0x27 ,
2262  op_0x28 , op_0x29 , op_0x2a , op_0x2b ,
2263  op_0x2c , op_0x2d , op_0x2e , op_0x2f ,
2264  op_0x30 , op_0x31 , op_0x32 , op_0x33 ,
2265  op_0x34 , op_0x35 , op_0x36 , op_0x37 ,
2266  op_0x38 , op_0x39 , op_0x3a , op_0x3b ,
2267  op_0x3c , op_0x3d , op_0x3e , op_0x3f ,
2268  op_0x40 , op_0x41 , op_0x42 , op_0x43 ,
2269  op_0x44 , op_0x45 , op_0x46 , op_0x47 ,
2270  op_0x48 , op_0x49 , op_0x4a , op_0x4b ,
2271  op_0x4c , op_0x4d , op_0x4e , op_0x4f ,
2272  op_0x50 , op_0x51 , op_0x52 , op_0x53 ,
2273  op_0x54 , op_0x55 , op_0x56 , op_0x57 ,
2274  op_0x58 , op_0x59 , op_0x5a , op_0x5b ,
2275  op_0x5c , op_0x5d , op_0x5e , op_0x5f ,
2276  op_0x60 , op_0x61 , op_0x62 , op_0x63 ,
2277  op_0x64 , op_0x65 , op_0x66 , op_0x67 ,
2278  op_0x68 , op_0x69 , op_0x6a , op_0x6b ,
2279  op_0x6c , op_0x6d , op_0x6e , op_0x6f ,
2280  op_0x70 , op_0x71 , op_0x72 , op_0x73 ,
2281  op_0x74 , op_0x75 , op_0x76 , op_0x77 ,
2282  op_0x78 , op_0x79 , op_0x7a , op_0x7b ,
2283  op_0x7c , op_0x7d , op_0x7e , op_0x7f ,
2284  op_0x80 , op_0x81 , op_0x82 , op_0x83 ,
2285  op_0x84 , op_0x85 , op_0x86 , op_0x87 ,
2286  op_0x88 , op_0x89 , op_0x8a , op_0x8b ,
2287  op_0x8c , op_0x8d , op_0x8e , op_0x8f ,
2288  op_0x90 , op_0x91 , op_0x92 , op_0x93 ,
2289  op_0x94 , op_0x95 , op_0x96 , op_0x97 ,
2290  op_0x98 , op_0x99 , op_0x9a , op_0x9b ,
2291  op_0x9c , op_0x9d , op_0x9e , op_0x9f ,
2292  op_0xa0 , op_0xa1 , op_0xa2 , op_0xa3 ,
2293  op_0xa4 , op_0xa5 , op_0xa6 , op_0xa7 ,
2294  op_0xa8 , op_0xa9 , op_0xaa , op_0xab ,
2295  op_0xac , op_0xad , op_0xae , op_0xaf ,
2296  op_0xb0 , op_0xb1 , op_0xb2 , op_0xb3 ,
2297  op_0xb4 , op_0xb5 , op_0xb6 , op_0xb7 ,
2298  op_0xb8 , op_0xb9 , op_0xba , op_0xbb ,
2299  op_0xbc , op_0xbd , op_0xbe , op_0xbf ,
2300  op_0xc0 , op_0xc1 , op_0xc2 , op_0xc3 ,
2301  op_0xc4 , op_0xc5 , op_0xc6 , op_0xc7 ,
2302  op_0xc8 , op_0xc9 , op_0xca , op_p_CB ,
2303  op_0xcc , op_0xcd , op_0xce , op_0xcf ,
2304  op_0xd0 , op_0xd1 , op_0xd2 , op_0xd3 ,
2305  op_0xd4 , op_0xd5 , op_0xd6 , op_0xd7 ,
2306  op_0xd8 , op_0xd9 , op_0xda , op_0xdb ,
2307  op_0xdc , op_p_DD , op_0xde , op_0xdf ,
2308  op_0xe0 , op_0xe1 , op_0xe2 , op_0xe3 ,
2309  op_0xe4 , op_0xe5 , op_0xe6 , op_0xe7 ,
2310  op_0xe8 , op_0xe9 , op_0xea , op_0xeb ,
2311  op_0xec , op_p_ED , op_0xee , op_0xef ,
2312  op_0xf0 , op_0xf1 , op_0xf2 , op_0xf3 ,
2313  op_0xf4 , op_0xf5 , op_0xf6 , op_0xf7 ,
2314  op_0xf8 , op_0xf9 , op_0xfa , op_0xfb ,
2315  op_0xfc , op_p_FD , op_0xfe , op_0xff
2316 };
RLCA
#define RLCA()
Definition: macros.h:911
FLAG_P
#define FLAG_P
Definition: macros.h:81
AND
#define AND(value)
Definition: macros.h:211
LD_A_FROM_ADDR_MPTR
#define LD_A_FROM_ADDR_MPTR(dst, src, addr)
Definition: macros.h:339
OR
#define OR(value)
Definition: macros.h:381
JP
#define JP(addr)
Definition: macros.h:369
LD
#define LD(dst, src)
Definition: macros.h:325
EI
#define EI()
Definition: macros.h:1028
BC
#define BC
Definition: macros.h:23
RRA
#define RRA()
Definition: macros.h:947
SCF
#define SCF()
Definition: macros.h:996
ADD
#define ADD(a, value)
Definition: macros.h:244
LD_A_TO_ADDR_MPTR
#define LD_A_TO_ADDR_MPTR(dst, src, addr)
Definition: macros.h:331
B
#define B
Definition: macros.h:21
OUT_A
#define OUT_A(port, reg, wr)
Definition: macros.h:394
INC
#define INC(value)
Definition: macros.h:313
T_WAIT_UNTIL
#define T_WAIT_UNTIL(t_state)
Definition: macros.h:119
XOR
#define XOR(value)
Definition: macros.h:547
IN_A
#define IN_A(reg, port, rd)
Definition: macros.h:409
EX_MPTR
#define EX_MPTR(rp1, rp2)
Definition: macros.h:983
F
#define F
Definition: macros.h:18
FLAG_C
#define FLAG_C
Definition: macros.h:79
temp_byte
#define temp_byte
Definition: z80ex.c:23
AF_
#define AF_
Definition: macros.h:35
SUB
#define SUB(value)
Definition: macros.h:535
EX
#define EX(rp1, rp2)
Definition: macros.h:978
CPL
#define CPL()
Definition: macros.h:989
PUSH
#define PUSH(rp, wr1, wr2)
Definition: macros.h:432
CCF
#define CCF()
Definition: macros.h:1003
DAA
#define DAA()
Definition: macros.h:955
temp_addr
#define temp_addr
Definition: z80ex.c:25
RRCA
#define RRCA()
Definition: macros.h:918
RET
#define RET(rd1, rd2)
Definition: macros.h:440
HL
#define HL
Definition: macros.h:31
E
#define E
Definition: macros.h:26
CALL
#define CALL(addr, wr1, wr2)
Definition: macros.h:281
SP
#define SP
Definition: macros.h:59
ADD16
#define ADD16(value1, value2)
Definition: macros.h:256
INC16
#define INC16(value)
Definition: macros.h:320
CP
#define CP(value)
Definition: macros.h:288
SBC
#define SBC(a, value)
Definition: macros.h:480
LD16
#define LD16(dst, src)
Definition: macros.h:345
JP_NO_MPTR
#define JP_NO_MPTR(addr)
Definition: macros.h:364
z80ex_opcode_fn
void(* z80ex_opcode_fn)(void)
Definition: z80ex.c:28
D
#define D
Definition: macros.h:25
EXX
#define EXX()
Definition: macros.h:1015
POP
#define POP(rp, rd1, rd2)
Definition: macros.h:423
WRITE_MEM
#define WRITE_MEM(addr, vbyte, t_state)
Definition: macros.h:161
LD_RP_FROM_ADDR_MPTR_16
#define LD_RP_FROM_ADDR_MPTR_16(dst, src, addr)
Definition: macros.h:358
RLA
#define RLA()
Definition: macros.h:939
temp_word
#define temp_word
Definition: z80ex.c:26
ADC
#define ADC(a, value)
Definition: macros.h:217
DEC16
#define DEC16(value)
Definition: macros.h:308
_z80_cpu_context::prefix
Z80EX_BYTE prefix
Definition: z80ex.h:163
H
#define H
Definition: macros.h:29
C
#define C
Definition: macros.h:22
DI
#define DI()
Definition: macros.h:1023
READ_OP
#define READ_OP()
Definition: macros.h:93
MEMPTR
#define MEMPTR
Definition: macros.h:75
DJNZ
#define DJNZ(offset, t1, t2)
Definition: macros.h:925
FLAG_S
#define FLAG_S
Definition: macros.h:87
LD_RP_TO_ADDR_MPTR_16
#define LD_RP_TO_ADDR_MPTR_16(dst, src, addr)
Definition: macros.h:351
DE
#define DE
Definition: macros.h:27
L
#define L
Definition: macros.h:30
HALT
#define HALT()
Definition: macros.h:1009
AF
#define AF
Definition: macros.h:19
temp_byte_s
#define temp_byte_s
Definition: z80ex.c:24
DEC
#define DEC(value)
Definition: macros.h:301
A
#define A
Definition: macros.h:17
JR
#define JR(offset)
Definition: macros.h:375
RST
#define RST(value, w1, w2)
Definition: macros.h:473
z80ex
Z80EX_CONTEXT z80ex
Definition: primo.c:37
FLAG_Z
#define FLAG_Z
Definition: macros.h:86
_z80_cpu_context::noint_once
int noint_once
Definition: z80ex.h:159
READ_MEM
#define READ_MEM(result, addr, t_state)
Definition: macros.h:147