def test_decimal_suite(compiled_decimal_test): cpu6502.init() for (index, byte) in enumerate(compiled_decimal_test): cpu6502.write(index, byte) cpu6502.set_pc(0x0200) cpu6502.run_until_break() time.sleep(1) while cpu6502.is_running(): time.sleep(1) assert 0x00 == cpu6502.read(0x000B)
def test_functional_suite(compiled_functional_test): cpu6502.init() for (index, byte) in enumerate(compiled_functional_test): cpu6502.write(index, byte) cpu6502.set_pc(0x0400) cpu6502.run_until_break() time.sleep(1) while cpu6502.is_running(): time.sleep(1) assert 13417 == cpu6502.get_pc()
def lvdc_main_loop(): cpu6502.init() with open(sys.argv[1], 'rb') as f: data = f.read() for (index, byte) in enumerate(data): cpu6502.write(0x4000 + index, byte) cpu6502.set_pc(0x4000) gtk_interface()
def simulation_thread(): global x, y, vx, vy, dt, g, a, fuel, cmd while True: cpu6502.write(0xE002, int(fuel[0] * 0xFF)) cpu6502.write(0xE003, int(fuel[1] * 0xFF)) cpu6502.write(0xE004, int(fuel[2] * 0xFF)) time.sleep(0.1) cmd = cpu6502.read(0xE010) burn_speed = cmd / 255 a = burn_speed * 10 fuel[0] = max(fuel[0] - burn_speed * 0.001, 0) if fuel[0] == 0: a = 0 vy = vy + (a - g) * dt y = y + vy * dt if y < 0: y = 0 vy = 0
def test_can_read_and_write(): cpu6502.write(0x0013, 0x99) assert 0x99 == cpu6502.read(0x0013)
def test_raises_on_write_range_error(): with pytest.raises(ValueError): cpu6502.write(0x10000, 0x00) with pytest.raises(ValueError): cpu6502.write(0x0010, 0xFF + 1)
import cpu6502 import time with open('fib.bin', 'rb') as f: data = f.read() cpu6502.init() for (index, byte) in enumerate(data): cpu6502.write(0x4000 + index, byte) cpu6502.set_pc(0x4000) cpu6502.run_until_break() time.sleep(0.1) while cpu6502.is_running(): time.sleep(0.1) print("There are the last two fibonacci numbers computed:") for i in range(0, 256): if i % 32 == 0: print() print('{:02x}'.format(cpu6502.read(0x1000 + i)), end='') print() for i in range(0, 256): if i % 32 == 0: print() print('{:02x}'.format(cpu6502.read(0x2000 + i)), end='') print()