Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-03 - 43,50312/mants5.rnd
There are no other files named mants5.rnd in the archive.
.PAPER SIZE 60 72
.LEFT MARGIN 4
.SPACING 1
.TAB STOPS 8 16 24 32 40 48 56
#
.NUMBER 1
.TITLE ^^MANTIS - U\\NIVERSITY OF ^OREGON ^^FORTRAN D\\EBUGGER\\
.SUBTITLE ^^MANTS5.RNT+MANTS5.RNH+MANTS5.RND\\	^^L.K. S\\ALMONSON
.PAGE
^^MANTIS\\ GIVES THE USER AN INTERACTIVE DEBUGGING LANGUAGE THAT IS
SIMPLE AND A NATURAL EXTENSION OF ^^FORTRAN\\. ^^MANTIS\\ COMMANDS ARE
ENTERED FROM THE USER'S TELETYPE DURING EXECUTION OF THE ROUTINES TO BE
DEBUGGED. ^THE USER REFERS TO THE ROUTINES, VARIABLES AND STATEMENTS OF
HIS PROGRAM USING ONLY THE NAMES HE WROTE IN HIS SOURCE PROGRAM.
^THE OVERHEAD IS ABOUT 4 ^K. ^THE MACHINE CODE DURING DEBUGGING IS IDENTICAL
TO THAT DURING NORMAL EXECUTION. ^THE PROGRAM IS NOT EXECUTED
INTERPRETIVELY. ^THE
FOLLOWING EXAMPLE SHOWS A ^^FORTRAN\\ SOURCE PROGRAM AND ITS EXECUTION
WITH THE HELP OF ^^MANTIS\\.
.SKIP
.NOFILL
.LEFT MARGIN 0
^^_.TYPE SAMP1.F4\\		^THE MONITOR COMMAND TO DISPLAY THE
^^	J=0\\				SAMPLE PROGRAM ^^SAMP1.F4\\.
^^	SUM=0
10	J=J+1
	ACCEPT 50,X\\		  ^THE 1ST EXECUTABLE STATEMENT AFTER 10.
^^50	FORMAT (F)\\		   ^^FORMAT\\ STATEMENTS ARE NOT EXECUTABLE.
^^	SUM=SUM+X\\		      2ND EXECUTABLE STATEMENT AFTER 10.
^^	IF (X.NE.0) GO TO 10\\	      3RD EXECUTABLE STATEMENT AFTER 10.
^^	AVE=SUM/J\\		      4TH EXECUTABLE STATEMENT AFTER 10.
^^	TYPE 51,AVE\\		      5TH EXECUTABLE STATEMENT AFTER 10.
^^51	FORMAT (' AVERAGE =',F6.2)	FORMAT\\ STMTS ARE NOT EXECUTABLE.
^^	STOP\\			      6TH EXECUTABLE STATEMENT AFTER 10.
^^	END
.SKIP
_.DEBUG/LOADER  SAMP1.F4\\  	1. ^START ^^MANTIS\\.
^^FORTRAN: SAMP1.F4
LOADING
#MANTIS V5
CURRENT PROGRAM IS MAIN
.SKIP
* STOP AT 10+4\\			2. ^ENTER A COMMAND TO STOP EXECUTION AT
				   THE 4TH EXECUTABLE STATEMENT AFTER
				   THE STATEMENT LABELED 10 WHICH IS THE
				   STATEMENT ^^AVE=SUM/J\\.
^^STORED\\				3. ^^MANTIS\\ INDICATES ACCEPTANCE OF THE
				   AUTOMATIC ACTION COMMAND.
^^* GO\\				4. ^BEGIN PROGRAM EXECUTION.
10.0				5. ^VALUES FOR ^X ARE ENTERED.
20.0
30.0
0.0
.SKIP
_<10   _>+   4			6. ^EXECUTION IS HALTED AT THE STATEMENT
				   PREVIOUSLY SPECIFIED.
^^* TYPE  J\\			7. ^DISPLAY THE CURRENT VALUE OF ^J.
		4
* ^J=3				8. ^J SHOULD NOT BE 4, SO IT IS CHANGED.
* ^G^O				9. ^CONTINUE EXECUTION FROM WHERE IT
				   STOPPED WITH THE STATEMENT ^^AVE=SUM/J\\.
^^AVERAGE =  20.00\\
.SUBTITLE ^FUNDAMENTAL ^CONCEPTS
^^EXIT AT MAIN/10   +   6\\		10. ^THE ^^STOP\\ STATEMENT HAS EXECUTED.
.TEST PAGE 5
^^* EXIT\\				11. ^THE ^^EXIT\\ CMD RETURNS TO THE MONITOR.
^^END OF EXECUTION
CPU TIME: 0.29  ELAPSED TIME: 2:32.72
EXIT
_.\\
.TEST PAGE 9
.FILL
.LEFT MARGIN 4
.SKIP
^^MANTIS\\ IS STARTED WITH THE MONITOR COMMANDS ^^DEBUG/LO\\ OR
^^LOAD/LO/MAN\\.
.FOOTNOTE 5
.SKIP
.LEFT MARGIN 0
------------------------
.BREAK
*#^SEE ^^FORTRAN(F40) P\\ROGRAMER'S ^MANUAL. ^THE ^^/LO\\ SWITCH MUST
BE USED TO SPECIFY THE ^^LOADER\\ INSTEAD OF ^^LINK-10\\.
^THE ^^/MAN\\ SWITCH MUST BE USED IF THE FIRST FILE HAS A STANDARD
EXTENSION THAT DOES NOT INDICATE ^^FORTRAN\\.
!
^THE FILENAMES OF THE SOURCE ROUTINES ARE TYPED
AS IN AN ^^EXECUTE\\ COMMAND. ^THE FIRST  FILE SHOULD BE THE
^^FORTRAN\\ MAIN PROGRAM.*# ^IF YOU ARE CONCERNED ABOUT THE BUGS IN ONLY
CERTAIN ROUTINES OR IF YOUR PROGRAM IS LARGE,
 THEN OVERHEAD CAN BE REDUCED BY GIVING THE
