summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/tlcs90/tlcs90.c
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 08:22:06 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2010-03-17 08:22:06 +0000
commit9aa86db4c88346dce7000ca72692dd5210caecc7 (patch)
tree7557a710075b3260a8578da7d2dbcb1f950316cd /src/emu/cpu/tlcs90/tlcs90.c
parent20aeb1cfcd75c56c90c1427ca953484960f46444 (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.c48
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++)
{