EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 1 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (1) ; 0001 MODULE EXTRACT ( ; 0002 MAIN = EXTRACT, ; 0003 ADDRESSING_MODE (EXTERNAL=LONG_RELATIVE, NONEXTERNAL=LONG_RELATIVE), ; 0004 LANGUAGE (BLISS32), ; 0005 IDENT = 'X0001D' ; 0006 ) = ; 0007 BEGIN ; 0008 ; 0009 ! ; 0010 ! Copyright (c) 1979 ; 0011 ! Digital Equipment Corporation, Maynard, Massachusetts 01754 ; 0012 ! ; 0013 ! This software is furnished under a license for use only on a single ; 0014 ! computer system and may be copied only with the inclusion of the ; 0015 ! above copyright notice. This software, or any other copies thereof, ; 0016 ! may not be provided or otherwise made available to any other person ; 0017 ! except for use on such system and to one who agrees to these license ; 0018 ! terms. Title to and ownership of the software shall at all times ; 0019 ! remain in DEC. ; 0020 ! ; 0021 ! The information in this software is subject to change without notice ; 0022 ! and should not be construed as a commitment by Digital Equipment ; 0023 ! Corporation. ; 0024 ! ; 0025 ! DEC assumes no responsibility for the use or reliability of its ; 0026 ! software on equipment which is not supplied by DEC. ; 0027 ; 0028 !++ ; 0029 ! ; 0030 ! FACILITY: System Update Procedure Utilities ; 0031 ! ; 0032 ! ABSTRACT: ; 0033 ! ; 0034 ! This program compares two SLP update files and removes from file 1 ; 0035 ! any update that is found in its identical form in file 2. Thus, for ; 0036 ! example, bug fixes may be removed from a composite update file by ; 0037 ! running the bug fix file against it, leaving only enhancements ; 0038 ! and conflicts. ; 0039 ! ; 0040 ! ENVIRONMENT: ; 0041 ! ; 0042 ! VAX/VMS Operating System ; 0043 ! ; 0044 !-- ; 0045 ! ; 0046 ! ; 0047 ! AUTHOR: Andrew C. Goldstein, CREATION DATE: 31-Jan-1979 20:54 ; 0048 ! ; 0049 ! MODIFIED BY: ; 0050 ! ; 0051 !** ; 0052 ; 0053 ; 0054 LIBRARY 'SYS$LIBRARY:STARLET.L32'; ; 0055 LIBRARY 'SYS$LIBRARY:CLIMAC.L32'; ; 0056 LIBRARY 'SYS$LIBRARY:TPAMAC.L32'; ; 0057 ; 0058 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 2 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (1) ; 0059 FORWARD ROUTINE ; 0060 EXTRACT, ! main program ; 0061 GET_UPDATE : NOVALUE, ! get next SLP update from file ; 0062 READ_LINE : NOVALUE, ! read a line from a file ; 0063 FORMAT_COMMAND, ! format a SLP command ; 0064 OUTPUT_TEXT : NOVALUE, ! output update text ; 0065 WRITE_LINE : NOVALUE, ! write line to output file ; 0066 HANDLER; ! facility condition handler ; 0067 ; 0068 ; 0069 MACRO ; M 0070 DESCRIPTOR (STRING) = ; M 0071 UPLIT (%CHARCOUNT (STRING), UPLIT BYTE (STRING)) ; 0072 %; ; 0073 ; 0074 MACRO ; M 0075 ERR_EXIT [] = ; M 0076 SIGNAL_STOP (%REMAINING) ; 0077 %; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 3 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (2) ; 0078 !+ ; 0079 ! ; 0080 ! Module own data ; 0081 ! ; 0082 !- ; 0083 ; 0084 ! ; 0085 ! Format of command data blocks allocated below. ; 0086 ! ; 0087 MACRO ; 0088 RANGE_TOP = 0, 0, 32, 0 %, ; 0089 RANGE_END = 1, 0, 32, 0 %, ; 0090 AUDIT_LEN = 2, 0, 32, 0 %, ; 0091 AUDIT_ADR = 3, 0, 32, 0 %, ; 0092 COMMENT_LEN = 4, 0, 32, 0 %, ; 0093 COMMENT_ADR = 5, 0, 32, 0 %, ; 0094 UPD_SIZE = 6, 0, 32, 0 %, ; 0095 UPD_LINE = 7, 0, 00, 0 %, ; 0096 AUDIT_TEXT = 40, 0, 00, 0 %, ; 0097 COMMENT_TEXT = 73, 0, 00, 0 %, ; 0098 UPD_TEXT =106, 0, 00, 0 %; ; 0099 ; 0100 ; 0101 OWN ; 0102 OUT_LINE : VECTOR [132, BYTE], ! output file line buffer ; 0103 PREV_AUDIT : VECTOR [2], ! descriptor of last compare audit string ; 0104 PREV_TEXT : VECTOR [132, BYTE], ! text buffer of above ; 0105 ! ; 0106 ! Parameters of current SLP command in each file ; 0107 ! ; 0108 RANGE1 : VECTOR [2], ! range of lines deleted ; 0109 AUDIT1 : VECTOR [2], ! descriptor of audit trail ; 0110 COMMENT1 : VECTOR [2], ! descriptor of comment ; 0111 SIZE1, ! number of bytes of text ; 0112 LINE1 : VECTOR [132, BYTE], ! file 1 input line ; 0113 AU_TEXT1 : VECTOR [132, BYTE], ! file 1 audit string ; 0114 CM_TEXT1 : VECTOR [132, BYTE], ! file 1 comment string ; 0115 TEXT1 : VECTOR [100000, BYTE], ! file 1 text buffer ; 0116 ; 0117 RANGE2 : VECTOR [2], ! range of lines deleted ; 0118 AUDIT2 : VECTOR [2], ! descriptor of audit trail ; 0119 COMMENT2 : VECTOR [2], ! descriptor of comment ; 0120 SIZE2, ! number of bytes of text ; 0121 LINE2 : VECTOR [132, BYTE], ! file 2 input line ; 0122 AU_TEXT2 : VECTOR [132, BYTE], ! file 2 audit string ; 0123 CM_TEXT2 : VECTOR [132, BYTE], ! file 2 comment string ; 0124 TEXT2 : VECTOR [100000, BYTE], ! file 2 text buffer ; 0125 ! ; 0126 ! SLP parser output area ; 0127 ! ; 0128 START_LINE, ! starting line number ; 0129 END_LINE, ! ending line number ; 0130 AUDIT_STRING : VECTOR [2], ! descriptor of audit trail ; 0131 COMMENT_STRING : VECTOR [2], ! descriptor of comment ; 0132 ! ; 0133 ! Command parser output area ; 0134 ! ; 0135 FILE1 : VECTOR [2], ! descriptor of input file 1 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 4 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (2) ; 0136 FILE2 : VECTOR [2], ! descriptor of input file 2 ; 0137 OUTFILE : VECTOR [2], ! descriptor of output file ; 0138 ! ; 0139 ! TPARSE parameter block ; 0140 ! ; 0141 TPARSE_BLOCK : BLOCK [TPA$K_LENGTH0, BYTE] ; 0142 INITIAL (TPA$K_COUNT0), ; 0143 ! ; 0144 ! Request block to get command line from CLI ; 0145 ! ; 0146 GET_COMMAND : $CLIREQDESC (RQTYPE = GETCMD); ; 0147 ; 0148 ! ; 0149 ! Forward reference to TPARSE state tables ; 0150 ! ; 0151 FORWARD ; 0152 CMD_TABLE : VECTOR [0], ; 0153 CMD_KEY : VECTOR [0], ; 0154 SLP_TABLE : VECTOR [0], ; 0155 SLP_KEY : VECTOR [0]; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 5 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (3) ; 0156 ! ; 0157 ! Junk for opening files ; 0158 ! ; 0159 OWN ; 0160 INRES1 : VECTOR [132, BYTE], ! input file 1 result string ; 0161 ; P 0162 INNAM1 : $NAM ( ; P 0163 ESA = INRES1, ; P 0164 ESS = 132, ; P 0165 RSA = INRES1, ; P 0166 RSS = 132 ; 0167 ), ; P 0168 INFAB1 : $FAB ( ; P 0169 DNA = UPLIT BYTE ('.UPD'), ; P 0170 DNS = 4, ; P 0171 FAC = GET, ; P 0172 FOP = SQO, ; P 0173 NAM = INNAM1 ; 0174 ), ; P 0175 INRAB1 : $RAB ( ; P 0176 FAB = INFAB1, ; P 0177 UBF = LINE1, ; P 0178 USZ = 132 ; 0179 ), ; 0180 ; 0181 INRES2 : VECTOR [132, BYTE], ! input file 2 result string ; 0182 ; P 0183 INNAM2 : $NAM ( ; P 0184 ESA = INRES2, ; P 0185 ESS = 132, ; P 0186 RSA = INRES2, ; P 0187 RSS = 132, ; P 0188 RLF = INNAM1 ; 0189 ), ; P 0190 INFAB2 : $FAB ( ; P 0191 DNA = UPLIT BYTE ('.UPD'), ; P 0192 DNS = 4, ; P 0193 FAC = GET, ; P 0194 FOP = SQO, ; P 0195 NAM = INNAM2 ; 0196 ), ; P 0197 INRAB2 : $RAB ( ; P 0198 FAB = INFAB2, ; P 0199 UBF = LINE2, ; P 0200 USZ = 132 ; 0201 ), ; 0202 ; 0203 OUTRES : VECTOR [132, BYTE], ! output file result string ; 0204 ; P 0205 OUTNAM : $NAM ( ; P 0206 ESA = OUTRES, ; P 0207 ESS = 132, ; P 0208 RSA = OUTRES, ; P 0209 RSS = 132, ; P 0210 RLF = INNAM1 ; 0211 ), ; P 0212 OUTFAB : $FAB ( ; P 0213 FAC = PUT, EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 6 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (3) ; P 0214 FOP = (MXV, OFP, SQO), ; P 0215 NAM = OUTNAM, ; P 0216 ORG = SEQ, ; P 0217 RAT = CR, ; P 0218 RFM = VAR ; 0219 ), ; 0220 ; P 0221 OUTRAB : $RAB ( ; P 0222 FAB = OUTFAB, ; P 0223 RBF = OUT_LINE ; 0224 ); EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 7 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (4) ; 0225 !+ ; 0226 ! ; 0227 ! Error messages ; 0228 ! ; 0229 ! Macro to generate each error message. ; 0230 ! ; 0231 !- ; 0232 ; 0233 MACRO ; M 0234 ERR_MESSAGE (CODE, STRING) = ; M 0235 LITERAL %NAME ('ERR_',CODE) = MSG_CODE + FAC_CODE^16; ; M 0236 SWITCHES UNAMES; ; M 0237 PSECT OWN = $MSG_TEXT; ; M 0238 OWN MSG_TEXT : VECTOR [%CHARCOUNT(STRING)+1, BYTE] ; M 0239 INITIAL (BYTE (%CHARCOUNT (STRING), STRING)); ; M 0240 PSECT OWN = $MSG_INDEX; ; M 0241 OWN MSG_INDEX : INITIAL (MSG_TEXT); ; M 0242 UNDECLARE MSG_TEXT, MSG_INDEX; ; M 0243 SWITCHES NOUNAMES; ; M 0244 %ASSIGN (MSG_CODE, MSG_CODE+8) ; 0245 %; ; 0246 ; 0247 ! ; 0248 ! Initialize and label the message sections. ; 0249 ! ; 0250 ; 0251 PSECT ; 0252 OWN = $MSG_TEXT (NOWRITE, ALIGN(0)); ; 0253 OWN ; 0254 MESSAGE_TEXT : VECTOR [0, BYTE]; ; 0255 PSECT ; 0256 OWN = $MSG_INDEX (NOWRITE, ALIGN (2)); ; 0257 OWN ; 0258 MESSAGE_TABLE : VECTOR [0]; ; 0259 ; 0260 COMPILETIME ; 0261 MSG_CODE = 0; ; 0262 ; 0263 ! ; 0264 ! Generate the error messages ; 0265 ! ; 0266 ; 0267 LITERAL ; 0268 FAC_CODE = 69; ! or whatever ; 0269 ; 0270 ERR_MESSAGE (CMD_SYNTAX, 'Command line syntax error'); ; 0271 ERR_MESSAGE (INFILEOPEN, 'Error opening input file '); ; 0272 ERR_MESSAGE (OUTFILEOPEN, 'Error opening output file '); ; 0273 ERR_MESSAGE (OUTCLOSE, 'Error closing output file '); ; 0274 ERR_MESSAGE (SLPSYNTAX, 'SLP syntax error in file '); ; 0275 ERR_MESSAGE (BUFFOVER, 'Compare buffer overflow'); ; 0276 ERR_MESSAGE (READIN, 'I/O error on input file '); ; 0277 ERR_MESSAGE (WRITEOUT, 'I/O error on output file '); ; 0278 ; 0279 PSECT ; 0280 OWN = $OWN$; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 8 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) ; 0281 GLOBAL ROUTINE EXTRACT (START_ADDR, CLI_CALLBACK) = ; 0282 BEGIN ; 0283 ; 0284 !++ ; 0285 ! ; 0286 ! Functional Description: ; 0287 ! ; 0288 ! This is the main routine of the EXTRACT utility. It acquires and ; 0289 ! parses the command line, opens files, and does the main line ; 0290 ! processing. ; 0291 ! ; 0292 ! Calling Sequence: ; 0293 ! standard ; 0294 ! ; 0295 ! Input Parameters: ; 0296 MAP ; 0297 CLI_CALLBACK; ! CLI callback address ; 0298 ! ; 0299 ! Implicit Inputs: ; 0300 ! none ; 0301 ! ; 0302 ! Output Parameters: ; 0303 ! none ; 0304 ! ; 0305 ! Implicit Outputs: ; 0306 ! none ; 0307 ! ; 0308 ! Routines Called: ; 0309 ! none ; 0310 ! ; 0311 ! Routine Value: ; 0312 ! 1 if successful ; 0313 ! assorted error statuses if not ; 0314 ! ; 0315 ! Signals: ; 0316 ! none ; 0317 ! ; 0318 ! Side Effects: ; 0319 ! update file with merged audit trails created ; 0320 ! ; 0321 !-- ; 0322 ; 0323 LABEL ; 0324 MAIN_LOOP; ! main processing loop ; 0325 ; 0326 LOCAL ; 0327 P, ! random pointer ; 0328 MSG_DESC : VECTOR [2], ! message line descriptor ; 0329 PREV_LINE; ! line number of previous line ; 0330 ; 0331 EXTERNAL ROUTINE ; 0332 LIB$PUT_OUTPUT, ! output to console ; 0333 LIB$TPARSE; ! library parsing routine ; 0334 ; 0335 ENABLE HANDLER; ; 0336 ; 0337 ; 0338 ! Begin by parsing the command line and opening the files. EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 9 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) ; 0339 ! ; 0340 ; 0341 (.CLI_CALLBACK) (GET_COMMAND, 0, 0); ; 0342 ; 0343 TPARSE_BLOCK[TPA$V_ABBREV] = 1; ; 0344 TPARSE_BLOCK[TPA$V_BLANKS] = 1; ; 0345 TPARSE_BLOCK[TPA$L_STRINGCNT] = .GET_COMMAND[CLI$W_RQSIZE]; ; 0346 TPARSE_BLOCK[TPA$L_STRINGPTR] = .GET_COMMAND[CLI$A_RQADDR]; ; 0347 IF NOT LIB$TPARSE (TPARSE_BLOCK, CMD_TABLE, CMD_KEY) ; 0348 THEN ERR_EXIT (ERR_CMD_SYNTAX); ; 0349 ; 0350 INFAB1[FAB$B_FNS] = .FILE1[0]; ; 0351 INFAB1[FAB$L_FNA] = .FILE1[1]; ; 0352 IF NOT $OPEN (FAB = INFAB1) ; 0353 THEN ERR_EXIT (ERR_INFILEOPEN, INFAB1); ; 0354 IF NOT $CONNECT (RAB = INRAB1) ; 0355 THEN ERR_EXIT (ERR_INFILEOPEN, INRAB1); ; 0356 ; 0357 INFAB2[FAB$B_FNS] = .FILE2[0]; ; 0358 INFAB2[FAB$L_FNA] = .FILE2[1]; ; 0359 IF NOT $OPEN (FAB = INFAB2) ; 0360 THEN ERR_EXIT (ERR_INFILEOPEN, INFAB2); ; 0361 IF NOT $CONNECT (RAB = INRAB2) ; 0362 THEN ERR_EXIT (ERR_INFILEOPEN, INRAB2); ; 0363 ; 0364 OUTFAB[FAB$B_FNS] = .OUTFILE[0]; ; 0365 OUTFAB[FAB$L_FNA] = .OUTFILE[1]; ; 0366 IF NOT $CREATE (FAB = OUTFAB) ; 0367 THEN ERR_EXIT (ERR_OUTFILEOPEN, OUTFAB); ; 0368 IF NOT $CONNECT (RAB = OUTRAB) ; 0369 THEN ERR_EXIT (ERR_OUTFILEOPEN, OUTRAB); ; 0370 ; 0371 ! Initialize running variables. ; 0372 ! ; 0373 ; 0374 PREV_LINE = 0; ; 0375 PREV_AUDIT[0] = 0; ; 0376 PREV_AUDIT[1] = PREV_TEXT; ; 0377 CH$FILL (0, 28, RANGE1); ; 0378 CH$FILL (0, 28, RANGE2); ; 0379 ; 0380 ! Read the first record of each file into the read ahead buffers. ; 0381 ! ; 0382 ; 0383 READ_LINE (INRAB1); ; 0384 READ_LINE (INRAB2); ; 0385 ; 0386 ! Now loop, reading update commands from the primary and compare files. If ; 0387 ! the SLP command in the compare file precedes the primary, we discard it ; 0388 ! and read the compare file until we find one that doesn't. If it follows ; 0389 ! the primary, it is held for future use and we just regurgitate the ; 0390 ! the command from the primary file into the output file. If they match, ; 0391 ! we do the collision processing that this utility is all about. ; 0392 ! ; 0393 ; 0394 MAIN_LOOP: ; 0395 BEGIN ; 0396 WHILE 1 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 10 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) ; 0397 DO ; 0398 BEGIN ; 0399 WHILE .SIZE1 EQL 0 AND .RANGE1[1] EQL 0 ; 0400 DO ; 0401 BEGIN ; 0402 GET_UPDATE (INRAB1, RANGE1); ; 0403 IF .RANGE1[0] EQL -1 THEN LEAVE MAIN_LOOP; ; 0404 END; ; 0405 WHILE .SIZE2 EQL 0 AND .RANGE2[1] EQL 0 AND .RANGE2[0] NEQ -1 ; 0406 DO GET_UPDATE (INRAB2, RANGE2); ; 0407 ; 0408 ! Check for exact match. If they match, discard both primary and secondary ; 0409 ! updates. ; 0410 ! ; 0411 ; 0412 IF .RANGE1[0] EQL .RANGE2[0] ; 0413 AND .RANGE1[1] EQL .RANGE2[1] ; 0414 AND CH$EQL (.SIZE1, TEXT1, .SIZE2, TEXT2) ; 0415 THEN ; 0416 BEGIN ; 0417 RANGE1[1] = 0; ; 0418 SIZE1 = 0; ; 0419 RANGE2[1] = 0; ; 0420 SIZE2 = 0; ; 0421 END ; 0422 ; 0423 ! If we have not detected an match, we advance whatever file is behind. ; 0424 ! If the primary if behind, we output it as is and discard, so the next ; 0425 ! command will be read at the top of the loop. If the secondary is behind, ; 0426 ! check if it overlaps the primary. If not, output a message to that effect. ; 0427 ! Then just flush the secondary. ; 0428 ! ; 0429 ; 0430 ELSE ; 0431 BEGIN ; 0432 IF (IF .RANGE1[1] NEQ 0 ; 0433 THEN .RANGE1[1] ; 0434 ELSE .RANGE1[0]) ; 0435 LSSU .RANGE2[0] ; 0436 THEN ; 0437 BEGIN ; 0438 OUTPUT_TEXT (.SIZE1, TEXT1); ; 0439 PREV_LINE = .RANGE1[0]; ; 0440 PREV_AUDIT[0] = 0; ; 0441 RANGE1[1] = 0; ; 0442 SIZE1 = 0; ; 0443 END ; 0444 ; 0445 ELSE ; 0446 BEGIN ; 0447 IF NOT ; 0448 ( ; 0449 (.RANGE1[0] GEQU .RANGE2[0] AND .RANGE1[0] LEQU .RANGE2[1]) ; 0450 OR ; 0451 (.RANGE2[0] GEQU .RANGE1[0] AND .RANGE2[0] LEQU .RANGE1[1]) ; 0452 ) ; 0453 THEN ; 0454 BEGIN EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 11 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) ; 0455 MSG_DESC[0] = 132; ; 0456 MSG_DESC[1] = OUT_LINE; ; P 0457 $FAO ( ; P 0458 DESCRIPTOR ('Unmatched update in compare file !AD'), ; P 0459 MSG_DESC[0], ; P 0460 MSG_DESC[0], ; P 0461 .INNAM2[NAM$B_RSL], ; P 0462 .INNAM2[NAM$L_RSA] ; 0463 ); ; 0464 LIB$PUT_OUTPUT (MSG_DESC[0]); ; 0465 P = CH$FIND_CH (.SIZE2, TEXT2, 0); ; 0466 MSG_DESC[0] = .P - TEXT2; ; 0467 MSG_DESC[1] = TEXT2; ; 0468 LIB$PUT_OUTPUT (MSG_DESC[0]); ; 0469 END; ; 0470 ; 0471 RANGE2[1] = 0; ; 0472 SIZE2 = 0; ; 0473 END; ; 0474 END; ; 0475 ; 0476 END; ! end of file processing loop ; 0477 END; ! end of block MAIN_LOOP ; 0478 ; 0479 ! We have reached the end of the primary input file. Output the end command ; 0480 ! and close up shop. ; 0481 ! ; 0482 ; 0483 TEXT1[0] = '/'; ; 0484 OUTRAB[RAB$W_RSZ] = 1; ; 0485 OUTRAB[RAB$L_RBF] = TEXT1; ; 0486 WRITE_LINE (OUTRAB); ; 0487 ; 0488 IF NOT $CLOSE (FAB = OUTFAB) ; 0489 THEN ERR_EXIT (ERR_OUTCLOSE, OUTFAB); ; 0490 ; 0491 $CLOSE (FAB = INFAB1); ; 0492 $CLOSE (FAB = INFAB2); ; 0493 ; 0494 1 ; 0495 ; 0496 END; ! end of routine EXTRACT .TITLE EXTRACT .IDENT \X0001D\ .PSECT $MSG_INDEX,NOWRT,NOEXE,2 00000 MESSAGE_TABLE: .BLKB 0 00000000' 00000 U.2: .ADDRESS U.1 ; 00000000' 00004 U.4: .ADDRESS U.3 ; 00000000' 00008 U.6: .ADDRESS U.5 ; 00000000' 0000C U.8: .ADDRESS U.7 ; 00000000' 00010 U.10: .ADDRESS U.9 ; 00000000' 00014 U.12: .ADDRESS U.11 ; 00000000' 00018 U.14: .ADDRESS U.13 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 12 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 00000000' 0001C U.16: .ADDRESS U.15 ; .PSECT $MSG_TEXT,NOWRT,NOEXE,0 00000 MESSAGE_TEXT: .BLKB 0 19 00000 U.1: .BYTE 25 ; 79 73 20 65 6E 69 6C 20 64 6E 61 6D 6D 6F 43 00001 .ASCII \Command line syntax error\ ; 72 6F 72 72 65 20 78 61 74 6E 00010 ; 0001A .BLKB 2 19 0001C U.3: .BYTE 25 ; 69 20 67 6E 69 6E 65 70 6F 20 72 6F 72 72 45 0001D .ASCII \Error opening input file \ ; 20 65 6C 69 66 20 74 75 70 6E 0002C ; 00036 .BLKB 2 1A 00038 U.5: .BYTE 26 ; 6F 20 67 6E 69 6E 65 70 6F 20 72 6F 72 72 45 00039 .ASCII \Error opening output file \ ; 20 65 6C 69 66 20 74 75 70 74 75 00048 ; 00053 .BLKB 1 1A 00054 U.7: .BYTE 26 ; 6F 20 67 6E 69 73 6F 6C 63 20 72 6F 72 72 45 00055 .ASCII \Error closing output file \ ; 20 65 6C 69 66 20 74 75 70 74 75 00064 ; 0006F .BLKB 1 19 00070 U.9: .BYTE 25 ; 6F 72 72 65 20 78 61 74 6E 79 73 20 50 4C 53 00071 .ASCII \SLP syntax error in file \ ; 20 65 6C 69 66 20 6E 69 20 72 00080 ; 0008A .BLKB 2 17 0008C U.11: .BYTE 23 ; 20 72 65 66 66 75 62 20 65 72 61 70 6D 6F 43 0008D .ASCII \Compare buffer overflow\ ; 77 6F 6C 66 72 65 76 6F 0009C ; 18 000A4 U.13: .BYTE 24 ; 6E 69 20 6E 6F 20 72 6F 72 72 65 20 4F 2F 49 000A5 .ASCII \I/O error on input file \ ; 20 65 6C 69 66 20 74 75 70 000B4 ; 000BD .BLKB 3 19 000C0 U.15: .BYTE 25 ; 75 6F 20 6E 6F 20 72 6F 72 72 65 20 4F 2F 49 000C1 .ASCII \I/O error on output file \ ; 20 65 6C 69 66 20 74 75 70 74 000D0 ; .PSECT $PLIT$,NOWRT,NOEXE,2 44 50 55 2E 00000 P.AAA: .ASCII \.UPD\ ; 44 50 55 2E 00004 P.AAB: .ASCII \.UPD\ ; 74 61 64 70 75 20 64 65 68 63 74 61 6D 6E 55 00008 P.AAD: .ASCII \Unmatched update in compare file !AD\ ; 69 66 20 65 72 61 70 6D 6F 63 20 6E 69 20 65 00017 ; 44 41 21 20 65 6C 00026 ; 00000024 0002C P.AAC: .LONG 36 ; 00000000' 00030 .ADDRESS P.AAD ; .PSECT $OWN$,NOEXE,2 00000 OUT_LINE: .BLKB 132 00084 PREV_AUDIT: .BLKB 8 0008C PREV_TEXT: .BLKB 132 00110 RANGE1: .BLKB 8 00118 AUDIT1: .BLKB 8 00120 COMMENT1: EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 13 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) .BLKB 8 00128 SIZE1: .BLKB 4 0012C LINE1: .BLKB 132 001B0 AU_TEXT1: .BLKB 132 00234 CM_TEXT1: .BLKB 132 002B8 TEXT1: .BLKB 100000 18958 RANGE2: .BLKB 8 18960 AUDIT2: .BLKB 8 18968 COMMENT2: .BLKB 8 18970 SIZE2: .BLKB 4 18974 LINE2: .BLKB 132 189F8 AU_TEXT2: .BLKB 132 18A7C CM_TEXT2: .BLKB 132 18B00 TEXT2: .BLKB 100000 311A0 START_LINE: .BLKB 4 311A4 END_LINE: .BLKB 4 311A8 AUDIT_STRING: .BLKB 8 311B0 COMMENT_STRING: .BLKB 8 311B8 FILE1: .BLKB 8 311C0 FILE2: .BLKB 8 311C8 OUTFILE:.BLKB 8 00000008 311D0 TPARSE_BLOCK: .LONG 8 ; 311D4 .BLKB 32 01 311F4 GET_COMMAND: .BYTE 1 ; 00 311F5 .BYTE 0 ; 00 311F6 .BYTE 0 ; 00 311F7 .BYTE 0 ; 00000000 311F8 .LONG 0 ; 00000000 00000000 311FC .LONG 0, 0 ; 00000000 31204 .LONG 0 ; 00000000 31208 .LONG 0 ; 00000000 3120C .LONG 0 ; 31210 INRES1: .BLKB 132 02 31294 INNAM1: .BYTE 2 ; 38 31295 .BYTE 56 ; 84 31296 .BYTE -124 ; 00 31297 .BYTE 0 ; 00000000' 31298 .ADDRESS INRES1 ; 0000 3129C .WORD 0 ; 84 3129E .BYTE -124 ; 00 3129F .BYTE 0 ; 00000000' 312A0 .ADDRESS INRES1 ; 00000000 312A4 .LONG 0 ; 0000# 312A8 .WORD 0[8] ; 0000# 312B8 .WORD 0[3] ; 0000# 312BE .WORD 0[3] ; 00000000 312C4 .LONG 0 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 14 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 00000000 312C8 .LONG 0 ; 03 312CC INFAB1: .BYTE 3 ; 50 312CD .BYTE 80 ; 0000 312CE .WORD 0 ; 00000040 312D0 .LONG 64 ; 00000000 312D4 .LONG 0 ; 00000000 312D8 .LONG 0 ; 00000000 312DC .LONG 0 ; 0000 312E0 .WORD 0 ; 02 312E2 .BYTE 2 ; 00 312E3 .BYTE 0 ; 00000000 312E4 .LONG 0 ; 00 312E8 .BYTE 0 ; 00 312E9 .BYTE 0 ; 00 312EA .BYTE 0 ; 02 312EB .BYTE 2 ; 00000000 312EC .LONG 0 ; 00000000 312F0 .LONG 0 ; 00000000' 312F4 .ADDRESS INNAM1 ; 00000000 312F8 .LONG 0 ; 00000000' 312FC .ADDRESS P.AAA ; 00 31300 .BYTE 0 ; 04 31301 .BYTE 4 ; 0000 31302 .WORD 0 ; 00000000 31304 .LONG 0 ; 0000 31308 .WORD 0 ; 00 3130A .BYTE 0 ; 00 3130B .BYTE 0 ; 00000000 3130C .LONG 0 ; 00000000 31310 .LONG 0 ; 00000000# 31314 .LONG 0[2] ; 01 3131C INRAB1: .BYTE 1 ; 44 3131D .BYTE 68 ; 0000 3131E .WORD 0 ; 00000000 31320 .LONG 0 ; 00000000 31324 .LONG 0 ; 00000000 31328 .LONG 0 ; 0000# 3132C .WORD 0[3] ; 0000 31332 .WORD 0 ; 00000000 31334 .LONG 0 ; 0000 31338 .WORD 0 ; 00 3133A .BYTE 0 ; 00 3133B .BYTE 0 ; 0084 3133C .WORD 132 ; 0000 3133E .WORD 0 ; 00000000' 31340 .ADDRESS LINE1 ; 00000000 31344 .LONG 0 ; 00000000 31348 .LONG 0 ; 00000000 3134C .LONG 0 ; 00 31350 .BYTE 0 ; 00 31351 .BYTE 0 ; 00 31352 .BYTE 0 ; 00 31353 .BYTE 0 ; 00000000 31354 .LONG 0 ; 00000000' 31358 .ADDRESS INFAB1 ; 00000000 3135C .LONG 0 ; 31360 INRES2: .BLKB 132 02 313E4 INNAM2: .BYTE 2 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 15 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 38 313E5 .BYTE 56 ; 84 313E6 .BYTE -124 ; 00 313E7 .BYTE 0 ; 00000000' 313E8 .ADDRESS INRES2 ; 0000 313EC .WORD 0 ; 84 313EE .BYTE -124 ; 00 313EF .BYTE 0 ; 00000000' 313F0 .ADDRESS INRES2 ; 00000000' 313F4 .ADDRESS INNAM1 ; 0000# 313F8 .WORD 0[8] ; 0000# 31408 .WORD 0[3] ; 0000# 3140E .WORD 0[3] ; 00000000 31414 .LONG 0 ; 00000000 31418 .LONG 0 ; 03 3141C INFAB2: .BYTE 3 ; 50 3141D .BYTE 80 ; 0000 3141E .WORD 0 ; 00000040 31420 .LONG 64 ; 00000000 31424 .LONG 0 ; 00000000 31428 .LONG 0 ; 00000000 3142C .LONG 0 ; 0000 31430 .WORD 0 ; 02 31432 .BYTE 2 ; 00 31433 .BYTE 0 ; 00000000 31434 .LONG 0 ; 00 31438 .BYTE 0 ; 00 31439 .BYTE 0 ; 00 3143A .BYTE 0 ; 02 3143B .BYTE 2 ; 00000000 3143C .LONG 0 ; 00000000 31440 .LONG 0 ; 00000000' 31444 .ADDRESS INNAM2 ; 00000000 31448 .LONG 0 ; 00000000' 3144C .ADDRESS P.AAB ; 00 31450 .BYTE 0 ; 04 31451 .BYTE 4 ; 0000 31452 .WORD 0 ; 00000000 31454 .LONG 0 ; 0000 31458 .WORD 0 ; 00 3145A .BYTE 0 ; 00 3145B .BYTE 0 ; 00000000 3145C .LONG 0 ; 00000000 31460 .LONG 0 ; 00000000# 31464 .LONG 0[2] ; 01 3146C INRAB2: .BYTE 1 ; 44 3146D .BYTE 68 ; 0000 3146E .WORD 0 ; 00000000 31470 .LONG 0 ; 00000000 31474 .LONG 0 ; 00000000 31478 .LONG 0 ; 0000# 3147C .WORD 0[3] ; 0000 31482 .WORD 0 ; 00000000 31484 .LONG 0 ; 0000 31488 .WORD 0 ; 00 3148A .BYTE 0 ; 00 3148B .BYTE 0 ; 0084 3148C .WORD 132 ; 0000 3148E .WORD 0 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 16 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 00000000' 31490 .ADDRESS LINE2 ; 00000000 31494 .LONG 0 ; 00000000 31498 .LONG 0 ; 00000000 3149C .LONG 0 ; 00 314A0 .BYTE 0 ; 00 314A1 .BYTE 0 ; 00 314A2 .BYTE 0 ; 00 314A3 .BYTE 0 ; 00000000 314A4 .LONG 0 ; 00000000' 314A8 .ADDRESS INFAB2 ; 00000000 314AC .LONG 0 ; 314B0 OUTRES: .BLKB 132 02 31534 OUTNAM: .BYTE 2 ; 38 31535 .BYTE 56 ; 84 31536 .BYTE -124 ; 00 31537 .BYTE 0 ; 00000000' 31538 .ADDRESS OUTRES ; 0000 3153C .WORD 0 ; 84 3153E .BYTE -124 ; 00 3153F .BYTE 0 ; 00000000' 31540 .ADDRESS OUTRES ; 00000000' 31544 .ADDRESS INNAM1 ; 0000# 31548 .WORD 0[8] ; 0000# 31558 .WORD 0[3] ; 0000# 3155E .WORD 0[3] ; 00000000 31564 .LONG 0 ; 00000000 31568 .LONG 0 ; 03 3156C OUTFAB: .BYTE 3 ; 50 3156D .BYTE 80 ; 0000 3156E .WORD 0 ; 20000042 31570 .LONG 536870978 ; 00000000 31574 .LONG 0 ; 00000000 31578 .LONG 0 ; 00000000 3157C .LONG 0 ; 0000 31580 .WORD 0 ; 01 31582 .BYTE 1 ; 00 31583 .BYTE 0 ; 00000000 31584 .LONG 0 ; 00 31588 .BYTE 0 ; 00 31589 .BYTE 0 ; 02 3158A .BYTE 2 ; 02 3158B .BYTE 2 ; 00000000 3158C .LONG 0 ; 00000000 31590 .LONG 0 ; 00000000' 31594 .ADDRESS OUTNAM ; 00000000 31598 .LONG 0 ; 00000000 3159C .LONG 0 ; 00 315A0 .BYTE 0 ; 00 315A1 .BYTE 0 ; 0000 315A2 .WORD 0 ; 00000000 315A4 .LONG 0 ; 0000 315A8 .WORD 0 ; 00 315AA .BYTE 0 ; 00 315AB .BYTE 0 ; 00000000 315AC .LONG 0 ; 00000000 315B0 .LONG 0 ; 00000000# 315B4 .LONG 0[2] ; 01 315BC OUTRAB: .BYTE 1 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 17 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 44 315BD .BYTE 68 ; 0000 315BE .WORD 0 ; 00000000 315C0 .LONG 0 ; 00000000 315C4 .LONG 0 ; 00000000 315C8 .LONG 0 ; 0000# 315CC .WORD 0[3] ; 0000 315D2 .WORD 0 ; 00000000 315D4 .LONG 0 ; 0000 315D8 .WORD 0 ; 00 315DA .BYTE 0 ; 00 315DB .BYTE 0 ; 0000 315DC .WORD 0 ; 0000 315DE .WORD 0 ; 00000000 315E0 .LONG 0 ; 00000000' 315E4 .ADDRESS OUT_LINE ; 00000000 315E8 .LONG 0 ; 00000000 315EC .LONG 0 ; 00 315F0 .BYTE 0 ; 00 315F1 .BYTE 0 ; 00 315F2 .BYTE 0 ; 00 315F3 .BYTE 0 ; 00000000 315F4 .LONG 0 ; 00000000' 315F8 .ADDRESS OUTFAB ; 00000000 315FC .LONG 0 ; .EXTRN LIB$PUT_OUTPUT, LIB$TPARSE .EXTRN SYS$OPEN, SYS$CONNECT .EXTRN SYS$CREATE, SYS$FAO .EXTRN SYS$CLOSE .PSECT $CODE$,NOWRT,2 0FFC 00000 .ENTRY EXTRACT, Save R2,R3,R4,R5,R6,R7,R8,R9,R10,- ; 0281 R11 ; 5B 00000000G 9F 9E 00002 MOVAB @#SYS$CLOSE, R11 ; 5A 00000000G 9F 9E 00009 MOVAB @#SYS$CONNECT, R10 ; 59 00000000G 00 9E 00010 MOVAB LIB$STOP, R9 ; 58 00000000' EF 9E 00017 MOVAB RANGE1, R8 ; 5E 08 C2 0001E SUBL2 #8, SP ; 6D 0000030F EF DE 00021 MOVAL 21$, (FP) ; 0282 7E 7C 00028 CLRQ -(SP) ; 0341 00000000' EF 9F 0002A PUSHAB GET_COMMAND ; 08 BC 03 FB 00030 CALLS #3, @CLI_CALLBACK ; 00000000' EF 03 88 00034 BISB2 #3, TPARSE_BLOCK+4 ; 0344 00000000' EF 00000000' EF 3C 0003B MOVZWL GET_COMMAND+8, TPARSE_BLOCK+8 ; 0345 00000000' EF 00000000' EF D0 00046 MOVL GET_COMMAND+12, TPARSE_BLOCK+12 ; 0346 00000000V EF 9F 00051 PUSHAB CMD_KEY ; 0347 00000000V EF 9F 00057 PUSHAB CMD_TABLE ; 00000000' EF 9F 0005D PUSHAB TPARSE_BLOCK ; 00000000G EF 03 FB 00063 CALLS #3, LIB$TPARSE ; 09 50 E8 0006A BLBS R0, 1$ ; 00450000 8F DD 0006D PUSHL #4521984 ; 0348 69 01 FB 00073 CALLS #1, LIB$STOP ; 00000000' EF 00000000' EF 90 00076 1$: MOVB FILE1, INFAB1+52 ; 0350 00000000' EF 00000000' EF D0 00081 MOVL FILE1+4, INFAB1+44 ; 0351 00000000' EF 9F 0008C PUSHAB INFAB1 ; 0352 00000000G 9F 01 FB 00092 CALLS #1, @#SYS$OPEN ; 0F 50 E8 00099 BLBS R0, 2$ ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 18 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 00000000' EF 9F 0009C PUSHAB INFAB1 ; 0353 00450008 8F DD 000A2 PUSHL #4521992 ; 69 02 FB 000A8 CALLS #2, LIB$STOP ; 00000000' EF 9F 000AB 2$: PUSHAB INRAB1 ; 0354 6A 01 FB 000B1 CALLS #1, SYS$CONNECT ; 0F 50 E8 000B4 BLBS R0, 3$ ; 00000000' EF 9F 000B7 PUSHAB INRAB1 ; 0355 00450008 8F DD 000BD PUSHL #4521992 ; 69 02 FB 000C3 CALLS #2, LIB$STOP ; 00000000' EF 00000000' EF 90 000C6 3$: MOVB FILE2, INFAB2+52 ; 0357 00000000' EF 00000000' EF D0 000D1 MOVL FILE2+4, INFAB2+44 ; 0358 00000000' EF 9F 000DC PUSHAB INFAB2 ; 0359 00000000G 9F 01 FB 000E2 CALLS #1, @#SYS$OPEN ; 0F 50 E8 000E9 BLBS R0, 4$ ; 00000000' EF 9F 000EC PUSHAB INFAB2 ; 0360 00450008 8F DD 000F2 PUSHL #4521992 ; 69 02 FB 000F8 CALLS #2, LIB$STOP ; 00000000' EF 9F 000FB 4$: PUSHAB INRAB2 ; 0361 6A 01 FB 00101 CALLS #1, SYS$CONNECT ; 0F 50 E8 00104 BLBS R0, 5$ ; 00000000' EF 9F 00107 PUSHAB INRAB2 ; 0362 00450008 8F DD 0010D PUSHL #4521992 ; 69 02 FB 00113 CALLS #2, LIB$STOP ; 00000000' EF 00000000' EF 90 00116 5$: MOVB OUTFILE, OUTFAB+52 ; 0364 00000000' EF 00000000' EF D0 00121 MOVL OUTFILE+4, OUTFAB+44 ; 0365 00000000' EF 9F 0012C PUSHAB OUTFAB ; 0366 00000000G 9F 01 FB 00132 CALLS #1, @#SYS$CREATE ; 0F 50 E8 00139 BLBS R0, 6$ ; 00000000' EF 9F 0013C PUSHAB OUTFAB ; 0367 00450010 8F DD 00142 PUSHL #4522000 ; 69 02 FB 00148 CALLS #2, LIB$STOP ; 00000000' EF 9F 0014B 6$: PUSHAB OUTRAB ; 0368 6A 01 FB 00151 CALLS #1, SYS$CONNECT ; 0F 50 E8 00154 BLBS R0, 7$ ; 00000000' EF 9F 00157 PUSHAB OUTRAB ; 0369 00450010 8F DD 0015D PUSHL #4522000 ; 69 02 FB 00163 CALLS #2, LIB$STOP ; 56 D4 00166 7$: CLRL PREV_LINE ; 0374 FF74 C8 D4 00168 CLRL PREV_AUDIT ; 0375 FF78 C8 FF7C C8 9E 0016C MOVAB PREV_TEXT, PREV_AUDIT+4 ; 0376 1C 00 6E 00 2C 00173 MOVC5 #0, (SP), #0, #28, RANGE1 ; 0377 68 00178 ; 1C 00 6E 00 2C 00179 MOVC5 #0, (SP), #0, #28, RANGE2 ; 0378 00000000' EF 0017E ; 00000000' EF 9F 00183 PUSHAB INRAB1 ; 0383 00000000V EF 01 FB 00189 CALLS #1, READ_LINE ; 00000000' EF 9F 00190 PUSHAB INRAB2 ; 0384 00000000V EF 01 FB 00196 CALLS #1, READ_LINE ; 18 A8 D5 0019D 8$: TSTL SIZE1 ; 0399 20 12 001A0 BNEQ 9$ ; 04 A8 D5 001A2 TSTL RANGE1+4 ; 1B 12 001A5 BNEQ 9$ ; 58 DD 001A7 PUSHL R8 ; 0402 00000000' EF 9F 001A9 PUSHAB INRAB1 ; 00000000V EF 02 FB 001AF CALLS #2, GET_UPDATE ; FFFFFFFF 8F 68 D1 001B6 CMPL RANGE1, #-1 ; 0403 DE 12 001BD BNEQ 8$ ; 0121 31 001BF BRW 19$ ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 19 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 00000000' EF D5 001C2 9$: TSTL SIZE2 ; 0405 2A 12 001C8 BNEQ 10$ ; 00000000' EF D5 001CA TSTL RANGE2+4 ; 22 12 001D0 BNEQ 10$ ; FFFFFFFF 8F 00000000' EF D1 001D2 CMPL RANGE2, #-1 ; 15 13 001DD BEQL 10$ ; 00000000' EF 9F 001DF PUSHAB RANGE2 ; 0406 00000000' EF 9F 001E5 PUSHAB INRAB2 ; 00000000V EF 02 FB 001EB CALLS #2, GET_UPDATE ; CE 11 001F2 BRB 9$ ; 0405 55 68 D0 001F4 10$: MOVL RANGE1, R5 ; 0412 54 00000000' EF D0 001F7 MOVL RANGE2, R4 ; 54 55 D1 001FE CMPL R5, R4 ; 26 12 00201 BNEQ 11$ ; 00000000' EF 04 A8 D1 00203 CMPL RANGE1+4, RANGE2+4 ; 0413 1C 12 0020B BNEQ 11$ ; 00000000' EF 00 01A8 C8 18 A8 2D 0020D CMPC5 SIZE1, TEXT1, #0, SIZE2, TEXT2 ; 0414 00000000' EF 00219 ; 09 12 0021E BNEQ 11$ ; 04 A8 D4 00220 CLRL RANGE1+4 ; 0417 18 A8 D4 00223 CLRL SIZE1 ; 0418 00AB 31 00226 BRW 18$ ; 0419 52 04 A8 D0 00229 11$: MOVL RANGE1+4, R2 ; 0432 05 13 0022D BEQL 12$ ; 50 52 D0 0022F MOVL R2, R0 ; 03 11 00232 BRB 13$ ; 50 55 D0 00234 12$: MOVL R5, R0 ; 54 50 D1 00237 13$: CMPL R0, R4 ; 0435 1E 1E 0023A BGEQU 14$ ; 01A8 C8 9F 0023C PUSHAB TEXT1 ; 0438 18 A8 DD 00240 PUSHL SIZE1 ; 00000000V EF 02 FB 00243 CALLS #2, OUTPUT_TEXT ; 56 68 D0 0024A MOVL RANGE1, PREV_LINE ; 0439 FF74 C8 D4 0024D CLRL PREV_AUDIT ; 0440 04 A8 D4 00251 CLRL RANGE1+4 ; 0441 18 A8 D4 00254 CLRL SIZE1 ; 0442 FF43 31 00257 BRW 8$ ; 0432 54 55 D1 0025A 14$: CMPL R5, R4 ; 0449 09 1F 0025D BLSSU 15$ ; 00000000' EF 55 D1 0025F CMPL R5, RANGE2+4 ; 6C 1B 00266 BLEQU 18$ ; 55 54 D1 00268 15$: CMPL R4, R5 ; 0451 05 1F 0026B BLSSU 16$ ; 52 54 D1 0026D CMPL R4, R2 ; 62 1B 00270 BLEQU 18$ ; 6E 84 8F 9A 00272 16$: MOVZBL #132, MSG_DESC ; 0455 04 AE FEF0 C8 9E 00276 MOVAB OUT_LINE, MSG_DESC+4 ; 0456 00000000' EF DD 0027C PUSHL INNAM2+4 ; 0463 7E 00000000' EF 9A 00282 MOVZBL INNAM2+3, -(SP) ; 08 AE 9F 00289 PUSHAB MSG_DESC ; 0C AE 9F 0028C PUSHAB MSG_DESC ; 00000000' EF 9F 0028F PUSHAB P.AAC ; 00000000G 9F 05 FB 00295 CALLS #5, @#SYS$FAO ; 5E DD 0029C PUSHL SP ; 0464 00000000G EF 01 FB 0029E CALLS #1, LIB$PUT_OUTPUT ; 00000000' EF 00000000' EF 00 3A 002A5 LOCC #0, SIZE2, TEXT2 ; 0465 02 12 002B1 BNEQ 17$ ; 51 D4 002B3 CLRL R1 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 20 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (5) 57 51 D0 002B5 17$: MOVL R1, P ; 50 00000000' EF 9E 002B8 MOVAB TEXT2, R0 ; 0466 6E 57 50 C3 002BF SUBL3 R0, P, MSG_DESC ; 04 AE 00000000' EF 9E 002C3 MOVAB TEXT2, MSG_DESC+4 ; 0467 5E DD 002CB PUSHL SP ; 0468 00000000G EF 01 FB 002CD CALLS #1, LIB$PUT_OUTPUT ; 00000000' EF D4 002D4 18$: CLRL RANGE2+4 ; 0471 00000000' EF D4 002DA CLRL SIZE2 ; 0472 FEBA 31 002E0 BRW 8$ ; 0396 01A8 C8 2F 90 002E3 19$: MOVB #47, TEXT1 ; 0483 00000000' EF 01 B0 002E8 MOVW #1, OUTRAB+34 ; 0484 00000000' EF 01A8 C8 9E 002EF MOVAB TEXT1, OUTRAB+40 ; 0485 00000000' EF 9F 002F8 PUSHAB OUTRAB ; 0486 00000000V EF 01 FB 002FE CALLS #1, WRITE_LINE ; 00000000' EF 9F 00305 PUSHAB OUTFAB ; 0488 6B 01 FB 0030B CALLS #1, SYS$CLOSE ; 0F 50 E8 0030E BLBS R0, 20$ ; 00000000' EF 9F 00311 PUSHAB OUTFAB ; 0489 00450018 8F DD 00317 PUSHL #4522008 ; 69 02 FB 0031D CALLS #2, LIB$STOP ; 00000000' EF 9F 00320 20$: PUSHAB INFAB1 ; 0491 6B 01 FB 00326 CALLS #1, SYS$CLOSE ; 00000000' EF 9F 00329 PUSHAB INFAB2 ; 0492 6B 01 FB 0032F CALLS #1, SYS$CLOSE ; 50 01 D0 00332 MOVL #1, R0 ; 0281 04 00335 RET ; 0000 00336 21$: .WORD Save nothing ; 0282 7E D4 00338 CLRL -(SP) ; 5E DD 0033A PUSHL SP ; 7E 04 AC 7D 0033C MOVQ 4(AP), -(SP) ; 00000000V EF 03 FB 00340 CALLS #3, HANDLER ; 04 00347 RET ; ; Routine Size: 840 bytes, Routine Base: $CODE$ + 0000 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 21 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) ; 0497 ROUTINE GET_UPDATE (RAB, BUFFER) : NOVALUE = ; 0498 BEGIN ; 0499 ; 0500 !++ ; 0501 ! ; 0502 ! Functional Description: ; 0503 ! ; 0504 ! This routine reads the next SLP update into the specified update ; 0505 ! buffer, parsing the command and accumulating the text. ; 0506 ! ; 0507 ! Calling Sequence: ; 0508 ! standard ; 0509 ! ; 0510 ! Input Parameters: ; 0511 MAP ; 0512 RAB : REF $RAB_DECL; ! RAB of input file to read ; 0513 ! ; 0514 ! Implicit Inputs: ; 0515 ! TPARSE SLP output area ; 0516 ! ; 0517 ! Output Parameters: ; 0518 MAP ; 0519 BUFFER : REF BLOCK; ! command buffer to build update in ; 0520 ! ; 0521 ! Implicit Outputs: ; 0522 ! none ; 0523 ! ; 0524 ! Routines Called: ; 0525 ! READ_LINE : NOVALUE; ! read a record from input file ; 0526 ! FORMAT_COMMAND, ! format a SLP command ; 0527 EXTERNAL ROUTINE ; 0528 LIB$TPARSE; ! library parser ; 0529 ! ; 0530 ! Routine Value: ; 0531 ! none ; 0532 ! ; 0533 ! Signals: ; 0534 ! none ; 0535 ! ; 0536 ! Side Effects: ; 0537 ! none ; 0538 ! ; 0539 !-- ; 0540 ; 0541 LOCAL ; 0542 C, ! size of formatted string ; 0543 BUFFER_END; ! pointer to text at end of buffer ; 0544 ; 0545 ; 0546 ! Start with the record read ahead in the line buffer. If it is a SLP command, ; 0547 ! parse it. Then reformat it into the text buffer area to guarantee SLP ; 0548 ! command uniformity. Otherwise just copy it into the text buffer. Then read ; 0549 ! and copy into the text buffer until another SLP command appears in the line ; 0550 ! buffer. ; 0551 ! ; 0552 ; 0553 BUFFER_END = BUFFER[UPD_TEXT]; ! init text pointer ; 0554 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 22 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) ; 0555 IF .RAB[RAB$W_RSZ] NEQ 0 ; 0556 AND (.(BUFFER[UPD_LINE])<0,8> EQL '-' ! look for SLP command ; 0557 OR .(BUFFER[UPD_LINE])<0,8> EQL '/') ; 0558 THEN ; 0559 BEGIN ; 0560 CH$FILL (0, 24, START_LINE); ; 0561 TPARSE_BLOCK[TPA$V_BLANKS] = 0; ; 0562 TPARSE_BLOCK[TPA$L_STRINGCNT] = .RAB[RAB$W_RSZ]; ; 0563 TPARSE_BLOCK[TPA$L_STRINGPTR] = .RAB[RAB$L_RBF]; ; 0564 IF NOT LIB$TPARSE (TPARSE_BLOCK, SLP_TABLE, SLP_KEY) ; 0565 THEN ERR_EXIT (ERR_SLPSYNTAX, .RAB); ; 0566 ; 0567 IF .START_LINE NEQ 0 ; 0568 THEN ; 0569 BEGIN ; 0570 BUFFER[RANGE_TOP] = .START_LINE; ; 0571 BUFFER[RANGE_END] = .END_LINE; ; 0572 END; ; 0573 IF .AUDIT_STRING[0] NEQ 0 ; 0574 THEN ; 0575 BEGIN ; 0576 BUFFER[AUDIT_LEN] = .AUDIT_STRING[0]; ; 0577 BUFFER[AUDIT_ADR] = BUFFER[AUDIT_TEXT]; ; 0578 CH$MOVE (.AUDIT_STRING[0], .AUDIT_STRING[1], BUFFER[AUDIT_TEXT]); ; 0579 END; ; 0580 BUFFER[COMMENT_LEN] = .COMMENT_STRING[0]; ; 0581 BUFFER[COMMENT_ADR] = BUFFER[COMMENT_TEXT]; ; 0582 CH$MOVE (.COMMENT_STRING[0], .COMMENT_STRING[1], BUFFER[COMMENT_TEXT]); ; 0583 ; 0584 C = FORMAT_COMMAND (BUFFER[RANGE_TOP], BUFFER[AUDIT_LEN], BUFFER[COMMENT_LEN], UPLIT (0, 0)); ; 0585 CH$COPY (.C, OUT_LINE, 0, .C+1, .BUFFER_END); ; 0586 BUFFER_END = .BUFFER_END + .C + 1; ; 0587 END ; 0588 ; 0589 ELSE ; 0590 BEGIN ; 0591 CH$COPY (.RAB[RAB$W_RSZ], .RAB[RAB$L_RBF], ; 0592 0, ; 0593 .RAB[RAB$W_RSZ]+1, .BUFFER_END); ; 0594 BUFFER_END = .BUFFER_END + .RAB[RAB$W_RSZ] + 1; ; 0595 END; ; 0596 ; 0597 ! The SLP end of edit command appears as a line number of -1. If this has ; 0598 ! happened, stop reading. ; 0599 ! ; 0600 ; 0601 IF .BUFFER[RANGE_TOP] EQL -1 ; 0602 THEN ; 0603 BEGIN ; 0604 BUFFER[UPD_SIZE] = 0; ; 0605 RETURN; ; 0606 END; ; 0607 ; 0608 ! Now read records and copy into the text buffer until another SLP command ; 0609 ! shows up. Parse the SLP command. If has a non-null start line, quit. Else ; 0610 ! reformat the command, include it in the text, and continue processing. ; 0611 ! ; 0612 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 23 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) ; 0613 WHILE 1 DO ; 0614 BEGIN ; 0615 READ_LINE (.RAB); ; 0616 IF .RAB[RAB$W_RSZ] NEQ 0 ; 0617 AND ((.(BUFFER[UPD_LINE])<0,8> EQL '-' ! look for SLP command ; 0618 AND (.BUFFER[RANGE_END] EQL 0 ; 0619 OR (.RAB[RAB$W_RSZ] GEQU 2 ; 0620 AND .(BUFFER[UPD_LINE])<8,8> NEQ ','))) ; 0621 OR .(BUFFER[UPD_LINE])<0,8> EQL '/') ; 0622 THEN ; 0623 BEGIN ; 0624 CH$FILL (0, 24, START_LINE); ; 0625 TPARSE_BLOCK[TPA$V_BLANKS] = 0; ; 0626 TPARSE_BLOCK[TPA$L_STRINGCNT] = .RAB[RAB$W_RSZ]; ; 0627 TPARSE_BLOCK[TPA$L_STRINGPTR] = .RAB[RAB$L_RBF]; ; 0628 IF NOT LIB$TPARSE (TPARSE_BLOCK, SLP_TABLE, SLP_KEY) ; 0629 THEN ERR_EXIT (ERR_SLPSYNTAX, .RAB); ; 0630 IF .START_LINE EQL 0 ; 0631 THEN ; 0632 BEGIN ; 0633 IF .AUDIT_STRING[0] EQL 0 ; 0634 THEN ; 0635 BEGIN ; 0636 AUDIT_STRING[0] = .BUFFER[AUDIT_LEN]; ; 0637 AUDIT_STRING[1] = .BUFFER[AUDIT_ADR]; ; 0638 END; ; 0639 C = FORMAT_COMMAND (BUFFER[RANGE_TOP], BUFFER[AUDIT_LEN], BUFFER[COMMENT_LEN], UPLIT (0, 0)); ; 0640 IF .BUFFER_END + .C + 1 GEQA BUFFER[UPD_TEXT] + 100000 ; 0641 THEN ERR_EXIT (ERR_BUFFOVER); ; 0642 CH$COPY (.C, OUT_LINE, 0, .C+1, .BUFFER_END); ; 0643 BUFFER_END = .BUFFER_END + .C + 1; ; 0644 END ; 0645 ; 0646 ELSE ; 0647 BEGIN ; 0648 BUFFER[UPD_SIZE] = .BUFFER_END - BUFFER[UPD_TEXT]; ; 0649 RETURN; ; 0650 END; ; 0651 END ; 0652 ; 0653 ELSE ; 0654 BEGIN ; 0655 IF .BUFFER_END + .RAB[RAB$W_RSZ] + 1 GEQA BUFFER[UPD_TEXT] + 100000 ; 0656 THEN ERR_EXIT (ERR_BUFFOVER); ; 0657 ; 0658 CH$COPY (.RAB[RAB$W_RSZ], .RAB[RAB$L_RBF], ; 0659 0, ; 0660 .RAB[RAB$W_RSZ]+1, .BUFFER_END); ; 0661 BUFFER_END = .BUFFER_END + .RAB[RAB$W_RSZ] + 1; ; 0662 END; ; 0663 END; ; 0664 ; 0665 END; ! end of routine GET_UPDATE .PSECT $PLIT$,NOWRT,NOEXE,2 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 24 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) 00000000 00000000 00034 P.AAE: .LONG 0, 0 ; 00000000 00000000 0003C P.AAF: .LONG 0, 0 ; .PSECT $CODE$,NOWRT,2 0FFC 00000 GET_UPDATE: .WORD Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11 ; 0497 56 08 AC D0 00002 MOVL BUFFER, R6 ; 0553 01A8 C6 9F 00006 PUSHAB 424(R6) ; 57 6E D0 0000A MOVL (SP), BUFFER_END ; 59 04 AC D0 0000D MOVL RAB, R9 ; 0555 58 22 A9 3C 00011 MOVZWL 34(R9), R8 ; 03 12 00015 BNEQ 2$ ; 00D1 31 00017 1$: BRW 7$ ; 2D 1C A6 91 0001A 2$: CMPB 28(R6), #45 ; 0556 06 13 0001E BEQL 3$ ; 2F 1C A6 91 00020 CMPB 28(R6), #47 ; 0557 F1 12 00024 BNEQ 1$ ; 18 00 6E 00 2C 00026 3$: MOVC5 #0, (SP), #0, #24, START_LINE ; 0560 00000000' EF 0002B ; 00000000' EF 01 8A 00030 BICB2 #1, TPARSE_BLOCK+4 ; 0561 00000000' EF 58 D0 00037 MOVL R8, TPARSE_BLOCK+8 ; 0562 00000000' EF 28 A9 D0 0003E MOVL 40(R9), TPARSE_BLOCK+12 ; 0563 00000000V EF 9F 00046 PUSHAB SLP_KEY ; 0564 00000000V EF 9F 0004C PUSHAB SLP_TABLE ; 00000000' EF 9F 00052 PUSHAB TPARSE_BLOCK ; 00000000G EF 03 FB 00058 CALLS #3, LIB$TPARSE ; 0F 50 E8 0005F BLBS R0, 4$ ; 59 DD 00062 PUSHL R9 ; 0565 00450020 8F DD 00064 PUSHL #4522016 ; 00000000G 00 02 FB 0006A CALLS #2, LIB$STOP ; 50 00000000' EF D0 00071 4$: MOVL START_LINE, R0 ; 0567 0B 13 00078 BEQL 5$ ; 66 50 D0 0007A MOVL R0, (R6) ; 0570 04 A6 00000000' EF D0 0007D MOVL END_LINE, 4(R6) ; 0571 50 00000000' EF D0 00085 5$: MOVL AUDIT_STRING, R0 ; 0573 14 13 0008C BEQL 6$ ; 08 A6 50 D0 0008E MOVL R0, 8(R6) ; 0576 0C A6 00A0 C6 9E 00092 MOVAB 160(R6), 12(R6) ; 0577 00A0 C6 00000000' FF 50 28 00098 MOVC3 R0, @AUDIT_STRING+4, 160(R6) ; 0578 10 A6 00000000' EF D0 000A2 6$: MOVL COMMENT_STRING, 16(R6) ; 0580 14 A6 0124 C6 9E 000AA MOVAB 292(R6), 20(R6) ; 0581 0124 C6 00000000' FF 00000000' EF 28 000B0 MOVC3 COMMENT_STRING, @COMMENT_STRING+4, 292(R6) ; 0582 00000000' EF 9F 000BE PUSHAB P.AAE ; 0584 10 A6 9F 000C4 PUSHAB 16(R6) ; 08 A6 9F 000C7 PUSHAB 8(R6) ; 56 DD 000CA PUSHL R6 ; 00000000V EF 04 FB 000CC CALLS #4, FORMAT_COMMAND ; 5A 50 D0 000D3 MOVL R0, C ; 50 01 AA 9E 000D6 MOVAB 1(R10), R0 ; 0585 50 00 00000000' EF 5A 2C 000DA MOVC5 C, OUT_LINE, #0, R0, (BUFFER_END) ; 67 000E3 ; 57 01 AA47 9E 000E4 MOVAB 1(C)[BUFFER_END], BUFFER_END ; 0586 10 11 000E9 BRB 8$ ; 0555 50 01 A8 9E 000EB 7$: MOVAB 1(R8), R0 ; 0593 50 00 28 B9 58 2C 000EF MOVC5 R8, @40(R9), #0, R0, (BUFFER_END) ; 0591 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 25 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) 67 000F5 ; 57 01 A847 9E 000F6 MOVAB 1(R8)[BUFFER_END], BUFFER_END ; 0594 FFFFFFFF 8F 66 D1 000FB 8$: CMPL (R6), #-1 ; 0601 04 12 00102 BNEQ 9$ ; 18 A6 D4 00104 CLRL 24(R6) ; 0604 04 00107 RET ; 0603 59 DD 00108 9$: PUSHL R9 ; 0615 00000000V EF 01 FB 0010A CALLS #1, READ_LINE ; 58 22 A9 3C 00111 MOVZWL 34(R9), R8 ; 0616 03 12 00115 BNEQ 11$ ; 00CB 31 00117 10$: BRW 18$ ; 2D 1C A6 91 0011A 11$: CMPB 28(R6), #45 ; 0617 10 12 0011E BNEQ 12$ ; 04 A6 D5 00120 TSTL 4(R6) ; 0618 11 13 00123 BEQL 13$ ; 02 58 B1 00125 CMPW R8, #2 ; 0619 06 1F 00128 BLSSU 12$ ; 2C 1D A6 91 0012A CMPB 29(R6), #44 ; 0620 06 12 0012E BNEQ 13$ ; 2F 1C A6 91 00130 12$: CMPB 28(R6), #47 ; 0621 E1 12 00134 BNEQ 10$ ; 18 00 6E 00 2C 00136 13$: MOVC5 #0, (SP), #0, #24, START_LINE ; 0624 00000000' EF 0013B ; 00000000' EF 01 8A 00140 BICB2 #1, TPARSE_BLOCK+4 ; 0625 00000000' EF 58 D0 00147 MOVL R8, TPARSE_BLOCK+8 ; 0626 00000000' EF 28 A9 D0 0014E MOVL 40(R9), TPARSE_BLOCK+12 ; 0627 00000000V EF 9F 00156 PUSHAB SLP_KEY ; 0628 00000000V EF 9F 0015C PUSHAB SLP_TABLE ; 00000000' EF 9F 00162 PUSHAB TPARSE_BLOCK ; 00000000G EF 03 FB 00168 CALLS #3, LIB$TPARSE ; 0F 50 E8 0016F BLBS R0, 14$ ; 59 DD 00172 PUSHL R9 ; 0629 00450020 8F DD 00174 PUSHL #4522016 ; 00000000G 00 02 FB 0017A CALLS #2, LIB$STOP ; 00000000' EF D5 00181 14$: TSTL START_LINE ; 0630 56 12 00187 BNEQ 17$ ; 00000000' EF D5 00189 TSTL AUDIT_STRING ; 0633 08 12 0018F BNEQ 15$ ; 00000000' EF 08 A6 7D 00191 MOVQ 8(R6), AUDIT_STRING ; 0636 00000000' EF 9F 00199 15$: PUSHAB P.AAF ; 0639 10 A6 9F 0019F PUSHAB 16(R6) ; 08 A6 9F 001A2 PUSHAB 8(R6) ; 56 DD 001A5 PUSHL R6 ; 00000000V EF 04 FB 001A7 CALLS #4, FORMAT_COMMAND ; 5A 50 D0 001AE MOVL R0, C ; 5B 01 AA47 9E 001B1 MOVAB 1(C)[BUFFER_END], R11 ; 0640 50 00018848 E6 9E 001B6 MOVAB 100424(R6), R0 ; 50 5B D1 001BD CMPL R11, R0 ; 0D 1F 001C0 BLSSU 16$ ; 00450028 8F DD 001C2 PUSHL #4522024 ; 0641 00000000G 00 01 FB 001C8 CALLS #1, LIB$STOP ; 50 01 AA 9E 001CF 16$: MOVAB 1(R10), R0 ; 0642 50 00 00000000' EF 5A 2C 001D3 MOVC5 C, OUT_LINE, #0, R0, (BUFFER_END) ; 67 001DC ; 2F 11 001DD BRB 20$ ; 0643 18 A6 57 6E C3 001DF 17$: SUBL3 (SP), BUFFER_END, 24(R6) ; 0648 04 001E4 RET ; 0647 5B 01 A847 9E 001E5 18$: MOVAB 1(R8)[BUFFER_END], R11 ; 0655 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 26 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (6) 50 00018848 E6 9E 001EA MOVAB 100424(R6), R0 ; 50 5B D1 001F1 CMPL R11, R0 ; 0D 1F 001F4 BLSSU 19$ ; 00450028 8F DD 001F6 PUSHL #4522024 ; 0656 00000000G 00 01 FB 001FC CALLS #1, LIB$STOP ; 50 01 A8 9E 00203 19$: MOVAB 1(R8), R0 ; 0660 50 00 28 B9 58 2C 00207 MOVC5 R8, @40(R9), #0, R0, (BUFFER_END) ; 0658 67 0020D ; 57 5B D0 0020E 20$: MOVL R11, BUFFER_END ; 0661 FEF4 31 00211 BRW 9$ ; 0613 ; Routine Size: 532 bytes, Routine Base: $CODE$ + 0348 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 27 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (7) ; 0666 ROUTINE READ_LINE (RAB) : NOVALUE = ; 0667 BEGIN ; 0668 ; 0669 !++ ; 0670 ! ; 0671 ! Functional Description: ; 0672 ! ; 0673 ! This routine reads the next line from the specified input file. ; 0674 ! ; 0675 ! Calling Sequence: ; 0676 ! standard ; 0677 ! ; 0678 ! Input Parameters: ; 0679 MAP ; 0680 RAB : REF $RAB_DECL; ! RAB to read with ; 0681 ! ; 0682 ! Implicit Inputs: ; 0683 ! none ; 0684 ! ; 0685 ! Output Parameters: ; 0686 ! none ; 0687 ! ; 0688 ! Implicit Outputs: ; 0689 ! line buffer pointed to by RAB ; 0690 ! ; 0691 ! Routines Called: ; 0692 ! SYS$GET ; 0693 ! ; 0694 ! Routine Value: ; 0695 ! none ; 0696 ! ; 0697 ! Signals: ; 0698 ! none ; 0699 ! ; 0700 ! Side Effects: ; 0701 ! none ; 0702 ! ; 0703 !-- ; 0704 ; 0705 ; 0706 ! Just get the record and check for errors. ; 0707 ! ; 0708 ; 0709 IF NOT $GET (RAB = .RAB) ; 0710 THEN ERR_EXIT (ERR_READIN, .RAB); ; 0711 ; 0712 END; ! end of routine READ_LINE .EXTRN SYS$GET 0000 00000 READ_LINE: .WORD Save nothing ; 0666 04 AC DD 00002 PUSHL RAB ; 0709 00000000G 9F 01 FB 00005 CALLS #1, @#SYS$GET ; 10 50 E8 0000C BLBS R0, 1$ ; 04 AC DD 0000F PUSHL RAB ; 0710 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 28 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (7) 00450030 8F DD 00012 PUSHL #4522032 ; 00000000G 00 02 FB 00018 CALLS #2, LIB$STOP ; 04 0001F 1$: RET ; 0666 ; Routine Size: 32 bytes, Routine Base: $CODE$ + 055C EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 29 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8) ; 0713 ROUTINE FORMAT_COMMAND (RANGE, AUDIT, COMMENT1, COMMENT2) = ; 0714 BEGIN ; 0715 ; 0716 !++ ; 0717 ! ; 0718 ! Functional Description: ; 0719 ! ; 0720 ! This routine formats a SLP command containing the given data. ; 0721 ! ; 0722 ! Calling Sequence: ; 0723 ! standard ; 0724 ! ; 0725 ! Input Parameters: ; 0726 MAP ; 0727 RANGE : REF VECTOR [2], ! start and end line numbers ; 0728 AUDIT : REF VECTOR [2], ! descriptor of audit trail string ; 0729 COMMENT1 : REF VECTOR [2], ! descriptor of comment string ; 0730 COMMENT2 : REF VECTOR [2]; ! descriptor of second comment string ; 0731 ! COMMENT2 is optional and is concatenated if non-null ; 0732 ! ; 0733 ! Implicit Inputs: ; 0734 ! OUTRAB : $RAB_DECL; ! RAB of output file ; 0735 ! ; 0736 ! Output Parameters: ; 0737 ! none ; 0738 ! ; 0739 ! Implicit Outputs: ; 0740 ! OUT_LINE : VECTOR [132, BYTE]; ! buffer to build output record ; 0741 ! ; 0742 ! Routines Called: ; 0743 ! SYS$PUT ; 0744 ! ; 0745 ! Routine Value: ; 0746 ! none ; 0747 ! ; 0748 ! Signals: ; 0749 ! none ; 0750 ! ; 0751 ! Side Effects: ; 0752 ! record written ; 0753 ! ; 0754 !-- ; 0755 ; 0756 LOCAL ; 0757 C, ! character counter ; 0758 FORMAT : REF VECTOR [,BYTE], ! format string pointer ; 0759 OUT_STRING : VECTOR [2]; ! descriptor for FAO output buffer ; 0760 ; 0761 ! ; 0762 ! FAO control strings to generate SLP commands ; 0763 ! ; 0764 BIND ; 0765 NULL_CMD = DESCRIPTOR ('-!+,!+,/!AS/'), ; 0766 INSERT_CMD = DESCRIPTOR ('-!UL,!+,/!AS/'), ; 0767 REPLACE_CMD = DESCRIPTOR ('-!UL,!UL,/!AS/'); ; 0768 ; 0769 ; 0770 ! Select the appropriate format string according to the range values. EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 30 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8) ; 0771 ! ; 0772 ; 0773 FORMAT = NULL_CMD; ! assume null ; 0774 IF .RANGE[0] NEQ 0 ; 0775 THEN ; 0776 BEGIN ; 0777 FORMAT = INSERT_CMD; ! use insert ; 0778 IF .RANGE[1] NEQ 0 ; 0779 THEN FORMAT = REPLACE_CMD; ! use replace ; 0780 END; ; 0781 ; 0782 ! Now generate the SLP command with FAO ; 0783 ! ; 0784 ; 0785 OUT_STRING[0] = 132; ! buffer length ; 0786 OUT_STRING[1] = OUT_LINE; ! buffer address ; P 0787 $FAO ( ; P 0788 .FORMAT, ; P 0789 OUT_STRING[0], ; P 0790 OUT_STRING[0], ; P 0791 .RANGE[0], ; P 0792 .RANGE[1], ; P 0793 AUDIT[0] ; 0794 ); ; 0795 C = .OUT_STRING[0]; ; 0796 ; 0797 ! Append the comment strings, if any are present. ; 0798 ! ; 0799 ; 0800 IF .COMMENT1[0] NEQ 0 ; 0801 OR .COMMENT2[0] NEQ 0 ; 0802 THEN ; 0803 BEGIN ; 0804 (OUT_LINE[.C])<0,16> = ' ; '; ; 0805 C = .C + 2; ; 0806 ; 0807 IF .COMMENT1[0] NEQ 0 ; 0808 THEN ; 0809 BEGIN ; 0810 CH$COPY (1, UPLIT BYTE (' '), .COMMENT1[0], .COMMENT1[1], ; 0811 ' ', 132-.C, OUT_LINE[.C]); ; 0812 C = MINU (.C+.COMMENT1[0]+1, 132); ; 0813 END; ; 0814 ; 0815 IF .COMMENT2[0] NEQ 0 ; 0816 THEN ; 0817 BEGIN ; 0818 CH$COPY (.COMMENT2[0], .COMMENT2[1], ' ', 132-.C, OUT_LINE[.C]); ; 0819 C = MINU (.C+.COMMENT2[0], 132); ; 0820 END; ; 0821 END; ; 0822 ; 0823 RETURN .C; ; 0824 ; 0825 END; ! end of routine FORMAT_COMMAND EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 31 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8) .PSECT $PLIT$,NOWRT,NOEXE,2 2F 53 41 21 2F 2C 2B 21 2C 2B 21 2D 00044 P.AAH: .ASCII \-!+,!+,/!AS/\ ; 0000000C 00050 P.AAG: .LONG 12 ; 00000000' 00054 .ADDRESS P.AAH ; 2F 53 41 21 2F 2C 2B 21 2C 4C 55 21 2D 00058 P.AAJ: .ASCII \-!UL,!+,/!AS/\ ; 00065 .BLKB 3 0000000D 00068 P.AAI: .LONG 13 ; 00000000' 0006C .ADDRESS P.AAJ ; 2F 53 41 21 2F 2C 4C 55 21 2C 4C 55 21 2D 00070 P.AAL: .ASCII \-!UL,!UL,/!AS/\ ; 0007E .BLKB 2 0000000E 00080 P.AAK: .LONG 14 ; 00000000' 00084 .ADDRESS P.AAL ; 20 00088 P.AAM: .ASCII \ \ ; NULL_CMD= P.AAG INSERT_CMD= P.AAI REPLACE_CMD= P.AAK .PSECT $CODE$,NOWRT,2 0FFC 00000 FORMAT_COMMAND: .WORD Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11 ; 0713 5B 00000000' EF 9E 00002 MOVAB OUT_LINE, R11 ; 5E 08 C2 00009 SUBL2 #8, SP ; 51 00000000' EF 9E 0000C MOVAB NULL_CMD, FORMAT ; 0714 50 04 AC D0 00013 MOVL RANGE, R0 ; 0774 60 D5 00017 TSTL (R0) ; 13 13 00019 BEQL 1$ ; 51 00000000' EF 9E 0001B MOVAB INSERT_CMD, FORMAT ; 0776 04 A0 D5 00022 TSTL 4(R0) ; 0778 07 13 00025 BEQL 1$ ; 51 00000000' EF 9E 00027 MOVAB REPLACE_CMD, FORMAT ; 6E 84 8F 9A 0002E 1$: MOVZBL #132, OUT_STRING ; 0785 04 AE 6B 9E 00032 MOVAB OUT_LINE, OUT_STRING+4 ; 0786 08 AC DD 00036 PUSHL AUDIT ; 0794 7E 60 7D 00039 MOVQ (R0), -(SP) ; 0C AE 9F 0003C PUSHAB OUT_STRING ; 10 AE 9F 0003F PUSHAB OUT_STRING ; 51 DD 00042 PUSHL FORMAT ; 00000000G 9F 06 FB 00044 CALLS #6, @#SYS$FAO ; 56 6E D0 0004B MOVL OUT_STRING, C ; 0795 57 0C AC D0 0004E MOVL COMMENT1, R7 ; 0800 59 67 D0 00052 MOVL (R7), R9 ; 50 D4 00055 CLRL R0 ; 59 D5 00057 TSTL R9 ; 04 13 00059 BEQL 2$ ; 50 D6 0005B INCL R0 ; 05 11 0005D BRB 3$ ; 10 BC D5 0005F 2$: TSTL @COMMENT2 ; 0801 72 13 00062 BEQL 8$ ; 6B46 9F 00064 3$: PUSHAB OUT_LINE[C] ; 0804 9E 3B09 8F B0 00067 MOVW #15113, @(SP)+ ; 56 02 C0 0006C ADDL2 #2, C ; 0805 38 50 E9 0006F BLBC R0, 6$ ; 0807 58 00000084 8F 56 C3 00072 SUBL3 C, #132, R8 ; 0811 5A 56 5B C1 0007A ADDL3 R11, C, R10 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 32 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (8) 58 20 00000000' EF 01 2C 0007E MOVC5 #1, P.AAM, #32, R8, (R10) ; 0810 6A 00087 ; 0B 18 00088 BGEQ 4$ ; 5A D6 0008A INCL R10 ; 58 D7 0008C DECL R8 ; 58 20 04 B7 59 2C 0008E MOVC5 R9, @4(R7), #32, R8, (R10) ; 6A 00094 ; 50 01 A946 9E 00095 4$: MOVAB 1(R9)[C], R0 ; 0812 00000084 8F 50 D1 0009A CMPL R0, #132 ; 04 1B 000A1 BLEQU 5$ ; 50 84 8F 9A 000A3 MOVZBL #132, R0 ; 56 50 D0 000A7 5$: MOVL R0, C ; 57 10 AC D0 000AA 6$: MOVL COMMENT2, R7 ; 0815 67 D5 000AE TSTL (R7) ; 24 13 000B0 BEQL 8$ ; 50 00000084 8F 56 C3 000B2 SUBL3 C, #132, R0 ; 0818 50 20 04 B7 67 2C 000BA MOVC5 (R7), @4(R7), #32, R0, OUT_LINE[C] ; 6B46 000C0 ; 50 56 67 C1 000C2 ADDL3 (R7), C, R0 ; 0819 00000084 8F 50 D1 000C6 CMPL R0, #132 ; 04 1B 000CD BLEQU 7$ ; 50 84 8F 9A 000CF MOVZBL #132, R0 ; 56 50 D0 000D3 7$: MOVL R0, C ; 50 56 D0 000D6 8$: MOVL C, R0 ; 0714 04 000D9 RET ; 0713 ; Routine Size: 218 bytes, Routine Base: $CODE$ + 057C EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 33 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (9) ; 0826 ROUTINE OUTPUT_TEXT (SIZE, BUFFER) : NOVALUE = ; 0827 BEGIN ; 0828 ; 0829 !++ ; 0830 ! ; 0831 ! Functional Description: ; 0832 ! ; 0833 ! This routine writes the contents of the indicated text buffer to ; 0834 ! the output file. Lines of text are terminated with nulls. ; 0835 ! ; 0836 ! Calling Sequence: ; 0837 ! standard ; 0838 ! ; 0839 ! Input Parameters: ; 0840 MAP ; 0841 SIZE, ! byte count of buffer ; 0842 BUFFER : REF VECTOR [,BYTE]; ; 0843 ! ; 0844 ! Implicit Inputs: ; 0845 MAP ; 0846 OUTRAB : $RAB_DECL; ! RAB for output file ; 0847 ! ; 0848 ! Output Parameters: ; 0849 ! none ; 0850 ! ; 0851 ! Implicit Outputs: ; 0852 ! none ; 0853 ! ; 0854 ! Routines Called: ; 0855 ! WRITE_LINE; ! write line of text to output ; 0856 ! ; 0857 ! Routine Value: ; 0858 ! none ; 0859 ! ; 0860 ! Signals: ; 0861 ! none ; 0862 ! ; 0863 ! Side Effects: ; 0864 ! records written ; 0865 ! ; 0866 !-- ; 0867 ; 0868 LOCAL ; 0869 P, ! text pointer ; 0870 P0; ! another text pointer ; 0871 ; 0872 ; 0873 ! Loop, scanning the text for line end markers. As each is found, write that ; 0874 ! line. Stop when the buffer has been scanned. ; 0875 ! ; 0876 ; 0877 P = .BUFFER; ! init pointer ; 0878 UNTIL .P GEQA .BUFFER + .SIZE ; 0879 DO ; 0880 BEGIN ; 0881 P0 = .P; ! mark start of current line ; 0882 P = CH$FIND_CH (.SIZE-(.P0-.BUFFER), .P0, 0); ; 0883 OUTRAB[RAB$W_RSZ] = .P - .P0; ! set record length EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 34 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (9) ; 0884 OUTRAB[RAB$L_RBF] = .P0; ! and record address ; 0885 WRITE_LINE (OUTRAB); ; 0886 P = .P + 1; ! eat the null ; 0887 END; ; 0888 ; 0889 END; ! end of routine OUTPUT_TEXT 003C 00000 OUTPUT_TEXT: .WORD Save R2,R3,R4,R5 ; 0826 55 00000000' EF 9E 00002 MOVAB OUTRAB+34, R5 ; 52 08 AC D0 00009 MOVL BUFFER, P ; 0877 54 08 AC 04 AC C1 0000D ADDL3 SIZE, BUFFER, R4 ; 0878 54 52 D1 00013 1$: CMPL P, R4 ; 2D 1E 00016 BGEQU 3$ ; 53 52 D0 00018 MOVL P, P0 ; 0881 50 08 AC 53 C3 0001B SUBL3 P0, BUFFER, R0 ; 0882 50 04 AC C0 00020 ADDL2 SIZE, R0 ; 63 50 00 3A 00024 LOCC #0, R0, (P0) ; 02 12 00028 BNEQ 2$ ; 51 D4 0002A CLRL R1 ; 52 51 D0 0002C 2$: MOVL R1, P ; 65 52 53 A3 0002F SUBW3 P0, P, OUTRAB+34 ; 0883 06 A5 53 D0 00033 MOVL P0, OUTRAB+40 ; 0884 DE A5 9F 00037 PUSHAB OUTRAB ; 0885 00000000V EF 01 FB 0003A CALLS #1, WRITE_LINE ; 52 D6 00041 INCL P ; 0886 CE 11 00043 BRB 1$ ; 0878 04 00045 3$: RET ; 0826 ; Routine Size: 70 bytes, Routine Base: $CODE$ + 0656 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 35 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (10) ; 0890 ROUTINE WRITE_LINE (RAB) : NOVALUE = ; 0891 BEGIN ; 0892 ; 0893 !++ ; 0894 ! ; 0895 ! Functional Description: ; 0896 ! ; 0897 ! This routine writes the next line to the specified output file. ; 0898 ! ; 0899 ! Calling Sequence: ; 0900 ! standard ; 0901 ! ; 0902 ! Input Parameters: ; 0903 MAP ; 0904 RAB : REF $RAB_DECL; ! RAB to write with ; 0905 ! ; 0906 ! Implicit Inputs: ; 0907 ! line buffer pointed to by RAB ; 0908 ! ; 0909 ! Output Parameters: ; 0910 ! none ; 0911 ! ; 0912 ! Implicit Outputs: ; 0913 ! none ; 0914 ! ; 0915 ! Routines Called: ; 0916 ! SYS$PUT ; 0917 ! ; 0918 ! Routine Value: ; 0919 ! none ; 0920 ! ; 0921 ! Signals: ; 0922 ! none ; 0923 ! ; 0924 ! Side Effects: ; 0925 ! none ; 0926 ! ; 0927 !-- ; 0928 ; 0929 ; 0930 ! Just put the record and check for errors. ; 0931 ! ; 0932 ; 0933 IF NOT $PUT (RAB = .RAB) ; 0934 THEN ERR_EXIT (ERR_WRITEOUT, .RAB); ; 0935 ; 0936 END; ! end of routine WRITE_LINE .EXTRN SYS$PUT 0000 00000 WRITE_LINE: .WORD Save nothing ; 0890 04 AC DD 00002 PUSHL RAB ; 0933 00000000G 9F 01 FB 00005 CALLS #1, @#SYS$PUT ; 10 50 E8 0000C BLBS R0, 1$ ; 04 AC DD 0000F PUSHL RAB ; 0934 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 36 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (10) 00450038 8F DD 00012 PUSHL #4522040 ; 00000000G 00 02 FB 00018 CALLS #2, LIB$STOP ; 04 0001F 1$: RET ; 0890 ; Routine Size: 32 bytes, Routine Base: $CODE$ + 069C EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 37 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11) ; 0937 ROUTINE HANDLER (SIGNAL, MECHANISM) = ; 0938 BEGIN ; 0939 ; 0940 !++ ; 0941 ! ; 0942 ! Functional Description: ; 0943 ! ; 0944 ! This routine is the condition handler for the utility. It receives ; 0945 ! a signal which is the error code of the message to print. If ; 0946 ! a secondary signal argument is present, it is the FAB or RAB ; 0947 ! address of the file in question, from which the file name and ; 0948 ! error status will be output. ; 0949 ! ; 0950 ! Calling Sequence: ; 0951 ! standard ; 0952 ! ; 0953 ! Input Parameters: ; 0954 MAP ; 0955 SIGNAL : REF BLOCK [,BYTE], ! address of signal vector ; 0956 MECHANISM : REF BLOCK [,BYTE]; ! address of mechanism vector ; 0957 ! ; 0958 ! Implicit Inputs: ; 0959 ! none ; 0960 ! ; 0961 ! Output Parameters: ; 0962 ! none ; 0963 ! ; 0964 ! Implicit Outputs: ; 0965 ! none ; 0966 ! ; 0967 ! Routines Called: ; 0968 EXTERNAL ROUTINE ; 0969 LIB$PUT_OUTPUT : ADDRESSING_MODE (GENERAL), ; 0970 ! library output routine ; 0971 LIB$SIGNAL : ADDRESSING_MODE (GENERAL); ; 0972 ! library signal routine ; 0973 ! ; 0974 ! Routine Value: ; 0975 ! SS$_RESIGNAL ; 0976 ! ; 0977 ! Signals: ; 0978 ! none ; 0979 ! ; 0980 ! Side Effects: ; 0981 ! stack unwound, control returned to caller of facility ; 0982 ! ; 0983 !-- ; 0984 ; 0985 LOCAL ; 0986 C, ! string character count ; 0987 P : REF VECTOR [,BYTE], ! string pointer ; 0988 STS, ! RMS status ; 0989 STV, ! RMS status value ; 0990 ERR_CODE : BLOCK [4, BYTE], ! error code being signalled ; 0991 MSG_DESC : VECTOR [2], ! message text descriptor ; 0992 MSG_BUFFER : VECTOR [132, BYTE], ! message text buffer ; 0993 FAB : REF $FAB_DECL, ! local FAB pointer ; 0994 NAM : REF $NAM_DECL; ! local NAM pointer EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 38 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11) ; 0995 ; 0996 ; 0997 ! Get the signal code. If it is a local error message, do error processing. ; 0998 ! Otherwise, just resignal the error. ; 0999 ! ; 1000 ; 1001 STS = 1; ; 1002 ERR_CODE = .SIGNAL[CHF$L_SIG_NAME] - FAC_CODE^16; ; 1003 IF .ERR_CODE[STS$V_FAC_NO] EQL 0 ; 1004 THEN ; 1005 BEGIN ; 1006 ERR_CODE = .ERR_CODE[STS$V_MSG_NO]; ; 1007 P = .MESSAGE_TABLE[.ERR_CODE]; ; 1008 MSG_DESC[0] = .(.P)<0,8>; ; 1009 MSG_DESC[1] = MSG_BUFFER; ; 1010 CH$MOVE (.(.P)<0,8>, .P+1, MSG_BUFFER); ; 1011 ; 1012 IF .SIGNAL[CHF$L_SIG_ARGS] GEQU 4 ; 1013 THEN ; 1014 BEGIN ; 1015 FAB = .SIGNAL[CHF$L_SIG_ARG1]; ; 1016 STS = .FAB[FAB$L_STS]; ; 1017 STV = .FAB[FAB$L_STV]; ; 1018 IF .FAB[FAB$B_BID] EQL RAB$C_BID ; 1019 THEN FAB = .FAB[RAB$L_FAB]; ; 1020 ; 1021 NAM = .FAB[FAB$L_NAM]; ; 1022 C = .NAM[NAM$B_RSL]; ; 1023 P = .NAM[NAM$L_RSA]; ; 1024 IF .C EQL 0 ; 1025 THEN ; 1026 BEGIN ; 1027 C = .NAM[NAM$B_ESL]; ; 1028 P = .NAM[NAM$L_ESA]; ; 1029 END; ; 1030 IF .C EQL 0 ; 1031 THEN ; 1032 BEGIN ; 1033 C = .FAB[FAB$B_FNS]; ; 1034 P = .FAB[FAB$L_FNA]; ; 1035 END; ; 1036 ; 1037 CH$MOVE (.C, .P, .MSG_DESC[1] + .MSG_DESC[0]); ; 1038 MSG_DESC[0] = .MSG_DESC[0] + .C; ; 1039 END; ; 1040 ; 1041 LIB$PUT_OUTPUT (MSG_DESC[0]); ; 1042 ; 1043 IF NOT .STS ; 1044 THEN LIB$SIGNAL (.STS, .STV); ; 1045 MECHANISM[CHF$L_MCH_SAVR0] = STS$K_ERROR OR STS$M_INHIB_MSG; ; 1046 $UNWIND (); ; 1047 END; ; 1048 ; 1049 SS$_RESIGNAL ; 1050 ; 1051 END; ! end of routine HANDLER EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 39 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (11) .EXTRN LIB$SIGNAL, SYS$UNWIND 03FC 00000 HANDLER:.WORD Save R2,R3,R4,R5,R6,R7,R8,R9 ; 0937 5E FF74 CE 9E 00002 MOVAB -140(SP), SP ; 58 01 D0 00007 MOVL #1, STS ; 1001 56 04 AC D0 0000A MOVL SIGNAL, R6 ; 1002 50 04 A6 00450000 8F C3 0000E SUBL3 #4521984, 4(R6), ERR_CODE ; 00 50 0C 10 ED 00017 CMPZV #16, #12, ERR_CODE, #0 ; 1003 03 13 0001C BEQL 1$ ; 0091 31 0001E BRW 7$ ; 50 50 0D 03 EF 00021 1$: EXTZV #3, #13, ERR_CODE, ERR_CODE ; 1006 57 00000000'EF40 D0 00026 MOVL MESSAGE_TABLE[ERR_CODE], P ; 1007 F8 AD 67 9A 0002E MOVZBL (P), MSG_DESC ; 1008 FC AD 6E 9E 00032 MOVAB MSG_BUFFER, MSG_DESC+4 ; 1009 50 67 9A 00036 MOVZBL (P), R0 ; 1010 6E 01 A7 50 28 00039 MOVC3 R0, 1(P), MSG_BUFFER ; 04 66 D1 0003E CMPL (R6), #4 ; 1012 43 1F 00041 BLSSU 5$ ; 50 08 A6 D0 00043 MOVL 8(R6), FAB ; 1015 58 08 A0 7D 00047 MOVQ 8(FAB), STS ; 1016 01 60 91 0004B CMPB (FAB), #1 ; 1018 04 12 0004E BNEQ 2$ ; 50 3C A0 D0 00050 MOVL 60(FAB), FAB ; 1019 51 28 A0 D0 00054 2$: MOVL 40(FAB), NAM ; 1021 56 03 A1 9A 00058 MOVZBL 3(NAM), C ; 1022 57 04 A1 D0 0005C MOVL 4(NAM), P ; 1023 56 D5 00060 TSTL C ; 1024 08 12 00062 BNEQ 3$ ; 56 0B A1 9A 00064 MOVZBL 11(NAM), C ; 1027 57 0C A1 D0 00068 MOVL 12(NAM), P ; 1028 56 D5 0006C 3$: TSTL C ; 1030 08 12 0006E BNEQ 4$ ; 56 34 A0 9A 00070 MOVZBL 52(FAB), C ; 1033 57 2C A0 D0 00074 MOVL 44(FAB), P ; 1034 50 FC AD F8 AD C1 00078 4$: ADDL3 MSG_DESC, MSG_DESC+4, R0 ; 1037 60 67 56 28 0007E MOVC3 C, (P), (R0) ; F8 AD 56 C0 00082 ADDL2 C, MSG_DESC ; 1038 F8 AD 9F 00086 5$: PUSHAB MSG_DESC ; 1041 00000000G 00 01 FB 00089 CALLS #1, LIB$PUT_OUTPUT ; 0A 58 E8 00090 BLBS STS, 6$ ; 1043 7E 58 7D 00093 MOVQ STS, -(SP) ; 1044 00000000G 00 02 FB 00096 CALLS #2, LIB$SIGNAL ; 50 08 AC D0 0009D 6$: MOVL MECHANISM, R0 ; 1045 0C A0 10000002 8F D0 000A1 MOVL #268435458, 12(R0) ; 7E 7C 000A9 CLRQ -(SP) ; 1046 00000000G 9F 02 FB 000AB CALLS #2, @#SYS$UNWIND ; 50 0918 8F 3C 000B2 7$: MOVZWL #2328, R0 ; 0937 04 000B7 RET ; ; Routine Size: 184 bytes, Routine Base: $CODE$ + 06BC EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 40 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) ; 1052 !+ ; 1053 ! ; 1054 ! TPARSE State Tables ; 1055 ! ; 1056 !- ; 1057 ; 1058 ! ; 1059 ! Parse command line ; 1060 ! ; 1061 ; 1062 $INIT_STATE (CMD_TABLE, CMD_KEY); ; 1063 ; P 1064 $STATE (FIRST, ; P 1065 ((FILESPEC),,,,FILE1), ; P 1066 ((OPTION),FIRST) ; 1067 ); ; 1068 ; P 1069 $STATE (, ; P 1070 (TPA$_BLANK), ; P 1071 ((OPTION)) ; 1072 ); ; 1073 ; P 1074 $STATE (SECOND, ; P 1075 ((FILESPEC),,,,FILE2), ; P 1076 ((OPTION), SECOND) ; 1077 ); ; 1078 ; P 1079 $STATE (LAST, ; P 1080 ((OPTION), LAST), ; P 1081 (TPA$_EOS, TPA$_EXIT) ; 1082 ); ; 1083 ; P 1084 $STATE (OPTION, ; P 1085 (TPA$_BLANK), ; P 1086 (TPA$_LAMBDA) ; 1087 ); ; 1088 ; P 1089 $STATE (, ; P 1090 ('/') ; 1091 ); ; 1092 ; P 1093 $STATE (, ; P 1094 ('OUTPUT') ; 1095 ); ; 1096 ; P 1097 $STATE (, ; P 1098 ('='), ; P 1099 (':') ; 1100 ); ; 1101 ; P 1102 $STATE (, ; P 1103 ((FILESPEC),,,, OUTFILE) ; 1104 ); ; 1105 ; P 1106 $STATE (, ; P 1107 (TPA$_BLANK, TPA$_EXIT), ; P 1108 (TPA$_LAMBDA, TPA$_EXIT) ; 1109 ); EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 41 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) ; 1110 ; P 1111 $STATE (FILESPEC, ; P 1112 ((FILESPECC)) ; 1113 ); ; 1114 ; P 1115 $STATE (FILESPEC1, ; P 1116 ((FILESPECC), FILESPEC1), ; P 1117 (TPA$_LAMBDA, TPA$_EXIT) ; 1118 ); ; 1119 ; P 1120 $STATE (FILESPECC, ; P 1121 (TPA$_SYMBOL, TPA$_EXIT), ; P 1122 ((QUOTED), TPA$_EXIT), ; P 1123 (':', TPA$_EXIT), ; P 1124 ('[', TPA$_EXIT), ; P 1125 (']', TPA$_EXIT), ; P 1126 ('<', TPA$_EXIT), ; P 1127 ('>', TPA$_EXIT), ; P 1128 ('.', TPA$_EXIT), ; P 1129 (';', TPA$_EXIT), ; P 1130 ('-', TPA$_EXIT) ; 1131 ); ; 1132 ; P 1133 $STATE (QUOTED, ; P 1134 ('"') ; 1135 ); ; 1136 ; P 1137 $STATE (QUOTED1, ; P 1138 ('"', TPA$_EXIT), ; P 1139 (TPA$_ANY, QUOTED1) ; 1140 ); ; 1141 ; 1142 ! ; 1143 ! Parse a SLP command ; 1144 ! ; 1145 ; 1146 $INIT_STATE (SLP_TABLE, SLP_KEY); ; 1147 ; P 1148 $STATE (, ; P 1149 ('/', TPA$_EXIT,, -1, START_LINE), ; P 1150 ('-') ; 1151 ); ; 1152 ; P 1153 $STATE (, ; P 1154 (TPA$_DECIMAL,,,, START_LINE), ; P 1155 (TPA$_LAMBDA) ; 1156 ); ; 1157 ; P 1158 $STATE (, ; P 1159 (','), ; P 1160 (';', CHKCOMM), ; P 1161 (TPA$_EOS, TPA$_EXIT) ; 1162 ); ; 1163 ; P 1164 $STATE (, ; P 1165 (TPA$_DECIMAL,,,, END_LINE), ; P 1166 (TPA$_LAMBDA) ; 1167 ); EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 42 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) ; 1168 ; P 1169 $STATE (, ; P 1170 (','), ; P 1171 (';', CHKCOMM), ; P 1172 (TPA$_EOS, TPA$_EXIT) ; 1173 ); ; 1174 ; P 1175 $STATE (, ; P 1176 ('/'), ; P 1177 (';', CHKCOMM), ; P 1178 (TPA$_EOS, TPA$_EXIT) ; 1179 ); ; 1180 ; P 1181 $STATE (, ; P 1182 ((AUDIT),,,, AUDIT_STRING) ; 1183 ); ; 1184 ; P 1185 $STATE (, ; P 1186 ('/'), ; P 1187 (TPA$_EOS, TPA$_EXIT) ; 1188 ); ; 1189 ; P 1190 $STATE (, ; P 1191 (';'), ; P 1192 (TPA$_EOS, TPA$_EXIT) ; 1193 ); ; 1194 ; P 1195 $STATE (CHKCOMM, ; P 1196 ((COMMENT),,,, COMMENT_STRING), ; P 1197 (TPA$_EOS, TPA$_EXIT) ; 1198 ); ; 1199 ; P 1200 $STATE (, ; P 1201 (TPA$_EOS, TPA$_EXIT) ; 1202 ); ; 1203 ; P 1204 $STATE (AUDIT, ; P 1205 ((AUDITC), AUDIT), ; P 1206 (TPA$_LAMBDA, TPA$_EXIT) ; 1207 ); ; 1208 ; P 1209 $STATE (AUDITC, ; P 1210 ('/', TPA$_FAIL), ; P 1211 (TPA$_ANY, TPA$_EXIT) ; 1212 ); ; 1213 ; P 1214 $STATE (COMMENT, ; P 1215 (TPA$_ANY, COMMENT), ; P 1216 (TPA$_EOS, TPA$_EXIT) ; 1217 ); ; 1218 ; 1219 END ; 1220 ELUDOM .PSECT _LIB$KEY1$,NOWRT, SHR, PIC,0 EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 43 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) 00000 ;TPA$KEYST0 U.43: .BLKB 0 54 55 50 54 55 4F 00000 U.45: .ASCII \OUTPUT\ ; FF 00006 .BYTE -1 ; FF 00007 U.47: .BYTE -1 ; .PSECT _LIB$STATE$,NOWRT, SHR, PIC,0 00000 CMD_TABLE:: .BLKB 0 00000 FIRST: .BLKB 0 49F8 00000 U.18: .WORD 18936 ; 0000* 00002 U.20: .WORD <-2> ; 00000000* 00004 U.21: .LONG <-4> ; 1DF8 00008 U.22: .WORD 7672 ; 0000* 0000A U.24: .WORD <-2> ; 0000* 0000C U.25: .WORD <-2> ; 01F2 0000E U.26: .WORD 498 ; 0DF8 00010 U.27: .WORD 3576 ; 0000* 00012 U.28: .WORD <-2> ; 00014 SECOND: .BLKB 0 49F8 00014 U.29: .WORD 18936 ; 0000* 00016 U.30: .WORD <-2> ; 00000000* 00018 U.31: .LONG <-4> ; 1DF8 0001C U.32: .WORD 7672 ; 0000* 0001E U.33: .WORD <-2> ; 0000* 00020 U.34: .WORD <-2> ; 00022 LAST: .BLKB 0 19F8 00022 U.35: .WORD 6648 ; 0000* 00024 U.36: .WORD <-2> ; 0000* 00026 U.37: .WORD <-2> ; 15F7 00028 U.38: .WORD 5623 ; FFFF 0002A U.39: .WORD -1 ; 0002C ;OPTION U.23: .BLKB 0 01F2 0002C U.40: .WORD 498 ; 05F6 0002E U.41: .WORD 1526 ; 042F 00030 U.42: .WORD 1071 ; 0500 00032 U.46: .WORD 1280 ; 003D 00034 U.48: .WORD 61 ; 043A 00036 U.49: .WORD 1082 ; 4DF8 00038 U.50: .WORD 19960 ; 0000* 0003A U.51: .WORD <-2> ; 00000000* 0003C U.52: .LONG <-4> ; 11F2 00040 U.53: .WORD 4594 ; FFFF 00042 U.54: .WORD -1 ; 15F6 00044 U.55: .WORD 5622 ; FFFF 00046 U.56: .WORD -1 ; 00048 ;FILESPEC U.19: .BLKB 0 0DF8 00048 U.57: .WORD 3576 ; 0000* 0004A U.59: .WORD <-2> ; 0004C FILESPEC1: .BLKB 0 19F8 0004C U.60: .WORD 6648 ; 0000* 0004E U.61: .WORD <-2> ; 0000* 00050 U.62: .WORD <-2> ; 15F6 00052 U.63: .WORD 5622 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 44 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) FFFF 00054 U.64: .WORD -1 ; 00056 ;FILESPECC U.58: .BLKB 0 11F1 00056 U.65: .WORD 4593 ; FFFF 00058 U.66: .WORD -1 ; 19F8 0005A U.67: .WORD 6648 ; 0000* 0005C U.69: .WORD <-2> ; FFFF 0005E U.70: .WORD -1 ; 103A 00060 U.71: .WORD 4154 ; FFFF 00062 U.72: .WORD -1 ; 105B 00064 U.73: .WORD 4187 ; FFFF 00066 U.74: .WORD -1 ; 105D 00068 U.75: .WORD 4189 ; FFFF 0006A U.76: .WORD -1 ; 103C 0006C U.77: .WORD 4156 ; FFFF 0006E U.78: .WORD -1 ; 103E 00070 U.79: .WORD 4158 ; FFFF 00072 U.80: .WORD -1 ; 102E 00074 U.81: .WORD 4142 ; FFFF 00076 U.82: .WORD -1 ; 103B 00078 U.83: .WORD 4155 ; FFFF 0007A U.84: .WORD -1 ; 142D 0007C U.85: .WORD 5165 ; FFFF 0007E U.86: .WORD -1 ; 00080 ;QUOTED U.68: .BLKB 0 0422 00080 U.87: .WORD 1058 ; 00082 QUOTED1:.BLKB 0 1022 00082 U.88: .WORD 4130 ; FFFF 00084 U.89: .WORD -1 ; 15ED 00086 U.90: .WORD 5613 ; 0000* 00088 U.91: .WORD <-2> ; 0008A .BLKB 2 0008C SLP_TABLE:: .BLKB 0 702F 0008C U.93: .WORD 28719 ; 00000000* 0008E U.94: .LONG <-4> ; FFFFFFFF 00092 U.95: .LONG -1 ; FFFF 00096 U.96: .WORD -1 ; 042D 00098 U.97: .WORD 1069 ; 41F3 0009A U.98: .WORD 16883 ; 00000000* 0009C U.99: .LONG <-4> ; 05F6 000A0 U.100: .WORD 1526 ; 002C 000A2 U.101: .WORD 44 ; 103B 000A4 U.102: .WORD 4155 ; 0000* 000A6 U.104: .WORD <-2> ; 15F7 000A8 U.105: .WORD 5623 ; FFFF 000AA U.106: .WORD -1 ; 41F3 000AC U.107: .WORD 16883 ; 00000000* 000AE U.108: .LONG <-4> ; 05F6 000B2 U.109: .WORD 1526 ; 002C 000B4 U.110: .WORD 44 ; 103B 000B6 U.111: .WORD 4155 ; 0000* 000B8 U.112: .WORD <-2> ; 15F7 000BA U.113: .WORD 5623 ; FFFF 000BC U.114: .WORD -1 ; 002F 000BE U.115: .WORD 47 ; 103B 000C0 U.116: .WORD 4155 ; EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 45 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) 0000* 000C2 U.117: .WORD <-2> ; 15F7 000C4 U.118: .WORD 5623 ; FFFF 000C6 U.119: .WORD -1 ; 4DF8 000C8 U.120: .WORD 19960 ; 0000* 000CA U.122: .WORD <-2> ; 00000000* 000CC U.123: .LONG <-4> ; 002F 000D0 U.124: .WORD 47 ; 15F7 000D2 U.125: .WORD 5623 ; FFFF 000D4 U.126: .WORD -1 ; 003B 000D6 U.127: .WORD 59 ; 15F7 000D8 U.128: .WORD 5623 ; FFFF 000DA U.129: .WORD -1 ; 000DC ;CHKCOMM U.103: .BLKB 0 49F8 000DC U.130: .WORD 18936 ; 0000* 000DE U.132: .WORD <-2> ; 00000000* 000E0 U.133: .LONG <-4> ; 15F7 000E4 U.134: .WORD 5623 ; FFFF 000E6 U.135: .WORD -1 ; 15F7 000E8 U.136: .WORD 5623 ; FFFF 000EA U.137: .WORD -1 ; 000EC ;AUDIT U.121: .BLKB 0 19F8 000EC U.138: .WORD 6648 ; 0000* 000EE U.140: .WORD <-2> ; 0000* 000F0 U.141: .WORD <-2> ; 15F6 000F2 U.142: .WORD 5622 ; FFFF 000F4 U.143: .WORD -1 ; 000F6 ;AUDITC U.139: .BLKB 0 102F 000F6 U.144: .WORD 4143 ; FFFE 000F8 U.145: .WORD -2 ; 15ED 000FA U.146: .WORD 5613 ; FFFF 000FC U.147: .WORD -1 ; 000FE ;COMMENT U.131: .BLKB 0 11ED 000FE U.148: .WORD 4589 ; 0000* 00100 U.149: .WORD <-2> ; 15F7 00102 U.150: .WORD 5623 ; FFFF 00104 U.151: .WORD -1 ; .PSECT _LIB$KEY0$,NOWRT, SHR, PIC,1 00000 CMD_KEY:: .BLKB 0 00000 ;TPA$KEY0 U.17: .BLKB 0 0000* 00000 U.44: .WORD ; 00002 .BLKB 2 00004 SLP_KEY:: .BLKB 0 00004 ;TPA$KEY0 U.92: .BLKB 0 .EXTRN LIB$STOP ; PSECT SUMMARY EXTRACT 31-Oct-1980 18:33:57 VAX-11 Bliss-32 V2-622 Page 46 X0001D 22-Oct-1979 16:42:17 _DBB2:[GOLDSTEIN.UPDATE]EXTRACT.B32;17 (12) ; ; Name Bytes Attributes ; ; $OWN$ 202240 , WRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $PLIT$ 137 ,NOWRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $MSG_TEXT 218 ,NOWRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(0) ; $MSG_INDEX 32 ,NOWRT, RD ,NOEXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; $CODE$ 1908 ,NOWRT, RD , EXE,NOSHR, LCL, REL, CON,NOPIC,ALIGN(2) ; _LIB$KEY0$ 4 ,NOWRT, RD , EXE, SHR, LCL, REL, CON, PIC,ALIGN(1) ; _LIB$STATE$ 262 ,NOWRT, RD , EXE, SHR, LCL, REL, CON, PIC,ALIGN(0) ; _LIB$KEY1$ 8 ,NOWRT, RD , EXE, SHR, LCL, REL, CON, PIC,ALIGN(0) ; LIBRARY STATISTICS ; ; -------- Symbols -------- Blocks ; File Total Loaded Percent Read ; ; _DRA1:[SYSLIB]STARLET.L32;1 3893 67 1 198 ; _DRA1:[SYSLIB]CLIMAC.L32;1 14 2 14 5 ; _DRA1:[SYSLIB]TPAMAC.L32;1 39 29 74 27 ; COMMAND QUALIFIERS ; BLISS /LIS EXTRACT ; Size: 1908 code + 202901 data bytes ; Run Time: 00:57.2 ; Elapsed Time: 01:41.5 ; Memory Used: 315 pages ; Compilation Complete