^^/NOMAN\\ SWITCH AFTER EACH FILE THAT YOU ARE UNCONCERNED ABOUT:
.NOFILL
.SKIP
	^^_.DEB/LO	MASTER, FILEG, ALPHA/NOMAN\\
.FILL
.SKIP 2
^^MANTIS\\ PROMPTS FOR COMMANDS WITH THE CHARACTER '*' AND READS EACH
COMMAND AFTER YOU TYPE CARRIAGE-RETURN. ^AT LEAST ONE BLANK MUST
SEPARATE COMMAND KEYWORDS FROM OTHER PARTS OF EACH COMMAND:
.NOFILL
	^^* AT35\\		^THIS COMMAND IS REJECTED.
	^^?NOT A COMMAND\\
	^^* AT 35\\		^THE USER WILL BE NOTIFIED EACH TIME BEFORE THE
			STATEMENT LABELED 35 IS EXECUTED.
.SKIP
.FILL
^AS A PROGRAM EXECUTES, CONTROL PASSES IN AND OUT OF THE VARIOUS ROUTINES
(MAIN PROGRAM AND SUBPROGRAMS) WHICH MAKE UP THAT PROGRAM. ^THE
CURRENT ROUTINE, AT ANY MOMENT DURING EXECUTION, IS THE MOST RECENTLY ENTERED
^^FORTRAN\\ ROUTINE FOR WHICH THE USER DID NOT GIVE THE ^^/NOMAN\\ SWITCH
IN HIS ^^DEBUG\\ COMMAND. ^WHEN THE USER REFERS TO A VARIABLE OR
STATEMENT LABEL BUT DOES NOT GIVE THE ROUTINE NAME THEN THE CURRENT
ROUTINE IS ASSUMED. ^FOR EXAMPLE, IF SUBROUTINE ^^SUBA\\ WAS JUST
EXECUTING THEN:
.NOFILL
	^^AT 99\\		^REFERS TO THE STATEMENT LABELED 99 IN
			SUBROUTINE ^^SUBA\\, WHEREAS
	^^AT SUBB/33\\	^REFERS TO THE STATEMENT 33 IN SUBROUTINE ^^SUBB\\.
.FILL
.SKIP
^YOU MAY ONLY REFER TO EXECUTABLE STATEMENTS.
^STATEMENTS SUCH AS ^^FORMAT,
SUBROUTINE, DIMENSION, DATA\\ AND THE VARIOUS TYPE DECLARATIONS ARE NOT
EXECUTABLE AND CANNOT BE REFERENCED. ^A ^^CONTINUE\\ STATEMENT IS
EXECUTABLE IF AND ONLY IF IT IS THE LAST STATEMENT IN THE RANGE OF A 
^^DO\\ STATEMENT. ^A ^^CONTINUE\\ STATEMENT IS NOT EXECUTABLE IF IT IS
USED ONLY AS A TARGET FOR A ^^GOTO\\.
.SKIP
^STATEMENTS WITHOUT LABELS ARE REFERENCED BY A PLUS OR MINUS COUNT OF
EXECUTABLE STATEMENTS FROM A LABELED STATEMENT OR FROM THE BEGINNING OF THE
ROUTINE:
.NOFILL
	55-2		^REFERS TO THE SECOND EXECUTABLE STATEMENT BEFORE
			LABEL 55 IN THE CURRENT ROUTINE.
	^^MAIN/+3\\		^REFERS TO THE THIRD EXECUTABLE STATEMENT
			IN THE MAIN PROGRAM.
.FILL
.TEST PAGE 6
.SKIP
^^MANTIS\\ WILL REPORT THE CLOSEST STATEMENT LABEL WHEN IT DISPLAYS
THE PROGRAM LOCATION:
.NOFILL
	^^* AT MAIN/20 +5\\   ^THIS IS THE WAY THE USER REFERRED TO A STMT.
	_<30   _>-   3	^THIS WOULD BE DISPLAYED JUST BEFORE THE
			STATEMENT IS LATER EXECUTED IF STATEMENT 30 IS
			CLOSER THAN STATEMENT 20.
.TEST PAGE 10
.FILL
.SKIP
^EACH VARIABLE OR ARRAY MAY BE REFERRED TO IF IT IS USED IN AN EXECUTABLE
STATEMENT IN THE SPECIFIED ROUTINE AND THE USER DID NOT GIVE THE ^^/NOMAN\\
SWITCH FOR THE ROUTINE IN HIS ^^DEBUG\\ COMMAND:
.NOFILL
	^^SUBA/IVAR\\	^REFERS TO THE VARIABLE ^^IVAR\\ IN SUBROUTINE ^^SUBA\\.
	^^MAIN/TEST(1,1)\\	^REFERS TO THE FIRST ELEMENT IN MATRIX ^^TEST\\ IN
			THE MAIN PROGRAM.  ^SUBSCRIPTS MUST BE CONSTANTS.
	* ^Y(*)=0	^THIS COMMAND CLEARS ALL OF VECTOR ^Y IN THE
			CURRENT ROUTINE. (^THIS STAR NOTATION CAN ONLY BE
			USED BY ITSELF IN A SINGLE DISPLAY OR CHANGE.)
.FILL
.SKIP
^MANY AUTOMATIC ACTION COMMANDS MAY BE IN EFFECT AT THE SAME TIME.
^THESE COMMANDS MEAN THAT THE USER IS NOTIFIED OR EXECUTION IS HALTED
WHEN 1) A SPECIFIED EXECUTABLE STATEMENT IS REACHED; 2) OR WHEN A SUBROUTINE OR
FUNCTION IS CALLED; 3) OR BEFORE A ^^RETURN\\ STATEMENT IS EXECUTED; 4)
OR WHEN AN ASSIGNMENT OR INPUT STATEMENT MODIFIES A VARIABLE OR ARRAY.
^ONE OR MORE OTHER COMMANDS MAY BE ATTACHED TO ANY AUTOMATIC ACTION
COMMAND:
.NOFILL
^^	* AT MAIN/60; GO 60+2\\    ^THE TWO STATEMENTS AT 60 ARE NOT TO
					BE EXECUTED.
