File: JOBS.PG of Disk: Disks/PDP8-Net/multos8
(Source file text) 

	LIST
	FILE	'JOBS' DEVICE HANDLER
*
VERS	EQU	'B
SWAP	EQU	((((06260.RS.1)-(JOBS*(128/4)))/TERMS).AN.07774)*4
*
	DSEC
	DC	-TERMS		NUMBER OF HANDLERS
*
	TEXT	\JOBS\		GROUP NAME
	TEXT	\J1@@\		J1 NAME
	DC	04560		FILE STRUCTURED, DEVICE TYPE 056
	DC	J1.AN.0177	ENTRY POINT
	AS	2
*
	TEXT	\JOBS\
	TEXT	\J2@@\		J2 NAME
	DC	04560
	DC	J2.AN.0177
	AS	2
*
	AIF	TERMS.LT.3,.CONT
	TEXT	\JOBS\
	TEXT	\J3@@\
	DC	04560
	DC	J3.AN.0177
	AS	2
	AIF	TERMS.LT.4,.CONT
*
	TEXT	\JOBS\
	TEXT	\J4@@\
	DC	04560
	DC	J4.AN.0177
	AS	2
*
.CONT	ANOP
*
	ISEC	0
*
	ALIGN
*
	DC	VERS.AN.077
J1	INC	JCNTR
J2	INC	JCNTR
J3	INC	JCNTR
J4	INC	JCNTR
	CAL
	TAD	JCNTR
	CIA
	TAD	TADJ
	DCA	1F
	LDI	02000
	TAD	1F
	DCA	2F
1H	HLT			GET THE ARGUMENT ADDRESS
	DCA	ADDR		SAVE IT
	TAD	INCJ
2H	HLT			RESET ENTRY POINT
	TADI	ADDR		GET FUNCTION WORD
	INC	ADDR
	DCA	FUNC
	TADI	ADDR		GET MEMORY ADDRESS
	INC	ADDR
	DCA	MEMADR
	TADI	ADDR		GET BLOCK NUMBER
	INC	ADDR
	DCA	BLOCK
	LDI	-3
	TAD	JCNTR
	CLL
	SNA			J1 ?
	JMP	7F		YES
	DCA	JCNTR
6H	TAD	=SWAP		COMPUTE DISK OFFSET
	ISZ	JCNTR		FINISHED ?
	JMP	6B		NO
	TAD	=JOBS*128	16*(7*TERMS+JOBS)	qqx
	TAD	BLOCK		COMPUTE ABSOLUTE DISK BLOCK NUMBER
	DCA	BLOCK
	SZL			OVERFLOW ?
	TAD	=07621-07607	YES, COMPUTE RKB0 ENTRY ADDRESS
7H	TAD	=07607
	DCA	SYS
	DCA	JCNTR		CLEAR FOR NEXT CALL
	SZL CLA			IS THIS A CALL TO RKB0 ?
	TAD	=-06260		YES, CORRECT THE BLOCK NUMBER
	TAD	BLOCK
	DCA	BLOCK
	RDF			GET THE RETURN FIELD
	TAD	KCID
	DCA	EXIT
KCID	CID	%*
	JMSI	SYS		CALL THE SYSTEM DEVICE HANDLER
FUNC	DC	0
MEMADR	DC	0
BLOCK	DC	0
	SKP			ERROR RETURN FROM SYSTEM DEVICE HANDLER
	INC	ADDR		NORMAL RETURN
EXIT	HLT			CID TO RETURN FIELD
	JMPI	ADDR
*
ADDR	DC	0		ARGUMENT AND RETURN POINTER
SYS	DC	0		POINTER TO SYSTEM DEVICE HANDLER
JCNTR	DC	0		DETERMINES DESIRED DEVICE
TADJ	TAD	J4		RETRIEVES ARGUMENT ADDRESS
INCJ	INC	JCNTR		RESTORES DEVICE NUMBER MECHANISM
*
	END