.NLIST
.IF	NDF,$$PASS	;ONLY ON PASS #1
.MACRO	SMACIT
	$DIDDO=0
	$L$=0
	$T=0
	$L=0
	$LL=0
	$R=-1
	IIII=-1
.ENDM
.MACRO	..PUSH	AA1,AA2
	IIII=IIII+1
	.IRP	TT,\IIII
		TYPS'TT = AA1
		LBLS'TT = AA2
	.ENDM
.ENDM
.MACRO	..POP	AA1,AA2
	.IIF LT IIII,.ERROR IIII ;STACK UNDERFLOW!!!!!!
	.IRP	TT,\IIII
		AA1 = TYPS'TT
		AA2 = LBLS'TT
	.ENDM
	IIII=IIII-1
.ENDM
.MACRO	..TAG	TG,WH
.EMITL	<WH''TG':;;;;;;>
.ENDM
.MACRO	..BRAN	BRA,TG,WH,SPLBRN
.IF NB <SPLBRN>
	.IF GE .-WH'TG-126.
		.EMIT	<JMP WH''TG>
	.IFF
		.EMIT	<BRA WH''TG>
	.ENDC
.IFF
	.EMIT	<BRA WH''TG>
.ENDC
.ENDM
.MACRO	.EMIT	VAL
$E$=1
	.IIF	DF	LST$$	.LIST MEB
								VAL
	.IIF	DF	LST$$	.NLIST MEB
.ENDM
.MACRO	.EMITL	VAL
	.IIF	DF	LST$$	.LIST
							VAL
	.IIF	DF	LST$$	.NLIST
.ENDM
.MACRO	.EMITR	S1,S2
	.EMIT	<S1>
	.IIF	GT	S2-1	.EMITR	<S1>,\S2-1
.ENDM
.MACRO	.IFOPR	OPRA,RELA,TTG
	.EMIT	OPRA
	.IF	GT	$R
		.IIF	EQ	$L$	.EMIT	<B'RELA L'TTG>
		.IIF	EQ	$L$-1	.EMIT	<B'RELA B'TTG>
		.IIF	EQ	$L$-2	.EMIT	<B'RELA E'TTG>
		.IIF	EQ	$L$-3	.EMIT	<B'RELA TTG>
	.IFF
		.IIF	EQ	$L$	.EMIT	<R'RELA L'TTG>
		.IIF	EQ	$L$-1	.EMIT	<R'RELA B'TTG>
		.IIF	EQ	$L$-2	.EMIT	<R'RELA E'TTG>
		.IIF	EQ	$L$-3	.EMIT	<R'RELA TTG>
	.ENDC
	..PUSH	0,$T
	$I$=1
.ENDM
.MACRO	.IS	Q1,Q2,QB,QT
$I$=0
	.IIF	IDN	<TRUE>	<Q2>,	.IFOPR <<TST'QB Q1>>,NE,QT
	.IIF	IDN	<FALSE>	<Q2>,	.IFOPR	<<TST'QB Q1>>,EQ,QT
	.IIF	NE	$I$		.MEXIT
	.IIF	DIF	<RESULT>,<Q1>,.IFOPR <<TST'QB Q1>>,Q2,QT
	.IIF	IDN	<RESULT>,<Q1>,.IFOPR <<.=.>>,Q2,QT
.ENDM
.MACRO	.GENBR	A1,B1,C1,D1,E1

$I$=0
.IIF	IDN	<SET.IN>	<B1>	.IFOPR <<BIT'D1 A1,C1>>,NE,E1
.IIF	IDN	<OFF.IN>	<B1>	.IFOPR <<BIT'D1 A1,C1>>,EQ,E1
.IIF	IDN	<NOT.SET.IN>	<B1>	.IFOPR <<BIT'D1 A1,C1>>,EQ,E1
.IIF	IDN	<#0>		<C1>	.IFOPR <<TST'D1 A1>>,B1,E1
.IIF	IDN	<#0>		<A1>	.IFOPR <<TST'D1 C1>>,B1,E1
.IIF	IDN	<IS>		<B1>	.IS A1,C1,D1,E1

