Google
 

Trailing-Edge - PDP-10 Archives - ap-5069b-sb - 10,6/algmac.unv
There are 6 other files named algmac.unv in the archive. Click here to see a list.
x2@P BDP BEP BHP BLP BPP BTP BXP B\P C|i@P C}`P C}pP  C&= &"2
							S&(ETONE(STOPS,A);*
	(STOPS,A);*C;L`P CJ$X`A  CJ$X`CK P CL >t
$BTYPE==> $AS
$POP($TYPES,>@$T)
$DEFTF(\$T)
$PUSH($AS,$T)
$PUSH($BEGIN,0)
USH($BE2\)3PE2\[RPE2|:vA@E2|:vEB v@G' v G2H w G2~9  h)
	IFB <A>,<
							SETZ	(T,
		>
	 IFNB <HA>,<
							MOVhEI	T,A(REV)
		>
							PUSHJ	SP,.CLOSE
	HJ	SPG3 w@G>$P "B
	"G>n9P G>nPA  G>nPG>vH1A  G>vH1GJ,`P GJH v`GJ` wGW+A  GW+I
9 P I TX

$ITEM==0T 
IFN $STOPPER,<IT@FE $SBIT,<$ERROR(T`TOO MANY STOPPERSU)>
$ITEM==$ITEM!U $SBIT
.A==$SBITU@
$SBIT==$SBIT_1>U`

IFN $KWSTST,<V$ITEM==$ITEM!KWSTV ST>
IFN $SYMSTSTV@,<$ITEM==$ITEM!SYV`MSTST>
IFN $DECSWPEC,<$ITEM==$ITEMW !DECSPEC>
IFN $EW@XPCONT,<$ITEM==$IW`TEM!EXPCONT>

RXADIX 10
IFNB <BX >,<$PRIOR==B>
IX@FNB <C>,<$DC==CX`>
IFNB <D>,<$DIYSC==D>
RADIX 8

IFNB <E>,<$ITY@EM==$ITEM!E>
$IY`TEM==$ITEM!$DC!<$ZPRIOR_4>!<$DISC_^Z D8>

EXTERN ZAZ@
INTERN L$A,R$Z`A

L$A==$ITEM_[-^D18
R$A==$ITEM&777777A==$ITEIH9P I  @P
							SOS	A;*
					SI<Q I4+w xhT
	DEFINE yA(BITS)
	<
	IFy(N $BTYPE-$AS,<TESyHT(N,B,BITS)
			yh				GOTO	FALSE;*
	>IFE $BTYPE-$ASz(,<TEST(E,B,BITS)zH
							GOTO	TRUE;*
	>>OTO	TRUI5hW {f
	DEFINE {(A(BITS)
	<
	IF{HN $BTYPE-$AS,<TES{hT(E,B,BITS)
			|				GOTO	FALSE;*
	>IFE $BTYPE-$AS|H,<TEST(N,B,BITS)|h
							GOTO	TRUE;*
	>>OTO	TRUI696 !
	DEFINE (ASEL(SITE)
		<
		SELTH==ASELTHh
							TDNE	DEL,STOPS;*
							(GOTO	.+4+SELTH;*
		TEST(E,FL,ERRLh);*
							PUSHJ	SP,.ERR;*
		AS(ELECT(SITE);*
		H					GOTO	.-4-SELTH;*
		>
	SELI6I9 *h"^
	DEFINE +A(REG)
		<
		T+(.INIT(REG)
					+H		TLNE	T.REGZ,B;+h*
							GOTO	FALSE;*
		>
	FAI`P Id[ ( 
	IFN $BTHYPE-$AS,<TEST(N,DhEL,A)
							GOTO	FALSE;*
	>IFE( $BTYPE-$AS,<TESTH(E,DEL,A)
					h		GOTO	TRUE;*
	>GOTO	TRUE;*
	>Iei6 ( &
	IFN $BTHYPE-$AS,<TEST(E,DhEL,A)
							GOTO	FALSE;*
	>IFE( $BTYPE-$AS,<TESTH(N,DEL,A)
					h		GOTO	TRUE;*
	>GOTO	TRUE;*
	>I0 [@\R$A_-10&37R$A_-10&3I< :@Z
$POP($TY:`PES,$T)
$UNDEFTF;($FCNT)
$PLAB(<T; >,\$T)
$PUSH($DO,$T)
$PUSH($DOIC.: p K2H w`K3P 2@(
$POP($TY2`PES,$T); UNSTACK 3LAST ITEM
$JLAB(3 <S>,\$T); GENERAT3@E THE JUMP PAST T3`HE ELSE PART
$PU4SH($ELSE,$T); STA4 CK AWAY THE ELSE 4@LABEL.
$PLAB(<F>4`,\$T); PLACE LABE5L FOR ELSE DESTINATION.
 DESTINK6NHw H)
	IFB <Ah>,<
							SETZI	T2,
		>
	 IFNB( <A>,<
							MHOVE	T2,A
		>
	h						PUSHJ	SP,.EMITCODE
	SP,.EK:$;r "D
	A K:$@ .
$POP($TY PES,$T)
IFE $TYP@ES-$LOC,<
$.==$L`CNT
							SUB	SP,[XWD $.,$.];*
 IFN $PLEVEL-PMAX,@<; UPDATE DISPLAY`
$T==DBASE+$PLEV EL-1
							POP	  SP,$T;*
>
$POP( @$TYPES,$T) >
IFE ` $TYPES-$REGIS,<
REPEAT $LRCNT,< ! $T==RBASE-$T
			!@				POP	SP,$T;*
!`$POP($TYPES,$T)>>"
IFE $TYPES-$NEW" ,<
							POP	SP"@,LCOMPNAME;*
			"`				POP	SP,LLEXEX#;*
$POP($TYPES,$# T)
>
IFN $$SP,<#@
$EXAMINE($TYPES#`,$T)
IFE $TYPES-$$PROC,<
							P$ OPJ	SP,0;*
$POP($@$TYPES,$RCNT)
$P$`OP($LCNT,$LRCNT)
$POP($NEWCT,$NEW% CT)
$PLEVEL==$PL%@EVEL-1
>>
IFE $%`$SP,<
$ENDALL
>P,<
$ENDALL
>KK`P KK@P KK=Q KN-@ !X
		SELTH=(=ESELTH
							THDNE	DEL,STOPS;*
h							GOTO	.+4+SELTH;*
		TEST(E,(FL,ERRL);*
					H		PUSHJ	SP,.ERR;*h
		ESELECT(A);*
							GOTO	.-4-SELTH;*
		.-4KN-I1 
							LYTE;*
					PUSHJ	SP,@ET
							NOOP	.ESEL!A;*
	P	.ESEL!A;*Q @Kc+q tP-2
%EXPROC(tp<A,B,C,D,E,uF,G,H,I,J,K,u0L,M,N,O,P,QuP,R,S,T,U,V,W,X,Y>)
V,Kc[SQ aL:@ w('>
							HwHLLZ	A,LEXEX-B+SwhYM;*
							TLZ	A,$LEXSA;*
		L:` x('D
							MxHOVE	A,LEXEX+1-B+SYM;*
	X+1-BL:%q v'6
							Mv(OVE	A,OP;*
				vH			ANDI	A,$OPDSCvh;*
							LSH	A,-10;*
	LSH	AL:exw uH',
							HRRZ	A,B;*
	HL; y'L
							Hy(LLZ	A,LEXEX-B+SyHYM;*
							TLZ	A,$LEXBL;*
		L;&(7 t('(
							HtHLRZ	A,B;*
				th			ANDI	A,$TRANKu;*
							LSH	A,-14;*
	LSH	AL;' s('
							HsHLRZ	A,B;*
				sh			ANDI	A,$TYPE;*
	I	A,$TYPE;MM@ ""
							P"(USHJ	SP,.FAIL;*
"H	RADIX	10;*
	XLI"hST
							XWD	<.#.B>!<..C>,A;*
	LIST
	RADIX	8;*
	
	RADIX	8;M\P yQ2
%FAKE(<y0A,B,C,D,E,F,yPG,H,I,J,K,Lyp,M,N,O,P,Q,zR,S,T,U,V,W,X,Y>)
V,W,M
{8A  M
{8M
d^A  M
d^M9A  M9M$: "h*REOPEN(A)#
							MOVE	T2,#(A
							PUSHJ	#HSP,.FETCH
							MOVE	A,T4
		M$ 5@B
$POP($TY5`PES,$T); UNSTACK 6LAST ITEM
IFE $T6 YPES-$ELSE<; WE H6@AD AN ELSE PART
6`$PLAB(<S>,\$T); P7ALE THE SKIP LABE7 L
>
IFE $TYPES-7@$THEN,<; WE ONLY 7`HAD A THEN PART
8$PLAB(<F>,\$T); P8 LACE THE FALSE LABEL.
>FALSE LAM'DY ~H'~
	IFNB <~hA>,<
							MOVE	T,A;*
	>
	IFN(B <B>,<
							HMOVE	T1,B;*
	>h
							PUSHJ	SP,.ABSFIX;*
	SP,M'D ((

	IFNB <HA>,<
							MOVEh	T,A;*
	>
	IFNB <B>,<
							(MOVE	T1,B;*
	>H
							PUSHJ	SP,.ADDFIX;*
	SP,M'F)6 |'p
	IFNB <|(A>,<
							MOVE|H	T,A;*
	>
	IFB|h <B>,<
							P}USHJ	SP,.RAFIX;*
	>
	IFNB <B>,<}H
							MOVE	T1,}hB;*
							PUSH~J	SP,.ADRFIX;*
	>P,.ADRFIX;*
	M'F\A  M'F\M0P M:d]RA  M:d]RM?X6 l
$T==$LCN T+$LRCNT+$NEWCT
@IFN <$PLEVEL-PMAX`>*$LCNT,< ; ACCOUNT FOR PUSHED DIS PLAY REG
$T==$T+@1
>
$DEFST(A,\$T,\SP);
(A,\M?x9 v92
%FORWARDv0(<A,B,C,D,E,vPF,G,H,I,J,Kvp,L,M,N,O,P,wQ,R,S,T,U,V,W,X,Y>)
V,MN-I1 !
							L(DB	T,DCBYTE;*
		H					PUSHJ	SP,@FTABLE(T);*
	@FTO S A==BVBIT
BVBIT==BVBIT_1
VBIT==BVBIT_1
O>d@P O?%p +QtKA  QtKS /~
$BTYPE==/ $IF
$LABCNT==$LA/@BCNT+1
$PUSH($IF/`,$LABCNT)
$DEFTF(\$LABCNT)DEFTFS:  @
							AOS	A;*
					AS:$^A  S:$^U>M` H(L
	IFNB <hA>,<
							MOVE		T,A;*
	>
					(			HLRZM	T,CAX;*
							PUSHJ	SP,.RAFIX;*
		SP,WA  WW&eH< 
h(V
							SETOM	CAX;*
		SWLzQPXXP XYtP 
X{vP XySP X{P %X{ P X{8P X{@P X%@P X%pP 
X%}PX-LrPX-iP@X-y@P!X.PX.@PX/ XM\P XMmP XdRP Xd,PP 
2P XM9P X}`P X+qP X,PP XX6P X[ P X9P X0P  XH9P XI8P"XLTP Xz:P X%	7P DX%2P X-Z7P X-mP$X.P X4P X=
6P YA  YYT ((^
							MHOVEI	T,A13+1;*
	h						MOVEM	T,LAC;*
	OVEM	T,LACY)9 
							M;*
					EM	T,LAC;*
	OVEM	T,LAC;*
Y8; 
((f
							M
HOVE	T,LAC;*
				
h			MOVEM	T,A;*
	MOVEM	T,A;*
Y}\A  Y}\YD+A  YD+YD^A  YD^Y
@ s@Y&` t Yn tY  s`Y&t[WA  Y&t[WY'KwP Y2/	<A  Y2/	<Y6~i  pY6~i6 p@Y6~k  sY6~k@ rY6~kV r@Y:}pP Y>
@ h)P
	IFNB <B>,<
							MOVE(I	T1,B
		>
	 IHFB <A>,<
						h	HRLI	T1,<MOVE 0,(SYM+1)>_-22
		>(
	 IFNB <A>,<
H							HRLI	T1,<MhOVE 0,(A)>_-22
		>
							PUSHJ	SP,.LOAD
	SHJY>
H` ()|
	IFNB <HB>,<
							MOVEhI	T1,B
		>
	 IFB <A>,<
						(	HRLI	T1,<SETCM 0H,(SYM+1)>_-22
		h>
	IFNB <A>,<
							HRLI	T1,<(SETCM 0,(A)>_-22H
		>
							PUSHJ	SP,.LOAD
	SY>
K@ H)f
	IFNB <hB>,<
							MOVEI	T1,B
		>
	 I(FB <A>,<
						H	HRLI	T1,<MOVN 0,h(SYM+1)>_-22
		>
	 IFNB <A>,<
(							HRLI	T1,<MHOVN 0,(A)>_-22
h		>
							PUSHJ	SP,.LOAD
	SHJY> zP]2
%LOCAL(<zpA,B,C,D,E,F{,G,H,I,J,K,{0L,M,N,O,P,Q,{PR,S,T,U,V,W,X,Y>)
V,WY>~ <`l
$LABCNT===$LABCNT+1
$PLAB= (<T>,\$LABCNT)
$=@PUSH($LOOP,$LABCNT)($LOOP,$LABCNY?P YC.: p YN-@ H!l
		SELTH=h=LSELTH
							TDNE	DEL,STOPS;*
(							GOTO	.+4+SHELTH;*
		TEST(E,hFL,ERRL);*
							PUSHJ	SP,.ERR;*(
		LSELECT(A);*H
							GOTO	.-4-SELTH;*
		.-4YN-I1 H |
							LhDB	T,DCBYTE;*
							PUSHJ	SP,@LT(ABLE(T);*
						H	NOOP	.LSEL!A;*
	P	.LSEL!A;* {'\
							M{(OVE	T,[A];*
			{H				PUSHJ	SP,.MABS;*
	J	SP,.MAB[
							Pz(USHJ	SP,.PCALL;*
							NOOP	A;*
				NOOP	A;*[> $*$
							P$(USHJ	SP,.MOB;*
	$H						NOOP	A;*
				NOOP	A;*
[>&[ Du
Q.A==$QD0;
EXTERNAL B.A;DP
INTERNAL C.A,QDp.A;
C.A:

DEEFINE $BASE <B.A>E0

%TITLE(A,ALGEPOL COMPILER MODULEpE A)

; SET UPF SOME CHECKS:

F0$CHKDEF(<SP,PMAX,FPRBASE,RMAX>)

;Fp SET UP ASSEMBLY GTIME VARIABLES:
G0
$ECNT==0			; NUGPMBER OF MACRO ERRGpORS FOUND
$LABCNHT==0		; UNIQUE LAH0BEL COUNTER
$$SPHP==0			; ASSEMBLY HpTIME STACK POINTEIR
$$SPMAX==0		; I0RECORD OF MAX OF IP$$SP
$PLEVEL==0	Ip	; DEPTH OF PROCEJDURE NESTING
$ALJ0LOW==0		; RECORD JPOF WHICH CONSTRUCJpTS ARE ALLOWED
K
; COUNTERS USED K0FOR SPACE ALLOCATKPION:

$NEWCT==0Kp		; LEFTOP REGISTLER
$LCNT==0			; L0LOCALS
$LRCNT==0LP		; REGISTERS LOCLpAL TO PROCEDURES
$RCNT==0			; REGM0ISTERS LOCAL TO CMPURRENT PROCEDURE
$MCNT==0			; LOWN SEGMENT AREA FORN0 OWNS AND NON STANPCK
			; VERSION LOCALS

SION ]I A  ]I ]6I A  ]6I ]I A  ]I ]-@A  ]-@]-I6 }(l
							M}HOVE	T,NDEL;*
	TEL(A)
	;*
	TE]-KR H .
							MhOVE	T,NDEL;*
	TNEL(A)
	*
	TN]=Kx 
Pm
							P
pUSH	SP,LLEXEX;*
							PUSH	SP,LC
$NEWCT
$PUSH($NEW,0)
$PUSH($NEW,0]>-mP @]>~ + ]?&= !.
	IFN $BT(YPE-$AS,<
						H	TDNE	DEL,STOPS;*h
							GOTO	FALSE;*
	>IFE $BTYP(E-$AS,<
							THDNN	DEL,STOPS;*
h							GOTO	TRUE;*
	>GOTO	TRUE;]?&KxQ `z]OMPA  ]OMP_M0P _(<P _
}pP _ ;`b
$POP($TY<PES,$T)
$JLAB(<W< >,\$T)
$PLAB(<F>,\$T)
$PLAB(<F>_@A  _@_RD[@P _^p 0G
$OWNN(<PA,B,C,D,E,F,pG,H,I,J,K,L>)
I,J,K,La P a"
@(a"*@(a"k@(a"*@(a$: > ~
	IFG	<10>@-A>,<
	PAT00A=>`.
	>
	IFG	<100-?A>,<
	IFLE	<10-? A>,<
	PAT0A=.
	>>
	IFLE	<100-?`A>,<
	PATA=.
	>
		PATA=.
aNI P a3-j` (),
	IFB <AH>,<
							SETZIh	T2,
		>
	 IFNB <A>,<
							M(OVE	T2,A
		>
	H						PUSHJ	SP,.PLUNK
	HJ	SP,.Pa3-jt ):
	IFB <A(>,<
							SETZIH	T2,
		>
	 IFNBh <A>,<
							MOVE	T2,A
		>
	(						PUSHJ	SP,.IPLUNK
	J	SP,.Ia6P a?>$  ua?>$@ u a?>$` u@a?>% u`a?>%  vaJ,h1A  aJ,h1aJ|92 
$PLEVEL=0=$PLEVEL+1
IFG $PPLEVEL-PMAX,<
$EpRROR(<PROCEDURES NESTED MORE THAN 0PMAX >)
>
$PUSHP($NEWCT,$NEWCT)
p$PUSH($LCNT,$LRCNT)
$PUSH($PROC,$0RCNT)
$LRCNT==0
$LCNT==0
$RCNT=p=0
$NEWCT==0

IFNDEF A,<
DEFI0NE A
<
							PPUSHJ	SP,.A;*
>p>
							.A:;*
							INTERN	.A;*
	INTERN	.aJ~:tAaJ~:td d{vP"dySP 
d{P5d{@P5d{8P"d%}P>ld-LrP>d-iPLd-y@PMd.P#-Bd.@P#5d/
ddRP cdd,PP `dd\ P!'BdeRP 
deySP de{@P de{SP!hdf9P adf<`P!!BdmZP JdtPP#/Bdu}P 1:d~ P#3*d~{@P !d
2P dM9P#Jd}`P Zd+qP!&d,PP dX6P"	d[ P Rd9P d0P dH9P RdI8P dLTP"
dz:P!Gd%	7P d%2P#Rd-Z7P Rd-mP d.P Rd4P dd=
6P eA  ee
9 P e=z wPE2
%REGISTEwpR(<A,B,C,D,Ex,F,G,H,I,J,x0K,L,M,N,O,P,xPQ,R,S,T,U,V,W,X,Y>)
Ve~	7 )
	IFB <A(>,<
							SETZ	HT,
		>
	 IFNB <hA>,<
							MOVEI	T,A(REV)
		>(
							PUSHJ	SP,.REOPEN
	J	SPeKx &h"8
							M'OVE	STOPS,A;*
	E	STOPS,A;*
	e0P e4\@ ((t
							MHOVNI	REV,SYM;*
	NI	REV,SYM;*
	e24M@ t`e268@ t@e6P f:@ oH'
							MohOVE	T,LEXEX;*
		p					TLZ	T,$LEXBLp(;*
							OR	T,pHA;*
							MOVEM	T,LEXEX;*
	EMf:` q'

							Mq(OVEM	A,LEXEX+1;*
	A,LEXEX+1;*f; qh'
							MrOVE	T,LEXEX;*
		r(					TLZ	T,$LEXSArH;*
							OR	T,rhA;*
							MOVEM	T,LEXEX;*
	EMg ?|
$POP($TY? PES,$T)
$PLAB(<F?@>,\$T)
$UNDEFTF($TCNT)$UNDEFTF(g4\z %(",
							M%HOVEM	STOPS,A;*
	M	STOPS,A;*
geXq BP
	SKIPN	TBpARGMC
	GOTO	A		C; KA TARGET
	SKIC0PN	SRCEMC
	GOTO	CPB		; KI TARGET, KA SOURCE
ET, gl\Y #h"&
							P$USHJ	SP,.SEMERR;*$(
XLIST
RADIX 10$H;*
							XWD	B$h,A;*
RADIX 8;*
LIST
	IX8;*AP
							SETZM	A;*
			Sg%{R uh6
	$HALVE(vB);
	IFN LH,<
v(							TLO	A,LH;vH*
	>IFN RH,<
		vh					IORI	A,RH;*
	>ORI	A,RH;*g&= 'H"@
							S'hAVESTOPS(A);*
	(						ADDSTOPS(B);*
	DSTOPS(Bg&@ A	
							SETOM	A;*
			Sg')9 w(B
	$HALVE(wHB);
	IFN LH,<
wh							TLZ	A,LH;x*
	>IFN RH,<
		x(					ANDCMI	A,RH;*
	>CMI	A,RHg
( R
	SETZERO(FL,A)
	TZEROg2F0 ("

	IF DEL EQ LEFT BRACKET
(							CAME	DEL,ZHLBRA;*
							GOhTO	FALSE;*
	 THEN
	  BEGIN
	   (SBRACK;
							NHOOP	.SSEL;
	  ENhDD;
	FI;
	IF DE L EQ DOT
							 (CAME	DEL,ZDOT;*
 H							GOTO	FALSE h;*
	 THEN
	  BE!GIN
	   SDOT;
	!(						NOOP	.SSEL;!H
	  ENDD;
	FI;
	 ENDD;
	FI; H(@
							HhRRZ	T,RA;*
							HRL	T,CAX;*
		(					MOVEM	T,A;*H
							HRLZI	T,h<JRST 0>_-22;*
							PUSHJ	SP,.MABS;*
	J	SP,.MgN-@ H!D
		SELTH=h=SSELTH
							TDNE	DEL,STOPS;*
(							GOTO	.+4+SHELTH;*
		TEST(E,hFL,ERRL);*
							PUSHJ	SP,.ERR;*(
		SSELECT(A);*H
							GOTO	.-4-SELTH;*
		.-4gN-I1 
h d
							TRNN	FL,TRPOFF;*
(							PUSHJ	SP,.HESBLK##;*
						h	LDB	T,DCBYTE;*

							PUSHJ	SP,@
(STABLE(T);*
				
H			NOOP	.SSEL!A;*
	P	.SSEL!A;gN-MP gRI6 
(R
							H
(RLZI	SYM,$STMT!A;*
	M,$STMT!AgR A  gR gR~
`P gSyP gSI1P gSY  ( 2
	SETONE(FL,A)
	ETONE(gS: *&0(SYM)gS: *(1(SYM)&BgWwP gW
rP gW
|P gfhP gfn)9 ((0
							MHOVEM	LOP,SYM;*
	h						MOVE	T,LLEXEX;*
							MOVE(M	T,LEXEX;*
				H			MOVE	T,LCOMPNAhME;*
							MOVEM	T,COMPNAME;*
	T,COMPNAME;*
	gfn8; (
							M(OVEM	SYM,LOP;*
	H						MOVE	T,LEXEhX;*
							MOVEM	T,LLEXEX;*
				(			MOVE	T,COMPNAMHE;*
							MOVEMh	T,LCOMPNAME;*
	,LCOMPNAME;*
	gfn=Q hP h:
8` @h$

		T.INITA(A)
							TLNEA(	T.REGZ,$AMAC;*
AH							GOTO	FALSE;*
		OTO	FALSEh:
P V%:
	T.INIT(V(A)
							TLNN	VHT.REGZ,$ARR!$ARC;Vh*
							TLNN	T.WREGZ,$DECL;*
			W(				GOTO	FALSE;*
	GOTO	FALSE;*
		T.INIT9H(A)
							TLNE9h	T.REGZ,$ARC;*
	:						GOTO	FALSE;*
		OTO	FALSE;h:,@ DH$.
	T.INIT(DhA)
							TLNE	ET.REGZ,$KIND;*
	E(						TLNE	T.REGZEH,$KIND-$ARR;*
		Eh					GOTO	FALSE;*
	GOTO	FALSE;*h: 3#
		T.INIT3((A)
							TLNE3H	T.REGZ,$TYPE-$B;3h*
							GOTO	FALSE;*
		OTO	FAh: ,H#
		T.INIT2(A)
							TLNE2(	T.REGZ,$TYPE-$C;2H*
							GOTO	FALSE;*
		OTO	FAh:yr Wh%D
	T.INIT(XA)
							TLNN	X(T.REGZ,$SINGLE
	XH						GOTO	FALSE
			GOTO	FALSE
		T.INITB((A)
							TLNEBH	T.REGZ,$CONST;*
							GOTO	FALSE;*
		OTO	FALSh:$Xv Th%,
	T.INIT(UA)
							TLNN	U(T.REGZ,$DECL;$
	UH						GOTO	FALSE;$
	GOTO	FALSE;h:/
 ,h$ 
	T.INIT(=A)
							TLNE	C(T.REGZ,$KIND;*
	CH						TLNE	T.REGZCh,$KIND-$EXP;*
		D					GOTO	FALSE;*
	GOTO	FALSE;*h:5{@ N(%
	T.INIT(NHA)
							TLNE	NhT.REGZ,000400;*
O							TLNN	T.REGO(Z,000100;*
					OH		GOTO	FALSE;*
	Oh						TLNE	T.REGZP,000200;*
						P(	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5|V S(%"
	T.INIT(SHA)
							TLNE	ShT.REGZ,000300
		T					TLNN	T.REGZ,T(000400
							GOTO	FALSE
			GOh:5}@ Ph%
	T.INIT(QA)
							TLNE	Q(T.REGZ,000400;*
QH							TLNN	T.REGQhZ,000200;*
					R		GOTO	FALSE;*
	R(						TLNE	T.REGZRH,000100;*
						Rh	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5}` LH$n
	T.INIT(LhA)
							TLNE	MT.REGZ,$STATUS;*
							TLNE	T.REMHGZ,$STATUS-$FOW;*Mh
							GOTO	FALSE;*
	GOTO	FALh:H ,("v
		T.INIT.((A)
							TLNE.H	T.REGZ,$TYPE-$I;.h*
							GOTO	FALSE;*
		OTO	FAh:M[  0H#x
		T.INIT>H(A)
							TLNE>h	T.REGZ,$AM-$IMM;?*
							GOTO	FALSE;*
		OTO	FAh:Mj: )"R
	IFIDN <)($BTYPE><$AS>,<$ER)HROR TEST CANT BE )hUSED IN  AS>
	IF*B <A>,<T.REGZ==S*(YM>
	IFNB <A>,<T.REGZ==A>
	<h:N+ H$D
							TH(LNN	A,$IRLR;*
	HH						GOTO	FALSE;*
	GOTO	FALSE;h:` 5H#2
		T.INIT5h(A)
							TLNE6	T.REGZ,$TYPE-$L;6(*
							GOTO	FALSE;*
		OTO	FAh:f  0h#

		T.INIT1(A)
							TLNE1(	T.REGZ,$TYPE-$LR1H;*
							GOTO	FALSE;*
		OTO	Fh:p 6h#<
		T.INIT7(A)
							TLNE7(	T.REGZ,$TYPE-$N;7H*
							GOTO	FALSE;*
		OTO	FAh:}i  :H#Z
		T.INIT:h(A)
							TLNE;	T.REGZ,$VAR1;*
;(							GOTO	FALSE;*
		OTO	FALSEh:~	9 ](%p
							M]HOVE	T,OP;*
					]h		CAME	T,A;*
		^					GOTO	FALSE;*
	GOTO	FALSE;*h:~{@ Jh$`
	T.INIT(KA)
							TLNE	K(T.REGZ,$STATUS;*
							TLNE	T.REKhGZ,$STATUS-$OWN;*L
							GOTO	FALSE;*
	GOTO	FALh;
  8#F
		T.INIT8((A)
							TLNE8H	T.REGZ,$PHI;*
	8h						GOTO	FALSE;*
		OTO	FALSE;h;+` F($<
	T.INIT(FHA)
							TLNE	FhT.REGZ,200000;*
G							TLNN	T.REGG(Z,100000;*
					GH		GOTO	FALSE;*
	GOTO	FALSE;*
	h;L@ Y%P
	T.INIT(Y(A)
							TLNN	YHT.REGZ,$AMAC;*
	Yh						TLNN	T.REGZZ,$INDC
							GOTO	FALSE
			GOh; /(#
		T.INIT/H(A)
							TLNE/h	T.REGZ,$TYPE-$R;0*
							GOTO	FALSE;*
		OTO	FAh;Y` I$R
	T.INIT(I(A)
							TLNE	IHT.REGZ,$STATUS;*
							TLNE	T.REJGZ,$STATUS-$REG;*J(
							GOTO	FALSE;*
	GOTO	FALh;[ ^H%|
							M^hOVE	A,OP;*
				_			TRNE	A,$OPPRI_(-$RELPRI;*
					_H		GOTO	FALSE;*
	GOTO	FALSE;*
	h;]@ `&
							T`(RNE	REV,SYM-LOP;*`H
							GOTO	FALSE;*
	GOTO	FALh; 4(#(
		T.INIT4H(A)
							TLNE4h	T.REGZ,$TYPE-$S;5*
							GOTO	FALSE;*
		OTO	FAh;  =(#p
		T.INIT=H(A)
							TLNE=h	T.REGZ,$STATUS-$>SIM;*
							GOTO	FALSE;*
		OTh;S ?H$
		T.INIT?h(A)
							TLNE@	T.REGZ,$SINGLE;*@(
							GOTO	FALSE;*
		OTO	FALh;J` ZH%X
							TZhLNE	A,$STACK;*
[							GOTO	FALSE;*
	GOTO	FALSEh;%| a&

							Ta(EST(E,STOPS,NOTTOaHP);*
							GOTO	FALSE;*
	GOTOh;&{` ;h#d
		T.INIT<(A)
							TLNE<(	T.REGZ,$VAR2;*
<H							GOTO	FALSE;*
		OTO	FALSEh;4@ -"n
		T.INIT-((A)
							TLNE-H	T.REGZ,$KIND-$VA-hR;*
							GOTO	FALSE;*
		OTO	h;5S [H%f
	T.INIT([hA)
							TLNN	\T.REGZ,777770;*
\(							TRNN	T.REG\HZ,777777;*
					\h		GOTO	FALSE;*
	GOTO	FALSE;*
	hDP hHP hLP hPP hTP i
I xirA  iri-Lr qi5 q ilA  ili~@ q`i` r`i%	7 p`i%p q@i' r i` }hx
	IFN $BT~YPE-$AS,<TEST(N,T~(,A)
							GOTO~H	FALSE;*
	>IFE $~hBTYPE-$AS,<TEST(E,T,A)
							GOTO	TRUE;*
	>GOi@ t(*
	$HALVE(tHC)
	IFN LH,<
	th						TLNA	B,LHu;*
	>IFN RH,<
	u(						TRNA	B,RH;*
	>NA	B,RHi h @
	IFN $BTYPE-$AS,<TEST(N,F(L,A)
							GOTHO	FALSE;*
	>IFE h$BTYPE-$AS,<TEST(E,FL,A)
							GOTO	TRUE;*
	>i"-` 0 
$UNDEFTF0@($FCNT)
$POP($TY0`PES,$T); UNSTACK 1LAST ITEM
$PLAB(1 <T>,\$T); AND PLA1@CE IT HERE
$PUSH1`($THEN,$T); AND C2HANGE TYPE TO THEN.
TYPE TO THEi#-j`A  i#-j`i8th h(&L
							ThHLNE	A,$AM-$ACC;*hh
							GOTO	TRUiE;*
							TRNN	i(A,777777;*
				iH			GOTO	FALSE;*
	GOTO	FALSE;*
i8tq j&T
							Tj(LNN	A,$AM-$ACC;*jH
							GOTO	FALSE;*
	GOTO	FALi8tT g(&>
							TgHLNN	A,$ARC;*
		gh					GOTO	FALSE;*
	GOTO	FALSE;*i8t  e&,
							Te(LNN	A,$TYPE-$B;*eH
							GOTO	FALSE;*
	GOTO	FALi8u b&
							Tb(LNN	A,$TYPE-$I;*bH
							GOTO	FALSE;*
	GOTO	FALi8u@ f&6
	T.INIT(f(A)
							TLNN	fHT.REGZ,$TYPE-$L;*fh
							GOTO	FALSE;*
	GOTO	FALi8uL@ d&$
							Td(LNN	A,$TYPE-$LR;dH*
							GOTO	FALSE;*
	GOTO	FAi8u| m(&p
							MmHOVE	T,OP;*
					mh		CAMN	T,A;*
		n					GOTO	FALSE;*
	GOTO	FALSE;*i8v  c&
							Tc(LNN	A,$TYPE-$R;*cH
							GOTO	FALSE;*
	GOTO	FALi8v:7 k&\
							Tk(LNN	A,$SINGLE;*
							GOTO	FALSE;*
	GOTO	FALSi8vKx nH&x
							TnhEST(N,STOPS,NOTTOoP);*
							GOTO	FALSE;*
	GOTOi8vj9 l&f
	T.INIT(l(A)
							TLNN	lHT.REGZ,777770;*
lh							JUMPN	T.REGZ,FALSE;*
	REi:-@ H 
	IFN $BThYPE-$AS,<TEST(E,T,A)
							GOTO(	FALSE;*
	>IFE $HBTYPE-$AS,<TEST(Nh,T,A)
							GOTO	TRUE;*
	>GOi:<  H N
	IFN $BThYPE-$AS,<TEST(E,F	L,A)
							GOT	(O	FALSE;*
	>IFE 	H$BTYPE-$AS,<TEST(	hN,FL,A)
							GOTO	TRUE;*
	>i>@  *
	IFE A- (1, <
							PUSH HJ 	SP,.TOCT1
		> h
	IFE A-2, <
	!						PUSHJ	SP,.T!(OCT2
		>
	IFNB !H<B>,<
							TL!hZ	B,$AM
							"TLO	B,$CT
					"(		HRR	B,T2
		>
	R	B,T2
		>@P iJd P!iJeySP  iJ}`P @iKySP o"MI  8`P
$BTYPE==9$WHILE
$LABCNT==9 $LABCNT+1
$PLAB(9@<W>,\$LABCNT)
$P9`USH($WHILE,$LABCN:T)
$DEFTF(\$LABCNT)DEFTF(\$LABCut@A  ut@u(<A  u(<u0A  u0u
,z7A  u
,z7u
}{A  u
}{u|i@A  u|i@u}KwA  u}Kwu}PA  u}Pu}\A  u}\u}`A  u}`uN`A  uN`uxA  uxu~@A  u~@uf9 A  uf9 ut@A  ut@u|`A  u|`uA  uu`A  u`up B
							SETZM	A;*
			SuFI9A  uFI9u~ A  u~ u~-pA  u~-pu~K`A  u~K`u$PA  u$Pu& A  u& u&0A  u&0u&nA  u&nu&vI3A  u&vI3u2
)6A  u2
)6u2(Au2(u2.A u2.u2MiA u2Miu2|i@A  u2|i@u2}`A  u2}`u2}i`A  u2}i`u3@A  u3@u30A  u30u6Mm9A  u6Mm9u:(A  u:(u:~@A  u:~@u?A  u?u?=`A  u?=`uBEA  uBEuBf\`A  uBf\`uB~pA  uB~puCxrA  uCxruJ( A  uJ( uJ,A  uJ,uJ-PA  uJ-PuK@A  uK@uNA  uNuNdtA  uNdtuO$\A  uO$\uO&*7A  uO&*7uO=A  uO=uRD[@A  uRD[@uRMY9A  uRMY9uVmZA  uVmZuVvJ6A  uVvJ6uWM9A  uWM9uZ
[P 	P  	@P 	
9  *4B.'NCOMP	
,z7P 	
`P `	DXu t0e $EXAMINE(|$TYPES,$T)
IFE $|0TYPES&A,<
$ERRO|PR(<ILLEGAL CONSTRUCT>)
> CONSTR	E9 }} IF1,< IRP}0 A,< 
IFB <A>,}P<STOPI> 
IFNB <}pA>,< IFNDEF A,<
$ERROR(< A HAS ~0NOT BEEN GIVEN A ~PVALUE >,)
>
IFD~pEF A,< $T== A&777777777760
IFN 0$T,<
$ERROR(< AP HAS AN INVALID VALUE >,)
>>>>>	}lzP 	 P 	P 	,;P 	,<xP 	,` npwDEFINE A <@-B(SP)>
A 	,k opDEFINE A <-B(C)>
 A 	,lz o0{DEFINE A <@-B(C)>
A 	,m ,@t ; MACRO T,`O DEFINE THE TRUE- AND FALSE LABELS- 
$TCNT==0
$FCNT-@==0

DEFINE TRU-`E < $AT;*
$TCNT.==$TCNT+1
 >

. DEFINE FALSE < $.@AF;*
$FCNT==$FCNT+1
>CNT==$FCN	-Lz 0PURGE $SA PURGE $SA	N8`P 	xP 	M`P$	f9 P 	tH6 p
$Q==$MCNT;
IF2,<
$T==0
REPEAT $$SPMAX,<P$DELSTACK(\$T)
$pT==$T+1>
>
XLIST
LIT
LIST
S	tIP 	+y pp
IF1,<
PqRINTX ******ERRORq0 A ******
>
$ECNT==$ECNT+1
E	D4 iPQ
$GET(\$$ipSP)
A==$ITEM_-^jD18
B==$ITEM&777777
=$ITEM&77	FwP 	HP 	OP 	.@ h0C $ITEM==$SA  $ITEM==$S	"
	LH==<A\0>_-^D18
	RH==<A]h>&777777
	IFN LH\P*RH,<$ERROR(BOTH i@HALVES OF IMMEDIA]TE ARE NON-ZERO)
	>EPNON-ZERO)
	&0P	&mPP	&tH`P	'P 
; GENERA(TE A JUMP TO THE(  CREATED LABEL
	(@						JRST	$BA;*
	JRST	$BA;	/>=P 	2/VP'~	2/
pP 	2|0P @	2}iqP 	2}|P 	7pP"	7-M qp

DEFINEr A(A,B,C,D,E,F,Gr0,H,I,J,K,L,A1,A2,rPA3,A4,A5,A6,A7,A8rp,A9,B1,B2,B3,B4)
<
%A(<A,B,C,D,s0E,F,G,H,I,J,K,L,AsP1,A2,A3,A4,A5,A6,spA7,A8,A9,B1,B2,B3,B4>)
>1,B2,B3	:.pP!	:/+xP!	?LqP 	?LxP 	?
TP x	?=k@ p? IRP A,< 
IFB <A>,<STOPI0> 
IFNB <A>,<
PA==$MCNT+$BASE
p$MCNT==$MCNT+1
>>NT==$MCNT+1
>	B@P 	BEP ~	B`P 	Bd@ & :
; PLACE &@A CREATED LABEL &`FORMED BY CONCATE'NATING A AND BLA' L
							$BA:	;*
XALL
BA:		B~ lPs; UNSTACK lpTWO HALF WORDS
ImFE $$SP,<$ERROR(<m0STACK UNDERFLOW>)mP>
IFN $$SP,<
$GmpET(\$$SP)
A==$InTEM_-^D18
B==$In0TEM&777777
$$SP==$$SP-1
>$$SP=	CZ p0
PRINTX A B

PRINTX 	CyP 	Cx`P 	C`P 	C& P 	C.: jPa; PUSH TWOjp HALF WORDS ONTO kTHE STACK
$$SP==k0$$SP+1
IFG $$SP-kP$$SPMAX,<$$SPMAX=kp=$$SP >
$ITEM== lXWD A,B
$PUT(\$$SP)

$PUT(\	C.@ hpG $SA== $ITEM  $SA== $I	C4P 	JP 	J,z9P  	J-@P 	J-LP @	NP @	NP 	N-I@P 	N.,VP$	N.Hw  $T==1
IR0P A,< 
IFB <A>P,<STOPI> 
IFNB <pA>,<
$A==$T
$T==$T_1
>>T
$	NMivP 
	OP 		O P 	O$uP 	O%\zP!r	O%|P 	OM\zP 	PP"	RD[@P 	SUP 0	VtI3 )` ; REMOVE ) TRUE AND FALSE DE)@FS.
IFE A,<$ERR)`OR(<TRUE/FALSE UN*USED IN BOOLEAN>)* >

DEFINE TRUE<*@ ERROR;*
$ERROR(*`<TRUE NOT IN A BO+OLEAN EXPRESSION + >)
>

DEFINE F+@ALSE< ERROR;*
$E+`RROR(<FALSE NOT I,N A BOOLEAN EXPRESSION >)
>XPRE	^EP 	`P$F
W 0' IRP A,< P
IFB <A>,<STOPIp>

IFNB <A>,<

IFNDEF A,<
D0EFINE A
<
				P			PUSHJ	SP,.A;*p
>>
EXTERNAL .A;
>>TERNAL.$T==0
IRP@ A,<
IFB <A>,<`STOPI>
IFNB <A>,<
$DEFLC (A,\$ T,\DBASE)
$T==$T+1
>>)
$T==$T~-p 03
IRP A,<P 

IFB <A>,<STpOPI>

IFNB <A>,<

DEFINE A
0<
							PUSHJ	SP,.A;*
>>>J	S2|86 `\
IFN $PLEVEL-PMAX,< 
$T== DBASE+$PLEVEL-1
@>
IFE $PLEVEL-PM`AX,< ;ACCESS LOCALS BY STACK POINT ER
$T==SP
>
IR@P A,< 
IFB <A>`,<STOPI> 
IFNB <A>,<

$DEFLC( A,\$LCNT,\$T)
$L@CNT==$LCNT+1
>>	`; END OF IRP
IFG $LCNT,<
$PUSH($ LOC,0)
IFN $PLEV@EL-PMAX,< ; SAVE `OLD DISPLAY
							PUSH	SP,$T;*
 							HRLI	$T,(S@P);*
>
$.==$LCN`T
							ADD	SP,[XWD $.,$.];*
		 					JUMPL	SP,.+2@;*
							JSR	.S`TOVERFLOW;*
IFN $PLEVEL-PMAX,< ;  SET UP NEW DISPLA@Y
							HRR	$T,SP;*
>>HRR	$T,J,z9 	0a 
IRP A,	P< 
IFB <A>,<STO	pPI> 
IFNB <A>,<

A==RBASE-$RCNT
0
$PUSH($REGIS,$R
PCNT)
							PUSH
p	SP,A;*
$RCNT==$RCNT+1
$LRCNT==0$LRCNT+1
>> ; ENPD OF IRP
IFG $RCpNT-RMAX,< $ERROR(
<TOO MANY LOCAL REGISTERS >)>
RVuR EP3UNIVERSAL EpA - B, 7(741), FEUROPEAN SOFTWAREF0 ENGINEERING, SEP-74
ERING, SEP:$[P :4P @:6*2P :6h9P :DRP :N[`P 0:tI6P :v>6P ;yZP ; P }KwQ }PQ S@P ,<rP @xQ f9 Q t@Q |`Q 96P [P"3[P!J( Q  K@Q @NQ O96P  O[P$O$\Q  O%}RA  O%}RRD[@Q VvJ6Q @^EQ >}{woP