From 19158e52c69a38e66c4bb3e3781bccbe87258b4c Mon Sep 17 00:00:00 2001 From: AJR Date: Mon, 13 May 2019 10:07:34 -0400 Subject: [PATCH] dc320e: Make board self-ID as 320E rather than 820B (nw) --- src/devices/bus/isa/tekram_dc820.cpp | 21 ++++++++++++++++++--- src/devices/bus/isa/tekram_dc820.h | 8 +++++++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/devices/bus/isa/tekram_dc820.cpp b/src/devices/bus/isa/tekram_dc820.cpp index 60acf997886..ab2375856ce 100644 --- a/src/devices/bus/isa/tekram_dc820.cpp +++ b/src/devices/bus/isa/tekram_dc820.cpp @@ -7,9 +7,12 @@ These EISA host adapters have, in addition to internal and external SCSI and floppy disk connectors, LED and "SPKER" jumper headers. The DC-820 and DC-820B also have four SIMM slots in addition to 64K of - static RAM on board. The DC-320 and DC-320B only have 16K of SRAM. + static RAM on board. The DC-320 and DC-320B only have 16K of SRAM; + the DC-820B firmware switches into DC-320E mode if it fails to read + dummy values back from select RAM locations beyond the 16K limit. The DC-820B has an ASIC in place of the 11 PLDs used by the DC-820. + DC-320E likely uses the same ASIC, though probably on a smaller PCB. It seems likely that these controllers, like the AHA-174X, support a legacy ISA port interface as well as the standard EISA doorbell and @@ -103,9 +106,8 @@ void tekram_eisa_scsi_device::eeprom_w(u8 data) m_eeprom->clk_write(BIT(data, 5)); } -void tekram_eisa_scsi_device::mpu_map(address_map &map) +void tekram_eisa_scsi_device::common_map(address_map &map) { - map(0x00000, 0x0ffff).ram(); map(0x10040, 0x1005f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map)).umask16(0xff00); map(0x10068, 0x10068).rw(FUNC(tekram_eisa_scsi_device::latch_status_r), FUNC(tekram_eisa_scsi_device::int0_ack_w)); map(0x10069, 0x10069).r(FUNC(tekram_eisa_scsi_device::status_r)); @@ -119,6 +121,19 @@ void tekram_eisa_scsi_device::mpu_map(address_map &map) map(0xf0000, 0xfffff).rom().region("firmware", 0); } +void tekram_dc320e_device::mpu_map(address_map &map) +{ + common_map(map); + map(0x00000, 0x03fff).ram(); + map(0x04000, 0x0ffff).noprw(); +} + +void tekram_dc820b_device::mpu_map(address_map &map) +{ + common_map(map); + map(0x00000, 0x0ffff).ram(); +} + void tekram_dc320b_device::eeprom_w(u8 data) { m_eeprom->di_write(BIT(data, 1)); diff --git a/src/devices/bus/isa/tekram_dc820.h b/src/devices/bus/isa/tekram_dc820.h index e723a91776e..2308eb8655a 100644 --- a/src/devices/bus/isa/tekram_dc820.h +++ b/src/devices/bus/isa/tekram_dc820.h @@ -34,7 +34,7 @@ protected: void mask_w(u8 data); void eeprom_w(u8 data); - void mpu_map(address_map &map); + void common_map(address_map &map); void scsic_config(device_t *device); void scsi_add(machine_config &config); @@ -71,6 +71,9 @@ public: protected: virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; + +private: + void mpu_map(address_map &map); }; class tekram_dc820_device : public tekram_eisa_scsi_device @@ -96,6 +99,9 @@ public: protected: virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; + +private: + void mpu_map(address_map &map); }; DECLARE_DEVICE_TYPE(TEKRAM_DC320B, tekram_dc320b_device)