#include "externs.h"

void cineExecute0400(void) {
    switch (register_PC) {

case 0x0424:

      /* Invariants: register_P = 0x3 */;
      /* 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 (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (41) */
      register_J = 0x0441;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0441; break;};
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x4d]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0441; 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 = 0x43]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0441; 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 = 0x4d] = 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();

case 0x0441:

      /* Invariants: register_P = 0x4 register_I = 0x43 register_A = 0x200 */;
      /* 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 (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4e) */
      register_J = 0x045e;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x045e; break;};
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x5d]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x045e; 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 = 0x53]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x045e; 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 = 0x5d] = 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();

case 0x045e:

      /* 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 (46) */
      register_J = 0x0586;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0586; break;};
      /* opINP_A_AA (1e) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0xe);
#else
      register_A = cmp_new = get_io_bit(0xe);
#endif
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (47) */
      register_J = 0x04d7;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x04d7; break;};
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opOUTbi_A_A (97) */
      /* opOUTsnd_A (97) */
      put_io_bit(/*bitno*/0x7, /*set or clr*/0x0);
      /* opLDJimm_A_A (4e) */
      register_J = 0x046e;
      /* opJDR_A_A (5a) */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x2a]; /* set I register */
      
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0x28] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (04) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0400;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x78;
      register_A = flag_C = acc_a0 = 0x0478;
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x2d] = 0x478; /* store acc to RAM */
      /* opLDJimm_A_A (45) */
      register_J = 0x0495;
      /* opJMP_A_A (58) */
      {register_PC = 0x0495; break;};

case 0x0495:

      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x2f] = 0x800; /* 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;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x2e] = register_A; /* store acc to RAM */
      /* opLDJimm_A_A (4c) */
      register_J = 0x049c;
      /* opJDR_A_A (5a) */

case 0x049d:

      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opADDdir_A_AA (6f) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xf]))) & 0xFFF; /* do acc operation */
      /* 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;
      /* opNOP_A_B (57) */
      /* opLDAimm_B_AA (01) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* step back cmp flag */
      register_B = cmp_new = 0x0100;
      /* 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;
      }
      /* 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 = 0x11) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x04a7:

      /* 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 (47) */
      register_J = 0x04a7;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x04a7; break;};
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opLDJimm_A_A (43) */
      register_J = 0x04b3;
      /* opJEI_A_A (59) */
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */
      /* opLDJimm_A_A (44) */
      register_J = 0x04b4;
      /* opJMP_A_A (58) */
      {register_PC = 0x04b4; break;};

case 0x04b4:

      /* opSTAdir_A_A (df) */
      ram[register_I = (register_P << 4) + 0xf] = 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 (22) */
      cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002;
      
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (41) */
      register_J = 0x04c1;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x04c1; break;};
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* 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[register_I] = register_A; /* store acc */
      /* opLDJimm_A_A (4d) */
      register_J = 0x049d;
      /* opJMP_A_A (58) */
      {register_PC = 0x049d; break;};

case 0x04c1:

      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opSUBdir_A_AA (78) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (de) */
      ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4c) */
      register_J = 0x04cc;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x04cc; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opSUBdir_A_AA (7e) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */

case 0x04cc:

      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (27) */
      cmp_new = 0x7; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007;
      
      /* opCMPdir_A_AA (be) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (44) */
      register_J = 0x04d4;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x04d4; break;};
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* opSTAdir_A_A (d8) */
      ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */

case 0x04d4:

      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A);
      /* opLDJirg_A_A (e1) */
      /* load J reg from value at last dir addr */
      register_J = ram[register_I];
      /* opJMP_A_A (58) */
      {register_PC = register_J; break;};

