home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol055 / sigmlog.048 < prev    next >
Text File  |  1985-02-09  |  24KB  |  533 lines

  1. Sig/M    Volume 48    Communication Utilities
  2.             Miscellaneous CP/M Support 
  3.  
  4.         -CATALOG.048    contents of Sig/M volume 48
  5.                 released November 25, 1981
  6.         ACKLIST.048    acknowledgement file
  7.         CRCKLIST.048    checksum of Sig/M volume 48
  8.  
  9. index    name        size    description
  10.  
  11. 48.01    CARRY12 .ASM     6K    pause prior to load of .COM files    
  12. 48.02    MODEM7  .DOC    16K    update of Modem7 program
  13. 48.03    MODEM7  .LIB    14K       /
  14. 48.0┤    MODEM╖  .SE╘     3╦      / 
  15. 48.05    MODEM73 .ASM    63K     /      
  16. 48.06    MODEM73 .OBJ    10K    /          
  17. 48.07    SENDOUT3.ASM     5K    sendout utility for PMMI
  18. 48.08    UNSPOOL .ASM    13K    DESPOOL look-alike
  19. 48.09    UNSPOOL .DOC     8K    /
  20. 48.10    USRDFLT2.CCP    15K    pseudo CCP User
  21. 48.11    USRPW34 .ASM    17K    password for User access control
  22. 48.12    XMODEM46.ASM    39K    remote CP/M file transfer program
  23. 48.13    SQ      .COM    14K    pack ASCII file
  24. 48.14    USQ     .COM    10K    unpack ASCII file
  25.  
  26. Copyright (C) 1981 by Sig/M-Amateur Computer Group
  27. of New Jersey Inc., Box 97, Iselin NJ 08830-0097
  28.  
  29.               CP/M MODEM PROGRAM DOCUMENTATION
  30.         by Mark M. Zeiger and James K. Mills
  31.               11/04/80
  32.  
  33. This  program  uses  the  file transfer routines  written  by  Ward 
  34. Christensen  in his CP/M file transfer program (V2.0 as of  8/6/79) 
  35. and  is  compatable with his program in single file transfer  mode. 
  36. Multi-file transfers are only possible between two systems  running 
  37. the program described below.
  38.  
  39. This program has three functions:
  40.  
  41.         1.  Communication
  42.         2.  Program transfer
  43.         3.  Modem control (for PMMI Modem)
  44.  
  45.  
  46. COMMUNICATIONS
  47.  
  48. The program may emulate a terminal or echo data back to sender (act
  49. as a computer).
  50.  
  51. Terminal Mode  -  'T' Option
  52.  
  53.         The  terminal mode may be called with or without a file  name. 
  54.         If  a  file  is  specified (it should be  a  new  file),  then 
  55.         anything  received  by the modem may be saved  in  memory  and 
  56.         later  written on disk.  The save feature is toggled ON/OFF by 
  57.         Control-Y.  On  an IMSAI the front panel LEDs  will  indicated 
  58.         that  memory save is toggled on by showing the binary value of 
  59.         the ASCII character received. For those with no front panel, a 
  60.         colon  (:) will be printed at the beginning of each line  when 
  61.         memory save is active.  The colon will not be transmitted over 
  62.         the modem nor will it be saved in memory.
  63.  
  64.         If  a  file  is not specified,  then memory save  can  not  be 
  65.         activated.
  66.  
  67.         If  the memory buffer is full (the buffer is from the  top  of 
  68.         the  program  to  the  bottom  of  BDOS),   the  contents  are 
  69.         automatically  written  to  disk  (but the  file  is  not  yet 
  70.         closed).  Communications  may  then continue with  the  buffer 
  71.         reinitialized.  The  computer with which you are communicating 
  72.         must  accept  the  X-ON and X-OFF  (Control-Q  and  Control-S) 
  73.         conventions or data will be lost.
  74.  
  75.         When  communications are over,  use Control-E to exit from the 
  76.         Terminal  mode and enter the Menu.  The file to which you  are 
  77.         writing  must then be closed by using the  'WRT'  command.  If 
  78.         this  is  not done,  all data will be lost.  I decided not  to 
  79.         close  the file automatically since there will be  times  when 
  80.         you leave terminal mode and then decide to re-enter.  This may 
  81.         be done while in the Menu by using the 'RET' command.  You may 
  82.         re-enter Terminal mode and save in the same file as many times 
  83.         as  you wish as long as you have not closed the file with  the 
  84.         'WRT' command.
  85.  
  86.         While  in  Terminal  mode,  Control-T will  put  you  in  File 
  87.         Transfer mode.  This will allow you to send the contents of an 
  88.         ASCII file over the modem. This routine does no error checking 
  89.         and  there are no protocols specified between this program and 
  90.         the  receiving computer other than that it should be ready  to 
  91.         receive  data  via  the  modem.   Control-X  will  cancel  the 
  92.         transfer.
  93.  
  94.  
  95. Computer mode - 'E' Option
  96.  
  97.         This  mode  echos data received by other  computer.  Only  one 
  98.         computer  may be in this mode at one time.  There is  no  save 
  99.         feature  in this mode.  Useful if you wish to communicate with 
  100.         somebody running the terminal portion of the program.
  101.  
  102. File transfer - 'S' and 'R' Options
  103.  
  104.         These  features  are  the same as in the  CP/M  Modem  program 
  105.         written by Ward Christensen except that upon completion of the 
  106.         transfer, control returns to the Menu unless the secondary 'T' 
  107.         option has been selected.  In the latter case, control returns 
  108.         to Terminal mode.  Remember that if you are operating a remote 
  109.         computer   using   a  timesharing  program   (such   as   Ward 
  110.         Christensen's "BYE"),  the remote should be instructed to send 
  111.         or  receive  in  the  quiet (Q) mode as  a  secondary  option. 
  112.         Examples  of  commands for sending and  receiving  are  listed 
  113.         below.
  114.  
  115. Multi-file transfers
  116.  
  117.         Using  the B (batch) secondary option,  more than one file and 
  118.         ambiguous filenames may be transferred. To send files, use the 
  119.         primary  option  "S" and the secondary option "B" (along  with 
  120.         any  other  secondary options and baudrate).  To  receive  the 
  121.         files  being  sent,  use the "R" primary option  and  the  "B" 
  122.         secondary  option.  Files may not be named since filenames are 
  123.         sent by the sending program, but a disk drive may be specified 
  124.         (or else the files are written to the default drive).
  125.  
  126. Backup option
  127.  
  128.         There  is  a byte at the beginning of the program (106H)  that 
  129.         will  create a backup file if a file on the disk has the  same 
  130.         name  as the file being received in multi-file  transfer  (see 
  131.         MODEM.SET). If this byte is set to 0FFH, a backup file will be 
  132.         created.  If  it is zero the file on the disk will be  deleted 
  133.         before the new file is received. If you are running CP/M 2 and 
  134.         a file on the disk is designated R/O or SYS,  a backup will be 
  135.         created whether the byte at 106H is set or not.
  136.  
  137.         Be  careful - if you are running CP/M 1 and the drive on which 
  138.         you  are receiving has an R/O file with the same name  created 
  139.         by CP/M 2,  the R/O file can not be accessed (found,  changed, 
  140.         erased,  etc.)  by CP/M 1.  You will therefore have two  files 
  141.         with  the same name when you are running CP/M 2.  To fix  this 
  142.         problem, use CP/M 1 to change the name of the file that is not 
  143.         R/O. Then use CP/M 2 to do what you want with the R/O file.
  144.  
  145.         Examples:
  146.  
  147.         The  sender enters    SBOT.600 B:*.COM    to send all the  COM 
  148.         files on disk B.  Also specified were originate mode 600  baud 
  149.         (PMMI modem) and return to terminal mode when done.
  150.  
  151.         The  receiver enters     RBA.600    to receive all  the  files 
  152.         being  sent on the default drive (also answer mode at 600 baud 
  153.         for PMMI).
  154.  
  155.  
  156.         The sender enters the command   SB.600  ASM.COM  *.HEX  B:M*.*
  157.         which  will send ASM.COM from the default drive,  all the  HEX 
  158.         files from the default drive,  and all the files starting with 
  159.         "M" from the B drive.  [note that neither 'A' or 'O' were
  160.     specified: default is to whatever mode the PMMI is in
  161.     currently]
  162.  
  163.         Multifile transfers may only be done from the menu. It may not 
  164.         be specified when the MODEM program is called.  In other words    
  165.         A>MODEM  SAB  *.COM   will result in an INVALID  OPTION  error 
  166.         message.
  167.  
  168.  
  169. Return to Menu - 'M' option
  170.  
  171.         When asked to select an option, 'M' returns to Menu.
  172.  
  173. The MENU
  174.  
  175.         If  the Modem program is entered with no option,  the Menu  is 
  176.         called.  The  Menu gives the choice of selecting the  standard 
  177.         options as defined by Ward Christensen (T,  E,  R, and S). The 
  178.         Terminal  mode has been greatly expanded as  described  above. 
  179.         The "R" and "S" commands must be called with a filename or you 
  180.         will be required to enter the primary command (S or R) and the 
  181.         filename  again (but NOT the secondary options).  If you  want 
  182.         multi-file  transfers,  then  the "R" option does not  need  a 
  183.         filename.
  184.  
  185.   RET - You may also enter terminal mode using the 'RET' command,  but 
  186.         no  data  will  be saved since a file may not  be  named  with 
  187.         'RET'.  Use  the 'RET' command to RE-ENTER Terminal mode after 
  188.         it  has  first been entered with the 'T' option.  If  this  is 
  189.         done, you will still be able to save the communications if you 
  190.         were doing so before you exitted the terminal mode.
  191.  
  192.   WRT - The  'WRT' command must be used after leaving  Terminal  mode. 
  193.         This  writes  the  last buffer to disk and  closes  the  file. 
  194.         Failure  to use the 'WRT' command results in loss of all  data 
  195.         and a file of length zero.
  196.  
  197.   DEL - The  'DEL'  command  erases the most recent file  accessed  in 
  198.         Terminal mode.  Useful if you decide after communications that 
  199.         you don't want to save information just gathered.
  200.  
  201.   CPM - The 'CPM' command reboots and returns to CP/M.
  202.  
  203.   XPR - The  'XPR'  command is a toggle which causes the  menu  to  be 
  204.         printed  or not printed.  Initially the menu is on unless  the 
  205.         program is called with the "X" option (ie.  A>MODEM X ).
  206.  
  207.   DIR - The 'DIR' command lists the directory of a CP/M disk.  A drive 
  208.         may  be specified (ie.  DIR B:) or the default drive  will  be 
  209.         listed.  After  the directory is listed,  the menu will not be 
  210.         printed whether XPR mode is on or off.  If XPR mode is on  and 
  211.         you wish to see the menu, hit return.
  212.  
  213. FOR THE PMMI MODEM
  214.  
  215.   DSC - To disconnect you must use the 'DSC' command in the Menu.
  216.  
  217.         The original secondary options for the PMMI Modem (as  defined 
  218.         by  Ward  Christensen) are "A" (answer mode),  "O"  (originate 
  219.         mode), and baudrate selection. See examples below.
  220.  
  221.         Once  answer  or originate and a baudrate have  been  selected 
  222.         (ie.  SO.450  NAME.TYP),  any subsequent options will use  the 
  223.         same mode and buadrate. If you want to change the baudrate, it 
  224.         may be done without changing the mode.  For instance,  if  you 
  225.         are  in  originate mode at 450 baud,  then the command  'R.600 
  226.         NAME.TYP'  will  allow you to receive a file at  600  baud  in 
  227.         ORIGINATE mode.  If you want to change the ans/orig mode, then 
  228.         you MUST select the baudrate again or it will default to 300.
  229.  
  230.  
  231.   CAL - Allows  dialing  of number.  If a connection to a computer  is 
  232.         established,  you  will  be able to  select  options  (usually 
  233.         TO.xxx).   If no connection is made after 15 seconds, [changed
  234.     to  25  seconds  in  distributed  version]     then  you  will 
  235.         be  informed and be given the option of redialing or returning 
  236.         to the menu.  The dial routine may also be specified when  the 
  237.         Modem  program is called by entering  A>MODEM C.  No secondary 
  238.         options will be accepted when the "C" option is used.   [Note:
  239.     you cannot type:  CAL 312-545-8086  --  well, you can, but the
  240.     number will be ignored and you will have to retype it when the
  241.     program asks for it   --   in  the  latest  version  (11/4/80)
  242.     there is a 'library' feature such as in DIAL.ASM.   To use the
  243.     CAL function, type CAL and a return at the menu.  You will see
  244.     a message   'WAITING FOR DIAL TONE'  then a lot of stuff about
  245.     entering the number.   At this point you may type in a number,
  246.     or  you  may  type  a  letter  which will designate one of the
  247.     library numbers (which you must insert at assembly time).
  248.  
  249.   ^B -  Control-B  while  in Terminal (or Echo) mode allows change  of 
  250.         baudrate "on-the-fly." A carriage return gives 300  baud;  all 
  251.         other rates (110-600) must be explicitely stated.
  252.  
  253.  
  254. LISTING OF COMMANDS AND OPTIONS
  255.  
  256.     Primary options
  257.  
  258.         S - send a CP/M file (must specify file/s)
  259.         R - receive  a CP/M file (must name file unless B sec opt used)
  260.         T - terminal mode (specify file if memory save wanted)
  261.         E - terminal mode with echo
  262.         M - return to menu
  263.         X - used only when program is called to initially
  264.             toggle menu off
  265.  
  266.     Secondary options
  267.  
  268.         B - multi-file mode for sending and receiving files
  269.         T - return to terminal mode after transfer (memory save off)
  270.         R - view what is received in file transfer
  271.         S - view what is being sent in file transfer
  272.         V - view what is being sent or received in file transfer
  273.         T - Terminal mode (used with remotely controlled computer)
  274.         O - originate mode (PMMI modem)
  275.         A - answer mode (PMMI modem)
  276.         .xxx - baud rate xxx (xxx = 110-600  PMMI modem)
  277.  
  278. EXAMPLES        (fn = filename,  ft = filetype)
  279.  
  280.         Send file, originate mode, 300 baud
  281.  
  282.                                    SO fn.ft
  283.  
  284.         Send another file, same mode and baudrate
  285.  
  286.                                    S fn.ft
  287.  
  288.         Receive  file on B drive,  600 baud,  ans mode,  view what  is 
  289.         being received, return to terminal mode 
  290.  
  291.                                RART.600 B:fn.ft
  292.  
  293.         Send all COM files, no messages on console, same baud and mode 
  294.         as last transfer
  295.  
  296.                                   SBQ *.COM
  297.  
  298.         Send two files from two different drives
  299.  
  300.                            SB A:fn1.ft1  B:fn2.ft2
  301.  
  302.         Receive files being sent by above on drive A (baudrate must be 
  303.         same and modes opposite)
  304.  
  305.                                     RB A:
  306.  
  307.         Terminal mode,  save communication in file,  300 baud (default 
  308.         rate),  originate mode (in terminal must type CTRL-Y to  start 
  309.         save, in menu must type "WRT" to close file)
  310.  
  311.                                    TO fn.ft
  312.  
  313.  
  314. ASSEMBLING THE PROGRAM
  315.  
  316.         You  must use Digital Researches' MAC to assemble the program. 
  317.         The  files required are MODEM.ASM and  MODEM.LIB.   MACROS.LIB 
  318.         does not actually contain any macros in the true sense, but it 
  319.         does  contain  routines  that are necessary for the program to
  320.     run (MFACCESS however does use nested macros as real macros).
  321.  
  322.         If you have a PMMI and an IMSAI,  you may assemble the file as 
  323.         is.  If  you do not have an IMSAI with a front  panel,  change 
  324.         IMSAIBYTE  to 'FALSE' (near the beginning of the program).  If 
  325.         you  wish another character instead of the colon  to  indicate 
  326.         when  memory  save  is active,  change "MVI A,':'  "  to  "MVI 
  327.         A,'char'  " in the "TERM" routine where 'char' is the printing 
  328.         character  you would like at the beginning of each  line  when 
  329.         memory save is active.
  330.  
  331.         If you do not have a PMMI,  change the byte to 'FALSE' and put 
  332.         your  modem status and data ports in the appropriate  equates. 
  333.         The  labels  'MODRCVR'  and 'MODSNDR' should be  the  same  as 
  334.         MODRCVB  and  MODSNDB  (the  bits tested) if  your  UART  uses 
  335.         positive  logic  (JZ)  and should be zero if  your  UART  uses 
  336.         negative  logic.  If you have a Z-80 (or maybe a  fast  8085), 
  337.         change  the  'FASTCLK' byte to 'TRUE'.  If any port  or  modem 
  338.         initialization must be done, put the initialization routine in 
  339.         the  area  labeled INITMOD (replacing the PMMI  initialization 
  340.         routine). See MODEM.SET for more details.
  341.  
  342.         If  you  have  a D.C.  Hayes Modem,  you may  incorporate  the 
  343.         routines from MODEM.ASM V2.0 (as of 8/6/79).
  344.  
  345.         You  should also note the comment in the INBUFF  routine  near 
  346.         the end of the program.
  347.  
  348.         Any problems or bugs, please call me:
  349.  
  350.                 Or latest revisor:
  351.         Mark M. Zeiger        James K. Mills
  352.         198-01B 67th Ave.    824 Jordan Place
  353.         Flushing, N.Y. 11365    Rockford, IL  61108
  354.         (212) 454-6985        (815) 398-0579
  355.  
  356.  
  357. UNSPOOL.ASM            81-11-12
  358. for CP/M 2.0 and up.
  359.  
  360. AUTHOR:            Gary P. Novosielski
  361.  
  362. INTRODUCTION:
  363.  
  364.     UNSPOOL (Ver 2.3) is a program to send a standard
  365. CP/M file such as a .PRN or .ASM file to the system's list
  366. or punch device, while still allowing other system operations
  367. to take place.  The file is transferred during periods when
  368. console is waiting for input.
  369.  
  370. SYNTAX:
  371.  
  372.     UNSPOOL [d:]filename.ext [dev]
  373.     [square brackets denote optional parameters]
  374.  
  375.     Where    d:        is an optional drive spec
  376.                 such as A: or B:.  If not
  377.                 entered, the current default
  378.                 drive is assumed.
  379.  
  380.         filename.ext    is the name of the CP.M file
  381.                 to be printed/punched
  382.  
  383.         dev        is the symbolic name of the
  384.                 output device to be used.
  385.                 Valid devices are LST and
  386.                 PUN.  Note that the colon (:)
  387.                 usually present in these names
  388.                 is NOT entered.  If not
  389.                 specified, the LST: device is
  390.                 assumed.
  391. Examples:
  392.     UNSPOOL TEST.PRN
  393.         will send the file TEST.PRN from the current
  394. default drive to the current LST: device.
  395.  
  396.     UNSPOOL A:TEST.PRN LST
  397.         is exactly equivalent to the above, assuming
  398. drive A is the default drive.  Note that the device name has no
  399. trailing colon.
  400.  
  401.     UNSPOOL B:ZINGER.HEX PUN
  402.         will send the file ZINGER.HEX from the B drive
  403. to the current PUN: device regardless of which drive is
  404. currently the default.  Note that the device is "PUN"
  405. not "PUN:".
  406.  
  407. OPERATION:
  408.  
  409.     Upon loading, the program checks to see that the
  410. the BIOS vector table pointed to by the word at location
  411. 0001H is valid, i.e. is a table of JMP instructions containing
  412. at least 16 entries.  If an error is detected, the program
  413. will display an error message on the console and attempt to
  414. warm-boot CP/M.
  415.     If found, the BIOS vector table is copied into the
  416. program segment which will remain active during unspooling
  417. so that subsequent application programs running concurrently
  418. with UNSPOOL will still have access to the BIOS.
  419.     The address of the old BIOS vector table, the BDOS
  420. entry address, and the CCP return address (from the top of the
  421. stack on entry) are saved in memory.
  422.     The "dev" parameter from the command line is checked.
  423. If not valid, an error message is typed and control returns
  424. to the CCP.
  425.     The file named in the command line is opened for
  426. input.  If not present, the filename is echoed to the console
  427. followed by a "?" and control returns to CCP.
  428.     If the drive is not explicit, the current default
  429. drive number is recorded internally in case the default drive
  430. is changed while UNSPOOL is active.
  431.     The current user number and IOBYTE values are checked
  432. and stored internally so that if the user number is changed,
  433. UNSPOOL will still be able to read the input file.  If the
  434. device is changed (using STAT LST:=TTY: for example) unspool
  435. will continue to use the physical device in effect at the
  436. time the program was initiated.  Any application programs
  437. will, however, use the new values of the user number and the
  438. new physical device assignments.
  439.     If no errors were detected, the active program segment
  440. which monitors all calls to BDOS is relocated into high memory
  441. just below the CCP.  This reduces the available user program
  442. area by 2.75 K:  3 pages for the UNSPOOL supervisor segment,
  443. and 8 pages for the CCP which is commonly overwritten by user
  444. program buffers.  The BOOT and BDOS jumps in low memory are
  445. modified to protect the CCP and UNSPOOL supervisor segment.
  446.     Control is then returned to the console.  Normal
  447. CP/M operation will then be possible. Characters will be
  448. sent from the input file to the output device whenever the
  449. console is idle.
  450.  
  451.     Whenever an application program or the CCP requests
  452. console input using BDOS functions 1 or 10, the supervisor
  453. segment intercepts these requests and checks to see if the
  454. console is idle.  If it is, characters are transferred from
  455. the input file to the output device until the console becomes
  456. ready, i.e. a key is actually pressed.  At that time the
  457. BDOS function is executed normally, and control returns to the
  458. application program.
  459.     If a jump to BOOT is attempted, this is also
  460. intercepted by the UNSPOOL supervisor segment.  The message
  461. "Unspooling in progress" is displayed on the console, and
  462. no actual boot takes place.  Control is returned to the
  463. protected copy of the CCP instead.  Before returning, a disk
  464. reset is performed and the default DMA address is reset to
  465. 0080H to simulate a true warm-boot as closely as possible.
  466.     When the input file is completely transferred, or
  467. a 1AH end-of-file character is detected, the supervisor
  468. becomes inactive, and passes on all BDOS requests immediately,
  469. without checking console status.  When the next warm-boot
  470. request is detected, the supervisor removes itself from memory
  471. by executing a true warm-boot, and informs the operator with
  472. the message "UNSPOOL completed.".
  473.  
  474. NOTES:
  475.  
  476.     While UNSPOOL makes every effort to restore the values
  477. of the DMA address, USER number, IOBYTE, and default disk drive
  478. before returning control to the program, a hardware reset may
  479. leave these values in an undetermined state if unspooling was
  480. actually taking place at the time.
  481.     The supervisor will not intercept a call to BDOS
  482. function 0.  This will cause a true warm boot to occurr,
  483. terminating unspool immediately.  Normally application programs
  484. should reboot by jumping to location 0000H, not by calling
  485. BDOS function 0.
  486.     When function 10, Read Console Buffer is used, UNSPOOL
  487. will transfer characters only until the first key is pressed.
  488. At that time, no characters will be transferred until the
  489. input line is completed by pressing a carriage return.
  490.     UNSPOOL requires that the List Status function in
  491. the BIOS was properly implemented at system installation time.
  492. UNSPOOL will not send characters to the LST: device unless it
  493. recieves a ready condition from the List Status routine.  If
  494. the PUN: device is used, no status check is provided for by
  495. CP/M, so a not-ready condition on the punch may cause the
  496. system to hang up if PUN was specified on the command line.
  497. See the CP/M Alteration Guide for a discussion of the BIOS
  498. List Status routine.
  499.     Although the console is polled frequently during the
  500. unspooling of the file, some of the diskette operations may
  501. take a second or two to complete, for example when a new extent
  502. is opened.  Since the console is not polled during this period,
  503. high speed typing may cause one or more characters to be lost.
  504. This effect will vary depending upon the program being run,
  505. the types of input reqests (character or line) it uses, and
  506. the relative locations on diskette of the spool file and any
  507. files in use by the program.  As a result, heads-down typing
  508. is not reccommended while UNSPOOL is running.  Some experience
  509. with UNSPOOL will teach the user when caution is required.
  510.  
  511. INSTALLATION:
  512.  
  513.     The source file is written for assembly with the
  514. MAC assembler.  The .HEX file produced is LOADed to a .COM
  515. file and executed just as any normal program.  Relocation is
  516. done at execution time as described above.
  517.     If the assembly option EXPAND is set to TRUE, tab
  518. characters in the input file will be expanded to spaces with
  519. assumed tab stops at every eighth print position.  This option
  520. should be set to FALSE if the printer driver or the printer
  521. itself can properly handle the tab character.  If the option
  522. PHYSBS is set to TRUE, a backspace character will cause the
  523. tab expansion algorithm to recognize backspace characters
  524. and decrement the column count when a backspace is encountered
  525. in the input file.  This option should be set to FALSE if
  526. backspace characters are ignored by the printer.  All other
  527. control codes except carriage return are assumed to be non-
  528. printing, and are ignored by the algorithm.
  529.     If tab expansion is included, the version number
  530. in the signon message will be followed by "/T".
  531.  
  532.             Gary Novosielski
  533.