#include "externs.h"

void cineExecute0000(void) {
    switch (register_PC) {

case 0x0000:

      /* Invariants: register_P = 0x0 register_I = 0x00 register_A = 0x00 */;
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (00) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0;
      /* opLDAimm_A_AA (0f) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0f00;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x01;
      register_A = flag_C = acc_a0 = 0x0f01;
      /* opLDJimm_A_A (48) */
      register_J = 0x0008;
      /* opLDPimm_A_A (80) */

case 0x0008:

      /* Invariants: register_P = 0x0 */;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = register_A; /* store acc to RAM */
      /* opLDIdir_A_A (c0) */
      register_I = ram[0x00]&0xff; /* set new register_I (8 bits) */
      /* opNOP_A_B (57) */
      /* opSTAirg_B_BB (e6) */
      ram[register_I] = register_B; /* store acc */
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0008; break;};
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = register_A; /* store acc to RAM */
      /* 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);
      /* opLDJimm_A_A (44) */
      register_J = 0x0904;
      /* opJMP_A_A (58) */
      {register_PC = 0x0904; break;};

case 0x0026:

      /* Invariants: register_P = 0x8 register_I = 0x82 register_A = 0x01 */;
      /* opLDAimm_A_AA (09) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0900;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x1c;
      register_A = flag_C = acc_a0 = 0x091c;
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[0x82]))) & 0xFFF;
      set_watchdog();
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* 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 = 0xd3;
      register_A = flag_C = acc_a0 = 0x02d3;
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x83] = 0x2d3; /* store acc to RAM */
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x22] = 0x2d3; /* store acc to RAM */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x23] = 0x2d3; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (dc) */
      ram[register_I = 0x2c] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x2d] = 0x000; /* store acc to RAM */
      /* 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 */
      /* 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 */
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x6a] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (dc) */
      ram[register_I = 0x6c] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0x69] = 0x000; /* store acc to RAM */
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opSTAdir_A_A (d1) */
      ram[register_I = 0x61] = 0x001; /* store acc to RAM */
      /* opINP_A_AA (17) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x7);
#else
      register_A = cmp_new = get_io_startbutton();
#endif
      /* 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 (48) */
      register_J = 0x0058;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0058; break;};
      /* opLDJimm_A_A (40) */
      register_J = 0x0000;
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opJPP8_A_B (50) */
      register_PC = 0x1000; /* Jump to other rom bank */
      break;

case 0x004a:

      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x001f))) & 0xFFF; /* add values */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x0056;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0056; break;};
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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[register_I] = register_A; /* store acc */
      /* opLDJimm_A_A (48) */
      register_J = 0x0058;
      /* opJMP_A_A (58) */
      {register_PC = 0x0058; break;};

case 0x0056:

      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x0058:

      /* opNOP_A_A (5f) */
      /* opNOP_A_A (5f) */
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (03) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0300;
      /* 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);
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opLDJimm_A_A (40) */
      register_J = 0x0060;
      /* 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 = 0x12) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x0065:

      /* Invariants: register_P = 0xdeadbeef */;
      /* 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 (45) */
      register_J = 0x0065;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0065; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2b) */
      cmp_new = 0xb; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000b;
      
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (00) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0;
      /* 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;
      }
      /* opWAI_A_A (e5) */
      /* wait for a tick on the watchdog */
      CinemaClearScreen();
      bNewFrame = 1;
      register_PC = 0x006f;
      break;

case 0x006f:

      /* Invariants: register_P = 0xdeadbeef register_A = 0x2c0 */;
      /* opWAI_A_A (e5) */
      register_PC = 0x0070;

