File: FOTP50.LS of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 


/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 1

		/FOTP V50 FOR OS/8 V50
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/COPYRIGHT  (C)  1974,1975 BY DIGITAL EQUIPMENT CORPORATION
		/		 AND 1979,1980 BY DATAPLAN GMBH
		/		 AND 2015 W. VAN DER MARK
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
		/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
		/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
		/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
		/
		/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
		/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
		/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
		/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
		/
		/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
		/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
		/DIGITAL.
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/
		/  FOTP (FILE ORIENTED TRANSFER PROGRAM)   H.J.


		/CORE MAP

		/FROM TOP OF CORE

		/	FIELD 2 GETS CONDITIONALLY USED AS BUFFER

		/	FIELD 1

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 1-1

		/		7777-7600	MONITOR
		/		7577-4600	INCORE OUTPUT DIRECTORY
		/		4577-2000	FOTP CODE
		/		1777-0		RESIDENT USR
		/
		/	FIELD 0
		/		7777-7600	MONITOR
		/		7577-7200	ERROR MESSAGES
		/		7177-0		WORK AREA AS:
		/
		/		AT TOP-	OUTPUT HANDLER IF NEEDED
		/			1 OR 2 PAGES

		/			INPUT HANDLER IF NEEDED
		/			1 OR 2 PAGES

		/			INPUT DEVICES DIRECTORY
		/			(ONLY USED PORTION)

		/			THE TRANSFER BUFFER IN 8K
		/			IS WHAT EVER REMAINS.

		/FIXES FOR MAINTENANCE RELEASE: (S.R. 5-AUG-75)

		/1.	CHANGED COPYRIGHT DATE
		/2.	INCORPORATED SEQ #1 PATCH (DSN MARCH 1975)
		/	PERMITS FOTP TO RECOVER FROM A MONITOR ERROR 6
		/	BY UNFAKING THE SYSTEM HANDLER
		/3.	UPDATED FOTP VERSION NUMBER TO V8
		/4.	ADDED SPACE FOR A PATCH LEVEL
		/5.	ALLOWED /T SWITCH TO WORK IN CONJUNCTION WITH /R
		/6.	PERMITS RENAMING A FILE TO IT'S OWN NAME
		/7.	IF NO OUTPUT DEVICE IS SPECIFIED WITH /R,
		/	ASSUME OUT DEV=INPUT DEVICE.

		/8.	FIXED BUG RE ADDITIONAL INFO WORDS

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 2


		/PAGE 0 LOCATIONS OS/8 USR WON'T MANGLE

	0020		PTR=20
	0021		CNT=21
	0022		INFPTR=22
	0023		OUHAND=23
	0024		INHAND=24
	0025		FPAGE=25
	0026		EPTR=26
	0027		INSCNT=27
	0030		TEMP=30
	0031		OKFLAG=31
	0032		IFCNT=32
	0033		BUFSIZ=33
	0034		INFWDS=34
	0035		BDPTR=35
	0036		GPTR1=36
	0037		INEOF=37

		/AUTO INDEX REGISTERS USR WILL ALLOW ME TO USE TEMPORARILY

	0010		XR=10
	0011		XR1=11
	0012		XR2=12


		/VARIOUS CONSTANTS THAT CAN BE GENERATED

	7326		AC2=CLA CLL CML RTL
	7330		AC4000=CLA CLL CML RAR
	7344		ACM2=CLA CLL CMA RAL
	7346		ACM3=CLA CLL CMA RTL

		/	LOCATIONS REFERENCED IN OS/8

	7642		ALTOPT=7642
	7643		OPT1=7643
	7644		OPT2=7644
	7666		DATE=7666
	0007		DIRKEY=7	/"DIRECTORY SEGMENT IN CORE" KEY

		/SYMBOLIC FOTP LOCATIONS:

	4600	OUBUFR=	4600		/OUTPUT BUFFER - IN FIELD 1
	0000	INBUFR=	0		/INPUT BUFFER - IN FIELD 0
	7000	LSTFPG=	7000		/FIRST LOC OF LAST FREE PAGE IN FIELD 0
	0200	FAKHND=	200		/LOCATION OF OS/8 FAKEOUT HANDLER
			DECIMAL
	0062	VERSION=50		/VERSION NUMBER
	0330	SUBVER="X		/SUB VERSION (PATCH LEVEL)
			OCTAL

			/GERMAN=1	/NOT ANYMORE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 3


		/STARTS AT 4600 IN FIELD 1 (ONCE ONLY CODE)

		/SAVE INFO:

		/	.LOAD FOTP(89P)
		/	.SAVE SYS FOTP;14600

	0001		FIELD 1
	2000		*2000

