
opcode	ambi2D_encode, 0, aik		

asnd,iorder,kaz	xin

kaz = $M_PI*kaz/180

kk =	iorder
c1:
   	zawm	cos(kk*kaz)*asnd,2*kk-1
   	zawm	sin(kk*kaz)*asnd,2*kk
kk =		kk-1

if	kk > 0 goto c1
	zawm	asnd,0	
endop

opcode	ambi2D_enc_dist, 0, aikk		
asnd,iorder,kaz,kdist	xin

kaz = $M_PI*kaz/180

kaz	=			(kdist < 0 ? kaz + $M_PI : kaz)
kdist =		abs(kdist)+0.0001
kgainW	=		taninv(kdist*1.5707963) / (kdist*1.5708)		;pi/2
kgainHO =	(1 - exp(-kdist)) ;*kgainW
kk =	iorder
asndW	=	kgainW*asnd
asndHO	=	kgainHO*asndW
c1:
   	zawm	cos(kk*kaz)*asndHO,2*kk-1
   	zawm	sin(kk*kaz)*asndHO,2*kk
kk =		kk-1

if	kk > 0 goto c1
	zawm	asndW,0	
endop

;***************

opcode	ambi2D_decode, a, ii		
iorder,iaz	xin

iaz = $M_PI*iaz/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz)*zar(2*kk-1)
a1 +=	sin(kk*iaz)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
		xout			igain*a1
endop

opcode	ambi2D_decode, aa, iii		
iorder,iaz1,iaz2	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
		xout			igain*a1,igain*a2
endop

opcode	ambi2D_decode, aaa, iiii		
iorder,iaz1,iaz2,iaz3	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
		xout			igain*a1,igain*a2,igain*a3
endop

opcode	ambi2D_decode, aaaa, iiiii		
iorder,iaz1,iaz2,iaz3,iaz4	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
		xout			igain*a1,igain*a2,igain*a3,igain*a4
endop


opcode	ambi2D_decode, aaaaa, iiiiii		
iorder,iaz1,iaz2,iaz3,iaz4,iaz5	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
		xout			igain*a1,igain*a2,igain*a3,igain*a4,igain*a5
endop

opcode	ambi2D_decode, aaaaaa, iiiiiii		
iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
		xout			igain*a1,igain*a2,igain*a3,igain*a4,igain*a5,igain*a6
endop

opcode	ambi2D_decode, aaaaaaa, iiiiiiii		
iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6,iaz7	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180
iaz7 = $M_PI*iaz7/180

iaz6 = $M_PI*iaz6/180
igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
kk =	iorder
a7	=	.5*zar(0)
c7:
a7 +=	cos(kk*iaz7)*zar(2*kk-1)
a7 +=	sin(kk*iaz7)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c7
		xout			igain*a1,igain*a2,igain*a3,igain*a4,igain*a5,igain*a6,igain*a7
endop

opcode	ambi2D_decode, aaaaaaaa, iiiiiiiii		
iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6,iaz7,iaz8	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180
iaz7 = $M_PI*iaz7/180
iaz8 = $M_PI*iaz8/180

igain	=	2/(2*iorder+1)
kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
kk =	iorder
a7	=	.5*zar(0)
c7:
a7 +=	cos(kk*iaz7)*zar(2*kk-1)
a7 +=	sin(kk*iaz7)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c7
kk =	iorder
a8	=	.5*zar(0)
c8:
a8 +=	cos(kk*iaz8)*zar(2*kk-1)
a8 +=	sin(kk*iaz8)*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c8
		xout			igain*a1,igain*a2,igain*a3,igain*a4,igain*a5,igain*a6,igain*a7,igain*a8
endop

;**************
opcode	ambi2D_dec_inph, a, ii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1	xin

iaz1 = $M_PI*iaz1/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
		xout			iNorm2D[iorder-1]*a1
endop

opcode	ambi2D_dec_inph, aa, iii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
		xout			iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2
endop

opcode	ambi2D_dec_inph, aaa, iiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3
endop

opcode	ambi2D_dec_inph, aaaa, iiiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3,iaz4	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3,
		iNorm2D[iorder-1]*a4
endop

opcode	ambi2D_dec_inph, aaaaa, iiiiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3,iaz4,iaz5	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3,
		iNorm2D[iorder-1]*a4,iNorm2D[iorder-1]*a5
endop