case 0x0070:

      /* Invariants: register_P = 0xdeadbeef register_A = 0x2c0 */;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x02c1;
      
      /* opAWDirg_A_AA (f7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* 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 (4e) */
      register_J = 0x00be;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x00be; break;};
      /* 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 = 0x1e;
      register_A = flag_C = acc_a0 = 0x001e;
      /* 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 = 0x1a;
      register_A = flag_C = acc_a0 = 0x001a;
      /* 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 = 0x18;
      register_A = flag_C = acc_a0 = 0x0018;
      /* 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 = 0x16;
      register_A = flag_C = acc_a0 = 0x0016;
      /* 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 = 0x14;
      register_A = flag_C = acc_a0 = 0x0014;
      /* 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();

case 0x00be:

      /* Invariants: register_P = 0x6 register_I = 0x69 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 = 0x17;
      register_A = flag_C = acc_a0 = 0x0017;
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4f) */
      register_J = 0x00df;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x00df; break;};
      /* 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 = 0x15;
      register_A = flag_C = acc_a0 = 0x0115;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (42) */
      register_J = 0x00e2;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x00e2; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opCMPdir_A_AA (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x00e2; break;};
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* 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 = 0x69]; /* set I register */
      
      /* opLDJimm_A_A (4f) */
      register_J = 0x00df;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x00df; 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[0x69] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2f) */
      cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f;
      
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x72] = 0x00f; /* store acc to RAM */
      /* opLDPimm_A_A (87) */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x73]; /* 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[0x73] = register_A; /* store acc */

case 0x00df:

      /* Invariants: register_P = 0xdeadbeef register_I = 0x37 register_A = 0x17 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x30] = 0x000; /* store acc to RAM */

case 0x00e2:

      /* Invariants: register_P = 0x3 */;
      /* 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 = 0x17;
      register_A = flag_C = acc_a0 = 0x0017;
      /* opLDPimm_A_A (84) */
      register_P = 0x4; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (43) */
      register_J = 0x0103;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0103; break;};
      /* 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 = 0x15;
      register_A = flag_C = acc_a0 = 0x0115;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x43]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x0106;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0106; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opCMPdir_A_AA (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0106; break;};
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* 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 = 0x69]; /* set I register */
      
      /* opLDJimm_A_A (43) */
      register_J = 0x0103;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0103; 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[0x69] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2f) */
      cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f;
      
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x72] = 0x00f; /* store acc to RAM */
      /* opLDPimm_A_A (87) */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x73]; /* 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[0x73] = register_A; /* store acc */

case 0x0103:

      /* Invariants: register_P = 0xdeadbeef register_I = 0x47 register_A = 0x17 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (84) */
      register_P = 0x4; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x40] = 0x000; /* store acc to RAM */

case 0x0106:

      /* Invariants: register_P = 0xdeadbeef */;
      /* 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 = 0x17;
      register_A = flag_C = acc_a0 = 0x0017;
      /* opLDPimm_A_A (85) */
      register_P = 0x5; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (47) */
      register_J = 0x0127;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0127; break;};
      /* 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 = 0x15;
      register_A = flag_C = acc_a0 = 0x0115;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x53]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4a) */
      register_J = 0x012a;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x012a; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opCMPdir_A_AA (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x012a; break;};
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* 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 = 0x69]; /* set I register */
      
      /* opLDJimm_A_A (47) */
      register_J = 0x0127;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0127; 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[0x69] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (2f) */
      cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f;
      
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x72] = 0x00f; /* store acc to RAM */
      /* opLDPimm_A_A (87) */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x73]; /* 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[0x73] = register_A; /* store acc */

case 0x0127:

      /* Invariants: register_P = 0xdeadbeef register_I = 0x57 register_A = 0x17 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (85) */
      register_P = 0x5; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x50] = 0x000; /* store acc to RAM */

case 0x012a:

      /* Invariants: register_P = 0x5 */;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* 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 = 0x73]; /* set I register */
      
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (4e) */
      register_J = 0x013e;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x013e; break;};
      /* 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 = 0x14;
      register_A = flag_C = acc_a0 = 0x0014;
      /* 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();

case 0x013e:

      /* Invariants: register_P = 0x7 register_I = 0x73 register_A = 0x00 */;
      /* opLDJimm_A_A (40) */
      register_J = 0x0140;
      /* opJDR_A_A (5a) */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* 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 = 0xa0;
      register_A = flag_C = acc_a0 = 0x00a0;
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opSTAdir_A_A (d1) */
      ram[register_I = 0xc1] = 0x0a0; /* store acc to RAM */

case 0x0148:

      /* Invariants: register_P = 0xc register_I = 0xc1 */;
      /* opLDAdir_A_AA (a1) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc1]; /* 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 */
      
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0xc2] = register_A; /* store acc to RAM */

