S3 805 - 1024 x 768 x 256 distortion

Last Updated: 11th December, 1994

Symptoms

1024 x 768 x 256 display mode is distorted. Symptoms depend on the monitor type and refresh rate selected but may include one or more of the following:

These symptoms occur even if DOS/Windows is known to work in 1024 x 768 x 256 mode on the same machine.

Hardware

VESA LB Video card with S3 805 chip, 1MB RAM. These messages are written to the display during the boot process:
   Quadtel S3 86C801/805 GENDAC Enhanced VGA Bios Version 2.13.06

Note: this is the only type of S3 card for which this problem is known to exist. However, if you find a problem with a different type of S3 card for which this fix works, please send me the details and I will update this page accordingly.

Problem

The problem seems to be that SVGA.EXE shipped with Warp generates an SVGADATA.PMI file that does not properly "program" this particular type of S3 card.

Procedure

The idea behind the fix is to "correct" the SVGADATA.PMI file so that it programs the S3 card in the correct way.

It would help if you understand what each statement of the SVGADATA.PMI file does. But I don't, and that didn't stop me fixing my particular problem. Here are the steps you might try to get it working on your system:

  1. Run the warp version of SVGA.EXE (from a full screen OS/2 session)

    svga on
    

    This generates the Warp version of \OS2\SVGADATA.PMI that you need as a base for later steps

  2. Find an old version of SVGA.EXE. You can look in the following places:
  3. Backup the current versions of SVGADATA.PMI and SVGA.EXE
        mkdir \os2\pmi
        mkdir \os2\pmi\warp
        copy  \os2\svga.exe     \os2\pmi\warp
        copy  \os2\svgadata.pmi \os2\pmi\warp
    
  4. Run the "old" version of SVGA.EXE to generate the "old" svgadata.pmi
        svga on
    
  5. Backup the "old" version of SVGADATA.PMI
        mkdir \os2\pmi\old
        copy  \os2\svgadata.pmi to \os2\pmi\old
    
  6. Restore the "warp" version of SVGADATA.PMI
         copy \os2\pmi\warp\svgadata.pmi \os2
    
  7. Edit \OS2\SVGADATA.PMI and replace the 1024 x 768 x 256 mode configuration with the equivalent section from \OS2\PMI\OLD\SVGADATA.PMI

  8. Reboot and test the changes.

  9. Once you have created a version of SVGADATA.PMI file that works, remember to save it in a safe place. If you run SVGA.EXE again you will lose your changes and have to repeat this procedure again.

Notes

You should only try this fix only as a last resort. Prior to applying these procedures, please ensure that:

I did experiment with using the SVGADATA.PMI file generated by the "old" SVGA.EXE. OS/2 PM worked fine in 1024 x 768 x 256 mode but Windows support was broken. The more conservative approach of using just the 1024 x 768 x 256 mode configuration from the "old" .PMI file proved to be successful in getting both PM and Windows working in the desired resolution.

In my case I was able to refine the required modifications even further by replacing the following section from the "warp" 1024 x ... mode configuration:

    warp>
    warp>    /*
    warp>     *      Set Other Registers
    warp>     */
    warp>
    warp>    call pfnPMISetMonitorTimings;

with the following section from the "old" 1024 x ... configuration.

    old>       /*
    old>        *      Set Other Registers
    old>        */
    old>
    old>       rmwb(0x3d4, 0x3d5, 0x55, 0xfc, 0x01);
    old>       outb(0x3c8, 0x02);
    old>       r1    = 0x74;
    old>       outb(0x3c9, r1);
    old>       r1    = 0x2b;
    old>       outb(0x3c9, r1);
    old>       rmwb(0x3d4, 0x3d5, 0x55, 0xfc, 0x00);
    old>
    old>       r103 = 0x02;
    old>       boutb(1, 0x67, 0x3d4, 0x3d5);


Disclaimer

The author assumes no responsibility for any loss sustained as a direct or indirect result of applying, in part or in whole, the procedures described above.

VIDEO HARDWARE CAN BE PHYSICALLY DAMAGED IF NOT CONFIGURED PROPERLY. TRY THESE SUGGESTIONS AT YOUR OWN RISK.


Jon Seymour (jon@zeta.org.au)
The Warp Pharmacy