File: CHKPNT.RA of Tape: Various/ETH/fc-files
(Source file text) 

/CHKPNT CHECKPOINTING RUTINE FOR ETOS
/SAME EFFECT AS IF(ETOS)CALL WAIT(-1,0,0) BUT USES MUCH LESS CORE
/ALSO PRIV XX0X CLEARS CHECK
/A=ETTST IS SAME AS IF(ETOS) BUT DOES NOT INITIALIZE IO RUTINES
	SYSCAL=6200
	ACL=7701
	MQA=7501
	MQL=7421
	BSW=7002
	ETSKP=6107
	ENTRY CHKPNT
	BASE 0
	ENTRY ETTST
	SECT8 #CHK
ETTST,	STARTD
	SETX #XR
	FLDA 30
	FSTA RTN
	STARTF
	TRAP4 ETOS	/ELSE CHECK FOR ETOS
	XTA 0
RTN,	FNOP
	JA .
CHKPNT,	STARTD
	SETX #XR
	0210
	FSTA	RTN
	STARTF
	TRAP4 ETOS
	XTA 0
	JEQ RTN	/IF NOT ETOS RETURN
	TRAP4 WAITER
	JA RTN
WAITER,	0	/WAITING SUBROUTINE
	TAD JOBNUM
	MQL
	SYSCAL
	BSW
	CIA
	DCA MYJOB	/SAVE MY JOB NR
MLOOP,	TAD P300
	DCA CJOB	/COUNTER FOR CURRENT JOB START AT 3
LOOP2,	TAD DATAPK
	MQL
	TAD P5
	SYSCAL
	MQA	/CHECK PRIV WORD
	AND P70
	SNA CLA	/ONLY PRIORITY 0 AVOIDS CHKPOINT
	JMP EXIT
	TAD DATAPK
	MQL
	TAD CJOB
	TAD P20	/CHECK ACCOUNT NR
	SYSCAL
	SZA CLA
	JMP EXIT	/REACHED MAXJOB
	MQA
	SNA CLA
	JMP LOOP	/NOT ACTIVE
	TAD CJOB
	TAD MYJOB
	SNA CLA	/WAS IT OUR JOB ?
	JMP LOOP	/YES CHECK NEXT
	TAD DATAPK
	MQL
	CLA IAC	/STATUS = ENTRY 1
	TAD CJOB
	SYSCAL
	MQA
	AND P303	/SCALE+INPUT+CLOCKS
	SZA CLA
	JMP LOOP	/IF NONE OF THESE WAIT
	CLA IAC RAL
	MQL
	TAD M100
	SYSCAL
	JMP MLOOP
LOOP,	TAD CJOB
	TAD P100	/INCREMENT BITS 0-5
	DCA CJOB
	JMP LOOP2
EXIT,	CDF CIF 0
	JMP% WAITER
#XR,	ORG .+10
ORG #XR
ARG,	1
CJOB,	0
MYJOB,	0
ORG #XR+10
	TEXT	+CHKPNT+
#RET,	SETX	#XR
DECIMAL
M100,	-100	/=10 SEC
OCTAL
P20,	20
P300,	300
P100,	100
DATAPK,	11
JOBNUM,	15
P303,	303
P5,	5
P70,	70
ETOS,	0
	ETSKP
	SKP
	JMP ETOSR
	DCA ARG	/CLEAR OUT IF NOT ETOS
ETOSR,	CDF CIF 0
	JMP% ETOS