[comp.sources.amiga] v90i093: n2a - convert NeXT sounds files to IFF 8SVX, Part01/01

Amiga-Request@cs.odu.edu (Amiga Sources/Binaries Moderator) (03/04/90)

Submitted-by: kyrimis@Princeton.EDU (Kriton Kyrimis)
Posting-number: Volume 90, Issue 093
Archive-name: audio/n2a

[ uuencoded executable enclosed.  ...tad ]

Here's a little hack I wrote to enable me to play NeXT sounds on my amiga.

#!/bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  Makefile README n2a.c n2a.uu
# Wrapped by tadguy@xanth on Sat Mar  3 20:10:59 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(91 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
Xn2a: n2a.o
X	blink FROM LIB:c.o n2a.o TO n2a NODEBUG LIB LIB:lc.lib
X
Xn2a.o: n2a.c
X	lc n2a.c
END_OF_FILE
if test 91 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(1006 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
Xn2a converts NeXT sound files into 8SVX IFF  files.   NeXT  sound
Xfiles  come  in  many  different  flavors;  n2a  groks  only  the
XLINEAR_16 format, which is the one that most PD sound files  seem
Xto be using.  NeXT recording applications use the MULAW_8 format.
XYou can convert from this format to LINEAR_16 with the sndconvert
Xapplication  on  the NeXT.  You can tell whether a sound file can
Xbe processed by n2a using the command:
X  od -b file | head -1
XIf the last number is 003, then the file is in LINEAR_16 format.
X
XThe program compiles both on the NeXT and the Amiga.  I have pro-
Xvided an Amiga executable, but I would recommend running the pro-
Xgram on the NeXT, because the resulting 8SVX  file  is  half  the
Xsize of the NeXT file.
X
XThis program is released to the public domain.
X
X	Kriton	(UUCP: rutgers!princeton!kyrimis)
X	      	(ARPA: kyrimis@princeton.edu)
X-----
X"Everybody keep calm.  It's all under control, there's nothing to
X see.  It is merely a major scientific breakthrough."
X-----
END_OF_FILE
if test 1006 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'n2a.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'n2a.c'\"
else
echo shar: Extracting \"'n2a.c'\" \(3080 characters\)
sed "s/^X//" >'n2a.c' <<'END_OF_FILE'
X#include <stdio.h>
X#include <math.h>
X#ifdef AMIGA
X#include <exec/types.h>
X#else
Xtypedef long LONG;
Xtypedef unsigned long  ULONG;
Xtypedef unsigned char  UBYTE;
Xtypedef unsigned short UWORD;
X#endif
X
X#define MAGIC		0x2e736e64
X#define LINEAR_16	3
X
X#define Unity 0x10000L
X
Xtypedef LONG Fixed;
Xtypedef struct {
X  ULONG oneShotHiSamples,
X    repeatHiSamples,
X    samplesPerHiCycle;
X  UWORD samplesPerSec;
X  UBYTE ctOctave,
X	sCompression;
X  Fixed volume;
X} Voice8Header;
X
Xmain(int argc, char *argv[])
X{
X  Voice8Header v;
X  long i, nsamples, voffset, lengthoffset, nsamplesoffset;
X  int magic, offset, size, format, rate, nchannels;
X  unsigned short s16;
X  FILE *in, *out;
X  unsigned char s8;
X
X  if (argc != 3) {
X    fprintf(stderr, "Usage: %s sndfile 8svxfile\n", argv[0]);
X    exit(1);
X  }
X  in = fopen(argv[1], "r");
X  if (!in) {
X    fprintf(stderr, "Can't open %s!\n", argv[1]);
X    exit(1);
X  }
X  fread((void *)&magic,     sizeof(magic),     1, in);
X  fread((void *)&offset,    sizeof(offset),    1, in);
X  fread((void *)&size,      sizeof(size),      1, in);
X  fread((void *)&format,    sizeof(format),    1, in);
X  fread((void *)&rate,      sizeof(rate),      1, in);
X  fread((void *)&nchannels, sizeof(nchannels), 1, in);
X
X  if (magic != MAGIC) {
X    fprintf(stderr, "%s Is not a NeXT sound file!\n", argv[1]);
X    fclose(in);
X    exit(1);
X  }
X  if (format != LINEAR_16 || nchannels != 1) {
X    fprintf(stderr, "I can only handle linear 16 format with 1 channel!\n");
X    if (format != LINEAR_16 && nchannels == 1) {
X      fprintf(stderr, "Use sndconvert on the NeXT to convert to this format\n");
X    }
X    fclose(in);
X    exit(1);
X  }
X  out = fopen(argv[2], "w");
X  if (!out) {
X    fprintf(stderr, "Can't open %s!\n", argv[2]);
X    fclose(in);
X    exit(1);
X  }
X  fwrite((void *)"FORM", sizeof(char), 4, out);
X  lengthoffset = ftell(out);
X  i = 0;	/* update this later */
X  fwrite((void *)&i, sizeof(i), 1, out);
X  fwrite((void *)"8SVX", sizeof(char), 4, out);
X  fwrite((void *)"VHDR", sizeof(char), 4, out);
X  i = 20;
X  fwrite((void *)&i, sizeof(i), 1, out);
X  voffset = ftell(out);
X  v.oneShotHiSamples = 0;	/* Update this later */
X  v.repeatHiSamples = 0;
X  v.samplesPerHiCycle = 0;
X  v.samplesPerSec = rate;
X  v.ctOctave = 1;
X  v.sCompression = 0;
X  v.volume = Unity;
X  fwrite((void *)&v, sizeof(v), 1, out);
X  fwrite((void *)"BODY", sizeof(char), 4, out);
X  nsamplesoffset = ftell(out);
X  i = 0;	/* update this later */
X  fwrite((void *)&i, sizeof(i), 1, out);
X
X  fseek(in, (long)offset, 0);
X  nsamples = 0;
X  while (fread((void *)&s16, sizeof(s16), 1, in)) {
X    s8 = s16 >> 8;
X    fwrite((void *)&s8, sizeof(s8), 1, out);
X    nsamples++;
X  }
X  fclose(in);
X  if (nsamples % 2) {
X    s8 = 0;
X    fwrite((void *)&s8, sizeof(s8), 1, out);	/* pad to even length */
X  }
X  fseek(out, voffset, 0);
X  v.oneShotHiSamples = nsamples;
X  fwrite((void *)&v, sizeof(v), 1, out);
X  fseek(out, lengthoffset, 0);
X  i = 40 + nsamples;
X  fwrite((void *)&i, sizeof(i), 1, out);
X  fseek(out, nsamplesoffset, 0);
X  fwrite((void *)&nsamples, sizeof(nsamples), 1, out);
X  fclose(out);
X  exit(0);
X}
END_OF_FILE
if test 3080 -ne `wc -c <'n2a.c'`; then
    echo shar: \"'n2a.c'\" unpacked with wrong size!
fi
# end of 'n2a.c'
fi
if test -f 'n2a.uu' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'n2a.uu'\"
else
echo shar: Extracting \"'n2a.uu'\" \(13686 characters\)
sed "s/^X//" >'n2a.uu' <<'END_OF_FILE'
Xbegin 644 n2a
XM```#\P`````````#``````````(```>6````^0```5L```/I```'EDCG?OXD%
XM2"0`2?D`````+'@`!$?Y```#`'(`(#P```";8`(FP5'(__PI3P-`*4X#.$*LZ
XM`SQP`"(\```P`$ZN_LY#^@%:<`!.KOW8*4`$F&8&<&1@``#\)FX!%"EK`)@#7
XM-$JK`*QG:"`/D*\`!`:`````@"E``P0@:P"LT<C1R")H`!#3R=/)(`)R`!(9&
XM*4D#2-"!4H!"9U*``D#__I_`58!"=P@`(`)3@-2!'[(``"``4X)1R/_V'[P`(
XM("``4X(?L2``(`!1RO_X(D\O"6!R*6L`.@,$<']2@-&L`P1!ZP!<3J[^@$'KZ
XM`%Q.KOZ,*4`#/"\`)$`@*@`D9Q(L;`28($`B*```*4$#-$ZN_X(B*@`@9QHD1
XM/````^U.KO_B*4`#1&<*Y8@@0"=H``@`I"!L`SPO"$AL`P`@:``D*6@`!`-(W
XM3KH`9DZZ%99P`&`$("\`!"\`("P#+&<$($!.D$ZZ$&XL>``$(FP$F$ZN_F).=
XMN@`\2JP#/&<:(BP#1&<$3J[_W"QX``1.KO]\(FP#/$ZN_H8@'RYL`T!,WW]^S
XM3G5D;W,N;&EB<F%R>0!.=4YU3E7_[$CG+Q`N+P`T)F\`."@'<#'`JP`89P9P\
XM_V```G`(*P`'`!I6P$0`2(!(P"P`2JL`%&8``(0(*P`"`!MF>G``)T``#'+_R
XMOH%G``)"+PM.NA<.6$]*@&<,".L`!0`;</]@``(J".L``0`;2@9G#B`K`!0B8
XM`$2!)T$`#&`(("L`%"=```Q3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`2<
XM(`=R`!(`+PLO`6$`_U)03R(`(`%@``'6""L``@`;9UAP_[Z`9@9P`&```<(@[
XM!QM`__]*!F<B<@J^@68<<@(O`4AZ`;(O*P`<*T'_\$ZZ#]!/[P`,*@!@&G(!H
XM+P%(;?__+RL`'"M!__!.N@^T3^\`#"H`?O]@``#@".L``0`;2@9G4G#_OH!G<
XM3%2K``QR"KZ!9B8@:P`$0^@``2=)``00O``-(BL`#$J!:PHO"R\`80#^KE!/4
XM4JL`#"!K``1#Z``!)TD`!"`'$(`B*P`,2H%K``$<?O\@*P`$D*L`$"M`__!GS
XM<@@K``8`&F=22'@``D*G+RL`'$ZZ!=!/[P`,*T#_[$H&9SA3K?_L;3)"IR\M:
XM_^PO*P`<3KH%L$AX``%(;?_]+RL`'$ZZ%SA/[P`82JP#&&8*$"W__7(:L`%G1
XMR"\M__`O*P`0+RL`'$ZZ#M1/[P`,*@!@`GH`</^Z@&8(".L`!0`;8`RZK?_P9
XM9P8(ZP`$`!M*!F<.(BL`%"0!1((G0@`,8!@(*P`"`!MG"'(`)T$`#&`((BL`7
XM%"=!``P@:P`0)T@`!+Z`9RY3JP`,;18@:P`$0^@``2=)``0@!Q"`<@`2`&`22
XM(`=R`!(`+PLO`6$`_9!03R(`<##`JP`89P1P_V`,</^X@&8$<`!@`B`$3-\(G
XM]$Y=3G4-"@````````````!P84CG!Q`F;P`4""L`!P`:5L!$`$B`2,`N`'`P%
XMP*L`&&<*0JL`"'#_8``!6`@K``<`&V<4""L`!@`;9PPO"TAX__].NOT:4$]*H
XMJP`49C9"JP`(""L``@`;9Q)P`2=``!1!ZP`@)T@`$&```(0O"TZZ%$Y83TJ`)
XM9W8(ZP`%`!MP_V```0!*!V=F5*L`""`K``A*@&Y:(&L`!$/H``$G20`$?``<1
XM$"`&#(`````:9RX,@`````UF,E.K``AM%"!K``1#Z``!)TD`!'``$!!@``"T\
XM+PMA`/\N6$]@``"H".L`!``;</]@``"<(`9@``"6""L``0`;9DX(ZP```!LO0
XM*P`4+RL`$"\K`!Q.NA543^\`#"H`2H5J!@CK``4`&TJ%9@8(ZP`$`!M*A6\:[
XM2@=G"B`%1(`G0``(8`0G10`((&L`$"=(``1P,L"K`!AG%DH'9PAP_R=```A@@
XM!G``)T``"'#_8"!3JP`(;1(@:P`$0^@``2=)``1P`!`08`@O"V$`_H183TS?O
XM".!.=0``+FP#0$ZZ%?I(>0```!1.N@@0``````````!P84CG(#`F;P`0)$M*"
XM$F<D<``0$D'L`6T(,``!"`!G"G(`$@!T()*"8`1R`!(`%(%2BF#8(`M,WPP$?
XM3G4``````````'!A3E7_^$CG`S`F;P`@)&\`)"XO`"@@2DH89OQ3B)'*+`@@Y
XM2TH89OQ3B)'+(`@B2]/`*TG_^+R'8P(L!R`&($I@`A+84X!D^B!M__A",&@`?
XM(`M,WPS`3EU.=2`O``@@;P`$3E7_]")/<@I.N@I8!D$`,!+!2H!F\"`)$.&_J
XMR6;Z0A"0CTY=3G4``"`O``@@;P`$3E7_]")/(@`"00`'!D$`,!+!YHAF\"`)<
XM$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W.#EA8F-D968@+P`((&\`!$/O``0RL
XM``)!``\2^Q#<Z(AF\B`)(@]8@1#ALHEF^D(0D(%.=2!O``0B2'(`<``O`@P0D
XM`"MG!@P0`"UF`E)($!@$```P;1(,```);@PD`>6!TH+2@=*`8.8,$0`M9@)$-
XM@20?(`A3@"!O``@@@9")3G5.5?_F2.</,"9O`#HN+P`^0BW__T*L`Q@K;`248
XM__)Z`[JL`.!L$B`%YX!![`-,2K`(`&<$4H5@Z"`L`."PA68,<!@I0`24</]@Q
XM``$J(`7G@$'L`TS1P"1(2JT`$&<(""T``@`39PHK?````^S_[F`(*WP```/ND
XM_^X@/```@`#`K`#XL8<(!P`#9PP@!P)`__PN``!'``(@!W(#P($,@`````)G7
XM#`R``````6<$2H!F!BP'4H9@#'`6*4`$E'#_8```M"`'`H````,`9P``B`@'E
XM``IG%AM\``'__R\M_^XO"TZZ!V)03R@`8#P(!P`)9A9(>`/M+PM.N@<$4$\H,
XM`$J$:@0(QP`)"`<`"6<:&WP``?__*6W_\@24+RW_[B\+3KH'B%!/*`!*+?__X
XM9S8@!W)XTH'`@4J`9RI*A&LF+P1.N@?02'@#[2\+3KH&LD_O``PH`&`.2'@#;
XM[2\+3KH&H%!/*`!*K`,89P1P_V`()(8E1``$(`5,WPSP3EU.=0```````````
XM`````````````````````````````'!A2.</$"XO`!@L+P`<*B\`("\'3KH(*
XM9%A/)D`@"V8$</]@'B\%+P8O*P`$3KH%;$_O``PH`$JL`QAG!'#_8`(@!$S?!
XM"/!.=0``2.<#,"XO`!1*AVX&<`!@``"D<`B^@&0"+@`@!U:`+@`"1__\1>P`Q
XM\"92(`MG0"`K``2PAVTRL(=F#"!3)(B?K`#T(`M@;B`K``20AW((L(%E%B!+6
XMT<<DB"1()),E0``$GZP`]"`+8$PD2R938+P@!R(L`6C0@5.`3KH&\B(L`6A.Q
XMN@;*+`!0AB`&5H`L``)&__PO!DZZ"`I83R9`(`MG$B\&+PM.N@^Z+H=A`/]4@
XM4$]@`G``3-\,P$YU``````````````````!.5?_T2.</,"9O`"PN+P`T)&\`4
XM.'P`O(=L2BHM``Q*A6\^>``8&U.J``QM%B!J``1#Z``!)4D`!"`$$(!R`!(`G
XM8!(@!'(`$@`O"B\!3KKW.E!/(@!2@68$(`9@"E.%8+Y2AF"R(`9,WPSP3EU.P
XM=0``2.<!$"9O``P(*P`!`!MG%DJK`!1F!'``8%PO"TAX__].NO;V4$](>``!-
XM0J<O*P`<3KK^3D_O``PN`'#_OH!G!DJK`!1F!"`'8"P(*P`!`!MG#"`K``20,
XMJP`0T(=@&`@K``<`&F<*(`<B*P`(T(%@!B`'D*L`"$S?"(!.=4CG`Q`F;P`0)
XM+B\`%"PO`!@(*P`!`!MG#B\+2'C__TZZ]GQ03V`:<`&\@&84""L`!P`:9P@@]
XM*P`(WH!@!)ZK``@G:P`0``1P`"=```PG0``(""L`!P`;9P9P_,&K`!@O!B\';
XM+RL`'$ZZ_9Q/[P`,4H!F!'#_8`APS\&K`!AP`$S?",!.=4Y5__1(YP\P)F\`V
XM+"XO`#0D;P`X2JT`#&8$<`!@2'P`O(=L0"HM``Q*A6\T4ZH`"&T2(&H`!$/H*
XM``$E20`$<``0$&`(+PI.NOAT6$\H`'#_N(!F!"`&8`X@!!;`4X5@R%*&8+P@:
XM!DS?#/!.74YU``!(YP$@+B\`#%*L!)`@;`2,4Z@`#&T6(F@`!$7I``$A2@`$X
XM(`<2@'(`$@!@$B`'<@`2`"\(+P%.NO5P4$\B`$S?!(!.=4Y5``!(YP`P)F\`X
XM$"1O`!1"K`20*4L$C$AM`!`O"DAZ_YQ.N@H6+HM(>/__3KKU-B`L!)!,[0P`/
XM__A.74YU``!.5?_P2.</,"9O`#0D;P`X2JH`&&<(+PI.N@[66$\J+`%D?@%PJ
XM`!`S>``,0`!B9PH,0`!A9@QZ`&`&*CP``(``4H=R*[(S>`!7P$0`2(!(P"@`E
XM<``0$PQ``'=G``"(#$``<F="#$``868``+Y(>``,+SP``($"+RT`"$ZZ^G1/@
XM[P`,+`!P_[R`9@9P`&```-!*A&<&<$#0@&`"<`(N``!'0`!@``"(2H1G!'`"U
XM8`)P``!`@`!(>``,+P`O+0`(3KKZ,$_O``PL`'#_O(!F!G``8```C$J$9P9PW
XM0-"`8`)P`2X`8$A*A&<$<`)@`G`!`$"```!``0``0`(`2'@`#"\`+RT`"$ZZA
XM^>I/[P`,+`!P_[R`9@1P`&!&2H1G!G!`T(!@`G`"+@!@!'``8#*1R"5(`!!PM
XM`"5``!0E1@`<)6H`$``$)4``#"5```A*A68&(#P``(``(@>"@"5!`!@@"DS?6
XM#/!.74YU``````````!P84CG`Q`N+P`01^P`_"`+9S0(*P`"`!MF*`@K``$`Q
XM&V<@("L`!)"K`!`L`$J&9Q(O!B\K`!`O*P`<3KH$.D_O``PF4V#(+P=.N@LHH
XM6$],WPC`3G4``````````'!A2.<W$"XO`!PF;P`@+"\`)$JL`S!G!$ZZ#Z1"B
XMK`,8(@<D"R8&+&P$F$ZN_]`J`'#_NH!F#DZN_WPI0`,8<`4I0`24(`5,WPCL&
XM3G4``````````````````$CG/P`N+P`<+"\`("HO`"1*K`,P9P1.N@],0JP#*
XM&"`%4X`B!R0&)@`L;`283J[_OB@`</^X@&8.3J[_?"E``QAP%BE`!)0@!0R`L
XM`````F<6#(`````!9PA*@&88(`9@%"`$T(9@#B('=`!V`"QL!)A.KO^^3-\`P
XM_$YU``!(YS<0+B\`'"9O`"`L+P`D2JP#,&<$3KH.T$*L`Q@B!R0+)@8L;`28=
XM3J[_UBH`</^Z@&8.3J[_?"E``QAP!2E`!)0@!4S?".Q.=0``2.<C$"9O`!0N)
XM+P`82JP#,&<$3KH.B$*L`Q@B"R0'+&P$F$ZN_^(L`$J&9A).KO]\*4`#&'`",
XM*4`$E'#_8`(@!DS?",1.=0``3E7__$CG(1`F;P`82JP#,&<$3KH.0$*L`Q@BR
XM"W3^+&P$F$ZN_ZPN`$J'9PHB!TZN_Z9P_V`F(@LD/````^Y.KO_B+@!*AV829
XM3J[_?"E``QAP`BE`!)1P_V`"(`=,WPB$3EU.=4Y5__Q(YR$0)F\`&$JL`S!G&
XM!$ZZ#=Q"K`,8(@MT_BQL!)A.KO^L+@!*AV<,(@=.KO^F(@M.KO^X(@LD/```A
XM`^Y.KO_B+@!*AV823J[_?"E``QAP`BE`!)1P_V`"(`=,WPB$3EU.=0``+P<NT
XM+P`(2JP#,&<$3KH->B('+&P$F$ZN_]QP`"X?3G5(YS``)``F`4A"2$/$P<;`8
XMP,'40TA"0D+0@DS?``Q.=4J`:@``'D2`2H%J```,1(%A```@1(%.=6$``!A$4
XM@$2!3G5*@6H```Q$@6$```9$@$YU+P)(030!9@``(DA`2$%(0C0`9P``!H3!T
XM,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!`(!D```&X9E10PQ!"`!D```&Z9E9`
XM0PQ!(`!D```&Y9E50TI!:P``!N.94T,T`.:H2$)"0N:J2$.`P38`,`(T`TA!2
XMQ,&0@F0```A30]"!9/YR`#(#2$/GN$A`P4$F'R0?3G4O!RXO``AP`"E``QA*+
XMAVLBOJP`X&P<(`?G@$'L`TQ*L`@`9PX@!^>`0>P#3-'`(`A@"'`)*4`$E'``\
XM+A].=0``2.<`,B9L!)P@"V<4)%,B2R`K``@L>``$3J[_+B9*8.B1R"E(!*`I@
XM2`2<3-],`$YU2.<!,BXO`!1P#-Z`(`=R`"QX``1.KO\Z)D`@"V8$<`!@.B='X
XM``A%[`2<(&H`!"=(``21R":(2I)F`B2+2JH`!&<&(FH`!"*+)4L`!$JL`.1FJ
XM!"E+`.1!ZP`,(`A,WTR`3G4``````````````````$CG!S`N+P`8)F\`'"PO=
XM`"`O!TZZ_PQ83R1`(`IF!'#_8#8(*@`#``-G$$AX``)"IR\'3KKV=$_O``PO(
XM!B\++RH`!$ZZ^Z1/[P`,*@!*K`,89P1P_V`"(`5,WPS@3G4``$Y5_\1(YR<PP
XM)F\`7"1O`&!^`'P`>@!P`!M\`"#_^W(`*T'_]G3_*T+_\D'M_]`;0/_Q&T#__
XM_"M!_^0K0?_H*TC_S$H39RQP`!`3!$``(&<45T!G%%%`9PA50&86?@%@#GP!+
XM8`IZ`6`&&WP``?_\4HM@T!`3<C"P`68&4HL;0?_[<"JP$V8,(%)8DBM0__92M
XMBV`.2&W_]B\+3KKSQE!/U\`0$W(NL`%F(E*+<"JP$V8,(%)8DBM0__)2BV`./
XM2&W_\B\+3KKSG%!/U\`0$W)LL`%F"AM\``'_\5*+8`AR:+`!9@)2BQ`;<@`2;
XM`!M`__`$00!89P`!?@1!``MG``(*4T%G)`1!``MG``$24T%G``%05T%G``&Z_
XM54%G``#D5T%G``%28``!^$HM__%G""!26)(@$&`&(%)8DB`0*T#_[&P*<@%$C
XMK?_L*T'_Z$JM_^AG!'`M8`I*!F<$<"M@`G`@&T#_T'``$`8B+?_H@H!P`!`%P
XM@H!G"%*M_\Q2K?_D+RW_["\M_\Q.NO(^4$\K0/_(("W_\DJ`:@9R`2M!__(@\
XM+?_((BW_\I*`2.T``O_$;S0@;?_,(DC3P2\`+PDO"$ZZ!FI/[P`,<``0+?_[`
XM(BW_Q"!M_\Q@`A#`4X%D^B`M__(K0/_(T:W_Y$'M_]`K2/_,2@=G``$P&WP`:
XM(/_[8``!)DHM__%G""!26)(@$&`&(%)8DB`0*T#_[&``_V1*+?_Q9P@@4EB2`
XM(!!@!B!26)(@$"M`_^Q*+?_\9Q(@;?_,$/P`,'(!*T'_Y"M(_\PO`"\M_\Q.;
XMNO&B4$\K0/_(8`#_,AM\`##_^R`M__)*@&H&<`@K0/_R2BW_\6<((%)8DB`0>
XM8`8@4EB2(!`K0/_L2BW__&<6(&W_S!#\`#`0_`!X<@(K0?_D*TC_S"\`+RW_:
XMS$ZZ\8903RM`_\AP6+`M__!F`/[02&W_T$ZZ\&)83V``_L(@4EB2(E`K2?_,6
XM9@A!^@#8*TC_S"!M_\Q*&&;\4XB1[?_,*TC_Y"`M__)*@&LFL<!O(BM`_^1@>
XM''`!*T#_Y"!26)(@$!M`_]!"+?_18`9P`&```(P@+?_D(BW_]K*`;`AT`"M"-
XM__9@!)&M__9*!V<V4ZW_Y&T8<``@;?_,$!@O`"M(_\P@;0`03I!83V#B4ZW_B
XM]FU(<``0+?_[+P`@;0`03I!83V#H4ZW_]FT2<``0+?_[+P`@;0`03I!83V#H?
XM4ZW_Y&T8<``@;?_,$!@O`"M(_\P@;0`03I!83V#B(`M,WPSD3EU.=0``3E7__
XM]$CG`3`F;P`@)&\`)"MM`!#_]AX:2@=G-'`EO@!F(K`29@12BF`:+PM(;?_V"
XM+PIA`/P63^\`#"M`__IG!"1`8-)P`!`'+P!.DUA/8,9,WPR`3EU.=0``3E7_&
XM\$CG(3(F;P`L#*P````@!.)L``"&$!-R(+`!9PQR";`!9P9R"K`!9@12BV#H1
XM2A-G:"`L!.+E@%*L!.)![`3JT<`D2'`BL!-F)E*+)(M*$V<*<"*P$V<$4HM@W
XM\DH39@Q(>``!3KH")%A/8)Y"&V":)(M*$V<8$!-R(+`!9Q!R";`!9PIR"K`!>
XM9P12BV#D2A-F`F`&0AM@`/]R2JP$XF8&(&P#/&`$0>P$ZBE(!.9*K`3B9GQ#3
XM^@$D3>P$J"S9+-DLV2S9/)$B;`,\(&D`)$AX`"@O*``$2&P$J$ZZ[GY/[P`,`
XM+&P$F$'L!*@B""0\```#[DZN_^(I0`-0*4`#6'(0*4$#5"E``V`I00-<Y8`K-
XM0/_P+'@`!)/)3J[^VB!M__`B0"-H``@`I'X`*T#_]&`J+&P$F$ZN_\HI0`-0W
XM3J[_Q"E``UA!^@"F(@@D/````^U.KO_B*4`#8'X0(`<`0(`!@:P#3"`'`$"`@
XM`H&L`U0`K```@`,#7$JL`61G!'``8`8@/```@``N`$*L`1@@!P!```$I0`$4G
XM<`$I0`$Z(`<`0``"*4`!-G`"*4`!7"`'`$``@"E``5A!^@/Z*4@#,"\L!.8O/
XM+`3B3KH`)D*73KKU3$SM3(3_W$Y=3G5C;VXZ,3`O,3`O,S(P+S@P+P`J`$[Y:
XM`````````````$CG,#(L;P`X(&\`&")O`!PD;P`@)F\`)"`O`"@B+P`L)"\`K
XM,"8O`#1.KOZD3-],#$YU```O"R9O``A*JP`49PP(*P`#`!MF!'``8#8O+`)P^
XM3KKP,EA/)T``!"=``!!*@&8*<`PI0`24</]@%B=L`G``%'#SP:L`&'``)T``F
XM#"=```@F7TYU``````````!P84CG!P`N+P`0("P`X%.`+`!*1FLP(`9(P.>`B
XM0>P#3"HP"`!*!6<:"`4`!&84(`9(P.>`0>P#3"\P"`1.NO;D6$]31F#,+P=.'
XMNN><6$],WP#@3G4``$Y5_^A(YP$R+B\`-$J';@9P_V```-)P"+Z`9`(N`"`'&
XM5H`N``)'__PD;0`(("T`"-"'WZP`]$'L`/`F4"M`__`K2/_T(`MG``"0($L@,
XM*P`$T<`K2/_L(FW_\+?)8Q`DBR5'``0L;?_T+(IP`&!XM\EF&BQ3)(X@*P`$X
XM(@#2AR5!``0L;?_T+(IP`&!:M<AD")^L`/1P_V!.M<AF+$J39PX@4[/(8PB?O
XMK`#T</]@.-^K``1*DV<.L]-F"B`I``31JP`$)I%P`&`>*TO_]"MM_^S_Z"93[
XM8`#_;B!M__0@BD*2)4<`!'``3-],@$Y=3G4``$CG!S`N+P`8)F\`'"PO`"`O&
XM!TZZ]LQ83R1`(`IF!'#_8!XO!B\++RH`!$ZZ]%!/[P`,*@!*K`,89P1P_V`"V
XM(`5,WPS@3G4``"!O``0B;P`(("\`#&\6L\AE#-'`T\`3(%.`9OI.=1+84X!FG
XM^DYU``!.5?_X2.<`,$?L`/P@"V<,2JL`&&<&)$LF4V#P(`MF(DAX`").NNX::
XM6$\F0$J`9@1P`&`<)(MP(7(`($L0P5'(__PO"R\M``PO+0`(3KKQ'DSM#`#_0
XM\$Y=3G4``$CG`Q`F;P`0""L``0`;9Q`O"TAX__].NN8<4$\N`&`"?@!P#,"KA
XM`!AF%$JK`!1G#B\K`!0O*P`03KK^"E!/0JL`&"\K`!Q.N@((6$\L`'#_OH!G+
XM!DJ&9@)P`$S?",!.=4Y5_ZA(YP$"+'@`!$/Z`(YP`$ZN_=@K0/^H9@I(>``4J
XM3KK];EA/?@`@;`-('BC__R`'0^W_L&`"$MA3@&3Z0C5XL$'M_[`I2`*`+RW_`
XMJ$AX`"A(>`#Z<``O`"\`2&P"G'(`+P%(;`*(+P%.NOR42'@`%$ZZ_1Q,[4"``
XM_Z!.74YU*BH@4W1A8VL@3W9E<F9L;W<@*BH``$58250``&EN='5I=&EO;BYL6
XM:6)R87)Y````````````<&%.5?^82.<S`GX`(&P#2!XH__]P3[Z`;P(N`"`'4
XM0^W_KV`"$MA3@&3Z0C5XKRQX``23R4ZN_MHK0/^F($!*J`"L9U(B*`"LY8$B6
XM02PI`#A([0`"_YY*AF8$+"@`H$J&9S0L;`28(@9!^@"R)`AV"TZN_]`@1U*'\
XM(`@;O``*"*\L;`28(@8F!T'M_Z\D"$ZN_]!P_V!2+'@`!$/Z`(QP`$ZN_=@K:
XM0/^:9@1P_V`Z0>W_KRE(`M`O+?^:2'@`/$AX`/IP`"\`+P!(;`+L2&P"V$AL(
XM`L1"ITZZ^W)/[P`D4X!G!'#_8`)P`$S?0,Q.74YU*BH@57-E<B!!8F]R="!2'
XM97%U97-T960@*BH``$-/3E1)3E5%``!!0D]25``J*BH@0G)E86LZ(`!I;G1U.
XM:71I;VXN;&EB<F%R>0!(YP$0+B\`#"\'3KKSN%A/)D`@"V8$</]@*`@K``0`H
XM`V<&<``F@&`:+RL`!$ZZ\I)83W``)H!*K`,89P1P_V`"<`!,WPB`3G4O!W```
XM(CP``#``+'@`!$ZN_LXN``*'```P`$J'9R!*K`,P9QH@;`,P3I!*@&8"8`Y"F
XMK`,P2'@`%$ZZ^QY83RX?3G5AO$YU``````/L`````0````$``!C.`````@``$
XM``(````4````"@````````/R```#Z0```/E.5?^TO^P#!&4``YY(YP<0+BT`I
XM""9M``QP`[Z`9QHO$TAL``!(;`%`3KH#D$AX``%.N@.@3^\`$$AL`!PO*P`$'
XM3KH#<E!/*T#_NF8<+RL`!$AL`!Y(;`%`3KH#8$AX``%.N@-P3^\`$"\M_[I(Y
XM>``!2'@`!$AM_]1.N@-D+JW_NDAX``%(>``$2&W_T$ZZ`U`NK?^Z2'@``4AX!
XM``1(;?_,3KH#/"ZM_[I(>``!2'@`!$AM_\A.N@,H+JW_NDAX``%(>``$2&W_@
XMQ$ZZ`Q0NK?^Z2'@``4AX``1(;?_`3KH#`$_O`$P,K2YS;F3_U&<D+RL`!$ALA
XM`"Y(;`%`3KH"OBZM_[I.N@+(2'@``4ZZ`L9/[P`0<`.PK?_(9@AP`;"M_\!GI
XM/DAL`$Q(;`%`3KH"CE!/<`.PK?_(9Q9P`;"M_\!F#DAL`(!(;`%`3KH"<%!/!
XM+RW_NDZZ`GA(>``!3KH"=E!/2&P`MB\K``A.N@)*4$\K0/^V9B0O*P`(2&P`V
XMN$AL`4!.N@(X+JW_NDZZ`D)(>``!3KH"0$_O`!`O+?^V2'@`!$AX``%(;`#(Z
XM3KH"'"ZM_[9.N@(F*@!"K?_H+JW_MDAX``%(>``$2&W_Z$ZZ`?HNK?^V2'@`J
XM!$AX``%(;`#.3KH!YBZM_[9(>``$2'@``4AL`-1.N@'2<!0K0/_H+JW_MDAX4
XM``%(>``$2&W_Z$ZZ`;@NK?^V3KH!PBP`<``K0/_L*T#_\"M`__0@+?_$.T#_Q
XM^!M\``'_^D(M__LK?``!``#__"ZM_[9(>``!2'@`%$AM_^Q.N@%R3^\`3"\M[
XM_[9(>``$2'@``4AL`-I.N@%:+JW_MDZZ`61"K?_H+JW_MDAX``%(>``$2&W_'
XMZ"M`_]A.N@$V0I<O+?_0+RW_NDZZ`2)/[P`D0JW_Y"\M_[I(>``!2'@``DAMN
XM_[Y.N@$D3^\`$$J`9RAP`#`M_[[@@!M`_[4O+?^V<`$O`"\`2&W_M4ZZ`.9/0
XM[P`04JW_Y&"\+RW_NDZZ`-I83R`M_^1R`DZZ`+!*@6<:0BW_M2\M_[9P`2\`7
XM+P!(;?^U3KH`KD_O`!!"IR\&+RW_MDZZ`)@K;?_D_^PNK?^V2'@``4AX`!1(^
XM;?_L3KH`A$*7+P4O+?^V3KH`<G`HT*W_Y"M`_^@NK?^V2'@``4AX``1(;?_HW
XM3KH`6D*7+RW_V"\M_[9.N@!&+JW_MDAX``%(>``$2&W_Y$ZZ`#@NK?^V3KH`2
XM-D*73KH`-DSM".#_I$Y=3G5.^0``!=A.^0``$,A.^0``&QQ.^0``#$A.^0``B
XM"Q!.^0``"B1.^0``&WA.^0``#?A.^0``"I1.^0``"Y0```/L````"@``````Z
XM``.P```#P@```]H```/(```#S@```^````.V```#U````[P```.J````````0
XM`_(```/J````P%5S86=E.B`E<R!S;F1F:6QE(#AS=GAF:6QE"@!R`$-A;B=T0
XM(&]P96X@)7,A"@`E<R!)<R!N;W0@82!.95A4('-O=6YD(&9I;&4A"@!)(&-A[
XM;B!O;FQY(&AA;F1L92!L:6YE87(@,38@9F]R;6%T('=I=&@@,2!C:&%N;F5L-
XM(0H`57-E('-N9&-O;G9E<G0@;VX@=&AE($YE6%0@=&\@8V]N=F5R="!T;R!T6
XM:&ES(&9O<FUA=`H`=P!#86XG="!O<&5N("5S(0H`1D]230``.%-66```5DA$?
XM4@``0D]$60``````*`````````````````````````````"``````1X`````'
XM``````````````````````````````````````%`````````````````````!
XM`````````````````````````````````````````````````````````````
XM``````````"`````!```("`@("`@("`@*"@H*"@@("`@("`@("`@("`@("`@L
XM("!($!`0$!`0$!`0$!`0$!`0A(2$A(2$A(2$A!`0$!`0$!"!@8&!@8$!`0$!:
XM`0$!`0$!`0$!`0$!`0$!`1`0$!`0$(*"@H*"@@("`@("`@("`@("`@("`@(">
XM`@("$!`0$"`@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`06
XM$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!9
XM`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0=
XM(````````@#__P````X`#@```````````````/__````!``$````````'%@`V
XM``)T__\````$``0````````<;@````#__P````X`#@```````!U^`````/__Y
XM````!``$``````````````*P__\````$``0````````=F@````#__P````0`Y
XM!````````!VD`````````^P````%`````````O@```+D```"O````J@```*47
X@````!`````(```+4```"F````1X```#\`````````_+DJ
X``
Xend
Xsize 9752
END_OF_FILE
if test 13686 -ne `wc -c <'n2a.uu'`; then
    echo shar: \"'n2a.uu'\" unpacked with wrong size!
fi
# end of 'n2a.uu'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
-- 
Mail submissions (sources or binaries) to <amiga@cs.odu.edu>.
Mail comments to the moderator at <amiga-request@cs.odu.edu>.
Post requests for sources, and general discussion to comp.sys.amiga.