home *** CD-ROM | disk | FTP | other *** search
/ Best Objectech Shareware Selections / UNTITLED.iso / boss / util / misc / 018 / mufusion.doc < prev    next >
Encoding:
Text File  |  1993-03-09  |  26.6 KB  |  573 lines

  1.  
  2. Documentation for MUFUSION.
  3.  
  4. This is _FREE_ software.
  5.  
  6. If you are happy with this software, please give a copy to anyone you 
  7. think might find it useful.  If you find any problems, please contact me 
  8. (details below).
  9.  
  10.  
  11. Description:
  12.  
  13.   Mufusion is a terminal program which emulates a Microfusion MF30 
  14.   terminal, as used with McDonnell Douglas hospital information systems 
  15.   software.  It provides 29 screens of backpaging, and extensive 
  16.   facilities for data capture.  It is written in Turbo Pascal v5.0, and 
  17.   was adapted from a videotext terminal program by Jim Nutt, which is in 
  18.   the public domain.  It will also compile in Microsoft QuickPascal.
  19.  
  20.   Most of the code in MUFUSION.PAS is copyright (C) Cardiology
  21.   Department, Royal Melbourne Hospital.   It may be freely distributed 
  22.   in an unmodified form, or modified for use within a particular 
  23.   institution.  The executable file may be distributed without the 
  24.   source code, but must not be distributed without this documentation 
  25.   file.  If you make any changes, please indicate this in an opening 
  26.   screen on the program, and in the documentation.  If the changes are 
  27.   likely to be of use to others, please forward your code to me at the 
  28.   address below so it can be incorporated, with suitable credit, in the 
  29.   official release.
  30.  
  31.   We also have an int14 interface version of this package which will 
  32.   work with an asychronous comms server across a network. This version 
  33.   is available from us for $50 per mainframe connection, or $1000 for a 
  34.   site licence.
  35.  
  36.  
  37. Startup:
  38.  
  39.   Mufusion by default uses COM1: at 9600 baud.  The complete syntax for 
  40.   mufusion is
  41.  
  42.   MUFUSION [<port>[<speed>[<foreground>[<background>[<protected>[printer]]]]]]
  43.  
  44.   All parameters are optional.
  45.  
  46.   The port can be a number from 1 to 4 (defaults to COM1:).  If the port 
  47.   can not be found, the program will give an error message and set the 
  48.   DOS errorlevel to 1.
  49.  
  50.   The speed can be one of 110, 150, 300, 600, 1200, 2400, 4800, 9600, 
  51.   19200, 38400 or 57600 (defaults to 9600).
  52.  
  53.   The foreground color is a number from 0 to 7 (where 0=black, 1=blue,
  54.   2=green, 3=aqua, 4=red, 5=purple, 6=yellow, 7=white).  The default is 
  55.   green.
  56.  
  57.   The background color is likewise a number between 0 and 7, the default
  58.   is black.
  59.  
  60.   A different color can be specified for protected mode text.  This 
  61.   defaults to cyan.
  62.  
  63.   With a monochrome graphics adaptor, the color settings have no effect.
  64.  
  65.   The printer can be any DOS device (LPT1, LPT2, LPT3, COM1, COM2, NUL) 
  66.   or file name.  If not specified, it defaults to LPT1.  If the 
  67.   device/file name is invalid, a warning will be given.  Do not send 
  68.   printer output to the port you are using for communications.
  69.  
  70.   A .PIF file is provided for running mufusion under windows.
  71.  
  72.  
  73. Commands:
  74.  
  75.   The current command list is as follows:
  76.  
  77.     <ALT>-<C>           Open/close a capture file.  With a capture file 
  78.                         on, all incoming characters are saved in the 
  79.                         file.  The bottom right corner of the display 
  80.                         flashes to indicate capture in on.
  81.  
  82.     <ALT>-<D>           Dial with a Hayes compatible modem.  Precede the 
  83.                         number with "P" or "T" to force pulse or tone 
  84.                         dialing.
  85.  
  86.     <ALT>-<E>           Toggle in and out of a debug mode.
  87.  
  88.     <ALT>-<F>           Send a formfeed to the printer and flush the 
  89.                         printer buffer.
  90.  
  91.     <ALT>-<H>           Hang up the modem.
  92.  
  93.     <ALT>-<I>           Dump the screen to an image file (if debugging 
  94.                         is off), useful for preparing documentation.
  95.  
  96.     <ALT>-<L>           Toggle the number of lines on the screen 
  97.                         (requires EGA/VGA).
  98.  
  99.     <ALT>-<O>           Shell to DOS, allowing DOS operations while
  100.                         preserving the terminal screen.
  101.  
  102.     <ALT>-<P>           Toggle the printer on/off.  The bottom right 
  103.                         corner of the screen is brightened to indicate 
  104.                         when the printer is on.
  105.  
  106.     <ALT>-<R>           Run a DOS command (for running file transfer 
  107.                         programs, other emulators, editors, etc.)
  108.  
  109.     <ALT>-<S>           Set printer.  Allows selection of a different 
  110.                         printer or for printing to be directed to a 
  111.                         file.  This is useful for downloading reports to 
  112.                         the DOS disk, for later editing with a word 
  113.                         processor, or further manipulation with a 
  114.                         spreadsheet.
  115.  
  116.     <ALT>-<X>           Exit the terminal emulator.
  117.  
  118.     PgUp or <ALT>-<F7>  Page back (when debugging is off).
  119.     PgDn or <ALT>-<F8>  Page forward (when paged back).
  120.     Home                Line back (when debugging is off).
  121.     End                 Line forward (when paged back).
  122.  
  123.     <CTRL-BREAK>        Send a break signal.
  124.  
  125.     Print Screen        Print the screen to the specified output device.
  126.  
  127.  
  128. Other keys (apart from the obvious ones):
  129.  
  130.     <ALT>-<F1>          Send ^[.
  131.     <ALT>-<F2>          Send ^\.
  132.     <ALT>-<F3>          Send ^^.
  133.     <ALT>-<F4>          Send ^].
  134.     <ALT>-<F5>          Send ^@.
  135.     <ALT>-<F6>          Send ^@.
  136.     <ALT>-<F9>          Clear the screen.
  137.  
  138.     <Left arrow> or     Send chr(20)
  139.     <CTRL>-<left arrow>
  140.  
  141.     <Right arrow> or    Send chr(22)
  142.     <CTRL>-<right arrow>
  143.  
  144.     <Up arrow>          Send chr(24)
  145.     <Down arrow>        Send chr(18)
  146.  
  147.     <CTRL>-<Home>       Send chr(23)
  148.     <CTRL>-<PgUp>       Send chr(25)
  149.     <CTRL>-<PgDn>       Send chr(19)
  150.     <CTRL>-<End>        Send chr(17)
  151.     <Ins>               Send chr(16)
  152.     <Del>               Send chr(14)
  153.  
  154.     <CTRL>-<backspace>  Send chr(127)
  155.  
  156.  
  157. Implementation:
  158.  
  159.   Mufusion sends characters with parity set to none.  Received 
  160.   characters have the parity bit stripped before display, but no parity 
  161.   is the prefered line setting.  If the host does not support XON/XOFF 
  162.   flow control, mufusion may drop characters, particulary when printing 
  163.   to a slow printer or capturing data onto a floppy disk.  Not all of 
  164.   the microfusion terminal control codes are implemented, those that are 
  165.   are listed below.  All these functions should behave as for an MF30 
  166.   terminal.  If they don't, please let me know.
  167.  
  168. Control Codes
  169.  
  170.     EOT   ( 3)          Printing off
  171.     BELL  ( 7)          Bell
  172.     BS    ( 8)          Back space destructive
  173.     LF    (10)          Line feed
  174.     VT    (11)          Vertical Address lead-in
  175.     FF    (12)          Master clear
  176.     CR    (13)          Carriage return
  177.     DLE   (16)          Horizontal Address lead-in
  178.     SUB   (26)          Clear screen
  179.  
  180.     Escape Sequences
  181.  
  182.     SP                  Destructive backspace
  183.     !                   Continuous bell
  184.     &                   Protect off
  185.     '                   Protect on
  186.     (                   Full intensity
  187.     )                   Half intensity
  188.     *                   New line
  189.     +                   Master clear
  190.     ,                   Clear to end of page
  191.     -                   Clear to end of line
  192.     1                   Non-reverse video
  193.     2                   Reverse video
  194.     5                   Bell
  195.     <                   Cursor left
  196.     = Y X               Position cursor row Y col X
  197.     >                   Cursor right
  198.     @                   Send a carriage return
  199.     E                   Insert line
  200.     F                   Expanded facilities - some implemented, see below
  201.     J                   Clear to end of page
  202.     K                   Clear to end of line
  203.     L                   Cursor down
  204.     M                   Cursor up
  205.     N                   Flashing on
  206.     O                   Flashing off
  207.     P                   Print the screen
  208.     R            Delete line (or printer on in prism mode)
  209.     T            Clear to end of line (or printer off in prism mode)
  210.     Y                   Clear to end of page
  211.     Z                   Cursor home
  212.     [                   Enter prism mode (bottom right corner goes red).
  213.     b            goto start of next line
  214.     e x c               Repeat character x for count c
  215.     k                   Clear to end of page
  216.     o                   Clear block
  217.     p                   Clear field
  218.  
  219. Expanded Facilities
  220.  
  221.     :                   Flush printer buffer.
  222.     ;                   Print n copies.
  223.     A                   ASCII printer ON
  224.     B                   Printer OFF
  225.     C                   Binary printer ON
  226.     E                   Half-duplex
  227.     F                   Full-duplex
  228.     M                   Reposition cursor
  229.     W                   Define function keys.
  230.  
  231.  
  232. Acknowledgments:
  233.  
  234. Thanks is due to the following people;
  235.  
  236. Jim Nutt, who wrote the original teletext terminal emulator on which this
  237. is loosely based.
  238.  
  239. Philip R. Burns, Alan Bishop, C. J. Dunford, Michael Quinlan, Gene 
  240. Harris and Michael Quinlan who wrote various parts of the asynchronous 
  241. communication port handling library used by this program.
  242.  
  243. Robert Murton, Peter Coventry, Andrew McKenzie, Ron Nash, Louis 
  244. Eilermann, Neil McQuinn, Danny O'Callaghan, Paul Oppey, Joe Bainbridge 
  245. and Tim Naylor who have helped with testing the code and tracking down 
  246. problems.
  247.  
  248. The Intensive Care Unit at RMH, who supplied us with a copy of Turbo
  249. Pascal.
  250.  
  251. Health Computing Sevices, who have provided a copy of Fresh Technology's 
  252. Modem Assist for the development of the INT14 version of MUFUSION, and 
  253. Irene Pearey, Rhonda Whitfield and Barry Rogers, who helped arrange 
  254. this.
  255.  
  256.  
  257. Comments, distribution:
  258.  
  259. Please send any comments to me, Peter Summers, c/- Cardiology Department,
  260. Royal Melbourne Hospital, 3050, phone (+613/03) 342 8727, fax (+613/03) 
  261. 347 2808 or email u5533129@ucsvc.ucs.unimelb.edu.au.  If you make any 
  262. improvements, please send them to me so I can incorporate them in the 
  263. official release and everyone can benefit from them.  Updates of this 
  264. code are regularly posted to the SIMTEL archives, and can be obtained 
  265. from there (wsmr-simtel20.army.mil), or a local mirror site (archie.au 
  266. in Australia) by FTP.  Updates are also posted to the PC Connection BBS 
  267. ((+613/03) 388 0909).  If you have a modem, I can send updates by phone.  
  268. If all else fails, send me a disk and return postage to the above 
  269. address.
  270.  
  271.  
  272. Blatant Advertising:
  273.  
  274. Cardiology at RMH also has cardiology patient record keeping systems for 
  275. echocardiographs, ambulatory monitor, exercise test, catheterisation and 
  276. ECG reports, a stock control program, an equipment database program and 
  277. an electronic mail program, all written in Clipper, which we would like 
  278. to make available to others (for a price).  We are willing to sell 
  279. source code licenses for these packages.  Please call me if you are 
  280. interested.
  281.  
  282.  
  283. Version History (from when I started keeping one):
  284.  
  285. v2.0    Terminal emulator ported from Turbo Pascal v3.0 to v5.0, using a
  286.         completely new asynch comms library.  The program now takes 
  287.         command line parameters for port number, speed and screen 
  288.         colors.  The function keys are displayed when defined.  The move 
  289.         to the new compiler improved the speed markedly and cleared up 
  290.         problems with the typeahead.
  291. v2.0a   Fixed a problem with COM4:.  Neatened up the function key
  292.         display.
  293. v2.0b   Disabled the exit from the program on Control-Break.
  294. v2.0c   Fixed the handling of the bell character, which had caused problems
  295.         on one machine.
  296. v2.0d   Fixed a number of problems with the dial command.  Improved the
  297.         modem hangup, which now works more reliably, and doesn't 
  298.         automatically hang up when the program exits.  Also, the program 
  299.         now strips the eighth bit from incoming data.
  300. v2.0e   Cleaned up the behaviour of the program when it runs with very
  301.         little free memory.  If there is insufficient memory for the capture
  302.         buffer the program now gives a message only if these functions are
  303.         accessed.
  304. v2.0f   I finally got sick of the capture to file stuff, which didn't work
  305.         properly under TP v5.0, and was probably not very useful anyway, so
  306.         I deleted it all.
  307. v2.0g   Cleaned up the code a lot to make it more maintainable.  Also,
  308.         made the default protected mode colour cyan, because people liked
  309.         it so much.
  310. v2.0h   Detects mono graphics adaptors and doesn't attempt to use colors
  311.         if one is found, so inverse text now works properly on a mono 
  312.         display.
  313. v2.0i   Fixed a problem with the protected mode coloring being turned
  314.         off when inverse text was turned off.  Also, the display is now 
  315.         forced into 25x80 text mode if it was in another mode when the 
  316.         program started, and is restored afterwards.
  317. v2.0j   Increased the maximum function key definition length from 10 to
  318.         80 characters.
  319. v2.0k   Fixed a bug which caused definitions of function keys F11 and
  320.         above to overwrite the definition of F10, and changed the 
  321.         function key display slightly.
  322. v2.0l   Fixed a bug which caused the program to sometimes generate a
  323.         carriage return character when it shouldn't while trying to
  324.         overwrite protected text with unprotected.
  325.  
  326. v2.1    Now supports slave printing, plus manual printer toggle with the 
  327.         ALT-P key combination.  If the printer in off-line, the printing 
  328.         will be turned back off automatically.
  329. v2.1a   Fixed a bug with the ESC-F-C sequence.
  330.  
  331. v2.2    Now supports 20 function keys, keys 11-20 being the standard 
  332.         function keys combined with the shift key.  Shift-F1 and 
  333.         shift-F10 therefore no longer exit the emulator.  Also cleaned 
  334.         up the modem control (dial and hangup) code.
  335. v2.2a   More cosmetic changes to the modem control stuff.
  336.  
  337. v2.3    Now supports a debugging mode selected with <ALT>-<E>.
  338.  
  339. v2.4    Now displays the shift-F key definitions when the Shift key is
  340.         depressed and available commands when the Alt key is pressed.  
  341.         Removed the ALT-F command which displayed the function keys, as 
  342.         it should no longer be necessary.  Cleaned up some other bits 
  343.         of code, and implemented the Insert Line and Delete Line codes.
  344.  
  345. v2.5    Added an optional extra command line parameter allowing the 
  346.         specification of alternative print destinations.  Any valid DOS 
  347.         device or file name can be specified.
  348.  
  349. v2.6    Went over the emulation stuff really carefully, and made a few 
  350.         corrections.  The program should now work with almost any program
  351.         that can handle a Microfusion MF30.
  352. v2.6a   Now generates an error message if it can't write to the printer, 
  353.         to tell the user that it has turned printing off.
  354. v2.6b   Added buffering of data to the printer and XON/XOFF flow control 
  355.         to cope better with slow printers.
  356. v2.6c   Cleaned up the flow control stuff a bit.
  357.  
  358. v2.7    Added the ability to capture incoming text to a file (other than 
  359.         by specifying a file as the printer).
  360.  
  361. v2.8    Moved to a new asynch comms library, which gives speeds up to 
  362.     57600 bps, better flow control and break signalling, among other 
  363.     things.
  364. v2.8a    Improved the modem hangup code, changed the dial code so that it 
  365.     hangs up the modem before attempting to dial, shortened the 
  366.     break to one second, added my name to the status line (on the 
  367.     insistence of our director).
  368. v2.8b    Moved the send break function from the <ALT>-<B> key to the 
  369.     <CTRL>-<BREAK> key.
  370. v2.8c    Fixed a minor problem associated with baud rates above 19200 bps.
  371.  
  372. v3.0    Added 16 pages of backpaging (by popular request), and the 
  373.         ability to shell out to DOS.
  374. v3.0a   Fixed a bug with screen addresses containing ^Q or ^S characters 
  375.         being intercepted by the async routines for flow control.
  376.  
  377. v3.1    Implemented the esc-P (print screen).  The screen printing code 
  378.     now writes to the specified print device, not necessarily to LPT1,
  379.         when debugging is off.  The print-screen key also sends output
  380.         via this code, which allows for the capture of screen dumps to a 
  381.         file.  The Del key now sends a chr(127).  Chr(127)s sent to 
  382.         mufusion are now ignored.  Fixed a bug with the control-break 
  383.         key not working as expected when shelled out to DOS.
  384. v3.1a    Tracked down a couple of places where the screen copy used for 
  385.     backpaging wasn't being updated.
  386. v3.1b   Changed the ALT-functions help line, because I woke up to the 
  387.         fact that O comes before P in the alphabet.
  388. v3.1c    Fixed a few places where the program attempted to use the 
  389.     backpage buffer when it was not being kept up to date.
  390. v3.1d   Fixed the file capture code so that it warns you before 
  391.         overwriting an existing file, and offers you the options of 
  392.         appending to it, overwriting it or leaving it alone.
  393. v3.1e    Fixed a problem with not sending characters on some machines if 
  394.     it was run immediately after another terminal program.
  395. v3.1f    Reduced the length of the break signal from 1000 to 400ms.
  396. v3.1g   Fixed a problem with characters being dropped while printing the 
  397.         screen, and while sending a break signal.
  398. v3.1h   Fixed the problem with control-break being ignored when shelled 
  399.         out to DOS.
  400. v3.1i   Fixed the backpage display function so it no longer wraps around.
  401. v3.1j   Fixed up the shell to DOS function because some vectors still 
  402.         held the values put into them by turbo pascal, which didn't
  403.         actually cause any problems but seemed undesirable.
  404. v3.1k   Removed some bits of redundant code.
  405. v3.1l   Turned stack checking and array bounds checking on for all the 
  406.         code, after a report of a machine crashing while running 
  407.         mufusion.
  408. v3.1m   Fixed a bug with cursor positioning commands and unprotected 
  409.         text.
  410. v3.1n   Fixed a bug with scrolling text when the character after the 
  411.         line feed was a ^G.
  412. v3.1o   Altered the hangup function so that it tells you whether the 
  413.         carrier was dropped (for those with internal modems).
  414. v3.1p   Recoded the back page buffer handling, because people with XTs 
  415.         were complaining about the speed.
  416. v3.1q   Fixed a problem with the display of function key definitions.
  417.  
  418. v3.2    Implemented the <ALT>-function keys, as per the MF30.
  419. v3.2a    Turned range checking off, which speeds everything up
  420.     considerably, and added more documentation to the source.
  421. v3.2b    Went over the character display code and made it faster.
  422. v3.2c    Discovered that I had allocated a much larger stack than 
  423.     required, so I reduced it to something more sensible.
  424. v3.2d   Cleaned up the clear to end of screen / end of line code, making
  425.         it neater and slightly faster.
  426. v3.2e   Cleaned up the get a character code and made it slightly faster.
  427. v3.2f   All strings are now sent with 10ms/char delays to avoid problems 
  428.         on slow systems.
  429. v3.2g   Turned stack checking off, which should improve speed.
  430. v3.2h   Changed scrolling to avoid a line feed occuring if an escape 
  431.         sequence follows.
  432. v3.2i   Fixed a couple of places where the screen would scroll and the 
  433.         backpage buffer didn't.
  434. v3.2j   Fixed a bug in the handling of the "esc e" sequence.
  435. v3.2k    Cleaned up the auto-echo code.
  436. v3.2l   Wrote in a work-around for lines set up for Prism terminals to 
  437.         bypass the download an emulation stuff.
  438. v3.2m   Fixed the "can't find the port" code so it exits with the 
  439.         errorlevel set to 1.
  440. v3.2n   Fixed a bug which caused the display screw up with an EGA screen 
  441.         after shelling to DOS when debug mode was on.
  442. v3.2o   Minor improvements to the debugging functions.
  443. v3.2p   Rewrote the backpage buffer handling, so it no longer needs to 
  444.         be cleared on startup, avoiding the two second delay on slow XTs.
  445.         Increased the backpage buffer size to from 15 to 30 screens.
  446. v3.2q   Fixed the screen dump routines so they work properly when 
  447.         viewing backpages.
  448. v3.2r   Rewrote the screen dump routine to be slightly less convoluted.
  449. v3.2s   Altered the backpaging code slightly so it stops backpaging at 
  450.         the top of the buffer.
  451.  
  452. v3.3    The Home and End keys now move the screen back or forward one
  453.         line.
  454. v3.3a   Recoded the backpage display routine to scroll more smoothly.
  455. v3.3b   Slightly altered the handling of chr(12) in debugging mode
  456.         to give a neater display.
  457. v3.3c   Changed the display mode handling to allow users of EGA/VGA 
  458.         screens to use 43/50 line mode in mono.
  459. v3.3d   Fixed a bug with invoking MUFUSION when in 43/50 line mode.  
  460.         Provided a .PIF file for windows users.
  461. v3.3e   Incorporated DOS 5 style built-in help.
  462. v3.3f   Fixed a bug with setting the baud rate introduced in 3.3e.
  463. v3.3g   Recoded the message display associated with overwriting an
  464.         existing file with a capture file, to make it less annoying.
  465. v3.3h   Fixed a problem with running REALLINK within the DOS shell.
  466.  
  467. v3.4    Implemented a dump-screen-to-image-file function, invoked by 
  468.         typing <ALT>-<I>.
  469. v3.4a   Enabled dumping of screen images while backpaged.
  470. v3.4b   Enables shelling to DOS and program exit while backpaged.
  471. v3.4c   Fixes the screen dump and print screen routine so they don't 
  472.         print extra spaces at the end of each line.
  473. v3.4d   Fixed a problem with the reverse text on monochrome machines 
  474.         introduced in 3.3e.
  475. v3.4e   Removed a line of unwanted code, and packaged in the transmit 
  476.         utility.
  477. v3.4f   Improved the program behaviour when dealing with an illegal 
  478.         printer, and rewrote parts of the .DOC file.
  479. v3.4g   Flushes the keyboard buffer before exiting with an illegal 
  480.         port/printer message.
  481. v3.4h   Implemented several undocumented escape sequences (esc J, esc K,
  482.         esc k, esc b) and fixed bugs in several others (esc <, esc >).
  483. v3.4i   Further refinements to esc < and esc >, plus corrections to the 
  484.         handling of the backspace character.
  485. v3.4j   Further refinements to the handling of the backspace character.
  486. v3.4k   Corrected the esc K sequence, which should clear to the end of 
  487.         the line, not to the end of the screen.
  488.  
  489. v3.5    Implements Alt-F to send a form feed to the printer.
  490.  
  491. v3.6    Separated the number of lines option from the debugging mode, 
  492.         putting number of lines on Alt-L, and simplified and improved
  493.         the debugging mode.
  494. v3.6a   Fixed a bug with backpaging wrapping around when in 43/50 line 
  495.         mode.
  496. v3.6b   Implemented the Control-Arrow keys, and the arrow keys, which
  497.         perform the same functions.
  498. v3.6c   Delete no longer sends a chr(127), though Ctrl-backspace does.
  499. v3.6d   Improvements to the toggle-lines code.
  500. v3.6e   Minor improvement to the toggle-debugging code.
  501. v3.6f   Implemented Ins, Del, ctrl-(Home,PgUp,PgDn,End).
  502. v3.6g   Fixed a problem with incorrect text color after switching screen 
  503.         modes.
  504. v3.6h   Fixed a problem with inappropriate cursor positioning after 
  505.         switching screen modes with emulation off.
  506. v3.6i   Doesn't attempt to dump an image file if emulation is off (which 
  507.         won't work).
  508. v3.6j   Stopped the screen from scrolling when protection is off (which 
  509.         it shouldn't do).
  510. v3.6k   Fixed another minor problem with screen scrolling.
  511. v3.6l   Renamed the Emulation function to Debug, since that's what it
  512.         now does.  This function is still performed using alt-E.
  513.  
  514. v3.7    Implemented the RUN command, as an easy way of running file 
  515.         transfer programs without the fuss of shelling to DOS.
  516. v3.7a   Fixed the clear field (esc p) sequence so it clears fields which 
  517.         run beyond the end of a line.
  518. v3.7b   Rewrote the printer handling and increased the print buffer size 
  519.         to 2048 characters.
  520. v3.7c   Implemented the clear print buffer (esc F :) and print n copies 
  521.         of data (esc F ; <n>) codes.
  522. v3.7d   Sets the printer buffer to empty it printing fails.
  523. v3.7e   Fixed a number of bugs with the printer handling as controlled 
  524.         by chr(18) and chr(20).
  525. v3.7f   Fixed the handling of chr(3) for getting out of printing mode.
  526. v3.7g   Fixed screen scrolling in response to horizontal address codes.
  527.  
  528. v3.8    Added the SET PRINTER function.
  529. v3.8a   Increased the printer buffer size to 3k (the same size as the 
  530.         MF30's), and removed one screen of backpaging to provide the 
  531.         required memory.
  532. v3.8b   Removed chr(18) and chr(20) as printer control characters (they
  533.         don't work on a Microfusion), and stopped the printing of chr(0) 
  534.         and chr(3).
  535. v3.8c    Provides for neater handling of an illegal printer.
  536. v3.8d   Further improvements to the handling of illegal printers
  537. v3.8e   Neater illegal printer messages.
  538. v3.8f   Fixed a bug with trying to print the screen to an illegal printer.
  539. v3.8g   Improved handshaking for the INT14 version.
  540. v3.8h   Fixed a bug with restoration of background screen color when 
  541.         returning from DOS shell.
  542. v3.8i   Stops chr(131) being passed to the printer (this character gets 
  543.         stripped of its high bit and turns printing off).
  544.  
  545. v3.9    Supports prism printer control sequences.
  546. v3.9a   Fixed a bug with the flow control in the INT14 version after 
  547.         failing to write to the printer.
  548. v3.9b   Put in the status information in the bottom right hand corner.
  549. v3.9c   A really major rewrite of all the printer handling, which had 
  550.         become a real mess.  This makes for much better interfacing with 
  551.         network print queues (no longer requires timeouts), and gives me
  552.         a much more consistent printer interface to work with.
  553. v3.9d   Put error checking on all file close operations (which rarely 
  554.         failed, but left the program unusable if they did).
  555. v3.9e   Added the option of retrying of failed writes to the printer.
  556. v3.9f   Fixed a bug with specifying non-existant print file destinations
  557.         on the command line, and cleaned up the output to the printer.
  558.         The printer now only sends printable characters (LF,FF,CR and
  559.         characters 32 to 126 after stripping top bit) if using esc F A, 
  560.         or everything except 0, 3 or esc F (unless quoted with a 
  561.         preceding escape) if using esc F C.
  562. v3.9g   Removed some unneeded code from the print screen and feed
  563.         printer routines.
  564. v3.9h   Slightly tighter setup code.
  565. v3.9i   Cleaned up the image file code.
  566. v3.9j   Fixed a bug with printing timed-out characters after esc-F-C.
  567. v3.9k   Wrote a general purpose file open routine and removed a lot of 
  568.         repeated code for doing file opens.
  569. v3.9l   Simplified and fixed bugs in the handshaking for the INT14 version.
  570. v3.9m   Removed unneccessary pausing in the INT14 version.
  571. v3.9n   Changed the handling of esc-T in prism mode so it does a clear 
  572.         end of line if the printer isn't on.
  573.