#include "externs.h"

void cineExecute1400(void) {
    switch (register_PC) {

case 0x141e:

      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x05]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a6) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x06]; /* new acc value */
      /* opLDJimm_A_A (42) */
      register_J = 0x0422;
      /* opJDR_A_A (5a) */
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x07]; /* set I register */
      
      /* opLDJimm_A_A (4d) */
      register_J = 0x042d;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x142d; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */

case 0x142d:

      /* Invariants: register_P = 0x0 register_I = 0x07 */;
      /* opSTAdir_A_A (dc) */
      ram[register_I = 0x0c] = register_A; /* store acc to RAM */
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opLDAdir_A_AA (a8) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x08]; /* set I register */
      
      /* opLDJimm_A_A (46) */
      register_J = 0x0436;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x1436; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */

case 0x1436:

      /* Invariants: register_P = 0x0 register_I = 0x08 */;
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = register_A; /* store acc to RAM */
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x0e]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x0e] = register_A; /* store acc */
      /* opSUBimm_A_AA (33) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (44) */
      register_J = 0x0454;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x1454; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x08) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x1440:

      /* Invariants: register_P = 0x0 register_I = 0x0e */;
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opLDJimm_A_A (40) */
      register_J = 0x0440;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x1440; break;};
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opSUBimm_A_AA (37) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x7) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opCMPdir_A_AA (bf) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x0f]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x045b;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x145b; break;};
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x0c]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x145b; break;};
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x07]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a8) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* new acc value */
      /* opLLT_A_AA (e4) */
      {CINEBYTE temp_byte = 0;
        for (;;) {
          if (   (((register_A >> 8) & 0x0A) && (((register_A >> 8) & 0x0A) ^ 0x0A))
            ||   (((register_B >> 8) & 0x0A) && (((register_B >> 8) & 0x0A) ^ 0x0A))  ) break;
          register_A <<= 1; register_B <<= 1;
          if (!(++temp_byte)) break /* This may not be correct */;
        }
        vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF;
      }
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x05]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (66) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x06]))) & 0xFFF; /* do acc operation */
      /* opVDR_A_A (e0) */
      {
      /* set ending points and draw the vector, or buffer for a later draw. */
      int ToX = register_A & 0xFFF;
      int ToY = register_B & 0xFFF;
      
      /* Sign extend from 20 bit CCPU to 32bit target machine */
      FromX = SEX(FromX);
      ToX = SEX(ToX);
      FromY = SEX(FromY);
      ToY = SEX(ToY);
      
      /* figure out the vector */
      ToX -= FromX;
      ToX = ((signed short int)(((signed short int)ToX) >> (signed short int)vgShiftLength)) /* SAR */;
      ToX += FromX;
      
      ToY -= FromY;
      ToY = ((signed short int)(((signed short int)ToY) >> (signed short int)vgShiftLength)) /* SAR */;
      ToY += FromY;
      
      /* render the line */
#ifndef DUALCPU
      CinemaVectorData (FromX, FromY, ToX, ToY, vgColour);
#endif
      
      }

case 0x1454:

      /* Invariants: register_P = 0x0 */;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x17]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x17] = register_A; /* store acc */
      /* opLDJimm_A_A (4c) */
      register_J = 0x039c;
      /* opJMP_A_A (58) */
      {register_PC = 0x139c; break;};

