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:
dxl 2018-10-12 03:28:25 +02:00 committed by R. Belmont
parent d1009b8507
commit 162c81c555
6 changed files with 42 additions and 41 deletions

View File

@ -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;

View File

@ -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

View File

@ -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
//-------------------------------------------------

View File

@ -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;

View File

@ -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();

View File

@ -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))