diff --git a/src/devices/bus/ieee488/hp9895.cpp b/src/devices/bus/ieee488/hp9895.cpp index 80aa16bc55c..e5b1f6de2ec 100644 --- a/src/devices/bus/ieee488/hp9895.cpp +++ b/src/devices/bus/ieee488/hp9895.cpp @@ -6,6 +6,9 @@ HP9895 floppy disk drive + Reference manual: + HP 09895-90030, feb 81, 9895A Flexible Disc Memory Service Manual + *********************************************************************/ #include "hp9895.h" @@ -28,6 +31,7 @@ hp9895_device::hp9895_device(const machine_config &mconfig, const char *tag, dev #if 0 ioport_constructor hp9895_device::device_input_ports() const { + // TODO: inputs=HPIB address, "S" & "W" switches, "loop" pin } #endif void hp9895_device::device_start() @@ -170,8 +174,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(z80_io_map , AS_IO , 8 , hp9895_device) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0xff) - // TODO: TEMP! AM_RANGE(0x10 , 0x17) AM_DEVWRITE("phi" , phi_device , reg8_w) AM_READ(phi_reg_r) + // TODO: 60-67 range ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT(hp9895) diff --git a/src/devices/machine/phi.cpp b/src/devices/machine/phi.cpp index 2ac82a44326..34fa8d6117c 100644 --- a/src/devices/machine/phi.cpp +++ b/src/devices/machine/phi.cpp @@ -19,6 +19,12 @@ * C1,C2,C3,C4,C5 * HP non-standard IDENTIFY sequence + Fun fact: PHI has no clock input, its FSMs are driven only by + changes in input signals and by a few internal monostables + + Main reference for this ASIC: + HP 12009-90001, sep 82, HP12009A HP-IB Interface Reference Manual + *********************************************************************/ #include "emu.h" @@ -514,10 +520,12 @@ uint8_t phi_device::get_dio(void) void phi_device::set_dio(uint8_t data) { - LOG(("DIO=%02x\n" , data)); - m_dio = data; - if (!m_loopback) { - m_dio_write_func(~data); + if (data != m_dio) { + LOG(("DIO=%02x\n" , data)); + m_dio = data; + if (!m_loopback) { + m_dio_write_func(~data); + } } }