summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vt100.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vt100.cpp')
-rw-r--r--src/mame/drivers/vt100.cpp95
1 files changed, 46 insertions, 49 deletions
diff --git a/src/mame/drivers/vt100.cpp b/src/mame/drivers/vt100.cpp
index 3d3549a77db..11ee97e72ff 100644
--- a/src/mame/drivers/vt100.cpp
+++ b/src/mame/drivers/vt100.cpp
@@ -89,19 +89,18 @@ private:
required_device<rst_pos_buffer_device> m_rstbuf;
required_device<rs232_port_device> m_rs232;
optional_device<ins8250_device> m_printer_uart;
- required_shared_ptr<u8> m_p_ram;
-
- u8 flags_r();
- u8 modem_r();
- void nvr_latch_w(u8 data);
- u8 printer_r(offs_t offset);
- void printer_w(offs_t offset, u8 data);
- u8 video_ram_r(offs_t offset);
- void uart_clock_w(u8 data);
-
+ DECLARE_READ8_MEMBER(flags_r);
+ DECLARE_WRITE8_MEMBER(baud_rate_w);
+ DECLARE_READ8_MEMBER(modem_r);
+ DECLARE_WRITE8_MEMBER(nvr_latch_w);
+ DECLARE_READ8_MEMBER(printer_r);
+ DECLARE_WRITE8_MEMBER(printer_w);
+ DECLARE_READ8_MEMBER(video_ram_r);
+ DECLARE_WRITE8_MEMBER(uart_clock_w);
+ required_shared_ptr<uint8_t> m_p_ram;
virtual void machine_start() override;
virtual void machine_reset() override;
- u32 screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ uint32_t screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
IRQ_CALLBACK_MEMBER(vt102_irq_callback);
void vt100_mem(address_map &map);
void vt100_io(address_map &map);
@@ -149,9 +148,9 @@ void vt100_state::vt180_io(address_map &map)
// 5 - NVR data H
// 6 - LBA 7 H
// 7 - Keyboard TBMT H
-u8 vt100_state::flags_r()
+READ8_MEMBER(vt100_state::flags_r)
{
- u8 ret = 0;
+ uint8_t ret = 0;
ret |= m_pusart->txrdy_r();
ret |= !m_nvr->data_r() << 5;
@@ -160,9 +159,9 @@ u8 vt100_state::flags_r()
return ret;
}
-u8 vt100_state::modem_r()
+READ8_MEMBER(vt100_state::modem_r)
{
- u8 ret = 0x0f;
+ uint8_t ret = 0x0f;
ret |= m_rs232->cts_r() << 7;
ret |= m_rs232->si_r() << 6;
@@ -172,7 +171,7 @@ u8 vt100_state::modem_r()
return ret;
}
-void vt100_state::nvr_latch_w(u8 data)
+WRITE8_MEMBER(vt100_state::nvr_latch_w)
{
// data inverted due to negative logic
m_nvr->c3_w(!BIT(data, 3));
@@ -212,14 +211,14 @@ void vt100_state::vt100_io(address_map &map)
// map (0xe2, 0xe2)
}
-u8 vt100_state::printer_r(offs_t offset)
+READ8_MEMBER(vt100_state::printer_r)
{
- return m_printer_uart->ins8250_r(machine().dummy_space(), offset >> 2);
+ return m_printer_uart->ins8250_r(space, offset >> 2);
}
-void vt100_state::printer_w(offs_t offset, u8 data)
+WRITE8_MEMBER(vt100_state::printer_w)
{
- m_printer_uart->ins8250_w(machine().dummy_space(), offset >> 2, data);
+ m_printer_uart->ins8250_w(space, offset >> 2, data);
}
void vt100_state::vt102_io(address_map &map)
@@ -233,7 +232,7 @@ void vt100_state::vt102_io(address_map &map)
static INPUT_PORTS_START( vt100 )
INPUT_PORTS_END
-u32 vt100_state::screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+uint32_t vt100_state::screen_update_vt100(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
m_crtc->video_update(bitmap, cliprect);
return 0;
@@ -275,15 +274,15 @@ void vt100_state::machine_start()
void vt100_state::machine_reset()
{
- nvr_latch_w(0);
+ nvr_latch_w(machine().dummy_space(), 0, 0);
}
-u8 vt100_state::video_ram_r(offs_t offset)
+READ8_MEMBER(vt100_state::video_ram_r)
{
return m_p_ram[offset];
}
-void vt100_state::uart_clock_w(u8 data)
+WRITE8_MEMBER(vt100_state::uart_clock_w)
{
m_kbduart->write_tcp(BIT(data, 1));
m_kbduart->write_rcp(BIT(data, 1));
@@ -312,23 +311,22 @@ static GFXDECODE_START( gfx_vt100 )
GFXDECODE_ENTRY( "chargen", 0x0000, vt100_charlayout, 0, 1 )
GFXDECODE_END
-void vt100_state::vt100(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt100)
/* basic machine hardware */
- I8080(config, m_maincpu, XTAL(24'883'200) / 9);
- m_maincpu->set_addrmap(AS_PROGRAM, &vt100_state::vt100_mem);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt100_io);
- m_maincpu->set_irq_acknowledge_callback("rstbuf", FUNC(rst_pos_buffer_device::inta_cb));
+ MCFG_DEVICE_ADD("maincpu", I8080, XTAL(24'883'200) / 9)
+ MCFG_DEVICE_PROGRAM_MAP(vt100_mem)
+ MCFG_DEVICE_IO_MAP(vt100_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("rstbuf", rst_pos_buffer_device, inta_cb)
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER, rgb_t::green()));
- screen.set_raw(XTAL(24'073'400)*2/3, 102*10, 0, 80*10, 262, 0, 25*10);
- //screen.set_raw(XTAL(24'073'400), 170*9, 0, 132*9, 262, 0, 25*10);
- screen.set_screen_update(FUNC(vt100_state::screen_update_vt100));
- screen.set_palette("vt100_video:palette");
+ MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
+ MCFG_SCREEN_RAW_PARAMS(XTAL(24'073'400)*2/3, 102*10, 0, 80*10, 262, 0, 25*10)
+ //MCFG_SCREEN_RAW_PARAMS(XTAL(24'073'400), 170*9, 0, 132*9, 262, 0, 25*10)
+ MCFG_SCREEN_UPDATE_DRIVER(vt100_state, screen_update_vt100)
+ MCFG_SCREEN_PALETTE("vt100_video:palette")
- GFXDECODE(config, "gfxdecode", "vt100_video:palette", gfx_vt100);
-// PALETTE(config, "palette", palette_device::MONOCHROME);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "vt100_video:palette", gfx_vt100)
+// MCFG_PALETTE_ADD_MONOCHROME("palette")
config.set_default_layout(layout_vt100);
@@ -363,7 +361,7 @@ void vt100_state::vt100(machine_config &config)
m_kbduart->set_auto_rdav(true);
RST_POS_BUFFER(config, m_rstbuf, 0).int_callback().set_inputline(m_maincpu, 0);
-}
+MACHINE_CONFIG_END
void vt100_state::stp_mem(address_map &map)
{
@@ -424,14 +422,13 @@ void vt100_state::vt180(machine_config &config)
z80cpu.set_io_map(&vt100_state::vt180_io);
}
-void vt100_state::vt101(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt101)
vt100(config);
- I8085A(config.replace(), m_maincpu, XTAL(24'073'400) / 4);
- m_maincpu->set_addrmap(AS_PROGRAM, &vt100_state::vt100_mem);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt100_io);
- m_maincpu->set_irq_acknowledge_callback(FUNC(vt100_state::vt102_irq_callback));
+ MCFG_DEVICE_REPLACE(m_maincpu, I8085A, XTAL(24'073'400) / 4)
+ MCFG_DEVICE_PROGRAM_MAP(vt100_mem)
+ MCFG_DEVICE_IO_MAP(vt100_io)
+ MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(vt100_state, vt102_irq_callback)
m_pusart->set_clock(XTAL(24'073'400) / 8);
m_pusart->txrdy_handler().set_inputline(m_maincpu, I8085_RST55_LINE); // 8085 pin 9, mislabeled RST 7.5 on schematics
@@ -441,13 +438,13 @@ void vt100_state::vt101(machine_config &config)
dbrg.ft_handler().set(m_pusart, FUNC(i8251_device::write_txc));
m_kbduart->write_tbmt_callback().set_inputline(m_maincpu, I8085_RST65_LINE);
-}
+MACHINE_CONFIG_END
-void vt100_state::vt102(machine_config &config)
-{
+MACHINE_CONFIG_START(vt100_state::vt102)
vt101(config);
- m_maincpu->set_addrmap(AS_IO, &vt100_state::vt102_io);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(vt102_io)
ins8250_device &printuart(INS8250(config, "printuart", XTAL(24'073'400) / 16));
printuart.out_tx_callback().set("printer", FUNC(rs232_port_device::write_txd));
@@ -456,7 +453,7 @@ void vt100_state::vt102(machine_config &config)
rs232_port_device &printer(RS232_PORT(config, "printer", default_rs232_devices, nullptr));
printer.rxd_handler().set("printuart", FUNC(ins8250_device::rx_w));
printer.dsr_handler().set("printuart", FUNC(ins8250_device::dsr_w));
-}
+MACHINE_CONFIG_END
/* VT1xx models:
* VT100 - 1978 base model. the 'later' ROM is from 1979 or 1980.