Revisions Copyright (c) 1984 by C.B. Falconer. Released under the identical conditions to those of Gary Novosielski, below. -------------------------NOTICE------------------------------ (c) Copyright 1982 Gary P. Novosielski All rights reserved. The following features courtesy of Ron Fowler: 1) command line reparsing and repacking (this allows the former load-only program to become a load & run utility). 2) code necessary to actually execute the loaded file 3) the HELP facility (LRUN with no arguments) 4) modified error routines to avoid warm-boot delay (return to CCP directly instead) Permission to distribute this program in source or object form without prior written aproval is granted only under the following conditions. 1. No charge is imposed for the program. 2. Charges for incidental costs including but not limited to media, postage, tele- communications, and data storage do not exceed those costs actually incurred. 3. This Notice and any copright notices in the object code remain intact (signed) Gary P. Novosielski ------------------------------------------------------------- A revision of Gary Novosielski's LRUN program to co-operate with CCPLUS. When reached (automatically) from CCPLUS the file has been searched on both the default and system disks. No alternate user value has yet been used. Use with CCPLUS results in the following syntax at the CCP level when this program is named "CCPXTEND.SYS". (This program can be used as LRUN.COM with the original CCP, or with ZCPR, however the constant syntax for command execution will not be available, nor will the ability to pass lower case command lines.) SEE CPM22FIX.Z80 for significant enhancement when using various user areas. B>name [command tail] executes name as a .COM on the default or alternate drives, or as a component of COMMAND.LBR on either drive. Alt. user is also searched. B>-d: name [command tail] Executes name as a component of d:COMMAND.LBR only. B>-lbrname name [command tail] Executes name as a component of lbrname.LBR on either drive/user B>-d:lbrname name [command tail] Executes name as a component of d:lbrname.LBR only B>-d:lbrname.ext name [command tail] Executes name as a component of d:lbrname.ext only. Overall, the search path for a command without disk spec. is: 1. default drive, current user (normal CPM stops here) 2. system drive, current user (CCPLUS alone stops here) 3. default drive, user 0 4. system drive, user 0 5. default drive, current user, in COMMAND.LBR 6. system drive, current user, in COMMAND.LBR 7. default drive, user 0, in COMMAND.LBR 8. system drive, user 0, in COMMAND.LBR Since this program receives the complete command line from CCPLUS it can also implement the DU style disk/user specifications. NOTE that if a file -nnn.COM exists it can be executed by CCPLUS before this system is reached. CAVEAT: the normal SYSGEN program expects to be loaded without disturbing memory from 0900h up through about 237fh (varies with system). Even the 0900h may be invalid for some systems (this is where the bootstrap image goes). To use SYSGEN from COMMAND.LBR without taking special precautions (for altering systems, e.g. installing CCPLUS) this program must not disturb this area. This version (LRUN 2.0.4 or CCPXTEND 1.4) does not disturb 0880h up, except for the 128 bytes below the CCP. Can be assembled with SLR's Z80ASM (M80 ?) - cbf. ---------------------------------------------------------------- Usage with CCPLUS: (also see Gary Novosielski's original notes below) This is intended to eliminate any syntactical difference between execution of programs stored in libraries, and those that reside as files on disk. The available program names will not appear in a DIR listing (but can be shown by SD, a public domain program). My personal usage is to install virtually all utilities in COMMAND.LBR, because my system uses a minimun disk allocation of 2k bytes. Thus, on the average, each installed program saves 1k bytes of disk space, and small programs even more. The following should NOT be installed in libraries: WordStar because the "Run" command within WordStar must be able to find the file to reload. If you never use this command it may be installed in a library. WSxxx.OVR WordStar cannot find its overlays in a library. LU If anything goes wrong you are out of communication with the libraries without having this available. REDO or the equivalent empty program, for re-executing a loaded program. This takes no disk space anyway. CCPXTEND.SYS This program itself MUST be directly available. and, where my Pascal system is installed: PASCALP.PCD needs to be available as a file for TUNE to set it's code versus data space usage. If you never compile large programs and want to leave it at some setting, go ahead and install it in PCDS.LBR. RUNPCD has a build in library search. In general it is useless to install a program that takes an exact multiple of the disk allocation unit, except to conserve on directory entries. Using these techniques my normal system disk (390k, with 64 max directory entries) holds over 90 programs, and uses only about 20 directory entries. LRUN is constructed as an "ALIAS" entry for CCPXTEND (or you may consider it the reverse if you prefer). ALIAS directory entries ----------------------- These are directory entries that are byte for byte identical to the original entry, and thus point to exactly the same disk storage area, but contain either or both of: 1. A different name under which to access the file 2. A different user number for the file (byte 0). A utility to create and destroy these would be useful, but DU serves the purpose as follows: 1. Create the alternate entry by A>save 0 alternatename (under the user you want it to appear under) 2. With DU, examine the original entry, bytes 0fh through 01fh (i.e. size and disk allocation). 3. With DU, alter the new entry to agree in those bytes. IF ANY OF THE ALTERNATES are ever erased, be sure to REBOOT immediately afterward. Otherwise CPM's internal disk allocation tables will be wrong, and the storage for the non-erased alternates will be overwritten. To protect against this I always set any files that have been aliases, and their aliases, to be R/O files. The above will break down if the file to be aliased occupies more than one directory extent. In this case all extents must be copied, and it is not so easy to create the entry in the first place. -------------------------------------------------------------- LRUN is intended to be used in conjunction with libraries created with LU.COM, a library utility based upon the groundwork laid by Michael Rubenstein, with some additional inspiration from Leor Zolman's CLIB librarian for .CRL files. The user can place the less frequently used command (.COM) files in a library to save space, and still be able to run them when required, by typing: LRUN . The name of the library can be specified, but the greatest utility will be achieved by placing all commands in one library called COMMAND.LBR, or some locally defined name, and always letting LRUN use that name as the default. Syntax: LRUN [-] [] where: is the optional library name. In the distribution version, this defaults to COMMAND.LBR. If the user wishes to use a different name for the default, the 8-byte literal at DFLTNAM below may be changed to suit local requirements. The current drive is searched for the .LBR file, and if not found there, the A: drive is searched. **NOTE that the leading minus sign (not a part of the name) is required to indicate an override library name is being entered. is the name of the .COM file in the library is the (possibly empty) set of parameters which are to be passed to , as in normal CP/M syntax. Notice that if the library name is defaulted, the syntax is simply: LRUN I.E. just the normal command line with LRUN prefixed to it.