[comp.binaries.ibm.pc] v01i177: egacolrs, select from 64 EGA colors and see byte value

madler@Hamlet.Caltech.Edu (Mark Adler) (02/28/89)

Posting-number: Volume 01, Issue 177
Originally-from: madler@Hamlet.Caltech.Edu (Mark Adler)
Submitted-by: madler@Hamlet.Caltech.Edu (Mark Adler)
Archive-name: egacolrs/egacolrs.uue

[
Excerpted from the documentation:

     EGACOLRS displays all 64 possible colors at once on the screen and
     allows cursor key selection of color blocks to indicate the actual
     byte value to be used in a pallette for that color.

     Those who know a little about the EGA will immediately realize
     that such a program cannot exist, since the EGA can only display
     16 different colors at one time...The way EGACOLRS works is by
     changing the EGA's pallette while the electron beam is moving down
     the screen.  The pallette is changed between every row of blocks
     by very carefully watching the horizontal retrace (available on an
     EGA port) and counting scan lines.  This program has been tested
     on the slowest PC's (4.77 MHz 8088 machines).

Source suitable for Turbo C is included.

On my IBM PS/2 model 70 equipped with VGA display hardware, I saw two
sets of flickeering blocks superimposed but not aligned correctly,
giving what looked like 56 multicolored blocks in 8 columns and 7
rows.  When I exited the program the display stabilized and gave 64
clean colors in 8 rows and 8 columns.  Apparently there is some
interaction with the VGA hardware.  I don't have pure EGA here to test
with.  Hope it works for you.

Checksums obtained with the 4.3BSD "sum" or System V "sum -r" command.

checksum     size (bytes)  file (between BEGIN--cut and END--cut lines)
   19318        17927      this uuencoded posting

checksum     size (bytes)  file
    9713        12990      egacolrs.arc

-- R.D.
]
BEGIN--cut here--cut here
begin 644 egacolrs.arc
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
>`PH,<I"2O,IU(QWY2$A&4I*,Y"`&,8"!#:JJ`1H`
`
end
END--cut here--cut here