case 0x04d7:

      /* Invariants: register_P = 0x6 register_I = 0x69 */;
      /* opINP_A_AA (11) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x1);
#else
      register_A = cmp_new = get_io_moveright();
#endif
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x2f] = register_A; /* store acc to RAM */
      /* opINP_A_AA (12) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x2);
#else
      register_A = cmp_new = get_io_moveleft();
#endif
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opADDdir_A_AA (6a) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2a]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x2a] = register_A; /* store acc */
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opCMPdir_A_AA (ba) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x04f6;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x04f6; break;};
      /* opLDAimm_A_AA (0e) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0e00;
      /* opCMPdir_A_AA (ba) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x04f6; break;};
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opCMPdir_A_AA (ba) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (44) */
      register_J = 0x04f4;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x04f4; break;};
      /* opLDAimm_A_AA (0e) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0e00;
      /* opSTAirg_A_A (e6) */
      ram[0x2a] = 0xe00; /* store acc */
      /* opLDJimm_A_A (46) */
      register_J = 0x04f6;
      /* opJMP_A_A (58) */
      {register_PC = 0x04f6; break;};

case 0x04f4:

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

case 0x04f6:

      /* Invariants: register_P = 0x2 register_I = 0x2a */;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opSTAdir_A_A (dc) */
      ram[register_I = 0x2c] = register_A; /* store acc to RAM */
      /* opINP_A_AA (13) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x3);
#else
      register_A = cmp_new = get_io_moveup();
#endif
      /* opLDPimm_A_A (82) */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x2f] = register_A; /* store acc to RAM */
      /* opINP_A_AA (14) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x4);
#else
      register_A = cmp_new = get_io_movedown();
#endif
      /* opSUBirg_A_AA (e8) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opLSLe_A_AA (ec) */
      cmp_new = 0x0CEC;
      cmp_old = acc_a0 = register_A;
      flag_C = (0x0CEC + register_A);
      register_A = (register_A << 1) & 0x0FFF;
      /* opADDdir_A_AA (6b) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2b]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[0x2b] = register_A; /* store acc */
      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opCMPdir_A_AA (bb) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4b) */
      register_J = 0x051b;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x051b; break;};
      /* opLDAimm_A_AA (0d) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0d00;
      /* 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;
      /* opCMPdir_A_AA (bb) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A);
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x051b; break;};
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opCMPdir_A_AA (bb) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (48) */
      register_J = 0x0518;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0518; break;};
      /* opLDAimm_A_AA (0d) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0d00;
      /* opASRe_A_AA (ed) */
      cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A;
      register_A = SEX(register_A); /* make signed */
      register_A = (((signed short int)(((signed short int)register_A) >> (signed short int)1)) /* SAR */) & 0xFFF;
      /* opSTAirg_A_A (e6) */
      ram[0x2b] = register_A; /* store acc */
      /* opLDJimm_A_A (4b) */
      register_J = 0x051b;
      /* opJMP_A_A (58) */
      {register_PC = 0x051b; break;};

case 0x0518:

      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* 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[register_I] = register_A; /* store acc */

case 0x051b:

      /* Invariants: register_P = 0x2 register_I = 0x2b */;
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opSTAdir_A_A (dd) */
      ram[register_I = 0x2d] = register_A; /* store acc to RAM */
      /* 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 = 0xa4;
      register_A = flag_C = acc_a0 = 0x01a4;
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2c]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (47) */
      register_J = 0x0537;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0537; break;};
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2c]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (43) */
      register_J = 0x0533;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0533; break;};
      /* opLDAimm_A_AA (0e) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0e00;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x84;
      register_A = flag_C = acc_a0 = 0x0e84;
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2c]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x0536;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0536; break;};
      /* opLDJimm_A_A (47) */
      register_J = 0x0537;
      /* opJMP_A_A (58) */
      {register_PC = 0x0537; break;};

case 0x0533:

      /* 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 = 0xa4;
      register_A = flag_C = acc_a0 = 0x01a4;

case 0x0536:

      /* opSTAdir_A_A (dc) */
      ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */

case 0x0537:

      /* Invariants: register_P = 0x2 register_I = 0x2c */;
      /* 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 = 0x2c;
      register_A = flag_C = acc_a0 = 0x012c;
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2d]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (41) */
      register_J = 0x0551;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0551; break;};
      /* opLDAimm_A_AA (08) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0800;
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2d]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x054d;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x054d; break;};
      /* opLDAimm_A_AA (0e) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0e00;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xd4;
      register_A = flag_C = acc_a0 = 0x0ed4;
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x2d]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (40) */
      register_J = 0x0550;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0550; break;};
      /* opLDJimm_A_A (41) */
      register_J = 0x0551;
      /* opJMP_A_A (58) */
      {register_PC = 0x0551; break;};