case 0x014b:

      /* Invariants: register_P = 0xc */;
      /* opLDAimm_A_AA (04) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0400;
      /* opADDimm_A_AA (28) */
      cmp_new = 0x8; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0408;
      
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* 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;
      /* 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;
      /* 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;
      /* 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;
      /* 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;
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0xc5] = register_A; /* store acc to RAM */
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (03) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0300;
      /* 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);
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opLDJimm_A_A (4b) */
      register_J = 0x015b;
      /* 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 (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc5]; /* set I register */
      
      /* opLDJimm_A_A (44) */
      register_J = 0x0164;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0164; 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 0x0164:

      /* Invariants: register_P = 0xc register_I = 0xc5 */;
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0xc8] = register_A; /* store acc to RAM */
      /* 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;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x70] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (24) */
      cmp_new = 0x4; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0004;
      
      /* opLDPimm_A_A (87) */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x018b;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x018b; break;};
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (00) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0;
      /* opNOP_A_B (57) */
      /* opSUBirg_B_AA (e8) */
      acc_a0 = register_A;
      register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* 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) */
      /* opSUBimm_B_AA (31) */
      acc_a0 = register_A;
      register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* 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 = 0xc5]; /* 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 */
      
      /* 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;
      /* 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;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x74] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (41) */
      register_J = 0x0181;

case 0x0181:

      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opNOP_A_B (57) */
      /* opADDimm_B_AA (21) */
      acc_a0 = register_A; /* save old accA bit0 */
      cmp_old = register_B; /* store old acc for later */
      register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0181; break;};
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc5]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0xc5] = 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;
      
      /* opOUTbi_A_A (96) */
      vgColour = 0x0f;

case 0x018b:

      /* Invariants: register_P = 0x7 register_I = 0x73 register_A = 0x04 */;
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* 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 = 0xc5]; /* set I register */
      
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* opADDimm_A_AA (28) */
      cmp_new = 0x8; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0308;
      
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* 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;
      /* 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;
      /* 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;
      /* 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;
      /* 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;
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0xc6] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opLDJimm_A_A (41) */
      register_J = 0x01a1;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x01a1; 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 0x01a1:

      /* Invariants: register_P = 0xc register_I = 0xc6 */;
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0xc9] = register_A; /* store acc to RAM */
      /* 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;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opADDdir_A_AA (60) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x70]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x70] = register_A; /* store acc */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (24) */
      cmp_new = 0x4; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0004;
      
      /* opLDPimm_A_A (87) */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x01c6;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x01c6; break;};
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (00) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0;
      /* opNOP_A_B (57) */
      /* opSUBirg_B_AA (e8) */
      acc_a0 = register_A;
      register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* 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) */
      /* opSUBimm_B_AA (31) */
      acc_a0 = register_A;
      register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opLDAdir_A_AA (a6) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc6]; /* 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 */
      
      /* 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;
      /* 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;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x74] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (4f) */
      register_J = 0x01bf;

case 0x01bf:

      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opNOP_A_B (57) */
      /* opADDimm_B_AA (21) */
      acc_a0 = register_A; /* save old accA bit0 */
      cmp_old = register_B; /* store old acc for later */
      register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x01bf; break;};
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opADDdir_A_AA (66) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc6]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0xc6] = register_A; /* store acc */

case 0x01c6:

      /* Invariants: register_P = 0x7 register_I = 0x73 register_A = 0x04 */;
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opLDAdir_A_AA (a6) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc6]; /* set I register */
      
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAimm_A_AA (09) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0900;
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opLDJimm_A_A (4f) */
      register_J = 0x020f;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x020f; break;};
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x020f; break;};
      /* opLDAdir_A_AA (a8) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc8]; /* set I register */
      
      /* opSUBimm_A_AA (34) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x4) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (4f) */
      register_J = 0x01df;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x01df; break;};
      /* opLDAdir_A_AA (a9) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc9]; /* set I register */
      
      /* opSUBimm_A_AA (35) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x5) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (4f) */
      register_J = 0x020f;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x020f; break;};

