APL Font for Wyse 60 Terminals (Part 1 of 1) 
Author Message
 APL Font for Wyse 60 Terminals (Part 1 of 1)

Apologies to anyone who doesn't believe that I should have posted this
program in this group.

"At the time, it seemed the logical thing to do."

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#               "End of shell archive."
# Contents:  Font.desc MANIFEST Makefile README cvtfont.c waplfont.c

PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'Font.desc' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'Font.desc'\"
else
echo shar: Extracting \"'Font.desc'\" \(5138 characters\)
sed "s/^X//" >'Font.desc' <<'END_OF_FILE'
X                       APL Font Description
X
X   The following list gives a description of each character and their
Xcorresponding position in the array table.  There wasn't much room to
Xput comments in the program so I am including this file which defines
Xall of the characters that are created in the font banks.  This char-
Xacter set maps vaguely to the PC Equivalent Font of the Wyse 60 Term-
Xinals with APL characters substituting some of the more seldomly used
Xcharacters.
X---------------------------------------------------------------------
X
XTable
XEntry           Description
X-----           -----------
X 32             Space
X 33             Quote Dot (Shriek Binomial Factorial)
X 34             Ascii Double Quote
X 35             Hash
X 36             Dollar
X 37             Percent
X 38             Ascii Ampersand &
X 39             APL-Quote
X 39             Ascii Quote Single '
X 40             Left-Parenthesis
X 41             Right-Parenthesis
X 42             Star (Exponential Power)
X 43             Plus (Conjugate Add)
X 44             Comma (Ravel Catenate)
X 45             Bar (Negate Minus Subtract)
X 46             Dot
X 47             Slash (Replicate  Reduce)
X 48             0 Zero
X 49             1 One
X 50             2 Two
X 51             3 Three
X 52             4 Four
X 53             5 Five
X 54             6 Six
X 55             7 Seven
X 56             8 Eight
X 57             9 Nine
X 58             Colon
X 59             Semicolon
X 60             Left-Caret (Less than)
X 61             Equal
X 62             Right-Caret (Greater than)
X 63             Query (Roll Deal)

X 65             Upper case A
X 66             Upper case B
X 67             Upper case C
X 68             Upper case D
X 69             Upper case E
X 70             Upper case F
X 71             Upper case G
X 72             Upper case H
X 73             Upper case I
X 74             Upper case J
X 75             Upper case K
X 76             Upper case L
X 77             Upper case M
X 78             Upper case N
X 79             Upper case O
X 80             Upper case P
X 81             Upper case Q
X 82             Upper case R
X 83             Upper case S
X 84             Upper case T
X 85             Upper case U
X 86             Upper case V
X 87             Upper case W
X 88             Upper case X
X 89             Upper case Y
X 90             Upper case Z
X 91             Left-Bracket
X 92             Back-Slash (Expand  Scan)
X 93             Right-Bracket
X 94             Up-Caret (And)
X 94             Ascii Caret
X 95             Underbar
X 96             Ascii Back Quote
X 97             Lower case a
X 98             Lower case b
X 99             Lower case c
X100             Lower case d
X101             Lower case e
X102             Lower case f
X103             Lower case g
X104             Lower case h
X105             Lower case i
X106             Lower case j
X107             Lower case k
X108             Lower case l
X109             Lower case m
X110             Lower case n
X111             Lower case o
X112             Lower case p
X113             Lower case q
X114             Lower case r
X115             Lower case s
X116             Lower case t
X117             Lower case u
X118             Lower case v
X119             Lower case w
X120             Lower case x
X121             Lower case y
X122             Lower case z
X123             Left-Brace
X124             Stile (Absolute Residue Modulus)
X124             Ascii Pipe
X125             Right-Brace
X126             Tilde (Not Exclude Without)
X127             Delta
X128             Delta underbar
X129             Upper case A underscore
X130             Upper case B underscore
X131             Upper case C underscore
X132             Upper case D underscore
X133             Upper case E underscore
X134             Upper case F underscore
X135             Upper case G underscore
X136             Upper case H underscore
X137             Upper case I underscore
X138             Upper case J underscore
X139             Upper case K underscore
X140             Upper case L underscore
X141             Upper case M underscore
X142             Upper case N underscore
X143             Upper case O underscore
X144             Upper case P underscore
X145             Upper case Q underscore
X146             Upper case R underscore
X147             Upper case S underscore
X148             Upper case T underscore
X149             Upper case U underscore
X150             Upper case V underscore
X151             Upper case W underscore
X152             Upper case X underscore
X153             Upper case Y underscore
X154             Upper case Z underscore
X155             Left Shoe Stile (Cent)
X156             L bar (Pound Sterling)
X157             Quad
X158             Quote Quad
X159             Quad Divide (Domino  Matrix Inverse)
X160             Up-Arrow (Mix Take)
X161             Down-Arrow (Split Drop)
X162             Left-Arrow
X163             Right-Arrow
X164             Down-Tack (decode base)
X165             Up-Tack (encode represent)
X166             Left-Tack
X167             Right-Tack
X168             Down-Tack Jot (Execute)
X169             Up-Tack Jot (Format)
X170             Slash Bar
X171             Back-Slash bar
X172             Delta Stile (Up Grade)
X173             Del Stile (Down Grade)
X174             Down-Caret Tilde (Nor)
X175             Up-Caret Tilde (Nand)
X176             Left-Shoe (Enclose)
X177             Right-Shoe (Disclose)
X178             Down-Shoe (Union)
X179             Vertical Bar
X180             Right T
X186             Left-Bracket Right-Bracket (Squish)
X191             Upper Right Corner
X192             Lower Left Corner
X193             Bottom T
X194             Top T
X195             Left T
X196             Horiz Bar
X197             Stile Bar
X197             Crossing Lines
X217             Lower Right Corner
X218             Upper Left Corner
X224             Alpha
X225             Omega
X226             Iota (Index)
X227             Rho (Shape Reshape)
X228             Multiply (Signum)
X229             Overbar (High Minus)
X230             Up-Tack Down-Tack (I-beam)
X231             Del Tilde
X232             Circle Stile (Rotate)
X233             Circle Bar (Rotate 1st)
X234             Circle Star (Power)
X235             Up-Shoe Jot (Lamp  Comment)
X236             Down-Caret (Or)
X237             Circle Backslash (Transpose)
X238             Epsilon (Type Membership)
X239             Up-Shoe (Intersection)
X240             Equal Underbar (Match)
X241             Not-Equal Underbar (Natch)
X242             Greater-than-or-Equal
X243             Less-than-or-Equal
X244             Ceiling (Max)
X245             Floor (Min)
X246             Divide (Reciprocal)
X247             Not-Equal
X248             Jot (Compose)
X249             Circle (Trig)
X250             Zero Tilde (Zilde)
X251             Diamond
X252             Comma Bar
X253             Diaeresis (each)
X254             Diaeresis Tilde (Commute)
X255             Del (Function Edit)
END_OF_FILE
if test 5138 -ne `wc -c <'Font.desc'`; then
    echo shar: \"'Font.desc'\" unpacked with wrong size!
