Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /********************************************************************************/
  2. /*                                                                              */
  3. /* CZ80 XY opcode include source file                                           */
  4. /* C Z80 emulator version 0.91                                                  */
  5. /* Copyright 2004-2005 Stephane Dallongeville                                   */
  6. /*                                                                              */
  7. /********************************************************************************/
  8.  
  9. #if CZ80_USE_JUMPTABLE
  10.     goto *JumpTableXY[Opcode];
  11. #else
  12. switch (Opcode)
  13. {
  14. #endif
  15.  
  16.     OPXY(0x00): // NOP
  17.  
  18.     // 8 BITS LOAD
  19.  
  20.     OPXY(0x40): // LD   B,B
  21.     OPXY(0x49): // LD   C,C
  22.     OPXY(0x52): // LD   D,D
  23.     OPXY(0x5b): // LD   E,E
  24.     OPXY(0x64): // LD   H,H
  25.     OPXY(0x6d): // LD   L,L
  26.     OPXY(0x7f): // LD   A,A
  27.         goto OP_NOP;
  28.  
  29.     OPXY(0x41): // LD   B,C
  30.     OPXY(0x42): // LD   B,D
  31.     OPXY(0x43): // LD   B,E
  32.     OPXY(0x47): // LD   B,A
  33.  
  34.     OPXY(0x48): // LD   C,B
  35.     OPXY(0x4a): // LD   C,D
  36.     OPXY(0x4b): // LD   C,E
  37.     OPXY(0x4f): // LD   C,A
  38.  
  39.     OPXY(0x50): // LD   D,B
  40.     OPXY(0x51): // LD   D,C
  41.     OPXY(0x53): // LD   D,E
  42.     OPXY(0x57): // LD   D,A
  43.  
  44.     OPXY(0x58): // LD   E,B
  45.     OPXY(0x59): // LD   E,C
  46.     OPXY(0x5a): // LD   E,D
  47.     OPXY(0x5f): // LD   E,A
  48.  
  49.     OPXY(0x78): // LD   A,B
  50.     OPXY(0x79): // LD   A,C
  51.     OPXY(0x7a): // LD   A,D
  52.     OPXY(0x7b): // LD   A,E
  53.         goto OP_LD_R_R;
  54.  
  55.     OPXY(0x44): // LD   B,HX
  56.     OPXY(0x4c): // LD   C,HX
  57.     OPXY(0x54): // LD   D,HX
  58.     OPXY(0x5c): // LD   E,HX
  59.     OPXY(0x7c): // LD   A,HX
  60.         zR8((Opcode >> 3) & 7) = data->B.H;
  61.         RET(4)
  62.  
  63.     OPXY(0x45): // LD   B,LX
  64.     OPXY(0x4d): // LD   C,LX
  65.     OPXY(0x55): // LD   D,LX
  66.     OPXY(0x5d): // LD   E,LX
  67.     OPXY(0x7d): // LD   A,LX
  68.         zR8((Opcode >> 3) & 7) = data->B.L;
  69.         RET(4)
  70.  
  71.     OPXY(0x60): // LD   HX,B
  72.     OPXY(0x61): // LD   HX,C
  73.     OPXY(0x62): // LD   HX,D
  74.     OPXY(0x63): // LD   HX,E
  75.     OPXY(0x67): // LD   HX,A
  76.         data->B.H = zR8(Opcode & 7);
  77.         RET(4)
  78.  
  79.     OPXY(0x68): // LD   LX,B
  80.     OPXY(0x69): // LD   LX,C
  81.     OPXY(0x6a): // LD   LX,D
  82.     OPXY(0x6b): // LD   LX,E
  83.     OPXY(0x6f): // LD   LX,A
  84.         data->B.L = zR8(Opcode & 7);
  85.         RET(4)
  86.  
  87.     OPXY(0x65): // LD   HX,LX
  88.         data->B.H = data->B.L;
  89.         RET(4)
  90.  
  91.     OPXY(0x6c): // LD   LX,HX
  92.         data->B.L = data->B.H;
  93.         RET(4)
  94.  
  95.     OPXY(0x06): // LD   B,#imm
  96.     OPXY(0x0e): // LD   C,#imm
  97.     OPXY(0x16): // LD   D,#imm
  98.     OPXY(0x1e): // LD   E,#imm
  99.     OPXY(0x3e): // LD   A,#imm
  100.         goto OP_LD_R_imm;
  101.  
  102.     OPXY(0x26): // LD   HX,#imm
  103.         data->B.H = FETCH_BYTE;
  104.         RET(7)
  105.  
  106.     OPXY(0x2e): // LD   LX,#imm
  107.         data->B.L = FETCH_BYTE;
  108.         RET(7)
  109.  
  110.     OPXY(0x0a): // LD   A,(BC)
  111.         goto OP_LOAD_A_mBC;
  112.  
  113.     OPXY(0x1a): // LD   A,(DE)
  114.         goto OP_LOAD_A_mDE;
  115.  
  116.     OPXY(0x3a): // LD   A,(nn)
  117.         goto OP_LOAD_A_mNN;
  118.  
  119.     OPXY(0x02): // LD   (BC),A
  120.         goto OP_LOAD_mBC_A;
  121.  
  122.     OPXY(0x12): // LD   (DE),A
  123.         goto OP_LOAD_mDE_A;
  124.  
  125.     OPXY(0x32): // LD   (nn),A
  126.         goto OP_LOAD_mNN_A;
  127.  
  128.     {
  129.         uint16_t adr;
  130.  
  131.     OPXY(0x46): // LD   B,(IX+o)
  132.     OPXY(0x56): // LD   D,(IX+o)
  133.     OPXY(0x5e): // LD   E,(IX+o)
  134.     OPXY(0x66): // LD   H,(IX+o)
  135.     OPXY(0x6e): // LD   L,(IX+o)
  136.     OPXY(0x4e): // LD   C,(IX+o)
  137.     OPXY(0x7e): // LD   A,(IX+o)
  138.         PRE_IO
  139.         adr = data->W + FETCH_BYTE_S;
  140.         READ_BYTE(adr, zR8((Opcode >> 3) & 7))
  141.         POST_IO
  142.         RET(15)
  143.  
  144.     OPXY(0x70): // LD   (IX+o),B
  145.     OPXY(0x71): // LD   (IX+o),C
  146.     OPXY(0x72): // LD   (IX+o),D
  147.     OPXY(0x73): // LD   (IX+o),E
  148.     OPXY(0x74): // LD   (IX+o),H
  149.     OPXY(0x75): // LD   (IX+o),L
  150.     OPXY(0x77): // LD   (IX+o),A
  151.         PRE_IO
  152.         adr = data->W + FETCH_BYTE_S;
  153.         WRITE_BYTE(adr, zR8(Opcode & 7))
  154.         POST_IO
  155.         RET(15)
  156.  
  157.     OPXY(0x36): // LD   (IX+o),#imm
  158.         PRE_IO
  159.         adr = data->W + FETCH_BYTE_S;
  160.         WRITE_BYTE(adr, FETCH_BYTE)
  161.         POST_IO
  162.         RET(15)
  163.     }
  164.  
  165.     // 16 BITS LOAD
  166.  
  167.     OPXY(0x01): // LD   BC,nn
  168.     OPXY(0x11): // LD   DE,nn
  169.         goto OP_LOAD_RR_imm16;
  170.  
  171.     OPXY(0x21): // LD   IX,nn
  172.         FETCH_WORD(data->W)
  173.         RET(10)
  174.  
  175.     OPXY(0x31): // LD   SP,nn
  176.         goto OP_LOAD_SP_imm16;
  177.  
  178.     OPXY(0x2a): // LD   IX,(w)
  179.         goto OP_LD_xx_mNN;
  180.  
  181.     OPXY(0x22): // LD   (w),IX
  182.         goto OP_LD_mNN_xx;
  183.  
  184.     OPXY(0xf9): // LD   SP,IX
  185.         goto OP_LD_SP_xx;
  186.  
  187.  
  188.     // PUSH / POP
  189.  
  190.     OPXY(0xf1): // POP  AF
  191.         goto OP_POP_AF;
  192.  
  193.     OPXY(0xc1): // POP  BC
  194.     OPXY(0xd1): // POP  DE
  195.         goto OP_POP_RR;
  196.  
  197.     OPXY(0xe1): // POP  IX
  198.         goto OP_POP;
  199.  
  200.     OPXY(0xf5): // PUSH AF
  201.         goto OP_PUSH_AF;
  202.  
  203.     OPXY(0xc5): // PUSH BC
  204.     OPXY(0xd5): // PUSH DE
  205.         goto OP_PUSH_RR;
  206.  
  207.     OPXY(0xe5): // PUSH IX
  208.         goto OP_PUSH;
  209.  
  210.  
  211.     // EXCHANGE
  212.  
  213.     OPXY(0x08): // EX   AF,AF'
  214.        goto OP_EX_AF_AF2;
  215.  
  216.    OPXY(0xeb): // EX   DE,HL
  217.        goto OP_EX_DE_HL;
  218.  
  219.    OPXY(0xd9): // EXX
  220.        goto OP_EXX;
  221.  
  222.    OPXY(0xe3): // EX   (SP),IX
  223.        goto OP_EX_xx_mSP;
  224.  
  225.  
  226.    // 8 BITS ARITHMETIC
  227.    // INC
  228.  
  229.    OPXY(0x04): // INC  B
  230.    OPXY(0x0c): // INC  C
  231.    OPXY(0x14): // INC  D
  232.    OPXY(0x1c): // INC  E
  233.    OPXY(0x3c): // INC  A
  234.        goto OP_INC_R;
  235.  
  236.    OPXY(0x24): // INC  HX
  237.        data->B.H++;
  238.        zF = (zF & CZ80_CF) | SZXYHV_inc[data->B.H];
  239.        RET(4)
  240.  
  241.    OPXY(0x2c): // INC  LX
  242.        data->B.L++;
  243.        zF = (zF & CZ80_CF) | SZXYHV_inc[data->B.L];
  244.        RET(4)
  245.  
  246.    OPXY(0x34): // INC  (IX+o)
  247.        goto OP_INC_mIx;
  248.  
  249.    // DEC
  250.  
  251.    OPXY(0x05): // DEC  B
  252.    OPXY(0x0d): // DEC  C
  253.    OPXY(0x15): // DEC  D
  254.    OPXY(0x1d): // DEC  E
  255.    OPXY(0x3d): // DEC  A
  256.        goto OP_DEC_R;
  257.  
  258.    OPXY(0x25): // DEC  HX
  259.        data->B.H--;
  260.        zF = (zF & CZ80_CF) | SZXYHV_dec[data->B.H];
  261.        RET(4)
  262.  
  263.    OPXY(0x2d): // DEC  LX
  264.        data->B.L--;
  265.        zF = (zF & CZ80_CF) | SZXYHV_dec[data->B.L];
  266.        RET(4)
  267.  
  268.    OPXY(0x35): // DEC  (IX+o)
  269.        goto OP_DEC_mIx;
  270.  
  271.  
  272.    // ADD
  273.  
  274.    OPXY(0x80): // ADD  A,B
  275.    OPXY(0x81): // ADD  A,C
  276.    OPXY(0x82): // ADD  A,D
  277.    OPXY(0x83): // ADD  A,E
  278.    OPXY(0x87): // ADD  A,A
  279.        goto OP_ADD_R;
  280.  
  281.    OPXY(0x84): // ADD  A,HX
  282.        goto OP_ADD_IxH;
  283.  
  284.    OPXY(0x85): // ADD  A,LX
  285.        goto OP_ADD_IxL;
  286.  
  287.    OPXY(0xc6): // ADD  A,n
  288.        goto OP_ADD_imm;
  289.  
  290.    OPXY(0x86): // ADD  A,(IX+o)
  291.        goto OP_ADD_mIx;
  292.  
  293.    // ADC
  294.  
  295.    OPXY(0x88): // ADC  A,B
  296.    OPXY(0x89): // ADC  A,C
  297.    OPXY(0x8a): // ADC  A,D
  298.    OPXY(0x8b): // ADC  A,E
  299.    OPXY(0x8f): // ADC  A,A
  300.        goto OP_ADC_R;
  301.  
  302.    OPXY(0xce): // ADC  A,n
  303.        goto OP_ADC_imm;
  304.  
  305.    OPXY(0x8c): // ADC  A,HX
  306.        goto OP_ADC_IxH;
  307.  
  308.    OPXY(0x8d): // ADC  A,LX
  309.        goto OP_ADC_IxL;
  310.  
  311.    OPXY(0x8e): // ADC  A,(IX+o)
  312.        goto OP_ADC_mIx;
  313.  
  314.    // SUB
  315.  
  316.    OPXY(0x90): // SUB  B
  317.    OPXY(0x91): // SUB  C
  318.    OPXY(0x92): // SUB  D
  319.    OPXY(0x93): // SUB  E
  320.    OPXY(0x97): // SUB  A
  321.        goto OP_SUB_R;
  322.  
  323.    OPXY(0x94): // SUB  HX
  324.        goto OP_SUB_IxH;
  325.  
  326.    OPXY(0x95): // SUB  LX
  327.        goto OP_SUB_IxL;
  328.  
  329.    OPXY(0xd6): // SUB  A,n
  330.        goto OP_SUB_imm;
  331.  
  332.    OPXY(0x96): // SUB  (IX+o)
  333.        goto OP_SUB_mIx;
  334.  
  335.    // SBC
  336.  
  337.    OPXY(0x98): // SBC  A,B
  338.    OPXY(0x99): // SBC  A,C
  339.    OPXY(0x9a): // SBC  A,D
  340.    OPXY(0x9b): // SBC  A,E
  341.    OPXY(0x9f): // SBC  A,A
  342.        goto OP_SBC_R;
  343.  
  344.    OPXY(0x9c): // SBC  A,HX
  345.        goto OP_SBC_IxH;
  346.  
  347.    OPXY(0x9d): // SBC  A,LX
  348.        goto OP_SBC_IxL;
  349.  
  350.    OPXY(0xde): // SBC  A,n
  351.        goto OP_SBC_imm;
  352.  
  353.    OPXY(0x9e): // SBC  A,(IX+o)
  354.        goto OP_SBC_mIx;
  355.  
  356.    // CP
  357.  
  358.    OPXY(0xb8): // CP   B
  359.    OPXY(0xb9): // CP   C
  360.    OPXY(0xba): // CP   D
  361.    OPXY(0xbb): // CP   E
  362.    OPXY(0xbf): // CP   A
  363.        goto OP_CP_R;
  364.  
  365.    OPXY(0xbc): // CP   HX
  366.        goto OP_CP_IxH;
  367.  
  368.    OPXY(0xbd): // CP   LX
  369.        goto OP_CP_IxL;
  370.  
  371.    OPXY(0xfe): // CP   n
  372.        goto OP_CP_imm;
  373.  
  374.    OPXY(0xbe): // CP   (IX+o)
  375.        goto OP_CP_mIx;
  376.  
  377.    // AND
  378.  
  379.    OPXY(0xa0): // AND  B
  380.    OPXY(0xa1): // AND  C
  381.    OPXY(0xa2): // AND  D
  382.    OPXY(0xa3): // AND  E
  383.        goto OP_AND_R;
  384.  
  385.    OPXY(0xa7): // AND  A
  386.        goto OP_AND_A;
  387.  
  388.    OPXY(0xa4): // AND  HX
  389.        goto OP_AND_IxH;
  390.  
  391.    OPXY(0xa5): // AND  LX
  392.        goto OP_AND_IxL;
  393.  
  394.    OPXY(0xe6): // AND  A,n
  395.        goto OP_AND_imm;
  396.  
  397.    OPXY(0xa6): // AND  (IX+o)
  398.    {
  399.        uint8_t val;
  400.  
  401.        PRE_IO
  402.        READ_BYTE(data->W + FETCH_BYTE_S, val)
  403.        POST_IO
  404.        zA = zA & val;
  405.        zF = SZXYP[zA] | CZ80_HF;
  406.        RET(15)
  407.    }
  408.  
  409.    // XOR
  410.  
  411.    OPXY(0xa8): // XOR  B
  412.    OPXY(0xa9): // XOR  C
  413.    OPXY(0xaa): // XOR  D
  414.    OPXY(0xab): // XOR  E
  415.        goto OP_XOR_R;
  416.  
  417.    OPXY(0xaf): // XOR  A
  418.        goto OP_XOR_A;
  419.  
  420.    OPXY(0xac): // XOR  HX
  421.        goto OP_XOR_IxH;
  422.  
  423.    OPXY(0xad): // XOR  LX
  424.        goto OP_XOR_IxL;
  425.  
  426.    OPXY(0xee): // XOR  A,n
  427.        goto OP_XOR_imm;
  428.  
  429.    OPXY(0xae): // XOR  (IX+o)
  430.    {
  431.        uint8_t val;
  432.  
  433.        PRE_IO
  434.        READ_BYTE(data->W + FETCH_BYTE_S, val)
  435.        POST_IO
  436.        zA = zA ^ val;
  437.        zF = SZXYP[zA];
  438.        RET(15)
  439.    }
  440.  
  441.    // OR
  442.  
  443.    OPXY(0xb0): // OR   B
  444.    OPXY(0xb1): // OR   C
  445.    OPXY(0xb2): // OR   D
  446.    OPXY(0xb3): // OR   E
  447.        goto OP_OR_R;
  448.  
  449.    OPXY(0xb7): // OR   A
  450.        goto OP_OR_A;
  451.  
  452.    OPXY(0xb4): // OR   HX
  453.        goto OP_OR_IxH;
  454.  
  455.    OPXY(0xb5): // OR   LX
  456.        goto OP_OR_IxL;
  457.  
  458.    OPXY(0xf6): // OR   A,n
  459.        goto OP_OR_imm;
  460.  
  461.    OPXY(0xb6): // OR   (IX+o)
  462.    {
  463.        uint8_t val;
  464.  
  465.        PRE_IO
  466.        READ_BYTE(data->W + FETCH_BYTE_S, val)
  467.        POST_IO
  468.        zA = zA | val;
  469.        zF = SZXYP[zA];
  470.        RET(15)
  471.    }
  472.  
  473.  
  474.    // MISC ARITHMETIC & CPU CONTROL
  475.  
  476.    OPXY(0x27): // DAA
  477.        goto OP_DAA;
  478.  
  479.    OPXY(0x2f): // CPL
  480.        goto OP_CPL;
  481.  
  482.    OPXY(0x37): // SCF
  483.        goto OP_SCF;
  484.  
  485.    OPXY(0x3f): // CCF
  486.        goto OP_CCF;
  487.  
  488.    OPXY(0x76): // HALT
  489.        goto OP_HALT;
  490.  
  491.    OPXY(0xf3): // DI
  492.        goto OP_DI;
  493.  
  494.    OPXY(0xfb): // EI
  495.        goto OP_EI;
  496.  
  497.  
  498.    // 16 BITS ARITHMETIC
  499.  
  500.    OPXY(0x03): // INC  BC
  501.        goto OP_INC_BC;
  502.  
  503.    OPXY(0x13): // INC  DE
  504.        goto OP_INC_DE;
  505.  
  506.    OPXY(0x23): // INC  IX
  507.        goto OP_INC_xx;
  508.  
  509.    OPXY(0x33): // INC  SP
  510.        goto OP_INC_SP;
  511.  
  512.    OPXY(0x0b): // DEC  BC
  513.        goto OP_DEC_BC;
  514.  
  515.    OPXY(0x1b): // DEC  DE
  516.        goto OP_DEC_DE;
  517.  
  518.    OPXY(0x2b): // DEC  IX
  519.        goto OP_DEC_xx;
  520.  
  521.    OPXY(0x3b): // DEC  SP
  522.        goto OP_DEC_SP;
  523.  
  524.    // ADD16
  525.  
  526.    OPXY(0x09): // ADD  IX,BC
  527.        goto OP_ADD16_xx_BC;
  528.  
  529.    OPXY(0x19): // ADD  IX,DE
  530.        goto OP_ADD16_xx_DE;
  531.  
  532.    OPXY(0x29): // ADD  IX,IX
  533.        goto OP_ADD16_xx_xx;
  534.  
  535.    OPXY(0x39): // ADD  IX,SP
  536.        goto OP_ADD16_xx_SP;
  537.  
  538.  
  539.    // ROTATE
  540.  
  541.    OPXY(0x07): // RLCA
  542.        goto OP_RLCA;
  543.  
  544.    OPXY(0x0f): // RRCA
  545.        goto OP_RRCA;
  546.  
  547.    OPXY(0x17): // RLA
  548.        goto OP_RLA;
  549.  
  550.    OPXY(0x1f): // RRA
  551.        goto OP_RRA;
  552.  
  553.  
  554.    // JUMP
  555.  
  556.    OPXY(0xc3): // JP   nn
  557.        goto OP_JP;
  558.  
  559.    OPXY(0xe9): // JP   (IX)
  560.        goto OP_JP_xx;
  561.  
  562.  
  563.    OPXY(0xd2): // JP   NC,nn
  564.        goto OP_JP_NC;
  565.  
  566.    OPXY(0xda): // JP   C,nn
  567.        goto OP_JP_C;
  568.  
  569.    OPXY(0xe2): // JP   PO,nn
  570.        goto OP_JP_PO;
  571.  
  572.    OPXY(0xea): // JP   PE,nn
  573.        goto OP_JP_PE;
  574.  
  575.    OPXY(0xf2): // JP   P,nn
  576.        goto OP_JP_P;
  577.  
  578.    OPXY(0xfa): // JP   M,nn
  579.        goto OP_JP_M;
  580.  
  581.    OPXY(0xca): // JP   Z,nn
  582.        goto OP_JP_Z;
  583.  
  584.    OPXY(0xc2): // JP   NZ,nn
  585.        goto OP_JP_NZ;
  586.  
  587.  
  588.    OPXY(0x18): // JR   n
  589.        goto OP_JR;
  590.  
  591.  
  592.    OPXY(0x38): // JR   C,n
  593.        goto OP_JR_C;
  594.  
  595.    OPXY(0x30): // JR   NC,n
  596.        goto OP_JR_NC;
  597.  
  598.    OPXY(0x28): // JR   Z,n
  599.        goto OP_JR_Z;
  600.  
  601.    OPXY(0x20): // JR   NZ,n
  602.        goto OP_JR_NZ;
  603.  
  604.  
  605.    OPXY(0x10): // DJNZ n
  606.        goto OP_DJNZ;
  607.  
  608.  
  609.    // CALL & RETURN
  610.  
  611.    OPXY(0xcd): // CALL nn
  612.        goto OP_CALL;
  613.  
  614.  
  615.    OPXY(0xd4): // CALL NC,nn
  616.        goto OP_CALL_NC;
  617.  
  618.    OPXY(0xdc): // CALL C,nn
  619.        goto OP_CALL_C;
  620.  
  621.    OPXY(0xe4): // CALL PO,nn
  622.        goto OP_CALL_PO;
  623.  
  624.    OPXY(0xec): // CALL PE,nn
  625.        goto OP_CALL_PE;
  626.  
  627.    OPXY(0xf4): // CALL P,nn
  628.        goto OP_CALL_P;
  629.  
  630.    OPXY(0xfc): // CALL M,nn
  631.        goto OP_CALL_M;
  632.  
  633.    OPXY(0xcc): // CALL Z,nn
  634.        goto OP_CALL_Z;
  635.  
  636.    OPXY(0xc4): // CALL NZ,nn
  637.        goto OP_CALL_NZ;
  638.  
  639.  
  640.    OPXY(0xc9): // RET
  641.        goto OP_RET;
  642.  
  643.  
  644.    OPXY(0xd0): // RET  NC
  645.        goto OP_RET_NC;
  646.  
  647.    OPXY(0xd8): // RET  C
  648.        goto OP_RET_C;
  649.  
  650.    OPXY(0xe0): // RET  PO
  651.        goto OP_RET_PO;
  652.  
  653.    OPXY(0xe8): // RET  PE
  654.        goto OP_RET_PE;
  655.  
  656.    OPXY(0xf0): // RET  P
  657.        goto OP_RET_P;
  658.  
  659.    OPXY(0xf8): // RET  M
  660.        goto OP_RET_M;
  661.  
  662.    OPXY(0xc0): // RET  NZ
  663.        goto OP_RET_NZ;
  664.  
  665.    OPXY(0xc8): // RET  Z
  666.        goto OP_RET_Z;
  667.  
  668.  
  669.    OPXY(0xc7): // RST  0
  670.    OPXY(0xcf): // RST  1
  671.    OPXY(0xd7): // RST  2
  672.    OPXY(0xdf): // RST  3
  673.    OPXY(0xe7): // RST  4
  674.    OPXY(0xef): // RST  5
  675.    OPXY(0xf7): // RST  6
  676.    OPXY(0xff): // RST  7
  677.        goto OP_RST;
  678.  
  679.  
  680.    // INPUT & OUTPUT
  681.  
  682.    OPXY(0xd3): // OUT  (n),A
  683.        goto OP_OUT_mN_A;
  684.  
  685.    OPXY(0xdb): // IN   A,(n)
  686.        goto OP_IN_A_mN;
  687.  
  688.  
  689.    // PREFIXE
  690.  
  691.    OPXY(0xcb): // XYCB PREFIXE
  692.    {
  693.        uint16_t adr;
  694.        uint8_t src;
  695.        uint8_t res;
  696.  
  697.        adr = data->W + FETCH_BYTE_S;
  698.        Opcode = FETCH_BYTE;
  699.        #include "cz80_opxycb.inc"
  700.    }
  701.  
  702.    OPXY(0xed): // ED PREFIXE
  703.        goto ED_PREFIXE;
  704.  
  705.    OPXY(0xdd): // DD PREFIXE (IX)
  706.        goto DD_PREFIXE;
  707.  
  708.    OPXY(0xfd): // FD PREFIXE (IY)
  709.        goto FD_PREFIXE;
  710.  
  711. #if CZ80_USE_JUMPTABLE
  712. #else
  713. }
  714. #endif
  715.  
  716.