Previous 199869 Revisions Next

r22908 Saturday 18th May, 2013 at 20:46:39 UTC by Curt Coder
(MESS) sage2: Refactored serial terminal to connect thru an RS-232 port. [Curt Coder]
[src/mess/drivers]sage2.c
[src/mess/includes]sage2.h

trunk/src/mess/includes/sage2.h
r22907r22908
88#include "machine/pit8253.h"
99#include "machine/pic8259.h"
1010#include "machine/ram.h"
11#include "machine/terminal.h"
11#include "machine/serial.h"
1212#include "machine/upd765.h"
1313
1414#define M68000_TAG      "u68"
r22907r22908
2222#define UPD765_TAG      "u21"
2323#define TMS9914_TAG     "u6"
2424#define CENTRONICS_TAG  "centronics"
25#define RS232_A_TAG     "rs232a"
26#define RS232_B_TAG     "rs232b"
2527
2628class sage2_state : public driver_device
2729{
r22907r22908
3941         m_floppy(NULL),
4042         m_centronics(*this, CENTRONICS_TAG),
4143         m_ieee488(*this, IEEE488_TAG),
42         m_terminal(*this, TERMINAL_TAG),
4344         m_reset(1),
4445         m_fdc_int(0),
4546         m_fdie(0)
r22907r22908
5657   floppy_image_device *m_floppy;
5758   required_device<centronics_device> m_centronics;
5859   required_device<ieee488_device> m_ieee488;
59   required_device<generic_terminal_device> m_terminal;
6060
6161   virtual void machine_start();
6262   virtual void machine_reset();
trunk/src/mess/drivers/sage2.c
r22907r22908
9090   AM_RANGE(0xffc032, 0xffc033) AM_DEVREADWRITE8(I8251_1_TAG, i8251_device, status_r, control_w, 0x00ff)
9191   AM_RANGE(0xffc040, 0xffc043) AM_DEVREADWRITE8(I8259_TAG, pic8259_device, read, write, 0x00ff)
9292   AM_RANGE(0xffc050, 0xffc053) AM_DEVICE8(UPD765_TAG, upd765a_device, map, 0x00ff)
93   AM_RANGE(0xffc060, 0xffc067) AM_DEVREADWRITE8(I8255A_0_TAG, i8255_device, read, write, 0x00ff) // i8255, Printer
94   AM_RANGE(0xffc070, 0xffc071) AM_DEVREAD8(I8251_0_TAG, i8251_device, data_r, 0x00ff) AM_DEVWRITE8(TERMINAL_TAG, generic_terminal_device, write, 0x00ff)
95//  AM_RANGE(0xffc070, 0xffc071) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, data_r, data_w, 0x00ff)
93   AM_RANGE(0xffc060, 0xffc067) AM_DEVREADWRITE8(I8255A_1_TAG, i8255_device, read, write, 0x00ff) // i8255, Printer
94   AM_RANGE(0xffc070, 0xffc071) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, data_r, data_w, 0x00ff)
9695   AM_RANGE(0xffc072, 0xffc073) AM_DEVREADWRITE8(I8251_0_TAG, i8251_device, status_r, control_w, 0x00ff)
9796   AM_RANGE(0xffc080, 0xffc087) AM_MIRROR(0x78) AM_DEVREADWRITE8_LEGACY(I8253_0_TAG, pit8253_r, pit8253_w, 0x00ff)
9897//  AM_RANGE(0xffc400, 0xffc407) AM_DEVREADWRITE8(S2651_0_TAG, s2651_device, read, write, 0x00ff)
r22907r22908
393392
394393WRITE_LINE_MEMBER( sage2_state::br1_w )
395394{
396   m_usart0->transmit_clock();
397   m_usart0->receive_clock();
395   if (state)
396   {
397      m_usart0->transmit_clock();
398      m_usart0->receive_clock();
399   }
398400}
399401
400402WRITE_LINE_MEMBER( sage2_state::br2_w )
401403{
402   m_usart1->transmit_clock();
403   m_usart1->receive_clock();
404   if (state)
405   {
406      m_usart1->transmit_clock();
407      m_usart1->receive_clock();
408   }
404409}
405410
406411static const struct pit8253_config pit1_intf =
r22907r22908
429434
430435static const i8251_interface usart0_intf =
431436{
432   DEVCB_NULL, //DEVCB_DEVICE_LINE(TERMINAL_TAG, terminal_serial_r),
433   DEVCB_NULL, //DEVCB_DEVICE_LINE(TERMINAL_TAG, terminal_serial_w),
434   DEVCB_NULL,
435   DEVCB_NULL,
436   DEVCB_NULL,
437   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, rx),
438   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, serial_port_device, tx),
439   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dsr_r),
440   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, dtr_w),
441   DEVCB_DEVICE_LINE_MEMBER(RS232_A_TAG, rs232_port_device, rts_w),
437442   DEVCB_CPU_INPUT_LINE(M68000_TAG, M68K_IRQ_5),
438443   DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir2_w),
439444   DEVCB_NULL,
r22907r22908
447452
448453static const i8251_interface usart1_intf =
449454{
450   DEVCB_NULL,
451   DEVCB_NULL,
452   DEVCB_NULL,
453   DEVCB_NULL,
454   DEVCB_NULL,
455   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, rx),
456   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, serial_port_device, tx),
457   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dsr_r),
458   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, dtr_w),
459   DEVCB_DEVICE_LINE_MEMBER(RS232_B_TAG, rs232_port_device, rts_w),
455460   DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir1_w),
456461   DEVCB_DEVICE_LINE_MEMBER(I8259_TAG, pic8259_device, ir3_w),
457462   DEVCB_NULL,
r22907r22908
500505
501506
502507//-------------------------------------------------
503//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
508//  rs232_port_interface rs232a_intf
504509//-------------------------------------------------
505510
506WRITE8_MEMBER( sage2_state::kbd_put )
511static DEVICE_INPUT_DEFAULTS_START( terminal )
512   DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x0f, 0x08 ) // 19200
513   DEVICE_INPUT_DEFAULTS( "TERM_FRAME", 0x30, 0x10 ) // 7E1
514DEVICE_INPUT_DEFAULTS_END
515
516static const rs232_port_interface rs232a_intf =
507517{
508   m_usart0->receive_character(data);
509}
518   DEVCB_NULL,
519   DEVCB_NULL,
520   DEVCB_NULL,
521   DEVCB_NULL,
522   DEVCB_NULL
523};
510524
511static GENERIC_TERMINAL_INTERFACE( terminal_intf )
525
526//-------------------------------------------------
527//  rs232_port_interface rs232b_intf
528//-------------------------------------------------
529
530static const rs232_port_interface rs232b_intf =
512531{
513   DEVCB_DRIVER_MEMBER(sage2_state, kbd_put)
532   DEVCB_NULL,
533   DEVCB_NULL,
534   DEVCB_NULL,
535   DEVCB_NULL,
536   DEVCB_NULL
514537};
515538
516539
r22907r22908
557580   MCFG_CPU_ADD(M68000_TAG, M68000, XTAL_16MHz/2)
558581   MCFG_CPU_PROGRAM_MAP(sage2_mem)
559582
560   // video hardware
561   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
562
563583   // devices
564584   MCFG_PIC8259_ADD(I8259_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_1), VCC, NULL)
565585   MCFG_I8255A_ADD(I8255A_0_TAG, ppi0_intf)
r22907r22908
573593   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sage2_floppies, "525qd", 0, floppy_image_device::default_floppy_formats)
574594   MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", sage2_floppies, "525qd", 0, floppy_image_device::default_floppy_formats)
575595   MCFG_IEEE488_BUS_ADD()
596   MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal", terminal)
597   MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL, NULL)
576598
577599   // internal ram
578600   MCFG_RAM_ADD(RAM_TAG)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team