Trailing-Edge
-
PDP-10 Archives
-
BB-L665B-BM
-
sources/rnfscc.mac
There are 16 other files named rnfscc.mac in the archive. Click here to see a list.
;<3-UTILITIES>RNFSCC.MAC.3, 8-Nov-77 10:50:22, EDIT BY KIRSCHEN
;MORE COPYRIGHT UPDATING...
UNIVERSAL ..SCNM -- MACRO TO DEFINE SCAN SYMBOLS
SUBTTL COMMAND SCANNER MACROS %10(205) 18-AUG-75
SCMWHO==0 ;WHO LAST EDITTED
SCMVER==7 ;DEC VERSION
SCMMIN==0 ;DEC MINOR VERSION
SCMEDT==205 ;DEC EDIT VERSION
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1976, 1977, 1978 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
XLIST ;MACRO DEF
DEFINE SCNM(NM,OS,LFLG),<
LFLG
LALL
UNIVERSAL SCNM'NM -- SCAN PARAMETERS FOR TOPS-OS
SYN IFE,IF
TOPS==OS
SEARCH MACTEN ;GET MACTEN MACROS
%%MACTEN==%%MACTEN ;SHOW VERSION OF MACTEN
%%SCNM==VRSN. (SCM)
PURGE SCMWHO,SCMVER,SCMMIN,SCMEDT
;MACRO DEFINITIONS OF GENERAL USE
;DEFAULTS
;DM ABBREVIATION,MAX,ADEFAULT,PDEFAULT
; DEFINES SYMBOLS MX.ABBREVIATION,AD.ABBREVIATION, AND PD.ABBREVIATION
; TO BE THE MAXIMUM ALLOWED VALUE, THE DEFAULT IF THE KEYWORD
; IS ABSENT, AND THE DEFAULT IF THE KEYWORD IS PRESENT RESPECTIVELY
; UNLESS THE CORRESPONDING SYMBOL IS ALREADY DEFINED.
DEFINE DM(ABBR,MAX,ADEF,PDEF),<
ND MX.'ABBR,MAX
ND AD.'ABBR,ADEF
ND PD.'ABBR,PDEF>
;REVISION HISTORY OF PARAMETER FILE
;%2(47) MAY, 1972, WITH SCAN 2(127)
;50 ADD SYMBOLS FOR ALL WORDS AND LENGTHS IN SCAN BLOCK
; ADD FX.DFX, FX.TRM, AND .FXTRA,O,N,C.
; OBSOLETE FX.ADD.
;51 ADD FX.NDV.
;52 MAKE USEABLE AS A UNIVERSAL FILE
;%3(52) DEC, 1972 WITH SCAN 3(173)
;53 ADD COMMENTS TO .FX DEFINITIONS TO INDICATE WHEN SET
;54 ADD DEFENSIVE PRINTX TO SWTCHS MACROS
;55 ADD FLAGS CONCEPT TO SWITCH TABLES; ADD FS.NFS
;56 AD FS.LRG TO HANDLE VALUES .GT. 2**17
;57 ADD FS.MOT DEFINITION FOR .TSCAN FLAGS
;60 ADD FLAGS FOR .TDIRB CALL
;61 ADD FLAG FS.NUE
;62 CLEAN UP LISTING OF PAGE 1
;63 ALLOW * IN KEYS LISTS
;64 ADD FX.PRT
;65 ADD FS.VRQ
;66 DELETE FX.ADD
;67 TEST BAD ARGS ONLY IN PASS2
;70 IMPROVE ON 67 SLIGHTLY
;%4(70) DEC, 73 WITH SCAN 4(275)
;71 DEFINE FS.OBV
;72 DEFINE JWW.??
;73 DEFINE FS.MIO
;74 CORRECT OVERPROTECTION OF DEFAULT TO 377777,,777777
;75 ADD SN STYLE SWITCHES
;76 ADD SCAN WORDS 24-31 AND FX.SUP
;77 ADD OVERRIDE ON POINT ARGUMENT TO SWITCH MACROS
;%5(77) JUN, 74 WITH SCAN 5(363)
;100 DEFINE FS.ICL
;%6(100) JULY, 1974 WITH SCAN 6
;101 ADD GUIDE WORDS AS .CHXXX: AND, OR, NOT
;102 CLARIFY FS.NFS; ADD FS.NCM
;103 ADD GUIDE WORDS 4002-4011
;104 REMOVE ASK MACRO (NEVER IMPLEMENTED)
;105 EXPAND (AND MOVE) FX.DEN FOR 5.07/6.02
;%7(105) OCT, 1974 WITH SCAN 7
;201 SIMPLIFY DOSCAN ANALYSIS (NO CHANGE IN CALL)
;202 ADD .FLASK, .FLTEL, .FLQUI
;203 ELIMINATE SCNMAC.REL IF UNIVERSAL
;204 UPDATE FOR TOPS-20
;205 PRODUCE SEPERATE .UNV FILES
;WORDS IN FILE SPEC AREA
.FXZER==0 ;FIRST WORD IN BLOCK (TOPS-10 OR TOPS-20)
IF TOPS-10,<
.FXDEV==0 ;DEVICE (NON-ZERO IF ANY PART OF SPEC)
.FXNAM==1 ;NAME (NON-ZERO IF NAME PRESENT)
.FXNMM==2 ;NAME MASK
.FXEXT==3 ;EXTENSION,,EXTENSION MASK (NON-ZERO DOT PRESENT)
.FXMOD==4 ;MODIFIER WORD
.FXMOM==5 ;MODIFIER MASK
.FXDIR==6 ;DIRECTORY WORD (EACH HALF=0 IF DEFAULT; SFD:0 IF END)
.FXDIM==7 ;DIRECTORY MASK
.X==0 ;TOPS-10 OFFSET
> ;END TOPS-10 CASE
IF TOPS-20,<
.FXFIL==0 ;FILE SPEC (^D26 WORD ASCIZ STRING)
.FXJFN==^D26 ;JFN IF ANY
.FXPRO==^D27 ;PROTECTION
.FXACT==^D28 ;ACCOUNT STRING
.FXMOD==^D36 ;MODIFIER WORD
.FXMOM==^D37 ;MODIFIER MASK
.X==.FXMOM-21 ;TOPS-20 OFFSET
>
.FXBFR==22+.X ;/BEFORE
.FXSNC==23+.X ;/SINCE
.FXABF==24+.X ;/ABEFORE
.FXASN==25+.X ;/ASINCE
.FXFLI==26+.X ;FILE MIN SIZE (WORDS)
.FXFLM==27+.X ;FILE MAX SIZE (WORDS)
.FXEST==30+.X ;/ESTIMATE
.FXVER==31+.X ;/VERSION
;LENGTHS OF FILE SPEC AREA
.FXLEN==32+.X ;LENGTH OF ONE SPECIFICATION
IF TOPS-10,<
.FXLND==6 ;LENGTH OF DIRECTORY (UFD+SFD'S)
> ;END TOPS-10
IF TOPS-20,<
.FXLNF==^D26 ;LENGTH OF FILE SPEC STRING
>
;BYTES IN SCAN MOD WORD
IF TOPS-10,<
FX.NDV==1B0 ;NULL DEVICE
FX.NUL==1B1 ;NULL EXTENSION
FX.DIR==1B2 ;DIRECTORY SPECIFIED (MOD=0 IF [-])
> ;END TOPS-10
FX.PHY==1B3 ;/PHYSICAL
FX.NOM==1B4 ;/OKNONE
IF TOPS-10,<
FX.DFX==1B5 ;DIRECTORY DOES NOT NEED FIX-UP BY WILD
> ;END TOPS-10
IF TOPS-20,<
FX.TMP==1B5 ;FILE IS TEMP
>
FX.TRM==7B8 ;CODE FOR SPEC'S TERMINATION
.FXTRA==1 ;& (AND)
.FXTRO==2 ;! (OR)
.FXTRN==3 ;- (NOT)
.FXTRC==4 ;+ (CONCATENATE)
FX.STR==1B9 ;/STRS
FX.PRT==1B10 ;/OKPROT
FX.SUP==1B11 ;/ERSUPERSEDE
FX.DEN==7B23 ;/DENSITY [105]
FX.PAR==1B24 ;/PARITY
IF TOPS-10,<
FX.PRO==777B35 ;/PROTECTION
> ;END TOPS-10
;SPECIAL CHARACTERS FOR SCAN
.CHALX==0 ;ALTMODE
.CHEOL==-1 ;END OF LINE
.CHEOF==-2 ;END OF FILE
;GUIDE WORDS (TURNED INTO PSEUDO CHARACTERS)
.CHAND==4000 ;'AND' [101]
.CHOR==04001 ;'OR' [101]
.CHNOT==4002 ;'NOT' [101]
.CHTO==04003 ;'TO' [103]
.CHFRM==4004 ;'FROM' [103]
.CHINP==4005 ;'INPUT' [103]
.CHOUT==4006 ;'OUTPUT' [103]
.CHSRC==4007 ;'SOURCE' [103]
.CHLST==4010 ;'LIST' [103]
.CHOBJ==4011 ;'OBJECT' [103]
;FLAGS FOR .ISCAN CALL
FS.ICL==1B17 ;IGNORE SPECIAL COMMAND-LINE HANDLING
;FLAGS FOR .TSCAN CALL
FS.MOT==1B18 ;MULTIPLE OUTPUT SPECS POSSIBLE
FS.MIO==1B19 ;MIXED INPUT AND OUTPUT SPECS
;FLAGS FOR .TDIRB CALL
TS.DRW==0 ;SINGLE WORD
TS.DRP==1 ;PATH POINTER
TS.DRB==2 ;BIWORD (IE, SCAN SPEC FORMAT)
;VALUES FROM .VERBO
JWW.CN==1B33 ;/MESSAGE:CONTINUATION
JWW.FL==1B34 ;/MESSAGE:FIRST
JWW.PR==1B35 ;/MESSAGE:PREFIX
;VALUES IN .FLAQT
.FLASK==1 ;/ASK
.FLTEL==2 ;/TELL
.FLQUI==3 ;/QUIET
;SWITCH SCANNING MACROS AND TABLES
;SWTCHS IS THE MACRO LISTING ALL KNOWN SWITCHES
;IT INCLUDES THE NAME AND STORAGE LOCATION
;FOR VALUE TYPES, IT ALSO HAS THE MAX AND DEFAULT AND PROCESSOR
;FOR KEY-VALUE TYPES, IT POINTS TO THE KEYS AND HAS THE DEFAULT IF ANY
;FOR STAND-ALONE TYPES, IT HAS THE VALUE.
;WHEN THE SWITCH SCANNING TABLES ARE TO BE BUILT, INVOKE
;THE MACRO DOSCAN WITH 5-CHAR ARGUMENT TO USE AS SYMBOL PREFIX
;IT WILL DEFINE XXXXXN,L,P,M,D
; SL NAME,STORAGE,TABLE-NAME,DEFAULT,FLAGS
; DEFINES A LIST OF KEY-VALUES (SEE KEYS MACRO)
; DEFAULT IS THE ORDINAL OR 0 IF NO DEFAULT
; IF LH(STORAGE)=7777B11, STORAGE = ROUTINE TO PROCESS
;
; SP NAME,STORAGE,PROCESSOR,ABBREVIATION,FLAGS
; DEFINES A VALUE PARAMETER WHOSE DEFAULTS
; ARE DEFINED AT THE BEGINNING OF THE PROGRAM
; BY "DM" USING THE SAME ABBREVIATION
; PROCESSOR IS THE JUMP ADDRESS IN SWITCH PROCESSING
; IT WILL BE CALLED WITH P1=SWITCH OFFSET IN TABLE
; AND P2=POINTER TO 4-WORD BLOCK OF INTERNAL OR EXTERNAL STUFF
; IF MAX=0 AND FS.LRG, THEN ANY VALUE CAN BE STORED
; ELSE, 0.LE.VALUE.LE.MAX
;
; 0.LE.MAX,DEFAULT.LT.2**17 UNLESS FS.LRG
;
; IF MAX=0 AND NOT FS.LRG, THEN PROCESSOR IS AN IMMEDIATE ACTION
; WHICH WILL ALWAYS BE CALLED
; ELSE, PROCESSOR WILL BE CALLED ONLY IF ":"
;
; SS NAME,STORAGE,VALUE,FLAGS
; DEFINES A STAND-ALONE PARAMETER
;
; IN ALL CASES, STORAGE IS A BYTE POINTER.
; IF A FULL WORD, ONLY THE ADDRESS IS NEEDED
; IF A MULTIPLE WORD, THE BYTE SIZE IS 65-#WORDS (UP TO 28)
; IF A FILE SPECIFICATION, THE LENGTH IS HELD IN MX.ABBREVIATION
; IF POINTER IS 7777??,,?????? THEN RH(POINTER) IS DISPATCH
; ADDRESS OF PROCESSOR WHICH TAKES KEYWORD SWITCH VALUES
;
; SN NAME,STORAGE,FLAGS
; DEFINES A STAND-ALONE PARAMETER WHICH TAKES VALUE
; 1 IF /NAME, AND VALUE 0 IF /NONAME
; KEYS (NAME,LIST) WILL DEFINE A LIST OF KEYS BY NAME NAME
; NAME CAN BE UP TO 4 CHARS. (DEFINES NAME.T AND NAME.L)
; LIST IS SIXBIT NAMES SEPARATED BY COMMAS.
; DEFINES NAME CONCATENATED WITH START OF ITEM IN LIST
; AS INDEX IN LIST UNLESS THE ITEM BEGINS WITH "*"
DEFINE SL($NAME,$RESULT,$TABLE,$DEFAULT,$FLAGS),<
X $NAME,$TABLE'.T-1,<$RESULT>,$DEFAULT,-$TABLE'.L,$FLAGS
>
DEFINE SP($NAME,$RESULT,$PROCESSOR,$ABBR,$FLAGS),<
X $NAME,$PROCESSOR,<$RESULT>,PD.'$ABBR,MX.'$ABBR,$FLAGS
>
DEFINE SS($NAME,$RESULT,$VALUE,$FLAGS),<
X $NAME,0,<$RESULT>,$VALUE,0,$FLAGS
>
DEFINE SN($NAME,$RESULT,$FLAGS),<
X $NAME,0,<$RESULT>,0,0,FS.NOS!$FLAGS
>
;FLAGS WHICH CAN BE DEFINED IN SWITCH TABLE
FS.NFS==1B0 ;THIS SWITCH IS NEVER PART OF A FILE SPECIFICATION
; THIS SHOULD BE SET ON GLOBAL SWITCHES
; ** VERY IMPORTANT TO GET RIGHT **
FS.LRG==1B1 ;THE MAX AND DEFAULT VALUES ARE 0 OR .GT. 2**17
FS.NUE==1B2 ;NO USER EXIT ON THIS SWITCH
FS.VRQ==1B3 ;VALUE REQUIRED
FS.OBV==1B4 ;OR BIT VALUES TO RIGHT HALF
FS.NOS==1B5 ;SWITCH TAKES "NO" PREFIX (INTERNAL FOR SN MACRO ONLY)
FS.NCM==1B6 ;SWITCH DOES NOT CONSTITUTE A COMMAND [102]
; (FOR /RUN, /OPTION, /EXIT)
;DON'T USE FS.R??, WHICH ARE DEFINED IN C.MAC
;MACRO TO BUILD THE TABLES FROM THE SWTCHS MACRO
DEFINE DOSCAN(PFX),<
XALL
;;TABLE OF SIXBIT SWITCH NAMES
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
EXP SIXBIT /$NAME/
>
PFX'N: SWTCHS
PFX'L==.-PFX'N
;;TABLE OF BYTE POINTERS TO STORE RESULT
IF2,<
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
..TEMP==0
IRP $POINT,<
IFE ..TEMP-1,<
$POINT ;$NAME
>
IFE ..TEMP-2,<
POINT 36,$POINT,35 ;$NAME
>
IFIDN <$POINT><*P>,<..TEMP==1> ;;PARTIAL WORD
IFIDN <$POINT><*F>,<..TEMP==2> ;;FULL WORD
>
IFB <$POINT>,<
Z ;$NAME
>
IFNB <$POINT>,<IFE ..TEMP,<
$POINT ;$NAME
>>
>>
PFX'P: SWTCHS
;;TABLE OF IF LT 0, IOWD KEY TABLE
;; OR IF GE 0, XWD MAX,PROCESSOR
MX.==0
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
IF2,<
IFE <$FLAGS>&FS.LRG,<IFG <$MAX>-377777,<PRINTX ?MAXIMUM OF /$NAME CANNOT BE GT 377777>>
>
..TEMP==1
IFN <$FLAGS>&FS.LRG,<IFN <$MAX>,<..TEMP==0>>
IFN ..TEMP,<
XWD $MAX,$PROC ;$NAME
>
IFE ..TEMP,<
XWD [$MAX],$PROC ;$NAME
>
>
PFX'M: SWTCHS
;;FLAGS,,DEFAULT VALUE
PD.==0
DEFINE X($NAME,$PROC,$POINT,$DEFLT,$MAX,$FLAGS),<
IF2,<
IFL <$DEFLT>,<IFN <$DEFLT>+1,<PRINTX ?DEFAULT OF /$NAME CANNOT BE NEGATIVE>>
IFE <$FLAGS>&FS.LRG,<IFG <$DEFLT>-777777,<PRINTX ?DEFAULT OF /$NAME CANNOT BE GT 777777>>
>
IFB <$FLAGS>,<..TEMR==0>
IFNB <$FLAGS>,<..TEMR==($FLAGS)>
..TEMP==1
IFN <$FLAGS>&FS.LRG,<IFN <$DEFLT>,<..TEMP==0>>
IFN ..TEMP,<
XWD ..TEMR,$DEFLT ;$NAME
>
IFE ..TEMP,<
XWD ..TEMR,[$DEFLT] ;$NAME
>
>
PFX'D: SWTCHS
PURGE ..TEMP,..TEMR
SALL
>
;AND FINALLY, THE KEY-WORD VALUES
DEFINE KEYS(NAME,LST),<
NAME'.L==0
NAME'.T: IRP (LST)<EXP SIXBIT /LST/
NAME'.L==NAME'.L+1
..TEMP==0
IRPC (LST)<IFIDN <LST><*>,<..TEMP==1>
STOPI>
IFE ..TEMP,<NAME'LST==NAME'.L>
>
PURGE ..TEMP
>
;M.FAIL <FOO> SENDS FOO AS A FATAL ERROR
DEFINE M.FAIL (A),<
EXT .FMSG
PJSP T1,.FMSG
XLIST
ASCIZ \A\
LIST
>
;M.FAIN <FOO> SENDS FOO AS A FATAL ERROR WITH N IN SIXBIT
DEFINE M.FAIN (A),<
EXT .FMSGN
PJSP T1,.FMSGN
XLIST
ASCIZ \A\
LIST
>
;M.FAID <FOO> SENDS FOO AS A FATAL ERROR WITH N IN DECIMAL
DEFINE M.FAID (A) <
EXT .FMSGD
PJSP T1,.FMSGD
XLIST
ASCIZ \A\
LIST
>
;M.FAIO <FOO> SENDS FOO AS A FATAL ERROR WITH N IN OCTAL
DEFINE M.FAIO (A),<
EXT .FMSGO
PJSP T1,.FMSGO
XLIST
ASCIZ \A\
LIST
>
;M.MAIF <FOO> SENDS FOO AS A FATAL ERROR WITH N=ADDR OF FILE DESCRIPTOR
DEFINE M.FAIF(A)<
EXT .FMSGF
PJSP T1,.FMSGF
XLIST
ASCIZ \A\
LIST
>
LIST
> ;END DEF OF SCNM
LIST
PRGEND
SEARCH ..SCNM
SCNM(10,10,LIST)
PRGEND
SEARCH ..SCNM
SCNM(AC,10,XLIST)
PRGEND
SEARCH ..SCNM
SCNM(20,20,LIST)
END