case 0x054d:

      /* 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 = 0x2c;
      register_A = flag_C = acc_a0 = 0x012c;

case 0x0550:

      /* opSTAdir_A_A (dd) */
      ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */

case 0x0551:

      /* Invariants: register_P = 0x2 register_I = 0x2d */;
      /* opLDAimm_A_AA (03) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0300;
      /* opLSRe_A_AA (eb) */
      cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A);
      register_A >>= 1;
      /* opADDdir_A_AA (6d) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2d]))) & 0xFFF; /* do acc operation */
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x64] = register_A; /* store acc to RAM */
      /* 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];
      
      /* opLDAimm_A_AA (02) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0200;
      /* opLDPimm_A_A (82) */
      register_P = 0x2; /* set page register */
      /* opADDdir_A_AA (6c) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2c]))) & 0xFFF; /* do acc operation */
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x63] = register_A; /* store acc to RAM */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opLDJimm_A_A (4f) */
      register_J = 0x055f;
      /* 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;
      /* opOUTbi_A_A (96) */
      vgColour = 0x07;
      /* opINP_A_AA (15) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x5);
#else
      register_A = cmp_new = get_io_fire();
#endif
      /* opLDPimm_A_A (86) */
      /* opSTAdir_A_A (df) */
      ram[register_I = 0x6f] = register_A; /* store acc to RAM */
      /* 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 = 0x60]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (43) */
      register_J = 0x0573;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0573; 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 */
      /* opSTAirg_A_A (e6) */
      ram[0x60] = register_A; /* store acc */
      /* opLDJimm_A_A (44) */
      register_J = 0x0584;
      /* opJMP_A_A (58) */
      {register_PC = 0x0584; break;};

case 0x0573:

      /* Invariants: register_P = 0x6 register_I = 0x60 register_A = 0x00 */;
      /* opCMPdir_A_AA (bf) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x6f]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (44) */
      register_J = 0x0584;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0584; 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
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0584; break;};
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x6f]; /* set I register */
      
      /* opCMPdir_A_AA (b1) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x61]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (44) */
      register_J = 0x0584;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0584; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (29) */
      cmp_new = 0x9; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0009;
      
      /* opSTAdir_A_A (d2) */
      ram[register_I = 0x62] = 0x009; /* store acc to RAM */
      /* opADDimm_A_AA (23) */
      cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000c;
      
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x60] = 0x00c; /* store acc to RAM */

case 0x0584:

      /* Invariants: register_P = 0x6 */;
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x6f]; /* set I register */
      
      /* opSTAdir_A_A (d1) */
      ram[register_I = 0x61] = register_A; /* store acc to RAM */

case 0x0586:

      /* Invariants: register_P = 0x6 register_I = 0x61 */;
      /* 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 (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 (4f) */
      register_J = 0x05af;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x05af; break;};
      /* 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 = 0x0599;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0599; 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);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0599; break;};
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x36] = 0x000; /* store acc to RAM */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x34]; /* 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[0x34] = register_A; /* store acc */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x35]; /* 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[0x35] = register_A; /* store acc */

case 0x0599:

      /* Invariants: register_P = 0x3 register_A = 0x00 */;
      /* 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 (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 (4c) */
      register_J = 0x05ac;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x05ac; break;};
      /* opLDAimm_A_AA (05) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0500;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xb6;
      register_A = flag_C = acc_a0 = 0x05b6;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x5b6; /* 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 = 0x31;
      register_A = flag_C = acc_a0 = 0x0031;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0x19] = 0x031; /* store acc to RAM */
      /* opLDJimm_A_A (40) */
      register_J = 0x0c00;
      /* opJMP_A_A (58) */
      {register_PC = 0x0c00; break;};

