summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Chris Hanson <cmhanson@eschatologist.net>2024-09-19 07:19:18 -0700
committer GitHub <noreply@github.com>2024-09-19 10:19:18 -0400
commitf845a619e5ef7fecac6ea03154609e1f5ff8065e (patch)
treed11688bfd3b74328e0b4b9c48904f8fa44f80b5d /src
parente8e9468246cf17e892e58fa35c3ee517494c058f (diff)
sun3, sun3x, sun4: Add NSCSI tape to default devices. (#12733)
Note that only sun4, not sun4c or other variants, has tape among the default devices; by that era, most installation and recovery was via CD-ROM (already in the default devices) rather than via tape.
Diffstat (limited to 'src')
-rw-r--r--src/mame/sun/sun3.cpp6
-rw-r--r--src/mame/sun/sun3x.cpp4
-rw-r--r--src/mame/sun/sun4.cpp51
3 files changed, 49 insertions, 12 deletions
diff --git a/src/mame/sun/sun3.cpp b/src/mame/sun/sun3.cpp
index eb6267fc7c2..b8b62b09ceb 100644
--- a/src/mame/sun/sun3.cpp
+++ b/src/mame/sun/sun3.cpp
@@ -192,6 +192,7 @@ fefc34a - start of mem_size, which queries ECC registers for each memory board
#include "machine/ncr5380.h"
#include "bus/nscsi/cd.h"
#include "bus/nscsi/hd.h"
+#include "bus/nscsi/tape.h"
#include "bus/rs232/rs232.h"
#include "bus/sunkbd/sunkbd.h"
@@ -333,6 +334,7 @@ static void scsi_devices(device_slot_interface &device)
{
device.option_add("cdrom", NSCSI_CDROM);
device.option_add("harddisk", NSCSI_HARDDISK);
+ device.option_add("tape", NSCSI_TAPE);
device.set_option_machine_config("cdrom", sun_cdrom);
}
@@ -1061,7 +1063,7 @@ void sun3_state::sun3(machine_config &config)
NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk");
NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, "tape");
NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom");
NSCSI_CONNECTOR(config, "scsibus:7").option_set("sbc", NCR5380).machine_config([this] (device_t *device) { ncr5380(device); });
@@ -1167,7 +1169,7 @@ void sun3_state::sun3_50(machine_config &config)
NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk");
NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, "tape");
NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom");
NSCSI_CONNECTOR(config, "scsibus:7").option_set("sbc", NCR5380).machine_config([this] (device_t *device) { ncr5380(device); });
diff --git a/src/mame/sun/sun3x.cpp b/src/mame/sun/sun3x.cpp
index c996c14d56e..b22af3705ac 100644
--- a/src/mame/sun/sun3x.cpp
+++ b/src/mame/sun/sun3x.cpp
@@ -130,6 +130,7 @@
#include "bus/nscsi/cd.h"
#include "bus/nscsi/hd.h"
+#include "bus/nscsi/tape.h"
#include "cpu/m68000/m68030.h"
#include "imagedev/floppy.h"
#include "machine/icm7170.h"
@@ -592,6 +593,7 @@ static void scsi_devices(device_slot_interface &device)
{
device.option_add("cdrom", NSCSI_CDROM);
device.option_add("harddisk", NSCSI_HARDDISK);
+ device.option_add("tape", NSCSI_TAPE);
device.set_option_machine_config("cdrom", sun_cdrom);
}
@@ -629,7 +631,7 @@ void sun3x_state::sun3_80(machine_config &config)
NSCSI_CONNECTOR(config, "scsibus:1", scsi_devices, "harddisk");
NSCSI_CONNECTOR(config, "scsibus:2", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:3", scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:4", scsi_devices, "tape");
NSCSI_CONNECTOR(config, "scsibus:5", scsi_devices, nullptr);
NSCSI_CONNECTOR(config, "scsibus:6", scsi_devices, "cdrom");
NSCSI_CONNECTOR(config, "scsibus:7").option_set("esp", NCR53C90).clock(20000000/2); // Emulex 2400138 (68-pin PLCC)
diff --git a/src/mame/sun/sun4.cpp b/src/mame/sun/sun4.cpp
index 66e67e2bd9c..5e61c892c94 100644
--- a/src/mame/sun/sun4.cpp
+++ b/src/mame/sun/sun4.cpp
@@ -413,6 +413,7 @@
#include "bus/nscsi/cd.h"
#include "bus/nscsi/hd.h"
+#include "bus/nscsi/tape.h"
#include "bus/rs232/rs232.h"
#include "bus/sunkbd/sunkbd.h"
#include "bus/sunmouse/sunmouse.h"
@@ -568,6 +569,8 @@ protected:
virtual void machine_reset() override;
virtual void machine_start() override;
+ virtual void scsi_devices_config(machine_config &config) = 0;
+
u32 debugger_r(offs_t offset, u32 mem_mask = ~0);
void debugger_w(offs_t offset, u32 data, u32 mem_mask = ~0);
@@ -681,6 +684,9 @@ public:
void sun4(machine_config &config);
+protected:
+ virtual void scsi_devices_config(machine_config &config) override;
+
private:
void type1space_map(address_map &map);
};
@@ -704,6 +710,9 @@ public:
void sun4_65(machine_config &config);
void sun4_75(machine_config &config);
+protected:
+ virtual void scsi_devices_config(machine_config &config) override;
+
private:
virtual void machine_start() override;
virtual void machine_reset() override;
@@ -1367,6 +1376,7 @@ static void sun_scsi_devices(device_slot_interface &device)
{
device.option_add("cdrom", NSCSI_CDROM);
device.option_add("harddisk", NSCSI_HARDDISK);
+ device.option_add("tape", NSCSI_TAPE);
device.option_add_internal("ncr53c90", NCR53C90);
device.set_option_machine_config("cdrom", sun4_cdrom);
}
@@ -1433,15 +1443,8 @@ void sun4_base_state::sun4_base(machine_config &config)
m_rs232[1]->dcd_handler().set(m_scc[1], FUNC(z80scc_device::dcdb_w));
m_rs232[1]->cts_handler().set(m_scc[1], FUNC(z80scc_device::ctsb_w));
- NSCSI_BUS(config, "scsibus");
- NSCSI_CONNECTOR(config, "scsibus:0", sun_scsi_devices, "harddisk");
- NSCSI_CONNECTOR(config, "scsibus:1", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:2", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:3", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:4", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:5", sun_scsi_devices, nullptr);
- NSCSI_CONNECTOR(config, "scsibus:6", sun_scsi_devices, "cdrom");
- NSCSI_CONNECTOR(config, "scsibus:7", sun_scsi_devices, "ncr53c90", true).set_option_machine_config("ncr53c90", [this] (device_t *device) { ncr53c90(device); });
+ // SCSI
+ scsi_devices_config(config);
}
void sun4_state::sun4(machine_config &config)
@@ -1466,6 +1469,21 @@ void sun4_state::sun4(machine_config &config)
m_maincpu->set_mmu(m_mmu);
}
+void sun4_state::scsi_devices_config(machine_config &config)
+{
+ // sun4 defaults to having a tape device at SCSI ID 4
+
+ NSCSI_BUS(config, "scsibus");
+ NSCSI_CONNECTOR(config, "scsibus:0", sun_scsi_devices, "harddisk");
+ NSCSI_CONNECTOR(config, "scsibus:1", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:2", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:3", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:4", sun_scsi_devices, "tape");
+ NSCSI_CONNECTOR(config, "scsibus:5", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:6", sun_scsi_devices, "cdrom");
+ NSCSI_CONNECTOR(config, "scsibus:7", sun_scsi_devices, "ncr53c90", true).set_option_machine_config("ncr53c90", [this] (device_t *device) { ncr53c90(device); });
+}
+
void sun4c_state::sun4c(machine_config &config)
{
/* basic machine hardware */
@@ -1620,6 +1638,21 @@ void sun4c_state::sun4_75(machine_config &config)
m_maincpu->set_clock(40'000'000);
}
+void sun4c_state::scsi_devices_config(machine_config &config)
+{
+ // sun4c defaults to having nothing at SCSI ID 4
+
+ NSCSI_BUS(config, "scsibus");
+ NSCSI_CONNECTOR(config, "scsibus:0", sun_scsi_devices, "harddisk");
+ NSCSI_CONNECTOR(config, "scsibus:1", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:2", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:3", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:4", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:5", sun_scsi_devices, nullptr);
+ NSCSI_CONNECTOR(config, "scsibus:6", sun_scsi_devices, "cdrom");
+ NSCSI_CONNECTOR(config, "scsibus:7", sun_scsi_devices, "ncr53c90", true).set_option_machine_config("ncr53c90", [this] (device_t *device) { ncr53c90(device); });
+}
+
/*
Boot PROM