^^	* ONCALL SUBA; OUTPUT T1\\    ^EACH TIME SUBROUTINE ^^SUBA\\ IS CALLED,
			THE VALUE OF ITS VARIABLE ^T1 WILL BE DISPLAYED.
^^	* STOP BEFORE FUNE; KILL BEFORE FUNE\\    ^EXECUTION WILL HALT 
			BEFORE RETURN FROM FUNCTION ^^FUNE\\ BUT ONLY THE
			FIRST TIME SINCE THE COMMAND ITSELF IS
			AUTOMATICALLY REVOKED.
^^	* ON FLAG .LT. 0; FLAG=0\\    ^EACH VALUE ASSIGNED TO VARIABLE ^^FLAG\\
			IN THE CURRENT ROUTINE THAT IS LESS THAN ZERO IS
			DISPLAYED AND VARIABLE ^^FLAG\\ IS SET ZERO.
.FILL
.SKIP
^&^THE ^^ONCALL\\ COMMAND\& IS USED TO GIVE NOTIFICATION OR HALT
EXECUTION WHEN A SPECIFIED ^^FORTRAN\\ SUBPROGRAM IS CALLED (AT THE
^^SUBROUTINE\\ OR ^^FUNCTION\\ STATEMENT). ^THE USER SHOULD NOT HAVE
GIVEN THE ^^/NOMAN\\ SWITCH IN HIS ^^DEBUG\\ COMMAND FOR THE ROUTINE.
^AN EXAMPLE:
.NOFILL
^^	* STOP ONCALL FUNC\\    ^HALTS EXECUTION EACH TIME ^^FUNC\\ IS CALLED.
^^	FUNC CALLED FROM MAIN/607-1\\    ^THIS MIGHT BE DISPLAYED.
^^	* ON CALL SUBR; OUTPUT ARG:2    T\\HIS NOTATION MAY BE USED
					TO LOOK AT AN ACTUAL ARGUMENT.
.FILL
.SKIP
^&^THE ^^BEFORE RETURN FROM\\ COMMAND\& IS USED TO GIVE NOTIFICATION OR HALT
EXECUTION BEFORE A ^^RETURN\\ STATEMENT IS EXECUTED INSIDE A SPECIFIED
^^FORTRAN\\ SUBPROGRAM:
.NOFILL
^^	* STOP BEFORE SUBR\\	 ^WILL HALT AND DISPLAY ^^'BEFORE RETURN'\\.
^^	* BEFORE SUBR,2\\          ^WILL DISPLAY MESSAGE EVERY SECOND TIME.
.FILL
.SKIP 2
.SUBTITLE ^^ON\\ ASSIGNMENT ^COMMAND
^&^THE ^^ON\\ COMMAND\& IS USED TO GIVE NOTIFICATION OR HALT EXECUTION
WHEN AN ASSIGNMENT OR INPUT STATEMENT IN A SPECIFIED ^^FORTRAN\\
ROUTINE MODIFIES A VARIABLE OR ARRAY. ^THE COMMAND WILL NOT DETECT
CHANGES TO SUBPROGRAM ACTUAL ARGUMENTS OR ^^NAMELIST\\ VARIABLES.
^YOU CAN CAUSE EACH NEW VALUE TO BE COMPARED WITH A CONSTANT OR CAUSE
CHECKING AT ONLY ONE OR SEVERAL STATEMENTS. ^YOU CAN
SPECIFY A SCALAR, ARRAY ELEMENT, OR ENTIRE ARRAY (REGARDLESS
OF HOW IT MAY BE EQUIVALENCED).
.NOFILL
^^	* STOP ON MAIN/P\\  ^HALTS WHEN THE VARIABLE ^P IN THE MAIN PROGRAM
.TEST PAGE 3
^^	AT MAIN /890      \\IS CHANGED WITH THIS SORT OF MESSAGE.
^^	P     =   34.4\\    ^IF A ROUTINE NAME IS OMITTED THEN ONLY THE
				CURRENT PROGRAM IS ASSUMED.
^^	* ON P .GT. 40\\    ^CHECKS FOR A VALUE GREATER THAN THE CONSTANT.
			  ^THE POSSIBLE CONDITIONS ARE ^^EQ,NE,LT,GT,LE,GE\\.
^^	* ON Y AT 60  \\    ^CHECKS THE ARRAY ^Y AT ONE STATEMENT ONLY.
^^	* ON MAIN/Y AT 60\\    ^IMPLIES THAT LABEL 60 IS IN THE MAIN
^^	AT MAIN/60\\		PROGRAM. ^CHECKING THE ENTIRE ARRAY GIVES
^^	Y    (  2)=    21.9	\\		THIS SORT OF MESSAGE.
^^	* ON I(3) BETWEEN 24 AND 25\\    ^CHECKS THE ARRAY ELEMENT IN THE
			STATEMENTS FROM 24 UP TO (BUT NOT INCLUDING) 25.
