File: EXIT.PA of Tape: Sources/RTS/dec-s8-ortsa-c-uc2-rts8
(Source file text) 

/2	EXIT TASK FOR RTS/8 V2B
	VERS=1
	XLIST 1
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1976 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/
	XLIST 0

	TASK=	EXIT
	INIWT=	RUNWT	/MUST START IN RUN WAIT
	IFNDEF	EXITFLD	<EXITFLD=10>
	IFNDEF	EXITLOC	<EXITLOC=5000>
	CUR=	EXITFLD

/	MESSAGE FORMAT:

/	ADDRESS OF EXIT SUBROUTINE (SAME FIELD AS MESSAGE)

/	IF ADDRESS=0, THEN POST THIS MESSAGE WHEN DONE RUNNING
/	IF NO ADDRESS WAS 0, THEN RETURN TO OS/8 WHEN DONE RUNNING

	FIELD CUR%10
	*EXITLOC

START,	AC4000		/DON'T WAIT IF NO MESSAGES
	CAL
	RECEIVE		/RECEIVE NEXT MESSAGE
MADDR,	0		/ADDRESS WILL BE LEFT HERE
	SNA		/WAS THERE ANY MESSAGE?
	JMP DONE	/NONE, WE ARE DONE
	DCA MCDF	/YES, STORE AWAY CDF TO FIELD OF MESSAGE
MCDF,	HLT		/EXECUTE CDF TO FIELD OF MESSAGE
	TAD I MADDR	/GET MESSAGE (ADDRESS OF EXIT SUBROUTINE)
	CDF CUR		/BACK TO OUR SAFE DF
	SNA		/WAS AN EXIT SUBROUTINE SUPPLIED?
	JMP SNTNL	/NO, THIS MEANS USER WANTS CONTROL BACK
	DCA SUBR	/YES, SAVE ADDRESS USER WANTS CALLED
	CLA IAC		/'CDF'+1='CIF'
	TAD MCDF	/FORM CIF TO FIELD OF EXIT SUBROUTINE
	DCA .+1
	HLT		/EXECUTE IT
	JMS I SUBR	/CALL USER'S EXIT SUBROUTINE
	TAD MCDF	/DOESN'T HURT IF SUBR SET WRONG DF
	DCA EFCDF
	AC7775		/EVENT FLAG IS 3 LOCATIONS BACK
EXITGO,	TAD MADDR	/PUT ADDRESS OF EVENT FLAG IN AC
	CAL
	POST		/GO POST IT
EFCDF,	HLT
	JMP START	/GO GET NEXT MESSAGE
SNTNL,	TAD SAVEF	/LOOK AT OLD SAVED EVENT FLAG
	SZA		/OUGHT TO BE 0
	HLT		/WASN'T
L7600,	7600		/CLA
	TAD MCDF	/SAVE FIELD OF MESSAGE
	DCA SAVCDF
	AC7775		/BUMP BACK MADDR TO POINT
	TAD MADDR	/TO EVENT FLAG
	DCA SAVEF	/SAVE IT
	JMP START	/GET NEXT MESSAGE, DON'T POST THIS ONE

DONE,	TAD SAVEF	/DID ANYONE WANT CONTROL BACK
	SNA CLA
	JMP GOS8	/NO, RETURN CONTROL TO OS/8 (OR OTHER MONITOR)
	TAD SAVEF	/YES, SET ADDRESS OF EVENT FLAG
	DCA MADDR
	TAD SAVCDF	/SET FIELD OF EVENT FLAG
	DCA EFCDF
	DCA SAVEF	/ZERO SAVED FLAG
	JMP EXITGO	/GO POST OLD EVENT FLAG

SAVEF,	0		/SAVED EVENT FLAG
SAVCDF,	0		/CDF OF SAVED EVENT FLAG

GOS8,	CDF 0		/INHIBIT TASK SWITCHING
	DCA I XTSWFLG
	ISZ MADDR
	JMP .-1
	ISZ EXDLAY	/ALLOW (MOST) I/O TO COMPLETE
	JMP .-3
	TAD I	M1	/TURN OFF BACKGROUND BIT
	AND	L6777
	DCA I	M1
	IFZERO PDP8E <IOF>
	IFNZRO PDP8E <CAF>	/DOES AN IOF
	CIF CDF 0
	JMP I L7600	/RETURN TO MONITOR

SUBR,	0
EXDLAY,	-60
XTSWFLG,TSWFLG		/DON'T USE LITERALS IN CASE USER WANTS TO
			/PACK THIS ROUTINE INTO FREE SPACE ON ONE
			/OF HIS PAGES
M1,	-1
L6777,	6777