opcode	ambi2D_dec_inph, aaaaaa, iiiiiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3,
		iNorm2D[iorder-1]*a4,iNorm2D[iorder-1]*a5,iNorm2D[iorder-1]*a6
endop

opcode	ambi2D_dec_inph, aaaaaaa, iiiiiiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6,iaz7	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180
iaz7 = $M_PI*iaz7/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
kk =	iorder
a7	=	.5*zar(0)
c7:
a7 +=	cos(kk*iaz7)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a7 +=	sin(kk*iaz7)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c7
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3,
		iNorm2D[iorder-1]*a4,iNorm2D[iorder-1]*a5,iNorm2D[iorder-1]*a6,
		iNorm2D[iorder-1]*a7
endop

opcode	ambi2D_dec_inph, aaaaaaaa, iiiiiiiii	
; weights and norms up to 12th order
iNorm2D[] array 1,0.75,0.625,0.546875,0.492188,0.451172,0.418945,
					0.392761,0.370941,0.352394,0.336376,0.322360
iWeight2D[][] init   12,12
iWeight2D     array  0.5,0,0,0,0,0,0,0,0,0,0,0,
	0.666667,0.166667,0,0,0,0,0,0,0,0,0,0,
	0.75,0.3,0.05,0,0,0,0,0,0,0,0,0,
	0.8,0.4,0.114286,0.0142857,0,0,0,0,0,0,0,0,
	0.833333,0.47619,0.178571,0.0396825,0.00396825,0,0,0,0,0,0,0,
	0.857143,0.535714,0.238095,0.0714286,0.012987,0.00108225,0,0,0,0,0,0,
	0.875,0.583333,0.291667,0.1060601,0.0265152,0.00407925,0.000291375,0,0,0,0,0,
	0.888889,0.622222,0.339394,0.141414,0.043512,0.009324,0.0012432,
	0.0000777,0,0,0,0,
	0.9,0.654545,0.381818,0.176224,0.0629371,0.0167832,0.00314685,
	0.000370218,0.0000205677,0,0,0,
	0.909091,0.681818,0.41958,0.20979,0.0839161,0.0262238,0.0061703, 
	0.00102838,0.000108251,0.00000541254,0,0,
	0.916667,0.705128,0.453297,0.241758,0.105769,0.0373303,0.0103695, 
	0.00218306,0.000327459,0.0000311866,0.00000141757,0,
	0.923077,0.725275,0.483516,0.271978,0.12799,0.0497738,0.015718,
	0.00392951,0.000748478,0.000102065,0.00000887523,0.000000369801

iorder,iaz1,iaz2,iaz3,iaz4,iaz5,iaz6,iaz7,iaz8	xin

iaz1 = $M_PI*iaz1/180
iaz2 = $M_PI*iaz2/180
iaz3 = $M_PI*iaz3/180
iaz4 = $M_PI*iaz4/180
iaz5 = $M_PI*iaz5/180
iaz6 = $M_PI*iaz6/180
iaz7 = $M_PI*iaz7/180
iaz8 = $M_PI*iaz8/180