case 0x145b:

      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a8) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* new acc value */
      /* opASRDe_A_AA (ee) */
      cmp_new = 0x0EEE; cmp_old = acc_a0 = register_A; flag_C = (0x0EEE + register_A);
      register_A = (register_A >> 1) | ((register_B & 1) << 11);
      register_B = (register_B >> 1) | (register_B & 0x800);
      /* opNOP_A_B (57) */
      /* opSTAirg_B_BB (e6) */
      ram[register_I] = register_B; /* store acc */
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */
      
      /* opASRe_A_AA (ed) */
      cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A;
      register_A = SEX(register_A); /* make signed */
      register_A = (((signed short int)(((signed short int)register_A) >> (signed short int)1)) /* SAR */) & 0xFFF;
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLLT_A_AA (e4) */
      {CINEBYTE temp_byte = 0;
        for (;;) {
          if (   (((register_A >> 8) & 0x0A) && (((register_A >> 8) & 0x0A) ^ 0x0A))
            ||   (((register_B >> 8) & 0x0A) && (((register_B >> 8) & 0x0A) ^ 0x0A))  ) break;
          register_A <<= 1; register_B <<= 1;
          if (!(++temp_byte)) break /* This may not be correct */;
        }
        vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF;
      }
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (66) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x06]))) & 0xFFF; /* do acc operation */
      /* opVDR_A_A (e0) */
      {
      /* set ending points and draw the vector, or buffer for a later draw. */
      int ToX = register_A & 0xFFF;
      int ToY = register_B & 0xFFF;
      
      /* Sign extend from 20 bit CCPU to 32bit target machine */
      FromX = SEX(FromX);
      ToX = SEX(ToX);
      FromY = SEX(FromY);
      ToY = SEX(ToY);
      
      /* figure out the vector */
      ToX -= FromX;
      ToX = ((signed short int)(((signed short int)ToX) >> (signed short int)vgShiftLength)) /* SAR */;
      ToX += FromX;
      
      ToY -= FromY;
      ToY = ((signed short int)(((signed short int)ToY) >> (signed short int)vgShiftLength)) /* SAR */;
      ToY += FromY;
      
      /* render the line */
#ifndef DUALCPU
      CinemaVectorData (FromX, FromY, ToX, ToY, vgColour);
#endif
      
      }
      /* opLDAdir_A_AA (a8) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* set I register */
      
      /* opADDdir_A_AA (66) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x6]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */
      
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDJimm_A_A (4e) */
      register_J = 0x041e;
      /* opJMP_A_A (58) */
      {register_PC = 0x141e; break;};

case 0x1471:

      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x03]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x03] = register_A; /* store acc */
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opLDJimm_A_A (4c) */
      register_J = 0x039c;
      /* opJMP_A_A (58) */
      {register_PC = 0x139c; break;};

case 0x1479:

      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opCMPdir_A_AA (bf) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2f]) ^ 0xFFF) + 1 + register_A);
      /* opLDJirg_A_A (e1) */
      /* load J reg from value at last dir addr */
      register_J = ram[0x2f];
      /* opJMP_A_A (58) */
      {register_PC = 0x1000 | register_J; break;};

case 0x147d:

      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opCMPdir_A_AA (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x00]) ^ 0xFFF) + 1 + register_A);
      /* opLDJirg_A_A (e1) */
      /* load J reg from value at last dir addr */
      register_J = ram[0x00];
      /* opJMP_A_A (58) */
      {register_PC = 0x1000 | register_J; break;};

case 0x1575:

      /* Invariants: register_P = 0x1 register_I = 0x1f */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x7f;
      register_A = flag_C = acc_a0 = 0x007f;
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1 + register_A);
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opSTAirg_A_A (e6) */
      ram[0x1e] = register_A; /* store acc */
      /* opLDAimm_A_AA (05) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0500;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xf6;
      register_A = flag_C = acc_a0 = 0x05f6;
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x1a] = 0x5f6; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x20;
      register_A = flag_C = acc_a0 = 0x0020;
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4f) */
      register_J = 0x059f;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x159f; break;};
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x05ab;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x15ab; break;};
      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4f) */
      register_J = 0x05bf;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x15bf; break;};
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x1a]; /* set I register */
      
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x1e]))) & 0xFFF; /* do acc operation */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (db) */
      ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0a]; /* set I register */
      
      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0060))) & 0xFFF; /* add values */
      /* opSUBdir_A_AA (7e) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opLDJimm_A_A (4d) */
      register_J = 0x05cd;
      /* opJMP_A_A (58) */
      {register_PC = 0x15cd; break;};

case 0x159f:

      /* Invariants: register_P = 0x1 register_I = 0x1e register_A = 0x20 */;
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x1a]; /* set I register */
      
      /* opSUBdir_A_AA (7e) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (db) */
      ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (05) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0500;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xd6;
      register_A = flag_C = acc_a0 = 0x05d6;
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */
      /* opLDJimm_A_A (49) */
      register_J = 0x05b9;
      /* opJMP_A_A (58) */
      {register_PC = 0x15b9; break;};