.IIF	IDN	<=>		<B1>	.IFOPR <<CMP'D1 A1,C1>>,EQ,E1
.IIF	EQ	$I$			.IFOPR <<CMP'D1 A1,C1>>,B1,E1
.ENDM
.MACRO	.OPADD	V1,V2,V3
	.IIF	IDN	<V2>	<#1>	.EMIT	<INC'V3 V1>
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<V2>	<CARRY>	.EMIT	<ADC'V3 V1>
	.IIF	NE	$E$		.MEXIT

	.EMIT	<ADD V2,V1>
.ENDM
.MACRO	.OPSUB	V1,V2,V3
	.IIF	IDN	<V2>	<#1>	.EMIT	<DEC'V3 V1>
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<V2>	<CARRY>	.EMIT	<SBC'V3 V1>
	.IIF	NE	$E$		.MEXIT

	.EMIT	<SUB V2,V1>
.ENDM
.MACRO	RNE	LOC
.EMIT	<BEQ LOC>
.ENDM
.MACRO	REQ	LOC
.EMIT	<BNE LOC>
.ENDM
.MACRO	RLT	LOC
.EMIT	<BGE LOC>
.ENDM
.MACRO	RGE	LOC
.EMIT	<BLT LOC>
.ENDM
.MACRO	RGT	LOC
.EMIT	<BLE LOC>
.ENDM
.MACRO	RLE	LOC
.EMIT	<BGT LOC>
.ENDM
.MACRO	RPL	LOC
.EMIT	<BMI LOC>
.ENDM
.MACRO	RMI	LOC
.EMIT	<BPL LOC>
.ENDM
.MACRO	RHI	LOC
.EMIT	<BLOS LOC>
.ENDM
.MACRO	RLOS	LOC
.EMIT	<BHI LOC>
.ENDM
.MACRO	RHIS	LOC
.EMIT	<BLO LOC>
.ENDM
.MACRO	RLO	LOC
.EMIT	<BHIS LOC>
.ENDM
.MACRO	RCS	LOC
.EMIT	<BCC LOC>
.ENDM
.MACRO	RCC	LOC
.EMIT	<BCS LOC>
.ENDM
.MACRO	RVS	LOC
.EMIT	<BVC	LOC>
.ENDM
.MACRO	RVC	LOC
.EMIT	<BVS	LOC>
.ENDM
.MACRO	IF	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.IIF	B	<A>	.MEXIT
	$F$=0
	.IIF	IDN	<BE>	<:=>	$F$=1
	.IIF	IDN	<BE>	<:B=>	$F$=1
	.IF	NE	$F$
	.IFARI A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.MEXIT
	.ENDC
$O$=0
$I$=0
	.IIF	IDN	<LEAVE> <EE>	.LEAVE	A,BE,C,BB,F
	.IIF	NE	$I$		.MEXIT
	.IIF	IDN	<GOTO>	<EE>	.GOTO	A,BE,C,BB,F
	.IIF	NE	$I$		.MEXIT
	.IIF	IDN	<D>	<OR>	.OR	A,BE,C,BB
	.IIF	IDN	<D>	<ORB>	.OR	A,BE,C,BB
	.IF EQ	$O$
		.IIF EQ $L$-1	.GENBR A,BE,C,BB,\$T2
		.IIF NE $L$-1	.GENBR A,BE,C,BB,\$T
	.ENDC
$T=$T+1
	.IIF	B	<D>,.MEXIT
	.IIF	B	<EE>,.MEXIT
;
	D	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	.IIF	LE	$DIDDO	.MEXIT
..POP	$$T,$$T
..TAG	\$$T,L
$DIDDO=$DIDDO-1
.ENDM
.MACRO	.OR	OA,OB,OC,OD
	$R=-$R
	$O$=1
	$SV$=$L$
	$L$=0
 .IIF NE $L$-1   	.GENBR	OA,OB,OC,OD,\$T
 .IIF EQ $L$-1   	.GENBR	OA,OB,OC,OD,\$T2
	$L$=$SV$
	$R=-$R
