Google
 

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