mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
(nw) mx2178 : added required nmi
This commit is contained in:
parent
85d253fcf5
commit
e28f1da1fc
@ -2,23 +2,23 @@
|
||||
// copyright-holders:Robbbert
|
||||
/***************************************************************************************************
|
||||
|
||||
Skeleton driver for Memorex 2178
|
||||
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.
|
||||
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.
|
||||
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("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("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("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("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("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("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 */
|
||||
|
Loading…
Reference in New Issue
Block a user