kyocera.cpp: Minor updates (nw)

- Simplify handlers
- Add U(S)ART interrupt to all sets
- Fix one region length
This commit is contained in:
AJR 2020-02-04 08:34:22 -05:00
parent dec802d363
commit 9222de1b41
2 changed files with 73 additions and 54 deletions

View File

@ -65,7 +65,7 @@
/* Read/Write Handlers */
READ8_MEMBER( pc8201_state::bank_r )
uint8_t pc8201_state::bank_r()
{
/*
@ -144,7 +144,7 @@ void pc8201_state::bankswitch(uint8_t data)
membank("bank2")->set_entry(ram_bank);
}
WRITE8_MEMBER( pc8201_state::bank_w )
void pc8201_state::bank_w(uint8_t data)
{
/*
@ -164,7 +164,7 @@ printf("bank %02x\n",data);
bankswitch(data);
}
WRITE8_MEMBER( pc8201_state::scp_w )
void pc8201_state::scp_w(uint8_t data)
{
/*
@ -194,7 +194,18 @@ WRITE8_MEMBER( pc8201_state::scp_w )
m_iosel = data >> 5;
}
WRITE8_MEMBER( kc85_state::uart_ctrl_w )
uint8_t kc85_state::uart_r()
{
if (!machine().side_effects_disabled())
{
m_uart->drr_w(0);
m_uart->drr_w(1);
}
return m_uart->read(machine().dummy_space(), 0);
}
void kc85_state::uart_ctrl_w(uint8_t data)
{
/*
@ -220,7 +231,7 @@ WRITE8_MEMBER( kc85_state::uart_ctrl_w )
m_uart->crl_w(1);
}
READ8_MEMBER( kc85_state::uart_status_r )
uint8_t kc85_state::uart_status_r()
{
/*
@ -263,7 +274,7 @@ READ8_MEMBER( kc85_state::uart_status_r )
return data;
}
READ8_MEMBER( pc8201_state::uart_status_r )
uint8_t pc8201_state::uart_status_r()
{
/*
@ -306,7 +317,7 @@ READ8_MEMBER( pc8201_state::uart_status_r )
return data;
}
WRITE8_MEMBER( pc8201_state::romah_w )
void pc8201_state::romah_w(uint8_t data)
{
/*
@ -330,7 +341,7 @@ WRITE8_MEMBER( pc8201_state::romah_w )
m_rom_sel = BIT(data, 1);
}
WRITE8_MEMBER( pc8201_state::romal_w )
void pc8201_state::romal_w(uint8_t data)
{
/*
@ -350,7 +361,7 @@ WRITE8_MEMBER( pc8201_state::romal_w )
m_rom_addr = (m_rom_addr & 0x1ff00) | data;
}
WRITE8_MEMBER( pc8201_state::romam_w )
void pc8201_state::romam_w(uint8_t data)
{
/*
@ -370,7 +381,7 @@ WRITE8_MEMBER( pc8201_state::romam_w )
m_rom_addr = (m_rom_addr & 0x100ff) | (data << 8);
}
READ8_MEMBER( pc8201_state::romrd_r )
uint8_t pc8201_state::romrd_r()
{
uint8_t data = 0xff;
@ -380,7 +391,7 @@ READ8_MEMBER( pc8201_state::romrd_r )
return data;
}
WRITE8_MEMBER( kc85_state::modem_w )
void kc85_state::modem_w(uint8_t data)
{
/*
@ -400,7 +411,7 @@ WRITE8_MEMBER( kc85_state::modem_w )
//m_modem->en_w(BIT(data, 1));
}
WRITE8_MEMBER( kc85_state::ctrl_w )
void kc85_state::ctrl_w(uint8_t data)
{
/*
@ -430,7 +441,7 @@ WRITE8_MEMBER( kc85_state::ctrl_w )
m_cassette->change_state(BIT(data,3) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
}
READ8_MEMBER( kc85_state::keyboard_r )
uint8_t kc85_state::keyboard_r()
{
uint8_t data = 0xff;
@ -475,17 +486,17 @@ void tandy200_state::bankswitch(uint8_t data)
}
}
READ8_MEMBER( tandy200_state::bank_r )
uint8_t tandy200_state::bank_r()
{
return m_bank;
}
WRITE8_MEMBER( tandy200_state::bank_w )
void tandy200_state::bank_w(uint8_t data)
{
bankswitch(data);
}
READ8_MEMBER( tandy200_state::stbk_r )
uint8_t tandy200_state::stbk_r()
{
uint8_t data = 0xff;
@ -497,7 +508,7 @@ READ8_MEMBER( tandy200_state::stbk_r )
return data;
}
WRITE8_MEMBER( tandy200_state::stbk_w )
void tandy200_state::stbk_w(uint8_t data)
{
/*
@ -521,8 +532,9 @@ WRITE8_MEMBER( tandy200_state::stbk_w )
m_cassette->change_state(BIT(data,1) ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
}
READ8_MEMBER( kc85_state::lcd_r )
uint8_t kc85_state::lcd_r(offs_t offset)
{
address_space &space = machine().dummy_space();
uint8_t data = 0;
for (uint8_t i = 0; i < 10; i++)
@ -531,8 +543,10 @@ READ8_MEMBER( kc85_state::lcd_r )
return data;
}
WRITE8_MEMBER( kc85_state::lcd_w )
void kc85_state::lcd_w(offs_t offset, uint8_t data)
{
address_space &space = machine().dummy_space();
for (uint8_t i = 0; i < 10; i++)
m_lcdc[i]->write(space, offset, data);
}
@ -569,7 +583,7 @@ void kc85_state::kc85_io(address_map &map)
// map(0x90, 0x90).mirror(0x0f); optional answering telephone unit
// map(0xa0, 0xa0).mirror(0x0f); optional modem
map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write));
map(0xc0, 0xc0).mirror(0x0f).r(FUNC(kc85_state::uart_r)).w(m_uart, FUNC(im6402_device::write));
map(0xd0, 0xd0).mirror(0x0f).rw(FUNC(kc85_state::uart_status_r), FUNC(kc85_state::uart_ctrl_w));
map(0xe0, 0xe0).mirror(0x0f).rw(FUNC(kc85_state::keyboard_r), FUNC(kc85_state::ctrl_w));
map(0xf0, 0xf1).mirror(0x0e).rw(FUNC(kc85_state::lcd_r), FUNC(kc85_state::lcd_w));
@ -592,7 +606,7 @@ void pc8201_state::pc8201_io(address_map &map)
map(0x90, 0x90).mirror(0x0f).w(FUNC(pc8201_state::scp_w));
map(0xa0, 0xa0).mirror(0x0f).rw(FUNC(pc8201_state::bank_r), FUNC(pc8201_state::bank_w));
map(0xb0, 0xb7).mirror(0x08).rw(I8155_TAG, FUNC(i8155_device::io_r), FUNC(i8155_device::io_w));
map(0xc0, 0xc0).mirror(0x0f).rw(m_uart, FUNC(im6402_device::read), FUNC(im6402_device::write));
map(0xc0, 0xc0).mirror(0x0f).r(FUNC(pc8201_state::uart_r)).w(m_uart, FUNC(im6402_device::write));
map(0xd0, 0xd0).mirror(0x0f).r(FUNC(pc8201_state::uart_status_r)).w(FUNC(pc8201_state::uart_ctrl_w));
map(0xe0, 0xe0).mirror(0x0f).r(FUNC(pc8201_state::keyboard_r));
map(0xf0, 0xf1).mirror(0x0e).rw(FUNC(pc8201_state::lcd_r), FUNC(pc8201_state::lcd_w));
@ -918,7 +932,7 @@ INPUT_PORTS_END
/* 8155 Interface */
WRITE8_MEMBER( kc85_state::i8155_pa_w )
void kc85_state::i8155_pa_w(uint8_t data)
{
/*
@ -950,7 +964,7 @@ WRITE8_MEMBER( kc85_state::i8155_pa_w )
m_rtc->data_in_w(BIT(data, 4));
}
WRITE8_MEMBER( kc85_state::i8155_pb_w )
void kc85_state::i8155_pb_w(uint8_t data)
{
/*
@ -995,7 +1009,7 @@ WRITE_LINE_MEMBER( kc85_state::write_centronics_select )
m_centronics_select = state;
}
READ8_MEMBER( kc85_state::i8155_pc_r )
uint8_t kc85_state::i8155_pc_r()
{
/*
@ -1037,7 +1051,7 @@ WRITE_LINE_MEMBER( kc85_state::i8155_to_w )
m_uart->rrc_w(state);
}
WRITE8_MEMBER( tandy200_state::i8155_pa_w )
void tandy200_state::i8155_pa_w(uint8_t data)
{
/*
@ -1059,7 +1073,7 @@ WRITE8_MEMBER( tandy200_state::i8155_pa_w )
m_keylatch = (m_keylatch & 0x100) | data;
}
WRITE8_MEMBER( tandy200_state::i8155_pb_w )
void tandy200_state::i8155_pb_w(uint8_t data)
{
/*
@ -1096,7 +1110,7 @@ WRITE_LINE_MEMBER( tandy200_state::write_centronics_select )
m_centronics_select = state;
}
READ8_MEMBER( tandy200_state::i8155_pc_r )
uint8_t tandy200_state::i8155_pc_r()
{
/*
@ -1343,6 +1357,7 @@ void kc85_state::kc85(machine_config &config)
IM6402(config, m_uart, 0, 0);
m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
m_uart->dr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri));
@ -1392,6 +1407,7 @@ void pc8201_state::pc8201(machine_config &config)
IM6402(config, m_uart, 0, 0);
m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
m_uart->dr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri));
@ -1450,6 +1466,7 @@ void trsm100_state::trsm100(machine_config &config)
IM6402(config, m_uart, 0, 0);
m_uart->tro_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
m_uart->dr_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(im6402_device::write_rri));
@ -1508,10 +1525,11 @@ void tandy200_state::tandy200(machine_config &config)
RP5C01(config, m_rtc, XTAL(32'768));
i8251_device &i8251(I8251(config, I8251_TAG, 0)); /*XTAL(4'915'200)/2,*/
i8251_device &i8251(I8251(config, I8251_TAG, XTAL(4'915'200)/2));
i8251.txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
i8251.dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr));
i8251.rts_handler().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
i8251.rxrdy_handler().set_inputline(m_maincpu, I8085_RST65_LINE);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(I8251_TAG, FUNC(i8251_device::write_rxd));
@ -1574,7 +1592,7 @@ ROM_END
ROM_START( m10 )
// 3256C02-4B3/I Italian
ROM_REGION( 0x8010, I8085_TAG, 0 )
ROM_REGION( 0x8000, I8085_TAG, 0 )
ROM_LOAD( "m10rom.m12", 0x0000, 0x8000, CRC(f0e8447a) SHA1(d58867276213116a79f7074109b7d7ce02e8a3af) )
ROM_END

