mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
New machines marked as NOT_WORKING
---------------------------------- Scientific Instruments Model 5500 Temperature Controller [ClawGrip]
This commit is contained in:
parent
d1e3e46eeb
commit
c6900b12fd
@ -2959,6 +2959,18 @@ if (MACHINES["WD7600"]~=null) then
|
||||
}
|
||||
end
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/devices/machine/x2201.h,MACHINES["X2201"] = true
|
||||
---------------------------------------------------
|
||||
|
||||
if (MACHINES["X2201"]~=null) then
|
||||
files {
|
||||
MAME_DIR .. "src/devices/machine/x2201.cpp",
|
||||
MAME_DIR .. "src/devices/machine/x2201.h",
|
||||
}
|
||||
end
|
||||
|
||||
---------------------------------------------------
|
||||
--
|
||||
--@src/devices/machine/x2212.h,MACHINES["X2212"] = true
|
||||
|
@ -618,6 +618,7 @@ MACHINES["WD11C00_17"] = true
|
||||
MACHINES["WD2010"] = true
|
||||
MACHINES["WD33C93"] = true
|
||||
MACHINES["WD7600"] = true
|
||||
MACHINES["X2201"] = true
|
||||
MACHINES["X2212"] = true
|
||||
MACHINES["X76F041"] = true
|
||||
MACHINES["X76F100"] = true
|
||||
@ -3808,6 +3809,7 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/sh4robot.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/sansa_fuze.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/scopus.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/si5500.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/softbox.cpp",
|
||||
MAME_DIR .. "src/mame/includes/softbox.h",
|
||||
MAME_DIR .. "src/mame/drivers/squale.cpp",
|
||||
|
189
src/devices/machine/x2201.cpp
Normal file
189
src/devices/machine/x2201.cpp
Normal file
@ -0,0 +1,189 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/**********************************************************************
|
||||
|
||||
Xicor X2201 1024 x 1 bit Nonvolatile Static RAM
|
||||
|
||||
This was Xicor's first NOVRAM product, combining static RAM with
|
||||
an E²PROM overlay. Besides having separate data input and output
|
||||
lines (and only one of each), its interface differs slightly from
|
||||
the later NOVRAMs in requiring an active chip select during recall
|
||||
and store operations.
|
||||
|
||||
While US patent 4535411A suggests that this device was sometimes
|
||||
used in groups of eight to simulate a byte-wide memory, the
|
||||
emulation (for the most part) assumes each bit will be accessed
|
||||
separately and packs them into bytes for storage efficiency.
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "machine/x2201.h"
|
||||
#include <algorithm>
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(X2201, x2201_device, "x2201", "Xicor X2201 1024x1 NOVRAM")
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE CONSTRUCTION AND INITIALIZATION
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// x2201_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
x2201_device::x2201_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
|
||||
: device_t(mconfig, X2201, tag, owner, clock)
|
||||
, device_nvram_interface(mconfig, *this)
|
||||
, m_default_data(*this, DEVICE_SELF, 1024 / 8)
|
||||
, m_cs(false)
|
||||
, m_store(false)
|
||||
, m_array_recall(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void x2201_device::device_start()
|
||||
{
|
||||
// create arrays
|
||||
m_ram = make_unique_clear<u8[]>(1024 / 8);
|
||||
m_eeprom = std::make_unique<u8[]>(1028 / 8);
|
||||
|
||||
// register state for saving
|
||||
save_pointer(NAME(m_ram), 1024 / 8);
|
||||
save_pointer(NAME(m_eeprom), 1024 / 8);
|
||||
save_item(NAME(m_cs));
|
||||
save_item(NAME(m_store));
|
||||
save_item(NAME(m_array_recall));
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// NVRAM INTERFACE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_default - called to initialize NVRAM to
|
||||
// its default state
|
||||
//-------------------------------------------------
|
||||
|
||||
void x2201_device::nvram_default()
|
||||
{
|
||||
// erase to ones unless region overrides
|
||||
if (m_default_data.found())
|
||||
std::copy_n(&m_default_data[0], 1024 / 8, &m_eeprom[0]);
|
||||
else
|
||||
std::fill_n(&m_eeprom[0], 1024 / 8, 0xff);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_read - called to read NVRAM from the
|
||||
// specified file
|
||||
//-------------------------------------------------
|
||||
|
||||
void x2201_device::nvram_read(emu_file &file)
|
||||
{
|
||||
file.read(&m_eeprom[0], 1024 / 8);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// nvram_write - called to write NVRAM to the
|
||||
// specified file
|
||||
//-------------------------------------------------
|
||||
|
||||
void x2201_device::nvram_write(emu_file &file)
|
||||
{
|
||||
file.write(&m_eeprom[0], 1024 / 8);
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// MEMORY ACCESS
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// read - read the addressed bit of RAM
|
||||
//-------------------------------------------------
|
||||
|
||||
u8 x2201_device::read(offs_t offset)
|
||||
{
|
||||
return BIT(m_ram[(offset >> 3) & 127], offset & 7);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// read_byte - read 8 bits of data from RAM
|
||||
// (FIXME: remove once CRU reads are 1-bit)
|
||||
//-------------------------------------------------
|
||||
|
||||
u8 x2201_device::read_byte(offs_t offset)
|
||||
{
|
||||
return m_ram[offset & 127];
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write - write one bit of data to RAM
|
||||
//-------------------------------------------------
|
||||
|
||||
void x2201_device::write(offs_t offset, u8 data)
|
||||
{
|
||||
offs_t address = (offset >> 3) & 127;
|
||||
if (BIT(data, 0))
|
||||
m_ram[address] |= 1 << (offset & 7);
|
||||
else
|
||||
m_ram[address] &= ~(1 << (offset & 7));
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// CONTROL STROBES
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// cs_w - write to the CS line (active low)
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(x2201_device::cs_w)
|
||||
{
|
||||
m_cs = !state;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// store_w - trigger to store RAM data in EEPROM
|
||||
// (active low)
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(x2201_device::store_w)
|
||||
{
|
||||
if (m_cs && !state && !m_store)
|
||||
std::copy_n(&m_ram[0], 1024 / 8, &m_eeprom[0]);
|
||||
|
||||
m_array_recall = !state;
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// array_recall_w - trigger to pull EEPROM data
|
||||
// into RAM (active low)
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE_LINE_MEMBER(x2201_device::array_recall_w)
|
||||
{
|
||||
if (m_cs && !state && !m_array_recall)
|
||||
std::copy_n(&m_eeprom[0], 1024 / 8, &m_ram[0]);
|
||||
|
||||
m_array_recall = !state;
|
||||
}
|
75
src/devices/machine/x2201.h
Normal file
75
src/devices/machine/x2201.h
Normal file
@ -0,0 +1,75 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/***************************************************************************
|
||||
|
||||
Xicor X2201 1024 x 1 bit Nonvolatile Static RAM
|
||||
|
||||
****************************************************************************
|
||||
____ ____
|
||||
A0 1 |* \_/ | 18 Vcc
|
||||
A1 2 | | 17 A5
|
||||
A2 3 | | 16 A6
|
||||
A3 4 | | 15 A7
|
||||
A4 5 | X2201 | 14 A8
|
||||
DOut 6 | | 13 A9
|
||||
/STORE 7 | | 12 DIn
|
||||
/WE 8 | | 11 /ARRAY RECALL
|
||||
GND 9 |___________| 10 /CS
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef MAME_MACHINE_X2201_H
|
||||
#define MAME_MACHINE_X2201_H
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> x2201_device
|
||||
|
||||
class x2201_device : public device_t, public device_nvram_interface
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
x2201_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
|
||||
|
||||
// read/write handlers
|
||||
u8 read(offs_t offset);
|
||||
u8 read_byte(offs_t offset); // hack
|
||||
void write(offs_t offset, u8 data);
|
||||
|
||||
// control lines
|
||||
DECLARE_WRITE_LINE_MEMBER(cs_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(array_recall_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(store_w);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
// device_nvram_interface overrides
|
||||
virtual void nvram_default() override;
|
||||
virtual void nvram_read(emu_file &file) override;
|
||||
virtual void nvram_write(emu_file &file) override;
|
||||
|
||||
private:
|
||||
// optional default data
|
||||
optional_region_ptr<u8> m_default_data;
|
||||
|
||||
// memory arrays
|
||||
std::unique_ptr<u8[]> m_ram;
|
||||
std::unique_ptr<u8[]> m_eeprom;
|
||||
|
||||
// line state
|
||||
bool m_cs;
|
||||
bool m_store;
|
||||
bool m_array_recall;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(X2201, x2201_device)
|
||||
|
||||
#endif // MAME_MACHINE_X2201_H
|
232
src/mame/drivers/si5500.cpp
Normal file
232
src/mame/drivers/si5500.cpp
Normal file
@ -0,0 +1,232 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:AJR
|
||||
/*****************************************************************************************
|
||||
|
||||
Skeleton driver for Scientific Instruments Model 5500 temperature controller.
|
||||
|
||||
*****************************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "cpu/tms9900/tms9980a.h"
|
||||
#include "machine/74259.h"
|
||||
//#include "machine/icl7104.h"
|
||||
#include "machine/tms9901.h"
|
||||
#include "machine/tms9902.h"
|
||||
#include "machine/tms9914.h"
|
||||
#include "machine/x2201.h"
|
||||
|
||||
class si5500_state : public driver_device
|
||||
{
|
||||
public:
|
||||
si5500_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_mainpsi(*this, "mainpsi")
|
||||
, m_gpibpsi(*this, "gpibpsi")
|
||||
, m_gpibc(*this, "gpibc")
|
||||
, m_keyplatch(*this, "keyplatch")
|
||||
, m_keypad(*this, "KEYPAD%u", 0U)
|
||||
{
|
||||
}
|
||||
|
||||
void si5500(machine_config &config);
|
||||
|
||||
protected:
|
||||
virtual void machine_start() override;
|
||||
|
||||
private:
|
||||
void mainic_w(offs_t offset, u8 data);
|
||||
DECLARE_WRITE_LINE_MEMBER(gpib_int_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(acc_int_w);
|
||||
u8 gpibpsi_input_r(offs_t offset);
|
||||
DECLARE_WRITE_LINE_MEMBER(gpibc_we_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(gpibc_dbin_w);
|
||||
u8 keypad_r();
|
||||
|
||||
void mem_map(address_map &map);
|
||||
void cru_map(address_map &map);
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<tms9901_device> m_mainpsi;
|
||||
required_device<tms9901_device> m_gpibpsi;
|
||||
required_device<tms9914_device> m_gpibc;
|
||||
required_device<ls259_device> m_keyplatch;
|
||||
required_ioport_array<4> m_keypad;
|
||||
|
||||
u8 m_gpib_data;
|
||||
};
|
||||
|
||||
void si5500_state::machine_start()
|
||||
{
|
||||
m_gpib_data = 0;
|
||||
save_item(NAME(m_gpib_data));
|
||||
}
|
||||
|
||||
void si5500_state::mainic_w(offs_t offset, u8 data)
|
||||
{
|
||||
if (data)
|
||||
m_maincpu->set_input_line(offset & 7, ASSERT_LINE);
|
||||
else
|
||||
m_maincpu->set_input_line(INT_9980A_CLEAR, CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(si5500_state::gpib_int_w)
|
||||
{
|
||||
m_mainpsi->set_single_int(4, state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(si5500_state::acc_int_w)
|
||||
{
|
||||
m_mainpsi->set_single_int(5, state);
|
||||
}
|
||||
|
||||
u8 si5500_state::gpibpsi_input_r(offs_t offset)
|
||||
{
|
||||
if (offset == tms9901_device::P0_P7)
|
||||
return m_gpib_data;
|
||||
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(si5500_state::gpibc_we_w)
|
||||
{
|
||||
if (!state)
|
||||
{
|
||||
u16 pio = m_gpibpsi->pio_outputs();
|
||||
m_gpibc->reg8_w(machine().dummy_space(), (pio >> 8) & 7, pio & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(si5500_state::gpibc_dbin_w)
|
||||
{
|
||||
if (state)
|
||||
{
|
||||
u16 pio = m_gpibpsi->pio_outputs();
|
||||
m_gpib_data = m_gpibc->reg8_r(machine().dummy_space(), (pio >> 8) & 7);
|
||||
}
|
||||
}
|
||||
|
||||
u8 si5500_state::keypad_r()
|
||||
{
|
||||
u8 result = 0xff;
|
||||
|
||||
for (int n = 0; n < 4; n++)
|
||||
if (!BIT(m_keyplatch->output_state(), n))
|
||||
result &= m_keypad[n]->read();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void si5500_state::mem_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x2fff).rom().region("program", 0);
|
||||
map(0x3800, 0x3fff).ram();
|
||||
}
|
||||
|
||||
void si5500_state::cru_map(address_map &map)
|
||||
{
|
||||
// MAME currently has incompatible addressing for CRU reads and writes
|
||||
map(0x00, 0x03).r(m_mainpsi, FUNC(tms9901_device::read));
|
||||
map(0x08, 0x0b).r("acc", FUNC(tms9902_device::cruread));
|
||||
map(0x0c, 0x0f).r("adpsi", FUNC(tms9901_device::read));
|
||||
map(0x16, 0x16).nopr();
|
||||
map(0x17, 0x17).r(FUNC(si5500_state::keypad_r));
|
||||
map(0x40, 0x43).r("nvrpsi", FUNC(tms9901_device::read));
|
||||
map(0x44, 0x47).r(m_gpibpsi, FUNC(tms9901_device::read));
|
||||
map(0x80, 0xff).r("novram", FUNC(x2201_device::read_byte));
|
||||
|
||||
map(0x000, 0x01f).w(m_mainpsi, FUNC(tms9901_device::write));
|
||||
map(0x040, 0x05f).w("acc", FUNC(tms9902_device::cruwrite));
|
||||
map(0x060, 0x07f).w("adpsi", FUNC(tms9901_device::write));
|
||||
map(0x080, 0x087).w("outlatch1", FUNC(ls259_device::write_d0));
|
||||
map(0x088, 0x08f).w("outlatch2", FUNC(ls259_device::write_d0));
|
||||
map(0x090, 0x097).w("outlatch3", FUNC(ls259_device::write_d0));
|
||||
map(0x0a0, 0x0a7).w("outlatch4", FUNC(ls259_device::write_d0));
|
||||
map(0x0a8, 0x0af).w("outlatch5", FUNC(ls259_device::write_d0));
|
||||
map(0x0b0, 0x0bf).w(m_keyplatch, FUNC(ls259_device::write_d0));
|
||||
map(0x200, 0x21f).w("nvrpsi", FUNC(tms9901_device::write));
|
||||
map(0x220, 0x23f).w(m_gpibpsi, FUNC(tms9901_device::write));
|
||||
map(0x400, 0x7ff).w("novram", FUNC(x2201_device::write));
|
||||
}
|
||||
|
||||
static INPUT_PORTS_START(si5500)
|
||||
PORT_START("KEYPAD0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("7") PORT_CODE(KEYCODE_7)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("4") PORT_CODE(KEYCODE_4)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("1") PORT_CODE(KEYCODE_1)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("0") PORT_CODE(KEYCODE_0)
|
||||
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
PORT_START("KEYPAD1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("8") PORT_CODE(KEYCODE_8)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("5") PORT_CODE(KEYCODE_5)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("2") PORT_CODE(KEYCODE_2)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Enter") PORT_CODE(KEYCODE_ENTER)
|
||||
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
PORT_START("KEYPAD2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("9") PORT_CODE(KEYCODE_9)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("6") PORT_CODE(KEYCODE_6)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("3") PORT_CODE(KEYCODE_3)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("#") PORT_CODE(KEYCODE_EQUALS)
|
||||
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
|
||||
PORT_START("KEYPAD3")
|
||||
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("S") PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("M") PORT_CODE(KEYCODE_M)
|
||||
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("R") PORT_CODE(KEYCODE_R)
|
||||
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("*") PORT_CODE(KEYCODE_MINUS)
|
||||
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||
INPUT_PORTS_END
|
||||
|
||||
void si5500_state::si5500(machine_config &config)
|
||||
{
|
||||
TMS9981(config, m_maincpu, 10_MHz_XTAL);
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &si5500_state::mem_map);
|
||||
m_maincpu->set_addrmap(AS_IO, &si5500_state::cru_map);
|
||||
|
||||
TMS9901(config, m_mainpsi, 10_MHz_XTAL / 4);
|
||||
m_mainpsi->intlevel_cb().set(FUNC(si5500_state::mainic_w));
|
||||
|
||||
tms9902_device &acc(TMS9902(config, "acc", 10_MHz_XTAL / 4));
|
||||
acc.int_cb().set(FUNC(si5500_state::acc_int_w));
|
||||
|
||||
TMS9901(config, "adpsi", 10_MHz_XTAL / 4);
|
||||
|
||||
X2201(config, "novram");
|
||||
|
||||
tms9901_device &nvrpsi(TMS9901(config, "nvrpsi", 10_MHz_XTAL / 4));
|
||||
// P0-11 = inputs for DAC?
|
||||
nvrpsi.p_out_cb(13).set("novram", FUNC(x2201_device::array_recall_w));
|
||||
nvrpsi.p_out_cb(14).set("novram", FUNC(x2201_device::store_w));
|
||||
nvrpsi.p_out_cb(15).set("novram", FUNC(x2201_device::cs_w));
|
||||
|
||||
TMS9901(config, m_gpibpsi, 10_MHz_XTAL / 4);
|
||||
m_gpibpsi->p_out_cb(11).set(FUNC(si5500_state::gpibc_we_w));
|
||||
m_gpibpsi->p_out_cb(12).set(FUNC(si5500_state::gpibc_dbin_w));
|
||||
m_gpibpsi->read_cb().set(FUNC(si5500_state::gpibpsi_input_r));
|
||||
|
||||
TMS9914(config, m_gpibc, 10_MHz_XTAL / 4);
|
||||
m_gpibc->int_write_cb().set(FUNC(si5500_state::gpib_int_w));
|
||||
|
||||
LS259(config, "outlatch1");
|
||||
LS259(config, "outlatch2");
|
||||
LS259(config, "outlatch3");
|
||||
LS259(config, "outlatch4");
|
||||
LS259(config, "outlatch5");
|
||||
LS259(config, m_keyplatch);
|
||||
}
|
||||
|
||||
// Board #1 (power): no digital ICs
|
||||
// Board #2 (analog): TMS9901NL, ICL7104-16CPL, ICL8052ACPD, AD524AD, LF13509D
|
||||
// Board #3 (output): X2201AD, 2x TMS9901NL, DAC1222LCN, TMS9914ANL, SN75162BN, DS75160AN
|
||||
// Board #4: HM6116P-4, 3x TMS2532A-25JL, XTAL (10 MHz), TMS9981JDL, TMS9902ANL, TMS9901NL
|
||||
// Back of front panel: 6x HD74LS259, HD74LS251
|
||||
ROM_START(si5500)
|
||||
ROM_REGION(0x3000, "program", 0)
|
||||
ROM_LOAD("m5500dl_7-9-86.u4", 0x0000, 0x1000, CRC(cfcff0fe) SHA1(94173b3b7513954221ce3402ea5b5c36dfa5a8da))
|
||||
ROM_LOAD("m5500dl_7-9-86.u5", 0x1000, 0x1000, CRC(a932e85a) SHA1(f7152ae78bad79b457bb739e7ecc4556ca33cbbc))
|
||||
ROM_LOAD("m5500dl_7-9-86.u6", 0x2000, 0x1000, CRC(3161347d) SHA1(fab6c228a21ef3ecce255079a48ef1697f2c7ccb))
|
||||
ROM_END
|
||||
|
||||
COMP(1986, si5500, 0, 0, si5500, si5500, si5500_state, empty_init, "Scientific Instruments", "Model 5500 Temperature Controller", MACHINE_IS_SKELETON)
|
@ -35027,6 +35027,9 @@ smssgamea
|
||||
shuuz // 136083 (c) 1990
|
||||
shuuz2 // 136083 (c) 1990
|
||||
|
||||
@source:si5500.cpp
|
||||
si5500 //
|
||||
|
||||
@source:sidearms.cpp
|
||||
dyger // (c) 1989 Philko (NOT A CAPCOM GAME but runs on modified Sidearms hardware)
|
||||
dygera // (c) 1989 Philko (NOT A CAPCOM GAME but runs on modified Sidearms hardware)
|
||||
|
@ -650,6 +650,7 @@ segapm.cpp
|
||||
selz80.cpp
|
||||
sg1000.cpp
|
||||
sh4robot.cpp
|
||||
si5500.cpp
|
||||
sitcom.cpp
|
||||
sk1.cpp
|
||||
slc1.cpp
|
||||
|
Loading…
Reference in New Issue
Block a user