case 0x05ac:

      /* Invariants: register_P = 0x3 register_I = 0x37 register_A = 0x02 */;
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x37]; /* 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[0x37] = register_A; /* store acc */

case 0x05af:

      /* Invariants: register_P = 0x3 */;
      /* 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 = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x05b2:

      /* Invariants: register_P = 0x3 */;
      /* 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 (42) */
      register_J = 0x05b2;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x05b2; break;};

case 0x05b6:

      /* 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 (48) */
      register_J = 0x0648;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0648; break;};
      /* opLDPimm_A_A (86) */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x63]; /* set I register */
      
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x10] = register_A; /* store acc to RAM */
      /* opSUBimmX_A_AA (30) */
      cmp_old = acc_a0 = register_A; /* back up regA */
      register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */
      /* opSTAdir_A_A (d3) */
      ram[register_I = 0x13] = register_A; /* store acc to RAM */
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x64]; /* set I register */
      
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (d1) */
      ram[register_I = 0x11] = register_A; /* store acc to RAM */
      /* opSTAdir_A_A (d4) */
      ram[register_I = 0x14] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (06) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0600;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x15;
      register_A = flag_C = acc_a0 = 0x0615;
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x16] = 0x615; /* 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 0x05d0:

      /* Invariants: register_P = 0x1 */;
      /* opLDJimm_A_A (40) */
      register_J = 0x05d0;
      /* opJDR_A_A (5a) */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x13]; /* 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 */
      /* 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 (4f) */
      register_J = 0x05ff;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x05ff; break;};
      /* 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 */
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 */
      /* opSTAdir_A_A (dc) */
      ram[register_I = (register_P << 4) + 0xc] = 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) */
      /* 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 */
      /* opSUBdir_A_AA (74) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x4]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 */
      /* opSTAdir_A_A (dd) */
      ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (ac) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0c]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (ad) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x0d]; /* 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 (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (64) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x04]))) & 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 (ac) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0c]; /* set I register */
      
      /* opADDdir_A_AA (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDAdir_A_AA (ad) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0d]; /* set I register */
      
      /* opADDdir_A_AA (64) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */
      /* opSTAirg_A_A (e6) */
      ram[register_I] = register_A; /* store acc */
      /* opLDJimm_A_A (40) */
      register_J = 0x05d0;
      /* opJMP_A_A (58) */
      {register_PC = 0x05d0; break;};

case 0x05ff:

      /* Invariants: register_P = 0x1 register_I = 0x18 register_A = 0xff */;
      /* 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 (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 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 (48) */
      register_J = 0x0648;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0648; break;};
      /* 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 */
      /* 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 */
      /* 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) */
      /* 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 */
      /* 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 */
      /* opSTAdir_A_A (d4) */
      ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */
      /* opLDJimm_A_A (40) */
      register_J = 0x05d0;
      /* opJMP_A_A (58) */
      {register_PC = 0x05d0; break;};

case 0x0648:

      /* 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;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opCMPdir_A_AA (b2) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (49) */
      register_J = 0x06b9;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x06b9; break;};
      /* opINP_A_AA (18) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0x8);
#else
      register_A = cmp_new = get_io_bit(0x8);
#endif
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opLDJimm_A_A (4d) */
      register_J = 0x065d;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x065d; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (26) */
      cmp_new = 0x6; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0006;
      
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x065d; break;};
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      
      /* opANDirg_A_AA (e9) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A &= (cmp_new = ram[register_I]);
      /* opLDJimm_A_A (4f) */
      register_J = 0x065f;
      /* opJMP_A_A (58) */
      {register_PC = 0x065f; break;};

case 0x065d:

      /* Invariants: register_P = 0x6 register_I = 0x62 register_A = 0x00 */;
      /* opLDAimm_A_AA (00) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0;
      /* opADDimm_A_AA (21) */
      cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001;
      