.FILL
.SKIP
^EXECUTION ALWAYS HALTS WHEN A CHANGE IS MADE BY AN INPUT STATEMENT
^^(READ, ACCEPT, ENCODE, DECODE)\\. ^ANY COMMANDS ATTACHED TO THE ^^ON\\
COMMAND ARE IGNORED. ^IF AN ENTIRE ARRAY IS CHANGED BY A ^^FORTRAN\\
STATEMENT SUCH AS ^^'READ(1,4)#ARRAY'\\, THEN EXECUTION HALTS
REGARDLESS OF ANY COMPARISON SPECIFIED IN THE ^^ON\\ COMMAND.
.SKIP
^IF THE SAME VARIABLE APPEARS IN MORE THAN ONE AUTOMATIC ^^ON\\ COMMAND
AND THE STATEMENTS THAT ARE SPECIFIED OVERLAP, THEN ONLY THE MOST
RECENT COMMAND TAKES EFFECT (ALL OTHERS ARE REVOKED).
.NOFILL
^^	* ON P BETWEEN 34-1 AND 34+4\\     ^IF THESE TWO COMMANDS ARE GIVEN
^^	* ON P AT 34\\		      THEN ONLY THE SECOND TAKES EFFECT.
.FILL
.SKIP
^VARIABLES THAT ARE EQUIVALENCED ARE TREATED BY ^^ON\\ COMMANDS AS
THO THEY WERE DIFFERENT VARIABLES; HENCE, ^^ON\\ COMMANDS CHECKING
EQUIVALENCED VARIABLES IN OVERLAPPING RANGES OF STATEMENTS WILL ALL BE
IN EFFECT. ^IF ^^TRY(5)\\ AND ^^COPY(5)\\ ARE EQUIVALENCED THEN:
.NOFILL
.SKIP
^^	* STOP ON COPY(3) .EQ. 100 AT 23\\   ^BOTH THESE ARE IN EFFECT EVEN
^^	* STOP ON TRY BETWEEN 23 AND 60\\    THO ^^COPY\\ AND ^^TRY\\ REFER TO THE
						SAME MEMORY LOCATIONS.
.FILL
^SINCE EQUIVALENCED VARIABLES REALLY REFER TO THE SAME MEMORY LOCATIONS,
AN ^^ON\\ COMMAND EFFECTING ONE VARIABLE WILL EFFECT OTHERS ALSO.
.SKIP
^OVERHEAD FROM ^^ON\\ COMMANDS CAN BECOME HIGH UNLESS YOU TAKE CARE TO
RESTRICT THE RANGE OF STATEMENTS CHECKED:
.NOFILL
^^	* ON MAIN/Y BETWEEN MAIN/+1 AND MAIN/+4\\    ^THE FIRST IS CHEAPER
^^	* ON MAIN/Y\\		BECAUSE IT ONLY CHECKS A FEW STATEMENTS
				INSTEAD OF THE WHOLE MAIN PROGRAM.
.FILL
.SKIP 2
^&^THE ^^KILL\\ COMMAND\& IS USED TO REVOKE ONE ^^AT\\ COMMAND, OR ONE
^^ONCALL\\ COMMAND, OR ONE ^^BEFORE RETURN\\ COMMAND, OR ONE OR
MORE ^^ON\\ ASSIGNMENT COMMANDS. ^ANY OTHER COMMANDS THAT ARE
ATTACHED ARE ALSO REVOKED:
.NOFILL
^^	* KILL AT MAIN/700\\	^REVOKES THE AUTOMATIC ACTION AT LABEL
				700 IN THE MAIN PROGRAM.
^^	* KILL ONCALL SUBR\\	^ERASES DETECTION OF CALLS TO ^^SUBR\\.
^^	* KILL BEFORE SUBR\\	^REVOKES DETECTION OF RETURNS FROM ^^SUBR\\.
^^	* KILL ON P\\		^ERASES DETECTION OF ASSIGNMENT OR OF
				INPUT MODIFICATION OF VARIABLE ^P IN THE
				CURRENT PROGRAM.
^^	* KILL ON Y AT 7\\	^REVOKES DETECTION OF MODIFICATION OF
				ARRAY ^Y AT LABEL 7 AND AT ALL
				OVERLAPPING RANGES OF STATEMENTS.
.FILL
.SUBTITLE ^^SUBCHECK\\ AND ^^TRACE\\ ^COMMANDS
.PAGE
^&^THE ^^SUBCHECK\\ COMMAND\& IS USED TO AUTOMATICALLY CHECK ARRAY SUBSCRIPTS
AND HALT EXECUTION WHENEVER A SUBSCRIPT GOES OUT OF ARRAY BOUNDS.
^YOU CAN CAUSE THE MONITORING OF A SPECIFIED ARRAY, ALL ARRAYS IN A
SPECIFIED ROUTINE, OR ALL ARRAYS IN ALL ROUTINES FOR WHICH YOU DID
NOT GIVE THE ^^/NOMAN\\ SWITCH IN YOUR ^^DEBUG\\ COMMAND.
^FOR EXAMPLE:
.NOFILL
^^	* SUBCHECK Y\\	^MONITORS ARRAY ^Y IN THE CURRENT ROUTINE.
^^	* SUBCHECK SUBR/, BETWEEN 100 AND 230+1\\    ^MONITORS ALL ARRAYS
			IN ROUTINE ^^SUBR\\ BUT ONLY FOR THE STATEMENTS
			FROM 100 UP TO (INCLUDING) LABEL 230. ^ALL ARRAYS
			IS HERE INDICATED BY THE COMMA.
^^	* STOP SUBCHECK MAIN/\\    ^STOPS MONITORING OF ALL ARRAYS
					IN THE MAIN PROGRAM.
^^	* STOP SUBCHECK Y AT 80-1\\    ^STOPS MONITORING OF ARRAY ^Y AT THE
					STATEMENT BEFORE LABEL 80.
.FILL
^IF AN ILLEGAL SUBSCRIPT IS DETECTED, THEN EXECUTION IS HALTED AND A
MESSAGE SUCH AS THIS IS DISPLAYED:
.NOFILL
^^	?REFERENCE TO Y   ILLEGAL AT MAIN /80 \\
^DO &N&O&T RESUME EXECUTION WITH:
^^	* GO\\		^THE BAD SUBSCRIPT WILL BE USED!
^INSTEAD:
^^	* GO 80\\		^GIVE THIS COMMAND AFTER THE SUBSCRIPTS
				ARE CORRECTED.
