File BS.TK

Directory of image this file is from
This file as a plain text file

/******* 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 HIS 'LONG' BIT
	DCA I X
	JMS BSCAN
	   INACTIVE BGSTOP BGERR LONG SWPERR LOGOUT BGBLOK
BSLNG1,	TAD (-SLICE2	/WAIT FOR LONG SLICE OR EVENT
	JMS BSTAL
	 NOP		/
BSNEXT,	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 BSLNG1

BSCAN, 0 SNA /START SCANNING AT (AC) OR (BJOB) TAD I (BJOB DCA ZTEM1 /REMEMBER THIS CDTOIF // TAD I BSCAN // CDF MONFLD / ISZ BSCAN DCA BSMASK TAD (-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 /AND LET HIM GO
BSTAL, 0 SZA /SETUP OR RESUME WAITING DCA BSCOUNT BSTA1, ACM1 JMS MONITOR WAIT BSSLOT TAD (-2 SZA CLA /TIMEOUT? OR SIGNAL FROM 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 XBSSFLG,BSSFLG BSTEMP, 0 BSSWAP, TAD (ONDISK /SWAP A BG TO DISK AND ANOTHER TAD I ZTEM1 /IN CORE DCA I ZTEM1 /SET THE ONDISK-BIT OF CURRENT BG TAD ZTEM1 DCA BSTEMP /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 9f-5$AyYc^]dWApA]l?)5Ys?@9srQ -HC 7lBp*`
9hreWnJQh8B@/*|8WY.G AyB+Nxp e_#02`v0j{]1%e5Lv}t7TD)CR`^mGGA1Rp^qy



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search