Thursday, 16 April 2026

This time, the bodge is not my fault

I spent some time earlier in the week diagnosing an issue with the latest Freebee premium board, where monitors were dropping out of sync when a key was pressed when running CP/M.

Like a good hardware designer, I blamed the software. I used the standard "doesn't happen for me under Basic" line. And I was right. The CP/M boot rom and CBIOS on Microbee does bad things when it scans the keyboard, chiefly in not masking out unused bits of the scancode when it scans the keyboard. The long and the short of it is that a line that I use to do a VSYNC inversion, to maybe support EGA sync rates in the future, gets flipped by the key scanning routine, causing, well, random VSYNCs on the monitor.

Much debate on the MSPP forum ensued. I even provided a patch for the boot rom to stop it happening in the boot monitor (but haven't yet gone so far in the CBIOS).

But really, I should relent. I can't expect people to become experts at patching software just to use Freebee. It's going to have to be more compatible. So the bodge, thanks to a random software person in the probably late seventies, who didn't mask unused bits after the rotate. In essence we disconnect MA12 between the CRT controller and IC29 pin 4, then ground IC29 pin 4. It's slightly advanced because the whole trace is on middle layers, so you either cut a pin on one of the two chips (yuck), remove the IC socket pin for the CRTC (IC8 pin 16) or, as I have, drill out a via to do the disconnect.

The safest spot for our surgery is the via between pins 8 and 9 of IC7. It's isolated so we're unlikely to clobber anything else. Here's a photo of the bodge, complete with the little drill bit I used for removing the via (teeny hole just to the right)

No comments: