bus/bbc/fdc, i8271: Simplify read/write handlers (nw)

This commit is contained in:
AJR 2019-03-10 16:39:27 -04:00
parent 7f50bbafaa
commit 82b8fb912d
20 changed files with 87 additions and 84 deletions

View File

@ -84,7 +84,7 @@ void atom_discpack_device::device_start()
address_space &space = m_bus->memspace();
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(0x2400, 0x27ff);
space.install_ram(0x3c00, 0x3fff);

View File

@ -85,7 +85,7 @@ void acorn_fdc_device::device_reset()
address_space &space = m_bus->memspace();
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()));
}

View File

@ -166,30 +166,30 @@ void bbc_acorn1770_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_acorn8271_device::read)
uint8_t bbc_acorn8271_device::read(offs_t offset)
{
uint8_t data;
if (offset & 0x04)
{
data = m_fdc->data_r(space , 0);
data = m_fdc->data_r();
}
else
{
data = m_fdc->read(space, offset & 0x03);
data = m_fdc->read(offset & 0x03);
}
return data;
}
WRITE8_MEMBER(bbc_acorn8271_device::write)
void bbc_acorn8271_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{
m_fdc->data_w(space, 0, data);
m_fdc->data_w(data);
}
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;
@ -222,7 +222,7 @@ READ8_MEMBER(bbc_acorn1770_device::read)
return data;
}
WRITE8_MEMBER(bbc_acorn1770_device::write)
void bbc_acorn1770_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -42,8 +42,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
DECLARE_WRITE_LINE_MEMBER(motor_w);
@ -70,8 +70,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);

View File

@ -89,30 +89,30 @@ void bbc_ams3_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_ams3_device::read)
uint8_t bbc_ams3_device::read(offs_t offset)
{
uint8_t data;
if (offset & 0x04)
{
data = m_fdc->data_r(space , 0);
data = m_fdc->data_r();
}
else
{
data = m_fdc->read(space, offset & 0x03);
data = m_fdc->read(offset & 0x03);
}
return data;
}
WRITE8_MEMBER(bbc_ams3_device::write)
void bbc_ams3_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{
m_fdc->data_w(space, 0, data);
m_fdc->data_w(data);
}
else
{
m_fdc->write(space, offset & 0x03, data);
m_fdc->write(offset & 0x03, data);
}
}

View File

@ -39,8 +39,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
DECLARE_WRITE_LINE_MEMBER(fdc_intrq_w);

View File

@ -137,7 +137,7 @@ void bbc_cumanafdc_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_cumanafdc_device::read)
uint8_t bbc_cumanafdc_device::read(offs_t offset)
{
uint8_t data;
@ -152,7 +152,7 @@ READ8_MEMBER(bbc_cumanafdc_device::read)
return data;
}
WRITE8_MEMBER(bbc_cumanafdc_device::write)
void bbc_cumanafdc_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -39,8 +39,8 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
required_device<mb8877_device> m_fdc;
required_device<floppy_connector> m_floppy0;

View File

@ -100,7 +100,7 @@ void bbc_cv1797_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_cv1797_device::read)
uint8_t bbc_cv1797_device::read(offs_t offset)
{
uint8_t data;
@ -115,7 +115,7 @@ READ8_MEMBER(bbc_cv1797_device::read)
return data;
}
WRITE8_MEMBER(bbc_cv1797_device::write)
void bbc_cv1797_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -40,8 +40,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
DECLARE_FLOPPY_FORMATS(floppy_formats);

View File

@ -89,10 +89,10 @@ void bbc_fdc_slot_device::device_reset()
// read
//-------------------------------------------------
READ8_MEMBER(bbc_fdc_slot_device::read)
uint8_t bbc_fdc_slot_device::read(offs_t offset)
{
if (m_card)
return m_card->read(space, offset);
return m_card->read(offset);
else
return 0xff;
}
@ -101,10 +101,10 @@ READ8_MEMBER(bbc_fdc_slot_device::read)
// write
//-------------------------------------------------
WRITE8_MEMBER(bbc_fdc_slot_device::write)
void bbc_fdc_slot_device::write(offs_t offset, uint8_t data)
{
if (m_card)
m_card->write(space, offset, data);
m_card->write(offset, data);
}
//-------------------------------------------------

View File

@ -41,8 +41,8 @@ public:
auto intrq_wr_callback() { return m_intrq_cb.bind(); }
auto drq_wr_callback() { return m_drq_cb.bind(); }
virtual DECLARE_READ8_MEMBER(read);
virtual DECLARE_WRITE8_MEMBER(write);
uint8_t read(offs_t offset);
void write(offs_t offset, uint8_t data);
DECLARE_WRITE_LINE_MEMBER( intrq_w ) { m_intrq_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
{
public:
virtual DECLARE_READ8_MEMBER(read) { return 0xff; }
virtual DECLARE_WRITE8_MEMBER(write) { }
virtual uint8_t read(offs_t offset) { return 0xff; }
virtual void write(offs_t offset, uint8_t data) { }
protected:
device_bbc_fdc_interface(const machine_config &mconfig, device_t &device);

View File

@ -101,7 +101,7 @@ void bbc_microware_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_microware_device::read)
uint8_t bbc_microware_device::read(offs_t offset)
{
uint8_t data;
@ -116,7 +116,7 @@ READ8_MEMBER(bbc_microware_device::read)
return data;
}
WRITE8_MEMBER(bbc_microware_device::write)
void bbc_microware_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -42,8 +42,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
DECLARE_FLOPPY_FORMATS(floppy_formats);

View File

@ -212,7 +212,7 @@ void bbc_opusfdc_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_opus8272_device::read)
uint8_t bbc_opus8272_device::read(offs_t offset)
{
uint8_t data = 0xff;
@ -240,7 +240,7 @@ READ8_MEMBER(bbc_opus8272_device::read)
return data;
}
WRITE8_MEMBER(bbc_opus8272_device::write)
void bbc_opus8272_device::write(offs_t offset, uint8_t data)
{
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;
@ -280,7 +280,7 @@ READ8_MEMBER(bbc_opusfdc_device::read)
return data;
}
WRITE8_MEMBER(bbc_opusfdc_device::write)
void bbc_opusfdc_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -36,8 +36,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
required_device<i8272a_device> m_fdc;
@ -62,8 +62,8 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
required_device<wd_fdc_device_base> m_fdc;
required_device<floppy_connector> m_floppy0;

