/******* MULTI8 BACKGROUND SCHEDULER ******* BSCOUNT,"B^100+"S&3777 /NAME IS "BS" (BACKGROUND SCHEDULER) SSFLG, 400 /A TWO-PAGE TASK WITHOUT CONNECTS XBSSWAP,BSSWAP XBSSTRT,BSSTRT /BS STARTS WITH READING FIRST BG LONGBG, 0 /LATCH FOR LAST LONG BG, MUST BE ZERO INIT. BS, JMP I XBSSTRT BSSFLG, ISZ SSFLG /SET THE SHORT SLICE FLAG BSGO, JMS BSKICK TAD I (BJOB /SEE IF CURRENT BG IS A 'LONG' JMS DEFER /ONE. IN THAT CASE REMEMBER AND (LONG /HIM AS THE CURRENT LONG BG SNA CLA JMP .+3 TAD X DCA LONGBG TAD SSFLG SNA CLA /SHORT SLICE ? JMP BSLNG1 /NO DCA SSFLG /RESET SHORT SLICE FLAG TAD (-SLICE1 BSWAT1, JMS BSTAL SKP /KICKED JMP BSLONG /TIMEOUT TAD I (BJOB JMS DEFER AND BSMSK1 SZA CLA JMP BSNEXT /CURRENT BG FINISHED, SELECT NEXT 1 JMS BSKICK /SEE IF IT HAS INCORE SET & KICK IT JMP BSWAT1 BSLONG, TAD I (BJOB /SHORT SLICE OF CURRENT BG EXPIRED, JMS DEFER AND (-LONG-1 TAD (LONG /SET HISJMS BSCAN INACTIVE LOGOUT BGBLOK BSLNG1, ONG SLICE OR EVENT JMS, JMS BSCAN /SEARCH FOR A RUNNABLE INTERACTIVE BG INACTIVE BGSTOP BGERR LONG SWPERR LOGOUT BGBLOK TAD LONGBG /TAKE NEXT LONG BG JMS BSCAN / BSMSK1, INACTIVE BGSTOP BGERR SWPERR LOGOUT BGBLOK JMP BSLNG1T SCANNING AT (AC) OR (BA ZTEM1 /REMEMBER THIS N // CDF MONFLD / ISAD (-BGMAX /SET UP COUNTER # OF BG'S DCA ZTEM7 /COUNTER TAD ZTEM1 BSSCAN, TAD (UNEXT JMS DEFER JMS DEFER /GET STATUS OF NEXT BG AND BSMASK SNA CLA JMP BSFOUND TAD X ISZ ZTEM7 /IS ROBIN ROUND ? JMP BSSCAN /NO CLA JMP I BSCAN /YES RETURN BSFOUND,TAD I X / AND (ONDISK SNA CLA /IS HE ONDISK ? JMP BSGO /NO, NO NEED TO SWAP TAD I (BJOB DCA ZTEM1 TAD I ZTEM1 AND (EMULATE SNA CLA /MAY CURRENT BG BE SWAPPED OUT ? JMP I XBSSWAP /WHAMMM ! ACM1 /NO, SET FLAG FOR EMULATOR DCA I (BSFLAG /AND WAIT TILL HE IS FINISHED JMP BSGO BSMASK, BSKICK, 0 /SUBROUTINE TO CHECK IF BG IS WAITING TAD I (BJOB /FOR USLOT TO HEAR HE IS IN CORE NOW JMS DEFER AND (INCORE SNA /DID HE KNOW THAT HE WAS ON DISK ? JMP I BSKICK /NO, DON'T TELL HIM CMA /YES, CLEAR HIS INCORE BIT AND ... AND I X DCA I X TAD X TAD (USLOT JMS DEFER DCA .+3 /KICK THE SLOT WHERE HE IS WAITING JMS MONITOR SIGNAL 0 JMP I BSKICK, 0 SZA /SETUP OR RESNT BSTA1, ACM1 JMS MOLOT TAD (-2 SZA CLA M EMULATORS? JMP I BSTAL /SIGNAL, RETURN IMMEDIATLY ISZ BSCOUNT /JUST A CLOCK TICK. THE LAST ONE ? JMP BSTA1 /NO, SLICE NOT YET DONE ISZ BSTAL /YES, SLICE EXPIRED, JMP I BSTAL /TAKE SECOND RETURN PAGE 0 BSSWAP, TAD (ONDISK NOTHER TAD I ZTEM1 /IN THE ONDISK-BIT OF CURREBSTEMP /REMEMBER HIM IN CASE THE WRITE GIVES ERRORS TAD X DCA I (BJOB /INSTALL THE NEW BJOB TAD ZTEM1 /DTV3+2 MAY HAVE LOST IT'S VALUE, TAD (USWAP /SO GET IT'S VALUE AGAIN. JMS DEFER DCA DTV1+2 /FILL IN THE WRITE REQUEST TAD DTV1+2 TAD (SWAPLG^3%4-10 /50(RK8E) OR 20(REST) DCA DTV2+2 ACM1 DCA BSW1 /SET FIRST WAIT TO NO-OP DCA ERROR JMS BSDO /WRITE OUT 8K DTV1-. JMS BSDO +&@YTMA{SsSp@p zz @1O& #(K43d_@8@7$@@^\8 P@XFtlW@>??Votrqpn}e:2dKrx%ZV)A%?v-As` pWs v.p?zf?v~R `|.!J&N&1ff~$& %f# c}(/|" sb{(/=z"@yb*zx"PwbBz#v"@z#H.$ &u 9zn c #t%$B$$t*# / K```(F{sj(`(F`8XOX ?U!,]+ . njj` u(j{|u |)jX8@p_# (?wr9, E0qp &n-?ekJ;I-,<{i.w r2m5(l!&,(/+"n"kj7i)&rBEnP BhigC&D&tE& IfD25e2jri&5hZh ( ,dc;(E&g(/b&Za2wci W ` &_t&5hZ^ ri t9r0)wH?vr2W[rVUwTS'R'Q03ML9K>)JvIsXJs\IsYKsi!cu FU3X!cEH/SH"@DuEe&hMuR{!GzA@TLB 0COPY BCK1:b"oXa(aa""Jj P Fnqv'`+?D. b fal2 Ub! l !tn,=