diff options
Diffstat (limited to 'src/mess/machine/bml3mp1805.c')
-rw-r--r-- | src/mess/machine/bml3mp1805.c | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/src/mess/machine/bml3mp1805.c b/src/mess/machine/bml3mp1805.c deleted file mode 100644 index 2fb71c1605a..00000000000 --- a/src/mess/machine/bml3mp1805.c +++ /dev/null @@ -1,178 +0,0 @@ -/********************************************************************* - - bml3mp1805.c - - Hitachi MP-1805 floppy disk controller card for the MB-6890 - Floppy drive is attached - -*********************************************************************/ - -#include "emu.h" -#include "bml3mp1805.h" - - -/*************************************************************************** - PARAMETERS -***************************************************************************/ - -//************************************************************************** -// GLOBAL VARIABLES -//************************************************************************** - -const device_type BML3BUS_MP1805 = &device_creator<bml3bus_mp1805_device>; - -static const floppy_interface bml3_mp1805_floppy_interface = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - FLOPPY_STANDARD_3_SSDD, - LEGACY_FLOPPY_OPTIONS_NAME(default), - NULL -}; - -WRITE_LINE_MEMBER( bml3bus_mp1805_device::bml3_mc6843_intrq_w ) -{ - if (state) { - m_bml3bus->set_nmi_line(PULSE_LINE); - } -} - -const mc6843_interface bml3_6843_if = -{ - DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, bml3bus_mp1805_device, bml3_mc6843_intrq_w) -}; - - -#define MP1805_ROM_REGION "mp1805_rom" - -ROM_START( mp1805 ) - ROM_REGION(0x10000, MP1805_ROM_REGION, 0) - // MP-1805 disk controller ROM, which replaces part of the system ROM - ROM_LOAD( "mp1805.rom", 0xf800, 0x0800, BAD_DUMP CRC(b532d8d9) SHA1(6f1160356d5bf64b5926b1fdb60db414edf65f22)) -ROM_END - -MACHINE_CONFIG_FRAGMENT( mp1805 ) - MCFG_MC6843_ADD( "mc6843", bml3_6843_if ) - MCFG_LEGACY_FLOPPY_4_DRIVES_ADD(bml3_mp1805_floppy_interface) -MACHINE_CONFIG_END - -/*************************************************************************** - FUNCTION PROTOTYPES -***************************************************************************/ - -//------------------------------------------------- -// machine_config_additions - device-specific -// machine configurations -//------------------------------------------------- - -machine_config_constructor bml3bus_mp1805_device::device_mconfig_additions() const -{ - return MACHINE_CONFIG_NAME( mp1805 ); -} - -//------------------------------------------------- -// rom_region - device-specific ROM region -//------------------------------------------------- - -const rom_entry *bml3bus_mp1805_device::device_rom_region() const -{ - return ROM_NAME( mp1805 ); -} - -READ8_MEMBER( bml3bus_mp1805_device::bml3_mp1805_r) -{ - // TODO: read supported or not? - // return mc6843_drq_r(m_mc6843) ? 0x00 : 0x80; - return -1; -} - -WRITE8_MEMBER( bml3bus_mp1805_device::bml3_mp1805_w) -{ - // b7 b6 b5 b4 b3 b2 b1 b0 - // MT ? ? ? D3 D2 D1 D0 - // MT: 0=motor off, 1=motor on - // Dn: 1=select drive <n> - int drive_select = data & 0x0f; - int drive; - // TODO: MESS UI for flipping disk? Note that D88 images are double-sided, but the physical drive is single-sided - int side = 0; - int motor = BIT(data, 7); - const char *floppy_name = NULL; - switch (drive_select) { - case 1: - drive = 0; - break; - case 2: - drive = 1; - break; - case 4: - drive = 2; - break; - case 8: - drive = 3; - break; - default: - // TODO: what's the correct behaviour if more than one drive select bit is set? Or no bit set? - drive = 0; - break; - } - switch (drive) { - case 0: - floppy_name = FLOPPY_0; - break; - case 1: - floppy_name = FLOPPY_1; - break; - case 2: - floppy_name = FLOPPY_2; - break; - case 3: - floppy_name = FLOPPY_3; - break; - } - device_t *floppy = subdevice(floppy_name); - m_mc6843->set_drive(drive); - floppy_mon_w(floppy, motor); - floppy_drive_set_ready_state(floppy, ASSERT_LINE, 0); - m_mc6843->set_side(side); -} - - -//************************************************************************** -// LIVE DEVICE -//************************************************************************** - -bml3bus_mp1805_device::bml3bus_mp1805_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : - device_t(mconfig, BML3BUS_MP1805, "Hitachi MP-1805 Floppy Controller Card", tag, owner, clock, "bml3mp1805", __FILE__), - device_bml3bus_card_interface(mconfig, *this), - m_mc6843(*this, "mc6843") -{ -} - - -//------------------------------------------------- -// device_start - device-specific startup -//------------------------------------------------- - -void bml3bus_mp1805_device::device_start() -{ - // set_bml3bus_device makes m_slot valid - set_bml3bus_device(); - - m_rom = memregion(MP1805_ROM_REGION)->base(); - - // install into memory - address_space &space_prg = machine().firstcpu->space(AS_PROGRAM); - space_prg.install_readwrite_handler(0xff18, 0xff1f, read8_delegate( FUNC(mc6843_device::read), (mc6843_device*)m_mc6843), write8_delegate(FUNC(mc6843_device::write), (mc6843_device*)m_mc6843) ); - space_prg.install_readwrite_handler(0xff20, 0xff20, read8_delegate( FUNC(bml3bus_mp1805_device::bml3_mp1805_r), this), write8_delegate(FUNC(bml3bus_mp1805_device::bml3_mp1805_w), this) ); - // overwriting the main ROM (rather than using e.g. install_rom) should mean that bank switches for RAM expansion still work... - UINT8 *mainrom = device().machine().root_device().memregion("maincpu")->base(); - memcpy(mainrom + 0xf800, m_rom + 0xf800, 0x800); -} - -void bml3bus_mp1805_device::device_reset() -{ -} |