Google
 

Trailing-Edge - PDP-10 Archives - ALGOL-20_1-29-82 - algol-binary/algmac.unv
There are 6 other files named algmac.unv in the archive. Click here to see a list.
x
,5/@P BD@ BE@ BH@ BL@ BP@ BT@ BX@ B\@ C|i@P C}`P C}pP  C&= eP./
							SepETONE(STOPS,A);*
	(STOPS,A);*C;L`P CJ$X`A  CJ$X`CK P CL '|
$BTYPE==($AS
$POP($TYPES,H$T)
$DEFTF(\$T)
$PUSH($AS,$T)
$PUSH($BEGIN,0)
USH($BE2\)3PE2\[RPE2|:vA@E2|:vEB v@G' v G2H w G2~9  P05
	IFB <APP>,<
							SETZ	PpT,
		>
	 IFNB <QA>,<
							MOVQ0EI	T,A(REV)
		>QP
							PUSHJ	SP,.CLOSE
	HJ	SPG3 w@G>$P .?
	i%pG>n9P G>nPA  G>nPG>vH1A  G>vH1GJ,`P GJH v`GJ` wGW+A  GW+I
9 P I H)T

$ITEM==0h
IFN $STOPPER,<IFE $SBIT,<$ERROR((TOO MANY STOPPERSH)>
$ITEM==$ITEM!h$SBIT
.A==$SBIT
$SBIT==$SBIT_1>(

IFN $KWSTST,<H$ITEM==$ITEM!KWSThST>
IFN $SYMSTST,<$ITEM==$ITEM!SY(MSTST>
IFN $DECSHPEC,<$ITEM==$ITEMh!DECSPEC>
IFN $EXPCONT,<$ITEM==$I(TEM!EXPCONT>

RHADIX 10
IFNB <Bh>,<$PRIOR==B>
IFNB <C>,<$DC==C(>
IFNB <D>,<$DIHSC==D>
RADIX 8

IFNB <E>,<$ITEM==$ITEM!E>
$I(TEM==$ITEM!$DC!<$HPRIOR_4>!<$DISC_^hD8>

EXTERN ZA
INTERN L$A,R$(A

L$A==$ITEM_H-^D18
R$A==$ITEM&777777A==$ITEIH9P I  X(
							SOS	A;*
					SI<Q I4+w 80+Q
	DEFINE 8PA(BITS)
	<
	IF8pN $BTYPE-$AS,<TES9T(N,B,BITS)
			90				GOTO	FALSE;*
	>IFE $BTYPE-$AS9p,<TEST(E,B,BITS):
							GOTO	TRUE;*
	>>OTO	TRUI5hW :P+c
	DEFINE :pA(BITS)
	<
	IF;N $BTYPE-$AS,<TES;0T(E,B,BITS)
			;P				GOTO	FALSE;*
	>IFE $BTYPE-$AS<,<TEST(N,B,BITS)<0
							GOTO	TRUE;*
	>>OTO	TRUI696 PP-
	DEFINE PpASEL(SITE)
		<
		SELTH==ASELTHQ0
							TDNE	DELQP,STOPS;*
							QpGOTO	.+4+SELTH;*
		TEST(E,FL,ERRLR0);*
							PUSHJRP	SP,.ERR;*
		ASRpELECT(SITE);*
		S					GOTO	.-4-SELTH;*
		>
	SELI6I9 j0.[
	DEFINE jPA(REG)
		<
		Tjp.INIT(REG)
					k		TLNE	T.REGZ,B;k0*
							GOTO	FALSE;*
		>
	FAI`P Id[ @p,
	IFN $BTAYPE-$AS,<TEST(N,DA0EL,A)
							GOAPTO	FALSE;*
	>IFEAp $BTYPE-$AS,<TESTB(E,DEL,A)
					B0		GOTO	TRUE;*
	>GOTO	TRUE;*
	>Iei6 Bp,#
	IFN $BTCYPE-$AS,<TEST(E,DC0EL,A)
							GOCPTO	FALSE;*
	>IFECp $BTYPE-$AS,<TESTD(N,DEL,A)
					D0		GOTO	TRUE;*
	>GOTO	TRUE;*
	>I0 )XR$A_-10&37R$A_-10&3I< {H'b
$POP($TY{hPES,$T)
$UNDEFTF|($FCNT)
$PLAB(<T|(>,\$T)
$PUSH($DO,$T)
$PUSH($DOIC.: p K2H w`K3P sH'0
$POP($TYshPES,$T); UNSTACK tLAST ITEM
$JLAB(t(<S>,\$T); GENERATtHE THE JUMP PAST TthHE ELSE PART
$PUuSH($ELSE,$T); STAu(CK AWAY THE ELSE uHLABEL.
$PLAB(<F>uh,\$T); PLACE LABEvL FOR ELSE DESTINATION.
 DESTINK6NHw R5
	IFB <AR0>,<
							SETZIRP	T2,
		>
	 IFNBRp <A>,<
							MSOVE	T2,A
		>
	S0						PUSHJ	SP,.EMITCODE
	SP,.EK:$;r .A
	i`K:$@ _&6
$POP($TY_(PES,$T)
IFE $TYP_HES-$LOC,<
$.==$L_hCNT
							SUB	S`P,[XWD $.,$.];*
`(IFN $PLEVEL-PMAX,`H<; UPDATE DISPLAY`h
$T==DBASE+$PLEVaEL-1
							POP	a(SP,$T;*
>
$POP(aH$TYPES,$T) >
IFEah $TYPES-$REGIS,<
REPEAT $LRCNT,< b($T==RBASE-$T
			bH				POP	SP,$T;*
bh$POP($TYPES,$T)>>c
IFE $TYPES-$NEWc(,<
							POP	SPcH,LCOMPNAME;*
			ch				POP	SP,LLEXEXd;*
$POP($TYPES,$d(T)
>
IFN $$SP,<dH
$EXAMINE($TYPESdh,$T)
IFE $TYPES-e$PROC,<
							Pe(OPJ	SP,0;*
$POP(eH$TYPES,$RCNT)
$PehOP($LCNT,$LRCNT)
$POP($NEWCT,$NEWf(CT)
$PLEVEL==$PLfHEVEL-1
>>
IFE $fh$SP,<
$ENDALL
>P,<
$ENDALL
>KK`P KK@P KK=Q KN-@ XP-U
		SELTH=Xp=ESELTH
							TYDNE	DEL,STOPS;*
Y0							GOTO	.+4+SYPELTH;*
		TEST(E,YpFL,ERRL);*
					Z		PUSHJ	SP,.ERR;*Z0
		ESELECT(A);*ZP
							GOTO	.-4-SELTH;*
		.-4KN-I1 LP,m
							LLpDB	T,DCBYTE;*
		M					PUSHJ	SP,@ETM0ABLE(T);*
						MP	NOOP	.ESEL!A;*
	P	.ESEL!A;*Q @Kc+q 5X#52
%EXPROC(5x<A,B,C,D,E,6F,G,H,I,J,K,68L,M,N,O,P,Q6X,R,S,T,U,V,W,X,Y>)
V,Kc[SQ aL:@ 6p3;
							H7LLZ	A,LEXEX-B+S70YM;*
							TLZ	A,$LEXSA;*
		L:` 7p3A
							M8OVE	A,LEXEX+1-B+SYM;*
	X+1-BL:%q 5P33
							M5pOVE	A,OP;*
				6			ANDI	A,$OPDSC60;*
							LSH	A,-10;*
	LSH	AL:exw 53)
							HRRZ	A,B;*
	HL; 8P3I
							H8pLLZ	A,LEXEX-B+S9YM;*
							TLZ	A,$LEXBL;*
		L;&(7 3p3%
							H4LRZ	A,B;*
				40			ANDI	A,$TRANK4P;*
							LSH	A,-14;*
	LSH	AL;' 2p3
							H3LRZ	A,B;*
				30			ANDI	A,$TYPE;*
	I	A,$TYPE;MM@ aP.
							PapUSHJ	SP,.FAIL;*
b	RADIX	10;*
	XLIb0ST
							XWD	<.bP.B>!<..C>,A;*
	LIST
	RADIX	8;*
	
	RADIX	8;M\P :#Y2
%FAKE(<:8A,B,C,D,E,F,:XG,H,I,J,K,L:x,M,N,O,P,Q,;R,S,T,U,V,W,X,Y>)
V,W,M
{8A  M
{8M
d^A  M
d^M9A  M9M$: b06REOPEN(A)bP
							MOVE	T2,bpA
							PUSHJ	cSP,.FETCH
							MOVE	A,T4
		M$ vH'J
$POP($TYvhPES,$T); UNSTACK wLAST ITEM
IFE $Tw(YPES-$ELSE<; WE HwHAD AN ELSE PART
wh$PLAB(<S>,\$T); PxALE THE SKIP LABEx(L
>
IFE $TYPES-xH$THEN,<; WE ONLY xhHAD A THEN PART
y$PLAB(<F>,\$T); Py(LACE THE FALSE LABEL.
>FALSE LAM'DY >3{
	IFNB <>0A>,<
							MOVE>P	T,A;*
	>
	IFN>pB <B>,<
							?MOVE	T1,B;*
	>0
							PUSHJ	SP,.ABSFIX;*
	SP,M'D ?p4	
	IFNB <@A>,<
							MOVE@0	T,A;*
	>
	IFN@PB <B>,<
							@pMOVE	T1,B;*
	>
							PUSHJ	SP,.ADDFIX;*
	SP,M'F)6 ;P3m
	IFNB <;pA>,<
							MOVE<	T,A;*
	>
	IFB<0 <B>,<
							P<PUSHJ	SP,.RAFIX;*
	>
	IFNB <B>,<=
							MOVE	T1,=0B;*
							PUSH=PJ	SP,.ADRFIX;*
	>P,.ADRFIX;*
	M'F\A  M'F\M0P M:d]RA  M:d]RM?X6 ]%t
$T==$LCN](T+$LRCNT+$NEWCT
]HIFN <$PLEVEL-PMAX]h>*$LCNT,< ; ACCOU^NT FOR PUSHED DIS^(PLAY REG
$T==$T+^H1
>
$DEFST(A,\$T,\SP);
(A,\M?x9 7#A2
%FORWARD78(<A,B,C,D,E,7XF,G,H,I,J,K7x,L,M,N,O,P,8Q,R,S,T,U,V,W,X,Y>)
V,MN-I1 OP-
							LOpDB	T,DCBYTE;*
		P					PUSHJ	SP,@FTABLE(T);*
	@FTO h)A==BVBIT
BVBIT==BVBIT_1
VBIT==BVBIT_1
O>d@P O?%p +QtKA  QtKS p'
$BTYPE==p($IF
$LABCNT==$LApHBCNT+1
$PUSH($IFph,$LABCNT)
$DEFTF(\$LABCNT)DEFTFS:  (	
							AOS	A;*
					AS:$^A  S:$^U>M` H4I
	IFNB <H0A>,<
							MOVEHP	T,A;*
	>
				Hp			HLRZM	T,CAX;*
							PUSHJ	SP,.RAFIX;*
		SP,WA  WW&eH< J04S
							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 Jp4[
							MKOVEI	T,A13+1;*
	K0						MOVEM	T,LAC;*
	OVEM	T,LACY)9 Lp4k
							MMOVE	T,A;*
					M0		MOVEM	T,LAC;*
	OVEM	T,LAC;*
Y8; Kp4c
							MLOVE	T,LAC;*
				L0			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>
@ W05M
	IFNB <WPB>,<
							MOVEWpI	T1,B
		>
	 IXFB <A>,<
						X0	HRLI	T1,<MOVE 0,XP(SYM+1)>_-22
		>Xp
	 IFNB <A>,<
Y							HRLI	T1,<MY0OVE 0,(A)>_-22
YP		>
							PUSHJ	SP,.LOAD
	SHJY>
H` \p5y
	IFNB <]B>,<
							MOVE]0I	T1,B
		>
	 I]PFB <A>,<
						]p	HRLI	T1,<SETCM 0^,(SYM+1)>_-22
		^0>
	^IFNB <A>,<
							HRLI	T1,<^pSETCM 0,(A)>_-22_
		>
							PUSHJ	SP,.LOAD
	SY>
K@ Z5c
	IFNB <Z0B>,<
							MOVEZPI	T1,B
		>
	 IZpFB <A>,<
						[	HRLI	T1,<MOVN 0,[0(SYM+1)>_-22
		>[P
	 IFNB <A>,<
[p							HRLI	T1,<M\OVN 0,(A)>_-22
\0		>
							PUSHJ	SP,.LOAD
	SHJY> ;X#e2
%LOCAL(<;xA,B,C,D,E,F<,G,H,I,J,K,<8L,M,N,O,P,Q,<XR,S,T,U,V,W,X,Y>)
V,WY>~ }h't
$LABCNT=~=$LABCNT+1
$PLAB~((<T>,\$LABCNT)
$~HPUSH($LOOP,$LABCNT)($LOOP,$LABCNY?P YC.: p YN-@ [-i
		SELTH=[0=LSELTH
							T[PDNE	DEL,STOPS;*
[p							GOTO	.+4+S\ELTH;*
		TEST(E,\0FL,ERRL);*
					\P		PUSHJ	SP,.ERR;*\p
		LSELECT(A);*]
							GOTO	.-4-SELTH;*
		.-4YN-I1 N,y
							LN0DB	T,DCBYTE;*
		NP					PUSHJ	SP,@LTNpABLE(T);*
						O	NOOP	.LSEL!A;*
	P	.LSEL!A;* :P3Y
							M:pOVE	T,[A];*
			;				PUSHJ	SP,.MABS;*
	J	SP,.MAB[
							P9pUSHJ	SP,.PCALL;*
							NOOP	A;*
				NOOP	A;*[> cP6!
							PcpUSHJ	SP,.MOB;*
	d						NOOP	A;*
				NOOP	A;*
[>&[ X(q
Q.A==$Qx;
EXTERNAL B.A;
INTERNAL C.A,Q8.A;
C.A:

DEXFINE $BASE <B.A>x

%TITLE(A,ALGOL COMPILER MODUL8E A)

; SET UPX SOME CHECKS:

x$CHKDEF(<SP,PMAX,RBASE,RMAX>)

;8 SET UP ASSEMBLY XTIME VARIABLES:
x
$ECNT==0			; NUMBER OF MACRO ERR8ORS FOUND
$LABCNXT==0		; UNIQUE LAxBEL COUNTER
$$SP==0			; ASSEMBLY 8TIME STACK POINTEXR
$$SPMAX==0		; xRECORD OF MAX OF 	$$SP
$PLEVEL==0		8	; DEPTH OF PROCE	XDURE NESTING
$AL	xLOW==0		; RECORD 
OF WHICH CONSTRUC
8TS ARE ALLOWED

X
; COUNTERS USED 
xFOR SPACE ALLOCATION:

$NEWCT==08		; LEFTOP REGISTXER
$LCNT==0			; xLOCALS
$LRCNT==0
		; REGISTERS LOC
8AL TO PROCEDURES
X
$RCNT==0			; REG
xISTERS LOCALDTOEC
$MCNT==0			;ELOWRCK
			; VERSION LOCALS

SION ]I A  ]I ]6I A  ]6I ]I A  ]I ]-@A  ]-@]-I6 <p+i
							M=OVE	T,NDEL;*
	TEL(A)
	;*
	TE]-KR E,+
							ME0OVE	T,NDEL;*
	TNEL(A)
	*
	TN]=Kx MX$u
							PMxUSH	SP,LLEXEX;*
N							PUSH	SP,LCN8OMPNAME;*
$NEWCTNX==2
$PUSH($NEW,0)
$PUSH($NEW,0]>-mP @]>~ + ]?&= SP-+
	IFN $BTSpYPE-$AS,<
						T	TDNE	DEL,STOPS;*T0
							GOTO	FALTPSE;*
	>IFE $BTYPTpE-$AS,<
							TUDNN	DEL,STOPS;*
U0							GOTO	TRUE;*
	>GOTO	TRUE;]?&KxQ `z]OMPA  ]OMP_M0P _(<P _
}pP _ |h'j
$POP($TY}PES,$T)
$JLAB(<W}(>,\$T)
$PLAB(<F>,\$T)
$PLAB(<F>_@A  _@_RD[@P _^p I8$O
$OWNN(<IXA,B,C,D,E,F,IxG,H,I,J,K,L>)
I,J,K,La P aNI P a3-j` Sp5)
	IFB <AT>,<
							SETZIT0	T2,
		>
	 IFNBTP <A>,<
							MTpOVE	T2,A
		>
	U						PUSHJ	SP,.PLUNK
	HJ	SP,.Pa3-jt UP57
	IFB <AUp>,<
							SETZIV	T2,
		>
	 IFNBV0 <A>,<
							MVPOVE	T2,A
		>
	Vp						PUSHJ	SP,.IPLUNK
	J	SP,.Ia6P a?>$  ua?>$@ u a?>$` u@a?>% u`a?>%  vaJ,h1A  aJ,h1aJ|92 O%
$PLEVEL=O8=$PLEVEL+1
IFG $OXPLEVEL-PMAX,<
$EOxRROR(<PROCEDURES PNESTED MORE THAN P8PMAX >)
>
$PUSHPX($NEWCT,$NEWCT)
Px$PUSH($LCNT,$LRCNQT)
$PUSH($PROC,$Q8RCNT)
$LRCNT==0
$LCNT==0
$RCNT=Qx=0
$NEWCT==0

RIFNDEF A,<
DEFIR8NE A
<
							RXPUSHJ	SP,.A;*
>Rx>
							.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 8X#M2
%REGISTE8xR(<A,B,C,D,E9,F,G,H,I,J,98K,L,M,N,O,P,9XQ,R,S,T,U,V,W,X,Y>)
Ve~	7 NP4
	IFB <ANp>,<
							SETZ	OT,
		>
	 IFNB <O0A>,<
							MOVOPEI	T,A(REV)
		>Op
							PUSHJ	SP,.REOPEN
	J	SPeKx f0.5
							MfPOVE	STOPS,A;*
	E	STOPS,A;*
	e0P e4\@ Mp4q
							MNOVNI	REV,SYM;*
	NI	REV,SYM;*
	e24M@ t`e268@ t@e6P f:@ /3
							M/0OVE	T,LEXEX;*
		/P					TLZ	T,$LEXBL/p;*
							OR	T,0A;*
							MOVEM	T,LEXEX;*
	EMf:` 0P3
							M0pOVEM	A,LEXEX+1;*
	A,LEXEX+1;*f; 103
							M1POVE	T,LEXEX;*
		1p					TLZ	T,$LEXSA2;*
							OR	T,20A;*
							MOVEM	T,LEXEX;*
	EMg (
$POP($TY(PES,$T)
$PLAB(<FH>,\$T)
$UNDEFTF($TCNT)$UNDEFTF(g4\z dp.)
							MeOVEM	STOPS,A;*
	M	STOPS,A;*
gl\Y c0.#
							PcPUSHJ	SP,.SEMERR;*cp
XLIST
RADIX 10d;*
							XWD	Bd0,A;*
RADIX 8;*
LIST
	IX8;*X(
							SETZM	A;*
			Sg%{R 50+3
	$HALVE(5PB);
	IFN LH,<
5p							TLO	A,LH;6*
	>IFN RH,<
		60					IORI	A,RH;*
	>ORI	A,RH;*g&= g.=
							Sg0AVESTOPS(A);*
	gP						ADDSTOPS(B);*
	DSTOPS(Bg&@ (
							SETOM	A;*
			Sg')9 6p+?
	$HALVE(7B);
	IFN LH,<
70							TLZ	A,LH;7P*
	>IFN RH,<
		7p					ANDCMI	A,RH;*
	>CMI	A,RHg
	SETZERO(FL,A)
	TZEROg2F0 Up.	
	IF DEL ]PEQ LEFT BRACKET
]p							CAME	DEL,Z^LBRA;*
							GO^0TO	FALSE;*
	 THE^PN
	  BEGIN
	   ^pSBRACK;
							N_OOP	.SSEL;
	  EN_0DD;
	FI;
	IF DE_PL EQ DOT
							_pCAME	DEL,ZDOT;*
`							GOTO	FALSE`0;*
	 THEN
	  BE`PGIN
	   SDOT;
	`p						NOOP	.SSEL;a
	  ENDD;
	FI;
	 ENDD;
	FI; F4=
							HF0RRZ	T,RA;*
					FP		HRL	T,CAX;*
		Fp					MOVEM	T,A;*G
							HRLZI	T,G0<JRST 0>_-22;*
	GP						PUSHJ	SP,.MABS;*
	J	SP,.MgN-@ V-A
		SELTH=V0=SSELTH
							TVPDNE	DEL,STOPS;*
Vp							GOTO	.+4+SWELTH;*
		TEST(E,W0FL,ERRL);*
					WP		PUSHJ	SP,.ERR;*Wp
		SSELECT(A);*X
							GOTO	.-4-SELTH;*
		.-4gN-I1 J0,a
							TJPRNN	FL,TRPOFF;*
Jp							PUSHJ	SP,.KESBLK##;*
						K0	LDB	T,DCBYTE;*
KP							PUSHJ	SP,@KpSTABLE(T);*
				L			NOOP	.SSEL!A;*
	P	.SSEL!A;gN-MP gRI6 IP4O
							HIpRLZI	SYM,$STMT!A;*
	M,$STMT!AgR A  gR gR~
`P gSyP gSI1P gSY  Ep,/
	SETONE(FL,A)
	ETONE(gS: 6#0(SYM)gS: 6%1(SYM)gWwP gW
rP gW
|P gfhP gfn)9 Cp4-
							MDOVEM	LOP,SYM;*
	D0						MOVE	T,LLEXDPEX;*
							MOVEDpM	T,LEXEX;*
				E			MOVE	T,LCOMPNAE0ME;*
							MOVEEPM	T,COMPNAME;*
	T,COMPNAME;*
	gfn8; AP4
							MApOVEM	SYM,LOP;*
	B						MOVE	T,LEXEB0X;*
							MOVEMBP	T,LLEXEX;*
				Bp			MOVE	T,COMPNAMCE;*
							MOVEMC0	T,LCOMPNAME;*
	,LCOMPNAME;*
	gfn=Q hP h:
8` 00	
		T.INITP(A)
							TLNEp	T.REGZ,$AMAC;*
							GOTO	FALSE;*
		OTO	FALSEh:
P P17
	T.INIT(pA)
							TLNN	T.REGZ,$ARR!$ARC;0*
							TLNN	T.PREGZ,$DECL;*
			p				GOTO	FALSE;*
	GOTO	FALSE;*
		T.INITy(A)
							TLNEy0	T.REGZ,$ARC;*
	yP						GOTO	FALSE;*
		OTO	FALSE;h:,@ 0+
	T.INIT(0A)
							TLNE	PT.REGZ,$KIND;*
	p						TLNE	T.REGZ,$KIND-$ARR;*
		0					GOTO	FALSE;*
	GOTO	FALSE;*h: rP/
		T.INITrp(A)
							TLNEs	T.REGZ,$TYPE-$B;s0*
							GOTO	FALSE;*
		OTO	FAh: l/
		T.INITqP(A)
							TLNEqp	T.REGZ,$TYPE-$C;r*
							GOTO	FALSE;*
		OTO	FAh:yr 01A
	T.INIT(PA)
							TLNN	pT.REGZ,$SINGLE
							GOTO	FALSE
			GOTO	FALSE
		T.INITp(A)
							TLNE	T.REGZ,$CONST;*
							GOTO	FALSE;*
		OTO	FALSh:$Xv 01)
	T.INIT(PA)
							TLNN	pT.REGZ,$DECL;$
							GOTO	FALSE;$
	GOTO	FALSE;h:/
 l00
	T.INIT(|PA)
							TLNE	pT.REGZ,$KIND;*
							TLNE	T.REGZ0,$KIND-$EXP;*
		P					GOTO	FALSE;*
	GOTO	FALSE;*h:5{@ 
	T.INIT(A)
							TLNE	0T.REGZ,000400;*
P							TLNN	T.REGpZ,000100;*
							GOTO	FALSE;*
	0						TLNE	T.REGZP,000200;*
						p	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5|V p1
	T.INIT(A)
							TLNE	0T.REGZ,000300
		P					TLNN	T.REGZ,p000400
							GOTO	FALSE
			GOh:5}@ 01
	T.INIT(PA)
							TLNE	pT.REGZ,000400;*
							TLNN	T.REG0Z,000200;*
					P		GOTO	FALSE;*
	p						TLNE	T.REGZ,000100;*
						0	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5}` 
0k
	T.INIT(
0A)
							TLNE	
PT.REGZ,$STATUS;*
p
							TLNE	T.RE*
							GOTO	FALSE;*
	GOTO	FALh:H kp.s
		T.INITmp(A)
							TLNEn	T.REGZ,$TYPE-$I;n0*
							GOTO	FALSE;*
		OTO	FAh:M[  p/u
		T.INIT~(A)
							TLNE~0	T.REGZ,$AM-$IMM;~P*
							GOTO	FALSE;*
		OTO	FAh:Mj: hP.O
	IFIDN <hp$BTYPE><$AS>,<$ERiROR TEST CANT BE i0USED IN  AS>
	IFiPB <A>,<T.REGZ==SipYM>
	IFNB <A>,<T.REGZ==A>
	<h:N+ P0A
							TpLNN	A,$IRLR;*
							GOTO	FALSE;*
	GOTO	FALSE;h:` u//
		T.INITu0(A)
							TLNEuP	T.REGZ,$TYPE-$L;up*
							GOTO	FALSE;*
		OTO	FAh:f  p0/	
		T.INITpP(A)
							TLNEpp	T.REGZ,$TYPE-$LRq;*
							GOTO	FALSE;*
		OTO	Fh:p v0/9
		T.INITvP(A)
							TLNEvp	T.REGZ,$TYPE-$N;w*
							GOTO	FALSE;*
		OTO	FAh:}i  z/W
		T.INITz0(A)
							TLNEzP	T.REGZ,$VAR1;*
zp							GOTO	FALSE;*
		OTO	FALSEh:~	9 p1m
							MOVE	T,OP;*
					0		CAME	T,A;*
		P					GOTO	FALSE;*
	GOTO	FALSE;*h:~{@ 
00]
	T.INIT(
PA)
							TLNE	
pT.REGZ,$STATUS;*
							TLNE	T.RE0GZ,$STATUS-$OWN;*P
							GOTO	FALSE;*
	GOTO	FALh;
  wP/C
		T.INITwp(A)
							TLNEx	T.REGZ,$PHI;*
	x0						GOTO	FALSE;*
		OTO	FALSE;h;+` p09
	T.INIT(A)
							TLNE	0T.REGZ,200000;*
P							TLNN	T.REGpZ,100000;*
							GOTO	FALSE;*
	GOTO	FALSE;*
	h;L@ P1M
	T.INIT(pA)
							TLNN	T.REGZ,$AMAC;*
	0						TLNN	T.REGZP,$INDC
							GOTO	FALSE
			GOh; np.}
		T.INITo(A)
							TLNEo0	T.REGZ,$TYPE-$R;oP*
							GOTO	FALSE;*
		OTO	FAh;Y` P0O
	T.INIT(pA)
							TLNE		T.REGZ,$STATUS;*
							TLNE	T.RE	PGZ,$STATUS-$REG;*	p
							GOTO	FALSE;*
	GOTO	FALh;[ 1y
							M0OVE	A,OP;*
				P			TRNE	A,$OPPRIp-$RELPRI;*
							GOTO	FALSE;*
	GOTO	FALSE;*
	h;]@ P2
							TpRNE	REV,SYM-LOP;* 
							GOTO	FALSE;*
	GOTO	FALh; sp/%
		T.INITt(A)
							TLNEt0	T.REGZ,$TYPE-$S;tP*
							GOTO	FALSE;*
		OTO	FAh;  |p/m
		T.INIT}(A)
							TLNE}0	T.REGZ,$STATUS-$}PSIM;*
							GOTO	FALSE;*
		OTh;S /
		T.INIT0(A)
							TLNEP	T.REGZ,$SINGLE;*p
							GOTO	FALSE;*
		OTO	FALh;J` 1U
							T0LNE	A,$STACK;*
P							GOTO	FALSE;*
	GOTO	FALSEh;%|  P2	
							T pEST(E,STOPS,NOTTO!P);*
							GOTO	FALSE;*
	GOTOh;&{` {0/a
		T.INIT{P(A)
							TLNE{p	T.REGZ,$VAR2;*
|							GOTO	FALSE;*
		OTO	FALSEh;4@ lP.k
		T.INITlp(A)
							TLNEm	T.REGZ,$KIND-$VAm0R;*
							GOTO	FALSE;*
		OTO	h;5S 1c
	T.INIT(0A)
							TLNN	PT.REGZ,777770;*
p							TRNN	T.REGZ,777777;*
					0		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` =0+u
	IFN $BT=PYPE-$AS,<TEST(N,T=p,A)
							GOTO>	FALSE;*
	>IFE $>0BTYPE-$AS,<TEST(E>P,T,A)
							GOTO	TRUE;*
	>GOi@ 3p+'
	$HALVE(4C)
	IFN LH,<
	40						TLNA	B,LH4P;*
	>IFN RH,<
	4p						TRNA	B,RH;*
	>NA	B,RHi F0,=
	IFN $BTFPYPE-$AS,<TEST(N,FFpL,A)
							GOTGO	FALSE;*
	>IFE G0$BTYPE-$AS,<TEST(GPE,FL,A)
							GOTO	TRUE;*
	>i"-` q('
$UNDEFTFqH($FCNT)
$POP($TYqhPES,$T); UNSTACK rLAST ITEM
$PLAB(r(<T>,\$T); AND PLArHCE IT HERE
$PUSHrh($THEN,$T); AND CsHANGE TYPE TO THEN.
TYPE TO THEi#-j`A  i#-j`i8th 'p2I
							T(LNE	A,$AM-$ACC;*(0
							GOTO	TRU(PE;*
							TRNN	(pA,777777;*
				)			GOTO	FALSE;*
	GOTO	FALSE;*
i8tq )P2Q
							T)pLNN	A,$AM-$ACC;**
							GOTO	FALSE;*
	GOTO	FALi8tT &p2;
							T'LNN	A,$ARC;*
		'0					GOTO	FALSE;*
	GOTO	FALSE;*i8t  $P2)
							T$pLNN	A,$TYPE-$B;*%
							GOTO	FALSE;*
	GOTO	FALi8u !P2
							T!pLNN	A,$TYPE-$I;*"
							GOTO	FALSE;*
	GOTO	FALi8u@ %P23
	T.INIT(%pA)
							TLNN	&T.REGZ,$TYPE-$L;*&0
							GOTO	FALSE;*
	GOTO	FALi8uL@ #P2!
							T#pLNN	A,$TYPE-$LR;$*
							GOTO	FALSE;*
	GOTO	FAi8u| ,p2m
							M-OVE	T,OP;*
					-0		CAMN	T,A;*
		-P					GOTO	FALSE;*
	GOTO	FALSE;*i8v  "P2
							T"pLNN	A,$TYPE-$R;*#
							GOTO	FALSE;*
	GOTO	FALi8v:7 *P2Y
							T*pLNN	A,$SINGLE;*
							GOTO	FALSE;*
	GOTO	FALSi8vKx .2u
							T.0EST(N,STOPS,NOTTO.PP);*
							GOTO	FALSE;*
	GOTOi8vj9 +P2c
	T.INIT(+pA)
							TLNN	,T.REGZ,777770;*
,0							JUMPN	T.REGZ,FALSE;*
	REi:-@ ?,
	IFN $BT?0YPE-$AS,<TEST(E,T?P,A)
							GOTO?p	FALSE;*
	>IFE $@BTYPE-$AS,<TEST(N@0,T,A)
							GOTO	TRUE;*
	>GOi:<  H,K
	IFN $BTH0YPE-$AS,<TEST(E,FHPL,A)
							GOTHpO	FALSE;*
	>IFE I$BTYPE-$AS,<TEST(I0N,FL,A)
							GOTO	TRUE;*
	>i>@ _P6
	IFE A-_p1, <
							PUSH`J 	SP,.TOCT1
		>`0
	IFE A-2, <
	`P						PUSHJ	SP,.T`pOCT2
		>
	IFNB a<B>,<
							TLa0Z	B,$AM
							aPTLO	B,$CT
					ap		HRR	B,T2
		>
	R	B,T2
		>@P iJd P!iJeySP  iJ}`P @iKySP o"MI  yh'X
$BTYPE==z$WHILE
$LABCNT==z($LABCNT+1
$PLAB(zH<W>,\$LABCNT)
$PzhUSH($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 (
							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  61B.'NCOMP	
,z7P 	
`P `	DXu 58#m $EXAMINE(=$TYPES,$T)
IFE $=8TYPES&A,<
$ERRO=XR(<ILLEGAL CONSTRUCT>)
> CONSTR	E9 >$ IF1,< IRP>8 A,< 
IFB <A>,>X<STOPI> 
IFNB <>xA>,< IFNDEF A,<
$ERROR(< A HAS ?8NOT BEEN GIVEN A ?XVALUE >,)
>
IFD?xEF A,< $T== A&7@77777777760
IFN @8$T,<
$ERROR(< A@X HAS AN INVALID VALUE >,)
>>>>>	}lzP 	 P 	P 	,;P 	,<xP 	,` /x"DEFINE A <@-B(SP)>
A 	,k 0x#DEFINE A <-B(C)>
 A 	,lz 08#DEFINE A <@-B(C)>
A 	,m mH&| ; MACRO TmhO DEFINE THE TRUEn AND FALSE LABELSn(
$TCNT==0
$FCNTnH==0

DEFINE TRUnhE < $AT;*
$TCNTo==$TCNT+1
 >

o(DEFINE FALSE < $oHAF;*
$FCNT==$FCNT+1
>CNT==$FCN	-Lz B8$PURGE $SA PURGE $SA	N8`P 	xP 	M`P$	f9 P 	tH6 Bx$
$Q==$MCNCT;
IF2,<
$T==0
REPEAT $$SPMAX,<CX$DELSTACK(\$T)
$CxT==$T+1>
>
XLIST
LIT
LIST
S	tIP 	+y 1x#
IF1,<
P2RINTX ******ERROR28 A ******
>
$ECNT==$ECNT+1
E	D4 *X"Y
$GET(\$$*xSP)
A==$ITEM_-^+D18
B==$ITEM&777777
=$ITEM&77	FwP 	HP 	OP 	.@ )8"K $ITEM==$SA  $ITEM==$S	"
	LH==<Ax>_-^D18
	RH==<A0>&777777
	IFN LH*RH,<$ERROR(BOTH )HALVES OF IMMEDIAXTE ARE NON-ZERO)
	>EPNON-ZERO)
	&0P	&mPP	&tH`P&	'P 
; GENERAiTE A JUMP TO THEi( CREATED LABEL
	iH						JRST	$BA;*
	JRST	$BA;	/>=P 	2/VP'~	2/
pP 	2|0P @	2}iqP 	2}|P 	7pP"	7-M 2x#'

DEFINE3 A(A,B,C,D,E,F,G38,H,I,J,K,L,A1,A2,3XA3,A4,A5,A6,A7,A83x,A9,B1,B2,B3,B4)
<
%A(<A,B,C,D,48E,F,G,H,I,J,K,L,A4X1,A2,A3,A4,A5,A6,4xA7,A8,A9,B1,B2,B3,B4>)
>1,B2,B3	:.pP!	:/+xP!	?LqP 	?LxP 	?
TP x	?=k@ Gx$G IRP A,< H
IFB <A>,<STOPIH8> 
IFNB <A>,<
HXA==$MCNT+$BASE
Hx$MCNT==$MCNT+1
>>NT==$MCNT+1
>	B@P 	BEP ~	B`P 	Bd@ g(&B
; PLACE gHA CREATED LABEL ghFORMED BY CONCATEhNATING A AND BLAh(L
							$BA:	;*
XALL
BA:		B~ -X"{; UNSTACK -xTWO HALF WORDS
I.FE $$SP,<$ERROR(<.8STACK UNDERFLOW>).X>
IFN $$SP,<
$G.xET(\$$SP)
A==$I/TEM_-^D18
B==$I/8TEM&777777
$$SP==$$SP-1
>$$SP=	CZ 18#
PRINTX A B

PRINTX 	CyP 	Cx`P 	C`P 	C& P 	C.: +X"i; PUSH TWO+x HALF WORDS ONTO ,THE STACK
$$SP==,8$$SP+1
IFG $$SP-,X$$SPMAX,<$$SPMAX=,x=$$SP >
$ITEM== -XWD A,B
$PUT(\$$SP)

$PUT(\	C.@ )x"O $SA== $ITEM  $SA== $I	C4P 	JP 	J,z9P  	J-@P 	J-LP @	NP @	NP 	N-I@P 	N.,VP$	N.Hw A$ $T==1
IRA8P A,< 
IFB <A>AX,<STOPI> 
IFNB <AxA>,<
$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 j&h ; REMOVE j(TRUE AND FALSE DEjHFS.
IFE A,<$ERRjhOR(<TRUE/FALSE UNkUSED IN BOOLEAN>)k(>

DEFINE TRUE<kH ERROR;*
$ERROR(kh<TRUE NOT IN A BOlOLEAN EXPRESSION l(>)
>

DEFINE FlHALSE< ERROR;*
$ElhRROR(<FALSE NOT ImN A BOOLEAN EXPRESSION >)
>XPRE	^EP 	`P$F
W D8$/ IRP A,< DX
IFB <A>,<STOPIDx>

IFNB <A>,<

IFNDEF A,<
DE8EFINE A
<
				EX			PUSHJ	SP,.A;*Ex
>>
EXTERNAL .A;
>>TERNAL%.$T==0
IRPTH A,<
IFB <A>,<ThSTOPI>
IFNB <A>U,<
$DEFLC (A,\$U(T,\DBASE)
$T==$T+1
>>)
$T==$T~-p F8$;
IRP A,<FX 

IFB <A>,<STFxOPI>

IFNB <A>G,<

DEFINE A
G8<
							PUSHJ	SP,.A;*
>>>J	S2|86 Uh%d
IFN $PLEVVEL-PMAX,< 
$T==V(DBASE+$PLEVEL-1
VH>
IFE $PLEVEL-PMVhAX,< ;ACCESS LOCAWLS BY STACK POINTW(ER
$T==SP
>
IRWHP A,< 
IFB <A>Wh,<STOPI> 
IFNB <XA>,<

$DEFLC(X(A,\$LCNT,\$T)
$LXHCNT==$LCNT+1
>>	Xh; END OF IRP
IFGY $LCNT,<
$PUSH($Y(LOC,0)
IFN $PLEVYHEL-PMAX,< ; SAVE YhOLD DISPLAY
				Z			PUSH	SP,$T;*
Z(							HRLI	$T,(SZHP);*
>
$.==$LCNZhT
							ADD	SP,[[XWD $.,$.];*
		[(					JUMPL	SP,.+2[H;*
							JSR	.S[hTOVERFLOW;*
IFN \$PLEVEL-PMAX,< ; \(SET UP NEW DISPLA\HY
							HRR	$T,SP;*
>>HRR	$T,J,z9 J8$i 
IRP A,JX< 
IFB <A>,<STOJxPI> 
IFNB <A>,<K
A==RBASE-$RCNTK8
$PUSH($REGIS,$RKXCNT)
							PUSHKx	SP,A;*
$RCNT==L$RCNT+1
$LRCNT==L8$LRCNT+1
>> ; ENLXD OF IRP
IFG $RCLxNT-RMAX,< $ERROR(M<TOO MANY LOCAL REGISTERS >)>
RVuR @ JUNIVERSAL `A - B, 1.2(310)	, EUROPEAN SOFTWA	 RE ENGINEERING, SEP-74
ERING, S:$[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