Google
 

Trailing-Edge - PDP-10 Archives - bb-l014q-bm_tops20_v6_1_atpch17 - autopatch/maklib.c17
There are no other files named maklib.c17 in the archive.
 REP 1/1	;17C1
	; UPD ID= 142, SNARK:<6.1.UTILITIES>MAKLIB.MAC.2,   6-Jun-85 16:23:59 by DMCDANIEL
	TITLE MAKLIB - RELOCATABLE BINARY FILE MANIPULATION PROGRAM
		SUBTTL	DAVID MCDANIEL/IGNORE REL BLOCK TYPE 100/25-APR-85
		SUBTTL	/HRB/CLRH/MFB/MS 28-SEP-80
 WIT
	TITLE MAKLIB - RELOCATABLE BINARY FILE MANIPULATION PROGRAM
		SUBTTL	/HRB/CLRH/MFB/MS/PY	5-SEP-85
 REP 9/1	;17C2
	;COPYRIGHT (C) 1975,1976,1977,1978,1980,1984 BY
	;DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
 WIT



	;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1975,1976,1977,1978,1980,1981,1982,1983,1984,1986,1987.
	;ALL RIGHTS RESERVED.
 REP 29/1	;17C3
		DECMVR==2
		DECEDT==105
 WIT
		DECMVR==3
		DECEDT==132
 INS 50/1	;17C4
		ND KL10,1		;[113] USE KL OP CODES
 REP 53/1	;17C5
	COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1975,1984.
 WIT
	COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1975,1987. ALL RIGHTS RESERVED.
	\;END COPYRIGHT MACRO
 REP 82/2	;17C6
	;		WHILE DISPLAYING THE HEADING ON LIST AND POINT SWITCH.
	;105	(NONE)	ADD A CHECK FOR REL BLOCK TYPE 100 AT READ2B+5 AND YANK2+5.
	;		JUST IGNORE REL BLOCK TYPE 100.  QAR #838228.
 WIT
	;		WHILE DISPLAYING THE HEADING ON LIST AND POINT SWITCH

	;Start of version 2C

	;105	MS	5-Jan-81	SPR 10-30404
	;	EVADR should skip EVAEX pass if "(" followed by blank
	;	and accept the valid return value in ac "A" by checking
	;	C.LHNZ

	;106	MS	12-Jan-81	NO SPR
	;	Recognize a partially defined symbol if it is
	;	dependent on another symbol.

	;107	MS	29-Jan-81	SPR 10-30538
	;	If no transaction file exists MAKLIB should not continue.
	;	Return MKLTFR as a fatal error instead of warning message.

	;110	MS	15-Jun-81	SPR 10-16223
	;	Add psuedo-op .GO to ignore MKLMAH error and continue.

	;111	PY	9-Sep-81	NO SPR
	;	Change the edit history, retroactive to last release.
	;	Include date, initials, and expand the SPR number to
	;	show if it is a TOPS-10 or TOPS-20 SPR. Also use
	;	lower case. Change the minor version number to indicate
	;	that edits were made after 2B was released.

	;112	PY	10-Sep-81	SPR 10-31533
	;	Fix problem with line sequence numbers so that the optional
	;	tab will be gobbled as part of the number, not part of the
	;	text.

	;113	PY	15-Sep-82	SPR 10-33051
	;	Update the opcode table. Add KL instructions under a KL10
	;	feature test. Turn the test on as default.

	;114	PY	6-Oct-82	SPR 10-33132
	;	Use 376 instead of 177 as a mask when looking for the last
	;	character in a word.

	;115	PY	7-Oct-82	SPR 10-33123
	;	Don't overwrite BLT accumulator during the BLT.

	;116	PY	12-Oct-82	SPR 10-33134
	;	Fix Type 1 blocks with more than 18 data words correctly.

	;117	PY	13-Oct-82	SPR 10-33125
	;	Add MKLCFP message if user attempts to /FIX a psected file.

	;120	PY	14-Oct-82	SPR 10-33124
	;	Allow only simple relocatable address in .INSERT or .ALTER

	;121	PY	15-Nov-82	SPR 10-33238
	;	Fix edit 113, add G-Float, XMOVEI, and XHLLI

	;122	PY	27-Jan-83	SPR 10-33507
	;	Don't change type 3 block highseg break if left and right
	;	halfwords are the same.

	;123	PY	26-Apr-83	SPR 10-33685
	;	Fix typo in edit 121.

	;124	PY	6-May-83	SPR 10-33829
	;	Don't ignore /switch after /switch: on commands with
	;	multiple transaction files. Makes commands such as
	;	OUT=MASTER,TRANS1/APPEND:MODULE,TRANS2/APPEND work
	;	correctly.

	;125	PY	13-May-83	SPR 10-33874
	;	Allow .TEXT blocks after the index block but before
	;	the name block. They are not proper because they do
	;	not really belong to the module being looked at, but
	;	MAKLIB should not die because of them.

	;126	PY	29-Sep-83	SPR NONE
	;	Fix bug in edit 124. Don't store a zero switch unless
	;	it is to overwrite a previous name (as in the case of
	;	the second transaction file).

	;127	LEO	5-SEP-85
	;	Do Copyrights.
			
	;130	PERK	19-MAY-87
	;	Do Copyright.

	;131	PERK	4-JUN-87	SPR 20-21599
	;	Fix MAKLIB to abort if a long Fortran symbol is found.
	;	(Block types 1004,1005,1006)

	;132	MCDANIEL	6-JUN-85	QAR #838228
	;	This edit was put in the TOPS-20 sources but not the TOPS-10 in 1985.
	;	ADD A CHECK FOR REL BLOCK TYPE 100 AT READ2B+5 AND YANK2+5.
	;	JUST IGNORE REL BLOCK TYPE 100.
 DEL 27/5	;17C7
	;**; [77] CHANGE AT DEFINITION OF MAXMOD	MFB	30-JUL-80
 INS 33/6	;17C8
		BIT(SYMDEP)		;[106] ON MEANS SYMBOL IS DEPENDENT
		BIT (IGNEDT)		;[110] ON MEANS IGNORE THIS EDIT
 REP 43/16	;17C9
		JUMPE	N,CPOPJ
		HLRZ	T2,TMAREA+.FXLEN
		CAIL	T2,MAXMOD
	;**; [100] CHANGE @ STORER + 13L	MS	15-SEP-80
	;**; [100] ADD THE MODULE NAME IN THE FOLLOWING MESSAGE
	;**; [100] TO INDICATE HOW FAR THE MODULES CAN BE ACCEPTED.
		    $KILL(TMN,Too many module names - stopped at MODULE:,N$SIX) ;[100]
		AOS	T2
 WIT
		HLRZ	T2,TMAREA+.FXLEN
		CAIL	T2,MAXMOD
		    $KILL(TMN,Too many module names - stopped at MODULE:,N$SIX) ;[100]
		AOS	T2
		SKIPN	TMAREA+.FXLEN(T2)	;[126] Second (or more) filespec?
		 JUMPE	N,CPOPJ			;[126] No, don't store blank
 DEL 57/20	;17C10
	;**; [104] INSERT @ OLIST + 17L	MS	28-SEPT-80
 DEL 11/21	;17C11
	;**; [73] INSERT AT OPNLKO + 7 1/2	CLRH	1-AUG-79
 DEL 13/22	;17C12
	;**; [73] INSERT BEFORE INDOP2	CLRH	1-AUG-79
 DEL 67/23	;17C13
	;**; [72] CHANGE AT SWT1 + 15	CLRH	27-JUL-79
 REP 89/23	;17C14
		$WARN (TFR, all TRANSACTION files rejected by conditions)	;[70] NO.
		JRST	INDCLS			;[70] CLOSE UP SHOP

	;**; [72] INSERT BEFORE SWTBL	CLRH	27-JUL-79
	SWTLKE:	MOVEI	T1,LKPBLK		;[72] GET INFORMATION
		MOVEI	T2,6			;[72] TO PUT OUT ERROR MESSAGE
	;**; [76] CHANGE @ SWTLKE + 2L	MFB	30-JUL-80
 WIT
		$KILL (TFR, all TRANSACTION files rejected by conditions)	;[107][70] NO.
		JRST	INDCLS			;[70] CLOSE UP SHOP

	SWTLKE:	MOVEI	T1,LKPBLK		;[72] GET INFORMATION
		MOVEI	T2,6			;[72] TO PUT OUT ERROR MESSAGE
 REP 40/28	;17C15
	TRC4:	ANDI	A,177			;DISCARD ALL BUT LAST BYTE
 WIT
	TRC4:	ANDI	A,376			;[114] DISCARD ALL BUT LAST BYTE
 REP 50/29	;17C16
		ANDI	A,177			;GET DOWN TO LAST BYTE ONLY
 WIT
		ANDI	A,376			;[114] GET DOWN TO LAST BYTE ONLY
 INS 17/37	;17C17
		CAIN	B,23			;[117] PSECT NAME BLOCK?
		 $KILL(CFP,Cannot FIX Psects)	;[117] YES, ERROR
 REP 25/37	;17C18
		CAIN	B,100			;IS IT A REL BLOCK TYPE 100(.ASSIGN)?
		 JRST	YANK2A			;YES, PROCESS AS A LEGAL BLOCK TYPE
 WIT
		CAIN	B,100			;[132] IS IT A REL BLOCK TYPE 100(.ASSIGN)?
		 JRST	YANK2A			;[132] YES, PROCESS AS A LEGAL BLOCK TYPE
 REP 39/37	;17C19
		ANDI	A,177			;GET RID OF ALL BUT LAST BYTE
 WIT
		ANDI	A,376			;[114] GET RID OF ALL BUT LAST BYTE
 REP 41/39	;17C20
		ANDI	B,177			;MASK TO LAST ASCII BYTE
 WIT
		ANDI	B,376			;[114] MASK TO LAST ASCII BYTE
 REP 56/43	;17C21
		JRST	SYMSR3			;YES,SET PTRS AND RETURN
 WIT
		JRST	SYMADV			;[106] YES,ALSO JUMP TO CHECK NEXT PAIR
 REP 84/43	;17C22
		MOVS	A,[XWD T1,SYMBLK]	;RESTORE ACS
		BLT	A,D			;FROM LAST SEARCH
		JRST	SYMS2A			;AND CONTINUE
 WIT
		MOVS	D,[XWD T1,SYMBLK]	;[115] RESTORE ACS
		BLT	D,D			;[115] FROM LAST SEARCH
		JRST	SYMS2A			;AND CONTINUE
	;[106] /SYMADV/ IS A ROUTINE TO ADVANCE TO THE NEXT SYMBOL  PAIR.
	;[106] THIS IS TO RECOGNIZE THE FACT THAT THE SYMBOL WE ARE CURRENTLY
	;[106] LOOKING MAY BE PARTIALLY DEFINED IN TERMS OF THE SYMBOL PAIR THAT
	;[106] IMMEDIATELY FOLLOWS IT (I.E SYMBOL TYPE 60)

	SYMADV:	PUSH	P,A			;[106] SAVE AC A
		PUSH 	P,B			;[106] SAVE AC B
		PUSH 	P,C			;[106] SAVE AC C
		ADDI	C,2			;[106] ADVANCE A PAIR
		MOVE	A,(C)			;[106] GET THE SYMBOL
		LDB	B,[POINT 4,0(C),3]	;[106] GET BITS INTO B
		LSH	B,2			;[106] GET BITS INTO 30-33
		CAIE	B,60			;[106] IS IT FOLLOWED BY PAIR OF 60
		JRST	SYMAD1			;[106] NO, CONTINUE NORMALLY
		ADDI	C,1			;[106] GET POINTER FOR DEPENDENT SYM
		MOVE	A,(C)			;[106] GET THE SYMBOL
		LDB	B,[POINT 4,0(C),3]	;[106] GET BITS INTO B
		LSH	B,2			;[106] GET BITS INTO 30-33
		CAIE	B,50			;[106] IS THE SYMBOL 50 TYPE
		JRST	SYMAD1			;[106] NO,CONTINUE NORMALLY
		TXO	F,SYMDEP		;[106] YES, SET TO BE DEPENDING
		SETZ	R,			;[106] TO FIND A GLOBAL REQUEST
		SUBI	C,1			;[106] RETURN WITH DEPENDENT SYMBOL
		POP	P,0(P)			;[106] THROW AWAY C
		POP	P,B			;[106] RESTORE B
		POP	P,A			;[106] RESTORE A
		JRST	SYMS2B			;[106] JUMP TO MATCH THIS PAIR
	SYMAD1:	POP	P,C			;[106] RESTORE THE PREVIOUS POINTER
		POP	P,B			;[106] RESTORE B
		POP	P,A			;[106] RESTORE A
		JRST	SYMSR3			;[106] GO BACK AND CONTINUE


	;[106] RADIX50 TO SIXBIT CONVERSION ROUTINE
	;[106] CONVERSION IS DONE THROUGH THE TESTS BECAUSE RADIX50 DOES
	;[106] NOT CORRESPOND ONE TO ONE SIXBIT CHARACTER.
	;[106] INPUT C, TO SET UP POINTER TO THE SYMBOL
	;[106] OUTPUT AC R CONTAINS THE SYMBOL IN SIXBIT

	COSIX:	PUSHJ	P,.PSH4T##		;[106] SAVE THE TEMPS T1-T4
		MOVE	T1,(C)			;[106] GET THE POINTER
		TLZ	T1,740000		;[106] CLEAR THE CODE BITS
		SETZ 	T4,			;[106]
	COSIX1:	IDIVI	T1,50			;[106] GET LAST RADIX50 CHARACTER
		SETZ	T3,			;[106]
		CAILE	T2,1			;[106]
		MOVEI	T3,'0'-1(T2)		;[106] ADD SIXBIT "0" OFFSET
		CAILE	T2,12			;[106] LETTER OR NUMBER?
		MOVEI	T3,'A'-13(T2)		;[106] ADD SIXBIT "A" OFFSET
		CAILE	T2,44			;[106]
		MOVEI	T3,'.'-45(T2)		;[106] ADD SIXBIT "." OFFSET
		CAILE	T2,45			;[106] 
		MOVEI	T3,'%'-46(T2)		;[106] ADD SIXBIT "%" OFFSSET
		JUMPE	T3,CPOPJ		;[106] IGNORE BLANKS
		LSHC	T3,-6			;[106] COLLECT IN T4 IN REVERSE ORDER
		JUMPN	T1,COSIX1		;[106] ANY MORE?
		MOVE	R,T4			;[106] SAVE IN REG R
		PUSHJ	P,.POP4T##		;[106] RESTORE T1-T4
		POPJ	P,			;[106]


 REP 29/44	;17C23
		MOVE	D,A			;DESIRED VALUE
		SUB	D,2(B)			;MINUS START ADDRESS
		ADDI	D,3(B)			;PLUS BASE GIVES CORE POSITION
		MOVE	C,D			;RETURN IT IN C
 WIT
		PUSH	P,A			;[116] SAVE THE ADDRESS
		SUB	A,2(B)			;[116] MINUS START ADDRESS
		MOVE	C,A			;[116] GET THE OFFSET
		IDIVI	C,^D18			;[116] GET THE EXTRA RELOCATION
		ADD	C,A			;[116] ADD THE OFFSET
		ADDI	C,3(B)			;[116] PLUS BASE GIVES CORE POSITION
		POP	P,A			;[116] RESTORE THE ORIGINAL ADDRESS
 REP 66/48	;17C24
		SKIPE	2(A)			;[16]HISEG TYPE 3 BLOCK HAS 0
						;[16]SO DONT INCREMENT IT
 WIT
		MOVS	D,2(A)			;[122] GET THE RIGHT AND LEFT HALVES
		CAME	D,2(A)			;[122] DON'T UPDATE IF THE SAME
 REP 81/57	;17C25
		CAIN	B,100		;IS IT A REL BLOCK TYPE 100 (.ASSIGN)?
		 JRST	READ2D		;YES, PROCESS AS A LEGAL BLOCK TYPE
 WIT
		CAIN	B,100		;[132] IS IT A REL BLOCK TYPE 100 (.ASSIGN)?
		 JRST	READ2D		;[132] YES, PROCESS AS A LEGAL BLOCK TYPE
 INS 44/58	;17C26
		CAILE	B,3777		;[125] IS IT ASCIZ TEXT BLOCK?
		JRST	READ19		;[125] YES,HANDLE IT DIFFERENTLY
 INS 73/59	;17C27

	READ19:	ANDI	A,376		;[125] GET RID OF ALL BUT LAST BYTE
		JUMPE	A,READ8		;[125] IF STRING EXHAUSTED,GET NEXT BLOCK
		PUSHJ	P,GETIN		;[125] ELSE GET THE NEXT BYTE
		JRST	READ19		;[125] AND REPEAT LOOP

 DEL 19/60	;17C28
		EXP	1040		;END BLOCK
 REP 24/60	;17C29
		READ4
		READ4
		READ9
		READ9
 WIT
		ERLFS			;[131] Not supported
		ERLFS			;[131] Not supported
		READ9
		ERLFS			;[131] Not supported
 DEL 31/60	;17C30
		READ15
 REP 46/61	;17C31
	WRITE5:	ANDI	A,177		;DISCARD ALL BUT LAST BYTE
 WIT
	WRITE5:	ANDI	A,376		;[114] DISCARD ALL BUT LAST BYTE
 REP 8/63	;17C32
	;BITS 0-17	BITS18-23	BITS 24-35		TYPE
 WIT
		;BITS 0-17	BITS18-23	BITS 24-35		TYPE
 DEL 45/67	;17C33
	;**; [71] INSERT AT NOROOM + 13 1/2	CLRH	27-JUL-79
 DEL 19/68	;17C34
	;**; [71] CHANGE AT INDEX4 + 11	CLRH	27-JUL-79
 REP 24/73	;17C35
	;**;[25]   MACLOD+5     ILG    9-JUL-76
		PUSHJ	P,BIN			;[25]INSURE BUFFER IS SET UP
		MOVE	T1,@TBUF+1		;[25]GET CURRENT WORD
		TRNE	T1,1			;[25]CHECK FOR LSN BIT
		AOS	MACPTR			;[25]GOT LSN. SKIP THE WORD
		SKIPA	T1,[POINT 7,MACBUF]	;[25]RESTORE T1,SKIP THE LOAD CHAR
 WIT
		PUSHJ	P,BIN			;[25]INSURE BUFFER IS SET UP
		MOVE	T1,@TBUF+1		;[25]GET CURRENT WORD
		TRNN	T1,1			;[112] CHECK FOR LSN BIT
		JRST	MACLD0			;[112] NOT LINE SEQUENCE
		MOVEI	T1,5			;[112] PREPARE TO GET 5 CHARACTERS
	MACLDA:	IDPB	CC,MACPTR		;[112] STORE AS PART OF SEQ NO.
		PUSHJ	P,BIN			;[112] EAT A CHARACTER
		SOJG	T1,MACLDA		;[112]
		CAIE	CC,11			;[112] IS IT A TAB?
		JRST	MACLD0			;[112] NO, USE IT
		IDPB	CC,MACPTR		;[112] YES, STORE AS PART OF SEQ NO.
		PUSHJ	P,BIN			;[112] GET ANOTHER CHARACTER
	MACLD0:	SKIPA	T1,MACPTR		;[112] RESTORE T1,SKIP THE LOAD CHAR
 REP 15/92	;17C36
		PUSHJ	P,EVALEX		;EVALUATE ADDRESS PART
 WIT
		CAIN	CC,"("			;[105] IF "(" AVOID A PASS OF EVALEX
		JRST	EVADR1			;[105] JUMP FOR INDEX 
		PUSHJ	P,EVALEX		;EVALUATE ADDRESS PART
	;**;	[105]	"@(...)" RETURNS VALUE IN LH OF AC A SO
	;**;	[105] ACCEPT BY VALIDITY CHECKING
		TLNN	D,C.LHNZ		;INSURE IF LH RETURNED WITH VALID DATA
		JRST	EVADR1			;[105] JUMP FOR REST OF THE INDEX PART
 REP 20/92	;17C37
		IORM	A,0(P)			;UPDATE PARTIAL RESULT
 WIT
	EVADR1:	IORM	A,0(P)			;[105] UPDATE PARTIAL RESULT
 INS 59/99	;17C38
		TXZE	F,SYMDEP		;[106] IS IT DEPENDENT?
		PUSHJ	P,COSIX			;[106] GET THE SYM FROM PAIR
 DEL 7/120	;17C39
	;**;[101]	DELETE TWO LINES  @ MOD3 6L +	MS	16-SEPT-80
 DEL 43/120	;17C40
	;**;[101]	DELETE TWO LINES  @ MOD3 6L +	MS	16-SEPT-80
 REP 48/120	;17C41
		MOVE	N,CURMOD		;BLOW THEM AWAY
 WIT
		TXZN	F,IGNEDT		;[110] IGNORE EDIT?
		JRST	MOD5A			;[110] NO GIVE FATAL ERROR
		MOVE	N,CURMOD		;[110] GET MODULE NAME FOR TYPOUT
		$WARN (MAH,Module,N$SIX,$MORE)	;[110] 
		MOVEI	T1,[ASCIZ/ already has an edit /]	;[110] 
		PUSHJ	P,.TSTRG##		;[110] FINISH THE MESSAGE
		MOVE	T1,CUREDT		;[110] IDENTIFY EDIT 
		PUSHJ	P,.TSIXN##		;[110]
		PUSHJ	P,.TCRLF##		;[110] CLOSE THE MESSAGE
		TXZ	F,FOTTY			;[110]
		JRST	MOD7			;[110] GO TO CONTINUE
	MOD5A:	MOVE	N,CURMOD		;[110] BLOW THEM AWAY
 INS 61/120	;17C42
	;**;[110] READ REST OF THE PATCH FILE UNTIL .ENDE IS FOUND
	MOD7:	PUSHJ P, BIN			;[110] GET A CHARACTER FROM THE BUFFER
		CAIE	CC,"."			;[110] IS IT DOT?
		JRST	MOD7			;[110] NO, TRY MORE
		MOVEI	T3,4			;[110] SET UP THE COUNT
		MOVEI	T4,[ASCIZ /ENDE/]	;[110] STORE FOR LATER
		MOVE	T1,[POINT 7,A]	 	;[110] SET THE BYTE POINTER
		SETZ	A,			;[110] INITIALIZE
	MOD9:	SOJL	T3,MOD7			;[110] IS IT LESS THAN 0?
		PUSHJ	P,BIN			;[110]
		IDPB	CC,T1			;[110] ACCUMALTE IN A
		CAME	A,(T4)			;[110] IS IT = ENDE
		JRST	MOD9			;[110] NO, GET SOME MORE CHARACTER
		PUSHJ	P,.POP4T##		;[110] RESTORE ACS
		MOVE	T1,TRCPTR		;[110] GET CURRENT TRACE POINTER
		MOVEM	T1,TRCVAP		;[110] RESET TRACE BLOCK
		SETZM	TB$HED(T1)		;[110] RESET STATIC AREA
		SETZM	TB$EDT(T1)		;[110] ZERO  CURRENT EDIT NAME
		SETZM	TB$STA(T1)		;[110]
		SETZM	TB$MAK(T1)		;[110] ZERO THE CREATION DATE/INITIALS
		SETZM	TB$INS(T1)		;[110] 
		SETZM	TB$LEN(T1)		;[110] ZERO THE VAR. AREA LENGTH
		TXZN	F,IAE			;[110] ARE WE IN AN EDIT
		JRST	E$$EPM			;[110] NO, ERROR
		MOVEI	CC,12			;[110] END OF LINE
		JRST	MECELL			;[110] END OF CELL
 INS 81/121	;17C43
	;**;[110] /FP.GO/  - PSEUDO-OP TO  IGNORE THE EDIT IF IT ALREADY EXISTS
	;**;[110] AND TO  CONTINUE ON THE NEXT EDIT
	FP.GO:	TXNN	F,IAE			;[110] IN AN EDIT
		JRST	E$$EPM			;[110] NO,COMPLAIN	
		BYPASS				;[110]
		TXO	F,IGNEDT		;[110] SET FLAG TO IGNORE THE EDIT
		JRST	MECELL			;[110] END OF CELL
 DEL 10/123	;17C44
	;**; [101] INSERT @ FP.DAT + 5L	MS	15-SEPT-80
	;**; [101] CHANGE @ FP.DAT +6L
	;**; [101] THE EDIT NUMBER WILL INDICATE WHICH EDIT IS WRONG IN THE FIX FILE.
 DEL 25/125	;17C45
	;**; [102] INSERT @ FP.INS + 1L	MS	16-SEPT-80
	;**; [102] GIVE THE ERROR IF THE INSERT PSEUDO-OP
	;**; [102] IS USED ON THE MODULE WITH NO PROGRAM CODE
 REP 41/125	;17C46
		TLNE	B,-1			;AND LH NOT RELOCATED
		$KILL(IAI,Illegal address in .INSERT,N$EDIT)
	;**; [103] INSERT @ FP.INS + 18L	MS	16-SEPT-80
 WIT
		CAIE	B,1			;[120] AND SIMPLE RELOCATION
		$KILL(IAI,Illegal address in .INSERT,N$EDIT)
 DEL 49/127	;17C47
	;**; [75] INSERT @ REM2 - 1L		MFB	9-JUN-80
 DEL 83/127	;17C48
	;**; [75] CHANGE @ X$$RIE		MFB	9-JUN-80
 DEL 93/127	;17C49
	;**; [75] INSERT @ REM9 + 4L		MFB	9-JUN-80
 DEL 15/129	;17C50
	;**; [102] INSERT @ FP.ALT + 1L		MS	16-SEPT-80
	;**; [102] GIVE THE ERROR IF THE ALTER PSEUDO-OP
	;**; [102] IS USED ON THE MODULE WITH NO PROGRAM CODE
 REP 30/129	;17C51
		TLNE	B,-1			;IE LH AND LH(RELOC) ARE 0
 WIT
		CAIE	B,1			;[120] MUST BE SIMPLE RELOCATABLE
 INS 61/140	;17C52
	;[121] MACROS TO HANDLE KL10 OP-CODES
	   IFE KL10,<			;[121] NO KL INSTRUCTIONS?
	DEFINE XL (SB,CD) <>		;[121] NUL X MACRO
	DEFINE YL,(SB,CD) <>>		;[121] NUL Y MACRO
	   IFN KL10,<			;[121] WANT KL INSTRUCTIONS?
		SYN X,XL		;[121] USUAL X MACRO
		SYN Y,YL>		;[121] USUAL Y MACRO
 INS 67/140	;17C53
	XL	ADJBP , 133	;[113]
	XL	ADJSP , 105	;[113]
 REP 139/140	;17C54


 WIT
	XL	CMPSE , 002	;[113]
	XL	CMPSG , 007	;[113]
	XL	CMPSGE, 005	;[113]
	XL	CMPSL , 001	;[113]
	XL	CMPSLE, 003	;[113]
	XL	CMPSN , 006	;[113]
 REP 145/140	;17C55
	Y	DATAI ,	DATAI
	Y	DATAO ,	DATAO
 WIT
	XL	CVTBDO, 012	;[113]
	XL	CVTBDT, 013	;[113]
	XL	CVTDBO, 010	;[113]
	XL	CVTDBT, 011	;[113]
	XL	DADD  , 114	;[113]
	Y	DATAI ,	DATAI
	Y	DATAO ,	DATAO
	XL	DDIV  , 117	;[113]

 REP 152/140	;17C56

 WIT
	XL	DGFLTR, 027	;[121]
 REP 162/140	;17C57
	X	DPB   ,	137
 WIT
	XL	DMUL  , 116	;[113]
	X	DPB   ,	137
	XL	DSUB  , 115	;[113]
	XL	EDIT  , 004	;[113]
 REP 172/140	;17C58

 WIT
	XL	EXTEND, 123	;[113]
 REP 217/140	;17C59

	X	GETSTS,	062
 WIT
	XL	GDBLE , 022	;[121]
	X	GETSTS,	062
	XL	GDFIX , 023	;[123]
	XL	GDFIXR, 025	;[123]
	XL	GFAD  , 102	;[121]
	XL	GFDV  , 107	;[121]
	XL	GFIX  , 024	;[121]
	XL	GFIXR , 026	;[121]
	XL	GFMP  , 106	;[121]
	XL	GFSB  , 103	;[121]
	XL	GFSC  , 031	;[121]
	XL	GSNGL , 021	;[121]
 REP 362/140	;17C60
	X	MOVSM ,	206
	X	MOVSS ,	207
 WIT
	XL	MOVSLJ, 016	;[113]
	X	MOVSM ,	206
	XL	MOVSO , 014	;[113]
	XL	MOVSRJ, 017	;[113]
	X	MOVSS ,	207
	XL	MOVST , 015	;[113]
 REP 405/140	;17C61

 WIT
	XL	RDCLK , 052	;[113]
 REP 556/140	;17C62
	X	XCT   ,	256
 WIT
	XL	XBLT  , 020	;[113]
	X	XCT   ,	256
	XL	XHLLI , 501	;[121]
	YL	XJEN  , XJEN	;[121]
	YL	XJRSTF, XJRSTF	;[121]
	XL	XMOVEI, 415	;[121]
 INS 561/140	;17C63
	YL	XPCW  , XPCW	;[121]
	YL	XSFM  , XSFM	;[121]
 INS 67/141	;17C64
		X (.GO,FP.GO,$INP)		;[110]
 REP 13/153	;17C65
	DONERR:	PUSHJ	P,.TCRLF##	;
 WIT
	DONERR:	PUSHJ	P,.TCRLF##		;
 INS 22/154	;17C66
	ERLFS:	MOVE	N,B		;[131] Illegal block type
		$KILL(LFS,<Long FORTRAN symbol found, block type>,N$OCT,)	;[131]
 DEL 39/160	;17C67
	;**;[31] SCNEND-1   ILG   20-JUL-76
 SUM 75512