charon030 wrote: 13 Jan 2026 21:49
I'm not sure whether you are aware of this analysis, on how the issue can be resolved for the CT2? At least I think it resolves the issue mentioned in this thread.
https://mikrosk.github.io/ct2/NOTES.html#dsp-irq-signal
Didier seems to have connected a wire from DSACK0 at the GAL U44 output to the DSACK0 signal between CPU and FPU on the CT2. So instead of replacing the GAL generating the DTACK in a 68000-bus cycle style, they just generate their own DSACK with the help of a 7405.
Interesting - had not seen that page of Mikro's. Although I don't have a CT2 so that is a factor :)
at the risk of a tangent... quoting from the page...
"Centek found using the DSP IRQ (which triggers an exeption on the 68030) bad programming practice (not optimal)."
I think this is only true in the simplest sense. Sending individual bytes/words or small packets using this interrupt mechanism is of course very inefficient. The CPU interrupt overhead and latency for the IRQ converting into work means it will always be faster to use a synchronous, manual transfer directly over the port, as written there...
However there are many situations where direct control over the port is not practical or itself is inefficient because the next transfer can't be easily predicted and can't be synchronised without waiting. If anything is bad programming practice in the world of realtime applications, it is waiting :)
This is especially true for something like a DAW with realtime mixed/processed audio streaming onwards to a device - the sample rate is dictating the rate of consumption of data from the host CPU, the number of sources may be varying (sample banks? voices?) and so the DSP must notify the CPU when it needs or can accept new data, rather than the CPU polling or pushing data when convenient. This requires an IRQ to notify. (there is also the other mechanism - the DMA frame IRQ but it is specific to DMA, which has its own set of constraints/issues)
The overhead of the IRQ then gets absorbed into the block transfer itself - which can be in the interrupt or after returning from the notify. The IRQ does not need to serve each individual bit of data.
An application of this kind running in a single-tasking environment will also aim to avoid the CPU getting tied up in blocking waits so it can continue to serve other works such as UI refresh. Less of an issue in a threaded environment but at the time these machines were all single-cored so IRQ still beats time slicing for low latency.
In other words - it did have an important role to play in professional audio software at a minimum and probably why Atari made sure the signals were provided one way or another.
The part which remains unclear - which existing applications/demos etc. actually used the DSP IRQ for host interrupts? Might be an interesting experiment to nerf the IRQ line in an otherwise unmodified system and see which Audio software will still run. I would be surprised if CBA or Atari's realtime signal processing demo will operate correctly without it but I don't know for sure.
For me at least, it remains a valid hardware feature on the Falcon and where it makes sense to do so I will probably be using it :P