summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-04-17 22:04:10 +1000
committer Vas Crabb <vas@vastheman.com>2018-04-17 22:04:10 +1000
commitd79226cc3d935057ffcee12573899a30b2c9c7ea (patch)
tree06737571ed6c521fd4cd951a45e42d2371195906
parentb532bcc4358361cd67736b07fc8678161fe45704 (diff)
Revert "(PC-ISA): Add Action Replay card for DOS (1994) (#3445)"
This reverts commit ff815797c969621ad027dca12783f07f3d8f360a.
-rw-r--r--scripts/src/bus.lua2
-rw-r--r--src/devices/bus/isa/areplay.cpp614
-rw-r--r--src/devices/bus/isa/areplay.h102
-rw-r--r--src/devices/bus/isa/isa.cpp5
-rw-r--r--src/devices/bus/isa/isa.h1
-rw-r--r--src/devices/bus/isa/isa_cards.cpp4
6 files changed, 1 insertions, 727 deletions
diff --git a/scripts/src/bus.lua b/scripts/src/bus.lua
index 5b1cbc1e0e4..b2e0b5abe27 100644
--- a/scripts/src/bus.lua
+++ b/scripts/src/bus.lua
@@ -1136,8 +1136,6 @@ if (BUSES["ISA"]~=null) then
MAME_DIR .. "src/devices/bus/isa/myb3k_fdc.h",
MAME_DIR .. "src/devices/bus/isa/eis_sad8852.cpp",
MAME_DIR .. "src/devices/bus/isa/eis_sad8852.h",
- MAME_DIR .. "src/devices/bus/isa/areplay.cpp",
- MAME_DIR .. "src/devices/bus/isa/areplay.h",
}
end
diff --git a/src/devices/bus/isa/areplay.cpp b/src/devices/bus/isa/areplay.cpp
deleted file mode 100644
index 68c665f8bab..00000000000
--- a/src/devices/bus/isa/areplay.cpp
+++ /dev/null
@@ -1,614 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Bavarese
-/***************************************************************************
- Action Replay for DOS (DATEL UK 1994/1995).
- Requires 386/486 and DOS 3.2 or above (no Windows).
-
- Hardware details:
- - 6 DIP switches define hardware address and i/o port,
- another 6 define the IRQ
- DIP switches should only be altered when PC is off. No Plug & Play.
-
- - 2 x UM 6264 (= two 8 K x 8 CMOS SRAM chips)
- - 1 x AMD 29f010 (= 1 Mbit 128Kb x8 flash memory)
-
- - 4 rectangular PAL chips with port / address / glue logic
-
- Codes printed on PCB (compatible with flash firmware)
- REF1066
- 07/11/94
- An earlier design with REF1033 dated 28/10/93 is known.
----------------------------------------------------------------------------------
- Usage: individual drivers needed for real (AREPLAY.COM) and
- protected mode (PROT.EXE; incompatible with EMM386 or QEMM).
-
- Hard disk space _required_ for temp.files by following sections:
- 1. .\AREPLAY.CFG (vital configuration file written by initial SETUP)
-
- 2. file viewer (even if only disk A or B are accessed) -> C:\ARVRAM.DSK
-
- 3. virtual memory managed by AROS, a complex but largely
- undocumented operating system (in flash ROM) -> C:\ARVRAM.RAM
-
- 4. the possibility array of certain trainers -> C:\POSSIBIL.ITY
-
- If hard disk gets unvailable or isn't present, lockups occur!
-
-
- Freezer notes: configuration changes (DOS startup files or
- altered DIP switches) usually render a freezed image unusable.
-
- Main problem is that Areplay.com must be at a precise location given
- by (scratch RAM + offset $10) = (BIOS extension address + $3010);
- at least with 4.8 software release.
-
- To debug crashes in unfreeze, set the DEBUG DIP switch. 'Offset' is
- the freezed location of Areplay.com. It must be the same as the
- offset shown when the Areplay TSR is loaded into memory.
-
- Always keep a 1:1 copy of CONFIG.SYS, AUTOEXEC.BAT and notes about
- DIPs + environment (a write protected boot disk would be ideal).
-
- HIMEM.SYS parameters matter. Mess 0.186 with 'ct486' liked:
- device=HIMEM.SYS /MACHINE:AT /TESTMEM:ON /CPUCLOCK:ON
- Second 8K BIOS chunk must not be detected as available RAM!
- (check with Msd.exe supplied by DOS 6.x)
-
- Software caches like DoubleSpace, Smartdrive are incompatible w.freeze
- because of possible hard disk corruption (a flush is done though).
- ***************************************************************************
- Hardware / logic
- ----------------
- GAL/PAL logic is undumped. Yet well-documented C-64 * Replay
- cartridges give an idea of some basic principles (similar
- ROM/RAM banking, flip-flops).
-
- There is no NMI on the ISA card and no attempt was made to
- hide the card from evil minded programmers.
-
- A constant Irq heartbeat is generated after the card is
- correctly initialized (when the Areplay.com driver loaded).
-
- Cyclic led flashes (on the freezer extension outside the PC case)
- indicate activity.
-
- Byte watch, slow motion, key polling and most other functions are
- implemented in software (via interrupt hooks).
-
- Bit 3 in the single read register indicates if the interrupt came
- from the card or originated elsewhere. The bit is used to
- decide whether to invoke Action Replay - or skip functionality
- altogether.
- Assumption: reset upon each read and set by external logic.
-
- The BIOS extension segment comprises 16K from C8000 on:
- ------------- ROM location set by DIP switches --------------------
- 8 K ROM segment (determined by write to port 1, usually $0280)
- + 4 K RAM bank (1-1F; determined by write to port 2, usually $0281)
- + 4 K scratch RAM (always present, never banked; for vital variables)
- -------------------------------------------------------------------
-
-
- Firmware revisions
- ------------------
- First revision had a non-upgradeable ROM <= V4.0 (undumped).
-
- Newer hardware was equipped with AM29010 EEPROM (*)
-
- Firmware (say V48ROM.ROM with V4 switch) is loaded and banked
- in before boot - just like any other BIOS extension.
-
- Datel drivers refuse to load if the BIOS area chosen is empty
- or the API level of driver and internal (AR)OS do not match.
-
- As a rule of thumb, versions 4.1 - 4.8 of the TSR run on V4 hardware
-
- Driver revisions known are
- 4.1 (outdated; described in German manual, about 1994),
- 4.8 (widely available, ca. 1995) and 5.0 (when released?)
-
- Before distribution via mailbox, flash files (labeled VxxROM.ROM)
- were obfuscated by adding 4,3,2,1 to byte 0,1,2,3.
-
- This driver accepts encrypted or unencrypted VxxROM.ROM files.
-
- TODO:
- (*) unblock flash upgrades, currently intelflash doesn't cooperate
-
- - XMS / EMS memory not really tested
-
- - compatibility with * official * 5.0 binaries (if they exist)
-
- - improve banking; add missing / secret bits.
- Bit 7 in read register seems to be added in later V5 hardware.
-
- No 'magic bits' to disable ROM/RAM or cart were found. Bit 5
- in first write register is set when freezer menu is active.
-*********************************************************************************/
-#include "emu.h"
-#include "areplay.h"
-
-//**************************************************************************
-// DEVICE DEFINITIONS
-//**************************************************************************
-DEFINE_DEVICE_TYPE(ISA8_AREPLAY, isa8_areplay_device, "areplay", "Action Replay for DOS - DATEL UK 1994")
-
-//-------------------------------------------------
-// ROM( action replay ) V4.8 or V5.0
-//-------------------------------------------------
-
-// - official V4.8 firmware = CRC(6c4a64ce)
-// - encoded V5.0 beta firmware = CRC(0ff4d5ef)
-ROM_START( areplay )
- ROM_REGION(0x20000,"v48rom.rom",0)
- ROM_LOAD( "v48rom.rom", 0x0000, 0x20000, CRC(6c4a64ce) SHA1(fac68327a4c8b3cb03def2a69e5930c845a09047) )
-
- ROM_REGION(0x40000,"v50rom.rom",0)
- ROM_LOAD( "v50rom.rom", 0x0000, 0x20000, CRC(0ff4d5ef) SHA1(eb4cd4f71ebf6d604b8e7924141389585b92ff5e) )
-ROM_END
-
-//-------------------------------------------------
-// rom_region - device-specific ROM region
-//-------------------------------------------------
-const tiny_rom_entry *isa8_areplay_device::device_rom_region() const
-{
- return ROM_NAME( areplay );
-}
-
-//-------------------------------------------------
-// device_add_mconfig - add device configuration
-//-------------------------------------------------
-MACHINE_CONFIG_START(isa8_areplay_device::device_add_mconfig)
- MCFG_TIMER_DRIVER_ADD_PERIODIC("heartbeat", isa8_areplay_device, heartbeat_timer, attotime::from_hz(18))
-MACHINE_CONFIG_END
-//**************************************************************************
-
-//-------------------------------------------------
-// isa8_areplay_device - constructor
-//-------------------------------------------------
-isa8_areplay_device::isa8_areplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
- device_t(mconfig, ISA8_AREPLAY, tag, owner, clock),
- device_isa8_card_interface(mconfig, *this)
-{
-}
-
-//-------------------------------------------------
-// device_start - device-specific startup
-//-------------------------------------------------
-void isa8_areplay_device::device_start()
-{
- set_isa_device();
-
- one_shot_timer = timer_alloc(0);
-}
-
-//-------------------------------------------------
-// device_reset - device-specific reset
-//-------------------------------------------------
-void isa8_areplay_device::device_reset()
-{
- uint32_t bank_start;
- uint32_t bank_end;
-
- uint8_t *dest;
- uint16_t io_port_end;
-
- m_write_port1 = 0; // bit 5 set = no IRQs --------- correct?
-
- m_timer_fired = true;
- force_irq_to(false); // side effect on global variable: m_is_heartbeat_present = false
-
- m_current_irq_selected = 5;
-
- m_current_rom_page = 0;
- m_current_RAM_PAGE = INITIAL_RAM_BANK_NO;
-
- int rom = ioport("ROM_ADDRESS")->read();
- switch(rom)
- {
- default:
- m_current_rom_start = 0xc8000 + (rom * 0x4000);
- break;
-
- case 3:
- m_current_rom_start = 0xd2000;
- break;
-
- case 4:
- case 5:
- case 6:
- m_current_rom_start = 0xd4000 + ( (rom - 4) * 0x4000);
- break;
- }
-
- int port = ioport("PORT")->read();
-
- uint16_t io_port = 0x280; // default
- if( (port >= 0) && (port <= 3) )
- io_port = 0x280 + (port * 0x10);
-
- int i_no = ioport("IRQ")->read();
- if( (i_no >= 2) && (i_no <= 7) )
- m_current_irq_selected = i_no;
-
- // Unmap all 16K (8 K + two independent RAM banks a 4 K):
- m_isa->unmap_bank(m_current_rom_start, m_current_rom_start + SIZE_ROM_WINDOW + (SIZE_RAM_BANK * 2) - 1 );
-
- char str[40];
- sprintf(str, "v%drom.rom", 48 + (2 * ioport("COMPATIBILITY")->read()) ); // load "v48rom.rom"
-
- m_isa->install_rom(this, m_current_rom_start, m_current_rom_start + SIZE_ROM_WINDOW - 1, str, str);
-
- memcpy(&m_banked_flash[0], memregion(str)->base(), sizeof(m_banked_flash)); // copy to memory.
-
- if(m_banked_flash[0] != 0x55) // if blob is unbootable, decode and keep copy in banked_flash -
- {
- uint8_t table[4];
- table[0]=4; table[1]=3; table[2]=2; table[3]=1;
-
- for(uint32_t i = 0; i < sizeof(m_banked_flash); i++)
- m_banked_flash[i] -= table[i & 3];
- }
-
- dest = machine().root_device().memregion("isa")->base() + m_current_rom_start - 0xc0000;
- memcpy(dest, &m_banked_flash[0], SIZE_ROM_WINDOW); // place bootable BIOS extension (8 K)
-
- // RAM range: install (4 K chunks)
- bank_start = m_current_rom_start + SIZE_ROM_WINDOW;
- bank_end = bank_start + SIZE_RAM_BANK -1;
-
- m_isa->install_bank(bank_start,
- bank_end, "banked_ram", &m_board_ram[INITIAL_RAM_BANK_NO * SIZE_RAM_BANK]);
-
- // Scratch RAM has a seperate space never banked out. Reserve an extra space -
- bank_start = bank_end + 1;
- bank_end = bank_start + SIZE_RAM_BANK -1;
-
- m_isa->install_bank(bank_start,
- bank_end , "banked_ram", &m_board_ram[SCRATCH_RAM_BANK_NO * SIZE_RAM_BANK]);
-
- // Protect entire bank to deter Himem.sys from detecting free memory -
- m_isa->writeprotect_bank(bank_start, bank_end);
-
- // If only address 0-3 is covered and port changes occur, Unfreeze hangs (one cause of several)
- if( ioport("DEBUG")->read()) // [DEBUG]: cover complete I-O range from 0280 - 02b3.
- {
- io_port = 0x280;
- io_port_end = io_port + 0x33;
- }
- else
- { // cover only offset 0 - 3 (+ io_port)
- io_port_end = io_port + 3;
- }
- m_isa->install_device(io_port, io_port_end, read8_delegate(FUNC(isa8_areplay_device::ar_read), this), write8_delegate(FUNC(isa8_areplay_device::ar_write), this));
-
- if(dest[0]==0x55) // if 'bootable' signature present...
- {
- if ( (ioport("FREEZE_BUTTON")->read() > 0) || (ioport("SLOMO_SWITCH")->read() > 0) )
- popmessage("FREEZE and SLOMO should be disabled before startup!\n[Action Replay]");
- else
- popmessage("Action Replay %1.1f from %x to %x / PORT %x - %x/ IRQ %x", 4.8f + (0.2f * ioport("COMPATIBILITY")->read()),
- m_current_rom_start, bank_end,
- io_port, io_port_end,
- m_current_irq_selected
- );
- }
-}
-
-
-// ----------- ONE READ REGISTER (bits must match when probing for ports. Expected value of bit 7 varies with firmware)
-// bit 0 : (unkown). Must be 1 at startup
-// bit 1 : FREEZE BUTTON (if bit is 0 then 1 is poked to scratch RAM offset + 0xD0 on firmware version 5) * active low *
-// bit 2 : (unkown). Must be 0 at startup
-// bit 3 : ACTION_REPLAY_IRQ. Must be 0 at startup! * active high *
-// bit 4 : (unknown). Must be 1 at startup
-// bit 5 : (unknown). Must be 0 at startup
-// bit 6 : SLOW MOTION SWITCH. Must be 0 at startup * active high *
-// bit 7 : (unknown). Must be 1 at startup of V5.0 firmware and 0 at startup of V4.8.
-READ8_MEMBER(isa8_areplay_device::ar_read)
-{
- offset = offset & 1;
-
- int data = 1 | 16; // unknown bits 0 and 4 must be 1 at all times
-
- if ( ioport("FREEZE_BUTTON")->read() == 0 ) // * active low * [bit 1]
- data |= FREEZE_BUTTON_BIT;
-
- if (m_is_heartbeat_present) // * active high * [bit 3]
- {
- force_irq_to(false); // sets 'm_is_heartbeat_present' to false
- data |= ACTION_REPLAY_IRQ; // status bit needed for sensing of IRQ (1 = AR activity)
- }
-
- if (ioport("SLOMO_SWITCH")->read() > 0) // ? active high ? [bit 6] 0x40
- data |= SLOMO_SWITCH_BIT;
-
- if (ioport("COMPATIBILITY")->read() > 0)
- data |= 0x80; // V5.0 'port sensing' appears to need it
-
- return data;
-}
-
-// ----------- TWO WRITE EGISTERS :
-
-// --- WRITE PORT #1: [ROM] bank select (always in 8 K chunks; $1FFF).
-// Used to communicate with the AM29010 flash chip (access patterns: see datasheet)
-
-// bit 0 : (set to 1 by flash routine, else 0) WRITE ENABLE ?
-// bit 1 : (unknown); leftover bits from address? Usually 0.
-
-// bit 2 : A14 [ bits 2 - 4 select one 8 K bank in 128 K ROM space ]
-// bit 3 : A15 [ bits 2 - 4 select one 8 K bank in 128 K ROM space ]
-// bit 4 : A16 [ bits 2 - 4 select one 8 K bank in 128 K ROM space ]
-// bit 5 : A17. Usually 0. Sense AM29010 flash 'reset' (0xf0) ?
-
-// bit 6 : (unknown); leftover bits from address? Usually 0.
-// bit 7 : LED (bit inverted by firmware when Action Replay is ready)
-
-// --------------------------------------------------------------------------------
-// --- WRITE PORT #2: [RAM] bank select
-
-// bits 0...4 : [RAM] bank select (5 bits address 1 out of 32) pages of 4 K size.
-// bits 5 + 6 : (unknown)
-// Bit 7 : INTERRUPT ENABLE * active high *. Needed for IRQ sensing (pokes data 0x00, then 0x80)
-// Bit 7 = 0 : "disable interrupts"
-// Bit 7 = 1 : "enable interrupts "
-
-WRITE8_MEMBER(isa8_areplay_device::ar_write)
-{
- uint32_t bank_start;
- uint32_t bank_end;
-
- static bool old_irq_state;
- static bool old_led_state;
-
- static uint16_t old_tsr_start, old_bank, old_port;
- uint16_t tsr_start, bank, port;
-
- // Debug freezes which crash the host (usually because start addresses no longer match):
- if( ioport("DEBUG")->read())
- {
- uint8_t *scratch = machine().root_device().memregion("isa")->base() + m_current_rom_start - 0xc0000 + 3 * SIZE_RAM_BANK;
- memcpy(&m_post_mortem_ram[0], scratch, 0x20); // make post mortem dump
-
- tsr_start= m_post_mortem_ram[0x12] | (m_post_mortem_ram[0x13] << 8);
- bank = m_post_mortem_ram[7];
- port = m_post_mortem_ram[0] | (m_post_mortem_ram[1] << 8); // locations valid for 4.8
-
- if( (bank != old_bank ) ||
- (tsr_start != old_tsr_start) ||
- (port != old_port)
- )
- {
- if(tsr_start > 0)
- popmessage("Tsr start address %x\n[Action Replay]",tsr_start);
-
- if( (old_tsr_start > 0) &&
- (old_bank > 0) &&
- (old_port > 0)
- )
- {
- popmessage("Change detected: OFFSET: %x -> %x\nROM BANK: %x -> %x...\nPORT %x -> %x\n[Action Replay]",
- old_tsr_start, tsr_start,
- old_bank, bank,
- old_port, port
- );
- }
-
- old_tsr_start = tsr_start;
- old_bank = bank;
- old_port = port;
- }
- }
-
- offset = offset & 1;
-
- switch(offset)
- {
- // ****************
- // WRITE PORT #1
- // ****************
- case 0: // (EEP)ROM bank select ( 1FFF = 8 K chunks). Range: 0...15 (allows 128 K)
-
- m_write_port1 = data;
-
- bank_end = m_current_rom_start + SIZE_ROM_WINDOW - 1;
- if(data & WRITE_ENABLE_BIT) // detect write to EEPROM area
- {
- m_isa->unmap_bank(m_current_rom_start, bank_end);
- m_isa->install_bank(m_current_rom_start, bank_end,
- "banked_flash", &m_banked_flash[ 16 * SIZE_ROM_WINDOW ]
- );
-
- if(data == 0x01 ) // attempt to query manufacturer ID ?
- {
- popmessage("EEPROM updates are unemulated!\n[Action Replay]");
- m_isa->install_bank(m_current_rom_start, bank_end,
- "banked_flash", &m_banked_flash[ m_current_rom_page * SIZE_ROM_WINDOW ]
- );
- }
- }
- else
- { // ROM PAGE 0 * IS * USED. MSB BITS (11000011) ARE ALWAYS ZERO:
- m_current_rom_page = (data & 0x3c) >> 2; // bits 2...5
-
- m_isa->unmap_bank(m_current_rom_start, bank_end);
- m_isa->install_bank(m_current_rom_start, bank_end,
- "banked_flash", &m_banked_flash[ m_current_rom_page * SIZE_ROM_WINDOW ]
- );
-
- m_isa->writeprotect_bank(m_current_rom_start, bank_end); // *** write protect ROM bank ****
- }
-
- if( ((data & LED_ENABLE_BIT) > 0) && (old_led_state == false) )
- if( ioport("DEBUG")->read() != 0 ) printf(" [Action Replay LED 0 > 1] ");
-
- if( ((data & LED_ENABLE_BIT) == 0) && (old_led_state == true) )
- if( ioport("DEBUG")->read() != 0 ) printf(" [Action Replay LED 1 > 0] ");
-
- old_led_state = (data & LED_ENABLE_BIT) ? true : false; // keep position of statement
-
- break; // (end of) case 0
-
- // ****************
- // WRITE PORT #2
- // ****************
- case 1: // RAM bank select ( FFF = 4K size). Range: 0...31 (128 K possible; amount probed by firmware)
-
- if(old_irq_state == false) // Trigger IRQ only if 0 => 1 transition
- {
- if( ((data & PORT2_IRQ_ENABLE) > 0 ) )
- {
- if(m_timer_fired == true)
- {
- if(m_is_heartbeat_present == false)
- force_irq_to(true);
- }
- }
- } // old irq state was ZERO.
-
- if( (data & PORT2_IRQ_ENABLE) == 0 ) // driver reactivates stuck IRQ by forcing the bit to 0, then 1
- force_irq_to(false);
-
- old_irq_state = (data & PORT2_IRQ_ENABLE) ? true : false; // keep position of statement
-
- bank_start = m_current_rom_start + SIZE_ROM_WINDOW;
- bank_end = bank_start + SIZE_RAM_BANK - 1;
-
- m_isa->unmap_bank(bank_start, bank_end);
-
- m_current_RAM_PAGE = data & 0x1f; // Bits 0..4
-
- m_isa->install_bank(bank_start, bank_end ,
- "banked_ram", &m_board_ram[ SIZE_RAM_BANK * m_current_RAM_PAGE ]
- );
- break; // (end of) case 1 : RAM bank
- }
-}
-
-void isa8_areplay_device::device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr)
-{
- switch (tid)
- {
- default:
-
-if( ioport("DEBUG")->read() != 0 )
- printf("\nONE SHOT **** stopped ****!");
- m_timer_fired = true;
-
- force_irq_to(false);
- break;
-
- } // switch (timer ID)
-}
-
-
-// Subroutine
-// => side effect on global variable: m_is_heartbeat_present = flag;
-
-void isa8_areplay_device::force_irq_to(bool flag)
-{
- m_is_heartbeat_present = flag; // flag indicates the IRQ is generated by Action Replay
-
- if(flag == false)
- one_shot_timer->adjust(attotime::never);
- else
- one_shot_timer->adjust(attotime::from_msec(ONE_SHOT_TIMER_DELAY_MS));
- raise_processor_interrupt(m_current_irq_selected, flag);
-}
-
-TIMER_DEVICE_CALLBACK_MEMBER(isa8_areplay_device::heartbeat_timer)
-{
- if(!m_is_heartbeat_present)
- {
- m_timer_fired = false;
-
- force_irq_to(true); // side effect: m_is_heartbeat_present = true
- }
-}
-
-void isa8_areplay_device::raise_processor_interrupt(int ref, bool state)
-{
- switch(ref)
- {
- case 2:
- m_isa->irq2_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
-
- case 3:
- m_isa->irq3_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
-
- case 4:
- m_isa->irq4_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
-
- case 5:
- m_isa->irq5_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
-
- case 6:
- m_isa->irq6_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
-
- case 7:
- m_isa->irq7_w(state ? ASSERT_LINE : CLEAR_LINE);
- break;
- }
-}
-
-static INPUT_PORTS_START( areplay_dsw )
- PORT_START("FREEZE_BUTTON")
- PORT_DIPNAME(0x01, 0x00, "Freeze (push to activate Action Replay)") PORT_IMPULSE(4)
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x01, DEF_STR(On))
-
- PORT_START("SLOMO_SWITCH")
- PORT_DIPNAME(0x01, 0x00, "Slow motion switch (switch OFF at startup)") PORT_TOGGLE
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x01, DEF_STR(On))
-
- PORT_START("ROM_ADDRESS")
- PORT_DIPNAME( 0xff, 0x00, "16K ROM bank (disable BIOS shadowing; exclude in EMM386)")
- PORT_DIPSETTING( 0, "C8000 - CBFFF (at times occupied by graphics o.HD contr.)" )
- PORT_DIPSETTING( 1, "CC000 - CFFFF" )
- PORT_DIPSETTING( 2, "D0000 - D3FFF" )
- PORT_DIPSETTING( 3, "D2000 - D5FFF" )
- PORT_DIPSETTING( 4, "D4000 - D7FFF" )
- PORT_DIPSETTING( 5, "D8000 - DBFFF" )
- PORT_DIPSETTING( 6, "DC000 - DFFFF" )
-
- PORT_START("PORT")
- PORT_DIPNAME( 0xff, 0x00, "I/O port")
- PORT_DIPSETTING( 0, "0x280" )
- PORT_DIPSETTING( 1, "0x290" )
- PORT_DIPSETTING( 2, "0x2A0" )
- PORT_DIPSETTING( 3, "0x2B0" )
-
- PORT_START("IRQ")
- PORT_DIPNAME( 0xff, 5, "Interrupt number")
- PORT_DIPSETTING( 2, "2 (sometimes usable; timer irq / occupied by 8259A)" )
- PORT_DIPSETTING( 3, "3 (free if not occupied by COM-2 or COM-4)" )
- PORT_DIPSETTING( 4, "4 (do not use if COM-1 or COM-3 present)" )
- PORT_DIPSETTING( 5, "5 (recommended; usually LPT-2)" )
- PORT_DIPSETTING( 6, "6 (do not use if FDC controller present)" )
- PORT_DIPSETTING( 7, "7 (recommended; usually LPT-1)" )
-
- PORT_START("COMPATIBILITY")
- PORT_DIPNAME(0xff, 0x00, "Hardware compatibility") PORT_TOGGLE
- PORT_DIPSETTING( 0, "4.8 (AMD flash)" )
- PORT_DIPSETTING( 1, "5.0 (AMD flash w.different I/O)" )
-
- PORT_START("DEBUG")
- PORT_DIPNAME(0xff, 0x00, "* DEBUGGING ON *") PORT_TOGGLE
- PORT_DIPSETTING(0x00, DEF_STR(Off))
- PORT_DIPSETTING(0x01, DEF_STR(On))
-INPUT_PORTS_END
-
-//-------------------------------------------------
-// isa8_areplay_device - constructor
-//-------------------------------------------------
-ioport_constructor isa8_areplay_device::device_input_ports() const
-{
- return INPUT_PORTS_NAME( areplay_dsw );
-}
diff --git a/src/devices/bus/isa/areplay.h b/src/devices/bus/isa/areplay.h
deleted file mode 100644
index 1e2640a22b8..00000000000
--- a/src/devices/bus/isa/areplay.h
+++ /dev/null
@@ -1,102 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Bavarese
-/***************************************************************************
-
- Action Replay for DOS (ISA card 1994; DATEL UK)
-
-***************************************************************************/
-
-#ifndef MAME_BUS_ISA_AREPLAY_H
-#define MAME_BUS_ISA_AREPLAY_H
-
-#pragma once
-
-#include "isa.h"
-#include "machine/timer.h"
-
-//**************************************************************************
-// MACROS / CONSTANTS
-//**************************************************************************
-// One shot timer (555 timer with unknown interval)
-// TODO: determine exact value
-#define ONE_SHOT_TIMER_DELAY_MS 100
-
-#define SIZE_ROM_WINDOW 0x2000
-#define SIZE_RAM_BANK 0x1000
-
-
-// This is the RAM bank chosen when the AR starts up (after Reset):
-#define INITIAL_RAM_BANK_NO 1
-
-// Assume the scratch is at bank 0 in RAM (0 never selected by firmware, which only accesses 1 - 1F)
-#define SCRATCH_RAM_BANK_NO 0
-
-
-// Port 1:
-#define WRITE_ENABLE_BIT 0x01
-#define FREEZE_BUTTON_BIT 0x02
-#define ACTION_REPLAY_IRQ 0x08
-#define SLOMO_SWITCH_BIT 0x40
-#define LED_ENABLE_BIT 0x80
-
-// Port 2:
-#define PORT2_IRQ_ENABLE 0x80
-
-//**************************************************************************
-// TYPE DEFINITIONS
-//**************************************************************************
-
-class isa8_areplay_device :
- public device_t,
- public device_isa8_card_interface
-{
-public:
- // construction/destruction
- isa8_areplay_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
-
- DECLARE_READ8_MEMBER(ar_read); // one read register
- DECLARE_WRITE8_MEMBER(ar_write); // two write registers.
-
- TIMER_DEVICE_CALLBACK_MEMBER(heartbeat_timer);
-
-protected:
- // device-level overrides
- virtual void device_start() override;
- virtual void device_reset() override;
-
- // optional information overrides
- virtual void device_add_mconfig(machine_config &config) override;
- virtual ioport_constructor device_input_ports() const override;
-
- virtual const tiny_rom_entry *device_rom_region() const override;
- virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
-
-private:
- uint8_t m_board_ram[ (0x1F + 1) * SIZE_RAM_BANK]; // maximum scratch RAM just to be safe (32 pages)
-
- // 16 x 8 = 128K flash ROM. Extra bank (+1) was added to map write attempts (when flashing)
- uint8_t m_banked_flash[ (16 + 1) * SIZE_ROM_WINDOW];
-
- uint8_t m_post_mortem_ram[ SIZE_RAM_BANK];
-
- uint8_t m_write_port1;
-
- int m_current_rom_start;
- int m_current_rom_page;
- int m_current_RAM_PAGE;
-
- int m_current_irq_selected;
-
- bool m_timer_fired;
- emu_timer *one_shot_timer;
-
- bool m_is_heartbeat_present;
-
- void raise_processor_interrupt(int ref, bool state);
- void force_irq_to(bool flag);
-};
-
-// device type definition
-DECLARE_DEVICE_TYPE(ISA8_AREPLAY, isa8_areplay_device)
-
-#endif // MAME_BUS_ISA_AREPLAY_H
diff --git a/src/devices/bus/isa/isa.cpp b/src/devices/bus/isa/isa.cpp
index 1fe08ded87b..91907e4a9f8 100644
--- a/src/devices/bus/isa/isa.cpp
+++ b/src/devices/bus/isa/isa.cpp
@@ -288,11 +288,6 @@ void isa8_device::unmap_bank(offs_t start, offs_t end)
m_memspace->unmap_readwrite(start, end);
}
-void isa8_device::writeprotect_bank(offs_t start, offs_t end)
-{
- m_memspace->unmap_write(start, end);
-}
-
void isa8_device::install_rom(device_t *dev, offs_t start, offs_t end, const char *tag, const char *region)
{
if (machine().root_device().memregion("isa")) {
diff --git a/src/devices/bus/isa/isa.h b/src/devices/bus/isa/isa.h
index 1a49f7a65b0..a8046423e61 100644
--- a/src/devices/bus/isa/isa.h
+++ b/src/devices/bus/isa/isa.h
@@ -224,7 +224,6 @@ public:
void unmap_device(offs_t start, offs_t end) const { m_iospace->unmap_readwrite(start, end); }
void unmap_bank(offs_t start, offs_t end);
- void writeprotect_bank(offs_t start, offs_t end);
void unmap_rom(offs_t start, offs_t end);
bool is_option_rom_space_available(offs_t start, int size);
diff --git a/src/devices/bus/isa/isa_cards.cpp b/src/devices/bus/isa/isa_cards.cpp
index bd514cc6a87..5701350db46 100644
--- a/src/devices/bus/isa/isa_cards.cpp
+++ b/src/devices/bus/isa/isa_cards.cpp
@@ -61,7 +61,7 @@
// other
#include "finalchs.h"
-#include "areplay.h"
+
SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("mda", ISA8_MDA)
@@ -106,7 +106,6 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("wd1002a_wx1", ISA8_WD1002A_WX1)
SLOT_INTERFACE("dectalk", ISA8_DECTALK)
SLOT_INTERFACE("pds", ISA8_PDS)
- SLOT_INTERFACE("areplay", ISA8_AREPLAY)
SLOT_INTERFACE_END
SLOT_INTERFACE_START( pc_isa16_cards )
@@ -142,7 +141,6 @@ SLOT_INTERFACE_START( pc_isa16_cards )
SLOT_INTERFACE("fdcsmc", ISA8_FDC_SMC)
SLOT_INTERFACE("dectalk", ISA8_DECTALK)
SLOT_INTERFACE("pds", ISA8_PDS)
- SLOT_INTERFACE("areplay", ISA8_AREPLAY)
// 16-bit
SLOT_INTERFACE("ide", ISA16_IDE)
SLOT_INTERFACE("ne2000", NE2000)