012000  4777	CDCALL,	JMS I (200	/SEE WHAT THE PERSON WANTS
012001  0005	FIVE,	5
012002  5200	STAR,	5200		/IN SPECIAL MODE

012003  4776	BYPSCD,	JMS I (INTERC	/CATCH CALLS TO 7600

012004  1775		TAD I (7600	/SAVE USER OUTPUT DEVICE
012005  3774		DCA I (USEROD	/-FOR LATER

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 4


		/ CHECK FOR ? IN OUTPUT SPECIFICATION
012006  1373		TAD (-10	/8CHARACTERS TO LOOK AT
012007  3021		DCA CNT		/CNT HAVING -10 PUTS US AT FIRST CHAR
012010  1372	S1C,	TAD (7605
012011  4771		JMS I (GTSXBT	/GET A CHAR
012012  1370		TAD (-"?!7700	/CHECK FOR ?
012013  7650		SNA CLA
012014  5337		JMP QINO	/? IN OUTPUT NOT ALLOWED
012015  2021		ISZ CNT
012016  5210		JMP S1C

		/ CHECK FOR EMBEDDED * IN ANY SPECIFICATION

012017  1372		TAD (7605
012020  3020	S4L,	DCA PTR
012021  1373		TAD (-10
012022  3021		DCA CNT
012023  1020	ACK,	TAD PTR
012024  4771		JMS I (GTSXBT
012025  1367		TAD (-"*!7700	/CHECK TO SEE IF CHARACTER *
012026  7640		SZA CLA		/SKIP IF IT IS
012027  5242		JMP CNTUP	/GO LOOK AT NEXT
012030  7326		AC2
012031  1021		TAD CNT		/ARE WE AT EXTENSION
012032  7440		SZA		/SKIP IF YES
012033  1366		TAD (6		/ARE WE AT START OF FILENAME?
012034  7650		SNA CLA		/SKIP IF NOT
012035  2021		ISZ CNT		/BUMP COUNT ONLY IF OK
012036  1020		TAD PTR		/LOOK AT NEXT CHAR
012037  4771		JMS I (GTSXBT
012040  7640		SZA CLA		/SKIP IF ITS NULL - OK
012041  5335		JMP AINO	/ERROR
012042  2021	CNTUP,	ISZ CNT		/BUMP TO NEXT CHAR
012043  5223		JMP ACK		/CONTINUE CHECKING
012044  1420		TAD I PTR	/ANY MORE INPUT
012045  7650		SNA CLA		/SKIP IF THERE IS
012046  5252		JMP NULLCK
012047  1201		TAD FIVE	/BUMP TO NEXT ENTRY
012050  1020		TAD PTR
012051  5220		JMP S4L

		/ CHECK FOR NULL OUTPUT SPECIFICATION AND MAKE *.*

012052  1765	NULLCK,	TAD I (7601	/WAS OUTPUT FILENAME GIVEN?
012053  7640		SZA CLA		/SKIP IF NONE
012054  5261		JMP DIDEML
012055  1202		TAD STAR	/PUT AN ASTERISK IN
012056  3765		DCA I (7601	/FILENAME
012057  1202		TAD STAR
012060  3764		DCA I (7604	/AND EXTENSION

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 5


		/THIS CODE SETS A DEFAULT OUTPUT DEVICE ON DELETE

012061  1775	DIDEML,	TAD I (7600	/IS AN OUTPUT DEVICE SPECIFIED?
012062  7440		SZA		/SKIP IF NOT
012063  5271		JMP ODSPEC	/NOTE DEVICE NUMBER IN AC
012064  4314		JMS SETSDR	/SET SD AND R FLAG
012065  1327		TAD SDFLG
012066  1330		TAD RFLG
012067  7640		SZA CLA		/IF /D OR /R
012070  1772	MOV,	TAD I (7605	/WE'LL SUBSTITUTE FIRST INPUT DEVICE FOR USER
012071  0363	ODSPEC,	AND (17		/CLEAR USER SPECIFIED LENGTH
012072  3775		DCA I (7600	/WE KNOW BETTER

		/THE FOLLOWING BRINGS IN THE OUTPUT DEVICE HANDLER,
		/READS THE DIRECTORY INTO CORE AND VERIFIES IT.

012073  1362		TAD (LSTFPG	/SET THE FREE SPACE POINTER
012074  3025		DCA FPAGE	/TO THE LAST FREE PAGE IN FIELD 0
012075  1775		TAD I (7600	/IS THERE AN OUTPUT DEVICE?
012076  7440		SZA		/IF NO OUTPUT, DON'T FETCH HANDLER
012077  4761		JMS I (ASSIGN	/GET THE HANDLER AND ALLOCATE ITS SPACE
012100  3023		DCA OUHAND	/AC RETURNS HANDLER ENTRY POINT
012101  4760		JMS I (ODIRIN	/READ IN THE OUTPUT DIRECTORY
012102  1372		TAD (7605	/INGIALIZE INPUT POINTER

		/THIS IS THE BEGINING OF THE INPUT FILE LOOP

012103  3022	DOMOIN,	DCA INFPTR	/POINTER TO CURRENT INPUT
012104  1422		TAD I INFPTR	/WHEN 0 NO MORE INPUT
012105  7450		SNA		/SKIP IF MORE TO DO
012106  5757		JMP I (ENDCHK	/DO END PROCESSING
012107  4761		JMS I (ASSIGN	/ASSIGN AND ALLOCATE SPACE FOR INPUT HANDLER
012110  3024		DCA INHAND	/AND SAVE ITS ENTRY ADDRESS

		/THE FOLLOWING 2 INSTRUCTIONS HELP AVOID ALL KINDS OF
		/PROBLEMS WITH THE MONITOR.  IF A HANDLER GETS LOADED, THE
		/MONITOR MAKES IT RESIDENT FOR OTHER PEOPLE AND DOESN'T DELETE
		/ITS RESIDENT STATUS IF A REQUEST IS MADE FOR A NEW HANDLER
		/TO BE LOADED OVER IT IF THE NEW HANDLER IS ALREADY RESIDENT

012111  1025		TAD FPAGE	/SAVE FREE SPACE POINTER HERE
012112  3326		DCA SFUDG
012113  5756		JMP I (PG1	/LINK TO NEXT SECTION

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 6


012114  0000	SETSDR,	0
012115  1755		TAD I (OPT1
012116  0354		AND (400
012117  7106		CLL RTL		/PUT /D BIT INTO AC 0
012120  7004		RAL
012121  3327		DCA SDFLG
012122  1753		TAD I (OPT2
012123  0352		AND (100
012124  3330		DCA RFLG	/SET RENAME FLAG
012125  5714		JMP I SETSDR

012126  0000	SFUDG,	0
012127  0000	SDFLG,	0
012130  0000	RFLG,	0

012131  4751	RDOERR,	JMS I (ERROR
012132  7604		ERRRDO+40	/READ-ONLY DEVICE
012133  4751	ONDERR,	JMS I (ERROR
012134  7320		ODRERR+40	/ERROR READING OUT DIR
012135  4751	AINO,	JMS I (ERROR
012136  7246		ILLA+40		/ILLEGAL *
012137  4751	QINO,	JMS I (ERROR
012140  7240		ILLQ+40		/ILLEGAL ?

012151  3710
012152  0100
012153  7644
012154  0400
012155  7643
012156  2200
012157  3506
012160  4304
012161  3200
012162  7000
012163  0017
012164  7604
012165  7601
012166  0006
012167  7726
012170  7701
012171  3230
012172  7605
012173  7770
012174  4122
012175  7600
012176  3640
012177  0200
	2200		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 7


		/CHECK FOR NON FILE STRUCTURED INPUT
		/WE CAN'T HANDLE IT

012200  1422	PG1,	TAD I INFPTR
012201  1377		TAD (7757
012202  3030		DCA TEMP
012203  1430		TAD I TEMP	/IS FILE STRUCTURED BIT ON
012204  7700		SMA CLA		/SKIP IF IT IS
012205  5343		JMP NFIN	/ERROR
012206  6202		CIF 0
012207  4424		JMS I INHAND	/READ INPUT DEVICES DIRECTORY
012210  1400		1400
012211  0000	IDBUF,	INBUFR
012212  0001		1
012213  5345		JMP INDERR	/ERROR
012214  6201		CDF 0
012215  1611		TAD I IDBUF	/MAKE SURE THAT THE
012216  7140		CMA CLL		/DIRECTORY OF
012217  1776		TAD I (INBUFR+2	/THE DEVICE IS
012220  6211		CDF 10		/GOOD
012221  7420		SNL
012222  1375		TAD (-120	/(SEE COMMENT ON TEST IN ROUTINE "ODIRIN")
012223  7630		SZL CLA		/SKIP IF ITS GOOD
012224  5347		JMP BIDIR	/ERROR

		/FIND LAST BLOCK OF DIRECTORY

012225  7326		AC2		/LINK TO NEXT SGMENT NUMBER
012226  3020	FNDLST,	DCA PTR		/SAVE IT
012227  6201		CDF 0
012230  1420		TAD I PTR	/IS THERE ANOTHER SEGMENT?
012231  7650		SNA CLA		/SKIP IF YES
012232  5236		JMP ATIT	/NO...WE ARE POINTING TO LAST
012233  1020		TAD PTR		/BUMP TO NEXT SEGMENT
012234  1374		TAD (400
012235  5226		JMP FNDLST	/LOOK AGAIN
012236  7346	ATIT,	ACM3		/AC=7775
012237  0020		AND PTR		/AND OUT 2'S BIT
012240  1374		TAD (400	/TOTAL SIZE OF IN CORE DIRECTRY
012241  7041		CIA		/NEGATE FOR ISZ
012242  3021		DCA CNT
012243  1025		TAD FPAGE	/WE ARE GOING TO PACK DIRECTORY
012244  1373		TAD (200	/RIGHT UP TO INPUT HANDLER SO
012245  1021		TAD CNT		/WE GET MAX SIZE TRANSFER BUFFER
012246  3025		DCA FPAGE	/ADJUSTED FREE CORE POINTER
012247  7040		CMA
012250  1025		TAD FPAGE
012251  3011		DCA XR1		/SET UP PLACE TO MOVE TO
012252  7040		CMA
012253  3012		DCA XR2		/ALWAYS COMES FROM 0
012254  1412		TAD I XR2	/MOVE
012255  3411		DCA I XR1	/IT
012256  2021		ISZ CNT
012257  5254		JMP .-3

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 8


		/SET SAME DEVICE FLAG FLAG 4000 IF /D
		/AND SET RENAME FLAG

012260  6211		CDF 10
012261  4772		JMS I (SETSDR

		/ COUNT NUMBER OF INPUTS FROM SAME DEVICE
		/ALSO MAKE NULL INPUT FILENAMES *.*
		/BUT ONLY IF NOT /D

012262  1022		TAD INFPTR	/OK LETS GO THROUGH
012263  3020		DCA PTR		/THE INPUT SPECIFICATIONS
012264  2020	GETCNT,	ISZ PTR		/POINT TO FILENAME WORD
012265  1371		TAD (3		/SET TEMP TO POINT TO EXTENSION
012266  1020		TAD PTR
012267  3030		DCA TEMP
012270  1770		TAD I (SDFLG	/ARE WE DOING /D
012271  7450	K7450,	SNA		/SKIP IF YES - AC NON 0
012272  1420		TAD I PTR	/NO /D - LOOK AT FILENAME
012273  7640		SZA CLA		/ITS NULL PUT IN *.*
012274  5301		JMP NOSUB	/DONT CHANGE IT
012275  1367		TAD (5200	/MAKE IT *
012276  3420		DCA I PTR
012277  1367		TAD (5200	/.*
012300  3430		DCA I TEMP
012301  7201	NOSUB,	CLA IAC		/TEMP+1 POINTS TO NEW INPUT
012302  1030		TAD TEMP
012303  3020		DCA PTR
		/NOTE CNT WAS SET BY ISZ'ING TO ZERO
012304  2021		ISZ CNT		/KEEP COUNT OF DEVICES IN GROUP
012305  1766		TAD I (OPT2	/CHECK FOR /U (UGLY SWITCH)
012306  0365		AND (10
012307  7640		SZA CLA		/SKIP IN NO /U
012310  5316		JMP NOPTIM	/WERE FORCED TO DO ONE AT A TIME
012311  1420		TAD I PTR	/COMPARE DEVICE NUMBERS
012312  7041		CIA		/IN A GROUPING
012313  1422		TAD I INFPTR
012314  7650		SNA CLA		/SKIP IF NEW GROUP
012315  5264		JMP GETCNT	/WE'LL DO ALL THE SAME AT ONCE
012316  1021	NOPTIM,	TAD CNT
012317  7041		CIA		/NEGATE COUNT
012320  3027		DCA INSCNT	/AS NUMBER OF INPUTS TO DO AT ONCE
012321  1020		TAD PTR		/SAVE WHERE TO CONTINUE FOR REST
012322  3764		DCA I (MOIN

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 9


		/THE FOLLOWING CHECKS TO SEE IF A OPERATION
		/IS BEING DONE FROM A DEVICE TO ITSELF

012323  1763		TAD I (7600	/GET DEVICE NUMBER
012324  1362		TAD (7646	/HANDLER ENTRY POINT TABLE
012325  3030		DCA TEMP
012326  1422		TAD I INFPTR	/GET INPUT ENTRY POINT
012327  1362		TAD (7646
012330  3020		DCA PTR
012331  1420		TAD I PTR	/CHECK INPUT ENTRY POINT AGAINST
012332  7041		CIA
012333  1430		TAD I TEMP	/OUTPUT ENRTY POINT
012334  7650		SNA CLA		/SKIP IF THEY ARE DIFFERENT
012335  2770		ISZ I (SDFLG	/SET SAME DEVICE FLAG, AC11
012336  1025		TAD FPAGE	/SET POINTER TO
012337  3035		DCA BDPTR	/START OF DIRECTORY
012340  3342		DCA TYPFND	/CLEAR FOUND FILE FLAG
012341  5761		JMP I (NBLOCK	/LINK TO SOME MORE

012342  0000	TYPFND,	0

012343  4760	NFIN,	JMS I (ERROR
012344  7433		NFLEIN+40	/NON FILE STRUCTED INPUT
012345  4760	INDERR,	JMS I (ERROR
012346  7300		BADIRD+40	/ERROR READING INPUT DIR
012347  4760	BIDIR,	JMS I (ERROR
012350  7472		BIDIRM+40	/NOT A GOOD DIRECTORY

012360  3710
012361  2400
012362  7646
012363  7600
012364  4123
012365  0010
012366  7644
012367  5200
012370  2127
012371  0003
012372  2114
012373  0200
012374  0400
012375  7660
012376  0002
012377  7757
	2400		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 10


		/THIS IS THE SUPERQUASIFACETED DIRECTORY PATTERN MATCHING ROUTINE

		/THE INPUT DIRECTORY IS SEARCHED HERE, IF A MATCH
		/IS FOUND USING THE INPUT GROUPING
		/GOT1 GETS CONTROL WITH -BLOCKS IN THE AC

012400  7240	NBLOCK,	STA
012401  1035		TAD BDPTR	/POINTER TO START OF DIR BLOCK
012402  3010		DCA XR
012403  6201		CDF 0
012404  1410		TAD I XR	/GET COUNT OF NUMBER OF ENTRIES
012405  3352		DCA ENTCNT	/SAVE LOCALLY TO AVOID HERB'S BUG
012406  1410		TAD I XR	/GET BLOCK NUMBER FIRST FILE
012407  3350		DCA BLOCK
012410  1410		TAD I XR	/NEXT SEGMENT NUMBER
012411  3346		DCA LFLAG	/IF IT 0 WE AT END
012412  2010		ISZ XR		/SKIP TENTATIVE FILE WORD
012413  1410		TAD I XR	/GET -NUMBER OF INFO WORDS
012414  7041		CIA		/MAKE POSITVE
012415  3034		DCA INFWDS
012416  1010		TAD XR		/POINT TO FIRST
012417  7001		IAC		/ENTRY
012420  3026		DCA EPTR

012421  1426	BLOOP,	TAD I EPTR	/GET FILENAME WORD
012422  6211		CDF 10
012423  7650		SNA CLA		/SKIP IF FILE HERE
012424  5313		JMP EMPTY	/NO... ITS REALLY AN EMPTY
012425  1027		TAD INSCNT	/SET NUMBER OF INPUT TO LOOK
012426  3347		DCA NCNT	/AT ALL AT ONCE
012427  3351		DCA MATFLG	/CLEAR MATCH FLAG
012430  1022		TAD INFPTR	/ADDRESS OF FIRST INPUT
012431  7410		SKP
012432  1345	MN1,	TAD GPTR2	/ADDRESS OF CURRENT INPUT
012433  1377		TAD (5		/GTSXBT SUBR REQUIRES US TO
012434  3345		DCA GPTR2	/POINT TO END OF FIELD
012435  1026		TAD EPTR	/POINT DIRECTORY POINTER TO
012436  1376		TAD (4		/END OF ENTRY FOR SAME REASON
012437  3036		DCA GPTR1
012440  1036		TAD GPTR1	/SET EPNEXT TO POINT TO
012441  1034		TAD INFWDS	/MINUS NUMBER OF BLOCKS IN
012442  3344		DCA EPNEXT	/FILE WORD
012443  1375		TAD (-10	/NUMBER OF CHARS TO LOOK AT
012444  3021	WILDNM,	DCA CNT

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 11


012445  1345	MLP,	TAD GPTR2	/OK - GET A CHARACTER FROM
012446  4774		JMS I (GTSXBT	/STRING
012447  1373		TAD (-"*!7700	/IS IT AN *
012450  7450		SNA		/SKIP IF NOT *
012451  5336		JMP WILDA	/YEP... ITS A WILD CARD
012452  1372		TAD ("*-"?	/IS IT A ?
012453  7450		SNA		/SKIP IF NOT
012454  5267		JMP WILD	/YES... FORCE MATCH ON THIS CHAR
012455  1371		TAD ("?&77	/RESTORE VALUE
012456  7041		CIA		/NEGATE
012457  3343		DCA CHAR	/AND SAVE
012460  1036		TAD GPTR1	/NOW GET CHAR FROM DIRECTORY
012461  6201		CDF 0
012462  4774		JMS I (GTSXBT
012463  6211		CDF 10
012464  1343		TAD CHAR	/DO CHARS MATCH
012465  7640		SZA CLA		/SKIP IF THEY DO
012466  5272		JMP NM1		/NO MATCH ON THIS INPUT
012467  2021	WILD,	ISZ CNT		/BUMP COUNT OF CHARS & POINTER
012470  5245		JMP MLP		/COMPARE ALL 8
012471  2351	MEXT,	ISZ MATFLG	/A MATCH!!!!!!!
012472  7200	NM1,	CLA		/WILD CARD COMES HERE WITH ICHY AC
012473  2347		ISZ NCNT	/HAVE WE CHECKED GROUP OF INPUTS
012474  5232		JMP MN1		/NO CHECK WHOLE GROUP
012475  1351		TAD MATFLG	/HAVE THERE BEEN ANY MATCHES
012476  7640		SZA CLA		/SKIP IF NOT
012477  1376		TAD (4		/WILL INVERT /V SWITCH
012500  1770		TAD I (OPT2	/ADD SWITCH
012501  0376		AND (4		/ISOLATE IT
012502  6201		CDF 0

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 12


		/SKIPS IF INPUT DIRECTORY ENTRY IS NOT CANDIDATE
		/THAT IS - IF A MATCH WAS NOT FOUND BETWEEN ANY
		/OF THE INPUTS AND /V WAS NOT SPECIFIED   OR
		/A MATCH WAS FOUND AND /V WAS SPECIFIED

		/THIS ALLOWS /V TO MEAN EVERYTHING BUT...

012503  7640		SZA CLA
012504  1744		TAD I EPNEXT	/GET -NUMBER OF BLOCKS
012505  6211		CDF 10
012506  7440		SZA		/SKIPS IF TENTATIVE OR NOT CANDIDATE
012507  5767		JMP I (GOT1	/PROCESS FILE
012510  1344	NENT,	TAD EPNEXT	/POINT EPTR TO BLOCK
012511  3026		DCA EPTR	/COUNT OF FILE
012512  7410		SKP
012513  2026	EMPTY,	ISZ EPTR	/ON EMPTY MAKE EPTR POINT TO BLOCK COUNT
012514  6201		CDF 0
012515  1426		TAD I EPTR	/GET BLOCK COUNT
012516  7041		CIA		/MAKE POSITIVE
012517  1350		TAD BLOCK
012520  3350		DCA BLOCK	/KEEP SUM
012521  2026		ISZ EPTR	/POINT TO NEXT ENTRY
012522  2352		ISZ ENTCNT	/BUMP THE NUMBER OF ENTRIES
012523  5221		JMP BLOOP	/NOT DONE WITH SEGMENT
012524  6211		CDF 10
012525  1366		TAD (400	/BUMP TO NEXT SEGMENT
012526  1035		TAD BDPTR
012527  3035		DCA BDPTR
012530  1346		TAD LFLAG	/DID WE PROCESS LAST SEGMENT
012531  7640		SZA CLA		/SKIP IF WE DID
012532  5200		JMP NBLOCK	/PROCESS NEW SEGNENT
012533  1765		TAD I (SFUDG	/RESET FREE CORE POINTER
012534  3025		DCA FPAGE	/TO PRESERVE INPUT HANDLER IF PRESENT
012535  5764		JMP I (SAYNON

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 13


		/HANDLE WILD CARDS

012536  1021	WILDA,	TAD CNT		/GET CURRENT CHAR POSITION
012537  1363		TAD (6		/ADD SIZE OF FILENAME
012540  7510		SPA		/SKIP IF IN EXTENSION FIELD
012541  5244		JMP WILDNM	/THIS BUMPS TO EXTENSION
012542  5271		JMP MEXT	/THIS MEANS IT HAS TO BE A MATCH


012543  0000	CHAR,	0
012544  0000	EPNEXT,	0
012545  0000	GPTR2,	0
012546  0000	LFLAG,	0
012547  0000	NCNT,	0
012550  0000	BLOCK,	0
012551  0000	MATFLG,	0
012552  0000	ENTCNT,	0


012563  0006
012564  4043
012565  2126
012566  0400
012567  2600
012570  7644
012571  0077
012572  7753
012573  7726
012574  3230
012575  7770
012576  0004
012577  0005
	2600		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 14


012600  3032	GOT1,	DCA IFCNT	/-# OF BLOCKS IN AC
012601  4777		JMS I (DATCHK	/VERIFY IF /C OR /O ALSO MATCH
012602  2776		ISZ I (TYPFND	/COMES BACK IF THEY DO - 
					/TURN OFF NO FILES MSG FOR THIS INPUT GROUP
012603  1775		TAD I (OPT2	/CHECK FOR /T
012604  0374		AND (20
012605  7650		SNA CLA		/SKIP IF /T
012606  1034		TAD INFWDS	/SEE IF DATE PRESENT
012607  6201		CDF 0
012610  7640		SZA CLA		/SKIP IF NO DATE OR /T
012611  1436		TAD I GPTR1
012612  6211		CDF 10
012613  7440		SZA		/SKIP IF NO DATE OR /T
012614  3773		DCA I (DATE	/GIVE MONITOR FILES DATE
012615  1372		TAD (-4		/MAKE 2 COPIES
012616  3021		DCA CNT		/OF THE INPUT
012617  7040		CMA		/FILE NAME IN
012620  1026		TAD EPTR	/FIELD 1 TO
012621  3010		DCA XR		/WORK WITH THEM
012622  1371		TAD (SPOT-1	/MAKE THEM AT SPOT
012623  3011		DCA XR1		/AND SPOT1
012624  1370		TAD (SPOT1	/SPOT1 WILL ALWAYS
012625  3020		DCA PTR		/CONTAIN THE ORIGINAL
012626  6201	MOVENT,	CDF 0		/AND SPOT WILL
012627  1410		TAD I XR	/CONTAIN THE
012630  6211		CDF 10		/UPDATED VERSION AS
012631  3420		DCA I PTR	/REFLECTED FROM
012632  1420		TAD I PTR	/THE OUTPUT SPECIFICATION
012633  2020		ISZ PTR		/-
012634  3411		DCA I XR1	/-
012635  2021		ISZ CNT		/-
012636  5226		JMP MOVENT	/-
012637  1731		TAD I CL7601	/GET OUTPUT FILENAME
012640  1367		TAD (-5200	/WAS IT *
012641  7650		SNA CLA		/SKIP IF NOT
012642  5251		JMP TSTEXT	/YES... LEAVE FILENAME ALONE
012643  1731		TAD I CL7601	/REPLACE INPUT NAME
012644  3766		DCA I (SPOT	/WITH GIVEN
012645  1765		TAD I (7602	/OUTPUT
012646  3764		DCA I (SPOT+1	/SPECIFICATION
012647  1763		TAD I (7603
012650  3762		DCA I (SPOT+2	/-

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 15


012651  1761	TSTEXT,	TAD I (7604	/SEE IF EXTENSION
012652  1367		TAD (-5200	/WAS *
012653  7650		SNA CLA		/SKIP IF IT WASNT
012654  5257		JMP .+3		/LEAVE INPUT DEFAULT ALONE
012655  1761		TAD I (7604	/REPLACE EXTENSION
012656  3760		DCA I (SPOT+3	/WITH GIVEN EXTENSION
012657  3337		DCA TRFLG	/CLEAR THE TRANSFER FLAG
012660  1757		TAD I (RFLG	/IS /R ON?
012661  1756		TAD I (SDFLG	/OR /D OR INPUT DEV=OUTPUT DEV?
012662  7450		SNA		/SKIP IF ANY
012663  5301		JMP SETGD	/WE ARE DEFINITELY OK
012664  7700		SMA CLA		/IF /D THEN CHECK OUTPUT
012665  1355		TAD (SPOT1-SPOT	/OTHERWISE INPUT
012666  4754		JMS I (LOOKUP
012667  5302		JMP NSETGD	/NO OUTPUT FILE GIVEN
012670  7450		SNA		/AC=BLOCK NO OF FILE OR 0 IF NONE
012671  5302		JMP NSETGD	/NO FILE - DO NOTHING *WM (WELL, ALMOST)
012672  3030		DCA TEMP	/SAVE - WE MIGHT NEED IT
012673  1756		TAD I (SDFLG	/IF OPERATION IS TRANSFER THEN
					/TRFLG IS SET IF FILE HAS NOT
					/MOVED; IF /D TRFLG MUST NOT BE
					/SET ; WE DONT CARE ABOUT
					/RENAME - ITS IRRELEVANT.
012674  7700		SMA CLA		/SKIP IF /D- WILL CAUSE TRFLG=0
012675  1030		TAD TEMP	/GET THE BLOCK FILE IS NOW AT
012676  7041		CIA		/CHECK AGAINST ORIGINAL
012677  1753		TAD I (BLOCK	/LOCATION
012700  7650		SNA CLA		/SKIP IF IT MOVED - NOTE THAT
					/IF THIS SKIPS THE USER IS DOING
					/A PLAY WITH DEATH OPERATION
012701  2337	SETGD,	ISZ TRFLG	/ENABLE TRANSFERING OF THE FILE
012702  1757	NSETGD,	TAD I (RFLG	/GET RENAME FLAG
012703  7650		SNA CLA		/PRINT INPUT NAME ON /D AND /R
012704  1756		TAD I (SDFLG	/SET UP TO PROMPT OR LIST
012705  7710		SPA CLA		/SKIP IF NOT /D
012706  1372		TAD (SPOT-SPOT1	/USE OUTPUT NAME
012707  1352		TAD (SPOT1+4	/USE INPUT NAME
012710  4751		JMS I (PRINTE	/SEE IF HE WANTS TO BE PROMPTED

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 16


012711  1775	FLSRSM,	TAD I (OPT2
012712  7006		RTL		/PUT /N INTO LINK
012713  7600	CL7600,	7600		/GROUP 2 CLA
012714  1756		TAD I (SDFLG	/CHECK FOR NO /D AND SAME DEV
012715  7750		SPA SNA CLA	/SKIP IF NO /D AND SAME DEV
012716  1713		TAD I CL7600	/IS THERE AN OUTPUT?
012717  7470		SNA SZL		/SKIP IF NO /N AND OUTPUT DEV
					/DIDNT SKIP IF NO /D AND SAME DEVICE
012720  5331		JMP NODEL	/DONT DELETE
012721  4750		JMS I (FAKUSR	/FAKE USR HANDLER CALLS
012722  4747		JMS I (200	/CALL USR
012723  0004		4		/CLOSE
012724  4256		SPOT		/OUTPUT FILE NAME
012725  0000		0
012726  7610		CLA SKP		/O.K. TO GET CLOSE ERROR NOW
012727  2746		ISZ I (WRTDIR	/SIGNAL CHANGE MADE TO DIRECTRY
012730  4745		JMS I (UNFAK	/FIXUP HANDLER ADDRESS AGAIN
		NODEL,
012731  7601	CL7601,	7601		/GROUP 3 CLA
012732  1757		TAD I (RFLG
012733  7640		SZA CLA		/SKIP IF NOT /R
012734  5744		JMP I (RENAME	/GO TO RENAME CODE
012735  1337		TAD TRFLG	/SET AC NOT 0 IF TRANSFER GO AHEAD
012736  5743		JMP I (NPG	/LINK TO SOME MORE
012737  0000	TRFLG,	0
012743  3000
012744  4420
012745  3461
012746  3531
012747  0200
012750  3433
012751  4200
012752  4266
012753  2550
012754  4400
012755  0004
012756  2127
012757  2130
012760  4261
012761  7604
012762  4260
012763  7603
012764  4257
012765  7602
012766  4256
012767  2600
012770  4262
012771  4255
012772  7774
012773  7666
012774  0020
012775  7644
012776  2342
012777  3324

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 16-1

	3000		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 17


		/THIS PAGE OF CODE PERFORMS FILE MOVES FROM
		/INPUT TO OUTPUT

013000  7650	NPG,	SNA CLA		/SKIP IF WE CAN DO TRANSFER
013001  5350		JMP NFUNCT	/GO PROCESS NEXT ENTRY

		/THE FOLLOWING SMALL STRANGE PIECE OF CODE
		/DYNAMICALLY ALLOCATES THE BUFFER ACCORDING
		/TO THE FREE SPACE IN FIELD 0 (INCLUDING
		/DIRECTORY SHRINKING) OR ALLOCATES 15 BLOCKS
		/IN FIELD 2 IF ITS AVAILABLE.

013002  1377	F2C1,	TAD (7400	/BECOMES  TAD EPTR  IF ONLY 8K
013003  0377		AND (7400	/CALCULATE FREE SPACE
013004  7104		RAL CLL		/SIZE
013005  7006		RTL		/AND SAVE
013006  7006		RTL		/IT
013007  3033		DCA BUFSIZ
013010  1032		TAD IFCNT	/SET THE OUTPUT 
013011  7041		CIA		/FILE COUNT
013012  3344		DCA OFCNT	/AS POSITIVE NIMBER OF BLOCKS
013013  1344		TAD OFCNT	/SET THE NUMBER
013014  0377		AND (7400	/OF BLOCKS
013015  7650		SNA CLA		/UP FOR ENTER
013016  1344		TAD OFCNT	/IF IT IS LESS
013017  7106		RTL CLL		/THAN 256 OR
013020  7006		RTL		/SET IT TO 0
013021  3030		DCA TEMP	/FOR FILES GREATER THAN 256
013022  1376		TAD (SPOT	/SET THE ADDRESS OF THE
013023  3241		DCA SBLKN	/OUTPUT NAME
013024  1775		TAD I (7600	/IS THERE AN OUTPUT FILE?
013025  7450		SNA		/SKIP IF THERE IS
013026  5350		JMP NFUNCT	/DO NO TRANSFER
013027  1374		TAD (7757	/INDEX INTO TENTATIVE FILE
013030  3242		DCA MSIZE	/TABLE IN ORDER TO
013031  1642		TAD I MSIZE	/CLEAR OUT ANY
013032  0373		AND (7770	/TENTATIVE WE DONT WANT
013033  3642		DCA I MSIZE	/THIS COMES IF AN I/O ERROR HIT
013034  1775		TAD I (7600	/DO THE ENTER
013035  4772		JMS I (FAKUSR	/MAKE USR USE IN CORE HANDLER
013036  1030		TAD TEMP	/ADD IN BLOCK COUNT
013037  4771		JMS I (200
013040  0003		3		/ENTER
013041  4256	SBLKN,	SPOT
013042  0000	MSIZE,	0
013043  5770		JMP I (NOROOM	/ENTER FAILED

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 18


013044  1767		TAD I (SVDATE	/RESTORE REAL DATE TO MONITOR
013045  3766		DCA I (DATE
013046  4765		JMS I (UNFAK	/REMOVE OUR FAKE HANDLER
013047  4764		JMS I (ADDINF	/COPY ADDITIONAL INFO WORDS
013050  1032		TAD IFCNT	/SEE IF ENTER SIZE
013051  7161		STL CIA		/GIVEN BACK IS
013052  1242		TAD MSIZE	/ENOUGH - HANDLES >255 AND
013053  7660		SNL SZA CLA	/NON FILE STRUCTURED
013054  5770		JMP I (NOROOM	/LENGTHS. NOT ENOUGH
013055  3037		DCA INEOF	/CLEAR INPUT END OF FILE
013056  1241		TAD SBLKN	/SET THE OUTPUT BLOCK NUMBER
013057  3327		DCA OBLCKN
013060  1763		TAD I (BLOCK	/SET THE INPUT BLOCK NUMBER
013061  3307		DCA BLOCKN


/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 19


		/THE FOLLOWING PIECE OF CODE IS A TRICKY PIECE
		/THAT CALCULATES THE NUMBER OF BLOCKS TO READ

013062  1032	MOVEIT,	TAD IFCNT	/GET THE NUMBER OF BLOCKS
013063  7100		CLL		/ITS NEGATIVE
013064  1033		TAD BUFSIZ	/ADD ON BUFFER SIZE
013065  7420		SNL		/SKIP IF MORE ROOM AVAILABLE THAN NEEDED
013066  3032		DCA IFCNT	/OTHERWISE RESAVE NEW COUNT
013067  7430		SZL		/SKIP IF NOT AT END OF FILE
013070  2037		ISZ INEOF	/SET END OF FILE INDICATOR
013071  7041		CIA		/MAKES -BUFSIZ+COUNT
013072  1033		TAD BUFSIZ	/MAKES COUNT OF NUMBER OF BLOCK
013073  7112		RTR CLL		/BUILD THE
013074  7012		RTR		/INPUT CONTROL
013075  7012		RTR		/WORD
013076  1362	F2C2,	TAD (20		/BECOMES NOP IF ONLY 8K
013077  3305		DCA INCTLW	/SET INPUT CONTROL WORD
013100  4761		JMS I (CINTER	/CHECK FOR ^C
013101  7410		SKP		/SKIP IF NOT
013102  5760		JMP I (CTCDE	/ABORT OPERATION
013103  6202		CIF 0
013104  4424		JMS I INHAND	/READ INPUT HUNK
013105  0000	INCTLW,	0
013106  0000		0
013107  0000	BLOCKN,	0
013110  5757		JMP I (RDERR	/WELL- SCRATCH THAT FILE
013111  1307		TAD BLOCKN	/UPDATE BLOCK COUNT
013112  1033		TAD BUFSIZ
013113  3307		DCA BLOCKN
013114  7330		AC4000		/SET THE OUTPUT
013115  1305		TAD INCTLW	/CONTROL WORD
013116  3325		DCA OUCTLW
013117  4761		JMS I (CINTER	/CHECK FOR ^C
013120  7410		SKP		/SKIP IF NOT
013121  5760		JMP I (CTCDE	/ABORT OPERATION
013122  2756		ISZ I (MUSTWT	/SIGNAL REAL OUTPUT DONE
013123  6202		CIF 0
013124  4423		JMS I OUHAND	/WRITE A HUNK OF FILE
013125  0000	OUCTLW,	0
013126  0000		0
013127  0000	OBLCKN,	0
013130  5755		JMP I (WRTERR	/WHAT A CRUMBY OUTPUT DEVICE
013131  1327		TAD OBLCKN	/UPDATE THE
013132  1033		TAD BUFSIZ	/OUTPUT FILE
013133  3327		DCA OBLCKN	/BLOCK NUMBER
013134  1037		TAD INEOF	/SEE IF THATS ALL FOLKS
013135  7650		SNA CLA		/SKIP IF WE TRANSFERED FILE
013136  5262		JMP MOVEIT	/DO SOME MORE
013137  1775		TAD I (7600	/OK - LETS MAKE IT PERMANENT
013140  4772		JMS I (FAKUSR	/TELL USR TO USE INCORE HANDLER
013141  4771		JMS I (200
013142  0004		4		/CLOSE
013143  4256		SPOT
013144  0000	OFCNT,	0

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 19-1

013145  5754		JMP I (CLOERR	/THIS IS IMPOSSIBLE (I HOPE)
013146  4765		JMS I (UNFAK	/ENABLE SYSTEM USE OF REAL HANDLER
013147  2753		ISZ I (WRTDIR	/SET WE CHANGED DIRECTORY FLAG
013150  5752	NFUNCT,	JMP I (NENT	/I KNOW ITS INEFFICIENT TO JUMP HERE
					/BUT- IT'S CLEAN...
013152  2510
013153  3531
013154  4252
013155  4034
013156  3527
013157  4023
013160  3476
013161  3623
013162  0020
013163  2550
013164  4502
013165  3461
013166  7666
013167  3530
013170  4266
013171  0200
013172  3433
013173  7770
013174  7757
013175  7600
013176  4256
013177  7400
	3200		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 20


		/HERE COMES GOBBS AND GOBBS OF GOODY LITTLE ROUTINES

		/FIRST WE HAVE A NICE LITTLE ROUTINE WHICH WILL DO
		/HANDY LITTLE THINGS LIKE FETCH A HANDLER
		/AND IN ADDITION ALLOCATE THE SPACE FOR IT.
		/JUST IMAGINE THIS CAN BE YOURS FOR THE LOW LOW PRICE
		/OF 23 INSTRUCTIONS

013200  0000	ASSIGN,	0
013201  3030		DCA TEMP	/SAVE DEVICE NUMBER
013202  1030		TAD TEMP
013203  4777		JMS I (200
013204  0012		12		/INQUIRE ABOUT HANDLER
013205  0000	HADDR1,	0
013206  5776		JMP I (CLOERR	/CANT HAPPEN (I HOPE)
013207  1205		TAD HADDR1	/DID WE GET BACK ADDRESS
013210  7440		SZA		/SKIP IF NOT- NON-RESIDENT
013211  5600		JMP I ASSIGN	/YES... RETURN ITS ENTRY POINT
013212  7410		SKP
013213  7001	TWOPAG,	IAC		/TURN ON 2-PAGE BIT
013214  1025		TAD FPAGE	/GET FREE SPACE POINTER
013215  3224		DCA HADDR2	/SET FOR FETCH
013216  1025		TAD FPAGE	/TAKE AWAY
013217  1375		TAD (-200	/PAGE FROM
013220  3025		DCA FPAGE	/FREE SPACE
013221  1030		TAD TEMP	/GET DEVICE NUMBER
013222  4777		JMS I (200
013223  0001		1		/FETCH
013224  0000	HADDR2,	0
013225  5213		JMP TWOPAG	/FAILED- MUST BE 2-PAGER
013226  1224		TAD HADDR2	/RETURN ENTRY POINT ADDRESS
013227  5600		JMP I ASSIGN

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 21


		/THIS UTILITY ROUTINE RETURNS A SIS BIT
		/CHARACTER FROM ANY FIELD (SET ON ENTRY)
		/FROM ADDRESS IN AC-COUNT(IN HALF WORDS)

013230  7402	GTSXBT,	HLT
013231  7104		CLL RAL		/DOUBLE POINTER ADDRESS
013232  1021		TAD CNT		/ADD NEGATIVE DISPLACEMENT
013233  7030		CML RAR		/GET WORD ADDRESS AGAIN
013234  3030		DCA TEMP	/SAVE IT
013235  1430		TAD I TEMP	/GET WORD
013236  7420		SNL		/SKIP IF WE WANT RIGHT HALF
013237  4242		JMS ROTR6	/MAKE LEFT HALF RIGHT HALF
013240  0374		AND (77		/GET LOW SIX BITS
013241  5630		JMP I GTSXBT


013242  0000	ROTR6,	0
013243  7012		RTR
013244  7012		RTR
013245  7012		RTR
013246  5642		JMP I ROTR6

		/THIS TAKES A SIX BIT CHAR IN AC AND CONVERTS
		/IT TO ASCII TO TYPE IT

013247  7402	CONVTP,	HLT
013250  7440		SZA		/CONVERT 0 TO BLANKS
013251  1373		TAD (40
013252  0374		AND (77
013253  1373		TAD (40
013254  4772		JMS I (TYPE	/TYPE IT
013255  5647		JMP I CONVTP

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 22


		/TYPE TAKES A CHARACTER IN THE AC AND CALLS
		/TTY TO TYPE IT IF ^O IS NOT IN AFFECT
		/ALSO CHECKS FOR ^C AND ^P

013256  7402	TYPE,	HLT
013257  3313		DCA READKB	/SAVE CHARACTER
013260  4771		JMS I (CINTER	/SEE IF ^C
013261  7410		SKP		/NO
013262  5770		JMP I (CTCDE	/ABORT OPERATION IF ^C OR ^P
013263  1367		TAD (17		/^O
013264  4766		JMS I (CTYPE	/SEE IF TYPED
013265  7410		SKP		/SKIP IF NOT
013266  3353		DCA ECHO	/CLEAR ECHO SWITCH
013267  1353		TAD ECHO	/IS ECHO IN EFFECT
013270  7650		SNA CLA		/SKIP IF YES
013271  5656		JMP I TYPE	/IGNORE CHARACTER IF ^O
013272  1313		TAD READKB	/TYPE CHAR
013273  4275		JMS TTY
013274  5656		JMP I TYPE

013275  0000	TTY,	0
013276  3312		DCA TCHAR	/SAVE CHAR
013277  1312		TAD TCHAR	/GET CHAR BACK
					/** NEXT 4 LOCATIONS REPLACED IF BATCH ACTIVE BY:
013300  6046	TTYOUT,	TLS		/** SKP
013301  6041		TSF		/** 7400	/ADDRESS OF BATCH OUTPUT ROUTINE
013302  5301		JMP .-1		/** CIF TOPFIELD
013303  7200		CLA		/** JMS I .-2
013304  1312		TAD TCHAR	/GET CHAR AGAIN
013305  1365		TAD (-15	/IF WE JUST TYPED A C.R. TYPE
013306  7640		SZA CLA		/A L.F.
013307  5675		JMP I TTY
013310  1364		TAD (12
013311  5276		JMP TTY+1
013312  0000	TCHAR,	0

		/GET A CHARACTER FROM KEYBOARD AND
		/CHECK FOR ^C AND ^P

013313  7402	READKB,	HLT
013314  6031		KSF
013315  5314		JMP .-1
013316  4771		JMS I (CINTER	/IS IT ^C
013317  7410		SKP		/SKIP IF NOT
013320  5770		JMP I (CTCDE	/YES
013321  6036		KRB		/READ IT
013322  0363		AND (177	/AND GET RID OF PARITY
013323  5713		JMP I READKB

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 23


		/ROUTINE TO MAKE SURE USER SPECIFIED
		//C AND /O SWITCHES CAUSE CORRECT MATCH WITH DATE

013324  0000	DATCHK,	0
013325  1762		TAD I (OPT1	/CHECK /C
013326  4340		JMS MDATE
013327  7000		NOP		/RETURN HERE WITH AC=0 IF NO /C
013330  7640		SZA CLA		/RETURN HERE WITH AC=0 IF DATES MATCH
013331  5761		JMP I (NENT	/DATES DONT MATCH AND /C GIVEN
013332  1760		TAD I (OPT2	/CHECK /V
013333  4340		JMS MDATE
013334  7240		CMA CLA		/SET AC=-1 IF NO /V
013335  7650		SNA CLA		/RETURN HERE AC=0 IF DATES SAME
013336  5761		JMP I (NENT	/DATES SAME WITH /V-IGNORE FILE
013337  5724		JMP I DATCHK	/CONTINUE

013340  0000	MDATE,	0		//O AND /V ARE AC2
013341  7006		RTL		/IS IT OPTION ON?
013342  7700		SMA CLA		/SKIP IF IT IS
013343  5740		JMP I MDATE	/NO- RETURN WITH 0 AC
013344  2340		ISZ MDATE	/SKIP RETURN
013345  6201		CDF 0
013346  1436		TAD I GPTR1	/GET DATE WORD
013347  7041		CIA
013350  6211		CDF 10
013351  1757		TAD I (SVDATE	/COMPARE WITH MONITORS, 0 IF =
013352  5740		JMP I MDATE

013353  0001	ECHO,	1


013357  3530
013360  7644
013361  2510
013362  7643
013363  0177
013364  0012
013365  7763
013366  3600
013367  0017
013370  3476
013371  3623
013372  3256
013373  0040
013374  0077
013375  7600
013376  4252
013377  0200
	3400		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 24


		/THIS IS THE CORE DEVICE HANDLER
		/THE USR IS MADE TO COME HERE BY A CALL TO FAKUSR.
		/THIS HANDLER SWAPS THE DESIRED BLOCK INTO
		/THE USR AREA AND WRITES THE BLOCK BACK INTO THE
		/INCORE DIRECTORY.

		/THE CODE SET UP IN FIELD 0 TO CALL THE HANDLER IS:
		/	*FAKHND
		/	0		/ENTRY POINT
		/	TAD FAKHND	/GET RETURN ADDRESS
		/	CIF CDF 10
		/	JMP I .+1	/PLOP UP TO BODY OF HANDLER IN FIELD 1
		/	FAKBDY


013400  3270	FAKBDY,	DCA RETLOC	/SAVE ARGUMENT ADDRESS
013401  1670		TAD I RETLOC	/GET CONTROL WORD
013402  7004		RAL		/R/W BIT INTO LINK
013403  7204		CLA RAL		/R/W BIT INTO AC11
013404  1217		TAD DCAXR1	/IF WRITE MAKE DCA XR2 ELSE XR1
013405  3223		DCA DCASPT	/SAVE WHERE WE NEED IT
013406  2270		ISZ RETLOC	/BUMP TO LOCATION (ALWAYS 1400 FROM USR)
013407  2270		ISZ RETLOC	/BUMP TO BLOCK NUMBER
013410  1670		TAD I RETLOC	/GET IT
013411  2270		ISZ RETLOC	/BUMP TO ERROR RETURN
013412  2270		ISZ RETLOC	/NOW TO GOOD RETURN (WE WONT FAIL)
013413  7112		CLL RTR		/MULTIPLY BY 400(8)
013414  7012		RTR
013415  7010		RAR
013416  1377		TAD (4177	/ADD ON TO BEGINING OF DIRECTRY
013417  3011	DCAXR1,	DCA XR1		/SAVE IN BOTH XR1
013420  1011		TAD XR1
013421  3012		DCA XR2		/AND XR2
013422  1376		TAD (1377	/NOW SAVE USR BLOCK AREA
013423  7402	DCASPT,	HLT		/IN EITHER XR1 OR XR2 (R OR W)
013424  1375		TAD (-400	/SET WORD TRANSFER COUNT 
013425  3021		DCA CNT
013426  1412		TAD I XR2	/GET A WORD
013427  3411		DCA I XR1	/PUT A WORD
013430  2021		ISZ CNT
013431  5226		JMP .-3
013432  5670		JMP I RETLOC	/GO BACK TO USR

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 25


		/THIS ROUTINE DOES THE SETUP OF THE INCORE
		/DIRECTORY HANDLER AND CHANGES THE REAL
		/HANDLERS ENTRY POINT IN THE MONITOR SO THAT
		/THE USR WILL CALL IT.

013433  0000	FAKUSR,	0
013434  3261		DCA UNFAK	/SAVE DEVICE NUMBER
013435  1261		TAD UNFAK	/INDEX INTO MONITORS RESIDENCY
013436  1374		TAD (7646	/TABLE
013437  3267		DCA TABAD
013440  1331		TAD WRTDIR	/SEE IF DEVICE HAS DIRECTORY
013441  7710		SPA CLA		/SKIP IF IT DOES
013442  5245		JMP NOSUBST	/!!!DONT CHANGE IF NON-FILE DEV
013443  1373		TAD (FAKHND	/PUT OUR HANDLERS ADDRESS IN
013444  3667		DCA I TABAD	/MONITORS TABLE
013445  6201	NOSUBST,CDF 0
013446  1372		TAD (1200	/PUT IN HANDLER INTERFACE CODE
013447  3771		DCA I (FAKHND+1	/INTO FIELD 0 AS GIVEN ABOVE
013450  1370		TAD (CIF CDF 10
013451  3767		DCA I (FAKHND+2
013452  1366		TAD (5604
013453  3765		DCA I (FAKHND+3
013454  1364		TAD (FAKBDY
013455  3763		DCA I (FAKHND+4
013456  6211		CDF 10
013457  1261		TAD UNFAK	/RETURN WITH DEVICE NUMBER IN AC
013460  5633		JMP I FAKUSR

013461  0000	UNFAK,	0
013462  7200		CLA		/V3C
013463  1023		TAD OUHAND	/RESET MONITORS TABLE TO
013464  3667		DCA I TABAD	/POINT TO REAL HANDLER
013465  3267		DCA TABAD	/V3C
013466  5661		JMP I UNFAK

013467  0000	TABAD,	0
013470  0000	RETLOC,	0

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 26


		/ENTER HERE IF A BRANCH TO 7600 OR 7605 OCCURS

013471  4261	FIXDIR,	JMS UNFAK	/JUST IN CASE
013472  4762		JMS I (CINTER	/CHECK FOR ^C
013473  7000		NOP
013474  7330		AC4000		/EITHER WAY GO BACK TO
013475  3761		DCA I (ALTOPT	/MONITOR BUT AFTER WE HANDLE DIRECTORY
013476  1327	CTCDE,	TAD MUSTWT	/IS MUST WRITE SET?
013477  7650		SNA CLA		/SKIP IF /Q OR MUST WRITE
013500  1331		TAD WRTDIR	/CHECK TO SEE IF WE HAVE TO
013501  7750		SPA SNA CLA	/WRITE THE DIRECTORY
013502  5306		JMP ENDCHK	/CONTINUE
013503  3331		DCA WRTDIR	/KEEP OLD DIRECTORY
013504  4760		JMS I (ERROR	/TELL HIM
013505  7550		DSVED+40

013506  2757	ENDCHK,	ISZ I (ECHO	/TURN ON ECHO
013507  4332		JMS DIROUT	/WRITE OUT THE OUTPUT DIRECTORY
013510  4756		JMS I (RESTORE	/RESTORE 7600 IN FIELD 0
013511  1755		TAD I (OPT2	/GET OPTION /W
013512  7012		RTR
013513  7620		SNL CLA		/SKIP FOR VESION NUMBER
013514  5322		JMP NOVER
013515  3755		DCA I (OPT2	/STOPS RECUSION WITH ^P
013516  4760		JMS I (ERROR	/PRINT VERSION NUMBER
013517  7273		VERNO+40
013520  1354		TAD (15
013521  4753		JMS I (TYPE
013522  1761	NOVER,	TAD I (ALTOPT	/GO BACK TO MONITOR?
013523  7700		SMA CLA		/SKIP IF YES
013524  5752		JMP I (CDCALL	/CALL THE CD AGAIN
013525  6203		CIF CDF 0	/RETURN TO MONITOR
013526  5751		JMP I (7605


013527  0000	MUSTWT,	0
013530  0000	SVDATE,	0
013531  0000	WRTDIR,	0

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 27


013532  0000	DIROUT,	0		/ROUTINE TO WRITE THE OUTPUT DIRECTORY
013533  1331		TAD WRTDIR	/AC>0 IF WE HAVE TO WRITE IT
013534  7750		SPA SNA CLA	/SKIP TO WRITE DIRECTORY
013535  5732		JMP I DIROUT
013536  6202		CIF 0
013537  4423		JMS I OUHAND	/WRITE DIRECTORY BACK ONTO DEVICE
013540  5410		5410
013541  4600		4600
013542  0001		1
013543  5750		JMP I (ODERR	/IS HE IN TROUBLE...
013544  3331		DCA WRTDIR	/CLEAR WRITE DIRECTORY FLAG
013545  5732		JMP I DIROUT	/RETURN
013550  4244
013551  7605
013552  2000
013553  3256
013554  0015
013555  7644
013556  3666
013557  3353
013560  3710
013561  7642
013562  3623
013563  0204
013564  3400
013565  0203
013566  5604
013567  0202
013570  6213
013571  0201
013572  1200
013573  0200
013574  7646
013575  7400
013576  1377
013577  4177
	3600		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 28


		/ROUTINE WHICH ECHOES ^(CHAR) AND SKIP RETURNS IF
		/ONE WE WANTED

013600  0000	CTYPE,	0
013601  3266		DCA RESTORE	/SAVE CHARACTER
013602  6034		KRS		/SEE WHATS IN BUFFER
013603  0377		AND	(177	/GET RID OF PARITY
013604  7041		CIA
013605  1266		TAD RESTORE	/COMPARE AGAINST DESIRED ONE
013606  7650		SNA CLA		/SKIP IF NOT ONE
013607  6031		KSF		/IS FLAG UP?
013610  5600		JMP I CTYPE	/NO... JUST RETURN
013611  6032		KCC		/CLEAR CHARACTER
013612  1376		TAD ("^&177	/OUTPUT ^
013613  4775		JMS I (TTY
013614  1266		TAD RESTORE
013615  1374		TAD (100	/CHAR
013616  4775		JMS I (TTY
013617  1373		TAD (15
013620  4775		JMS I (TTY
013621  2200		ISZ CTYPE	/SKIP RETURN
013622  5600		JMP I CTYPE


		/ROUTINE USED TO DETERMINE IF ^C OR ^P TYPED

013623  0000	CINTER,	0
013624  7325		CLA STL IAC RAL	/CHECK FOR ^C
013625  4200		JMS CTYPE
013626  5230		JMP UPPCK	/NO  CHECK FOR ^P
013627  5234		JMP SPURGE	/YES SET ALTMODE BIT
013630  1372	UPPCK,	TAD (20
013631  4200		JMS CTYPE
013632  5623		JMP I CINTER	/NOT EITHER ^P OR ^C
013633  7410		SKP		/IF ^P CLEAR ALTMODE BIT
013634  7040	SPURGE,	CMA		/SET BIT
013635  3771		DCA I (ALTOPT
013636  2223		ISZ CINTER	/SKIP RETURN
013637  5623		JMP I CINTER

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 29


		/THIS ROUTINE MODIFIES THE THE MONITOR RETURN
		/LOCATIONS TO COME BACK TO FOTP AND SAVES WHAT
		/WAS THERE SO RESTORE CAN RESTORE THEM

013640  0000	INTERC,	0
013641  1770		TAD I (DATE
013642  3767		DCA I (SVDATE	/SAVE MONITOR DATE
013643  6201		CDF 0
013644  1711		TAD I S7600	/SAVE 7600,7601,7602,7605
013645  3304		DCA SCODE	/AND REPLACE WITH
013646  1264		TAD SCIFC	/CIF CDF 10
013647  3711		DCA I S7600	/JMP I .+1
013650  1766		TAD I (7601	/FIXDIR
013651  3305		DCA SCODE+1	/7605 GETS JMP 7600
013652  1365		TAD (5602	/THIS ENABLES FOTP TO WRITE
013653  3766		DCA I (7601	/OUT DIRECTORY AN MANUAL ABORT
013654  1764		TAD I (7602	/OR IF HANDLER PICKS UP ^C
013655  3306		DCA SCODE+2	/AND TRIES TO GO TO MONITOR
013656  1363		TAD (FIXDIR
013657  3764		DCA I (7602
013660  1762		TAD I (7605
013661  3307		DCA SCODE+3
013662  1361		TAD (5200
013663  3762		DCA I (7605
013664  6213	SCIFC,	CIF CDF 10
013665  5640		JMP I INTERC

		/THIS ROUTINE SIMPLY RESTORES THE MONITOR
		/LOCATIONS TO THEIR ORIGINAL VALUE

013666  0000	RESTORE,0
013667  1767		TAD I (SVDATE	/RESTORE DATE
013670  3770		DCA I (DATE
013671  6201		CDF 0
013672  1304		TAD SCODE
013673  3711		DCA I S7600	/RESTORE LOCATIONS
013674  1305		TAD SCODE+1
013675  3766		DCA I (7601
013676  1306		TAD SCODE+2
013677  3764		DCA I (7602
013700  1307		TAD SCODE+3
013701  3762		DCA I (7605
013702  6211		CDF 10
013703  5666		JMP I RESTORE

013704  0000	SCODE,	0;0;0;0
013705  0000
013706  0000
013707  0000

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 30


		/THIS IS THE MAGIC MESSAGE PRINTER
		/IT IS ACTUALLY USED MORE THAN JUST FOR ERROR MESSAGES
		/IF THE MESSAGE ENDS WITH A % THEN THE OPERATION
		/IS ABORTED OTHERWISE CONTROL IS RETURNED
		/TO THE CALLER AND NO CRLF IS GIVEN
		/ALL MESSAGES COMMING THROUGH HERE ARE ECHOED

013710  0000	ERROR,	0
013711  7600	S7600,	7600		/CLA: JUNK MIGHT BE IN AC
013712  6211		CDF 10		/AND DF MIGHT BE WRONG
013713  1760		TAD I (ECHO	/SAVE ECHO STATUS SO WE CAN
013714  3757		DCA I (ECTMP	/RESTORE IT AFTER MESSAGE
013715  2760		ISZ I (ECHO	/TURN ON ECHO
013716  1356		TAD (-100	/USED SO WE CAN USE GTSXBT TO
013717  3021		DCA CNT		/UNPACK THE MESSAGES
013720  1710	PLOOP,	TAD I ERROR	/CONTAINS ADDRESS OF MESSAGE
013721  7510		SPA		/NEGATIVE ERRORS ARE
013722  6201		CDF 0		/IN FIELD 0
013723  4755		JMS I (GTSXBT	/GET CHARACTER
013724  6211		CDF 10
013725  1354		TAD (-45	/IS IT %
013726  7450		SNA		/SKIP IF NOT
013727  5342		JMP CRLF	/WE HIT EOM AND CALLER NO WANT CONTROL
013730  1353		TAD ("%&77	/RESTORE CHARACTER
013731  3345		DCA DFLAG	/SAVE IT FOR LATER
013732  1345		TAD DFLAG	/PRINT IT, 0 PRINTS AS BLANK
013733  4752		JMS I (CONVTP
013734  2021		ISZ CNT		/BUMP TO NEXT CHAR IN MESSAGE
013735  1345		TAD DFLAG	/ARE WE AT END
013736  7640		SZA CLA		/SKIP IF WE ARE
013737  5320		JMP PLOOP	/DO ANOTHER CHARACTER
013740  2310		ISZ ERROR	/SKIP ADDRESS OF MESSAGE
013741  5710		JMP I ERROR	/RETURN
013742  1373	CRLF,	TAD (15		/PRINT CR
013743  4751		JMS I (TYPE	/LF
013744  5750		JMP I (ENDCHK	/FINISH PROCESSING

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 31


013745  0000	DFLAG,	0
013750  3506
013751  3256
013752  3247
013753  0045
013754  7733
013755  3230
013756  7700
013757  4022
013760  3353
013761  5200
013762  7605
013763  3471
013764  7602
013765  5602
013766  7601
013767  3530
013770  7666
013771  7642
013772  0020
013773  0015
013774  0100
013775  3275
013776  0136
013777  0177
	4000		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 32


		/THIS ROUTINE PRINTS A FILENAME.EXTENSION

014000  0000	PNMSUB,	0
014001  3221		DCA NMEPLC	/SAVE ADDRESS OF NAME
014002  1377		TAD (-10	/SET CHAR COUNT
014003  3021		DCA CNT
014004  1221	PNLOOP,	TAD NMEPLC	/GET THE SIXBIT CHAR
014005  4776		JMS I (GTSXBT
014006  7440		SZA		/SKIP IF NULL CHAR
014007  4775		JMS I (CONVTP	/PRINT CHAR
014010  1374		TAD (3		/SEE IF AT START OF
014011  1021		TAD CNT		/EXTENSION
014012  7640		SZA CLA		/SKIP IF SO
014013  5216		JMP .+3
014014  1373		TAD (".&177	/PRINT THE DOT
014015  4772		JMS I (TYPE
014016  2021		ISZ CNT
014017  5204		JMP PNLOOP	/KEEP GOING
014020  5600		JMP I PNMSUB

014021  0000	NMEPLC,	0
014022  0000	ECTMP,	0

014023  4771	RDERR,	JMS I (ERROR
014024  7372		INERR+40	/ERROR READING FILE
014025  1370	DYSTF1,	TAD (SPOT1+4	/PRINT INPUT FILE NAME
014026  4767	DYSTUF,	JMS I (PNMSUB
014027  1366		TAD (15
014030  4772		JMS I (TYPE
014031  1222		TAD ECTMP	/RESTORE ECHO FLAG AS
014032  3765		DCA I (ECHO	/SAVED ON ENTRY TO ERROR
014033  5764		JMP I (NENT	/GO TO NEXT FILE
014034  4771	WRTERR,	JMS I (ERROR
014035  7412		OUERR+40	/ERROR WRITING FILE
014036  1363	POUTNM,	TAD (SPOT+4	/PRINT OUTPUT FILE NAME
014037  5226		JMP DYSTUF
014040  4771	NORUMX,	JMS I (ERROR	/NOT ENOUGH ROOM FOR
014041  7360		SPRBLM+40	/FILE ON OUTPUT DEVICE
014042  5225		JMP DYSTF1

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 33


		/ROUTINE WHICH PRINTS NO FILES MSG IF NECESSARY
		/IT WONT PRINT MESSAGE IF ANY FILE IN A SO CALLED
		/INPUT GROUP MATCHES(A BUG?)

014043  1762	SAYNON,	TAD I (TYPFND	/GET INPUT MATCH FLAG
014044  7640		SZA CLA		/SKIP IF NOTHING MATCHED
014045  5307		JMP GOBCK	/DONT DO MESSAGE
014046  1727		TAD I POPT1
014047  0361		AND (20		/WAS HUSH OPTION SET?
014050  7640		SZA CLA
014051  5307		JMP GOBCK	/BE QUIET
014052  4771	TLP,	JMS I (ERROR	/PRINT MESSAGE
014053  7457		NOFILE+40
014054  1022		TAD INFPTR	/POINT TO END OF INPUT ENTRY
014055  1360		TAD (5		/TO MAKE GTSXBT WORK CORRECTLY
014056  3022		DCA INFPTR
014057  1022		TAD INFPTR	/PRINT THE FILE NAME
014060  4767		JMS I (PNMSUB
014061  1357		TAD (OTAB-2	/NOW PRINT /V,/C,/O IF
014062  3012		DCA XR2		/ANY OF THEM SPECIFIED
014063  2012	NOPT1,	ISZ XR2		/FIX POINTER WHEN SWITCH NOT ON
014064  1412	NOPT,	TAD I XR2	/GET ADDRESS OF OPTION
014065  7450		SNA 		/SKIP IF NOT AT END
014066  5301		JMP CRIT	/WE ARE AT END
014067  3030		DCA TEMP
014070  1430		TAD I TEMP	/GET OPTION WORD
014071  0412		AND I XR2	/AND WITH OPTION BIT
014072  7650		SNA CLA		/SKIP IF OPTION GIVEN
014073  5263		JMP NOPT1	/DO ANOTHER
014074  1356		TAD ("/&177	/PRINT /
014075  4772		JMS I (TYPE
014076  1412		TAD I XR2	/OPTION
014077  4772		JMS I (TYPE
014100  5264		JMP NOPT	/DO ANOTHER
014101  1366	CRIT,	TAD (15		/END WITH A CRLF
014102  4772		JMS I (TYPE
014103  1222		TAD ECTMP	/RESTORE ECHO FLAG THAT ERROR
014104  3765		DCA I (ECHO	/SAVED
014105  2027		ISZ INSCNT	/PRINT MESSAGE FOR ALL FILES
014106  5252		JMP TLP		/IN GROUP
014107  1757	GOBCK,	TAD I (USEROD	/GET USER SPECIFIED DEVICE
014110  7650		SNA CLA		/SKIP IF HE GAVE ONE
014111  1755		TAD I (SDFLG	/IF HE DIDNT WE CANT HANDLE /D
014112  7710		SPA CLA		/SKIP IF NO /D
014113  1723		TAD I MOIN	/YEP. /D BETTER NOT BE ANY MORE INPUT
014114  7640		SZA CLA		/THERE WASN'T - O.K.
014115  5320		JMP DELERR	/WARN HIM OF THE SHORTCOMING
014116  1323		TAD MOIN	/GET SAVED INPUT POINTER
014117  5754		JMP I (DOMOIN	/AND DO SOME MORE INPUTS

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 34


014120  4771	DELERR,	JMS I (ERROR
014121  7520		CNTDEL+40	/MULTIPLE DEVICE DELETE

014122  0000	USEROD,	0
014123  0000	MOIN,	0

		/TABLE OF SWITCHES FOR "NO FILES" MESSAGE

014124  7644	OTAB,	OPT2
014125  0004		4
014126  0126		"V&177
014127  7643	POPT1,	OPT1
014130  1000		1000
014131  0103		"C&177
014132  7644		OPT2
014133  1000		1000
014134  0117		"O&177
014135  0000		0

014154  2103
014155  2127
014156  0057
014157  4122
014160  0005
014161  0020
014162  2342
014163  4262
014164  2510
014165  3353
014166  0015
014167  4000
014170  4266
014171  3710
014172  3256
014173  0056
014174  0003
014175  3247
014176  3230
014177  7770
	4200		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 35


		/THIS ROUTINE HANDLES THE /L AND /Q OPTIONS
		/IF EITHER IS ON IT PRINTS THE NAME
		/THEN IF ITS /Q IT PRINTS A ? AND WAITS FOR
		/A RESPONSE. IF Y IT RETURNS, ANYTHING ELSE
		/AND IT GOES TO PROCESS THE NEXT DIRECTORY ENTRY

014200  0000	PRINTE,	0
014201  3777		DCA I (NMEPLC	/SAVE ADDRESS OF NAME
014202  1776		TAD I (OPT1	/CHECK /L
014203  7010		RAR
014204  7630		SZL CLA		/SKIP IF NO /L
014205  5213		JMP PIT		/PRINT NAME
014206  1775		TAD I (OPT2	/CHECK /Q
014207  0374		AND (200
014210  7650		SNA CLA		/SKIP IF /Q
014211  5600		JMP I PRINTE	/RETURN
014212  2773		ISZ I (ECHO	/IF /Q FORCE ECHO ON
014213  1777	PIT,	TAD I (NMEPLC	/NOW PRINT FILENAME
014214  4772		JMS I (PNMSUB
014215  3031		DCA OKFLAG	/CLEAR OKFLAG
014216  1775		TAD I (OPT2	/WAS IT /Q?
014217  0374		AND (200
014220  7650		SNA CLA		/SKIP IF /Q
014221  5236		JMP FUNCT2	/JUST PRINT CRLF
014222  1371		TAD ("?&177	/PRINT ?
014223  4770		JMS I (TYPE
014224  4767		JMS I (READKB	/GET A CHAR
014225  3304		DCA	ODIRIN
014226  1304		TAD	ODIRIN
014227  0366		AND	(137	/ALLOW LC
014230  1365		TAD	(-131	/IS IT Y?
014231  7440		SZA
014232  1364		TAD	(131-112 /OR 'JA'?
014233  3031		DCA	OKFLAG	/IF RESULT = 0 IT IS OK
014234  1304		TAD	ODIRIN
014235  4770		JMS I (TYPE	/ECHO IT
014236  1363	FUNCT2,	TAD (15		/PRINT CRLF
014237  4770		JMS I (TYPE
014240  1031		TAD OKFLAG	/OKFLG=0 MEANS YES
014241  7640		SZA CLA		/SKIP IF TO PROCESS FILE
014242  5762		JMP I (NFUNCT	/SKIP THIS FILE
014243  5600		JMP I PRINTE	/RETURN

014244  7200	ODERR,	CLA
014245  3761		DCA I (WRTDIR	/FIX RECURSION
014246  4760		JMS I (ERROR
014247  7340		ODIERR+40	/ERROR WRITING DIRECTORY
014250  4760	BODIR,	JMS I (ERROR
014251  7505		BODORM+40	/BAD OUTPUT DIRECTORY
014252  4760	CLOERR,	JMS I (ERROR
014253  7254		SERR+40		/SYSTEM ERROR
014254  7402		HLT		/DONT LET HIM CONTINUE
014255  5254		JMP .-1		/IT CAN ONLY GET WORSE


/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 35-1

014256  0000	SPOT,	ZBLOCK 4	/ROOM FOR OUTPUT FILE NAME
014262  0000	SPOT1,	ZBLOCK 4	/ROOM FOR INPUT FILE NAME

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 36


		/CODE TO HANDLE OUT OF ROOM CONDITION ON OUTPUT DEVICE

014266  4757	NOROOM,	JMS I (UNFAK	/RESTORE THE REAL OUTPUT HANDLER
014267  1776		TAD I (OPT1
014270  0356		AND (100	/CHECK FOR THE /F OPTION SPECIFIED
014271  7650		SNA CLA
014272  5755		JMP I (NORUMX	/NO - GIVE AN ERROR MESSAGE
014273  4754		JMS I (DIROUT	/FAILSAFING - WRITE OUT THE OUTPUT DIRECTORY
014274  4760		JMS I (ERROR	/PRINT THE MESSAGE
014275  7567		FLSFMS+40	/"MOUNT NEXT OUTPUT VOLUME"
014276  4767		JMS I (READKB	/GET AN ANSWER
014277  7200		CLA		/ANY CHAR EXCEPT ^C OR ^P IS YES
014300  1363		TAD (15
014301  4770		JMS I (TYPE	/PRINT CRLF
014302  4304		JMS ODIRIN	/READ IN THE NEW OUTPUT DIRECTORY
014303  5753		JMP I (FLSRSM	/RECOMPUTE THE PENDING TRANSFER.

014304  0000	ODIRIN,	0		/SUBROUTINE TO READ IN THE OUTPUT DIRECTORY
014305  1752		TAD I (7600	/GET OUTPUT DEVICE NUMBER
014306  7450		SNA		/IS IT PRESENT?
014307  5336		JMP NOUTFL	/NO - DON'T READ OUTPUT DIRECTORY
014310  1351		TAD (7757	/ADD ADDRESS OF MONITOR TABLE
014311  3030		DCA TEMP	/TO INDEX INTO IT
014312  1430		TAD I TEMP	/FILE STRUCTURED BIT IS 0, READ-ONLY 1
014313  7104		CLL RAL
014314  7510		SPA		/IF READ-ONLY ERROR
014315  5750		JMP I	(RDOERR
014316  7620		SNL CLA		/SKIP IF DIRECTORY DEVICE
014317  5336		JMP NOUTFL	/WE DONT WANT TO READ OR WRITE DIRECTORY
014320  6202		CIF 0
014321  4423		JMS I OUHAND	/READ DIRECTORY
014322  1410		1410
014323  4600	ODBUF,	OUBUFR
014324  0001		1
014325  5747		JMP I (ONDERR	/ERROR
014326  1723		TAD I ODBUF
014327  7140		CMA CLL		/CHECK FOR LEGAL OUTPUT DIRECTORY - FIRST
014330  1746		TAD I (OUBUFR+2	/WORD OF AN OS/8 DIRECTORY IS .LT. 50
014331  7420		SNL		/AND THE THIRD WORD MUST BE .LT. 7,
014332  1345		TAD (-120	/SO WE CAN CHECK FOR THE SUM OF THOSE
014333  7630		SZL CLA		/WORDS BEING .LT. 80
014334  5744		JMP I (BODIR	/ERROR - CANT BE DIRECTORY
014335  7410		SKP
014336  7330	NOUTFL,	AC4000		/WRTDIR MINUS MEANS DONT WRITE
014337  3761		DCA I (WRTDIR	/DIRECTORY
014340  3743		DCA I (MUSTWT	/CLEAR THE MUST WRITE FLAG
014341  3007		DCA DIRKEY	/CLEAR THE OS/8 DIRECTORY KEY
014342  5704		JMP I ODIRIN	/RETURN

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 37


014343  3527
014344  4250
014345  7660
014346  4602
014347  2133
014350  2131
014351  7757
014352  7600
014353  2711
014354  3532
014355  4040
014356  0100
014357  3461
014360  3710
014361  3531
014362  3150
014363  0015
014364  0017
014365  7647
014366  0137
014367  3313
014370  3256
014371  0077
014372  4000
014373  3353
014374  0200
014375  7644
014376  7643
014377  4021
	4400		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 38


		/SUBROUTINE TO DO LOOKUPS ON OUTPUT DEVICE
		/DOES IMMEDIATE RETURN IF NO OUTPUT DEVICE
		/OTHERWISE RETURNS WITH BLOCK OF FILE IN AC   OR
		/0 IN AC MEANING NOT FOUND OR NON-FILE STRUCTURED DEVICE
014400  0000	LOOKUP,	0
014401  1377		TAD (SPOT	/ADDRESS OF FILE NAME
014402  3211		DCA PLACE
014403  1776		TAD I (7600	/GET OUTPUT DEVICE
014404  7450		SNA		/SKIP IF PRESENT
014405  5600		JMP I LOOKUP	/NO OUTPUT DEVICE
014406  4775		JMS I (FAKUSR	/FAKE OUT THE USR
014407  4774		JMS I (200
014410  0002		2		/LOOKUP
014411  4256	PLACE,	SPOT
014412  0000		0
014413  3211		DCA PLACE	/NOT FOUND, 0 PLACE
014414  4773		JMS I (UNFAK	/RESTORE RESIDENT HANDLER
014415  2200		ISZ LOOKUP	/SKIP RETURN
014416  1211		TAD PLACE	/WITH BLOCK IN AC
014417  5600		JMP I LOOKUP

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 39


		/HERE IS WHAT WE HAVE ALL BEEN WAITING FOR

		    //////////////////////////////////////
		   /					/
		  /		RENAME		       /
		 /				      /
		//////////////////////////////////////

014420  4200	RENAME,	JMS LOOKUP
014421  5772		JMP I (CLOERR	/SUPER SYSTEM DISASTER
014422  3301		DCA OBLOCK	/V3C SAVE BLOCK OF NEW NAME (IF ANY)
014423  1371		TAD (SPOT1-SPOT	/LOOKUP INPUT FILE
014424  4200		JMS LOOKUP
014425  5772		JMP I (CLOERR	/SUPER SYSTEM DISASTER
014426  7041		CIA		/LOOKUP INPUT NAME ON OUTPUT DEVICE
014427  1301		TAD OBLOCK	/IS IT SAME SPOT AS NEW NAME ON OUTPUT DEVICE?
014430  7640		SZA CLA		/V3C
014431  4272		JMS EXERR	/NO, MAYBE ALREADY EXISTS
014432  1770		TAD I (1404	/GET ADDRESS OF FILE
014433  1017		TAD 17		/FROM MONITOR BY THE
014434  1367		TAD (-4		/DOCUMENTED METHOD
014435  3030		DCA TEMP
014436  1366		TAD (SPOT-1	/GET NEW OUTPUT NAME
014437  3011		DCA XR1
014440  1367		TAD (-4		/SET UP COUNT OF WORDS TO MOVE
014441  3021		DCA CNT
014442  1411	RNAM,	TAD I XR1	/MOVE THEM
014443  3430		DCA I TEMP
014444  2030		ISZ TEMP
014445  2021		ISZ CNT
014446  5242		JMP RNAM	/CONTINUE TILL DONE
014447  1770		TAD I (1404	/V3C
014450  7650		SNA CLA		/BUT IS THERE ROOM FOR DATE?
014451  5254		JMP NONUDA	/NO, NO ADDITIONAL INFO WORDS
014452  1765		TAD I (DATE	/YES, MOVE DATE
014453  3430		DCA I TEMP	/INTO NEW FILENAME ENTRY
014454  4257	NONUDA,	JMS WRKEY	/V3C
014455  2764		ISZ I (WRTDIR	/INDICATE DIRECTORY CHANGED
014456  5763		JMP I (NFUNCT	/DO NEXT FILE

014457  0000	WRKEY,	0		/V9
014460  1007		TAD DIRKEY	/GET "SEGMENT IN CORE" KEY
014461  0362		AND (7		/ISOLATE SEGMENT NUMBER
014462  3267		DCA SEGNO	/NUMBER FOR WRITE
014463  6202		CIF 0
014464  4451		JMS I 51	/CALL HANDLER USR USED TO DO
014465  4210		4210		/LOOKUP, THIS POINTS TO FOTPS
014466  1400		1400		/INCORE DIRECTORY HANDLER
014467  0000	SEGNO,	0		/REWRITE UPDATED DIRECTORY BLOCK
014470  5772		JMP I (CLOERR	/SYSTEM ERROR
014471  5657		JMP I WRKEY

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 40


014472  0000	EXERR,	0		/BLOCK NUMBERS DIFFERENT
014473  1301		TAD OBLOCK	/LOOK AT BLOCK NUMBER OF EXISTING FILE
014474  7650		SNA CLA		/DID IT REALLY EXIST?
014475  5672		JMP I EXERR	/NO, OK TO RENAME TO THIS NAME
014476  4761		JMS I (ERROR	/YES, TRYING TO RENAME TO EXISTING NAME
014477  7263		RENERR+40	/FILE ALREADY EXISTS
014500  5760		JMP I (POUTNM

014501  0000	OBLOCK,	0		/TEMPORARY, HOLDS BLOCK NUMBER OF ALREADY
					/EXISTING FILE WITH SAME NAME AS PROPOSED NEW NAME
					/ON OUT PUT DEVICE (OR 0 IF NONE)

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 41


		/THIS ROUTINE TRANSFERS THE ADDITIONAL
		/INFORMATION WORDS OF THE INPUT FILE WHEN COPYING
		/IT IF THERE ARE ANY

014502  0000	ADDINF,	0
014503  7201		CLA IAC		/AC=1
014504  1770		TAD I (1404	/GET NUMBER OF WORDS FROM OUTPUT DIRECTORY
014505  7500		SMA		/SKIP IF 2 OR MORE
014506  5332		JMP NOTRAN	/WE DONT TOUCH IT
014507  3200		DCA LOOKUP	/SAVE NEGATIVE NUMBER TO MOVE
014510  1200		TAD LOOKUP	/ADD NUMBER TO LOC 17
014511  1017		TAD 17		/TO FIND ADDR(SECOND)
014512  3341		DCA PPTR1	/USE 17
014513  1034		TAD INFWDS	/GET NUMBER OF AIW IN INPUT
014514  7041		CIA		/NEGATE
014515  7001		IAC		/ADD 1
014516  7500		SMA		/SKIP IF MORE THAN 1 AIW
014517  5336		JMP ZEROUT	/ZERO OUTPUT AIW
014520  3030		DCA TEMP	/SAVE COUNT
014521  2036	MOVEM,	ISZ GPTR1	/BUMP PTR (1ST TIME PAST DATE)
014522  6201		CDF 0
014523  1436		TAD I GPTR1	/GET WORD
014524  6211	ZLOOP,	CDF 10
014525  3741		DCA I PPTR1	/PUT IT INTO OUTPUT DIRECTORY
014526  2341		ISZ PPTR1
014527  2200		ISZ LOOKUP	/HAS OUTPUT COUNT OVERFLOWED?
014530  5334		JMP MORE	/MORE OUTPUT TO DO
014531  4257		JMS WRKEY	/V9
014532  7200	NOTRAN,	CLA		/EXIT
014533  5702		JMP I ADDINF	/WERE DONE
014534  2030	MORE,	ISZ TEMP	/BUMP INPUT COUNT
014535  5321		JMP MOVEM	/IT HASNT OVERFLOWED
014536  7240	ZEROUT,	CLA CMA		/NO MORE INPUT WORDS-
014537  3030		DCA TEMP	/SO FIX UP TO ZERO REST OF OUTPUT WORDS
014540  5324		JMP ZLOOP	/DO ALL THE OUTPUTS

014541  0000	PPTR1,	0
014560  4036
014561  3710
014562  0007
014563  3150
014564  3531
014565  7666
014566  4255
014567  7774
014570  1404
014571  0004
014572  4252
014573  3461
014574  0200
014575  3433
014576  7600
014577  4256
	4600		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 42


		/** THIS IS THE STARTING ADDRESS OF FOTP!!!

014600  4204	FOTP,	JMS INIT	/REGULAR ENTRY POINT
014601  4204		JMS INIT	/CHAIN ENTRY POINT
014602  5777		JMP I (CDCALL	/CALL COMMAND DECODER
014603  5776		JMP I (BYPSCD	/DONT CALL COMMAND DECODER
014604  0000	INIT,	0
014605  2204		ISZ INIT	/DO SKIP RETURN
014606  7300		CLA CLL
014607  6201		CDF 0
014610  1775		TAD I (7777	/GET BATCH CONTROL WORD
014611  0374		AND (70
014612  1254		TAD FCIF0	/FORM CIF TO BATCH FIELD
014613  3300		DCA BATCIF
014614  1775		TAD I (7777
014615  6211		CDF 10
014616  7006		RTL
014617  7620		SNL CLA		/BATCH RUNNING?
014620  5230		JMP NOBTCH	/NO
014621  1276	BMOVLP,	TAD BATOUT
014622  3675		DCA I TTOUTP	/MOVE IN SUBSTITUTE TTY OUTPUT CODE
014623  2221		ISZ BMOVLP
014624  2275		ISZ TTOUTP
014625  2274		ISZ TTCNT4
014626  5221		JMP .-5
014627  7240		STA
014630  3273	NOBTCH,	DCA CORFUJ	/ =0 IF NO BATCH, -1 IF BATCH
014631  1670	MOVMSG,	TAD I ONCE	/MOVE MSGS TO LOWER FIELD
014632  6201		CDF 0
014633  3671		DCA I ONLY
014634  6211		CDF 10
014635  1667		TAD I M1
014636  6201		CDF 0		/MOVE CORE DETERMINER
014637  3667		DCA I M1	/INTO FIELD 0 ALSO
014640  6211		CDF 10
014641  2267		ISZ M1
014642  2270		ISZ ONCE
014643  2271		ISZ ONLY
014644  2272		ISZ CODE
014645  5231		JMP MOVMSG
014646  1377		TAD (2000	/SET RESTART LOCATION
014647  6201		CDF 0
014650  3773		DCA I (7745
014651  1372		TAD (6403	/SET JSW
014652  3771		DCA I (7746
014653  6211		CDF 10

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 43


014654  6202	FCIF0,	CIF 0
014655  4770		JMS I (CORE
014656  1273		TAD CORFUJ	/COMPUTE AMOUNT OF CORE EXCLUDING BATCH FIELD
014657  1375		TAD (-1
014660  7640		SZA CLA		/SKIP IF WE HAVE ONLY 8K (OR 12K AND BATCH)
014661  5604		JMP I INIT
014662  1367		TAD (TAD EPTR	/PATCH LOCATIONS IN FOTP
014663  3766		DCA I (F2C1	/TO WORK WITH ONLY 8K
014664  1365		TAD (NOP
014665  3764		DCA I (F2C2
014666  5604		JMP I INIT	/START

014667  4600	M1,	.&7600
014670  5000	ONCE,	MSGS
014671  7200	ONLY,	LSTFPG+200
014672  7400	CODE,	7400

014673  0000	CORFUJ,	0
014674  7774	TTCNT4,	-4
014675  3300	TTOUTP,	TTYOUT
014676  7410	BATOUT,	SKP		/OUTPUT TO BATCH LOG
014677  7400		7400
014700  7402	BATCIF,	HLT
014701  4701		TTYOUT+1&177+4600	/JMS I .-2

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 44


		/SUBR TO DETERMINE MACHINE SIZE - RETURNS NUMBER OF
		/BANKS IN AC.
		/MUST RUN IN FIELD 0.

014702  0000	CORE,	0
014703  1355		TAD	C6203
014704  6214		RDF
014705  3350		DCA	CORRTN
014706  6201		CDF 0
014707  1775		TAD I (7777
014710  0374		AND (70
014711  7450		SNA		/DOES LOCATION 7777 SPECIFY CORE SIZE?
014712  5316		JMP CORELP	/NO
014713  7112		CLL RTR		/YES - BELIEVE IT.
014714  7010		RAR
014715  5350		JMP CORRTN
014716  6201	CORELP,	CDF 0		/NEEDED FOR PDP-8L
014717  1354		TAD TRYFLD	/GET FLD TO TST
014720  7106		CLL RTL
014721  7004		RAL
014722  0333		AND	COR70	/MASK USEFUL BITS
014723  1316		TAD	CORELP
014724  3325		DCA	.+1	/SET UP CDF TO FLD
014725  0000	COR706,	0
014726  1752		TAD I	CORLOC	/SAV CURRENT CONTENTS
014727  7000		NOP		/HACK FOR PDP-8
014730  3325		DCA	.-3
014731  1327		TAD	.-2	/7000 IS A GOOD PATTERN
014732  3752		DCA I	CORLOC
014733  0070	COR70,	70		/HACK FOR PDP-8.,NO-OP
014734  1752		TAD I	CORLOC	/TRY TO READ BK 7000
014735  7400		7400		/HACK FOR PDP-8,.NO-OP
014736  1335		TAD	.-1	/GUARD AGAINST WRAP AROUND
014737  1353		TAD	CORLOC+1	/TAD 1400
014740  7640		SZA CLA
014741  5346		JMP	.+5	/NON EXISTENT FLD EXIT
014742  1325		TAD	COR706	/RESTORE CONTENS DESTROYED
014743  3752		DCA I	CORLOC
014744  2354		ISZ	TRYFLD /TRY NXT HIGHER FLD
014745  5316		JMP	CORELP
014746  7240		STA
014747  1354		TAD	TRYFLD
014750  0000	CORRTN,	0
014751  5702		JMP I	CORE
014752  4735	CORLOC,	COR70+2		/ADR TO TST IN EACH FLD
014753  1400		1400		/7000+7400+1400=0
014754  0001	TRYFLD,	1		/CURRENT FLD TO TST
014755  6203	C6203,	6203

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 45


014764  3076
014765  7000
014766  3002
014767  1026
014770  4702
014771  7746
014772  6403
014773  7745
014774  0070
014775  7777
014776  2003
014777  2000
	5000		PAGE

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 46


		/FOTP'S ERROR MESSAGES
		/THESE RESIDE IN FIELD 0 LOCATIONS 7200-7577
	0005		VV1=VERSION%12
	0062		VV2=VV1^12
	7200	MSGS,	RELOC LSTFPG+200
		IFNDEF GERMAN <
017200* 1114	ILLQ,	TEXT /ILLEGAL ?%/
017201* 1405
017202* 0701
017203* 1440
017204* 7745
017205* 0000
017206* 1114	ILLA,	TEXT /ILLEGAL *%/
017207* 1405
017210* 0701
017211* 1440
017212* 5245
017213* 0000
017214* 2331	SERR,	TEXT /SYSTEM ERROR/
017215* 2324
017216* 0515
017217* 4005
017220* 2222
017221* 1722
017222* 0000
017223* 0114	RENERR,	TEXT /ALREADY EXISTS-/
017224* 2205
017225* 0104
017226* 3140
017227* 0530
017230* 1123
017231* 2423
017232* 5500
017233* 0617	VERNO,	TEXT /FOTP V/
017234* 2420
017235* 4026
017236* 0000
	7236		*.-1
017236* 6560	VERLOC,	VV1+60^100+VERSION-VV2+60	/TWO-DIGIT VERSION NUMBER
017237* 3000		SUBVER&77^100			/AND 1 CHAR PATCH LEVEL
017240* 0522	BADIRD,	TEXT /ERROR READING INPUT DIRECTORY%/
017241* 2217
017242* 2240
017243* 2205
017244* 0104
017245* 1116
017246* 0740
017247* 1116
017250* 2025
017251* 2440
017252* 0411
017253* 2205
017254* 0324
017255* 1722

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 46-1

017256* 3145
017257* 0000
017260* 0522	ODRERR,	TEXT /ERROR READING OUTPUT DIRECTORY%/
017261* 2217
017262* 2240
017263* 2205
017264* 0104
017265* 1116
017266* 0740
017267* 1725
017270* 2420
017271* 2524
017272* 4004
017273* 1122
017274* 0503
017275* 2417
017276* 2231
017277* 4500
017300* 0522	ODIERR,	TEXT /ERROR WRITING OUTPUT DIRECTORY%/
017301* 2217
017302* 2240
017303* 2722
017304* 1124
017305* 1116
017306* 0740
017307* 1725
017310* 2420
017311* 2524
017312* 4004
017313* 1122
017314* 0503
017315* 2417
017316* 2231
017317* 4500
017320* 1617	SPRBLM,	TEXT /NO ROOM, SKIPPING-/
017321* 4022
017322* 1717
017323* 1554
017324* 4023
017325* 1311
017326* 2020
017327* 1116
017330* 0755
017331* 0000
017332* 0522	INERR,	TEXT /ERROR ON INPUT DEVICE-SKIPPING-/
017333* 2217
017334* 2240
017335* 1716
017336* 4011
017337* 1620
017340* 2524
017341* 4004
017342* 0526
017343* 1103
017344* 0555

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 46-2

017345* 2313
017346* 1120
017347* 2011
017350* 1607
017351* 5500
017352* 0522	OUERR,	TEXT /ERROR ON OUTPUT DEVICE-SKIPPING-/
017353* 2217
017354* 2240
017355* 1716
017356* 4017
017357* 2524
017360* 2025
017361* 2440
017362* 0405
017363* 2611
017364* 0305
017365* 5523
017366* 1311
017367* 2020
017370* 1116
017371* 0755
017372* 0000
017373* 2523	NFLEIN,	TEXT /USE PIP FOR NON-FILE STRUCTURED INPUT%/
017374* 0540
017375* 2011
017376* 2040
017377* 0617
017400* 2240
017401* 1617
017402* 1655
017403* 0611
017404* 1405
017405* 4023
017406* 2422
017407* 2503
017410* 2425
017411* 2205
017412* 0440
017413* 1116
017414* 2025
017415* 2445
017416* 0000
017417* 1617	NOFILE,	TEXT /NO FILES OF THE FORM:/
017420* 4006
017421* 1114
017422* 0523
017423* 4017
017424* 0640
017425* 2410
017426* 0540
017427* 0617
017430* 2215
017431* 7200
017432* 0201	BIDIRM,	TEXT /BAD INPUT DIRECTORY%/
017433* 0440

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 46-3

017434* 1116
017435* 2025
017436* 2440
017437* 0411
017440* 2205
017441* 0324
017442* 1722
017443* 3145
017444* 0000
017445* 0201	BODORM,	TEXT /BAD OUTPUT DIRECTORY%/
017446* 0440
017447* 1725
017450* 2420
017451* 2524
017452* 4004
017453* 1122
017454* 0503
017455* 2417
017456* 2231
017457* 4500
017460* 0405	CNTDEL,	TEXT /DELETES PERFORMED ONLY ON INPUT DEVICE GROUP 1%/
017461* 1405
017462* 2405
017463* 2340
017464* 2005
017465* 2206
017466* 1722
017467* 1505
017470* 0440
017471* 1716
017472* 1431
017473* 4017
017474* 1640
017475* 1116
017476* 2025
017477* 2440
017500* 0405
017501* 2611
017502* 0305
017503* 4007
017504* 2217
017505* 2520
017506* 4061
017507* 4500
017510* 1722	DSVED,	TEXT /ORIGINAL DIRECTORY PRESERVED%/
017511* 1107
017512* 1116
017513* 0114
017514* 4004
017515* 1122
017516* 0503
017517* 2417
017520* 2231
017521* 4020
017522* 2205

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 46-4

017523* 2305
017524* 2226
017525* 0504
017526* 4500
017527* 1517	FLSFMS,	TEXT /MOUNT NEXT OUTPUT VOLUME:/
017530* 2516
017531* 2440
017532* 1605
017533* 3024
017534* 4017
017535* 2524
017536* 2025
017537* 2440
017540* 2617
017541* 1425
017542* 1505
017543* 7200
017544* 1725	ERRRDO,	TEXT /OUTPUT DEVICE IS READ-ONLY%/
017545* 2420
017546* 2524
017547* 4004
017550* 0526
017551* 1103
017552* 0540
017553* 1123
017554* 4022
017555* 0501
017556* 0455
017557* 1716
017560* 1431
017561* 4500
			>

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 47


		IFDEF GERMAN <
		ILLQ,	TEXT /FALSCHES ?%/
		ILLA,	TEXT /FALSCHER *%/
		SERR,	TEXT /SYSTEM-FEHLER/
		RENERR,	TEXT /GIBT ES SCHON: /
		VERNO,	TEXT /FOTP V/
			*.-1
		VERLOC,	VV1+60^100+VERSION-VV2+60	/TWO-DIGIT VERSION NUMBER
			SUBVER&77^100			/AND 1 CHAR PATCH LEVEL
		BADIRD,	TEXT /EIN-VERZEICHNIS LESE-FEHLER%/
		ODRERR,	TEXT /AUS-VERZEICHNIS LESE-FEHLER%/
		ODIERR,	TEXT /AUS-VERZEICHNIS SCHREIB-FEHLER%/
		SPRBLM,	TEXT /KEIN PLATZ FUER: /
		INERR,	TEXT /LESE-FEHLER BEI: /
		OUERR,	TEXT /SCHREIB-FEHLER BEI: /
		NFLEIN,	TEXT /BENUETZE 'PIP' ZUM LESEN VON NICHT-DATEIEN%/
		NOFILE,	TEXT /KEINE DATEIEN DER FORM: /
		BIDIRM,	TEXT /EIN-VERZEICHNIS KAPUTT%/
		BODORM,	TEXT /AUS-VERZEICHNIS KAPUTT%/
		CNTDEL,	TEXT /NUR ERSTE EIN-ANGABE WURDE ZUM LOESCHEN BENUTZT%/
		DSVED,	TEXT /URSPRUENGLICHES VERZEICHNIS INTAKT%/
		FLSFMS,	TEXT /BITTE NAECHSTEN DATENTRAEGER! /
		ERRRDO,	TEXT /AUS-GERAET KANN NUR LESEN%/
			>

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 48


	5362		RELOC
	5400		PAGE
	0001		FIELD 1		/SELF-STARTING BINARY LOADER STUFF FOR ABSLDR
	4600		*FOTP
			$

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 49

ACK    2023      DIROUT 3532      LSTFPG 7000      OPT1   7643
ACM2   7344      DOMOIN 2103      MATFLG 2551      OPT2   7644
ACM3   7346      DSVED  7510      MDATE  3340      OTAB   4124
AC2    7326      DYSTF1 4025      MEXT   2471      OUBUFR 4600
AC4000 7330      DYSTUF 4026      MLP    2445      OUCTLW 3125
ADDINF 4502      ECHO   3353      MN1    2432      OUERR  7352
AINO   2135      ECTMP  4022      MOIN   4123      OUHAND 0023
ALTOPT 7642      EMPTY  2513      MORE   4534      PG1    2200
ASSIGN 3200      ENDCHK 3506      MOV    2070      PIT    4213
ATIT   2236      ENTCNT 2552      MOVEIT 3062      PLACE  4411
BADIRD 7240      EPNEXT 2544      MOVEM  4521      PLOOP  3720
BATCIF 4700      EPTR   0026      MOVENT 2626      PNLOOP 4004
BATOUT 4676      ERROR  3710      MOVMSG 4631      PNMSUB 4000
BDPTR  0035      ERRRDO 7544      MSGS   5000      POPT1  4127
BIDIR  2347      EXERR  4472      MSIZE  3042      POUTNM 4036
BIDIRM 7432      FAKBDY 3400      MUSTWT 3527      PPTR1  4541
BLOCK  2550      FAKHND 0200      M1     4667      PRINTE 4200
BLOCKN 3107      FAKUSR 3433      NBLOCK 2400      PTR    0020
BLOOP  2421      FCIF0  4654      NCNT   2547      QINO   2137
BMOVLP 4621      FIVE   2001      NENT   2510      RDERR  4023
BODIR  4250      FIXDIR 3471      NFIN   2343      RDOERR 2131
BODORM 7445      FLSFMS 7527      NFLEIN 7373      READKB 3313
BUFSIZ 0033      FLSRSM 2711      NFUNCT 3150      RENAME 4420
BYPSCD 2003      FNDLST 2226      NMEPLC 4021      RENERR 7223
CDCALL 2000      FOTP   4600      NM1    2472      RESTOR 3666
CHAR   2543      FPAGE  0025      NOBTCH 4630      RETLOC 3470
CINTER 3623      FUNCT2 4236      NODEL  2731      RFLG   2130
CLOERR 4252      F2C1   3002      NOFILE 7417      RNAM   4442
CL7600 2713      F2C2   3076      NONUDA 4454      ROTR6  3242
CL7601 2731      GETCNT 2264      NOPT   4064      SAYNON 4043
CNT    0021      GOBCK  4107      NOPTIM 2316      SBLKN  3041
CNTDEL 7460      GOT1   2600      NOPT1  4063      SCIFC  3664
CNTUP  2042      GPTR1  0036      NOROOM 4266      SCODE  3704
CODE   4672      GPTR2  2545      NORUMX 4040      SDFLG  2127
CONVTP 3247      GTSXBT 3230      NOSUB  2301      SEGNO  4467
CORE   4702      HADDR1 3205      NOSUBS 3445      SERR   7214
CORELP 4716      HADDR2 3224      NOTRAN 4532      SETGD  2701
CORFUJ 4673      IDBUF  2211      NOUTFL 4336      SETSDR 2114
CORLOC 4752      IFCNT  0032      NOVER  3522      SFUDG  2126
CORRTN 4750      ILLA   7206      NPG    3000      SPOT   4256
COR70  4733      ILLQ   7200      NSETGD 2702      SPOT1  4262
COR706 4725      INBUFR 0000      NULLCK 2052      SPRBLM 7320
CRIT   4101      INCTLW 3105      OBLCKN 3127      SPURGE 3634
CRLF   3742      INDERR 2345      OBLOCK 4501      STAR   2002
CTCDE  3476      INEOF  0037      ODBUF  4323      SUBVER 0330
CTYPE  3600      INERR  7332      ODERR  4244      SVDATE 3530
C6203  4755      INFPTR 0022      ODIERR 7300      S1C    2010
DATCHK 3324      INFWDS 0034      ODIRIN 4304      S4L    2020
DATE   7666      INHAND 0024      ODRERR 7260      S7600  3711
DCASPT 3423      INIT   4604      ODSPEC 2071      TABAD  3467
DCAXR1 3417      INSCNT 0027      OFCNT  3144      TCHAR  3312
DELERR 4120      INTERC 3640      OKFLAG 0031      TEMP   0030
DFLAG  3745      K7450  2271      ONCE   4670      TLP    4052
DIDEML 2061      LFLAG  2546      ONDERR 2133      TRFLG  2737
DIRKEY 0007      LOOKUP 4400      ONLY   4671      TRYFLD 4754

/FOTP V50 FOR OS/8 V50			  PAL8-V50X 01-JUN-87 PAGE 49-1

TSTEXT 2651      
TTCNT4 4674      
TTOUTP 4675      
TTY    3275      
TTYOUT 3300      
TWOPAG 3213      
TYPE   3256      
TYPFND 2342      
UNFAK  3461      
UPPCK  3630      
USEROD 4122      
VERLOC 7236      
VERNO  7233      
VERSIO 0062      
VV1    0005      
VV2    0062      
WILD   2467      
WILDA  2536      
WILDNM 2444      
WRKEY  4457      
WRTDIR 3531      
WRTERR 4034      
XR     0010      
XR1    0011      
XR2    0012      
ZEROUT 4536      
ZLOOP  4524      



ERRORS DETECTED: 0
LINKS GENERATED: 0