home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / unix / volume26 / banners / part01 < prev    next >
Encoding:
Text File  |  1993-04-07  |  103.7 KB  |  5,377 lines

  1. Newsgroups: comp.sources.unix
  2. From: fkk@stasys.sta.sub.org (Frank Kaefer)
  3. Subject: v26i109: banners - a collection of banner programs, Part01/05
  4. Sender: unix-sources-moderator@vix.com
  5. Approved: paul@vix.com
  6.  
  7. Submitted-By: fkk@stasys.sta.sub.org (Frank Kaefer)
  8. Posting-Number: Volume 26, Issue 109
  9. Archive-Name: banners/part01
  10.  
  11. [ this is an unusual posting in that it contains no top-level Makefile and
  12.   no man pages.  i am publishing it anyway, since as a collection of related
  13.   software (all are banner programs of one kind or another), i believe that
  14.   it is useful even if it doesn't build up into a shiny package of binaries
  15.   and man pages.  comments on this kind of posting are encouraged.  this kind
  16.   of posting, in general, is discouraged.                --vix ]
  17.  
  18. Hi Paul!
  19.  
  20. I am sending you a 5 part shell archive and would like to ask you to post it
  21. in comp.sources.unix. The shell archive contains a collection of banner
  22. programs that might be interesting for many netters.
  23.  
  24.     Cheers,
  25.     Frank
  26.     -- 
  27.     | Frank Kaefer | fkk@stasys.sta.sub.org | Starnberg, Germany |
  28.     | Compuserve: 72427,2101  |  Internet: frank.kaefer@Sun.COM  |
  29.     | unido!sunde!fkaefer     |      fkaefer@Germany.Sun.COM     |
  30.  
  31. #! /bin/sh
  32. # This is a shell archive.  Remove anything before this line, then unpack
  33. # it by saving it into a file and typing "sh file".  To overwrite existing
  34. # files, type "sh file -c".  You can also feed this as standard input via
  35. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  36. # will see the following message at the end:
  37. #        "End of archive 1 (of 5)."
  38. # Contents:  MANIFEST README banner-1 banner-1/banner.c
  39. #   banner-1/makefile banner-10 banner-10/scripto.alt
  40. #   banner-10/scripto.doc banner-10/scripto.pas banner-10/scripto.set
  41. #   banner-11 banner-11/Read.Me banner-11/mb.c banner-2 banner-3
  42. #   banner-3/Makefile banner-3/README banner-3/banr.f0
  43. #   banner-3/banr.f1 banner-3/banr.f2.uu banner-4
  44. #   banner-4/sysvbanner.c banner-5 banner-5/3db.c banner-5/Banner.doc
  45. #   banner-5/kban.c banner-5/kban.hlp banner-5/lban.c
  46. #   banner-5/lban.dat banner-5/leb.c banner-5/sban.dat banner-5/seb.c
  47. #   banner-6 banner-6/banner.6 banner-7 banner-7/banner.c banner-8
  48. #   banner-9 banner-9/Makefile banner-9/TODO banner-9/block.c
  49. #   cursive-1 cursive-1/Makefile cursive-1/README cursive-1/cursive.6
  50. #   cursive-1/cursive.h cursive-2 cursive-2/Makefile
  51. #   cursive-2/cursive.6 cursive-2/cursive.h gothic
  52. # Wrapped by vixie@gw.home.vix.com on Thu Apr  8 12:26:11 1993
  53. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  54. if test -f 'MANIFEST' -a "${1}" != "-c" ; then 
  55.   echo shar: Will not clobber existing file \"'MANIFEST'\"
  56. else
  57. echo shar: Extracting \"'MANIFEST'\" \(2253 characters\)
  58. sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
  59. X   File Name        Archive #    Description
  60. X-----------------------------------------------------------
  61. X MANIFEST                   1    This shipping list
  62. X README                     1    
  63. X banner-1                   1    
  64. X banner-1/banner.c          1    
  65. X banner-1/font.c            2    
  66. X banner-1/makefile          1    
  67. X banner-10                  1    
  68. X banner-10/scripto.alt      1    
  69. X banner-10/scripto.doc      1    
  70. X banner-10/scripto.pas      1    
  71. X banner-10/scripto.set      1    
  72. X banner-11                  1    
  73. X banner-11/MB_Font.uu       2    
  74. X banner-11/Read.Me          1    
  75. X banner-11/mb.c             1    
  76. X banner-2                   1    
  77. X banner-2/banner.c          3    
  78. X banner-3                   1    
  79. X banner-3/Makefile          1    
  80. X banner-3/README            1    
  81. X banner-3/banr.c            3    
  82. X banner-3/banr.f0           1    
  83. X banner-3/banr.f1           1    
  84. X banner-3/banr.f2.uu        1    
  85. X banner-4                   1    
  86. X banner-4/sysvbanner.c      1    
  87. X banner-5                   1    
  88. X banner-5/3db.c             1    
  89. X banner-5/Banner.doc        1    
  90. X banner-5/block.c           2    
  91. X banner-5/cursive.c         3    
  92. X banner-5/kban.c            1    
  93. X banner-5/kban.hlp          1    
  94. X banner-5/kbandat.c         3    
  95. X banner-5/lban.c            1    
  96. X banner-5/lban.dat          1    
  97. X banner-5/leb.c             1    
  98. X banner-5/sban.c            2    
  99. X banner-5/sban.dat          1    
  100. X banner-5/seb.c             1    
  101. X banner-5/vban.c            4    
  102. X banner-6                   1    
  103. X banner-6/banner.6          1    
  104. X banner-6/banner.c          5    
  105. X banner-7                   1    
  106. X banner-7/banner.c          1    
  107. X banner-8                   1    
  108. X banner-8/banner.c          2    
  109. X banner-8/banner.c-org      2    
  110. X banner-9                   1    
  111. X banner-9/Makefile          1    
  112. X banner-9/TODO              1    
  113. X banner-9/block.c           1    
  114. X banner-9/data.c            3    
  115. X cursive-1                  1    
  116. X cursive-1/Makefile         1    
  117. X cursive-1/README           1    
  118. X cursive-1/cursive.6        1    
  119. X cursive-1/cursive.c        2    
  120. X cursive-1/cursive.h        1    
  121. X cursive-1/font.c           2    
  122. X cursive-2                  1    
  123. X cursive-2/Makefile         1    
  124. X cursive-2/cursive.6        1    
  125. X cursive-2/cursive.c        2    
  126. X cursive-2/cursive.h        1    
  127. X cursive-2/font.c           3    
  128. X gothic                     1    
  129. X gothic/gothic.c            2    
  130. END_OF_FILE
  131. if test 2253 -ne `wc -c <'MANIFEST'`; then
  132.     echo shar: \"'MANIFEST'\" unpacked with wrong size!
  133. fi
  134. # end of 'MANIFEST'
  135. fi
  136. if test -f 'README' -a "${1}" != "-c" ; then 
  137.   echo shar: Will not clobber existing file \"'README'\"
  138. else
  139. echo shar: Extracting \"'README'\" \(1463 characters\)
  140. sed "s/^X//" >'README' <<'END_OF_FILE'
  141. Return-Path: stasys!fkk@Germany.Sun.COM
  142. Received: by cognition.pa.dec.com; id AA14191; Sun, 19 Apr 92 08:21:13 -0700
  143. Received: by inet-gw-1.pa.dec.com; id AA19652; Sun, 19 Apr 92 08:21:13 -0700
  144. Received: from snail.Sun.COM (snail.Corp.Sun.COM) by Sun.COM (4.1/SMI-4.1)id AA23626; Sun, 19 Apr 92 08:21:12 PDT
  145. Received: from Germany.Sun.COM (sungy) by snail.Sun.COM (4.1/SMI-4.1)id AA08616; Sun, 19 Apr 92 08:21:10 PDT
  146. Received: from sunde.Germany.Sun.COM by Germany.Sun.COM (4.1/SMI-4.1e.fkk)id AA04595; Sun, 19 Apr 92 17:21:08 +0200
  147. Received: from stasys.UUCP by sunde.Germany.Sun.COM (4.1/SMI-4.1-MHS-7.0)id AA15486; Sun, 19 Apr 92 17:21:06 +0200
  148. Received: by stasys.sta.sub.org [129.157.154.4] (/\==/\ Smail3.1.25.1 #25.1)id <m0lcdFN-000Dv0C@stasys.sta.sub.org>; Sun, 19 Apr 92 16:52 MET DST
  149. Message-Id: <m0lcdFN-000Dv0C@stasys.sta.sub.org>
  150. XFrom: fkk@stasys.sta.sub.org (Frank Kaefer)
  151. Subject: Submission vor comp.sources.unix
  152. To: vixie
  153. Date: Sun, 19 Apr 92 16:52:05 MET DST
  154. Reply-To: jason@Germany.Sun.COM
  155. XX-Mailer: ELM [version 2.3 PL11]
  156. X
  157. Hi Paul!
  158. X
  159. I am sending you a 5 part shell archive and would like to ask you to post
  160. it in comp.sources.unix. The shell archive contains a collection of banner
  161. programs that might be interesting for many netters.
  162. X
  163. Cheers,
  164. XFrank
  165. X-- 
  166. X| Frank Kaefer | fkk@stasys.sta.sub.org | Starnberg, Germany |
  167. X| Compuserve: 72427,2101  |  Internet: frank.kaefer@Sun.COM  |
  168. X| unido!sunde!fkaefer     |      fkaefer@Germany.Sun.COM     |
  169. END_OF_FILE
  170. if test 1463 -ne `wc -c <'README'`; then
  171.     echo shar: \"'README'\" unpacked with wrong size!
  172. fi
  173. # end of 'README'
  174. fi
  175. if test ! -d 'banner-1' ; then
  176.     echo shar: Creating directory \"'banner-1'\"
  177.     mkdir 'banner-1'
  178. fi
  179. if test -f 'banner-1/banner.c' -a "${1}" != "-c" ; then 
  180.   echo shar: Will not clobber existing file \"'banner-1/banner.c'\"
  181. else
  182. echo shar: Extracting \"'banner-1/banner.c'\" \(5255 characters\)
  183. sed "s/^X//" >'banner-1/banner.c' <<'END_OF_FILE'
  184. X/*
  185. X * The ultimative banner.
  186. X *
  187. X * Written in 1987 by Wolfgang Ocker, reccoware systems, Puchheim
  188. X *
  189. X * It's *not* fast, but nice ...
  190. X *
  191. X * Tested on OS-9/68000, SunOS
  192. X */
  193. X
  194. X#include <stdio.h>
  195. X#ifdef OSK
  196. X#include <modes.h>
  197. X#else
  198. X#define S_IREAD 0
  199. X#endif
  200. X
  201. X
  202. X#define TRUE  1
  203. X#define FALSE 0
  204. X
  205. extern unsigned char charset;      /* Zeichensatz */
  206. extern int           errno;
  207. X
  208. X#ifdef OSK
  209. X/*
  210. X * Signal Handler (Dummy)
  211. X */
  212. int sighandler()
  213. X{
  214. X}
  215. X#endif
  216. X
  217. X/*
  218. X * m a i n
  219. X */
  220. main(argc, argv)
  221. X  int  argc;
  222. X  char *argv[];
  223. X{
  224. X  char          *str, strbuf[200];
  225. X  int           linenum, chnum, i, j, k, count, strnum;
  226. X  unsigned char ch;
  227. X  int           ch_off;
  228. X  unsigned char *ch_addr;
  229. X  unsigned char *font;
  230. X  int           italic, dblsize, samechar;
  231. X  char          bannerchar;
  232. X  FILE          *infp;  
  233. X  char          *from, *plife;
  234. X
  235. X  italic     = dblsize = samechar = FALSE;
  236. X  strnum     = 0;
  237. X  from       = NULL;
  238. X  bannerchar = '*';
  239. X  plife      = NULL;
  240. X
  241. X  /*
  242. X   * Get the arguments. I *hate* getopt(:-). This works nice (and is
  243. X   * simpler).
  244. X   */
  245. X  for (i = 1; i < argc; i++)
  246. X    if (argv[i][0] == '-')
  247. X      for (j = 1; j < strlen(argv[i]); j++)
  248. X        switch(tolower(argv[i][j])) {
  249. X          case '?':
  250. X            usage();
  251. X            exit(1);
  252. X            
  253. X          case 'i':     /* italic printing */
  254. X            italic = TRUE;
  255. X            break;          
  256. X
  257. X          case 'd':     /* double sized characters */
  258. X            dblsize = TRUE;
  259. X            break;
  260. X  
  261. X          case 's':     /* use character to build large char, e.g.
  262. X                         * c becomes
  263. X                         *
  264. X                         *  ccc
  265. X                         * c   
  266. X                         * c          (or so ...)
  267. X                         *  ccc
  268. X                         */
  269. X            samechar = TRUE;
  270. X            break;
  271. X
  272. X#ifdef OSK          
  273. X          case 'l':
  274. X            plife = argv[i] + j + (argv[i][j+1] == '=' ? 2 : 1);
  275. X            j = strlen(argv[i]);
  276. X            break;
  277. X#endif
  278. X  
  279. X          case 'c':       /* character for banner */
  280. X            j += argv[i][j+1] == '=' ? 2 : 1;
  281. X            bannerchar = argv[i][j];
  282. X            break;
  283. X          case 'z':       /* get text from ... */
  284. X            if (from) {
  285. X              usage();
  286. X              fputs("multiple 'z' option not allowed\n", stderr);
  287. X              exit(1);
  288. X            }
  289. X
  290. X            from = argv[i] + j + (argv[i][j+1] == '=' ? 2 : 1);
  291. X            j = strlen(argv[i]);
  292. X            break;
  293. X
  294. X          default:
  295. X            usage();
  296. X            fprintf(stderr, "banner: unknown option '%c'\n", argv[i][j]);
  297. X            exit(1);
  298. X        }
  299. X    else
  300. X      strnum++;     /* count number of strings */
  301. X
  302. X  if (strnum == 0 && from == NULL) {
  303. X    usage();
  304. X#ifdef OSK
  305. X    exit(_errmsg(1, "no string given\n"));
  306. X#else
  307. X    exit(fputs("no string given\n", stderr), 1);
  308. X#endif
  309. X  }
  310. X
  311. X  if (strnum && from) {
  312. X    usage();
  313. X#ifdef OSK
  314. X    exit(_errmsg(1, "'z' option not allowed if string(s) given\n"));
  315. X#else
  316. X  exit(fputs("'z' option not allowed if string(s) given\n", stderr), 1);
  317. X#endif
  318. X  }
  319. X
  320. X  if (from) {
  321. X    if (from[0]) {
  322. X      if ((infp = fopen(from, "r")) == NULL)
  323. X#ifdef OSK
  324. X        exit(_errmsg(errno, "can't open '%s'\n", from));
  325. X#else
  326. X        exit(fprintf(stderr, "can't open '%s'\n", from), errno);
  327. X#endif
  328. X    }
  329. X    else
  330. X      infp = stdin;
  331. X
  332. X  }
  333. X
  334. X#ifdef OSK
  335. X  if (plife && !strcmp(plife, "dont_kill_me"))
  336. X    intercept(sighandler);
  337. X#endif
  338. X
  339. X  font = &charset;
  340. X  str  = strbuf;
  341. X
  342. X  i = 1;
  343. X  while (TRUE) {
  344. X    if (from) {     /* read strings from file/stdin */
  345. X      if (fgets(strbuf, sizeof(strbuf)-1, infp) == NULL)
  346. X        break;
  347. X      strbuf[strlen(strbuf)-1] = '\0';
  348. X    }
  349. X    else {        /* get strings from argument line */
  350. X      if ((str = argv[i++]) == NULL)
  351. X        break;
  352. X      if (str[0] == '-')
  353. X        continue;
  354. X    }
  355. X       
  356. X    for (linenum = 0; linenum < 8; linenum++) {     /* 8 lines per char */
  357. X      for (j = 0; j < (dblsize ? 2 : 1); j++) {
  358. X        putchar('\n');
  359. X
  360. X        if (italic)     /* shift for italics */
  361. X          for (k = linenum; k < 7; k++)
  362. X            fputs(dblsize ? "  " : " ", stdout);
  363. X
  364. X        for (chnum = 0; chnum < strlen(str); chnum++) {
  365. X          ch      = str[chnum];
  366. X          ch_off  = (int) ch * 8;
  367. X          ch_addr = font + ch_off + linenum;
  368. X          outline(ch, *ch_addr, dblsize, bannerchar, samechar);
  369. X        }
  370. X      } 
  371. X    }
  372. X  }
  373. X
  374. X  putchar('\n');
  375. X}
  376. X
  377. X/*
  378. X * o u t l i n e
  379. X */
  380. outline(outchar, outbyte, dblsize, bannerchar, samechar)
  381. X  char outchar, outbyte, bannerchar;
  382. X  int  dblsize, samechar;
  383. X
  384. X{
  385. X  int bc, j;
  386. X
  387. X  for (bc = 7; bc >= 0; bc--)
  388. X    for (j = 0; j < (dblsize ? 2 : 1); j++)
  389. X      if (outbyte & (0x01 << bc))
  390. X        putchar((samechar) ? outchar : bannerchar);
  391. X      else
  392. X        putchar(' ');
  393. X}
  394. X
  395. X/*
  396. X * u s a g e
  397. X */
  398. usage()
  399. X{
  400. X  fputs("Syntax: banner [<opts>] {<string>} [<opts>]\n", stderr);
  401. X  fputs("Function: prints a banner to stdout\n", stderr);
  402. X  fputs("Options:\n", stderr);
  403. X  fputs("     -i          prints italic\n", stderr);
  404. X  fputs("     -d          double size\n", stderr);
  405. X  fputs("     -c=<char>   character\n", stderr);
  406. X  fputs("     -s          use same character\n", stderr);
  407. X  fputs("     -z          read strings from standard input\n", stderr);
  408. X  fputs("     -z=<file>   read strings from <file>\n", stderr);
  409. X}
  410. END_OF_FILE
  411. if test 5255 -ne `wc -c <'banner-1/banner.c'`; then
  412.     echo shar: \"'banner-1/banner.c'\" unpacked with wrong size!
  413. fi
  414. # end of 'banner-1/banner.c'
  415. fi
  416. if test -f 'banner-1/makefile' -a "${1}" != "-c" ; then 
  417.   echo shar: Will not clobber existing file \"'banner-1/makefile'\"
  418. else
  419. echo shar: Extracting \"'banner-1/makefile'\" \(142 characters\)
  420. sed "s/^X//" >'banner-1/makefile' <<'END_OF_FILE'
  421. OBJECTS = banner.o font.o
  422. X
  423. Banner: $(OBJECTS)
  424. X    cc $(OBJECTS) -o Banner
  425. X
  426. banner.o: banner.c
  427. X    cc -c -O banner.c
  428. font.o: font.c
  429. X    cc -c -O font.c
  430. END_OF_FILE
  431. if test 142 -ne `wc -c <'banner-1/makefile'`; then
  432.     echo shar: \"'banner-1/makefile'\" unpacked with wrong size!
  433. fi
  434. # end of 'banner-1/makefile'
  435. fi
  436. if test ! -d 'banner-10' ; then
  437.     echo shar: Creating directory \"'banner-10'\"
  438.     mkdir 'banner-10'
  439. fi
  440. if test -f 'banner-10/scripto.alt' -a "${1}" != "-c" ; then 
  441.   echo shar: Will not clobber existing file \"'banner-10/scripto.alt'\"
  442. else
  443. echo shar: Extracting \"'banner-10/scripto.alt'\" \(2107 characters\)
  444. sed "s/^X//" >'banner-10/scripto.alt' <<'END_OF_FILE'
  445. A
  446. X .--.
  447. X( / :
  448. X /--+
  449. X/   |
  450. X
  451. X
  452. B
  453. X .--.
  454. X( / )
  455. X /-<
  456. X/___)
  457. X
  458. X
  459. C
  460. X   .-.
  461. X  /  :
  462. X /
  463. X(__./ @
  464. X
  465. X
  466. D
  467. X .---.
  468. X( /  |
  469. X /   |
  470. X/__,/
  471. X
  472. X
  473. XE
  474. X .----
  475. X( /__
  476. X /
  477. X/___ @
  478. X
  479. X
  480. XF
  481. X .----
  482. X( /__
  483. X /
  484. X/    @
  485. X
  486. X
  487. G
  488. X   .-.
  489. X  /  '
  490. X / -+-
  491. X(__.:
  492. X
  493. X
  494. H
  495. X .-- --
  496. X( /_ /
  497. X /  /
  498. X/  /  @
  499. X
  500. X
  501. I
  502. X   .---
  503. X  ( /
  504. X   /
  505. X__/__ @
  506. X
  507. X
  508. J
  509. X
  510. X    '|
  511. X   / |
  512. X  (__|_@
  513. X  /  |
  514. X (___'
  515. K
  516. X .--   ,
  517. X( / . '
  518. X /-<
  519. X/   \_ @
  520. X
  521. X
  522. L
  523. X    .-.
  524. X   /
  525. X  /
  526. X./____.
  527. X
  528. X
  529. M
  530. X .--..-.
  531. X( ) )  |
  532. X /  |  |
  533. X/   :  | @
  534. X
  535. X
  536. N
  537. X .--.  --
  538. X( ) )  /
  539. X /  | /
  540. X/   :/ @
  541. X
  542. X
  543. O
  544. X .---.
  545. X( /   :
  546. X /    |
  547. X :__ /
  548. X
  549. X
  550. P
  551. X .---.
  552. X( /   )
  553. X /---'
  554. X/      @
  555. X
  556. X
  557. Q
  558. X .---.
  559. X( /   :
  560. X /    |
  561. X :_(><_
  562. X
  563. X
  564. R
  565. X .--.
  566. X( /  )
  567. X /--<
  568. X/    \
  569. X
  570. X
  571. S
  572. X  .-.
  573. X (   '
  574. X  >.
  575. X(___) @
  576. X
  577. X
  578. T
  579. X .-----
  580. X(  /
  581. X  /
  582. X /   @
  583. X
  584. X
  585. U
  586. X .--  --
  587. X( /  /
  588. X /  /
  589. X(_./ @
  590. X
  591. X
  592. V
  593. X .--  --
  594. X( |   /
  595. X  |  /
  596. X  :_/ @
  597. X
  598. X
  599. W
  600. X .--   --
  601. X( |    /
  602. X  | : /
  603. X  :/:/ @
  604. X
  605. X
  606. XX
  607. X .-.  ,-
  608. X(   |/
  609. X  ./|
  610. X /  :__
  611. X
  612. X
  613. Y
  614. X .--  --
  615. X( |   /
  616. X  :_./
  617. X    /  @
  618. X ._/
  619. X
  620. Z
  621. X .----.-
  622. X(   .'
  623. X  ,'
  624. X.'____/
  625. X
  626. X
  627. a
  628. X
  629. X __
  630. X __)
  631. X(__(_
  632. X
  633. X
  634. b
  635. X   /
  636. X  /_
  637. X /  )
  638. X(__/
  639. X
  640. X
  641. c
  642. X
  643. X  ___
  644. X /
  645. X(___
  646. X
  647. X
  648. d
  649. X      /
  650. X  __ /
  651. X /  /
  652. X(__(_ @
  653. X
  654. X
  655. e
  656. X
  657. X  __
  658. X /__)
  659. X(___
  660. X
  661. X  
  662. f
  663. X     .-
  664. X    /
  665. X   /
  666. X__/_ @
  667. X /
  668. X/
  669. g
  670. X
  671. X   __ ,
  672. X  /  /
  673. X (__/_ @
  674. X   /
  675. X(_/
  676. h
  677. X   /
  678. X  /_
  679. X /  )
  680. X/   (_
  681. X
  682. X
  683. i
  684. X
  685. X  *
  686. X /
  687. X(_
  688. X
  689. X
  690. j
  691. X
  692. X     *
  693. X    /
  694. X   / @
  695. X(_/
  696. X
  697. k
  698. X   /
  699. X  /__
  700. X /<
  701. X/  \_
  702. X
  703. X
  704. l
  705. X   /)
  706. X  //
  707. X /
  708. X(_
  709. X
  710. X
  711. m
  712. X
  713. X  _  _
  714. X )' |' )
  715. X/;  :  (_
  716. X
  717. X
  718. n
  719. X
  720. X   _
  721. X )' )
  722. X/;  (_
  723. X
  724. X
  725. o
  726. X
  727. X  __
  728. X /  )
  729. X(__/
  730. X
  731. X
  732. p
  733. X
  734. X    __
  735. X   /  )
  736. X  /_./
  737. X /
  738. X/
  739. q
  740. X
  741. X  __
  742. X /  /
  743. X(_./ @
  744. X  /
  745. X (_
  746. r
  747. X
  748. X  ,__.
  749. X /  /
  750. X/  (__
  751. X
  752. X
  753. s
  754. X
  755. X  __
  756. X (_
  757. X___)
  758. X
  759. X
  760. t
  761. X
  762. X __/_
  763. X  /
  764. X (__
  765. X
  766. X
  767. u
  768. X
  769. X  .  .
  770. X /  /
  771. X(_.(_
  772. X
  773. X
  774. v
  775. X
  776. X .  _
  777. X |  )
  778. X :_/
  779. X
  780. X
  781. w
  782. X
  783. X .     _
  784. X |  .  )
  785. X :_/|_/
  786. X
  787. X
  788. x
  789. X
  790. X  : /
  791. X .+'
  792. X/ :__
  793. X
  794. X
  795. y
  796. X
  797. X .   .
  798. X |  /
  799. X :_/ @
  800. X  /
  801. X-'
  802. z
  803. X
  804. X  __
  805. X  ./
  806. X /__
  807. X
  808. X
  809. X. 
  810. X
  811. X
  812. X
  813. X@ @
  814. X
  815. X
  816. X,
  817. X
  818. X
  819. X
  820. X@ @
  821. X'
  822. X
  823. X(
  824. X  /
  825. X,'
  826. X:
  827. X \ @
  828. X
  829. X
  830. X)
  831. X  \
  832. X   :
  833. X  ,'
  834. X / @
  835. X
  836. X
  837. X-
  838. X
  839. X____
  840. X
  841. X     @
  842. X
  843. X
  844. X&
  845. X    |)
  846. X   /|
  847. X /  |)
  848. X(___/\
  849. X
  850. X
  851. X!
  852. X   /
  853. X  /
  854. X /
  855. X@  @
  856. X
  857. X
  858. X/
  859. X   /
  860. X  /
  861. X /
  862. X/  @
  863. X
  864. X
  865. X?
  866. X  .-.
  867. X (   )
  868. X   /
  869. X  .  @
  870. X
  871. X
  872. X'
  873. X  @
  874. X  '
  875. X
  876. X  @
  877. X
  878. X
  879. X:
  880. X
  881. X  @
  882. X
  883. X @ @
  884. X
  885. X
  886. X;
  887. X
  888. X  @
  889. X
  890. X @ @
  891. X '
  892. X
  893. X%
  894. X() /
  895. X  /
  896. X /
  897. X/ ()
  898. X
  899. X
  900. X*
  901. X
  902. X_\|/_
  903. X /|\
  904. X     @
  905. X
  906. X
  907. X$
  908. X  .-/-
  909. X (_/_
  910. X  /  )
  911. X-/--'
  912. X
  913. X
  914. X0
  915. X   __
  916. X  /  :
  917. X /  /
  918. X:__/
  919. X
  920. X
  921. X1
  922. X   _
  923. X   /
  924. X  /
  925. X_/_
  926. X
  927. X
  928. X2
  929. X  __
  930. X    )
  931. X .--'
  932. X(___
  933. X
  934. X
  935. X3
  936. X  __
  937. X    )
  938. X  -<
  939. X.___)
  940. X
  941. X
  942. X4
  943. X  . .
  944. X / /
  945. X'-/-
  946. X /  @
  947. X
  948. X
  949. X5
  950. X  __
  951. X /
  952. X'--.
  953. X___)
  954. X
  955. X
  956. X6
  957. X   __
  958. X  /
  959. X /-.
  960. X(__)
  961. X
  962. X
  963. X7
  964. X ___
  965. X   /
  966. X  /
  967. X :  @
  968. X
  969. X
  970. X8
  971. X  __
  972. X (  )
  973. X /-<
  974. X(___)
  975. X
  976. X
  977. X9
  978. X  __
  979. X /  )
  980. X '-/
  981. X_./ @
  982. X
  983. X
  984. X=
  985. X     .---
  986. X    ( /
  987. X_    /
  988. X(___/  @
  989. X
  990. X
  991. END_OF_FILE
  992. if test 2107 -ne `wc -c <'banner-10/scripto.alt'`; then
  993.     echo shar: \"'banner-10/scripto.alt'\" unpacked with wrong size!
  994. fi
  995. # end of 'banner-10/scripto.alt'
  996. fi
  997. if test -f 'banner-10/scripto.doc' -a "${1}" != "-c" ; then 
  998.   echo shar: Will not clobber existing file \"'banner-10/scripto.doc'\"
  999. else
  1000. echo shar: Extracting \"'banner-10/scripto.doc'\" \(1195 characters\)
  1001. sed "s/^X//" >'banner-10/scripto.doc' <<'END_OF_FILE'
  1002. X
  1003. X  .-.
  1004. X (   '   ___  ,_.    *    __  __/_  __ 
  1005. X  >.    /    /  :   /    /  )  /   /  )
  1006. X(___)  (___ /   :_ (_   /_./  (__ (__/ 
  1007. X                       /               
  1008. X                      /                
  1009. X
  1010. Scripto is a program for building cursive writing from text.  To run scripto,
  1011. the file scripto.set must be in the current directory.  You may run scripto
  1012. interactively by starting the program and entering any readable text.  The
  1013. cursive equivalent will appear on the screen.  Of course, input and output may
  1014. be redirected so it is possible to type cursive to disk by running this way:
  1015. X"scripto >cursive.txt" or disk to disk using "scripto <input.txt >output.txt"
  1016. or to printer with "scripto >prn" (note: when writing to printer - dot matrix
  1017. only - compressed mode is recommended).
  1018. X
  1019. If you wish, you may add or change the "font" dataset: scripto.set. After
  1020. looking at a few examples, it should become obvious how a font is stored.
  1021. XEach character uses the same number of lines.  The "@" sometimes found on the
  1022. X"base" line marks where the next cursive letter would be written.  It is a
  1023. primitive form of proportional spacing.
  1024. X
  1025. XEnjoy!
  1026. X
  1027. manny juan
  1028. manny@wet.UUCP or manny@tcomeng.COM
  1029. X5/22/91
  1030. END_OF_FILE
  1031. if test 1195 -ne `wc -c <'banner-10/scripto.doc'`; then
  1032.     echo shar: \"'banner-10/scripto.doc'\" unpacked with wrong size!
  1033. fi
  1034. # end of 'banner-10/scripto.doc'
  1035. fi
  1036. if test -f 'banner-10/scripto.pas' -a "${1}" != "-c" ; then 
  1037.   echo shar: Will not clobber existing file \"'banner-10/scripto.pas'\"
  1038. else
  1039. echo shar: Extracting \"'banner-10/scripto.pas'\" \(1585 characters\)
  1040. sed "s/^X//" >'banner-10/scripto.pas' <<'END_OF_FILE'
  1041. program cursive;
  1042. type
  1043. X  line=array[0..255]of char;
  1044. X  str255=string[255];
  1045. X  str80=string[80];
  1046. X  fontch=array[-3..2,1..11]of char;
  1047. X  fontrec=record
  1048. X    width:byte;
  1049. X    def:fontch;
  1050. X  end;
  1051. X
  1052. var
  1053. X  A:string[255];
  1054. X  fonts:array[0..255]of fontrec;
  1055. X  Inp:str80;
  1056. X  Buf:array[1..6]of str255;
  1057. X  Oup:array[-3..2]of line absolute Buf;
  1058. X
  1059. procedure loadfont;
  1060. var
  1061. X  f:text;
  1062. X  Ltr:byte;
  1063. X  S:string[12];
  1064. X  i,j,
  1065. X  m:integer;
  1066. begin
  1067. X  assign(f,'scripto.set');
  1068. X  reset(f);
  1069. X  A:='';
  1070. X  fillchar(fonts,sizeof(fonts),#0);
  1071. X  while not(eof(f)) do
  1072. X    begin
  1073. X    readln(f,S);
  1074. X    A:=A+S;
  1075. X    Ltr:=ord(S[1]);
  1076. X    for i:=-3 to 2 do
  1077. X      begin
  1078. X      readln(f,S);
  1079. X      if(i=0)then
  1080. X        begin
  1081. X        if(copy(S,length(S),1)='@')then
  1082. X          delete(S,length(S),1);
  1083. X        fonts[Ltr].width:=length(S);
  1084. X        end;
  1085. X      for j:=1 to length(S) do
  1086. X        begin
  1087. X        fonts[Ltr].def[i,j]:=S[j];
  1088. X        end;
  1089. X      end;
  1090. X    end;
  1091. X  {make blank 6 chars wide}
  1092. X  fonts[ord(' ')].width:=6;
  1093. end; {loadfont}
  1094. X
  1095. procedure scripto(Inp:str80);
  1096. var
  1097. X  ch:char;
  1098. X  Ltr:byte;
  1099. X  i,j,n,c:integer;
  1100. begin
  1101. X  fillchar(Oup,sizeof(Oup),' ');
  1102. X  c:=0;
  1103. X  for n:=1 to length(Inp) do
  1104. X    begin
  1105. X    Ltr:=ord(Inp[n]);
  1106. X    for i:=-3 to 2 do
  1107. X      begin
  1108. X      for j:=1 to 11 do
  1109. X        begin
  1110. X        ch:=fonts[Ltr].def[i,j];
  1111. X        if(ch>' ')then
  1112. X          Oup[i,c+j]:=ch;
  1113. X        end;
  1114. X      end;
  1115. X      c:=c+fonts[Ltr].width+1;
  1116. X    end;
  1117. X  for i:=1 to 6 do
  1118. X    begin
  1119. X    Buf[i][0]:=chr(c);
  1120. X    writeln(Buf[i]);
  1121. X    end;
  1122. end; {scripto}
  1123. X
  1124. begin
  1125. X  loadfont;
  1126. X  readln(Inp);
  1127. X  while not(Inp='') do
  1128. X    begin
  1129. X    scripto(Inp);
  1130. X    readln(Inp);
  1131. X    end;
  1132. end.
  1133. END_OF_FILE
  1134. if test 1585 -ne `wc -c <'banner-10/scripto.pas'`; then
  1135.     echo shar: \"'banner-10/scripto.pas'\" unpacked with wrong size!
  1136. fi
  1137. # end of 'banner-10/scripto.pas'
  1138. fi
  1139. if test -f 'banner-10/scripto.set' -a "${1}" != "-c" ; then 
  1140.   echo shar: Will not clobber existing file \"'banner-10/scripto.set'\"
  1141. else
  1142. echo shar: Extracting \"'banner-10/scripto.set'\" \(2066 characters\)
  1143. sed "s/^X//" >'banner-10/scripto.set' <<'END_OF_FILE'
  1144. A
  1145. X .--.
  1146. X( / :
  1147. X /--+
  1148. X/   |
  1149. X
  1150. X
  1151. B
  1152. X .--.
  1153. X( / )
  1154. X /-<
  1155. X/___)
  1156. X
  1157. X
  1158. C
  1159. X   .-.
  1160. X  /  :
  1161. X /
  1162. X(__./ @
  1163. X
  1164. X
  1165. D
  1166. X .---.
  1167. X( /  |
  1168. X /   |
  1169. X/__,/
  1170. X
  1171. X
  1172. XE
  1173. X .----
  1174. X( /__
  1175. X /
  1176. X/___ @
  1177. X
  1178. X
  1179. XF
  1180. X .----
  1181. X( /__
  1182. X /
  1183. X/    @
  1184. X
  1185. X
  1186. G
  1187. X   .-.
  1188. X  /  '
  1189. X / -+
  1190. X(__.:
  1191. X
  1192. X
  1193. H
  1194. X .-- --
  1195. X( /_ /
  1196. X /  /
  1197. X/  /  @
  1198. X
  1199. X
  1200. I
  1201. X   .---
  1202. X  ( /
  1203. X   /
  1204. X__/__ @
  1205. X
  1206. X
  1207. J
  1208. X     .---
  1209. X    ( /
  1210. X_    /
  1211. X(___/  @
  1212. X
  1213. X
  1214. K
  1215. X .--   ,
  1216. X( / . '
  1217. X /-<
  1218. X/   \_ @
  1219. X
  1220. X
  1221. L
  1222. X    .-.
  1223. X   /
  1224. X  /
  1225. X./____.
  1226. X
  1227. X
  1228. M
  1229. X .--..-.
  1230. X( / |  |
  1231. X /  |  |
  1232. X/   :  | @
  1233. X
  1234. X
  1235. N
  1236. X .--.  --
  1237. X( / |  /
  1238. X /  | /
  1239. X/   :/ @
  1240. X
  1241. X
  1242. O
  1243. X .---.
  1244. X( /   :
  1245. X /    |
  1246. X :__ /
  1247. X
  1248. X
  1249. P
  1250. X .---.
  1251. X( /   )
  1252. X /---'
  1253. X/      @
  1254. X
  1255. X
  1256. Q
  1257. X .---.
  1258. X( /   :
  1259. X /    |
  1260. X :_(><_
  1261. X
  1262. X
  1263. R
  1264. X .--.
  1265. X( /  )
  1266. X /--<
  1267. X/    \
  1268. X
  1269. X
  1270. S
  1271. X  .-.
  1272. X (   '
  1273. X  >.
  1274. X(___) @
  1275. X
  1276. X
  1277. T
  1278. X .-----
  1279. X(  /
  1280. X  /
  1281. X /   @
  1282. X
  1283. X
  1284. U
  1285. X .--  --
  1286. X( /  /
  1287. X /  /
  1288. X(_./ @
  1289. X
  1290. X
  1291. V
  1292. X .--  --
  1293. X( |   /
  1294. X  |  /
  1295. X  :_/ @
  1296. X
  1297. X
  1298. W
  1299. X .--   --
  1300. X( |    /
  1301. X  | : /
  1302. X  :/:/ @
  1303. X
  1304. X
  1305. XX
  1306. X .-.  ,-
  1307. X(   |/
  1308. X  ./|
  1309. X /  :__
  1310. X
  1311. X
  1312. Y
  1313. X .--  --
  1314. X( |   /
  1315. X  :_./
  1316. X    /  @
  1317. X ._/
  1318. X
  1319. Z
  1320. X .----.-
  1321. X(   .'
  1322. X  ,'
  1323. X.'____/
  1324. X
  1325. X
  1326. a
  1327. X
  1328. X __
  1329. X __)
  1330. X(__(_
  1331. X
  1332. X
  1333. b
  1334. X   /
  1335. X  /_
  1336. X /  )
  1337. X(__/
  1338. X
  1339. X
  1340. c
  1341. X
  1342. X  ___
  1343. X /
  1344. X(___
  1345. X
  1346. X
  1347. d
  1348. X      /
  1349. X  __ /
  1350. X /  /
  1351. X(__(_ @
  1352. X
  1353. X
  1354. e
  1355. X
  1356. X  __
  1357. X /__)
  1358. X(___
  1359. X
  1360. X  
  1361. f
  1362. X     .-
  1363. X    /
  1364. X   /
  1365. X__/_ @
  1366. X /
  1367. X/
  1368. g
  1369. X
  1370. X   __ ,
  1371. X  /  /
  1372. X (__/_ @
  1373. X   /
  1374. X(_/
  1375. h
  1376. X   /
  1377. X  /_
  1378. X /  )
  1379. X/   (_
  1380. X
  1381. X
  1382. i
  1383. X
  1384. X  *
  1385. X /
  1386. X(_
  1387. X
  1388. X
  1389. j
  1390. X
  1391. X     *
  1392. X    /
  1393. X   / @
  1394. X(_/
  1395. X
  1396. k
  1397. X   /
  1398. X  /__
  1399. X /<
  1400. X/  \_
  1401. X
  1402. X
  1403. l
  1404. X   /)
  1405. X  //
  1406. X /
  1407. X(_
  1408. X
  1409. X
  1410. m
  1411. X
  1412. X   _  _
  1413. X )' |' )
  1414. X/   :  (_
  1415. X
  1416. X
  1417. n
  1418. X
  1419. X   _
  1420. X )' )
  1421. X/   (_
  1422. X
  1423. X
  1424. o
  1425. X
  1426. X  __
  1427. X /  )
  1428. X(__/
  1429. X
  1430. X
  1431. p
  1432. X
  1433. X    __
  1434. X   /  )
  1435. X  /_./
  1436. X /
  1437. X/
  1438. q
  1439. X
  1440. X  __
  1441. X /  /
  1442. X(_./ @
  1443. X  /
  1444. X (_
  1445. r
  1446. X
  1447. X  ,_.
  1448. X /  :
  1449. X/   :_
  1450. X
  1451. X
  1452. s
  1453. X
  1454. X  __
  1455. X (_
  1456. X___)
  1457. X
  1458. X
  1459. t
  1460. X
  1461. X __/_
  1462. X  /
  1463. X (__
  1464. X
  1465. X
  1466. u
  1467. X
  1468. X  .  .
  1469. X /  /
  1470. X(_.(_
  1471. X
  1472. X
  1473. v
  1474. X
  1475. X .  _
  1476. X |  )
  1477. X :_/
  1478. X
  1479. X
  1480. w
  1481. X
  1482. X .     _
  1483. X |  .  )
  1484. X :_/|_/
  1485. X
  1486. X
  1487. x
  1488. X
  1489. X  : /
  1490. X .+'
  1491. X/ :__
  1492. X
  1493. X
  1494. y
  1495. X
  1496. X .   .
  1497. X |  /
  1498. X :_/ @
  1499. X  /
  1500. X-'
  1501. z
  1502. X
  1503. X  __
  1504. X  ./
  1505. X /__
  1506. X
  1507. X
  1508. X. 
  1509. X
  1510. X
  1511. X
  1512. X@ @
  1513. X
  1514. X
  1515. X,
  1516. X
  1517. X
  1518. X
  1519. X@ @
  1520. X'
  1521. X
  1522. X(
  1523. X  /
  1524. X,'
  1525. X:
  1526. X \ @
  1527. X
  1528. X
  1529. X)
  1530. X  \
  1531. X   :
  1532. X  ,'
  1533. X / @
  1534. X
  1535. X
  1536. X-
  1537. X
  1538. X____
  1539. X
  1540. X     @
  1541. X
  1542. X
  1543. X&
  1544. X    |)
  1545. X   /|
  1546. X /  |)
  1547. X(___/\
  1548. X
  1549. X
  1550. X!
  1551. X   /
  1552. X  /
  1553. X /
  1554. X@  @
  1555. X
  1556. X
  1557. X/
  1558. X   /
  1559. X  /
  1560. X /
  1561. X/  @
  1562. X
  1563. X
  1564. X?
  1565. X  .-.
  1566. X (   )
  1567. X   /
  1568. X  .  @
  1569. X
  1570. X
  1571. X'
  1572. X  @
  1573. X  '
  1574. X
  1575. X  @
  1576. X
  1577. X
  1578. X:
  1579. X
  1580. X  @
  1581. X
  1582. X @ @
  1583. X
  1584. X
  1585. X;
  1586. X
  1587. X  @
  1588. X
  1589. X @ @
  1590. X '
  1591. X
  1592. X%
  1593. X() /
  1594. X  /
  1595. X /
  1596. X/ ()
  1597. X
  1598. X
  1599. X*
  1600. X
  1601. X_\|/_
  1602. X /|\
  1603. X     @
  1604. X
  1605. X
  1606. X$
  1607. X  .-/-
  1608. X (_/_
  1609. X  /  )
  1610. X-/--'
  1611. X
  1612. X
  1613. X0
  1614. X   __
  1615. X  /  :
  1616. X /  /
  1617. X:__/
  1618. X
  1619. X
  1620. X1
  1621. X   _
  1622. X   /
  1623. X  /
  1624. X_/_
  1625. X
  1626. X
  1627. X2
  1628. X  __
  1629. X    )
  1630. X .--'
  1631. X(___
  1632. X
  1633. X
  1634. X3
  1635. X  __
  1636. X    )
  1637. X  -<
  1638. X.___)
  1639. X
  1640. X
  1641. X4
  1642. X  . .
  1643. X / /
  1644. X'-/-
  1645. X /  @
  1646. X
  1647. X
  1648. X5
  1649. X  __
  1650. X /
  1651. X'--.
  1652. X___)
  1653. X
  1654. X
  1655. X6
  1656. X   __
  1657. X  /
  1658. X /-.
  1659. X(__)
  1660. X
  1661. X
  1662. X7
  1663. X ___
  1664. X   /
  1665. X  /
  1666. X :  @
  1667. X
  1668. X
  1669. X8
  1670. X  __
  1671. X (  )
  1672. X /-<
  1673. X(___)
  1674. X
  1675. X
  1676. X9
  1677. X  __
  1678. X /  )
  1679. X '-/
  1680. X_./ @
  1681. X
  1682. X
  1683. END_OF_FILE
  1684. if test 2066 -ne `wc -c <'banner-10/scripto.set'`; then
  1685.     echo shar: \"'banner-10/scripto.set'\" unpacked with wrong size!
  1686. fi
  1687. # end of 'banner-10/scripto.set'
  1688. fi
  1689. if test ! -d 'banner-11' ; then
  1690.     echo shar: Creating directory \"'banner-11'\"
  1691.     mkdir 'banner-11'
  1692. fi
  1693. if test -f 'banner-11/Read.Me' -a "${1}" != "-c" ; then 
  1694.   echo shar: Will not clobber existing file \"'banner-11/Read.Me'\"
  1695. else
  1696. echo shar: Extracting \"'banner-11/Read.Me'\" \(4473 characters\)
  1697. sed "s/^X//" >'banner-11/Read.Me' <<'END_OF_FILE'
  1698. mb - and just another banner program.
  1699. X
  1700. No makefile, No manualpage included.
  1701. X
  1702. It's just another senseless program but I couldn't resist in writing
  1703. it. It should just compile ok under OS-9/68k, any *IX flavour and on
  1704. nearly every other system (with same small changes...). I could only
  1705. test it on OS-9/68k.
  1706. X
  1707. The main difference to other programs: It uses an external font-file,
  1708. so you can change this as you want. The format is very easy:
  1709. X256 characters each in a size of 16 byte, displaying in following
  1710. order
  1711. bit     7 6 5 4 3 2 1 0
  1712. byte 0  X X X X X X X X
  1713. byte 1  X X X X X X X X
  1714. byte 2  X X X X X X X X
  1715. byte 3  X X X X X X X X
  1716. byte 4  X X X X X X X X
  1717. byte 5  X X X X X X X X
  1718. byte 6  X X X X X X X X
  1719. byte 7  X X X X X X X X
  1720. byte 8  X X X X X X X X
  1721. byte 9  X X X X X X X X
  1722. byte 10 X X X X X X X X
  1723. byte 11 X X X X X X X X
  1724. byte 12 X X X X X X X X
  1725. byte 13 X X X X X X X X
  1726. byte 14 X X X X X X X X
  1727. byte 15 X X X X X X X X
  1728. X
  1729. Then 256 characters with a size of 8 bytes each follows, order is the
  1730. same as above (but only 8 lines).
  1731. X
  1732. This file may be prefixed by an OS-9/68k module header of 48 bytes
  1733. X(these font files are used on an OS-9 implementation for the Atari ST).
  1734. X
  1735. The format itself can be found in the Atari ST TOS world very often,
  1736. so it's easy to get other fonts (I haven't included any, 'cause I
  1737. don't if they are copyrighted, sigh).
  1738. X
  1739. There is no difference to other programs of the same type, the most
  1740. common options are available:
  1741. X-f=<file>  use this fontfile instead of $HOME/.font or
  1742. X           /dd/SYS/MB_Font (OS-9) / /etc/MB_Font (*IX)
  1743. X-l         use the larger (16x8) font (default is 8x8 font)
  1744. X-c         print the letters cursive (well not really cursive...)
  1745. X-i         invert the printing (exchange for- and background pattern)
  1746. X-f=<char>  use <char> as the forground (i.e. write) pattern
  1747. X           (default `*')
  1748. X-b=<char>  the background (default ` ')
  1749. X-s         use the character itself as the forground pattern
  1750. X
  1751. If no string is given, the strings are read in from stdin until
  1752. an EOF is detected.
  1753. X
  1754. You can print a leading `-' with a construct `--'
  1755. X
  1756. The included font file represents roughly the ISO 8859/1 character
  1757. set.
  1758. X
  1759. Bug: if a fontfile starts with the bytes 0x4a 0xfc then it is assumed
  1760. to be a OS-9 Module and the first 48 bytes are skipped...
  1761. X
  1762. Some expamples:
  1763. X% mb Foo Bar
  1764. X*******                 
  1765. X **   *                 
  1766. X ** *    ****    ****   
  1767. X ****   **  **  **  **  
  1768. X ** *   **  **  **  **  
  1769. X **     **  **  **  **  
  1770. X****     ****    ****   
  1771. X                        
  1772. X******                  
  1773. X **  **                 
  1774. X **  **  ****   ** ***  
  1775. X *****      **   *** ** 
  1776. X **  **  *****   **  ** 
  1777. X **  ** **  **   **     
  1778. X******   *** ** ****    
  1779. X                        
  1780. X
  1781. X$ mb "Foo Bar"
  1782. X*******                         ******                  
  1783. X **   *                          **  **                 
  1784. X ** *    ****    ****            **  **  ****   ** ***  
  1785. X ****   **  **  **  **           *****      **   *** ** 
  1786. X ** *   **  **  **  **           **  **  *****   **  ** 
  1787. X **     **  **  **  **           **  ** **  **   **     
  1788. X****     ****    ****           ******   *** ** ****    
  1789. X                                                        
  1790. X$ mb -lcfXb. "--Foo Bar"
  1791. X...............................................................................
  1792. X...............................................................................
  1793. X...............................................................................
  1794. X....................XXXXXXX.........................XXXXXX.....................
  1795. X...................XX..............................XX...XX.....................
  1796. X..................XX..............................XX...XX......................
  1797. X.................XX.......XXXXX...XXXXX..........XX...XX..XXXXX..XXXXXX........
  1798. X.........XXXXXX.XXXXX...XX...XX.XX...XX.........XXXXXX.......XX.XX...XX........
  1799. X...............XX......XX...XX.XX...XX.........XX...XX..XXXXXX.XX...XX.........
  1800. X..............XX......XX...XX.XX...XX.........XX...XX.XX...XX.XX...............
  1801. X.............XX......XX...XX.XX...XX.........XX...XX.XX...XX.XX................
  1802. X............XX......XX...XX.XX...XX.........XX...XX.XX...XX.XX.................
  1803. X...........XX.......XXXXX...XXXXX..........XXXXXX...XXXXXX.XX..................
  1804. X...............................................................................
  1805. X...............................................................................
  1806. X...............................................................................
  1807. X
  1808. END_OF_FILE
  1809. if test 4473 -ne `wc -c <'banner-11/Read.Me'`; then
  1810.     echo shar: \"'banner-11/Read.Me'\" unpacked with wrong size!
  1811. fi
  1812. # end of 'banner-11/Read.Me'
  1813. fi
  1814. if test -f 'banner-11/mb.c' -a "${1}" != "-c" ; then 
  1815.   echo shar: Will not clobber existing file \"'banner-11/mb.c'\"
  1816. else
  1817. echo shar: Extracting \"'banner-11/mb.c'\" \(6396 characters\)
  1818. sed "s/^X//" >'banner-11/mb.c' <<'END_OF_FILE'
  1819. X/*
  1820. X *    mb:    another banner program with external fontfiles
  1821. X *
  1822. X *    (C) Copyrighted 1992 by Ulrich Dessauer, Germering, Germany
  1823. X *
  1824. X *    You can copy, forward, redistribute the whole package as long
  1825. X *    as you make no profit and this copyright messages stays untouched!
  1826. X */
  1827. X# include    <stdio.h>
  1828. X# include    <errno.h>
  1829. X# ifdef        OSK
  1830. X# include    <modes.h>
  1831. X# include    <module.h>
  1832. X# define    R_OK        S_IREAD
  1833. X# define    MODHEADSIZ    sizeof (struct modhcom)
  1834. X# else        /* OSK */
  1835. X# include    <fcntl.h>
  1836. X# ifndef    R_OK
  1837. X# define    R_OK        O_RDONLY
  1838. X# endif        /* R_OK */
  1839. X# define    MODSYNC        ((unsigned long) 0x4afc)
  1840. X# define    MODHEADSIZ    0x30
  1841. X# if        defined (USG) || defined (SYSV) || defined (SYS5) || defined (HAS_STRCHR)
  1842. X# define    index        strchr
  1843. X# endif        /* defined (USG) || defined (SYSV) || defined (SYS5) || defined (HAS_STRCHR) */
  1844. X# endif        /* OSK */
  1845. X
  1846. X    /* use an extended cursive mode (fill left and right margin) */
  1847. X# define    XTEND_CURSIVE
  1848. X    /* binary read for fopen */
  1849. X# if        defined (MSDOS) || defined (msdos) || defined (TOS)
  1850. X# define    READ_BINARY    "rb"
  1851. X# else        /* defined (MSDOS) || defined (msdos) || defined (TOS) */
  1852. X# define    READ_BINARY    "r"
  1853. X# endif        /* defined (MSDOS) || defined (msdos) || defined (TOS) */
  1854. X
  1855. X# define    FALSE        (0 == 1)
  1856. X# define    TRUE        (1 == 1)
  1857. X
  1858. X# ifdef        OSK
  1859. X# define    DEF_FONTFILE    "/dd/SYS/MB_Font"
  1860. X# else        /* OSK */
  1861. X# define    DEF_FONTFILE    "/etc/MB_Font"
  1862. X# endif        /* OSK */
  1863. X
  1864. X# define    NO_MEM        exit (_errmsg (errno, "Out of memory!\n"));
  1865. X
  1866. extern char    *getenv ();
  1867. extern char    *index ();
  1868. extern char    *malloc ();
  1869. X
  1870. typedef unsigned char    byte;
  1871. X
  1872. static char        *fontfile;
  1873. static int        large;
  1874. static int        cursive;
  1875. static int        invers;
  1876. static char        forground;
  1877. static char        background;
  1878. X
  1879. X# ifndef    OSK
  1880. X/*
  1881. X *    Not very portable....
  1882. X */
  1883. int
  1884. X_errmsg (error, fmt, a, b, c)
  1885. int error;
  1886. char *fmt;
  1887. void *a, *b, *c;
  1888. X{
  1889. X    fputs ("mb: ", stderr);
  1890. X    fprintf (stderr, fmt, a, b, c);
  1891. X    return (error);
  1892. X}
  1893. X# endif        /* OSK */
  1894. X
  1895. static void
  1896. banner (s, cset)
  1897. char *s;
  1898. byte *cset;
  1899. X{
  1900. X    register byte    *ptr;
  1901. X    register int    n;
  1902. X    register int    t;
  1903. X    register byte    b;
  1904. X    register int    max;
  1905. X    char        space[16];
  1906. X
  1907. X    if (cursive)
  1908. X# ifdef        XTEND_CURSIVE
  1909. X        memset (space, invers ? forground : background, sizeof (space));
  1910. X# else        /* XTEND_CURSIVE */
  1911. X        strcpy (space, "               ");
  1912. X# endif        /* XTEND_CURSIVE */
  1913. X    max = large ? 16 : 8;
  1914. X    for (n = 0; n < max; ++n) {
  1915. X        if (cursive) {
  1916. X            space[max- n - 1] = '\0';
  1917. X            fputs (space, stdout);
  1918. X        }
  1919. X        ptr = (byte *) s;
  1920. X        while (*ptr) {
  1921. X            b = cset[(*ptr << (large ? 4 : 3)) + n];
  1922. X            for (t = 7; t >= 0; --t)
  1923. X                if (((b & (1 << t)) != 0) ^ invers)
  1924. X                    putchar (forground ? forground : *ptr);
  1925. X                else
  1926. X                    putchar (background);
  1927. X            ++ptr;
  1928. X        }
  1929. X# ifdef        XTEND_CURSIVE
  1930. X        if (cursive)
  1931. X            for (t = 0; t < n; ++t)
  1932. X                putchar (invers ? forground : background);
  1933. X# endif        /* XTEND_CURSIVE */
  1934. X        putchar ('\n');
  1935. X    }
  1936. X}
  1937. X
  1938. static char    *help[] = {
  1939. X    "Syntax: mb [<opts>] [<string(s)] [<opts>]\n",
  1940. X    "Function: prints a string in large letter\n",
  1941. X    "Options:\n",
  1942. X    "     -o=<file> Use <file> instead of default font-file\n",
  1943. X    "     -l        print an even larger banner than default\n",
  1944. X    "     -c        make the banner cursive (eek, not real cursive...)\n",
  1945. X    "     -i        invert the characters\n",
  1946. X    "     -f=<char> use <char> as the forground pattern\n",
  1947. X    "     -b=<char> use <char> as the background pattern\n",
  1948. X    "     -s        use the printed character as the forground pattern\n",
  1949. X    NULL
  1950. X};
  1951. X
  1952. static void
  1953. usage ()
  1954. X{
  1955. X    register int    t;
  1956. X
  1957. X    for (t = 0; help[t]; ++t)
  1958. X        fputs (help[t], stderr);
  1959. X}
  1960. X
  1961. int
  1962. main (ac, av)
  1963. int ac;
  1964. char *av[];
  1965. X{
  1966. X    FILE    *fp;
  1967. X    byte    msync[2];
  1968. X    byte    *csetl, *csets;
  1969. X    int    t, err;
  1970. X    char    *ptr, *tmp;
  1971. X    int    use_char;
  1972. X    int    found_string;
  1973. X
  1974. X    fontfile = NULL;
  1975. X    large = FALSE;
  1976. X    cursive = FALSE;
  1977. X    invers = FALSE;
  1978. X    forground = '*';
  1979. X    background = ' ';
  1980. X    use_char = FALSE;
  1981. X    found_string = FALSE;
  1982. X    for (t = 1; t < ac; ++t)
  1983. X        if ((av[t][0] == '-') && (av[t][1] != '-')) {
  1984. X            ptr = av[t] + 1;
  1985. X            while (*ptr) {
  1986. X                switch (*ptr) {
  1987. X                    case 'o':
  1988. X                        ptr += *(ptr + 1) == '=' ? 2 : 1;
  1989. X                        fontfile = ptr;
  1990. X                        while (*ptr)
  1991. X                            ++ptr;
  1992. X                        break;
  1993. X                    case 'l':
  1994. X                        large = TRUE;
  1995. X                        break;
  1996. X                    case 'c':
  1997. X                        cursive = TRUE;
  1998. X                        break;
  1999. X                    case 'i':
  2000. X                        invers = TRUE;
  2001. X                        break;
  2002. X                    case 'f':
  2003. X                        ptr += *(ptr + 1) == '=' ? 2 : 1;
  2004. X                        forground = *ptr;
  2005. X                        break;
  2006. X                    case 'b':
  2007. X                        ptr += *(ptr + 1) == '=' ? 2 : 1;
  2008. X                        background = *ptr;
  2009. X                        break;
  2010. X                    case 's':
  2011. X                        use_char = TRUE;
  2012. X                        break;
  2013. X                    case '?':
  2014. X                    case 'h':
  2015. X                    default:
  2016. X                        usage ();
  2017. X                        exit (((*ptr == '?') || (*ptr == 'h')) ? 0 :
  2018. X                            _errmsg (1, "Unknown option '%c'.\n", *ptr));
  2019. X                }
  2020. X                if (*ptr)
  2021. X                    ++ptr;
  2022. X            }
  2023. X        } else
  2024. X            found_string = TRUE;
  2025. X    if (use_char)
  2026. X        forground = '\0';
  2027. X    if (large) {
  2028. X        if (! (csetl = (byte *) malloc (256 * 16)))
  2029. X            NO_MEM
  2030. X        csets = NULL;
  2031. X    } else {
  2032. X        if (! (csets = (byte *) malloc (256 * 8)))
  2033. X            NO_MEM
  2034. X        csetl = NULL;
  2035. X    }
  2036. X    if (! fontfile) {
  2037. X        if (ptr = getenv ("HOME"))
  2038. X            if (tmp = malloc (strlen (ptr) + 16)) {
  2039. X                sprintf (tmp, "%s/.font", ptr);
  2040. X                if (access (tmp, R_OK) != -1)
  2041. X                    fontfile = tmp;
  2042. X                else
  2043. X                    free (tmp);
  2044. X            }
  2045. X        if (! fontfile)
  2046. X            fontfile = DEF_FONTFILE;
  2047. X    }
  2048. X    if (! (fp = fopen (fontfile, READ_BINARY)))
  2049. X        exit (_errmsg (errno, "Can't open %s.\n", fontfile));
  2050. X    if (fread (msync, sizeof (byte), 2, fp) != 2) {
  2051. X        fclose (fp);
  2052. X        exit (_errmsg (errno, "Can't read first %d byte%s.\n",
  2053. X            sizeof (short), sizeof (short) > 1 ? "s" : ""));
  2054. X    }
  2055. X    if ((msync[0] == (byte) ((MODSYNC >> 8) & 0xff)) && (msync[1] == (byte) (MODSYNC & 0xff)))
  2056. X        err = fseek (fp, MODHEADSIZ, 0);
  2057. X    else
  2058. X        err = fseek (fp, 0, 0);
  2059. X    if (err == -1) {
  2060. X        fclose (fp);
  2061. X        exit (_errmsg (errno, "Can't fseek to start of font data!\n"));
  2062. X    }
  2063. X    if (large) {
  2064. X        if (fread (csetl, sizeof (byte), 16 * 256, fp) != 16 * 256) {
  2065. X            fclose (fp);
  2066. X            exit (_errmsg (errno, "Can't read font data (large).\n"));
  2067. X        }
  2068. X    } else {
  2069. X        if (fseek (fp, 256 * 16, 1) == -1) {
  2070. X            fclose (fp);
  2071. X            exit (_errmsg (errno, "Can't fseek to font data.\n"));
  2072. X        }
  2073. X        if (fread (csets, sizeof (byte), 8 * 256, fp) != 8 * 256) {
  2074. X            fclose (fp);
  2075. X            exit (_errmsg (errno, "Can't read font data (small).\n"));
  2076. X        }
  2077. X    }
  2078. X    fclose (fp);
  2079. X    if (found_string) {
  2080. X        for (t = 1; t < ac; ++t)
  2081. X            if ((av[t][0] != '-') || (av[t][1] == '-'))
  2082. X                banner (av[t] + (av[t][0] == '-' ? 1 : 0), large ? csetl : csets);
  2083. X    } else if (ptr = malloc (130)) {
  2084. X        while (fgets (ptr, 128, stdin)) {
  2085. X            if (tmp = index (ptr, '\n'))
  2086. X                *tmp = '\0';
  2087. X            banner (ptr, large ? csetl : csets);
  2088. X        }
  2089. X        free (ptr);
  2090. X    }
  2091. X}
  2092. END_OF_FILE
  2093. if test 6396 -ne `wc -c <'banner-11/mb.c'`; then
  2094.     echo shar: \"'banner-11/mb.c'\" unpacked with wrong size!
  2095. fi
  2096. # end of 'banner-11/mb.c'
  2097. fi
  2098. if test ! -d 'banner-2' ; then
  2099.     echo shar: Creating directory \"'banner-2'\"
  2100.     mkdir 'banner-2'
  2101. fi
  2102. if test ! -d 'banner-3' ; then
  2103.     echo shar: Creating directory \"'banner-3'\"
  2104.     mkdir 'banner-3'
  2105. fi
  2106. if test -f 'banner-3/Makefile' -a "${1}" != "-c" ; then 
  2107.   echo shar: Will not clobber existing file \"'banner-3/Makefile'\"
  2108. else
  2109. echo shar: Extracting \"'banner-3/Makefile'\" \(70 characters\)
  2110. sed "s/^X//" >'banner-3/Makefile' <<'END_OF_FILE'
  2111. CFLAGS = -O -s
  2112. X
  2113. all: banr
  2114. X
  2115. banr:
  2116. X    cc $(CFLAGS) banr.c -o $@ -ltermcap
  2117. END_OF_FILE
  2118. if test 70 -ne `wc -c <'banner-3/Makefile'`; then
  2119.     echo shar: \"'banner-3/Makefile'\" unpacked with wrong size!
  2120. fi
  2121. # end of 'banner-3/Makefile'
  2122. fi
  2123. if test -f 'banner-3/README' -a "${1}" != "-c" ; then 
  2124.   echo shar: Will not clobber existing file \"'banner-3/README'\"
  2125. else
  2126. echo shar: Extracting \"'banner-3/README'\" \(656 characters\)
  2127. sed "s/^X//" >'banner-3/README' <<'END_OF_FILE'
  2128. banr is a banner program with a relatively small (4 line) font.  It uses the
  2129. terminal's underline capability (from termcap) if found and not suppressed
  2130. X(with -n) to produce a more readable font.
  2131. X
  2132. This program is in the public domain.  Do whatever you want with/to it.
  2133. X
  2134. Installation:
  2135. X
  2136. X    Compile with "make".
  2137. X
  2138. X    It was successfully built on SunOS 3.5 - 4.1.1.
  2139. X
  2140. X    rindex() can be replaced by strrchr() [or throw it away -- it doesn't
  2141. X    do anything important].
  2142. X
  2143. Included are test/demonstration files produced by:
  2144. X
  2145. X    banr -n < banr.f0 > banr.f1
  2146. X    banr < banr.f0 > banr.f2    (on an xterm)
  2147. X
  2148. X _  __  ___ 
  2149. X/_\ |_)  |  
  2150. X| | | \  |  
  2151. X
  2152. Art Messenger
  2153. art@wilbur.coyote.trw.com
  2154. END_OF_FILE
  2155. if test 656 -ne `wc -c <'banner-3/README'`; then
  2156.     echo shar: \"'banner-3/README'\" unpacked with wrong size!
  2157. fi
  2158. # end of 'banner-3/README'
  2159. fi
  2160. if test -f 'banner-3/banr.f0' -a "${1}" != "-c" ; then 
  2161.   echo shar: Will not clobber existing file \"'banner-3/banr.f0'\"
  2162. else
  2163. echo shar: Extracting \"'banner-3/banr.f0'\" \(101 characters\)
  2164. sed "s/^X//" >'banner-3/banr.f0' <<'END_OF_FILE'
  2165. ABCDEFGHIJKLM
  2166. NOPQRSTUVWXYZ
  2167. abcdefghijklm
  2168. nopqrstuvwxyz
  2169. X0123456789
  2170. X!"#$%&'()*+;-./
  2171. X:;<=>?@[\]^_`{|}~
  2172. END_OF_FILE
  2173. if test 101 -ne `wc -c <'banner-3/banr.f0'`; then
  2174.     echo shar: \"'banner-3/banr.f0'\" unpacked with wrong size!
  2175. fi
  2176. # end of 'banner-3/banr.f0'
  2177. fi
  2178. if test -f 'banner-3/banr.f1' -a "${1}" != "-c" ; then 
  2179.   echo shar: Will not clobber existing file \"'banner-3/banr.f1'\"
  2180. else
  2181. echo shar: Extracting \"'banner-3/banr.f1'\" \(1292 characters\)
  2182. sed "s/^X//" >'banner-3/banr.f1' <<'END_OF_FILE'
  2183. X _  __   _  __  ___ ___  _  _ _ _  _ _ _ _   _  _ 
  2184. X/_\ |_) / ' | \ |_  |_  / _ |_| |  | |_/ |   |\/| 
  2185. X| | |_) \_, |_/ |__ |   \_| | | | \/ | \ |__ |  | 
  2186. X                                                  
  2187. X_  _  _  __   _  __   _  ___ _ _ _  _ _  _ _ _ _ _ __ 
  2188. X|\ | / \ |_) / \ |_) (_'  |  | | \  / |  | \_/ \_/  / 
  2189. X| \| \_/ |   \_X | \ ,_)  |  \_/  \/  \/\/ / \  |  /_ 
  2190. X                                                      
  2191. X                    _                         
  2192. X _. |_   _  _|  _  |_  _  |_  .  . |  | ._ _  
  2193. X(_| |_) |_ (_| (-' |  (_| | | |  | |< | | | | 
  2194. X                      ._)       ./            
  2195. X                                            
  2196. X._   _  ._   _. ._ _ |                    _ 
  2197. X| | (_) |_) (_| |  \ | |_| \/ \/\/ >< \_/ / 
  2198. X        |     |                       _/    
  2199. X _    _  _       __     __  _   _  
  2200. X/.\ |  ) _) /_| |_   /   / (_) (_) 
  2201. X\_/ | /_ _)   | ._) (_) /  (_)  /  
  2202. X                                   
  2203. X          __                              
  2204. X| // |_| (|  o/ o  / / \ \/ _|_ o __    / 
  2205. X.    |_| _|) /o (X   \ / /\  |  o    o /  
  2206. X     | |                        /         
  2207. X            _      __    __                  
  2208. o o / __ \ ' )  _  |  \   | /\    \ ( | ) ^v 
  2209. o o \ __ /  !  (Q) |_  \ _|    __   ( | )    
  2210. X  /                                          
  2211. END_OF_FILE
  2212. if test 1292 -ne `wc -c <'banner-3/banr.f1'`; then
  2213.     echo shar: \"'banner-3/banr.f1'\" unpacked with wrong size!
  2214. fi
  2215. # end of 'banner-3/banr.f1'
  2216. fi
  2217. if test -f 'banner-3/banr.f2.uu' -a "${1}" != "-c" ; then 
  2218.   echo shar: Will not clobber existing file \"'banner-3/banr.f2.uu'\"
  2219. else
  2220. echo shar: Extracting \"'banner-3/banr.f2.uu'\" \(3638 characters\)
  2221. sed "s/^X//" >'banner-3/banr.f2.uu' <<'END_OF_FILE'
  2222. begin 644 banr.f2
  2223. M(!M;-&T@&UMM(" ;6S1M(!M;;1M;-&T@&UMM(" @&ULT;2 ;6VT@(!M;-&T@
  2224. M&UMM&ULT;2 ;6VT@(!M;-&T@&UMM&ULT;2 ;6VT;6S1M(!M;;2 ;6S1M(!M;
  2225. M;1M;-&T@&UMM&ULT;2 ;6VT@(!M;-&T@&UMM(" ;6S1M(!M;;2 ;6S1M(!M;
  2226. M;2 ;6S1M(!M;;2 @&ULT;2 ;6VT@&ULT;2 ;6VT@&ULT;2 ;6VT@&ULT;2 ;
  2227. M6VT@(" ;6S1M(!M;;2 @&ULT;2 ;6VT@"B\;6S1M(!M;;5P@?!M;-&T@&UMM
  2228. M*2 O("<@?"!<('P;6S1M(!M;;2 @?!M;-&T@&UMM(" O(!M;-&T@&UMM('P;
  2229. M6S1M(!M;;7P@?" @?"!\&ULT;2 ;6VTO('P@("!\7"]\( H;6S1M?!M;;2 ;
  2230. M6S1M?!M;;2 ;6S1M?!M;;1M;-&T@&UMM*2!<&ULT;2 ;6VTL(!M;-&U\&UMM
  2231. M&ULT;2 ;6VTO(!M;-&U\&UMM&ULT;2 ;6VT;6S1M(!M;;2 ;6S1M?!M;;2 @
  2232. M(%P;6S1M(!M;;7P@&ULT;7P;6VT@&ULT;7P;6VT@&ULT;7P;6VT@7"\@&ULT
  2233. M;7P;6VT@&ULT;5P;6VT@&ULT;7P;6VT;6S1M(!M;;1M;-&T@&UMM(!M;-&U\
  2234. M&UMM(" ;6S1M?!M;;2 *(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  2235. M(" @(" @(" @(" @(" @(" @(" *&ULT;2 ;6VT@(!M;-&T@&UMM(" ;6S1M
  2236. M(!M;;2 @&ULT;2 ;6VT;6S1M(!M;;2 @(!M;-&T@&UMM(" ;6S1M(!M;;1M;
  2237. M-&T@&UMM(" @&ULT;2 ;6VT@(!M;-&T@&UMM&ULT;2 ;6VT;6S1M(!M;;2 ;
  2238. M6S1M(!M;;2 ;6S1M(!M;;2 ;6S1M(!M;;2 @&ULT;2 ;6VT@&ULT;2 ;6VT@
  2239. M(!M;-&T@&UMM(!M;-&T@&UMM(!M;-&T@&UMM(!M;-&T@&UMM(!M;-&T@&UMM
  2240. M(!M;-&T@&UMM&ULT;2 ;6VT@"GQ<('P@+R!<('P;6S1M(!M;;2D@+R!<('P;
  2241. M6S1M(!M;;2D@*!M;-&T@&UMM)R @?" @?"!\(%P@("\@?" @?"!<&ULT;2 ;
  2242. M6VTO(%P;6S1M(!M;;2\@("\@"AM;-&U\&UMM(%P;6S1M?!M;;2!<&ULT;2 ;
  2243. M6VTO(!M;-&U\&UMM(" @7!M;-&T@&UMM6" ;6S1M?!M;;2 ;6S1M7!M;;2 L
  2244. M&ULT;2 ;6VTI(" ;6S1M?!M;;2 @7!M;-&T@&UMM+R @7"\@(%PO7"\@&ULT
  2245. M;2\;6VT@&ULT;5P;6VT@(!M;-&U\&UMM(" ;6S1M+QM;;1M;-&T@&UMM( H@
  2246. M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  2247. M(" @(" @(" *(" @(" @(" @(" @(" @(" @(" ;6S1M(!M;;2 @(" @(" @
  2248. M(" @(" @(" @(" @(" @(" *(!M;-&T@&UMM+B!\&ULT;2 ;6VT@(" ;6S1M
  2249. M(!M;;2 @&ULT;2 ;6VU\(" ;6S1M(!M;;2 @&ULT;7P;6VT;6S1M(!M;;2 @
  2250. M&ULT;2 ;6VT@('P;6S1M(!M;;2 @+B @+B!\("!\("X;6S1M(!M;;2 ;6S1M
  2251. M(!M;;2 @"B@;6S1M(!M;;7P@?!M;-&T@&UMM*2!\&ULT;2 ;6VT@*!M;-&T@
  2252. M&UMM?" H&ULT;2T;6VTG('P@("@;6S1M(!M;;7P@?"!\('P@('P@?#P@&ULT
  2253. M;7P;6VT@?"!\('P@"B @(" @(" @(" @(" @(" @(" @(" N&ULT;2 ;6VTI
  2254. M(" @(" @("XO(" @(" @(" @(" @"B @(" @(" @(" @(" @(" @(" @(" @
  2255. M(" @(" @(" @(" @(" @(" @(" @"BX;6S1M(!M;;2 @(!M;-&T@&UMM(" N
  2256. M&ULT;2 ;6VT@(" ;6S1M(!M;;2X@+AM;-&T@&UMM(!M;-&T@&UMM(!M;-&U\
  2257. M&UMM(" @(" @(" @(" @(" @(" @(" ;6S1M(!M;;2 *?"!\("@;6S1M(!M;
  2258. M;2D@?!M;-&T@&UMM*2 H&ULT;2 ;6VU\('P@(!M;-&U<&UMM('P@?!M;-&T@
  2259. M&UMM?"!<+R!<+UPO(#X\(%P;6S1M(!M;;2\@&ULT;2\;6VT@"B @(" @(" @
  2260. M?" @(" @?" @(" @(" @(" @(" @(" @(" @(" @&ULT;2 ;6VTO(" @( H@
  2261. M&ULT;2 ;6VT@(" @&ULT;2 ;6VT@(!M;-&T@&UMM(" @(" @(!M;-&T@&UMM
  2262. M&ULT;2 ;6VT@(" @(!M;-&T@&UMM&ULT;2 ;6VT@(!M;-&T@&UMM(" @&ULT
  2263. M;2 ;6VT@( HO+EP@?" @*2 ;6S1M(!M;;2D@&ULT;2\;6VT;6S1M(!M;;7P@
  2264. M?!M;-&T@&UMM(" @&ULT;2\;6VT@(" O("@;6S1M(!M;;2D@*!M;-&T@&UMM
  2265. M*2 *7!M;-&T@&UMM+R!\(!M;-&TO&UMM&ULT;2 ;6VT@&ULT;2 ;6VTI(" @
  2266. M?" N&ULT;2 ;6VTI("@;6S1M(!M;;2D@+R @*!M;-&T@&UMM*2 @+R @"B @
  2267. M(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @"B @(" @(" @(" ;
  2268. M6S1M(!M;;1M;-&T@&UMM(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  2269. M"GP@+R\@&ULT;7P;6VT;6S1M(!M;;1M;-&U\&UMM("@;6S1M?!M;;2 @;R\@
  2270. M;R @+R O(%P@&ULT;5P;6VT;6S1M+QM;;2 ;6S1M(!M;;1M;-&U\&UMM&ULT
  2271. M;2 ;6VT@;R ;6S1M(!M;;1M;-&T@&UMM(" @("\@"BX@(" @&ULT;7P;6VT;
  2272. M6S1M(!M;;1M;-&U\&UMM(!M;-&T@&UMM&ULT;7P;6VTI("]O("A8(" @7" O
  2273. M("]<("!\("!O(" @(&\@+R @"B @(" @?"!\(" @(" @(" @(" @(" @(" @
  2274. M(" @(" @+R @(" @(" @( H@(" @(" @(" @(" ;6S1M(!M;;2 @(" @(!M;
  2275. M-&T@&UMM&ULT;2 ;6VT@(" @&ULT;2 ;6VT;6S1M(!M;;2 @(" @(" @(" @
  2276. M(" @(" @( IO(&\@+R ;6S1M(!M;;1M;-&T@&UMM(%P@)R I(" ;6S1M(!M;
  2277. M;2 @?" @7" @('P@+UP@(" @7" H('P@*2!>=B *;R!O(%P@&ULT;2 ;6VT;
  2278. M6S1M(!M;;2 O(" A(" H&ULT;5$;6VT;6S1M*1M;;2 ;6S1M?!M;;1M;-&T@
  2279. M&UMM("!<(!M;-&T@&UMM&ULT;7P;6VT@(" @&ULT;2 ;6VT;6S1M(!M;;2 @
  2280. M("@@?" I(" @( H@("\@(" @(" @(" @(" @(" @(" @(" @(" @(" @(" @
  2281. X,(" @(" @(" @(" *
  2282. end
  2283. END_OF_FILE
  2284. if test 3638 -ne `wc -c <'banner-3/banr.f2.uu'`; then
  2285.     echo shar: \"'banner-3/banr.f2.uu'\" unpacked with wrong size!
  2286. fi
  2287. # end of 'banner-3/banr.f2.uu'
  2288. fi
  2289. if test ! -d 'banner-4' ; then
  2290.     echo shar: Creating directory \"'banner-4'\"
  2291.     mkdir 'banner-4'
  2292. fi
  2293. if test -f 'banner-4/sysvbanner.c' -a "${1}" != "-c" ; then 
  2294.   echo shar: Will not clobber existing file \"'banner-4/sysvbanner.c'\"
  2295. else
  2296. echo shar: Extracting \"'banner-4/sysvbanner.c'\" \(6293 characters\)
  2297. sed "s/^X//" >'banner-4/sysvbanner.c' <<'END_OF_FILE'
  2298. X/*****************************************************************
  2299. X * 
  2300. X * SYSVbanner.c
  2301. X * 
  2302. X * This is a PD version of the SYS V banner program (at least I think 
  2303. X * it is compatible to SYS V) which I wrote to use with the clock 
  2304. X * program written by:
  2305. X **     DCF, Inc.
  2306. X **     14623 North 49th Place
  2307. X **     Scottsdale, AZ 85254
  2308. X * and published in the net comp.sources.misc newsgroup in early July 
  2309. X * since the BSD banner program works quite differently.
  2310. X * 
  2311. X * There is no copyright or responsibility accepted for the use
  2312. X * of this software.
  2313. X * 
  2314. X * Brian Wallis, brw@jim.odr.oz, 4 July 1988
  2315. X *
  2316. X *****************************************************************/
  2317. X
  2318. char *glyphs[] = {
  2319. X"         @@@  @@@ @@@  @ @   @@@@@ @@@   @  @@     @@@  ",
  2320. X"         @@@  @@@ @@@  @ @  @  @  @@ @  @  @  @    @@@   ",
  2321. X"         @@@   @   @ @@@@@@@@  @   @@@ @    @@      @   ",
  2322. X"          @            @ @   @@@@@    @    @@@     @    ",
  2323. X"                     @@@@@@@   @  @  @ @@@@   @ @       ",
  2324. X"         @@@           @ @  @  @  @ @  @ @@    @        ",
  2325. X"         @@@           @ @   @@@@@ @   @@@ @@@@ @       ",
  2326. X
  2327. X"   @@    @@                                            @",
  2328. X"  @        @   @   @    @                             @ ",
  2329. X" @          @   @ @     @                            @  ",
  2330. X" @          @ @@@ @@@ @@@@@   @@@   @@@@@           @   ",
  2331. X" @          @   @ @     @     @@@           @@@    @    ",
  2332. X"  @        @   @   @    @      @            @@@   @     ",
  2333. X"   @@    @@                   @             @@@  @      ",
  2334. X
  2335. X"  @@@     @    @@@@@  @@@@@ @      @@@@@@@ @@@@@ @@@@@@@",
  2336. X" @   @   @@   @     @@     @@    @ @      @     @@    @ ",
  2337. X"@ @   @ @ @         @      @@    @ @      @          @  ",
  2338. X"@  @  @   @    @@@@@  @@@@@ @@@@@@@ @@@@@ @@@@@@    @   ",
  2339. X"@   @ @   @   @            @     @       @@     @  @    ",
  2340. X" @   @    @   @      @     @     @ @     @@     @  @    ",
  2341. X"  @@@   @@@@@ @@@@@@@ @@@@@      @  @@@@@  @@@@@   @    ",
  2342. X
  2343. X" @@@@@  @@@@@    @     @@@      @           @     @@@@@ ",
  2344. X"@     @@     @  @ @    @@@     @             @   @     @",
  2345. X"@     @@     @   @            @     @@@@@     @        @",
  2346. X" @@@@@  @@@@@@         @@@   @                 @     @@ ",
  2347. X"@     @      @   @     @@@    @     @@@@@     @     @   ",
  2348. X"@     @@     @  @ @     @      @             @          ",
  2349. X" @@@@@  @@@@@    @     @        @           @       @   ",
  2350. X
  2351. X" @@@@@    @   @@@@@@  @@@@@ @@@@@@ @@@@@@@@@@@@@@ @@@@@ ",
  2352. X"@     @  @ @  @     @@     @@     @@      @      @     @",
  2353. X"@ @@@ @ @   @ @     @@      @     @@      @      @      ",
  2354. X"@ @ @ @@     @@@@@@@ @      @     @@@@@@  @@@@@  @  @@@@",
  2355. X"@ @@@@ @@@@@@@@     @@      @     @@      @      @     @",
  2356. X"@     @@     @@     @@     @@     @@      @      @     @",
  2357. X" @@@@@ @     @@@@@@@  @@@@@ @@@@@@ @@@@@@@@       @@@@@ ",
  2358. X
  2359. X"@     @  @*@        @@    @ @      @     @@     @@@@@@@@",
  2360. X"@     @   @         @@   @  @      @@   @@@@    @@     @",
  2361. X"@     @   @         @@  @   @      @ @ @ @@ @   @@     @",
  2362. X"@@@@@@@   @         @@@@    @      @  @  @@  @  @@     @",
  2363. X"@     @   @   @     @@  @   @      @     @@   @ @@     @",
  2364. X"@     @   @   @     @@   @  @      @     @@    @@@     @",
  2365. X"@     @  @@@   @@@@@ @    @ @@@@@@@@     @@     @@@@@@@@",
  2366. X
  2367. X"@@@@@@  @@@@@ @@@@@@  @@@@@ @@@@@@@@     @@     @@     @",
  2368. X"@     @@     @@     @@     @   @   @     @@     @@  @  @",
  2369. X"@     @@     @@     @@         @   @     @@     @@  @  @",
  2370. X"@@@@@@ @     @@@@@@@  @@@@@    @   @     @@     @@  @  @",
  2371. X"@      @   @ @@   @        @   @   @     @ @   @ @  @  @",
  2372. X"@      @    @ @    @ @     @   @   @     @  @ @  @  @  @",
  2373. X"@       @@@@ @@     @ @@@@@    @    @@@@@    @    @@ @@ ",
  2374. X
  2375. X"@     @@     @@@@@@@@ @@@@@ @       @@@@@    @          ",
  2376. X" @   @  @   @      @  @      @          @   @ @         ",
  2377. X"  @ @    @ @      @   @       @         @  @   @        ",
  2378. X"   @      @      @    @        @        @               ",
  2379. X"  @ @     @     @     @         @       @               ",
  2380. X" @   @    @    @      @          @      @               ",
  2381. X"@     @   @   @@@@@@@ @@@@@       @ @@@@@        @@@@@@@",
  2382. X
  2383. X"  @@@                                                   ",
  2384. X"  @@@     @@   @@@@@   @@@@  @@@@@  @@@@@@ @@@@@@  @@@@ ",
  2385. X"   @     @  @  @    @ @    @ @    @ @      @      @    @",
  2386. X"    @   @    @ @@@@@  @      @    @ @@@@@  @@@@@  @     ",
  2387. X"        @@@@@@ @    @ @      @    @ @      @      @  @@@",
  2388. X"        @    @ @    @ @    @ @    @ @      @      @    @",
  2389. X"        @    @ @@@@@   @@@@  @@@@@  @@@@@@ @       @@@@ ",
  2390. X"                                                        ",
  2391. X" @    @    @        @ @    @ @      @    @ @    @  @@@@ ",
  2392. X" @    @    @        @ @   @  @      @@  @@ @@   @ @    @",
  2393. X" @@@@@@    @        @ @@@@   @      @ @@ @ @ @  @ @    @",
  2394. X" @    @    @        @ @  @   @      @    @ @  @ @ @    @",
  2395. X" @    @    @   @    @ @   @  @      @    @ @   @@ @    @",
  2396. X" @    @    @    @@@@  @    @ @@@@@@ @    @ @    @  @@@@ ",
  2397. X"                                                        ",
  2398. X" @@@@@   @@@@  @@@@@   @@@@   @@@@@ @    @ @    @ @    @",
  2399. X" @    @ @    @ @    @ @         @   @    @ @    @ @    @",
  2400. X" @    @ @    @ @    @  @@@@     @   @    @ @    @ @    @",
  2401. X" @@@@@  @  @ @ @@@@@       @    @   @    @ @    @ @ @@ @",
  2402. X" @      @   @  @   @  @    @    @   @    @  @  @  @@  @@",
  2403. X" @       @@@ @ @    @  @@@@     @    @@@@    @@   @    @",
  2404. X"                       @@@     @     @@@   @@    @ @ @ @",
  2405. X" @    @  @   @ @@@@@@ @        @        @ @  @  @ @ @ @ ",
  2406. X"  @  @    @ @      @  @        @        @     @@ @ @ @ @",
  2407. X"   @@      @      @  @@                 @@        @ @ @ ",
  2408. X"   @@      @     @    @        @        @        @ @ @ @",
  2409. X"  @  @     @    @     @        @        @         @ @ @ ",
  2410. X" @    @    @   @@@@@@  @@@     @     @@@         @ @ @ @"};
  2411. X
  2412. X
  2413. main(argc,argv)
  2414. X     int argc;
  2415. X     char *argv[];
  2416. X{
  2417. X  int a,b,c,len,ind;
  2418. X  char line[80];
  2419. X
  2420. X  for(argv++;--argc;argv++){
  2421. X    len=strlen(*argv);
  2422. X    if(len>10)
  2423. X      len=10;
  2424. X    for(a=0;a<7;a++){
  2425. X      for(b=0;b<len;b++){
  2426. X        if((ind=(*argv)[b]-' ')<0)
  2427. X          ind=0;
  2428. X        for(c=0;c<7;c++){
  2429. X          line[b*8+c] = glyphs[(ind/8*7)+a][(ind%8*7)+c];
  2430. X        }
  2431. X        line[b*8+7] = ' ';
  2432. X      }
  2433. X      for(b=len*8-1;b>=0;b--){
  2434. X        if(line[b]!=' ')
  2435. X          break;
  2436. X        line[b]='\0';
  2437. X      }
  2438. X      puts(line);
  2439. X    }
  2440. X    puts("");
  2441. X  }
  2442. X}
  2443. END_OF_FILE
  2444. if test 6293 -ne `wc -c <'banner-4/sysvbanner.c'`; then
  2445.     echo shar: \"'banner-4/sysvbanner.c'\" unpacked with wrong size!
  2446. fi
  2447. # end of 'banner-4/sysvbanner.c'
  2448. fi
  2449. if test ! -d 'banner-5' ; then
  2450.     echo shar: Creating directory \"'banner-5'\"
  2451.     mkdir 'banner-5'
  2452. fi
  2453. if test -f 'banner-5/3db.c' -a "${1}" != "-c" ; then 
  2454.   echo shar: Will not clobber existing file \"'banner-5/3db.c'\"
  2455. else
  2456. echo shar: Extracting \"'banner-5/3db.c'\" \(5167 characters\)
  2457. sed "s/^X//" >'banner-5/3db.c' <<'END_OF_FILE'
  2458. X/* 3db : three-dimensional banner
  2459. X *
  2460. X * Who the heck wrote original Pascal version?
  2461. X *
  2462. X * C version by Han, Yun-Su
  2463. X * 880505 KAIST undergraduate Dept of Life Science
  2464. X */
  2465. X
  2466. X#include <stdio.h>
  2467. X
  2468. main(argc, argv)
  2469. int argc;
  2470. char **argv;
  2471. X{
  2472. X    char line[256];
  2473. X
  2474. X    if (argc < 2)    {
  2475. X        fprintf(stderr, "&:^)\n");
  2476. X        exit(1);
  2477. X        }
  2478. X    getline(line, argc, argv);
  2479. X    lowerline(line);
  2480. X    putline(line);
  2481. X}
  2482. X
  2483. getline(s, n, v)
  2484. char *s;
  2485. int n;
  2486. char *v[];
  2487. X{
  2488. X    int i, j;
  2489. X
  2490. X    strcpy(s, "");
  2491. X    for (i = 1; i < n; i++, s++)    {
  2492. X        for (j = 0; v[i][j] != '\0'; j++, s++)
  2493. X            *s = v[i][j];
  2494. X        *s = ' ';
  2495. X        }
  2496. X    s--;
  2497. X    *s = '\0';
  2498. X}
  2499. X
  2500. lowerline(s)
  2501. char *s;
  2502. X{
  2503. X    char *p;
  2504. X
  2505. X    for (p = s; *p != '\0'; p++)
  2506. X        if (*p >= 'A' && *p <= 'Z')
  2507. X            *p = *p - 'A' + 'a';
  2508. X}
  2509. X
  2510. X#define    Height        8    /* Height of 3D Font */
  2511. X#define    Blank        "     "
  2512. putline(s)
  2513. char *s;
  2514. X{
  2515. X    static char *data[] = {
  2516. X        "     ____    ",
  2517. X        "   /____/ \\  ",
  2518. X        " /|     \\ /| ",
  2519. X        "| |______| | ",
  2520. X        "|/_______| | ",
  2521. X        "| |      | | ",
  2522. X        "| |      | | ",
  2523. X        "|/       |/  ",
  2524. X        "  _______    ",
  2525. X        " /______/ \\  ",
  2526. X        "| |     \\ /| ",
  2527. X        "| |______|/  ",
  2528. X        "|/______/ \\  ",
  2529. X        "| |     \\ /| ",
  2530. X        "| |______|/  ",
  2531. X        "|/______/    ",
  2532. X        "     _____    ",
  2533. X        "   /____ / \\  ",
  2534. X        " /|      \\ /| ",
  2535. X        "| |       |/  ",
  2536. X        "| |           ",
  2537. X        "| |        /| ",
  2538. X        "|/ \\______|/  ",
  2539. X        " \\ /_____/    ",
  2540. X        "  _______    ",
  2541. X        " /______/ \\  ",
  2542. X        "| |     \\ /| ",
  2543. X        "| |      | | ",
  2544. X        "| |      | | ",
  2545. X        "| |      | | ",
  2546. X        "| |______|/  ",
  2547. X        "|/______/    ",
  2548. X        "  __________ ",
  2549. X        " /_________/ ",
  2550. X        "| |          ",
  2551. X        "| |______    ",
  2552. X        "|/______/    ",
  2553. X        "| |          ",
  2554. X        "| |_________ ",
  2555. X        "|/_________/ ",
  2556. X        "  __________ ",
  2557. X        " /_________/ ",
  2558. X        "| |          ",
  2559. X        "| |______    ",
  2560. X        "|/______/    ",
  2561. X        "| |          ",
  2562. X        "| |          ",
  2563. X        "|/           ",
  2564. X        "     _____    ",
  2565. X        "   /____ / \\  ",
  2566. X        " /|      \\ /| ",
  2567. X        "| |       |/  ",
  2568. X        "| |       __  ",
  2569. X        "| |     /_ /| ",
  2570. X        "|/ \\______|/  ",
  2571. X        " \\ /_____/    ",
  2572. X        "             ",
  2573. X        " /|       /| ",
  2574. X        "| |      | | ",
  2575. X        "| |______| | ",
  2576. X        "|/_______| | ",
  2577. X        "| |      | | ",
  2578. X        "| |      | | ",
  2579. X        "|/       |/  ",
  2580. X        " _____ ",
  2581. X        "/____/ ",
  2582. X        "  | |  ",
  2583. X        "  | |  ",
  2584. X        "  | |  ",
  2585. X        "  | |  ",
  2586. X        " _| |_ ",
  2587. X        "/_|/_/ ",
  2588. X        "          ",
  2589. X        "       /| ",
  2590. X        "      | | ",
  2591. X        "      | | ",
  2592. X        "      | | ",
  2593. X        "      | | ",
  2594. X        "/ \\___|/  ",
  2595. X        "\\ /__/    ",
  2596. X        "            ",
  2597. X        " /|      /  ",
  2598. X        "| |    /    ",
  2599. X        "| |  /      ",
  2600. X        "| |/  \\     ",
  2601. X        "|/| \\   \\   ",
  2602. X        "| |   \\   \\ ",
  2603. X        "|/      \\ / ",
  2604. X        "           ",
  2605. X        " /|        ",
  2606. X        "| |        ",
  2607. X        "| |        ",
  2608. X        "| |        ",
  2609. X        "| |        ",
  2610. X        "| |_______ ",
  2611. X        "|/_______/ ",
  2612. X        "               ",
  2613. X        " / \\        /| ",
  2614. X        "|\\  \\      / | ",
  2615. X        "| \\  \\    /| | ",
  2616. X        "| |\\  \\  / | | ",
  2617. X        "| | \\  \\/  | | ",
  2618. X        "| |  \\ /   | | ",
  2619. X        "|/         |/  ",
  2620. X        "           ",
  2621. X        " / \\    /| ",
  2622. X        "|\\  \\  | | ",
  2623. X        "| \\  \\ | | ",
  2624. X        "| |\\  \\| | ",
  2625. X        "| | \\  | | ",
  2626. X        "| |  \\ | | ",
  2627. X        "|/    \\|/  ",
  2628. X        "     ____    ",
  2629. X        "   /___ / \\  ",
  2630. X        " /|     \\ /| ",
  2631. X        "| |      | | ",
  2632. X        "| |      | | ",
  2633. X        "| |      | | ",
  2634. X        "|/ \\ ____|/  ",
  2635. X        " \\ /____/    ",
  2636. X        "  _______    ",
  2637. X        " /______/ \\  ",
  2638. X        "| |     \\ /| ",
  2639. X        "| |______|/  ",
  2640. X        "|/______/    ",
  2641. X        "| |          ",
  2642. X        "| |          ",
  2643. X        "|/           ",
  2644. X        "     ____     ",
  2645. X        "   /___ / \\   ",
  2646. X        " /|     \\ /|  ",
  2647. X        "| |      | |  ",
  2648. X        "| |      | |  ",
  2649. X        "| |     /| |  ",
  2650. X        "|/ \\ ___\\|/ \\ ",
  2651. X        " \\ /____/ \\ / ",
  2652. X        "  _______    ",
  2653. X        " /______/ \\  ",
  2654. X        "| |     \\ /| ",
  2655. X        "| |______|/  ",
  2656. X        "|/______/    ",
  2657. X        "| | \\   \\    ",
  2658. X        "| |   \\   \\  ",
  2659. X        "|/      \\ /  ",
  2660. X        "     _____    ",
  2661. X        "   /____ / \\  ",
  2662. X        " /|      \\ /  ",
  2663. X        "|/ \\ _____    ",
  2664. X        " \\ /____ / \\  ",
  2665. X        "         \\ /| ",
  2666. X        " / \\ _____|/  ",
  2667. X        " \\ /_____/    ",
  2668. X        " _______________ ",
  2669. X        "/______________/ ",
  2670. X        "       | |       ",
  2671. X        "       | |       ",
  2672. X        "       | |       ",
  2673. X        "       | |       ",
  2674. X        "       | |       ",
  2675. X        "       |/        ",
  2676. X        "             ",
  2677. X        " /|       /| ",
  2678. X        "| |      | | ",
  2679. X        "| |      | | ",
  2680. X        "| |      | | ",
  2681. X        "| |      | | ",
  2682. X        "|/ \\ ____|/  ",
  2683. X        " \\ /____/    ",
  2684. X        "              ",
  2685. X        "/ \\         / ",
  2686. X        "\\  \\       /  ",
  2687. X        " \\  \\     /   ",
  2688. X        "  \\  \\   /    ",
  2689. X        "   \\  \\ /     ",
  2690. X        "    \\  /      ",
  2691. X        "     \\/       ",
  2692. X        "                     ",
  2693. X        "/ \\                / ",
  2694. X        "\\  \\              /  ",
  2695. X        " \\  \\     /\\     /   ",
  2696. X        "  \\  \\   /  \\   /    ",
  2697. X        "   \\  \\ / \\  \\ /     ",
  2698. X        "    \\  /   \\  /      ",
  2699. X        "     \\/     \\/       ",
  2700. X        "              ",
  2701. X        "/ \\         / ",
  2702. X        "\\   \\     /   ",
  2703. X        "  \\   \\ /     ",
  2704. X        "    \\ / \\     ",
  2705. X        "    / \\   \\   ",
  2706. X        "  /     \\   \\ ",
  2707. X        "/         \\ / ",
  2708. X        "              ",
  2709. X        "/ \\         / ",
  2710. X        "\\   \\     /   ",
  2711. X        "  \\   \\ /     ",
  2712. X        "    \\ /|      ",
  2713. X        "     | |      ",
  2714. X        "     | |      ",
  2715. X        "     |/       ",
  2716. X        " ____________ ",
  2717. X        "/___________/ ",
  2718. X        "          /   ",
  2719. X        "        /     ",
  2720. X        "      /       ",
  2721. X        "    /         ",
  2722. X        "  /__________ ",
  2723. X        "/___________/ ",
  2724. X        ""
  2725. X        };
  2726. X    int i;
  2727. X    char *p;
  2728. X
  2729. X    for (i = 0; i < Height; i++)    {
  2730. X        for (p = s; *p != '\0'; p++)
  2731. X            if (*p < 'a' || *p > 'z')
  2732. X                printf(Blank);
  2733. X            else
  2734. X                printf("%s", data[(*p - 'a') * Height + i]);
  2735. X        printf("\n");
  2736. X        }
  2737. X}
  2738. END_OF_FILE
  2739. if test 5167 -ne `wc -c <'banner-5/3db.c'`; then
  2740.     echo shar: \"'banner-5/3db.c'\" unpacked with wrong size!
  2741. fi
  2742. # end of 'banner-5/3db.c'
  2743. fi
  2744. if test -f 'banner-5/Banner.doc' -a "${1}" != "-c" ; then 
  2745.   echo shar: Will not clobber existing file \"'banner-5/Banner.doc'\"
  2746. else
  2747. echo shar: Extracting \"'banner-5/Banner.doc'\" \(854 characters\)
  2748. sed "s/^X//" >'banner-5/Banner.doc' <<'END_OF_FILE'
  2749. X===============================================================================
  2750. Banner : Collected by Han YoonSoo KAIST undergradute 880505
  2751. X===============================================================================
  2752. file name    : description
  2753. X===============================================================================
  2754. block.c        : block style banner (english)
  2755. cursive.c    : cursive (english)
  2756. kban.c        : semi's banner (korean and english)
  2757. kbandat.c    : data file for 'kban.c'
  2758. kban.hlp    : help file for 'kban'
  2759. lban.c        : large korean banner
  2760. lban.dat    : data file for 'lban.c'
  2761. sban.c        : small korean banner
  2762. sban.dat    : data file for 'sban.c'
  2763. vban.c        : vertical banner (english)
  2764. X3db.c        : three-dimensional banner (english)
  2765. leb.c        : large english banner
  2766. seb.c        : small english banner
  2767. X-------------------------------------------------------------------------------
  2768. END_OF_FILE
  2769. if test 854 -ne `wc -c <'banner-5/Banner.doc'`; then
  2770.     echo shar: \"'banner-5/Banner.doc'\" unpacked with wrong size!
  2771. fi
  2772. # end of 'banner-5/Banner.doc'
  2773. fi
  2774. if test -f 'banner-5/kban.c' -a "${1}" != "-c" ; then 
  2775.   echo shar: Will not clobber existing file \"'banner-5/kban.c'\"
  2776. else
  2777. echo shar: Extracting \"'banner-5/kban.c'\" \(5312 characters\)
  2778. sed "s/^X//" >'banner-5/kban.c' <<'END_OF_FILE'
  2779. X/********************************************************/
  2780. X/*                            */
  2781. X/*    SEMI's BANNER ( Ver 1.21- ) :            */
  2782. X/*                            */
  2783. X/*        made    by Koh,BongGyun            */
  2784. X/*            in '91.4 ( Ver 1.0- )        */
  2785. X/*               '91.5 ( Ver 1.11- )        */
  2786. X/*               '91.9            */
  2787. X/*                            */
  2788. X/*        e-mail to e910017@xserver.kaist.ac.kr    */
  2789. X/*                            */
  2790. X/********************************************************/
  2791. X
  2792. X#include <stdio.h>
  2793. X
  2794. X#define    END    '\0'
  2795. X#define    NO    -1
  2796. X#define DATFILE    "kbandat.c"
  2797. X
  2798. X#include DATFILE
  2799. X
  2800. char    *data;                /* data inputed */
  2801. short    font[ _WIDTH+2 ][ MAX_LEN ];    /* font data to output */
  2802. X    /* font[ _WIDTH ] : width of letter, font[ _WIDTH+1 ] : cmode */
  2803. X
  2804. short    count;    /* pass1: now reading count-th character in data */
  2805. X        /* output: now reading count-th font */
  2806. short    digit;    /* pass1: now making digit-th font */
  2807. X        /* output: total digits of font */
  2808. X
  2809. main( argc, argv )
  2810. X    short    argc;
  2811. X    char    *argv[];
  2812. X{
  2813. X    int    i;
  2814. X    void    pass1(), output();
  2815. X
  2816. X    if ( argc == 1 )    puts( ":)" );    /* refuse if no strings */
  2817. X    else    for ( i=1 ; i < argc ; ++i ) {
  2818. X            data = argv[ i ];    /* data is the i-th string */
  2819. X            count = digit = 0;
  2820. X
  2821. X            pass1();    /* making font */
  2822. X            output();    /* output font with compression */
  2823. X        }
  2824. X}
  2825. X
  2826. void    pass1()        /* making font following data */
  2827. X{
  2828. X    short    kor =NO, i;
  2829. X    void    make_eng(), make_kor();
  2830. X
  2831. X    while ( data[ count ] != END )
  2832. X        if ( data[ count ] == CMD_CHR )
  2833. X            if ( data[ ++count ] == CMD_CHR )    /* double CMD_CHR is one normal character */
  2834. X                make_eng();
  2835. X            else
  2836. X            switch ( instr( mod_chr, data[ count ] ) + 1 ) {
  2837. X              case 0:    /* toggle Korean mode */
  2838. X                kor = -kor;    break;
  2839. X              case 1:    /* change choice char's */
  2840. X                if ( ( i = data[ ++count ] - '0' ) < 0 || i >= N_CMODE )
  2841. X                    cmode = 0;
  2842. X                else {    cmode = i;        ++count; }
  2843. X                break;
  2844. X              case 2:    /* change English letter types */
  2845. X                if ( ( i = data[ ++count ] - '0' ) < 0 || i >= N_MODE )
  2846. X                    mode = 0;
  2847. X                else {    mode = i;        ++count; }
  2848. X            }
  2849. X        else if ( kor == NO )    make_eng();
  2850. X        else            make_kor();
  2851. X}
  2852. X
  2853. void    output()    /* output font with compression */
  2854. X{
  2855. X    short    i;
  2856. X    void    output1();
  2857. X
  2858. X    for ( i=0 ; i < WIDTH ; i+=2 ) {
  2859. X        output1( font[ i ], font[ i+1 ] );    /* compress two lines into one line and output it */
  2860. X        putchar( '\n' );
  2861. X    }
  2862. X}
  2863. X
  2864. void    output1( font1, font2 )        /* compress two lines and output */
  2865. X    short    *font1, *font2;
  2866. X{
  2867. X    short    i;
  2868. X    void    output2();
  2869. X
  2870. X    for ( i=0 ; i < digit ; ++i )
  2871. X        output2( font1[ i ], font2[ i ], font[ _WIDTH ][ i ], font[ _WIDTH+1 ][ i ] );    /* output one digit font in two lines with compression */
  2872. X}
  2873. X
  2874. void    output2( f1, f2, len, cmode )        /* output a digit font with compression */
  2875. X    short    f1, f2;
  2876. X    short    len;
  2877. X    short    cmode;
  2878. X{
  2879. X    short    choice, i;
  2880. X
  2881. X    for ( i=stepspace ; i > 0 ; --i )
  2882. X        putchar( font_choice[ cmode ][ 0 ] );
  2883. X    while ( ( len /= 2 ) > 0 ) {
  2884. X        choice = ( f1 / len ) * 2 + ( f2 / len );    /* get the choice determining the character to output */
  2885. X        putchar( font_choice[ cmode ][ choice ] );    /* output a bit character */
  2886. X        f1 %= len; f2 %= len;
  2887. X    }
  2888. X}
  2889. X
  2890. void    make_eng()    /* making font in English mode */
  2891. X{
  2892. X    short    i, in;
  2893. X
  2894. X    if ( ( in = instr( eng_chr, data[ count++ ] ) ) != NO ) {
  2895. X        for ( i=0 ; i < WIDTH ; ++i )
  2896. X            font[ i ][ digit ] = eng_fnt[ mode ][ in ][ i ];    /* read font */
  2897. X        font[ _WIDTH ][ digit ] = eng_fnt[ mode ][ in ][ i ];        /* read the width */
  2898. X        font[ _WIDTH+1 ][ digit++ ] = cmode;
  2899. X    }
  2900. X}
  2901. X
  2902. void    make_kor()    /* making font in Korean mode */
  2903. X{
  2904. X    short    fir, sec, thi, i;
  2905. X    short    att_f =0, att_s =0;
  2906. X
  2907. X    if ( ( fir = instr( kor_key[ 0 ], data[ count ] ) ) != NO )
  2908. X        ++count;
  2909. X    if ( ( sec = instr( kor_key[ 1 ], data[ count ] ) ) != NO ) {
  2910. X        if ( sec >= 9 ) {
  2911. X            ++att_f;
  2912. X            switch ( instr( "hnm", data[ count++ ] ) + 1 ) {
  2913. X              case 1:
  2914. X                if ( ( i = instr( "kol", data[ count ] ) ) != NO ) {
  2915. X                    sec += i+1;    ++count;    ++att_f;
  2916. X                }
  2917. X                break;
  2918. X              case 2:
  2919. X                if ( ( i = instr( "jpl", data[ count ] ) ) != NO ) {
  2920. X                    sec += i+1;    ++count;    ++att_f;
  2921. X                }
  2922. X                break;
  2923. X              case 3:
  2924. X                if ( data[ count ] == 'l' ) {
  2925. X                    ++sec;        ++count;    ++att_f;
  2926. X                }
  2927. X            }
  2928. X        }
  2929. X        else    ++count;
  2930. X        if ( ( thi = instr( kor_key[ 2 ], data[ count ] ) ) != NO &&
  2931. X             instr( kor_key[ 1 ], data[ count+1 ] ) == NO ) {
  2932. X            att_f += 3;    att_s = 1;
  2933. X            if ( ( i = instr( "rsfq", data[ count++ ] ) ) != NO &&
  2934. X                 instr( kor_key[ 1 ], data[ count+1 ] ) == NO ) {
  2935. X                switch ( i ) {
  2936. X                  case 0:
  2937. X                    if ( data[ count ] == 't' ) {
  2938. X                        ++thi;        ++count;
  2939. X                    }
  2940. X                    break;
  2941. X                  case 1:
  2942. X                    if ( ( i = instr( "wg", data[ count ] ) ) != NO ) {
  2943. X                        thi += i+1;    ++count;
  2944. X                    }
  2945. X                    break;
  2946. X                  case 2:
  2947. X                    if ( ( i = instr( "raqtxvg", data[ count ] ) ) != NO ) {
  2948. X                        thi += i+1;    ++count;
  2949. X                    }
  2950. X                    break;
  2951. X                  case 3:
  2952. X                    if ( data[ count ] == 't' ) {
  2953. X                        ++thi;        ++count;
  2954. X                    }
  2955. X                }
  2956. X            }
  2957. X        }
  2958. X    }
  2959. X
  2960. X    if ( fir == NO && sec == NO )
  2961. X        make_eng();    /* if not Korean letter, deal it as English */
  2962. X    else {
  2963. X        for ( i=0 ; i < WIDTH ; ++i ) {
  2964. X            font[ i ][ digit ] = ( fir != NO ) ? fir_fnt[ att_f ][ fir ][ i ] : 0;
  2965. X            if ( sec != NO ) {
  2966. X                font[ i ][ digit ] |= sec_fnt[ att_s ][ sec ][ i ];
  2967. X                if ( att_s != 0 )    font[ i ][ digit ] |= thi_fnt[ 0 ][ thi ][ i ];
  2968. X            }
  2969. X        }
  2970. X        font[ _WIDTH ][ digit ] = KOR_LEN;
  2971. X        font[ _WIDTH+1 ][ digit++ ] = cmode;
  2972. X    }
  2973. X}
  2974. X
  2975. instr( str, ch )    /* return the position of ch in str, if no position, NO */
  2976. X    char    *str;
  2977. X    char    ch;
  2978. X{
  2979. X    short    i =0;
  2980. X
  2981. X    while ( ch != str[ i ] && str[ i ] != END )    ++i;
  2982. X    if ( str[ i ] == END )    i = NO;        /* if no position, return NO */
  2983. X    return( i );
  2984. X}
  2985. X
  2986. END_OF_FILE
  2987. if test 5312 -ne `wc -c <'banner-5/kban.c'`; then
  2988.     echo shar: \"'banner-5/kban.c'\" unpacked with wrong size!
  2989. fi
  2990. # end of 'banner-5/kban.c'
  2991. fi
  2992. if test -f 'banner-5/kban.hlp' -a "${1}" != "-c" ; then 
  2993.   echo shar: Will not clobber existing file \"'banner-5/kban.hlp'\"
  2994. else
  2995. echo shar: Extracting \"'banner-5/kban.hlp'\" \(1379 characters\)
  2996. sed "s/^X//" >'banner-5/kban.hlp' <<'END_OF_FILE'
  2997. X
  2998. X--#1    How to use
  2999. X
  3000. X   The character '/' has special power...called CMD_CHR.  By it alone, it can
  3001. X  toggle the Korean/English letter mode.  With '.' or '+' after it, it changes
  3002. X  output letter mode or writing-type.  Now, there is only one writing-type,
  3003. X  Roman, so '+' is useless in Ver1.21-.  If you want to know the power of trick
  3004. X  by '.' after '/', try followings :
  3005. X
  3006. X    kban /.0Hello
  3007. X    kban /.1Hello
  3008. X    kban /.2Hello
  3009. X     :     :
  3010. X    kban /.5Hello
  3011. X
  3012. X  Now, there are 6 (0~5) letter modes and the initial value is 0 ( you can
  3013. X  change this at the line '#define CMODE 0' in kbandat.c ).
  3014. X
  3015. X   Here are some examples of usage :
  3016. X
  3017. X    kban /dkssud/____semi
  3018. X    kban Hello,,,,/.3/tpadl
  3019. X
  3020. X--#2    How to compile
  3021. X
  3022. X   First, you must change the line '#define DATFILE xxxxx' in kban.c to inform
  3023. X  where kbandat.c exists.
  3024. X   Then, just 'cc kban.c -o kban' is all.
  3025. X
  3026. X--#3    Info
  3027. X
  3028. X   This banner can cover Korean and English both.  Moreover, it has a special
  3029. X  function(/.# : # is number) and it's fonts are quite pretty.  But now, there
  3030. X  are no fonts for numbers and other letters though there will be soon.
  3031. X   All unknown characters are treated as 1 vertical space, so ',' and '_' can
  3032. X  be used as space in above examples.
  3033. X   Help option for this program is not ready yet.  I can support this help file
  3034. X  only now.  sorry.
  3035. X
  3036. X   If you have any question or any suggestion, e-mail to :
  3037. X
  3038. X    e910017@xserver.kaist.ac.kr
  3039. X
  3040. END_OF_FILE
  3041. if test 1379 -ne `wc -c <'banner-5/kban.hlp'`; then
  3042.     echo shar: \"'banner-5/kban.hlp'\" unpacked with wrong size!
  3043. fi
  3044. # end of 'banner-5/kban.hlp'
  3045. fi
  3046. if test -f 'banner-5/lban.c' -a "${1}" != "-c" ; then 
  3047.   echo shar: Will not clobber existing file \"'banner-5/lban.c'\"
  3048. else
  3049. echo shar: Extracting \"'banner-5/lban.c'\" \(6638 characters\)
  3050. sed "s/^X//" >'banner-5/lban.c' <<'END_OF_FILE'
  3051. X/* Large Korean Banner */
  3052. X
  3053. X#include <stdio.h>
  3054. X
  3055. X#define TOTAL 37
  3056. X
  3057. X#define CW   6   /* character width */
  3058. X#define CL   3   /* character length */ 
  3059. X
  3060. X#define SD   2   /* shift down */ 
  3061. X#define SR   3   /* shift right */ 
  3062. X#define SB   1   /* shift below */
  3063. X
  3064. X#define MC   6  /* max characters */
  3065. X
  3066. X#define DFName "/ufo2/fcode/e880505/Bin/lban.dat"    /* data file name */
  3067. X
  3068. static char alpha[]={"abcdefghijklmnopqrstuvwxyzQWERTOP?!.,"};
  3069. static char c[]={"acdefgqrstvwxzQWERT"};  /* consonant */
  3070. static char v1[]={"ijklopuOP"}; 
  3071. static char v2[]={"bhmny"};
  3072. static char s[]={"?!.,"};
  3073. X
  3074. struct FONT  {
  3075. X    int   address;
  3076. X    short type;
  3077. X    }  a[TOTAL];  
  3078. X
  3079. int  b[MC*4];    /*  board  */
  3080. int  t[MC*4];    /*  taget  */
  3081. X
  3082. char board[2*CL+3][(CW*2-1)*MC+3]; 
  3083. char *receiver;
  3084. X
  3085. short  word_counter = 0;
  3086. X
  3087. main(argc,argv)
  3088. int argc;
  3089. char *argv[];
  3090. X{ 
  3091. X    int number ; 
  3092. X    
  3093. X    if( argc != 2 && argc !=3 ) {Error("?"); Quit();} 
  3094. X    if(argc == 3 )  receiver = argv[2];
  3095. X    make_font(); 
  3096. X    clear_board();
  3097. X    number=make_board(argv[1]);
  3098. X    load_board(number);
  3099. X    print_board(argc-2);
  3100. X    fflush(stdout);
  3101. X}
  3102. clear_board()
  3103. X{
  3104. X    int i,j;
  3105. X
  3106. X    for(i=0;i<2*CL+3; i++ ){
  3107. X        for( j=0; j< (CW*2-1)*MC; j++)
  3108. X            board[i][j] = ' ';
  3109. X        board[i][j] = 0;
  3110. X    }
  3111. X}
  3112. X
  3113. contractor( index ,num)
  3114. int index;
  3115. int num;
  3116. X{
  3117. X    int i,j;
  3118. X    int what, mwhat;
  3119. X            
  3120. X    switch( t[index] ){
  3121. X        case 3:
  3122. X            return 0;
  3123. X            break;
  3124. X        case 1: 
  3125. X            if( index > 0 ) {
  3126. X                    if( t[index-1] ==2 ) return 2;
  3127. X                    else return 1;
  3128. X                    }
  3129. X            else return 1;
  3130. X            break;
  3131. X        case 2:
  3132. X            return 3;
  3133. X            break;
  3134. X        case 0:
  3135. X            if(index==0 ) return 0;
  3136. X            if( index <num-1 ) { 
  3137. X                what = contractor(index+1, num );
  3138. X                if( what ==1 || what ==2 || what == 3 ) return 0;
  3139. X                if( what == 0 ) {
  3140. X                    mwhat = t[index-1] ;
  3141. X                    if( mwhat== 1 ) {
  3142. X                        mwhat = contractor(index-1, num );
  3143. X                        if( mwhat== 1) return 8;
  3144. X                        if(mwhat == 2) return 9;
  3145. X                        }
  3146. X                    if( mwhat == 2) {
  3147. X                            return 6;
  3148. X                        }
  3149. X                    if( mwhat== 0) {
  3150. X                        mwhat = contractor( index-2);
  3151. X                        if(mwhat == 1) return 5;
  3152. X                        if(mwhat == 2) return 7;
  3153. X                        if(mwhat == 3) return 7;
  3154. X                        }
  3155. X                    } /* if */
  3156. X                  else{ 
  3157. X                    mwhat = contractor( index-1, num );
  3158. X                    if(mwhat == 1 ) return 4;
  3159. X                    if(mwhat == 2 ) return 6;
  3160. X                    if(mwhat == 3 ) return 6;
  3161. X                    }
  3162. X                }    /*  if */
  3163. X            else { 
  3164. X                what = t[index-1];
  3165. X                if(what == 0) {
  3166. X                    mwhat = contractor(index-2, num);
  3167. X                    if( mwhat == 3 )  return 7;
  3168. X                    if( mwhat == 1 ) return 5;
  3169. X                    if(mwhat ==2 ) return 7;
  3170. X                    }
  3171. X                what = contractor( index-1 , num );
  3172. X                if( what == 3 ) return 6;
  3173. X                if( what == 1 ) return 8;
  3174. X                if( what == 2 ) return 9;
  3175. X                }
  3176. X        break;
  3177. X        } /* swtich */
  3178. X} /* end of procedure */
  3179. X
  3180. X
  3181. X
  3182. load_board( num )
  3183. int num;
  3184. X{
  3185. X    int i;
  3186. X    int x=0 ,y=0 ;    /* location of a charcater */
  3187. X    int tx, ty ;   /* location of a alphabet */ 
  3188. X    short  what;
  3189. X    
  3190. X    for( i=0; i< num ; i++ ){ 
  3191. X        what = contractor(i,num); 
  3192. X        switch( what ){
  3193. X            case 0:
  3194. X                if(i!=0) { x+=CW*2-1 ;  }
  3195. X                tx=x; ty = y;
  3196. X                word_counter++;
  3197. X                if( word_counter > MC ) {Error("Too many characters");Quit();}
  3198. X                break;
  3199. X            case 1:
  3200. X                tx = x+CW ;
  3201. X                ty=y;
  3202. X                break;
  3203. X            case 2: 
  3204. X                tx= x+CW;
  3205. X                ty= y+SB ;
  3206. X                break; 
  3207. X            case 3: 
  3208. X                tx = x; 
  3209. X                ty = y+CL ;
  3210. X                break;
  3211. X            case 4:
  3212. X                tx = x ;
  3213. X                ty = y+CL ;
  3214. X                break; 
  3215. X            case 5:
  3216. X                tx= x+CW ;
  3217. X                ty = y+CL;
  3218. X                break;
  3219. X            case 6:
  3220. X                tx = x;
  3221. X                ty = y+CL+SD ;
  3222. X                break;
  3223. X            case 7:
  3224. X                tx = x+CW;
  3225. X                ty = y+CL+SD;
  3226. X                break;
  3227. X            case 8:
  3228. X                tx = x+ SR;
  3229. X                ty = y+CL;
  3230. X                break;
  3231. X            case 9:
  3232. X                tx = x +SR;
  3233. X                ty= y+CL+SD;
  3234. X                break;
  3235. X            default:
  3236. X                break;
  3237. X                }  /* switch */
  3238. X        sculpture( tx,ty, b[i] );
  3239. X        }   /*  for */
  3240. X}   /*  end of function */    
  3241. X
  3242. sculpture( x, y, index )
  3243. int x,y, index;
  3244. X{
  3245. X    FILE *fptr;
  3246. X    char str[20],len;
  3247. X    int i,j;
  3248. X
  3249. X    if( NULL == (fptr=fopen(DFName,"r"))) { Error("!"); Quit();}
  3250. X    fseek(fptr, (long)(a[index].address), 0 );
  3251. X    for(i=0; i< CL ; i++ ){
  3252. X        fgets( str, CW+5, fptr);
  3253. X        len = strlen( str );
  3254. X        str[ len-1] =' '; len--;
  3255. X        for(j=0 ; j <len ; j++ ){
  3256. X            board[y+i][x+j] = str[j] ; 
  3257. X        }  /*  for */
  3258. X    }  /* for */
  3259. X    fclose(fptr);
  3260. X}
  3261. compress(str)
  3262. char *str;
  3263. X{
  3264. X    int i,len ;
  3265. X    len = strlen(str);
  3266. X    for(i=0; i<len ; i++ )
  3267. X        if( str[i] != ' ')  return 1;
  3268. X    return 0;
  3269. X}
  3270. X
  3271. X
  3272. print_board(mode)
  3273. short mode;
  3274. X{
  3275. X    int i,  limit;
  3276. X
  3277. X    for(i=0; i < CL*2+3 ; i++ )
  3278. X        if( compress(board[i]) ) limit=i;
  3279. X
  3280. X    board_optimize( limit );
  3281. X    board_compress( limit );
  3282. X        
  3283. X    if(mode == 0 ) {
  3284. puts("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
  3285. X        for(i=0 ; i <= limit ; i++ ){
  3286. X                    puts( board[i]);
  3287. X                    fflush(stdout);
  3288. X                    }
  3289. puts("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
  3290. X    fflush(stdout);
  3291. X                }
  3292. X    else if( mode==1 )   for(i=0 ; i <= limit ; i++ )
  3293. X                            printf("%s:%s\n",receiver,board[i]);
  3294. X}
  3295. X
  3296. board_compress( max )
  3297. int max;
  3298. X{
  3299. X    int i,j;
  3300. X    int end;
  3301. X    int sw = 0;
  3302. X    char tablet[CL*3+2];
  3303. X
  3304. X    end = strlen(board[0]);
  3305. X
  3306. X    for(i=0 ; i<end-1 ; i++ ){
  3307. X        for(j=0; j<= max ; j++ ) tablet[j]= board[j][i];
  3308. X        tablet[j] = 0;
  3309. X        if( strClen(tablet) ==0 ){ 
  3310. X            sw++; 
  3311. X            if (sw==3){
  3312. X                exec_compress(i,max,end);
  3313. X                sw--;
  3314. X                end--;
  3315. X                i--;  } /* if */
  3316. X                }  /* if */
  3317. X        else sw=0;
  3318. X        }  /* for i */
  3319. X}
  3320. X
  3321. exec_compress( i, max, end)
  3322. int i,max,end;
  3323. X{
  3324. X    int j,k;
  3325. X
  3326. X    for(j=0 ; j<=max ; j++ ){
  3327. X        for(k=i; k<end-1; k++ )
  3328. X            board[j][k]=board[j][k+1];
  3329. X        board[j][k] = 0 ;
  3330. X        }
  3331. X}
  3332. strClen(str)
  3333. char *str;
  3334. X{
  3335. X    int len, i;
  3336. X    len=strlen(str);
  3337. X    for(i=0 ; i<len ; i++)
  3338. X        if(str[i]!=' ') return 1;
  3339. X    return 0;
  3340. X}
  3341. board_optimize( max )
  3342. int max;
  3343. X{
  3344. X    int i,j,k;
  3345. X    int local_max;
  3346. X    int delta ;
  3347. X
  3348. X    for(i=0; i< word_counter ; i++ ){
  3349. X        local_max= local_scan(i,max);
  3350. X        if( local_max <= max-2) {
  3351. X            delta = (max-local_max)/2 ;
  3352. X            for( j=i*(CW*2-1); j< (i+1)*(CW*2-1) ; j++) 
  3353. X                for(k=local_max ; k>=0 ; k--){
  3354. X                    board[k+delta][j] = board[k][j];
  3355. X                    board[k][j]=' ';
  3356. X                    }  /*  for k */
  3357. X                } /*  if  */
  3358. X        } /* for i */
  3359. X}
  3360. X
  3361. local_scan(i,max)
  3362. int i;
  3363. int max;
  3364. X{
  3365. X    int j,k;
  3366. X    int local=0;
  3367. X
  3368. X    for( j=i*(CW*2-1); j< (i+1)*(CW*2-1) ; j++) 
  3369. X        for(k=max; k>0 ; k--) 
  3370. X            if( board[k][j] != ' ') { if(k>local) local=k ; break; }
  3371. X    return local;
  3372. X}
  3373. X        
  3374. make_board(str)
  3375. char *str;
  3376. X{
  3377. X    int i,len,defect=0 ;
  3378. X
  3379. X    len = strlen(str); 
  3380. X    
  3381. X    for(i=0; i<len ; i++ ) { 
  3382. X        b[i+defect] = where( str[i], alpha );
  3383. X        if( b[i+defect] == -1 ) defect--;
  3384. X        else t[i+defect] = a[b[i+defect]].type;
  3385. X        }
  3386. X    return i+defect; 
  3387. X}
  3388. make_font()
  3389. X{
  3390. X    int i;
  3391. X    for(i=0; i<TOTAL ; i++ ) { 
  3392. X        a[i].type = exist( alpha[i] );
  3393. X        a[i].address = i*(CL*(CW+1)+1) ;
  3394. X        }
  3395. X}
  3396. X    
  3397. exist( ch )
  3398. X{
  3399. X    if( where(ch, c ) >-1 )  return 0;
  3400. X    else if( where( ch, v1) > -1 ) return 1;
  3401. X    else if( where(ch, v2) >-1 ) return 2;
  3402. X    return 3;
  3403. X}
  3404. where( ch, str )
  3405. char ch;
  3406. char *str;
  3407. X{
  3408. X    int i, len;
  3409. X
  3410. X    len=strlen(str);
  3411. X    for(i=0; i<len ; i++ ) 
  3412. X        if( ch == str[i] )  return i;
  3413. X    return -1;
  3414. X}
  3415. XError(str)
  3416. char *str;
  3417. X{
  3418. X}
  3419. Quit()
  3420. X{
  3421. X    puts("-------");
  3422. X    exit(0);
  3423. X}
  3424. X
  3425. X
  3426. END_OF_FILE
  3427. if test 6638 -ne `wc -c <'banner-5/lban.c'`; then
  3428.     echo shar: \"'banner-5/lban.c'\" unpacked with wrong size!
  3429. fi
  3430. # end of 'banner-5/lban.c'
  3431. fi
  3432. if test -f 'banner-5/lban.dat' -a "${1}" != "-c" ; then 
  3433.   echo shar: Will not clobber existing file \"'banner-5/lban.dat'\"
  3434. else
  3435. echo shar: Extracting \"'banner-5/lban.dat'\" \(813 characters\)
  3436. sed "s/^X//" >'banner-5/lban.dat' <<'END_OF_FILE'
  3437. X .___.
  3438. X |   |
  3439. X +---+
  3440. X
  3441. X _____
  3442. X  | | 
  3443. X  | | 
  3444. X
  3445. X __|__
  3446. X  / \ 
  3447. X /   \
  3448. X
  3449. X  ___ 
  3450. X /   \
  3451. X \___/
  3452. X
  3453. X .____
  3454. X |    
  3455. X |____
  3456. X
  3457. X .___.
  3458. X .___|
  3459. X |___.
  3460. X
  3461. X __|__
  3462. X /   \
  3463. X \___/
  3464. X
  3465. X   |  
  3466. X --+--
  3467. X      
  3468. X
  3469. X |__  
  3470. X |__  
  3471. X |    
  3472. X
  3473. X   |  
  3474. X --|  
  3475. X   |  
  3476. X
  3477. X  |   
  3478. X  |-- 
  3479. X  |   
  3480. X
  3481. X  |   
  3482. X  |   
  3483. X  |   
  3484. X
  3485. X _____
  3486. X      
  3487. X      
  3488. X
  3489. X _____
  3490. X   |  
  3491. X      
  3492. X
  3493. X  | | 
  3494. X  |-| 
  3495. X  | | 
  3496. X
  3497. X  | | 
  3498. X -| | 
  3499. X  | | 
  3500. X
  3501. X .   .
  3502. X |___|
  3503. X |___|
  3504. X
  3505. X ----+
  3506. X     |
  3507. X     |
  3508. X
  3509. X .    
  3510. X |    
  3511. X +----
  3512. X
  3513. X   .  
  3514. X  / \ 
  3515. X /   \
  3516. X
  3517. X __|  
  3518. X __|  
  3519. X   |  
  3520. X
  3521. X _____
  3522. X  | | 
  3523. X -+-+-
  3524. X
  3525. X _____
  3526. X  / \ 
  3527. X /   \
  3528. X
  3529. X .____
  3530. X |____
  3531. X |____
  3532. X
  3533. X  | | 
  3534. X -+-+-
  3535. X      
  3536. X
  3537. X ----+
  3538. X ____|
  3539. X     |
  3540. X
  3541. X . . .
  3542. X |_|_|
  3543. X |_|_|
  3544. X
  3545. X _____
  3546. X  / / 
  3547. X /\/ \
  3548. X
  3549. X .____
  3550. X | |  
  3551. X |_|__
  3552. X
  3553. X ____.
  3554. X   | |
  3555. X   | |
  3556. X
  3557. X  ..  
  3558. X // \ 
  3559. X// \ \
  3560. X
  3561. X |_|  
  3562. X |_|  
  3563. X | |  
  3564. X
  3565. X _| | 
  3566. X _| | 
  3567. X  | | 
  3568. X
  3569. X .---.
  3570. X  .--'
  3571. X  @   
  3572. X
  3573. X  ||  
  3574. X  |   
  3575. X  @   
  3576. X
  3577. X      
  3578. X  @   
  3579. X
  3580. X      
  3581. X      
  3582. X @@   
  3583. X  /
  3584. X
  3585. X
  3586. X
  3587. END_OF_FILE
  3588. if test 813 -ne `wc -c <'banner-5/lban.dat'`; then
  3589.     echo shar: \"'banner-5/lban.dat'\" unpacked with wrong size!
  3590. fi
  3591. # end of 'banner-5/lban.dat'
  3592. fi
  3593. if test -f 'banner-5/leb.c' -a "${1}" != "-c" ; then 
  3594.   echo shar: Will not clobber existing file \"'banner-5/leb.c'\"
  3595. else
  3596. echo shar: Extracting \"'banner-5/leb.c'\" \(3633 characters\)
  3597. sed "s/^X//" >'banner-5/leb.c' <<'END_OF_FILE'
  3598. X/* leb : Large English Banner
  3599. X *
  3600. X * Who the heck wrote original Pascal version?
  3601. X *
  3602. X * C version by Han, Yun-Su
  3603. X * 880505 KAIST undergraduate Dept of Life Science
  3604. X */
  3605. X
  3606. X#include <stdio.h>
  3607. X
  3608. main(argc, argv)
  3609. int argc;
  3610. char **argv;
  3611. X{
  3612. X    char line[256];
  3613. X
  3614. X    if (argc < 2)    {
  3615. X        fprintf(stderr, "&:^)\n");
  3616. X        exit(1);
  3617. X        }
  3618. X    getline(line, argc, argv);
  3619. X    lowerline(line);
  3620. X    putline(line);
  3621. X}
  3622. X
  3623. getline(s, n, v)
  3624. char *s;
  3625. int n;
  3626. char *v[];
  3627. X{
  3628. X    int i, j;
  3629. X
  3630. X    strcpy(s, "");
  3631. X    for (i = 1; i < n; i++, s++)    {
  3632. X        for (j = 0; v[i][j] != '\0'; j++, s++)
  3633. X            *s = v[i][j];
  3634. X        *s = ' ';
  3635. X        }
  3636. X    s--;
  3637. X    *s = '\0';
  3638. X}
  3639. X
  3640. lowerline(s)
  3641. char *s;
  3642. X{
  3643. X    char *p;
  3644. X
  3645. X    for (p = s; *p != '\0'; p++)
  3646. X        if (*p >= 'A' && *p <= 'Z')
  3647. X            *p = *p - 'A' + 'a';
  3648. X}
  3649. X
  3650. X#define    Height        6    /* Height of 3D Font */
  3651. X#define    Blank        "     "
  3652. putline(s)
  3653. char *s;
  3654. X{
  3655. X    static char *data[] = {
  3656. X        "     __      ",
  3657. X        "    /  \\     ",
  3658. X        "   /    \\    ",
  3659. X        "  /  /\\  \\   ",
  3660. X        " /  ____  \\  ",
  3661. X        "/__/    \\__\\ ",
  3662. X        " ______   ",
  3663. X        "|  __  \\  ",
  3664. X        "| |__|  | ",
  3665. X        "|  __  <  ",
  3666. X        "| |__|  | ",
  3667. X        "|______/  ",
  3668. X        "  _____  ",
  3669. X        " / ____| ",
  3670. X        "| |      ",
  3671. X        "| |      ",
  3672. X        "| |____  ",
  3673. X        " \\_____| ",
  3674. X        " ______   ",
  3675. X        "|  ___ \\  ",
  3676. X        "| |   | | ",
  3677. X        "| |   | | ",
  3678. X        "| |___| | ",
  3679. X        "|______/  ",
  3680. X        " _______  ",
  3681. X        "|  _____| ",
  3682. X        "| |___    ",
  3683. X        "|  ___|   ",
  3684. X        "| |_____  ",
  3685. X        "|_______| ",
  3686. X        " _______  ",
  3687. X        "|  _____| ",
  3688. X        "| |___    ",
  3689. X        "|  ___|   ",
  3690. X        "| |       ",
  3691. X        "|_|       ",
  3692. X        "  ______   ",
  3693. X        " / _____|  ",
  3694. X        "| |   ___  ",
  3695. X        "| |  |_  | ",
  3696. X        "| |____| | ",
  3697. X        " \\______/  ",
  3698. X        " _     _  ",
  3699. X        "| |   | | ",
  3700. X        "| |___| | ",
  3701. X        "|  ___  | ",
  3702. X        "| |   | | ",
  3703. X        "|_|   |_| ",
  3704. X        " _  ",
  3705. X        "| | ",
  3706. X        "| | ",
  3707. X        "| | ",
  3708. X        "| | ",
  3709. X        "|_| ",
  3710. X        "     _  ",
  3711. X        "    | | ",
  3712. X        "    | | ",
  3713. X        " _  | | ",
  3714. X        "| |_| | ",
  3715. X        " \\___/  ",
  3716. X        " _   __ ",
  3717. X        "| | / / ",
  3718. X        "| |/ /  ",
  3719. X        "|   <   ",
  3720. X        "| |\\ \\  ",
  3721. X        "|_| \\_\\ ",
  3722. X        " _       ",
  3723. X        "| |      ",
  3724. X        "| |      ",
  3725. X        "| |      ",
  3726. X        "| |____  ",
  3727. X        "|______| ",
  3728. X        " ___    ___  ",
  3729. X        "|   \\  /   | ",
  3730. X        "| |\\ \\/ /| | ",
  3731. X        "| | \\__/ | | ",
  3732. X        "| |      | | ",
  3733. X        "|_|      |_| ",
  3734. X        " __    _  ",
  3735. X        "|  \\  | | ",
  3736. X        "|   \\ | | ",
  3737. X        "| |\\ \\| | ",
  3738. X        "| | \\   | ",
  3739. X        "|_|  \\__| ",
  3740. X        "  ______   ",
  3741. X        " / ____ \\  ",
  3742. X        "| |    | | ",
  3743. X        "| |    | | ",
  3744. X        "| |____| | ",
  3745. X        " \\______/  ",
  3746. X        " _____   ",
  3747. X        "|  __ \\  ",
  3748. X        "| |__| | ",
  3749. X        "|  ___/  ",
  3750. X        "| |      ",
  3751. X        "|_|      ",
  3752. X        "  ______    ",
  3753. X        " / ____ \\   ",
  3754. X        "| |    | |  ",
  3755. X        "| |    | |  ",
  3756. X        "| |___|  |  ",
  3757. X        " \\________| ",
  3758. X        " _____   ",
  3759. X        "|  __ \\  ",
  3760. X        "| |__| | ",
  3761. X        "|  _  /  ",
  3762. X        "| | \\ \\  ",
  3763. X        "|_|  \\_\\ ",
  3764. X        "  _____   ",
  3765. X        " / ____|  ",
  3766. X        "| |____   ",
  3767. X        " \\____ \\  ",
  3768. X        "  ____| | ",
  3769. X        " |_____/  ",
  3770. X        " _________  ",
  3771. X        "|___   ___| ",
  3772. X        "    | |     ",
  3773. X        "    | |     ",
  3774. X        "    | |     ",
  3775. X        "    |_|     ",
  3776. X        " _     _  ",
  3777. X        "| |   | | ",
  3778. X        "| |   | | ",
  3779. X        "| |   | | ",
  3780. X        "| |___| | ",
  3781. X        " \\_____/  ",
  3782. X        "__        __ ",
  3783. X        "\\ \\      / / ",
  3784. X        " \\ \\    / /  ",
  3785. X        "  \\ \\  / /   ",
  3786. X        "   \\ \\/ /    ",
  3787. X        "    \\__/     ",
  3788. X        "__            __ ",
  3789. X        "\\ \\          / / ",
  3790. X        " \\ \\        / /  ",
  3791. X        "  \\ \\  /\\  / /   ",
  3792. X        "   \\ \\/  \\/ /    ",
  3793. X        "    \\__/\\__/     ",
  3794. X        "__    __ ",
  3795. X        "\\ \\  / / ",
  3796. X        " \\ \\/ /  ",
  3797. X        "  >  <   ",
  3798. X        " / /\\ \\  ",
  3799. X        "/_/  \\_\\ ",
  3800. X        "__     __ ",
  3801. X        "\\ \\   / / ",
  3802. X        " \\ \\_/ /  ",
  3803. X        "  \\   /   ",
  3804. X        "   | |    ",
  3805. X        "   |_|    ",
  3806. X        " _______  ",
  3807. X        "|____  /  ",
  3808. X        "    / /   ",
  3809. X        "   / /    ",
  3810. X        "  / /___  ",
  3811. X        " /______| ",
  3812. X        };
  3813. X    int i;
  3814. X    char *p;
  3815. X
  3816. X    for (i = 0; i < Height; i++)    {
  3817. X        for (p = s; *p != '\0'; p++)
  3818. X            if (*p < 'a' || *p > 'z')
  3819. X                printf(Blank);
  3820. X            else
  3821. X                printf("%s", data[(*p - 'a') * Height + i]);
  3822. X        printf("\n");
  3823. X        }
  3824. X}
  3825. END_OF_FILE
  3826. if test 3633 -ne `wc -c <'banner-5/leb.c'`; then
  3827.     echo shar: \"'banner-5/leb.c'\" unpacked with wrong size!
  3828. fi
  3829. # end of 'banner-5/leb.c'
  3830. fi
  3831. if test -f 'banner-5/sban.dat' -a "${1}" != "-c" ; then 
  3832.   echo shar: Will not clobber existing file \"'banner-5/sban.dat'\"
  3833. else
  3834. echo shar: Extracting \"'banner-5/sban.dat'\" \(412 characters\)
  3835. sed "s/^X//" >'banner-5/sban.dat' <<'END_OF_FILE'
  3836. X_.
  3837. L|
  3838. X
  3839. TT
  3840. X  
  3841. X
  3842. X_L
  3843. X/\
  3844. X
  3845. X  
  3846. X()
  3847. X
  3848. r-
  3849. L_
  3850. X
  3851. X-)
  3852. X(_
  3853. X
  3854. X_L
  3855. X()
  3856. X
  3857. X_L
  3858. X  
  3859. X
  3860. X|_
  3861. X|-
  3862. X
  3863. X |
  3864. X-|
  3865. X
  3866. X|_
  3867. X| 
  3868. X
  3869. X| 
  3870. X| 
  3871. X
  3872. X  
  3873. X__
  3874. X
  3875. X-r
  3876. X  
  3877. X
  3878. X|J
  3879. X||
  3880. X
  3881. J|
  3882. X||
  3883. X
  3884. L|
  3885. L|
  3886. X
  3887. X_.
  3888. X |
  3889. X
  3890. X. 
  3891. X|_
  3892. X
  3893. X .
  3894. X/\
  3895. X
  3896. X_|
  3897. X-|
  3898. X
  3899. X__
  3900. JL
  3901. X
  3902. X__
  3903. X/\
  3904. X
  3905. X==
  3906. L_
  3907. X
  3908. JL
  3909. X  
  3910. X
  3911. X__
  3912. X-/
  3913. X
  3914. UU
  3915. UU
  3916. X
  3917. X__
  3918. X^^
  3919. X
  3920. X__
  3921. LL
  3922. X
  3923. X__
  3924. X//
  3925. X
  3926. X..
  3927. X^^
  3928. X
  3929. L|
  3930. r|
  3931. X
  3932. J|
  3933. T|
  3934. X
  3935. X?)
  3936. X
  3937. X|7
  3938. X
  3939. X  
  3940. X
  3941. X  
  3942. X, 
  3943. X
  3944. X
  3945. AA
  3946. X  
  3947. X
  3948. oo
  3949. X\/
  3950. X
  3951. oo
  3952. X/\
  3953. X
  3954. X**
  3955. X\/
  3956. X
  3957. X**
  3958. X/\
  3959. X
  3960. X..
  3961. X\/
  3962. X
  3963. X..
  3964. X/\
  3965. X
  3966. X'`
  3967. X\/
  3968. X
  3969. X`'
  3970. X/\
  3971. X
  3972. X^^
  3973. X U
  3974. X
  3975. X^^
  3976. X
  3977. X'|
  3978. X |
  3979. X
  3980. X')
  3981. X<_
  3982. X
  3983. X')
  3984. X_)
  3985. X
  3986. X||
  3987. X-+
  3988. X
  3989. X.-
  3990. X_)
  3991. X
  3992. X| 
  3993. X()
  3994. X
  3995. X->
  3996. X/ 
  3997. X
  3998. X()
  3999. X()
  4000. X
  4001. X()
  4002. X |
  4003. X
  4004. X/\
  4005. X\/
  4006. END_OF_FILE
  4007. if test 412 -ne `wc -c <'banner-5/sban.dat'`; then
  4008.     echo shar: \"'banner-5/sban.dat'\" unpacked with wrong size!
  4009. fi
  4010. # end of 'banner-5/sban.dat'
  4011. fi
  4012. if test -f 'banner-5/seb.c' -a "${1}" != "-c" ; then 
  4013.   echo shar: Will not clobber existing file \"'banner-5/seb.c'\"
  4014. else
  4015. echo shar: Extracting \"'banner-5/seb.c'\" \(3119 characters\)
  4016. sed "s/^X//" >'banner-5/seb.c' <<'END_OF_FILE'
  4017. X/* seb : Small English Banner
  4018. X *
  4019. X * Who the heck wrote original Pascal version?
  4020. X *
  4021. X * C version by Han, Yun-Su
  4022. X * 880505 KAIST undergraduate Dept of Life Science
  4023. X */
  4024. X
  4025. X#include <stdio.h>
  4026. X
  4027. main(argc, argv)
  4028. int argc;
  4029. char **argv;
  4030. X{
  4031. X    char line[256];
  4032. X
  4033. X    if (argc < 2)    {
  4034. X        fprintf(stderr, "&:^)\n");
  4035. X        exit(1);
  4036. X        }
  4037. X    getline(line, argc, argv);
  4038. X    putline(line);
  4039. X}
  4040. X
  4041. getline(s, n, v)
  4042. char *s;
  4043. int n;
  4044. char *v[];
  4045. X{
  4046. X    int i, j;
  4047. X
  4048. X    strcpy(s, "");
  4049. X    for (i = 1; i < n; i++, s++)    {
  4050. X        for (j = 0; v[i][j] != '\0'; j++, s++)
  4051. X            *s = v[i][j];
  4052. X        *s = ' ';
  4053. X        }
  4054. X    s--;
  4055. X    *s = '\0';
  4056. X}
  4057. X
  4058. X#define    Height        4    /* Height of Font */
  4059. X#define    Blank        "     "
  4060. putline(s)
  4061. char *s;
  4062. X{
  4063. X    static char *upper[] = {
  4064. X        "     ",
  4065. X        "  /\\ ",
  4066. X        " /--\\",
  4067. X        "     ",
  4068. X        "  _ ",
  4069. X        " |_)",
  4070. X        " |_)",
  4071. X        "    ",
  4072. X        "  __",
  4073. X        " /  ",
  4074. X        " \\__",
  4075. X        "    ",
  4076. X        "  _ ",
  4077. X        " | \\",
  4078. X        " |_/",
  4079. X        "    ",
  4080. X        "  __",
  4081. X        " |_ ",
  4082. X        " |__",
  4083. X        "    ",
  4084. X        "  __",
  4085. X        " |_ ",
  4086. X        " |  ",
  4087. X        "    ",
  4088. X        "  _ ",
  4089. X        " / _",
  4090. X        " \\_|",
  4091. X        "    ",
  4092. X        "    ",
  4093. X        " |_|",
  4094. X        " | |",
  4095. X        "    ",
  4096. X        "  ",
  4097. X        " |",
  4098. X        " |",
  4099. X        "  ",
  4100. X        "    ",
  4101. X        "   |",
  4102. X        " |_|",
  4103. X        "    ",
  4104. X        "    ",
  4105. X        " |_/",
  4106. X        " | \\",
  4107. X        "    ",
  4108. X        "    ",
  4109. X        " |  ",
  4110. X        " |__",
  4111. X        "    ",
  4112. X        "       ",
  4113. X        " |\\  /|",
  4114. X        " | \\/ |",
  4115. X        "       ",
  4116. X        "     ",
  4117. X        " |\\ |",
  4118. X        " | \\|",
  4119. X        "     ",
  4120. X        "  _ ",
  4121. X        " / \\",
  4122. X        " \\_/",
  4123. X        "    ",
  4124. X        "  _ ",
  4125. X        " |_)",
  4126. X        " |  ",
  4127. X        "    ",
  4128. X        "  _ ",
  4129. X        " / \\",
  4130. X        " \\_\\",
  4131. X        "    ",
  4132. X        "  _ ",
  4133. X        " |_)",
  4134. X        " | \\",
  4135. X        "    ",
  4136. X        "  _ ",
  4137. X        " (_ ",
  4138. X        "  _)",
  4139. X        "    ",
  4140. X        " ___",
  4141. X        "  | ",
  4142. X        "  | ",
  4143. X        "    ",
  4144. X        "     ",
  4145. X        " |  |",
  4146. X        " |__|",
  4147. X        "     ",
  4148. X        "     ",
  4149. X        " \\  /",
  4150. X        "  \\/ ",
  4151. X        "     ",
  4152. X        "       ",
  4153. X        " \\    /",
  4154. X        "  \\/\\/ ",
  4155. X        "       ",
  4156. X        "    ",
  4157. X        " \\_/",
  4158. X        " / \\",
  4159. X        "    ",
  4160. X        "    ",
  4161. X        " \\_/",
  4162. X        "  | ",
  4163. X        "    ",
  4164. X        " __",
  4165. X        "  /",
  4166. X        " /_",
  4167. X        "   ",
  4168. X        ""
  4169. X        };
  4170. X    static char *lower[] = {
  4171. X        "    ",
  4172. X        "  _ ",
  4173. X        " (_|",
  4174. X        "    ",
  4175. X        "    ",
  4176. X        " |_ ",
  4177. X        " |_)",
  4178. X        "    ",
  4179. X        "   ",
  4180. X        "  _",
  4181. X        " (_",
  4182. X        "   ",
  4183. X        "    ",
  4184. X        "  _|",
  4185. X        " (_|",
  4186. X        "    ",
  4187. X        "   ",
  4188. X        "  _",
  4189. X        " (=",
  4190. X        "   ",
  4191. X        "   _",
  4192. X        " _|_",
  4193. X        "  | ",
  4194. X        "    ",
  4195. X        "    ",
  4196. X        "  _ ",
  4197. X        " (_|",
  4198. X        "  _/",
  4199. X        "    ",
  4200. X        " |_ ",
  4201. X        " | |",
  4202. X        "    ",
  4203. X        "  ",
  4204. X        " .",
  4205. X        " |",
  4206. X        "  ",
  4207. X        "   ",
  4208. X        "  .",
  4209. X        "  |",
  4210. X        " _/",
  4211. X        "   ",
  4212. X        " |_",
  4213. X        " |\\",
  4214. X        "   ",
  4215. X        "  ",
  4216. X        " |",
  4217. X        " |",
  4218. X        "  ",
  4219. X        "      ",
  4220. X        "  _ _ ",
  4221. X        " | | |",
  4222. X        "      ",
  4223. X        "    ",
  4224. X        "  _ ",
  4225. X        " | |",
  4226. X        "    ",
  4227. X        "    ",
  4228. X        "  _ ",
  4229. X        " (_)",
  4230. X        "    ",
  4231. X        "    ",
  4232. X        "  _ ",
  4233. X        " |_)",
  4234. X        " |  ",
  4235. X        "    ",
  4236. X        "  _ ",
  4237. X        " (_|",
  4238. X        "   |",
  4239. X        "   ",
  4240. X        "  _",
  4241. X        " | ",
  4242. X        "   ",
  4243. X        "  ",
  4244. X        "  ",
  4245. X        " S",
  4246. X        "  ",
  4247. X        "    ",
  4248. X        " _|_",
  4249. X        "  |_",
  4250. X        "    ",
  4251. X        "    ",
  4252. X        "    ",
  4253. X        " |_|",
  4254. X        "    ",
  4255. X        "    ",
  4256. X        "    ",
  4257. X        " \\_/",
  4258. X        "    ",
  4259. X        "      ",
  4260. X        "      ",
  4261. X        " \\_|_/",
  4262. X        "      ",
  4263. X        "   ",
  4264. X        "   ",
  4265. X        " ><",
  4266. X        "   ",
  4267. X        "    ",
  4268. X        "    ",
  4269. X        " \\_/",
  4270. X        " _/ ",
  4271. X        "   ",
  4272. X        " _ ",
  4273. X        " /_",
  4274. X        "   ",
  4275. X        "   ",
  4276. X        ""
  4277. X        };
  4278. X    int i;
  4279. X    char *p;
  4280. X
  4281. X    for (i = 0; i < Height; i++)    {
  4282. X        for (p = s; *p != '\0'; p++)
  4283. X            if (*p >= 'a' && *p <= 'z')
  4284. X                printf("%s", lower[(*p - 'a') * Height + i]);
  4285. X            else if (*p >= 'A' && *p <= 'Z')
  4286. X                printf("%s", upper[(*p - 'A') * Height + i]);
  4287. X            else
  4288. X                printf(Blank);
  4289. X        printf("\n");
  4290. X        }
  4291. X}
  4292. END_OF_FILE
  4293. if test 3119 -ne `wc -c <'banner-5/seb.c'`; then
  4294.     echo shar: \"'banner-5/seb.c'\" unpacked with wrong size!
  4295. fi
  4296. # end of 'banner-5/seb.c'
  4297. fi
  4298. if test ! -d 'banner-6' ; then
  4299.     echo shar: Creating directory \"'banner-6'\"
  4300.     mkdir 'banner-6'
  4301. fi
  4302. if test -f 'banner-6/banner.6' -a "${1}" != "-c" ; then 
  4303.   echo shar: Will not clobber existing file \"'banner-6/banner.6'\"
  4304. else
  4305. echo shar: Extracting \"'banner-6/banner.6'\" \(2979 characters\)
  4306. sed "s/^X//" >'banner-6/banner.6' <<'END_OF_FILE'
  4307. X.\" Copyright (c) 1980 The Regents of the University of California.
  4308. X.\" All rights reserved.
  4309. X.\"
  4310. X.\" Redistribution and use in source and binary forms, with or without
  4311. X.\" modification, are permitted provided that the following conditions
  4312. X.\" are met:
  4313. X.\" 1. Redistributions of source code must retain the above copyright
  4314. X.\"    notice, this list of conditions and the following disclaimer.
  4315. X.\" 2. Redistributions in binary form must reproduce the above copyright
  4316. X.\"    notice, this list of conditions and the following disclaimer in the
  4317. X.\"    documentation and/or other materials provided with the distribution.
  4318. X.\" 3. All advertising materials mentioning features or use of this software
  4319. X.\"    must display the following acknowledgement:
  4320. X.\"    This product includes software developed by the University of
  4321. X.\"    California, Berkeley and its contributors.
  4322. X.\" 4. Neither the name of the University nor the names of its contributors
  4323. X.\"    may be used to endorse or promote products derived from this software
  4324. X.\"    without specific prior written permission.
  4325. X.\"
  4326. X.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  4327. X.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  4328. X.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  4329. X.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  4330. X.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  4331. X.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  4332. X.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  4333. X.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  4334. X.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  4335. X.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  4336. X.\" SUCH DAMAGE.
  4337. X.\"
  4338. X.\"    @(#)banner.6    6.4 (Berkeley) 6/23/90
  4339. X.\"
  4340. X.TH BANNER 6 "June 23, 1990"
  4341. X.UC
  4342. X.SH NAME
  4343. banner \- print large banner on printer
  4344. X.SH SYNOPSIS
  4345. X.B /usr/games/banner
  4346. X[
  4347. X.BI \-w n
  4348. X]
  4349. message ...
  4350. X.SH DESCRIPTION
  4351. X.I Banner
  4352. prints a large, high quality banner on the standard output.
  4353. If the message is omitted, it prompts for and
  4354. reads one line of its standard input.  If
  4355. X.B \-w
  4356. is given, the output is scrunched down from a width of 132 to
  4357. X.I n ,
  4358. suitable for a narrow terminal.  If
  4359. X.I n
  4360. is omitted, it defaults to 80.
  4361. X.PP
  4362. The output should be printed on a hard-copy device, up to 132 columns wide,
  4363. with no breaks between the pages. The volume is great enough that you 
  4364. may want
  4365. a printer or a fast hardcopy terminal, but if you are patient, a
  4366. decwriter or other 300 baud terminal will do.
  4367. X.SH BUGS
  4368. Several ASCII characters are not defined, notably <, >, [, ], \\,
  4369. X^, _, {, }, |, and ~.  Also, the characters ", ', and & are funny
  4370. looking (but in a useful way.)
  4371. X.PP
  4372. The
  4373. X.B \-w
  4374. option is implemented by skipping some rows and columns.
  4375. The smaller it gets, the grainier the output.
  4376. Sometimes it runs letters together.
  4377. X.SH AUTHOR
  4378. Mark Horton
  4379. END_OF_FILE
  4380. if test 2979 -ne `wc -c <'banner-6/banner.6'`; then
  4381.     echo shar: \"'banner-6/banner.6'\" unpacked with wrong size!
  4382. fi
  4383. # end of 'banner-6/banner.6'
  4384. fi
  4385. if test ! -d 'banner-7' ; then
  4386.     echo shar: Creating directory \"'banner-7'\"
  4387.     mkdir 'banner-7'
  4388. fi
  4389. if test -f 'banner-7/banner.c' -a "${1}" != "-c" ; then 
  4390.   echo shar: Will not clobber existing file \"'banner-7/banner.c'\"
  4391. else
  4392. echo shar: Extracting \"'banner-7/banner.c'\" \(6380 characters\)
  4393. sed "s/^X//" >'banner-7/banner.c' <<'END_OF_FILE'
  4394. X#include <stdio.h>
  4395. X
  4396. static char *chars[][4] = {
  4397. X/***************/
  4398. X"  ",
  4399. X"  ",
  4400. X"  ",
  4401. X"  ",
  4402. X/***************/
  4403. X".",
  4404. X"|",
  4405. X"|",
  4406. X".",
  4407. X/***************/
  4408. X"_ _",
  4409. X"| |",
  4410. X"   ",
  4411. X"   ",
  4412. X/***************/
  4413. X" . . ",
  4414. X"_|_|_",
  4415. X"_|_|_",
  4416. X" | | ",
  4417. X/***************/
  4418. X" ___",
  4419. X"| | ",
  4420. X" \\| ",
  4421. X" _|)",
  4422. X/***************/
  4423. X" _ ",
  4424. X" -/",
  4425. X" / ",
  4426. X"/ =",
  4427. X/***************/
  4428. X"  _  ",
  4429. X" | | ",
  4430. X" /\\  ",
  4431. X"(__|\\",
  4432. X/***************/
  4433. X" _",
  4434. X" /",
  4435. X"  ",
  4436. X"  ",
  4437. X/***************/
  4438. X"  _",
  4439. X" / ",
  4440. X"|  ",
  4441. X" \\_",
  4442. X/***************/
  4443. X"_  ",
  4444. X" \\ ",
  4445. X"  |",
  4446. X"_/ ",
  4447. X/***************/
  4448. X"      ",
  4449. X"  \\|/ ",
  4450. X" --*--",
  4451. X"  /|\\ ",
  4452. X/***************/
  4453. X"     ",
  4454. X"  |  ",
  4455. X"--+--",
  4456. X"  |  ",
  4457. X/***************/
  4458. X" ",
  4459. X" ",
  4460. X"_",
  4461. X"/",
  4462. X/***************/
  4463. X"    ",
  4464. X"____",
  4465. X"    ",
  4466. X"    ",
  4467. X/***************/
  4468. X"   ",
  4469. X"   ",
  4470. X"___",
  4471. X"|_|",
  4472. X/***************/
  4473. X"    _",
  4474. X"   / ",
  4475. X"  /  ",
  4476. X"_/   ",
  4477. X/***************/
  4478. X"  ___/ ",
  4479. X" /  /\\ ",
  4480. X"| /   |",
  4481. X"/\\___/ ",
  4482. X/***************/
  4483. X" . ",
  4484. X"/| ",
  4485. X" | ",
  4486. X"_|_",
  4487. X/***************/
  4488. X"  __  ",
  4489. X" /  ) ",
  4490. X"   /  ",
  4491. X"  /___",
  4492. X/***************/
  4493. X" ___ ",
  4494. X" __/ ",
  4495. X"   \\ ",
  4496. X"\\___)",
  4497. X/***************/
  4498. X"  _. ",
  4499. X" / | ",
  4500. X"/__|_",
  4501. X"  _|_",
  4502. X/***************/
  4503. X".___",
  4504. X"|__ ",
  4505. X"   \\",
  4506. X"\\__/",
  4507. X/***************/
  4508. X"  __ ",
  4509. X" /__ ",
  4510. X"/   \\",
  4511. X"\\___/",
  4512. X/***************/
  4513. X"___.",
  4514. X"  / ",
  4515. X" /  ",
  4516. X"/   ",
  4517. X/***************/
  4518. X" __ ",
  4519. X"(__)",
  4520. X"/  \\",
  4521. X"\\__/",
  4522. X/***************/
  4523. X" ___ ",
  4524. X"(___|",
  4525. X"   / ",
  4526. X"__/  ",
  4527. X/***************/
  4528. X"  ",
  4529. X"||",
  4530. X"  ",
  4531. X"||",
  4532. X/***************/
  4533. X"  ",
  4534. X"||",
  4535. X"  ",
  4536. X"|/",
  4537. X/***************/
  4538. X"  .",
  4539. X" / ",
  4540. X" \\ ",
  4541. X"  \\",
  4542. X/***************/
  4543. X"    ",
  4544. X"____",
  4545. X"____",
  4546. X"    ",
  4547. X/***************/
  4548. X".  ",
  4549. X" \\ ",
  4550. X" / ",
  4551. X"/  ",
  4552. X/***************/
  4553. X" __ ",
  4554. X"/  )",
  4555. X"  | ",
  4556. X"  . ",
  4557. X/***************/
  4558. X"  ___  ",
  4559. X" ___ \\ ",
  4560. X"| |_\\ |",
  4561. X" \\___/ ",
  4562. X/***************/
  4563. X  "   _   ",
  4564. X  "  / \\  ",
  4565. X  " /___\\ ",
  4566. X  "/     \\",
  4567. X/***************/
  4568. X  "___ ",
  4569. X  "|__)",
  4570. X  "|  \\",
  4571. X  "|__/",
  4572. X/***************/
  4573. X  "  __ ",
  4574. X  " /  \\",
  4575. X  "|    ",
  4576. X  " \\__/",
  4577. X/***************/
  4578. X  " __  ",
  4579. X  "|  \\ ",
  4580. X  "|   |",
  4581. X  "|__/ ",
  4582. X/***************/
  4583. X  " ___",
  4584. X  "|__ ",
  4585. X  "|   ",
  4586. X  "|___",
  4587. X/***************/
  4588. X  " ___",
  4589. X  "|__ ",
  4590. X  "|   ",
  4591. X  "|   ",
  4592. X/***************/
  4593. X  "  __ ",
  4594. X  " /  \\",
  4595. X  "|  __",
  4596. X  " \\__|",
  4597. X/***************/
  4598. X  "_   _",
  4599. X  "|___|",
  4600. X  "|   |",
  4601. X  "|   |",
  4602. X/***************/
  4603. X  "___",
  4604. X  " | ",
  4605. X  " | ",
  4606. X  "_|_",
  4607. X/***************/
  4608. X  " ___",
  4609. X  "   |",
  4610. X  "   |",
  4611. X  "\\_/ ",
  4612. X/***************/
  4613. X  "_  _",
  4614. X  "| / ",
  4615. X  "|/\\ ",
  4616. X  "|  \\",
  4617. X/***************/
  4618. X  "_   ",
  4619. X  "|   ",
  4620. X  "|   ",
  4621. X  "|___",
  4622. X/***************/
  4623. X  "_    _",
  4624. X  "|\\  /|",
  4625. X  "| \\/ |",
  4626. X  "|    |",
  4627. X/***************/
  4628. X  "__   _",
  4629. X  "| \\  |",
  4630. X  "|  \\ |",
  4631. X  "|   \\|",
  4632. X/***************/
  4633. X  "  ___  ",
  4634. X  " /   \\ ",
  4635. X  "|     |",
  4636. X  " \\___/ ",
  4637. X/***************/
  4638. X  "____ ",
  4639. X  "|   \\",
  4640. X  "|___/",
  4641. X  "|    ",
  4642. X/***************/
  4643. X  "  ___  ",
  4644. X  " /   \\ ",
  4645. X  "|   \\ |",
  4646. X  " \\___\\ ",
  4647. X/***************/
  4648. X  "____ ",
  4649. X  "|   \\",
  4650. X  "|___/",
  4651. X  "|  \\ ",
  4652. X/***************/
  4653. X  " __  ",
  4654. X  "|  \\ ",
  4655. X  " \\__ ",
  4656. X  "\\___|",
  4657. X/***************/
  4658. X  "_____",
  4659. X  "  |  ",
  4660. X  "  |  ",
  4661. X  "  |  ",
  4662. X/***************/
  4663. X  "_    _",
  4664. X  "|    |",
  4665. X  "|    |",
  4666. X  " \\__/ ",
  4667. X/***************/
  4668. X  "_      _",
  4669. X  " \\    / ",
  4670. X  "  \\  /  ",
  4671. X  "   \\/   ",
  4672. X/***************/
  4673. X  "_          _",
  4674. X  " \\        / ",
  4675. X  "  \\  /\\  /  ",
  4676. X  "   \\/  \\/   ",
  4677. X/***************/
  4678. X  "_   _",
  4679. X  " \\ / ",
  4680. X  " / \\ ",
  4681. X  "/   \\",
  4682. X/***************/
  4683. X  "_   _",
  4684. X  " \\ / ",
  4685. X  "  /  ",
  4686. X  " /   ",
  4687. X/***************/
  4688. X  "____ ",
  4689. X  "   / ",
  4690. X  "  /  ",
  4691. X  " /___",
  4692. X/***************/
  4693. X" __",
  4694. X"|  ",
  4695. X"|  ",
  4696. X"|__",
  4697. X/***************/
  4698. X".   ",
  4699. X" \\  ",
  4700. X"  \\ ",
  4701. X"   \\",
  4702. X/***************/
  4703. X"__ ",
  4704. X"  |",
  4705. X"  |",
  4706. X"__|",
  4707. X/***************/
  4708. X" . ",
  4709. X"/ \\",
  4710. X"   ",
  4711. X"   ",
  4712. X/***************/
  4713. X"    ",
  4714. X"    ",
  4715. X"    ",
  4716. X"____",
  4717. X/***************/
  4718. X"_ ",
  4719. X"\\ ",
  4720. X"  ",
  4721. X"  ",
  4722. X/***************/
  4723. X  "   _   ",
  4724. X  "  / \\  ",
  4725. X  " /___\\ ",
  4726. X  "/     \\",
  4727. X/***************/
  4728. X  "___ ",
  4729. X  "|__)",
  4730. X  "|  \\",
  4731. X  "|__/",
  4732. X/***************/
  4733. X  "  __ ",
  4734. X  " /  \\",
  4735. X  "|    ",
  4736. X  " \\__/",
  4737. X/***************/
  4738. X  " __  ",
  4739. X  "|  \\ ",
  4740. X  "|   |",
  4741. X  "|__/ ",
  4742. X/***************/
  4743. X  " ___",
  4744. X  "|__ ",
  4745. X  "|   ",
  4746. X  "|___",
  4747. X/***************/
  4748. X  " ___",
  4749. X  "|__ ",
  4750. X  "|   ",
  4751. X  "|   ",
  4752. X/***************/
  4753. X  "  __ ",
  4754. X  " /  \\",
  4755. X  "|  __",
  4756. X  " \\__|",
  4757. X/***************/
  4758. X  "_   _",
  4759. X  "|___|",
  4760. X  "|   |",
  4761. X  "|   |",
  4762. X/***************/
  4763. X  "___",
  4764. X  " | ",
  4765. X  " | ",
  4766. X  "_|_",
  4767. X/***************/
  4768. X  " ___",
  4769. X  "   |",
  4770. X  "   |",
  4771. X  "\\_/ ",
  4772. X/***************/
  4773. X  "_  _",
  4774. X  "| / ",
  4775. X  "|/\\ ",
  4776. X  "|  \\",
  4777. X/***************/
  4778. X  "_   ",
  4779. X  "|   ",
  4780. X  "|   ",
  4781. X  "|___",
  4782. X/***************/
  4783. X  "_    _",
  4784. X  "|\\  /|",
  4785. X  "| \\/ |",
  4786. X  "|    |",
  4787. X/***************/
  4788. X  "__   _",
  4789. X  "| \\  |",
  4790. X  "|  \\ |",
  4791. X  "|   \\|",
  4792. X/***************/
  4793. X  "  ___  ",
  4794. X  " /   \\ ",
  4795. X  "|     |",
  4796. X  " \\___/ ",
  4797. X/***************/
  4798. X  "____ ",
  4799. X  "|   \\",
  4800. X  "|___/",
  4801. X  "|    ",
  4802. X/***************/
  4803. X  "  ___  ",
  4804. X  " /   \\ ",
  4805. X  "|   \\ |",
  4806. X  " \\___\\ ",
  4807. X/***************/
  4808. X  "____ ",
  4809. X  "|   \\",
  4810. X  "|___/",
  4811. X  "|  \\ ",
  4812. X/***************/
  4813. X  " __  ",
  4814. X  "|  \\ ",
  4815. X  " \\__ ",
  4816. X  "\\___|",
  4817. X/***************/
  4818. X  "_____",
  4819. X  "  |  ",
  4820. X  "  |  ",
  4821. X  "  |  ",
  4822. X/***************/
  4823. X  "_    _",
  4824. X  "|    |",
  4825. X  "|    |",
  4826. X  " \\__/ ",
  4827. X/***************/
  4828. X  "_      _",
  4829. X  " \\    / ",
  4830. X  "  \\  /  ",
  4831. X  "   \\/   ",
  4832. X/***************/
  4833. X  "_          _",
  4834. X  " \\        / ",
  4835. X  "  \\  /\\  /  ",
  4836. X  "   \\/  \\/   ",
  4837. X/***************/
  4838. X  "_   _",
  4839. X  " \\ / ",
  4840. X  " / \\ ",
  4841. X  "/   \\",
  4842. X/***************/
  4843. X  "_   _",
  4844. X  " \\ / ",
  4845. X  "  /  ",
  4846. X  " /   ",
  4847. X/***************/
  4848. X  "____ ",
  4849. X  "   / ",
  4850. X  "  /  ",
  4851. X  " /___",
  4852. X/***************/
  4853. X"  __",
  4854. X"_(  ",
  4855. X" (  ",
  4856. X"  \\_",
  4857. X/***************/
  4858. X".",
  4859. X"|",
  4860. X"|",
  4861. X"|",
  4862. X/***************/
  4863. X"__  ",
  4864. X"  )_",
  4865. X"  ) ",
  4866. X"_/  ",
  4867. X/***************/
  4868. X" _  .",
  4869. X"/ \\/ ",
  4870. X"     ",
  4871. X"     ",
  4872. X};
  4873. X
  4874. X#define LINLEN 79
  4875. static int filled;
  4876. static char buf[4][LINLEN+1];
  4877. X
  4878. main(argc, argv)
  4879. int argc;
  4880. char *argv[];
  4881. X{
  4882. X  int i,j,max;
  4883. X
  4884. X  for (i=1; i<argc; i++) {
  4885. X    for (j=0, max=strlen(argv[i]); j<max; j++) {
  4886. X      print1char(argv[i][j]);
  4887. X    }
  4888. X    flushit();
  4889. X  }
  4890. X}
  4891. X
  4892. print1char(ch) 
  4893. char ch;
  4894. X{
  4895. X  int c=ch-' ';
  4896. X  int charlen;
  4897. X
  4898. X
  4899. X  charlen=strlen(chars[c][0]);
  4900. X
  4901. X  if (charlen+filled+(filled?1:0) > LINLEN) flushit();
  4902. X
  4903. X  strcat(buf[0]," ");
  4904. X  strcat(buf[0],chars[c][0]);
  4905. X  strcat(buf[1]," ");
  4906. X  strcat(buf[1],chars[c][1]);
  4907. X  strcat(buf[2]," ");
  4908. X  strcat(buf[2],chars[c][2]);
  4909. X  strcat(buf[3]," ");
  4910. X  strcat(buf[3],chars[c][3]);
  4911. X  filled+=charlen+1;
  4912. X}
  4913. X
  4914. flushit()
  4915. X{
  4916. X  puts(buf[0]);
  4917. X  puts(buf[1]);
  4918. X  puts(buf[2]);
  4919. X  puts(buf[3]);
  4920. X  putchar('\n');
  4921. X  buf[0][0]=buf[1][0]=buf[2][0]=buf[3][0]='\0';
  4922. X  filled=0;
  4923. X}
  4924. END_OF_FILE
  4925. if test 6380 -ne `wc -c <'banner-7/banner.c'`; then
  4926.     echo shar: \"'banner-7/banner.c'\" unpacked with wrong size!
  4927. fi
  4928. # end of 'banner-7/banner.c'
  4929. fi
  4930. if test ! -d 'banner-8' ; then
  4931.     echo shar: Creating directory \"'banner-8'\"
  4932.     mkdir 'banner-8'
  4933. fi
  4934. if test ! -d 'banner-9' ; then
  4935.     echo shar: Creating directory \"'banner-9'\"
  4936.     mkdir 'banner-9'
  4937. fi
  4938. if test -f 'banner-9/Makefile' -a "${1}" != "-c" ; then 
  4939.   echo shar: Will not clobber existing file \"'banner-9/Makefile'\"
  4940. else
  4941. echo shar: Extracting \"'banner-9/Makefile'\" \(96 characters\)
  4942. sed "s/^X//" >'banner-9/Makefile' <<'END_OF_FILE'
  4943. block: block.o data.o
  4944. X    cc block.o data.o -o block
  4945. X
  4946. prtout: *.c TODO
  4947. X    pr TODO *.c | PRMAN -setup
  4948. END_OF_FILE
  4949. if test 96 -ne `wc -c <'banner-9/Makefile'`; then
  4950.     echo shar: \"'banner-9/Makefile'\" unpacked with wrong size!
  4951. fi
  4952. # end of 'banner-9/Makefile'
  4953. fi
  4954. if test -f 'banner-9/TODO' -a "${1}" != "-c" ; then 
  4955.   echo shar: Will not clobber existing file \"'banner-9/TODO'\"
  4956. else
  4957. echo shar: Extracting \"'banner-9/TODO'\" \(259 characters\)
  4958. sed "s/^X//" >'banner-9/TODO' <<'END_OF_FILE'
  4959. X8702.171220
  4960. X
  4961. X*    Set up with display buffer instead of stream to allow for adding
  4962. X    special features.
  4963. X    (added: 8702.201336)
  4964. X
  4965. X8702.201337
  4966. X
  4967. X*    Set up to use flag to set print width, possibly add feature to
  4968. X    use an environment variable.
  4969. X
  4970. X*    Modify to use font files.
  4971. END_OF_FILE
  4972. if test 259 -ne `wc -c <'banner-9/TODO'`; then
  4973.     echo shar: \"'banner-9/TODO'\" unpacked with wrong size!
  4974. fi
  4975. # end of 'banner-9/TODO'
  4976. fi
  4977. if test -f 'banner-9/block.c' -a "${1}" != "-c" ; then 
  4978.   echo shar: Will not clobber existing file \"'banner-9/block.c'\"
  4979. else
  4980. echo shar: Extracting \"'banner-9/block.c'\" \(1401 characters\)
  4981. sed "s/^X//" >'banner-9/block.c' <<'END_OF_FILE'
  4982. X#include <stdio.h>
  4983. X#include <string.h>
  4984. X
  4985. X#define LINES          10
  4986. X#define BUFFERSIZE    1024
  4987. X
  4988. extern char    *data[][LINES];
  4989. X
  4990. char        buffer[LINES][BUFFERSIZE+1];
  4991. X
  4992. int min(a,b)
  4993. int    a,
  4994. X    b;
  4995. X{
  4996. X    if (a>b)
  4997. X    return(b);
  4998. X    return(a);
  4999. X}
  5000. X
  5001. main(argc,argv)
  5002. int    argc;
  5003. char    **argv;
  5004. X{
  5005. X    short    i,
  5006. X        j,
  5007. X        k,
  5008. X        l,
  5009. X        m,
  5010. X        idx,
  5011. X        idx2,
  5012. X        al,
  5013. X        sw,
  5014. X        tmp,
  5015. X        tmp2;
  5016. X    char    *p,
  5017. X        *ptr;
  5018. X
  5019. X    while (--argc) {
  5020. X    argv++;
  5021. X/*
  5022. X    for (i=0; i<LINES; i++) {
  5023. X        p = *argv;
  5024. X        while (*p != '\0')
  5025. X        printf("%s ",data[*p++][i]);
  5026. X        printf("\n");
  5027. X    }
  5028. X*/
  5029. X    p = *argv;
  5030. X    idx = 0;
  5031. X    idx2 = 0;
  5032. X    for (i=0; i<LINES; i++)
  5033. X        for (j=0; j<BUFFERSIZE; j++)
  5034. X        buffer[i][j] = ' ';
  5035. X    while (*p != '\0') {
  5036. X        al = strlen(data[*p][0]);
  5037. X        sw = al;
  5038. X        l = 0; m = 0;
  5039. X        for (i=0; i<LINES; i++) {
  5040. X        for (j=1; j<=idx2 && buffer[i][idx-j]==' '; j++);
  5041. X        for (k=0; *p!=' ' && k<al && data[*p][i][k]==' '; k++);
  5042. X        sw = min(sw,j+k);
  5043. X        if (i) {
  5044. X            sw = min(sw,j+m);
  5045. X            sw = min(sw,l+k);
  5046. X        }
  5047. X        l = j; m = k;
  5048. X        }
  5049. X        if (sw)
  5050. X        --sw;
  5051. X        tmp = idx + al - sw;
  5052. X        tmp2 = idx-sw+1;
  5053. X        for (i=0; i<LINES; i++)
  5054. X        for (j=0; j<min(al,BUFFERSIZE-tmp); j++)
  5055. X            if (data[*p][i][j]!=' ')
  5056. X            buffer[i][tmp2+j]=data[*p][i][j];
  5057. X        idx2 = ( *p==' ' ? 0 : tmp);
  5058. X        idx = tmp + 1;
  5059. X        p++;
  5060. X        if (idx>=BUFFERSIZE) {
  5061. X        idx = BUFFERSIZE;
  5062. X        *p = '\0';
  5063. X        }
  5064. X    }
  5065. X    for (i=0; i<LINES; i++) {
  5066. X        buffer[i][idx] = '\0';
  5067. X        printf("%s\n",buffer[i]);
  5068. X    }
  5069. X    }
  5070. X}
  5071. END_OF_FILE
  5072. if test 1401 -ne `wc -c <'banner-9/block.c'`; then
  5073.     echo shar: \"'banner-9/block.c'\" unpacked with wrong size!
  5074. fi
  5075. # end of 'banner-9/block.c'
  5076. fi
  5077. if test ! -d 'cursive-1' ; then
  5078.     echo shar: Creating directory \"'cursive-1'\"
  5079.     mkdir 'cursive-1'
  5080. fi
  5081. if test -f 'cursive-1/Makefile' -a "${1}" != "-c" ; then 
  5082.   echo shar: Will not clobber existing file \"'cursive-1/Makefile'\"
  5083. else
  5084. echo shar: Extracting \"'cursive-1/Makefile'\" \(466 characters\)
  5085. sed "s/^X//" >'cursive-1/Makefile' <<'END_OF_FILE'
  5086. CFLAGS = -g
  5087. X
  5088. cursive: cursive.o x.o xs.o
  5089. X    cc -g -o cursive cursive.o x.o xs.o
  5090. X
  5091. x.o: x.c
  5092. X
  5093. xs.o: xs.c
  5094. X
  5095. x.c: font.c
  5096. X    xstr font.c
  5097. X
  5098. xs.c: font.c
  5099. X    xstr font.c
  5100. X
  5101. X# This is for use if you haven't got the xstr command.  The program works
  5102. X# the same, but is slightly bigger.
  5103. X
  5104. lcursive: cursive.o font.o
  5105. X    cc -g -o lcursive cursive.o font.o
  5106. X
  5107. cursive.shar: cursive.c font.c cursive.h cursive.6 Makefile shar
  5108. X    shar cursive.c font.c cursive.h cursive.6 Makefile shar > cursive.shar
  5109. END_OF_FILE
  5110. if test 466 -ne `wc -c <'cursive-1/Makefile'`; then
  5111.     echo shar: \"'cursive-1/Makefile'\" unpacked with wrong size!
  5112. fi
  5113. # end of 'cursive-1/Makefile'
  5114. fi
  5115. if test -f 'cursive-1/README' -a "${1}" != "-c" ; then 
  5116.   echo shar: Will not clobber existing file \"'cursive-1/README'\"
  5117. else
  5118. echo shar: Extracting \"'cursive-1/README'\" \(424 characters\)
  5119. sed "s/^X//" >'cursive-1/README' <<'END_OF_FILE'
  5120. This is a program for generating horizontal cursive banners.  It's main
  5121. use is for generating cute signatures for email.  It is copyrighted by
  5122. Jan Wolter, but may be distributed freely.  Have what fun you can...
  5123. X
  5124. X                  ___                _     __  _
  5125. X                 (   >              ' )   /   // _/_
  5126. X                  __/___.  ____      / / / __|/  /  _  __
  5127. X                 / / (_/|_/ / <__   (_(_/ (_) \_<__</_/ (__
  5128. X                <_/
  5129. X                    janc@crim.eecs.umich.edu
  5130. X
  5131. END_OF_FILE
  5132. if test 424 -ne `wc -c <'cursive-1/README'`; then
  5133.     echo shar: \"'cursive-1/README'\" unpacked with wrong size!
  5134. fi
  5135. # end of 'cursive-1/README'
  5136. fi
  5137. if test -f 'cursive-1/cursive.6' -a "${1}" != "-c" ; then 
  5138.   echo shar: Will not clobber existing file \"'cursive-1/cursive.6'\"
  5139. else
  5140. echo shar: Extracting \"'cursive-1/cursive.6'\" \(1300 characters\)
  5141. sed "s/^X//" >'cursive-1/cursive.6' <<'END_OF_FILE'
  5142. X.TH CURSIVE 6 "24 July 1985"
  5143. X.UC
  5144. X.SH NAME
  5145. cursive \- print text in cursive script
  5146. X.SH SYNOPSIS
  5147. X.B /usr/games/cursive
  5148. X[
  5149. X.BI \-i n
  5150. X]
  5151. X[
  5152. X.BI \-t n
  5153. X]
  5154. X[message]
  5155. X.SH DESCRIPTION
  5156. X.I Cursive
  5157. prints a line of text in a rather crude cursive script.
  5158. It is intended for use mainly for the generation of decorative signatures
  5159. for electronic mail.
  5160. If message text is given on the command line, that text is used.
  5161. Otherwise the text will be read from standard input up to an end of file.
  5162. The
  5163. X.B \-i
  5164. option sets the minimum spacing between adjacent characters.
  5165. The default is
  5166. X.B \-i1 .
  5167. The
  5168. X.B \-t
  5169. option sets the length of the trailing lines on the end of each word.
  5170. The default is
  5171. X.B \-t1 .
  5172. X.PP
  5173. The '_' character is treated in a special way.  It may be inserted in
  5174. the text anywhere you wish to lengthen a connecting line between two
  5175. letters.
  5176. X.SH BUGS
  5177. Many ASCII characters are not defined, notably the numbers and symbols.
  5178. Punctuation is mostly available.
  5179. Some characters are rather ugly.
  5180. The author has lousy handwriting.
  5181. X.SH AUTHOR
  5182. Jan Wolter.  UUCP mail to janc@crim.eecs.umich.edu
  5183. X.SH COPYRIGHT
  5184. This program and the cursive font it generates are copyrighted by Jan Wolter.
  5185. Both may be freely used and distributed in any way whatsoever, so long as
  5186. the author's name is left in the source code and documentation.
  5187. END_OF_FILE
  5188. if test 1300 -ne `wc -c <'cursive-1/cursive.6'`; then
  5189.     echo shar: \"'cursive-1/cursive.6'\" unpacked with wrong size!
  5190. fi
  5191. # end of 'cursive-1/cursive.6'
  5192. fi
  5193. if test -f 'cursive-1/cursive.h' -a "${1}" != "-c" ; then 
  5194.   echo shar: Will not clobber existing file \"'cursive-1/cursive.h'\"
  5195. else
  5196. echo shar: Extracting \"'cursive-1/cursive.h'\" \(544 characters\)
  5197. sed "s/^X//" >'cursive-1/cursive.h' <<'END_OF_FILE'
  5198. struct letter {
  5199. X    char *line[6];            /* What's on each of the six lines */
  5200. X    char spcs[6];            /* Number of leading spaces for each */
  5201. X    short tailin,tailout;        /* Where the lines in and out go */
  5202. X    };
  5203. X
  5204. X/* Special Codes for Character Table */
  5205. X
  5206. X#define XX  -1        /* Ignore character */
  5207. X#define SP  -2          /* Space */
  5208. X#define ST  -3          /* Extend trailer */
  5209. X#define SA  -4        /* Alternate font number */    /* Not used */
  5210. X#define SN  -5        /* Numbers */            /* Not used */
  5211. X
  5212. X#define CHARWIDTH 10
  5213. X
  5214. extern struct letter list[];
  5215. extern short code1[], code2[];
  5216. END_OF_FILE
  5217. if test 544 -ne `wc -c <'cursive-1/cursive.h'`; then
  5218.     echo shar: \"'cursive-1/cursive.h'\" unpacked with wrong size!
  5219. fi
  5220. # end of 'cursive-1/cursive.h'
  5221. fi
  5222. if test ! -d 'cursive-2' ; then
  5223.     echo shar: Creating directory \"'cursive-2'\"
  5224.     mkdir 'cursive-2'
  5225. fi
  5226. if test -f 'cursive-2/Makefile' -a "${1}" != "-c" ; then 
  5227.   echo shar: Will not clobber existing file \"'cursive-2/Makefile'\"
  5228. else
  5229. echo shar: Extracting \"'cursive-2/Makefile'\" \(466 characters\)
  5230. sed "s/^X//" >'cursive-2/Makefile' <<'END_OF_FILE'
  5231. CFLAGS = -O
  5232. X
  5233. cursive: cursive.o x.o xs.o
  5234. X    cc -g -o cursive cursive.o x.o xs.o
  5235. X
  5236. x.o: x.c
  5237. X
  5238. xs.o: xs.c
  5239. X
  5240. x.c: font.c
  5241. X    xstr font.c
  5242. X
  5243. xs.c: font.c
  5244. X    xstr font.c
  5245. X
  5246. X# This is for use if you haven't got the xstr command.  The program works
  5247. X# the same, but is slightly bigger.
  5248. X
  5249. lcursive: cursive.o font.o
  5250. X    cc -g -o lcursive cursive.o font.o
  5251. X
  5252. cursive.shar: cursive.c font.c cursive.h cursive.6 Makefile shar
  5253. X    shar cursive.c font.c cursive.h cursive.6 Makefile shar > cursive.shar
  5254. END_OF_FILE
  5255. if test 466 -ne `wc -c <'cursive-2/Makefile'`; then
  5256.     echo shar: \"'cursive-2/Makefile'\" unpacked with wrong size!
  5257. fi
  5258. # end of 'cursive-2/Makefile'
  5259. fi
  5260. if test -f 'cursive-2/cursive.6' -a "${1}" != "-c" ; then 
  5261.   echo shar: Will not clobber existing file \"'cursive-2/cursive.6'\"
  5262. else
  5263. echo shar: Extracting \"'cursive-2/cursive.6'\" \(1300 characters\)
  5264. sed "s/^X//" >'cursive-2/cursive.6' <<'END_OF_FILE'
  5265. X.TH CURSIVE 6 "24 July 1985"
  5266. X.UC
  5267. X.SH NAME
  5268. cursive \- print text in cursive script
  5269. X.SH SYNOPSIS
  5270. X.B /usr/games/cursive
  5271. X[
  5272. X.BI \-i n
  5273. X]
  5274. X[
  5275. X.BI \-t n
  5276. X]
  5277. X[message]
  5278. X.SH DESCRIPTION
  5279. X.I Cursive
  5280. prints a line of text in a rather crude cursive script.
  5281. It is intended for use mainly for the generation of decorative signatures
  5282. for electronic mail.
  5283. If message text is given on the command line, that text is used.
  5284. Otherwise the text will be read from standard input up to an end of file.
  5285. The
  5286. X.B \-i
  5287. option sets the minimum spacing between adjacent characters.
  5288. The default is
  5289. X.B \-i1 .
  5290. The
  5291. X.B \-t
  5292. option sets the length of the trailing lines on the end of each word.
  5293. The default is
  5294. X.B \-t1 .
  5295. X.PP
  5296. The '_' character is treated in a special way.  It may be inserted in
  5297. the text anywhere you wish to lengthen a connecting line between two
  5298. letters.
  5299. X.SH BUGS
  5300. Many ASCII characters are not defined, notably the numbers and symbols.
  5301. Punctuation is mostly available.
  5302. Some characters are rather ugly.
  5303. The author has lousy handwriting.
  5304. X.SH AUTHOR
  5305. Jan Wolter.  UUCP mail to janc@crim.eecs.umich.edu
  5306. X.SH COPYRIGHT
  5307. This program and the cursive font it generates are copyrighted by Jan Wolter.
  5308. Both may be freely used and distributed in any way whatsoever, so long as
  5309. the author's name is left in the source code and documentation.
  5310. END_OF_FILE
  5311. if test 1300 -ne `wc -c <'cursive-2/cursive.6'`; then
  5312.     echo shar: \"'cursive-2/cursive.6'\" unpacked with wrong size!
  5313. fi
  5314. # end of 'cursive-2/cursive.6'
  5315. fi
  5316. if test -f 'cursive-2/cursive.h' -a "${1}" != "-c" ; then 
  5317.   echo shar: Will not clobber existing file \"'cursive-2/cursive.h'\"
  5318. else
  5319. echo shar: Extracting \"'cursive-2/cursive.h'\" \(544 characters\)
  5320. sed "s/^X//" >'cursive-2/cursive.h' <<'END_OF_FILE'
  5321. struct letter {
  5322. X    char *line[6];            /* What's on each of the six lines */
  5323. X    char spcs[6];            /* Number of leading spaces for each */
  5324. X    short tailin,tailout;        /* Where the lines in and out go */
  5325. X    };
  5326. X
  5327. X/* Special Codes for Character Table */
  5328. X
  5329. X#define XX  -1        /* Ignore character */
  5330. X#define SP  -2          /* Space */
  5331. X#define ST  -3          /* Extend trailer */
  5332. X#define SA  -4        /* Alternate font number */    /* Not used */
  5333. X#define SN  -5        /* Numbers */            /* Not used */
  5334. X
  5335. X#define CHARWIDTH 10
  5336. X
  5337. extern struct letter list[];
  5338. extern short code1[], code2[];
  5339. END_OF_FILE
  5340. if test 544 -ne `wc -c <'cursive-2/cursive.h'`; then
  5341.     echo shar: \"'cursive-2/cursive.h'\" unpacked with wrong size!
  5342. fi
  5343. # end of 'cursive-2/cursive.h'
  5344. fi
  5345. if test ! -d 'gothic' ; then
  5346.     echo shar: Creating directory \"'gothic'\"
  5347.     mkdir 'gothic'
  5348. fi
  5349. echo shar: End of archive 1 \(of 5\).
  5350. cp /dev/null ark1isdone
  5351. MISSING=""
  5352. for I in 1 2 3 4 5 ; do
  5353.     if test ! -f ark${I}isdone ; then
  5354.     MISSING="${MISSING} ${I}"
  5355.     fi
  5356. done
  5357. if test "${MISSING}" = "" ; then
  5358.     echo You have unpacked all 5 archives.
  5359.     rm -f ark[1-9]isdone
  5360. else
  5361.     echo You still need to unpack the following archives:
  5362.     echo "        " ${MISSING}
  5363. fi
  5364. ##  End of shell archive.
  5365. exit 0
  5366.