6801: tcsr upper 3 bits are read-only (nw)

This commit is contained in:
hap 2020-05-09 17:15:46 +02:00
parent 97879948c2
commit 524439907a
4 changed files with 6 additions and 22 deletions

View File

@ -1352,10 +1352,10 @@ uint8_t hd6301x_cpu_device::p7_data_r()
void hd6301x_cpu_device::p7_data_w(uint8_t data)
{
LOGPORT("Port 7 Data Register: %02x\n", data);
data &= 0x1f;
LOGPORT("Port 7 Data Register: %02x\n", data);
m_portx_data[2] = data;
m_out_portx_func[2](0, m_portx_data[2], 0x1f);
}
@ -1369,9 +1369,11 @@ uint8_t m6801_cpu_device::tcsr_r()
void m6801_cpu_device::tcsr_w(uint8_t data)
{
data &= 0x1f;
LOGTIMER("Timer Control and Status Register: %02x\n", data);
m_tcsr = data;
m_tcsr = data | (m_tcsr & 0xe0);
m_pending_tcsr &= m_tcsr;
modified_tcsr();
if( !(m_cc & 0x10) )

View File

@ -91,10 +91,9 @@ protected:
uint8_t p4_data_r();
void p4_data_w(uint8_t data);
public: // FIXME: psion.cpp accesses this
protected:
uint8_t tcsr_r();
void tcsr_w(uint8_t data);
protected:
uint8_t ch_r();
uint8_t cl_r();
void ch_w(uint8_t data);

View File

@ -76,19 +76,6 @@ uint8_t psion_state::port2_r()
return m_pack1->data_r() | m_pack2->data_r();
}
void psion_state::tcsr_w(uint8_t data)
{
m_tcsr_value = data;
m_maincpu->tcsr_w(data);
}
uint8_t psion_state::tcsr_r()
{
if (!machine().side_effects_disabled())
m_maincpu->tcsr_w(m_tcsr_value);
return m_maincpu->tcsr_r();
}
uint8_t psion_state::rcp5c_r()
{
return (m_maincpu->rcr_r()&0x7f) | (m_stby_pwr<<7);
@ -247,7 +234,6 @@ void psion_state::psion_int_reg(address_map &map)
{
// FIXME: this should all be made internal to the CPU device
map(0x0000, 0x001f).m(m_maincpu, FUNC(hd6301x_cpu_device::hd6301x_io));
map(0x0008, 0x0008).rw(FUNC(psion_state::tcsr_r), FUNC(psion_state::tcsr_w));
map(0x0014, 0x0014).r(FUNC(psion_state::rcp5c_r));
}
@ -496,7 +482,6 @@ void psion_state::machine_start()
save_item(NAME(m_kb_counter));
save_item(NAME(m_enable_nmi));
save_item(NAME(m_tcsr_value));
save_item(NAME(m_stby_pwr));
save_item(NAME(m_pulse));
save_item(NAME(m_rom_bank));

View File

@ -85,8 +85,6 @@ protected:
void update_banks();
void port2_w(offs_t offset, uint8_t data, uint8_t ddr);
uint8_t port2_r();
void tcsr_w(uint8_t data);
uint8_t tcsr_r();
uint8_t rcp5c_r();
uint8_t port5_r();
void port6_w(uint8_t data);