case 0x065f:

      /* Invariants: register_P = 0x6 register_I = 0x62 register_A = 0x01 */;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x1a;
      register_A = flag_C = acc_a0 = 0x001b;
      /* 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();
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x62]; /* set I register */
      
      /* 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;
      /* opCMPdir_A_AA (b3) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1 + register_A);
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* 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) */
      /* opSTAdir_B_BB (d5) */
      ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */
      /* opLDAdir_A_AA (a3) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x63]; /* set I register */
      
      /* opSUBdir_A_AA (75) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x65]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x0a] = register_A; /* store acc to RAM */
      /* 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;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x62]; /* set I register */
      
      /* opLDPimm_A_A (86) */
      /* opCMPdir_A_AA (b4) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1 + register_A);
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* 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) */
      /* opSTAdir_B_BB (d6) */
      ram[register_I = (register_P << 4) + 0x6] = register_B; /* set I register and store B to ram */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x64]; /* set I register */
      
      /* opSUBdir_A_AA (76) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x66]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (db) */
      ram[register_I = 0x0b] = register_A; /* store acc to RAM */
      /* 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];
      
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */
      
      /* opLDJimm_A_A (41) */
      register_J = 0x0691;
      /* 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 */
      

case 0x0693:

      /* 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 (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x06cd;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x06cd; break;};
      /* 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 (46) */
      register_J = 0x06a6;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x06a6; break;};
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x4d]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x06a6; break;};
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x46] = 0x000; /* store acc to RAM */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x44]; /* 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[0x44] = register_A; /* store acc */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x45]; /* set I register */
      
      /* 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[0x45] = register_A; /* store acc */

case 0x06a6:

      /* Invariants: register_P = 0x4 register_A = 0x00 */;
      /* 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 (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 (4a) */
      register_J = 0x06ca;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x06ca; break;};
      /* opLDAimm_A_AA (06) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0600;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xd4;
      register_A = flag_C = acc_a0 = 0x06d4;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x6d4; /* 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 = 0x41;
      register_A = flag_C = acc_a0 = 0x0041;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0x19] = 0x041; /* store acc to RAM */
      /* opLDJimm_A_A (40) */
      register_J = 0x0c00;
      /* opJMP_A_A (58) */
      {register_PC = 0x0c00; break;};

case 0x06b9:

      /* Invariants: register_P = 0x6 register_I = 0x62 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 = 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();
      /* opLDJimm_A_A (43) */
      register_J = 0x0693;
      /* opJMP_A_A (58) */
      {register_PC = 0x0693; break;};

case 0x06ca:

      /* Invariants: register_P = 0x4 register_I = 0x47 register_A = 0x02 */;
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x47]; /* 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[0x47] = register_A; /* store acc */

case 0x06cd:

      /* Invariants: register_P = 0x4 register_I = 0x47 */;
      /* 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 = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x06d0:

      /* Invariants: register_P = 0x4 register_I = 0x47 */;
      /* opADDimm_A_AA (21) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */
      
      /* opLDJimm_A_A (40) */
      register_J = 0x06d0;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x06d0; break;};

