mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
(MESS) Votrtnt: connected acia and rs232
This commit is contained in:
parent
e434c2ba8d
commit
2c64811116
@ -25,22 +25,17 @@
|
|||||||
*
|
*
|
||||||
* ToDo:
|
* ToDo:
|
||||||
* - Votrax device needs considerable improvement in sound quality.
|
* - Votrax device needs considerable improvement in sound quality.
|
||||||
* - Reconnect the ACIA when serial coms become viable in MESS.
|
*
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/* Core includes */
|
/* Core includes */
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/m6800/m6800.h"
|
#include "cpu/m6800/m6800.h"
|
||||||
#include "votrtnt.lh"
|
|
||||||
|
|
||||||
/* Components */
|
|
||||||
#include "sound/votrax.h"
|
|
||||||
#include "machine/6850acia.h"
|
#include "machine/6850acia.h"
|
||||||
|
#include "machine/serial.h"
|
||||||
/* For testing */
|
#include "sound/votrax.h"
|
||||||
#include "machine/terminal.h"
|
#include "votrtnt.lh"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class votrtnt_state : public driver_device
|
class votrtnt_state : public driver_device
|
||||||
@ -49,34 +44,14 @@ public:
|
|||||||
votrtnt_state(const machine_config &mconfig, device_type type, const char *tag)
|
votrtnt_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_terminal(*this, TERMINAL_TAG),
|
|
||||||
//m_acia(*this, "acia_0"),
|
|
||||||
m_votrax(*this, "votrax")
|
m_votrax(*this, "votrax")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<generic_terminal_device> m_terminal;
|
|
||||||
//required_device<> m_acia;
|
|
||||||
required_device<votrax_sc01_device> m_votrax;
|
required_device<votrax_sc01_device> m_votrax;
|
||||||
DECLARE_READ8_MEMBER(votrtnt_acia_status_r);
|
|
||||||
DECLARE_READ8_MEMBER(votrtnt_acia_data_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(votrtnt_kbd_put);
|
|
||||||
UINT8 m_term_data;
|
|
||||||
UINT8 m_term_status;
|
|
||||||
virtual void machine_reset();
|
virtual void machine_reset();
|
||||||
};
|
};
|
||||||
|
|
||||||
READ8_MEMBER( votrtnt_state::votrtnt_acia_status_r )
|
|
||||||
{
|
|
||||||
return m_term_status;
|
|
||||||
}
|
|
||||||
|
|
||||||
READ8_MEMBER( votrtnt_state::votrtnt_acia_data_r )
|
|
||||||
{
|
|
||||||
m_term_status = 0xe2;
|
|
||||||
return m_term_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Address Maps
|
Address Maps
|
||||||
@ -86,10 +61,8 @@ static ADDRESS_MAP_START(6802_mem, AS_PROGRAM, 8, votrtnt_state)
|
|||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
ADDRESS_MAP_GLOBAL_MASK(0x6fff)
|
ADDRESS_MAP_GLOBAL_MASK(0x6fff)
|
||||||
AM_RANGE(0x0000, 0x03ff) AM_RAM AM_MIRROR(0xc00)/* RAM, 2114*2 (0x400 bytes) mirrored 4x */
|
AM_RANGE(0x0000, 0x03ff) AM_RAM AM_MIRROR(0xc00)/* RAM, 2114*2 (0x400 bytes) mirrored 4x */
|
||||||
//AM_RANGE(0x2000, 0x2000) AM_NOP AM_MIRROR(0xffe)//AM_DEVREADWRITE("acia_0",aciastat_r,aciactrl_w)/* 6850 ACIA */
|
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xffe) AM_DEVREADWRITE("acia", acia6850_device, status_read, control_write)
|
||||||
//AM_RANGE(0x2001, 0x2001) AM_NOP AM_MIRROR(0xffe)//AM_DEVREADWRITE("acia_0",aciadata_r,aciadata_w)/* 6850 ACIA */
|
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0xffe) AM_DEVREADWRITE("acia", acia6850_device, data_read, data_write)
|
||||||
AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xffe) AM_READ(votrtnt_acia_status_r) AM_WRITENOP// temp testing
|
|
||||||
AM_RANGE(0x2001, 0x2001) AM_MIRROR(0xffe) AM_READ(votrtnt_acia_data_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write) // temp testing
|
|
||||||
AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("votrax", votrax_sc01_device, write) /* low 6 bits write to 6 bit input of sc-01-a; high 2 bits are ignored (but by adding a buffer chip could be made to control the inflection bits of the sc-01-a which are normally grounded on the tnt) */
|
AM_RANGE(0x4000, 0x5fff) AM_DEVWRITE("votrax", votrax_sc01_device, write) /* low 6 bits write to 6 bit input of sc-01-a; high 2 bits are ignored (but by adding a buffer chip could be made to control the inflection bits of the sc-01-a which are normally grounded on the tnt) */
|
||||||
AM_RANGE(0x6000, 0x6fff) AM_ROM /* ROM in potted block */
|
AM_RANGE(0x6000, 0x6fff) AM_ROM /* ROM in potted block */
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
@ -101,7 +74,7 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
static INPUT_PORTS_START(votrtnt)
|
static INPUT_PORTS_START(votrtnt)
|
||||||
PORT_START("DSW1") /* not connected to cpu, each switch is connected directly to the output of a 4040 counter dividing the cpu m1? clock to feed the 6850 ACIA. Setting more than one switch on is a bad idea. see tnt_schematic.jpg */
|
PORT_START("DSW1") /* not connected to cpu, each switch is connected directly to the output of a 4040 counter dividing the cpu m1? clock to feed the 6850 ACIA. Setting more than one switch on is a bad idea. see tnt_schematic.jpg */
|
||||||
PORT_DIPNAME( 0xFF, 0x00, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6,7,8")
|
PORT_DIPNAME( 0xFF, 0x80, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6,7,8")
|
||||||
PORT_DIPSETTING( 0x01, "75" )
|
PORT_DIPSETTING( 0x01, "75" )
|
||||||
PORT_DIPSETTING( 0x02, "150" )
|
PORT_DIPSETTING( 0x02, "150" )
|
||||||
PORT_DIPSETTING( 0x04, "300" )
|
PORT_DIPSETTING( 0x04, "300" )
|
||||||
@ -114,19 +87,27 @@ INPUT_PORTS_END
|
|||||||
|
|
||||||
void votrtnt_state::machine_reset()
|
void votrtnt_state::machine_reset()
|
||||||
{
|
{
|
||||||
m_term_data = 0;
|
|
||||||
m_term_status = 0xe2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER( votrtnt_state::votrtnt_kbd_put )
|
static ACIA6850_INTERFACE( acia_intf )
|
||||||
{
|
{
|
||||||
m_term_data = data;
|
153600,
|
||||||
m_term_status = 0xe3;
|
153600,
|
||||||
}
|
DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
|
||||||
|
DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
|
||||||
|
DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
|
||||||
|
DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL
|
||||||
|
};
|
||||||
|
|
||||||
static GENERIC_TERMINAL_INTERFACE( votrtnt_terminal_intf )
|
static const rs232_port_interface rs232_intf =
|
||||||
{
|
{
|
||||||
DEVCB_DRIVER_MEMBER(votrtnt_state, votrtnt_kbd_put)
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL,
|
||||||
|
DEVCB_NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct votrax_sc01_interface votrtnt_votrax_interface =
|
static struct votrax_sc01_interface votrtnt_votrax_interface =
|
||||||
@ -147,14 +128,13 @@ static MACHINE_CONFIG_START( votrtnt, votrtnt_state )
|
|||||||
//MCFG_DEFAULT_LAYOUT(layout_votrtnt)
|
//MCFG_DEFAULT_LAYOUT(layout_votrtnt)
|
||||||
|
|
||||||
/* serial hardware */
|
/* serial hardware */
|
||||||
//MCFG_ACIA6850_ADD("acia_0", acia_intf)
|
MCFG_ACIA6850_ADD("acia", acia_intf)
|
||||||
|
MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal")
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
MCFG_VOTRAX_SC01_ADD("votrax", 1700000, votrtnt_votrax_interface ) /* 1.70 MHz? needs verify */
|
MCFG_VOTRAX_SC01_ADD("votrax", 1700000, votrtnt_votrax_interface ) /* 1.70 MHz? needs verify */
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
|
||||||
|
|
||||||
MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, votrtnt_terminal_intf)
|
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -169,26 +149,9 @@ ROM_START(votrtnt)
|
|||||||
ROM_END
|
ROM_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
Stuff that belongs in machine/votrtnt.c
|
|
||||||
******************************************************************************/
|
|
||||||
/*
|
|
||||||
static ACIA6850_INTERFACE( acia_intf )
|
|
||||||
{
|
|
||||||
9600, // rx clock, actually based on dipswitches
|
|
||||||
9600, // tx clock, actually based on dipswitches
|
|
||||||
DEVCB_NULL, // rx callback
|
|
||||||
DEVCB_NULL, // tx callback
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL,
|
|
||||||
DEVCB_NULL
|
|
||||||
};*/
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
Drivers
|
Drivers
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||||
COMP( 1980, votrtnt, 0, 0, votrtnt, votrtnt, driver_device, 0, "Votrax", "Type 'N Talk", GAME_NOT_WORKING )
|
COMP( 1980, votrtnt, 0, 0, votrtnt, votrtnt, driver_device, 0, "Votrax", "Type 'N Talk", GAME_NOT_WORKING )
|
||||||
|
Loading…
Reference in New Issue
Block a user