diff options
Diffstat (limited to 'src/devices/machine/f3853.cpp')
-rw-r--r-- | src/devices/machine/f3853.cpp | 60 |
1 files changed, 24 insertions, 36 deletions
diff --git a/src/devices/machine/f3853.cpp b/src/devices/machine/f3853.cpp index 7a23f5a04d0..87ee05ed19c 100644 --- a/src/devices/machine/f3853.cpp +++ b/src/devices/machine/f3853.cpp @@ -46,7 +46,8 @@ DEFINE_DEVICE_TYPE(F38T56, f38t56_device, "f38t56_psu", "Fairchild F38T56 PSU") f3853_device::f3853_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, type, tag, owner, clock), m_int_req_callback(*this), - m_pri_out_callback(*this), + m_pri_out_callback(*this), // TODO: not implemented + m_int_daisy_chain_callback(*this), m_int_vector(0), m_prescaler(31), m_priority_line(false), @@ -59,8 +60,8 @@ f3853_device::f3853_device(const machine_config &mconfig, const char *tag, devic f3851_device::f3851_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) : f3853_device(mconfig, type, tag, owner, clock), - m_read_port{{*this}, {*this}}, - m_write_port{{*this}, {*this}} + m_read_port(*this, 0), + m_write_port(*this) { } f3851_device::f3851_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : @@ -87,20 +88,7 @@ f38t56_device::f38t56_device(const machine_config &mconfig, const char *tag, dev void f3853_device::device_resolve_objects() { - m_int_req_callback.resolve_safe(); - m_pri_out_callback.resolve_safe(); // TODO: not implemented - m_int_daisy_chain_callback.bind_relative_to(*owner()); -} - -void f3851_device::device_resolve_objects() -{ - f3853_device::device_resolve_objects(); - - // 2 I/O ports - for (devcb_read8 &cb : m_read_port) - cb.resolve_safe(0); - for (devcb_write8 &cb : m_write_port) - cb.resolve_safe(); + m_int_daisy_chain_callback.resolve(); } void f3853_device::device_start() @@ -114,7 +102,7 @@ void f3853_device::device_start() reg = reg << 1 | (BIT(reg,7) ^ BIT(reg,5) ^ BIT(reg,4) ^ BIT(reg,3) ^ 1); } - m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(f3853_device::timer_callback),this)); + m_timer = timer_alloc(FUNC(f3853_device::timer_callback), this); // zerofill (what's not in constructor) m_external_int_enable = false; @@ -150,7 +138,7 @@ void f3853_device::device_reset() // clear ports at power-on for (int i = 0; i < 4; i++) - write(machine().dummy_space(), i, 0); + write(i, 0); } @@ -208,7 +196,7 @@ TIMER_CALLBACK_MEMBER(f3853_device::timer_callback) } -WRITE_LINE_MEMBER(f3853_device::ext_int_w) +void f3853_device::ext_int_w(int state) { if (!m_external_interrupt_line && state && m_external_int_enable) { @@ -218,14 +206,14 @@ WRITE_LINE_MEMBER(f3853_device::ext_int_w) set_interrupt_request_line(); } -WRITE_LINE_MEMBER(f3853_device::pri_in_w) +void f3853_device::pri_in_w(int state) { m_priority_line = bool(state); set_interrupt_request_line(); } -READ8_MEMBER(f3853_device::read) +uint8_t f3853_device::read(offs_t offset) { switch (offset & 3) { @@ -241,7 +229,7 @@ READ8_MEMBER(f3853_device::read) } } -WRITE8_MEMBER(f3853_device::write) +void f3853_device::write(offs_t offset, uint8_t data) { switch (offset & 3) { @@ -274,7 +262,7 @@ WRITE8_MEMBER(f3853_device::write) // f3851_device-specific handlers //------------------------------------------------- -READ8_MEMBER(f3851_device::read) +uint8_t f3851_device::read(offs_t offset) { switch (offset & 3) { @@ -288,7 +276,7 @@ READ8_MEMBER(f3851_device::read) } } -WRITE8_MEMBER(f3851_device::write) +void f3851_device::write(offs_t offset, uint8_t data) { switch (offset & 3) { @@ -299,7 +287,7 @@ WRITE8_MEMBER(f3851_device::write) // interrupt control, timer: same as 3853 case 2: case 3: - f3853_device::write(space, offset, data); + f3853_device::write(offset, data); break; } } @@ -332,7 +320,7 @@ TIMER_CALLBACK_MEMBER(f3856_device::timer_callback) timer_start(m_timer_count); } -READ8_MEMBER(f3856_device::read) +uint8_t f3856_device::read(offs_t offset) { switch (offset & 3) { @@ -342,17 +330,17 @@ READ8_MEMBER(f3856_device::read) // other: same as 3851 default: - return f3851_device::read(space, offset); + return f3851_device::read(offset); } } -WRITE8_MEMBER(f3856_device::write) +void f3856_device::write(offs_t offset, uint8_t data) { switch (offset & 3) { // I/O ports: same as 3851 case 0: case 1: - f3851_device::write(space, offset, data); + f3851_device::write(offset, data); break; // interrupt/timer control @@ -377,7 +365,7 @@ WRITE8_MEMBER(f3856_device::write) // set timer case 3: - f3853_device::write(space, offset, data); + f3853_device::write(offset, data); break; } } @@ -387,7 +375,7 @@ WRITE8_MEMBER(f3856_device::write) // f38t56_device-specific handlers //------------------------------------------------- -READ8_MEMBER(f38t56_device::read) +uint8_t f38t56_device::read(offs_t offset) { switch (offset & 3) { @@ -397,17 +385,17 @@ READ8_MEMBER(f38t56_device::read) // other: same as 3856 default: - return f3856_device::read(space, offset); + return f3856_device::read(offset); } } -WRITE8_MEMBER(f38t56_device::write) +void f38t56_device::write(offs_t offset, uint8_t data) { switch (offset & 3) { // I/O ports: same as 3851 case 0: case 1: - f3851_device::write(space, offset, data); + f3851_device::write(offset, data); break; // interrupt/timer control @@ -435,7 +423,7 @@ WRITE8_MEMBER(f38t56_device::write) // set timer case 3: m_timer_modulo = data; - f3853_device::write(space, offset, data); + f3853_device::write(offset, data); break; } } |