diff options
author | arbee <rb6502@users.noreply.github.com> | 2018-07-14 17:31:27 -0400 |
---|---|---|
committer | arbee <rb6502@users.noreply.github.com> | 2018-07-14 17:31:27 -0400 |
commit | 13c73b2c5bce90d507c7f049b219aba563d7f523 (patch) | |
tree | 476b813532631f28aea6a6f64639cad7a4179f52 | |
parent | 70b2f500f46192b3a81f77b8f528f13c457b207d (diff) |
New machines marked as NOT_WORKING:
- DECstation 5000/133 [R. Belmont, Al Kossow]
-rw-r--r-- | scripts/target/mame/mess.lua | 3 | ||||
-rw-r--r-- | src/mame/drivers/decstation.cpp | 145 | ||||
-rw-r--r-- | src/mame/machine/decioga.cpp | 49 | ||||
-rw-r--r-- | src/mame/machine/decioga.h | 42 | ||||
-rw-r--r-- | src/mame/mame.lst | 3 |
5 files changed, 242 insertions, 0 deletions
diff --git a/scripts/target/mame/mess.lua b/scripts/target/mame/mess.lua index 4d9c6302392..86b3700e682 100644 --- a/scripts/target/mame/mess.lua +++ b/scripts/target/mame/mess.lua @@ -1885,6 +1885,9 @@ files { createMESSProjects(_target, _subtarget, "dec") files { MAME_DIR .. "src/mame/drivers/dct11em.cpp", + MAME_DIR .. "src/mame/drivers/decstation.cpp", + MAME_DIR .. "src/mame/machine/decioga.cpp", + MAME_DIR .. "src/mame/machine/decioga.h", MAME_DIR .. "src/mame/drivers/dectalk.cpp", MAME_DIR .. "src/mame/drivers/decwritr.cpp", MAME_DIR .. "src/mame/drivers/pdp11.cpp", diff --git a/src/mame/drivers/decstation.cpp b/src/mame/drivers/decstation.cpp new file mode 100644 index 00000000000..982337091c9 --- /dev/null +++ b/src/mame/drivers/decstation.cpp @@ -0,0 +1,145 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/**************************************************************************** + + decstation.cpp: MIPS-based DECstation family + + WANTED: all boot ROM dumps except 5000/133, all TURBOchannel card ROM dumps + + Machine types: + DECstation 3100 (PMAX/KN01): + 16.67 MHz R2000 with FPU and MMU + 24 MiB max RAM + Serial: DEC "DZ" quad-UART (DC7085 gate array) + SCSI: DEC "SII" SCSI interface (DC7061 gate array) + Ethernet: AMD7990 "LANCE" controller + Monochrome or color video on-board + PMIN/KN01: + Cheaper PMAX, 12.5 MHz R2000, same as PMAX + + Personal DECstation 5000/xx (MAXine/KN02BA): + 20, 25, or 33 MHz R3000 or 100 MHz R4000 + 40 MiB max RAM + Serial: DEC "DZ" quad-UART for keyboard/mouse, SCC8530 for modem/printer + SCSI: NCR53C94 + Ethernet: AMD7990 "LANCE" controller + Audio: AMD AM79C30 + Color 1024x768 8bpp video on-board + 2 TURBOchannel slots + + DECstation 5000/1xx: (3MIN/KN02DA): + 20, 25, or 33 MHz R3000 or 100 MHz R4000 + 128 MiB max RAM + Serial: 2x SCC8530 + SCSI: NCR53C94 + Ethernet: AMD7990 "LANCE" controller + No on-board video + 3 TURBOchannel slots + + DECstation 5000/200: (3MAX/KN02): + 25 MHz R3000 + 480 MiB max RAM + Serial: DEC "DZ" quad-UART + SCSI: NCR53C94 + Ethernet: AMD7990 "LANCE" controllor + + DECstation 5000/240, 5000/261 (3MAX+/KN03) + 40 MHz R3400, or 120 MHz R4400. + 480 MiB max RAM + Serial: 2x SCC8530 + SCSI: NCR53C94 + Ethernet: AMD7990 "LANCE" controller + +****************************************************************************/ + +#include "emu.h" +#include "cpu/mips/r3000.h" +#include "machine/decioga.h" + +class decstation_state : public driver_device +{ +public: + decstation_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) , + m_maincpu(*this, "maincpu"), + m_ioga(*this, "ioga") + { } + + void kn02da(machine_config &config); + + void init_decstation(); + +private: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + required_device<cpu_device> m_maincpu; + required_device<dec_ioga_device> m_ioga; + void decstation_map(address_map &map); +}; + +/*************************************************************************** + VIDEO HARDWARE +***************************************************************************/ + +void decstation_state::video_start() +{ +} + +/*************************************************************************** + MACHINE FUNCTIONS +***************************************************************************/ + +void decstation_state::machine_start() +{ +} + +void decstation_state::machine_reset() +{ +} + +/*************************************************************************** + ADDRESS MAPS +***************************************************************************/ + +void decstation_state::decstation_map(address_map &map) +{ + map(0x00000000, 0x07ffffff).ram(); // full 128 MB + map(0x1c000000, 0x1dffffff).m(m_ioga, FUNC(dec_ioga_device::map)); + map(0x1fc00000, 0x1fc3ffff).rom().region("user1", 0); +} + +/*************************************************************************** + MACHINE DRIVERS +***************************************************************************/ + +MACHINE_CONFIG_START(decstation_state::kn02da) + MCFG_DEVICE_ADD( "maincpu", R3041, 33000000 ) // FIXME: Should be R2000 + MCFG_R3000_ENDIANNESS(ENDIANNESS_LITTLE) + MCFG_DEVICE_PROGRAM_MAP( decstation_map ) + + MCFG_DEVICE_ADD("ioga", DECSTATION_IOGA, XTAL(12'500'000)) +MACHINE_CONFIG_END + +static INPUT_PORTS_START( decstation ) + PORT_START("UNUSED") // unused IN0 + PORT_BIT(0xffff, IP_ACTIVE_HIGH, IPT_UNUSED) +INPUT_PORTS_END + +void decstation_state::init_decstation() +{ +} + +/*************************************************************************** + + ROM definition(s) + +***************************************************************************/ + +ROM_START( ds5k133 ) + ROM_REGION32_LE( 0x40000, "user1", 0 ) + ROM_LOAD( "ds5000-133_005eb.bin", 0x000000, 0x040000, CRC(76a91d29) SHA1(140fcdb4fd2327daf764a35006d05fabfbee8da6) ) +ROM_END + +// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS +COMP( 1992, ds5k133, 0, 0, kn02da, decstation, decstation_state, init_decstation, "Digital Equipment Corporation", "DECstation 5000/133", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) diff --git a/src/mame/machine/decioga.cpp b/src/mame/machine/decioga.cpp new file mode 100644 index 00000000000..e40ed1ceffd --- /dev/null +++ b/src/mame/machine/decioga.cpp @@ -0,0 +1,49 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/****************************************************************************** +* +* MIPS DECstation I/O Gate Array emulation +* +* +*/ + +#include "decioga.h" + +DEFINE_DEVICE_TYPE(DECSTATION_IOGA, dec_ioga_device, "decioga", "DECstation I/O Gate Array") + +void dec_ioga_device::map(address_map &map) +{ + map(0x040100, 0x040103).rw(FUNC(dec_ioga_device::csr_r), FUNC(dec_ioga_device::csr_w)); +} + +dec_ioga_device::dec_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, DECSTATION_IOGA, tag, owner, clock) +{ +} + +void dec_ioga_device::device_start() +{ + save_item(NAME(m_csr)); +} + +void dec_ioga_device::device_reset() +{ +} + +READ32_MEMBER(dec_ioga_device::csr_r) +{ + return m_csr; +} + +WRITE32_MEMBER(dec_ioga_device::csr_w) +{ + COMBINE_DATA(&m_csr); +#if 0 + printf("%08x to CSR: diag LEDs [", m_csr); + for (int i = 7; i >= 0; i--) + { + printf("%c", (m_csr & (1<<i)) ? 'O' : '.'); + } + printf("]\n"); +#endif +}
\ No newline at end of file diff --git a/src/mame/machine/decioga.h b/src/mame/machine/decioga.h new file mode 100644 index 00000000000..b723d732f26 --- /dev/null +++ b/src/mame/machine/decioga.h @@ -0,0 +1,42 @@ +// license:BSD-3-Clause +// copyright-holders:R. Belmont +/****************************************************************************** +* +* MIPS DECstation I/O Gate Array emulation +* +* +*/ + +#ifndef MAME_MACHINE_DECIOGA_H +#define MAME_MACHINE_DECIOGA_H + +#pragma once + +#include "emu.h" + +class dec_ioga_device : public device_t +{ +public: + dec_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner) + : dec_ioga_device(mconfig, tag, owner, (uint32_t)0) + { + } + + dec_ioga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + + void map(address_map &map); + +protected: + virtual void device_start() override; + virtual void device_reset() override; + + DECLARE_READ32_MEMBER(csr_r); + DECLARE_WRITE32_MEMBER(csr_w); + +private: + uint32_t m_csr; +}; + +DECLARE_DEVICE_TYPE(DECSTATION_IOGA, dec_ioga_device) + +#endif // MAME_MACHINE_DECIOGA_H
\ No newline at end of file diff --git a/src/mame/mame.lst b/src/mame/mame.lst index be6618fe919..45b38070931 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -11362,6 +11362,9 @@ czeroize // 37 1983.10 Zeroize decocass // decomult // +@source:decstation.cpp +ds5k133 // 1993 Digital Equipment Corporation (DECstation 5000/133) + @source:dectalk.cpp dectalk // 1983 Digital Equipment Corporation |