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