View File

@ -147,7 +147,7 @@ void bbc_weddb3_device::device_start()
// IMPLEMENTATION
//**************************************************************************
READ8_MEMBER(bbc_weddb2_device::read)
uint8_t bbc_weddb2_device::read(offs_t offset)
{
uint8_t data;
@ -162,7 +162,7 @@ READ8_MEMBER(bbc_weddb2_device::read)
return data;
}
WRITE8_MEMBER(bbc_weddb2_device::write)
void bbc_weddb2_device::write(offs_t offset, uint8_t data)
{
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;
@ -207,7 +207,7 @@ READ8_MEMBER(bbc_weddb3_device::read)
return data;
}
WRITE8_MEMBER(bbc_weddb3_device::write)
void bbc_weddb3_device::write(offs_t offset, uint8_t data)
{
if (offset & 0x04)
{

View File

@ -45,8 +45,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
required_device<wd_fdc_device_base> m_fdc;
@ -68,8 +68,8 @@ protected:
virtual void device_add_mconfig(machine_config &config) override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual DECLARE_READ8_MEMBER(read) override;
virtual DECLARE_WRITE8_MEMBER(write) override;
virtual uint8_t read(offs_t offset) override;
virtual void write(offs_t offset, uint8_t data) override;
private:
required_device<wd_fdc_device_base> m_fdc;

View File

@ -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));
}
READ8_MEMBER(i8271_device::sr_r)
uint8_t i8271_device::sr_r()
{
uint32_t ret = (irq ? SR_IRQ : 0);
switch(main_phase) {
@ -151,11 +151,13 @@ READ8_MEMBER(i8271_device::sr_r)
return ret;
}
READ8_MEMBER(i8271_device::rr_r)
uint8_t i8271_device::rr_r()
{
if(main_phase == PHASE_RESULT)
main_phase = PHASE_IDLE;
set_irq(false);
if (!machine().side_effects_disabled()) {
if (main_phase == PHASE_RESULT)
main_phase = PHASE_IDLE;
set_irq(false);
}
return rr;
}
@ -164,31 +166,32 @@ void i8271_device::set_rate(int rate)
cur_rate = rate;
}
READ8_MEMBER(i8271_device::read)
uint8_t i8271_device::read(offs_t offset)
{
switch(offset & 0x03) {
case 0x00: return sr_r(space, 0);
case 0x01: return rr_r(space, 0);
case 0x00: return sr_r();
case 0x01: return rr_r();
}
return 0xff;
}
WRITE8_MEMBER(i8271_device::write)
void i8271_device::write(offs_t offset, uint8_t data)
{
switch(offset & 0x03) {
case 0x00: cmd_w(space, 0, data); break;
case 0x01: param_w(space, 0, data); break;
case 0x02: reset_w(space, 0, data); break;
case 0x00: cmd_w(data); break;
case 0x01: param_w(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;
}
WRITE8_MEMBER(i8271_device::data_w)
void i8271_device::data_w(uint8_t data)
{
if(drq) {
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) {
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) {
command[command_pos++] = data;

View File

@ -24,10 +24,10 @@ public:
auto hdl_wr_callback() { return hdl_cb.bind(); }
auto opt_wr_callback() { return opt_cb.bind(); }
DECLARE_READ8_MEMBER(read);
DECLARE_WRITE8_MEMBER(write);
DECLARE_READ8_MEMBER (data_r);
DECLARE_WRITE8_MEMBER(data_w);
uint8_t read(offs_t offset);
void write(offs_t offset, uint8_t data);
uint8_t data_r();
void data_w(uint8_t data);
void ready_w(bool val);
@ -228,11 +228,11 @@ private:
C_INCOMPLETE
};
DECLARE_READ8_MEMBER (sr_r);
DECLARE_READ8_MEMBER (rr_r);
DECLARE_WRITE8_MEMBER(reset_w) { if(data == 1) soft_reset(); }
DECLARE_WRITE8_MEMBER(cmd_w);
DECLARE_WRITE8_MEMBER(param_w);
uint8_t sr_r();
uint8_t rr_r();
void reset_w(uint8_t data) { if(data == 1) soft_reset(); }
void cmd_w(uint8_t data);
void param_w(uint8_t data);
void delay_cycles(emu_timer *tm, int cycles);
void set_drq(bool state);