.ENDM
.MACRO	.IFARI	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.SIMPLE A,BE,C,D,EE
	.IIF	IDN <D> <IS>	IF RESULT,IS,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.IIF	IDN <D> <IS>	.MEXIT
	.IIF	IDN <EE> <IS>	IF RESULT,IS,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.IIF	IDN <EE> <IS>	.MEXIT
	IF	RESULT,IS,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
.ENDM
.MACRO	.LEAVE	LA,LB,LC,LD,LE
	$L$=2
	.IIF	B	<LE>		$K$=$LL
	.IIF	NB	<LE>		$K$=LE
	$R=-$R
	.GENBR	LA,LB,LC,LD,\$K$
	..POP	$$TT,$$TT
	$R=-$R
	$L$=0
.ENDM
.MACRO	.GOTO	GA,GB,GC,GD,GEE
	$R=-$R
	$L$=3
	.GENBR	GA,GB,GC,GD,GEE
	..POP	$$TT,$$TT
	$R=-$R
	$L$=0
.ENDM
.MACRO	OR	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.IIF	B	<EE>	.MEXIT
	.IIF	IDN	<H>	<OR>	..POP	$T1,$T
	.IIF	IDN	<H>	<ORB>	..POP	$T1,$T
	IF'BB	EE,F,G,H
	.IF	DIF	<H>	<OR>
	.IF	DIF	<H>	<ORB>
	..POP	$$TT,$$TT
	..POP	$$T,$$T
	..TAG	\$$T,L
	.IIF	B	<H>	..PUSH	0,$$TT
	.IIF	B	<H>	.MEXIT
	.IIF	IDN 	<H>	<THEN>  ..PUSH 0,$$TT
	.IIF	IDN	<H>	<THEN>  .MEXIT
	H	I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	..TAG	\$$TT,L
	$DIDDO=0
	.MEXIT
	.ENDC
	.ENDC
	H	I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
.ENDM
.MACRO	AND	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	.IIF	B	<EE>	.MEXIT
	$$S=0
	.IIF	IDN	<ORB>,<H>,$$S=1
	.IIF	IDN	<OR>,<H>,$$S=1
	.IF	GT	$$S
	..POP	$$T,$$T
	IF'BB	EE,F,G,H
	..TAG	\$$T,L
	H	I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	.IFF
	..POP	$T,$T
	IF'BB	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	.ENDC
.ENDM
.MACRO	DO	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	.IIF	B	<EE>,.MEXIT
		LET EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	$DIDDO=$DIDDO+1
.ENDM
.MACRO	THEN EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	.IIF	B	<EE>	.MEXIT
	EE F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	$DIDDO=$DIDDO+1
.ENDM
.MACRO	ELSE
	..POP	$T1,$T2
	.IIF	NE	$T1,.ERROR $T1 ;ELSE SEEN IN OTHER THAN IF BLOCK
	..BRAN	BR,\$T,L
	..TAG	\$T2,L
	..PUSH	$T1,$T
	$T=$T+1
.ENDM
.MACRO	WHILE A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,BB
	$DIDDO=-1
	..TAG	\$L,B
 IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,BB
	.IF	EQ	$DIDDO
		..BRAN	BR,\$L,B
		..POP	$$T,$$T
		..TAG	\$$T,L
	.IFF
		..PUSH	1,$L
		$LL=$L
	.ENDC
	$DIDDO=0
	$L=$L+1
.ENDM
.MACRO	CASE	A,BBB,C
	.IIF	DIF	<A>	<TOP>	.EMIT	<MOV A,-(SP)>
	.EMIT	<ASL @SP>
	.IRP	TT,\$T
	.EMIT	<JSR PC,L'TT>
		.ENDR
	..PUSH	4,$T
	$T=$T+1