case 0x01df:

      /* Invariants: register_P = 0xc */;
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opNOP_A_B (57) */
      /* opLDAirg_B_AA (ea) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B;
      register_B = cmp_new = ram[register_I];
      
      /* 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);
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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;
      /* 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 = 0x4e) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x01ea:

      /* Invariants: register_P = 0xc */;
      /* 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 (4a) */
      register_J = 0x01ea;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x01ea; 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 = 0x66;
      register_A = flag_C = acc_a0 = 0x0266;
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opADDdir_A_AA (60) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x70]))) & 0xFFF; /* do acc operation */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[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;
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (00) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0;
      /* 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;
      }
      /* opLDPimm_A_A (8c) */
      register_P = 0xc; /* set page register */
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opNOP_A_B (57) */
      /* opLDAirg_B_AA (ea) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B;
      register_B = cmp_new = ram[register_I];
      
      /* 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);
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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;
      /* 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 (a1) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc1]; /* 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 */
      
      /* opSTAirg_A_A (e6) */
      ram[0xc1] = 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 = 0xc0;
      register_A = flag_C = acc_a0 = 0x00c0;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opLDJimm_A_A (48) */
      register_J = 0x0148;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0148; break;};
      /* opLDJimm_A_A (46) */
      register_J = 0x08b6;
      /* opJMP_A_A (58) */
      {register_PC = 0x08b6; break;};

case 0x020f:

      /* Invariants: register_P = 0xc */;
      /* 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 = 0x3f;
      register_A = flag_C = acc_a0 = 0x003f;
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0xc7]) ^ 0xFFF) + 1 + register_A);
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opADDimm_A_AA (22) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */
      
      /* opSTAirg_A_A (e6) */
      ram[0xc7] = register_A; /* store acc */
      /* 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 = 0x74;
      register_A = flag_C = acc_a0 = 0x0274;
      /* opADDdir_A_AA (67) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc7]))) & 0xFFF; /* do acc operation */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0xc5] = register_A; /* store acc to RAM */
      /* 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[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* 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 */
      /* 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 (d6) */
      ram[register_I = (register_P << 4) + 0x6] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */
      
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* 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 */
      /* 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;
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (a0) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x00]; /* 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[register_I] = register_A; /* store acc */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opSTAdir_A_A (d3) */
      ram[register_I = (register_P << 4) + 0x3] = register_A; /* 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 = 0x7f;
      register_A = flag_C = acc_a0 = 0x007f;
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opSTAirg_A_A (e6) */
      ram[register_I] = 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;
      /* opLDJimm_A_A (43) */
      register_J = 0x0243;
      /* opJA0_A_A (5e) */
      if (acc_a0 & 0x01) {register_PC = 0x0243; 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 */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x0243:

      /* Invariants: register_P = 0xc register_I = 0xc3 */;
      /* opLDAimm_A_AA (04) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0400;
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[0xc3]))) & 0xFFF;
      set_watchdog();
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc5]))) & 0xFFF; /* do acc operation */
      /* opLDIdir_A_A (c1) */
      register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (a0) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0xc0]; /* 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[0xc0] = register_A; /* store acc */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF;
      set_watchdog();
      /* opSTAdir_A_A (d3) */
      ram[register_I = (register_P << 4) + 0x3] = register_A; /* 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 = 0x7f;
      register_A = flag_C = acc_a0 = 0x007f;
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opSTAirg_A_A (e6) */
      ram[register_I] = 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;
      /* opLDJimm_A_A (4e) */
      register_J = 0x025e;
      /* opJA0_A_A (5e) */
      if (acc_a0 & 0x01) {register_PC = 0x025e; 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 */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x025e:

      /* Invariants: register_P = 0xc register_I = 0xc3 */;
      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[0xc3]))) & 0xFFF;
      set_watchdog();
      /* opADDdir_A_AA (66) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc6]))) & 0xFFF; /* do acc operation */
      /* opLDIdir_A_A (c2) */
      register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDJimm_A_A (4b) */
      register_J = 0x014b;
      /* opJMP_A_A (58) */
      {register_PC = 0x014b; break;};