^^	* GO 80+1\\	OR GIVE THIS TO SKIP OVER THE ERRONEOUS STMT.
.FILL
.SKIP
^SUBCHECKING OF A CERTAIN ARRAY IS DONE ONLY WITHIN THE SPECIFIED ROUTINE.
^IF YOU WISH TO CHECK AN ARRAY COMMON TO MORE THAN ONE ROUTINE, YOU
MUST GIVE A ^^SUBCHECK\\ COMMAND FOR EACH ROUTINE. ^MONITORING A
SPECIFIC ARRAY DOES NOT MEAN CHECKING OF ARRAYS EQUIVALENCED TO IT.
.SKIP
^IF AN ILLEGAL ARRAY REFERENCE OCCURS WITHIN AN INPUT STATEMENT ^^(READ,
ACCEPT)\\, THEN SOME INPUT DATA WILL BE THROWN AWAY. ^IF A BAD
REFERENCE OCCURS WITHIN AN OUTPUT STATEMENT (^^WRITE, TYPE)\\, THEN SOME
ZEROS WILL BE OUTPUT.
.SKIP 2
^&^THE ^^HISTORY\\ COMMAND\& IS USED TO DISPLAY A RECORD OF ROUTINE CALLS
AND ^^GOTO\\S (INCLUDING ^^MANTIS GO\\ COMMANDS) FOR ALL ROUTINES FOR
WHICH YOU DID NOT GIVE THE ^^/NOMAN\\ SWITCH IN YOUR ^^DEBUG\\ COMMAND.
^BEGINNING WITH THE MOST RECENT, THE LAST ONE HUNDRED DEPARTURES FROM
SEQUENTIAL EXECUTION ARE DISPLAYED:
.NOFILL
^^	* HISTORY\\	      ^A ^^TRACE\\ COMMAND WAS NOT GIVEN BEFORE THIS.
^^	RETURNED TO MAIN/20+2\\	^MOST RECENTLY WAS A RETURN
				FROM SUBROUTINE ^^SUBA\\.
^^	CMD GO TO SUBA/5+1\\	^THE USER GAVE A ^^GO\\ COMMAND DURING
				EXECUTION OF THE SUBROUTINE ^^SUBA\\.
^^	SUBA CALLED\\		^THE SUBROUTINE CALL WAS RECORDED.
.FILL
.SKIP
^&^THE ^^TRACE \\COMMAND\& IS USED TO INITIATE RECORDING OF ^^GOTO\\,
ARITHMETIC ^^IF\\, AND TRUE LOGICAL ^^IF\\ STATEMENTS. ^THE ENTRY AND
LOOPING OF A ^^DO\\ LOOP IS NOT RECORDED. ^YOU MIGHT WANT TO INITIATE
TRACING BEFORE OR DURING EXECUTION AND DISPLAY THE HISTORY AT THE VERY
END OF PROGRAM EXECUTION. ^IF YOU REQUEST TRACING FOR THE ENTIRE
EXECUTION OF A PROGRAM, THE TIME OVERHEAD MAY BE HIGH.
.SUBTITLE ^^USE C\\OMMAND
.PAGE
^THE ^^USE\\ COMMAND IS USED TO DIRECT ^^MANTIS\\ DISPLAYS TO A FILE
ON DISK FOR LATER LISTING. ^NO PROGRAM BEING DEBUGGED MAY USE UNIT 24
IF YOU GIVE THE ^^USE\\ COMMAND. ^FOR EXAMPLE:
.NOFILL
^^	* USE PART1\\	^SENDS ^^MANTIS\\ DISPLAYS TO A DISK FILE NAMED
				^^PART1.DAT\\.
^^	* USE TTY\\	^AFTER EITHER ONE OF THESE TWO COMMANDS, ^^MANTIS\\
^^	* TYPE\\ X	OUTPUT IS SENT TO YOUR TELETYPE.
^^	* USE PART1\\	^APPEND ^^MANTIS\\ DISPLAYS TO INFORMATION
			ALREADY IN THE FILE.
^^	* USE PART2\\	^CLOSE FILE ^^PART1.DAT\\ AND BEGIN SENDING TO
			FILE ^^PART2.DAT\\. ^FILE ^^PART1.DAT\\ CANNOT BE
			USED OVER AGAIN WITHOUT OVER-WRITING IT.
.FILL
^THE ^^OUTPUT\\ COMMAND MUST ALWAYS BE USED INSTEAD OF THE ^^TYPE\\
COMMAND IF YOU WANT ^^MANTIS\\ DISPLAYS TO GO EITHER TO THE TELETYPE OR
TO THE DISK. ^THE ^^RESTART\\ OR ^^EXIT\\ COMMANDS ALSO CLOSE THE
^^USE\\ FILE.
.SUBTITLE ^RECOVERY FROM ^COMMON ^ERRORS
.SKIP 2
^&^MANY ^^FORTRAN\\ ERRORS\& CAN BE LOCATED QUICKLY USING THE ^^MANTIS\\
DEBUGGER. ^^MANTIS\\ TRAPS SEVERAL ERRORS WHICH WOULD OTHERWISE
TERMINATE EXECUTION, TELLING YOU WHERE THE ERROR OCCURRED IN THE
^^FORTRAN\\ PROGRAM AND GIVING YOU A CHANCE TO EXAMINE VARIABLES,
CHECK THE SEQUENCE OF EXECUTION (^^HISTORY\\ AND ^^TRACE\\ COMMANDS),
AND EVEN RE-EXECUTE ALL OR PART OF YOUR PROGRAM. ^INFINITE LOOPS
ARE ALSO EASIER TO LOCATE WITH ^^MANTIS\\ IN CONTROL.
.SKIP
^THE ^^DEC\\SYSTEM-10 MONITOR GENERATES A NUMBER OF ERROR MESSAGES WHICH
DO NOT GIVE THE ^^FORTRAN\\ PROGRAMER MUCH INSIGHT INTO THE NATURE OF THE
PROBLEM ENCOUNTERED. ^FOR EXAMPLE:
.NOFILL
	^^	?ILL MEM REF AT USER\\ X
	^^	?ILLEGAL UUO AT USER\\ X
	^^	?ILL INST AT USER\\ X
.FILL
.SKIP
^OTHER MESSAGES ARE CLEAR IN MEANING BUT DO NOT TELL YOU WHERE THE
ERROR OCCURRED IN YOUR ^^FORTRAN\\ PROGRAM. ^FOR EXAMPLE:
.NOFILL
	^^	INTEGER DIVIDE CHECK PC = \\X
