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