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