static CPU_SET_INFO( m4510 ) { m4510_Regs *cpustate = get_safe_token(device); switch (state) { /* --- the following bits of info are set as 64-bit signed integers --- */ case CPUINFO_INT_INPUT_STATE + M4510_IRQ_LINE: m4510_set_irq_line(cpustate, M4510_IRQ_LINE, info->i); break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: m4510_set_irq_line(cpustate, INPUT_LINE_NMI, info->i); break; case CPUINFO_INT_PC: PCW = info->i; break; case CPUINFO_INT_REGISTER + M4510_PC: cpustate->pc.w.l = info->i; break; case CPUINFO_INT_SP: SPL = info->i; break; case CPUINFO_INT_REGISTER + M4510_S: cpustate->sp.b.l = info->i; break; case CPUINFO_INT_REGISTER + M4510_P: cpustate->p = info->i; break; case CPUINFO_INT_REGISTER + M4510_A: cpustate->a = info->i; break; case CPUINFO_INT_REGISTER + M4510_X: cpustate->x = info->i; break; case CPUINFO_INT_REGISTER + M4510_Y: cpustate->y = info->i; break; case CPUINFO_INT_REGISTER + M4510_Z: cpustate->z = info->i; break; case CPUINFO_INT_REGISTER + M4510_B: cpustate->zp.b.h = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM_LOW: cpustate->low = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM_HIGH: cpustate->high = info->i; break; case CPUINFO_INT_REGISTER + M4510_EA: cpustate->ea.w.l = info->i; break; case CPUINFO_INT_REGISTER + M4510_ZP: cpustate->zp.w.l = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM0: cpustate->mem[0] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM1: cpustate->mem[1] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM2: cpustate->mem[2] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM3: cpustate->mem[3] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM4: cpustate->mem[4] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM5: cpustate->mem[5] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM6: cpustate->mem[6] = info->i; break; case CPUINFO_INT_REGISTER + M4510_MEM7: cpustate->mem[7] = info->i; break; } }
void m4510_set_reg (int regnum, unsigned val) { switch( regnum ) { case M4510_PC: m4510.pc.w.l = val; break; case M4510_S: m4510.sp.w.l = val; break; case M4510_P: m4510.p = val; break; case M4510_MEM_LOW: m4510.low = val; // change the memory registers break; case M4510_MEM_HIGH: m4510.high = val; // change the memory registers break; case M4510_A: m4510.a = val; break; case M4510_X: m4510.x = val; break; case M4510_Y: m4510.y = val; break; case M4510_Z: m4510.z = val; break; case M4510_B: m4510.zp.b.h = val; break; case M4510_EA: m4510.ea.w.l = val; break; case M4510_ZP: m4510.zp.b.l = val; break; case M4510_NMI_STATE: m4510_set_nmi_line( val ); break; case M4510_IRQ_STATE: m4510_set_irq_line( 0, val ); break; default: if( regnum <= REG_SP_CONTENTS ) { unsigned offset = S + 2 * (REG_SP_CONTENTS - regnum); if( offset < 0x1ff ) { WRMEM( offset, val & 0xfff ); WRMEM( offset + 1, (val >> 8) & 0xff ); } }