mirror of
https://github.com/holub/mame
synced 2025-04-22 00:11:58 +03:00
bus/bbc/fdc: Added Solidisk DDFS Issues 1/2 and DFDC disk controller boards.
This commit is contained in:
parent
351479f33f
commit
19437e461e
@ -335,6 +335,8 @@ if (BUSES["BBC_FDC"]~=null) then
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/microware.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/opus.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/opus.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/solidisk.h",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/watford.cpp",
|
||||
MAME_DIR .. "src/devices/bus/bbc/fdc/watford.h",
|
||||
}
|
||||
|
@ -98,7 +98,7 @@ void bbc_fdc_slot_device::write(offs_t offset, uint8_t data)
|
||||
#include "cv1797.h"
|
||||
#include "microware.h"
|
||||
#include "opus.h"
|
||||
//#include "solidisk.h"
|
||||
#include "solidisk.h"
|
||||
#include "watford.h"
|
||||
|
||||
|
||||
@ -115,9 +115,9 @@ void bbc_fdc_devices(device_slot_interface &device)
|
||||
device.option_add("opus2791", BBC_OPUS2791);
|
||||
device.option_add("opus2793", BBC_OPUS2793);
|
||||
device.option_add("opus1770", BBC_OPUS1770);
|
||||
//device.option_add("stl8271", BBC_STL8271);
|
||||
//device.option_add("stl1770_1", BBC_STL1770_1);
|
||||
//device.option_add("stl1770_2", BBC_STL1770_2);
|
||||
device.option_add("stl1770_1", BBC_STL1770_1);
|
||||
device.option_add("stl1770_2", BBC_STL1770_2);
|
||||
device.option_add("stldfdc_1", BBC_STLDFDC_1);
|
||||
device.option_add("weddb2", BBC_WEDDB2);
|
||||
device.option_add("weddb3", BBC_WEDDB3);
|
||||
}
|
||||
|
359
src/devices/bus/bbc/fdc/solidisk.cpp
Normal file
359
src/devices/bus/bbc/fdc/solidisk.cpp
Normal file
@ -0,0 +1,359 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Solidisk 1770 Issue 2 FDC
|
||||
|
||||
http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Solidisk_1770DDFS.html
|
||||
|
||||
Solidisk Dual FDC
|
||||
http://chrisacorns.computinghistory.org.uk/8bit_Upgrades/Solidisk_dfdc.html
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#include "emu.h"
|
||||
#include "solidisk.h"
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// DEVICE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
DEFINE_DEVICE_TYPE(BBC_STL1770_1, bbc_stl1770_1_device, "bbc_stl1770_1", "Solidisk 1770 DDFS Issue 1 FDC")
|
||||
DEFINE_DEVICE_TYPE(BBC_STL1770_2, bbc_stl1770_2_device, "bbc_stl1770_2", "Solidisk 1770 DDFS Issue 2 FDC")
|
||||
DEFINE_DEVICE_TYPE(BBC_STLDFDC_1, bbc_stldfdc_1_device, "bbc_stldfdc_1", "Solidisk 8271/1770 DFDC Issue 1 FDC")
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// FLOPPY_FORMATS( floppy_formats )
|
||||
//-------------------------------------------------
|
||||
|
||||
FLOPPY_FORMATS_MEMBER( bbc_stlfdc_device::floppy_formats )
|
||||
FLOPPY_ACORN_SSD_FORMAT,
|
||||
FLOPPY_ACORN_DSD_FORMAT,
|
||||
FLOPPY_ACORN_ADFS_OLD_FORMAT,
|
||||
FLOPPY_FSD_FORMAT
|
||||
FLOPPY_FORMATS_END
|
||||
|
||||
static void bbc_floppies_525(device_slot_interface &device)
|
||||
{
|
||||
device.option_add("525sssd", FLOPPY_525_SSSD);
|
||||
device.option_add("525sd", FLOPPY_525_SD);
|
||||
device.option_add("525ssdd", FLOPPY_525_SSDD);
|
||||
device.option_add("525dd", FLOPPY_525_DD);
|
||||
device.option_add("525qd", FLOPPY_525_QD);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// INPUT_PORTS( stldfdc )
|
||||
//-------------------------------------------------
|
||||
|
||||
INPUT_PORTS_START( stldfdc )
|
||||
PORT_START("DFDC")
|
||||
PORT_CONFNAME(0x01, 0x00, "Dual FDC Select") PORT_CHANGED_MEMBER(DEVICE_SELF, bbc_stlfdc_device, fdc_changed, 0)
|
||||
PORT_CONFSETTING(0x00, "8271")
|
||||
PORT_CONFSETTING(0x01, "1770")
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// input_ports - device-specific input ports
|
||||
//-------------------------------------------------
|
||||
|
||||
ioport_constructor bbc_stldfdc_1_device::device_input_ports() const
|
||||
{
|
||||
return INPUT_PORTS_NAME(stldfdc);
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// ROM( solidisk )
|
||||
//-------------------------------------------------
|
||||
|
||||
ROM_START( stl1770_1 )
|
||||
ROM_REGION(0x4000, "dfs_rom", 0)
|
||||
ROM_SYSTEM_BIOS(0, "dfs21j", "DFS 2.1J (1770)")
|
||||
ROMX_LOAD("solidisk-dfs-2.1j.rom", 0x0000, 0x4000, CRC(b60296f1) SHA1(22e60d4dda37335f61c27a92ba76ccc3e2102c4e), ROM_BIOS(0))
|
||||
ROM_END
|
||||
|
||||
ROM_START( stl1770_2 )
|
||||
ROM_REGION(0x4000, "dfs_rom", 0)
|
||||
ROM_SYSTEM_BIOS(0, "stl22m", "DFS 2.2M Issue 2")
|
||||
ROMX_LOAD("solidisk-dfs-2.2m-iss2.rom", 0x0000, 0x4000, CRC(defe42ec) SHA1(78ee759c0f762bc2717d8454a88f117516d28325), ROM_BIOS(0))
|
||||
ROM_END
|
||||
|
||||
ROM_START( stldfdc_1 )
|
||||
ROM_REGION(0x4000, "dfs_rom", 0)
|
||||
ROM_SYSTEM_BIOS(0, "dfs21", "DFS 2.1 (Mar 85)")
|
||||
ROMX_LOAD("solidisk-dfs-8271-1770-2.1.rom", 0x0000, 0x4000, CRC(cc83d913) SHA1(c761102ac11be629676339e9e496fb78734e4399), ROM_BIOS(0))
|
||||
ROM_END
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_add_mconfig - add device configuration
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_stl1770_1_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
WD1770(config, m_wd1770, DERIVED_CLOCK(1, 1));
|
||||
m_wd1770->drq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::drq_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], bbc_floppies_525, "525qd", bbc_stlfdc_device::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], bbc_floppies_525, "525qd", bbc_stlfdc_device::floppy_formats).enable_sound(true);
|
||||
}
|
||||
|
||||
void bbc_stl1770_2_device::device_add_mconfig(machine_config &config)
|
||||
{
|
||||
WD1770(config, m_wd1770, DERIVED_CLOCK(1, 1));
|
||||
m_wd1770->intrq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::intrq_w));
|
||||
m_wd1770->drq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::drq_w));
|
||||
|
||||
FLOPPY_CONNECTOR(config, m_floppy[0], bbc_floppies_525, "525qd", bbc_stlfdc_device::floppy_formats).enable_sound(true);
|
||||
FLOPPY_CONNECTOR(config, m_floppy[1], bbc_floppies_525, "525qd", bbc_stlfdc_device::floppy_formats).enable_sound(true);
|
||||
}
|
||||
|
||||
void bbc_stldfdc_1_device::device_add_mconfig(machine_config& config)
|
||||
{
|
||||
bbc_stl1770_1_device::device_add_mconfig(config);
|
||||
|
||||
I8271(config, m_i8271, DERIVED_CLOCK(1, 2));
|
||||
m_i8271->intrq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(bbc_fdc_slot_device::intrq_w));
|
||||
m_i8271->hdl_wr_callback().set(FUNC(bbc_stldfdc_1_device::motor_w));
|
||||
m_i8271->opt_wr_callback().set(FUNC(bbc_stldfdc_1_device::side_w));
|
||||
}
|
||||
|
||||
|
||||
const tiny_rom_entry *bbc_stl1770_1_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( stl1770_1 );
|
||||
}
|
||||
|
||||
const tiny_rom_entry *bbc_stl1770_2_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( stl1770_2 );
|
||||
}
|
||||
|
||||
const tiny_rom_entry *bbc_stldfdc_1_device::device_rom_region() const
|
||||
{
|
||||
return ROM_NAME( stldfdc_1 );
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// bbc_stlfdc_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
bbc_stlfdc_device::bbc_stlfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, device_bbc_fdc_interface(mconfig, *this)
|
||||
, m_wd1770(*this, "wd1770")
|
||||
, m_i8271(*this, "i8271")
|
||||
, m_floppy(*this, "%u", 0)
|
||||
, m_dfdc(*this, "DFDC")
|
||||
{
|
||||
}
|
||||
|
||||
bbc_stl1770_1_device::bbc_stl1770_1_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock)
|
||||
: bbc_stlfdc_device(mconfig, type, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
bbc_stl1770_1_device::bbc_stl1770_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: bbc_stlfdc_device(mconfig, BBC_STL1770_1, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
bbc_stl1770_2_device::bbc_stl1770_2_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock)
|
||||
: bbc_stlfdc_device(mconfig, type, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
bbc_stl1770_2_device::bbc_stl1770_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: bbc_stlfdc_device(mconfig, BBC_STL1770_2, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
bbc_stldfdc_1_device::bbc_stldfdc_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: bbc_stl1770_1_device(mconfig, BBC_STLDFDC_1, tag, owner, clock)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_stl1770_1_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
void bbc_stl1770_2_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
void bbc_stldfdc_1_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void bbc_stldfdc_1_device::device_reset()
|
||||
{
|
||||
switch (m_dfdc->read())
|
||||
{
|
||||
case 0:
|
||||
m_i8271->set_floppies(m_floppy[0], m_floppy[1]);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
m_wd1770->set_floppy(m_floppy[0]->get_device());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// IMPLEMENTATION
|
||||
//**************************************************************************
|
||||
|
||||
INPUT_CHANGED_MEMBER(bbc_stlfdc_device::fdc_changed)
|
||||
{
|
||||
device_reset();
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_stlfdc_device::motor_w)
|
||||
{
|
||||
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->mon_w(!state);
|
||||
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->mon_w(!state);
|
||||
m_i8271->ready_w(!state);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(bbc_stlfdc_device::side_w)
|
||||
{
|
||||
if (m_floppy[0]->get_device()) m_floppy[0]->get_device()->ss_w(state);
|
||||
if (m_floppy[1]->get_device()) m_floppy[1]->get_device()->ss_w(state);
|
||||
}
|
||||
|
||||
|
||||
uint8_t bbc_stl1770_1_device::read(offs_t offset)
|
||||
{
|
||||
return m_wd1770->read(offset & 0x03);
|
||||
}
|
||||
|
||||
void bbc_stl1770_1_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset & 0x04)
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0: drive select
|
||||
switch (BIT(data, 0))
|
||||
{
|
||||
case 0: floppy = m_floppy[0]->get_device(); break;
|
||||
case 1: floppy = m_floppy[1]->get_device(); break;
|
||||
}
|
||||
m_wd1770->set_floppy(floppy);
|
||||
|
||||
// bit 1: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 1));
|
||||
|
||||
// bit 2: density
|
||||
m_wd1770->dden_w(BIT(data, 2));
|
||||
}
|
||||
|
||||
m_wd1770->write(offset & 0x03, data);
|
||||
}
|
||||
|
||||
|
||||
uint8_t bbc_stl1770_2_device::read(offs_t offset)
|
||||
{
|
||||
uint8_t data;
|
||||
|
||||
if (offset & 0x04)
|
||||
{
|
||||
data = m_wd1770->read(offset & 0x03);
|
||||
}
|
||||
else
|
||||
{
|
||||
data = 0xfe;
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
void bbc_stl1770_2_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
if (offset & 0x04)
|
||||
{
|
||||
m_wd1770->write(offset & 0x03, data);
|
||||
}
|
||||
else
|
||||
{
|
||||
floppy_image_device *floppy = nullptr;
|
||||
|
||||
// bit 0, 1: drive select
|
||||
if (BIT(data, 0)) floppy = m_floppy[0]->get_device();
|
||||
if (BIT(data, 1)) floppy = m_floppy[1]->get_device();
|
||||
m_wd1770->set_floppy(floppy);
|
||||
|
||||
// bit 2: side select
|
||||
if (floppy)
|
||||
floppy->ss_w(BIT(data, 2));
|
||||
|
||||
// bit 3: density
|
||||
m_wd1770->dden_w(BIT(data, 3));
|
||||
|
||||
// bit 5: reset
|
||||
m_wd1770->mr_w(BIT(data, 5));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
uint8_t bbc_stldfdc_1_device::read(offs_t offset)
|
||||
{
|
||||
uint8_t data = 0xff;
|
||||
|
||||
switch (m_dfdc->read())
|
||||
{
|
||||
case 0:
|
||||
if (offset & 0x04)
|
||||
{
|
||||
data = m_i8271->data_r();
|
||||
}
|
||||
else
|
||||
{
|
||||
data = m_i8271->read(offset & 0x03);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
data = bbc_stl1770_1_device::read(offset);
|
||||
break;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void bbc_stldfdc_1_device::write(offs_t offset, uint8_t data)
|
||||
{
|
||||
switch (m_dfdc->read())
|
||||
{
|
||||
case 0:
|
||||
if (offset & 0x04)
|
||||
{
|
||||
m_i8271->data_w(data);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_i8271->write(offset & 0x03, data);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
bbc_stl1770_1_device::write(offset, data);
|
||||
break;
|
||||
}
|
||||
}
|
113
src/devices/bus/bbc/fdc/solidisk.h
Normal file
113
src/devices/bus/bbc/fdc/solidisk.h
Normal file
@ -0,0 +1,113 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nigel Barnes
|
||||
/**********************************************************************
|
||||
|
||||
Solidisk 8271/1770 FDC
|
||||
|
||||
**********************************************************************/
|
||||
|
||||
|
||||
#ifndef MAME_BUS_BBC_FDC_SOLIDISK_H
|
||||
#define MAME_BUS_BBC_FDC_SOLIDISK_H
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "fdc.h"
|
||||
#include "machine/i8271.h"
|
||||
#include "imagedev/floppy.h"
|
||||
#include "machine/wd_fdc.h"
|
||||
#include "formats/acorn_dsk.h"
|
||||
#include "formats/fsd_dsk.h"
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
class bbc_stlfdc_device :
|
||||
public device_t,
|
||||
public device_bbc_fdc_interface
|
||||
{
|
||||
public:
|
||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(fdc_changed);
|
||||
|
||||
protected:
|
||||
// construction/destruction
|
||||
bbc_stlfdc_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
||||
DECLARE_WRITE_LINE_MEMBER(side_w);
|
||||
|
||||
required_device<wd1770_device> m_wd1770;
|
||||
optional_device<i8271_device> m_i8271;
|
||||
required_device_array<floppy_connector, 2> m_floppy;
|
||||
optional_ioport m_dfdc;
|
||||
};
|
||||
|
||||
|
||||
class bbc_stl1770_1_device : public bbc_stlfdc_device
|
||||
{
|
||||
public:
|
||||
bbc_stl1770_1_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
bbc_stl1770_1_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
virtual void device_add_mconfig(machine_config& config) override;
|
||||
virtual const tiny_rom_entry* device_rom_region() const override;
|
||||
|
||||
virtual uint8_t read(offs_t offset) override;
|
||||
virtual void write(offs_t offset, uint8_t data) override;
|
||||
};
|
||||
|
||||
|
||||
class bbc_stl1770_2_device : public bbc_stlfdc_device
|
||||
{
|
||||
public:
|
||||
bbc_stl1770_2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
bbc_stl1770_2_device(const machine_config& mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
|
||||
virtual void device_add_mconfig(machine_config& config) override;
|
||||
virtual const tiny_rom_entry* device_rom_region() const override;
|
||||
|
||||
virtual uint8_t read(offs_t offset) override;
|
||||
virtual void write(offs_t offset, uint8_t data) override;
|
||||
};
|
||||
|
||||
|
||||
class bbc_stldfdc_1_device : public bbc_stl1770_1_device
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
bbc_stldfdc_1_device(const machine_config& mconfig, const char* tag, device_t* owner, uint32_t clock);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config& config) override;
|
||||
virtual const tiny_rom_entry* device_rom_region() const override;
|
||||
virtual ioport_constructor device_input_ports() const override;
|
||||
|
||||
virtual uint8_t read(offs_t offset) override;
|
||||
virtual void write(offs_t offset, uint8_t data) override;
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
DECLARE_DEVICE_TYPE(BBC_STL1770_1, bbc_stl1770_1_device)
|
||||
DECLARE_DEVICE_TYPE(BBC_STL1770_2, bbc_stl1770_2_device)
|
||||
DECLARE_DEVICE_TYPE(BBC_STLDFDC_1, bbc_stldfdc_1_device)
|
||||
|
||||
|
||||
#endif /* MAME_BUS_BBC_FDC_SOLIDISK_H */
|
@ -3,7 +3,6 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "i8271.h"
|
||||
#include "imagedev/floppy.h"
|
||||
|
||||
DEFINE_DEVICE_TYPE(I8271, i8271_device, "i8271", "Intel 8271 FDC")
|
||||
|
||||
@ -121,15 +120,23 @@ bool i8271_device::get_ready(int fid)
|
||||
return !external_ready;
|
||||
}
|
||||
|
||||
void i8271_device::set_floppy(floppy_image_device *flop)
|
||||
void i8271_device::set_floppies(floppy_connector *f0, floppy_connector *f1)
|
||||
{
|
||||
for(auto & elem : flopi) {
|
||||
if(elem.dev)
|
||||
elem.dev->setup_index_pulse_cb(floppy_image_device::index_pulse_cb());
|
||||
elem.dev = flop;
|
||||
if (f0) {
|
||||
flopi[0].dev = f0->get_device();
|
||||
if (flopi[0].dev != nullptr)
|
||||
flopi[0].dev->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&i8271_device::index_callback, this));
|
||||
}
|
||||
if(flop)
|
||||
flop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&i8271_device::index_callback, this));
|
||||
else
|
||||
flopi[0].dev = nullptr;
|
||||
|
||||
if (f1) {
|
||||
flopi[1].dev = f0->get_device();
|
||||
if (flopi[1].dev != nullptr)
|
||||
flopi[1].dev->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&i8271_device::index_callback, this));
|
||||
}
|
||||
else
|
||||
flopi[1].dev = nullptr;
|
||||
}
|
||||
|
||||
uint8_t i8271_device::sr_r()
|
||||
|
@ -6,6 +6,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "fdc_pll.h"
|
||||
#include "imagedev/floppy.h"
|
||||
|
||||
class floppy_image_device;
|
||||
|
||||
@ -35,7 +36,7 @@ public:
|
||||
|
||||
void set_ready_line_connected(bool ready);
|
||||
void set_select_lines_connected(bool select);
|
||||
void set_floppy(floppy_image_device *image);
|
||||
void set_floppies(floppy_connector* f0, floppy_connector* f1);
|
||||
void soft_reset();
|
||||
|
||||
void map(address_map &map);
|
||||
|
Loading…
Reference in New Issue
Block a user