.ENDM
.MACRO	FOR	A,BBB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
 .IIF DIF <F>,<BY>,FOR A,BBB,C,D,EE,BY,#1,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X
 .IIF DIF <F>,<BY>,.MEXIT
;
	.SIMPLE	A,BBB,C
	..TAG	\$L,B
	.IF B <H>
		..PUSH	2,$L
		$LL=$L
		.IRP	TT,\<$L>
			.MACRO	$.$'TT
				D	A,EE,G,TT
			.ENDM
		.ENDM
	.IFF
		$SDO=$DIDDO
		H I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
		D A,EE,G,\$L
		.IIF GT $DIDDO-$SDO $DIDDO=$DIDDO-1
	.ENDC
	$L=$L+1
.ENDM
.MACRO	TO	A1,A2,A3,A4
	$E$=0
	.OPADD	A1,A3
	.EMIT	<CMP A1,A2>
	.EMIT	<BLE B'A4>
	.EMITL	<E'A4:;;;;;;;>
.ENDM
.MACRO	DOWNTO	A1,A2,A3,A4
	$E$=0
	.OPSUB	A1,A3
	.EMIT	<CMP A1,A2>
	.EMIT	<BGE B'A4>
	.EMITL	<E'A4:;;;;;;;>
.ENDM
.MACRO	REPEAT	A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
	.IF	IDN	<A>	<THRU>
	THRU	BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V
	.MEXIT
	.ENDC
	..TAG	\$L,B
	..PUSH	5,$L
	$LL=$L
	$L=$L+1
	.IIF	B	<A>	.MEXIT
	.IF	IDN	<A>	<UNTILB>	
	UNTILB BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
	.MEXIT
	.ENDC
	.IF	IDN	<A>	<UNTIL>	
	UNTIL BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
	.MEXIT
	.ENDC
	LET A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
.ENDM
.MACRO	UNTIL  A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	$L$=1
	..POP	$T1,$T2
	.IF	NE	$T1-5
	.ERROR	; UNTIL SEEN IN OTHER THAN REPEAT BLOCK
	.MEXIT
	.ENDC
	IF A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,BB
	..POP	$$T,$$T
	..TAG	\$T2,E
	$L$=0
.ENDM
.MACRO	THRU	A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V
	.NTYPE	A3,A
	.IF	NE	A3&70
	.ERROR	; A MUST BE A REGISTER
	.MEXIT
	.ENDC
	.IIF	NB	<BB>,LET A,BB,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V
	..TAG	\$L,B
	..PUSH	6,$L
	$LL=$L
	.IRP	TT,\$L
	.MACRO	$.$'TT
;	.EMIT	<SOB A,B'TT ; **** EIS INST.>
	.EMIT	<DEC A>
	.EMIT	<BGT	B'TT>
	.ENDM
	.ENDM
	$L=$L+1
.ENDM
.MACRO	END   COMM
	..POP	$T1,$T2
	.IIF	EQ	$T1	..TAG	\$T2,L	;-0- 	IF
	.IIF	EQ	$T1	.MEXIT
;
	$LL	=	$LL -1
	.IIF	EQ	$T1-3	..TAG	\$T2,E	;-3-	BEGIN/END
	.IIF	EQ	$T1-3	.MEXIT
;
	.IIF	EQ	$T1-5	..BRAN  BR,\$T2,B,1	;-5-	REPEAT
	.IIF	EQ	$T1-5	..TAG	\$T2,E		
	.IIF	EQ	$T1-5	.MEXIT
;
	.IF	EQ	$T1-1			;-1-	WHILE
		..BRAN	BR,\$T2,B,1
		..POP	$$T,$$T
		..TAG	\$$T,L
		..TAG	\$T2,E
		.MEXIT
	.ENDC
;
	.IF	EQ	$T1-2			;-2-	REPEAT/FOR
		.IRP	TT,<\$T2>
			$.$'TT
		.ENDM
	.MEXIT
	.ENDC
