File: ONQIB.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text) 

/ON INTERRUPT QUEUE + ON BACKGROUND QUEUE ROUTINES
/
/
/ VERSION 40A 27-MAY-80 WVDM
/
/
	FIELD1	ONQI		/PDP8-CODE
	0
	JMP	SETINT		/SET UP #INT INITIALLY
	ISZ	ONQI		/BUMP ARG POINTER
	ISZ	INTQ+1		/BUMP INTERRUPT Q POINTER
	IOF			/**
	DCA%	INTQ+1		/STICK IOT ONTO INT Q
	TAD	XSKP		/FOLLOWED BY A SKIP
	ISZ	INTQ+1
	DCA%	INTQ+1		/ONTO INT Q
	ISZ	ONQI		/SKIP FIRST WORD OF ADDR
	ISZ	INTQ+1
ONQISW,	TAD%	ONQI		/GET INT HANDLER ADDRESS
	ISZ	ONQI
	DCA%	INTADR+1	/ONTO ADDRESS STACK
	TAD	INTADR+1	/NOW MAKE JMS%
	AND	L177
	TAD	L4600
	DCA%	INTQ+1		/ONTO INT Q
	ISZ	INTADR+1
	ION			/::
	ISZ	IQSIZE		/ROOM FOR MORE ?
	JMP%	ONQI		/YES
	TAD	.-1		/NO, CLOSE OUT THE SUBR
	DCA	ONQI+1
	JMP%	ONQI
/
SETINT,	TAD	ONQISW		/DO THIS PART ONLY ONCE
	DCA	ONQI+1
	CDF	0
	IOF			/**
	TAD	XSKP		/FIX UP #INT
	DCA%	XINT+1
	ISZ	XINT+1
	TAD	INTQ+1
	DCA%	XINT+1
	ISZ	XINT+1
	TAD	CIFCDF
	DCA%	XINT+1
	ION			/**
CIFCDF,	CDF CIF 10
	JMP	ONQI+1		/BACK TO ONQI
/
	EXTERN	#INT
XINT,	ADDR	#INT
INTQ,	ADDR	IHANDL
INTADR,	ADDR	IHADRS
IQSIZE,	-5
XSKP,	SKP
L177,	177
L4600,	4600
	CDF CIF
	JMP%	IHANDL
IHANDL,	0
	REPEAT 16
	JMP	IHANDL-2
IHADRS,	0;0;0;0;0
	ENTRY	ONQB
ONQB,	0
	JMP	SETBAK		/SETUP #IDLE
	TAD%	ONQB		/GET ADDRESS OF IDLE JOB
ONQBSW,	ISZ	ONQB
	DCA%	BAKADR+1	/STORE ONTO BACKROUND JOB Q
	TAD	BAKADR+1	/MAKE A JMS%
	ISZ	BAKADR+1
	AND	L177
	TAD	L4600
	ISZ	BAKQ+1
	DCA%	BAKQ+1
	ISZ	BQSIZE		/MORE ROOM ?
	JMP%	ONQB		/YES
	TAD	.-1		/NO, CLOSE THE DOOR
	DCA	ONQB+1
	JMP%	ONQB
/
SETBAK,	TAD	ONQBSW		/CLOSE OFF #IDLE INITIALIZATION
	DCA	ONQB+1
	CDF	0
	TAD	XSKP		/FIX UP #IDLE
	DCA%	XIDLE+1
	TAD	BAKQ+1
	ISZ	XIDLE+1
	DCA%	XIDLE+1
	ISZ	XIDLE+1
	TAD	CIFCDF
	DCA%	XIDLE+1
	CIF CDF 10
	JMP	ONQB+1
/
	EXTERN	#IDLE
XIDLE,	ADDR	#IDLE
BAKQ,	ADDR	BAKRND
BAKADR,	ADDR	BHADRS
BQSIZE,	-5
	CDF CIF
	JMP%	BAKRND
BAKRND,	0
	REPEAT	6
	JMP	BAKRND-2
BHADRS,	0;0;0;0;0
	END