; Program: ARUNZ (Copyright 1989, all rights reserved, by Jay Sage) ; Version: 1.1 ; Author: Jay Sage (with help from Howard Goldstein and Carson Wilson) ; Date: October 23, 1993 ; History: See ARUNZxxx.HIS VERSION$UNIT equ '1' VERSION$TENTH equ '1' VERSION$LETTER equ ' ' .comment \ Notes: ASSEMBLING THE CODE =================== To create a type-4 ARUNZ using LINK-80 and Z80ASM, the commands are: Z80ASM ARUNZ/6 LINK ARUNZ,Z3LIB[S],DSLIB[S],SYSLIB[S,OP] MLOAD ARUNZ=ARUNZ.PRL,T4LDR11 With ZMAC/ZML the commands are ZMAC ARUNZ ZML ARUNZ10.4OM=ARUNZ,Z3LIB/,DSLIB/,SYSLIB/,T4LDR11.HDR/P T4LDR11.HDR is T4LDR11.Z80 assembled to an absolute binary file. With SLRNK+ the commands are Z80ASM ARUNZ/S SLRNK+ ARUNZ/K,SLR,ARUNZ,Z3LIBS/S,DSLIBS/S,SYSLIBS/S,/E MLOAD ARUNZ=ARUNZ.PRL,T4LDR11 SLRNK+ has a somewhat non-standard way of generating PRL files that necessitates linking in a header module (SLR.REL above) before the ARUNZ.REL module. The source for this module is a simple "DS 256". It just allocates a page of memory for the header. I have made things easier by merging all the libraries with SLRIB to make a single module LIBS.REL. This saves disk space, reduces the number of files that must be opened, and simplifies the linkage command lines. It also prevents the mistakes of omitting a module or including modules in the wrong order. Generating a Type-4 Version of ARUNZ ==================================== See the comments in ARUNZ09S.NOT. Making a Version for Extended Multiple Command Line Buffers =========================================================== See the comments in ARUNZ10.NOT. \ CODESIZE equ 1300h ; Bigger than actual code+data MCLSIZE equ 0 ; Set to 0 for standard system ;============================================================================= ; E Q U A T E S NO equ 0 YES equ NOT NO WILDCHAR equ '_' OPTCHAR equ ',' DEFLTCHAR equ ':' TYPECHAR equ '>' NPROMPTS equ 4 ; Number of prompted input parameters FBUFSIZE equ 4 ; File input buffer in pages Z33ONLY equ NO ; Yes if relying on Z33 parser CLSIZE equ 0FFh ; Size of buffer for new command line .accept "Assemble for type 3 or 4? ",ENVTYP XMCL equ NO ; Includ extended mcl code PINPUT equ YES ; Include user input parameters $", $' PREG equ YES ; Include register parameter $R PMEM equ YES ; Include memory parameter $M PENV equ YES ; Include ENV address parameter $A PDATE equ YES ; Include datestamper date parameter TBUFF equ 80h FCB equ 5Ch CR equ 0Dh LF equ 0Ah TAB equ 09h BELL equ 07h EOT equ 1Ah ; ---------- Error codes ; ZCPR34 uses the error byte at the beginning of the message buffer as a flag ; to show what kind of error occurred. Advanced error handlers will be able ; to help the user further by suggesting the possible cause of the error. ECECPERR equ 6 ; ECP error -- command could not be executed ; ..by ECP, error handling was forced by a ; ..transient for its own reasons ; (DO NOT CHANGE FROM 6) ;============================================================================= ; U S E R M A C R O S ; This macro places configuration flags in the code. CONFIG MACRO db 'SIZE' CODESIZ: dw CODESIZE db 'TABFLAG' TABFLAG: db 0 ; Set to 09 to allow tabs as token ; ..delimiters IF XMCL db 'MCLSIZE' MCLSIZ: dw MCLSIZE ENDIF ; XMCL ; These two flags, which appear just before the marker string 'REG' determine ; which messages will be displayed by ARUNZ. The QUIETECP flag applies when ; ARUNZ has been invoked as an extended command processor. If invoked by the ; user, QUIETF applies. Contrary to what the symbol name would imply, setting ; bits in the flag turns on the display of that message. db 'MSGFLAGS' QUIETECP: db 00000100b ; Quiet flag for ECP invocation QUIETF: db 00001110b ; Flag to control display of messages ; |||||||| ;set bit to display msg ; |||||||*---- signon message ; ||||||*----- running alias "x" message ; |||||*------ alias.cmd file not found ; ||||*------- alias "x" not found ; |||*-------- ECP error (no longer used) ; ||*--------- shell invocation error ; (no longer used) ; **---------- bits not assigned ; If the value of REGF is in the range 0..1FH, then that user register will be ; used to set the values for the three path-related flags to follow. Bit 0 ; is used to select path searching of some kind. If it is not set, then the ; fixed DU is used. Bit 1 determines whether only the root will be searched. ; If it is not set, then the entire path will be searched. Bit 2 determines ; whether full path searches will include the current directory first. db 'REG' REGF: db 0FFh ; PATHF determines whether path searching will be used to locate ALIAS.CMD. ; If the flag is 0, then the fixed DU area below will be used. If it is 0FFH, ; then the other path-related flags will be used to determine how the search ; is performed. db 'PATH' PATHF: db YES ; Path search flag (NO = use DU given below) ; ROOTF determines whether only the root of the path will be searched. If it ; is 0FFH, then only the root will be used; if it is 0, then the entire path ; will be searched. db 'ROOT' ROOTF: db YES ; NO = use entire path / YES = root only ; If full path searching is selected, then SCANCUR determines whether or not ; to include the current directory first. db 'SCANCUR' SCANCUR: db YES ; YES = search current DU first ; If path searching is disabled, then the explicit directory specified here ; will be searched for ALIAS.CMD. db 'DU' CMDDRV: db 'A' - 'A' ; Drive to use if not path (drive A = 0) CMDUSR: db 0 ; User to use if not path ENDM ;============================================================================= ; E X T E R N A L R E F E R E N C E S ; DSLIB ;EXT FINDCK,RDCLK EXT TIMINI,RCLOCK ; Z33LIB or Z34LIB (in Z3LIB in version-4 libraries) EXT Z33CHK,SCAN,FCB1CHK,PRTTYPE,GETCCP,GZMTOP EXT Z3INIT,GETEFCB,GETENV,GETFN2,GETPATH,GETREG EXT GETCL1,GETCL2,ZPRSFN,ZSYSCHK,INVERROR ; SYSLIB4 EXT SKSP,ISSP,CAPS,PRINT,CRLF,COUT,ACASE1 EXT F$OPEN,F$READ,SETDMA,PFIND,INITFCB EXT LOGUD,RETUD EXT GETCST IF PINPUT EXT BLINE,GETZEX,PUTZEX ENDIF IF PREG EXT GETREG ENDIF IF PMEM OR PENV OR PREG EXT MA2HC,MA3DC,MAFDC,EVAL16 ENDIF IF PENV EXT MHL4HC ENDIF IF ENVTYP lt 4 EXT CODEND ENDIF ;============================================================================= INCLUDE ARUNZ-1.Z80 ; Initialization code ;============================================================================= INCLUDE ARUNZ-2.Z80 ; Processing of Special Characters ;============================================================================= INCLUDE ARUNZ-3.Z80 ; Subroutines ;============================================================================= end