[comp.sys.ibm.pc] CGA320x200 and EGA640x350 graphics routines

everett@hpcvlo.HP.COM (Everett Kaser) (07/22/87)

I've received many useful things from the net over the years, so here's 
something to help balance my debt.  This is (very slight) documentation and
(very voluminous) assembly code that does graphics in CGA 320x200 mode with
4 colors, and in EGA 640x350 mode with 16 colors.  The routines are intended
to be called from C (Microsoft 4.0 flavor), but with fairly minor modifica-
tion could be callable from assembly, Pascal, Fortran, BASIC, or whatever
your favorite language is.  The only things that are language specific are:

   1) the structure of the GROUPs and SEGMENTS
   2) the underscore as the first char of all public/extern labels
   3) the way function arguments and return values are passed on the stack

All of the functions operate the same on both CGA and EGA (given the
differences in number of pixels and colors available) except for the
SETCOLOR and BPLOTXY functions.  With those functions, the arguments mean
slightly different things, as is mentioned in the (brief) reference card.


The capabilities supplied are:

	set the display mode (SETMODE)
	set the color palette (SETCOLORS)
	plot a point (PLOTXY)
	do a bit-plot (a rectangular array of points) (BPLOTXY)
	draw a line between two points (LINE)
	draw a horizontal line, same y-coordinates (HORLINE)
	draw a vertical line, same x-coordinates (VERLINE)
	clear the entire screen to a specified color (CLRSCREEN)
	fast label a string to the graphics screen (FLABEL)
	set the random number generator seed (SETRAND)
	get the next random number (RAND)
	turn the beeper on using Timer 2 gate (BEEPON)
	turn the beeper off
	check to see if there's a key in the keyboard buffer (ISKEY)
	get the next scan/ascii code from the keyboard buffer (KEY)

The reason for HORLINE and VERLINE is that many of the lines I draw are
vertical or horizontal, and the algorithm for doing those is much faster than
the general case, hence extra code for faster speed.  The random number
generator is not the best in the world, but very reasonable (and fast) for
most applications (such as games).  The word returned by the KEY function
is the same as returned by INT 16, function 0;  i.e. the upper byte is the
scancode, the lower byte is the ASCII code.

The code should assemble OK with almost any version of the Microsoft assembler.
There's not a lot of documentation included other than the comments in the
code.  sorry about that (he hangs his head with sheepish look)     _____
                                                               _--/ @ @ \
                                                              /   | =_= |
                                                              |    \----/
If you run into any major stumbling blocks trying to understand what
a function is supposed to do, or how it works, send me mail or give me a call.

cut off the garbage at front and end, uudecode, and you'll have the file
GRAPH.ARC which contains GRAPH.DOC and GRAPH.ASM.

Everett Kaser
Hewlett-Packard Co.
Corvallis, OR
!hplabs!hp-pcd!everett

----------------------- cut here ----------------------------
begin 644 graph.arc
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
-863Y0T561!4!H0$: ,41
 
end