So, apparently Microsoft Windows 2.11 Hercules graphic card driver is written incorrectly.
Recently I finish repair my IBM PC Portable, which have both CGA and Hercules graphic card installed (dual head configuration). I have install Windows/286 2.11 on it (Windows is using Hercules driver) and it cause graphic corruption when running Windows if there is CGA card also installed.
This graphic corruption problem also exist on Hercules driver in Windows 3.0 and possibly Windows 3.1 too.
To investigate the cause this problem, I download Windows/286 OEM Adaption Kit (this is like DDK on steroid for OEM) that is floating around on archive.org.
looking into Hercules graphic card driver source code and found out it was using page 2 (B8000h-BFFFFh), instead of page 1 (B0000h-B7FFFh) which conflict with the CGA card (it have VRAM at B8000h).
Normally, programs using Hercules graphic card in graphic mode is using Hercules page 1 (aka. half mode). This include popular Thai word processor software, CU-Writer and RAMA SpellCheck and various early Thai graphic mode software that work only with Hercules card, also example codes from Hercules driver floppy disk.
It is possible that Microsoft use CGA driver, which have VRAM at B8000h as a base for writing Windows's Hercules graphic card driver. They make it work but didn't clean the code up to make it correct... Typical Microsoft of that era ๐
I also upload the modified Windows/286 2.x Hercules driver that to use Hercules half mode, which can be found here https://archive.org/details/win211_286_herc
#windows #windows2x #retrocomputing