case 0x15ab:

      /* Invariants: register_P = 0x1 register_I = 0x1e register_A = 0x40 */;
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x1a]; /* set I register */
      
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x1e]))) & 0xFFF; /* do acc operation */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x40) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (db) */
      ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0a]; /* set I register */
      
      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */
      /* opSUBdir_A_AA (7e) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */

case 0x15b9:

      /* Invariants: register_P = 0x1 register_I = 0x1e */;
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (da) */
      ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x05d3;
      /* opJMP_A_A (58) */
      {register_PC = 0x15d3; break;};

case 0x15bf:

      /* Invariants: register_P = 0x1 register_I = 0x1e register_A = 0x60 */;
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x1a]; /* set I register */
      
      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0040))) & 0xFFF; /* add values */
      /* opSUBdir_A_AA (7e) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x1e]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (db) */
      ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0a]; /* set I register */
      
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x60) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x15cd:

      /* Invariants: register_P = 0x1 register_I = 0x1e */;
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (da) */
      ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x15d3:

      /* Invariants: register_P = 0x1 register_I = 0x1a */;
      /* opCMPdir_A_AA (bf) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x1f]) ^ 0xFFF) + 1 + register_A);
      /* opLDJirg_A_A (e1) */
      /* load J reg from value at last dir addr */
      register_J = ram[0x1f];
      /* opJMP_A_A (58) */
      {register_PC = 0x1000 | register_J; break;};

case 0x1600:

      /* Invariants: register_P = 0x0 register_I = 0x00 */;
      /* opNOP_A_A (5f) */
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (02) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0200;
      /* opNOP_A_B (57) */
      /* opADDimmX_B_AA (20) */
      cmp_old = register_B; acc_a0 = register_A; /* save old accA bit0 */
      cmp_new = 0x76;
      register_B = flag_C = 0x0276; cmp_new = 0x76; /* No carry */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xa0;
      register_A = flag_C = acc_a0 = 0x00a0;
      /* opLDJimm_A_A (4b) */
      register_J = 0x060b;
      /* opJDR_A_A (5a) */
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x38) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x1610:

      /* Invariants: register_P = 0x0 register_I = 0x00 */;
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opLDJimm_A_A (40) */
      register_J = 0x0610;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x1610; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opCMPdir_A_AA (b9) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4a) */
      register_J = 0x063a;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x163a; break;};
      /* opOUTbi_A_A (96) */
      vgColour = 0x07;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x96;
      register_A = flag_C = acc_a0 = 0x0096;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x096; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x8a;
      register_A = flag_C = acc_a0 = 0x028a;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x28a; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x11;
      register_A = flag_C = acc_a0 = 0x0011;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x011; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x000; /* store acc to RAM */
      /* opLDAimm_A_AA (06) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0600;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x33;
      register_A = flag_C = acc_a0 = 0x0633;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x633; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x07;
      register_A = flag_C = acc_a0 = 0x063a;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x63a; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

case 0x163a:

      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opLDAdir_A_AA (a1) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x71]; /* set I register */
      
      /* opLDJimm_A_A (44) */
      register_J = 0x0644;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x1644; break;};
      /* opSUBimm_A_AA (31) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opSTAirg_A_A (e6) */
      ram[0x71] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      

