;
                                  PRINT.COM                                   

             Size (recs) CRC   Version    Author/Latest Issue      Disk
               6k (48)   1F8D  2.3        Bruce Morgen 3/91        Z3COM7

  1- Syntax  2- Options  3- Notes  4- Examples of Use                         


   The PRINT command, like the LIST command,  prints a file on the LST: device
but offers many more options.  It can print a heading,  page the file,  number
the pages,  number the lines,  place a date/time stamp on the output,  put the
file name on the output, and perform yet other functions.  

   PRINT is configurable without reassembly using  ZCNFG and includes the Date
and Time in the page header if you are using  ZSDOS,  ZDDOS,  Z3PLUS, or Date-
Stamper and have a real time clock installed and and active.  PRINT uses file-
stamps whenever they are available, otherwise it uses the current system time.
:1
    Syntax   PRINT dir:afn1, dir:afn2,... o...

   While PRINT is running, the following commands work:

      ^C   <-- abort and return to operating system
      ^X   <-- skip to top of next page and skip to next file


   The characteristics of the  printer are  defined  by the  ZCPR3 environment
descriptor.   Such  characteristics include  the number of physical lines on a
page, the number of lines of text on  a page,  the  number of  characters  per
line, and whether the printer can form feed or not.   The environment descrip-
tor contains options for four  printers,  and the CPSEL utility can be used to
select the desired set of attributes.
:2
    Options 
           
    E                    <-- exact print (expand tabs, form feed, no line or
                               page numbers, no heading)
    F                    <-- toggle default of file name display on page hdr
                               (default is ON, so F turns off name display)
    H<delim>text<delim>  <-- define heading text to appear at top of each page
    I                    <-- inspect files before printing begins
    L                    <-- enable numbering of each line
    M                    <-- disable multiple run flag (if multiple run is ON,
                               then no 'Set Top of Form' msg appears for each
                               file and PRINT moves from one file to another
                               unattended; default is with multiple run ON)
    N                    <-- disable numbering of each page
    On                   <-- offset each line.  move each line in indicated
                               number of chars from the left of the page
    Sn                   <-- start printing on page n
    T                    <-- toggle date/time stamp in the header of each page
                               (a TIME subroutine must be assembled into
                               PRINT to enable the date/time stamp feature) 
:3
 PRINT Notes - 1/3 

   a. Version 2.3 updates (3/8/91, Bruce Morgen):
      - Implemented A.E.'s  "E" proposal in  a  somewhat  different  way:  the
        file's modify date is used in the header if it is available, otherwise
        the system date is used.  To facilitate coding this, PRTLIB was modif-
        ied to display  hh:mm instead of  hh:mm:ss (DS-style file stamps don't
        bother with seconds).  
      - Now  requires  DSLIB 4.3a  or  later in  addition  to  PRTLIB,  Z3LIB,
        SYSLIB1, and SYSLIB0.  
      - Quite a bit of code  crunching  (encouraged by  A.E.'s improvements to
        the source organization and program flow) was done to keep the program
        at 6K.  
      - Fixed a bug that truncated filenames in the printed header.
      - Eliminated alternate accumulator (AF') usage in  PRTLIB for the occas-
        ional BIOS that expects it to be available unchanged.   No  changes to
        the CFG required -- there are enough options as it is!
 PRINT Notes -2/3 

   b. Version 2.2 updates (12/27/88, Al Hawley):
      - This is a prerelease version of PRINT22.  Further enhancements (see E)
        are anticipated, and the PRTLIB may be replaced with the new DSLIB (by
        Hal Bower) when it is released, since many of the functions are almost
        identical to those in PRTLIB.   The code in  PRTLIB  benefits  greatly
        from code fragments and advice from  Cam Cotrill  (ZSDOS),  Hal  Bower
        (ZSDOS, DSLIB), Bridger Mitchell and Howard Goldstein (JULIAN.LBR).
      - A) Converted source code to Z80  mnemonics,  starting  with  R. Conn's
        Version 2.0 since the plan was to implement Date/Time as a Rel Library
        routine (as Conn implied) instead of an overlay.
      - B) Reorganized source code to make the program flow clearer.
      - C) Removed run-time variables from the  front of the  program, leaving
        only parameters that comprise  configuration data.  This initial block
        of data is now configurable at  run  time with  ZCNFG or  other patch/
        debug utilities.  Included  a  separate file, PRINT.CFG and its source
        code for configuration of PRINT with ZCNFG.
 PRINT Notes - 3/3 

      - D) Removed conditional  assembly  around  TIME-related code,  added  a
        separate module to  be included  at  link  time:  PRTLIB.REL  (and its
        source code).   This  module includes the TIME  routine that   R. Conn
        specified,  along with code  modules to  establish the identity of the
        Operating System DOS,  and to  read the system clock if it is present.
        An  initialization  routine in  PRTLIB,  GT_OSD  (GeT Operating System
        Data) returns a pointer to a data structure whose elements may be hot-
        patched to  provide  an interface to  a  user-defined  Real-Time-Clock
        (i.e. interfaces other than DateStamper, CP/M 3.0, ZSDOS, and ZDDOS).
      - E) UNFINISHED-  Use of file datestamps is not implemented.  File date-
        stamps,  if available,  could be included at the  expense  of an added
        header line in the printed output.   It would also be  possible to set
        a configuration  option to  include  Create,  Modify, and  Access file
        datestamps as desired.

   c. Version 2.1 updates (3/22/85, Joe Griffith):
      - Modifies the orignal 2.0  code to  accept the  TM-XXXnn.ASM  real-time
        clock overlays.  Once loaded and installed, the T option is functional
        and when invoked will print the current date/time stamp on each page.
:4
 Examples of Use 

   a. PRINT with  the  L  option  is the  quickest  and most convenient way to
      print out long aliases.  PRINT word-(line) wraps  based  on the environ-
      ment descriptor,  which  stores four printer line widths.  CPSEL selects
      the active one.  When  a line  goes beyond  the  printer's capability, a
      new line is started automatically.  Double left-pointing arrows (<<) are
      placed at  the  end of  a line to indicate a wrap has occurred.  Correct
      pagination occurs automatically, no matter  how many  wraps occur.  Best
      of all,  the L  option numbers each line, so each alias multiple-command
      line is numbered.  A  line without  a number  is easily distinguished as
      an extension of the previous line.

   b. PRINT text:*.txt,*.txt o10n

      - print  all *.txt files  in  the  TEXT: directory  and in  the  current
        directory; offset all lines by 10 columns, and don't number pages

   c. PRINT myfile.txt s25    

      - print MYFILE.TXT starting at page 25