Пример #1
0
static void dave_refresh_selectable_int(device_t *device)
{
	dave_t *dave = get_token(device);

	/* update 1kHz/50Hz/tg latch and int input */
	switch ((dave->Regs[7]>>5) & 0x03)
	{
		/* 1kHz */
		case 0:
		{
			dave->int_latch &=~(1<<1);
			dave->int_latch |= (dave->int_irq>>1) & 0x02;

			/* set int input state */
			dave->int_input &= ~(1<<0);
			dave->int_input |= (dave->one_khz_state & 0x01)<<0;
		}
		break;

		/* 50Hz */
		case 1:
		{
			dave->int_latch &=~(1<<1);
			dave->int_latch |= dave->int_irq & 0x02;

			/* set int input state */
			dave->int_input &= ~(1<<0);
			dave->int_input |= (dave->fifty_hz_state & 0x01)<<0;
		}
		break;


		default:
			break;
	}

	dave_refresh_ints(device);
}
Пример #2
0
static void dave_refresh_selectable_int(void)
{
	/* update 1khz/50hz/tg latch and int input */
	switch ((dave.Regs[7]>>5) & 0x03)
	{
		/* 1khz */
		case 0:
		{
			dave.int_latch &=~(1<<1);
			dave.int_latch |= (dave.int_irq>>1) & 0x02;

			/* set int input state */
			dave.int_input &= ~(1<<0);
			dave.int_input |= (dave.one_khz_state & 0x01)<<0;
		}
		break;

		/* 50hz */
		case 1:
		{
			dave.int_latch &=~(1<<1);
			dave.int_latch |= dave.int_irq & 0x02;

			/* set int input state */
			dave.int_input &= ~(1<<0);
			dave.int_input |= (dave.fifty_hz_state & 0x01)<<0;
		}
		break;
		

		default:
			break;
	}

	dave_refresh_ints();
}
Пример #3
0
static void dave_set_external_int_state(device_t *device, int IntID, int State)
{
	dave_t *dave = get_token(device);

	switch (IntID)
	{
		/* connected to Nick virq */
		case DAVE_INT1_ID:
		{
			int previous_state;

			previous_state = dave->int_input;

			dave->int_input &=~(1<<4);

			if (State)
			{
				dave->int_input |=(1<<4);
			}

			if ((previous_state ^ dave->int_input) & (1<<4))
			{
				/* changed state */

				if (dave->int_input & (1<<4))
				{
					/* int request */
					dave->int_latch |= (1<<5);

					dave_refresh_ints(device);
				}
			}

		}
		break;

		case DAVE_INT2_ID:
		{
			int previous_state;

			previous_state = dave->int_input;

			dave->int_input &= ~(1<<6);

			if (State)
			{
				dave->int_input |=(1<<6);
			}

			if ((previous_state ^ dave->int_input) & (1<<6))
			{
				/* changed state */

				if (dave->int_input & (1<<6))
				{
					/* int request */
					dave->int_latch|=(1<<7);

					dave_refresh_ints(device);
				}
			}
		}
		break;

		default:
			break;
	}
}
Пример #4
0
/* negative edge triggered */
void	Dave_SetExternalIntState(int IntID, int State)
{
	switch (IntID)
	{
		/* connected to Nick virq */
		case DAVE_INT1_ID:
		{
			int previous_state;

			previous_state = dave.int_input;

			dave.int_input &=~(1<<4);

			if (State)
			{
				dave.int_input |=(1<<4);
			}

			if ((previous_state ^ dave.int_input) & (1<<4))
			{
				/* changed state */

				if (dave.int_input & (1<<4))
				{
					/* int request */
					dave.int_latch |= (1<<5);

					dave_refresh_ints();
				}
			}

		}
		break;
	
		case DAVE_INT2_ID:
		{
			int previous_state;

			previous_state = dave.int_input;

			dave.int_input &= ~(1<<6);

			if (State)
			{
				dave.int_input |=(1<<6);
			}

			if ((previous_state ^ dave.int_input) & (1<<6))
			{
				/* changed state */

				if (dave.int_input & (1<<6))
				{
					/* int request */
					dave.int_latch|=(1<<7);

					dave_refresh_ints();
				}
			}
		}
		break;

		default:
			break;
	}
}