home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / compsrcs / apple2 / 56 < prev    next >
Encoding:
Internet Message Format  |  1991-05-02  |  20.2 KB

  1. From: jac@yoko.rutgers.edu (Jonathan A. Chandross)
  2. Newsgroups: comp.sources.apple2
  3. Subject: v001SRC038:  Nulib - Archive Library Tools (Unix) 07/10
  4. Message-ID: <May.1.18.13.39.1991.23521@yoko.rutgers.edu>
  5. Date: 1 May 91 22:13:41 GMT
  6. Approved: jac@paul.rutgers.edu
  7.  
  8.  
  9. Submitted-by: Andy McFadden (fadden@cory.berkeley.edu)
  10. Posting-number: Volume 1, Source:38
  11. Archive-name: archive/unix/nulib/part07.10
  12. Architecture: UNIX
  13. Version-number: 3.03
  14.  
  15.  
  16. =Benchmarks
  17. -Some (old) benchmarks for NuLib:
  18. -
  19. -Uncompressing Moria GS (from 320K to 577K, ShrinkIt Type I LZW):
  20. -
  21. -Program Run / Machine Used            Run Time    CPU Time
  22. -----------------------------------------------  --------------  --------------
  23. -NuLib v2.1 (APW C), running on a //gs        12 min
  24. -ShrinkIt v3.0.1, running on a //gs (HD)        2 min 03 sec
  25. -ShrinkIt v3.0.1, running on a //gs (RAM disk)    1 min 21 sec
  26. -GS/ShrinkIt v1.0.2 (HD)                1 min 30 sec
  27. -NuLib v2.2 on a lightly loaded VAX 11/750    1 min 33 sec    1 min 28.4 sec
  28. -NuLib v2.2 on a lightly loaded VAX 11/785    38 sec        34.0 sec
  29. -NuLib v2.2 on a lightly loaded Sun 3/50        17 sec        13.0 sec
  30. -NuLib v2.2 on an empty Apollo workstation    12 sec        11.5 sec
  31. -NuLib v2.2 on an empty DEC 3100            9 sec        2.6 sec
  32. -NuLib v2.2 on an empty Sun 4            7 sec        2.2 sec
  33. -
  34. -"Run Time" is total time from start to finish.  "CPU Time" is CPU time
  35. -actually used under a multiprogrammed OS (in this case, UNIX).
  36. -
  37. -The hard drive (HD) used on the //gs is an AI InnerDrive 20.  The results
  38. -obtained from running on a RAM disk could almost be considered the CPU
  39. -time, but I've decided to keep them separate.  All versions of NuLib
  40. -running on UNIX systems used the optimization features of the C compiler.
  41. -
  42. -Doing an uncompressed extract can produce remarkable results... like
  43. -running to completion in less than one second on the Apollo (local disk).
  44. -
  45. -Interestingly enough, 16-bit UNIX uncompress works faster than NuLib does.
  46. -The reason for this is that the compression code in NuLib actually makes
  47. -two passes, one to undo the LZW compression, and the other to undo
  48. -non-repeat compression.  Was it worth it do to both kinds?  For Moria it
  49. -was; even though "uncompress" ran faster, ShrinkIt's 12-bit LZW packed
  50. -the file smaller than compress's 16-bit LZW.
  51. -
  52. -No benchmarks for compress yet.  Be patient.
  53. -
  54. -**********
  55. -
  56. -Raw data for benchmarks
  57. -
  58. -Times on the //gs were from start to finish of compression, timed with a
  59. -stop watch.
  60. -
  61. -All tests were performed in verbose mode (i.e., the filename was printed
  62. -as the file was extracted, etc).  This is how I would expect it to be
  63. -run under "normal" conditions.  It does add to the overhead, which
  64. -you can pull out by looking at the data below.
  65. -
  66. -/bin/csh time format appears to be (the man page is most unhelpful):
  67. -user_time system_time real_time  cpu% ??+??k ??+??io  page_faults+??w
  68. -
  69. -user_time is the time actually spent grinding along.  This is what appears
  70. -  in the "CPU time" column.
  71. -system_time is for I/O (disk accesses, writing to terminal).
  72. -real_time is how long a stopwatch would show (user_time + system_time +
  73. -  overhead starting/stopping NuLib + time spent running other processes
  74. -  on a multiprogrammed OS like UNIX).  This appears in the "Run Time" col.
  75. -cpu% appears to be some kind of estimate of how much time was spent doing
  76. -  useful work.
  77. -If you don't know what a page fault is, don't worry about it.
  78. -
  79. -Both cory and holden used the same copy of NuLib (well not the *same* copy,
  80. -but they're identical), so any differences in speed can be attributed
  81. -to the processor.
  82. -
  83. -***** holden.berkeley.edu, a VAX 11/750 *****
  84. -Script started on Sun Mar 25 11:52:52 1990
  85. ---- reading aliases...done
  86. -holden 1 c184-cz% ls -s tmp/nulib
  87. -  68 tmp/nulib*
  88. -holden 2 c184-cz% uptime
  89. - 11:52am  up 26 days,  3:59,  4 users,  load average: 0.31, 0.17, 0.13
  90. -holden 3 c184-cz% time tmp/nulib xv moria.shk
  91. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  92. -88.4u 3.3s 1:33 98% 83+252k 49+89io 9pf+0w
  93. -holden 4 c184-cz% exit
  94. -holden 5 c184-cz% 
  95. -script done on Sun Mar 25 11:55:34 1990
  96. -
  97. -***** cory.berkeley.edu, a VAX 11/785 *****
  98. -Script started on Sun Mar 25 11:50:07 1990
  99. ---- reading aliases...done
  100. -cory 1 foo% ls -s ../bin/nulib
  101. -  68 ../bin/nulib*
  102. -cory 2 foo% uptime
  103. - 11:50am  up 2 days,  2:04,  6 users,  load average: 0.55, 0.39, 0.27
  104. -cory 3 foo% time nulib xv moria.shk
  105. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  106. -34.0u 1.6s 0:37 95% 51+244k 46+82io 5pf+0w
  107. -cory 4 foo% exit
  108. -cory 5 foo% 
  109. -script done on Sun Mar 25 11:51:29 1990
  110. -
  111. -***** a Sun 3/50 *****
  112. -Script started on Sat Apr 21 17:00:43 1990
  113. -ux1:nulib% ls -s nulib
  114. -  64 nulib*
  115. -ux1:nulib% uptime
  116. -  5:01pm  up 2 days, 10:06,  6 users,  load average: 1.84, 1.66, 1.51
  117. -ux1:nulib% time nulib xv moria.shk
  118. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  119. -13.0u 0.6s 0:17 76% 0+168k 1+78io 0pf+0w
  120. -ux1:nulib% exit
  121. -ux1:nulib% 
  122. -script done on Sat Apr 21 17:02:33 1990
  123. -
  124. -***** avalanche.berkeley.edu, an Apollo DN3500 *****
  125. -Script started Sat Apr 21 17:04:53 1990
  126. ---- reading aliases...done
  127. -avalanche 1 nulib% ls -s nulib
  128. -  85 nulib*
  129. -avalanche 2 nulib% uptime
  130. -  5:05pm  up 1 day,  1:50,  3 users,  load average: 0.06, 0.16, 0.00
  131. -avalanche 3 nulib% time nulib xv ../dwn/moria.shk
  132. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  133. -11.5u 2.6s 0:16 86% 0+0k 577+0io 0pf+0w
  134. -avalanche 6 nulib% exit
  135. -avalanche 7 nulib% 
  136. -Script done Sat Apr 21 17:06:59 1990
  137. -
  138. -***** a DEC 3100 *****
  139. -Script started on Sat Apr 21 16:18:10 1990
  140. -vampire:nulib% ls -s nulib
  141. -  88 nulib*
  142. -vampire:nulib% uptime
  143. -  4:18pm  up 30 days, 5 hrs,  2 users,  load average: 0.57, 0.25, 0.00
  144. -vampire:nulib% time nulib xv moria.shk
  145. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  146. -2.6u 0.5s 0:09 32% 163+404k 71+71io 3pf+0w
  147. -vampire:nulib% exit
  148. -vampire:nulib% 
  149. -script done on Sat Apr 21 16:19:40 1990
  150. -
  151. -***** a Sun 4 *****
  152. -Script started on Sat Apr 21 16:23:47 1990
  153. -ux5:nulib% ls -s nulib
  154. -  64 nulib*
  155. -ux5:nulib% uptime
  156. -  4:23pm  up 2 days,  8:50,  7 users,  load average: 0.15, 0.24, 0.03
  157. -ux5:nulib% time nulib xv moria.shk
  158. -Extracting 'MORIA' (data)...unshrinking (I)...-\|/-done.
  159. -2.2u 0.2s 0:07 34% 0+368k 0+71io 0pf+0w
  160. -ux5:nulib% exit
  161. -ux5:nulib% 
  162. -script done on Sat Apr 21 16:25:20 1990
  163. -
  164. =nuread.h
  165. -/*
  166. - * nuread.h - linked list structures used for holding NuFX header data,
  167. - *      and structure definitions for archive innards
  168. - *
  169. - * (this will be included by all source files which access NuFX archives)
  170. - *
  171. - * NuLib v3.0  February 1991  Freeware (distribute, don't sell)
  172. - * By Andy McFadden (fadden@cory.berkeley.edu)
  173. - */
  174. -
  175. -
  176. -/* The NuFX master format version we output, and the maximum we can extract */
  177. -#define OURMVERS 2
  178. -#define MAXMVERS 2
  179. -
  180. -/* The NuFX record format version we output, and the maximum we can extract */
  181. -#define OURVERS 0
  182. -#define MAXVERS 3
  183. -
  184. -/* "NuFile" in alternating ASCII */
  185. -static onebyt MasterID[7] = { 0x4e, 0xf5, 0x46, 0xe9, 0x6c, 0xe5, 0x0 };
  186. -
  187. -/* "NuFX" in alternating ASCII */
  188. -static onebyt RecordID[5] = { 0x4e, 0xf5, 0x46, 0xd8, 0x0 };
  189. -
  190. -
  191. -/*
  192. - * Structure definitions for NuFX innards
  193. - */
  194. -
  195. -/* master header block */
  196. -typedef struct {
  197. -    onebyt ID[6];
  198. -    twobyt master_crc;
  199. -    fourbyt total_records;
  200. -    Time arc_create_when;
  201. -    Time arc_mod_when;
  202. -    twobyt master_version;
  203. -    onebyt reserved1[8];
  204. -    fourbyt master_eof;
  205. -    onebyt reserved2[6];
  206. -} MHblock;
  207. -#define MHsize 48  /* this should not change */
  208. -
  209. -/* record header block */
  210. -typedef struct {
  211. -    onebyt ID[4];
  212. -    twobyt header_crc;
  213. -    twobyt attrib_count;
  214. -    twobyt version_number;
  215. -    twobyt total_threads;
  216. -    twobyt reserved1;
  217. -    twobyt file_sys_id;
  218. -    onebyt file_sys_info;
  219. -    onebyt reserved2;
  220. -    fourbyt access;
  221. -    fourbyt file_type;
  222. -    fourbyt extra_type;
  223. -    twobyt storage_type;
  224. -    Time create_when;
  225. -    Time mod_when;
  226. -    Time archive_when;
  227. -    twobyt option_size;
  228. -    /* future expansion here... */
  229. -} RHblock;
  230. -#define RHsize    58    /* sizeof(RHblock) should work, but might not */
  231. -#define ATTSIZE 64    /* default attrib_count when creating new */
  232. -
  233. -/*
  234. - * This buffer must be able to contain three things (not all at once):
  235. - * - The master header block (size = MHsize)
  236. - * - The record header block (size = RHsize)
  237. - * - Attributes not specified in the RHblock (attrib_count - RHsize - 2)
  238. - *
  239. - * Currently, it only needs to be 64 bytes.  Since it is allocated as local
  240. - *  storage only once during execution, making it reasonably large should
  241. - *  not cause any problems in performance but will make the program stable
  242. - *  if it encounters an archive with a drastically expanded RHblock.
  243. - */
  244. -#define RECBUFSIZ    256
  245. -
  246. -/* thread record */
  247. -typedef struct {
  248. -    twobyt thread_class;
  249. -    twobyt thread_format;
  250. -    twobyt thread_kind;
  251. -    twobyt thread_crc;
  252. -    fourbyt thread_eof;
  253. -    fourbyt comp_thread_eof;
  254. -} THblock;
  255. -#define THsize 16  /* this should not change */
  256. -
  257. -
  258. -/*
  259. - * Definitions for the linked lists
  260. - * A linked list of Record headers, with linked lists of Threads attached
  261. - */
  262. -
  263. -/* thread nodes */
  264. -typedef struct TNode_s {
  265. -    THblock *THptr;  /* points to thread info */
  266. -    long fileposn;  /* absolute position of this thread in the file */
  267. -    struct TNode_s *TNext;  /* points to next thread node */
  268. -} TNode;
  269. -
  270. -/* record nodes */
  271. -typedef struct RNode_s {
  272. -    RHblock *RHptr;  /* points to the record header block */
  273. -    char *filename;  /* filename of record */
  274. -    twobyt filename_length;  /* length of filename (as stored in record hdr) */
  275. -    twobyt real_fn_length;   /* length of filename (actual) */
  276. -    TNode *TNodePtr;  /* points to first thread node */
  277. -    fourbyt unc_len;  /* total uncompressed length of all threads */
  278. -    fourbyt comp_len;  /* total compressed length of all threads */
  279. -    struct RNode_s *RNext;  /* points to next record node */
  280. -} RNode;
  281. -
  282. -/* head of list */
  283. -typedef struct {
  284. -    char *arc_name;  /* filename of archive */
  285. -    MHblock *MHptr;  /* points to master header */
  286. -    RNode *RNodePtr;  /* points to first record node */
  287. -    long nextposn;  /* abs. position in file to put next record (for ADD) */
  288. -} ListHdr;
  289. -
  290. -
  291. -/*
  292. - * function declarations
  293. - */
  294. -
  295. -extern ListHdr *NuRead();  /* read archive info into memory */
  296. -extern void NuTest();       /* archive integrity check */
  297. -extern twobyt CalcCRC();   /* calculate a CRC on a range of bytes */
  298. -extern char *PrintDate();  /* print a date from a (Time *) struct */
  299. -extern void BCopy();       /* copy bytes: *src, *dest, num, order? */
  300. -extern void HiSwap();       /* swap bytes (maybe): *ptr, src_index, dst_index */
  301. =nudefs.h
  302. -/*
  303. - * nudefs.h - system-dependent typdefs and #defines for all NuLib files,
  304. - *            plus extern declarations for global variables (allocated in
  305. - *          numain.c).
  306. - *
  307. - * IMPORTANT: This file must be first on the list of #includes, since some
  308. - *          include files will be processed based on these #defines
  309. - *
  310. - * NuLib v3.0  February 1991  Freeware (distribute, don't sell)
  311. - * By Andy McFadden (fadden@cory.berkeley.edu)
  312. - */
  313. -
  314. -
  315. -/* SYSTEM DEPENDENCIES */
  316. -typedef unsigned char onebyt;
  317. -typedef unsigned short twobyt;
  318. -typedef unsigned long fourbyt;
  319. -
  320. -/* byte ordering; TRUE if high byte is first (68xxx), else FALSE (65xxx) */
  321. -extern int HiLo;  /* actually part of numain.c */
  322. -
  323. -/* Setup for Apple //gs APW */
  324. -/* [ "APW" is automatically defined by the compiler ] */
  325. -
  326. -/* Setup for MS-DOS machines (80xxx based: IBM PC) */
  327. -/* [ "MSDOS" is defined by the compiler [MS C5.1 anyway] ] */
  328. -
  329. -/* Setup for other microcomputers (Macintosh, Amiga) */
  330. -/* ??? */
  331. -
  332. -/* Setup for AIX */
  333. -/* #define SYSV */
  334. -/* #define BSD_INCLUDES */
  335. -
  336. -/* Setup for BSD UNIX systems */
  337. -#define UNIX
  338. -#define BSD43
  339. -/* #define VAX */
  340. -
  341. -/* Setup for XENIX/386 */
  342. -/* NOTE: if you get error messages about readdir() and opendir() during */
  343. -/*     linking, remove the leading '#' from the line "#CLIBS= -lx" in */
  344. -/*     "Makefile"                            */
  345. -/* #define XENIX386 */
  346. -/* #define UNIX */
  347. -/* #define SYSV */
  348. -/* #define NO_RENAME */        /* no rename() call in C library */
  349. -
  350. -/* Setup for AOS/VS @ DG */
  351. -/* #define UNIX */
  352. -/* #define DATAGENERAL */
  353. -/* #define AOSVS */
  354. -
  355. -/* Setup for other UNIX systems */
  356. -/* #define UNIX */
  357. -/* #define SYSV (or whatever) */
  358. -
  359. -/* use table lookups to get CRCs */
  360. -#define CRC_TAB
  361. -
  362. -/*
  363. - * Some global defs
  364. - */
  365. -
  366. -/* errno wasn't defined in <errno.h> on some systems... */
  367. -#ifndef MSDOS
  368. -extern int errno;
  369. -#endif
  370. -
  371. -/* Maximum file name length that we intend to handle (watch stack size!) */
  372. -#define MAXFILENAME       1024
  373. -
  374. -/* file operations */
  375. -#define S_ABS    0  /* seek absolute */
  376. -#define S_REL    1  /* seek relative */
  377. -#define S_END    2  /* seek from end */
  378. -
  379. -#ifdef UNIX          /* stuff for open() */
  380. -# define WPERMS 0644    /* read/write for owner, read only for others */
  381. -# define FREAD_STR    "r"
  382. -# define FWRITE_STR    "w"
  383. -# define O_BINARY 0    /* for non-UNIX open(); easier than #ifdefs */
  384. -#else
  385. -# ifdef APW
  386. -#  define WPERMS 0666     /* read/write for all; this may not work for some */
  387. -#  define FREAD_STR    "rb"
  388. -#  define FWRITE_STR    "wb"
  389. -# endif
  390. -# ifdef MSDOS
  391. -#  define S_IREAD     0000400         /* read permission, owner */
  392. -#  define S_IWRITE    0000200         /* write permission, owner */
  393. -#  define WPERMS S_IREAD | S_IWRITE
  394. -#  define FREAD_STR    "rb"
  395. -#  define FWRITE_STR    "wb"
  396. -# endif
  397. -# ifndef WPERMS /* other system */
  398. -#  define WPERMS 0666  /* +PORT+ */
  399. -#  define FREAD_STR    "rb"
  400. -#  define FWRITE_STR    "wb"
  401. -# endif
  402. -#endif /*UNIX*/
  403. -
  404. -/* Time structure; same as TimeRec from misctool.h */
  405. -/* one-byte entries should not have alignment problems... */
  406. -typedef struct {
  407. -    onebyt second;
  408. -    onebyt minute;
  409. -    onebyt hour;
  410. -    onebyt year;
  411. -    onebyt day;
  412. -    onebyt month;
  413. -    onebyt extra;
  414. -    onebyt weekDay;
  415. -} Time;
  416. -
  417. -
  418. -/*
  419. - * global to entire program
  420. - */
  421. -extern int HiLo;    /* byte ordering; FALSE on low-first (65816) */
  422. -extern int verbose;    /* BOOLEAN: print verbose? */
  423. -extern int interact;    /* BOOLEAN: interactive when overwriting? */
  424. -extern int dopack;    /* BOOLEAN: do we want to pack/unpack? */
  425. -extern int doSubdir;    /* BOOLEAN: expand subdirectories? */
  426. -extern int doExpand;    /* BOOLEAN: expand archived filenames? */
  427. -extern int doMessages;    /* BOOLEAN: do comments instead of data? */
  428. -extern int transfrom;    /* how to do CR<->LF translation?  (-1 = none) */
  429. -extern int transto;
  430. -extern int packMethod;    /* how to pack a file (thread_format) */
  431. -extern fourbyt defFileType;    /* default file type */
  432. -extern fourbyt defAuxType;    /* default aux type */
  433. -extern onebyt *pakbuf;    /* used by compression routines; created once to */
  434. -              /* eliminate overhead involved in malloc()ing a 64K buffer */
  435. -extern char *prgName;    /* for errors; don't like argv[0] */
  436. -
  437. =crc.h
  438. -/*
  439. - * crc.h - tables for fast computation of 16-bit CRCS
  440. - *
  441. - * NuLib v3.0  February 1991  Freeware (distribute, don't sell)
  442. - * By Andy McFadden (fadden@cory.berkeley.edu)
  443. - */
  444. -
  445. -/*
  446. - * updcrc macro derived from article Copyright (C) 1986 Stephen Satchell. 
  447. - *  NOTE: First srgument must be in range 0 to 255.
  448. - *        Second argument is referenced twice.
  449. - * 
  450. - * Programmers may incorporate any or all code into their programs, 
  451. - * giving proper credit within the source. Publication of the 
  452. - * source routines is permitted so long as proper credit is given 
  453. - * to Stephen Satchell, Satchell Evaluations and Chuck Forsberg, 
  454. - * Omen Technology.
  455. - */
  456. -
  457. -
  458. -/*#define updcrc(cp, crc) ( crctab[((crc >> 8) & 255)] ^ (crc << 8) ^ cp)*/
  459. -#define updcrc(cp, crc) ( (crctab[((crc >> 8) & 0xFF) ^ cp] ^ (crc << 8)) & 0xFFFF)
  460. -
  461. -
  462. -/* crctab calculated by Mark G. Mendel, Network Systems Corporation */
  463. -static unsigned short crctab[256] = {
  464. -    0x0000,  0x1021,  0x2042,  0x3063,  0x4084,  0x50a5,  0x60c6,  0x70e7,
  465. -    0x8108,  0x9129,  0xa14a,  0xb16b,  0xc18c,  0xd1ad,  0xe1ce,  0xf1ef,
  466. -    0x1231,  0x0210,  0x3273,  0x2252,  0x52b5,  0x4294,  0x72f7,  0x62d6,
  467. -    0x9339,  0x8318,  0xb37b,  0xa35a,  0xd3bd,  0xc39c,  0xf3ff,  0xe3de,
  468. -    0x2462,  0x3443,  0x0420,  0x1401,  0x64e6,  0x74c7,  0x44a4,  0x5485,
  469. -    0xa56a,  0xb54b,  0x8528,  0x9509,  0xe5ee,  0xf5cf,  0xc5ac,  0xd58d,
  470. -    0x3653,  0x2672,  0x1611,  0x0630,  0x76d7,  0x66f6,  0x5695,  0x46b4,
  471. -    0xb75b,  0xa77a,  0x9719,  0x8738,  0xf7df,  0xe7fe,  0xd79d,  0xc7bc,
  472. -    0x48c4,  0x58e5,  0x6886,  0x78a7,  0x0840,  0x1861,  0x2802,  0x3823,
  473. -    0xc9cc,  0xd9ed,  0xe98e,  0xf9af,  0x8948,  0x9969,  0xa90a,  0xb92b,
  474. -    0x5af5,  0x4ad4,  0x7ab7,  0x6a96,  0x1a71,  0x0a50,  0x3a33,  0x2a12,
  475. -    0xdbfd,  0xcbdc,  0xfbbf,  0xeb9e,  0x9b79,  0x8b58,  0xbb3b,  0xab1a,
  476. -    0x6ca6,  0x7c87,  0x4ce4,  0x5cc5,  0x2c22,  0x3c03,  0x0c60,  0x1c41,
  477. -    0xedae,  0xfd8f,  0xcdec,  0xddcd,  0xad2a,  0xbd0b,  0x8d68,  0x9d49,
  478. -    0x7e97,  0x6eb6,  0x5ed5,  0x4ef4,  0x3e13,  0x2e32,  0x1e51,  0x0e70,
  479. -    0xff9f,  0xefbe,  0xdfdd,  0xcffc,  0xbf1b,  0xaf3a,  0x9f59,  0x8f78,
  480. -    0x9188,  0x81a9,  0xb1ca,  0xa1eb,  0xd10c,  0xc12d,  0xf14e,  0xe16f,
  481. -    0x1080,  0x00a1,  0x30c2,  0x20e3,  0x5004,  0x4025,  0x7046,  0x6067,
  482. -    0x83b9,  0x9398,  0xa3fb,  0xb3da,  0xc33d,  0xd31c,  0xe37f,  0xf35e,
  483. -    0x02b1,  0x1290,  0x22f3,  0x32d2,  0x4235,  0x5214,  0x6277,  0x7256,
  484. -    0xb5ea,  0xa5cb,  0x95a8,  0x8589,  0xf56e,  0xe54f,  0xd52c,  0xc50d,
  485. -    0x34e2,  0x24c3,  0x14a0,  0x0481,  0x7466,  0x6447,  0x5424,  0x4405,
  486. -    0xa7db,  0xb7fa,  0x8799,  0x97b8,  0xe75f,  0xf77e,  0xc71d,  0xd73c,
  487. -    0x26d3,  0x36f2,  0x0691,  0x16b0,  0x6657,  0x7676,  0x4615,  0x5634,
  488. -    0xd94c,  0xc96d,  0xf90e,  0xe92f,  0x99c8,  0x89e9,  0xb98a,  0xa9ab,
  489. -    0x5844,  0x4865,  0x7806,  0x6827,  0x18c0,  0x08e1,  0x3882,  0x28a3,
  490. -    0xcb7d,  0xdb5c,  0xeb3f,  0xfb1e,  0x8bf9,  0x9bd8,  0xabbb,  0xbb9a,
  491. -    0x4a75,  0x5a54,  0x6a37,  0x7a16,  0x0af1,  0x1ad0,  0x2ab3,  0x3a92,
  492. -    0xfd2e,  0xed0f,  0xdd6c,  0xcd4d,  0xbdaa,  0xad8b,  0x9de8,  0x8dc9,
  493. -    0x7c26,  0x6c07,  0x5c64,  0x4c45,  0x3ca2,  0x2c83,  0x1ce0,  0x0cc1,
  494. -    0xef1f,  0xff3e,  0xcf5d,  0xdf7c,  0xaf9b,  0xbfba,  0x8fd9,  0x9ff8,
  495. -    0x6e17,  0x7e36,  0x4e55,  0x5e74,  0x2e93,  0x3eb2,  0x0ed1,  0x1ef0
  496. -};
  497. -
  498. =nucompfn.h
  499. -/*
  500. - * nucompfn.h - function declarations for nucomp.c
  501. - *
  502. - * NuLib v3.0  February 1991  Freeware (distribute, don't sell)
  503. - * By Andy McFadden (fadden@cory.berkeley.edu)
  504. - */
  505. -
  506. -extern int u_compress(),
  507. -       u_decompress();
  508. -
  509. -/*  COMPRESS.FNS  global function declarations */
  510. -/*  this should be compatible with any type of declaration for external
  511. -    functions. See compress.h for explaination */
  512. -#ifdef  NPROTO
  513. -extern  void Usage();
  514. -extern  int check_error();
  515. -extern  char *name_index();
  516. -extern  char *get_program_name();
  517. -#ifdef NO_STRCHR
  518. -extern char *strchr();
  519. -#endif
  520. -#ifdef NO_STRRCHR
  521. -extern char *strrchr();
  522. -#endif
  523. -#ifdef NO_REVSEARCH
  524. -extern char *strrpbrk();
  525. -#endif
  526. -extern  int is_z_name();
  527. -extern  int cl_block();
  528. -extern  int make_z_name();
  529. -extern  void unmake_z_name();
  530. -extern  void compress();
  531. -extern  void putcode();
  532. -extern  void decompress();
  533. -extern  CODE getcode();
  534. -extern  void writeerr();
  535. -extern  void copystat();
  536. -#ifndef NOSIGNAL
  537. -extern  int foreground();
  538. -extern  SIGTYPE onintr();
  539. -extern  SIGTYPE oops();
  540. -#endif
  541. -extern  void prratio();
  542. -extern  void version();
  543. -#ifdef NEARHEAP
  544. -extern ALLOCTYPE *emalloc();
  545. -extern void efree();
  546. -#else
  547. -extern  ALLOCTYPE FAR *emalloc();
  548. -extern  void efree();
  549. -#endif
  550. -extern  int alloc_tables();
  551. -extern  void init_tables();
  552. -extern  int nextcode();
  553. -#else
  554. -extern  void Usage(int);
  555. -extern  int  check_error(void);
  556. -extern  char *name_index(char *);
  557. -extern  int cl_block(void);
  558. -extern  char *get_program_name(char *);
  559. -extern  int is_z_name(char *);
  560. -extern  int make_z_name(char *);
  561. -extern  void unmake_z_name(char *);
  562. -#ifdef NO_STRCHR
  563. -extern char *strchr(char *,int);
  564. -#endif
  565. -#ifdef NO_STRRCHR
  566. -extern char *strrchr(char *,int);
  567. -#endif
  568. -#ifdef NO_REVSEARCH
  569. -extern char *strrpbrk(char *,char *);
  570. -#endif
  571. -extern  void compress(void);
  572. -extern  void putcode(CODE,int);
  573. -extern  void decompress(void);
  574. -extern  CODE getcode(void);
  575. -extern  void writeerr(void);
  576. -extern  void copystat(char *,char *);
  577. -#ifndef NOSIGNAL
  578. -extern  int foreground(void);
  579. -extern  SIGTYPE onintr(void);
  580. -extern  SIGTYPE oops(void);
  581. -#endif
  582. -extern  void prratio(FILE *,long,long);
  583. -extern  void version(void);
  584. -#ifdef NEARHEAP
  585. -extern ALLOCTYPE *emalloc(unsigned int,int);
  586. -extern void efree(ALLOCTYPE *);
  587. -#else
  588. -extern  ALLOCTYPE FAR *emalloc(unsigned int,int);
  589. -extern  void efree(ALLOCTYPE FAR *);
  590. -#endif
  591. -extern  int alloc_tables(CODE,HASH);
  592. -extern  void init_tables(void );
  593. -extern  int nextcode(CODE *);
  594. -#endif
  595. -
  596. + END OF ARCHIVE
  597.