summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2017-07-13 18:34:57 +1000
committer Vas Crabb <vas@vastheman.com>2017-07-13 18:34:57 +1000
commit641d0ac7a31209566a8c2ee8f5ff56f76d35ab58 (patch)
tree469b53834b870f1f61a0f1791dd41df0522c5162
parent17790b2f5fb33e190b3bc3697bb0480d27a8681f (diff)
intellec4: implememnt PROM memory module
-rw-r--r--scripts/src/bus.lua2
-rw-r--r--src/devices/bus/intellec4/intellec4.cpp2
-rw-r--r--src/devices/bus/intellec4/tapereader.cpp10
-rw-r--r--src/devices/bus/intellec4/tapereader.h4
-rw-r--r--src/mame/drivers/intellec4.cpp2
5 files changed, 14 insertions, 6 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua
index ede875debfb..5d384a7ddf7 100644
--- a/scripts/src/bus.lua
+++ b/scripts/src/bus.lua
@@ -869,6 +869,8 @@ if (BUSES["INTELLEC4"]~=null) then
files {
MAME_DIR .. "src/devices/bus/intellec4/intellec4.cpp",
MAME_DIR .. "src/devices/bus/intellec4/intellec4.h",
+ MAME_DIR .. "src/devices/bus/intellec4/prommemory.cpp",
+ MAME_DIR .. "src/devices/bus/intellec4/prommemory.h",
MAME_DIR .. "src/devices/bus/intellec4/tapereader.cpp",
MAME_DIR .. "src/devices/bus/intellec4/tapereader.h",
}
diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp
index 7b409eb1077..1f456e22558 100644
--- a/src/devices/bus/intellec4/intellec4.cpp
+++ b/src/devices/bus/intellec4/intellec4.cpp
@@ -248,8 +248,10 @@ void device_univ_card_interface::set_bus(univ_bus_device &bus)
+#include "prommemory.h"
#include "tapereader.h"
SLOT_INTERFACE_START(intellec4_univ_cards)
SLOT_INTERFACE("imm4_90", INTELLEC4_TAPE_READER)
+ SLOT_INTERFACE("imm6_26", INTELLEC4_PROM_MEMORY)
SLOT_INTERFACE_END
diff --git a/src/devices/bus/intellec4/tapereader.cpp b/src/devices/bus/intellec4/tapereader.cpp
index 482ac418213..dad9c62f494 100644
--- a/src/devices/bus/intellec4/tapereader.cpp
+++ b/src/devices/bus/intellec4/tapereader.cpp
@@ -5,7 +5,7 @@
#include "tapereader.h"
-DEFINE_DEVICE_TYPE_NS(INTELLEC4_TAPE_READER, bus::intellec4, imm4_90_device, "imm4_90", "Intel imm4-90 High-Speed Paper Tape Reader")
+DEFINE_DEVICE_TYPE_NS(INTELLEC4_TAPE_READER, bus::intellec4, imm4_90_device, "intlc4_imm4_90", "Intel imm4-90 High-Speed Paper Tape Reader")
namespace bus { namespace intellec4 {
@@ -50,10 +50,10 @@ void imm4_90_device::device_start()
save_item(NAME(m_advance));
save_item(NAME(m_stepping));
- rom_ports_space().install_read_handler(0x0040U, 0x004fU, read8_delegate(FUNC(imm4_90_device::rom4_in), this));
- rom_ports_space().install_read_handler(0x0060U, 0x006fU, read8_delegate(FUNC(imm4_90_device::rom6_in), this));
- rom_ports_space().install_read_handler(0x0070U, 0x007fU, read8_delegate(FUNC(imm4_90_device::rom7_in), this));
- rom_ports_space().install_write_handler(0x0040U, 0x004fU, write8_delegate(FUNC(imm4_90_device::rom4_out), this));
+ rom_ports_space().install_read_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom4_in), this));
+ rom_ports_space().install_read_handler(0x0060U, 0x006fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom6_in), this));
+ rom_ports_space().install_read_handler(0x0070U, 0x007fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom7_in), this));
+ rom_ports_space().install_write_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, write8_delegate(FUNC(imm4_90_device::rom4_out), this));
}
diff --git a/src/devices/bus/intellec4/tapereader.h b/src/devices/bus/intellec4/tapereader.h
index 9149049c27e..baba85dde73 100644
--- a/src/devices/bus/intellec4/tapereader.h
+++ b/src/devices/bus/intellec4/tapereader.h
@@ -7,6 +7,10 @@ The monitor PROM has support for loading BNPF or Intel HEX from this
device (use J command to select it), but it doesn't appear in any
catalogues or manuals I've seen. Apparently it was announced in
Computerworld.
+
+In practice you needed a GPIO card (e.g. an imm4-60) to talk to the
+paper taper reader. To simplify configuration we emulate the I/O
+interface and paper tape reader as a single device.
*/
#ifndef MAME_BUS_INTELLEC4_TAPEREADER_H
#define MAME_BUS_INTELLEC4_TAPEREADER_H
diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp
index bfabb28ee77..3c8247d2b1f 100644
--- a/src/mame/drivers/intellec4.cpp
+++ b/src/mame/drivers/intellec4.cpp
@@ -328,7 +328,7 @@ MACHINE_CONFIG_START(intellec4)
MCFG_INTELLEC4_UNIV_BUS_RESET_4002_CB(WRITELINE(intellec4_state, bus_reset_4002))
MCFG_INTELLEC4_UNIV_BUS_USER_RESET_CB(WRITELINE(intellec4_state, bus_user_reset))
MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j7", 518000. / 7, intellec4_univ_cards, "imm4_90")
- MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j8", 518000. / 7, intellec4_univ_cards, nullptr)
+ MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j8", 518000. / 7, intellec4_univ_cards, "imm6_26")
MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j9", 518000. / 7, intellec4_univ_cards, nullptr)
MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j10", 518000. / 7, intellec4_univ_cards, nullptr)
MCFG_INTELLEC4_UNIV_SLOT_ADD("bus", "j11", 518000. / 7, intellec4_univ_cards, nullptr)