Trailing-Edge
-
PDP-10 Archives
-
BB-4157D-BM
-
sources/ver5.bli
There are 12 other files named ver5.bli in the archive. Click here to see a list.
!THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
! OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
!COPYRIGHT (C) 1976,1977 BY DIGITAL EQUIPMENT CORPORATION
MODULE VER5 (RESERVE (0, 1, 2, 3),
SREG = #17,
VREG = #15,
FREG = #16,
DREGS = 4,
START) =
BEGIN
! AUTHOR: STAN WHITLOCK
! REQUIRES FIRST, TABLES, OPTMAC
GLOBAL BIND VER5V = 5^24 + 1^18 + 5; !VERSION DATE: 21-DEC-76
%(REVISION HISTORY
2 437 QAR771 PASS ORFIXFLG UP TO SUBSUMER IN DOTOFIX
3 505 QAR815 IN DOTORFIX MOVE MODIFIED .R INIT TO BEFORE
TOP ONLY IF NOT ALREADY THERE
4 515 QAR815 REMOVE "TEMP [EXPRUSE] _ 1" IN DOTORFIX
BEGIN VERSION 5A, 7-NOV-76
5 525 QAR949 DO CORRECT TYPECNV IN DOTOFIX ONLY IF NECESSARY
)%
SWITCHES NOLIST;
REQUIRE FIRST.BLI;
REQUIRE TABLES.BLI;
REQUIRE OPTMAC.BLI;
SWITCHES LIST;
SWITCHES NOSPEC;
! ZERO DEFINITION POINTS IN EXPRESSION
ROUTINE ZDEFPT (EXPR) =
BEGIN
MAP PEXPRNODE EXPR;
! ZERO DEFPT FOR ARG 1
MACRO ZDEFPT1 =
BEGIN
IF NOT .EXPR [A1VALFLG]
THEN BEGIN
ZDEFPT (.EXPR [ARG1PTR]);
END;
EXPR [DEFPT1] _ 0;
END$;
! ZERO DEFPT FOR ARG 2
MACRO ZDEFPT2 =
BEGIN
IF NOT .EXPR [A2VALFLG]
THEN BEGIN
ZDEFPT (.EXPR [ARG2PTR]);
END;
EXPR [DEFPT2] _ 0;
END$;
IF .EXPR EQL 0
THEN RETURN;
CASE .EXPR [OPRCLS] OF SET
!BOOLEAN
BEGIN
ZDEFPT1;
ZDEFPT2;
END;
!DATAOPR
BEGIN END;
!REALTIONAL
BEGIN
ZDEFPT1;
ZDEFPT2;
END;
!FNCALL
BEGIN
LOCAL ARGUMENTLIST AG;
AG _ .EXPR [ARG2PTR]; ! NEVER = 0
INCR I FROM 1 TO .AG [ARGCOUNT]
DO BEGIN
IF NOT .AG [.I, AVALFLG]
THEN ZDEFPT (.AG [.I, ARGNPTR]);
END;
END;
!ARITHMETIC
BEGIN
ZDEFPT1;
ZDEFPT2;
END;
!TYPECNV
BEGIN
ZDEFPT2;
END;
!ARRAYREF
BEGIN
EXPR [DEFPT1] _ 0;
ZDEFPT2;
END;
!CMNSUB
BEGIN END; ! NONE GENERATED YET
!NEGNOT
BEGIN
ZDEFPT2;
END;
!SPECOP
BEGIN
ZDEFPT1;
END;
!FIELDREF
BEGIN END; ! UNUSED
!STORECLS
BEGIN END;
!REGCONTENTS
BEGIN END;
!LABOP
BEGIN END;
!STATEMENT
BEGIN END;
!IOLSCLS
BEGIN END;
!INLINFN
BEGIN
ZDEFPT1;
IF .EXPR [ARG2PTR] NEQ 0 ! NO ARG2 ON ABS
THEN ZDEFPT2;
END;
TES;
RETURN;
END; ! END OF ROUTINE ZDEFPT
SWITCHES NOSPEC;
! ZERO DEFINITION POINTS IN STATEMENT
ROUTINE ZSTATEMENT (SRC) =
BEGIN
MAP BASE SRC;
CASE .SRC [SRCID] OF SET
!ASSIGNMENT
BEGIN
ZDEFPT (.SRC [RHEXP]);
ZDEFPT (.SRC [LHEXP]);
END;
!ASSIGN
BEGIN END;
!CALL
BEGIN
LOCAL ARGUMENTLIST AG;
AG _ .SRC [CALLIST]; ! = 0 IF NO ARGS
IF .AG NEQ 0
THEN BEGIN
INCR I FROM 1 TO .AG [ARGCOUNT]
DO BEGIN
IF NOT .AG [.I, AVALFLG]
THEN ZDEFPT (.AG [.I, ARGNPTR]);
END;
END;
END;
!CONTINUE
BEGIN END;
!DO
BEGIN
ZDEFPT (.SRC [DOM1]); ! INITIAL EXPR
ZDEFPT (.SRC [DOM2]); ! FINAL EXPR
ZDEFPT (.SRC [DOM3]); ! INCR EXPR
ZDEFPT (.SRC [DOLPCTL]); ! CONTROL EXPR
END;
!ENTRY
BEGIN END;
!COMNSUB
BEGIN END;
!GOTO
BEGIN END;
!ASSIGNED GOTO
BEGIN END;
!COMPUTED GOTO
BEGIN
ZDEFPT (.SRC [CGOTOLBL]);
END;
!ARITHMETIC IF
BEGIN
ZDEFPT (.SRC [AIFEXPR]);
END;
!LOGICAL IF
BEGIN
ZDEFPT (.SRC [LIFEXPR]);
ZSTATEMENT (.SRC [LIFSTATE]); ! THEN STATEMENT
END;
!RETURN
BEGIN
ZDEFPT (.SRC [RETEXPR]);
END;
!STOP
BEGIN END;
!READ
BEGIN
ZDEFPT (.SRC [IORECORD