Dec 162017
Allows your Hercules or clone to emulate a CGA display adaptor.
File ACGA.ZIP from The Programmer’s Corner in
Category Display Utilities
Allows your Hercules or clone to emulate a CGA display adaptor.
File Name File Size Zip Size Zip Type
ACGA.COM 1601 1125 deflated
ACGA.DOC 6515 2970 deflated
CURSOR.COM 282 201 deflated

Download File ACGA.ZIP Here

Contents of the ACGA.DOC file



Copyright (C),1987,1988
Jerry D. Dobbs
18C Scott Circle
Bedford, MA 01730
JAN 1988

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

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 ************************
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
run! Example:

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
(the DEFAULT).

Anything else?
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.

 December 16, 2017  Add comments

Leave a Reply