case 0x06d4:

      /* 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 (b2) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (4d) */
      register_J = 0x07bd;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x07bd; break;};
      /* opINP_A_AA (1d) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0xd);
#else
      register_A = cmp_new = get_io_bit(0xd);
#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 (44) */
      register_J = 0x0724;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0724; break;};
      /* opOUTbi_A_A (96) */
      vgColour = register_A & 0x01 ? 0x0f: 0x07;
      /* 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 = 0xc0;
      register_A = flag_C = acc_a0 = 0x0fc0;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0xfc0; /* store acc to RAM */
      /* 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;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x62]; /* set I register */
      
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opCMPdir_A_AA (b5) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1 + register_A);
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* 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) */
      /* opADDdir_B_AA (6a) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x0a]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opSTAdir_B_BB (d5) */
      ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */
      
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x06] = register_A; /* store acc to RAM */
      /* 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];
      
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x05]; /* set I register */
      
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d7) */
      ram[register_I = 0x07] = 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 (46) */
      register_J = 0x0706;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0706; 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 0x0706:

      /* Invariants: register_P = 0x0 register_I = 0x07 */;
      /* opSTAdir_A_A (de) */
      ram[register_I = 0x0e] = 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 = 0x06]; /* set I register */
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (74) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0x08] = register_A; /* store acc to RAM */
      /* 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];
      
      /* 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 (46) */
      register_J = 0x0716;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0716; 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 0x0716:

      /* Invariants: register_P = 0x0 register_I = 0x08 */;
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x0e]))) & 0xFFF; /* do acc operation */
      /* opSUBimm_A_AA (33) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (44) */
      register_J = 0x07a4;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x07a4; break;};
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x07]; /* set I register */
      
      /* opLLT_A_AA (e4) */
      {CINEBYTE temp_byte = 0;
        for (;;) {
          if (   (((register_A >> 8) & 0x0A) && (((register_A >> 8) & 0x0A) ^ 0x0A))
            ||   (((register_B >> 8) & 0x0A) && (((register_B >> 8) & 0x0A) ^ 0x0A))  ) break;
          register_A <<= 1; register_B <<= 1;
          if (!(++temp_byte)) break /* This may not be correct */;
        }
        vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF;
      }
      /* opADDdir_A_AA (65) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x05]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (66) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x06]))) & 0xFFF; /* do acc operation */
      /* opVDR_A_A (e0) */
      {
      /* set ending points and draw the vector, or buffer for a later draw. */
      int ToX = register_A & 0xFFF;
      int ToY = register_B & 0xFFF;
      
      /* Sign extend from 20 bit CCPU to 32bit target machine */
      FromX = SEX(FromX);
      ToX = SEX(ToX);
      FromY = SEX(FromY);
      ToY = SEX(ToY);
      
      /* figure out the vector */
      ToX -= FromX;
      ToX = ((signed short int)(((signed short int)ToX) >> (signed short int)vgShiftLength)) /* SAR */;
      ToX += FromX;
      
      ToY -= FromY;
      ToY = ((signed short int)(((signed short int)ToY) >> (signed short int)vgShiftLength)) /* SAR */;
      ToY += FromY;
      
      /* render the line */
#ifndef DUALCPU
      CinemaVectorData (FromX, FromY, ToX, ToY, vgColour);
#endif
      
      }
      /* opLDJimm_A_A (44) */
      register_J = 0x07a4;
      /* opJMP_A_A (58) */
      {register_PC = 0x07a4; break;};

case 0x0724:

      /* 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;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d7) */
      ram[register_I = 0x07] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (74) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d8) */
      ram[register_I = 0x08] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x07]; /* set I register */
      
      /* 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 (de) */
      ram[register_I = 0x0e] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xa4;
      register_A = flag_C = acc_a0 = 0x07a4;

case 0x073b:

      /* opSTAdir_A_A (d1) */
      ram[register_I = (register_P << 4) + 0x1] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0a]; /* set I register */
      
      /* opSTAdir_A_A (d2) */
      ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0b]; /* set I register */
      
      /* opSTAdir_A_A (d3) */
      ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */
      /* opADDdir_A_AA (68) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */
      /* opSTAdir_A_A (d9) */
      ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (aa) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0a]; /* set I register */
      
      /* opADDdir_A_AA (67) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */
      /* opADDdir_A_AA (6e) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */
      /* opSTAdir_A_A (d4) */
      ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0x81;
      register_A = flag_C = acc_a0 = 0x0781;
      /* opSTAdir_A_A (dc) */
      ram[register_I = (register_P << 4) + 0xc] = 0x781; /* store acc to RAM */
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x02]; /* set I register */
      
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (a3) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* new acc value */
      /* opLDJimm_A_A (4f) */
      register_J = 0x074f;
      /* 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 = 0x0b) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x0754:

      /* 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 (44) */
      register_J = 0x0754;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x0754; break;};
      /* opLDAdir_A_AA (a9) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x09]; /* set I register */
      
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (dd) */
      ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */
      /* 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];
      
      /* 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 (44) */
      register_J = 0x0764;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0764; 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 0x0764:

      /* 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 */
      
      /* opSUBdir_A_AA (72) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x2]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (df) */
      ram[register_I = (register_P << 4) + 0xf] = 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 (4f) */
      register_J = 0x076f;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x076f; 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 0x076f:

      /* opADDdir_A_AA (6d) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xd]))) & 0xFFF; /* do acc operation */
      /* opSUBimm_A_AA (33) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opLDJimm_A_A (4a) */
      register_J = 0x077a;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x077a; break;};
      /* opLDAdir_A_AA (af) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0f]; /* set I register */
      
      /* 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 (62) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x2]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opADDdir_B_AA (63) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x03]))) & 0xFFF; /* do acc operation */
      /* opVDR_A_A (e0) */
      {
      /* set ending points and draw the vector, or buffer for a later draw. */
      int ToX = register_A & 0xFFF;
      int ToY = register_B & 0xFFF;
      
      /* Sign extend from 20 bit CCPU to 32bit target machine */
      FromX = SEX(FromX);
      ToX = SEX(ToX);
      FromY = SEX(FromY);
      ToY = SEX(ToY);
      
      /* figure out the vector */
      ToX -= FromX;
      ToX = ((signed short int)(((signed short int)ToX) >> (signed short int)vgShiftLength)) /* SAR */;
      ToX += FromX;
      
      ToY -= FromY;
      ToY = ((signed short int)(((signed short int)ToY) >> (signed short int)vgShiftLength)) /* SAR */;
      ToY += FromY;
      
      /* render the line */
#ifndef DUALCPU
      CinemaVectorData (FromX, FromY, ToX, ToY, vgColour);
#endif
      
      }