case 0x1644:

      /* Invariants: register_P = 0x7 register_I = 0x71 */;
      /* opOUTbi_A_A (96) */
      vgColour = register_A & 0x01 ? 0x0f: 0x07;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x10;
      register_A = flag_C = acc_a0 = 0x0010;
      /* opOUTbi_A_A (93) */
      /* opOUTsnd_A (93) */
      set_sound_data(0);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (90) */
      /* opOUTsnd_A (90) */
      set_sound_addr_A(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (91) */
      /* opOUTsnd_A (91) */
      set_sound_addr_B(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (92) */
      /* opOUTsnd_A (92) */
      set_sound_addr_C(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xa0;
      register_A = flag_C = acc_a0 = 0x00a0;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x0a0; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x58;
      register_A = flag_C = acc_a0 = 0x0258;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x258; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x07;
      register_A = flag_C = acc_a0 = 0x0007;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x007; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (23) */
      cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003;
      
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x003; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x01;
      register_A = flag_C = acc_a0 = 0x0004;
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x02] = 0x004; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x6a;
      register_A = flag_C = acc_a0 = 0x006a;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x06a; /* store acc to RAM */
      /* opLDAimm_A_AA (06) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0600;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x71;
      register_A = flag_C = acc_a0 = 0x0671;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x671; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

case 0x1671:

      /* Invariants: register_P = 0x0 register_I = 0x00 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xb8;
      register_A = flag_C = acc_a0 = 0x00b8;
      /* opLDPimm_A_A (80) */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x0b8; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x58;
      register_A = flag_C = acc_a0 = 0x0258;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x258; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x07;
      register_A = flag_C = acc_a0 = 0x0007;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x007; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (23) */
      cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003;
      
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x003; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x01;
      register_A = flag_C = acc_a0 = 0x0004;
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x02] = 0x004; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x6b;
      register_A = flag_C = acc_a0 = 0x006b;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x06b; /* store acc to RAM */
      /* opLDAimm_A_AA (06) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0600;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x8f;
      register_A = flag_C = acc_a0 = 0x068f;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x68f; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

case 0x168f:

      /* Invariants: register_P = 0x0 register_I = 0x00 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opLDAdir_A_AA (a0) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x20]; /* set I register */
      
      /* opLDJimm_A_A (4a) */
      register_J = 0x069a;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x169a; break;};
      /* opSUBimm_A_AA (31) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opSTAirg_A_A (e6) */
      ram[0x20] = register_A; /* store acc */
      /* opLDJimm_A_A (44) */
      register_J = 0x0704;
      /* opJMP_A_A (58) */
      {register_PC = 0x1704; break;};

case 0x169a:

      /* Invariants: register_P = 0x2 register_I = 0x20 register_A = 0x00 */;
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x25]; /* set I register */
      
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x3f] = register_A; /* store acc to RAM */
      /* opADDimm_A_AA (23) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */
      
      /* opLDPimm_A_A (84) */
      register_P = 0x4; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x4f] = register_A; /* store acc to RAM */
      /* opADDimm_A_AA (23) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */
      
      /* opLDPimm_A_A (85) */
      register_P = 0x5; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x5f] = register_A; /* store acc to RAM */
      /* opADDimm_A_AA (24) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x4))) & 0xFFF; /* add values, save carry */
      
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x25] = register_A; /* store acc to RAM */
      /* opSUBimm_A_AA (31) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAdir_A_A (d0) */
      ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0xff) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opLDJimm_A_A (43) */
      register_J = 0x06b3;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x16b3; break;};
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xff;
      register_A = flag_C = acc_a0 = 0x02ff;
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x16b3:

      /* Invariants: register_P = 0x2 register_I = 0x20 */;
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x3f]; /* set I register */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d8) */
      ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d9) */
      ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (22) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (da) */
      ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */
      /* opLDPimm_A_A (84) */
      register_P = 0x4; /* set page register */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x4f]; /* set I register */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d8) */
      ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d9) */
      ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (22) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (da) */
      ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */
      /* opLDPimm_A_A (85) */
      register_P = 0x5; /* set page register */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x5f]; /* set I register */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d8) */
      ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (d9) */
      ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opADDimm_A_AA (22) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSTAdir_A_A (da) */
      ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */

case 0x1704:

      /* Invariants: register_P = 0xdeadbeef */;
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opLDAdir_A_AA (a9) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x89]; /* set I register */
      
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x7a] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opLDPimm_A_A (87) */
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0x78] = 0x800; /* store acc to RAM */
      /* opNOP_A_B (57) */
      /* opINP_B_AA (17) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* save old accB */
#ifdef RAWIO
      register_B = cmp_new = (( ioSwitches >> 0x7 ) & 0x01);
#else
      register_B = cmp_new = get_coin_state(); /* apparently not used in tailgunner??? */
#endif
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opOUTbi_A_A (95) */
      /* opOUTsnd_A (95) */
      reset_coin_counter(1);
      /* opASRDe_A_AA (ee) */
      cmp_new = 0x0EEE; cmp_old = acc_a0 = register_A; flag_C = (0x0EEE + register_A);
      register_A = (register_A >> 1) | ((register_B & 1) << 11);
      register_B = (register_B >> 1) | (register_B & 0x800);
      /* opOUTbi_A_A (95) */
      /* opOUTsnd_A (95) */
      reset_coin_counter(register_A&1);
      /* opCMPdir_A_AA (b8) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x78]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4e) */
      register_J = 0x072e;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x172e; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opSTAirg_A_A (e6) */
      ram[0x78] = 0x001; /* store acc */
      /* opNOP_A_B (57) */
      /* opINP_B_AA (10) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* save old accB */