fi
# end of 'Font.desc'
fi
if test -f 'MANIFEST' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'MANIFEST'\"
else
echo shar: Extracting \"'MANIFEST'\" \(497 characters\)
sed "s/^X//" >'MANIFEST' <<'END_OF_FILE'
X   File Name           Archive #       Description
X-----------------------------------------------------------
X MANIFEST                   1  This shipping list
X Makefile                   1  Control file for Unix make program
X README                     1  Acknowledgements, installation notes
X Font.desc                  1   A description of the characrters
X cvtfont.c                  1   Converts an ASCII display of fonts to decimal
X waplfont.c                 1   Downloads an APL font into the Wyse terminal
END_OF_FILE
if test 497 -ne `wc -c <'MANIFEST'`; then
    echo shar: \"'MANIFEST'\" unpacked with wrong size!
fi
# end of 'MANIFEST'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(309 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#
X#   Makefile for Wyse APL Character Set Download
X#
X#   $Header: Makefile,v 1.0, 89/08/11 11:05:30   Victor Poon
X#
X
XCFLAGS = -O
XREMOVE = rm -f
X
Xall: waplfont cvtfont
X
Xcvtfont: cvtfont.c
X       cc $(CFLAGS) -o cvtfont cvtfont.c
X
Xwaplfont: waplfont.c
X       cc $(CFLAGS) -o waplfont waplfont.c
X
Xclean:
X       $(REMOVE) *.o core
END_OF_FILE
if test 309 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'README' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(3979 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
XIntroduction
X------------
X       Since APL is closely integrated into our environment, we were
Xlooking at APL terminals which we could attach to our serial ports.
XMost of the terminals which we looked at were quite expensive and it
Xwas then that I came across the idea of loading an APL font into a
XWyse 60 which we have lying around.
X
X       This set of sources is being released into the public domain.
XYou can freely distribute it in any way you want.  If you enhance this
Xpackage, I would appreciate it if you can send me the diffs so that I
Xcan add it on to my own stuff.  The code is fairly simple so there
Xshould not be any problems compiling on different flavors of UNIX.
X
X
XWyse 60
X-------
X       The Wyse 60 has four font banks of which you can select a
Xprimary and secondary bank.  Each bank hold 128 characters and this
Xgives you access to a total of 256 characters which is enough to
Xhold (quad) AV.  Each of the characters is an 8x16 bit-map and can be
Xdescribed as a 40 byte escape sequence.  Even at 2400 baud, it takes
Xless than 30 seconds to download the whole font.
X
X       The escape sequence to define a character looks like the
Xfollowing:
X
X       ESC c A kk pp bb bb ... bb ^Y           ( 40 byte sequence )
X
X       where kk is the font bank ("00" - "03"),
X             pp is the character position ("00" - "FF")
X             bb is the character bit map for one pixel line (in hex)
X
XAll of the above values are sent to the terminal as a two-byte ASCII.
X
X       The largest problem with the Wyse or any ASCII terminal is that
Xit doesn't support overstriked characters; a unique function of APL
Xthat makes ASCII terminals almost useless for the language.  There isn't
Xany way around this problem unless you happen to have a very intelligent
Xterminal (like a PC/XT).  However, we use a version of APL for Dyalog
Xwhich allows you to re-map the character set to any set of escape
Xsequences.
X
XHardware Problems:
X
X       o   The Wyse 60 does not seem to be fast enough to keep up
X           with downloading a font at 9600 baud (w/ XON/XOFF control).
X           I've included an option flag to add a delay loop which adds
X           a small delay before sending the next escape sequence.
X
X       o   For some reason, (I haven't talk to Wyse about it yet) the
X           screen flickers and switches fonts even when you are NOT
X           downloading to the primary and secondary banks.  The screen
X           returns to normal afterwards but it is quite distrubing to
X           watch.
X
X
XDyalog APL
X----------
X       Dyalog APL uses an input and output translation table to map
Xthe APL character set.  This is a very convienent feature which allows
XDyalog is work with any terminal as long as you define two things:
X
X       How to display each character in (Quad) AV.
X       What keystroke sequence to input them from the keyboard.
X
XIf anyone would like a copy of the input and output translation tables
Xthat I am using, please drom me some email.
X
X
XSTSC APL
X--------
X       We have an MSDOS version of STSC APL and I don't believe that
Xthis will work with it.  You can get all of the other characters but
Xit will not able to generate the overstriked characters.  We do not own
Xa copy of STSC for UNIX so I'm not in any position to say.  Also, some of
Xthe characters have to be moved around which right now, is not an easy job.
X
X
Xcvtapl and waplfont
X-------------------
X       waplfont is the program which generates the escape sequences for
Xthe Wyse terminals.  There are two flags:
X
X       -p   This generates an printable display of all of the characters.
X       -s   Slow: Adds a delay loop after sending out each character.
X
X       cvtapl changes the printable display to decimal numbers which may
Xbe substituted back into the program with a little work in vi.
X
X
XMe, Myself, and I
X-----------------
X"I freely stole ideas from a number of people who have been good enough to
Xput their stuff out on Usenet."
X
XI stole the above comment from Rich $alz.  Thanks Rich.
X
X       Victor Poon
X       Kepler Financial Management
X       100 North Country Rd.
X       Setauket, NY  11733
X

X       {acsm, lilink, polyof, sbcs}!kepler1!vipoon
END_OF_FILE
if test 3979 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'cvtfont.c' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'cvtfont.c'\"
else
echo shar: Extracting \"'cvtfont.c'\" \(2639 characters\)
sed "s/^X//" >'cvtfont.c' <<'END_OF_FILE'
X#ifndef lint

X#endif
X
X/*     Convert Font Display to Decimal Numbers
X**     Author: Victor Poon
X*/
X#include <stdio.h>
X
X
X/*     ASCII to Bit-mapped Character
X**
X**     This takes a row of bits for one character and converts
X** it to a decimal number which represents its bit-mapped value.
X*/
Xatoc(bmap)
Xchar   *bmap;
X{
X       int     i,                      /* Loop Counter */
X               bvalue = 128,           /* MSB Value */
X               total = 0;              /* Running Total */
X
X       for (i=0; i<8; i++) {
X               if (*(bmap+i) == '#')
X                       total += bvalue;
X               bvalue /= 2;
X       }
X
X       return (unsigned char) total;
X}
X
X/*     Parse A Line
X**
X**     This routine takes each line of eight characters and
X** passes them to the atoc subroutine.  It stores the values
X** in an array to be printed when the entire character is
X** resolved.
X**
X** Note: There is no error checking done here.  It is assumed
X**       that once a character is detected, the next six{*filter*}
X**       lines are error free.
X*/
Xparseline(buf, filep)
Xchar   *buf;
XFILE   *filep;
X{
X       int     i, j,                   /* Loop Counters */
X               bitmap[8][16];          /* Decimal Table for 8 chars */
X       char    bits[8][16],            /* One Row of Bits for 8 chars */
X               line[128];              /* Line Buffer */
Xstatic int     nchars = 0;             /* Character Counter */
X
X                               /* 16 rows per character */
X       for (i=0; i<16; i++) {
X               fgets(line, sizeof(line), filep);
X               sscanf(line, "%s %s %s %s %s %s %s %s",
X                       bits[0], bits[1], bits[2], bits[3],
X                       bits[4], bits[5], bits[6], bits[7]);
X
X                               /* 8 characters per row */
X               for (j=0; j<8; j++)
X                       bitmap[j][i] = atoc(bits[j]);
X       }
X
X                               /* Print what we have */
X       for (i=0; i<8; i++) {
X               printf("%3d: ", nchars++);
X               for (j=0; j<16; j++)
X                       printf("%3d ", bitmap[i][j]);
X               printf("\n");
X       }
X}
X
X/*     Main Program
X**
X**     This program reads a line at a time and determines if it is
X** the start of a character map.  The start is detected if the first
X** character in the line is a '.' (period) or a '#' (pound sign).
X**
X** Note: There is really no error checking done in this program and
X**       hopefully, one day I'll have more time to do this correctly.
X*/
Xmain(argc, argv)
Xint    argc;
Xchar   **argv;
X{
X       char    buffer[80];             /* Temp Buffer */
X       FILE    *fp;                    /* Pointer to input file */
X
X       switch(argc) {
X       case 1:                         /* Take directly for stdin */
X               fp = stdin;
X               break;
X
X       case 2:                         /* Open font file */
X               if ((fp = fopen(argv[1], "r")) == NULL) {
X                       printf("Error: Cannot open %s for read\n", argv[1]);
X                       exit(-1);
X               }
X               break;
X
X       default:                        /* Print usage */
X               printf("Usage: cvtfont [fontfile]\n");
X               exit(-1);
X       }
X                                       /* Read each line */
X       while (fgets(buffer, sizeof(buffer), fp) != NULL)
X               if (*buffer == '.' || *buffer == '#')
X                       parseline(buffer, fp);
X
X       fclose(fp);
X}
END_OF_FILE
if test 2639 -ne `wc -c <'cvtfont.c'`; then
    echo shar: \"'cvtfont.c'\" unpacked with wrong size!
fi
# end of 'cvtfont.c'
fi
if test -f 'waplfont.c' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'waplfont.c'\"
else
echo shar: Extracting \"'waplfont.c'\" \(20646 characters\)
sed "s/^X//" >'waplfont.c' <<'END_OF_FILE'
X#ifndef lint

X#endif
X
X/*     Download an APL Character Set into the Wyse Terminals
X**     Author:  Victor Poon
X*/
X
X#include <stdio.h>
X
X#define        BANK    0                       /* Start font load in bank # */
X#define        DELAY   75000                   /* Delay between sending chars */
X
X                                       /* APL Character Set */
Xunsigned int   aplfont[256][16] = {
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 00 */
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 16 */
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 32 */
X{   0,  0, 24, 60, 60, 60, 24, 24, 24,  0, 24, 24,  0,  0,  0,  0 },
X{   0,102,102,102, 36,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,108,108,254,108,108,108,254,108,108,  0,  0,  0,  0 },
X{  24, 24,124,198,194,192,124,  6,  6,134,198,124, 24, 24,  0,  0 },
X{   0,  0,  0,  0,194,198, 12, 24, 48, 96,198,134,  0,  0,  0,  0 },
X{   0,  0, 56,108,108, 56,118,220,204,204,204,118,  0,  0,  0,  0 },
X{   0, 24, 24, 24, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0, 12, 24, 48, 48, 48, 48, 48, 48, 24, 12,  0,  0,  0,  0 },
X{   0,  0, 48, 24, 12, 12, 12, 12, 12, 12, 24, 48,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,102, 60,255, 60,102,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 24, 24,126, 24, 24,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0, 24, 24, 24, 48,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,254,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24, 24,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  2,  6, 12, 24, 48, 96,192,128,  0,  0,  0,  0 },
X
X{   0,  0, 60,102,195,195,219,219,195,195,102, 60,  0,  0,  0,  0 }, /* 48 */
X{   0,  0, 24, 56,120, 24, 24, 24, 24, 24, 24,126,  0,  0,  0,  0 },
X{   0,  0,124,198,  6, 12, 24, 48, 96,192,198,254,  0,  0,  0,  0 },
X{   0,  0,124,198,  6,  6, 60,  6,  6,  6,198,124,  0,  0,  0,  0 },
X{   0,  0, 12, 28, 60,108,204,254, 12, 12, 12, 30,  0,  0,  0,  0 },
X{   0,  0,254,192,192,192,252,  6,  6,  6,198,124,  0,  0,  0,  0 },
X{   0,  0, 56, 96,192,192,252,198,198,198,198,124,  0,  0,  0,  0 },
X{   0,  0,254,198,  6,  6, 12, 24, 48, 48, 48, 48,  0,  0,  0,  0 },
X{   0,  0,124,198,198,198,124,198,198,198,198,124,  0,  0,  0,  0 },
X{   0,  0,124,198,198,198,126,  6,  6,  6, 12,120,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 24, 24,  0,  0,  0, 24, 24,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 24, 24,  0,  0,  0, 24, 24, 48,  0,  0,  0,  0 },
X{   0,  0,  0,  6, 12, 24, 48, 96, 48, 24, 12,  6,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,126,  0,  0,126,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0, 96, 48, 24, 12,  6, 12, 24, 48, 96,  0,  0,  0,  0 },
X{   0,  0,124,198,198, 12, 24, 24, 24,  0, 24, 24,  0,  0,  0,  0 },
X
X{   0,  0,  0,124,198,198,222,222,222,220,192,124,  0,  0,  0,  0 }, /* 64 */
X{   0,  0, 16, 56,108,198,198,254,198,198,198,198,  0,  0,  0,  0 },
X{   0,  0,252,102,102,102,124,102,102,102,102,252,  0,  0,  0,  0 },
X{   0,  0, 60,102,194,192,192,192,192,194,102, 60,  0,  0,  0,  0 },
X{   0,  0,248,108,102,102,102,102,102,102,108,248,  0,  0,  0,  0 },
X{   0,  0,254,102, 98,104,120,104, 96, 98,102,254,  0,  0,  0,  0 },
X{   0,  0,254,102, 98,104,120,104, 96, 96, 96,240,  0,  0,  0,  0 },
X{   0,  0, 60,102,194,192,192,222,198,198,102, 58,  0,  0,  0,  0 },
X{   0,  0,198,198,198,198,254,198,198,198,198,198,  0,  0,  0,  0 },
X{   0,  0, 60, 24, 24, 24, 24, 24, 24, 24, 24, 60,  0,  0,  0,  0 },
X{   0,  0, 30, 12, 12, 12, 12, 12,204,204,204,120,  0,  0,  0,  0 },
X{   0,  0,230,102,102,108,120,120,108,102,102,230,  0,  0,  0,  0 },
X{   0,  0,240, 96, 96, 96, 96, 96, 96, 98,102,254,  0,  0,  0,  0 },
X{   0,  0,195,231,255,255,219,195,195,195,195,195,  0,  0,  0,  0 },
X{   0,  0,198,230,246,254,222,206,198,198,198,198,  0,  0,  0,  0 },
X{   0,  0,124,198,198,198,198,198,198,198,198,124,  0,  0,  0,  0 },
X
X{   0,  0,252,102,102,102,124, 96, 96, 96, 96,240,  0,  0,  0,  0 }, /* 80 */
X{   0,  0,124,198,198,198,198,198,198,214,222,124, 12, 14,  0,  0 },
X{   0,  0,252,102,102,102,124,108,102,102,102,230,  0,  0,  0,  0 },
X{   0,  0,124,198,198, 96, 56, 12,  6,198,198,124,  0,  0,  0,  0 },
X{   0,  0,255,219,153, 24, 24, 24, 24, 24, 24, 60,  0,  0,  0,  0 },
X{   0,  0,198,198,198,198,198,198,198,198,198,124,  0,  0,  0,  0 },
X{   0,  0,195,195,195,195,195,195,195,102, 60, 24,  0,  0,  0,  0 },
X{   0,  0,195,195,195,195,195,219,219,255,102,102,  0,  0,  0,  0 },
X{   0,  0,195,195,102, 60, 24, 24, 60,102,195,195,  0,  0,  0,  0 },
X{   0,  0,195,195,195,102, 60, 24, 24, 24, 24, 60,  0,  0,  0,  0 },
X{   0,  0,255,195,134, 12, 24, 48, 96,193,195,255,  0,  0,  0,  0 },
X{   0,  0, 60, 48, 48, 48, 48, 48, 48, 48, 48, 60,  0,  0,  0,  0 },
X{   0,  0,  0,128,192,224,112, 56, 28, 14,  6,  2,  0,  0,  0,  0 },
X{   0,  0, 60, 12, 12, 12, 12, 12, 12, 12, 12, 60,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 16, 56,108,198,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,255,  0,  0 },
X
X{  48, 48, 24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 96 */
X{   0,  0,  0,  0,  0,120, 12,124,204,204,204,118,  0,  0,  0,  0 },
X{   0,  0,224, 96, 96,120,108,102,102,102,102,124,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,124,198,192,192,192,198,124,  0,  0,  0,  0 },
X{   0,  0, 28, 12, 12, 60,108,204,204,204,204,118,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,124,198,254,192,192,198,124,  0,  0,  0,  0 },
X{   0,  0, 56,108,100, 96,240, 96, 96, 96, 96,240,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,118,204,204,204,204,204,124, 12,204,120,  0 },
X{   0,  0,224, 96, 96,108,118,102,102,102,102,230,  0,  0,  0,  0 },
X{   0,  0, 24, 24,  0, 56, 24, 24, 24, 24, 24, 60,  0,  0,  0,  0 },
X{   0,  0,  6,  6,  0, 14,  6,  6,  6,  6,  6,  6,102,102, 60,  0 },
X{   0,  0,224, 96, 96,102,108,120,120,108,102,230,  0,  0,  0,  0 },
X{   0,  0, 56, 24, 24, 24, 24, 24, 24, 24, 24, 60,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,230,255,219,219,219,219,219,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,220,102,102,102,102,102,102,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,124,198,198,198,198,198,124,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,  0,220,102,102,102,102,102,124, 96, 96,240,  0 }, /* 112 */
X{   0,  0,  0,  0,  0,118,204,204,204,204,204,124, 12, 12, 30,  0 },
X{   0,  0,  0,  0,  0,220,118,102, 96, 96, 96,240,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,124,198, 96, 56, 12,198,124,  0,  0,  0,  0 },
X{   0,  0, 16, 48, 48,252, 48, 48, 48, 48, 54, 28,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,204,204,204,204,204,204,118,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,195,195,195,195,102, 60, 24,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,195,195,195,219,219,255,102,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,195,102, 60, 24, 60,102,195,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,198,198,198,198,198,198,126,  6, 12,248,  0 },
X{   0,  0,  0,  0,  0,254,204, 24, 48, 96,198,254,  0,  0,  0,  0 },
X{   0,  0, 14, 24, 24, 24,112, 24, 24, 24, 24, 14,  0,  0,  0,  0 },
X{   0,  0, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0 },
X{   0,  0,112, 24, 24, 24, 14, 24, 24, 24, 24,112,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0, 96,146, 12,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 16, 40, 68,130,254,  0,  0,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0, 16, 40, 68,130,254,  0,  0,  0,  0,255,  0,  0 }, /* 128 */
X{   0,  0, 16, 56,108,198,198,254,198,198,198,198,  0,255,  0,  0 },
X{   0,  0,252,102,102,102,124,102,102,102,102,252,  0,255,  0,  0 },
X{   0,  0, 60,102,194,192,192,192,192,194,102, 60,  0,255,  0,  0 },
X{   0,  0,248,108,102,102,102,102,102,102,108,248,  0,255,  0,  0 },
X{   0,  0,254,102, 98,104,120,104, 96, 98,102,254,  0,255,  0,  0 },
X{   0,  0,254,102, 98,104,120,104, 96, 96, 96,240,  0,255,  0,  0 },
X{   0,  0, 60,102,194,192,192,222,198,198,102, 58,  0,255,  0,  0 },
X{   0,  0,198,198,198,198,254,198,198,198,198,198,  0,255,  0,  0 },
X{   0,  0, 60, 24, 24, 24, 24, 24, 24, 24, 24, 60,  0,255,  0,  0 },
X{   0,  0, 30, 12, 12, 12, 12, 12,204,204,204,120,  0,255,  0,  0 },
X{   0,  0,230,102,102,108,120,120,108,102,102,230,  0,255,  0,  0 },
X{   0,  0,240, 96, 96, 96, 96, 96, 96, 98,102,254,  0,255,  0,  0 },
X{   0,  0,195,231,255,255,219,195,195,195,195,195,  0,255,  0,  0 },
X{   0,  0,198,230,246,254,222,206,198,198,198,198,  0,255,  0,  0 },
X{   0,  0,124,198,198,198,198,198,198,198,198,124,  0,255,  0,  0 },
X
X{   0,  0,252,102,102,102,124, 96, 96, 96, 96,240,  0,255,  0,  0 }, /* 144 */
X{   0,  0,124,198,198,198,198,198,198,214,222,124, 12,255,  0,  0 },
X{   0,  0,252,102,102,102,124,108,102,102,102,230,  0,255,  0,  0 },
X{   0,  0,124,198,198, 96, 56, 12,  6,198,198,124,  0,255,  0,  0 },
X{   0,  0,255,219,153, 24, 24, 24, 24, 24, 24, 60,  0,255,  0,  0 },
X{   0,  0,198,198,198,198,198,198,198,198,198,124,  0,255,  0,  0 },
X{   0,  0,195,195,195,195,195,195,195,102, 60, 24,  0,255,  0,  0 },
X{   0,  0,195,195,195,195,195,219,219,255,102,102,  0,255,  0,  0 },
X{   0,  0,195,195,102, 60, 24, 24, 60,102,195,195,  0,255,  0,  0 },
X{   0,  0,195,195,195,102, 60, 24, 24, 24, 24, 60,  0,255,  0,  0 },
X{   0,  0,255,195,134, 12, 24, 48, 96,193,195,255,  0,255,  0,  0 },
X{   0, 24, 24,126,195,192,192,192,195,126, 24, 24,  0,  0,  0,  0 },
X{   0, 56,108,100, 96,240, 96, 96, 96, 96,230,252,  0,  0,  0,  0 },
X{   0,  0,254,130,130,130,130,130,130,130,130,254,  0,  0,  0,  0 },
X{   0,  0,254,146,146,146,130,130,130,130,130,254,  0,  0,  0,  0 },
X{   0,  0,254,130,146,130,254,254,130,146,130,254,  0,  0,  0,  0 },
X
X{   0,  0, 24, 60,126, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0 }, /* 160 */
X{   0,  0, 24, 24, 24, 24, 24, 24, 24,126, 60, 24,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 48, 96,254, 96, 48,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 24, 12,254, 12, 24,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0, 16, 16, 16, 16,124,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,124, 16, 16, 16, 16,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 64, 64,124, 64, 64,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  4,  4,124,  4,  4,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0, 16, 16, 56, 84, 84, 56, 16,254,  0,  0,  0,  0,  0 },
X{   0,  0,  0,254, 16, 56, 84, 84, 56, 16, 16,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  2,  4,  8,254, 32, 64,128,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,128, 64, 32,254,  8,  4,  2,  0,  0,  0,  0,  0 },
X{   0,  0, 16, 16, 16, 56, 84,146,254, 16, 16,  0,  0,  0,  0,  0 },
X{   0,  0, 16, 16,254,146, 84, 56, 16, 16, 16,  0,  0,  0,  0,  0 },
X{   0,  0,130, 68, 40, 16,  0,  0, 96,146, 12,  0,  0,  0,  0,  0 },
X{   0,  0, 16, 40, 68,130,  0,  0, 96,146, 12,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,124,128,128,128,124,  0,  0,  0,  0,  0,  0,  0 }, /* 176 */
X{   0,  0,  0,  0,124,  2,  2,  2,124,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0, 68, 68, 68, 68, 68, 56,  0,  0,  0,  0,  0,  0,  0 },
X{  24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  24, 24, 24, 24, 24, 24, 24,248, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  24, 24, 24, 24, 24,248, 24,248, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  54, 54, 54, 54, 54, 54, 54,246, 54, 54, 54, 54, 54, 54, 54, 54 },
X{   0,  0,  0,  0,  0,  0,  0,254, 54, 54, 54, 54, 54, 54, 54, 54 },
X{   0,  0,  0,  0,  0,248, 24,248, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  54, 54, 54, 54, 54,246,  6,246, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 },
X{   0,  0,  0,  0,  0,254,  6,246, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54,246,  6,254,  0,  0,  0,  0,  0,  0,  0,  0 },
X{  54, 54, 54, 54, 54, 54, 54,254,  0,  0,  0,  0,  0,  0,  0,  0 },
X{  24, 24, 24, 24, 24,248, 24,248,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,248, 24, 24, 24, 24, 24, 24, 24, 24 },
X
X{  24, 24, 24, 24, 24, 24, 24, 31,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 192 */
X{  24, 24, 24, 24, 24, 24, 24,255,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0,255, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  24, 24, 24, 24, 24, 24, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24 },
X{   0,  0,  0,  0,  0,  0,  0,255,  0,  0,  0,  0,  0,  0,  0,  0 },
X{  24, 24, 24, 24, 24, 24, 24,255, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  24, 24, 24, 24, 24, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  54, 54, 54, 54, 54, 54, 54, 55, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54, 55, 48, 63,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 63, 48, 55, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54,247,  0,255,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,255,  0,247, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54, 55, 48, 55, 54, 54, 54, 54, 54, 54, 54, 54 },
X{   0,  0,  0,  0,  0,255,  0,255,  0,  0,  0,  0,  0,  0,  0,  0 },
X{  54, 54, 54, 54, 54,247,  0,247, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  24, 24, 24, 24, 24,255,  0,255,  0,  0,  0,  0,  0,  0,  0,  0 },
X
X{  54, 54, 54, 54, 54, 54, 54,255,  0,  0,  0,  0,  0,  0,  0,  0 }, /* 208 */
X{   0,  0,  0,  0,  0,255,  0,255, 24, 24, 24, 24, 24, 24, 24, 24 },
X{   0,  0,  0,  0,  0,  0,  0,255, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54, 54, 54, 63,  0,  0,  0,  0,  0,  0,  0,  0 },
X{  24, 24, 24, 24, 24, 31, 24, 31,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 31, 24, 31, 24, 24, 24, 24, 24, 24, 24, 24 },
X{   0,  0,  0,  0,  0,  0,  0, 63, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  54, 54, 54, 54, 54, 54, 54,255, 54, 54, 54, 54, 54, 54, 54, 54 },
X{  24, 24, 24, 24, 24,255, 24,255, 24, 24, 24, 24, 24, 24, 24, 24 },
X{  24, 24, 24, 24, 24, 24, 24,248,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,  0, 31, 24, 24, 24, 24, 24, 24, 24, 24 },
X{ 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 },
X{   0,  0,  0,  0,  0,  0,  0,255,255,255,255,255,255,255,255,255 },
X{ 240,240,240,240,240,240,240,240,240,240,240,240,240,240,240,240 },
X{  15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 },
X{ 255,255,255,255,255,255,255,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,  0,118,220,216,216,216,220,118,  0,  0,  0,  0 }, /* 224 */
X{   0,  0,  0,  0,  0,102,195,195,219,219,255,102,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 48,  8,  8,  8,  8,  8,  6,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 56, 68, 68,120, 64, 64, 64,128,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 68, 40, 16, 40, 68,  0,  0,  0,  0,  0,  0,  0 },
X{   0,254,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,124, 16, 16, 16,124,  0,  0,  0,  0,  0 },
X{   0, 96,146, 12,  0,254,130, 68, 40, 16,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0, 16, 56, 84,146,146,146, 84, 56, 16,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 56, 68,130,254,130, 68, 56,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,146,124, 84,238, 84,124,146,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 56, 68,198,186,130,130,130,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,130, 68, 40, 16,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,184, 68,162,146,138, 68, 58,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 60, 64,120, 64, 60,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0, 56, 68, 68, 68, 68, 68,  0,  0,  0,  0,  0,  0,  0 },
X
X{   0,  0,  0,  0,254,  0,  0,254,  0,  0,254,  0,  0,  0,  0,  0 }, /* 240 */
X{   0,  0,  0,  2,254,  4,  8,254, 32, 64,254,128,  0,  0,  0,  0 },
X{   0,  0,  0, 48, 24, 12,  6, 12, 24, 48,  0,126,  0,  0,  0,  0 },
X{   0,  0,  0, 12, 24, 48, 96, 48, 24, 12,  0,126,  0,  0,  0,  0 },
X{   0,  0, 30, 30, 24, 24, 24, 24, 24, 24, 24, 24,  0,  0,  0,  0 },
X{   0,  0, 24, 24, 24, 24, 24, 24, 24, 24, 30, 30,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 24, 24,  0,126,  0, 24, 24,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  2,  4,254, 16,254, 64,128,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0, 56, 68, 68, 56,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 56, 68,130,130,130, 68, 56,  0,  0,  0,  0,  0 },
X{   0,  0,122,164,156,132,132,132,132,132,120,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0, 16, 56,124,254,124, 56, 16,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,  0,  0,254,  0,  0, 24,  8, 16,  0,  0,  0,  0 },
X{   0,102,102,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0, 68,  0,  0,  0, 96,146, 12,  0,  0,  0,  0,  0,  0,  0,  0 },
X{   0,  0,  0,  0,254,130, 68, 40, 16,  0,  0,  0,  0,  0,  0,  0 }
X};
X
X
X/*     Load Font Subroutine
X**
X**     This routine sends the escape codes for to define a character
X** in the Wyse 60 Terminals.  Unfortunately, the APL character set takes
X** up more than 128 positions of the ASCII table so two font banks must
X** be loaded.  The Wyse can store up to 4 banks of which two can be used
X** at any one given time.
X*/
Xfontload(delay)
Xint    delay;
X{
X       int     i,                      /* Loop Counter */
X               bank,                   /* Font Bank */
X               pos,                    /* Character Position */
X               bits;                   /* One line of bits for the char */
X
X                               /* The Wyse 60 takes a second or */
X                               /* two to clear the font banks */
X       printf("Clearing font bank %d and %d\n", BANK, BANK+1);
X       printf("\033c?%1d\033c?%1d", BANK, BANK+1);
X       sleep(2);
X
X       printf("Loading fonts\n");
X       for (bank = 0; bank<2; bank++) {
X               printf("Bank %d ", bank+BANK);
X
X               for (pos=0; pos<128; pos++) {
X                       printf("\033cA%1d%02X", bank+BANK, pos);
X
X                       for(bits=0; bits<16; bits++)
X                               printf("%02X", aplfont[pos+bank*128][bits]);
X                       printf("\031.");
X
X                       fflush(stdout);
X                       for (i=0; i<delay; i++)
X                               ;
X               }
X               printf("\n");
X       }
X}
X
X/*     Print Font Subroutine
X**
X**     This subroutines prints the font out on an ASCII display.
X** The a pound sign (#) denotes a bit/pixel which is on and a
X** period (.) denotes a bit/pixel is off.
X*/
Xfontprint()
X{
X       int     bits,                   /* One line of bits for the char */
X               line,                   /* Each line of 8 chars */
X               pos,                    /* Character Position */
X               row;                    /* Each char has 16 rows */
Xunsigned int   ch;                     /* Temp storage character */
X
X       for (pos=0; pos<256; pos+=8) {
X
X               for (line=0; line<8; line++)
X                       printf("%8d ", pos+line);
X               putchar('\n');
X
X               for (row=0; row<16; row++) {
X                       for (line=pos; line<pos+8; line++) {
X                               ch = aplfont[line][row];
X                               for(bits=0; bits<8; bits++) {
X                                       if (ch & 0x80)
X                                               putchar('#');
X                                       else
X                                               putchar('.');
X                                       ch <<= 1;
X                               }
X                               putchar(' ');
X                       }
X                       putchar('\n');
X               }
X               putchar('\n');
X       }
X}
X
X/*     Usage - Help
X*/
Xusage(name)
Xchar   *name;
X{
X       printf("Usage: %s [-ps]\n", name);
X       exit(-1);
X}
X
X
X/*     Main Program
X*/
Xmain(argc, argv)
Xint    argc;
Xchar   **argv;
X{
X       switch (argc) {
X       case    1:                      /* Load as fast as possible */
X               fontload(0);
X               break;
X
X       case    2:                      /* Parse flags */
X               if (*argv[1] != '-')
X                       usage(argv[0]);
X
X               switch (*(argv[1]+1)) {
X               case 'p':               /* Print out characters */
X                       fontprint();
X                       break;
X
X               case 's':               /* Time Delay for 9600 baud */
X                       fontload(DELAY);
X                       break;
X
X               default:                /* Print Usage message */
X                       usage(argv[0]);
X               }
X               break;
X
X       default:
X               usage(argv[0]);
X       }
X}
END_OF_FILE
if test 20646 -ne `wc -c <'waplfont.c'`; then
    echo shar: \"'waplfont.c'\" unpacked with wrong size!
fi
# end of 'waplfont.c'
fi
echo shar: End of shell archive.
exit 0
--
Victor I. Poon          {acsm, lilink, polyof, sbcs}!kepler1!vipoon

It was the best of times, It was the worst of times, ...



Sun, 17 Jan 1993 22:15:00 GMT  
 
 [ 1 post ] 

 Relevant Pages 

1. APL Font for wyse 60 terminals

2. APL on Wyse terminal

3. installing apl & apl terminals under unix

4. XP and APL font for APL-PLUS II?

5. APL newcomer needs APL font for Mac...

6. WEG (NT) & Terminal font

7. Terminal Fonts

8. terminal font with isolatin character set

9. Unix APL Terminal Emulator?

10. TN3270/Mac APL terminal emulation

11. APL terminal emulators

12. APL terminal program for MS-DOS wanted

 

 
Powered by phpBB® Forum Software