Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99e-bb - lnkxit.c07
There is 1 other file named lnkxit.c07 in the archive. Click here to see a list.
 REP 1/1	;07C1

	TITLE LNKXIT - EXIT MODULE FOR LINK
	SUBTTL	D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN/MFB/PAH/PY/HD	6-Jan-83
 WIT
	TITLE LNKXIT - EXIT MODULE FOR LINK
	SUBTTL	D.M.NIXON/DMN/JLd/RKH/JBC/JNG/MCHC/DZN/MFB/PAH/PY/HD/JBS 1-Nov-83
 REP 39/1	;07C2
	DECEVR==2027		;DEC EDIT VERSION
 WIT
	DECEVR==2052		;DEC EDIT VERSION
 INS 91/6	;07C3
	;2032	Allocate space with LC.IN before reading area from .OVL file.
	;2034	Remove Edit 1531.
	;2035	Don't map in non-existant pages at JBGMV0.
	;2040	Be careful of page boundary when mapping out at SYMINI.
	;2043   Don't call BLTJDA if JOBPTR is zero at JBEXE1.
	;2052	Don't die when making EXE file if directory is protected.
 REP 9/9	;07C4
	LNKX0D:	MOVN	T1,T1
 WIT
	;**;[2032] Replace at LNKX0D		PY	3-Feb-82
	LNKX0D:				;[2032]
	IFN TOPS20,<			;[2032]
		PUSH	P,T1		;[2032] SAVE THE AC
		MOVE	T1,UW.LC	;[2032] GET THE UPPER BOUND
		HRL	T1,LW.LC	;[2032] GET THE LOWER BOUND
		PUSHJ	P,LC.IN##	;[2032] MAP IN THE WINDOW
		POP	P,T1		;[2032] RESTORE THE AC
	>;[2032] IFN TOPS20
		MOVN	T1,T1		;[2032]
 INS 19/9	;07C5
	;**;[2032] Insert after LNKX0D+9 Lines	PY	3-Feb-82
	IFE	TOPS20,<		;[2032] DON'T BLT ON THE -20
 INS 33/9	;07C6
	;**;[2032] Insert before LNKX0E		PY	3-Feb-82
	>;[2032] END IFE TOPS20
 INS 11/30	;07C7
	;**;[2040] Insert 2 lines after SYMINI+6 lines	PY	13-Apr-83
		CAMG	T1,LW.LS	;[2040] Check for current page never used
		 ADDI	T1,.IPS		;[2040] Must write out one page anyways
 INS 31/72	;07C8
	;**;[2043] Add after JBEXE1		HD	12-Jul-83
		SKIPN	JOBPTR		;[2043] DON'T BLT .JBDA IF ALREADY IN PLACE
		CAIA			;[2043] DON'T GO TO BLTJDA IF JOBPTR IS ZERO
					;[2043] OR PAGE 0 IS IN CORE
 REP 31/75	;07C9

	E$$ECE::
	IFE TOPS20,<
		PUSH	P,[DC]		;[1174] GIVE OFFENDING CHANNEL TO LNKLOG
		.ERR.	(LRE,0,V%L,L%F,S%F,ECE,<Error creating EXE file>) ;[1174]
	> ;[1401] IFE TOPS20
	IFN TOPS20,<
		MOVE	T2,DC.JF	;[1401] PICK UP EXE JFN
		HRROI	T1,RUNSPC	;[1401] PUT THE STRING ASIDE
		SETZM	T3		;[1401] NOTHING FANCY
		SETZM	T4		;[1401]
		JFNS			;[1401]
		.ERR.	(MS,.EC,V%L,L%F,S%F,ECE,<Error creating area EXE file >)
		.ETC.	(STR,,,,,RUNSPC) ;[1401]
	> ;[1401] IFN TOPS20
 WIT
	E$$ECE::PUSH	P,IO.CHN	;[2052] GIVE OFFENDING CHANNEL TO LNKLOG
		.ERR.	(LRE,0,V%L,L%F,S%F,ECE,<Error creating EXE file>) ;[1174]

 REP 10/76	;07C10
		CAMGE	P3,LW.S0(R)	;[1531] BELOW CURRENT WINDOW?
		JRST	XCMBK		;[1531]	YES - GO BACK A WINDOW
 WIT
	;**;[2034] Remove 2 Lines at XCMLUP+4 Lines	PY	17-Feb-83
 REP 35/78	;07C11
	;HERE TO GO BACK A WINDOW.
		
	XCMBK:	MOVE	T2,UW.S0(R)	;[1531] UPPER WINDOW BOUND
		SUB	T2,LW.S0(R)	;[1531] MINUS LOWER BOUND - LENGHT OF WINDOW
		HRL	T1,LW.S0(R)	;[1531] LOWER BOUND OF WINDOW
		HRR	T1,UW.S0(R)	;[1531] UPPER BOUND OF WINDOW
		PUSH	P,T2		;[1531] SAVE SIZE OF WINDOW
		PUSHJ	P,@TB.OUT(R)	;[1531] OUT WITH CURRENT WINDOW
		POP	P,T1		;[1531] GET BACK WINDOW SIZE
		HRRZS	T1		;[1531] NEW WINDOW - SAME SIZE STARTING AT 0
		SETZM	LW.S0(R)	;[1531] LOWER BOUND SET TO 0
		MOVEM	T1,UW.S0(R)	;[1531] UPPER BOUND SET TO SIZE
		PUSHJ	P,@TB.IN(R)	;[1531] BRING IN THE NEW WINDOW
		JRST	XCMLUP		;[1531] GO BACK AND TRY AGAIN
 WIT
	;**;[2034] Remove 14 Lines at XCMADP+2 Lines	PY	17-Feb-83
 REP 55/113	;07C12
		HRRZ	T2,TAB.LB(R)	;[2021] GET THE LOWER BOUND
		LSH	T2,-9		;[2021] AS A PAGE
		HRLI	T2,.FHSLF	;[2021] MAPPING INTO THIS FORK
		HRRZ	T3,HC.S0(R)	;[2021] HIGHEST KNOWN ADDR IN SECTION
		IORI	T3,.IPM		;[1522] SET TO PAGE BOUND
		MOVEM	T3,UW.S0(R)	;[1522] STORE IT
		LSH	T3,-9		;[2021] IN PAGES
		ADDI	T3,1		;[2021] ONE MORE FOR COUNT
		HRLI	T3,(PM%CNT!PM%RD!PM%PLD!PM%CPY) ;GET PAGES COPY ON WRITE
		PMAP%
		 ERJMP	@[EXP E$$ILC,E$$IHC]-1(R) ;[2021] ERROR
 WIT
	;**;[2035] Replace at JBGMV0+27 Lines	PY	17-Feb-83
		HRRZ	W1,TAB.LB(R)	;[2035] GET THE LOWER BOUND
		LSH	W1,-9		;[2035] AS A PAGE
		HRLI	W1,.FHSLF	;[2035] MAPPING INTO THIS FORK
		HRRZ	T4,HC.S0(R)	;[2035] HIGHEST KNOWN ADDR IN SECTION
		IORI	T4,.IPM		;[2035] SET TO PAGE BOUND
		MOVEM	T4,UW.S0(R)	;[2035] STORE IT
		LSH	T4,-9		;[2035] IN PAGES
		MOVX	T3,<PM%RD!PM%PLD!PM%CPY> ;[2035] GET PAGE COPY ON WRITE
	JBGMV2:	RPACS%			;[2035] FIND OUT ABOUT THE PAGE
		 ERJMP	@[EXP E$$ILC,E$$IHC]-1(R) ;[2035] ERROR
		TXNN	T2,PA%PEX	;[2035] DOES THE PAGE EXIST?
		 JRST	JBGMV3		;[2035] NO
		MOVE	T2,W1		;[2035] GET THE COPY FROM POINTER
		PMAP%
		 ERJMP	@[EXP E$$ILC,E$$IHC]-1(R) ;[2021] ERROR
	JBGMV3:	ADDI	T1,1		;[2035] SET UP FOR NEXT PAGE
		CAIL	T4,(T1)		;[2035] DONE?
		 AOJA	W1,JBGMV2	;[2035] NO, DO ANOTHER
 DEL 35/123	;07C13
	SUBTTL	THE END
 SUM 180891