#ifdef RAWIO
      register_B = cmp_new = (( ioSwitches >> 0x0 ) & 0x01);
#else
      register_B = cmp_new = get_quarters_per_game(); /* 1 => 1q/game, 0 => 2q/game */ 
#endif
      /* opNOP_A_B (57) */
      /* opCMPdir_B_AA (b8) */
      acc_a0 = register_A;
      flag_C = ((((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1) + (cmp_old = register_B)); /* ones compliment */
      /* opLDJimm_A_A (4b) */
      register_J = 0x072b;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x172b; break;};
      /* opLDAdir_A_AA (a9) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x79]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x79] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opCMPdir_A_AA (b9) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x79]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4e) */
      register_J = 0x072e;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x172e; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAirg_A_A (e6) */
      ram[0x79] = 0x000; /* store acc */

case 0x172b:

      /* Invariants: register_P = 0x7 register_I = 0x78 register_A = 0x01 */;
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x7a]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x7a] = register_A; /* store acc */

case 0x172e:

      /* Invariants: register_P = 0x7 */;
      /* opLDPimm_A_A (87) */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x7a]; /* set I register */
      
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0x89] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x7a] = 0x000; /* store acc to RAM */
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opCMPdir_A_AA (b9) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (49) */
      register_J = 0x07b9;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x17b9; break;};
      /* opOUTbi_A_A (96) */
      vgColour = 0x07;
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opLDAdir_A_AA (a1) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x81]; /* set I register */
      
      /* opLDJimm_A_A (49) */
      register_J = 0x0749;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x1749; break;};
      /* opSUBimm_A_AA (3a) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0xa) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x1749; break;};
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x8b]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x8b] = register_A; /* store acc */
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (96) */
      vgColour = register_A & 0x01 ? 0x0f: 0x07;

case 0x1749:

      /* Invariants: register_P = 0x8 register_I = 0x81 */;
      /* opLDAimm_A_AA (01) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0100;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xcc;
      register_A = flag_C = acc_a0 = 0x01cc;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x1cc; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x8a;
      register_A = flag_C = acc_a0 = 0x028a;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x28a; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x21;
      register_A = flag_C = acc_a0 = 0x0021;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x021; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (23) */
      cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003;
      
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x003; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x01;
      register_A = flag_C = acc_a0 = 0x0004;
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x02] = 0x004; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x81;
      register_A = flag_C = acc_a0 = 0x0081;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x081; /* store acc to RAM */
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x67;
      register_A = flag_C = acc_a0 = 0x0767;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x767; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

case 0x1767:

      /* Invariants: register_P = 0x0 register_I = 0x00 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x72]; /* set I register */
      
      /* opLDJimm_A_A (41) */
      register_J = 0x0771;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x1771; break;};
      /* opSUBimm_A_AA (31) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opSTAirg_A_A (e6) */
      ram[0x72] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      

case 0x1771:

      /* Invariants: register_P = 0x7 register_I = 0x72 register_A = 0x00 */;
      /* opOUTbi_A_A (96) */
      vgColour = 0x07;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2a) */
      cmp_new = 0xa; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000a;
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (79) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAirg_A_A (e6) */
      ram[0x69] = register_A; /* store acc */
      /* opSUBimm_A_AA (39) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x9) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (44) */
      register_J = 0x0784;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x1784; break;};
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x7b]; /* set I register */
      
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0x7b] = register_A; /* store acc */
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opOUTbi_A_A (96) */
      vgColour = register_A & 0x01 ? 0x0f: 0x07;

case 0x1784:

      /* Invariants: register_P = 0x6 register_I = 0x69 register_A = 0xff7 */;
      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x20;
      register_A = flag_C = acc_a0 = 0x0320;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x320; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x58;
      register_A = flag_C = acc_a0 = 0x0258;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x258; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x21;
      register_A = flag_C = acc_a0 = 0x0021;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x021; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (23) */
      cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003;
      
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x003; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x01;
      register_A = flag_C = acc_a0 = 0x0004;
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x02] = 0x004; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x69;
      register_A = flag_C = acc_a0 = 0x0069;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x069; /* store acc to RAM */
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xa2;
      register_A = flag_C = acc_a0 = 0x07a2;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x7a2; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

