Merge pull request #2489 from bmunger/r9751

r9751: smioc - add 8237 DMA controllers, rs232 ports, and update documentation.
This commit is contained in:
R. Belmont 2017-07-17 21:04:02 -04:00 committed by GitHub
commit 0a48ae3cd9
2 changed files with 71 additions and 0 deletions

View File

@ -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")
{
}

View File

@ -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<cpu_device> m_smioccpu;
required_device<am9517a_device> m_dma8237_1;
required_device<am9517a_device> m_dma8237_2;
required_device<am9517a_device> m_dma8237_3;
required_device<am9517a_device> m_dma8237_4;
required_device<am9517a_device> m_dma8237_5;
required_device<rs232_port_device> m_rs232_p1;
required_device<rs232_port_device> m_rs232_p2;
required_device<rs232_port_device> m_rs232_p3;
required_device<rs232_port_device> m_rs232_p4;
required_device<rs232_port_device> m_rs232_p5;
required_device<rs232_port_device> m_rs232_p6;
required_device<rs232_port_device> m_rs232_p7;
required_device<rs232_port_device> m_rs232_p8;
required_shared_ptr<uint8_t> m_smioc_ram;
};