perm filename PROCSS[S,AIL]1 blob sn#000868 filedate 1972-10-04 generic text, type T, neo UTF8
COMMENT ⊗   VALID 00005 PAGES VERSION 16(6)
RECORD PAGE   DESCRIPTION
 00001 00001
 00002 00002	HISTORY
 00003 00003	EXECS FOR SPROUT
 00006 00004	AN EXEC TO SET UP A KILL LIST VAR -- IF NEED ONE 
 00008 00005	EXECS FOR EVENTS
 00009 ENDMK
⊗;
COMMENT ⊗HISTORY
AUTHOR,REASON
021  002000000006  ⊗;


COMMENT ⊗
VERSION 16(6) 10-4-72 BY RHT BUG #JM# BLOCK GETTING CONFUSED BY TBITS WORD LOSSAGE
VERSION 16(5) 9-25-72 BY RHT BUG #IY# LIMIT CASES IN WHICH BLOCK GETS A KILL SET
VERSION 16(4) 9-25-72 
VERSION 16(3) 9-25-72 
VERSION 16(2) 9-25-72 
VERSION 16(1) 9-25-72 

⊗;
COMMENT ⊗EXECS FOR SPROUT⊗

BEGIN PROCSS

↑STDOPT:	MOVEI	A,0		;STANDARD CASE IS ALL ZERO
	PUSHJ	P,CREINT	;
	GENMOV(STACK,GETD)	;STACK IT
	POPJ	P,

↑SPRIT:	XCALL	(SPROUT)
	SETZM	ADEPTH		;PRETTY ARBITRARY
	SETZM	SDEPTH		;
	FREBLK	GENLEF+1
	POPJ	P,

↑FPREM:	GETBLK	GENRIG+1
	MOVE	PNT,GENLEF+1	;THE PROCEDURE ID
	HRRM	PNT,$VAL2(LPSA)	;REMEMBER THE PROC WE FORKED
	POPJ	P,

↑SPRPD:	MOVE	LPSA,GENLEF+2
	HLRZ	LPSA,%TLINK(LPSA)	;PROCEDURE SEMBLK
	HRRZ	PNT,$VAL(LPSA)		;PD SEMBLK
	MOVS	C,$ADR(PNT)
	MOVE	A,[HRRZI TEMP,NOUSAC!JSFIX]
	TRNE	C,-1			;OUT YET???
	MOVE	A,[HRRZI TEMP,NOUSAC!USADDR]
	PUSHJ	P,EMITER
	HRLI	C,TEMP
	EMIT	<PUSH	RP,NOUSAC!NORLC!USADDR>
	AOS	ADEPTH
	POPJ	P,

STDKL1:	SKIPA	PNT,GENLEF+2
↑STDKLL:				;STANDARD KILL LIST
	MOVE	PNT,GENLEF+1		;FORK SEMBLK
	HRRZ	PNT2,$VAL2(PNT)		;THE PROCEDURE WE FORKED
	HLRZ	LPSA,%TLINK(PNT2)	;THE SECOND BLOCK
	HLRZ	LPSA,%SAVET(LPSA)	;OLD TTOP
;;#JM# RHT MOVE KILL SET PTR (10-4-72) ↓ (1 OF 3)
	HRRZ	PNT,$ACNO(LPSA)	;THE KILL LIST
	TRNN	PNT,-1			;WE BETTER HAVE ONE
	ERR	<THERE IS NO DEFAULT KILL SET FOR THIS PROCEDURE>
	EMIT	<HRRZI TEMP,NOUSAC>
	HRLI	C,TEMP
	EMIT	<PUSH RP,NOUSAC!USADDR!NORLC>
	AOS	ADEPTH
	POPJ	P,

↑BNKLL:
	ERR 	<KILL LIST BY BLOCK NAME NOT IMPLEMENTED>,1
	JRST	STDKLL