case 0x17a2:

      /* Invariants: register_P = 0x0 register_I = 0x00 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2a) */
      cmp_new = 0xa; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000a;
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (79) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAirg_A_A (e6) */
      ram[0x69] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x1d;
      register_A = flag_C = acc_a0 = 0x001d;
      /* opOUTbi_A_A (93) */
      /* opOUTsnd_A (93) */
      set_sound_data(1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (90) */
      /* opOUTsnd_A (90) */
      set_sound_addr_A(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (91) */
      /* opOUTsnd_A (91) */
      set_sound_addr_B(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (92) */
      /* opOUTsnd_A (92) */
      set_sound_addr_C(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLDJimm_A_A (48) */
      register_J = 0x0058;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opJPP8_A_B (50) */
      register_PC = 0x0058; /* Jump to other rom bank */
      break;

case 0x17b9:

      /* Invariants: register_P = 0x6 register_I = 0x69 register_A = 0x00 */;
      /* opLDPimm_A_A (86) */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */
      
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x6c]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x07cb;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x17cb; break;};
      /* opLDJimm_A_A (45) */
      register_J = 0x07c5;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x17c5; break;};
      /* opSTAirg_A_A (e6) */
      ram[0x6c] = register_A; /* store acc */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x6b]; /* set I register */
      
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x6d] = register_A; /* store acc to RAM */

case 0x17c5:

      /* Invariants: register_P = 0x6 register_I = 0x6c register_A = 0x00 */;
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x6b]; /* set I register */
      
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x6d]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x07cb;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x17cb; break;};
      /* opSTAirg_A_A (e6) */
      ram[0x6d] = register_A; /* store acc */

case 0x17cb:

      /* Invariants: register_P = 0x6 register_I = 0x6d register_A = 0x00 */;
      /* opJDR_A_A (5a) */
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (02) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0200;
      /* opNOP_A_B (57) */
      /* opADDimmX_B_AA (20) */
      cmp_old = register_B; acc_a0 = register_A; /* save old accA bit0 */
      cmp_new = 0x76;
      register_B = flag_C = 0x0276; cmp_new = 0x76; /* No carry */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xda;
      register_A = flag_C = acc_a0 = 0x02da;
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opOUTbi_A_A (96) */
      vgColour = 0x07;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opLDPimm_A_A (86) */
      /* opSTAdir_A_A (d1) */
      ram[register_I = 0x61] = 0x001; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x62] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x60] = 0x000; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x1c;
      register_A = flag_C = acc_a0 = 0x001c;
      /* opOUTbi_A_A (93) */
      /* opOUTsnd_A (93) */
      set_sound_data(0);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (90) */
      /* opOUTsnd_A (90) */
      set_sound_addr_A(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (91) */
      /* opOUTsnd_A (91) */
      set_sound_addr_B(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (92) */
      /* opOUTsnd_A (92) */
      set_sound_addr_C(register_A&1);
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opOUTbi_A_A (94) */
      /* opOUTsnd_A (94) */
      if (register_A&1) strobe_sound_on(); else strobe_sound_off();
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xbc;
      register_A = flag_C = acc_a0 = 0x02bc;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x03] = 0x2bc; /* store acc to RAM */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x8a;
      register_A = flag_C = acc_a0 = 0x028a;
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x04] = 0x28a; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x21;
      register_A = flag_C = acc_a0 = 0x0021;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 0x021; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x0f] = 0x000; /* store acc to RAM */
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x03;
      register_A = flag_C = acc_a0 = 0x0803;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x803; /* store acc to RAM */
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x0c;
      register_A = flag_C = acc_a0 = 0x080f;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x80f; /* store acc to RAM */
      /* opLDJimm_A_A (43) */
      register_J = 0x0af3;
      /* opJMP_A_A (58) */
      {register_PC = 0x1af3; break;};

    default:
        /* Jumping to any illegal address or end of eprom will come here */
        /* we ought to reinitialise or something */
        ;
    }
}
