I found a PAL CoCo owner, Simon Jonassen, that took an interest in seeing my 44-color picture viewer running live on his machine. Contrary to earlier reports of PAL Dragon 64 machines happily running the same code as my NTSC CoCo, his PAL CoCo was not so happy...
Time After Time
At first, I wasn't sure what to make of Simon's reported problems. Between the confusion created by the working Dragon 64 machines and the difficulties of working from a picture of a TV set, I wasn't sure what was happening. Fortunately, Simon was able to poke at the code and to determine that adding the extra 50 lines per frame was enough to stabilize the image (as I had initially speculated). Unfortunately, that wasn't enough to make things right either...
It turns-out that the delay time between the horizontal sync interrupt and the beginning of the next visible line is also different on the PAL CoCo machines. I don't know if that is caused by differences in the PAL video signal, if it is caused by the circuitry added around the VDG to make it PAL-compatible, or if there is some other reason why this happens. In any case, adjusting the cycle-counted code to account for this difference is sufficient to make things work.
Note that the Dragon 32 is still an open question. At least one link suggests that it works similarly to the PAL CoCo. Even if so, it is unclear whether or not the same horizontal timing applies.
On One Condition
Accommodating the PAL timing required some slight refactoring of the code, forcing the CSS value for the beginning of the line to be set after the end of the next line but before the SYNC instruction that waits for the horizontal sync signal. Luckily this works fine for the NTSC code as well, with a few timing-related alterations. I was able to simply add a conditional check to the source code, allowing a simple build option to control whether NTSC- or PAL-compatible code is built. I have pushed this code as an update to the git repository for this project.
I have also released updated code binaries for download. The new NTSC-compatible code is available at the same location as before, and the new PAL-compatible code is available in the PAL subdirectory there as well.
I am now investigating the acquisition of a PAL CoCo and a Dragon 32. Hopefully that will allow me to answer any remaining timing questions, or any new ones that arise. But between now and then, I really need to get to work on the sliding puzzle game for the CoCo Coding Contest -- stay tuned!