Example #1
0
//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;
}
Example #2
0
//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;
}