home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / os2 / dwnsrs57.zip / DOWNFNT.C < prev    next >
C/C++ Source or Header  |  1993-05-31  |  26KB  |  485 lines

  1. /* ============================================================= */
  2. /*  Rob Hamerling's MAXIMUS DOWNload file SORT and list utility. */
  3. /*  -> DOWNFNT.C                                                 */
  4. /*  -> Block font definitions and generation routine.            */
  5. /* ============================================================= */
  6.  
  7. #define INCL_BASE
  8. #define INCL_NOPMAPI
  9. #include <os2.h>
  10.  
  11. #include <ctype.h>
  12. #include <stdio.h>
  13. #include <string.h>
  14.  
  15. #include "downsort.h"
  16. #include "downfpro.h"
  17.  
  18. struct _b8_patt {                       /* 8 column font                 */
  19.         unsigned c0:3, c1:3, c2:3, c3:3, c4:3, c5:3, c6:3, c7:3; };
  20. struct _b8x5 {                          /* all fonts defined as 8x5      */
  21.          char           c;              /* the character                 */
  22.          unsigned char  k;              /* number of active columns      */
  23.          struct _b8_patt p[5];          /* 8 column x 5 lines pattern    */
  24.            };
  25.  
  26. /* ===================================================== */
  27. /* Generate string of block-characters (1 part per call) */
  28. /* ===================================================== */
  29. char *strnblk(char  *b,
  30.               short int n,
  31.               short int f,
  32.               short int k)
  33. {
  34.   int  i, j, x ,w;                      /* counters                      */
  35.  
  36.   static struct _b8x5 f1[] = {          /* simple 5x3 font               */
  37.     {'A',6, 1,2,2,2,1,0,0,0, 3,1,1,1,3,0,0,0, 3,0,0,0,3,0,0,0,
  38.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  39.     {'B',6, 3,2,2,2,1,0,0,0, 3,2,2,2,1,0,0,0, 3,1,1,1,2,0,0,0,
  40.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  41.     {'C',6, 1,2,2,2,1,0,0,0, 3,0,0,0,0,0,0,0, 2,1,1,1,2,0,0,0,
  42.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  43.     {'D',6, 3,2,2,2,1,0,0,0, 3,0,0,0,3,0,0,0, 3,1,1,1,2,0,0,0,
  44.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  45.     {'E',6, 3,2,2,2,2,0,0,0, 3,2,2,0,0,0,0,0, 3,1,1,1,1,0,0,0,
  46.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  47.     {'F',6, 3,2,2,2,2,0,0,0, 3,1,1,0,0,0,0,0, 3,0,0,0,0,0,0,0,
  48.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  49.     {'G',6, 1,2,2,2,1,0,0,0, 3,0,0,1,1,0,0,0, 2,1,1,1,2,0,0,0,
  50.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  51.     {'H',6, 3,0,0,0,3,0,0,0, 3,1,1,1,3,0,0,0, 3,0,0,0,3,0,0,0,
  52.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  53.     {'I',4, 2,3,2,0,0,0,0,0, 0,3,0,0,0,0,0,0, 1,3,1,0,0,0,0,0,
  54.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  55.     {'J',6, 0,2,2,2,3,0,0,0, 0,0,0,0,3,0,0,0, 2,1,1,1,2,0,0,0,
  56.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  57.     {'K',6, 3,0,0,1,2,0,0,0, 3,2,2,1,0,0,0,0, 3,0,0,0,3,0,0,0,
  58.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  59.     {'L',6, 3,0,0,0,0,0,0,0, 3,0,0,0,0,0,0,0, 3,1,1,1,1,0,0,0,
  60.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  61.     {'M',6, 3,1,0,1,3,0,0,0, 3,2,3,2,3,0,0,0, 3,0,0,0,3,0,0,0,
  62.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  63.     {'N',6, 3,1,0,0,3,0,0,0, 3,2,3,1,3,0,0,0, 3,0,0,2,3,0,0,0,
  64.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  65.     {'O',6, 1,2,2,2,1,0,0,0, 3,0,0,0,3,0,0,0, 2,1,1,1,2,0,0,0,
  66.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  67.     {'P',6, 3,2,2,2,1,0,0,0, 3,1,1,1,2,0,0,0, 3,0,0,0,0,0,0,0,
  68.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  69.     {'Q',6, 1,2,2,2,1,0,0,0, 3,0,1,0,3,0,0,0, 2,1,1,2,1,0,0,0,
  70.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  71.     {'R',6, 3,2,2,2,1,0,0,0, 3,1,1,1,2,0,0,0, 3,0,2,1,1,0,0,0,
  72.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  73.     {'S',6, 1,2,2,2,2,0,0,0, 0,2,2,2,1,0,0,0, 1,1,1,1,2,0,0,0,
  74.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  75.     {'T',6, 2,2,3,2,2,0,0,0, 0,0,3,0,0,0,0,0, 0,0,3,0,0,0,0,0,
  76.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  77.     {'U',6, 3,0,0,0,3,0,0,0, 3,0,0,0,3,0,0,0, 2,1,1,1,2,0,0,0,
  78.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  79.     {'V',6, 3,0,0,0,3,0,0,0, 3,1,0,1,3,0,0,0, 0,2,3,2,0,0,0,0,
  80.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  81.     {'W',6, 3,0,0,0,3,0,0,0, 3,0,1,0,3,0,0,0, 2,3,2,3,2,0,0,0,
  82.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  83.     {'X',6, 2,1,0,1,2,0,0,0, 0,0,3,0,0,0,0,0, 1,2,0,2,1,0,0,0,
  84.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  85.     {'Y',6, 3,0,0,0,3,0,0,0, 2,3,1,3,2,0,0,0, 0,0,3,0,0,0,0,0,
  86.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  87.     {'Z',6, 2,2,2,2,3,0,0,0, 0,1,2,2,0,0,0,0, 3,1,1,1,1,0,0,0,
  88.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  89.     {'0',6, 1,2,2,3,1,0,0,0, 3,0,3,0,3,0,0,0, 2,3,1,1,2,0,0,0,
  90.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  91.     {'1',4, 1,3,0,0,0,0,0,0, 0,3,0,0,0,0,0,0, 1,3,1,0,0,0,
  92.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  93.     {'2',6, 1,2,2,2,1,0,0,0, 0,1,1,1,2,0,0,0, 3,1,1,1,1,0,0,0,
  94.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  95.     {'3',6, 1,2,2,2,1,0,0,0, 0,0,2,2,1,0,0,0, 2,1,1,1,2,0,0,0,
  96.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  97.     {'4',6, 0,0,1,2,3,0,0,0, 1,2,0,0,3,0,0,0, 2,2,2,2,3,0,0,0,
  98.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  99.     {'5',6, 3,2,2,2,2,0,0,0, 2,2,2,2,1,0,0,0, 2,1,1,1,2,0,0,0,
  100.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  101.     {'6',6, 1,2,2,2,0,0,0,0, 3,2,2,2,1,0,0,0, 2,1,1,1,2,0,0,0,
  102.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  103.     {'7',6, 2,2,2,2,3,0,0,0, 0,0,1,2,0,0,0,0, 0,3,0,0,0,0,0,0,
  104.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  105.     {'8',6, 1,2,2,2,1,0,0,0, 1,2,2,2,1,0,0,0, 2,1,1,1,2,0,0,0,
  106.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  107.     {'9',6, 1,2,2,2,1,0,0,0, 2,1,1,1,3,0,0,0, 0,1,1,1,2,0,0,0,
  108.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  109.     {'_',6, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 1,1,1,1,1,0,0,0,
  110.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  111.     {'*',6, 1,0,1,0,1,0,0,0, 1,3,2,3,1,0,0,0, 1,2,3,2,1,0,0,0,
  112.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  113.     {'-',4, 0,0,0,0,0,0,0,0, 1,1,1,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  114.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  115.     {'|',3, 0,3,0,0,0,0,0,0, 0,3,0,0,0,0,0,0, 0,3,0,0,0,0,0,0,
  116.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  117.     {'.',2, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 1,0,0,0,0,0,0,0,
  118.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  119.     {'(',4, 0,1,2,0,0,0,0,0, 3,0,0,0,0,0,0,0, 0,2,1,0,0,0,0,0,
  120.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  121.     {')',4, 2,1,0,0,0,0,0,0, 0,0,3,0,0,0,0,0, 1,2,0,0,0,0,0,0,
  122.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  123.     {'[',4, 3,2,2,0,0,0,0,0, 3,0,0,0,0,0,0,0, 3,1,1,0,0,0,0,0,
  124.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  125.     {']',4, 2,2,3,0,0,0,0,0, 0,0,3,0,0,0,0,0, 1,1,3,0,0,0,0,0,
  126.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  127.     {'/',6, 0,0,0,0,1,0,0,0, 0,0,1,2,0,0,0,0, 1,2,0,0,0,0,0,0,
  128.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  129.    {'\\',6, 1,0,0,0,0,0,0,0, 0,2,1,0,0,0,0,0, 0,0,0,2,1,0,0,0,
  130.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  131.     {'`',3, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  132.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  133.     {' ',4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  134.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  135.         };
  136.  
  137.   static struct _b8x5 f2[] = {          /* 7x5 pseudo stencil            */
  138.     {'A',8, 0,3,3,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,6,3,3,3,3,0,
  139.             3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0},
  140.     {'B',8, 3,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,6,3,3,3,0,0,
  141.             3,3,0,0,0,3,3,0, 3,3,6,3,3,3,0,0},
  142.     {'C',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,0,0,0,
  143.             3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0},
  144.     {'D',8, 3,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0,
  145.             3,3,0,0,0,3,3,0, 3,3,6,3,3,3,0,0},
  146.     {'E',8, 3,3,6,3,3,3,3,0, 3,3,0,0,0,0,0,0, 3,3,6,3,3,0,0,0,
  147.             3,3,0,0,0,0,0,0, 3,3,6,3,3,3,3,0},
  148.     {'F',8, 3,3,6,3,3,3,3,0, 3,3,0,0,0,0,0,0, 3,3,6,3,3,0,0,0,
  149.             3,3,0,0,0,0,0,0, 3,3,0,0,0,0,0,0},
  150.     {'G',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,0,0,0,
  151.             3,3,0,0,2,3,3,0, 3,3,6,3,3,3,0,0},
  152.     {'H',8, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0, 3,3,6,3,3,3,3,0,
  153.             3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0},
  154.     {'I',6, 3,6,3,3,3,0,0,0, 0,6,3,3,0,0,0,0, 0,6,3,3,0,0,0,0,
  155.             0,6,3,3,0,0,0,0, 3,6,3,3,3,0,0,0},
  156.     {'J',8, 0,0,0,0,0,3,3,0, 0,0,0,0,0,3,3,0, 0,0,0,0,0,3,3,0,
  157.             3,6,0,0,0,3,3,0, 0,6,3,3,3,3,2,0},
  158.     {'K',8, 3,3,0,0,0,3,3,0, 3,3,0,3,3,0,0,0, 3,3,6,3,0,0,0,0,
  159.             3,3,0,3,3,0,0,0, 3,3,0,0,0,3,3,0},
  160.     {'L',8, 3,3,0,0,0,0,0,0, 3,3,0,0,0,0,0,0, 3,3,0,0,0,0,0,0,
  161.             3,3,0,0,0,0,0,0, 3,3,6,3,3,3,3,0},
  162.     {'M',8, 3,3,6,3,3,3,3,0, 3,3,0,3,0,3,3,0, 3,3,0,3,0,3,3,0,
  163.             3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0},
  164.     {'N',7, 3,3,6,3,3,3,0,0, 3,3,0,0,3,3,0,0, 3,3,0,0,3,3,0,0,
  165.             3,3,0,0,3,3,0,0, 3,3,0,0,3,3,0,0},
  166.     {'O',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0,
  167.             3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0},
  168.     {'P',8, 3,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,6,3,3,3,0,0,
  169.             3,3,0,0,0,0,0,0, 3,3,0,0,0,0,0,0},
  170.     {'Q',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0,
  171.             3,3,0,0,3,3,0,0, 0,3,6,3,3,0,3,0},
  172.     {'R',8, 3,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 3,3,6,3,3,3,0,0,
  173.             3,3,0,3,0,0,0,0, 3,3,0,0,3,3,0,0},
  174.     {'S',8, 3,3,6,3,3,3,3,0, 3,3,0,0,0,0,0,0, 3,3,6,3,3,3,3,0,
  175.             0,0,0,0,0,3,3,0, 3,3,6,3,3,3,3,0},
  176.     {'T',8, 3,3,6,3,3,3,3,0, 0,0,6,3,3,0,0,0, 0,0,6,3,3,0,0,0,
  177.             0,0,6,3,3,0,0,0, 0,0,6,3,3,0,0,0},
  178.     {'U',8, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0,
  179.             3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0},
  180.     {'V',8, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0,
  181.             0,3,6,0,3,3,0,0, 0,0,6,3,3,0,0,0},
  182.     {'W',8, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0, 3,3,0,3,0,3,3,0,
  183.             3,3,0,3,0,3,3,0, 0,3,6,3,3,3,0,0},
  184.     {'X',8, 3,3,0,0,0,3,3,0, 0,3,6,0,3,3,0,0, 0,0,6,3,3,0,0,0,
  185.             0,3,6,0,3,3,0,0, 3,3,0,0,0,3,3,0},
  186.     {'Y',8, 3,3,0,0,0,3,3,0, 3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0,
  187.             0,0,0,3,3,0,0,0, 0,0,0,3,3,0,0,0},
  188.     {'Z',8, 3,6,3,3,3,3,3,0, 0,0,0,0,3,3,0,0, 0,0,0,3,3,0,0,0,
  189.             0,0,3,3,0,0,0,0, 3,6,3,3,3,3,3,0},
  190.     {'0',8, 0,6,3,3,3,3,0,0, 3,6,0,0,0,3,3,0, 3,6,0,3,0,3,3,0,
  191.             3,6,0,0,0,3,3,0, 0,6,3,3,3,3,0,0},
  192.     {'1',5, 3,3,3,0,0,0,0,0, 0,3,3,0,0,0,0,0, 0,3,3,0,0,0,0,0,
  193.             0,3,3,0,0,0,0,0, 3,3,3,3,0,0,0,0},
  194.     {'2',8, 3,3,6,3,3,3,0,0, 0,0,0,0,3,3,3,0, 3,3,6,3,3,3,0,0,
  195.             3,3,0,0,0,0,0,0, 3,3,6,3,3,3,3,0},
  196.     {'3',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 0,0,0,0,3,3,0,0,
  197.             3,3,6,0,0,3,3,0, 0,3,6,3,3,3,0,0},
  198.     {'4',8, 3,3,0,0,3,3,0,0, 3,3,0,0,3,3,0,0, 3,3,6,3,3,3,3,0,
  199.             0,0,0,0,3,3,0,0, 0,0,0,0,3,3,0,0},
  200.     {'5',8, 3,3,6,3,3,3,3,0, 3,3,0,0,0,0,0,0, 3,3,6,3,3,3,0,0,
  201.             0,0,0,0,0,3,3,0, 3,3,6,3,3,3,0,0},
  202.     {'6',8, 0,6,3,3,3,3,0,0, 3,6,0,0,0,0,0,0, 3,6,3,3,3,3,0,0,
  203.             3,6,0,0,0,3,3,0, 0,6,3,3,3,3,0,0},
  204.     {'7',8, 3,6,3,3,3,3,0,0, 0,0,0,0,0,3,3,0, 0,0,0,3,3,0,0,0,
  205.             0,0,3,3,0,0,0,0, 0,0,3,3,0,0,0,0},
  206.     {'8',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0,
  207.             3,3,0,0,0,3,3,0, 0,3,6,3,3,3,0,0},
  208.     {'9',8, 0,3,6,3,3,3,0,0, 3,3,0,0,0,3,3,0, 0,3,6,3,3,3,3,0,
  209.             0,0,0,0,0,3,3,0, 0,3,6,3,3,3,3,0},
  210.     {'_',7, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  211.             0,0,0,0,0,0,0,0, 0,3,6,3,3,3,0,0},
  212.     {'*',8, 0,3,0,6,0,3,0,0, 0,0,3,6,3,0,0,0, 3,3,3,6,3,3,3,0,
  213.             0,0,3,6,3,0,0,0, 0,3,0,6,0,3,0,0},
  214.     {'-',5, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 3,6,3,3,0,0,0,0,
  215.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  216.     {'|',4, 0,3,3,0,0,0,0,0, 0,3,3,0,0,0,0,0, 0,3,3,0,0,0,0,0,
  217.             0,3,3,0,0,0,0,0, 0,3,3,0,0,0,0,0},
  218.     {'.',5, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  219.             0,0,0,0,0,0,0,0, 0,3,6,3,0,0,0,0},
  220.     {'(',5, 0,0,6,3,0,0,0,0, 0,3,6,0,0,0,0,0, 3,3,0,0,0,0,0,0,
  221.             0,3,6,0,0,0,0,0, 0,0,6,3,0,0,0,0},
  222.     {')',5, 0,3,5,0,0,0,0,0, 0,0,5,3,0,0,0,0, 0,0,0,3,3,0,0,0,
  223.             0,0,5,3,0,0,0,0, 0,3,5,0,0,0,0,0},
  224.     {'[',5, 0,3,6,3,0,0,0,0, 0,3,6,0,0,0,0,0, 0,3,6,0,0,0,0,0,
  225.             0,3,6,0,0,0,0,0, 0,3,6,3,0,0,0,0},
  226.     {']',5, 0,3,5,3,0,0,0,0, 0,0,5,3,0,0,0,0, 0,0,5,3,0,0,0,0,
  227.             0,0,5,3,0,0,0,0, 0,3,5,3,0,0,0,0},
  228.     {'/',7, 0,0,0,0,3,3,0,0, 0,0,0,3,3,0,0,0, 0,0,6,3,0,0,0,0,
  229.             0,3,6,0,0,0,0,0, 3,3,0,0,0,0,0,0},
  230.    {'\\',7, 0,3,3,0,0,0,0,0, 0,0,3,6,0,0,0,0, 0,0,0,6,3,0,0,0,
  231.             0,0,0,0,3,3,0,0, 0,0,0,0,0,3,3,0},
  232.     {'`',4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  233.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  234.     {' ',5, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  235.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  236.      };
  237.  
  238.   static struct _b8x5 f3[] = {          /* 7x4 robo-computer font        */
  239.     {'A',8, 0,3,2,2,2,3,0,0, 1,3,1,1,1,3,1,0, 3,3,0,0,0,0,3,0,
  240.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  241.     {'B',8, 3,2,2,2,2,3,0,0, 3,1,1,1,1,1,3,0, 3,3,0,0,0,0,3,0,
  242.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  243.     {'C',8, 3,2,2,2,2,2,3,0, 3,1,0,0,0,0,0,0, 3,3,0,0,0,0,0,0,
  244.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  245.     {'D',8, 3,2,2,2,2,2,3,0, 3,1,0,0,0,0,3,0, 3,3,0,0,0,0,3,0,
  246.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  247.     {'E',8, 3,2,2,2,2,2,2,0, 3,1,1,1,1,1,1,0, 3,3,0,0,0,0,0,0,
  248.             3,3,1,1,1,1,1,0, 0,0,0,0,0,0,0,0},
  249.     {'F',8, 3,2,2,2,2,2,2,0, 3,1,1,1,1,1,1,0, 3,3,0,0,0,0,0,0,
  250.             3,3,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  251.     {'G',8, 3,2,2,2,2,2,3,0, 3,1,0,0,1,1,1,0, 3,3,0,0,0,0,3,0,
  252.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  253.     {'H',8, 3,0,0,0,0,0,3,0, 3,1,1,1,1,1,3,0, 3,3,0,0,0,0,3,0,
  254.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  255.     {'I',5, 0,3,0,0,0,0,0,0, 0,3,1,0,0,0,0,0, 0,3,3,0,0,0,0,0,
  256.             0,3,3,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  257.     {'J',8, 0,0,0,0,0,3,0,0, 0,0,0,0,0,3,1,0, 0,0,0,0,0,3,3,0,
  258.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  259.     {'K',8, 3,0,0,0,3,0,0,0, 3,1,1,3,1,1,1,0, 3,3,0,0,0,0,3,0,
  260.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  261.     {'L',8, 3,0,0,0,0,0,0,0, 3,1,0,0,0,0,0,0, 3,3,0,0,0,0,0,0,
  262.             3,3,1,1,1,1,1,0, 0,0,0,0,0,0,0,0},
  263.     {'M',8, 3,2,2,3,2,2,3,0, 3,1,0,3,0,0,3,0, 3,3,0,3,0,0,3,0,
  264.             3,3,0,3,0,0,3,0, 0,0,0,0,0,0,0,0},
  265.     {'N',8, 3,2,2,2,2,2,3,0, 3,1,0,0,0,0,3,0, 3,3,0,0,0,0,3,0,
  266.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  267.     {'O',8, 3,2,2,2,3,3,3,0, 3,0,0,0,0,2,3,0, 3,0,0,0,0,0,3,0,
  268.             3,1,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  269.     {'P',8, 3,2,2,2,2,2,3,0, 3,1,1,1,1,1,3,0, 3,3,0,0,0,0,0,0,
  270.             3,3,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  271.     {'Q',8, 3,2,2,2,2,2,3,0, 3,0,0,0,0,0,3,0, 3,0,0,0,0,0,3,0,
  272.             3,1,1,3,3,3,3,0, 0,0,0,0,0,0,0,0},
  273.     {'R',8, 3,2,2,2,2,3,0,0, 3,1,1,1,1,3,1,0, 3,3,0,0,0,0,3,0,
  274.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  275.     {'S',8, 3,2,2,2,2,2,3,0, 3,1,1,1,1,1,1,0, 0,0,0,0,0,3,3,0,
  276.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  277.     {'T',8, 2,2,2,3,2,2,2,0, 0,0,0,3,1,0,0,0, 0,0,0,3,3,0,0,0,
  278.             0,0,0,3,3,0,0,0, 0,0,0,0,0,0,0,0},
  279.     {'U',8, 3,0,0,0,0,0,3,0, 3,1,0,0,0,0,3,0, 3,3,0,0,0,0,3,0,
  280.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  281.     {'V',8, 3,3,0,0,0,0,3,0, 3,3,0,0,0,1,3,0, 0,3,0,0,0,3,0,0,
  282.             0,3,1,1,1,3,0,0, 0,0,0,0,0,0,0,0},
  283.     {'W',8, 3,0,0,3,0,0,3,0, 3,1,0,3,0,0,3,0, 3,3,0,3,0,0,3,0,
  284.             3,3,1,3,1,1,3,0, 0,0,0,0,0,0,0,0},
  285.     {'X',8, 3,0,0,0,0,0,3,0, 2,1,1,1,1,1,2,0, 3,3,0,0,0,0,3,0,
  286.             3,3,0,0,0,0,3,0, 0,0,0,0,0,0,0,0},
  287.     {'Y',8, 3,0,0,0,0,0,3,0, 3,1,1,1,1,1,3,0, 0,0,0,3,3,0,0,0,
  288.             0,0,0,3,3,0,0,0, 0,0,0,0,0,0,0,0},
  289.     {'Z',8, 2,2,2,2,2,2,3,0, 1,1,1,1,1,1,3,0, 3,3,0,0,0,0,0,0,
  290.             3,3,1,1,1,1,1,0, 0,0,0,0,0,0,0,0},
  291.     {'0',8, 3,2,2,2,2,2,3,0, 3,0,0,0,0,1,3,0, 3,0,0,0,0,3,3,0,
  292.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  293.     {'1',5, 0,0,3,0,0,0,0,0, 0,1,3,0,0,0,0,0, 0,3,3,0,0,0,0,0,
  294.             0,3,3,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  295.     {'2',8, 3,2,2,2,2,2,3,0, 0,0,0,0,0,0,3,0, 3,3,2,2,2,2,2,0,
  296.             3,3,1,1,1,1,3,0, 0,0,0,0,0,0,0,0},
  297.     {'3',8, 3,2,2,2,2,3,0,0, 0,1,1,1,1,3,1,0, 0,0,0,0,0,3,3,0,
  298.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  299.     {'4',8, 3,0,0,0,0,3,0,0, 3,0,0,0,0,3,0,0, 3,1,1,1,1,3,1,0,
  300.             0,0,0,0,3,3,0,0, 0,0,0,0,0,0,0,0},
  301.     {'5',8, 3,2,2,2,2,2,2,0, 3,1,1,1,1,1,1,0, 0,0,0,0,0,3,3,0,
  302.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  303.     {'6',8, 3,2,2,2,2,2,3,0, 3,1,1,1,1,1,1,0, 3,0,0,0,0,3,3,0,
  304.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  305.     {'7',8, 2,2,2,2,2,2,3,0, 0,0,0,0,0,1,3,0, 0,0,0,0,0,3,3,0,
  306.             0,0,0,0,0,3,3,0, 0,0,0,0,0,0,0,0},
  307.     {'8',8, 0,3,2,2,2,3,0,0, 1,3,1,1,1,3,1,0, 3,0,0,0,0,3,3,0,
  308.             3,1,1,1,1,3,3,0, 0,0,0,0,0,0,0,0},
  309.     {'9',8, 3,2,2,2,2,2,3,0, 3,0,0,0,0,0,3,0, 2,2,2,2,2,3,3,0,
  310.             0,0,0,0,0,3,3,0, 0,0,0,0,0,0,0,0},
  311.     {'-',5, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 3,3,3,3,0,0,0,0,
  312.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  313.     {'`',4, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  314.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  315.     {' ',5, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,
  316.             0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0},
  317.       };
  318.  
  319.   static struct _b8x5 f4[] = {          /* 7x4 reversed video FONT3      */
  320.     {'A',8, 3,2,2,2,2,2,3,3, 3,0,3,3,3,0,3,3, 0,0,1,1,1,1,0,3,
  321.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  322.     {'B',8, 2,2,2,2,2,2,3,3, 0,3,3,3,3,1,2,3, 0,0,1,1,1,1,0,3,
  323.             0,0,3,3,3,3,0,3, 1,1,1,1,1,1,1,3},
  324.     {'C',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,1,3, 0,0,3,3,3,3,3,3,
  325.             0,0,3,3,3,3,2,3, 1,1,1,1,1,1,1,3},
  326.     {'D',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,0,3,3,3,3,0,3,
  327.             0,0,3,3,3,3,0,3, 1,1,1,1,1,1,1,3},
  328.     {'E',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,3,3, 0,0,1,1,1,1,1,3,
  329.             0,0,3,3,3,3,3,3, 1,1,1,1,1,1,1,3},
  330.     {'F',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,3,3, 0,0,1,1,1,1,1,3,
  331.             0,0,3,3,3,3,3,3, 1,1,3,3,3,3,3,3},
  332.     {'G',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,1,3, 0,0,3,3,1,1,0,3,
  333.             0,0,3,3,3,3,0,3, 1,1,1,1,1,1,1,3},
  334.     {'H',8, 2,3,3,3,3,3,2,3, 0,3,3,3,3,3,0,3, 0,0,1,1,1,1,0,3,
  335.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  336.     {'I',5, 3,2,3,3,3,3,3,3, 3,0,3,3,3,3,3,3, 3,0,0,3,3,3,3,3,
  337.             3,0,0,3,3,3,3,3, 3,1,1,3,3,3,3,3},
  338.     {'J',8, 3,3,3,3,3,2,3,3, 3,3,3,3,3,0,3,3, 3,3,3,3,3,0,0,3,
  339.             2,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  340.     {'K',8, 2,3,3,3,2,3,3,3, 0,3,3,2,1,3,3,3, 0,0,1,1,1,1,0,3,
  341.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  342.     {'L',8, 2,3,3,3,3,3,3,3, 0,3,3,3,3,3,3,3, 0,0,3,3,3,3,3,3,
  343.             0,0,3,3,3,3,3,3, 1,1,1,1,1,1,1,3},
  344.     {'M',8, 2,2,2,2,2,2,2,3, 0,3,3,0,3,3,0,3, 0,0,3,0,3,3,0,3,
  345.             0,0,3,0,3,3,0,3, 1,1,3,1,3,3,1,3},
  346.     {'N',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,0,3,3,3,3,0,3,
  347.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  348.     {'O',8, 2,2,2,2,2,2,2,3, 0,3,3,3,1,0,0,3, 0,3,3,3,3,3,0,3,
  349.             0,3,3,3,3,3,0,3, 1,1,1,1,1,1,1,3},
  350.     {'P',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,0,1,1,1,1,1,3,
  351.             0,0,3,3,3,3,3,3, 1,1,3,3,3,3,3,3},
  352.     {'Q',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,3,3,3,3,3,0,3,
  353.             0,3,3,3,2,2,0,3, 1,1,1,1,1,1,1,3},
  354.     {'R',8, 2,2,2,2,2,2,3,3, 0,3,3,3,3,0,3,3, 0,0,1,1,1,1,0,3,
  355.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  356.     {'S',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,1,3, 1,1,1,1,1,0,0,3,
  357.             2,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  358.     {'T',8, 2,2,2,2,2,2,2,3, 3,3,3,0,3,3,3,3, 3,3,3,0,0,3,3,3,
  359.             3,3,3,0,0,3,3,3, 3,3,3,1,1,3,3,3},
  360.     {'U',8, 2,3,3,3,3,3,2,3, 0,3,3,3,3,3,0,3, 0,0,3,3,3,3,0,3,
  361.             0,0,3,3,3,3,0,3, 1,1,1,1,1,1,1,3},
  362.     {'V',8, 2,2,3,3,3,3,2,3, 0,0,3,3,3,3,0,3, 1,0,3,3,3,0,1,3,
  363.             3,0,3,3,3,0,3,3, 3,1,1,1,1,1,3,3},
  364.     {'W',8, 2,3,3,2,3,3,2,3, 0,3,3,0,3,3,0,3, 0,0,3,0,3,3,0,3,
  365.             0,0,3,0,3,3,0,3, 1,1,1,1,1,1,1,3},
  366.     {'X',8, 2,3,3,3,3,3,2,3, 0,3,3,3,3,3,0,3, 2,0,1,1,1,1,2,3,
  367.             0,0,3,3,3,3,0,3, 1,1,3,3,3,3,1,3},
  368.     {'Y',8, 2,3,3,3,3,3,2,3, 0,3,3,3,3,3,0,3, 1,1,1,0,0,1,1,3,
  369.             3,3,3,0,0,3,3,3, 3,3,3,1,1,3,3,3},
  370.     {'Z',8, 2,2,2,2,2,2,2,3, 3,3,3,3,3,3,0,3, 0,0,1,1,1,1,1,3,
  371.             0,0,3,3,3,3,3,3, 1,1,1,1,1,1,1,3},
  372.     {'0',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,3,3,3,3,0,0,3,
  373.             0,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  374.     {'1',5, 3,3,2,3,3,3,3,3, 3,3,0,3,3,3,3,3, 3,0,0,3,3,3,3,3,
  375.             3,0,0,3,3,3,3,3, 3,1,1,3,3,3,3,3},
  376.     {'2',8, 2,2,2,2,2,2,2,3, 1,3,3,3,3,3,0,3, 2,2,2,2,2,2,0,3,
  377.             0,0,3,3,3,3,2,3, 1,1,1,1,1,1,1,3},
  378.     {'3',8, 2,2,2,2,2,2,3,3, 1,3,3,3,3,0,3,3, 3,1,1,1,1,0,0,3,
  379.             2,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  380.     {'4',8, 2,3,3,3,3,2,3,3, 0,3,3,3,3,0,3,3, 0,3,3,3,3,0,3,3,
  381.             1,1,1,1,0,0,1,3, 3,3,3,3,1,1,3,3},
  382.     {'5',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,3,3, 1,1,1,1,1,0,0,3,
  383.             2,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  384.     {'6',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,1,3, 0,1,1,1,1,0,0,3,
  385.             0,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  386.     {'7',8, 2,2,2,2,2,2,2,3, 3,3,3,3,3,3,0,3, 3,3,3,3,3,0,0,3,
  387.             3,3,3,3,3,0,0,3, 3,3,3,3,3,1,1,3},
  388.     {'8',8, 3,2,2,2,2,2,3,3, 3,0,3,3,3,0,3,3, 0,1,1,1,1,0,0,3,
  389.             0,3,3,3,3,0,0,3, 1,1,1,1,1,1,1,3},
  390.     {'9',8, 2,2,2,2,2,2,2,3, 0,3,3,3,3,3,0,3, 0,2,2,2,2,2,0,3,
  391.             3,3,3,3,3,0,0,3, 3,3,3,3,3,1,1,3},
  392.     {'-',5, 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, 0,0,0,0,3,3,3,3,
  393.             3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3},
  394.     {'`',4, 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3,
  395.             3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3},
  396.     {' ',5, 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3,
  397.             3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3},
  398.       };
  399.  
  400.  
  401.   /* NOTE: the font-table automatically adjusts to the variable number   */
  402.   /*       of elements in the font definition array's!                   */
  403.  
  404.   static struct _font_tab {             /* font table structure          */
  405.          short int  k;                  /* (max) number of columns       */
  406.          short int  r;                  /* number of rows (lines)        */
  407.          short int  n;                  /* number of pattern entries     */
  408.          struct _b8x5 *d;               /* pointer to font definition    */
  409.            } ft[] = {                   /* FONT table                    */
  410.          {0,0,0,NULL},                  /* FONT0 dummy: suppress title   */
  411.          {6,3,sizeof(f1)/sizeof(struct _b8x5),f1}, /* FONT1              */
  412.          {8,5,sizeof(f2)/sizeof(struct _b8x5),f2}, /* FONT2              */
  413.          {8,4,sizeof(f3)/sizeof(struct _b8x5),f3}, /* FONT3              */
  414.          {8,5,sizeof(f4)/sizeof(struct _b8x5),f4}, /* FONT4              */
  415.            };
  416.  
  417.   static char a[80];                    /* returned line buffer          */
  418.   static char b_array[]  = " ▄▀█░▌▐▒▓"; /* block character elements      */
  419.                                         /* codepage 437, 860, 863, 865   */
  420.   static char pg_multi[] = " ▄▀█░║║▒▓"; /* Code Page 850: Multilingual   */
  421.  
  422.   if (c_info.codepage==850)             /* codepage 850                  */
  423.     strcpy(b_array,pg_multi);           /* suitable blockchars           */
  424.  
  425.   if (f<FONT1 || f>FONT4)               /* check range of selected font  */
  426.     f = FONT2;                          /* reset to default if out of rng*/
  427.  
  428.   if (k<LINE1 || k>ft[f].k-1)           /* check range of LINE           */
  429.     k = LINE1;                          /* prevent addressing violations */
  430.  
  431.   i = 0;                                /* zero count                    */
  432.   w = 1;                                /* width 1: leading char         */
  433.   while (i<n && b[i]!='\0' && w<=sizeof(a)) {   /* limit width of output */
  434.     for (j=0; j<ft[f].n &&
  435.               ft[f].d[j].c!=(char)toupper(b[i]); j++);   /* search char  */
  436.     if (j < ft[f].n) {                  /* found                         */
  437.       if (w + ft[f].d[j].k < sizeof(a)) {    /* would it fit?            */
  438.         w += ft[f].d[j].k;              /* add active columns + 1 blank  */
  439.         ++i;                            /* accept character              */
  440.         }                               /* endif                         */
  441.       else
  442.         n = i;                          /* indicate 'full'               */
  443.       }                                 /* endif                         */
  444.     else {                              /* not found                     */
  445.       if (w + ft[f].k < sizeof(a)) {    /* would dummy fit?              */
  446.         w += ft[f].k;                   /* add max columns + 1 blank     */
  447.         ++i;                            /* accept character              */
  448.         }                               /* endif                         */
  449.       else
  450.         n = i;                          /* indicate 'full'               */
  451.       }                                 /* endif                         */
  452.     }                                   /* endif                         */
  453.   n = i;                                /* maximum # title characters    */
  454.  
  455.   a[0] = b_array[(f==FONT4) ? 3 : 0];   /* leading character             */
  456.   for (i=0,w=1; i<n; ++i) {             /* process string up till n      */
  457.     for (j=0; j<ft[f].n &&
  458.               ft[f].d[j].c!=(char)toupper(b[i]); j++);  /* search        */
  459.     if (j < ft[f].n) {                  /* char found                    */
  460.       a[w++] = b_array[ft[f].d[j].p[k].c0];
  461.       if (ft[f].d[j].k > 1)
  462.         a[w++] = b_array[ft[f].d[j].p[k].c1];
  463.       if (ft[f].d[j].k > 2)
  464.         a[w++] = b_array[ft[f].d[j].p[k].c2];
  465.       if (ft[f].d[j].k > 3)
  466.         a[w++] = b_array[ft[f].d[j].p[k].c3];
  467.       if (ft[f].d[j].k > 4)
  468.         a[w++] = b_array[ft[f].d[j].p[k].c4];
  469.       if (ft[f].d[j].k > 5)
  470.         a[w++] = b_array[ft[f].d[j].p[k].c5];
  471.       if (ft[f].d[j].k > 6)
  472.         a[w++] = b_array[ft[f].d[j].p[k].c6];
  473.       if (ft[f].d[j].k > 7)
  474.         a[w++] = b_array[ft[f].d[j].p[k].c7];
  475.       }
  476.     else {                              /* char not found                */
  477.       --j;                              /* take last character in table  */
  478.       for (x=0; x<ft[f].k; x++)         /* max columns                   */
  479.         a[w++] = b_array[ft[f].d[j].p[0].c0];    /* filler block         */
  480.       }                                 /* endfor                        */
  481.     }                                   /* endfor                        */
  482.   a[(f==FONT4) ? w : w-1] = '\0';       /* end of string                 */
  483.   return(a);                            /* return ptr to outputstring    */
  484.   }
  485.