summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit13c73b2c5bce90d507c7f049b219aba563d7f523 (patch)
tree476b813532631f28aea6a6f64639cad7a4179f52
parent70b2f500f46192b3a81f77b8f528f13c457b207d (diff)
New machines marked as NOT_WORKING:
- DECstation 5000/133 [R. Belmont, Al Kossow]
-rw-r--r--scripts/target/mame/mess.lua3
-rw-r--r--src/mame/drivers/decstation.cpp145
-rw-r--r--src/mame/machine/decioga.cpp49
-rw-r--r--src/mame/machine/decioga.h42
-rw-r--r--src/mame/mame.lst3
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