Пример #1
0
def _write_z80(header, snapshot, fname):
    if len(header) == 30:
        header[12] |= 32
        ram = make_z80_ram_block(snapshot[16384:], 0)[3:] + [0, 237, 237, 0]
    else:
        ram = []
        for bank, data in ((5, snapshot[16384:32768]), (1, snapshot[32768:49152]), (2, snapshot[49152:])):
            ram += make_z80_ram_block(data, bank + 3)
    with open(fname, 'wb') as f:
        f.write(bytearray(header + ram))
Пример #2
0
def _write_z80(header, snapshot, fname):
    if len(header) == 30:
        header[12] |= 32
        ram = make_z80_ram_block(snapshot[16384:], 0)[3:] + [0, 237, 237, 0]
    else:
        ram = make_z80v3_ram_blocks(snapshot[16384:])
    with open(fname, 'wb') as f:
        f.write(bytearray(header + ram))
Пример #3
0
def _get_z80(ram, sp, pc, border):
    z80 = [0] * 86
    z80[30] = 54 # Indicate a v3 Z80 snapshot
    set_z80_registers(z80, 'i=63', 'iy=23610', 'sp={}'.format(sp), 'pc={}'.format(pc))
    set_z80_state(z80, 'iff=1', 'im=1', 'border={}'.format(border & 7))
    for bank, data in ((5, ram[:16384]), (1, ram[16384:32768]), (2, ram[32768:49152])):
        z80 += make_z80_ram_block(data, bank + 3)
    return z80
Пример #4
0
def _write_z80(header, snapshot, fname):
    if len(header) == 30:
        header[12] |= 32
        ram = make_z80_ram_block(snapshot[16384:], 0)[3:] + [0, 237, 237, 0]
    else:
        ram = make_z80v3_ram_blocks(snapshot[16384:])
    with open(fname, 'wb') as f:
        f.write(bytearray(header + ram))
Пример #5
0
def _get_z80(ram, options):
    z80 = [0] * 86
    z80[30] = 54 # Indicate a v3 Z80 snapshot
    set_z80_registers(z80, 'i=63', 'iy=23610')
    set_z80_registers(z80, *options.reg)
    set_z80_state(z80, 'iff=1', 'im=1')
    set_z80_state(z80, *options.state)
    for bank, data in ((5, ram[:16384]), (1, ram[16384:32768]), (2, ram[32768:49152])):
        z80 += make_z80_ram_block(data, bank + 3)
    return z80
Пример #6
0
 def test_block_ending_with_single_ED(self):
     data = [0, 237]
     exp_data = [2, 0, 0, 0, 237]
     self.assertEqual(exp_data, make_z80_ram_block(data, 0))
Пример #7
0
 def test_single_ED_followed_by_six_identical_values(self):
     data = [237, 2, 2, 2, 2, 2, 2]
     block = make_z80_ram_block(data, 0)
     exp_data = [6, 0, 0, 237, 2, 237, 237, 5, 2]
     self.assertEqual(exp_data, block)
Пример #8
0
 def test_single_ED_followed_by_five_identical_values(self):
     data = [237, 1, 1, 1, 1, 1]
     block = make_z80_ram_block(data, 0)
     exp_data = [len(data), 0, 0] + data
     self.assertEqual(exp_data, block)
Пример #9
0
 def test_block_ending_with_single_ED(self):
     data = [0, 237]
     exp_data = [2, 0, 0, 0, 237]
     self.assertEqual(exp_data, make_z80_ram_block(data, 0))
Пример #10
0
 def test_single_ED_followed_by_six_identical_values(self):
     data = [237, 2, 2, 2, 2, 2, 2]
     block = make_z80_ram_block(data, 0)
     exp_data = [6, 0, 0, 237, 2, 237, 237, 5, 2]
     self.assertEqual(exp_data, block)
Пример #11
0
 def test_single_ED_followed_by_five_identical_values(self):
     data = [237, 1, 1, 1, 1, 1]
     block = make_z80_ram_block(data, 0)
     exp_data = [len(data), 0, 0] + data
     self.assertEqual(exp_data, block)