hp_hil: various fixes/improvements (#4124)
* hp_hil: use logmacro.h (nw) * add missing save_item()'s (nw) * hp_hil: remove MCFG (nw)
This commit is contained in:
parent
d1009b8507
commit
162c81c555
@ -42,6 +42,10 @@ hle_device_base::~hle_device_base()
|
||||
|
||||
void hle_device_base::device_start()
|
||||
{
|
||||
|
||||
save_item(NAME(m_powerup));
|
||||
save_item(NAME(m_passthru));
|
||||
|
||||
set_hp_hil_mlc_device();
|
||||
|
||||
m_powerup = true;
|
||||
|
@ -33,8 +33,10 @@ protected:
|
||||
virtual int hil_poll() = 0;
|
||||
private:
|
||||
|
||||
|
||||
util::fifo<uint8_t, 8> m_fifo;
|
||||
|
||||
bool m_powerup;
|
||||
bool m_passthru;
|
||||
};
|
||||
|
||||
} // namespace bus::hp_hil
|
||||
|
@ -9,20 +9,8 @@
|
||||
|
||||
#include "emu.h"
|
||||
#include "hp_hil.h"
|
||||
|
||||
|
||||
#define VERBOSE_DBG 0
|
||||
|
||||
#define DBG_LOG(N,M,A) \
|
||||
do { \
|
||||
if(VERBOSE_DBG>=N) \
|
||||
{ \
|
||||
if( M ) \
|
||||
logerror("%11.6f at %s: %-10s",machine().time().as_double(),machine().describe_context(),(char*)M ); \
|
||||
logerror A; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
//#define VERBOSE 1
|
||||
#include "logmacro.h"
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
@ -88,6 +76,13 @@ void hp_hil_mlc_device::device_start()
|
||||
// resolve callbacks
|
||||
int_cb.resolve_safe();
|
||||
nmi_cb.resolve_safe();
|
||||
|
||||
save_item(NAME(m_r2));
|
||||
save_item(NAME(m_r3));
|
||||
save_item(NAME(m_w1));
|
||||
save_item(NAME(m_w2));
|
||||
save_item(NAME(m_w3));
|
||||
save_item(NAME(m_loop));
|
||||
}
|
||||
|
||||
|
||||
@ -107,17 +102,17 @@ WRITE8_MEMBER(hp_hil_mlc_device::write)
|
||||
{
|
||||
device_hp_hil_interface *entry = m_device_list.first();
|
||||
uint16_t tmp = data | (m_w1 << 8);
|
||||
DBG_LOG(2,"Write", ("%d <- %02x\n", offset, data));
|
||||
|
||||
switch (offset)
|
||||
{
|
||||
case 0:
|
||||
DBG_LOG(1,"Transmit", ("%scommand 0x%02x to device %d\n", !m_loop?"loopback ":"", data, m_w1 & 7));
|
||||
LOG("write: %scommand 0x%02x to device %d\n", !m_loop?"loopback ":"", data, m_w1 & 7);
|
||||
|
||||
m_fifo.clear();
|
||||
|
||||
if (m_loop & 2) // no devices on 2nd link loop
|
||||
return;
|
||||
|
||||
if (m_loop == 0)
|
||||
{
|
||||
if (!m_fifo.full()) {
|
||||
@ -138,14 +133,17 @@ WRITE8_MEMBER(hp_hil_mlc_device::write)
|
||||
break;
|
||||
|
||||
case 1:
|
||||
LOG("write: W1=%02x\n", 0xf);
|
||||
m_w1 = data & 0xf;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
LOG("write: W2=%02x\n", data);
|
||||
m_w2 = data;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
LOG("write: W3=%02x\n", data);
|
||||
m_w3 = data;
|
||||
break;
|
||||
|
||||
@ -183,15 +181,17 @@ READ8_MEMBER(hp_hil_mlc_device::read)
|
||||
break;
|
||||
}
|
||||
|
||||
DBG_LOG(2,"Read", ("%d == %02x\n", offset, data));
|
||||
LOG("Read %d == %02x\n", offset, data);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
void hp_hil_mlc_device::hil_write(uint16_t data)
|
||||
{
|
||||
DBG_LOG(1,"Receive", ("%s %04X fifo %s\n",
|
||||
BIT(data, 11)?"command":"data", data, m_fifo.full()?"full":(m_fifo.empty()?"empty":"ok")));
|
||||
LOG("hil_write: %s %04X fifo %s\n",
|
||||
BIT(data, 11) ? "command" : "data",
|
||||
data,
|
||||
m_fifo.full() ? "full" : (m_fifo.empty()?"empty":"ok"));
|
||||
|
||||
if (!m_fifo.full())
|
||||
{
|
||||
@ -248,7 +248,6 @@ device_hp_hil_interface::device_hp_hil_interface(const machine_config &mconfig,
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// ~device_hp_hil_interface - destructor
|
||||
//-------------------------------------------------
|
||||
|
@ -79,17 +79,6 @@
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_HP_HIL_INT_CALLBACK(_devcb) \
|
||||
downcast<hp_hil_mlc_device &>(*device).set_int_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_HP_HIL_NMI_CALLBACK(_devcb) \
|
||||
downcast<hp_hil_mlc_device &>(*device).set_nmi_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_HP_HIL_SLOT_ADD(_mlc_tag, _tag, _slot_intf, _def_slot) \
|
||||
MCFG_DEVICE_ADD(_tag, HP_HIL_SLOT, 0) \
|
||||
MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \
|
||||
downcast<hp_hil_slot_device &>(*device).set_hp_hil_slot(this, _mlc_tag);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
@ -193,8 +182,6 @@ protected:
|
||||
|
||||
int m_device_id;
|
||||
uint16_t m_device_id16;
|
||||
bool m_powerup;
|
||||
bool m_passthru;
|
||||
|
||||
private:
|
||||
device_hp_hil_interface *m_next;
|
||||
|
@ -493,8 +493,10 @@ MACHINE_CONFIG_START(hp16500_state::hp16500)
|
||||
|
||||
// TODO: for now hook up the ipc hil keyboard - this might be replaced
|
||||
// later with a 16500b specific keyboard implementation
|
||||
MCFG_HP_HIL_SLOT_ADD("mlc", "hil1", hp_hil_devices, "hp_ipc_kbd")
|
||||
MCFG_HP_HIL_SLOT_ADD("mlc", "hil2", hp_hil_devices, "hp_ipc_kbd")
|
||||
hp_hil_slot_device &keyboard(HP_HIL_SLOT(config, "hil1", 0));
|
||||
hp_hil_devices(keyboard);
|
||||
keyboard.set_default_option("hp_ipc_kbd");
|
||||
keyboard.set_hp_hil_slot(this, "mlc");
|
||||
|
||||
SPEAKER(config, "lspeaker").front_left();
|
||||
SPEAKER(config, "rspeaker").front_right();
|
||||
|
@ -754,11 +754,18 @@ MACHINE_CONFIG_START(hp_ipc_state::hp_ipc_base)
|
||||
MCFG_MM58167_IRQ_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_1))
|
||||
// MCFG_MM58167_STANDBY_IRQ_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_6))
|
||||
|
||||
MCFG_DEVICE_ADD("mlc", HP_HIL_MLC, 15.92_MHz_XTAL / 2)
|
||||
MCFG_HP_HIL_INT_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_2))
|
||||
MCFG_HP_HIL_NMI_CALLBACK(WRITELINE(*this, hp_ipc_state, irq_7))
|
||||
MCFG_HP_HIL_SLOT_ADD("mlc", "hil1", hp_hil_devices, "hp_ipc_kbd")
|
||||
MCFG_HP_HIL_SLOT_ADD("mlc", "hil2", hp_hil_devices, "hp_46060b")
|
||||
hp_hil_mlc_device &mlc(HP_HIL_MLC(config, "mlc", XTAL(15'920'000)/2));
|
||||
mlc.int_callback().set(FUNC(hp_ipc_state::irq_2));
|
||||
mlc.nmi_callback().set(FUNC(hp_ipc_state::irq_7));
|
||||
hp_hil_slot_device &keyboard(HP_HIL_SLOT(config, "hil1", 0));
|
||||
hp_hil_devices(keyboard);
|
||||
keyboard.set_default_option("hp_ipc_kbd");
|
||||
keyboard.set_hp_hil_slot(this, "mlc");
|
||||
|
||||
hp_hil_slot_device &mouse(HP_HIL_SLOT(config, "hil2", 0));
|
||||
hp_hil_devices(mouse);
|
||||
mouse.set_default_option("hp_46060b");
|
||||
mouse.set_hp_hil_slot(this, "mlc");
|
||||
|
||||
MCFG_DEVICE_ADD("hpib", TMS9914, 4_MHz_XTAL)
|
||||
MCFG_TMS9914_INT_WRITE_CB(WRITELINE(*this, hp_ipc_state, irq_3))
|
||||
|
Loading…
Reference in New Issue
Block a user