mirror of
https://github.com/holub/mame
synced 2025-10-07 09:25:34 +03:00
tx0.cpp: Eliminate driver_data (nw)
This commit is contained in:
parent
faf17daf70
commit
fae1d2f934
@ -373,9 +373,13 @@ public:
|
|||||||
|
|
||||||
virtual image_init_result call_load() override;
|
virtual image_init_result call_load() override;
|
||||||
virtual void call_unload() override;
|
virtual void call_unload() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override { }
|
virtual void device_start() override { }
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<tx0_state> m_tx0;
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(TX0_READTAPE, tx0_readtape_image_device, "tx0_readtape_image", "TX0 Tape Reader")
|
DEFINE_DEVICE_TYPE(TX0_READTAPE, tx0_readtape_image_device, "tx0_readtape_image", "TX0 Tape Reader")
|
||||||
@ -383,6 +387,7 @@ DEFINE_DEVICE_TYPE(TX0_READTAPE, tx0_readtape_image_device, "tx0_readtape_image"
|
|||||||
tx0_readtape_image_device::tx0_readtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
tx0_readtape_image_device::tx0_readtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, TX0_READTAPE, tag, owner, clock)
|
: device_t(mconfig, TX0_READTAPE, tag, owner, clock)
|
||||||
, device_image_interface(mconfig, *this)
|
, device_image_interface(mconfig, *this)
|
||||||
|
, m_tx0(*this, DEVICE_SELF_OWNER)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -405,9 +410,13 @@ public:
|
|||||||
|
|
||||||
virtual image_init_result call_load() override;
|
virtual image_init_result call_load() override;
|
||||||
virtual void call_unload() override;
|
virtual void call_unload() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override { }
|
virtual void device_start() override { }
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<tx0_state> m_tx0;
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(TX0_PUNCHTAPE, tx0_punchtape_image_device, "tx0_punchtape_image", "TX0 Tape Puncher")
|
DEFINE_DEVICE_TYPE(TX0_PUNCHTAPE, tx0_punchtape_image_device, "tx0_punchtape_image", "TX0 Tape Puncher")
|
||||||
@ -415,6 +424,7 @@ DEFINE_DEVICE_TYPE(TX0_PUNCHTAPE, tx0_punchtape_image_device, "tx0_punchtape_ima
|
|||||||
tx0_punchtape_image_device::tx0_punchtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
tx0_punchtape_image_device::tx0_punchtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, TX0_PUNCHTAPE, tag, owner, clock)
|
: device_t(mconfig, TX0_PUNCHTAPE, tag, owner, clock)
|
||||||
, device_image_interface(mconfig, *this)
|
, device_image_interface(mconfig, *this)
|
||||||
|
, m_tx0(*this, DEVICE_SELF_OWNER)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -438,9 +448,13 @@ public:
|
|||||||
|
|
||||||
virtual image_init_result call_load() override;
|
virtual image_init_result call_load() override;
|
||||||
virtual void call_unload() override;
|
virtual void call_unload() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override { }
|
virtual void device_start() override { }
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<tx0_state> m_tx0;
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(TX0_PRINTER, tx0_printer_image_device, "tx0_printer_image", "TX0 Typewriter")
|
DEFINE_DEVICE_TYPE(TX0_PRINTER, tx0_printer_image_device, "tx0_printer_image", "TX0 Typewriter")
|
||||||
@ -448,6 +462,7 @@ DEFINE_DEVICE_TYPE(TX0_PRINTER, tx0_printer_image_device, "tx0_printer_image", "
|
|||||||
tx0_printer_image_device::tx0_printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
tx0_printer_image_device::tx0_printer_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, TX0_PRINTER, tag, owner, clock)
|
: device_t(mconfig, TX0_PRINTER, tag, owner, clock)
|
||||||
, device_image_interface(mconfig, *this)
|
, device_image_interface(mconfig, *this)
|
||||||
|
, m_tx0(*this, DEVICE_SELF_OWNER)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,9 +485,13 @@ public:
|
|||||||
|
|
||||||
virtual image_init_result call_load() override;
|
virtual image_init_result call_load() override;
|
||||||
virtual void call_unload() override;
|
virtual void call_unload() override;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// device-level overrides
|
// device-level overrides
|
||||||
virtual void device_start() override;
|
virtual void device_start() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
required_device<tx0_state> m_tx0;
|
||||||
};
|
};
|
||||||
|
|
||||||
DEFINE_DEVICE_TYPE(TX0_MAGTAPE, tx0_magtape_image_device, "tx0_magtape_image", "TX0 Magnetic Tape")
|
DEFINE_DEVICE_TYPE(TX0_MAGTAPE, tx0_magtape_image_device, "tx0_magtape_image", "TX0 Magnetic Tape")
|
||||||
@ -480,6 +499,7 @@ DEFINE_DEVICE_TYPE(TX0_MAGTAPE, tx0_magtape_image_device, "tx0_magtape_image", "
|
|||||||
tx0_magtape_image_device::tx0_magtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
tx0_magtape_image_device::tx0_magtape_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: device_t(mconfig, TX0_MAGTAPE, tag, owner, clock)
|
: device_t(mconfig, TX0_MAGTAPE, tag, owner, clock)
|
||||||
, device_image_interface(mconfig, *this)
|
, device_image_interface(mconfig, *this)
|
||||||
|
, m_tx0(*this, DEVICE_SELF_OWNER)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -490,29 +510,27 @@ tx0_magtape_image_device::tx0_magtape_image_device(const machine_config &mconfig
|
|||||||
*/
|
*/
|
||||||
image_init_result tx0_readtape_image_device::call_load()
|
image_init_result tx0_readtape_image_device::call_load()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
|
||||||
|
|
||||||
/* reader unit */
|
/* reader unit */
|
||||||
state->m_tape_reader.fd = this;
|
m_tx0->m_tape_reader.fd = this;
|
||||||
|
|
||||||
/* start motor */
|
/* start motor */
|
||||||
state->m_tape_reader.motor_on = 1;
|
m_tx0->m_tape_reader.motor_on = 1;
|
||||||
|
|
||||||
/* restart reader IO when necessary */
|
/* restart reader IO when necessary */
|
||||||
/* note that this function may be called before tx0_init_machine, therefore
|
/* note that this function may be called before tx0_init_machine, therefore
|
||||||
before tape_reader.timer is allocated. It does not matter, as the clutch is never
|
before tape_reader.timer is allocated. It does not matter, as the clutch is never
|
||||||
down at power-up, but we must not call timer_enable with a nullptr parameter! */
|
down at power-up, but we must not call timer_enable with a nullptr parameter! */
|
||||||
|
|
||||||
if (state->m_tape_reader.timer)
|
if (m_tx0->m_tape_reader.timer)
|
||||||
{
|
{
|
||||||
if (state->m_tape_reader.motor_on && state->m_tape_reader.rcl)
|
if (m_tx0->m_tape_reader.motor_on && m_tx0->m_tape_reader.rcl)
|
||||||
{
|
{
|
||||||
/* delay is approximately 1/400s */
|
/* delay is approximately 1/400s */
|
||||||
state->m_tape_reader.timer->adjust(attotime::from_usec(2500));
|
m_tx0->m_tape_reader.timer->adjust(attotime::from_usec(2500));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
state->m_tape_reader.timer->enable(0);
|
m_tx0->m_tape_reader.timer->enable(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -521,16 +539,14 @@ image_init_result tx0_readtape_image_device::call_load()
|
|||||||
|
|
||||||
void tx0_readtape_image_device::call_unload()
|
void tx0_readtape_image_device::call_unload()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
|
||||||
|
|
||||||
/* reader unit */
|
/* reader unit */
|
||||||
state->m_tape_reader.fd = nullptr;
|
m_tx0->m_tape_reader.fd = nullptr;
|
||||||
|
|
||||||
/* stop motor */
|
/* stop motor */
|
||||||
state->m_tape_reader.motor_on = 0;
|
m_tx0->m_tape_reader.motor_on = 0;
|
||||||
|
|
||||||
if (state->m_tape_reader.timer)
|
if (m_tx0->m_tape_reader.timer)
|
||||||
state->m_tape_reader.timer->enable(0);
|
m_tx0->m_tape_reader.timer->enable(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -626,20 +642,16 @@ TIMER_CALLBACK_MEMBER(tx0_state::reader_callback)
|
|||||||
*/
|
*/
|
||||||
image_init_result tx0_punchtape_image_device::call_load()
|
image_init_result tx0_punchtape_image_device::call_load()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
|
||||||
|
|
||||||
/* punch unit */
|
/* punch unit */
|
||||||
state->m_tape_puncher.fd = this;
|
m_tx0->m_tape_puncher.fd = this;
|
||||||
|
|
||||||
return image_init_result::PASS;
|
return image_init_result::PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tx0_punchtape_image_device::call_unload()
|
void tx0_punchtape_image_device::call_unload()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
|
||||||
|
|
||||||
/* punch unit */
|
/* punch unit */
|
||||||
state->m_tape_puncher.fd = nullptr;
|
m_tx0->m_tape_puncher.fd = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
TIMER_CALLBACK_MEMBER(tx0_state::puncher_callback)
|
TIMER_CALLBACK_MEMBER(tx0_state::puncher_callback)
|
||||||
@ -706,17 +718,15 @@ WRITE_LINE_MEMBER( tx0_state::tx0_io_p7h )
|
|||||||
*/
|
*/
|
||||||
image_init_result tx0_printer_image_device::call_load()
|
image_init_result tx0_printer_image_device::call_load()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
|
||||||
/* open file */
|
/* open file */
|
||||||
state->m_typewriter.fd = this;
|
m_tx0->m_typewriter.fd = this;
|
||||||
|
|
||||||
return image_init_result::PASS;
|
return image_init_result::PASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tx0_printer_image_device::call_unload()
|
void tx0_printer_image_device::call_unload()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
m_tx0->m_typewriter.fd = nullptr;
|
||||||
state->m_typewriter.fd = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -837,8 +847,7 @@ void tx0_state::schedule_unselect()
|
|||||||
|
|
||||||
void tx0_magtape_image_device::device_start()
|
void tx0_magtape_image_device::device_start()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
m_tx0->m_magtape.img = this;
|
||||||
state->m_magtape.img = this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -846,19 +855,18 @@ void tx0_magtape_image_device::device_start()
|
|||||||
*/
|
*/
|
||||||
image_init_result tx0_magtape_image_device::call_load()
|
image_init_result tx0_magtape_image_device::call_load()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
m_tx0->m_magtape.img = this;
|
||||||
state->m_magtape.img = this;
|
|
||||||
|
|
||||||
state->m_magtape.irg_pos = MTIRGP_END;
|
m_tx0->m_magtape.irg_pos = MTIRGP_END;
|
||||||
|
|
||||||
/* restart IO when necessary */
|
/* restart IO when necessary */
|
||||||
/* note that this function may be called before tx0_init_machine, therefore
|
/* note that this function may be called before tx0_init_machine, therefore
|
||||||
before magtape.timer is allocated. We must not call timer_enable with a
|
before magtape.timer is allocated. We must not call timer_enable with a
|
||||||
nullptr parameter! */
|
nullptr parameter! */
|
||||||
if (state->m_magtape.timer)
|
if (m_tx0->m_magtape.timer)
|
||||||
{
|
{
|
||||||
if (state->m_magtape.state == MTS_SELECTING)
|
if (m_tx0->m_magtape.state == MTS_SELECTING)
|
||||||
state->schedule_select();
|
m_tx0->schedule_select();
|
||||||
}
|
}
|
||||||
|
|
||||||
return image_init_result::PASS;
|
return image_init_result::PASS;
|
||||||
@ -866,19 +874,18 @@ image_init_result tx0_magtape_image_device::call_load()
|
|||||||
|
|
||||||
void tx0_magtape_image_device::call_unload()
|
void tx0_magtape_image_device::call_unload()
|
||||||
{
|
{
|
||||||
tx0_state *state = machine().driver_data<tx0_state>();
|
m_tx0->m_magtape.img = nullptr;
|
||||||
state->m_magtape.img = nullptr;
|
|
||||||
|
|
||||||
if (state->m_magtape.timer)
|
if (m_tx0->m_magtape.timer)
|
||||||
{
|
{
|
||||||
if (state->m_magtape.state == MTS_SELECTING)
|
if (m_tx0->m_magtape.state == MTS_SELECTING)
|
||||||
/* I/O has not actually started, we can cancel the selection */
|
/* I/O has not actually started, we can cancel the selection */
|
||||||
state->m_tape_reader.timer->enable(0);
|
m_tx0->m_tape_reader.timer->enable(0);
|
||||||
if ((state->m_magtape.state == MTS_SELECTED) || ((state->m_magtape.state == MTS_SELECTING) && (state->m_magtape.command == 2)))
|
if ((m_tx0->m_magtape.state == MTS_SELECTED) || ((m_tx0->m_magtape.state == MTS_SELECTING) && (m_tx0->m_magtape.command == 2)))
|
||||||
{ /* unit has become unavailable */
|
{ /* unit has become unavailable */
|
||||||
state->m_magtape.state = MTS_UNSELECTING;
|
m_tx0->m_magtape.state = MTS_UNSELECTING;
|
||||||
state->m_maincpu->set_state_int(TX0_PF, state->m_maincpu->state_int(TX0_PF) | PF_RWC);
|
m_tx0->m_maincpu->set_state_int(TX0_PF, m_tx0->m_maincpu->state_int(TX0_PF) | PF_RWC);
|
||||||
state->schedule_unselect();
|
m_tx0->schedule_unselect();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user