diff --git a/.gitattributes b/.gitattributes index e3bc8848cf7..5ebd34743da 100644 --- a/.gitattributes +++ b/.gitattributes @@ -479,6 +479,10 @@ src/emu/bus/a2bus/a2vulcan.c svneol=native#text/plain src/emu/bus/a2bus/a2vulcan.h svneol=native#text/plain src/emu/bus/a2bus/a2zipdrive.c svneol=native#text/plain src/emu/bus/a2bus/a2zipdrive.h svneol=native#text/plain +src/emu/bus/a2bus/corvfdc01.c svneol=native#text/plain +src/emu/bus/a2bus/corvfdc01.h svneol=native#text/plain +src/emu/bus/a2bus/corvfdc02.c svneol=native#text/plain +src/emu/bus/a2bus/corvfdc02.h svneol=native#text/plain src/emu/bus/a2bus/laser128.c svneol=native#text/plain src/emu/bus/a2bus/laser128.h svneol=native#text/plain src/emu/bus/a2bus/mouse.c svneol=native#text/plain diff --git a/src/emu/bus/a2bus/corvfdc01.c b/src/emu/bus/a2bus/corvfdc01.c new file mode 100644 index 00000000000..dcf0db50a00 --- /dev/null +++ b/src/emu/bus/a2bus/corvfdc01.c @@ -0,0 +1,281 @@ +/********************************************************************* + + corvfdc01.c + + Implemention of the Corvus Systems CORVUS01 floppy controller + + Boot PROM 0.8 fixes this at: 8", 500 blocks total, 128 bytes/block, + 26 sectors/track, 77 tracks. + +*********************************************************************/ + +#include "corvfdc01.h" + +/*************************************************************************** + PARAMETERS +***************************************************************************/ + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +const device_type A2BUS_CORVFDC01 = &device_creator; + +#define FDC01_ROM_REGION "fdc01_rom" +#define FDC01_FDC_TAG "fdc01_fdc" + +FLOPPY_FORMATS_MEMBER( a2bus_corvfdc01_device::corv_floppy_formats ) + FLOPPY_IMD_FORMAT +FLOPPY_FORMATS_END + +static SLOT_INTERFACE_START( corv_floppies ) + SLOT_INTERFACE( "8dssd", FLOPPY_8_DSSD ) +SLOT_INTERFACE_END + +MACHINE_CONFIG_FRAGMENT( fdc01 ) + MCFG_FD1793x_ADD(FDC01_FDC_TAG, XTAL_16MHz / 8) + MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(a2bus_corvfdc01_device, intrq_w)) + MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(a2bus_corvfdc01_device, drq_w)) + MCFG_FLOPPY_DRIVE_ADD(FDC01_FDC_TAG":0", corv_floppies, "8dssd", a2bus_corvfdc01_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC01_FDC_TAG":1", corv_floppies, "8dssd", a2bus_corvfdc01_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC01_FDC_TAG":2", corv_floppies, "8dssd", a2bus_corvfdc01_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC01_FDC_TAG":3", corv_floppies, "8dssd", a2bus_corvfdc01_device::corv_floppy_formats) +MACHINE_CONFIG_END + +ROM_START( fdc01 ) + ROM_REGION(0x20, FDC01_ROM_REGION, 0) + ROM_LOAD( "ff01.bin", 0x000000, 0x000020, CRC(ad3c1136) SHA1(b1e1e8a10618588b1b44b3be5d88857497f30b33) ) +ROM_END + +enum +{ + LS_DRQ_bit = 0, // DRQ + LS_INT_bit = 1, // INT + LS_SS_bit = 4, // 1 if single-sided (floppy or drive?) + LS_8IN_bit = 5, // 1 if 8" floppy drive? + LS_DSKCHG_bit = 6, // 0 if disk changed, 1 if not + LS_SD_bit = 7, // 1 if single density + + LS_DRQ_mask = (1 << LS_DRQ_bit), + LS_INT_mask = (1 << LS_INT_bit), + LS_SS_mask = (1 << LS_SS_bit), + LS_8IN_mask = (1 << LS_8IN_bit), + LS_DSKCHG_mask = (1 << LS_DSKCHG_bit), + LS_SD_mask = (1 << LS_SD_bit) +}; + +enum +{ + LC_FLPSD1_bit = 0, // 0 if side 0 , 1 if side 1 + LC_DE0_bit = 1, // drive select bit 0 + LC_DE1_bit = 4, // drive select bit 1 + LC_MOTOROF_bit = 5, // 1 if motor to be turned off + LC_FLP8IN_bit = 6, // 1 to select 8", 0 for 5"1/4 (which I knew what it means) + LC_FMMFM_bit = 7, // 1 to select single density, 0 for double + + LC_FLPSD1_mask = (1 << LC_FLPSD1_bit), + LC_DE0_mask = (1 << LC_DE0_bit), + LC_DE1_mask = (1 << LC_DE1_bit), + LC_MOTOROF_mask = (1 << LC_MOTOROF_bit), + LC_FLP8IN_mask = (1 << LC_FLP8IN_bit), + LC_FMMFM_mask = (1 << LC_FMMFM_bit) +}; + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor a2bus_corvfdc01_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( fdc01 ); +} + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const rom_entry *a2bus_corvfdc01_device::device_rom_region() const +{ + return ROM_NAME( fdc01 ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +a2bus_corvfdc01_device::a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_a2bus_card_interface(mconfig, *this), + m_wdfdc(*this, FDC01_FDC_TAG), + m_con1(*this, FDC01_FDC_TAG":0"), + m_con2(*this, FDC01_FDC_TAG":1"), + m_con3(*this, FDC01_FDC_TAG":2"), + m_con4(*this, FDC01_FDC_TAG":3") +{ +} + +a2bus_corvfdc01_device::a2bus_corvfdc01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, A2BUS_CORVFDC01, "Corvus Systems Floppy Controller", tag, owner, clock, "crvfdc01", __FILE__), + device_a2bus_card_interface(mconfig, *this), + m_wdfdc(*this, FDC01_FDC_TAG), + m_con1(*this, FDC01_FDC_TAG":0"), + m_con2(*this, FDC01_FDC_TAG":1"), + m_con3(*this, FDC01_FDC_TAG":2"), + m_con4(*this, FDC01_FDC_TAG":3") +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void a2bus_corvfdc01_device::device_start() +{ + // set_a2bus_device makes m_slot valid + set_a2bus_device(); + + astring tempstring; + m_rom = device().machine().root_device().memregion(this->subtag(tempstring, FDC01_ROM_REGION))->base(); + + save_item(NAME(m_fdc_local_status)); + save_item(NAME(m_fdc_local_command)); +} + +void a2bus_corvfdc01_device::device_reset() +{ + m_fdc_local_status = 0; + m_fdc_local_command = 0; + m_curfloppy = NULL; +} + +/*------------------------------------------------- + read_c0nx - called for reads from this card's c0nx space +-------------------------------------------------*/ + +UINT8 a2bus_corvfdc01_device::read_c0nx(address_space &space, UINT8 offset) +{ + switch (offset) + { + case 0: // local status + if (m_curfloppy) + { + m_fdc_local_status &= ~LS_DSKCHG_mask; + m_fdc_local_status |= m_curfloppy->dskchg_r() ? LS_DSKCHG_mask : 0; + } + return m_fdc_local_status; + + case 8: // WD1793 at 8-11 + return m_wdfdc->status_r(space, offset); + + case 9: + return m_wdfdc->track_r(space, offset); + + case 10: + return m_wdfdc->sector_r(space, offset); + + case 11: + return m_wdfdc->data_r(space, offset); + } + + return 0xff; +} + + +/*------------------------------------------------- + write_c0nx - called for writes to this card's c0nx space +-------------------------------------------------*/ + +void a2bus_corvfdc01_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data) +{ + int current_drive; + floppy_image_device *floppy; + + switch (offset) + { + case 0: // LOCAL COMMAND REG + m_fdc_local_command = data; + + current_drive = ((data >> LC_DE0_bit) & 1) | ((data >> (LC_DE1_bit-1)) & 2); + switch (current_drive) + { + case 0: + floppy = m_con1 ? m_con1->get_device() : 0; + break; + case 1: + floppy = m_con2 ? m_con2->get_device() : 0; + break; + case 2: + floppy = m_con3 ? m_con3->get_device() : 0; + break; + case 3: + floppy = m_con4 ? m_con4->get_device() : 0; + break; + } + + if (floppy != m_curfloppy) + { + m_wdfdc->set_floppy(floppy); + } + + if (m_curfloppy != NULL) + { + // side select + m_curfloppy->ss_w((data & LC_FLPSD1_mask) != 0); + + // motor control (active low) + m_curfloppy->mon_w((data & LC_MOTOROF_mask) ? 1 : 0); + } + + /*flp_8in = (data & LC_FLP8IN_mask) != 0;*/ + + m_wdfdc->dden_w(BIT(data, LC_FMMFM_bit)); + break; + + case 8: // FDC COMMAMD REG + m_wdfdc->cmd_w(space, offset, data); + break; + + case 9: // FDC TRACK REG + m_wdfdc->track_w(space, offset, data); + break; + + case 10: // FDC SECTOR REG + m_wdfdc->sector_w(space, offset, data); + break; + + case 11: // FDC DATA REG + m_wdfdc->data_w(space, offset, data); + break; + } +} + +/*------------------------------------------------- + read_cnxx - called for reads from this card's cnxx space +-------------------------------------------------*/ + +UINT8 a2bus_corvfdc01_device::read_cnxx(address_space &space, UINT8 offset) +{ + return m_rom[offset & 0x1f]; +} + +WRITE_LINE_MEMBER(a2bus_corvfdc01_device::intrq_w) +{ + if (state) + m_fdc_local_status |= LS_INT_mask; + else + m_fdc_local_status &= ~LS_INT_mask; +} + +WRITE_LINE_MEMBER(a2bus_corvfdc01_device::drq_w) +{ + if (state) + m_fdc_local_status |= LS_DRQ_mask; + else + m_fdc_local_status &= ~LS_DRQ_mask; +} + diff --git a/src/emu/bus/a2bus/corvfdc01.h b/src/emu/bus/a2bus/corvfdc01.h new file mode 100644 index 00000000000..5a6b38ed74d --- /dev/null +++ b/src/emu/bus/a2bus/corvfdc01.h @@ -0,0 +1,63 @@ +/********************************************************************* + + corvfdc01.h + + Implemention of the Corvus Systems CORVUS01 floppy controller + +*********************************************************************/ + +#ifndef __A2BUS_CORVFDC01__ +#define __A2BUS_CORVFDC01__ + +#include "emu.h" +#include "a2bus.h" +#include "machine/wd_fdc.h" +#include "formats/imd_dsk.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class a2bus_corvfdc01_device: + public device_t, + public device_a2bus_card_interface +{ +public: + // construction/destruction + a2bus_corvfdc01_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + a2bus_corvfdc01_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const; + virtual const rom_entry *device_rom_region() const; + + DECLARE_WRITE_LINE_MEMBER(intrq_w); + DECLARE_WRITE_LINE_MEMBER(drq_w); + + DECLARE_FLOPPY_FORMATS(corv_floppy_formats); + +protected: + virtual void device_start(); + virtual void device_reset(); + + // overrides of standard a2bus slot functions + virtual UINT8 read_c0nx(address_space &space, UINT8 offset); + virtual void write_c0nx(address_space &space, UINT8 offset, UINT8 data); + virtual UINT8 read_cnxx(address_space &space, UINT8 offset); + + required_device m_wdfdc; + required_device m_con1; + required_device m_con2; + required_device m_con3; + required_device m_con4; + +private: + UINT8 *m_rom; + UINT8 m_fdc_local_status, m_fdc_local_command; + floppy_image_device *m_curfloppy; +}; + +// device type definition +extern const device_type A2BUS_CORVFDC01; + +#endif /* __A2BUS_CORVFDC01__ */ diff --git a/src/emu/bus/a2bus/corvfdc02.c b/src/emu/bus/a2bus/corvfdc02.c new file mode 100644 index 00000000000..ae698e149a9 --- /dev/null +++ b/src/emu/bus/a2bus/corvfdc02.c @@ -0,0 +1,266 @@ +/********************************************************************* + + corvfdc02.c + + Implemention of the Corvus Systems CORVUS02 floppy controller + aka the "Buffered Floppy Controller" + + Boot PROM 0.8 says 8" DSDD or 5.25" DSDD + +*********************************************************************/ + +#include "corvfdc02.h" + +/*************************************************************************** + PARAMETERS +***************************************************************************/ + +//************************************************************************** +// GLOBAL VARIABLES +//************************************************************************** + +const device_type A2BUS_CORVFDC02 = &device_creator; + +#define FDC02_ROM_REGION "fdc02_rom" +#define FDC02_FDC_TAG "fdc02_fdc" + +FLOPPY_FORMATS_MEMBER( a2bus_corvfdc02_device::corv_floppy_formats ) + FLOPPY_IMD_FORMAT +FLOPPY_FORMATS_END + +static SLOT_INTERFACE_START( corv_floppies ) + SLOT_INTERFACE( "8dsdd", FLOPPY_8_DSDD ) + SLOT_INTERFACE( "525dsqd", FLOPPY_525_QD ) +SLOT_INTERFACE_END + +MACHINE_CONFIG_FRAGMENT( fdc02 ) + MCFG_UPD765A_ADD(FDC02_FDC_TAG, true, false) + MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(a2bus_corvfdc02_device, intrq_w)) + MCFG_UPD765_DRQ_CALLBACK(WRITELINE(a2bus_corvfdc02_device, drq_w)) + MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":0", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":1", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":2", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":3", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) +MACHINE_CONFIG_END + +ROM_START( fdc02 ) + ROM_REGION(0x20, FDC02_ROM_REGION, 0) + ROM_LOAD( "bfc00.bin", 0x000000, 0x000020, CRC(98d1a765) SHA1(d27c3c6921e1bb3778a3f78decf106275bc0add1) ) +ROM_END + +/*************************************************************************** + FUNCTION PROTOTYPES +***************************************************************************/ + +//------------------------------------------------- +// machine_config_additions - device-specific +// machine configurations +//------------------------------------------------- + +machine_config_constructor a2bus_corvfdc02_device::device_mconfig_additions() const +{ + return MACHINE_CONFIG_NAME( fdc02 ); +} + +//------------------------------------------------- +// rom_region - device-specific ROM region +//------------------------------------------------- + +const rom_entry *a2bus_corvfdc02_device::device_rom_region() const +{ + return ROM_NAME( fdc02 ); +} + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + +a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) : + device_t(mconfig, type, name, tag, owner, clock, shortname, source), + device_a2bus_card_interface(mconfig, *this), + m_fdc(*this, FDC02_FDC_TAG), + m_con1(*this, FDC02_FDC_TAG":0"), + m_con2(*this, FDC02_FDC_TAG":1"), + m_con3(*this, FDC02_FDC_TAG":2"), + m_con4(*this, FDC02_FDC_TAG":3") +{ + +} + +a2bus_corvfdc02_device::a2bus_corvfdc02_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, A2BUS_CORVFDC02, "Corvus Systems Buffered Floppy Controller", tag, owner, clock, "crvfdc02", __FILE__), + device_a2bus_card_interface(mconfig, *this), + m_fdc(*this, FDC02_FDC_TAG), + m_con1(*this, FDC02_FDC_TAG":0"), + m_con2(*this, FDC02_FDC_TAG":1"), + m_con3(*this, FDC02_FDC_TAG":2"), + m_con4(*this, FDC02_FDC_TAG":3") +{ +} + +//------------------------------------------------- +// device_start - device-specific startup +//------------------------------------------------- + +void a2bus_corvfdc02_device::device_start() +{ + // set_a2bus_device makes m_slot valid + set_a2bus_device(); + + astring tempstring; + m_rom = device().machine().root_device().memregion(this->subtag(tempstring, FDC02_ROM_REGION))->base(); + + save_item(NAME(m_fdc_local_status)); + save_item(NAME(m_fdc_local_command)); + save_item(NAME(m_bufptr)); + save_item(NAME(m_buffer)); +} + +void a2bus_corvfdc02_device::device_reset() +{ + m_fdc_local_status = 2; + m_fdc_local_command = 0; + m_curfloppy = NULL; +} + +/*------------------------------------------------- + read_c0nx - called for reads from this card's c0nx space +-------------------------------------------------*/ + +UINT8 a2bus_corvfdc02_device::read_c0nx(address_space &space, UINT8 offset) +{ + switch (offset) + { + case 0: // 765 FIFO + return m_fdc->fifo_r(space, 0); + + case 1: // 765 MSR + return m_fdc->msr_r(space, 0); + + case 2: // buffer address + return (m_bufptr>>1) & 0xff; + + case 3: +// printf("Read buffer @ %x = %02x\n", m_bufptr, m_buffer[m_bufptr]); + return m_buffer[m_bufptr]; + + case 4: // local status + if (m_curfloppy) + { + m_fdc_local_status &= ~(1 | 0x40); + m_fdc_local_status |= m_curfloppy->dskchg_r() ? 1 : 0; + m_fdc_local_status |= m_curfloppy->ready_r() ? 0x40 : 0; + } + return m_fdc_local_status; + break; + } + + return 0xff; +} + + +/*------------------------------------------------- + write_c0nx - called for writes to this card's c0nx space +-------------------------------------------------*/ + +void a2bus_corvfdc02_device::write_c0nx(address_space &space, UINT8 offset, UINT8 data) +{ + floppy_image_device *floppy = NULL; + + switch (offset) + { + case 0: // FDC FIFO write + m_fdc->fifo_w(space, offset, data); + break; + + case 1: // FDC ??? + break; + + case 2: // buffer address + m_bufptr = (data << 1) | (data & 1); +// printf("%02x to buffer address yields %x\n", data, m_bufptr); + break; + + case 3: // buffer write +// printf("%02x to buffer @ %x\n", data, m_bufptr); + m_buffer[m_bufptr--] = data; + break; + + case 4: // LOCAL COMMAND REG + m_fdc_local_command = data; + + // drive select enabled? + if (data & 4) + { + switch (data & 3) + { + case 0: + floppy = m_con1 ? m_con1->get_device() : 0; + break; + case 1: + floppy = m_con2 ? m_con2->get_device() : 0; + break; + case 2: + floppy = m_con3 ? m_con3->get_device() : 0; + break; + case 3: + floppy = m_con4 ? m_con4->get_device() : 0; + break; + } + + logerror("corvfdc02: selecting drive %d: %p\n", data & 3, floppy); + + if (floppy != m_curfloppy) + { + m_fdc->set_floppy(floppy); + m_curfloppy = floppy; + } + } + + if (m_curfloppy != NULL) + { + // motor control (active low) + m_curfloppy->mon_w((data & 8) ? 1 : 0); +// printf("Cur drive %p motor %s\n", m_curfloppy, (data & 8) ? "OFF" : "ON"); + } + + if (data & 0x80) + { +// printf("Reset NEC765\n"); + m_fdc->reset(); + } + break; + } +} + +/*------------------------------------------------- + read_cnxx - called for reads from this card's cnxx space +-------------------------------------------------*/ + +UINT8 a2bus_corvfdc02_device::read_cnxx(address_space &space, UINT8 offset) +{ + return m_rom[offset & 0x1f]; +} + +WRITE_LINE_MEMBER(a2bus_corvfdc02_device::intrq_w) +{ + if (state) + { + m_fdc_local_status &= ~2; // indicate IRQ occured + if (m_fdc_local_command & 0x20) + { + raise_slot_irq(); + } + } + else + { + m_fdc_local_status |= 2; // clear IRQ + lower_slot_irq(); + } +} + +WRITE_LINE_MEMBER(a2bus_corvfdc02_device::drq_w) +{ +// printf("DRQ: %d\n", state); +} + diff --git a/src/emu/bus/a2bus/corvfdc02.h b/src/emu/bus/a2bus/corvfdc02.h new file mode 100644 index 00000000000..40988d6ac1f --- /dev/null +++ b/src/emu/bus/a2bus/corvfdc02.h @@ -0,0 +1,65 @@ +/********************************************************************* + + corvfdc02.h + + Implemention of the Corvus Systems CORVUS02 floppy controller + +*********************************************************************/ + +#ifndef __A2BUS_CORVFDC02__ +#define __A2BUS_CORVFDC02__ + +#include "emu.h" +#include "a2bus.h" +#include "machine/upd765.h" +#include "formats/imd_dsk.h" + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +class a2bus_corvfdc02_device: + public device_t, + public device_a2bus_card_interface +{ +public: + // construction/destruction + a2bus_corvfdc02_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source); + a2bus_corvfdc02_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + // optional information overrides + virtual machine_config_constructor device_mconfig_additions() const; + virtual const rom_entry *device_rom_region() const; + + DECLARE_WRITE_LINE_MEMBER(intrq_w); + DECLARE_WRITE_LINE_MEMBER(drq_w); + + DECLARE_FLOPPY_FORMATS(corv_floppy_formats); + +protected: + virtual void device_start(); + virtual void device_reset(); + + // overrides of standard a2bus slot functions + virtual UINT8 read_c0nx(address_space &space, UINT8 offset); + virtual void write_c0nx(address_space &space, UINT8 offset, UINT8 data); + virtual UINT8 read_cnxx(address_space &space, UINT8 offset); + + required_device m_fdc; + required_device m_con1; + required_device m_con2; + required_device m_con3; + required_device m_con4; + +private: + UINT8 *m_rom; + UINT8 m_fdc_local_status, m_fdc_local_command; + UINT16 m_bufptr; + UINT8 m_buffer[2048]; // 1x6116 SRAM + floppy_image_device *m_curfloppy; +}; + +// device type definition +extern const device_type A2BUS_CORVFDC02; + +#endif /* __A2BUS_CORVFDC02__ */ diff --git a/src/emu/bus/bus.mak b/src/emu/bus/bus.mak index 961c299051f..009fede5a0b 100644 --- a/src/emu/bus/bus.mak +++ b/src/emu/bus/bus.mak @@ -781,6 +781,8 @@ BUSOBJS += $(BUSOBJ)/a2bus/a2mcms.o BUSOBJS += $(BUSOBJ)/a2bus/a2dx1.o BUSOBJS += $(BUSOBJ)/a2bus/timemasterho.o BUSOBJS += $(BUSOBJ)/a2bus/mouse.o +BUSOBJS += $(BUSOBJ)/a2bus/corvfdc01.o +BUSOBJS += $(BUSOBJ)/a2bus/corvfdc02.o endif #------------------------------------------------- diff --git a/src/mess/drivers/concept.c b/src/mess/drivers/concept.c index 46ede40e32d..8630999f91f 100644 --- a/src/mess/drivers/concept.c +++ b/src/mess/drivers/concept.c @@ -32,6 +32,8 @@ #include "cpu/m68000/m68000.h" #include "includes/concept.h" #include "bus/a2bus/a2corvus.h" +#include "bus/a2bus/corvfdc01.h" +#include "bus/a2bus/corvfdc02.h" #include "bus/rs232/rs232.h" static ADDRESS_MAP_START(concept_memmap, AS_PROGRAM, 16, concept_state ) @@ -194,6 +196,8 @@ INPUT_PORTS_END SLOT_INTERFACE_START( concept_a2_cards ) SLOT_INTERFACE("fchdd", A2BUS_CORVUS) /* Corvus flat-cable HDD interface (see notes in a2corvus.c) */ + SLOT_INTERFACE("fdc01", A2BUS_CORVFDC01) /* Corvus WD1793 floppy controller */ + SLOT_INTERFACE("fdc02", A2BUS_CORVFDC02) /* Corvus NEC765 buffered floppy controller */ SLOT_INTERFACE_END @@ -254,7 +258,7 @@ static MACHINE_CONFIG_START( concept, concept_state ) MCFG_A2BUS_SLOT_ADD(A2BUS_TAG, "sl1", concept_a2_cards, NULL) MCFG_A2BUS_SLOT_ADD(A2BUS_TAG, "sl2", concept_a2_cards, NULL) MCFG_A2BUS_SLOT_ADD(A2BUS_TAG, "sl3", concept_a2_cards, NULL) - MCFG_A2BUS_SLOT_ADD(A2BUS_TAG, "sl4", concept_a2_cards, "fchdd") + MCFG_A2BUS_SLOT_ADD(A2BUS_TAG, "sl4", concept_a2_cards, "fdc02") /* 2x RS232 ports */ MCFG_RS232_PORT_ADD("rs232a", default_rs232_devices, NULL)