home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume23 / abc / part25 < prev    next >
Encoding:
Internet Message Format  |  1991-01-08  |  52.4 KB

  1. Subject:  v23i104:  ABC interactive programming environment, Part25/25
  2. Newsgroups: comp.sources.unix
  3. Approved: rsalz@uunet.UU.NET
  4. X-Checksum-Snefru: e4f57790 87447806 1497c544 b54172fb
  5.  
  6. Submitted-by: Steven Pemberton <steven@cwi.nl>
  7. Posting-number: Volume 23, Issue 104
  8. Archive-name: abc/part25
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then feed it
  12. # into a shell via "sh file" or similar.  To overwrite existing files,
  13. # type "sh file -c".
  14. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  15. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  16. # Contents:  abc/b/MF abc/bed/MF abc/bed/e1term.c abc/bhdrs/bcom.h
  17. #   abc/bhdrs/bgfx.h abc/bhdrs/bmem.h abc/bhdrs/getopt.h
  18. #   abc/bhdrs/release.h abc/bint1/MF abc/bint2/MF abc/bint3/MF
  19. #   abc/bio/MF abc/bio/i4inp.c abc/bio/i4lis.c abc/boot/alloc.c
  20. #   abc/btr/MF abc/btr/etex.h abc/btr/i1tlt.h abc/ch_clean
  21. #   abc/ch_depend abc/ch_makefiles abc/ehdrs/code.h abc/ehdrs/gram.h
  22. #   abc/ehdrs/queu.h abc/ex/DoExamples abc/ex/generate.in
  23. #   abc/ex/generate/analyze.cmd abc/ex/generate/enders.cts
  24. #   abc/ex/generate/fill.cmd abc/ex/generate/generate.cmd
  25. #   abc/ex/generate/perm.abc abc/ex/generate/start.cmd
  26. #   abc/ex/generate/starters.cts abc/ex/generate/suggest.abc
  27. #   abc/ex/hanoi.in abc/ex/hanoi.out abc/ex/hanoi/hanoi.cmd
  28. #   abc/ex/hanoi/perm.abc abc/ex/pi.in abc/ex/pi.out
  29. #   abc/ex/pi/perm.abc abc/ex/pi/pi.cmd abc/ex/pi/suggest.abc
  30. #   abc/ex/try/analyze.cmd abc/ex/try/enders.cts abc/ex/try/fill.cmd
  31. #   abc/ex/try/generate.cmd abc/ex/try/perm.abc abc/ex/try/start.cmd
  32. #   abc/ex/try/starters.cts abc/ex/try/suggest.abc abc/ex/xref.in
  33. #   abc/ex/xref.out abc/ex/xref/alphabet.mpd abc/ex/xref/output.cmd
  34. #   abc/ex/xref/perm.abc abc/ex/xref/save.cmd abc/ex/xref/suggest.abc
  35. #   abc/ex/xref/text.cts abc/ex/xref/words.mfd abc/ex/xref/xref.cmd
  36. #   abc/ex/xref/xtab.cts abc/ihdrs/i2gen.h abc/ihdrs/i3bws.h
  37. #   abc/ihdrs/i3in2.h abc/ihdrs/i3scr.h abc/ihdrs/i3sta.h
  38. #   abc/ihdrs/i3typ.h abc/lin/etex.h abc/stc/MF abc/tc/tc1.c
  39. #   abc/uhdrs/args.h abc/uhdrs/defs.h abc/uhdrs/osconf.h
  40. #   abc/ukeys/abckeys_2640b abc/unix/MF
  41. # Wrapped by rsalz@litchi.bbn.com on Mon Dec 17 13:28:34 1990
  42. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  43. echo If this archive is complete, you will see the following message:
  44. echo '          "shar: End of archive 25 (of 25)."'
  45. if test -f 'abc/b/MF' -a "${1}" != "-c" ; then 
  46.   echo shar: Will not clobber existing file \"'abc/b/MF'\"
  47. else
  48.   echo shar: Extracting \"'abc/b/MF'\" \(59 characters\)
  49.   sed "s/^X//" >'abc/b/MF' <<'END_OF_FILE'
  50. Xall: b1file.o b1grab.o b1memo.o b1mess.o b1outp.o getopt.o
  51. END_OF_FILE
  52.   if test 59 -ne `wc -c <'abc/b/MF'`; then
  53.     echo shar: \"'abc/b/MF'\" unpacked with wrong size!
  54.   fi
  55.   # end of 'abc/b/MF'
  56. fi
  57. if test -f 'abc/bed/MF' -a "${1}" != "-c" ; then 
  58.   echo shar: Will not clobber existing file \"'abc/bed/MF'\"
  59. else
  60.   echo shar: Extracting \"'abc/bed/MF'\" \(266 characters\)
  61.   sed "s/^X//" >'abc/bed/MF' <<'END_OF_FILE'
  62. Xall: e1cell.o e1code.o e1comm.o e1deco.o e1edit.o e1edoc.o e1erro.o e1eval.o e1getc.o e1goto.o e1gram.o e1help.o e1ins2.o e1inse.o e1lexi.o e1line.o e1move.o e1node.o e1outp.o e1que1.o e1que2.o e1save.o e1scrn.o e1spos.o e1sugg.o e1supr.o e1tabl.o e1term.o e1wide.o
  63. END_OF_FILE
  64.   if test 266 -ne `wc -c <'abc/bed/MF'`; then
  65.     echo shar: \"'abc/bed/MF'\" unpacked with wrong size!
  66.   fi
  67.   # end of 'abc/bed/MF'
  68. fi
  69. if test -f 'abc/bed/e1term.c' -a "${1}" != "-c" ; then 
  70.   echo shar: Will not clobber existing file \"'abc/bed/e1term.c'\"
  71. else
  72.   echo shar: Extracting \"'abc/bed/e1term.c'\" \(467 characters\)
  73.   sed "s/^X//" >'abc/bed/e1term.c' <<'END_OF_FILE'
  74. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  75. X
  76. X/*
  77. X * B editor -- Init/end terminal-related modules.
  78. X *
  79. X * This file should be wiped out completely.
  80. X */
  81. X
  82. X#include "b.h"
  83. X#include "feat.h"
  84. X#include "erro.h"
  85. X
  86. X#ifdef GOTOCURSOR
  87. X
  88. X/*
  89. X * Compatible interface with trmsense; return No if not sensed.
  90. X */
  91. X
  92. XVisible bool
  93. Xsense(py, px)
  94. X    int *py;
  95. X    int *px;
  96. X{
  97. X    trmsense(py, px);
  98. X    if (*py >= 0 && *px >= 0)
  99. X        return Yes;
  100. X    ederr(GOTO_BAD);
  101. X    return No;
  102. X}
  103. X#endif
  104. END_OF_FILE
  105.   if test 467 -ne `wc -c <'abc/bed/e1term.c'`; then
  106.     echo shar: \"'abc/bed/e1term.c'\" unpacked with wrong size!
  107.   fi
  108.   # end of 'abc/bed/e1term.c'
  109. fi
  110. if test -f 'abc/bhdrs/bcom.h' -a "${1}" != "-c" ; then 
  111.   echo shar: Will not clobber existing file \"'abc/bhdrs/bcom.h'\"
  112. else
  113.   echo shar: Extracting \"'abc/bhdrs/bcom.h'\" \(330 characters\)
  114.   sed "s/^X//" >'abc/bhdrs/bcom.h' <<'END_OF_FILE'
  115. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  116. X
  117. X/* communication between interpreter and editor */
  118. X
  119. X#define R_cmd     'c'    /* command */
  120. X#define R_expr   'e'    /* EG expression */
  121. X#define R_raw    'r'    /* RAW expression */
  122. X#define R_ioraw     'i'    /* RAW expression for abc_input */
  123. X#define R_answer 'q'    /* Yes/No */
  124. X
  125. X
  126. END_OF_FILE
  127.   if test 330 -ne `wc -c <'abc/bhdrs/bcom.h'`; then
  128.     echo shar: \"'abc/bhdrs/bcom.h'\" unpacked with wrong size!
  129.   fi
  130.   # end of 'abc/bhdrs/bcom.h'
  131. fi
  132. if test -f 'abc/bhdrs/bgfx.h' -a "${1}" != "-c" ; then 
  133.   echo shar: Will not clobber existing file \"'abc/bhdrs/bgfx.h'\"
  134. else
  135.   echo shar: Extracting \"'abc/bhdrs/bgfx.h'\" \(353 characters\)
  136.   sed "s/^X//" >'abc/bhdrs/bgfx.h' <<'END_OF_FILE'
  137. X/*
  138. X * Shared data between graphics routines.
  139. X */
  140. X
  141. Xtypedef struct ivector {
  142. X    int x;
  143. X    int y;
  144. X} ivector;
  145. X
  146. Xextern ivector dev_origin; /* Lower left corner of device */
  147. Xextern ivector dev_corner; /* Upper right corner of device */
  148. X
  149. Xextern bool enter_gfx();
  150. Xextern exit_gfx();
  151. X
  152. Xextern int gfx_mode;
  153. X#define TEXT_MODE 1
  154. X#define GFX_MODE 2
  155. X#define SPLIT_MODE 3
  156. END_OF_FILE
  157.   if test 353 -ne `wc -c <'abc/bhdrs/bgfx.h'`; then
  158.     echo shar: \"'abc/bhdrs/bgfx.h'\" unpacked with wrong size!
  159.   fi
  160.   # end of 'abc/bhdrs/bgfx.h'
  161. fi
  162. if test -f 'abc/bhdrs/bmem.h' -a "${1}" != "-c" ; then 
  163.   echo shar: Will not clobber existing file \"'abc/bhdrs/bmem.h'\"
  164. else
  165.   echo shar: Extracting \"'abc/bhdrs/bmem.h'\" \(417 characters\)
  166.   sed "s/^X//" >'abc/bhdrs/bmem.h' <<'END_OF_FILE'
  167. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  168. X
  169. X/* B memory management */
  170. X
  171. Xtypedef char *ptr;
  172. X#define Nil ((ptr) 0)
  173. X
  174. Xptr getmem();
  175. Xptr savestr();
  176. X#define freestr(s) (freemem((ptr)(s)))
  177. X
  178. X#ifdef MEMTRACE
  179. Xtypedef unsigned long address;    /* for PC and symbol table (on a tahoe) */
  180. X#define F_ALLOC 'A'
  181. X#define F_FREE  'F'
  182. X#endif
  183. X
  184. Xstruct bufadm {char *buf, *ptr, *end; };
  185. Xtypedef struct bufadm bufadm;
  186. END_OF_FILE
  187.   if test 417 -ne `wc -c <'abc/bhdrs/bmem.h'`; then
  188.     echo shar: \"'abc/bhdrs/bmem.h'\" unpacked with wrong size!
  189.   fi
  190.   # end of 'abc/bhdrs/bmem.h'
  191. fi
  192. if test -f 'abc/bhdrs/getopt.h' -a "${1}" != "-c" ; then 
  193.   echo shar: Will not clobber existing file \"'abc/bhdrs/getopt.h'\"
  194. else
  195.   echo shar: Extracting \"'abc/bhdrs/getopt.h'\" \(265 characters\)
  196.   sed "s/^X//" >'abc/bhdrs/getopt.h' <<'END_OF_FILE'
  197. Xextern int opterr;    /* no error messages if zero */
  198. Xextern int optopt;    /* option letter found */
  199. Xextern int optind;    /* argv index of next argument */
  200. Xextern char *optarg;    /* start of option argument */
  201. X
  202. Xextern int getopt();    /* returns option letter or '?' or EOF */
  203. END_OF_FILE
  204.   if test 265 -ne `wc -c <'abc/bhdrs/getopt.h'`; then
  205.     echo shar: \"'abc/bhdrs/getopt.h'\" unpacked with wrong size!
  206.   fi
  207.   # end of 'abc/bhdrs/getopt.h'
  208. fi
  209. if test -f 'abc/bhdrs/release.h' -a "${1}" != "-c" ; then 
  210.   echo shar: Will not clobber existing file \"'abc/bhdrs/release.h'\"
  211. else
  212.   echo shar: Extracting \"'abc/bhdrs/release.h'\" \(26 characters\)
  213.   sed "s/^X//" >'abc/bhdrs/release.h' <<'END_OF_FILE'
  214. X#define RELEASE "1.02.01"
  215. END_OF_FILE
  216.   if test 26 -ne `wc -c <'abc/bhdrs/release.h'`; then
  217.     echo shar: \"'abc/bhdrs/release.h'\" unpacked with wrong size!
  218.   fi
  219.   # end of 'abc/bhdrs/release.h'
  220. fi
  221. if test -f 'abc/bint1/MF' -a "${1}" != "-c" ; then 
  222.   echo shar: Will not clobber existing file \"'abc/bint1/MF'\"
  223. else
  224.   echo shar: Extracting \"'abc/bint1/MF'\" \(93 characters\)
  225.   sed "s/^X//" >'abc/bint1/MF' <<'END_OF_FILE'
  226. Xall: i1com.o i1fun.o i1nua.o i1nuc.o i1nug.o i1nui.o i1num.o i1nuq.o i1nur.o i1nut.o i1tra.o
  227. END_OF_FILE
  228.   if test 93 -ne `wc -c <'abc/bint1/MF'`; then
  229.     echo shar: \"'abc/bint1/MF'\" unpacked with wrong size!
  230.   fi
  231.   # end of 'abc/bint1/MF'
  232. fi
  233. if test -f 'abc/bint2/MF' -a "${1}" != "-c" ; then 
  234.   echo shar: Will not clobber existing file \"'abc/bint2/MF'\"
  235. else
  236.   echo shar: Extracting \"'abc/bint2/MF'\" \(85 characters\)
  237.   sed "s/^X//" >'abc/bint2/MF' <<'END_OF_FILE'
  238. Xall: i2ana.o i2cmd.o i2dis.o i2exp.o i2fix.o i2gen.o i2syn.o i2tar.o i2tes.o i2uni.o
  239. END_OF_FILE
  240.   if test 85 -ne `wc -c <'abc/bint2/MF'`; then
  241.     echo shar: \"'abc/bint2/MF'\" unpacked with wrong size!
  242.   fi
  243.   # end of 'abc/bint2/MF'
  244. fi
  245. if test -f 'abc/bint3/MF' -a "${1}" != "-c" ; then 
  246.   echo shar: Will not clobber existing file \"'abc/bint3/MF'\"
  247. else
  248.   echo shar: Extracting \"'abc/bint3/MF'\" \(133 characters\)
  249.   sed "s/^X//" >'abc/bint3/MF' <<'END_OF_FILE'
  250. Xall: i3bws.o i3com.o i3env.o i3err.o i3fil.o i3fpr.o i3gfx.o i3imm.o i3in2.o i3ini.o i3int.o i3loc.o i3scr.o i3sou.o i3sta.o i3typ.o
  251. END_OF_FILE
  252.   if test 133 -ne `wc -c <'abc/bint3/MF'`; then
  253.     echo shar: \"'abc/bint3/MF'\" unpacked with wrong size!
  254.   fi
  255.   # end of 'abc/bint3/MF'
  256. fi
  257. if test -f 'abc/bio/MF' -a "${1}" != "-c" ; then 
  258.   echo shar: Will not clobber existing file \"'abc/bio/MF'\"
  259. else
  260.   echo shar: Extracting \"'abc/bio/MF'\" \(61 characters\)
  261.   sed "s/^X//" >'abc/bio/MF' <<'END_OF_FILE'
  262. Xall: i4bio.o i4fil.o i4grp.o i4inp.o i4lis.o i4out.o i4rec.o
  263. END_OF_FILE
  264.   if test 61 -ne `wc -c <'abc/bio/MF'`; then
  265.     echo shar: \"'abc/bio/MF'\" unpacked with wrong size!
  266.   fi
  267.   # end of 'abc/bio/MF'
  268. fi
  269. if test -f 'abc/bio/i4inp.c' -a "${1}" != "-c" ; then 
  270.   echo shar: Will not clobber existing file \"'abc/bio/i4inp.c'\"
  271. else
  272.   echo shar: Extracting \"'abc/bio/i4inp.c'\" \(659 characters\)
  273.   sed "s/^X//" >'abc/bio/i4inp.c' <<'END_OF_FILE'
  274. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  275. X
  276. X#include "b.h"
  277. X#include "bmem.h"
  278. X#include "bobj.h"
  279. X#include "i4bio.h"
  280. X
  281. X/* read_table_of_texts */
  282. X
  283. XVisible Procedure abcinput(name_arg) char *name_arg; {
  284. X    value name;
  285. X    value tab, v;
  286. X    value n, m;
  287. X    bool eoi= No; /* end of input */
  288. X    
  289. X    name= mk_text(name_arg);
  290. X    if (!is_abcname(name)) {
  291. X        bioerrV(IO_NAME, name);
  292. X        release(name);
  293. X        return;
  294. X    }
  295. X    tab= mk_elt();
  296. X    n= zero;
  297. X    while (!eoi) {
  298. X        eoi= read_ioraw(&v);
  299. X        if (Valid(v)) {
  300. X            n= sum(m= n, one);
  301. X            replace(v, &tab, n);
  302. X            release(m); release(v);
  303. X        }
  304. X    }
  305. X    still_ok= Yes; interrupted= No;
  306. X    def_target(name, tab);
  307. X    release(n);
  308. X    release(name);
  309. X}
  310. END_OF_FILE
  311.   if test 659 -ne `wc -c <'abc/bio/i4inp.c'`; then
  312.     echo shar: \"'abc/bio/i4inp.c'\" unpacked with wrong size!
  313.   fi
  314.   # end of 'abc/bio/i4inp.c'
  315. fi
  316. if test -f 'abc/bio/i4lis.c' -a "${1}" != "-c" ; then 
  317.   echo shar: Will not clobber existing file \"'abc/bio/i4lis.c'\"
  318. else
  319.   echo shar: Extracting \"'abc/bio/i4lis.c'\" \(683 characters\)
  320.   sed "s/^X//" >'abc/bio/i4lis.c' <<'END_OF_FILE'
  321. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  322. X
  323. X#include "b.h"
  324. X#include "bmem.h"
  325. X#include "bobj.h"
  326. X#include "bfil.h"
  327. X#include "i3sou.h"
  328. X#include "i4bio.h"
  329. X
  330. X/* list howto's */
  331. X
  332. XVisible Procedure abclist(ofp) FILE *ofp; {
  333. X    intlet k, len;
  334. X    FILE *fp;
  335. X    value fname;
  336. X    char *line;
  337. X    
  338. X    len= length(b_perm);
  339. X    for (k= 0; k<len && !Interrupted(); ++k) {
  340. X        fname= *assoc(b_perm, k);
  341. X        if (!Is_text(fname) || !unitfile(fname))
  342. X            continue;
  343. X        fp= fopen(strval(fname), "r");
  344. X        if (fp == NULL)
  345. X            continue;
  346. X        while (!interrupted && (line= f_getline(fp)) != NULL) {
  347. X            putstr(ofp, line);
  348. X            fflush(ofp);
  349. X            freestr(line);
  350. X        }
  351. X        fclose(fp);
  352. X        putnewline(ofp);
  353. X        fflush(ofp);
  354. X    }
  355. X}
  356. END_OF_FILE
  357.   if test 683 -ne `wc -c <'abc/bio/i4lis.c'`; then
  358.     echo shar: \"'abc/bio/i4lis.c'\" unpacked with wrong size!
  359.   fi
  360.   # end of 'abc/bio/i4lis.c'
  361. fi
  362. if test -f 'abc/boot/alloc.c' -a "${1}" != "-c" ; then 
  363.   echo shar: Will not clobber existing file \"'abc/boot/alloc.c'\"
  364. else
  365.   echo shar: Extracting \"'abc/boot/alloc.c'\" \(535 characters\)
  366.   sed "s/^X//" >'abc/boot/alloc.c' <<'END_OF_FILE'
  367. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  368. X
  369. X/*
  370. X * Allocate the arrays holding the tables.
  371. X */
  372. X
  373. X#include "b.h"
  374. X#include "main.h"
  375. X
  376. XVisible Procedure allocate_tables() {
  377. X    
  378. X    symdef= (struct syminfo *)
  379. X        getmem((unsigned) maxsym*sizeof(struct syminfo));
  380. X    
  381. X    classdef= (struct classinfo *)
  382. X        getmem((unsigned) maxclass*sizeof(struct classinfo));
  383. X    
  384. X    lexdef= (struct lexinfo *)
  385. X        getmem((unsigned) maxlex*sizeof(struct lexinfo));
  386. X
  387. X    namelist= (struct nameinfo *)
  388. X        getmem((unsigned) maxname*sizeof(struct nameinfo));
  389. X}
  390. END_OF_FILE
  391.   if test 535 -ne `wc -c <'abc/boot/alloc.c'`; then
  392.     echo shar: \"'abc/boot/alloc.c'\" unpacked with wrong size!
  393.   fi
  394.   # end of 'abc/boot/alloc.c'
  395. fi
  396. if test -f 'abc/btr/MF' -a "${1}" != "-c" ; then 
  397.   echo shar: Will not clobber existing file \"'abc/btr/MF'\"
  398. else
  399.   echo shar: Extracting \"'abc/btr/MF'\" \(54 characters\)
  400.   sed "s/^X//" >'abc/btr/MF' <<'END_OF_FILE'
  401. Xall: e1etex.o i1btr.o i1lta.o i1obj.o i1tex.o i1tlt.o
  402. END_OF_FILE
  403.   if test 54 -ne `wc -c <'abc/btr/MF'`; then
  404.     echo shar: \"'abc/btr/MF'\" unpacked with wrong size!
  405.   fi
  406.   # end of 'abc/btr/MF'
  407. fi
  408. if test -f 'abc/btr/etex.h' -a "${1}" != "-c" ; then 
  409.   echo shar: Will not clobber existing file \"'abc/btr/etex.h'\"
  410. else
  411.   echo shar: Extracting \"'abc/btr/etex.h'\" \(346 characters\)
  412.   sed "s/^X//" >'abc/btr/etex.h' <<'END_OF_FILE'
  413. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  414. X
  415. Xextern int e_length();
  416. Xextern value mk_etext();
  417. Xextern char e_ncharval();
  418. Xextern string e_strval();
  419. Xextern string e_sstrval();
  420. X/* extern Procedure e_fstrval(); */
  421. Xextern value e_icurtail();
  422. Xextern value e_ibehead();
  423. Xextern value e_concat();
  424. X/* extern Procedure e_concto(); */
  425. END_OF_FILE
  426.   if test 346 -ne `wc -c <'abc/btr/etex.h'`; then
  427.     echo shar: \"'abc/btr/etex.h'\" unpacked with wrong size!
  428.   fi
  429.   # end of 'abc/btr/etex.h'
  430. fi
  431. if test -f 'abc/btr/i1tlt.h' -a "${1}" != "-c" ; then 
  432.   echo shar: Will not clobber existing file \"'abc/btr/i1tlt.h'\"
  433. else
  434.   echo shar: Extracting \"'abc/btr/i1tlt.h'\" \(420 characters\)
  435.   sed "s/^X//" >'abc/btr/i1tlt.h' <<'END_OF_FILE'
  436. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  437. X
  438. X/* Private definitions for B texts, lists and tables */
  439. X
  440. Xtypedef struct telita {
  441. X    HEADER; btreeptr root;
  442. X} a_telita, *telita;
  443. X
  444. X#define Itemtype(v) (((telita) (v))->len) /* Itemtype */
  445. X#define Root(v) (((telita) (v))->root)
  446. X#define Tltsize(v) (Root(v) EQ Bnil ? 0 : Size(Root(v)))
  447. X
  448. X#define Character(v)    ((bool) (Type(v) EQ Tex && Tltsize(v) EQ 1))
  449. END_OF_FILE
  450.   if test 420 -ne `wc -c <'abc/btr/i1tlt.h'`; then
  451.     echo shar: \"'abc/btr/i1tlt.h'\" unpacked with wrong size!
  452.   fi
  453.   # end of 'abc/btr/i1tlt.h'
  454. fi
  455. if test -f 'abc/ch_clean' -a "${1}" != "-c" ; then 
  456.   echo shar: Will not clobber existing file \"'abc/ch_clean'\"
  457. else
  458.   echo shar: Extracting \"'abc/ch_clean'\" \(230 characters\)
  459.   sed "s/^X//" >'abc/ch_clean' <<'END_OF_FILE'
  460. X: 'from make clean to make clobber'
  461. X
  462. Xecho " "
  463. Xecho "You can clean up the automatically created makefiles */Mf and */Dep"
  464. Xcase $1 in
  465. Xabc.mse) echo "as well as the messages file 'abc.mse'";;
  466. Xesac
  467. Xecho "with 'make clobber'."
  468. X
  469. Xexit 0
  470. END_OF_FILE
  471.   if test 230 -ne `wc -c <'abc/ch_clean'`; then
  472.     echo shar: \"'abc/ch_clean'\" unpacked with wrong size!
  473.   fi
  474.   chmod +x 'abc/ch_clean'
  475.   # end of 'abc/ch_clean'
  476. fi
  477. if test -f 'abc/ch_depend' -a "${1}" != "-c" ; then 
  478.   echo shar: Will not clobber existing file \"'abc/ch_depend'\"
  479. else
  480.   echo shar: Extracting \"'abc/ch_depend'\" \(433 characters\)
  481.   sed "s/^X//" >'abc/ch_depend' <<'END_OF_FILE'
  482. X: Check whether makefile is properly edited
  483. X
  484. Xecho " "
  485. Xecho "Made dependency files 'Dep' in subdirectories." >&2
  486. X    
  487. Xcase $1 in
  488. XDep)    echo "You can now make the ABC system with 'make all'." >&2
  489. X    exit 0;;
  490. XDEP)    echo "Make would still use the distributed ones, however." >&2
  491. X    echo "Redefine DEP=Dep in ./Makefile before you call 'make all'." >&2
  492. X    exit 1;;
  493. X*)    echo "You did not edit the makefile properly; see ./Problems" >&2
  494. X    exit 1;;
  495. Xesac
  496. END_OF_FILE
  497.   if test 433 -ne `wc -c <'abc/ch_depend'`; then
  498.     echo shar: \"'abc/ch_depend'\" unpacked with wrong size!
  499.   fi
  500.   chmod +x 'abc/ch_depend'
  501.   # end of 'abc/ch_depend'
  502. fi
  503. if test -f 'abc/ch_makefiles' -a "${1}" != "-c" ; then 
  504.   echo shar: Will not clobber existing file \"'abc/ch_makefiles'\"
  505. else
  506.   echo shar: Extracting \"'abc/ch_makefiles'\" \(437 characters\)
  507.   sed "s/^X//" >'abc/ch_makefiles' <<'END_OF_FILE'
  508. X: Check whether makefile is properly edited for make makefiles
  509. X
  510. Xecho " " >&2
  511. Xecho "Made makefiles 'Mf' in subdirectories." >&2
  512. X
  513. Xcase $1 in
  514. XMf)    echo "You can now try 'make depend'." >&2
  515. X    exit 0;;
  516. XMF)    echo "Make would still use the distributed makefiles, however." >&2
  517. X    echo "Redefine MF=Mf in ./Makefile before you call 'make depend all'." >&2
  518. X    exit 1;;
  519. X*)    echo "You did not edit the makefile properly; see ./Problems" >&2
  520. X    exit 1;;
  521. Xesac
  522. END_OF_FILE
  523.   if test 437 -ne `wc -c <'abc/ch_makefiles'`; then
  524.     echo shar: \"'abc/ch_makefiles'\" unpacked with wrong size!
  525.   fi
  526.   chmod +x 'abc/ch_makefiles'
  527.   # end of 'abc/ch_makefiles'
  528. fi
  529. if test -f 'abc/ehdrs/code.h' -a "${1}" != "-c" ; then 
  530.   echo shar: Will not clobber existing file \"'abc/ehdrs/code.h'\"
  531. else
  532.   echo shar: Extracting \"'abc/ehdrs/code.h'\" \(314 characters\)
  533.   sed "s/^X//" >'abc/ehdrs/code.h' <<'END_OF_FILE'
  534. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  535. X
  536. Xextern char code_array[];
  537. Xextern char invcode_array[];
  538. Xextern int lastcode;
  539. X
  540. Xextern Procedure initcodes();
  541. X
  542. X#define RANGE 128 /* ASCII characters are in {0 .. RANGE-1} */
  543. X
  544. X#define Code(c) code_array[c]
  545. X#define Invcode(code) invcode_array[code]
  546. END_OF_FILE
  547.   if test 314 -ne `wc -c <'abc/ehdrs/code.h'`; then
  548.     echo shar: \"'abc/ehdrs/code.h'\" unpacked with wrong size!
  549.   fi
  550.   # end of 'abc/ehdrs/code.h'
  551. fi
  552. if test -f 'abc/ehdrs/gram.h' -a "${1}" != "-c" ; then 
  553.   echo shar: Will not clobber existing file \"'abc/ehdrs/gram.h'\"
  554. else
  555.   echo shar: Extracting \"'abc/ehdrs/gram.h'\" \(539 characters\)
  556.   sed "s/^X//" >'abc/ehdrs/gram.h' <<'END_OF_FILE'
  557. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  558. X
  559. X/*
  560. X * Routines defined in "gram.c".
  561. X */
  562. X
  563. Xstring *noderepr();
  564. Xnode gram();
  565. Xnode suggestion();
  566. Xnode variable();
  567. Xstring symname();
  568. Xbool allows_colon();
  569. X
  570. X/*
  571. X * Macros for oft-used functions.
  572. X */
  573. X
  574. X#define Fwidth(str) ((str) ? fwidth(str) : 0)
  575. X
  576. X#define Fw_zero(str) (!(str) || strchr("\b\t", (str)[0]))
  577. X#define Fw_positive(str) ((str) && (str)[0] >= ' ')
  578. X#define Fw_negative(str) ((str) && (str)[0] == '\n')
  579. X
  580. X#define MAXNBUILTIN 50    /* should be calculated by boot/mktable */
  581. END_OF_FILE
  582.   if test 539 -ne `wc -c <'abc/ehdrs/gram.h'`; then
  583.     echo shar: \"'abc/ehdrs/gram.h'\" unpacked with wrong size!
  584.   fi
  585.   # end of 'abc/ehdrs/gram.h'
  586. fi
  587. if test -f 'abc/ehdrs/queu.h' -a "${1}" != "-c" ; then 
  588.   echo shar: Will not clobber existing file \"'abc/ehdrs/queu.h'\"
  589. else
  590.   echo shar: Extracting \"'abc/ehdrs/queu.h'\" \(408 characters\)
  591.   sed "s/^X//" >'abc/ehdrs/queu.h' <<'END_OF_FILE'
  592. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  593. X
  594. X/*
  595. X * B editor -- Definitions for queues of nodes.
  596. X */
  597. X
  598. Xtypedef struct queue *queue;
  599. X
  600. Xstruct queue {
  601. X    HEADER;
  602. X    node q_data;
  603. X    queue q_link;
  604. X};
  605. X
  606. X#define Qnil ((queue) Vnil)
  607. X#ifdef lint
  608. Xqueue qcopy();
  609. Xqrelease();
  610. X#else
  611. X#define qcopy(q) ((queue)copy(q))
  612. X#define qrelease(q) release(q)
  613. X#endif
  614. X#define emptyqueue(q) (!(q))
  615. X
  616. Xnode queuebehead();
  617. END_OF_FILE
  618.   if test 408 -ne `wc -c <'abc/ehdrs/queu.h'`; then
  619.     echo shar: \"'abc/ehdrs/queu.h'\" unpacked with wrong size!
  620.   fi
  621.   # end of 'abc/ehdrs/queu.h'
  622. fi
  623. if test -f 'abc/ex/DoExamples' -a "${1}" != "-c" ; then 
  624.   echo shar: Will not clobber existing file \"'abc/ex/DoExamples'\"
  625. else
  626.   echo shar: Extracting \"'abc/ex/DoExamples'\" \(587 characters\)
  627.   sed "s/^X//" >'abc/ex/DoExamples' <<'END_OF_FILE'
  628. XWS='generate hanoi pi xref'
  629. X
  630. Xcase $1 in
  631. Xlocal)    abc=../abc;;
  632. X*)    abc=abc;;
  633. Xesac
  634. X
  635. Xfor ws in $WS
  636. Xdo
  637. X    echo " "
  638. X    echo "Testing $ws example ..."
  639. X    echo " "
  640. X    $abc -W `pwd` -w $ws <$ws.in | tee out
  641. X    echo " "
  642. X    if cmp -s out $ws.out
  643. X    then
  644. X        echo "... $ws example OK ..."
  645. X    else
  646. X        echo "... $ws example NOT OK ..."
  647. X        echo "Differences: <is >should-be"
  648. X        diff out $ws.out
  649. X    fi
  650. X    echo " "
  651. X    echo "... $ws example done"
  652. Xdone
  653. X
  654. Xecho " "
  655. Xcase $1 in
  656. Xlocal)    echo "If all examples were OK, try the ABC editor with 'make try_editor'.";;
  657. X*)    echo "If all examples were OK, try the ABC editor with TryEditor.";;
  658. Xesac
  659. END_OF_FILE
  660.   if test 587 -ne `wc -c <'abc/ex/DoExamples'`; then
  661.     echo shar: \"'abc/ex/DoExamples'\" unpacked with wrong size!
  662.   fi
  663.   chmod +x 'abc/ex/DoExamples'
  664.   # end of 'abc/ex/DoExamples'
  665. fi
  666. if test -f 'abc/ex/generate.in' -a "${1}" != "-c" ; then 
  667.   echo shar: Will not clobber existing file \"'abc/ex/generate.in'\"
  668. else
  669.   echo shar: Extracting \"'abc/ex/generate.in'\" \(123 characters\)
  670.   sed "s/^X//" >'abc/ex/generate.in' <<'END_OF_FILE'
  671. XSTART
  672. XMary had a little lamb,
  673. XIts fleece was white as snow,
  674. XAnd everywhere that Mary went,
  675. XThat lamb was sure to go.
  676. X
  677. X\EOF
  678. END_OF_FILE
  679.   if test 123 -ne `wc -c <'abc/ex/generate.in'`; then
  680.     echo shar: \"'abc/ex/generate.in'\" unpacked with wrong size!
  681.   fi
  682.   # end of 'abc/ex/generate.in'
  683. fi
  684. if test -f 'abc/ex/generate/analyze.cmd' -a "${1}" != "-c" ; then 
  685.   echo shar: Will not clobber existing file \"'abc/ex/generate/analyze.cmd'\"
  686. else
  687.   echo shar: Extracting \"'abc/ex/generate/analyze.cmd'\" \(361 characters\)
  688.   sed "s/^X//" >'abc/ex/generate/analyze.cmd' <<'END_OF_FILE'
  689. XHOW TO ANALYZE line:
  690. X   SHARE followers, starters, enders
  691. X   IF #line>2:
  692. X      PUT line item 1, line item 2 IN c1, c2
  693. X      INSERT c1, c2 IN starters
  694. X      INSERT line@#line IN enders
  695. X      FOR c3 IN line@3:
  696. X         IF (c1, c2) not.in keys followers:
  697. X            PUT {} IN followers[c1,c2]
  698. X         INSERT c3 IN followers[c1, c2]
  699. X         PUT c2, c3 IN c1, c2
  700. END_OF_FILE
  701.   if test 361 -ne `wc -c <'abc/ex/generate/analyze.cmd'`; then
  702.     echo shar: \"'abc/ex/generate/analyze.cmd'\" unpacked with wrong size!
  703.   fi
  704.   # end of 'abc/ex/generate/analyze.cmd'
  705. fi
  706. if test -f 'abc/ex/generate/enders.cts' -a "${1}" != "-c" ; then 
  707.   echo shar: Will not clobber existing file \"'abc/ex/generate/enders.cts'\"
  708. else
  709.   echo shar: Extracting \"'abc/ex/generate/enders.cts'\" \(21 characters\)
  710.   sed "s/^X//" >'abc/ex/generate/enders.cts' <<'END_OF_FILE'
  711. X{","; ","; ","; "."}
  712. END_OF_FILE
  713.   if test 21 -ne `wc -c <'abc/ex/generate/enders.cts'`; then
  714.     echo shar: \"'abc/ex/generate/enders.cts'\" unpacked with wrong size!
  715.   fi
  716.   # end of 'abc/ex/generate/enders.cts'
  717. fi
  718. if test -f 'abc/ex/generate/fill.cmd' -a "${1}" != "-c" ; then 
  719.   echo shar: Will not clobber existing file \"'abc/ex/generate/fill.cmd'\"
  720. else
  721.   echo shar: Extracting \"'abc/ex/generate/fill.cmd'\" \(107 characters\)
  722.   sed "s/^X//" >'abc/ex/generate/fill.cmd' <<'END_OF_FILE'
  723. XHOW TO FILL text:
  724. X   READ line RAW
  725. X   WHILE line > '':
  726. X      PUT line IN text[#text+1]
  727. X      READ line RAW
  728. END_OF_FILE
  729.   if test 107 -ne `wc -c <'abc/ex/generate/fill.cmd'`; then
  730.     echo shar: \"'abc/ex/generate/fill.cmd'\" unpacked with wrong size!
  731.   fi
  732.   # end of 'abc/ex/generate/fill.cmd'
  733. fi
  734. if test -f 'abc/ex/generate/generate.cmd' -a "${1}" != "-c" ; then 
  735.   echo shar: Will not clobber existing file \"'abc/ex/generate/generate.cmd'\"
  736. else
  737.   echo shar: Extracting \"'abc/ex/generate/generate.cmd'\" \(223 characters\)
  738.   sed "s/^X//" >'abc/ex/generate/generate.cmd' <<'END_OF_FILE'
  739. XHOW TO GENERATE:
  740. X   SHARE followers, starters, enders
  741. X   PUT choice starters IN c1, c2
  742. X   WRITE c1^c2
  743. X   WHILE c2 not.in enders:
  744. X      PUT choice followers[c1, c2] IN c3
  745. X      WRITE c3
  746. X      PUT c2, c3 IN c1, c2
  747. X   WRITE /
  748. END_OF_FILE
  749.   if test 223 -ne `wc -c <'abc/ex/generate/generate.cmd'`; then
  750.     echo shar: \"'abc/ex/generate/generate.cmd'\" unpacked with wrong size!
  751.   fi
  752.   # end of 'abc/ex/generate/generate.cmd'
  753. fi
  754. if test -f 'abc/ex/generate/perm.abc' -a "${1}" != "-c" ; then 
  755.   echo shar: Will not clobber existing file \"'abc/ex/generate/perm.abc'\"
  756. else
  757.   echo shar: Extracting \"'abc/ex/generate/perm.abc'\" \(204 characters\)
  758.   sed "s/^X//" >'abc/ex/generate/perm.abc' <<'END_OF_FILE'
  759. X{["1ANALYZE"]:"analyze.cmd";["1FILL"]:"fill.cmd";["1GENERATE"]:"generate.cmd";["1START"]:"start.cmd";["8enders"]:"enders.cts";["8followers"]:"follower.cts";["8starters"]:"starters.cts";[":"]:"1GENERATE"}
  760. END_OF_FILE
  761.   if test 204 -ne `wc -c <'abc/ex/generate/perm.abc'`; then
  762.     echo shar: \"'abc/ex/generate/perm.abc'\" unpacked with wrong size!
  763.   fi
  764.   # end of 'abc/ex/generate/perm.abc'
  765. fi
  766. if test -f 'abc/ex/generate/start.cmd' -a "${1}" != "-c" ; then 
  767.   echo shar: Will not clobber existing file \"'abc/ex/generate/start.cmd'\"
  768. else
  769.   echo shar: Extracting \"'abc/ex/generate/start.cmd'\" \(314 characters\)
  770.   sed "s/^X//" >'abc/ex/generate/start.cmd' <<'END_OF_FILE'
  771. XHOW TO START:
  772. X   SHARE followers, starters, enders
  773. X   PUT {}, {}, {} IN followers, starters, enders
  774. X   SET RANDOM 'Do sample.'
  775. X   READ line RAW
  776. X   WRITE line /
  777. X   WHILE line <> '':
  778. X      ANALYZE line
  779. X      READ line RAW
  780. X      WRITE line /
  781. X   FOR i IN {1..3}:
  782. X      FOR j IN {1..4}:
  783. X         GENERATE
  784. X      WRITE /
  785. END_OF_FILE
  786.   if test 314 -ne `wc -c <'abc/ex/generate/start.cmd'`; then
  787.     echo shar: \"'abc/ex/generate/start.cmd'\" unpacked with wrong size!
  788.   fi
  789.   # end of 'abc/ex/generate/start.cmd'
  790. fi
  791. if test -f 'abc/ex/generate/starters.cts' -a "${1}" != "-c" ; then 
  792.   echo shar: Will not clobber existing file \"'abc/ex/generate/starters.cts'\"
  793. else
  794.   echo shar: Extracting \"'abc/ex/generate/starters.cts'\" \(45 characters\)
  795.   sed "s/^X//" >'abc/ex/generate/starters.cts' <<'END_OF_FILE'
  796. X{("A","n"); ("I","t"); ("M","a"); ("T","h")}
  797. END_OF_FILE
  798.   if test 45 -ne `wc -c <'abc/ex/generate/starters.cts'`; then
  799.     echo shar: \"'abc/ex/generate/starters.cts'\" unpacked with wrong size!
  800.   fi
  801.   # end of 'abc/ex/generate/starters.cts'
  802. fi
  803. if test -f 'abc/ex/generate/suggest.abc' -a "${1}" != "-c" ; then 
  804.   echo shar: Will not clobber existing file \"'abc/ex/generate/suggest.abc'\"
  805. else
  806.   echo shar: Extracting \"'abc/ex/generate/suggest.abc'\" \(32 characters\)
  807.   sed "s/^X//" >'abc/ex/generate/suggest.abc' <<'END_OF_FILE'
  808. XANALYZE ?
  809. XFILL ?
  810. XGENERATE
  811. XSTART
  812. END_OF_FILE
  813.   if test 32 -ne `wc -c <'abc/ex/generate/suggest.abc'`; then
  814.     echo shar: \"'abc/ex/generate/suggest.abc'\" unpacked with wrong size!
  815.   fi
  816.   # end of 'abc/ex/generate/suggest.abc'
  817. fi
  818. if test -f 'abc/ex/hanoi.in' -a "${1}" != "-c" ; then 
  819.   echo shar: Will not clobber existing file \"'abc/ex/hanoi.in'\"
  820. else
  821.   echo shar: Extracting \"'abc/ex/hanoi.in'\" \(8 characters\)
  822.   sed "s/^X//" >'abc/ex/hanoi.in' <<'END_OF_FILE'
  823. XHANOI 3
  824. END_OF_FILE
  825.   if test 8 -ne `wc -c <'abc/ex/hanoi.in'`; then
  826.     echo shar: \"'abc/ex/hanoi.in'\" unpacked with wrong size!
  827.   fi
  828.   # end of 'abc/ex/hanoi.in'
  829. fi
  830. if test -f 'abc/ex/hanoi.out' -a "${1}" != "-c" ; then 
  831.   echo shar: Will not clobber existing file \"'abc/ex/hanoi.out'\"
  832. else
  833.   echo shar: Extracting \"'abc/ex/hanoi.out'\" \(175 characters\)
  834.   sed "s/^X//" >'abc/ex/hanoi.out' <<'END_OF_FILE'
  835. XMove piece 1 from 1 to 2
  836. XMove piece 2 from 1 to 3
  837. XMove piece 1 from 2 to 3
  838. XMove piece 3 from 1 to 2
  839. XMove piece 1 from 3 to 1
  840. XMove piece 2 from 3 to 2
  841. XMove piece 1 from 1 to 2
  842. END_OF_FILE
  843.   if test 175 -ne `wc -c <'abc/ex/hanoi.out'`; then
  844.     echo shar: \"'abc/ex/hanoi.out'\" unpacked with wrong size!
  845.   fi
  846.   # end of 'abc/ex/hanoi.out'
  847. fi
  848. if test -f 'abc/ex/hanoi/hanoi.cmd' -a "${1}" != "-c" ; then 
  849.   echo shar: Will not clobber existing file \"'abc/ex/hanoi/hanoi.cmd'\"
  850. else
  851.   echo shar: Extracting \"'abc/ex/hanoi/hanoi.cmd'\" \(490 characters\)
  852.   sed "s/^X//" >'abc/ex/hanoi/hanoi.cmd' <<'END_OF_FILE'
  853. XHOW TO HANOI n:
  854. X   INITIALISE
  855. X   FOR i IN {1..(2**n)-1}:
  856. X      SELECT.PROCESS
  857. X      WRITE 'Move piece', piece, 'from', from, 'to', to /
  858. X      RE.SCHEDULE
  859. XINITIALISE:
  860. X   PUT {} IN process
  861. X   FOR i IN {1..n}:
  862. X      INSERT 2**(i-1), i, 1, (-1)**(i+n), 2**i IN process
  863. XSELECT.PROCESS:
  864. X   PUT min process IN time, piece, from, direction, wait
  865. X   REMOVE min process FROM process
  866. XRE.SCHEDULE:
  867. X   INSERT time+wait, piece, to, direction, wait IN process
  868. Xto:
  869. X   RETURN ((from+direction-1) mod 3) + 1
  870. END_OF_FILE
  871.   if test 490 -ne `wc -c <'abc/ex/hanoi/hanoi.cmd'`; then
  872.     echo shar: \"'abc/ex/hanoi/hanoi.cmd'\" unpacked with wrong size!
  873.   fi
  874.   # end of 'abc/ex/hanoi/hanoi.cmd'
  875. fi
  876. if test -f 'abc/ex/hanoi/perm.abc' -a "${1}" != "-c" ; then 
  877.   echo shar: Will not clobber existing file \"'abc/ex/hanoi/perm.abc'\"
  878. else
  879.   echo shar: Extracting \"'abc/ex/hanoi/perm.abc'\" \(25 characters\)
  880.   sed "s/^X//" >'abc/ex/hanoi/perm.abc' <<'END_OF_FILE'
  881. X{["1HANOI"]:"hanoi.cmd"}
  882. END_OF_FILE
  883.   if test 25 -ne `wc -c <'abc/ex/hanoi/perm.abc'`; then
  884.     echo shar: \"'abc/ex/hanoi/perm.abc'\" unpacked with wrong size!
  885.   fi
  886.   # end of 'abc/ex/hanoi/perm.abc'
  887. fi
  888. if test -f 'abc/ex/pi.in' -a "${1}" != "-c" ; then 
  889.   echo shar: Will not clobber existing file \"'abc/ex/pi.in'\"
  890. else
  891.   echo shar: Extracting \"'abc/ex/pi.in'\" \(6 characters\)
  892.   sed "s/^X//" >'abc/ex/pi.in' <<'END_OF_FILE'
  893. XPI 20
  894. END_OF_FILE
  895.   if test 6 -ne `wc -c <'abc/ex/pi.in'`; then
  896.     echo shar: \"'abc/ex/pi.in'\" unpacked with wrong size!
  897.   fi
  898.   # end of 'abc/ex/pi.in'
  899. fi
  900. if test -f 'abc/ex/pi.out' -a "${1}" != "-c" ; then 
  901.   echo shar: Will not clobber existing file \"'abc/ex/pi.out'\"
  902. else
  903.   echo shar: Extracting \"'abc/ex/pi.out'\" \(23 characters\)
  904.   sed "s/^X//" >'abc/ex/pi.out' <<'END_OF_FILE'
  905. X3.14159265358979323846
  906. END_OF_FILE
  907.   if test 23 -ne `wc -c <'abc/ex/pi.out'`; then
  908.     echo shar: \"'abc/ex/pi.out'\" unpacked with wrong size!
  909.   fi
  910.   # end of 'abc/ex/pi.out'
  911. fi
  912. if test -f 'abc/ex/pi/perm.abc' -a "${1}" != "-c" ; then 
  913.   echo shar: Will not clobber existing file \"'abc/ex/pi/perm.abc'\"
  914. else
  915.   echo shar: Extracting \"'abc/ex/pi/perm.abc'\" \(19 characters\)
  916.   sed "s/^X//" >'abc/ex/pi/perm.abc' <<'END_OF_FILE'
  917. X{["1PI"]:"pi.cmd"}
  918. END_OF_FILE
  919.   if test 19 -ne `wc -c <'abc/ex/pi/perm.abc'`; then
  920.     echo shar: \"'abc/ex/pi/perm.abc'\" unpacked with wrong size!
  921.   fi
  922.   # end of 'abc/ex/pi/perm.abc'
  923. fi
  924. if test -f 'abc/ex/pi/pi.cmd' -a "${1}" != "-c" ; then 
  925.   echo shar: Will not clobber existing file \"'abc/ex/pi/pi.cmd'\"
  926. else
  927.   echo shar: Extracting \"'abc/ex/pi/pi.cmd'\" \(458 characters\)
  928.   sed "s/^X//" >'abc/ex/pi/pi.cmd' <<'END_OF_FILE'
  929. XHOW TO PI n':
  930. X   \Print the first n places of pi. a, b, c and d get very large.
  931. X   WRITE '3.'
  932. X   PUT n' IN n
  933. X   PUT 3, 0, 40, 4, 24, 0, 1 IN k, a, b, c, d, e, f
  934. X   WHILE n>0:
  935. X      WHILE e=f AND n>0:
  936. X         WRITE e<<1
  937. X         PUT n-1 IN n
  938. X         PUT 10*(a-e*c), 10*(b-f*d) IN a, b
  939. X         PUT floor(a/c), floor(b/d) IN e, f
  940. X      PUT k**2, 2*k+1, k+1 IN p, q, k
  941. X      PUT b, p*a+q*b, d, p*c+q*d IN a, b, c, d
  942. X      PUT f, floor(b/d) IN e, f
  943. X   WRITE /
  944. END_OF_FILE
  945.   if test 458 -ne `wc -c <'abc/ex/pi/pi.cmd'`; then
  946.     echo shar: \"'abc/ex/pi/pi.cmd'\" unpacked with wrong size!
  947.   fi
  948.   # end of 'abc/ex/pi/pi.cmd'
  949. fi
  950. if test -f 'abc/ex/pi/suggest.abc' -a "${1}" != "-c" ; then 
  951.   echo shar: Will not clobber existing file \"'abc/ex/pi/suggest.abc'\"
  952. else
  953.   echo shar: Extracting \"'abc/ex/pi/suggest.abc'\" \(5 characters\)
  954.   sed "s/^X//" >'abc/ex/pi/suggest.abc' <<'END_OF_FILE'
  955. XPI ?
  956. END_OF_FILE
  957.   if test 5 -ne `wc -c <'abc/ex/pi/suggest.abc'`; then
  958.     echo shar: \"'abc/ex/pi/suggest.abc'\" unpacked with wrong size!
  959.   fi
  960.   # end of 'abc/ex/pi/suggest.abc'
  961. fi
  962. if test -f 'abc/ex/try/analyze.cmd' -a "${1}" != "-c" ; then 
  963.   echo shar: Will not clobber existing file \"'abc/ex/try/analyze.cmd'\"
  964. else
  965.   echo shar: Extracting \"'abc/ex/try/analyze.cmd'\" \(361 characters\)
  966.   sed "s/^X//" >'abc/ex/try/analyze.cmd' <<'END_OF_FILE'
  967. XHOW TO ANALYZE line:
  968. X   SHARE followers, starters, enders
  969. X   IF #line>2:
  970. X      PUT line item 1, line item 2 IN c1, c2
  971. X      INSERT c1, c2 IN starters
  972. X      INSERT line@#line IN enders
  973. X      FOR c3 IN line@3:
  974. X         IF (c1, c2) not.in keys followers:
  975. X            PUT {} IN followers[c1,c2]
  976. X         INSERT c3 IN followers[c1, c2]
  977. X         PUT c2, c3 IN c1, c2
  978. END_OF_FILE
  979.   if test 361 -ne `wc -c <'abc/ex/try/analyze.cmd'`; then
  980.     echo shar: \"'abc/ex/try/analyze.cmd'\" unpacked with wrong size!
  981.   fi
  982.   # end of 'abc/ex/try/analyze.cmd'
  983. fi
  984. if test -f 'abc/ex/try/enders.cts' -a "${1}" != "-c" ; then 
  985.   echo shar: Will not clobber existing file \"'abc/ex/try/enders.cts'\"
  986. else
  987.   echo shar: Extracting \"'abc/ex/try/enders.cts'\" \(21 characters\)
  988.   sed "s/^X//" >'abc/ex/try/enders.cts' <<'END_OF_FILE'
  989. X{"."; "."; "."; "."}
  990. END_OF_FILE
  991.   if test 21 -ne `wc -c <'abc/ex/try/enders.cts'`; then
  992.     echo shar: \"'abc/ex/try/enders.cts'\" unpacked with wrong size!
  993.   fi
  994.   # end of 'abc/ex/try/enders.cts'
  995. fi
  996. if test -f 'abc/ex/try/fill.cmd' -a "${1}" != "-c" ; then 
  997.   echo shar: Will not clobber existing file \"'abc/ex/try/fill.cmd'\"
  998. else
  999.   echo shar: Extracting \"'abc/ex/try/fill.cmd'\" \(107 characters\)
  1000.   sed "s/^X//" >'abc/ex/try/fill.cmd' <<'END_OF_FILE'
  1001. XHOW TO FILL text:
  1002. X   READ line RAW
  1003. X   WHILE line > '':
  1004. X      PUT line IN text[#text+1]
  1005. X      READ line RAW
  1006. END_OF_FILE
  1007.   if test 107 -ne `wc -c <'abc/ex/try/fill.cmd'`; then
  1008.     echo shar: \"'abc/ex/try/fill.cmd'\" unpacked with wrong size!
  1009.   fi
  1010.   # end of 'abc/ex/try/fill.cmd'
  1011. fi
  1012. if test -f 'abc/ex/try/generate.cmd' -a "${1}" != "-c" ; then 
  1013.   echo shar: Will not clobber existing file \"'abc/ex/try/generate.cmd'\"
  1014. else
  1015.   echo shar: Extracting \"'abc/ex/try/generate.cmd'\" \(223 characters\)
  1016.   sed "s/^X//" >'abc/ex/try/generate.cmd' <<'END_OF_FILE'
  1017. XHOW TO GENERATE:
  1018. X   SHARE followers, starters, enders
  1019. X   PUT choice starters IN c1, c2
  1020. X   WRITE c1^c2
  1021. X   WHILE c2 not.in enders:
  1022. X      PUT choice followers[c1, c2] IN c3
  1023. X      WRITE c3
  1024. X      PUT c2, c3 IN c1, c2
  1025. X   WRITE /
  1026. END_OF_FILE
  1027.   if test 223 -ne `wc -c <'abc/ex/try/generate.cmd'`; then
  1028.     echo shar: \"'abc/ex/try/generate.cmd'\" unpacked with wrong size!
  1029.   fi
  1030.   # end of 'abc/ex/try/generate.cmd'
  1031. fi
  1032. if test -f 'abc/ex/try/perm.abc' -a "${1}" != "-c" ; then 
  1033.   echo shar: Will not clobber existing file \"'abc/ex/try/perm.abc'\"
  1034. else
  1035.   echo shar: Extracting \"'abc/ex/try/perm.abc'\" \(201 characters\)
  1036.   sed "s/^X//" >'abc/ex/try/perm.abc' <<'END_OF_FILE'
  1037. X{["1ANALYZE"]:"analyze.cmd";["1FILL"]:"fill.cmd";["1GENERATE"]:"generate.cmd";["1START"]:"start.cmd";["8enders"]:"enders.cts";["8followers"]:"follower.cts";["8starters"]:"starters.cts";[":"]:"1START"}
  1038. END_OF_FILE
  1039.   if test 201 -ne `wc -c <'abc/ex/try/perm.abc'`; then
  1040.     echo shar: \"'abc/ex/try/perm.abc'\" unpacked with wrong size!
  1041.   fi
  1042.   # end of 'abc/ex/try/perm.abc'
  1043. fi
  1044. if test -f 'abc/ex/try/start.cmd' -a "${1}" != "-c" ; then 
  1045.   echo shar: Will not clobber existing file \"'abc/ex/try/start.cmd'\"
  1046. else
  1047.   echo shar: Extracting \"'abc/ex/try/start.cmd'\" \(314 characters\)
  1048.   sed "s/^X//" >'abc/ex/try/start.cmd' <<'END_OF_FILE'
  1049. XHOW TO START:
  1050. X   SHARE followers, starters, enders
  1051. X   PUT {}, {}, {} IN followers, starters, enders
  1052. X   SET RANDOM 'Do sample.'
  1053. X   READ line RAW
  1054. X   WRITE line /
  1055. X   WHILE line <> '':
  1056. X      ANALYZE line
  1057. X      READ line RAW
  1058. X      WRITE line /
  1059. X   FOR i IN {1..3}:
  1060. X      FOR j IN {1..4}:
  1061. X         GENERATE
  1062. X      WRITE /
  1063. END_OF_FILE
  1064.   if test 314 -ne `wc -c <'abc/ex/try/start.cmd'`; then
  1065.     echo shar: \"'abc/ex/try/start.cmd'\" unpacked with wrong size!
  1066.   fi
  1067.   # end of 'abc/ex/try/start.cmd'
  1068. fi
  1069. if test -f 'abc/ex/try/starters.cts' -a "${1}" != "-c" ; then 
  1070.   echo shar: Will not clobber existing file \"'abc/ex/try/starters.cts'\"
  1071. else
  1072.   echo shar: Extracting \"'abc/ex/try/starters.cts'\" \(45 characters\)
  1073.   sed "s/^X//" >'abc/ex/try/starters.cts' <<'END_OF_FILE'
  1074. X{("a","b"); ("d","a"); ("m","a"); ("v","o")}
  1075. END_OF_FILE
  1076.   if test 45 -ne `wc -c <'abc/ex/try/starters.cts'`; then
  1077.     echo shar: \"'abc/ex/try/starters.cts'\" unpacked with wrong size!
  1078.   fi
  1079.   # end of 'abc/ex/try/starters.cts'
  1080. fi
  1081. if test -f 'abc/ex/try/suggest.abc' -a "${1}" != "-c" ; then 
  1082.   echo shar: Will not clobber existing file \"'abc/ex/try/suggest.abc'\"
  1083. else
  1084.   echo shar: Extracting \"'abc/ex/try/suggest.abc'\" \(32 characters\)
  1085.   sed "s/^X//" >'abc/ex/try/suggest.abc' <<'END_OF_FILE'
  1086. XANALYZE ?
  1087. XFILL ?
  1088. XGENERATE
  1089. XSTART
  1090. END_OF_FILE
  1091.   if test 32 -ne `wc -c <'abc/ex/try/suggest.abc'`; then
  1092.     echo shar: \"'abc/ex/try/suggest.abc'\" unpacked with wrong size!
  1093.   fi
  1094.   # end of 'abc/ex/try/suggest.abc'
  1095. fi
  1096. if test -f 'abc/ex/xref.in' -a "${1}" != "-c" ; then 
  1097.   echo shar: Will not clobber existing file \"'abc/ex/xref.in'\"
  1098. else
  1099.   echo shar: Extracting \"'abc/ex/xref.in'\" \(158 characters\)
  1100.   sed "s/^X//" >'abc/ex/xref.in' <<'END_OF_FILE'
  1101. XPUT {} IN text
  1102. XPUT 'Now is the time' IN text[1]
  1103. XPUT 'for all good men' IN text[2]
  1104. XPUT 'to come to the aid' IN text[3]
  1105. XPUT 'of the party' IN text[4]
  1106. XXREF text
  1107. END_OF_FILE
  1108.   if test 158 -ne `wc -c <'abc/ex/xref.in'`; then
  1109.     echo shar: \"'abc/ex/xref.in'\" unpacked with wrong size!
  1110.   fi
  1111.   # end of 'abc/ex/xref.in'
  1112. fi
  1113. if test -f 'abc/ex/xref.out' -a "${1}" != "-c" ; then 
  1114.   echo shar: Will not clobber existing file \"'abc/ex/xref.out'\"
  1115. else
  1116.   echo shar: Extracting \"'abc/ex/xref.out'\" \(223 characters\)
  1117.   sed "s/^X//" >'abc/ex/xref.out' <<'END_OF_FILE'
  1118. XNow          1 
  1119. Xaid          3 
  1120. Xall          2 
  1121. Xcome         3 
  1122. Xfor          2 
  1123. Xgood         2 
  1124. Xis           1 
  1125. Xmen          2 
  1126. Xof           4 
  1127. Xparty        4 
  1128. Xthe          1    3    4 
  1129. Xtime         1 
  1130. Xto           3    3 
  1131. END_OF_FILE
  1132.   if test 223 -ne `wc -c <'abc/ex/xref.out'`; then
  1133.     echo shar: \"'abc/ex/xref.out'\" unpacked with wrong size!
  1134.   fi
  1135.   # end of 'abc/ex/xref.out'
  1136. fi
  1137. if test -f 'abc/ex/xref/alphabet.mpd' -a "${1}" != "-c" ; then 
  1138.   echo shar: Will not clobber existing file \"'abc/ex/xref/alphabet.mpd'\"
  1139. else
  1140.   echo shar: Extracting \"'abc/ex/xref/alphabet.mpd'\" \(82 characters\)
  1141.   sed "s/^X//" >'abc/ex/xref/alphabet.mpd' <<'END_OF_FILE'
  1142. XHOW TO REPORT alphabetic char:
  1143. X   REPORT char in {'a'..'z'} OR char in {'A'..'Z'}
  1144. END_OF_FILE
  1145.   if test 82 -ne `wc -c <'abc/ex/xref/alphabet.mpd'`; then
  1146.     echo shar: \"'abc/ex/xref/alphabet.mpd'\" unpacked with wrong size!
  1147.   fi
  1148.   # end of 'abc/ex/xref/alphabet.mpd'
  1149. fi
  1150. if test -f 'abc/ex/xref/output.cmd' -a "${1}" != "-c" ; then 
  1151.   echo shar: Will not clobber existing file \"'abc/ex/xref/output.cmd'\"
  1152. else
  1153.   echo shar: Extracting \"'abc/ex/xref/output.cmd'\" \(139 characters\)
  1154.   sed "s/^X//" >'abc/ex/xref/output.cmd' <<'END_OF_FILE'
  1155. XHOW TO OUTPUT xtab:
  1156. X   FOR word IN keys xtab:
  1157. X      WRITE word<<10
  1158. X      FOR line IN xtab[word]:
  1159. X         WRITE line>>4, ' '
  1160. X      WRITE /
  1161. END_OF_FILE
  1162.   if test 139 -ne `wc -c <'abc/ex/xref/output.cmd'`; then
  1163.     echo shar: \"'abc/ex/xref/output.cmd'\" unpacked with wrong size!
  1164.   fi
  1165.   # end of 'abc/ex/xref/output.cmd'
  1166. fi
  1167. if test -f 'abc/ex/xref/perm.abc' -a "${1}" != "-c" ; then 
  1168.   echo shar: Will not clobber existing file \"'abc/ex/xref/perm.abc'\"
  1169. else
  1170.   echo shar: Extracting \"'abc/ex/xref/perm.abc'\" \(180 characters\)
  1171.   sed "s/^X//" >'abc/ex/xref/perm.abc' <<'END_OF_FILE'
  1172. X{["1OUTPUT"]:"output.cmd";["1SAVE"]:"save.cmd";["1XREF"]:"xref.cmd";["3words"]:"words.mfd";["6alphabetic"]:"alphabet.mpd";["8text"]:"text.cts";["8xtab"]:"xtab.cts";[":"]:"3words"}
  1173. END_OF_FILE
  1174.   if test 180 -ne `wc -c <'abc/ex/xref/perm.abc'`; then
  1175.     echo shar: \"'abc/ex/xref/perm.abc'\" unpacked with wrong size!
  1176.   fi
  1177.   # end of 'abc/ex/xref/perm.abc'
  1178. fi
  1179. if test -f 'abc/ex/xref/save.cmd' -a "${1}" != "-c" ; then 
  1180.   echo shar: Will not clobber existing file \"'abc/ex/xref/save.cmd'\"
  1181. else
  1182.   echo shar: Extracting \"'abc/ex/xref/save.cmd'\" \(125 characters\)
  1183.   sed "s/^X//" >'abc/ex/xref/save.cmd' <<'END_OF_FILE'
  1184. XHOW TO SAVE word AT line:
  1185. X   SHARE xtab
  1186. X   IF word not.in keys xtab:
  1187. X      PUT {} IN xtab[word]
  1188. X   INSERT line IN xtab[word]
  1189. END_OF_FILE
  1190.   if test 125 -ne `wc -c <'abc/ex/xref/save.cmd'`; then
  1191.     echo shar: \"'abc/ex/xref/save.cmd'\" unpacked with wrong size!
  1192.   fi
  1193.   # end of 'abc/ex/xref/save.cmd'
  1194. fi
  1195. if test -f 'abc/ex/xref/suggest.abc' -a "${1}" != "-c" ; then 
  1196.   echo shar: Will not clobber existing file \"'abc/ex/xref/suggest.abc'\"
  1197. else
  1198.   echo shar: Extracting \"'abc/ex/xref/suggest.abc'\" \(28 characters\)
  1199.   sed "s/^X//" >'abc/ex/xref/suggest.abc' <<'END_OF_FILE'
  1200. XOUTPUT ?
  1201. XSAVE ? AT ?
  1202. XXREF ?
  1203. END_OF_FILE
  1204.   if test 28 -ne `wc -c <'abc/ex/xref/suggest.abc'`; then
  1205.     echo shar: \"'abc/ex/xref/suggest.abc'\" unpacked with wrong size!
  1206.   fi
  1207.   # end of 'abc/ex/xref/suggest.abc'
  1208. fi
  1209. if test -f 'abc/ex/xref/text.cts' -a "${1}" != "-c" ; then 
  1210.   echo shar: Will not clobber existing file \"'abc/ex/xref/text.cts'\"
  1211. else
  1212.   echo shar: Extracting \"'abc/ex/xref/text.cts'\" \(91 characters\)
  1213.   sed "s/^X//" >'abc/ex/xref/text.cts' <<'END_OF_FILE'
  1214. X{[1]:"Now is the time";[2]:"for all good men";[3]:"to come to the aid";[4]:"of the party"}
  1215. END_OF_FILE
  1216.   if test 91 -ne `wc -c <'abc/ex/xref/text.cts'`; then
  1217.     echo shar: \"'abc/ex/xref/text.cts'\" unpacked with wrong size!
  1218.   fi
  1219.   # end of 'abc/ex/xref/text.cts'
  1220. fi
  1221. if test -f 'abc/ex/xref/words.mfd' -a "${1}" != "-c" ; then 
  1222.   echo shar: Will not clobber existing file \"'abc/ex/xref/words.mfd'\"
  1223. else
  1224.   echo shar: Extracting \"'abc/ex/xref/words.mfd'\" \(370 characters\)
  1225.   sed "s/^X//" >'abc/ex/xref/words.mfd' <<'END_OF_FILE'
  1226. XHOW TO RETURN words line:
  1227. X   PUT {} IN list
  1228. X   TO.WORD.START
  1229. X   WHILE line > "":
  1230. X      PUT line|1, line@2 IN word, line
  1231. X      TO.WORD.END
  1232. X      INSERT word IN list
  1233. X      TO.WORD.START
  1234. X   RETURN list
  1235. XTO.WORD.START:
  1236. X   WHILE line > "" AND NOT alphabetic line|1:
  1237. X      PUT line@2 IN line
  1238. XTO.WORD.END:
  1239. X   WHILE alphabetic line|1:
  1240. X      PUT word^line|1, line@2 IN word, line
  1241. END_OF_FILE
  1242.   if test 370 -ne `wc -c <'abc/ex/xref/words.mfd'`; then
  1243.     echo shar: \"'abc/ex/xref/words.mfd'\" unpacked with wrong size!
  1244.   fi
  1245.   # end of 'abc/ex/xref/words.mfd'
  1246. fi
  1247. if test -f 'abc/ex/xref/xref.cmd' -a "${1}" != "-c" ; then 
  1248.   echo shar: Will not clobber existing file \"'abc/ex/xref/xref.cmd'\"
  1249. else
  1250.   echo shar: Extracting \"'abc/ex/xref/xref.cmd'\" \(177 characters\)
  1251.   sed "s/^X//" >'abc/ex/xref/xref.cmd' <<'END_OF_FILE'
  1252. XHOW TO XREF text:
  1253. X   SHARE xtab
  1254. X   PUT {} IN xtab
  1255. X   FOR line IN keys text:
  1256. X      TREAT.LINE
  1257. X   OUTPUT xtab
  1258. XTREAT.LINE:
  1259. X   FOR word IN words text[line]:
  1260. X      SAVE word AT line
  1261. END_OF_FILE
  1262.   if test 177 -ne `wc -c <'abc/ex/xref/xref.cmd'`; then
  1263.     echo shar: \"'abc/ex/xref/xref.cmd'\" unpacked with wrong size!
  1264.   fi
  1265.   # end of 'abc/ex/xref/xref.cmd'
  1266. fi
  1267. if test -f 'abc/ex/xref/xtab.cts' -a "${1}" != "-c" ; then 
  1268.   echo shar: Will not clobber existing file \"'abc/ex/xref/xtab.cts'\"
  1269. else
  1270.   echo shar: Extracting \"'abc/ex/xref/xtab.cts'\" \(169 characters\)
  1271.   sed "s/^X//" >'abc/ex/xref/xtab.cts' <<'END_OF_FILE'
  1272. X{["Now"]:{1};["aid"]:{3};["all"]:{2};["come"]:{3};["for"]:{2};["good"]:{2};["is"]:{1};["men"]:{2};["of"]:{4};["party"]:{4};["the"]:{1; 3; 4};["time"]:{1};["to"]:{3; 3}}
  1273. END_OF_FILE
  1274.   if test 169 -ne `wc -c <'abc/ex/xref/xtab.cts'`; then
  1275.     echo shar: \"'abc/ex/xref/xtab.cts'\" unpacked with wrong size!
  1276.   fi
  1277.   # end of 'abc/ex/xref/xtab.cts'
  1278. fi
  1279. if test -f 'abc/ihdrs/i2gen.h' -a "${1}" != "-c" ; then 
  1280.   echo shar: Will not clobber existing file \"'abc/ihdrs/i2gen.h'\"
  1281. else
  1282.   echo shar: Extracting \"'abc/ihdrs/i2gen.h'\" \(507 characters\)
  1283.   sed "s/^X//" >'abc/ihdrs/i2gen.h' <<'END_OF_FILE'
  1284. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  1285. X
  1286. X#define Is_node(t) ((t) != NilTree && Is_parsetree(t))
  1287. X
  1288. Xextern int nextvarnumber; /* Counts local targets (including formals) */
  1289. Xextern value locals, globals, mysteries, refinements;
  1290. Xextern string gentab[];
  1291. X
  1292. Xstruct state {
  1293. X    parsetree h_last;
  1294. X    parsetree *h_wanthere;
  1295. X    parsetree h_bpchain;
  1296. X};
  1297. X
  1298. X#define f_expr(p) fix(p, 'v') /* "evaluate" */
  1299. X#define f_targ(p) fix(p, 'l') /* "locate" */
  1300. X
  1301. Xvalue copydef();
  1302. Xbool modify_tag();
  1303. Xbool is_name();
  1304. END_OF_FILE
  1305.   if test 507 -ne `wc -c <'abc/ihdrs/i2gen.h'`; then
  1306.     echo shar: \"'abc/ihdrs/i2gen.h'\" unpacked with wrong size!
  1307.   fi
  1308.   # end of 'abc/ihdrs/i2gen.h'
  1309. fi
  1310. if test -f 'abc/ihdrs/i3bws.h' -a "${1}" != "-c" ; then 
  1311.   echo shar: Will not clobber existing file \"'abc/ihdrs/i3bws.h'\"
  1312. else
  1313.   echo shar: Extracting \"'abc/ihdrs/i3bws.h'\" \(297 characters\)
  1314.   sed "s/^X//" >'abc/ihdrs/i3bws.h' <<'END_OF_FILE'
  1315. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  1316. X
  1317. Xextern char *bwsdir;
  1318. Xextern value ws_group;
  1319. Xextern bool groupchanges;
  1320. Xextern value curwskey;
  1321. Xextern value lastwskey;
  1322. Xextern bool is_gr_reccall;
  1323. Xextern value cur_ws;
  1324. Xbool is_path();
  1325. X#ifdef WSP_DIRNAME
  1326. Xvalue abc_wsname();
  1327. X#endif
  1328. END_OF_FILE
  1329.   if test 297 -ne `wc -c <'abc/ihdrs/i3bws.h'`; then
  1330.     echo shar: \"'abc/ihdrs/i3bws.h'\" unpacked with wrong size!
  1331.   fi
  1332.   # end of 'abc/ihdrs/i3bws.h'
  1333. fi
  1334. if test -f 'abc/ihdrs/i3in2.h' -a "${1}" != "-c" ; then 
  1335.   echo shar: Will not clobber existing file \"'abc/ihdrs/i3in2.h'\"
  1336. else
  1337.   echo shar: Extracting \"'abc/ihdrs/i3in2.h'\" \(338 characters\)
  1338.   sed "s/^X//" >'abc/ihdrs/i3in2.h' <<'END_OF_FILE'
  1339. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  1340. X
  1341. X/* Interpreter utilities */
  1342. X
  1343. Xvalue v_local();
  1344. Xvalue v_global();
  1345. Xloc local_loc();
  1346. Xloc global_loc();
  1347. Xloc trim_loc();
  1348. Xloc tbsel_loc();
  1349. Xvalue pre_fun();
  1350. Xextern value resval;
  1351. X
  1352. Xvalue evalthread();
  1353. X
  1354. X#define Changed_formal(v) (v == Vnil || !Is_indirect(v))
  1355. X
  1356. Xvalue locvalue();
  1357. END_OF_FILE
  1358.   if test 338 -ne `wc -c <'abc/ihdrs/i3in2.h'`; then
  1359.     echo shar: \"'abc/ihdrs/i3in2.h'\" unpacked with wrong size!
  1360.   fi
  1361.   # end of 'abc/ihdrs/i3in2.h'
  1362. fi
  1363. if test -f 'abc/ihdrs/i3scr.h' -a "${1}" != "-c" ; then 
  1364.   echo shar: Will not clobber existing file \"'abc/ihdrs/i3scr.h'\"
  1365. else
  1366.   echo shar: Extracting \"'abc/ihdrs/i3scr.h'\" \(244 characters\)
  1367.   sed "s/^X//" >'abc/ihdrs/i3scr.h' <<'END_OF_FILE'
  1368. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  1369. X
  1370. X/* screen */
  1371. X
  1372. Xextern value iname;
  1373. Xextern bool outeractive;
  1374. Xextern bool at_nwl;
  1375. Xextern bool Eof;
  1376. Xextern FILE *ifile;
  1377. Xextern FILE *sv_ifile;
  1378. Xchar *getline();
  1379. Xchar q_answer();
  1380. X
  1381. END_OF_FILE
  1382.   if test 244 -ne `wc -c <'abc/ihdrs/i3scr.h'`; then
  1383.     echo shar: \"'abc/ihdrs/i3scr.h'\" unpacked with wrong size!
  1384.   fi
  1385.   # end of 'abc/ihdrs/i3scr.h'
  1386. fi
  1387. if test -f 'abc/ihdrs/i3sta.h' -a "${1}" != "-c" ; then 
  1388.   echo shar: Will not clobber existing file \"'abc/ihdrs/i3sta.h'\"
  1389. else
  1390.   echo shar: Extracting \"'abc/ihdrs/i3sta.h'\" \(281 characters\)
  1391.   sed "s/^X//" >'abc/ihdrs/i3sta.h' <<'END_OF_FILE'
  1392. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  1393. X
  1394. Xextern parsetree pc; /* 'Program counter', current parsetree node */
  1395. Xextern parsetree next; /* Next parsetree node (changed by jumps) */
  1396. Xextern bool report; /* 'Condition code register', outcome of last test */
  1397. END_OF_FILE
  1398.   if test 281 -ne `wc -c <'abc/ihdrs/i3sta.h'`; then
  1399.     echo shar: \"'abc/ihdrs/i3sta.h'\" unpacked with wrong size!
  1400.   fi
  1401.   # end of 'abc/ihdrs/i3sta.h'
  1402. fi
  1403. if test -f 'abc/ihdrs/i3typ.h' -a "${1}" != "-c" ; then 
  1404.   echo shar: Will not clobber existing file \"'abc/ihdrs/i3typ.h'\"
  1405. else
  1406.   echo shar: Extracting \"'abc/ihdrs/i3typ.h'\" \(177 characters\)
  1407.   sed "s/^X//" >'abc/ihdrs/i3typ.h' <<'END_OF_FILE'
  1408. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1986. */
  1409. X
  1410. X/* Type matching */
  1411. X
  1412. Xtypedef value btype;
  1413. Xbtype valtype();
  1414. Xbtype loctype();
  1415. X/* Procedure must_agree(); */
  1416. X
  1417. END_OF_FILE
  1418.   if test 177 -ne `wc -c <'abc/ihdrs/i3typ.h'`; then
  1419.     echo shar: \"'abc/ihdrs/i3typ.h'\" unpacked with wrong size!
  1420.   fi
  1421.   # end of 'abc/ihdrs/i3typ.h'
  1422. fi
  1423. if test -f 'abc/lin/etex.h' -a "${1}" != "-c" ; then 
  1424.   echo shar: Will not clobber existing file \"'abc/lin/etex.h'\"
  1425. else
  1426.   echo shar: Extracting \"'abc/lin/etex.h'\" \(393 characters\)
  1427.   sed "s/^X//" >'abc/lin/etex.h' <<'END_OF_FILE'
  1428. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  1429. X
  1430. X#undef Etex
  1431. X#define Etex Tex
  1432. X
  1433. X#define e_length length
  1434. X#define mk_etext mk_text
  1435. X#define e_ncharval ncharval
  1436. X#define e_strval strval
  1437. X#define e_sstrval sstrval
  1438. X#define e_fstrval fstrval
  1439. X#define e_icurtail icurtail
  1440. X#define e_ibehead ibehead
  1441. X#define e_concat concat
  1442. X#define e_concto concato
  1443. X
  1444. Xvalue icurtail();
  1445. Xvalue ibehead();
  1446. X
  1447. END_OF_FILE
  1448.   if test 393 -ne `wc -c <'abc/lin/etex.h'`; then
  1449.     echo shar: \"'abc/lin/etex.h'\" unpacked with wrong size!
  1450.   fi
  1451.   # end of 'abc/lin/etex.h'
  1452. fi
  1453. if test -f 'abc/stc/MF' -a "${1}" != "-c" ; then 
  1454.   echo shar: Will not clobber existing file \"'abc/stc/MF'\"
  1455. else
  1456.   echo shar: Extracting \"'abc/stc/MF'\" \(37 characters\)
  1457.   sed "s/^X//" >'abc/stc/MF' <<'END_OF_FILE'
  1458. Xall: i2tca.o i2tce.o i2tcp.o i2tcu.o
  1459. END_OF_FILE
  1460.   if test 37 -ne `wc -c <'abc/stc/MF'`; then
  1461.     echo shar: \"'abc/stc/MF'\" unpacked with wrong size!
  1462.   fi
  1463.   # end of 'abc/stc/MF'
  1464. fi
  1465. if test -f 'abc/tc/tc1.c' -a "${1}" != "-c" ; then 
  1466.   echo shar: Will not clobber existing file \"'abc/tc/tc1.c'\"
  1467. else
  1468.   echo shar: Extracting \"'abc/tc/tc1.c'\" \(355 characters\)
  1469.   sed "s/^X//" >'abc/tc/tc1.c' <<'END_OF_FILE'
  1470. X/*
  1471. X * tc1 [term]
  1472. X * dummy program to test termlib.
  1473. X * gets entry, counts it, and prints it.
  1474. X */
  1475. X#include <stdio.h>
  1476. Xchar buf[1024];
  1477. Xchar *getenv();
  1478. X
  1479. Xmain(argc, argv) char **argv; {
  1480. X    char *p;
  1481. X    int rc;
  1482. X
  1483. X    if (argc < 2)
  1484. X        p = getenv("TERM");
  1485. X    else
  1486. X        p = argv[1];
  1487. X    rc = tgetent(buf,p);
  1488. X    printf("tgetent returns %d, len=%d, text=\n'%s'\n",rc,strlen(buf),buf);
  1489. X}
  1490. END_OF_FILE
  1491.   if test 355 -ne `wc -c <'abc/tc/tc1.c'`; then
  1492.     echo shar: \"'abc/tc/tc1.c'\" unpacked with wrong size!
  1493.   fi
  1494.   # end of 'abc/tc/tc1.c'
  1495. fi
  1496. if test -f 'abc/uhdrs/args.h' -a "${1}" != "-c" ; then 
  1497.   echo shar: Will not clobber existing file \"'abc/uhdrs/args.h'\"
  1498. else
  1499.   echo shar: Extracting \"'abc/uhdrs/args.h'\" \(197 characters\)
  1500.   sed "s/^X//" >'abc/uhdrs/args.h' <<'END_OF_FILE'
  1501. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  1502. X
  1503. Xextern char *bws_arg;
  1504. Xextern char *wsp_arg;
  1505. X#ifndef NDEBUG
  1506. Xextern bool dflag;
  1507. X#ifdef DUMPKEYS
  1508. Xextern bool kflag;
  1509. X#endif
  1510. X#endif
  1511. END_OF_FILE
  1512.   if test 197 -ne `wc -c <'abc/uhdrs/args.h'`; then
  1513.     echo shar: \"'abc/uhdrs/args.h'\" unpacked with wrong size!
  1514.   fi
  1515.   # end of 'abc/uhdrs/args.h'
  1516. fi
  1517. if test -f 'abc/uhdrs/defs.h' -a "${1}" != "-c" ; then 
  1518.   echo shar: Will not clobber existing file \"'abc/uhdrs/defs.h'\"
  1519. else
  1520.   echo shar: Extracting \"'abc/uhdrs/defs.h'\" \(187 characters\)
  1521.   sed "s/^X//" >'abc/uhdrs/defs.h' <<'END_OF_FILE'
  1522. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  1523. X
  1524. X#define MAXHIST 101 /* One more than the number of UNDO's allowed. */
  1525. X
  1526. X#define SUGGBUFSIZE 128
  1527. X#define NSUGGSIZE 128
  1528. END_OF_FILE
  1529.   if test 187 -ne `wc -c <'abc/uhdrs/defs.h'`; then
  1530.     echo shar: \"'abc/uhdrs/defs.h'\" unpacked with wrong size!
  1531.   fi
  1532.   # end of 'abc/uhdrs/defs.h'
  1533. fi
  1534. if test -f 'abc/uhdrs/osconf.h' -a "${1}" != "-c" ; then 
  1535.   echo shar: Will not clobber existing file \"'abc/uhdrs/osconf.h'\"
  1536. else
  1537.   echo shar: Extracting \"'abc/uhdrs/osconf.h'\" \(380 characters\)
  1538.   sed "s/^X//" >'abc/uhdrs/osconf.h' <<'END_OF_FILE'
  1539. X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
  1540. X
  1541. X/* Operating system dependent ABC configuration */
  1542. X/* This contains the things ../mkconfig.c needs */
  1543. X
  1544. X#include <stdio.h>
  1545. X
  1546. Xtypedef char literal;        /* to emphasize meaning only */
  1547. X
  1548. Xtypedef short reftype;        /* type used for reference counts */
  1549. X#define Maxrefcnt Maxintlet    /* Maxintlet is calculated in config.h */
  1550. END_OF_FILE
  1551.   if test 380 -ne `wc -c <'abc/uhdrs/osconf.h'`; then
  1552.     echo shar: \"'abc/uhdrs/osconf.h'\" unpacked with wrong size!
  1553.   fi
  1554.   # end of 'abc/uhdrs/osconf.h'
  1555. fi
  1556. if test -f 'abc/ukeys/abckeys_2640b' -a "${1}" != "-c" ; then 
  1557.   echo shar: Will not clobber existing file \"'abc/ukeys/abckeys_2640b'\"
  1558. else
  1559.   echo shar: Extracting \"'abc/ukeys/abckeys_2640b'\" \(484 characters\)
  1560.   sed "s/^X//" >'abc/ukeys/abckeys_2640b' <<'END_OF_FILE'
  1561. X[widen]    = "\033p" = "Cntl-f1"
  1562. X[extend]   = "\033q" = "Cntl-f2"
  1563. X[first]    = "\033r" = "Cntl-f3"
  1564. X[last]     = "\033s" = "Cntl-f4"
  1565. X# because arrow keys are drawn on the keyboards keys:
  1566. X[up]       = "\033t" = "Cntl-f5"
  1567. X[down]     = "\033u" = "Cntl-f6"
  1568. X[left]     = "\033v" = "Cntl-f7"
  1569. X[right]    = "\033w" = "Cntl-f8"
  1570. X[previous] = "\033[" = "ESC-["
  1571. X[next]     = "\033]" = "ESC-]"
  1572. X[upline]   = "\033k" = "ESC-k"
  1573. X[downline] = "\033j" = "ESC-j"
  1574. X[term-init]= "" = ""
  1575. X[term-done]= "" = ""
  1576. END_OF_FILE
  1577.   if test 484 -ne `wc -c <'abc/ukeys/abckeys_2640b'`; then
  1578.     echo shar: \"'abc/ukeys/abckeys_2640b'\" unpacked with wrong size!
  1579.   fi
  1580.   # end of 'abc/ukeys/abckeys_2640b'
  1581. fi
  1582. if test -f 'abc/unix/MF' -a "${1}" != "-c" ; then 
  1583.   echo shar: Will not clobber existing file \"'abc/unix/MF'\"
  1584. else
  1585.   echo shar: Extracting \"'abc/unix/MF'\" \(81 characters\)
  1586.   sed "s/^X//" >'abc/unix/MF' <<'END_OF_FILE'
  1587. Xall: u1dir.o u1edit.o u1file.o u1keys.o u1main.o u1os.o u1sig.o u1time.o u1trm.o
  1588. END_OF_FILE
  1589.   if test 81 -ne `wc -c <'abc/unix/MF'`; then
  1590.     echo shar: \"'abc/unix/MF'\" unpacked with wrong size!
  1591.   fi
  1592.   # end of 'abc/unix/MF'
  1593. fi
  1594. echo shar: End of archive 25 \(of 25\).
  1595. cp /dev/null ark25isdone
  1596. MISSING=""
  1597. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do
  1598.     if test ! -f ark${I}isdone ; then
  1599.     MISSING="${MISSING} ${I}"
  1600.     fi
  1601. done
  1602. if test "${MISSING}" = "" ; then
  1603.     echo You have unpacked all 25 archives.
  1604.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1605. else
  1606.     echo You still must unpack the following archives:
  1607.     echo "        " ${MISSING}
  1608. fi
  1609. exit 0 # Just in case...
  1610.