IIRC, with old PIO if I called port write with interrupt clear, it would mask interrupt requests completely, so no further interrupt was taken. That's why I was callin PIO port write only when interrupt line was active.
BTW, according to your changes descripton, handshaking inPIO was rewritten, but Megatouch doesn't use handshaking on PIO (I assume you are referring to READY lines). Maybe something else got broken then?
I was able to get it working again by changing the PIO implementation slightly and adding 2 scanline timers to assert/clear the vblank interrupts. Need to check that other drivers are still working tomorrow.
I don't understand how the driver could ever have worked in the first place