summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/f3853.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/f3853.cpp')
-rw-r--r--src/devices/machine/f3853.cpp60
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;
}
}