diff --git a/src/devices/bus/a2bus/a2vulcan.cpp b/src/devices/bus/a2bus/a2vulcan.cpp index 1f1080c4ace..292f80b219a 100644 --- a/src/devices/bus/a2bus/a2vulcan.cpp +++ b/src/devices/bus/a2bus/a2vulcan.cpp @@ -62,8 +62,9 @@ // GLOBAL VARIABLES //************************************************************************** -DEFINE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device, "a2vulcan", "Applied Engineering Vulcan IDE controller") -DEFINE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device, "a2vulgld", "Applied Engineering Vulcan Gold IDE controller") +DEFINE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device, "a2vulcan", "Applied Engineering Vulcan IDE controller (IIgs version)") +DEFINE_DEVICE_TYPE(A2BUS_VULCANIIE, a2bus_vulcaniie_device, "a2vuliie", "Applied Engineering Vulcan IDE controller (//e version)") +DEFINE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device, "a2vulgld", "Applied Engineering Vulcan Gold IDE controller (IIgs version)") #define VULCAN_ROM_REGION "vulcan_rom" #define VULCAN_ATA_TAG "vulcan_ata" @@ -73,6 +74,11 @@ ROM_START( vulcan ) ROM_LOAD( "ae vulcan rom v1.4.bin", 0x000000, 0x004000, CRC(798d5825) SHA1(1d668e856e33c6eeb10fe26975341afa8acb81f5) ) ROM_END +ROM_START( vulcaniie ) + ROM_REGION(0x4000, VULCAN_ROM_REGION, 0) + ROM_LOAD( "ae vulcan vul 1.42e20 - 27128.bin", 0x000000, 0x004000, CRC(eee02aea) SHA1(d88ed27cd776f967b0e3440e05712b3830995f24) ) +ROM_END + ROM_START( vulcangold ) ROM_REGION(0x4000, VULCAN_ROM_REGION, 0) ROM_LOAD( "ae vulcan gold rom v2.0.bin", 0x000000, 0x004000, CRC(19bc3958) SHA1(96a22c2540fa603648a4e638e176eee76523b4e1) ) @@ -100,6 +106,11 @@ const tiny_rom_entry *a2bus_vulcan_device::device_rom_region() const return ROM_NAME( vulcan ); } +const tiny_rom_entry *a2bus_vulcaniie_device::device_rom_region() const +{ + return ROM_NAME( vulcaniie ); +} + const tiny_rom_entry *a2bus_vulcangold_device::device_rom_region() const { return ROM_NAME( vulcangold ); @@ -121,6 +132,11 @@ a2bus_vulcan_device::a2bus_vulcan_device(const machine_config &mconfig, const ch { } +a2bus_vulcaniie_device::a2bus_vulcaniie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + a2bus_vulcanbase_device(mconfig, A2BUS_VULCANIIE, tag, owner, clock) +{ +} + a2bus_vulcangold_device::a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : a2bus_vulcanbase_device(mconfig, A2BUS_VULCANGOLD, tag, owner, clock) { @@ -150,6 +166,16 @@ void a2bus_vulcan_device::device_start() m_rom[0x59f] = 0xea; } +void a2bus_vulcaniie_device::device_start() +{ + // call base class + a2bus_vulcanbase_device::device_start(); + + // disable 40 meg partition size limit / protection in v1.4 ROMs + m_rom[0x540] = 0xea; + m_rom[0x541] = 0xea; +} + void a2bus_vulcanbase_device::device_reset() { m_rombank = m_rambank = 0; diff --git a/src/devices/bus/a2bus/a2vulcan.h b/src/devices/bus/a2bus/a2vulcan.h index c3bacde05c5..a1f867196c4 100644 --- a/src/devices/bus/a2bus/a2vulcan.h +++ b/src/devices/bus/a2bus/a2vulcan.h @@ -62,6 +62,16 @@ protected: protected: }; +class a2bus_vulcaniie_device : public a2bus_vulcanbase_device +{ +public: + a2bus_vulcaniie_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + virtual const tiny_rom_entry *device_rom_region() const override; + +protected: + virtual void device_start() override; +}; + class a2bus_vulcangold_device : public a2bus_vulcanbase_device { public: @@ -71,6 +81,7 @@ public: // device type definition DECLARE_DEVICE_TYPE(A2BUS_VULCAN, a2bus_vulcan_device) +DECLARE_DEVICE_TYPE(A2BUS_VULCANIIE, a2bus_vulcaniie_device) DECLARE_DEVICE_TYPE(A2BUS_VULCANGOLD, a2bus_vulcangold_device) #endif // MAME_BUS_A2BUS_VULCAN_H diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index 2d9f31c7508..dc9c7355630 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -3981,8 +3981,7 @@ static void apple2_cards(device_slot_interface &device) device.option_add("ssprite", A2BUS_SSPRITE); /* Synetix SuperSprite Board */ device.option_add("ssbapple", A2BUS_SSBAPPLE); /* SSB Apple speech board */ device.option_add("twarp", A2BUS_TRANSWARP); /* AE TransWarp accelerator */ - device.option_add("vulcan", A2BUS_VULCAN); /* Applied Engineering Vulcan IDE drive */ - device.option_add("vulcangold", A2BUS_VULCANGOLD); /* Applied Engineering Vulcan Gold IDE drive */ + device.option_add("vulcan", A2BUS_VULCANIIE); /* Applied Engineering Vulcan IDE drive */ } static void apple2eaux_cards(device_slot_interface &device)