home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1993 #2
/
Image.iso
/
lan
/
fps32d.zip
/
FPSERVER.DOC
next >
Wrap
Text File
|
1993-07-12
|
139KB
|
2,988 lines
FPServer: THE Fast Novell NetWare Print Server
Version 3.2
Documentation File (FPSERVER.DOC)
====================================================
Richard L. Hartman (RLH)
Novell Registered Professional Developer
5205 North Mulvaney Court, Spokane, WA 99212-1611
509-924-6576 (Voice) 509-926-4626 (Fax) CompuServe 76350,2275
===========================================================================
INTRODUCTION
===========================================================================
FPServer implements an EXTREMELY FAST, easy to use print server on a
standard IBM compatible personal computer. In this manner, it is very
similar to Novell's own PSERVER.EXE. However, unlike Novell's product,
FPServer has been optimized for ultra-high data throughput and ease of
control.
I carry out a great deal of research in the area of network printing. I
have spoken with equipment manufacturers, dozens of Network Administrators,
and hundreds of users to obtain an understanding of what is important in a
networked printing environment. FPServer is one result of this research:
THE definitive print server for Novell NetWare networks.
This file contains background information, a description of FPServer's
features, a complete command list with examples, and technical data on
design and architectural decisions. There is a lot of data here, and it
does not have to be read sequentially. Feel free to "scan around"!
===========================================================================
BACKGROUND (WHY IT EXISTS)
===========================================================================
FPServer is a high-speed alternative to "black box" print servers,
in-the-printer print server interfaces, and Novell's PSERVER.EXE.
FPServer's primary design goal is ULTRA-HIGH DATA THROUGHPUT; its secondary
design goal is EASE OF USE.
With all due respect to Novell (they write excellent network operating
systems), their PSERVER.EXE is simply too slow for today's printing
environments. Running on an 80386DX-40 PC with light network traffic,
Novell's PSERVER.EXE might attain 6K bytes per second on a parallel port (a
more typical figure is 1500-2000 bytes per second). With a typical 300x300
DPI A-size graphic being 400K-500K or larger, Novell's PSERVER can consume
four minutes or more just transferring the data to the printer. Its
console (screen and keyboard) also leave a lot to be desired.
Standalone, "black box" print servers (such as Intel's NetPort and
Datacom's Series 8000, among others) also provide too little bandwidth for
today's applications. Their data rates (typically 8000 bytes per second)
are only marginally better than Novell's PSERVER.EXE - still far too slow
for near-megabyte print jobs - and they are generally limited to one or two
printers per box.
Furthermore, neither "black box" nor in-the-printer interface cards have
means for intelligent local control. Their consoles are even worse than
Novell's PSERVER - they have none at all. Controlling these devices
involves running back and forth between the printer and a PC: You can't see
what's happening when you're at your workstation, and you can't do anything
about it when you're at the printer! Such inconvenience and limited speed
hardly justifies a price tag of $500 or more EACH.
In contrast, FPServer can sustain data rates of 100,000 BYTES PER SECOND on
a 386DX-40's parallel ports. This reduces the transfer time of that 500K
graphic from four minutes to FIVE SECONDS (assuming the printer can accept
data that rapidly).
FPServer can drive up to SEVEN printers from a single host PC. And
FPServer suffers little or no throughput impact when servicing multiple
print devices. A dynamic linking/unlinking algorithm eliminates the
overhead associated with idle print devices, and a real-time throughput
analysis algorithm optimally distributes available bandwidth between active
print jobs.
FPServer puts the limiting factor where it belongs: your printer, instead
of your network. FPServer's data rate is nearly always faster than that of
the printers it is driving, which means shared printers are kept busy more
of the time and users are kept waiting less of the time. Even an old
8088-based 4.77MHz IBM PC can sustain nearly 10,000 bytes per second -
faster than Novell's PSERVER and most other devices - while providing
superior on-the-spot job control.
The bottom line: FPServer eliminates the network printing bottleneck and
gives users control over their print jobs.
===========================================================================
ASSUMPTIONS ABOUT THE READER
===========================================================================
The material in this file has been written with the assumption that the
reader has a solid understanding of the IBM Personal Computer architecture,
DOS usage, and Novell NetWare operation. In particular, it is assumed that
you already have an operational NetWare network with established print
queues running through some form of existing print server.
Many of the operations associated with setting up and maintaining printing
services on a NetWare network require Supervisor-level authority. If you
are not your Network's Administrator, you may need to involve him/her in
the process of installing FPServer the first time. (Subsequent changes to
FPServer's operation may be implemented without Supervisor assistance.)
Please consult the documentation for these other products if you have
questions regarding them.
===========================================================================
NECESSARY EVILS
===========================================================================
My apologies for the following sections, but they are unfortunately
necessary in today's world. Please read them and then move on to the more
interesting material which follows.
COPYRIGHT
---------------------------------------
All of FPServer's files and materials are copyrighted. The UNALTERED,
UNMODIFIED self-extracting file is hereby placed in the public domain; it
may be copied, distributed, and used without restriction as long as it is
not changed or modified in any way. You are free to upload the unmodified
self-extracting file, IN ITS ENTIRETY, to bulletin boards and other "common
access" systems. All other rights to FPServer are specifically reserved.
Registration and the purchase of one or more SoftKeys is required to obtain
uninterrupted use of FPServer. The above release to the public domain does
NOT include such uninterrupted use nor the availability of SoftKeys.
Please read the REGISTER.DOC file for complete registration information.
FPServer represents a significant investment of my time and effort. It is
my sincere hope that you will benefit from your use of this program. I
would appreciate you giving copies of FPServer to anyone (everyone!) you
know that uses Novell NetWare. Doing so costs you exactly nothing and
makes it possible for me to continue writing such software.
Constructive comments may be incorporated into future upgrades, so your
input is valuable. Please submit them via (in order of preference)
CompuServe, fax, mail, or voice (see above for numbers and addresses).
Please see "About the Author" at the end of this file for more information
on my consulting services. OEM and custom versions of FPServer are also
available. Thank you for your support!
DISCLAIMER
---------------------------------------
FPServer, and all of its associated files and programs, is provided without
warranty of any kind. The user of this software is solely responsible for:
A) determining its suitability for any purpose, B) the accuracy of its
operation, and C) the results obtained by its use.
As written, FPServer does not contain any "viruses" or other malicious
routines. However, such routines do exist and can be "attached" to
otherwise benign and beneficial programs, often without obvious indication.
FPServer does not attempt to detect the presence of such additions. It is
solely the user's responsibility to determine the "purity" of this software
and its associated files.
===========================================================================
DESIGN PHILOSOPHY AND FEATURE LIST
===========================================================================
As stated above, FPServer has two design goals: Ultra-high data throughput
and ease of use. All Engineering projects involve some compromises (to
which we refer as "design decisions" or "tradeoffs"). For FPServer, every
such compromise was resolved primarily in favor of speed and secondarily in
favor of ease of use.
Based on this philosophy, FPServer includes many features not available in
other print server environments - and does NOT include some which are less
important. So that you may obtain better insight into the philosophy of
FPServer, the following feature list describes some of these differences
(and my reasons for them).
CONSOLE I/O
---------------------------------------
The FPServer console (screen and keyboard) system includes a detailed
display for each port and queue being serviced. This is in sharp contrast
to the consoles offered by other programs (which often include little to no
useful data) or "black boxes" and their printer-interface lookalikes (which
offer no console at all!).
FPServer's main display includes:
* The name of the print queue being serviced by each port
* Each port's hardware status lines, including OFFLINE, PAPEROUT,
ERROR, and DTR OFF
* The owner, print job title, and print job size of the job currently
being printed
* The number of bytes which have been transmitted for the job currently
being printed
* The owner, print job title, and average throughput for the most
recently completed print job
You may "zoom" on any of FPServer's ports to obtain a closer look at that
particular print queue. The zoomed view includes all of the information
described above, and adds a display of pending print jobs in the queue.
Once in the zoomed view, you may select the current or a pending job (if
any) and perform various job-related operations right from FPServer's
console. That's right - you are able to control your printing while still
standing next to the printer, instead of running back and forth between the
print server and your PC.
DELETE PRINT JOBS - GRACEFULLY
----------------------------------------
If you've ever experienced a runaway print job, you know how inconvenient
such a situation can be. The print job data is spread out all over - some
still in the print queue on the file server, some in the print server, and
some in the printer. To delete the job and stop wasting paper, you have to
stop the printer, stop the print server, rush back to your PC, run Novell's
PCONSOLE, delete the job from the print queue, restart the print server,
and restart the printer. What's worse, other print jobs being serviced by
the print server are interrupted when you shut it down to clear its memory
(this can make you VERY unpopular!).
FPServer eliminates the "runaway runaround" by allowing you to delete print
jobs right from the print server console. When "zoomed" on a single port,
you may delete any print job (including the current one) by highlighting it
and selecting Delete from a menu. ALL traces of the job are deleted: The
printer (if parallel) is reset, FPServer's buffer is emptied, and the job
is deleted from the print queue. A message reminding you to reset the
printer manually (if necessary) is displayed on-screen and the port is held
idle for a programmable period of time so you may reset the printer or
manually flush its input buffer.
RESTART PRINT JOBS - CONVENIENTLY
----------------------------------------
FPServer's ability to delete print jobs is nice when you want to completely
discard a runaway print job. But what if you still need a copy of it? You
probably sent it because you needed it - and the fact that something went
wrong doesn't mean you don't need it anymore.
For this reason, FPServer also allows you to RESTART print jobs. When you
select this option, FPServer holds the port idle for a programmable length
of time - long enough for you to reset the printer, reposition the paper,
or whatever - and then restarts the job from the very first byte. A
special message is displayed during the reset pause as a reminder to reset
the printer.
PRIORITIZE PRINT JOBS - IMMEDIATELY
----------------------------------------
For those occasions when there's a large number of jobs ahead of yours -
but YOU'RE the only person willing to stand by the printer and wait -
FPServer allows you to prioritize your job to the top of the queue. The
current print job will be finished as usual (FPServer will not interrupt a
job in progress) but the NEXT job to be serviced will be the newly
prioritized one.
SIMPLE CONFIGURATION
---------------------------------------
FPServer's operational characteristics are controlled by two methods:
commands in an ASCII configuration file (FPSERVER.CFG) and commands
included on the DOS command line when FPServer is started. All FPServer
commands are "human readable", allowing you to easily review the print
server's configuration.
Other file servers obtain their data from encoded files which can be
manipulated only through ADDITIONAL programs. The need to run separate
software to change - or even just review - the print server's configuration
makes setup and maintenance a lengthy, frustrating process.
FPServer first processes the contents of its FPSERVER.CFG file (if
present), then interprets command line parameters (if any). Later commands
take precedence over earlier versions of the same command so you may
temporarily modify FPServer's behavior via the DOS command line without
editing any files or running any other programs. You do not even need to
be logged in to the network; just override (or supplement) the FPSERVER.CFG
file right on the command line and press Enter.
CLEAN EXIT TO DOS
---------------------------------------
FPServer allows its execution to be terminated via an exit menu, just as
any other well-behaved program. Doing so immediately returns the machine
to DOS - cleanly, with no "resident" code modules or "captive" memory.
Other print server programs offer no clean exit to DOS, and sometimes even
require the machine to be rebooted - an inconvenient and sometimes lengthy
process.
The ability to cleanly exit to DOS is particularly helpful when used in
conjunction with FPServer's command line parameters (see above). You may
experiment with various configurations by just exiting back to DOS,
pressing F3 (get last command line), editing the command line parameters,
and pressing Enter to restart FPServer.
INTELLIGENT REAL TIME OPTIMIZATION
---------------------------------------
FPServer's primary design goal is high bandwidth. Unfortunately, the best
way to achieve high performance is dependent on many different parameters.
Some, like machine type, clock speed, and average network latency, do not
vary greatly and could be entered by the user. However, other parameters
such as typical job size and the speed at which print devices accept data
can vary dramatically from day to day and print job to print job. To make
matters worse, those parameters which have the greatest effect on
throughput are also those which are the most difficult to predict - and
that have the widest spectrum of possible behavior.
To address this, FPServer incorporates a two layer real-time optimization
algorithm based on actual network and print device performance. Port
throughput (the speed at which each print device is accepting data) and
network throughput/latency (the speed at which the network can supply data)
are used to control the amount of processor resource dedicated to each
task. FPServer constantly monitors these conditions and adjusts its own
operating parameters to assure that the maximum possible data rate is
maintained on all ports.
NUMBER OF PORTS
---------------------------------------
FPServer will support up to seven ports on a single machine - three
parallel and four serial. These ports do not require interrupt lines
(IRQ's) and may be based at any address in the host machine's I/O space.
The mixture of three parallel and four serial allows a print server host to
be constructed using commonly available and inexpensive "combo I/O" cards.
Further increasing the number of supported ports would have forced many
other design decisions to be adversely compromised. Ultimately, I decided
that if FPServer could be made to run fast enough, it would be more
effective to use another old PC with standard (and inexpensive) parallel
and serial hardware as a second Print Server.
MULTIPLE FILE SERVERS
----------------------------------------
More installations are moving to multi-server environments as networks
become more common. In support of this, FPServer now services up to seven
separate file servers simultaneously. Each port may be service jobs from a
separate print queue on a separate file server - you do not need to
consolidate all of your print jobs on a single file server.
You can also have multiple ports service a common print queue to reduce
print job dwell time. If you have duplicate printers, you can multiply the
bandwidth of print job servicing by specifying the same print queue for
multiple ports.
PROGRAMMABLE PORT ADDRESSES
----------------------------------------
FPServer allows you to explicitly specify the I/O addresses for each active
port. In addition to providing support for hardware which uses
non-standard I/O, this allows you to logically rename ports regardless of
their physical addresses.
Programming port addresses is an option, not a requirement. If you do not
specify an address for a port, FPServer will automatically derive the
address from the BIOS data area in low memory.
Regardless of where the address originated (your command or BIOS), FPServer
always confirms the presence of physical hardware before enabling it for
use. This prevents "artificial" ports which are generated by some programs
from causing print server or network problems.
PORT INTERRUPT LINES NOT REQUIRED
---------------------------------------
FPServer does not require interrupt-driven parallel or serial ports, and
ignores such interrupts if they are generated. FPServer's architecture
runs without interrupts for three reasons: 1) Many host PC's do not have
seven interrupt lines available for such ports; 2) Most I/O cards do not
support seven individual interrupt choices; and 3) FPServer's output
routines are so tightly optimized for speed that the latency associated
with servicing interrupts would actually REDUCE throughput!
DIRECT SUPPORT FOR FIFO'D PRINTERS
----------------------------------------
A recent development in high-speed (and especially laser) printers is the
use of a small FIFO as the front end of the parallel port. These buffers
generally accept 8-32 bytes at extremely high data rates, store them
internally, then interrupt the printer's microprocessor only when the FIFO
is full. This dramatically improves the efficiency of the printer's CPU.
To get maximum performance from these new printers, FPServer analyzes the
data-reception behavior of parallel printers and optimizes its output
algorithm for FIFO-based operation if detected.
ROBUST VIDEO SYSTEM
----------------------------------------
This release incorporates a vastly improved video system that has proven
compatible with ALL video interfaces available for testing (even those
non-standard AT&T 6300's!). The new system automatically detects the type
of interface and modifies its behavior accordingly. All standard video
systems are supported: MDA, MGA, CGA, EGA, VGA, and SVGA, on any type of
monitor compatible with the video interface.
Active refreshing is also incorporated to maintain image accuracy. Even if
no data has changed, the screen is completely rewritten on a periodic basis
in case shell errors or other anomolies cause display corruption.
FULL COLOR SCREEN DISPLAY
----------------------------------------
The new video system includes FULL COLOR support for machines equipped with
color interfaces and monitors. Colors are used to highlight information
and warning messages; blinking is used to highlight errors and
time-sensitive conditions.
Of course, monochrome-equipped systems are detected and accommodated as
well. Brightness and blinking are used in place of the color system's
color attributes.
PROGRAMMABLE PRINTER RESET DELAY
----------------------------------------
When you delete or restart a print job, it may take you a few seconds to
reset the printer, reposition the paper, and otherwise prepare to continue
servicing print jobs. Since every printer is different, FPServer allows
the duration of the "job delete" and "job restart" delays to be programmed
individually for each port. Any value from 1-999 seconds may be specified,
and during the delay the affected port will display a special message
reminding you of the reason for the pause in job servicing.
PROGRAMMABLE QUERY DELAY
----------------------------------------
FPServer queries file server(s) periodically for new print jobs which
require servicing. While the amount of network cable traffic generated by
such queries is small, a separate query is generated for each active port.
Such constant scanning of print queues can generate a tremendous amount of
network traffic - more than is justified for the few seconds saved at the
start of a print job.
Therefore, when a print queue query finds no print jobs to service,
FPServer delays before checking that print queue again. FPServer allows
you to increase this delay, if you wish, from its default of one-half
second to any value in the range 1-999 seconds. A separate value for each
port allows you to tune the delays based upon the type of printer and its
frequency of use. More active printers may benefit from shorter delays
(more frequent querying), while less-active printers may do just fine with
only an occasional query.
Note that setting a port's query delay only affects the potential delay
until a print job is started. Once a job has been initiated, it runs at
full speed regardless of the query delay setting.
PROGRAMMABLE POST-JOB DELAY
----------------------------------------
Here's another network printing suggestion straight from the people who
know best: You, the actual users. More and more printers are providing
multi-language support (PCL, PostScript, etc.) by "analyzing" the first few
bytes of print data to determine which emulation is being used. Once the
decision is made, the printer switches to that emulation and completes the
print job.
When the printer is connected to a single PC with a single user, the pause
at the end of each print job helps the printer decide when it must resume
analyzing the data and choosing an emulation. But in a shared (networked)
environment, multiple print jobs can be sent to the printer back-to-back -
making it impossible for the printer to distinguish between jobs even
though they may be in different emulations.
To provide better support for these "auto-switching" printers, FPServer
allows you to specify a post-job delay of 1-999 seconds. This delay is
inserted by FPServer immediately after each print job's last byte of data
is sent to the printer. A separate delay value is maintained for each port
so that you may add the delay to those printers which require it without
imposing it on those which do not. By default, this delay is zero; but it
is easy to add if your printer requires it.
AUTO-REBOOT ON MISSING SHELL
----------------------------------------
Network resources should operate autonomously, even when problems arise.
File servers are a shared resource upon which many people depend. For this
reason, they are often equipped with uninterruptable power supplies (UPS's)
so, if the power fails, they can shut down and then restart gracefully
without operator involvement.
Print servers are also a shared resource, and they too should operate
autonomously when problems arise. When power is lost and then restored,
PC-based print servers with AUTOEXEC.BAT files will automatically reboot
into DOS, often faster than the file server itself reboots. Since the PC
is now "ahead of" the file server in its boot sequence, the PC's network
shell will fail to find a file server and the print server software will
fail to start. A manual reboot of the print server - AFTER the file server
is running - is then required.
FPServer solves this problem by confirming the presence of the network
shell - and a valid connection to a file server - before initializing. If
no connection exists, or if the shell is not loaded, FPServer will display
a message, wait 30 seconds, and automatically reboot the PC. For debugging
convenience, you may abort the reboot process and return directly to DOS
during the 30 second pause by simply pressing any key.
FPServer will continue the "scan, delay, reboot" cycle until it finds an
active file server, no matter how long the file server takes to reboot
itself. In this manner FPServer becomes a completely autonomous resource;
if power is momentarily interrupted during the night, chances are your
users will never know about it.
PROGRAMMABLE AUTO-REBOOT ON LOST NETWORK
----------------------------------------
Another problem which has traditionally plagued print servers is the "lost
network". This can be caused by anything from a file server going down to
a temporary break in the network cable. The result is the same: the shell
loses contact with the file server, sometimes resulting in the message
"Network Error: Abort, retry" appearing on the screen. Such situations are
confusing to users and have always required human intervention - until now.
FPServer now detects "lost network" and other lockup conditions. Whether
the shell reports it or not - with or without a "Network Error" message -
FPServer will automatically cold-boot the PC after a programmable delay as
long as the basic operation of the PC is not impaired.
This feature, in combination with Auto-Reboot on Missing Shell above, makes
FPServer immune to almost all forms of network lockup and reboot failures.
Simply stated, FPServer does not passively hope that everything goes well;
it aggressively works to make SURE print services are available to all
network users 24 hours a day.
LOW MEMORY REQUIREMENTS
----------------------------------------
FPServer incorporates a memory management system which takes advantage of
traditional DOS memory. However, even with all ports active, no more than
400K free DOS memory (as reported by the DOS utilities CHKDSK or MEM) is
ever required. This small memory requirement means that DOS, the network
interface drivers, and the network shell itself can still be loaded into
traditional DOS ("low") memory - exactly as they should be for maximum
performance.
NOTIFY FOR JOB COMPLETE AND DELETE
---------------------------------------
FPServer supports the optional Notify parameter which sends a broadcast
message to the job owner when a print job has been successfully completed.
Unlike other print server software, however, FPServer sends this message to
the originating WORKSTATION (rather than the specific username) in case the
user has logged in under a different name since the job was submitted.
FPServer further enhances the Notify concept by notifying users of job
deletion. If the current print job is deleted from the queue before being
successfully completed, FPServer will send a broadcast message to the
originating workstation to notify it of the premature deletion.
BANNERS
---------------------------------------
FPServer supports optional "banner pages" which are printed at the start of
a job. Three fields are printed on four lines of enlarged (over one inch
high) text: The name of the job owner, the description of the print job,
and the date/time when the job started printing.
Unlike the banners provided by most other print server software, however,
FPServer's banners ALWAYS present accurate information. The job's owner
and description are derived from data embedded in the job itself, rather
than from data supplied by the user's CAPTURE or NPRINT statements.
Date/time information is obtained directly from the file server (network
time) instead of the print server's host PC (whose local clock may not be
accurately set). In addition, the banner displays the date and time in a
alphanumeric "DD Mon YY" format to avoid confusion over whether the day or
month should be printed first in a purely numeric representation (different
countries have varying standards).
FORMFEEDS
---------------------------------------
FPServer supports the optional FormFeed parameter which helps assure that
new print jobs start at the top of a new page. And FPServer's FormFeed
option (when enabled) generates a new page at the end of EVERY COPY within
the job so that each starts on its own new page. This is in contrast to
other print server software which only emits a formfeed at the END of the
job, thus causing multiple-copy jobs to suffer from the same problem that
the FormFeed option was intended to eliminate.
SOFTKEY-BASED LICENSING
---------------------------------------
There is only one "version" of FPServer: The fully operational version
which includes all features and capabilities. No handicapped "demo"
versions exist, and no features are "hidden" until you spend money. My
idea is simple: You should base your decision to pay for and use FPServer
on an examination of the complete product in your own environment.
This is made possible with "SoftKeys". A SoftKey is a numeric key derived
from the serial number of the copy of NetWare running on a file server.
FPServer obtains your NetWare serial numbers directly from the file
server(s) to which it is connected, and compares them with the SoftKeys you
have supplied to it in its configuration file or on its command line. If
all connected file servers have correct SoftKeys, FPServer runs without
interruption.
However, if one or more file servers have missing or incorrect SoftKeys,
FPServer terminates after twenty minutes. You can restart it as many times
as you like - the program does not "destroy itself" or leave datestamps
on your network drives - but every run of the program will terminate after
twenty minutes.
This demonstration period allows you to experience what the terms
"ultra-high throughput" and "ease of use" mean IN YOUR OWN ENVIRONMENT.
You can completely configure FPServer for your network - fine tune all of
its parameters, let other users play with it - on your own schedule and
without any pressure.
As an example, in twenty minutes you can send 48 MEGABYTES to a Hewlett
Packard LaserJet 4 (which accepts data at 40,000 bytes per second). So you
can test even those BIG jobs that leave other print servers gasping for
breath.
If, after testing it in your own real-world environment, you decide that
FPServer is not for you, simply stop using it. There's no up-front
expense, no refund hassles, no paperwork, no phone calls, no explanations
to salesmen, no restocking fees - just stop using it.
But when you decide that YES, FPServer really does make a difference in
your networked printing, simply register your file server serial number(s)
via modem with FPServer's online registration system. The NWSerial utility
(NWSERIAL.EXE), included with FPServer, makes it easy to list your NetWare
serial numbers; and complete registration instructions appear when you exit
FPServer's demo (whether by timeout or keystroke).
Please read the REGISTER.DOC file for complete registration information.
MISCELLANEOUS ISSUES
---------------------------------------
FPServer does not support tab translation. This capability is seldom used
with today's software and printers, and with thousands of users worldwide I
have NEVER received a request for it.
FPServer allows each port to service a single print queue. Some other
programs allow a port to service multiple queues. Frankly, there are few
sites where this capability is used; those that do are usually prioritizing
time-sensitive print queues because network printing is so slow. I chose
to delete this capability because of its low usage, the impact it had on
overall throughput, and the fact that FPServer's higher speed eliminates
the need for queue prioritization.
FPServer does not support the concept of "forms". But FPServer's ease of
reconfiguration makes it easy to simulate it. If you are actually swapping
media in a single printer, set up separate print queues for each type of
form, let users send their print jobs to the correct queue, and switch
FPServer to that queue with a command-line override when you change the
forms.
FPServer cannot be configured with Novell's PCONSOLE.EXE. FPServer's many
enhancements and options are completely unsupported by PCONSOLE, and
FPServer's human-readable configuration file and command line parameters
allow faster and more flexible setup and experimentation without it.
FPServer's status cannot be determined using Novell's PSC.EXE for the same
reasons that PCONSOLE is inadequate. Unlike Novell's PSERVER.EXE, FPServer
provides complete status information directly from its console; a separate
program is not required.
FPServer does not support the RPRINTER protocol. By definition, RPRINTER
is a slower process: data must pass through the network a second time, and
then through another workstation, before reaching the target printer.
FPServer's design goal was speed - and thus support for this inherently
slower process was deleted.
FPServer does not "advertise" its presence on the network with NetWare's
Service Advertising Protocol (SAP). To be more specific, FPServer does not
issue Server Identity Broadcasts nor respond to Service Advertising
Queries.
===========================================================================
HARDWARE REQUIREMENTS
===========================================================================
HOST PC (PRINT SERVER)
---------------------------------------
FPServer may be used on virtually any PC which conforms to the generally
accepted standards for IBM Personal Computer compatibility. There is no
minimum processor architecture or speed; an 8088-based PC running at
4.77MHz is quite adequate. A numeric coprocessor is neither required nor
used, and if present will be ignored.
A video subsystem (interface and monitor) is required for initial setup.
During operation, FPServer will display printer status and queue contents
and allow users to manipulate jobs if a display is present. Technically
speaking, however, FPServer does not require a display for day-to-day
operation.
FPServer does not require a keyboard if you are willing to go without some
of its console interaction capabilities. If you wish to use the host PC
for other functions in addition to being a print server, a keyboard may be
used to gracefully exit and later restart FPServer (a keyboard is probably
also required for your other purposes). However, for dedicated print
server applications that power-up directly into FPServer, a keyboard is
strictly optional as long as the host PC will successfully boot without
one.
A disk drive is required to hold FPServer and its configuration file (both
of which are relatively small). A floppy drive is more than adequate for
this task; in fact, if DOS and other required files (AUTOEXEC.BAT,
CONFIG.SYS, etc.) will fit together with FPServer on a single floppy, that
disk can serve as the boot device and no hard drive is required at all.
One or more ports are required for communication between FPServer and the
print devices. FPServer can support up to three parallel and four serial
ports at any I/O address within the IBM PC's 64K I/O address range. The
interrupt lines normally associated with these ports (typically IRQ's 3, 4,
5, and 7) are completely ignored by FPServer and may instead be used for
other purposes such as the network interface card.
FPServer requires no more than 400K free memory even when running its full
compliment of three parallel and four serial ports. FPServer does not
require Extended memory (XMS) or Expanded memory (EMS) and ignores it if
present. Loading DOS and other programs in "high memory" (as allowed by
later versions of DOS) provides no additional functionality and is not
required unless the host machine otherwise has less than 400K free memory
for FPServer.
Based on the above, a minimum hardware specification for an FPServer host
PC would be an 8088 running at 4.77MHz with 1MB of memory, one low density
floppy drive, one or more parallel and/or serial ports, no hard drive, no
keyboard, and no video. A disk in the floppy drive would contain the
following:
Bootable DOS (disk formatted with the /S option)
CONFIG.SYS file
AUTOEXEC.BAT file which loads network drivers and invokes FPServer
Novell's IPX.COM or the ODI environment programs
Novell's NETx.COM
SHELL.CFG (optional as required by Novell's software)
FPSERVER.EXE
FPSERVER.CFG (containing appropriate configuration data)
...all of which can comfortably fit on a 360K low density floppy. Such a
host PC would cost less than $300 even if purchased NEW.
PRINT DEVICES
---------------------------------------
FPServer may be used with any external device that supports hardware
handshaking. Device types are not limited to printers; any parallel or
serial device which conforms to the requirements below may be used with
FPServer. Examples of "non-printer" devices include plotters, CRT
terminals, modems - any device which can make use of queued data.
Parallel devices must conform to the generally accepted Centronics
"standard" for parallel interfaces. This well understood protocol
incorporates hardware handshaking as part of its basic definition.
FPServer has two parallel modes: "Safe" and "Fast". Refer to the
"Technical Details" section for more information.
Serial devices must provide hardware handshaking via the DTR (Data Terminal
Ready) signal. This is the most common form of hardware handshaking for
serial devices and is supported by virtually every printing device
available. Most PC compatibles expect DTR on pin 6 of the standard 25 pin
D-connector used for RS-232C; consult your computer's documentation for
more information regarding the pinouts used on its serial ports.
FPServer does not support software handshaking. This includes X-On/X-Off,
ETX/ACK, ACK/NAK, and other purely software-based protocols.
PRINTER CABLES
---------------------------------------
The cables used to connect from the host PC on which FPServer executes
to the print device(s) must meet certain minimum requirements. These
requirements differ for parallel and serial connections; each is detailed
below.
For parallel connections, the cable must carry the following signals
between FPServer's host PC and the printer (pin numbers refer to those
traditionally used at the Centronics connector):
STROBE (pin 1)
DATA 1-8 (pins 2-9)
BUSY (pin 11)
GROUND (pins 19-30)
Parallel cables should also connect the following signals, although they
are not strictly required for successful operation:
PE (pin 12)
SLCT (pin 13)
INIT (pin 31)
ERROR (pin 32)
For serial connections, the cable must carry the following signals (typical
pin numbers are not specified for serial connections due to the wide
variety of connectors and pinouts used for RS-232C interfaces):
Printer Host PC
======= =======
TxD --------------> RxD
RxD <-------------- TxD
DTR --------------> DSR
GND --------------- GND
The arrows are included to clarify the direction of signal travel, since
both ports have signals with identical names. It is important to note that
you CANNOT connect pins with the same name to each other; each must be
connected to its "complementary" pin. The sole exception is Ground, which
has no direction or polarity.
Pay close attention to the DTR-DSR connection. The PRINTER's DTR (which is
an output) must drive the HOST PC's DSR (which is an input). Connecting
the opposite signals together - even though the names are the same - will
prevent FPServer (and most other software) from functioning correctly.
Some serial devices, notably Engineering plotters, use the Clear To Send
(CTS) signal instead of the more common DTR signal. While CTS is more
sensible (it accurately describes the function being performed), devices
which use it are definitely in the minority. If your device uses CTS
instead of DTR, you must wire the cable so that the device's CTS signal
appears at the host PC's DSR input.
All pin numbers should be confirmed with your equipment's own
documentation. In many cases wire "swapping" is necessary to move signals
to the correct pins.
The DOS COPY command, unfortunately, is not a good indication of correct
handshake wiring; it is often so slow that there is no possibility of
filling the serial device's input buffer. A cable which works fine with the
DOS COPY command may fail with FPServer simply because FPServer can supply
data so much faster than DOS. If the first part of your print job prints
successfully, and then things seem to go wrong, it's quite likely that no
hardware handshaking signals are being passed back to FPServer from the
printer. In this case, everything goes well until the serial device's
buffer overflows - and then data loss takes over.
FASTER CLOCKS AND WIDER BUSES
---------------------------------------
FPServer's throughput performance is much less dependent upon the host PC
than other print server software. Most of its theoretical maximum
throughput can be achieved on machines with (relatively) low processing
power. While an increase in speed will be realized by using a faster host
PC, the advantage is that older, less expensive, less "user-desirable" PC's
can be used as print servers with little or no performance penalty.
There are several reasons why a machine which is "twice as fast" does not
yield a doubling of throughput. First, PC parallel and serial ports are
eight bit devices; all I/O involving these ports occurs eight bits at a
time regardless of the processor's bus width. An AT's 16 or 32 bit bus is
still forced to interact with the port hardware eight bits at a time.
Second, most AT-style BIOS's insert wait states for eight bit I/O
operations - and thus offset the advantage of increased clock speeds. Most
I/O cards are designed for operation in an 8MHz (or at most 12MHz) bus; a
25, 33, or 40 megahertz processor simply idles while its wait states time
out during each input and output operation.
Because the code between port operations will be executed faster, some
increase in maximum throughput will be obtained with faster machines.
However, the relationship is not linear; a doubling of bus width or clock
speed will not yield twice the data rate.
For example, FPServer running on an 80386DX-40 PC can sustain parallel data
rates of 100,000 bytes per second. An original IBM PC (8088 @ 4.77MHz) has
only 1/50th the processing power of the 386 machine, and yet can still run
FPServer at 10,000 parallel bytes per second. In other words, a machine
with only 2% of the processing power can still sustain 10% of the data
rate.
Furthermore - and this is the most important consideration - print devices
are almost ALWAYS the limiting factor. Very few can accommodate FPServer's
maximum output rate even when the host machine is just that 8088-based PC.
Even Hewlett Packard's LaserJet 4, with its new 80960-based controller, is
limited to approximately 40,000 bytes per second. FPServer running on an
80386DX-40 has 2.5 TIMES that bandwidth. Only the fastest output devices
will find themselves waiting between bytes received from FPServer.
Before spending money on a faster PC host, be sure to run FPServer on a low
end machine and compare its test mode performance with the rates obtained
when driving a "real" printer. Your oldest, slowest PC may be more than
fast enough for the printers in question.
===========================================================================
CONFIGURATION COMMANDS
===========================================================================
FPServer's operation is controlled by commands which appear in a
configuration file and on the DOS command line. All commands, regardless
of their location, use a common format.
For consistency, all commands which affect a specific port begin with the
port's name (LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4). Those which
affect the overall operation of the software do not incorporate port names.
FPServer recognizes the following commands:
portQUEUE ...specifies print queue to be serviced
portMODE ...specifies parallel port timing mode
portBAUDRATE ...specifies serial port baud rate
portPARITY ...specifies serial port parity
portDATABITS ...specifies number of serial data bits
portSTOPBITS ...specifies number of serial stop bits
portBASE ...specifies parallel/serial I/O base address
portQUERYDELAY ...specifies delay between print queue queries
portPOSTJOBDELAY ...specifies delay after print job completion
portRESETDELAY ...specifies delay for manual printer reset
BOOTDELAY ...specifies delay before auto-reboot
REMARK ...allows remarks in FPSERVER.CFG file
REM ...same as REMARK
Commands are processed in the order that they appear. Those in the file
FPSERVER.CFG are processed first, followed by any which appear on the
command line. Later commands take precedence over earlier, making it
possible for command line parameters to temporarily override the contents
of FPSERVER.CFG (this is extremely useful for experimentation and early
setup). No warning is issued if multiple, redundant commands are detected;
the later commands (if valid) are processed and the earlier commands simply
overridden.
Spaces may surround equal signs ONLY in the file FPSERVER.CFG. Including
spaces around equal signs on the command line will confuse DOS's command
line parser and result in error messages. Since spaces are never REQUIRED
for any command, it is recommended that commands not include spaces at any
time. Examples in this file omit spaces in the recommended fashion.
All commands and their parameters are converted to capital letters prior to
interpretation and are thus case-insensitive.
portQUEUE COMMAND
---------------------------------------
The portQUEUE command defines the print queue to be serviced by a hardware
port. Its format is as follows:
portQUEUE=fileserver/printserver/printqueue,softkey
...where: port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
fileserver = the name of the file server
printserver = the name of a print server on that file server
queuename = the name of a print queue on that file server
softkey = the SoftKey for the specified file server
All three names - the file server, the print server, and the print queue -
MUST be included in every portQUEUE command in the exact format shown above
(separated by forward slashes and no extra spaces). There are no default
values; if any of the names are missing, invalid, or incomplete, the
associated port is disabled.
During startup, FPServer logs in to the specified file server as the
specified print server and attaches to the specified print queue. The
print server object must not require a password, and it must be authorized
to service the specified print queue. If not, an error will be reported on
the port's screen display and the port will be disabled. Network
Supervisors can create print server objects and remove print server
passwords using Novell's PCONSOLE utility; refer to Novell's documentation
for more information regarding the creation of print server objects.
The print server object should also have Operator rights to the specified
print queue, or several FPServer features will not be available. Network
Supervisors can grant print queue Operator rights to print server objects
using the QRights utility (QRIGHTS.EXE) included with FPServer; refer to
the separate documentation file QRIGHTS.DOC for more information.
If a SoftKey is available for the specified file server, it must follow the
print queue's name with a separating comma (again, no extra spaces are
allowed). A file server's SoftKey must be included in EVERY portQUEUE
command which references that file server; even a single portQUEUE command
without a valid SoftKey will cause FPServer to terminate after the demo
period.
The following example illustrates the correct use of the portQUEUE command.
If you wish FPServer to log in to the file server named FILE1, as the print
server object named PRINT6, and use LPT2 to service the print queue named
QUEUE3, you would use the following command:
LPT2QUEUE=FILE1/PRINT6/QUEUE3
Because no SoftKey is supplied, this command would allow FPServer to print
jobs which appear in QUEUE3 only until the demo period expired. If you
then register FILE1's serial number for use with FPServer and receive the
SoftKey 0123-4567:89AB-CDEF (for example), you would add it to the above
command as follows:
LPT2QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF
VERY IMPORTANT: You must select a single print server object for each file
server and use that print server object in every portQUEUE command which
references that file server. Due to a limitation in Novell's NetWare, you
cannot be logged in to one file server as multiple print servers
simultaneously. Failure to heed this limitation will result in inoperative
ports.
There is no default for the portQUEUE command. A port must have a valid
portQUEUE command to prevent that port from being disabled. In addition,
even a single portQUEUE command without a valid SoftKey will cause FPServer
to terminate after the demo period.
portMODE COMMAND
---------------------------------------
The portMODE command defines the parallel port strobe timing mode. Its
format is as follows:
portMODE=method
...where: port = LPT1, LPT2, or LPT3 (not COM1, COM2, COM3, nor COM4)
method = either SAFE or FAST
FPServer supports two operational modes for the parallel ports: "Safe" and
"Fast". Values other than SAFE or FAST are ignored.
The difference between them involves the timing of the Strobe signal and
the way that Centronics-equipped print devices are designed. This subject
is discussed more thoroughly in the "Technical Details" section.
Generally, you should always specify FAST unless doing so results in
printer errors or garbled data. No print devices tested to date have been
incompatible with the FAST setting, and using it significantly increases
FPServer's maximum throughput. However, should the printer report an "I/O
Error" or start dropping characters, change that port's mode to SAFE and
compare the results.
The default for the portMODE command is FAST.
portBAUDRATE COMMAND
---------------------------------------
The portBAUDRATE command defines the baud rate for a serial port. Its
format is as follows:
portBAUDRATE=value
...where: port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
value = 110, 300, 600, 1200, 2400, 4800, 9600, 19200, or 38400
FPServer supports the nine baud rates shown above. The full baud rate
value - three, four, or five digits - must be supplied including trailing
zeroes (i.e. "96" is invalid). Values other than those shown above are
ignored.
There is no default for the portBAUDRATE command. UART baud rates are
not initialized unless this command is specified.
portDATABITS COMMAND
---------------------------------------
The portDATABITS command defines the number of data bits for a serial port.
Its format is as follows:
portDATABITS=value
...where: port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
value = 7 or 8
FPServer supports either 7 or 8 data bits. Values other than 7 or 8 are
ignored.
There is no default for the portDATABITS command. UART data bits are not
initialized unless this command is specified.
portPARITY COMMAND
---------------------------------------
The portPARITY command defines the parity for a serial port. Its format is
as follows:
portPARITY=value
...where: port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
value = ODD, EVEN, or NONE
FPServer supports the standard ODD and EVEN parity options in addition
to no parity at all. Values other than ODD, EVEN, or NONE are ignored.
If ODD or EVEN parity is specified, FPServer will program the UART to
calculate and insert an additional bit into each serial word. Specifying
NONE will disable parity and reduce the length of each serial word by one
bit.
There is no default for the portPARITY command. UART parity is not
initialized unless this command is specified.
portSTOPBITS COMMAND
---------------------------------------
The portSTOPBITS command defines the number of stop bits for a serial port.
Its format is as follows:
portSTOPBITS=value
...where: port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
value = 1 or 2
FPServer supports either 1 or 2 stop bits per serial word. Values other
than 1 or 2 are ignored. Please note that the UART associated with the
specified port may impose limitations on the number of stop bits allowed in
certain modes.
There is no default for the portSTOPBITS command. UART stop bits are not
initialized unless this command is specified.
portBASE COMMAND
---------------------------------------
The portBASE command defines the base of the I/O hardware address range for
a parallel or serial port. Its format is as follows:
portBASE=value
...where: port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
value = a hexadecimal value of up to four digits
The value may be any legal hexadecimal value from one to four digits in
length in upper or lower case, with the exception of zero. No
"punctuation", such as a leading "0x" or trailing "H", is required or
allowed. Invalid values are ignored.
Most IBM PC-compatible hosts contain BIOS code which scans for parallel and
serial ports at industry-standard addresses and stores them for program
use. FPServer normally uses these BIOS defaults for port I/O addresses,
and under most circumstances there is no reason to override them.
In reality, though, FPServer does not care what specific address is
associated with a given port name. LPT1, COM3, etc. are just convenient
shorthand for "the first parallel port, the third serial port," and so
on. Given no commands to the contrary, FPServer will match port names
to their industry-standard addresses just like any other software; but
the portBASE command allows you to force address values if you wish.
One use for the portBASE command is to support multi-port I/O cards which
pack a large number of parallel and/or serial channels into a single board.
Such interfaces commonly use non-standard I/O addresses which standard PC
BIOS's do not detect. The portBASE command makes it possible to use such
interfaces with FPServer.
Another use for the portBASE command is to "move" port names. For example,
if your host PC contains two parallel ports, they will most likely be
addressed at 3F8 hex (LPT1) and 2F8 hex (LPT2). However, you can "swap"
the two ports - and thus the printers they drive - by specifying opposite
addresses as follows:
LPT1BASE=2F8
LPT2BASE=3F8
FPServer does not blindly accept hexadecimal values. A detailed analysis
is performed at the specified address to confirm the presence of
industry-standard parallel or serial hardware. If such hardware is not
present at the specified address, the portBASE command is ignored.
The default values for port base addresses vary from machine to machine,
and FPServer defaults to the addresses detected by BIOS for maximum
compatibility. For reference, the addresses most commonly used for
parallel and serial ports are as follows (all values are in hexadecimal):
Port Mono System Color System
---- ----------- ------------
LPT1 3BC 378
LPT2 378 278
LPT3 278 not available
COM1 3F8 3F8
COM2 2F8 2F8
COM3 3E8 3E8
COM4 2E8 2E8
COM3 and COM4 are often not supported by BIOS code. You may find that
COM3BASE and COM4BASE commands are required by your host PC even though
they reside at the "industry standard" addresses of 3E8 and 2E8.
The difference in parallel port addresses between monochrome and color
systems is due to the common practice of including a parallel port on
monochrome video interfaces. Such mono-printer interfaces typically use a
special address, 3BC hex, which is normally ignored by separate parallel
interfaces. If a parallel port is present at 3BC hex, most BIOS's will
treat it as LPT1 and move all other parallel ports "up" one position to
compensate. (Serial ports are not affected by video type.)
portQUERYDELAY COMMAND
----------------------------------------
The portQUERYDELAY command defines the amount of time, in seconds, a given
port will wait between print queue queries. Its format is as follows:
portQUERYDELAY=ddd
...where: port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
ddd = delay in seconds
Values from 1-999 are accepted; the entry is truncated to the first three
digits. Invalid values, including zero, are ignored.
Larger values will reduce network overhead but increase the delay from the
submission and the actual start of a print job. Smaller values will cause
print jobs to start faster at a slight increase in network traffic.
The default queue query delay is one-half second; however, the minimum
value which may be specified with the portQUEUEQUERY command is one second.
For the absolute minimum delay, simply do not specify a portQUEUEQUERY
command.
portPOSTJOBDELAY COMMAND
----------------------------------------
The portPOSTJOBDELAY command defines the amount of time, in seconds,
FPServer will delay after the completion of a print job before beginning a
new one. Its format is as follows:
portPOSTJOBDELAY=ddd
...where: port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
ddd = delay in seconds
Values from 1-999 are accepted; the entry is truncated to the first three
digits. Invalid values, including zero, are ignored.
The specified delay is ADDED to the query delay defined by the
portQUERYDELAY command for the specified port (if any).
The default value for the portPOSTJOBDELAY command is zero (no additional
delay after job completion).
portRESETDELAY COMMAND
---------------------------------------
The portRESETDELAY command defines the amount of time, in seconds, FPServer
will delay after a job is manually restarted or prematurely deleted. Its
format is as follows:
RESETDELAY=ddd
...where: port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
ddd = delay in seconds
Values from 1-999 are accepted; the entry is truncated to the first three
digits. Invalid values, including zero, are ignored.
The RESETDELAY command allows you to tailor the amount of time required for
you to help your printer recover from a restarted or prematurely deleted
print job. Since different printers may require different amounts of time,
FPServer allows you to specify separate values for each port.
If a job has been restarted from FPServer's console, the next data to be
sent will be the restarted job. If the current job has been prematurely
deleted, the next data will be the next job in the print queue. If no jobs
are pending, no additional data will be sent.
The default value for the portRESETDELAY command is 10 seconds.
BOOTDELAY COMMAND
---------------------------------------
The BOOTDELAY command defines the amount of time, in seconds, FPServer will
allow for a "lost file server" before rebooting the host PC. Its format is
as follows:
BOOTDELAY=ddd
...where: ddd = delay in seconds
Values from 1-999 are accepted; the entry is truncated to the first three
digits. Invalid values, including zero, are ignored.
The default value for the BOOTDELAY command is 30 seconds. This is
generally a good compromise between too small a value (which can cause
frequent resets in networks with heavy traffic) and too large a value
(which can needlessly delay restoration of printing services after power
outages, etc.). You may, however, need to optimize this value for your
particular environment.
REMARK AND REM COMMANDS
---------------------------------------
Remarks may be included in the FPSERVER.CFG file in the format:
REMARK This is a comment
...or:
REM This is a comment
The space after the REMARK or REM command MUST be included. REM and REMARK
lines are simply ignored by FPServer.
A MINIMAL FPSERVER.CFG FILE
---------------------------------------
(Note: The SoftKeys in the following examples are not valid. They are
included only for illustrative purposes.)
As noted in their individual descriptions, many of FPServer's configuration
commands default to standard values. The number of commands actually
required for proper operation is therefore quite small. In fact, a
completely operational print server can be established with a single
command: a portQUEUE command which specifies a print queue and the port
which is to service it.
An FPSERVER.CFG file containing the command:
LPT1QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF
...will yield a print server which attaches to the File Server FILE1, logs
in as the print server PRINT6, obtains jobs from the print queue QUEUE3,
and outputs them on the first parallel port using FAST mode. All other
parallel and serial ports, if present, are disabled by default.
For a truly minimal configuration, the FPSERVER.CFG file can be eliminated
completely by including required commands on the command line itself.
Entering the following command at a DOS prompt:
FPSERVER LPT1QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF <enter>
...will satisfy FPServer's minimal parameter needs and yield exactly the
same operation as if the FPSERVER.CFG file mentioned above were present.
Note that no spaces are present around the equal sign, in keeping with
DOS's command line parser requirements.
A TYPICAL FPSERVER.CFG FILE
---------------------------------------
The following is an example of a more typical FPSERVER.CFG file for a
hypothetical network which uses many of the commands described above:
Rem ****************************************************************
Rem !!! PLEASE CONTACT JOHN DOE IN MIS BEFORE CHANGING THIS FILE !!!
Rem ****************************************************************
Rem - Print Server in Admin area is PS-ADMIN on file server ADMIN
Rem - Admin. LaserJet IIID's queue is named PQ-LASERJET3D
LPT1Queue=ADMIN/PS-ADMIN/PQ-LASERJET3D,0000-1111:2222-3333
Rem - LaserJet IIID works fine with Fast parallel ports
LPT1Mode=FAST
Rem ----------------------------------------------------------------
Rem - Admin. PaintJet's queue is named PQ-PAINTJET
Rem - Print Server is identical; can only use one on each file server
Rem - SoftKey is identical, because it's the same file server
LPT2Queue=ADMIN/PS-ADMIN/PQ-PAINTJET,0000-1111:2222-3333
Rem - PaintJet likes Fast parallel too
LPT2Mode=FAST
Rem ----------------------------------------------------------------
Rem - Drafting's HP7580 plotter queue is PQ-HP7580, and...
Rem - ...Drafting has its own file server named DRAFTING, and...
Rem - ...they named their print server PS-DRAFT, and...
Rem - ...SoftKey is different, because it's a different file server
COM1Queue=DRAFTING/PS-DRAFT/PQ-HP7580,1111-2222:3333-4444
Rem - Plotter is set up for 19200 baud, 8 data, no parity, 1 stop
COM1BaudRate=19200
COM1DataBits=8
COM1Parity=None
COM1StopBit=1
Rem - It takes more than 10 seconds to put new paper in the plotter
COM1ResetDelay=60
Rem ----------------------------------------------------------------
Notice that uppercase and lowercase are mixed freely in this example. As
mentioned above, FPServer capitalizes all alphabetic characters prior to
processing them. Feel free to make the file "human readable".
===========================================================================
INSTALLATION
===========================================================================
INSTALLING FPSERVER.EXE
---------------------------------------
There is no complicated installation procedure for FPServer. The program
file itself, FPSERVER.EXE, may be placed in any subdirectory. However,
since most host PC's will be dedicated to the task of print servers, it is
recommended that FPSERVER.EXE be placed in the root directory of the boot
device (probably either A: or C:) to reduce the size and complexity of the
AUTOEXEC.BAT file.
CREATING THE FPSERVER.CFG FILE
---------------------------------------
The FPSERVER.CFG file, if used, may be created with any editing program
that can produce a "pure" ASCII file on disk. Pure ASCII, in this context,
indicates that the file must not contain word processing commands or other
non-human readable information (essentially, it should include only
numbers, letters, and standard punctuation characters). DOS's EDLIN and
EDIT programs and all text editors work in this manner; most word
processing programs also have a "text output" or "ASCII output" option that
prevents the inclusion of special formatting characters.
FPSERVER.CFG must reside in the default subdirectory in effect when
FPServer is invoked. This does not mean that they must reside in the SAME
subdirectory, although that is definitely the most desirable (and least
error-prone) configuration. What it DOES mean is that if, before typing
FPServer at the command line, you type "DIR <enter>", FPSERVER.CFG must be
one of the files shown in the current subdirectory.
Obviously, the best situation is to have both FPSERVER.EXE and FPSERVER.CFG
in the same subdirectory, and make that subdirectory the current one, when
starting FPServer. The easiest way to insure this is to place both files
in the root directory of the boot device and be in that root directory.
TEMPORARY MODIFICATIONS
---------------------------------------
One of the most convenient features of FPServer's configuration system is
the ability to temporarily override the contents of the FPSERVER.CFG file
with entries on the command line. The fact that you need not be logged in
to the File Server between "sessions" of FPServer streamlines this even
further.
As an example, to change the queue being serviced by a printer-resident
interface, Novell's PSERVER, or a "black box" print server, you would have
to perform the following steps (assuming that the print server in question
already has sufficient rights to service the new queue):
* Reboot the print server (since Novell's PSERVER.EXE does not provide
a "clean" exit to DOS)
* Log in using an account with sufficient rights to modify the
parameters of the print server in question
* Run Novell's PCONSOLE.EXE
* Work your way down through the menu system until you reach the level
at which the "Queues to be Serviced" can be edited
* Delete the old queue and enter the new one, specifying the correct
parallel or serial port as you do so
* Back out of the menu system until you reach DOS again
* Restart the print server
Through all of this, you will have to reboot the print server at least once
and run two separate programs - just to try something a little different.
If you do not like the results, you get to go through the entire routine
again just to put things back the way they were.
In contrast, FPServer can be reconfigured the same way with the following
steps:
* Exit to DOS by pressing Escape, then Y on the print server's host PC
* Press F3 to recover the "FPServer" command line that last started the
software
* Add the appropriate "portQUEUE=" command to the end of the command
line (which will override any similar command in FPSERVER.CFG)
* Press Enter!
This amounts to 14 keystrokes plus the queue specification. There is no
need to reboot the host PC, or log in as someone else, to change FPServer's
operation - just a few keystrokes and a few seconds completely reconfigures
its behavior.
To restore things back to the way they were, simply exit again, type
FPServer on the command line, and press Enter. Eleven keystrokes and
everything reverts back to the configuration you originally specified in
FPSERVER.CFG. Neither Novell's PSERVER.EXE nor any "black box" can touch
FPServer for ease of use!
PERMANENT MODIFICATIONS
---------------------------------------
To make configuration changes permanent, simply modify the FPSERVER.CFG
file using your ASCII text editor. Again, this may be done by simply
Escaping out of FPServer, running the editor, and restarting FPServer. It
is not necessary to reboot the host PC nor even log in to the File Server.
===========================================================================
NORMAL OPERATION
===========================================================================
STARTING THE PRINT SERVER
---------------------------------------
FPServer may be started by typing its name at any DOS prompt and pressing
Enter. However, in most installations, the PC will be dedicated to the
print server application. In such environments, FPServer may be included
as the last command in the PC's AUTOEXEC.BAT file to completely automate
its startup.
Configuration commands may optionally follow FPServer's name up to the
limit that DOS imposes on the length of the command line. See the
"Controlling PSERVER's Operation" section earlier in this file for more
information regarding configuration commands and their parameters.
Regardless of the startup method chosen, the FPSERVER.CFG file must reside
in the default directory when FPServer is invoked. See "Creating the
FPSERVER.CFG File", above, for more information.
Console Response Time
---------------------------------------
A note about console response time: During especially high speed print
jobs, FPServer's console operations may slow somewhat. This occurs when
FPServer has detected the opportunity to establish a high-bandwidth path to
one or more printers and is redirecting processor resources accordingly.
Since FPServer ALWAYS favors throughput over everything else (ease of use
is secondary, remember), response to the keyboard and screen may slow when
a high speed job is being serviced.
If FPServer seems to be ignoring your keystrokes, don't worry - they are
being stored in an internal buffer until the print job has an idle moment.
THE MAIN SCREEN
---------------------------------------
The main print server screen is separated into eight regions: a title block
at the top which contains text information, and seven port displays - one
for each of the seven hardware ports supported by FPServer. All port
displays are identical in their content. The following description is
applicable to all.
The Status Line
---------------------------------------
The top, or status, line of each port display contains the traditional name
for the associated hardware port (LPTx or COMx). This is followed by the
name of the print queue to which this hardware port is logically attached
(as specified by the portQUEUE command in either the FPSERVER.CFG file or
the command line). The print queue's name is truncated, if necessary, to
fit on the status line.
The right side of the status line displays port information. The first
parameter reports throughput limitations:
Printer Limited (Parallel only.) FPServer is capable of
transferring data more quickly, but the printer's
BUSY line is not allowing it to do so. The printer
asserts BUSY when it is unable to accept another
byte of data. This occurs after each byte is
transmitted and during intensive printer
processing. FPServer must wait for BUSY to go
inactive again before transmitting the next byte.
This is the most common limiting factor for
parallel printers.
Baud Limited (Serial only.) FPServer is capable of transferring
data more quickly than the selected baud rate will
allow. Increasing the baud rate may improve
printing speed somewhat.
Each port's status line also displays printer information to the extent
that it is available from the printer itself (more data is available from
parallel devices than from serial devices):
OFFLINE (Parallel only.) The printer is off line.
PAPEROUT (Parallel only.) The printer is out of paper.
ERROR (Parallel only.) The printer is in an error
condition, other than Off Line and Paper Out, for
which no further information is available. This
may be caused by an access cover being open, low
toner or ink, erroneous data, or loss of power.
Many printers indicate such errors on their front
panels. Consult the printer's documentation.
DTR Off (Serial only.) The printer is momentarily not
accepting data. This generally occurs when the
baud rate is faster than the printer's effective
throughput rate. With data coming in faster than
it can be printed, the input buffer fills until
eventually the printer can accept no more data.
The printer then "turns off" the DTR line to
prevent further transmission until it has emptied
the buffer to some extent.
For parallel devices, the BUSY line is the only parameter which controls
the transfer of data. OFFLINE, PAPEROUT, and ERROR are reported by
FPServer but do not affect data flow. Many printers - especially those
with large input buffers - are capable of accepting data while offline
and/or out of paper, and FPServer supports them without limitation.
Serial devices use DTR as their sole means of flow control, and thus
FPServer must cease sending data when DTR goes "off".
The "Former" Line
---------------------------------------
The Former line appears immediately beneath the status line. It displays
the owner, description and average speed (in bytes per second) of the most
recently completed print job.
The average speed is calculated by dividing the job's size by its duration
in integer seconds. A job's duration is considered to start when the first
byte of data is received from the print queue and end when the last byte of
data is transferred to the printer. ANY event which lengthens this amount
of time - and thus adversely affects the overall amount of time consumed by
the job - will correctly result in a decrease of the average speed. This
includes running out of paper, going off line, and other "normal"
occurrances.
The "Current" Line
---------------------------------------
The Current line appears beneath the status line. It displays the owner,
description, size, and progress of the job currently being printed.
The progress display appears on the right side of the Current line and
indicates the number of bytes which have been sent to the printer. The
value is updated as the device accepts more data from FPServer.
Interruptions in data flow will cause this value to stop increasing (since
the device is not accepting data).
A job remains on the Current line until the last byte of data is accepted
by the printer. When the last byte has been successfully transferred,
FPServer notifies the file server that the job has been completed (so it
can be removed from the print queue) and passes the completion information
to the Former line (described above).
THE PORT SCREEN ("ZOOMED" VIEW)
---------------------------------------
When the main screen is displayed, a highlight appears on the left and
right sides of the image. This highlight can be moved up and down using
the cursor keys, thus allowing you to select one of the seven ports.
A note on the highlight: The choice of "arrows" was made for maximum
compatibility with the widest variety of video monitors. It is common for
old, phosphor-burned (and usually monochrome) monitors to be used on print
servers. Such units often have difficulty displaying colors, fine
contrasts, and sometimes even differences in brightness. A
moving-character highlight was therefore used to insure compatibility with
almost ANY monitor. If you can even barely distinguish individual
characters on the screen, you can use that monitor with FPServer!
Once an individual port has been selected, pressing Enter will "zoom" on
that port. The area previously devoted to displaying all seven ports will
be used to display information on just the selected port.
The zoomed view includes the selected port's Status, Former, and Current
lines. The remaining lines form a queue display showing pending jobs ready
to be printed. Multiple pending jobs are shown in the order they will be
printed, with the topmost job being first. Each pending job displays its
owner and its description.
Jobs appear in the Pending area only when they are complete and ready for
service. This differs from other print server programs, which often
display jobs still being uploaded to the file server. The problem with
including such incomplete jobs is that a prioritized list, such as the one
in the Pending area, can be rendered inaccurate at any moment by a smaller
job which started later but finished queuing first. Such a job can "jump
ahead" of the incomplete jobs - seeming to "pop" into the Current line
without ever having been in the queue. FPServer prevents this problem by
only displaying those jobs which are complete and ready to go: the order in
which they are displayed is the order they will be printed.
The one exception to this rule is delayed or "deferred" print jobs. NetWare
allows the printing of jobs to be delayed until some future date and time.
FPServer honors this feature, but includes such jobs in the Pending display
for two reasons: 1) So you know they are there, and 2) So you can
Prioritize them if you wish (described below). If print jobs appear which
seem "stuck" in the queue, the most likely explanation is that they have a
future print date/time specification. (Novell's PCONSOLE can be used to
confirm this.)
THE PORT MENU
---------------------------------------
The zoomed port view incorporates a highlight much like the one on the main
screen. In this case, however, the highlight is used to select the Current
print job or one of the Pending print jobs.
Once the Current or a Pending job is selected, pressing Enter will display
a menu of job-related options. From here, you may choose to Delete, Restart,
or Prioritize the highlighted job.
The following sections describe the options available from the port menu.
Please note that the QRights utility, which accompanies FPServer, must be
used to grant print queue Operator rights to FPServer before any of these
features can be used.
Deleting Print Jobs
---------------------------------------
You may delete either the Current or any Pending print job. This is a very
powerful capability which saves you from running back and forth between the
printer and a workstation running Novell's PCONSOLE.
Deleting a Pending print job simply removes it from the print queue. There
is no effect on the Current print job (if any).
Deleting the Current job immediately stops data transmission to the
printer, flushes the job from FPServer's local buffers, deletes the job
from the print queue, and issues a hardware reset to the printer (if
parallel).
There is no industry-standardized method for issuing a hardware reset to
serial printers. Worse yet, not even all parallel printers obey the
parallel port's INIT line. The most glaring exception is Hewlett Packard's
LaserJet printers: not a single model in their entire line supports the
INIT signal, even though its function was recognized and supported YEARS
before the first LaserJet shipped. Extensive discussions with HP's Boise,
Idaho facility (where the LaserJet product line originates) has never
yielded a reason for this omission. The effect on HP's customers: it is
impossible for FPServer, or any other software, to asynchronously reset a
LaserJet with a hardware signal - even when the data stream is "lost" and a
software reset command would be ignored. Most other parallel printers will
react to FPServer's hardware reset and flush their buffers automatically;
but YOU have to manually reset a LaserJet.
When you delete a print job from within FPServer, a broadcast message is
sent to the originating workstation if the job's owner enabled the Notify
option.
Restarting Print Jobs
---------------------------------------
Restart is another port menu option. It is available only when the Current
job is highlighted (not when a Pending job is selected). Restart behaves
much like the Delete option described above - data transmission is halted,
FPServer's buffers are flushed, the printer is reset - but instead of the
job being removed from the print queue, it is restarted from the beginning
after the port's reset delay times out.
Restart is handy for obtaining a "good" copy of a runaway print job. If
you believe the data in the print job is accurate and the problem stems
from a one-time data phasing error, Restart allows you to reset the
printer, "clean up" everything, and try again without having to completely
regenerate the print job. (If the problem persists, you can always decide
to Delete it anyway.)
Prioritizing Print Jobs
---------------------------------------
Prioritize allows you to move the highlighted print job to the "top" of the
Pending job list. If you send a print job to a busy print queue, you may
find it nested deep in the Pending list, and it may take minutes or even
hours for the printer to reach your job.
On the premise that the person standing at the print server must be in a
greater hurry than one who is not, selecting Prioritize will advance the
highlighted job ahead of all others in the print queue. The Current job
(if any) will not be interrupted, and the relative order of the other
Pending jobs will not be altered - but the highlighted job will move
directly to the top of the print queue and be the next job serviced by
FPServer.
Prioritize works on all print jobs, including those which have been
specifically "deferred" to a date or time in the future. This can be used
in interesting ways: For example, you can submit print jobs with a target
print date far in the future (thus causing them to sit in the queue
indefinitely), then "print on demand" by walking up to FPServer's console
and Prioritizing the desired job(s).
If you are REALLY in a hurry, you can force FPServer to start a specific
Pending job immediately. First, Prioritize the desired job; then, Delete
the Current job. This is a bit extreme, however - and may cause future
printing difficulties as co-workers take revenge on YOUR print jobs!
STOPPING THE PRINT SERVER
---------------------------------------
Execution of FPServer may be stopped by pressing Escape (as noted in the
title at the top of its screen) and answering Y to the confirmation query.
FPServer stops servicing active jobs, frees allocated memory, and cleanly
returns control to DOS.
Jobs which were being printed when Escape was pressed are reset, at the
File Server, and will be serviced when FPServer is restarted (or another
authorized print server notices them). Exceptions to this can occur if
requested by the software which originated the job, but NetWare's standard
methods for queuing print data (CAPTURE and NPRINT) both allow prematurely
terminated servicing to restart without data loss.
If FPServer was running in demo mode (because of bad or missing SoftKeys),
it will display the unlicensed ports, file servers, and serial numbers when
exiting. However, if multiple, conflicting portQUEUE commands (different
print server names for the same file server) have been supplied for a
single port, the file server name and serial number may not appear if
FPServer cannot resolve the correct file server/print server relationship.
===========================================================================
ERROR MESSAGES
===========================================================================
FPServer uses two classes of error messages: "DOS-level", which are issued
outside of its console environment (i.e. at the DOS command line level),
and "operational", which appear on the console screen.
This section lists FPServer's error messages, the reasons that can cause
them to be displayed, and recommended actions.
DOS-LEVEL ERROR MESSAGES
--------------------------------------------
These messages generally involve network shell problems and SoftKey issues
which will cause FPServer to prevent or terminate its execution. They
generally prevent or terminate program execution and are displayed at the
DOS command line level.
Workstation is not attached to a network
System will auto-reboot in 30 seconds
--------------------------------------------
REASON: Upon receiving control from DOS, FPServer confirms that the host
workstation is "attached" to a File Server. ("Attached", as defined by
NetWare, means that the physical and logical connections exist which allow
the workstation to log in to the File Server.) The host workstation does
NOT have to be logged in - but the logical attachment to at least one file
server, as normally established when Novell's NETX loads, must be present.
This message is displayed if such an attachment cannot be found.
ACTION: Confirm that the workstation successfully connects to a file server
when Novell's NETX shell loads (it will issue a message stating the name of
the file server to which it attached). Again, it is not necessary to be
logged in.
Insufficient memory
---------------------------------------
REASON: There is insufficient free conventional ("low" or "DOS") memory for
FPServer to initialize and support the specified ports. 128K, PLUS a
minimum of 16K for each active port, must be available when FPServer is
started. This message is displayed if enough memory is not available.
ACTION: Just before the host PC starts FPServer, run DOS's CHKDSK or MEM
program to determine the amount of free conventional memory. (FPServer
does not use extended or expanded memory, and ignores it if present.) If
the amount is less than required: 1) confirm the PC has the standard one
megabyte of base memory, 2) reduce memory consumption by other programs, or
3) reduce the number of active ports on this particular print server.
<server> not provided with a SoftKey
---------------------------------------
REASON: FPServer was running in demo mode, and has terminated, because one
or more portQUEUE commands is missing a valid SoftKey for the specified
file server.
ACTION: Register your NetWare serial numbers and obtain SoftKeys for each
file server to be serviced by an FPServer. Once the SoftKeys have been
purchased, confirm that the correct SoftKey is included on EVERY SINGLE
portQUEUE command in the FPSERVER.CFG file and on the command line. Even
one portQUEUE command with a missing SoftKey will cause FPServer to
terminate after its demo period.
Please read the file REGISTER.DOC for complete registration information.
<server>'s SoftKey is Invalid
---------------------------------------
REASON: FPServer was running in demo mode, and has terminated, because one
or more portQUEUE commands contained an invalid SoftKey for the specified
file server. This differs from the error message above, which indicates
that the SoftKey was completely missing.
ACTION: Confirm that the correctly typed SoftKey is included on EVERY
SINGLE portQUEUE command in the FPSERVER.CFG file and on the command line.
Even one portQUEUE command with an invalid SoftKey will cause FPServer to
terminate after its demo period.
Please read the file REGISTER.DOC for complete registration information.
<server>'s NetWare Serial Number is...
---------------------------------------
REASON: FPServer was running in demo mode, and has terminated, because one
or more portQUEUE commands did not include a valid SoftKey for the
specified file server. Since you will need your file server's serial
number during registration, this message is displaying that number for your
convenience. (You may also obtain file server serial numbers with the
NWSerial utility.)
ACTION: Register your NetWare serial numbers and obtain SoftKeys for each
file server to be serviced by an FPServer. Once the SoftKeys have been
purchased, confirm that the correct SoftKey is included on EVERY SINGLE
portQUEUE command in the FPSERVER.CFG file and on the command line. Even
one portQUEUE command with a missing SoftKey will cause FPServer to
terminate after its demo period.
Please read the file REGISTER.DOC for complete registration information.
OPERATIONAL ERROR MESSAGES
--------------------------------------------
These messages include those problems which do not cause FPServer to
terminate its execution. They generally affect only a single port, and
appear on the "Current" line of the affected port's display.
Not in use
---------------------------------------
REASON: The port is not in use. It is not connected to a print queue and
cannot service print jobs.
ACTION: This is the normal message for inactive ports. If you expected the
port to be active, this indicates some type of configuration error occurred
which could not be diagnosed more completely. The most likely problem is a
invalid or missing portQUEUE command containing this port's name.
Bad or missing port hardware
---------------------------------------
REASON: No valid port hardware could be found at the address specified by
this port's portBASE command. If no portBASE command was provided, this
command indicates that the default I/O base for this port (as supplied by
BIOS) did not address acceptable hardware.
ACTION: Confirm portBASE address values are valid (pure hexadecimal values
without leading "0x" or trailing "H"), and confirm that the associated
physical port hardware is actually installed in the host machine. Also
confirm that the port hardware is compatible with the industry-standard IBM
PC parallel and serial ports.
Invalid FServer/PServer/PQueue Spec
---------------------------------------
REASON: The value associated with the portQUEUE command for this port
contained bad syntax or too few parameters.
ACTION: Confirm that all three names are specified in the portQUEUE
command. A file server, AND a print server, AND a print queue must be
explicitly included. Confirm that forward slashes are used to separate
each of the three names, and that no spaces appear anywhere within the
portQUEUE command.
Error attaching to server
---------------------------------------
REASON: FPServer could not successfully attach to the file server specified
by the associated portQUEUE command.
ACTION: Confirm that the specified file server is accessible via the cable
attached to the host PC. Confirm that the specified file server is
actually running and accepting new attachments/logins (Network
Administrators sometimes disable new connections during maintenance).
Error logging in as <PServer>
---------------------------------------
REASON: FPServer is unable to log in to the specified file server using the
print server object name specified in the portQUEUE command.
ACTION: Confirm that the print server object's name is spelled correctly.
Confirm that the print server object actually exists on the specified file
server. Confirm that the print server object does not require a password.
<PServer> not authorized to service...
---------------------------------------
REASON: FPServer was able to attach to the specified file server, and log
in as the specified print server, but that print server is not authorized
to service print jobs in the specified print queue.
ACTION: Confirm the print queue name is spelled correctly. Run Novell's
PCONSOLE or QRights to grant service rights to the specified Print Server
object for the specified queue. Run Novell's PCONSOLE and confirm that the
print queue is enabled and that new print servers may attach to it.
Error attaching to queue <PQueue>
-----------------------------------------------
REASON: The file server will not allow FPServer to attach to the specified
print queue.
ACTION: Confirm that the print queue name is correctly spelled. Confirm
that the print queue exists on the File Server to which the host PC is
attached. Run Novell's PCONSOLE and add the specified Print Server object
to the list of print servers allowed to service the specified print queue.
Confirm that fewer than 25 print servers (NetWare's limit) are already
attached to the print queue. Run Novell's PCONSOLE and confirm that the
specified print queue's operating parameters are acceptable. Refer to
Novell's documentation for further information.
RESET printer to flush job
-----------------------------------------------
REASON: The Current print job has been Restarted or Deleted, but some data
from the cancelled job may still remain in the printer's buffer. FPServer
is reminding you to take action, as necessary, to flush the printer's data
buffer.
ACTION: Do what is necessary (which may be nothing at all) to assure the
printer's buffer is flushed of all prior data. This message will
disappear after the number of seconds defined by the portRESETDELAY command
has expired (default = 10).
...query delay...
-----------------------------------------------
REASON: FPServer is delaying the number of seconds specified by the
portQUERYDELAY command before requesting another job from the print queue.
This is not an error.
ACTION: None; just wait for the query delay to time out. If the query
delay is too long, you may modify it with the portQUERYDELAY command.
===========================================================================
FINE TUNING FOR MAXIMUM PERFORMANCE
===========================================================================
FPServer is seldom the limiting factor in a network printing system. Many
other components and subsystems conspire to limit the ultimate printing
bandwidth. This section discusses some of the more common limiting factors
and offers improvement suggestions. Some, none, or all of these may be
applicable to your situation; consult your equipment's documentation and
manufacturer(s) for more specific information.
PRINTER DATA RATES
---------------------------------------
The most common limiting factor is the print device itself. Different
printers accept data at different rates. In fact, the same printer will
often accept data at varying rates depending upon the data's formatting,
content, and other factors.
If the device has an input buffer, its initial data rate can be very high
while the buffer is being filled. This is because the printer simply
stores the data (rather than processing and printing it) and writing data
into memory is a relatively fast operation. Ultimately, however, the
buffer will be filled and the data rate must then drop to the speed at
which the device can generate an image on the output media - since that is
the rate at which new buffer space becomes available.
The type and content of the data is also significant. For example: A fully
rasterized image, sent to a laser printer, places very little burden on the
printer's microprocessor and is basically transferred directly into the
page buffer. The limiting factor in this case is often the engine speed;
the printer can move the paper only so fast regardless of how quickly data
can be accepted from the host and placed into memory.
The fastest data rates are generally achieved with single pages of fully
rasterized (graphics) laser printer data. In these cases, the last byte of
data is transferred before the engine begins operation and thus the
mechanism speed is factored out.
"BPS" values drop when the print job exceeds a single page. The first page
will still transfer into the empty page buffer very rapidly, but subsequent
bytes must wait for room to appear in the page buffer as its current
contents (the first page) are transferred to paper. In addition, the
printer's microprocessor will devote less time to data reception since it
will also be running the engine (a workload which was not present during
the transfer of the first page's data).
High level printer "languages", such as Hewlett Packard's PCL 5 and
especially Adobe's PostScript, can yield even lower data transfer rates.
Unlike pure graphics - where one bit generally equals one pixel - very
small amounts of high level printer languages can create an ENTIRE PAGE of
rasterized data. The conversion is handled by the printer's
microprocessor, which may accept a small amount of data and then "go deaf"
while those few bytes generate an entire page. The dramatically reduced
"BPS" values that result from this condition do not mean that your printing
throughput is poor, but that each byte of data is generating a lot of
rasterized output.
Pure text can produce the lowest "BPS" values, again due to mechanism
speed. As an example: Assume a laser print job contains ten pages of 25
characters each. The data for the first page will transfer - and the
rasterized image will be created - almost instantly. However, the second
(and subsequent) pages will be limited by the printer's need to physically
print the previous page. Since a laser's engine speed is a constant, each
page takes the same amount of time to pass through the mechanism - and thus
fewer characters per page yields lower "BPS" values even though throughput
(as measured in PAGES) is constant.
In any case, FPServer is almost certainly capable of supplying data faster
than your print device is able to accept it. The appearance of the
"Printer Limited" message on the port's Status Line indicates that the
printer is refusing data when FPServer offers it. You may confirm this -
and determine FPServer's maximum data rate in your environment - by using
FPServer's "Test" mode (described below).
FPSERVER'S TEST MODE
---------------------------------------
FPServer's parallel port routines have a special mode which can be used to
determine the maximum throughput possible in the tested environment. This
mode may be invoked by using the portMODE command as follows:
LPT1MODE=TEST <for LPT1>
...or:
LPT2MODE=TEST <for LPT2>
Selecting "Test" mode causes FPServer's parallel port routine to act as if
an infinitely fast print device were connected to the designated port. All
of the same routines are used - and the print job data is actually
transmitted - but printer-induced delays are ignored.
This is a complete bandwidth test which involves the disk drives on the
File Server, the network cabling and interfaces, the clock rate of the
print server's processor, the speed of the print server's parallel port
hardware - EVERYTHING associated with transferring a print job from the
File Server to the connector on the back of the print server. The
resulting bytes per second (BPS) values indicate the absolute maximum
throughput of which FPServer is capable in the test environment.
Some notes regarding "Test" mode:
* Files of sufficient size must be used for "Test" mode results to be
significant. The most accurate values will be obtained with jobs at
least 500KB in size.
* Multiple jobs should be run through "Test" mode so that the File
Server's job startup overhead can be factored into the results.
Multiple, back-to-back jobs should be queued up and ready to go
prior to starting FPServer in "Test" mode.
* Most printers will report errors if connected during "Test" mode.
This is because FPServer does not honor their BUSY line and thus
transmits the data faster than the printer can accommodate it. It
is recommended that printers be disconnected during "Test" mode to
prevent erratic operation.
* Printer status signals, such as OFFLINE, PAPEROUT, and ERROR are
still reported in "Test" mode even though they have no effect on
FPServer's operation. They may be safely ignored.
* Test mode may be temporarily invoked by including the portMODE=TEST
command on the DOS command line. Normal FPServer operation will
resume the next time it is started without the additional command.
* Test mode may be used only with parallel ports. Few serial devices
support "dynamic" baud rates or per-byte hardware handshaking, and
thus FPServer cannot obtain useful information from such a test.
PRINTER SPEED SETTINGS
---------------------------------------
One way to improve printer throughput is to optimize the printer's
configuration. Many printers have setup options which can increase (or,
when incorrectly set, decrease) data throughput.
For example, the Hewlett Packard LaserJet IIISi's parallel port has an
optional HIGH SPEED mode which can be configured from the printer's front
panel. Setting HIGH SPEED=NO causes the IIISi to use a BUSY signal with a
minimum duration of 10 microseconds. Setting HIGH SPEED=YES reduces the
minimum BUSY duration to 1.5 microseconds - a significant reduction which
has a dramatic impact on data throughput.
Be sure to review your print device's documentation for speed-enhancing
configuration options. You may wish to contact the manufacturer for
specific recommendations or suggestions.
BRIDGES
---------------------------------------
Bridges, used to connect multiple networks, can impose limitations on
overall throughput. To understand why, it is useful to review the "data
path" for queued print data.
When a workstation requests that a job be printed, the data is directed
into a print queue. The print queue resides on a file server - one of the
file servers to which FPServer attaches during initialization. During job
servicing, the data is retrieved from the file server's hard drive, sent
through the network interface card, over the cable, into FPServer's network
interface card, and out to the print device. At a minimum, therefore,
queued print data must pass through two software programs (the file
server's operating system and FPServer) and two network interface cards
(one each on the file server and FPServer's host PC).
Internal bridges - i.e. multiple interface cards installed in the File
Server's backplane - are already in a "minimum" configuration. The fact
that the data was received on one network interface card and is transmitted
on another is unimportant, since it is buffered to hard disk in the
meantime. As a result, internal bridges do not restrict bandwidth.
In contrast, external bridges can impose significant bandwidth limitations.
The presence of an external bridge in the data path inserts at least one
more software program (the bridge operating system) and two more network
interface cards (one in and one out of the bridge). In many installations
this is probably compounded by the fact that bridges are often slower 80286
systems with inherently poorer throughput.
Self-contained bridges often have higher throughput than PC's used as
bridges. However, to maximize throughput, it is strongly recommended that
FPServer's host PC be connected to a network cable which runs directly to
the file servers containing the serviced print queues.
DEDICATED NETWORK CABLES
---------------------------------------
Contrary to popular belief, it is NOT necessary to connect a PC-hosted
print server to a file server via a dedicated network cable. Under most
circumstances (with most printers), the print server can share its cable
with other workstations and will not place an undue burden on the total
cable bandwidth.
MULTIPLE PORTS PER PRINT SERVER
---------------------------------------
Many times the first approach to increasing print server throughput is to
reduce its number of active ports. This is often very effective on other
print server software - but is COMPLETELY UNNECESSARY with FPServer.
FPServer incorporates a "dynamic linking/unlinking" algorithm which reduces
the overhead on inactive ports to ZERO. Whenever the queue associated with
a given hardware port is empty, FPServer unlinks the associated software
routines from its service chain as if the port had never been activated.
Only when a job is ready for service does FPServer relink the associated
hardware's service routines and begin devoting resources to it.
Careful design has also lessened the impact of multiple simultaneous jobs.
Reductions of under 10% are typical - rather than the 50% loss often
experienced with other print server software. As stated earlier, FPServer
generally has far more bandwidth capability than the print devices which it
drives, and that bandwidth is automatically optimized across currently
active devices in real time.
FPServer's high throughput also reduces the likelyhood, and duration, of
coincident jobs. Jobs are completed faster and are thus less likely to
incur even FPServer's small multi-job throughput degradation.
The bottom line is: There is little to no penalty when connecting multiple
devices to FPServer simultaneously. What may have required multiple
dedicated print servers in the past can now be handled with a single PC.
16 BIT NETWORK INTERFACES AND DRIVERS
---------------------------------------
The print server's network interface card can have more effect on overall
throughput than any other physical component. Recommendations can be
summarized into the following: Use a 16 bit network interface card with a
16 bit optimized driver.
16 bit network interface cards have been shown to have significantly
higher effective bandwidth than their 8 bit counterparts. While parallel
and serial port hardware is, by definition, 8 bits in width, the interface
to and from the network interface card's buffer memory has no such
architectural restriction and should thus be as wide as possible.
16 bit network interface cards should have drivers optimized for use in a
16 bit environment. It is possible to write a driver which is compatible
with both 8 bit and 16 bit hosts and interfaces. Such "universal" drivers
do not take adequate advantage of the host PC's 16 (or 32) bit processor.
Call the network interface card manufacturer, if necessary, and confirm
that the driver is specifically intended for use on 16 bit (read: 80286 and
up) microprocessors.
It is not my intention to give preferential treatment to any single vendor,
but I will report that 3Com's EtherLink III "Parallel Tasking" network
interface card has produced some of the most dramatic throughput values I
have measured to date. This performance, combined with an extraordinarily
low cost (under $130 street price), makes it an excellent choice for high
bandwidth applications such as FPServer.
EMM386.EXE AND DOS'S LOADHIGH
---------------------------------------
DOS 5.0, and many third-party utilities, allow drivers and portions of the
operating system to be loaded above the traditional 640K DOS memory area
(into a region commonly known as "high memory"). This is traditionally done
in an effort to release memory in the lower 640K for use by applications
software.
FPServer requires, at most, 400K of free memory. Amounts greater than that
are unused while FPServer is in operation and therefore wasted. If, just
prior to running FPServer, CHKDSK reports 400K or more free, loading
programs "high" will yield absolutely no advantages.
Loading programs "high" CAN yield disadvantages, however. A special device
driver is typically required to handle the redirection to software loaded
in "high" - and this driver can severely impact overall PC performance.
Measurements on DOS 5.0's EMM386.EXE show a 50% DECREASE in I/O bandwidth -
presumably because EMM386.EXE was intercepting I/O operations in case they
were intended for a program loaded "high". (This test was run without ANY
programs actually loaded high; just EMM386.EXE's presence in memory cut I/O
throughput in half.)
Use of Novell's XMSNETx.EXE and EMSNETx.EXE programs can impact throughput
because they too make use of memory outside the standard 640K. While very
useful in memory-bound environments, these programs are a detriment to
FPServer's bandwidth; furthermore, they are unnecessary since FPServer's
400K is seldom too great a demand on the host machine's resources.
In summary, FPServer will operate perfectly with DOS, network drivers, etc.
loaded "high". However, the low memory thus freed will very likely go
unused - and overall print server throughput will suffer needlessly. It is
strongly recommended that the host PC load all software in the standard
640K DOS memory area for maximum performance.
BUS CLOCK SPEEDS
---------------------------------------
*******************************************************************************
* CAUTION!!! *
* *
* The following section discusses altering the fundamental operating *
* characteristics of the host PC. Only individuals VERY EXPERIENCED *
* with PC's and their internal operation should modify these parameters. *
* Incorrect settings can render your PC inoperative. If you are not *
* COMPLETELY familiar with the architecture of your PC, please obtain *
* the assistance of a qualified PC Technician. *
* *
* Not all BIOS's allow these parameters to be modified. Please consult *
* your computer's documentation or manufacturer for more information and *
* specific recommendations. *
*******************************************************************************
Most AT-class PC's of recent vintage are fabricated using high integration
chipsets, where four or five "mega-chips" are equivalent to hundreds of
small- and medium-scale integration IC's. The BIOS included with PC's of
this type generally have a secondary setup screen where operational
parameters may be manipulated to fine tune the machine's performance. One
of these parameters, the Bus Clock, affects the speed with which operations
may be performed on the backplane - where the parallel, serial, and network
interfaces reside.
(For technical accuracy, it should be pointed out that there is no actual
"clock" signal, as such, on the backplane. Instead, this signal serves as
the fundamental for the various timing and control signals which actually
run the asynchronous AT bus.)
The Bus Clock is usually derived from the processor clock via division by a
value selected in the BIOS setup screens. Manipulating this divisor
inversely affects the Bus Clock (increasing the divisor decreases the speed
of the Bus Clock, and vice versa).
Typical Bus Clock divisor values which may be selected include 2, 3, and 4
which, on a 25MHz machine, would yield "bus speeds" of 12.5MHz, 8.33MHz,
and 6.25MHz respectively. The early IBM AT used an "8MHz" bus clock, thus
defining the lowest speed at which cards intended to be compatible must
operate. Since virtually all cards compatible with the AT backplane can
therefore be expected to run with an 8MHz Bus Clock, BIOS's for faster
(33MHz and 40MHz) processors usually include higher numbers to allow the
bus speed to reach the 8MHz range.
Since, as stated above, all AT cards are designed to accommodate 8MHz,
FPServer's host should always run its bus at 8MHz or above. FPServer's
throughput MAY be improved by decreasing the divisor value, and thus
increasing the Bus Clock, to operate the backplane cards at a faster speed.
Reduce the divisor ONE INCREMENT AT A TIME and carefully observe the
effects. You should reboot the machine multiple times to confirm reliable
operation at the new bus speed.
Regarding the Bus Clock's "upper limit": there seems to be an industry
threshold at 12MHz. While cards do exist which have been designed to
operate beyond that speed, they are definitely the minority. For safety,
consider 12MHz as the top end of the bus speed range.
Be sure to record the original values of all parameters before altering
them. It may become necessary to restore them in the future as other cards
are added to the system.
I/O WAIT STATES
---------------------------------------
*******************************************************************************
* CAUTION!!! *
* *
* The following section discusses altering the fundamental operating *
* characteristics of the host PC. Only individuals VERY EXPERIENCED *
* with PC's and their internal operation should modify these parameters. *
* Incorrect settings can render your PC inoperative. If you are not *
* COMPLETELY familiar with the architecture of your PC, please obtain *
* the assistance of a qualified PC Technician. *
* *
* Not all BIOS's allow these parameters to be modified. Please consult *
* your computer's documentation or manufacturer for more information and *
* specific recommendations. *
*******************************************************************************
I/O Wait States are another set of parameters which, like the Bus Clock
described above, affect the speed with which operations may be performed on
the backplane.
Many AT-compatible cards cannot accommodate the I/O speeds of which current
microprocessors are capable. The limiting factor is often the IC's used on
the cards; many logic families, fast enough for 4.77MHz 8088's, simply
cannot sustain the command and data rates of later generation
microprocessors.
Recognizing this, the high-integration chipsets used in so many AT-class
machines allow the insertion of "wait states" into input and output
operations. Simply stated, a wait state causes the processor to idle for a
known length of time - thus giving the external device a chance to react to
the processor's instruction. The slower the device, the greater the number
of wait states.
Wait states impose a heavy penalty on performance - not surprising since
the microprocessor is essentially being told to "hurry up and wait". Early
80286-class PC's, often advertised as 12MHz (or even 16MHz) machines, had
wait states on MAIN MEMORY and thus ran little faster than zero-wait-state
8MHz or 10MHz PC's.
The accepted norm is now to place all memory on the motherboard and run it
at full speed without wait states (or to include a cache which offsets some
of the impact of slow memory). The same is not true, however, of ports,
video boards, and other peripherals. Even when mounted directly on the
motherboard, the processor communicates with these components via I/O
instructions - rather than memory reads and writes - and thus any I/O Wait
States will directly impact their communications bandwidth.
As with the Bus Clock, acceptable values for I/O Wait States will vary
between different PC's, processor clock speeds, and combinations of
external cards. Empirical analysis (read: trial and error) is the best
method, since the goal is to obtain the fastest reliable operation for the
machine in question. Many BIOS's allow independent numbers of wait states
to be specified for 8 bit I/O operations (parallel and serial ports) and 16
bit I/O operations (most network interfaces), and different values may be
required for optimal performance.
FPServer's throughput MAY be improved by reducing the number of I/O Wait
States. Reduce the number of wait states ONE INCREMENT AT A TIME and
carefully observe the results. You should reboot the machine multiple
times to confirm reliable operation with the new values.
Be sure to record the original values of all parameters before altering
them. It may become necessary to restore them in the future as other cards
are added to the system.
===========================================================================
ERRORS AND TROUBLESHOOTING
===========================================================================
This section discusses some common problems and possible solutions.
PARALLEL PORT RUNS WITH PRINTER TURNED OFF
-----------------------------------------------
FPServer's parallel ports use the BUSY line to control data flow. A
printer holds its BUSY line inactive when it is ready to receive another
byte of data.
Depending upon the design of the printer's parallel port circuitry, the
printer may allow the BUSY line to "float" to its inactive state when
turned off. Since FPServer never sees the BUSY line go active, it assumes
the printer is ready to accept data and faithfully transmits it.
If you are experiencing this, you may confirm that the printer is floating
BUSY to its inactive state by turning off the printer, starting FPServer,
letting it begin transmitting a job to the printer, and then disconnecting
the cable from the back of the printer. Most likely, FPServer will stop
transmitting immediately. (Hewlett Packard LaserJet 4's behave in exactly
this manner.)
DISPLAYED JOB SIZE CHANGES DURING PRINTING
-----------------------------------------------
FPServer displays the size of the Current job while it is being serviced.
Initially, the size of the job is the number of bytes in the print queue.
However, the ACTUAL number of bytes can increase if either the banner or
formfeed options are enabled.
FPServer works hard to display accurate data. If a banner is generated for
the job, the number of bytes associated with it are added to the job size
display. If multiple copies are selected and the formfeed option is
enabled, the job size display will increment at the end of every copy.
This is normal, correct behavior and does not represent an error.
MESSAGE "Network Error: Abort, retry" APPEARS
-----------------------------------------------
FPServer's auto-reboot feature tracks the state of the host PC and will
perform a reset if it appears that the shell has lost connection with the
file server(s). The length of time that FPServer will wait before
auto-rebooting is programmable with the BOOTDELAY command.
If the value you specify with the BOOTDELAY command is too long, though, it
may exceed the timeout delay of the shell itself. In this case, the shell
will most likely display its infamous "Network Error: Abort, retry" message
and sit there waiting for you to answer the question.
The appearance of this message has no effect on FPServer's auto-reboot;
once the specified number of seconds has elapsed FPServer will still reboot
the host PC. If the message causes concern for you or other users,
progressively reduce the value in the BOOTDELAY command until FPServer
reboots the machine before the shell notices what's wrong. Please note,
however, that this is strictly an OPTIONAL step and is not necessary for
successful operation.
FLOPPY DRIVE SEEKS AT START OF EVERY JOB
-----------------------------------------------
FPServer print servers which boot from a floppy drive may seek that floppy
when print jobs start. This is caused by a bug in Novell's NETX shell:
When trying to open the NETQ device, the default drive is always checked
for a file of that name prior to the shell intercepting the error and
handling it as a network operation.
This bug is completely unnecessary and entirely fixable. Unfortunately,
Novell's official position on this bug is Yes, they do acknowledge it
exists, but No, they are not going to fix it in NETX. Instead, they
recommend that sites experiencing this problem change their shell from the
NETX environment to the NetWare v4.0-style "VLM" environment (which does
not exhibit the problem).
I am currently developing a workaround to this problem which may appear in
a future release of FPServer. In the meantime, you may safely ignore this
phenomenon; it is irritating, but does no damage.
PRINT JOBS START IN MID-LINE
-----------------------------------------------
FPServer generally acts as a straight wire between the print queue and the
printer: It passes the data exactly as found, adding and subtracting
nothing.
If the application which generated the print job did not include a printer
reset at the beginning of the data, the printer will most likely start
printing the job from the last printed position of the most recent job.
Often this is right in the middle of a line.
The easiest way to solve this problem is to use Novell's PRINTDEF and
PRINTCON utilities to define reset commands for the printer(s). When
finished, be sure to invoke the resulting printer definitions in your
CAPTURE and NPRINT statements.
Note that enabling the formfeed option does not change this behavior. A
formfeed is a single byte which does exactly that: Feeds a single form,
without changing the current printing position. No carriage return nor
linefeed is issued, and most printers do not automatically reset the
print position just because a formfeed was received.
Banners, however, DO generate a trailing carriage return. Since the
printer will have been printing the contents of the banner, its print
position must be reset to some known position - and the carriage return
provides this service.
CAN'T LOG IN AS MULTIPLE PRINT SERVERS
-----------------------------------------------
You may only use a single print server name with any one file server. Even
if all seven ports are servicing print jobs from a single file server, the
print server's name must be identical on EACH AND EVERY portQUEUE command.
This limitation is imposed by Novell. NetWare will not allow you to log in
to a file server as multiple entities simultaneously. You must select a
SINGLE print server object on each file server, give it rights to service
all desired print queues on that file server, and use that
fileserver/printserver pair in each portQUEUE command which refers to that
file server.
MESSAGE "<1 BPS" APPEARS
-----------------------------------------------
FPServer determines a job's data rate by dividing its total size by the
number of seconds it took to transmit. If the job took an extraordinary
length of time - or if the job is very small - the number of seconds may
exceed the number of bytes in the job. When this happens, FPServer
displays "less than one byte per second", or <1 BPS, because the job really
DID average less than one byte per second.
A common reason for jobs taking longer than their byte count is that
the printer was left offline. By the time someone notices it, the job
may have been "started" for quite a while - and enough time will have
passed to generate the "less than" message.
LASERJET DOESN'T AUTOMATICALLY RESET
-----------------------------------------------
When you Delete or Restart a print job using FPServer's console, the
parallel port's INIT line is activated to inform the printer that it
should reset itself and flush any data left in its buffers.
Unfortunately, Hewlett Packard has chosen to ignore the INIT line on
its family of LaserJet printers. It is impossible for any software -
including FPServer - to send a hardware-based asynchronous reset to
a Hewlett Packard LaserJet.
Hewlett Packard's suggestion is to send a PCL software reset command (ESC
E) to the printer. However, this will not work if the printer is "lost" in
its data stream (for example, in the middle of a graphics or font
transfer). To cover all possible problem cases, the printer must provide
support for a reset at any time... and the industry-standard way to do this
since the 1970's has been the parallel port's INIT line.
There is no workaround for this problem; you must reset your LaserJets
manually. (One of the main reasons for the portRESETDELAY command was to
specifically allow users enough time to manually reset LaserJets.)
PRINT JOBS APPEAR "STUCK" IN THE PRINT QUEUE
-----------------------------------------------
These are most likely print jobs with a target print date or time which is
still in the future. Such jobs may "bubble" to the top of the print queue,
yet remain unserviced while other, "later" jobs pass them by. You may
confirm this by running Novell's PCONSOLE and examining the job's target
date and time fields.
FPServer's Pending job display generally shows only those jobs which are
actually ready for printing. Print jobs which are still under construction
("Adding", as shown by Novell's PCONSOLE) or those which specifically
request service by a different print server are not shown.
The one exception to this rule is print jobs which meet all other
requirements but have a deferred print date or time. FPServer includes
these jobs so you may use its Prioritize option to immediately print them.
If this were not so, you could not highlight them and thus the Prioritize
option would not be available.
CONSOLE RESPONSE IS SLOW DURING PRINTING
-----------------------------------------------
FPServer optimizes throughput over everything else. If a print job is
being serviced which the target printer is willing to accept at a high rate
of speed, FPServer will allocate more resources to that port. These
resources are thus unavailable for processing keystrokes and the display.
Normal console response will return when the high speed job is finished.
PROBLEMS WITH SERIALLY-CONNECTED PLOTTERS
-----------------------------------------------
Most serial devices provide hardware handshaking (or "flow control") via
the Data Terminal Ready (DTR) signal. However, some devices - especially
pen, thermal, and electrostatic plotters - use the Clear To Send (CTS)
signal instead. The specific name of the signal is not important - but it
is CRUCIAL to connect the correct output of the print device to the DSR
input of the host PC. Be sure to review the documentation for your print
device if you are experiencing handshaking problems.
TIMING PROBLEMS AFTER SEVEN YEARS
-----------------------------------------------
FPServer's internal timebase overflows after approximately 7.5 years of
continuous execution. Be sure to stop, and then restart, FPServer as you
approach 7.5 years of uninterrupted operation! (smile)
===========================================================================
TECHNICAL DETAILS
===========================================================================
VALID PARALLEL AND SERIAL HARDWARE
---------------------------------------
FPServer always confirms the presence of valid parallel and serial
hardware. This is necessary because some software (including Novell's NETX
shell) can attempt to "simulate" ports for which no actual hardware exists.
Since FPServer interacts directly with port hardware, its absence could
cause operational problems and loss of data.
The verification process is based upon the circuit design used by IBM for
their original Personal Computer in 1981. Later variations on this design
have appeared in various platforms, but most attempt to remain downward
compatible with the original. Since the original IBM design is the only
one which can be considered a "standard", FPServer only requires that basic
level of capability.
For parallel ports, FPServer confirms the presence of an eight bit latch
and an eight bit readback buffer. On the original IBM PC's parallel port,
a 74LS374 octal D-style flip flop was used to store data written to the
port's data address. The outputs of these eight flip flops drove the data
pins on the output connector - and they also drove the inputs of a 74LS244
octal buffer. This buffer provided "read back" capability to the parallel
port hardware which was tested by the BIOS during initialization. FPServer
confirms the presence of a valid parallel port by writing various bit
patterns to the octal flip flop and reading them back via the octal buffer.
If the write and read data match, the port is assumed to be valid.
For serial ports, FPServer confirms the presence of an 8250-style UART
device at the specified address. 8250-style UART's contain read-write
registers, some of which have bits which are forced to a known state.
FPServer tests several of these registers, and if their behavior is as
expected the port is assumed to be valid.
INTERRUPTS
---------------------------------------
FPServer uses software interrupt 1C hex, the Timer Service Routine, for
various purposes. It does NOT use nor redirect hardware interrupt 8 (IRQ
0), the hardware Timer Tick, but instead lets the Timer Tick service
routine call it via interrupt 1C hex. FPServer's Int 1C routine "chains"
itself into the call sequence in the appropriate manner, and passes control
to the original Int 1C vector upon completion. When FPServer is terminated
by pressing Escape, the original Int 1C vector is properly restored.
FPServer does not use any hardware port interrupts. All of the IRQ lines
normally associated with parallel and serial ports (typically IRQ's 3, 4,
5, and 7) are ignored. FPServer does NOT disable them at the 8259A
interrupt controller, however, so they may be used for other purposes (such
as the network interface card) if necessary. Please note that, if the
interrupt lines are in use by another program, an appropriate driver must
be installed to service them.
"SAFE" VS. "FAST" PARALLEL OPERATION
---------------------------------------
There is no universally recognized timing diagram for a "Centronics"
parallel port. Different manufacturer's specifications offer a variety of
minimum and maximum pulse widths for Strobe, Busy, Acknowledge, and the
other signals which comprise the hardware handshaking system for this
industry "standard". Even different product manuals from Centronics itself
do not agree on a single set of values.
The vast majority of modern print devices treat Strobe as an "edge
sensitive" signal, which can be briefly interpreted as meaning that the
width of the pulse is less important than the fact that a pulse actually
occurred. FPServer's "Fast" parallel mode takes advantage of edge
sensitive devices to dramatically increase data throughput.
However, print devices may exist which are "level sensitive", meaning that
they expect to see Strobe stay active for a some minimum period of time.
Since there is no industry standard for a Centronics port's strobe pulse
width, FPServer's "Safe" parallel mode uses a value of 500 nanoseconds as
stated in the original IBM Personal Computer Technical Reference manual
(IBM document number 6025005), page 2-81.
FPServer's "Fast" parallel mode has been tested with a wide range of
parallel devices and, to date, none have proven incompatible. All parallel
ports default to "Fast" mode unless a corresponding portMODE=SAFE command
appears in the FPSERVER.CFG file or on the DOS command line.
"Safe" mode has been included to guarantee compatibility with the maximum
number of different parallel devices. However, for maximum throughput,
"Fast" mode is highly recommended.
===========================================================================
BUGS AND OTHER ANOMOLIES
===========================================================================
There are no known bugs in FPServer. However, that does not mean that none
exist! Bugs will be corrected as they are discovered (by me) or reported
(by you).
Please be sure to retry any failed operation before assuming it is a bug.
Any number of events can corrupt data flowing over a network cable (failing
network interface card, accidental disconnection of the cable, etc.). If
it happens once, and you cannot repeat it, it probably isn't a FPServer
bug.
If you have what appears to be a legitimate bug, I WOULD LIKE TO HEAR ABOUT
IT! Please be sure to document the hardware and software environment of
the bugs, along with (if possible) copies of the files which were being
printed at that time.
===========================================================================
ABOUT THE AUTHOR
===========================================================================
My name is Richard L. Hartman. I have over 12 years of formal experience
in the Electronics industry which started in analog circuitry and
progressed through the disciplines of discrete digital, integrated digital,
microprocessor, software, and management. My employment history includes
both Engineering and Marketing departments for everything from five-man
startups to companies with thousands of employees.
Along the way I have designed many successful products - the most prominent
of which is probably the Key Tronic KB5151 Enhanced PC Keyboard, the first
to have separate cursor and numeric keypads. Over 250,000 KB5151's have
been sold and its standard continues to influence keyboard design to this
day.
My consulting efforts are now concentrated in the area of Local Area
Networks - specifically the development of software which runs with, and
takes advantage of, Novell's NetWare Operating System. I am a Novell
Registered Professional Developer and actively pursue all topics, in all
disciplines, which involve this market segment.
Products like FPServer are my answer to the extremely high cost of
advertising in magazines and trade journals. I simply cannot justify the
money necessary to elevate myself and my services above the "noise floor"
established by multi-million dollar companies and their multi-page color
advertisements. Instead, I invest my TIME writing software which
(hopefully) has broad appeal and allows potential clients the opportunity
to sample my work without risk or expense. Then, if you like it, you can
pay for it. You incur zero up-front expense and zero risk.
My consulting services include:
Conceptual: A confidential, objective sounding board for new ideas
Feasibility: Assessment of technical viability
Engineering: Actual product design and development
Modification: Adding network intelligence to existing products
Testing: Verifying network compatibility
Training: Adding network programming to your staff's skill set
Recommendation: Network-oriented analysis of your current/future products
If you create network software - or are planning to - please contact me:
Richard L. Hartman (RLH)
Novell Registered Professional Developer
5205 North Mulvaney Court, Spokane, WA 99212-1611
509-924-6576 (Voice) 509-926-4626 (Fax) CompuServe 76350,2275