case 0x077a:

      /* 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 */
      
      /* opSTAdir_A_A (d2) */
      ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */
      /* opLDAdir_A_AA (a9) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = (register_P << 4) + 0x09]; /* set I register */
      
      /* opSTAdir_A_A (d3) */
      ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */
      /* opCMPdir_A_AA (bc) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A);
      /* opLDJirg_A_A (e1) */
      /* load J reg from value at last dir addr */
      register_J = ram[register_I];
      /* opJMP_A_A (58) */
      {register_PC = register_J; break;};

case 0x07a4:

      /* Invariants: register_P = 0x0 register_I = 0x06 */;
      /* opLDAimm_A_AA (04) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0400;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x65] = register_A; /* store acc to RAM */
      /* 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;
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x62]; /* set I register */
      
      /* opCMPdir_A_AA (b5) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x65]) ^ 0xFFF) + 1 + register_A);
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* 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) */
      /* opSTAdir_B_BB (d5) */
      ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */
      /* opLDAirg_A_AA (ea) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = ram[register_I];
      /* opADDdir_A_AA (63) */
      register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x63]))) & 0xFFF; /* do acc operation */
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (da) */
      ram[register_I = 0x0a] = register_A; /* store acc to RAM */
      /* opNOP_A_B (57) */
      /* opLDAdir_B_AA (ab) */
      flag_C = acc_a0 = register_A;
      cmp_old = register_B; /* store old acc */
      register_B = cmp_new = ram[register_I = (register_P << 4) + 0x0b]; /* new acc value */
      /* opLDJimm_A_A (4b) */
      register_J = 0x07bb;
      /* 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 */
      

case 0x07bd:

      /* 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 (b0) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (46) */
      register_J = 0x07e6;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x07e6; break;};
      /* 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 (40) */
      register_J = 0x07d0;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x07d0; break;};
      /* opCMPdir_A_AA (bd) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x5d]) ^ 0xFFF) + 1 + register_A);
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x07d0; break;};
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x56] = 0x000; /* store acc to RAM */
      /* opLDAdir_A_AA (a4) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x54]; /* set I register */
      
      /* opSUBimm_A_AA (32) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + (((cmp_new = 0x2) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */
      /* opSTAirg_A_A (e6) */
      ram[0x54] = register_A; /* store acc */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x55]; /* 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[0x55] = register_A; /* store acc */

