Google
 

Trailing-Edge - PDP-10 Archives - BB-KL11J-BM_1990 - t20sub/macsym.unv
There are 97 other files named macsym.unv in the archive. Click here to see a list.
x,Uc@P C4@ zH'\
	..NAC==zh0		
	IRP A,<
	{  .ACV1 (A)>		
{(	.ACV3 (\..NAC)		{H
	DEFINE ENDAV.<.ENAV1 <A>>V.<C' T@$OP%%IA	(A,B,ADD,SUB)(AC:$S@ 6x#7
	..TAGF (<JUMPN A,>,) C:$s@ 7x#?
	..TAGF (<JUMPLE A,>,)C:$y' 88#C
	..TAGF (<JUMPL A,>,) C:%C@ 98#K
	..TAGF (<JUMPGE A,>,)C:%I' 8x#G
	..TAGF (<JUMPG A,>,) C:%c@ 78#;
	..TAGF (<JUMPE A,>,) C:&' :x#Y
	..TAGF ;(<JN <A>,<B>,>,)N <A>,<B>,>,C:&G ;X#_
	..TAGF ;x(<JE <A>,<B>,>,)E <A>,<B>,>,C:' +@\
	TXZ A,<^-<B>>TXZ A,C:'	' 9x#O
	..TAGF (<JXN A,B,>,)C:'G :8#S
	..TAGF (<JXE A,B,>,)C:v:g 58#+
	TRNA
	..TAGF (JRST,)	C;< 4x#'
	..TAGF (JRST,)	..TAGF CO,,@ sX'1
	..TRR==sx10		
	RADIX 8
	t..NV==1			
	IRP t8A,<
	  .TRV1 (tXA)>		
	IFG ..NV-tx5,<PRINTX ?TOO MAuNY ARGUMENTS: A>u8
	JSP .A16,.ASSEuXT		
	RADIX ..TRRux		
	DEFINE ENDASv.<.ENSV1 <A>>
	.ENSV1 <A>>
	E>= @Qv@
	IFN FTSxHOW,..LOC==.

	
DEFINE	WORD(NAM,	8NUMB<1>),<
	IFN 	X<..MSK>,<..OFF==.	x.OFF+1> 

	..MS
K==0		
	FIELDM(N
8AM,<.FWORD>)	


X	..MSK==0		
	..O
xFF==..OFF+NUMB	

>

DEFINE	NXT8WRD(NUMB<1>),<
	X..MSK==0
	..OFF=x..OFF+NUMB

>


DEFINE	FILLER(N
8UM),<
	..FLG==PO
XS(..MSK)
	IFE ..
xMSK,<..FLG==-1>
	IFG.<^D<NUM>-<^D
	...MSK==MASK.(^D8<NUM>,<..FLG+^D<NXUM>>)
	IFN FTSHOxW,<
	  PHASE ..OFF
	  EXP ...MSK8
	>
	..MSK==..MXSK!...MSK
>

x

DEFINE	HWORD(nam),<
	..FLG==0	8	
	IFE ..MSK&.LHXALF,<FIELDM(nam,.xLHALF)
			  ..FLG==1>
	IFE ..FLG8,<..MSK==..MSK!.LXHALF
		   IFE ..xMSK&.RHALF,<FIELDM(nam,.RHALF)
		8		     ..FLG==1>
		   IFE ..FLG,<xNXTWRD
			      FIELDM(nam,.LHALF8) >
		  >
>

X
DEFINE	FIELD(NAxM,SIZ,POS),<
	..FLG==0		

	IFB 8<POS>,<IFB <SIZ>,X<
	  ...MSK==.RTxMSK(<<^-<<..MSK>>>>) 
	  IFE ...M8SK,<..OFF==..OFF+X1 
	    ..MSK==0x		
	    ...MSK==-1
	  >
	  FIEL8DM(NAM,<...MSK>)	X
	x..FLG==-1		
	>>

	IFNB <SIZ>,<.SIZ==^D<SIZ>8> 

	IFNB <POS>X,<		
	  FIELDM(NxAM,MASK.(.SIZ,POS)) 
	  ..FLG==-18		
	  ..BITS==MAXSK.(.SIZ,POS) 
	x>

	IFE ..FLG,<IFGE <^D<.SIZ>-^D836>,< 
	  WORD(NXAM,<^D<.SIZ>/^D36x>) 
	  IFN <<^D<.SIZ>-<^D<.SIZ>/^8D36>*^D36>>,<	
	X    FIELD(...,<<^xD<.SIZ>-<^D<.SIZ>/^D36>*^D36>>) 
8	  >

	  ..FLG=X=-1		
	>>

	IFxE ..FLG,<		
	  ..BITS==MASK.(^D<.8SIZ>,<^D<.SIZ>-1>X) 

	  REPEAT <x^D36-^D<.SIZ>+1>,< 
	    IFE ..FL8G,<	
	      IFE X<..BITS&..MSK>,< x
			..MSK==..MSK!..BITS 
		..FLG8==-1 
	       > X

	    IFE ..FLxG,..BITS==..BITS_<-1> 
	    >
	 8 >

	IFE ..FLG,X<		
	  ..BITS==MxASK.(^D<.SIZ>,<^D <.SIZ>-1>) 
	  . 8.OFF==..OFF+1	
	 X  ..MSK==..BITS		 x
	>

	MSKSTR(!A'NAM,\..OFFC,..!8BITS) 
	A.'NAM=!X=..OFF
	IFN FTSH!xOW,<
	  PHASE	A".'NAM
	  EXP	A'"8NAM
	>>

	..OL"XD==..BITS		
	..."xOLD==..BITS		

#>

DEFINE	BIT(N#8AM),<
	..BITS==L#XFTBT.(..OLD)	

#x	IFE ..BITS,<PRIN$TX ?NO ROOM FOR B$8IT IN LAST FIELD>$X

	A%'NAM==..B$xITS_<-<^D35-POS(.%..OLD)>> 
	A.'N%8AM==..OFF		

	M%XSKSTR(A'NAM,\..O%xFFC,..BITS) 
	I&FN FTSHOW,<
	  P&8HASE ..OFF
	  EX&XP A'NAM
	>

	&x..OLD==..OLD&<^-<'..BITS>> 

>
'8
DEFINE	FIELDM(NA'XM,MASK),<
	IFN M'xASK&..MSK,<	
	  (..MSK==0		
	  ..(8OFF==..OFF+1
	>X

	..MSK==..MSK!(xMASK	

	MSKSTR()A'NAM,\..OFFC,M)8ASK) 
	A.'NAM==)X..OFF
	IFN FTSHO)xW,<
	  PHASE	A.*'NAM
	  EXP	A'N*8AM
	>
>

DEFI*XNE ENDSTR(LENNAM<*xLEN>,LSTNAM<LST>)+,<

	IFN ..MSK,+8<..OFF==..OFF+1> +X

	A.'LSTNAM==+x..OFF	

	IFN FT,SHOW,DEPHASE

	,8..LOK==..LOK+1
	,XIFN ..LOK,<PRINTX,x ? MISSING BEGSTR->

	IF2,<
	  I-8FDEF ...MSK,<SUPP-XRESS ...MSK>
	  -xIFDEF ..BITS,<SUP.PRESS ..BITS>
	 .8 IFDEF .SIZ,<SUPP.XRESS .SIZ>
	  IF.xDEF ..MSK,<SUPPRE/SS ..MSK>
	  IFD/8EF ..OFF,<SUPPRES/XS ..OFF>
	  IFDE/xF ..FLG,<SUPPRESS0 ..FLG>
	  IFDEF08 ..LOK,<SUPPRESS 0X..LOK>
	  IFDEF 0x..LOC,<SUPPRESS .1.LOC>
	  IFDEF .18.OLD,<SUPPRESS ..1XOLD>
	  IFDEF ..1x.OLD,<SUPPRESS ..2.OLD>
	>

	IF128,<
	  IFDEF ...M2XSK,<.XCREF ...MSK2x>
	  IFDEF ..BIT3S,<.XCREF ..BITS>38
	  IFDEF .SIZ,<3X.XCREF .SIZ>
	  3xIFDEF ..MSK,<.XCR4EF ..MSK>
	  IFD48EF ..FLG,<.XCREF 4X..FLG>
	  IFDEF 4x..OFF,<.XCREF ..O5FF>
	  IFDEF ..L58OK,<.XCREF ..LOK>5X
	  IFDEF ..LOC,5x<.XCREF ..LOC>
	6  IFDEF ..OLD,<.X68CREF ..OLD>
	  I6XFDEF ...OLD,<.XCR6xEF ...OLD>
	>
7
	PURGE WORD,NXTW78RD,FILLER,HWORD,F7XIELD,BIT,FIELDM
7x
	A.'LENNAM==..8OFF-B
	IFN FTSH88OW,<RELOC ..LOC>>8X



	..MSK==08x		
	..OFF==B		
	A.D==B	

	98IFDEF ..LOK,<IFL 9X..LOK,<PRINTX ? N9xEW BEGSTR WITHOUT: ENDSTR>>

	..LOK==-1


	..L/5>0/BEG
	  E2 $x*/
	..NA==0%			
	IRP B,<
	%8  .BLCL2 B>		
	%XPUSH P,[..NA+1,,.%x.NA+1]	
	PUSHJ P,A		
   SHJ PE2|:g X 
	..SVBK	x		
	XMOVEI .A16,a	
	PUSH P,.A168
  DEFINE ENDBK.X <
	RET			
a:!				
	.POPX>:!E3XG 8*	
	..TRR=X=10		
	RADIX 8		x	
	..NA==2			
	 IRP A,<
	  ..NA 8=..NA+1>		
	IRP  XA,<
	  .BLSU1( xA,\..NA)	
	  ..N!A=..NA-1>
	..NV=!8=1			
	IRP B,<
	  .TRV1 (B)>		!x
  DEFINE ENDBS." <.ENBS1 <A>
		"8.ENSV1 <B>> 
	J"XSP .A16,.ENTER
	"x..NV-1,,..NV-1
	RADIX ..TRR1
	EJMj' S`%&{
W0.==A
W1.==B				;INITTHIALIZE BREAK MASKTh
W2.==C
W3.==D
==C
W3.==/[%0/0B,<
	/0QAB (/
0    ..SEJZ N@%	..V22==aN`
	..V1==a
	IFNOB <B>,<..V22==BO >
REPEAT ..V22-<O@a>+1,<	
	%%W==.O`.V1/^D32	
	%%X==P..V1-%%W*^D32	
	P IFE C,BRKC1 \"<%P@%W+"0">	
	IFN CP`,BRKC2 \"<%%W+"0"Q>
	..V1==..V1+1
		   >
.V1+1 Q@%
	WA.==WA.!<1B<%%X>>
AEJ\4@ R%	WA.==WAR .&<-1-1B<%%X>>
&<-1-1B<%%X>>
EJ\: M$j
%%FOO==M a
	BRK0 (%%FOO,B,0)
 (%%FOO,EJn:g U(%4
	BRINI. AUH,B,C,D	
	IRPCUh E,<	UNBRK. "E"V>	
	IRPC F,<	BRV(KCH. "F">	
	EXPVH W0.,W1.,W2.,W3.		
W1.,W2.,W3.	Ge@ ,GeLR +G@ N rOP%%CA (A,B,)OP%%CA (AGD Q`OP%%CA (A,B,A)P%%CA (AGDP O`~OP%%CA (A,B,E)P%%CA (AGDp P OP%%CA (A,B,G)P%%CA (AGDy  P`OP%%CA (A,B,GE)%%CA (AGE@ N`vOP%%CA (A,B,L)P%%CA (AGEI  O zOP%%CA (A,B,LE)%%CA (AGE` Q 
OP%%CA (A,B,N)P%%CA (AG?Z @4
	ASCIZ /`
COPYRIGHT (c) DIGITAL EQUIPMENT  CORPORATION A.
@ALL RIGHTS RESERVED.
/TS RESERVI  U8-
	..STR0 UX(.DECR0,,<A>,<B>)CR0,,<A>,<BI6= i`\
	A==<-1jB<C>+1B<C-D>> j 
	IF1,<IFDEF %Aj@,<PRINTX ?A ALREj`ADY DEFINED>>
	DkEFINE %A (OP,AC,k Y,MSK)<
	$A==<Zk@ B>		
	OP (<AC>,B'Y,MSK)><AC>I'7 V@4OP%%IN	(A,B,DIV)%IN	(AI<p  ;
	..SVLD	8		
a:!				
  DXEFINE OD. <
b:!x				
	.POPX>			
  DEFINE LOOP. <8
	JRST a>		
  XDEFINE TOP. <a>	x	
  DEFINE ENDLP. <b>		
  DEFIN8E EXIT. <
	JRST b>T. <
	JRST IKH1 h)Z
..TMSK==..MASK
..TNAC==.(.NAC-1
REPEAT ..HNAC,<
   IFN ..ThMSK,<
	..NUM==^L<..TMSK>
	..TMSK(==..TMSK-1B<..NUMH>
	IFE ..TMSK & h1B<..NUM+1>,<
		MOVE ..NUM,-..TNA(C(P)
		..TNAC==.H.TNAC-1>
	IFN ..hTMSK & 1B<..NUM+1>,<
		DMOVE ..NU(M,-..TNAC(P)
		.H.TNAC==..TNAC-2
h		..TMSK==..TMSK-1B<..NUM+1>>
	>>(
IFG ..NAC,<ADJSP P,-..NAC>
JSINh1 h)2
IFG ..NAC,<ADJSP P,..NAC>(
..TMSK==..MASK
..TNAC==..NAC-1
REPEAT ..NAC,<
   IFN ..TMSK,<
(	..NUM==^L<..TMSKH>
	..TMSK==..TMShK-1B<..NUM>
	IFE ..TMSK & 1B<..NU(M+1>,<
		MOVEM .H.NUM,-..TNAC(P)
h		..TNAC==..TNAC-1>
	IFN ..TMSK &( 1B<..NUM+1>,<
	H	DMOVEM ..NUM,-..hTNAC(P)
		..TNAC==..TNAC-2
		..T(MSK==..TMSK-1B<..NUM+1>>
	>>
.K,lz ln
	A==<-1l B<C>+1B<C-D>> l@
	IF1,<IFDEF %Al`,<PRINTX ?A ALREmADY DEFINED>>
	Dm EFINE %A (OP,AC,m@Y,MSK)<
	OP (<ACm`>,<@[EP. B'Y]>,MSK)>P. B'Y]>,MK+\Y`p0/Jp0/G4p0/J$5p0/GUN.,HK+`p0/Vp0/S4p0/V$7p0/SUNEMK3S@ #-....UjK7<z p 
	A==C	p@	
	IF1,<IFDEF %p`A,<PRINTX ?A ALRqEADY DEFINED>>
	q DEFINE %A (OP,ACq@,Y,MSK)<
	OP (<Aq`C>,<@[EP. B'Y]>,MSK)>P. B'Y]>,K:$Kg  =
	OD.K:%G #/....UK@p 68+[
	..I==0
	..X==0
	MAKRM.6x (..CON,..GET)
	7..CON <EXIND. ..I78,>
	IRPC A,<
	7X  ..SC==0
	  IFE7x "A"-"@",<..I==18
			..SC=1>
	  88IFE "A"-"(",<..C8XON <,>
			..SC=18x
			..X==1>
	  9IFE "A"-")",<
	98    IFE ..X,<PRIN9XTX %UNEXPECTED RI9xGHT PAREN IN EP. :MACRO>
			..SC=1:8>
	:XIFE ..SC,<
	   ..CON <A>>>:x
	IFE ..X,<
	  ;..CON <,0>>
	..C;8ON <
>
	..GET
   
>
	..GET
KCm 48+/
	  DEFIN4XE ..EP. (LOCN,PTE4xXT)
	    <PRINTX5 Location 'LOCN':58 PTEXT
	    >
	5X  ..EP.(\.,<A>)
	  PURGE ..EP.
	  URGE ..EP.
KJn9` K $\
	ERJMP	[K@TMSG <? A>
		 JSHLT]
A>
		 JKbMi ;x+_<<A>B1+<C>B5+<B>>B1+<Kc  L$d
   IF2,<L 
	IRP A,<
	IFNL@DEF A,<EXTERN A
	SUPPRE A>>>M&. \@dOP%%FP	(A,B,FADR)FP	(AM6. ^pOP%%FP	(A,B,FDVR)FP	(AM2  @L<<<A>B<POS(<B>)>>&<B>>M2$*g [%~
	..XX==<[(FLD(A,CM%FNC)>+[HB+<Z G>
   IFNB[h <D>,<..XX=CM%HP\P!..XX>
   IFNB \(<E>,<..XX=CM%DPP\H!..XX>
   IFNB <\hF>,<..XX=CM%BRK!]..XX>
	..XX
   ](IFNB <C>,<C>
 ]H  IFB <C>,<0>
 ]h  IFNB <D>,<POIN^T 7,[ASCIZ D]>^(
   IFB <D>,<IF^HNB <EF>,<0>>
 ^h  IFB <E>,<IFNB _<F>,<0>>
   IFN_(B <E>,<POINT 7,[_HASCIZ \E\]>
   _hIFNB <F>,<F>
    <F>,<F>
 M2$HG W%T

	..XX==<W(FLD(A,CM%FNC)>+WHB+<0,,F>
   IFNWhB <D>,<..XX=CM%HXPP!..XX>
   IFNBX( <E>,<..XX=CM%DPXHP!..XX>
	..XX
Xh  IFNB <C>,<C>
Y(IFB <C>,<0>
   IFNB <D>,<POYHINT 7,[ASCIZ DYh]>
   IFB <D>,<ZIFNB <E>,<0>>
 Z(  IFNB <E>,<POINZHT 7,[ASCIZ \E\]>7,[ASCIZ \E\]>M7. ]@lOP%%FP	(A,B,FMPR)FP	(AM7p H`$J
	HRROI .IAC2,[ASCIZ \A\]
	MOVEI .AC3,0
	SOUTI .AC3,0
	M?c@ `f

  DEFINE e(C)<D>
..FO RN==A
REPEAT B@-A+1,<
	.FORN1 `(e)
	..FORN=..FORN+1>.FORN=..FM?3@ |
  DEFINE  %MN1 (B)<C>
	@..FORN==A		
	.FORN1 (%MN1)
	.FM?@ `r
  DEFINE d (B)<C>
  I RP A,<
	.FORX1 d,A>
	.FORX1UMN. ]hOP%%FP	(A,B,FSBR)FP	(AMS{P NF
`<..OWGPq(\Q8<B>,<A,,C>,\<D>)>A,,C>,\<0f/x^O44C==:NJ

	..ERR.=\0		
	  .BSIZ.=B\8		
	\X.BPOS.=D
	IFN <<A>&<^O<-\x1,,770000>>>,<
	]  MPRNTX(G2BPT,Se]Hction greater thacXn 12 bits: A)
	cx  ..ERR.=1
	d>
	IFN <<C>&<^O<7d877740,,0>>>,<
	 dX MPRNTX(G2BPT,Bitdxs 0 - 12 non-zeroe in address fielde8: C)
	  ..ERR.=eX1
	  >
	IFN <<exE>&<-1,,0>>,<
	 f MPRNTX(G2BPT,Bitf8s 0-17 non-zero ifXn optional field:fx E)
	  ..ERR.=1g
	  >
	IFN <.BSg8IZ.&<^O<-1,,77770gX0>>>,<
	  MPRNTXgx(G2BPT,Bytesize ghreater than 6 bith8s: B)
	  ..ERR.hX=1
	  >
	IFN <.hxBPOS.&<^O<-1,,777i700>>>,<
	  MPRNi8TX(G2BPT,Byte offiXset greater than ix6 bits: D)
	  .j.ERR.=1
	  >
	Ij8FN ..ERR.,<-1,-1,jX-1>		
	
	IFE ..jxERR.,<
	  IFDIF k<D><>,<<<POINT .k8BSIZ.,E,.BPOS.>!kX1B12>&<^O<777740,kx,-1>>>
	lxIFIDN l<D><>,<<<POINT .l8BSIZ.,E>!1B12>&<lX^O<777740,,-1>>>
	    
	    <<<mC>_<^O14>>&<^O<37m80000,,0>>!<<C>&<mX0,,-1>>!<<A>_<^Omx22>>>
	  >
	PURnGE ..ERR.,.BSIZ.,.BPOS.
	BSIZ.,0i-[0		GENBPON{  ?X,%
	..ERR.=?x0		
	IFN <<A>&<@^O<-1,,770000>>>,@8<
	  MPRNTX(GFIW@XM,Section greater@x than 12 bits: AA)
	  ..ERR.=1
	A8  >
	IFN <<B>&<AX^O<777740,,0>>>,<Ax
	  MPRNTX(GFIWMB,Bits 0 - 12 non-B8zero in address fBXield: B)
	  ..EBxRR.=1
	  >
	IFNC ..ERR.,<-1,-1,-1C8>	
				
	IFE ..CXERR.,<
	  <<<B>Cx_<^O14>>&<^O<3700D00,,0>>!<<B>&<0,D8,-1>>!<<A>_<^O22DX>>>>
	PURGE ..ERR.
	PURGE ..ERSNn W8OP%%IN	(A,B,IDIV)IN	(AS)`  8"
	JUMPN  XA,b		
	..SVDF		 x	
   DEFINE ..TA!GF (INST,PCT)<
	!8INST b'PCT>		
 !X  DEFINE ..TAGE (!xINST,PCT)<
	INST c'PCT>		
	STS.:g !
	PRINTX 8% IFESK. should bXe changed to IFNJxE.
	IFNJE. <A>.
	IFNJE. <A>S9` $8"/
	JUMPLE $XA,b		
	..SVDF	$x		
   DEFINE ..T%AGF (INST,PCT)<
%8	INST b'PCT>		
%X   DEFINE ..TAGE %x(INST,PCT)<
	INST c'PCT>		
	SS<S@ &8"?
	JUMPL &XA,b		
	..SVDF		&x	
   DEFINE ..TA'GF (INST,PCT)<
	'8INST b'PCT>		
 'X  DEFINE ..TAGE ('xINST,PCT)<
	INST c'PCT>		
	STSTS@ x!'

   IFB <BC>,<		
	..SVD8F			
	ERJMPA fX		
	JRST d		
xf:!
8DEFINE ..TAGF (INST,PCT)<
	INST d'PCT>		
   DEFINE ..TAGEx (INST,PCT)<
	INST e'PCT>		
	>8
   IFNB <BC>,<X		
	ERJMPA d		x
	C
	JRST e
d:!	B
e:!>
ST\G 8!

   IFB <XAB>,<		
	..SVDxF			
	ERJMP e		
	JRST c		
e:8!
   DEFINE ..TAXGF (INST,PCT)<
	xINST c'PCT>		
   DEFINE ..TAGE (8INST,PCT)<
	INSTX d'PCT>		
	>
 x  IFNB <AB>,<		
	ERJMP c		
	8B
	JRST d
c:!	A
d:!>
c:!SUc@ !u
   IFB <8B>,<		
	..SVDF	X		
	ERJMPA c
x   DEFINE ..TAGF (INST,PCT)<
	INS8T c'PCT>		
   DXEFINE ..TAGE (INSxT,PCT)<
	INST d'PCT>		
	>
   I8FNB <B>,<
	ERJMXPA c
	B
c:!> c
	B
c:!Sa` *8"_
	JUMPGE *XA,b		
	..SVDF	*x		
   DEFINE ..T+AGF (INST,PCT)<
+8	INST b'PCT>		
+X   DEFINE ..TAGE +x(INST,PCT)<
	INST c'PCT>		
	SSdS@ (8"O
	JUMPG (XA,b		
	..SVDF		(x	
   DEFINE ..TA)GF (INST,PCT)<
	)8INST b'PCT>		
 )X  DEFINE ..TAGE ()xINST,PCT)<
	INST c'PCT>		
	STSq` "8"
	JUMPE "XA,b		
	..SVDF		"x	
   DEFINE ..TA#GF (INST,PCT)<
	#8INST b'PCT>		
 #X  DEFINE ..TAGE (#xINST,PCT)<
	INST c'PCT>		
	STSt\g 8!1
	PRINTX X% IFNES. should bxe changed to IFJER.
	IFJER. <A>,<B>FJER. <A>,Su)' 8!]
   IFB <XA>,<		
	..SVDF	x		
	ERJMP b
   DEFINE ..TAGF (I8NST,PCT)<
	INST Xb'PCT>		
   DEFxINE ..TAGE (INST,PCT)<
	INST c'P8CT>		
	>
   IFNXB <A>,<
	ERJMP b
	A
b:!> Sv:g 
x o
   IFB <AB>,<		
	..SVD8F			
	TRNA			
	XJRST c		
   DEFxINE ..TAGF (INST,
PCT)<
	INST c'P
8CT>		
   DEFINE 
X..TAGE (INST,PCT)
x<
	INST d'PCT>	
	>
8AIFNB	<
	JRST 
	B
	JRST 
c:!	A
d:!>
c:!	A
d:!>S
S@ 08#
	JN <A>0X,<B>,c	
	..SVD0xF			
   DEFINE .1.TAGF (INST,PCT)<18
	INST c'PCT>		1X
   DEFINE ..TAG1xE (INST,PCT)<
	I2NST d'PCT>		
	ST d'PCT>		
	S 2X##
	JE <A>2x,<B>,c	
	..SVD3F			
   DEFINE .38.TAGF (INST,PCT)<3X
	INST c'PCT>		3x
   DEFINE ..TAG4E (INST,PCT)<
	I48NST d'PCT>		
	ST d'PCT>		
	S< X!G
   IFB <xA>,<		
	..SVDF			
	JRST b
   8DEFINE ..TAGF (INXST,PCT)<
	INST xb'PCT>		
   DEFINE ..TAGE (INST,P8CT)<
	INST c'PCXT>		
	>
   IFNBx <A>,<
	JRST b
	A
b:!> bSDS@ ,8"o
	JXN A,,XB,c	
	..SVDF		,x	
   DEFINE ..TA-GF (INST,PCT)<
	-8INST c'PCT>		
 -X  DEFINE ..TAGE (-xINST,PCT)<
	INST d'PCT>		
	STSEc@ .8"
	JXE A,.XB,c	
	..SVDF		.x	
   DEFINE ..TA/GF (INST,PCT)<
	/8INST c'PCT>		
 /X  DEFINE ..TAGE (/xINST,PCT)<
	INST d'PCT>		
	STS7-N V0OP%%IN	(A,B,IMUL)IN	(AS:  S
	..STR0 S8(.INCR0,,<A>,<B>)CR0,,<A>,<BS? +X
	TXO A,<B>
	TXO A,Ut@ hXI
	..STR1 hx(..JAN,<d,<C>>,i<A>,<B>,..STR5)
d:B>,..STR5)U \8e
	..STR1 \X(..JE,<C>,<A>,<B>,..STR3)A>,<U8 `x	
	..STR1a(..JN,<C>,<A>,<B>,..STR3)A>,<U:
	..STR1 f8(..JNA3,<C>,<A>,<B>,..STR4)A>U:~  kxc
	..STR1 l(..JNO,<d,<C>>,l8<A>,<B>,..STR5)
d:B>,..STR5)U? e8-
	..STR1 eX(..JN,<C>,<A>,<B>,..STR4)A>,<UN.,@`p0/Dp0/A,p0/D$5p0/AUN.,HUN.,HA  UN.,HUNEM`p0/Pp0/M,p0/P$7p0/MUNEMUNEMA  UNEMUNn9hA  UNn9hUb( ? 
	..JX1==?@B		
	.IFN ..JX1?`,ABSOLUTE,<PRINTX@ B NOT ABSOLUTE
		..JX1==0>
	.I@@F ..JX1,ABSOLUTE,@`<
	.IF0 <<..JX1>A-1B0>,<	
		JUMPGA E A,C>,<
	.IF0A@ <<..JX1>+1>,<	
A`	  JUMPE A,C>,<B	
		TXNN (A,..JB X1)
		JRST C>>>)
		JRST C>>>Ub0 J n
	..JX1==J@B		
	.IFN ..JX1J`,ABSOLUTE,<PRINTXK B NOT ABSOLUTE
		..JX1==0>
	.IK@F ..JX1,ABSOLUTE,K`<
	.IF0 <<..JX1>L-1B0>,<
		JUMPGEL  A,C>,<
	..ONEL@B (..BT,B)	
	.IL`F0 ..BT,<
	  SETMCM .SAC,A		
	  M JXN (.SAC,..JX1,M@C)>,< 
	    TXNNM` A,..JX1	
	    JRST C>>>	    Ubp B`.
	..JX1==CB		
	.IFN ..JX1C ,ABSOLUTE,<PRINTXC@ B NOT ABSOLUTE
		..JX1==0>
	.IDF ..JX1,ABSOLUTE,D <
	.IF0 <<..JX1>D@-1B0>,<	
		JUMPLD` A,C>,<
	.IF0 E<<..JX1>+1>,<	
	E   JUMPN A,C>,<	E@
		TXNE (A,..JXE`1)
		JRST C>>>)
		JRST C>>>Ubx F N
	..JX1==F@B		
	.IFN ..JX1F`,ABSOLUTE,<PRINTXG B NOT ABSOLUTE
		..JX1==0>
	.IG@F ..JX1,ABSOLUTE,G`<
	.IF0 <<..JX1>H-1B0>,<
		JUMPL H A,C>,<
	..ONEBH@ (..BT,B)	
	.IFH`0 ..BT,<
	  SETCIM .SAC,A		
	  JI XE (.SAC,..JX1,CI@)>,< 
	    TXNE I`A,..JX1	
	 JRSTC>>>	    JXF
	.BSIZ.=E8A		
	.BPOS.=C
	..ERR.=0		
	IFExN <<B>&<^O<77774F0,,0>>>,<
	  MPRF8NTX(L1BPT,Bits 0 FX- 12 non-zero in Fxaddress field: BG)
	  ..ERR.=1
	G8  >
	IFN <.BSIZ.GX&<^O<-1,,777700>>Gx>,<
	  MPRNTX(L1HBPT,Bytesize greaH8ter than 6 bits: HXA)
	Hx..ERR.=1
	  >
	IFN <.BPOIS.&<^O<-1,,777700I8>>>,<
	  MPRNTX(IXL1BPT,Byte offsetIx greater than 6 bJits: C)
	  ..ERJ8R.=1
	  >
	
	IJXFN <..ERR.>,<-1,-Jx1,-1>
	
	IFE <.K.ERR.>,<
	  IFIDK8N <C><>,<POINT .KXBSIZ.,B>
	  IFDKxIF <C><>,<POINT L.BSIZ.,B,.BPOS.>L8
	  >
	PURGE ..LXERR.,.BSIZ.,.BPOS.
	BSIZ.,.BPOSXJ
	..ERR.=SX0		
	  .BSIZ.=ASx		
	T.BPOS.=C
	IFN <<B>&<^O<7T877740,,0>>>,<
	 TX MPRNTX(L2BPT,BitTxs 0 - 12 non-zeroU in address fieldM: B)
	  ..ERR.=M81
	  >
	IFN <<MXD>&<-1,,0>>,<
	 Mx MPRNTX(L2BPT,BitNs 0-17 non-zero iN8n optional field:NX D)
	  ..ERR.=1Nx
	  >
	IFN <.BSOIZ.&<^O<-1,,77770O80>>>,<
	  MPRNTXOX(L2BPT,Bytesize gOxreater than 6 bitPs: A)
	  ..ERR.P8=1
	  >
	IFN <.PXBPOS.&<^O<-1,,777Px700>>>,<
	  MPRNQTX(L2BPT,Byte offWset greater than W86 bits: C)
	  .WX.ERR.=1
	  >
	IWxFN ..ERR.,<-1,-1,X-1>		
	
	IFE ..X8ERR.,<
	  IFDIF XX<C><>,<<<POINT .XxBSIZ.,D,.BPOS.>!Y1B12>&<^O<777740,Y8,-1>>>
	Z8IFIDN YX<C><>,<<<POINT .YxBSIZ.,D>!1B12>&<Z^O<777740,,-1>>>
	    <1B0!<<^O<4ZX00037,,-1>>&<B>>Zx>	
	  >
	PURGE [..ERR.,.BSIZ.,.BPOS.
	BSIZ.,.BP0h-0(B).YN{  <8+y
	..ERR.=<X0		
	IFN <<A>&<<x^O<777740,,0>>>,<=
	  MPRNTX(LFIWM=8,Bits 0 - 12 non-=Xzero in address f=xield: A)
	  ..E>RR.=1
	  >
	IFN>8 ..ERR.,<-1,-1,-1>X>	
	IFE ..ERR.,<>x1B0!<<^O<400037,,?-1>>&<A>>>	
	PURGE ..ERR.
	PUY$- :XU1_<^D35-^L<A>>1_<^D35-^LY>
@ =xq
	..STR0 >(..LDB,A,B,<C>)LDB,A,B,<C>Y>
I  @x	
	..STR0 A(..LDBE,A,B,<C>)DBE,A,B,<C[i9Q ~[^+'  
  DEFINE   A (STUFF)<
	c @ (<STUFF>,)>

  ` DEFINE c (NEW,O!LD)<
    DEFINE ! A (STUFF)<
	c !@(<STUFF>,<OLD'NEW!`>)>>

  DEFINE "B <
    DEFINE " c (NEW,OLD)<OLD>
	A ()>
OLD>[3@ ;Y<<<1_<A>>-1>B<B>>_<A>>[8@ `V<1B<<A>-1>-1B<B>><A>-1[>!`  Z<<A>-<<A>/<B>>*<B>>A[?7 "`H
   ..MX1#==B			
#@.IFN # ..MX1,ABSOLUTE,<
	MOVE A,[B]>
#`   .IF ..MX1,ABSO$LUTE,<
	..MX2==0$ 		
	IFE <..MX1>B$@53,<
	  ..MX2==1$`
	  MOVEI A,..M%X1>	
	IFE ..MX2,% <		
	IFE <..MX1>%@B17,<
	  ..MX2==%`1
	  MOVSI A,(.&.MX1)>>	
	IFE ..& MX2,<		
	IFE <<.&@.MX1>B53-^O777777&`>,<
	'..MX2==1
	  HRROI A,<..M' X1>>>	
	IFE ..MX'@2,<		
	IFE <<..M'`X1>B17-^O777777B1(7>,<
	  ..MX2==1( 
	(`HRLOI A,(..(@MX1-^O777777)>> 
	IFE ..MX2,<		
)	  MOVE A,[..MX1]>	
  >,[..MX1[Cm 2+
	  DEFIN28E ..MP. (LOCN,MTE2XXT,PTEXT)<
	    2xPRINTX Location '3LOCN', Macro 'MTE38XT': PTEXT
	    3X>
	  ..MP.(\.,A3x,<B>)
	  PURGE ..MP.
	  URGE [N^= n ~
	A==C	n@	
	IF1,<IFDEF %n`A,<PRINTX ?A ALRoEADY DEFINED>>
	o DEFINE %A (OP,ACo@,Y,MSK)<
	$A==<o`Z B>		
	OP (<AC>,B'Y,MSK)><AC[Vg U@,OP%%IN	(A,B,MUL)%IN	(A[Xp )@N
	MOVE .S)`AC,A
	MOVEM .SAC,B
	MOVEM .SA[ZI` * T
	MOVX .S*@AC,<A>
	MOVEM .SAC,B
	MOVEM ._@(Xp R  
	.XCREF
IFE	<<B>_-^D18>R`,<
	.CREF
	CAISC	A,<B>
	.XCRES F
>
IFN	<<B>_-S@^D18>,<
	.CREF
S`	CAMC	A,[B]
	T.XCREF
>
	.CREFCREF
>
	.CREF_@(YX ^@
	.XCREF
IFE	<<B>_^D18>,_<
	.CREF
	CI	_ A,(B)
	.XCREF
_@>
IFN	<<B>_^D18_`>,<
	.CREF
	C	`A,[B]
	.XCREF
>
	.CREFCREF@P
	.XCREF
	TEST%%=0
IFE	<X<<B>_-^D18>-^O77X 7777>,<
IFN	<<BX@>&^O777777>,<
	TX`EST%%=1
	.CREF
Y	DI	A,-<B>
	.Y XCREF
>>
IFE	TEY@ST%%,<
	OP%%IN	Y`A,<B>,C
>
	PUZRGE	TEST%%
	.CREF	TEST%%
	.CRE_@(Z7 Z@`
	.XCREF
IFE	<<B>_-^D18>[,<
	.CREF
	CI	[ A,<B>
	.XCREF
>
IFN	<<B>_-^D[`18>,<
	.CREF
	\C	A,[B]
	.XCREF
>
	.CREFCRE_CL@ WX?
	..STR0 Wx(.OPST1,<A>,<B>,<C>)<A>,<B>_CLV YxQ
	..STR0 Z(.OPST2,<A>,<B>,<C>)<A>,<B>_^>@ R-
p<..OWGP(\<A>,B,\<C>)>0g-
G RX-OWGP. WID(B),A,POS(B)(`@ a
,TQ  a
,Q a
,*9Q a
,>(Q  a
,>(Q a
,k{Q a
,m3Q a
-J8Q @a
-iQ a
-}SQ @a
.Z7Q a
.\yQ a= I`$R
   IFNB J<A>,<
	TMSG <AJ >>
	CALL JSMSG0>
	CALL JSMSG0a4\G 
Z
	..PGV0=
(=.		
	.JBVER=:^O
H137		
	LOC	.JBVE
hR		
	BYTE	(3)D(9)A(6)B(18)C
(	.ORG	..PGV0		
.ORG	..PGV0		
a>Mm `H<POINT WID(<B>),A,POS(<B>)>),A,POS(<Ba?  B<^L<<A>&<-<A>>>><<A>&<aKH1 H)v
	..NUM==h^D15
	REPEAT ^D16,<
		IFN ..MASK( & 1B<..NUM>,<
	H	POP P,..NUM>
		h..NUM==..NUM-1
	>
==..NUM-1
	aNh1 h)h
	..TMSK==..MASK
	REPEAT (..NAC,<
		..NUM=H=^L<..TMSK>
		..hTMSK==..TMSK-1B<..NUM>
		PUSH P,..NUM
	>
H P,.aR<& o .z
	TXO A,.FR8BY
	TXO A,aRd6 nX.u
	HRLI A,(POINT 8,0) AdA  de  ,~e&:x G@$<JRST RSKP>JRST RSKPeN^A  eN^gXY vx'K
	..TRR==w10		
	RADIX 8
	w8..NV==1			
	IRP wXA,<
	  .TRV1 (wxA)>		
	IFG ..NV-x5,<PRINTX ?TOO MAx8NY ARGUMENTS: A>xX
	JSP .A16,.SASExxT		
	RADIX ..TRRy		
	DEFINE ENDSAy8.<.ENSV1 <A>>
	.ENSV1 <A>>
	g4X1 ((v

..DONEH==0
..SACC==0
.h.NAC==0
..MASK==0

IRP <A>,<
(	IFG A-^D15,<PRIHNTX ?SAVEAC(A) IhS ILLEGAL,
		      PRINTX ?SAVEAC( CAN ONLY BE USEDH ON ACCUMULATORS>h
	IFE A-.SAC,<..SACC==1>
	..SYA(C==A				
	IFN HA-.SAC,<IFE ..MAShK&1B<..SYAC>,<	
		..MASK==..MASK!(1B<..SYAC>	
		..HNAC==..NAC+1>>
	h>
IFE ..SACC,<US	RSAV>		
IFE ..DO	(NE,<
  IFLE ..SA	HCC,<JSP .SAC,[>
	h  IFG ..SACC,<CAL
L [EXCH .SAC,(P)>
(
		    IFG  ..NA
HC-3,<DSAVAC>
		 
h   IFLE ..NAC-3,<IFG ..NAC,<PSAVAC(>>
		    PUSHJ PH,(.SAC)
		      hTRNA
		    AOS -
..NAC-..SACC(P)

(		    IFG  ..NAC-
H3,<DRSTAC>
		   
hGIFLEA..NAC-3,<IF
		,<POIFG,..SAC
	    POPJ P,]
>
PURGE ..NAC,..TN(AC,..MASK,..TMSK,H..SACC,..NUM,..SMhSK,..DONE,..SYAC  
DONE,..SYAC g$;8 Ox
	..STR1 P(..TQC,,<A>,<B>,..STR4)A>,<B>g%{R L8e
	..STR1 LX(..TQO,,<A>,<B>,..STR4)A>,<B>g',W HXG
	..STR1 Hx(..TQZ,,<A>,<B>,..STR4)A>,<B>g"~s@  :
	....Z=A
	....Z=gB8; ()

	IFE ..DHONE,<
		..SMSK==h0
		IRP <B>,<
		   ..SYAC==B		(		
		   ..SMSK==H..SMSK!1B<..SYAC>h>		
		IFE ..MASK-..SMSK,<JSP .SAC(,A
				   ..DONE==1>
	>
.DONgR$g 
l
F=:0
T1
 =:1
T2=:2
T3=:3
@
T4=:4
Q1=:5
Q
`2=:6
Q3=:7
P1=:
P2=:11
P3=:1
P4=:13
P5=:14
P6=:15
CX=:16
P=:17
CX=:16a&!
	..STKR=a8=10		
	RADIX 8
aX	..STKN==0
	IRP axA,<
	  .STKV1 (bA)>
	JSP .A16,.b8XSTKS		;Call intebXrnal routine for bxallocation
	 EXPc ..STKN		;Size ofc8 block to allocatcXe
	RADIX ..STKR
	DEFINE ENDSV.<.dENSV1 <A>>
   NSV1 <A>>
   gR~  EX/
	..STR0 Ex(..DPB,A,B,<C>)DPB,A,B,<C>gV U(OP%%IA	(A,B,SUB,ADD)(Ai6tP mxq
	..STR1 n(..TYNE,,<A>,<B>,..STR3)A>,<Bi6u` qX
	..STR1 qx(..TYNN,,<A>,<B>,..STR3)A>,<Bi7p H$B
	HRROI .H AC1,[ASCIZ \A\]
	PSOUTZ\A\]
	    ..S|XTR1 (..TY,C,<A>,<B>,..STR3)A>,iF ~Xw
	    ..S~xTR1 (..TY,CA,<A>,<B>,..STR3)A>iFP }k
	    ..S}8TR1 (..TY,CE,<A>,<B>,..STR3)A>iF` }xq
	    ..S~TR1 (..TY,CN,<A>,<B>,..STR3)A>iFp s8
	    ..SsXTR1 (..TY,N,<A>,<B>,..STR3)A>,iFt uX/
	    ..SuxTR1 (..TY,NA,<A>,<B>,..STR3)A>iFtP t#
	    ..St8TR1 (..TY,NE,<A>,<B>,..STR3)A>iFu` tx)
	    ..SuTR1 (..TY,NN,<A>,<B>,..STR3)A>iFx v85
	    ..SvXTR1 (..TY,O,<A>,<B>,..STR3)A>,iF| xXG
	    ..SxxTR1 (..TY,OA,<A>,<B>,..STR3)A>iF|P w;
	    ..Sw8TR1 (..TY,OE,<A>,<B>,..STR3)A>iF}` wxA
	    ..SxTR1 (..TY,ON,<A>,<B>,..STR3)A>iGP y8M
	    ..SyXTR1 (..TY,Z,<A>,<B>,..STR3)A>,iGT {X_
	    ..S{xTR1 (..TY,ZA,<A>,<B>,..STR3)A>iGTP zS
	    ..Sz8TR1 (..TY,ZE,<A>,<B>,..STR3)A>iGU` zxY
	    ..S{TR1 (..TY,ZN,<A>,<B>,..STR3)A>iK4@ kx&q
	..TRR==l10		
	RADIX 8
	l8..NV==1			
	IRP lXA,<
	  .TRV1 (lxA)>		
	JSP .A16,m.XTRST		
	mEXP .m8.NV-1		;Size of bmXlock to allocate
	RADIX ..TRR		
n	DEFINE ENDTV.<.ENSV1 <A>>
	.Eib 78
		..TX(C,A,<B>)..TX(Cib 8@D
		..TX(CA,A,<B>).TX(CibP 7@<
		..TX(CE,A,<B>).TX(Cib` 8@
		..TX(CN,A,<B>).TX(Cibp 1
		..TX(N,A,<B>)..TX(Nibt 2@
		..TX(NA,A,<B>).TX(NibtP 1@

		..TX(NE,A,<B>).TX(Nibu` 2
		..TX(NN,A,<B>).TX(Nibx 3
		..TX(O,A,<B>)..TX(Oib| 4@$
		..TX(OA,A,<B>).TX(Oib|P 3@
		..TX(OE,A,<B>).TX(Oib}` 4 
		..TX(ON,A,<B>).TX(OicP 5(
		..TX(Z,A,<B>)..TX(ZicT 6@4
		..TX(ZA,A,<B>).TX(ZicTP 5@,
		..TX(ZE,A,<B>).TX(ZicU` 60
		..TX(ZN,A,<B>).TX(Zk:*g M`$p
%%FOO==Na
	BRK0 (%%FOO,B,1)
 (%%FOO,kO8; (m$,I1P$m$,YP#m$-X5Q |m$-Z7Q xm$.zQ po&  `><^L<-<<A>_<^L<A>>>-1>>>q
fC@ `8&
	EXTEND A,[XBLT]XTEND q"eJ  P q6~i4 C q? ,`
	TXC A,<B>
	TXC A,+Q zjQ |kQ x2 Q N2`Q P2$`Q R2& Q T25 Q V25@Q J2PQ L:`Q f:$Q h:%`Q j:5Q l:5@Q b:`Q dB Q \B$`Q ^B4 Q `B5@Q XBpQ ZJ`Q rJ%@Q tJ5 Q vJ5@Q nKQ p
+Q \
KQ ^
kQ `

Q X
`Q Z
(Q p
HQ r
iQ t
	Q v

Q n$HQ z%	Q |%
Q x2`Q N2$ Q P2%`Q R25 Q T2D`Q V2EQ J2PQ L: Q f:%Q h:4`Q j:D@Q l:EQ b:`Q d:h 
	A:&@ F8A
	..TSIZ FX(..PST,C)
	.CASFxE ..PST,<<
		MOVGEM A,B>,<
		HRG8RM A,B>,<
		HRGXLM A,B>,<
		DPGxB A,[POINT WID(<HC>),B,POS(<C>)]>>B,POS(<C>):<;Y <
   DEFIN E ..CNS2 (NEW,OLD@)<
	  OLD>			
	..CNS ()>			
	:L;Y `4
   DEFINE ..CNS (ARG)<
	 ..CNS2 <ARG>,>
@
   DEFINE ..CNS2` (NEW,OLD)<
	DEFINE ..CNS (ARG)<
	  ..CNS2 <ARG>,@<OLD'NEW>>>
   OLD'NEW>>>
   :Mi <8#s
 DEFINE <XELSE. <
	..TAGE <x(JRST,)		
	..TAG=F (,<:!>)		
	SYN=8 ..TAGE,..TAGF	
=X   DEFINE ELSE. <=x....U>>	

 DEFI>NE ENDIF. <
	..T>8AGF (,<:!>)		
	..RSDF>			
   .:TH iXM
	..JNA3 (A,C,D)JNA3 :TI j[
	..TSAC j8(..ACT,C)
	.IF0jX ..ACT,<
	  SETCjxM .SAC,C	
	  JXkE (.SAC,D,<B>)>k8,<	
	  JXO (C,D,<B>)>O (C,:TP ]
	..TSAC ]8(..ACT,B)	
	.IF]X0 ..ACT,<
	  ..T]xSIZ (..PST,C)	
^	  .CASE ..PST,<<^8
		SKIPN B	
		^XJRST A>,<
		HRR^xZ .SAC,B	
		JUM_PE .SAC,A>,<
		_8HLRZ .SAC,B	
		XJUMPE .SAC,A>,<
		MOVE .SAC,B	
		JXE (.SAC,C,<`8A>)>>>,<
	  JXE (B,C,<A>)>E:U` aX'
	..TSAC ax(..ACT,B)	
	.IFb0 ..ACT,<
	  ..Tb8SIZ (..PST,C)
	bX  .CASE ..PST,<<
		SKIPE B	
		JcRST A>,<
		HRRZc8 .SAC,B	
		JUMPcXN .SAC,A>,<
		HcxLRZ .SAC,B	
		JdUMPN .SAC,A>,<
d8		MOVE .SAC,B	
dX		JXN (.SAC,C,<dxA>)>>>,<
	  JXN (B,C,<A>)>N :Uh) fxA
	..TSAC g(..ACT,B)
	.IF0g8 ..ACT,<
	  SETCgXM .SAC,B	
	  JXgxN (.SAC,C,<A>)>h,<	
	  JXF (B,C,<A>)>F (B,:Ukh lxg
	..JN (A,C,D)..JN (:Uki m8k
	..JE (<B>,C,D)JE (<:dH@ >X
	..TSIZ >x(..PST,C)
	.CAS?E ..PST,<<
		MOV?8E A,B>,<
		HRR?XZ A,B>,<
		HLR?xZ A,B>,<
		LDB@ A,[POINT WID(<@8C>),B,POS(<C>)]>>B,POS(<C>)]:dHR AX)
	..TSIZ Ax(..PST,C)
	.CASBE ..PST,<<
		MOVB8E A,B>,<
		HRRBXE A,B>,<
		HLRBxE A,B>,<
		JSPC .SAC,[LDB A,[POC8INT WID(<C>),B,CXPOS(<C>)]
			  Cx..MSK==MASK.(WID(DC),35)
			  TXND8E A,LFTBT.(..MSKDX)	
			  TXO A,^Dx-..MSK	
			  PUREGE ..MSK
			  JRST (.SAC)]>> JR:}i1 iJ
	A==<<<i -<B>>&<B>>&<1B<^L<B>>>>>&<1B<:~yx Ux-5IFE 10-8, V  <.%AC!<B>>+ V8			     IFE 10-^DVX10,<.$AC!<B>>0,<.$AC!<B>>;@ ;9 $
	.POPX;LH r "
	IFNDEF r@C,<PRINTX ?C ISr` NOT DEFINED
	  sA (<B>,<D>,.FWs ORD)>	
	IFDEF Cs@,<
	IFNDEF %C,<s`
	  A (<B>,<Dt>,C)>	
	IFDEF %t C,<
	  %C (A,<B>,<D>,C)>>;LH t`b

	..NS==0u			
	IRP C,<..Nu S=..NS+1>	
	IFE u@..NS,<PRINTX ?EMPu`TY STRUCTURE LISTv, A>
	IFE ..NS-v 1,<		
	  ..STR0 v@(A,<B>,<C>,<Dv`>)>
	IFG ..NS-1,w<		
	..ICNS			
w 	..CNS (<E (A,<w@B>,,>) 
	IRP Cw`,<		
	  IFNDEF xC,<PRINTX C NOT x DEFINED>
	  IFDEx@F C,<
	  IFNDEFx` %C,<
	  ..CNS y(<,C,D>)>	
	  y IFDEF %C,<
	  %y@C (..STR2,,<D>,y`C)> 
	  ..CNS (z<)>)		
	  ..GCNSz 		
	  ..ICNS		
z@	  ..CNS (<E (Az`,<B>>) 
	  IFND{EF %C,<
	  ..CN{ S (<,C,D>)>	
	{@  IFDEF %C,<
	 {` %C (..STR2,,<D|>,C)>>> 
	..CNS|  (<,,)>)		
	..GCNS>)>)		
	..GC;LI |`f
	..CNS (<,C,B>).CNS (;LI } |

	IFDIF <}@D><F>,<
	  IFN}`B <D>,<
	    A~ (<B>,D,..MSK)	~ 
	    IFNB <F>,~@<PRINTX C AND E~` ARE IN DIFFERENT WORDS>>
	  ..MS K==0>		
	IFNB <@F>,<
	  ..MSK=..MSK!<E>>MSK=..;LJ 


	IFDIF < D><F>,<	
	  IF@NB <D>,<
	    `A (<B>,D,..MSK)>	
	  ..MSK==0>	 	
	IFNB <F>,<
@	  ..MSK=..MSK!<E>>MSK=..MSK!<;LJ "

	IFDIF < D><F>,<	
	  IF@NB <D>,<
	    I`FNB <F>,<		
		A1 (B,D,..MSK)>  
	    IFB <F>,@<		
		A2 (B,D`,..MSK)>> 
	  ..MSK==0>		
	IFNB  <F>,<
	  ..MSK=..MSK!<E>>MSK=;hU  %
	SYN END8BK.,a
	.PSHX <
	 SYN a,ENDBK.> SYN a,ENDBK.>;i >x$	
	SYN ELS?E.,a
	SYN ENDIF?8.,b
	SYN ..TAGF?X,c
	SYN ..TAGE,?xd
	.PSHX <
	  @SYN a,ELSE.
	  @8SYN b,ENDIF.
	 @X SYN c,..TAGF
	@x  SYN d,..TAGE>
	..INDF			
	      NDF			
	   ;k  S

	SYN OD.8,a
	SYN LOOP.,Xb
	SYN TOP.,c
x	SYN EXIT.,d
	S	YN ENDLP.,e
	.P	8SHX <
	 SYN a,O	XD.
	 SYN b,LOOP	x.
	 SYN c,TOP.

	 SYN d,EXIT.

8	 SYN e,ENDLP.> SYN e,ENDLP.>;$r #3....Ui;$s #1....U A;&` PX
	..TSIZ Px(..PST,C)
	.IF0Q ..PST,<		
		SETQ8CMM B>,<	
	Qx..QXTSAC (..ACT,B)	
	R.IF0 ..ACT,<
		MOVX .SAC,C
R8		XORM .SAC,B>,<RX
		..TX(C,B,C)>>..TX(C,B,C);&` M{
	..TSIZ M8(..PST,C)
	.CASMXE ..PST,<<
		SETMxOM B>,<
		HLLOSN B>,<
		HRROS N8B>,<
	  ..TSAC (NX..ACT,B)
	  .IFNx0 ..ACT,<
		MOVXO .SAC,C
		IORM O8.SAC,B>,<
		..TX (O,B,C)>>>T;&@ I8_
	..TSIZ IX(..PST,C)	
	.CAIxSE ..PST,<<
		SEJTZM B>,<	
		HLLJ8ZS B>,<	
		HRRZJXS B>,<	
	  ..TSJxAC (..ACT,B)	
	K  .IF0 ..ACT,<
	K8	MOVX .SAC,C	
	KX	ANDCAM .SAC,B>,Kx<
		..TX (Z,B,C)>>>TX (Z,B,;&81 e 4
	A==0		e@	
	..TSA1==<Z Be`>		
	.IF ..TSA1,fABSOLUTE,<	
	  If FE ..TSA1&^O77777f@7777760,<A==1>> 
	60,<A==1>> ;&:= c`&
	A==3		d	
	IFE <B>+1,<d A=0>	
	IFE <B>-d@^O777777,<A==1> d`
	IFE <B>-^O777777B17,<A==2>7;&;Q gD
	A==0		g 	
	..TSA1==0		
g@	IRPC C,<
	  ..g`TSA1=..TSA1+1
	hh IFE ..TSA1-B,<
	   IFIDN <C><h@D>,<
		A==1>		
	;'STOPI>>		
   ..TX1,`==C			
- .IFN -..TX1,ABSOLUTE,<
	TDA B,[C]>
-@   .IF ..TX1,ABSO.LUTE,<		
	..TX2=-`=0		
	IFE <..TX1. &^O777777B17>,<
.@	  ..TX2==1		
	 .` TRA B,..TX1>
/	IFE ..TX2,<		
	/ IFE <..TX1&^O7777/@77>,<
	  ..TX2==/`1		
	  TLA B,(0..TX1)>>
	IFE ..0 TX2,<		
	  IFE <0@<..TX1>B53-^O77770`77>,< 
	    ..TX93 (A,B)>>	
	IF9 E ..TX2,<		
	  I9@FE <..TX1+1>,<	
9`	    ..TX4 (A,B:)>>
	IFE ..TX2,<: 		
	  TDA B,[..TX1]>	
  >,[.;'` :`h
	IFIDN <;A><Z>,<		
	  ..; TX2==1
	  ANDI ;@B,^-..TX1>	
	IFI;`DN <A><O>,<		
	<  ..TX2==1
	<@OR< CMI B,^-..TX1>	
	IFIDN <A><C>,<<`		
	  ..TX2==1
=	  EQVI B,^-..TX1>QVI B,^-..TX;' =@v
	IFIDN <=`A><NN>,<
	  ..T>X2==1
	  CAIN B> ,0>		
	IFIDN <A>@><NE>,<
	  ..TX2>`==1
	  CAIE B,0>
	  CAIE B,0;'  
	..TSAC 8(..ACT,B)	
	.IFX0 ..ACT,<
		PRINxTX ?TQA - B NOT IN AC>,<
		TXA B,C>
		TXA;'R nX	
	..TSAC nx(..ACT,B)	
	.IFo0 ..ACT,<
	  ..Jo8X1==C
	  .IF0 <ox..JX1-1B0>,<
		SoXKIPGE B>,<
	   p .IF0 <..JX1+1>,<p8
		SKIPE B>,<
pX		MOVE .SAC,B
	px	TXNE .SAC,C>>>,q<
		TXNE B,C>
		TXNE B,C>;'W r8 
	..TSAC rX(..ACT,B)	
	.IFrx0 ..ACT,<
	  ..JsX1==C
	  .IF0 <8..JX1-1B0>,<
		SXKIPL B>,<
	  x.IF0 <..JX1+1>,<
		SKIPN B>,<
	8	MOVE .SAC,B
		XTXNN .SAC,C>>>,<
		TXNN B,C>
`P P  P 0P d  |'`
	.ACV2 (A)
	.ACV2 (d@ |H'~
   IFDEF|h A,<.IF A,SYMBO}L,<PRINTX ACVAR }(A ALREADY DEFINED}H>>
	A==.FPAC+..}hNAC	
	$A==A		
	IFB <B>,<..NAC~(=..NAC+1>
	IFNB ~H<B>,<
	...X==B~h
	IF2,<.IFN ...X,ABSOLUTE,<PRINTX( ?ACVAR A, B isH not absolute>>
h	..NAC=..NAC+...X>NAC=..NAC+...Xd` ((
	IFG A-H.NPAC,<PRINTX ?TOhO MANY ACS USED>
	IFLE A-4,<
	 ( JSP .A16,.SAVA>H	
	IFG A-4,<
	h  JSP .A16,.SAV8>JSP .A16,.SAV8>):A  ):9:A  9:
d; &x*u
	  IFIDN' <A><.>,<
		XMO'8VEI .A16,B	
		P'XUSH P,.A16>
	  I'xFDIF <A><.>,<
	(  .IFATM <A>,.BL(8F4	
	  .BLF1==0	(X	
	  IFN .BLF4,<(x		
	    .IF %A,)MACRO,<	
		.BLF1)8==1>	
	    IFNB )X<B>,<
		.BLF1==)x1>	
	    IFN .BL*F1,<		
		LOAD .A*816,A,B
		PUSH *XP,.A16>>
	  IFE *x.BLF1,<		;IF WASN+'T A STRUCTURE RE+8F,
	    IFN .BLF+X4,<		
	     .BLF+x2==<<Z A>&17B17>,-<P>B17 
	      ,8.IF .BLF2,ABSOLUT,XE,< 
	       IFE,x .BLF2,<		
	    -   .BLF1==1		
	 -8      .BLF3==<Z -XA>&777777
		PUSH-x P,.BLF3-..NA(P)>.>>> 
	  IFE .BLF.81,<		
		PUSH P,.XA>>	
	  ..NA=..NA+1
	  ..NA=..N
d;	 &8*3
	.BLCL1 A
	.BLCL1 
f=( #8*
	DEFINE #XA<-^OB(.FP)>
	$A==<Z A>>
	9  a`
	..CSN==bA
	..CSC==0
	Ib RP B,<
	IFE ..Cb@SN-..CSC,<
	  STb`OPI
	  ..CAS1 (cB)>
	..CSC==..CSC+1>..CSC==..CSD	P ?DP >D)6P D,xP D8YP D8sP D;PP D;QP D;QP D;RP D;RP D;SP D;WP D;WP D;XP D;XP D;YP 	D;YP 	D;ZP 
D;ZP 
D;[P D;[P D;\P 
D;\P 
D;]P D<ZP D=7P DH9P DI6P ?D\qP FH1P FmP S@P Z L		
	XLIST 
	LOC 0
	COPYRT@ A
     .IFN .,`ABSOLUTE,<PRINTX ?.CPYRT, COPYRIGH T IS NOT ABSOLUTE@>
     IFGE .-^O`22,<PRINTX %COPYR	IGHT DOESN'T FIT 	 IN SINGLE REL BLO	@CK>
	RELOC
	LIST
	SALL

	LIS,<H V9
	..PST==V8C&<-C>
	.IF0 .VX.PST-1,<
		SOS VxB>,<	
		MOVX .SAWC,-..PST 
		ADDM .SAC,B>		ADDMtH ((
	IRP A,H<
	  .ENAV2 (A)>	  .ENAV2 (A)tI (
	.ENAV3 (A)
	.ENAV3 tI H(
	PURGE A,A
  PURGE t,h $*#
	IRP A,$8<
   DEFINE A<....U>>FINE A<.v=H ix&Q
	IRP A,j<
	  .ENSV2 (A)>	  .ENSV2 (A)v=I jX&U
	.ENSV3 (A)
	.ENSV3 v=I k&Y
	DEFINE A<....U>EFINE vI9A  vI9~+H  j
	A (\..FORN)
	A (\..~. t
	A BP `P \Q X=|RQ &2 `@

	..IFT==``A		
	IFE ..IFT,a<
	B
	..IFT==0a >		
	IFN ..IFT,<
	C>N ..IFT,<&4 /+
	IRPC A/8,<
	B==0
	IFGE/X "A"-"A",<IFLE "/xA"-"Z",<B=1>> 
	IFGE "A"-"0",<08IFLE "A"-"9",<B0X=1>>
	IFE "A"-"0x%",<B=1>
	IFE "1A"-"$",<B=1>
	18IFE "A"-".",<B=1X1>
	IFE B,<STOPI>>IFE B,<STOP&t<H Sx'
	..PST==TC&<-C>	
	.IF0 T8..PST-1,<
		AOS TXB>,<	
		MOVX .STxAC,..PST	
		ADDM .SAC,B>		ADDM&tj7Q ?2DQ x6i2P ~6k0P 6k4P 6mtP 6MiTQ @;`P ?= X8K
	..TSIZ XX(..PST,C)
	.IF0Xx ..PST,<
		A BY>,<	
		..LDB .SAY8C,B,C 
		A .SAC>C 
		A .S?=	 ZX_
	..TSIZ Zx(..PST,C)
	.IF0[ ..PST,<
		A B[8>,<	
		..LDB .SA[XC,B,C
		A .SA[xC
		..DPB .SAC,B,C>DPB .SAC,A`Q JAd
Q LAd(Q NAd+Q PAdIQ RAdLQ TAdjQ VAdkQ JApQ bAtQ dAt)Q fAtHQ hAtKQ jAtjQ lAtkQ bAQ XAQ ZA*Q \AIQ ^AhQ `AkQ XAQ nA
Q pA+Q rAKQ tAjQ vAkQ nAQ xA+Q zAjQ |AkQ xB~ Cx$
	.PSHX1 (.POPX2).PSHX1 B~	 D8$#
	.POPX4 A
	.POPX4 B~	 E8$1
	A
   EXDEFINE .PSHX1 (WCExH,STUFF)<
	WCH (F<<STUFF>,<B>>)><STUFF>,<B>>)>B~
 Dx$'
	.POPX3 B
	.POPX3 C Ax$
	.PSHX1 (.PSHX2,<A>)1 C B8$
	A (<B>)
	A (<BC	 Bx$
   DEFINCE .PSHX1 (WCH,STUC8FF)<
	WCH (<<STUFF>,<A>>)><STUJDP'K%,z R<<<A>&<B >>B<^D70-POS(<B>)>>D70-POS(<B>K%\u ;Xk
<IFE <<F;xILIN.(<A>)&<^-A<>>>,<A>>!<IFN <<<8FILIN.(<A>)&<^-<XA>
>><<FILIN.(<<<x<RGHBT.(<<FILIN.(=<A>)&<^-A>>>)>_=8-1>>!<RGHBT.(A)>)>>>RGHBT.(A)>N
0@ N):A  N):N9:A  N9:Nd A" Nd Nd@A" Nd@Nd`A" Nd`NeA  NeNfA  NfO%=H dX&%
	.STKV2 (A)
	.STKV2 O%=I e&=
	IFB <Be8>,<..STKN==..STKNeX+1>
	IFNB <B>,<ex
	...X==B
	IF2f,<.IFN ...X,ABSOLf8UTE,<PRINTX ?STKVfXAR A, B is not fxabsolute>>
	..STgKN==..STKN+...X>
	..STKQ==..STKN+gX1
	.STKV3 (A,\..STKQ)V3 (A,\.O%=I h&K
   IFDEFh8 A,<.IF A,SYMBOhXL,<PRINTX STKVAR hxA ALREADY DEFINEiD>>
	DEFINE A<-i8^OB(P)>
	$A==<Z A>>
	$A==<Sd  nX&u
	.TRV2 (A)
	.TRV2 (Sd@ o'	
	.TRV3 (o8A,\..NV)	
	IFB oX<B>,<..NV=..NV+1ox>
	IFNB <B>,<
p	...X==B
	IF2,<p8.IFN ...X,ABSOLUTpXE,<PRINTX ?TRVAR pxA, B is not absqolute>>
	..NV=..NV+...X>..NV=..Sd` qX'
   IFDEFqx A,<.IF A,SYMBOrL,<PRINTX TRVAR r8A ALREADY DEFINEDrX>>
	DEFINE A<^OrxB(.FP)>
	$A==<Z A>>
	$A==<b\| 0
	.XCREF
	.XCRF1 <..ACT,.@.CSC,..CSN,..IFT,`..JX1,..MSK,..MX1,..MX2>
	.XCRF1  <..NAC,..NRGS,..N@S,..NV,..PST,..ST`KN,..STKQ,..STKR>
	.XCRF1 <..TRR, ..TSA1,..TX1,..TX@2,.FP,.FPAC,.NAC,`.SAC,.SAV1>
	.XCRF1 <.SAV2,.SAV3, POINTR,POS,WID,..@CAS1,..CNS,..CNS2`>
	.XCRF1 <..DPB,..GNCS,..ICNS,.. JE,..LDB,..STR0,.@.STR1,..STR2>
	.`XCRF1 <..STR4,..TQO,..TQZ,..TSAC,. .TSIZ,..TX,..TY,.@ACV1,.ACV2>
	.XC`RF1 <.ACV3,.CASE,.DECR0,.IF0,.INCR 0,.OPST1,.OPST2,.@STKV1>
	.XCRF1 <`.STKV2,.STKV3,.TRV1,.TRV2,.TRV3>
	.CREF
   3>
b)H @6
	IRP A,`<
	 IFDEF A,< .XCREF A>>A,< .cJyA  cJycJyA  cJyc&,ZA  c&,Zc&,zA  c&,z>}{woP