.FILL
.SKIP
^WITHOUT ^^MANTIS\\, ^^FORTRAN\\ EXECUTION ERRORS TERMINATE EXECUTION AND
RETURN CONTROL TO THE MONITOR; HOWEVER, WITH ^^MANTIS\\, MANY OF THESE
ERRORS RETURN CONTROL TO ^^MANTIS\\ INSTEAD OF THE MONITOR. ^THE
DEBUGGER DISPLAYS THE LOCATION OF THE ^^FORTRAN\\ STATEMENT
ABOUT TO BE EXECUTED AND PROMPTS '*' FOR MORE COMMANDS. ^YOU MAY
THEN EXAMINE CRITICAL VARIABLES AND THE ^^HISTORY\\ TO DETERMINE THE CAUSE OF THE ERROR.
.SKIP 2
^&^THE FOLLOWING ARITHMETIC ERRORS\& MAY OCCUR:
.NOFILL
^^	INTEGER OVERFLOW PC =\\ X
^^	INTEGER DIVIDE CHECK PC =\\ X
^^	FLOATING OVERFLOW PC =\\ X
^^	FLOATING UNDERFLOW PC =\\ X
^^	FLOATING DIVIDE CHECK PC =\\ X
^^	ATTEMPT TO TAKE SQRT OF NEGATIVE ARG\\
^^	ACOS OF ARG_>1.0 IN MAGNITUDE\\
^^	ASIN OF ARG_>1.0 IN MAGNITUDE\\
.FILL
.SKIP
^NORMALLY ONLY THE FIRST TWO OCCURRENCES OF ANY OF THESE
ARITHMETIC ERRORS IS REPORTED TO THE USER. ^A CALL IN YOUR PROGRAM TO THE LIBRARY
SUBROUTINE ^^ERRSET\\ CAN BE USED TO CHANGE THIS LIMIT. ^ALTERNATIVELY,
THE VARIABLE ^^'ERRMX.'\\ MAY BE GIVEN IN A DISPLAY OR VALUE-CHANGE COMMAND TO CONTROL WHETHER
YOU ARE TOLD ABOUT AN ARITHMETIC ERROR.
.NOFILL
.SKIP
^^	_.TYPE  SAMP2.F4\\			^THE EXAMPLE PROGRAM
	^^	Y = 10.0
		X = Y/A
		STOP
		END\\
.SKIP
GENERATES AN ERROR MESSAGE DURING EXECUTION:
^^	_.DEB/LO SAMP2
	FORTRAN: SAMP2.F4
	LOADING
	 MANTIS V5
	CURRENT PROGRAM IS MAIN\\
^^	* GO\\
^^	?FLOATING DIVIDE CHECK PC =002110
^^	PROGRAM AT MAIN /     +2\\	^THE ERROR IS IN THE SECOND
					EXECUTABLE STATEMENT.
^^	* TYPE  Y,A\\		^THE USER COMMANDS DISPLAY OF ^Y AND ^A.
		10.0
		 0.0
.FILL
^HOPEFULLY, YOU WILL BE ABLE TO CORRECT YOUR PROGRAM ONCE YOU KNOW WHICH
STATEMENT CAUSES THE ERROR AND WHAT VALUES EACH VARIABLE HAD. ^IN THIS
EXAMPLE, VARIABLE ^A WAS ZERO BECAUSE IT WAS NEVER INITIALIZED IN THE
PROGRAM. ^IF THE USER TYPES:
.NOFILL
^^	* A =2.0\\		^THIS CHANGES THE VALUE OF VARIABLE ^A.
^^	* RESTART\\		^RESTART EXECUTION AT THE BEGINNING.
^^	INITILIZE DATA AND GO\\
^^	* GO\\			^THIS PROGRAM WILL NOW RUN WITHOUT ERROR.
.FILL
^THE USER CAN NOW EDIT HIS SOURCE PROGRAM TO INCLUDE INITIALIZATION OF
VARIABLE ^A. ^&^^MANTIS\\ DOES NOT MODIFY SOURCE PROGRAM FILES.\&
.SKIP 2
^^'^&ILL MEM REF AT USER\\ X\&' IS A MONITOR ERROR MESSAGE FREQUENTLY CAUSED
BY REFERENCING AN ARRAY ELEMENT WITH SUBSCRIPTS WHOSE VALUES ARE BEYOND
THE RANGE DIMENSIONED FOR THE ARRAY.
^THE SIMPLEST WAY TO CHECK FOR SUCH ERRORS IS TO USE THE ^^MANTIS\\
^^SUBCHECK\\ COMMAND.
.SKIP
.NOFILL
^^	_.TYPE  SAMP3.F4\\			^AN EXAMPLE PROGRAM.
^^		DIMENSION ARR(10)
		I = 50
		TEST = ARR(I)
		STOP
		END
	.DEB/LO SAMP3
	FORTRAN: SAMP3.F4
	LOADING
	 MANTIS V5
	CURRENT PROGRAM IS MAIN\\