case 0x07d0:

      /* Invariants: register_P = 0x5 register_A = 0x00 */;
      /* 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 (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 (43) */
      register_J = 0x07e3;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x07e3; break;};
      /* opLDAimm_A_AA (07) */
      cmp_old = flag_C = acc_a0 = register_A;
      register_A = cmp_new = 0x0700;
      /* opADDimmX_A_AA (20) */
      cmp_old = register_A; cmp_new = 0xed;
      register_A = flag_C = acc_a0 = 0x07ed;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d0) */
      ram[register_I = 0x00] = 0x7ed; /* 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 = 0x51;
      register_A = flag_C = acc_a0 = 0x0051;
      /* opLDPimm_A_A (81) */
      register_P = 0x1; /* set page register */
      /* opSTAdir_A_A (d9) */
      ram[register_I = 0x19] = 0x051; /* store acc to RAM */
      /* opLDJimm_A_A (40) */
      register_J = 0x0c00;
      /* opJMP_A_A (58) */
      {register_PC = 0x0c00; break;};

case 0x07e3:

      /* Invariants: register_P = 0x5 register_I = 0x57 register_A = 0x02 */;
      /* opLDAdir_A_AA (a7) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x57]; /* 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[0x57] = register_A; /* store acc */

case 0x07e6:

      /* Invariants: register_P = 0x5 */;
      /* 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 = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */

case 0x07e9:

      /* Invariants: register_P = 0x5 */;
      /* 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 (49) */
      register_J = 0x07e9;
      /* opJNC_A_AA (5d) */
      if (!(flag_C & CARRYBIT)) {register_PC = 0x07e9; break;};

case 0x07ed:

      /* 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 (b2) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A);
      /* opLDJimm_A_A (45) */
      register_J = 0x0855;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x0855; break;};
      /* opINP_A_AA (1d) */
      cmp_old = flag_C = acc_a0 = register_A;
#ifdef RAWIO
      register_A = cmp_new = get_io_bit(0xd);
#else
      register_A = cmp_new = get_io_bit(0xd);
#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 (4e) */
      register_J = 0x083e;
      /* opJEQ_A_AA (5c) */
      if (cmp_new == cmp_old) {register_PC = 0x083e; 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 = 0x40;
      register_A = flag_C = acc_a0 = 0x0040;
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d5) */
      ram[register_I = 0x05] = 0x040; /* store acc to RAM */
      /* 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;
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opLDAdir_A_AA (a2) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x62]; /* set I register */
      
      /* opLDPimm_A_A (80) */
      register_P = 0x0; /* set page register */
      /* opCMPdir_A_AA (b5) */
      cmp_old = acc_a0 = register_A; /* backup old acc */
      flag_C = (((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1 + register_A);
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* opMULirg_A_AA (e3) */
       MUL();
      /* 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) */
      /* opADDdir_B_AA (6a) */
      acc_a0 = register_A; /* store old acc value */
      register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x0a]))) & 0xFFF; /* do acc operation */
      /* opNOP_A_B (57) */
      /* opSTAdir_B_BB (d5) */
      ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */
      /* opLDAdir_A_AA (ab) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */
      
      /* opSTAdir_A_A (d6) */
      ram[register_I = 0x06] = register_A; /* store acc to RAM */
      /* 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];
      
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x05]; /* set I register */
      
      /* opVIN_A_A (f0) */
      
      FromX = register_A & 0xFFF; /* regA goes to x-coord */
      FromY = register_B & 0xFFF; /* regB goes to y-coord */
      
      /* opLDPimm_A_A (80) */
      /* opLDAdir_A_AA (a5) */
      cmp_old = flag_C = acc_a0 = register_A; /* store old acc */
      register_A = cmp_new = ram[register_I = 0x05]; /* set I register */
      
      /* opLDPimm_A_A (86) */
      register_P = 0x6; /* set page register */
      /* opSUBdir_A_AA (73) */
      cmp_old = acc_a0 = register_A;
      register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */
      /* 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 (80) */
      register_P = 0x0; /* set page register */
      /* opSTAdir_A_A (d7) */
      ram[register_I = 0x07] = 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 (40) */
      register_J = 0x0820;
      /* opJLT_A_A (5b) */
      if (cmp_new < cmp_old) {register_PC = 0x0820; 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 */
      register_PC = 0x0820;
      break;

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


