mirror of
https://github.com/holub/mame
synced 2025-07-04 17:38:08 +03:00
-machine/68340.cpp, machine/scc68070.cpp: Don't mess with devcbs in device_start.
-bfm/bfm_swp.cpp: Fixed ROM offset mask (it's words, not bytes).
This commit is contained in:
parent
ae63f9316f
commit
0ecbe63a38
@ -256,8 +256,6 @@ void m68340_cpu_device::set_modck(int state)
|
||||
|
||||
void m68340_cpu_device::device_start()
|
||||
{
|
||||
reset_cb().append(*this, FUNC(m68340_cpu_device::reset_peripherals));
|
||||
|
||||
fscpu32_device::device_start();
|
||||
|
||||
m_m68340SIM = new m68340_sim();
|
||||
@ -273,11 +271,23 @@ void m68340_cpu_device::device_start()
|
||||
m_internal = &space(AS_PROGRAM);
|
||||
}
|
||||
|
||||
|
||||
void m68340_cpu_device::device_config_complete()
|
||||
{
|
||||
fscpu32_device::device_config_complete();
|
||||
|
||||
reset_cb().append(*this, FUNC(m68340_cpu_device::reset_peripherals));
|
||||
}
|
||||
|
||||
|
||||
void m68340_cpu_device::reset_peripherals(int state)
|
||||
{
|
||||
m_m68340SIM->module_reset();
|
||||
m_m68340DMA->module_reset();
|
||||
m_serial->module_reset();
|
||||
m_timer[0]->module_reset();
|
||||
m_timer[1]->module_reset();
|
||||
if (state)
|
||||
{
|
||||
m_m68340SIM->module_reset();
|
||||
m_m68340DMA->module_reset();
|
||||
m_serial->module_reset();
|
||||
m_timer[0]->module_reset();
|
||||
m_timer[1]->module_reset();
|
||||
}
|
||||
}
|
||||
|
@ -46,6 +46,7 @@ protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual void device_config_complete() override;
|
||||
|
||||
void reset_peripherals(int state);
|
||||
|
||||
|
@ -266,8 +266,6 @@ scc68070_device::scc68070_device(const machine_config &mconfig, const char *tag,
|
||||
|
||||
void scc68070_device::device_start()
|
||||
{
|
||||
reset_cb().append(*this, FUNC(scc68070_device::reset_peripherals));
|
||||
|
||||
scc68070_base_device::device_start();
|
||||
|
||||
save_item(NAME(m_ipl));
|
||||
@ -429,43 +427,55 @@ void scc68070_device::device_reset()
|
||||
set_timer_callback(0);
|
||||
}
|
||||
|
||||
|
||||
void scc68070_device::device_config_complete()
|
||||
{
|
||||
scc68070_base_device::device_config_complete();
|
||||
|
||||
reset_cb().append(*this, FUNC(scc68070_device::reset_peripherals));
|
||||
}
|
||||
|
||||
|
||||
void scc68070_device::reset_peripherals(int state)
|
||||
{
|
||||
m_lir = 0;
|
||||
if (state)
|
||||
{
|
||||
m_lir = 0;
|
||||
|
||||
m_picr1 = 0;
|
||||
m_picr2 = 0;
|
||||
m_timer_int = false;
|
||||
m_i2c_int = false;
|
||||
m_uart_rx_int = false;
|
||||
m_uart_tx_int = false;
|
||||
m_picr1 = 0;
|
||||
m_picr2 = 0;
|
||||
m_timer_int = false;
|
||||
m_i2c_int = false;
|
||||
m_uart_rx_int = false;
|
||||
m_uart_tx_int = false;
|
||||
|
||||
m_i2c.status_register = ISR_PIN;
|
||||
m_i2c.control_register = 0;
|
||||
m_i2c.clock_control_register = 0;
|
||||
m_i2c.scl_out_state = true;
|
||||
m_i2c.scl_in_state = true;
|
||||
m_i2c.sda_out_state = true;
|
||||
m_i2c.state = I2C_IDLE;
|
||||
m_i2c.clock_change_state = I2C_SCL_IDLE;
|
||||
m_i2c.clocks = 0;
|
||||
m_uart.command_register = 0;
|
||||
m_uart.receive_pointer = -1;
|
||||
m_uart.transmit_pointer = -1;
|
||||
m_i2c.status_register = ISR_PIN;
|
||||
m_i2c.control_register = 0;
|
||||
m_i2c.clock_control_register = 0;
|
||||
m_i2c.scl_out_state = true;
|
||||
m_i2c.scl_in_state = true;
|
||||
m_i2c.sda_out_state = true;
|
||||
m_i2c.state = I2C_IDLE;
|
||||
m_i2c.clock_change_state = I2C_SCL_IDLE;
|
||||
m_i2c.clocks = 0;
|
||||
m_uart.command_register = 0;
|
||||
m_uart.receive_pointer = -1;
|
||||
m_uart.transmit_pointer = -1;
|
||||
|
||||
m_uart.mode_register = 0;
|
||||
m_uart.status_register = USR_TXRDY;
|
||||
m_uart.clock_select = 0;
|
||||
m_uart.mode_register = 0;
|
||||
m_uart.status_register = USR_TXRDY;
|
||||
m_uart.clock_select = 0;
|
||||
|
||||
m_timers.timer_status_register = 0;
|
||||
m_timers.timer_control_register = 0;
|
||||
m_timers.timer_status_register = 0;
|
||||
m_timers.timer_control_register = 0;
|
||||
|
||||
m_uart.rx_timer->adjust(attotime::never);
|
||||
m_uart.tx_timer->adjust(attotime::never);
|
||||
m_timers.timer0_timer->adjust(attotime::never);
|
||||
m_i2c.timer->adjust(attotime::never);
|
||||
m_uart.rx_timer->adjust(attotime::never);
|
||||
m_uart.tx_timer->adjust(attotime::never);
|
||||
m_timers.timer0_timer->adjust(attotime::never);
|
||||
m_i2c.timer->adjust(attotime::never);
|
||||
|
||||
update_ipl();
|
||||
update_ipl();
|
||||
}
|
||||
}
|
||||
|
||||
void scc68070_device::update_ipl()
|
||||
|
@ -193,6 +193,7 @@ protected:
|
||||
// device_t implementation
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_config_complete() override;
|
||||
|
||||
// device_execute_interface implementation
|
||||
virtual u64 execute_clocks_to_cycles(u64 clocks) const noexcept override { return (clocks + 2 - 1) / 2; }
|
||||
|
@ -149,7 +149,7 @@ uint16_t bfm_swp_state::bfm_swp_mem_r(offs_t offset, uint16_t mem_mask)
|
||||
switch ( cs )
|
||||
{
|
||||
case 1:
|
||||
return m_cpuregion[offset & 0xfffff];
|
||||
return m_cpuregion[offset & 0x7ffff];
|
||||
case 2:
|
||||
return m_mainram[offset & 0x1fff];
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user