Dec 062017
GIF displayer for CGA & printer using Floyd-Steinberg method.
File FLOYDGIF.ZIP from The Programmer’s Corner in
Category Printer + Display Graphics
GIF displayer for CGA & printer using Floyd-Steinberg method.
File Name File Size Zip Size Zip Type
FLOYD.DOC 10048 4091 deflated
FLOYD.EXE 27124 15500 deflated

Download File FLOYDGIF.ZIP Here

Contents of the FLOYD.DOC file

About Floyd 0.40

Many moons ago, I wrote a little bitty GIF viewer. I did so because I owned a
PC with a CGA, and all the GIF support I had seen for CGA was pretty lame.

I intended to add support for color displays (support IS included for MCGA and
the Leading Edge Model D -- does anyone still have one of those?), as well as
more printers. But, as with many of my projects, I abandoned the development
of Floyd and moved on to bigger and better things.

Recently, one of my hard disks died. Nothing important was lost -- or so I
thought. Just the other day, I realized that I had all of my source code for
Floyd on that drive. And me without a decent backup.

No matter, I thought. Someone by now has written a GIF viewer that produces a
better image on CGA that I could ever do myself.

Surprise. GIF viewers for CGA are STILL lame. Maybe not so much of a
surprise, though -- CGA itself is inherently lame. But people like me who are
stuck with CGA can't afford a $500 VGA package just for the sake of looking at
pretty pictures.

Fortunately, I found an old alpha test copy of Floyd that I had packaged up for
a friend of mine to test. And now, I am passing it on to you, the last three
or four people left in the world who still own PCs with CGAs. It's my way of
saying, "Hey, someone really DOES care about your crappy display." I still
haven't found the source code, but maybe if there is interest, I will do a
re-write (it was due for an overhaul, anyway, if I remember right).

You have permission to use and distribute copies of Floyd version 0.40
"(alpha)" as much as you like. YOU MAY NOT PROFIT FROM THE DISTRIBUTION OF
FLOYD. PLEASE take the time to send me a postcard with your comments to:

Larry Gilbert
PO Box 20393
Seattle WA 98102-1393

or send e-mail to me at: [email protected]

Below, I have included a slightly modified version of the original
documentation I wrote for Floyd. I have identified changes to the
documentation by enclosing them in braces [].

Two final words of warning -- (1) Floyd should work with GIF 89a; however, it
will give you a rather disturbing message (mostly hieroglyphics) if you attempt
to display a GIF 89a image. Just ignore the message, and the image ought to
look all right. (2) Floyd is good, but it's SLOW AS A SLUG.

Larry Gilbert
December 12, 1991


A high-quality color GIF viewer and printer
for the IBM PC and compatible computers

by Larry Gilbert
March 19, 1989


This software copyright 1988, 1989 by Lawrence L. Gilbert. All rights
reserved. Author grants permission to distribute unmodified copies of Floyd
and this documentation so long as no one profits from said distribution.
Preliminary releases (designated as "alpha," "beta" or "gamma") may NOT be
distributed without the express written permission of the author. [Exception:
version 0.40 (alpha). See preamble "About Floyd 0.40").]

"Graphics Interchange Format" and "GIF" are trademarks of CompuServe, Inc., an
H&R Block company. "IBM" is a registered trademark of International Business
Machines Corporation. "SPAM" is a registered trademark of George A. Hormel &


Floyd is a simple program for viewing and printing Graphics Interchange Format
(or GIF) images. It uses the Floyd-Steinberg error-diffusion algorithm to
display and print images on devices that cannot directly display the multidude
of colors supported by GIF. It can also use the capabilities of high-quality
displays, such as the VGA, to fully reproduce all colors when possible.


Floyd was created to fill several gaps perceived in the world of GIF decoders:

