File: FUTIL5.LS of Disk: V50/Source/Source-Listing-PAL-2
(Source file text)
/FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 1 /FUTIL - FILE UTILITY - V50A DECIMAL 0062 VERSION=50 OCTAL 0001 PATCH="A&77 / OS/8 FILE UTILITY PROGRAM. ALLOWS EXAMINATION AND / MODIFICATION OF OS/8 MASS STORAGE DEVICES FROM THE CON- / SOLE. DUMPING OF BLOCKS, LISTING OF WORDS AND MODIFICA- / TION OF WORDS CAN BE DONE IN 7 FORMATS: OCTAL; SIGNED AND / UNSIGNED DECIMAL; UNPACKED, 6-BIT PACKED, XS240 PACKED AND / OS/8 PACKED ASCII. LISTING AND DUMPING CAN ALSO BE DONE / IN 5 MORE FORMATS: BCD, BYTE (OCTAL CHARACTER), 2 PSEUDO- / SYMBOLIC FORMATS [PDP-8 & FPP-12/8A], AND A COMBINATION / FORMAT FOR DIRECTORY DUMPING. PROGRAM USES BOTH COMMAND / WORDS AND COMMAND CHARACTERS (LIKE ODT) FOR DIRECTION. /BY: JIM CRAPUCHETTES / MENLO COMPUTER ASSOCIATES, INC. / (FORMERLY: FRELAN ASSOCIATES) / P.O. BOX 298 / MENLO PARK, CALIF. 94025 / / /VERSIONS 1 THRU 4 - "XTAPE" FOR THE XSYSTEM, / LAST REVISION--APRIL 1970. / /VERSION 5 - OS/8 OPERATION, JULY 1972 THRU JUNE 1976 / "(...)", "C & 'CC AS NUMBERS, IOT DECODING, LIST / & DUMP FORMATS, OUTPUT TO LPT:, FILE DATE & LOC / IN DIRECTORY, "WORD MEMREF...", BCD OUTPUT, / ADDITIONAL ODT OUTPUTS, "BYTE" OUTPUT. /VERSION 6 - EXPANSION OF OS/8 OPERATION, JUNE 1976: / "FILLER" FOR "MODIFY", SEARCH LIMITS CHANGE, "WRITE" / WITH AN ARGUMENT, FPP INSTRUCTION DECODING, CHAINING / SUPPORT (FOR CCL CALLS), LOAD MODULE HANDLING AND / "SHOW HEADER", MULTIPLE DEFAULT EXTENSIONS, ^R FOR / RETYPE, SET REPLACES OPTION, NEW OUTPUT ROUTINE FOR / "DIRECTORY" FORMAT, LINK OVERLAY HANDLING, ODT CHANGES, / EXIT, SCAN, WRITE LOCKED OPERATION, SPEED UP SEARCHES, / XS240 FORMATS /VERSION 6.17 - APR 1, 1977; BATCH OPERATION, COMMENT /VERSION 6.20 - MAY 16, 1977; NEW DATE, FULL FILE OUTPUT / (SET/SHOW DDEV, OPEN ..., CLOSE), OPT ":" ON DEVICES. /VERSION 6.21 - JUN 4, 1977; NEW INPUT ROUTINE, TEMP STORAGE /VERSION 6.22 - JUL 13, 1977; CRTL-Q & -S, SCOPE MODE, / IF/END COMMANDS, ALPHA DATE. / /PREVIOUS VERSIONS HAVE BEEN AVAILABLE THROUGH DECUS, / DEC SUPPORT BEGINS WITH VERSION 7 - 20-JUL-77. / VERSION 7 PATCHES: / 1.CTRL/U CRASH & OVERLAY MAPPING IN SAVE MODE(7A TO 7B) / 2.FIXED SHOW CCB PROBLEM(7B TO 7C) / 3.ODT MAPPING ON LD. MODULES(7C TO 7D) /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 1-1 / 4.ADDED SHOW CCB SUPPORT FOR KT8A SAVE IMAGES(7D TO 7E) /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 2 / SOME ROUTINES AND IDEAS USED IN THIS PROGRAM WERE / DERIVED FROM EDIT-8 AND FOCAL, BY RICK MERRILL, DEC. / THE ODT COMMAND SET IS NEARLY IDENTICAL TO THE OS/8 / ODT COMMAND SET EXCEPT THAT 15 BIT ADDRESSES ARE USED / EVERYWHERE AND THERE ARE NO COMMANDS FOR PROGRAM EXECU- / TION. / THE DOUBLE PRECISION ARITHMETIC ROUTINES ARE A MUCH / MODIFIED VERSION OF DECUS 8-115A. / ASSEMBLY INFORMATION: / / .R PAL8 [VERSION 9] / *FUTIL<FUTIL/L/K/P=6400$ / .SA ... FUTIL / / THE LISTING FILE REQUIRES ABOUT 725 BLOCKS, THE BIN- / ARY FILE ABOUT 35 BLOCKS AND THE CREF LISTING FILE ABOUT / 960 BLOCKS. CREFING REQUIRES EITHER "/M" OR "/X" FOR / CREF V3. /MEMORY ALLOCATION: / /00000-06310 PROGRAM PROPER /06310-06577 ARGUMENT STRING BUFFER /06400-06777 --- ONCE ONLY CODE FOR CHAIN --- /06600-07177 DDEV HANDLER AREA, 2 PAGES /07200-07577 DEVICE HANDLER AREA, 2 PAGES / /10000-11777 USR AREA & ERROR MESSAGES (SWAPPED) /12000-12377 CCB/HEADER CODE, OPEN, CLOSE & OUTPUT /12600-15700 TEXT STRINGS, LISTS /15700-16377 STRING MASK, COMMAND BUFFERS, PDL /16400-16577 CCB BUFFER, 1 PAGE /16600-17177 DDEV BUFFER, 2 PAGES /17200-17577 I/O BUFFER, 2 PAGES /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 3 /PAGE 0: POINTERS, CONSTANTS, VARIABLES, SWITCHES, ADDRESSES 0000 *0 000000 0000 OVLFLG, 0 /OVERLAY FLAG FOR SAVE FILES 000001 0000 DPSGN, 0 000002 0000 LASTOP, 0 000003 0000 THISOP, 0 000004 0000 ZBLOCK 3 /USED BY ODT /VARIABLES & SWITCHES 000007 0000 PDLPT, 0 /P.D.L. POINTER 000010 4030 DPNT, RUBO-1 /USED UNIVERSALLY (SCOPE INITIALIZATION) 000011 6627 SPNT, SCOPLS-1 /USED BY 'XSTRIN', 'XSMASK', 'READ', 'TERMT' 000012 6656 SCANX1, BATLS-1 /USED BY 'SORTJ' (BATCH INITIALIZATION) 000013 0000 SCANX2, 0 /USED BY 'XSTRIN' 000014 0000 GETPNT, 0 /USED BY 'GET' & 'BKLOC' 000015 0000 COMIR, 0 /USED FOR USER LINE INPUT 000016 5712 COMOUT, COMB-1 /USED FOR USER LINE SCAN 000017 0000 TYPSW, 0 /ODT COMMAND OCT-SYM SWITCH (0=OCT) 000020 0000 ERMODE, 0 /ERROR MESSAGE MODE SWITCH (0=LONG) 000021 0000 TEMP, 0 000022 0000 TEMP1, 0 000023 0000 TEMP2, 0 000024 0000 TEMP3, 0 000025 0000 ACC1, 0 /24 BIT ACCUMULATORS 000026 0000 ACC2, 0 000027 0000 ACCX1, 0 000030 0000 ACCX2, 0 0025 NAM1= ACC1 /DEFINITIONS FOR NAME BUFFER: 0026 NAM2= ACC1+1 / THESE LOCATIONS ARE USED FOR A 0027 NAM3= ACC1+2 / 6 CHARACTER FILE (OR DEVICE) 0030 NAM4= ACC1+3 / NAME & A 2 CHAR EXTENSION. 000031 0000 OPER1, 0 000032 0000 OPER2, 0 000033 0000 TEMPV1, 0 /24 BIT TEMPORARY STORAGE FOR 000034 0000 TEMPV2, 0 / "SET TEMP ..." & "EVAL T" 000035 0000 CHAR, 0 000036 0000 CNT, 0 000037 0000 CNTR, 0 000040 0000 CNTRA, 0 000041 0000 NCNT, 0 /LINE POSITION COUNTER 000042 0000 FCNT, 0 /FORMAT NUMBER (INIT TO PACKED ASCII) 000043 3621 OUTPNT, PACOUT /POINTER TO DEFAULT OUTPUT ROUTINE 000044 0000 MODSW, 0 /MODES: NORMAL=0,MAPPED=+,OFFSET=-. /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 3-1 000045 0000 CHARSW, 0 /CHARACTER PACK & UNPACK SWITCH 000046 0000 CRSWT, 0 /= -1 IF GWORD TERMINATOR WAS A SPACE 000047 0000 SHUT, 0 /= -1 IF SOMETHING OPEN 000050 0000 MODIF, 0 /= -1 IF SOMETHING WAS MODIFIED 000051 0000 ABSSW, 0 /ABSOLUTE OR RELATIVE LOCATION FOR SEARCHES 000052 0000 DSWIT, 0 /DUMP SWITCH: "DUMP","LIST" & "SHOW ERR" -> 1 000053 0000 DMODE, 0 /DUMP MODE: NONE=0,PART=1,ALL=4000 000054 0000 CBLK, 0 /= CURRENT BLOCK 000055 0000 0 /DUMMY FOR "SHOW ABS" 000056 0000 CAD, 0 /= CURRENT ADDRESS (0 -> 377)+IOBUF 000057 0000 BLK, 0 /= "BLOCK" 000060 0000 LOCH, 0 000061 0000 LOCL, 0 /= "LOCATION" (DISPLACEMENT) 000062 0000 UBLK, 0 /UPPER LIMIT FOR SEARCHES 000063 0001 ULOCH, 1 000064 7577 ULOCL, 7577 000065 0000 LBLK, 0 /LOWER LIMIT FOR SEARCHES 000066 0000 LLOCH, 0 000067 0200 LLOCL, 200 000070 0000 SBLK, 0 /"LOCATION" FOR "ODT" ROUTINES 000071 0000 SLOCH, 0 000072 0000 SLOCL, 0 000073 0000 OFFSET, 0 /OFFSET 000074 0000 FILLER, 0 /FILLER CONSTANT FOR "MODIFY" 000075 7777 MASK, -1 /MASK FOR WORD SEARCH 000076 7777 SMASKL, -1 /= -(LENGTH OF SMASK) 000077 0000 RBLK1, 0 /START BLOCK OF FILE 000100 7607 DEVAD, 7607 /DEVICE ENTRY ADDR (INIT TO "SYS") 000101 0001 DEVNO, 1 /DEVICE NUMBER (INIT TO "SYS") 000102 7700 USRAD, 7700 /USR ADDRESS, INITIALIZED TO OUT /7700=MSGS IN; 0=NONE IN; 200=USR IN /CONSTANTS 000103 7400 M400, -400 000104 7540 M240, -240 000105 7563 M215, -215 000106 7600 M200, -200 000107 7700 M100, -100 000110 7760 M20, -20 000111 7770 M10, -10 000112 7777 M1, -1 000113 0007 N7, 7 000114 0015 N15, 15 000115 0020 N20, 20 000116 0077 N77, 77 000117 0177 N177, 177 000120 0200 N200, 200 000121 0377 N377, 377 000122 7000 N7000, 7000 0103 N7400= M400 /ADDRESSES 4523 READLN= JMS I . /GET NEXT INPUT LINE, WITH /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 3-2 000123 4000 READ / SPECIAL TERMINATORS 000124 3605 TYPSTI, TYPSTR 000125 3600 TYPSI, TYPES 000126 5055 TYPECI, TYPEC 000127 1761 TWOCI, TWOCS 000130 5045 CRLFI, CRLF 4531 DIGIT= JMS I . /OUTPUT AN ASCII DIGIT 000131 4161 DODIG 4532 SPACE1= JMS I . /OUTPUT 1 SPACE OR ... 000132 2561 DO1SP 4533 SPACE2= JMS I . /OUTPUT 2 SPACES 000133 2565 DO2SP 000134 5126 CTRLI, CTRL 000135 3621 TWOT, PACOUT 000136 5062 TYPEI, TYPE 000137 3436 DECI, DPRT 000140 3400 OCTI, OPRT 000141 3445 DEC2I, DEC2 000142 5000 PDATEI, PDATE 000143 3762 RTL6I, RTL6 000144 3767 RTR6I, RTR6 000145 5261 SOCTI, OCTSET 000146 3105 BKLOCI, BKLOC 000147 5400 EVALI, EVAL 4550 PUSH= JMS I . /PUSH AC ON P.D.L. 000150 5600 PUSHX 4551 POP= JMS I . /POP P.D.L. INTO AC 000151 5606 POPX 4552 CALUSR= JMS I . /DO USR FUNCTION 000152 0520 USEUSR 4553 TADIDP= JMS I . /"TAD I DPNT" IN FIELD 1 000153 2156 TIDPNT 4554 TADICAD= JMS I . /"TAD I CAD" IN FIELD 1 000154 6170 TICAD 4555 DCAICAD= JMS I . /"DCA I CAD" IN FIELD 1 000155 6163 DICAD 000156 3122 GWORDI, GWORD 000157 5272 GARGI, GARGS 000160 5713 ARGI, ARG 000161 3000 GETI, GET 000162 3073 ODGETI, ODGET 000163 5362 GETNI, GETN 000164 3502 SSKIPI, SSKIP 000165 2752 LIMITI, LIMITS 000166 3557 INCI, INC 000167 3643 SORTI, SORTJ 000170 4141 ENDCI, ENDC 000171 0203 RECRLF, MAIN1-1 000172 0204 RESTAR, MAIN1 4573 ERROR= JMS I . 000173 0454 XERROR /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 3-3 000174 5712 COMST, COMB-1 000175 6305 TEMPST, TEMPL-1 000176 5610 MASKBS, SMASKB-1 0200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 4 /PROGRAM MAIN LOOP AND DRIVER. COLLECTS CHARACTERS /INTO COMMAND BUFFER UNTIL END IS REACHED. 000200 3102 DCA USRAD /CLEAR ON RESTART (NOTHING IN)! 000201 6046 TLS /RAISE TELETYPE FLAG 000202 3047 DCA SHUT /NOTHING IS OPEN 000203 4530 JMS I CRLFI /OUTPUT CR-LF. 000204 4545 MAIN1, JMS I SOCTI /SET INPUT TO OCTAL; EXEC 'COMMENT' 000205 3052 DCA DSWIT /RESET DUMP OUTPUT SWITCH 000206 1174 TAD COMST /INIT COMMAND BUFFER. 000207 3015 DCA COMIR 000210 1377 TAD (PDLB+1 /INIT PUSH-DOWN-LIST 000211 3007 DCA PDLPT 000212 4523 MAIN2, READLN /GET A LINE FROM INPUT. 000213 4472 CCHARL-1 /CR LF ; ! / ALT- 000214 0050 COPSL-CCHARL / MODES ETC... 000215 5204 JMP MAIN1 /BUFFER WAS EMPTIED. /ROUTINE TO HANDLE CARRIAGE RETURN. 000216 4570 CRCR, JMS I ENDCI /PUT A CR IN BUFFER 000217 5235 JMP CRCRC /ONLY A CR IN BUFFER 000220 4556 JMS I GWORDI /GET COMMAND WORD 000221 5234 JMP CRCRN /BUFFER BEGINS WITH A # 000222 2046 ISZ CRSWT /WORD ENDED BY A CR? 000223 5230 JMP CRCR1 /YES, ONLY A FEW ARE OK 000224 4567 JMS I SORTI /NO, LOOK UP COMMAND 000225 4602 CWORDL-1 000226 0031 WOPSL-CWORDL 000227 4573 ERCB, ERROR /NOT A LEGAL COMMAND / 000230 4567 CRCR1, JMS I SORTI /"WRITE","REWIND","EXIT" & "COMMENT" 000231 4663 CWORL2-1 000232 0010 WOPSLL-CWORL2 000233 4573 ERCA, ERROR /SOMETHING NOT LEGAL / 000234 4361 CRCRN, JMS CLOSE /CLOSE THE OPEN LOCATION IF OPEN 000235 3047 CRCRC, DCA SHUT / MARK LOCATION CLOSED 000236 5204 JMP MAIN1 /ROUTINE TO HANDLE SLASH 000237 4570 SLASH, JMS I ENDCI /END BUFFER WITH A CR 000240 5244 JMP SLA1 /OPEN LAST, CR ONLY 000241 4776' JMS WCHEK /DOES LINE START W. A WORD? 000242 4565 JMS I LIMITI /NO, GET ARG-- 000243 0070 SBLK / & SLOCH & SLOCL 000244 4532 SLA1, SPACE1 /OUTPUT SPACE 000245 4775' SLO1, JMS ODTOUT /GET THE WORD & OUTPUT 000246 4532 SLO2, SPACE1 /FOLLOWED BY 2 SPACES 000247 4532 SPACE1 /(FOR ";"--OUTPUT ONLY 1 SPACE AND 000250 4562 JMS I ODGETI / THEN FORCE ACTION & IGNORE VALUE) 000251 7240 STA 000252 5235 JMP CRCRC /GO MARK LOCATION OPEN /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 4-1 /ROUTINE TO HANDLE ALT MODE & ESCAPE KEYS 000253 1043 ALTMOD, TAD OUTPNT /USE OUTPUT ROUTINE 'SET' BY 000254 5261 JMP ALTM1 / 'FORMAT' OPTION. /ROUTINE TO CLOSE A LOCATION, OUTPUT ITS (NEW) CONTENTS IN A / SPECIFIED FORMAT AND THEN RE-OPEN. THE ROUTINE HANDLES: / # (BCD), $ (OS/8 ASCII), % (BYTE OCTAL), & (XS240 ASCII), / : (SIGNED DECIMAL), < (OCTAL), = (UNSIGNED DECIMAL), / > (PDP SYMBOLIC), @ (DATE), [ (ASCII), \ (FPP SYMBOLIC), / ] (PACKED ASCII) AND ? (DIRECTORY). / 000255 1012 OMODES, TAD SCANX1 /'SORTJ' POINTER TO CHAR LIST 000256 1374 TAD (OTABLE-1-CCHARL 000257 3010 DCA DPNT /POINT INTO ADDR TABLE, 000260 4553 TADIDP / GET OUTPUT ROUTINE ADDR, 000261 3270 ALTM1, DCA OMODPT / & SET POINTER TO ROUTINE. 000262 4353 JMS ECLOSE /CLOSE THIS LOCATION 000263 4532 SPACE1 /OUTPUT SPACE 000264 3045 DCA CHARSW /RESET UNPACK SWITCH 000265 4562 JMS I ODGETI /GET WORD 000266 4670 JMS I OMODPT /OUTPUT IN DESIRED FORMAT 000267 5246 JMP SLO2 /AND GO REOPEN. 000270 0000 OMODPT, 0 /ROUTINE TO HANDLE BACKARROW. 000271 4353 BACKAR, JMS ECLOSE /CLOSE THIS LOCATION 000272 4554 TADICAD /GET THE CONTENTS, 000273 5306 JMP UPARR1 /AND USE THEM AS THE ADDR /ROUTINE TO HANDLE UPARROW. 000274 4353 UPARR, JMS ECLOSE /CLOSE THIS LOCATION 000275 4554 TADICAD /IS THIS A 'PAGE 0' REF.? 000276 0120 AND N200 000277 7640 SZA CLA 000300 1072 TAD SLOCL /YES, USE PAGE BITS 000301 0106 AND M200 / MASK PAGE OR 0 TO PAGE # 000302 3072 DCA SLOCL / & SAVE IT 000303 4554 TADICAD /GET THE CONTENTS, 000304 0117 AND N177 /AND USE THE ADDRESS BITS. 000305 1072 TAD SLOCL / ALONG WITH PAGE BITS 000306 3072 UPARR1, DCA SLOCL /THIS IS 12 BIT ADDR 000307 5336 JMP EXCL2 /NOW GO FINISH /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 5 /ROUTINE TO HANDLE SEMICOLON, LINE FEED & EXCLAMATION. 000310 3536 SEMIC, DCA I TYPEI /SET NO-OUTPUT SWITCH-V7B 000311 7240 LFLF, STA /LINE-FEED - CLOSE,INCREMENT,OUTPUT 000312 3270 EXCL, DCA OMODPT /EXCLAMATION - CLOSE,DECREMENT,OUTPUT 000313 4353 JMS ECLOSE /CLOSE THIS LOCATION 000314 7001 IAC 000315 3025 DCA ACC1 /SET UP D.P. INCREMENT 000316 3026 DCA ACC2 000317 3001 EXCL1, DCA DPSGN /(FOR SAFETY) 000320 2270 ISZ OMODPT /INCREMENT OR DECREMENT? 000321 4773' JMS DPNEG / DECREMENT, NEGATE VALUE 000322 7100 CLL 000323 1025 TAD ACC1 000324 1072 TAD SLOCL /UPDATE LOCATION TO 15 BITS 000325 3072 DCA SLOCL 000326 7004 RAL 000327 1026 TAD ACC2 000330 1071 TAD SLOCH 000331 0113 AND N7 / (BUT ONLY 15 BITS) 000332 3071 DCA SLOCH 000333 1536 TAD I TYPEI / ANY OUTPUT?-V7B 000334 7650 SNA CLA 000335 5247 JMP SLO2+1 / NO, WAS ";" DO ONE SPACE 000336 4530 EXCL2, JMS I CRLFI /GIVE CR/LF FOR NEXT LINE 000337 4546 JMS I BKLOCI /OUTPUT ADDRESS 000340 0067 SBLK-1 000341 4527 JMS I TWOCI /OUTPUT "\ " 000342 3440 3440 000343 5245 JMP SLO1 /NOW GO OPEN NEXT LOCATION /ROUTINE TO HANDLE PLUS & MINUS. 000344 7240 PLUS, STA /"+", SET SWITCH 000345 3270 MINUS, DCA OMODPT /"-", CLEAR SWITCH 000346 4570 JMS I ENDCI /END BUFFER, TEST 000347 5336 JMP EXCL2 /NO ARG, DO SAME AGAIN 000350 4776' JMS WCHEK /LINE START WITH A COMMAND? 000351 4560 JMS I ARGI /NO, GET AN ARG 000352 5317 JMP EXCL1 /UPDATE LOC & GO OPEN 000353 0000 ECLOSE, 0 /SUB. TO CLOSE THE LOCATION IF ARG. 000354 4570 JMS I ENDCI /END BUFFER WITH A CR. 000355 5753 JMP I ECLOSE /ONLY A CR IN BUFFER, DONE 000356 4776' JMS WCHEK /DOES LINE START W. A WORD? 000357 4361 JMS CLOSE /ARG IN BUFFER, USE IT 000360 5753 JMP I ECLOSE /DONE 000361 0000 CLOSE, 0 /SUBROUTINE TO CLOSE A LOCATION 000362 4560 JMS I ARGI /GET ONE ARG 000363 2047 ISZ SHUT /ANYTHING OPEN? 000364 5761 JMP I CLOSE /NO, RETURN 000365 4562 JMS I ODGETI /YES, SET UP THINGS RIGHT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 5-1 000366 7240 STA 000367 3050 DCA MODIF /SET MODIFY FLAG 000370 1025 TAD ACC1 /USE "LOC" AS DATA 000371 4555 DCAICAD /STORE IT 000372 5761 JMP I CLOSE 000373 6141 000374 0032 000375 4200 000376 6200 000377 6130 0400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 6 /ROUTINE TO 'EVALUATE' A SIGNED DOUBLE PRECISION ARITHMETIC / EXPRESSION & OUTPUT THE RESULTS IN OCTAL & D.P. SIGNED / DECIMAL. 000400 4547 XVAL, JMS I EVALI /GO EVALUATE 000401 7410 SKP /TERMINATED BY A CR 000402 4573 ERCC, ERROR / SORRY!--TOO MANY ")"S 000403 4527 JMS I TWOCI /"= " 000404 7540 7540 000405 1026 TAD ACC2 000406 4540 JMS I OCTI /OUTPUT HIGH ORDER IN OCTAL 000407 1025 TAD ACC1 000410 4540 JMS I OCTI /OUTPUT LOW ORDER IN OCTAL 000411 1027 TAD ACCX1 /SAVE REMAINDER FOR LATER 000412 3015 DCA COMIR 000413 1030 TAD ACCX2 000414 3016 DCA COMOUT 000415 1377 TAD (-7 000416 3254 DCA XERROR /MUST DEVELOP 7 DIGITS 000417 4527 JMS I TWOCI /OUTPUT " (" 000420 4050 4050 000421 1026 TAD ACC2 /IS DPAC NEG? 000422 7700 SMA CLA 000423 5226 JMP DLOOP1-1 /NO, OUTPUT " " 000424 4776' JMS DPNEG /YES, MAKE IT POSITIVE 000425 1114 TAD N15 / AND OUTPUT "-". 000426 4532 SPACE1 000427 1375 DLOOP1, TAD (12 /RESET DIVISOR TO 10(10) 000430 3031 DCA OPER1 000431 3032 DCA OPER2 000432 4774' JMS DDIV /GO DIVIDE DPAC BY 10(10) 000433 1027 TAD ACCX1 / GET REMAINDER 000434 4550 PUSH /PUT IT ON PUSH-DOWN-LIST 000435 2254 ISZ XERROR /DONE YET? 000436 5227 JMP DLOOP1 000437 1016 TAD COMOUT /YES, RESTORE REMAINDER 000440 3030 DCA ACCX2 000441 1015 TAD COMIR 000442 3027 DCA ACCX1 000443 1377 TAD (-7 000444 3254 DCA XERROR /NOW SET UP TO OUTPUT 7 DIGITS 000445 4551 DLOOP2, POP / IN REVERSE ORDER! 000446 4531 DIGIT /MAKE REMAIN A DIGIT 000447 2254 ISZ XERROR /DONE? 000450 5245 JMP DLOOP2 000451 4526 JMS I TYPECI /YES, OUTPUT ")" 000452 0251 ") 000453 5571 JMP I RECRLF / AND CR/LF /ERROR ROUTINE 000454 0000 XERROR, 0 000455 7200 CLA /CLEAR POSSIBLE JUNK FROM AC 000456 3052 DCA DSWIT /RESET IN CASE DUMP MODE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 6-1 000457 6201 CDF 0 000460 4526 JMS I TYPECI /OUTPUT "?" 000461 0277 "? 000462 1373 TAD (ERLIST-1 /INIT LIST POINTER 000463 3010 DCA DPNT 000464 3021 DCA TEMP /SET CODE TO 0 000465 2021 XERR1, ISZ TEMP /BUMP ERROR CODE 000466 4553 TADIDP /GET AN ADDRESS 000467 7450 SNA 000470 5275 JMP XERR2 /(FOR DEBUGGING) 000471 7040 CMA /= -(ADDR+1) 000472 1254 TAD XERROR /DOES IT MATCH THE CALL? 000473 7640 SZA CLA 000474 5265 JMP XERR1 /NO 000475 1021 XERR2, TAD TEMP /YES, OUTPUT ERROR CODE 000476 4541 JMS I DEC2I / AS 2 DECIMAL DIGITS 000477 4525 JMS I TYPSI /NOW OUTPUT " AT " 000500 4310 MS17 000501 1372 TAD (-COMB+1 /CALCULATE POSITION IN 000502 1016 TAD COMOUT / COMMAND BUFFER, 000503 4541 JMS I DEC2I / & OUTPUT AS 2 DIGITS. 000504 1020 TAD ERMODE /LONG/SHORT MESSAGES? [NOTE: THIS -> 000505 7640 XERR3, SZA CLA / "7600" (A CLA) IF 'USROUT' ERROR!] 000506 5315 JMP XERR4 /SHORT, GO DO CR/LF 000507 4344 JMS USROUT /LONG, BE SURE MESSAGES ARE IN 000510 4533 SPACE2 /OUTPUT 2 SPACES 000511 1021 TAD TEMP /CODE = ADDRESS-1 OF ADDRESS 000512 3010 DCA DPNT / OF MESSAGE 000513 4553 TADIDP /GET MESSAGE ADDR 000514 4524 JMS I TYPSTI / OUTPUT MESSAGE 000515 4530 XERR4, JMS I CRLFI /OUTPUT A CR,LF PAIR 000516 5717 JMP I .+1 /*** CIF BAT /BATCH OPER. 000517 0204 MAIN1 /*** JMP I N7000 /'BATABT'! 000520 0000 USEUSR, 0 /USR CALLER SUBROUTINE (FROM EITHER FIELD!) 000521 3344 DCA USRSAV /SAVE CONTENTS OF AC 000522 6214 RDF 000523 1325 TAD UCDF0 /SET UP RETURN FIELD (FOR 2ND USR CALL) 000524 3341 DCA USRCDF 000525 6201 UCDF0, CDF 0 /SET TO HERE FOR 1ST CALL 000526 1102 TAD USRAD /IS USR IN OR OUT? 000527 7740 SMA SZA CLA 000530 5336 JMP USRIN /IN, GO TO IT 000531 6212 CIF 10 000532 4507 JMS I M100 /OUT, DO "USRIN" FUNCTION 000533 0010 10 000534 1120 TAD N200 000535 3102 DCA USRAD / & SO INDICATE 000536 6213 USRIN, CDF CIF 10 000537 1320 TAD USEUSR /MOVE RETURN ADDRESS TO THE 000540 3520 DCA I N200 / USR ENTRY POINT 000541 6201 USRCDF, CDF /SET UP D.F. FOR RETURN 000542 1344 TAD USRSAV /RESTORE AC CONTENTS 000543 5771 JMP I (201 / & FAKE A CALL TO IT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 6-2 USRSAV, 000544 0000 USROUT, 0 /SUBROUTINE TO REMOVE USR BY RECALLING 000545 1102 ERC15, TAD USRAD / ERROR MESSAGES FROM SCRATCH 000546 7710 SPA CLA / BLOCKS ON SYS. 000547 5744 JMP I USROUT /JUST EXIT IF PRESENT... 000550 1107 TAD M100 000551 3102 DCA USRAD /SET USR TO "OUT" 000552 4770 JMS I (7607 /READ IN THE MESSAGES 000553 0610 610 / 6 PAGES TO FIELD 1 000554 0000 0 / STARTING AT LOC 10000 000555 0027 27 / FROM SCRATCH BLKS 000556 7610 SKP CLA /!!! ERROR !!! 000557 5744 JMP I USROUT /OK, JUST EXIT 000560 1106 TAD M200 000561 3305 DCA XERR3 /NO MORE MESSAGES ON ERROR! 000562 1364 TAD ERC16 000563 3345 DCA ERC15 /AND NO MORE "SHOW ERROR"! 000564 4573 ERC16, ERROR /TELL THE HORRIBLE STORY! 000570 7607 000571 0201 000572 2066 000573 5530 000574 6040 000575 0012 000576 6141 000577 7771 0600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 7 /ROUTINE TO EXECUTE THE BLOCK 'SCAN' COMMAND 000600 4557 XSCAN, JMS I GARGI /GET ARGS CONVERTED 000601 1377 TAD (SCANER / & SET UP FOR SCANNING 000602 5210 JMP XDUM0 /ROUTINE TO EXECUTE THE BLOCK 'DUMP' COMMAND 000603 1044 XDUMP, TAD MODSW /MAPPED MODE? 000604 7740 SMA SZA CLA 000605 4573 ERC14, ERROR /YES, DUMP IS MEANINGLESS! 000606 4247 JMS XDLCOM /DO COMMON STUFF 000607 1376 TAD (LLIST / & SET UP FOR DUMPING 000610 3327 XDUM0, DCA XGFORM /SET OUTPUT ROUTINE--DUMP/SCAN 000611 2010 XDUM1, ISZ DPNT /SKIP FIRST WORD 000612 2010 ISZ DPNT /SKIP A WORD 000613 1410 TAD I DPNT /GET NEXT START BLOCK. 000614 4775' JMS BLKTST 000615 1410 TAD I DPNT /GET NEXT -(# BLOCKS) 000616 3022 DCA TEMP1 000617 4534 XDUM2, JMS I CTRLI /TEST HERE FOR 'SCAN' TERMINATE 000620 3061 DCA LOCL /SET LOC TO 0 000621 3060 DCA LOCH 000622 1103 TAD M400 /SET TO -400(8) [1 BLOCK] 000623 4727 JMS I XGFORM /DUMP OR SCAN A BLOCK 000624 2057 ISZ BLK /INCREMENT BLOCK NUMBER 000625 2022 ISZ TEMP1 /DONE? 000626 5217 JMP XDUM2 /NO, DO NEXT BLOCK 000627 2021 ISZ TEMP /YES, ARE ALL ARGS DONE? 000630 5211 JMP XDUM1 /NO, DO NEXT 000631 5245 JMP XLIS2 /YES, DONE--RESET SWITCH /ROUTINE TO EXECUTE THE LOCATION 'LIST' COMMAND 000632 4247 XLIST0, JMS XDLCOM /DO COMMON STUFF 000633 1410 XLIS1, TAD I DPNT /GET BLOCK # 000634 4775' JMS BLKTST /TEST & SET BLK 000635 1410 TAD I DPNT /GET & SET LOCATION 000636 3060 DCA LOCH 000637 1410 TAD I DPNT 000640 3061 DCA LOCL 000641 1410 TAD I DPNT /GET -(# WORDS) 000642 4261 JMS LLIST /NOW GO DO IT 000643 2021 ISZ TEMP /ARE ALL ARGS USED? 000644 5233 JMP XLIS1 /NO, CONTINUE 000645 3052 XLIS2, DCA DSWIT /RESET DUMP SWITCH 000646 5571 JMP I RECRLF / DO CR/LF & CONTINUE /COMMON SUBROUTINE FOR 'XDUMP'&'XLIST0' 000647 0000 XDLCOM, 0 000650 1043 TAD OUTPNT /INITIALIZE DEFAULTS 000651 3325 DCA LISTPT 000652 1365 TAD OUTSW 000653 3326 DCA LOUTSW 000654 4327 JMS XGFORM /GET FORMAT, IF ANY 000655 7000 NOP /RETURN FOR NO FORMAT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 7-1 000656 4557 JMS I GARGI /GET ARGS 000657 2052 ISZ DSWIT /SET DUMP SWITCH 000660 5647 JMP I XDLCOM /SUBROUTINE TO OUTPUT -[C(AC)] WORDS FROM THE DEVICE /BEGINNING AT BLK.LOC IN THE SPECIFIED FORMAT 000661 0000 LLIST, 0 000662 3040 DCA CNTRA /SET UP -# WORDS TO LIST 000663 3045 DCA CHARSW /RESET UNPACK SWITCH 000664 4530 LLIS1, JMS I CRLFI 000665 1061 TAD LOCL 000666 0113 AND N7 /SET UP # ON THIS LINE 000667 3037 DCA CNTR 000670 1326 TAD LOUTSW /IF CHARACTER OUTPUT, 000671 7650 SNA CLA 000672 1111 TAD M10 / DOUBLE # WORDS/LINE 000673 1037 TAD CNTR 000674 1111 TAD M10 000675 3037 DCA CNTR 000676 4546 JMS I BKLOCI /OUTPUT LOCATION 000677 0056 BLK-1 000700 4525 JMS I TYPSI /OUTPUT ": " 000701 4264 MS13 000702 4561 LLIS2, JMS I GETI /GET A WORD 000703 5312 JMP LLIS3 /FILE MODE, NO SUCH ADDR.. 000704 4725 JMS I LISTPT /OUTPUT IT 000705 1326 TAD LOUTSW /TEST MODE SWITCH 000706 7510 SPA 000707 5322 JMP LLIS5 /"SYMBOLIC", CR/LF NOW 000710 7640 SZA CLA /CHARACTERS, NO SPACES 000711 4533 SPACE2 /NUMBERS, TWO SPACES 000712 4566 LLIS3, JMS I INCI /INCREMENT LOC 000713 2040 ISZ CNTRA /ALL WORDS DONE? 000714 5317 JMP LLIS4 /NO 000715 4530 JMS I CRLFI 000716 5661 JMP I LLIST /YES, RETURN / 000717 2037 LLIS4, ISZ CNTR /ALL DONE WITH THIS LINE? 000720 5302 JMP LLIS2 /NOT YET 000721 5264 JMP LLIS1 /YES, OUTPUT CR/LF & CONTINUE / 000722 7240 LLIS5, STA 000723 3037 DCA CNTR /FORCE A CR/LF 000724 5312 JMP LLIS3 000725 0000 LISTPT, 0 000726 0000 LOUTSW, 0 /SUBROUTINE TO GET A FORMAT FOR 'XFORM' & 'XDLCOM' 000727 0000 XGFORM, 0 000730 4556 JMS I GWORDI /GET A WORD 000731 5727 JMP I XGFORM /NOT FOLLOWED BY A WORD 000732 4567 JMS I SORTI /LOOK UP WORD 000733 4702 FORML-1 000734 0031 FOPSL-FORML /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 7-2 000735 4573 ERCD, ERROR /WORD NOT RECOGNIZED / 000736 7130 XFSYM, STL RAR /"SYMBOLIC"; SWITCH NEG 000737 7001 XFNUM, IAC /NUMERIC; SWITCH POS 000740 3326 XFCHR, DCA LOUTSW /CHARACTER; SWITCH 0 000741 1012 TAD SCANX1 /'SORTJ' POINTER TO CHAR 000742 1374 TAD (-FORML /CALCULATE FORMAT # 000743 7110 CLL RAR /(DIVIDE BY 2) 000744 3022 DCA TEMP1 / & SAVE IT. 000745 1022 TAD TEMP1 000746 1373 TAD (FTABLE-1 000747 3010 DCA DPNT 000750 4553 TADIDP 000751 3325 DCA LISTPT /SET UP OUTPUT POINTER 000752 2327 ISZ XGFORM /BUMP RETURN ADDRESS 000753 5727 JMP I XGFORM /ROUTINE TO 'SET' THE 'FORMAT' OPTION 000754 4327 XFORM, JMS XGFORM /GET FORMAT WORD 000755 4573 ERCE, ERROR /NUMBER?! SORRY ABOUT THAT! 000756 1326 TAD LOUTSW /OK, SET UP DEFAULTS: 000757 3365 DCA OUTSW / SWITCH, 000760 1325 TAD LISTPT 000761 3043 DCA OUTPNT / ROUTINE POINTER, 000762 1022 TAD TEMP1 000763 3042 DCA FCNT / & FORMAT # 000764 5772' JMP XSETN 000765 0000 OUTSW, 0 /MODE:0=NOTHING,+=SPACES,-=CR/LF 000772 1600 000773 4763 000774 3075 000775 6154 000776 0661 000777 5744 1000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 8 /ROUTINE TO EXECUTE THE 'OPEN' COMMAND. 001000 7240 XOPEN, STA /"." LEGAL IN FILE NAME 001001 4777' JMS GNAME /GET FILE NAME FOR OUTPUT 001002 6212 CIF 10 001003 5776' JMP XOPEN1 /NOW GO TO FIELD 1 TO HANDLE /ROUTINE TO EXECUTE THE 'CLOSE' COMMAND. 001004 6213 XCLOSE, CDF CIF 10 001005 5775' JMP XCLOS1 /ALL CODE IS IN FIELD 1 /ROUTINE TO EXECUTE THE 'FILE' COMMAND. 001006 1022 XFIERR, TAD TEMP1 /MADE ALL POSSIBLE ATTEMPTS 001007 7700 SMA CLA / AT EXTENSION RETRIES? 001010 5216 JMP XFIOUT / YES, ALL TRIES DONE! 001011 2001 ISZ DPSGN /THIS WILL SKIP ON 1ST FAIL 001012 2022 ISZ TEMP1 /THIS WILL SKIP ON 2ND FAIL 001013 1374 TAD (1404 / 2ND TRY--USE "LD" EXTEN 001014 3030 DCA NAM4 / 3RD TRY--USE NULL EXTEN 001015 5230 JMP XFICHN+2 / 3RD TRY IS FINAL FAILURE / 001016 4773' XFIOUT, JMS PNAME /OUTPUT FILE NAME & 001017 4525 JMS I TYPSI /"LOOKUP FAILED" 001020 4277 MS15 / 001021 4530 XFILEN, JMS I CRLFI /OUTPUT CR/LF 001022 2046 ISZ CRSWT /WAS LAST ENDED BY A CR? 001023 5572 JMP I RESTAR /YES, DONE 001024 7240 XFILE, STA /"." LEGAL IN FILE NAME 001025 4777' JMS GNAME /GET NEXT FILE NAME 001026 7240 XFICHN, STA 001027 3001 DCA DPSGN /SET TRY AGAIN SWITCH 001030 1372 TAD (NAM1 /INIT POINTER TO NAME 001031 3235 DCA FSTBLK 001032 1101 TAD DEVNO /GET DEVICE # 001033 4552 CALUSR 001034 0002 2 /LOOKUP 001035 0000 FSTBLK, 0 /NAME PNTR, BECOMES ST BLK 001036 0000 FBKLEN, 0 / BECOMES -(FILE LENGTH) 001037 5206 JMP XFIERR /LOOKUP FAILED 001040 1235 TAD FSTBLK 001041 3077 DCA RBLK1 /SET UP PAGE 0 ST BLK 001042 6211 CDF 10 001043 3771 DCA I (CCBB / & RESET CCBB 001044 1774 TAD I (1404 /GET # ADD'L INFO WORDS 001045 3354 DCA GDEV2 / (NEGATIVE) & SAVE IT 001046 1354 TAD GDEV2 001047 1770 TAD I (17 /POINT TO FIRST OF THEM 001050 3355 DCA GDEV3 / (THE DATE, IF PRESENT) 001051 1513 TAD I N7 /GET THE NUMBER OF THE 001052 0113 AND N7 / DIRECTORY SEGMENT IN 001053 3037 DCA CNTR / CORE & SAVE IT. /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 8-1 001054 1354 TAD GDEV2 /WAS # OF ADD'L WRDS = 0? 001055 7640 SZA CLA 001056 1755 TAD I GDEV3 / NO, GET THE DATE WORD 001057 6201 CDF 0 001060 3353 DCA GDEV1 /STORE DATE OR 0 (NO DATE) 001061 4773' JMS PNAME /OUTPUT FILE NAME 001062 1235 TAD FSTBLK 001063 4540 JMS I OCTI /OUTPUT ST. BLK. IN OCTAL 001064 4526 JMS I TYPECI 001065 0255 "- 001066 1236 TAD FBKLEN /CALCULATE LAST BLK # 001067 7040 CMA 001070 1235 TAD FSTBLK 001071 4540 JMS I OCTI / & OUTPUT IN OCTAL 001072 4533 SPACE2 /OUTPUT 2 SPACES 001073 1236 TAD FBKLEN 001074 7041 CIA 001075 4540 JMS I OCTI /OUTPUT LENGTH IN OCTAL 001076 4527 JMS I TWOCI /" (" 001077 4050 4050 001100 1236 TAD FBKLEN 001101 7041 CIA 001102 4537 JMS I DECI / & AGAIN IN DECIMAL 001103 4525 JMS I TYPSI /") " 001104 4403 MS33 001105 1037 TAD CNTR /GET SEGMENT # 001106 4543 JMS I RTL6I / & PUT IN BITS 3-5 001107 4527 JMS I TWOCI / TO OUTPUT IT & "." 001110 6056 6056 001111 1355 TAD GDEV3 /GET ADDR OF 1ST ADD'L WRD 001112 1367 TAD (-1400-4 / FOR OFFSET OF NAME START 001113 4766' JMS OCT3 /OUTPUT LOCATION IN SEG 001114 4533 SPACE2 / & TWO SPACES 001115 1353 TAD GDEV1 /GET DATE WORD 001116 7440 SZA /IS IT = 0? 001117 4542 JMS I PDATEI /NO, OUTPUT DATE 001120 5221 JMP XFILEN /NOW OUTPUT CR/LF & CONTINUE /ROUTINE TO 'SET' THE 'DEVICE' OPTION 001121 4340 XDEV, JMS GDEVICE /GET & FETCH DEVICE HANDLER 001122 7201 DEVHAN+1 / (2 PAGE HANDLER IS OK) 001123 3100 DCA DEVAD /SET UP HANDLER ADDRESS 001124 1354 TAD GDEV2 /SAVE DEVICE # 001125 3101 DCA DEVNO 001126 3077 DCA RBLK1 / & NO FILE KNOWN 001127 3047 DCA SHUT / & NOTHING OPENED 001130 3050 DCA MODIF / & NOTHING MODIFIED 001131 1025 TAD NAM1 001132 6212 CIF 10 001133 5765' JMP XDEVM /GO FINISH SETUP IN FIELD 1 /ROUTINE TO 'SET' THE 'DDEV' OPTION 001134 4340 XDDEV, JMS GDEVICE /GET & FETCH DEVICE HANDLER /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 8-2 001135 6601 DMPHAN+1 / (2 PAGE HANDLER IS OK) 001136 6212 CIF 10 001137 5764' JMP XDDEV1 /GO TO FIELD 1 TO FINISH SETUP 001140 0000 GDEVICE,0 /SUBROUTINE TO GET DEVICE NAME & FETCH HANDLER 001141 4777' JMS GNAME /GET DEV NAME ("." ILLEGAL) 001142 1025 TAD NAM1 /MOVE NAME TO CALL 001143 3353 DCA GDEV1 001144 1026 TAD NAM2 001145 3354 DCA GDEV2 001146 1740 TAD I GDEVICE /GET HANDLER SPACE ADDRESS 001147 2340 ISZ GDEVICE 001150 3355 DCA GDEV3 001151 4552 CALUSR 001152 0001 1 /FETCH HANDLER 001153 0000 GDEV1, 0 001154 0000 GDEV2, 0 001155 0000 GDEV3, 0 001156 4573 ERCY, ERROR /NO SUCH HANDLER 001157 1355 TAD GDEV3 /RETURN HANDLER ADDRESS 001160 5740 JMP I GDEVICE 001164 2200 001165 2467 001166 3407 001167 6374 001170 0017 001171 6400 001172 0025 001173 2731 001174 1404 001175 2272 001176 2222 001177 3676 1200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 9 /ROUTINE TO EXECUTE THE 'SHOW' COMMAND 001200 4525 XSHBLK, JMS I TYPSI /"BLOCK = " 001201 4376 MS32 001202 1077 TAD RBLK1 /OUTPUT BLOCK IN OCTAL 001203 4540 XSTYPE, JMS I OCTI 001204 4530 XSHCR, JMS I CRLFI /GIVE A CR & LF 001205 3052 DCA DSWIT /BE SURE SWITCH IS RESET 001206 2046 ISZ CRSWT /LAST WORD ENDED BY CR? 001207 5572 JMP I RESTAR /YES, DONE 001210 4556 XSHOW, JMS I GWORDI /GET A WORD 001211 5215 JMP ERCG /NUMBERS NOT RECOGNIZED 001212 4567 JMS I SORTI /LOOK IT UP 001213 5073 SHOWL-1 001214 0037 SHOWOP-SHOWL 001215 4573 ERCG, ERROR /NOT FOLLOWED BY LEGAL WORD 001216 4525 XSHVER, JMS I TYPSI /"VERSION = <VERSION><PATCH>" 001217 2512 MSVER 001220 5204 JMP XSHCR 001221 4525 XSHMSK, JMS I TYPSI /"MASK = " 001222 4204 MS02 001223 1075 TAD MASK 001224 5203 JMP XSTYPE 001225 4525 XSHOFF, JMS I TYPSI /"OFFSET = " 001226 4242 MS09 001227 1073 TAD OFFSET 001230 7041 CIA 001231 5203 JMP XSTYPE 001232 4525 XSHFIL, JMS I TYPSI /"FILLER = " 001233 4415 MS37 001234 1074 TAD FILLER 001235 5203 JMP XSTYPE 001236 4525 XSHODL, JMS I TYPSI /"ODT LOC = " 001237 4256 MS12 001240 4546 JMS I BKLOCI /OUTPUT IT 001241 0067 SBLK-1 001242 5257 JMP XSHBKS 001243 4525 XSHREL, JMS I TYPSI /"REL. LOC = " 001244 4324 MS20 001245 4546 JMS I BKLOCI / & OUTPUT IT 001246 0056 BLK-1 001247 5257 JMP XSHBKS 001250 4525 XSHABS, JMS I TYPSI /"ABS. LOC = " 001251 4210 MS03 001252 1056 TAD CAD /OUTPUT LOCATION IN BLOCK 001253 1377 TAD (-IOBUF 001254 3056 DCA CAD /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 9-1 001255 4546 JMS I BKLOCI 001256 0053 CBLK-1 001257 1050 XSHBKS, TAD MODIF /HAS BLOCK BEEN MODIFIED? 001260 7700 SMA CLA 001261 5204 JMP XSHCR / NO, SAY NOTHING! 001262 4525 JMS I TYPSI / YES, SAY " MOD" 001263 2500 MSMOD 001264 5204 JMP XSHCR 001265 4525 XSHUPP, JMS I TYPSI /"UPPER = " 001266 4216 MS04 001267 4546 JMS I BKLOCI /OUTPUT IN BLOCK.LOC FORM 001270 0061 UBLK-1 001271 5204 JMP XSHCR 001272 4525 XSHLOW, JMS I TYPSI /"LOWER = " 001273 4223 MS05 001274 4546 JMS I BKLOCI 001275 0064 LBLK-1 001276 5204 JMP XSHCR 001277 4525 XSHFMT, JMS I TYPSI /"FORMAT = " 001300 4230 MS06 001301 1042 TAD FCNT 001302 1376 TAD (FMTLS-1 /SET UP FOR CORRECT TITLE 001303 3010 XSHFM, DCA DPNT 001304 4553 TADIDP /GET MESSAGE ADDRESS 001305 4524 JMS I TYPSTI /OUTPUT DESCRIPTOR 001306 5204 JMP XSHCR 001307 4525 XSHMOD, JMS I TYPSI /"MODE = " 001310 4247 MS10 001311 1044 TAD MODSW /GET CORRECT MESSAGE 001312 1375 TAD (MODELS-1 /(OFFSET INTO TABLE) 001313 5303 JMP XSHFM /GET ADDRESS & OUTPUT 001314 4525 XSHOUT, JMS I TYPSI /"OUTPUT = " 001315 4367 MS30 001316 1017 TAD TYPSW /SET UP MESSAGE ADDRESS 001317 1374 TAD (OUTLS-1 /(OFFSET INTO TABLE) 001320 5303 JMP XSHFM 001321 4525 XSHSMS, JMS I TYPSI /"SMASK = " 001322 4203 MS07 001323 1076 TAD SMASKL 001324 3021 DCA TEMP /-# TO OUTPUT 001325 1176 TAD MASKBS 001326 3010 DCA DPNT /SET UP TO OUTPUT 001327 1111 TAD M10 /SET LINE LENGTH 001330 3022 DCA TEMP1 001331 5342 JMP XSHSM2 001332 4527 XSHSM1, JMS I TWOCI /OUTPUT ", " 001333 5440 5440 001334 2022 ISZ TEMP1 /ENOUGH ON THIS LINE? 001335 5342 JMP XSHSM2 /NO, OK /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 9-2 001336 4530 JMS I CRLFI /YES, OUTPUT CR-LF 001337 4533 SPACE2 / & 2 SPACES 001340 7240 STA /MAKE LINE 1 LONGER 001341 5327 JMP XSHSM1-3 /AND RESET LENGTH / 001342 4553 XSHSM2, TADIDP /GET NEXT VALUE 001343 4540 JMS I OCTI / & OUTPUT IT 001344 2021 ISZ TEMP /ENOUGH? 001345 5332 JMP XSHSM1 001346 5204 JMP XSHCR /OK, GET NEXT WORD 001347 4525 XSHDEV, JMS I TYPSI /"DEVICE = XXXX" 001350 2457 MSDEV 001351 4527 JMS I TWOCI /NOW OUTPUT " (" 001352 4050 4050 001353 1101 TAD DEVNO /GET THE DEVICE # 001354 4541 JMS I DEC2I / & OUTPUT AS 2 DIGITS 001355 4526 JMS I TYPECI /FINALLY OUTPUT ")" 001356 0251 ") 001357 5204 JMP XSHCR 001360 4525 XSHDDEV,JMS I TYPSI /"DDEV = XXXX" 001361 2450 MSDDEV 001362 5204 JMP XSHCR 001363 0000 FPRNT, 0 /PRINT FIELD DIGIT FROM BITS 6-8 001364 4773 JMS I (FPRNTX /FIRST PRINT BANK BITS 001365 7012 RTR /MOVE TO BITS 9-11 001366 7010 RAR 001367 0113 AND N7 /MASK TO 1 DIGIT 001370 4531 DIGIT / & OUTPUT IN ASCII 001371 5763 JMP I FPRNT 001373 7011 001374 5274 001375 5270 001376 4777 001377 0600 1400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 10 /CONTINUATION OF 'SHOW' COMMAND /SHOW 'CCB' HANDLER 001400 6213 XSHCCB, CDF CIF 10 001401 4777' JMS GCCB /SET UP CCB FOR FILE 001402 3001 DCA DPSGN / & SET UP SEGMENTS 001403 4525 JMS I TYPSI /"CCB:" 001404 4253 MS11 001405 4353 JMS CCHDST /DO SETUP, OUTPUT START 001406 4525 JMS I TYPSI /", JSW = " 001407 4317 MS19 001410 4776' JMS NXTOCT /OUTPUT J.S.W. IN OCTAL 001411 4530 JMS I CRLFI 001412 4525 JMS I TYPSI /" CORE SEGS: " 001413 4267 MS14 001414 1375 XSHCC1, TAD (-4 001415 3037 DCA CNTR /-#/LINE 001416 4553 XSHCC2, TADIDP /GET ORIGIN WORD 001417 3022 DCA TEMP1 001420 4553 TADIDP / & COUNT WORD 001421 3023 DCA TEMP2 / TAD TEMP2 /GO OUTPUT START FIELD / JMS FPRNT 001422 4774 JMS I (ADFLD /ADJUST BANK AND FIELD FOR 128K 001423 1022 TAD TEMP1 / & START ADDR 001424 4540 JMS I OCTI 001425 4526 JMS I TYPECI / & A "-" 001426 0255 "- / TAD TEMP2 /OUTPUT FIELD AGAIN / JMS FPRNT 001427 4774 JMS I (ADFLD /ADJUST BANK AND FIELD (128K) 001430 1023 TAD TEMP2 / PAGE COUNT -> PAGES 001431 7104 CLL RAL 001432 0106 AND M200 /MASK OFF FIELD DATA 001433 1022 TAD TEMP1 /ADD ORIGIN ADDR 001434 1112 TAD M1 / & SUBTRACT 1 FOR END 001435 4540 JMS I OCTI /OUTPUT END ADDR IN OCTAL 001436 2001 ISZ DPSGN /DONE? 001437 5245 JMP XSHCC4 /NO 001440 1000 TAD OVLFLG /YES, OVERLAYS? (LINK OUTPUT) 001441 7450 SNA 001442 5773' JMP XSHCR / NO, DONE 001443 3010 DCA DPNT / YES, RESET POINTER 001444 5277 JMP XSHHD1 / & CONTINUE / 001445 4527 XSHCC4, JMS I TWOCI /OUTPUT SEPARATOR 001446 5440 5440 001447 2037 ISZ CNTR /DONE ON THIS LINE? 001450 5216 JMP XSHCC2 /NO 001451 4530 JMS I CRLFI /YES 001452 4533 SPACE2 /ADD 2 SPACES 001453 7240 STA /AND 1 MORE ITEM PER LINE 001454 5214 JMP XSHCC1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 10-1 /SHOW 'HEADER' HANDLER 001455 6213 XSHHDR, CDF CIF 10 001456 4772' JMS GHDR /SET UP HEADER FOR MODULE 001457 4525 JMS I TYPSI /"HEADER:" 001460 4422 MS38 001461 4353 JMS CCHDST /DO SETUP, OUTPUT START 001462 4525 JMS I TYPSI /", NEXT WORD = " 001463 4426 MS39 001464 4553 TADIDP /GET FIELD DIGIT 001465 4531 DIGIT / & OUTPUT 001466 4776' JMS NXTOCT /FOLLOWED BY ADDRESS 001467 4525 JMS I TYPSI /", LOAD VER = " 001470 4436 MS40 001471 4776' JMS NXTOCT / & OUTPUT VERSION 001472 4553 TADIDP /GET E.P. FLAG 001473 7650 SNA CLA 001474 5277 JMP XSHHD1 / NO E.P. 001475 4525 JMS I TYPSI /", EP REQ'D" 001476 4443 MS41 001477 4530 XSHHD1, JMS I CRLFI /TO THE NEXT LINE 001500 4525 JMS I TYPSI /" OVLYS START... 001501 4452 MS42 001502 4553 XSHHD2, TADIDP /GET NUMBER OF OVERLAYS 001503 7450 SNA / FOR THIS LEVEL 001504 5773' JMP XSHCR / 0 = END, DONE 001505 3022 DCA TEMP1 /SAVE IT 001506 4530 JMS I CRLFI /OUTPUT A CR/LF 001507 4533 SPACE2 / AND 4 SPACES 001510 4533 SPACE2 001511 1022 TAD TEMP1 001512 4541 JMS I DEC2I /# OVLYS IN DECIMAL 001513 4533 SPACE2 001514 4553 TADIDP /GET MEMORY START WORD 001515 3023 DCA TEMP2 001516 1023 TAD TEMP2 001517 4771' JMS FPRNT /OUTPUT START FIELD 001520 1023 TAD TEMP2 001521 0103 AND M400 / & DOUBLE-PAGE 001522 4540 JMS I OCTI 001523 4533 SPACE2 001524 4776' JMS NXTOCT /OUTPUT RELATIVE BLOCK 001525 4533 SPACE2 001526 4776' JMS NXTOCT /OUTPUT OVERLAY LENGTH 001527 5302 JMP XSHHD2 /AND DO ANOTHER ROUND! /SHOW 'ERRORS' HANDLER 001530 4770' XSHERR, JMS USROUT /BE SURE MESSAGES ARE IN 001531 2052 ISZ DSWIT /SET DUMP SWITCH 001532 4525 JMS I TYPSI /"ERRORS: FUTIL VERSION ..." 001533 2503 MSERR 001534 4530 JMS I CRLFI 001535 7201 CLA IAC 001536 3010 DCA DPNT /SET POINTER & CODE 001537 4530 XSHER1, JMS I CRLFI /DO ANOTHER CR/LF /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 10-2 001540 1010 TAD DPNT /TEST FOR LAST REAL MESSAGE 001541 1367 TAD (-EMSEND /(NOT DEBUG MESSAGE!) 001542 7650 SNA CLA 001543 5773' JMP XSHCR 001544 1010 TAD DPNT /OUTPUT ERROR CODE 001545 4541 JMS I DEC2I / AS 2 DIGITS 001546 4525 JMS I TYPSI /THEN " = " 001547 4200 MS01 001550 4553 TADIDP /GET ADDR OF MESSAGE AND 001551 4524 JMS I TYPSTI / OUTPUT IT 001552 5337 JMP XSHER1 001553 0000 CCHDST, 0 001554 4530 JMS I CRLFI 001555 4525 JMS I TYPSI /" SA = " 001556 4313 MS18 001557 1366 TAD (CCBB 001560 3010 DCA DPNT /SET UP POINTER TO DATA 001561 4553 TADIDP /GET 2ND WORD FROM CCB/HDR 001562 4771' JMS FPRNT /IT HAS START FIELD SO OUTPUT 001563 4776' JMS NXTOCT / FOLLOWED BY START ADDR 001564 5753 JMP I CCHDST 001566 6400 001567 7720 001570 0544 001571 1363 001572 2060 001573 1204 001574 7000 001575 7774 001576 1766 001577 2000 1600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 11 /ROUTINE TO EXECUTE THE 'SET' COMMAND 001600 2046 XSETN, ISZ CRSWT /WAS LAST INFO ENDED BY CR? 001601 5572 JMP I RESTAR /YES, DONE 001602 4556 XSET, JMS I GWORDI /GET OPTION WORD 001603 5211 JMP XSET1 /NO NUMBERS PLEASE! 001604 2046 ISZ CRSWT /WAS WORD ENDED BY A CR? 001605 4573 ERCK, ERROR /YES, ILLEGAL HERE 001606 4567 JMS I SORTI /LOOK UP WORD 001607 5110 SETLST-1 001610 0060 SETJMP-SETLST 001611 4573 XSET1, ERROR /WHAT??? /ROUTINE TO 'SET' THE 'DMODE' (DUMP MODE) 001612 4556 XDMODE, JMS I GWORDI /GET A WORD 001613 5217 JMP ERC11 /NO NUMBERS HERE! 001614 4567 JMS I SORTI /LOOK IT UP 001615 5260 XDMLST-1 001616 0004 XDMOPS-XDMLST 001617 4573 ERC11, ERROR /NO LIKEE!! / 001620 7350 CLL STA RAR /4000: 'ALL' (ECHO TO TTY & FILE) 001621 7001 XDMODS, IAC / 1: 'PART' (ONLY DUMP,LIST,ETC) 001622 3053 DCA DMODE / 0: 'NONE' (TTY ONLY) 001623 5200 JMP XSETN /ROUTINE TO 'SET' THE 'OUTPUT' OPTION 001624 4556 XOUTS, JMS I GWORDI /GET OPTION WORD 001625 5231 JMP ERCL / # IN THE BUFFER 001626 4567 JMS I SORTI /LOOK IT UP 001627 5222 XOLST-1 001630 0007 XOOPS-XOLST 001631 4573 ERCL, ERROR /NOT FOLLOWED BY LEGAL WORD / 001632 7344 CLL STA RAL /-1: 'FPP' (SYMBOLIC) 001633 7001 XOUTS1, IAC /+1: 'PDP' (SYMBOLIC) 001634 3017 DCA TYPSW / 0: 'OCTAL' 001635 5200 JMP XSETN /ROUTINE TO 'SET' THE 'MASK' OPTION 001636 4560 XMASK, JMS I ARGI /GET ONE ARG 001637 1025 TAD ACC1 /GET 'LOC' 001640 3075 DCA MASK / & SET MASK 001641 5200 JMP XSETN /ROUTINE TO 'SET' THE 'OFFSET' OPTION 001642 4560 XOFFS, JMS I ARGI /GET ONE ARG 001643 1025 TAD ACC1 /GET # 001644 7041 CIA 001645 3073 DCA OFFSET /SET IT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 11-1 001646 5200 JMP XSETN /ROUTINE TO 'SET' THE 'ERROR' (MODE) OPTION 001647 4556 XEMODE, JMS I GWORDI /GET WORD 001650 5254 JMP ERCZ /NO NUMBERS ALLOWED!!! 001651 4567 JMS I SORTI /LOOK IT UP 001652 5211 XELST-1 001653 0005 XEOPS-XELST 001654 4573 ERCZ, ERROR /ILLEGAL SOMETHING / 001655 7001 XEMOD1, IAC /'SHORT' 001656 3020 DCA ERMODE /'LONG' 001657 5200 JMP XSETN /ROUTINE TO 'SET' THE 'UPPER' LIMITS OPTION 001660 4565 XUPP, JMS I LIMITI /UPPER, GET ARGS 001661 0062 UBLK 001662 5200 JMP XSETN /ROUTINE TO 'SET' THE 'LOWER' LIMITS OPTION 001663 4565 XLOW, JMS I LIMITI /LOWER, GET ARGS 001664 0065 LBLK 001665 5200 JMP XSETN /ROUTINE TO 'SET' THE 'MODE' OPTION 001666 4556 XMODE, JMS I GWORDI /GET OPTION WORD 001667 5273 JMP ERCJ /NUMBER IN BUFFER, BAIL OUT 001670 4567 JMS I SORTI /LOOK IT UP 001671 5237 MODLST-1 001672 0011 MODOPS-MODLST 001673 4573 ERCJ, ERROR /NOT RECOGNIZED / 001674 7346 CLL STA RTL /-1: OFFSET 001675 7001 XMODS, IAC /+2: LOAD (MODULE) 001676 7001 IAC /+1: SAVE (FILE) 001677 3044 DCA MODSW / 0: NORMAL 001700 5200 JMP XSETN /ROUTINE TO 'SET' THE 'FILLER' OPTION 001701 4560 XFILL, JMS I ARGI /GET ONE ARG 001702 1025 TAD ACC1 001703 3074 DCA FILLER / & SET AS FILLER 001704 5200 JMP XSETN /ROUTINE TO 'SET' THE 'TEMP' STORAGE 001705 4560 XTEMP, JMS I ARGI /GET THE 24 BIT ARG (EXPRESSION!) 001706 1025 TAD ACC1 /NOW SAVE THE 24 BITS FOR LATER 001707 3033 DCA TEMPV1 001710 1026 TAD ACC2 /GET IT BACK WITH "EVAL T" 001711 3034 DCA TEMPV2 / (OR IN AN EXPRESSION) 001712 5200 JMP XSETN /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 11-2 /ROUTINE TO EXECUTE THE 'IF' COMMAND 001713 4547 XIF, JMS I EVALI /EVALUATE THE EXPRESSION 001714 7410 SKP / TERMIN = CR, OK 001715 5777' JMP ERCC / TOO MANY PARENS 001716 1025 TAD ACC1 /TEST THE 24-BIT VALUE FOR ZERO 001717 7450 SNA 001720 1026 TAD ACC2 001721 7650 SNA CLA 001722 5572 JMP I RESTAR /OK, JUST CONTINUE 001723 1174 XIFSKP, TAD COMST /NOT ZERO, BEGIN SKIPPING FOR 001724 3015 DCA COMIR / LINE STARTING WITH "END" 001725 4523 READLN /GET A LINE FROM THE INPUT 001726 4522 TYPEM-1 / WITH THESE TERMINATORS 001727 0342 IFSKPO-TYPEM 001730 5323 JMP XIFSKP /BUFFER EMPTIED / 001731 4570 XIFCR, JMS I ENDCI /CR FOUND, TIDY THINGS UP 001732 5323 JMP XIFSKP / CR ONLY 001733 4556 JMS I GWORDI /GET 1ST WORD ON LINE 001734 5323 JMP XIFSKP / NO WORD 001735 1376 TAD (-0516 /IS THE WORD "EN..."? 001736 7640 SZA CLA 001737 5323 JMP XIFSKP / NO, KEEP LOOKING! 001740 5572 JMP I RESTAR /YES! BEGIN EXECUTION AGAIN! /ROUTINE TO OUTPUT LOCATION THAT SATISFIED ONE /OF THE SEARCH COMMANDS. IF ABSSW=0, OUTPUT /AS RELATIVE LOCATION. 001741 0000 ABKLOC, 0 001742 1051 TAD ABSSW /IS IT 0? 001743 7640 SZA CLA 001744 5353 JMP ABK2 /NO, OUTPUT AS ABSOLUTE 001745 4546 JMS I BKLOCI /OUTPUT LOCATION 001746 0056 BLK-1 001747 4527 ABK1, JMS I TWOCI /OUTPUT ": " 001750 7240 7240 001751 4535 JMS I TWOT 001752 5741 JMP I ABKLOC / 001753 1061 ABK2, TAD LOCL /MAKE ABSOLUTE 001754 0121 AND N377 001755 3056 DCA CAD 001756 4546 JMS I BKLOCI /NOW OUTPUT IT 001757 0053 CBLK-1 001760 5347 JMP ABK1 001761 0000 TWOCS, 0 /OUTPUT 2-CHARACTER ARG 001762 1761 TAD I TWOCS /GET ARG 001763 2361 ISZ TWOCS /SKIP IT 001764 4535 JMS I TWOT /OUTPUT IT 001765 5761 JMP I TWOCS 001766 0000 NXTOCT, 0 001767 4553 TADIDP /GET NEXT WORD FROM BLOCK /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 11-3 001770 4540 JMS I OCTI / & OUTPUT IN OCTAL 001771 5766 JMP I NXTOCT 001776 7262 001777 0402 2000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 12 /ROUTINE TO EXECUTE THE 'WORD' SEARCH COMMAND 002000 4247 XWORD, JMS SSET /INITIALIZE SEARCH 002001 1236 TAD CNOP /SET UP FOR NORMAL, 002002 3237 DCA CNOP+1 002003 1111 TAD M10 / EQUAL SEARCH 002004 1377 XWOR2, TAD (SNA CLA /"UNEQUAL" WORD SEARCH 002005 3233 DCA XWORC 002006 4556 XWOR1, JMS I GWORDI /GET POSSIBLE WORD 002007 5221 JMP XWOR3 /NUMBERS IN BUFFER 002010 2046 ISZ CRSWT /WAS IT ENDED BY A CR? 002011 4573 ERCI, ERROR /YES, VELLY SOLLY! 002012 4567 JMS I SORTI /LOOK UP COMMAND: UN, ME, 002013 5276 XWORCL-1 / AB, FR, TO 002014 0014 XWOROP-XWORCL 002015 4573 ERCH, ERROR /COMMAND NOT RECOGNIZED / 002016 1230 XWOR7, TAD XWOR4+1 /"MEMREF", ONLY MEMORY- 002017 3237 DCA CNOP+1 / REFERENCE OP-CODES CAN 002020 5206 JMP XWOR1 / EVER BE OUTPUT. / 002021 4560 XWOR3, JMS I ARGI /GET AN ARG 002022 1025 TAD ACC1 /GET THE VALUE 002023 0075 AND MASK 002024 7041 CIA 002025 3036 DCA CNT /LOOK FOR THIS WORD 002026 4307 JMS LSETUP /SET UP COUNT OF WORDS TO DO 002027 4561 XWOR4, JMS I GETI /GET A WORD 002030 5245 JMP XWOR5 /FILE MODE, NO SUCH ADDRESS 002031 0075 AND MASK 002032 1036 TAD CNT 002033 7402 XWORC, HLT /WILL BE "SZA CLA" OR "SNA CLA" 002034 5245 JMP XWOR5 /DID NOT MATCH 002035 4776' JMS OPRTST /TEST FOR OP-CODES 6 & 7 002036 7000 CNOP, NOP / 7--OPR 002037 7000 NOP / 6--IOT;"NOP" OR "JMP XWOR5" 002040 4775' JMS ABKLOC /DID MATCH, OUTPUT LOC 002041 4561 JMS I GETI /GET THAT WORD 002042 5774' JMP ERCP / OH I HOPE NOT!!! 002043 4540 JMS I OCTI /AND OUTPUT IT IN OCTAL 002044 4530 JMS I CRLFI 002045 4347 XWOR5, JMS LCHEK /DONE YET? 002046 5227 JMP XWOR4 /NO /SUBROUTINE TO INITIALIZE THE SEARCH COMMANDS 002047 0000 SSET, 0 002050 3051 DCA ABSSW /RESET ABSOLUTE SWITCH 002051 1065 TAD LBLK /SET UP START BLK & LOC 002052 3057 DCA BLK 002053 1066 TAD LLOCH 002054 3060 DCA LOCH 002055 1067 TAD LLOCL 002056 3061 DCA LOCL 002057 1062 TAD UBLK /SET UP END BLK & LOC /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 12-1 002060 3304 DCA EBLK 002061 1063 TAD ULOCH 002062 3305 DCA ELOCH 002063 1064 TAD ULOCL 002064 3306 DCA ELOCL 002065 5647 JMP I SSET /COMMON OPTIONS FOR 'WORD' AND 'STRING' SEARCHES 002066 7240 XWSABS, STA 002067 3051 DCA ABSSW /'ABSOLUTE'--SET SWITCH 002070 5300 JMP XWSRET / 002071 4565 XWSFRM, JMS I LIMITI /'FROM'--GET LOWER LIMITS 002072 0057 BLK 002073 5300 JMP XWSRET / 002074 1062 XWSTO, TAD UBLK /'TO'--SET UP IF NEEDED 002075 3304 DCA EBLK 002076 4565 JMS I LIMITI / & GET UPPER LIMITS 002077 2104 EBLK 002100 7344 XWSRET, STA CLL RAL /= -2, CALCULATE RETURN ADDRESS AS 002101 1556 TAD I GWORDI / LAST CALL TO "GWORD" TO ALLOW 002102 3347 DCA LCHEK / THESE TO BE COMMON TO BOTH 002103 5747 JMP I LCHEK / 'WORD' AND 'STRING' SEARCHES. 002104 0000 EBLK, 0 002105 0000 ELOCH, 0 002106 0000 ELOCL, 0 002107 0000 LSETUP, 0 /SET SEARCH WORD-COUNTERS **** SEE NOTE **** 002110 3025 DCA ACC1 /INITIALIZE THESE TO 0 002111 3026 DCA ACC2 002112 1044 TAD MODSW /IN A MAPPED MODE? 002113 7740 SMA SZA CLA 002114 5327 JMP LSETL / YES, IGNORE BLOCK PARTS 002115 1057 TAD BLK / NO, SET UP FOR 24 BIT 002116 3025 DCA ACC1 002117 1304 TAD EBLK / BLK-EBLK 002120 3031 DCA OPER1 002121 3032 DCA OPER2 002122 4773' JMS DSUB /DO THE SUBTRACTION 002123 1372 TAD (400 /NOW SET UP MULTIPLY BY 400 002124 3031 DCA OPER1 002125 3032 DCA OPER2 002126 4771' JMS DMUL /GIVES: (BLK-EBLK)*400 002127 7101 LSETL, CLL IAC 002130 1306 TAD ELOCL 002131 3031 DCA OPER1 /NOW SET UP ELOC+1 002132 7004 RAL 002133 1305 TAD ELOCH 002134 3032 DCA OPER2 002135 4773' JMS DSUB /AND SUBTRACT IT 002136 1061 TAD LOCL /NOW ADD LOC TO GIVE: 002137 3031 DCA OPER1 / (BLK-EBLK)*400+(LOC-ELOC-1) /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 12-2 002140 1060 TAD LOCH / WHICH IS 24-BIT COUNT OF 002141 3032 DCA OPER2 / WORDS TO SEARCH. 002142 4770' JMS DADD 002143 1026 TAD ACC2 /IF NOT NEGATIVE, ALREADY TOO 002144 7700 SMA CLA 002145 5571 JMP I RECRLF / FAR, SO JUST QUIT NOW! 002146 5707 JMP I LSETUP /**** NOTE: COUNT LEFT SET UP IN ACC1 & ACC2 **** 002147 0000 LCHEK, 0 /CHECK IF SEARCH RANGE EXHAUSTED 002150 4566 JMS I INCI /INCREMENT LOC 002151 2025 ISZ ACC1 /COUNT WORDS TO DO 002152 5747 JMP I LCHEK 002153 2026 ISZ ACC2 / (24-BIT) 002154 5747 JMP I LCHEK 002155 5571 JMP I RECRLF /DO CR/LF & STOP! 002156 0000 TIDPNT, 0 /"TAD I DPNT" IN FIELD 1 002157 6211 CDF 10 002160 1410 TAD I DPNT 002161 6201 CDF 0 002162 5756 JMP I TIDPNT 002163 0000 ASCII, 0 /ASCII OUTPUT FORMAT FROM DEVICE 002164 0117 AND N177 /MAKE CHARS INTO "STANDARD" 002165 1120 TAD N200 / FORM: 7 BITS + PARITY ON 002166 4536 JMS I TYPEI / TO CAUSE CORRECT PRINTING 002167 5763 JMP I ASCII 002170 5650 002171 6000 002172 0400 002173 5662 002174 2473 002175 1741 002176 4547 002177 7650 2200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 13 /ROUTINE TO 'REWIND' THE DEVICE 002200 6211 XREWIN, CDF 10 002201 1102 TAD USRAD /RESET DIRECTORY SEGMENT KEY 002202 7700 SMA CLA 002203 3513 DCA I N7 / IN USR IF IT IS IN MEMORY. 002204 6201 CDF 0 002205 4500 JMS I DEVAD /CALL HANDLER 002206 0110 0110 /READ, 1 PAGE, FIELD 1 002207 6127 PDLB /DUMMY BUFFER (ZAP P.D.L.) 002210 0001 1 /BLK 1 002211 5213 JMP RERROR /READ ERROR! 002212 5572 JMP I RESTAR /READ ERROR--TEST TYPE & OUTPUT MESSAGE 002213 7710 RERROR, SPA CLA /BIT 0 = 1 IF FATAL 002214 4573 ERC00, ERROR /FATAL 002215 4573 ERC01, ERROR /NON-FATAL /ROUTINE TO EXECUTE THE 'STRING' SEARCH COMMAND 002216 4777' XSTRIN, JMS SSET /INITIALIZE 002217 1376 TAD (STJMP-STCDF /RESET MASKING SWITCH 002220 1200 XSTR0, TAD XREWIN / OR SET MASKING SWITCH 002221 3360 DCA SMSKSW 002222 4556 JMS I GWORDI /GET POSSIBLE WORD 002223 5232 JMP XSTR1 /NUMBERS ONLY 002224 2046 ISZ CRSWT /FOLLOWED BY A CR? 002225 5775' JMP ERCI / YES, KICK OUT***** 002226 4567 JMS I SORTI /LOOK UP OPTION: MA, 002227 5300 STRLST-1 / AB, FR, TO 002230 0025 STROPS-STRLST 002231 5774' JMP ERCH /NO LIKEE! / 002232 4557 XSTR1, JMS I GARGI /GET ARGS - THEN REPACK INTO BUFFER 002233 1021 TAD TEMP / MASKING THEM IF SPECIFIED 002234 3037 DCA CNTR /SET UP LENGTH 002235 1175 TAD TEMPST 002236 3013 DCA SCANX2 /STORING DONE IN NEG. FORM 002237 5242 JMP XSTR2+2 /GO SET UP MASK / 002240 2024 XSTR2, ISZ TEMP3 /MASK END? 002241 5246 JMP XSTR3 002242 1176 TAD MASKBS /YES, RESET MASK 002243 3011 DCA SPNT 002244 1076 TAD SMASKL /SET UP LENGTH 002245 3024 DCA TEMP3 002246 2010 XSTR3, ISZ DPNT /SKIP 2 EXTRA WORDS 002247 2010 ISZ DPNT 002250 1410 TAD I DPNT /GET A WORD 002251 4357 JMS STRMSK /TEST & MASK 002252 7041 CIA /NEGATE 002253 3413 DCA I SCANX2 /STORE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 13-1 002254 2010 ISZ DPNT /BUMP POINTER 002255 2037 ISZ CNTR /DONE? 002256 5240 JMP XSTR2 002257 4773' JMS LSETUP /YES, SET UP COUNT OF WORDS 002260 1175 XSTR4, TAD TEMPST /SET UP FOR SEARCH: 002261 3010 DCA DPNT / STRING, 002262 1021 TAD TEMP 002263 3037 DCA CNTR / & STRING LENGTH. 002264 1061 TAD LOCL 002265 3366 DCA XLOCL /SAVE CURRENT LOCATION 002266 1060 TAD LOCH 002267 3365 DCA XLOCH 002270 1057 TAD BLK 002271 3364 DCA XBLK 002272 1025 TAD ACC1 / & COUNT FOR RESET 002273 3031 DCA OPER1 002274 1026 TAD ACC2 002275 3032 DCA OPER2 002276 5302 JMP XSTR6 /NOW SET UP MASK / 002277 4772' XSTR5, JMS LCHEK /DONE? 002300 2024 ISZ TEMP3 /NO, AT MASK END? 002301 5306 JMP XSTR7 002302 1176 XSTR6, TAD MASKBS / YES, RESET MASK 002303 3011 DCA SPNT 002304 1076 TAD SMASKL 002305 3024 DCA TEMP3 002306 4561 XSTR7, JMS I GETI /GET NEXT WORD 002307 5333 JMP XSTR10 /MAPPED MODE, NO SUCH ADDRESS 002310 4357 JMS STRMSK /TEST & MASK 002311 1410 TAD I DPNT /COMPARE? 002312 7640 SZA CLA 002313 5333 JMP XSTR10 /NO, GO RESET & CONTINUE 002314 2037 ISZ CNTR /MATCHED ENOUGH? 002315 5277 JMP XSTR5 /NOT YET 002316 4343 JMS XRSET /YES, RESET LOCATION & COUNT 002317 1021 TAD TEMP /AND LENGTH 002320 3037 DCA CNTR 002321 1111 XSTR8, TAD M10 002322 3027 DCA ACCX1 / -(#/LINE) 002323 4771' JMS ABKLOC /OUTPUT THIS LOCATION 002324 4561 XSTR9, JMS I GETI /GET A WORD 002325 5770' JMP ERCP /BAD,BAD,BAD!!! 002326 4540 JMS I OCTI /AND OUTPUT IN OCTAL 002327 4566 JMS I INCI /INCREMENT LOC 002330 2037 ISZ CNTR /DONE? 002331 5336 JMP XSTR11 /NO, CONTINUE 002332 4530 JMS I CRLFI /YES, OUTPUT CR/LF 002333 4343 XSTR10, JMS XRSET /RESET LOCATION & COUNT 002334 4772' JMS LCHEK /DONE? 002335 5260 JMP XSTR4 /NO, LOC INC'D, TRY NEXT / 002336 4533 XSTR11, SPACE2 /OUTPUT " " 002337 2027 ISZ ACCX1 /DONE ON THIS LINE? 002340 5324 JMP XSTR9 /NO, NOT YET /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 13-2 002341 4530 JMS I CRLFI /YES 002342 5321 JMP XSTR8 002343 0000 XRSET, 0 /RESET BLK & LOC FROM XBLK & XLOC 002344 1366 TAD XLOCL /LOC 002345 3061 DCA LOCL 002346 1365 TAD XLOCH 002347 3060 DCA LOCH 002350 1364 TAD XBLK /BLK 002351 3057 DCA BLK 002352 1031 TAD OPER1 /WORDS LEFT TO SEARCH 002353 3025 DCA ACC1 002354 1032 TAD OPER2 002355 3026 DCA ACC2 002356 5743 JMP I XRSET 002357 0000 STRMSK, 0 /STRING MASKING *** NEXT WORD MODIFIED *** 002360 6211 SMSKSW, CDF 10 /"CDF 10" OR "JMP I STRMSK" 002361 0411 AND I SPNT /OK, MASK IN FIELD 1 002362 6201 CDF 0 002363 5757 JMP I STRMSK 5757 STJMP= JMP I STRMSK 6211 STCDF= CDF 10 002364 0000 XBLK, 0 002365 0000 XLOCH, 0 002366 0000 XLOCL, 0 002370 2473 002371 1741 002372 2147 002373 2107 002374 2015 002375 2011 002376 7546 002377 2047 2400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 14 /ROUTINE TO EXECUTE THE BLOCK 'WRITE' COMMAND 002400 4560 XWRARG, JMS I ARGI /GET ONE ARG 002401 1025 TAD ACC1 /USE IT AS THE BLOCK 002402 7410 SKP 002403 1777' XWRITE, TAD WBLK /SET BLOCK 002404 3210 DCA XWBLK 002405 4500 JMS I DEVAD /CALL HANDLER 002406 4210 4210 /WRITE, 2 PAGES, FIELD 1 002407 7200 IOBUF 002410 0000 XWBLK, 0 /[** COUNTER FOR MODIFY **] 002411 5214 JMP WERROR /WRITE ERROR 002412 3050 DCA MODIF /CLEAR SOMETHING-CHANGED FLAG 002413 5572 JMP I RESTAR /WRITE ERROR--TEST TYPE & OUTPUT MESSAGE 002414 7710 WERROR, SPA CLA /BIT 0 = 1 IF FATAL 002415 4573 ERC02, ERROR /FATAL 002416 4573 ERC03, ERROR /NON-FATAL /ROUTINE TO EXECUTE THE 'MODIFY' COMMAND 002417 4556 XMODIF, JMS I GWORDI /GET FORMAT WORD IF ONE 002420 5231 JMP XMODEF /NONE, GET DEFAULT 002421 3277 DCA MODTMP /SAVE FOR LATER 002422 2046 ISZ CRSWT /TERMINATED BY A CR? 002423 5230 JMP ERCO / YES, SAVE USER FROM HIMSELF! 002424 1277 TAD MODTMP /TEST FORMAT FOR RECOGNITION 002425 4567 JMS I SORTI 002426 5013 MODIFL-1 002427 0021 MODADS-MODIFL 002430 4573 ERCO, ERROR / I THEENK YOU USE BAD WORD! / /NO FORMAT DESCRIPTOR GIVEN, USE DEFAULT 002431 1042 XMODEF, TAD FCNT /USE CURRENT FORMAT, 002432 1376 TAD (MODDLS-1 / WITH A LITTLE DIFFERENCE 002433 3010 DCA DPNT 002434 4553 TADIDP /GET THE ONE TO USE 002435 3277 DCA MODTMP / AND SAVE IT / 002436 4557 XMOD0, JMS I GARGI /OK, NOW GET ARGS 002437 1021 TAD TEMP /MOVE COUNT TO A SAFE PLACE 002440 3210 DCA XWBLK 002441 1410 XMOD1, TAD I DPNT /GET BLOCK # 002442 4775' JMS BLKTST /TEST & SET BLK 002443 1410 TAD I DPNT /GET LOC 002444 3060 DCA LOCH 002445 1410 TAD I DPNT 002446 3061 DCA LOCL 002447 1410 TAD I DPNT /GET -(# LOCS) 002450 3037 DCA CNTR 002451 1174 XMOD2, TAD COMST /INIT COMM. BUFF. FOR MODS 002452 3015 DCA COMIR /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 14-1 002453 3045 DCA CHARSW /RESET HALF SWITCH 002454 4545 JMS I SOCTI /INITIALIZE INPUT TO OCTAL 002455 4546 JMS I BKLOCI /OUTPUT START LOC 002456 0056 BLK-1 002457 4527 JMS I TWOCI /AND ": " 002460 7240 7240 002461 4523 READLN /GET A LINE (TEST: RUBOUT, ^U & ^R) 002462 4522 TYPEM-1 /IGNORE LF'S 002463 0340 MCHARO-TYPEM 002464 5251 JMP XMOD2 /BUFFER EMPTIED! /CR TYPED, END 002465 4570 XMODCR, JMS I ENDCI /END BUFFER WITH A CR. 002466 5251 JMP XMOD2 /ONLY A CR IN BUFFER-RETRY! 002467 1277 TAD MODTMP /NOW LOOK UP FORMAT 002470 4567 JMS I SORTI 002471 5013 MODIFL-1 002472 0011 MODIFO-MODIFL 002473 4573 ERCP, ERROR /ILLEGAL (EXTRA BAD IF HERE) 002474 2210 XMODDN, ISZ XWBLK /RETURN HERE, ALL ARGS DONE? 002475 5241 JMP XMOD1 /NO 002476 5572 JMP I RESTAR /YES 002477 0000 MODTMP, 0 002500 0000 XGET, 0 /SUB. TO SET CURRENT LOC & FLAG 002501 4561 JMS I GETI /SET LOCATION 002502 4573 ERC07, ERROR /MAPPED MODE, NO SUCH ADDRESS 002503 7240 STA 002504 3050 DCA MODIF /SET FLAG 002505 5700 JMP I XGET /NUMERIC FORMATS HERE 002506 4567 XNUM0, JMS I SORTI /TEST TERMINATOR 002507 5443 GETLST-1-1 /SPACE, COMMA, CR 002510 7423 NUMOPS-GETLST+1 002511 5774' JMP ERCQ /ILLEGAL TERMIN / 002512 4563 XNUM1, JMS I GETNI /COMMA, SKIP IT 002513 4564 JMS I SSKIPI / SPACE, IGNORE IT 002514 4773' XNUM2, JMS EXPRIN /GET NEXT ARG--EXPRESSION 002515 4300 JMS XGET /SET UP LOCATION 002516 1025 TAD ACC1 002517 4555 DCAICAD / & STORE VALUE 002520 4566 JMS I INCI /INCREMENT LOCATION 002521 2037 ISZ CNTR /ALL MODS DONE? 002522 5306 JMP XNUM0 /NO, TEST TERMIN 002523 5274 JMP XMODDN /YES, TEST NEXT SET / 002524 1037 XNUM3, TAD CNTR /DONE? 002525 7650 SNA CLA 002526 5274 JMP XMODDN /YES 002527 4300 JMS XGET /NO, SET UP LOC 002530 1074 TAD FILLER /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 14-2 002531 4555 DCAICAD /AND FILL WITH 'FILLER' 002532 4566 JMS I INCI /INCREMENT LOC 002533 2037 ISZ CNTR /DONE? 002534 5324 JMP XNUM3 /NO 002535 5274 JMP XMODDN /YES /ASCII FORMAT HERE 002536 4346 JMS CGET /GET A CHAR & CHECK FOR CR 002537 4300 XASC1, JMS XGET /SET UP LOC & SET FLAG 002540 1035 TAD CHAR 002541 4555 DCAICAD /STORE THIS CHAR 002542 4566 JMS I INCI /INCREMENT LOC 002543 2037 ISZ CNTR /MODS DONE? 002544 5336 JMP XASC1-1 /NO 002545 5274 JMP XMODDN /YES 002546 0000 CGET, 0 /GET NEXT CHAR. IF CR, MODS DONE 002547 4352 JMS CGTEST /GET & TEST NEXT 002550 5324 JMP XNUM3 /CR, FILL REST WITH 'FILLER' 002551 5746 JMP I CGET 002552 0000 CGTEST, 0 /SUB. TO GET A CHAR & CHECK FOR CR 002553 4563 JMS I GETNI /GET NEXT CHARACTER 002554 1035 TAD CHAR /IS IT A CR? 002555 1105 TAD M215 002556 7640 SZA CLA 002557 2352 ISZ CGTEST /RETURN TO CALL+2 IF NOT 002560 5752 JMP I CGTEST 002561 0000 DO1SP, 0 /OUTPUT " " + AC 002562 4526 JMS I TYPECI 002563 0240 " 002564 5761 JMP I DO1SP /ANOTHER TUFFIE 002565 0000 DO2SP, 0 /OUTPUT " " + AC (PACKED ASCII) 002566 4527 JMS I TWOCI 002567 4040 4040 002570 5765 JMP I DO2SP /FAST & SWEET! 002573 5727 002574 5722 002575 6154 002576 5045 002577 3042 2600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 15 /ROUTINE TO EXECUTE THE 'SMASK' (STRING MASK) COMMAND 002600 4557 XSMASK, JMS I GARGI /GET ARGS 002601 1021 TAD TEMP 002602 3076 DCA SMASKL /SAVE -(MASK LENGTH) 002603 1176 TAD MASKBS /SET UP TO STORE WORDS 002604 3011 DCA SPNT 002605 2010 XSMAS1, ISZ DPNT /SKIP 2 WORDS 002606 2010 ISZ DPNT 002607 1410 TAD I DPNT /GET & STORE ONE 002610 6211 CDF 10 002611 3411 DCA I SPNT 002612 6201 CDF 0 002613 2010 ISZ DPNT /SKIP 1 MORE 002614 2021 ISZ TEMP /DONE ? 002615 5205 JMP XSMAS1 /NO 002616 5572 JMP I RESTAR /XS240 PACKED ASCII FORMAT HERE 002617 1377 XXS20, TAD (-237 /XS237**TAD M240 /SET OFFSET /PACKED ASCII FORMAT HERE 002620 3331 XPAC0, DCA PNAME /CLEAR OFFSET 002621 1104 XPAC1, TAD M240 /IS CHAR < 240? 002622 1035 TAD CHAR 002623 7700 SMA CLA 002624 5227 JMP XPAC2 /NO, JUST PACK CHAR 002625 7040 CMA 002626 4304 JMS PACK /YES, PACK A FLAG (77) FIRST 002627 1035 XPAC2, TAD CHAR /NOW GO PACK CHAR 002630 1331 TAD PNAME /(WITH DESIRED OFFSET) 002631 4304 JMS PACK 002632 4776' JMS CGET /NOW GET & TEST NEXT 002633 5221 JMP XPAC1 / OK, CONTINUE /OS/8 ASCII HERE 002634 1061 XOPS1, TAD LOCL /TEST START & COUNT FOR EVEN 002635 7010 RAR /(LOW BIT TO LINK & 002636 7200 CLA / CLEAR AC) 002637 1037 TAD CNTR 002640 7010 RAR /(LOW TO LINK, LINK TO AC0) 002641 7730 SZL SPA CLA /BOTH L=0 & AC0=0 FOR OK 002642 4573 ERC04, ERROR /START OR COUNT NOT EVEN 002643 1045 XOPS2, TAD CHARSW /GET SWITCH 002644 2045 ISZ CHARSW / & BUMP IT 002645 7110 CLL RAR /ROTATE AC 11 INTO LINK 002646 7670 SZL SNA CLA /CHARACTER 3? 002647 5275 JMP XOPS5 /NO, CHAR 1 OR CHAR 2 002650 7240 STA 002651 1056 TAD CAD /YES, BACK UP POINTER 002652 3056 DCA CAD 002653 7344 STA CLL RAL / & SET LOOP COUNT TO -2 002654 3045 DCA CHARSW 002655 1035 XOPS3, TAD CHAR /GET REST OF CHAR /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 15-1 002656 7106 CLL RTL /4 BITS LEFT 002657 7006 RTL 002660 3035 DCA CHAR /SAVE IT 002661 1035 TAD CHAR /NOW MERGE 4 BITS WITH 002662 0103 AND N7400 / A PREVIOUS CHAR 002663 4554 TADICAD 002664 4555 DCAICAD /4 BITS OF 3RD + 1ST OR 2ND 002665 2056 ISZ CAD /BUMP POINTER 002666 2045 ISZ CHARSW /DONE? 002667 5255 JMP XOPS3 002670 1037 TAD CNTR /YES, DONE ALL MODS? 002671 7650 SNA CLA 002672 5775' JMP XMODDN /YES, TEST FOR DONE 002673 4776' XOPS4, JMS CGET /GET & TEST NEXT CHAR 002674 5243 JMP XOPS2 /OK, DO NEXT / 002675 4774' XOPS5, JMS XGET /SET UP CURRENT LOC 002676 1035 TAD CHAR 002677 4555 DCAICAD /AND STORE CHARACTER 002700 4566 JMS I INCI /INCREMENT LOC 002701 2037 ISZ CNTR /BUMP COUNTER FOR LATER 002702 5273 JMP XOPS4 / SO IGNORE SKIP NOW 002703 5273 JMP XOPS4 002704 0000 PACK, 0 /SUB. TO PACK CHARACTERS 002705 0116 AND N77 /USE ONLY 6 BITS 002706 2045 ISZ CHARSW /CHECK HALF 002707 5316 JMP PACK1 002710 4554 TADICAD /RIGHT HALF, ADD TO LEFT 002711 4555 DCAICAD 002712 1037 TAD CNTR /ALL MODS DONE? 002713 7640 SZA CLA 002714 5704 JMP I PACK /NO 002715 5775' JMP XMODDN /YES / 002716 4543 PACK1, JMS I RTL6I /LEFT HALF, ROTATE INTO IT 002717 3045 DCA CHARSW /SAVE IT 002720 4774' JMS XGET /SET UP CURRENT LOC 002721 1045 TAD CHARSW 002722 4555 DCAICAD /STORE WORD 002723 4566 JMS I INCI /INCREMENT LOC 002724 2037 ISZ CNTR /BUMP COUNTER FOR LATER 002725 7000 NOP / SO DON'T SKIP NOW 002726 7240 STA 002727 3045 DCA CHARSW /RESET SWITCH 002730 5704 JMP I PACK 002731 0000 PNAME, 0 /PRINT A FILE NAME, PADDED W. SPACES 002732 1025 TAD NAM1 002733 4535 JMS I TWOT / OUTPUT UP TO 002734 1026 TAD NAM2 002735 4535 JMS I TWOT / 6 CHARACTERS 002736 1027 TAD NAM3 002737 4535 JMS I TWOT / OF FILE NAME, /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 15-2 002740 4526 JMS I TYPECI / A "." 002741 0256 ". 002742 1030 TAD NAM4 / & UP TO 2 CHARS 002743 4535 JMS I TWOT / OF EXTENSION. 002744 4532 PNAME1, SPACE1 /OUTPUT A " " 002745 1041 TAD NCNT /11(10) CHARS ON LINE YET? 002746 1373 TAD (-13 002747 7710 SPA CLA 002750 5344 JMP PNAME1 /NO, OUTPUT ANOTHER SPACE 002751 5731 JMP I PNAME /SUBROUTINE TO GET A NUMERIC ARGUMENT FROM THE / COMMAND BUFFER AND RETURN IT TO THE 3 WORDS / POINTED TO BY CALL+1. THE FIRST WORD (BLOCK / NUMBER) IS NOT CHANGED IF NO BLOCK PART WAS / GIVEN IN THE COMMAND. 002752 0000 LIMITS, 0 002753 1752 TAD I LIMITS /GET ADDRESS OF 3 WORDS 002754 2352 ISZ LIMITS 002755 3331 DCA PNAME / & SAVE IT 002756 4560 JMS I ARGI /GET COMMAND DATA 002757 1022 TAD TEMP1 /GET BLOCK NUMBER PART 002760 2022 ISZ TEMP1 /WAS A BLOCK PART SPEC'D? 002761 3731 DCA I PNAME / YES, STORE IT 002762 7200 CLA /(CLEAR IN CASE NOT!) 002763 2331 ISZ PNAME /BUMP POINTER 002764 1026 TAD ACC2 002765 0113 AND N7 002766 3731 DCA I PNAME /STORE HIGH 3 BITS 002767 2331 ISZ PNAME 002770 1025 TAD ACC1 002771 3731 DCA I PNAME / & LOW 12 BITS OF ADDR. 002772 5752 JMP I LIMITS 002773 7765 002774 2500 002775 2474 002776 2546 002777 7541 3000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 16 /SUBROUTINE TO 'GET' A WORD FROM THE DEVICE. / / THE ACTUAL WORD ON THE DEVICE THAT IS ACCESSED / IS DEPENDENT ON THE MODE SWITCH, AS FOLLOWS: / / MODE ACTION / / 0 = NORMAL THE HIGH 7 BITS OF THE 15 BIT ADDRESS / ARE ADDED TO THE SPECIFIED BLOCK # / TO GET THE ACTUAL BLOCK & THE LOW 8 / BITS OF THE 15 BIT ADDR ARE USED TO / SPECIFY THE WORD WITHIN THE BLOCK. / / -1 = OFFSET THE 12 BIT "OFFSET" (WHICH IS NEGATED) / IS ADDED TO THE LOW 12 BITS OF THE / ADDRESS, AND THEN THE NEW ADDRESS IS / HANDLED AS ABOVE. / THIS MODE IS USED PRIMARILY WHEN / WORKING WITH THE OPERATING SYSTEM / WITH OVERLAYS WHOSE REAL START BLOCK / AND LOCATION WITHIN A FIELD ARE KNOWN. / BY SETTING THE "OFFSET" TO THE START / ADDRESS OF THE OVERLAY, ITS REAL / ADDRESSES CAN BE USED AND THE PROPER / LOCATIONS WILL BE ACCESSED. / / +1 = SAVE THIS MODE IS USED WITH CORE IMAGE / "SAVE" FILES ONLY. THE FILE'S CCB / (CORE CONTROL BLOCK) IS USED TO / DETERMINE THE REAL LOCATION ON THE / DEVICE OF THE SPECIFIED 15 BIT ADDR- / ESS. THE START BLOCK OF THE FILE / IS USED, AND ANY SPECIFIED "BLOCK" / PART IS USED TO SPECIFY THE OVERLAY / WANTED AT THAT ADDRESS. FOR FILES / WITHOUT OVERLAYS (GENERATED BY THE / MONITOR "SAVE" COMMAND), THIS PART / MUST BE ZERO (0) OR NO MATCH WILL / OCCUR. FOR FILES WITH OVERLAYS / (GENERATED BY THE PROGRAM "LINK"), / A LEGAL OVERLAY AT THE SPECIFIED / ADDRESS MUST BE SPECIFIED FOR A / MATCH TO OCCUR. THIS MODE CAN ONLY / BE USED AFTER A "FILE" COMMAND. / / +2 = LOAD THIS MODE IS USED WITH OS/8 FORTRAN / IV LOAD MODULES. THE FILE'S HEADER / BLOCK IS USED TO DETERMINE THE REAL / LOCATION ON THE DEVICE OF THE SPECI- / FIED 15 BIT ADDRESS AND THE "BLOCK" / PART IS USED TO SPECIFY THE OVERLAY / WANTED AT THAT ADDRESS. THIS MODE CAN / ONLY BE USED AFTER A "FILE" COMMAND. /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 16-1 /CALLING SEQUENCE: / / JMS I GETI / RETURN1 /MODE=MAPPED, NO SUCH ADDRESS / NORMAL RETURN /'CAD' SET, DATA IN AC /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 17 /SUBROUTINE 'GET'--PART OF THIS PAGE & ALL OF NEXT 003000 0000 GET, 0 003001 4534 JMS I CTRLI /GO TEST FOR CONTROL-CHARS 003002 1044 TAD MODSW /OK, TEST MODE 003003 7450 SNA 003004 5210 JMP GET0 /NORMAL MODE, NO CHANGES 003005 7700 SMA CLA 003006 5777' JMP GET4 /SAVE MODE, DO MAPPING 003007 1073 TAD OFFSET /OFFSET MODE, ADD IT 003010 4263 GET0, JMS DBLPGS /NOW ADD 'DOUBLE PAGES' 003011 1057 TAD BLK / OF LOC TO BLK TO SET 003012 3054 DCA CBLK /'CURRENT BLOCK' 003013 4227 GET1, JMS GETIO /OUTPUT CURREN (IF NEEDED), GET NEXT 003014 5776' JMP RERROR / READ ERROR, GO TELL ABOUT IT 003015 1044 TAD MODSW /TEST AGAIN FOR OFFSET 003016 7710 SPA CLA 003017 1073 TAD OFFSET /YES, ADD IT AGAIN 003020 1061 TAD LOCL /USE 8 ADDRESS BITS FROM LOC 003021 0121 AND N377 003022 1241 TAD BUFST /INTO BUFFER, TO SET 003023 3056 DCA CAD /'CURRENT ADDRESS' 003024 4554 TADICAD /NOW GET THE WORD 003025 2200 ISZ GET /RETURN TO CALL+2 WITH IT 003026 5600 GETX, JMP I GET /[EXIT TO CALL+1 FOR MAP FAIL] 003027 0000 GETIO, 0 /DO I/O FOR 'GET' & 'SCANER' 003030 1054 TAD CBLK /IS THIS SAME BLOCK AS IS IN 003031 7041 CIA /CORE CURRENTLY? 003032 1257 TAD RBLK 003033 7650 SNA CLA 003034 5261 JMP GETIO2 /YES, USE IT. 003035 2050 ISZ MODIF /NO, ANY CHANGES IN THIS BLK? 003036 5244 JMP GETIO1 /NO, DEVICE OK AS IS 003037 4500 JMS I DEVAD /CALL DEVICE HANDLER 003040 4210 4210 /WRITE, 2 PAGES, FIELD 1 003041 7200 BUFST, IOBUF 003042 0000 WBLK, 0 003043 5775' JMP WERROR /WRITE ERROR 003044 1054 GETIO1, TAD CBLK /NOW UPDATE OUTPUT BLOCK 003045 3242 DCA WBLK 003046 1054 TAD CBLK / AND INPUT BLOCK # 003047 3257 DCA RBLK 003050 3050 DCA MODIF / AND RESET SWITCH 003051 1054 TAD CBLK /SHOW BLOCK NUMBER IN LIGHTS 003052 7421 MQL / (IF THERE ARE ANY!) 003053 7200 CLA 003054 4500 JMS I DEVAD /CALL DEVICE HANDLER 003055 0210 0210 /READ, 2 PAGES, FIELD 1 003056 7200 IOBUF 003057 7777 RBLK, -1 /(NOTHING IN CORE-ILLEGAL BLK #) 003060 5627 JMP I GETIO /READ ERROR 003061 2227 GETIO2, ISZ GETIO /OK, DO NORMAL RETURN /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 17-1 003062 5627 JMP I GETIO 003063 0000 DBLPGS, 0 /CONVERT LOCATION TO DOUBLE-PAGES 003064 1061 TAD LOCL 003065 0103 AND M400 /HIGH 4 BITS HERE 003066 7104 CLL RAL /BECOME LOW 4 BITS 003067 1060 TAD LOCH /FOR A 7 BIT VALUE 003070 7006 RTL 003071 7006 RTL 003072 5663 JMP I DBLPGS /GET WORD ROUTINE FOR "ODT" COMMANDS 003073 0000 ODGET, 0 003074 1070 TAD SBLK /SET UP BLOCK 003075 3057 DCA BLK 003076 1071 TAD SLOCH 003077 3060 DCA LOCH 003100 1072 TAD SLOCL 003101 3061 DCA LOCL /SET UP LOCATION 003102 4561 JMS I GETI /NOW GET WORD 003103 4573 ERC05, ERROR /MAPPED MODE, NO SUCH ADDRESS 003104 5673 JMP I ODGET / & RETURN WITH IT /OUTPUT 12 BIT BLOCK # & 15 BIT ADDRESS IN OCTAL 003105 0000 BKLOC, 0 003106 1705 TAD I BKLOC /GET ARGUMENT (ADDR-1) 003107 2305 ISZ BKLOC 003110 3014 DCA GETPNT / & SET UP A-XR 003111 1414 TAD I GETPNT /GET BLOCK PART 003112 4540 JMS I OCTI / & OUTPUT IT 003113 1414 TAD I GETPNT /GET FIELD 003114 0113 AND N7 003115 4527 JMS I TWOCI / & OUTPUT "." & IT 003116 5660 5660 / (".0") 003117 1414 TAD I GETPNT /GET ADDRESS 003120 4540 JMS I OCTI / & OUTPUT IT 003121 5705 JMP I BKLOC /SUBROUTINE TO GET A COMMAND WORD OR CHARACTER /FROM THE COMMAND BUFFER. IF THE BUFFER CONTAINS /ONLY NUMERIC ITEMS, RETURN TO CALL+1. TERMINATOR /IS SPACE OR CR 003122 0000 GWORD, 0 003123 4564 JMS I SSKIPI /GET NEXT NON-SPACE 003124 1035 TAD CHAR 003125 0116 AND N77 /USE THIS CHAR AS LEFT 003126 4543 JMS I RTL6I / 6 BITS. 003127 3045 DCA CHARSW /SAVE IT 003130 4567 JMS I SORTI /CHECK FOR ^K, ^D, (, ", ', /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 17-2 003131 5350 GWLST1-1 / DIGITS, SPACE & CR 003132 0022 GWOPS1-GWLST1 003133 4563 JMS I GETNI /NONE, IS NEXT A SPACE 003134 4567 JMS I SORTI / OR A C.R.? 003135 5367 GWLST2-1 003136 0022 GWOPS2-GWLST2 003137 1035 TAD CHAR /NONE, USE AS LOWER 6 BITS 003140 0116 AND N77 003141 1045 TAD CHARSW 003142 3045 DCA CHARSW /SAVE IT 003143 4563 GWD1, JMS I GETNI /LOOK FOR SPACE OR C.R. 003144 4567 JMS I SORTI 003145 5367 GWLST2-1 003146 0022 GWOPS2-GWLST2 003147 5343 JMP GWD1 /NEITHER, KEEP LOOKING / 003150 7240 GWD2, STA /SPACE FOUND, SET SWITCH 003151 3046 GWD3, DCA CRSWT /CR FOUND, RESET SWITCH 003152 1045 TAD CHARSW /RETURN WITH WORD 003153 2322 ISZ GWORD / TO CALL+2 003154 5722 GWD4, JMP I GWORD /EXIT TO CALL+1 IF ANY NUMERIC ITEM FOUND-- / ^K, ^D, (, ", ', DIGITS /"DIRECTORY" FORMAT OUTPUT ROUTINE 003155 0000 DIRDMP, 0 003156 4540 JMS I OCTI /OUTPUT IN OCTAL FIRST 003157 4533 SPACE2 003160 4554 TADICAD 003161 4363 JMS DIROUT / THEN 3 OTHERS 003162 5755 JMP I DIRDMP /"?" ODT OUTPUT ROUTINE 003163 0000 DIROUT, 0 003164 7041 CIA /ASSUME WAS NEGATIVE 003165 4537 JMS I DECI / & OUTPUT IN DECIMAL 003166 4533 SPACE2 003167 4554 TADICAD 003170 4542 JMS I PDATEI /OUTPUT AGAIN AS DATE 003171 4533 SPACE2 003172 4554 TADICAD 003173 4535 JMS I TWOT /OUTPUT LAST TIME AS PACKED ASCII 003174 5763 JMP I DIROUT 003175 2414 003176 2213 003177 3200 3200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 18 /CONTINUATION OF 'GET' -- MAPPING FOR "SAVE" AND "LOAD" / MODES DONE HERE. 003200 4777' GET4, JMS DBLPGS /GET # DOUBLE-PAGES 003201 3056 DCA CAD / & SAVE IT 003202 7240 STA 003203 1044 TAD MODSW /TEST FOR SAVE OR LOAD MODE 003204 7640 SZA CLA 003205 5300 JMP GETL1 / LOAD MODE 003206 6213 CDF CIF 10 003207 4776' JMS GCCB /SAVE MODE, GET CCB 003210 3361 DCA SEGCNT / & SET UP # SEGMENTS 003211 1077 TAD RBLK1 /SET UP ACTUAL FIRST BLOCK 003212 7001 IAC 003213 3054 DCA CBLK / FOR MAPPING. 003214 6211 GETS1, CDF 10 003215 1414 TAD I GETPNT /GET AN ORIGIN WORD 003216 3357 DCA GETORG 003217 1414 TAD I GETPNT / & A CONTROL WORD. 003220 6201 CDF 0 003221 3360 DCA GETCW 003222 1360 TAD GETCW /TEST FOR FIELD MATCH 003223 7112 CLL RTR 003224 7010 RAR 003225 0113 AND N7 /(MASK OFF COUNT) 003226 7041 CIA 003227 1060 TAD LOCH /SAME? 003230 7640 SZA CLA 003231 5261 JMP GETS2 /NO, TRY NEXT SEGMENT 003232 1061 TAD LOCL /YES, NOW TEST ADDRESSES 003233 0106 AND M200 /(MASK TO PAGE) 003234 7161 STL CIA 003235 1357 TAD GETORG /[ORIG PAGE]-[ADDR PAGE] 003236 7460 SZA SNL /ABOVE THE ORIGIN? 003237 5261 JMP GETS2 /NO, TRY NEXT 003240 7010 RAR /OK, DIVIDE BY 2 (WITH SIGN) 003241 3357 DCA GETORG / & SAVE IT. 003242 1360 TAD GETCW /BEYOND TOP OF SEGMENT? 003243 0107 AND M100 /(MASK OFF FIELD AND MAKE) 003244 7450 SNA 003245 7130 STL RAR / 0 => 40, THEN SUBTRACT 003246 1107 TAD M100 / ONE PAGE) 003247 1357 TAD GETORG 003250 7710 SPA CLA 003251 5261 JMP GETS2 /NO, TRY NEXT 003252 1357 TAD GETORG /YES, UPDATE CBLK TO RIGHT 003253 7041 CIA 003254 4362 JMS UPCBLK / ACTUAL BLOCK 003255 1057 TAD BLK /MUST BE IN "LVL 0" OR 003256 7640 SZA CLA 003257 5775' JMP GETX / RETURN AS BAD 003260 5774' JMP GET1 /NOW GO GET THE DATA / /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 18-1 003261 7200 GETS2, CLA 003262 1360 TAD GETCW /UPDATE CBLK 003263 0107 AND M100 003264 7450 SNA 003265 7130 STL RAR /(MAKING 0 => 40) 003266 1373 TAD (100 /(ROUND UP PAGE COUNT) 003267 4362 JMS UPCBLK 003270 2361 ISZ SEGCNT /ALL SEGMENTS DONE? 003271 5214 JMP GETS1 /NO, TRY NEXT 003272 1000 TAD OVLFLG /YES, OVERLAYS? (LINK OUTPUT) 003273 7450 SNA 003274 5775' JMP GETX / NO, RETURN TO CALL+1 003275 1372 TAD (4 / YES, RESET POINTER 003276 3014 DCA GETPNT / TO SKIP OVER LVL 0 003277 5302 JMP GETL2 / & CONTINUE / 003300 6213 GETL1, CDF CIF 10 003301 4771' JMS GHDR /GET & TEST HEADER 003302 6211 GETL2, CDF 10 003303 1414 TAD I GETPNT /GET NUMBER OF OVERLAYS 003304 3361 DCA SEGCNT 003305 1414 TAD I GETPNT /GET PAGE & FIELD 003306 3360 DCA GETCW 003307 1414 TAD I GETPNT /GET REL BLK NUMBER 003310 1077 TAD RBLK1 / + START BLOCK 003311 3054 DCA CBLK / = ABS START BLK, THIS LEVEL 003312 1414 TAD I GETPNT /GET LENGTH, THESE OVERLAYS 003313 6201 CDF 0 003314 3357 DCA GETORG 003315 1360 TAD GETCW /GET DBL-PAGE & FIELD 003316 7450 SNA 003317 5775' JMP GETX / 0 = THE END!!! 003320 0103 AND M400 /CONVERT TO DBL-PAGE # 003321 7106 CLL RTL 003322 7006 RTL 003323 1360 TAD GETCW / IN BITS 5-11 003324 7004 RAL 003325 0117 AND N177 003326 7041 CIA /-(DBL-PG # OF OVLY START) 003327 1056 TAD CAD /+(DBL-PG # OF DESIRED) 003330 7510 SPA 003331 5345 JMP GETL3 / GONE TOO FAR, MISSED IT! 003332 3360 DCA GETCW /= RELATIVE BLOCK NUMBER 003333 1360 TAD GETCW /IS THIS WITHIN THIS OVLY? 003334 7041 CIA 003335 1357 TAD GETORG 003336 7750 SPA SNA CLA 003337 5302 JMP GETL2 / NO, TRY NEXT OVERLAY 003340 1057 TAD BLK /OK, SET UP -(#LVL +1) 003341 7040 CMA 003342 3362 DCA UPCBLK /V7B 003343 1362 TAD UPCBLK /V7B-ADDR IS OK, IS THERE A 003344 1361 TAD SEGCNT / LEVEL WANTED? 003345 7710 GETL3, SPA CLA 003346 5775' JMP GETX /ILLEGAL LEVEL; TOO FAR--EXIT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 18-2 003347 1360 TAD GETCW /ALL OK! ADD RELATIVE BLK 003350 7410 SKP 003351 1357 GETL4, TAD GETORG / TO (LVLS-1)*LENGTH-V7B 003352 1054 TAD CBLK 003353 3054 DCA CBLK / TO OVERLAY START BLOCK 003354 2362 ISZ UPCBLK /[MULTIPLY BY ADDING]-V7B 003355 5351 JMP GETL4 003356 5774' JMP GET1 003357 0000 GETORG, 0 003360 0000 GETCW, 0 003361 0000 SEGCNT, 0 003362 0000 UPCBLK, 0 003363 4544 JMS I RTR6I /MOVE COUNT TO BITS 6-11 003364 7110 CLL RAR /DIVIDE FOR DOUBLE PAGES 003365 1054 TAD CBLK /UPDATE 003366 3054 DCA CBLK 003367 5762 JMP I UPCBLK 003371 2060 003372 0004 003373 0100 003374 3013 003375 3026 003376 2000 003377 3063 3400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 19 /NUMERIC OUTPUT SUBROUTINES, NO ZERO SUPPRESSION: 003400 0000 OPRT, 0 /4-DIGIT OCTAL 003401 4253 JMS NUMOUT 003402 7000 -1000 003403 7700 -100 003404 7770 -10 003405 0000 0 003406 5600 JMP I OPRT 003407 0000 OCT3, 0 /3-DIGIT OCTAL 003410 4253 JMS NUMOUT 003411 7700 -100 003412 7770 -10 003413 0000 0 003414 5607 JMP I OCT3 003415 0000 BPRT, 0 /3-DIGIT BCD 003416 4253 JMS NUMOUT 003417 7400 -400 003420 7760 -20 003421 0000 0 003422 5615 JMP I BPRT 003423 0000 SGNDP, 0 /4-DIGIT DECIMAL, SIGNED 003424 3300 DCA NUMB 003425 1300 TAD NUMB 003426 7710 SPA CLA 003427 1114 TAD N15 003430 4532 SPACE1 /OUTPUT "-" OR " " 003431 1300 TAD NUMB /NOW OUTPUT IN DECIMAL 003432 7510 SPA 003433 7041 CIA 003434 4236 JMS DPRT 003435 5623 JMP I SGNDP DECIMAL 003436 0000 DPRT, 0 /4-DIGIT DECIMAL, UNSIGNED 003437 4253 JMS NUMOUT 003440 6030 -1000 003441 7634 -100 003442 7766 -10 003443 0000 0 003444 5636 JMP I DPRT 003445 0000 DEC2, 0 /2-DIGIT DECIMAL, UNSIGNED 003446 0117 AND N177 /MASK IT FIRST 003447 4253 JMS NUMOUT 003450 7766 -10 003451 0000 0 003452 5645 JMP I DEC2 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 19-1 OCTAL 003453 0000 NUMOUT, 0 /THE REAL OUTPUT SUBROUTINE 003454 3300 DCA NUMB /SAVE THE NUMBER 003455 3301 NUMO1, DCA NUMDGT /RESET "DIGIT" TO 0 003456 7300 CLA CLL 003457 1300 TAD NUMB /GET CURRENT VALUE 003460 1653 TAD I NUMOUT /SUBTRACT DIGIT BASE 003461 7420 SNL /DID IT OVERFLOW? 003462 5266 JMP NUMO2 /NO, TOO FAR! 003463 2301 ISZ NUMDGT /YES, BUMP DIGIT 003464 3300 DCA NUMB / & UPDATE VALUE 003465 5256 JMP NUMO1+1 / 003466 7300 NUMO2, CLA CLL 003467 1301 TAD NUMDGT /OUTPUT THE "DIGIT" 003470 4531 DIGIT 003471 2253 ISZ NUMOUT /BUMP TO NEXT ARG 003472 1653 TAD I NUMOUT /DONE ENOUGH? 003473 7640 SZA CLA 003474 5255 JMP NUMO1 003475 1300 TAD NUMB /YES, SO OUTPUT THE LAST 003476 4531 DIGIT / ONE. 003477 5653 JMP I NUMOUT /AND RETURN 003500 0000 NUMB, 0 003501 0000 NUMDGT, 0 003502 0000 SSKIP, 0 /SKIP SPACES IN COMMAND BUFFER. 003503 1035 TAD CHAR 003504 1104 TAD M240 /IS THIS A SPACE? 003505 7640 SZA CLA 003506 5702 JMP I SSKIP /NO, DONE 003507 4563 JMS I GETNI /YES, GET NEXT CHAR 003510 5303 JMP SSKIP+1 / & GO TRY IT /OS/8 ASCII OUTPUT SUBROUTINE. OUTPUTS 1 CHAR / FOR EVEN WORD & 2 CHARS FOR ODD WORD. 003511 0000 OSTYPE, 0 003512 4327 JMS OSSET /DO SETUP FOR UNPACKING 003513 4777 JMS I (ASCII /OUTPUT CHARS TO "STANDARD" 003514 2045 ISZ CHARSW /UNPACK 2ND CHARACTER? 003515 5340 JMP OSUNPK / YES, & RETURN TO OSSET CALL! 003516 5711 JMP I OSTYPE /DONE, RETURN TO CALLER /OS/8 "BYTE" OUTPUT SUBROUTINE. OUTPUT ONE / 8-BIT OCTAL NUMBER FOR EVEN WORD AND TWO 8- / BIT OCTAL NUMBERS FOR ODD WORD. USED FOR / DUMPING OS/8 ".BN" FILES OR ASCII IN OCTAL. 003517 0000 BYTEO, 0 003520 4327 JMS OSSET /DO SETUP FOR UNPACKING /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 19-2 003521 4207 JMS OCT3 /3 DIGIT OCTAL OUTPUT 003522 2045 ISZ CHARSW /UNPACK 2ND "CHAR"? 003523 7410 SKP 003524 5717 JMP I BYTEO / DONE, RETURN 003525 4533 SPACE2 /YES, BUT OUTPUT 2 SPACES 003526 5340 JMP OSUNPK / BEFORE DOING UNPACKING /OS/8 FORMAT UNPACKING ROUTINES FOR 'OSTYPE' AND / 'BYTEO'. THE SUBROUTINE SETS UP THE COUNTER / FOR NUMBER OF OUTPUTS TO DO, SAVING & RESTORING / THE AC. THE ROUTINE WILL BE CALLED ONLY IF 2 / OUTPUTS BEING DONE AND DOES THE UNPACK OF THE / 2ND "CHARACTER", RETURNING TO THE CALLER OF THE / SUBROUTINE! 003527 0000 OSSET, 0 /ENTER HERE TO INITIALIZE 003530 3357 DCA INC /SAVE AC 003531 7001 IAC 003532 0061 AND LOCL /AC = 0 OR 1 003533 7040 CMA /AC = -1 OR -2 (-# TO DO) 003534 3045 DCA CHARSW /SET UP UNPACK COUNT 003535 1357 OSRETN, TAD INC /GET VALUE TO AC 003536 0121 AND N377 /MASK TO 8 BITS 003537 5727 JMP I OSSET / 003540 7240 OSUNPK, STA /JUMP HERE IF 2ND CHAR TO GET 003541 1056 TAD CAD 003542 3223 DCA SGNDP /POINT TO HIGH WORD 003543 6211 CDF 10 003544 1456 TAD I CAD /GET LOW BITS OF "CHAR" 003545 0103 AND N7400 / MASK TO 4 BITS AND 003546 4544 JMS I RTR6I / MOVE TO BITS 8-11 003547 7012 RTR 003550 3357 DCA INC /SAVING IT HERE FOR LATER! 003551 1623 TAD I SGNDP /NOW GET HIGH BITS OF "CHAR" 003552 0103 AND N7400 / MASK TO 4 BITS AND 003553 6201 CDF 0 003554 7112 CLL RTR / MOVE TO BITS 4-7 003555 7012 RTR 003556 5335 JMP OSRETN /GET OTHER BITS & RETURN! /SUBROUTINE TO INCREMENT THE "CURRENT LOCATION" 003557 0000 INC, 0 003560 2061 ISZ LOCL /INCREMENT LOW 12 ADDR BITS 003561 5757 JMP I INC /OK AS IS 003562 7100 CLL 003563 1060 TAD LOCH /LOW OVERFLOW, INCR. HIGH 003564 1376 TAD (7771 / 3 ADDRESS BITS (& TEST) 003565 0113 AND N7 003566 3060 DCA LOCH 003567 7430 SZL /DID HIGH OVERFLOW ALSO? 003570 1120 TAD N200 / YES, THEN BUMP BLK ALSO /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 19-3 003571 1057 TAD BLK 003572 3057 DCA BLK 003573 5757 JMP I INC 003576 7771 003577 2163 3600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 20 /OUTPUT PACKED STRING, ADDRESS IN CALL+1, / TERMINATOR IS XX00. 003600 0000 TYPES, 0 003601 1600 TAD I TYPES 003602 2200 ISZ TYPES 003603 4205 JMS TYPSTR 003604 5600 JMP I TYPES /OUTPUT PACKED STRING, ADDRESS IN AC, TERMIN IS XX00 003605 0000 TYPSTR, 0 003606 3341 DCA GETNT 003607 6211 TTAGN, CDF 10 003610 1741 TAD I GETNT 003611 6201 CDF 0 003612 2341 ISZ GETNT 003613 4221 JMS PACOUT 003614 1276 TAD GNAME 003615 0116 AND N77 003616 7650 SNA CLA 003617 5605 JMP I TYPSTR 003620 5207 JMP TTAGN /PACKED ASCII OUTPUT ROUTINE 003621 0000 PACOUT, 0 003622 3276 DCA GNAME 003623 1276 TAD GNAME /USE LEFT 6 BITS 003624 4544 JMS I RTR6I 003625 4231 JMS ONECHR 003626 1276 TAD GNAME /USE RIGHT 6 BITS 003627 4231 JMS ONECHR 003630 5621 JMP I PACOUT /OUTPUT TRIMMED OR UNTRIMMED ASCII IN THE AC 003631 0000 ONECHR, 0 /NO CODE FOR CR/LF 003632 0116 AND N77 003633 7450 SNA 003634 5631 JMP I ONECHR /IGNORE "@" 003635 1377 TAD (-40 003636 7500 SMA 003637 1107 TAD M100 003640 4526 JMS I TYPECI 003641 0340 340 003642 5631 JMP I ONECHR /SUBROUTINE TO MATCH CHAR AGAINST LIST1 AND JUMP /THROUGH LIST2 WHEN MATCH FOUND. BOTH LISTS IN /FIELD 1. 003643 0000 SORTJ, 0 003644 7450 SNA 003645 1035 TAD CHAR /USE CHAR IF AC = 0 003646 3275 DCA SORTEM /ITEM TO LOOK UP /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 20-1 003647 1643 TAD I SORTJ 003650 2243 ISZ SORTJ /GET LIST1 ADDRESS 003651 3012 DCA SCANX1 003652 6211 SORT1, CDF 10 003653 1412 TAD I SCANX1 /COMPARE WITH SORTEM 003654 6201 CDF 0 003655 7450 SNA /0 ? 003656 5273 JMP SORT2 /END OF LIST 003657 7161 CIA STL 003660 1275 TAD SORTEM 003661 7640 SZA CLA /DOES IT MATCH? 003662 5252 JMP SORT1 /NO, TRY NEXT 003663 1012 TAD SCANX1 /YES, GET ADDRESS... 003664 1643 TAD I SORTJ 003665 3243 DCA SORTJ /...OF JUMP ADDRESS 003666 6211 CDF 10 003667 1643 TAD I SORTJ 003670 3243 DCA SORTJ 003671 6201 CDF 0 003672 5643 JMP I SORTJ /GO TO ROUTINE 003673 2243 SORT2, ISZ SORTJ /MATCH NOT FOUND, 003674 5643 JMP I SORTJ /EXIT TO CALL+3 003675 0000 SORTEM, 0 /SUBROUTINE TO GET A NAME FOR 'XOPEN', 'XFILE', 'XDEV' & 'XDDEV' 003676 0000 GNAME, 0 /GET A FILE OR DEVICE NAME 003677 3022 DCA TEMP1 /SET UP "." SWITCH AND 003700 1022 TAD TEMP1 / FILE/DEVICE SWITCH 003701 3023 DCA TEMP2 003702 3025 DCA NAM1 003703 3026 DCA NAM2 /CLEAR NAME AREA 003704 3027 DCA NAM3 003705 1376 TAD (2326 / & INIT EXTENSION TO "SV" 003706 3030 DCA NAM4 003707 1375 TAD (NAM1 / & INIT POINTER FOR NAME 003710 3021 DCA TEMP 003711 4564 JMS I SSKIPI /SKIP LEADING SPACES 003712 7240 STA 003713 1016 TAD COMOUT /BACK UP THE POINTER 003714 3016 DCA COMOUT 003715 4351 JMS GPAIR /1ST & 2ND CHAR 003716 4351 JMS GPAIR /3RD & 4TH 003717 4351 GETSCN, JMS GPAIR /5TH & 6TH OR 1ST & 2ND EXT. 003720 4341 JMS GETNT /SCAN FOR TERMINATOR 003721 7200 CLA 003722 5320 JMP .-2 / 003723 1023 GETCOL, TAD TEMP2 /":" SEEN, DEVICE OR FILE NAME? 003724 7640 SZA CLA 003725 5346 JMP GETNTC / FILE, JUST USE THE ":" 003726 2023 ISZ TEMP2 / DEVICE, FLAG ":" SEEN 003727 5320 JMP GETSCN+1 / AND SCAN TO TERMIN. / /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 20-2 003730 2022 GETPER, ISZ TEMP1 /"." FOUND, FIRST ONE? 003731 4573 ERCM, ERROR /NO, THE END... 003732 3030 DCA NAM4 /YES, RESET EXT, 003733 1374 TAD (NAM4 / SET POINTER 003734 3021 DCA TEMP 003735 5317 JMP GETSCN / & GO GET IT / 003736 7240 GETEND, STA /TERM = SPACE, SET SWITCH 003737 3046 DCA CRSWT /TERM = CR, RESET SWITCH 003740 5676 JMP I GNAME /..DONE.... 003741 0000 GETNT, 0 /GET & TEST A CHAR 003742 4563 JMS I GETNI /GET NEXT CHAR 003743 4567 JMS I SORTI /TEST IT 003744 5444 GETLST-1 003745 0005 GETOPS-GETLST 003746 1035 GETNTC, TAD CHAR /OK, USE CHAR 003747 0116 AND N77 /MASK TO 6 BITS 003750 5741 JMP I GETNT / & EXIT WITH IT 003751 0000 GPAIR, 0 /GET RIGHT/LEFT-HALF-CHARS 003752 4341 JMS GETNT 003753 4543 JMS I RTL6I /TO LEFT HALF 003754 3421 DCA I TEMP / & STORE IT 003755 4341 JMS GETNT 003756 1421 TAD I TEMP /MERGE WITH LAST LEFT 003757 3421 DCA I TEMP 003760 2021 ISZ TEMP /BUMP POINTER 003761 5751 JMP I GPAIR 003762 0000 RTL6, 0 /ROTATE AC 6 LEFT 003763 7106 CLL RTL 003764 7006 RTL 003765 7006 RTL 003766 5762 JMP I RTL6 003767 0000 RTR6, 0 /ROTATE AC 6 RIGHT 003770 7112 CLL RTR 003771 7012 RTR 003772 7012 RTR 003773 5767 JMP I RTR6 003774 0030 003775 0025 003776 2326 003777 7740 4000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 21 /SUBROUTINE TO READ A "LINE" FROM THE USER. IT CHECKS FOR / RUBOUT, ^U AND ^R FIRST, THEN CHECKS FOR ONE OF A LIST OF / TERMINATORS PASSED BY THE CALLER. AS WITH OS/8, RUBOUT / DELETES CHARACTES AND ^U DELETES THE CURRENT LINE. ^R / (FOR RETYPE) ECHOES THE CURRENT COMMAND BUFFER IN THE SAME / MANNER AS LINE-FEED DOES FOR OS/8. IF THE CHARACTER IS A / TERMINATOR, CONTROL PASSES DIRECTLY TO THE CORRESPONDING / CALLER ROUTINE (OUT OF THIS ROUTINE). INPUT CHARACTERS / ARE ALSO TRANSLATED FROM LOWER CASE TO UPPER CASE. EXIT / IN THE NORMAL MANNER OCCURS ONLY ON BUFFER EMPTY FROM / RUBOUT OR ^U. 004000 0000 READ, 0 /READ AND ECHO INPUT CHARACTER 004001 1600 TAD I READ /GET TWO LIST ADDRESS PARAMETERS 004002 2200 ISZ READ 004003 3220 DCA RETERM / FROM CALLER AND SET UP IN 004004 1600 TAD I READ / SORT ROUTINE CALL 004005 2200 ISZ READ 004006 3221 DCA RETERM+1 004007 4312 RENEXT, JMS RKEY /GET A CHAR 004010 5231 JMP RUBO /RUBOUT, GO BEGIN DELETIONS 004011 3035 REKEY, DCA CHAR 004012 4567 JMS I SORTI /CHECK FOR CTRL-R & CTRL-U 004013 5523 REACTL-1 004014 0003 REACTS-REACTL 004015 1035 TAD CHAR 004016 4536 JMS I TYPEI 004017 4567 JMS I SORTI /CHECK FOR CALLER TERMINATORS 004020 0000 RETERM, 0 / PARAMETERS HERE 004021 0000 0 004022 1035 TAD CHAR /NONE, JUST STORE IN BUFFER 004023 7410 SKP 004024 1377 RESPC, TAD (" /FOR CAMMAND INPUT, TAB -> SPACE! 004025 6211 CDF 10 004026 3415 DCA I COMIR /COMMAND (LINE) INPUT BUFFER 004027 6201 CDF 0 004030 5207 JMP RENEXT / /+++ FOR SCOPE OPERATION, RUBOUTS CAUSE OUTPUT OF THE /+++ SEQUENCE BACKSPACE, SPACE, BACKSPACE TO CLEAR THE /+++ PREVIOUS CHARACTER FROM THE SCREEN. IF "SCOPE /+++ MODE" IS SET, RUBO IS OVERLAID ON STARTUP. /*** FOR BATCH OPERATION, RUBOUTS ARE IGNORED BY 'RKEY' /*** AND 'RUBO' IS OVERLAID WITH CODE TO IGNORE A LINE- /*** FEED THAT FOLLOWS A CARRIAGE-RETURN. / 004031 4303 RUBO, JMS BTEST /RUBOUT TYPED,TEST FOR EMPTY 004032 5261 JMP RUBOF / INPUT BUFFER EMPTY! 004033 4526 JMS I TYPECI /OK, OUTPUT 1ST "\" 004034 0334 "\ 004035 4303 RUBO1, JMS BTEST /NOW EMPTY? 004036 5257 JMP RUBOE / YES, LINE END /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 21-1 004037 1015 TAD COMIR /ECHO LAST CHAR IN BUFFER 004040 3341 DCA ENDC 004041 6211 CDF 10 004042 1741 TAD I ENDC 004043 6201 CDF 0 004044 4536 JMS I TYPEI 004045 7240 STA 004046 1015 TAD COMIR /NOW BACK UP POINTER 004047 3015 DCA COMIR 004050 4312 JMS RKEY /GET A CHAR 004051 5235 JMP RUBO1 /ANOTHER RUBOUT, GO HANDLE 004052 3303 DCA BTEST /SAVE THE CHAR 004053 4526 JMS I TYPECI / DO CLOSING "\" 004054 0334 "\ 004055 1303 TAD BTEST 004056 5211 JMP REKEY /& GO USE NEW CHAR / 004057 4526 RUBOE, JMS I TYPECI /BUFFER WAS EMPTIED, 004060 0334 "\ /OUTPUT CLOSING "\" 004061 4530 RUBOF, JMS I CRLFI / & A CR/LF 004062 5600 JMP I READ / 004063 4526 RECHO, JMS I TYPECI /ECHO "^R" & THEN 004064 0222 "R-100 004065 4530 JMS I CRLFI /ECHO CURRENT LINE 004066 1174 TAD COMST /INIT AUTO-XR 004067 3016 DCA COMOUT 004070 1016 RECHO1, TAD COMOUT /DONE? 004071 7041 CIA 004072 1015 TAD COMIR 004073 7650 SNA CLA 004074 5207 JMP RENEXT /YES, MORE INPUT 004075 4563 JMS I GETNI /NO, GET NEXT CHAR 004076 4536 JMS I TYPEI / & OUTPUT IT 004077 5270 JMP RECHO1 / & CONTINUE / 004100 4526 RERASE, JMS I TYPECI /OUTPUT "^U" 004101 0225 "U-100 004102 5261 JMP RUBOF /GO OUTPUT CR/LF & EXIT 004103 0000 BTEST, 0 /TEST FOR COMM. BUFFER EMPTY 004104 1015 TAD COMIR 004105 7041 CIA 004106 1174 TAD COMST 004107 7640 SZA CLA /EMPTY? 004110 2303 ISZ BTEST /NO, STILL OK, TO CALL+2 004111 5703 JMP I BTEST / OTHERWISE TO CALL+1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 22 004112 0000 RKEY, 0 /GET A NON-NULL CHAR, TEST & TRANSLATE 004113 6031 KSF /*** JMS I CTRLI /CHECK KEYBOARD 004114 5313 JMP .-1 /*** CIF BAT /BATCH OPER. 004115 4534 JMS I CTRLI /*** JMS I BATINI 004116 6031 KSF /*** ERROR /EOF!! 004117 5313 JMP RKEY+1 /*** NOP /MUST USE SPECIAL CARE 004120 6036 KRB /*** NOP / TO HANDLE CTRL-Q! 004121 0117 AND N177 /MASK OFF PARITY 004122 7450 SNA 004123 5313 JMP RKEY+1 /NULL CHAR 004124 1376 TAD (-177 /IS IT A RUBOUT? 004125 7450 SNA 004126 5712 RKEY0, JMP I RKEY /YES, EXIT TO CALL+1 /*** BATCH 004127 2312 ISZ RKEY /NO, EXIT TO CALL+2 /*** OPER. 004130 1375 TAD (2 /TEST FOR ALT-MODES 004131 7500 SMA 004132 5337 JMP RKEY1 / 375 OR 376 004133 1374 TAD (35 /IS IT LOWER CASE? 004134 7500 SMA 004135 1373 TAD (-40 /YES, MAKE UPPER CASE 004136 1372 TAD (-35 004137 1371 RKEY1, TAD (375 /RESTORE CHAR & ADD PARITY 004140 5712 JMP I RKEY / & EXIT WITH IT /SUBROUTINE TO TERMINATE COMMAND BUFFER WITH A C.R. /RETURN TO CALL+1 IF ONLY A CR (EXCLUDING LEADING /SPACES) IN BUFFER, TO CALL+2 IF ANYTHING ELSE. 004141 0000 ENDC, 0 004142 1370 TAD (215 /PUT A CR IN BUFFER 004143 6211 CDF 10 004144 3415 DCA I COMIR 004145 6201 CDF 0 004146 1174 TAD COMST /INIT'L BUFFER UNLOAD 004147 3016 DCA COMOUT 004150 1035 TAD CHAR /SAVE CHAR FOR POSSIBLE 004151 3021 DCA TEMP / USE BY 'WCHEK' 004152 4563 JMS I GETNI /GET FIRST CHARACTER 004153 4564 JMS I SSKIPI /SKIP LEADING SPACES 004154 1035 TAD CHAR /GET 1ST NON-SPACE 004155 1105 TAD M215 /IS IT A CR? 004156 7640 SZA CLA /YES, NOTHING IN BUFFER 004157 2341 ISZ ENDC /OTHERWISE RETURN TO CALL+2 004160 5741 JMP I ENDC 004161 0000 DODIG, 0 /OUTPUT AC AS AN ASCII DIGIT 004162 4526 JMS I TYPECI 004163 0260 "0 004164 5761 JMP I DODIG 004170 0215 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 22-1 004171 0375 004172 7743 004173 7740 004174 0035 004175 0002 004176 7601 004177 0240 4200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 23 /'FPP'/OCTAL/'PDP' OUTPUT ROUTINE FOR ODT 004200 0000 ODTOUT, 0 004201 1017 TAD TYPSW /-1, 0, +1 004202 1377 TAD (TAD ODTOL /GENERATE ADDRESS OF DESIRED 004203 3204 DCA ODTOPT / OUTPUT ROUTINE 004204 7402 ODTOPT, HLT /[USED TWICE!] 004205 3204 DCA ODTOPT 004206 4562 JMS I ODGETI /GET SPECIFIED WORD 004207 4604 JMS I ODTOPT / & OUTPUT IT 004210 5600 JMP I ODTOUT 004211 4400 FPPDMP /-1 = OCTAL + FPP 004212 3400 ODTOL, OPRT / 0 = OCTAL 004213 4214 PDPDMP /+1 = OCTAL + PDP /OCTAL & 'PDP' (SYMBOLIC) DUMP ROUTINE 004214 0000 PDPDMP, 0 004215 4540 JMS I OCTI /FIRST OUTPUT IN OCTAL 004216 4533 SPACE2 /FOLLOWED BY 2 SPACES, 004217 4221 JMS PDPOUT / & THEN AS 'PDP' 004220 5614 JMP I PDPDMP /'PDP' (SYMBOLIC) INSTRUCTION DECODING 004221 0000 PDPOUT, 0 004222 7200 CLA 004223 4776' JMS OPRTST /TEST FOR OPR & IOT 004224 5262 JMP OPRS / OPR 004225 4775' JMS IOPRNT / IOT 004226 4774' SYMS, JMS GETOP /GET OP-CODE TO BITS 9-11 004227 7004 RAL / * 2 004230 4773' JMS SYMTYP /OUTPUT 3 CHAR SYMBOL & SPACE 004231 2600 INSLST /(TABLE FOR INDEXING) 004232 7776 -2 /(- # WORDS) 004233 4776' JMS OPRTST /TEST FOR OPR & IOT 004234 5256 JMP SYMEND / OPR, DONE 004235 5257 JMP IOTS / IOT 004236 4554 TADICAD /MEMORY REF., INDIRECT? 004237 0372 AND (400 004240 7650 SNA CLA 004241 5244 JMP REFS1 /NO 004242 4527 JMS I TWOCI /YES, OUTPUT "I " 004243 1140 1140 004244 4554 REFS1, TADICAD /SET UP ADDR BITS 004245 0117 AND N177 004246 3771' DCA BITVAL /SAVE THEM 004247 4554 TADICAD /IS THIS A 'PAGE 0 REF'? 004250 0120 AND N200 004251 7640 SZA CLA 004252 1061 TAD LOCL /NO, USE PAGE BITS 004253 0106 AND M200 004254 1771' TAD BITVAL /OK, NOW ADD ADDR BITS /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 23-1 004255 4540 REFS2, JMS I OCTI /OUTPUT IN OCTAL 004256 5621 SYMEND, JMP I PDPOUT /DONE, RETURN / 004257 4554 IOTS, TADICAD /USE ONLY LAST 9 BITS 004260 0370 AND (777 004261 5255 JMP REFS2 /AND OUTPUT IN OCTAL / 004262 4554 OPRS, TADICAD /IS THIS A NOP? 004263 0370 AND (777 004264 7450 SNA 004265 5226 JMP SYMS /YES, OUTPUT "NOP " 004266 0120 AND N200 /IS THERE A CLA IN IT? 004267 7650 SNA CLA 004270 5275 JMP OPRS1 /NO, CONTINUE 004271 4773' JMS SYMTYP /YES, OUTPUT "CLA " 004272 2726 CLANAM 004273 7776 -2 004274 7001 IAC 004275 3036 OPRS1, DCA CNT /SET ANYTHING OUTPUT SWITCH 004276 4554 TADICAD /SET UP WORD FOR DECODE 004277 4543 JMS I RTL6I 004300 7010 RAR 004301 3771' DCA BITVAL /SAVE IT 004302 4554 TADICAD /CHECK FOR OPR1, OPR2 OR EAE 004303 7110 CLL RAR 004304 0120 AND N200 004305 7450 SNA 004306 5333 JMP OPR1A /OPR1 MICRO-INSTRUCTION 004307 7620 SNL CLA 004310 5767' JMP OPR2A /OPR2 MICRO-INSTRUCTION / /DO THE DOCODING FOR THE EAE MICRO-INSTRUCTIONS 004311 1366 EAE, TAD (EAELST-2 /SET UP EAE LIST POINTER 004312 3765' DCA BITPNT 004313 4764' JMS BITS /SHIFT & CHECK BIT 5 004314 4763' JMS OPRTYP /IF = 1, "MQA " 004315 1771' TAD BITVAL /CHECK BIT 6 004316 7104 CLL RAL /("SCA" IN "A" MODE OF 8/E 004317 3771' DCA BITVAL / 'MODE BIT' IN "B" MODE) 004320 7430 SZL 004321 1115 TAD N20 /IF ON, USE OTHER WORDS 004322 3332 DCA EAETMP 004323 4764' JMS BITS /CHECK BIT 7 004324 4763' JMS OPRTYP / "MQL " 004325 4554 TADICAD 004326 0362 AND (16 004327 1332 TAD EAETMP /(ADD SWITCH WORD) 004330 4761' JMS SYMLIM /CHECK FOR & OUTPUT LAST INST. 004331 7742 -36 /UPPER LIMIT 004332 0000 EAETMP, 0 / /DO THE DECODING FOR THE OPR1 MICRO-INSTRUCTIONS 004333 1360 OPR1A, TAD (OP1LST-2 /SET OPR1 LIST 004334 3765' DCA BITPNT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 23-2 004335 4764' JMS BITS /SHIFT & CHECK BIT 5 004336 4763' JMS OPRTYP /IF = 1, OUTPUT "CLL " 004337 4764' JMS BITS /CHECK BIT 6 004340 4763' JMS OPRTYP / "CMA " 004341 4764' JMS BITS /CHECK BIT 7 004342 4763' JMS OPRTYP / "CML " 004343 2765' ISZ BITPNT /BUMP POINTER 004344 2765' ISZ BITPNT 004345 4554 TADICAD /LOOK FOR IAC 004346 7010 RAR 004347 7630 SZL CLA 004350 4763' JMS OPRTYP /OUTPUT "IAC " 004351 4554 TADICAD /SET UP TO CHECK FOR ROTATES 004352 0362 AND (16 004353 4761' JMS SYMLIM /CHECK & OUTPUT 004354 7766 -12 /UPPER LIMIT 004360 2616 004361 4433 004362 0016 004363 4467 004364 4456 004365 4471 004366 2662 004367 4405 004370 0777 004371 4522 004372 0400 004373 4475 004374 6243 004375 4523 004376 4547 004377 1212 4400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 24 /OCTAL & 'FPP' (SYMBOLIC) DUMP ROUTINE 004400 0000 FPPDMP, 0 004401 4540 JMS I OCTI /FIRST OUTPUT IN OCTAL 004402 4533 SPACE2 / THEN 2 SPACES 004403 4777' JMS FPPOUT / & THEN AS FPP 004404 5600 JMP I FPPDMP /THE FOLLOWING ROUTINES ARE USED BY 'PDPOUT' /DO THE DECODING FOR THE OPR2 MICROINSTRUCTIONS 004405 1376 OPR2A, TAD (OP2LST-2 /SET UP LIST POINTER 004406 3271 DCA BITPNT 004407 4256 JMS BITS /SHIFT & CHECK BIT 5 004410 4315 JMS OPR2T /IF 1, OUTPUT "SMA " OR "SPA " 004411 4256 JMS BITS /CHECK BIT 6 004412 4315 JMS OPR2T / "SZA " OR "SNA " 004413 4256 JMS BITS /CHECK BIT 7 004414 4315 JMS OPR2T / "SNL " OR "SZL " 004415 4256 JMS BITS /CHECK BIT 8 004416 7410 SKP 004417 5224 JMP OPR2B /IT WAS 0 004420 4554 TADICAD /MUST CHECK FOR "SKP " 004421 0375 AND (160 004422 7650 SNA CLA /ARE ALL SKIP SENSES = 0? 004423 4267 JMS OPRTYP /YES, SO OUTPUT "SKP " 004424 1374 OPR2B, TAD (OP2LST+14 /SET UP CHECK FOR OSR & HLT 004425 3271 DCA BITPNT 004426 4256 JMS BITS /CHECK BIT 9 004427 4267 JMS OPRTYP / "OSR " 004430 4256 JMS BITS /CHECK BIT 10 004431 4267 JMS OPRTYP / "HLT " 004432 5246 JMP OPEND /CHECK FOR ANY DONE 004433 0000 SYMLIM, 0 /CHECK LAST SYMBOL AGAINST LIMIT 004434 3035 DCA CHAR /SAVE AC 004435 1035 TAD CHAR 004436 7550 SPA SNA /IS IT > 0? 004437 5246 JMP OPEND /NO, TEST IF ANY OUTPUT DONE 004440 1633 TAD I SYMLIM /IT IS > UPPER LIMIT? 004441 7740 SMA SZA CLA 004442 5246 JMP OPEND /NO, GO CHECK AGAIN 004443 1035 TAD CHAR /CALCULATE ADDRESS 004444 4267 JMS OPRTYP / & OUTPUT LAST 004445 5773' JMP SYMEND /...DONE / 004446 7200 OPEND, CLA 004447 1036 TAD CNT /ANYTHING OUTPUT? 004450 7640 SZA CLA 004451 5773' JMP SYMEND /YES, DONE WITH OUTPUT 004452 4275 JMS SYMTYP /NO, OUTPUT "OPR " 004453 2730 OPRMES 004454 7776 -2 004455 5772' JMP IOTS /NOW GO OUTPUT LAST 9 BITS /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 24-1 004456 0000 BITS, 0 /DECODE A WORD ONE BIT AT A TIME 004457 1322 TAD BITVAL /SHIFT A BIT INTO LINK 004460 7104 CLL RAL 004461 3322 DCA BITVAL /SAVE FOR LATER 004462 2271 ISZ BITPNT /BUMP SYMBOL POINTER 004463 2271 ISZ BITPNT 004464 7420 SNL 004465 2256 ISZ BITS /TO CALL+2 IF L = 0 004466 5656 JMP I BITS 004467 0000 OPRTYP, 0 /OUTPUT AN OPR SYMBOL 004470 4275 JMS SYMTYP /OUTPUT THE SYMBOL 004471 0000 BITPNT, 0 /ADDRESS 004472 7776 -2 004473 2036 ISZ CNT /SET SWITCH 004474 5667 JMP I OPRTYP 004475 0000 SYMTYP, 0 /OUTPUT A SYMBOL 004476 1675 TAD I SYMTYP /ADD TABLE ADDR TO ANY INDEX 004477 2275 ISZ SYMTYP 004500 3314 DCA SYMPNT /SAVE POINTER 004501 1675 TAD I SYMTYP /GET COUNT OF WORDS 004502 2275 ISZ SYMTYP 004503 3256 DCA BITS / & SAVE IT 004504 6211 SYMNXT, CDF 10 /"SYMBOL"S IN FIELD 1 004505 1714 TAD I SYMPNT 004506 6201 CDF 0 004507 4535 JMS I TWOT /OUTPUT A PAIR OF LETTERS 004510 2314 ISZ SYMPNT 004511 2256 ISZ BITS /DONE? 004512 5304 JMP SYMNXT 004513 5675 JMP I SYMTYP 004514 0000 SYMPNT, 0 004515 0000 OPR2T, 0 /OUTPUT AN OPR2 SYMBOL 004516 4554 TADICAD 004517 0371 AND (10 /IF BIT IS ON, REVERSE THE 004520 4267 JMS OPRTYP /SENSE OF THE SKIP 004521 5715 JMP I OPR2T 004522 0000 BITVAL, 0 004523 0000 IOPRNT, 0 /OUTPUT I/O NAMES 004524 1370 TAD (IOTTAB /SET UP POINTER 004525 3344 IOPRN1, DCA IOPNT /SET (OR UPDATE) POINTER 004526 6211 CDF 10 004527 1744 TAD I IOPNT /GET NEXT IOT 004530 6201 CDF 0 004531 7450 SNA /AT END OF TABLE? 004532 5723 JMP I IOPRNT /YES, CODE NOT FOUND 004533 7041 CIA 004534 4554 TADICAD /NO, DO THEY MATCH? 004535 7650 SNA CLA /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 24-2 004536 5342 JMP IOPRN2 /YES, OUTPUT NAME 004537 1367 TAD (4 /NO, UPDATE POINTER 004540 1344 TAD IOPNT 004541 5325 JMP IOPRN1 / & TRY AGAIN / 004542 7001 IOPRN2, IAC /WORD FOLLOWS CODE 004543 4275 JMS SYMTYP /OUTPUT THE MNEMONIC 004544 0000 IOPNT, 0 004545 7775 -3 004546 5773' JMP SYMEND / & RETURN 004547 0000 OPRTST, 0 /TEST "INSTRUCTION" FOR OPR & IOT 004550 4554 TADICAD /GET WORD 004551 0122 AND N7000 /MASK OFF OP CODE 004552 1366 TAD (1000 /IS IT AN OPR? 004553 7450 SNA 004554 5747 JMP I OPRTST /YES, EXIT TO CALL+1 004555 2347 ISZ OPRTST 004556 1366 TAD (1000 /IS IT AN IOT? 004557 7640 SZA CLA 004560 2347 ISZ OPRTST /NO, EXIT TO CALL+3 004561 5747 JMP I OPRTST / YES, TO CALL+2 004566 1000 004567 0004 004570 2732 004571 0010 004572 4257 004573 4256 004574 2656 004575 0160 004576 2640 004577 4600 4600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 25 /'FPP' (SYMBOLIC) INSTRUCTION DECODING 004600 0000 FPPOUT, 0 004601 7200 CLA /HARD TO TELL WHAT MIGHT COME! 004602 4554 TADICAD /GET THE WORD 004603 0377 AND (600 /MASK OFF MODE BITS 004604 7450 SNA 004605 5254 JMP SPECIAL / NON-ARITHMETIC 004606 1103 TAD M400 /GIVES: -=BASE, 0=LONG, +=INDIR. 004607 3023 DCA TEMP2 004610 4776' JMS GETOP /GET OP-CODE TO BITS 9-11 004611 4775' FPLEA, JMS MULT3 /MULTIPLY BY 3 (WORDS/OP OUT) 004612 4774' JMS SYMTYP /OUTPUT 6 CHAR OPR SYMBOL 004613 3757 FPPINS /(INCLUDING "LEA") 004614 7775 -3 004615 1023 TAD TEMP2 /NOW HANDLE MODE 004616 7450 SNA 004617 5240 JMP LONG / LONG INDEXED 004620 7700 SMA CLA 004621 5231 JMP INDIR / INDIRECT INDEXED 004622 4525 BASE, JMS I TYPSI / BASE - OUTPUT " B+" 004623 3743 MSBASE 004624 4554 TADICAD /GET WORD AGAIN 004625 0117 AND N177 / MASK OFF OFFSET 004626 4775' JMS MULT3 / MULTIPLY IT BY 3 004627 4773' JMS OCT3 / & OUTPUT IN OCTAL 004630 5600 JMP I FPPOUT / 004631 4525 INDIR, JMS I TYPSI /OUTPUT "% B+" 004632 3746 MSINDI 004633 4554 TADICAD /GET WORD AGAIN 004634 0113 AND N7 / MASK OFF OFFSET 004635 4775' JMS MULT3 / MULTIPLY IT BY 3 004636 4773' JMS OCT3 / & OUTPUT IT IN OCTAL 004637 5243 JMP XRPLUS /FINALLY DO XR OUTPUT / 004640 4527 LONG, JMS I TWOCI /OUTPUT "# " 004641 4340 4340 004642 4772' JMS FLDOUT /AND FIELD AND "*" 004643 4771' XRPLUS, JMS GET678 /GET XR FIELD 004644 4527 JMS I TWOCI / & OUTPUT ",X" WHERE 004645 5460 5460 / "X" IS A DIGIT 004646 4554 TADICAD /GET WORD THE LAST TIME 004647 0370 AND (100 / AND CHECK "+" BIT 004650 7640 SZA CLA 004651 4526 JMS I TYPECI /OUTPUT "+" OR SKIP 004652 0253 "+ /[A NOP] 004653 5600 JMP I FPPOUT / 004654 4776' SPECIAL,JMS GETOP /GET OP-CODE 004655 4567 JMS I SORTI / & BRANCH ON IT 004656 4121 FPPMO0-1 004657 0010 FPPMOJ-FPPMO0 004660 4554 SPCOP0, TADICAD /FALLS THRU ON 0, GET /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 25-1 004661 0367 AND (170 / SUB-OP-CODE 004662 4567 JMS I SORTI / & BRANCH ON IT 004663 4140 FPPOP0-1 004664 0020 FPPOPJ-FPPOP0 004665 4554 SPOP00, TADICAD /FALLS THRU ON 0, USE AS 004666 0113 AND N7 / INDEX INTO LAST LIST 004667 7001 IAC 004670 4775' SPOP04, JMS MULT3 /THREE WORDS/SYMBOL 004671 4774' JMS SYMTYP /OUTPUT ONE OF SEVERAL 004672 4015 FPOP00 / SYMBOLS IN THIS LIST 004673 7775 -3 004674 5600 JMP I FPPOUT / 004675 7340 SPOP05, CLL STA /= -1 004676 5270 JMP SPOP04 /OUTPUT "STARTE" / 004677 7344 SPNUSE, CLL STA RAL /= -2 004700 5270 JMP SPOP04 /OUTPUT "UNUSED" / 004701 4771' SPO123, JMS GET678 /"ALN X", "ATX X", "XTA X" 004702 7104 CLL RAL /(2 WORDS PER) 004703 4774' JMS SYMTYP /OUTPUT SYMBOL 004704 4046 FPXR1S-2 004705 7776 -2 004706 5313 JMP XROUT / & XR VALUE / 004707 1366 SPOP10, TAD (4 /"LDX *,X" 004710 4774' SPOP11, JMS SYMTYP /"ADDX *,X" 004711 4057 FPXR2S 004712 7774 -4 004713 4554 XROUT, TADICAD /GET XR FIELD 004714 0113 AND N7 004715 4531 DIGIT / & OUTPUT AS DIGIT 004716 5600 JMP I FPPOUT / 004717 4554 SPCOP1, TADICAD /GROUP 0 OR 1? 004720 0370 AND (100 004721 7650 SNA CLA 004722 5337 JMP SPOP1J / 1 = CONDITIONAL JUMPS 004723 4771' JMS GET678 / 0 = SETS, ETC. 004724 1365 TAD (-4 /SUB-OP-CODES 0 THRU 3? 004725 7700 SMA CLA 004726 5277 JMP SPNUSE / NO, 4 THRU 7 = UN-USED 004727 4771' JMS GET678 /0 THRU 3: SETX,SETB,JSA,JSR 004730 7001 IAC / +1+1 => 2 THRU 5 004731 7001 SPCOP3, IAC / 1: TRAP3 004732 4775' SPCOP4, JMS MULT3 / 0: TRAP4 004733 4774' JMS SYMTYP /GO DO ONE OF THESE 004734 4067 FOP134 004735 7775 -3 004736 5342 JMP DOFLD /FINISH WITH FIELD / 004737 4764' SPOP1J, JMS CONDIT /CONDITIONAL JUMPS 004740 1200 1200 / "J--" 004741 4533 SPACE2 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 25-2 004742 4772' DOFLD, JMS FLDOUT /OUTPUT FIELD & "*" 004743 5600 JMP I FPPOUT / 004744 4525 SPCOP2, JMS I TYPSI /OUTPUT "JNX " 004745 3751 MSJNX 004746 5242 JMP XRPLUS-1 / & HANDLE ADDRESS / / SPCOP3 & SPCOP4 / 004747 4554 SPCOP5, TADICAD /GET WORD AGAIN 004750 0370 AND (100 004751 7640 SZA CLA 004752 5277 JMP SPNUSE /BIT 5 ON IS UNUSED OP 004753 4764' JMS CONDIT /LOAD TRUTH 004754 1424 1424 / "LT--" 004755 5600 JMP I FPPOUT / 004756 7001 SPCOP7, IAC / "LEA" INDIRECT, SET SWITCH 004757 3023 SPCOP6, DCA TEMP2 / "LEA" LONG, SET SWITCH 004760 7340 CLL STA 004761 5211 JMP FPLEA / & GO DO OUTPUT 004764 6265 004765 7774 004766 0004 004767 0170 004770 0100 004771 6251 004772 6277 004773 3407 004774 4475 004775 6257 004776 6243 004777 0600 5000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 26 005000 0000 PDATE, 0 /ROUTINE TO OUTPUT AN EXTENDED DATE WORD 005001 3245 DCA CRLF /SAVE IT 005002 1245 TAD CRLF /GET WORD & MASK 005003 0121 AND N377 005004 7112 CLL RTR /DAY (4-8) TO 7-11 005005 7010 RAR 005006 4541 JMS I DEC2I / OUTPUT AS 2 DIGITS (MASKED) 005007 4526 JMS I TYPECI / AND A SEPARATOR 005010 0255 "- 005011 1245 TAD CRLF /GET WORD A SECOND TIME 005012 4544 JMS I RTR6I /MONTH (0-3) TO 7-10 005013 7010 RAR / FOR MONTH*2 005014 0377 AND (36 / MASK IT AND USE AS AN INDEX 005015 4525 JMS I TYPSI / TO OUTPUT MONTH IN ALPHA 005016 2521 MONTHS / FORM (WITH SAFETY...) 005017 4526 JMS I TYPECI /FOLLOWED BY "-" 005020 0255 "- 005021 1245 TAD CRLF /GET LAST TIME 005022 0113 AND N7 / MASK OFF YEAR 005023 7041 CIA 005024 1232 TAD YRTEST / TEST IF .GT. THIS YEAR 005025 7510 SPA / WAS SMA SZA 005026 1376 TAD (-10 / YES, SUBTRACT 8 005027 1233 TAD YRBASE / ADD TO BASE YEAR 005030 4541 JMS I DEC2I / & OUTPUT IT 005031 5600 JMP I PDATE 005032 0000 YRTEST, 0 /THIS YEAR FOR TESTING 005033 0000 YRBASE, 0 /BASE YEAR FOR DATE + THIS YEAR 005034 0000 TYPEA, 0 /OUTPUT ASCII CHARACTER IN THE AC 005035 1634 TAD I TYPEA /GET ARG, IF ANY 005036 2234 ISZ TYPEA 005037 3543 DCA I RTL6I /SAVE THE CHAR HERE FOR FIELD 1 005040 4534 JMS I CTRLI 005041 6212 CIF 10 005042 5775' JMP TYPE1 /GO TO FIELD 1 TO DO THE OUTPUT / 005043 2041 TYPEX, ISZ NCNT /BUMP LINE POSITION 005044 5634 JMP I TYPEA / & EXIT 005045 0000 CRLF, 0 /OUTPUT CARRIAGE RETURN, LINE FEED 005046 7200 CLA 005047 4234 JMS TYPEA 005050 0215 215 005051 4234 JMS TYPEA 005052 0212 212 005053 3041 DCA NCNT /RESET LINE POSITION 005054 5645 JMP I CRLF 005055 0000 TYPEC, 0 /OUTPUT A SINGLE CHAR ARG 005056 1655 TAD I TYPEC /GET IT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 26-1 005057 2255 ISZ TYPEC 005060 4262 JMS TYPE /OUTPUT IT 005061 5655 JMP I TYPEC 005062 0000 TYPE, 0 /CHARACTER OUTPUT ROUTINE 005063 0121 AND N377 /BE SURE ONLY 8 BITS 005064 7450 SNA 005065 1035 TAD CHAR /USE CHAR IF AC = 0 005066 3300 DCA TCHAR /CHAR TO OUTPUT 005067 1300 TAD TCHAR 005070 4567 JMS I SORTI /CHECK FOR SPECIALS 005071 4516 TYPEL-1 005072 0056 TYPEOP-TYPEL 005073 1300 TAD TCHAR /IS TCHAR < 240? 005074 1104 TAD M240 005075 7710 SPA CLA 005076 5321 JMP TYPCTL /NO, OUTPUT AS CTRL-CHAR 005077 4234 TYPC, JMS TYPEA /NOW OUTPUT CHAR 005100 0000 TCHAR, 0 005101 5662 JMP I TYPE / 005102 4234 TYPALT, JMS TYPEA /OUTPUT "$" FOR ALT-MODES 005103 0244 "$ 005104 5662 JMP I TYPE / 005105 4245 TYPCR, JMS CRLF /C.R. TO OUTPUT 005106 5662 JMP I TYPE / 005107 4234 TYPTAB, JMS TYPEA /SPACE OVER FOR TAB 005110 0240 " 005111 1041 TAD NCNT /TAB TO OUTPUT 005112 1111 TAD M10 005113 7450 SNA 005114 5662 JMP I TYPE 005115 7500 SMA 005116 5312 JMP TYPTAB+3 /REDUCE BY TAB SIZE 005117 7200 CLA 005120 5307 JMP TYPTAB / 005121 4234 TYPCTL, JMS TYPEA /CONTROL-CHAR, OUTPUT AS 005122 0336 "^ 005123 1325 TAD C100 / "^","CHAR+100" 005124 5277 JMP TYPC 005125 0100 C100, 100 005126 0000 CTRL, 0 /CHECK FOR CTRL-C, CTRL-S, CTRL-Q & CTRL-P 005127 3370 DCA CTRLQS /CLEAR HANG FLAG 005130 6031 CTRL0, KSF /HAS A KEY BEEN HIT? 005131 5364 JMP CTRLX /NO, TEST IF HANGING 005132 6034 KRS 005133 0117 AND N177 /YES, MASK OFF PARITY BIT 005134 1374 TAD (-"C+300 /IS IT A CTRL-C (ABORT PROGRAM)? 005135 7450 SNA /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 26-2 005136 5361 BCTRLC, JMP CTRLC /*** JMP I CTRLCI /== ABORT == 005137 1110 TAD M20 /IS IT A CTRL-S (STOP OUTPUT)? 005140 7440 SZA 005141 5344 JMP CTRL1 005142 2370 ISZ CTRLQS / YES, SET HANG FLAG 005143 6032 KCC / & CLEAR HARDWARE FLAG 005144 1373 CTRL1, TAD (2 /IS IT A CTRL-Q (START OUTPUT)? 005145 7440 SZA 005146 5351 JMP CTRL2 005147 6032 KCC / YES, CLEAR THE HARDWARE 005150 5726 JMP I CTRL / & JUST EXIT / 005151 7001 CTRL2, IAC /IS IT A CTRL-P (STOP PROGRAM)? 005152 7640 SZA CLA 005153 5364 JMP CTRLX /NO, TEST IF HANGING 005154 6032 KCC 005155 3052 DCA DSWIT /YES, RESET DUMP SWITCH 005156 4526 JMS I TYPECI /OUTPUT "^P" 005157 0220 "P-100 005160 5571 JMP I RECRLF / THEN CR/LF & RESTART / /ROUTINE TO EXECUTE THE 'EXIT' COMMAND / XEXIT, 005161 3052 CTRLC, DCA DSWIT /RESET DUMP SWITCH 005162 5506 JMP I M200 / & GO TO SYSTEM 005163 0516 CTRLCI, XERR4+1 /*** CTRL-C ABORTS JOB STREAM! *** / 005164 1370 CTRLX, TAD CTRLQS /HANGING BECAUSE OF CTRL-S? 005165 7640 SZA CLA 005166 5330 JMP CTRL0 / YES, BACK FOR ANOTHER ROUND 005167 5726 JMP I CTRL / NO, OUT WE GO! 005170 0000 CTRLQS, 0 /CTRL-S, CTRL-Q FLAG 005173 0002 005174 7775 005175 2400 005176 7770 005177 0036 5200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 27 /INPUT AN UNSIGNED 24 BIT NUMBER 005200 0000 ACCEPT, 0 005201 3025 DCA ACC1 /CLEAR LO 005202 3026 DCA ACC2 / & HI WORDS 005203 3777' DCA DADD / & LEGAL INPUT SWITCH 005204 4564 JMS I SSKIPI /GET FIRST NON-SPACE 005205 7410 SKP 005206 4563 ACCPT1, JMS I GETNI /DON'T IGNORE SPACES 005207 4567 JMS I SORTI /CHECK FOR ^D, ^K, (, ", ', 005210 5350 GWLST1-1 / DIGITS, SPACE 005211 0043 ACOPS-GWLST1 005212 5236 JMP ACCPT3 /NONE OF THE ABOVE / 005213 1035 ACCNUM, TAD CHAR 005214 1376 TAD (-"0 /MAKE A DIGIT 005215 3261 DCA OCTSET 005216 1261 TAD OCTSET /IS DIGIT LEGAL? 005217 7041 CIA 005220 1242 TAD ACBASE 005221 7750 SPA SNA CLA 005222 4573 ERC09, ERROR / NO, ILLEGAL DIGIT! 005223 1242 ACCMUL, TAD ACBASE /SET UP MULTIPLY OF PREVIOUS 005224 3031 DCA OPER1 / BY BASE 005225 3032 DCA OPER2 005226 4775' JMS DMUL / DO MULTIPLY 005227 1261 TAD OCTSET /SET UP ADD OF NEXT "DIGIT" 005230 3031 DCA OPER1 005231 3032 DCA OPER2 005232 4777' JMS DADD /OK, DO THE ADD (& SET SWITCH) 005233 5206 JMP ACCPT1 / 005234 7240 STA / SPACE HERE 005235 3046 DCA CRSWT /SET SWITCH: CR HERE 005236 1777' ACCPT3, TAD DADD /TERMINATING CHAR RECEIVED 005237 7650 SNA CLA /CHECK FOR LEGAL INPUT 005240 4573 ERCR, ERROR /YOU CAN'T OUT-SMART ME! 005241 5600 JMP I ACCEPT 005242 0010 ACBASE, 10 / / 005243 4265 DQUOTE, JMS QUOTEC / " - GET SINGLE CHAR 005244 3261 DCA OCTSET / SAVE VALUE 005245 5223 JMP ACCMUL / & USE IT AS A "DIGIT" / 005246 4265 SQUOTE, JMS QUOTEC / ' - PACKED ASCII, GET 1ST 005247 0116 AND N77 /MASK TO 6 BITS 005250 4543 JMS I RTL6I /MOVE TO LEFT HALF 005251 3261 DCA OCTSET / & SAVE IT 005252 4265 JMS QUOTEC /GET 2ND CHAR 005253 0116 AND N77 /MASK 005254 1261 TAD OCTSET /MERGE 005255 5244 JMP DQUOTE+1 / & USE THIS AS A "DIGIT" / /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 27-1 005256 1374 CTRLD, TAD (2 / ^D - SET RADIX TO DECIMAL 005257 4261 CTRLK, JMS OCTSET / ^K - SET RADIX TO OCTAL 005260 5206 JMP ACCPT1 /SUB. TO SET UP FOR OCTAL/DECIMAL INPUT. CALLED FROM / COMMAND INPUT & MODIFY & IF AN "^K"/"^D" IN INPUT. 005261 0000 OCTSET, 0 /SET UP FOR OCTAL/DECIMAL INPUT 005262 1373 TAD (10 /ENTER WITH AC= 2 FOR DECIMAL 005263 3242 DCA ACBASE 005264 5661 JMP I OCTSET 005265 0000 QUOTEC, 0 /GET A QUOTED CHARACTER 005266 4772' JMS CGTEST /GET & TEST FOR A CR 005267 4573 ERC13, ERROR / ILLEGAL USE OF " OR ' 005270 1035 TAD CHAR /OK, RETURN WITH IT 005271 5665 JMP I QUOTEC /SUBROUTINE TO DEVELOP ARGUMENTS FROM THE COMMAND /BUFFER, AND RETURN WITH -(#) OF ARGS IN 'TEMP'. 005272 0000 GARGS, 0 005273 1175 TAD TEMPST /GET BUFFER ADDRESS 005274 3010 DCA DPNT 005275 3021 DCA TEMP /ZERO THE NUMBER OF ARGS 005276 7240 GAR1, STA 005277 3022 DCA TEMP1 /SET BLK TO -1 005300 7240 STA 005301 3036 DCA CNT /RESET SWITCH 005302 4771' GAR2, JMS EXPRIN /GET NEXT ARG 005303 4564 JMS I SSKIPI /IGNORE TRAILING SPACES 005304 4567 JMS I SORTI /BRANCH ON TERMINATOR 005305 5442 GARLST-1 005306 7772 GAROPS-GARLST 005307 4573 ERCS, ERROR /ILLEGAL TERMIN., FLAME OUT / 005310 4326 GAR3, JMS GPUT /CR FOUND, END 005311 1175 TAD TEMPST /SET UP POINTER FOR 005312 3010 DCA DPNT / GETTING RESULTS 005313 5672 JMP I GARGS / 005314 4563 GAR4, JMS I GETNI /SKIP OVER "." 005315 1025 TAD ACC1 /.= TERMIN (BLOCK PART) 005316 5277 JMP GAR1+1 /SET BLOCK & GET NEXT / 005317 1025 GAR5, TAD ACC1 /-= TERMIN (LOC PART) 005320 3023 DCA TEMP2 005321 4563 JMS I GETNI /SKIP OVER "-" 005322 5301 JMP GAR2-1 /GO SET SWITCH / 005323 4326 GAR6, JMS GPUT /,= TERMIN 005324 4563 JMS I GETNI /SKIP OVER "," 005325 5276 JMP GAR1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 27-2 /SUBROUTINE TO PUT THE DEVELOPED ARGS IN THE ARG /BUFFER. ALL ARGUMENTS ARE STORED IN 4 WORDS IN /THE BUFFER, AS SPECIFIED BY: / BLOCK.LOC1-LOC2 (TERMINATED BY , OR C.R.) /AS: /I-------I-------I-------I-------I----- /I WORD1 I WORD2 I WORD3 I WORD4 I ETC. /I-------I-------I-------I-------I----- /WHERE: / WORD1= BLOCK (OR -1 IF NONE SPECIFIED) / WORD2= LOC (HIGH) [ONLY 3 BITS, LOC2 IF SPEC'D] / WORD3= LOC1 (LOW) / WORD4= LOC2-LOC1-1 (LOC2=LOC1 IF NOT / SPECIFIED) [ONLY 12 LOW BITS USED] 005326 0000 GPUT, 0 005327 1022 TAD TEMP1 005330 3410 DCA I DPNT /SET BLOCK 005331 2036 ISZ CNT /WAS A LOC2 SPECIFIED? 005332 5335 JMP GPUT1 /YES, OK 005333 1025 TAD ACC1 005334 3023 DCA TEMP2 /NO, MAKE ARGS SAME 005335 1026 GPUT1, TAD ACC2 /STORE HIGH ADDR 005336 0113 AND N7 /MASKED TO 3 BITS 005337 3410 DCA I DPNT 005340 1023 TAD TEMP2 /USE 1ST ARG 005341 3410 DCA I DPNT 005342 1025 TAD ACC1 005343 7040 CMA 005344 1023 TAD TEMP2 005345 3410 DCA I DPNT /DIFF= (TEMP2-ACC1-1) 005346 7240 STA 005347 1021 TAD TEMP /ANOTHER ENTRY 005350 3021 DCA TEMP 005351 5726 JMP I GPUT 005352 0000 XS240O, 0 /REALLY XS237** XS240 FORMAT PACKED ASCII 005353 4544 JMS I RTR6I /HIGH 6 BITS 005354 0116 AND N77 005355 4770 JMS I (XSCONV /XS237** SPACE1 / PLUS A SPACE 005356 4554 TADICAD /THEN LOW 6 BITS, 005357 0116 AND N77 005360 4770 JMS I (XSCONV /XS237** SPACE1 / PLUS A SPACE 005361 5752 JMP I XS240O 005362 0000 GETN, 0 /GET NEXT CHAR FROM COMM. BUFF. 005363 6211 CDF 10 005364 1416 TAD I COMOUT 005365 6201 CDF 0 005366 3035 DCA CHAR 005367 5762 JMP I GETN 005370 5761 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 27-3 005371 5727 005372 2552 005373 0010 005374 0002 005375 6000 005376 7520 005377 5650 5400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 28 /ROUTINE TO EVALUATE THE PARENTHESIZED EXPRESSION /OF DOUBLE PRECISION INTEGERS IN THE COMMAND BUFFER. /IT CALLS ITSELF RECURSIVELY TO EVALUATE EXPRESSIONS /IN "(...)", PLACING INFORMATION ON A PUSH-DOWN-LIST /OR DOING ARITHMETIC ACCORDING TO OPERATOR PRECIDENCE. / /OPERATIONS (IN ORDER OF PRECIDENCE): / OR AND ADD SUB DIV MPY / ! & + - / * /ALL ARITHMETIC IS DONE IN DOUBLE-PRECISION SIGNED /INTEGER. OVERFLOW ON MULTIPLY, ADD OR SUBTRACT IS /IGNORED BUT DIVIDE BY 0 WILL CAUSE AN ERROR. 005400 0000 EVAL, 0 005401 3032 DCA OPER2 /0 => D.P. TEMP (NEW NUMBER 005402 3031 DCA OPER1 / OR LAST RESULT). 005403 3002 DCA LASTOP /0 => LASTOP 005404 4765 JMS I TERMTI /GET NEXT & TEST FOR TERM. 005405 5207 JMP EVAL1 /TERM, CHECK IT 005406 5272 JMP ENUM / IT MUST BE A NUMBER 005407 4567 EVAL1, JMS I SORTI /CHECK LEGAL TERMS 005410 5476 EVLST1-1 /"+","-" & "(" 005411 7775 EVOPS1-EVLST1 005412 4573 ERCT, ERROR /SORRY ABOUT THAT 005413 4764 EVAL2, JMS I LPARI /IS CHAR "("? 005414 4573 ERCU, ERROR /YES,ILLEGAL (NO OP FIRST) 005415 1040 EVMIN, TAD CNTRA /SEQN # OF TERMINATOR 005416 3003 DCA THISOP /SET UP THISOP 005417 1040 TAD CNTRA /IS IT ")" OR "CR"? 005420 1111 TAD M10 005421 7700 SMA CLA 005422 3003 DCA THISOP /YES, 0 => THISOP 005423 1003 EVAL3, TAD THISOP /CHECK PRIORITIES 005424 7041 CIA 005425 1002 TAD LASTOP /IS LASTOP < THISOP? 005426 7710 SPA CLA 005427 5256 JMP EVPAR /YES, CONTINUE SCAN 005430 1003 TAD THISOP / IS THISOP+LASTOP=0? 005431 1002 TAD LASTOP 005432 7650 SNA CLA 005433 5357 JMP EVALX /YES, DONE 005434 1002 TAD LASTOP /NO, DO THIS OP NOW 005435 1366 TAD EVTAB 005436 3246 DCA EVOP /SET UP OPERATION 005437 1002 TAD LASTOP /IS THIS =0? 005440 7650 SNA CLA 005441 5246 JMP EVOP /YES, DO OP 005442 4551 POP /NO, POP LAST OFF LIST 005443 3026 DCA ACC2 / INTO D.P.AC. /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 28-1 005444 4551 POP 005445 3025 DCA ACC1 005446 7402 EVOP, HLT /JMS TO OPERATION ROUTINE 005447 1026 TAD ACC2 005450 3032 DCA OPER2 /DUPLICATE D.P.AC. INTO 005451 1025 TAD ACC1 005452 3031 DCA OPER1 / D.P. TEMP 005453 4551 POP 005454 3002 DCA LASTOP /POP UP ANOTHER OLD OPERATOR 005455 5223 JMP EVAL3 /AND GO DO IT 005456 4764 EVPAR, JMS I LPARI /IS CHAR A "("? 005457 5337 JMP EVLPAR /YES, GO DO A SUB-EXPRESSION 005460 1002 TAD LASTOP /NO, PUSH DOWN OLD OP 005461 4550 PUSH 005462 1031 TAD OPER1 / & D.P. TEMP (LAST 005463 4550 PUSH 005464 1032 TAD OPER2 / RESULT OR NEW NUMBER). 005465 4550 PUSH 005466 1003 TAD THISOP /UPDATE LASTOP 005467 3002 DCA LASTOP 005470 4765 EVNEXT, JMS I TERMTI /GET NEXT & TEST FOR TERM. 005471 5337 JMP EVLPAR /TERM, MUST BE A "(" 005472 4567 ENUM, JMS I SORTI /CHECK FOR "C","B", ETC... 005473 5502 EVLST2-1 005474 0011 EVOPS2-EVLST2 005475 4777' JMS ACCEPT /GET A # OR BOMB OUT! 005476 7240 STA 005477 1016 TAD COMOUT /BACK UP POINTER 005500 3016 DCA COMOUT 005501 1025 ENUMX, TAD ACC1 005502 3031 DCA OPER1 /LO ORDER PART 005503 1026 TAD ACC2 005504 3032 DCA OPER2 /HI ORDER PART 005505 5354 JMP EVOPN /GO CHECK TERMINATOR / 005506 6211 EVDATE, CDF 10 /"D" -- USE DATE WORD 005507 1776 TAD I (7666 /GET DATE WORD 005510 6201 CDF 0 005511 5334 JMP EVBLK+1 005512 1027 EVREM, TAD ACCX1 /"R" -- USE REMAINDER 005513 3025 DCA ACC1 005514 1030 TAD ACCX2 / AS NEXT "INPUT". 005515 5335 JMP EVBLK+2 005516 1033 EVTEMP, TAD TEMPV1 /"T" -- USE 'TEMP' STORAGE 005517 3025 DCA ACC1 005520 1034 TAD TEMPV2 005521 5335 JMP EVBLK+2 005522 7614 EVSR, LAS SKP /"S" -- USE SWITCHES 005523 4554 TADICAD /"C" -- USE CONTENTS 005524 5334 JMP EVBLK+1 005525 1074 EVFIL, TAD FILLER /"F" -- USE FILLER 005526 5334 JMP EVBLK+1 005527 1061 EVLOC, TAD LOCL /"L" -- USE LOCATION 005530 3025 DCA ACC1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 28-2 005531 1060 TAD LOCH 005532 5335 JMP EVBLK+2 005533 1057 EVBLK, TAD BLK /"B" -- USE BLOCK 005534 3025 DCA ACC1 /INTO LO ORDER PART 005535 3026 DCA ACC2 /0 HIGH ORDER PART 005536 5301 JMP ENUMX /CHECK NEXT CHARACTER 005537 4764 EVLPAR, JMS I LPARI /IS CHAR "("? 005540 7410 SKP 005541 4573 ERCV, ERROR /NO, DIE! (ILLEGAL OPERATOR) 005542 1002 EVPAR2, TAD LASTOP /PUSH DOWN LASTOP 005543 4550 PUSH 005544 1200 TAD EVAL /PREPARE TO RE-CALL 005545 4550 PUSH 005546 4200 JMS EVAL /RECURSIVE CALL 005547 4573 ERCW, ERROR /TERM = CR, NOT ENOUGH PARENS 005550 4551 POP 005551 3200 DCA EVAL /RESTORE RETURN ADDR 005552 4551 POP 005553 3002 DCA LASTOP /RESTORE LASTOP 005554 4765 EVOPN, JMS I TERMTI /GET NEXT & TEST FOR TERM. 005555 5213 JMP EVAL2 /OK 005556 5341 JMP EVPAR2-1 /GARBAGE, GIVE SAME ERROR 005557 1040 EVALX, TAD CNTRA /WAS CHAR CR OR ")"? 005560 1111 TAD M10 005561 7650 SNA CLA 005562 2200 ISZ EVAL / ")", RETURN TO CALL+2 005563 5600 JMP I EVAL / CR, RETURN TO CALL+1 005564 5616 LPARI, LPAR 005565 5624 TERMTI, TERMT 005566 4766 EVTAB, JMS I . /JMS THRU TABLE TO OPERATIONS 005567 5677 DIOR /INCLUSIVE OR 005570 5667 DAND /AND 005571 5650 DADD /ADD 005572 5662 DSUB /SUBTRACT 005573 6040 DDIV /DIVIDE 005574 6000 DMUL /MULTIPLY 005576 7666 005577 5200 5600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 29 005600 0000 PUSHX, 0 /PUSH AC ONTO LIST 005601 6211 CDF 10 005602 3407 DCA I PDLPT 005603 6201 CDF 0 005604 2007 ISZ PDLPT /BUMP POINTER 005605 5600 JMP I PUSHX 005606 0000 POPX, 0 /POP LIST INTO AC 005607 7360 STA STL /SET LINK SO IT WILL BE 0 005610 1007 TAD PDLPT /BACK UP POINTER 005611 3007 DCA PDLPT 005612 6211 CDF 10 005613 1407 TAD I PDLPT 005614 6201 CDF 0 005615 5606 JMP I POPX 005616 0000 LPAR, 0 /CHECK IF CHAR = "(" 005617 1035 TAD CHAR 005620 1377 TAD (-"( 005621 7640 SZA CLA 005622 2216 ISZ LPAR /IF IT IS NOT, TO CALL+2 005623 5616 JMP I LPAR / ELSE TO CALL+1 /COMPARE CHAR AGAINST LIST OF TERMINATORS. IF IT /IS ONE, RETURN TO CALL+1, ELSE TO CALL+2. 005624 0000 TERMT, 0 005625 7300 CLA CLL 005626 4563 JMS I GETNI /GET NEXT CHARACTER 005627 4564 JMS I SSKIPI /IGNORE SPACES 005630 1376 TAD (TERMS-1 /SET UP POINTER 005631 3011 DCA SPNT 005632 3040 DCA CNTRA /SET CNTRA TO 0 005633 6211 TERMT1, CDF 10 005634 1411 TAD I SPNT /GET AN ITEM 005635 6201 CDF 0 005636 2040 ISZ CNTRA /ADD 1 TO ITEM # 005637 7450 SNA 005640 5246 JMP TERMTE /WAS 0, END 005641 7041 CIA 005642 1035 TAD CHAR /SAME AS THIS? 005643 7650 SNA CLA 005644 5624 JMP I TERMT /YES, TO CALL+1 005645 5233 JMP TERMT1 005646 2224 TERMTE, ISZ TERMT /DIDN'T FIND IT, TO 005647 5624 JMP I TERMT / CALL+2 /DOUBLE-PRECISION ROUTINES 005650 0000 DADD, 0 /D.P. ADD 005651 7100 CLL 005652 1031 TAD OPER1 005653 1025 TAD ACC1 /ADD LOW ORDER PARTS /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 29-1 005654 3025 DCA ACC1 005655 7004 RAL /GET CARRY TO AC11 005656 1032 TAD OPER2 /ADD HIGH ORDER PARTS 005657 1026 TAD ACC2 005660 3026 DCA ACC2 /STORE HIGH ORDER PART 005661 5650 JMP I DADD 005662 0000 DSUB, 0 /D.P. SUBTRACT 005663 3001 DCA DPSGN /ZERO IT FOR SAFETY 005664 4775' JMS MULNEG /NEGATE OPERAND 005665 4250 JMS DADD / & ADD 005666 5662 JMP I DSUB 005667 0000 DAND, 0 /D.P. LOGICAL AND 005670 1026 TAD ACC2 /AND HIGH ORDER PARTS 005671 0032 AND OPER2 005672 3026 DCA ACC2 005673 1025 TAD ACC1 /AND LOW ORDER PARTS 005674 0031 AND OPER1 005675 3025 DCA ACC1 005676 5667 JMP I DAND /RETURN 005677 0000 DIOR, 0 /D.P. LOGICAL INCLUSIVE OR 005700 1026 TAD ACC2 /IOR HIGH ORDER PARTS 005701 7040 CMA 005702 0032 AND OPER2 005703 1026 TAD ACC2 005704 3026 DCA ACC2 005705 1025 TAD ACC1 /IOR LOW ORDER PARTS 005706 7040 CMA 005707 0031 AND OPER1 005710 1025 TAD ACC1 005711 3025 DCA ACC1 005712 5677 JMP I DIOR /SUBROUTINE TO GET SINGLE ARGS FROM THE COMMAND /BUFFER. MUST BE IN 'BLOK.LOC' FORM. ONLY ".", /SPACE AND CR ARE ALLOWED OTHER THAN DIGITS. 005713 0000 ARG, 0 005714 7240 STA 005715 3022 ARG1, DCA TEMP1 /SET 'BLOK' [INIT TO -1] 005716 4327 JMS EXPRIN / GET AN ARG 005717 4567 JMS I SORTI /LOOK UP TERMINATOR 005720 5445 ARGLST-1 005721 0010 ARGOPS-ARGLST 005722 4573 ERCQ, ERROR /ILLEGAL TERMINATOR / 005723 4563 ARG2, JMS I GETNI /SKIP OVER "." 005724 1025 TAD ACC1 /TERM = ".", SET 'BLOK' 005725 5315 JMP ARG1 / 005726 5713 ARG3, JMP I ARG /TERM = " " OR CR /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 29-2 /GET NEXT ARG FROM COMM. BUFF. IF NEXT CHAR IS / A "(", USE 'EVAL' TO GET IT, OTHERWISE USE / 'ACCEPT'. 005727 0000 EXPRIN, 0 005730 4564 JMS I SSKIPI /IGNORE SPACES 005731 4216 JMS LPAR /IS CHAR A "("? 005732 5335 JMP EXPRI1 005733 4774' JMS ACCEPT /NO, MUST BE A NUMBER 005734 5727 JMP I EXPRIN / 005735 4547 EXPRI1, JMS I EVALI /YES, GO EVALUATE EXPRESSION 005736 4573 ERC08, ERROR /CR = ILLEGAL TERMINATOR 005737 4773' JMS CGTEST /OK, SKIP OVER ")" & TEST FOR CR 005740 7410 SKP 005741 7240 STA /NO, SET SWITCH 005742 3046 DCA CRSWT /YES, RESET IT 005743 5727 JMP I EXPRIN / & LEAVE... 005744 0000 SCANER, 0 /EXECUTION SUBROUTINE FOR 'SCAN' COMMAND 005745 7200 CLA 005746 1057 TAD BLK /SET UP DESIRED BLOCK 005747 3054 DCA CBLK 005750 4772' JMS GETIO /DO NECESSARY I/O 005751 7610 SKP CLA / READ ERROR! 005752 5744 JMP I SCANER /THIS BLOCK IS OK! 005753 1057 TAD BLK 005754 4540 JMS I OCTI /OUTPUT BLOCK NUMBER 005755 4525 JMS I TYPSI / & TELL IT'S BAD 005756 2354 MSBAD 005757 4530 JMS I CRLFI / TO ANOTHER LINE 005760 5744 JMP I SCANER 005761 0000 XSCONV, 0 /TYPES XS237** 005762 7450 SNA /IS IT NULL? 005763 1371 TAD (100 /YES: CONVERT TO _ 005764 1112 TAD M1 005765 4532 SPACE1 /TYPES SPACE + AC 005766 5761 JMP I XSCONV /0=_,1=SPACE,40=?,41=@,77=^ 005771 0100 005772 3027 005773 2552 005774 5200 005775 6126 005776 5336 005777 7530 6000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 30 /SIGNED MULTIPLY AND DIVIDE ROUTINES 006000 0000 DMUL, 0 006001 4312 JMS MDCOM /MAKE DPAC POS, INITIALIZE 006002 7710 SPA CLA /MAKE SURE MULTIPLIER IS POSITIVE 006003 4326 JMS MULNEG / IT WAS NEG, MAKE POS & SET SIGN 006004 1026 DMUL1, TAD ACC2 /SHIFT RIGHT & OUT 006005 7010 RAR 006006 3026 DCA ACC2 /THRU HI OF LO 006007 1025 TAD ACC1 006010 7010 RAR 006011 3025 DCA ACC1 /THRU LO OF LO INTO LINK 006012 2341 ISZ DPNEG /DONE YET? 006013 5221 JMP DMUL2 /NO, CONTINUE 006014 1001 DMUL4, TAD DPSGN /YES, CHECK SIGN OF RESULT 006015 7010 RAR 006016 7630 SZL CLA /SKIP IF SIGN OK 006017 4341 JMS DPNEG /NOT OK, NEGATE 006020 5600 JMP I DMUL / 006021 7420 DMUL2, SNL /ADD IN THIS TIME? 006022 5231 JMP DMUL3 /NO, BIT OUT WAS 0 006023 7300 CLA CLL /YES, BIT WAS 1 006024 1031 TAD OPER1 /START WITH LOW 006025 1027 TAD ACCX1 006026 3027 DCA ACCX1 006027 7204 CLA RAL /GET CARRY 006030 1032 TAD OPER2 /ADD HIGH PARTS 006031 1030 DMUL3, TAD ACCX2 /AND BEGIN SHIFTING OUT 006032 7010 RAR 006033 3030 DCA ACCX2 006034 1027 TAD ACCX1 006035 7010 RAR 006036 3027 DCA ACCX1 006037 5204 JMP DMUL1 006040 0000 DDIV, 0 006041 1240 TAD DDIV /MOVE RETURN ADDRESS 006042 3200 DCA DMUL 006043 4312 JMS MDCOM /MAKE DPAC POS, INITIALIZE 006044 7700 SMA CLA /IS DIVISOR NEGATIVE? 006045 4326 JMS MULNEG / NO, NEGATE IT & SET SIGN 006046 7430 SZL / IS IT 0? (CARRY OUT ON NEGATE) 006047 4573 ERCX, ERROR / YES, YOU LOST 006050 2001 ISZ DPSGN /CORRECT FOR SIGN DIF IN * & / 006051 1027 DDIV1, TAD ACCX1 /SUBTRACT LO OF LO 006052 1031 TAD OPER1 006053 3027 DCA ACCX1 006054 7204 CLA RAL /CARRY TO AC 006055 1030 TAD ACCX2 /SUBTRACT HI OF LO 006056 1032 TAD OPER2 006057 7510 SPA /TOO FAR? 006060 5264 JMP DDIV2 /YES /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 30-1 006061 7120 CLL CML /NO, SET LINK 006062 3030 DCA ACCX2 006063 5272 JMP DDIV3 006064 7200 DDIV2, CLA 006065 1031 TAD OPER1 /RESET LO ORDER PART 006066 7041 CIA 006067 1027 TAD ACCX1 006070 3027 DCA ACCX1 006071 7100 CLL /RESET LINK 006072 1025 DDIV3, TAD ACC1 /BEGIN SHIFTING 006073 7004 RAL 006074 3025 DCA ACC1 006075 1026 TAD ACC2 006076 7004 RAL 006077 3026 DCA ACC2 006100 2341 ISZ DPNEG /DONE YET? 006101 7410 SKP 006102 5214 JMP DMUL4 /YES, CHECK SIGN & RETURN 006103 1027 TAD ACCX1 /NO, KEEP SHIFTING 006104 7004 RAL 006105 3027 DCA ACCX1 006106 1030 TAD ACCX2 006107 7004 RAL 006110 3030 DCA ACCX2 006111 5251 JMP DDIV1 006112 0000 MDCOM, 0 /COMMON ROUTINE FOR MULTIPLY & DIVIDE 006113 3001 DCA DPSGN /RESET SIGN 006114 1026 TAD ACC2 /IS DPAC POS? 006115 7710 SPA CLA 006116 4341 JMS DPNEG /NO, NEGATE 006117 3030 DCA ACCX2 / 0 => DPACX 006120 3027 DCA ACCX1 006121 1377 TAD (-31 /INITIALIZE COUNTER 006122 3341 DCA DPNEG 006123 7100 CLL 006124 1032 TAD OPER2 /RETURN W. HIGH OPERAND 006125 5712 JMP I MDCOM 006126 0000 MULNEG, 0 /NEGATE THE MULTIPLIER/DIVISOR 006127 1031 TAD OPER1 /DO LO-ORDER PART 006130 7141 CLL CIA 006131 3031 DCA OPER1 006132 1032 TAD OPER2 /DO HI-ORDER PART 006133 7040 CMA 006134 7430 SZL /CARRY? 006135 7101 CLL IAC /YES, ADD IT IN 006136 3032 DCA OPER2 006137 2001 ISZ DPSGN /SIGN CHANGE MADE 006140 5726 JMP I MULNEG 006141 0000 DPNEG, 0 /NEGATE THE D.P.AC. 006142 1025 TAD ACC1 /DO LO-ORDER PART 006143 7141 CLL CIA 006144 3025 DCA ACC1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 30-2 006145 1026 TAD ACC2 /DO HI-ORDER PART 006146 7040 CMA 006147 7430 SZL /CARRY? 006150 7101 CLL IAC /YES, ADD IT IN 006151 3026 DCA ACC2 006152 2001 ISZ DPSGN /SIGN CHANGE MADE 006153 5741 JMP I DPNEG 006154 0000 BLKTST, 0 /TEST & SET BLK 006155 3341 DCA DPNEG /SAVE DATA 006156 1341 TAD DPNEG /GET IT BACK AGAIN 006157 2341 ISZ DPNEG /LEGAL BLOCK NUMBER? 006160 3057 DCA BLK / YES IF NOT 7777 (-1) 006161 7200 CLA / IF NOT, CLEAR JUNK 006162 5754 JMP I BLKTST 006163 0000 DICAD, 0 /"DCA I CAD" IN FIELD 1 006164 6211 CDF 10 006165 3456 DCA I CAD 006166 6201 CDF 0 006167 5763 JMP I DICAD 006170 0000 TICAD, 0 /"TAD I CAD" IN FIELD 1 006171 6211 CDF 10 006172 1456 TAD I CAD 006173 6201 CDF 0 006174 5770 JMP I TICAD 006177 7747 6200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 31 /CHECK IF THE COMMAND BUFFER STARTS WITH A WORD. IF /IT DOES, RETURN TO 'MAIN3' WITH THE SPECIAL CHAR- /ACTER AND JUST USE IT AS PART OF THE COMMAND STRING. /IF IT DOES NOT, TEST FOR EXPRESSIONS [IN "(...)", /TO ALLOW CHARACTERS IN THE EXPRESSIONS TO NOT BE /TAKEN AS COMMAND CHARACTERS] AND SINGLE & DOUBLE /QUOTES [THE FOLLOWING CHARACTER OR CHARACTERS ARE /LITERALS, NOT COMMANDS]. IF THE PARENS MATCH AND /THE QUOTES ARE FOLLOWED BY THE CORRECT NUMBER OF /CHARACTERS, THEN THE LAST CHARACTER WAS AN "ODT" /COMMAND TO BE EXECUTED SO RETURN TO CALL+1. OTHER- /WISE RETURN TO 'MAIN3' AS ABOVE. 006200 0000 WCHEK, 0 006201 4556 JMS I GWORDI /COM BUF BEGIN WITH A WORD? 006202 5211 JMP WCHEK2 /NO, TEST FOR PARENS, ETC. 006203 7240 WCHEK1, STA 006204 1015 TAD COMIR /YES, BACK UP COMIR 006205 3015 DCA COMIR 006206 1021 TAD TEMP /AND USE THE SPECIAL CHAR AS 006207 5610 JMP I .+1 / PART OF THE COMMAND STRING 006210 4025 RESPC+1 / 006211 7240 WCHEK2, STA 006212 1016 TAD COMOUT /SET UP ANOTHER A-XR 006213 3010 DCA DPNT 006214 3036 DCA CNT /RESET (OR SET) PAREN COUNT 006215 4553 WCHEK3, TADIDP /GET A CHAR FROM COMM. BUFF. 006216 4567 JMS I SORTI / & GO TEST IT 006217 5460 WCKLST-1 006220 0006 WCKOPS-WCKLST 006221 5215 JMP WCHEK3 /NONE, CONTINUE SCAN / 006222 1036 WCHEK4, TAD CNT /CR, DO PARENS MATCH? 006223 7640 SZA CLA 006224 5203 JMP WCHEK1 /NO, CONTINUE COMMAND INPUT 006225 5600 JMP I WCHEK /YES, INPUT IS DONE / 006226 7344 WCHEK5, STA CLL RAL /SET TO -2 006227 7001 IAC /AC = +1 OR -1 006230 1036 TAD CNT / UPDATE PAREN COUNT 006231 5214 JMP WCHEK3-1 / & CONTINUE SCAN / 006232 4235 WCHEK6, JMS WCHONE / ' -- 2 CHARACTERS 006233 4235 JMS WCHONE / " -- 1 CHARACTER 006234 5215 JMP WCHEK3 /OK, CONTINUE SCAN 006235 0000 WCHONE, 0 006236 4553 TADIDP /GET NEXT CHAR 006237 1105 TAD M215 /IS IT A CR? 006240 7650 SNA CLA 006241 5203 JMP WCHEK1 /YES, DON'T EXECUTE SPECIAL 006242 5635 JMP I WCHONE /NO, OK /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 32 /FPP INSTRUCTION DECODING SUPPORT SUBROUTINES 006243 0000 GETOP, 0 /GET OP-CODE (BITS 0-3) TO BITS 9-11 006244 4554 TADICAD 006245 0122 AND N7000 006246 7106 CLL RTL 006247 7006 RTL 006250 5643 JMP I GETOP 006251 0000 GET678, 0 /GET BITS 678 TO BITS 9-11 006252 4554 TADICAD 006253 7112 CLL RTR 006254 7010 RAR 006255 0113 AND N7 006256 5651 JMP I GET678 006257 0000 MULT3, 0 /MULTIPLY AC BY THREE 006260 3243 DCA GETOP 006261 1243 TAD GETOP 006262 7104 CLL RAL 006263 1243 TAD GETOP /WORKS FOR POS OR NEG! 006264 5657 JMP I MULT3 006265 0000 CONDIT, 0 /OUTPUT CONDITIONAL FPP INSTRUCTION 006266 1665 TAD I CONDIT /GET LEADING 1 OR 2 CHARS 006267 2265 ISZ CONDIT 006270 4535 JMS I TWOT / & OUTPUT THEM 006271 4251 JMS GET678 /GET CONDITION CODE 006272 4676 JMS I SYMTYI / AS INDEX TO TABLE 006273 4111 FPCOND 006274 7777 -1 006275 5665 JMP I CONDIT 006276 4475 SYMTYI, SYMTYP 006277 0000 FLDOUT, 0 /OUTPUT FIELD DIGIT & "*" 006300 4554 TADICAD 006301 0113 AND N7 /GET FIELD 006302 4543 JMS I RTL6I / TO BITS 3-5 006303 4527 JMS I TWOCI / & OUTPUT "F*" 006304 6052 6052 / WHERE "F" IS DIGIT 006305 5677 JMP I FLDOUT DECIMAL /SET RADIX TO DECIMAL 6306 TEMPL= . /ARGUMENT BUFFER /L(TEMPL)=180(10) 6572 F0END= TEMPL+180 006306 0006 DMPHAN-F0END /(SHOW SPACE LEFT) OCTAL /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 32-1 6400 PAGE /****** MUST BE NO LITERALS! ****** 6600 DMPHAN= 06600 /DUMP HANDLER AREA, 2 FIELD 0 PAGES 7200 DEVHAN= 07200 /DEVICE HANDLER AREA, 2 FIELD 0 PGS IFNZRO DMPHAN-F0END&4000 <BADERR,__CAN'T RUN> /IF THE ABOVE ASSEMBLES, THE BUFFERS ARE OVER- / RUNNING THE DUMP DEVICE HANDLER. 6306 *TEMPL /ADD INITIALIZATION CODE WHICH IS OVERLAID 006306 0000 INIMSG, 0 /INITIALIZE ERROR MESSAGES ON SCRATCH BLKS 006307 6211 CDF 10 006310 1777 TAD I (7726 /BUT FIRST CHECK FOR "SCOPE MODE" 006311 6201 CDF 0 006312 0120 AND N200 / (BIT 4 OF 17726) 006313 7650 SNA CLA 006314 5322 JMP INIDAT / NOT SET, GO SET UP DATE 006315 1411 INISCO, TAD I SPNT /SET, CHANGE RUBOUT HANDLER TO 006316 7450 SNA 006317 5322 JMP INIDAT / ERASE CHARACTERS FROM SCREEN 006320 3410 DCA I DPNT / AND FROM BUFFER (MUCH EASIER 006321 5315 JMP INISCO / THAN ON HARD COPY!) / 006322 6211 INIDAT, CDF 10 /NOW INIT EXTENDED DATE 006323 1776 TAD I (7666 /GET SYSTEM DATE WORD 006324 6201 CDF 0 006325 0113 AND N7 /PICK OFF THIS YEAR PART /CIA 006326 3775' DCA YRTEST / AND SET TEST YEAR 006327 1512 TAD I M1 /NOW GET EXTENDED YEAR BITS 006330 0374 AND (1600 / FROM "B.I.P." WORD AND 006331 7112 CLL RTR / MOVE TO BITS 6,7,8 (*8) 006332 7012 RTR /TAD (106 /ADD TO A STARTING BASE OF 70[10] /CIA 006333 1775' TAD YRTEST /AND ADD THIS YEAR ALSO /CIA 006334 1373 TAD (-36 /ABOVE 2000? 70-100 006335 7510 SPA 006336 1372 TAD (144 /NO - ADD TO A STARTING BASE OF 70[10] 006337 3771' DCA YRBASE /= (70 OR 0) + EXTEND*8 + THIS YEAR 006340 1770 TAD I (7746 /GET JSW 006341 0367 AND (6777 /CLEAR BIT 2 (CAN RESTART!) 006342 7110 CLL RAR 006343 7124 STL RAL /SET BIT 11 (DON'T SAVE FIELD 1) 006344 3770 DCA I (7746 /& PUT IT BACK 006345 4766 JMS I (7607 /WRITE ERROR MESSAGES 006346 4610 4610 / 6 PAGES, FIELD 1 006347 0000 0 / FROM LOC 10000 006350 0027 27 / NORMAL SAVE AREA! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 32-2 006351 7610 SKP CLA 006352 5706 JMP I INIMSG /OK, JUST EXIT 006353 1106 TAD M200 006354 3765' DCA XERR3 /FAILED, ASSUME WRITE LOCKED 006355 1364 TAD (ERROR / SO NO ERROR MESSAGES ON 006356 3763' DCA ERC15 / ERROR OR "SHOW ERRORS" 006357 5706 JMP I INIMSG 006363 0545 006364 4573 006365 0505 006366 7607 006367 6777 006370 7746 006371 5033 006372 0144 006373 7742 006374 1600 006375 5032 006376 7666 006377 7726 6400 PAGE /LITERALS HERE ARE OK! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 33 /INITIALIZATION CODE--RESIDES IN BUFFER AREA AND IS WIPED / OUT DURING EXECUTION. HANDLES CHAINED AND NORMAL STARTS. 006400 7610 START, CLA SKP /NORMAL 006401 7240 STA /CHAINED (FROM CCL!) 006402 3021 DCA TEMP 006403 6211 CDF 10 006404 3777 DCA I (CCBB /ZAP CCB SWITCH 006405 6201 CDF 0 006406 1120 TAD N200 006407 3776 DCA I (7745 /RESET START ADDRESS 006410 4775' JMS INIMSG /INIT SCOPE, DATE & ERROR MESSAGES 006411 4774' JMS BATSET /TEST & SET UP FOR BATCH 006412 2021 ISZ TEMP /CHAINED? 006413 5773 JMP I (201 / NO, START IT UP! 006414 6211 CDF 10 006415 1506 TAD I M200 /YES, 1ST OUTPUT DEVICE? 006416 6201 CDF 0 006417 0372 AND (17 /(IGNORE LENGTH SPEC) 006420 7450 SNA 006421 5271 JMP STSWIT / NO, LEAVE AS SYS 006422 3101 DCA DEVNO /YES, SET DEVICE NUMBER 006423 1101 TAD DEVNO 006424 4552 CALUSR /NOW DO HANDLER FETCH BY 006425 0001 1 / NUMBER (PAINTING?) 006426 7201 STDEV, DEVHAN+1 /--2 PAGES-- 006427 5351 JMP STERR /ARGGGG! FAILED!!! 006430 1226 TAD STDEV 006431 3100 DCA DEVAD /SET UP HANDLER ENTRY 006432 1106 TAD M200 006433 3010 DCA DPNT /SET UP FIELD 1 POINTER 006434 4553 TADIDP /GET NAME OF FILE 006435 3025 DCA NAM1 006436 4553 TADIDP 006437 3026 DCA NAM2 006440 4553 TADIDP 006441 3027 DCA NAM3 006442 4553 TADIDP /GET EXTENSION 006443 3030 DCA NAM4 006444 1025 TAD NAM1 /WAS THERE REALLY A NAME? 006445 7640 SZA CLA 006446 7240 STA / YES, SET NAME SWITCH 006447 3021 DCA TEMP / NO, RESET 006450 6211 CDF 10 006451 3771 DCA I (XDNAM /CLEAR DEVICE NAME WORDS 006452 3770 DCA I (XDNAM+1 006453 1410 TAD I DPNT /GET NEXT WORD & TEST FOR ZERO 006454 7640 SZA CLA 006455 5271 JMP STSWIT / SOMETHING NOT RIGHT! 006456 1410 TAD I DPNT /OK, ASSUME CCL CHAIN & SET 006457 3771 DCA I (XDNAM / UP DEVICE NAME 006460 1410 TAD I DPNT 006461 3770 DCA I (XDNAM+1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 33-1 006462 1771 TAD I (XDNAM /EMPTY? 006463 7640 SZA CLA 006464 5271 JMP STSWIT 006465 1367 TAD (0423 /YES, MUST BE DEFAULT NAME-- 006466 3771 DCA I (XDNAM / "DSK" 006467 1366 TAD (1300 006470 3770 DCA I (XDNAM+1 006471 6211 STSWIT, CDF 10 006472 1765 TAD I (7643 /TEST SWITCHES 006473 0120 AND N200 / "/E"? 006474 3020 DCA ERMODE / 0= LONG, NON-0= SHORT 006475 7001 IAC 006476 0765 AND I (7643 / "/L"? [LOAD] 006477 7650 SNA CLA 006500 5307 JMP STSWO /NO, CHECK NEXT 006501 1030 TAD NAM4 /YES, SET DEFAULT EXTENSION 006502 7450 SNA 006503 1364 TAD (1404 / TO ".LD" 006504 3030 DCA NAM4 006505 7001 IAC 006506 5330 JMP STSWEX-2 / & GO SET MODE / 006507 1763 STSWO, TAD I (7644 006510 0362 AND (1000 / "/O"? [OFFSET] 006511 7650 SNA CLA 006512 5320 JMP STSWS /NO, GO CHECK LAST 006513 1761 TAD I (7646 /YES, GET LOW 12 BITS OF 006514 7041 CIA / "=NNNN" AS OFFSET AND 006515 3073 DCA OFFSET / IT UP 006516 7240 STA 006517 5331 JMP STSWEX-1 / & GO SET MODE / 006520 1763 STSWS, TAD I (7644 / "/S"? [SAVE] 006521 0360 AND (40 006522 7650 SNA CLA 006523 5332 JMP STSWEX /NO, WAS NOT ANY THAT COUNT 006524 1030 TAD NAM4 /YES, SET DEFAULT EXTENSION 006525 7450 SNA 006526 1357 TAD (2326 / TO ".SV" 006527 3030 DCA NAM4 006530 7001 IAC / & SET MODE 006531 3044 DCA MODSW /-1=OFF,0=NOR,+1=SV,+2=LD 006532 6201 STSWEX, CDF 0 006533 2021 ISZ TEMP /FILE NAME SPECIFIED? 006534 5773 JMP I (201 / NO, JUST START 006535 3046 DCA CRSWT /YES, SET SWITCH TO CR, 006536 6046 STTLS, TLS / START TTY *** BATCH OPER. 006537 4530 JMS I CRLFI / & DO CR/LF 006540 1030 TAD NAM4 /ANY EXTENSION SPECIFIED? 006541 7650 SNA CLA 006542 7240 STA / NO--ALLOW 3 TRIES: SV, LD, NULL 006543 3022 DCA TEMP1 / ELSE ALLOW ONLY 1 TRY 006544 1030 TAD NAM4 /IF NO EXTENSION SET YET, 006545 7450 SNA 006546 1357 TAD (2326 / SET TO START DEFAULTS WITH SV /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 33-2 006547 3030 DCA NAM4 006550 5756' JMP XFICHN /NOW GO DO FILE LOOKUP / 006551 6046 STERR, TLS /START UP OUTPUT *** BATCH OPER. 006552 5755' JMP ERCY / & GIVE ERROR! 006555 1156 006556 1026 006557 2326 006560 0040 006561 7646 006562 1000 006563 7644 006564 1404 006565 7643 006566 1300 006567 0423 006570 2465 006571 2464 006572 0017 006573 0201 006574 6600 006575 6306 006576 7745 006577 6400 6600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 34 /INITIALIZATION CODE FOR BATCH OPERATION 006600 0000 BATSET, 0 006601 1512 TAD I M1 /TEST BIT 1 OF 07777 FOR "BIP" 006602 7004 RAL / (BATCH-IN-PROGRESS) 006603 7700 SMA CLA 006604 5600 JMP I BATSET / NO, INTERACTIVE MODE 006605 1512 TAD I M1 / YES, GET FIELD BITS OF BATCH 006606 0377 AND (70 / TO GENERATE A "CIF BAT" 006607 1376 TAD (CIF / AND SET UP 3 CALLS: 006610 3307 DCA CBATI / INPUT, 006611 1307 TAD CBATI 006612 3346 DCA CBATO / OUTPUT AND 006613 1307 TAD CBATI 006614 3336 DCA CBATE / ERROR. 006615 1412 BATMOV, TAD I SCANX1 /GET NEXT STORAGE ADDRESS 006616 7450 SNA 006617 5600 JMP I BATSET / 0 = ALL DONE! 006620 3010 DCA DPNT /SET UP POINTER 006621 1412 BATLUP, TAD I SCANX1 /GET A PATCH WORD 006622 7450 SNA 006623 5215 JMP BATMOV / 0 = GROUP END 006624 6201 BATPAT, CDF 0 /CHANGED FOR "TYPEB"!! 006625 3410 DCA I DPNT /PATCH THE WORD 006626 6201 CDF 0 006627 5221 JMP BATLUP /DO IT AGAIN! /"SCOPE MODE" PATCHES FOR RUBOUT HANDLER. INITIAL- / IZATION CODE FIRST CHECKS FOR SCOPE AND THEN FOR / BATCH. THUS, IF BOTH ARE SET, FIRST THINGS WILL BE / SET UP FOR SCOPE AND THEN THEY WILL BE RESET FOR / BATCH. THIS SEQUENCE IS REQUIRED! 006776 6202 006777 0070 4031 SCOPLS, RELOC RUBO 004031* 4303 JMS BTEST /BUFFER NOW EMPTY? 004032* 5207 JMP RENEXT / YES, JUST IGNORE RUBOUT 004033* 7240 STA 004034* 1015 TAD COMIR /NO, BACK UP POINTER 004035* 3015 DCA COMIR 004036* 1015 TAD COMIR /SET UP POINTER FOR TESTING, ALSO 004037* 3016 DCA COMOUT 004040* 4247 JMS RUBO2 /OUTPUT BACKSPACE, SPACE, BACKSPACE 004041* 4563 JMS I GETNI /GET RUBBED OUT CHAR AND TEST 004042* 1035 TAD CHAR 004043* 1104 TAD M240 / FOR A CONTROL CHAR 004044* 7710 SPA CLA 004045* 4247 JMS RUBO2 /YES, ERASE "^" ALSO! 004046* 5207 JMP RENEXT /TRY FOR ANOTHER CHAR 004047* 7402 RUBO2, HLT /MUST BE NON-ZERO!!! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 34-1 004050* 4656 JMS I TYPEAI /OUTPUT A BACKSPACE, 004051* 0210 "H-100 /(CTRL-H) 004052* 4532 SPACE1 / SPACE, 004053* 4656 JMS I TYPEAI / BACKSPACE SEQUENCE TO 004054* 0210 "H-100 / CLEAR OFF SCREEN CHAR 004055* 5647 JMP I RUBO2 004056* 5034 TYPEAI, TYPEA 004057* 0000 0 6657 RELOC BATLS, /PATCHES--ADDRESS-1, CODE, 0 WITH EXTRA 0 FOR END. 006657 4030 RUBO-1 /==== INPUT PATCHES ==== 4031 RELOC RUBO 004031* 3035 DCA CHAR /SAVE NEW CHAR INPUT 004032* 1035 TAD CHAR /IS THIS A FORM-FEED? 004033* 1252 TAD RM214 004034* 7450 SNA 004035* 5313 JMP RKEY+1 / YES, JUST IGNORE IT! 004036* 1253 TAD R2 /NO, THEN IS IT A LINE-FEED? 004037* 7650 SNA CLA 004040* 1254 TAD RLAST / YES, WAS LAST A CARRIAGE-RETURN? 004041* 1105 TAD M215 004042* 7640 SZA CLA 004043* 1035 TAD CHAR /NO TO ONE OR OTHER, USE CHAR. 004044* 3254 DCA RLAST / YES TO BOTH, SET TO 0! 004045* 1254 TAD RLAST /OK, WAS IT A CR-LF PAIR? 004046* 7650 SNA CLA 004047* 5313 JMP RKEY+1 / YES, JUST IGNORE LF! 004050* 5212 JMP REKEY+1 / NO, GO USE THIS CHAR 004051* 5400 BATINI, 5400 /IN THE BATCH FIELD 004052* 7564 RM214, -214 004053* 0002 R2, 2 004054* 0215 RLAST, 215 /!!! CR OF ".R FUTIL" HAS AN LF !! 004055* 0000 0 004056* 4112 RKEY+1-1 6706 RELOC /TO PUT 'CBATI' ON THIS PAGE 6707 CBATI= .+1 /REALLY ON "CIF BAT" 4113 RELOC RKEY+1 004113* 4534 JMS I CTRLI /CHECK FOR CONTROL KEYS 004114* 6202 CIF /*** CIF BAT 004115* 4651 JMS I BATINI /GET A BATCH CHARACTER 004116* 4573 ERC17, ERROR /!!! EOF ON INPUT !!! 004117* 7000 NOP /FILLER FOR INTERACTIVE CTRL-Q 004120* 7000 NOP 004121* 0000 0 004122* 4125 RKEY0-1 4126 RELOC RKEY0 004126* 5313 JMP RKEY+1 /IGNORE RUBOUT UNDER BATCH 004127* 7000 NOP / & RETURN TO CALL+1! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 34-2 004130* 0000 0 004131* 5135 BCTRLC-1 5136 RELOC BCTRLC 005136* 5763 JMP I CTRLCI /CTRL-C, ABORT JOB STREAM! 005137* 0000 0 6724 RELOC /==== OUTPUT PATCHES ==== 006724 0200 201-1 006725 7000 NOP 006726 0000 0 006727 6535 STTLS-1 006730 7000 NOP /ZAP 3 "TLS"S USED FOR STARTUP 006731 0000 0 006732 6550 STERR-1 006733 7000 NOP 006734 0000 0 6735 RELOC /==== ERROR PATCH ==== 006735 0514 XERR4-1 6736 CBATE= . /REALLY ON "CIF BAT" 0515 RELOC XERR4 000515* 6202 CIF /*** CIF BAT 000516* 5522 JMP I N7000 /ABORT TO BATCH FIELD! 000517* 0000 0 6741 RELOC 006741 6623 BATPAT-1 006742 6211 CDF 10 /*** NEXT CODE IN FIELD 1 *** 006743 0000 0 006744 2404 TYPEB-1 6745 RELOC 6746 CBATO= .+1 /REALLY ON "CIF BAT" IFDEF TYPEB </NO PASS1 ERROR! 2405 RELOC TYPEB /*** REALLY IN FIELD 1 *** > 002405* 6211 CDF 10 /*** SET UP RETURN D.F. 002406* 6202 CIF /*** CIF BAT 002407* 4610 JMS I .+1 /OUTPUT A CHARACTER TO LOG 002410* 7400 7400 /BATOUT, IN THE BATCH FIELD 002411* 6201 CDF 0 /*** RESET D.F. 002412* 0000 0 6753 RELOC 006753 0000 0 7000 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 35 7000 *7000 /NEW CODE TO HANDLE 128K SUPPORT 007000 0000 ADFLD, 0 /ADJUSTS BANK AND FIELD FOR CCB PRINTING 007001 1023 TAD TEMP2 007002 0377 AND (76 007003 7112 CLL RTR 007004 7430 SZL 007005 1376 TAD (20 007006 7106 CLL RTL 007007 4775 JMS I (FPRNT 007010 5600 JMP I ADFLD 007011 0000 FPRNTX, 0 /ROUTINE TO PRINT BANK BITS 007012 0374 AND (174 /ISOLATE BANK AND FIELD BITS 007013 3226 DCA FLD 007014 1226 TAD FLD 007015 0373 AND (104 /ISOLATE BANK BITS 007016 7112 CLL RTR /SSWITCH THEM AROUND 007017 7010 RAR 007020 7430 SZL 007021 1372 TAD (4 007022 7112 CLL RTR 007023 4531 DIGIT /PRINT BANK BITS 007024 1226 TAD FLD 007025 5611 JMP I FPRNTX 007026 0000 FLD, 0 007172 0004 007173 0104 007174 0174 007175 1363 007176 0020 007177 0076 0001 FIELD 1 /THE END OF FIELD 0! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36 0000 *10000 /PUT A POINTER HERE! 010000 3542 NXTIOT /ADDR OF NEXT FREE SPACE IN TABLE /ERROR MESSAGES AND ADDRESS LIST. THESE ITEMS RESIDE / UNDER THE USR, REQUIRING THAT THE USR SWAP THEM / WHEN IT IS USED AND THAT THE PROGRAM KICK OUT THE / USR WHEN AN ERROR OCCURS IN LONG ERROR MESSAGE MODE / OR WHEN A "SHOW ERRORS" COMMAND IS GIVEN. IT IS / TO THE ADVANTAGE OF DECTAPE (AND PROBABLY ALSO / FLOPPY DISK) SYSTEMS TO USE SHORT ERROR MESSAGE / MODE TO REDUCE USR SWAPPING IF DOING MANY "FILE" / OR "SET DEVICE ...DDEV..." COMMANDS. 0002 *10002 /MESSAGE ADDRESS AT ERROR CODE NUMBER +1 (AUTO-XR) /LIST OF ADDRESSES OF ERROR MESSAGES 010002 0062 ERMSA 010003 0100 ERMSB 010004 0116 ERMSC 010005 1104 ERMS14 010006 0125 ERMSD 010007 0137 ERMSE 010010 0227 ERMSG 010011 0242 ERMSH 010012 0256 ERMSI 010013 0276 ERMSK 010014 0267 ERMSJ 010015 0322 ERMSXO 010016 0341 ERMSL 010017 0651 ERMSZ 010020 0404 ERMSO 010021 1051 ERMS11 010022 0717 ERMS04 010023 0417 ERMSP 010024 0435 ERMSQ 010025 0456 ERMSR 010026 1030 ERMS09 010027 1003 ERMS08 010030 1071 ERMS13 010031 0501 ERMSS 010032 0523 ERMST 010033 0543 ERMSU 010034 0564 ERMSV 010035 0604 ERMSW 010036 0622 ERMSX 010037 0636 ERMSY 010040 0361 ERMSM 010041 0673 ERMS00 010042 0671 ERMS01 010043 0706 ERMS02 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-1 010044 0704 ERMS03 010045 1037 ERMS10 010046 0150 ERMSF 010047 0171 ERMSGC 010050 0207 ERMSHD 010051 0742 ERMS05 010052 0764 ERMS07 010053 1163 ERMS18 010054 1172 ERMS19 010055 1201 ERMS20 010056 1124 ERMS15 010057 1135 ERMS16 010060 1151 EMSEND, ERMS17 010061 1212 ERMS99 /ERROR MESSAGES: 010062 1114 ERMSA, TEXT &ILLEGAL SINGLE-WORD COMMAND& 010063 1405 010064 0701 010065 1440 010066 2311 010067 1607 010070 1405 010071 5527 010072 1722 010073 0440 010074 0317 010075 1515 010076 0116 010077 0400 010100 1114 ERMSB, TEXT &ILLEGAL MULTI-WORD COMMAND& 010101 1405 010102 0701 010103 1440 010104 1525 010105 1424 010106 1155 010107 2717 010110 2204 010111 4003 010112 1715 010113 1501 010114 1604 010115 0000 010116 2417 ERMSC, TEXT &TOO MANY ")"S& 010117 1740 010120 1501 010121 1631 010122 4042 010123 5142 010124 2300 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-2 010125 1114 ERMSD, TEXT &ILLEGAL FORMAT WORD& 010126 1405 010127 0701 010130 1440 010131 0617 010132 2215 010133 0124 010134 4027 010135 1722 010136 0400 010137 0201 ERMSE, TEXT &BAD FORMAT SYNTAX& 010140 0440 010141 0617 010142 2215 010143 0124 010144 4023 010145 3116 010146 2401 010147 3000 010150 1617 ERMSF, TEXT &NO FILE FOR C.C.B./HEADER REQUEST& 010151 4006 010152 1114 010153 0540 010154 0617 010155 2240 010156 0356 010157 0356 010160 0256 010161 5710 010162 0501 010163 0405 010164 2240 010165 2205 010166 2125 010167 0523 010170 2400 010171 0201 ERMSGC, TEXT &BAD C.C.B (NOT A SAVE FILE)& 010172 0440 010173 0356 010174 0356 010175 0240 010176 5016 010177 1724 010200 4001 010201 4023 010202 0126 010203 0540 010204 0611 010205 1405 010206 5100 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-3 010207 0201 ERMSHD, TEXT &BAD HEADER (NOT A LOAD MODULE)& 010210 0440 010211 1005 010212 0104 010213 0522 010214 4050 010215 1617 010216 2440 010217 0140 010220 1417 010221 0104 010222 4015 010223 1704 010224 2514 010225 0551 010226 0000 010227 1114 ERMSG, TEXT &ILLEGAL ITEM TO SHOW& 010230 1405 010231 0701 010232 1440 010233 1124 010234 0515 010235 4024 010236 1740 010237 2310 010240 1727 010241 0000 010242 1114 ERMSH, TEXT &ILLEGAL SEARCH MODIFIER& 010243 1405 010244 0701 010245 1440 010246 2305 010247 0122 010250 0310 010251 4015 010252 1704 010253 1106 010254 1105 010255 2200 010256 0201 ERMSI, TEXT &BAD SEARCH SYNTAX& 010257 0440 010260 2305 010261 0122 010262 0310 010263 4023 010264 3116 010265 2401 010266 3000 010267 1114 ERMSJ, TEXT &ILLEGAL MODE& 010270 1405 010271 0701 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-4 010272 1440 010273 1517 010274 0405 010275 0000 010276 2305 ERMSK, TEXT &SET OPTION FOLLOWED BY A CR, BAD SYNTAX& 010277 2440 010300 1720 010301 2411 010302 1716 010303 4006 010304 1714 010305 1417 010306 2705 010307 0440 010310 0231 010311 4001 010312 4003 010313 2254 010314 4002 010315 0104 010316 4023 010317 3116 010320 2401 010321 3000 010322 1625 ERMSXO, TEXT &NUMBER OR ILLEGAL SET OPTION& 010323 1502 010324 0522 010325 4017 010326 2240 010327 1114 010330 1405 010331 0701 010332 1440 010333 2305 010334 2440 010335 1720 010336 2411 010337 1716 010340 0000 010341 1625 ERMSL, TEXT &NUMBER OR ILLEGAL OUTPUT OPTION& 010342 1502 010343 0522 010344 4017 010345 2240 010346 1114 010347 1405 010350 0701 010351 1440 010352 1725 010353 2420 010354 2524 010355 4017 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-5 010356 2024 010357 1117 010360 1600 010361 1114 ERMSM, TEXT &ILLEGAL "." IN NAME (FILE OR DEVICE)& 010362 1405 010363 0701 010364 1440 010365 4256 010366 4240 010367 1116 010370 4016 010371 0115 010372 0540 010373 5006 010374 1114 010375 0540 010376 1722 010377 4004 010400 0526 010401 1103 010402 0551 010403 0000 010404 1114 ERMSO, TEXT &ILLEGAL MODIFY FORMAT& 010405 1405 010406 0701 010407 1440 010410 1517 010411 0411 010412 0631 010413 4006 010414 1722 010415 1501 010416 2400 010417 2022 ERMSP, TEXT &PROGRAM OR HARDWARE PROBLEM& 010420 1707 010421 2201 010422 1540 010423 1722 010424 4010 010425 0122 010426 0427 010427 0122 010430 0540 010431 2022 010432 1702 010433 1405 010434 1500 010435 0201 ERMSQ, TEXT &BAD TERMINATOR IN SINGLE ARGUMENT& 010436 0440 010437 2405 010440 2215 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-6 010441 1116 010442 0124 010443 1722 010444 4011 010445 1640 010446 2311 010447 1607 010450 1405 010451 4001 010452 2207 010453 2515 010454 0516 010455 2400 010456 2405 ERMSR, TEXT &TERMINATOR BEFORE LEGAL NUMBER INPUT& 010457 2215 010460 1116 010461 0124 010462 1722 010463 4002 010464 0506 010465 1722 010466 0540 010467 1405 010470 0701 010471 1440 010472 1625 010473 1502 010474 0522 010475 4011 010476 1620 010477 2524 010500 0000 010501 0201 ERMSS, TEXT &BAD TERMINATOR IN MULTIPLE ARGUMENT& 010502 0440 010503 2405 010504 2215 010505 1116 010506 0124 010507 1722 010510 4011 010511 1640 010512 1525 010513 1424 010514 1120 010515 1405 010516 4001 010517 2207 010520 2515 010521 0516 010522 2400 010523 1114 ERMST, TEXT &ILLEGAL CHARACTER IN EXPRESSION& 010524 1405 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-7 010525 0701 010526 1440 010527 0310 010530 0122 010531 0103 010532 2405 010533 2240 010534 1116 010535 4005 010536 3020 010537 2205 010540 2323 010541 1117 010542 1600 010543 1114 ERMSU, TEXT &ILLEGAL USE OF "(" IN EXPRESSION& 010544 1405 010545 0701 010546 1440 010547 2523 010550 0540 010551 1706 010552 4042 010553 5042 010554 4011 010555 1640 010556 0530 010557 2022 010560 0523 010561 2311 010562 1716 010563 0000 010564 1114 ERMSV, TEXT &ILLEGAL OPERATOR IN EXPRESSION& 010565 1405 010566 0701 010567 1440 010570 1720 010571 0522 010572 0124 010573 1722 010574 4011 010575 1640 010576 0530 010577 2022 010600 0523 010601 2311 010602 1716 010603 0000 010604 2417 ERMSW, TEXT &TOO FEW ")"S IN EXPRESSION& 010605 1740 010606 0605 010607 2740 010610 4251 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-8 010611 4223 010612 4011 010613 1640 010614 0530 010615 2022 010616 0523 010617 2311 010620 1716 010621 0000 010622 0411 ERMSX, TEXT &DIVISION BY 0 ATTEMPTED& 010623 2611 010624 2311 010625 1716 010626 4002 010627 3140 010630 6040 010631 0124 010632 2405 010633 1520 010634 2405 010635 0400 010636 2516 ERMSY, TEXT &UNKNOWN HANDLER NAME& 010637 1316 010640 1727 010641 1640 010642 1001 010643 1604 010644 1405 010645 2240 010646 1601 010647 1505 010650 0000 010651 1625 ERMSZ, TEXT &NUMBER OR ILLEGAL ERROR OPTION& 010652 1502 010653 0522 010654 4017 010655 2240 010656 1114 010657 1405 010660 0701 010661 1440 010662 0522 010663 2217 010664 2240 010665 1720 010666 2411 010667 1716 010670 0000 010671 1617 ERMS01, TEXT &NON-& 010672 1655 010673 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-9 0673 *.-1 010673 0601 ERMS00, TEXT &FATAL READ ERROR& 010674 2401 010675 1440 010676 2205 010677 0104 010700 4005 010701 2222 010702 1722 010703 0000 010704 1617 ERMS03, TEXT &NON-& 010705 1655 010706 0000 0706 *.-1 010706 0601 ERMS02, TEXT &FATAL WRITE ERROR& 010707 2401 010710 1440 010711 2722 010712 1124 010713 0540 010714 0522 010715 2217 010716 2200 010717 1704 ERMS04, TEXT &ODD START LOC OR COUNT IN OS/8 MODIFY& 010720 0440 010721 2324 010722 0122 010723 2440 010724 1417 010725 0340 010726 1722 010727 4003 010730 1725 010731 1624 010732 4011 010733 1640 010734 1723 010735 5770 010736 4015 010737 1704 010740 1106 010741 3100 010742 0201 ERMS05, TEXT &BAD ADDRESS/OVERLAY (ODT COMMANDS)& 010743 0440 010744 0104 010745 0422 010746 0523 010747 2357 010750 1726 010751 0522 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-10 010752 1401 010753 3140 010754 5017 010755 0424 010756 4003 010757 1715 010760 1501 010761 1604 010762 2351 010763 0000 /ERMS06, 010764 0201 ERMS07, TEXT &BAD ADDRESS/OVERLAY (MODIFY)& 010765 0440 010766 0104 010767 0422 010770 0523 010771 2357 010772 1726 010773 0522 010774 1401 010775 3140 010776 5015 010777 1704 011000 1106 011001 3151 011002 0000 011003 0122 ERMS08, TEXT &ARGUMENT EXPRESSION NOT TERMINATED BY ")"& 011004 0725 011005 1505 011006 1624 011007 4005 011010 3020 011011 2205 011012 2323 011013 1117 011014 1640 011015 1617 011016 2440 011017 2405 011020 2215 011021 1116 011022 0124 011023 0504 011024 4002 011025 3140 011026 4251 011027 4200 011030 1114 ERMS09, TEXT &ILLEGAL DIGIT& 011031 1405 011032 0701 011033 1440 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-11 011034 0411 011035 0711 011036 2400 011037 0425 ERMS10, TEXT &DUMP HANDLER ERROR& 011040 1520 011041 4010 011042 0116 011043 0414 011044 0522 011045 4005 011046 2222 011047 1722 011050 0000 011051 1625 ERMS11, TEXT &NUMBER OR ILLEGAL DMODE OPTION& 011052 1502 011053 0522 011054 4017 011055 2240 011056 1114 011057 1405 011060 0701 011061 1440 011062 0415 011063 1704 011064 0540 011065 1720 011066 2411 011067 1716 011070 0000 /ERMS12, 011071 1114 ERMS13, TEXT &ILLEGAL USE OF ' OR "& 011072 1405 011073 0701 011074 1440 011075 2523 011076 0540 011077 1706 011100 4047 011101 4017 011102 2240 011103 4200 011104 1501 ERMS14, TEXT &MAPPED MODE--USE LIST, NOT DUMP& 011105 2020 011106 0504 011107 4015 011110 1704 011111 0555 011112 5525 011113 2305 011114 4014 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-12 011115 1123 011116 2454 011117 4016 011120 1724 011121 4004 011122 2515 011123 2000 011124 1617 ERMS15, TEXT &NO ERROR MESSAGES& 011125 4005 011126 2222 011127 1722 011130 4015 011131 0523 011132 2301 011133 0705 011134 2300 011135 1116 ERMS16, TEXT &INPUT ERROR ON MESSAGES& 011136 2025 011137 2440 011140 0522 011141 2217 011142 2240 011143 1716 011144 4015 011145 0523 011146 2301 011147 0705 011150 2300 011151 0517 ERMS17, TEXT &EOF ON BATCH INPUT& 011152 0640 011153 1716 011154 4002 011155 0124 011156 0310 011157 4011 011160 1620 011161 2524 011162 0000 011163 0516 ERMS18, TEXT &ENTER FAILED& 011164 2405 011165 2240 011166 0601 011167 1114 011170 0504 011171 0000 011172 0314 ERMS19, TEXT &CLOSE FAILED& 011173 1723 011174 0540 011175 0601 011176 1114 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 36-13 011177 0504 011200 0000 011201 0425 ERMS20, TEXT &DUMP FILE OVERRUN& 011202 1520 011203 4006 011204 1114 011205 0540 011206 1726 011207 0522 011210 2225 011211 1600 011212 0405 ERMS99, TEXT &DEBUG& 011213 0225 011214 0700 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 37 2000 *12000 /BEGIN ABOVE THE USR AREA /GCCB & GHDR--ROUTINES TO READ IN THE FIRST BLOCK OF THE / LAST FILE SPECIFIED BY THE LAST "FILE" COMMAND, ASSUM- / ING THAT IT WAS A SAVE FILE OR LOAD MODULE, AND DO THE / FEW CHECKS THAT ARE AVAILABLE TO TEST FOR A CCB (CORE- / CONTROL-BLOCK) OR HEADER BLOCK BEFORE LETTING THE DATA / BE USED FOR THE APPROPRIATE PURPOSE. 012000 0000 GCCB, 0 /GET CORE-CONTROL-BLOCK 012001 4316 JMS CCBHDR /DO COMMON TEST & READ-IN 012002 7104 CLL RAL /ADJUSTS FOR 128K INDICATOR BIT 012003 7130 STL RAR 012004 7700 SMA CLA /1ST WORD (-# SEGS) NEG? 012005 5222 JMP GCCERR / NO, CAN'T BE CCB 012006 1777 TAD I (CCBB+3 /GET JOB STATUS WORD 012007 0376 AND (200 /OVERLAY BIT SET (LINK)? 012010 7640 SZA CLA / 0 = NO 012011 1375 TAD (CCBB+140-1 / 1 = YES, START ADDR-1 012012 6201 CDF 0 012013 3774 DCA I (OVLFLG /NO = 0; YES = ADDR-1 012014 6211 CDF 10 012015 1773 TAD I (CCBB+1 /2ND WORD A "CDF CIF X0"? 012016 0372 AND (7603 012017 7041 CIA 012020 1256 TAD GCCCDF 012021 7640 SZA CLA 012022 4771' GCCERR, JMS ERROR1 /LOOKS BAD, JUST EXIT NOW! 012023 2351 ISZ GETSWX /LOOKS OK, 1ST TIME SINCE READ? 012024 5252 JMP GCCB2 /NO, DON'T CHANGE THINGS AGAIN 012025 1375 TAD (CCBB+140-1 /YES, POINT TO OVERLAY TABLE-1 012026 3260 DCA GHDR /TO CHANGE PAGES TO BLOCKS AND ADJUST FIELDS 012027 2260 GCCB1, ISZ GHDR 012030 2260 ISZ GHDR /POINT TO CONTROL WORD 012031 1660 TAD I GHDR /V40A 012032 0370 AND (7 /MOVE FIELDS TO CORRECT POSITION 012033 7104 CLL RAL 012034 7006 RTL 012035 1660 TAD I GHDR /MERGE IN PAGES AS WAS 012036 0367 AND (7770 012037 3660 DCA I GHDR 012040 2260 ISZ GHDR /V40A 012041 2260 ISZ GHDR /SKIP RELATIVE BLOCK 012042 1660 TAD I GHDR /V7C 012043 7001 IAC /ROUND DOWN IN 2 STEPS FOR PDP-8 012044 7110 CLL RAR 012045 3660 DCA I GHDR /STORE A WORD - BLOCKS 012046 1260 TAD GHDR /CHECK FOR END 012047 1366 TAD (-CCBB-177 /V40A 012050 7640 SZA CLA / 0 = DONE 012051 5227 JMP GCCB1 012052 3351 GCCB2, DCA GETSWX /BE SURE SWITCH STAYS CLEAR 012053 1737 TAD I SEGNI /GET -# SEGMENTS /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 37-1 012054 7104 CLL RAL 012055 7130 STL RAR /ADJUSTS FOR 128K INDICATOR BIT 012056 6203 GCCCDF, CDF CIF 0 012057 5600 JMP I GCCB /OK, RETURN VALUE 012060 0000 GHDR, 0 /GET HEADER BLOCK (FORTRAN IV) 012061 1365 TAD (3 /TO SET UP CCBB+6 012062 4316 JMS CCBHDR /DO COMMON TEST & READ-IN 012063 1364 TAD (-2 /1ST WORD MUST BE EXACTLY 2 012064 7640 SZA CLA 012065 5311 JMP HDRERR / NO, CAN'T BE A HEADER 012066 2351 ISZ GETSWX /1ST TIME THRU SINCE READ? 012067 5312 JMP GHDR1 / NO, DON'T CHANGE ANYTHING 012070 3763 DCA I (CCBB+47 /YES, BE SURE THESE WORDS 012071 3762 DCA I (CCBB+50 / ARE 0 FOR USERS 012072 1773 TAD I (CCBB+1 /GET START FIELD WORD 012073 7450 SNA 012074 5311 JMP HDRERR / SHOULD BE 1 THRU 7 012075 7106 CLL RTL /LOOKS OK, MOVE FIELD TO BITS 012076 7004 RAL / 6-8 TO HELP "SHOW HEAD" 012077 3773 DCA I (CCBB+1 012100 1773 TAD I (CCBB+1 /ARE THESE ONLY BITS SET? 012101 0361 AND (7707 012102 7640 SZA CLA 012103 5311 JMP HDRERR / NO, SOMETHING MUST BE BAD 012104 1777 TAD I (CCBB+3 /OK, TEST FIELD OF NEXT FREE 012105 7450 SNA 012106 5311 JMP HDRERR / SHOULD BE 1 THRU 7 012107 0367 AND (7770 012110 7640 SZA CLA 012111 4771' HDRERR, JMS ERROR1 012112 3351 GHDR1, DCA GETSWX /MAKE SURE THIS IS 0 012113 7000 NOP /AC NON-ZERO FOR OK-V7C 012114 6203 CDF CIF 0 012115 5660 JMP I GHDR /OK, BACK TO USER 012116 0000 CCBHDR, 0 012117 1377 TAD (CCBB+3 /CCBB+6 FOR GHDR 012120 6201 CDF 0 012121 3760 DCA I (GETPNT /SET UP POINTER FOR 'GET' 012122 1757 TAD I (DEVAD /GET ADDR OF DEVICE 012123 3350 DCA DEVADX / HANDLER & SAVE HERE 012124 1756 TAD I (RBLK1 /GET START BLOCK NUMBER 012125 7450 SNA 012126 4771' ERCF, JMS ERROR1 / NO FILE!!! GIVE ERROR 012127 6211 CDF 10 012130 3340 DCA GCCBLK /OK, SET UP 1ST BLOCK 012131 1737 TAD I SEGNI /IS SOMETHING IN MEMORY? 012132 7440 SZA 012133 5716 JMP I CCBHDR / YES, RETURN 1ST WORD 012134 6202 CIF 0 012135 4750 JMS I DEVADX /NO, READ 1ST BLOCK OF FILE 012136 0110 0110 /READ; 1 PAGE; FIELD 1 012137 6400 SEGNI, CCBB /BUFFER IS HERE 012140 0000 GCCBLK, 0 /BLOCK NUMBER /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 37-2 012141 5346 JMP RDERX /...BAD NEWS... 012142 7240 STA 012143 3351 DCA GETSWX /OK, SET "JUST READ" SWITCH 012144 1737 TAD I SEGNI /AND GET 1ST WORD 012145 5716 JMP I CCBHDR / 012146 6203 RDERX, CDF CIF 0 /RETURN TO FIELD 0 012147 5755 JMP I (RERROR / FOR READ ERROR 012150 0000 DEVADX, 0 012151 0000 GETSWX, 0 012155 2213 012156 0077 012157 0100 012160 0014 012161 7707 012162 6450 012163 6447 012164 7776 012165 0003 012166 1201 012167 7770 012170 0007 012171 2433 012172 7603 012173 6401 012174 0000 012175 6537 012176 0200 012177 6403 2200 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 38 /CONTINUATION OF OUTPUT COMMANDS AND ROUTINES FROM FIELD 0 /CONTINUATION OF 'SET' 'DDEV' HANDLER 012200 3263 XDDEV1, DCA DDEVAD /SET UP HANDLER ADDRESS 012201 1777 TAD I (GDEV2 012202 3264 DCA DDEVNO / AND DEVICE NUMBER 012203 6211 CDF 10 012204 1264 TAD DDEVNO /LOOK AT DCW FOR SPECIFIED 012205 1376 TAD (7760-1 / DEVICE TO SEE IF FILE 012206 3265 DCA DDCWPT / STRUCTURED. 012207 1665 TAD I DDCWPT /BIT 0 = 1 FOR FILES 012210 7700 SMA CLA 012211 1375 TAD (212 / NO, LINE-AT-A-TIME 012212 3774' DCA DDEVS / YES, BLOCK-AT-A-TIME 012213 1340 TAD DMPADR /OK, INITIALIZE OUTPUT POINTER 012214 3353 DCA DMPPTR 012215 3253 DCA XOSIZ / AND ZERO BLOCK COUNTER 012216 3266 DCA DNAM / AND CLEAR ANY FILE NAME 012217 7001 IAC 012220 3341 DCA DMPBLK / AND SET BLOCK NUMBER TO 1 012221 5773' JMP XDDEV2 /LAST, GO SET UP NAME FOR OUTPUT /CONTINUATION OF EXECUTION OF 'OPEN' COMMAND 012222 1372 XOPEN1, TAD (NAM1-1 /SET UP POINTER TO FIELD 0 FILE 012223 3010 DCA DPNT / NAME (NOTE: XR IN FIELD 1!!!) 012224 1410 TAD I DPNT /MOVE THE FILE NAME UP HERE 012225 3266 DCA DNAM 012226 1410 TAD I DPNT 012227 3267 DCA DNAM+1 012230 1410 TAD I DPNT 012231 3270 DCA DNAM+2 012232 1410 TAD I DPNT /GET THE EXTENSION PART 012233 2771 ISZ I (TEMP1 / WAS ANYTHING REALLY SPECIFIED? 012234 5237 JMP XOPEN2 012235 7200 CLA 012236 1370 TAD (0425 / NO, DEFAULT TO ".DU" 012237 3271 XOPEN2, DCA DNAM+3 012240 1310 TAD XCLNAM /SET UP POINTER TO NAME FOR USR 012241 3252 DCA XOBLK 012242 6211 CDF 10 /SET UP RETURN FIELD 012243 1665 TAD I DDCWPT /CLEAR ANY OPEN FILE ON 012244 0367 AND (7770 / THIS DEVICE SO "OPEN" 012245 3665 DCA I DDCWPT / CAN BE DONE WHENEVER! 012246 6202 CIF 0 /SET UP SUBROUTINE FIELD 012247 1264 TAD DDEVNO /GET DUMP DEVICE NUMBER 012250 4766' JMS USEUSR / AND GO GET USR & CALL IT. 012251 0003 3 /ENTER 012252 0000 XOBLK, 0 /NAME POINTER, BECOMES START BLK 012253 0000 XOSIZ, 0 / BECOMES -# BLOCKS CAN USE 012254 4765' ERC18, JMS ERROR1 /THE ENTER FAILED! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 38-1 012255 1252 TAD XOBLK /OK! SET UP FILE START BLOCK 012256 3341 DCA DMPBLK 012257 1340 TAD DMPADR /INITIALIZE POINTER 012260 3353 DCA DMPPTR 012261 6203 XOCEX, CDF CIF 0 012262 5764' JMP MAIN1 /TRY NEXT COMMAND 012263 7607 DDEVAD, 7607 /INIT ADDRESS TO "SYS:" (SEE ABOVE) 012264 0001 DDEVNO, 1 /INIT THIS TO "SYS:" ALSO. 012265 7760 DDCWPT, 7760 / THIS ALSO 012266 0000 DNAM, 0 /DUMP FILE NAME, INIT TO NULL 012267 0000 0 012270 0000 0 012271 0000 0 /(EXTENSION HERE) /CONTINUATION OF EXECUTION OF 'CLOSE' COMMAND 012272 1266 XCLOS1, TAD DNAM /IS ANY FILE OPEN? 012273 7650 SNA CLA 012274 5261 JMP XOCEX / NO, IGNORE COMMAND 012275 1277 TAD XCTLZ / YES, OUTPUT A CTRL-Z 012276 4315 JMS DMPOUT / AND FILL TO END 012277 0232 XCTLZ, "Z-100 012300 1252 TAD XOBLK /OK, CALCULATE FILE SIZE 012301 7041 CIA 012302 1341 TAD DMPBLK /= NEXT - START 012303 3311 DCA XCLSIZ /= FILE SIZE IN BLOCKS 012304 1264 TAD DDEVNO /GET DUMP DEVICE NUMBER 012305 6202 CIF 0 012306 4766' JMS USEUSR /GET USR AND CALL IT 012307 0004 4 /CLOSE 012310 2266 XCLNAM, DNAM /POINTER TO FILE NAME 012311 0000 XCLSIZ, 0 /SIZE OF NEW FILE 012312 4765' ERC19, JMS ERROR1 /OH NO! CLOSE FAILED! 012313 3266 DCA DNAM /OK, ZAP KNOWLEDGE OF FILE 012314 5261 JMP XOCEX 012315 0000 DMPOUT, 0 /DUMP FILE CHARACTER OUTPUT ROUTINE 012316 3352 DCA DMPCHR /SAVE THE CHARACTER 012317 1352 TAD DMPCHR /PUT IT INTO FILE BUFFER 012320 6211 CDF 10 /(MUST BE SURE!) 012321 3753 DMPNUL, DCA I DMPPTR /INSERT AN 8 BIT CHAR 012322 2353 ISZ DMPPTR 012323 1353 TAD DMPPTR /NOW AT END OF BUFFER? 012324 1363 TAD (-DMPBUF-400 012325 7650 SNA CLA 012326 5335 JMP DMPIT / YES, DUMP BUFFER NOW 012327 1352 TAD DMPCHR /NO, FILL FOLLOWING THIS CHAR? 012330 7041 CIA 012331 1715 TAD I DMPOUT /(THE TEST CHAR @ CALL+1) 012332 7650 SNA CLA 012333 5321 JMP DMPNUL / YES, FILL WITH NULLS! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 38-2 012334 5715 JMP I DMPOUT / NO, EXECUTE FILL CHAR / 012335 6202 DMPIT, CIF 0 012336 4663 JMS I DDEVAD /CALL DUMP FILE HANDLER 012337 4210 4210 /WRITE, 2 PAGES, FIELD 1 012340 6600 DMPADR, DMPBUF 012341 0001 DMPBLK, 1 /BLOCK NUMBER 012342 4765' ERC10, JMS ERROR1 /ERROR ON OUTPUT FILE! 012343 1340 TAD DMPADR /NOW RESET OUTPUT POINTER 012344 3353 DCA DMPPTR 012345 2341 ISZ DMPBLK /INCREMENT BLOCK NUMBER 012346 2253 ISZ XOSIZ /ANY MORE SPACE LEFT? 012347 5715 JMP I DMPOUT / YES, EXIT NOW 012350 3266 DCA DNAM / NO! ZAP DUMP FILE 012351 4765' ERC20, JMS ERROR1 / AND DIE! 012352 0000 DMPCHR, 0 012353 0000 DMPPTR, 0 /CHARACTER OUTPUT POINTER 012354 4002 MSBAD, TEXT " BAD BLOCK" /V40A 012355 0104 012356 4002 012357 1417 012360 0313 012361 0000 012363 0600 012364 0204 012365 2433 012366 0520 012367 7770 012370 0425 012371 0022 012372 0024 012373 2441 012374 2430 012375 0212 012376 7757 012377 1154 2400 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 39 /CONTINUATION OF ROUTINE TO OUTPUT A CHAR TO A DEVICE 012400 1777 TYPE1, TAD I (DMODE /TTY= NONE, PART&-DSWIT, ALL 012401 0776 AND I (DSWIT / SO TEST FOR PART&DSWIT 012402 7640 SZA CLA 012403 5212 JMP TYPE2 /NO OUTPUT TO TTY 012404 1775 TAD I (RTL6 /GET CHARACTER TO OUTPUT 012405 7000 TYPEB, NOP /*** CDF 10 /*** BATCH 012406 6041 TSF /*** CIF BAT /*** CHANGES 012407 5206 JMP .-1 /*** JMS I .+1 /*** LOG 012410 6046 TLS /*** 7400 /*** OUTPUT 012411 7200 CLA /*** CDF 0 012412 7330 TYPE2, STL CLA RAR /=4000 (SET AC BIT 0 FOR TEST) 012413 1776 TAD I (DSWIT /=4000 OR 4001 (DSWIT=1) 012414 0777 AND I (DMODE /FILE= PART&DSWIT OR ALL 012415 7650 SNA CLA 012416 5231 JMP TYPE3 / OUTPUT TO TTY ONLY 012417 1230 TAD DDEVS /FILE STRUCTURED OUTPUT? 012420 6211 CDF 10 012421 7450 SNA 012422 1774 TAD I (DNAM / YES, FILE OPEN? 012423 6201 CDF 0 012424 7650 SNA CLA 012425 5231 JMP TYPE3 / NO TO EITHER 012426 1775 TAD I (RTL6 /OK, GET CHARACTER TO OUTPUT 012427 4773' JMS DMPOUT /OUTPUT IT & TEST FOR END 012430 0000 DDEVS, 0 /TEST: 0=FILE, 212= NON-FILE 012431 6203 TYPE3, CDF CIF 0 012432 5772' JMP TYPEX /BACK AND OUT 012433 0000 ERROR1, 0 /FIELD 1 ERROR ROUTINE HEAD 012434 7200 CLA /CLEAR POSSIBLE JUNK IN AC 012435 1233 TAD ERROR1 /MOVE RETURN ADDR TO FIELD 0 012436 6203 CDF CIF 0 012437 3771 DCA I (XERROR 012440 5770 JMP I (XERROR+1 012441 6201 XDDEV2, CDF 0 /NAME IS OVER THERE 012442 1767 TAD I (NAM1 /MOVE DEVICE NAME INTO STRING 012443 3254 DCA XDDNAM / IN THIS FIELD FOR "SHOW DDEV" 012444 1766 TAD I (NAM2 012445 3255 DCA XDDNAM+1 012446 6203 CDF CIF 0 012447 5765' JMP XSETN /BACK TO 'SET' 012450 0004 MSDDEV, TEXT "@DDEV = SYS@" 012451 0405 012452 2640 012453 7540 012454 2331 012455 2300 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 39-1 012456 0000 2454 XDDNAM= .-3 012457 0004 MSDEV, TEXT "@DEVICE = SYS@" 012460 0526 012461 1103 012462 0540 012463 7540 012464 2331 012465 2300 012466 0000 2464 XDNAM= .-3 /ADDR OF 1ST WORD OF DEVICE NAME /CONTINUATION OF CODE FROM FIELD 0 012467 3264 XDEVM, DCA XDNAM /SET 4 DEVICE NAME CHARS IN 012470 1766 TAD I (NAM2 / OUTPUT MESSAGE 012471 3265 DCA XDNAM+1 012472 6211 CDF 10 012473 3764 DCA I (CCBB /NO C.C.B. OR HEADER PRESENT 012474 6203 CDF CIF 0 012475 7240 STA 012476 3763 DCA I (RBLK /RESET BLOCK NUMBER 012477 5765' JMP XSETN /GO DO NEXT OPTION 012500 4040 MSMOD, TEXT " MOD" 012501 1517 012502 0400 012503 0522 MSERR, TEXT "ERRORS: FUTIL " /V40A 012504 2217 012505 2223 012506 7240 012507 0625 012510 2411 012511 1440 012512 0000 2512 *.-1 /VERSION NUMBER MESSAGE--THE FOLLOWING CODE INSERTS THE / VERSION NUMBER AND PATCH LEVEL SET NEAR THE START OF / THE SOURCE INTO THE VERSION MESSAGE. 012512 2605 MSVER, TEXT "VERSION = ???" /VERS = 2 DIGITS, PATCH = 1 012513 2223 012514 1117 012515 1640 012516 7540 012517 7777 012520 7700 2517 *.-2 0005 VERTEN= VERSION%12 /TENS DIGIT 0000 VERONE= -VERTEN^12+VERSION /ONES DIGIT 012517 6560 VERTEN^100+VERONE+6060 /INSERT TWO DIGITS /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 39-2 012520 0100 PATCH^100 /INSERT PATCH + NULL TERM /ALPHA MONTH NAMES PLUS DUMMIES FOR PDATE SUBROUTINE 012521 4060 MONTHS, TEXT " 00@JAN@FEB@MAR@APR@MAY@JUN@JUL" 012522 6000 012523 1201 012524 1600 012525 0605 012526 0200 012527 1501 012530 2200 012531 0120 012532 2200 012533 1501 012534 3100 012535 1225 012536 1600 012537 1225 012540 1400 012541 0125 TEXT "AUG@SEP@OCT@NOV@DEC@ 13@ 14@ 15" 012542 0700 012543 2305 012544 2000 012545 1703 012546 2400 012547 1617 012550 2600 012551 0405 012552 0300 012553 4061 012554 6300 012555 4061 012556 6400 012557 4061 012560 6500 012563 3057 012564 6400 012565 1600 012566 0026 012567 0025 012570 0455 012571 0454 012572 5043 012573 2315 012574 2266 012575 3762 012576 0052 012577 0053 2600 PAGE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 40 /SYMBOLICS FOR PDP-8 INSTRUCTIONS: 012600 0116 INSLST, TEXT "AND TAD ISZ DCA JMS JMP IOT NOP " 012601 0440 012602 2401 012603 0440 012604 1123 012605 3240 012606 0403 012607 0140 012610 1215 012611 2340 012612 1215 012613 2040 012614 1117 012615 2440 012616 1617 012617 2040 012620 0000 2620 *.-1 / GROUP 1 MICRO-INSTS.: 012620 0314 OP1LST, TEXT "CLL CMA CML IAC BSW RAL RTL RAR RTR " 012621 1440 012622 0315 012623 0140 012624 0315 012625 1440 012626 1101 012627 0340 012630 0223 012631 2740 012632 2201 012633 1440 012634 2224 012635 1440 012636 2201 012637 2240 012640 2224 012641 2240 012642 0000 2642 *.-1 / GROUP 2 MICRO-INST'S: 012642 2315 OP2LST, TEXT "SMA SZA SNL SKP SPA SNA SZL OSR HLT " 012643 0140 012644 2332 012645 0140 012646 2316 012647 1440 012650 2313 012651 2040 012652 2320 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 40-1 012653 0140 012654 2316 012655 0140 012656 2332 012657 1440 012660 1723 012661 2240 012662 1014 012663 2440 012664 0000 2664 *.-1 / EAE MICRO-INST'S: 012664 1521 EAELST, TEXT "MQA MQL SCL MUY DVI NMI SHL ASR LSR SCA " 012665 0140 012666 1521 012667 1440 012670 2303 012671 1440 012672 1525 012673 3140 012674 0426 012675 1140 012676 1615 012677 1140 012700 2310 012701 1440 012702 0123 012703 2240 012704 1423 012705 2240 012706 2303 012707 0140 012710 0000 2710 *.-1 012710 0401 TEXT "DAD DST SWBADPSZDPICDCM SAM " 012711 0440 012712 0423 012713 2440 012714 2327 012715 0201 012716 0420 012717 2332 012720 0420 012721 1103 012722 0403 012723 1540 012724 2301 012725 1540 012726 0000 2726 *.-1 012726 0314 CLANAM, 0314 /"CLA " 012727 0140 0140 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 40-2 012730 1720 OPRMES, 1720 /"OPR " 012731 2240 2240 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41 / IOT INSTRUCTIONS: 012732 6000 IOTTAB, 6000 012733 2313 TEXT "SKON" 012734 1716 012735 0000 012736 6001 6001 012737 1117 TEXT "ION@" 012740 1600 012741 0000 012742 6002 6002 012743 1117 TEXT "IOF@" 012744 0600 012745 0000 012746 6003 6003 012747 2322 TEXT "SRQ@" 012750 2100 012751 0000 012752 6004 6004 012753 0724 TEXT "GTF@" 012754 0600 012755 0000 012756 6005 6005 012757 2224 TEXT "RTF@" 012760 0600 012761 0000 012762 6006 6006 012763 2307 TEXT "SGT@" 012764 2400 012765 0000 012766 6007 6007 012767 0301 TEXT "CAF@" 012770 0600 012771 0000 012772 6010 6010 012773 2220 TEXT "RPE@" 012774 0500 012775 0000 012776 6011 6011 012777 2223 TEXT "RSF@" 013000 0600 013001 0000 013002 6012 6012 013003 2222 TEXT "RRB@" 013004 0200 013005 0000 013006 6014 6014 013007 2203 TEXT "RCF@" 013010 0600 013011 0000 013012 6016 6016 013013 2203 TEXT "RCC@" 013014 0300 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-1 013015 0000 013016 6020 6020 013017 2003 TEXT "PCE@" 013020 0500 013021 0000 013022 6021 6021 013023 2023 TEXT "PSF@" 013024 0600 013025 0000 013026 6022 6022 013027 2003 TEXT "PCF@" 013030 0600 013031 0000 013032 6024 6024 013033 2020 TEXT "PPC@" 013034 0300 013035 0000 013036 6026 6026 013037 2014 TEXT "PLS@" 013040 2300 013041 0000 013042 6030 6030 013043 1303 TEXT "KCF@" 013044 0600 013045 0000 013046 6031 6031 013047 1323 TEXT "KSF@" 013050 0600 013051 0000 013052 6032 6032 013053 1303 TEXT "KCC@" 013054 0300 013055 0000 013056 6034 6034 013057 1322 TEXT "KRS@" 013060 2300 013061 0000 013062 6035 6035 013063 1311 TEXT "KIE@" 013064 0500 013065 0000 013066 6036 6036 013067 1322 TEXT "KRB@" 013070 0200 013071 0000 013072 6040 6040 013073 2406 TEXT "TFL@" 013074 1400 013075 0000 013076 6041 6041 013077 2423 TEXT "TSF@" 013100 0600 013101 0000 013102 6042 6042 013103 2403 TEXT "TCF@" /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-2 013104 0600 013105 0000 013106 6044 6044 013107 2420 TEXT "TPC@" 013110 0300 013111 0000 013112 6045 6045 013113 2423 TEXT "TSK@" 013114 1300 013115 0000 013116 6046 6046 013117 2414 TEXT "TLS@" 013120 2300 013121 0000 013122 6100 6100 013123 0420 TEXT "DPI@" 013124 1100 013125 0000 013126 6101 6101 013127 2315 TEXT "SMP@" 013130 2000 013131 0000 013132 6102 6102 013133 2320 TEXT "SPL@" 013134 1400 013135 0000 013136 6103 6103 013137 0520 TEXT "EPI@" 013140 1100 013141 0000 013142 6104 6104 013143 0315 TEXT "CMP@" 013144 2000 013145 0000 013146 6105 6105 013147 2354 TEXT "S,CMP" 013150 0315 013151 2000 013152 6106 6106 013153 0305 TEXT "CEP@" 013154 2000 013155 0000 013156 6107 6107 013157 2320 TEXT "SPO@" 013160 1700 013161 0000 013162 6110 6110 013163 2203 TEXT "RCTV" 013164 2426 013165 0000 013166 6111 6111 013167 2203 TEXT "RCRL" 013170 2214 013171 0000 013172 6112 6112 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-3 013173 2203 TEXT "RCRH" 013174 2210 013175 0000 013176 6113 6113 013177 2203 TEXT "RCCV" 013200 0326 013201 0000 013202 6114 6114 013203 2203 TEXT "RCGB" 013204 0702 013205 0000 013206 6115 6115 013207 2203 TEXT "RCLC" 013210 1403 013211 0000 013212 6116 6116 013213 2203 TEXT "RCCB" 013214 0302 013215 0000 013216 6130 6130 013217 0314 TEXT "CLZE" 013220 3205 013221 0000 013222 6131 6131 013223 0314 TEXT "CLSK" 013224 2313 013225 0000 013226 6132 6132 013227 0314 TEXT "CLOE" 013230 1705 013231 0000 013232 6133 6133 013233 0314 TEXT "CLAB" 013234 0102 013235 0000 013236 6134 6134 013237 0314 TEXT "CLEN" 013240 0516 013241 0000 013242 6135 6135 013243 0314 TEXT "CLSA" 013244 2301 013245 0000 013246 6136 6136 013247 0314 TEXT "CLBA" 013250 0201 013251 0000 013252 6137 6137 013253 0314 TEXT "CLCA" 013254 0301 013255 0000 013256 6201 6201 013257 0304 TEXT "CDF 00" 013260 0640 013261 6060 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-4 013262 0000 3262 *.-1 013262 6211 6211 013263 0304 TEXT "CDF 10" 013264 0640 013265 6160 013266 0000 3266 *.-1 013266 6221 6221 013267 0304 TEXT "CDF 20" 013270 0640 013271 6260 013272 0000 3272 *.-1 013272 6231 6231 013273 0304 TEXT "CDF 30" 013274 0640 013275 6360 013276 0000 3276 *.-1 013276 6241 6241 013277 0304 TEXT "CDF 40" 013300 0640 013301 6460 013302 0000 3302 *.-1 013302 6251 6251 013303 0304 TEXT "CDF 50" 013304 0640 013305 6560 013306 0000 3306 *.-1 013306 6261 6261 013307 0304 TEXT "CDF 60" 013310 0640 013311 6660 013312 0000 3312 *.-1 013312 6271 6271 013313 0304 TEXT "CDF 70" 013314 0640 013315 6760 013316 0000 3316 *.-1 013316 6202 6202 013317 0311 TEXT "CIF 00" 013320 0640 013321 6060 013322 0000 3322 *.-1 013322 6212 6212 013323 0311 TEXT "CIF 10" 013324 0640 013325 6160 013326 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-5 3326 *.-1 013326 6222 6222 013327 0311 TEXT "CIF 20" 013330 0640 013331 6260 013332 0000 3332 *.-1 013332 6232 6232 013333 0311 TEXT "CIF 30" 013334 0640 013335 6360 013336 0000 3336 *.-1 013336 6242 6242 013337 0311 TEXT "CIF 40" 013340 0640 013341 6460 013342 0000 3342 *.-1 013342 6252 6252 013343 0311 TEXT "CIF 50" 013344 0640 013345 6560 013346 0000 3346 *.-1 013346 6262 6262 013347 0311 TEXT "CIF 60" 013350 0640 013351 6660 013352 0000 3352 *.-1 013352 6272 6272 013353 0311 TEXT "CIF 70" 013354 0640 013355 6760 013356 0000 3356 *.-1 013356 6203 6203 013357 0304 TEXT "CDIF00" 013360 1106 013361 6060 013362 0000 3362 *.-1 013362 6213 6213 013363 0304 TEXT "CDIF10" 013364 1106 013365 6160 013366 0000 3366 *.-1 013366 6223 6223 013367 0304 TEXT "CDIF20" 013370 1106 013371 6260 013372 0000 3372 *.-1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-6 013372 6233 6233 013373 0304 TEXT "CDIF30" 013374 1106 013375 6360 013376 0000 3376 *.-1 013376 6243 6243 013377 0304 TEXT "CDIF40" 013400 1106 013401 6460 013402 0000 3402 *.-1 013402 6253 6253 013403 0304 TEXT "CDIF50" 013404 1106 013405 6560 013406 0000 3406 *.-1 013406 6263 6263 013407 0304 TEXT "CDIF60" 013410 1106 013411 6660 013412 0000 3412 *.-1 013412 6273 6273 013413 0304 TEXT "CDIF70" 013414 1106 013415 6760 013416 0000 3416 *.-1 013416 6204 6204 013417 0311 TEXT "CINT" 013420 1624 013421 0000 013422 6214 6214 013423 2204 TEXT "RDF@" 013424 0600 013425 0000 013426 6224 6224 013427 2211 TEXT "RIF@" 013430 0600 013431 0000 013432 6234 6234 013433 2211 TEXT "RIB@" 013434 0200 013435 0000 013436 6244 6244 013437 2215 TEXT "RMF@" 013440 0600 013441 0000 013442 6254 6254 013443 2311 TEXT "SINT" 013444 1624 013445 0000 013446 6264 6264 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-7 013447 0325 TEXT "CUF@" 013450 0600 013451 0000 013452 6274 6274 013453 2325 TEXT "SUF@" 013454 0600 013455 0000 013456 6550 6550 013457 0606 TEXT "FFST" 013460 2324 013461 0000 013462 6551 6551 013463 0620 TEXT "FPINT" 013464 1116 013465 2400 013466 6552 6552 013467 0620 TEXT "FPICL" 013470 1103 013471 1400 013472 6553 6553 013473 0620 TEXT "FPCOM" 013474 0317 013475 1500 013476 6554 6554 013477 0620 TEXT "FPHLT" 013500 1014 013501 2400 013502 6555 6555 013503 0620 TEXT "FPST" 013504 2324 013505 0000 013506 6556 6556 013507 0620 TEXT "FPRST" 013510 2223 013511 2400 013512 6557 6557 013513 0620 TEXT "FPIST" 013514 1123 013515 2400 013516 6561 6561 013517 0615 TEXT "FMODE" 013520 1704 013521 0500 013522 6563 6563 013523 0615 TEXT "FMRB" 013524 2202 013525 0000 013526 6564 6564 013527 0615 TEXT "FMRP" 013530 2220 013531 0000 013532 6565 6565 013533 0615 TEXT "FMDO" 013534 0417 013535 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 41-8 013536 6567 6567 013537 0620 TEXT "FPEP" 013540 0520 013541 0000 013542 0000 NXTIOT, ZBLOCK 200 /LEAVE ROOM FOR EXPANSION 013742 0000 0 /TABLE TERMINATOR /CODES MAY BE ADDED TO THE TABLE IN THE SPACE LEFT BY THE / "ZBLOCK 200". SINCE EACH ENTRY REQUIRES 4 WORDS (THE / ACTUAL CODE IN THE FIRST WORD AND UP TO 6 PACKED ASCII / CHARACTERS IN THE NEXT THREE WORDS, PADDED WITH TRAIL- / ING 0'S), THERE IS ROOM FOR 40 OCTAL (32 DECIMAL) IOTS / AND THEIR NAMES. THESE CAN BE PATCHED IN DIRECTLY / USING THE PROGRAM ITSELF. **** NOTE THAT THE CONTENTS / OF LOCATION 10000 POINT TO THE FIRST FREE ENTRY. **** /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 42 /SYMBOLICS FOR FPP-12/8A INSTRUCTIONS 013743 4040 MSBASE, TEXT " B+" 013744 0253 013745 0000 013746 4540 MSINDI, TEXT "% B+" 013747 0253 013750 0000 013751 1216 MSJNX, TEXT "JNX " 013752 3040 013753 4000 /THE FOLLOWING STRINGS ARE PADDED WITH "@"S IN PROPER / PLACES TO FORCE WORD ALIGNMENT AS NEEDED. 013754 1405 TEXT "LEA@" /+1 WORD 0000 013755 0100 013756 0000 013757 0614 FPPINS, TEXT "FLDA@@FADD@@FSUB@@FDIV" 013760 0401 013761 0000 013762 0601 013763 0404 013764 0000 013765 0623 013766 2502 013767 0000 013770 0604 013771 1126 013772 0000 013773 0615 TEXT "FMUL@@FADDM@FSTA@@FMULM" 013774 2514 013775 0000 013776 0601 013777 0404 014000 1500 014001 0623 014002 2401 014003 0000 014004 0615 014005 2514 014006 1500 014007 2516 TEXT "UNUSEDSTARTE" 014010 2523 014011 0504 014012 2324 014013 0122 014014 2405 014015 0000 4015 *.-1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 42-1 014015 0616 FPOP00, TEXT "FNOP@@FEXIT@FPAUSEFCLA@@FNEG" 014016 1720 014017 0000 014020 0605 014021 3011 014022 2400 014023 0620 014024 0125 014025 2305 014026 0603 014027 1401 014030 0000 014031 0616 014032 0507 014033 0000 014034 0616 TEXT "FNORM@STARTFSTARTDJAC@@" 014035 1722 014036 1500 014037 2324 014040 0122 014041 2406 014042 2324 014043 0122 014044 2404 014045 1201 014046 0300 014047 0000 014050 0114 FPXR1S, TEXT "ALN ATX XTA " 014051 1640 014052 0124 014053 3040 014054 3024 014055 0140 014056 0000 014057 0104 FPXR2S, TEXT "ADDX *,@LDX *,@" 014060 0430 014061 4052 014062 5400 014063 1404 014064 3040 014065 5254 014066 0000 014067 2422 FOP134, TEXT "TRAP4 TRAP3 SETX SETB JSA @JSR " 014070 0120 014071 6440 014072 2422 014073 0120 014074 6340 014075 2305 014076 2430 014077 4040 014100 2305 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 42-2 014101 2402 014102 4040 014103 1223 014104 0140 014105 4000 014106 1223 014107 2240 014110 4000 014111 0521 FPCOND, TEXT "EQGELEA@NELTGTAL" 014112 0705 014113 1405 014114 0100 014115 1605 014116 1424 014117 0724 014120 0114 014121 0000 /CONTROL TABLES FOR FPP INSTRUCTION DECODING 014122 0007 FPPMO0, 7 /MAJOR SUB-OP-CODE OF SPECIALS 014123 0006 6 014124 0005 5 014125 0004 4 014126 0003 3 014127 0002 2 014130 0001 1 014131 0000 0 /END & FALL-OUT POINT 014132 4756 FPPMOJ, SPCOP7 014133 4757 SPCOP6 014134 4747 SPCOP5 014135 4732 SPCOP4 014136 4731 SPCOP3 014137 4744 SPCOP2 014140 4717 SPCOP1 014141 0170 FPPOP0, 170 /MINOR SUB-OP-CODE OF SUB-OP-CODE 014142 0160 160 / 0 SPECIALS 014143 0150 150 014144 0140 140 014145 0130 130 014146 0120 120 014147 0110 110 014150 0100 100 014151 0070 70 014152 0060 60 014153 0050 50 014154 0040 40 014155 0030 30 014156 0020 20 014157 0010 10 014160 0000 00 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 42-3 014161 4677 FPPOPJ, SPNUSE /ALL UNUSED POSSIBILITIES 014162 4677 SPNUSE 014163 4677 SPNUSE 014164 4677 SPNUSE 014165 4677 SPNUSE 014166 4677 SPNUSE 014167 4710 SPOP11 014170 4707 SPOP10 014171 4677 SPNUSE 014172 4677 SPNUSE 014173 4675 SPOP05 014174 4670 SPOP04 014175 4701 SPO123 014176 4701 SPO123 014177 4701 SPO123 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 43 /MESSAGES: 014200 4075 MS01, TEXT " = " 014201 4040 014202 0000 014203 0023 MS07, 0023 /"SMASK = " 014204 1501 MS02, TEXT "MASK = " 014205 2313 014206 4075 014207 4000 014210 0102 MS03, TEXT "ABS. LOC = " 014211 2356 014212 4014 014213 1703 014214 4075 014215 4000 014216 2520 MS04, TEXT "UPPER = " 014217 2005 014220 2240 014221 7540 014222 0000 014223 1417 MS05, TEXT "LOWER = " 014224 2705 014225 2240 014226 7540 014227 0000 014230 0617 MS06, TEXT "FORMAT = " 014231 2215 014232 0124 014233 4075 014234 4000 014235 0411 MS08, TEXT "DIRECTORY" 014236 2205 014237 0324 014240 1722 014241 3100 014242 1706 MS09, TEXT "OFFSET = " 014243 0623 014244 0524 014245 4075 014246 4000 014247 1517 MS10, TEXT "MODE = " 014250 0405 014251 4075 014252 4000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 43-1 014253 0303 MS11, TEXT "CCB:" 014254 0272 014255 0000 014256 1704 MS12, TEXT "ODT LOC = " 014257 2440 014260 4014 014261 1703 014262 4075 014263 4000 014264 7240 MS13, TEXT ": " 014265 4040 014266 0000 014267 4040 MS14, TEXT " CORE SEGS: " 014270 0317 014271 2205 014272 4023 014273 0507 014274 2372 014275 4040 014276 4000 014277 1417 MS15, TEXT "LOOKUP FAILED" 014300 1713 014301 2520 014302 4006 014303 0111 014304 1405 014305 0400 014306 0620 MS16, TEXT "FPP" 014307 2000 014310 4001 MS17, TEXT " AT " 014311 2440 014312 0000 014313 4040 MS18, TEXT " SA = " 014314 2301 014315 4075 014316 4000 014317 5440 MS19, TEXT ", JSW = " 014320 4012 014321 2327 014322 4075 014323 4000 014324 2205 MS20, TEXT "REL. LOC = " 014325 1456 014326 4014 014327 1703 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 43-2 014330 4075 014331 4000 014332 2001 MS21, TEXT "PACKED" 014333 0313 014334 0504 014335 0000 014336 0123 MS22, TEXT "ASCII" 014337 0311 014340 1100 014341 1723 MS23, TEXT "OS/8" 014342 5770 014343 0000 014344 2516 MS24, 2516 /"UNSIGNED" 014345 2311 MS25, TEXT "SIGNED" 014346 0716 014347 0504 014350 0000 014351 1703 MS26, TEXT "OCTAL" 014352 2401 014353 1400 014354 1706 MS27, TEXT "OFFSET" 014355 0623 014356 0524 014357 0000 014360 2301 MS28, TEXT "SAVE" 014361 2605 014362 0000 014363 1617 MS29, TEXT "NORMAL" 014364 2215 014365 0114 014366 0000 014367 1725 MS30, TEXT "OUTPUT = " 014370 2420 014371 2524 014372 4075 014373 4000 014374 2004 MS31, TEXT "PDP" 014375 2000 014376 0214 MS32, TEXT "BLOCK = " 014377 1703 014400 1340 014401 7540 014402 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 43-3 014403 5140 MS33, TEXT ") " 014404 4000 014405 1417 MS34, TEXT "LOAD" 014406 0104 014407 0000 014410 0203 MS35, TEXT "BCD" 014411 0400 014412 0231 MS36, TEXT "BYTE" 014413 2405 014414 0000 014415 0611 MS37, TEXT "FILLER = " 014416 1414 014417 0522 014420 4075 014421 4000 014422 1005 MS38, TEXT "HEADER:" 014423 0104 014424 0522 014425 7200 014426 5440 MS39, TEXT ", NEXT WORD = " 014427 1605 014430 3024 014431 4027 014432 1722 014433 0440 014434 7540 014435 0000 014436 5440 MS40, TEXT ", LOAD V " 014437 1417 014440 0104 014441 4026 014442 4000 014443 5440 MS41, TEXT ", E.P. REQ'D" 014444 0556 014445 2056 014446 4022 014447 0521 014450 4704 014451 0000 014452 4040 MS42, TEXT " OVLYS START BLOCK LENGTH" 014453 1726 014454 1431 014455 2340 014456 2324 014457 0122 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 43-4 014460 2440 014461 0214 014462 1703 014463 1340 014464 1405 014465 1607 014466 2410 014467 0000 014470 3023 MS43, TEXT "XS237" /WAS** TEXT "XS240" 014471 6263 014472 6700 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 44 /MAIN LOOP CHARACTER LIST 014473 0243 CCHARL, "# 014474 0244 "$ 014475 0245 "% 014476 0246 "& 014477 0272 ": 014500 0274 "< 014501 0275 "= 014502 0276 "> 014503 0277 "? 014504 0300 "@ 014505 0333 "[ 014506 0334 "\ 014507 0335 "] 014510 0257 "/ 014511 0241 "! 014512 0253 "+ 014513 0255 "- 014514 0273 "; 014515 0336 "^ 014516 0337 "_ /'TYPE' COMMAND LIST 014517 0211 TYPEL, 211 /TAB 014520 0233 233 /ALT MODES 014521 0375 375 014522 0376 376 /'XMODIF' CHECK LIST 014523 0215 TYPEM, 215 /CR 014524 0212 212 /LF 014525 0000 0 /ADDRESSES FOR 'OMODES' 014526 3415 OTABLE, BPRT /# 014527 3511 OSTYPE /$ 014530 3517 BYTEO /% 014531 5352 XS240O /& /IS XS237** 014532 3423 SGNDP /: 014533 3400 OPRT /< 014534 3436 DPRT /= 014535 4221 PDPOUT /> 014536 3163 DIROUT /? 014537 5000 PDATE /@ 014540 2163 ASCII /[ 014541 4600 FPPOUT /\ 014542 3621 PACOUT /] /MAIN LOOP JUMP LIST - RESPOND TO SPECIAL CHAR 014543 0255 COPSL, OMODES 014544 0255 OMODES 014545 0255 OMODES 014546 0255 OMODES 014547 0255 OMODES 014550 0255 OMODES /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 44-1 014551 0255 OMODES /SEE ABOVE LIST 014552 0255 OMODES 014553 0255 OMODES 014554 0255 OMODES 014555 0255 OMODES 014556 0255 OMODES 014557 0255 OMODES 014560 0237 SLASH 014561 0312 EXCL 014562 0344 PLUS 014563 0345 MINUS 014564 0310 SEMIC 014565 0274 UPARR 014566 0271 BACKAR 014567 4024 RESPC 014570 0253 ALTMOD 014571 0253 ALTMOD 014572 0253 ALTMOD 014573 0216 CRCR 014574 0311 LFLF /'TYPE' JUMP LIST 014575 5107 TYPEOP, TYPTAB 014576 5102 TYPALT 014577 5102 TYPALT 014600 5102 TYPALT 014601 5105 TYPCR 014602 5106 TYPCR+1 /COMMAND WORD LIST FOR COMMANDS NOT FOLLOWED BY CR 014603 0526 CWORDL, TEXT "EVE@DUD@LIL@FIF@OPSCSTSMWOW@MOM@SHSES@WRIFEXCOC@" 014604 0500 014605 0425 014606 0400 014607 1411 014610 1400 014611 0611 014612 0600 014613 1720 014614 2303 014615 2324 014616 2315 014617 2717 014620 2700 014621 1517 014622 1500 014623 2310 014624 2305 014625 2300 014626 2722 014627 1106 014630 0530 014631 0317 014632 0300 014633 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 44-2 /MAIN LOOP JUMP LIST - EXECUTE A COMMAND 014634 0400 WOPSL, XVAL 014635 0400 XVAL 014636 0603 XDUMP 014637 0603 XDUMP 014640 0632 XLIST0 014641 0632 XLIST0 014642 1024 XFILE 014643 1024 XFILE 014644 1000 XOPEN 014645 0600 XSCAN 014646 2216 XSTRIN 014647 2600 XSMASK 014650 2000 XWORD 014651 2000 XWORD 014652 2417 XMODIF 014653 2417 XMODIF 014654 1210 XSHOW 014655 1602 XSET 014656 1602 XSET 014657 2400 XWRARG 014660 1713 XIF 014661 5161 XEXIT 014662 0204 MAIN1 /COMMENT 014663 0204 MAIN1 /LISTS FOR COMMANDS FOLLOWED BY A CR. 014664 2205 CWORL2, TEXT "REWRENEXCLCOC@" 014665 2722 014666 0516 014667 0530 014670 0314 014671 0317 014672 0300 014673 0000 014674 2200 WOPSLL, XREWIN /REWIND 014675 2403 XWRITE /WRITE 014676 0204 MAIN1 /END 014677 5161 XEXIT /EXIT 014700 1004 XCLOSE /CLOSE 014701 0204 MAIN1 /COMMENT 014702 0204 MAIN1 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 45 /'XFORM' LISTS ----ORDER IS CRITICAL---- 014703 2001 FORML, TEXT "PAP@ASA@OSOSXSX@UNU@SIS@OCO@BCB@BYBYPDPDFPF@DID@" 014704 2000 014705 0123 014706 0100 014707 1723 014710 1723 014711 3023 014712 3000 014713 2516 014714 2500 014715 2311 014716 2300 014717 1703 014720 1700 014721 0203 014722 0200 014723 0231 014724 0231 014725 2004 014726 2004 014727 0620 014730 0600 014731 0411 014732 0400 014733 0000 014734 0740 FOPSL, XFCHR /PACKED (ASCII) 014735 0740 XFCHR 014736 0740 XFCHR /ASCII 014737 0740 XFCHR 014740 0740 XFCHR /OS/8 (ASCII, PACKED) 014741 0740 XFCHR 014742 0740 XFCHR /XS237** XS240 (ASCII, PACKED) 014743 0740 XFCHR 014744 0737 XFNUM /UNSIGNED (DECIMAL) 014745 0737 XFNUM 014746 0737 XFNUM /SIGNED (DECIMAL) 014747 0737 XFNUM 014750 0737 XFNUM /OCTAL 014751 0737 XFNUM 014752 0737 XFNUM /BCD 014753 0737 XFNUM 014754 0737 XFNUM /BYTE (OCTAL) 014755 0737 XFNUM 014756 0736 XFSYM /PDP (SYMBOLIC) 014757 0736 XFSYM 014760 0736 XFSYM /FPP (SYMBOLIC) 014761 0736 XFSYM 014762 0736 XFSYM /DIRECTORY 014763 0736 XFSYM / ROUTINE ADDRESS LIST /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 45-1 014764 3621 FTABLE, PACOUT 014765 2163 ASCII 014766 3511 OSTYPE 014767 5352 XS240O /XS237** 014770 3436 DPRT 014771 3423 SGNDP 014772 3400 OPRT 014773 3415 BPRT 014774 3517 BYTEO 014775 4214 PDPDMP 014776 4400 FPPDMP 014777 3155 DIRDMP /'XSHFMT' DESCRIPTOR ADDRESS LIST 015000 4332 FMTLS, MS21 /PACKED ASCII 015001 4336 MS22 /ASCII 015002 4341 MS23 /OS/8 ASCII 015003 4470 MS43 /XS237** XS240 ASCII 015004 4344 MS24 /UNSIGNED DECIMAL 015005 4345 MS25 /SIGNED DECIMAL 015006 4351 MS26 /OCTAL 015007 4410 MS35 /BCD 015010 4412 MS36 /BYTE 015011 4374 MS31 /PDP SYMBOLIC 015012 4306 MS16 /FPP SYMBOLIC 015013 4235 MS08 /DIRECTORY /'XMODIF' COMMAND LIST 015014 2001 MODIFL, TEXT "PAP@ASA@OSXSNUN@" 015015 2000 015016 0123 015017 0100 015020 1723 015021 3023 015022 1625 015023 1600 015024 0000 /'XMODIF' JUMP LIST 015025 2620 MODIFO, XPAC0 /PACKED 015026 2620 XPAC0 015027 2537 XASC1 /ASCII 015030 2537 XASC1 015031 2634 XOPS1 /OS/8 015032 2617 XXS20 /XS237** XS240 015033 2514 XNUM2 /NUMERIC 015034 2514 XNUM2 015035 2436 MODADS, XMOD0 /MODIFL TEST LIST 015036 2436 XMOD0 015037 2436 XMOD0 015040 2436 XMOD0 015041 2436 XMOD0 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 45-2 015042 2436 XMOD0 015043 2436 XMOD0 015044 2436 XMOD0 015045 2436 XMOD0 015046 2001 MODDLS, TEXT "PAASOSXSNUNUNUNUNUNUNUNU" /DEFAULT LIST 015047 0123 015050 1723 015051 3023 015052 1625 015053 1625 015054 1625 015055 1625 015056 1625 015057 1625 015060 1625 015061 1625 015062 0000 /'XMODIF' CHARACTER JUMP LIST 015063 2465 MCHARO, XMODCR /CR, END 015064 4007 RENEXT /LF, IGNORE /'XIF' CHARACTER JUMP LIST 015065 1731 IFSKPO, XIFCR /CR, END OF LINE 015066 4007 RENEXT /LF, IGNORE /XNUM JUMP LIST 015067 2512 NUMOPS, XNUM1 /, 015070 5722 ERCQ /: 015071 5722 ERCQ /. 015072 2513 XNUM1+1 /SPACE 015073 2524 XNUM3 /CR /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 46 /'XSHOW' COMMAND LIST 015074 0214 SHOWL, TEXT "BLB@ODCCC@HEH@ABA@RER@SMVE" 015075 0200 015076 1704 015077 0303 015100 0300 015101 1005 015102 1000 015103 0102 015104 0100 015105 2205 015106 2200 015107 2315 015110 2605 015111 0000 5111 *.-1 /'XSET' COMMAND LIST 015111 0404 SETLST, TEXT "DDFOF@OUO@ERE@OFUPLOTEDEDMMOFIMAM@ 015112 0617 015113 0600 015114 1725 015115 1700 015116 0522 015117 0500 015120 1706 015121 2520 015122 1417 015123 2405 015124 0405 015125 0415 015126 1517 015127 0611 015130 1501 015131 1500 015132 0000 /'XSHOW' JUMP LIST 015133 1200 SHOWOP, XSHBLK /BLOCK 015134 1200 XSHBLK 015135 1236 XSHODL /ODT LOC 015136 1400 XSHCCB /CCB (CORE CONTROL BLOCK) 015137 1400 XSHCCB 015140 1455 XSHHDR /HEADER (F4 LOAD MODULE) 015141 1455 XSHHDR 015142 1250 XSHABS /ABS. LOC 015143 1250 XSHABS 015144 1243 XSHREL /REL. LOC 015145 1243 XSHREL 015146 1321 XSHSMS /SMASK 015147 1216 XSHVER /VERSION 015150 1360 XSHDDEV /DDEV 015151 1277 XSHFMT /FORMAT 015152 1277 XSHFMT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 46-1 015153 1314 XSHOUT /OUTPUT 015154 1314 XSHOUT 015155 1530 XSHERR /ERRORS 015156 1530 XSHERR 015157 1225 XSHOFF /OFFSET 015160 1265 XSHUPP /UPPER 015161 1272 XSHLOW /LOWER 015162 1215 ERCG /TEMP--NOT ALLOWED FOR SHOW 015163 1347 XSHDEV /DEVICE 015164 1215 ERCG /DMODE--NOT ALLOWED FOR SHOW 015165 1307 XSHMOD /MODE 015166 1232 XSHFIL /FILLER 015167 1221 XSHMSK /MASK 015170 1221 XSHMSK /'XSET' JUMP LIST 015171 1134 SETJMP, XDDEV /DDEV (DUMP DEVICE) 015172 0754 XFORM /FORMAT 015173 0754 XFORM 015174 1624 XOUTS /OUTPUT 015175 1624 XOUTS 015176 1647 XEMODE /ERROR (MODE) 015177 1647 XEMODE 015200 1642 XOFFS /OFFSET 015201 1660 XUPP /UPPER 015202 1663 XLOW /LOWER 015203 1705 XTEMP /TEMP 015204 1121 XDEV /DEVICE 015205 1612 XDMODE /DMODE (DUMP MODE) 015206 1666 XMODE /MODE 015207 1701 XFILL /FILLER 015210 1636 XMASK /MASK 015211 1636 XMASK /'XEMODE' COMMAND LIST 015212 2310 XELST, TEXT "SHS@LOL@" 015213 2300 015214 1417 015215 1400 015216 0000 /'XEMODE' BRANCH LIST 015217 1655 XEOPS, XEMOD1 /SHORT 015220 1655 XEMOD1 015221 1656 XEMOD1+1 /LONG 015222 1656 XEMOD1+1 /'XOUTS' LISTS 015223 0620 XOLST, TEXT "FPF@PDP@OCO@" 015224 0600 015225 2004 015226 2000 015227 1703 015230 1700 015231 0000 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 46-2 015232 1632 XOOPS, XOUTS1-1 /FPP SYMBOLIC 015233 1632 XOUTS1-1 015234 1633 XOUTS1 /PDP SYMBOLIC 015235 1633 XOUTS1 015236 1634 XOUTS1+1 /OCTAL 015237 1634 XOUTS1+1 /'XMODE' COMMAND LIST 015240 1706 MODLST, TEXT "OFO@SAS@LOL@NON@" 015241 1700 015242 2301 015243 2300 015244 1417 015245 1400 015246 1617 015247 1600 015250 0000 /'XMODE' JUMP LIST 015251 1674 MODOPS, XMODS-1 /OFFSET 015252 1674 XMODS-1 015253 1676 XMODS+1 /SAVE FILE 015254 1676 XMODS+1 015255 1675 XMODS /LOAD MODULE 015256 1675 XMODS 015257 1677 XMODS+2 /NORMAL 015260 1677 XMODS+2 /'XDMODE' LISTS 015261 0114 XDMLST, TEXT "ALPANO" 015262 2001 015263 1617 015264 0000 015265 1620 XDMOPS, XDMODS-1 /ALL 015266 1621 XDMODS /PART 015267 1622 XDMODS+1 /NONE /LIST OF DESCRIPTOR ADDRESSES FOR "SHOW MODE" 015270 4354 MS27 /-1 = "OFFSET" 015271 4363 MODELS, MS29 / 0 = "NORMAL" 015272 4360 MS28 /+1 = "SAVE" 015273 4405 MS34 /+2 = "LOAD" /LIST OF DESCRIPTOR ADDRESSES FOR "SHOW OUTPUT" 015274 4306 MS16 /-1 = "FPP (SYMBOLIC)" 015275 4351 OUTLS, MS26 / 0 = "OCTAL" 015276 4374 MS31 /+1 = "PDP (SYMBOLIC)" /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 46-3 /'XWORD' COMMAND LIST 015277 2516 XWORCL, TEXT "UNU@" 015300 2500 015301 0000 5301 *.-1 /'XSTRIN' COMMAND LIST 015301 0622 STRLST, TEXT "FRF@TOT@ABA@MAM@ME" 015302 0600 015303 2417 015304 2400 015305 0102 015306 0100 015307 1501 015310 1500 015311 1505 015312 0000 /'XWORD' JUMP LIST 015313 2004 XWOROP, XWOR2 /UNEQUAL 015314 2004 XWOR2 015315 2071 XWSFRM /FROM 015316 2071 XWSFRM 015317 2074 XWSTO /TO 015320 2074 XWSTO 015321 2066 XWSABS /ABSOLUTE 015322 2066 XWSABS 015323 2015 ERCH /MASKED--NO! 015324 2016 XWOR7 /MEMREF 015325 2016 XWOR7 /'XSTRIN' JUMP LIST 015326 2071 STROPS, XWSFRM /FROM 015327 2071 XWSFRM 015330 2074 XWSTO /TO 015331 2074 XWSTO 015332 2066 XWSABS /ABSOLUTE 015333 2066 XWSABS 015334 2220 XSTR0 /MASKED 015335 2220 XSTR0 015336 2015 ERCH /MEMREF--NO! /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 47 /LIST OF TERMINATORS, IN ORDER, FOR 'EVAL' 015337 0241 TERMS, "! /1 015340 0246 "& /2 015341 0253 "+ /3 015342 0255 "- /4 015343 0257 "/ /5 015344 0252 "* /6 015345 0250 "( /7 015346 0251 ") /10 015347 0215 215 /CR: 11 015350 0000 0 /'GWORD' & 'ACCEPT' COMMAND LISTS 015351 0271 GWLST1, "9 015352 0270 "8 015353 0267 "7 015354 0266 "6 015355 0265 "5 015356 0264 "4 015357 0263 "3 015360 0262 "2 015361 0261 "1 015362 0260 "0 015363 0204 204 /^D 015364 0213 213 /^K 015365 0242 "" 015366 0247 "' 015367 0250 "( 015370 0240 GWLST2, 240 /SPACE 015371 0215 215 /CR 015372 0000 0 /'GWORD' JUMP LISTS 015373 3154 GWOPS1, GWD4 / 9 - A NUMBER 015374 3154 GWD4 / 8 - A NUMBER 015375 3154 GWD4 / 7 - A NUMBER 015376 3154 GWD4 / 6 - A NUMBER 015377 3154 GWD4 / 5 - A NUMBER 015400 3154 GWD4 / 4 - A NUMBER 015401 3154 GWD4 / 3 - A NUMBER 015402 3154 GWD4 / 2 - A NUMBER 015403 3154 GWD4 / 1 - A NUMBER 015404 3154 GWD4 / 0 - A NUMBER 015405 3154 GWD4 /^D - A NUMBER 015406 3154 GWD4 /^K - A NUMBER 015407 3154 GWD4 / " - A NUMBER 015410 3154 GWD4 / ' - A NUMBER 015411 3154 GWD4 / ( - A NUMBER 015412 3150 GWOPS2, GWD2 /SPACE - TERMINATOR 015413 3151 GWD3 / CR - " /'ACCEPT' JUMP LIST 015414 5213 ACOPS, ACCNUM / 9 - A DIGIT /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 47-1 015415 5213 ACCNUM / 8 - A DIGIT 015416 5213 ACCNUM / 7 - A DIGIT 015417 5213 ACCNUM / 6 - A DIGIT 015420 5213 ACCNUM / 5 - A DIGIT 015421 5213 ACCNUM / 4 - A DIGIT 015422 5213 ACCNUM / 3 - A DIGIT 015423 5213 ACCNUM / 2 - A DIGIT 015424 5213 ACCNUM / 1 - A DIGIT 015425 5213 ACCNUM / 0 - A DIGIT 015426 5256 CTRLD / ^D SWITCH 015427 5257 CTRLK / ^K SWITCH 015430 5243 DQUOTE / " - SINGLE ASCII 015431 5246 SQUOTE / ' - PACKED ASCII 015432 5240 ERCR / ( - ILLEGAL HERE 015433 5234 ACCPT3-2 /SPACE - END 015434 5235 ACCPT3-1 /CR - END /'GARGS' JUMP LIST - TERMINATORS 015435 5317 GAROPS, GAR5 /- 015436 5323 GAR6 /, 015437 5307 ERCS /:, SHOULDN'T SEE, WILL DO ERROR 015440 5314 GAR4 /. 015441 5307 ERCS /SPACE, SHOULDN'T SEE, WILL DO 'ERROR' 015442 5310 GAR3 /CR /'GARGS' & 'ARG' COMMAND LISTS 015443 0255 GARLST, "- 015444 0254 ", 015445 0272 GETLST, ": 015446 0256 ARGLST, ". 015447 0240 240 /SPACE 015450 0215 215 /CR 015451 0000 0 /'GETNT' LISTS 015452 3723 GETOPS, GETCOL 015453 3730 GETPER 015454 3736 GETEND 015455 3737 GETEND+1 /'ARG' JUMP LIST 015456 5723 ARGOPS, ARG2 015457 5726 ARG3 015460 5726 ARG3 /'WCHEK' LISTS 015461 0250 WCKLST, "( 015462 0251 ") 015463 0242 "" 015464 0247 "' 015465 0215 215 015466 0000 0 015467 6227 WCKOPS, WCHEK5+1 015470 6226 WCHEK5 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 47-2 015471 6233 WCHEK6+1 015472 6232 WCHEK6 015473 6222 WCHEK4 /'EVAL' JUMP LIST 1 015474 5470 EVOPS1, EVNEXT /+ 015475 5415 EVMIN /- 015476 5537 EVLPAR /( /'EVAL' COMMAND LISTS 015477 0253 EVLST1, "+ 015500 0255 "- 015501 0250 "( 015502 0000 0 015503 0314 EVLST2, "L 015504 0302 "B 015505 0323 "S 015506 0303 "C 015507 0306 "F 015510 0322 "R 015511 0324 "T 015512 0304 "D 015513 0000 0 /'EVAL' JUMP LIST 2 015514 5527 EVOPS2, EVLOC /L (LOC) 015515 5533 EVBLK /B (BLK) 015516 5522 EVSR /S (S.R.) 015517 5523 EVSR+1 /C (CONTENTS) 015520 5525 EVFIL /F (FILLER) 015521 5512 EVREM /R (REMAINDER) 015522 5516 EVTEMP /T (TEMP) 015523 5506 EVDATE /D (DATE) /ACTION CHARS FOR "READLN" SUBROUTINE 015524 0222 REACTL, "R-100 /CTRL-R = RE-ECHO 015525 0225 "U-100 /CTRL-U = ERASE LINE 015526 0000 0 015527 4063 REACTS, RECHO 015530 4100 RERASE /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 48 /ERROR ROUTINE ADDRESS LIST: 015531 0233 ERLIST, ERCA 015532 0227 ERCB 015533 0402 ERCC 015534 0605 ERC14 015535 0735 ERCD 015536 0755 ERCE 015537 1215 ERCG 015540 2015 ERCH 015541 2011 ERCI 015542 1605 ERCK 015543 1673 ERCJ 015544 1611 XSET1 015545 1631 ERCL 015546 1654 ERCZ 015547 2430 ERCO 015550 1617 ERC11 015551 2642 ERC04 015552 2473 ERCP 015553 5722 ERCQ 015554 5240 ERCR 015555 5222 ERC09 015556 5736 ERC08 015557 5267 ERC13 015560 5307 ERCS 015561 5412 ERCT 015562 5414 ERCU 015563 5541 ERCV 015564 5547 ERCW 015565 6047 ERCX 015566 1156 ERCY 015567 3731 ERCM 015570 2214 ERC00 015571 2215 ERC01 015572 2415 ERC02 015573 2416 ERC03 015574 2342 ERC10 015575 2126 ERCF 015576 2022 GCCERR 015577 2111 HDRERR 015600 3103 ERC05 015601 2502 ERC07 015602 2254 ERC18 015603 2312 ERC19 015604 2351 ERC20 015605 0545 ERC15 015606 0564 ERC16 015607 4116 ERC17 015610 0000 0 DECIMAL /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 48-1 015611 7777 SMASKB, -1 /STRING SEARCH MASK BUFFER /L(SMASKB)=66(10) 5713 COMB= SMASKB+66 /COMMAND INPUT BUFFER /L(COMB)= 140(10) 6127 PDLB= COMB+140 /PUSH-DOWN-LIST BUFFER /**** ALSO REWIND BUFFER! **** 015612 0251 CCBB-PDLB /SHOW PDL SPACE OCTAL 6400 CCBB= 16400 /CORE-CONTROL-BLOCK BUFFER AND HEADER / BUFFER FOR LOAD MODULES, 1 PAGE FIELD 1 6600 DMPBUF= 16600 /DUMP OUTPUT BUFFER, 2 PAGES FIELD 1 7200 IOBUF= 17200 /DEVICE I/O DUFFER, 2 PAGES FIELD 1 0000 FIELD 0 6400 *6400 $$$$ /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 49 ABKLOC 1741 CCHDST 1553 DEVHAN 7200 ERCH 2015 ABK1 1747 CGET 2546 DEVNO 0101 ERCI 2011 ABK2 1753 CGTEST 2552 DICAD 6163 ERCJ 1673 ABSSW 0051 CHAR 0035 DIGIT 4531 ERCK 1605 ACBASE 5242 CHARSW 0045 DIOR 5677 ERCL 1631 ACCEPT 5200 CLANAM 2726 DIRDMP 3155 ERCM 3731 ACCMUL 5223 CLOSE 0361 DIROUT 3163 ERCO 2430 ACCNUM 5213 CNOP 2036 DLOOP1 0427 ERCP 2473 ACCPT1 5206 CNT 0036 DLOOP2 0445 ERCQ 5722 ACCPT3 5236 CNTR 0037 DMODE 0053 ERCR 5240 ACCX1 0027 CNTRA 0040 DMPADR 2340 ERCS 5307 ACCX2 0030 COMB 5713 DMPBLK 2341 ERCT 5412 ACC1 0025 COMIR 0015 DMPBUF 6600 ERCU 5414 ACC2 0026 COMOUT 0016 DMPCHR 2352 ERCV 5541 ACOPS 5414 COMST 0174 DMPHAN 6600 ERCW 5547 ADFLD 7000 CONDIT 6265 DMPIT 2335 ERCX 6047 ALTMOD 0253 COPSL 4543 DMPNUL 2321 ERCY 1156 ALTM1 0261 CRCR 0216 DMPOUT 2315 ERCZ 1654 ARG 5713 CRCRC 0235 DMPPTR 2353 ERC00 2214 ARGI 0160 CRCRN 0234 DMUL 6000 ERC01 2215 ARGLST 5446 CRCR1 0230 DMUL1 6004 ERC02 2415 ARGOPS 5456 CRLF 5045 DMUL2 6021 ERC03 2416 ARG1 5715 CRLFI 0130 DMUL3 6031 ERC04 2642 ARG2 5723 CRSWT 0046 DMUL4 6014 ERC05 3103 ARG3 5726 CTRL 5126 DNAM 2266 ERC07 2502 ASCII 2163 CTRLC 5161 DODIG 4161 ERC08 5736 BACKAR 0271 CTRLCI 5163 DOFLD 4742 ERC09 5222 BASE 4622 CTRLD 5256 DO1SP 2561 ERC10 2342 BATINI 4051 CTRLI 0134 DO2SP 2565 ERC11 1617 BATLS 6657 CTRLK 5257 DPNEG 6141 ERC13 5267 BATLUP 6621 CTRLQS 5170 DPNT 0010 ERC14 0605 BATMOV 6615 CTRLX 5164 DPRT 3436 ERC15 0545 BATPAT 6624 CTRL0 5130 DPSGN 0001 ERC16 0564 BATSET 6600 CTRL1 5144 DQUOTE 5243 ERC17 4116 BCTRLC 5136 CTRL2 5151 DSUB 5662 ERC18 2254 BITPNT 4471 CWORDL 4603 DSWIT 0052 ERC19 2312 BITS 4456 CWORL2 4664 EAE 4311 ERC20 2351 BITVAL 4522 C100 5125 EAELST 2664 ERLIST 5531 BKLOC 3105 DADD 5650 EAETMP 4332 ERMODE 0020 BKLOCI 0146 DAND 5667 EBLK 2104 ERMSA 0062 BLK 0057 DBLPGS 3063 ECLOSE 0353 ERMSB 0100 BLKTST 6154 DCAICA 4555 ELOCH 2105 ERMSC 0116 BPRT 3415 DDCWPT 2265 ELOCL 2106 ERMSD 0125 BTEST 4103 DDEVAD 2263 EMSEND 0060 ERMSE 0137 BUFST 3041 DDEVNO 2264 ENDC 4141 ERMSF 0150 BYTEO 3517 DDEVS 2430 ENDCI 0170 ERMSG 0227 CAD 0056 DDIV 6040 ENUM 5472 ERMSGC 0171 CALUSR 4552 DDIV1 6051 ENUMX 5501 ERMSH 0242 CBATE 6736 DDIV2 6064 ERCA 0233 ERMSHD 0207 CBATI 6707 DDIV3 6072 ERCB 0227 ERMSI 0256 CBATO 6746 DECI 0137 ERCC 0402 ERMSJ 0267 CBLK 0054 DEC2 3445 ERCD 0735 ERMSK 0276 CCBB 6400 DEC2I 0141 ERCE 0755 ERMSL 0341 CCBHDR 2116 DEVAD 0100 ERCF 2126 ERMSM 0361 CCHARL 4473 DEVADX 2150 ERCG 1215 ERMSO 0404 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 49-1 ERMSP 0417 EVREM 5512 GET 3000 INSLST 2600 ERMSQ 0435 EVSR 5522 GETCOL 3723 IOBUF 7200 ERMSR 0456 EVTAB 5566 GETCW 3360 IOPNT 4544 ERMSS 0501 EVTEMP 5516 GETEND 3736 IOPRNT 4523 ERMST 0523 EXCL 0312 GETI 0161 IOPRN1 4525 ERMSU 0543 EXCL1 0317 GETIO 3027 IOPRN2 4542 ERMSV 0564 EXCL2 0336 GETIO1 3044 IOTS 4257 ERMSW 0604 EXPRIN 5727 GETIO2 3061 IOTTAB 2732 ERMSX 0622 EXPRI1 5735 GETLST 5445 LASTOP 0002 ERMSXO 0322 FBKLEN 1036 GETL1 3300 LBLK 0065 ERMSY 0636 FCNT 0042 GETL2 3302 LCHEK 2147 ERMSZ 0651 FILLER 0074 GETL3 3345 LFLF 0311 ERMS00 0673 FLD 7026 GETL4 3351 LIMITI 0165 ERMS01 0671 FLDOUT 6277 GETN 5362 LIMITS 2752 ERMS02 0706 FMTLS 5000 GETNI 0163 LISTPT 0725 ERMS03 0704 FOPSL 4734 GETNT 3741 LLIST 0661 ERMS04 0717 FOP134 4067 GETNTC 3746 LLIS1 0664 ERMS05 0742 FORML 4703 GETOP 6243 LLIS2 0702 ERMS07 0764 FPCOND 4111 GETOPS 5452 LLIS3 0712 ERMS08 1003 FPLEA 4611 GETORG 3357 LLIS4 0717 ERMS09 1030 FPOP00 4015 GETPER 3730 LLIS5 0722 ERMS10 1037 FPPDMP 4400 GETPNT 0014 LLOCH 0066 ERMS11 1051 FPPINS 3757 GETSCN 3717 LLOCL 0067 ERMS13 1071 FPPMOJ 4132 GETSWX 2151 LOCH 0060 ERMS14 1104 FPPMO0 4122 GETS1 3214 LOCL 0061 ERMS15 1124 FPPOPJ 4161 GETS2 3261 LONG 4640 ERMS16 1135 FPPOP0 4141 GETX 3026 LOUTSW 0726 ERMS17 1151 FPPOUT 4600 GET0 3010 LPAR 5616 ERMS18 1163 FPRNT 1363 GET1 3013 LPARI 5564 ERMS19 1172 FPRNTX 7011 GET4 3200 LSETL 2127 ERMS20 1201 FPXR1S 4050 GET678 6251 LSETUP 2107 ERMS99 1212 FPXR2S 4057 GHDR 2060 MAIN1 0204 ERROR 4573 FSTBLK 1035 GHDR1 2112 MAIN2 0212 ERROR1 2433 FTABLE 4764 GNAME 3676 MASK 0075 EVAL 5400 F0END 6572 GPAIR 3751 MASKBS 0176 EVALI 0147 GARGI 0157 GPUT 5326 MCHARO 5063 EVALX 5557 GARGS 5272 GPUT1 5335 MDCOM 6112 EVAL1 5407 GARLST 5443 GWD1 3143 MINUS 0345 EVAL2 5413 GAROPS 5435 GWD2 3150 MODADS 5035 EVAL3 5423 GAR1 5276 GWD3 3151 MODDLS 5046 EVBLK 5533 GAR2 5302 GWD4 3154 MODELS 5271 EVDATE 5506 GAR3 5310 GWLST1 5351 MODIF 0050 EVFIL 5525 GAR4 5314 GWLST2 5370 MODIFL 5014 EVLOC 5527 GAR5 5317 GWOPS1 5373 MODIFO 5025 EVLPAR 5537 GAR6 5323 GWOPS2 5412 MODLST 5240 EVLST1 5477 GCCB 2000 GWORD 3122 MODOPS 5251 EVLST2 5503 GCCBLK 2140 GWORDI 0156 MODSW 0044 EVMIN 5415 GCCB1 2027 HDRERR 2111 MODTMP 2477 EVNEXT 5470 GCCB2 2052 IFSKPO 5065 MONTHS 2521 EVOP 5446 GCCCDF 2056 INC 3557 MSBAD 2354 EVOPN 5554 GCCERR 2022 INCI 0166 MSBASE 3743 EVOPS1 5474 GDEVIC 1140 INDIR 4631 MSDDEV 2450 EVOPS2 5514 GDEV1 1153 INIDAT 6322 MSDEV 2457 EVPAR 5456 GDEV2 1154 INIMSG 6306 MSERR 2503 EVPAR2 5542 GDEV3 1155 INISCO 6315 MSINDI 3746 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 49-2 MSJNX 3751 M400 0103 OUTLS 5275 R2 4053 MSMOD 2500 NAM1 0025 OUTPNT 0043 SBLK 0070 MSVER 2512 NAM2 0026 OUTSW 0765 SCANER 5744 MS01 4200 NAM3 0027 OVLFLG 0000 SCANX1 0012 MS02 4204 NAM4 0030 PACK 2704 SCANX2 0013 MS03 4210 NCNT 0041 PACK1 2716 SCOPLS 6630 MS04 4216 NUMB 3500 PACOUT 3621 SEGCNT 3361 MS05 4223 NUMDGT 3501 PATCH 0001 SEGNI 2137 MS06 4230 NUMOPS 5067 PDATE 5000 SEMIC 0310 MS07 4203 NUMOUT 3453 PDATEI 0142 SETJMP 5171 MS08 4235 NUMO1 3455 PDLB 6127 SETLST 5111 MS09 4242 NUMO2 3466 PDLPT 0007 SGNDP 3423 MS10 4247 NXTIOT 3542 PDPDMP 4214 SHOWL 5074 MS11 4253 NXTOCT 1766 PDPOUT 4221 SHOWOP 5133 MS12 4256 N15 0114 PLUS 0344 SHUT 0047 MS13 4264 N177 0117 PNAME 2731 SLASH 0237 MS14 4267 N20 0115 PNAME1 2744 SLA1 0244 MS15 4277 N200 0120 POP 4551 SLOCH 0071 MS16 4306 N377 0121 POPX 5606 SLOCL 0072 MS17 4310 N7 0113 PUSH 4550 SLO1 0245 MS18 4313 N7000 0122 PUSHX 5600 SLO2 0246 MS19 4317 N7400 0103 QUOTEC 5265 SMASKB 5611 MS20 4324 N77 0116 RBLK 3057 SMASKL 0076 MS21 4332 OCTI 0140 RBLK1 0077 SMSKSW 2360 MS22 4336 OCTSET 5261 RDERX 2146 SOCTI 0145 MS23 4341 OCT3 3407 REACTL 5524 SORTEM 3675 MS24 4344 ODGET 3073 REACTS 5527 SORTI 0167 MS25 4345 ODGETI 0162 READ 4000 SORTJ 3643 MS26 4351 ODTOL 4212 READLN 4523 SORT1 3652 MS27 4354 ODTOPT 4204 RECHO 4063 SORT2 3673 MS28 4360 ODTOUT 4200 RECHO1 4070 SPACE1 4532 MS29 4363 OFFSET 0073 RECRLF 0171 SPACE2 4533 MS30 4367 OMODES 0255 REFS1 4244 SPCOP0 4660 MS31 4374 OMODPT 0270 REFS2 4255 SPCOP1 4717 MS32 4376 ONECHR 3631 REKEY 4011 SPCOP2 4744 MS33 4403 OPEND 4446 RENEXT 4007 SPCOP3 4731 MS34 4405 OPER1 0031 RERASE 4100 SPCOP4 4732 MS35 4410 OPER2 0032 RERROR 2213 SPCOP5 4747 MS36 4412 OPRMES 2730 RESPC 4024 SPCOP6 4757 MS37 4415 OPRS 4262 RESTAR 0172 SPCOP7 4756 MS38 4422 OPRS1 4275 RETERM 4020 SPECIA 4654 MS39 4426 OPRT 3400 RKEY 4112 SPNT 0011 MS40 4436 OPRTST 4547 RKEY0 4126 SPNUSE 4677 MS41 4443 OPRTYP 4467 RKEY1 4137 SPOP00 4665 MS42 4452 OPR1A 4333 RLAST 4054 SPOP04 4670 MS43 4470 OPR2A 4405 RM214 4052 SPOP05 4675 MULNEG 6126 OPR2B 4424 RTL6 3762 SPOP1J 4737 MULT3 6257 OPR2T 4515 RTL6I 0143 SPOP10 4707 M1 0112 OP1LST 2620 RTR6 3767 SPOP11 4710 M10 0111 OP2LST 2642 RTR6I 0144 SPO123 4701 M100 0107 OSRETN 3535 RUBO 4031 SQUOTE 5246 M20 0110 OSSET 3527 RUBOE 4057 SSET 2047 M200 0106 OSTYPE 3511 RUBOF 4061 SSKIP 3502 M215 0105 OSUNPK 3540 RUBO1 4035 SSKIPI 0164 M240 0104 OTABLE 4526 RUBO2 4047 START 6400 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 49-3 STCDF 6211 TYPEOP 4575 XDMLST 5261 XOCEX 2261 STDEV 6426 TYPES 3600 XDMODE 1612 XOFFS 1642 STERR 6551 TYPEX 5043 XDMODS 1621 XOLST 5223 STJMP 5757 TYPE1 2400 XDMOPS 5265 XOOPS 5232 STRLST 5301 TYPE2 2412 XDNAM 2464 XOPEN 1000 STRMSK 2357 TYPE3 2431 XDUMP 0603 XOPEN1 2222 STROPS 5326 TYPSI 0125 XDUM0 0610 XOPEN2 2237 STSWEX 6532 TYPSTI 0124 XDUM1 0611 XOPS1 2634 STSWIT 6471 TYPSTR 3605 XDUM2 0617 XOPS2 2643 STSWO 6507 TYPSW 0017 XELST 5212 XOPS3 2655 STSWS 6520 TYPTAB 5107 XEMODE 1647 XOPS4 2673 STTLS 6536 UBLK 0062 XEMOD1 1655 XOPS5 2675 SYMEND 4256 UCDF0 0525 XEOPS 5217 XOSIZ 2253 SYMLIM 4433 ULOCH 0063 XERROR 0454 XOUTS 1624 SYMNXT 4504 ULOCL 0064 XERR1 0465 XOUTS1 1633 SYMPNT 4514 UPARR 0274 XERR2 0475 XPAC0 2620 SYMS 4226 UPARR1 0306 XERR3 0505 XPAC1 2621 SYMTYI 6276 UPCBLK 3362 XERR4 0515 XPAC2 2627 SYMTYP 4475 USEUSR 0520 XEXIT 5161 XREWIN 2200 TADICA 4554 USRAD 0102 XFCHR 0740 XROUT 4713 TADIDP 4553 USRCDF 0541 XFICHN 1026 XRPLUS 4643 TCHAR 5100 USRIN 0536 XFIERR 1006 XRSET 2343 TEMP 0021 USROUT 0544 XFILE 1024 XSCAN 0600 TEMPL 6306 USRSAV 0544 XFILEN 1021 XSCONV 5761 TEMPST 0175 VERONE 0000 XFILL 1701 XSET 1602 TEMPV1 0033 VERSIO 0062 XFIOUT 1016 XSETN 1600 TEMPV2 0034 VERTEN 0005 XFNUM 0737 XSET1 1611 TEMP1 0022 WBLK 3042 XFORM 0754 XSHABS 1250 TEMP2 0023 WCHEK 6200 XFSYM 0736 XSHBKS 1257 TEMP3 0024 WCHEK1 6203 XGET 2500 XSHBLK 1200 TERMS 5337 WCHEK2 6211 XGFORM 0727 XSHCCB 1400 TERMT 5624 WCHEK3 6215 XIF 1713 XSHCC1 1414 TERMTE 5646 WCHEK4 6222 XIFCR 1731 XSHCC2 1416 TERMTI 5565 WCHEK5 6226 XIFSKP 1723 XSHCC4 1445 TERMT1 5633 WCHEK6 6232 XLIST0 0632 XSHCR 1204 THISOP 0003 WCHONE 6235 XLIS1 0633 XSHDDE 1360 TICAD 6170 WCKLST 5461 XLIS2 0645 XSHDEV 1347 TIDPNT 2156 WCKOPS 5467 XLOCH 2365 XSHERR 1530 TTAGN 3607 WERROR 2414 XLOCL 2366 XSHER1 1537 TWOCI 0127 WOPSL 4634 XLOW 1663 XSHFIL 1232 TWOCS 1761 WOPSLL 4674 XMASK 1636 XSHFM 1303 TWOT 0135 XASC1 2537 XMODCR 2465 XSHFMT 1277 TYPALT 5102 XBLK 2364 XMODDN 2474 XSHHDR 1455 TYPC 5077 XCLNAM 2310 XMODE 1666 XSHHD1 1477 TYPCR 5105 XCLOSE 1004 XMODEF 2431 XSHHD2 1502 TYPCTL 5121 XCLOS1 2272 XMODIF 2417 XSHLOW 1272 TYPE 5062 XCLSIZ 2311 XMODS 1675 XSHMOD 1307 TYPEA 5034 XCTLZ 2277 XMOD0 2436 XSHMSK 1221 TYPEAI 4056 XDDEV 1134 XMOD1 2441 XSHODL 1236 TYPEB 2405 XDDEV1 2200 XMOD2 2451 XSHOFF 1225 TYPEC 5055 XDDEV2 2441 XNUM0 2506 XSHOUT 1314 TYPECI 0126 XDDNAM 2454 XNUM1 2512 XSHOW 1210 TYPEI 0136 XDEV 1121 XNUM2 2514 XSHREL 1243 TYPEL 4517 XDEVM 2467 XNUM3 2524 XSHSMS 1321 TYPEM 4523 XDLCOM 0647 XOBLK 2252 XSHSM1 1332 /FUTIL - FILE UTILITY - V50A PAL8-V50Y 22-JUL-20 PAGE 49-4 XSHSM2 1342 XSHUPP 1265 XSHVER 1216 XSMASK 2600 XSMAS1 2605 XSTRIN 2216 XSTR0 2220 XSTR1 2232 XSTR10 2333 XSTR11 2336 XSTR2 2240 XSTR3 2246 XSTR4 2260 XSTR5 2277 XSTR6 2302 XSTR7 2306 XSTR8 2321 XSTR9 2324 XSTYPE 1203 XS240O 5352 XTEMP 1705 XUPP 1660 XVAL 0400 XWBLK 2410 XWORC 2033 XWORCL 5277 XWORD 2000 XWOROP 5313 XWOR1 2006 XWOR2 2004 XWOR3 2021 XWOR4 2027 XWOR5 2045 XWOR7 2016 XWRARG 2400 XWRITE 2403 XWSABS 2066 XWSFRM 2071 XWSRET 2100 XWSTO 2074 XXS20 2617 YRBASE 5033 YRTEST 5032 ERRORS DETECTED: 0 LINKS GENERATED: 165