; Module: NZFCP.LIB ; Author: Carson Wilson ; Version: 1.3 ; Date: 9 Oct 89 ; Changes: Prompts for options if SLR true. ; This module is a set of configuration options for the flow control package ; code in NZFCP.Z80. The options are not fully commented here; see ; "ZCPR3, The Manual" for a detailed discussion of most of them. ; * * * * * * N O T I C E * * * * * * ; ; The main code in Z33FCP.Z80 has been written with relative jump instructions ; for minimum code size. If the options below are changed, then some of the ; jumps may become out-of-range. You will then have to change the code based ; on the error messages you get from your assembler. I cannot think of any ; way to handle the jumps automatically (macros fail because the jump distances ; cannot be resolved fully even in two passes of the assembler). If you want ; to play things really safe, you can do a global search and replace to change ; all occurrences of the JR instruction to JP (but note that this change is ; irreversible). I prefer to live with this nuisance so that I can get the ; most out of the code. ; ; Another possible way to clear up a problem with a relative jump that is out ; of range is to take the block of code with the labels IFCTRUE and IFCFALSE ; and move it up or down in the code. It is placed somewhere in the middle of ; the resident options, so that the options can reach those entry points with ; a relative jump. You should try to place that code near the middle of the ; options which you have enabled. ; ; Jay Sage (May 17, 1987) ;============================================================================= ; ; M A C R O S ; ;============================================================================= ; SLR assemblers allow selection of options during assembly. SLR equ yes if SLR y equ yes n equ no select macro option default comment .accept comment,option ; Prompt user for selection endm .printx .printx Answer "Y" to include, "N" to exclude commands: .printx else select macro option default comment option equ default ; Use selections from file endm endif ; SLR ; ------------------------------------------------------------------------- ; Command names ; The CTABLE macro, which constructs the command dispatch table, includes a ; line for each command, the first parameter of which is the name of the ; command. These names may be changed if you wish. But make sure that you ; do not use a name that is longer than the maximum allowed length. If you ; do, the name will be truncated and a nonfatal error will occur during ; assembly. DO NOT CHANGE ANY PARAMETER OTHER THAN THE COMMAND NAME. Lower ; case letters will be converted to upper case. The macro COMMAND is defined ; in Z34MAC.LIB. cmdsize equ 4 ; Maximum length of command names ; Command table name, enable, wheel, jump_addr ; [ DO NOT CHANGE THESE PARAMETERS ] ctable macro ifcmd: command if, yes, no, ifstart command and, andopt, no, andstart command or, oropt, no, orstart command else, yes, no, ifelse command fi, yes, no, ifend command ifq, ifqopt, no, ifstat0 command xif, yes, no, ifexit command zif, zifopt, no, ifzero endm ;----------------------------------------------------------------------------- ; General configuration options NOISE equ no ; Don't display if-state messages select COMIF no 'Enable transient IF processing? ' PATHROOT equ yes ; Find transient IF in root of path ifdrv equ 'A' ; Drive to use if PATHROOT is off or ; ..if the path is empty ifusr equ 0 ; User to use if PATHROOT is off or ; ..if the path is empty ; --------------------------------------------------------------------- ; Command inclusion options select ZIFOPT yes 'ZIF - unconditionally clear IF states? ' select IFQOPT yes 'IFQ - show current if status? ' select OROPT yes 'OR - set state at current level? ' select ANDOPT yes 'AND - reset state at current level? ' ;----------------------------------------------------------------------------- ; If Condition Options if COMIF ; Different precedence if transient IF available. select IFONEG yes 'Allow negation of conditions? ' negchar equ '~' ; Character to use if negation allowed select IFOERROR yes 'ERROR - test program error flag? ' select IFONULL yes 'NULL - test for no file name? ' select IFOREG yes 'REG - test register values? ' select IFAMBIG yes 'AMBIG - test for "?" in file spec? ' select IFCOMPR yes 'COMPR - test for compressed filespec? ' select IFOEQ yes '= - test tokens for equality? ' select IFOINPUT yes 'INPUT - test user input? ' XEQOPT equ yes ; Test only first token for equal sign select IFOTRUE yes 'Allow "IF T" and "IF F" forms? ' select IFOWHEEL no 'WHEEL - test wheel byte? ' select IFOTCAP no 'TCAP - test whether TCAP loaded? ' select IFOEXIST yes 'EXIST - test for file existence? ' select IFOEMPTY yes 'EMPTY - test files for contents? ' else select IFONEG yes 'Allow negation of conditions? ' negchar equ '~' ; Character to use if negation allowed select IFONULL yes 'NULL - test for no file name? ' select IFOINPUT yes 'INPUT - test user input? ' select IFOEQ yes '= - test tokens for equality? ' XEQOPT equ yes ; Test only first token for equal sign select IFOERROR yes 'ERROR - test program error flag? ' select IFOTRUE yes 'Allow "IF T" and "IF F" forms? ' select IFOEXIST yes 'EXIST - test for file existence? ' select IFAMBIG yes 'AMBIG - test for "?" in file spec? ' select IFCOMPR yes 'COMPR - test for compressed filespec? ' select IFOREG yes 'REG - test register values? ' select IFOWHEEL no 'WHEEL - test wheel byte? ' select IFOTCAP no 'TCAP - test whether TCAP loaded? ' select IFOEMPTY yes 'EMPTY - test files for contents? ' endif ; COMIF ; Miscellaneous configuration information curusr equ z3msg+2eh ; Current logged user address curdr equ z3msg+2fh ; Current logged drive address curint equ '$' ; Path symbol for current drive/user ; END of NZFCP.LIB