↑EKLL:	
	MOVE	PNT,GENLEF		;PICK UP THE SET
	PUSHJ	P,GETAD			;GET SEMANTICS
	TLNN	TBITS,SET		;MUST BE A SET
	JRST	KSER
	TLNE	TBITS,SAFE
	TRNN	TBITS,INTEGR		;BE SURE KILL SET
KSER:	ERR	<NOT A KILL SET>,1
	GENMOV 	(STACK,0)		;STACK IT
	POPJ	P,

↑STKOPT:
	MOVE	PNT,GENLEF+1
	GENMOV	(STACK,GETD)
	POPJ	P,





COMMENT ⊗AN EXEC TO SET UP A KILL LIST VAR -- IF NEED ONE ⊗

KLNAM:	XWD	0,6
	POINT	7,.+1
	ASCII	/KLST../	;KILL LIST VARIABLE
↑KLSET:				;DECLARE KILL LIST VARIABLE
	MOVE	TBITS,BITS	;IS THE NEW PROCEDURE SIMPLE?
;;#IY# RHT (9-25-72) RESTRICT CIRCUMSTANCES IN WHICH KILL SET GOES OUT
	TLNN	TBITS,SIMPLE!EXTRNL ;OR EXTERNAL
	SKIPE	SIMPSW		;OR INSIDE A SIMPLE PROC
	POPJ	P,		;YES
;;#IY#
	MOVE	PNT,GENLEF+2	;LOOK AT THE BEGIN
;;#JM# RHT 10-4-72 ↓ MOVE KILL SET IN BLOCK SEMBLK (2 OF 3)
	MOVE	TEMP,$ACNO(PNT) ;DO WE HAVE ONE???
	TRNE	TEMP,-1
	POPJ	P,		;THERE IS ONE ALREADY
	PUSH	P,PNAME
	PUSH	P,PNAME+1	;SAVE MUCH CRUFT
	PUSH	P,HPNT
	PUSH	P,BITS
	PUSH	P,NEWSYM
	SETZM	NEWSYM
	HRROI	TEMP,KLNAM+1
	POP	TEMP,PNAME+1
	POP	TEMP,PNAME
	MOVE	TEMP,[XWD SAFE,SET!INTEGR]
	MOVEM	TEMP,BITS
	MOVE	LPSA,SYMTAB
	PUSHJ	P,SHASH
	PUSHJ	P,ENTERS
	MOVE	TEMP,NEWSYM
	MOVE	PNT,GENLEF+2
;;#JM# RHT 10-4-72 ↓ MOVE KILL SET IN BLOCK SEMBLK (3 OF 3)
	HRRM	TEMP,$ACNO(PNT)
	POP	P,NEWSYM	;PUT EM BACK
	POP	P,BITS		;THE WAY THEY WAS
	POP	P,HPNT
	POP	P,PNAME+1
	POP	P,PNAME
	POPJ	P,		;RETURN -- NO PERMANENT DAMAGE (I HOPE)

COMMENT ⊗EXECS FOR EVENTS⊗

↑CSIT:  PUSHJ P,ALLSTO
	XCALL	(CAUSE)
	MOVNI	A,3
	ADDM	A,ADEPTH
	POPJ	P,

↑STKIRG: MOVE 	TBITS,@LEAPSK
	TLNN	TBITS,LPITM
	JRST	BNDLST			;IT BETTER BE A LIST OR THE LIKE
	JRST	BNDITM			;AN ITEM

↑IRIT:	PUSHJ	P,ALLSTO
	XCALL	(INTERROGATE)
	MOVNI	A,2
	ADDM	A,ADEPTH
	POPJ	P,

↑TYPIRG: MOVEI	TBITS,ITMVAR
	MOVEI	SBITS,0
	MOVEI	D,A
	GENMOV	(MARK,0)
	MOVEM	PNT,GENRIG
	MOVE	A,[XWD CLSIDX,TITV]
	MOVEM	A,PARRIG
	POPJ	P,

BEND PROCSS