;
	.IF	EQ	$T1-4			;-4-	CASE
		$LL = $LL + 1
		..TAG	\$T2,L
		.EMIT	<ADD (SP)+,@SP>
		.EMIT	<MOV @(SP)+,-(SP)>
		.EMIT	<JSR PC,@(SP)+>
		.MEXIT
	.ENDC
;
	.IF	EQ	$T1-6			; -6- THRU (REPEAT THRU)
	.IRP	TT,\$T2
	$.$'TT
	.ENDM
	..TAG	\$T2,E
	.MEXIT
	.ENDC
;
	.ERROR		; $T STRANGE SUPER-MAC STACK VALUE
.ENDM
.MACRO	BEGIN	BNAME
	.IIF NB	<BNAME>		BNAME=$L
	..PUSH	3,$L
	..TAG	\$L,B
	$LL = $L
	$L=$L+1
.ENDM
.MACRO	$$END
	.IF	GE	IIII
		.PRINT	; MISSING END
		END
		$$END
	.ENDC
.ENDM
.MACRO	LEAVE AAAA,A,BB,C,D,EE,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V

.IF B <AAAA>
	.IRP	QQ,\<$LL>
	.EMIT <BR E'QQ>
	.ENDM
	.MEXIT
.ENDC
	.IRP	QQ,\AAAA
	.EMIT	<BR E'QQ>
	.ENDM
.ENDM
.MACRO	JUMPTO	AAAA,A,B,C,D,E,F,H,G,I,J,K,L,M,N,O,P,Q,R,S,T,U,V
.EMIT	<JMP AAAA>
.ENDM
.MACRO	GOTO	BBBB
.EMIT	<BR BBBB>
.ENDM
.MACRO	PUSH	P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q10,Q11,Q22
	.IF NB P0
	.EMIT	<MOV P0,-(SP)>
	PUSH	P1,P2,P3,P4,P5,P6,P7,P8,P9
	.ENDC
.ENDM
.MACRO	POP	P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,Q0,Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8,Q9,Q22
	.IF NB P0
	.EMIT	<MOV (SP)+,P0>
	POP	P1,P2,P3,P4,P5,P6,P7,P8,P9
	.ENDC
.ENDM
.MACRO	LET	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V
	.SIMPLE	A,BE,C,D,EE
	.IIF	B		<D>	.MEXIT
	.IIF	B		<EE>	.MEXIT
	.IIF	B		<F>	.MEXIT
	.IF	LT	$Y$
		LET A,BE,A,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V
		.MEXIT
	.ENDC
		LET  A,BE,A,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V
.ENDM
.MACRO	.SIMPLE	X1,X2,X3,X4,X5,X6
	.IF IDN <X2> <:B=>
	.SIMPLE	X1,:=,X3,X4,X5,B
	.MEXIT
	.ENDC
$Y$=0
$Z$=0
	.IIF	IDN	<FALSE>	<X3>	$Y$=7
	.IIF	IDN	<0>	<X3>	$Y$=7
	.IIF	IDN	<#0>	<X3>	$Y$=7
	.IIF	IDN	<TRUE>	<X3>	$Y$=4
	.IIF	IDN	<NOT>	<X3>	$Y$=-1
;
	.IIF	IDN	<?>	<X3>	$Y$=-1
	.IIF	IDN	<->	<X3>	$Y$=-2
  .IF	DIF	<X1> <X3>
	.IIF	EQ	$Y$-7		.EMIT	<CLR'X6 X1>
	.IIF	EQ	$Y$-4		.EMIT	<MOV'X6 #-1,X1>
	.IIF	EQ	$Y$		.EMIT	<MOV'X6 X3,X1>
  .ENDC
  .IF	DIF	<X1> <X4>
	.IIF	LT	$Y$		.EMIT	<MOV'X6 X4,X1>
  .ENDC
	.IIF	IDN	<+1>	<X4>	$Y$=-5
	.IIF	IDN	<-1>	<X4>	$Y$=-6
	.IF	LT	$Y$
		.IIF	EQ	$Y$+1	.EMIT	<COM'X6 X1>
		.IIF	EQ	$Y$+2	.EMIT	<NEG'X6 X1>
		.IIF	EQ	$Y$+5	.EMIT	<INC'X6 X1>
		.IIF	EQ	$Y$+6	.EMIT	<DEC'X6 X1>
		.MEXIT
	.ENDC
