From 641d0ac7a31209566a8c2ee8f5ff56f76d35ab58 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Thu, 13 Jul 2017 18:34:57 +1000 Subject: [PATCH] intellec4: implememnt PROM memory module --- scripts/src/bus.lua | 2 ++ src/devices/bus/intellec4/intellec4.cpp | 2 ++ src/devices/bus/intellec4/tapereader.cpp | 10 +++++----- src/devices/bus/intellec4/tapereader.h | 4 ++++ src/mame/drivers/intellec4.cpp | 2 +- 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)