//READ8_DEVICE_HANDLER( threecom3c505_r ) UINT8 threecom3c505_device::read_port(offs_t offset) { // data to omit excessive logging static UINT8 last_data = 0xff; static UINT32 last_pc = 0; UINT8 data = m_reg[offset & 0x0f]; switch (offset) { case PORT_COMMAND: /* 0x00 read/write, 8-bit */ data = read_command_port(); break; case PORT_STATUS: /* 0x02 read only, 8-bit */ data=read_status_port(); set_interrupt(CLEAR_LINE); // omit excessive logging if (data == last_data) { UINT32 pc = machine().device(MAINCPU)->safe_pcbase(); if (pc == last_pc) { return data; } last_pc = pc; } last_data = data; break; case PORT_DATA: /* 0x04 read/write, 16-bit */ case PORT_DATA + 1: /* 0x04 read/write, 16-bit */ data = read_data_port(); break; case PORT_CONTROL: /* 0x06 read/write, 8-bit */ // just return current value break; default: break; } LOG2(("reading 3C505 Register at offset %02x = %02x", offset, data)); return data; }
//READ8_DEVICE_HANDLER( sc499_r ) UINT8 sc499_device::read_port(offs_t offset) { UINT8 data = 0xff; switch (offset) { case SC499_PORT_DATA: // read data (status data) data = read_data_port(); break; case SC499_PORT_STATUS: // read status data=read_status_port(); // set_interrupt(CLEAR_LINE); break; default: LOG(("reading sc499 Register at offset %02x = %02x", offset, data)); break; } return data; }