Previous 199869 Revisions Next

r23580 Monday 10th June, 2013 at 04:29:59 UTC by Robbbert
(MESS) Votrtnt: connected acia and rs232
[src/mess/drivers]votrtnt.c

trunk/src/mess/drivers/votrtnt.c
r23579r23580
2525*
2626*  ToDo:
2727*  - Votrax device needs considerable improvement in sound quality.
28*  - Reconnect the ACIA when serial coms become viable in MESS.
2928*
29*
3030******************************************************************************/
3131
3232/* Core includes */
3333#include "emu.h"
3434#include "cpu/m6800/m6800.h"
35#include "machine/6850acia.h"
36#include "machine/serial.h"
37#include "sound/votrax.h"
3538#include "votrtnt.lh"
3639
37/* Components */
38#include "sound/votrax.h"
39#include "machine/6850acia.h"
4040
41/* For testing */
42#include "machine/terminal.h"
43
44
45
4641class votrtnt_state : public driver_device
4742{
4843public:
4944   votrtnt_state(const machine_config &mconfig, device_type type, const char *tag)
5045      : driver_device(mconfig, type, tag),
5146   m_maincpu(*this, "maincpu"),
52   m_terminal(*this, TERMINAL_TAG),
53   //m_acia(*this, "acia_0"),
5447   m_votrax(*this, "votrax")
5548   { }
5649
5750   required_device<cpu_device> m_maincpu;
58   required_device<generic_terminal_device> m_terminal;
59   //required_device<> m_acia;
6051   required_device<votrax_sc01_device> m_votrax;
61   DECLARE_READ8_MEMBER(votrtnt_acia_status_r);
62   DECLARE_READ8_MEMBER(votrtnt_acia_data_r);
63   DECLARE_WRITE8_MEMBER(votrtnt_kbd_put);
64   UINT8 m_term_data;
65   UINT8 m_term_status;
6652   virtual void machine_reset();
6753};
6854
69READ8_MEMBER( votrtnt_state::votrtnt_acia_status_r )
70{
71   return m_term_status;
72}
7355
74READ8_MEMBER( votrtnt_state::votrtnt_acia_data_r )
75{
76   m_term_status = 0xe2;
77   return m_term_data;
78}
79
80
8156/******************************************************************************
8257 Address Maps
8358******************************************************************************/
r23579r23580
8661   ADDRESS_MAP_UNMAP_HIGH
8762   ADDRESS_MAP_GLOBAL_MASK(0x6fff)
8863   AM_RANGE(0x0000, 0x03ff) AM_RAM AM_MIRROR(0xc00)/* RAM, 2114*2 (0x400 bytes) mirrored 4x */
89   //AM_RANGE(0x2000, 0x2000) AM_NOP AM_MIRROR(0xffe)//AM_DEVREADWRITE("acia_0",aciastat_r,aciactrl_w)/* 6850 ACIA */
90   //AM_RANGE(0x2001, 0x2001) AM_NOP AM_MIRROR(0xffe)//AM_DEVREADWRITE("acia_0",aciadata_r,aciadata_w)/* 6850 ACIA */
91   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xffe) AM_READ(votrtnt_acia_status_r) AM_WRITENOP// temp testing
92   AM_RANGE(0x2001, 0x2001) AM_MIRROR(0xffe) AM_READ(votrtnt_acia_data_r) AM_DEVWRITE(TERMINAL_TAG, generic_terminal_device, write) // temp testing
64   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0xffe) AM_DEVREADWRITE("acia", acia6850_device, status_read, control_write)
65   AM_RANGE(0x2001, 0x2001) AM_MIRROR(0xffe) AM_DEVREADWRITE("acia", acia6850_device, data_read, data_write)
9366   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) */
9467   AM_RANGE(0x6000, 0x6fff) AM_ROM /* ROM in potted block */
9568ADDRESS_MAP_END
r23579r23580
10174
10275static INPUT_PORTS_START(votrtnt)
10376   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 */
104   PORT_DIPNAME( 0xFF, 0x00, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6,7,8")
77   PORT_DIPNAME( 0xFF, 0x80, "Baud Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4,5,6,7,8")
10578   PORT_DIPSETTING(    0x01, "75" )
10679   PORT_DIPSETTING(    0x02, "150" )
10780   PORT_DIPSETTING(    0x04, "300" )
r23579r23580
11487
11588void votrtnt_state::machine_reset()
11689{
117   m_term_data = 0;
118   m_term_status = 0xe2;
11990}
12091
121WRITE8_MEMBER( votrtnt_state::votrtnt_kbd_put )
92static ACIA6850_INTERFACE( acia_intf )
12293{
123   m_term_data = data;
124   m_term_status = 0xe3;
125}
94   153600,
95   153600,
96   DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, rx),
97   DEVCB_DEVICE_LINE_MEMBER("rs232", serial_port_device, tx),
98   DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, cts_r),
99   DEVCB_DEVICE_LINE_MEMBER("rs232", rs232_port_device, rts_w),
100   DEVCB_NULL,
101   DEVCB_NULL
102};
126103
127static GENERIC_TERMINAL_INTERFACE( votrtnt_terminal_intf )
104static const rs232_port_interface rs232_intf =
128105{
129   DEVCB_DRIVER_MEMBER(votrtnt_state, votrtnt_kbd_put)
106   DEVCB_NULL,
107   DEVCB_NULL,
108   DEVCB_NULL,
109   DEVCB_NULL,
110   DEVCB_NULL
130111};
131112
132113static struct votrax_sc01_interface votrtnt_votrax_interface =
r23579r23580
147128   //MCFG_DEFAULT_LAYOUT(layout_votrtnt)
148129
149130   /* serial hardware */
150   //MCFG_ACIA6850_ADD("acia_0", acia_intf)
131   MCFG_ACIA6850_ADD("acia", acia_intf)
132   MCFG_RS232_PORT_ADD("rs232", rs232_intf, default_rs232_devices, "serial_terminal")
151133
152134   /* sound hardware */
153135   MCFG_SPEAKER_STANDARD_MONO("mono")
154136   MCFG_VOTRAX_SC01_ADD("votrax", 1700000, votrtnt_votrax_interface ) /* 1.70 MHz? needs verify */
155137   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
156
157   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, votrtnt_terminal_intf)
158138MACHINE_CONFIG_END
159139
160140
r23579r23580
169149ROM_END
170150
171151
172
173152/******************************************************************************
174 Stuff that belongs in machine/votrtnt.c
175******************************************************************************/
176/*
177static ACIA6850_INTERFACE( acia_intf )
178{
179    9600, // rx clock, actually based on dipswitches
180    9600, // tx clock, actually based on dipswitches
181    DEVCB_NULL, // rx callback
182    DEVCB_NULL, // tx callback
183    DEVCB_NULL,
184    DEVCB_NULL,
185    DEVCB_NULL,
186    DEVCB_NULL
187};*/
188
189/******************************************************************************
190153 Drivers
191154******************************************************************************/
192155
193/*    YEAR  NAME        PARENT      COMPAT  MACHINE     INPUT   INIT      COMPANY                     FULLNAME                            FLAGS */
194COMP( 1980, votrtnt,   0,          0,      votrtnt,   votrtnt, driver_device, 0,     "Votrax",        "Type 'N Talk", GAME_NOT_WORKING )
156/*    YEAR  NAME       PARENT      COMPAT  MACHINE     INPUT   CLASS         INIT      COMPANY    FULLNAME      FLAGS */
157COMP( 1980, votrtnt,   0,          0,      votrtnt,   votrtnt, driver_device, 0,     "Votrax", "Type 'N Talk", GAME_NOT_WORKING )

Previous 199869 Revisions Next


© 1997-2024 The MAME Team