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); }
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(); }
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; } }
/* 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; } }