summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-04-27 23:28:18 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-04-27 23:28:27 -0400
commit6da4308b0ffbe8882ad9de2c54de17212e441a02 (patch)
tree19c7dbb1f2d5dcd6922473c16d951dd3f05a5612
parent8293d4d68544a6af3988ea9abcd94aa74c26fff3 (diff)
bus/isa/tekram_dc820.cpp: A few more stubs (nw)
-rw-r--r--src/devices/bus/isa/tekram_dc820.cpp53
-rw-r--r--src/devices/bus/isa/tekram_dc820.h7
2 files changed, 50 insertions, 10 deletions
diff --git a/src/devices/bus/isa/tekram_dc820.cpp b/src/devices/bus/isa/tekram_dc820.cpp
index a281affa13f..8b2192d0a57 100644
--- a/src/devices/bus/isa/tekram_dc820.cpp
+++ b/src/devices/bus/isa/tekram_dc820.cpp
@@ -31,6 +31,7 @@ tekram_eisa_scsi_device::tekram_eisa_scsi_device(const machine_config &mconfig,
: device_t(mconfig, type, tag, owner, clock)
, device_isa16_card_interface(mconfig, *this)
, m_mpu(*this, "mpu")
+ , m_cmdlatch(*this, "cmdlatch")
, m_eeprom(*this, "eeprom")
, m_fdc(*this, "fdc")
, m_bios(*this, "bios")
@@ -61,21 +62,28 @@ void tekram_eisa_scsi_device::device_start()
{
}
+void tekram_eisa_scsi_device::int0_ack_w(u8 data)
+{
+}
+
u8 tekram_eisa_scsi_device::status_r()
{
return m_eeprom->do_read() << 3;
}
-void tekram_eisa_scsi_device::mask_w(u8 data)
+void tekram_eisa_scsi_device::misc_w(u8 data)
{
- logerror("%s: Mask register(?) = %02X\n", machine().describe_context(), data);
+ logerror("%s: Misc. control register(?) = %02X\n", machine().describe_context(), data);
}
-u8 tekram_eisa_scsi_device::unknown_r()
+void tekram_eisa_scsi_device::aux_w(u8 data)
{
- if (!machine().side_effects_disabled())
- logerror("%s: Unknown read (reset something?)\n", machine().describe_context());
- return 0;
+ logerror("%s: Aux. control register(?) = %02X\n", machine().describe_context(), data);
+}
+
+void tekram_eisa_scsi_device::mask_w(u8 data)
+{
+ logerror("%s: Mask register(?) = %02X\n", machine().describe_context(), data);
}
void tekram_eisa_scsi_device::eeprom_w(u8 data)
@@ -89,10 +97,13 @@ void tekram_eisa_scsi_device::mpu_map(address_map &map)
{
map(0x00000, 0x0ffff).ram();
map(0x10040, 0x1005f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map)).umask16(0xff00);
+ map(0x10068, 0x10068).w(FUNC(tekram_eisa_scsi_device::int0_ack_w));
map(0x10069, 0x10069).r(FUNC(tekram_eisa_scsi_device::status_r));
+ map(0x1006a, 0x1006a).w(FUNC(tekram_eisa_scsi_device::misc_w));
+ map(0x1006b, 0x1006b).w(FUNC(tekram_eisa_scsi_device::aux_w));
map(0x1006c, 0x1006c).w(FUNC(tekram_eisa_scsi_device::mask_w));
map(0x1006d, 0x1006d).w(FUNC(tekram_eisa_scsi_device::eeprom_w));
- map(0x1006f, 0x1006f).r(FUNC(tekram_eisa_scsi_device::unknown_r));
+ map(0x1006f, 0x1006f).r(m_cmdlatch, FUNC(generic_latch_8_device::read));
map(0x10080, 0x10085).rw("bmic", FUNC(i82355_device::local_r), FUNC(i82355_device::local_w)).umask16(0x00ff);
map(0xf0000, 0xfffff).rom().region("firmware", 0);
}
@@ -109,15 +120,24 @@ u8 tekram_dc320b_device::eeprom_r()
return m_eeprom->do_read() << 4;
}
+u8 tekram_dc320b_device::status_r()
+{
+ return 0;
+}
+
void tekram_dc320b_device::mpu_map(address_map &map)
{
map(0x00000, 0x03fff).ram();
map(0x08000, 0x0801f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map)).umask16(0x00ff);
- map(0x08001, 0x08001).r(FUNC(tekram_dc320b_device::unknown_r));
+ map(0x08001, 0x08001).r(m_cmdlatch, FUNC(generic_latch_8_device::read));
map(0x08080, 0x08085).rw("bmic", FUNC(i82355_device::local_r), FUNC(i82355_device::local_w)).umask16(0x00ff);
+ map(0x08100, 0x08100).w(FUNC(tekram_dc320b_device::int0_ack_w));
+ map(0x08108, 0x08108).w(FUNC(tekram_dc320b_device::aux_w));
map(0x0810a, 0x0810a).w(FUNC(tekram_dc320b_device::eeprom_w));
map(0x0810c, 0x0810c).w(FUNC(tekram_dc320b_device::mask_w));
+ map(0x0810e, 0x0810e).w(FUNC(tekram_dc320b_device::misc_w));
map(0x08180, 0x08180).r(FUNC(tekram_dc320b_device::eeprom_r));
+ map(0x08182, 0x08182).r(FUNC(tekram_dc320b_device::status_r));
map(0xf0000, 0xfffff).rom().region("firmware", 0);
}
@@ -133,9 +153,12 @@ void tekram_dc820_device::mpu_map(address_map &map)
map(0x00000, 0x0ffff).ram();
map(0x10000, 0x1001f).m("scsi:7:scsic", FUNC(ncr53cf94_device::map)).umask16(0x00ff);
map(0x10080, 0x10085).rw("bmic", FUNC(i82355_device::local_r), FUNC(i82355_device::local_w)).umask16(0x00ff);
+ map(0x10106, 0x10106).w(FUNC(tekram_dc820_device::int0_ack_w));
+ map(0x10109, 0x10109).w(FUNC(tekram_dc820_device::aux_w));
map(0x1010b, 0x1010b).w(FUNC(tekram_dc820_device::eeprom_w));
map(0x1010d, 0x1010d).w(FUNC(tekram_dc820_device::mask_w));
- map(0x10200, 0x10200).r(FUNC(tekram_dc820_device::unknown_r));
+ map(0x1010f, 0x1010f).w(FUNC(tekram_dc820_device::misc_w));
+ map(0x10200, 0x10200).r(m_cmdlatch, FUNC(generic_latch_8_device::read));
map(0x10283, 0x10283).r(FUNC(tekram_dc820_device::status_r));
map(0xf0000, 0xfffff).rom().region("firmware", 0);
}
@@ -171,6 +194,9 @@ void tekram_dc320b_device::device_add_mconfig(machine_config &config)
I80186(config, m_mpu, 25'000'000); // verified for DC-320, but not DC-320B
m_mpu->set_addrmap(AS_PROGRAM, &tekram_dc320b_device::mpu_map);
+ GENERIC_LATCH_8(config, m_cmdlatch);
+ m_cmdlatch->data_pending_callback().set(m_mpu, FUNC(i80186_cpu_device::int1_w));
+
EEPROM_93C46_16BIT(config, m_eeprom);
i82355_device &bmic(I82355(config, "bmic", 0));
@@ -186,6 +212,9 @@ void tekram_dc320e_device::device_add_mconfig(machine_config &config)
I80186(config, m_mpu, 32'000'000); // clock guessed to be same as DC-820B due to identical firmware
m_mpu->set_addrmap(AS_PROGRAM, &tekram_dc320e_device::mpu_map);
+ GENERIC_LATCH_8(config, m_cmdlatch);
+ m_cmdlatch->data_pending_callback().set(m_mpu, FUNC(i80186_cpu_device::int1_w));
+
EEPROM_93C46_16BIT(config, m_eeprom);
i82355_device &bmic(I82355(config, "bmic", 0));
@@ -201,6 +230,9 @@ void tekram_dc820_device::device_add_mconfig(machine_config &config)
I80186(config, m_mpu, 32_MHz_XTAL); // N80C186-16
m_mpu->set_addrmap(AS_PROGRAM, &tekram_dc820_device::mpu_map);
+ GENERIC_LATCH_8(config, m_cmdlatch);
+ m_cmdlatch->data_pending_callback().set(m_mpu, FUNC(i80186_cpu_device::int1_w));
+
EEPROM_93C46_16BIT(config, m_eeprom);
i82355_device &bmic(I82355(config, "bmic", 0));
@@ -216,6 +248,9 @@ void tekram_dc820b_device::device_add_mconfig(machine_config &config)
I80186(config, m_mpu, 32_MHz_XTAL); // N80186-16
m_mpu->set_addrmap(AS_PROGRAM, &tekram_dc820b_device::mpu_map);
+ GENERIC_LATCH_8(config, m_cmdlatch);
+ m_cmdlatch->data_pending_callback().set(m_mpu, FUNC(i80186_cpu_device::int1_w));
+
EEPROM_93C46_16BIT(config, m_eeprom);
i82355_device &bmic(I82355(config, "bmic", 0));
diff --git a/src/devices/bus/isa/tekram_dc820.h b/src/devices/bus/isa/tekram_dc820.h
index a9db3ebb2f8..a8b73d432ed 100644
--- a/src/devices/bus/isa/tekram_dc820.h
+++ b/src/devices/bus/isa/tekram_dc820.h
@@ -13,6 +13,7 @@
#include "isa.h"
#include "machine/eepromser.h"
+#include "machine/gen_latch.h"
#include "machine/upd765.h"
class tekram_eisa_scsi_device : public device_t, public device_isa16_card_interface
@@ -25,9 +26,11 @@ protected:
virtual void device_start() override;
+ void int0_ack_w(u8 data);
u8 status_r();
+ void misc_w(u8 data);
+ void aux_w(u8 data);
void mask_w(u8 data);
- u8 unknown_r();
void eeprom_w(u8 data);
void mpu_map(address_map &map);
@@ -35,6 +38,7 @@ protected:
void scsi_add(machine_config &config);
required_device<cpu_device> m_mpu;
+ required_device<generic_latch_8_device> m_cmdlatch;
required_device<eeprom_serial_93cxx_device> m_eeprom;
required_device<upd765_family_device> m_fdc;
required_region_ptr<u8> m_bios;
@@ -52,6 +56,7 @@ protected:
private:
void eeprom_w(u8 data);
u8 eeprom_r();
+ u8 status_r();
void mpu_map(address_map &map);
};