From 1fe9ea66d35337a9c7f28fc89da65946b148528e Mon Sep 17 00:00:00 2001 From: Brandon Munger Date: Mon, 17 Jul 2017 19:25:38 -0400 Subject: r9751: smioc - add 8237 DMA controllers, rs232 ports, and update documentation --- src/devices/machine/smioc.cpp | 53 +++++++++++++++++++++++++++++++++++++++++++ src/devices/machine/smioc.h | 18 +++++++++++++++ 2 files changed, 71 insertions(+) diff --git a/src/devices/machine/smioc.cpp b/src/devices/machine/smioc.cpp index 65c5e8891c7..e4f527d8caf 100644 --- a/src/devices/machine/smioc.cpp +++ b/src/devices/machine/smioc.cpp @@ -20,8 +20,12 @@ * CPU - Intel N80C188 L0450591 @ ??MHz - U23 * MCU - Signetics SC87C451CCA68 220CP079109KA 97D8641 - U70 * DMA - KS82C37A - U46, U47, U48, U49, U50 + * SCC - Signetics SCC2698BC1A84 - U67 * Memory - NEC D43256AGU-10LL 8948A9038 SRAM 32KB - U51 * Memory - Mitsubishi M5M187AJ 046101-35 SRAM 64K X 1?? - U37 + * Memory - AT&T M79018DX-15B 2K X 9 Dual Port SRAM - U53 + * Memory - AT&T M79018DX-15B 2K X 9 Dual Port SRAM - U54 + Logic: * U8 - 22V10-25JC * U33 - 22V10-25JC @@ -38,10 +42,23 @@ Program Memory: * 0x00000 - 0x07FFF : SRAM D43256AGU-10LL 32KB * 0xF8000 - 0xFFFFF : ROM 27C256 PLCC32 32KB + * 0xC0080 - 0xC008F : KS82C37A - Probably RAM DMA + * 0xC0090 - 0xC009F : KS82C37A - Serial DMA (Port 1 and 2?) + * 0xC00A0 - 0xC00AF : KS82C37A - Serial DMA (Port 3 and 4?) + * 0xC00B0 - 0xC00BF : KS82C37A - Serial DMA (Port 5 and 6?) + * 0xC00C0 - 0xC00CF : KS82C37A - Serial DMA (Port 7 and 8?) IO Memory: * Unknown + TODO: + * Emulate SCC and hook up RS232 ports + * Hook up console to RS232 port 1 + * Hook up System Monitor II to RS232 port 2 + * Dump 87C451 rom data and emulate MCU + * Dump 87C51 on SMIOC interconnect box + * Dump all PAL chips + * Hook up status LEDs */ #include "emu.h" @@ -84,6 +101,11 @@ const tiny_rom_entry *smioc_device::device_rom_region() const static ADDRESS_MAP_START( smioc_mem, AS_PROGRAM, 8, smioc_device ) AM_RANGE(0x00000, 0x07FFF) AM_RAM AM_SHARE("smioc_ram") + AM_RANGE(0xC0080, 0xC008F) AM_DEVREADWRITE("dma8237_1",am9517a_device,read,write) // Probably RAM DMA + AM_RANGE(0xC0090, 0xC009F) AM_DEVREADWRITE("dma8237_2",am9517a_device,read,write) // Serial DMA + AM_RANGE(0xC00A0, 0xC00AF) AM_DEVREADWRITE("dma8237_3",am9517a_device,read,write) // Serial DMA + AM_RANGE(0xC00B0, 0xC00BF) AM_DEVREADWRITE("dma8237_4",am9517a_device,read,write) // Serial DMA + AM_RANGE(0xC00C0, 0xC00CF) AM_DEVREADWRITE("dma8237_5",am9517a_device,read,write) // Serial DMA AM_RANGE(0xF8000, 0xFFFFF) AM_ROM AM_REGION("rom", 0) ADDRESS_MAP_END @@ -91,6 +113,24 @@ MACHINE_CONFIG_MEMBER( smioc_device::device_add_mconfig ) /* CPU - Intel 80C188 */ MCFG_CPU_ADD(I188_TAG, I80188, XTAL_20MHz / 2) // Clock division unknown MCFG_CPU_PROGRAM_MAP(smioc_mem) + + /* DMA */ + MCFG_DEVICE_ADD("dma8237_1", AM9517A, XTAL_20MHz / 4) // Clock division unknown + MCFG_DEVICE_ADD("dma8237_2", AM9517A, XTAL_20MHz / 4) + MCFG_DEVICE_ADD("dma8237_3", AM9517A, XTAL_20MHz / 4) + MCFG_DEVICE_ADD("dma8237_4", AM9517A, XTAL_20MHz / 4) + MCFG_DEVICE_ADD("dma8237_5", AM9517A, XTAL_20MHz / 4) + + /* RS232 */ + /* Port 1: Console */ + MCFG_RS232_PORT_ADD("rs232_p1", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p2", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p3", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p4", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p5", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p6", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p7", default_rs232_devices, nullptr) + MCFG_RS232_PORT_ADD("rs232_p8", default_rs232_devices, nullptr) MACHINE_CONFIG_END //************************************************************************** @@ -104,6 +144,19 @@ MACHINE_CONFIG_END smioc_device::smioc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SMIOC, tag, owner, clock), m_smioccpu(*this, I188_TAG), + m_dma8237_1(*this, "dma8237_1"), + m_dma8237_2(*this, "dma8237_2"), + m_dma8237_3(*this, "dma8237_3"), + m_dma8237_4(*this, "dma8237_4"), + m_dma8237_5(*this, "dma8237_5"), + m_rs232_p1(*this, "rs232_p1"), + m_rs232_p2(*this, "rs232_p2"), + m_rs232_p3(*this, "rs232_p3"), + m_rs232_p4(*this, "rs232_p4"), + m_rs232_p5(*this, "rs232_p5"), + m_rs232_p6(*this, "rs232_p6"), + m_rs232_p7(*this, "rs232_p7"), + m_rs232_p8(*this, "rs232_p8"), m_smioc_ram(*this, "smioc_ram") { } diff --git a/src/devices/machine/smioc.h b/src/devices/machine/smioc.h index 96bd0fec22d..83b4ab29d89 100644 --- a/src/devices/machine/smioc.h +++ b/src/devices/machine/smioc.h @@ -12,6 +12,8 @@ #pragma once #include "cpu/i86/i186.h" +#include "machine/am9517a.h" +#include "bus/rs232/rs232.h" //************************************************************************** // MACROS / CONSTANTS @@ -38,6 +40,22 @@ protected: private: /* Attached devices */ required_device m_smioccpu; + + required_device m_dma8237_1; + required_device m_dma8237_2; + required_device m_dma8237_3; + required_device m_dma8237_4; + required_device m_dma8237_5; + + required_device m_rs232_p1; + required_device m_rs232_p2; + required_device m_rs232_p3; + required_device m_rs232_p4; + required_device m_rs232_p5; + required_device m_rs232_p6; + required_device m_rs232_p7; + required_device m_rs232_p8; + required_shared_ptr m_smioc_ram; }; -- cgit v1.2.3