^^	* SUBCHECK MAIN/ARR\\		^SETUP SUBSCRIPT CHECKING.
^^	SETUP\\
.TEST PAGE 3
^^	* GO\\				^BEGIN PROGRAM EXECUTION.
.SKIP
^^	?REFERENCE TO ARR  ILLEGAL AT MAIN /    + 2\\
.FILL
.SKIP
^ONCE THE LOCATION OF THE ILLEGAL ARRAY REFERENCE IS KNOWN, YOU CAN
CHECK THE SOURCE PROGRAM TO FIND THE STATEMENT AND FURTHER CHECK THE
VARIABLE SUBSCRIPT(S) USED WITH THE ^^MANTIS\\ ^^TYPE\\ COMMAND. ^IF
THERE IS MORE THAN ONE SUBSCRIPTED ARRAY IN THE STATEMENT,
YOU MIGHT DISPLAY EACH SUBSCRIPT TO DETERMINE WHICH ONES ARE
OUT OF BOUNDS.
.SKIP 2
^&^AN INFINITE LOOP\& IS ANOTHER PROGRAMING ERROR. ^IT CAN BE HARD TO LOCATE
BECAUSE THERE IS NO ERROR MESSAGE FOR IT. ^ONE SUSPECTS AN INFINITE
LOOP WHEN 1) THE SAME OUTPUT IS TYPED OVER AND OVER ON YOUR TELETYPE OR
IN YOUR DATA FILE; 2) NOTHING IS TYPED ON YOUR TELETYPE AND SOMETHING
SHOULD HAVE BEEN. ^A WAYWARD LOOP MAY ALSO EVENTUALLY CAUSE A SUBSCRIPT
TO GO OUT OF RANGE (^^ILL MEM REF\\) OR CAUSE A VARIABLE VALUE TO
OVERFLOW OR UNDERFLOW. ^AN INFINITE LOOP IS FOUND USING THE ^^TRACE\\
AND ^^HISTORY\\ COMMANDS AND THE MONITOR COMMAND ^^'REENTER'\\.
.SKIP
^THE FOLLOWING PROGRAM CONTAINS TWO BUGS:
1) ^^ISTART\\ IS INITIALIZED TO ZERO, SO THE FIRST REFERENCE TO
^^IARRAY\\ IS ILLEGAL; 2) ^^INC\\ IS INITIALIZED TO ZERO (BY DEFAULT),
SO THE VALUE OF ^I NEVER CHANGES, THUS CAUSING AN INFINITE LOOP.
.NOFILL
.SKIP
^^_.TY SAMP4.F4\\				^THE EXAMPLE PROGRAM.
^^	DIMENSION IDUMMY(2), IARRAY(5)
	DATA IEND/5/
	I=ISTART
10	IARRAY(I)=10*I
	I=I+INC
	IF(I.LE.IEND) GO TO 10
	STOP
	END
.SKIP
_.DEB/LO SAMP4\\		^USE ^^MANTIS\\ TO FIND THESE TWO BUGS.
^^FORTRAN: SAMP4.F4
LOADING
#MANTIS V5
CURRENT PROGRAM IS MAIN
* TRACE\\			^FIRST, A ^^TRACE \\COMMAND IS ENTERED TO
				MONITOR THE FLOW OF EXECUTION.
* ^^GO\\			^AFTER ^^GO\\ HAS BEEN TYPED AND AN
_^^C				INORDINATE AMOUNT OF TIME HAS ELAPSED
_^^C				WITH NO PROGRAM RESPONSE, THE USER TYPES
				_^^C_^^C TO LEAVE PROGRAM EXECUTION AND
				RETURN TO THE MONITOR.
_.^^REE\\			^EXECUTION IS ^^REENTER\\ED, ^^MANTIS\\
				TELLS THE USER AT WHICH STATEMENT IN THE
^^PROGRAM AT MAIN /  10\\	PROGRAM EXECUTION WAS INTERRUPTED.
^^* USE TRCFL\\			^SINCE THE ^^HISTORY\\ HOLDS 100 LINES OF
				OUTPUT AND THE TELETYPE IS A SLOW
^^* HISTORY\\			DEVICE, THE USER DIRECTS OUTPUT TO THE
				DISK FILE ^^TRCFL.DAT\\, WHICH CAN BE
				EXAMINED LATER.
^^* USE TTY\\			^THE USER NOW RE-DIRECTS ^^MANTIS\\ OUTPUT
				TO HIS TELETYPE.
^^* OUTPUT INC\\		^HE EXAMINES AND CORRECTS VARIABLE ^^INC\\.
		0
^^* INC=1\\
^^* STOP TRACE\\		^STOP ALL TRACING, AND
^^* SUBCHECK\\			SETUP SUBSCRIPT CHECKING FOR ALL ARRAYS.
^^SETUP\\
^^* GO MAIN/+1\\		^RESUME EXECUTION AT BEGINNING.
.SKIP
^^?REFERENCE TO IARRAY ILLEGAL AT MAIN /  10\\
.SKIP
^^* OUTPUT I\\			^A SUBSCRIPT ERROR WAS FOUND SO THE USER
		0		EXAMINES THE SUBSCRIPT VARIABLE ^I.
^^* EXIT\\			^EXIT TO THE MONITOR SO HE CAN
				EDIT HIS PROGRAM SOURCE FILE.
^^END OF EXECUTION
CPU TIME: 5.40 ELAPSED TIME: 5:25.31
EXIT\\
.SKIP
^^_.TYP TRCFIL.DAT\\		^THE INFINITE LOOP IS WELL REPRESENTED
				BY THE SERIES OF ENTRIES IN THE ^^HISTORY\\
^^ MANTIS OUTPUT\\		OUTPUT WHICH WAS SENT TO THE FILE
				^^TRCFL.DAT\\.
^^GO TO MAIN /10
GO TO MAIN /10
GO TO MAIN /10
GO TO MAIN /10
GO TO MAIN /10
GO TO MAIN /10
GO TO MAIN /10
GO TO MAI_^C\\
.FILL
.SUBTITLE ^COMMAND ^SYNTAX
.PAGE
^CAPITAL LETTERS INDICATE KEYWORDS; LOWER-CASE INDICATE SOURCE-PROGRAM
NAME OR NUMBER OR A CONSTRUCT NAME. [] INCLOSES OPTION; IF CONSECUTIVE
LINES THEN CHOOSE ONE OF THE LINES. ^CARRIAGE-RETURN IS USED TO END
A COMMAND LINE.
.NOFILL
.LEFT MARGIN 0
.SKIP
COMMAND:	[ [^^STOP\\ ]STORED-COMMAND[ATTACHMENTS]	]
		[ ^^GO\\					]
		[ CARRIAGE-RETURN			]
		[ ATTACHABLE-COMMAND			]
		[ ^^KILL\\					]
		[ [^^STOP ]SUBCHECK\\[SUBCHECK-ARGUMENTS]	]
		[ ^^HISTORY\\				]
		[ [^^STOP ]TRACE[ OUTPUT][ PAUSE]\\		]
		[ CONTROL-^C[CONTROL-^C]			]
		[ ^^RESTART\\				]
		[ ^^EXIT\\					]
		[ MAGTAPE-COMMAND			]
		[ ^^USE\\ [FILENAME]
		      [^^TTY\\	]			]
