diff options
author | 2010-03-17 08:22:06 +0000 | |
---|---|---|
committer | 2010-03-17 08:22:06 +0000 | |
commit | 9aa86db4c88346dce7000ca72692dd5210caecc7 (patch) | |
tree | 7557a710075b3260a8578da7d2dbcb1f950316cd /src/emu/cpu/tlcs90/tlcs90.c | |
parent | 20aeb1cfcd75c56c90c1427ca953484960f46444 (diff) |
tlcs90.c: added save states [Fabio Priuli]
ddenlovr.c, dynax.c: replaced memory_set_bankptr with memory_set_bankp and added save state support [Fabio Priuli]
side note: this and rev.8619 took definitely more time than I expected (especially to test as many drivers as possible), but there should be no regressions
/me crossing fingers
Diffstat (limited to 'src/emu/cpu/tlcs90/tlcs90.c')
-rw-r--r-- | src/emu/cpu/tlcs90/tlcs90.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/src/emu/cpu/tlcs90/tlcs90.c b/src/emu/cpu/tlcs90/tlcs90.c index 75055706631..b9bbbe05bf7 100644 --- a/src/emu/cpu/tlcs90/tlcs90.c +++ b/src/emu/cpu/tlcs90/tlcs90.c @@ -2636,12 +2636,58 @@ static WRITE8_HANDLER( t90_internal_registers_w ) cpustate->internal_registers[offset] = data; } +static void state_register( running_device *device ) +{ + t90_Regs *cpustate = get_safe_token(device); + + state_save_register_device_item(device, 0, cpustate->prvpc.w.l); + state_save_register_device_item(device, 0, cpustate->pc.w.l); + state_save_register_device_item(device, 0, cpustate->sp.w.l); + state_save_register_device_item(device, 0, cpustate->af.w.l); + state_save_register_device_item(device, 0, cpustate->bc.w.l); + state_save_register_device_item(device, 0, cpustate->de.w.l); + state_save_register_device_item(device, 0, cpustate->hl.w.l); + state_save_register_device_item(device, 0, cpustate->ix.w.l); + state_save_register_device_item(device, 0, cpustate->iy.w.l); + state_save_register_device_item(device, 0, cpustate->af2.w.l); + state_save_register_device_item(device, 0, cpustate->bc2.w.l); + state_save_register_device_item(device, 0, cpustate->de2.w.l); + state_save_register_device_item(device, 0, cpustate->hl2.w.l); + state_save_register_device_item(device, 0, cpustate->halt); + state_save_register_device_item(device, 0, cpustate->after_EI); + state_save_register_device_item(device, 0, cpustate->irq_state); + state_save_register_device_item(device, 0, cpustate->irq_mask); + state_save_register_device_item(device, 0, cpustate->icount); + state_save_register_device_item(device, 0, cpustate->extra_cycles); + + state_save_register_device_item_array(device, 0, cpustate->internal_registers); + state_save_register_device_item(device, 0, cpustate->ixbase); + state_save_register_device_item(device, 0, cpustate->iybase); + + state_save_register_device_item_array(device, 0, cpustate->timer_value); + state_save_register_device_item(device, 0, cpustate->timer4_value); + + // Work registers + state_save_register_device_item(device, 0, cpustate->op); + state_save_register_device_item(device, 0, cpustate->mode1); + state_save_register_device_item(device, 0, cpustate->r1); + state_save_register_device_item(device, 0, cpustate->r1b); + state_save_register_device_item(device, 0, cpustate->mode2); + state_save_register_device_item(device, 0, cpustate->r2); + state_save_register_device_item(device, 0, cpustate->r2b); + + state_save_register_device_item(device, 0, cpustate->cyc_t); + state_save_register_device_item(device, 0, cpustate->cyc_f); + state_save_register_device_item(device, 0, cpustate->addr); +} + + static CPU_INIT( t90 ) { t90_Regs *cpustate = get_safe_token(device); int i, p; -// state_save_register_device_item(device, 0, Z80.prvpc.w.l); + state_register(device); for (i = 0; i < 256; i++) { |