static void sharc_init(int index, int clock, const void *config, int (*irqcallback)(int)) { const sharc_config *cfg = config; sharc.boot_mode = cfg->boot_mode; sharc.irq_callback = irqcallback; build_opcode_table(); sharc.internal_ram = auto_malloc(2 * 0x10000 * sizeof(UINT16)); // 2x 128KB sharc.internal_ram_block0 = &sharc.internal_ram[0]; sharc.internal_ram_block1 = &sharc.internal_ram[0x20000/2]; }
void pic16c62x_device::device_start() { m_program = &space(AS_PROGRAM); m_direct = &m_program->direct(); m_data = &space(AS_DATA); m_io = &space(AS_IO); m_CONFIG = 0x3fff; /* ensure the internal ram pointers are set before get_info is called */ update_internalram_ptr(); build_opcode_table(); save_item(NAME(m_W)); save_item(NAME(m_ALU)); save_item(NAME(m_OPTION)); save_item(NAME(m_PCLATH)); save_item(NAME(TMR0)); save_item(NAME(PCL)); save_item(NAME(STATUS)); save_item(NAME(FSR)); save_item(NAME(PORTA)); save_item(NAME(PORTB)); save_item(NAME(m_TRISA)); save_item(NAME(m_TRISB)); save_item(NAME(m_old_T0)); save_item(NAME(m_old_data)); save_item(NAME(m_picRAMmask)); save_item(NAME(m_WDT)); save_item(NAME(m_prescaler)); save_item(NAME(m_STACK[0])); save_item(NAME(m_STACK[1])); save_item(NAME(m_STACK[2])); save_item(NAME(m_STACK[3])); save_item(NAME(m_STACK[4])); save_item(NAME(m_STACK[5])); save_item(NAME(m_STACK[6])); save_item(NAME(m_STACK[7])); save_item(NAME(m_PC)); save_item(NAME(m_PREVPC)); save_item(NAME(m_CONFIG)); save_item(NAME(m_opcode.d)); save_item(NAME(m_delay_timer)); save_item(NAME(m_picmodel)); save_item(NAME(m_reset_vector)); save_item(NAME(m_temp_config)); save_item(NAME(m_inst_cycles)); state_add( PIC16C62x_PC, "PC", m_PC).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_W, "W", m_W).formatstr("%02X"); state_add( PIC16C62x_ALU, "ALU", m_ALU).formatstr("%02X"); state_add( PIC16C62x_STR, "STR", m_debugger_temp).mask(0xff).callimport().callexport().formatstr("%02X"); state_add( PIC16C62x_TMR0, "TMR", m_debugger_temp).mask(0xff).callimport().callexport().formatstr("%02X"); state_add( PIC16C62x_WDT, "WDT", m_WDT).formatstr("%04X"); state_add( PIC16C62x_OPT, "OPT", m_OPTION).formatstr("%02X"); state_add( PIC16C62x_STK0, "STK0", m_STACK[0]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK1, "STK1", m_STACK[1]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK2, "STK2", m_STACK[2]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK3, "STK3", m_STACK[3]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK4, "STK4", m_STACK[4]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK5, "STK5", m_STACK[5]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK6, "STK6", m_STACK[6]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_STK7, "STK7", m_STACK[7]).mask(0xfff).formatstr("%03X"); state_add( PIC16C62x_PRTA, "PRTA", m_debugger_temp).mask(0x1f).callimport().callexport().formatstr("%02X"); state_add( PIC16C62x_PRTB, "PRTB", m_debugger_temp).mask(0xff).callimport().callexport().formatstr("%02X"); state_add( PIC16C62x_TRSA, "TRSA", m_TRISA).mask(0x1f).formatstr("%02X"); state_add( PIC16C62x_TRSB, "TRSB", m_TRISB).formatstr("%02X"); state_add( PIC16C62x_FSR, "FSR", m_debugger_temp).mask(0xff).callimport().callexport().formatstr("%02X"); state_add( PIC16C62x_PSCL, "PSCL", m_debugger_temp).callimport().formatstr("%3s"); state_add( STATE_GENPC, "GENPC", m_PC).noshow(); state_add( STATE_GENFLAGS, "GENFLAGS", m_OPTION).formatstr("%13s").noshow(); state_add( STATE_GENPCBASE, "PREVPC", m_PREVPC).noshow(); m_icountptr = &m_icount; }