void maincpu_init(void) { interrupt_cpu_status_init(maincpu_int_status, &last_opcode_info); /* cpu specifix additional init routine */ CPU_ADDITIONAL_INIT(); }
void drivecpu_setup_context(struct drive_context_s *drv, int i) { monitor_interface_t *mi; drivecpu_context_t *cpu; if (i) { drv->cpu = lib_calloc(1, sizeof(drivecpu_context_t)); } cpu = drv->cpu; if (i) { drv->cpud = lib_calloc(1, sizeof(drivecpud_context_t)); drv->func = lib_malloc(sizeof(drivefunc_context_t)); cpu->int_status = interrupt_cpu_status_new(); interrupt_cpu_status_init(cpu->int_status, &(cpu->last_opcode_info)); } drivecpu_int_status_ptr[drv->mynumber] = cpu->int_status; cpu->rmw_flag = 0; cpu->d_bank_limit = 0; cpu->d_bank_start = 0; cpu->pageone = NULL; if (i) { cpu->snap_module_name = lib_msprintf("DRIVECPU%d", drv->mynumber); cpu->identification_string = lib_msprintf("DRIVE#%d", drv->mynumber + 8); cpu->monitor_interface = monitor_interface_new(); } mi = cpu->monitor_interface; mi->context = (void *)drv; mi->cpu_regs = &(cpu->cpu_regs); mi->cpu_R65C02_regs = NULL; mi->cpu_65816_regs = NULL; mi->dtv_cpu_regs = NULL; mi->z80_cpu_regs = NULL; mi->h6809_cpu_regs = NULL; mi->int_status = cpu->int_status; mi->clk = &(drive_clk[drv->mynumber]); mi->current_bank = 0; mi->mem_bank_list = NULL; mi->mem_bank_from_name = NULL; mi->get_line_cycle = NULL; mi->mem_bank_read = drivemem_bank_read; mi->mem_bank_peek = drivemem_bank_peek; mi->mem_bank_write = drivemem_bank_store; mi->mem_ioreg_list_get = drivemem_ioreg_list_get; mi->toggle_watchpoints_func = drivemem_toggle_watchpoints; mi->set_bank_base = drivecpu_set_bank_base; cpu->monspace = monitor_diskspace_mem(drv->mynumber); if (i) { drv->cpu->clk_guard = clk_guard_new(drv->clk_ptr, CLOCK_MAX - CLKGUARD_SUB_MIN); drv->cpu->alarm_context = alarm_context_new(drv->cpu->identification_string); } }