home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / ZSYS / ZNODE-12 / I / LX22.LBR / LX.HZT / LX.HST
Text File  |  1991-02-28  |  9KB  |  175 lines

  1. ;  PROGRAM: LX
  2. ;  ORIGINAL AUTHOR: RICHARD CONN
  3. ;  VERSION: 1.0
  4. ;  DATE: 10 Aug 85
  5.  
  6. ; --------- LX revision history -------------
  7.  
  8.  
  9. ;2.2                Febrary 20, 1991                    
  10. ;    Fixed (I think/hope) the pesky cosmestic problem with the   
  11. ;    missing newline when LX is a genuine ECP (we let ARUNZ      
  12. ;    deliver the newline in forced-ECP mode).  Even error        
  13. ;    messages get the newline fix (thanks Howard!).  Saved a     
  14. ;    byte and a level of stack in the Type 3 header, a few       
  15. ;    other bytes elsewhere.
  16. ;                2/16/91        Bruce Morgen
  17.  
  18. ;2.1    Moved a couple of lines of code so that CPYFLG is initialized
  19. ;    properly in the type 4 version.  Fixed an error in LOADCOM that
  20. ;    could cause certain type 4 programs to be loaded one page too
  21. ;    high.  Cleaned up error handler invocation code.  Removed a few
  22. ;    redundant "and a" instructions, changed wording of a couple of
  23. ;    comments, changed a "jp" to a "jr", etc.
  24. ;                08/13/90        Howard Goldstein
  25.  
  26. ; 2.0    Release version. (Versions 2.0a - 2.0f were limited to Beta
  27. ;    test distribution). Added T4LDR11 source and binary files,
  28. ;    cleaned up source text.
  29. ;                08/10/90        Al Hawley
  30.  
  31. ; 2.0f- Moved OPTION into the configuration block. Also moved the data
  32. ;    statements defining default file extensions into the cfg. area.
  33. ;    Rearranged the code at ENTRY to remove conditional assembly no
  34. ;    longer needed with OPTION moved. Capitalize all code fields,
  35. ;    leaving comment fields undisturbed. NO functional changes to LX,
  36. ;    but a new associated .CFG file is required.
  37. ;                08/07/90        Al Hawley (aeh)
  38.  
  39. ; 2.0e- Added local stack.  Reasserted home dir before calling PFIND.
  40. ;    Cleared error code at beginning of program.  Fixed so that "/" option
  41. ;    works correctly if LX is not first command in MCL.  Removed some
  42. ;    unnecessary code from ADJMCL.  Added public symbol PRINT so that
  43. ;    SYSLIB routines referencing it actually get EPRINT which is used
  44. ;    throughout the rest of the program.  Fixed LOADCOM routine so as
  45. ;    not to attempt auto-install of type 2 programs.  Repaired FSIZE
  46. ;    routine which was coming up 128 bytes short on files with an odd
  47. ;    number of records.
  48. ;                08/05/90        Howard Goldstein
  49.  
  50. ; 2.0d- Reorganized data and code at the start of the program
  51. ;    consistent with definition of a configuration data block
  52. ;    area. Created a CFG file, so ZCNFG can be used to change
  53. ;    options and filespecs for the command file library names.
  54. ;                07/22/90        Al Hawley (aeh)
  55.  
  56. ; 2.0c- Revised code so load type must be decided at assembly time
  57. ;    so type 4 code can be linked by any linker that can produce
  58. ;    PRL.  Prior code could only be linked with ZML.  Note that
  59. ;    the new scheme forbids the use of CODEND in type 4's (which
  60. ;    should be done as $MEMRY is not treated properly).  The new
  61. ;    scheme also automatically alters the data size word used
  62. ;    by the type 4 loader so DSEG truncation won't cause CCP
  63. ;    overwrite.
  64. ;                11/05/89        Cameron W. Cotrill
  65.  
  66. ; 2.0b- Implemented Howard Goldstein's corrected ECP code in CHEKWS.
  67. ;                            Cameron W. Cotrill
  68.  
  69. ; 2.0a- Massive rewrite to allow LX to run as type 1,3,4 and extract
  70. ;       and load type 1,3,4 files.  A bunch of unneeded buffer space
  71. ;    was removed, ADJMCL was re-written to work "in place".  All
  72. ;    address checking code and dynamic load buffering is new and
  73. ;    improved.  Original "look and feel" retained.
  74. ;                            Cameron W. Cotrill
  75.  
  76. ; 1.9d- Buffer address for extracted file now set to TPA if LX is set
  77. ;    to load as a type 3 or 4 using RUNHI.  CPYCOD is not relocated
  78. ;    in this case.  Re-arranged some code and removed ix register
  79. ;    usage as it was a classic case of how NOT to use an index 
  80. ;    register.  Added prttyp call to help message.
  81. ;                            Cameron W. Cotrill
  82.  
  83. ; 1.9a- Modified to use SARGV and Z33GMTOP routines.  Other minor optimization
  84. ;            19 Aug 89.            Harold F. Bower
  85.  
  86. ; 1.9 - Corrected help screen, safety header added, restored Royce Shofner's
  87. ;    wheel byte idea in a simpler way.  An option byte at 102H controls
  88. ;    LX19's wheel byte response.  If it is patched to a zero (0FFH in
  89. ;    distributed COM/CIM files), LX19 will test the wheel byte and use
  90. ;    ROOT:USERCMD.LBR instead of ROOT:COMMAND.LBR if not wheel (wheel byte
  91. ;    is reset, zeroed).  Otherwise LX19 will work like LX18 did - very
  92. ;    nicely.  Both Default LBR names remain patchable to preference.
  93. ;            April 1, 1988            Bruce Morgen
  94.  
  95. ; 1.8 - Rewrote the ADJCML routine.  IT NOW ADJUSTS THE COMMAND LINE PROPERLY
  96. ;    WHEN A LIBRARY NAME WAS INCLUDED IN THE COMMAND.
  97. ;             Howard Goldstein, November 29, 1987
  98.  
  99. ; 1.7 - Added code to parse file names via resident CPR code if ZCPR33 is
  100. ;    present.  This makes LX completely Z33 compatible.  Removed Bruce
  101. ;    Morgen's in-line PUTER3 code since Z33LIB's version works properly now.
  102. ;            Howard Goldstein, November 21, 1987
  103.  
  104. ; 1.6 - Deleted vestigial buffer set-up code via DSEGed buffer definitions.
  105. ;    LX now does a better simulation of the 3.3 CPR by passing the
  106. ;    environment descriptor pointer in HL as well as poking ORG+9 in Z3
  107. ;    tools.  Added detection code for LX running under WordStar.  A new
  108. ;    alternate syntax has been introduced especially for chaining to LX
  109. ;    from ARUNZ's "default alias" feature:
  110. ;        :DEFAULT [dir or du:]LX / $0 $*
  111. ;    Under that condition, or whenever LX is called with the intervening
  112. ;    "/" parameter, LX will declare itself an ECP and, if there is an
  113. ;    error, adjust the command line to eliminate its own verb.  If running
  114. ;    under Z33, LX follows the CPR's DUFIRST flag.  All errors (except
  115. ;    under WordStar) now abort to the error handler with the ECP bit set
  116. ;    on return to the CPR.
  117. ;    While we were at it, replaced the internal COUT routine with a simple
  118. ;    JP to BOUT to accomodate BIOS's that (legitimately) do not bother to
  119. ;    preserve the HL register through CONOUT calls.  The BOUT approach
  120. ;    ALWAYS (famous last words) works, and is shorter to "bout" (grin).
  121. ;    The reason there is a hand-coded PUTER3 routine in LX is that Z33LIB's
  122. ;    fails to preserve the incoming A register against GETMSG's return. In
  123. ;    other words, it doesn't work.
  124. ;            Bruce Morgen @23:55:56 June 4, 1987
  125.  
  126. ; 1.5 - Adapted to coexist as an ECP with error handling under ZCPR 3.3 and
  127. ;    BGii 1.13 or later.  Also extended Michael's auto-install code to
  128. ;    properly initialize the copy routine for Z33 type 2 COMfiles (origin
  129. ;    other than 100H).  Bumped versions past 1.3 & 1.4, which seem to be of
  130. ;    interest mainly to Z-Node sysops (no offense, Royce, just a personal
  131. ;    opinion - b/m).
  132. ;     Note that there is a problem regarding SYSLIB's CODEND routine and
  133. ;    the use of DSEG as recommended for the upcoming Z80 versions of the
  134. ;    Conn *LIBs.  The old approach (the $MEMRY buffer in CSEG) has been
  135. ;    recommended to the LIBs revision team.  All modifiable LX data buffers
  136. ;    are now in DSEG, including the (now runtime-initialized) ARGV argument
  137. ;    table.  While I was at  it, I got rid of the unecessary self-modifying
  138. ;    code at COPY$CODE.  Remember, we won't be able to get away with such
  139. ;    kludges with the Z280, so we might as well start getting rid of our
  140. ;    bad habits now.
  141. ;     Note that LX now carries its own COUT routine to enable showing an
  142. ;    error or a help screen under the WordStar "R" command without crashing
  143. ;    anyone's system to a fare-thee-well.
  144. ;            Bruce Morgen @15:03:03 April 24, 1987
  145.  
  146. ; 1.2 - Auto-installs ZCPR3 utilities.  There is no need to run Z3INS on
  147. ;    utilities run by LX since, after loading and before executing, LX
  148. ;    looks for "Z3ENV" at the beginning.  If present, LX inserts the
  149. ;    address of the environment descriptor.  Both concept and code are
  150. ;    based on Jay Sage's experimental CCP.
  151. ;            3 September 1986 - Michael Bate
  152.  
  153. ; 1.1 - Extracted ARGV from syslib36 and included it here, modified so that
  154. ;    '=' is also an argument delimiter if it occurs after a non-space
  155. ;    (sknsp:).
  156. ;                27 Feb 86  jww
  157.  
  158. ; 1.0 - Release version
  159.  
  160. ; LX is like the old LRUN tools in that it looks at its arguments as a command
  161. ; line to be executed.  LX locks onto a library file, searches for the command
  162. ; verb COM file in it, extracts the COM file into memory at 100H, and sets up
  163. ; the various buffers to look like the COM file was executed by the ZCPR3
  164. ; command processor.
  165.  
  166. ; Unlike the other LRUN tools I've seen and heard of (with the possible
  167. ; exception of LRUNZ), LX truly acts as the ZCPR3 command processor, parsing
  168. ; the command line as ZCPR3 itself would.  Named directory references are
  169. ; allowed, the External FCB is loaded if available, etc.  Any ZCPR3 tool
  170. ; executed by LX sees the environment as it would if ZCPR3 itself executed the
  171. ; tool.
  172.  
  173. ; For security, no directory references are allowed (they are ignored) for any
  174. ; arguments if the wheel byte is not set.
  175.