case 0x02b6:

      /* Invariants: register_P = 0x7 register_I = 0x7d register_A = 0x00 */;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x1f) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opLDJimm_A_A (4c) */
      register_J = 0x02dc;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x02dc; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (22) */
      cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002;
      
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x7d]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x08ed;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x08ed; break;};
      /* opADDimm_A_AA (25) */
      cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007;
      
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x7d]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x08ed; break;};
      /* opINP_A_AA (1f) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0xf);
#else
      register_A = cmp_new = get_io_bit(0xf);
#endif
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opLDPimm_A_A (87) */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x75] = register_A; /* store acc to RAM */
      /* 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;
      
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opADDimmX_A_AA (20) */
      register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x001e))) & 0xFFF; /* add values */
      /* opOUTbi_A_A (93) */
      /* opOUTsnd_A (93) */
      set_sound_data(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 (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 (4b) */
      register_J = 0x08fb;
      /* opJMP_A_A (58) */
      {register_PC = 0x08fb; break;};

case 0x02dc:

      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x02de:

      /* Invariants: register_P = 0x6 register_I = 0x69 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 */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x02ed;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x02ed; break;};
      /* 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 = 0x08;
      register_A = flag_C = acc_a0 = 0x0308;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x1f] = 0x308; /* store acc to RAM */
      /* opLDJimm_A_A (40) */
      register_J = 0x0dc0;
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opJPP8_A_B (50) */
      register_PC = 0x1dc0; /* Jump to other rom bank */
      break;

case 0x02ed:

      /* 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 */
      /* 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 */
      /* opADDimm_A_AA (25) */
      cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0005;
      
      /* opLDPimm_A_A (87) */
      register_P = 0x7; /* set page register */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4a) */
      register_J = 0x004a;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x004a; break;};
      /* 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 = 0x15;
      register_A = flag_C = acc_a0 = 0x0015;
      /* 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();
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (25) */
      cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0005;
      
      /* opJMP_A_A (58) */
      {register_PC = 0x004a; break;};

case 0x0308:

      /* opNOP_A_A (5f) */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (49) */
      register_J = 0x0319;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0319; break;};
      /* opLDAdir_A_AA (ad) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x3d]; /* set I register */
      
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0319; break;};
      /* opADDdir_A_AA (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x33]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x33] = register_A; /* store acc */
      /* opLDAimm_A_AA (0f) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0f00;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A);
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0319; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x30] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x3d] = 0x000; /* store acc to RAM */

case 0x0319:

      /* Invariants: register_P = 0x3 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (84) */
      register_P = 0x4; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (49) */
      register_J = 0x0329;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0329; break;};
      /* opLDAdir_A_AA (ad) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x4d]; /* set I register */
      
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0329; break;};
      /* opADDdir_A_AA (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x43]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x43] = register_A; /* store acc */
      /* opLDAimm_A_AA (0f) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0f00;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x43]) ^ 0xFFF) + 1 + register_A);
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0329; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x40] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x4d] = 0x000; /* store acc to RAM */

case 0x0329:

      /* Invariants: register_P = 0x4 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (85) */
      register_P = 0x5; /* set page register */
      /* opCMPdir_A_AA (b7) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (49) */
      register_J = 0x0339;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0339; break;};
      /* opLDAdir_A_AA (ad) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x5d]; /* set I register */
      
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0339; break;};
      /* opADDdir_A_AA (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x53]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x53] = register_A; /* store acc */
      /* opLDAimm_A_AA (0f) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0f00;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x53]) ^ 0xFFF) + 1 + register_A);
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0339; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x50] = 0x000; /* store acc to RAM */
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x5d] = 0x000; /* store acc to RAM */

case 0x0339:

      /* Invariants: register_P = 0x5 register_A = 0x00 */;
      /* 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 (4f) */
      register_J = 0x086f;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x086f; break;};
      /* opINP_A_AA (16) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x6);
#else
      register_A = cmp_new = get_io_shields();
#endif
      /* 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 (4f) */
      register_J = 0x086f;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x086f; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opCMPdir_A_AA (b1) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x81]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x086f; break;};
      /* opLDAdir_A_AA (a0) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x80]; /* 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[0x80] = register_A; /* store acc */
      /* opSUBimm_A_AA (38) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x8) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (47) */
      register_J = 0x0377;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0377; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSTAirg_A_A (e6) */
      ram[0x80] = 0x000; /* store acc */
      /* 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 */
      
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (43) */
      register_J = 0x0373;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0373; break;};
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xff;
      register_A = flag_C = acc_a0 = 0x00ff;
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (4d) */
      register_J = 0x036d;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x036d; break;};
      /* opADDimm_A_AA (2f) */
      cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f;
      
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (48) */
      register_J = 0x0368;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0368; break;};
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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 */
      /* opLDJimm_A_A (46) */
      register_J = 0x0376;
      /* opJMP_A_A (58) */
      {register_PC = 0x0376; break;};

