libz80 with compilation problems (uses up to much ram)
Revision 1:78a39c3a30f6, committed 2011-03-12
- Comitter:
- gertk
- Date:
- Sat Mar 12 22:39:10 2011 +0000
- Parent:
- 0:b612024f5aee
- Commit message:
Changed in this revision
diff -r b612024f5aee -r 78a39c3a30f6 opcodes_impl.c --- a/opcodes_impl.c Thu Mar 10 20:32:59 2011 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8156 +0,0 @@ -static void ADC_A_off_HL (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_ADC, F2_ADC); -} - - -static void ADC_A_off_IX_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_ADC, F2_ADC); - -} - - -static void ADC_A_off_IY_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_ADC, F2_ADC); - -} - - -static void ADC_A_A (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.A, F1_ADC, F2_ADC); -} - - -static void ADC_A_B (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.B, F1_ADC, F2_ADC); -} - - -static void ADC_A_C (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.C, F1_ADC, F2_ADC); -} - - -static void ADC_A_D (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.D, F1_ADC, F2_ADC); -} - - -static void ADC_A_E (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.E, F1_ADC, F2_ADC); -} - - -static void ADC_A_H (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.H, F1_ADC, F2_ADC); -} - - -static void ADC_A_IXh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXh, F1_ADC, F2_ADC); -} - - -static void ADC_A_IXl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXl, F1_ADC, F2_ADC); -} - - -static void ADC_A_IYh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYh, F1_ADC, F2_ADC); -} - - -static void ADC_A_IYl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYl, F1_ADC, F2_ADC); -} - - -static void ADC_A_L (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.L, F1_ADC, F2_ADC); -} - - -static void ADC_A_n (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_ADC, F2_ADC); -} - - -static void ADC_HL_BC (Z80Context* ctx) -{ - WR.HL += WR.BC + GETFLAG(F_C); -} - - -static void ADC_HL_DE (Z80Context* ctx) -{ - WR.HL += WR.DE + GETFLAG(F_C); -} - - -static void ADC_HL_HL (Z80Context* ctx) -{ - WR.HL += WR.HL + GETFLAG(F_C); -} - - -static void ADC_HL_SP (Z80Context* ctx) -{ - WR.HL += WR.SP + GETFLAG(F_C); -} - - -static void ADD_A_off_HL (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_ADD, F2_ADD); -} - - -static void ADD_A_off_IX_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_ADD, F2_ADD); - -} - - -static void ADD_A_off_IY_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_ADD, F2_ADD); - -} - - -static void ADD_A_A (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.A, F1_ADD, F2_ADD); -} - - -static void ADD_A_B (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.B, F1_ADD, F2_ADD); -} - - -static void ADD_A_C (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.C, F1_ADD, F2_ADD); -} - - -static void ADD_A_D (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.D, F1_ADD, F2_ADD); -} - - -static void ADD_A_E (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.E, F1_ADD, F2_ADD); -} - - -static void ADD_A_H (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.H, F1_ADD, F2_ADD); -} - - -static void ADD_A_IXh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXh, F1_ADD, F2_ADD); -} - - -static void ADD_A_IXl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXl, F1_ADD, F2_ADD); -} - - -static void ADD_A_IYh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYh, F1_ADD, F2_ADD); -} - - -static void ADD_A_IYl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYl, F1_ADD, F2_ADD); -} - - -static void ADD_A_L (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.L, F1_ADD, F2_ADD); -} - - -static void ADD_A_n (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_ADD, F2_ADD); -} - - -static void ADD_HL_BC (Z80Context* ctx) -{ - WR.HL += WR.BC; - -} - - -static void ADD_HL_DE (Z80Context* ctx) -{ - WR.HL += WR.DE; - -} - - -static void ADD_HL_HL (Z80Context* ctx) -{ - WR.HL += WR.HL; - -} - - -static void ADD_HL_SP (Z80Context* ctx) -{ - WR.HL += WR.SP; - -} - - -static void ADD_IX_BC (Z80Context* ctx) -{ - WR.IX += WR.BC; - - -} - - -static void ADD_IX_DE (Z80Context* ctx) -{ - WR.IX += WR.DE; - - -} - - -static void ADD_IX_IX (Z80Context* ctx) -{ - WR.IX += WR.IX; - - -} - - -static void ADD_IX_SP (Z80Context* ctx) -{ - WR.IX += WR.SP; - - -} - - -static void ADD_IY_BC (Z80Context* ctx) -{ - WR.IY += WR.BC; - - -} - - -static void ADD_IY_DE (Z80Context* ctx) -{ - WR.IY += WR.DE; - - -} - - -static void ADD_IY_IY (Z80Context* ctx) -{ - WR.IY += WR.IY; - - -} - - -static void ADD_IY_SP (Z80Context* ctx) -{ - WR.IY += WR.SP; - - -} - - -static void AND_off_HL (Z80Context* ctx) -{ - doAND(ctx, read8(ctx, WR.HL)); -} - - -static void AND_off_IX_d (Z80Context* ctx) -{ - doAND(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); -} - - -static void AND_off_IY_d (Z80Context* ctx) -{ - doAND(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); -} - - -static void AND_A (Z80Context* ctx) -{ - doAND(ctx, BR.A); -} - - -static void AND_B (Z80Context* ctx) -{ - doAND(ctx, BR.B); -} - - -static void AND_C (Z80Context* ctx) -{ - doAND(ctx, BR.C); -} - - -static void AND_D (Z80Context* ctx) -{ - doAND(ctx, BR.D); -} - - -static void AND_E (Z80Context* ctx) -{ - doAND(ctx, BR.E); -} - - -static void AND_H (Z80Context* ctx) -{ - doAND(ctx, BR.H); -} - - -static void AND_IXh (Z80Context* ctx) -{ - doAND(ctx, BR.IXh); -} - - -static void AND_IXl (Z80Context* ctx) -{ - doAND(ctx, BR.IXl); -} - - -static void AND_IYh (Z80Context* ctx) -{ - doAND(ctx, BR.IYh); -} - - -static void AND_IYl (Z80Context* ctx) -{ - doAND(ctx, BR.IYl); -} - - -static void AND_L (Z80Context* ctx) -{ - doAND(ctx, BR.L); -} - - -static void AND_n (Z80Context* ctx) -{ - doAND(ctx, read8(ctx, ctx->PC++)); -} - - -static void BIT_0_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 0, read8(ctx, WR.HL)); -} - - -static void BIT_0_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 0, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_0_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 0, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_0_A (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.A); -} - - -static void BIT_0_B (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.B); -} - - -static void BIT_0_C (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.C); -} - - -static void BIT_0_D (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.D); -} - - -static void BIT_0_E (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.E); -} - - -static void BIT_0_H (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.H); -} - - -static void BIT_0_L (Z80Context* ctx) -{ - doBIT(ctx, 0, BR.L); -} - - -static void BIT_1_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 1, read8(ctx, WR.HL)); -} - - -static void BIT_1_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 1, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_1_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 1, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_1_A (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.A); -} - - -static void BIT_1_B (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.B); -} - - -static void BIT_1_C (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.C); -} - - -static void BIT_1_D (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.D); -} - - -static void BIT_1_E (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.E); -} - - -static void BIT_1_H (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.H); -} - - -static void BIT_1_L (Z80Context* ctx) -{ - doBIT(ctx, 1, BR.L); -} - - -static void BIT_2_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 2, read8(ctx, WR.HL)); -} - - -static void BIT_2_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 2, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_2_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 2, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_2_A (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.A); -} - - -static void BIT_2_B (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.B); -} - - -static void BIT_2_C (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.C); -} - - -static void BIT_2_D (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.D); -} - - -static void BIT_2_E (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.E); -} - - -static void BIT_2_H (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.H); -} - - -static void BIT_2_L (Z80Context* ctx) -{ - doBIT(ctx, 2, BR.L); -} - - -static void BIT_3_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 3, read8(ctx, WR.HL)); -} - - -static void BIT_3_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 3, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_3_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 3, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_3_A (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.A); -} - - -static void BIT_3_B (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.B); -} - - -static void BIT_3_C (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.C); -} - - -static void BIT_3_D (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.D); -} - - -static void BIT_3_E (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.E); -} - - -static void BIT_3_H (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.H); -} - - -static void BIT_3_L (Z80Context* ctx) -{ - doBIT(ctx, 3, BR.L); -} - - -static void BIT_4_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 4, read8(ctx, WR.HL)); -} - - -static void BIT_4_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 4, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_4_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 4, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_4_A (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.A); -} - - -static void BIT_4_B (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.B); -} - - -static void BIT_4_C (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.C); -} - - -static void BIT_4_D (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.D); -} - - -static void BIT_4_E (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.E); -} - - -static void BIT_4_H (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.H); -} - - -static void BIT_4_L (Z80Context* ctx) -{ - doBIT(ctx, 4, BR.L); -} - - -static void BIT_5_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 5, read8(ctx, WR.HL)); -} - - -static void BIT_5_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 5, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_5_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 5, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_5_A (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.A); -} - - -static void BIT_5_B (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.B); -} - - -static void BIT_5_C (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.C); -} - - -static void BIT_5_D (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.D); -} - - -static void BIT_5_E (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.E); -} - - -static void BIT_5_H (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.H); -} - - -static void BIT_5_L (Z80Context* ctx) -{ - doBIT(ctx, 5, BR.L); -} - - -static void BIT_6_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 6, read8(ctx, WR.HL)); -} - - -static void BIT_6_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 6, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_6_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 6, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_6_A (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.A); -} - - -static void BIT_6_B (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.B); -} - - -static void BIT_6_C (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.C); -} - - -static void BIT_6_D (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.D); -} - - -static void BIT_6_E (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.E); -} - - -static void BIT_6_H (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.H); -} - - -static void BIT_6_L (Z80Context* ctx) -{ - doBIT(ctx, 6, BR.L); -} - - -static void BIT_7_off_HL (Z80Context* ctx) -{ - doBIT(ctx, 7, read8(ctx, WR.HL)); -} - - -static void BIT_7_off_IX_d (Z80Context* ctx) -{ - doBIT(ctx, 7, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); - -} - - -static void BIT_7_off_IY_d (Z80Context* ctx) -{ - doBIT(ctx, 7, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); - -} - - -static void BIT_7_A (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.A); -} - - -static void BIT_7_B (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.B); -} - - -static void BIT_7_C (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.C); -} - - -static void BIT_7_D (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.D); -} - - -static void BIT_7_E (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.E); -} - - -static void BIT_7_H (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.H); -} - - -static void BIT_7_L (Z80Context* ctx) -{ - doBIT(ctx, 7, BR.L); -} - - -static void CALL_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_C_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_C)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_M_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_M)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_NC_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_NC)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_NZ_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_NZ)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_P_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_P)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_PE_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_PE)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_PO_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_PO)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CALL_Z_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_Z)) - { - doPush(ctx, ctx->PC); - ctx->PC = addr; - } - -} - - -static void CCF (Z80Context* ctx) -{ - VALFLAG(F_C, (1 - (byte)GETFLAG(F_C) != 0)); - RESFLAG(F_N); - -} - - -static void CP_off_HL (Z80Context* ctx) -{ - byte val = read8(ctx, WR.HL); - doArithmetic(ctx, val, 0, 1); - adjustFlags(ctx, val); -} - - -static void CP_off_IX_d (Z80Context* ctx) -{ - byte val = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); - doArithmetic(ctx, val, 0, 1); - adjustFlags(ctx, val); -} - - -static void CP_off_IY_d (Z80Context* ctx) -{ - byte val = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); - doArithmetic(ctx, val, 0, 1); - adjustFlags(ctx, val); -} - - -static void CP_A (Z80Context* ctx) -{ - doArithmetic(ctx, BR.A, 0, 1); - adjustFlags(ctx, BR.A); -} - - -static void CP_B (Z80Context* ctx) -{ - doArithmetic(ctx, BR.B, 0, 1); - adjustFlags(ctx, BR.B); -} - - -static void CP_C (Z80Context* ctx) -{ - doArithmetic(ctx, BR.C, 0, 1); - adjustFlags(ctx, BR.C); -} - - -static void CP_D (Z80Context* ctx) -{ - doArithmetic(ctx, BR.D, 0, 1); - adjustFlags(ctx, BR.D); -} - - -static void CP_E (Z80Context* ctx) -{ - doArithmetic(ctx, BR.E, 0, 1); - adjustFlags(ctx, BR.E); -} - - -static void CP_H (Z80Context* ctx) -{ - doArithmetic(ctx, BR.H, 0, 1); - adjustFlags(ctx, BR.H); -} - - -static void CP_IXh (Z80Context* ctx) -{ - doArithmetic(ctx, BR.IXh, 0, 1); - adjustFlags(ctx, BR.IXh); -} - - -static void CP_IXl (Z80Context* ctx) -{ - doArithmetic(ctx, BR.IXl, 0, 1); - adjustFlags(ctx, BR.IXl); -} - - -static void CP_IYh (Z80Context* ctx) -{ - doArithmetic(ctx, BR.IYh, 0, 1); - adjustFlags(ctx, BR.IYh); -} - - -static void CP_IYl (Z80Context* ctx) -{ - doArithmetic(ctx, BR.IYl, 0, 1); - adjustFlags(ctx, BR.IYl); -} - - -static void CP_L (Z80Context* ctx) -{ - doArithmetic(ctx, BR.L, 0, 1); - adjustFlags(ctx, BR.L); -} - - -static void CP_n (Z80Context* ctx) -{ - byte val = read8(ctx, ctx->PC++); - doArithmetic(ctx, val, 0, 1); - adjustFlags(ctx, val); -} - - -static void CPD (Z80Context* ctx) -{ - CP_off_HL(ctx); - WR.HL--; - WR.BC--; - VALFLAG(F_PV, WR.BC != 0); -} - - -static void CPDR (Z80Context* ctx) -{ - do - { - CPD(ctx); - } while ((WR.BC != 0) && (BR.A != read8(ctx, WR.HL))); - -} - - -static void CPI (Z80Context* ctx) -{ - CP_off_HL(ctx); - WR.HL++; - WR.BC--; - VALFLAG(F_PV, WR.BC != 0); -} - - -static void CPIR (Z80Context* ctx) -{ - do - { - CPI(ctx); - } while ((WR.BC != 0) && (BR.A != read8(ctx, WR.HL))); - -} - - -static void CPL (Z80Context* ctx) -{ - BR.A = ~BR.A; - SETFLAG(F_H | F_N); - -} - - -static void DAA (Z80Context* ctx) -{ - doDAA(ctx); - -} - - -static void DEC_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doIncDec(ctx, read8(ctx, WR.HL), ID_DEC)); -} - - -static void DEC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doIncDec(ctx, read8(ctx, WR.IX + off), ID_DEC)); - -} - - -static void DEC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doIncDec(ctx, read8(ctx, WR.IY + off), ID_DEC)); - -} - - -static void DEC_A (Z80Context* ctx) -{ - BR.A = doIncDec(ctx, BR.A, ID_DEC); -} - - -static void DEC_B (Z80Context* ctx) -{ - BR.B = doIncDec(ctx, BR.B, ID_DEC); -} - - -static void DEC_BC (Z80Context* ctx) -{ - BR.B = doIncDec(ctx, BR.B, ID_DEC); -} - - -static void DEC_C (Z80Context* ctx) -{ - BR.C = doIncDec(ctx, BR.C, ID_DEC); -} - - -static void DEC_D (Z80Context* ctx) -{ - BR.D = doIncDec(ctx, BR.D, ID_DEC); -} - - -static void DEC_DE (Z80Context* ctx) -{ - BR.D = doIncDec(ctx, BR.D, ID_DEC); -} - - -static void DEC_E (Z80Context* ctx) -{ - BR.E = doIncDec(ctx, BR.E, ID_DEC); -} - - -static void DEC_H (Z80Context* ctx) -{ - BR.H = doIncDec(ctx, BR.H, ID_DEC); -} - - -static void DEC_HL (Z80Context* ctx) -{ - BR.H = doIncDec(ctx, BR.H, ID_DEC); -} - - -static void DEC_IX (Z80Context* ctx) -{ - WR.IX = doIncDec(ctx, WR.IX, ID_DEC); - -} - - -static void DEC_IXh (Z80Context* ctx) -{ - BR.IXh = doIncDec(ctx, BR.IXh, ID_DEC); -} - - -static void DEC_IXl (Z80Context* ctx) -{ - BR.IXl = doIncDec(ctx, BR.IXl, ID_DEC); -} - - -static void DEC_IY (Z80Context* ctx) -{ - WR.IY = doIncDec(ctx, WR.IY, ID_DEC); - -} - - -static void DEC_IYh (Z80Context* ctx) -{ - BR.IYh = doIncDec(ctx, BR.IYh, ID_DEC); -} - - -static void DEC_IYl (Z80Context* ctx) -{ - BR.IYl = doIncDec(ctx, BR.IYl, ID_DEC); -} - - -static void DEC_L (Z80Context* ctx) -{ - BR.L = doIncDec(ctx, BR.L, ID_DEC); -} - - -static void DEC_SP (Z80Context* ctx) -{ - WR.SP = doIncDec(ctx, WR.SP, ID_DEC); - -} - - -static void DI (Z80Context* ctx) -{ - ctx->IFF1 = ctx->IFF2 = IE_DI; -} - - -static void DJNZ_off_PC_e_ (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - BR.B--; - if (BR.B) - ctx->PC += off; -} - - -static void EI (Z80Context* ctx) -{ - ctx->IFF1 = ctx->IFF2 = IE_EI; -} - - -static void EX_off_SP_HL (Z80Context* ctx) -{ - ushort tmp = read16(ctx, WR.SP); - write16(ctx, WR.SP, WR.HL); - WR.HL = tmp; -} - - -static void EX_off_SP_IX (Z80Context* ctx) -{ - ushort tmp = read16(ctx, WR.SP); - write16(ctx, WR.SP, WR.IX); - WR.IX = tmp; -} - - -static void EX_off_SP_IY (Z80Context* ctx) -{ - ushort tmp = read16(ctx, WR.SP); - write16(ctx, WR.SP, WR.IY); - WR.IY = tmp; -} - - -static void EX_AF_AF_ (Z80Context* ctx) -{ - ushort tmp = ctx->R1.wr.AF; - ctx->R1.wr.AF = ctx->R2.wr.AF; - ctx->R2.wr.AF = tmp; -} - - -static void EX_DE_HL (Z80Context* ctx) -{ - ushort tmp = WR.DE; - WR.DE = WR.HL; - WR.HL = tmp; -} - - -static void EXX (Z80Context* ctx) -{ - ushort tmp; - tmp = ctx->R1.wr.BC; - ctx->R1.wr.BC = ctx->R2.wr.BC; - ctx->R2.wr.BC = tmp; - - tmp = ctx->R1.wr.DE; - ctx->R1.wr.DE = ctx->R2.wr.DE; - ctx->R2.wr.DE = tmp; - - tmp = ctx->R1.wr.HL; - ctx->R1.wr.HL = ctx->R2.wr.HL; - ctx->R2.wr.HL = tmp; -} - - -static void HALT (Z80Context* ctx) -{ - /* What should we do here? */ -} - - -static void IM_0 (Z80Context* ctx) -{ - ctx->IM = 0; -} - - -static void IM_1 (Z80Context* ctx) -{ - ctx->IM = 1; -} - - -static void IM_2 (Z80Context* ctx) -{ - ctx->IM = 2; -} - - -static void IN_A_off_C (Z80Context* ctx) -{ - BR.A = ioRead(ctx, BR.C); -} - - -static void IN_A_off_n (Z80Context* ctx) -{ - byte port = read8(ctx, ctx->PC++); - BR.A = ioRead(ctx, port); -} - - -static void IN_B_off_C (Z80Context* ctx) -{ - BR.B = ioRead(ctx, BR.C); -} - - -static void IN_C_off_C (Z80Context* ctx) -{ - BR.C = ioRead(ctx, BR.C); -} - - -static void IN_D_off_C (Z80Context* ctx) -{ - BR.D = ioRead(ctx, BR.C); -} - - -static void IN_E_off_C (Z80Context* ctx) -{ - BR.E = ioRead(ctx, BR.C); -} - - -static void IN_F_off_C (Z80Context* ctx) -{ - BR.F = ioRead(ctx, BR.C); -} - - -static void IN_H_off_C (Z80Context* ctx) -{ - BR.H = ioRead(ctx, BR.C); -} - - -static void IN_L_off_C (Z80Context* ctx) -{ - BR.L = ioRead(ctx, BR.C); -} - - -static void INC_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doIncDec(ctx, read8(ctx, WR.HL), ID_INC)); -} - - -static void INC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doIncDec(ctx, read8(ctx, WR.IX + off), ID_INC)); - -} - - -static void INC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doIncDec(ctx, read8(ctx, WR.IY + off), ID_INC)); - -} - - -static void INC_A (Z80Context* ctx) -{ - BR.A = doIncDec(ctx, BR.A, ID_INC); -} - - -static void INC_B (Z80Context* ctx) -{ - BR.B = doIncDec(ctx, BR.B, ID_INC); -} - - -static void INC_BC (Z80Context* ctx) -{ - BR.B = doIncDec(ctx, BR.B, ID_INC); -} - - -static void INC_C (Z80Context* ctx) -{ - BR.C = doIncDec(ctx, BR.C, ID_INC); -} - - -static void INC_D (Z80Context* ctx) -{ - BR.D = doIncDec(ctx, BR.D, ID_INC); -} - - -static void INC_DE (Z80Context* ctx) -{ - BR.D = doIncDec(ctx, BR.D, ID_INC); -} - - -static void INC_E (Z80Context* ctx) -{ - BR.E = doIncDec(ctx, BR.E, ID_INC); -} - - -static void INC_H (Z80Context* ctx) -{ - BR.H = doIncDec(ctx, BR.H, ID_INC); -} - - -static void INC_HL (Z80Context* ctx) -{ - BR.H = doIncDec(ctx, BR.H, ID_INC); -} - - -static void INC_IX (Z80Context* ctx) -{ - WR.IX = doIncDec(ctx, WR.IX, ID_INC); - -} - - -static void INC_IXh (Z80Context* ctx) -{ - BR.IXh = doIncDec(ctx, BR.IXh, ID_INC); -} - - -static void INC_IXl (Z80Context* ctx) -{ - BR.IXl = doIncDec(ctx, BR.IXl, ID_INC); -} - - -static void INC_IY (Z80Context* ctx) -{ - WR.IY = doIncDec(ctx, WR.IY, ID_INC); - -} - - -static void INC_IYh (Z80Context* ctx) -{ - BR.IYh = doIncDec(ctx, BR.IYh, ID_INC); -} - - -static void INC_IYl (Z80Context* ctx) -{ - BR.IYl = doIncDec(ctx, BR.IYl, ID_INC); -} - - -static void INC_L (Z80Context* ctx) -{ - BR.L = doIncDec(ctx, BR.L, ID_INC); -} - - -static void INC_SP (Z80Context* ctx) -{ - WR.SP = doIncDec(ctx, WR.SP, ID_INC); - -} - - -static void IND (Z80Context* ctx) -{ - byte val = ioRead(ctx, BR.C); - write8(ctx, WR.HL, val); - WR.HL--; - BR.B = doIncDec(ctx, BR.B, ID_DEC); - VALFLAG(F_N, (val & 0x80) != 0); - -} - - -static void INDR (Z80Context* ctx) -{ - do - { - IND(ctx); - } while(BR.B != 0); - SETFLAG(F_Z); - RESFLAG(F_5 | F_3 | F_S); -} - - -static void INI (Z80Context* ctx) -{ - byte val = ioRead(ctx, BR.C); - write8(ctx, WR.HL, val); - WR.HL++; - BR.B = doIncDec(ctx, BR.B, ID_DEC); - VALFLAG(F_N, (val & 0x80) != 0); -} - - -static void INIR (Z80Context* ctx) -{ - do - { - INI(ctx); - } while(BR.B != 0); - SETFLAG(F_Z); - RESFLAG(F_5 | F_3 | F_S); -} - - -static void JP_off_HL (Z80Context* ctx) -{ - ctx->PC = WR.HL; - -} - - -static void JP_off_IX (Z80Context* ctx) -{ - ctx->PC = WR.IX; - -} - - -static void JP_off_IY (Z80Context* ctx) -{ - ctx->PC = WR.IY; - -} - - -static void JP_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_)) - ctx->PC = addr; - -} - - -static void JP_C_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_C)) - ctx->PC = addr; - -} - - -static void JP_M_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_M)) - ctx->PC = addr; - -} - - -static void JP_NC_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_NC)) - ctx->PC = addr; - -} - - -static void JP_NZ_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_NZ)) - ctx->PC = addr; - -} - - -static void JP_P_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_P)) - ctx->PC = addr; - -} - - -static void JP_PE_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_PE)) - ctx->PC = addr; - -} - - -static void JP_PO_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_PO)) - ctx->PC = addr; - -} - - -static void JP_Z_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - if (condition(ctx, C_Z)) - ctx->PC = addr; - -} - - -static void JR_off_PC_e (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - if (condition(ctx, C_)) - ctx->PC += off; -} - - -static void JR_C_off_PC_e (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - if (condition(ctx, C_C)) - ctx->PC += off; -} - - -static void JR_NC_off_PC_e (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - if (condition(ctx, C_NC)) - ctx->PC += off; -} - - -static void JR_NZ_off_PC_e (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - if (condition(ctx, C_NZ)) - ctx->PC += off; -} - - -static void JR_Z_off_PC_e (Z80Context* ctx) -{ - int off = doComplement(read8(ctx, ctx->PC++)); - if (condition(ctx, C_Z)) - ctx->PC += off; -} - - -static void LD_off_BC_A (Z80Context* ctx) -{ - write8(ctx, WR.BC, BR.A); -} - - -static void LD_off_DE_A (Z80Context* ctx) -{ - write8(ctx, WR.DE, BR.A); -} - - -static void LD_off_HL_A (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.A); -} - - -static void LD_off_HL_B (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.B); -} - - -static void LD_off_HL_C (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.C); -} - - -static void LD_off_HL_D (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.D); -} - - -static void LD_off_HL_E (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.E); -} - - -static void LD_off_HL_H (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.H); -} - - -static void LD_off_HL_L (Z80Context* ctx) -{ - write8(ctx, WR.HL, BR.L); -} - - -static void LD_off_HL_n (Z80Context* ctx) -{ - write8(ctx, WR.HL, read8(ctx, ctx->PC++)); - -} - - -static void LD_off_IX_d_A (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.A); - -} - - -static void LD_off_IX_d_B (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.B); - -} - - -static void LD_off_IX_d_C (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.C); - -} - - -static void LD_off_IX_d_D (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.D); - -} - - -static void LD_off_IX_d_E (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.E); - -} - - -static void LD_off_IX_d_H (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.H); - -} - - -static void LD_off_IX_d_L (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.L); - -} - - -static void LD_off_IX_d_n (Z80Context* ctx) -{ - write8(ctx, WR.IX + read8(ctx, ctx->PC++), read8(ctx, ctx->PC++)); - -} - - -static void LD_off_IY_d_A (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.A); - -} - - -static void LD_off_IY_d_B (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.B); - -} - - -static void LD_off_IY_d_C (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.C); - -} - - -static void LD_off_IY_d_D (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.D); - -} - - -static void LD_off_IY_d_E (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.E); - -} - - -static void LD_off_IY_d_H (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.H); - -} - - -static void LD_off_IY_d_L (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.L); - -} - - -static void LD_off_IY_d_n (Z80Context* ctx) -{ - write8(ctx, WR.IY + read8(ctx, ctx->PC++), read8(ctx, ctx->PC++)); - -} - - -static void LD_off_nn_A (Z80Context* ctx) -{ - write8(ctx, read16(ctx, ctx->PC), BR.A); - ctx->PC += 2; - -} - - -static void LD_off_nn_BC (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.BC); - ctx->PC += 2; - -} - - -static void LD_off_nn_DE (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.DE); - ctx->PC += 2; - -} - - -static void LD_off_nn_HL (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.HL); - ctx->PC += 2; - -} - - -static void LD_off_nn_IX (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.IX); - ctx->PC += 2; - -} - - -static void LD_off_nn_IY (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.IY); - ctx->PC += 2; - -} - - -static void LD_off_nn_SP (Z80Context* ctx) -{ - write16(ctx, read16(ctx, ctx->PC), WR.SP); - ctx->PC += 2; - -} - - -static void LD_A_off_BC (Z80Context* ctx) -{ - BR.A = read8(ctx, WR.BC); -} - - -static void LD_A_off_DE (Z80Context* ctx) -{ - BR.A = read8(ctx, WR.DE); -} - - -static void LD_A_off_HL (Z80Context* ctx) -{ - BR.A = read8(ctx, WR.HL); -} - - -static void LD_A_off_IX_d (Z80Context* ctx) -{ - BR.A = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_A_off_IY_d (Z80Context* ctx) -{ - BR.A = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_A_off_nn (Z80Context* ctx) -{ - BR.A = read8(ctx, read16(ctx, ctx->PC)); - ctx->PC += 2; - -} - - -static void LD_A_A (Z80Context* ctx) -{ - BR.A = BR.A; -} - - -static void LD_A_B (Z80Context* ctx) -{ - BR.A = BR.B; -} - - -static void LD_A_C (Z80Context* ctx) -{ - BR.A = BR.C; -} - - -static void LD_A_D (Z80Context* ctx) -{ - BR.A = BR.D; -} - - -static void LD_A_E (Z80Context* ctx) -{ - BR.A = BR.E; -} - - -static void LD_A_H (Z80Context* ctx) -{ - BR.A = BR.H; -} - - -static void LD_A_I (Z80Context* ctx) -{ - BR.A = ctx->I; - - adjustFlags(ctx, BR.A); - RESFLAG(F_H | F_N); - VALFLAG(F_PV, ctx->IFF2); - VALFLAG(F_S, (BR.A & 0x80) != 0); - VALFLAG(F_Z, (BR.A == 0)); - -} - - -static void LD_A_IXh (Z80Context* ctx) -{ - BR.A = BR.IXh; -} - - -static void LD_A_IXl (Z80Context* ctx) -{ - BR.A = BR.IXl; -} - - -static void LD_A_IYh (Z80Context* ctx) -{ - BR.A = BR.IYh; -} - - -static void LD_A_IYl (Z80Context* ctx) -{ - BR.A = BR.IYl; -} - - -static void LD_A_L (Z80Context* ctx) -{ - BR.A = BR.L; -} - - -static void LD_A_n (Z80Context* ctx) -{ - BR.A = read8(ctx, ctx->PC++); - -} - - -static void LD_A_R (Z80Context* ctx) -{ - BR.A = ctx->R; - - adjustFlags(ctx, BR.A); - RESFLAG(F_H | F_N); - VALFLAG(F_PV, ctx->IFF2); - VALFLAG(F_S, (BR.A & 0x80) != 0); - VALFLAG(F_Z, (BR.A == 0)); - -} - - -static void LD_A_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.A); -} - - -static void LD_A_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.A); -} - - -static void LD_A_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.A); - -} - - -static void LD_A_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.A); - -} - - -static void LD_A_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.A); - -} - - -static void LD_A_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.A); - -} - - -static void LD_A_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.A); - -} - - -static void LD_A_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.A); - -} - - -static void LD_A_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.A); - -} - - -static void LD_A_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.A = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.A); - -} - - -static void LD_B_off_HL (Z80Context* ctx) -{ - BR.B = read8(ctx, WR.HL); -} - - -static void LD_B_off_IX_d (Z80Context* ctx) -{ - BR.B = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_B_off_IY_d (Z80Context* ctx) -{ - BR.B = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_B_A (Z80Context* ctx) -{ - BR.B = BR.A; -} - - -static void LD_B_B (Z80Context* ctx) -{ - BR.B = BR.B; -} - - -static void LD_B_C (Z80Context* ctx) -{ - BR.B = BR.C; -} - - -static void LD_B_D (Z80Context* ctx) -{ - BR.B = BR.D; -} - - -static void LD_B_E (Z80Context* ctx) -{ - BR.B = BR.E; -} - - -static void LD_B_H (Z80Context* ctx) -{ - BR.B = BR.H; -} - - -static void LD_B_IXh (Z80Context* ctx) -{ - BR.B = BR.IXh; -} - - -static void LD_B_IXl (Z80Context* ctx) -{ - BR.B = BR.IXl; -} - - -static void LD_B_IYh (Z80Context* ctx) -{ - BR.B = BR.IYh; -} - - -static void LD_B_IYl (Z80Context* ctx) -{ - BR.B = BR.IYl; -} - - -static void LD_B_L (Z80Context* ctx) -{ - BR.B = BR.L; -} - - -static void LD_B_n (Z80Context* ctx) -{ - BR.B = read8(ctx, ctx->PC++); - -} - - -static void LD_B_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.B); -} - - -static void LD_B_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.B); -} - - -static void LD_B_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.B); - -} - - -static void LD_B_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.B); - -} - - -static void LD_B_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.B); - -} - - -static void LD_B_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.B); - -} - - -static void LD_B_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.B); - -} - - -static void LD_B_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.B); - -} - - -static void LD_B_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.B); - -} - - -static void LD_B_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.B = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.B); - -} - - -static void LD_BC_off_nn (Z80Context* ctx) -{ - WR.BC = read16(ctx, ctx->PC); - ctx->PC += 2; -} - - -static void LD_BC_nn (Z80Context* ctx) -{ - WR.BC = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LD_C_off_HL (Z80Context* ctx) -{ - BR.C = read8(ctx, WR.HL); -} - - -static void LD_C_off_IX_d (Z80Context* ctx) -{ - BR.C = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_C_off_IY_d (Z80Context* ctx) -{ - BR.C = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_C_A (Z80Context* ctx) -{ - BR.C = BR.A; -} - - -static void LD_C_B (Z80Context* ctx) -{ - BR.C = BR.B; -} - - -static void LD_C_C (Z80Context* ctx) -{ - BR.C = BR.C; -} - - -static void LD_C_D (Z80Context* ctx) -{ - BR.C = BR.D; -} - - -static void LD_C_E (Z80Context* ctx) -{ - BR.C = BR.E; -} - - -static void LD_C_H (Z80Context* ctx) -{ - BR.C = BR.H; -} - - -static void LD_C_IXh (Z80Context* ctx) -{ - BR.C = BR.IXh; -} - - -static void LD_C_IXl (Z80Context* ctx) -{ - BR.C = BR.IXl; -} - - -static void LD_C_IYh (Z80Context* ctx) -{ - BR.C = BR.IYh; -} - - -static void LD_C_IYl (Z80Context* ctx) -{ - BR.C = BR.IYl; -} - - -static void LD_C_L (Z80Context* ctx) -{ - BR.C = BR.L; -} - - -static void LD_C_n (Z80Context* ctx) -{ - BR.C = read8(ctx, ctx->PC++); - -} - - -static void LD_C_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.C); -} - - -static void LD_C_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.C); -} - - -static void LD_C_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.C); - -} - - -static void LD_C_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.C); - -} - - -static void LD_C_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.C); - -} - - -static void LD_C_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.C); - -} - - -static void LD_C_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.C); - -} - - -static void LD_C_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.C); - -} - - -static void LD_C_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.C); - -} - - -static void LD_C_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.C = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.C); - -} - - -static void LD_D_off_HL (Z80Context* ctx) -{ - BR.D = read8(ctx, WR.HL); -} - - -static void LD_D_off_IX_d (Z80Context* ctx) -{ - BR.D = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_D_off_IY_d (Z80Context* ctx) -{ - BR.D = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_D_A (Z80Context* ctx) -{ - BR.D = BR.A; -} - - -static void LD_D_B (Z80Context* ctx) -{ - BR.D = BR.B; -} - - -static void LD_D_C (Z80Context* ctx) -{ - BR.D = BR.C; -} - - -static void LD_D_D (Z80Context* ctx) -{ - BR.D = BR.D; -} - - -static void LD_D_E (Z80Context* ctx) -{ - BR.D = BR.E; -} - - -static void LD_D_H (Z80Context* ctx) -{ - BR.D = BR.H; -} - - -static void LD_D_IXh (Z80Context* ctx) -{ - BR.D = BR.IXh; -} - - -static void LD_D_IXl (Z80Context* ctx) -{ - BR.D = BR.IXl; -} - - -static void LD_D_IYh (Z80Context* ctx) -{ - BR.D = BR.IYh; -} - - -static void LD_D_IYl (Z80Context* ctx) -{ - BR.D = BR.IYl; -} - - -static void LD_D_L (Z80Context* ctx) -{ - BR.D = BR.L; -} - - -static void LD_D_n (Z80Context* ctx) -{ - BR.D = read8(ctx, ctx->PC++); - -} - - -static void LD_D_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.D); -} - - -static void LD_D_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.D); -} - - -static void LD_D_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.D); - -} - - -static void LD_D_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.D); - -} - - -static void LD_D_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.D); - -} - - -static void LD_D_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.D); - -} - - -static void LD_D_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.D); - -} - - -static void LD_D_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.D); - -} - - -static void LD_D_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.D); - -} - - -static void LD_D_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.D = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.D); - -} - - -static void LD_DE_off_nn (Z80Context* ctx) -{ - WR.DE = read16(ctx, ctx->PC); - ctx->PC += 2; -} - - -static void LD_DE_nn (Z80Context* ctx) -{ - WR.DE = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LD_E_off_HL (Z80Context* ctx) -{ - BR.E = read8(ctx, WR.HL); -} - - -static void LD_E_off_IX_d (Z80Context* ctx) -{ - BR.E = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_E_off_IY_d (Z80Context* ctx) -{ - BR.E = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_E_A (Z80Context* ctx) -{ - BR.E = BR.A; -} - - -static void LD_E_B (Z80Context* ctx) -{ - BR.E = BR.B; -} - - -static void LD_E_C (Z80Context* ctx) -{ - BR.E = BR.C; -} - - -static void LD_E_D (Z80Context* ctx) -{ - BR.E = BR.D; -} - - -static void LD_E_E (Z80Context* ctx) -{ - BR.E = BR.E; -} - - -static void LD_E_H (Z80Context* ctx) -{ - BR.E = BR.H; -} - - -static void LD_E_IXh (Z80Context* ctx) -{ - BR.E = BR.IXh; -} - - -static void LD_E_IXl (Z80Context* ctx) -{ - BR.E = BR.IXl; -} - - -static void LD_E_IYh (Z80Context* ctx) -{ - BR.E = BR.IYh; -} - - -static void LD_E_IYl (Z80Context* ctx) -{ - BR.E = BR.IYl; -} - - -static void LD_E_L (Z80Context* ctx) -{ - BR.E = BR.L; -} - - -static void LD_E_n (Z80Context* ctx) -{ - BR.E = read8(ctx, ctx->PC++); - -} - - -static void LD_E_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.E); -} - - -static void LD_E_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.E); -} - - -static void LD_E_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.E); - -} - - -static void LD_E_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.E); - -} - - -static void LD_E_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.E); - -} - - -static void LD_E_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.E); - -} - - -static void LD_E_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.E); - -} - - -static void LD_E_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.E); - -} - - -static void LD_E_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.E); - -} - - -static void LD_E_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.E = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.E); - -} - - -static void LD_H_off_HL (Z80Context* ctx) -{ - BR.H = read8(ctx, WR.HL); -} - - -static void LD_H_off_IX_d (Z80Context* ctx) -{ - BR.H = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_H_off_IY_d (Z80Context* ctx) -{ - BR.H = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_H_A (Z80Context* ctx) -{ - BR.H = BR.A; -} - - -static void LD_H_B (Z80Context* ctx) -{ - BR.H = BR.B; -} - - -static void LD_H_C (Z80Context* ctx) -{ - BR.H = BR.C; -} - - -static void LD_H_D (Z80Context* ctx) -{ - BR.H = BR.D; -} - - -static void LD_H_E (Z80Context* ctx) -{ - BR.H = BR.E; -} - - -static void LD_H_H (Z80Context* ctx) -{ - BR.H = BR.H; -} - - -static void LD_H_L (Z80Context* ctx) -{ - BR.H = BR.L; -} - - -static void LD_H_n (Z80Context* ctx) -{ - BR.H = read8(ctx, ctx->PC++); - -} - - -static void LD_H_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.H); -} - - -static void LD_H_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.H); -} - - -static void LD_H_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.H); - -} - - -static void LD_H_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.H); - -} - - -static void LD_H_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.H); - -} - - -static void LD_H_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.H); - -} - - -static void LD_H_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.H); - -} - - -static void LD_H_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.H); - -} - - -static void LD_H_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.H); - -} - - -static void LD_H_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.H = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.H); - -} - - -static void LD_HL_off_nn (Z80Context* ctx) -{ - WR.HL = read16(ctx, ctx->PC); - ctx->PC += 2; -} - - -static void LD_HL_nn (Z80Context* ctx) -{ - WR.HL = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LD_I_A (Z80Context* ctx) -{ - ctx->I = BR.A; -} - - -static void LD_IX_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - WR.IX = read16(ctx, addr); -} - - -static void LD_IX_nn (Z80Context* ctx) -{ - WR.IX = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LD_IXh_A (Z80Context* ctx) -{ - BR.IXh = BR.A; -} - - -static void LD_IXh_B (Z80Context* ctx) -{ - BR.IXh = BR.B; -} - - -static void LD_IXh_C (Z80Context* ctx) -{ - BR.IXh = BR.C; -} - - -static void LD_IXh_D (Z80Context* ctx) -{ - BR.IXh = BR.D; -} - - -static void LD_IXh_E (Z80Context* ctx) -{ - BR.IXh = BR.E; -} - - -static void LD_IXh_IXh (Z80Context* ctx) -{ - BR.IXh = BR.IXh; -} - - -static void LD_IXh_IXl (Z80Context* ctx) -{ - BR.IXh = BR.IXl; -} - - -static void LD_IXh_n (Z80Context* ctx) -{ - BR.IXh = read8(ctx, ctx->PC++); - -} - - -static void LD_IXl_A (Z80Context* ctx) -{ - BR.IXl = BR.A; -} - - -static void LD_IXl_B (Z80Context* ctx) -{ - BR.IXl = BR.B; -} - - -static void LD_IXl_C (Z80Context* ctx) -{ - BR.IXl = BR.C; -} - - -static void LD_IXl_D (Z80Context* ctx) -{ - BR.IXl = BR.D; -} - - -static void LD_IXl_E (Z80Context* ctx) -{ - BR.IXl = BR.E; -} - - -static void LD_IXl_IXh (Z80Context* ctx) -{ - BR.IXl = BR.IXh; -} - - -static void LD_IXl_IXl (Z80Context* ctx) -{ - BR.IXl = BR.IXl; -} - - -static void LD_IXl_n (Z80Context* ctx) -{ - BR.IXl = read8(ctx, ctx->PC++); - -} - - -static void LD_IY_off_nn (Z80Context* ctx) -{ - ushort addr = read16(ctx, ctx->PC); - ctx->PC += 2; - WR.IY = read16(ctx, addr); -} - - -static void LD_IY_nn (Z80Context* ctx) -{ - WR.IY = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LD_IYh_A (Z80Context* ctx) -{ - BR.IYh = BR.A; -} - - -static void LD_IYh_B (Z80Context* ctx) -{ - BR.IYh = BR.B; -} - - -static void LD_IYh_C (Z80Context* ctx) -{ - BR.IYh = BR.C; -} - - -static void LD_IYh_D (Z80Context* ctx) -{ - BR.IYh = BR.D; -} - - -static void LD_IYh_E (Z80Context* ctx) -{ - BR.IYh = BR.E; -} - - -static void LD_IYh_IYh (Z80Context* ctx) -{ - BR.IYh = BR.IYh; -} - - -static void LD_IYh_IYl (Z80Context* ctx) -{ - BR.IYh = BR.IYl; -} - - -static void LD_IYh_n (Z80Context* ctx) -{ - BR.IYh = read8(ctx, ctx->PC++); - -} - - -static void LD_IYl_A (Z80Context* ctx) -{ - BR.IYl = BR.A; -} - - -static void LD_IYl_B (Z80Context* ctx) -{ - BR.IYl = BR.B; -} - - -static void LD_IYl_C (Z80Context* ctx) -{ - BR.IYl = BR.C; -} - - -static void LD_IYl_D (Z80Context* ctx) -{ - BR.IYl = BR.D; -} - - -static void LD_IYl_E (Z80Context* ctx) -{ - BR.IYl = BR.E; -} - - -static void LD_IYl_IYh (Z80Context* ctx) -{ - BR.IYl = BR.IYh; -} - - -static void LD_IYl_IYl (Z80Context* ctx) -{ - BR.IYl = BR.IYl; -} - - -static void LD_IYl_n (Z80Context* ctx) -{ - BR.IYl = read8(ctx, ctx->PC++); - -} - - -static void LD_L_off_HL (Z80Context* ctx) -{ - BR.L = read8(ctx, WR.HL); -} - - -static void LD_L_off_IX_d (Z80Context* ctx) -{ - BR.L = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); -} - - -static void LD_L_off_IY_d (Z80Context* ctx) -{ - BR.L = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); -} - - -static void LD_L_A (Z80Context* ctx) -{ - BR.L = BR.A; -} - - -static void LD_L_B (Z80Context* ctx) -{ - BR.L = BR.B; -} - - -static void LD_L_C (Z80Context* ctx) -{ - BR.L = BR.C; -} - - -static void LD_L_D (Z80Context* ctx) -{ - BR.L = BR.D; -} - - -static void LD_L_E (Z80Context* ctx) -{ - BR.L = BR.E; -} - - -static void LD_L_H (Z80Context* ctx) -{ - BR.L = BR.H; -} - - -static void LD_L_L (Z80Context* ctx) -{ - BR.L = BR.L; -} - - -static void LD_L_n (Z80Context* ctx) -{ - BR.L = read8(ctx, ctx->PC++); - -} - - -static void LD_L_RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRL(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRL(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRLC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRLC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRR(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRR(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRRC(ctx, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doRRC(ctx, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); - write8(ctx, WR.IX + off, BR.L); -} - - -static void LD_L_SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); - write8(ctx, WR.IY + off, BR.L); -} - - -static void LD_L_SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSL(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.L); - -} - - -static void LD_L_SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSL(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.L); - -} - - -static void LD_L_SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSL(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.L); - -} - - -static void LD_L_SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSL(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.L); - -} - - -static void LD_L_SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSR(ctx, read8(ctx, WR.IX + off), 1); - write8(ctx, WR.IX + off, BR.L); - -} - - -static void LD_L_SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSR(ctx, read8(ctx, WR.IY + off), 1); - write8(ctx, WR.IY + off, BR.L); - -} - - -static void LD_L_SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSR(ctx, read8(ctx, WR.IX + off), 0); - write8(ctx, WR.IX + off, BR.L); - -} - - -static void LD_L_SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - BR.L = doSR(ctx, read8(ctx, WR.IY + off), 0); - write8(ctx, WR.IY + off, BR.L); - -} - - -static void LD_R_A (Z80Context* ctx) -{ - ctx->R = BR.A; -} - - -static void LD_SP_off_nn (Z80Context* ctx) -{ - WR.SP = read16(ctx, ctx->PC); - ctx->PC += 2; -} - - -static void LD_SP_HL (Z80Context* ctx) -{ - WR.SP = WR.HL; -} - - -static void LD_SP_IX (Z80Context* ctx) -{ - WR.SP = WR.IX; -} - - -static void LD_SP_IY (Z80Context* ctx) -{ - WR.SP = WR.IY; -} - - -static void LD_SP_nn (Z80Context* ctx) -{ - WR.SP = read16(ctx, ctx->PC); - ctx->PC += 2; - -} - - -static void LDD (Z80Context* ctx) -{ - byte val = read8(ctx, WR.HL); - write8(ctx, WR.DE, val); - WR.DE--; - WR.HL--; - WR.BC--; - - VALFLAG(F_5, ((BR.A + val) & F_5) != 0); - VALFLAG(F_3, ((BR.A + val) & F_3) != 0); - RESFLAG(F_H | F_N); - VALFLAG(F_PV, WR.BC != 0); - -} - - -static void LDDR (Z80Context* ctx) -{ - do - { - LDD(ctx); - } while (WR.BC); -} - - -static void LDI (Z80Context* ctx) -{ - byte val = read8(ctx, WR.HL); - write8(ctx, WR.DE, val); - WR.DE++; - WR.HL++; - WR.BC--; - - VALFLAG(F_5, ((BR.A + val) & F_5) != 0); - VALFLAG(F_3, ((BR.A + val) & F_3) != 0); - RESFLAG(F_H | F_N); - VALFLAG(F_PV, WR.BC != 0); -} - - -static void LDIR (Z80Context* ctx) -{ - do - { - LDI(ctx); - } while (WR.BC); -} - - -static void NEG (Z80Context* ctx) -{ - CPL(ctx); -} - - -static void NOP (Z80Context* ctx) -{ - /* NOP */ - -} - - -static void OR_off_HL (Z80Context* ctx) -{ - doOR(ctx, read8(ctx, WR.HL)); -} - - -static void OR_off_IX_d (Z80Context* ctx) -{ - doOR(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); -} - - -static void OR_off_IY_d (Z80Context* ctx) -{ - doOR(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); -} - - -static void OR_A (Z80Context* ctx) -{ - doOR(ctx, BR.A); -} - - -static void OR_B (Z80Context* ctx) -{ - doOR(ctx, BR.B); -} - - -static void OR_C (Z80Context* ctx) -{ - doOR(ctx, BR.C); -} - - -static void OR_D (Z80Context* ctx) -{ - doOR(ctx, BR.D); -} - - -static void OR_E (Z80Context* ctx) -{ - doOR(ctx, BR.E); -} - - -static void OR_H (Z80Context* ctx) -{ - doOR(ctx, BR.H); -} - - -static void OR_IXh (Z80Context* ctx) -{ - doOR(ctx, BR.IXh); -} - - -static void OR_IXl (Z80Context* ctx) -{ - doOR(ctx, BR.IXl); -} - - -static void OR_IYh (Z80Context* ctx) -{ - doOR(ctx, BR.IYh); -} - - -static void OR_IYl (Z80Context* ctx) -{ - doOR(ctx, BR.IYl); -} - - -static void OR_L (Z80Context* ctx) -{ - doOR(ctx, BR.L); -} - - -static void OR_n (Z80Context* ctx) -{ - doOR(ctx, read8(ctx, ctx->PC++)); -} - - -static void OTDR (Z80Context* ctx) -{ - do - { - OUTD(ctx); - } while (BR.B); - SETFLAG(F_Z); - RESFLAG(F_S | F_5 | F_3); -} - - -static void OTIR (Z80Context* ctx) -{ - do - { - OUTI(ctx); - } while (BR.B); - SETFLAG(F_Z); - RESFLAG(F_S | F_5 | F_3); -} - - -static void OUT_off_C_0 (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, 0); - -} - - -static void OUT_off_C_A (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.A); -} - - -static void OUT_off_C_B (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.B); -} - - -static void OUT_off_C_C (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.C); -} - - -static void OUT_off_C_D (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.D); -} - - -static void OUT_off_C_E (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.E); -} - - -static void OUT_off_C_H (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.H); -} - - -static void OUT_off_C_L (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, BR.L); -} - - -static void OUT_off_n_A (Z80Context* ctx) -{ - ioWrite(ctx, read8(ctx, ctx->PC++), BR.A); -} - - -static void OUTD (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, read8(ctx, WR.HL)); - WR.HL--; - BR.B = doIncDec(ctx, BR.B, 1); -} - - -static void OUTI (Z80Context* ctx) -{ - ioWrite(ctx, BR.C, read8(ctx, WR.HL)); - WR.HL++; - BR.B = doIncDec(ctx, BR.B, 1); -} - - -static void POP_AF (Z80Context* ctx) -{ - WR.AF = doPop(ctx); -} - - -static void POP_BC (Z80Context* ctx) -{ - WR.BC = doPop(ctx); -} - - -static void POP_DE (Z80Context* ctx) -{ - WR.DE = doPop(ctx); -} - - -static void POP_HL (Z80Context* ctx) -{ - WR.HL = doPop(ctx); -} - - -static void POP_IX (Z80Context* ctx) -{ - WR.IX = doPop(ctx); -} - - -static void POP_IY (Z80Context* ctx) -{ - WR.IY = doPop(ctx); -} - - -static void PUSH_AF (Z80Context* ctx) -{ - doPush(ctx, WR.AF); -} - - -static void PUSH_BC (Z80Context* ctx) -{ - doPush(ctx, WR.BC); -} - - -static void PUSH_DE (Z80Context* ctx) -{ - doPush(ctx, WR.DE); -} - - -static void PUSH_HL (Z80Context* ctx) -{ - doPush(ctx, WR.HL); -} - - -static void PUSH_IX (Z80Context* ctx) -{ - doPush(ctx, WR.IX); -} - - -static void PUSH_IY (Z80Context* ctx) -{ - doPush(ctx, WR.IY); -} - - -static void RES_0_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.HL))); -} - - -static void RES_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off))); - - -} - - -static void RES_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off))); - - -} - - -static void RES_0_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 0, BR.A); -} - - -static void RES_0_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 0, BR.B); -} - - -static void RES_0_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 0, BR.C); -} - - -static void RES_0_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 0, BR.D); -} - - -static void RES_0_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 0, BR.E); -} - - -static void RES_0_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 0, BR.H); -} - - -static void RES_0_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 0, BR.L); -} - - -static void RES_1_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.HL))); -} - - -static void RES_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off))); - - -} - - -static void RES_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off))); - - -} - - -static void RES_1_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 1, BR.A); -} - - -static void RES_1_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 1, BR.B); -} - - -static void RES_1_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 1, BR.C); -} - - -static void RES_1_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 1, BR.D); -} - - -static void RES_1_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 1, BR.E); -} - - -static void RES_1_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 1, BR.H); -} - - -static void RES_1_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 1, BR.L); -} - - -static void RES_2_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.HL))); -} - - -static void RES_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off))); - - -} - - -static void RES_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off))); - - -} - - -static void RES_2_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 2, BR.A); -} - - -static void RES_2_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 2, BR.B); -} - - -static void RES_2_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 2, BR.C); -} - - -static void RES_2_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 2, BR.D); -} - - -static void RES_2_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 2, BR.E); -} - - -static void RES_2_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 2, BR.H); -} - - -static void RES_2_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 2, BR.L); -} - - -static void RES_3_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.HL))); -} - - -static void RES_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off))); - - -} - - -static void RES_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off))); - - -} - - -static void RES_3_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 3, BR.A); -} - - -static void RES_3_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 3, BR.B); -} - - -static void RES_3_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 3, BR.C); -} - - -static void RES_3_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 3, BR.D); -} - - -static void RES_3_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 3, BR.E); -} - - -static void RES_3_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 3, BR.H); -} - - -static void RES_3_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 3, BR.L); -} - - -static void RES_4_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.HL))); -} - - -static void RES_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off))); - - -} - - -static void RES_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off))); - - -} - - -static void RES_4_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 4, BR.A); -} - - -static void RES_4_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 4, BR.B); -} - - -static void RES_4_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 4, BR.C); -} - - -static void RES_4_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 4, BR.D); -} - - -static void RES_4_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 4, BR.E); -} - - -static void RES_4_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 4, BR.H); -} - - -static void RES_4_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 4, BR.L); -} - - -static void RES_5_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.HL))); -} - - -static void RES_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off))); - - -} - - -static void RES_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off))); - - -} - - -static void RES_5_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 5, BR.A); -} - - -static void RES_5_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 5, BR.B); -} - - -static void RES_5_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 5, BR.C); -} - - -static void RES_5_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 5, BR.D); -} - - -static void RES_5_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 5, BR.E); -} - - -static void RES_5_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 5, BR.H); -} - - -static void RES_5_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 5, BR.L); -} - - -static void RES_6_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.HL))); -} - - -static void RES_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off))); - - -} - - -static void RES_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off))); - - -} - - -static void RES_6_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 6, BR.A); -} - - -static void RES_6_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 6, BR.B); -} - - -static void RES_6_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 6, BR.C); -} - - -static void RES_6_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 6, BR.D); -} - - -static void RES_6_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 6, BR.E); -} - - -static void RES_6_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 6, BR.H); -} - - -static void RES_6_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 6, BR.L); -} - - -static void RES_7_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.HL))); -} - - -static void RES_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off))); - - -} - - -static void RES_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off))); - - -} - - -static void RES_7_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_RES, 7, BR.A); -} - - -static void RES_7_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_RES, 7, BR.B); -} - - -static void RES_7_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_RES, 7, BR.C); -} - - -static void RES_7_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_RES, 7, BR.D); -} - - -static void RES_7_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_RES, 7, BR.E); -} - - -static void RES_7_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_RES, 7, BR.H); -} - - -static void RES_7_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_RES, 7, BR.L); -} - - -static void RET (Z80Context* ctx) -{ - ctx->PC = doPop(ctx); -} - - -static void RET_C (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_C)) - ctx->PC = doPop(ctx); - -} - - -static void RET_M (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_M)) - ctx->PC = doPop(ctx); - -} - - -static void RET_NC (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_NC)) - ctx->PC = doPop(ctx); - -} - - -static void RET_NZ (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_NZ)) - ctx->PC = doPop(ctx); - -} - - -static void RET_P (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_P)) - ctx->PC = doPop(ctx); - -} - - -static void RET_PE (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_PE)) - ctx->PC = doPop(ctx); - -} - - -static void RET_PO (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_PO)) - ctx->PC = doPop(ctx); - -} - - -static void RET_Z (Z80Context* ctx) -{ - if (ctx, condition(ctx, C_Z)) - ctx->PC = doPop(ctx); - -} - - -static void RETI (Z80Context* ctx) -{ - ctx->IFF1 = ctx->IFF2; - RET (ctx); - -} - - -static void RETN (Z80Context* ctx) -{ - ctx->IFF1 = ctx->IFF2; - RET(ctx); -} - - -static void RL_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doRL(ctx, 1, read8(ctx, WR.HL))); - -} - - -static void RL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doRL(ctx, 1, read8(ctx, WR.IX + off))); -} - - -static void RL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doRL(ctx, 1, read8(ctx, WR.IY + off))); -} - - -static void RL_A (Z80Context* ctx) -{ - BR.A = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_B (Z80Context* ctx) -{ - BR.B = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_C (Z80Context* ctx) -{ - BR.C = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_D (Z80Context* ctx) -{ - BR.D = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_E (Z80Context* ctx) -{ - BR.E = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_H (Z80Context* ctx) -{ - BR.H = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RL_L (Z80Context* ctx) -{ - BR.L = doRL(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLA (Z80Context* ctx) -{ - BR.A = doRL(ctx, 0, BR.A); - - -} - - -static void RLC_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doRLC(ctx, 1, read8(ctx, WR.HL))); - -} - - -static void RLC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doRLC(ctx, 1, read8(ctx, WR.IX + off))); -} - - -static void RLC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doRLC(ctx, 1, read8(ctx, WR.IY + off))); -} - - -static void RLC_A (Z80Context* ctx) -{ - BR.A = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_B (Z80Context* ctx) -{ - BR.B = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_C (Z80Context* ctx) -{ - BR.C = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_D (Z80Context* ctx) -{ - BR.D = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_E (Z80Context* ctx) -{ - BR.E = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_H (Z80Context* ctx) -{ - BR.H = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLC_L (Z80Context* ctx) -{ - BR.L = doRLC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RLCA (Z80Context* ctx) -{ - BR.A = doRLC(ctx, 0, BR.A); - - -} - - -static void RLD (Z80Context* ctx) -{ - byte Ah = BR.A & 0xF0; - byte hl = read8(ctx, WR.HL); - - BR.A = (BR.A & 0x0F) | ((hl & 0x0F) << 4); - hl = (hl << 4) | Ah; - write8(ctx, WR.HL, hl); - - -} - - -static void RR_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doRR(ctx, 1, read8(ctx, WR.HL))); - -} - - -static void RR_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doRR(ctx, 1, read8(ctx, WR.IX + off))); -} - - -static void RR_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doRR(ctx, 1, read8(ctx, WR.IY + off))); -} - - -static void RR_A (Z80Context* ctx) -{ - BR.A = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_B (Z80Context* ctx) -{ - BR.B = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_C (Z80Context* ctx) -{ - BR.C = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_D (Z80Context* ctx) -{ - BR.D = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_E (Z80Context* ctx) -{ - BR.E = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_H (Z80Context* ctx) -{ - BR.H = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RR_L (Z80Context* ctx) -{ - BR.L = doRR(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRA (Z80Context* ctx) -{ - BR.A = doRR(ctx, 0, BR.A); - - -} - - -static void RRC_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doRRC(ctx, 1, read8(ctx, WR.HL))); - -} - - -static void RRC_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doRRC(ctx, 1, read8(ctx, WR.IX + off))); -} - - -static void RRC_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doRRC(ctx, 1, read8(ctx, WR.IY + off))); -} - - -static void RRC_A (Z80Context* ctx) -{ - BR.A = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_B (Z80Context* ctx) -{ - BR.B = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_C (Z80Context* ctx) -{ - BR.C = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_D (Z80Context* ctx) -{ - BR.D = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_E (Z80Context* ctx) -{ - BR.E = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_H (Z80Context* ctx) -{ - BR.H = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRC_L (Z80Context* ctx) -{ - BR.L = doRRC(ctx, 1, read8(ctx, WR.HL)); -} - - -static void RRCA (Z80Context* ctx) -{ - BR.A = doRRC(ctx, 0, BR.A); - - -} - - -static void RRD (Z80Context* ctx) -{ - byte Ah = BR.A & 0xF0; - byte hl = read8(ctx, WR.HL); - - BR.A = (BR.A & 0x0F) | (hl & 0xF0); - hl = (hl >> 4) | (Ah << 4); - - write8(ctx, WR.HL, hl); - - -} - - -static void RST_0H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x00; - - -} - - -static void RST_10H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x010; - - -} - - -static void RST_18H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x018; - - -} - - -static void RST_20H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x020; - - -} - - -static void RST_28H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x028; - - -} - - -static void RST_30H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x030; - - -} - - -static void RST_38H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x038; - - -} - - -static void RST_8H (Z80Context* ctx) -{ - doPush(ctx, ctx->PC); - ctx->PC = 0x08; - - -} - - -static void SBC_A_off_HL (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_SBC, F2_SBC); -} - - -static void SBC_A_off_IX_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_SBC, F2_SBC); - -} - - -static void SBC_A_off_IY_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_SBC, F2_SBC); - -} - - -static void SBC_A_A (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.A, F1_SBC, F2_SBC); -} - - -static void SBC_A_B (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.B, F1_SBC, F2_SBC); -} - - -static void SBC_A_C (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.C, F1_SBC, F2_SBC); -} - - -static void SBC_A_D (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.D, F1_SBC, F2_SBC); -} - - -static void SBC_A_E (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.E, F1_SBC, F2_SBC); -} - - -static void SBC_A_H (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.H, F1_SBC, F2_SBC); -} - - -static void SBC_A_IXh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXh, F1_SBC, F2_SBC); -} - - -static void SBC_A_IXl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXl, F1_SBC, F2_SBC); -} - - -static void SBC_A_IYh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYh, F1_SBC, F2_SBC); -} - - -static void SBC_A_IYl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYl, F1_SBC, F2_SBC); -} - - -static void SBC_A_L (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.L, F1_SBC, F2_SBC); -} - - -static void SBC_A_n (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_SBC, F2_SBC); -} - - -static void SBC_HL_BC (Z80Context* ctx) -{ - WR.HL -= WR.BC + GETFLAG(F_C); - -} - - -static void SBC_HL_DE (Z80Context* ctx) -{ - WR.HL -= WR.DE + GETFLAG(F_C); - -} - - -static void SBC_HL_HL (Z80Context* ctx) -{ - WR.HL -= WR.HL + GETFLAG(F_C); - -} - - -static void SBC_HL_SP (Z80Context* ctx) -{ - WR.HL -= WR.SP + GETFLAG(F_C); - -} - - -static void SCF (Z80Context* ctx) -{ - SETFLAG(F_C); - RESFLAG(F_N | F_H); -} - - -static void SET_0_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.HL))); -} - - -static void SET_0_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off))); - - -} - - -static void SET_0_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off))); - - -} - - -static void SET_0_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 0, BR.A); -} - - -static void SET_0_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 0, BR.B); -} - - -static void SET_0_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 0, BR.C); -} - - -static void SET_0_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 0, BR.D); -} - - -static void SET_0_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 0, BR.E); -} - - -static void SET_0_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 0, BR.H); -} - - -static void SET_0_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 0, BR.L); -} - - -static void SET_1_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.HL))); -} - - -static void SET_1_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off))); - - -} - - -static void SET_1_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off))); - - -} - - -static void SET_1_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 1, BR.A); -} - - -static void SET_1_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 1, BR.B); -} - - -static void SET_1_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 1, BR.C); -} - - -static void SET_1_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 1, BR.D); -} - - -static void SET_1_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 1, BR.E); -} - - -static void SET_1_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 1, BR.H); -} - - -static void SET_1_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 1, BR.L); -} - - -static void SET_2_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.HL))); -} - - -static void SET_2_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off))); - - -} - - -static void SET_2_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off))); - - -} - - -static void SET_2_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 2, BR.A); -} - - -static void SET_2_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 2, BR.B); -} - - -static void SET_2_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 2, BR.C); -} - - -static void SET_2_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 2, BR.D); -} - - -static void SET_2_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 2, BR.E); -} - - -static void SET_2_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 2, BR.H); -} - - -static void SET_2_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 2, BR.L); -} - - -static void SET_3_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.HL))); -} - - -static void SET_3_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off))); - - -} - - -static void SET_3_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off))); - - -} - - -static void SET_3_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 3, BR.A); -} - - -static void SET_3_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 3, BR.B); -} - - -static void SET_3_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 3, BR.C); -} - - -static void SET_3_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 3, BR.D); -} - - -static void SET_3_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 3, BR.E); -} - - -static void SET_3_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 3, BR.H); -} - - -static void SET_3_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 3, BR.L); -} - - -static void SET_4_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.HL))); -} - - -static void SET_4_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off))); - - -} - - -static void SET_4_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off))); - - -} - - -static void SET_4_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 4, BR.A); -} - - -static void SET_4_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 4, BR.B); -} - - -static void SET_4_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 4, BR.C); -} - - -static void SET_4_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 4, BR.D); -} - - -static void SET_4_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 4, BR.E); -} - - -static void SET_4_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 4, BR.H); -} - - -static void SET_4_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 4, BR.L); -} - - -static void SET_5_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.HL))); -} - - -static void SET_5_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off))); - - -} - - -static void SET_5_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off))); - - -} - - -static void SET_5_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 5, BR.A); -} - - -static void SET_5_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 5, BR.B); -} - - -static void SET_5_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 5, BR.C); -} - - -static void SET_5_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 5, BR.D); -} - - -static void SET_5_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 5, BR.E); -} - - -static void SET_5_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 5, BR.H); -} - - -static void SET_5_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 5, BR.L); -} - - -static void SET_6_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.HL))); -} - - -static void SET_6_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off))); - - -} - - -static void SET_6_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off))); - - -} - - -static void SET_6_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 6, BR.A); -} - - -static void SET_6_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 6, BR.B); -} - - -static void SET_6_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 6, BR.C); -} - - -static void SET_6_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 6, BR.D); -} - - -static void SET_6_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 6, BR.E); -} - - -static void SET_6_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 6, BR.H); -} - - -static void SET_6_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 6, BR.L); -} - - -static void SET_7_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.HL))); -} - - -static void SET_7_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off))); - - -} - - -static void SET_7_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off))); - - -} - - -static void SET_7_A (Z80Context* ctx) -{ - BR.A = doSetRes(ctx, SR_SET, 7, BR.A); -} - - -static void SET_7_B (Z80Context* ctx) -{ - BR.B = doSetRes(ctx, SR_SET, 7, BR.B); -} - - -static void SET_7_C (Z80Context* ctx) -{ - BR.C = doSetRes(ctx, SR_SET, 7, BR.C); -} - - -static void SET_7_D (Z80Context* ctx) -{ - BR.D = doSetRes(ctx, SR_SET, 7, BR.D); -} - - -static void SET_7_E (Z80Context* ctx) -{ - BR.E = doSetRes(ctx, SR_SET, 7, BR.E); -} - - -static void SET_7_H (Z80Context* ctx) -{ - BR.H = doSetRes(ctx, SR_SET, 7, BR.H); -} - - -static void SET_7_L (Z80Context* ctx) -{ - BR.L = doSetRes(ctx, SR_SET, 7, BR.L); -} - - -static void SLA_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSL(ctx, read8(ctx, WR.HL), IA_A)); -} - - -static void SLA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSL(ctx, read8(ctx, WR.IX + off), IA_A)); -} - - -static void SLA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSL(ctx, read8(ctx, WR.IY + off), IA_A)); -} - - -static void SLA_A (Z80Context* ctx) -{ - BR.A = doSL(ctx, BR.A, IA_A); - - -} - - -static void SLA_B (Z80Context* ctx) -{ - BR.B = doSL(ctx, BR.B, IA_A); - - -} - - -static void SLA_C (Z80Context* ctx) -{ - BR.C = doSL(ctx, BR.C, IA_A); - - -} - - -static void SLA_D (Z80Context* ctx) -{ - BR.D = doSL(ctx, BR.D, IA_A); - - -} - - -static void SLA_E (Z80Context* ctx) -{ - BR.E = doSL(ctx, BR.E, IA_A); - - -} - - -static void SLA_H (Z80Context* ctx) -{ - BR.H = doSL(ctx, BR.H, IA_A); - - -} - - -static void SLA_L (Z80Context* ctx) -{ - BR.L = doSL(ctx, BR.L, IA_A); - - -} - - -static void SLL_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSL(ctx, read8(ctx, WR.HL), IA_L)); -} - - -static void SLL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSL(ctx, read8(ctx, WR.IX + off), IA_L)); -} - - -static void SLL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSL(ctx, read8(ctx, WR.IY + off), IA_L)); -} - - -static void SLL_A (Z80Context* ctx) -{ - BR.A = doSL(ctx, BR.A, IA_L); - - -} - - -static void SLL_B (Z80Context* ctx) -{ - BR.B = doSL(ctx, BR.B, IA_L); - - -} - - -static void SLL_C (Z80Context* ctx) -{ - BR.C = doSL(ctx, BR.C, IA_L); - - -} - - -static void SLL_D (Z80Context* ctx) -{ - BR.D = doSL(ctx, BR.D, IA_L); - - -} - - -static void SLL_E (Z80Context* ctx) -{ - BR.E = doSL(ctx, BR.E, IA_L); - - -} - - -static void SLL_H (Z80Context* ctx) -{ - BR.H = doSL(ctx, BR.H, IA_L); - - -} - - -static void SLL_L (Z80Context* ctx) -{ - BR.L = doSL(ctx, BR.L, IA_L); - - -} - - -static void SRA_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSR(ctx, read8(ctx, WR.HL), IA_A)); -} - - -static void SRA_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSR(ctx, read8(ctx, WR.IX + off), IA_A)); -} - - -static void SRA_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSR(ctx, read8(ctx, WR.IY + off), IA_A)); -} - - -static void SRA_A (Z80Context* ctx) -{ - BR.A = doSR(ctx, BR.A, IA_A); - - -} - - -static void SRA_B (Z80Context* ctx) -{ - BR.B = doSR(ctx, BR.B, IA_A); - - -} - - -static void SRA_C (Z80Context* ctx) -{ - BR.C = doSR(ctx, BR.C, IA_A); - - -} - - -static void SRA_D (Z80Context* ctx) -{ - BR.D = doSR(ctx, BR.D, IA_A); - - -} - - -static void SRA_E (Z80Context* ctx) -{ - BR.E = doSR(ctx, BR.E, IA_A); - - -} - - -static void SRA_H (Z80Context* ctx) -{ - BR.H = doSR(ctx, BR.H, IA_A); - - -} - - -static void SRA_L (Z80Context* ctx) -{ - BR.L = doSR(ctx, BR.L, IA_A); - - -} - - -static void SRL_off_HL (Z80Context* ctx) -{ - write8(ctx, WR.HL, doSR(ctx, read8(ctx, WR.HL), IA_L)); -} - - -static void SRL_off_IX_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IX + off, doSR(ctx, read8(ctx, WR.IX + off), IA_L)); -} - - -static void SRL_off_IY_d (Z80Context* ctx) -{ - byte off = read8(ctx, ctx->PC++); - write8(ctx, WR.IY + off, doSR(ctx, read8(ctx, WR.IY + off), IA_L)); -} - - -static void SRL_A (Z80Context* ctx) -{ - BR.A = doSR(ctx, BR.A, IA_L); - - -} - - -static void SRL_B (Z80Context* ctx) -{ - BR.B = doSR(ctx, BR.B, IA_L); - - -} - - -static void SRL_C (Z80Context* ctx) -{ - BR.C = doSR(ctx, BR.C, IA_L); - - -} - - -static void SRL_D (Z80Context* ctx) -{ - BR.D = doSR(ctx, BR.D, IA_L); - - -} - - -static void SRL_E (Z80Context* ctx) -{ - BR.E = doSR(ctx, BR.E, IA_L); - - -} - - -static void SRL_H (Z80Context* ctx) -{ - BR.H = doSR(ctx, BR.H, IA_L); - - -} - - -static void SRL_L (Z80Context* ctx) -{ - BR.L = doSR(ctx, BR.L, IA_L); - - -} - - -static void SUB_A_off_HL (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_SUB, F2_SUB); -} - - -static void SUB_A_off_IX_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_SUB, F2_SUB); - -} - - -static void SUB_A_off_IY_d (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_SUB, F2_SUB); - -} - - -static void SUB_A_A (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.A, F1_SUB, F2_SUB); -} - - -static void SUB_A_B (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.B, F1_SUB, F2_SUB); -} - - -static void SUB_A_C (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.C, F1_SUB, F2_SUB); -} - - -static void SUB_A_D (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.D, F1_SUB, F2_SUB); -} - - -static void SUB_A_E (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.E, F1_SUB, F2_SUB); -} - - -static void SUB_A_H (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.H, F1_SUB, F2_SUB); -} - - -static void SUB_A_IXh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXh, F1_SUB, F2_SUB); -} - - -static void SUB_A_IXl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IXl, F1_SUB, F2_SUB); -} - - -static void SUB_A_IYh (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYh, F1_SUB, F2_SUB); -} - - -static void SUB_A_IYl (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.IYl, F1_SUB, F2_SUB); -} - - -static void SUB_A_L (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, BR.L, F1_SUB, F2_SUB); -} - - -static void SUB_A_n (Z80Context* ctx) -{ - BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_SUB, F2_SUB); -} - - -static void XOR_off_HL (Z80Context* ctx) -{ - doXOR(ctx, read8(ctx, WR.HL)); -} - - -static void XOR_off_IX_d (Z80Context* ctx) -{ - doXOR(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); -} - - -static void XOR_off_IY_d (Z80Context* ctx) -{ - doXOR(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); -} - - -static void XOR_A (Z80Context* ctx) -{ - doXOR(ctx, BR.A); -} - - -static void XOR_B (Z80Context* ctx) -{ - doXOR(ctx, BR.B); -} - - -static void XOR_C (Z80Context* ctx) -{ - doXOR(ctx, BR.C); -} - - -static void XOR_D (Z80Context* ctx) -{ - doXOR(ctx, BR.D); -} - - -static void XOR_E (Z80Context* ctx) -{ - doXOR(ctx, BR.E); -} - - -static void XOR_H (Z80Context* ctx) -{ - doXOR(ctx, BR.H); -} - - -static void XOR_IXh (Z80Context* ctx) -{ - doXOR(ctx, BR.IXh); -} - - -static void XOR_IXl (Z80Context* ctx) -{ - doXOR(ctx, BR.IXl); -} - - -static void XOR_IYh (Z80Context* ctx) -{ - doXOR(ctx, BR.IYh); -} - - -static void XOR_IYl (Z80Context* ctx) -{ - doXOR(ctx, BR.IYl); -} - - -static void XOR_L (Z80Context* ctx) -{ - doXOR(ctx, BR.L); -} - - -static void XOR_n (Z80Context* ctx) -{ - doXOR(ctx, read8(ctx, ctx->PC++)); -}
diff -r b612024f5aee -r 78a39c3a30f6 opcodes_impl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/opcodes_impl.h Sat Mar 12 22:39:10 2011 +0000 @@ -0,0 +1,8164 @@ +static void ADC_A_off_HL (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_ADC, F2_ADC); +} + + +static void ADC_A_off_IX_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_ADC, F2_ADC); + +} + + +static void ADC_A_off_IY_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_ADC, F2_ADC); + +} + + +static void ADC_A_A (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.A, F1_ADC, F2_ADC); +} + + +static void ADC_A_B (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.B, F1_ADC, F2_ADC); +} + + +static void ADC_A_C (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.C, F1_ADC, F2_ADC); +} + + +static void ADC_A_D (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.D, F1_ADC, F2_ADC); +} + + +static void ADC_A_E (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.E, F1_ADC, F2_ADC); +} + + +static void ADC_A_H (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.H, F1_ADC, F2_ADC); +} + + +static void ADC_A_IXh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXh, F1_ADC, F2_ADC); +} + + +static void ADC_A_IXl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXl, F1_ADC, F2_ADC); +} + + +static void ADC_A_IYh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYh, F1_ADC, F2_ADC); +} + + +static void ADC_A_IYl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYl, F1_ADC, F2_ADC); +} + + +static void ADC_A_L (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.L, F1_ADC, F2_ADC); +} + + +static void ADC_A_n (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_ADC, F2_ADC); +} + + +static void ADC_HL_BC (Z80Context* ctx) +{ + WR.HL += WR.BC + GETFLAG(F_C); +} + + +static void ADC_HL_DE (Z80Context* ctx) +{ + WR.HL += WR.DE + GETFLAG(F_C); +} + + +static void ADC_HL_HL (Z80Context* ctx) +{ + WR.HL += WR.HL + GETFLAG(F_C); +} + + +static void ADC_HL_SP (Z80Context* ctx) +{ + WR.HL += WR.SP + GETFLAG(F_C); +} + + +static void ADD_A_off_HL (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_ADD, F2_ADD); +} + + +static void ADD_A_off_IX_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_ADD, F2_ADD); + +} + + +static void ADD_A_off_IY_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_ADD, F2_ADD); + +} + + +static void ADD_A_A (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.A, F1_ADD, F2_ADD); +} + + +static void ADD_A_B (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.B, F1_ADD, F2_ADD); +} + + +static void ADD_A_C (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.C, F1_ADD, F2_ADD); +} + + +static void ADD_A_D (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.D, F1_ADD, F2_ADD); +} + + +static void ADD_A_E (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.E, F1_ADD, F2_ADD); +} + + +static void ADD_A_H (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.H, F1_ADD, F2_ADD); +} + + +static void ADD_A_IXh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXh, F1_ADD, F2_ADD); +} + + +static void ADD_A_IXl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXl, F1_ADD, F2_ADD); +} + + +static void ADD_A_IYh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYh, F1_ADD, F2_ADD); +} + + +static void ADD_A_IYl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYl, F1_ADD, F2_ADD); +} + + +static void ADD_A_L (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.L, F1_ADD, F2_ADD); +} + + +static void ADD_A_n (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_ADD, F2_ADD); +} + + +static void ADD_HL_BC (Z80Context* ctx) +{ + WR.HL += WR.BC; + +} + + +static void ADD_HL_DE (Z80Context* ctx) +{ + WR.HL += WR.DE; + +} + + +static void ADD_HL_HL (Z80Context* ctx) +{ + WR.HL += WR.HL; + +} + + +static void ADD_HL_SP (Z80Context* ctx) +{ + WR.HL += WR.SP; + +} + + +static void ADD_IX_BC (Z80Context* ctx) +{ + WR.IX += WR.BC; + + +} + + +static void ADD_IX_DE (Z80Context* ctx) +{ + WR.IX += WR.DE; + + +} + + +static void ADD_IX_IX (Z80Context* ctx) +{ + WR.IX += WR.IX; + + +} + + +static void ADD_IX_SP (Z80Context* ctx) +{ + WR.IX += WR.SP; + + +} + + +static void ADD_IY_BC (Z80Context* ctx) +{ + WR.IY += WR.BC; + + +} + + +static void ADD_IY_DE (Z80Context* ctx) +{ + WR.IY += WR.DE; + + +} + + +static void ADD_IY_IY (Z80Context* ctx) +{ + WR.IY += WR.IY; + + +} + + +static void ADD_IY_SP (Z80Context* ctx) +{ + WR.IY += WR.SP; + + +} + + +static void AND_off_HL (Z80Context* ctx) +{ + doAND(ctx, read8(ctx, WR.HL)); +} + + +static void AND_off_IX_d (Z80Context* ctx) +{ + doAND(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); +} + + +static void AND_off_IY_d (Z80Context* ctx) +{ + doAND(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); +} + + +static void AND_A (Z80Context* ctx) +{ + doAND(ctx, BR.A); +} + + +static void AND_B (Z80Context* ctx) +{ + doAND(ctx, BR.B); +} + + +static void AND_C (Z80Context* ctx) +{ + doAND(ctx, BR.C); +} + + +static void AND_D (Z80Context* ctx) +{ + doAND(ctx, BR.D); +} + + +static void AND_E (Z80Context* ctx) +{ + doAND(ctx, BR.E); +} + + +static void AND_H (Z80Context* ctx) +{ + doAND(ctx, BR.H); +} + + +static void AND_IXh (Z80Context* ctx) +{ + doAND(ctx, BR.IXh); +} + + +static void AND_IXl (Z80Context* ctx) +{ + doAND(ctx, BR.IXl); +} + + +static void AND_IYh (Z80Context* ctx) +{ + doAND(ctx, BR.IYh); +} + + +static void AND_IYl (Z80Context* ctx) +{ + doAND(ctx, BR.IYl); +} + + +static void AND_L (Z80Context* ctx) +{ + doAND(ctx, BR.L); +} + + +static void AND_n (Z80Context* ctx) +{ + doAND(ctx, read8(ctx, ctx->PC++)); +} + + +static void BIT_0_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 0, read8(ctx, WR.HL)); +} + + +static void BIT_0_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 0, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_0_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 0, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_0_A (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.A); +} + + +static void BIT_0_B (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.B); +} + + +static void BIT_0_C (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.C); +} + + +static void BIT_0_D (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.D); +} + + +static void BIT_0_E (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.E); +} + + +static void BIT_0_H (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.H); +} + + +static void BIT_0_L (Z80Context* ctx) +{ + doBIT(ctx, 0, BR.L); +} + + +static void BIT_1_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 1, read8(ctx, WR.HL)); +} + + +static void BIT_1_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 1, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_1_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 1, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_1_A (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.A); +} + + +static void BIT_1_B (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.B); +} + + +static void BIT_1_C (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.C); +} + + +static void BIT_1_D (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.D); +} + + +static void BIT_1_E (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.E); +} + + +static void BIT_1_H (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.H); +} + + +static void BIT_1_L (Z80Context* ctx) +{ + doBIT(ctx, 1, BR.L); +} + + +static void BIT_2_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 2, read8(ctx, WR.HL)); +} + + +static void BIT_2_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 2, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_2_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 2, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_2_A (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.A); +} + + +static void BIT_2_B (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.B); +} + + +static void BIT_2_C (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.C); +} + + +static void BIT_2_D (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.D); +} + + +static void BIT_2_E (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.E); +} + + +static void BIT_2_H (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.H); +} + + +static void BIT_2_L (Z80Context* ctx) +{ + doBIT(ctx, 2, BR.L); +} + + +static void BIT_3_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 3, read8(ctx, WR.HL)); +} + + +static void BIT_3_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 3, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_3_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 3, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_3_A (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.A); +} + + +static void BIT_3_B (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.B); +} + + +static void BIT_3_C (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.C); +} + + +static void BIT_3_D (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.D); +} + + +static void BIT_3_E (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.E); +} + + +static void BIT_3_H (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.H); +} + + +static void BIT_3_L (Z80Context* ctx) +{ + doBIT(ctx, 3, BR.L); +} + + +static void BIT_4_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 4, read8(ctx, WR.HL)); +} + + +static void BIT_4_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 4, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_4_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 4, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_4_A (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.A); +} + + +static void BIT_4_B (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.B); +} + + +static void BIT_4_C (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.C); +} + + +static void BIT_4_D (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.D); +} + + +static void BIT_4_E (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.E); +} + + +static void BIT_4_H (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.H); +} + + +static void BIT_4_L (Z80Context* ctx) +{ + doBIT(ctx, 4, BR.L); +} + + +static void BIT_5_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 5, read8(ctx, WR.HL)); +} + + +static void BIT_5_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 5, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_5_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 5, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_5_A (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.A); +} + + +static void BIT_5_B (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.B); +} + + +static void BIT_5_C (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.C); +} + + +static void BIT_5_D (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.D); +} + + +static void BIT_5_E (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.E); +} + + +static void BIT_5_H (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.H); +} + + +static void BIT_5_L (Z80Context* ctx) +{ + doBIT(ctx, 5, BR.L); +} + + +static void BIT_6_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 6, read8(ctx, WR.HL)); +} + + +static void BIT_6_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 6, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_6_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 6, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_6_A (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.A); +} + + +static void BIT_6_B (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.B); +} + + +static void BIT_6_C (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.C); +} + + +static void BIT_6_D (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.D); +} + + +static void BIT_6_E (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.E); +} + + +static void BIT_6_H (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.H); +} + + +static void BIT_6_L (Z80Context* ctx) +{ + doBIT(ctx, 6, BR.L); +} + + +static void BIT_7_off_HL (Z80Context* ctx) +{ + doBIT(ctx, 7, read8(ctx, WR.HL)); +} + + +static void BIT_7_off_IX_d (Z80Context* ctx) +{ + doBIT(ctx, 7, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); + +} + + +static void BIT_7_off_IY_d (Z80Context* ctx) +{ + doBIT(ctx, 7, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); + +} + + +static void BIT_7_A (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.A); +} + + +static void BIT_7_B (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.B); +} + + +static void BIT_7_C (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.C); +} + + +static void BIT_7_D (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.D); +} + + +static void BIT_7_E (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.E); +} + + +static void BIT_7_H (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.H); +} + + +static void BIT_7_L (Z80Context* ctx) +{ + doBIT(ctx, 7, BR.L); +} + + +static void CALL_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_C_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_C)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_M_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_M)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_NC_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_NC)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_NZ_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_NZ)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_P_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_P)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_PE_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_PE)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_PO_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_PO)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CALL_Z_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_Z)) + { + doPush(ctx, ctx->PC); + ctx->PC = addr; + } + +} + + +static void CCF (Z80Context* ctx) +{ + VALFLAG(F_C, (1 - (byte)GETFLAG(F_C) != 0)); + RESFLAG(F_N); + +} + + +static void CP_off_HL (Z80Context* ctx) +{ + byte val = read8(ctx, WR.HL); + doArithmetic(ctx, val, 0, 1); + adjustFlags(ctx, val); +} + + +static void CP_off_IX_d (Z80Context* ctx) +{ + byte val = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); + doArithmetic(ctx, val, 0, 1); + adjustFlags(ctx, val); +} + + +static void CP_off_IY_d (Z80Context* ctx) +{ + byte val = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); + doArithmetic(ctx, val, 0, 1); + adjustFlags(ctx, val); +} + + +static void CP_A (Z80Context* ctx) +{ + doArithmetic(ctx, BR.A, 0, 1); + adjustFlags(ctx, BR.A); +} + + +static void CP_B (Z80Context* ctx) +{ + doArithmetic(ctx, BR.B, 0, 1); + adjustFlags(ctx, BR.B); +} + + +static void CP_C (Z80Context* ctx) +{ + doArithmetic(ctx, BR.C, 0, 1); + adjustFlags(ctx, BR.C); +} + + +static void CP_D (Z80Context* ctx) +{ + doArithmetic(ctx, BR.D, 0, 1); + adjustFlags(ctx, BR.D); +} + + +static void CP_E (Z80Context* ctx) +{ + doArithmetic(ctx, BR.E, 0, 1); + adjustFlags(ctx, BR.E); +} + + +static void CP_H (Z80Context* ctx) +{ + doArithmetic(ctx, BR.H, 0, 1); + adjustFlags(ctx, BR.H); +} + + +static void CP_IXh (Z80Context* ctx) +{ + doArithmetic(ctx, BR.IXh, 0, 1); + adjustFlags(ctx, BR.IXh); +} + + +static void CP_IXl (Z80Context* ctx) +{ + doArithmetic(ctx, BR.IXl, 0, 1); + adjustFlags(ctx, BR.IXl); +} + + +static void CP_IYh (Z80Context* ctx) +{ + doArithmetic(ctx, BR.IYh, 0, 1); + adjustFlags(ctx, BR.IYh); +} + + +static void CP_IYl (Z80Context* ctx) +{ + doArithmetic(ctx, BR.IYl, 0, 1); + adjustFlags(ctx, BR.IYl); +} + + +static void CP_L (Z80Context* ctx) +{ + doArithmetic(ctx, BR.L, 0, 1); + adjustFlags(ctx, BR.L); +} + + +static void CP_n (Z80Context* ctx) +{ + byte val = read8(ctx, ctx->PC++); + doArithmetic(ctx, val, 0, 1); + adjustFlags(ctx, val); +} + + +static void CPD (Z80Context* ctx) +{ + CP_off_HL(ctx); + WR.HL--; + WR.BC--; + VALFLAG(F_PV, WR.BC != 0); +} + + +static void CPDR (Z80Context* ctx) +{ + do + { + CPD(ctx); + } while ((WR.BC != 0) && (BR.A != read8(ctx, WR.HL))); + +} + + +static void CPI (Z80Context* ctx) +{ + CP_off_HL(ctx); + WR.HL++; + WR.BC--; + VALFLAG(F_PV, WR.BC != 0); +} + + +static void CPIR (Z80Context* ctx) +{ + do + { + CPI(ctx); + } while ((WR.BC != 0) && (BR.A != read8(ctx, WR.HL))); + +} + + +static void CPL (Z80Context* ctx) +{ + BR.A = ~BR.A; + SETFLAG(F_H | F_N); + +} + + +static void DAA (Z80Context* ctx) +{ + doDAA(ctx); + +} + + +static void DEC_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doIncDec(ctx, read8(ctx, WR.HL), ID_DEC)); +} + + +static void DEC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doIncDec(ctx, read8(ctx, WR.IX + off), ID_DEC)); + +} + + +static void DEC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doIncDec(ctx, read8(ctx, WR.IY + off), ID_DEC)); + +} + + +static void DEC_A (Z80Context* ctx) +{ + BR.A = doIncDec(ctx, BR.A, ID_DEC); +} + + +static void DEC_B (Z80Context* ctx) +{ + BR.B = doIncDec(ctx, BR.B, ID_DEC); +} + + +static void DEC_BC (Z80Context* ctx) +{ + BR.B = doIncDec(ctx, BR.B, ID_DEC); +} + + +static void DEC_C (Z80Context* ctx) +{ + BR.C = doIncDec(ctx, BR.C, ID_DEC); +} + + +static void DEC_D (Z80Context* ctx) +{ + BR.D = doIncDec(ctx, BR.D, ID_DEC); +} + + +static void DEC_DE (Z80Context* ctx) +{ + BR.D = doIncDec(ctx, BR.D, ID_DEC); +} + + +static void DEC_E (Z80Context* ctx) +{ + BR.E = doIncDec(ctx, BR.E, ID_DEC); +} + + +static void DEC_H (Z80Context* ctx) +{ + BR.H = doIncDec(ctx, BR.H, ID_DEC); +} + + +static void DEC_HL (Z80Context* ctx) +{ + BR.H = doIncDec(ctx, BR.H, ID_DEC); +} + + +static void DEC_IX (Z80Context* ctx) +{ + WR.IX = doIncDec(ctx, WR.IX, ID_DEC); + +} + + +static void DEC_IXh (Z80Context* ctx) +{ + BR.IXh = doIncDec(ctx, BR.IXh, ID_DEC); +} + + +static void DEC_IXl (Z80Context* ctx) +{ + BR.IXl = doIncDec(ctx, BR.IXl, ID_DEC); +} + + +static void DEC_IY (Z80Context* ctx) +{ + WR.IY = doIncDec(ctx, WR.IY, ID_DEC); + +} + + +static void DEC_IYh (Z80Context* ctx) +{ + BR.IYh = doIncDec(ctx, BR.IYh, ID_DEC); +} + + +static void DEC_IYl (Z80Context* ctx) +{ + BR.IYl = doIncDec(ctx, BR.IYl, ID_DEC); +} + + +static void DEC_L (Z80Context* ctx) +{ + BR.L = doIncDec(ctx, BR.L, ID_DEC); +} + + +static void DEC_SP (Z80Context* ctx) +{ + WR.SP = doIncDec(ctx, WR.SP, ID_DEC); + +} + + +static void DI (Z80Context* ctx) +{ + ctx->IFF1 = ctx->IFF2 = IE_DI; +} + + +static void DJNZ_off_PC_e_ (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + BR.B--; + if (BR.B) + ctx->PC += off; +} + + +static void EI (Z80Context* ctx) +{ + ctx->IFF1 = ctx->IFF2 = IE_EI; +} + + +static void EX_off_SP_HL (Z80Context* ctx) +{ + ushort tmp = read16(ctx, WR.SP); + write16(ctx, WR.SP, WR.HL); + WR.HL = tmp; +} + + +static void EX_off_SP_IX (Z80Context* ctx) +{ + ushort tmp = read16(ctx, WR.SP); + write16(ctx, WR.SP, WR.IX); + WR.IX = tmp; +} + + +static void EX_off_SP_IY (Z80Context* ctx) +{ + ushort tmp = read16(ctx, WR.SP); + write16(ctx, WR.SP, WR.IY); + WR.IY = tmp; +} + + +static void EX_AF_AF_ (Z80Context* ctx) +{ + ushort tmp = ctx->R1.wr.AF; + ctx->R1.wr.AF = ctx->R2.wr.AF; + ctx->R2.wr.AF = tmp; +} + + +static void EX_DE_HL (Z80Context* ctx) +{ + ushort tmp = WR.DE; + WR.DE = WR.HL; + WR.HL = tmp; +} + + +static void EXX (Z80Context* ctx) +{ + ushort tmp; + tmp = ctx->R1.wr.BC; + ctx->R1.wr.BC = ctx->R2.wr.BC; + ctx->R2.wr.BC = tmp; + + tmp = ctx->R1.wr.DE; + ctx->R1.wr.DE = ctx->R2.wr.DE; + ctx->R2.wr.DE = tmp; + + tmp = ctx->R1.wr.HL; + ctx->R1.wr.HL = ctx->R2.wr.HL; + ctx->R2.wr.HL = tmp; +} + + +static void HALT (Z80Context* ctx) +{ + /* What should we do here? */ +} + + +static void IM_0 (Z80Context* ctx) +{ + ctx->IM = 0; +} + + +static void IM_1 (Z80Context* ctx) +{ + ctx->IM = 1; +} + + +static void IM_2 (Z80Context* ctx) +{ + ctx->IM = 2; +} + + +static void IN_A_off_C (Z80Context* ctx) +{ + BR.A = ioRead(ctx, BR.C); +} + + +static void IN_A_off_n (Z80Context* ctx) +{ + byte port = read8(ctx, ctx->PC++); + BR.A = ioRead(ctx, port); +} + + +static void IN_B_off_C (Z80Context* ctx) +{ + BR.B = ioRead(ctx, BR.C); +} + + +static void IN_C_off_C (Z80Context* ctx) +{ + BR.C = ioRead(ctx, BR.C); +} + + +static void IN_D_off_C (Z80Context* ctx) +{ + BR.D = ioRead(ctx, BR.C); +} + + +static void IN_E_off_C (Z80Context* ctx) +{ + BR.E = ioRead(ctx, BR.C); +} + + +static void IN_F_off_C (Z80Context* ctx) +{ + BR.F = ioRead(ctx, BR.C); +} + + +static void IN_H_off_C (Z80Context* ctx) +{ + BR.H = ioRead(ctx, BR.C); +} + + +static void IN_L_off_C (Z80Context* ctx) +{ + BR.L = ioRead(ctx, BR.C); +} + + +static void INC_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doIncDec(ctx, read8(ctx, WR.HL), ID_INC)); +} + + +static void INC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doIncDec(ctx, read8(ctx, WR.IX + off), ID_INC)); + +} + + +static void INC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doIncDec(ctx, read8(ctx, WR.IY + off), ID_INC)); + +} + + +static void INC_A (Z80Context* ctx) +{ + BR.A = doIncDec(ctx, BR.A, ID_INC); +} + + +static void INC_B (Z80Context* ctx) +{ + BR.B = doIncDec(ctx, BR.B, ID_INC); +} + + +static void INC_BC (Z80Context* ctx) +{ + BR.B = doIncDec(ctx, BR.B, ID_INC); +} + + +static void INC_C (Z80Context* ctx) +{ + BR.C = doIncDec(ctx, BR.C, ID_INC); +} + + +static void INC_D (Z80Context* ctx) +{ + BR.D = doIncDec(ctx, BR.D, ID_INC); +} + + +static void INC_DE (Z80Context* ctx) +{ + BR.D = doIncDec(ctx, BR.D, ID_INC); +} + + +static void INC_E (Z80Context* ctx) +{ + BR.E = doIncDec(ctx, BR.E, ID_INC); +} + + +static void INC_H (Z80Context* ctx) +{ + BR.H = doIncDec(ctx, BR.H, ID_INC); +} + + +static void INC_HL (Z80Context* ctx) +{ + BR.H = doIncDec(ctx, BR.H, ID_INC); +} + + +static void INC_IX (Z80Context* ctx) +{ + WR.IX = doIncDec(ctx, WR.IX, ID_INC); + +} + + +static void INC_IXh (Z80Context* ctx) +{ + BR.IXh = doIncDec(ctx, BR.IXh, ID_INC); +} + + +static void INC_IXl (Z80Context* ctx) +{ + BR.IXl = doIncDec(ctx, BR.IXl, ID_INC); +} + + +static void INC_IY (Z80Context* ctx) +{ + WR.IY = doIncDec(ctx, WR.IY, ID_INC); + +} + + +static void INC_IYh (Z80Context* ctx) +{ + BR.IYh = doIncDec(ctx, BR.IYh, ID_INC); +} + + +static void INC_IYl (Z80Context* ctx) +{ + BR.IYl = doIncDec(ctx, BR.IYl, ID_INC); +} + + +static void INC_L (Z80Context* ctx) +{ + BR.L = doIncDec(ctx, BR.L, ID_INC); +} + + +static void INC_SP (Z80Context* ctx) +{ + WR.SP = doIncDec(ctx, WR.SP, ID_INC); + +} + + +static void IND (Z80Context* ctx) +{ + byte val = ioRead(ctx, BR.C); + write8(ctx, WR.HL, val); + WR.HL--; + BR.B = doIncDec(ctx, BR.B, ID_DEC); + VALFLAG(F_N, (val & 0x80) != 0); + +} + + +static void INDR (Z80Context* ctx) +{ + do + { + IND(ctx); + } while(BR.B != 0); + SETFLAG(F_Z); + RESFLAG(F_5 | F_3 | F_S); +} + + +static void INI (Z80Context* ctx) +{ + byte val = ioRead(ctx, BR.C); + write8(ctx, WR.HL, val); + WR.HL++; + BR.B = doIncDec(ctx, BR.B, ID_DEC); + VALFLAG(F_N, (val & 0x80) != 0); +} + + +static void INIR (Z80Context* ctx) +{ + do + { + INI(ctx); + } while(BR.B != 0); + SETFLAG(F_Z); + RESFLAG(F_5 | F_3 | F_S); +} + + +static void JP_off_HL (Z80Context* ctx) +{ + ctx->PC = WR.HL; + +} + + +static void JP_off_IX (Z80Context* ctx) +{ + ctx->PC = WR.IX; + +} + + +static void JP_off_IY (Z80Context* ctx) +{ + ctx->PC = WR.IY; + +} + + +static void JP_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_)) + ctx->PC = addr; + +} + + +static void JP_C_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_C)) + ctx->PC = addr; + +} + + +static void JP_M_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_M)) + ctx->PC = addr; + +} + + +static void JP_NC_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_NC)) + ctx->PC = addr; + +} + + +static void JP_NZ_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_NZ)) + ctx->PC = addr; + +} + + +static void JP_P_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_P)) + ctx->PC = addr; + +} + + +static void JP_PE_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_PE)) + ctx->PC = addr; + +} + + +static void JP_PO_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_PO)) + ctx->PC = addr; + +} + + +static void JP_Z_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + if (condition(ctx, C_Z)) + ctx->PC = addr; + +} + + +static void JR_off_PC_e (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + if (condition(ctx, C_)) + ctx->PC += off; +} + + +static void JR_C_off_PC_e (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + if (condition(ctx, C_C)) + ctx->PC += off; +} + + +static void JR_NC_off_PC_e (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + if (condition(ctx, C_NC)) + ctx->PC += off; +} + + +static void JR_NZ_off_PC_e (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + if (condition(ctx, C_NZ)) + ctx->PC += off; +} + + +static void JR_Z_off_PC_e (Z80Context* ctx) +{ + int off = doComplement(read8(ctx, ctx->PC++)); + if (condition(ctx, C_Z)) + ctx->PC += off; +} + + +static void LD_off_BC_A (Z80Context* ctx) +{ + write8(ctx, WR.BC, BR.A); +} + + +static void LD_off_DE_A (Z80Context* ctx) +{ + write8(ctx, WR.DE, BR.A); +} + + +static void LD_off_HL_A (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.A); +} + + +static void LD_off_HL_B (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.B); +} + + +static void LD_off_HL_C (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.C); +} + + +static void LD_off_HL_D (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.D); +} + + +static void LD_off_HL_E (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.E); +} + + +static void LD_off_HL_H (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.H); +} + + +static void LD_off_HL_L (Z80Context* ctx) +{ + write8(ctx, WR.HL, BR.L); +} + + +static void LD_off_HL_n (Z80Context* ctx) +{ + write8(ctx, WR.HL, read8(ctx, ctx->PC++)); + +} + + +static void LD_off_IX_d_A (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.A); + +} + + +static void LD_off_IX_d_B (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.B); + +} + + +static void LD_off_IX_d_C (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.C); + +} + + +static void LD_off_IX_d_D (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.D); + +} + + +static void LD_off_IX_d_E (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.E); + +} + + +static void LD_off_IX_d_H (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.H); + +} + + +static void LD_off_IX_d_L (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), BR.L); + +} + + +static void LD_off_IX_d_n (Z80Context* ctx) +{ + write8(ctx, WR.IX + read8(ctx, ctx->PC++), read8(ctx, ctx->PC++)); + +} + + +static void LD_off_IY_d_A (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.A); + +} + + +static void LD_off_IY_d_B (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.B); + +} + + +static void LD_off_IY_d_C (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.C); + +} + + +static void LD_off_IY_d_D (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.D); + +} + + +static void LD_off_IY_d_E (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.E); + +} + + +static void LD_off_IY_d_H (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.H); + +} + + +static void LD_off_IY_d_L (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), BR.L); + +} + + +static void LD_off_IY_d_n (Z80Context* ctx) +{ + write8(ctx, WR.IY + read8(ctx, ctx->PC++), read8(ctx, ctx->PC++)); + +} + + +static void LD_off_nn_A (Z80Context* ctx) +{ + write8(ctx, read16(ctx, ctx->PC), BR.A); + ctx->PC += 2; + +} + + +static void LD_off_nn_BC (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.BC); + ctx->PC += 2; + +} + + +static void LD_off_nn_DE (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.DE); + ctx->PC += 2; + +} + + +static void LD_off_nn_HL (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.HL); + ctx->PC += 2; + +} + + +static void LD_off_nn_IX (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.IX); + ctx->PC += 2; + +} + + +static void LD_off_nn_IY (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.IY); + ctx->PC += 2; + +} + + +static void LD_off_nn_SP (Z80Context* ctx) +{ + write16(ctx, read16(ctx, ctx->PC), WR.SP); + ctx->PC += 2; + +} + + +static void LD_A_off_BC (Z80Context* ctx) +{ + BR.A = read8(ctx, WR.BC); +} + + +static void LD_A_off_DE (Z80Context* ctx) +{ + BR.A = read8(ctx, WR.DE); +} + + +static void LD_A_off_HL (Z80Context* ctx) +{ + BR.A = read8(ctx, WR.HL); +} + + +static void LD_A_off_IX_d (Z80Context* ctx) +{ + BR.A = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_A_off_IY_d (Z80Context* ctx) +{ + BR.A = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_A_off_nn (Z80Context* ctx) +{ + BR.A = read8(ctx, read16(ctx, ctx->PC)); + ctx->PC += 2; + +} + + +static void LD_A_A (Z80Context* ctx) +{ + BR.A = BR.A; +} + + +static void LD_A_B (Z80Context* ctx) +{ + BR.A = BR.B; +} + + +static void LD_A_C (Z80Context* ctx) +{ + BR.A = BR.C; +} + + +static void LD_A_D (Z80Context* ctx) +{ + BR.A = BR.D; +} + + +static void LD_A_E (Z80Context* ctx) +{ + BR.A = BR.E; +} + + +static void LD_A_H (Z80Context* ctx) +{ + BR.A = BR.H; +} + + +static void LD_A_I (Z80Context* ctx) +{ + BR.A = ctx->I; + + adjustFlags(ctx, BR.A); + RESFLAG(F_H | F_N); + VALFLAG(F_PV, ctx->IFF2); + VALFLAG(F_S, (BR.A & 0x80) != 0); + VALFLAG(F_Z, (BR.A == 0)); + +} + + +static void LD_A_IXh (Z80Context* ctx) +{ + BR.A = BR.IXh; +} + + +static void LD_A_IXl (Z80Context* ctx) +{ + BR.A = BR.IXl; +} + + +static void LD_A_IYh (Z80Context* ctx) +{ + BR.A = BR.IYh; +} + + +static void LD_A_IYl (Z80Context* ctx) +{ + BR.A = BR.IYl; +} + + +static void LD_A_L (Z80Context* ctx) +{ + BR.A = BR.L; +} + + +static void LD_A_n (Z80Context* ctx) +{ + BR.A = read8(ctx, ctx->PC++); + +} + + +static void LD_A_R (Z80Context* ctx) +{ + BR.A = ctx->R; + + adjustFlags(ctx, BR.A); + RESFLAG(F_H | F_N); + VALFLAG(F_PV, ctx->IFF2); + VALFLAG(F_S, (BR.A & 0x80) != 0); + VALFLAG(F_Z, (BR.A == 0)); + +} + + +static void LD_A_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.A); +} + + +static void LD_A_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.A); +} + + +static void LD_A_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.A); + +} + + +static void LD_A_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.A); + +} + + +static void LD_A_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.A); + +} + + +static void LD_A_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.A); + +} + + +static void LD_A_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.A); + +} + + +static void LD_A_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.A); + +} + + +static void LD_A_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.A); + +} + + +static void LD_A_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.A = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.A); + +} + + +static void LD_B_off_HL (Z80Context* ctx) +{ + BR.B = read8(ctx, WR.HL); +} + + +static void LD_B_off_IX_d (Z80Context* ctx) +{ + BR.B = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_B_off_IY_d (Z80Context* ctx) +{ + BR.B = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_B_A (Z80Context* ctx) +{ + BR.B = BR.A; +} + + +static void LD_B_B (Z80Context* ctx) +{ + BR.B = BR.B; +} + + +static void LD_B_C (Z80Context* ctx) +{ + BR.B = BR.C; +} + + +static void LD_B_D (Z80Context* ctx) +{ + BR.B = BR.D; +} + + +static void LD_B_E (Z80Context* ctx) +{ + BR.B = BR.E; +} + + +static void LD_B_H (Z80Context* ctx) +{ + BR.B = BR.H; +} + + +static void LD_B_IXh (Z80Context* ctx) +{ + BR.B = BR.IXh; +} + + +static void LD_B_IXl (Z80Context* ctx) +{ + BR.B = BR.IXl; +} + + +static void LD_B_IYh (Z80Context* ctx) +{ + BR.B = BR.IYh; +} + + +static void LD_B_IYl (Z80Context* ctx) +{ + BR.B = BR.IYl; +} + + +static void LD_B_L (Z80Context* ctx) +{ + BR.B = BR.L; +} + + +static void LD_B_n (Z80Context* ctx) +{ + BR.B = read8(ctx, ctx->PC++); + +} + + +static void LD_B_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.B); +} + + +static void LD_B_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.B); +} + + +static void LD_B_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.B); + +} + + +static void LD_B_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.B); + +} + + +static void LD_B_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.B); + +} + + +static void LD_B_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.B); + +} + + +static void LD_B_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.B); + +} + + +static void LD_B_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.B); + +} + + +static void LD_B_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.B); + +} + + +static void LD_B_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.B = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.B); + +} + + +static void LD_BC_off_nn (Z80Context* ctx) +{ + WR.BC = read16(ctx, ctx->PC); + ctx->PC += 2; +} + + +static void LD_BC_nn (Z80Context* ctx) +{ + WR.BC = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LD_C_off_HL (Z80Context* ctx) +{ + BR.C = read8(ctx, WR.HL); +} + + +static void LD_C_off_IX_d (Z80Context* ctx) +{ + BR.C = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_C_off_IY_d (Z80Context* ctx) +{ + BR.C = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_C_A (Z80Context* ctx) +{ + BR.C = BR.A; +} + + +static void LD_C_B (Z80Context* ctx) +{ + BR.C = BR.B; +} + + +static void LD_C_C (Z80Context* ctx) +{ + BR.C = BR.C; +} + + +static void LD_C_D (Z80Context* ctx) +{ + BR.C = BR.D; +} + + +static void LD_C_E (Z80Context* ctx) +{ + BR.C = BR.E; +} + + +static void LD_C_H (Z80Context* ctx) +{ + BR.C = BR.H; +} + + +static void LD_C_IXh (Z80Context* ctx) +{ + BR.C = BR.IXh; +} + + +static void LD_C_IXl (Z80Context* ctx) +{ + BR.C = BR.IXl; +} + + +static void LD_C_IYh (Z80Context* ctx) +{ + BR.C = BR.IYh; +} + + +static void LD_C_IYl (Z80Context* ctx) +{ + BR.C = BR.IYl; +} + + +static void LD_C_L (Z80Context* ctx) +{ + BR.C = BR.L; +} + + +static void LD_C_n (Z80Context* ctx) +{ + BR.C = read8(ctx, ctx->PC++); + +} + + +static void LD_C_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.C); +} + + +static void LD_C_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.C); +} + + +static void LD_C_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.C); + +} + + +static void LD_C_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.C); + +} + + +static void LD_C_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.C); + +} + + +static void LD_C_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.C); + +} + + +static void LD_C_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.C); + +} + + +static void LD_C_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.C); + +} + + +static void LD_C_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.C); + +} + + +static void LD_C_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.C = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.C); + +} + + +static void LD_D_off_HL (Z80Context* ctx) +{ + BR.D = read8(ctx, WR.HL); +} + + +static void LD_D_off_IX_d (Z80Context* ctx) +{ + BR.D = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_D_off_IY_d (Z80Context* ctx) +{ + BR.D = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_D_A (Z80Context* ctx) +{ + BR.D = BR.A; +} + + +static void LD_D_B (Z80Context* ctx) +{ + BR.D = BR.B; +} + + +static void LD_D_C (Z80Context* ctx) +{ + BR.D = BR.C; +} + + +static void LD_D_D (Z80Context* ctx) +{ + BR.D = BR.D; +} + + +static void LD_D_E (Z80Context* ctx) +{ + BR.D = BR.E; +} + + +static void LD_D_H (Z80Context* ctx) +{ + BR.D = BR.H; +} + + +static void LD_D_IXh (Z80Context* ctx) +{ + BR.D = BR.IXh; +} + + +static void LD_D_IXl (Z80Context* ctx) +{ + BR.D = BR.IXl; +} + + +static void LD_D_IYh (Z80Context* ctx) +{ + BR.D = BR.IYh; +} + + +static void LD_D_IYl (Z80Context* ctx) +{ + BR.D = BR.IYl; +} + + +static void LD_D_L (Z80Context* ctx) +{ + BR.D = BR.L; +} + + +static void LD_D_n (Z80Context* ctx) +{ + BR.D = read8(ctx, ctx->PC++); + +} + + +static void LD_D_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.D); +} + + +static void LD_D_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.D); +} + + +static void LD_D_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.D); + +} + + +static void LD_D_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.D); + +} + + +static void LD_D_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.D); + +} + + +static void LD_D_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.D); + +} + + +static void LD_D_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.D); + +} + + +static void LD_D_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.D); + +} + + +static void LD_D_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.D); + +} + + +static void LD_D_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.D = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.D); + +} + + +static void LD_DE_off_nn (Z80Context* ctx) +{ + WR.DE = read16(ctx, ctx->PC); + ctx->PC += 2; +} + + +static void LD_DE_nn (Z80Context* ctx) +{ + WR.DE = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LD_E_off_HL (Z80Context* ctx) +{ + BR.E = read8(ctx, WR.HL); +} + + +static void LD_E_off_IX_d (Z80Context* ctx) +{ + BR.E = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_E_off_IY_d (Z80Context* ctx) +{ + BR.E = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_E_A (Z80Context* ctx) +{ + BR.E = BR.A; +} + + +static void LD_E_B (Z80Context* ctx) +{ + BR.E = BR.B; +} + + +static void LD_E_C (Z80Context* ctx) +{ + BR.E = BR.C; +} + + +static void LD_E_D (Z80Context* ctx) +{ + BR.E = BR.D; +} + + +static void LD_E_E (Z80Context* ctx) +{ + BR.E = BR.E; +} + + +static void LD_E_H (Z80Context* ctx) +{ + BR.E = BR.H; +} + + +static void LD_E_IXh (Z80Context* ctx) +{ + BR.E = BR.IXh; +} + + +static void LD_E_IXl (Z80Context* ctx) +{ + BR.E = BR.IXl; +} + + +static void LD_E_IYh (Z80Context* ctx) +{ + BR.E = BR.IYh; +} + + +static void LD_E_IYl (Z80Context* ctx) +{ + BR.E = BR.IYl; +} + + +static void LD_E_L (Z80Context* ctx) +{ + BR.E = BR.L; +} + + +static void LD_E_n (Z80Context* ctx) +{ + BR.E = read8(ctx, ctx->PC++); + +} + + +static void LD_E_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.E); +} + + +static void LD_E_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.E); +} + + +static void LD_E_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.E); + +} + + +static void LD_E_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.E); + +} + + +static void LD_E_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.E); + +} + + +static void LD_E_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.E); + +} + + +static void LD_E_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.E); + +} + + +static void LD_E_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.E); + +} + + +static void LD_E_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.E); + +} + + +static void LD_E_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.E = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.E); + +} + + +static void LD_H_off_HL (Z80Context* ctx) +{ + BR.H = read8(ctx, WR.HL); +} + + +static void LD_H_off_IX_d (Z80Context* ctx) +{ + BR.H = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_H_off_IY_d (Z80Context* ctx) +{ + BR.H = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_H_A (Z80Context* ctx) +{ + BR.H = BR.A; +} + + +static void LD_H_B (Z80Context* ctx) +{ + BR.H = BR.B; +} + + +static void LD_H_C (Z80Context* ctx) +{ + BR.H = BR.C; +} + + +static void LD_H_D (Z80Context* ctx) +{ + BR.H = BR.D; +} + + +static void LD_H_E (Z80Context* ctx) +{ + BR.H = BR.E; +} + + +static void LD_H_H (Z80Context* ctx) +{ + BR.H = BR.H; +} + + +static void LD_H_L (Z80Context* ctx) +{ + BR.H = BR.L; +} + + +static void LD_H_n (Z80Context* ctx) +{ + BR.H = read8(ctx, ctx->PC++); + +} + + +static void LD_H_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.H); +} + + +static void LD_H_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.H); +} + + +static void LD_H_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.H); + +} + + +static void LD_H_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.H); + +} + + +static void LD_H_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.H); + +} + + +static void LD_H_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.H); + +} + + +static void LD_H_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.H); + +} + + +static void LD_H_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.H); + +} + + +static void LD_H_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.H); + +} + + +static void LD_H_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.H = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.H); + +} + + +static void LD_HL_off_nn (Z80Context* ctx) +{ + WR.HL = read16(ctx, ctx->PC); + ctx->PC += 2; +} + + +static void LD_HL_nn (Z80Context* ctx) +{ + WR.HL = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LD_I_A (Z80Context* ctx) +{ + ctx->I = BR.A; +} + + +static void LD_IX_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + WR.IX = read16(ctx, addr); +} + + +static void LD_IX_nn (Z80Context* ctx) +{ + WR.IX = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LD_IXh_A (Z80Context* ctx) +{ + BR.IXh = BR.A; +} + + +static void LD_IXh_B (Z80Context* ctx) +{ + BR.IXh = BR.B; +} + + +static void LD_IXh_C (Z80Context* ctx) +{ + BR.IXh = BR.C; +} + + +static void LD_IXh_D (Z80Context* ctx) +{ + BR.IXh = BR.D; +} + + +static void LD_IXh_E (Z80Context* ctx) +{ + BR.IXh = BR.E; +} + + +static void LD_IXh_IXh (Z80Context* ctx) +{ + BR.IXh = BR.IXh; +} + + +static void LD_IXh_IXl (Z80Context* ctx) +{ + BR.IXh = BR.IXl; +} + + +static void LD_IXh_n (Z80Context* ctx) +{ + BR.IXh = read8(ctx, ctx->PC++); + +} + + +static void LD_IXl_A (Z80Context* ctx) +{ + BR.IXl = BR.A; +} + + +static void LD_IXl_B (Z80Context* ctx) +{ + BR.IXl = BR.B; +} + + +static void LD_IXl_C (Z80Context* ctx) +{ + BR.IXl = BR.C; +} + + +static void LD_IXl_D (Z80Context* ctx) +{ + BR.IXl = BR.D; +} + + +static void LD_IXl_E (Z80Context* ctx) +{ + BR.IXl = BR.E; +} + + +static void LD_IXl_IXh (Z80Context* ctx) +{ + BR.IXl = BR.IXh; +} + + +static void LD_IXl_IXl (Z80Context* ctx) +{ + BR.IXl = BR.IXl; +} + + +static void LD_IXl_n (Z80Context* ctx) +{ + BR.IXl = read8(ctx, ctx->PC++); + +} + + +static void LD_IY_off_nn (Z80Context* ctx) +{ + ushort addr = read16(ctx, ctx->PC); + ctx->PC += 2; + WR.IY = read16(ctx, addr); +} + + +static void LD_IY_nn (Z80Context* ctx) +{ + WR.IY = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LD_IYh_A (Z80Context* ctx) +{ + BR.IYh = BR.A; +} + + +static void LD_IYh_B (Z80Context* ctx) +{ + BR.IYh = BR.B; +} + + +static void LD_IYh_C (Z80Context* ctx) +{ + BR.IYh = BR.C; +} + + +static void LD_IYh_D (Z80Context* ctx) +{ + BR.IYh = BR.D; +} + + +static void LD_IYh_E (Z80Context* ctx) +{ + BR.IYh = BR.E; +} + + +static void LD_IYh_IYh (Z80Context* ctx) +{ + BR.IYh = BR.IYh; +} + + +static void LD_IYh_IYl (Z80Context* ctx) +{ + BR.IYh = BR.IYl; +} + + +static void LD_IYh_n (Z80Context* ctx) +{ + BR.IYh = read8(ctx, ctx->PC++); + +} + + +static void LD_IYl_A (Z80Context* ctx) +{ + BR.IYl = BR.A; +} + + +static void LD_IYl_B (Z80Context* ctx) +{ + BR.IYl = BR.B; +} + + +static void LD_IYl_C (Z80Context* ctx) +{ + BR.IYl = BR.C; +} + + +static void LD_IYl_D (Z80Context* ctx) +{ + BR.IYl = BR.D; +} + + +static void LD_IYl_E (Z80Context* ctx) +{ + BR.IYl = BR.E; +} + + +static void LD_IYl_IYh (Z80Context* ctx) +{ + BR.IYl = BR.IYh; +} + + +static void LD_IYl_IYl (Z80Context* ctx) +{ + BR.IYl = BR.IYl; +} + + +static void LD_IYl_n (Z80Context* ctx) +{ + BR.IYl = read8(ctx, ctx->PC++); + +} + + +static void LD_L_off_HL (Z80Context* ctx) +{ + BR.L = read8(ctx, WR.HL); +} + + +static void LD_L_off_IX_d (Z80Context* ctx) +{ + BR.L = read8(ctx, WR.IX + read8(ctx, ctx->PC++)); +} + + +static void LD_L_off_IY_d (Z80Context* ctx) +{ + BR.L = read8(ctx, WR.IY + read8(ctx, ctx->PC++)); +} + + +static void LD_L_A (Z80Context* ctx) +{ + BR.L = BR.A; +} + + +static void LD_L_B (Z80Context* ctx) +{ + BR.L = BR.B; +} + + +static void LD_L_C (Z80Context* ctx) +{ + BR.L = BR.C; +} + + +static void LD_L_D (Z80Context* ctx) +{ + BR.L = BR.D; +} + + +static void LD_L_E (Z80Context* ctx) +{ + BR.L = BR.E; +} + + +static void LD_L_H (Z80Context* ctx) +{ + BR.L = BR.H; +} + + +static void LD_L_L (Z80Context* ctx) +{ + BR.L = BR.L; +} + + +static void LD_L_n (Z80Context* ctx) +{ + BR.L = read8(ctx, ctx->PC++); + +} + + +static void LD_L_RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRL(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRL(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRLC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRLC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRR(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRR(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRRC(ctx, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doRRC(ctx, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off)); + write8(ctx, WR.IX + off, BR.L); +} + + +static void LD_L_SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off)); + write8(ctx, WR.IY + off, BR.L); +} + + +static void LD_L_SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSL(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.L); + +} + + +static void LD_L_SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSL(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.L); + +} + + +static void LD_L_SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSL(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.L); + +} + + +static void LD_L_SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSL(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.L); + +} + + +static void LD_L_SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSR(ctx, read8(ctx, WR.IX + off), 1); + write8(ctx, WR.IX + off, BR.L); + +} + + +static void LD_L_SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSR(ctx, read8(ctx, WR.IY + off), 1); + write8(ctx, WR.IY + off, BR.L); + +} + + +static void LD_L_SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSR(ctx, read8(ctx, WR.IX + off), 0); + write8(ctx, WR.IX + off, BR.L); + +} + + +static void LD_L_SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + BR.L = doSR(ctx, read8(ctx, WR.IY + off), 0); + write8(ctx, WR.IY + off, BR.L); + +} + + +static void LD_R_A (Z80Context* ctx) +{ + ctx->R = BR.A; +} + + +static void LD_SP_off_nn (Z80Context* ctx) +{ + WR.SP = read16(ctx, ctx->PC); + ctx->PC += 2; +} + + +static void LD_SP_HL (Z80Context* ctx) +{ + WR.SP = WR.HL; +} + + +static void LD_SP_IX (Z80Context* ctx) +{ + WR.SP = WR.IX; +} + + +static void LD_SP_IY (Z80Context* ctx) +{ + WR.SP = WR.IY; +} + + +static void LD_SP_nn (Z80Context* ctx) +{ + WR.SP = read16(ctx, ctx->PC); + ctx->PC += 2; + +} + + +static void LDD (Z80Context* ctx) +{ + byte val = read8(ctx, WR.HL); + write8(ctx, WR.DE, val); + WR.DE--; + WR.HL--; + WR.BC--; + + VALFLAG(F_5, ((BR.A + val) & F_5) != 0); + VALFLAG(F_3, ((BR.A + val) & F_3) != 0); + RESFLAG(F_H | F_N); + VALFLAG(F_PV, WR.BC != 0); + +} + + +static void LDDR (Z80Context* ctx) +{ + do + { + LDD(ctx); + } while (WR.BC); +} + + +static void LDI (Z80Context* ctx) +{ + byte val = read8(ctx, WR.HL); + write8(ctx, WR.DE, val); + WR.DE++; + WR.HL++; + WR.BC--; + + VALFLAG(F_5, ((BR.A + val) & F_5) != 0); + VALFLAG(F_3, ((BR.A + val) & F_3) != 0); + RESFLAG(F_H | F_N); + VALFLAG(F_PV, WR.BC != 0); +} + + +static void LDIR (Z80Context* ctx) +{ + do + { + LDI(ctx); + } while (WR.BC); +} + + +static void NEG (Z80Context* ctx) +{ + CPL(ctx); +} + + +static void NOP (Z80Context* ctx) +{ + /* NOP */ + +} + + +static void OR_off_HL (Z80Context* ctx) +{ + doOR(ctx, read8(ctx, WR.HL)); +} + + +static void OR_off_IX_d (Z80Context* ctx) +{ + doOR(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); +} + + +static void OR_off_IY_d (Z80Context* ctx) +{ + doOR(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); +} + + +static void OR_A (Z80Context* ctx) +{ + doOR(ctx, BR.A); +} + + +static void OR_B (Z80Context* ctx) +{ + doOR(ctx, BR.B); +} + + +static void OR_C (Z80Context* ctx) +{ + doOR(ctx, BR.C); +} + + +static void OR_D (Z80Context* ctx) +{ + doOR(ctx, BR.D); +} + + +static void OR_E (Z80Context* ctx) +{ + doOR(ctx, BR.E); +} + + +static void OR_H (Z80Context* ctx) +{ + doOR(ctx, BR.H); +} + + +static void OR_IXh (Z80Context* ctx) +{ + doOR(ctx, BR.IXh); +} + + +static void OR_IXl (Z80Context* ctx) +{ + doOR(ctx, BR.IXl); +} + + +static void OR_IYh (Z80Context* ctx) +{ + doOR(ctx, BR.IYh); +} + + +static void OR_IYl (Z80Context* ctx) +{ + doOR(ctx, BR.IYl); +} + + +static void OR_L (Z80Context* ctx) +{ + doOR(ctx, BR.L); +} + + +static void OR_n (Z80Context* ctx) +{ + doOR(ctx, read8(ctx, ctx->PC++)); +} + + +static void OTDR (Z80Context* ctx) +{ + do + { + OUTD(ctx); + } while (BR.B); + SETFLAG(F_Z); + RESFLAG(F_S | F_5 | F_3); +} + + +static void OTIR (Z80Context* ctx) +{ + do + { + OUTI(ctx); + } while (BR.B); + SETFLAG(F_Z); + RESFLAG(F_S | F_5 | F_3); +} + + +static void OUT_off_C_0 (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, 0); + +} + + +static void OUT_off_C_A (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.A); +} + + +static void OUT_off_C_B (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.B); +} + + +static void OUT_off_C_C (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.C); +} + + +static void OUT_off_C_D (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.D); +} + + +static void OUT_off_C_E (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.E); +} + + +static void OUT_off_C_H (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.H); +} + + +static void OUT_off_C_L (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, BR.L); +} + + +static void OUT_off_n_A (Z80Context* ctx) +{ + ioWrite(ctx, read8(ctx, ctx->PC++), BR.A); +} + + +static void OUTD (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, read8(ctx, WR.HL)); + WR.HL--; + BR.B = doIncDec(ctx, BR.B, 1); +} + + +static void OUTI (Z80Context* ctx) +{ + ioWrite(ctx, BR.C, read8(ctx, WR.HL)); + WR.HL++; + BR.B = doIncDec(ctx, BR.B, 1); +} + + +static void POP_AF (Z80Context* ctx) +{ + WR.AF = doPop(ctx); +} + + +static void POP_BC (Z80Context* ctx) +{ + WR.BC = doPop(ctx); +} + + +static void POP_DE (Z80Context* ctx) +{ + WR.DE = doPop(ctx); +} + + +static void POP_HL (Z80Context* ctx) +{ + WR.HL = doPop(ctx); +} + + +static void POP_IX (Z80Context* ctx) +{ + WR.IX = doPop(ctx); +} + + +static void POP_IY (Z80Context* ctx) +{ + WR.IY = doPop(ctx); +} + + +static void PUSH_AF (Z80Context* ctx) +{ + doPush(ctx, WR.AF); +} + + +static void PUSH_BC (Z80Context* ctx) +{ + doPush(ctx, WR.BC); +} + + +static void PUSH_DE (Z80Context* ctx) +{ + doPush(ctx, WR.DE); +} + + +static void PUSH_HL (Z80Context* ctx) +{ + doPush(ctx, WR.HL); +} + + +static void PUSH_IX (Z80Context* ctx) +{ + doPush(ctx, WR.IX); +} + + +static void PUSH_IY (Z80Context* ctx) +{ + doPush(ctx, WR.IY); +} + + +static void RES_0_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.HL))); +} + + +static void RES_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IX + off))); + + +} + + +static void RES_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 0, read8(ctx, WR.IY + off))); + + +} + + +static void RES_0_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 0, BR.A); +} + + +static void RES_0_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 0, BR.B); +} + + +static void RES_0_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 0, BR.C); +} + + +static void RES_0_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 0, BR.D); +} + + +static void RES_0_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 0, BR.E); +} + + +static void RES_0_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 0, BR.H); +} + + +static void RES_0_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 0, BR.L); +} + + +static void RES_1_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.HL))); +} + + +static void RES_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IX + off))); + + +} + + +static void RES_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 1, read8(ctx, WR.IY + off))); + + +} + + +static void RES_1_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 1, BR.A); +} + + +static void RES_1_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 1, BR.B); +} + + +static void RES_1_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 1, BR.C); +} + + +static void RES_1_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 1, BR.D); +} + + +static void RES_1_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 1, BR.E); +} + + +static void RES_1_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 1, BR.H); +} + + +static void RES_1_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 1, BR.L); +} + + +static void RES_2_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.HL))); +} + + +static void RES_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IX + off))); + + +} + + +static void RES_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 2, read8(ctx, WR.IY + off))); + + +} + + +static void RES_2_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 2, BR.A); +} + + +static void RES_2_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 2, BR.B); +} + + +static void RES_2_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 2, BR.C); +} + + +static void RES_2_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 2, BR.D); +} + + +static void RES_2_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 2, BR.E); +} + + +static void RES_2_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 2, BR.H); +} + + +static void RES_2_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 2, BR.L); +} + + +static void RES_3_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.HL))); +} + + +static void RES_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IX + off))); + + +} + + +static void RES_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 3, read8(ctx, WR.IY + off))); + + +} + + +static void RES_3_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 3, BR.A); +} + + +static void RES_3_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 3, BR.B); +} + + +static void RES_3_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 3, BR.C); +} + + +static void RES_3_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 3, BR.D); +} + + +static void RES_3_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 3, BR.E); +} + + +static void RES_3_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 3, BR.H); +} + + +static void RES_3_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 3, BR.L); +} + + +static void RES_4_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.HL))); +} + + +static void RES_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IX + off))); + + +} + + +static void RES_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 4, read8(ctx, WR.IY + off))); + + +} + + +static void RES_4_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 4, BR.A); +} + + +static void RES_4_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 4, BR.B); +} + + +static void RES_4_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 4, BR.C); +} + + +static void RES_4_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 4, BR.D); +} + + +static void RES_4_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 4, BR.E); +} + + +static void RES_4_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 4, BR.H); +} + + +static void RES_4_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 4, BR.L); +} + + +static void RES_5_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.HL))); +} + + +static void RES_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IX + off))); + + +} + + +static void RES_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 5, read8(ctx, WR.IY + off))); + + +} + + +static void RES_5_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 5, BR.A); +} + + +static void RES_5_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 5, BR.B); +} + + +static void RES_5_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 5, BR.C); +} + + +static void RES_5_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 5, BR.D); +} + + +static void RES_5_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 5, BR.E); +} + + +static void RES_5_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 5, BR.H); +} + + +static void RES_5_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 5, BR.L); +} + + +static void RES_6_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.HL))); +} + + +static void RES_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IX + off))); + + +} + + +static void RES_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 6, read8(ctx, WR.IY + off))); + + +} + + +static void RES_6_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 6, BR.A); +} + + +static void RES_6_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 6, BR.B); +} + + +static void RES_6_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 6, BR.C); +} + + +static void RES_6_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 6, BR.D); +} + + +static void RES_6_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 6, BR.E); +} + + +static void RES_6_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 6, BR.H); +} + + +static void RES_6_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 6, BR.L); +} + + +static void RES_7_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.HL))); +} + + +static void RES_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IX + off))); + + +} + + +static void RES_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_RES, 7, read8(ctx, WR.IY + off))); + + +} + + +static void RES_7_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_RES, 7, BR.A); +} + + +static void RES_7_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_RES, 7, BR.B); +} + + +static void RES_7_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_RES, 7, BR.C); +} + + +static void RES_7_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_RES, 7, BR.D); +} + + +static void RES_7_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_RES, 7, BR.E); +} + + +static void RES_7_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_RES, 7, BR.H); +} + + +static void RES_7_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_RES, 7, BR.L); +} + + +static void RET (Z80Context* ctx) +{ + ctx->PC = doPop(ctx); +} + + +static void RET_C (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_C)) + if (condition(ctx, C_C)) + ctx->PC = doPop(ctx); + +} + + +static void RET_M (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_M)) + if (condition(ctx, C_M)) + ctx->PC = doPop(ctx); + +} + + +static void RET_NC (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_NC)) + if (condition(ctx, C_NC)) + ctx->PC = doPop(ctx); + +} + + +static void RET_NZ (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_NZ)) + if (condition(ctx, C_NZ)) + ctx->PC = doPop(ctx); + +} + + +static void RET_P (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_P)) + if (condition(ctx, C_P)) + ctx->PC = doPop(ctx); + +} + + +static void RET_PE (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_PE)) + if (condition(ctx, C_PE)) + ctx->PC = doPop(ctx); + +} + + +static void RET_PO (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_PO)) + if (condition(ctx, C_PO)) + ctx->PC = doPop(ctx); + +} + + +static void RET_Z (Z80Context* ctx) +{ +// if (ctx, condition(ctx, C_Z)) + if (condition(ctx, C_Z)) + ctx->PC = doPop(ctx); + +} + + +static void RETI (Z80Context* ctx) +{ + ctx->IFF1 = ctx->IFF2; + RET (ctx); + +} + + +static void RETN (Z80Context* ctx) +{ + ctx->IFF1 = ctx->IFF2; + RET(ctx); +} + + +static void RL_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doRL(ctx, 1, read8(ctx, WR.HL))); + +} + + +static void RL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doRL(ctx, 1, read8(ctx, WR.IX + off))); +} + + +static void RL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doRL(ctx, 1, read8(ctx, WR.IY + off))); +} + + +static void RL_A (Z80Context* ctx) +{ + BR.A = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_B (Z80Context* ctx) +{ + BR.B = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_C (Z80Context* ctx) +{ + BR.C = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_D (Z80Context* ctx) +{ + BR.D = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_E (Z80Context* ctx) +{ + BR.E = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_H (Z80Context* ctx) +{ + BR.H = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RL_L (Z80Context* ctx) +{ + BR.L = doRL(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLA (Z80Context* ctx) +{ + BR.A = doRL(ctx, 0, BR.A); + + +} + + +static void RLC_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doRLC(ctx, 1, read8(ctx, WR.HL))); + +} + + +static void RLC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doRLC(ctx, 1, read8(ctx, WR.IX + off))); +} + + +static void RLC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doRLC(ctx, 1, read8(ctx, WR.IY + off))); +} + + +static void RLC_A (Z80Context* ctx) +{ + BR.A = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_B (Z80Context* ctx) +{ + BR.B = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_C (Z80Context* ctx) +{ + BR.C = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_D (Z80Context* ctx) +{ + BR.D = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_E (Z80Context* ctx) +{ + BR.E = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_H (Z80Context* ctx) +{ + BR.H = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLC_L (Z80Context* ctx) +{ + BR.L = doRLC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RLCA (Z80Context* ctx) +{ + BR.A = doRLC(ctx, 0, BR.A); + + +} + + +static void RLD (Z80Context* ctx) +{ + byte Ah = BR.A & 0xF0; + byte hl = read8(ctx, WR.HL); + + BR.A = (BR.A & 0x0F) | ((hl & 0x0F) << 4); + hl = (hl << 4) | Ah; + write8(ctx, WR.HL, hl); + + +} + + +static void RR_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doRR(ctx, 1, read8(ctx, WR.HL))); + +} + + +static void RR_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doRR(ctx, 1, read8(ctx, WR.IX + off))); +} + + +static void RR_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doRR(ctx, 1, read8(ctx, WR.IY + off))); +} + + +static void RR_A (Z80Context* ctx) +{ + BR.A = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_B (Z80Context* ctx) +{ + BR.B = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_C (Z80Context* ctx) +{ + BR.C = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_D (Z80Context* ctx) +{ + BR.D = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_E (Z80Context* ctx) +{ + BR.E = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_H (Z80Context* ctx) +{ + BR.H = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RR_L (Z80Context* ctx) +{ + BR.L = doRR(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRA (Z80Context* ctx) +{ + BR.A = doRR(ctx, 0, BR.A); + + +} + + +static void RRC_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doRRC(ctx, 1, read8(ctx, WR.HL))); + +} + + +static void RRC_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doRRC(ctx, 1, read8(ctx, WR.IX + off))); +} + + +static void RRC_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doRRC(ctx, 1, read8(ctx, WR.IY + off))); +} + + +static void RRC_A (Z80Context* ctx) +{ + BR.A = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_B (Z80Context* ctx) +{ + BR.B = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_C (Z80Context* ctx) +{ + BR.C = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_D (Z80Context* ctx) +{ + BR.D = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_E (Z80Context* ctx) +{ + BR.E = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_H (Z80Context* ctx) +{ + BR.H = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRC_L (Z80Context* ctx) +{ + BR.L = doRRC(ctx, 1, read8(ctx, WR.HL)); +} + + +static void RRCA (Z80Context* ctx) +{ + BR.A = doRRC(ctx, 0, BR.A); + + +} + + +static void RRD (Z80Context* ctx) +{ + byte Ah = BR.A & 0xF0; + byte hl = read8(ctx, WR.HL); + + BR.A = (BR.A & 0x0F) | (hl & 0xF0); + hl = (hl >> 4) | (Ah << 4); + + write8(ctx, WR.HL, hl); + + +} + + +static void RST_0H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x00; + + +} + + +static void RST_10H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x010; + + +} + + +static void RST_18H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x018; + + +} + + +static void RST_20H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x020; + + +} + + +static void RST_28H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x028; + + +} + + +static void RST_30H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x030; + + +} + + +static void RST_38H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x038; + + +} + + +static void RST_8H (Z80Context* ctx) +{ + doPush(ctx, ctx->PC); + ctx->PC = 0x08; + + +} + + +static void SBC_A_off_HL (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_SBC, F2_SBC); +} + + +static void SBC_A_off_IX_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_SBC, F2_SBC); + +} + + +static void SBC_A_off_IY_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_SBC, F2_SBC); + +} + + +static void SBC_A_A (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.A, F1_SBC, F2_SBC); +} + + +static void SBC_A_B (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.B, F1_SBC, F2_SBC); +} + + +static void SBC_A_C (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.C, F1_SBC, F2_SBC); +} + + +static void SBC_A_D (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.D, F1_SBC, F2_SBC); +} + + +static void SBC_A_E (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.E, F1_SBC, F2_SBC); +} + + +static void SBC_A_H (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.H, F1_SBC, F2_SBC); +} + + +static void SBC_A_IXh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXh, F1_SBC, F2_SBC); +} + + +static void SBC_A_IXl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXl, F1_SBC, F2_SBC); +} + + +static void SBC_A_IYh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYh, F1_SBC, F2_SBC); +} + + +static void SBC_A_IYl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYl, F1_SBC, F2_SBC); +} + + +static void SBC_A_L (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.L, F1_SBC, F2_SBC); +} + + +static void SBC_A_n (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_SBC, F2_SBC); +} + + +static void SBC_HL_BC (Z80Context* ctx) +{ + WR.HL -= WR.BC + GETFLAG(F_C); + +} + + +static void SBC_HL_DE (Z80Context* ctx) +{ + WR.HL -= WR.DE + GETFLAG(F_C); + +} + + +static void SBC_HL_HL (Z80Context* ctx) +{ + WR.HL -= WR.HL + GETFLAG(F_C); + +} + + +static void SBC_HL_SP (Z80Context* ctx) +{ + WR.HL -= WR.SP + GETFLAG(F_C); + +} + + +static void SCF (Z80Context* ctx) +{ + SETFLAG(F_C); + RESFLAG(F_N | F_H); +} + + +static void SET_0_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.HL))); +} + + +static void SET_0_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IX + off))); + + +} + + +static void SET_0_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 0, read8(ctx, WR.IY + off))); + + +} + + +static void SET_0_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 0, BR.A); +} + + +static void SET_0_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 0, BR.B); +} + + +static void SET_0_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 0, BR.C); +} + + +static void SET_0_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 0, BR.D); +} + + +static void SET_0_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 0, BR.E); +} + + +static void SET_0_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 0, BR.H); +} + + +static void SET_0_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 0, BR.L); +} + + +static void SET_1_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.HL))); +} + + +static void SET_1_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IX + off))); + + +} + + +static void SET_1_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 1, read8(ctx, WR.IY + off))); + + +} + + +static void SET_1_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 1, BR.A); +} + + +static void SET_1_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 1, BR.B); +} + + +static void SET_1_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 1, BR.C); +} + + +static void SET_1_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 1, BR.D); +} + + +static void SET_1_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 1, BR.E); +} + + +static void SET_1_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 1, BR.H); +} + + +static void SET_1_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 1, BR.L); +} + + +static void SET_2_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.HL))); +} + + +static void SET_2_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IX + off))); + + +} + + +static void SET_2_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 2, read8(ctx, WR.IY + off))); + + +} + + +static void SET_2_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 2, BR.A); +} + + +static void SET_2_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 2, BR.B); +} + + +static void SET_2_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 2, BR.C); +} + + +static void SET_2_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 2, BR.D); +} + + +static void SET_2_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 2, BR.E); +} + + +static void SET_2_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 2, BR.H); +} + + +static void SET_2_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 2, BR.L); +} + + +static void SET_3_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.HL))); +} + + +static void SET_3_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IX + off))); + + +} + + +static void SET_3_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 3, read8(ctx, WR.IY + off))); + + +} + + +static void SET_3_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 3, BR.A); +} + + +static void SET_3_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 3, BR.B); +} + + +static void SET_3_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 3, BR.C); +} + + +static void SET_3_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 3, BR.D); +} + + +static void SET_3_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 3, BR.E); +} + + +static void SET_3_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 3, BR.H); +} + + +static void SET_3_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 3, BR.L); +} + + +static void SET_4_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.HL))); +} + + +static void SET_4_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IX + off))); + + +} + + +static void SET_4_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 4, read8(ctx, WR.IY + off))); + + +} + + +static void SET_4_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 4, BR.A); +} + + +static void SET_4_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 4, BR.B); +} + + +static void SET_4_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 4, BR.C); +} + + +static void SET_4_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 4, BR.D); +} + + +static void SET_4_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 4, BR.E); +} + + +static void SET_4_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 4, BR.H); +} + + +static void SET_4_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 4, BR.L); +} + + +static void SET_5_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.HL))); +} + + +static void SET_5_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IX + off))); + + +} + + +static void SET_5_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 5, read8(ctx, WR.IY + off))); + + +} + + +static void SET_5_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 5, BR.A); +} + + +static void SET_5_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 5, BR.B); +} + + +static void SET_5_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 5, BR.C); +} + + +static void SET_5_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 5, BR.D); +} + + +static void SET_5_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 5, BR.E); +} + + +static void SET_5_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 5, BR.H); +} + + +static void SET_5_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 5, BR.L); +} + + +static void SET_6_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.HL))); +} + + +static void SET_6_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IX + off))); + + +} + + +static void SET_6_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 6, read8(ctx, WR.IY + off))); + + +} + + +static void SET_6_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 6, BR.A); +} + + +static void SET_6_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 6, BR.B); +} + + +static void SET_6_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 6, BR.C); +} + + +static void SET_6_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 6, BR.D); +} + + +static void SET_6_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 6, BR.E); +} + + +static void SET_6_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 6, BR.H); +} + + +static void SET_6_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 6, BR.L); +} + + +static void SET_7_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.HL))); +} + + +static void SET_7_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IX + off))); + + +} + + +static void SET_7_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSetRes(ctx, SR_SET, 7, read8(ctx, WR.IY + off))); + + +} + + +static void SET_7_A (Z80Context* ctx) +{ + BR.A = doSetRes(ctx, SR_SET, 7, BR.A); +} + + +static void SET_7_B (Z80Context* ctx) +{ + BR.B = doSetRes(ctx, SR_SET, 7, BR.B); +} + + +static void SET_7_C (Z80Context* ctx) +{ + BR.C = doSetRes(ctx, SR_SET, 7, BR.C); +} + + +static void SET_7_D (Z80Context* ctx) +{ + BR.D = doSetRes(ctx, SR_SET, 7, BR.D); +} + + +static void SET_7_E (Z80Context* ctx) +{ + BR.E = doSetRes(ctx, SR_SET, 7, BR.E); +} + + +static void SET_7_H (Z80Context* ctx) +{ + BR.H = doSetRes(ctx, SR_SET, 7, BR.H); +} + + +static void SET_7_L (Z80Context* ctx) +{ + BR.L = doSetRes(ctx, SR_SET, 7, BR.L); +} + + +static void SLA_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSL(ctx, read8(ctx, WR.HL), IA_A)); +} + + +static void SLA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSL(ctx, read8(ctx, WR.IX + off), IA_A)); +} + + +static void SLA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSL(ctx, read8(ctx, WR.IY + off), IA_A)); +} + + +static void SLA_A (Z80Context* ctx) +{ + BR.A = doSL(ctx, BR.A, IA_A); + + +} + + +static void SLA_B (Z80Context* ctx) +{ + BR.B = doSL(ctx, BR.B, IA_A); + + +} + + +static void SLA_C (Z80Context* ctx) +{ + BR.C = doSL(ctx, BR.C, IA_A); + + +} + + +static void SLA_D (Z80Context* ctx) +{ + BR.D = doSL(ctx, BR.D, IA_A); + + +} + + +static void SLA_E (Z80Context* ctx) +{ + BR.E = doSL(ctx, BR.E, IA_A); + + +} + + +static void SLA_H (Z80Context* ctx) +{ + BR.H = doSL(ctx, BR.H, IA_A); + + +} + + +static void SLA_L (Z80Context* ctx) +{ + BR.L = doSL(ctx, BR.L, IA_A); + + +} + + +static void SLL_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSL(ctx, read8(ctx, WR.HL), IA_L)); +} + + +static void SLL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSL(ctx, read8(ctx, WR.IX + off), IA_L)); +} + + +static void SLL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSL(ctx, read8(ctx, WR.IY + off), IA_L)); +} + + +static void SLL_A (Z80Context* ctx) +{ + BR.A = doSL(ctx, BR.A, IA_L); + + +} + + +static void SLL_B (Z80Context* ctx) +{ + BR.B = doSL(ctx, BR.B, IA_L); + + +} + + +static void SLL_C (Z80Context* ctx) +{ + BR.C = doSL(ctx, BR.C, IA_L); + + +} + + +static void SLL_D (Z80Context* ctx) +{ + BR.D = doSL(ctx, BR.D, IA_L); + + +} + + +static void SLL_E (Z80Context* ctx) +{ + BR.E = doSL(ctx, BR.E, IA_L); + + +} + + +static void SLL_H (Z80Context* ctx) +{ + BR.H = doSL(ctx, BR.H, IA_L); + + +} + + +static void SLL_L (Z80Context* ctx) +{ + BR.L = doSL(ctx, BR.L, IA_L); + + +} + + +static void SRA_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSR(ctx, read8(ctx, WR.HL), IA_A)); +} + + +static void SRA_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSR(ctx, read8(ctx, WR.IX + off), IA_A)); +} + + +static void SRA_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSR(ctx, read8(ctx, WR.IY + off), IA_A)); +} + + +static void SRA_A (Z80Context* ctx) +{ + BR.A = doSR(ctx, BR.A, IA_A); + + +} + + +static void SRA_B (Z80Context* ctx) +{ + BR.B = doSR(ctx, BR.B, IA_A); + + +} + + +static void SRA_C (Z80Context* ctx) +{ + BR.C = doSR(ctx, BR.C, IA_A); + + +} + + +static void SRA_D (Z80Context* ctx) +{ + BR.D = doSR(ctx, BR.D, IA_A); + + +} + + +static void SRA_E (Z80Context* ctx) +{ + BR.E = doSR(ctx, BR.E, IA_A); + + +} + + +static void SRA_H (Z80Context* ctx) +{ + BR.H = doSR(ctx, BR.H, IA_A); + + +} + + +static void SRA_L (Z80Context* ctx) +{ + BR.L = doSR(ctx, BR.L, IA_A); + + +} + + +static void SRL_off_HL (Z80Context* ctx) +{ + write8(ctx, WR.HL, doSR(ctx, read8(ctx, WR.HL), IA_L)); +} + + +static void SRL_off_IX_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IX + off, doSR(ctx, read8(ctx, WR.IX + off), IA_L)); +} + + +static void SRL_off_IY_d (Z80Context* ctx) +{ + byte off = read8(ctx, ctx->PC++); + write8(ctx, WR.IY + off, doSR(ctx, read8(ctx, WR.IY + off), IA_L)); +} + + +static void SRL_A (Z80Context* ctx) +{ + BR.A = doSR(ctx, BR.A, IA_L); + + +} + + +static void SRL_B (Z80Context* ctx) +{ + BR.B = doSR(ctx, BR.B, IA_L); + + +} + + +static void SRL_C (Z80Context* ctx) +{ + BR.C = doSR(ctx, BR.C, IA_L); + + +} + + +static void SRL_D (Z80Context* ctx) +{ + BR.D = doSR(ctx, BR.D, IA_L); + + +} + + +static void SRL_E (Z80Context* ctx) +{ + BR.E = doSR(ctx, BR.E, IA_L); + + +} + + +static void SRL_H (Z80Context* ctx) +{ + BR.H = doSR(ctx, BR.H, IA_L); + + +} + + +static void SRL_L (Z80Context* ctx) +{ + BR.L = doSR(ctx, BR.L, IA_L); + + +} + + +static void SUB_A_off_HL (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.HL), F1_SUB, F2_SUB); +} + + +static void SUB_A_off_IX_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++)), F1_SUB, F2_SUB); + +} + + +static void SUB_A_off_IY_d (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++)), F1_SUB, F2_SUB); + +} + + +static void SUB_A_A (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.A, F1_SUB, F2_SUB); +} + + +static void SUB_A_B (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.B, F1_SUB, F2_SUB); +} + + +static void SUB_A_C (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.C, F1_SUB, F2_SUB); +} + + +static void SUB_A_D (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.D, F1_SUB, F2_SUB); +} + + +static void SUB_A_E (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.E, F1_SUB, F2_SUB); +} + + +static void SUB_A_H (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.H, F1_SUB, F2_SUB); +} + + +static void SUB_A_IXh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXh, F1_SUB, F2_SUB); +} + + +static void SUB_A_IXl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IXl, F1_SUB, F2_SUB); +} + + +static void SUB_A_IYh (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYh, F1_SUB, F2_SUB); +} + + +static void SUB_A_IYl (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.IYl, F1_SUB, F2_SUB); +} + + +static void SUB_A_L (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, BR.L, F1_SUB, F2_SUB); +} + + +static void SUB_A_n (Z80Context* ctx) +{ + BR.A = doArithmetic(ctx, read8(ctx, ctx->PC++), F1_SUB, F2_SUB); +} + + +static void XOR_off_HL (Z80Context* ctx) +{ + doXOR(ctx, read8(ctx, WR.HL)); +} + + +static void XOR_off_IX_d (Z80Context* ctx) +{ + doXOR(ctx, read8(ctx, WR.IX + read8(ctx, ctx->PC++))); +} + + +static void XOR_off_IY_d (Z80Context* ctx) +{ + doXOR(ctx, read8(ctx, WR.IY + read8(ctx, ctx->PC++))); +} + + +static void XOR_A (Z80Context* ctx) +{ + doXOR(ctx, BR.A); +} + + +static void XOR_B (Z80Context* ctx) +{ + doXOR(ctx, BR.B); +} + + +static void XOR_C (Z80Context* ctx) +{ + doXOR(ctx, BR.C); +} + + +static void XOR_D (Z80Context* ctx) +{ + doXOR(ctx, BR.D); +} + + +static void XOR_E (Z80Context* ctx) +{ + doXOR(ctx, BR.E); +} + + +static void XOR_H (Z80Context* ctx) +{ + doXOR(ctx, BR.H); +} + + +static void XOR_IXh (Z80Context* ctx) +{ + doXOR(ctx, BR.IXh); +} + + +static void XOR_IXl (Z80Context* ctx) +{ + doXOR(ctx, BR.IXl); +} + + +static void XOR_IYh (Z80Context* ctx) +{ + doXOR(ctx, BR.IYh); +} + + +static void XOR_IYl (Z80Context* ctx) +{ + doXOR(ctx, BR.IYl); +} + + +static void XOR_L (Z80Context* ctx) +{ + doXOR(ctx, BR.L); +} + + +static void XOR_n (Z80Context* ctx) +{ + doXOR(ctx, read8(ctx, ctx->PC++)); +}
diff -r b612024f5aee -r 78a39c3a30f6 z80.c --- a/z80.c Thu Mar 10 20:32:59 2011 +0000 +++ b/z80.c Sat Mar 12 22:39:10 2011 +0000 @@ -5,7 +5,7 @@ * (C) Gabriel Gambetta (ggambett@adinet.com.uy) 2000 - 2002 * * Version 1.99 - * + * modified for mbed 2011 Gert van der Knokke * --------------------------------------------------------- * * This program is free software; you can redistribute it and/or modify @@ -171,19 +171,22 @@ */ /** Sets a flag */ -static void setFlag(Z80Context* ctx, Z80Flags flag) +//static void setFlag(Z80Context* ctx, Z80Flags flag) +static void setFlag(Z80Context* ctx, int flag) { BR.F |= flag; } /** Resets a flag */ -static void resFlag(Z80Context* ctx, Z80Flags flag) +// static void resFlag(Z80Context* ctx, Z80Flags flag) +static void resFlag(Z80Context* ctx, int flag) { BR.F &= ~flag; } /** Puts a value in a flag */ -static void valFlag(Z80Context* ctx, Z80Flags flag, int val) +//static void valFlag(Z80Context* ctx, Z80Flags flag, int val) +static void valFlag(Z80Context* ctx, int flag, int val) { if (val) SETFLAG(flag); @@ -192,7 +195,8 @@ } /** Returns a flag */ -static int getFlag(Z80Context* ctx, Z80Flags flag) +// static int getFlag(Z80Context* ctx, Z80Flags flag) +static int getFlag(Z80Context* ctx, int flag) { return (BR.F & flag) != 0; } @@ -374,7 +378,7 @@ static void doBIT (Z80Context* ctx, int b, byte val) { if (val & (1 << b)) - RESFLAG(F_Z | F_PV); + RESFLAG(F_Z | F_PV); else SETFLAG(F_Z | F_PV); @@ -628,7 +632,7 @@ adjustFlags(ctx, BR.A); } -#include "opcodes_impl.c" +#include "opcodes_impl.h" /* ---------------------------------------------------------