seattlecmp.cpp: 8-bit access for monitor ROM; rename region (nw)

This commit is contained in:
AJR 2019-11-17 21:29:39 -05:00
parent 9c656007df
commit 10f69d788b

View File

@ -45,22 +45,24 @@ public:
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_pic(*this, "pic%u", 1)
, m_monitor(*this, "monitor")
{ }
void seattle(machine_config &config);
private:
DECLARE_READ8_MEMBER(pic_slave_ack);
u8 pic_slave_ack(offs_t offset);
void io_map(address_map &map);
void mem_map(address_map &map);
required_device<cpu_device> m_maincpu;
required_device_array<pic8259_device, 2> m_pic;
required_region_ptr<u8> m_monitor;
};
READ8_MEMBER(seattle_comp_state::pic_slave_ack)
u8 seattle_comp_state::pic_slave_ack(offs_t offset)
{
if (offset == 1)
return m_pic[1]->acknowledge();
@ -73,7 +75,7 @@ void seattle_comp_state::mem_map(address_map &map)
{
map.unmap_value_high();
map(0x00000, 0xff7ff).ram();
map(0xff800, 0xfffff).rom().region("user1", 0);
map(0xff800, 0xfffff).lr8([this](offs_t offset) { return m_monitor[offset]; }, "monitor_r");
}
void seattle_comp_state::io_map(address_map &map)
@ -106,16 +108,16 @@ DEVICE_INPUT_DEFAULTS_END
void seattle_comp_state::seattle(machine_config &config)
{
/* basic machine hardware */
I8086(config, m_maincpu, XTAL(24'000'000) / 3); // 8 MHz or 4 MHz selectable
I8086(config, m_maincpu, 24_MHz_XTAL / 3); // 8 MHz or 4 MHz selectable
m_maincpu->set_addrmap(AS_PROGRAM, &seattle_comp_state::mem_map);
m_maincpu->set_addrmap(AS_IO, &seattle_comp_state::io_map);
m_maincpu->set_irq_acknowledge_callback("pic1", FUNC(pic8259_device::inta_cb));
PIC8259(config, m_pic[0], 0);
PIC8259(config, m_pic[0]);
m_pic[0]->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_INT0);
m_pic[0]->read_slave_ack_callback().set(FUNC(seattle_comp_state::pic_slave_ack));
PIC8259(config, m_pic[1], 0);
PIC8259(config, m_pic[1]);
m_pic[1]->out_int_callback().set(m_pic[0], FUNC(pic8259_device::ir1_w));
am9513_device &stc(AM9513(config, "stc", 4_MHz_XTAL)); // dedicated XTAL
@ -127,7 +129,7 @@ void seattle_comp_state::seattle(machine_config &config)
stc.fout_cb().set("stc", FUNC(am9513_device::source1_w));
// FOUT not shown on schematics, which inexplicably have Source 1 tied to Gate 5
i8251_device &uart(I8251(config, "uart", XTAL(24'000'000) / 12)); // CLOCK on line 49
i8251_device &uart(I8251(config, "uart", 24_MHz_XTAL / 12)); // CLOCK on line 49
uart.txd_handler().set("rs232", FUNC(rs232_port_device::write_txd));
uart.dtr_handler().set("rs232", FUNC(rs232_port_device::write_dtr));
uart.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts));
@ -143,7 +145,7 @@ void seattle_comp_state::seattle(machine_config &config)
/* ROM definition */
ROM_START( scp300f )
ROM_REGION( 0x800, "user1", 0 )
ROM_REGION( 0x800, "monitor", 0 )
ROM_LOAD( "mon86 v1.5tdd", 0x0000, 0x0800, CRC(7db23169) SHA1(c791b02ca33a4e1f8e95eb541624a59738f378c4))
ROM_END