case 0x0368:

      /* Invariants: register_P = 0x8 register_I = 0x81 register_A = 0x00 */;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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 */
      /* opLDJimm_A_A (46) */
      register_J = 0x0376;
      /* opJMP_A_A (58) */
      {register_PC = 0x0376; break;};

case 0x036d:

      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x67) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opLDJimm_A_A (46) */
      register_J = 0x0376;
      /* opJMP_A_A (58) */
      {register_PC = 0x0376; break;};

case 0x0373:

      /* opLDAimm_A_AA (09) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0900;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x99;
      register_A = flag_C = acc_a0 = 0x0999;

case 0x0376:

      /* Invariants: register_P = 0x8 register_I = 0x81 */;
      /* opSTAirg_A_A (e6) */
      ram[0x81] = register_A; /* store acc */

case 0x0377:

      /* Invariants: register_P = 0x8 */;
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (03) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0300;
      /* 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);
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opNOP_A_B (57) */
      /* opSTAdir_B_BB (d1) */
      ram[register_I = (register_P << 4) + 0x1] = register_B; /* set I register and store B to ram */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x10] = 0x200; /* store acc to RAM */
      /* opLDJimm_A_A (41) */
      register_J = 0x0381;
      /* 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 = 0x43) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x0386:

      /* Invariants: register_P = 0x1 register_I = 0x10 */;
      /* 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 (46) */
      register_J = 0x0386;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0386; break;};
      /* 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 = 0xcb;
      register_A = flag_C = acc_a0 = 0x03cb;
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x16] = 0x3cb; /* 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 = 0xff;
      register_A = flag_C = acc_a0 = 0x00ff;
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0x18] = 0x0ff; /* store acc to RAM */

case 0x0392:

      /* Invariants: register_P = 0x1 */;
      /* opLDAdir_A_AA (a0) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x10]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a1) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x01]; /* new acc value */
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDAdir_A_AA (a6) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x16]; /* 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 */
      
      /* opSTAirg_A_A (e6) */
      ram[0x16] = register_A; /* store acc */
      /* opXLT_A_AA (e2) */
      cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */
      /* opNOP_A_A (5f) */
      /* opCMPdir_A_AA (b8) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x03e6;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x03e6; 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;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opSUBdir_A_AA (70) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x0]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (d3) */
      ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (a6) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x06]; /* 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[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;
      /* opSUBdir_A_AA (71) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (d4) */
      ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a4) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x04]; /* 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 (60) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (61) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x01]))) & 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 (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */
      
      /* opADDdir_A_AA (60) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x04]; /* set I register */
      
      /* opADDdir_A_AA (61) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x1]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDPimm_A_A (88) */
      register_P = 0x8; /* set page register */
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x83]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x03bd;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opNOP_A_B (57) */
      /* opLDAirg_B_AA (ea) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B;
      register_B = cmp_new = ram[register_I];
      
      /* 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);
      /* 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);
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[0x83]))) & 0xFFF;
      set_watchdog();
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opAWDirg_A_AA (e7) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (cmp_new = ram[0x83]))) & 0xFFF;
      set_watchdog();
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opSTAirg_A_A (e6) */
      ram[0x83] = register_A; /* store acc */
      /* opOUTbi_A_A (96) */
      vgColour = register_A & 0x01 ? 0x0f: 0x07;
      /* opJDR_A_A (5a) */
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opLDJimm_A_A (42) */
      register_J = 0x0392;
      /* opJMP_A_A (58) */
      {register_PC = 0x0392; break;};

case 0x03e6:

      /* Invariants: register_P = 0x1 register_I = 0x18 register_A = 0xff */;
      /* 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 = 0x19;
      register_A = flag_C = acc_a0 = 0x0019;
      /* 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();
      /* 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 = 0x16;
      register_A = flag_C = acc_a0 = 0x0016;
      /* 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;
      /* 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 (4e) */
      register_J = 0x045e;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x045e; break;};
      /* opLDPimm_A_A (83) */
      register_P = 0x3; /* set page register */
      /* opCMPdir_A_AA (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (44) */
      register_J = 0x0424;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0424; break;};
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x3d]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0424; break;};
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0424; break;};
      /* 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 = 0x4d;
      register_A = flag_C = acc_a0 = 0x004d;
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x3d] = 0x04d; /* 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 = 0x17;
      register_A = flag_C = acc_a0 = 0x0017;
      /* 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();
      register_PC = 0x424; break;

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