kk =	iorder
a1	=	.5*zar(0)
c1:
a1 +=	cos(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a1 +=	sin(kk*iaz1)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c1
kk =	iorder
a2	=	.5*zar(0)
c2:
a2 +=	cos(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a2 +=	sin(kk*iaz2)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c2
kk =	iorder
a3	=	.5*zar(0)
c3:
a3 +=	cos(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a3 +=	sin(kk*iaz3)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c3
kk =	iorder
a4	=	.5*zar(0)
c4:
a4 +=	cos(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a4 +=	sin(kk*iaz4)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c4
kk =	iorder
a5	=	.5*zar(0)
c5:
a5 +=	cos(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a5 +=	sin(kk*iaz5)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c5
kk =	iorder
a6	=	.5*zar(0)
c6:
a6 +=	cos(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a6 +=	sin(kk*iaz6)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c6
kk =	iorder
a7	=	.5*zar(0)
c7:
a7 +=	cos(kk*iaz7)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a7 +=	sin(kk*iaz7)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c7
kk =	iorder
a8	=	.5*zar(0)
c8:
a8 +=	cos(kk*iaz8)*iWeight2D[iorder-1][kk-1]*zar(2*kk-1)
a8 +=	sin(kk*iaz8)*iWeight2D[iorder-1][kk-1]*zar(2*kk)
kk =		kk-1
if	kk > 0 goto c8
		xout	iNorm2D[iorder-1]*a1,iNorm2D[iorder-1]*a2,iNorm2D[iorder-1]*a3,
		iNorm2D[iorder-1]*a4,iNorm2D[iorder-1]*a5,iNorm2D[iorder-1]*a6,
		iNorm2D[iorder-1]*a7,iNorm2D[iorder-1]*a8
endop

;**************
opcode	ambi2D_write_B,	0, Sii	
Sname,iorder,iformat		xin
	if(iorder == 1) then
	fout	Sname,iformat,zar(0),zar(1),zar(2)
	elseif(iorder == 2) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4)
	elseif(iorder == 3) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6)
	elseif(iorder == 4) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
	zar(7),zar(8)
	elseif(iorder == 5) then
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
	zar(7),zar(8),zar(9),zar(10)
	elseif(iorder == 6) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12)
	elseif(iorder == 7) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14)
	elseif(iorder == 8) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16)
	elseif(iorder == 9) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18)
	elseif(iorder == 10) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20)
	elseif(iorder == 11) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22)
	elseif(iorder == 12) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24)
	elseif(iorder == 13) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26)
	elseif(iorder == 14) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28)
	elseif(iorder == 15) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30)
	elseif(iorder == 16) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32)
	elseif(iorder == 17) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34)
	elseif(iorder == 18) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36)
	elseif(iorder == 19) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36),zar(37),zar(38)
	elseif(iorder == 20) then				
	fout	Sname,iformat,zar(0),zar(1),zar(2),zar(3),zar(4),zar(5),zar(6),
zar(7),zar(8),zar(9),zar(10),zar(11),zar(12),zar(13),zar(14),zar(15),zar(16),zar(17),zar(18),zar(19),zar(20),zar(21),zar(22),zar(23),zar(24),zar(25),zar(26),zar(27),zar(28),zar(29),zar(30),zar(31),zar(32),zar(33),zar(34),zar(35),zar(36),zar(37),zar(38),zar(39),zar(40)

	endif
endop

;;;;;;;;;


opcode	ambi2D_read_B, 0,	Si		
Sname,iorder			xin
if(iorder == 1) then

a1,a2,a3	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
endif	
if(iorder == 2) then
a1,a2,a3,a4,a5	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4
endif
if(iorder == 3) then
a1,a2,a3,a4,a5,a6,a7	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4
	zawm	a6,5
	zawm	a7,6
endif
if(iorder == 4) then
a1,a2,a3,a4,a5,a6,a7,a8,a9	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
endif
if(iorder == 5) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10
endif
if(iorder == 6) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
endif
if(iorder == 7) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
endif
if(iorder == 8) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
endif
if(iorder == 9) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
endif
if(iorder == 10) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
endif
if(iorder == 11) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
endif
if(iorder == 12) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
endif
if(iorder == 13) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
endif
if(iorder == 14) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
endif
if(iorder == 15) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
endif
if(iorder == 16) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
endif
if(iorder == 17) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35 soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
endif
if(iorder == 18) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
	zawm	a37,36	
endif
if(iorder == 19) then
a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30,a31,a32,a33,a34,a35,a36,a37,a38,a39	soundin Sname
	zawm	a1,0	
	zawm	a2,1
	zawm	a3,2	
	zawm	a4,3
	zawm	a5,4	
	zawm	a6,5
	zawm	a7,6	
	zawm	a8,7
	zawm	a9,8
	zawm	a10,9
	zawm	a11,10	
	zawm	a12,11
	zawm	a13,12	
	zawm	a14,13
	zawm	a15,14	
	zawm	a16,15
	zawm	a17,16	
	zawm	a18,17
	zawm	a19,18
	zawm	a20,19
	zawm	a21,20	
	zawm	a22,21
	zawm	a23,22	
	zawm	a24,23
	zawm	a25,24	
	zawm	a26,25
	zawm	a27,26	
	zawm	a28,27
	zawm	a29,28
	zawm	a30,29
	zawm	a31,30	
	zawm	a32,31
	zawm	a33,32	
	zawm	a34,33
	zawm	a35,34	
	zawm	a36,35
	zawm	a37,36	
	zawm	a38,37
	zawm	a39,38
endif
endop

;;;;;;;;;


opcode xy_to_ad, kk, kk  
kx,ky		xin
kdist =	sqrt(kx*kx+ky*ky)
kaz 		taninv2	ky,kx
			xout		180*kaz/$M_PI, kdist

endop
