diff options
Diffstat (limited to 'src/mame/drivers/votrpss.cpp')
-rw-r--r-- | src/mame/drivers/votrpss.cpp | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/src/mame/drivers/votrpss.cpp b/src/mame/drivers/votrpss.cpp index dc1c5d6a37a..4f17f1441b7 100644 --- a/src/mame/drivers/votrpss.cpp +++ b/src/mame/drivers/votrpss.cpp @@ -44,14 +44,22 @@ I8251 UART: RESET is taken from the same inverter that resets the counters Things to be looked at: -- Serial doesn't work, so has been disabled. -- Bottom 3 dips must be off/serial/off, or else nothing works. -- No sound at all. - volume and pitch should be controlled by ppi outputs - pit to be hooked up - bit 0 of portc is not connected according to text above, but it completely changes the irq operation. +Notes: +- When Serial dip is chosen, you type the commands in, but you cannot see anything. + If you enter text via parallel, it is echoed but otherwise ignored. +- When Parallel dip is chosen, you type the commands in, but again you cannot + see anything. +- These operations ARE BY DESIGN. Everything is working correctly. +- Commands are case-sensitive. +- Some tests... + - Say the time: EscT. (include the period) + - Play some notes: !T08:1234:125:129:125:130. (then press enter) + ******************************************************************************/ /* Core includes */ @@ -68,25 +76,18 @@ Things to be looked at: #include "machine/pit8253.h" #include "sound/ay8910.h" #include "sound/votrax.h" - -/* For testing */ #include "machine/terminal.h" - #include "speaker.h" -#define TERMINAL_TAG "terminal" - class votrpss_state : public driver_device { public: votrpss_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_terminal(*this, TERMINAL_TAG), - m_ppi(*this, "ppi"), - m_uart(*this, "uart") - { - } + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_terminal(*this, "terminal") + , m_ppi(*this, "ppi") + { } void kbd_put(u8 data); DECLARE_READ8_MEMBER(ppi_pa_r); @@ -108,7 +109,6 @@ private: required_device<cpu_device> m_maincpu; required_device<generic_terminal_device> m_terminal; required_device<i8255_device> m_ppi; - required_device<i8251_device> m_uart; }; @@ -161,7 +161,7 @@ static INPUT_PORTS_START(votrpss) PORT_DIPNAME( 0x20, 0x20, "Startup Message" ) PORT_DIPLOCATION("SW1:6") PORT_DIPSETTING( 0x00, DEF_STR ( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR ( On ) ) - PORT_DIPNAME( 0x40, 0x00, "Default Communications Port" ) PORT_DIPLOCATION("SW1:7") + PORT_DIPNAME( 0x40, 0x00, "Default Input Port" ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x00, "Serial/RS-232" ) PORT_DIPSETTING( 0x40, "Parallel" ) PORT_DIPNAME( 0x80, 0x00, "Self Test Mode" ) PORT_DIPLOCATION("SW1:8") @@ -208,7 +208,6 @@ READ8_MEMBER( votrpss_state::ppi_pc_r ) } return (m_portc & 0xdb) | data; - //return data; } WRITE8_MEMBER( votrpss_state::ppi_pa_w ) @@ -232,11 +231,6 @@ void votrpss_state::kbd_put(u8 data) m_term_data = data; } -DECLARE_WRITE_LINE_MEMBER( votrpss_state::write_uart_clock ) -{ - m_uart->write_txc(state); - m_uart->write_rxc(state); -} /****************************************************************************** Machine Drivers @@ -262,7 +256,7 @@ static MACHINE_CONFIG_START( votrpss ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* Devices */ - MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) + MCFG_DEVICE_ADD("terminal", GENERIC_TERMINAL, 0) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(votrpss_state, kbd_put)) MCFG_DEVICE_ADD("uart", I8251, 0) @@ -270,13 +264,16 @@ static MACHINE_CONFIG_START( votrpss ) MCFG_I8251_DTR_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_dtr)) MCFG_I8251_RTS_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_rts)) + // when serial is chosen, and you select terminal, nothing shows (by design). You can only type commands in. MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(DEVWRITELINE("uart", i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart", i8251_device, write_dsr)) + MCFG_RS232_CTS_HANDLER(DEVWRITELINE("uart", i8251_device, write_cts)) MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_8MHz) /* Timer 0: baud rate gen for 8251 */ - MCFG_PIT8253_OUT0_HANDLER(WRITELINE(votrpss_state, write_uart_clock)) + MCFG_PIT8253_OUT0_HANDLER(DEVWRITELINE("uart", i8251_device, write_txc)) + MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("uart", i8251_device, write_rxc)) MCFG_PIT8253_CLK1(XTAL_8MHz / 256) /* Timer 1: Pitch */ MCFG_PIT8253_CLK2(XTAL_8MHz / 4096) /* Timer 2: Volume */ @@ -323,4 +320,4 @@ ROM_END ******************************************************************************/ // YEAR NAME PARENT COMPAT MACHINE INPUT STATE INIT COMPANY FULLNAME FLAGS -COMP( 1982, votrpss, 0, 0, votrpss, votrpss, votrpss_state, 0, "Votrax", "Personal Speech System", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) +COMP( 1982, votrpss, 0, 0, votrpss, votrpss, votrpss_state, 0, "Votrax", "Personal Speech System", MACHINE_IMPERFECT_SOUND ) |