Previous 199869 Revisions Next

r21281 Thursday 21st February, 2013 at 20:36:50 UTC by Curt Coder
(MESS) ob68k1a: Made RS-232 a bit less hacky. (nw)
[src/mess/drivers]ob68k1a.c
[src/mess/includes]ob68k1a.h

trunk/src/mess/includes/ob68k1a.h
r21280r21281
33#ifndef __OB68K1A__
44#define __OB68K1A__
55
6#include "emu.h"
7#include "cpu/m68000/m68000.h"
8#include "machine/6821pia.h"
9#include "machine/6840ptm.h"
10#include "machine/6850acia.h"
11#include "machine/com8116.h"
612#include "machine/ram.h"
13#include "machine/serial.h"
714
815#define MC68000L10_TAG  "u50"
916#define MC6821_0_TAG    "u32"
r21280r21281
1219#define MC6850_0_TAG    "u34"
1320#define MC6850_1_TAG    "u26"
1421#define COM8116_TAG     "u56"
22#define RS232_A_TAG      "rs232a"
23#define RS232_B_TAG      "rs232b"
1524
1625class ob68k1a_state : public driver_device
1726{
r21280r21281
2130         m_maincpu(*this, MC68000L10_TAG),
2231         m_dbrg(*this, COM8116_TAG),
2332         m_acia0(*this, MC6850_0_TAG),
33         m_acia1(*this, MC6850_1_TAG),
2434         m_pia0(*this, MC6821_0_TAG),
2535         m_pia1(*this, MC6821_1_TAG),
26         m_terminal(*this, TERMINAL_TAG),
36         m_rs232a(*this, RS232_A_TAG),
37         m_rs232b(*this, RS232_B_TAG),
2738         m_ram(*this, RAM_TAG)
2839   { }
2940
3041   required_device<cpu_device> m_maincpu;
3142   required_device<com8116_device> m_dbrg;
3243   required_device<acia6850_device> m_acia0;
44   required_device<acia6850_device> m_acia1;
3345   required_device<pia6821_device> m_pia0;
3446   required_device<pia6821_device> m_pia1;
35   required_device<serial_terminal_device> m_terminal;
47   required_device<rs232_port_device> m_rs232a;
48   required_device<rs232_port_device> m_rs232b;
3649   required_device<ram_device> m_ram;
3750
3851   virtual void machine_start();
r21280r21281
4154   DECLARE_WRITE8_MEMBER( com8116_w );
4255   DECLARE_READ8_MEMBER( pia_r );
4356   DECLARE_WRITE8_MEMBER( pia_w );
44   DECLARE_WRITE_LINE_MEMBER(rx_tx_0_w);
45   DECLARE_WRITE_LINE_MEMBER(rx_tx_1_w);
57   DECLARE_WRITE_LINE_MEMBER( rx_tx_0_w );
58   DECLARE_WRITE_LINE_MEMBER( rx_tx_1_w );
4659};
4760
4861#endif
trunk/src/mess/drivers/ob68k1a.c
r21280r21281
5959*/
6060
6161
62#include "emu.h"
63#include "cpu/m68000/m68000.h"
64#include "machine/ram.h"
65#include "machine/6821pia.h"
66#include "machine/6840ptm.h"
67#include "machine/6850acia.h"
68#include "machine/com8116.h"
69#include "machine/terminal.h"
7062#include "includes/ob68k1a.h"
7163
7264
r21280r21281
8274WRITE8_MEMBER( ob68k1a_state::com8116_w )
8375{
8476   m_dbrg->stt_w(space, 0, data & 0x0f);
85//  m_dbrg->str_w(space, 0, data >> 4); // HACK for terminal
77   m_dbrg->str_w(space, 0, data >> 4);
8678}
8779
8880
r21280r21281
221213{
222214   9600*16, // HACK for terminal
223215   9600*16, // HACK for terminal
224   DEVCB_DEVICE_LINE_MEMBER(TERMINAL_TAG, serial_terminal_device, tx_r),
225   DEVCB_DEVICE_LINE_MEMBER(TERMINAL_TAG, serial_terminal_device, rx_w),
216   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
217   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
226218   DEVCB_LINE_GND, // HACK for terminal
227   DEVCB_NULL,
219   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
228220   DEVCB_LINE_GND, // HACK for terminal
229221   DEVCB_NULL
230222};
r21280r21281
238230{
239231   0,
240232   0,
241   DEVCB_LINE_VCC,
233   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
234   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
235   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, cts_r),
236   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
237   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dcd_r),
242238   DEVCB_NULL,
243   DEVCB_NULL,
244   DEVCB_NULL,
245   DEVCB_NULL,
246   DEVCB_NULL,
247239};
248240
249241
r21280r21281
251243//  COM8116_INTERFACE( dbrg_intf )
252244//-------------------------------------------------
253245
254WRITE_LINE_MEMBER(ob68k1a_state::rx_tx_0_w)
246WRITE_LINE_MEMBER( ob68k1a_state::rx_tx_0_w )
255247{
256   device_t *device = machine().device(MC6850_0_TAG);
257   downcast<acia6850_device *>(device)->rx_clock_in();
258   downcast<acia6850_device *>(device)->tx_clock_in();
248   m_acia0->rx_clock_in();
249   m_acia0->tx_clock_in();
259250}
260251
261WRITE_LINE_MEMBER(ob68k1a_state::rx_tx_1_w)
252WRITE_LINE_MEMBER( ob68k1a_state::rx_tx_1_w )
262253{
263   device_t *device = machine().device(MC6850_1_TAG);
264   downcast<acia6850_device *>(device)->rx_clock_in();
265   downcast<acia6850_device *>(device)->tx_clock_in();
254   m_acia1->rx_clock_in();
255   m_acia1->tx_clock_in();
266256}
267257
268258static COM8116_INTERFACE( dbrg_intf )
269259{
270260   DEVCB_NULL,     /* fX/4 output */
271   DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state,rx_tx_0_w),
272   DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state,rx_tx_1_w),
261   DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state, rx_tx_0_w),
262   DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state, rx_tx_1_w),
273263   { 101376, 67584, 46080, 37686, 33792, 16896, 8448, 4224, 2816, 2534, 2112, 1408, 1056, 704, 528, 264 },         /* receiver divisor ROM */
274264   { 101376, 67584, 46080, 37686, 33792, 16896, 8448, 4224, 2816, 2534, 2112, 1408, 1056, 704, 528, 264 },         /* transmitter divisor ROM */
275265};
276266
277267
278268//-------------------------------------------------
279//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
269//  rs232_port_interface rs232a_intf
280270//-------------------------------------------------
281271
282static serial_terminal_interface terminal_intf =
272static const rs232_port_interface rs232a_intf =
283273{
274   DEVCB_NULL,
275   DEVCB_NULL,
276   DEVCB_NULL,
277   DEVCB_NULL,
284278   DEVCB_NULL
285279};
286280
287281
282//-------------------------------------------------
283//  rs232_port_interface rs232b_intf
284//-------------------------------------------------
288285
286static const rs232_port_interface rs232b_intf =
287{
288   DEVCB_NULL,
289   DEVCB_NULL,
290   DEVCB_NULL,
291   DEVCB_NULL,
292   DEVCB_NULL
293};
294
295
296
289297//**************************************************************************
290298//  MACHINE INITIALIZATION
291299//**************************************************************************
r21280r21281
317325   address_space &program = m_maincpu->space(AS_PROGRAM);
318326
319327   // initialize COM8116
320//  m_dbrg->stt_w(program, 0, 0x01);
321//  m_dbrg->str_w(program, 0, 0x01);
328   com8116_w(program, 0, 0xee);
329//   m_dbrg->stt_w(program, 0, 0x01);
330//   m_dbrg->str_w(program, 0, 0x01);
322331
323332   // set reset vector
324333   void *ram = program.get_write_ptr(0);
r21280r21281
326335
327336   memcpy(ram, rom, 8);
328337
329   machine().firstcpu->reset();
338   m_maincpu->reset();
330339}
331340
332341
r21280r21281
351360   MCFG_ACIA6850_ADD(MC6850_0_TAG, acia0_intf)
352361   MCFG_ACIA6850_ADD(MC6850_1_TAG, acia1_intf)
353362   MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, dbrg_intf)
354   MCFG_SERIAL_TERMINAL_ADD(TERMINAL_TAG, terminal_intf, 9600)
363   MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal", NULL)
364   MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL, NULL)
355365
356366   // internal ram
357367   MCFG_RAM_ADD(RAM_TAG)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team