From e28f1da1fcfa10474aa5a58f7bd830bdd631153b Mon Sep 17 00:00:00 2001 From: Robbbert Date: Fri, 20 Oct 2017 11:12:32 +1100 Subject: (nw) mx2178 : added required nmi --- src/mame/drivers/mx2178.cpp | 71 +++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 29 deletions(-) diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp index 471d8bf37a0..142caabf48d 100644 --- a/src/mame/drivers/mx2178.cpp +++ b/src/mame/drivers/mx2178.cpp @@ -2,23 +2,23 @@ // copyright-holders:Robbbert /*************************************************************************************************** - Skeleton driver for Memorex 2178 - - Chips: Z80A, N8X305N, 2x B8452A, 4x D4016C-3, 2x HD468A50P, HD46505SP-1 - Crystal: 18.8696MHz - There is a large piezo-beeper. - - TODO: - - Connect up the beeper - - RS232 not working (6850 parameters are /64, 8 bit, 2 stop bit, IRQ when key pressed) - - Unknown port i/o 80 - - Unknown memory i/o C000, 4000 - - Need schematic / tech manual - - Gets stuck waiting for E011 to become zero somehow. If you skip that, a status line appears. - - Doesn't seem to be any dips, looks like all settings and modes are controlled by keystrokes. - - 8X305 is a 16-bit Microcontroller which should have an external ROM. It would communicate with - the Z80 via a common 8-bit I/O bus. No idea what it is used for here, but in another system it - acts as the floppy disk controller. +Skeleton driver for Memorex 2178 + +Chips: Z80A, N8X305N, 2x B8452A, 4x D4016C-3, 2x HD468A50P, HD46505SP-1 +Crystal: 18.8696MHz +There is a large piezo-beeper. + +TODO: +- Connect up the beeper +- Unknown memory i/o C000, 4000 +- Need schematic / tech manual +- Doesn't seem to be any dips, looks like all settings and modes are controlled by keystrokes. +- 8X305 is a 16-bit Microcontroller which should have an external ROM. It would communicate with + the Z80 via a common 8-bit I/O bus. No idea what it is used for here, but in another system it + acts as the floppy disk controller. +- Debug trick: set pc=809 to see the test menu. +- It shows the status line but keystrokes are ignored. After 20 minutes of inactivity, the screen + goes blank. Pressing a key will restore it. ***************************************************************************************************/ @@ -40,8 +40,7 @@ public: , m_p_videoram(*this, "videoram") , m_maincpu(*this, "maincpu") , m_p_chargen(*this, "chargen") - { - } + { } MC6845_UPDATE_ROW(crtc_update_row); @@ -65,8 +64,10 @@ static ADDRESS_MAP_START(mx2178_io, AS_IO, 8, mx2178_state) ADDRESS_MAP_GLOBAL_MASK(0xff) AM_RANGE(0x00, 0x00) AM_DEVREADWRITE("crtc", mc6845_device, status_r, address_w) AM_RANGE(0x01, 0x01) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) - AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("acia", acia6850_device, status_r, control_w) - AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("acia", acia6850_device, data_r, data_w) + AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("acia1", acia6850_device, status_r, control_w) + AM_RANGE(0x81, 0x81) AM_DEVREADWRITE("acia1", acia6850_device, data_r, data_w) + AM_RANGE(0xa0, 0xa0) AM_DEVREADWRITE("acia2", acia6850_device, status_r, control_w) + AM_RANGE(0xa1, 0xa1) AM_DEVREADWRITE("acia2", acia6850_device, data_r, data_w) ADDRESS_MAP_END @@ -144,19 +145,31 @@ static MACHINE_CONFIG_START( mx2178 ) MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(8) MCFG_MC6845_UPDATE_ROW_CB(mx2178_state, crtc_update_row) + MCFG_MC6845_OUT_VSYNC_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_DEVICE_ADD("acia_clock", CLOCK, 18869600/30) - MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("acia", acia6850_device, write_txc)) - MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia", acia6850_device, write_rxc)) + MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("acia1", acia6850_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia1", acia6850_device, write_rxc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia2", acia6850_device, write_rxc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("acia2", acia6850_device, write_rxc)) + + MCFG_DEVICE_ADD("acia1", ACIA6850, 0) + MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_txd)) + MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232a", rs232_port_device, write_rts)) + MCFG_ACIA6850_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr) + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia1", acia6850_device, write_rxd)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia1", acia6850_device, write_cts)) - MCFG_DEVICE_ADD("acia", ACIA6850, 0) - MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + MCFG_DEVICE_ADD("acia2", ACIA6850, 0) + MCFG_ACIA6850_TXD_HANDLER(DEVWRITELINE("rs232b", rs232_port_device, write_txd)) + MCFG_ACIA6850_RTS_HANDLER(DEVWRITELINE("rs232b", rs232_port_device, write_rts)) MCFG_ACIA6850_IRQ_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, "keyboard") - MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia", acia6850_device, write_rxd)) - MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia", acia6850_device, write_cts)) + MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, "keyboard") + MCFG_RS232_RXD_HANDLER(DEVWRITELINE("acia2", acia6850_device, write_rxd)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("acia2", acia6850_device, write_cts)) MACHINE_CONFIG_END /* ROM definition */ -- cgit v1.2.3