home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HomeWare 14
/
HOMEWARE14.bin
/
print
/
ljvga200.arj
/
LJVGA.TXT
< prev
next >
Wrap
Text File
|
1993-06-28
|
62KB
|
1,599 lines
LJVGA: VGA Print Screen Utility
Version 2.00
Copyright 1991-1993 Ares Technologies. All Rights Reserved.
This document was produced in Microsoft Word for Windows 2.0 and
typeset on an HP LaserJet III.
We use only high-quality Maxell brand diskettes.
VGA is a trademark of International Business Machines
Corporation.
Hewlett-Packard, HP, and HP LaserJet are registered trademarks of
Hewlett-Packard Corporation.
Microsoft, Windows, and Word for Windows are registered
trademarks of Microsoft Corporation.
Maxell is a registered trademark of Maxell Corporation.
All other trade names mentioned in this document are the property
of their respective holders.
INTRODUCTION
LJVGA is Terminate-and-Stay-Resident (TSR) program that allows
you to print any VGA or Super VGA screen to an HP Laserjet or
compatible printer. With a memory overhead of only 9k minimum,
you can print anything you can display on your VGA card -
graphics, text, even hi-res text and 256-color screens!
LJVGA is simple to use. Just run the command LJVGA, and you're
ready to print anything! Hitting the Print Screen key (PrtSc)
will activate LJVGA, causing it to print your current screen to
the printer. Text screens print just like they look, with lines
and other special characters you don't usually get. Graphics
screens are automatically scaled to the resolution and page you
choose.
There are no special tricks to remember, no special hot-keys to
memorize. LJVGA does not interfere with the way you normally
work, it simply waits in memory until you hit the Print Screen
key. Nothing could be simpler!
FEATURES
LJVGA is without a doubt the best value available in print screen
software. The small memory requirements provide you with
tremendous power and flexibility. Just look at the options you
get!
+ Fast printing of any screen, graphics or text, at any
resolution, in any orientation,
+ Support for the new HP LaserJet 4,
+ 7 varieties of dithers, contrast and brightness controls,
and more for unprecedented image control,
+ Robust printer control including 4 orientation printing,
support for multiple page sizes, and more,
+ Intelligent screen support, including the ability to print
any user-defined rectangular area,
+ Advanced algorithms for page-fill and image aspect
correction,
+ Color plane control for printing color separations,
+ Load into UMB's to save precious memory,
+ Complete TSR control - enable, disable, enable, and more,
+ And much, much more!
WHAT'S NEW?
LJVGA has been completely rewritten for this release. The result
is a program that is leaner, faster, and much more capable! If
you have used LJVGA before, you will notice a greatly expanded
option set. These new options give you much greater flexibility
than ever before.
Many parts of the program have changed, but most of the changes
should be transparent to you. There are some points you should
be aware of, however.
+ The options are now case sensitive. "-a" is different from
"-A". This change was necessary to support the expanded
option set.
+ Options are now "sticky." This means that once you set an
option, it will not change until you tell it to, no matter
how many times you run LJVGA!
+ LJVGA now has a highlight bar to show you how the print is
progressing.
+ You can now print any user-defined rectangular screen
portion.
LJVGA FILES
The following files are part of LJVGA. Depending on how you
received LJVGA, you may have slightly different files, and you
may receive the files either compressed or on diskette.
INSTALL.BAT* The automatic installation batch file.
STAMP.COM* The registration stamping utility. Use this
file to register new copies of LJVGA.
LJVGA.COM The LJVGA program file. This is the main
program.
LQVGA.COM The LQVGA program file. This is the
companion utility for dot-matrix printers.
See LQVGA.TXT for more information.
LJVGA.TXT The LJVGA manual.
LJVGA.PCL* The LJVGA manual in HPPCL format. Copy this
file to your printer for a high-quality
printed manual.
LQVGA.TXT The LQVGA manual. Read this manual for more
information on LQVGA.
REGISTER.TXT The registration file. Complete this file
and send it in to register a new copy of
LJVGA.
SYSOP.TXT The sysop and distributor registration form.
Complete this form and send it in if you are
a shareware distributor.
DISTRIB.TXT The distributor list. This file lists public
distributors of Ares Technologies products.
README.TXT*** This file contains information about the
latest changes to LJVGA.
CHANGES.TXT*** This file contains the updated release
history for LJVGA.
DESC.SDI** This is an information file for BBS systems.
FILE_ID.DIZ** This is an information file for BBS systems.
LJVGA???.ZIP* This is the shareware version of LJVGA.
Upload this file to your favorite on-line
services.
LQVGA???.ZIP* This is the shareware version of LQVGA.
Upload this file to your favorite on-line
services.
* These files are only available with the diskette version.
** These files are only available with the compressed version.
*** These files are present only if needed.
REQUIREMENTS
LJVGA is very flexible and runs on most PC compatible systems.
However, you must have the following requirements to run LJVGA:
An 8086 or better CPU.
DOS 3.0 or later.
A VGA or SuperVGA video adapter.
An HP LaserJet, LaserJet 4, DeskJet or compatible printer.
9-30k memory depending on the options selected.
LJVGA cannot print Windows screens or screens created by many
popular games. These programs capture control of the computer so
that LJVGA cannot function. Note that no harm will result if you
attempt to print while running such programs, however, LJVGA will
never activate and cannot print.
INSTALLATION
Installation of LJVGA is quick and easy. You must have the
diskette version of LJVGA to use the automatic installation.
Just insert your diskette in your A: drive and type
a:install a: c:\ljvga
This will install LJVGA to the LJVGA directory on your C: drive.
If you have different installation requirements, use the
following command:
d:install d: <destination>
where d is the drive containing the installation diskette, and
<destination> is the directory where you want to place the LJVGA
files.
INSTALL will copy the program files onto your hard disk and run
the registration stamping utility to customize your copy of
LJVGA. If you are installing LJVGA for the first time, you will
be asked to enter your name. Enter the name your software is
registered under - either your name or your company's name.
After you do this, your copy of LJVGA will be customized for you.
If you want LJVGA to load every time you start your computer, you
will need to modify your AUTOEXEC.BAT. Using any text editor,
open your AUTOEXEC.BAT file (located in the root directory of
your boot disk) and add the following lines to the end of the
file.
SET LJVGA=
C:\LJVGA\LJVGA
If your LJVGA is located in a directory other than C:\LJVGA,
modify the above lines appropriately. Save the file and reboot
to load LJVGA! If, once you have used LJVGA, you discover that
you use certain options frequently, you can edit your
AUTOEXEC.BAT and place the options at the end of the line that
reads "SET LJVGA=". Then these options will take effect every
time you run LJVGA!
To print the formatted manual (registered versions only), change
to your LJVGA directory and enter the following command.
copy /b ljvga.pcl lpt1:
USING LJVGA
Using LJVGA is simple. To load LJVGA into memory, just enter the
command
LJVGA
from the directory where LJVGA is located (usually C:\LJVGA).
LJVGA will load with its default options, and is ready for use.
Now whenever you press the Print Screen key, LJVGA will activate,
producing a high-quality of your computer screen.
You can modify the default options by using a combination of
command-line switches, either the first time you run LJVGA, or
later to modify the options already loaded in memory. LJVGA
cannot be loaded twice. If you run LJVGA after it has been
loaded, it will update the copy already in memory.
If you need to remove LJVGA from memory after you have loaded it,
enter the following command from the directory where LJVGA is
located.
LJVGA -u
If no other TSR's have been loaded after LJVGA, it will unload
itself, releasing any resident memory and returning Print Screen
control to your system BIOS.
LJVGA supports several different command-line switches. These
can be entered alone or as a group to change the default behavior
of LJVGA. Be aware that LJVGA retains any options you set until
you unload it from memory, or until you turn the computer off.
Therefore, if you set any special temporary options, you must
remember to reset them when you are done. See the next section
for a complete description of the available options.
LJVGA ENVIRONMENT VARIABLE
If you have any options which you use every time you run LJVGA,
use the DOS environment variable "LJVGA" to set these options
permanently. Each time LJVGA loads, it will search the
environment for this "LJVGA". If you have set this variable,
LJVGA will process any options set before processing the command-
line. Thus in effect you create new defaults for LJVGA.
For example, if you commonly use Floyd-Steinberg dithering with
the brightness set to 10%, you may find yourself entering the
command
LJVGA -a2 -b10
very frequently. Instead, set the "LJVGA" environment variable
in your AUTOEXEC.BAT as follows.
SET LJVGA=-a2 -b10
Enter the options just like you would on the command-line. Now,
every time you run LJVGA, it will use these options by default!
Note, however, that you can override these options either by
using the "-I" option to ignore the environment settings, or by
overriding the particular option on the command-line. For
instance, the command
LJVGA -b20
will still choose Floyd-Steinberg dithering as specified in the
environment, but it will set the brightness to 20%. The option
entered on the command-line replaces the matching option in the
environment.
OPTION REFERENCE
LJVGA supports a rich set of options which allow you to alter its
behaviour to suit your needs. This section lists those options,
what they do, and how to use them. By using a combination of
these options, you can tailor LJVGA to almost any print screen
task.
All LJVGA commands follow the syntax
LJVGA [switches]
where [switches] is optionally any combination of the options
listed in this section. Each option must be separated from the
others by a space, and must have no spaces in it.
Most options are "sticky", i.e. once you set them, they remain in
effect until you explicitly reset them, unload LJVGA, or turn off
the computer. Some options are only effective the first time
LJVGA is loaded and cannot be used to modify a previously loaded
version. These options are noted in their descriptions.
Note also that all options are case sensitive. In other words, "-
a" is different from "-A". This is necessary because of the
large number of options LJVGA supports. Be careful when you are
entering options. If you enter an option in the wrong case, you
may get unexpected results!
The following conventions are observed for the options presented
in this section. Note that when an option requires an argument,
you should not type any space between the option letter and its
argument.
-V Simple options are presented as you should enter them.
These options take no arguments.
-h± Options marked with the ± symbol accept either the "-"
or "+" characters as arguments. Use "-" to turn the
option off, and "+" to turn it on. You may also turn
the option on by omitting the argument. (No argument
is the same as "+".)
-Yx Options with the "x" symbol accept a single letter as
an argument. The possible arguments will be listed for
you under each appropriate option.
-Fxxx Options with the "xxx" symbol accept a string of
characters as an argument. This form is commonly used
for file names, etc.
-aN Options with the "N" symbol accept a number as an
argument. Only whole numbers are allowed.
-sx,x Options with a comma indicate a list of arguments.
The arguments themselves will be of another type listed
here. When you encounter this form, you may enter a
list of arguments of the appropriate type with commas
between them. Do not include any spaces! Typically,
you can omit parts of the list by leaving the value
blank - but make sure you still include the leading
commas. You may also usually omit the end of the list
and any trailing commas.
! Important comments are marked by a flag. You should
take should take special note of any information in
these sections.
The options are grouped according to four major categories. The
Operational Group contains options which affect the way LJVGA
loads, unloads, and runs. The Image Control Group contains
options which affect the way LJVGA renders the screen image. The
Printer Control Group contains options which affect the way LJVGA
handles printing. Finally, the Screen Control Group contains
options which affect the way LJVGA handles the VGA hardware.
Operational Group
These options affect the way LJVGA loads, unloads, and runs.
Various informational options are contained in this group.
-? Print synopsis.
This option prints a copyright notice and a short
summary of options. No other action is taken if you
use this option.
-D± Enable debugging kernel
This option will cause LJVGA to print additional
debugging information. This option must be specified
the first time LJVGA is loaded to enable debugging
support. Thereafter it can be disabled with the "D-"
option or re-enabled with the "D+" option.
When debugging is enabled, LJVGA will produce an extra
page containing information about the state of your VGA
card each time you press the Print Screen key. This
option should be used on the advice of Ares
Technologies personnel to assist in resolving printing
problems.
-D+ Enable debugging.
-D- Disable debugging (does not free up the additional
memory).
-H Load into high memory
This option will cause LJVGA to load into upper (UMB)
memory if enough memory is available. If LJVGA cannot
load itself into high memory, it will print a warning
and load in lower memory.
! It is recommended that you use this option instead of
utilities such as "LOADHIGH". LJVGA has an advantage
over such programs in that it only installs its
resident portion into high memory. Third-party
utilities attempt to place all of LJVGA in high memory
and may fail.
-I Ignore environment settings
This option causes LJVGA to ignore any options set in
the "LJVGA" environment variable. Only command-line
options will be processed.
-Q Quiet (no load messages)
This option causes LJVGA to load without displaying any
messages or errors.
-V Verbose (load messages)
This option causes LJVGA to print a summary of options
in effect after loading.
-Yx Conserve memory
This option controls the amount of memory allocated to
LJVGA. Normally LJVGA allocates as much memory as it
requires for any possible print job. This option
allows you to reduce the memory assigned to LJVGA by
sacrificing the dither buffers. This prevents you from
using the advanced dithers.
2 Normal memory. All dithers are available.
1 Medium memory. Only the halftones and Floyd-
Steinberg dithering are available. (dithers 0-2).
0 Small memory. Only the halftones are available.
(dithers 0 and 1).
! The conserve memory option is only valid when LJVGA is
first loaded. This option cannot be changed once LJVGA
is loaded.
DEFAULT: -Y2
-Z Reset default options
This option resets all internal LJVGA settings to their
defaults. If this option appears anywhere on the
command-line, the internal settings are reset before
processing any new environment and command-line
settings.
-d Disable
This option will cause LJVGA to return control to the
previously loaded print-screen routines (usually in the
system BIOS). This option does not remove LJVGA from
memory.
-e Enable
This option will enable LJVGA if it has been previously
disabled. LJVGA will regain control with the settings
it had when it was disabled.
-n Instant print (non-resident)
This option will cause LJVGA to immediately print the
current screen without becoming resident. This option
can be used to run LJVGA from batch files, and could be
used to create a primitive file printing program. This
option will cause LJVGA to ignore any previously loaded
copy, and will use only default options and options set
on the command-line.
-h± Enable highlight bar
LJVGA normally displays a highlight (progress) bar when
processing a graphics screen. This bar lets you know
the progress of the print screen. This option allows
you to disable the progress bar.
-h+ Enable highlight bar.
-h- Disable highlight bar.
DEFAULT: -h+
-q Query current setting
-qx Query options
This option serves two roles. When specified with no
argument, this option will cause LJVGA to display a
summary of the current settings. This is the same
summary available with the Verbose option (-V).
This option is also used to display help on the other
options. To get help on an option, specify the option
letter as an argument to the "-q" option. For example,
to get help on the available dither algorithms (option
"-a"), specify the option "-qa".
! When this option is specified, no other processing
occurs. Processing does occur when the Verbose option
(-V) is set.
-u Unload from memory
This option will disable LJVGA and remove it from
memory. LJVGA will return Print Screen control to the
previously loaded print-screen routines (usually in the
system BIOS). LJVGA will only unload if it is the last
TSR loaded.
Image Control Group
This group contains options which affect the way LJVGA renders
the screen image. Brightness, contrast, dither, and color
controls are contained in this group.
-Cxxx Set color mask
This option allows you to specify which of the RGB
color planes to print. This option can be used for
advanced screen manipulation, or for printing RGB color
separations.
To set the color planes to print, specify any
combination of the letters "R", "G", and "B". For
example, set the option "-CR" to print only red, or "-
CRGB" to print all colors.
DEFAULT: -CRGB
-aN Set dither algorithm
This option allows you to select the method LJVGA uses
for creating the output image. The "dither" is the
method by which LJVGA determines the pattern of dots to
print to simulate different colors. The different
algorithms produce different results and are useful for
different types of applications. Experiment with these
options to see which works best for you. Possible
values for N are listed below.
0 Halftone. This is the fastest dither pattern.
This pattern produces different size dots
resulting in an image similar to the pictures in a
newspaper.
1 Bayer algorithm. This is a good, fast general-
purpose algorithm and is characterized by cross-
hatch patterns in the output.
2 Floyd-Steinberg algorithm. This dither method is
slower than the Halftone and Bayer algorithms, but
produces much better output for continuous-tone
images. This is the same algorithm used in the
original versions of LJVGA.
3 Burkes algorithm. This dither method is superior
to the Floyd-Steinberg algorithm, but is slower
and requires more memory.
4 Sierra algorithm. This dither method is superior
to the Burkes algorithm, but is slower.
5 Jarvis algorithm. This dither method is superior
to the Sierra algorithm, but is slower.
6 Stucki algorithm. The Stucki and Jarvis
algorithms are approximately equal in quality and
speed. Stucki produces slightly different results
than Jarvis, and thus may be suitable for
different applications.
DEFAULT: -a0
-bN Set image brightness
This option allows you to change the percentage of
brightness of the printed output. The output can be
made "blacker" or "whiter" with this option. Possible
values for N range from -100 to 100. Negative values
increase the black level, with -100 corresponding to a
completely black image. Positive values increase the
white level, with 100 corresponding to a completely
white image. 0 is the default and results in no
adjustment.
! At 300 DPI and above on most laser printers, the black
dots tend to overwhelm the white space, resulting in
fairly dark images. Certain dither algorithms
aggravate this problem. This can be compensated by
increasing the brightness. Good results can usually be
achieved by increasing the brightness by 10-25%.
DEFAULT: -b0
-cN Set image contrast
This option allows you to change the percentage of
contrast of the printed output. Areas of similar color
can be blended or accentuated using this option.
Possible values for N range from
-100 to 100. Negative values decrease the contrast,
with -100 corresponding to 50% grey output. Positive
values increase the contrast, with 100 corresponding to
an image with only pure black and white. 0 is the
default and results in no adjustment.
DEFAULT: -c0
-g± Suppress background
Some screens have large areas of background color that
are not desirable to print. This option suppresses the
printing of those areas, instead printing white where
the background appears.
! This option requires that the graphics program in use
obey the VGA conventions for background color. This is
usually the case. Also note, however, that the
background color can be used as a valid color in the
image itself. LJVGA cannot detect this and will
suppress the color anywhere it appears.
DEFAULT: -g-
-i± Invert image
This option will invert the colors for graphics screens
so that white on the screen will print as black and
vice-versa. Other colors are similarly reversed,
printing a "negative" of the screen image.
DEFAULT: -i-
-sx,x Set scaling
This option allows you to control the size of the
printed image. LJVGA will normally scale the printed
image to fill the page, but you can scale the size up
or down with this option.
This option takes a pair of numbers representing the x-
and y-scaling respectively. Each number represents the
number of printed pixels that will be used to represent
each screen pixel in the respective direction. For
example, -s3,3 means that for each pixel on the screen,
LJVGA will print a box 3 pixels wide by 3 pixels long.
You can also specify certain special sizing characters
as shown below.
f Fill the page in the direction specified.
m Fill the page using an evenly divisible number of
pixels. By default LJVGA prints "partial" pixels
in order to fill the page completely. This is
usually invisible to the eye, but may be
undesirable in certain situations. The "m" format
prevents LJVGA from producing partial pixels.
Partial pixels will be disabled in both directions
if this format is used.
d Default. Use this format to cause LJVGA to scale
this direction to match the other. This will
preserve the correct aspect ratio.
With this option, you can set the scaling for a smaller
image or for a larger image. If you specify a scaling
factor greater than the maximum, the output image will
be clipped to the dimensions of the page.
You do not have to set both values. If either number
given is 0 or d, the scaling value for that direction
will be determined from the value for the other
direction in order to preserve the correct aspect
ratio. Setting both values to 0 will result in the
default, maximum-size image.
For your reference in determining the appropriate
scaling values, LJVGA assumes that the output must fit
on the page size selected, minus a small margin. The
number of output pixels that this represents varies
depending on the resolution chosen. Also, note that
the x and y values correspond to screen dimensions, and
thus may change depending on the page orientation
selected.
Here is a sample computation. Most laser printers can
print approximately 2450 pixels across at 300 DPI. We
want to represent 640 screen pixels across, so 2450 /
640 = 3.83. Since LJVGA only allows you to specify
full pixels, you would enter 3 for the x value. You
would enter d for the y value to cause it to be
computed from the x value to produce the correct aspect
ratio on output.
DEFAULT: -sf,d
Printer Control Group
The options in this group affect the way LJVGA handles printing.
Printer and paper selection, output redirection, and print modes
are contained in this group.
-Fxxx Print to file
This option causes LJVGA to send its output to a file
instead of the printer. To use this option, simply
specify the filename after the "-F". For example, to
send output to the file "screen.prn", use the option "-
Fscreen.prn". To cause LJVGA to print to the printer
again, specify "-F" without a filename.
-F<filename> Print output to <filename>.
-F Print output to the printer ports.
! Use this option with care. If the specified file
already exists, LJVGA will overwrite it.
DEFAULT: -F
-Mxxx Mask control characters
When LJVGA prints a text screen, it attempts to
faithfully reproduce the entire contents of the screen.
Some printers, however, cannot correctly print all of
the control or extended characters available on the
screen. This option can be used to prevent LJVGA from
printing these characters. Dots or spaces will be
printed to preserve the screen spacing. Use any
combination of the options shown below.
C Do not print control characters.
X Do not print extended characters.
. Print dots in place of illegal characters.
Enter "-M" with no options to print all characters.
DEFAULT: -M
-Pxxx Select page size
The option allows you to select the paper size for your
printer. This option is dependent on the printer
selected. Use the "-qP" option to list the page sizes
available for your printer. The definitions for the HP
LaserJet and LaserJet 4 are shown below. You can use
either the number or the paper name.
0, letter American letter size paper. (8.5" x 11")
1, legal American legal size paper. (8.5" x 14")
2, executive Executive size paper. (7.25" x 10.5")
3, a4 A4 size paper. (210mm x 297mm)
DEFAULT: Dependent on selected printer.
-P0 on the HP LaserJet and LaserJet 4.
-f± Form-feed page
Normally, LJVGA will eject the page from the printer
once it has finished printing the screen. This option
will cause LJVGA to leave the page in the printer until
it is full.
! You may run out of memory while printing high-res
graphics with this switch. Make sure your printer has
enough memory for the whole page!
Also, LJVGA normally resets the printer options to
produce the cleanest print possible. It cannot do this
while using the -f option. If you experience problems
printing with the -f option, manually reset your
printer before printing.
DEFAULT: -f+
-kN Print multiple copies
This option allows you to print multiple copies of a
screen. N is number of copies you wish to print. For
example, if you want five copies of a screen, enter the
option "-k5".
! Certain printers such as the HP LaserJet have the
ability to print multiple copies of a single page. If
your printer has this capability, LJVGA will use it to
print as fast as possible. If your printer does not
support this feature, LJVGA will manually produce the
desired number of copies.
DEFAULT: -k1
-lx Set printer port
This option allows you to change the printer port LJVGA
will print to. Possible values for N are 1 for LPT1, 2
for LPT2, or 3 for LPT3. You can also set N to 0 to
print to PRN:. Note: Setting the printer port to 0
will also force LJVGA into DOS print mode (explained
below).
DEFAULT: -l1
-mN Set print mode
Set print mode. This option allows you to change the
method by which LJVGA sends data to the printer. This
is useful in cases where you are using some troublesome
print redirectors or when you have a defective BIOS.
Possible values for N are listed below.
0 BIOS print mode. All printing is done through
calls to the system BIOS. This is the default
option and is the fastest print mode. This option
should be chosen except in special situations.
1 BIOS print mode with DOS Signaling. This print
mode is intended for use with some network
software. When using this mode, LJVGA prints all
data through the system BIOS, but also uses DOS to
open and close a phantom print file. This method
can be used on some networks to signal the
beginning and ending of a print job.
2 DOS print mode. When using this print mode, LJVGA
prints all data through DOS calls. This option is
included for situations in which compatibility is
a problem, or where output should be redirected to
special DOS devices. Printing is much slower in
this mode.
DEFAULT: -m0
-ox Set page orientation
This option allows you to select the direction in which
LJVGA prints graphics screens. The possible values you
can use for "x" are listed below.
0, p Portrait (upright) orientation.
1, l Landscape (sideways) orientation.
2 Reverse portrait (upside-down) orientation.
3 Reverse landscape (reverse sideways) orientation.
! LJVGA handles page orientation internally and can print
any orientation on any printer.
DEFAULT: -op
-pxxx Select printer type
This option allows you to set the printer type for
LJVGA to use. Use the "-qp" option to list the
available printer types. The currently supported
printers are listed below. You can use the number or
the name of the printer.
1, laserjet Selects the HP LaserJet and compatibles.
2, lj4 Selects the HP LaserJet 4.
! Once you have selected a printer, you cannot change to
a more capable printer without unloading and reloading
LJVGA. For example, if you originally selected the
LaserJet, you cannot change to the LaserJet 4.
However, if you originally selected the LaserJet 4, you
can change to the LaserJet and later back to the
LaserJet 4. This limitation occurs because of the way
LJVGA uses memory. Accordingly, if you plan on
switching printer type, always select the most advanced
printer when first loading LJVGA.
DEFAULT: -p1
-rN,N Set resolution
This option allows you to set your printer's graphics
resolution in dots-per-inch (DPI). Resolutions
available depend on the printer type selected. Use the
"-qr" option to list the resolutions available for your
printer. The resolutions available on the HP LaserJet
and the HP LaserJet 4 are listed below.
75 75x75 dpi
100 100x100 dpi
150 150x150 dpi
200 200x200 dpi (LaserJet 4 only)
300 300x300 dpi
600 600x600 dpi (LaserJet 4 only)
Choose the resolution you desire by setting either or
both "N" values. LJVGA will pick the closest match to
the resolution you specify and select it on your
printer. Some printers, especially laser printers, can
only print the same horizontal and vertical
resolutions. Only the first "N" value is required in
this case.
LJVGA will automatically scale graphics to the
resolution you choose.
DEFAULT: The maximum resolution available on the
chosen printer.
Screen Control Group
The options in this group affect the way LJVGA handles the VGA
hardware. The only option you will commonly use in this group is
the screen window option.
-WN,N,N,N Set screen window
This option allows you to select an arbitrary
rectangular screen area to print. The format for this
option is "-W<x start>,<y start>,<x end>,<y end>.
Coordinates are based on a "grid" system, where the
coordinates represent a "grid" around the actual screen
pixels.
For example, the default coordinates for a 640x480
screen are (0, 0, 640, 480). The coordinates for the
right side of the screen are (320, 0, 640, 480).
LJVGA will automatically scale the selected rectangle
to fill the printed page while preserving the correct
aspect ratio.
DEFAULT: Print the entire visible screen.
-vN Select VGA handling mode
This option allows you to specify the way LJVGA
communicates with the VGA card. The possible values
for N are listed below.
0 BIOS-level support only.
1 Direct register-level support.
DEFAULT: Dependent on the VGA card type selected.
-xN Set VGA card type
This option allows you to override the VGA board type
selected. The VGA card type is normally auto-detected
and set, but you can override the default with this
option. The currently supported board types are listed
below.
0 Generic VGA. This is the proper setting for all
IBM and basic VGA boards.
1 ATI chipset.
4 Paradise chipset.
DEFAULT: Autodetected.
EXAMPLES
LJVGA Load LJVGA into resident memory using the default
options.
LJVGA -l2 Load LJVGA into resident memory and redirect
output to LPT2:.
LJVGA -ol -a2 Load LJVGA into resident memory and choose
landscape graphics with Floyd-Steinberg
dithering.
LJVGA -r75 -n Print the current screen at 75 DPI. Do not load
LJVGA into resident memory.
LJVGA -s1,1 Load LJVGA into resident memory and set the
scaling so that each screen pixel is represented
by one printer pixel.
LJVGA -sd,4 Load LJVGA into resident memory and set the
scaling so that each screen pixel is represented
by 4 printer pixels down and by an appropriate
number of printer pixels across.
LJVGA -d Disable a previously loaded copy of LJVGA and
return print-screen control to the system BIOS.
set LJVGA=-b10 -ol
LJVGA Load LJVGA into resident memory and choose
landscape graphics with brightness set to 10%.
set LJVGA=-ol -a4
LJVGA -a0 Load LJVGA into resident memory and choose
landscape graphics. Choose halftone dithering.
(The command line option -a0 overrides the
environment option -a4.)
LJVGA -plj4 -Pa4 -V Load LJVGA into resident memory with HP
LaserJet 4 support and A4 paper selected.
Display a summary of the loaded options when
done.
LJVGA -Y0 Load LJVGA into resident memory and make it as
small as possible. Only halftone and Bayer
dithers will be allowed.
OPTION SUMMARY
This section summarizes the options you can use with LJVGA.
Operational Group
-D± Enable debugging kernel
-H Load into high memory
-I Ignore environment settings
-Q Quiet (no load messages)
-V Verbose (load messages)
-Yx Conserve memory
-Z Reset default options
-d Disable
-e Enable
-h± Enable highlight bar
-n Instant print (non-resident)
-qx Query options
-u Unload from memory
Printer Control Group
-Fxxx Print to file
-Mx Mask control characters
-Pxxx Select page size
-f± Form-feed page
-kN Print multiple copies
-lx Set printer port
-mN Set print mode
-ox Set page orientation
-pxxx Select printer type
-rN,N Set resolution
Image Control Group
-Cxxx Set color mask
-aN Set dither algorithm
-bN Set image brightness
-cN Set image contrast
-g± Suppress background
-i± Invert image
-sx,x Set scaling
Screen Control Group
-Wxxx Set screen window
-vN Select VGA handling mode
-xN Set VGA card type
HOW IT WORKS
LJVGA has two primary jobs - printing text and printing graphics.
Printing text is straightforward. LJVGA simply reads the text
from the screen and sends it to the printer. LJVGA has an
advantage over built-in print screen routines, however, since it
knows how to control the laser printer. Thus, LJVGA can set up
the printer to print the extended characters such as the line-
drawing characters. It can also set up the printer to handle
special screen modes such as the 132x60 text modes available on
some SuperVGA cards.
Printing graphics is where LJVGA is most useful. DOS has only
very basic graphics printing capability - and even then this
ability is only made available by loading large TSRs. LJVGA
solves this shortcoming by providing high-quality printing in a
very small package - approximately 9k minimum.
The biggest problem faced by LJVGA is how to produce a
recognizable image of the screen, which can display up to 256
colors out of a palette of 262,144 colors, on the laser printer,
which has only 2 colors - black and white. LJVGA solves this
problem by a method called dithering. This is a method by which
a larger number of colors can be represented by using patterns of
dots chosen from a smaller number of colors. In this case, this
allows up to 256 colors to be represented by different patterns
of only two colors.
Actually, colors images cannot be accurately reproduced on a
black-and-white printer (obviously!) Therefore, LJVGA actually
produces a print that is based on the intensities of the colors
on the screen. This is the same as saying that if you were to
convert the colors on screen to shades of grey, LJVGA produces an
approximation of the shades-of-grey screen. This works because
the human eye is more sensitive to certain colors than to others,
thus these colors can be approximated by different grey shades.
Thus, by printing areas of dots of varying densities, LJVGA can
approximate these grey shades. Printing just a few dots results
in bright areas, while printing more dots results in dark areas.
LJVGA uses two major varieties of dithering to produce these dot-
densities. The first, fastest, method is known as ordered or
Bayer dithering and uses a predefined pattern to reproduce each
color. This pattern contains a set of numbers representing color
threshold values. As the image is generated, each screen pixel
is compared against the threshold value at the spot in the
pattern where that pixel will be plotted. If the pixel color is
greater than the threshold value, a dot is printed. Otherwise,
no dot is printed. Thus the output image has a regular, ordered
appearance, because it is based completely on the original
pattern.
LJVGA uses two different patterns for this method. The first is
a "clustered" pattern. In this pattern, similar threshold values
are grouped closely together to produce large dots. This pattern
generates an image which appears to be made up of different sized
dots, much like the pictures in a newspaper. The second pattern
is a "dispersed" pattern which produces dots in a widely spread
pattern. Because of the way this pattern is generated, it
produces a characteristic cross-hatched output.
The second variety of dithering is known as random dithering
because it produces dots in a seemingly random manner. This
dither is also known as an error-dispersion dither because of the
way it produces dots. This method works in two steps. In the
first step, the current screen pixel is compared against a
predefined threshold value. If the color is greater than the
threshold, a dot is printed, otherwise, no dot is printed. The
second step compares what is actually printed against what should
be printed. This produces an "error" value which is divided up
and added to the neighboring screen pixels. This process is
repeated for every pixel in the image. Thus if a dot is supposed
to be dark grey and we plot black, the error value generated
reduces the chance that the next pixel plotted will also be
black, ensuring that we get an area of "dark grey" on the output.
This method is slower than the ordered dithers because of the
math involved, but because it is based on the image itself, and
not on a predefined pattern, it significantly reduces the chances
of incidental patterns ("artifacts") emerging in the final
output. LJVGA employs five of the most popular error-dispersion
patterns: Floyd-Steinberg, Burkes, Sierra, Jarvis, and Stucki.
ADDITIONAL NOTES
Printing graphics on a laser printer requires large amounts of
memory. If you are planning on printing graphics screens at 300
DPI or above, you should have at least 1 megabyte of memory in
your laser printer. 512k should be sufficient for printing text
and graphics at lower resolutions.
LJVGA is only guaranteed to work with VGA screen modes that are
supported by video BIOS. Most SuperVGA cards have extended BIOS
chips which support all of the vendor-defined modes and thus will
work with LJVGA. However, some graphics packages such as PICEM
and VPIC can directly program VGA cards into modes not supported
by BIOS. LJVGA is not guaranteed to work with these modes.
LJVGA now has built-in hardware support for the ATI and Paradise
chipsets. When boards utilizing these chipsets are detected,
LJVGA will switch to VGA register-level support to control them.
This allows LJVGA greater capability and accuracy than was
previously possible.
LJVGA can also now detect and support the 360x480x256 mode that
some programs such as PICEM use.
TIPS FOR MICROSOFT WINDOWS USERS
LJVGA can be used with Microsoft Windows to print DOS session
screens. Only full-screen DOS sessions are supported; all
Windows applications and windowed DOS sessions are handled by the
Windows native print screen handler.
To use LJVGA with Windows, you must load LJVGA before entering
Windows. You must also make a change to the PIF files used with
the applications you wish to print. To make the required change,
run the Windows PIF Editor and load the appropriate PIF file.
Once you have loaded the PIF file, choose the "Advanced" button
at the bottom of the PIF editor window. This will take you to
the Advanced Options window. Near the bottom of this window is a
section titled "Reserve Short-cut Keys". If you want to use
LJVGA with this application, make sure the "PrtSc" box is
checked. Once you have checked this box, save your changes, and
you are ready to print your application screens!
CURRENT KNOWN PROBLEMS
LJVGA cannot print text screens with redefined character tables.
All text prints rely on the fonts built into the printers.
Redefined character tables allow you to create virtually
unlimited symbols on the screen, but since the printer does not
know about these characters, it cannot print them. This problem
occurs with software such as the Norton Utilities for DOS.
LJVGA cannot print TrueColor (15 and 24 bit) graphics. Currently
only palette-based graphics are supported. LJVGA cannot handle
TrueColor graphics because the complete color information is
stored in the display memory and requires more processing to
reproduce. TrueColor support is planned for a future version.
REGISTRATION STAMPING UTILITY
All registered copies of LJVGA come with a program called
STAMP.COM. This program contains the registration information
for the registered user and can be used to register new versions
of the program which you receive from us or download from
bulletin boards.
When you register LJVGA, you can choose from three different
registration options: current version only, current and next
version, or Lifetime registration. Your copy of STAMP contains
the information necessary to update new versions of LJVGA
according to the registration option you have chosen. For
instance, if you registered version 1.50 of LJVGA for the current
version only, your copy of STAMP will work on any 1.xx version,
i.e. any version up to, but not including 2.00. If you
registered for the current version and one upgrade, your copy of
STAMP will work on any 1.xx or 2.xx version. A copy of STAMP
received with a Lifetime registration will work on any version of
LJVGA available.
To register a new version of LJVGA, place the new LJVGA.COM and
STAMP.COM in the same directory. In DOS, change to the directory
where the files are located and enter the following command.
stamp ljvga
The first time you run STAMP, it will prompt you for your name.
Enter the name your software is registered under. STAMP will
place your registration information in the new copy of LJVGA and
will inform you when it is done. If for some reason STAMP cannot
update LJVGA, such as if your registration has expired, you will
receive an error message telling you what is wrong. Now your new
copy of LJVGA is registered and ready to use!
LJVGA RELEASE HISTORY
v2.00 (930628)
The loader has been completely rewritten. The graphics engine
has been modified and extended to handle many new features. See
the documentation for a complete explanation of the new features.
v1.80 (930222) [Limited Release]
Added video mode to debugging info.
Corrected memory row-length calculations.
Added row-length to debugging info.
Added mode table search for ATI boards.
v1.78d (930115) [Limited Release]
Added the ability to detect and print graphics screens with a
screen start offset.
Modified setup and page borders for A4 paper.
v1.77 (921215) [Limited Release]
Due to continuing problems, support for interrupt 21 has been
disabled. (again)
v1.76 (921205)
Section headings have been added to the debug page.
A color table dump has been added to the debug page.
Added direct hardware reads for the screen size. This solves
various problems with some SuperVGA adapters which do not report
the screen size correctly in high resolution modes.
v1.75 (921109)
Changed invert option. Invert now inverts the color palette,
rather than the finished image. This fixes the problems with
pure-white backgrounds and the brightness/contrast controls in
inverted mode.
Corrected a bug which prevented LJVGA from activating if DOS was
active.
v1.71 (920920)
This is a maintenance release which includes only minor changes
to the documentation.
v1.70 (920818)
Added full-page scaling.
v1.61 (920814)
Added two new Bayer dithers.
Modified to keep only one dither pattern in active memory.
Increased support for older networks.
Fixed a problem with the DOS print-logging flag in Dell machines.
Added color resolution checks for certain VGA adapters.
Added ATI-specific code.
v1.53 (920627)
Added use of DOS print-screen busy flag.
Made resident section more crash-proof.
Added serial numbering.
v1.52 (920608)
Corrected color mapping for 16-color modes.
Corrected control character printing. This bug was only
noticeable on non-HP printers.
v1.50 (920422)
Added instant print option.
Added print mode option.
Added page orientation option.
Added Bayer dithers. Up to 30% faster than previous dither.
Added contrast option.
Added brightness option.
Added scaling option.
Added debugging option.
Fixed an error in the Floyd-Steinberg dithering option. Output
is now much improved.
Added better interrupt handling for improved safety and error
control.
Fixed a bug which would allow LJVGA to load when using the
enable/disable controls.
Fixed a bug which prevented LJVGA from finding a previously
loaded copy in fragmented memory.
Fixed text print routine so that control characters are printed,
not interpreted.
v1.30 (920304)
Fixed a bug with command-line parsing under MS-DOS 4.0/5.0.
Added invert option.
Added unload option.
v1.20 (910730)
Added suppress form-feed option.
v1.10 (910622)
Added the disable/enable options.
v1.00 (910326)
Added resolution option.
Added printer port option.
Added error detection for missing or off-line printers.
Added the ability to detect and update a previously loaded copy.
v0.50 (910307)
Initial release.
PROGRAMMING FOR LJVGA
You can provide advanced screen printing for your own programs
with LJVGA! LJVGA works by hooking into the standard print
screen interrupt vector, interrupt vector 5. (If you have ever
seen your computer crash and begin print-screening madly, you've
experienced interrupt 5. The microprocessor also uses interrupt
5 to signal an error.) Therefore, make sure LJVGA is loaded into
memory before you run your program. Then all you have to do to
invoke LJVGA from within your program is to generate an interrupt
5. Sample instructions appear below.
In assembler,
INT 5 ; call print screen routine
In Borland C/C++,
geninterrupt(5); /* call print screen routine */
That's all there is to it!
At the time of this writing, there is no simple way to adjust the
internal LJVGA settings from within your programs. You can,
however, change the LJVGA settings by running it with the
appropriate options via a DOS shell or an EXEC call. LJVGA will
locate the copy it has previously loaded and update it. The
updated setting will remain in memory when the DOS shell exits.
Combine this use with the Quiet option (-Q), and your users will
never be aware that you have invoked a DOS shell!
Direct API support into LJVGA is planned for a future release.
Please note that you must have a special license to distribute
LJVGA with your programs. Please contact Ares Technologies for
more information about a Reseller's license.
TECHNICAL SUPPORT
If you have any questions or comments about LJVGA, contact:
Mail: Ares Technologies
243 Fairfax Rd.
Blacksburg, VA 24060-6595
Phone: 703-552-6273
E-Mail: CIS: [73237,1572]
MHS: support @ ares
Internet: support@ares.mhs.compuserve.com
When calling for technical support, please have the following
information available:
the version of LJVGA you are using (use the -? option to
find out)
the make and model of VGA board you use
the make and model of your printer
the version of DOS you use
Ares Technologies is also available for custom programming
projects. Please feel free to contact us if you would like to
discuss your programming needs.
CREDITS
LJVGA is the result of many hours of hard work and research.
What originally began as a simple program for my own use has
expanded into a full-featured commercial program. I could not
have done it without the support of my users, and the many
positive comments I have received. This credit belongs to all of
you who have supported my efforts and made this program possible.
Please, if you find this software useful, consider registering
it. The Ares philosophy is that software should work well,
should be easily available, and should not cost a fortune. I
believe that LJVGA meets these goals. Your registration will
allow me to devote more of my time to producing LJVGA and other
quality programs.
A special thanks goes out to Don Slaymaker for his unending
patience and help in debugging the ATI-specific code sections.
To Johann Delago for yet more help in extending the ATI hardware
support, and many suggestions on additional hardware support. To
David Wright & co. - my first mass reseller. To Robert Everett &
co. for "pushing the envelope." And finally to Tom Fasulo for
the best promotional support a shareware author could ask for.
REGISTRATION
If you find LJVGA useful and convenient, a registration of $10 or
more would be appreciated.
If you send $20 or more, you will receive a disk containing the
current version of the software. You will also receive a disk
with the next major version when it becomes available.
For a fee of $50, you will receive a lifetime registration for
LJVGA. This will entitle you to every major and minor version of
LJVGA as they are released. These will be automatically sent to
you free of additional charge.
Site licenses are available for commercial and multiple user
organizations. Please read the file REGISTER.TXT for more
information.
Reseller information is available for developers wishing to
bundle pre-registered versions of LJVGA with their own software.
Please contact Ares Technologies directly for more information.
Please state the current version of the software you are using.
Send check or money order to:
Ares Technologies
243 Fairfax Rd.
Blacksburg, VA 24060-6595
You can also order LJVGA from the Public Software Library with
your Visa, MasterCard, American Express, or Discover card at one
of the following numbers. These numbers are for ordering only.
For all other information concerning LJVGA, please contact Ares
Technologies directly.
PsL Product Number: #10515
Mail: PsL
P.O. Box 35705
Houston, TX 77235-5705
Phone: 800-2424-PSL
713-524-6394
FAX: 713-524-6398
E-Mail: CIS [71355,470]
You can also register LJVGA on CompuServe in the SWREG forum. If
you have a CompuServe account, logon and type "GO SWREG". Follow
the instructions given to register your copy of LJVGA. The
registration code for LJVGA is 227. Once we receive notification
from CompuServe, your registered diskette will be sent to you
automatically.
SOFTWARE LICENSE AGREEMENT
LJVGA VGA Print Screen Utility
Copyright (c) 1991-1993 Ares Technologies. All Rights Reserved.
Notice: By using LJVGA, you agree to be bound by the terms of
this license. If you do not agree with the conditions listed
herein, you may not use LJVGA. If you have any questions
regarding your software license, please contact Ares Technologies
at the address listed elsewhere in this document.
You may use, copy, and distribute LJVGA for non-commercial
purposes only, provided the following conditions are met:
No fees may be charged for its use or distribution.
The program and accompanying documentation must be
distributed in whole, unmodified form.
Reverse compilation, reverse engineering, or any other form
of code decomposition is expressly prohibited.
Clubs, user groups, and shareware distributors may charge a
nominal fee for expenses and handling for distributing LJVGA.
Operators of electronic bulletin board systems may charge
only normal membership fees, and may not require additional
fees for specific access to LJVGA. Distributors are
encouraged to register with Ares Technologies. See the file
SYSOP.TXT for additional information.
Site and commercial licenses are available for LJVGA. Please
read the file REGISTER.TXT, or contact Ares Technologies for more
information.
Ares Technologies hereby disclaims all warranties relating to
this software, express or implied, including without limitation
any warranties of merchantability or fitness for a particular
purpose. Ares Technologies shall not be liable for any damages,
direct, consequential, or otherwise, suffered due to loss of data
or any other reason, even if Ares Technologies has been advised
of the possibly of such damage. In no event shall Ares
Technologies' liability for any damages exceed the price paid for
the license to use the software, regardless of the form of the
claim. The user of this software bears all risk as to the
quality and performance of the software.