mirror of
https://github.com/holub/mame
synced 2025-04-22 16:31:49 +03:00
tv990.cpp: Remove MCFG macros and INTERRUPT_GEN (nw)
This commit is contained in:
parent
1039de5737
commit
17f7f41ff0
@ -42,8 +42,6 @@
|
||||
#include "speaker.h"
|
||||
|
||||
|
||||
#define UART0_TAG "ns16450_0"
|
||||
#define UART1_TAG "ns16450_1"
|
||||
#define RS232A_TAG "rs232a"
|
||||
#define RS232B_TAG "rs232b"
|
||||
#define LPT_TAG "lpt"
|
||||
@ -56,8 +54,7 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_vram(*this, "vram"),
|
||||
m_fontram(*this, "fontram"),
|
||||
m_uart0(*this, UART0_TAG),
|
||||
m_uart1(*this, UART1_TAG),
|
||||
m_uart(*this, "ns16450_%u", 0U),
|
||||
m_screen(*this, "screen"),
|
||||
m_kbdc(*this, "pc_kbdc"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -73,7 +70,7 @@ private:
|
||||
required_device<m68000_device> m_maincpu;
|
||||
required_shared_ptr<uint16_t> m_vram;
|
||||
required_shared_ptr<uint16_t> m_fontram;
|
||||
required_device<ns16450_device> m_uart0, m_uart1;
|
||||
required_device_array<ns16450_device, 2> m_uart;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<kbdc8042_device> m_kbdc;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -94,8 +91,8 @@ private:
|
||||
DECLARE_WRITE_LINE_MEMBER(uart0_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(uart1_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(lpt_irq);
|
||||
DECLARE_WRITE_LINE_MEMBER(vblank_irq);
|
||||
|
||||
INTERRUPT_GEN_MEMBER(vblank);
|
||||
void tv990_mem(address_map &map);
|
||||
|
||||
uint16_t tvi1111_regs[(0x100/2)+2];
|
||||
@ -103,11 +100,14 @@ private:
|
||||
int m_rowh, m_width, m_height;
|
||||
};
|
||||
|
||||
INTERRUPT_GEN_MEMBER(tv990_state::vblank)
|
||||
WRITE_LINE_MEMBER(tv990_state::vblank_irq)
|
||||
{
|
||||
m_rowtimer->adjust(m_screen->time_until_pos(m_rowh));
|
||||
m_maincpu->set_input_line(M68K_IRQ_6, ASSERT_LINE);
|
||||
tvi1111_regs[0x1d] |= 4;
|
||||
if (state)
|
||||
{
|
||||
m_rowtimer->adjust(m_screen->time_until_pos(m_rowh));
|
||||
m_maincpu->set_input_line(M68K_IRQ_6, ASSERT_LINE);
|
||||
tvi1111_regs[0x1d] |= 4;
|
||||
}
|
||||
}
|
||||
|
||||
void tv990_state::machine_start()
|
||||
@ -320,8 +320,8 @@ void tv990_state::tv990_mem(address_map &map)
|
||||
map(0x060000, 0x06ffff).ram().share("vram"); // character/attribute RAM
|
||||
map(0x080000, 0x087fff).ram().share("fontram"); // font RAM
|
||||
map(0x090000, 0x0900ff).rw(FUNC(tv990_state::tvi1111_r), FUNC(tv990_state::tvi1111_w));
|
||||
map(0x0a0000, 0x0a000f).rw(m_uart0, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
|
||||
map(0x0a0010, 0x0a001f).rw(UART1_TAG, FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
|
||||
map(0x0a0000, 0x0a000f).rw(m_uart[0], FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
|
||||
map(0x0a0010, 0x0a001f).rw(m_uart[1], FUNC(ns16450_device::ins8250_r), FUNC(ns16450_device::ins8250_w)).umask16(0x00ff);
|
||||
map(0x0a0028, 0x0a002d).rw(LPT_TAG, FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask16(0x00ff);
|
||||
map(0x0b0000, 0x0b0003).rw(FUNC(tv990_state::kbdc_r), FUNC(tv990_state::kbdc_w)).umask16(0x00ff);
|
||||
map(0x0c0000, 0x0c7fff).ram().share("nvram");// work RAM
|
||||
@ -374,43 +374,47 @@ void tv990_state::device_post_load()
|
||||
m_screen->set_visible_area(0, m_width * 16 - 1, 0, m_height * m_rowh - 1);
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(tv990_state::tv990)
|
||||
void tv990_state::tv990(machine_config &config)
|
||||
{
|
||||
/* basic machine hardware */
|
||||
MCFG_DEVICE_ADD("maincpu", M68000, 14967500) // verified (59.86992/4)
|
||||
MCFG_DEVICE_PROGRAM_MAP(tv990_mem)
|
||||
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", tv990_state, vblank)
|
||||
M68000(config, m_maincpu, 14967500); // verified (59.86992/4)
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &tv990_state::tv990_mem);
|
||||
|
||||
MCFG_SCREEN_ADD_MONOCHROME("screen", RASTER, rgb_t::green())
|
||||
MCFG_SCREEN_UPDATE_DRIVER(tv990_state, screen_update)
|
||||
MCFG_SCREEN_SIZE(132*16, 50*16)
|
||||
MCFG_SCREEN_VISIBLE_AREA(0, (80*16)-1, 0, (50*16)-1)
|
||||
MCFG_SCREEN_REFRESH_RATE(60)
|
||||
MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette")
|
||||
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
|
||||
m_screen->set_color(rgb_t::green());
|
||||
m_screen->set_screen_update(FUNC(tv990_state::screen_update));
|
||||
m_screen->set_size(132*16, 50*16);
|
||||
m_screen->set_visarea(0, (80*16)-1, 0, (50*16)-1);
|
||||
m_screen->set_refresh_hz(60);
|
||||
m_screen->screen_vblank().set(FUNC(tv990_state::vblank_irq));
|
||||
|
||||
NS16450(config, m_uart0, XTAL(3'686'400));
|
||||
m_uart0->out_dtr_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_dtr));
|
||||
m_uart0->out_rts_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_rts));
|
||||
m_uart0->out_tx_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_txd));
|
||||
m_uart0->out_int_callback().set(FUNC(tv990_state::uart0_irq));
|
||||
palette_device &palette(PALETTE(config, "palette", 3));
|
||||
palette.set_init("palette", FUNC(palette_device::palette_init_monochrome_highlight));
|
||||
|
||||
NS16450(config, m_uart1, XTAL(3'686'400));
|
||||
m_uart1->out_dtr_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_dtr));
|
||||
m_uart1->out_rts_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_rts));
|
||||
m_uart1->out_tx_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_txd));
|
||||
m_uart1->out_int_callback().set(FUNC(tv990_state::uart1_irq));
|
||||
NS16450(config, m_uart[0], 3.6864_MHz_XTAL);
|
||||
m_uart[0]->out_dtr_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_dtr));
|
||||
m_uart[0]->out_rts_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_rts));
|
||||
m_uart[0]->out_tx_callback().set(RS232A_TAG, FUNC(rs232_port_device::write_txd));
|
||||
m_uart[0]->out_int_callback().set(FUNC(tv990_state::uart0_irq));
|
||||
|
||||
NS16450(config, m_uart[1], 3.6864_MHz_XTAL);
|
||||
m_uart[1]->out_dtr_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_dtr));
|
||||
m_uart[1]->out_rts_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_rts));
|
||||
m_uart[1]->out_tx_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_txd));
|
||||
m_uart[1]->out_int_callback().set(FUNC(tv990_state::uart1_irq));
|
||||
|
||||
pc_lpt_device &lpt(PC_LPT(config, LPT_TAG));
|
||||
lpt.irq_handler().set(FUNC(tv990_state::lpt_irq));
|
||||
|
||||
MCFG_DEVICE_ADD(RS232A_TAG, RS232_PORT, default_rs232_devices, nullptr)
|
||||
MCFG_RS232_RXD_HANDLER(WRITELINE(UART0_TAG, ns16450_device, rx_w))
|
||||
MCFG_RS232_DCD_HANDLER(WRITELINE(UART0_TAG, ns16450_device, dcd_w))
|
||||
MCFG_RS232_CTS_HANDLER(WRITELINE(UART0_TAG, ns16450_device, cts_w))
|
||||
rs232_port_device &rs232a(RS232_PORT(config, RS232A_TAG, default_rs232_devices, nullptr));
|
||||
rs232a.rxd_handler().set(m_uart[0], FUNC(ns16450_device::rx_w));
|
||||
rs232a.dcd_handler().set(m_uart[0], FUNC(ns16450_device::dcd_w));
|
||||
rs232a.cts_handler().set(m_uart[0], FUNC(ns16450_device::cts_w));
|
||||
|
||||
MCFG_DEVICE_ADD(RS232B_TAG, RS232_PORT, default_rs232_devices, nullptr)
|
||||
MCFG_RS232_RXD_HANDLER(WRITELINE(UART1_TAG, ns16450_device, rx_w))
|
||||
MCFG_RS232_DCD_HANDLER(WRITELINE(UART1_TAG, ns16450_device, dcd_w))
|
||||
MCFG_RS232_CTS_HANDLER(WRITELINE(UART1_TAG, ns16450_device, cts_w))
|
||||
rs232_port_device &rs232b(RS232_PORT(config, RS232B_TAG, default_rs232_devices, nullptr));
|
||||
rs232b.rxd_handler().set(m_uart[1], FUNC(ns16450_device::rx_w));
|
||||
rs232b.dcd_handler().set(m_uart[1], FUNC(ns16450_device::dcd_w));
|
||||
rs232b.cts_handler().set(m_uart[1], FUNC(ns16450_device::cts_w));
|
||||
|
||||
KBDC8042(config, m_kbdc);
|
||||
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
|
||||
@ -419,9 +423,8 @@ MACHINE_CONFIG_START(tv990_state::tv990)
|
||||
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||
|
||||
SPEAKER(config, "mono").front_center();
|
||||
MCFG_DEVICE_ADD("beep", BEEP, 1000); //whats the freq?
|
||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
|
||||
MACHINE_CONFIG_END
|
||||
BEEP(config, "beep", 1000).add_route(ALL_OUTPUTS, "mono", 1.0); //whats the freq?
|
||||
}
|
||||
|
||||
/* ROM definition */
|
||||
ROM_START( tv990 )
|
||||
|
Loading…
Reference in New Issue
Block a user