henry@utzoo.UUCP (Henry Spencer) (12/17/84)
I'm posting the following for a friend; comments to him directly, please. ----- From uucp Mon Dec 17 14:00:31 1984 >From oz Mon Dec 17 12:04:27 1984 remote from yetti Received: by yetti.UUCP (4.12/4.7) id AA22945; Mon, 17 Dec 84 12:04:27 est Date: Mon, 17 Dec 84 12:04:27 est From: yetti!oz (Ozan Yigit) Message-Id: <8412171704.AA22945@yetti.UUCP> To: utzoo!henry #!/bin/sh-----cut here-----cut here-----cut here-----cut here----- # shar: Shell Archiver # Run the following text with /bin/sh to create: # README # macrst.1 # macrst.c # unhex.c # HorrorCastle cat - << \SHAR_EOF > README Following is a program to unpack and rasterize MacPaint bitmaps. The program is similar in structure to the one found in the Ma- cintosh technical manual. The routine does include the C version of UnPackBits routine, which, to my knowledge, is not algorithmi- cally defined anywhere. The program internally includes a char- acter and a plot filter to test that it works. There is also a superb artwork called Horror Castle ((c) Ozan S. Yigit) in HEX format for your visual enjoyment. You will need to write a small unhex routine to convert this thing to binary, but that is no sweat. I would appreciate comments, bugfixes, algorithmic improvements and copies of any filters you may develop to output the macpaint pictures to strange devices. Oz (wizard of something or another, no doubt..) Ozan S. Yigit (..utzoo!yetti!oz) Dept. of Computer Science York University SHAR_EOF cat - << \SHAR_EOF > macrst.1 .TH MACRST 1net "December 15, 1984" .SH NAME macrst \- Unpack and rasterize a Macintosh MACPAINT bitmap .SH SYNOPSIS .B macrst macpaint_bitmap .SH DESCRIPTION .I macrst unpacks a packed MacPaint bitmap (data fork) and outputs a complete 72X720 bytes of raster image to stdout. Typically, this output is piped to a device-specific filter. .SH DIAGNOSTICS Cryptic messages such as "input overflow" or "output overflow" to indicate that the input bitmap is not reliable, the unpack routine is out-of-synch and the input and/or output buffers are overflowed as a result. .SH AUTHOR Ozan S. Yigit (utzoo!yetti!oz) .br York University .br Department of Computer Science SHAR_EOF cat - << \SHAR_EOF > macrst.c /* * macrst - Plot/print/rasterize a MacPaint * bitmap. * * Synopsis: * macrst <MACPAINT BITMAP> * * Compile: * cc -D[PLOT | RAST | DISP] ... [-l<plotlib>] * * A MacPaint compressed-bitmap has the following * format: * * +-----------------------+ * | 512 bytes of header.. | * | version #, patterns | * | etc. | * +-----------------------+ * | 72 bytes-wide | * | scanlines | * | compressed to 1<Nb<74 | * | . | * | . | * | 720 | * | scanlines | * | . | * | . | * +-----------------------+ * * As you will notice in the program, the header is completely * skipped. Rest of the data is scanned 720 times, generating * 72 bytes (unpack) each time around. When 18 scanlines are * generated (18 is not arbitrary, it devides 720 without a * remainder), they are dumped in a form suitable to your taste.. * (Default is a raster image, as mentioned in macrst.1) * * This program is very similar to the pascal version described * in some Macintosh internals manual, by Bill Atkinson. To my * knowledge, PACK/UNPACK algorithm is described NOWHERE. * Unpack routine was built upon some very obscure information, * and a whole day's worth of trial and error, and some educated * guesses.. (You see, I did not have a Macintosh handy!) * * For output, define one of PLOT (Plot filters) * DISP (Character per-pixel output) * RAST (Raster image output) * * These output routines are included to demonstrate the * possibilities. They have no business being here, and should * be uncoupled. This routine should just output the unpacked * raster image to stdout, and a filter should be used to manipulate * this for a given output device. These filters may typically * contain two passes, one to determine the really DISPLAYABLE portion * of the raster, and the other to scale this portion to get the * maximum display coverage. * * Author: * Ozan S. Yigit * utzoo!yetti!oz * Dept. of Computer Science * York University * * The information about the unpack routine * (however incomplete) was supplied by Terry Lim, * a local Mac-hacker/fanatic. (utzoo!yetti!tlim) * */ #define RAST #define CHECK #define BIT7 0200 #define BIT6 0100 #define BIT5 0040 #define BIT4 0020 #define BIT3 0010 #define BIT2 0004 #define BIT1 0002 #define BIT0 0001 #define TRUE 1 #define FALSE 0 #define NSCAN 18 /* Number of scanlines per display buf */ #define SCANS 72 /* Size of the scanline in bytes */ #define SCANC 720 /* Number of scanlines for Macpaint */ #define SBUFS NSCAN*SCANS /* Size of the display buffer (< IBUFS) */ #define IBUFS 1536 /* Input buffer size (3 DEC blocks) */ #define HWATR 1024 /* High water mark for a buffer refresh */ #include <stdio.h> main(argc,argv) int argc; char *argv[]; { register int mpp, scan, n, i; unsigned char srcbuf[IBUFS+1]; unsigned char dstbuf[SBUFS+1]; unsigned char *dpp = dstbuf; unsigned char *spp = srcbuf; #ifdef CHECK /* * This simple checkpoint mechanism is very * useful in detecting problems with the input * bitmap. If There are any problems,(i.e. illegal char) * the unpack routine will go haywire, screwing-up the output * pointer, perhaps also forcing an erroneous amount * of characters to be read. One of these checkpoints * is likely to catch this. */ unsigned char *chk1= srcbuf+IBUFS; unsigned char *chk2= dstbuf+SBUFS; *chk1 = 'X'; /* source buffer overflow checkpoint */ *chk2 = 'X'; /* destn. buffer overflow checkpoint */ #endif if ((mpp = open(argv[1], 0)) <= 0) fprintf(stdout,"%s: cannot open.\n",argv[1]); else { #ifdef PLOT openpl(); erase(); #endif read(mpp,srcbuf, 512); /* skip the header block */ if (read(mpp, srcbuf, IBUFS) > 0) { for (scan = 0; scan < SCANC; scan++) { unpack(&spp, &dpp, SCANS ); if (dpp >= dstbuf+SBUFS) { #ifdef CHECK if (*chk2 != 'X') { printf("Output overflow.\n"); exit(1); } #endif #ifdef PLOT scanplot(dstbuf); #endif #ifdef DISP display(dstbuf); #endif #ifdef RAST write(1, dstbuf, SBUFS); #endif dpp = dstbuf; } if (spp > srcbuf+HWATR) { register int tmp; #ifdef DEBUG printf("READY TO READ NEW BLOCK\n"); #endif n = spp-srcbuf; i = IBUFS - n; #ifdef DEBUG printf("Used = %d Left = %d\n",n,i); #endif shift(spp, srcbuf, i); if((tmp=read(mpp, srcbuf+i, n)) <= 0) break; #ifdef DEBUG printf("Read in %d bytes.\n",tmp); #endif #ifdef CHECK if (*chk1 != 'X') { printf("Input overflow.\n"); exit(1); } #endif spp = srcbuf; } } } else printf("Unexpected EOF.\n"); #ifdef PLOT closepl(); #endif } } shift(in, out, n) unsigned char *in, *out; register int n; { while (n-- > 0) *out++ = *in++; } /* * unpack a bit stream a la' MAC. * * Packed format: (X is the byte value) * * X: 0-127 128-255 * * +-------------+- - - - + +------------+------------+ * | raw count | raw | | repeat | pattern | * | copy X+1 | bytes | | 256-X times| byte | * +-------------+- - - - + +------------+------------+ * * Note that pattern byte must * be output before the repeat * * In the case of packing, n specifies the number of bytes * to compact. Thus, when unpacking, this routine should * always be passed n to determine the unpacking limit. */ #define BIT 0200 unpack(src, dst, n) unsigned char *src[], *dst[]; register int n; { unsigned char i; unsigned char pat; do { i = (unsigned) *(*src)++; if (i & BIT) { /* repeat factor */ /* add 1 for the pattern itself */ i = 256 - (unsigned)i + 1; for (pat = *(*src)++; i > 0; i--, n--) *(*dst)++ = pat; } else { /* count number */ i++; #ifdef DEBUG printf("counting..%u (n = %u)\n",i,n); #endif while (i-- > 0) { *(*dst)++ = *(*src)++; n--; } } } while (n > 0); } /* * A line-printer type display.. I would really like * to see a line printer to print >500 consecutive * characters.. */ display(buf) unsigned char *buf; { register int i, n; for (i = 0; i < NSCAN; i++) { for (n = 0; n < SCANS; n++, buf++) printf("%c%c%c%c%c%c%c%c", ((((unsigned) *buf)&BIT7) ? '#' : ' '), ((((unsigned) *buf)&BIT6) ? '#' : ' '), ((((unsigned) *buf)&BIT5) ? '#' : ' '), ((((unsigned) *buf)&BIT4) ? '#' : ' '), ((((unsigned) *buf)&BIT3) ? '#' : ' '), ((((unsigned) *buf)&BIT2) ? '#' : ' '), ((((unsigned) *buf)&BIT1) ? '#' : ' '), ((((unsigned) *buf)&BIT0) ? '#' : ' ')); putchar('\n'); } } /* * Plot interface.. Your choice of * output device. It is best if the device * has 1/1 hor./vert. ratio. * * display is assumed to be in the first quadrant of * the cartesian coordinate system. * */ #ifdef PLOT static int X = 0; static int Y = 720; /* assumes >=720 pix. horizontal for output */ scanplot(buf) unsigned char *buf; { register int i, n; for (i = 0; i < NSCAN; i++) { for (n = 0; n < SCANS; n++, buf++) { ((*buf)&BIT7) ? point(X++, Y) : X++; ((*buf)&BIT6) ? point(X++, Y) : X++; ((*buf)&BIT5) ? point(X++, Y) : X++; ((*buf)&BIT4) ? point(X++, Y) : X++; ((*buf)&BIT3) ? point(X++, Y) : X++; ((*buf)&BIT2) ? point(X++, Y) : X++; ((*buf)&BIT1) ? point(X++, Y) : X++; ((*buf)&BIT0) ? point(X++, Y) : X++; } X = 0; Y--; } } #endif SHAR_EOF cat - << \SHAR_EOF > unhex.c /* quick hex-binary converter: assumes macintosh hex file, i.e. each line consists of 32 2-digit hexadecimal numbers. output is a binary file suitable for processing with Ozan's mac picture printer. invocation: hb <file.hex >file.bin terry lim 1984 */ #include <stdio.h> main() { int i,j; unsigned char b; while (!feof(stdin)) { for (i=0; i<32; i++) { scanf("%2x",&j); b=j; putchar(b); }; scanf("\n"); } } SHAR_EOF cat - << \SHAR_EOF > HorrorCastle 00000002FFFFFFFFFFFFFFFFDDFF77FFDDFF77FFDD77DD77DD77DD77AA55AA55 AA55AA5555FF55FF55FF55FFAAAAAAAAAAAAAAAAEEDDBB77EEDDBB7788888888 88888888B130031BD8C00C8D8010022001084004FF888888FF888888FF808080 FF080808800000000000000080402000020408008244394482010101F8742247 8F17227155A04040550A04041422499429924428BF00BFBFB0B0B0B000000000 00000000800008008000080088002200880022008822882288228822AA00AA00 AA00AA00FF00FF00FF00FF001122448811224488FF000000FF00000001020408 10204080AA00800088008000FF80808080808080081C22C18001020488142241 8800AA0040A00000040A0000038448300C0201018080413E080814E3102054AA FF02040877898F8F7798F8F80008142A552A1408000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900 B900B900B900B900B900B900B900B900E30001AAA8D900E300015554D900E400 000AD700E40002155554D900E400022AAAA0D900E2000014D900E400FEAAD900 B900F2000102A0F600030AAAAAA8D900F2000315500015FE00010540FD000315 555554D900F2000802A82AAAA000002AA0FD00032AAAAAA8FD0001AAA0DF00F2 000C50001555500001555000055000FE550050FE0002155550DF00F2000C2AAA A000A8000AAAA800AAAA00FEAA05A0000002AAA0DE00F3000001FD5509000015 50140155550155FA00010554DF00F3000002FDAA04A0000002A0FC0004AAAA80 0000FDAADF00F3000005FD5508540055555415555505FE5502000015FD55DF00 F300000AFDAA01A802FEAA032AAAAA8AFEAA010000FCAADF00F3000015FD5501 5415F85502400015FC55DF00F300062A002AAAAAA82AF9AA02A00800FBAADF00 F30002015540FD000001FB550354055015FB55DF00F300FAAA02A80002FEAA03 A802AAA0FAAAFA00010AA0E800F4000001F8550050FE000301555545FA55FA00 015550FC000055EE00F4000002F1AA002AFCAA00A8F90001AAA8FD000202AA80 EF00F000FE550001F955015450FC00010154FB0002055554FD0002055540EF00 F4000002FEAAFE00012A00FAAA02A80AADFCAA00A8FB00020AAAAAFD00022AAA A0FC00010AA0F600F4000001F9550001FC550354015557FC550050FB00FE55FD 0002555550FD0002015550F600F4000002F8AA0002FDAA0302AAAA9DFEAA0080 F900FEAAFE000302AAAAA8FD00022AAAA8F600F4000001F855045401555541FE 550677555540155540FC000005FE55FE000315555550FE000301555554F600F3 00F7AA03A800002AFEAA0C9CAA802AAAAA800000A800002AFEAA02000002FEAA 00A8FE00002AFEAAF600F200F3550054FE000015FE5505000005540000FD5502 000015FE550050FE000005FE55F600F30003AA00000AFCAAFA0001AA9DFDAA06 A800002AAA0002FDAA0200002AFEAA06A800002AAA02AAF500F300FE550040FC 00F9550077FD550650000155550015FE5502540001FE55084000000555555000 55F600F4000002F0AA009DFDAA05A000002AAA80FCAA07000AAAAA803AA000FB AAF600F4000005F0550077FD5505000055001545FD5508540055555415755015 FB55F600F400002AF6AA01AFFEFDAA009DFDAA110002AAAA800AA8000AAAA802 AAAAA2ABEAA0FAAAF600F5000001F555027801F5FE550077FE5502540015FE55 05000555405540FE000315D7D575FB550054F600F5000002F6AA03AB80001EFE AA00DDFEAA01A000F9AA0282802AFEAA02ABAAEAFAAAF600F5000010FC000005 FC55035C000003FE550077FE55014005F955015405FD5502D7D5D5FB550054F6 00F500002AFCAA01A80AFDAA00B0FE0003EAAAAADDFEAA01802AF9AA01A82AFD AA01AFABFAAA00A8F600F500FA55015005FE550060FE000375555577FE550001 F8550051FC5501D757FA550050F600F6000002F9AA00A0FA00071AAAAADDAAAA A80AF4AA03EAABEEBEFAAA00A0F600F6000005F6550057FD00060D5555775555 50F3550375555FFDFA550040F600F600042AAAA80000FAAA00AEF900022AAAA0 F3AA05BAABEFAAAAABFCAA0080F600F400040555550001FC55005CFD00060355 5577001545F355035DD57F75FA55F500F600FBAA01A80AFDAA00A8FD000601AA AADDAA802AF3AA03AEBFBEEAFBAA00A8F500F600FA550040FD550050FC0005D5 5577555501F455065757D5FDD55575FD550050F500F600F9AA04802AAAAAA0FC 00066AAADDAAAAA802F5AA03ABAAABFFFAAA00A0F500F7000001F8550040F900 02755577FE55015005F6550457D5D5FD57FB550040F500F600F5AA00C0FC0003 2AAADDEAFEAA01A02AF9AAFE0002C081FCFC00012AAAF400F7000001F5550080 FC0002155577FC550040FE550054FE000801557555D5D7FF5757FE55014001F4 00F600F5AA0080FC00031AABDDEAFCAAFD00FAAA04FAEBFEAAAEFCAAF400F700 0001F555FB00020D5577F2550575557D55FD57FC550054F400F60004AA800000 02FBAA00ABFB00030AABDDCAF1AA03BEEBFAAEFCAA00A0F400F5000355515554 FE00FE550057FB00030D577775F3550675555F57FD5DD5FD550040F400F60002 2AAAA2FCAA030A802AAAF9000101DAF1AA04BFEFFAAEBAFDAA0080F400F60002 155501FC5502501540FA0002055776FE00F355045DF5F55D75FD55F300F60002 0AA802F8AAFB000507ADDDDAA9AAFC00002AFCAA07BEBAAAAFFFFAEFEAFDAAF3 00F4000005F9550054FB00047357777557FB550040F80002FDF5FFFD550054F3 00F400000AF9AA03AC000002FE000451DDDDDEC9F5AA00AEFEAA02FFFAFAFDAA 00A8F300F4000005F9550354000002FE000073FD77F75508575557DD55555FFF F5FD550050F300F400000AF9AA03AC0003CEFE00045DDC1D1DDDF4AA05FFEAAA AFFFEAFDAA00A0F300F4000005F95503540007FCFE00047774161777F455057F F55557FFD5FD550040F300F400000AF9AA03AC000788FE0004DDDC1C1DDDF6AA 06FFAABFFAAAAFFEFCAA00A8F300F4000005F9550354000F80FE000477771737 77F65506755FFFFD5557F5FC550054F300F4000002F9AA02AC0118FD00001DFE DD00DAF6AA06BFFAAAFEAAAFFAFBAAF300F4000005F955025400FCFD000017FE 770075F655065755555F555FF5FC550054F300F4000002F9AA00ACFD00020580 03FEDD00EAF3AA04AFAABFEAABFCAAF300F4000005F9550054FD0002074003FE 77F2550457D55FD557FC55F300F400000AF8AAFD00021DC006FEDD00EAF3AA02 AFAABFFAAAF300F4000015F9550056FD0002377005FE77F2550457D55FD557FC 5502000150F600F400002AF8AAFD00025DD806FEDDF2AA04ABEABFEAAEFCAA02 002AAAF600F400F8550057FD000277740DFE77F2550457D55FF55DFC55020055 55F600F400F8AA00ABFE000301DDDC0AFEDDF2AA04ABEABFEABAFCAA0302AAAA 80F700F5000001F755FE00060377770D577777F2550457D55FF575FD5504D415 555540F700F4000002F8AA0980000005DDDD9ABDDDDEF2AA04ABEAAFFAEAFDAA 00A8FEAA0080F700F50002055005F9550980000007777755577775F4550B5D55 57F75FFDD5755D5555D5FE550040F700F5000402AAA00000FCAA00A0FE00061D DDDDDABDDDDAFCAA00A8FD000C02AAAAAEAAABFFAFFFEAAAAEABFCAA00A0F700 F5000005FD55FC00011560FE0005777775577775FD5502500575FE5512500015 575555FFD7FF55755D5755D55FF55540F700F500000AF7AA07A000005D80DDDE B8FB000202AADAFCAA10802BAAFFFFEBFFAAAAAEAEAABFFFAAAAA0F700F50000 05F7550950000077770000077775FB550075FB550F40D5F55FFFFF57755D5D57 F7F5555540F700F500000AF7AA02A80001FDDD02BDDDDAFCAA01ABDCFAAA0E7F 0001FFFF000004141FFC6000AAA0F700F5000005F755025C0003FD7702577775 FE550375555577FA550E5D5555FFFFD77FF77D7FDDF5550140F700F500000AF7 AA02AE0005FDDD09FDDDDAABAAAADAAAABDDF7AA0AFFFFABAABEFEBFEABAAAA8 F600F5000005F75502570007FB77017557FE7502555777F7550B57FFD7757FD5 7FD55F555540F700F5000002F6AA01800DFBDD01DAA9FEDA03AAA9DDEAFEAA00 EAFCAA0BABFFAAAABEAAEEAAAEAAAA80F700F5000001F655016017FB77017557 FE750355577775F75505FFD7557D75DDFD55F600F400F6AA01B01DFBDD08DAAD DBDADAAABDDDDAFEAA00EAFBAA06FFAAAAAEEBBAFAFEAAF600F400F655005CFA 77017557FE750355577775FE550075FB55097FD7D57D57D7F5555550F600F300 F7AA00ABFADD08DAADDDD9DAAABDDDDAFEAA00BAFBAA09BFEAAAAEFFAAEAAAAA A0F600F300F655FA7708755777777555774375F755085FF7D55DFF55D55555F5 00F300F7AA00A9FADD0ADAADDDDDDAAA9D85DEAAEAFDAA09ABAAABFAAFEBAABE FAABFEAAF500F300F7550057FA770C7557777775557743775575555DFE550BD5 55F55FF7D55DF557555550F500F300002AF8AA00ADFADD0DDAA9DBDDCAABDD85 DDAABAAAAFFAFDAA09BFAFFBAABFEABAAAAAA0F500F3000015F8550057FA770F 7555777775577743775D7D557FFF5575FE5507D7DF555FF7F55555F400F30000 02F8AA04BDDDC1D001FEDD1ACAABC9DDDCA9DD85DDAFEEABFFFFEAAAEAAFEAFF FEAAABFEFAAAA8F400F200F855047777417001F577115557DFFFFFF575757F5F FFFF5577FFD55540F400F200002AF9AA049DDDC1D001F5DD11EAABFFFFAFFAAA AEAAAAFFFFAAFFBAAAAA80F400F200FE5500D5FC55045777417001F577107555 7FFF55FF5557D5557FFFD5FFF557D4F300F200022AAAABFBAA04ADDDC1D001F5 DD10DAAABFFEBEBFBAAEEAAABFFFFAFFAAAAA0F300F20003555D55D5FC550457 77417001FC770057FB770875557FF5D5FFFF55FDFCFF0257FF80F300F200052A AFABAA0000FDAA03DDC1D001F5DD07CAAAFFEAAAAFFAEAFCFF02FAAAA9F200F1 0005030100555401FE55F177075555FDF55557FF57FCFF03F5555550F300F200 020AABABFEAA03A8DAAAAAF1DD05AAABFAEAAAABFAFF03EAAAAAA8F300F20003 1555D7D5FE5502355755F177105557F5D5557F7FFFFFD57FFFFFD5555554F300 F200020BAABBFEAA03ADCBCDAAF1DD04AAAFEAEAABFEFF04EAAAAFFFFFFDAAF3 00F2000A55D5DDD555555770775007F3770E76000F05D57F5555FFD5555FFFFF D5FE55F300F2000CABABAFAEAAAAADDD8002D0001DF8DD108001DDC1AAAFA06A BFAAAABFAAAAAFFFFEFDAA0080F400F3000F055555D7D5555557777755777740 0000FB77114077740037555F55D00155555F55555FFFFDFD55F300F3000A0AAA ABAABAAAAAADDDDDEAFCDD001DFDDD01DC1DFDDD0CAABEAAE2A8000ABEAAAEAF FFEAFDAA0080F400F3000A155577D5F5555557777755FC770060FD000001FD77 0DF755FD55D555D5407D57D757FFF5FD55F300F30007AAAAABABEAAAAAADEFDD 0DFFFFFAEBEAAAEAAABE02BFAFFFEAFDAA02800AA0F600F400080155555F57D5 555557EF770EFFFFFD7FD5557555FD5007D7FFD554FD000101F0F600F4000402 AAAAABABFEAA00ADEFDD14FDABFEAFAAAABEABFAAAA3FFFFE002AAAABFFFFDDE F600F400041555555F57FE550057EE770F57FF5F55555F57F75555FFFFD55555 5FFDFFF600F400042AAAAAAEAEFEAA00ADEEDD0FA7FFAEAAAAABAFEBAAAAFFFF EAAAABF7FD770080F700F50005015555575F5DFE550057F277007FFE77007FFD 5509FFFFD755557FFFF5557FFCFF00C0F700F5000502AAAAABAEBEFEAA00ADF2 DD0ADFDDDDDFFEABAAAAABFFFFFEAA03BFFFEAABFBDD00E0F700F50005055555 57557DFE550057F17710F7777FFD55DD5557FFFF57555FDFFFF57FFBFF00F0F7 00F500092AAAAAABAEFAAEAAAAA9F1DD03FFFDFDFAFEAA02BFFFFEFEAA03FFFF EBF7FB770078F700F500FD5502D7F55DFE55F177097FFFFFF555D57FD5D55DFE 550057F8FF00FCF700F500FEAA06ABAFEABAAFEAAAF1DD09DFFFFFAAAABAAABE AAFAFEAA02ABFFFDFADD00DCF700F6000001FD5506D7D575FD755555F277097F 777F5555F55FFD55F5FE550057F8FF00FEF700F500FEAA03ABAFFFBFFDAAF2DD 02FDDDDDFDAA04EAABAAAAABFEFF00F7FA770076F700F6000001FD5502DFFFD5 FD55F27702F77777FE550457D5575557F5FF00FEF700F6000002FEAA01ABBFFB AAF3DD03DFDDDDFDFEAA09FEAAAEAABDDDDDDFFFFDF9DDF700F6000005FE5501 577FFB5500F7F47700F7FE7706555557D555555FF3FFF700F6000002FEAA01AF BEFCAA01AB9DF1DD00FDFCAA01ABF7FD7701FFF7F977F700F6000005FE550157 7DFB5500F7F077FC55F2FF00FEF700F6000002FEAA01AEFEFCAA01AB9DF2DD02 DFDDEAFEAA00BFFCDD02DFFFFDFADD00DCF700F5000455555057FDFB5500F7F0 77FD55F1FF00FCF700F600050A80000A01FAFCAA01AB9DF0DD03EAAAAAAFFA77 01FFF7FA770078F700F6000557D5555557F9FB5500F7F077FE55F0FF00F0F700 F7000703FFFFFAAAABF80AFDAA00ABEFDD02EAAAAFFADD02DFFFFDFADD00E0F7 00F7000017FEFF055557FD400550FE0000F7F0770255557FF0FF00C0F700F700 003FFEFF09AAABFAAAA002AAAAAB01F0DD02AAABF7F97701FFF7FB770076F600 F700007FFEFF02D557FDFB5501D437F7770075FB00007FF0FF00FCF600F700FD FF02EAABFAFCAA02ABFDC0FC00FCDD01C05DFEDD02DAAB80FE00071DDDDFFFFF DFFFFDFEDD00D0F300F700FDFF02FD57FDFC550157F7FB77FC000017FD770175 5FFDFF01C07FFBFF06F000000FFFFFC0F600F700FDFF02FEAFFAFCAA01AFFDF4 DD04FFFDDDDFF7FC770200007FFDFF0007FD770074F500F700FCFF017FFFFC55 015FF7F577007FEBFF00F8F500F700FAFF00EAFDAA01BFFDF6DD00DFF6DD02DF DDDDFDFFFEDD02FDDDD0F500F700FAFF00FDFD55007FF577E9FF00E0F500F700 F9FF04FAAAAAAEBDF6DD00DFF47702F7777FFEFF05F7777FF77780F500F700F8 FF03D5557FFFF677007FE9FFF400F700F8FF00FEFEFFF7DD00DFF4DD03DFDDDD DFFBFF04FDD00001FAF700F700F7FF04DFFFFD7FF7F977E8FF03E00007FFF700 F700F5FF02FEFFFFFADD00FFF377037FF7777FFBFF04F700007FFFF700F700F4 FF037FFFFFF7FE7701577FE8FF04FE0FF5FFFFF700F70002FFFFA3F3FF04DFFF DDFFFDF4DD04DFDDDFDFDDFAFF01F07FFEFFF700F70002FFFF07D5FF00C7FDFF F700F70002FFFE03F1FF00F7F777007FFD77057FF7FF7FFF7FFBFF00E7FDFFF7 00F70002FC0007D0FFF700F70002F00003F1FF00FDF7DD09DFFFDDDFDDFFFFDF FFFDFBFF01FDDFFDFFF700F70002600001D0FFF700F5000003F0FF00F7F77703 FFF77FF7F0FFF700F5000201FFFDD2FFF700F400F4FFFADD00DFFDFF04DFDDDD FFFDFBFF00DFF5FFF700F400007FD1FFF700F400000BFAFF03F7FFFFF7F57703 7FFFF77FECFFF700F300001FFAFF00DFDAFFF700F200000FF9FFF4DDE9FF00FE F700F2000007D4FF00F8F700F2000003F9FF00F7F67701F77FF3FF010007FAFF 00E0F700EF00030FFD557FFAFFFE000007FBFF00FCFA00FDFF04E0FFF80007FC FF0080F700F0000BFFF00AAFDDDDDFFDDDDDC000FEDD07D800007FFFFFFE03FA FF0007FEFF009FFEFF05F8007FFFFFF8F600F000021FF550FA00001FFAFF0380 000001F9FF04F83FFFC07FFCFF03807FFFC0F600F000032AAAAAB7F57703FFF7 7F7FF6FF02C3FC3FFAFF01BFFEF500F1000001FE55007FE6FF01FC03F9FF01DF FFF500F100000AFEAAF4DDE8FF00E0F400F100FD55D9FF00E0F600F200FDAA03 AF77FAF7F877007FE6FF00F0F600F3000005FD55035FFF555FDCFF00F0F600F3 00000AFDAA03AFFAAAABF9DD02DEAAAFE7FF00F8F600F3000015F955F9FF02FD 5555E7FF00F8F600F300002AF9AA00B7FD77057FFFFFEAAAAAE7FF00F8F600F3 00F855005FFDFF00D5FC55007FE8FF00F8F600F300EFAA00ABE6FF00F8F600F4 000001EF55005FE6FF00F8F600F4000002EFAA00BFE6FF00F8F600F4000001EF 55007FE6FF00F8F600F4000002EFAAE5FF00F0F600F4000001EF55E5FF00F0F6 00F4000002EFAAE5FF00E0F600F4000005EF55E5FF00C0F600F4000002F0AA00 ABE5FF0080F600F4000005F4550457FFD55555E5FFF500F4000002F7AA07FFFA AAAFFFFAAAABE6FF00FCF500F4000005F955005FFBFF01FD57E6FF00FEF400F4 000002FBAA00ABF8FF00BFE6FF00FCF400F4000005FB550157DFDDFF00F0F400 F40005A002BFFFFEBFDAFF00F8F400F500030555F81FD7FF00FCF400F500030A BFFFE0D7FF00FEF400F500005FFEFF0000D7FFF400F500FCFF0003D8FFF400F6 000001FCFF01FC0FD9FFF400F6000003FBFF03F000007FDCFF0080F500F60000 07F8FF02800001DEFFF400F6000003F6FF01FE0FDFFF0080F500F6000007F5FF 02F03FE0FB00001FE8FFF400F600000FF4FF01C01FFBFF01E00FEAFF01FE80F5 00F6000007EBFF01F000FDFF01FC00F0FFF400F600000FE9FF0007FEFF0183FF FA00000FF9FF00FEF400F6000007E9FF00F8FE00007FF9FF02F0003FFDFF02E0 0FFCF400F600000FDAFF06C01FFFE0001FF0F300F6000007D9FF02E0001FFEFF 00F0F400F6000003FDFF030BFFFF01DBFF00E0F400F6000801FFFFF000017F80 03DBFF0080F400F50001FFFEFC000007DBFF0080F400F500007FFB000007DBFF F300EE00000FDBFFF300EE00000FDBFFF300EE00000FDBFF0080F400EE00001F DBFF00C0F400EE00000FDBFF00E0F400EE00001FDBFF00F0F400EE00000FDBFF 00F8F400EE00001FFEFF05FC1FFFFFF87FE4FF00F8F400EE00000FFEFF05E00F FFFFF03FE4FF00F8F400EE000907FFFFFC0003FFFFE03FE4FF00F8F400EE0002 0BFFFFFD00027F801FE4FF00F8F400EE000205FFFCFB00001FEBFF01FC17FCFF 00F8F400EE000202FFF0FB00001FECFF02FE000BFCFF00F8F400F6000101F0FA 00017F80FB00001FF9FF01C003FCFF00FCFCFF04F000017F0FFEFF00F8F400F6 00010310F200000FFAFF02800003FCFF0280FFFCE800F600010210F200000FFD FF00C0FD000001FDFF06E0000003FFFFF4FD000001FEFF00F8F400F60001047F F200000FFEFF03FC3FFFC0F800007FFEFF00A0FC00FEFF00F0F400F600010413 F2000004FE000203FFFEFD00063FFFFFC000007FFEFFFB00035FFFFFF0F400F6 00010416F2000003FCFF00F0FD000202AA80FE00033FFFFFF8FB00032FFFFFE0 F400F60001043CF2000007FCFF00C0F700031FFFFFE0FB000301FFFFC0F400F6 00010678F2000003FDFF00FEF600030FFFFFC0FA00021FFF80F400F6000203FF CCF3000003FDFF00F8F6000207FFFFF900010FFFF300F5000101CCF3000001FE FF00F0F5000203FFE0F9000103FCF300E40002FFFFD0F3000055E800E400017F FED800E400011FF0D800E400010A80D800B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900B900B900B900B900B900B900B900B900B900B900B900B900B9 00B900B900B900FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFF000138360040779E00013A06000A000137A20001 4452565200401074000033670001385B0000A000004012620000303A00402000 0040DC420000A000004012620001FFFE00001000000137F40002000000110040 3D94000010E2000137F400404E260000000400401074000014230001385B0000 10E2000000110000122200403EFC000019CC004020040040394E0001FFFE0000 100000000001000200040000FFD0004012620001A1A200005F240001A1800001 38260040390C000137F400401074000137F40001A15800000000000000000000 A470000020140000AC8C000000000005A00000403F120000000000000001385A FFFE009800000000000000002000000020000000000000000001000200040000 SHAR_EOF ----- -- Henry Spencer @ U of Toronto Zoology {allegra,ihnp4,linus,decvax}!utzoo!henry
henry@utzoo.UUCP (Henry Spencer) (12/19/84)
A small but important addendum from my friend:
-----
From uucp Tue Dec 18 16:55:32 1984
>From oz Tue Dec 18 15:55:10 1984 remote from yetti
Received: by yetti.UUCP (4.12/4.7)
id AA00312; Tue, 18 Dec 84 15:55:10 est
Date: Tue, 18 Dec 84 15:55:10 est
From: yetti!oz (Ozan Yigit)
Message-Id: <8412182055.AA00312@yetti.UUCP>
To: utzoo!henry
Subject: Big boo-boo in the macrst.c (I sent yesterday)
The constant NSCAN should be 20.. I do not know how it become 18 !!
Please post this correction to net.sources.. thnx..
Oz
-----
--
Henry Spencer @ U of Toronto Zoology
{allegra,ihnp4,linus,decvax}!utzoo!henry