Google
 

Trailing-Edge - PDP-10 Archives - BB-D608D-SB_1982 - 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&= dH&
							SdhETONE(STOPS,A);*
	(STOPS,A);*C;L`P CJ$X`A  CJ$X`CK P CL | f
$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  O(%
	IFB <AOH>,<
							SETZ	OhT,
		>
	 IFNB <PA>,<
							MOVP(EI	T,A(REV)
		>PH
							PUSHJ	SP,.CLOSE
	HJ	SPG3 w@G>$P 6
	PG>n9P G>nPA  G>nPG>vH1A  G>vH1GJ,`P GJH v`GJ` wGW+A  GW+I
9 P I @L

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

IFN $KWSTST,<@$ITEM==$ITEM!KWST`ST>
IFN $SYMSTST,<$ITEM==$ITEM!SY MSTST>
IFN $DECS@PEC,<$ITEM==$ITEM`!DECSPEC>
IFN $EXPCONT,<$ITEM==$I TEM!EXPCONT>

R@ADIX 10
IFNB <B`>,<$PRIOR==B>
IFNB <C>,<$DC==C >
IFNB <D>,<$DI@SC==D>
RADIX 8

IFNB <E>,<$ITEM==$ITEM!E>
$I TEM==$ITEM!$DC!<$@PRIOR_4>!<$DISC_^`D8>

EXTERN ZA
INTERN L$A,R$ A

