Trailing-Edge
-
PDP-10 Archives
-
bb-bt99e-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