;
	.IIF	B	<X4>		.MEXIT
	.IIF	IDN	<X4>	<IS>	.MEXIT
$E$=0
	.IIF	EQ	$E$		.ARITH	X1,X5,X6,X4
.ENDM
.MACRO	.ARITH	Y1,Y2,Y3,Y4
	.IIF	IDN	<+>	<Y4>	.OPADD	Y1,Y2,Y3
	.IIF	IDN	<->	<Y4>	.OPSUB	Y1,Y2,Y3
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<NAND>	<Y4>	.EMIT	<BIC'Y3 Y2,Y1>
	.IIF	IDN	<AND.NOT> <Y4>	.EMIT	<BIC'Y3 Y2,Y1>
	.IIF	IDN	<OFF.BY> <Y4>	.EMIT	<BIC'Y3 Y2,Y1>
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<CLEARED.BY> <Y4> .EMIT	<BIC'Y3 Y2,Y1>
	.IIF	IDN	<CLR.BY> <Y4>	.EMIT	<BIC'Y3 Y2,Y1>
	.IIF	IDN	<SET.BY> <Y4>	.EMIT	<BIS'Y3 Y2,Y1>
	.IIF	IDN	<OR>	<Y4>	.EMIT	<BIS'Y3 Y2,Y1>
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<L.SHIFT> <Y4>	.EMITR	<ASL'Y3 Y1>,Y2
	.IIF	IDN	<R.SHIFT> <Y4>	.EMITR	<ASR'Y3 Y1>,Y2
	.IIF	IDN	<L.ROTATE> <Y4>	.EMITR	<ROL'Y3 Y1>,Y2
	.IIF	IDN	<R.ROTATE> <Y4>	.EMITR	<ROR'Y3 Y1>,Y2
	.IIF	NE	$E$		.MEXIT
	.IIF	IDN	<*>	<Y4>	.EMIT	<MUL Y2,Y1 ; **** EIS INST.>
	.IIF	IDN	</>	<Y4>	.EMIT	<DIV Y2,Y1 ; **** EIS INST.>
	.IIF	IDN	<SHIFT>	<Y4>	.EMIT	<ASH Y2,Y1 ; **** EIS INST.>
	.IIF	IDN	<C.SHIFT> <Y4>	.EMIT	<ASHC Y2,Y1 ; **** EIS INST.>
	.IIF	NE	$E$		.MEXIT
;	.IIF	IDN	<XOR>	<Y4>	.EMIT	<XOR Y2,Y1 ; **** EIS INST.>
	.IIF	EQ	$E$		.ERROR	; Y4 NOT A LEGAL OPERATOR
.ENDM
.MACRO	ORB	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	OR	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B
.ENDM
.MACRO	ANDB	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	AND	EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B
.ENDM
.MACRO	IFB	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z
	IF	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,TE,U,V,W,X,Y,Z,B
.ENDM
.MACRO	UNTILB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
	UNTIL	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,B
.ENDM
.MACRO	WHILEB A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
	WHILE	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,B
.ENDM
.MACRO	ON.NOERROR	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S
	IF RESULT IS,CC,A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S
.ENDM
.MACRO	ON.ERROR	A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S
	IF RESULT IS,CS,A,BE,C,D,EE,F,G,H,I,J,K,LL,M,N,O,P,Q,R,S
.ENDM
.MACRO	FI	COMM
	END	<COMM>
.ENDM
	.macro	$line	num
	mov	#^d'num,^o-12(%5)
	.endm	$line

	.macro	$chksp	num
	.globl	$chksp
	jsr	0,$chksp
	.word	num
	.endm	$chksp
;
;
;	11/34 instruction set simulators
;
	.macro	sob	r,a
	dec	r
	bne	a
	.endm	sob
	.macro	sxt	d,?a,?b
	bmi	$'a
	clr	d
	br	$'b
