Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-04 - 43,50325/sigenb.mac
There are no other files named sigenb.mac in the archive.
; File:   SIGENB.MAC
;
;    This work was supported by the Advanced Research
;    Projects Agency of the Office of the Secretary of
;    Defense (F44620-73-C-0074) and is monitored by the
;    Air Force Office of Scientific Research.

	.TITLE	SIGENB

	.CSECT	SIGE.C

; The BLISS-11 out of line routines to handle SIGNAL's and
; ENABLE frame creation.
;
; 11-Nov-73			P. Knueven
;
; The dynamically nested occurrences of ENABLE declarations
; are recorded in the LIFO ENABLE stack.  This is implemented
; as a linked list of 3-word stack frames.  The current top of
; the stack is pointed to by .SIGREG.  An ENABLE frame is
; created each time an ENABLE declaration is "executed".
; It looks like the following:
;
;     Offset	Contents
;	0	Pointer to most recent previous frame
;	2	Value of SP for the ENABLE body
;	4	Pointer to the ENABLE body
;

	.GLOBL	$SIGNL,$SIGN1
	.GLOBL	$ENABL
	.GLOBL	SIGVAL,SIGREG

R0=%0
SP=%6
PC=%7

; Calling Sequence
;   MOV E,R0
;   JMP $SIGNL
;
$SIGNL:	MOV	R0,SIGVAL
$SIGN1:	MOV	SIGREG,R0
	MOV	(R0)+,SIGREG
	MOV	(R0)+,SP
	MOV	(R0)+,PC

; Calling Sequence
;   MOV #n+6,R0
;   JSR PC,$ENABL
;   .WORD L2-L1
; L1:
;   ... ENABLE body ...
; L2:
;
;   where n is 2 plus the offset into the stack of the
;     space reserved for the frame
;
$ENABL:	ADD	SP,R0
	MOV	(SP),(R0)
	ADD	#2,(R0)		; REPLACE THESE THREE INSTRUCTIONS WITH
	MOV	@(SP),(SP)	;	ADD #4,R0
	ADD	(R0),(SP)	; WHEN USING THE /G SWITCH (SEGMENTATION SUPPORT FOR CASE & SIG/ENB)
	MOV	SP,-(R0)
	ADD	#2,(R0)
	MOV	SIGREG,-(R0)
	MOV	R0,SIGREG
	RTS	PC

$EXIT:	HALT

$LEV0:	.WORD	0,0,$EXIT

SIGREG:	.WORD	$LEV0
SIGVAL:	.WORD	0

	.END