diff --git a/hash/a2600.xml b/hash/a2600.xml
index 76f4e546e..21f55dcb9 100644
--- a/hash/a2600.xml
+++ b/hash/a2600.xml
@@ -17034,6 +17034,18 @@ MOS Atari-made game NTSC ROMs had a CO16xxx number and PAL ROMs had CO17xxx numb
+
+ Tarzan (prototype)
+ 1984
+ Coleco
+
+
+
+
+
+
+
+
Task Force
1987
diff --git a/src/devices/bus/vcs/rom.cpp b/src/devices/bus/vcs/rom.cpp
index f40591e11..3de513f0e 100644
--- a/src/devices/bus/vcs/rom.cpp
+++ b/src/devices/bus/vcs/rom.cpp
@@ -41,6 +41,7 @@ DEFINE_DEVICE_TYPE(A26_ROM_4IN1, a26_rom_4in1_device, "vcs_4in1", "Atari VCS
DEFINE_DEVICE_TYPE(A26_ROM_8IN1, a26_rom_8in1_device, "vcs_8in1", "Atari VCS 2600 ROM Cart 8 in 1")
DEFINE_DEVICE_TYPE(A26_ROM_32IN1, a26_rom_32in1_device, "vcs_32in1", "Atari VCS 2600 ROM Cart 32 in 1")
DEFINE_DEVICE_TYPE(A26_ROM_X07, a26_rom_x07_device, "vcs_x07", "Atari VCS 2600 ROM Carts w/X07 bankswitch")
+DEFINE_DEVICE_TYPE(A26_ROM_F0, a26_rom_f0_device, "vcs_f0", "Atari VCS 2600 ROM Carts w/F0 bankswitch")
@@ -883,3 +884,31 @@ void a26_rom_x07_device::change_bank2(offs_t address)
{
m_bank->set_entry((address >> 4) & 0x0f);
}
+
+
+/*-------------------------------------------------
+ "F0 Bankswitch" Carts:
+ read/write access to 0x1ff0-0x1ff1 & 0x1ff8-0x1ff9
+ determines the 4K ROM bank to be read
+
+ GAMES: Atari Tarzan (prototype)
+
+ -------------------------------------------------*/
+
+a26_rom_f0_device::a26_rom_f0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
+ : a26_rom_f6_device(mconfig, A26_ROM_F0, tag, owner, clock)
+{
+}
+
+void a26_rom_f0_device::install_memory_handlers(address_space *space)
+{
+ m_bank->configure_entries(0, 4, get_rom_base(), 0x1000);
+ space->install_read_bank(0x1000, 0x1fff, m_bank);
+ space->install_write_handler(0x1ff0, 0x1ff1, write8sm_delegate(*this, FUNC(a26_rom_f0_device::switch_bank)));
+ space->install_write_handler(0x1ff8, 0x1ff9, write8sm_delegate(*this, [this] (offs_t offset, u8) { switch_bank(offset + 2, 0); }, "bank"));
+ install_super_chip_handlers(space);
+ space->install_read_tap(0x1ff0, 0x1ff1, "bank",
+ [this] (offs_t address, u8 &, u8) { if (!machine().side_effects_disabled()) switch_bank(address - 0x1ff0, 0); });
+ space->install_read_tap(0x1ff8, 0x1ff9, "bank",
+ [this] (offs_t address, u8 &, u8) { if (!machine().side_effects_disabled()) switch_bank(address - 0x1ff8 + 2, 0); });
+}
diff --git a/src/devices/bus/vcs/rom.h b/src/devices/bus/vcs/rom.h
index 3bd20c686..70de5f9c6 100644
--- a/src/devices/bus/vcs/rom.h
+++ b/src/devices/bus/vcs/rom.h
@@ -360,6 +360,17 @@ private:
};
+// ======================> a26_rom_f0_device
+
+class a26_rom_f0_device : public a26_rom_f6_device
+{
+public:
+ a26_rom_f0_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+
+ virtual void install_memory_handlers(address_space *space) override;
+};
+
+
// device type definition
DECLARE_DEVICE_TYPE(A26_ROM_2K_4K, a26_rom_2k_4k_device)
@@ -382,6 +393,7 @@ DECLARE_DEVICE_TYPE(A26_ROM_4IN1, a26_rom_4in1_device)
DECLARE_DEVICE_TYPE(A26_ROM_8IN1, a26_rom_8in1_device)
DECLARE_DEVICE_TYPE(A26_ROM_32IN1, a26_rom_32in1_device)
DECLARE_DEVICE_TYPE(A26_ROM_X07, a26_rom_x07_device)
+DECLARE_DEVICE_TYPE(A26_ROM_F0, a26_rom_f0_device)
#endif // MAME_BUS_VCS_ROM_H
diff --git a/src/devices/bus/vcs/vcs_slot.cpp b/src/devices/bus/vcs/vcs_slot.cpp
index 344071724..8a7a9cef6 100644
--- a/src/devices/bus/vcs/vcs_slot.cpp
+++ b/src/devices/bus/vcs/vcs_slot.cpp
@@ -50,6 +50,7 @@ enum
A26_CM,
A26_X07,
A26_HARMONY,
+ A26_F0,
};
//-------------------------------------------------
@@ -175,6 +176,7 @@ static const vcs_slot slot_list[] =
{ A26_32IN1, "a26_32in1" },
{ A26_X07, "a26_x07" },
{ A26_HARMONY, "a26_harmony" },
+ { A26_F0, "a26_f0" },
};
static int vcs_get_pcb_id(const char *slot)
diff --git a/src/mame/atari/a2600.cpp b/src/mame/atari/a2600.cpp
index 21b408f5d..12f616c32 100644
--- a/src/mame/atari/a2600.cpp
+++ b/src/mame/atari/a2600.cpp
@@ -587,6 +587,7 @@ static void a2600_cart(device_slot_interface &device)
device.option_add("a26_32in1", A26_ROM_32IN1);
device.option_add("a26_x07", A26_ROM_X07);
device.option_add("a26_harmony", A26_ROM_HARMONY);
+ device.option_add("a26_f0", A26_ROM_F0);
}
void a2600_cons_state::a2600_cartslot(machine_config &config)