void deco16_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = deco16_set_info; break; case CPUINFO_PTR_INIT: info->init = deco16_init; break; case CPUINFO_PTR_RESET: info->reset = deco16_reset; break; case CPUINFO_PTR_EXECUTE: info->execute = deco16_execute; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = deco16_reg_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "DECO CPU16"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "DECO"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "0.1"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 1998 Juergen Buchmueller\nCopyright (c) 2001-2003 Bryan McPhail\nall rights reserved."); break; default: m6502_get_info(state, info); break; } }
void hd63705_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_INPUT_STATE + HD63705_INT_IRQ1: info->i = m6805.irq_state[HD63705_INT_IRQ1]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_IRQ2: info->i = m6805.irq_state[HD63705_INT_IRQ2]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_TIMER1: info->i = m6805.irq_state[HD63705_INT_TIMER1]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_TIMER2: info->i = m6805.irq_state[HD63705_INT_TIMER2]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_TIMER3: info->i = m6805.irq_state[HD63705_INT_TIMER3]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_PCI: info->i = m6805.irq_state[HD63705_INT_PCI]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_SCI: info->i = m6805.irq_state[HD63705_INT_SCI]; break; case CPUINFO_INT_INPUT_STATE + HD63705_INT_ADCONV: info->i = m6805.irq_state[HD63705_INT_ADCONV]; break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = m6805.irq_state[HD63705_INT_NMI]; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = hd63705_set_info; break; case CPUINFO_PTR_INIT: info->init = hd63705_init; break; case CPUINFO_PTR_RESET: info->reset = hd63705_reset; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "HD63705"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0"); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Keith Wilkins, Juergen Buchmueller"); break; default: m6805_get_info(state, info); break; } }
const char *cputype_get_info_string(int cputype, UINT32 state) { cpuinfo info; VERIFY_CPUTYPE(cputype_get_info_string); info.s = cpuintrf_temp_str(); (*cpuintrf[cputype].get_info)(state, &info); return info.s; }
const char *activecpu_get_info_string(UINT32 state) { cpuinfo info; VERIFY_ACTIVECPU(activecpu_get_info_string); info.s = cpuintrf_temp_str(); (*cpu[activecpu].intf.get_info)(state, &info); return info.s; }
void m65sc02_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_INIT: info->init = m65sc02_init; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M65SC02"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Metal Oxid Semiconductor MOS 6502"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0beta"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 1998 Juergen Buchmueller\nCopyright (c) 2000 Peter Trauner\nall rights reserved."); break; default: m65c02_get_info(state, info); break; } }
const char *cpunum_get_info_string(int cpunum, UINT32 state) { cpuinfo info; VERIFY_CPUNUM(cpunum_get_info_string); cpuintrf_push_context(cpunum); info.s = cpuintrf_temp_str(); (*cpu[cpunum].intf.get_info)(state, &info); cpuintrf_pop_context(); return info.s; }
void n2a03_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_INIT: info->init = n2a03_init; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = n2a03_reg_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "N2A03"); break; default: m6502_get_info(state, info); break; } }
void dummy_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(dummy_state); break; case CPUINFO_INT_INPUT_LINES: info->i = 1; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 1; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + 0: info->i = 0; break; case CPUINFO_INT_PREVIOUSPC: info->i = 0; break; case CPUINFO_INT_PC: info->i = 0; break; case CPUINFO_INT_SP: info->i = 0; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = dummy_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = dummy_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = dummy_set_context; break; case CPUINFO_PTR_INIT: info->init = dummy_init; break; case CPUINFO_PTR_RESET: info->reset = dummy_reset; break; case CPUINFO_PTR_EXIT: info->exit = dummy_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = dummy_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = dummy_dasm; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &dummy_icount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = NULL; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = default_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), ""); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "no CPU"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "0.0"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "The MAME team"); break; case CPUINFO_STR_FLAGS: strcpy(info->s = cpuintrf_temp_str(), "--"); break; } }
void m8502_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_INIT: info->init = m6510_init; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6510_dasm; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = m6510_reg_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M8502"); break; default: m6502_get_info(state, info); break; } }
void m65c02_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = m65c02_set_info; break; case CPUINFO_PTR_INIT: info->init = m65c02_init; break; case CPUINFO_PTR_RESET: info->reset = m65c02_reset; break; case CPUINFO_PTR_EXECUTE: info->execute = m65c02_execute; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = m65c02_reg_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M65C02"); break; default: m6502_get_info(state, info); break; } }
void m68705_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_INPUT_STATE + M68705_INT_TIMER: info->i = m6805.irq_state[M68705_INT_TIMER]; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = m68705_set_info; break; case CPUINFO_PTR_INIT: info->init = m68705_init; break; case CPUINFO_PTR_RESET: info->reset = m68705_reset; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M68705"); break; default: m6805_get_info(state, info); break; } }
void m6502_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(m6502); break; case CPUINFO_INT_INPUT_LINES: info->i = 2; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 3; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 10; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + M6502_IRQ_LINE: info->i = m6502.irq_state; break; case CPUINFO_INT_INPUT_STATE + M6502_SET_OVERFLOW:info->i = m6502.so_state; break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = m6502.nmi_state; break; case CPUINFO_INT_PREVIOUSPC: info->i = m6502.ppc.w.l; break; case CPUINFO_INT_PC: info->i = PCD; break; case CPUINFO_INT_REGISTER + M6502_PC: info->i = m6502.pc.w.l; break; case CPUINFO_INT_SP: info->i = S; break; case CPUINFO_INT_REGISTER + M6502_S: info->i = m6502.sp.b.l; break; case CPUINFO_INT_REGISTER + M6502_P: info->i = m6502.p; break; case CPUINFO_INT_REGISTER + M6502_A: info->i = m6502.a; break; case CPUINFO_INT_REGISTER + M6502_X: info->i = m6502.x; break; case CPUINFO_INT_REGISTER + M6502_Y: info->i = m6502.y; break; case CPUINFO_INT_REGISTER + M6502_EA: info->i = m6502.ea.w.l; break; case CPUINFO_INT_REGISTER + M6502_ZP: info->i = m6502.zp.w.l; break; case CPUINFO_INT_REGISTER + M6502_SUBTYPE: info->i = m6502.subtype; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = m6502_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = m6502_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = m6502_set_context; break; case CPUINFO_PTR_INIT: info->init = m6502_init; break; case CPUINFO_PTR_RESET: info->reset = m6502_reset; break; case CPUINFO_PTR_EXIT: info->exit = m6502_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = m6502_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6502_dasm; break; case CPUINFO_PTR_IRQ_CALLBACK: info->irqcallback = m6502.irq_callback; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m6502_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = m6502_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = m6502_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M6502"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Mostek 6502"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.2"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 1998 Juergen Buchmueller, all rights reserved."); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", m6502.p & 0x80 ? 'N':'.', m6502.p & 0x40 ? 'V':'.', m6502.p & 0x20 ? 'R':'.', m6502.p & 0x10 ? 'B':'.', m6502.p & 0x08 ? 'D':'.', m6502.p & 0x04 ? 'I':'.', m6502.p & 0x02 ? 'Z':'.', m6502.p & 0x01 ? 'C':'.'); break; case CPUINFO_STR_REGISTER + M6502_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", m6502.pc.w.l); break; case CPUINFO_STR_REGISTER + M6502_S: sprintf(info->s = cpuintrf_temp_str(), "S:%02X", m6502.sp.b.l); break; case CPUINFO_STR_REGISTER + M6502_P: sprintf(info->s = cpuintrf_temp_str(), "P:%02X", m6502.p); break; case CPUINFO_STR_REGISTER + M6502_A: sprintf(info->s = cpuintrf_temp_str(), "A:%02X", m6502.a); break; case CPUINFO_STR_REGISTER + M6502_X: sprintf(info->s = cpuintrf_temp_str(), "X:%02X", m6502.x); break; case CPUINFO_STR_REGISTER + M6502_Y: sprintf(info->s = cpuintrf_temp_str(), "Y:%02X", m6502.y); break; case CPUINFO_STR_REGISTER + M6502_EA: sprintf(info->s = cpuintrf_temp_str(), "EA:%04X", m6502.ea.w.l); break; case CPUINFO_STR_REGISTER + M6502_ZP: sprintf(info->s = cpuintrf_temp_str(), "ZP:%03X", m6502.zp.w.l); break; } }
void sm8500_get_info( UINT32 state, cpuinfo *info ) { switch(state) { case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(sm8500_regs); break; case CPUINFO_INT_INPUT_LINES: info->i = 8; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0xff; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_BE; break; case CPUINFO_INT_CLOCK_MULTIPLIER: info->i = 1; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 5; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 16; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + 0: case CPUINFO_INT_INPUT_STATE + 1: case CPUINFO_INT_INPUT_STATE + 2: case CPUINFO_INT_INPUT_STATE + 3: case CPUINFO_INT_INPUT_STATE + 4: case CPUINFO_INT_INPUT_STATE + 5: case CPUINFO_INT_INPUT_STATE + 6: case CPUINFO_INT_INPUT_STATE + 7: info->i = regs.IFLAGS & ( 1 << (state - CPUINFO_INT_INPUT_STATE)); break; case CPUINFO_INT_REGISTER + SM8500_RR0: case CPUINFO_INT_REGISTER + SM8500_RR2: case CPUINFO_INT_REGISTER + SM8500_RR4: case CPUINFO_INT_REGISTER + SM8500_RR6: case CPUINFO_INT_REGISTER + SM8500_RR8: case CPUINFO_INT_REGISTER + SM8500_RR10: case CPUINFO_INT_REGISTER + SM8500_RR12: case CPUINFO_INT_REGISTER + SM8500_RR14: case CPUINFO_INT_REGISTER + SM8500_PC: case CPUINFO_INT_REGISTER + SM8500_SP: case CPUINFO_INT_REGISTER + SM8500_PS: case CPUINFO_INT_REGISTER + SM8500_SYS16: case CPUINFO_INT_REGISTER + SM8500_SYS: case CPUINFO_INT_REGISTER + SM8500_IE0: case CPUINFO_INT_REGISTER + SM8500_IE1: case CPUINFO_INT_REGISTER + SM8500_IR0: case CPUINFO_INT_REGISTER + SM8500_IR1: case CPUINFO_INT_REGISTER + SM8500_P0: case CPUINFO_INT_REGISTER + SM8500_P1: case CPUINFO_INT_REGISTER + SM8500_P2: case CPUINFO_INT_REGISTER + SM8500_P3: case CPUINFO_INT_REGISTER + SM8500_CKC: case CPUINFO_INT_REGISTER + SM8500_SPH: case CPUINFO_INT_REGISTER + SM8500_SPL: case CPUINFO_INT_REGISTER + SM8500_PS0: case CPUINFO_INT_REGISTER + SM8500_PS1: case CPUINFO_INT_REGISTER + SM8500_P0C: case CPUINFO_INT_REGISTER + SM8500_P1C: case CPUINFO_INT_REGISTER + SM8500_P2C: case CPUINFO_INT_REGISTER + SM8500_P3C: info->i = sm8500_get_reg( state - CPUINFO_INT_REGISTER ); break; case CPUINFO_INT_REGISTER + REG_PC: info->i = sm8500_get_reg( SM8500_PC ); break; case CPUINFO_INT_REGISTER + REG_SP: info->i = sm8500_get_reg( SM8500_SP ); break; case CPUINFO_INT_PREVIOUSPC: info->i = 0x0000; break; case CPUINFO_PTR_SET_INFO: info->setinfo = sm8500_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = sm8500_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = sm8500_set_context; break; case CPUINFO_PTR_INIT: info->init = sm8500_init; break; case CPUINFO_PTR_RESET: info->reset = sm8500_reset; break; case CPUINFO_PTR_EXIT: info->exit = sm8500_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = sm8500_execute; break; case CPUINFO_PTR_BURN: info->burn = sm8500_burn; break; #ifdef ENABLE_DEBUGGER case CPUINFO_PTR_DISASSEMBLE: info->disassemble = sm8500_dasm; break; #endif case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &sm8500_icount; break; case CPUINFO_STR_NAME: strcpy( info->s = cpuintrf_temp_str(), "sm8500" ); break; case CPUINFO_STR_CORE_FAMILY: strcpy( info->s = cpuintrf_temp_str(), "Sharp SM8500" ); break; case CPUINFO_STR_CORE_VERSION: strcpy( info->s = cpuintrf_temp_str(), "0.1" ); break; case CPUINFO_STR_CORE_FILE: strcpy( info->s = cpuintrf_temp_str(), __FILE__ ); break; case CPUINFO_STR_CORE_CREDITS: strcpy( info->s = cpuintrf_temp_str(), "Copyright The MESS Team." ); break; case CPUINFO_STR_FLAGS: sprintf( info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", regs.PS1 & FLAG_C ? 'C' : '.', regs.PS1 & FLAG_Z ? 'Z' : '.', regs.PS1 & FLAG_S ? 'S' : '.', regs.PS1 & FLAG_V ? 'V' : '.', regs.PS1 & FLAG_D ? 'D' : '.', regs.PS1 & FLAG_H ? 'H' : '.', regs.PS1 & FLAG_B ? 'B' : '.', regs.PS1 & FLAG_I ? 'I' : '.' ); break; case CPUINFO_STR_REGISTER + SM8500_RR0: sprintf(info->s = cpuintrf_temp_str(), "RR0:%04X", sm85cpu_mem_readword( 0x00 ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR2: sprintf(info->s = cpuintrf_temp_str(), "RR2:%04X", sm85cpu_mem_readword( 0x02 ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR4: sprintf(info->s = cpuintrf_temp_str(), "RR4:%04X", sm85cpu_mem_readword( 0x04 ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR6: sprintf(info->s = cpuintrf_temp_str(), "RR6:%04X", sm85cpu_mem_readword( 0x06 ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR8: sprintf(info->s = cpuintrf_temp_str(), "RR8:%04X", sm85cpu_mem_readword( 0x08 ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR10: sprintf(info->s = cpuintrf_temp_str(), "RR10:%04X", sm85cpu_mem_readword( 0x0A ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR12: sprintf(info->s = cpuintrf_temp_str(), "RR12:%04X", sm85cpu_mem_readword( 0x0C ) ); break; case CPUINFO_STR_REGISTER + SM8500_RR14: sprintf(info->s = cpuintrf_temp_str(), "RR14:%04X", sm85cpu_mem_readword( 0x0E ) ); break; case CPUINFO_STR_REGISTER + SM8500_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", regs.PC); break; case CPUINFO_STR_REGISTER + SM8500_SP: sprintf(info->s = cpuintrf_temp_str(), "SP:%04X", regs.SP); break; case CPUINFO_STR_REGISTER + SM8500_PS: sprintf(info->s = cpuintrf_temp_str(), "PS:%04X", ( regs.PS0 << 8 ) | regs.PS1 ); break; case CPUINFO_STR_REGISTER + SM8500_SYS16: sprintf(info->s = cpuintrf_temp_str(), "SYS:%04X", regs.SYS ); break; } }
void h6280_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(h6280); break; case CPUINFO_INT_INPUT_LINES: info->i = 3; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 3; break; case CPUINFO_INT_MIN_CYCLES: info->i = 2; break; case CPUINFO_INT_MAX_CYCLES: info->i = 17 + 6*65536; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 21; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 2; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + 0: info->i = h6280.irq_state[0]; break; case CPUINFO_INT_INPUT_STATE + 1: info->i = h6280.irq_state[1]; break; case CPUINFO_INT_INPUT_STATE + 2: info->i = h6280.irq_state[2]; break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = h6280.nmi_state; break; case CPUINFO_INT_PREVIOUSPC: info->i = h6280.ppc.d; break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + H6280_PC: info->i = PCD; break; case CPUINFO_INT_SP: case CPUINFO_INT_REGISTER + H6280_S: info->i = S; break; case CPUINFO_INT_REGISTER + H6280_P: info->i = P; break; case CPUINFO_INT_REGISTER + H6280_A: info->i = A; break; case CPUINFO_INT_REGISTER + H6280_X: info->i = X; break; case CPUINFO_INT_REGISTER + H6280_Y: info->i = Y; break; case CPUINFO_INT_REGISTER + H6280_IRQ_MASK: info->i = h6280.irq_mask; break; case CPUINFO_INT_REGISTER + H6280_TIMER_STATE: info->i = h6280.timer_status; break; case CPUINFO_INT_REGISTER + H6280_NMI_STATE: info->i = h6280.nmi_state; break; case CPUINFO_INT_REGISTER + H6280_IRQ1_STATE: info->i = h6280.irq_state[0]; break; case CPUINFO_INT_REGISTER + H6280_IRQ2_STATE: info->i = h6280.irq_state[1]; break; case CPUINFO_INT_REGISTER + H6280_IRQT_STATE: info->i = h6280.irq_state[2]; break; #ifdef MAME_DEBUG case CPUINFO_INT_REGISTER + H6280_M1: info->i = h6280.mmr[0]; break; case CPUINFO_INT_REGISTER + H6280_M2: info->i = h6280.mmr[1]; break; case CPUINFO_INT_REGISTER + H6280_M3: info->i = h6280.mmr[2]; break; case CPUINFO_INT_REGISTER + H6280_M4: info->i = h6280.mmr[3]; break; case CPUINFO_INT_REGISTER + H6280_M5: info->i = h6280.mmr[4]; break; case CPUINFO_INT_REGISTER + H6280_M6: info->i = h6280.mmr[5]; break; case CPUINFO_INT_REGISTER + H6280_M7: info->i = h6280.mmr[6]; break; case CPUINFO_INT_REGISTER + H6280_M8: info->i = h6280.mmr[7]; break; #endif /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = h6280_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = h6280_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = h6280_set_context; break; case CPUINFO_PTR_INIT: info->init = h6280_init; break; case CPUINFO_PTR_RESET: info->reset = h6280_reset; break; case CPUINFO_PTR_EXIT: info->exit = h6280_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = h6280_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = h6280_dasm; break; case CPUINFO_PTR_IRQ_CALLBACK: info->irqcallback = h6280.irq_callback; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &h6280_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "HuC6280"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Hudsonsoft 6280"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.07"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 1999, 2000 Bryan McPhail, [email protected]"); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", h6280.p & 0x80 ? 'N':'.', h6280.p & 0x40 ? 'V':'.', h6280.p & 0x20 ? 'R':'.', h6280.p & 0x10 ? 'B':'.', h6280.p & 0x08 ? 'D':'.', h6280.p & 0x04 ? 'I':'.', h6280.p & 0x02 ? 'Z':'.', h6280.p & 0x01 ? 'C':'.'); break; case CPUINFO_STR_REGISTER + H6280_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", h6280.pc.d); break; case CPUINFO_STR_REGISTER + H6280_S: sprintf(info->s = cpuintrf_temp_str(), "S:%02X", h6280.sp.b.l); break; case CPUINFO_STR_REGISTER + H6280_P: sprintf(info->s = cpuintrf_temp_str(), "P:%02X", h6280.p); break; case CPUINFO_STR_REGISTER + H6280_A: sprintf(info->s = cpuintrf_temp_str(), "A:%02X", h6280.a); break; case CPUINFO_STR_REGISTER + H6280_X: sprintf(info->s = cpuintrf_temp_str(), "X:%02X", h6280.x); break; case CPUINFO_STR_REGISTER + H6280_Y: sprintf(info->s = cpuintrf_temp_str(), "Y:%02X", h6280.y); break; case CPUINFO_STR_REGISTER + H6280_IRQ_MASK: sprintf(info->s = cpuintrf_temp_str(), "IM:%02X", h6280.irq_mask); break; case CPUINFO_STR_REGISTER + H6280_TIMER_STATE: sprintf(info->s = cpuintrf_temp_str(), "TMR:%02X", h6280.timer_status); break; case CPUINFO_STR_REGISTER + H6280_NMI_STATE: sprintf(info->s = cpuintrf_temp_str(), "NMI:%X", h6280.nmi_state); break; case CPUINFO_STR_REGISTER + H6280_IRQ1_STATE: sprintf(info->s = cpuintrf_temp_str(), "IRQ1:%X", h6280.irq_state[0]); break; case CPUINFO_STR_REGISTER + H6280_IRQ2_STATE: sprintf(info->s = cpuintrf_temp_str(), "IRQ2:%X", h6280.irq_state[1]); break; case CPUINFO_STR_REGISTER + H6280_IRQT_STATE: sprintf(info->s = cpuintrf_temp_str(), "IRQT:%X", h6280.irq_state[2]); break; #ifdef MAME_DEBUG case CPUINFO_STR_REGISTER + H6280_M1: sprintf(info->s = cpuintrf_temp_str(), "M1:%02X", h6280.mmr[0]); break; case CPUINFO_STR_REGISTER + H6280_M2: sprintf(info->s = cpuintrf_temp_str(), "M2:%02X", h6280.mmr[1]); break; case CPUINFO_STR_REGISTER + H6280_M3: sprintf(info->s = cpuintrf_temp_str(), "M3:%02X", h6280.mmr[2]); break; case CPUINFO_STR_REGISTER + H6280_M4: sprintf(info->s = cpuintrf_temp_str(), "M4:%02X", h6280.mmr[3]); break; case CPUINFO_STR_REGISTER + H6280_M5: sprintf(info->s = cpuintrf_temp_str(), "M5:%02X", h6280.mmr[4]); break; case CPUINFO_STR_REGISTER + H6280_M6: sprintf(info->s = cpuintrf_temp_str(), "M6:%02X", h6280.mmr[5]); break; case CPUINFO_STR_REGISTER + H6280_M7: sprintf(info->s = cpuintrf_temp_str(), "M7:%02X", h6280.mmr[6]); break; case CPUINFO_STR_REGISTER + H6280_M8: sprintf(info->s = cpuintrf_temp_str(), "M8:%02X", h6280.mmr[7]); break; #endif } }
void dsp56k_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(dsp56k); break; case CPUINFO_INT_INPUT_LINES: info->i = 4; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 2; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; /* ? */ case CPUINFO_INT_MAX_CYCLES: info->i = 8; break; /* ? */ case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = -1; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 16; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = -1; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; /* I think this is the ffc0-fff0 part of data memory? */ case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; /* */ case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; /* */ case CPUINFO_INT_INPUT_STATE + DSP56K_IRQ_MODA: info->i = LINE_MODA; break; case CPUINFO_INT_INPUT_STATE + DSP56K_IRQ_MODB: info->i = LINE_MODB; break; case CPUINFO_INT_INPUT_STATE + DSP56K_IRQ_MODC: info->i = LINE_MODC; break; case CPUINFO_INT_INPUT_STATE + DSP56K_IRQ_RESET: info->i = LINE_RESET; break; /* Is reset a special case? */ case CPUINFO_INT_PREVIOUSPC: info->i = dsp56k.ppc; break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + DSP56K_PC: info->i = PC; break; case CPUINFO_INT_REGISTER + DSP56K_SR: info->i = SR; break; case CPUINFO_INT_REGISTER + DSP56K_LC: info->i = LC; break; case CPUINFO_INT_REGISTER + DSP56K_LA: info->i = LA; break; case CPUINFO_INT_SP: /* !!! I think this is correct !!! */ case CPUINFO_INT_REGISTER + DSP56K_SP: info->i = SP; break; case CPUINFO_INT_REGISTER + DSP56K_OMR: info->i = OMR; break; case CPUINFO_INT_REGISTER + DSP56K_X: info->i = X; break; case CPUINFO_INT_REGISTER + DSP56K_Y: info->i = Y; break; case CPUINFO_INT_REGISTER + DSP56K_A: info->i = A; break; case CPUINFO_INT_REGISTER + DSP56K_B: info->i = B; break; case CPUINFO_INT_REGISTER + DSP56K_R0: info->i = R0; break; case CPUINFO_INT_REGISTER + DSP56K_R1: info->i = R1; break; case CPUINFO_INT_REGISTER + DSP56K_R2: info->i = R2; break; case CPUINFO_INT_REGISTER + DSP56K_R3: info->i = R3; break; case CPUINFO_INT_REGISTER + DSP56K_N0: info->i = N0; break; case CPUINFO_INT_REGISTER + DSP56K_N1: info->i = N1; break; case CPUINFO_INT_REGISTER + DSP56K_N2: info->i = N2; break; case CPUINFO_INT_REGISTER + DSP56K_N3: info->i = N3; break; case CPUINFO_INT_REGISTER + DSP56K_M0: info->i = M0; break; case CPUINFO_INT_REGISTER + DSP56K_M1: info->i = M1; break; case CPUINFO_INT_REGISTER + DSP56K_M2: info->i = M2; break; case CPUINFO_INT_REGISTER + DSP56K_M3: info->i = M3; break; case CPUINFO_INT_REGISTER + DSP56K_TEMP: info->i = TEMP; break; case CPUINFO_INT_REGISTER + DSP56K_STATUS: info->i = STATUS; break; /* The CPU stack */ case CPUINFO_INT_REGISTER + DSP56K_ST0: info->i = ST0 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST1: info->i = ST1 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST2: info->i = ST2 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST3: info->i = ST3 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST4: info->i = ST4 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST5: info->i = ST5 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST6: info->i = ST6 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST7: info->i = ST7 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST8: info->i = ST8 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST9: info->i = ST9 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST10: info->i = ST10 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST11: info->i = ST11 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST12: info->i = ST12 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST13: info->i = ST13 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST14: info->i = ST14 ; break ; case CPUINFO_INT_REGISTER + DSP56K_ST15: info->i = ST15 ; break ; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = dsp56k_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = dsp56k_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = dsp56k_set_context; break; case CPUINFO_PTR_INIT: info->init = dsp56k_init; break; case CPUINFO_PTR_RESET: info->reset = dsp56k_reset; break; case CPUINFO_PTR_EXIT: info->exit = dsp56k_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = dsp56k_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = dsp56k_dasm; break; case CPUINFO_PTR_IRQ_CALLBACK: break ; /* not implemented */ case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &dsp56k_icount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = dsp56k_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = dsp56k_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "DSP56156"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Motorola DSP56156"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "0.1"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Andrew Gardner"); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%s%s%s%s%s%s%s%s%s%s%s%s%s%s %s%s %s%s%s%s%s%s%s", lfFLAG ? "L":".", fvFLAG ? "F":".", s1FLAG ? "S":".", s0FLAG ? "S":".", i1FLAG ? "I":".", i0FLAG ? "I":".", sFLAG ? "S":".", lFLAG ? "L":".", eFLAG ? "E":".", uFLAG ? "U":".", nFLAG ? "N":".", zFLAG ? "Z":".", vFLAG ? "V":".", cFLAG ? "C":".", ufFLAG ? "U":".", seFLAG ? "S":".", cdFLAG ? "C":".", sdFLAG ? "S":".", rFLAG ? "R":".", saFLAG ? "S":".", mcFLAG ? "M":".", mbFLAG ? "M":".", maFLAG ? "M":"."); break; case CPUINFO_STR_REGISTER + DSP56K_PC: sprintf(info->s = cpuintrf_temp_str(), "PC : %04x", PC); break; case CPUINFO_STR_REGISTER + DSP56K_SR: sprintf(info->s = cpuintrf_temp_str(), "SR : %04x", SR); break; case CPUINFO_STR_REGISTER + DSP56K_LC: sprintf(info->s = cpuintrf_temp_str(), "LC : %04x", LC); break; case CPUINFO_STR_REGISTER + DSP56K_LA: sprintf(info->s = cpuintrf_temp_str(), "LA : %04x", LA); break; case CPUINFO_STR_REGISTER + DSP56K_SP: sprintf(info->s = cpuintrf_temp_str(), "SP : %02x", SP); break; case CPUINFO_STR_REGISTER + DSP56K_OMR: sprintf(info->s = cpuintrf_temp_str(), "OMR: %02x", OMR); break; case CPUINFO_STR_REGISTER + DSP56K_X: sprintf(info->s = cpuintrf_temp_str(), "X : %04x %04x", X1, X0); break; case CPUINFO_STR_REGISTER + DSP56K_Y: sprintf(info->s = cpuintrf_temp_str(), "Y : %04x %04x", Y1, Y0); break; /* !! This is silly - it gives me a warning if I try to print an unsigned long with %08x */ /* (and thus won't compile) - any suggestions? Maybe we change it to a series of UINT16's or something? */ case CPUINFO_STR_REGISTER + DSP56K_A: sprintf(info->s = cpuintrf_temp_str(), "A : %02x %04x %04x", A2,A1,A0); break; case CPUINFO_STR_REGISTER + DSP56K_B: sprintf(info->s = cpuintrf_temp_str(), "B : %02x %04x %04x", B2,B1,B0); break; case CPUINFO_STR_REGISTER + DSP56K_R0: sprintf(info->s = cpuintrf_temp_str(), "R0 : %04x", R0); break; case CPUINFO_STR_REGISTER + DSP56K_R1: sprintf(info->s = cpuintrf_temp_str(), "R1 : %04x", R1); break; case CPUINFO_STR_REGISTER + DSP56K_R2: sprintf(info->s = cpuintrf_temp_str(), "R2 : %04x", R2); break; case CPUINFO_STR_REGISTER + DSP56K_R3: sprintf(info->s = cpuintrf_temp_str(), "R3 : %04x", R3); break; case CPUINFO_STR_REGISTER + DSP56K_N0: sprintf(info->s = cpuintrf_temp_str(), "N0 : %04x", N0); break; case CPUINFO_STR_REGISTER + DSP56K_N1: sprintf(info->s = cpuintrf_temp_str(), "N1 : %04x", N1); break; case CPUINFO_STR_REGISTER + DSP56K_N2: sprintf(info->s = cpuintrf_temp_str(), "N2 : %04x", N2); break; case CPUINFO_STR_REGISTER + DSP56K_N3: sprintf(info->s = cpuintrf_temp_str(), "N3 : %04x", N3); break; case CPUINFO_STR_REGISTER + DSP56K_M0: sprintf(info->s = cpuintrf_temp_str(), "M0 : %04x", M0); break; case CPUINFO_STR_REGISTER + DSP56K_M1: sprintf(info->s = cpuintrf_temp_str(), "M1 : %04x", M1); break; case CPUINFO_STR_REGISTER + DSP56K_M2: sprintf(info->s = cpuintrf_temp_str(), "M2 : %04x", M2); break; case CPUINFO_STR_REGISTER + DSP56K_M3: sprintf(info->s = cpuintrf_temp_str(), "M3 : %04x", M3); break; case CPUINFO_STR_REGISTER + DSP56K_TEMP: sprintf(info->s = cpuintrf_temp_str(), "TMP: %04x", TEMP); break; case CPUINFO_STR_REGISTER + DSP56K_STATUS: sprintf(info->s = cpuintrf_temp_str(), "STS: %02x", STATUS); break; /* The CPU stack */ case CPUINFO_STR_REGISTER + DSP56K_ST0: sprintf(info->s = cpuintrf_temp_str(), "ST0 : %08x", ST0); break ; case CPUINFO_STR_REGISTER + DSP56K_ST1: sprintf(info->s = cpuintrf_temp_str(), "ST1 : %08x", ST1); break ; case CPUINFO_STR_REGISTER + DSP56K_ST2: sprintf(info->s = cpuintrf_temp_str(), "ST2 : %08x", ST2); break ; case CPUINFO_STR_REGISTER + DSP56K_ST3: sprintf(info->s = cpuintrf_temp_str(), "ST3 : %08x", ST3); break ; case CPUINFO_STR_REGISTER + DSP56K_ST4: sprintf(info->s = cpuintrf_temp_str(), "ST4 : %08x", ST4); break ; case CPUINFO_STR_REGISTER + DSP56K_ST5: sprintf(info->s = cpuintrf_temp_str(), "ST5 : %08x", ST5); break ; case CPUINFO_STR_REGISTER + DSP56K_ST6: sprintf(info->s = cpuintrf_temp_str(), "ST6 : %08x", ST6); break ; case CPUINFO_STR_REGISTER + DSP56K_ST7: sprintf(info->s = cpuintrf_temp_str(), "ST7 : %08x", ST7); break ; case CPUINFO_STR_REGISTER + DSP56K_ST8: sprintf(info->s = cpuintrf_temp_str(), "ST8 : %08x", ST8); break ; case CPUINFO_STR_REGISTER + DSP56K_ST9: sprintf(info->s = cpuintrf_temp_str(), "ST9 : %08x", ST9); break ; case CPUINFO_STR_REGISTER + DSP56K_ST10: sprintf(info->s = cpuintrf_temp_str(), "ST10: %08x", ST10); break ; case CPUINFO_STR_REGISTER + DSP56K_ST11: sprintf(info->s = cpuintrf_temp_str(), "ST11: %08x", ST11); break ; case CPUINFO_STR_REGISTER + DSP56K_ST12: sprintf(info->s = cpuintrf_temp_str(), "ST12: %08x", ST12); break ; case CPUINFO_STR_REGISTER + DSP56K_ST13: sprintf(info->s = cpuintrf_temp_str(), "ST13: %08x", ST13); break ; case CPUINFO_STR_REGISTER + DSP56K_ST14: sprintf(info->s = cpuintrf_temp_str(), "ST14: %08x", ST14); break ; case CPUINFO_STR_REGISTER + DSP56K_ST15: sprintf(info->s = cpuintrf_temp_str(), "ST15: %08x", ST15); break ; } }
void tms7000_get_info(UINT32 state, cpuinfo *info) { switch( state ) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(tms7000); break; case CPUINFO_INT_INPUT_LINES: info->i = 3; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_BE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 48; break; /* 48 represents the multiply instruction, the next highest is 17 */ case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 8; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + TMS7000_IRQ1_LINE: info->i = tms7000.irq_state[TMS7000_IRQ1_LINE]; break; case CPUINFO_INT_INPUT_STATE + TMS7000_IRQ2_LINE: info->i = tms7000.irq_state[TMS7000_IRQ2_LINE]; break; case CPUINFO_INT_INPUT_STATE + TMS7000_IRQ3_LINE: info->i = tms7000.irq_state[TMS7000_IRQ3_LINE]; break; case CPUINFO_INT_PREVIOUSPC: info->i = 0; /* Not supported */ break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + TMS7000_PC: info->i = pPC; break; case CPUINFO_INT_SP: case CPUINFO_INT_REGISTER + TMS7000_SP: info->i = pSP; break; case CPUINFO_INT_REGISTER + TMS7000_ST: info->i = pSR; break; case CPUINFO_INT_REGISTER + TMS7000_IDLE: info->i = tms7000.idle_state; break; case CPUINFO_INT_REGISTER + TMS7000_T1_CL: info->i = tms7000.t1_capture_latch; break; case CPUINFO_INT_REGISTER + TMS7000_T1_PS: info->i = tms7000.t1_prescaler; break; case CPUINFO_INT_REGISTER + TMS7000_T1_DEC: info->i = tms7000.t1_decrementer; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = tms7000_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = tms7000_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = tms7000_set_context; break; case CPUINFO_PTR_INIT: info->init = tms7000_init; break; case CPUINFO_PTR_RESET: info->reset = tms7000_reset; break; case CPUINFO_PTR_EXECUTE: info->execute = tms7000_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; /* Not supported */break; #ifdef MAME_DEBUG case CPUINFO_PTR_DISASSEMBLE: info->disassemble = tms7000_dasm; break; #endif case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &tms7000_icount; break; case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_tms7000_mem; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "TMS7000"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Texas Instriuments TMS7000"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (C) tim lindner 2003"); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", tms7000.sr & 0x80 ? 'C':'c', tms7000.sr & 0x40 ? 'N':'n', tms7000.sr & 0x20 ? 'Z':'z', tms7000.sr & 0x10 ? 'I':'i', tms7000.sr & 0x08 ? '?':'.', tms7000.sr & 0x04 ? '?':'.', tms7000.sr & 0x02 ? '?':'.', tms7000.sr & 0x01 ? '?':'.' ); break; case CPUINFO_STR_REGISTER + TMS7000_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", tms7000.pc.w.l); break; case CPUINFO_STR_REGISTER + TMS7000_SP: sprintf(info->s = cpuintrf_temp_str(), "S:%02X", tms7000.sp); break; case CPUINFO_STR_REGISTER + TMS7000_ST: sprintf(info->s = cpuintrf_temp_str(), "ST:%02X", tms7000.sr); break; case CPUINFO_STR_REGISTER + TMS7000_IDLE: sprintf(info->s = cpuintrf_temp_str(), "Idle:%02X", tms7000.idle_state); break; case CPUINFO_STR_REGISTER + TMS7000_T1_CL: sprintf(info->s = cpuintrf_temp_str(), "T1CL:%02X", tms7000.t1_capture_latch); break; case CPUINFO_STR_REGISTER + TMS7000_T1_PS: sprintf(info->s = cpuintrf_temp_str(), "T1PS:%02X", tms7000.t1_prescaler & 0x1f); break; case CPUINFO_STR_REGISTER + TMS7000_T1_DEC: sprintf(info->s = cpuintrf_temp_str(), "T1DEC:%02X", tms7000.t1_decrementer & 0xff); break; } }
void saturn_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(saturn); break; case CPUINFO_INT_INPUT_LINES: info->i = 1; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; case CPUINFO_INT_MIN_CYCLES: info->i = 2; break; case CPUINFO_INT_MAX_CYCLES: info->i = 21; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 20; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + SATURN_NMI_STATE: info->i = saturn.nmi_state; break; case CPUINFO_INT_INPUT_STATE + SATURN_IRQ_STATE: info->i = saturn.irq_state; break; case CPUINFO_INT_PREVIOUSPC: info->i = saturn.oldpc; break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + SATURN_PC: info->i = saturn.pc; break; case CPUINFO_INT_SP: info->i = saturn.stackpointer; break; case CPUINFO_INT_REGISTER + SATURN_D0: info->i = saturn.d[0]; break; case CPUINFO_INT_REGISTER + SATURN_D1: info->i = saturn.d[1]; break; #if 0 case CPUINFO_INT_REGISTER + SATURN_A: info->i = saturn.reg[A]; break; case CPUINFO_INT_REGISTER + SATURN_B: info->i = saturn.reg[B]; break; case CPUINFO_INT_REGISTER + SATURN_C: info->i = saturn.reg[C]; break; case CPUINFO_INT_REGISTER + SATURN_D: info->i = saturn.reg[D]; break; case CPUINFO_INT_REGISTER + SATURN_R0: info->i = saturn.reg[R0]; break; case CPUINFO_INT_REGISTER + SATURN_R1: info->i = saturn.reg[R1]; break; case CPUINFO_INT_REGISTER + SATURN_R2: info->i = saturn.reg[R2]; break; case CPUINFO_INT_REGISTER + SATURN_R3: info->i = saturn.reg[R3]; break; case CPUINFO_INT_REGISTER + SATURN_R4: info->i = saturn.reg[R4]; break; #endif case CPUINFO_INT_REGISTER + SATURN_P: info->i = saturn.p; break; case CPUINFO_INT_REGISTER + SATURN_IN: info->i = saturn.in; break; case CPUINFO_INT_REGISTER + SATURN_OUT: info->i = saturn.out; break; case CPUINFO_INT_REGISTER + SATURN_CARRY: info->i = saturn.carry; break; case CPUINFO_INT_REGISTER + SATURN_ST: info->i = saturn.st; break; case CPUINFO_INT_REGISTER + SATURN_HST: info->i = saturn.hst; break; case CPUINFO_INT_REGISTER + SATURN_RSTK0: info->i = saturn.rstk[0]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK1: info->i = saturn.rstk[1]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK2: info->i = saturn.rstk[2]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK3: info->i = saturn.rstk[3]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK4: info->i = saturn.rstk[4]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK5: info->i = saturn.rstk[5]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK6: info->i = saturn.rstk[6]; break; case CPUINFO_INT_REGISTER + SATURN_RSTK7: info->i = saturn.rstk[7]; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = saturn_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = saturn_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = saturn_set_context; break; case CPUINFO_PTR_INIT: info->init = saturn_init; break; case CPUINFO_PTR_RESET: info->reset = saturn_reset; break; case CPUINFO_PTR_EXECUTE: info->execute = saturn_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = saturn_dasm; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &saturn_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = saturn_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = saturn_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "Saturn"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Saturn"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0alpha"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 2000 Peter Trauner, all rights reserved."); break; case CPUINFO_STR_REGISTER + SATURN_PC: sprintf(info->s = cpuintrf_temp_str(), "PC: %.5x", saturn.pc);break; case CPUINFO_STR_REGISTER + SATURN_D0: sprintf(info->s = cpuintrf_temp_str(), "D0: %.5x", saturn.d[0]);break; case CPUINFO_STR_REGISTER + SATURN_D1: sprintf(info->s = cpuintrf_temp_str(), "D1: %.5x", saturn.d[1]);break; case CPUINFO_STR_REGISTER + SATURN_A: sprintf(info->s = cpuintrf_temp_str(), "A: %.8x %.8x", saturn.reg[A].d[1], saturn.reg[A].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_B: sprintf(info->s = cpuintrf_temp_str(), "B: %.8x %.8x", saturn.reg[B].d[1], saturn.reg[B].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_C: sprintf(info->s = cpuintrf_temp_str(), "C: %.8x %.8x", saturn.reg[C].d[1], saturn.reg[C].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_D: sprintf(info->s = cpuintrf_temp_str(), "D: %.8x %.8x", saturn.reg[D].d[1], saturn.reg[D].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_R0: sprintf(info->s = cpuintrf_temp_str(), "R0:%.8x %.8x", saturn.reg[R0].d[1], saturn.reg[R0].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_R1: sprintf(info->s = cpuintrf_temp_str(), "R1:%.8x %.8x", saturn.reg[R1].d[1], saturn.reg[R1].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_R2: sprintf(info->s = cpuintrf_temp_str(), "R2:%.8x %.8x", saturn.reg[R2].d[1], saturn.reg[R2].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_R3: sprintf(info->s = cpuintrf_temp_str(), "R3:%.8x %.8x", saturn.reg[R3].d[1], saturn.reg[R3].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_R4: sprintf(info->s = cpuintrf_temp_str(), "R4:%.8x %.8x", saturn.reg[R4].d[1], saturn.reg[R4].d[0]);break; case CPUINFO_STR_REGISTER + SATURN_P: sprintf(info->s = cpuintrf_temp_str(), "P:%x", saturn.p);break; case CPUINFO_STR_REGISTER + SATURN_IN: sprintf(info->s = cpuintrf_temp_str(), "IN:%.4x", saturn.in);break; case CPUINFO_STR_REGISTER + SATURN_OUT: sprintf(info->s = cpuintrf_temp_str(), "OUT:%.3x", saturn.out);break; case CPUINFO_STR_REGISTER + SATURN_CARRY: sprintf(info->s = cpuintrf_temp_str(), "Carry: %d", saturn.carry);break; case CPUINFO_STR_REGISTER + SATURN_ST: sprintf(info->s = cpuintrf_temp_str(), "ST:%.4x", saturn.st);break; case CPUINFO_STR_REGISTER + SATURN_HST: sprintf(info->s = cpuintrf_temp_str(), "HST:%x", saturn.hst);break; case CPUINFO_STR_REGISTER + SATURN_RSTK0: sprintf(info->s = cpuintrf_temp_str(), "RSTK0:%.5x", saturn.rstk[0]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK1: sprintf(info->s = cpuintrf_temp_str(), "RSTK1:%.5x", saturn.rstk[1]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK2: sprintf(info->s = cpuintrf_temp_str(), "RSTK2:%.5x", saturn.rstk[2]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK3: sprintf(info->s = cpuintrf_temp_str(), "RSTK3:%.5x", saturn.rstk[3]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK4: sprintf(info->s = cpuintrf_temp_str(), "RSTK4:%.5x", saturn.rstk[4]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK5: sprintf(info->s = cpuintrf_temp_str(), "RSTK5:%.5x", saturn.rstk[5]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK6: sprintf(info->s = cpuintrf_temp_str(), "RSTK6:%.5x", saturn.rstk[6]);break; case CPUINFO_STR_REGISTER + SATURN_RSTK7: sprintf(info->s = cpuintrf_temp_str(), "RSTK7:%.5x", saturn.rstk[7]);break; case CPUINFO_STR_REGISTER + SATURN_IRQ_STATE: sprintf(info->s = cpuintrf_temp_str(), "IRQ:%.4x", saturn.pending_irq);break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c", saturn.decimal?'D':'.', saturn.carry ? 'C':'.'); break; } }
void m6805_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(m6805); break; case CPUINFO_INT_INPUT_LINES: info->i = 1; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_BE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 3; break; case CPUINFO_INT_MIN_CYCLES: info->i = 2; break; case CPUINFO_INT_MAX_CYCLES: info->i = 10; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 12; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + M6805_IRQ_LINE: info->i = m6805.irq_state[M6805_IRQ_LINE]; break; case CPUINFO_INT_PREVIOUSPC: /* not implemented */ break; case CPUINFO_INT_REGISTER + M6805_A: info->i = A; break; case CPUINFO_INT_PC: info->i = PC; break; case CPUINFO_INT_REGISTER + M6805_PC: info->i = PC; break; case CPUINFO_INT_SP: case CPUINFO_INT_REGISTER + M6805_S: info->i = SP_ADJUST(S); break; case CPUINFO_INT_REGISTER + M6805_X: info->i = X; break; case CPUINFO_INT_REGISTER + M6805_CC: info->i = CC; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = m6805_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = m6805_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = m6805_set_context; break; case CPUINFO_PTR_INIT: info->init = m6805_init; break; case CPUINFO_PTR_RESET: info->reset = m6805_reset; break; case CPUINFO_PTR_EXIT: info->exit = m6805_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = m6805_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = m6805_dasm; break; case CPUINFO_PTR_IRQ_CALLBACK: info->irqcallback = m6805.irq_callback; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m6805_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = m6805_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = m6805_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M6805"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "Motorola 6805"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "The MAME team."); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", m6805.cc & 0x80 ? '?':'.', m6805.cc & 0x40 ? '?':'.', m6805.cc & 0x20 ? '?':'.', m6805.cc & 0x10 ? 'H':'.', m6805.cc & 0x08 ? 'I':'.', m6805.cc & 0x04 ? 'N':'.', m6805.cc & 0x02 ? 'Z':'.', m6805.cc & 0x01 ? 'C':'.'); break; case CPUINFO_STR_REGISTER + M6805_A: sprintf(info->s = cpuintrf_temp_str(), "A:%02X", m6805.a); break; case CPUINFO_STR_REGISTER + M6805_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", m6805.pc.w.l); break; case CPUINFO_STR_REGISTER + M6805_S: sprintf(info->s = cpuintrf_temp_str(), "S:%02X", m6805.s.w.l); break; case CPUINFO_STR_REGISTER + M6805_X: sprintf(info->s = cpuintrf_temp_str(), "X:%02X", m6805.x); break; case CPUINFO_STR_REGISTER + M6805_CC: sprintf(info->s = cpuintrf_temp_str(), "CC:%02X", m6805.cc); break; } }
void m6509_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(m6502); break; case CPUINFO_INT_INPUT_LINES: info->i = 2; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_LE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 3; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 10; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 20; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + M6509_IRQ_LINE: info->i = m6509.irq_state; break; case CPUINFO_INT_INPUT_STATE + M6509_SET_OVERFLOW:info->i = m6509.so_state; break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = m6509.nmi_state; break; case CPUINFO_INT_PREVIOUSPC: info->i = m6509.ppc.w.l; break; case CPUINFO_INT_PC: info->i = PCD; break; case CPUINFO_INT_REGISTER + M6509_PC: info->i = m6509.pc.w.l; break; case CPUINFO_INT_SP: info->i = S; break; case CPUINFO_INT_REGISTER + M6509_S: info->i = m6509.sp.b.l; break; case CPUINFO_INT_REGISTER + M6509_P: info->i = m6509.p; break; case CPUINFO_INT_REGISTER + M6509_A: info->i = m6509.a; break; case CPUINFO_INT_REGISTER + M6509_X: info->i = m6509.x; break; case CPUINFO_INT_REGISTER + M6509_Y: info->i = m6509.y; break; case CPUINFO_INT_REGISTER + M6509_PC_BANK: info->i = m6509.pc_bank.b.h2; break; case CPUINFO_INT_REGISTER + M6509_IND_BANK: info->i = m6509.ind_bank.b.h2; break; case CPUINFO_INT_REGISTER + M6509_EA: info->i = m6509.ea.w.l; break; case CPUINFO_INT_REGISTER + M6509_ZP: info->i = m6509.zp.w.l; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = m6509_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = m6509_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = m6509_set_context; break; case CPUINFO_PTR_INIT: info->init = m6509_init; break; case CPUINFO_PTR_RESET: info->reset = m6509_reset; break; case CPUINFO_PTR_EXIT: info->exit = m6509_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = m6509_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; #ifdef MAME_DEBUG case CPUINFO_PTR_DISASSEMBLE_NEW: info->disassemble_new = m6510_dasm; break; #endif case CPUINFO_PTR_IRQ_CALLBACK: info->irqcallback = m6509.irq_callback; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &m6509_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = m6509_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = m6509_win_layout; break; case CPUINFO_PTR_INTERNAL_MEMORY_MAP: info->internal_map = construct_map_m6509_mem; break; case CPUINFO_PTR_M6502_READINDEXED_CALLBACK: info->f = (genf *) m6509.rdmem_id; break; case CPUINFO_PTR_M6502_WRITEINDEXED_CALLBACK: info->f = (genf *) m6509.wrmem_id; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "M6509"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "MOS Technology 6509"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0beta"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 1998 Juergen Buchmueller\nCopyright (c) 2000 Peter Trauner\nall rights reserved."); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", m6509.p & 0x80 ? 'N':'.', m6509.p & 0x40 ? 'V':'.', m6509.p & 0x20 ? 'R':'.', m6509.p & 0x10 ? 'B':'.', m6509.p & 0x08 ? 'D':'.', m6509.p & 0x04 ? 'I':'.', m6509.p & 0x02 ? 'Z':'.', m6509.p & 0x01 ? 'C':'.'); break; case CPUINFO_STR_REGISTER + M6509_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", m6509.pc.w.l); break; case CPUINFO_STR_REGISTER + M6509_S: sprintf(info->s = cpuintrf_temp_str(), "S:%02X", m6509.sp.b.l); break; case CPUINFO_STR_REGISTER + M6509_P: sprintf(info->s = cpuintrf_temp_str(), "P:%02X", m6509.p); break; case CPUINFO_STR_REGISTER + M6509_A: sprintf(info->s = cpuintrf_temp_str(), "A:%02X", m6509.a); break; case CPUINFO_STR_REGISTER + M6509_X: sprintf(info->s = cpuintrf_temp_str(), "X:%02X", m6509.x); break; case CPUINFO_STR_REGISTER + M6509_Y: sprintf(info->s = cpuintrf_temp_str(), "Y:%02X", m6509.y); break; case CPUINFO_STR_REGISTER + M6509_PC_BANK: sprintf(info->s = cpuintrf_temp_str(), "0:%01X", m6509.pc_bank.b.h2); break; case CPUINFO_STR_REGISTER + M6509_IND_BANK: sprintf(info->s = cpuintrf_temp_str(), "1:%01X", m6509.ind_bank.b.h2); break; case CPUINFO_STR_REGISTER + M6509_EA: sprintf(info->s = cpuintrf_temp_str(), "EA:%04X", m6509.ea.w.l); break; case CPUINFO_STR_REGISTER + M6509_ZP: sprintf(info->s = cpuintrf_temp_str(), "ZP:%03X", m6509.zp.w.l); break; } }
void konami_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(konami); break; case CPUINFO_INT_INPUT_LINES: info->i = 2; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_BE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; case CPUINFO_INT_MIN_CYCLES: info->i = 1; break; case CPUINFO_INT_MAX_CYCLES: info->i = 13; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_INPUT_STATE + KONAMI_IRQ_LINE: info->i = konami.irq_state[KONAMI_IRQ_LINE]; break; case CPUINFO_INT_INPUT_STATE + KONAMI_FIRQ_LINE: info->i = konami.irq_state[KONAMI_FIRQ_LINE]; break; case CPUINFO_INT_INPUT_STATE + INPUT_LINE_NMI: info->i = konami.nmi_state; break; case CPUINFO_INT_PREVIOUSPC: info->i = PPC; break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + KONAMI_PC: info->i = PC; break; case CPUINFO_INT_SP: case CPUINFO_INT_REGISTER + KONAMI_S: info->i = S; break; case CPUINFO_INT_REGISTER + KONAMI_CC: info->i = CC; break; case CPUINFO_INT_REGISTER + KONAMI_U: info->i = U; break; case CPUINFO_INT_REGISTER + KONAMI_A: info->i = A; break; case CPUINFO_INT_REGISTER + KONAMI_B: info->i = B; break; case CPUINFO_INT_REGISTER + KONAMI_X: info->i = X; break; case CPUINFO_INT_REGISTER + KONAMI_Y: info->i = Y; break; case CPUINFO_INT_REGISTER + KONAMI_DP: info->i = DP; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = konami_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = konami_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = konami_set_context; break; case CPUINFO_PTR_INIT: info->init = konami_init; break; case CPUINFO_PTR_RESET: info->reset = konami_reset; break; case CPUINFO_PTR_EXIT: info->exit = konami_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = konami_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE_NEW: info->disassemble_new = konami_dasm; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &konami_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = konami_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = konami_win_layout; break; case CPUINFO_PTR_KONAMI_SETLINES_CALLBACK: info->f = (genf *)konami.setlines_callback; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "KONAMI"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "KONAMI 5000x"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (C) The MAME Team 1999"); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c%c%c%c%c%c%c", konami.cc & 0x80 ? 'E':'.', konami.cc & 0x40 ? 'F':'.', konami.cc & 0x20 ? 'H':'.', konami.cc & 0x10 ? 'I':'.', konami.cc & 0x08 ? 'N':'.', konami.cc & 0x04 ? 'Z':'.', konami.cc & 0x02 ? 'V':'.', konami.cc & 0x01 ? 'C':'.'); break; case CPUINFO_STR_REGISTER + KONAMI_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%04X", konami.pc.w.l); break; case CPUINFO_STR_REGISTER + KONAMI_S: sprintf(info->s = cpuintrf_temp_str(), "S:%04X", konami.s.w.l); break; case CPUINFO_STR_REGISTER + KONAMI_CC: sprintf(info->s = cpuintrf_temp_str(), "CC:%02X", konami.cc); break; case CPUINFO_STR_REGISTER + KONAMI_U: sprintf(info->s = cpuintrf_temp_str(), "U:%04X", konami.u.w.l); break; case CPUINFO_STR_REGISTER + KONAMI_A: sprintf(info->s = cpuintrf_temp_str(), "A:%02X", konami.d.b.h); break; case CPUINFO_STR_REGISTER + KONAMI_B: sprintf(info->s = cpuintrf_temp_str(), "B:%02X", konami.d.b.l); break; case CPUINFO_STR_REGISTER + KONAMI_X: sprintf(info->s = cpuintrf_temp_str(), "X:%04X", konami.x.w.l); break; case CPUINFO_STR_REGISTER + KONAMI_Y: sprintf(info->s = cpuintrf_temp_str(), "Y:%04X", konami.y.w.l); break; case CPUINFO_STR_REGISTER + KONAMI_DP: sprintf(info->s = cpuintrf_temp_str(), "DP:%02X", konami.dp.b.h); break; } }
void sc61860_get_info(UINT32 state, union cpuinfo *info) { switch (state) { /* --- the following bits of info are returned as 64-bit signed integers --- */ case CPUINFO_INT_CONTEXT_SIZE: info->i = sizeof(sc61860); break; case CPUINFO_INT_INPUT_LINES: info->i = 0; break; case CPUINFO_INT_DEFAULT_IRQ_VECTOR: info->i = 0; break; case CPUINFO_INT_ENDIANNESS: info->i = CPU_IS_BE; break; case CPUINFO_INT_CLOCK_DIVIDER: info->i = 1; break; case CPUINFO_INT_MIN_INSTRUCTION_BYTES: info->i = 1; break; case CPUINFO_INT_MAX_INSTRUCTION_BYTES: info->i = 4; break; case CPUINFO_INT_MIN_CYCLES: info->i = 2; break; case CPUINFO_INT_MAX_CYCLES: info->i = 4; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 8; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_PROGRAM: info->i = 16; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_PROGRAM: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_DATA: info->i = 0; break; case CPUINFO_INT_DATABUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_WIDTH + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_ADDRBUS_SHIFT + ADDRESS_SPACE_IO: info->i = 0; break; case CPUINFO_INT_PREVIOUSPC: info->i = sc61860.oldpc; break; case CPUINFO_INT_PC: case CPUINFO_INT_REGISTER + SC61860_PC: info->i = sc61860.pc; break; case CPUINFO_INT_SP: case CPUINFO_INT_REGISTER + SC61860_R: info->i = sc61860.r; break; case CPUINFO_INT_REGISTER + SC61860_DP: info->i = sc61860.dp; break; case CPUINFO_INT_REGISTER + SC61860_P: info->i = sc61860.p; break; case CPUINFO_INT_REGISTER + SC61860_Q: info->i = sc61860.q; break; case CPUINFO_INT_REGISTER + SC61860_CARRY: info->i = sc61860.carry; break; case CPUINFO_INT_REGISTER + SC61860_ZERO: info->i = sc61860.zero; break; /* --- the following bits of info are returned as pointers to data or functions --- */ case CPUINFO_PTR_SET_INFO: info->setinfo = sc61860_set_info; break; case CPUINFO_PTR_GET_CONTEXT: info->getcontext = sc61860_get_context; break; case CPUINFO_PTR_SET_CONTEXT: info->setcontext = sc61860_set_context; break; case CPUINFO_PTR_INIT: info->init = sc61860_init; break; case CPUINFO_PTR_RESET: info->reset = sc61860_reset; break; case CPUINFO_PTR_EXIT: info->exit = sc61860_exit; break; case CPUINFO_PTR_EXECUTE: info->execute = sc61860_execute; break; case CPUINFO_PTR_BURN: info->burn = NULL; break; case CPUINFO_PTR_DISASSEMBLE: info->disassemble = sc61860_dasm; break; case CPUINFO_PTR_IRQ_CALLBACK: info->irqcallback = NULL; break; case CPUINFO_PTR_INSTRUCTION_COUNTER: info->icount = &sc61860_ICount; break; case CPUINFO_PTR_REGISTER_LAYOUT: info->p = sc61860_reg_layout; break; case CPUINFO_PTR_WINDOW_LAYOUT: info->p = sc61860_win_layout; break; /* --- the following bits of info are returned as NULL-terminated strings --- */ case CPUINFO_STR_NAME: strcpy(info->s = cpuintrf_temp_str(), "SC61860"); break; case CPUINFO_STR_CORE_FAMILY: strcpy(info->s = cpuintrf_temp_str(), "SC61860"); break; case CPUINFO_STR_CORE_VERSION: strcpy(info->s = cpuintrf_temp_str(), "1.0beta"); break; case CPUINFO_STR_CORE_FILE: strcpy(info->s = cpuintrf_temp_str(), __FILE__); break; case CPUINFO_STR_CORE_CREDITS: strcpy(info->s = cpuintrf_temp_str(), "Copyright (c) 2000,2001 Peter Trauner, all rights reserved."); break; case CPUINFO_STR_FLAGS: sprintf(info->s = cpuintrf_temp_str(), "%c%c", sc61860.zero?'Z':'.', sc61860.carry ? 'C':'.'); break; case CPUINFO_STR_REGISTER + SC61860_PC: sprintf(info->s = cpuintrf_temp_str(), "PC:%.4x", sc61860.pc);break; case CPUINFO_STR_REGISTER + SC61860_DP: sprintf(info->s = cpuintrf_temp_str(), "DP:%.4x", sc61860.dp);break; case CPUINFO_STR_REGISTER + SC61860_P: sprintf(info->s = cpuintrf_temp_str(), "P:%.2x", sc61860.p);break; case CPUINFO_STR_REGISTER + SC61860_Q: sprintf(info->s = cpuintrf_temp_str(), "Q:%.2x", sc61860.q);break; case CPUINFO_STR_REGISTER + SC61860_R: sprintf(info->s = cpuintrf_temp_str(), "R:%.2x", sc61860.r);break; case CPUINFO_STR_REGISTER + SC61860_I: sprintf(info->s = cpuintrf_temp_str(), "I:%.2x", sc61860.ram[I]);break; case CPUINFO_STR_REGISTER + SC61860_J: sprintf(info->s = cpuintrf_temp_str(), "J:%.2x", sc61860.ram[J]);break; case CPUINFO_STR_REGISTER + SC61860_K: sprintf(info->s = cpuintrf_temp_str(), "K:%.2x", sc61860.ram[K]);break; case CPUINFO_STR_REGISTER + SC61860_L: sprintf(info->s = cpuintrf_temp_str(), "L:%.2x", sc61860.ram[L]);break; case CPUINFO_STR_REGISTER + SC61860_V: sprintf(info->s = cpuintrf_temp_str(), "V:%.2x", sc61860.ram[V]);break; case CPUINFO_STR_REGISTER + SC61860_W: sprintf(info->s = cpuintrf_temp_str(), "W:%.2x", sc61860.ram[W]);break; case CPUINFO_STR_REGISTER + SC61860_H: sprintf(info->s = cpuintrf_temp_str(), "W:%.2x", sc61860.h);break; case CPUINFO_STR_REGISTER + SC61860_BA: sprintf(info->s = cpuintrf_temp_str(), "BA:%.2x%.2x", sc61860.ram[B], sc61860.ram[A]);break; case CPUINFO_STR_REGISTER + SC61860_X: sprintf(info->s = cpuintrf_temp_str(), "X: %.2x%.2x", sc61860.ram[XH], sc61860.ram[XL]);break; case CPUINFO_STR_REGISTER + SC61860_Y: sprintf(info->s = cpuintrf_temp_str(), "Y: %.2x%.2x", sc61860.ram[YH], sc61860.ram[YL]);break; case CPUINFO_STR_REGISTER + SC61860_CARRY: sprintf(info->s = cpuintrf_temp_str(), "Carry: %d", sc61860.carry);break; case CPUINFO_STR_REGISTER + SC61860_ZERO: sprintf(info->s = cpuintrf_temp_str(), "Carry: %d", sc61860.zero);break; } }