STORED-COMMAND:	[ ^A^T LABEL[,POSITIVE-INTEGER]		]
		[ ^^ON[ ]CALL\\ ROUTINE			]
		[ ^^BEFORE[ RETURN][ FROM]\\ ROUTINE[,POSITIVE-INTEGER] ]
		[ ^O^N VARIABLE[.RELATION.CONSTANT][ RANGE] ]
.SKIP
ATTACHMENTS:		; ATTACHABLE-COMMAND[ATTACHMENTS]
ATTACHABLE-COMMAND:	[ ; COMMENT ENDED BY A CARRIAGE-RETURN	]
			[ ^G^O LABEL				]
			[ ^^TY[PE]\\ OUTPUT-LIST			]
			[ ^^OU[TPUT]\\ OUTPUT-LIST			]
			[ ELEMENT = CONSTANT			]
			[ ^^KILL	[AT\\ LABEL	]
				[^^ONCALL\\ ROUTINE	]
				[^^BEFORE\\ ROUTINE	]
				[^O^N VARIABLE[ RANGE] ]	]
.SKIP
SUBCHECK-ARGUMENTS:	[ [ROUTINE/]NAME[ RANGE] ]
			[ ROUTINE/[,RANGE]	]
OUTPUT-LIST:	ELEMENT[ ^^IN[]TEXT\\] [,OUTPUT-LIST]
		       [ ^^IN[]OCTAL\\]
ELEMENT:	[ [ROUTINE/]SCALAR		]
		[ [ROUTINE/]ARRAY(SUBSCRIPT-CONSTANTS)	]
		[ [ROUTINE/]ARRAY(SUBSCRIPT-CONSTANTS-OR-*)]
		[ ^^ARG:\\POSITIVE-INTEGER		]
VARIABLE:	[ROUTINE/] NAME [(SUBSCRIPT-CONSTANTS)]
CONSTANT:	[CONSTANT OF TYPE MATCHING VARIABLE]
		[ 'TEXT-CHARACTERS' ]
		[ "OCTAL-NUMBER ]
.SKIP
RANGE:		[ ^A^T LABEL		]
		[ ^^BETWEEN\\ LABEL ^^AND\\ LABEL]
.SKIP
MAGTAPE-COMMAND:	[ ^^ENDFILE\\] _#POSITIVE-INTEGER
			[ ^^REWIND\\]
			[ ^^UNLOAD\\]
			[ ^^BACKSP[ACE]\\]
			[ ^^SKIPRE[CORD]\\]
.FILL
.LEFT MARGIN 4
.SUBTITLE
.PAGE
.CENTER
^SELECTED ^MESSAGES ^DISPLAYED BY ^^MANTIS\\
.SKIP 2
.LEFT MARGIN 12
.INDENT -8
^^?BAD POSITION\\: STATEMENT DOES NOT EXIST IN SPECIFIED (OR ASSUMED)
ROUTINE.
.SKIP
.INDENT -8
^^?BOUNDS UNDEFINED\\: THERE IS NO CALCULATED REFERENCE TO THE
VARIABLE-DIMENSIONED ARRAY IN SPECIFIED SUBROUTINE;
.BREAK
OR THE DEBUGGER DOES NOT KNOW WHAT THE ARRAY BOUNDS ARE.
.SKIP
.INDENT -8
^^?INVALID UNIT\\: THE LOGICAL UNIT NUMBER IS TOO SMALL OR LARGE;
.BREAK
OR THE NUMBER IS 24 BUT A ^^USE\\ COMMAND HAD BEEN GIVEN.
.SKIP
.INDENT -8
^^_%MISSED KILL\\: THE COMMAND TO BE REVOKED BY THE ATTACHED ^^KILL\\
WAS NOT FOUND.
.SKIP
.INDENT -8
^^?NAME UNDEFINED\\: THE LABEL OR VARIABLE IS NOT USED IN AN
EXECUTABLE STATEMENT IN THE SPECIFIED (OR ASSUMED) ROUTINE;
.BREAK
OR THE ROUTINE WAS GIVEN THE ^^/NOMAN\\ SWITCH IN THE ^^DEBUG\\ COMMAND.
.SKIP
.INDENT -8
^^#NO COMPUTED REFS\\: THERE IS NOTHING TO ^^SUBCHECK\\ IN THE SPECIFIED
STATEMENT(S).
.SKIP
.INDENT -8
^^?NOT VALID ATTACHED\\: THE ATTACHED COMMAND (AFTER A SEMICOLON) CAN BE
USED ONLY BY ITSELF.
.SKIP
.INDENT -8
^^#PROGRAM AT##?##\\##PROGRAM EXECUTION WAS INTERRUPTED
WHILE IN A NON-^^FORTRAN\\ ROUTINE OR WHILE IN A ROUTINE WHICH WAS GIVEN
THE ^^/NOMAN\\ SWITCH IN THE ^^DEBUG\\ COMMAND.
.SKIP
.INDENT -8
^^?RESET.#LUUO NOT ALLOWED\\: ^^MACRO-10\\ PROGRAMS MAY NOT BE DEBUGGED
WITH THE ^^MANTIS\\ PROGRAM.
.SKIP
.INDENT -8
^^?SPECIFY ELEMENT OR JUST NAME\\: IN THE ^^ON\\ COMMAND THE '*' NOTATION
IS NOT ALLOWED.
.SKIP
.INDENT -8
^^?SYNTAX ERROR\\: THE COMMAND HAS BEEN MISTYPED; BE SURE BLANKS ARE IN
PROPER PLACES;
.BREAK
OR A REAL CONSTANT ASSIGNED TO AN INTEGER VARIABLE;
.BREAK
OR '*' NOTATION NOT USED BY ITSELF IN A SINGLE DISPLAY OR VALUE-CHANGE COMMAND.
.SKIP
.INDENT -8
^^?TOO MANY COMMAND STRINGS\\: THE AREA THAT HOLDS AUTOMATIC ACTION
COMMANDS IS FULL.