Google
 

Trailing-Edge - PDP-10 Archives - BB-L014E-BM - autopatch/forots.c05
There are no other files named forots.c05 in the archive.
 REP 2/1	;05C1
		TV	FOROTS	Fortran object time system,6(2033)

	;COPYRIGHT (C) 1981  BY  DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
 WIT
		TV	FOROTS	Fortran object time system,6(2130)

	;COPYRIGHT (C) 1981,1982  BY  DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
 INS 1771/1	;05C2
	***** End V6 Development *****

	;.BEGINR REVISION HISTORY
	;.COMPONENT FOROTS
	;.VERSION 6
	;.AUTOPATCH 5
	;.EDIT	2034	ALLOW OVERLAID PROGRAM TO HAVE SYMBOLS
	;;	Fix memory manager to allow overlaid programs to have symbols.
	;		DAW,27-Jan-82,QAR:10-06696
	;		A:SRC FORMEM.MAC
	;.EDIT	2035	REAL**REAL CAN GET OVERFLOW INSTEAD OF UNDERFLOW
	;;	Exponentiation for Real**Real, sometimes results in an overflow
	;;	instead of an underflow message.
	;		DAW,28-Jan-82,QAR:10-06649
	;		A:SRC FORDBL.MAC
	;.EDIT	2036	RESTART AFTER TTY: SWITCH CAN PRODUCE FATAL ERROR
	;;	If a user restarts a FORTRAN program after switching to another
	;;	teletype on a TOPS-20 system, he may get "?Impossible JSYS
	;;	error".
	;		DAW,29-Jan-82,QAR:20-01734
	;		A:SRC FOROTS.MAC
	;.EDIT	2037	NAMELIST OF LARGE ARRAY RUNS TOO SLOW
	;;	NAMELIST input runs too slow if a large array is read one
	;;	element at a time.
	;		DAW,1-Feb-82,SPR:NONE
	;		A:SRC FORCNV.MAC
	;.EDIT	2040	ELAPSED TIME CALCULATION FOR TOPS-10 INCORRECT
	;;	Fix elapsed time calculation on TOPS-10, wrong after system uptime
	;;	becomes greater than approximately 160 hours.
	;		DAW,1-Feb-82,SPR:10-32080
	;		A:SRC FOROTS.MAC,FORXIT.MAC
	;.EDIT	2041	USING LOGICAL NAMES CAN CUASE FILE NOT FOUND ERRORS
	;;	Correct deficiency in TOPS-20 logical name handling that caused
	;;	unexpected "?File not found" errors for OPEN/READ sequence.
	;		DAW,2-Feb-82,QAR:20-01742
	;		A:SRC FOROPN.MAC
	;.EDIT	2042	ENDFILE DROPS CHARACTERS ON SUBSEQUENT WRITE
	;;	Fix several end-of-file routines to change NREC(D) to 
	;;	NREC(U) so record counts are incremented/decremented
	;;	instead of byte counts.
	;		TGS,2-FEB-82,SPR:20-17208
	;		A:SRC FORIO.MAC,FOROPN.MAC
	;.EDIT	2043	LEADING BLANKS IN FILE NAME NOT IGNORED ON TOPS-10
	;;	Fix to ignore leading space in file names on TOPS-10.
	;		ERD,9-Feb-82,SPR:10-32099
	;		A:SRC FOROPN.MAC
	;.EDIT	2044	F FORMAT OUTPUT VALUES FOLLOWING T EDITING SOMETIMES INCORRECT
	;;	Fix to correct T editing positioning routines to clear
	;;	the end of record bit.
	;		ERD,19-Feb-82,SPR:10-32143
	;		A:SRC FORIO.MAC
	;.EDIT	2045	NEW AMBIGUOUS REPEAT COUNT ERROR IS FATAL
	;;	Change error ARC (Ambiguous repeat count in FORMAT) from a fatal error
	;;	to a continuable warning.
	;		EGM,18-Mar-82,SPR:20-17299
	;		A:SRC FORFMT.MAC,FORERR.MAC
	;;.EDIT	2046	READ OF RANDOM IMAGE FILE DOES NOT DETECT TOO LARGE REC NO.
	;;	Changes to disk positioning routines in TOPS-10 code so that RANDOM
	;;	files will no longer be padded to block boundary.  Additional code to
	;;	take the error path if a READ of IMAGE file, opened in RANDOM mode, is
	;;	that of a record number which is larger than the largest record number
	;;	written.
	;;	This edit has been removed by Edit 2054.
	;;		ERD,31-Mar-82,SPR:10-32150
	;;		A:SRC FORIO.MAC
	;.EDIT	2047	LARGE I/O LIST IN SUBROUTINE CAN CAUSE OUTPUT OF BAD DATA
	;;	Correction to TOOMNY routine. WRITE statements within a subroutine
	;;	that contain large I/O lists which include elements that are
	;;	not defined within the subroutine, may output garbage for those
	;;	I/O list elements outside the subroutine.
	;		ERD,9-Apr-82,SPR:20-17398
	;		A:SRC FOROTS.MAC
	;.EDIT	2050	DUMP MODE OUTPUT ON MAGTAPE RESULTS IN FATAL ERROR
	;;	DUMP mode output on magtape causes "Illegal address in UUO" error.
	;;	Code correction so that dump output skips over initial output.
	;		ERD,20-Apr-82,SPR:10-32326
	;		A:SRC FOROPN.MAC
	;.EDIT	2051	LARGE FORMAT FIELD WIDTHS TRUNCATED WITHOUT WARNING
	;;	Implement expanded FORMAT field widths and field-width range checking
	;;	in FORFMT by instituting a double encoding word scheme and expanding
	;;	left-parenthesis encoding to 2 words; improve core usage by allocating
	;;	an expandable encoding area and, when saving formats, saving only the
	;;	core their encoding used.
	;		TGS,26-Apr-82,SPR:10-32144
	;		A:SRC FORFMT.MAC,FORPRM.MAC,FOROTS.MAC
	;.EDIT	2052	CUT BACK CORE FUNCTION DOES NOT REDUCE OTS MEMORY PAGES
	;;	Improve memory utilization by adding code to trim the paged memory block
	;;	list for a cut back core call. Also improve TOPS-10 memory usage by
	;;	removing pages as they are freed, freeing pages from unsuccessful
	;;	(incomplete) memory requests, increasing the number of pages that can
	;;	be added/removed with one UUO, and preventing undeserved page removal
	;;	errors.
	;		EGM,27-Apr-82,SPR:10-32296
	;		A:SRC FORPRM.MAC,FORMEM.MAC
	;		A:MSC F20OTS.CCL,DBCS2F.CMD
	;.EDIT	2053	REQUESTS FOR PAGED (OTS) MEMORY FREQUENTLY OVERALLOCATE
	;;	Prevent overallocation of memory by attempting to use free space at
	;;	beginning of block list and allocate new pages contiguous with
	;;	start of list. Also preserve PC of allocating routine in block
	;;	header in one final place.
	;		EGM,28-Apr-82,SPR:NONE
	;		A:SRC FORMEM.MAC
	;;.EDIT	2054	REMOVE EDIT 2046
	;;	Remove Edit 2046 because the edit sometimes updated the filesize
	;;	of random files before the block was actually written out
	;;	causing some READs to fail if the READ was attempted before
	;;	the file was closed.
	;;		ERD,7-May-82,SPR:NONE
	;;		A:SRC FORIO.MAC
	;.EDIT	2055	COMPLEX EXPONENTIATION GETS ?ILL MEM REF
	;;	Fix typo in CDLOG so STOR routine POPJs instead of POPing P
	;;	and plowing into YZRO.
	;		TGS,10-May-82,SPR:10-32471
	;		A:SRC FORCDX.MAC
	;.EDIT	2056	RANDOM IMAGE INPUT DOES NOT DETECT THE END OF FILE
	;;	Changes to disk positioning routines in TOPS-10 code so
	;;	that RANDOM files are no longer padded to the block
	;;	boundary.
	;;	Changes that allow READ of RANDOM IMAGE mode files to take
	;;	the error path if the record number being read is larger
	;;	that the largest record number previously written.
	;		ERD,20-May-82,SPR:10-32496
	;		A:SRC FORIO.MAC
	;.EDIT	2057	EDIT 2051 MAY BREAK LIST-DIRECTED I/O OF REAL NUMBERS
	;;	Addition to Edit 2051 to clear the second encoding word during
	;;	NAMELIST and list-directed IO.
	;		TGS,25-May-82,SPR:20-17764
	;		A:SRC FORCNV.MAC,FORFMT.MAC
	;.EDIT	2060	INCORRECT ERROR MESSAGE FOR MIXED I/O 
	;;	Change Error Message CDI 31,315, to a more general message
	;;	so the message that is output is correct for all cases.
	;		ERD,28-May-82,SPR:10-32396
	;		A:SRC FORERR.MAC
	;.EDIT	2061	NON-FORTRAN PROGRAMS FAIL WHEN USING TIME SUBROUTINE
	;;	Registers restored in the incorrect order in FORLIB routine TIME.
	;		EDS,1-Jun-82,SPR:10-32547
	;		A:SRC FORMSC.MAC
	;.EDIT	2062	DISPOSE='LIST' NOT HANDLED CORRECTLY
	;;	When files with extension "DAT" are sent to the printer via
	;;	DISPOSE = 'LIST' or 'PRINT', the first character of each record
	;;	is not used for carriage control.  The queue requests need to
	;;	include the argument block for '/FILE:FORTRAN'.
	;		EDS,7-Jun-82,SPR:20-17675
	;		A:SRC FOROPN.MAC
	;.EDIT	2063	ERROR MESSAGE OUTPUT IS PARTIALLY JUNK
	;;	Error message "?Incompatible attributes" outputs junk as part
	;;	of the message on TOPS-10.
	;		ERD,10-Jun-82,SPR:10-32514
	;		A:SRC FORERR.MAC
	;.EDIT	2064	FILE NAME POORLY FORMED FOR STATUS='SCRATCH'
	;;	Create files for STATUS='SCRATCH' using the standard naming
	;;	convention for TOPS-10.  File names will now be nnnccc.TMP,
	;;	where nnn is the job number and ccc are random letters.
	;		EDS,10-Jun-82,SPR:10-32539
	;		A:SRC FOROPN.MAC,FOROTS.MAC
	;.EDIT	2065	FOROTS TRAPS DURING ERROR HANDLING ROUTINE
	;;	Replace the use of D.TTY with U.TTY and rework logic for UDB.
	;		EDS,25-Jun-82,SPR:20-17700
	;		A:SRC FORERR.MAC,FORIO.MAC,FOROPN.MAC,FOROTS.MAC
	;.EDIT	2066	INACCESSIBLE RANDOM RECORD NUMBERS GREATER THAN (2**18)-1
	;;	Ensure that RANDOM record numbers greater than (2**18)-1 are
	;;	not truncated when calculating starting word number of current
	;;	record.
	;		TGS,16-Jul-82,SPR:10-32825
	;		A:SRC FORIO.MAC
	;.EDIT	2067	NAMELIST VARIABLES BEGINNING WITH T OR F TREATED AS LOGICALS
	;;	Add leftparen and equal-sign flags as legal delimiters to
	;;	prevent incorrect diagnostic when a NAMELIST variable begins
	;;	with T or F.
	;		TGS,23-Jul-82,SPR:20-17814
	;		A:SRC FORCNV.MAC
	;.EDIT	2070	UNDERFLOW AND OVERFLOW MESSAGES REPORTED AT WRONG TIME
	;;	In DEXP2., "Underflow" message sometimes generated for 
	;;	overflows.
	;		JEH,02-Aug-82,SPR:20-17901
	;		A:SRC FORDBL.MAC
	;.EDIT	2071	SETTING CCOC WORDS FOR TERMINAL I/O
	;;	Allow CCOC words to be changed anywhere in a program and to
	;;	maintain those changes after terminal input.  Reset the
	;;	CCOC words before exiting.
	;		RJD,5-Aug-82,SPR:20-17861	
	;		A:SRC FOROTS.MAC,FOROPN.MAC,FORIO.MAC
	;.EDIT	2072	USING BLANKS FOR A DEVICE NAME IN AN OPEN
	;;	This edit has been superseded by Edit 2115.
	;;	If OPEN statement contains DEVICE=' ', use the default device.
	;		RJD,16-Aug-82,SPR:10-32708
	;		A:SRC FOROPN.MAC
	;.EDIT	2073	"ILLEGAL INSTRUCTION" ERRORS USING FORTRAN BACKSPACE
	;;	BACKSPACE Gets confused, tries to map in page -1. (Which results
	;;	in an illegal instruction on the PMAP.) This seems to only happin
	;;	for unformatted binary files.
	;		MRB,19-Aug-82,SPR:20-17774
	;		A:SRC FORIO.MAC
	;.EDIT	2074	IMPOSSIBLE JSYS ERRORS CAN OCCUR WHEN MEMORY FULL IN FOROTS
	;;	Impossible JSYS error when memory is full. When opening a file
	;;	when memory is full causes routine %GTPGS to take the error 
	;;	return, the error processing displays the error message "?Memory
	;;	full" then procedes to cleanup the open files. But, in this case
	;;	the monitor status shows the file open and FOROTS thinks it has
	;;	not been open yet and calls SETJFN to release the JFN and dies 
	;;	there. Change Routine DSKSET not to bother to clean-up open files
	;;	when a "?Memory full" error is detected, Just %HALT.
	;;	NOTE: superseded by Edit 2100.
	;;		MRB,19-Aug-82,SPR:20-17792
	;;		A:SRC FOROPN.MAC
	;.EDIT	2075	FOROTS DOES NOT ASSEMBLE WITH VERSION 4.1 GALAXY
	;;	Search QSRMC2 to resolve symbol definitions for V2 GALAXY code.
	;;	QSRMC2 is a renamed copy of the version 2 GALAXY's QSRMAC.
	;		RJD,23-Aug-82,SPR:10-32804
	;		A:SRC FOROPN.MAC
	;.EDIT	2076	FUNCT. FUNCTIONS 17 AND 20 ON TOPS-10
	;;	Put FUNCT. functions 17 and 20 in conditional code for TOPS-10
	;;	and TOPS-20.  For TOPS-10, set F.GPSI and F.RPSI equal to
	;;	F.ILL.
	;		RJD,26-Aug-82,SPR:10-32722
	;		A:SRC FORMEM.MAC
	;.EDIT	2077	INCORRECT VALUE BEING RETURNED IN IANS IN OVERFL SUBROUTINE
	;;	In OVERFL, index OLDCT for a correct comparison between the tables
	;;	containing the current APR counts and the old counts.
	;		RJD,31-Aug-82,SPR:20-18017
	;		A:SRC FORMSC.MAC
	;.EDIT	2100	REMOVE EDIT 2074
	;;	Remove edit 2074.
	;		MRB,3-Sep-82,SPR:NONE
			A:SRC FOROPN.MAC
	;.EDIT	2101	IMPOSSIBLE JSYS ERRORS CAN OCCUR WHEN MEMORY FULL IN FOROTS
	;;	In routine SETJFN when releasing JFN's and an error occurs
	;;	check to see if error is "file not closed". If it is then
	;;	close the file and continue processing.
	;		MRB,7-Sep-82,SPR:20-17792
	;		A:SRC FOROPN.MAC
	;.EDIT	2102	EXECUTING A READ, REWIND AND WRITE ON TOPS-10
	;;	When a file is READ then the pointer is repositioned to the
	;;	beginning of the file before execution of a WRITE or ENDFILE,
	;;	write a null file to supersede the existing file rather than
	;;	deleting the file.
	;		RJD,9-Sep-82,SPR:10-32721
	;		A:SRC FOROPN.MAC
	;.EDIT	2103	SUBROUTINE TIME RETURNS INCORRECT TIME IN FOROTS
	;;	Time function will return incorrect results for european time 
	;;	zones. Use the TOPS-20 JSYS ODTIM to get correct time.
	;		MRB,13-Sep-82,SPR:20-18016
	;		A:SRC FORMSC.MAC
	;.EDIT	2104	BARE PLUS OR MINUS LOOPS IN FORMAT(I)
	;;	Improve check for sign characters so FORMAT(I), (O), and (Z) won't
	;;	loop when given bare "+" or "-".
	;		TGS,16-Sep-82,SPR:10-32993
	;		A:SRC FORCNV.MAC
	;.EDIT	2105	FOROTS WON'T COMPILE WITH KI-10-MACRO	
	;;	Define EXTEND, if not already defined, to allow FOROTS to build
	;;	when a KI-10-BUILT MACRO-10 is being used.
	;		RJD,17-Sep-82,SPR:10-32696
	;		A:SRC FORPRM.MAC
	;.EDIT	2106	ERR BRANCH NOT TAKEN WHEN DISK QUOTA EXCEEDED OR DISK FULL
	;;	Install trapping and ERR= handling for disk quota exceeded.
	;		TGS,13-Sep-82,SPR:20-17750
	;		A:SRC FOROTS.MAC,FORMEM.MAC,FORERR.MAC
	;		A:MSC F20OTS.CCL,DBCS2F.CMD
	;.EDIT	2107	UNMAP PAGES AFTER EOF
	;;		When closing disk files FOROTS is not properly unmapping
	;;		unused files (after the EOF).
	;		MRB,24-Sep-82,SPR:20-18041
	;		A:SRC FOROTS.MAC,FOROPN.MAC
	;.EDIT	2110	ILLEGAL MEMORY REFERENCE WHEN COMPLEX NUMBERS TRAP
	;;		Since calls to a subroutine handling COMPLEX numbers
	;;		do not use AC 16 for the address of an argument list,
	;;		an error is generated when FORERR is checkning the stack.
	;		RJD,27-Sep-82,SPR:10-32897
	;		A:SRC FOROTS.MAC,FORERR.MAC
	;.EDIT	2111	CORRECT EDIT 2034
	;		MRB,27-SEP-82,SPR:20-17929
	;		A:SRC FORMEM
	;.EDIT	2112	DISPOSE=RENAME WON'T RENAME FILE ACROSS SFDS
	;;	Set up path block pointer in RENAME block so CLOSE/RENAME=DISPOSE
	;;	can rename file to a different directory or SFD.
	;		TGS,29-Sep-82,SPR:10-32830
	;		A:SRC FOROPN.MAC
	;.EDIT	2113	REMOVE EDIT 2063
	;;	Edit 2063 corrected one case of junk being output on TOPS10 with
	;;	"Incompatable attributes" error message, but caused many other
	;;	cases to break.
	;		TGS,30-Sep-82,SPR:NONE
	;		A:SRC FORERR.MAC
	;.EDIT	2114	UNNCESSARY INSTRUCTION IN EDIT 2034
	;;	Edit 2034 contains an unneeded HRRZ T1,.JBSYM instruction.
	;		TGS,1-Oct-82,SPR:10-33101
	;		A:SRC FORMEM.MAC
	;.EDIT	2115	SUPERSEDES EDIT 2072
	;;	Allows for DEVICE=' ' in OPEN statements and eliminates an
	;;	unnecessary line of code.
	;		RJD,5-Oct-82,SPR:10-33130
	;		A:SRC FOROPN.MAC
	;.EDIT	2116	LONG I/O LISTS CAUSE ?FRSIEM
	;;	Certain I/O lists long enough to cause the compiler to generate
	;;	two calls to IOLST. will fail with ?Forots internal error in
	;;	memory management because of successive calls to the argument
	;;	copier.
	;		TGS,13-Oct-82,SPR:10-32984
	;		A:SRC FOROTS.MAC
	;.EDIT	2117	EXP FUNCTION LOOPS ON KS10
	;;	On a KS10 processor UTRP. trapping may cause the processor to
	;;	loop inside the trap routine when it was trying to trap for a
	;;	floating overflow.
	;		MRB,21-OCT-82,SPR:10-33099
	;		A:SRC FORTRP.MAC
	;.EDIT	2120	WITH EDIT 2056, NEW RANDOM FILES CAN HAVE BAD RECORDS
	;;	Edit 2056 can output incorrect RANDOM records with missing LSCWs
	;;	on TOPS10 with a sufficiently large RECORDSIZE specified. Ensure
	;;	that EOFN(D) is updated (if output is currently in progress)
	;;	whenever a TOPS10 window is written, as well as at end-of-record time.
	;		TGS,26-Oct-82,SPR:10-33096
	;		A:SRC FORIO.MAC
	;.EDIT	2121	SORT GETS OVERWRITTEN WHEN FOROTS USE PAGES ABOVE 600000
	;;	When SORT is loaded, the FOROTS memory mangagement table is not
	;;	being updated to reflect that the pages used by SORT are not
	;;	available.  Also, the location containing the address of SORT is
	;;	not being cleared when the program is restarted.
	;		RJD,28-Oct-82,SPR:20-18131
	;		A:SRC FORMEM.MAC,FORSRT.MAC,FORINI.MAC
	;.EDIT	2122	ALLOW ESC AS LINE TERMINATOR FOR TTY INPUT ON -10
	;;	Allow ESCAPE to function as a line terminator (simulating CRLF)
	;;	for TOPS10 TTY input.
	;		TGS,09-Nov-82,SPR:10-33095
	;		A:SRC FORIO.MAC
	;.EDIT	2123	ADDRESS CHECK WHEN APPENDING TO AN IMPLIED BINARY FILE
	;;	Change the ICNT and OCNT values to reflect words when appending
	;;	to an unformatted file.
	;		RJD,09-Nov-82,SPR:10-33194
	;		A:SRC FORIO.MAC
	;.EDIT	2124	FRSISW ERROR CAN OUTPUT JUNK FOR KEYWORD AND VALUES
	;;	This edit supersedes edit 2063. Ensure that ISW error calls
	;;	on TOPS10 always pass a SIXBIT string as their string arguments.
	;		TGS,11-Nov-82,SPR:10-33170
	;		A:SRC FOROPN.MAC
	;.EDIT	2125	CORRECTION TO EDIT 2102
	;;	This edit should be applied with edit 2102.  The error return
	;;	for the FILOP. has been added.
	;		RJD,15-Nov-82,SPR:10-33237
	;		A:SRC FOROPN.MAC
	;.EDIT	2126	CORRECT BYTSIZE FOR MAGTAPES
	;;	Added code to allow for different tape modes.
	;		MRB,18-NOV-82,SPR:20-17953
	;		A:SRC FOROPN.MAC,FORIO.MAC
	;.EDIT	2127	DISALLOW I/O WITHIN I/O
	;		MRB,23-NOV-82,SPR:10-32947
	;		A:SRC FORERR.MAC,FORIO.MAC
	;.EDIT	2130	CORRECTIONS TO EDIT 2120
	;		TGS,03-DEC-82,SPR:NONE
	;		A:SRC FORIO.MAC
	;;.EDIT	2131	RESERVED FOR DEC
	;;.EDIT	2132	RESERVED FOR DEC
	;;.EDIT 2133	RESERVED FOR DEC
	;;.EDIT	2134	RESERVED FOR DEC
	;;.EDIT 2135	RESERVED FOR DEC
	;.ENDA 
	;.ENDV
	;.ENDR REVISION HISTORY

 REP 8/2	;05C3

		EXTERN	%MEMINI,%TRPINI
	IF20,<	EXTERN	%PSIINI	>
 WIT
		INTERN	%FAREA			;[2051]

		EXTERN	%MEMINI,%TRPINI
	IF20,<	EXTERN	%PSIINI,%OCCOC,%CCMSK	>	;[2071] MASKS FOR CCOC WORDS
 INS 14/2	;05C4
	IF20,<	EXTERN	%FUNCX,A.IOS,A.ERR	> 	;[2106] FOR PSI DISK FULL
 REP 53/6	;05C5
		ADDI	T1,-1(T3)	;ROUND UP
 WIT
		ADDI	T2,-1(T3)	;[2040] ROUND UP
 INS 128/7	;05C6

		PJOB	T1,		;[2064] Get job number
		MOVEI	T4,3		;[2064] Want three digits
	INIJBN:	IDIVI	T1,12		;[2064] Convert job number to SIXBIT
		ADDI	T2,20		;[2064]
		LSHC	T2,-6		;[2064]
		SOJG	T4,INIJBN	;[2064]
		HLRZM	T3,I.JOB	;[2064] Store SIXBIT job number
 INS 131/7	;05C7
		MOVEI	T1,17		;[2106] GET PSI CHANNEL FUNCTION
		MOVEM	T1,FCODE	;[2106] 
		MOVEI	T1,.ICQTA	;[2106] SETUP FOR DISK QUOTA EXCEEDED
		MOVEM	T1,FARG1	;[2106] 
		MOVEI	T1,1		;[2106] LEVEL 1
		MOVEM	T1,FARG2	;[2106] 
		XMOVEI	T1,%DFERR	;[2106] SET THE ADDRESS
		MOVEM	T1,FARG3	;[2106] 
		XMOVEI	L,%FNBLK	;[2106] SET INTERRUPT FOR DISK FULL
		PUSHJ	P,%FUNCX	;[2106] CALL FUNCT. ENTRY POINT
		MOVE	T1,%CHNTAB+.ICQTA ;[2106] AND COPY CHANNEL WORD IN FOROTS
		MOVEM	T1,%FCHTB+.ICQTA ;[2106] SO FUNCT WILL KNOW IT'S FOROTS
		MOVEI	T1,.FHSLF	;[2106] ACTIVATE CHANNEL
		MOVSI	T2,(1B<.ICQTA>)	;[2106] FOR DISK FULL OR QUOTA EXCEEDED
		AIC%			;[2106] 
					;[2106]
 INS 137/7	;05C8
		MOVEI	T2,0		;[2036] INSURE ASCIZ STRING
		IDPB	T2,T1		;[2036] BY ENDING WITH A NULL BYTE.
 INS 146/7	;05C9
		RFCOC%			;[2071]
		DMOVEM	T2,I.CCOC	;[2071] SAVE THE CCOC WORDS
		AND	T2,%CCMSK	;[2071] SET CCOC FOR CORRECT OUTPUT
		IOR	T2,%OCCOC	;[2071] LEAVE ^I AND ^L AS THEY WERE
		MOVE	T3,%OCCOC+1	;[2071] SET OTHERS TO SEND LITERALLY
		SFCOC%			;[2071]
 INS 159/7	;05C10
					;[2106]
	IF20,<				;[2106]
	%FNBLK:	IFIW	TP%INT,FCODE	;[2106] GET A PSI CHANNEL
		IFIW	TP%INT,[ASCIZ \FRS\]	;[2106] FOROTS IS CALLING ITSELF
		IFIW	TP%INT,FSTAT	;[2106] STATUS
		IFIW	TP%INT,FARG1	;[2106] ARG 1
		IFIW	TP%INT,FARG2	;[2106] ARG 2
		IFIW	TP%INT,FARG3	;[2106] ARG 3
	> ;[2106] IF20
					;[2106]
	;[2106] DISK FULL ERROR HANDLER--TOPS20 ONLY.
	;[2106] GETS HERE VIA THE SOFWARE INTERRUPT SYSTEM IF THE USER HAS NOT
	;[2106] STOLEN THE CHANNEL FROM FOROTS. TREATED LIKE ANY OTHER I/O ERROR,
	;[2106] EXCEPT THAT IF THE PROCESS IS INTERACTIVE, IT DOES A HALTF% TO
	;[2106] LET THE USER EXPUNGE OR OTHERWISE CLEAN UP THE DISK, AND THEN,
	;[2106] IF CONTINUED, WILL DEBRK% TO CONTINUE THE PROCESS. IF THE PROCESS
	;[2106] IS BATCH, WE JUST JUMP OFF TO %ABORT TO CLOSE ALL FILES.
	;[2106] FOR THE ERR= AND IOSTAT= CASE, IT IS COMPLICATED BY THE FACT
	;[2106] THAT WE MUST DO A DEBRK%, BUT WE DO NOT WANT TO CONTINUE
	;[2106] THE PROCESS AT THE INTERRUPTED LOCATION, SO WE MUST SUBSTITUTE
	;[2106] THE ERR= OR (FOR IOSTAT WITH OLDER .REL FILES) THE RETURN ADDRESS
	;[2106] FROM THE FOROTS CALL FOR THE INTERRUPT ADDRESS.
	IF20,<				;[2106] 
	%DFERR:	SKIPE	I.BAT		;[2106] BATCH JOB?
		 JRST	SETDBK		;[2106] YES. DEBREAK AND HANDLE ERR= OR ABORT
		SKIPN	A.ERR		;[2106] ERR= OR IOSTAT= SPECIFIED?
		 SKIPE	A.IOS		;[2106] 
		  JRST	SETDBK		;[2106] YES. SET DEBREAK ADDRESS TO ERROR HANDLER
		$ECALL	DQE		;[2106] NO. PRINT DISK QUOTA EXCEEDED MESSAGE
		$ECALL	ETC		;[2106] TELL USER TO EXPUNGE AND CONTINUE
		HALTF%			;[2106] HALT THE PROCESS
		DEBRK%			;[2106] CONTINUE THE PROCESS IF CONTINUED
					;[2106] 
	SETDBK:	PUSH	P,T1		;[2106] SAVE T1 VERY TEMPORARILY
		XMOVEI	T1,DFDBK	;[2106] SET DEBREAK ADDRESS HERE
		SKIPN	I.XSIR		;[2106] USING EXTENDED PSI TABLE?
		 JRST	STDBS0		;[2106] NO
		MOVEM	T1,%PC1+1	;[2106] 
		POP	P,T1		;[2106] RESTORE T1
		DEBRK%			;[2106] 
					;[2106] 
	STDBS0:	HRRM	T1,%PC1		;[2106] STORE PC
		POP	P,T1		;[2106] RESTORE T1
		DEBRK%			;[2106] AND DEBREAK
					;[2106] 
	DFDBK:	$ECALL	DQE,%ABORT	;[2106] AND PRINT ERROR MESSAGE AND DIE
	> ;[2106] IF20
 INS 7/8	;05C11
	;[2106] FUNCT. BLOCK ARGS
	FCODE:	BLOCK	1		;[2106] FUNCTION CODE
	FSTAT:	BLOCK	1		;[2106] STATUS
	FARG1:	BLOCK	1		;[2106] ARGUMENT 1
	FARG2:	BLOCK	1		;[2106] ARGUMENT 2
	FARG3:	BLOCK	1		;[2106] ARGUMENT 3
					;[2106]
 INS 21/8	;05C12
	I.CCOC::  BLOCK 2		;[2071] CCOC WORDS FOR THE CONTROLLING TTY
 INS 30/8	;05C13
	I.JOB::	  BLOCK	1		;[2064] SIXBIT job number in RH
 INS 37/8	;05C14
	%FAREA:	BLOCK	1		;[2051] FORMAT DECODING AREA ADDRESS
 REP 40/8	;05C15
	D.TTY:: BLOCK 1			;DDB OF CONTROLLING TTY, IF OPEN
	TT.DES:: BLOCK 1		;DESIGNATOR OF CONTROLLING TTY
 WIT
	U.TTY:: BLOCK 1			;[2065] UDB OF CONTROLLING TTY, IF OPEN
	TT.DES:: BLOCK 1		;DESIGNATOR OF CONTROLLING TTY

	%UDBAD:: BLOCK	1		;[2127]DDB ADDRESS STACK
 INS 53/8	;05C16
	%FCHTB:: BLOCK	^D36		;[2106] FOROTS-OWNED CHANNELS
 REP 12/11	;05C17
		SETZM	CPYBLK		;NO COPIED ARGS TO DEALLOCATE YET
 WIT
					;[2116] 
 REP 16/11	;05C18
	SAVEX:	HRLZM	0,ARGLST-1	;Store in local area
 WIT
	SAVEX:	SETZM	CPYBLK		;[2116] NO COPIED ARGS TO DEALLOCATE YET
		HRLZM	0,ARGLST-1	;Store in local area
 REP 12/12	;05C19
		PUSHJ	P,%GTBLK	;ALLOCATE A BIG ENOUGH BLOCK
 WIT
		PUSH	P,T2		;[2047] SAVE AC2
		PUSHJ	P,%GTBLK	;ALLOCATE A BIG ENOUGH BLOCK
		POP	P,T2		;[2047] RESTORE AC2
 SUM 64347