AM_RANGE(0x000, 0x7ff) AM_ROM ADDRESS_MAP_END //************************************************************************** // INLINE HELPERS //************************************************************************** //------------------------------------------------- // read_port - read from input port //------------------------------------------------- inline UINT8 i8355_device::read_port(int port) { UINT8 data = m_output[port] & m_ddr[port]; if (m_ddr[port] != 0xff) { if (port == 0) {data |= m_in_pa_cb(0) & ~m_ddr[port];} else { data |= m_in_pb_cb(0) & ~m_ddr[port];} } return data; }
uint8_t i8255_device::read_mode0(int port) { uint8_t data; if (port_mode(port) == MODE_OUTPUT) { // read data from output latch data = m_output[port]; } else { // read data from port data = (port == PORT_A) ? m_in_pa_cb(0) : ((port == PORT_B) ? m_in_pb_cb(0) : m_in_pc_cb(0)); } return data; }
inline UINT8 i8155_device::read_port(int port) { UINT8 data = 0; switch (get_port_mode(port)) { case PORT_MODE_INPUT: data = (port == PORT_A) ? m_in_pa_cb(0) : ((port == PORT_B) ? m_in_pb_cb(0) : m_in_pc_cb(0)); break; case PORT_MODE_OUTPUT: data = m_output[port]; break; default: // strobed mode not implemented yet logerror("8155 '%s' Unsupported Port C mode!\n", tag()); break; } return data; }