Google
 

Trailing-Edge - PDP-10 Archives - bb-bt99g-bb - vmser.c11
There is 1 other file named vmser.c11 in the archive. Click here to see a list.
 REP 20/16	;11C1
		TLO	U,400000	;YES, NO NEXT PAGE
		JUMPGE	U,THIS1		;GO IF NOT HIGH SEG OR UPMP
 WIT
		CAILE	J,JOBMAX##	;YES, UNLESS THIS IS A HIGH SEG
		JRST	THIS0		;NO
		TLO	U,500000	;YES, NO NEXT PAGE+"THIS IS UPT" BIT
		TLNN	S,IO		;INPUT
		TLO	U,200000	;YES, FLAG INPUT OF UPT
	THIS0:	JUMPGE	U,THIS1		;GO IF NOT HIGH SEG OR UPMP
 REP 46/17	;11C2
		TLO	U,400000	;YES, DONT WIPE OUT SLOT IN MAP
 WIT
		TLO	U,500000	;YES, DONT WIPE OUT SLOT IN MAP
 REP 23/19	;11C3
		POP	P,U		;RESTORE U
		POP	P,T1
		SKIPN	T1		;WILL THIS BE THE LAST IO?
 WIT
		SKIPN	-1(P)		;WILL THIS BE THE LAST IO?
 REP 32/19	;11C4
		MOVE	P1,-5(P)
 WIT
		MOVE	P1,-7(P)
 REP 39/19	;11C5
	THIS8C:	POP	P,T1		;NO OF BLOCKS TO TRANSFER
 WIT
	THIS8C:	TLNE	S,IO		;IN OR OUT?
		TLZN	U,100000	;OUT, JUST SWAP THE UPT?
		JRST	THIS8D		;NO
		SKIPE	.USLPS		;DID WE STOP JUST BEFORE THE UPT?
		JRST	THIS8D		;YES, WE'LL GET IT NEXT TIME THEN
	IFN FTKLP,<
		MOVE	T1,NLUPMP##+<.UPMP/PAGSIZ##>
		MOVEM	T1,.UPMP+<.UPMP/PAGSIZ##> ;POINT IT AT NULL UPMP
	>
	IFE FTKLP,<
		HLRZ	T1,NLUPMP##+.MUPMP
		HRLM	T1,.UPMP+.MUPMP
	>
	THIS8D:	POP	P,U		;RESTURE U
		POP	P,(P)		;FIX STACK
		POP	P,T1		;NO OF BLOCKS TO TRANSFER
 REP 31/22	;11C6
		TLO	U,400000	;YES, NO NEXT PAGE
		JUMPGE	U,THIS1		;GO IF NOT HIGH SEG OR UPMP
 WIT
		CAILE	J,JOBMAX##	;AND JOB?
		JRST	THIS0		;NOT JOB OR NOT UPT
		TLO	U,500000	;"THIS IS UPT" + "LAST"
	THIS0:	JUMPGE	U,THIS1		;GO IF NOT HIGH SEG OR UPMP
 REP 31/23	;11C7
		TLO	U,400000	;YES, DONT WIPE OUT SLOT IN MAP
 WIT
		TLO	U,500000	;YES, DONT WIPE OUT SLOT IN MAP
 REP 9/24	;11C8
		POP	P,U		;RESTORE U
		POP	P,T1
		SKIPN	T1		;WILL THIS BE THE LAST IO?
 WIT
		SKIPN	-1(P)		;WILL THIS BE THE LAST IO?
 REP 18/24	;11C9
		MOVE	P1,-5(P)
 WIT
		MOVE	P1,-7(P)
 REP 25/24	;11C10
	THIS8C:	POP	P,T1		;NO. OF BLOCK TO TRANSFER
 WIT
	THIS8C:	TLNE	S,IO		;IN OR OUT
		TLZN	U,100000	;OUT, UPT?
		JRST	THIS8D		;NO
		SKIPE	.USLPS		;UNLESS DOING IT NEXT TIME
		JRST	THIS8D
		HLRZ	T1,NLUPMP##+.MUPMP
		HRLM	T1,.UPMP+.MUPMP
	THIS8D:	POP	P,U
		POP	P,(P)
		POP	P,T1		;NO. OF BLOCK TO TRANSFER
 INS 4/43	;11C11
		MOVE	T3,.CPMAP##
		HRRZ	T2,JBTUPM##(J)	;POINT UPT BACK AT ITSELF
	IFN FTKLP,<
		TLO	T2,(<PM.DCD>B2+PM.WRT+PM.PUB+IFE FTMP,<PM.CSH>)
		MOVEM	T2,.ECKSM/PAGSIZ##(T3) ;SINCE IT POINTED AT NLUPMP
		CLRPT	.ECKSM
		MOVEM	T2,.ECKSM+<.UPMP/PAGSIZ##>
	>
	IFE FTKLP,<
		TRO	T2,PM.ACC+PM.WRT+IFN FTKL10!FTKS10,<IFE FTMP,<PM.CSH>>;YES, ACCESS AND WRITE
		HRRM	T2,.MECKS(T3)	;MAKE THE UPMP ADDRESSABLE
		CLRPT	.ECKSM
		HRLM	T2,.ECKSM+.MUPMP;MAKE THE UPMP P.T. ADDRESSABLE
	>
 REP 23/110	;11C12
		JUMPE	T2,RMVPF1	;FORGET IT IF NO PAGE THERE
 WIT
		JUMPE	T2,RMVPF2	;FORGET IT IF NO PAGE THERE
 REP 10/121	;11C13
		  JRST	[PUSHJ P,NSAERR
			JRST PLTSN8]	;NOT ENOUGH AVAILABLE
 WIT
		  JRST	[ADJSP P,-2
			 JRST  NSAERR]	;NOT ENOUGH
 REP 14/122	;11C14
		  JRST	[PUSHJ P,PIOERR	
			JRST PLTSN8]	;PAGING I/O ERROR
 WIT
		  JRST	[ADJSP	P,-2
			 JRST	PIOERR	] ;PAGING I/O ERROR
 REP 23/143	;11C15
		PUSHJ	P,FSTPAG	;POINTER TO USER'S ARGUMENT LIST
		HLRES	T1		;NUMBER OF ARGUMENTS
		JUMPLE	T1,[PUSHJ P,IALERR
			JRST T2POPJ##]	;MUST BE A POSITIVE NUMBER OF ARGUMENTS
		PUSH	P,T1		;SAVE THE NUMBER OF ARGUMENTS
 WIT
		HRRZ	P1,T1		;SAVE COPY FOR COMPUTING LIST LIMITS
		PUSHJ	P,FSTPAG	;POINTER TO USER'S ARGUMENT LIST
		HLRE	P2,T1		;NUMBER OF ARGUMENTS
		JUMPLE	P2,[PUSHJ P,IALERR
			JRST T2POPJ##]	;MUST BE A POSITIVE NUMBER OF ARGUMENTS
		ADJSP	P,2		;FOR STORING LIMITS
		PUSH	P,P2		;SAVE THE NUMBER OF ARGUMENTS
		MOVE	P3,.USNXP	;NEGATIVE ARG LIST FORM?
		AOSE	P3		;?
		MOVEI	P2,1		;YES, THEN ARG LIST SIZE IS 1
		SOS	P1		;INCLUDE COUNT
		ADDI	P2,(P1)		;LAST PAGE OF ARG LIST
		TRZ	P1,<PAGSIZ##-1>	;SO WON'T SHIFT INTO P2
		LSHC	P1,W2PLSH##	;FIRST AND LAST PAGES CONTAINING ARG LIST
		DMOVEM	P1,-2(P)	;SAVE THEM
 REP 34/143	;11C16
		PUSHJ	P,LGLPG		;A LEGAL PAGE?
		  JRST	PLTSN8		;NO, ILLEGAL PAGE ERROR
 WIT
		MOVE	T3,T1		;SAVE
		HRRZS	T1		;ONLY PAGE #
		PUSHJ	P,LGLPG		;A LEGAL PAGE?
		  JRST	PLTSN8		;NO, ILLEGAL PAGE ERROR
		CAML	T1,-2(P)	;DOES IT CONTAIN ARG LIST?
		CAMLE	T1,-1(P)
		SKIPA	T1,T3
		JRST	[PUSHJ  P,IALERR
			 JRST   PLTSN8	]
 REP 41/144	;11C17
		POP	P,(P)		;POP OFF JUNK
 WIT
		ADJSP	P,-3
 REP 45/144	;11C18
	PLTSN8:	POP	P,(P)		;POP OFF JUNK
		PJRST	T2POPJ##	;POP OFF JUNK AND GIVE ERROR RETURN
 WIT
	PLTSN8:	ADJSP	P,-4
		POPJ	P,		;POP OFF JUNK AND GIVE ERROR RETURN
 REP 25/147	;11C19
		MOVE	R,JBTADR##(J)	;SETUP R FOR THE LOW SEGMENT FOR WSCHED
 WIT
		MOVE	R,JBTADR##(T1)	;SETUP R FOR THE LOW SEGMENT FOR WSCHED
					;OR HIGH SEG FOR SEGCON/VIRCHK
 INS 28/160	;11C20
		HRRZS	J		;MAKE SURE J CONTAINS ONLY A SEGMENT NUMBER
 SUM 10549