Irving-Irving Software
GSX-86 Library README File

Introduction
GSX-86 (Graphics System eXtension) for MS-DOS was created by Digital Resarch to provide a unified graphics API across a range of hardware. Digital Equipment Corporation provided GSX-86 drivers for its Rainbow 100 personal computer under both MS-DOS and CP/M-86/80. Drivers also exist for multiple graphics cards on IBM PCs and compatible systems.

GSX-86 is normally accessed using assembly language calls. While this method is effective, it can significantly increase development time. DEC shipped a GSX-86 C library with its GSX for CP/M-86/80 distribution. This C library was designed for use with the Mark Williams C compiler. A later MS-DOS distribution also included a test port of this C library to the Computer Innovations C compiler for MS-DOS, a rather odd-ball (by today's standards) compiler available at the time. Interestingly, DEC also included full source code for this library.

Originally this port was modified to support the Microsoft C optimizing compiler, version 5 specifically. MSC is relatively modern, and copies can still be found for sale or floating around for download on the Internet (do not ask where, they are pirated and, therefore, illegal). However, using the Microsoft compiler still leaves a relatively substantial barrier for anyone wishing to develop for GSX-86 as it is still not free.

This distribution of the GSX-86 library consists of a port of the original Computer Innovations C version to both the Microsoft C (5.1) and OpenWatcom C (1.6) compilers. The Microsoft C version requires three separate copies of GIOS.ASM, each specifying the memory model size. The OpenWatcom version requires only one version of GIOS.ASM, which contains only minor changes from the Microsoft C versions. The memory model for the OpenWatcom version can be specified in the Assembler Switches during compilation. All the functionality is identical to the Computer Innovations and Mark Williams versions.

OpenWatcom Compiler
The OpenWatcom compiler is simply the new name of the Watcom compiler suite, and includes C, C++, and Fortran compilers. The Watcom compiler was released as open source after version 11, and was subsequently renamed OpenWatcom. At the time of this writing, the compiler version is 1.6. The compiler and associated tools are available at the following address:

http://www.openwatcom.org/

The compiler can be hosted on a variety of platforms, but any target can be compiled for on any of the platforms. Therefore, an OpenWatcom installation on an MS Windows system, for example, makes a wonderful and relatively modern 16-bit DOS developer environment.


Compiling the Microsoft Library

Before compiling the library, please note that a version compiled with Microsoft C 5.1 has already been included. This version has been compiled for the 8086 processor (so any of the x86 should run it, including 8088) for small, medium, and large memory models. The libraries are named "gsx?.lib" where the ? is replaced with a s, m, or l based on which memory model was used. The Microsoft C libraries are located in the 'msc' folder. If you wish to continue, the directions are below:

A simple DOS batch file has been included for building the library using all three memory models. After making sure that "CL.EXE", "LIB.EXE", and "MASM.EXE" are all on the system path, run "build.bat". The three libaries should be built automatically. This process can be suprisingly time-consuming on an 8088 processor.

Compiling the OpenWatcom Library

Before compiling the library, please note that versions compiledunder OpenWatcom 1.6 have been included. This version has been compiled for the 8086 processor (so any of the x86 should run it, including 8088) for small, medium, and large memory models. The libraries are named "gsx?.lib" where the ? is replaced with a s, m, or l based on which memory model was used. The OpenWatcom versions are located in the 'watcom' directory. If you wish to continue, the directions are below:

Create a new project in the OpenWatcom IDE. The IDE runs on Windows, OS/2, and Linux (under WINE). Select a library (.lib) and specify a 16-bit DOS target. Once the project window pops up, right-click and select "New Source." Select both the C and ASM files by clicking "Add" when each is selected, then click Close. Make sure both the C and assembler routines are configured for the proper memory model by selecting "C Compiler Switches..." and "Assembler Switches..." from the Options menu and proceeding to the "Memory Model and Processor Switches" section. Finally, simply select "Make" in the Sources menu to build the library.

This process can be performed from the command-line as well, but there is really no need since the IDE is actually quite functional. Note that, although the OpenWatcom compiler provides a DOS-hosted compiler, it requires a 386 or higher. It is advisable to compile the GSX-86 library and any programs that will use the library on a modern host and copy the resulting program to the target DOS system/emulator. All done! Now you just have to link this library to any GSX-86 programs.

Documentation
All documentation on how to use the library is contained in GSX86MWC.DOC. This document shipped with the original DEC MWC CP/M-86/80 edition of GSX-86. Although all functionality should be the smae, it might not be.

Sample source code can be found at this distribution's home page.

Bugs
None are known at this time. If you find any problems, please forward them along to Jeff, who can be reached at jba@_NOSPAM_member.fsf.org.

More Information
The current psuedo-official support site for this distribution is:


http://jba.freeshell.org/

Browse to the GSX page under Products. News, documentation, and sample source code are/will be available there. Otherwise, you can also contact Jeff Armstrong, the current maintainer, at jba@_NOSPAM_member.fsf.org.

Authors
Most original source code is complements of some former DEC employees who have probably forgotten all about GSX-86 at this point. A minimal amount of source code has been written by
Jeff Armstrong (jba@_NOSPAM_member.fsf.org).

- Jeff Armstrong (jba@_NOSPAM_member.fsf.org)
March 18, 2007



Copyright 2006 Jeffrey Armstrong <exhale@_NOSPAM_member.fsf.org>