static TIMER_CALLBACK(dave_1khz_callback) { device_t *device = (device_t *)ptr; dave_t *dave = get_token(device); /* time over - want int */ dave->one_khz_state ^= 0x0ffffffff; /* lo-high transition causes int */ if (dave->one_khz_state!=0) { dave->int_irq |=(1<<2); } /* update fifty Hz counter */ dave->fifty_hz_count--; if (dave->fifty_hz_count==0) { /* these two lines are temp here */ dave->nick_virq ^= 0x0ffffffff; dave_set_external_int_state(device, DAVE_INT1_ID, dave->nick_virq); dave->fifty_hz_count = DAVE_FIFTY_HZ_COUNTER_RELOAD; dave->fifty_hz_state^=0x0ffffffff; if (dave->fifty_hz_state!=0) { dave->int_irq |= (1<<1); } } dave->one_hz_count--; if (dave->one_hz_count==0) { /* reload counter */ dave->one_hz_count = DAVE_ONE_HZ_COUNTER_RELOAD; /* change state */ dave->int_input ^= (1<<2); if (dave->int_input & (1<<2)) { /* transition from 0->1 */ /* int requested */ dave->int_latch |=(1<<3); } } dave_refresh_selectable_int(device); }
static void dave_1khz_callback(int dummy) { // logerror("1khz int\n"); /* time over - want int */ dave.one_khz_state^=0x0ffffffff; /* lo-high transition causes int */ if (dave.one_khz_state!=0) { dave.int_irq |=(1<<2); } /* update fifty hz counter */ dave.fifty_hz_count--; if (dave.fifty_hz_count==0) { /* these two lines are temp here */ nick_virq^=0x0ffffffff; Dave_SetExternalIntState(DAVE_INT1_ID, nick_virq); dave.fifty_hz_count = DAVE_FIFTY_HZ_COUNTER_RELOAD; dave.fifty_hz_state^=0x0ffffffff; if (dave.fifty_hz_state!=0) { dave.int_irq |= (1<<1); } } dave.one_hz_count--; if (dave.one_hz_count==0) { /* reload counter */ dave.one_hz_count = DAVE_ONE_HZ_COUNTER_RELOAD; /* change state */ dave.int_input ^= (1<<2); if (dave.int_input & (1<<2)) { /* transition from 0->1 */ /* int requested */ dave.int_latch |=(1<<3); } } dave_refresh_selectable_int(); }