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