$'a:	mov	#-1,d
$'b:
	.endm	sxt

	.macro	$$$	c,r,rtn
	.globl	rtn
	mov	c,-(6)
	jsr	0,rtn
	.byte	<r>,<r!1>
	.endm	$$$


	.macro	ash	r,s
	$$$	r,s,$ash
	.endm	ash

	.macro	ashc	r,s
	$$$	r,s,$ashc
	.endm	ashc

	.macro	xor	r,d
	.ntype	$$$.,d
	mov	d,-(6)
	.if	ne,$$$.-16		;if on stack 
	bis	r,d			;set bits in d
	.iff
	bis	r,2(6)
	.endc
	mov	r,-(6)
	com	(6)			;compute 
	bic	(6)+,(6)		;	   R & D
	bic	(6)+,d			;clear these bits in "d"
	.endm	xor


	.macro	mul	r,s
	$$$	r,s,$mul
	.endm	mul

	.macro	div	r,s
	$$$	r,s,$div
	.endm	div

;
;
;	The following macros allow assembly-language calls to higher level
;	language routines (C or FORTRAN).
;
;
.macro	call	r,a,b
.if	nb,b
mov	r5,-(sp)
.endc
...arg	a
.if	nb,b	;calling FORTRAN routine
mov	#...a,-(sp)	;# of arguments
mov	sp,r5		;r5 -> arguments
...a	=	...a+1	;1 more item to pop
.endc
.globl	r
jsr	pc,@#r		;call subroutine
.if	ne,...a		;if any args at all
add	#<...a*2>,sp	;fix stack
.endc	
.if	nb,b
mov	(sp)+,r5
.endc
.endm	call
;
;
;	The "...arg" macro puts the arguments on the stack in reverse order.
;
.macro	...arg	a,b,c,d,e,f,g,h,i,j,k,l
...a	=	0	;no args yet
....f	=	0	;no args encountered

.irp	x,<l,k,j,i,h,g,f,e,d,c,b,a>	;note reverse order
.if	nb,x				;arg specified?
mov	x,-(sp)				;yes, put on stack
...a	=	...a+1			;and bump counter
....f	=	1			;arg encountered flag
.iff
.if	ne,....f			;if 1st arg encountered
clr	-(sp)				;give default arg of 0
...a	=	...a+1			;and bump counter
.endc
.endc
.endr
.endm	...arg
;
;
;	The following macro is used to simulate "C" function protocol
;	for assembly-language routines.
;
.macro	function	name	arg,usr=swap
.psect	name,i,ro,gbl,con
	.globl	name
name:
	br	.+10		;follow "C" conventions
	.byte	40,40,40,40,40,40
$$$$.	=	.
.	=	.-6
	.ascii	\name\
.	=	$$$$.
	.globl	$csv,$cret
	jsr	5,$csv
....a.	=	s.arg1
	.irp	x,<arg>
	mov	....a.(r5),x
....a.	=	....a. + 2
	.endr
	.if	idn	<name><main>
	.globl	$usrsw
	.if	idn	<usr>,<noswap>
	$usrsw	=	0
	.iff
	$usrsw	=	1
	.endc
	.endc
.endm	function
;
;
;	entry point into a function (assembly-language functions only).
;
;
	.macro	entry name
	.globl	name
name:
	br	.+10
	.byte	40,40,40,40,40,40
$$$$.	=	.
	.	=	.-6
	.ascii	\name\
.	=	$$$$.
	jsr	5,$csv
	.endm	entry
;
;	"C" style return
;
	.macro	return	val
	.if	nb,val
	mov	val,r0
	.endc
	.globl	$cret
	jmp	$cret
	.endm	return
;
;	"C" Argument offsets:
;
S.ARG1	=	04
S.ARG2	=	06
S.ARG3	=	10
.ENDC
	$$PASS	=	1
	SMACIT
	.PAGE
	.LIST
                                                                                                                                                                                                                                                                                                                                