void cineExecute0000() { for (;;) { switch(register_PC) { case 0x0000: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0f01; register_J = 0x0008; register_P = 0x0; /* set page register */ case 0x0008: ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */ register_I = ram[(register_P << 4) + 0x00]&0xff; /* set/mask new register_I */ ram[register_I] = register_B; /* store acc */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0008; continue;}; ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; reset_coin_counter(1); register_J = 0x0904; {register_PC = 0x0904; continue;}; case 0x0026: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0x1c; register_A = flag_C = acc_a0 = 0x091c; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0xd3; register_A = flag_C = acc_a0 = 0x02d3; register_P = 0x8; /* set page register */ ram[register_I = 0x83] = 0x2d3; /* store acc to RAM */ register_P = 0x2; /* set page register */ ram[register_I = 0x22] = 0x2d3; /* store acc to RAM */ ram[register_I = 0x23] = 0x2d3; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x2c] = 0x000; /* store acc to RAM */ ram[register_I = 0x2d] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ ram[register_I = 0x62] = 0x000; /* store acc to RAM */ ram[register_I = 0x60] = 0x000; /* store acc to RAM */ ram[register_I = 0x6a] = 0x000; /* store acc to RAM */ ram[register_I = 0x6c] = 0x000; /* store acc to RAM */ ram[register_I = 0x69] = 0x000; /* store acc to RAM */ cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; ram[register_I = 0x61] = 0x001; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_startbutton(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0058; if (cmp_new == cmp_old) {register_PC = 0x0058; continue;}; register_J = 0x0000; register_P = 0x2; /* set page register */ register_PC = 0x1000; /* rom offset */ {register_PC = 0x1000; continue;}; case 0x004a: register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x001f))) & 0xFFF; /* add values */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); register_J = 0x0056; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0056; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_J = 0x0058; {register_PC = 0x0058; continue;}; case 0x0056: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I] = register_A; /* store acc */ case 0x0058: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0300; 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); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_J = 0x0060; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x12) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x0065: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0065; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0065; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xb; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000b; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } /* wait for a tick on the watchdog */ CinemaClearScreen(); bNewFrame = 1; bailOut = TRUE; register_PC = 0x006f; break; /* NOT REALLY A JUMP - ACTUALLY FOR GETTING BACK TO POLLING LOOP - NEEDS WORK */ case 0x006f: /* wait for a tick on the watchdog */ CinemaClearScreen(); bNewFrame = 1; bailOut = TRUE; register_PC = 0x0070; break; /* NOT REALLY A JUMP - ACTUALLY FOR GETTING BACK TO POLLING LOOP - NEEDS WORK */ case 0x0070: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x00be; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x00be; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1a; register_A = flag_C = acc_a0 = 0x001a; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x18; register_A = flag_C = acc_a0 = 0x0018; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x16; register_A = flag_C = acc_a0 = 0x0016; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x14; register_A = flag_C = acc_a0 = 0x0014; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x00be: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A); register_J = 0x00df; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x00df; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x15; register_A = flag_C = acc_a0 = 0x0115; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A); register_J = 0x00e2; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x00e2; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x00e2; continue;}; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x69]; /* set I register */ register_J = 0x00df; if (cmp_new == cmp_old) {register_PC = 0x00df; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x69] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; register_P = 0x7; /* set page register */ ram[register_I = 0x72] = 0x00f; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x73]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x73] = register_A; /* store acc */ case 0x00df: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x3; /* set page register */ ram[register_I = 0x30] = 0x000; /* store acc to RAM */ case 0x00e2: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A); register_J = 0x0103; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0103; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x15; register_A = flag_C = acc_a0 = 0x0115; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x43]) ^ 0xFFF) + 1 + register_A); register_J = 0x0106; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0106; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x0106; continue;}; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x69]; /* set I register */ register_J = 0x0103; if (cmp_new == cmp_old) {register_PC = 0x0103; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x69] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; register_P = 0x7; /* set page register */ ram[register_I = 0x72] = 0x00f; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x73]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x73] = register_A; /* store acc */ case 0x0103: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x4; /* set page register */ ram[register_I = 0x40] = 0x000; /* store acc to RAM */ case 0x0106: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A); register_J = 0x0127; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0127; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x15; register_A = flag_C = acc_a0 = 0x0115; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x53]) ^ 0xFFF) + 1 + register_A); register_J = 0x012a; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x012a; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x012a; continue;}; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x69]; /* set I register */ register_J = 0x0127; if (cmp_new == cmp_old) {register_PC = 0x0127; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x69] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; register_P = 0x7; /* set page register */ ram[register_I = 0x72] = 0x00f; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x73]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x73] = register_A; /* store acc */ case 0x0127: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x5; /* set page register */ ram[register_I = 0x50] = 0x000; /* store acc to RAM */ case 0x012a: register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x73]; /* set I register */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x013e; if (cmp_new < cmp_old) {register_PC = 0x013e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x14; register_A = flag_C = acc_a0 = 0x0014; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x013e: register_J = 0x0140; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xa0; register_A = flag_C = acc_a0 = 0x00a0; register_P = 0xc; /* set page register */ ram[register_I = 0xc1] = 0x0a0; /* store acc to RAM */ case 0x0148: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x01]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */ case 0x014b: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_new = 0x8; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0408; register_I = ram[(register_P << 4) + 0x01]&0xff; /* set/mask new register_I */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = (register_P << 4) + 0x5] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0300; 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); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_J = 0x015b; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_J = 0x0164; if (cmp_new < cmp_old) {register_PC = 0x0164; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0164: ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x7; /* set page register */ ram[register_I = 0x70] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x4; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0004; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A); register_J = 0x018b; if (cmp_new < cmp_old) {register_PC = 0x018b; continue;}; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ 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); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ register_P = 0xc; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc5]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x7; /* set page register */ ram[register_I = 0x74] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x0181; case 0x0181: cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0181; continue;}; register_P = 0xc; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc5]))) & 0xFFF; /* do acc operation */ ram[0xc5] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; vgColour = 0x0f; case 0x018b: register_P = 0xc; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc5]; /* set I register */ register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x8; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0308; register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0xc6] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x01a1; if (cmp_new < cmp_old) {register_PC = 0x01a1; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x01a1: ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x7; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x70]))) & 0xFFF; /* do acc operation */ ram[0x70] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x4; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0004; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A); register_J = 0x01c6; if (cmp_new < cmp_old) {register_PC = 0x01c6; continue;}; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ 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); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ register_P = 0xc; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc6]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x7; /* set page register */ ram[register_I = 0x74] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x01bf; case 0x01bf: cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x01bf; continue;}; register_P = 0xc; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0xc6]))) & 0xFFF; /* do acc operation */ ram[0xc6] = register_A; /* store acc */ case 0x01c6: register_P = 0xc; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc6]; /* set I register */ register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x020f; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x020f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x020f; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc8]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x4) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x01df; if (cmp_new < cmp_old) {register_PC = 0x01df; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc9]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x5) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x020f; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x020f; continue;}; case 0x01df: register_I = ram[(register_P << 4) + 0x02]&0xff; /* set/mask new register_I */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; 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); register_I = ram[(register_P << 4) + 0x01]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x4e) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x01ea: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x01ea; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x01ea; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x66; register_A = flag_C = acc_a0 = 0x0266; register_P = 0x7; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x70]))) & 0xFFF; /* do acc operation */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_P = 0xc; /* set page register */ register_I = ram[0xc2]&0xff; /* set new register_I (8 bits) */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; 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); register_I = ram[0xc1]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0xc1]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[0xc1] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xc0; register_A = flag_C = acc_a0 = 0x00c0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0148; if (cmp_new < cmp_old) {register_PC = 0x0148; continue;}; register_J = 0x08b6; {register_PC = 0x08b6; continue;}; case 0x020f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x3f; register_A = flag_C = acc_a0 = 0x003f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x74; register_A = flag_C = acc_a0 = 0x0274; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x5] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x6] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x00]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0243; if ((acc_a0 & 0x01) != 0) {register_PC = 0x0243; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ case 0x0243: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ register_I = ram[(register_P << 4) + 0x01]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x00]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x025e; if ((acc_a0 & 0x01) != 0) {register_PC = 0x025e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ case 0x025e: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x6]))) & 0xFFF; /* do acc operation */ register_I = ram[(register_P << 4) + 0x02]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ register_J = 0x014b; {register_PC = 0x014b; continue;}; case 0x02b6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x1f) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x02dc; if (cmp_new < cmp_old) {register_PC = 0x02dc; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); register_J = 0x08ed; if (cmp_new < cmp_old) {register_PC = 0x08ed; continue;}; cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x08ed; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_bit(0xf); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_P = 0x7; /* set page register */ ram[register_I = 0x75] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x001e))) & 0xFFF; /* add values */ set_sound_data(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x08fb; {register_PC = 0x08fb; continue;}; case 0x02dc: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I] = register_A; /* store acc */ case 0x02de: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A); register_J = 0x02ed; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x02ed; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = register_A; cmp_new = 0x08; register_A = flag_C = acc_a0 = 0x0308; register_P = 0x1; /* set page register */ ram[register_I = 0x1f] = 0x308; /* store acc to RAM */ register_J = 0x0dc0; register_P = 0x2; /* set page register */ register_PC = 0x1dc0; /* rom offset */ {register_PC = 0x1dc0; continue;}; case 0x02ed: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ ram[register_I = 0x62] = 0x000; /* store acc to RAM */ ram[register_I = 0x60] = 0x000; /* store acc to RAM */ cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0005; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x73]) ^ 0xFFF) + 1 + register_A); register_J = 0x004a; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x004a; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x15; register_A = flag_C = acc_a0 = 0x0015; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0005; {register_PC = 0x004a; continue;}; case 0x0308: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A); register_J = 0x0319; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0319; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x3d]; /* set I register */ if (cmp_new == cmp_old) {register_PC = 0x0319; continue;}; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x33]))) & 0xFFF; /* do acc operation */ ram[0x33] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x0319; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x30] = 0x000; /* store acc to RAM */ ram[register_I = 0x3d] = 0x000; /* store acc to RAM */ case 0x0319: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A); register_J = 0x0329; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0329; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x4d]; /* set I register */ if (cmp_new == cmp_old) {register_PC = 0x0329; continue;}; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x43]))) & 0xFFF; /* do acc operation */ ram[0x43] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x43]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x0329; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x40] = 0x000; /* store acc to RAM */ ram[register_I = 0x4d] = 0x000; /* store acc to RAM */ case 0x0329: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A); register_J = 0x0339; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0339; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x5d]; /* set I register */ if (cmp_new == cmp_old) {register_PC = 0x0339; continue;}; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x53]))) & 0xFFF; /* do acc operation */ ram[0x53] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x53]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x0339; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x50] = 0x000; /* store acc to RAM */ ram[register_I = 0x5d] = 0x000; /* store acc to RAM */ case 0x0339: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x086f; if (cmp_new == cmp_old) {register_PC = 0x086f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_shields(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x086f; if (cmp_new == cmp_old) {register_PC = 0x086f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x8; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x81]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x086f; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x80]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x80] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x8) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0377; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0377; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[0x80] = 0x000; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x81]; /* set I register */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x0373; if (cmp_new == cmp_old) {register_PC = 0x0373; continue;}; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x036d; if (cmp_new == cmp_old) {register_PC = 0x036d; continue;}; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x0368; if (cmp_new == cmp_old) {register_PC = 0x0368; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0376; {register_PC = 0x0376; continue;}; case 0x0368: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x7) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0376; {register_PC = 0x0376; continue;}; case 0x036d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x67) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x0376; {register_PC = 0x0376; continue;}; case 0x0373: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0x99; register_A = flag_C = acc_a0 = 0x0999; case 0x0376: ram[register_I] = register_A; /* store acc */ case 0x0377: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0300; 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); register_P = 0x1; /* set page register */ ram[register_I = (register_P << 4) + 0x1] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; ram[register_I = 0x10] = 0x200; /* store acc to RAM */ register_J = 0x0381; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x43) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x0386: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0386; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0386; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = register_A; cmp_new = 0xcb; register_A = flag_C = acc_a0 = 0x03cb; ram[register_I = (register_P << 4) + 0x6] = 0x3cb; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; ram[register_I = (register_P << 4) + 0x8] = 0x0ff; /* store acc to RAM */ case 0x0392: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x00]; /* set I register */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x01]; /* new acc value */ FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A); register_J = 0x03e6; if (cmp_new == cmp_old) {register_PC = 0x03e6; continue;}; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x0]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ 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 */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x01]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x1]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_P = 0x8; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x83]) ^ 0xFFF) + 1 + register_A); register_J = 0x03bd; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; 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); 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); cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x83]))) & 0xFFF; set_watchdog(); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x83]))) & 0xFFF; set_watchdog(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; ram[0x83] = register_A; /* store acc */ vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; register_P = 0x1; /* set page register */ register_J = 0x0392; {register_PC = 0x0392; continue;}; case 0x03e6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x19; register_A = flag_C = acc_a0 = 0x0019; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x16; register_A = flag_C = acc_a0 = 0x0016; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_PC = 0x0400; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute0400() { for (;;) { switch (register_PC) { case 0x0400: cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x045e; if (cmp_new == cmp_old) {register_PC = 0x045e; continue;}; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A); register_J = 0x0424; if (cmp_new == cmp_old) {register_PC = 0x0424; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x3d]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0424; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x33]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0424; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x4d; register_A = flag_C = acc_a0 = 0x004d; ram[register_I = 0x3d] = 0x04d; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x0424: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A); register_J = 0x0441; if (cmp_new == cmp_old) {register_PC = 0x0441; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x4d]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0441; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x43]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0441; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x4d; register_A = flag_C = acc_a0 = 0x004d; ram[register_I = 0x4d] = 0x04d; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x0441: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A); register_J = 0x045e; if (cmp_new == cmp_old) {register_PC = 0x045e; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x5d]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x045e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x53]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x045e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x4d; register_A = flag_C = acc_a0 = 0x004d; ram[register_I = 0x5d] = 0x04d; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x045e: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x0586; if (cmp_new == cmp_old) {register_PC = 0x0586; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_bit(0xe); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x04d7; if (cmp_new == cmp_old) {register_PC = 0x04d7; continue;}; register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; put_io_bit(/*bitno*/0x7, /*set or clr*/0x0); register_J = 0x046e; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x2a]; /* set I register */ ram[register_I = 0x28] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = register_A; cmp_new = 0x78; register_A = flag_C = acc_a0 = 0x0478; ram[register_I = 0x2d] = 0x478; /* store acc to RAM */ register_J = 0x0495; {register_PC = 0x0495; continue;}; case 0x0495: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x800; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; ram[register_I = 0x2e] = register_A; /* store acc to RAM */ register_J = 0x049c; case 0x049d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xf]))) & 0xFFF; /* do acc operation */ FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0100; {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x11) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x04a7: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x04a7; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x04a7; continue;}; 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 */ register_J = 0x04b3; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ register_J = 0x04b4; {register_PC = 0x04b4; continue;}; case 0x04b4: ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x04c1; if (cmp_new == cmp_old) {register_PC = 0x04c1; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; ram[register_I] = register_A; /* store acc */ register_J = 0x049d; {register_PC = 0x049d; continue;}; case 0x04c1: 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 */ 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 */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x04cc; if (cmp_new < cmp_old) {register_PC = 0x04cc; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x04cc: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x7; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x04d4; if (cmp_new < cmp_old) {register_PC = 0x04d4; continue;}; 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 */ ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ case 0x04d4: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = register_J; continue;}; case 0x04d7: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_moveright(); register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_moveleft(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2a]))) & 0xFFF; /* do acc operation */ ram[0x2a] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A); register_J = 0x04f6; if (cmp_new < cmp_old) {register_PC = 0x04f6; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0e00; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x04f6; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2a]) ^ 0xFFF) + 1 + register_A); register_J = 0x04f4; if (cmp_new < cmp_old) {register_PC = 0x04f4; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0e00; ram[0x2a] = 0xe00; /* store acc */ register_J = 0x04f6; {register_PC = 0x04f6; continue;}; case 0x04f4: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; ram[register_I] = register_A; /* store acc */ case 0x04f6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_moveup(); register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_movedown(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2b]))) & 0xFFF; /* do acc operation */ ram[0x2b] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A); register_J = 0x051b; if (cmp_new < cmp_old) {register_PC = 0x051b; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0d00; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x051b; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2b]) ^ 0xFFF) + 1 + register_A); register_J = 0x0518; if (cmp_new < cmp_old) {register_PC = 0x0518; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0d00; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[0x2b] = register_A; /* store acc */ register_J = 0x051b; {register_PC = 0x051b; continue;}; case 0x0518: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; ram[register_I] = register_A; /* store acc */ case 0x051b: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0xa4; register_A = flag_C = acc_a0 = 0x01a4; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); register_J = 0x0537; if (cmp_new < cmp_old) {register_PC = 0x0537; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); register_J = 0x0533; if (cmp_new < cmp_old) {register_PC = 0x0533; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0e00; cmp_old = register_A; cmp_new = 0x84; register_A = flag_C = acc_a0 = 0x0e84; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); register_J = 0x0536; if (cmp_new < cmp_old) {register_PC = 0x0536; continue;}; register_J = 0x0537; {register_PC = 0x0537; continue;}; case 0x0533: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0xa4; register_A = flag_C = acc_a0 = 0x01a4; case 0x0536: ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ case 0x0537: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x2c; register_A = flag_C = acc_a0 = 0x012c; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); register_J = 0x0551; if (cmp_new < cmp_old) {register_PC = 0x0551; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); register_J = 0x054d; if (cmp_new < cmp_old) {register_PC = 0x054d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0e00; cmp_old = register_A; cmp_new = 0xd4; register_A = flag_C = acc_a0 = 0x0ed4; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); register_J = 0x0550; if (cmp_new < cmp_old) {register_PC = 0x0550; continue;}; register_J = 0x0551; {register_PC = 0x0551; continue;}; case 0x054d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x2c; register_A = flag_C = acc_a0 = 0x012c; case 0x0550: ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ case 0x0551: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xd]))) & 0xFFF; /* do acc operation */ register_P = 0x6; /* set page register */ ram[register_I = 0x64] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_P = 0x2; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2c]))) & 0xFFF; /* do acc operation */ register_P = 0x6; /* set page register */ ram[register_I = 0x63] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x055f; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_fire(); ram[register_I = 0x6f] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x60]) ^ 0xFFF) + 1 + register_A); register_J = 0x0573; if (cmp_new == cmp_old) {register_PC = 0x0573; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x60] = register_A; /* store acc */ register_J = 0x0584; {register_PC = 0x0584; continue;}; case 0x0573: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); register_J = 0x0584; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0584; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_shields(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; if (cmp_new == cmp_old) {register_PC = 0x0584; continue;}; 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 */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1 + register_A); register_J = 0x0584; if (cmp_new == cmp_old) {register_PC = 0x0584; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x9; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0009; ram[register_I = (register_P << 4) + 0x2] = 0x009; /* store acc to RAM */ cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000c; ram[register_I = (register_P << 4) + 0x0] = 0x00c; /* store acc to RAM */ case 0x0584: 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 */ ram[register_I = (register_P << 4) + 0x1] = register_A; /* store acc to RAM */ case 0x0586: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A); register_J = 0x05af; if (cmp_new == cmp_old) {register_PC = 0x05af; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A); register_J = 0x0599; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0599; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x3d]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x0599; continue;}; ram[register_I = 0x36] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x34]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x34] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x35]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[0x35] = register_A; /* store acc */ case 0x0599: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x05ac; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x05ac; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0500; cmp_old = register_A; cmp_new = 0xb6; register_A = flag_C = acc_a0 = 0x05b6; register_P = 0x0; /* set page register */ ram[register_I = 0x00] = 0x5b6; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x31; register_A = flag_C = acc_a0 = 0x0031; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x031; /* store acc to RAM */ register_J = 0x0c00; {register_PC = 0x0c00; continue;}; case 0x05ac: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ case 0x05af: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x05b2: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x05b2; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x05b2; continue;}; case 0x05b6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x0648; if (cmp_new == cmp_old) {register_PC = 0x0648; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x63]; /* set I register */ register_P = 0x1; /* set page register */ ram[register_I = 0x10] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */ ram[register_I = 0x13] = register_A; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x64]; /* set I register */ register_P = 0x1; /* set page register */ ram[register_I = 0x11] = register_A; /* store acc to RAM */ ram[register_I = 0x14] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0x15; register_A = flag_C = acc_a0 = 0x0615; ram[register_I = 0x16] = 0x615; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; ram[register_I = 0x18] = 0x0ff; /* store acc to RAM */ case 0x05d0: register_J = 0x05d0; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ 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 */ FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A); register_J = 0x05ff; if (cmp_new == cmp_old) {register_PC = 0x05ff; continue;}; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x1]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ 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 */ 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 */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ 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 */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_J = 0x05d0; {register_PC = 0x05d0; continue;}; case 0x05ff: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A); register_J = 0x0648; if (cmp_new == cmp_old) {register_PC = 0x0648; continue;}; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x1]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */ register_J = 0x05d0; {register_PC = 0x05d0; continue;}; case 0x0648: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A); register_J = 0x06b9; if (cmp_new == cmp_old) {register_PC = 0x06b9; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_bit(0x8); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_J = 0x065d; if (cmp_new == cmp_old) {register_PC = 0x065d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x6; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0006; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; if (cmp_new < cmp_old) {register_PC = 0x065d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); register_J = 0x065f; {register_PC = 0x065f; continue;}; case 0x065d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; case 0x065f: register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x001a))) & 0xFFF; /* add values */ set_sound_data(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); 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 */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } 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); ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_P = 0x0; /* set page register */ ram[register_I = 0x0a] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x62]; /* set I register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } 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); ram[register_I = (register_P << 4) + 0x6] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x64]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x66]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_P = 0x0; /* set page register */ ram[register_I = 0x0b] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */ register_J = 0x0691; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ case 0x0693: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A); register_J = 0x06cd; if (cmp_new == cmp_old) {register_PC = 0x06cd; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A); register_J = 0x06a6; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x06a6; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x4d]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x06a6; continue;}; ram[register_I = 0x46] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x44]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[0x44] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x45]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x45] = register_A; /* store acc */ case 0x06a6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x06ca; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x06ca; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0xd4; register_A = flag_C = acc_a0 = 0x06d4; register_P = 0x0; /* set page register */ ram[register_I = 0x00] = 0x6d4; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x41; register_A = flag_C = acc_a0 = 0x0041; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x041; /* store acc to RAM */ register_J = 0x0c00; {register_PC = 0x0c00; continue;}; case 0x06b9: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1a; register_A = flag_C = acc_a0 = 0x001a; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x0693; {register_PC = 0x0693; continue;}; case 0x06ca: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ case 0x06cd: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x06d0: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x06d0; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x06d0; continue;}; case 0x06d4: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A); register_J = 0x07bd; if (cmp_new == cmp_old) {register_PC = 0x07bd; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_bit(0xd); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0724; if (cmp_new == cmp_old) {register_PC = 0x0724; continue;}; vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0xc0; register_A = flag_C = acc_a0 = 0x0fc0; register_P = 0x0; /* set page register */ ram[register_I = 0x05] = 0xfc0; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x62]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } 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); 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 */ ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */ ram[register_I = 0x06] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x05]; /* set I register */ FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0706; if (cmp_new < cmp_old) {register_PC = 0x0706; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0706: ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ 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 */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x08] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0716; if (cmp_new < cmp_old) {register_PC = 0x0716; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0716: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x07a4; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x07a4; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x06]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } register_J = 0x07a4; {register_PC = 0x07a4; continue;}; case 0x0724: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; vgColour = 0x0f; register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x08] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x07]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x0e] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; cmp_old = register_A; cmp_new = 0xa4; register_A = flag_C = acc_a0 = 0x07a4; case 0x073b: ram[register_I = (register_P << 4) + 0x1] = register_A; /* store acc to RAM */ 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 */ ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */ 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 */ ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; cmp_old = register_A; cmp_new = 0x81; register_A = flag_C = acc_a0 = 0x0781; ram[register_I = (register_P << 4) + 0xc] = 0x781; /* store acc to RAM */ 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 */ 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 */ register_J = 0x074f; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x0b) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x0754: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0754; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0754; continue;}; 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 */ 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 */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0764; if (cmp_new < cmp_old) {register_PC = 0x0764; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0764: ram[register_I] = register_A; /* store acc */ 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 */ 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 */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x076f; if (cmp_new < cmp_old) {register_PC = 0x076f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x076f: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xd]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x077a; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x077a; continue;}; 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 */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x2]))) & 0xFFF; /* do acc operation */ 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 */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } case 0x077a: 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 */ ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */ 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 */ ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = register_J; continue;}; case 0x07a4: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = 0x65] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x62]; /* set I register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x65]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } 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); ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x63]))) & 0xFFF; /* do acc operation */ register_P = 0x0; /* set page register */ ram[register_I = 0x0a] = register_A; /* store acc to RAM */ 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 */ register_J = 0x07bb; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ case 0x07bd: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A); register_J = 0x07e6; if (cmp_new == cmp_old) {register_PC = 0x07e6; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A); register_J = 0x07d0; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x07d0; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x5d]) ^ 0xFFF) + 1 + register_A); if (cmp_new == cmp_old) {register_PC = 0x07d0; continue;}; ram[register_I = 0x56] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x54]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x2) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x54] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x55]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x55] = register_A; /* store acc */ case 0x07d0: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x07e3; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x07e3; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; cmp_old = register_A; cmp_new = 0xed; register_A = flag_C = acc_a0 = 0x07ed; register_P = 0x0; /* set page register */ ram[register_I = 0x00] = 0x7ed; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x51; register_A = flag_C = acc_a0 = 0x0051; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x051; /* store acc to RAM */ register_J = 0x0c00; {register_PC = 0x0c00; continue;}; case 0x07e3: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ case 0x07e6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x64) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x07e9: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x07e9; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x07e9; continue;}; case 0x07ed: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A); register_J = 0x0855; if (cmp_new == cmp_old) {register_PC = 0x0855; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_bit(0xd); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x083e; if (cmp_new == cmp_old) {register_PC = 0x083e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x40; register_A = flag_C = acc_a0 = 0x0040; register_P = 0x0; /* set page register */ ram[register_I = 0x05] = 0x040; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; register_P = 0x6; /* set page register */ register_PC = 0x0800; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute0800() { for (;;) { switch (register_PC) { case 0x0800: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x62]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } 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); 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 */ ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */ ram[register_I = 0x06] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x05]; /* set I register */ FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x05]; /* set I register */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0820; if (cmp_new < cmp_old) {register_PC = 0x0820; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0820: ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ 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 */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x08] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0830; if (cmp_new < cmp_old) {register_PC = 0x0830; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0830: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0855; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0855; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x06]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } register_J = 0x0855; {register_PC = 0x0855; continue;}; case 0x083e: register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x63]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x64]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x0; /* set page register */ ram[register_I = 0x08] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x07]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x0e] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0x55; register_A = flag_C = acc_a0 = 0x0855; register_J = 0x073b; {register_PC = 0x073b; continue;}; case 0x0855: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x62]; /* set I register */ register_J = 0x085d; if (cmp_new == cmp_old) {register_PC = 0x085d; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x62] = register_A; /* store acc */ case 0x085d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x08ed; if (cmp_new == cmp_old) {register_PC = 0x08ed; continue;}; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A); register_J = 0x088e; if (cmp_new < cmp_old) {register_PC = 0x088e; continue;}; cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x37]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x088e; continue;}; register_J = 0x0898; {register_PC = 0x0898; continue;}; case 0x086f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x18; register_A = flag_C = acc_a0 = 0x0018; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x16; register_A = flag_C = acc_a0 = 0x0016; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x045e; {register_PC = 0x045e; continue;}; case 0x088e: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A); register_J = 0x08a9; if (cmp_new < cmp_old) {register_PC = 0x08a9; continue;}; cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x47]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x08a9; continue;}; case 0x0898: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1f; register_A = flag_C = acc_a0 = 0x001f; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x08fb; {register_PC = 0x08fb; continue;}; case 0x08a9: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A); register_J = 0x08ed; if (cmp_new < cmp_old) {register_PC = 0x08ed; continue;}; cmp_new = 0x5; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x57]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x08ed; continue;}; register_J = 0x0898; {register_PC = 0x0898; continue;}; case 0x08b6: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7a]) ^ 0xFFF) + 1 + register_A); register_J = 0x08ed; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x08ed; continue;}; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A); register_J = 0x0308; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0308; continue;}; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0308; continue;}; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0308; continue;}; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7d]) ^ 0xFFF) + 1 + register_A); register_J = 0x02b6; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x02b6; continue;}; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x02de; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x02de; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x14; register_A = flag_C = acc_a0 = 0x0014; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ ram[register_I = 0x73] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; ram[register_I = 0x7e] = 0xf00; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x10; register_A = flag_C = acc_a0 = 0x0010; ram[register_I = 0x7c] = 0x010; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; ram[register_I = 0x7d] = 0x001; /* store acc to RAM */ case 0x08ed: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x08fb: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0x00; register_A = flag_C = acc_a0 = 0x0600; register_P = 0x0; /* set page register */ ram[register_I = 0x00] = 0x600; /* store acc to RAM */ register_J = 0x0080; register_P = 0x2; /* set page register */ register_PC = 0x1080; /* rom offset */ {register_PC = 0x1080; continue;}; case 0x0904: flag_C = acc_a0 = register_A; cmp_old = register_B; /* save old accB */ register_B = cmp_new = get_shield_bit2(); cmp_new = 0x0CEC; acc_a0 = register_A; cmp_old = register_B; flag_C = (0x0CEC + register_B); register_B = (register_B << 1) & 0xFFF; register_P = 0x8; /* set page register */ ram[register_I = (register_P << 4) + 0x2] = register_B; /* set I register and store B to ram */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* save old accB */ register_B = cmp_new = get_shield_bit1(); acc_a0 = register_A; cmp_old = register_B; register_B = (flag_C = (register_B + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_new = 0x0CEC; acc_a0 = register_A; cmp_old = register_B; flag_C = (0x0CEC + register_B); register_B = (register_B << 1) & 0xFFF; ram[register_I] = register_B; /* store acc */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* save old accB */ register_B = cmp_new = get_shield_bit0(); acc_a0 = register_A; cmp_old = register_B; register_B = (flag_C = (register_B + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_B; /* store acc */ register_J = 0x0026; {register_PC = 0x0026; continue;}; register_PC = 0x0c00; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute0c00() { for (;;) { switch (register_PC) { case 0x0c00: register_P = 0x1; /* set page register */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x10] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x11] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x12] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x13] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x14] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x15] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x1a] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x10]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x16] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x16]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c48; if (cmp_new < cmp_old) {register_PC = 0x0c48; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x16]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c44; if (cmp_new < cmp_old) {register_PC = 0x0c44; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x16]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c47; if (cmp_new < cmp_old) {register_PC = 0x0c47; continue;}; register_J = 0x0c48; {register_PC = 0x0c48; continue;}; case 0x0c44: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; case 0x0c47: ram[register_I = (register_P << 4) + 0x6] = register_A; /* store acc to RAM */ case 0x0c48: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = (register_P << 4) + 0x7] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c6e; if (cmp_new < cmp_old) {register_PC = 0x0c6e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c6a; if (cmp_new < cmp_old) {register_PC = 0x0c6a; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x1e) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c6d; if (cmp_new < cmp_old) {register_PC = 0x0c6d; continue;}; register_J = 0x0c6e; {register_PC = 0x0c6e; continue;}; case 0x0c6a: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; case 0x0c6d: ram[register_I = (register_P << 4) + 0x7] = register_A; /* store acc to RAM */ case 0x0c6e: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x2]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c81; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0c81; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x40; register_A = flag_C = acc_a0 = 0x0040; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x6]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x40; register_A = flag_C = acc_a0 = 0x0040; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x0c81: 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x6) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[register_I] = register_A; /* store acc */ 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 */ 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 */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c9e; if (cmp_new == cmp_old) {register_PC = 0x0c9e; continue;}; cmp_old = register_A; cmp_new = 0x40; register_A = flag_C = acc_a0 = 0x0040; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0c9c; if (cmp_new < cmp_old) {register_PC = 0x0c9c; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0c9e; {register_PC = 0x0c9e; continue;}; case 0x0c9c: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; case 0x0c9e: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0c00; cmp_old = register_A; cmp_new = 0xa9; register_A = flag_C = acc_a0 = 0x0ca9; ram[register_I = (register_P << 4) + 0xf] = 0xca9; /* store acc to RAM */ register_J = 0x0eeb; {register_PC = 0x0eeb; continue;}; case 0x0ca9: 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 */ ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ 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 */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ 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 */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0cca; if (cmp_new == cmp_old) {register_PC = 0x0cca; continue;}; cmp_old = register_A; cmp_new = 0x40; register_A = flag_C = acc_a0 = 0x0040; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0cc8; if (cmp_new < cmp_old) {register_PC = 0x0cc8; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0cca; {register_PC = 0x0cca; continue;}; case 0x0cc8: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; case 0x0cca: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0c00; cmp_old = register_A; cmp_new = 0xd5; register_A = flag_C = acc_a0 = 0x0cd5; ram[register_I = (register_P << 4) + 0xf] = 0xcd5; /* store acc to RAM */ register_J = 0x0eeb; {register_PC = 0x0eeb; continue;}; case 0x0cd5: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0cde; if (cmp_new < cmp_old) {register_PC = 0x0cde; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0cde: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xb]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x3] = register_B; /* set I register and store B to ram */ register_J = 0x0cf2; if (cmp_new < cmp_old) {register_PC = 0x0cf2; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x0cf2: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ register_J = 0x0cfb; if (cmp_new < cmp_old) {register_PC = 0x0cfb; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0cfb: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x3] = register_B; /* set I register and store B to ram */ register_J = 0x0d0f; if (cmp_new < cmp_old) {register_PC = 0x0d0f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x0d0f: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0d18; if (cmp_new < cmp_old) {register_PC = 0x0d18; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0d18: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xa]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x4] = register_B; /* set I register and store B to ram */ register_J = 0x0d2c; if (cmp_new < cmp_old) {register_PC = 0x0d2c; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x0d2c: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0d35; if (cmp_new < cmp_old) {register_PC = 0x0d35; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0d35: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xb]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0xf] = register_B; /* set I register and store B to ram */ register_J = 0x0d49; if (cmp_new < cmp_old) {register_PC = 0x0d49; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x0d49: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0d52; if (cmp_new < cmp_old) {register_PC = 0x0d52; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0d52: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ register_J = 0x0d66; if (cmp_new < cmp_old) {register_PC = 0x0d66; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x0d66: 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x4) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ 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 */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ ram[register_I = (register_P << 4) + 0x1] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x9))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x12]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x0; /* set page register */ ram[register_I = 0x09] = register_A; /* store acc to RAM */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x10]; /* set I register */ register_P = 0x0; /* set page register */ ram[register_I = 0x05] = register_A; /* store acc to RAM */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x11]; /* set I register */ register_P = 0x0; /* set page register */ ram[register_I = 0x06] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; ram[register_I = 0x0d] = 0x200; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x04] = 0x000; /* store acc to RAM */ case 0x0d93: 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 */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); register_J = 0x0e03; if (cmp_new < cmp_old) {register_PC = 0x0e03; continue;}; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0da4; if (cmp_new < cmp_old) {register_PC = 0x0da4; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0da4: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dae; if (cmp_new < cmp_old) {register_PC = 0x0dae; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dae: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0db8; if (cmp_new < cmp_old) {register_PC = 0x0db8; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0db8: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dc2; if (cmp_new < cmp_old) {register_PC = 0x0dc2; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); case 0x0dc0: acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dc2: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dcc; if (cmp_new < cmp_old) {register_PC = 0x0dcc; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dcc: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dd6; if (cmp_new < cmp_old) {register_PC = 0x0dd6; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dd6: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0de0; if (cmp_new < cmp_old) {register_PC = 0x0de0; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0de0: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dea; if (cmp_new < cmp_old) {register_PC = 0x0dea; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dea: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0df4; if (cmp_new < cmp_old) {register_PC = 0x0df4; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0df4: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0dfe; if (cmp_new < cmp_old) {register_PC = 0x0dfe; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x0dfe: ram[register_I = (register_P << 4) + 0x9] = register_B; /* set I register and store B to ram */ register_J = 0x0e0b; {register_PC = 0x0e0b; continue;}; case 0x0e03: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_J = 0x0d93; {register_PC = 0x0d93; continue;}; case 0x0e0b: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_J = 0x0e14; if (cmp_new < cmp_old) {register_PC = 0x0e14; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0e14: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } ram[register_I = (register_P << 4) + 0x7] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); register_J = 0x0e2a; if (cmp_new < cmp_old) {register_PC = 0x0e2a; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x0e2a: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0e33; if (cmp_new < cmp_old) {register_PC = 0x0e33; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0e33: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } ram[register_I = (register_P << 4) + 0x8] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x6]) ^ 0xFFF) + 1 + register_A); register_J = 0x0e49; if (cmp_new < cmp_old) {register_PC = 0x0e49; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x0e49: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I = (register_P << 4) + 0x04]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0e5b; if (cmp_new == cmp_old) {register_PC = 0x0e5b; continue;}; register_J = 0x0e52; case 0x0e52: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0e52; continue;}; case 0x0e5b: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ register_P = 0x1; /* set page register */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x19] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_P = 0x0; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x07]))) & 0xFFF; /* do acc operation */ register_P = 0x1; /* set page register */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A); register_J = 0x0ee7; if (cmp_new == cmp_old) {register_PC = 0x0ee7; continue;}; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x62]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0ee7; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_P = 0x1; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x12]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x0ee7; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0016))) & 0xFFF; /* add values */ register_P = 0x0; /* set page register */ ram[register_I = 0x09] = register_A; /* store acc to RAM */ register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x2c]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x07]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[0x07] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_J = 0x0e90; if (cmp_new < cmp_old) {register_PC = 0x0e90; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0e90: cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_J = 0x0ee7; if (cmp_new < cmp_old) {register_PC = 0x0ee7; continue;}; register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x2d]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x08]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[0x08] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x08]; /* set I register */ register_J = 0x0ea0; if (cmp_new < cmp_old) {register_PC = 0x0ea0; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x0ea0: cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_J = 0x0ee7; if (cmp_new < cmp_old) {register_PC = 0x0ee7; continue;}; register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x4) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x19] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ ram[register_I] = register_A; /* store acc */ case 0x0eac: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ ram[register_I = 0x6f] = 0x000; /* store acc to RAM */ cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; register_P = 0x7; /* set page register */ ram[register_I = 0x71] = 0x00f; /* store acc to RAM */ register_P = 0x2; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x24]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); register_P = 0x6; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x6b]))) & 0xFFF; /* do acc operation */ ram[0x6b] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0xa) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0ec0; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0ec0; continue;}; ram[0x6b] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; ram[register_I = 0x6f] = 0x001; /* store acc to RAM */ case 0x0ec0: register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x24]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x6; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x6f]))) & 0xFFF; /* do acc operation */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x6a]))) & 0xFFF; /* do acc operation */ ram[0x6a] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0xa) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0edf; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0edf; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x6))) & 0xFFF; /* add values, save carry */ ram[0x6a] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xf0; register_A = flag_C = acc_a0 = 0x00f0; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0xa0) ^ 0xFFF) + 1))) & 0xFFF; /* add */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x0edf; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0060))) & 0xFFF; /* add values */ ram[0x6a] = register_A; /* store acc */ case 0x0edf: register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x29]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x29] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0eac; if (cmp_new == cmp_old) {register_PC = 0x0eac; continue;}; case 0x0ee7: register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x00]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[0x00]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = register_J; continue;}; case 0x0eeb: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0x6c; register_A = flag_C = acc_a0 = 0x0f6c; ram[register_I = (register_P << 4) + 0xa] = 0xf6c; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x20; register_A = flag_C = acc_a0 = 0x0020; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f15; if (cmp_new < cmp_old) {register_PC = 0x0f15; continue;}; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f21; if (cmp_new < cmp_old) {register_PC = 0x0f21; continue;}; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f35; if (cmp_new < cmp_old) {register_PC = 0x0f35; continue;}; 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0060))) & 0xFFF; /* add values */ 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 */ register_J = 0x0f43; {register_PC = 0x0f43; continue;}; case 0x0f15: 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 */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0x4c; register_A = flag_C = acc_a0 = 0x0f4c; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ register_J = 0x0f2f; {register_PC = 0x0f2f; continue;}; case 0x0f21: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x40) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ case 0x0f2f: cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ register_J = 0x0f49; {register_PC = 0x0f49; continue;}; case 0x0f35: 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0040))) & 0xFFF; /* add values */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x60) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x0f43: cmp_old = register_A; register_A = cmp_new = rom[register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ case 0x0f49: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = register_J; continue;}; register_PC = 0x1000; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute1000() { for (;;) { switch (register_PC) { case 0x1000: state = state_A; /* Even if it's not! :-) */ register_J = 0x0d70; {register_PC = 0x1d70; continue;}; case 0x1005: /* wait for a tick on the watchdog */ CinemaClearScreen(); bNewFrame = 1; bailOut = TRUE; register_PC = 0x1006; break; /* NOT REALLY A JUMP - ACTUALLY FOR GETTING BACK TO POLLING LOOP - NEEDS WORK */ case 0x1006: /* wait for a tick on the watchdog */ CinemaClearScreen(); bNewFrame = 1; bailOut = TRUE; register_PC = 0x1007; break; /* NOT REALLY A JUMP - ACTUALLY FOR GETTING BACK TO POLLING LOOP - NEEDS WORK */ case 0x1007: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; register_P = 0x1; /* set page register */ ram[register_I = 0x10] = 0x000; /* store acc to RAM */ ram[register_I = 0x11] = 0x000; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x11]))) & 0xFFF; set_watchdog(); flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0300; 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); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x38) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x1015: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0015; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1015; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; ram[register_I = (register_P << 4) + 0x2] = 0x100; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = (register_P << 4) + 0xc] = 0x000; /* store acc to RAM */ ram[register_I = (register_P << 4) + 0xa] = 0x000; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; ram[register_I = (register_P << 4) + 0xd] = 0x0ff; /* store acc to RAM */ ram[register_I = (register_P << 4) + 0xb] = 0x0ff; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x31; register_A = flag_C = acc_a0 = 0x0031; ram[register_I = (register_P << 4) + 0x6] = 0x031; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x2e; register_A = flag_C = acc_a0 = 0x005f; ram[register_I = (register_P << 4) + 0x7] = 0x05f; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x05; register_A = flag_C = acc_a0 = 0x0005; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x005; /* store acc to RAM */ register_J = 0x0128; {register_PC = 0x1128; continue;}; case 0x1058: {register_PC = 0x1128; continue;}; case 0x1072: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; register_J = 0x0128; if (cmp_new == cmp_old) {register_PC = 0x1128; continue;}; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; vgColour = 0x0f; {register_PC = 0x1128; continue;}; case 0x1080: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x3; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x30]) ^ 0xFFF) + 1 + register_A); register_J = 0x0094; if (cmp_new == cmp_old) {register_PC = 0x1094; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x3b; register_A = flag_C = acc_a0 = 0x003b; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x03b; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x94; register_A = flag_C = acc_a0 = 0x0094; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x094; /* store acc to RAM */ register_J = 0x00b7; {register_PC = 0x10b7; continue;}; case 0x1094: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x4; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x40]) ^ 0xFFF) + 1 + register_A); register_J = 0x00a7; if (cmp_new == cmp_old) {register_PC = 0x10a7; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x4b; register_A = flag_C = acc_a0 = 0x004b; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x04b; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xa7; register_A = flag_C = acc_a0 = 0x00a7; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x0a7; /* store acc to RAM */ register_J = 0x00b7; {register_PC = 0x10b7; continue;}; case 0x10a7: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x50]) ^ 0xFFF) + 1 + register_A); register_J = 0x047d; if (cmp_new == cmp_old) {register_PC = 0x147d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x5b; register_A = flag_C = acc_a0 = 0x005b; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x05b; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = register_A; cmp_new = 0x7d; register_A = flag_C = acc_a0 = 0x047d; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x47d; /* store acc to RAM */ case 0x10b7: register_P = 0x1; /* set page register */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_P = 0x2; /* set page register */ ram[register_I = 0x26] = register_A; /* store acc to RAM */ register_P = 0x1; /* set page register */ ram[register_I = 0x13] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x13]) ^ 0xFFF) + 1 + register_A); register_J = 0x0479; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1479; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_P = 0x2; /* set page register */ ram[register_I = 0x27] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x27]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1479; continue;}; register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x13]; /* set I register */ register_J = 0x00d3; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0xc) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x19] = register_A; /* store acc */ register_I = ram[0x19]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x17] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[register_I = 0x16] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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); 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); 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); 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); cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0x1] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0x2] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x0d; register_A = flag_C = acc_a0 = 0x010d; ram[register_I = (register_P << 4) + 0xf] = 0x10d; /* store acc to RAM */ register_J = 0x0575; {register_PC = 0x1575; continue;}; case 0x110d: 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 */ ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ 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 */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x011e; ram[register_I = (register_P << 4) + 0xf] = 0x11e; /* store acc to RAM */ register_J = 0x0575; {register_PC = 0x1575; continue;}; case 0x111e: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x09]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0072; {register_PC = 0x1072; continue;}; case 0x1128: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; register_P = 0x1; /* set page register */ ram[register_I = 0x18] = 0x0ff; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x16]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x16] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x2) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_P = 0x0; /* set page register */ ram[register_I = 0x03] = register_A; /* store acc to RAM */ case 0x1134: register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x03]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x039c; if ((acc_a0 & 0x01) != 0) {register_PC = 0x139c; continue;}; register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x16]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */ ram[0x16] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A); register_J = 0x0471; if (cmp_new == cmp_old) {register_PC = 0x1471; continue;}; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x3] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x4] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x5] = register_A; /* store acc to RAM */ register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x03]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ ram[0x03] = register_A; /* store acc */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x13]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[0x13] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x14]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[0x14] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x1c]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x1d]))) & 0xFFF; /* do acc operation */ ram[register_I = 0x1f] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x1f]; /* set I register */ register_J = 0x0172; if (cmp_new < cmp_old) {register_PC = 0x1172; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1172: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0xf] = register_B; /* set I register and store B to ram */ register_J = 0x0186; if (cmp_new < cmp_old) {register_PC = 0x1186; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x1186: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0195; if (cmp_new < cmp_old) {register_PC = 0x1195; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1195: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x3] = register_B; /* set I register and store B to ram */ register_J = 0x01a9; if (cmp_new < cmp_old) {register_PC = 0x11a9; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x11a9: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x01b2; if (cmp_new < cmp_old) {register_PC = 0x11b2; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x11b2: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x4]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x4] = register_B; /* set I register and store B to ram */ register_J = 0x01c6; if (cmp_new < cmp_old) {register_PC = 0x11c6; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x11c6: 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 */ 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 */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ 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 */ 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 */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ 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 */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xb]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x01e0; if (cmp_new < cmp_old) {register_PC = 0x11e0; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x11e0: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x4]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0xf] = register_B; /* set I register and store B to ram */ register_J = 0x01f4; if (cmp_new < cmp_old) {register_PC = 0x11f4; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x11f4: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0203; if (cmp_new < cmp_old) {register_PC = 0x1203; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1203: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x4]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xa]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x4] = register_B; /* set I register and store B to ram */ register_J = 0x0217; if (cmp_new < cmp_old) {register_PC = 0x1217; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x1217: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0220; if (cmp_new < cmp_old) {register_PC = 0x1220; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1220: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xb]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ register_J = 0x0234; if (cmp_new < cmp_old) {register_PC = 0x1234; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x1234: 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 */ 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 */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xd]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x024e; if (cmp_new < cmp_old) {register_PC = 0x124e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x124e: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0xf] = register_B; /* set I register and store B to ram */ register_J = 0x0262; if (cmp_new < cmp_old) {register_PC = 0x1262; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x1262: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0271; if (cmp_new < cmp_old) {register_PC = 0x1271; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1271: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x3]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x3] = register_B; /* set I register and store B to ram */ register_J = 0x0285; if (cmp_new < cmp_old) {register_PC = 0x1285; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x1285: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x028e; if (cmp_new < cmp_old) {register_PC = 0x128e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x128e: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ register_J = 0x02a2; if (cmp_new < cmp_old) {register_PC = 0x12a2; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x12a2: 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 */ 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 */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x0]))) & 0xFFF; /* do acc operation */ register_P = 0x0; /* set page register */ ram[register_I = 0x05] = register_A; /* store acc to RAM */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x14]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x11]))) & 0xFFF; /* do acc operation */ register_P = 0x0; /* set page register */ ram[register_I = 0x06] = register_A; /* store acc to RAM */ register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x15]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x12]))) & 0xFFF; /* do acc operation */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x0; /* set page register */ ram[register_I = 0x09] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; ram[register_I = 0x0d] = 0x200; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x04] = 0x000; /* store acc to RAM */ case 0x12c3: 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 */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); register_J = 0x0333; if (cmp_new < cmp_old) {register_PC = 0x1333; continue;}; flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x02d4; if (cmp_new < cmp_old) {register_PC = 0x12d4; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x12d4: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x02de; if (cmp_new < cmp_old) {register_PC = 0x12de; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x12de: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x02e8; if (cmp_new < cmp_old) {register_PC = 0x12e8; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x12e8: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x02f2; if (cmp_new < cmp_old) {register_PC = 0x12f2; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x12f2: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x02fc; if (cmp_new < cmp_old) {register_PC = 0x12fc; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x12fc: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0306; if (cmp_new < cmp_old) {register_PC = 0x1306; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x1306: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0310; if (cmp_new < cmp_old) {register_PC = 0x1310; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x1310: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x031a; if (cmp_new < cmp_old) {register_PC = 0x131a; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x131a: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x0324; if (cmp_new < cmp_old) {register_PC = 0x1324; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x1324: cmp_new = 0x0FEF; cmp_old = acc_a0 = register_A; flag_C = (0x0FEF + register_A); register_A = (register_A << 1) & 0xFFF; register_B = (register_B << 1) & 0xFFF; acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x032e; if (cmp_new < cmp_old) {register_PC = 0x132e; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = 0x1) ^ 0xFFF) + 1)) & 0xFFF; /* 1's-comp add */ case 0x132e: ram[register_I = (register_P << 4) + 0x9] = register_B; /* set I register and store B to ram */ register_J = 0x033b; {register_PC = 0x133b; continue;}; case 0x1333: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_J = 0x02c3; {register_PC = 0x12c3; continue;}; case 0x133b: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_J = 0x0344; if (cmp_new < cmp_old) {register_PC = 0x1344; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1344: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } ram[register_I = (register_P << 4) + 0x7] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x5]) ^ 0xFFF) + 1 + register_A); register_J = 0x035a; if (cmp_new < cmp_old) {register_PC = 0x135a; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I] = register_A; /* store acc */ case 0x135a: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; 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 */ register_J = 0x0363; if (cmp_new < cmp_old) {register_PC = 0x1363; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1363: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } ram[register_I = (register_P << 4) + 0x8] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x6]) ^ 0xFFF) + 1 + register_A); register_J = 0x0379; if (cmp_new < cmp_old) {register_PC = 0x1379; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ ram[register_I] = register_A; /* store acc */ case 0x1379: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; acc_a0 = register_A; register_B = (flag_C = ((cmp_old = register_B) + ((cmp_new = ram[register_I = (register_P << 4) + 0x04]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ register_J = 0x038b; if (cmp_new == cmp_old) {register_PC = 0x138b; continue;}; register_J = 0x0382; case 0x1382: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ acc_a0 = register_A; /* save old accA bit0 */ cmp_old = register_B; /* store old acc for later */ register_B = (flag_C = (register_B + (cmp_new = 0x01))) & 0xFFF; /* add values */ if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1382; continue;}; case 0x138b: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00e0))) & 0xFFF; /* add values */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x0e]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x0f]&0xff; /* set/mask new register_I */ ram[register_I] = register_A; /* store acc */ case 0x139c: register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x17]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1 + register_A); register_J = 0x0479; if (cmp_new == cmp_old) {register_PC = 0x1479; continue;}; register_J = 0x0134; register_P = 0x0; /* set page register */ ram[register_I = 0x0b] = register_A; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x03]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x1134; continue;}; ram[register_I = 0x0a] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x0b]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[0x0b] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x03]) ^ 0xFFF) + 1 + register_A); if (cmp_new < cmp_old) {register_PC = 0x1134; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0a]; /* set I register */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00e0))) & 0xFFF; /* add values */ ram[register_I = 0x0e] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I = 0x0f] = register_A; /* store acc to RAM */ register_I = ram[0x0f]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x06] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x06]) ^ 0xFFF) + 1 + register_A); register_J = 0x0454; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1454; continue;}; register_I = ram[0x0e]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x05] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1454; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x0b]; /* set I register */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00e0))) & 0xFFF; /* add values */ ram[register_I = 0x0e] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I = 0x0f] = register_A; /* store acc to RAM */ register_I = ram[0x0f]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x08] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x08]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1454; continue;}; register_I = ram[0x0e]&0xff; /* set new register_I (8 bits) */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x07]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1454; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x08]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x06]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = 0x08] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x07]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x05]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = 0x07] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; register_P = 0x1; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x19]) ^ 0xFFF) + 1 + register_A); register_J = 0x041e; if (cmp_new < cmp_old) {register_PC = 0x141e; continue;}; register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x05]; /* set I register */ register_P = 0x2; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x26]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_P = 0x0; /* set page register */ ram[register_I = 0x0c] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x0c]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } register_P = 0x2; /* set page register */ register_PC = 0x1400; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute1400() { for (;;) { switch (register_PC) { case 0x1400: acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x26]))) & 0xFFF; /* do acc operation */ register_P = 0x0; /* set page register */ ram[register_I = (register_P << 4) + 0x5] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x06]; /* set I register */ register_P = 0x2; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x27]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_P = 0x0; /* set page register */ ram[register_I = 0x0c] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0; register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x19]; /* set I register */ register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x0c]) ^ 0xFFF) + 1 + register_A); cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } cmp_new = ram[register_I]; register_B <<= 4; /* get sign bit 15 */ register_B |= (register_A >> 8); /* bring in A high nibble */ register_A = ((register_A & 0xFF) << 8) | (0xe3); /* pick up opcode */ if (register_A & 0x100) /* 1bit shifted out? */ { acc_a0 = register_A = (register_A >> 8) | ((register_B & 0xFF) << 8); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((4)&31))) /* SAR */; cmp_old = register_B & 0x0F; register_B = ((int)(((int)register_B) >> (int)((1)&31))) /* SAR */; register_B &= 0xFFF; flag_C = (register_B += cmp_new); register_B &= 0xFFF; } else { register_A = (register_A >> 8) | /* Bhigh | Alow */ ((register_B & 0xFF) << 8); cmp_old = acc_a0 = register_A & 0xFFF; flag_C = (cmp_old + cmp_new); register_A >>= 1; register_A &= 0xFFF; register_B = ((int)(((int)register_B) >> (int)((5)&31))) /* SAR */; register_B &= 0xFFF; } register_P = 0x2; /* set page register */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = 0x27]))) & 0xFFF; /* do acc operation */ register_P = 0x0; /* set page register */ ram[register_I = (register_P << 4) + 0x6] = register_B; /* set I register and store B to ram */ case 0x141e: register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x05]; /* set I register */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x06]; /* new acc value */ register_J = 0x0422; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x07]; /* set I register */ register_J = 0x042d; if (cmp_new < cmp_old) {register_PC = 0x142d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x142d: ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* set I register */ register_J = 0x0436; if (cmp_new < cmp_old) {register_PC = 0x1436; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ case 0x1436: ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0454; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1454; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x08) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x1440: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0440; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1440; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x7) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); register_J = 0x045b; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x145b; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xc]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x145b; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* new acc value */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x06]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } case 0x1454: register_P = 0x1; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x17]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x17] = register_A; /* store acc */ register_J = 0x039c; {register_PC = 0x139c; continue;}; case 0x145b: flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* new acc value */ 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); ram[register_I] = register_B; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I] = register_A; /* store acc */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x06]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x08]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x6]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x5]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_J = 0x041e; {register_PC = 0x141e; continue;}; case 0x1471: register_P = 0x0; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x03]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x03] = register_A; /* store acc */ register_P = 0x1; /* set page register */ register_J = 0x039c; {register_PC = 0x139c; continue;}; case 0x1479: register_P = 0x2; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x2f]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[0x2f]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = 0x1000 | register_J; continue;}; case 0x147d: register_P = 0x0; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x00]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[0x00]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = 0x1000 | register_J; continue;}; case 0x1575: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0500; cmp_old = register_A; cmp_new = 0xf6; register_A = flag_C = acc_a0 = 0x05f6; ram[register_I = (register_P << 4) + 0xa] = 0x5f6; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x20; register_A = flag_C = acc_a0 = 0x0020; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x059f; if (cmp_new < cmp_old) {register_PC = 0x159f; continue;}; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x05ab; if (cmp_new < cmp_old) {register_PC = 0x15ab; continue;}; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1 + register_A); register_J = 0x05bf; if (cmp_new < cmp_old) {register_PC = 0x15bf; continue;}; 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0060))) & 0xFFF; /* add values */ 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 */ register_J = 0x05cd; {register_PC = 0x15cd; continue;}; case 0x159f: 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 */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0500; cmp_old = register_A; cmp_new = 0xd6; register_A = flag_C = acc_a0 = 0x05d6; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ register_J = 0x05b9; {register_PC = 0x15b9; continue;}; case 0x15ab: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x40) ^ 0xFFF) + 1))) & 0xFFF; /* add */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0020))) & 0xFFF; /* add values */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0xe]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ case 0x15b9: cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ register_J = 0x05d3; {register_PC = 0x15d3; continue;}; case 0x15bf: 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 */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0040))) & 0xFFF; /* add values */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0xe]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x60) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x15cd: cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[register_I] = register_A; /* store acc */ case 0x15d3: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = 0x1000 | register_J; continue;}; case 0x1600: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0200; cmp_old = register_B; acc_a0 = register_A; /* save old accA bit0 */ cmp_new = 0x76; register_B = flag_C = 0x0276; cmp_new = 0x76; /* No carry */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xa0; register_A = flag_C = acc_a0 = 0x00a0; register_J = 0x060b; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x38) ^ 0xFFF) + 1))) & 0xFFF; /* add */ case 0x1610: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0610; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1610; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x063a; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x163a; continue;}; vgColour = 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x96; register_A = flag_C = acc_a0 = 0x0096; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x096; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x8a; register_A = flag_C = acc_a0 = 0x028a; ram[register_I = 0x04] = 0x28a; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x11; register_A = flag_C = acc_a0 = 0x0011; ram[register_I = 0x0e] = 0x011; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x0f] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0x33; register_A = flag_C = acc_a0 = 0x0633; ram[register_I = 0x05] = 0x633; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x07; register_A = flag_C = acc_a0 = 0x063a; ram[register_I = 0x00] = 0x63a; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x163a: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x71]; /* set I register */ register_J = 0x0644; if (cmp_new == cmp_old) {register_PC = 0x1644; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x71] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; case 0x1644: vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x10; register_A = flag_C = acc_a0 = 0x0010; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xa0; register_A = flag_C = acc_a0 = 0x00a0; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x0a0; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; ram[register_I = 0x04] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x07; register_A = flag_C = acc_a0 = 0x0007; ram[register_I = 0x0e] = 0x007; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x6a; register_A = flag_C = acc_a0 = 0x006a; ram[register_I = 0x05] = 0x06a; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0x71; register_A = flag_C = acc_a0 = 0x0671; ram[register_I = 0x00] = 0x671; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x1671: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xb8; register_A = flag_C = acc_a0 = 0x00b8; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x0b8; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; ram[register_I = 0x04] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x07; register_A = flag_C = acc_a0 = 0x0007; ram[register_I = 0x0e] = 0x007; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x6b; register_A = flag_C = acc_a0 = 0x006b; ram[register_I = 0x05] = 0x06b; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = register_A; cmp_new = 0x8f; register_A = flag_C = acc_a0 = 0x068f; ram[register_I = 0x00] = 0x68f; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x168f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x20]; /* set I register */ register_J = 0x069a; if (cmp_new == cmp_old) {register_PC = 0x169a; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x20] = register_A; /* store acc */ register_J = 0x0704; {register_PC = 0x1704; continue;}; case 0x169a: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_P = 0x3; /* set page register */ ram[register_I = 0x3f] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */ register_P = 0x4; /* set page register */ ram[register_I = 0x4f] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */ register_P = 0x5; /* set page register */ ram[register_I = 0x5f] = register_A; /* store acc to RAM */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x4))) & 0xFFF; /* add values, save carry */ register_P = 0x2; /* set page register */ ram[register_I = 0x25] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0x0] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0xff) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x06b3; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x16b3; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x02ff; ram[register_I] = register_A; /* store acc */ case 0x16b3: register_P = 0x3; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x3f]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ register_P = 0x4; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x4f]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ register_P = 0x5; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x5f]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x2))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ case 0x1704: register_P = 0x8; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x89]; /* set I register */ register_P = 0x7; /* set page register */ ram[register_I = 0x7a] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; ram[register_I = 0x78] = 0x800; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* save old accB */ register_B = cmp_new = get_coin_state(); /* apparently not used in tailgunner??? */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; reset_coin_counter(1); 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); reset_coin_counter(register_A&1); cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x78]) ^ 0xFFF) + 1 + register_A); register_J = 0x072e; if (cmp_new == cmp_old) {register_PC = 0x172e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; ram[0x78] = 0x001; /* store acc */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* save old accB */ register_B = cmp_new = get_quarters_per_game(); /* 1 => 1q/game, 0 => 2q/game */ acc_a0 = register_A; flag_C = ((((cmp_new = ram[register_I = (register_P << 4) + 0x8]) ^ 0xFFF) + 1) + (cmp_old = register_B)); /* ones compliment */ register_J = 0x072b; if (cmp_new == cmp_old) {register_PC = 0x172b; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x79]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x79] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x79]) ^ 0xFFF) + 1 + register_A); register_J = 0x072e; if (cmp_new == cmp_old) {register_PC = 0x172e; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[0x79] = 0x000; /* store acc */ case 0x172b: 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ case 0x172e: register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7a]; /* set I register */ register_P = 0x8; /* set page register */ ram[register_I = 0x89] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ ram[register_I = 0x7a] = 0x000; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x07b9; if (cmp_new == cmp_old) {register_PC = 0x17b9; continue;}; vgColour = 0x07; register_P = 0x8; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x81]; /* set I register */ register_J = 0x0749; if (cmp_new == cmp_old) {register_PC = 0x1749; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0xa) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ if (cmp_new < cmp_old) {register_PC = 0x1749; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x8b]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x8b] = register_A; /* store acc */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; case 0x1749: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0xcc; register_A = flag_C = acc_a0 = 0x01cc; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x1cc; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x8a; register_A = flag_C = acc_a0 = 0x028a; ram[register_I = 0x04] = 0x28a; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x21; register_A = flag_C = acc_a0 = 0x0021; ram[register_I = 0x0e] = 0x021; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x81; register_A = flag_C = acc_a0 = 0x0081; ram[register_I = 0x05] = 0x081; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; cmp_old = register_A; cmp_new = 0x67; register_A = flag_C = acc_a0 = 0x0767; ram[register_I = 0x00] = 0x767; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x1767: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x72]; /* set I register */ register_J = 0x0771; if (cmp_new == cmp_old) {register_PC = 0x1771; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x72] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; case 0x1771: vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xa; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000a; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[0x69] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x9) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0784; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1784; continue;}; register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7b]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x7b] = register_A; /* store acc */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; case 0x1784: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = register_A; cmp_new = 0x20; register_A = flag_C = acc_a0 = 0x0320; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x320; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; ram[register_I = 0x04] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x21; register_A = flag_C = acc_a0 = 0x0021; ram[register_I = 0x0e] = 0x021; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x69; register_A = flag_C = acc_a0 = 0x0069; ram[register_I = 0x05] = 0x069; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; cmp_old = register_A; cmp_new = 0xa2; register_A = flag_C = acc_a0 = 0x07a2; ram[register_I = 0x00] = 0x7a2; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x17a2: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xa; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000a; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[0x69] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1d; register_A = flag_C = acc_a0 = 0x001d; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x0058; register_P = 0x1; /* set page register */ register_PC = 0x0058; /* rom offset */ {register_PC = 0x0058; continue;}; case 0x17b9: register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6c]) ^ 0xFFF) + 1 + register_A); register_J = 0x07cb; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x17cb; continue;}; register_J = 0x07c5; if (cmp_new == cmp_old) {register_PC = 0x17c5; continue;}; ram[0x6c] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6b]; /* set I register */ ram[register_I = 0x6d] = register_A; /* store acc to RAM */ case 0x17c5: 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 */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); register_J = 0x07cb; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x17cb; continue;}; ram[register_I] = register_A; /* store acc */ case 0x17cb: flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0200; cmp_old = register_B; acc_a0 = register_A; /* save old accA bit0 */ cmp_new = 0x76; register_B = flag_C = 0x0276; cmp_new = 0x76; /* No carry */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0xda; register_A = flag_C = acc_a0 = 0x02da; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; register_P = 0x6; /* set page register */ ram[register_I = 0x61] = 0x001; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x62] = 0x000; /* store acc to RAM */ ram[register_I = 0x60] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1c; register_A = flag_C = acc_a0 = 0x001c; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0xbc; register_A = flag_C = acc_a0 = 0x02bc; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x2bc; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x8a; register_A = flag_C = acc_a0 = 0x028a; ram[register_I = 0x04] = 0x28a; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x21; register_A = flag_C = acc_a0 = 0x0021; ram[register_I = 0x0e] = 0x021; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x0f] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0x03; register_A = flag_C = acc_a0 = 0x0803; ram[register_I = 0x05] = 0x803; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x0c; register_A = flag_C = acc_a0 = 0x080f; register_PC = 0x1800; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute1800() { for (;;) { switch (register_PC) { case 0x1800: ram[register_I = 0x00] = 0x80f; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x180f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0xf8; register_A = flag_C = acc_a0 = 0x02f8; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x2f8; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; ram[register_I = 0x04] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x07; register_A = flag_C = acc_a0 = 0x0007; ram[register_I = 0x0e] = 0x007; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x6c; register_A = flag_C = acc_a0 = 0x006c; ram[register_I = 0x05] = 0x06c; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0x2d; register_A = flag_C = acc_a0 = 0x082d; ram[register_I = 0x00] = 0x82d; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x182d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0300; cmp_old = register_A; cmp_new = 0x10; register_A = flag_C = acc_a0 = 0x0310; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x310; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; ram[register_I = 0x04] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x07; register_A = flag_C = acc_a0 = 0x0007; ram[register_I = 0x0e] = 0x007; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x6d; register_A = flag_C = acc_a0 = 0x006d; ram[register_I = 0x05] = 0x06d; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0x4b; register_A = flag_C = acc_a0 = 0x084b; ram[register_I = 0x00] = 0x84b; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x184b: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x8; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x89]) ^ 0xFFF) + 1 + register_A); register_J = 0x095c; if (cmp_new == cmp_old) {register_PC = 0x195c; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; vgColour = 0x07; cmp_new = 0x1; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0001; register_P = 0x7; /* set page register */ ram[register_I = 0x7a] = 0x001; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x7a]))) & 0xFFF; set_watchdog(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x90; register_A = flag_C = acc_a0 = 0x0190; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x190; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x32; register_A = flag_C = acc_a0 = 0x0032; ram[register_I = 0x04] = 0x032; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x4d; register_A = flag_C = acc_a0 = 0x004d; ram[register_I = 0x0e] = 0x04d; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x0f] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0x6f; register_A = flag_C = acc_a0 = 0x086f; ram[register_I = 0x05] = 0x86f; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x09; register_A = flag_C = acc_a0 = 0x0878; ram[register_I = 0x00] = 0x878; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x1878: register_P = 0x8; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x89]; /* set I register */ ram[register_I = 0x8c] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x9) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0882; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1882; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x9; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0009; ram[0x8c] = 0x009; /* store acc */ case 0x1882: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = register_A; cmp_new = 0x58; register_A = flag_C = acc_a0 = 0x0258; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x258; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x32; register_A = flag_C = acc_a0 = 0x0032; ram[register_I = 0x04] = 0x032; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x0b; register_A = flag_C = acc_a0 = 0x000b; ram[register_I = 0x0e] = 0x00b; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x0f] = 0x003; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x01; register_A = flag_C = acc_a0 = 0x0004; ram[register_I = 0x02] = 0x004; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x8c; register_A = flag_C = acc_a0 = 0x008c; ram[register_I = 0x05] = 0x08c; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; cmp_old = register_A; cmp_new = 0xa0; register_A = flag_C = acc_a0 = 0x08a0; ram[register_I = 0x00] = 0x8a0; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x18a0: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1e; register_A = flag_C = acc_a0 = 0x001e; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1a; register_A = flag_C = acc_a0 = 0x001a; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x14; register_A = flag_C = acc_a0 = 0x0014; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x16; register_A = flag_C = acc_a0 = 0x0016; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x18; register_A = flag_C = acc_a0 = 0x0018; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7b]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x7b] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x8; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0008; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0012))) & 0xFFF; /* add values */ set_sound_data(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x7b]))) & 0xFFF; set_watchdog(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x90; register_A = flag_C = acc_a0 = 0x0190; register_P = 0x0; /* set page register */ ram[register_I = 0x03] = 0x190; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0100; cmp_old = register_A; cmp_new = 0x90; register_A = flag_C = acc_a0 = 0x0190; ram[register_I = 0x04] = 0x190; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x2c; register_A = flag_C = acc_a0 = 0x002c; ram[register_I = 0x0e] = 0x02c; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; ram[register_I = 0x0f] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0917; ram[register_I = 0x05] = 0x917; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x0c; register_A = flag_C = acc_a0 = 0x0923; ram[register_I = 0x00] = 0x923; /* store acc to RAM */ register_J = 0x0af3; {register_PC = 0x1af3; continue;}; case 0x1923: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = get_io_startbutton(); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x09c3; if (cmp_new == cmp_old) {register_PC = 0x19c3; continue;}; register_P = 0x8; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x89]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x89] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x12; register_A = flag_C = acc_a0 = 0x0012; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x2; /* set page register */ ram[register_I = 0x2a] = 0x000; /* store acc to RAM */ ram[register_I = 0x2b] = 0x000; /* store acc to RAM */ register_P = 0x7; /* set page register */ ram[register_I = 0x7a] = 0x000; /* store acc to RAM */ ram[register_I = 0x7d] = 0x000; /* store acc to RAM */ register_P = 0x6; /* set page register */ ram[register_I = 0x6a] = 0x000; /* store acc to RAM */ ram[register_I = 0x6b] = 0x000; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x30] = 0x000; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x40] = 0x000; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x50] = 0x000; /* store acc to RAM */ register_P = 0x7; /* set page register */ ram[register_I = 0x7b] = 0x000; /* store acc to RAM */ register_P = 0x8; /* set page register */ ram[register_I = 0x80] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x82]; /* set I register */ ram[register_I = 0x81] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xa; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000a; register_P = 0x6; /* set page register */ ram[register_I = 0x69] = 0x00a; /* store acc to RAM */ register_P = 0x8; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x8a]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[0x8a] = register_A; /* store acc */ register_J = 0x0058; register_P = 0x1; /* set page register */ register_PC = 0x0058; /* rom offset */ {register_PC = 0x0058; continue;}; case 0x195c: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x12; register_A = flag_C = acc_a0 = 0x0012; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7d]; /* set I register */ register_J = 0x09c3; if (cmp_new == cmp_old) {register_PC = 0x19c3; continue;}; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; vgColour = (register_A & 0x01) != 0 ? 0x0f: 0x07; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x1; /* set page register */ ram[register_I = 0x19] = 0x000; /* store acc to RAM */ ram[register_I = 0x10] = 0x000; /* store acc to RAM */ ram[register_I = 0x11] = 0x000; /* store acc to RAM */ ram[register_I = 0x1c] = 0x000; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; ram[register_I = 0x1d] = 0x0ff; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x2; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0002; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7d]) ^ 0xFFF) + 1 + register_A); register_J = 0x09b2; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x19b2; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7c]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x3) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[0x7c] = register_A; /* store acc */ register_P = 0x1; /* set page register */ ram[register_I = 0x1e] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0x8f; register_A = flag_C = acc_a0 = 0x098f; ram[register_I = 0x1f] = 0x98f; /* store acc to RAM */ register_J = 0x0575; {register_PC = 0x1575; continue;}; case 0x198f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7e]) ^ 0xFFF) + 1 + register_A); register_J = 0x0998; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1998; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x3; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0003; ram[register_I = 0x7d] = 0x003; /* store acc to RAM */ case 0x1998: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0xb) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[register_I] = register_A; /* store acc */ register_P = 0x1; /* set page register */ ram[register_I = 0x12] = register_A; /* store acc to RAM */ case 0x199d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0xc3; register_A = flag_C = acc_a0 = 0x09c3; register_P = 0x0; /* set page register */ ram[register_I = 0x00] = 0x9c3; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* step back cmp flag */ register_B = cmp_new = 0x0300; 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); cmp_old = register_B; acc_a0 = register_A; /* save old accA bit0 */ register_B = (flag_C = (register_B + (cmp_new = 0x32))) & 0xFFF; /* add values */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x32) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x09ad; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ register_J = 0x09c7; {register_PC = 0x19c7; continue;}; case 0x19b2: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ register_P = 0x1; /* set page register */ ram[register_I = 0x12] = register_A; /* store acc to RAM */ register_P = 0x7; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x7c]; /* set I register */ register_P = 0x1; /* set page register */ ram[register_I = 0x1e] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0x9d; register_A = flag_C = acc_a0 = 0x099d; ram[register_I = 0x1f] = 0x99d; /* store acc to RAM */ register_J = 0x0575; {register_PC = 0x1575; continue;}; case 0x19c3: register_J = 0x0058; register_P = 0x1; /* set page register */ register_PC = 0x0058; /* rom offset */ {register_PC = 0x0058; continue;}; case 0x19c7: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0a00; cmp_old = register_A; cmp_new = 0x1b; register_A = flag_C = acc_a0 = 0x0a1b; register_P = 0x1; /* set page register */ ram[register_I = 0x16] = 0xa1b; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x1a; register_A = flag_C = acc_a0 = 0x0a35; ram[register_I = 0x17] = 0xa35; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0xd7; register_A = flag_C = acc_a0 = 0x09d7; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x9d7; /* store acc to RAM */ register_J = 0x0128; {register_PC = 0x1128; continue;}; case 0x19d7: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x7f; register_A = flag_C = acc_a0 = 0x007f; register_P = 0x7; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7c]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[0x7c] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x20) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x09eb; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x19eb; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x60; register_A = flag_C = acc_a0 = 0x0060; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x7c]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x19eb; continue;}; register_J = 0x047d; {register_PC = 0x147d; continue;}; case 0x19eb: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0a00; cmp_old = register_A; cmp_new = 0x3e; register_A = flag_C = acc_a0 = 0x0a3e; register_P = 0x1; /* set page register */ ram[register_I = 0x16] = 0xa3e; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x32; register_A = flag_C = acc_a0 = 0x0a70; ram[register_I = 0x17] = 0xa70; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; cmp_old = register_A; cmp_new = 0xfb; register_A = flag_C = acc_a0 = 0x09fb; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x9fb; /* store acc to RAM */ register_J = 0x0128; {register_PC = 0x1128; continue;}; case 0x19fb: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0a00; cmp_old = register_A; cmp_new = 0x7a; register_A = flag_C = acc_a0 = 0x0a7a; register_P = 0x1; /* set page register */ ram[register_I = 0x16] = 0xa7a; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x32; register_A = flag_C = acc_a0 = 0x0aac; ram[register_I = 0x17] = 0xaac; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0a00; cmp_old = register_A; cmp_new = 0x0b; register_A = flag_C = acc_a0 = 0x0a0b; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0xa0b; /* store acc to RAM */ register_J = 0x0128; {register_PC = 0x1128; continue;}; case 0x1a0b: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0a00; cmp_old = register_A; cmp_new = 0xb8; register_A = flag_C = acc_a0 = 0x0ab8; register_P = 0x1; /* set page register */ ram[register_I = 0x16] = 0xab8; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0x2f; register_A = flag_C = acc_a0 = 0x0ae7; ram[register_I = 0x17] = 0xae7; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = register_A; cmp_new = 0x7d; register_A = flag_C = acc_a0 = 0x047d; register_P = 0x2; /* set page register */ ram[register_I = 0x2f] = 0x47d; /* store acc to RAM */ register_J = 0x0128; {register_PC = 0x1128; continue;}; case 0x1af3: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x03]; /* set I register */ 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 */ register_J = 0x0af6; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ case 0x1afd: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ register_J = 0x0afd; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1afd; continue;}; ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0018))) & 0xFFF; /* add values */ ram[register_I = (register_P << 4) + 0x6] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; ram[register_I = (register_P << 4) + 0x1] = 0x0ff; /* store acc to RAM */ case 0x1b09: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xf]) ^ 0xFFF) + 1 + register_A); register_J = 0x0b21; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1b21; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ case 0x1b13: ram[register_I = (register_P << 4) + 0x7] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1 + register_A); register_J = 0x0b6b; if (cmp_new == cmp_old) {register_PC = 0x1b6b; continue;}; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x40) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x0b6e; if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1b6e; continue;}; register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0039))) & 0xFFF; /* add values */ ram[register_I = (register_P << 4) + 0x7] = register_A; /* store acc to RAM */ {register_PC = 0x1b6e; continue;}; case 0x1b21: 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0b6b; if (cmp_new == cmp_old) {register_PC = 0x1b6b; continue;}; ram[register_I] = register_A; /* store acc */ register_I = ram[(register_P << 4) + 0x05]&0xff; /* set/mask new register_I */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; ram[register_I = (register_P << 4) + 0x7] = register_A; /* store acc to RAM */ 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ ram[register_I] = register_A; /* store acc */ register_J = 0x0b63; if (cmp_new == cmp_old) {register_PC = 0x1b63; continue;}; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0b3c; if (cmp_new == cmp_old) {register_PC = 0x1b3c; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0b3d; {register_PC = 0x1b3d; continue;}; case 0x1b3c: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ case 0x1b3d: cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; ram[register_I] = register_A; /* store acc */ case 0x1b42: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0b52; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1b52; continue;}; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x7]) ^ 0xFFF) + 1 + register_A); register_J = 0x0b58; if (cmp_new == cmp_old) {register_PC = 0x1b58; continue;}; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I = (register_P << 4) + 0xe] = register_A; /* store acc to RAM */ case 0x1b52: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x0030))) & 0xFFF; /* add values */ register_J = 0x0b13; {register_PC = 0x1b13; continue;}; case 0x1b58: 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 */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (((cmp_new = 0x1) ^ 0xFFF) + 1))) & 0xFFF; /* 1's-comp add */ register_J = 0x0b52; if (cmp_new == cmp_old) {register_PC = 0x1b52; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x5b; register_A = flag_C = acc_a0 = 0x005b; register_J = 0x0b13; {register_PC = 0x1b13; continue;}; case 0x1b63: register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */ ram[register_I = (register_P << 4) + 0xf] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x05]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ register_J = 0x0b42; {register_PC = 0x1b42; continue;}; case 0x1b6b: cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x0]) ^ 0xFFF) + 1 + register_A); /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); {register_PC = 0x1000 | register_J; continue;}; case 0x1b6e: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0c00; cmp_old = register_A; cmp_new = 0x29; register_A = flag_C = acc_a0 = 0x0c29; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x7]))) & 0xFFF; /* do acc operation */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0b00; cmp_old = register_A; cmp_new = 0xef; register_A = flag_C = acc_a0 = 0x0bef; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ case 0x1b7a: cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x07]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0x1]) ^ 0xFFF) + 1 + register_A); register_J = 0x0bc1; if (cmp_new == cmp_old) {register_PC = 0x1bc1; continue;}; ram[register_I = (register_P << 4) + 0xd] = register_A; /* store acc to RAM */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I = (register_P << 4) + 0xc] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0b00; cmp_old = register_A; cmp_new = 0xd2; register_A = flag_C = acc_a0 = 0x0bd2; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x8] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x09]; /* new acc value */ register_J = 0x0b9b; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0xf; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x000f; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = (register_P << 4) + 0xd]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0b00; cmp_old = register_A; cmp_new = 0xd2; register_A = flag_C = acc_a0 = 0x0bd2; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I] = register_A; /* store acc */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = (register_P << 4) + 0x9]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ ram[register_I = (register_P << 4) + 0xb] = register_A; /* store acc to RAM */ 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 */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ 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 */ ram[register_I = (register_P << 4) + 0xa] = register_A; /* store acc to RAM */ 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 */ 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 */ {int temp_byte = 0; for (;;) { if ( ((((register_A >> 8) & 0x0A) != 0) && ((((register_A >> 8) & 0x0A) ^ 0x0A)) != 0) || ((((register_B >> 8) & 0x0A) != 0) && ((((register_B >> 8) & 0x0A) ^ 0x0A)) != 0) ) break; register_A <<= 1; register_B <<= 1; temp_byte = (temp_byte+1) & 0xff; if (temp_byte == 0) break /* This may not be correct */; } vgShiftLength = temp_byte & 0xfff; register_A &= 0x0FFF; register_B &= 0x0FFF; } register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x8]))) & 0xFFF; /* do acc operation */ acc_a0 = register_A; /* store old acc value */ register_B = (flag_C = ((cmp_old = register_B) + (cmp_new = ram[register_I = (register_P << 4) + 0x09]))) & 0xFFF; /* do acc operation */ { /* 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 = ((int)(((int)ToX) >> (int)((vgShiftLength)&31))) /* SAR */; ToX += FromX; ToY -= FromY; ToY = ((int)(((int)ToY) >> (int)((vgShiftLength)&31))) /* SAR */; ToY += FromY; /* render the line */ CinemaVectorData (FromX, FromY, ToX, ToY, vgColour); } register_J = 0x0b7a; {register_PC = 0x1b7a; continue;}; case 0x1bc1: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x9; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0009; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x4]))) & 0xFFF; /* do acc operation */ ram[register_I = (register_P << 4) + 0x9] = register_A; /* store acc to RAM */ 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 */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = (register_P << 4) + 0x3]))) & 0xFFF; /* do acc operation */ ram[register_I] = register_A; /* store acc */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x3))) & 0xFFF; /* add values, save carry */ flag_C = acc_a0 = register_A; cmp_old = register_B; /* store old acc */ register_B = cmp_new = ram[register_I = (register_P << 4) + 0x09]; /* new acc value */ register_J = 0x0bcb; FromX = register_A & 0xFFF; /* regA goes to x-coord */ FromY = register_B & 0xFFF; /* regB goes to y-coord */ register_J = 0x0b09; {register_PC = 0x1b09; continue;}; register_PC = 0x1d70; return; default: return; // Switch banks } } } /*********************************************************/ void cineExecute1c00() { for (;;) { switch (register_PC) { case 0x1d70: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1a; register_A = flag_C = acc_a0 = 0x001a; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x14; register_A = flag_C = acc_a0 = 0x0014; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x1c; register_A = flag_C = acc_a0 = 0x001c; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x18; register_A = flag_C = acc_a0 = 0x0018; set_sound_data(0); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); register_J = 0x0005; {register_PC = 0x1005; continue;}; case 0x1dc0: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x0dd5; if (cmp_new == cmp_old) {register_PC = 0x1dd5; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x11; register_A = flag_C = acc_a0 = 0x0011; set_sound_data(1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_A(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_B(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; set_sound_addr_C(register_A&1); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((register_A&1) != 0) strobe_sound_on(); else strobe_sound_off(); case 0x1dd5: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x2; /* set page register */ ram[register_I = 0x29] = 0x000; /* store acc to RAM */ register_P = 0x7; /* set page register */ ram[register_I = 0x73] = 0x000; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x37] = 0x000; /* store acc to RAM */ ram[register_I = 0x39] = 0x000; /* store acc to RAM */ ram[register_I = 0x3d] = 0x000; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x47] = 0x000; /* store acc to RAM */ ram[register_I = 0x49] = 0x000; /* store acc to RAM */ ram[register_I = 0x4d] = 0x000; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x57] = 0x000; /* store acc to RAM */ ram[register_I = 0x59] = 0x000; /* store acc to RAM */ ram[register_I = 0x5d] = 0x000; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; register_P = 0x3; /* set page register */ ram[register_I = 0x33] = 0xf00; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x43] = 0xf00; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x53] = 0xf00; /* store acc to RAM */ register_P = 0x2; /* set page register */ 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 */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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); 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); 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); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x22]))) & 0xFFF; /* do acc operation */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; ram[0x22] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[0x22] = register_A; /* store acc */ acc_a0 = register_A; cmp_old = register_B; register_B = (flag_C = (register_B + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ 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); ram[0x23] = register_A; /* store acc */ ram[register_I = (register_P << 4) + 0x2] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x00ff; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x23]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00ff))) & 0xFFF; /* add values */ register_P = 0x5; /* set page register */ ram[register_I = 0x58] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x3; /* set page register */ ram[register_I = 0x38] = 0x000; /* store acc to RAM */ register_P = 0x5; /* set page register */ cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + ((cmp_new = ram[register_I = 0x58]) ^ 0xFFF) + 1)) & 0xFFF; /* set regI addr */ register_P = 0x4; /* set page register */ ram[register_I = 0x48] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0c00; ram[register_I = 0x4a] = 0xc00; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x5a] = 0xc00; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x3a] = 0xc00; /* store acc to RAM */ register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x22]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0e9d; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1e9d; continue;}; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1e9d; continue;}; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_J = 0x0e5b; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1e5b; continue;}; register_P = 0x3; /* set page register */ ram[register_I = 0x32] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x32]))) & 0xFFF; set_watchdog(); ram[0x32] = register_A; /* store acc */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x7f) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_P = 0x4; /* set page register */ ram[register_I = 0x42] = register_A; /* store acc to RAM */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00fe))) & 0xFFF; /* add values */ register_P = 0x5; /* set page register */ ram[register_I = 0x52] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x55] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[0x55] = register_A; /* store acc */ register_P = 0x4; /* set page register */ ram[register_I = 0x45] = register_A; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x35] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0800; register_P = 0x2; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x23]) ^ 0xFFF) + 1 + register_A); register_J = 0x0e88; if (cmp_new < cmp_old) {register_PC = 0x1e88; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; register_P = 0x3; /* set page register */ ram[register_I = 0x31] = 0x900; /* store acc to RAM */ cmp_old = register_A; cmp_new = 0xff; register_A = flag_C = acc_a0 = 0x09ff; register_P = 0x4; /* set page register */ ram[register_I = 0x41] = 0x9ff; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x51] = 0x9ff; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x20; register_A = flag_C = acc_a0 = 0x0020; register_J = 0x0e94; {register_PC = 0x1e94; continue;}; case 0x1e5b: register_P = 0x3; /* set page register */ ram[register_I = 0x31] = register_A; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x7f) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_P = 0x4; /* set page register */ ram[register_I = 0x41] = register_A; /* store acc to RAM */ register_A = (flag_C = ((acc_a0 = cmp_old = register_A) + (cmp_new = 0x00fe))) & 0xFFF; /* add values */ register_P = 0x5; /* set page register */ ram[register_I = 0x51] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x54] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[0x54] = register_A; /* store acc */ register_P = 0x4; /* set page register */ ram[register_I = 0x44] = register_A; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x34] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; register_P = 0x4; /* set page register */ ram[register_I = 0x42] = 0x700; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x52] = 0x700; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0xff) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_P = 0x3; /* set page register */ ram[register_I = 0x32] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0xe0; register_A = flag_C = acc_a0 = 0x0fe0; ram[register_I = 0x35] = 0xfe0; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x55] = 0xfe0; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x45] = 0xfe0; /* store acc to RAM */ register_J = 0x0e9a; {register_PC = 0x1e9a; continue;}; case 0x1e88: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; register_P = 0x3; /* set page register */ ram[register_I = 0x31] = 0x700; /* store acc to RAM */ cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0xff) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_P = 0x4; /* set page register */ ram[register_I = 0x41] = register_A; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x51] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0xe0; register_A = flag_C = acc_a0 = 0x0fe0; case 0x1e94: register_P = 0x3; /* set page register */ ram[register_I = 0x34] = register_A; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x44] = register_A; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x54] = register_A; /* store acc to RAM */ case 0x1e9a: register_J = 0x0ef8; {register_PC = 0x1ef8; continue;}; case 0x1e9d: register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x4; /* set page register */ ram[register_I = 0x42] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x42]))) & 0xFFF; set_watchdog(); ram[0x42] = register_A; /* store acc */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x45] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[0x45] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0900; ram[register_I = 0x41] = 0x900; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x18; register_A = flag_C = acc_a0 = 0x0018; ram[register_I = 0x44] = 0x018; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0700; register_P = 0x3; /* set page register */ ram[register_I = 0x32] = 0x700; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x51] = 0x700; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0f00; cmp_old = register_A; cmp_new = 0xe8; register_A = flag_C = acc_a0 = 0x0fe8; ram[register_I = 0x54] = 0xfe8; /* store acc to RAM */ register_P = 0x3; /* set page register */ ram[register_I = 0x35] = 0xfe8; /* store acc to RAM */ register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x22]; /* set I register */ cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x3; /* set page register */ ram[register_I = 0x31] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x34] = register_A; /* store acc to RAM */ register_P = 0x2; /* set page register */ 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 */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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); 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); 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); register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x22]))) & 0xFFF; /* do acc operation */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; ram[0x22] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; ram[0x22] = register_A; /* store acc */ acc_a0 = register_A; cmp_old = register_B; register_B = (flag_C = (register_B + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ 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); ram[0x23] = register_A; /* store acc */ ram[register_I = (register_P << 4) + 0x2] = register_B; /* set I register and store B to ram */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; register_P = 0x5; /* set page register */ ram[register_I = 0x52] = register_A; /* store acc to RAM */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[0x52]))) & 0xFFF; set_watchdog(); ram[0x52] = register_A; /* store acc */ cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; cmp_new = 0xDED; cmp_old = flag_C = acc_a0 = register_A; register_A = SEX(register_A); /* make signed */ register_A = (((int)(((int)register_A) >> (int)((1)&31))) /* SAR */) & 0xFFF; ram[register_I = 0x55] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + ((cmp_new = ram[register_I]) ^ 0xFFF) + 1)) & 0xFFF; /* ones compliment */ ram[0x55] = register_A; /* store acc */ case 0x1ef8: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x20; register_A = flag_C = acc_a0 = 0x0020; register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = 0x020; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6a]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f48; if (cmp_new < cmp_old) {register_PC = 0x1f48; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0200; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6a]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f3e; if (cmp_new < cmp_old) {register_PC = 0x1f3e; continue;}; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6a]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f30; if (cmp_new < cmp_old) {register_PC = 0x1f30; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0600; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6a]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f21; if (cmp_new < cmp_old) {register_PC = 0x1f21; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x3c; register_A = flag_C = acc_a0 = 0x003c; register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = 0x03c; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x60) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x0f41; {register_PC = 0x1f41; continue;}; case 0x1f21: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x38; register_A = flag_C = acc_a0 = 0x0038; register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = 0x038; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x0f41; {register_PC = 0x1f41; continue;}; case 0x1f30: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x30; register_A = flag_C = acc_a0 = 0x0030; register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = 0x030; /* store acc to RAM */ register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_old = acc_a0 = register_A; /* back up regA */ register_A = (flag_C = (register_A + (((cmp_new = 0x80) ^ 0xFFF) + 1))) & 0xFFF; /* add */ register_J = 0x0f41; {register_PC = 0x1f41; continue;}; case 0x1f3e: register_P = 0x6; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x6a]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; case 0x1f41: cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_P = 0x2; /* set page register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2e]))) & 0xFFF; /* do acc operation */ ram[0x2e] = register_A; /* store acc */ case 0x1f48: register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x23]; /* set I register */ cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0f6c; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1f6c; continue;}; cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0f5f; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1f5f; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x23; register_A = flag_C = acc_a0 = 0x0023; ram[register_I = 0x24] = 0x023; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x2e]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0xc))) & 0xFFF; /* add values, save carry */ ram[0x2e] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0500; cmp_old = register_A; cmp_new = 0x39; register_A = flag_C = acc_a0 = 0x0539; register_J = 0x0f83; {register_PC = 0x1f83; continue;}; case 0x1f5f: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x17; register_A = flag_C = acc_a0 = 0x0017; ram[register_I = (register_P << 4) + 0x4] = 0x017; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x8))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0500; cmp_old = register_A; cmp_new = 0x03; register_A = flag_C = acc_a0 = 0x0503; register_J = 0x0f83; {register_PC = 0x1f83; continue;}; case 0x1f6c: cmp_new = 0x0BEB; cmp_old = acc_a0 = register_A; flag_C = (0x0BEB + register_A); register_A >>= 1; register_J = 0x0f7d; if ((acc_a0 & 0x01) != 0) {register_PC = 0x1f7d; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_old = register_A; cmp_new = 0x11; register_A = flag_C = acc_a0 = 0x0011; ram[register_I = (register_P << 4) + 0x4] = 0x011; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x4))) & 0xFFF; /* add values, save carry */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = register_A; cmp_new = 0xc7; register_A = flag_C = acc_a0 = 0x04c7; register_J = 0x0f83; {register_PC = 0x1f83; continue;}; case 0x1f7d: cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x7; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; ram[register_I = (register_P << 4) + 0x4] = 0x007; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0400; cmp_old = register_A; cmp_new = 0x81; register_A = flag_C = acc_a0 = 0x0481; case 0x1f83: register_P = 0x3; /* set page register */ ram[register_I = 0x30] = register_A; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x40] = register_A; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x50] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; register_P = 0x6; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x69]) ^ 0xFFF) + 1 + register_A); register_J = 0x0f99; if (cmp_new == cmp_old) {register_PC = 0x1f99; continue;}; cmp_old = register_A; cmp_new = 0x10; register_A = flag_C = acc_a0 = 0x0010; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x6a]) ^ 0xFFF) + 1 + register_A); if ((flag_C & CARRYBIT) == 0) {register_PC = 0x1f99; continue;}; cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = ram[register_I]; cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0xf))) & 0xFFF; /* add values, save carry */ register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = register_A; /* store acc to RAM */ case 0x1f99: register_P = 0x2; /* set page register */ cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = 0x2e]; /* set I register */ register_P = 0x3; /* set page register */ ram[register_I = 0x36] = register_A; /* store acc to RAM */ register_P = 0x4; /* set page register */ ram[register_I = 0x46] = register_A; /* store acc to RAM */ register_P = 0x5; /* set page register */ ram[register_I = 0x56] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0x0c00; cmp_old = register_A; cmp_new = 0x7e; register_A = flag_C = acc_a0 = 0x0c7e; register_P = 0x2; /* set page register */ ram[register_I = 0x2e] = 0xc7e; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x7; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x22]) ^ 0xFFF) + 1 + register_A); cmp_old = flag_C = acc_a0 = register_A; register_A &= (cmp_new = ram[register_I]); cmp_new = 0x0CEC; cmp_old = acc_a0 = register_A; flag_C = (0x0CEC + register_A); register_A = (register_A << 1) & 0x0FFF; register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = ram[register_I = 0x2e]))) & 0xFFF; /* do acc operation */ ram[0x2e] = register_A; /* store acc */ register_A = (flag_C = ((cmp_old = acc_a0 = register_A) + (cmp_new = 0x1))) & 0xFFF; /* add values, save carry */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I = (register_P << 4) + 0x5] = register_A; /* store acc to RAM */ flag_C = acc_a0 = register_A; cmp_old = register_B; register_B = cmp_new = ram[register_I]; cmp_old = flag_C = acc_a0 = register_A; /* store old acc */ register_A = cmp_new = ram[register_I = (register_P << 4) + 0x0e]; /* set I register */ cmp_old = register_A; register_A = cmp_new = rom[0x1000 | register_A]; /* new acc value */ ram[register_I] = register_A; /* store acc */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; 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); 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); 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); 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); cmp_old = acc_a0 = register_A; register_A = (flag_C = (register_A + (cmp_new = ram[register_I]))) & 0xFFF; set_watchdog(); ram[register_I = (register_P << 4) + 0x5] = register_A; /* store acc to RAM */ cmp_old = flag_C = acc_a0 = register_A; register_A = cmp_new = 0; cmp_new = 0x7; cmp_old = acc_a0 = register_A; register_A = flag_C = 0x0007; ram[register_I = (register_P << 4) + 0x0] = 0x007; /* store acc to RAM */ register_P = 0x1; /* set page register */ cmp_old = acc_a0 = register_A; /* backup old acc */ flag_C = (((cmp_new = ram[register_I = 0x1f]) ^ 0xFFF) + 1 + register_A); case 0x1fc5: /* load J reg from value at last dir addr */ register_J = ram[register_I]; if ((register_J & (~0xfff)) != 0) ERROR("Ram value must have been > 12 bits!\n"); register_P = 0x1; /* set page register */ register_PC = register_J + 0x0000; /* rom offset */ /* WARNING: UNKNOWN JUMP DESTINATION - MAY FOUL UP CODE OPTIMISATIONS */ {register_PC = (register_PC & 0xf000) | register_J; continue;}; default: return; } } }