* Hardware-dependent images. Most GIF images are created with a
particular display or computer in mind. Floyd was designed with the
idea that the display should accomodate the image, not the other way
around. 256 colors and portrait-oriented images are displayed
correctly even on a CGA (the unfortunate author's development system

* Shareware/crippleware. Most GIF decoders require you to pay a fee;
some even require registration before you can use them to their full
capabilities. Floyd is the only free GIF decoder that includes
advanced features other programs make the user pay for, such as


Basic operation is simple. Let's say you want to display a GIF file called
"SPAM.GIF". Call Floyd by entering the command:

floyd spam

(Floyd always assumes that the file name ends with ".GIF" unless you say

Floyd counts down the lines of the image as it reads them in, and then slowly
paints it across your screen. It's a nice image, but it looks a little fuzzy
in CGA mode; you want to use all the colors available on your snappy new Blatz
VGA card. Just hit the [Esc] key to cancel the image, and enter the command:

floyd spam -d2

Now Floyd displays the image in all the glory of 256-out-of-200,000 colors. It
looks better, but that can of Spam looks a little too skinny. The image is
probably wider that the standard screen.

Just press the [S] key. Floyd clears the screen and pinches down the image so
that can of Spam looks like its normal self. Alternatively, you could call
Floyd with:

floyd spam -d2 -s

and it would have the same effect.


Floyd can be invoked with any of the following command-line switches:

-b Enables "anti-banding." Sometimes when a high-resolution image
with a dither pattern is displayed on a lower-resolution display
(such as the CGA), an undesirable Moire effect occurs in the form
of dark bands across the image. The '-b' option attempts to
compensate for this.

-c Enables contrast. Some color images may look murky on black-and-
white displays. The '-c' makes light areas lighter and dark
areas darker to bring out more detail in the image.

-d# Selects display type. When Floyd is invoked without switches or
a file name, it shows a numbered list of displays it can use.
Choose the number of your display from this list and use it in
the '-d' switch. If this switch isn't used, Floyd assumes '-d1'

-n Enables negative display. This is intended for black-on-white
displays, such as the LCD screens on laptop PCs.

-p# Selects printer. When Floyd is invoked without switches or a
file name, it shows a numbered list of printers it can use.
Choose the number of your printer from this list and use it in
the '-p' switch. If this switch isn't used, Floyd assumes '-p1'
(Epson LX-800).

-s Squeeze picture. Floyd usually fills the entire screen with an
image. This causes some images to be distorted (appear too fat,
too skinny, etc.). The '-s' option attempts to correct this.

While an image is being displayed, pressing certain keys causes certain things
to happen. These keys may be pressed at any time, even while the image is
being drawn, and they take effect immediately:

B Enables "anti-banding." This has the same effect as the '-b'
command-line switch.

N Enables negative display. This has the same effect as the '-n'
command-line switch.

P Prints the image to the type of printer specified in the '-p#'
command-line switch. It assumes that the printer is connected to
printer port LPT1.

S Squeeze picture. This has the same effect as the '-s' command-
line switch.

Esc Stops displaying images and exits to DOS.

Any Displays the next image in the file; if there are no more images,
key exits to DOS.


0.40 CGA display speed has been improved marginally to significantly. MCGA
display speed has been improved greatly, especially with 320x200 images
that do not require special treatment. BIOS compatibility has been
forsaken, since it never worked with all PCs anyway.


Support other EGA and VGA modes.

Support other printers already.

Deal with local image color maps in GIF files. (Floyd is currently too dumb to
handle them, but 99.9% of GIF files don't include them anyway.)

Buffer read operations to increase speed.

Create a command-line switch for defining the printer port.

Use a configuration file to turn on frequently-used command-line switches.
Possibly allow for defining switch settings for specific files.

Create a pleasant full-screen interface, including such goodies as file
selection from a menu and a thermometer-style gauge to show image-reading

And of course, support new displays and printers.

[None of this will happen unless someone expresses an interest in my doing
this, because it will require a complete code re-write. See preamble, "About
Floyd 0.40".]


The author welcomes comments and suggestions for improving Floyd, as well as
technical data for adding support for new displays and printers.

[All the addresses here were out of date. See preamble, "About Floyd 0.40".]

 December 6, 2017  Add comments

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>