diff --git a/src/emu/bus/a2bus/a2vulcan.c b/src/emu/bus/a2bus/a2vulcan.c index 280e100a211..abd7fe21c32 100644 --- a/src/emu/bus/a2bus/a2vulcan.c +++ b/src/emu/bus/a2bus/a2vulcan.c @@ -61,6 +61,7 @@ //************************************************************************** const device_type A2BUS_VULCAN = &device_creator; +const device_type A2BUS_VULCANGOLD = &device_creator; #define VULCAN_ROM_REGION "vulcan_rom" #define VULCAN_ATA_TAG "vulcan_ata" @@ -74,6 +75,11 @@ ROM_START( vulcan ) ROM_LOAD( "ae vulcan rom v1.4.bin", 0x000000, 0x004000, CRC(798d5825) SHA1(1d668e856e33c6eeb10fe26975341afa8acb81f5) ) 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) ) +ROM_END + /*************************************************************************** FUNCTION PROTOTYPES ***************************************************************************/ @@ -92,11 +98,16 @@ machine_config_constructor a2bus_vulcanbase_device::device_mconfig_additions() c // rom_region - device-specific ROM region //------------------------------------------------- -const rom_entry *a2bus_vulcanbase_device::device_rom_region() const +const rom_entry *a2bus_vulcan_device::device_rom_region() const { return ROM_NAME( vulcan ); } +const rom_entry *a2bus_vulcangold_device::device_rom_region() const +{ + return ROM_NAME( vulcangold ); +} + //************************************************************************** // LIVE DEVICE //************************************************************************** @@ -113,6 +124,11 @@ a2bus_vulcan_device::a2bus_vulcan_device(const machine_config &mconfig, const ch { } +a2bus_vulcangold_device::a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + a2bus_vulcanbase_device(mconfig, A2BUS_VULCAN, "Applied Engineering Vulcan Gold IDE controller", tag, owner, clock, "a2vulgld", __FILE__) +{ +} + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -125,16 +141,22 @@ void a2bus_vulcanbase_device::device_start() astring tempstring; m_rom = device().machine().root_device().memregion(this->subtag(tempstring, VULCAN_ROM_REGION))->base(); - // disable 40 meg partition size limit / protection - m_rom[0x59e] = 0xea; - m_rom[0x59f] = 0xea; - save_item(NAME(m_lastdata)); save_item(NAME(m_ram)); save_item(NAME(m_rombank)); save_item(NAME(m_rambank)); } +void a2bus_vulcan_device::device_start() +{ + // call base class + a2bus_vulcanbase_device::device_start(); + + // disable 40 meg partition size limit / protection in v1.4 ROMs + m_rom[0x59e] = 0xea; + m_rom[0x59f] = 0xea; +} + void a2bus_vulcanbase_device::device_reset() { m_rombank = m_rambank = 0; @@ -177,7 +199,7 @@ UINT8 a2bus_vulcanbase_device::read_c0nx(address_space &space, UINT8 offset) return m_ata->read_cs0(space, offset, 0xff); default: -// printf("Read @ C0n%x\n", offset); + logerror("a2vulcan: unknown read @ C0n%x\n", offset); break; } diff --git a/src/emu/bus/a2bus/a2vulcan.h b/src/emu/bus/a2bus/a2vulcan.h index 21d96483f22..cabe7e7b00e 100644 --- a/src/emu/bus/a2bus/a2vulcan.h +++ b/src/emu/bus/a2bus/a2vulcan.h @@ -2,7 +2,7 @@ a2vulcan.h - Applied Engineering Vulcan IDE controller + Applied Engineering Vulcan and Vulcan Gold IDE controllers *********************************************************************/ @@ -27,7 +27,6 @@ public: // optional information overrides virtual machine_config_constructor device_mconfig_additions() const; - virtual const rom_entry *device_rom_region() const; protected: virtual void device_start(); @@ -55,11 +54,25 @@ class a2bus_vulcan_device : public a2bus_vulcanbase_device { public: a2bus_vulcan_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual const rom_entry *device_rom_region() const; + +protected: + virtual void device_start(); + +protected: +}; + +class a2bus_vulcangold_device : public a2bus_vulcanbase_device +{ +public: + a2bus_vulcangold_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + virtual const rom_entry *device_rom_region() const; protected: }; // device type definition extern const device_type A2BUS_VULCAN; +extern const device_type A2BUS_VULCANGOLD; #endif /* __A2BUS_VULCAN__ */ diff --git a/src/mess/drivers/apple2gs.c b/src/mess/drivers/apple2gs.c index 4f23d9a30ff..ef914a4eb58 100644 --- a/src/mess/drivers/apple2gs.c +++ b/src/mess/drivers/apple2gs.c @@ -310,6 +310,7 @@ static SLOT_INTERFACE_START(apple2_cards) SLOT_INTERFACE("arcbd", A2BUS_ARCADEBOARD) /* Third Millenium Engineering Arcade Board */ SLOT_INTERFACE("midi", A2BUS_MIDI) /* Generic 6840+6850 MIDI board */ SLOT_INTERFACE("vulcan", A2BUS_VULCAN) /* AE Vulcan IDE card */ + SLOT_INTERFACE("vulcangold", A2BUS_VULCANGOLD) /* AE Vulcan Gold IDE card */ SLOT_INTERFACE("zipdrive", A2BUS_ZIPDRIVE) /* ZIP Technologies IDE card */ SLOT_INTERFACE("echoiiplus", A2BUS_ECHOPLUS) /* Street Electronics Echo Plus (Echo II + Mockingboard clone) */ // SLOT_INTERFACE("mdturbo", A2BUS_UDRIVE_TURBO) /* ///SHH Systeme MicroDrive Turbo IDE card */