mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
hp9k_3xx: misc fixes (nw)
- fix PPOLL logic in human_interface, make HP-UX recognize GPIB floppy drives - support reading of WMOVE_ACTIVE register in catseye graphics - add some missing default mappings to ITF keyboard - fix default interrupt level of 98644A to match HP-UX default configuration - set SCSI transfer speed in configuration register to 4MB/s, which matches the hardware setting
This commit is contained in:
parent
3349e3e990
commit
3a734b6602
@ -204,7 +204,7 @@ READ16_MEMBER(dio16_98265a_device::io_r)
|
||||
ret = m_spc->data_read();
|
||||
break;
|
||||
case 3:
|
||||
ret = 0xe8; /* Flush/Configuration register */
|
||||
ret = 0x88; /* Flush/Configuration register */
|
||||
break;
|
||||
}
|
||||
LOG("io_r: offset=%02X ret=%02X\n",offset, ret);
|
||||
|
@ -88,7 +88,7 @@ static INPUT_PORTS_START(hp98644_port)
|
||||
PORT_DIPSETTING(0x00, DEF_STR(Off))
|
||||
PORT_DIPSETTING(REG_SWITCHES_MODEM_EN, DEF_STR(On))
|
||||
|
||||
PORT_DIPNAME(REG_SWITCHES_INT_LEVEL_MASK << REG_SWITCHES_INT_LEVEL_SHIFT, 0x02, "Interrupt level")
|
||||
PORT_DIPNAME(REG_SWITCHES_INT_LEVEL_MASK << REG_SWITCHES_INT_LEVEL_SHIFT, 0x02 << REG_SWITCHES_INT_LEVEL_SHIFT, "Interrupt level")
|
||||
PORT_DIPSETTING(0 << REG_SWITCHES_INT_LEVEL_SHIFT, "3")
|
||||
PORT_DIPSETTING(1 << REG_SWITCHES_INT_LEVEL_SHIFT, "4")
|
||||
PORT_DIPSETTING(2 << REG_SWITCHES_INT_LEVEL_SHIFT, "5")
|
||||
|
@ -155,7 +155,8 @@ WRITE_LINE_MEMBER(human_interface_device::reset_in)
|
||||
|
||||
void human_interface_device::update_gpib_irq()
|
||||
{
|
||||
irq3_out((m_gpib_irq_line || (m_ppoll_sc & PPOLL_IR)) ? ASSERT_LINE : CLEAR_LINE);
|
||||
irq3_out((m_gpib_irq_line ||
|
||||
((m_ppoll_sc & (PPOLL_IR|PPOLL_IE)) == (PPOLL_IR|PPOLL_IE))) ? ASSERT_LINE : CLEAR_LINE);
|
||||
}
|
||||
|
||||
WRITE_LINE_MEMBER(human_interface_device::gpib_irq)
|
||||
@ -171,11 +172,13 @@ WRITE_LINE_MEMBER(human_interface_device::gpib_dreq)
|
||||
|
||||
WRITE8_MEMBER(human_interface_device::ieee488_dio_w)
|
||||
{
|
||||
if (m_ieee488->atn_r() || m_ieee488->eoi_r())
|
||||
return;
|
||||
|
||||
if ((m_ppoll_mask & ~data) && (m_ppoll_sc & PPOLL_IE)) {
|
||||
LOG("%s: PPOLL triggered\n");
|
||||
m_ieee488->host_atn_w(1);
|
||||
m_ieee488->host_eoi_w(1);
|
||||
m_ppoll_sc |= PPOLL_IR;
|
||||
LOG("%s: parallel poll triggered\n", __func__);
|
||||
if (m_ppoll_sc & PPOLL_IE)
|
||||
m_ppoll_sc |= PPOLL_IR;
|
||||
update_gpib_irq();
|
||||
}
|
||||
}
|
||||
@ -202,13 +205,14 @@ WRITE8_MEMBER(human_interface_device::gpib_w)
|
||||
|
||||
if (m_ppoll_sc & PPOLL_IE) {
|
||||
LOG("%s: start parallel poll\n", __func__);
|
||||
m_ieee488->host_atn_w(0);
|
||||
m_ieee488->host_eoi_w(0);
|
||||
ieee488_dio_w(space, 0, m_ieee488->dio_r(space, 0));
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
m_ppoll_mask = data;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
LOG("gpib_w: %s %02X = %02X\n", machine().describe_context().c_str(), offset, data);
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ INPUT_PORTS_START( itf_basic )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHAR(UCHAR_MAMEKEY(F2))
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHAR(UCHAR_MAMEKEY(F1))
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Stop")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Stop") PORT_CODE(KEYCODE_RWIN) PORT_CHAR(UCHAR_MAMEKEY(RWIN))
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Print/Enter")
|
||||
|
||||
// keycodes a0..af
|
||||
@ -283,8 +283,8 @@ INPUT_PORTS_START( itf_basic )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_CHAR('[') PORT_CHAR('{')
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHAR(']') PORT_CHAR('}')
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_CHAR('\\') PORT_CHAR('|')
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert Char")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete Char")
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Insert Char") PORT_CODE(KEYCODE_INSERT) PORT_CHAR(UCHAR_MAMEKEY(INSERT))
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Delete Char") PORT_CODE(KEYCODE_DEL) PORT_CHAR(UCHAR_MAMEKEY(DEL))
|
||||
|
||||
// keycodes d0..df
|
||||
PORT_START("COL5")
|
||||
@ -295,7 +295,7 @@ INPUT_PORTS_START( itf_basic )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_QUOTE) PORT_CHAR('\'') PORT_CHAR('"')
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Return") PORT_CODE(KEYCODE_ENTER) PORT_CHAR(13)
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Home") PORT_CODE(KEYCODE_HOME) PORT_CHAR(UCHAR_MAMEKEY(HOME))
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Prev")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Prev") PORT_CODE(KEYCODE_PGUP) PORT_CHAR(UCHAR_MAMEKEY(PGUP))
|
||||
|
||||
// keycodes e0..ef
|
||||
PORT_START("COL6")
|
||||
@ -306,7 +306,7 @@ INPUT_PORTS_START( itf_basic )
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Select") PORT_CODE(KEYCODE_PLUS_PAD) PORT_CHAR(UCHAR_MAMEKEY(PLUS_PAD))
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Next")
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Next") PORT_CODE(KEYCODE_PGDN) PORT_CHAR(UCHAR_MAMEKEY(PGDN))
|
||||
|
||||
// keycodes f0..ff
|
||||
PORT_START("COL7")
|
||||
@ -369,7 +369,7 @@ INPUT_PORTS_START( itf_basic )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHAR(UCHAR_MAMEKEY(F10))
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED )
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_CHAR(UCHAR_MAMEKEY(F11))
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_CODE(KEYCODE_STOP) PORT_CHAR('.')
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_KEYBOARD )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_CHAR(UCHAR_MAMEKEY(F9))
|
||||
PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("Tab") PORT_CODE(KEYCODE_TAB_PAD) PORT_CHAR(9)
|
||||
PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD ) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHAR(UCHAR_MAMEKEY(F12))
|
||||
|
@ -878,6 +878,10 @@ READ16_MEMBER(catseye_device::ctrl_r)
|
||||
}
|
||||
|
||||
switch(offset) {
|
||||
case TOPCAT_REG_WMOVE_ACTIVE:
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
case TOPCAT_REG_ENABLE_BLINK_PLANES:
|
||||
ret = m_blink_enable;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user