Google
 

Trailing-Edge - PDP-10 Archives - steco_19840320_1er_E35 - 10,5676/teco/source/mac.unv
There are 3 other files named mac.unv in the archive. Click here to see a list.
x
,E)@P C' 'XE
	PUSH.($'x$$VAL)
	$$$VAL==(B
	ASX...(A,AD(8D,SUB)
	POP.($$$(XVAL)
	SUPPRESS $$$VAL
PPRESS $C, RX
	IFE ..TRxSAC(A),<PRINTX ?S A is not a regiS8ster in ADR2PG>
	LSH	A,-^D9

C2L{G O}<^D35-<^L<O8RGHBT.(A)>>+<^D3OX7*<<^L<RGHBT.(A)>>/^D36>>>.(A)C6!cG /C
	.XCREF	/8$$$VAL,AMD...	
 6
	.IFN $$$VAL,AB68SOLUTE,<
		B	A6X,[$$$VAL]	
	> 
6x 
	.IF $$$VAL,AB7SOLUTE,<
		.COND78(<<<<$$$VAL>B53>,7X<BI A,$$$VAL>>,7x		       <<0>,<B8 A,[$$$VAL]>>>)
	> 
 
	SUPPRESS $$$VAL		
RESC:' 
89
	PUSH.	(
X$$$VAL)		
	$$$VA
xL==-1-<B>		
	TX'...(A,Z)			
	POP.	($$$VAL)		
COAcG *Xu
	.XCREF	*x$$$VAL,ASX...	
	+.IFN $$$VAL,ABSOL+8UTE,<
		B	A,[$+X$$VAL]	
	> ; End+x of .IFN $$$VAL,A,BSOLUTE
 
	.IF ,8$$$VAL,ABSOLUTE,<,X
 
		.COND(<<<$,x$$VAL-LH.ALF>,<B- A,[$$$VAL]>>,		-8       <<<$$$VAL>-XB53-RH.ALF>,<CI -xA,-<$$$VAL>>>,		.       <<0>,<AMD..8..(A,B)>>>)
	>.X 
 
	SUPPRESS $$$VAL		
RESS $E'%\u aX.
	A==0		ax; SET A TO ZERO
	IRP <C>,<
		b8A==A!<1B<BC>>
	>!<1B<BC>>2
	MOVX	Ax,B
	ANDCAB	A,C
	ANDCAB	A,30T1E'%{@ u01p
	MOVX	Ah,B
	IORB	A,C

	IORB	A,C/%T1T
cE2"@  
    IFE 0B,<..TA==0>		
P    IFN B,<EXP .p.TA		
	    PURGE ..TA>	
PURGE@t{Q E@v	VQP~E@vyQA~E@v9VQ|E@v:=Q3|EH Axn.q%.BA==%.BAD1B<C>=%.EJ
	IFNB <cB>,<
		%.0A==%.c80B 
		%.1A==%.cX1B
		%.2A==%.2cxB
		%.3A==%.3dB
	> 
	IFB <B>d8,<
		%.0A==<%.1dXA==0> 
		%.2A=dx=<%.3A==0>
	>
.3A==0>
	>XA ix.m
	$$$FST=j=B		
	$$$LST==j8C		
	.XCREF $$$FjXST,$$$LST
	REPEAjxT $$$LST-$$$FST+1k,<
		$$$WRD==$$$k8FST/BRBPW$	
		$$kX$BIT==$$$FST-<$$$kxWRD*BRBPW$> 
		IlFE $$$WRD-BRLEN$,l8<	
			$$$WRD==3	lX
			$$$BIT==$$$BlxIT+BRBPW$ 
		> 
		BR$$$$(A,\"<$m8$$WRD+"0">,$$$BITmX,D)
		$$$FST==$$$FST+1
	> 
$EJ\: e8.9
	$$$VAL=eX=B
	$$$VL1==B
	IFNB <C>,<$$$VfL1==C>
	.XCREF f8$$$VAL,$$$VL1
	BfXRK$$$(A,$$$VAL,$fx$$VL1,!)
	SUPPREgSS $$$VAL,$$$VL1
$$$VAL,$$$VL1 .y%.BAES| P
	REPEAT	P83,<
	TXCE	A,1B<B>!1B<C>
>B<EVMI n
 
;+.PA RA -8
;XXXTTL	Ma@cro to generate a` TITLE statement of the form:
;.B REAK
;-TITLE A @COMMENT VERSION
`	DEFINE ITTL,<IF	G G,<
	TITLE	A	  - H  %BDE(F	@)-G
>IFE G,<
	`	TITLE	A - H  %
BDE(F)
>>
 
 
;+.PARA -8
;XX
@X137	Macro to set
`up location 137 with the specified 
;-version numbe@r. Note: the macr`o does its own "L
OC" and "RELOC".
 
	DEFINE I137,<I
@FG G,<
	IF2,<LA
`LL>
	LOC	137
	BE((3)IWHO(9)I
	RELOC
	SALL
>	IFE G,<
	IF2,<LALL>
	LO@C	137
	BYTE (3)`IWHO(9)IVER(6)IMIN(18)IEDT	; A  %BDE(F)
	RE@LOC
	SALL
>>
 `
; Macro to define version # at c urrent location
@;+.PARA -8
;XXXV`RS	Macro to define the version num ber at an
;-arbi@trary user locati`on.
	DEFINE IVRS,<IFG G,<
	IF2 ,<LALL>
	BYTE (3@)IWHO(9)IVER(6)`IMIN(18)IEDT	; A %BDE(F)-G 
	SALL
>	IFE G@,<
	IF2,<LALL>
`	BYTE (3)IWHO(9)IVER(6)IMIN(18) IEDT	; A %BD@E(F)
	SALL
>>`
 
; Generate a PASS2 PRINTX stat ement
;+.PARA -8@
;-XXXPTX	Genera`tes a pass 2 PRINTX statement.
	D EFINE IPTX,<
	I@F2,<
	IFG G,<PR`INTX A %BDE(F)-G	H
>	IFE  G,<PRINTX A %B@DE(F)	H
>>>
` 
;+.PARA -8
;XXXUNV	Macro to ge nerate a UNIVERSA@L statement. The `macro in
;effect is an exact copy  of the XXXTTL ma@cro except that t`he
;-word "UNIVERSAL" replaces th e word "TITLE".
@	DEFINE IUNV,<IF`G G,<
	UNIVERSAL A - H  %BD E(F)-G
>IFE G@,<
	UNIVERSAL A` - H  %BDE(F)
>>
 
;+.PAR A -8
;XXXERR	Mac@ro to type a fata`l error message on the
;user's te rminal. The call @is of the form:
`;.BREAK
;XXXERR (ZZZ,Error messag e,<PDP-10 instruc@tion>)
;.BREAK
`;ZZZ is the 3-character error code , error message i@s the ASCIZ
;str`ing to be typed o n the terminal an  d PDP-10 instruct @ion is
;an optio `nal argument indi!cating what the u! ser wants to do
!@;about the error !`just typed. If th"e argument is nul" l an
;-EXIT is e"@xecuted.
	DEFINE"` IERR (COD,MSG,I#NSTR),<
I'COD:	# JRST	[
	OUTSTR	[#@ASCIZ \
? I'COD#` MSG\]
	IFNB <IN$STR>,<INSTR>
	IF$ B <INSTR>,<EXIT>
]>
 
;+.PARA -$`8
;XXXWRN	Macro %similar to the XX% XERR macro except%@ that a
;warning%` message is issue&d rather than a f& atal and
;-the d&@efault PDP-10 ins&`truction to be ex'ecuted is "JRST .' +1".
	DEFINE IW'@RN (COD,MSG,INSTR'`),<
I'COD:	JRST(	[
	OUTSTR	[ASCI( Z \
% I'COD MSG(@\]
	IFNB <INSTR>(`,<INSTR>
	IFB <I)NSTR>,<JRST .+1>
]>
 
;+.PARA -)@8
;XXXNME	Macro )`to call another m*acro with the ver* sion number as an*@ argument.
;This*` macro is given t+he name of anothe+ r macro to call w+@ith the ASCII ver+`sion
;number as ,the only macro ar, gument.
;-
 
	,@DEFINE	INME(MCRN,`ME)<
IFG G,<
	-MCRNME'(<%BDE(- F)-G>)
>
IFE -@G,<
	MCRNME'(<%-`BDE(F)>)
>>
 

F)>)
>>@ u83
			PUSH.uX($$$VAL)
			$$$VuxAL==B
			CAX..(vA,)
			POP.($$$v8VAL)
			SUPPRESS $$$VAL
		RESSGAc@ rX
	.XCREF	rx$$$VAL,CAX..	
s
	.IFN $$$VAL,ABSs8OLUTE,<
		CAMB sXA,[$$$VAL]	
	> sx; End of .IFN $$$tVAL,ABSOLUTE
 
t8	.IF $$$VAL,ABSOLtXUTE,<
		.COND(<<tx<<$$$VAL>B53>,<CAuIB A,$$$VAL>>,	8	       <<0>,<CAMXB A,[$$$VAL]>>>x)
	> ; End of .IF $$$VAL,ABSOLUTE
 
 
BSOLUTEGD x
			PUSH.($$$VAL)
			$$$V8AL==B
			CAX..(XA,A)
			POP.($$x$VAL)
			SUPPRESS $$$VAL
		RESGDP yxW
			PUSH.z($$$VAL)
			$$$Vz8AL==B
			CAX..(zXA,E)
			POP.($$zx$VAL)
			SUPPRESS $$$VAL
		RESGDp x8K
			PUSH.xX($$$VAL)
			$$$VxxAL==B
			CAX..(yA,G)
			POP.($$y8$VAL)
			SUPPRESS $$$VAL
		RESGDy  vx?
			PUSH.w($$$VAL)
			$$$Vw8AL==B
			CAX..(wXA,GE)
			POP.($wx$$VAL)
			SUPPRESS $$$VAL
		REGE@ ~8{
			PUSH.~X($$$VAL)
			$$$V~xAL==B
			CAX..(A,L)
			POP.($$8$VAL)
			SUPPRESS $$$VAL
		RESGEI  |xo
			PUSH.}($$$VAL)
			$$$V}8AL==B
			CAX..(}XA,LE)
			POP.($}x$$VAL)
			SUPPRESS $$$VAL
		REGE` {8c
			PUSH.{X($$$VAL)
			$$$V{xAL==B
			CAX..(|A,N)
			POP.($$|8$VAL)
			SUPPRESS $$$VAL
		RESGlS@ t'#B(..CFM,t0A,C,<D,E,E,,>),C,<D,E,E,,>)Gls@ wp'AB(..CFM,xA,C,<D,G,L,LE,GE>)<D,G,L,LE,GGly' v0'5B(..CFM,vPA,C,<D,GE,LE,LE,GE>)D,GE,LE,LEGmC@ xP'GB(..CFM,xpA,C,<D,L,G,GE,LE>)<D,L,G,GE,LGmI' w';B(..CFM,w0A,C,<D,LE,GE,GE,LE>)D,LE,GE,GEGmc@ tp')B(..CFM,uA,C,<D,N,N,,>),C,<D,N,N,,>)GA` 
P(eB(..CFX,A,C,<D,,A>),GD@ P(]B(..CFX,A,C,<D,E,N>)GDs@ (qB(..CFX,A,C,<D,G,LE>)GDy' (yB(..CFX,A,C,<D,GE,L>)GEC@ P(uB(..CFX,A,C,<D,L,GE>)GEI' 
(aB(..CFX,A,C,<D,N,E>)G>qcG Vx7...CON A ...CON A G>tCG Ux/..COND A ..COND A Hv9wQ @I#@ d&!B(..DECR,A,C)B(..DECR,I63G wHB

	DEFINE	whA(MACRO,AC,Y,LISxT),<
		MACRO	(ACx(,Y,B,C,D,A,E,<LIST>)
	> 
I6;' p
	IF1,<IFp(DEF A,<
		.IF pHA,LOCAL,<
			IFNph <A-B>,<
			PRqINTX ? A is multq(iply defined>>
	qH	.IFN A,LOCAL,<PqhRINTX ? A is mulrtiply defined>>
r(	     IFNDEF A,<rHA==B>>
	IF2,<A==B>
	IF2,<I6= s8

	..NUM==s(1
	..SGN==0
	.XsHCREF ..NUM,..SGN	sh
	IFNB <D>,<..NtUM==D> 
	IFNB <t(E>,<		
		.COND(tH<<<..IFIDN(SINGFLth,SIGNED)&..IFE(Cu+1)>,<..SGN==D%.Su(GN>>,			<<..IFIDNuH(SINGFL,UNSIGNED)uh>,<>>,			<<0>,<PRvINTX ? E should v(be either SIGNED vHor UNSIGNED>>>)
vh	> 
	DEFS..(A,<wB>,<C>,\..NUM,\..SGN)
..NUM,\IfM /@
	IF2,<
/`		PURGE	ATTL,AE0RR,AWRN,ANME,A/ PTX
		PURGE	A13/7,AUNV,BUILD$,A2pVRS
	>; End of IF2
>; End of II'7 2x
			PUSH.3($$$VAL)
			$$$V38AL==B
			AMD...3X(A,DIV)
			POP.3x($$$VAL)
			SUPPRESS $$$VAL
		Kc  H8G
	IRP	A,HX<
	IF2,<	IFNDEF	HxA,<EXTERN A> >>,<EXTERN A> >>M&. =xw
			PUSH.>($$$VAL)
			$$$V>8AL==B
			..FP(>XA,FADR)
			POP.(>x$$$VAL)
			SUPPRESS $$$VAL
		RMe@ p.}
IF2,<IFNox .-A,<PRINTX ? CoXan not fall into A>>
all into M6. B8
			PUSH.BX($$$VAL)
			$$$VBxAL==B
			..FP(CA,FDVR)
			POP.(C8$$$VAL)
			SUPPRESS $$$VAL
		RM&eG N8u<<A>!<<LFNXTBT.(A)>-<RGHBT.(A)>>>-<RGHBT.M7. @x
			PUSH.A($$$VAL)
			$$$VA8AL==B
			..FP(AXA,FMPR)
			POP.(Ax$$$VAL)
			SUPPRESS $$$VAL
		RMJ80Y
	
    .XXCREF			

8 DxEFINE FR%AME(ITEM)<FR%%AM(ITEM)> 

    DEFINE FR%X%AM(A,B<1>),<
	FxR%%%A(A,\<N%%%+1>)	
	N%%%==N%%%+B8		
    >; End ofX FR%%AM macro defxinition

    DEFINE FR%%%A(NAME,8OFFSET)<
	DEFINEX	NAME<-^O<OFFSET>x(P)>
    >

    .XCREF FR%AME, 8FR%%AM, FR%%%A 
X    .CREF			

x   OLD%%%==10			
    .XCREF OLD%%8%		
    RADIX  8X			
    N%%%==0	x		
    .XCREF N%%%			
    IRP A8,<
	FR%AME	(A)	X	
				
    >
	xADJSP	P,N%%%		
		PUSHJ	P,b		
	  	8SKIPA
	AOS	-N%%%	X(P)	
	ADJSP	P,-N	x%%%		
	POPJ	P,		

b:!
	.XCREF	
8b		
	RADIX	OLD%%
X%
	PURGE	N%%%,OL
xD%%%
	PURGE	FR%AME, FR%%AM, FR%%%A
R%%AM, FR%%%MN. ?8
			PUSH.?X($$$VAL)
			$$$V?xAL==B
			..FP(@A,FSBR)
			POP.(@8$$$VAL)
			SUPPRESS $$$VAL
		RM\u|RQ O'8 (1;2INSVL.(0,GXW.ZER)!INSVL.(<IFxNB <A>,<-1>>,GW.IND)!INSVL.(C,GW8.IDX)!INSVL.(B,GW.ADR)SVL.(B,G31!0O2|  I8U
	IRP	A,IX<
	IF2,<	.XCREF
		.IF A,LOCAL,<JINTERN A>
		.IFJ8 A,NEEDED,<EXTERJXN A>
		.CREF
>>A>
		.CREF
>O\tQ O\uQ O\uRQ  O\uySP O\v3P'~O\v91Q xO\w)9Q @Qf@ +SNn 48-
			PUSH.4X($$$VAL)
			$$$V4xAL==B
			AMD...5(A,IDIV)
			POP58.($$$VAL)
			SUP5XPRESS $$$VAL
		RESS $$$VAL
		SNp @S7-N 1
			PUSH.18($$$VAL)
			$$$V1XAL==B
			AMD...1x(A,IMUL)
			POP2.($$$VAL)
			SUP28PRESS $$$VAL
		RESS $$$VAL
		S:#@ Wp%?B(..INCR,A,C)B(..INCR,S;k Px<<<A>B<POS(<B>)>>&<B>>S;$k S-:&	.BIT. <==SHLFTBT.(B)>
	DEFShINE	FLAG (NAM)
 T<	DEFSM.(AC'NAMT(,<.BIT.>)
	SUPPRTHES	BIT$$$
	SHOW.Th	<<AC'NAM>>
  U IFN B+1, IFN AU(C'NAM&<-B-1>, PUHRINTX ? Flag maskUh for AC'NAM excVeeded
   IFE B+V(1, IFE AC'NAM, VHPRINTX ? Flag masVhk for AC'NAM exWceeded
  >
	.XCW(REF	.BIT.,BIT$$$
	.BIT.,BIT$$$-1$NAME,Y,S;%m6 XH-r& 	.INT. <==YB>
	DEFINE	NUM Y((NAM,SIZ<1>)
  <YH	DEFSM.(DA'NAM,Yh<.INT. (,SIZ)>)
Z	SHOW.	<<DA'NAMZ(>>
   IFN C+1, ZHIFN DA'NAM&<-<ZhC_-<ALIGN. (C)>>[-1>, PRINTX ? NUM[( field for DAxx[Hx symbols exceede[hd with symbol D\A'NAM
	SUPPRES	I\(NT$$$			
 > 
	.\HXCREF	.INT.,INT$$\h$		
	DEFINE	ENDN]UM(NAM<MAX>)<
	 ](   DEFSM.(DA'NA]HM,<.INT.(,0)>)
	]h    DA'NAM==D^A'NAM-1
	    PUR^(GE NUM,ENDNUM
	>
UM,ENDNUM
	>23-<0'-1UE,A,$FINE CFS;&= <Xb%p
 
	DEFI<xNE	SYNSTR(OLD,NEW=),<
		SYN	CB'O=8LD,CB'NEW	
		S=XYN	BC'OLD,BC'DNEW	
		DEFST.(AD('NEW,CB'NEW,BDHC'NEW) 
	> 

	DhDEFINE	WORD(NAM,NEUMB<1>),<
		IFN E(<..MSK>,<..OFF==.EH.OFF+1> 
		DEFSMEh.(CB'NAM,..OFF)F	
		DEFSM.(BC'F(NAM,FW.ORD) 
		IFHFE <NUMB-1>,DEFSTFh.(A'NAM,CB'NAMG,BC'NAM,NUMB,SIG(GNED) 
		IFN <NUGHMB-1>,DEFST.(A'NGhAM,CB'NAM,BC'HNAM,NUMB) 
 
		H(..MSK==0		
		..OHHFF==..OFF+NUMB	
Hh		SHOW.	CB'NAM	I
		SHOW.	BC'NAI(M	
	> 
 
 
	DIHEFINE	HALF(NAM),<Ih
		.COND(<<<..MSJK&LH.ALF>,<DEFSM.J((BC'NAM,LH.ALF)JH>>,		  <<..MSK&RHJh.ALF>,<DEFSM.(BKC'NAM,RH.ALF)>>,	K(	  <<0>,<..OFF==.KH.OFF+1		
			..MSKhK==LH.ALF		
			DLEFSM.(BC'NAM,LHL(.ALF)>>>) 
 
		LHDEFSM.(CB'NAM,.Lh.OFF)	
		DEFST.(MA'NAM,CB'NAM,M(BC'NAM) 
 
		.MH.MSK==..MSK!BC'MhNAM	
		SHOW.	CNB'NAM	
		SHOW.	N(BC'NAM	
	> 
NH
 
	DEFINE BYT(NNhAM,SIZ,POS),<
		O..FLG==0		
		IFBO( <POS>,<IFB <SIZ>OH,<
			...MSK==RGOhTMSK(<<^-<<..MSK>P>>>)	
			IFE ...P(MSK,<..OFF==..OFFPH+1	
				..MSK==0Ph		
				...MSK==-Q1		
			> 
			BYQ(TM(NAM,<...MSK>) QH
							
			..FQhLG==-1			
		>> 
		IFNB <SIZ>,<.SR(IZ==^D<SIZ>>	
RH
		IFNB <POS>,<		Rh
			BYTM	(NAM,MASSK.(.SIZ,POS)) 
S(			..FLG==-1		
	SH	> 
 
		IFE ..FShLG,<IFGE <^D<.SIZT>-^D36>,<	
			WOT(RD(NAM,<^D<.SIZ>/TH^D36>) 
			IFN <Th<^D<.SIZ>-<^D<.SIUZ>/^D36>*^D36>>,<U(	
				BYT(...,<<UH^D<.SIZ>-<^D<.SIZUh>/^D36>*^D36>>) 
				PURGE CB..V(.,BC...,A...
VH			> 
 
			..FLVhG==-1	
		>> 
W
		IFE ..FLG,<IFEW( <^D<.SIZ>-^D18>,WH<	
			HALF(NAM)	Wh
			..FLG==-1	
X		>> 
 
		IFE .X(.FLG,<		
			..BIXHTS==MASK.(^D<.SIZXh>,<^D<.SIZ>-1>) 
 
			REPEAT <^DY(36-^D<.SIZ>+1>,<	YH
				IFE ..FLG,<Yh	
					IFE <..BIZTS&..MSK>,<	
			Z(			..MSK==..MSK!.ZH.BITS 
						..FZhLG==-1	
					> ;[ End of IFE <..BI[(TS&..MSK>
 
			[H	IFE ..FLG,..BITS[h==..BITS_<-1> 
	\			> 
			> 
 
\(			IFE ..FLG,<	
\H				..BITS==MASK.\h(^D<.SIZ>,<^D<.SI]Z>-1>) 
				..OF](F==..OFF+1	
				]H..MSK==..BITS	
	]h		> 
 
			DEFSM^.(BC'NAM,..BITS^() 
			DEFSM.(C^HB'NAM,..OFF)	
		^h	DEFST.(A'NAM,C_B'NAM,BC'NAM) _(
			SHOW.	CB'N_HAM	
			SHOW.	B_hC'NAM	
		> 
	> `
	DEFINE	BYTM(NA`(M,MASK),<
		IFN `HMASK&..MSK,<	
		`h	..MSK==0	
			..aOFF==..OFF+1	
		a(> 
 
		..MSK==.aH.MSK!MASK	
 
		ahDEFSM.(CB'NAM,.b.OFF)	
		DEFSM.(b(BC'NAM,MASK)	
bH		DEFST.(A'NAM,bhCB'NAM,BC'NAM)c 
		SHOW.	CB'Nc(AM	
		SHOW.	BCcH'NAM	
	> 
 
ch
	DEFINE ENDSTR(NdAM<LEN>),<
 
		d(IFN ..MSK,<..OFF=dH=..OFF+1>	
					dh	
		DEFSM.(CB'eNAM,..OFF)	
 
	e(	SHOW.	CB'NAM	
		IF2,<
			IFDEehF ...MSK,<SUPPRESfS ...MSK>
			IFDf(EF ..BITS,<SUPPREfHSS ..BITS>
			IFfhDEF .SIZ,<SUPPRESgS .SIZ>
			IFDEFg( ..MSK,<SUPPRESS gH..MSK>
			IFDEF gh..OFF,<SUPPRESS .h.OFF>
			IFDEF .h(.FLG,<SUPPRESS ..hHFLG>
		>; End ofhh IF2
		IF1,<
		i	IFDEF ...MSK,<.Xi(CREF ...MSK>
			iHIFDEF ..BITS,<.XCihREF ..BITS>
			IjFDEF .SIZ,<.XCREFj( .SIZ>
			IFDEF jH..MSK,<.XCREF ..MjhSK>
			IFDEF ..FkLG,<.XCREF ..FLG>k(
			IFDEF ..OFF,kH<.XCREF ..OFF>
	kh	>; End of IF1
	l> 
 
	..MSK==0	l(
	..OFF==D	

 
 
=D	
2/a0$$$VAL)S? "02
				PUSH"P.($$$VAL)
				$$"p$VAL==B
				TX.#..(A,O)
				POP#0.($$$VAL)
				SU#PPPRESS $$$VAL
			1-US\tP'S\uQ xS\uRQ S\uySP S\u|Q `S\v3P'~S\v)3Q U +,U +(U  +$Up +U~` +"U?0 +0UKI@ +UVn
 X1
IFDIF <xB><C>,<
	JFCL	1
,.+1		
	JRST	.+1
8		
IFNB <B>,<	J
XFCL	1,B
  IFNB 
x<C>,<IFIDN<<C><
IFB<B>,<	JFCL	
  IFIDN <C><D>,<IFIDN <D>8<E>,< JRST	C>>>X
>
 
IFDIF <Cx><D>,<
	HRLOI	A,-2		
IFNB <C>8,<	AOBJP	A,C
 X IFNB <D>,<IFIDNx <D><E>,<JRST	D>>>
IFB <C>,<I8FDIF <D><E>,<AOXBJP A,i>
	    xIFIDN <D><E>,<AOBJN A,D>>
>
8 
IFDIF <D><E>X,<
	IF2,<IFE A,x<PRINTX ? A MUST BE NON-ZERO IN J8UMPPT>>
	MOVEI	XA,0		
	BLT	A,0	x	
IFNB <D>,<	JUMPE	A,D
  IFNB8 <E>,<	JRST	E>>X
IFB <D>,<	JUMPxN	A,E>
>
 
i:,E>
>
 
Y$-oMxo<1B<^L<A>>><1B<^L<A>Y tQ xY"
@  C..LOAD	(A0,,B,C,1,C,0,),B,C,1,C,0,)Y>
C@ p GB	(..LOAD,A,C,)(..LOADY>
I' P!-B	(..LODE,A,C,)(..LODEY>
Lg p wB	(..LODS,A,C,)(..LODSYO%yG OP-
	IFNDEF OpLSTIN.,LSTIN.==0 P	
IFE LSTIN.,<
P0	IFIDN <XCREF><APP>,<.XCREF>	
		  Pp XLIST>		
	LSTIN.==LSTIN.+1STINYO%{G Q0-
	IFG LSTQPIN.,LSTIN.==LSTINQp.-1	
	IFLE LSTINR.,<.CREF		
		      LIST>
		   [k 50CIFG 0,<
	5PIF2,<LALL>
	LOC	5p137
	BYTE (3)MAC6WHO(9)MACVER(6)MA60CMIN(18)MACEDT	; 6PMAC %1(41)-0
	RE6pLOC
	SALL
>	IFE7 0,<
	IF2,<LALL>70
	LOC	137
	BYTE7P (3)MACWHO(9)MACV7pER(6)MACMIN(18)MA8CEDT	; MAC %1(41)80
	RELOC
	SALL
>RELOC
	SALL
[qQ MAC[YP [\Y @p
MACA:	JARST	[
	OUTSTR	[AA0SCIZ \
? MACA APB\]
	IFNB <C>,<ApC>
	IFB <C>,<EXIT>
] <C>,<E[Z7P [k2 Cp#
IFG 0,<
	A(<%1(41)-0>)
>
IFE 0,<
	A(<%1(41)>)
>A([o
	IF2,<
<	IFG 0,<PRINTX MA<0C %1(41)-0	DECsys<Ptem-10/20 common <pparameter file
>=	IFE 0,<PRINTX MA=0C %1(41)	DECsyste=Pm-10/20 common pa=prameter file
>>ameter file
>>[:<Q [[M 3'IFG 0,<
	30TITLE	MAC - DECsy3Pstem-10/20 common3p parameter file  4%1(41)-0
>IFE 0,40<
	TITLE	MAC - D4PECsystem-10/20 co4pmmon parameter file  %1(41)
>fi[[[ >0IFG 0,<
	>PUNIVERSAL MAC - D>pECsystem-10/20 co?mmon parameter fi?0le  %1(41)-0
>IF?PE 0,<
	UNIVERSAL?p MAC - DECsystem-@10/20 common para@0meter file  %1(41)
>file  %1(41[i9P [lY 8p[IFG 0,<
	9IF2,<LALL>
	BYTE90 (3)MACWHO(9)MACV9PER(6)MACMIN(18)MA9pCEDT	; MAC %1(41):-0
	SALL
>	IFE :00,<
	IF2,<LALL>
	BYTE (3)MACWHO(:p9)MACVER(6)MACMIN;(18)MACEDT	; MAC ;0%1(41)
	SALL
>1(41)
	SALL
>[zP [|W B0
MACA:	JBPRST	[
	OUTSTR	[ABpSCIZ \
% MACA CB\]
	IFNB <C>,<C0C>
	IFB <C>,<JRST .+1>
]>,<J[3@ Lxg<<<1_<A>>-1>B<B>>_<A>>[>&: . t
	LALL
	.@%%A==VRSN.(A)
	SALL
N.(A)
[?7 j}
	PUSH.($j8$$VAL)		
	$$$VALjX==B		
	.XCREF	$jx$$VAL		
 
	.IFNk $$$VAL,ABSOLUTE,k8<MOVE A,[B]>
 kX
	.IF $$$VAL,ABSkxOLUTE,<
		.COND(l<<<$$$VAL_-^D18>,l8<MOVEI A,$$$VAL>lX>,		   <<$$$VAL_^lxD18>,<MOVSI A,($m$$VAL)>>,		   <<<m8$$$VAL_-^D18>-RH.mXALF>,<HRROI A,$$mx$VAL>>,		   <<<$$n$VAL_^D18>-LH.ALFn8>,<HRLOI A,($$$VnXAL-RH.ALF)>>,		  nx <<0>,<MOVE A,[$o$$VAL]>>>)
	>
	o8POP.($$$VAL)		
	oXSUPPRES	$$$VAL		
PRES	$$$VAL		
			PUSH./x($$$VAL)
			$$$V0AL==B
			AMD...08(A,MUL)
			POP.0X($$$VAL)
			SUPPRESS $$$VAL
		] 1P
	IFNDEF	A,<A==B>
F	]` 001
	IFNDEF	FA,<A==B>
	SHOW.	(A)

	SHO]@ FX7
	NDS.	AFx,<B>
	INTERN	A
>
	INTERN	A_:.3@ Ip$OB	(..ONES,A,C,)(..ONESa
tTQ  a
tQ a
t*9Q a
t>(Q  a
t>(Q a
tk{Q a
tm3Q a
uJ8Q @a
uiQ a
u}SQ @a
vZ7Q a
v\yQ a Q8
	IFE ..TQXSAC(A),<PRINTX ?Qx A is not a regiRster in PG2ADR>
	LSH	A,^D9

a*n	r 5 a*n 4`a+= 5a+= +a+ - a+-\ 4@a+-\ 5`a+-\ 4 a+-\ 5@a>Mm L8cPOINT WID(B),A,POS(B)(a?` dX-
		POP..(dxA,\..STKP)
		..eSTKP==..STKP-1
	e8	SUPPRESS ..STKP
		.XCREF	POP.,POP..
	F	POP.,POa?c@ f3
		A==.Sf8$B
		PURGE	.S$B
		PURGE	.S$a?H6 +a? KX_<^L<A>+^LKx<-<<A>_<^L<A>>>-1>-1><^L<A>>>aW@ \
		IFNDEF`8 ..STKP,<..STKP==`X0>
		IFNDEF A,<`xA==0>
		$$$PVL=a=A
		.XCREF	$$$a8PVL,..STKP
		..SaXTKP==..STKP+1
		axPUSH..($$$PVL,\..bSTKP)
		SUPPRESSb8 ..STKP
		.XCREFbX	PUSH.,PUSH..
	PUSH.,PUSH..
	aWG c!
		.XCREFc8
		.S$B==A
		cXSUPPRESS A
		.CcxREF
		.XCREF .S$dB
		SUPPRESS .S$B
	PPRESS.SeD-YM8k<<A>&-<A>><<A>&-<Ae%\u lht<IFER<<FILmIN.(<A>)&<^-A>>m(>,<A>>!<IFN <<FImHLIN.(<A>)&<^-A>mh>><<FILIN.(<<<RGHnBT.(<<FILIN.(<A>n()&<^-A>>>)>-1>>nH!<RGHBT.(A)>)>>>RGHBT.(A)>)>>>e tP'e"
	0pEXP	<A>
	.ORG	.-1
			.CREFG	.gR~  P!]..STOR(A,,B,C,1,C,,),gR~#@ !aB	(..STOR,A,C,)(..STORgR~)  fxM
	$$$VAL=g=D
	.XCREF	$$$Vg8AL		
	.COND	(<<<gX$$$VAL>,<SETZM Bgx>>,		<<$$$VAL+1>,h<SETOM B>>,		<<0h8>,<MOVX A,$$$VALhX
		     MOVEM Ahx,B>>>)
	IFNB <iC>,<
		MOVE	A,[i8B,,B+1]
		BLT	iXA,C
	> 
	SUPPRESS $$$VAL		
gR~*' '0"E
	PUSH.($'P$$VAL)
	$$$VAL=='pA		
	.XCREF	$$$(VAL		
	C(..STRI(0,B,D,$$$VAL)
	(PPOP.($$$VAL)
	SUPPRESS $$$VAL
gR~,g  P"B	(..STRS,A,C,)(..STRSgV )Q
	PUSH.($)8$$VAL)
	$$$VAL==)XB
	ASX...(A,SU)xB,ADD)
	POP.($$$*VAL)
	SUPPRESS $$$VAL
PPRESS $iI3 px/#
    IFDEpXF TABENT,<PRINTX p8? TABDEF missing q8TABEND before "TAqXBDEF A,B,C">
qx    DEFINE  TABENrT(OFF,VALUE)<
	.r8ORG	ATBL+B'OFF
	VALUE
    >
 rx   DEFINE  TABENDs<
	.ORG	ATBL+1+s8BMAX
	PURGE	TABsXEND,TABENT
    >sx
 
ATBL:XLIST
    IFNB <C><REt8PEAT BMAX+1,<EXP C>>
	LIST
Pi'%I' w4
	.XCREF
	...Z==0
	IFNDEw@F AVER,<...Z==-1w`>
	IFNDEF AMIN,x<...Z==-1>
	IFNDx EF AEDT,<...Z==-x@1>
	IFNDEF AWHOx`,<...Z==-1>
	IFLy ...Z,<PRINTX ?Syy mbols AWHO,AVERy@,AMIN and AEDT y`not defined
	PRIzNTX ?Version symbz ols must be definz@ed before callingz` TITLE. macro
EN{D>
	.CREF
	IF2,{ <LALL>
	ASIX==S{@IXBIT /A/	; B a{`bbreviation in SI|XBIT
	AASC==ASC| IZ /A/	; B abbr|@eviation in ASCII|`
	SALL
	.XCREF
%FIRST=AMIN/^D2} 6
IFE %FIRST,<%S}@ECON==AMIN
	%FI}`RST==0>
IFG %FIR~ST,<%SECON=AMIN-~ <^D26*%FIRST>>
I~@FE AMIN-^D26,<%S~`ECON==AMIN
	%FIRST=0>
IFE AMIN -^D52,<%SECON==^D@26
	%FIRST=1>
	`IFG	AMIN-77,<
PRINTX ? Minor ver sion number too l@arge - ignoring i`t
	AMIN==0
	%SECOND==0
	%FIRST ==0
>
IFN %FIRS@T,%FIRST==%FIRST+`"A"-1
IFN %SECOND,%SECOND==%SECON D+"A"-1
; DEFINE@ ALL THE MACROS
`IFN %FIRST,IFN %SECOND,BUILD$ (B, \AVER,\AMIN,\"%@FIRST,\"%SECON,\`AEDT,\AWHO,<C>,A)
IFE %FIRST,I FE %SECOND,BUILD$@ (B,\AVER,\AMI`N,,,\AEDT,\AWHO,<C>,A)
IFE %F IRST,IFN %SECON,B@UILD$ (B,\AVER,`\AMIN,,\"%SECON,\AEDT,\AWHO,<C >,A)
 
	IF2,<P@URGE %SECON,%FIRST,...Z>
.CREFSi`qc@ XO
	.XCREF	x$$$VAL,TX...	

	.IFN $$$VAL,ABS8OLUTE,<
		TDB XA,[$$$VAL]	
	> ;x End of .IFN $$$VAL,ABSOLUTE
 
	8.IF $$$VAL,ABSOLUXTE,<
		.COND(<<<x$$$VAL&LH.ALF>,<TRB A,$$$VAL>>,	X	       <<$$$VAL&8RH.ALF>,<TLB A,x($$$VAL)>>,		       <<<<$$$VAL>B538-RH.ALF>!<..IFIDNX(<B>,<Z>)&..IFIDxN(<B>,<O>)&..IFIDN(<B>,<C>)>>,<.8COND(<				<<<..IFXIDN(<B>,<Z>)>>,<xANDI A,^-$$$VAL>>,				<<<..IFIDN(8<B>,<O>)>>,<ORCMXI A,^-$$$VAL>>,	x			<<<..IFIDN(<B	>,<C>)>>,<EQVI A	8,^-$$$VAL>>>)>>,		X	       <<0>,<TD	xB A,[$$$VAL]>>>)
	> 
 
]>>>)ib $2+
				PUSH$0.($$$VAL)
				$$$P$VAL==B
				TX.$p..(A,C)
				POP%.($$$VAL)
				SU%0PPRESS $$$VAL
			>
Lg wYO%yGib %85
				PUSH%X.($$$VAL)
				$$%x$VAL==B
				TX.&..(A,CA)
				PO&8P.($$$VAL)
				S&XUPPRESS $$$VAL
			ESS $$$VAL
	ibP !x
				PUSH".($$$VAL)
				$$"8$VAL==B
				TX."X..(A,CE)
				PO"xP.($$$VAL)
				S#UPPRESS $$$VAL
			ESS $$$VAL
	ib` #X'
				PUSH#x.($$$VAL)
				$$$$VAL==B
				TX.$8..(A,CN)
				PO$XP.($$$VAL)
				S$xUPPRESS $$$VAL
			ESS $$$VAL
	ibp c
				PUSH8.($$$VAL)
				$$X$VAL==B
				TX.x..(A,N)
				POP
.($$$VAL)
				SU
8PPRESS $$$VAL
			ESS $$$VAL
		ibt 8
				PUSHX.($$$VAL)
				$$x$VAL==B
				TX...(A,NA)
				PO8P.($$$VAL)
				SXUPPRESS $$$VAL
			ESS $$$VAL
	ibtP 
xq
				PUSH)
				$$B
				TX.E)
				POVAL)
				SUPPRESS $$$VAL
			ESS $$$VAL
	ibu` X
				PUSHx.($$$VAL)
				$$$VAL==B
				TX.8..(A,NN)
				POXP.($$$VAL)
				SxUPPRESS $$$VAL
			ESS $$$VAL
	ibx "02
				PUSH"P.($$$VAL)
				$$"p$VAL==B
				TX.#..(A,O)
				POP#0.($$$VAL)
				SU#PPPRESS $$$VAL
			1-Uib| 8E
				PUSHX.($$$VAL)
				$$x$VAL==B
				TX...(A,OA)
				PO8P.($$$VAL)
				SXUPPRESS $$$VAL
			ESS $$$VAL
	ib|P x)
				PUSH.($$$VAL)
				$$8$VAL==B
				TX.X..(A,OE)
				POxP.($$$VAL)
				SUPPRESS $$$VAL
			ESS $$$VAL
	ib}` X7
				PUSHx.($$$VAL)
				$$$VAL==B
				TX.8..(A,ON)
				POXP.($$$VAL)
				SxUPPRESS $$$VAL
			ESS $$$VAL
	icP S
				PUSH8.($$$VAL)
				$$X$VAL==B
				TX.x..(A,Z)
				POP.($$$VAL)
				SU8PPRESS $$$VAL
			ESS $$$VAL
		icT 8}
				PUSHX.($$$VAL)
				$$x$VAL==B
				TX...(A,ZA)
				PO8P.($$$VAL)
				SXUPPRESS $$$VAL
			ESS $$$VAL
	icTP xa
				PUSH.($$$VAL)
				$$8$VAL==B
				TX.X..(A,ZE)
				POxP.($$$VAL)
				SUPPRESS $$$VAL
			ESS $$$VAL
	icU` Xo
				PUSHx.($$$VAL)
				$$$VAL==B
				TX.8..(A,ZN)
				POXP.($$$VAL)
				SxUPPRESS $$$VAL
			ESS $$$VAL
	k:*b gX.K
	$$$VAL=gx=B
	$$$VL1==B
	IFNB <C>,<$$$Vh8L1==C>
	.XCREF hX$$$VAL,$$$VL1
	BhxRK$$$(A,$$$VAL,$i$$VL1,&^-)
	SUPPi8RESS $$$VAL,$$$VL1
$$$VAL,$$$VLmHtYP'mHuZ7Q xmHvi9Q |mHvzQ pmKc@ 20BYTE (3)A2PWHO (9)AVER (6)AMIN (18)AEDTo&  KY<^L<-<<A>_<^L<A>>>-1>>>q
f@ q"eJ  P q*-` +
q+= +
q6~i4 C q? $2+
				PUSH$0.($$$VAL)
				$$$P$VAL==B
				TX.$p..(A,C)
				POP%.($$$VAL)
				SU%0PPRESS $$$VAL
			>
Lg wYO%yGq@ G8?
	INTERN	GXA
	IFB  <C>,<GxA==B>
	IFNB <C>,<A=B>
$<CqBpL+us@<#aB	(..ZERO,A,C,)(..ZERO$*:P 
    IFDEyF ..BSIZ,<PRINTX y0?Missing $EOB aftyPer a $BUILD>
   yp ..BSIZ==0			
  z  ..BLOC==.			
 z0   REPEAT B,<
	zPBLD0.(\..BSIZ,0)	zp
	..BSIZ==..BSIZ{+1	
    >; End o{0f REPEAT B

DE{PFINE	$SET(STR,VAL{pUE),<
	A'STR (.|.SET,,,<VALUE>)
|0>

DEFINE	$SETF|PL(STR,VALUE),<
	|pA'STR (..STF,,,<}VALUE>)
>

DEF}0INE	$EOB,<
~IFN}P <.-..BLOC>,<PRIN}pTX ?Address chang~e between $BUILD(~0A,B) and $EOB>
  LSTOF.			
  .~p.T==0			
  REPEAT ..BSIZ,<
     0BLD0.(\..T,1)		
P     ..T==..T+1		p	
  >
  PURGE  ..T,..BSIZ,..BLOC0,$SET,$EOB
  LSTPON.
>; End of $EOB defintion
E
9Q x
9P 
9
Q x
9
P 
9Q x
9Q ?~
9Q x
9Q ?~8t;w 9
		B
8v9:  +

  IFN <<0..TA>&B>,<PRINTPX ?Initial E of pD not zero in $SET>
  IFN C-1,<0PRINTX ?Only singPle word values alplowed in $SET>
 ..TA==..TA!<IN0SVL.(<<E>>,B)>
.(<<E>>,B)>

    IFN pC-1,<PRINTX ?Only single word val0ues allowed in $SPET>
    ..TA==..TA!<E>
A==.:k  q0(/
	.XCREF	XX..CFM
   DEFINE Xx...CFM(VALUE,PST1Y,PST2,PST3,PST4),Y8<
	.XCREF	...CFMpp
	$$$LOC==CB
q	$$$VAL==VALUE
	p0.XCREF	$$$LOC,$$$pPVAL

	.COND(<<<YX<D+1>!<^-<..TSACYx($$$LOC)!..TSAC($qP$$VAL)>>>,<	    .qpCOND(<<<^-..TSAC(r$$$VAL)>,<		.CONDr0(<<<E-1>,<CAM'PSrPT2 $$$VAL,CB>>,rp		     <<E-2>,<	s		.COND(<<<..IFIDs0N(PST1,E)&..IFIDNsP(PST1,N)>,<			   sp CAMN  $$$VAL,CuPB
			     CAME $up$$VAL+1,1+CB
	v		IFIDN <PST1>,<Ey0>,<SKIPA>>>,			<<yP0>,<CAMN $$$VAL,ypCB
			     CAM'zPST2 $$$VAL+1,1+z0CB
			     CAM'zPPST4 $$$VAL,CB>zp>>)>>,		 <<0>,<PR{INTX ?Too many wo{0rds for F>>>)>>,{P	    <<0>,<.COND({p<<<E-1>,<CAM'PST|1 $$$LOC,VALUE>>,|0		<<E-2>,<		    |P.COND(<<<..IFIDN(|pPST1,E)&..IFIDN(P}ST1,N)>,<			CAMN	}0$$$LOC,VALUE
			}PCAME	$$$LOC+1,1+V}pALUE
			IFIDN <P~ST1>,<E>,<SKIPA>>~0>,		    <<0>,<CAM~PN	$$$LOC,VALUE
	~p		CAM'PST1 $$$LOC+1,1+VALUE
			CA0M'PST3 $$$LOC,VALPUE>>>)>>,		<<0>,<pPRINTX ? Too many words for F>>>)0>>>)>>,	<<..IFB(PA)>,<PRINTX ? Neepd a register to compare F>>,	<<0>0,<..LOAD A,B,CP,D,E,F,G,
	 p   .COND(<<<E-1>,<CAM'PST1 A,VAL0UE>>,		<<0>,<.CONPD(<<<..IFIDN(PST1p,E)&..IFIDN(PST1,N)>,<			CAMN	A,V0ALUE
			CAME	A+P1,1+VALUE
			IFIpDN <PST1>,<E>,<SKIPA>>>,		    <<0>0,<CAMN	A,VALUE
P			CAM'PST1 A+1,p1+VALUE
			CAM'PST3 A,VALUE>>>)>0>>)>>>)
	SUPPRESP	$$$LOC,$$$VAL
 p   >
   ...CFM H

   ...CFM :n 0,y
	.XCREF P..CFX
	DEFINE	..p.CFX(VALUE,POST,ALTPST,%1),<
	.XC0REF	...CFX
	$$$LPOC==CB
	$$$VALp==VALUE
	.XCREF 	$$$LOC,$$$VAL

	0	.COND(<<<..IFE($p$$VAL)>,<.COND(<<<..IFE(D+1)>,<		0			.COND(<<<..IFEP(E-1)>,<SKIP'POS	PT CB>>,						<<	p..IFE(E-2)>,<			
			.COND(<<<<..IF
0IDN(POST,N)>&<..I
PFIDN(POST,E)>>,<	
p						SKIP'ALTPST CB
							SKI0P'POST   1+CB>>P,							<<..IFIDNp(POST,L)&..IFIDN(POST,GE)>,							0<SKIP'POST CB>>P,							<<..IFIDNp(POST,LE)>,<							SKIPGE CB
		0					 JRST	%1+1
P							SKIPN  1+pCB
							 SKIPE CB>>,							<0<0>,<
							SKIPPLE CB
							p JRST  %1+1
							SKIPN  1+CB
							 SKIPE CPB>>>)>>,						<<p0>,<PRINTX ? Two many words to com0pare>>>)>>,				<<P..IFE(D-1B0)>,<.pCOND(<<<..IFIDN(POST,N)>,<							S0KIPL	CB>>,					P		<<0>,<SKIPGE CpB>>>)>>,				<<..IFE(G&D%.SGN)>,<0.COND(<<<..IFIDN(PPOST,L)>,								p<PRINTX  Unsigned field is never l0ess than zero>>,	P						<<..IFIDN(PpOST,GE)>,							<PRINTX ? Unsigned0 field is always Pgreater than or epqual to zero>>,							<<..IFB(A)!0<^-..TSAC($$$LOC)P>>,<PRINTX ?Need pa register to compare VALUE to F>0>,							<<..IFIDPN(POST,E)&..IFIDNp(POST,LE)>,<							.COND(<<<<^-..T0SAC($$$LOC)>>,<		P						TXNE $$$LOCp,D>>,							<<0>,<								MOVX A0,D
								TDNEP A,CB>>>)>>,		p					<<0>,<.COND(<<<<^-..TSAC($$$L0OC)>>,<								TXPNN CB,D>>,				p				<<0>,<								MOVX A,D
				0				TDNN A,CB>P>>)>>>)>>,				<<.p.IFE(D&1B0)!<..IFIDN(POST,L)&..IF0IDN(POST,G)&					P	..IFIDN(POST,GE)p>>,<SKIP'POST C B>>,				<<..IFB( 0A)!<^-..TSAC($$$L POC)>>,<PRINTX ? N peed a register to! compare VALUE to!0 F>>,				<<..IFI!PDN(POST,E)>,<.CON!pD(<<<<^-..TSAC($$"$LOC)>>,<							T"0XNE CB,D>>,			"P				<<0>,<MOVX A"p,D
								TDNE# A,CB>>>)>>,		#0		<<..IFIDN(POST,#PN)>,<.COND(<<<<^-#p..TSAC($$$LOC)>>,$<TXNN CB,D>>,	$0						<<0>,<MOVX $PA,D
								TD$pNN A,CB>>>)>>,%				<<..IFIDN(POS%0T,L)>,<.COND(<<<^%P-..TSAC($$$LOC)>,%p							<TXNN CB&,<LFTBT.(D)>>>,	&0						<<0>,<MOVX &PA,<LFTBT.(D)>
&p								TDNN A,'CB>>>)>>,				<<.'0.IFIDN(POST,GE)>,'P<.COND(<<<<^-..TS'pAC($$$LOC)>>,<			(				TXNE A,<LFTB(0T.(D)>>>,							(P<<0>,<MOVX A,<LF(pTBT.(D)>
						)		TDNE A,CB>>>)0)>>,				<<..IFIDN)P(POST,LE)>,<.COND)p(<<<^-..TSAC($$$L*OC)>,<TXNE CB,<*0LFTBT.(D)>
				*P				TXNN CB,D
								 TRNA>>,+							<<0>,<MOVX+0 A,<LFTBT.(D)>
								TDNE A,+pCB
								JRS,T %1+1
								M,0OVX A,D
						,P		TDNE A,CB>>>,p)>>,				<<0>,<.CO-ND(<<<^-..TSAC($$-0$LOC)>,<TXNE CB-P,D
						TXNE -pCB,<LFTBT.(D)>>.>,					<<0>,<MOVX.0 A,D
					    .P  TDNN A,CB
	.p				       JRST %/1
					      MOV/0X A,<LFTBT.(D)>/P
					      TDNE/p A,CB>>>)>>>)>0>,	<<..IFGE($$$VA00L)!..IFG(<$$$VAL-0P<$$$VAL&<<D>_-<A0pLIGN.(D)>>>>)>,<1PRINTX ? VALUE is10 outside of valid1P range for F>>,	1p<<..IFE(G&D%.SGN2)!..IFL($$$VAL)>,20<PRINTX ? Negativ2Pe values (VALUE) 2pnot permitted in 3unsigned field>>,30	<<..IFL($$$VAL)!3P..IFG(<-$$$VAL-<-3p$$$VAL&<<D>_<ALI4GN.(D)>>>>)>,<PR40INTX ? VALUE is o4Ptside of valid ra4pnge for F>>,	<<.5.IFN(<^D36-WID(D50)>)!..IFG($$$VAL)5P!..IFIDN(POST,G)!5p..IFG(<$$$VAL-<MA6SK.(<WID(D)>,35)60>>)>,<PRINTX ? F6P is never greater6p than VALUE>>,	<<7..IFN(<^D36-WID(70D)>)!..IFL($$$VAL7P)!..IFIDN(POST,L)7p!..IFE(<-$$$VAL-<8-$$$VAL&<<D>_<AL80IGN.(D)>>>>)>,<P8PRINTX ? F is nev8per less than VALU9E>>,	<<..IFE(D+190)!<^-..TSAC($$$LO9PC)>>,<.COND(<<<..9pIFE(E-1)>,<					:			CAX'POST CB,:0$$$VAL>>,						<<:P..IFE(E-2)>,<			:p			.COND(<<<..IFI;DN(POST,E)>,<				;0			CAXN CB,$$$V;PAL
							 CAIE ;p1+CB,0>>,						<<<..IFIDN(POST,N)<0>,<							CAXN	C<PB,$$$VAL
						<p	 CAIE	1+CB,0
=							  TRNA>>,	=0					<<..IFIDN(PO=PST,G)&..IFIDN(POS=pT,LE)>,<							CA>X'POST CB,$$$VA>0L
							 CAI'AL>PTPST 1+CB,0
		>p					  CAXN CB,?$$$VAL>>,						<<?0..IFIDN(POST,GE)>?P,<							CAXGE	C?pB,$$$VAL
						@	 CAILE	1+CB,0
							  CAXN	C@PB,$$$VAL>>,					@p	<<0>,<CAXLE	CBA,$$$VAL
							CA0AIGE	1+CB,0
		AP					 CAXN	CB,$Ap$$VAL>>>)>>,					B<<0>,<PRINTX ? TwB0o many words to cBPompare for F>>>)Bp>>,			<<..IFE(WIDC(D)-1)>,<.COND(<C0<<^-..TSAC($$$LOCCP)>,<					.COND(<<Cp<..IFIDN(POST,N)&D..IFIDN(POST,L)>,D0<						TXNE CB,DPD>>,					<<..IFIDpDN(POST,E)&..IFIDEN(POST,GE)>,<				E0		TXNN CB,D>>>EP)>>,				<<..IFE(EpD-1B0)>,<.COND(<<F<..IFIDN(POST,N)&F0..IFIDN(POST,L)>,FP<					SKIPGE	CBFp>>,					<<..IFIDNG(POST,E)&..IFIDN(G0POST,GE)>,<					SGPKIPL CB>>>)>>,	Gp			<<0>,<.COND(<<H<..IFB(A)>,<PRINH0TX ? Need a regisHPter to compare FHp with VALUE>>,			I		<<..IFIDN(POST,I0N)&..IFIDN(POST,LIP)>,<						MOVX	AIp,D
						TDNE	JA,CB>>,					<<0J0>,<	MOVX	A,D
	JP					TDNN	A,CBJp>>>)>>>)>>,		<<..KIFB(A)>,<PRINTX K0? Need a registerKP to compare F wiKpth VALUE>>,		<<0>L,<..LOAD(A,B,CL0,D,E,F,G,)
	LP	.COND(<<<E-1>,<LpCAX'POST A,$$$VAML>>,			<<E-2>,<PM0RINTX ? Not yet>>MP,			<<0>,<PRINTX Mp? Too many words Nto compare F witN0h VALUE>>>)>>>)
NP
%1:!
	SUPPRESSNp $$$LOC,$$$VAL,%1O

	> 

	...CFX	H


	...CF:{R V83IFE <A>,<-1>IFE <A>,<:$Xy dP&
	.XCREF	dp..DECR
	$$$LOC==eCB
	.XCREF $$$e0LOC,..DECR
 
	.ePCOND(<<<..TSAC($$ep$LOC)>,<.COND(<<<f..IFB <A>>,<				f0	.COND(<<<E-2>,<fPPRINTX ? Cannot dfpecrement double wgord F without a g0register>>,					 gP    <<0>,<.COND(<gp<<RGHBT.(D)-1>,<hSOS CB>>,						h0	<<0>,<PRINTX ? ChPannot decrement hpF without a regisiter>>>) >>>) >>,	i0				<<0>,<.COND(<iP<<E-2>,<DMOVE Aip,CB
								DSjUB A,[EXP 0,1]
j0								DMOVEM AjP,CB>>,							<<jp0>,<.COND(<<<RGHBkT.(D)-1>,<SOS Ak0,CB>>,						<<0kP>,<MOVX A,-<RGHBkpT.(D)>
						  l    ADDB A,CB l0>>>) >>>) >>>) >>lP,		<<0>,<.COND(<<lp<E-2>,<DSUB CBm,[EXP 0,1]
					m0IFNB <A>,<DMOVE mPA,CB>>>,			<<0mp>,<.COND(<<<<RGHBnT.(D)-1>!<..IFNBn0(A)>>,<SOS A,CnPB>>,				<<0>,<SUnpBX CB,<RGHBT.(oD)>
					IFNB <o0A>,<MOVE A,CB>oP >>>) >>>) >>>)
op	SUPPRESS $$$LOC
PPRESS$$$LOC
	.XCREF	9$$$VAL,..FP	
 
98	.IFN $$$VAL,ABSO9XLUTE,<B A,[$$$V9xAL]>
 
	.IF $$$:VAL,ABSOLUTE,<
	:8	.COND	(<<<$$$VAL:X_^D18>,<BI A,($:x$$VAL)>>,			<<0>,;<B A,[$$$VAL]>>;8>)
	>; End of .I;XF $$$VAL,ABSOLUTE;x
	SUPPRES	$$$VAL		
PRES	$$$VAL:Lh@ _8{IFNB <A>,<-1>IFNB <A>,:Li XAIFNDEF A,<-1>IFNDEF A,:Li ZXUIFIDN <A>,<B>,<-1> <A>:Li  \8cIFN <A>,<-1>IFN <A>,<:Li` ^8sIFLE <A>,<-1>IFLE <A>,:Lir ]8kIFL <A>,<-1>IFL <A>,<:Lj2 ZQIFDIF <A>,<B>,<-1> <A>:Lk ]xoIFGE <A>,<-1>IFGE <A>,:Lk ^xwIFG <A>,<-1>IFG <A>,<:Lk@ \xgIFE <A>,<-1>IFE <A>,<:LkQ _xIFB <A>,<-1>IFB <A>,<:LkR WX=IFDEF A,<-1>IFDEF A,<:Mhy X0&
	.XCREF	XP..INCR
	$$$LOC==XpCB
	.XCREF $$$YLOC,..INCR
 
	.Y0COND(<<<..TSAC($$YP$LOC)>,<.COND(<<<Yp..IFB <A>>,<				Z	.COND(<<<E-2>,<Z0PRINTX ? Cannot iZPncrement double wZpord F without a [register>>,					 [0    <<0>,<.COND(<[P<<RGHBT.(D)-1>,<[pAOS CB>>,						\	<<0>,<PRINTX ? C\0annot increment \PF without a regis\pter>>>) >>>) >>,	]				<<0>,<.COND(<]0<<E-2>,<SETZ A,]P
								MOVEI ]pA+1,1
								DA^DD A,CB
					^0			DMOVEM A,CB^P>>,							<<0>,<.^pCOND(<<<RGHBT.(D_)-1>,<AOS A,CB_0>>,						<<0>,<MO_PVX A,<RGHBT.(D)_p>
						      AD`DB A,CB >>>) >`0>>) >>>) >>,		<<0`P>,<.COND(<<<E-2>`p,<DADD CB,[EXP a0,1]
					IFNB <a0A>,<DMOVE A,CaPB>>>,			<<0>,<.COapND(<<<<RGHBT.(D)b-1>!<..IFNB(A)>>b0,<AOS A,CB>>,	bP			<<0>,<ADDX CbpB,<RGHBT.(D)>
	c				IFNB <A>,<MOc0VE A,CB> >>>) cP>>>) >>>)
	SUPPRESS $$$LOC
PPR:ex2 	0 s
	.XCREF		P..LOAD
    IFE <	pG>&<D%.SGN>,<
	
.COND	(<<<D+1>,<
0.COND (<<<E-2>,<
PDMOVE A,CB>>,	
p			    <<E-1>,<MOVE A,CB>>,			0	    <<0>,<PRINTXP ?Too many words pfor structure F>
>>)>>,		<<D-RH.A
0LF>,<HRRZ A,CB
P>>,		<<D-LH.ALF>
p,<HLRZ,A,CB>>,
    > 
pFN IG>&<D%.SGN>,<
	..LODE(A,B,0C,D,E,F,G,<H>)
    > 
<:ey !Y
	.XCREF	0..LODE
	.COND	(<P<<D+1>,<.COND (<p<<E-2>,<DMOVE A,CB>>,				    <0<E-1>,<MOVE A,PCB>>,				    <<0p>,<PRINTX ?Too many words for stru0cture F>>>)>>,		P<<D-RH.ALF>,<HRRpE A,CB>>,		<<D-LH.ALF>,<HLRE 0A,CB>>,		<<0>,<PLDB A,[POINTR(CpB,D)]
		      TXNE A,<<LFTBT.(0D)>_-<ALIGN.(D)P>>
		       TXO pA,<^-<<D>_-<ALIGN.(D)>>>>>>)
N.(D)>>>>>>)
:ey 0!)
	.XCREF	P..LODS
	.COND	(<p<<D+1>,<.COND (<<<E-2>,<MOVE A+01,CB
						  MPOVE A,C+1B>>,	p			    <<E-1>,<MOVS A,CB>>,			0	    <<0>,<PRINTXP ?Too many words pfor structure F>>>)>>,		<<D-RH.A0LF>,<HRLZ A,CBP>>,		<<D-LH.ALF>p,<HLLZ A,CB>>,		<<0>,<.COND(<<<0..IFL <WID(D)-^DP18>>,<LDB A,[POIpNTR(CB,D)]
						     MOVS A,0A>>,			<<0>,<PRIPNTX ? How do you pfit D in 18 bits for structure F?>>>)>>>)
e F:}i9 J0%;
	.XCREF	JP..ONES
	IFB <A>Jp,<
		$$$LOC==CKB
		.COND(<<<..TK0SAC($$$LOC)>,<			KP.COND	(<<<D+1>,<Kp.COND (<<<E-2>,<LSETOM CB
					L0			SETOM C+1B>>LP,						    <<E-1Lp>,<SETOM CB>>,	M					    <<0>,<PRM0INTX ?Too many woMPrds for structureMp F>>>)>>,				<<ND-RH.ALF>,<HLLOS N0CB>>,				<<D-LNPH.ALF>,<HRROS CNpB>>,				<<0>,<PRIONTX ? Can not setO0 byte F to ones>OP>>)>>,			<<0>,<.COpOND(<<<D+1>,<.COPND(<<<E-2>,<SETOP0B C+1B,CB>>,	PP					       <<E-Pp1>,<SETO  CB,>>Q,							<<0>,<PRIQ0NTX ? Too many woQPrds for structureQp F>>>)>>,				   R  <<0>,<TXO CB,R0D>>>)>>>)
 
	>RP; End of IFB <A>Rp
 
	IFNB <A>,<S
		.COND	(<<<D+S01>,<.COND (<<<E-SP2>,<SETOB A,CBSp
							SETOB AT+1,C+1B>>,					T0    <<E-1>,<SETOTPB A,CB>>,					Tp    <<0>,<PRINTX U?Too many words fU0or structure F>>UP>)>>,		<<D-RH.ALUpF>,<HLLOS A,CBV>>,		<<D-LH.ALF>V0,<HRROS A,CB>>VP,		<<0>,<MOVX A,VpD
		      IORB WA,CB>>>)
	>; W0End of IFNB <A>
ofIFNB<A>
    ...SPET(\C,D,E,F,<H>)
D,E,F,<;I@ p 1
   ...STF(\C,D,E,F,<H>)
D,E,F,<;Ky P"
	.XCREF	p..STOR
	.COND	(<<<D+1>,<.COND (<0<<E-2>,<DMOVEM PA,CB>>,				    p<<E-1>,<MOVEM A,CB>>,				    <0<0>,<PRINTX ?Too Pmany words for stpructure F>>>)>>,		<<D-RH.ALF>,<H0RRM A,CB>>,		<P<D-LH.ALF>,<HRLMp A,CB>>,		<<0> ,<DPB A,[POINTR(CB,D)]>>>)
;LT )#]
	.XCREF	)0..STRI
    .IF )PH,ABSOLUTE,<
	.C)pOND(<<<H&<<D>_-*<ALIGN.(D)>>>,<.*0.ZERO(A,B,C,D*P,E,F,G,)>>,	  *p     <<<FILIN.(<<+H&<LFTBT.(<<D>_+0-<ALIGN.(D)>>)>>+P_<^L<D>>!<H&<LF+pTBT.(<<D>_-<ALIG,N.(D)>>)>>>)!H>,0+1>,<..ONES(A,B,P,C,D,E,F,G,),p>>,	       <<0>,<-
			$$$LOC==CB-0	
			.XCREF	$$$L-POC	
			.COND(<<<-p..TSAC($$$LOC)>,<.IFB <A>,<PRINTX .0? Cannot store va.Plue into F witho.put a register>
	/				IFNB <A>,<
/0					    .COND(<</P<E-2>,<SETZM C/pB
						MOVX A,0H
						..STOR(00A,B,C+1,D,E-0P1,F,G,)>>,					0p	<<0>,<MOVX A,H1
						..STOR(A10,B,C,D,E,F,1PG,)>>>)
					   1p > 
					>>,				2<<0>,<.COND(<<<D20+1>,<.COND(<<<E-2P2>,<SETZ $$$LOC,
									  MOVX 3$$$LOC+1,H>>,			30					<<0>,<MOVX $3P$$LOC,H>>>)>>,		3p			<<D-LH.ALF>,<4HRLI $$$LOC,H>>,40					<<D-RH.ALF>4P,<HRRI $$$LOC,H>4p>,					<<0>,<TXZ 5$$$LOC,D
					 50     TXO $$$LOC,<5PINSVL.(H,D)>>>>5p)		>>>)	>>>)
   6 > 
    .IFN H,60ABSOLUTE,<	
	IFB6P <A>,<PRINTX ? N6peed a register to7 STORI. non-absol70ute value into F7P>
	IFNB <A>,<
7p		.COND(<<<E-2>,8<SETZM CB
			I80FG WID(D)-^D18,<8PMOVE A,[EXP H]>8p
			IFLE WID(D)9-^D18,<MOVEI A,90H>
			..STOR(A,9PB,C+1,D,E-1,9pF,G,)>>,			<<0>,:<
			IFG WID(D):0-^D18,<MOVE A,[E:PXP H]>
			IFLE :pWID(D)-^D18,<MOV;EI A,H>
			..S;0TOR(A,B,C,D,;PE,F,G,)>>>)
		> 
    > 

		;LY !"7
	.XCREF	!0..STRS
	.COND	(<!P<<D+1>,<.COND (<!p<<E-2>,<MOVEM A",C+1B
						  "0MOVEM A+1,CB>>"P,				    <<E-1>,"p<MOVSM A,CB>>,#				    <<0>,<PRI#0NTX ?Too many wor#Pds for structure #pF>>>)>>,		<<D-R$H.ALF>,<HLRM A,$0CB>>,		<<D-LH.A$PLF>,<HLLM A,CB$p>>,		<<0>,<.COND(%<<<..IFL <WID(D)%0-^D18>>,<MOVS A,%PA
		      DPB %pA,[POINTR(CB,D&)]>>,			<<0>,<PRI&0NTX ? How do you &Pfit D in 18 bits&p for structure F?>>>)>>>)
e F;&81 [].IF A,ABS[8OLUTE,<IFE <<<A>[X&17>-<A>>,<-1>>17>-<A>>,<-1>>;T\W <P$K
	.XCREF	<p..ZERO
	IFB <A>=,<
		$$$LOC==C=0B
		.COND(<<<..T=PSAC($$$LOC)>,<			=p.COND	(<<<D+1>,<>.COND (<<<E-2>,<>0SETZM CB
					>P			SETZM C+1B>>>p,						    <<E-1?>,<SETZM CB>>,	?0					    <<0>,<PR?PINTX ?Too many wo?prds for structure@ F>>>)>>,				<<@0D-RH.ALF>,<HLLZS @PCB>>,				<<D-L@pH.ALF>,<HRRZS CAB>>,				<<0>,<PRIA0NTX ? Can not zerAPo byte F>>>)>>,	Ap		<<0>,<.COND(<<<BD+1>,<.COND(<<<B0E-2>,<SETZB C+1BPB,CB>>,						  Bp     <<E-1>,<SETCZ  CB,>>,						C0	<<0>,<PRINTX ? TCPoo many words forCp structure F>>>)D>>,				     <<0>,D0<TXZ CB,D>>>)>DP>>)
 
	>; End oDpf IFB <A>
 
	IEFNB <A>,<
		.COE0ND	(<<<D+1>,<.COEPND (<<<E-2>,<SETEpZB A,CB
					F		SETZB A+1,C+1F0B>>,					    <<FPE-1>,<SETZB A,CFpB>>,					    <<0G>,<PRINTX ?Too maG0ny words for struGPcture F>>>)>>,		Gp<<D-RH.ALF>,<HLLHZS A,CB>>,		<<H0D-LH.ALF>,<HRRZSHP A,CB>>,		<<0>Hp,<MOVX A,D
		 I     ANDCAB A,CI0B>>>)
	>; End of IFNB <A>
 o
NC@ ^h-~IFNB<A><B_IT$$$A>+IFB<A>,_(<IFN BIT$$$,<<<BI_HT$$$==BIT$$$_-1>__h1>+<IFE BIT$$$,<1>>>>E BIT$$$,<1DuP D	P ?DP >D)6P D,`P D87P 
D8:P D8YP D8sP D;P D;RP D;SP D;SP D;TP D;TP D;UP D;UP D;VP D;VP 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<QP D<ZP D=7P DHhP DHiP 	DHiP 	DHjP 
DI6P ?DKP D[ P 
D[XPD[zPD\qPDiRP Dl`P D|`P E
Em6@ F,`P F:`P F;`P F;tP F=P F=1P
	IRP <AT>,<
		IFN <COND.T8. A >,<
			CON.TX.. A
			STOPI
Tx		>
	>
	.XCREF	UCOND..,CON...,...U8CON,..COND,.COND
,..COND,.CONDQ ?&vC@ `H.	&@IFB<A>,<<`xINT$$$==INT$$$+Ba>-B>IFNB<A>,<INT$$$A><A>,<IN24.16MiTQ @O,pP O,tP O,vP O,yP j.+jP >}{woP