This second one is moving the mouse around the entire time that the test is running.
Thank you @jmacz! This confirms exactly what I expected to see, and shows MAME is acting just like hardware with the 950. No worries about re-testing that anymore @Callan! Thanks!
Quadra AVs don't have an ASC or EASC so that's expected.
I should probably add a check to only run these tests if the AddrMapFlags contain both VIA2 and ASC, to prevent crashes on incompatible hardware.
So...looking through these results in general, and making a few educated guesses, it seems like:
- Original ASC interrupts on FIFO full and FIFO half empty, no repeats. Clears register $804 on read.
- No other variants clear $804 on read, as far as I can tell.
- EASC interrupts on FIFO half empty, only if $F09 or $F29 is 0 for the respective channel. Doesn't repeatedly fire.
- The Q700 looks like it repeats (same with Q950 when mouse is moving) but it's due to special code in the OS and/or ROM.
- Version $Ex interrupts on FIFO half empty, and repeats forever
- Versions $BB and $BC have varying behavior on different machines. They both interrupt on FIFO half empty if $F29 is 0. On some machines the IRQ floods forever, on some machines it doesn't.
- Variants with the $F29 register will fire an IRQ immediately if $F29 changes to 0 and the condition is active. (I'm assuming EASC does the same thing with $F09 for channel A)

