home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol119 / lu210.doc < prev    next >
Encoding:
Text File  |  1984-04-29  |  27.9 KB  |  793 lines

  1.  
  2.  
  3.    Documentation for LU.COM and LRUN.COM
  4.  
  5.  
  6. |  This  document applies to version 2.10 of LU.COM and version
  7. |  2.0 of LRUN.COM.
  8.  
  9. |  Copyright (c) 1982, 1983 by Gary P. Novosielski
  10.    All rights reserved.
  11.  
  12.    Permission  is  hereby  granted  to copy and distribute this
  13.    document  for  any  non-commercial  purpose. Any use of this
  14.    material  for  commercial  advantage  without  prior written
  15.    consent of the author is prohibited.
  16.  
  17.  
  18.  
  19.                            INTRODUCTION
  20.  
  21.    Library  Utility  (LU)  is  a  program to allow combining of
  22.    multilple  files  into  one  larger  file.  It requires CP/M
  23.    version 2.0 or higher to run.
  24.  
  25. |  Version  2.10  replaces  version 1.11. The major revision is
  26. |  the  addition  of  the  -c,  -u  and  -x  operators, and the
  27. |  expansion  of  the  operand  syntax  to  include user number
  28. |  specification,  and  to allow multiple command inputs on one
  29. |  line.  Major revisions are marked with a vertical bar in the
  30. |  left margin.
  31.  
  32.         The  directory  information  in  an LU style library is
  33.    contained in the same file as the data, or member files. The
  34.    amount  of  space  to  be allocated to the directory must be
  35.    specified by the user when a new library is created, but can
  36.    be  changed  when  the file is reorganized. The size of each
  37.    directory entry is 32 bytes, which means each four directory
  38.    entries  take  up  one sector of the library file. Currently
  39.    only  16  bytes  of each entry are used, with 16 bytes being
  40.    reserved  for  use  with  possible  future enhancements. The
  41.    directory  itself uses one entry for control information, so
  42.    the  number  of  directory sectors needed for a library of m
  43.    members is (m + 1) / 4, rounded up to the next whole number.
  44.         The user need not be concerned with this discussion, as
  45.    directory  size  is calculated by the program. All directory
  46.    sizes  are  input and output in terms of entries, each entry
  47.    being a potential member file. The program adjusts directory
  48.    size to an integral number of sectors.
  49.  
  50.         LRUN.COM is a small program which allows running a .COM
  51.    (object code) file member directly from any library, without
  52.    having to extract it to a separate disk file.
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.    Page 1 of 12   83-01-30
  65.  
  66.  
  67.  
  68.  
  69.    Documentation for LU.COM and LRUN.COM
  70.  
  71.  
  72.                         WHY USE LIBRARIES?
  73.  
  74.         First,  a library file usually takes up less space than
  75.    the total of the individual member files which went into it.
  76.    The  reason  for  this  is that CP/M allocates disk space in
  77.    fixed  blocks  or groups, typically 2k bytes each. Any space
  78.    after  the  last  sector  of  a file up to the next 2k block
  79.    boundary is wasted. The same files in a library use only the
  80.    number of sectors they actually need, and though the library
  81.    itself  may  have  a  partially wasted block at the end, and
  82.    requires   some  space  for  directory  information  at  the
  83.    beginning,  the  net  effect  is  usually  a saving of total
  84.    space.  The  best results are seen when many small files are
  85.    combined into one library.
  86.         Second,  a library file makes most efficient use of the
  87.    CP/M disk directory, since it is treated as only one file by
  88.    CP/M regardless of how many members it contains.
  89.         Third,  libraries  can  aid in transferring packages of
  90.    software  from  one system to another using XMODEM. Only one
  91.    file  is transferred, eliminating the need to run the XMODEM
  92.    transfer  program several times, the chance of overlooking a
  93.    needed  file, and the problems of naming conflicts, (such as
  94.    READ.ME files) among unrelated packages.
  95.  
  96.  
  97.  
  98.                       WHY NOT USE LIBRARIES?
  99.  
  100.         There   are  some  very  good  reasons  for  not  using
  101.    libraries.
  102.         For one thing, files within a library are not available
  103.    to  most "normal" programs. If a frequently accessed file is
  104.    placed  in  a library, it will have to be extracted from the
  105.    library  to  its  free-standing counterpart before it can be
  106.    used  by  most programs. (.COM files are a notable exception
  107.    to  this,  because  of the availability of the LRUN command,
  108.    covered later.)
  109.         Libraries  can  actually  waste disk space. When a disk
  110.    file  is erased, CP/M returns the space formerly used by the
  111.    file  to  the  free  space pool for use by new files. When a
  112.    member  file  is  deleted  from a library however, the space
  113.    previously  occupied by the file is not useable. The library
  114.    must  be  reorganized  to make this space available to CP/M.
  115.    While  this  is  easy  to  do with the LU program, it is not
  116.    automatic,  and  if the situation is ignored, large areas of
  117.    disk can be tied up as unproductive "dead space".
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.    Page 2 of 12   83-01-30
  131.  
  132.  
  133.  
  134.  
  135.    Documentation for LU.COM and LRUN.COM
  136.  
  137.  
  138.                   HOW TO USE THE LIBRARY UTILITY
  139.  
  140.         LU  has two main methods of operation: interactive, and
  141.    parameter  driven.  In  parameter  driven  mode, the program
  142.    takes  its  command  inputs from the command line when it is
  143.    first  invoked, and when the entire line has been processed,
  144.    execution ends.
  145. |       In  interactive  mode,  the  program  takes its command
  146. |  inputs  from one or more input lines from the standard input
  147. |  device  (typically the console). When all the command inputs
  148. |  have  been  processed,  the program reads another line. This
  149. |  process can be repeated as long as necessary.
  150.         Input  from disk files, C program "pipes", and the XSUB
  151.    facility are also supported for more advanced applications.
  152.         Interactive  mode  is  probably  the best way to get to
  153.    know  the  program, because the effect of each action can be
  154.    immediatley seen.
  155.         To  start  an  interactive library maintenance session,
  156.    just  type  LU  on the command line with no parameters after
  157.    it.
  158. |       All the methods make use of similar syntax:
  159. |       Each  input  line, regardless of its source, is scanned
  160. |  left  to  right.  All alphabetic characters are converted to
  161. |  upper  case. If the line contains any blanks it is separated
  162. |  into multiple individual input strings.
  163.         These  input  strings  are  divided  into  two classes:
  164.    operators (sometimes called tags, or options) and operands.
  165.         An  operator  is  defined  as  any two character string
  166.    where  the  first  character is a minus sign. Operators tell
  167. |  the  program what to do. Valid operators are -a, -c, -d, -e,
  168. |  -l,  -o,  -r, and -u. Anything else with the same form is an
  169.    operator too, but an invalid one.
  170.         Operands are any other input string.
  171.         Normally,  operand strings are presumed to be the names
  172.    of  files  which  are  to  be  acted  upon  by  the previous
  173.    operator, for instance, added to or extracted from a library
  174.    file, and to have the following general form:
  175.  
  176. |       [u/][d:][filename][.[ext]]
  177.  
  178. |       where  u   is  an  optional  user  area prefix. It is a
  179. |  decimal  number  from  0  to  31,  and  if  present, must be
  180. |  followed  by  a slash (/) character. User areas greater than
  181. |  15  should  be used with care, as they cannot be accessed by
  182. |  any of the resident CCP (Console Command Processor) commands
  183. |  of CP/M, such as USER, TYPE or ERA.
  184.  
  185.                d   is  an  optional  drive  designator. It is a
  186.    single  character  in  the  range of A to P, and if present,
  187.    must be followed by a colon (:).
  188.  
  189.                filename  is  a  string  of  0  to 8 characters,
  190.    following the standard CP/M conventions for filenames
  191.  
  192.                ext   is   a   string  of  0  to  3  characters,
  193.    following  the standard CP/M naming conventions for filetype
  194.  
  195.  
  196.    Page 3 of 12   83-01-30
  197.  
  198.  
  199.  
  200.  
  201.    Documentation for LU.COM and LRUN.COM
  202.  
  203.  
  204.    extensions.
  205.  
  206.    The  period  (.)  after  filename  is  manditory  if  ext is
  207.    specified,  and  optional  otherwise.  The  names  "xyz" and
  208.    "xyz." are equivalent.
  209.  
  210.    Ambiguous  operands  are  those which contain the characters
  211.    "*"  or "?" in the filename or extension fields. Examples of
  212.    valid operands are:
  213.  
  214.     foo.bar
  215. |   3/b:test.fil
  216. |   3/test.fil
  217.     b:test.*
  218.     test.fil
  219.     test.
  220.     test
  221.     z
  222.     -z.
  223.     comm?nd
  224. |   0/
  225.     b:
  226. |   5/a:
  227.  
  228.    Note in the example "-z." the period, though not required by
  229.    the  syntax  of  a  filename,  is  essential  to prevent the
  230.    operand from being mistaken as the invalid operator "-z".
  231.         What  action  is  taken  upon  the operand depends upon
  232.    which operator most recently preceded it. If no operator was
  233.    entered, or an invalid one, or one that expects no operands,
  234.    the  operand  will draw an error message, but will otherwise
  235.    be ignored.
  236.         When   running   interactively,   LU  prompts  for  the
  237. |  operators  and operands. You can type as many inputs as will
  238. |  fit  on the line, separating them with spaces. The end of an
  239. |  input  line  has  no  special  significance. The most recent
  240. |  operator remains in effect, and the next line can begin with
  241. |  additional operands for it.
  242.  
  243.         The prompt displayed for each input line has this form:
  244.  
  245. |       -m u/d:>
  246.         where  m  is the current operator in effect
  247. |              u  is the current user number in effect
  248. |              d  is the current default drive
  249.  
  250. |       For  example  the  prompt  might  be  "-E  0/A:>". This
  251. |  indicates  that the -e operator is in still in effect; if an
  252. |  operand  is  entered it will be interpreted as the name of a
  253. |  member  file to be Extracted from the library. It also shows
  254. |  that  the current user number is 0, and the current drive is
  255. |  A:.  Any operands which are entered without an explicit user
  256. |  or drive will use these defaults.
  257. |       When  the  program  first  starts up, the prompt begins
  258. |  with  "-?",  which means no operator is currently in effect.
  259.    In  this  case,  the  only  valid  input is an operator. Any
  260.    operand will be rejected.
  261.  
  262.    Page 4 of 12   83-01-30
  263.  
  264.  
  265.  
  266.  
  267.    Documentation for LU.COM and LRUN.COM
  268.  
  269.  
  270.                        SUMMARY OF OPERATORS
  271.  
  272.         -a   add   files   to  library.  -a  causes  subsequent
  273.    operands  to be treated as the names of files to be added to
  274.    the  open  library.  (If  no  library is currently open, the
  275.    default   library   LIBRARY.LBR  is  always  used  instead.)
  276.    Ambiguous  operands  match  all  disk  files  which  qualify
  277.    according to normal CP/M wild-card conventions, except those
  278. |  with   a   filetype   of   .LBR.   Explicit  user  or  drive
  279. |  specification  on an operand causes that area to be searched
  280. |  for the file(s) instead of the defaults.
  281.  
  282.         -d   delete  files  from  library. -d causes subsequent
  283.    operands to be treated as the names of members to be deleted
  284.    from  the  open  library.  Ambiguous names match all members
  285. |  which qualify. User and drive specifications on operands are
  286.    ignored,   since   the  library  members  are  obviously  in
  287. |  whichever area contains the open library.
  288.  
  289. |       -c   close  current  library.  If  a  library  has been
  290. |  opened  with  the  -o  operator,  or  if the default library
  291. |  LIBRARY.LBR  has  been  opened  by  some  other operator, -c
  292. |  causes  it  to  be  closed.  Otherwise,  it  has  no effect.
  293. |  Normally this operator need never be entered, since any open
  294. |  library is automatically closed at the end of the session or
  295. |  when  another  one  is opened. It is provided for situations
  296. |  where  it  is  desired to change disk volumes without ending
  297. |  the  LU  program.  Before  removing  the disk containing the
  298. |  library  file,  it  must  be  closed.  After  mounting a new
  299. |  volume,  the  -U operator (see below) should be used. The -c
  300. |  operator expects no operands.
  301.  
  302.         -e   extract  files  from library. -e causes subsequent
  303.    operands  to be treated as the names of library member files
  304.    to   be   extracted  to  normal  free-standing  CP/M  files.
  305. |  Ambiguous  names  match all member files which qualify. User
  306. |  or  drive  specifications  on  member names cause the output
  307. |  file(s)  to  be placed in the specified area rather than the
  308.    default.  Any  existing  file  with  the  same  name will be
  309.    overwritten  unless  it is protected by having its Read/Only
  310.    attribute bit set.
  311.  
  312.         -l   list  current library map. -l causes the directory
  313.    of  the  current  library  to  be listed on the console. The
  314.    member  names  are  displayed,  along  with  their index, or
  315.    starting  position  within  the  library,  and their size in
  316.    sectors.  Also, information is displayed about the number of
  317.    sectors  in  the  library,  and  how  much space, is used or
  318.    unused  (wasted).  Information  is  also displayed about the
  319.    number of entries in the directory, and how many are active,
  320.    deleted,  or  free for use. This helps determine whether the
  321.    library  needs  to  be re-organized to free unused space and
  322.    deleted entries. The operator -l expects no operands, so the
  323.    next input should be another operator.
  324.  
  325.         -o   open a library. -o causes the following operand to
  326.  
  327.  
  328.    Page 5 of 12   83-01-30
  329.  
  330.  
  331.  
  332.  
  333.    Documentation for LU.COM and LRUN.COM
  334.  
  335.  
  336.    be  treated  as  the name of a library file to be opened for
  337.    use with subsequent operators. If a library is already open,
  338.    it is closed first. If the new library does not exist, it is
  339.    created  with  an  empty  directory. Ambiguous names are not
  340. |  allowed.  User  and drive specification is allowed. The file
  341.    type  may be specified, but if not entered, defaults to .LBR
  342.    which is strongly suggested as the file type for all library
  343.    files.
  344.         You  will recall that files of type .LBR are ignored by
  345.    the  wildcard  matching  of  the  -a  (add)  operator.  This
  346.    prevents  libraries  from  being accidentally added to other
  347.    libraries,  or  to themselves; a situation not unlike trying
  348.    to drive a truck up its own tailpipe. If for some reason you
  349.    want  to  add  one  library to another, be my guest, but you
  350.    will have to specify the name without * or ? characters when
  351.    adding it.
  352.  
  353.         -r   reorganize  library.  -r causes the currently open
  354.    library  to  be  reorganized. First, the directory is sorted
  355.    into  alphabetical  order,  and  then all active members are
  356.    copied  to  a  work  library  which is opened on the default
  357. |  user/drive,  which  may  or  may  not be the same as the old
  358.    library.  The  size  of  the  directory  may  be  changed by
  359.    specifying  a  greater or smaller number of entries than was
  360.    used  in  the old library. The directory will always be made
  361.    large  enough  to  contain all the active members of the old
  362.    library,  so  it  is safe to enter a size of "1" to make the
  363.    directory  as  small  as possible. (See Specifying Directory
  364.    Sizes below.)
  365.         When  reorganization  is  complete,  the old library is
  366. |  deleted  from  its  user/drive area, and the work library in
  367. |  the  default area is renamed to the name of the old library.
  368.    No  backup  copy  is retained. The newly reorganized library
  369.    remains open for use with subsequent operations.
  370.  
  371. |       -u   Use new default area. The -u can be used to change
  372. |  the  default  value  for user number or drive. It causes the
  373. |  user  prefix  and  drive spec of the following operand to be
  374. |  used  as  the new default area. If the following operand has
  375. |  no  user prefix, or no drive spec, the corresponding default
  376. |  is  not  changed.  (The  filename  and  ext  sections of the
  377. |  operand  must  be  absent.)  If  a  change is made, any open
  378. |  library  is first closed, and the disk system is reset. Thus
  379. |  feature allows newly mounted disk volumes to be accessed for
  380. |  writing;  CP/M  causes new volumes to be Read Only until the
  381. |  program  performs  a disk system reset. The -u operator also
  382. |  affects  which area will be used for the work library during
  383. |  reorganization. See the -r operator above.
  384. |       Note:  If directed I/O is active (See advanced features
  385. |  below)  the  -u  operator is treated as invalid. Due to some
  386. |  unfortunate  assumptions  in  the  C  run-time  package, the
  387. |  default  drive cannot be changed while these files are open,
  388. |  and  the  BDOS  gets  confused by the disk reset under these
  389. |  conditions.
  390.  
  391.  
  392.  
  393.  
  394.    Page 6 of 12   83-01-30
  395.  
  396.  
  397.  
  398.  
  399.    Documentation for LU.COM and LRUN.COM
  400.  
  401.  
  402. |       -x   eXit program. -x causes the input line in which it
  403. |  is  contained to be the last line scanned by the program. It
  404. |  does  not  cause  immediate  program termination, and if any
  405. |  more  operators  follow  it  on  the same line, they will be
  406. |  processed  normally.  The  program terminates only after the
  407. |  processing of the current line is complete. Any open library
  408. |  is  then  closed,  and the user number and default drive are
  409. |  reset to the values they had when the program was originally
  410. |  invoked.  To  preserve  compatability with earlier versions,
  411. |  the program will also be terminated by an empty input line.
  412.  
  413.                     SPECIFYING DIRECTORY SIZE
  414.  
  415.         Whenever  an  old library is opened, the directory size
  416.    is displayed as follows:
  417.  
  418.     Old library LIBRARY.LBR has 32 entries, 5 free.
  419.  
  420.         This  means that 5 more members may be added before the
  421.    directory  becomes  full.  When  the  directory  is full, -a
  422.    becomes  an  invalid  operator,  and  the  library  must  be
  423.    reorganized to add any more members.
  424.         When  a library is created for the first time, the user
  425.    is prompted like this:
  426.  
  427.     New library COMMAND.LBR. Allow how many entries?_
  428.  
  429.         Any number from 1 to 65535 is valid. The actual maximum
  430.    is  determined by the amount of free memory available on the
  431.    system in use. Directory size will be rounded up to the next
  432.    whole  sector  necessary  to  contain  the number of entries
  433.    requested.  This  number  will  remain  in  effect until the
  434.    library is reorganized. Since the directory itself counts as
  435.    an  entry,  one  entry  is added to your response before the
  436.    size  is calculated. Therefore just enter the maximum number
  437.    of  member  files  you  want  the  library  to be capable of
  438.    holding.
  439.         The  maximum number of member files is also constrained
  440.    by  the  amount  of  available disk space. If the disk space
  441.    runs  out  during  an  add,  the  name  is  not added to the
  442.    directory.  If  a  multiple  add  is  in progress, due to an
  443.    ambiguous  operand, the remaining qualifying files are still
  444.    added  if possible. If any of them is small enough to fit in
  445.    the  remaining  disk space, it will be added. If any sectors
  446.    were  written  by  a  failed  add  attempt,  and  then never
  447.    utilized,  they  remain  as  unused sectors, and the library
  448.    should be reorganized.
  449.  
  450.  
  451.  
  452.                      PARAMETER DRIVEN METHOD
  453.  
  454.         All of the information needed for a maintenance run may
  455.    be specified on the command line. The operators and operands
  456.    are  entered, separated by spaces, after the LU command, and
  457.    the operations will take place without console intervention,
  458.  
  459.  
  460.    Page 7 of 12   83-01-30
  461.  
  462.  
  463.  
  464.  
  465.    Documentation for LU.COM and LRUN.COM
  466.  
  467.  
  468.    except  in  the  case  where  the  directory  size for a new
  469.    library is requested. The syntax is:
  470.  
  471.     LU <opr> [<opd> [<opd> ...]] [<opr> [<opd> ...]...
  472.  
  473.     where square brackets indicate optional parameters, and:
  474.         <opr> is any operator.
  475.         <opd> is any operand.
  476.         ...   indicates  that the preceding parameter may occur
  477.    multiple times.
  478.         Any  names  occurring  prior  to the first operator, or
  479.    following  an  operator  which does not expect operands, are
  480.    ignored.
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.  
  516.  
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.  
  526.    Page 8 of 12   83-01-30
  527.  
  528.  
  529.  
  530.  
  531.    Documentation for LU.COM and LRUN.COM
  532.  
  533.  
  534.                         ADVANCED FEATURES
  535.  
  536.         Input  from  BDS C "pipes" or ordinary sequential files
  537.    is  also  possible. The filename is specified on the command
  538.    line  preceded  by a "<" character and no intervening blank.
  539.    Example:
  540.  
  541.     LU <CONSOL.DUP
  542.         reads the contents of the file CONSOL.DUP and uses each
  543.    line  of  the  file  as  if  it had been typed at the normal
  544.    console   by  the  interactive  method.  In  this  case,  no
  545.    operators  or  operands  may  be present. Console output may
  546.    also  be  redirected  by  specifying  an  output file on the
  547.    command  line  after  the  character  ">".  This  applies to
  548.    parameter  driven as well as interactive (including "piped")
  549.    input. Examples:
  550.  
  551. |   LU -O 3/SPECIAL -A B:ZOT.COM >20/C:LOGFILE.OUT
  552. |       would  add  the file zot.com from drive b, current user
  553. |  area,  to  the  library  special.lbr,  in user area 3 on the
  554. |  default  drive.  Console  output  would be written to a file
  555. |  called logfile.out in user area 20 on drive c. The placement
  556.    of  the  output  name on the line does not matter and except
  557.    for  turning  on  redirected  output,  it  is ignored by all
  558.    operators.
  559.  
  560.     LU <BATCH.IN >B:RECORD.DOC
  561.         would  take interactive commands from the file batch.in
  562.    and  write  console  output  to  a file called record.doc on
  563.    drive B.
  564.  
  565.         Normally,  console  file  output  is also echoed on the
  566.    real  console,  except  when input is also redirected, as in
  567.    the  last example. To force visible console output when both
  568.    an  input  and  output  file  are  used,  the  ">" character
  569.    preceding  the output file name may be changed to a "+" like
  570.    this:
  571.  
  572.    LU +RECORD.DOC <BATCH.IN
  573.         This  would  have  the  same  effect  as  the  previous
  574.    example, except that message output would also be visible on
  575.    the console.
  576.  
  577.  
  578.  
  579.  
  580.                              CAUTIONS
  581.  
  582.        The  importance  of  keeping  backup  copies of all disk
  583.    files,  and  especially libraries, cannot be overemphasized.
  584.    By  using  library files, the user is exposed to the dreaded
  585.    all-the-eggs-in-one-basket  syndrome.  That is, if something
  586.    happens  to the library file, particularly the directory, it
  587.    may  be  beyond  the  capabilities  of even a CP/M wizard to
  588.    restore the member files. The situation is made particularly
  589.    sticky by the fact that the the directory must be updated in
  590.  
  591.  
  592.    Page 9 of 12   83-01-30
  593.  
  594.  
  595.  
  596.  
  597.    Documentation for LU.COM and LRUN.COM
  598.  
  599.  
  600.    place as members are added or deleted.
  601.         Precautions  have been taken to minimize this risk. For
  602.    one  thing,  the  directory  is  read  into  memory when the
  603.    library  is  first  opened,  and  is only written back if it
  604.    differs  from  the copy on the disk. Operations which change
  605.    the  directory  are:  adds,  deletes, and the sort operation
  606.    which  is  done  before reorganization. If only extracts (or
  607.    LRUN executions) are done, the directory is never rewritten,
  608.    and the .LBR file may be write protected if desired.
  609.         As  another  precaution, the entire empty directory, is
  610.    allocated  and  written  to disk when a new library is first
  611.    created. This insures that there will always be enough space
  612.    on disk for the number of directory entries requested at the
  613.    time  of  creation.  The disk space may run out while adding
  614.    member  files,  but there will always be enough room on disk
  615.    to update the directory once it is successfully created.
  616.         The  fact that only the memory copy of the directory is
  617.    modified  until the file is closed may come in very handy if
  618.    you  mistakenly  delete a member file and recognize it right
  619.    away.  For  example,  suppose you make the mistake of typing
  620.    "-d *.*".
  621.         Briefly,  your heart sinks, as the "Deleting:" messages
  622.    are  displayed  and  all the member names zip into oblivion.
  623.    Don't  panic. Only the memory copy of the directory has been
  624.    modified.  When  the  -D> prompt returns, do not hit RETURN.
  625.    Instead,  abort the program with Control-C. This will cancel
  626.    the program without updating the directory, and the original
  627.    members will still be present.
  628.         Here  is  another  caution.  Since the entire directory
  629.    must  fit in memory for a library to be successfully opened,
  630.    it  is  possible  that  a  huge  directory created on a your
  631.    system will be too large to fit in memory if read on another
  632.    system will less memory. This should not be a problem with a
  633.    library of under a hundred entries.
  634.         To  give  you an idea of how much elbowroom you have to
  635.    work with, LU displays the highest memory location used each
  636.    time  it terminates. This will vary depending on the largest
  637. |  directory used during operation, and will be slightly higher
  638. |  if  interactive  operation  was used, since a console buffer
  639. |  must be allocated.
  640.      It  does not include the stack, which grows down from high
  641.    memory,  and  is allowed about a thousand bytes of space for
  642.    subroutine linkages and temporary work areas.
  643.  
  644.  
  645.  
  646.  
  647.  
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.    Page 10 of 12   83-01-30
  659.  
  660.  
  661.  
  662.  
  663.    Documentation for LU.COM and LRUN.COM
  664.  
  665.  
  666.                          THE LRUN COMMAND
  667.  
  668.         The  LRUN  command was created for those of us who have
  669.    lots  of command files we like to keep on line all the time.
  670.    What usually happens is that some nice little .COM files are
  671.    very  small  programs, but having a lot of them on disk eats
  672.    up  file  space  at  an  alarming rate due to the fixed CP/M
  673.    block  size.  Put them all into a library called COMMAND.LBR
  674.    using  LU.  You can then run any .COM file directly from the
  675.    library by saying:
  676.     LRUN <followed by normal command line just like always>
  677.        The full syntax of LRUN is:
  678.  
  679.     LRUN [-<lbrfile>] <commember> [<parameters>]
  680.  
  681.    Where:
  682.  
  683.         <lbrfile>  is  the  library  to be searched. The square
  684.    brackets  around  -<lbrfile>  indicate it is optional. The -
  685.    character tells LRUN that what follows is a library name. It
  686.    is not an actual part of the name. Don't leave a space after
  687.    the  -. If the first parameter doesn't begin with - then the
  688.    default  library  COMMAND.LBR  is  used.  If a drive spec is
  689.    given,  such as B:, then only that drive is searched for the
  690. |  library.  If  no  drive  spec  is given, the current area is
  691. |  searched first, and if no library of that name is found, the
  692. |  default  area is searched before giving up. The default area
  693. |  is set to 0/A: in the distribution object code, but this can
  694. |  be  easily  changed  to  something more appropriate for your
  695. |  system  by  changing  two  equates in the source program and
  696. |  reassembling.  LRUN does not otherwise support user numbers,
  697. |  and will not recognize the "u/" syntax on its parameters.
  698.         If a name, but no type is entered, .LBR is assumed.
  699.  
  700.         <commember>  is  the  name of the command to be run. No
  701.    drive  spec is used here. The type defaults to .COM and need
  702.    not be entered.
  703.  
  704.         <parameters>  is  a the normal (possibly empty) list of
  705.    parameters  which  the  .COM  file  expects  to  find on the
  706.    command  line  when  it  is  run. This list is parsed to the
  707.    required  file  control  blocks and command line area before
  708.    execution  begins,  so  the  program  will not be aware that
  709.    anything  cute  is  going  on.  (Thanks  to  Ron  Fowler for
  710.    supplying the code which makes this possible.)
  711.  
  712.  
  713.  
  714.                           LRUN EXAMPLES
  715.  
  716.     LRUN ED FOO.BAR
  717.         the  file  ED.COM is searched for in COMMAND.LBR on the
  718. |  current  drive,  or default area. If found, ED.COM is loaded
  719.    from  the  library,  and  FOO.BAR  is  passed  to  it  as  a
  720.    parameter.
  721.  
  722.  
  723.  
  724.    Page 11 of 12   83-01-30
  725.  
  726.  
  727.  
  728.  
  729.    Documentation for LU.COM and LRUN.COM
  730.  
  731.  
  732.     LRUN -C:SPECIAL LU -O COMMAND -A A:*.COM
  733.         the file LU.COM is searched for in SPECIAL.LBR on the C
  734.    drive.  If  found,  LU.COM  is  loaded,  and the strings -O,
  735.    COMMAND, -A, and *.COM are passed to it as parameters.
  736.  
  737.     LRUN - -ZIP
  738.         the file -ZIP.COM is searched for in COMMAND.LBR on the
  739. |  current drive, or default area. If found, -ZIP.COM is loaded
  740.    and  executed  with  a  blank parameter list. Since -ZIP.COM
  741.    begins  with a -, the extra - followed by a space was needed
  742.    to act as a place-holder for the library name. Compare with:
  743.  
  744.     LRUN -ZIP
  745.         the  library  -ZIP.LBR  is looked for, but nothing else
  746.    happens, because no command was specified.
  747.  
  748.     LRUN
  749.         with  no  parameters  at  all,  causes a screen of help
  750.    information to be displayed as a memory refresher.
  751.  
  752.  
  753.  
  754.         Please   report   any   problems   or  suggestions  for
  755.    enhancement  to  me  via  CompuServe  CP-MIG  or EMAIL, user
  756.    number  70160,120;  or  by  phone  at (201) 935-4087, voice,
  757.    evenings (eastern time) or weekends.
  758.  
  759.                        Gary P. Novosielski
  760.  
  761.  
  762.  
  763.  
  764.  
  765.  
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.    Page 12 of 12   83-01-30
  791.  
  792.  
  793.