mirror of
https://github.com/holub/mame
synced 2025-06-05 20:33:45 +03:00
h8_timer8: fix divide by 0 crash,
scprof: add buttons
This commit is contained in:
parent
b3c50c13f9
commit
8ac01eae4a
@ -544,7 +544,7 @@ void h8_device::prefetch_done_noirq_notrace()
|
||||
void h8_device::set_irq(int irq_vector, int irq_level, bool irq_nmi)
|
||||
{
|
||||
// wake up from software standby with an external interrupt
|
||||
if(standby() && irq_vector) {
|
||||
if(standby() && irq_level >= 0) {
|
||||
resume(SUSPEND_REASON_CLOCK);
|
||||
m_standby_cb(0);
|
||||
}
|
||||
|
@ -213,6 +213,8 @@ void h8_intc_device::get_priority(int vect, int &icr_pri, int &ipr_pri) const
|
||||
}
|
||||
|
||||
|
||||
// H8/325
|
||||
|
||||
h8325_intc_device::h8325_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8_intc_device(mconfig, H8325_INTC, tag, owner, clock)
|
||||
{
|
||||
@ -222,6 +224,8 @@ h8325_intc_device::h8325_intc_device(const machine_config &mconfig, const char *
|
||||
}
|
||||
|
||||
|
||||
// H8H
|
||||
|
||||
h8h_intc_device::h8h_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8h_intc_device(mconfig, H8H_INTC, tag, owner, clock)
|
||||
{
|
||||
@ -349,6 +353,9 @@ void h8h_intc_device::get_priority(int vect, int &icr_pri, int &ipr_pri) const
|
||||
icr_pri = (m_icr >> (slot ^ 7)) & 1;
|
||||
}
|
||||
|
||||
|
||||
// H8S
|
||||
|
||||
h8s_intc_device::h8s_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8h_intc_device(mconfig, H8S_INTC, tag, owner, clock)
|
||||
{
|
||||
@ -418,6 +425,8 @@ void h8s_intc_device::get_priority(int vect, int &icr_pri, int &ipr_pri) const
|
||||
}
|
||||
|
||||
|
||||
// GT913
|
||||
|
||||
gt913_intc_device::gt913_intc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8_intc_device(mconfig, GT913_INTC, tag, owner, clock)
|
||||
{
|
||||
|
@ -326,6 +326,7 @@ void h8_timer16_channel_device::recalc_event(uint64_t cur_time)
|
||||
m_cpu->internal_update();
|
||||
}
|
||||
|
||||
|
||||
h8_timer16_device::h8_timer16_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
device_t(mconfig, H8_TIMER16, tag, owner, clock),
|
||||
m_cpu(*this, finder_base::DUMMY_TAG),
|
||||
@ -445,7 +446,6 @@ void h8_timer16_device::tolr_w(uint8_t data)
|
||||
}
|
||||
|
||||
|
||||
|
||||
void h8_timer16_channel_device::tier_update()
|
||||
{
|
||||
}
|
||||
@ -521,6 +521,8 @@ uint8_t h8_timer16_channel_device::tisr_r(int offset) const
|
||||
}
|
||||
|
||||
|
||||
// H8/325
|
||||
|
||||
h8325_timer16_channel_device::h8325_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8_timer16_channel_device(mconfig, H8325_TIMER16_CHANNEL, tag, owner, clock),
|
||||
m_tcsr(0)
|
||||
@ -602,6 +604,8 @@ uint8_t h8325_timer16_channel_device::isr_to_sr() const
|
||||
}
|
||||
|
||||
|
||||
// H8H
|
||||
|
||||
h8h_timer16_channel_device::h8h_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8_timer16_channel_device(mconfig, H8H_TIMER16_CHANNEL, tag, owner, clock)
|
||||
{
|
||||
@ -686,6 +690,9 @@ void h8h_timer16_channel_device::tcr_update()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// H8S
|
||||
|
||||
h8s_timer16_channel_device::h8s_timer16_channel_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
h8_timer16_channel_device(mconfig, H8S_TIMER16_CHANNEL, tag, owner, clock)
|
||||
{
|
||||
|
@ -271,7 +271,7 @@ void h8_timer8_channel_device::recalc_event(uint64_t cur_time)
|
||||
cur_time = m_cpu->total_cycles();
|
||||
|
||||
uint32_t event_delay = 0xffffffff;
|
||||
if(m_clear_type == CLEAR_A || m_clear_type == CLEAR_B)
|
||||
if((m_clear_type == CLEAR_A || m_clear_type == CLEAR_B) && m_tcor[m_clear_type - CLEAR_A])
|
||||
m_counter_cycle = m_tcor[m_clear_type - CLEAR_A];
|
||||
else {
|
||||
m_counter_cycle = 0x100;
|
||||
|
@ -18,7 +18,6 @@ Hardware notes:
|
||||
- 8*8 chessboard buttons, 16 LEDs, piezo
|
||||
|
||||
TODO:
|
||||
- map the buttons
|
||||
- add lcd
|
||||
- internal artwork
|
||||
|
||||
@ -141,34 +140,28 @@ void professor_state::board_w(u8 data)
|
||||
|
||||
static INPUT_PORTS_START( professor )
|
||||
PORT_START("IN.0")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) // p
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) // n
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) // b
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) // r
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) // q
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) // k
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_7) // take back
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_8) // move
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Pawn")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Knight")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Bishop")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Rook")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Queen")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("King")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Take Back")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_M) PORT_NAME("Move")
|
||||
|
||||
PORT_START("IN.1")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) // reset
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_W) // position?
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) // sound
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_T)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_Y)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_U) // level
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) // monitor?
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_CODE(KEYCODE_N) PORT_NAME("Reset")
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Position")
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_C) PORT_NAME("Color")
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Sound")
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Test")
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Hint")
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_L) PORT_NAME("Level")
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_I) PORT_NAME("Monitor")
|
||||
|
||||
PORT_START("IN.2")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_A) // off
|
||||
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_S)
|
||||
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_D)
|
||||
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F)
|
||||
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_G)
|
||||
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_H)
|
||||
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_J)
|
||||
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_K) // also rook?
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Off")
|
||||
PORT_BIT(0xfe, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||
|
||||
PORT_START("RESET")
|
||||
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_KEYPAD) PORT_CODE(KEYCODE_O) PORT_CHANGED_MEMBER(DEVICE_SELF, professor_state, on_button, 0) PORT_NAME("On")
|
||||
|
Loading…
Reference in New Issue
Block a user