summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/votrpss.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/votrpss.cpp')
-rw-r--r--src/mame/drivers/votrpss.cpp49
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 )