home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / lan / fps32d.zip / FPSERVER.DOC next >
Text File  |  1993-07-12  |  139KB  |  2,988 lines

  1.               FPServer: THE Fast Novell NetWare Print Server
  2.                                 Version 3.2
  3.                      Documentation File (FPSERVER.DOC)
  4.            ====================================================
  5.                          Richard L. Hartman (RLH)
  6.                  Novell Registered Professional Developer
  7.              5205 North Mulvaney Court, Spokane, WA 99212-1611
  8.      509-924-6576 (Voice)   509-926-4626 (Fax)   CompuServe 76350,2275
  9.  
  10.  
  11. ===========================================================================
  12. INTRODUCTION
  13. ===========================================================================
  14.  
  15. FPServer implements an EXTREMELY FAST, easy to use print server on a
  16. standard IBM compatible personal computer.  In this manner, it is very
  17. similar to Novell's own PSERVER.EXE.  However, unlike Novell's product,
  18. FPServer has been optimized for ultra-high data throughput and ease of
  19. control.
  20.  
  21. I carry out a great deal of research in the area of network printing.  I
  22. have spoken with equipment manufacturers, dozens of Network Administrators,
  23. and hundreds of users to obtain an understanding of what is important in a
  24. networked printing environment.  FPServer is one result of this research:
  25. THE definitive print server for Novell NetWare networks.
  26.  
  27. This file contains background information, a description of FPServer's
  28. features, a complete command list with examples, and technical data on
  29. design and architectural decisions.  There is a lot of data here, and it
  30. does not have to be read sequentially.  Feel free to "scan around"!
  31.  
  32.  
  33.  
  34. ===========================================================================
  35. BACKGROUND (WHY IT EXISTS)
  36. ===========================================================================
  37.  
  38. FPServer is a high-speed alternative to "black box" print servers,
  39. in-the-printer print server interfaces, and Novell's PSERVER.EXE.
  40. FPServer's primary design goal is ULTRA-HIGH DATA THROUGHPUT; its secondary
  41. design goal is EASE OF USE.
  42.  
  43. With all due respect to Novell (they write excellent network operating
  44. systems), their PSERVER.EXE is simply too slow for today's printing
  45. environments.  Running on an 80386DX-40 PC with light network traffic,
  46. Novell's PSERVER.EXE might attain 6K bytes per second on a parallel port (a
  47. more typical figure is 1500-2000 bytes per second).  With a typical 300x300
  48. DPI A-size graphic being 400K-500K or larger, Novell's PSERVER can consume
  49. four minutes or more just transferring the data to the printer.  Its
  50. console (screen and keyboard) also leave a lot to be desired.
  51.  
  52. Standalone, "black box" print servers (such as Intel's NetPort and
  53. Datacom's Series 8000, among others) also provide too little bandwidth for
  54. today's applications.  Their data rates (typically 8000 bytes per second)
  55. are only marginally better than Novell's PSERVER.EXE - still far too slow
  56. for near-megabyte print jobs - and they are generally limited to one or two
  57. printers per box.
  58.  
  59. Furthermore, neither "black box" nor in-the-printer interface cards have
  60. means for intelligent local control.  Their consoles are even worse than
  61. Novell's PSERVER - they have none at all.  Controlling these devices
  62. involves running back and forth between the printer and a PC: You can't see
  63. what's happening when you're at your workstation, and you can't do anything
  64. about it when you're at the printer!  Such inconvenience and limited speed
  65. hardly justifies a price tag of $500 or more EACH.
  66.  
  67. In contrast, FPServer can sustain data rates of 100,000 BYTES PER SECOND on
  68. a 386DX-40's parallel ports.  This reduces the transfer time of that 500K
  69. graphic from four minutes to FIVE SECONDS (assuming the printer can accept
  70. data that rapidly).
  71.  
  72. FPServer can drive up to SEVEN printers from a single host PC.  And
  73. FPServer suffers little or no throughput impact when servicing multiple
  74. print devices.  A dynamic linking/unlinking algorithm eliminates the
  75. overhead associated with idle print devices, and a real-time throughput
  76. analysis algorithm optimally distributes available bandwidth between active
  77. print jobs.
  78.  
  79. FPServer puts the limiting factor where it belongs: your printer, instead
  80. of your network.  FPServer's data rate is nearly always faster than that of
  81. the printers it is driving, which means shared printers are kept busy more
  82. of the time and users are kept waiting less of the time.  Even an old
  83. 8088-based 4.77MHz IBM PC can sustain nearly 10,000 bytes per second -
  84. faster than Novell's PSERVER and most other devices - while providing
  85. superior on-the-spot job control.
  86.  
  87. The bottom line: FPServer eliminates the network printing bottleneck and
  88. gives users control over their print jobs.
  89.  
  90.  
  91.  
  92. ===========================================================================
  93. ASSUMPTIONS ABOUT THE READER
  94. ===========================================================================
  95.  
  96. The material in this file has been written with the assumption that the
  97. reader has a solid understanding of the IBM Personal Computer architecture,
  98. DOS usage, and Novell NetWare operation.  In particular, it is assumed that
  99. you already have an operational NetWare network with established print
  100. queues running through some form of existing print server.
  101.  
  102. Many of the operations associated with setting up and maintaining printing
  103. services on a NetWare network require Supervisor-level authority.  If you
  104. are not your Network's Administrator, you may need to involve him/her in
  105. the process of installing FPServer the first time.  (Subsequent changes to
  106. FPServer's operation may be implemented without Supervisor assistance.)
  107.  
  108. Please consult the documentation for these other products if you have
  109. questions regarding them.
  110.  
  111.  
  112.  
  113. ===========================================================================
  114. NECESSARY EVILS
  115. ===========================================================================
  116.  
  117. My apologies for the following sections, but they are unfortunately
  118. necessary in today's world.  Please read them and then move on to the more
  119. interesting material which follows.
  120.  
  121.  
  122.  
  123. COPYRIGHT
  124. ---------------------------------------
  125.  
  126. All of FPServer's files and materials are copyrighted.  The UNALTERED,
  127. UNMODIFIED self-extracting file is hereby placed in the public domain; it
  128. may be copied, distributed, and used without restriction as long as it is
  129. not changed or modified in any way.  You are free to upload the unmodified
  130. self-extracting file, IN ITS ENTIRETY, to bulletin boards and other "common
  131. access" systems.  All other rights to FPServer are specifically reserved.
  132.  
  133. Registration and the purchase of one or more SoftKeys is required to obtain
  134. uninterrupted use of FPServer.  The above release to the public domain does
  135. NOT include such uninterrupted use nor the availability of SoftKeys.
  136. Please read the REGISTER.DOC file for complete registration information.
  137.  
  138. FPServer represents a significant investment of my time and effort.  It is
  139. my sincere hope that you will benefit from your use of this program.  I
  140. would appreciate you giving copies of FPServer to anyone (everyone!) you
  141. know that uses Novell NetWare.  Doing so costs you exactly nothing and
  142. makes it possible for me to continue writing such software.
  143.  
  144. Constructive comments may be incorporated into future upgrades, so your
  145. input is valuable.  Please submit them via (in order of preference)
  146. CompuServe, fax, mail, or voice (see above for numbers and addresses).
  147.  
  148. Please see "About the Author" at the end of this file for more information
  149. on my consulting services.  OEM and custom versions of FPServer are also
  150. available.  Thank you for your support!
  151.  
  152.  
  153.  
  154. DISCLAIMER
  155. ---------------------------------------
  156.  
  157. FPServer, and all of its associated files and programs, is provided without
  158. warranty of any kind.  The user of this software is solely responsible for:
  159. A) determining its suitability for any purpose, B) the accuracy of its
  160. operation, and C) the results obtained by its use.
  161.  
  162. As written, FPServer does not contain any "viruses" or other malicious
  163. routines.  However, such routines do exist and can be "attached" to
  164. otherwise benign and beneficial programs, often without obvious indication.
  165. FPServer does not attempt to detect the presence of such additions.  It is
  166. solely the user's responsibility to determine the "purity" of this software
  167. and its associated files.
  168.  
  169.  
  170.  
  171. ===========================================================================
  172. DESIGN PHILOSOPHY AND FEATURE LIST
  173. ===========================================================================
  174.  
  175. As stated above, FPServer has two design goals: Ultra-high data throughput
  176. and ease of use.  All Engineering projects involve some compromises (to
  177. which we refer as "design decisions" or "tradeoffs").  For FPServer, every
  178. such compromise was resolved primarily in favor of speed and secondarily in
  179. favor of ease of use.
  180.  
  181. Based on this philosophy, FPServer includes many features not available in
  182. other print server environments - and does NOT include some which are less
  183. important.  So that you may obtain better insight into the philosophy of
  184. FPServer, the following feature list describes some of these differences
  185. (and my reasons for them).
  186.  
  187.  
  188.  
  189. CONSOLE I/O
  190. ---------------------------------------
  191.  
  192. The FPServer console (screen and keyboard) system includes a detailed
  193. display for each port and queue being serviced.  This is in sharp contrast
  194. to the consoles offered by other programs (which often include little to no
  195. useful data) or "black boxes" and their printer-interface lookalikes (which
  196. offer no console at all!).
  197.  
  198. FPServer's main display includes:
  199.  
  200.     * The name of the print queue being serviced by each port
  201.  
  202.     * Each port's hardware status lines, including OFFLINE, PAPEROUT,
  203.       ERROR, and DTR OFF
  204.  
  205.     * The owner, print job title, and print job size of the job currently
  206.       being printed
  207.  
  208.     * The number of bytes which have been transmitted for the job currently
  209.       being printed
  210.  
  211.     * The owner, print job title, and average throughput for the most
  212.       recently completed print job
  213.  
  214.  
  215. You may "zoom" on any of FPServer's ports to obtain a closer look at that
  216. particular print queue.  The zoomed view includes all of the information
  217. described above, and adds a display of pending print jobs in the queue.
  218.  
  219. Once in the zoomed view, you may select the current or a pending job (if
  220. any) and perform various job-related operations right from FPServer's
  221. console.  That's right - you are able to control your printing while still
  222. standing next to the printer, instead of running back and forth between the
  223. print server and your PC.
  224.  
  225.  
  226.  
  227. DELETE PRINT JOBS - GRACEFULLY
  228. ----------------------------------------
  229.  
  230. If you've ever experienced a runaway print job, you know how inconvenient
  231. such a situation can be.  The print job data is spread out all over - some
  232. still in the print queue on the file server, some in the print server, and
  233. some in the printer.  To delete the job and stop wasting paper, you have to
  234. stop the printer, stop the print server, rush back to your PC, run Novell's
  235. PCONSOLE, delete the job from the print queue, restart the print server,
  236. and restart the printer.  What's worse, other print jobs being serviced by
  237. the print server are interrupted when you shut it down to clear its memory
  238. (this can make you VERY unpopular!).
  239.  
  240. FPServer eliminates the "runaway runaround" by allowing you to delete print
  241. jobs right from the print server console.  When "zoomed" on a single port,
  242. you may delete any print job (including the current one) by highlighting it
  243. and selecting Delete from a menu.  ALL traces of the job are deleted: The
  244. printer (if parallel) is reset, FPServer's buffer is emptied, and the job
  245. is deleted from the print queue.  A message reminding you to reset the
  246. printer manually (if necessary) is displayed on-screen and the port is held
  247. idle for a programmable period of time so you may reset the printer or
  248. manually flush its input buffer.
  249.  
  250.  
  251.  
  252. RESTART PRINT JOBS - CONVENIENTLY
  253. ----------------------------------------
  254.  
  255. FPServer's ability to delete print jobs is nice when you want to completely
  256. discard a runaway print job.  But what if you still need a copy of it?  You
  257. probably sent it because you needed it - and the fact that something went
  258. wrong doesn't mean you don't need it anymore.
  259.  
  260. For this reason, FPServer also allows you to RESTART print jobs.  When you
  261. select this option, FPServer holds the port idle for a programmable length
  262. of time - long enough for you to reset the printer, reposition the paper,
  263. or whatever - and then restarts the job from the very first byte.  A
  264. special message is displayed during the reset pause as a reminder to reset
  265. the printer.
  266.  
  267.  
  268.  
  269. PRIORITIZE PRINT JOBS - IMMEDIATELY
  270. ----------------------------------------
  271.  
  272. For those occasions when there's a large number of jobs ahead of yours -
  273. but YOU'RE the only person willing to stand by the printer and wait -
  274. FPServer allows you to prioritize your job to the top of the queue.  The
  275. current print job will be finished as usual (FPServer will not interrupt a
  276. job in progress) but the NEXT job to be serviced will be the newly
  277. prioritized one.
  278.  
  279.  
  280.  
  281. SIMPLE CONFIGURATION
  282. ---------------------------------------
  283.  
  284. FPServer's operational characteristics are controlled by two methods:
  285. commands in an ASCII configuration file (FPSERVER.CFG) and commands
  286. included on the DOS command line when FPServer is started.  All FPServer
  287. commands are "human readable", allowing you to easily review the print
  288. server's configuration.
  289.  
  290. Other file servers obtain their data from encoded files which can be
  291. manipulated only through ADDITIONAL programs.  The need to run separate
  292. software to change - or even just review - the print server's configuration
  293. makes setup and maintenance a lengthy, frustrating process.
  294.  
  295. FPServer first processes the contents of its FPSERVER.CFG file (if
  296. present), then interprets command line parameters (if any).  Later commands
  297. take precedence over earlier versions of the same command so you may
  298. temporarily modify FPServer's behavior via the DOS command line without
  299. editing any files or running any other programs.  You do not even need to
  300. be logged in to the network; just override (or supplement) the FPSERVER.CFG
  301. file right on the command line and press Enter.
  302.  
  303.  
  304.  
  305. CLEAN EXIT TO DOS
  306. ---------------------------------------
  307.  
  308. FPServer allows its execution to be terminated via an exit menu, just as
  309. any other well-behaved program.  Doing so immediately returns the machine
  310. to DOS - cleanly, with no "resident" code modules or "captive" memory.
  311. Other print server programs offer no clean exit to DOS, and sometimes even
  312. require the machine to be rebooted - an inconvenient and sometimes lengthy
  313. process.
  314.  
  315. The ability to cleanly exit to DOS is particularly helpful when used in
  316. conjunction with FPServer's command line parameters (see above).  You may
  317. experiment with various configurations by just exiting back to DOS,
  318. pressing F3 (get last command line), editing the command line parameters,
  319. and pressing Enter to restart FPServer.
  320.  
  321.  
  322.  
  323. INTELLIGENT REAL TIME OPTIMIZATION
  324. ---------------------------------------
  325.  
  326. FPServer's primary design goal is high bandwidth.  Unfortunately, the best
  327. way to achieve high performance is dependent on many different parameters.
  328. Some, like machine type, clock speed, and average network latency, do not
  329. vary greatly and could be entered by the user.  However, other parameters
  330. such as typical job size and the speed at which print devices accept data
  331. can vary dramatically from day to day and print job to print job.  To make
  332. matters worse, those parameters which have the greatest effect on
  333. throughput are also those which are the most difficult to predict - and
  334. that have the widest spectrum of possible behavior.
  335.  
  336. To address this, FPServer incorporates a two layer real-time optimization
  337. algorithm based on actual network and print device performance.  Port
  338. throughput (the speed at which each print device is accepting data) and
  339. network throughput/latency (the speed at which the network can supply data)
  340. are used to control the amount of processor resource dedicated to each
  341. task.  FPServer constantly monitors these conditions and adjusts its own
  342. operating parameters to assure that the maximum possible data rate is
  343. maintained on all ports.
  344.  
  345.  
  346.  
  347. NUMBER OF PORTS
  348. ---------------------------------------
  349.  
  350. FPServer will support up to seven ports on a single machine - three
  351. parallel and four serial.  These ports do not require interrupt lines
  352. (IRQ's) and may be based at any address in the host machine's I/O space.
  353. The mixture of three parallel and four serial allows a print server host to
  354. be constructed using commonly available and inexpensive "combo I/O" cards.
  355.  
  356. Further increasing the number of supported ports would have forced many
  357. other design decisions to be adversely compromised. Ultimately, I decided
  358. that if FPServer could be made to run fast enough, it would be more
  359. effective to use another old PC with standard (and inexpensive) parallel
  360. and serial hardware as a second Print Server.
  361.  
  362.  
  363.  
  364. MULTIPLE FILE SERVERS
  365. ----------------------------------------
  366.  
  367. More installations are moving to multi-server environments as networks
  368. become more common.  In support of this, FPServer now services up to seven
  369. separate file servers simultaneously.  Each port may be service jobs from a
  370. separate print queue on a separate file server - you do not need to
  371. consolidate all of your print jobs on a single file server.
  372.  
  373. You can also have multiple ports service a common print queue to reduce
  374. print job dwell time.  If you have duplicate printers, you can multiply the
  375. bandwidth of print job servicing by specifying the same print queue for
  376. multiple ports.
  377.  
  378.  
  379.  
  380. PROGRAMMABLE PORT ADDRESSES
  381. ----------------------------------------
  382.  
  383. FPServer allows you to explicitly specify the I/O addresses for each active
  384. port.  In addition to providing support for hardware which uses
  385. non-standard I/O, this allows you to logically rename ports regardless of
  386. their physical addresses.
  387.  
  388. Programming port addresses is an option, not a requirement.  If you do not
  389. specify an address for a port, FPServer will automatically derive the
  390. address from the BIOS data area in low memory.
  391.  
  392. Regardless of where the address originated (your command or BIOS), FPServer
  393. always confirms the presence of physical hardware before enabling it for
  394. use.  This prevents "artificial" ports which are generated by some programs
  395. from causing print server or network problems.
  396.  
  397.  
  398.  
  399. PORT INTERRUPT LINES NOT REQUIRED
  400. ---------------------------------------
  401.  
  402. FPServer does not require interrupt-driven parallel or serial ports, and
  403. ignores such interrupts if they are generated.  FPServer's architecture
  404. runs without interrupts for three reasons: 1) Many host PC's do not have
  405. seven interrupt lines available for such ports; 2) Most I/O cards do not
  406. support seven individual interrupt choices; and 3) FPServer's output
  407. routines are so tightly optimized for speed that the latency associated
  408. with servicing interrupts would actually REDUCE throughput!
  409.  
  410.  
  411.  
  412. DIRECT SUPPORT FOR FIFO'D PRINTERS
  413. ----------------------------------------
  414.  
  415. A recent development in high-speed (and especially laser) printers is the
  416. use of a small FIFO as the front end of the parallel port.  These buffers
  417. generally accept 8-32 bytes at extremely high data rates, store them
  418. internally, then interrupt the printer's microprocessor only when the FIFO
  419. is full.  This dramatically improves the efficiency of the printer's CPU.
  420.  
  421. To get maximum performance from these new printers, FPServer analyzes the
  422. data-reception behavior of parallel printers and optimizes its output
  423. algorithm for FIFO-based operation if detected.
  424.  
  425.  
  426.  
  427. ROBUST VIDEO SYSTEM
  428. ----------------------------------------
  429.  
  430. This release incorporates a vastly improved video system that has proven
  431. compatible with ALL video interfaces available for testing (even those
  432. non-standard AT&T 6300's!).  The new system automatically detects the type
  433. of interface and modifies its behavior accordingly.  All standard video
  434. systems are supported: MDA, MGA, CGA, EGA, VGA, and SVGA, on any type of
  435. monitor compatible with the video interface.
  436.  
  437. Active refreshing is also incorporated to maintain image accuracy.  Even if
  438. no data has changed, the screen is completely rewritten on a periodic basis
  439. in case shell errors or other anomolies cause display corruption.
  440.  
  441.  
  442.  
  443. FULL COLOR SCREEN DISPLAY
  444. ----------------------------------------
  445.  
  446. The new video system includes FULL COLOR support for machines equipped with
  447. color interfaces and monitors.  Colors are used to highlight information
  448. and warning messages; blinking is used to highlight errors and
  449. time-sensitive conditions.
  450.  
  451. Of course, monochrome-equipped systems are detected and accommodated as
  452. well.  Brightness and blinking are used in place of the color system's
  453. color attributes.
  454.  
  455.  
  456.  
  457. PROGRAMMABLE PRINTER RESET DELAY
  458. ----------------------------------------
  459.  
  460. When you delete or restart a print job, it may take you a few seconds to
  461. reset the printer, reposition the paper, and otherwise prepare to continue
  462. servicing print jobs.  Since every printer is different, FPServer allows
  463. the duration of the "job delete" and "job restart" delays to be programmed
  464. individually for each port.  Any value from 1-999 seconds may be specified,
  465. and during the delay the affected port will display a special message
  466. reminding you of the reason for the pause in job servicing.
  467.  
  468.  
  469.  
  470. PROGRAMMABLE QUERY DELAY
  471. ----------------------------------------
  472.  
  473. FPServer queries file server(s) periodically for new print jobs which
  474. require servicing.  While the amount of network cable traffic generated by
  475. such queries is small, a separate query is generated for each active port.
  476. Such constant scanning of print queues can generate a tremendous amount of
  477. network traffic - more than is justified for the few seconds saved at the
  478. start of a print job.
  479.  
  480. Therefore, when a print queue query finds no print jobs to service,
  481. FPServer delays before checking that print queue again.  FPServer allows
  482. you to increase this delay, if you wish, from its default of one-half
  483. second to any value in the range 1-999 seconds.  A separate value for each
  484. port allows you to tune the delays based upon the type of printer and its
  485. frequency of use.  More active printers may benefit from shorter delays
  486. (more frequent querying), while less-active printers may do just fine with
  487. only an occasional query.
  488.  
  489. Note that setting a port's query delay only affects the potential delay
  490. until a print job is started.  Once a job has been initiated, it runs at
  491. full speed regardless of the query delay setting.
  492.  
  493.  
  494.  
  495. PROGRAMMABLE POST-JOB DELAY
  496. ----------------------------------------
  497.  
  498. Here's another network printing suggestion straight from the people who
  499. know best: You, the actual users.  More and more printers are providing
  500. multi-language support (PCL, PostScript, etc.) by "analyzing" the first few
  501. bytes of print data to determine which emulation is being used.  Once the
  502. decision is made, the printer switches to that emulation and completes the
  503. print job.
  504.  
  505. When the printer is connected to a single PC with a single user, the pause
  506. at the end of each print job helps the printer decide when it must resume
  507. analyzing the data and choosing an emulation.  But in a shared (networked)
  508. environment, multiple print jobs can be sent to the printer back-to-back -
  509. making it impossible for the printer to distinguish between jobs even
  510. though they may be in different emulations.
  511.  
  512. To provide better support for these "auto-switching" printers, FPServer
  513. allows you to specify a post-job delay of 1-999 seconds.  This delay is
  514. inserted by FPServer immediately after each print job's last byte of data
  515. is sent to the printer.  A separate delay value is maintained for each port
  516. so that you may add the delay to those printers which require it without
  517. imposing it on those which do not.  By default, this delay is zero; but it
  518. is easy to add if your printer requires it.
  519.  
  520.  
  521.  
  522. AUTO-REBOOT ON MISSING SHELL
  523. ----------------------------------------
  524.  
  525. Network resources should operate autonomously, even when problems arise.
  526. File servers are a shared resource upon which many people depend.  For this
  527. reason, they are often equipped with uninterruptable power supplies (UPS's)
  528. so, if the power fails, they can shut down and then restart gracefully
  529. without operator involvement.
  530.  
  531. Print servers are also a shared resource, and they too should operate
  532. autonomously when problems arise.  When power is lost and then restored,
  533. PC-based print servers with AUTOEXEC.BAT files will automatically reboot
  534. into DOS, often faster than the file server itself reboots.  Since the PC
  535. is now "ahead of" the file server in its boot sequence, the PC's network
  536. shell will fail to find a file server and the print server software will
  537. fail to start.  A manual reboot of the print server - AFTER the file server
  538. is running - is then required.
  539.  
  540. FPServer solves this problem by confirming the presence of the network
  541. shell - and a valid connection to a file server - before initializing.  If
  542. no connection exists, or if the shell is not loaded, FPServer will display
  543. a message, wait 30 seconds, and automatically reboot the PC.  For debugging
  544. convenience, you may abort the reboot process and return directly to DOS
  545. during the 30 second pause by simply pressing any key.
  546.  
  547. FPServer will continue the "scan, delay, reboot" cycle until it finds an
  548. active file server, no matter how long the file server takes to reboot
  549. itself.  In this manner FPServer becomes a completely autonomous resource;
  550. if power is momentarily interrupted during the night, chances are your
  551. users will never know about it.
  552.  
  553.  
  554.  
  555. PROGRAMMABLE AUTO-REBOOT ON LOST NETWORK
  556. ----------------------------------------
  557.  
  558. Another problem which has traditionally plagued print servers is the "lost
  559. network".  This can be caused by anything from a file server going down to
  560. a temporary break in the network cable.  The result is the same: the shell
  561. loses contact with the file server, sometimes resulting in the message
  562. "Network Error: Abort, retry" appearing on the screen.  Such situations are
  563. confusing to users and have always required human intervention - until now.
  564.  
  565. FPServer now detects "lost network" and other lockup conditions.  Whether
  566. the shell reports it or not - with or without a "Network Error" message -
  567. FPServer will automatically cold-boot the PC after a programmable delay as
  568. long as the basic operation of the PC is not impaired.
  569.  
  570. This feature, in combination with Auto-Reboot on Missing Shell above, makes
  571. FPServer immune to almost all forms of network lockup and reboot failures.
  572. Simply stated, FPServer does not passively hope that everything goes well;
  573. it aggressively works to make SURE print services are available to all
  574. network users 24 hours a day.
  575.  
  576.  
  577.  
  578. LOW MEMORY REQUIREMENTS
  579. ----------------------------------------
  580.  
  581. FPServer incorporates a memory management system which takes advantage of
  582. traditional DOS memory.  However, even with all ports active, no more than
  583. 400K free DOS memory (as reported by the DOS utilities CHKDSK or MEM) is
  584. ever required.  This small memory requirement means that DOS, the network
  585. interface drivers, and the network shell itself can still be loaded into
  586. traditional DOS ("low") memory - exactly as they should be for maximum
  587. performance.
  588.  
  589.  
  590.  
  591. NOTIFY FOR JOB COMPLETE AND DELETE
  592. ---------------------------------------
  593.  
  594. FPServer supports the optional Notify parameter which sends a broadcast
  595. message to the job owner when a print job has been successfully completed.
  596. Unlike other print server software, however, FPServer sends this message to
  597. the originating WORKSTATION (rather than the specific username) in case the
  598. user has logged in under a different name since the job was submitted.
  599.  
  600. FPServer further enhances the Notify concept by notifying users of job
  601. deletion.  If the current print job is deleted from the queue before being
  602. successfully completed, FPServer will send a broadcast message to the
  603. originating workstation to notify it of the premature deletion.
  604.  
  605.  
  606.  
  607. BANNERS
  608. ---------------------------------------
  609.  
  610. FPServer supports optional "banner pages" which are printed at the start of
  611. a job.  Three fields are printed on four lines of enlarged (over one inch
  612. high) text: The name of the job owner, the description of the print job,
  613. and the date/time when the job started printing.
  614.  
  615. Unlike the banners provided by most other print server software, however,
  616. FPServer's banners ALWAYS present accurate information.  The job's owner
  617. and description are derived from data embedded in the job itself, rather
  618. than from data supplied by the user's CAPTURE or NPRINT statements.
  619. Date/time information is obtained directly from the file server (network
  620. time) instead of the print server's host PC (whose local clock may not be
  621. accurately set). In addition, the banner displays the date and time in a
  622. alphanumeric "DD Mon YY" format to avoid confusion over whether the day or
  623. month should be printed first in a purely numeric representation (different
  624. countries have varying standards).
  625.  
  626.  
  627.  
  628. FORMFEEDS
  629. ---------------------------------------
  630.  
  631. FPServer supports the optional FormFeed parameter which helps assure that
  632. new print jobs start at the top of a new page.  And FPServer's FormFeed
  633. option (when enabled) generates a new page at the end of EVERY COPY within
  634. the job so that each starts on its own new page.  This is in contrast to
  635. other print server software which only emits a formfeed at the END of the
  636. job, thus causing multiple-copy jobs to suffer from the same problem that
  637. the FormFeed option was intended to eliminate.
  638.  
  639.  
  640.  
  641. SOFTKEY-BASED LICENSING
  642. ---------------------------------------
  643.  
  644. There is only one "version" of FPServer: The fully operational version
  645. which includes all features and capabilities.  No handicapped "demo"
  646. versions exist, and no features are "hidden" until you spend money.  My
  647. idea is simple: You should base your decision to pay for and use FPServer
  648. on an examination of the complete product in your own environment.
  649.  
  650. This is made possible with "SoftKeys".  A SoftKey is a numeric key derived
  651. from the serial number of the copy of NetWare running on a file server.
  652. FPServer obtains your NetWare serial numbers directly from the file
  653. server(s) to which it is connected, and compares them with the SoftKeys you
  654. have supplied to it in its configuration file or on its command line.  If
  655. all connected file servers have correct SoftKeys, FPServer runs without
  656. interruption.
  657.  
  658. However, if one or more file servers have missing or incorrect SoftKeys,
  659. FPServer terminates after twenty minutes.  You can restart it as many times
  660. as you like - the program does not "destroy itself" or leave datestamps
  661. on your network drives - but every run of the program will terminate after
  662. twenty minutes.
  663.  
  664. This demonstration period allows you to experience what the terms
  665. "ultra-high throughput" and "ease of use" mean IN YOUR OWN ENVIRONMENT.
  666. You can completely configure FPServer for your network - fine tune all of
  667. its parameters, let other users play with it - on your own schedule and
  668. without any pressure.
  669.  
  670. As an example, in twenty minutes you can send 48 MEGABYTES to a Hewlett
  671. Packard LaserJet 4 (which accepts data at 40,000 bytes per second).  So you
  672. can test even those BIG jobs that leave other print servers gasping for
  673. breath.
  674.  
  675. If, after testing it in your own real-world environment, you decide that
  676. FPServer is not for you, simply stop using it.  There's no up-front
  677. expense, no refund hassles, no paperwork, no phone calls, no explanations
  678. to salesmen, no restocking fees - just stop using it.
  679.  
  680. But when you decide that YES, FPServer really does make a difference in
  681. your networked printing, simply register your file server serial number(s)
  682. via modem with FPServer's online registration system.  The NWSerial utility
  683. (NWSERIAL.EXE), included with FPServer, makes it easy to list your NetWare
  684. serial numbers; and complete registration instructions appear when you exit
  685. FPServer's demo (whether by timeout or keystroke).
  686.  
  687. Please read the REGISTER.DOC file for complete registration information.
  688.  
  689.  
  690.  
  691. MISCELLANEOUS ISSUES
  692. ---------------------------------------
  693.  
  694. FPServer does not support tab translation.  This capability is seldom used
  695. with today's software and printers, and with thousands of users worldwide I
  696. have NEVER received a request for it.
  697.  
  698. FPServer allows each port to service a single print queue.  Some other
  699. programs allow a port to service multiple queues.  Frankly, there are few
  700. sites where this capability is used; those that do are usually prioritizing
  701. time-sensitive print queues because network printing is so slow.  I chose
  702. to delete this capability because of its low usage, the impact it had on
  703. overall throughput, and the fact that FPServer's higher speed eliminates
  704. the need for queue prioritization.
  705.  
  706. FPServer does not support the concept of "forms".  But FPServer's ease of
  707. reconfiguration makes it easy to simulate it.  If you are actually swapping
  708. media in a single printer, set up separate print queues for each type of
  709. form, let users send their print jobs to the correct queue, and switch
  710. FPServer to that queue with a command-line override when you change the
  711. forms.
  712.  
  713. FPServer cannot be configured with Novell's PCONSOLE.EXE.  FPServer's many
  714. enhancements and options are completely unsupported by PCONSOLE, and
  715. FPServer's human-readable configuration file and command line parameters
  716. allow faster and more flexible setup and experimentation without it.
  717.  
  718. FPServer's status cannot be determined using Novell's PSC.EXE for the same
  719. reasons that PCONSOLE is inadequate.  Unlike Novell's PSERVER.EXE, FPServer
  720. provides complete status information directly from its console; a separate
  721. program is not required.
  722.  
  723. FPServer does not support the RPRINTER protocol.  By definition, RPRINTER
  724. is a slower process: data must pass through the network a second time, and
  725. then through another workstation, before reaching the target printer.
  726. FPServer's design goal was speed - and thus support for this inherently
  727. slower process was deleted.
  728.  
  729. FPServer does not "advertise" its presence on the network with NetWare's
  730. Service Advertising Protocol (SAP).  To be more specific, FPServer does not
  731. issue Server Identity Broadcasts nor respond to Service Advertising
  732. Queries.
  733.  
  734.  
  735.  
  736. ===========================================================================
  737. HARDWARE REQUIREMENTS
  738. ===========================================================================
  739.  
  740. HOST PC (PRINT SERVER)
  741. ---------------------------------------
  742.  
  743. FPServer may be used on virtually any PC which conforms to the generally
  744. accepted standards for IBM Personal Computer compatibility. There is no
  745. minimum processor architecture or speed; an 8088-based PC running at
  746. 4.77MHz is quite adequate.  A numeric coprocessor is neither required nor
  747. used, and if present will be ignored.
  748.  
  749. A video subsystem (interface and monitor) is required for initial setup.
  750. During operation, FPServer will display printer status and queue contents
  751. and allow users to manipulate jobs if a display is present.  Technically
  752. speaking, however, FPServer does not require a display for day-to-day
  753. operation.
  754.  
  755. FPServer does not require a keyboard if you are willing to go without some
  756. of its console interaction capabilities.  If you wish to use the host PC
  757. for other functions in addition to being a print server, a keyboard may be
  758. used to gracefully exit and later restart FPServer (a keyboard is probably
  759. also required for your other purposes).  However, for dedicated print
  760. server applications that power-up directly into FPServer, a keyboard is
  761. strictly optional as long as the host PC will successfully boot without
  762. one.
  763.  
  764. A disk drive is required to hold FPServer and its configuration file (both
  765. of which are relatively small).  A floppy drive is more than adequate for
  766. this task; in fact, if DOS and other required files (AUTOEXEC.BAT,
  767. CONFIG.SYS, etc.) will fit together with FPServer on a single floppy, that
  768. disk can serve as the boot device and no hard drive is required at all.
  769.  
  770. One or more ports are required for communication between FPServer and the
  771. print devices.  FPServer can support up to three parallel and four serial
  772. ports at any I/O address within the IBM PC's 64K I/O address range.  The
  773. interrupt lines normally associated with these ports (typically IRQ's 3, 4,
  774. 5, and 7) are completely ignored by FPServer and may instead be used for
  775. other purposes such as the network interface card.
  776.  
  777. FPServer requires no more than 400K free memory even when running its full
  778. compliment of three parallel and four serial ports.  FPServer does not
  779. require Extended memory (XMS) or Expanded memory (EMS) and ignores it if
  780. present.  Loading DOS and other programs in "high memory" (as allowed by
  781. later versions of DOS) provides no additional functionality and is not
  782. required unless the host machine otherwise has less than 400K free memory
  783. for FPServer.
  784.  
  785. Based on the above, a minimum hardware specification for an FPServer host
  786. PC would be an 8088 running at 4.77MHz with 1MB of memory, one low density
  787. floppy drive, one or more parallel and/or serial ports, no hard drive, no
  788. keyboard, and no video.  A disk in the floppy drive would contain the
  789. following:
  790.  
  791.      Bootable DOS (disk formatted with the /S option)
  792.      CONFIG.SYS file
  793.      AUTOEXEC.BAT file which loads network drivers and invokes FPServer
  794.      Novell's IPX.COM or the ODI environment programs
  795.      Novell's NETx.COM
  796.      SHELL.CFG (optional as required by Novell's software)
  797.      FPSERVER.EXE
  798.      FPSERVER.CFG (containing appropriate configuration data)
  799.  
  800.  
  801. ...all of which can comfortably fit on a 360K low density floppy.  Such a
  802. host PC would cost less than $300 even if purchased NEW.
  803.  
  804.  
  805.  
  806. PRINT DEVICES
  807. ---------------------------------------
  808.  
  809. FPServer may be used with any external device that supports hardware
  810. handshaking.  Device types are not limited to printers; any parallel or
  811. serial device which conforms to the requirements below may be used with
  812. FPServer.  Examples of "non-printer" devices include plotters, CRT
  813. terminals, modems - any device which can make use of queued data.
  814.  
  815. Parallel devices must conform to the generally accepted Centronics
  816. "standard" for parallel interfaces.  This well understood protocol
  817. incorporates hardware handshaking as part of its basic definition.
  818. FPServer has two parallel modes: "Safe" and "Fast".  Refer to the
  819. "Technical Details" section for more information.
  820.  
  821. Serial devices must provide hardware handshaking via the DTR (Data Terminal
  822. Ready) signal.  This is the most common form of hardware handshaking for
  823. serial devices and is supported by virtually every printing device
  824. available.  Most PC compatibles expect DTR on pin 6 of the standard 25 pin
  825. D-connector used for RS-232C; consult your computer's documentation for
  826. more information regarding the pinouts used on its serial ports.
  827.  
  828. FPServer does not support software handshaking.  This includes X-On/X-Off,
  829. ETX/ACK, ACK/NAK, and other purely software-based protocols.
  830.  
  831.  
  832.  
  833. PRINTER CABLES
  834. ---------------------------------------
  835.  
  836. The cables used to connect from the host PC on which FPServer executes
  837. to the print device(s) must meet certain minimum requirements.  These
  838. requirements differ for parallel and serial connections; each is detailed
  839. below.
  840.  
  841. For parallel connections, the cable must carry the following signals
  842. between FPServer's host PC and the printer (pin numbers refer to those
  843. traditionally used at the Centronics connector):
  844.  
  845.         STROBE      (pin 1)
  846.         DATA 1-8    (pins 2-9)
  847.         BUSY        (pin 11)
  848.         GROUND      (pins 19-30)
  849.  
  850.  
  851. Parallel cables should also connect the following signals, although they
  852. are not strictly required for successful operation:
  853.  
  854.         PE          (pin 12)
  855.         SLCT        (pin 13)
  856.         INIT        (pin 31)
  857.         ERROR       (pin 32)
  858.  
  859.  
  860. For serial connections, the cable must carry the following signals (typical
  861. pin numbers are not specified for serial connections due to the wide
  862. variety of connectors and pinouts used for RS-232C interfaces):
  863.  
  864.         Printer             Host PC
  865.         =======             =======
  866.           TxD --------------> RxD
  867.           RxD <-------------- TxD
  868.           DTR --------------> DSR
  869.           GND --------------- GND
  870.  
  871.  
  872. The arrows are included to clarify the direction of signal travel, since
  873. both ports have signals with identical names.  It is important to note that
  874. you CANNOT connect pins with the same name to each other; each must be
  875. connected to its "complementary" pin.  The sole exception is Ground, which
  876. has no direction or polarity.
  877.  
  878. Pay close attention to the DTR-DSR connection.  The PRINTER's DTR (which is
  879. an output) must drive the HOST PC's DSR (which is an input).  Connecting
  880. the opposite signals together - even though the names are the same - will
  881. prevent FPServer (and most other software) from functioning correctly.
  882.  
  883. Some serial devices, notably Engineering plotters, use the Clear To Send
  884. (CTS) signal instead of the more common DTR signal.  While CTS is more
  885. sensible (it accurately describes the function being performed), devices
  886. which use it are definitely in the minority.  If your device uses CTS
  887. instead of DTR, you must wire the cable so that the device's CTS signal
  888. appears at the host PC's DSR input.
  889.  
  890. All pin numbers should be confirmed with your equipment's own
  891. documentation.  In many cases wire "swapping" is necessary to move signals
  892. to the correct pins.
  893.  
  894. The DOS COPY command, unfortunately, is not a good indication of correct
  895. handshake wiring; it is often so slow that there is no possibility of
  896. filling the serial device's input buffer. A cable which works fine with the
  897. DOS COPY command may fail with FPServer simply because FPServer can supply
  898. data so much faster than DOS.  If the first part of your print job prints
  899. successfully, and then things seem to go wrong, it's quite likely that no
  900. hardware handshaking signals are being passed back to FPServer from the
  901. printer.  In this case, everything goes well until the serial device's
  902. buffer overflows - and then data loss takes over.
  903.  
  904.  
  905.  
  906. FASTER CLOCKS AND WIDER BUSES
  907. ---------------------------------------
  908.  
  909. FPServer's throughput performance is much less dependent upon the host PC
  910. than other print server software.  Most of its theoretical maximum
  911. throughput can be achieved on machines with (relatively) low processing
  912. power.  While an increase in speed will be realized by using a faster host
  913. PC, the advantage is that older, less expensive, less "user-desirable" PC's
  914. can be used as print servers with little or no performance penalty.
  915.  
  916. There are several reasons why a machine which is "twice as fast" does not
  917. yield a doubling of throughput.  First, PC parallel and serial ports are
  918. eight bit devices; all I/O involving these ports occurs eight bits at a
  919. time regardless of the processor's bus width.  An AT's 16 or 32 bit bus is
  920. still forced to interact with the port hardware eight bits at a time.
  921.  
  922. Second, most AT-style BIOS's insert wait states for eight bit I/O
  923. operations - and thus offset the advantage of increased clock speeds.  Most
  924. I/O cards are designed for operation in an 8MHz (or at most 12MHz) bus; a
  925. 25, 33, or 40 megahertz processor simply idles while its wait states time
  926. out during each input and output operation.
  927.  
  928. Because the code between port operations will be executed faster, some
  929. increase in maximum throughput will be obtained with faster machines.
  930. However, the relationship is not linear; a doubling of bus width or clock
  931. speed will not yield twice the data rate.
  932.  
  933. For example, FPServer running on an 80386DX-40 PC can sustain parallel data
  934. rates of 100,000 bytes per second.  An original IBM PC (8088 @ 4.77MHz) has
  935. only 1/50th the processing power of the 386 machine, and yet can still run
  936. FPServer at 10,000 parallel bytes per second.  In other words, a machine
  937. with only 2% of the processing power can still sustain 10% of the data
  938. rate.
  939.  
  940. Furthermore - and this is the most important consideration - print devices
  941. are almost ALWAYS the limiting factor.  Very few can accommodate FPServer's
  942. maximum output rate even when the host machine is just that 8088-based PC.
  943. Even Hewlett Packard's LaserJet 4, with its new 80960-based controller, is
  944. limited to approximately 40,000 bytes per second.  FPServer running on an
  945. 80386DX-40 has 2.5 TIMES that bandwidth.  Only the fastest output devices
  946. will find themselves waiting between bytes received from FPServer.
  947.  
  948. Before spending money on a faster PC host, be sure to run FPServer on a low
  949. end machine and compare its test mode performance with the rates obtained
  950. when driving a "real" printer.  Your oldest, slowest PC may be more than
  951. fast enough for the printers in question.
  952.  
  953.  
  954.  
  955. ===========================================================================
  956. CONFIGURATION COMMANDS
  957. ===========================================================================
  958.  
  959. FPServer's operation is controlled by commands which appear in a
  960. configuration file and on the DOS command line.  All commands, regardless
  961. of their location, use a common format.
  962.  
  963. For consistency, all commands which affect a specific port begin with the
  964. port's name (LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4).  Those which
  965. affect the overall operation of the software do not incorporate port names.
  966.  
  967. FPServer recognizes the following commands:
  968.  
  969.     portQUEUE           ...specifies print queue to be serviced
  970.     portMODE            ...specifies parallel port timing mode
  971.     portBAUDRATE        ...specifies serial port baud rate
  972.     portPARITY          ...specifies serial port parity
  973.     portDATABITS        ...specifies number of serial data bits
  974.     portSTOPBITS        ...specifies number of serial stop bits
  975.     portBASE            ...specifies parallel/serial I/O base address
  976.     portQUERYDELAY      ...specifies delay between print queue queries
  977.     portPOSTJOBDELAY    ...specifies delay after print job completion
  978.     portRESETDELAY      ...specifies delay for manual printer reset
  979.     BOOTDELAY           ...specifies delay before auto-reboot
  980.     REMARK              ...allows remarks in FPSERVER.CFG file
  981.     REM                 ...same as REMARK
  982.  
  983. Commands are processed in the order that they appear.  Those in the file
  984. FPSERVER.CFG are processed first, followed by any which appear on the
  985. command line.  Later commands take precedence over earlier, making it
  986. possible for command line parameters to temporarily override the contents
  987. of FPSERVER.CFG (this is extremely useful for experimentation and early
  988. setup).  No warning is issued if multiple, redundant commands are detected;
  989. the later commands (if valid) are processed and the earlier commands simply
  990. overridden.
  991.  
  992. Spaces may surround equal signs ONLY in the file FPSERVER.CFG.  Including
  993. spaces around equal signs on the command line will confuse DOS's command
  994. line parser and result in error messages.  Since spaces are never REQUIRED
  995. for any command, it is recommended that commands not include spaces at any
  996. time.  Examples in this file omit spaces in the recommended fashion.
  997.  
  998. All commands and their parameters are converted to capital letters prior to
  999. interpretation and are thus case-insensitive.
  1000.  
  1001.  
  1002.  
  1003. portQUEUE COMMAND
  1004. ---------------------------------------
  1005.  
  1006. The portQUEUE command defines the print queue to be serviced by a hardware
  1007. port.  Its format is as follows:
  1008.  
  1009.     portQUEUE=fileserver/printserver/printqueue,softkey
  1010.  
  1011. ...where:   port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
  1012.             fileserver = the name of the file server
  1013.             printserver = the name of a print server on that file server
  1014.             queuename = the name of a print queue on that file server
  1015.             softkey = the SoftKey for the specified file server
  1016.  
  1017. All three names - the file server, the print server, and the print queue -
  1018. MUST be included in every portQUEUE command in the exact format shown above
  1019. (separated by forward slashes and no extra spaces).  There are no default
  1020. values; if any of the names are missing, invalid, or incomplete, the
  1021. associated port is disabled.
  1022.  
  1023. During startup, FPServer logs in to the specified file server as the
  1024. specified print server and attaches to the specified print queue.  The
  1025. print server object must not require a password, and it must be authorized
  1026. to service the specified print queue.  If not, an error will be reported on
  1027. the port's screen display and the port will be disabled.  Network
  1028. Supervisors can create print server objects and remove print server
  1029. passwords using Novell's PCONSOLE utility; refer to Novell's documentation
  1030. for more information regarding the creation of print server objects.
  1031.  
  1032. The print server object should also have Operator rights to the specified
  1033. print queue, or several FPServer features will not be available.  Network
  1034. Supervisors can grant print queue Operator rights to print server objects
  1035. using the QRights utility (QRIGHTS.EXE) included with FPServer; refer to
  1036. the separate documentation file QRIGHTS.DOC for more information.
  1037.  
  1038. If a SoftKey is available for the specified file server, it must follow the
  1039. print queue's name with a separating comma (again, no extra spaces are
  1040. allowed).  A file server's SoftKey must be included in EVERY portQUEUE
  1041. command which references that file server; even a single portQUEUE command
  1042. without a valid SoftKey will cause FPServer to terminate after the demo
  1043. period.
  1044.  
  1045. The following example illustrates the correct use of the portQUEUE command.
  1046. If you wish FPServer to log in to the file server named FILE1, as the print
  1047. server object named PRINT6, and use LPT2 to service the print queue named
  1048. QUEUE3, you would use the following command:
  1049.  
  1050.     LPT2QUEUE=FILE1/PRINT6/QUEUE3
  1051.  
  1052. Because no SoftKey is supplied, this command would allow FPServer to print
  1053. jobs which appear in QUEUE3 only until the demo period expired.  If you
  1054. then register FILE1's serial number for use with FPServer and receive the
  1055. SoftKey 0123-4567:89AB-CDEF (for example), you would add it to the above
  1056. command as follows:
  1057.  
  1058.     LPT2QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF
  1059.  
  1060. VERY IMPORTANT: You must select a single print server object for each file
  1061. server and use that print server object in every portQUEUE command which
  1062. references that file server.  Due to a limitation in Novell's NetWare, you
  1063. cannot be logged in to one file server as multiple print servers
  1064. simultaneously.  Failure to heed this limitation will result in inoperative
  1065. ports.
  1066.  
  1067. There is no default for the portQUEUE command.  A port must have a valid
  1068. portQUEUE command to prevent that port from being disabled.  In addition,
  1069. even a single portQUEUE command without a valid SoftKey will cause FPServer
  1070. to terminate after the demo period.
  1071.  
  1072.  
  1073.  
  1074. portMODE COMMAND
  1075. ---------------------------------------
  1076.  
  1077. The portMODE command defines the parallel port strobe timing mode.  Its
  1078. format is as follows:
  1079.  
  1080.     portMODE=method
  1081.  
  1082. ...where:   port = LPT1, LPT2, or LPT3 (not COM1, COM2, COM3, nor COM4)
  1083.             method = either SAFE or FAST
  1084.  
  1085. FPServer supports two operational modes for the parallel ports: "Safe" and
  1086. "Fast".  Values other than SAFE or FAST are ignored.
  1087.  
  1088. The difference between them involves the timing of the Strobe signal and
  1089. the way that Centronics-equipped print devices are designed.  This subject
  1090. is discussed more thoroughly in the "Technical Details" section.
  1091.  
  1092. Generally, you should always specify FAST unless doing so results in
  1093. printer errors or garbled data.  No print devices tested to date have been
  1094. incompatible with the FAST setting, and using it significantly increases
  1095. FPServer's maximum throughput.  However, should the printer report an "I/O
  1096. Error" or start dropping characters, change that port's mode to SAFE and
  1097. compare the results.
  1098.  
  1099. The default for the portMODE command is FAST.
  1100.  
  1101.  
  1102.  
  1103. portBAUDRATE COMMAND
  1104. ---------------------------------------
  1105.  
  1106. The portBAUDRATE command defines the baud rate for a serial port.  Its
  1107. format is as follows:
  1108.  
  1109.     portBAUDRATE=value
  1110.  
  1111. ...where:   port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
  1112.             value = 110, 300, 600, 1200, 2400, 4800, 9600, 19200, or 38400
  1113.  
  1114. FPServer supports the nine baud rates shown above.  The full baud rate
  1115. value - three, four, or five digits - must be supplied including trailing
  1116. zeroes (i.e. "96" is invalid).  Values other than those shown above are
  1117. ignored.
  1118.  
  1119. There is no default for the portBAUDRATE command.  UART baud rates are
  1120. not initialized unless this command is specified.
  1121.  
  1122.  
  1123.  
  1124. portDATABITS COMMAND
  1125. ---------------------------------------
  1126.  
  1127. The portDATABITS command defines the number of data bits for a serial port.
  1128. Its format is as follows:
  1129.  
  1130.         portDATABITS=value
  1131.  
  1132. ...where:   port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
  1133.             value = 7 or 8
  1134.  
  1135. FPServer supports either 7 or 8 data bits.  Values other than 7 or 8 are
  1136. ignored.
  1137.  
  1138. There is no default for the portDATABITS command.  UART data bits are not
  1139. initialized unless this command is specified.
  1140.  
  1141.  
  1142.  
  1143. portPARITY COMMAND
  1144. ---------------------------------------
  1145.  
  1146. The portPARITY command defines the parity for a serial port.  Its format is
  1147. as follows:
  1148.  
  1149.     portPARITY=value
  1150.  
  1151. ...where:   port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
  1152.             value = ODD, EVEN, or NONE
  1153.  
  1154. FPServer supports the standard ODD and EVEN parity options in addition
  1155. to no parity at all.  Values other than ODD, EVEN, or NONE are ignored.
  1156.  
  1157. If ODD or EVEN parity is specified, FPServer will program the UART to
  1158. calculate and insert an additional bit into each serial word.  Specifying
  1159. NONE will disable parity and reduce the length of each serial word by one
  1160. bit.
  1161.  
  1162. There is no default for the portPARITY command.  UART parity is not
  1163. initialized unless this command is specified.
  1164.  
  1165.  
  1166.  
  1167. portSTOPBITS COMMAND
  1168. ---------------------------------------
  1169.  
  1170. The portSTOPBITS command defines the number of stop bits for a serial port.
  1171. Its format is as follows:
  1172.  
  1173.     portSTOPBITS=value
  1174.  
  1175. ...where:   port = COM1, COM2, COM3, or COM4 (not LPT1, LPT2, nor LPT3)
  1176.             value = 1 or 2
  1177.  
  1178. FPServer supports either 1 or 2 stop bits per serial word.  Values other
  1179. than 1 or 2 are ignored.  Please note that the UART associated with the
  1180. specified port may impose limitations on the number of stop bits allowed in
  1181. certain modes.
  1182.  
  1183. There is no default for the portSTOPBITS command.  UART stop bits are not
  1184. initialized unless this command is specified.
  1185.  
  1186.  
  1187.  
  1188. portBASE COMMAND
  1189. ---------------------------------------
  1190.  
  1191. The portBASE command defines the base of the I/O hardware address range for
  1192. a parallel or serial port.  Its format is as follows:
  1193.  
  1194.     portBASE=value
  1195.  
  1196. ...where:   port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
  1197.             value = a hexadecimal value of up to four digits
  1198.  
  1199. The value may be any legal hexadecimal value from one to four digits in
  1200. length in upper or lower case, with the exception of zero.  No
  1201. "punctuation", such as a leading "0x" or trailing "H", is required or
  1202. allowed.  Invalid values are ignored.
  1203.  
  1204. Most IBM PC-compatible hosts contain BIOS code which scans for parallel and
  1205. serial ports at industry-standard addresses and stores them for program
  1206. use.  FPServer normally uses these BIOS defaults for port I/O addresses,
  1207. and under most circumstances there is no reason to override them.
  1208.  
  1209. In reality, though, FPServer does not care what specific address is
  1210. associated with a given port name.  LPT1, COM3, etc. are just convenient
  1211. shorthand for "the first parallel port, the third serial port," and so
  1212. on.  Given no commands to the contrary, FPServer will match port names
  1213. to their industry-standard addresses just like any other software; but
  1214. the portBASE command allows you to force address values if you wish.
  1215.  
  1216. One use for the portBASE command is to support multi-port I/O cards which
  1217. pack a large number of parallel and/or serial channels into a single board.
  1218. Such interfaces commonly use non-standard I/O addresses which standard PC
  1219. BIOS's do not detect.  The portBASE command makes it possible to use such
  1220. interfaces with FPServer.
  1221.  
  1222. Another use for the portBASE command is to "move" port names.  For example,
  1223. if your host PC contains two parallel ports, they will most likely be
  1224. addressed at 3F8 hex (LPT1) and 2F8 hex (LPT2).  However, you can "swap"
  1225. the two ports - and thus the printers they drive - by specifying opposite
  1226. addresses as follows:
  1227.  
  1228.     LPT1BASE=2F8
  1229.     LPT2BASE=3F8
  1230.  
  1231. FPServer does not blindly accept hexadecimal values.  A detailed analysis
  1232. is performed at the specified address to confirm the presence of
  1233. industry-standard parallel or serial hardware.  If such hardware is not
  1234. present at the specified address, the portBASE command is ignored.
  1235.  
  1236. The default values for port base addresses vary from machine to machine,
  1237. and FPServer defaults to the addresses detected by BIOS for maximum
  1238. compatibility.  For reference, the addresses most commonly used for
  1239. parallel and serial ports are as follows (all values are in hexadecimal):
  1240.  
  1241.     Port    Mono System     Color System
  1242.     ----    -----------     ------------
  1243.     LPT1        3BC             378
  1244.     LPT2        378             278
  1245.     LPT3        278         not available
  1246.     COM1        3F8             3F8
  1247.     COM2        2F8             2F8
  1248.     COM3        3E8             3E8
  1249.     COM4        2E8             2E8
  1250.  
  1251. COM3 and COM4 are often not supported by BIOS code.  You may find that
  1252. COM3BASE and COM4BASE commands are required by your host PC even though
  1253. they reside at the "industry standard" addresses of 3E8 and 2E8.
  1254.  
  1255. The difference in parallel port addresses between monochrome and color
  1256. systems is due to the common practice of including a parallel port on
  1257. monochrome video interfaces.  Such mono-printer interfaces typically use a
  1258. special address, 3BC hex, which is normally ignored by separate parallel
  1259. interfaces.  If a parallel port is present at 3BC hex, most BIOS's will
  1260. treat it as LPT1 and move all other parallel ports "up" one position to
  1261. compensate.  (Serial ports are not affected by video type.)
  1262.  
  1263.  
  1264.  
  1265. portQUERYDELAY COMMAND
  1266. ----------------------------------------
  1267.  
  1268. The portQUERYDELAY command defines the amount of time, in seconds, a given
  1269. port will wait between print queue queries.  Its format is as follows:
  1270.  
  1271.       portQUERYDELAY=ddd
  1272.  
  1273. ...where:   port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
  1274.             ddd = delay in seconds
  1275.  
  1276. Values from 1-999 are accepted; the entry is truncated to the first three
  1277. digits.  Invalid values, including zero, are ignored.
  1278.  
  1279. Larger values will reduce network overhead but increase the delay from the
  1280. submission and the actual start of a print job.  Smaller values will cause
  1281. print jobs to start faster at a slight increase in network traffic.
  1282.  
  1283. The default queue query delay is one-half second; however, the minimum
  1284. value which may be specified with the portQUEUEQUERY command is one second.
  1285. For the absolute minimum delay, simply do not specify a portQUEUEQUERY
  1286. command.
  1287.  
  1288.  
  1289.  
  1290. portPOSTJOBDELAY COMMAND
  1291. ----------------------------------------
  1292.  
  1293. The portPOSTJOBDELAY command defines the amount of time, in seconds,
  1294. FPServer will delay after the completion of a print job before beginning a
  1295. new one.  Its format is as follows:
  1296.  
  1297.       portPOSTJOBDELAY=ddd
  1298.  
  1299. ...where:   port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
  1300.             ddd = delay in seconds
  1301.  
  1302. Values from 1-999 are accepted; the entry is truncated to the first three
  1303. digits.  Invalid values, including zero, are ignored.
  1304.  
  1305. The specified delay is ADDED to the query delay defined by the
  1306. portQUERYDELAY command for the specified port (if any).
  1307.  
  1308. The default value for the portPOSTJOBDELAY command is zero (no additional
  1309. delay after job completion).
  1310.  
  1311.  
  1312.  
  1313. portRESETDELAY COMMAND
  1314. ---------------------------------------
  1315.  
  1316. The portRESETDELAY command defines the amount of time, in seconds, FPServer
  1317. will delay after a job is manually restarted or prematurely deleted.  Its
  1318. format is as follows:
  1319.  
  1320.       RESETDELAY=ddd
  1321.  
  1322. ...where:   port = LPT1, LPT2, LPT3, COM1, COM2, COM3, or COM4
  1323.             ddd = delay in seconds
  1324.  
  1325. Values from 1-999 are accepted; the entry is truncated to the first three
  1326. digits.  Invalid values, including zero, are ignored.
  1327.  
  1328. The RESETDELAY command allows you to tailor the amount of time required for
  1329. you to help your printer recover from a restarted or prematurely deleted
  1330. print job.  Since different printers may require different amounts of time,
  1331. FPServer allows you to specify separate values for each port.
  1332.  
  1333. If a job has been restarted from FPServer's console, the next data to be
  1334. sent will be the restarted job.  If the current job has been prematurely
  1335. deleted, the next data will be the next job in the print queue.  If no jobs
  1336. are pending, no additional data will be sent.
  1337.  
  1338. The default value for the portRESETDELAY command is 10 seconds.
  1339.  
  1340.  
  1341.  
  1342. BOOTDELAY COMMAND
  1343. ---------------------------------------
  1344.  
  1345. The BOOTDELAY command defines the amount of time, in seconds, FPServer will
  1346. allow for a "lost file server" before rebooting the host PC.  Its format is
  1347. as follows:
  1348.  
  1349.       BOOTDELAY=ddd
  1350.  
  1351. ...where:   ddd = delay in seconds
  1352.  
  1353. Values from 1-999 are accepted; the entry is truncated to the first three
  1354. digits.  Invalid values, including zero, are ignored.
  1355.  
  1356. The default value for the BOOTDELAY command is 30 seconds.  This is
  1357. generally a good compromise between too small a value (which can cause
  1358. frequent resets in networks with heavy traffic) and too large a value
  1359. (which can needlessly delay restoration of printing services after power
  1360. outages, etc.).  You may, however, need to optimize this value for your
  1361. particular environment.
  1362.  
  1363.  
  1364.  
  1365. REMARK AND REM COMMANDS
  1366. ---------------------------------------
  1367.  
  1368. Remarks may be included in the FPSERVER.CFG file in the format:
  1369.  
  1370.     REMARK This is a comment
  1371.  
  1372. ...or:
  1373.  
  1374.     REM This is a comment
  1375.  
  1376.  
  1377. The space after the REMARK or REM command MUST be included.  REM and REMARK
  1378. lines are simply ignored by FPServer.
  1379.  
  1380.  
  1381.  
  1382. A MINIMAL FPSERVER.CFG FILE
  1383. ---------------------------------------
  1384.  
  1385. (Note: The SoftKeys in the following examples are not valid.  They are
  1386. included only for illustrative purposes.)
  1387.  
  1388. As noted in their individual descriptions, many of FPServer's configuration
  1389. commands default to standard values.  The number of commands actually
  1390. required for proper operation is therefore quite small.  In fact, a
  1391. completely operational print server can be established with a single
  1392. command: a portQUEUE command which specifies a print queue and the port
  1393. which is to service it.
  1394.  
  1395. An FPSERVER.CFG file containing the command:
  1396.  
  1397.     LPT1QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF
  1398.  
  1399. ...will yield a print server which attaches to the File Server FILE1, logs
  1400. in as the print server PRINT6, obtains jobs from the print queue QUEUE3,
  1401. and outputs them on the first parallel port using FAST mode.  All other
  1402. parallel and serial ports, if present, are disabled by default.
  1403.  
  1404. For a truly minimal configuration, the FPSERVER.CFG file can be eliminated
  1405. completely by including required commands on the command line itself.
  1406. Entering the following command at a DOS prompt:
  1407.  
  1408.     FPSERVER  LPT1QUEUE=FILE1/PRINT6/QUEUE3,0123-4567:89AB-CDEF  <enter>
  1409.  
  1410. ...will satisfy FPServer's minimal parameter needs and yield exactly the
  1411. same operation as if the FPSERVER.CFG file mentioned above were present.
  1412. Note that no spaces are present around the equal sign, in keeping with
  1413. DOS's command line parser requirements.
  1414.  
  1415.  
  1416.  
  1417. A TYPICAL FPSERVER.CFG FILE
  1418. ---------------------------------------
  1419.  
  1420. The following is an example of a more typical FPSERVER.CFG file for a
  1421. hypothetical network which uses many of the commands described above:
  1422.  
  1423.     Rem ****************************************************************
  1424.     Rem !!! PLEASE CONTACT JOHN DOE IN MIS BEFORE CHANGING THIS FILE !!!
  1425.     Rem ****************************************************************
  1426.     Rem - Print Server in Admin area is PS-ADMIN on file server ADMIN
  1427.     Rem - Admin. LaserJet IIID's queue is named PQ-LASERJET3D
  1428.     LPT1Queue=ADMIN/PS-ADMIN/PQ-LASERJET3D,0000-1111:2222-3333
  1429.     Rem - LaserJet IIID works fine with Fast parallel ports
  1430.     LPT1Mode=FAST
  1431.     Rem ----------------------------------------------------------------
  1432.     Rem - Admin. PaintJet's queue is named PQ-PAINTJET
  1433.     Rem - Print Server is identical; can only use one on each file server
  1434.     Rem - SoftKey is identical, because it's the same file server
  1435.     LPT2Queue=ADMIN/PS-ADMIN/PQ-PAINTJET,0000-1111:2222-3333
  1436.     Rem - PaintJet likes Fast parallel too
  1437.     LPT2Mode=FAST
  1438.     Rem ----------------------------------------------------------------
  1439.     Rem - Drafting's HP7580 plotter queue is PQ-HP7580, and...
  1440.     Rem - ...Drafting has its own file server named DRAFTING, and...
  1441.     Rem - ...they named their print server PS-DRAFT, and...
  1442.     Rem - ...SoftKey is different, because it's a different file server
  1443.     COM1Queue=DRAFTING/PS-DRAFT/PQ-HP7580,1111-2222:3333-4444
  1444.     Rem - Plotter is set up for 19200 baud, 8 data, no parity, 1 stop
  1445.     COM1BaudRate=19200
  1446.     COM1DataBits=8
  1447.     COM1Parity=None
  1448.     COM1StopBit=1
  1449.     Rem - It takes more than 10 seconds to put new paper in the plotter
  1450.     COM1ResetDelay=60
  1451.     Rem ----------------------------------------------------------------
  1452.  
  1453.  
  1454. Notice that uppercase and lowercase are mixed freely in this example.  As
  1455. mentioned above, FPServer capitalizes all alphabetic characters prior to
  1456. processing them.  Feel free to make the file "human readable".
  1457.  
  1458.  
  1459.  
  1460. ===========================================================================
  1461. INSTALLATION
  1462. ===========================================================================
  1463.  
  1464. INSTALLING FPSERVER.EXE
  1465. ---------------------------------------
  1466.  
  1467. There is no complicated installation procedure for FPServer.  The program
  1468. file itself, FPSERVER.EXE, may be placed in any subdirectory.  However,
  1469. since most host PC's will be dedicated to the task of print servers, it is
  1470. recommended that FPSERVER.EXE be placed in the root directory of the boot
  1471. device (probably either A: or C:) to reduce the size and complexity of the
  1472. AUTOEXEC.BAT file.
  1473.  
  1474.  
  1475.  
  1476. CREATING THE FPSERVER.CFG FILE
  1477. ---------------------------------------
  1478.  
  1479. The FPSERVER.CFG file, if used, may be created with any editing program
  1480. that can produce a "pure" ASCII file on disk.  Pure ASCII, in this context,
  1481. indicates that the file must not contain word processing commands or other
  1482. non-human readable information (essentially, it should include only
  1483. numbers, letters, and standard punctuation characters).  DOS's EDLIN and
  1484. EDIT programs and all text editors work in this manner; most word
  1485. processing programs also have a "text output" or "ASCII output" option that
  1486. prevents the inclusion of special formatting characters.
  1487.  
  1488. FPSERVER.CFG must reside in the default subdirectory in effect when
  1489. FPServer is invoked.  This does not mean that they must reside in the SAME
  1490. subdirectory, although that is definitely the most desirable (and least
  1491. error-prone) configuration.  What it DOES mean is that if, before typing
  1492. FPServer at the command line, you type "DIR <enter>", FPSERVER.CFG must be
  1493. one of the files shown in the current subdirectory.
  1494.  
  1495. Obviously, the best situation is to have both FPSERVER.EXE and FPSERVER.CFG
  1496. in the same subdirectory, and make that subdirectory the current one, when
  1497. starting FPServer.  The easiest way to insure this is to place both files
  1498. in the root directory of the boot device and be in that root directory.
  1499.  
  1500.  
  1501.  
  1502. TEMPORARY MODIFICATIONS
  1503. ---------------------------------------
  1504.  
  1505. One of the most convenient features of FPServer's configuration system is
  1506. the ability to temporarily override the contents of the FPSERVER.CFG file
  1507. with entries on the command line.  The fact that you need not be logged in
  1508. to the File Server between "sessions" of FPServer streamlines this even
  1509. further.
  1510.  
  1511. As an example, to change the queue being serviced by a printer-resident
  1512. interface, Novell's PSERVER, or a "black box" print server, you would have
  1513. to perform the following steps (assuming that the print server in question
  1514. already has sufficient rights to service the new queue):
  1515.  
  1516.     * Reboot the print server (since Novell's PSERVER.EXE does not provide
  1517.       a "clean" exit to DOS)
  1518.  
  1519.     * Log in using an account with sufficient rights to modify the
  1520.       parameters of the print server in question
  1521.  
  1522.     * Run Novell's PCONSOLE.EXE
  1523.  
  1524.     * Work your way down through the menu system until you reach the level
  1525.       at which the "Queues to be Serviced" can be edited
  1526.  
  1527.     * Delete the old queue and enter the new one, specifying the correct
  1528.       parallel or serial port as you do so
  1529.  
  1530.     * Back out of the menu system until you reach DOS again
  1531.  
  1532.     * Restart the print server
  1533.  
  1534.  
  1535. Through all of this, you will have to reboot the print server at least once
  1536. and run two separate programs - just to try something a little different.
  1537. If you do not like the results, you get to go through the entire routine
  1538. again just to put things back the way they were.
  1539.  
  1540. In contrast, FPServer can be reconfigured the same way with the following
  1541. steps:
  1542.  
  1543.     * Exit to DOS by pressing Escape, then Y on the print server's host PC
  1544.  
  1545.     * Press F3 to recover the "FPServer" command line that last started the
  1546.       software
  1547.  
  1548.     * Add the appropriate "portQUEUE=" command to the end of the command
  1549.       line (which will override any similar command in FPSERVER.CFG)
  1550.  
  1551.     * Press Enter!
  1552.  
  1553. This amounts to 14 keystrokes plus the queue specification.  There is no
  1554. need to reboot the host PC, or log in as someone else, to change FPServer's
  1555. operation - just a few keystrokes and a few seconds completely reconfigures
  1556. its behavior.
  1557.  
  1558. To restore things back to the way they were, simply exit again, type
  1559. FPServer on the command line, and press Enter.  Eleven keystrokes and
  1560. everything reverts back to the configuration you originally specified in
  1561. FPSERVER.CFG.  Neither Novell's PSERVER.EXE nor any "black box" can touch
  1562. FPServer for ease of use!
  1563.  
  1564.  
  1565.  
  1566. PERMANENT MODIFICATIONS
  1567. ---------------------------------------
  1568.  
  1569. To make configuration changes permanent, simply modify the FPSERVER.CFG
  1570. file using your ASCII text editor.  Again, this may be done by simply
  1571. Escaping out of FPServer, running the editor, and restarting FPServer. It
  1572. is not necessary to reboot the host PC nor even log in to the File Server.
  1573.  
  1574.  
  1575.  
  1576. ===========================================================================
  1577. NORMAL OPERATION
  1578. ===========================================================================
  1579.  
  1580. STARTING THE PRINT SERVER
  1581. ---------------------------------------
  1582.  
  1583. FPServer may be started by typing its name at any DOS prompt and pressing
  1584. Enter.  However, in most installations, the PC will be dedicated to the
  1585. print server application.  In such environments, FPServer may be included
  1586. as the last command in the PC's AUTOEXEC.BAT file to completely automate
  1587. its startup.
  1588.  
  1589. Configuration commands may optionally follow FPServer's name up to the
  1590. limit that DOS imposes on the length of the command line.  See the
  1591. "Controlling PSERVER's Operation" section earlier in this file for more
  1592. information regarding configuration commands and their parameters.
  1593.  
  1594. Regardless of the startup method chosen, the FPSERVER.CFG file must reside
  1595. in the default directory when FPServer is invoked.  See "Creating the
  1596. FPSERVER.CFG File", above, for more information.
  1597.  
  1598.  
  1599.  
  1600. Console Response Time
  1601. ---------------------------------------
  1602.  
  1603. A note about console response time: During especially high speed print
  1604. jobs, FPServer's console operations may slow somewhat.  This occurs when
  1605. FPServer has detected the opportunity to establish a high-bandwidth path to
  1606. one or more printers and is redirecting processor resources accordingly.
  1607. Since FPServer ALWAYS favors throughput over everything else (ease of use
  1608. is secondary, remember), response to the keyboard and screen may slow when
  1609. a high speed job is being serviced.
  1610.  
  1611. If FPServer seems to be ignoring your keystrokes, don't worry - they are
  1612. being stored in an internal buffer until the print job has an idle moment.
  1613.  
  1614.  
  1615.  
  1616. THE MAIN SCREEN
  1617. ---------------------------------------
  1618.  
  1619. The main print server screen is separated into eight regions: a title block
  1620. at the top which contains text information, and seven port displays - one
  1621. for each of the seven hardware ports supported by FPServer.  All port
  1622. displays are identical in their content.  The following description is
  1623. applicable to all.
  1624.  
  1625.  
  1626.  
  1627. The Status Line
  1628. ---------------------------------------
  1629.  
  1630. The top, or status, line of each port display contains the traditional name
  1631. for the associated hardware port (LPTx or COMx).  This is followed by the
  1632. name of the print queue to which this hardware port is logically attached
  1633. (as specified by the portQUEUE command in either the FPSERVER.CFG file or
  1634. the command line).  The print queue's name is truncated, if necessary, to
  1635. fit on the status line.
  1636.  
  1637. The right side of the status line displays port information.  The first
  1638. parameter reports throughput limitations:
  1639.  
  1640.      Printer Limited    (Parallel only.)  FPServer is capable of
  1641.                         transferring data more quickly, but the printer's
  1642.                         BUSY line is not allowing it to do so.  The printer
  1643.                         asserts BUSY when it is unable to accept another
  1644.                         byte of data. This occurs after each byte is
  1645.                         transmitted and during intensive printer
  1646.                         processing.  FPServer must wait for BUSY to go
  1647.                         inactive again before transmitting the next byte.
  1648.                         This is the most common limiting factor for
  1649.                         parallel printers.
  1650.  
  1651.      Baud Limited       (Serial only.)  FPServer is capable of transferring
  1652.                         data more quickly than the selected baud rate will
  1653.                         allow.  Increasing the baud rate may improve
  1654.                         printing speed somewhat.
  1655.  
  1656. Each port's status line also displays printer information to the extent
  1657. that it is available from the printer itself (more data is available from
  1658. parallel devices than from serial devices):
  1659.  
  1660.      OFFLINE            (Parallel only.)  The printer is off line.
  1661.  
  1662.      PAPEROUT           (Parallel only.)  The printer is out of paper.
  1663.  
  1664.      ERROR              (Parallel only.)  The printer is in an error
  1665.                         condition, other than Off Line and Paper Out, for
  1666.                         which no further information is available.  This
  1667.                         may be caused by an access cover being open, low
  1668.                         toner or ink, erroneous data, or loss of power.
  1669.                         Many printers indicate such errors on their front
  1670.                         panels.  Consult the printer's documentation.
  1671.  
  1672.      DTR Off            (Serial only.)  The printer is momentarily not
  1673.                         accepting data.  This generally occurs when the
  1674.                         baud rate is faster than the printer's effective
  1675.                         throughput rate.  With data coming in faster than
  1676.                         it can be printed, the input buffer fills until
  1677.                         eventually the printer can accept no more data.
  1678.                         The printer then "turns off" the DTR line to
  1679.                         prevent further transmission until it has emptied
  1680.                         the buffer to some extent.
  1681.  
  1682. For parallel devices, the BUSY line is the only parameter which controls
  1683. the transfer of data.  OFFLINE, PAPEROUT, and ERROR are reported by
  1684. FPServer but do not affect data flow.  Many printers - especially those
  1685. with large input buffers - are capable of accepting data while offline
  1686. and/or out of paper, and FPServer supports them without limitation.
  1687.  
  1688. Serial devices use DTR as their sole means of flow control, and thus
  1689. FPServer must cease sending data when DTR goes "off".
  1690.  
  1691.  
  1692.  
  1693. The "Former" Line
  1694. ---------------------------------------
  1695.  
  1696. The Former line appears immediately beneath the status line.  It displays
  1697. the owner, description and average speed (in bytes per second) of the most
  1698. recently completed print job.
  1699.  
  1700. The average speed is calculated by dividing the job's size by its duration
  1701. in integer seconds.  A job's duration is considered to start when the first
  1702. byte of data is received from the print queue and end when the last byte of
  1703. data is transferred to the printer.  ANY event which lengthens this amount
  1704. of time - and thus adversely affects the overall amount of time consumed by
  1705. the job - will correctly result in a decrease of the average speed.  This
  1706. includes running out of paper, going off line, and other "normal"
  1707. occurrances.
  1708.  
  1709.  
  1710.  
  1711. The "Current" Line
  1712. ---------------------------------------
  1713.  
  1714. The Current line appears beneath the status line.  It displays the owner,
  1715. description, size, and progress of the job currently being printed.
  1716.  
  1717. The progress display appears on the right side of the Current line and
  1718. indicates the number of bytes which have been sent to the printer.  The
  1719. value is updated as the device accepts more data from FPServer.
  1720. Interruptions in data flow will cause this value to stop increasing (since
  1721. the device is not accepting data).
  1722.  
  1723. A job remains on the Current line until the last byte of data is accepted
  1724. by the printer.  When the last byte has been successfully transferred,
  1725. FPServer notifies the file server that the job has been completed (so it
  1726. can be removed from the print queue) and passes the completion information
  1727. to the Former line (described above).
  1728.  
  1729.  
  1730.  
  1731. THE PORT SCREEN ("ZOOMED" VIEW)
  1732. ---------------------------------------
  1733.  
  1734. When the main screen is displayed, a highlight appears on the left and
  1735. right sides of the image.  This highlight can be moved up and down using
  1736. the cursor keys, thus allowing you to select one of the seven ports.
  1737.  
  1738. A note on the highlight: The choice of "arrows" was made for maximum
  1739. compatibility with the widest variety of video monitors.  It is common for
  1740. old, phosphor-burned (and usually monochrome) monitors to be used on print
  1741. servers.  Such units often have difficulty displaying colors, fine
  1742. contrasts, and sometimes even differences in brightness.  A
  1743. moving-character highlight was therefore used to insure compatibility with
  1744. almost ANY monitor.  If you can even barely distinguish individual
  1745. characters on the screen, you can use that monitor with FPServer!
  1746.  
  1747. Once an individual port has been selected, pressing Enter will "zoom" on
  1748. that port.  The area previously devoted to displaying all seven ports will
  1749. be used to display information on just the selected port.
  1750.  
  1751. The zoomed view includes the selected port's Status, Former, and Current
  1752. lines.  The remaining lines form a queue display showing pending jobs ready
  1753. to be printed.  Multiple pending jobs are shown in the order they will be
  1754. printed, with the topmost job being first.  Each pending job displays its
  1755. owner and its description.
  1756.  
  1757. Jobs appear in the Pending area only when they are complete and ready for
  1758. service.  This differs from other print server programs, which often
  1759. display jobs still being uploaded to the file server.  The problem with
  1760. including such incomplete jobs is that a prioritized list, such as the one
  1761. in the Pending area, can be rendered inaccurate at any moment by a smaller
  1762. job which started later but finished queuing first.  Such a job can "jump
  1763. ahead" of the incomplete jobs - seeming to "pop" into the Current line
  1764. without ever having been in the queue.  FPServer prevents this problem by
  1765. only displaying those jobs which are complete and ready to go: the order in
  1766. which they are displayed is the order they will be printed.
  1767.  
  1768. The one exception to this rule is delayed or "deferred" print jobs. NetWare
  1769. allows the printing of jobs to be delayed until some future date and time.
  1770. FPServer honors this feature, but includes such jobs in the Pending display
  1771. for two reasons: 1) So you know they are there, and 2) So you can
  1772. Prioritize them if you wish (described below).  If print jobs appear which
  1773. seem "stuck" in the queue, the most likely explanation is that they have a
  1774. future print date/time specification.  (Novell's PCONSOLE can be used to
  1775. confirm this.)
  1776.  
  1777.  
  1778.  
  1779. THE PORT MENU
  1780. ---------------------------------------
  1781.  
  1782. The zoomed port view incorporates a highlight much like the one on the main
  1783. screen.  In this case, however, the highlight is used to select the Current
  1784. print job or one of the Pending print jobs.
  1785.  
  1786. Once the Current or a Pending job is selected, pressing Enter will display
  1787. a menu of job-related options.  From here, you may choose to Delete, Restart,
  1788. or Prioritize the highlighted job.
  1789.  
  1790. The following sections describe the options available from the port menu.
  1791. Please note that the QRights utility, which accompanies FPServer, must be
  1792. used to grant print queue Operator rights to FPServer before any of these
  1793. features can be used.
  1794.  
  1795.  
  1796.  
  1797. Deleting Print Jobs
  1798. ---------------------------------------
  1799.  
  1800. You may delete either the Current or any Pending print job.  This is a very
  1801. powerful capability which saves you from running back and forth between the
  1802. printer and a workstation running Novell's PCONSOLE.
  1803.  
  1804. Deleting a Pending print job simply removes it from the print queue.  There
  1805. is no effect on the Current print job (if any).
  1806.  
  1807. Deleting the Current job immediately stops data transmission to the
  1808. printer, flushes the job from FPServer's local buffers, deletes the job
  1809. from the print queue, and issues a hardware reset to the printer (if
  1810. parallel).
  1811.  
  1812. There is no industry-standardized method for issuing a hardware reset to
  1813. serial printers.  Worse yet, not even all parallel printers obey the
  1814. parallel port's INIT line.  The most glaring exception is Hewlett Packard's
  1815. LaserJet printers: not a single model in their entire line supports the
  1816. INIT signal, even though its function was recognized and supported YEARS
  1817. before the first LaserJet shipped.  Extensive discussions with HP's Boise,
  1818. Idaho facility (where the LaserJet product line originates) has never
  1819. yielded a reason for this omission.  The effect on HP's customers: it is
  1820. impossible for FPServer, or any other software, to asynchronously reset a
  1821. LaserJet with a hardware signal - even when the data stream is "lost" and a
  1822. software reset command would be ignored.  Most other parallel printers will
  1823. react to FPServer's hardware reset and flush their buffers automatically;
  1824. but YOU have to manually reset a LaserJet.
  1825.  
  1826. When you delete a print job from within FPServer, a broadcast message is
  1827. sent to the originating workstation if the job's owner enabled the Notify
  1828. option.
  1829.  
  1830.  
  1831.  
  1832. Restarting Print Jobs
  1833. ---------------------------------------
  1834.  
  1835. Restart is another port menu option.  It is available only when the Current
  1836. job is highlighted (not when a Pending job is selected).  Restart behaves
  1837. much like the Delete option described above - data transmission is halted,
  1838. FPServer's buffers are flushed, the printer is reset - but instead of the
  1839. job being removed from the print queue, it is restarted from the beginning
  1840. after the port's reset delay times out.
  1841.  
  1842. Restart is handy for obtaining a "good" copy of a runaway print job.  If
  1843. you believe the data in the print job is accurate and the problem stems
  1844. from a one-time data phasing error, Restart allows you to reset the
  1845. printer, "clean up" everything, and try again without having to completely
  1846. regenerate the print job.  (If the problem persists, you can always decide
  1847. to Delete it anyway.)
  1848.  
  1849.  
  1850.  
  1851. Prioritizing Print Jobs
  1852. ---------------------------------------
  1853.  
  1854. Prioritize allows you to move the highlighted print job to the "top" of the
  1855. Pending job list.  If you send a print job to a busy print queue, you may
  1856. find it nested deep in the Pending list, and it may take minutes or even
  1857. hours for the printer to reach your job.
  1858.  
  1859. On the premise that the person standing at the print server must be in a
  1860. greater hurry than one who is not, selecting Prioritize will advance the
  1861. highlighted job ahead of all others in the print queue.  The Current job
  1862. (if any) will not be interrupted, and the relative order of the other
  1863. Pending jobs will not be altered - but the highlighted job will move
  1864. directly to the top of the print queue and be the next job serviced by
  1865. FPServer.
  1866.  
  1867. Prioritize works on all print jobs, including those which have been
  1868. specifically "deferred" to a date or time in the future.  This can be used
  1869. in interesting ways: For example, you can submit print jobs with a target
  1870. print date far in the future (thus causing them to sit in the queue
  1871. indefinitely), then "print on demand" by walking up to FPServer's console
  1872. and Prioritizing the desired job(s).
  1873.  
  1874. If you are REALLY in a hurry, you can force FPServer to start a specific
  1875. Pending job immediately.  First, Prioritize the desired job; then, Delete
  1876. the Current job.  This is a bit extreme, however - and may cause future
  1877. printing difficulties as co-workers take revenge on YOUR print jobs!
  1878.  
  1879.  
  1880.  
  1881. STOPPING THE PRINT SERVER
  1882. ---------------------------------------
  1883.  
  1884. Execution of FPServer may be stopped by pressing Escape (as noted in the
  1885. title at the top of its screen) and answering Y to the confirmation query.
  1886. FPServer stops servicing active jobs, frees allocated memory, and cleanly
  1887. returns control to DOS.
  1888.  
  1889. Jobs which were being printed when Escape was pressed are reset, at the
  1890. File Server, and will be serviced when FPServer is restarted (or another
  1891. authorized print server notices them).  Exceptions to this can occur if
  1892. requested by the software which originated the job, but NetWare's standard
  1893. methods for queuing print data (CAPTURE and NPRINT) both allow prematurely
  1894. terminated servicing to restart without data loss.
  1895.  
  1896. If FPServer was running in demo mode (because of bad or missing SoftKeys),
  1897. it will display the unlicensed ports, file servers, and serial numbers when
  1898. exiting.  However, if multiple, conflicting portQUEUE commands (different
  1899. print server names for the same file server) have been supplied for a
  1900. single port, the file server name and serial number may not appear if
  1901. FPServer cannot resolve the correct file server/print server relationship.
  1902.  
  1903.  
  1904.  
  1905. ===========================================================================
  1906. ERROR MESSAGES
  1907. ===========================================================================
  1908.  
  1909. FPServer uses two classes of error messages: "DOS-level", which are issued
  1910. outside of its console environment (i.e. at the DOS command line level),
  1911. and "operational", which appear on the console screen.
  1912.  
  1913. This section lists FPServer's error messages, the reasons that can cause
  1914. them to be displayed, and recommended actions.
  1915.  
  1916.  
  1917.  
  1918. DOS-LEVEL ERROR MESSAGES
  1919. --------------------------------------------
  1920.  
  1921. These messages generally involve network shell problems and SoftKey issues
  1922. which will cause FPServer to prevent or terminate its execution.  They
  1923. generally prevent or terminate program execution and are displayed at the
  1924. DOS command line level.
  1925.  
  1926.  
  1927.  
  1928. Workstation is not attached to a network
  1929. System will auto-reboot in 30 seconds
  1930. --------------------------------------------
  1931.  
  1932. REASON: Upon receiving control from DOS, FPServer confirms that the host
  1933. workstation is "attached" to a File Server.  ("Attached", as defined by
  1934. NetWare, means that the physical and logical connections exist which allow
  1935. the workstation to log in to the File Server.)  The host workstation does
  1936. NOT have to be logged in - but the logical attachment to at least one file
  1937. server, as normally established when Novell's NETX loads, must be present.
  1938. This message is displayed if such an attachment cannot be found.
  1939.  
  1940. ACTION: Confirm that the workstation successfully connects to a file server
  1941. when Novell's NETX shell loads (it will issue a message stating the name of
  1942. the file server to which it attached).  Again, it is not necessary to be
  1943. logged in.
  1944.  
  1945.  
  1946.  
  1947. Insufficient memory
  1948. ---------------------------------------
  1949.  
  1950. REASON: There is insufficient free conventional ("low" or "DOS") memory for
  1951. FPServer to initialize and support the specified ports.  128K, PLUS a
  1952. minimum of 16K for each active port, must be available when FPServer is
  1953. started.  This message is displayed if enough memory is not available.
  1954.  
  1955. ACTION: Just before the host PC starts FPServer, run DOS's CHKDSK or MEM
  1956. program to determine the amount of free conventional memory.  (FPServer
  1957. does not use extended or expanded memory, and ignores it if present.) If
  1958. the amount is less than required: 1) confirm the PC has the standard one
  1959. megabyte of base memory, 2) reduce memory consumption by other programs, or
  1960. 3) reduce the number of active ports on this particular print server.
  1961.  
  1962.  
  1963.  
  1964. <server> not provided with a SoftKey
  1965. ---------------------------------------
  1966.  
  1967. REASON: FPServer was running in demo mode, and has terminated, because one
  1968. or more portQUEUE commands is missing a valid SoftKey for the specified
  1969. file server.
  1970.  
  1971. ACTION: Register your NetWare serial numbers and obtain SoftKeys for each
  1972. file server to be serviced by an FPServer.  Once the SoftKeys have been
  1973. purchased, confirm that the correct SoftKey is included on EVERY SINGLE
  1974. portQUEUE command in the FPSERVER.CFG file and on the command line.  Even
  1975. one portQUEUE command with a missing SoftKey will cause FPServer to
  1976. terminate after its demo period.
  1977.  
  1978. Please read the file REGISTER.DOC for complete registration information.
  1979.  
  1980.  
  1981.  
  1982. <server>'s SoftKey is Invalid
  1983. ---------------------------------------
  1984.  
  1985. REASON: FPServer was running in demo mode, and has terminated, because one
  1986. or more portQUEUE commands contained an invalid SoftKey for the specified
  1987. file server.  This differs from the error message above, which indicates
  1988. that the SoftKey was completely missing.
  1989.  
  1990. ACTION: Confirm that the correctly typed SoftKey is included on EVERY
  1991. SINGLE portQUEUE command in the FPSERVER.CFG file and on the command line.
  1992. Even one portQUEUE command with an invalid SoftKey will cause FPServer to
  1993. terminate after its demo period.
  1994.  
  1995. Please read the file REGISTER.DOC for complete registration information.
  1996.  
  1997.  
  1998.  
  1999. <server>'s NetWare Serial Number is...
  2000. ---------------------------------------
  2001.  
  2002. REASON: FPServer was running in demo mode, and has terminated, because one
  2003. or more portQUEUE commands did not include a valid SoftKey for the
  2004. specified file server.  Since you will need your file server's serial
  2005. number during registration, this message is displaying that number for your
  2006. convenience.  (You may also obtain file server serial numbers with the
  2007. NWSerial utility.)
  2008.  
  2009. ACTION: Register your NetWare serial numbers and obtain SoftKeys for each
  2010. file server to be serviced by an FPServer.  Once the SoftKeys have been
  2011. purchased, confirm that the correct SoftKey is included on EVERY SINGLE
  2012. portQUEUE command in the FPSERVER.CFG file and on the command line.  Even
  2013. one portQUEUE command with a missing SoftKey will cause FPServer to
  2014. terminate after its demo period.
  2015.  
  2016. Please read the file REGISTER.DOC for complete registration information.
  2017.  
  2018.  
  2019.  
  2020. OPERATIONAL ERROR MESSAGES
  2021. --------------------------------------------
  2022.  
  2023. These messages include those problems which do not cause FPServer to
  2024. terminate its execution.  They generally affect only a single port, and
  2025. appear on the "Current" line of the affected port's display.
  2026.  
  2027.  
  2028.  
  2029. Not in use
  2030. ---------------------------------------
  2031.  
  2032. REASON: The port is not in use.  It is not connected to a print queue and
  2033. cannot service print jobs.
  2034.  
  2035. ACTION: This is the normal message for inactive ports.  If you expected the
  2036. port to be active, this indicates some type of configuration error occurred
  2037. which could not be diagnosed more completely.  The most likely problem is a
  2038. invalid or missing portQUEUE command containing this port's name.
  2039.  
  2040.  
  2041.  
  2042. Bad or missing port hardware
  2043. ---------------------------------------
  2044.  
  2045. REASON: No valid port hardware could be found at the address specified by
  2046. this port's portBASE command.  If no portBASE command was provided, this
  2047. command indicates that the default I/O base for this port (as supplied by
  2048. BIOS) did not address acceptable hardware.
  2049.  
  2050. ACTION: Confirm portBASE address values are valid (pure hexadecimal values
  2051. without leading "0x" or trailing "H"), and confirm that the associated
  2052. physical port hardware is actually installed in the host machine.  Also
  2053. confirm that the port hardware is compatible with the industry-standard IBM
  2054. PC parallel and serial ports.
  2055.  
  2056.  
  2057.  
  2058. Invalid FServer/PServer/PQueue Spec
  2059. ---------------------------------------
  2060.  
  2061. REASON: The value associated with the portQUEUE command for this port
  2062. contained bad syntax or too few parameters.
  2063.  
  2064. ACTION: Confirm that all three names are specified in the portQUEUE
  2065. command.  A file server, AND a print server, AND a print queue must be
  2066. explicitly included.  Confirm that forward slashes are used to separate
  2067. each of the three names, and that no spaces appear anywhere within the
  2068. portQUEUE command.
  2069.  
  2070.  
  2071.  
  2072. Error attaching to server
  2073. ---------------------------------------
  2074.  
  2075. REASON: FPServer could not successfully attach to the file server specified
  2076. by the associated portQUEUE command.
  2077.  
  2078. ACTION: Confirm that the specified file server is accessible via the cable
  2079. attached to the host PC.  Confirm that the specified file server is
  2080. actually running and accepting new attachments/logins (Network
  2081. Administrators sometimes disable new connections during maintenance).
  2082.  
  2083.  
  2084.  
  2085. Error logging in as <PServer>
  2086. ---------------------------------------
  2087.  
  2088. REASON: FPServer is unable to log in to the specified file server using the
  2089. print server object name specified in the portQUEUE command.
  2090.  
  2091. ACTION: Confirm that the print server object's name is spelled correctly.
  2092. Confirm that the print server object actually exists on the specified file
  2093. server.  Confirm that the print server object does not require a password.
  2094.  
  2095.  
  2096.  
  2097. <PServer> not authorized to service...
  2098. ---------------------------------------
  2099.  
  2100. REASON: FPServer was able to attach to the specified file server, and log
  2101. in as the specified print server, but that print server is not authorized
  2102. to service print jobs in the specified print queue.
  2103.  
  2104. ACTION: Confirm the print queue name is spelled correctly.  Run Novell's
  2105. PCONSOLE or QRights to grant service rights to the specified Print Server
  2106. object for the specified queue.  Run Novell's PCONSOLE and confirm that the
  2107. print queue is enabled and that new print servers may attach to it.
  2108.  
  2109.  
  2110.  
  2111. Error attaching to queue <PQueue>
  2112. -----------------------------------------------
  2113.  
  2114. REASON: The file server will not allow FPServer to attach to the specified
  2115. print queue.
  2116.  
  2117. ACTION: Confirm that the print queue name is correctly spelled.  Confirm
  2118. that the print queue exists on the File Server to which the host PC is
  2119. attached.  Run Novell's PCONSOLE and add the specified Print Server object
  2120. to the list of print servers allowed to service the specified print queue.
  2121. Confirm that fewer than 25 print servers (NetWare's limit) are already
  2122. attached to the print queue.  Run Novell's PCONSOLE and confirm that the
  2123. specified print queue's operating parameters are acceptable.  Refer to
  2124. Novell's documentation for further information.
  2125.  
  2126.  
  2127.  
  2128. RESET printer to flush job
  2129. -----------------------------------------------
  2130.  
  2131. REASON: The Current print job has been Restarted or Deleted, but some data
  2132. from the cancelled job may still remain in the printer's buffer.  FPServer
  2133. is reminding you to take action, as necessary, to flush the printer's data
  2134. buffer.
  2135.  
  2136. ACTION: Do what is necessary (which may be nothing at all) to assure the
  2137. printer's buffer is flushed of all prior data.  This message will
  2138. disappear after the number of seconds defined by the portRESETDELAY command
  2139. has expired (default = 10).
  2140.  
  2141.  
  2142.  
  2143. ...query delay...
  2144. -----------------------------------------------
  2145.  
  2146. REASON: FPServer is delaying the number of seconds specified by the
  2147. portQUERYDELAY command before requesting another job from the print queue.
  2148. This is not an error.
  2149.  
  2150. ACTION: None; just wait for the query delay to time out.  If the query
  2151. delay is too long, you may modify it with the portQUERYDELAY command.
  2152.  
  2153.  
  2154.  
  2155. ===========================================================================
  2156. FINE TUNING FOR MAXIMUM PERFORMANCE
  2157. ===========================================================================
  2158.  
  2159. FPServer is seldom the limiting factor in a network printing system.  Many
  2160. other components and subsystems conspire to limit the ultimate printing
  2161. bandwidth.  This section discusses some of the more common limiting factors
  2162. and offers improvement suggestions.  Some, none, or all of these may be
  2163. applicable to your situation; consult your equipment's documentation and
  2164. manufacturer(s) for more specific information.
  2165.  
  2166.  
  2167.  
  2168. PRINTER DATA RATES
  2169. ---------------------------------------
  2170.  
  2171. The most common limiting factor is the print device itself.  Different
  2172. printers accept data at different rates.  In fact, the same printer will
  2173. often accept data at varying rates depending upon the data's formatting,
  2174. content, and other factors.
  2175.  
  2176. If the device has an input buffer, its initial data rate can be very high
  2177. while the buffer is being filled.  This is because the printer simply
  2178. stores the data (rather than processing and printing it) and writing data
  2179. into memory is a relatively fast operation.  Ultimately, however, the
  2180. buffer will be filled and the data rate must then drop to the speed at
  2181. which the device can generate an image on the output media - since that is
  2182. the rate at which new buffer space becomes available.
  2183.  
  2184. The type and content of the data is also significant.  For example: A fully
  2185. rasterized image, sent to a laser printer, places very little burden on the
  2186. printer's microprocessor and is basically transferred directly into the
  2187. page buffer.  The limiting factor in this case is often the engine speed;
  2188. the printer can move the paper only so fast regardless of how quickly data
  2189. can be accepted from the host and placed into memory.
  2190.  
  2191. The fastest data rates are generally achieved with single pages of fully
  2192. rasterized (graphics) laser printer data.  In these cases, the last byte of
  2193. data is transferred before the engine begins operation and thus the
  2194. mechanism speed is factored out.
  2195.  
  2196. "BPS" values drop when the print job exceeds a single page.  The first page
  2197. will still transfer into the empty page buffer very rapidly, but subsequent
  2198. bytes must wait for room to appear in the page buffer as its current
  2199. contents (the first page) are transferred to paper.  In addition, the
  2200. printer's microprocessor will devote less time to data reception since it
  2201. will also be running the engine (a workload which was not present during
  2202. the transfer of the first page's data).
  2203.  
  2204. High level printer "languages", such as Hewlett Packard's PCL 5 and
  2205. especially Adobe's PostScript, can yield even lower data transfer rates.
  2206. Unlike pure graphics - where one bit generally equals one pixel - very
  2207. small amounts of high level printer languages can create an ENTIRE PAGE of
  2208. rasterized data.  The conversion is handled by the printer's
  2209. microprocessor, which may accept a small amount of data and then "go deaf"
  2210. while those few bytes generate an entire page.  The dramatically reduced
  2211. "BPS" values that result from this condition do not mean that your printing
  2212. throughput is poor, but that each byte of data is generating a lot of
  2213. rasterized output.
  2214.  
  2215. Pure text can produce the lowest "BPS" values, again due to mechanism
  2216. speed.  As an example: Assume a laser print job contains ten pages of 25
  2217. characters each.  The data for the first page will transfer - and the
  2218. rasterized image will be created - almost instantly.  However, the second
  2219. (and subsequent) pages will be limited by the printer's need to physically
  2220. print the previous page.  Since a laser's engine speed is a constant, each
  2221. page takes the same amount of time to pass through the mechanism - and thus
  2222. fewer characters per page yields lower "BPS" values even though throughput
  2223. (as measured in PAGES) is constant.
  2224.  
  2225. In any case, FPServer is almost certainly capable of supplying data faster
  2226. than your print device is able to accept it.  The appearance of the
  2227. "Printer Limited" message on the port's Status Line indicates that the
  2228. printer is refusing data when FPServer offers it.  You may confirm this -
  2229. and determine FPServer's maximum data rate in your environment - by using
  2230. FPServer's "Test" mode (described below).
  2231.  
  2232.  
  2233.  
  2234. FPSERVER'S TEST MODE
  2235. ---------------------------------------
  2236.  
  2237. FPServer's parallel port routines have a special mode which can be used to
  2238. determine the maximum throughput possible in the tested environment. This
  2239. mode may be invoked by using the portMODE command as follows:
  2240.  
  2241.      LPT1MODE=TEST   <for LPT1>
  2242.  
  2243. ...or:
  2244.  
  2245.      LPT2MODE=TEST   <for LPT2>
  2246.  
  2247.  
  2248. Selecting "Test" mode causes FPServer's parallel port routine to act as if
  2249. an infinitely fast print device were connected to the designated port.  All
  2250. of the same routines are used - and the print job data is actually
  2251. transmitted - but printer-induced delays are ignored.
  2252.  
  2253. This is a complete bandwidth test which involves the disk drives on the
  2254. File Server, the network cabling and interfaces, the clock rate of the
  2255. print server's processor, the speed of the print server's parallel port
  2256. hardware - EVERYTHING associated with transferring a print job from the
  2257. File Server to the connector on the back of the print server.  The
  2258. resulting bytes per second (BPS) values indicate the absolute maximum
  2259. throughput of which FPServer is capable in the test environment.
  2260.  
  2261. Some notes regarding "Test" mode:
  2262.  
  2263.      * Files of sufficient size must be used for "Test" mode results to be
  2264.        significant.  The most accurate values will be obtained with jobs at
  2265.        least 500KB in size.
  2266.  
  2267.      * Multiple jobs should be run through "Test" mode so that the File
  2268.        Server's job startup overhead can be factored into the results.
  2269.        Multiple, back-to-back jobs should be queued up and ready to go
  2270.        prior to starting FPServer in "Test" mode.
  2271.  
  2272.      * Most printers will report errors if connected during "Test" mode.
  2273.        This is because FPServer does not honor their BUSY line and thus
  2274.        transmits the data faster than the printer can accommodate it.  It
  2275.        is recommended that printers be disconnected during "Test" mode to
  2276.        prevent erratic operation.
  2277.  
  2278.      * Printer status signals, such as OFFLINE, PAPEROUT, and ERROR are
  2279.        still reported in "Test" mode even though they have no effect on
  2280.        FPServer's operation.  They may be safely ignored.
  2281.  
  2282.      * Test mode may be temporarily invoked by including the portMODE=TEST
  2283.        command on the DOS command line.  Normal FPServer operation will
  2284.        resume the next time it is started without the additional command.
  2285.  
  2286.      * Test mode may be used only with parallel ports.  Few serial devices
  2287.        support "dynamic" baud rates or per-byte hardware handshaking, and
  2288.        thus FPServer cannot obtain useful information from such a test.
  2289.  
  2290.  
  2291.  
  2292. PRINTER SPEED SETTINGS
  2293. ---------------------------------------
  2294.  
  2295. One way to improve printer throughput is to optimize the printer's
  2296. configuration.  Many printers have setup options which can increase (or,
  2297. when incorrectly set, decrease) data throughput.
  2298.  
  2299. For example, the Hewlett Packard LaserJet IIISi's parallel port has an
  2300. optional HIGH SPEED mode which can be configured from the printer's front
  2301. panel.  Setting HIGH SPEED=NO causes the IIISi to use a BUSY signal with a
  2302. minimum duration of 10 microseconds.  Setting HIGH SPEED=YES reduces the
  2303. minimum BUSY duration to 1.5 microseconds - a significant reduction which
  2304. has a dramatic impact on data throughput.
  2305.  
  2306. Be sure to review your print device's documentation for speed-enhancing
  2307. configuration options.  You may wish to contact the manufacturer for
  2308. specific recommendations or suggestions.
  2309.  
  2310.  
  2311.  
  2312. BRIDGES
  2313. ---------------------------------------
  2314.  
  2315. Bridges, used to connect multiple networks, can impose limitations on
  2316. overall throughput.  To understand why, it is useful to review the "data
  2317. path" for queued print data.
  2318.  
  2319. When a workstation requests that a job be printed, the data is directed
  2320. into a print queue.  The print queue resides on a file server - one of the
  2321. file servers to which FPServer attaches during initialization.  During job
  2322. servicing, the data is retrieved from the file server's hard drive, sent
  2323. through the network interface card, over the cable, into FPServer's network
  2324. interface card, and out to the print device.  At a minimum, therefore,
  2325. queued print data must pass through two software programs (the file
  2326. server's operating system and FPServer) and two network interface cards
  2327. (one each on the file server and FPServer's host PC).
  2328.  
  2329. Internal bridges - i.e. multiple interface cards installed in the File
  2330. Server's backplane - are already in a "minimum" configuration.  The fact
  2331. that the data was received on one network interface card and is transmitted
  2332. on another is unimportant, since it is buffered to hard disk in the
  2333. meantime.  As a result, internal bridges do not restrict bandwidth.
  2334.  
  2335. In contrast, external bridges can impose significant bandwidth limitations.
  2336. The presence of an external bridge in the data path inserts at least one
  2337. more software program (the bridge operating system) and two more network
  2338. interface cards (one in and one out of the bridge).  In many installations
  2339. this is probably compounded by the fact that bridges are often slower 80286
  2340. systems with inherently poorer throughput.
  2341.  
  2342. Self-contained bridges often have higher throughput than PC's used as
  2343. bridges.  However, to maximize throughput, it is strongly recommended that
  2344. FPServer's host PC be connected to a network cable which runs directly to
  2345. the file servers containing the serviced print queues.
  2346.  
  2347.  
  2348.  
  2349. DEDICATED NETWORK CABLES
  2350. ---------------------------------------
  2351.  
  2352. Contrary to popular belief, it is NOT necessary to connect a PC-hosted
  2353. print server to a file server via a dedicated network cable.  Under most
  2354. circumstances (with most printers), the print server can share its cable
  2355. with other workstations and will not place an undue burden on the total
  2356. cable bandwidth.
  2357.  
  2358.  
  2359.  
  2360. MULTIPLE PORTS PER PRINT SERVER
  2361. ---------------------------------------
  2362.  
  2363. Many times the first approach to increasing print server throughput is to
  2364. reduce its number of active ports.  This is often very effective on other
  2365. print server software - but is COMPLETELY UNNECESSARY with FPServer.
  2366.  
  2367. FPServer incorporates a "dynamic linking/unlinking" algorithm which reduces
  2368. the overhead on inactive ports to ZERO.  Whenever the queue associated with
  2369. a given hardware port is empty, FPServer unlinks the associated software
  2370. routines from its service chain as if the port had never been activated.
  2371. Only when a job is ready for service does FPServer relink the associated
  2372. hardware's service routines and begin devoting resources to it.
  2373.  
  2374. Careful design has also lessened the impact of multiple simultaneous jobs.
  2375. Reductions of under 10% are typical - rather than the 50% loss often
  2376. experienced with other print server software.  As stated earlier, FPServer
  2377. generally has far more bandwidth capability than the print devices which it
  2378. drives, and that bandwidth is automatically optimized across currently
  2379. active devices in real time.
  2380.  
  2381. FPServer's high throughput also reduces the likelyhood, and duration, of
  2382. coincident jobs.  Jobs are completed faster and are thus less likely to
  2383. incur even FPServer's small multi-job throughput degradation.
  2384.  
  2385. The bottom line is: There is little to no penalty when connecting multiple
  2386. devices to FPServer simultaneously.  What may have required multiple
  2387. dedicated print servers in the past can now be handled with a single PC.
  2388.  
  2389.  
  2390.  
  2391. 16 BIT NETWORK INTERFACES AND DRIVERS
  2392. ---------------------------------------
  2393.  
  2394. The print server's network interface card can have more effect on overall
  2395. throughput than any other physical component.  Recommendations can be
  2396. summarized into the following: Use a 16 bit network interface card with a
  2397. 16 bit optimized driver.
  2398.  
  2399. 16 bit network interface cards have been shown to have significantly
  2400. higher effective bandwidth than their 8 bit counterparts.  While parallel
  2401. and serial port hardware is, by definition, 8 bits in width, the interface
  2402. to and from the network interface card's buffer memory has no such
  2403. architectural restriction and should thus be as wide as possible.
  2404.  
  2405. 16 bit network interface cards should have drivers optimized for use in a
  2406. 16 bit environment.  It is possible to write a driver which is compatible
  2407. with both 8 bit and 16 bit hosts and interfaces.  Such "universal" drivers
  2408. do not take adequate advantage of the host PC's 16 (or 32) bit processor.
  2409. Call the network interface card manufacturer, if necessary, and confirm
  2410. that the driver is specifically intended for use on 16 bit (read: 80286 and
  2411. up) microprocessors.
  2412.  
  2413. It is not my intention to give preferential treatment to any single vendor,
  2414. but I will report that 3Com's EtherLink III "Parallel Tasking" network
  2415. interface card has produced some of the most dramatic throughput values I
  2416. have measured to date.  This performance, combined with an extraordinarily
  2417. low cost (under $130 street price), makes it an excellent choice for high
  2418. bandwidth applications such as FPServer.
  2419.  
  2420.  
  2421.  
  2422. EMM386.EXE AND DOS'S LOADHIGH
  2423. ---------------------------------------
  2424.  
  2425. DOS 5.0, and many third-party utilities, allow drivers and portions of the
  2426. operating system to be loaded above the traditional 640K DOS memory area
  2427. (into a region commonly known as "high memory").  This is traditionally done
  2428. in an effort to release memory in the lower 640K for use by applications
  2429. software.
  2430.  
  2431. FPServer requires, at most, 400K of free memory.  Amounts greater than that
  2432. are unused while FPServer is in operation and therefore wasted.  If, just
  2433. prior to running FPServer, CHKDSK reports 400K or more free, loading
  2434. programs "high" will yield absolutely no advantages.
  2435.  
  2436. Loading programs "high" CAN yield disadvantages, however.  A special device
  2437. driver is typically required to handle the redirection to software loaded
  2438. in "high" - and this driver can severely impact overall PC performance.
  2439. Measurements on DOS 5.0's EMM386.EXE show a 50% DECREASE in I/O bandwidth -
  2440. presumably because EMM386.EXE was intercepting I/O operations in case they
  2441. were intended for a program loaded "high".  (This test was run without ANY
  2442. programs actually loaded high; just EMM386.EXE's presence in memory cut I/O
  2443. throughput in half.)
  2444.  
  2445. Use of Novell's XMSNETx.EXE and EMSNETx.EXE programs can impact throughput
  2446. because they too make use of memory outside the standard 640K.  While very
  2447. useful in memory-bound environments, these programs are a detriment to
  2448. FPServer's bandwidth; furthermore, they are unnecessary since FPServer's
  2449. 400K is seldom too great a demand on the host machine's resources.
  2450.  
  2451. In summary, FPServer will operate perfectly with DOS, network drivers, etc.
  2452. loaded "high".  However, the low memory thus freed will very likely go
  2453. unused - and overall print server throughput will suffer needlessly.  It is
  2454. strongly recommended that the host PC load all software in the standard
  2455. 640K DOS memory area for maximum performance.
  2456.  
  2457.  
  2458.  
  2459. BUS CLOCK SPEEDS
  2460. ---------------------------------------
  2461.  
  2462. *******************************************************************************
  2463. *                               CAUTION!!!                                    *
  2464. *                                                                             *
  2465. *    The following section discusses altering the fundamental operating       *
  2466. *    characteristics of the host PC.  Only individuals VERY EXPERIENCED       *
  2467. *    with PC's and their internal operation should modify these parameters.   *
  2468. *    Incorrect settings can render your PC inoperative.  If you are not       *
  2469. *    COMPLETELY familiar with the architecture of your PC, please obtain      *
  2470. *    the assistance of a qualified PC Technician.                             *
  2471. *                                                                             *
  2472. *    Not all BIOS's allow these parameters to be modified.  Please consult    *
  2473. *    your computer's documentation or manufacturer for more information and   *
  2474. *    specific recommendations.                                                *
  2475. *******************************************************************************
  2476.  
  2477. Most AT-class PC's of recent vintage are fabricated using high integration
  2478. chipsets, where four or five "mega-chips" are equivalent to hundreds of
  2479. small- and medium-scale integration IC's.  The BIOS included with PC's of
  2480. this type generally have a secondary setup screen where operational
  2481. parameters may be manipulated to fine tune the machine's performance.  One
  2482. of these parameters, the Bus Clock, affects the speed with which operations
  2483. may be performed on the backplane - where the parallel, serial, and network
  2484. interfaces reside.
  2485.  
  2486. (For technical accuracy, it should be pointed out that there is no actual
  2487. "clock" signal, as such, on the backplane.  Instead, this signal serves as
  2488. the fundamental for the various timing and control signals which actually
  2489. run the asynchronous AT bus.)
  2490.  
  2491. The Bus Clock is usually derived from the processor clock via division by a
  2492. value selected in the BIOS setup screens.  Manipulating this divisor
  2493. inversely affects the Bus Clock (increasing the divisor decreases the speed
  2494. of the Bus Clock, and vice versa).
  2495.  
  2496. Typical Bus Clock divisor values which may be selected include 2, 3, and 4
  2497. which, on a 25MHz machine, would yield "bus speeds" of 12.5MHz, 8.33MHz,
  2498. and 6.25MHz respectively.  The early IBM AT used an "8MHz" bus clock, thus
  2499. defining the lowest speed at which cards intended to be compatible must
  2500. operate.  Since virtually all cards compatible with the AT backplane can
  2501. therefore be expected to run with an 8MHz Bus Clock, BIOS's for faster
  2502. (33MHz and 40MHz) processors usually include higher numbers to allow the
  2503. bus speed to reach the 8MHz range.
  2504.  
  2505. Since, as stated above, all AT cards are designed to accommodate 8MHz,
  2506. FPServer's host should always run its bus at 8MHz or above.  FPServer's
  2507. throughput MAY be improved by decreasing the divisor value, and thus
  2508. increasing the Bus Clock, to operate the backplane cards at a faster speed.
  2509. Reduce the divisor ONE INCREMENT AT A TIME and carefully observe the
  2510. effects.  You should reboot the machine multiple times to confirm reliable
  2511. operation at the new bus speed.
  2512.  
  2513. Regarding the Bus Clock's "upper limit": there seems to be an industry
  2514. threshold at 12MHz.  While cards do exist which have been designed to
  2515. operate beyond that speed, they are definitely the minority.  For safety,
  2516. consider 12MHz as the top end of the bus speed range.
  2517.  
  2518. Be sure to record the original values of all parameters before altering
  2519. them.  It may become necessary to restore them in the future as other cards
  2520. are added to the system.
  2521.  
  2522.  
  2523.  
  2524. I/O WAIT STATES
  2525. ---------------------------------------
  2526.  
  2527. *******************************************************************************
  2528. *                               CAUTION!!!                                    *
  2529. *                                                                             *
  2530. *    The following section discusses altering the fundamental operating       *
  2531. *    characteristics of the host PC.  Only individuals VERY EXPERIENCED       *
  2532. *    with PC's and their internal operation should modify these parameters.   *
  2533. *    Incorrect settings can render your PC inoperative.  If you are not       *
  2534. *    COMPLETELY familiar with the architecture of your PC, please obtain      *
  2535. *    the assistance of a qualified PC Technician.                             *
  2536. *                                                                             *
  2537. *    Not all BIOS's allow these parameters to be modified.  Please consult    *
  2538. *    your computer's documentation or manufacturer for more information and   *
  2539. *    specific recommendations.                                                *
  2540. *******************************************************************************
  2541.  
  2542. I/O Wait States are another set of parameters which, like the Bus Clock
  2543. described above, affect the speed with which operations may be performed on
  2544. the backplane.
  2545.  
  2546. Many AT-compatible cards cannot accommodate the I/O speeds of which current
  2547. microprocessors are capable. The limiting factor is often the IC's used on
  2548. the cards; many logic families, fast enough for 4.77MHz 8088's, simply
  2549. cannot sustain the command and data rates of later generation
  2550. microprocessors.
  2551.  
  2552. Recognizing this, the high-integration chipsets used in so many AT-class
  2553. machines allow the insertion of "wait states" into input and output
  2554. operations.  Simply stated, a wait state causes the processor to idle for a
  2555. known length of time - thus giving the external device a chance to react to
  2556. the processor's instruction.  The slower the device, the greater the number
  2557. of wait states.
  2558.  
  2559. Wait states impose a heavy penalty on performance - not surprising since
  2560. the microprocessor is essentially being told to "hurry up and wait".  Early
  2561. 80286-class PC's, often advertised as 12MHz (or even 16MHz) machines, had
  2562. wait states on MAIN MEMORY and thus ran little faster than zero-wait-state
  2563. 8MHz or 10MHz PC's.
  2564.  
  2565. The accepted norm is now to place all memory on the motherboard and run it
  2566. at full speed without wait states (or to include a cache which offsets some
  2567. of the impact of slow memory).  The same is not true, however, of ports,
  2568. video boards, and other peripherals.  Even when mounted directly on the
  2569. motherboard, the processor communicates with these components via I/O
  2570. instructions - rather than memory reads and writes - and thus any I/O Wait
  2571. States will directly impact their communications bandwidth.
  2572.  
  2573. As with the Bus Clock, acceptable values for I/O Wait States will vary
  2574. between different PC's, processor clock speeds, and combinations of
  2575. external cards.  Empirical analysis (read: trial and error) is the best
  2576. method, since the goal is to obtain the fastest reliable operation for the
  2577. machine in question.  Many BIOS's allow independent numbers of wait states
  2578. to be specified for 8 bit I/O operations (parallel and serial ports) and 16
  2579. bit I/O operations (most network interfaces), and different values may be
  2580. required for optimal performance.
  2581.  
  2582. FPServer's throughput MAY be improved by reducing the number of I/O Wait
  2583. States.  Reduce the number of wait states ONE INCREMENT AT A TIME and
  2584. carefully observe the results.  You should reboot the machine multiple
  2585. times to confirm reliable operation with the new values.
  2586.  
  2587. Be sure to record the original values of all parameters before altering
  2588. them.  It may become necessary to restore them in the future as other cards
  2589. are added to the system.
  2590.  
  2591.  
  2592.  
  2593. ===========================================================================
  2594. ERRORS AND TROUBLESHOOTING
  2595. ===========================================================================
  2596.  
  2597. This section discusses some common problems and possible solutions.
  2598.  
  2599.  
  2600. PARALLEL PORT RUNS WITH PRINTER TURNED OFF
  2601. -----------------------------------------------
  2602.  
  2603. FPServer's parallel ports use the BUSY line to control data flow.  A
  2604. printer holds its BUSY line inactive when it is ready to receive another
  2605. byte of data.
  2606.  
  2607. Depending upon the design of the printer's parallel port circuitry, the
  2608. printer may allow the BUSY line to "float" to its inactive state when
  2609. turned off.  Since FPServer never sees the BUSY line go active, it assumes
  2610. the printer is ready to accept data and faithfully transmits it.
  2611.  
  2612. If you are experiencing this, you may confirm that the printer is floating
  2613. BUSY to its inactive state by turning off the printer, starting FPServer,
  2614. letting it begin transmitting a job to the printer, and then disconnecting
  2615. the cable from the back of the printer.  Most likely, FPServer will stop
  2616. transmitting immediately.  (Hewlett Packard LaserJet 4's behave in exactly
  2617. this manner.)
  2618.  
  2619.  
  2620.  
  2621. DISPLAYED JOB SIZE CHANGES DURING PRINTING
  2622. -----------------------------------------------
  2623.  
  2624. FPServer displays the size of the Current job while it is being serviced.
  2625. Initially, the size of the job is the number of bytes in the print queue.
  2626. However, the ACTUAL number of bytes can increase if either the banner or
  2627. formfeed options are enabled.
  2628.  
  2629. FPServer works hard to display accurate data.  If a banner is generated for
  2630. the job, the number of bytes associated with it are added to the job size
  2631. display.  If multiple copies are selected and the formfeed option is
  2632. enabled, the job size display will increment at the end of every copy.
  2633. This is normal, correct behavior and does not represent an error.
  2634.  
  2635.  
  2636.  
  2637. MESSAGE "Network Error: Abort, retry" APPEARS
  2638. -----------------------------------------------
  2639.  
  2640. FPServer's auto-reboot feature tracks the state of the host PC and will
  2641. perform a reset if it appears that the shell has lost connection with the
  2642. file server(s).  The length of time that FPServer will wait before
  2643. auto-rebooting is programmable with the BOOTDELAY command.
  2644.  
  2645. If the value you specify with the BOOTDELAY command is too long, though, it
  2646. may exceed the timeout delay of the shell itself.  In this case, the shell
  2647. will most likely display its infamous "Network Error: Abort, retry" message
  2648. and sit there waiting for you to answer the question.
  2649.  
  2650. The appearance of this message has no effect on FPServer's auto-reboot;
  2651. once the specified number of seconds has elapsed FPServer will still reboot
  2652. the host PC.  If the message causes concern for you or other users,
  2653. progressively reduce the value in the BOOTDELAY command until FPServer
  2654. reboots the machine before the shell notices what's wrong.  Please note,
  2655. however, that this is strictly an OPTIONAL step and is not necessary for
  2656. successful operation.
  2657.  
  2658.  
  2659.  
  2660. FLOPPY DRIVE SEEKS AT START OF EVERY JOB
  2661. -----------------------------------------------
  2662.  
  2663. FPServer print servers which boot from a floppy drive may seek that floppy
  2664. when print jobs start.  This is caused by a bug in Novell's NETX shell:
  2665. When trying to open the NETQ device, the default drive is always checked
  2666. for a file of that name prior to the shell intercepting the error and
  2667. handling it as a network operation.
  2668.  
  2669. This bug is completely unnecessary and entirely fixable.  Unfortunately,
  2670. Novell's official position on this bug is Yes, they do acknowledge it
  2671. exists, but No, they are not going to fix it in NETX.  Instead, they
  2672. recommend that sites experiencing this problem change their shell from the
  2673. NETX environment to the NetWare v4.0-style "VLM" environment (which does
  2674. not exhibit the problem).
  2675.  
  2676. I am currently developing a workaround to this problem which may appear in
  2677. a future release of FPServer.  In the meantime, you may safely ignore this
  2678. phenomenon; it is irritating, but does no damage.
  2679.  
  2680.  
  2681.  
  2682. PRINT JOBS START IN MID-LINE
  2683. -----------------------------------------------
  2684.  
  2685. FPServer generally acts as a straight wire between the print queue and the
  2686. printer: It passes the data exactly as found, adding and subtracting
  2687. nothing.
  2688.  
  2689. If the application which generated the print job did not include a printer
  2690. reset at the beginning of the data, the printer will most likely start
  2691. printing the job from the last printed position of the most recent job.
  2692. Often this is right in the middle of a line.
  2693.  
  2694. The easiest way to solve this problem is to use Novell's PRINTDEF and
  2695. PRINTCON utilities to define reset commands for the printer(s).  When
  2696. finished, be sure to invoke the resulting printer definitions in your
  2697. CAPTURE and NPRINT statements.
  2698.  
  2699. Note that enabling the formfeed option does not change this behavior.  A
  2700. formfeed is a single byte which does exactly that: Feeds a single form,
  2701. without changing the current printing position.  No carriage return nor
  2702. linefeed is issued, and most printers do not automatically reset the
  2703. print position just because a formfeed was received.
  2704.  
  2705. Banners, however, DO generate a trailing carriage return.  Since the
  2706. printer will have been printing the contents of the banner, its print
  2707. position must be reset to some known position - and the carriage return
  2708. provides this service.
  2709.  
  2710.  
  2711.  
  2712. CAN'T LOG IN AS MULTIPLE PRINT SERVERS
  2713. -----------------------------------------------
  2714.  
  2715. You may only use a single print server name with any one file server. Even
  2716. if all seven ports are servicing print jobs from a single file server, the
  2717. print server's name must be identical on EACH AND EVERY portQUEUE command.
  2718.  
  2719. This limitation is imposed by Novell.  NetWare will not allow you to log in
  2720. to a file server as multiple entities simultaneously.  You must select a
  2721. SINGLE print server object on each file server, give it rights to service
  2722. all desired print queues on that file server, and use that
  2723. fileserver/printserver pair in each portQUEUE command which refers to that
  2724. file server.
  2725.  
  2726.  
  2727.  
  2728. MESSAGE "<1 BPS" APPEARS
  2729. -----------------------------------------------
  2730.  
  2731. FPServer determines a job's data rate by dividing its total size by the
  2732. number of seconds it took to transmit.  If the job took an extraordinary
  2733. length of time - or if the job is very small - the number of seconds may
  2734. exceed the number of bytes in the job.  When this happens, FPServer
  2735. displays "less than one byte per second", or <1 BPS, because the job really
  2736. DID average less than one byte per second.
  2737.  
  2738. A common reason for jobs taking longer than their byte count is that
  2739. the printer was left offline.  By the time someone notices it, the job
  2740. may have been "started" for quite a while - and enough time will have
  2741. passed to generate the "less than" message.
  2742.  
  2743.  
  2744.  
  2745. LASERJET DOESN'T AUTOMATICALLY RESET
  2746. -----------------------------------------------
  2747.  
  2748. When you Delete or Restart a print job using FPServer's console, the
  2749. parallel port's INIT line is activated to inform the printer that it
  2750. should reset itself and flush any data left in its buffers.
  2751.  
  2752. Unfortunately, Hewlett Packard has chosen to ignore the INIT line on
  2753. its family of LaserJet printers.  It is impossible for any software -
  2754. including FPServer - to send a hardware-based asynchronous reset to
  2755. a Hewlett Packard LaserJet.
  2756.  
  2757. Hewlett Packard's suggestion is to send a PCL software reset command (ESC
  2758. E) to the printer.  However, this will not work if the printer is "lost" in
  2759. its data stream (for example, in the middle of a graphics or font
  2760. transfer).  To cover all possible problem cases, the printer must provide
  2761. support for a reset at any time... and the industry-standard way to do this
  2762. since the 1970's has been the parallel port's INIT line.
  2763.  
  2764. There is no workaround for this problem; you must reset your LaserJets
  2765. manually.  (One of the main reasons for the portRESETDELAY command was to
  2766. specifically allow users enough time to manually reset LaserJets.)
  2767.  
  2768.  
  2769.  
  2770. PRINT JOBS APPEAR "STUCK" IN THE PRINT QUEUE
  2771. -----------------------------------------------
  2772.  
  2773. These are most likely print jobs with a target print date or time which is
  2774. still in the future.  Such jobs may "bubble" to the top of the print queue,
  2775. yet remain unserviced while other, "later" jobs pass them by.  You may
  2776. confirm this by running Novell's PCONSOLE and examining the job's target
  2777. date and time fields.
  2778.  
  2779. FPServer's Pending job display generally shows only those jobs which are
  2780. actually ready for printing.  Print jobs which are still under construction
  2781. ("Adding", as shown by Novell's PCONSOLE) or those which specifically
  2782. request service by a different print server are not shown.
  2783.  
  2784. The one exception to this rule is print jobs which meet all other
  2785. requirements but have a deferred print date or time.  FPServer includes
  2786. these jobs so you may use its Prioritize option to immediately print them.
  2787. If this were not so, you could not highlight them and thus the Prioritize
  2788. option would not be available.
  2789.  
  2790.  
  2791.  
  2792. CONSOLE RESPONSE IS SLOW DURING PRINTING
  2793. -----------------------------------------------
  2794.  
  2795. FPServer optimizes throughput over everything else.  If a print job is
  2796. being serviced which the target printer is willing to accept at a high rate
  2797. of speed, FPServer will allocate more resources to that port.  These
  2798. resources are thus unavailable for processing keystrokes and the display.
  2799. Normal console response will return when the high speed job is finished.
  2800.  
  2801.  
  2802.  
  2803. PROBLEMS WITH SERIALLY-CONNECTED PLOTTERS
  2804. -----------------------------------------------
  2805.  
  2806. Most serial devices provide hardware handshaking (or "flow control") via
  2807. the Data Terminal Ready (DTR) signal.  However, some devices - especially
  2808. pen, thermal, and electrostatic plotters - use the Clear To Send (CTS)
  2809. signal instead.  The specific name of the signal is not important - but it
  2810. is CRUCIAL to connect the correct output of the print device to the DSR
  2811. input of the host PC.  Be sure to review the documentation for your print
  2812. device if you are experiencing handshaking problems.
  2813.  
  2814.  
  2815.  
  2816. TIMING PROBLEMS AFTER SEVEN YEARS
  2817. -----------------------------------------------
  2818.  
  2819. FPServer's internal timebase overflows after approximately 7.5 years of
  2820. continuous execution.  Be sure to stop, and then restart, FPServer as you
  2821. approach 7.5 years of uninterrupted operation! (smile)
  2822.  
  2823.  
  2824.  
  2825. ===========================================================================
  2826. TECHNICAL DETAILS
  2827. ===========================================================================
  2828.  
  2829. VALID PARALLEL AND SERIAL HARDWARE
  2830. ---------------------------------------
  2831.  
  2832. FPServer always confirms the presence of valid parallel and serial
  2833. hardware. This is necessary because some software (including Novell's NETX
  2834. shell) can attempt to "simulate" ports for which no actual hardware exists.
  2835. Since FPServer interacts directly with port hardware, its absence could
  2836. cause operational problems and loss of data.
  2837.  
  2838. The verification process is based upon the circuit design used by IBM for
  2839. their original Personal Computer in 1981.  Later variations on this design
  2840. have appeared in various platforms, but most attempt to remain downward
  2841. compatible with the original.  Since the original IBM design is the only
  2842. one which can be considered a "standard", FPServer only requires that basic
  2843. level of capability.
  2844.  
  2845. For parallel ports, FPServer confirms the presence of an eight bit latch
  2846. and an eight bit readback buffer.  On the original IBM PC's parallel port,
  2847. a 74LS374 octal D-style flip flop was used to store data written to the
  2848. port's data address.  The outputs of these eight flip flops drove the data
  2849. pins on the output connector - and they also drove the inputs of a 74LS244
  2850. octal buffer.  This buffer provided "read back" capability to the parallel
  2851. port hardware which was tested by the BIOS during initialization.  FPServer
  2852. confirms the presence of a valid parallel port by writing various bit
  2853. patterns to the octal flip flop and reading them back via the octal buffer.
  2854. If the write and read data match, the port is assumed to be valid.
  2855.  
  2856. For serial ports, FPServer confirms the presence of an 8250-style UART
  2857. device at the specified address.  8250-style UART's contain read-write
  2858. registers, some of which have bits which are forced to a known state.
  2859. FPServer tests several of these registers, and if their behavior is as
  2860. expected the port is assumed to be valid.
  2861.  
  2862.  
  2863.  
  2864. INTERRUPTS
  2865. ---------------------------------------
  2866.  
  2867. FPServer uses software interrupt 1C hex, the Timer Service Routine, for
  2868. various purposes.  It does NOT use nor redirect hardware interrupt 8 (IRQ
  2869. 0), the hardware Timer Tick, but instead lets the Timer Tick service
  2870. routine call it via interrupt 1C hex.  FPServer's Int 1C routine "chains"
  2871. itself into the call sequence in the appropriate manner, and passes control
  2872. to the original Int 1C vector upon completion.  When FPServer is terminated
  2873. by pressing Escape, the original Int 1C vector is properly restored.
  2874.  
  2875. FPServer does not use any hardware port interrupts.  All of the IRQ lines
  2876. normally associated with parallel and serial ports (typically IRQ's 3, 4,
  2877. 5, and 7) are ignored.  FPServer does NOT disable them at the 8259A
  2878. interrupt controller, however, so they may be used for other purposes (such
  2879. as the network interface card) if necessary.  Please note that, if the
  2880. interrupt lines are in use by another program, an appropriate driver must
  2881. be installed to service them.
  2882.  
  2883.  
  2884.  
  2885. "SAFE" VS. "FAST" PARALLEL OPERATION
  2886. ---------------------------------------
  2887.  
  2888. There is no universally recognized timing diagram for a "Centronics"
  2889. parallel port.  Different manufacturer's specifications offer a variety of
  2890. minimum and maximum pulse widths for Strobe, Busy, Acknowledge, and the
  2891. other signals which comprise the hardware handshaking system for this
  2892. industry "standard".  Even different product manuals from Centronics itself
  2893. do not agree on a single set of values.
  2894.  
  2895. The vast majority of modern print devices treat Strobe as an "edge
  2896. sensitive" signal, which can be briefly interpreted as meaning that the
  2897. width of the pulse is less important than the fact that a pulse actually
  2898. occurred.  FPServer's "Fast" parallel mode takes advantage of edge
  2899. sensitive devices to dramatically increase data throughput.
  2900.  
  2901. However, print devices may exist which are "level sensitive", meaning that
  2902. they expect to see Strobe stay active for a some minimum period of time.
  2903. Since there is no industry standard for a Centronics port's strobe pulse
  2904. width, FPServer's "Safe" parallel mode uses a value of 500 nanoseconds as
  2905. stated in the original IBM Personal Computer Technical Reference manual
  2906. (IBM document number 6025005), page 2-81.
  2907.  
  2908. FPServer's "Fast" parallel mode has been tested with a wide range of
  2909. parallel devices and, to date, none have proven incompatible.  All parallel
  2910. ports default to "Fast" mode unless a corresponding portMODE=SAFE command
  2911. appears in the FPSERVER.CFG file or on the DOS command line.
  2912.  
  2913. "Safe" mode has been included to guarantee compatibility with the maximum
  2914. number of different parallel devices.  However, for maximum throughput,
  2915. "Fast" mode is highly recommended.
  2916.  
  2917.  
  2918.  
  2919. ===========================================================================
  2920. BUGS AND OTHER ANOMOLIES
  2921. ===========================================================================
  2922.  
  2923. There are no known bugs in FPServer.  However, that does not mean that none
  2924. exist!  Bugs will be corrected as they are discovered (by me) or reported
  2925. (by you).
  2926.  
  2927. Please be sure to retry any failed operation before assuming it is a bug.
  2928. Any number of events can corrupt data flowing over a network cable (failing
  2929. network interface card, accidental disconnection of the cable, etc.).  If
  2930. it happens once, and you cannot repeat it, it probably isn't a FPServer
  2931. bug.
  2932.  
  2933. If you have what appears to be a legitimate bug, I WOULD LIKE TO HEAR ABOUT
  2934. IT!  Please be sure to document the hardware and software environment of
  2935. the bugs, along with (if possible) copies of the files which were being
  2936. printed at that time.
  2937.  
  2938.  
  2939.  
  2940. ===========================================================================
  2941. ABOUT THE AUTHOR
  2942. ===========================================================================
  2943.  
  2944. My name is Richard L. Hartman.  I have over 12 years of formal experience
  2945. in the Electronics industry which started in analog circuitry and
  2946. progressed through the disciplines of discrete digital, integrated digital,
  2947. microprocessor, software, and management.  My employment history includes
  2948. both Engineering and Marketing departments for everything from five-man
  2949. startups to companies with thousands of employees.
  2950.  
  2951. Along the way I have designed many successful products - the most prominent
  2952. of which is probably the Key Tronic KB5151 Enhanced PC Keyboard, the first
  2953. to have separate cursor and numeric keypads.  Over 250,000 KB5151's have
  2954. been sold and its standard continues to influence keyboard design to this
  2955. day.
  2956.  
  2957. My consulting efforts are now concentrated in the area of Local Area
  2958. Networks - specifically the development of software which runs with, and
  2959. takes advantage of, Novell's NetWare Operating System.  I am a Novell
  2960. Registered Professional Developer and actively pursue all topics, in all
  2961. disciplines, which involve this market segment.
  2962.  
  2963. Products like FPServer are my answer to the extremely high cost of
  2964. advertising in magazines and trade journals.  I simply cannot justify the
  2965. money necessary to elevate myself and my services above the "noise floor"
  2966. established by multi-million dollar companies and their multi-page color
  2967. advertisements.  Instead, I invest my TIME writing software which
  2968. (hopefully) has broad appeal and allows potential clients the opportunity
  2969. to sample my work without risk or expense.  Then, if you like it, you can
  2970. pay for it.  You incur zero up-front expense and zero risk.
  2971.  
  2972. My consulting services include:
  2973.  
  2974.      Conceptual: A confidential, objective sounding board for new ideas
  2975.     Feasibility: Assessment of technical viability
  2976.     Engineering: Actual product design and development
  2977.    Modification: Adding network intelligence to existing products
  2978.         Testing: Verifying network compatibility
  2979.        Training: Adding network programming to your staff's skill set
  2980.  Recommendation: Network-oriented analysis of your current/future products
  2981.  
  2982. If you create network software - or are planning to - please contact me:
  2983.  
  2984.                          Richard L. Hartman (RLH)
  2985.                  Novell Registered Professional Developer
  2986.              5205 North Mulvaney Court, Spokane, WA 99212-1611
  2987.      509-924-6576 (Voice)   509-926-4626 (Fax)   CompuServe 76350,2275
  2988.