attache: Add RS-232 serial ports

This commit is contained in:
AJR 2018-01-04 15:57:57 -05:00
parent 03fc45b3f9
commit 249dfd51c3

View File

@ -17,7 +17,7 @@
* Sound: GI AY-3-8912
* FDC: NEC D765A, 5.25" floppies
* Video: CRT5027, 320x240
* Serial: Z80-SIO
* Serial: Z80-SIO, two RS-232C or RS-422/423 ports
*
* Note:
* In terminal mode (when disk booting fails or no disk is inserted), press Ctrl+Linefeed (ctrl+pgdn by default)
@ -68,7 +68,9 @@
#include "cpu/z80/z80.h"
#include "cpu/z80/z80daisy.h"
#include "bus/rs232/rs232.h"
#include "machine/am9517a.h"
#include "machine/clock.h"
#include "machine/msm5832.h"
#include "machine/nvram.h"
#include "machine/ram.h"
@ -1112,17 +1114,37 @@ static MACHINE_CONFIG_START( attache )
MCFG_MSM5832_ADD("rtc",XTAL_32_768kHz)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz/26)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz / 2)
MCFG_Z80PIO_IN_PA_CB(READ8(attache_state, pio_portA_r))
MCFG_Z80PIO_OUT_PA_CB(WRITE8(attache_state, pio_portA_w))
MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w))
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 26)
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 2)
MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts))
MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts))
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4)
MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxa_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsa_w))
MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxb_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsb_w))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 2)
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("sio", z80sio_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio", z80sio_device, txca_w))
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("sio", z80sio_device, rxtxcb_w))
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("brc", CLOCK, XTAL_8MHz / 26) // 307.692 KHz
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("ctc", z80ctc_device, trg0))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg1))
MCFG_DEVICE_ADD("dma", AM9517A, XTAL_8MHz / 4)
MCFG_AM9517A_OUT_HREQ_CB(WRITELINE(attache_state, hreq_w))
MCFG_AM9517A_OUT_EOP_CB(WRITELINE(attache_state, eop_w))
@ -1175,17 +1197,37 @@ static MACHINE_CONFIG_START( attache816 )
MCFG_MSM5832_ADD("rtc",XTAL_32_768kHz)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz/26)
MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz / 2)
MCFG_Z80PIO_IN_PA_CB(READ8(attache_state, pio_portA_r))
MCFG_Z80PIO_OUT_PA_CB(WRITE8(attache_state, pio_portA_w))
MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r))
MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w))
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 26)
MCFG_DEVICE_ADD("sio", Z80SIO, XTAL_8MHz / 2)
MCFG_Z80SIO_OUT_TXDA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_RTSA_CB(DEVWRITELINE("rs232a", rs232_port_device, write_rts))
MCFG_Z80SIO_OUT_TXDB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_txd))
MCFG_Z80SIO_OUT_RTSB_CB(DEVWRITELINE("rs232b", rs232_port_device, write_rts))
MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4)
MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxa_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsa_w))
MCFG_RS232_PORT_ADD("rs232b", default_rs232_devices, nullptr)
MCFG_RS232_RXD_HANDLER(DEVWRITELINE("sio", z80sio_device, rxb_w))
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("sio", z80sio_device, ctsb_w))
MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 2)
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("sio", z80sio_device, rxca_w))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("sio", z80sio_device, txca_w))
MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("sio", z80sio_device, rxtxcb_w))
MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_DEVICE_ADD("brc", CLOCK, XTAL_8MHz / 26) // 307.692 KHz
MCFG_CLOCK_SIGNAL_HANDLER(DEVWRITELINE("ctc", z80ctc_device, trg0))
MCFG_DEVCB_CHAIN_OUTPUT(DEVWRITELINE("ctc", z80ctc_device, trg1))
MCFG_DEVICE_ADD("ppi", I8255A, 0)
MCFG_I8255_OUT_PORTA_CB(WRITE8(attache816_state, x86_comms_w))
MCFG_I8255_IN_PORTA_CB(READ8(attache816_state, x86_comms_r))