protected m6805_base_device( machine_config mconfig, string tag, device_t owner, uint32_t clock, device_type type, configuration_params params_, address_map_constructor internal_map) : base(mconfig, type, tag, owner, clock) { //m_class_interfaces.Add(new device_execute_interface_m6805_base(mconfig, this)); m_class_interfaces.Add(new device_memory_interface_m6805_base(mconfig, this)); m_class_interfaces.Add(new device_state_interface_m6805_base(mconfig, this)); //m_class_interfaces.Add(new device_disasm_interface_m6805_base(mconfig, this)); m_dimemory = GetClassInterface <device_memory_interface_m6805_base>(); m_distate = GetClassInterface <device_state_interface_m6805_base>(); init_s_hmos_s_ops(); m_params = params_; m_program_config = new address_space_config("program", ENDIANNESS_BIG, 8, (u8)params_.m_addr_width, 0, internal_map); }
protected override void device_config_complete() { // don't replace existing config, so we don't lose the reference (see device_memory_interface_memory_space_config) var config = new address_space_config("program", m_endianness, m_data_width, m_addr_width, (s8)m_shift); //m_program_config = address_space_config( "program", m_endianness, m_data_width, m_addr_width, m_shift ); config.CopyTo(m_program_config); }
// construction/destruction public mb88_cpu_device(machine_config mconfig, device_type type, string tag, device_t owner, uint32_t clock, int program_width, int data_width) : base(mconfig, type, tag, owner, clock) { m_class_interfaces.Add(new device_execute_interface_mb88(mconfig, this)); m_class_interfaces.Add(new device_memory_interface_mb88(mconfig, this)); m_class_interfaces.Add(new device_state_interface_mb88(mconfig, this)); m_class_interfaces.Add(new device_disasm_interface_mb88(mconfig, this)); m_program_config = new address_space_config("program", endianness_t.ENDIANNESS_BIG, 8, (byte)program_width, 0, (program_width == 9) ? program_9bit : (program_width == 10) ? program_10bit : (address_map_constructor)program_11bit); m_data_config = new address_space_config("data", endianness_t.ENDIANNESS_BIG, 8, (byte)data_width, 0, (data_width == 4) ? data_4bit : (data_width == 5) ? data_5bit : (data_width == 6) ? data_6bit : (address_map_constructor)data_7bit); m_PLA = null; m_read_k = new devcb_read8(this); m_write_o = new devcb_write8(this); m_write_p = new devcb_write8(this); for (int i = 0; i < 4; i++) { m_read_r[i] = new devcb_read8(this); } for (int i = 0; i < 4; i++) { m_write_r[i] = new devcb_write8(this); } m_read_si = new devcb_read_line(this); m_write_so = new devcb_write_line(this); }
protected m6800_cpu_device(machine_config mconfig, device_type type, string tag, device_t owner, uint32_t clock, op_func [] insn, uint8_t [] cycles, address_map_constructor internal_) : base(mconfig, type, tag, owner, clock) { m_program_config = new address_space_config("program", ENDIANNESS_BIG, 8, 16, 0, internal_); m_decrypted_opcodes_config = new address_space_config("program", ENDIANNESS_BIG, 8, 16, 0); m_insn = insn; m_cycles = cycles; }
m6502_device(machine_config mconfig, device_type type, string tag, device_t owner, u32 clock) : base(mconfig, type, tag, owner, clock) { m_class_interfaces.Add(new device_execute_interface_m6502(mconfig, this)); m_class_interfaces.Add(new device_memory_interface_m6502(mconfig, this)); m_class_interfaces.Add(new device_state_interface_m6502(mconfig, this)); m_class_interfaces.Add(new device_disasm_interface_m6502(mconfig, this)); sync_w = new devcb_write_line(this); program_config = new address_space_config("program", endianness_t.ENDIANNESS_LITTLE, 8, 16); sprogram_config = new address_space_config("decrypted_opcodes", endianness_t.ENDIANNESS_LITTLE, 8, 16); PPC = 0; NPC = 0; PC = 0; SP = 0; TMP = 0; TMP2 = 0; A = 0; X = 0; Y = 0; P = 0; IR = 0; inst_state_base = 0; mintf = null; inst_state = 0; inst_substate = 0; icountRef.i = 0; //icount = 0; nmi_state = false; irq_state = false; apu_irq_state = false; v_state = false; irq_taken = false; sync = false; inhibit_interrupts = false; count_before_instruction_step = 0; cache_disabled = false; }
// this function is needed when passing in a non-static address_map_constructor in the ctor. 'this' isn't available protected void m6805_base_device_after_ctor(address_map_constructor internal_map) { m_program_config = new address_space_config("program", ENDIANNESS_BIG, 8, (u8)m_params.m_addr_width, 0, internal_map); }