mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
heathkit/tlb.cpp Implement interrupt handling for break key (#11406)
This commit is contained in:
parent
e6e769e7e9
commit
8e4f4c24c0
2 changed files with 18 additions and 4 deletions
|
@ -19,6 +19,8 @@
|
|||
TODO:
|
||||
- determine why ULTRA ROM's self-diag (ESC |) fails for the ROM and
|
||||
scratchpad memory
|
||||
- INS8250 needs to implement "Set Break" (LCR, bit 6) before Break key
|
||||
will function as expected.
|
||||
|
||||
****************************************************************************/
|
||||
/***************************************************************************
|
||||
|
@ -167,6 +169,7 @@ void heath_tlb_device::device_start()
|
|||
save_item(NAME(m_reset_key));
|
||||
save_item(NAME(m_keyboard_irq_raised));
|
||||
save_item(NAME(m_serial_irq_raised));
|
||||
save_item(NAME(m_break_key_irq_raised));
|
||||
|
||||
m_strobe = false;
|
||||
m_key_click_active = false;
|
||||
|
@ -176,6 +179,7 @@ void heath_tlb_device::device_start()
|
|||
m_reset_key = false;
|
||||
m_keyboard_irq_raised = false;
|
||||
m_serial_irq_raised = false;
|
||||
m_break_key_irq_raised = false;
|
||||
|
||||
m_key_click_timer = timer_alloc(FUNC(heath_tlb_device::key_click_off), this);
|
||||
m_bell_timer = timer_alloc(FUNC(heath_tlb_device::bell_off), this);
|
||||
|
@ -288,7 +292,8 @@ void heath_tlb_device::serial_irq_w(int state)
|
|||
void heath_tlb_device::set_irq_line()
|
||||
{
|
||||
m_maincpu->set_input_line(INPUT_LINE_IRQ0,
|
||||
(m_keyboard_irq_raised || m_serial_irq_raised) ? ASSERT_LINE : CLEAR_LINE);
|
||||
(m_keyboard_irq_raised || m_serial_irq_raised || m_break_key_irq_raised) ?
|
||||
ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
void heath_tlb_device::check_for_reset()
|
||||
|
@ -310,14 +315,14 @@ void heath_tlb_device::check_for_reset()
|
|||
|
||||
void heath_tlb_device::reset_key_w(int state)
|
||||
{
|
||||
m_reset_key = (state == CLEAR_LINE);
|
||||
m_reset_key = (state == 0);
|
||||
|
||||
check_for_reset();
|
||||
}
|
||||
|
||||
void heath_tlb_device::right_shift_w(int state)
|
||||
{
|
||||
m_right_shift = (state == CLEAR_LINE);
|
||||
m_right_shift = (state == 0);
|
||||
|
||||
check_for_reset();
|
||||
}
|
||||
|
@ -328,6 +333,13 @@ void heath_tlb_device::repeat_key_w(int state)
|
|||
m_repeat_clock->set_duty_cycle(state == CLEAR_LINE ? 0.5 : 0);
|
||||
}
|
||||
|
||||
void heath_tlb_device::break_key_w(int state)
|
||||
{
|
||||
m_break_key_irq_raised = (state == 0);
|
||||
|
||||
set_irq_line();
|
||||
}
|
||||
|
||||
MC6845_UPDATE_ROW(heath_tlb_device::crtc_update_row)
|
||||
{
|
||||
rgb_t const *const palette = m_palette->palette()->entry_list_raw();
|
||||
|
@ -405,7 +417,7 @@ static INPUT_PORTS_START( tlb )
|
|||
PORT_START("MODIFIERS")
|
||||
// bit 0 - 0x001 connects to B8 of MM5740 - low if either shift key is
|
||||
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CapsLock") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_PAUSE)
|
||||
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Break") PORT_CODE(KEYCODE_PAUSE) PORT_WRITE_LINE_MEMBER(heath_tlb_device, break_key_w)
|
||||
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("OffLine") PORT_CODE(KEYCODE_F12) PORT_TOGGLE
|
||||
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHAR(UCHAR_MAMEKEY(LCONTROL))
|
||||
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("LeftShift") PORT_CODE(KEYCODE_LSHIFT) PORT_CHAR(UCHAR_SHIFT_1)
|
||||
|
|
|
@ -35,6 +35,7 @@ public:
|
|||
void reset_key_w(int state);
|
||||
void right_shift_w(int state);
|
||||
void repeat_key_w(int state);
|
||||
void break_key_w(int state);
|
||||
void serial_irq_w(int state);
|
||||
|
||||
protected:
|
||||
|
@ -100,6 +101,7 @@ private:
|
|||
bool m_reset_key;
|
||||
bool m_keyboard_irq_raised;
|
||||
bool m_serial_irq_raised;
|
||||
bool m_break_key_irq_raised;
|
||||
};
|
||||
|
||||
class heath_super19_tlb_device : public heath_tlb_device
|
||||
|
|
Loading…
Reference in a new issue