;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 1
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0001 MODULE VALIDATE (MAIN = VALIDATE, LIST(SOURCE,COMMENTARY))=
; 0002 BEGIN
; 0003
; 0004 ! Program Validate is designed to aid command procedure files by setting
; 0005 ! exit status according to whether or not the file named on the command
; 0006 ! line exists or not. $SEVERITY is:
; 0007 ! WARNING if there was an error on the command line
; 0008 ! INFORMATIONAL if the file (or its directory) did not exist
; 0009 ! SUCCESS if the file did exist
; 0010 !
; 0011 ! Parameter:
; 0012 ! file-spec
; 0013 !
; 0014 ! Qualiflers:
; 0015 ! /[NO]LOG - write the name of the file to SYS$OUTPUT
; 0016 ! /[NO]BRIEF - for /LOG, delete the prefix " File found: "
; 0017 ! from the message.
; 0018 ! /DEFAULT - provides any element that should be used as default
; 0019 ! in the file spec, in file-spec format.
; 0020
; 0021 ! Written by R.J. FitzPatrick 23-Jul-1980 at SAO
; 0022
; 0023 LIBRARY 'SYS$LIBRARY:STARLET.L32';
; 0024 LIBRARY 'SYS$LIBRARY:CLIMAC.L32';
; 0025 LIBRARY 'SYS$LIBRARY:TPAMAC.L32';
; 0026
; 0027 ! STRINGS is a macro package that allows easy definition of string
; 0028 ! literals, with optional descriptor.
; 0029
; R0031
; R0032 ! Macros for string handling.
; R0033
; R0034 COMPILETIME
; R0035 %NAME('S\N') = 0;
; R0036
; R0037 MACRO STRING_LENGTH(STRNAME) = %NAME(STRNAME, '\L') %;
; R0038
; R0039 MACRO DESCRIPTOR(STRNAME) = %NAME(STRNAME, '\D') %;
; R0040
; MR0041 MACRO %NAME('S\AUX')(SN, S, SNUM) =
; MR0042 MACRO SN = %NAME('S\', SNUM) %QUOTE % ;
; MR0043 LITERAL %NAME(SN, '\L') = %CHARCOUNT(S);
; MR0044 BIND
; R0045 SN = UPLIT BYTE (S); %;
; R0046
; MR0047 MACRO PSLIT(STRNAME, STR) =
; MR0048 %ASSIGN (%NAME('S\N'), %NAME('S\N')+1);
; R0049 %NAME('S\AUX')(STRNAME, STR, %NUMBER(%NAME('S\N'))); %;
; R0050
; MR0051 MACRO PDSLIT(STRNAMED, STRD) =
; MR0052 PSLIT(STRNAMED, STRD);
; MR0053 BIND %NAME(STRNAMED, '\D')
; R0054 = UPLIT(STRING_LENGTH(STRNAMED), %NAME(STRNAMED)); %;
; 0054 REQUIRE 'STRINGS.REQ';
; 0055
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 2
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0056 LITERAL
; 0057
; 0058 MAX_PARAMS = 1,
; 0059
; 0060 DESCR_SIZE = 2,
; 0061 XDESCR_SIZE = 3,
; 0062
; 0063 TRUE = 1,
; 0064 FALSE = 0,
; 0065
; 0066 ON = 1,
; 0067 OFF = 0;
; 0068
; 0069 LITERAL
; 0070 VAL_NOWILD = RMS$_SYN,
; 0071 DCL_IVDELIM = %X'38110',
; 0072 DCL_DIRECT = %X'38030',
; 0073 DCL_NOLIST = %X'380C0',
; 0074 DCL_NOVALU = %X'380D0',
; 0075 DCL_NOKEYW = %X'380B8',
; 0076 DCL_IVKEYW = %X'38060',
; 0077 DCL_BADVAL = %X'38060', ! Same as IVKEYW.
; 0078 DCL_NOTNEG = %X'380D8',
; 0079 DCL_INSFPRM = %X'38048',
; 0080 DCL_NULFIL = %X'380E0',
; 0081 DCL_MAXPARM = %X'38098';
; 0082
; 0083 STRUCTURE
; 0084 BBLOCK [O, P, S, E; N] =
; 0085 [N]
; 0086 (BBLOCK+O)
;
; 0087 !
; 0088 ! Macro to declare parameter list for TPARSE action routines.
; 0089 !
; 0090 MACRO
; M 0091 TPARSE_ARGS (NAME) =
; M 0092 BUILTIN AP;
; M 0093 BIND NAME = AP : REF BBLOCK;
; 0094 %;
; 0095
; 0096 FIELD
; 0097 QUAL_FIELDS =
; 0098 SET
; 0099 SUCC = [0,0,1,0],
; 0100 FAIL = [0,1,1,0],
; 0101 ALL = [0,0,2,0],
; 0102 BRIEF = [0,2,1,0]
; 0103 TES,
; 0104
; 0105 XDESCR_FIELDS =
; 0106 SET
; 0107 COUNT = [0,0,16,0],
; 0108 DTYPE = [0,16,8,0],
; 0109 CLASS = [0,24,8,0],
; 0110 ADDRESS = [1,0,32,0],
; 0111 POINTER = [2,0,32,0]
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 3
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0112 TES;
; 0113
; 0114 MACRO
; 0115 DESCR = BLOCK[DESCR_SIZE] FIELD(XDESCR_FIELDS) %;
; 0116 MACRO
; 0117 XDESCR = BLOCK[XDESCR_SIZE] FIELD(XDESCR_FIELDS) %;
; 0118 MACRO
; 0119 DYNAMIC = 2^24 OR DSC$K_DTYPE_T^16 %;
; 0120
; 0121 FORWARD ROUTINE
; 0122 TELL,
; 0123 PROMPT;
; 0124
; 0125 OWN
; 0126 PARSE_ERROR,
; 0127 QUAL_FLAGS : BLOCK[1] FIELD(QUAL_FIELDS),
; 0128 PARAM_COUNT,
; 0129 RAWBUF : VECTOR[NAM$C_MAXRSS, BYTE],
; 0130 PARSED : VECTOR[NAM$C_MAXRSS, BYTE],
; 0131 NAMEBUF : VECTOR[NAM$C_MAXRSS, BYTE],
; P 0132 ANAM : $NAM(
; P 0133 ESA=PARSED,
; P 0134 ESS=NAM$C_MAXRSS,
; P 0135 RSA=NAMEBUF,
; P 0136 RSS=NAM$C_MAXRSS
; 0137 ),
; P 0138 AFAB : $FAB( ! B_FNS is set in CNT_PARM
; P 0139 FNA=NAMEBUF,
; P 0140 NAM=ANAM
; 0141 ), ! Fields B_DNS & L_DNA may be set in SET_DEF
; 0142
; 0143 TPARSE_BLOCK : BBLOCK [TPA$K_LENGTH0]
; 0144 INITIAL (TPA$K_COUNT0, 2^24);
; 0145
; 0146 GLOBAL ROUTINE VALIDATE (START_ADD, CLI_CALLBACK) =
; 0147 BEGIN
; 0148
; 0149 OWN
; 0150 PUTMSGVEC : VECTOR[3]
; 0151 INITIAL(15^16 OR 2),
; 0152 GET_CMD : $CLIREQDESC (RQTYPE = GETCMD);
; 0153
; 0154 PDSLIT (FACILITY, 'VALIDATE');
; 0155 PSLIT (FOUND, ' File found: ');
; 0156 PSLIT (NOT_FOUND, ' File not found: ');
; 0157 PSLIT (SPEC_ERR, ' File specification error in: ');
; 0158
; 0159 EXTERNAL
; 0160 CLI_STB : VECTOR [0],
; 0161 CLI_KTB : VECTOR [0];
; 0162
; 0163 EXTERNAL ROUTINE
; 0164 LIB$TPARSE;
; 0165
; 0166 REGISTER
; 0167 STATUS;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 4
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0168
; 0169 LOCAL
; 0170 TELL_FN,
; 0171 TELL_FNL;
; 0172
; 0173 (.CLI_CALLBACK) (GET_CMD);
; 0174 TPARSE_BLOCK[TPA$L_STRINGCNT] = .GET_CMD[CLI$W_RQSIZE];
; 0175 TPARSE_BLOCK[TPA$L_STRINGPTR] = .GET_CMD[CLI$A_RQADDR];
; 0176 TPARSE_BLOCK[TPA$V_ABBREV] = ON;
; 0177 STATUS = LIB$TPARSE (TPARSE_BLOCK, CLI_STB, CLI_KTB);
; 0178 IF .PARSE_ERROR NEQ 0 THEN STATUS = .PARSE_ERROR;
; 0179 IF .STATUS THEN IF .PARAM_COUNT EQL 0 THEN STATUS = PROMPT();
; 0180 IF .STATUS ! Else there was an error in parsing, or perhaps no file name
; 0181 ! ! (especially likely in batch mode).
; 0182 THEN
; 0183 BEGIN
; 0184 STATUS = $PARSE(FAB=AFAB);
; 0185
; 0186 ! Show the user the best version of the file name possible.
; 0187 ! The file name is put into Namebuf by Tparse, then into Parsed by
; 0188 ! $Parse (if it is successfull, and for some error conditions), then
; 0189 ! into Namebuf by $Search if it is successfull. Note that that if the
; 0190 ! name is in Namebuf, the length may be in either the FAB or the NAM
; 0191 ! block.
; 0192
; 0193 IF .ANAM[NAM$B_ESL] EQL 0
; 0194 THEN
; 0195 BEGIN
; 0196 TELL_FN = NAMEBUF;
; 0197 TELL_FNL = .AFAB[FAB$B_FNS]
; 0198 END
; 0199 ELSE
; 0200 BEGIN
; 0201 TELL_FN = PARSED;
; 0202 TELL_FNL = .ANAM[NAM$B_ESL]
; 0203 END;
; 0204 IF ( .STATUS EQL RMS$_NORMAL
; 0205 OR .STATUS EQL RMS$_DNF ! These two errors result in severity
; 0206 OR .STATUS EQL RMS$_DNR) ! of Informational, because they are
; 0207 ! ! very close to file-not-found.
; 0208 THEN
; 0209 BEGIN
; 0210 IF .STATUS EQL RMS$_NORMAL THEN STATUS = $SEARCH(FAB=AFAB);
; 0211 IF .STATUS ! Now we see if the caller wants the result logged.
; 0212 THEN
; 0213 BEGIN
; 0214 STATUS = SS$_NORMAL; ! Instead of RMS$_SUCCESS
; 0215 IF .QUAL_FLAGS[SUCC]
; 0216 THEN TELL(NAMEBUF, .ANAM[NAM$B_RSL],
; 0217 FOUND, STRING_LENGTH(FOUND),
; 0218 .QUAL_FLAGS[BRIEF])
; 0219 END
; 0220 ELSE ! STATUS from $Search was bad, or we had DNF or DNR.
; 0221 BEGIN
; 0222 STATUS<0,3,0> = 3; ! Severity = Information
; 0223 IF .QUAL_FLAGS[FAIL]
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 5
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0224 THEN
; 0225 BEGIN
; 0226 TELL(.TELL_FN, .TELL_FNL,
; 0227 NOT_FOUND, STRING_LENGTH(NOT_FOUND),
; 0228 .QUAL_FLAGS[BRIEF]);
; 0229 PUTMSGVEC[1] = .STATUS;
; 0230 PUTMSGVEC[2] = .AFAB[FAB$L_STV];
; 0231 $PUTMSG(MSGVEC=PUTMSGVEC, FACNAM=DESCRIPTOR(FACILITY))
; 0232 END
; 0233 END
; 0234 END
; 0235 ELSE
; 0236 BEGIN
; 0237 STATUS<0,3,0> = 0; ! Severity = Warn
; 0238 TELL(.TELL_FN, .TELL_FNL,
; 0239 SPEC_ERR, STRING_LENGTH(SPEC_ERR), OFF) ! i.e. BRIEF = OFF
; 0240 END
; 0241 END;
; 0242 RETURN .STATUS
; 0243 END;
.TITLE VALIDATE
.PSECT $PLIT$,NOWRT,NOEXE,2
P.AAA: .ASCII \VALIDATE\ ; ;
P.AAB: .LONG 8 ; ;
.ADDRESS S\1 ; ;
P.AAC: .ASCII \ File found: \ ; ;
P.AAD: .ASCII \ File not found: \ ; ;
P.AAE: .ASCII \ File specification error in: \ ; ;
.PSECT $OWN$,NOEXE,2
PARSE_ERROR:
.BLKB 4
QUAL_FLAGS:
.BLKB 4
PARAM_COUNT:
.BLKB 4
RAWBUF: .BLKB 128
PARSED: .BLKB 128
NAMEBUF:.BLKB 128
ANAM: .BYTE 2 ; ;
.BYTE 56 ; ;
.BYTE -128 ; ;
.BYTE 0 ; ;
.ADDRESS NAMEBUF ; ;
.WORD 0 ; ;
.BYTE -128 ; ;
.BYTE 0 ; ;
.ADDRESS PARSED ; ;
.LONG 0 ; ;
.WORD 0[8] ; ;
.WORD 0[3] ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 6
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
.WORD 0[3] ; ;
.LONG 0 ; ;
.LONG 0 ; ;
AFAB: .BYTE 3 ; ;
.BYTE 80 ; ;
.WORD 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.WORD 0 ; ;
.BYTE 2 ; ;
.BYTE 0 ; ;
.LONG 0 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.BYTE 2 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.ADDRESS ANAM ; ;
.ADDRESS NAMEBUF ; ;
.LONG 0 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.WORD 0 ; ;
.LONG 0 ; ;
.WORD 0 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.LONG 0[2] ; ;
TPARSE_BLOCK:
.LONG 8, 33554432 ; ;
.BLKB 28
PUTMSGVEC:
.LONG 983042 ; ;
.BLKB 8
GET_CMD:.BYTE 1 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.BYTE 0 ; ;
.LONG 0 ; ;
.LONG 0, 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
.LONG 0 ; ;
S\1= P.AAA
S\1\D= P.AAB
S\2= P.AAC
S\3= P.AAD
S\4= P.AAE
.EXTRN CLI_STB, CLI_KTB, LIB$TPARSE, SYS$PARSE, SYS$SEARCH, SYS$PUTMSG
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 7
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
.PSECT $CODE$,NOWRT,2
.ENTRY VALIDATE, ^M ;VALIDATE, Save R2,R3,R4,R5 ; 0146
MOVAB W^QUAL_FLAGS, R5 ;QUAL_FLAGS, R5 ;
PUSHAB 576(R5) ;GET_CMD ; 0173
CALLS #1, @8(AP) ;#1, @CLI_CALLBACK ;
MOVZWL 584(R5), 536(R5) ;GET_CMD+8, TPARSE_BLOCK+8 ; 0174
MOVL 588(R5), 540(R5) ;GET_CMD+12, TPARSE_BLOCK+12 ; 0175
BISB2 #2, 532(R5) ;#2, TPARSE_BLOCK+4 ; 0176
PUSHAB W^CLI_KTB ;CLI_KTB ; 0177
PUSHAB W^CLI_STB ;CLI_STB ;
PUSHAB 528(R5) ;TPARSE_BLOCK ;
CALLS #3, W^LIB$TPARSE ;#3, LIB$TPARSE ;
MOVL R0, R2 ;R0, STATUS ;
MOVL -4(R5), R0 ;PARSE_ERROR, R0 ; 0178
BEQL 1$ ;1$ ;
MOVL R0, R2 ;R0, STATUS ;
1$: BLBC R2, 2$ ;STATUS, 2$ ; 0179
TSTL 4(R5) ;PARAM_COUNT ;
BNEQ 2$ ;2$ ;
CALLS #0, W^PROMPT ;#0, PROMPT ;
MOVL R0, R2 ;R0, STATUS ;
2$: BLBS R2, 3$ ;STATUS, 3$ ; 0180
BRW 12$ ;12$ ;
3$: PUSHAB 448(R5) ;AFAB ; 0184
CALLS #1, @#SYS$PARSE ;#1, @#SYS$PARSE ;
MOVL R0, R2 ;R0, STATUS ;
MOVZBL 403(R5), R0 ;ANAM+11, R0 ; 0193
BNEQ 4$ ;4$ ;
MOVAB 264(R5), R4 ;NAMEBUF, TELL_FN ; 0196
MOVZBL 500(R5), R3 ;AFAB+52, TELL_FNL ; 0197
BRB 5$ ;5$ ; 0193
4$: MOVAB 136(R5), R4 ;PARSED, TELL_FN ; 0201
MOVL R0, R3 ;R0, TELL_FNL ; 0202
5$: CLRL R0 ;R0 ; 0204
CMPL R2, #65537 ;STATUS, #65537 ;
BNEQ 6$ ;6$ ;
INCL R0 ;R0 ;
BRB 7$ ;7$ ;
6$: CMPL R2, #114762 ;STATUS, #114762 ; 0205
BEQL 7$ ;7$ ;
CMPL R2, #98930 ;STATUS, #98930 ; 0206
BNEQ 10$ ;10$ ;
7$: BLBC R0, 8$ ;R0, 8$ ; 0210
PUSHAB 448(R5) ;AFAB ;
CALLS #1, @#SYS$SEARCH ;#1, @#SYS$SEARCH ;
MOVL R0, R2 ;R0, STATUS ;
8$: BLBC R2, 9$ ;STATUS, 9$ ; 0211
MOVL #1, R2 ;#1, STATUS ; 0214
BLBC (R5), 12$ ;QUAL_FLAGS, 12$ ; 0215
EXTZV #2, #1, (R5), -(SP) ;#2, #1, QUAL_FLAGS, -(SP) ; 0216
PUSHL #13 ;#13 ;
PUSHAB W^S\2 ;S\2 ;
MOVZBL 395(R5), -(SP) ;ANAM+3, -(SP) ;
PUSHAB 264(R5) ;NAMEBUF ;
BRB 11$ ;11$ ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 8
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
9$: INSV #3, #0, #3, R2 ;#3, #0, #3, STATUS ; 0222
BBC #1, (R5), 12$ ;#1, QUAL_FLAGS, 12$ ; 0223
EXTZV #2, #1, (R5), -(SP) ;#2, #1, QUAL_FLAGS, -(SP) ; 0226
PUSHL #17 ;#17 ;
PUSHAB W^S\3 ;S\3 ;
PUSHL R3 ;TELL_FNL ;
PUSHL R4 ;TELL_FN ;
CALLS #5, W^TELL ;#5, TELL ;
MOVL R2, 568(R5) ;STATUS, PUTMSGVEC+4 ; 0229
MOVL 460(R5), 572(R5) ;AFAB+12, PUTMSGVEC+8 ; 0230
PUSHAB W^S\1\D ;S\1\D ; 0231
CLRL -(SP) ;-(SP) ;
PUSHAB 564(R5) ;PUTMSGVEC ;
CALLS #3, @#SYS$PUTMSG ;#3, @#SYS$PUTMSG ;
BRB 12$ ;12$ ; 0204
10$: BICB2 #7, R2 ;#7, STATUS ; 0237
MOVQ #30, -(SP) ;#30, -(SP) ; 0238
PUSHAB W^S\4 ;S\4 ;
PUSHL R3 ;TELL_FNL ;
PUSHL R4 ;TELL_FN ;
11$: CALLS #5, W^TELL ;#5, TELL ;
12$: MOVL R2, R0 ;STATUS, R0 ; 0242
RET ; ; 0146
; Routine Size: 290 bytes
; 0244
; 0245 ROUTINE PROMPT =
; 0246 BEGIN
; 0247
; 0248 OWN
; 0249 RESULT : DESCR INITIAL(DYNAMIC);
; 0250
; 0251 REGISTER
; 0252 STATUS;
; 0253
; 0254 EXTERNAL
; 0255 CLI_STB : VECTOR [0],
; 0256 CLI_KTB : VECTOR [0];
; 0257
; 0258 EXTERNAL ROUTINE
; 0259 OTS$SFREE1_DD,
; 0260 LIB$TPARSE,
; 0261 LIB$GET_COMMAND;
; 0262
; 0263 PDSLIT (PROMPT_STR, ' File: ');
; 0264
; 0265 DO
; 0266 STATUS = LIB$GET_COMMAND(RESULT, DESCRIPTOR(PROMPT_STR))
; 0267 UNTIL (IF .STATUS THEN .RESULT[COUNT] GTR 0 ELSE TRUE);
; 0268 IF .STATUS EQL RMS$_EOF THEN (STATUS = DCL_INSFPRM)
; 0269 ELSE IF .STATUS
; 0270 THEN
; 0271 BEGIN
; 0272 TPARSE_BLOCK[TPA$L_STRINGCNT] = .RESULT[COUNT];
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 9
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
; 0273 TPARSE_BLOCK[TPA$L_STRINGPTR] = .RESULT[ADDRESS];
; 0274 STATUS = LIB$TPARSE (TPARSE_BLOCK, CLI_STB, CLI_KTB);
; 0275 OTS$SFREE1_DD(RESULT);
; 0276 IF .PARSE_ERROR NEQ 0 THEN STATUS = .PARSE_ERROR;
; 0277 IF .STATUS THEN IF .PARAM_COUNT EQL 0 THEN STATUS = DCL_NULFIL
; 0278 END;
; 0279 RETURN .STATUS
; 0280 END;
.PSECT $PLIT$,NOWRT,NOEXE,2
P.AAF: .ASCII \ File: \ ; ;
.BLKB 1
P.AAG: .LONG 7 ; ;
.ADDRESS S\5 ; ;
.PSECT $OWN$,NOEXE,2
RESULT: .LONG 34471936 ; ;
.BLKB 4
S\5= P.AAF
S\5\D= P.AAG
.EXTRN OTS$SFREE1_DD, LIB$GET_COMMAND
.PSECT $CODE$,NOWRT,2
PROMPT: .WORD ^M ;Save R2,R3 ; 0245
MOVAB W^RESULT, R3 ;RESULT, R3 ;
1$: PUSHAB W^S\5\D ;S\5\D ; 0266
PUSHL R3 ;R3 ;
CALLS #2, W^LIB$GET_COMMAND ;#2, LIB$GET_COMMAND ;
MOVL R0, R2 ;R0, STATUS ;
BLBC R2, 2$ ;STATUS, 2$ ; 0267
TSTW (R3) ;RESULT ;
BLEQU 1$ ;1$ ;
2$: CMPL R2, #98938 ;STATUS, #98938 ; 0268
BNEQ 3$ ;3$ ;
MOVL #229448, R2 ;#229448, STATUS ;
BRB 5$ ;5$ ;
3$: BLBC R2, 5$ ;STATUS, 5$ ; 0269
MOVZWL (R3), -68(R3) ;RESULT, TPARSE_BLOCK+8 ; 0272
MOVL 4(R3), -64(R3) ;RESULT+4, TPARSE_BLOCK+12 ; 0273
PUSHAB W^CLI_KTB ;CLI_KTB ; 0274
PUSHAB W^CLI_STB ;CLI_STB ;
PUSHAB -76(R3) ;TPARSE_BLOCK ;
CALLS #3, W^LIB$TPARSE ;#3, LIB$TPARSE ;
MOVL R0, R2 ;R0, STATUS ;
PUSHL R3 ;R3 ; 0275
CALLS #1, W^OTS$SFREE1_DD ;#1, OTS$SFREE1_DD ;
MOVL -608(R3), R0 ;PARSE_ERROR, R0 ; 0276
BEQL 4$ ;4$ ;
MOVL R0, R2 ;R0, STATUS ;
4$: BLBC R2, 5$ ;STATUS, 5$ ; 0277
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 10
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
TSTL -600(R3) ;PARAM_COUNT ;
BNEQ 5$ ;5$ ;
MOVL #229600, R2 ;#229600, STATUS ;
5$: MOVL R2, R0 ;STATUS, R0 ; 0279
RET ; ; 0245
; Routine Size: 114 bytes
; 0281
; 0282
; 0283 ROUTINE TELL (FNAM, FNAM_LEN, PREFIX, PREFIX_LEN, BRIEF_FLAG) =
; 0284 BEGIN
; 0285
; 0286 LOCAL
; 0287 MESSAGE : DESCR;
; 0288
; 0289 REGISTER
; 0290 RSZ;
; 0291
; 0292 EXTERNAL ROUTINE
; 0293 LIB$PUT_OUTPUT;
; 0294
; 0295 IF .BRIEF_FLAG
; 0296 THEN ! Setup to send only file name as message.
; 0297 BEGIN
; 0298 MESSAGE[COUNT] = .FNAM_LEN;
; 0299 MESSAGE[ADDRESS] = .FNAM
; 0300 END
; 0301 ELSE ! Put label and file name into message.
; 0302 BEGIN
; 0303 RSZ = .PREFIX_LEN + .FNAM_LEN;
; 0304 CH$COPY( .PREFIX_LEN, CH$PTR(.PREFIX),
; 0305 .FNAM_LEN, CH$PTR(.FNAM),
; 0306 %C' ', .RSZ, CH$PTR(RAWBUF));
; 0307 MESSAGE[COUNT] = .RSZ;
; 0308 MESSAGE[ADDRESS] = RAWBUF
; 0309 END;
; 0310
; 0311 ! Now send the message.
; 0312
; 0313 LIB$PUT_OUTPUT(MESSAGE)
; 0314 END;
.EXTRN LIB$PUT_OUTPUT
TELL: .WORD ^M ;Save R2,R3,R4,R5,R6,R7,R8 ; 0283
SUBL2 #8, SP ;#8, SP ;
BLBC 20(AP), 1$ ;BRIEF_FLAG, 1$ ; 0295
MOVW 8(AP), (SP) ;FNAM_LEN, MESSAGE ; 0298
MOVL 4(AP), 4(SP) ;FNAM, MESSAGE+4 ; 0299
BRB 3$ ;3$ ; 0295
1$: ADDL3 8(AP), 16(AP), R6 ;FNAM_LEN, PREFIX_LEN, RSZ ; 0303
MOVL R6, R8 ;RSZ, R8 ; 0306
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 11
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (1)
MOVAB W^RAWBUF, R7 ;RAWBUF, R7 ;
MOVC5 16(AP), @12(AP), #32, R8, (R7) ;PREFIX_LEN, @PREFIX, #32, R8, (R7) ; 0304
BGEQ 2$ ;2$ ;
ADDL2 16(AP), R7 ;PREFIX_LEN, R7 ;
SUBL2 16(AP), R8 ;PREFIX_LEN, R8 ;
MOVC5 8(AP), @4(AP), #32, R8, (R7) ;FNAM_LEN, @FNAM, #32, R8, (R7) ;
2$: MOVW R6, (SP) ;RSZ, MESSAGE ; 0307
MOVAB W^RAWBUF, 4(SP) ;RAWBUF, MESSAGE+4 ; 0308
3$: PUSHL SP ;SP ; 0313
CALLS #1, W^LIB$PUT_OUTPUT ;#1, LIB$PUT_OUTPUT ;
RET ; ; 0283
; Routine Size: 77 bytes
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 12
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0315 ! LIB$TPARSE SECTION
; 0316 ! ********** *******
; 0317
; 0318 ! There are two sets of LIB$TPARSE states, i.e. two $INIT_STATE macro
; 0319 ! calls. The first is for the scan of the command line and/or the
; 0320 ! response to prompting. The second is called from the action routines
; 0321 ! of the first, and is for parsing a file name, which may be the (only)
; 0322 ! parameter or a /DEFAULT= spec.
; 0323
; 0324 ! Action routines used by both parsers --
; 0325
; 0326 ROUTINE SAVEPUNC =
; 0327 BEGIN
; 0328
; 0329 TPARSE_ARGS(TPA);
; 0330
; 0331 BIND
; 0332 TARGET = TPA[TPA$L_PARAM] : REF XDESCR;
; 0333
; 0334 TARGET[POINTER] = CH$MOVE(1, CH$PTR(TPA[TPA$L_CHAR]), .TARGET[POINTER]);
; 0335 TARGET[COUNT] = .TARGET[COUNT] + 1;
; 0336 RETURN SS$_NORMAL
; 0337 END;
SAVEPUNC:
.WORD ^M ;Save R2,R3,R4,R5,R6 ; 0326
MOVAB 32(AP), R0 ;32(AP), R0 ; 0332
MOVL (R0), R6 ;(R0), R6 ; 0334
MOVC3 #1, 24(AP), @8(R6) ;#1, 24(TPA), @8(R6) ;
MOVL R3, 8(R6) ;R3, 8(R6) ;
INCW (R6) ;(R6) ; 0335
MOVL #1, R0 ;#1, R0 ; 0336
RET ; ; 0326
; Routine Size: 25 bytes
; 0338
; 0339 ROUTINE SAVESYM =
; 0340 BEGIN
; 0341
; 0342 TPARSE_ARGS(TPA);
; 0343
; 0344 BIND
; 0345 TARGET = TPA[TPA$L_PARAM] : REF XDESCR;
; 0346
; 0347 TARGET[COUNT] = .TARGET[COUNT] + .TPA[TPA$L_TOKENCNT];
; 0348 TARGET[POINTER] = CH$MOVE(.TPA[TPA$L_TOKENCNT],
; 0349 CH$PTR(.TPA[TPA$L_TOKENPTR]),
; 0350 .TARGET[POINTER]);
; 0351 RETURN SS$_NORMAL
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 13
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0352 END;
SAVESYM:.WORD ^M ;Save R2,R3,R4,R5,R6 ; 0339
MOVAB 32(AP), R0 ;32(AP), R0 ; 0345
MOVL (R0), R6 ;(R0), R6 ; 0347
ADDW2 16(AP), (R6) ;16(TPA), (R6) ;
MOVC3 16(AP), @20(AP), @8(R6) ;16(TPA), @20(TPA), @8(R6) ; 0348
MOVL R3, 8(R6) ;R3, 8(R6) ;
MOVL #1, R0 ;#1, R0 ; 0351
RET ; ; 0339
; Routine Size: 28 bytes
; 0353
; 0354 ! Action routines for initial scan only --
; 0355
; 0356 ROUTINE BLANKS_ON: NOVALUE =
; 0357 BEGIN
; 0358
; 0359 TPARSE_ARGS(TPA);
; 0360
; 0361 TPA[TPA$V_BLANKS] = ON
; 0362 END;
BLANKS_ON:
.WORD ^M<> ;Save nothing ; 0356
BISB2 #1, 4(AP) ;#1, 4(TPA) ; 0361
RET ; ; 0356
; Routine Size: 7 bytes
; 0363
; 0364 ROUTINE BLANKS_OFF: NOVALUE =
; 0365 BEGIN
; 0366
; 0367 TPARSE_ARGS(TPA);
; 0368
; 0369 TPA[TPA$V_BLANKS] = OFF
; 0370 END;
BLANKS_OFF:
.WORD ^M<> ;Save nothing ; 0364
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 14
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
BICB2 #1, 4(AP) ;#1, 4(TPA) ; 0369
RET ; ; 0364
; Routine Size: 7 bytes
; 0371
; 0372 ! Routines called to clear bits set by TPARSE maskaddr/mask
; 0373
; 0374 ROUTINE NO_LOG: NOVALUE =
; 0375 QUAL_FLAGS[ALL] = 0;
NO_LOG: .WORD ^M<> ;Save nothing ; 0374
BICB2 #3, W^QUAL_FLAGS ;#3, QUAL_FLAGS ; 0375
RET ; ; 0374
; Routine Size: 8 bytes
; 0376
; 0377 ROUTINE NO_BR: NOVALUE =
; 0378 QUAL_FLAGS[BRIEF] = 0;
NO_BR: .WORD ^M<> ;Save nothing ; 0377
BICB2 #4, W^QUAL_FLAGS ;#4, QUAL_FLAGS ; 0378
RET ; ; 0377
; Routine Size: 8 bytes
; 0379
; 0380 ROUTINE IVDELIM: NOVALUE = ! Last gasp error message.
; 0381 IF .PARSE_ERROR EQL 0 THEN PARSE_ERROR = DCL_IVDELIM;
IVDELIM:.WORD ^M<> ;Save nothing ; 0380
TSTL W^PARSE_ERROR ;PARSE_ERROR ; 0381
BNEQ 1$ ;1$ ;
MOVL #229648, W^PARSE_ERROR ;#229648, PARSE_ERROR ;
1$: RET ; ; 0380
; Routine Size: 18 bytes
; 0382
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 15
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0383
; 0384 ! Variables declared in the outer-most block, but not needed until
; 0385 ! this point (i. e. used only while parsing).
; 0386 OWN
; 0387 COLON_FLAG,
; 0388 DEFAULTBUF : VECTOR[NAM$C_MAXRSS, BYTE],
; 0389 RAWDESCR : XDESCR
; 0390 INITIAL(0, RAWBUF, CH$PTR(RAWBUF)),
; 0391 NAME : XDESCR, ! Descriptor of name string found by LIB$TPARSE
; 0392 NAME_TMP : XDESCR;
; 0393
; 0394
; 0395
; 0396 ! TPARSE action routine to parse a string to check for legitimate file
; 0397 ! name. LIB$TPARSE is called again to do the parsing. Any logical name
; 0398 ! translations necessary will be done by TRNLOG, called as an action
; 0399 ! routine by LIB$TPARSE.
; 0400 !
; 0401 ! The string to be parsed may be a parameter or follow /DEF=
; 0402 !
; 0403 ! Arguments:
; 0404 ! Standard calling sequence from LIB$TPARSE, with the "parameter"
; 0405 ! of the transition macro set to the address of a vector specific
; 0406 ! to the source of the string. This value is passed into CHECK as
; 0407 ! .TPA[TPA$L_PARAM]. The vector pointed to contains:
; 0408 ! - The address of the buffer in which to place the successfully
; 0409 ! parsed/expanded string.
; 0410 ! - The address of a routine for CHECK to call to record that the
; 0411 ! string has been successfully parsed, and in the case of a
; 0412 ! parameter, to check that the maximum parameter count is not
; 0413 ! exceeded.
; 0414 ! Implicitly, the string to be parsed is described by RAWDESCR.
; 0415 !
; 0416 ROUTINE CHECK =
; 0417 BEGIN
; 0418
; 0419 TPARSE_ARGS(TPA);
; 0420
; 0421 BIND
; 0422 ARGS = TPA[TPA$L_PARAM] : REF VECTOR[2];
; 0423
; 0424 OWN
; 0425 TPARSE_BLOCK : BBLOCK [TPA$K_LENGTH0]
; 0426 INITIAL (TPA$K_COUNT0, 2^24);
; 0427
; 0428 EXTERNAL
; 0429 FSPEC_STB : VECTOR [0],
; 0430 FSPEC_KTB : VECTOR [0];
; 0431
; 0432 EXTERNAL ROUTINE
; 0433 LIB$TPARSE;
; 0434
; 0435 REGISTER
; 0436 STATUS;
; 0437
; 0438 ! NAME is an extended descriptor of the resultant string of LIB$TPARSE
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 16
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0439 ! Its address is passed to various action routines by the TPARSE
; 0440 ! transitions. It is also known to Routine TRNLOG.
; 0441 NAME[COUNT] = 0;
; 0442 NAME[ADDRESS] = .ARGS[0];
; 0443 NAME[POINTER] = CH$PTR(.NAME[ADDRESS]);
; 0444 ! NAME_TMP is an auxiliary extended descriptor of the resultant string,
; 0445 ! used as in sub-states which may need to be unwound.
; 0446 NAME_TMP[COUNT] = 0;
; 0447 NAME_TMP[ADDRESS] = .ARGS[0];
; 0448 NAME_TMP[POINTER] = .NAME[POINTER];
; 0449 TPARSE_BLOCK[TPA$L_STRINGCNT] = .RAWDESCR[COUNT];
; 0450 TPARSE_BLOCK[TPA$L_STRINGPTR] = .RAWDESCR[ADDRESS];
; 0451 STATUS = LIB$TPARSE (TPARSE_BLOCK, FSPEC_STB, FSPEC_KTB);
; 0452 IF .PARSE_ERROR NEQ 0 THEN STATUS = .PARSE_ERROR;
; 0453 ! If successfull to this point, call the auxiliary (completion)
; 0454 ! routine whose address was passed in the argument vector of the
; 0455 ! transition which called CHECK.
; 0456 IF .STATUS THEN STATUS = (.ARGS[1]) ();
; 0457 ! Empty RAWDESCR
; 0458 RAWDESCR[COUNT] = 0;
; 0459 RAWDESCR[POINTER] = CH$PTR(.RAWDESCR[ADDRESS]);
; 0460 RETURN .STATUS
; 0461 END;
.PSECT $OWN$,NOEXE,2
COLON_FLAG:
.BLKB 4
DEFAULTBUF:
.BLKB 128
RAWDESCR:
.LONG 0 ; ;
.ADDRESS RAWBUF, RAWBUF ; ;
NAME: .BLKB 12
NAME_TMP:
.BLKB 12
TPARSE_BLOCK:
; INFO#192
; Multiple declaration of name in assembly source: TPARSE_BLOCK
.LONG 8, 33554432 ; ;
.BLKB 28
.EXTRN FSPEC_STB, FSPEC_KTB
.PSECT $CODE$,NOWRT,2
CHECK: .WORD ^M ;Save R2,R3,R4 ; 0416
MOVAB W^NAME+4, R4 ;NAME+4, R4 ;
MOVAB 32(AP), R0 ;32(AP), R0 ; 0422
CLRW -4(R4) ;NAME ; 0441
MOVL (R0), R3 ;(R0), R3 ; 0442
MOVL (R3), (R4) ;(R3), NAME+4 ;
MOVL (R4), 4(R4) ;NAME+4, NAME+8 ; 0443
CLRW 8(R4) ;NAME_TMP ; 0446
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 17
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
MOVL (R3), 12(R4) ;(R3), NAME_TMP+4 ; 0447
MOVL 4(R4), 16(R4) ;NAME+8, NAME_TMP+8 ; 0448
MOVZWL -16(R4), 28(R4) ;RAWDESCR, TPARSE_BLOCK+8 ; 0449
MOVL -12(R4), 32(R4) ;RAWDESCR+4, TPARSE_BLOCK+12 ; 0450
PUSHAB W^FSPEC_KTB ;FSPEC_KTB ; 0451
PUSHAB W^FSPEC_STB ;FSPEC_STB ;
PUSHAB 20(R4) ;TPARSE_BLOCK ;
CALLS #3, W^LIB$TPARSE ;#3, LIB$TPARSE ;
MOVL R0, R2 ;R0, STATUS ;
MOVL -764(R4), R0 ;PARSE_ERROR, R0 ; 0452
BEQL 1$ ;1$ ;
MOVL R0, R2 ;R0, STATUS ;
1$: BLBC R2, 2$ ;STATUS, 2$ ; 0456
CALLS #0, @4(R3) ;#0, @4(R3) ;
MOVL R0, R2 ;R0, STATUS ;
2$: CLRW -16(R4) ;RAWDESCR ; 0458
MOVL -12(R4), -8(R4) ;RAWDESCR+4, RAWDESCR+8 ; 0459
MOVL R2, R0 ;STATUS, R0 ; 0460
RET ; ; 0416
; Routine Size: 97 bytes
; 0462
; 0463 ! Completion routines for CHECK --
; 0464
; 0465 ROUTINE CNT_PARM = ! For parameter
; 0466 BEGIN
; 0467 AFAB[FAB$B_FNS] = .NAME[COUNT];
; 0468 PARAM_COUNT = .PARAM_COUNT+1;
; 0469 IF (.PARAM_COUNT GTR MAX_PARAMS)
; 0470 THEN PARSE_ERROR = DCL_MAXPARM
; 0471 ELSE SS$_NORMAL
; 0472 END;
CNT_PARM:
.WORD ^M<> ;Save nothing ; 0465
MOVB W^NAME, W^AFAB+52 ;NAME, AFAB+52 ; 0467
INCL W^PARAM_COUNT ;PARAM_COUNT ; 0468
CMPL W^PARAM_COUNT, #1 ;PARAM_COUNT, #1 ; 0469
BLEQ 1$ ;1$ ;
MOVL #229528, W^PARSE_ERROR ;#229528, PARSE_ERROR ; 0470
MOVL #229528, R0 ;#229528, R0 ; 0469
RET ; ;
1$: MOVL #1, R0 ;#1, R0 ;
RET ; ; 0465
; Routine Size: 41 bytes
; 0473
; 0474 ROUTINE SET_DEF = ! For default string
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 18
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0475 BEGIN
; 0476 AFAB[FAB$B_DNS] = .NAME[COUNT];
; 0477 AFAB[FAB$L_DNA] = DEFAULTBUF;
; 0478 RETURN SS$_NORMAL
; 0479 END;
SET_DEF:.WORD ^M<> ;Save nothing ; 0474
MOVB W^NAME, W^AFAB+53 ;NAME, AFAB+53 ; 0476
MOVAB W^DEFAULTBUF, W^AFAB+48 ;DEFAULTBUF, AFAB+48 ; 0477
MOVL #1, R0 ;#1, R0 ; 0478
RET ; ; 0474
; Routine Size: 20 bytes
; 0480
; 0481 ! Argument lists for CHECK
; 0482
; 0483 OWN
; 0484 PARAMVEC : VECTOR[2]
; 0485 INITIAL(NAMEBUF, CNT_PARM),
; 0486 DEFVEC : VECTOR[2]
; 0487 INITIAL(DEFAULTBUF, SET_DEF);
; 0488
; 0489 ! Routines for file-spec scan only --
; 0490
; 0491 ROUTINE MOVPART: NOVALUE =
; 0492 BEGIN
; 0493
; 0494 NAME[COUNT] = .NAME[COUNT] + .NAME_TMP[COUNT];
; 0495 NAME_TMP[COUNT] = 0;
; 0496 NAME[POINTER] = .NAME_TMP[POINTER]
; 0497
; 0498 END;
.PSECT $OWN$,NOEXE,2
PARAMVEC:
.ADDRESS NAMEBUF, CNT_PARM ; ;
DEFVEC: .ADDRESS DEFAULTBUF, SET_DEF ; ;
.PSECT $CODE$,NOWRT,2
MOVPART:.WORD ^M ;Save R2 ; 0491
MOVAB W^NAME_TMP, R2 ;NAME_TMP, R2 ;
ADDW2 (R2), -12(R2) ;NAME_TMP, NAME ; 0494
CLRW (R2) ;NAME_TMP ; 0495
MOVL 8(R2), -4(R2) ;NAME_TMP+8, NAME+8 ; 0496
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 19
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
RET ; ; 0491
; Routine Size: 19 bytes
; 0499
; 0500 ROUTINE CLEAN: NOVALUE =
; 0501 BEGIN
; 0502
; 0503 NAME_TMP[COUNT] = 0;
; 0504 NAME_TMP[POINTER] = .NAME[POINTER]
; 0505
; 0506 END;
CLEAN: .WORD ^M<> ;Save nothing ; 0500
CLRW W^NAME_TMP ;NAME_TMP ; 0503
MOVL W^NAME+8, W^NAME_TMP+8 ;NAME+8, NAME_TMP+8 ; 0504
RET ; ; 0500
; Routine Size: 14 bytes
; 0507
; 0508
; 0509 ROUTINE TRNLOG =
; 0510 BEGIN
; 0511
; R0513 !
; R0514 ! TRANSLATE LOGICAL NAME RECURSIVELY
; R0515 !
; R0516 ! LOGNAM - ADDRESS OF LOGICAL NAME STRING DESCRIPTOR
; R0517 ! RSLLEN - ADDRESS OF WORD TO RECEIVE LENGTH OF RESULTANT
; R0518 ! NAME STRING
; R0519 ! RSLBUF - ADDRESS OF RESULT STRING BUFFER DESCRIPTOR
; R0520 ! TABLE - ADDRESS OF BYTE TO STORE TRANSLATION TABLE NUMBER
; R0521 ! ACMODE - ADDRESS OF BYTE TO STORE ASSIGNMENT ACCESS MODE
; R0522 ! DSBMSK - TABLE SEARCH DISABLE MASK
; R0523 !
; R0524
; R0525
; R0526
; R0527
; MR0528 KEYWORDMACRO $TRNLOGR(LOGNAM=0,RSLLEN=0,RSLBUF=0,TABLE=0,ACMODE=0,DSBMSK=0)=
; MR0529 (
; MR0530 EXTERNAL ROUTINE SYS_TRNLOG;
; MR0531 SYS_TRNLOG(LOGNAM,RSLLEN,RSLBUF,TABLE,ACMODE,DSBMSK)
; R0532 ) %;
; R0533
; 0533 REQUIRE 'HANDY.REQ';
; 0534
; 0535 ! Does a logical name translation on the current string.
; 0536 ! The translation is recursive on two levels:
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 20
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0537 ! a) Subroutine SYS_TRNLOG does a recursive translation on the
; 0538 ! entire string.
; 0539 ! b) If the returned string contains a :, then the portion before
; 0540 ! the : is translated by another call to SYS_TRNLOG.
; 0541 ! Finally, if the original string was terminated by a : and the result
; 0542 ! string contains no punctuation, then terminate the result with a : .
; 0543
; 0544 REGISTER
; 0545 STATUS;
; 0546
; 0547 LOCAL
; 0548 RLEN;
; 0549
; 0550 OWN
; 0551 PIECE : XDESCR,
; 0552 SDESCR : DESCR,
; 0553 RDESCR : DESCR,
; 0554 TRN_BUF : VECTOR[NAM$C_MAXRSS, BYTE];
; 0555
; 0556 PIECE[COUNT] = 0;
; 0557 SDESCR[COUNT] = .NAME[COUNT];
; 0558 RDESCR[COUNT] = NAM$C_MAXRSS;
; 0559 SDESCR[ADDRESS] = .NAME[ADDRESS];
; 0560 RDESCR[ADDRESS] = TRN_BUF;
; 0561 DO BEGIN
; 0562 ! Call SYS_TRNLOG ---
; 0563 STATUS = $TRNLOGR(LOGNAM=SDESCR, RSLLEN=RLEN, RSLBUF=RDESCR);
; 0564 IF .STATUS EQL SS$_NORMAL
; 0565 THEN
; 0566 IF (INCR I FROM 1 TO .RLEN-1
; 0567 DO
; 0568 IF CH$RCHAR(CH$PTR(.RDESCR[ADDRESS], .I)) EQL %C':'
; 0569 THEN
; 0570 BEGIN
; 0571
; 0572 REGISTER
; 0573 TEMP;
; 0574 COLON_FLAG = FALSE;
; 0575 SDESCR[COUNT] = .I;
; 0576 TEMP = .SDESCR[ADDRESS];
; 0577 SDESCR[ADDRESS] = .RDESCR[ADDRESS];
; 0578 RDESCR[ADDRESS] = .TEMP;
; 0579 IF .PIECE[COUNT] NEQ 0 THEN ! Add old piece.
; 0580 CH$MOVE(.PIECE[COUNT], .PIECE[POINTER],
; 0581 CH$PTR(.SDESCR[ADDRESS], .RLEN));
; 0582 PIECE[POINTER] = CH$PTR(.SDESCR[ADDRESS], .SDESCR[COUNT]);
; 0583 PIECE[COUNT] = .PIECE[COUNT] + .RLEN - .SDESCR[COUNT];
; 0584 EXITLOOP 0
; 0585 END)
; 0586 EQL -1
; 0587 THEN EXITLOOP
; 0588 END
; 0589 WHILE (.STATUS EQL SS$_NORMAL);
; 0590
; 0591 IF .STATUS
; 0592 THEN
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 21
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
; 0593 BEGIN
; 0594 IF .STATUS EQL SS$_NOTRAN THEN STATUS = SS$_NORMAL;
; 0595 IF .COLON_FLAG
; 0596 THEN
; 0597 BEGIN
; 0598
; 0599 REGISTER
; 0600 NEXT_PUNC;
; 0601
; 0602 PSLIT(PUNC_LIST, '.;[]<>');
; 0603
; 0604 COLON_FLAG = FALSE;
; 0605 IF (INCR NEXT_PUNC FROM 0 TO STRING_LENGTH(PUNC_LIST) - 1
; 0606 DO IF NOT CH$FAIL(CH$FIND_CH(.RDESCR[COUNT], CH$PTR(.RDESCR[ADDRESS]),
; 0607 CH$RCHAR(CH$PTR(PUNC_LIST, .NEXT_PUNC))))
; 0608 THEN EXITLOOP 0)
; 0609 THEN
; 0610 BEGIN
; 0611 CH$WCHAR(%C':', CH$PTR(.RDESCR[ADDRESS], .RLEN));
; 0612 RLEN = .RLEN + 1
; 0613 END
; 0614 END;
; 0615
; 0616 NAME[COUNT] = .RLEN + .PIECE[COUNT];
; 0617 NAME[POINTER] = CH$COPY(.RLEN, CH$PTR(.RDESCR[ADDRESS]),
; 0618 .PIECE[COUNT], .PIECE[POINTER],
; 0619 %C' ', ! Effectively ignored.
; 0620 .NAME[COUNT], CH$PTR(.NAME[ADDRESS]));
; 0621 NAME_TMP[POINTER] = .NAME[POINTER]
; 0622 END;
; 0623
; 0624 RETURN .STATUS
; 0625 END; ! TRNLOG
.PSECT $PLIT$,NOWRT,NOEXE,2
P.AAH: .ASCII \.;[]<>\ ; ;
.PSECT $OWN$,NOEXE,2
PIECE: .BLKB 12
SDESCR: .BLKB 8
RDESCR: .BLKB 8
TRN_BUF:.BLKB 128
S\6= P.AAH
.EXTRN SYS_TRNLOG
.PSECT $CODE$,NOWRT,2
TRNLOG: .WORD ^M ;Save R2,R3,R4,R5,R6,R7,R8,R9,R10 ; 0509
MOVAB W^RDESCR+4, R10 ;RDESCR+4, R10 ;
SUBL2 #4, SP ;#4, SP ;
CLRW -24(R10) ;PIECE ; 0556
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 22
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
MOVW -100(R10), -12(R10) ;NAME, SDESCR ; 0557
MOVZBW #128, -4(R10) ;#128, RDESCR ; 0558
MOVL -96(R10), -8(R10) ;NAME+4, SDESCR+4 ; 0559
MOVAB 4(R10), (R10) ;TRN_BUF, RDESCR+4 ; 0560
1$: CLRQ -(SP) ;-(SP) ; 0563
CLRL -(SP) ;-(SP) ;
PUSHAB -4(R10) ;RDESCR ;
PUSHAB 16(SP) ;RLEN ;
PUSHAB -12(R10) ;SDESCR ;
CALLS #6, W^SYS_TRNLOG ;#6, SYS_TRNLOG ;
MOVL R0, R6 ;R0, STATUS ;
CLRL R8 ;R8 ; 0564
CMPL R6, #1 ;STATUS, #1 ;
BNEQ 6$ ;6$ ;
INCL R8 ;R8 ;
CLRL R7 ;I ; 0566
BRB 4$ ;4$ ;
2$: CMPB @0(R10)[R7], #58 ;@RDESCR+4[I], #58 ; 0568
BNEQ 4$ ;4$ ;
CLRL -244(R10) ;COLON_FLAG ; 0574
MOVW R7, -12(R10) ;I, SDESCR ; 0575
MOVL -8(R10), R0 ;SDESCR+4, TEMP ; 0576
MOVL (R10), -8(R10) ;RDESCR+4, SDESCR+4 ; 0577
MOVL R0, (R10) ;TEMP, RDESCR+4 ; 0578
MOVZWL -24(R10), R1 ;PIECE, R1 ; 0579
BEQL 3$ ;3$ ;
ADDL3 (SP), -8(R10), R0 ;RLEN, SDESCR+4, R0 ; 0581
MOVC3 R1, @-16(R10), (R0) ;R1, @PIECE+8, (R0) ; 0580
3$: MOVZWL -12(R10), R0 ;SDESCR, R0 ; 0582
MOVAB @-8(R10)[R0], -16(R10) ;@SDESCR+4[R0], PIECE+8 ;
MOVZWL -24(R10), R0 ;PIECE, R0 ; 0583
ADDL2 (SP), R0 ;RLEN, R0 ;
SUBW3 -12(R10), R0, -24(R10) ;SDESCR, R0, PIECE ;
CLRL R0 ;R0 ; 0584
BRB 5$ ;5$ ;
4$: AOBLSS (SP), R7, 2$ ;RLEN, I, 2$ ; 0566
MNEGL #1, R0 ;#1, R0 ;
5$: CMPL R0, #-1 ;R0, #-1 ; 0586
BEQL 7$ ;7$ ;
6$: BLBS R8, 1$ ;R8, 1$ ; 0589
7$: BLBC R6, 13$ ;STATUS, 13$ ; 0591
CMPL R6, #1577 ;STATUS, #1577 ; 0594
BNEQ 8$ ;8$ ;
MOVL #1, R6 ;#1, STATUS ;
8$: BLBC -244(R10), 11$ ;COLON_FLAG, 11$ ; 0595
CLRL -244(R10) ;COLON_FLAG ; 0604
CLRL R2 ;NEXT_PUNC ; 0605
9$: LOCC W^S\6[R2], -4(R10), @0(R10) ;S\6[NEXT_PUNC], RDESCR, @RDESCR+4 ; 0606
BNEQ 10$ ;10$ ;
CLRL R1 ;R1 ;
10$: TSTL R1 ;R1 ; 0607
BNEQ 11$ ;11$ ;
AOBLEQ #5, R2, 9$ ;#5, NEXT_PUNC, 9$ ; 0605
ADDL3 (SP), (R10), R0 ;RLEN, RDESCR+4, R0 ; 0611
MOVB #58, (R0) ;#58, (R0) ;
INCL (SP) ;RLEN ; 0612
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 23
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (2)
11$: ADDW3 -24(R10), (SP), -100(R10) ;PIECE, RLEN, NAME ; 0616
MOVZWL -24(R10), R9 ;PIECE, R9 ; 0618
MOVZWL -100(R10), R8 ;NAME, R8 ; 0620
MOVL -96(R10), R7 ;NAME+4, R7 ;
MOVC5 (SP), @0(R10), #32, R8, (R7) ;RLEN, @RDESCR+4, #32, R8, (R7) ; 0617
BGEQ 12$ ;12$ ;
ADDL2 (SP), R7 ;RLEN, R7 ;
SUBL2 (SP), R8 ;RLEN, R8 ;
MOVC5 R9, @-16(R10), #32, R8, (R7) ;R9, @PIECE+8, #32, R8, (R7) ;
12$: MOVL R3, -92(R10) ;R3, NAME+8 ;
MOVL -92(R10), -80(R10) ;NAME+8, NAME_TMP+8 ; 0621
13$: MOVL R6, R0 ;STATUS, R0 ; 0624
RET ; ; 0509
; Routine Size: 263 bytes
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 24
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
; 0626 ! TPARSE state tables for initial scan.
; 0627
; 0628 BEGIN
; 0629 SWITCHES LIST(NOOBJECT);
; 0630
; 0631 $INIT_STATE (CLI_STB, CLI_KTB);
; 0632
; 0633
; 0634 ! MASTER state -- finds qualifiers and parameters.
; 0635 ! exits on EOS or parsing error.
; 0636
; P 0637 $STATE (MASTER,
; P 0638 ( (QUAL),MASTER),
; P 0639 ( (PARAM),MASTER,CHECK,,,PARAMVEC),
; P 0640 (TPA$_EOS,TPA$_EXIT),
; P 0641 (TPA$_LAMBDA,TPA$_FAIL,IVDELIM)
; 0642 );
; 0643
; 0644 ! States needed to identify qualifiers, and their values.
; 0645
; P 0646 $STATE (QUAL,
; P 0647 ('/')
; 0648 );
; P 0649 $STATE (QUAL0,
; P 0650 ('NOLOG',NEG_QUAL,NO_LOG),
; P 0651 ('LOG'),
; P 0652 ('NOBRIEF',NEG_QUAL,NO_BR),
; P 0653 ('BRIEF',NEG_QUAL,,4,QUAL_FLAGS),
; P 0654 ('DEFAULT',DEF),
; P 0655 ('NODEFAULT',TPA$_FAIL,,DCL_NOTNEG,PARSE_ERROR),
; P 0656 (TPA$_SYMBOL,TPA$_FAIL,,DCL_IVKEYW,PARSE_ERROR),
; P 0657 (TPA$_LAMBDA,TPA$_FAIL,,DCL_NOKEYW,PARSE_ERROR)
; 0658 );
; P 0659 $STATE (,
; P 0660 ('='),
; P 0661 (TPA$_LAMBDA,TPA$_EXIT,,3,QUAL_FLAGS)
; 0662 );
; P 0663 $STATE (,
; P 0664 ('ALL',TPA$_EXIT,,3,QUAL_FLAGS),
; P 0665 ('FAILURE',TPA$_EXIT,,2,QUAL_FLAGS),
; P 0666 ('SUCCESS',TPA$_EXIT,,1,QUAL_FLAGS),
; P 0667 (TPA$_LAMBDA,TPA$_FAIL,,DCL_BADVAL,PARSE_ERROR)
; 0668 );
; P 0669 $STATE (DEF,
; P 0670 ('='),
; P 0671 (TPA$_LAMBDA,TPA$_EXIT)
; 0672 );
; P 0673 $STATE (,
; P 0674 ( (PARAM),TPA$_EXIT,CHECK,,,DEFVEC),
; P 0675 (TPA$_EOS,TPA$_FAIL,,DCL_NULFIL,PARSE_ERROR),
; P 0676 (TPA$_LAMBDA,TPA$_FAIL,IVDELIM)
; 0677 );
; P 0678 $STATE (NEG_QUAL,
; P 0679 ('=',TPA$_FAIL,,DCL_NOVALU,PARSE_ERROR),
; P 0680 (TPA$_LAMBDA,TPA$_EXIT)
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 25
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
; 0681 );
; 0682
; 0683
; 0684 ! States needed to get parameters, without checking their content.
; 0685
; P 0686 $STATE (PARAM,
; P 0687 ('/',TPA$_FAIL), ! In case QUAL foun an error.
; P 0688 (TPA$_SYMBOL,,SAVESYM,,,RAWDESCR),
; P 0689 ('*',,SAVEPUNC,,,RAWDESCR),
; P 0690 ('[',,SAVEPUNC,,,RAWDESCR),
; P 0691 ('<',,SAVEPUNC,,,RAWDESCR),
; P 0692 ('.',,SAVEPUNC,,,RAWDESCR)
; 0693 );
; P 0694 $STATE (,
; P 0695 (TPA$_LAMBDA,,BLANKS_ON)
; 0696 );
; P 0697 $STATE (PLOOP,
; P 0698 ('/',,BLANKS_OFF),
; P 0699 (TPA$_SYMBOL,PLOOP,SAVESYM,,,RAWDESCR),
; P 0700 ('.',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0701 (';',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0702 (':',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0703 ('[',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0704 (']',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0705 ('<',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0706 ('>',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0707 (',',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0708 ('*',PLOOP,SAVEPUNC,,,RAWDESCR),
; P 0709 (TPA$_BLANK,TPA$_EXIT,BLANKS_OFF),
; P 0710 (TPA$_EOS,TPA$_EXIT),
; P 0711 (TPA$_LAMBDA,TPA$_FAIL,,DCL_IVDELIM,PARSE_ERROR)
; 0712 );
; P 0713 $STATE (,
; P 0714 ( (QUAL0),TPA$_EXIT),
; P 0715 (TPA$_LAMBDA,TPA$_FAIL)
; 0716 );
; 0717
; 0718
; 0719 ! States needed to parse a parameter, which must be a single file-spec.
; 0720
; 0721 $INIT_STATE (FSPEC_STB, FSPEC_KTB);
; 0722
; P 0723 $STATE (,
; P 0724 ( (UIC),FNAME,MOVPART),
; P 0725 ( (DIRNAM),FNAME,MOVPART),
; P 0726 ( (LOGNAM),NAME_OR_DIR,TRNLOG),
; P 0727 (TPA$_SYMBOL,PART2,SAVESYM,,,NAME), ! File name.
; P 0728 ('.',PART3,SAVEPUNC,,,NAME),
; P 0729 (';',PART3,SAVEPUNC,,,NAME),
; P 0730 ('*',TPA$_FAIL,,VAL_NOWILD,PARSE_ERROR),
; P 0731 (TPA$_LAMBDA,TPA$_FAIL,IVDELIM)
; 0732 );
; P 0733 $STATE (NAME_OR_DIR,
; P 0734 ( (UIC),,MOVPART),
; P 0735 ( (DIRNAM),,MOVPART),
; P 0736 (TPA$_LAMBDA)
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 26
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
; 0737 );
; P 0738 $STATE (FNAME,
; P 0739 ('*',TPA$_FAIL,,VAL_NOWILD,PARSE_ERROR),
; P 0740 (TPA$_SYMBOL,,SAVESYM,,,NAME),
; P 0741 (TPA$_EOS,TPA$_EXIT),
; P 0742 (TPA$_LAMBDA,TPA$_FAIL,,DCL_IVDELIM,PARSE_ERROR)
; 0743 );
; P 0744 $STATE (PART2,
; P 0745 ('.',,SAVEPUNC,,,NAME),
; P 0746 (';',FNAME,SAVEPUNC,,,NAME),
; P 0747 (TPA$_EOS,TPA$_EXIT),
; P 0748 (',',TPA$_FAIL,,DCL_NOLIST,PARSE_ERROR),
; P 0749 (TPA$_LAMBDA,TPA$_FAIL,,DCL_IVDELIM,PARSE_ERROR)
; 0750 );
; P 0751 $STATE (PART3, ! This state is needed for the syntax NAME.;
; P 0752 ('.',FNAME,SAVEPUNC,,,NAME), ! [with the variant NAME.. or NAME..1]
; P 0753 (';',FNAME,SAVEPUNC,,,NAME),
; P 0754 (',',TPA$_FAIL,,DCL_NOLIST,PARSE_ERROR),
; P 0755 (TPA$_SYMBOL,PART2,SAVESYM,,,NAME),
; P 0756 ('*',TPA$_FAIL,,VAL_NOWILD,PARSE_ERROR),
; P 0757 (TPA$_EOS,TPA$_EXIT),
; P 0758 (TPA$_LAMBDA,TPA$_FAIL,,DCL_IVDELIM,PARSE_ERROR)
; 0759 );
; 0760
; 0761 ! Sub-states for file name parts.
; 0762
; P 0763 $STATE (LOGNAM,
; P 0764 (TPA$_SYMBOL,,SAVESYM,,,NAME_TMP)
; 0765 );
; P 0766 $STATE (,
; P 0767 (':',TPA$_EXIT,MOVPART,TRUE,COLON_FLAG),
; P 0768 (TPA$_EOS,TPA$_EXIT,MOVPART),
; P 0769 (TPA$_LAMBDA,TPA$_FAIL)
; 0770 );
; 0771
; P 0772 $STATE (UIC,
; P 0773 (TPA$_LAMBDA,,CLEAN)
; 0774 );
; P 0775 $STATE (,
; P 0776 ('[',,SAVEPUNC,,,NAME_TMP),
; P 0777 ('<',,SAVEPUNC,,,NAME_TMP)
; 0778 );
; P 0779 $STATE (,
; P 0780 (TPA$_OCTAL,,SAVESYM,,,NAME_TMP)
; 0781 );
; P 0782 $STATE (,
; P 0783 (',',,SAVEPUNC,,,NAME_TMP),
; 0784 );
; P 0785 $STATE (,
; P 0786 (TPA$_OCTAL,,SAVESYM,,,NAME_TMP)
; 0787 );
; P 0788 $STATE (,
; P 0789 (']',TPA$_EXIT,SAVEPUNC,,,NAME_TMP),
; P 0790 ('>',TPA$_EXIT,SAVEPUNC,,,NAME_TMP)
; 0791 );
; 0792
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 27
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
; P 0793 $STATE (DIRNAM,
; P 0794 (TPA$_LAMBDA,,CLEAN)
; 0795 );
; P 0796 $STATE (,
; P 0797 ('[',,SAVEPUNC,,,NAME_TMP),
; P 0798 ('<',,SAVEPUNC,,,NAME_TMP)
; 0799 );
; P 0800 $STATE (SUBDIR,
; P 0801 (TPA$_STRING,SUBDIR,SAVESYM,,,NAME_TMP),
; P 0802 ('.',SUBDIR,SAVEPUNC,,,NAME_TMP),
; P 0803 (']',TPA$_EXIT,SAVEPUNC,,,NAME_TMP),
; P 0804 ('>',TPA$_EXIT,SAVEPUNC,,,NAME_TMP),
; P 0805 (TPA$_LAMBDA,TPA$_FAIL,,DCL_DIRECT,PARSE_ERROR)
; 0806 );
; 0807 END
; 0808
; 0809 END
; 0810 ELUDOM
.PSECT LIB$KEY1$,NOWRT,NOEXE, SHR,0
;TPA$KEYST0
U.19: .BLKB 0
U.21: .ASCII \NOLOG\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.26: .BLKB 0
U.28: .ASCII \LOG\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.30: .BLKB 0
U.32: .ASCII \NOBRIEF\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.36: .BLKB 0
U.38: .ASCII \BRIEF\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.43: .BLKB 0
U.45: .ASCII \DEFAULT\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.49: .BLKB 0
U.51: .ASCII \NODEFAULT\ ; ;
.BYTE -1 ; ;
U.64: .BYTE -1 ; ;
;TPA$KEYST0
U.70: .BLKB 0
U.72: .ASCII \ALL\ ; ;
.BYTE -1 ; ;
;TPA$KEYST0
U.77: .BLKB 0
U.79: .ASCII \FAILURE\ ; ;
.BYTE -1 ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 28
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
;TPA$KEYST0
U.84: .BLKB 0
U.86: .ASCII \SUCCESS\ ; ;
.BYTE -1 ; ;
U.95: .BYTE -1 ; ;
.PSECT LIB$STATE$,NOWRT,NOEXE, SHR,0
CLI_STB::
.BLKB 0
MASTER: .BLKB 0
U.2: .WORD 6648 ; ;
U.4: .WORD <-2> ; ;
U.5: .WORD <-2> ; ;
U.6: .WORD -25608 ; ;
U.7: .BYTE 1 ; ;
U.9: .WORD <-2> ; ;
U.10: .ADDRESS PARAMVEC ; ;
U.11: .LONG <-4> ; ;
U.12: .WORD <-2> ; ;
U.13: .WORD 4599 ; ;
U.14: .WORD -1 ; ;
U.15: .WORD -27146 ; ;
U.16: .LONG <-4> ; ;
U.17: .WORD -2 ; ;
;QUAL
U.3: .BLKB 0
U.18: .WORD 1071 ; ;
QUAL0: .BLKB 0
U.22: .WORD -28416 ; ;
U.23: .LONG <-4> ; ;
U.25: .WORD <-2> ; ;
U.29: .WORD 257 ; ;
U.33: .WORD -28414 ; ;
U.34: .LONG <-4> ; ;
U.35: .WORD <-2> ; ;
U.39: .WORD 28931 ; ;
U.40: .LONG <-4> ; ;
U.41: .LONG 4 ; ;
U.42: .WORD <-2> ; ;
U.46: .WORD 4356 ; ;
U.48: .WORD <-2> ; ;
U.52: .WORD 28933 ; ;
U.53: .LONG <-4> ; ;
U.54: .LONG 229592 ; ;
U.55: .WORD -2 ; ;
U.56: .WORD 29169 ; ;
U.57: .LONG <-4> ; ;
U.58: .LONG 229472 ; ;
U.59: .WORD -2 ; ;
U.60: .WORD 30198 ; ;
U.61: .LONG <-4> ; ;
U.62: .LONG 229560 ; ;
U.63: .WORD -2 ; ;
U.65: .WORD 61 ; ;
U.66: .WORD 30198 ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 29
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.67: .LONG <-4> ; ;
U.68: .LONG 3 ; ;
U.69: .WORD -1 ; ;
U.73: .WORD 28934 ; ;
U.74: .LONG <-4> ; ;
U.75: .LONG 3 ; ;
U.76: .WORD -1 ; ;
U.80: .WORD 28935 ; ;
U.81: .LONG <-4> ; ;
U.82: .LONG 2 ; ;
U.83: .WORD -1 ; ;
U.87: .WORD 28936 ; ;
U.88: .LONG <-4> ; ;
U.89: .LONG 1 ; ;
U.90: .WORD -1 ; ;
U.91: .WORD 30198 ; ;
U.92: .LONG <-4> ; ;
U.93: .LONG 229472 ; ;
U.94: .WORD -2 ; ;
;DEF
U.47: .BLKB 0
U.96: .WORD 61 ; ;
U.97: .WORD 5622 ; ;
U.98: .WORD -1 ; ;
U.99: .WORD -25608 ; ;
U.100: .BYTE 1 ; ;
U.101: .WORD <-2> ; ;
U.102: .ADDRESS DEFVEC ; ;
U.103: .LONG <-4> ; ;
U.104: .WORD -1 ; ;
U.105: .WORD 29175 ; ;
U.106: .LONG <-4> ; ;
U.107: .LONG 229600 ; ;
U.108: .WORD -2 ; ;
U.109: .WORD -27146 ; ;
U.110: .LONG <-4> ; ;
U.111: .WORD -2 ; ;
;NEG_QUAL
U.24: .BLKB 0
U.112: .WORD 28733 ; ;
U.113: .LONG <-4> ; ;
U.114: .LONG 229584 ; ;
U.115: .WORD -2 ; ;
U.116: .WORD 5622 ; ;
U.117: .WORD -1 ; ;
;PARAM
U.8: .BLKB 0
U.118: .WORD 4143 ; ;
U.119: .WORD -2 ; ;
U.120: .WORD -31759 ; ;
U.121: .BYTE 1 ; ;
U.122: .ADDRESS RAWDESCR ; ;
U.123: .LONG <-4> ; ;
U.124: .WORD -32214 ; ;
U.125: .BYTE 1 ; ;
U.126: .ADDRESS RAWDESCR ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 30
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.127: .LONG <-4> ; ;
U.128: .WORD -32165 ; ;
U.129: .BYTE 1 ; ;
U.130: .ADDRESS RAWDESCR ; ;
U.131: .LONG <-4> ; ;
U.132: .WORD -32196 ; ;
U.133: .BYTE 1 ; ;
U.134: .ADDRESS RAWDESCR ; ;
U.135: .LONG <-4> ; ;
U.136: .WORD -31186 ; ;
U.137: .BYTE 1 ; ;
U.138: .ADDRESS RAWDESCR ; ;
U.139: .LONG <-4> ; ;
U.140: .WORD -31242 ; ;
U.141: .LONG <-4> ; ;
PLOOP: .BLKB 0
U.142: .WORD -32721 ; ;
U.143: .LONG <-4> ; ;
U.144: .WORD -27663 ; ;
U.145: .BYTE 1 ; ;
U.146: .ADDRESS RAWDESCR ; ;
U.147: .LONG <-4> ; ;
U.148: .WORD <-2> ; ;
U.149: .WORD -28114 ; ;
U.150: .BYTE 1 ; ;
U.151: .ADDRESS RAWDESCR ; ;
U.152: .LONG <-4> ; ;
U.153: .WORD <-2> ; ;
U.154: .WORD -28101 ; ;
U.155: .BYTE 1 ; ;
U.156: .ADDRESS RAWDESCR ; ;
U.157: .LONG <-4> ; ;
U.158: .WORD <-2> ; ;
U.159: .WORD -28102 ; ;
U.160: .BYTE 1 ; ;
U.161: .ADDRESS RAWDESCR ; ;
U.162: .LONG <-4> ; ;
U.163: .WORD <-2> ; ;
U.164: .WORD -28069 ; ;
U.165: .BYTE 1 ; ;
U.166: .ADDRESS RAWDESCR ; ;
U.167: .LONG <-4> ; ;
U.168: .WORD <-2> ; ;
U.169: .WORD -28067 ; ;
U.170: .BYTE 1 ; ;
U.171: .ADDRESS RAWDESCR ; ;
U.172: .LONG <-4> ; ;
U.173: .WORD <-2> ; ;
U.174: .WORD -28100 ; ;
U.175: .BYTE 1 ; ;
U.176: .ADDRESS RAWDESCR ; ;
U.177: .LONG <-4> ; ;
U.178: .WORD <-2> ; ;
U.179: .WORD -28098 ; ;
U.180: .BYTE 1 ; ;
U.181: .ADDRESS RAWDESCR ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 31
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.182: .LONG <-4> ; ;
U.183: .WORD <-2> ; ;
U.184: .WORD -28116 ; ;
U.185: .BYTE 1 ; ;
U.186: .ADDRESS RAWDESCR ; ;
U.187: .LONG <-4> ; ;
U.188: .WORD <-2> ; ;
U.189: .WORD -28118 ; ;
U.190: .BYTE 1 ; ;
U.191: .ADDRESS RAWDESCR ; ;
U.192: .LONG <-4> ; ;
U.193: .WORD <-2> ; ;
U.194: .WORD -28174 ; ;
U.195: .LONG <-4> ; ;
U.196: .WORD -1 ; ;
U.197: .WORD 4599 ; ;
U.198: .WORD -1 ; ;
U.199: .WORD 30198 ; ;
U.200: .LONG <-4> ; ;
U.201: .LONG 229648 ; ;
U.202: .WORD -2 ; ;
U.203: .WORD 6648 ; ;
U.204: .WORD <-2> ; ;
U.205: .WORD -1 ; ;
U.206: .WORD 5622 ; ;
U.207: .WORD -2 ; ;
.BLKB 1
FSPEC_STB::
.BLKB 0
U.209: .WORD -26120 ; ;
U.211: .WORD <-2> ; ;
U.212: .LONG <-4> ; ;
U.214: .WORD <-2> ; ;
U.215: .WORD -26120 ; ;
U.217: .WORD <-2> ; ;
U.218: .LONG <-4> ; ;
U.219: .WORD <-2> ; ;
U.220: .WORD -26120 ; ;
U.222: .WORD <-2> ; ;
U.223: .LONG <-4> ; ;
U.225: .WORD <-2> ; ;
U.226: .WORD -27663 ; ;
U.227: .BYTE 1 ; ;
U.228: .ADDRESS NAME ; ;
U.229: .LONG <-4> ; ;
U.231: .WORD <-2> ; ;
U.232: .WORD -28114 ; ;
U.233: .BYTE 1 ; ;
U.234: .ADDRESS NAME ; ;
U.235: .LONG <-4> ; ;
U.237: .WORD <-2> ; ;
U.238: .WORD -28101 ; ;
U.239: .BYTE 1 ; ;
U.240: .ADDRESS NAME ; ;
U.241: .LONG <-4> ; ;
U.242: .WORD <-2> ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 32
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.243: .WORD 28714 ; ;
U.244: .LONG <-4> ; ;
U.245: .LONG 100052 ; ;
U.246: .WORD -2 ; ;
U.247: .WORD -27146 ; ;
U.248: .LONG <-4> ; ;
U.249: .WORD -2 ; ;
;NAME_OR_DIR
U.224: .BLKB 0
U.250: .WORD -30216 ; ;
U.251: .WORD <-2> ; ;
U.252: .LONG <-4> ; ;
U.253: .WORD -30216 ; ;
U.254: .WORD <-2> ; ;
U.255: .LONG <-4> ; ;
U.256: .WORD 1526 ; ;
;FNAME
U.213: .BLKB 0
U.257: .WORD 28714 ; ;
U.258: .LONG <-4> ; ;
U.259: .LONG 100052 ; ;
U.260: .WORD -2 ; ;
U.261: .WORD -31759 ; ;
U.262: .BYTE 1 ; ;
U.263: .ADDRESS NAME ; ;
U.264: .LONG <-4> ; ;
U.265: .WORD 4599 ; ;
U.266: .WORD -1 ; ;
U.267: .WORD 30198 ; ;
U.268: .LONG <-4> ; ;
U.269: .LONG 229648 ; ;
U.270: .WORD -2 ; ;
;PART2
U.230: .BLKB 0
U.271: .WORD -32210 ; ;
U.272: .BYTE 1 ; ;
U.273: .ADDRESS NAME ; ;
U.274: .LONG <-4> ; ;
U.275: .WORD -28101 ; ;
U.276: .BYTE 1 ; ;
U.277: .ADDRESS NAME ; ;
U.278: .LONG <-4> ; ;
U.279: .WORD <-2> ; ;
U.280: .WORD 4599 ; ;
U.281: .WORD -1 ; ;
U.282: .WORD 28716 ; ;
U.283: .LONG <-4> ; ;
U.284: .LONG 229568 ; ;
U.285: .WORD -2 ; ;
U.286: .WORD 30198 ; ;
U.287: .LONG <-4> ; ;
U.288: .LONG 229648 ; ;
U.289: .WORD -2 ; ;
;PART3
U.236: .BLKB 0
U.290: .WORD -28114 ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 33
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.291: .BYTE 1 ; ;
U.292: .ADDRESS NAME ; ;
U.293: .LONG <-4> ; ;
U.294: .WORD <-2> ; ;
U.295: .WORD -28101 ; ;
U.296: .BYTE 1 ; ;
U.297: .ADDRESS NAME ; ;
U.298: .LONG <-4> ; ;
U.299: .WORD <-2> ; ;
U.300: .WORD 28716 ; ;
U.301: .LONG <-4> ; ;
U.302: .LONG 229568 ; ;
U.303: .WORD -2 ; ;
U.304: .WORD -27663 ; ;
U.305: .BYTE 1 ; ;
U.306: .ADDRESS NAME ; ;
U.307: .LONG <-4> ; ;
U.308: .WORD <-2> ; ;
U.309: .WORD 28714 ; ;
U.310: .LONG <-4> ; ;
U.311: .LONG 100052 ; ;
U.312: .WORD -2 ; ;
U.313: .WORD 4599 ; ;
U.314: .WORD -1 ; ;
U.315: .WORD 30198 ; ;
U.316: .LONG <-4> ; ;
U.317: .LONG 229648 ; ;
U.318: .WORD -2 ; ;
;LOGNAM
U.221: .BLKB 0
U.319: .WORD -30735 ; ;
U.320: .BYTE 1 ; ;
U.321: .ADDRESS NAME_TMP ; ;
U.322: .LONG <-4> ; ;
U.323: .WORD -4038 ; ;
U.324: .LONG <-4> ; ;
U.325: .LONG <-4> ; ;
U.326: .LONG 1 ; ;
U.327: .WORD -1 ; ;
U.328: .WORD -28169 ; ;
U.329: .LONG <-4> ; ;
U.330: .WORD -1 ; ;
U.331: .WORD 5622 ; ;
U.332: .WORD -2 ; ;
;UIC
U.210: .BLKB 0
U.333: .WORD -31242 ; ;
U.334: .LONG <-4> ; ;
U.335: .WORD -32165 ; ;
U.336: .BYTE 1 ; ;
U.337: .ADDRESS NAME_TMP ; ;
U.338: .LONG <-4> ; ;
U.339: .WORD -31172 ; ;
U.340: .BYTE 1 ; ;
U.341: .ADDRESS NAME_TMP ; ;
U.342: .LONG <-4> ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 34
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.343: .WORD -30732 ; ;
U.344: .BYTE 1 ; ;
U.345: .ADDRESS NAME_TMP ; ;
U.346: .LONG <-4> ; ;
U.347: .WORD -31188 ; ;
U.348: .BYTE 1 ; ;
U.349: .ADDRESS NAME_TMP ; ;
U.350: .LONG <-4> ; ;
U.351: .WORD -30732 ; ;
U.352: .BYTE 1 ; ;
U.353: .ADDRESS NAME_TMP ; ;
U.354: .LONG <-4> ; ;
U.355: .WORD -28067 ; ;
U.356: .BYTE 1 ; ;
U.357: .ADDRESS NAME_TMP ; ;
U.358: .LONG <-4> ; ;
U.359: .WORD -1 ; ;
U.360: .WORD -27074 ; ;
U.361: .BYTE 1 ; ;
U.362: .ADDRESS NAME_TMP ; ;
U.363: .LONG <-4> ; ;
U.364: .WORD -1 ; ;
;DIRNAM
U.216: .BLKB 0
U.365: .WORD -31242 ; ;
U.366: .LONG <-4> ; ;
U.367: .WORD -32165 ; ;
U.368: .BYTE 1 ; ;
U.369: .ADDRESS NAME_TMP ; ;
U.370: .LONG <-4> ; ;
U.371: .WORD -31172 ; ;
U.372: .BYTE 1 ; ;
U.373: .ADDRESS NAME_TMP ; ;
U.374: .LONG <-4> ; ;
SUBDIR: .BLKB 0
U.375: .WORD -27664 ; ;
U.376: .BYTE 1 ; ;
U.377: .ADDRESS NAME_TMP ; ;
U.378: .LONG <-4> ; ;
U.379: .WORD <-2> ; ;
U.380: .WORD -28114 ; ;
U.381: .BYTE 1 ; ;
U.382: .ADDRESS NAME_TMP ; ;
U.383: .LONG <-4> ; ;
U.384: .WORD <-2> ; ;
U.385: .WORD -28067 ; ;
U.386: .BYTE 1 ; ;
U.387: .ADDRESS NAME_TMP ; ;
U.388: .LONG <-4> ; ;
U.389: .WORD -1 ; ;
U.390: .WORD -28098 ; ;
U.391: .BYTE 1 ; ;
U.392: .ADDRESS NAME_TMP ; ;
U.393: .LONG <-4> ; ;
U.394: .WORD -1 ; ;
U.395: .WORD 30198 ; ;
;VALIDATE 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 35
; 20-AUG-1980 10:48 DBD0:[FITZ.DECUS]VALIDATE.BLI;1 (3)
U.396: .LONG <-4> ; ;
U.397: .LONG 229424 ; ;
U.398: .WORD -2 ; ;
.PSECT LIB$KEY0$,NOWRT,NOEXE, SHR,1
CLI_KTB::
.BLKB 0
;TPA$KEY0
U.1: .BLKB 0
U.20: .WORD ; ;
U.27: .WORD ; ;
U.31: .WORD ; ;
U.37: .WORD ; ;
U.44: .WORD ; ;
U.50: .WORD ; ;
U.71: .WORD ; ;
U.78: .WORD ; ;
U.85: .WORD ; ;
.BLKB 2
FSPEC_KTB::
.BLKB 0
;TPA$KEY0
U.208: .BLKB 0
; PSECT SUMMARY
;
; Name Bytes Attributes
;
; $OWN$ 992 WRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2)
; $PLIT$ 98 NOWRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2)
; $CODE$ 1036 NOWRT, RD , EXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2)
; LIB$KEY0$ 20 NOWRT, RD ,NOEXE, SHR, LCL, REL, CON,NOPIC,ALIGN(1)
; LIB$STATE$ 955 NOWRT, RD ,NOEXE, SHR, LCL, REL, CON,NOPIC,ALIGN(0)
; LIB$KEY1$ 64 NOWRT, RD ,NOEXE, SHR, LCL, REL, CON,NOPIC,ALIGN(0)
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; DBA0:[SYSLIB]STARLET.L32;2 2688 49 1 153
; DBA0:[SYSLIB]CLIMAC.L32;1 14 2 14 5
; DBA0:[SYSLIB]TPAMAC.L32;1 39 32 82 24
; Size: 1036 code + 2129 data bytes
; 13-NOV-1980 17:46:45 Bliss-32 V0.9-567 Page 36
; (3)
; Run Time: 01:35.5
; Elapsed Time: 03:17.0
; Memory Used: 320 pages
; Compilation Complete
.END VALIDATE