View File

@ -71,9 +71,9 @@ public:
DECLARE_WRITE_LINE_MEMBER(kc85_sod_w);
DECLARE_READ_LINE_MEMBER(kc85_sid_r);
DECLARE_WRITE8_MEMBER( i8155_pa_w );
DECLARE_WRITE8_MEMBER( i8155_pb_w );
DECLARE_READ8_MEMBER( i8155_pc_r );
void i8155_pa_w(uint8_t data);
void i8155_pb_w(uint8_t data);
uint8_t i8155_pc_r();
DECLARE_WRITE_LINE_MEMBER( i8155_to_w );
DECLARE_WRITE_LINE_MEMBER( write_centronics_busy );
@ -99,13 +99,14 @@ protected:
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER( uart_status_r );
DECLARE_WRITE8_MEMBER( uart_ctrl_w );
DECLARE_WRITE8_MEMBER( modem_w );
DECLARE_WRITE8_MEMBER( ctrl_w );
DECLARE_READ8_MEMBER( keyboard_r );
DECLARE_READ8_MEMBER( lcd_r );
DECLARE_WRITE8_MEMBER( lcd_w );
uint8_t uart_r();
uint8_t uart_status_r();
void uart_ctrl_w(uint8_t data);
void modem_w(uint8_t data);
void ctrl_w(uint8_t data);
uint8_t keyboard_r();
uint8_t lcd_r(offs_t offset);
void lcd_w(offs_t offset, uint8_t data);
/* memory state */
uint8_t m_bank; /* memory bank selection */
@ -149,14 +150,14 @@ public:
virtual void machine_start() override;
required_device<generic_slot_device> m_cas_cart;
DECLARE_READ8_MEMBER( bank_r );
DECLARE_WRITE8_MEMBER( bank_w );
DECLARE_WRITE8_MEMBER( scp_w );
DECLARE_READ8_MEMBER( uart_status_r );
DECLARE_WRITE8_MEMBER( romah_w );
DECLARE_WRITE8_MEMBER( romal_w );
DECLARE_WRITE8_MEMBER( romam_w );
DECLARE_READ8_MEMBER( romrd_r );
uint8_t bank_r();
void bank_w(uint8_t data);
void scp_w(uint8_t data);
uint8_t uart_status_r();
void romah_w(uint8_t data);
void romal_w(uint8_t data);
void romam_w(uint8_t data);
uint8_t romrd_r();
void bankswitch(uint8_t data);
@ -209,13 +210,13 @@ public:
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
DECLARE_READ8_MEMBER( bank_r );
DECLARE_WRITE8_MEMBER( bank_w );
DECLARE_READ8_MEMBER( stbk_r );
DECLARE_WRITE8_MEMBER( stbk_w );
DECLARE_WRITE8_MEMBER( i8155_pa_w );
DECLARE_WRITE8_MEMBER( i8155_pb_w );
DECLARE_READ8_MEMBER( i8155_pc_r );
uint8_t bank_r();
void bank_w(uint8_t data);
uint8_t stbk_r();
void stbk_w(uint8_t data);
void i8155_pa_w(uint8_t data);
void i8155_pb_w(uint8_t data);
uint8_t i8155_pc_r();
DECLARE_WRITE_LINE_MEMBER( i8155_to_w );
DECLARE_WRITE_LINE_MEMBER(kc85_sod_w);
DECLARE_READ_LINE_MEMBER(kc85_sid_r);