mirror of
https://github.com/holub/mame
synced 2025-04-24 09:20:02 +03:00
NEW non working ISA16 card: Ericsson Information Systems IBM3270/5250 terminal adapter card
This commit is contained in:
parent
478b4b9556
commit
bdaad5598e
@ -1128,6 +1128,8 @@ if (BUSES["ISA"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/isa/myb3k_com.h",
|
||||
MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.cpp",
|
||||
MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.h",
|
||||
MAME_DIR .. "src/devices/bus/isa/eis_sad8852.cpp",
|
||||
MAME_DIR .. "src/devices/bus/isa/eis_sad8852.h",
|
||||
}
|
||||
end
|
||||
|
||||
|
240
src/devices/bus/isa/eis_sad8852.cpp
Normal file
240
src/devices/bus/isa/eis_sad8852.cpp
Normal file
@ -0,0 +1,240 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Joakim Larsson Edström
|
||||
/***********************************************************************************************************
|
||||
*
|
||||
* Ericsson Information Systems/Nokia Data/ICL, SAD 8852 IBM 3270/5250 terminal emulation adapter
|
||||
*
|
||||
* This board is a terminal adapter for AT class PC machines to be connected as a terminal to
|
||||
* IBM mainframes. There are two on board connectors, a BNC connector to act as a 3270 terminal
|
||||
* and a twinax connector for the older 5250 terminal.
|
||||
*
|
||||
* The original design was probably done by the Alfaskop division at Ericsson Information Systems (EIS)
|
||||
* The Alfaskop division was aquired by Ericsson from Datasaab AB in 1980 who was very successful selling
|
||||
* IBM compatible terminals at strict 10% below IBM list price, whatever that was, usually quite high.
|
||||
* The Ericsson PC AT WS286, their first 16 bit PC, was introduced 1986 and as the SAD8852 card is a 16 bit
|
||||
* ISA card it is likelly to have been designed for the launch as Ericsson targeted the office market only.
|
||||
* EIS was aquired by the Nokia Data division in 1988 which in turn was aquired by ICL 1991 and the terminal
|
||||
* division by Wyse 1996. Firmware confirms 1987 as copyrigt date which fits the WS286 time line well.
|
||||
*
|
||||
* TODO:
|
||||
* - Hook up 8274 and the rest of the local memory map
|
||||
* - Hook up ISA IRQ:s
|
||||
* - Find suitable software package to analyze control protocol between main cpu and the board cpu
|
||||
* - Add bitbanger device and hook it up to an (emulated?!) IBM mainframe
|
||||
*
|
||||
************************************************************************************************************/
|
||||
/*
|
||||
Links:
|
||||
------
|
||||
https://www.ibm.com/support/knowledgecenter/en/SSEQ5Y_5.9.0/com.ibm.pcomm.doc/books/html/admin_guide11.htm
|
||||
http://www.ebay.fr/itm/iCL-94V0-SAD-8852-ROA-1195296-R4B-Card-Expansion-Card/222825926815?hash=item33e175d09f:g:zAUAAOSwe7laPCr8
|
||||
https://www.sweclockers.com/forum/trad/1392179-intel-80188-16-bit-isa-expansionskort-vad-ar-detta (in swedish)
|
||||
http://www.veteranklubbenalfa.se/veteran/litt/jub97v3_4.pdf (PDF about the computer industry of Sweden, in swedish)
|
||||
|
||||
PCB layouts and assembly years from online pictures and physical unit.
|
||||
Ericsson - marked TVK 119 5211 R3, rev date xxxx, assembled in 1987 indicated by chip dates
|
||||
Nokia Data - marked TVK 119 5211 R3, rev date 9127, assembled in 1991 indicated by chip dates
|
||||
ICL - marked TVK 119 5211 R3, rev date 9343, assembled in 1993 indicated by chip dates
|
||||
+--------------------------------------------------------------------------------------+ ___
|
||||
| IC18 IC24 +----------+ ||
|
||||
| IC1 IC9 |IC31 EPROM| +--------------+ IC44 ||
|
||||
| IC19 IC25 |27128 | | IC35 i8274 | IC51 ||
|
||||
| IC2 IC10 +----------+ | MPSC serial | IC45 ||
|
||||
| +--------------+ +--------+ ||
|
||||
| IC3 IC11 IC17 IC32 SW1 1-10 IC57 ||
|
||||
| +----------+ IC23 IC40 IC46 +--------+ ||
|
||||
| IC4 IC12 IC36 | | IC52 IC58 IC63 o-|
|
||||
| IC20 | IC33 | IC37 IC41 IC47 ||
|
||||
| IC5 IC13 IC26 | i80188 | IC53 XTAL IC59 ||
|
||||
| IC21 | CPU | IC38 IC42 IC48 19.17MHz ||
|
||||
| IC6 IC14 IC27 | | IC54 IC62 ||
|
||||
| +----------+ J3 J2 ||---
|
||||
| IC7 IC15 XTAL IC39 IC43 IC49 I IC55 IC60 || |= Twinax (5250)
|
||||
| IC28 12Mhz R J1 ||---
|
||||
| IC8 IC16 IC50 Q IC56 IC61 o-|
|
||||
| IC22 IC29 IC30 IC34 +--------------------------------------------+|---
|
||||
+-----------------------------------------+ ||||||||| ||||||||||||||||||||||||| | |- BNC (3270)
|
||||
|---
|
||||
|
|
||||
IC's
|
||||
------------------------------------------------------------------------------
|
||||
IC1- IC40-
|
||||
IC16 41256-12 256Kbits DRAM => 512KB IC42 74ALS273
|
||||
IC17 PAL20L8ACNS '1020045 R2A' IC43 74F138
|
||||
IC18 74F109 IC44 ROP101506 kS09240CB012Y- custom Philips chip?
|
||||
IC19- IC45 74ALS540
|
||||
IC20 74F00 IC46-
|
||||
IC21- IC47 74ALS684
|
||||
IC22 74ALS153 IC48 74ALS521
|
||||
IC23 74LS139 IC49 74F257
|
||||
IC24 74F74 IC50 74ALS541
|
||||
IC25 74LS258 IC51 LM339 - quad voltage comparator
|
||||
IC26 74F32 IC52 74ALS74
|
||||
IC27- IC53 XTAL 19.170MHz SCC oscillator
|
||||
IC28 74ALS153 IC54 74ALS38
|
||||
IC29 74F175 IC55 74F138
|
||||
IC30 74F08 IC56 74ALS541
|
||||
IC31 EPROM 'RON 1020044/R2A D500 IC31' IC57 SN75452BP - dual very-fast NAND
|
||||
IC32 74ALS573 IC58 74F109
|
||||
IC33 i80188 CPU IC59 74F10
|
||||
IC34 74F00 IC60 74ALS573
|
||||
IC35 i8274 MPSC serial controller IC61 74ALS541
|
||||
IC36 74ALS573 IC62 74F32
|
||||
IC37 74F10 IC63 74F175
|
||||
IC38 74ALS245
|
||||
IC39 74F00
|
||||
|
||||
General description
|
||||
-------------------
|
||||
The PCB has a 10 bit DIP switch and three jumper fields
|
||||
|
||||
SW1 has 10 positions labeled '1' to '10', left to right, default bit value is off (down) and only bit '10' is on (up)
|
||||
J1 has 2 positions labeled 'AT' and 'PC' top to bottom, 'AT' is default
|
||||
J2 has 2 positions labeled 'AT' and 'PC' top to bottom, 'AT' is default
|
||||
J3 has 7 positions labeled 'IRQ2', IRQ3', 'IRQ4', 'IRQ10', 'IRQ11, 'IRQ12' and 'IRQ15' top to bottom, 'IRQ11' is default
|
||||
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "eis_sad8852.h"
|
||||
#include "cpu/i86/i186.h"
|
||||
#include "machine/z80sio.h"
|
||||
|
||||
#define LOG_READ (1U << 1)
|
||||
|
||||
//#define VERBOSE (LOG_GENERAL)
|
||||
//#define LOG_OUTPUT_STREAM std::cout
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
#define LOGR(...) LOGMASKED(LOG_READ, __VA_ARGS__)
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#define FUNCNAME __func__
|
||||
#else
|
||||
#define FUNCNAME __PRETTY_FUNCTION__
|
||||
#endif
|
||||
|
||||
DEFINE_DEVICE_TYPE(ISA16_SAD8852, isa16_sad8852_device, "sad8852", "SAD8852 IBM mainframe terminal adapter")
|
||||
|
||||
#define I80188_TAG "ic33"
|
||||
|
||||
//-------------------------------------------------
|
||||
// Access methods from ISA bus
|
||||
//-------------------------------------------------
|
||||
READ8_MEMBER( isa16_sad8852_device::sad8852_r )
|
||||
{
|
||||
LOG("%s sad8852_r(): offset=%d\n", FUNCNAME, offset);
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( isa16_sad8852_device::sad8852_w )
|
||||
{
|
||||
LOG("%s : offset=%d data=0x%02x\n", FUNCNAME, offset, data);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( sad8852 )
|
||||
//-------------------------------------------------
|
||||
ROM_START( sad8852 )
|
||||
ROM_REGION( 0x4000, I80188_TAG, 0 )
|
||||
ROM_LOAD( "ron_1020044_r2a_d500_ic31.bin", 0x0000, 0x4000, CRC(cbdd042a) SHA1(7a3d43e6b1f6fcd4402c54aaacf169ac74141cd2) )
|
||||
ROM_END
|
||||
|
||||
const tiny_rom_entry *isa16_sad8852_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( sad8852 );
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// ADDRESS maps
|
||||
//-------------------------------------------------
|
||||
ADDRESS_MAP_START(isa16_sad8852_device::sad8852_mem)
|
||||
AM_RANGE(0x00000, 0x80000) AM_RAM
|
||||
AM_RANGE(0xfc000, 0xfffff) AM_ROM AM_REGION(I80188_TAG, 0)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
ADDRESS_MAP_START(isa16_sad8852_device::sad8852_io)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
//----------------------------------------------------------
|
||||
// UI I/O
|
||||
// - TODO: Figure out function of SW1, J1 and J2
|
||||
// SW1 bits 1-8 are gated to data bus through IC45
|
||||
//----------------------------------------------------------
|
||||
static INPUT_PORTS_START( sad8852_ports )
|
||||
PORT_START("SW1")
|
||||
PORT_DIPNAME( 0x3ff, 0x001, "Unknown" )
|
||||
PORT_DIPSETTING( 0x00, "None" )
|
||||
PORT_DIPSETTING( 0x01, "Default" )
|
||||
|
||||
PORT_START("J1")
|
||||
PORT_CONFNAME( 0x01, 0x01, "PC - AT")
|
||||
PORT_CONFSETTING( 0x00, "PC")
|
||||
PORT_CONFSETTING( 0x01, "AT")
|
||||
|
||||
PORT_START("J2")
|
||||
PORT_CONFNAME( 0x01, 0x01, "PC - AT")
|
||||
PORT_CONFSETTING( 0x00, "PC")
|
||||
PORT_CONFSETTING( 0x01, "AT")
|
||||
|
||||
PORT_START("J3")
|
||||
PORT_CONFNAME( 0x07, 0x04, "ISA IRQ")
|
||||
PORT_CONFSETTING( 0x00, "IRQ2")
|
||||
PORT_CONFSETTING( 0x01, "IRQ3")
|
||||
PORT_CONFSETTING( 0x02, "IRQ4")
|
||||
PORT_CONFSETTING( 0x03, "IRQ10")
|
||||
PORT_CONFSETTING( 0x04, "IRQ11")
|
||||
PORT_CONFSETTING( 0x05, "IRQ12")
|
||||
PORT_CONFSETTING( 0x06, "IRQ15")
|
||||
INPUT_PORTS_END
|
||||
|
||||
ioport_constructor isa16_sad8852_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME( sad8852_ports );
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// Board configuration
|
||||
//-------------------------------------------------
|
||||
MACHINE_CONFIG_START(isa16_sad8852_device::device_add_mconfig)
|
||||
MCFG_CPU_ADD(I80188_TAG, I80188, XTAL(12'000'000) / 2) // Chip revision is 6 MHz
|
||||
MCFG_CPU_PROGRAM_MAP( sad8852_mem )
|
||||
MCFG_CPU_IO_MAP(sad8852_io)
|
||||
|
||||
MCFG_DEVICE_ADD("terminal", I8274_NEW, XTAL(12'000'000) / 3) // Needs verification
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
isa16_sad8852_device::isa16_sad8852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, ISA16_SAD8852, tag, owner, clock)
|
||||
, device_isa16_card_interface(mconfig, *this)
|
||||
, m_sw1(*this, "SW1")
|
||||
, m_j1(*this, "J1")
|
||||
, m_j2(*this, "J2")
|
||||
, m_isairq(*this, "J3")
|
||||
, m_installed(false)
|
||||
, m_irq(4)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// Overloading methods
|
||||
//-------------------------------------------------
|
||||
void isa16_sad8852_device::device_start()
|
||||
{
|
||||
set_isa_device();
|
||||
m_installed = false;
|
||||
}
|
||||
|
||||
|
||||
void isa16_sad8852_device::device_reset()
|
||||
{
|
||||
if (!m_installed)
|
||||
{
|
||||
m_isa->install_device(0x378, 0x378, // Wrong, need to find real i/o addresses
|
||||
read8_delegate(FUNC( isa16_sad8852_device::sad8852_r ), this),
|
||||
write8_delegate(FUNC( isa16_sad8852_device::sad8852_w ), this) );
|
||||
m_irq = m_isairq->read();
|
||||
m_installed = true;
|
||||
}
|
||||
}
|
47
src/devices/bus/isa/eis_sad8852.h
Normal file
47
src/devices/bus/isa/eis_sad8852.h
Normal file
@ -0,0 +1,47 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders: Joakim Larsson Edstrom
|
||||
#ifndef MAME_BUS_ISA_EIS_SAD8852_H
|
||||
#define MAME_BUS_ISA_EIS_SAD8852_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "isa.h"
|
||||
|
||||
class isa16_sad8852_device :
|
||||
public device_t,
|
||||
public device_isa16_card_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
isa16_sad8852_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
DECLARE_READ8_MEMBER(sad8852_r);
|
||||
DECLARE_WRITE8_MEMBER(sad8852_w);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// address maps
|
||||
void sad8852_mem(address_map &map);
|
||||
void sad8852_io(address_map &map);
|
||||
|
||||
// optional information overrides
|
||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
|
||||
// helpers
|
||||
required_ioport m_sw1;
|
||||
required_ioport m_j1;
|
||||
required_ioport m_j2;
|
||||
required_ioport m_isairq;
|
||||
bool m_installed;
|
||||
int m_irq;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(ISA16_SAD8852, isa16_sad8852_device)
|
||||
|
||||
#endif // MAME_BUS_ISA_EIS_SAD8852_H
|
@ -52,6 +52,7 @@
|
||||
#include "ne1000.h"
|
||||
#include "ne2000.h"
|
||||
#include "3c505.h"
|
||||
#include "eis_sad8852.h"
|
||||
|
||||
// communication ports
|
||||
#include "lpt.h"
|
||||
@ -159,4 +160,5 @@ SLOT_INTERFACE_START( pc_isa16_cards )
|
||||
SLOT_INTERFACE("mach64", ISA16_SVGA_MACH64)
|
||||
SLOT_INTERFACE("sb16_lle", ISA16_SB16)
|
||||
SLOT_INTERFACE("mcd", ISA16_MCD)
|
||||
SLOT_INTERFACE("sad8852", ISA16_SAD8852)
|
||||
SLOT_INTERFACE_END
|
||||
|
Loading…
Reference in New Issue
Block a user