;
                                   LUSH.COM                                   

             Size (recs) CRC   Version    Author/Latest Issue      Disk
LUSH.COM       4k (26)   1150  1.2        Bruce Morgen 7/91        Z3COM11
LUSH.4OM       4k (31)   75F8  1.2        Bruce Morgen 7/91        Z3COM11

  1- Syntax  2- Commands  3- Ext Programs  4- Renaming  5- BYE  6- Notes      


   LUSH  is  a  minimal ZCPR  shell which  takes advantage of the extended CCP 
services of ZCPR 3.3+.  This allows both reduced program  size (making  for  a
faster shell) and  enhanced security.  Since ZCPR itself, and not LUSH, parses
DU  and  directory specifications  used  by  the  program, LUSH  automatically 
adjusts  to whatever security levels  are present  in the current ZCPR system.
This  means  that  the same program can  be used  by  both secure  and private
systems without installation.

   Vs 1.0 (12/1/87) by Carson Wilson.
:1
    Syntax   LUSH [dir: or du:]ufn[.LBR]


   LUSH requires a shell stack with entries of at least 32 bytes  each  (stan-
dard size), and an external FCB.  If any of these conditions are not met, LUSH
aborts with the appropriate error message. 
:2
 Internal Commands 


>HELP or ?                 <-- display help screen
   
>DIR [afn]                 <-- display this library's directory

>LUSH [du:|dir:]ufn[.LBR]  <-- attach to another library file
 External Commands 

   External commands begin with a leading space and instruct LUSH to send the
command verbatim to ZCPR. 


> command [parameters]     <-- command [parameters]


   When ZCPR has completed processing the command, ZCPR reloads LUSH using the
program  name, ZCPR  directory, and  library name LUSH  was originally invoked
with.
 Parsed Commands 

   Parsed commands  begin without  a  leading  space.  LUSH parses  the drive,
user,  and name  of the current directory file  as the first parameter  of any
ZCPR command line.  This allows LUSH to  work as a 'front end' for the various
library  utilities  which  accept  the  first  command  line  parameter  as  a 
designation  of  the library file  on  which  to operate.  Thus, if  LUSH were
attached to LUSH10.LBR at directory B0:,

>command [parameters]     <-- command B0:LUSH10.LBR [parameters]

   Again, when  ZCPR  has completed processing  the command, ZCPR reloads LUSH
using the  program name, ZCPR directory,  and library name LUSH was originally
invoked with.
 Hybrid Commands 

   If the  KMD  or XMODEM commands  are  given  without  a leading space, LUSH
parses them as follows:

>KMD|XMODEM S[K] ufn       <-- send a member of this library

   If LUSH were attached  to LUSH10.LBR  at directory B0:, and the command was 
'KMD SK THIS.FIL", LUSH would send the command 'KMD LK B0:LUSH10.LBR THIS.FIL'
to ZCPR.

   KMD  and XMODEM  are  external  commands  in  the  sense  that  no  command 
processing is done by LUSH - it merely sends a command line to ZCPR.  But they
are  internal commands  in  the sense that they  are dedicated commands.  Only
the commands 'KMD'  and 'XMODEM' will  be  parsed with L or LK  as  the  first
parameter, and  only 'KMD' or 'XMODEM' will  be  sent  as  the command name to 
ZCPR.  Therefore, for  use  with RCP/M systems, a  program with the exact name
XMODEM or KMD must be available for sending files.
:3
 External programs - 1/2 

   Like ZLUX, ZLBR, and LUSH Version 1.0, LUSH Version 1.2 depends on external
utility programs for most of its  functionality.   The only internal  commands
are LUSH  (the LUSH reattachment command,  which takes on the actual EFCB name
given to LUSH.COM),  HELP (also runnable via "?"),  and,  if  implemented  via
conditional assembly, DIR.   For a fully functional LUSH,  the following prog-
rams must be available on-path  (because of the extremely  flexible  way  LUSH
passes command lines to external programs,  almost any LBR tool  (CL, LREPAIR,
LLF, NULU, etc.) can be part of the LUSH  command  set  --  the following list
refers only to programs needed for commands listed on the LUSH help screen):
 External Programs - 2/2 

