Path: utzoo!utgpu!jarvis.csri.toronto.edu!rutgers!usc!elroy.jpl.nasa.gov!ames!ncar!boulder!sunybcs!sbcs!kepler1!vipoon
From: vipoon@kepler1.UUCP (Victor I Poon)
Newsgroups: comp.lang.apl
Subject: APL Font for Wyse 60 Terminals (Part 1 of 1)
Keywords: APL Font, Wyse
Message-ID: <151@kepler1.UUCP>
Date: 13 Aug 89 22:15:35 GMT
Organization: Kepler Financial Mgmt, Setauket, NY
Lines: 953


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 '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 64 		 Ascii At sign @
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	vipoon@sbcs.sunysb.edu
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
Xstatic	char	c_cvtfont[] = "@(#)cvtfont.c	1.0   08/10/89";
X#endif
X
X/*	Convert Font Display to Decimal Numbers
X**	Author: Victor Poon
X*/
X#include 
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 sixteen
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
Xstatic	char c_waplfont[] = "@(#)waplfont.c	1.0   08/10/89";
X#endif
X
X/*	Download an APL Character Set into the Wyse Terminals
X**	Author:  Victor Poon
X*/
X
X#include 
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