Contents of the ACGA.DOC file
ALMOST CGA (ACGA)
Jerry D. Dobbs
18C Scott Circle
Bedford, MA 01730
This software product is the property of the author and is released
for public, non-commercial use only! Any exceptions to this rule
are permitted only through expressed written permission of the
author. No warranty, written or implied, is provided for it's
use. The author waives any responsibility for the use of, or
results of the use of this product. (What do you want for nothing?)
This product may be distributed to anyone interested, as long as
the following rules are followed:
- This documentation accompanies it.
- The program/documentation isn't modified
- You aren't accepting money for it!
Source code, on 5-1/4" diskette, is available by sending $15.00 to the
above address (to cover the disk, the time, and the trouble).
In this document:
- HERCULES is a registered trademark of HERCULES Computer Technology
- IBM is a registered trademark of IBM Corporation
ALMOST CGA V2.1
What is it?
AGCA is a CGA Emulator program. It uses the versatility of the
HERCULES Graphic Adapter (and compatibles) to create the illusion
of a system resident Color Graphics Adapter (CGA) on IBM PC/AT and
compatible computers. It is a memory resident program which
positions itself into RAM, and "wedges" the BIOS runtime interface.
******************** WARNING ************************
DO NOT USE THIS PROGRAM WHEN A COLOR GRAPHICS ADAPTER
IS INSTALLED IN YOUR COMPUTER. THIS PROGRAM USES A
CONFIGURATION OPTION WHICH CAUSES MEMORY ALLOCATION
CONFLICT WITH EGA/CGA ADAPTERS. RESULTS OF SUCH USE
ARE UNPREDICTABLE. (Let's hope nothing smokes)
Note: An emulator is NOT a Color Graphics Adapter (as hard as it may
try), and for that reason it can never be 100% compatible. There will
be programs (mavericks) which will not work with ACGA, particularly when
they directly manipulate certain CGA registers (memory is okay). But
in most cases it works fine. For the exceptions, I'm still exploring
ways to improve ACGA - maybe the next version will help.
How is it different from other CGA emulators?
1. Shading. ACGA gives distinction between the 320x200 middle colors
by manipulating the odd raster scan lines, and creating a third
video raster line page (invisible to BIOS). It makes distinction
of some colors a little more legible.
2. Versatility. By calling ACGA with switch settings (see below), you
can set it up for your particular computer. This can reduce the
"ghost" imaging, inherent to CGA Emulators, on some faster machines.
It also allows emulation disabling, making ACGA invisible when you
want to run your HERCULES compatible products.
3. It's free. You can toss this baby around without worrying about
your conscience bothering you (yeah, sure...)
How do you use it?
1. To invoke ALMOST CGA make sure the file ACGA.COM is present in your
current directory (or within a directory specified by your PATH
description). From the DOS prompt type:
Calling ACGA without parameter switches means you are accepting
default parameters for speed and mode. ACGA will install the
resident (wedge) portion of itself only on the first call. Further
calls are used only to change parameters (if necessary).
2. The parameter switch "/D" tells ACGA to disable CGA emulation.
This switch provides compatibility with software products designed
for the HERCULES board. Example:
Typing this line will tell ACGA to install itself (if not already
installed) and disable CGA emulation.
3. The "/Sn" (speed) parameter switch allows you to set the transfer
rate for the background emulation process. This transfer rate
affects the amount of "ghosting" which appears in rapid movement of
graphic objects on the screen. A too low rate causes excessive
"ghosting", and a too high rate uses excessive CPU time - causing
program slowdown. Background emulation is only executing when
graphic screens are displayed, therefore, the /S switch has no
affect on text display.
There are four rates supported (1-5, 5 being the highest). Normally
a standard PC (4.77 Mhz) should use speeds 1 or 2; a turbo system
(8 - 10 Mhz) can use 2 or 3; and a 80286 based computer can use
3,4 or if it's really fast, 5. You may even want to dynamically
set the rate depending upon the which program you're intending to
ACGA /S2 (Set ACGA rate to 2)
As with the /D switch, the ACGA program will install itself, if
needed, when called. The transfer rate will remain at this
As an example, I usually run ACGA in my AUTOEXEC.BAT file like
ACGA /ds3 (note that you can mix parameters)
This installs the emulator, sets speed 3 for my 10Mhz clone, and
disables emulation for now. Then, when I wish to emulate CGA (for
games, graphs etc.), I call (perhaps in a .BAT file):
This enables CGA emulation mode and leaves the speed unchanged
1. The default speed rate (if not changed) is 2. If you are
adventurous, you can change the default using DEBUG. The
configuration default byte is located at segment offset 0125H.
Reset the byte based on this table:
RATE: 1 = 01H
2 = 02H
3 = 04H
4 = 08H
5 = 10H (Maximum - your computer is VERY fast)
A value over 10H will not increase rate, you only end up moving
useless data (possibly causing some unforseen problem).
2. Included with the ALMOST CGA package is a program called CURSOR.
Some programs (e.g. BSE) set the cursor to a peculiar position
(thinking a CGA with 8 x 8 characters is installed) when CGA
emulation is in effect. I'm working on a software solution within
ACGA, but in the meantime, for those, like me who find this an
annoyance, CURSOR will set the position straight.