summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/machine/ticket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/ticket.cpp')
-rw-r--r--src/mame/machine/ticket.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/mame/machine/ticket.cpp b/src/mame/machine/ticket.cpp
index 92265c814ae..bb7c4481f98 100644
--- a/src/mame/machine/ticket.cpp
+++ b/src/mame/machine/ticket.cpp
@@ -43,6 +43,7 @@ ticket_dispenser_device::ticket_dispenser_device(const machine_config &mconfig,
m_motor_sense(TICKET_MOTOR_ACTIVE_LOW),
m_status_sense(TICKET_STATUS_ACTIVE_LOW),
m_period(attotime::from_msec(100)),
+ m_hopper_type(false),
m_active_bit(0x80),
m_motoron(0),
m_ticketdispensed(0),
@@ -83,11 +84,12 @@ void ticket_dispenser_device::static_set_period(device_t &device, const attotime
// the motor and status bits
//-------------------------------------------------
-void ticket_dispenser_device::static_set_senses(device_t &device, uint8_t motor_sense, uint8_t status_sense)
+void ticket_dispenser_device::static_set_senses(device_t &device, uint8_t motor_sense, uint8_t status_sense, bool hopper_type)
{
ticket_dispenser_device &ticket = downcast<ticket_dispenser_device &>(device);
ticket.m_motor_sense = motor_sense;
ticket.m_status_sense = status_sense;
+ ticket.m_hopper_type = hopper_type;
}
@@ -140,9 +142,12 @@ WRITE8_MEMBER( ticket_dispenser_device::write )
{
if (m_power)
{
- LOG(("%s: Ticket Power Off\n", machine().describe_context()));
- m_timer->adjust(attotime::never);
- machine().output().set_led_value(2,0);
+ if (m_hopper_type == false || m_status == m_ticketnotdispensed)
+ {
+ LOG(("%s: Ticket Power Off\n", machine().describe_context()));
+ m_timer->adjust(attotime::never);
+ machine().output().set_led_value(2, 0);
+ }
m_power = 0;
}
}
@@ -205,6 +210,13 @@ void ticket_dispenser_device::device_timer(emu_timer &timer, device_timer_id id,
LOG(("Ticket Status Changed to %02X\n", m_status));
m_timer->adjust(m_period);
}
+ else if (m_hopper_type)
+ {
+ m_status ^= m_active_bit;
+ LOG(("%s: Ticket Power Off\n", machine().describe_context()));
+ m_timer->adjust(attotime::never);
+ machine().output().set_led_value(2, 0);
+ }
// update LED status (fixme: should map to an output)
machine().output().set_led_value(2, (m_status == m_ticketdispensed));