L$A==$ITEM_@-^D18
R$A==$ITEM&777777A==$ITEIH9P I  ~pw
							SOS	A;*
					SI<Q I4+w 7(H
	DEFINE 7HA(BITS)
	<
	IF7hN $BTYPE-$AS,<TES8T(N,B,BITS)
			8(				GOTO	FALSE;*
	>IFE $BTYPE-$AS8h,<TEST(E,B,BITS)9
							GOTO	TRUE;*
	>>OTO	TRUI5hW 9HZ
	DEFINE 9hA(BITS)
	<
	IF:N $BTYPE-$AS,<TES:(T(E,B,BITS)
			:H				GOTO	FALSE;*
	>IFE $BTYPE-$AS;,<TEST(N,B,BITS);(
							GOTO	TRUE;*
	>>OTO	TRUI696 OH
	DEFINE OhASEL(SITE)
		<
		SELTH==ASELTHP(
							TDNE	DELPH,STOPS;*
							PhGOTO	.+4+SELTH;*
		TEST(E,FL,ERRLQ();*
							PUSHJQH	SP,.ERR;*
		ASQhELECT(SITE);*
		R					GOTO	.-4-SELTH;*
		>
	SELI6I9 i(R
	DEFINE iHA(REG)
		<
		Tih.INIT(REG)
					j		TLNE	T.REGZ,B;j(*
							GOTO	FALSE;*
		>
	FAI`P Id[ ?h

	IFN $BT@YPE-$AS,<TEST(N,D@(EL,A)
							GO@HTO	FALSE;*
	>IFE@h $BTYPE-$AS,<TESTA(E,DEL,A)
					A(		GOTO	TRUE;*
	>GOTO	TRUE;*
	>Iei6 Ah
	IFN $BTBYPE-$AS,<TEST(E,DB(EL,A)
							GOBHTO	FALSE;*
	>IFEBh $BTYPE-$AS,<TESTC(N,DEL,A)
					C(		GOTO	TRUE;*
	>GOTO	TRUE;*
	>I0 PR$A_-10&37R$A_-10&3I< x`L
$POP($TYyPES,$T)
$UNDEFTFy ($FCNT)
$PLAB(<Ty@>,\$T)
$PUSH($DO,$T)
$PUSH($DOIC.: p K2H w`K3P p`
$POP($TYqPES,$T); UNSTACK q LAST ITEM
$JLAB(q@<S>,\$T); GENERATq`E THE JUMP PAST TrHE ELSE PART
$PUr SH($ELSE,$T); STAr@CK AWAY THE ELSE r`LABEL.
$PLAB(<F>s,\$T); PLACE LABEs L FOR ELSE DESTINATION.
 DESTINK6NHw Q%
	IFB <AQ(>,<
							SETZIQH	T2,
		>
	 IFNBQh <A>,<
							MROVE	T2,A
		>
	R(						PUSHJ	SP,.EMITCODE
	SP,.EK:$;r 8
	A K:$@ \  
$POP($TY\@PES,$T)
IFE $TYP\`ES-$LOC,<
$.==$L]CNT
							SUB	S] P,[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;*
			a				POP	SP,LLEXEXa ;*
$POP($TYPES,$a@T)
>
IFN $$SP,<a`
$EXAMINE($TYPESb,$T)
IFE $TYPES-b $PROC,<
							Pb@OPJ	SP,0;*
$POP(b`$TYPES,$RCNT)
$PcOP($LCNT,$LRCNT)
$POP($NEWCT,$NEWc@CT)
$PLEVEL==$PLc`EVEL-1
>>
IFE $d$SP,<
$ENDALL
>P,<
$ENDALL
>KK`P KK@P KK=Q KN-@ WHL
		SELTH=Wh=ESELTH
							TXDNE	DEL,STOPS;*
X(							GOTO	.+4+SXHELTH;*
		TEST(E,XhFL,ERRL);*
					Y		PUSHJ	SP,.ERR;*Y(
		ESELECT(A);*YH
							GOTO	.-4-SELTH;*
		.-4KN-I1 KHd
							LKhDB	T,DCBYTE;*
		L					PUSHJ	SP,@ETL(ABLE(T);*
						LH	NOOP	.ESEL!A;*
	P	.ESEL!A;*Q @Kc+q 2p2
%EXPROC(3<A,B,C,D,E,30F,G,H,I,J,K,3PL,M,N,O,P,Q3p,R,S,T,U,V,W,X,Y>)
V,Kc[SQ aL:@ 5h#2
							H6LLZ	A,LEXEX-B+S6(YM;*
							TLZ	A,$LEXSA;*
		L:` 6h#8
							M7OVE	A,LEXEX+1-B+SYM;*
	X+1-BL:%q 4H#*
							M4hOVE	A,OP;*
				5			ANDI	A,$OPDSC5(;*
							LSH	A,-10;*
	LSH	AL:exw 4# 
							HRRZ	A,B;*
	HL; 7H#@
							H7hLLZ	A,LEXEX-B+S8YM;*
							TLZ	A,$LEXBL;*
		L;&(7 2h#
							H3LRZ	A,B;*
				3(			ANDI	A,$TRANK3H;*
							LSH	A,-14;*
	LSH	AL;' 1h#
							H2LRZ	A,B;*
				2(			ANDI	A,$TYPE;*
	I	A,$TYPE;MM@ `H
							P`hUSHJ	SP,.FAIL;*
a	RADIX	10;*
	XLIa(ST
							XWD	<.aH.B>!<..C>,A;*
	LIST
	RADIX	8;*
	
	RADIX	8;M\P 70C2
%FAKE(<7PA,B,C,D,E,F,7pG,H,I,J,K,L8,M,N,O,P,Q,80R,S,T,U,V,W,X,Y>)
V,W,M
{8A  M
{8M
d^A  M
d^M9A  M9M$: a(&REOPEN(A)aH
							MOVE	T2,ahA
							PUSHJ	bSP,.FETCH
							MOVE	A,T4
		M$ s`4
$POP($TYtPES,$T); UNSTACK t LAST ITEM
IFE $Tt@YPES-$ELSE<; WE Ht`AD AN ELSE PART
u$PLAB(<S>,\$T); Pu ALE THE SKIP LABEu@L
>
IFE $TYPES-u`$THEN,<; WE ONLY vHAD A THEN PART
v $PLAB(<F>,\$T); Pv@LACE THE FALSE LABEL.
>FALSE LAM'DY =#r
	IFNB <=(A>,<
							MOVE=H	T,A;*
	>
	IFN=hB <B>,<
							>MOVE	T1,B;*
	>(
							PUSHJ	SP,.ABSFIX;*
	SP,M'D >h$
	IFNB <?A>,<
							MOVE?(	T,A;*
	>
	IFN?HB <B>,<
							?hMOVE	T1,B;*
	>
							PUSHJ	SP,.ADDFIX;*
	SP,M'F)6 :H#d
	IFNB <:hA>,<
							MOVE;	T,A;*
	>
	IFB;( <B>,<
							P;HUSHJ	SP,.RAFIX;*
	>
	IFNB <B>,<<
							MOVE	T1,<(B;*
							PUSH<HJ	SP,.ADRFIX;*
	>P,.ADRFIX;*
	M'F\A  M'F\M0P M:d]RA  M:d]RM?X6 Z ^
$T==$LCNZ@T+$LRCNT+$NEWCT
Z`IFN <$PLEVEL-PMAX[>*$LCNT,< ; ACCOU[ NT FOR PUSHED DIS[@PLAY REG
$T==$T+[`1
>
$DEFST(A,\$T,\SP);
(A,\M?x9 40+2
%FORWARD4P(<A,B,C,D,E,4pF,G,H,I,J,K5,L,M,N,O,P,50Q,R,S,T,U,V,W,X,Y>)
V,MN-I1 NHx
							LNhDB	T,DCBYTE;*
		O					PUSHJ	SP,@FTABLE(T);*
	@FTO `A==BVBIT
BVBIT==BVBIT_1
VBIT==BVBIT_1
O>d@P O?%p +QtKA  QtKS m p
$BTYPE==m@$IF
$LABCNT==$LAm`BCNT+1
$PUSH($IFn,$LABCNT)
$DEFTF(\$LABCNT)DEFTFS:  ~0s
							AOS	A;*
					AS:$^A  S:$^U>M` G$@
	IFNB <G(A>,<
							MOVEGH	T,A;*
	>
				Gh			HLRZM	T,CAX;*
							PUSHJ	SP,.RAFIX;*
		SP,WA  WW&eH< I($J
							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 Ih$R
							MJOVEI	T,A13+1;*
	J(						MOVEM	T,LAC;*
	OVEM	T,LACY)9 Kh$b
							MLOVE	T,A;*
					L(		MOVEM	T,LAC;*
	OVEM	T,LAC;*
Y8; Jh$Z
							MKOVE	T,LAC;*
				K(			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>
@ V(%D
	IFNB <VHB>,<
							MOVEVhI	T1,B
		>
	 IWFB <A>,<
						W(	HRLI	T1,<MOVE 0,WH(SYM+1)>_-22
		>Wh
	 IFNB <A>,<
X							HRLI	T1,<MX(OVE 0,(A)>_-22
XH		>
							PUSHJ	SP,.LOAD
	SHJY>
H` [h%p
	IFNB <\B>,<
							MOVE\(I	T1,B
		>
	 I\HFB <A>,<
						\h	HRLI	T1,<SETCM 0],(SYM+1)>_-22
		](>
	]IFNB <A>,<
							HRLI	T1,<]hSETCM 0,(A)>_-22^
		>
							PUSHJ	SP,.LOAD
	SY>
K@ Y%Z
	IFNB <Y(B>,<
							MOVEYHI	T1,B
		>
	 IYhFB <A>,<
						Z	HRLI	T1,<MOVN 0,Z((SYM+1)>_-22
		>ZH
	 IFNB <A>,<
Zh							HRLI	T1,<M[OVN 0,(A)>_-22
[(		>
							PUSHJ	SP,.LOAD
	SHJY> 8pO2
%LOCAL(<9A,B,C,D,E,F90,G,H,I,J,K,9PL,M,N,O,P,Q,9pR,S,T,U,V,W,X,Y>)
V,WY>~ {^
$LABCNT={ =$LABCNT+1
$PLAB{@(<T>,\$LABCNT)
${`PUSH($LOOP,$LABCNT)($LOOP,$LABCNY?P YC.: p YN-@ Z`
		SELTH=Z(=LSELTH
							TZHDNE	DEL,STOPS;*
Zh							GOTO	.+4+S[ELTH;*
		TEST(E,[(FL,ERRL);*
					[H		PUSHJ	SP,.ERR;*[h
		LSELECT(A);*\
							GOTO	.-4-SELTH;*
		.-4YN-I1 Mp
							LM(DB	T,DCBYTE;*
		MH					PUSHJ	SP,@LTMhABLE(T);*
						N	NOOP	.LSEL!A;*
	P	.LSEL!A;* 9H#P
							M9hOVE	T,[A];*
			:				PUSHJ	SP,.MABS;*
	J	SP,.MAB[
							P8hUSHJ	SP,.PCALL;*
							NOOP	A;*
				NOOP	A;*[> bH&
							PbhUSHJ	SP,.MOB;*
	c						NOOP	A;*
				NOOP	A;*
[>&[ 0i
SALL
Q.PA==$Q;
EXTERNALp B.A;
INTERNAL C.A,Q.A;
C.A:0

DEFINE $BASE P<B.A>

%TITLE(pA,ALGOL COMPILER MODULE A)

; 0SET UP SOME CHECKPS:

$CHKDEF(<SPp,PMAX,RBASE,RMAX>)

; SET UP ASS0EMBLY TIME VARIABPLES:

$ECNT==0	p		; NUMBER OF MACRO ERRORS FOUND
0$LABCNT==0		; UNIPQUE LABEL COUNTERp
$$SP==0			; ASSEMBLY TIME STACK 0POINTER
$$SPMAX=P=0		; RECORD OF MpAX OF $$SP
$PLEVEL==0		; DEPTH OF0 PROCEDURE NESTINPG
$ALLOW==0		; RpECORD OF WHICH CO	NSTRUCTS ARE ALLO	0WED

; COUNTERS	P USED FOR SPACE A	pLLOCATION:

$NE
WCT==0		; LEFTOP 
0REGISTER
$LCNT==
P0			; LOCALS
$LR
pCNT==0		; REGISTERS LOCAL TO PROCE0DURES
$RCNT==0		P	; REGISTERS LOCApL TO CURRENT PROC
EDURE
$MCNT==0		
0	; LOW SEGMENT AR
PEA FOR OWNS AND N
pON STACK
			;OVEOCALS

SION LOCALS

]I A  ]I ]6I A  ]6I ]I A  ]I ]-@A  ]-@]-I6 ;h`
							M<OVE	T,NDEL;*
	TEL(A)
	;*
	TE]-KR D"
							MD(OVE	T,NDEL;*
	TNEL(A)
	*
	TN]=Kx Jp_
							PKUSH	SP,LLEXEX;*
K0							PUSH	SP,LCKPOMPNAME;*
$NEWCTKp==2
$PUSH($NEW,0)
$PUSH($NEW,0]>-mP @]>~ + ]?&= RH"
	IFN $BTRhYPE-$AS,<
						S	TDNE	DEL,STOPS;*S(
							GOTO	FALSHSE;*
	>IFE $BTYPShE-$AS,<
							TTDNN	DEL,STOPS;*
T(							GOTO	TRUE;*
	>GOTO	TRUE;]?&KxQ `z]OMPA  ]OMP_M0P _(<P _
}pP _ zT
$POP($TYz PES,$T)
$JLAB(<Wz@>,\$T)
$PLAB(<F>,\$T)
$PLAB(<F>_@A  _@_RD[@P _^p FP9
$OWNN(<FpA,B,C,D,E,F,GG,H,I,J,K,L>)
I,J,K,La P aNI P a3-j` Rh% 
	IFB <AS>,<
							SETZIS(	T2,
		>
	 IFNBSH <A>,<
							MShOVE	T2,A
		>
	T						PUSHJ	SP,.PLUNK
	HJ	SP,.Pa3-jt TH%.
	IFB <ATh>,<
							SETZIU	T2,
		>
	 IFNBU( <A>,<
							MUHOVE	T2,A
		>
	Uh						PUSHJ	SP,.IPLUNK
	J	SP,.Ia6P a?>$  ua?>$@ u a?>$` u@a?>% u`a?>%  vaJ,h1A  aJ,h1aJ|92 L0
$PLEVEL=LP=$PLEVEL+1
IFG $LpPLEVEL-PMAX,<
$EMRROR(<PROCEDURES M0NESTED MORE THAN MPPMAX >)
>
$PUSHMp($NEWCT,$NEWCT)
N$PUSH($LCNT,$LRCNN0T)
$PUSH($PROC,$NPRCNT)
$LRCNT==0
$LCNT==0
$RCNT=O=0
$NEWCT==0

O0IFNDEF A,<
DEFIOPNE A
<
							OpPUSHJ	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 5p72
%REGISTE6R(<A,B,C,D,E60,F,G,H,I,J,6PK,L,M,N,O,P,6pQ,R,S,T,U,V,W,X,Y>)
Ve~	7 MH$v
	IFB <AMh>,<
							SETZ	NT,
		>
	 IFNB <N(A>,<
							MOVNHEI	T,A(REV)
		>Nh
							PUSHJ	SP,.REOPEN
	J	SPeKx e(,
							MeHOVE	STOPS,A;*
	E	STOPS,A;*
	e0P e4\@ Lh$h
							MMOVNI	REV,SYM;*
	NI	REV,SYM;*
	e24M@ t`e268@ t@e6P f:@ ."x
							M.(OVE	T,LEXEX;*
		.H					TLZ	T,$LEXBL.h;*
							OR	T,/A;*
							MOVEM	T,LEXEX;*
	EMf:` /H"~
							M/hOVEM	A,LEXEX+1;*
	A,LEXEX+1;*f; 0(#

							M0HOVE	T,LEXEX;*
		0h					TLZ	T,$LEXSA1;*
							OR	T,1(A;*
							MOVEM	T,LEXEX;*
	EMg } n
$POP($TY}@PES,$T)
$PLAB(<F}`>,\$T)
$UNDEFTF($TCNT)$UNDEFTF(g4\z ch 
							MdOVEM	STOPS,A;*
	M	STOPS,A;*
geXq p
	SKIPN	TARGMC
	GOTO	A		0; KA TARGET
	SKIPPN	SRCEMC
	GOTO	pB		; KI TARGET, KA SOURCE
ET, gl\Y b(
							PbHUSHJ	SP,.SEMERR;*bh
XLIST
RADIX 10c;*
							XWD	Bc(,A;*
RADIX 8;*
LIST
	IX8;*p
							SETZM	A;*
			Sg%{R 4(*
	$HALVE(4HB);
	IFN LH,<
4h							TLO	A,LH;5*
	>IFN RH,<
		5(					IORI	A,RH;*
	>ORI	A,RH;*g&= f4
							Sf(AVESTOPS(A);*
	fH						ADDSTOPS(B);*
	DSTOPS(Bg&@ 0{
							SETOM	A;*
			Sg')9 5h6
	$HALVE(6B);
	IFN LH,<
6(							TLZ	A,LH;6H*
	>IFN RH,<
		6h					ANDCMI	A,RH;*
	>CMI	A,RHg
	SETZERO(FL,A)
	TZEROg2F0 Th
	IF DEL \HEQ LEFT BRACKET
\h							CAME	DEL,Z]LBRA;*
							GO](TO	FALSE;*
	 THE]HN
	  BEGIN
	   ]hSBRACK;
							N^OOP	.SSEL;
	  EN^(DD;
	FI;
	IF DE^HL EQ DOT
							^hCAME	DEL,ZDOT;*
_							GOTO	FALSE_(;*
	 THEN
	  BE_HGIN
	   SDOT;
	_h						NOOP	.SSEL;`
	  ENDD;
	FI;
	 ENDD;
	FI; E$4
							HE(RRZ	T,RA;*
					EH		HRL	T,CAX;*
		Eh					MOVEM	T,A;*F
							HRLZI	T,F(<JRST 0>_-22;*
	FH						PUSHJ	SP,.MABS;*
	J	SP,.MgN-@ U8
		SELTH=U(=SSELTH
							TUHDNE	DEL,STOPS;*
Uh							GOTO	.+4+SVELTH;*
		TEST(E,V(FL,ERRL);*
					VH		PUSHJ	SP,.ERR;*Vh
		SSELECT(A);*W
							GOTO	.-4-SELTH;*
		.-4gN-I1 I(X
							TIHRNN	FL,TRPOFF;*
Ih							PUSHJ	SP,.JESBLK##;*
						J(	LDB	T,DCBYTE;*
JH							PUSHJ	SP,@JhSTABLE(T);*
				K			NOOP	.SSEL!A;*
	P	.SSEL!A;gN-MP gRI6 HH$F
							HHhRLZI	SYM,$STMT!A;*
	M,$STMT!AgR A  gR gR~
`P gSyP gSI1P gSY  Dh&
	SETONE(FL,A)
	ETONE(gS: &0(SYM)gS: &1(SYM)
gWwP gW
rP gW
|P gfhP gfn)9 Bh$$
							MCOVEM	LOP,SYM;*
	C(						MOVE	T,LLEXCHEX;*
							MOVEChM	T,LEXEX;*
				D			MOVE	T,LCOMPNAD(ME;*
							MOVEDHM	T,COMPNAME;*
	T,COMPNAME;*
	gfn8; @H$
							M@hOVEM	SYM,LOP;*
	A						MOVE	T,LEXEA(X;*
							MOVEMAH	T,LLEXEX;*
				Ah			MOVE	T,COMPNAMBE;*
							MOVEMB(	T,LCOMPNAME;*
	,LCOMPNAME;*
	gfn=Q hP h:
8` ( 
		T.INITH(A)
							TLNEh	T.REGZ,$AMAC;*
							GOTO	FALSE;*
		OTO	FALSEh:
P H!.
	T.INIT(hA)
							TLNN	T.REGZ,$ARR!$ARC;(*
							TLNN	T.HREGZ,$DECL;*
			h				GOTO	FALSE;*
	GOTO	FALSE;*
		T.INITx(A)
							TLNEx(	T.REGZ,$ARC;*
	xH						GOTO	FALSE;*
		OTO	FALSE;h:,@  "
	T.INIT((A)
							TLNE	HT.REGZ,$KIND;*
	h						TLNE	T.REGZ,$KIND-$ARR;*
		(					GOTO	FALSE;*
	GOTO	FALSE;*h: qH
		T.INITqh(A)
							TLNEr	T.REGZ,$TYPE-$B;r(*
							GOTO	FALSE;*
		OTO	FAh: k
		T.INITpH(A)
							TLNEph	T.REGZ,$TYPE-$C;q*
							GOTO	FALSE;*
		OTO	FAh:yr (!8
	T.INIT(HA)
							TLNN	hT.REGZ,$SINGLE
							GOTO	FALSE
			GOTO	FALSE

		T.INITh(A)
							TLNE	T.REGZ,$CONST;*
							GOTO	FALSE;*
		OTO	FALSh:$Xv (! 
	T.INIT(HA)
							TLNN	hT.REGZ,$DECL;$
							GOTO	FALSE;$
	GOTO	FALSE;h:/
 k( 
	T.INIT({HA)
							TLNE	hT.REGZ,$KIND;*
							TLNE	T.REGZ(,$KIND-$EXP;*
		H					GOTO	FALSE;*
	GOTO	FALSE;*h:5{@ 
h v
	T.INIT(
							TLNE	0;*
							TLNN	T.REG
							GOTO	FALSE;*
	(						TLNE	T.REGZH,000200;*
						h	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5|V h!
	T.INIT(A)
							TLNE	(T.REGZ,000300
		H					TLNN	T.REGZ,h000400
							GOTO	FALSE
			GOh:5}@ (!

	T.INIT(HA)
							TLNE	hT.REGZ,000400;*
							TLNN	T.REG(Z,000200;*
					H		GOTO	FALSE;*
	h						TLNE	T.REGZ,000100;*
						(	GOTO	FALSE;*
	GOTO	FALSE;*
	h:5}`  b
	T.INIT((A)
							TLNE	HT.REGZ,$STATUS;*
							TLNE	T.RE
GZ,$STATUS-$FOW;*
(
							GOTO	FALSE;*
	GOTO	FALh:H jhj
		T.INITlh(A)
							TLNEm	T.REGZ,$TYPE-$I;m(*
							GOTO	FALSE;*
		OTO	FAh:M[  ol
		T.INIT}(A)
							TLNE}(	T.REGZ,$AM-$IMM;}H*
							GOTO	FALSE;*
		OTO	FAh:Mj: gHF
	IFIDN <gh$BTYPE><$AS>,<$ERhROR TEST CANT BE h(USED IN  AS>
	IFhHB <A>,<T.REGZ==ShhYM>
	IFNB <A>,<T.REGZ==A>
	<h:N+ H 8
							ThLNN	A,$IRLR;*
							GOTO	FALSE;*
	GOTO	FALSE;h:` t&
		T.INITt((A)
							TLNEtH	T.REGZ,$TYPE-$L;th*
							GOTO	FALSE;*
		OTO	FAh:f  o(
		T.INIToH(A)
							TLNEoh	T.REGZ,$TYPE-$LRp;*
							GOTO	FALSE;*
		OTO	Fh:p u(0
		T.INITuH(A)
							TLNEuh	T.REGZ,$TYPE-$N;v*
							GOTO	FALSE;*
		OTO	FAh:}i  yN
		T.INITy((A)
							TLNEyH	T.REGZ,$VAR1;*
yh							GOTO	FALSE;*
		OTO	FALSEh:~	9 h!d
							MOVE	T,OP;*
					(		CAME	T,A;*
		H					GOTO	FALSE;*
	GOTO	FALSE;*h:~{@ 	( T
	T.INIT(	HA)
							TLNE		hT.REGZ,$STATUS;*

							TLNE	T.RE
(GZ,$STATUS-$OWN;*
H
							GOTO	FALSE;*
	GOTO	FALh;
  vH:
		T.INITvh(A)
							TLNEw	T.REGZ,$PHI;*
	w(						GOTO	FALSE;*
		OTO	FALSE;h;+` h 0
	T.INIT(A)
							TLNE	(T.REGZ,200000;*
H							TLNN	T.REGhZ,100000;*
							GOTO	FALSE;*
	GOTO	FALSE;*
	h;L@ H!D
	T.INIT(hA)
							TLNN	T.REGZ,$AMAC;*
	(						TLNN	T.REGZH,$INDC
							GOTO	FALSE
			GOh; mht
		T.INITn(A)
							TLNEn(	T.REGZ,$TYPE-$R;nH*
							GOTO	FALSE;*
		OTO	FAh;Y` H F
	T.INIT(hA)
							TLNE	T.REGZ,$STATUS;*
							TLNE	T.REHGZ,$STATUS-$REG;*h
							GOTO	FALSE;*
	GOTO	FALh;[ !p
							M(OVE	A,OP;*
				H			TRNE	A,$OPPRIh-$RELPRI;*
							GOTO	FALSE;*
	GOTO	FALSE;*
	h;]@ H!x
							ThRNE	REV,SYM-LOP;*
							GOTO	FALSE;*
	GOTO	FALh; rh
		T.INITs(A)
							TLNEs(	T.REGZ,$TYPE-$S;sH*
							GOTO	FALSE;*
		OTO	FAh;  {hd
		T.INIT|(A)
							TLNE|(	T.REGZ,$STATUS-$|HSIM;*
							GOTO	FALSE;*
		OTh;S ~v
		T.INIT~((A)
							TLNE~H	T.REGZ,$SINGLE;*~h
							GOTO	FALSE;*
		OTO	FALh;J` !L
							T(LNE	A,$STACK;*
H							GOTO	FALSE;*
	GOTO	FALSEh;%| H"
							ThEST(E,STOPS,NOTTO P);*
							GOTO	FALSE;*
	GOTOh;&{` z(X
		T.INITzH(A)
							TLNEzh	T.REGZ,$VAR2;*
{							GOTO	FALSE;*
		OTO	FALSEh;4@ kHb
		T.INITkh(A)
							TLNEl	T.REGZ,$KIND-$VAl(R;*
							GOTO	FALSE;*
		OTO	h;5S !Z
	T.INIT((A)
							TLNN	HT.REGZ,777770;*
h							TRNN	T.REGZ,777777;*
					(		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` <(l
	IFN $BT<HYPE-$AS,<TEST(N,T<h,A)
							GOTO=	FALSE;*
	>IFE $=(BTYPE-$AS,<TEST(E=H,T,A)
							GOTO	TRUE;*
	>GOi@ 2h
	$HALVE(3C)
	IFN LH,<
	3(						TLNA	B,LH3H;*
	>IFN RH,<
	3h						TRNA	B,RH;*
	>NA	B,RHi E(4
	IFN $BTEHYPE-$AS,<TEST(N,FEhL,A)
							GOTFO	FALSE;*
	>IFE F($BTYPE-$AS,<TEST(FHE,FL,A)
							GOTO	TRUE;*
	>i"-` n@
$UNDEFTFn`($FCNT)
$POP($TYoPES,$T); UNSTACK o LAST ITEM
$PLAB(o@<T>,\$T); AND PLAo`CE IT HERE
$PUSHp($THEN,$T); AND Cp HANGE TYPE TO THEN.
TYPE TO THEi#-j`A  i#-j`i8th &h"@
							T'LNE	A,$AM-$ACC;*'(
							GOTO	TRU'HE;*
							TRNN	'hA,777777;*
				(			GOTO	FALSE;*
	GOTO	FALSE;*
i8tq (H"H
							T(hLNN	A,$AM-$ACC;*)
							GOTO	FALSE;*
	GOTO	FALi8tT %h"2
							T&LNN	A,$ARC;*
		&(					GOTO	FALSE;*
	GOTO	FALSE;*i8t  #H" 
							T#hLNN	A,$TYPE-$B;*$
							GOTO	FALSE;*
	GOTO	FALi8u  H"
							T hLNN	A,$TYPE-$I;*!
							GOTO	FALSE;*
	GOTO	FALi8u@ $H"*
	T.INIT($hA)
							TLNN	%T.REGZ,$TYPE-$L;*%(
							GOTO	FALSE;*
	GOTO	FALi8uL@ "H"
							T"hLNN	A,$TYPE-$LR;#*
							GOTO	FALSE;*
	GOTO	FAi8u| +h"d
							M,OVE	T,OP;*
					,(		CAMN	T,A;*
		,H					GOTO	FALSE;*
	GOTO	FALSE;*i8v  !H"
							T!hLNN	A,$TYPE-$R;*"
							GOTO	FALSE;*
	GOTO	FALi8v:7 )H"P
							T)hLNN	A,$SINGLE;*
							GOTO	FALSE;*
	GOTO	FALSi8vKx -"l
							T-(EST(N,STOPS,NOTTO-HP);*
							GOTO	FALSE;*
	GOTOi8vj9 *H"Z
	T.INIT(*hA)
							TLNN	+T.REGZ,777770;*
+(							JUMPN	T.REGZ,FALSE;*
	REi:-@ >z
	IFN $BT>(YPE-$AS,<TEST(E,T>H,A)
							GOTO>h	FALSE;*
	>IFE $?BTYPE-$AS,<TEST(N?(,T,A)
							GOTO	TRUE;*
	>GOi:<  GB
	IFN $BTG(YPE-$AS,<TEST(E,FGHL,A)
							GOTGhO	FALSE;*
	>IFE H$BTYPE-$AS,<TEST(H(N,FL,A)
							GOTO	TRUE;*
	>i>@ ^H&
	IFE A-^h1, <
							PUSH_J 	SP,.TOCT1
		>_(
	IFE A-2, <
	_H						PUSHJ	SP,.T_hOCT2
		>
	IFNB `<B>,<
							TL`(Z	B,$AM
							`HTLO	B,$CT
					`h		HRR	B,T2
		>
	R	B,T2
		>@P iJd P!iJeySP  iJ}`P @iKySP o"MI  wB
$BTYPE==w $WHILE
$LABCNT==w@$LABCNT+1
$PLAB(w`<W>,\$LABCNT)
$PxUSH($WHILE,$LABCNx 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 0
							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  &(B.'NCOMP	
,z7P 	
`P `	DXu 2PW $EXAMINE(:0$TYPES,$T)
IFE $:PTYPES&A,<
$ERRO:pR(<ILLEGAL CONSTRUCT>)
> CONSTR	E9 ;0o IF1,< IRP;P A,< 
IFB <A>,;p<STOPI> 
IFNB <<A>,< IFNDEF A,<
$ERROR(< A HAS <PNOT BEEN GIVEN A <pVALUE >,)
>
IFD=EF A,< $T== A&7=077777777760
IFN =P$T,<
$ERROR(< A=p HAS AN INVALID VALUE >,)
>>>>>	}lzP 	 P 	P 	,;P 	,<xP 	,` -iDEFINE A <@-B(SP)>
A 	,k .qDEFINE A <-B(C)>
 A 	,lz -PmDEFINE A <@-B(C)>
A 	,m j`f ; MACRO TkO DEFINE THE TRUEk  AND FALSE LABELSk@
$TCNT==0
$FCNTk`==0

DEFINE TRUlE < $AT;*
$TCNTl ==$TCNT+1
 >

l@DEFINE FALSE < $l`AF;*
$FCNT==$FCNT+1
>CNT==$FCN	-Lz ?P}PURGE $SA PURGE $SA	N8`P 	xP 	M`P$	f9 P 	tH6 @	
$Q==$MCN@0T;
IF2,<
$T==0
REPEAT $$SPMAX,<@p$DELSTACK(\$T)
$AT==$T+1>
>
XLIST
LIT
LIST
S	tIP 	+y /}
IF1,<
P/0RINTX ******ERROR/P A ******
>
$ECNT==$ECNT+1
E	D4 'pC
$GET(\$$(SP)
A==$ITEM_-^(0D18
B==$ITEM&777777
=$ITEM&77	FwP 	HP 	OP 	.@ &P5 $ITEM==$SA  $ITEM==$S	"
	LH==<Ap>_-^D18
	RH==<A(>&777777
	IFN LH*RH,<$ERROR(BOTH (HALVES OF IMMEDIAPTE ARE NON-ZERO)
	>EPNON-ZERO)
	&0P	&mPP	&tH`P	'P 
; GENERAf TE A JUMP TO THEf@ CREATED LABEL
	f`						JRST	$BA;*
	JRST	$BA;	/>=P 	2/VP'~	2/
pP 	2|0P @	2}iqP 	2}|P 	7pP"	7-M 0

DEFINE00 A(A,B,C,D,E,F,G0P,H,I,J,K,L,A1,A2,0pA3,A4,A5,A6,A7,A81,A9,B1,B2,B3,B4)
<
%A(<A,B,C,D,1PE,F,G,H,I,J,K,L,A1p1,A2,A3,A4,A5,A6,2A7,A8,A9,B1,B2,B3,B4>)
>1,B2,B3	:.pP!	:/+xP!	?LqP 	?LxP 	?
TP x	?=k@ E1 IRP A,< E0
IFB <A>,<STOPIEP> 
IFNB <A>,<
EpA==$MCNT+$BASE
F$MCNT==$MCNT+1
>>NT==$MCNT+1
>	B@P 	BEP ~	B`P 	Bd@ d@,
; PLACE d`A CREATED LABEL eFORMED BY CONCATEe NATING A AND BLAe@L
							$BA:	;*
XALL
BA:		B~ *pe; UNSTACK +TWO HALF WORDS
I+0FE $$SP,<$ERROR(<+PSTACK UNDERFLOW>)+p>
IFN $$SP,<
$G,ET(\$$SP)
A==$I,0TEM_-^D18
B==$I,PTEM&777777
$$SP==$$SP-1
>$$SP=	CZ .Pu
PRINTX A B

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

$PUT(\	C.@ '9 $SA== $ITEM  $SA== $I	C4P 	JP 	J,z9P  	J-@P 	J-LP @	NP @	NP 	N-I@P 	N.,VP$	N.Hw >0y $T==1
IR>PP A,< 
IFB <A>>p,<STOPI> 
IFNB <?A>,<
$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 g R ; REMOVE g@TRUE AND FALSE DEg`FS.
IFE A,<$ERRhOR(<TRUE/FALSE UNh USED IN BOOLEAN>)h@>

DEFINE TRUE<h` ERROR;*
$ERROR(i<TRUE NOT IN A BOi OLEAN EXPRESSION i@>)
>

DEFINE Fi`ALSE< ERROR;*
$EjRROR(<FALSE NOT Ij N A BOOLEAN EXPRESSION >)
>XPRE	^EP 	`P$F
W AP IRP A,< Ap
IFB <A>,<STOPIB>

IFNB <A>,<

IFNDEF A,<
DBPEFINE A
<
				Bp			PUSHJ	SP,.A;*C
>>
EXTERNAL .A;
>>TERNAL.$T==0
IRPQ` A,<
IFB <A>,<RSTOPI>
IFNB <A>R ,<
$DEFLC (A,\$R@T,\DBASE)
$T==$T+1
>>)
$T==$T~-p CP%
IRP A,<Cp 

IFB <A>,<STDOPI>

IFNB <A>D0,<

DEFINE A
DP<
							PUSHJ	SP,.A;*
>>>J	S2|86 SN
IFN $PLES VEL-PMAX,< 
$T==S@DBASE+$PLEVEL-1
S`>
IFE $PLEVEL-PMTAX,< ;ACCESS LOCAT LS BY STACK POINTT@ER
$T==SP
>
IRT`P A,< 
IFB <A>U,<STOPI> 
IFNB <U A>,<

$DEFLC(U@A,\$LCNT,\$T)
$LU`CNT==$LCNT+1
>>	V; END OF IRP
IFGV  $LCNT,<
$PUSH($V@LOC,0)
IFN $PLEVV`EL-PMAX,< ; SAVE WOLD DISPLAY
				W 			PUSH	SP,$T;*
W@							HRLI	$T,(SW`P);*
>
$.==$LCNXT
							ADD	SP,X [XWD $.,$.];*
		X@					JUMPL	SP,.+2X`;*
							JSR	.SYTOVERFLOW;*
IFN Y $PLEVEL-PMAX,< ; Y@SET UP NEW DISPLAY`Y
							HRR	$T,SP;*
>>HRR	$T,J,z9 GPS 
IRP A,Gp< 
IFB <A>,<STOHPI> 
IFNB <A>,<H0
A==RBASE-$RCNTHP
$PUSH($REGIS,$RHpCNT)
							PUSHI	SP,A;*
$RCNT==I0$RCNT+1
$LRCNT==IP$LRCNT+1
>> ; ENIpD OF IRP
IFG $RCJNT-RMAX,< $ERROR(J0<TOO MANY LOCAL REGISTERS >)>
RVuR h$UNIVERSAL A - B, 10B(310)(, EUROPEAN SOFTWAHRE 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