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.
This commit is contained in:
Chris Hanson 2024-09-19 07:19:18 -07:00 committed by GitHub
parent e8e9468246
commit f845a619e5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 12 deletions

View File

@ -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); });

View File

@ -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)

View File

@ -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