static void audio_state_sndboard_toccata(int ch) { struct toccata_data *data = &toccata; if ((data->toccata_active & STATUS_FIFO_PLAY) && ch == 0) { // get all bytes at once to prevent fifo going out of sync // if fifo has for example 3 bytes remaining but we need 4. process_fifo(); } if (data->toccata_active && (data->toccata_status & STATUS_FIFO_CODEC)) { int old = data->toccata_irq; if ((data->fifo_half & STATUS_FIFO_PLAY) && (data->toccata_status & STATUS_PLAY_INTENA) && (data->toccata_status & STATUS_FIFO_PLAY)) { data->toccata_irq |= STATUS_READ_PLAY_HALF; } if ((data->fifo_half & STATUS_FIFO_RECORD) && (data->toccata_status & STATUS_FIFO_RECORD) && (data->toccata_status & STATUS_FIFO_RECORD)) { data->toccata_irq |= STATUS_READ_RECORD_HALF; } if (old != data->toccata_irq) { sndboard_rethink(); #if DEBUG_TOCCATA > 2 write_log(_T("TOCCATA IRQ\n")); #endif } } audio_state_sndboard_state(ch, data->ch_sample[ch], data->event_time); }
void devices_rethink(void) { rethink_cias (); #ifdef A2065 rethink_a2065 (); #endif #ifdef A2091 rethink_a2091 (); #endif #ifdef CDTV rethink_cdtv(); rethink_cdtvcr(); #endif #ifdef CD32 rethink_akiko (); rethink_cd32fmv(); #endif #ifdef NCR ncr_rethink(); #endif #ifdef NCR9X ncr9x_rethink(); #endif ncr80_rethink(); #ifdef WITH_PCI pci_rethink(); #endif #ifdef WITH_TOCCATA sndboard_rethink(); #endif rethink_gayle (); idecontroller_rethink(); /* cpuboard_rethink must be last */ cpuboard_rethink(); }