Program Name                  What it actually is
------------                  -------------------
LDIR.COM*                     Usually LDIRB Version 1.2 or later

TYPE.COM                      Usually ZLT Version 1.1 or later

UNARC.COM                     Usually UNARCZ Version 1.3 or later

ZD.COM                        Usually ZDIR Version 1.2 or later

ZTYPE.COM                     Usually ZTYPE Version 1.1 or later

LHVW.COM                      LHVW Version 1.1, with provided
                              patch (LHVWZ3PT.HEX) installed

KMD.COM**                     KMD or ZMD, any version(?)


Notes:   *   not required if LUSH is assembled with internal DIR command
        **   normally required for RAS-RCP/M applications only
:4
 Renaming LUSH12 

   LUSH12 may be renamed to preference as long  as the  chosen  name  does not
exceed four characters  (excluding  the ".COM,"  of course).   The chosen name
will then become the LUSH  reattachment  command and will appear on the HELP/?
command screen; e.g. LUSH, LUX, LBR, ZLUX, and ZLBR are OK, LIBRARY, LBRSHELL,
and LSHELL are not.   If this limitation  proves bothersome, it can be removed
rather easily, but I will do so  "officially"  only  if  there  is  widespread
kvetching.
:5
 LUSH12 and BYE 

   SYSOPS:   Please note that there is  apparently a  problem  when  a  Type 4
linkage of LUSH12 is used under BYE --  external programs that warm boot (like
ZTYPE and LHVW) tend to lock up the system when they  attempt to  exit back to
LUSH.  Use a Type 3 linkage to avoid  BYE-related  problems  until  some alert
soul discovers the gremlin!
:6
 LUSH Notes - 1/2 

   a. LUSH does not test for a shell stack, etc., as these are a required part
      of all Z33 systems.

   b. LUSH flushes pending commands from the  MCL,  and will not run under ZEX
      or SUBMIT.   Since I cannot think of an instance where this will cause a
      problem, ZEX/SUBMIT/MCL testing as outlined in  Z33PNOTE.002 by Jay Sage
      has been omitted.

   c. The structure and  much  of  the  code  of  LUSH  are derived from Terry
      Carroll's  ZLBR.COM,  which in  turn  is  derived  from  John  Poplett's
      ZLUX.COM.

   d. Vs 1.2 updates (6/18/91, Bruce Morgen):
      - Added LZH support via patched LHVW v1.1.  Patch is LHVWZ3PT.Z80.
 LUSH Notes - 2/2 

   e. Vs 1.1 updates (5/14/91, Bruce Morgen):
      - Major code crunching and the new  LIBs  result in  a new  LUSH that is
        smaller than the original, but with far greater functionality.
      - Removed dependency on  the  ZCPR 3.3+ CCP  parser  (conditional on the
        "z33only" equate).   LUSH will now run under BGii, NZCOM, Z3PLUS, Z34,
        and (as a Type 3) Z33.  
      - As a Type 4, LUSH allocates LBR directory buffer space dynamically, so
        no more crash worries!
      - Added "ZMD" as the new "KMD" synonym, replacing obsolete "XMODEM."
      - LUSH can now be renamed  LUX  (or any  other  name  up to 4 letters in
        length) and its command table and  HELP/?  command  text  will reflect
        the selected name.  
      - Now handles ARC/ARK (via UNARC.COM) and ZIP (via ZD.COM, ZTYPE.COM).
      - The  "intdir"  conditional  allows  use  of  LDIR.COM in  lieu  of the
        internal LUSH directory routine, a size-for-speed tradeoff.
      - LUSH does not have a Type 3 safety header,  and it is recommended that
        Type 3 versions be  ORGed at  100H,  if only to reduce the (very slim)
        chance of TPA overflow with the internal DIR command.
