mirror of
https://github.com/holub/mame
synced 2025-10-07 17:27:06 +03:00
bus/bbc/fdc, i8271: Simplify read/write handlers (nw)
This commit is contained in:
parent
7f50bbafaa
commit
82b8fb912d
@ -84,7 +84,7 @@ void atom_discpack_device::device_start()
|
|||||||
address_space &space = m_bus->memspace();
|
address_space &space = m_bus->memspace();
|
||||||
|
|
||||||
space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map);
|
space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map);
|
||||||
space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8_delegate(FUNC(i8271_device::data_w), m_fdc.target()));
|
space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8smo_delegate(FUNC(i8271_device::data_w), m_fdc.target()));
|
||||||
space.install_ram(0x2000, 0x23ff);
|
space.install_ram(0x2000, 0x23ff);
|
||||||
space.install_ram(0x2400, 0x27ff);
|
space.install_ram(0x2400, 0x27ff);
|
||||||
space.install_ram(0x3c00, 0x3fff);
|
space.install_ram(0x3c00, 0x3fff);
|
||||||
|
@ -85,7 +85,7 @@ void acorn_fdc_device::device_reset()
|
|||||||
address_space &space = m_bus->memspace();
|
address_space &space = m_bus->memspace();
|
||||||
|
|
||||||
space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map);
|
space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map);
|
||||||
space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8_delegate(FUNC(i8271_device::data_w), m_fdc.target()));
|
space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8smo_delegate(FUNC(i8271_device::data_w), m_fdc.target()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -166,30 +166,30 @@ void bbc_acorn1770_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_acorn8271_device::read)
|
uint8_t bbc_acorn8271_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
data = m_fdc->data_r(space , 0);
|
data = m_fdc->data_r();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = m_fdc->read(space, offset & 0x03);
|
data = m_fdc->read(offset & 0x03);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_acorn8271_device::write)
|
void bbc_acorn8271_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
m_fdc->data_w(space, 0, data);
|
m_fdc->data_w(data);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_fdc->write(space, offset & 0x03, data);
|
m_fdc->write(offset & 0x03, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ WRITE_LINE_MEMBER(bbc_acorn8271_device::side_w)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(bbc_acorn1770_device::read)
|
uint8_t bbc_acorn1770_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data = 0xff;
|
uint8_t data = 0xff;
|
||||||
|
|
||||||
@ -222,7 +222,7 @@ READ8_MEMBER(bbc_acorn1770_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_acorn1770_device::write)
|
void bbc_acorn1770_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -42,8 +42,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
DECLARE_WRITE_LINE_MEMBER(motor_w);
|
||||||
@ -70,8 +70,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
||||||
|
@ -89,30 +89,30 @@ void bbc_ams3_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_ams3_device::read)
|
uint8_t bbc_ams3_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
data = m_fdc->data_r(space , 0);
|
data = m_fdc->data_r();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
data = m_fdc->read(space, offset & 0x03);
|
data = m_fdc->read(offset & 0x03);
|
||||||
}
|
}
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_ams3_device::write)
|
void bbc_ams3_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
m_fdc->data_w(space, 0, data);
|
m_fdc->data_w(data);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_fdc->write(space, offset & 0x03, data);
|
m_fdc->write(offset & 0x03, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);
|
||||||
|
@ -137,7 +137,7 @@ void bbc_cumanafdc_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_cumanafdc_device::read)
|
uint8_t bbc_cumanafdc_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -152,7 +152,7 @@ READ8_MEMBER(bbc_cumanafdc_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_cumanafdc_device::write)
|
void bbc_cumanafdc_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -39,8 +39,8 @@ protected:
|
|||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
required_device<mb8877_device> m_fdc;
|
required_device<mb8877_device> m_fdc;
|
||||||
required_device<floppy_connector> m_floppy0;
|
required_device<floppy_connector> m_floppy0;
|
||||||
|
@ -100,7 +100,7 @@ void bbc_cv1797_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_cv1797_device::read)
|
uint8_t bbc_cv1797_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ READ8_MEMBER(bbc_cv1797_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_cv1797_device::write)
|
void bbc_cv1797_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -40,8 +40,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||||
|
@ -89,10 +89,10 @@ void bbc_fdc_slot_device::device_reset()
|
|||||||
// read
|
// read
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
READ8_MEMBER(bbc_fdc_slot_device::read)
|
uint8_t bbc_fdc_slot_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
if (m_card)
|
if (m_card)
|
||||||
return m_card->read(space, offset);
|
return m_card->read(offset);
|
||||||
else
|
else
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
@ -101,10 +101,10 @@ READ8_MEMBER(bbc_fdc_slot_device::read)
|
|||||||
// write
|
// write
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_fdc_slot_device::write)
|
void bbc_fdc_slot_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (m_card)
|
if (m_card)
|
||||||
m_card->write(space, offset, data);
|
m_card->write(offset, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------------------
|
//-------------------------------------------------
|
||||||
|
@ -41,8 +41,8 @@ public:
|
|||||||
auto intrq_wr_callback() { return m_intrq_cb.bind(); }
|
auto intrq_wr_callback() { return m_intrq_cb.bind(); }
|
||||||
auto drq_wr_callback() { return m_drq_cb.bind(); }
|
auto drq_wr_callback() { return m_drq_cb.bind(); }
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read);
|
uint8_t read(offs_t offset);
|
||||||
virtual DECLARE_WRITE8_MEMBER(write);
|
void write(offs_t offset, uint8_t data);
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_cb(state); }
|
DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_cb(state); }
|
||||||
DECLARE_WRITE_LINE_MEMBER( drq_w) { m_drq_cb(state); }
|
DECLARE_WRITE_LINE_MEMBER( drq_w) { m_drq_cb(state); }
|
||||||
@ -66,8 +66,8 @@ private:
|
|||||||
class device_bbc_fdc_interface : public device_slot_card_interface
|
class device_bbc_fdc_interface : public device_slot_card_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
|
virtual uint8_t read(offs_t offset) { return 0xff; }
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) { }
|
virtual void write(offs_t offset, uint8_t data) { }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
device_bbc_fdc_interface(const machine_config &mconfig, device_t &device);
|
device_bbc_fdc_interface(const machine_config &mconfig, device_t &device);
|
||||||
|
@ -101,7 +101,7 @@ void bbc_microware_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_microware_device::read)
|
uint8_t bbc_microware_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ READ8_MEMBER(bbc_microware_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_microware_device::write)
|
void bbc_microware_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -42,8 +42,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
DECLARE_FLOPPY_FORMATS(floppy_formats);
|
||||||
|
@ -212,7 +212,7 @@ void bbc_opusfdc_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_opus8272_device::read)
|
uint8_t bbc_opus8272_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data = 0xff;
|
uint8_t data = 0xff;
|
||||||
|
|
||||||
@ -240,7 +240,7 @@ READ8_MEMBER(bbc_opus8272_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_opus8272_device::write)
|
void bbc_opus8272_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
floppy_image_device *floppy = nullptr;
|
floppy_image_device *floppy = nullptr;
|
||||||
|
|
||||||
@ -265,7 +265,7 @@ WRITE8_MEMBER(bbc_opus8272_device::write)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
READ8_MEMBER(bbc_opusfdc_device::read)
|
uint8_t bbc_opusfdc_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -280,7 +280,7 @@ READ8_MEMBER(bbc_opusfdc_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_opusfdc_device::write)
|
void bbc_opusfdc_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -36,8 +36,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<i8272a_device> m_fdc;
|
required_device<i8272a_device> m_fdc;
|
||||||
@ -62,8 +62,8 @@ protected:
|
|||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
required_device<wd_fdc_device_base> m_fdc;
|
required_device<wd_fdc_device_base> m_fdc;
|
||||||
required_device<floppy_connector> m_floppy0;
|
required_device<floppy_connector> m_floppy0;
|
||||||
|
@ -147,7 +147,7 @@ void bbc_weddb3_device::device_start()
|
|||||||
// IMPLEMENTATION
|
// IMPLEMENTATION
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
|
|
||||||
READ8_MEMBER(bbc_weddb2_device::read)
|
uint8_t bbc_weddb2_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ READ8_MEMBER(bbc_weddb2_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_weddb2_device::write)
|
void bbc_weddb2_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
@ -192,7 +192,7 @@ WRITE8_MEMBER(bbc_weddb2_device::write)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(bbc_weddb3_device::read)
|
uint8_t bbc_weddb3_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
|
|
||||||
@ -207,7 +207,7 @@ READ8_MEMBER(bbc_weddb3_device::read)
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(bbc_weddb3_device::write)
|
void bbc_weddb3_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
if (offset & 0x04)
|
if (offset & 0x04)
|
||||||
{
|
{
|
||||||
|
@ -45,8 +45,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<wd_fdc_device_base> m_fdc;
|
required_device<wd_fdc_device_base> m_fdc;
|
||||||
@ -68,8 +68,8 @@ protected:
|
|||||||
virtual void device_add_mconfig(machine_config &config) override;
|
virtual void device_add_mconfig(machine_config &config) override;
|
||||||
virtual const tiny_rom_entry *device_rom_region() const override;
|
virtual const tiny_rom_entry *device_rom_region() const override;
|
||||||
|
|
||||||
virtual DECLARE_READ8_MEMBER(read) override;
|
virtual uint8_t read(offs_t offset) override;
|
||||||
virtual DECLARE_WRITE8_MEMBER(write) override;
|
virtual void write(offs_t offset, uint8_t data) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
required_device<wd_fdc_device_base> m_fdc;
|
required_device<wd_fdc_device_base> m_fdc;
|
||||||
|
@ -132,7 +132,7 @@ void i8271_device::set_floppy(floppy_image_device *flop)
|
|||||||
flop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&i8271_device::index_callback, this));
|
flop->setup_index_pulse_cb(floppy_image_device::index_pulse_cb(&i8271_device::index_callback, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(i8271_device::sr_r)
|
uint8_t i8271_device::sr_r()
|
||||||
{
|
{
|
||||||
uint32_t ret = (irq ? SR_IRQ : 0);
|
uint32_t ret = (irq ? SR_IRQ : 0);
|
||||||
switch(main_phase) {
|
switch(main_phase) {
|
||||||
@ -151,11 +151,13 @@ READ8_MEMBER(i8271_device::sr_r)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(i8271_device::rr_r)
|
uint8_t i8271_device::rr_r()
|
||||||
{
|
{
|
||||||
if(main_phase == PHASE_RESULT)
|
if (!machine().side_effects_disabled()) {
|
||||||
main_phase = PHASE_IDLE;
|
if (main_phase == PHASE_RESULT)
|
||||||
set_irq(false);
|
main_phase = PHASE_IDLE;
|
||||||
|
set_irq(false);
|
||||||
|
}
|
||||||
return rr;
|
return rr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,31 +166,32 @@ void i8271_device::set_rate(int rate)
|
|||||||
cur_rate = rate;
|
cur_rate = rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(i8271_device::read)
|
uint8_t i8271_device::read(offs_t offset)
|
||||||
{
|
{
|
||||||
switch(offset & 0x03) {
|
switch(offset & 0x03) {
|
||||||
case 0x00: return sr_r(space, 0);
|
case 0x00: return sr_r();
|
||||||
case 0x01: return rr_r(space, 0);
|
case 0x01: return rr_r();
|
||||||
}
|
}
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(i8271_device::write)
|
void i8271_device::write(offs_t offset, uint8_t data)
|
||||||
{
|
{
|
||||||
switch(offset & 0x03) {
|
switch(offset & 0x03) {
|
||||||
case 0x00: cmd_w(space, 0, data); break;
|
case 0x00: cmd_w(data); break;
|
||||||
case 0x01: param_w(space, 0, data); break;
|
case 0x01: param_w(data); break;
|
||||||
case 0x02: reset_w(space, 0, data); break;
|
case 0x02: reset_w(data); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(i8271_device::data_r)
|
uint8_t i8271_device::data_r()
|
||||||
{
|
{
|
||||||
set_drq(false);
|
if (!machine().side_effects_disabled())
|
||||||
|
set_drq(false);
|
||||||
return dma_data;
|
return dma_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(i8271_device::data_w)
|
void i8271_device::data_w(uint8_t data)
|
||||||
{
|
{
|
||||||
if(drq) {
|
if(drq) {
|
||||||
set_drq(false);
|
set_drq(false);
|
||||||
@ -196,7 +199,7 @@ WRITE8_MEMBER(i8271_device::data_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(i8271_device::cmd_w)
|
void i8271_device::cmd_w(uint8_t data)
|
||||||
{
|
{
|
||||||
if(main_phase == PHASE_IDLE) {
|
if(main_phase == PHASE_IDLE) {
|
||||||
command[0] = data;
|
command[0] = data;
|
||||||
@ -211,7 +214,7 @@ WRITE8_MEMBER(i8271_device::cmd_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(i8271_device::param_w)
|
void i8271_device::param_w(uint8_t data)
|
||||||
{
|
{
|
||||||
if(main_phase == PHASE_CMD) {
|
if(main_phase == PHASE_CMD) {
|
||||||
command[command_pos++] = data;
|
command[command_pos++] = data;
|
||||||
|
@ -24,10 +24,10 @@ public:
|
|||||||
auto hdl_wr_callback() { return hdl_cb.bind(); }
|
auto hdl_wr_callback() { return hdl_cb.bind(); }
|
||||||
auto opt_wr_callback() { return opt_cb.bind(); }
|
auto opt_wr_callback() { return opt_cb.bind(); }
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER(read);
|
uint8_t read(offs_t offset);
|
||||||
DECLARE_WRITE8_MEMBER(write);
|
void write(offs_t offset, uint8_t data);
|
||||||
DECLARE_READ8_MEMBER (data_r);
|
uint8_t data_r();
|
||||||
DECLARE_WRITE8_MEMBER(data_w);
|
void data_w(uint8_t data);
|
||||||
|
|
||||||
void ready_w(bool val);
|
void ready_w(bool val);
|
||||||
|
|
||||||
@ -228,11 +228,11 @@ private:
|
|||||||
C_INCOMPLETE
|
C_INCOMPLETE
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_READ8_MEMBER (sr_r);
|
uint8_t sr_r();
|
||||||
DECLARE_READ8_MEMBER (rr_r);
|
uint8_t rr_r();
|
||||||
DECLARE_WRITE8_MEMBER(reset_w) { if(data == 1) soft_reset(); }
|
void reset_w(uint8_t data) { if(data == 1) soft_reset(); }
|
||||||
DECLARE_WRITE8_MEMBER(cmd_w);
|
void cmd_w(uint8_t data);
|
||||||
DECLARE_WRITE8_MEMBER(param_w);
|
void param_w(uint8_t data);
|
||||||
|
|
||||||
void delay_cycles(emu_timer *tm, int cycles);
|
void delay_cycles(emu_timer *tm, int cycles);
|
||||||
void set_drq(bool state);
|
void set_drq(bool state);
|
||||||
|
Loading…
Reference in New Issue
Block a user