Added support for DE200C VFD
[lcdproc-de200c.git] / server / drivers / de200c-vfd / server / vfd.c
blob00bdb9db99d5717fafa423503167025347085e1a
1 // ****************************************************************************
2 // vfd.c (C) 1992-2003 Christophe de Dinechin (ddd)
3 // VFD800 project
4 // ****************************************************************************
5 //
6 // File Description:
7 //
8 // Control functions for the VFD800 (Noritake)
9 //
10 //
11 //
12 //
13 //
14 //
15 //
16 //
17 // ****************************************************************************
18 // This document is confidential.
19 // Do not redistribute without written permission
20 // ****************************************************************************
21 // * File : $RCSFile$
22 // * Revision : $Revision$
23 // * Date : $Date$
24 // ****************************************************************************
26 #include "vfd.h"
27 #include <time.h>
28 #include <stdio.h>
29 #include <unistd.h>
30 #include <sys/io.h>
34 // ============================================================================
35 //
36 // High-level functions
37 //
38 // ============================================================================
40 int VFD_Init()
41 // ----------------------------------------------------------------------------
42 // Initialize the VFD
43 // ----------------------------------------------------------------------------
45 int error = 0;
46 int n;
48 if (ioperm(CONTROLPORT,1,1))
50 fprintf(stderr, "Couldn't get the port at %x\n", CONTROLPORT);
51 return 1;
53 if (ioperm(DATAPORT,1,1))
55 fprintf(stderr, "Couldn't get the port at %x\n", DATAPORT);
56 return 1;
59 // Start 800 init sequence
60 VFD_Command (INIT800A);
61 usleep (2 MS);
63 for(n = 0; n < 8; n++)
65 VFD_Command(INIT800B);
66 usleep (2 MS);
67 VFD_Command(INIT800C(n));
68 usleep (2 MS);
69 VFD_Data(INIT800D);
70 usleep (2 MS);
73 // Initialize for us
74 VFD_EnableScreen(1, 1); // Enable both screens
75 VFD_Command(ORON); // OR both screens
76 VFD_Command(HSHIFT); // Set horizontal shift
77 VFD_Command(0); // = 0
78 VFD_Command(VSHIFT); // Set vertical shift
80 VFD_Command(AUTOINCX); // Auto-increment X by default
81 VFD_Command(SETX); // Set X coordinate
82 VFD_Command(0x0); // to 0
83 VFD_Command(SETY); // Set Y coordinate
84 VFD_Command(0); // to 0
86 VFD_LoadGlyphs(VFD_ProportionalFont);
87 return 0;
91 void VFD_LoadGlyphs (char *glyphs)
92 // ----------------------------------------------------------------------------
93 // Load a glyphs table
94 // ----------------------------------------------------------------------------
96 int c;
98 // Init glyphs
99 for (c = 0; c < 256; c++)
101 char *base = glyphs;
102 char width = *glyphs++;
103 char height = *glyphs++;
104 VFD_Font[c] = base;
105 glyphs += width * height;
110 void VFD_EnableScreen(int screen0, int screen1)
111 // ----------------------------------------------------------------------------
112 // Enable the given screen layers
113 // ----------------------------------------------------------------------------
115 int command = 0x20 | ((screen0<<2) + (screen1<<3));
116 VFD_Command(command);
117 VFD_Brightness(1.0);
121 void VFD_Brightness(float brightness)
122 // ----------------------------------------------------------------------------
123 // Select the brightness
124 // ----------------------------------------------------------------------------
126 if (brightness > 1.0)
127 brightness = 1.0;
128 if (brightness < 0.0)
129 brightness = 0.0;
131 VFD_Command(0x40 | (15 - (int) (15 * brightness)));
135 void VFD_SetX(int X)
136 // ----------------------------------------------------------------------------
137 // Move cursor on X axis
138 // ----------------------------------------------------------------------------
140 VFD_Command(SETX);
141 VFD_Command(X);
145 void VFD_SetY(int Y)
146 // ----------------------------------------------------------------------------
147 // Move cursor on X axis
148 // ----------------------------------------------------------------------------
150 VFD_Command(SETY);
151 VFD_Command(Y);
155 void VFD_SetXY(int X, int Y)
156 // ----------------------------------------------------------------------------
157 // Move cursor on X axis
158 // ----------------------------------------------------------------------------
160 VFD_SetX(X); VFD_SetY(Y);
164 void VFD_Char(char c)
165 // ----------------------------------------------------------------------------
166 // Emit a single character
167 // ----------------------------------------------------------------------------
169 char *glyph = VFD_Font[(unsigned char) c];
170 int col, row;
171 int width = *glyph++;
172 int height = *glyph++;
173 if (height == 1)
175 for (col = 0; col < width; col++)
176 VFD_Data(*glyph++);
178 else
180 // ???
185 void VFD_Text(char *text)
186 // ----------------------------------------------------------------------------
187 // Emit the text at current position
188 // ----------------------------------------------------------------------------
190 char c;
191 while (c = *text++)
192 VFD_Char(c);
197 // ============================================================================
199 // Low-level functions
201 // ============================================================================
203 void VFD_Command(int command)
204 // ----------------------------------------------------------------------------
205 // Send the given command to the VFD
206 // ----------------------------------------------------------------------------
208 // Set C/D to C (control)
209 outb(0x0, CONTROLPORT);
211 // Write data port
212 outb(command, DATAPORT);
214 // Set /WR
215 outb (0x01, CONTROLPORT);
217 // Reset /WR
218 outb (0x00, CONTROLPORT);
222 void VFD_Data(int data)
223 // ----------------------------------------------------------------------------
224 // Send the given command to the VFD
225 // ----------------------------------------------------------------------------
227 // Set C/D to D (data)
228 // outb(0x08, CONTROLPORT);
230 // Write data port
231 outb(data, DATAPORT);
233 // Set /WR
234 outb (0x09, CONTROLPORT);
236 // Reset /WR
237 outb (0x08, CONTROLPORT);
241 char *VFD_Font[256] = { 0 };
243 char VFD_MonospacedFont[] =
244 // ----------------------------------------------------------------------------
245 // The default monospaced font for the VFD
246 // ----------------------------------------------------------------------------
248 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00 */
249 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01 */
250 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02 */
251 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03 */
252 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04 */
253 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05 */
254 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x06 */
255 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x07 */
256 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08 */
257 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x09 */
258 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0A */
259 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0B */
260 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0C */
261 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0D */
262 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0E */
263 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0F */
264 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10 */
265 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11 */
266 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12 */
267 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13 */
268 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x14 */
269 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x15 */
270 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16 */
271 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x17 */
272 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18 */
273 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19 */
274 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1A */
275 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1B */
276 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1C */
277 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1D */
278 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1E */
279 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1F */
280 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20 */
281 6, 1, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, /* 0x21 ! */
282 6, 1, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x00, /* 0x22 " */
283 6, 1, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, /* 0x23 # */
284 6, 1, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, /* 0x24 $ */
285 6, 1, 0x46, 0x26, 0x10, 0x68, 0x64, 0x00, /* 0x25 % */
286 6, 1, 0x36, 0x49, 0x55, 0x22, 0x50, 0x00, /* 0x26 & */
287 6, 1, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, /* 0x27 ' */
288 6, 1, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, /* 0x28 ( */
289 6, 1, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, /* 0x29 ) */
290 6, 1, 0x28, 0x10, 0x7C, 0x10, 0x28, 0x00, /* 0x2A * */
291 6, 1, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, /* 0x2B + */
292 6, 1, 0x00, 0x00, 0x50, 0x30, 0x00, 0x00, /* 0x2C , */
293 6, 1, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, /* 0x2D - */
294 6, 1, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, /* 0x2E . */
295 6, 1, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, /* 0x2F / */
296 6, 1, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, /* 0x30 0 */
297 6, 1, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, /* 0x31 1 */
298 6, 1, 0x42, 0x61, 0x51, 0x49, 0x46, 0x00, /* 0x32 2 */
299 6, 1, 0x21, 0x41, 0x45, 0x4B, 0x31, 0x00, /* 0x33 3 */
300 6, 1, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, /* 0x34 4 */
301 6, 1, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, /* 0x35 5 */
302 6, 1, 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00, /* 0x36 6 */
303 6, 1, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00, /* 0x37 7 */
304 6, 1, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, /* 0x38 8 */
305 6, 1, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, /* 0x39 9 */
306 6, 1, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, /* 0x3A : */
307 6, 1, 0x00, 0x56, 0x36, 0x00, 0x00, 0x00, /* 0x3B ; */
308 6, 1, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, /* 0x3C < */
309 6, 1, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, /* 0x3D = */
310 6, 1, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, /* 0x3E > */
311 6, 1, 0x02, 0x01, 0x51, 0x09, 0x06, 0x00, /* 0x3F ? */
312 6, 1, 0x32, 0x49, 0x79, 0x41, 0x3E, 0x00, /* 0x40 @ */
313 6, 1, 0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00, /* 0x41 A */
314 6, 1, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, /* 0x42 B */
315 6, 1, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, /* 0x43 C */
316 6, 1, 0x7F, 0x41, 0x41, 0x22, 0x1C, 0x00, /* 0x44 D */
317 6, 1, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, /* 0x45 E */
318 6, 1, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, /* 0x46 F */
319 6, 1, 0x3E, 0x41, 0x49, 0x49, 0x7A, 0x00, /* 0x47 G */
320 6, 1, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, /* 0x48 H */
321 6, 1, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, /* 0x49 I */
322 6, 1, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, /* 0x4A J */
323 6, 1, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, /* 0x4B K */
324 6, 1, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x4C L */
325 6, 1, 0x7F, 0x02, 0x0C, 0x02, 0x7F, 0x00, /* 0x4D M */
326 6, 1, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, /* 0x4E N */
327 6, 1, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, /* 0x4F O */
328 6, 1, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, /* 0x50 P */
329 6, 1, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, /* 0x51 Q */
330 6, 1, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, /* 0x52 R */
331 6, 1, 0x46, 0x49, 0x49, 0x49, 0x31, 0x00, /* 0x53 S */
332 6, 1, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, /* 0x54 T */
333 6, 1, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, /* 0x55 U */
334 6, 1, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, /* 0x56 V */
335 6, 1, 0x3F, 0x40, 0x30, 0x40, 0x3F, 0x00, /* 0x57 W */
336 6, 1, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, /* 0x58 X */
337 6, 1, 0x07, 0x08, 0x70, 0x08, 0x07, 0x00, /* 0x59 Y */
338 6, 1, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, /* 0x5A Z */
339 6, 1, 0x7F, 0x41, 0x41, 0x00, 0x00, 0x00, /* 0x5B [ */
340 6, 1, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, /* 0x5C \ */
341 6, 1, 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, /* 0x5D ] */
342 6, 1, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, /* 0x5E ^ */
343 6, 1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x5F _ */
344 6, 1, 0x00, 0x01, 0x02, 0x04, 0x00, 0x00, /* 0x60 ` */
345 6, 1, 0x20, 0x54, 0x54, 0x54, 0x78, 0x00, /* 0x61 a */
346 6, 1, 0x7F, 0x44, 0x44, 0x44, 0x38, 0x00, /* 0x62 b */
347 6, 1, 0x38, 0x44, 0x44, 0x44, 0x44, 0x00, /* 0x63 c */
348 6, 1, 0x38, 0x44, 0x44, 0x44, 0x7F, 0x00, /* 0x64 d */
349 6, 1, 0x38, 0x54, 0x54, 0x54, 0x58, 0x00, /* 0x65 e */
350 6, 1, 0x08, 0x7E, 0x09, 0x09, 0x02, 0x00, /* 0x66 f */
351 6, 1, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, 0x00, /* 0x67 g */
352 6, 1, 0x7F, 0x04, 0x04, 0x04, 0x78, 0x00, /* 0x68 h */
353 6, 1, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, /* 0x69 i */
354 6, 1, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, /* 0x6A j */
355 6, 1, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, /* 0x6B k */
356 6, 1, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, /* 0x6C l */
357 6, 1, 0x7C, 0x04, 0x38, 0x04, 0x78, 0x00, /* 0x6D m */
358 6, 1, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, /* 0x6E n */
359 6, 1, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, /* 0x6F o */
360 6, 1, 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, /* 0x70 p */
361 6, 1, 0x18, 0x24, 0x24, 0x24, 0xFC, 0x00, /* 0x71 q */
362 6, 1, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, /* 0x72 r */
363 6, 1, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, /* 0x73 s */
364 6, 1, 0x04, 0x3F, 0x44, 0x44, 0x20, 0x00, /* 0x74 t */
365 6, 1, 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, /* 0x75 u */
366 6, 1, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, /* 0x76 v */
367 6, 1, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, /* 0x77 w */
368 6, 1, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, /* 0x78 x */
369 6, 1, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, 0x00, /* 0x79 y */
370 6, 1, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, /* 0x7A z */
371 6, 1, 0x08, 0x36, 0x41, 0x41, 0x00, 0x00, /* 0x7B { */
372 6, 1, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, /* 0x7C | */
373 6, 1, 0x00, 0x41, 0x41, 0x36, 0x08, 0x00, /* 0x7D } */
374 6, 1, 0x08, 0x04, 0x04, 0x04, 0x02, 0x00, /* 0x7E ~ */
375 6, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0x7F */
376 6, 1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x80 */
377 6, 1, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, /* 0x81 */
378 6, 1, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, /* 0x82 */
379 6, 1, 0x78, 0x78, 0x78, 0x78, 0x78, 0x00, /* 0x83 */
380 6, 1, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, /* 0x84 */
381 6, 1, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, /* 0x85 */
382 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, /* 0x86 */
383 6, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, /* 0x87 */
384 6, 1, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88 */
385 6, 1, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, /* 0x89 */
386 6, 1, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, /* 0x8A */
387 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, /* 0x8B */
388 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, /* 0x8C */
389 6, 1, 0x55, 0x2A, 0x55, 0x2A, 0x55, 0x00, /* 0x8D */
390 6, 1, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, /* 0x8E */
391 6, 1, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x10, /* 0x8F */
392 6, 1, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, /* 0x90 */
393 6, 1, 0x10, 0x10, 0x10, 0xF8, 0x10, 0x10, /* 0x91 */
394 6, 1, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x00, /* 0x92 */
395 6, 1, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, /* 0x93 */
396 6, 1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, /* 0x94 */
397 6, 1, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, /* 0x95 */
398 6, 1, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, /* 0x96 */
399 6, 1, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, /* 0x97 */
400 6, 1, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, /* 0x98 */
401 6, 1, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, /* 0x99 */
402 6, 1, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, /* 0x9A */
403 6, 1, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, /* 0x9B */
404 6, 1, 0x10, 0x10, 0x20, 0xC0, 0x00, 0x00, /* 0x9C */
405 6, 1, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x10, /* 0x9D */
406 6, 1, 0x20, 0x20, 0x10, 0x0F, 0x00, 0x00, /* 0x9E */
407 6, 1, 0x78, 0x15, 0x14, 0x15, 0x78, 0x00, /* 0x9F */
408 6, 1, 0x78, 0x14, 0x15, 0x14, 0x78, 0x00, /* 0xA0 */
409 6, 1, 0x78, 0x14, 0x16, 0x15, 0x78, 0x00, /* 0xA1 */
410 6, 1, 0x0E, 0x51, 0x31, 0x11, 0x11, 0x00, /* 0xA2 */
411 6, 1, 0x78, 0x16, 0x15, 0x16, 0x78, 0x00, /* 0xA3 */
412 6, 1, 0x7E, 0x09, 0x7E, 0x4A, 0x4A, 0x00, /* 0xA4 */
413 6, 1, 0x7C, 0x54, 0x56, 0x55, 0x44, 0x00, /* 0xA5 */
414 6, 1, 0x7C, 0x55, 0x56, 0x54, 0x44, 0x00, /* 0xA6 */
415 6, 1, 0x7C, 0x56, 0x55, 0x56, 0x44, 0x00, /* 0xA7 */
416 6, 1, 0x00, 0x45, 0x7C, 0x45, 0x00, 0x00, /* 0xA8 */
417 6, 1, 0x00, 0x44, 0x7E, 0x45, 0x00, 0x00, /* 0xA9 */
418 6, 1, 0x00, 0x45, 0x7E, 0x44, 0x00, 0x00, /* 0xAA */
419 6, 1, 0x00, 0x46, 0x7D, 0x46, 0x00, 0x00, /* 0xAB */
420 6, 1, 0x38, 0x45, 0x44, 0x45, 0x38, 0x00, /* 0xAC */
421 6, 1, 0x7A, 0x09, 0x13, 0x22, 0x79, 0x00, /* 0xAD */
422 6, 1, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, /* 0xAE */
423 6, 1, 0x38, 0x44, 0x46, 0x45, 0x38, 0x00, /* 0xAF */
424 6, 1, 0x38, 0x45, 0x46, 0x44, 0x38, 0x00, /* 0xB0 */
425 6, 1, 0x78, 0x15, 0x16, 0x14, 0x78, 0x00, /* 0xB1 */
426 6, 1, 0xFF, 0x01, 0x01, 0x49, 0x36, 0x00, /* 0xB2 */
427 6, 1, 0x7C, 0x55, 0x54, 0x55, 0x44, 0x00, /* 0xB3 */
428 6, 1, 0x3C, 0x41, 0x40, 0x41, 0x3C, 0x00, /* 0xB4 */
429 6, 1, 0x3C, 0x40, 0x42, 0x41, 0x3C, 0x00, /* 0xB5 */
430 6, 1, 0x3C, 0x41, 0x42, 0x40, 0x3C, 0x00, /* 0xB6 */
431 6, 1, 0x3C, 0x42, 0x41, 0x42, 0x3C, 0x00, /* 0xB7 */
432 6, 1, 0x00, 0x02, 0x05, 0x02, 0x00, 0x00, /* 0xB8 */
433 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xB9 */
434 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBA */
435 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBB */
436 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBC */
437 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBD */
438 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBE */
439 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBF */
440 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC0 */
441 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC1 */
442 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC2 */
443 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC3 */
444 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC4 */
445 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC5 */
446 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC6 */
447 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC7 */
448 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC8 */
449 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC9 */
450 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCA */
451 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCB */
452 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCC */
453 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCD */
454 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCE */
455 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCF */
456 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD0 */
457 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD1 */
458 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD2 */
459 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD3 */
460 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD4 */
461 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD5 */
462 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD6 */
463 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD7 */
464 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD8 */
465 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD9 */
466 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDA */
467 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDB */
468 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDC */
469 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDD */
470 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDE */
471 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDF */
472 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE0 */
473 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE1 */
474 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE2 */
475 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE3 */
476 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE4 */
477 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE5 */
478 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE6 */
479 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE7 */
480 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE8 */
481 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE9 */
482 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEA */
483 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEB */
484 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEC */
485 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xED */
486 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEE */
487 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEF */
488 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF0 */
489 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF1 */
490 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF2 */
491 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF3 */
492 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF4 */
493 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF5 */
494 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF6 */
495 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF7 */
496 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF8 */
497 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF9 */
498 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFA */
499 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFB */
500 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFC */
501 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFD */
502 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFE */
503 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0xFF */
507 char VFD_ProportionalFont[] =
508 // ----------------------------------------------------------------------------
509 // The proportional font for the VFD
510 // ----------------------------------------------------------------------------
512 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00 */
513 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x01 */
514 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x02 */
515 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x03 */
516 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x04 */
517 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x05 */
518 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x06 */
519 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x07 */
520 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08 */
521 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x09 */
522 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0A */
523 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0B */
524 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0C */
525 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0D */
526 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0E */
527 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x0F */
528 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10 */
529 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x11 */
530 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x12 */
531 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x13 */
532 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x14 */
533 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x15 */
534 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x16 */
535 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x17 */
536 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18 */
537 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x19 */
538 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1A */
539 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1B */
540 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1C */
541 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1D */
542 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1E */
543 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x1F */
544 3, 1, 0x00, 0x00, 0x00, /* 0x20 */
545 3, 1, 0x00, 0x5F, 0x00, /* 0x21 ! */
546 5, 1, 0x00, 0x0E, 0x00, 0x0E, 0x00, /* 0x22 " */
547 6, 1, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, /* 0x23 # */
548 6, 1, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, /* 0x24 $ */
549 6, 1, 0x46, 0x26, 0x10, 0x68, 0x64, 0x00, /* 0x25 % */
550 6, 1, 0x36, 0x49, 0x55, 0x22, 0x50, 0x00, /* 0x26 & */
551 4, 1, 0x00, 0x0A, 0x06, 0x00, /* 0x27 ' */
552 5, 1, 0x00, 0x1C, 0x22, 0x41, 0x00, /* 0x28 ( */
553 5, 1, 0x00, 0x41, 0x22, 0x1C, 0x00, /* 0x29 ) */
554 6, 1, 0x28, 0x10, 0x7C, 0x10, 0x28, 0x00, /* 0x2A * */
555 6, 1, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, /* 0x2B + */
556 4, 1, 0x00, 0x50, 0x30, 0x00, /* 0x2C , */
557 6, 1, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, /* 0x2D - */
558 4, 1, 0x00, 0x60, 0x60, 0x00, /* 0x2E . */
559 6, 1, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00, /* 0x2F / */
560 6, 1, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, /* 0x30 0 */
561 6, 1, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, /* 0x31 1 */
562 6, 1, 0x42, 0x61, 0x51, 0x49, 0x46, 0x00, /* 0x32 2 */
563 6, 1, 0x21, 0x41, 0x45, 0x4B, 0x31, 0x00, /* 0x33 3 */
564 6, 1, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, /* 0x34 4 */
565 6, 1, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, /* 0x35 5 */
566 6, 1, 0x3C, 0x4A, 0x49, 0x49, 0x30, 0x00, /* 0x36 6 */
567 6, 1, 0x01, 0x71, 0x09, 0x05, 0x03, 0x00, /* 0x37 7 */
568 6, 1, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, /* 0x38 8 */
569 6, 1, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, /* 0x39 9 */
570 4, 1, 0x00, 0x36, 0x36, 0x00, /* 0x3A : */
571 4, 1, 0x00, 0x56, 0x36, 0x00, /* 0x3B ; */
572 6, 1, 0x08, 0x14, 0x22, 0x41, 0x00, 0x00, /* 0x3C < */
573 6, 1, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, /* 0x3D = */
574 6, 1, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, /* 0x3E > */
575 6, 1, 0x02, 0x01, 0x51, 0x09, 0x06, 0x00, /* 0x3F ? */
576 6, 1, 0x32, 0x49, 0x79, 0x41, 0x3E, 0x00, /* 0x40 @ */
577 6, 1, 0x7E, 0x11, 0x11, 0x11, 0x7E, 0x00, /* 0x41 A */
578 6, 1, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, /* 0x42 B */
579 6, 1, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, /* 0x43 C */
580 6, 1, 0x7F, 0x41, 0x41, 0x22, 0x1C, 0x00, /* 0x44 D */
581 6, 1, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, /* 0x45 E */
582 6, 1, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, /* 0x46 F */
583 6, 1, 0x3E, 0x41, 0x49, 0x49, 0x7A, 0x00, /* 0x47 G */
584 6, 1, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, /* 0x48 H */
585 5, 1, 0x41, 0x7F, 0x41, 0x00, 0x00, /* 0x49 I */
586 6, 1, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, /* 0x4A J */
587 6, 1, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, /* 0x4B K */
588 6, 1, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x4C L */
589 6, 1, 0x7F, 0x02, 0x0C, 0x02, 0x7F, 0x00, /* 0x4D M */
590 6, 1, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, /* 0x4E N */
591 6, 1, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, /* 0x4F O */
592 6, 1, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, /* 0x50 P */
593 6, 1, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, /* 0x51 Q */
594 6, 1, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, /* 0x52 R */
595 6, 1, 0x46, 0x49, 0x49, 0x49, 0x31, 0x00, /* 0x53 S */
596 6, 1, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x00, /* 0x54 T */
597 6, 1, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, /* 0x55 U */
598 6, 1, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, /* 0x56 V */
599 6, 1, 0x3F, 0x40, 0x30, 0x40, 0x3F, 0x00, /* 0x57 W */
600 6, 1, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, /* 0x58 X */
601 6, 1, 0x07, 0x08, 0x70, 0x08, 0x07, 0x00, /* 0x59 Y */
602 6, 1, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, /* 0x5A Z */
603 4, 1, 0x7F, 0x41, 0x41, 0x00, /* 0x5B [ */
604 6, 1, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, /* 0x5C \ */
605 4, 1, 0x41, 0x41, 0x7F, 0x00, /* 0x5D ] */
606 6, 1, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, /* 0x5E ^ */
607 6, 1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x5F _ */
608 4, 1, 0x01, 0x02, 0x04, 0x00, /* 0x60 ` */
609 6, 1, 0x20, 0x54, 0x54, 0x54, 0x78, 0x00, /* 0x61 a */
610 6, 1, 0x7F, 0x44, 0x44, 0x44, 0x38, 0x00, /* 0x62 b */
611 6, 1, 0x38, 0x44, 0x44, 0x44, 0x44, 0x00, /* 0x63 c */
612 6, 1, 0x38, 0x44, 0x44, 0x44, 0x7F, 0x00, /* 0x64 d */
613 6, 1, 0x38, 0x54, 0x54, 0x54, 0x58, 0x00, /* 0x65 e */
614 6, 1, 0x08, 0x7E, 0x09, 0x09, 0x02, 0x00, /* 0x66 f */
615 6, 1, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, 0x00, /* 0x67 g */
616 6, 1, 0x7F, 0x04, 0x04, 0x04, 0x78, 0x00, /* 0x68 h */
617 4, 1, 0x44, 0x7D, 0x40, 0x00, /* 0x69 i */
618 6, 1, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, /* 0x6A j */
619 6, 1, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, /* 0x6B k */
620 4, 1, 0x41, 0x7F, 0x40, 0x00, /* 0x6C l */
621 8, 1, 0x7C, 0x04, 0x04, 0x38, 0x04, 0x04, 0x78, 0x00, /* 0x6D m */
622 6, 1, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, /* 0x6E n */
623 6, 1, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, /* 0x6F o */
624 6, 1, 0xFC, 0x24, 0x24, 0x24, 0x18, 0x00, /* 0x70 p */
625 6, 1, 0x18, 0x24, 0x24, 0x24, 0xFC, 0x00, /* 0x71 q */
626 6, 1, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, /* 0x72 r */
627 6, 1, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, /* 0x73 s */
628 6, 1, 0x04, 0x3F, 0x44, 0x44, 0x20, 0x00, /* 0x74 t */
629 6, 1, 0x3C, 0x40, 0x40, 0x40, 0x3C, 0x00, /* 0x75 u */
630 6, 1, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, /* 0x76 v */
631 8, 1, 0x3C, 0x40, 0x40, 0x30, 0x40, 0x40, 0x3C, 0x00, /* 0x77 w */
632 6, 1, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, /* 0x78 x */
633 6, 1, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, 0x00, /* 0x79 y */
634 6, 1, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, /* 0x7A z */
635 6, 1, 0x08, 0x36, 0x41, 0x41, 0x00, 0x00, /* 0x7B { */
636 6, 1, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, /* 0x7C | */
637 6, 1, 0x00, 0x41, 0x41, 0x36, 0x08, 0x00, /* 0x7D } */
638 6, 1, 0x08, 0x04, 0x04, 0x04, 0x02, 0x00, /* 0x7E ~ */
639 6, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, /* 0x7F */
640 6, 1, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, /* 0x80 */
641 6, 1, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, /* 0x81 */
642 6, 1, 0x70, 0x70, 0x70, 0x70, 0x70, 0x00, /* 0x82 */
643 6, 1, 0x78, 0x78, 0x78, 0x78, 0x78, 0x00, /* 0x83 */
644 6, 1, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x00, /* 0x84 */
645 6, 1, 0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x00, /* 0x85 */
646 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, /* 0x86 */
647 6, 1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, /* 0x87 */
648 6, 1, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88 */
649 6, 1, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00, /* 0x89 */
650 6, 1, 0x7F, 0x7F, 0x7F, 0x00, 0x00, 0x00, /* 0x8A */
651 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, 0x00, /* 0x8B */
652 6, 1, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00, /* 0x8C */
653 6, 1, 0x55, 0x2A, 0x55, 0x2A, 0x55, 0x00, /* 0x8D */
654 6, 1, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, /* 0x8E */
655 6, 1, 0x10, 0x10, 0x10, 0xFF, 0x10, 0x10, /* 0x8F */
656 6, 1, 0x10, 0x10, 0x10, 0x1F, 0x10, 0x10, /* 0x90 */
657 6, 1, 0x10, 0x10, 0x10, 0xF8, 0x10, 0x10, /* 0x91 */
658 6, 1, 0x10, 0x10, 0x10, 0xFF, 0x00, 0x00, /* 0x92 */
659 6, 1, 0x00, 0x00, 0x00, 0xFF, 0x10, 0x10, /* 0x93 */
660 6, 1, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, /* 0x94 */
661 6, 1, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, /* 0x95 */
662 6, 1, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, /* 0x96 */
663 6, 1, 0x00, 0x00, 0x00, 0xF0, 0x10, 0x10, /* 0x97 */
664 6, 1, 0x10, 0x10, 0x10, 0xF0, 0x00, 0x00, /* 0x98 */
665 6, 1, 0x00, 0x00, 0x00, 0x1F, 0x10, 0x10, /* 0x99 */
666 6, 1, 0x10, 0x10, 0x10, 0x1F, 0x00, 0x00, /* 0x9A */
667 6, 1, 0x00, 0x00, 0x00, 0xE0, 0x10, 0x10, /* 0x9B */
668 6, 1, 0x10, 0x10, 0x20, 0xC0, 0x00, 0x00, /* 0x9C */
669 6, 1, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x10, /* 0x9D */
670 6, 1, 0x20, 0x20, 0x10, 0x0F, 0x00, 0x00, /* 0x9E */
671 6, 1, 0x78, 0x15, 0x14, 0x15, 0x78, 0x00, /* 0x9F */
672 6, 1, 0x78, 0x14, 0x15, 0x14, 0x78, 0x00, /* 0xA0 */
673 6, 1, 0x78, 0x14, 0x16, 0x15, 0x78, 0x00, /* 0xA1 */
674 6, 1, 0x0E, 0x51, 0x31, 0x11, 0x11, 0x00, /* 0xA2 */
675 6, 1, 0x78, 0x16, 0x15, 0x16, 0x78, 0x00, /* 0xA3 */
676 6, 1, 0x7E, 0x09, 0x7E, 0x4A, 0x4A, 0x00, /* 0xA4 */
677 6, 1, 0x7C, 0x54, 0x56, 0x55, 0x44, 0x00, /* 0xA5 */
678 6, 1, 0x7C, 0x55, 0x56, 0x54, 0x44, 0x00, /* 0xA6 */
679 6, 1, 0x7C, 0x56, 0x55, 0x56, 0x44, 0x00, /* 0xA7 */
680 6, 1, 0x00, 0x45, 0x7C, 0x45, 0x00, 0x00, /* 0xA8 */
681 6, 1, 0x00, 0x44, 0x7E, 0x45, 0x00, 0x00, /* 0xA9 */
682 6, 1, 0x00, 0x45, 0x7E, 0x44, 0x00, 0x00, /* 0xAA */
683 6, 1, 0x00, 0x46, 0x7D, 0x46, 0x00, 0x00, /* 0xAB */
684 6, 1, 0x38, 0x45, 0x44, 0x45, 0x38, 0x00, /* 0xAC */
685 6, 1, 0x7A, 0x09, 0x13, 0x22, 0x79, 0x00, /* 0xAD */
686 6, 1, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, /* 0xAE */
687 6, 1, 0x38, 0x44, 0x46, 0x45, 0x38, 0x00, /* 0xAF */
688 6, 1, 0x38, 0x45, 0x46, 0x44, 0x38, 0x00, /* 0xB0 */
689 6, 1, 0x78, 0x15, 0x16, 0x14, 0x78, 0x00, /* 0xB1 */
690 6, 1, 0xFF, 0x01, 0x01, 0x49, 0x36, 0x00, /* 0xB2 */
691 6, 1, 0x7C, 0x55, 0x54, 0x55, 0x44, 0x00, /* 0xB3 */
692 6, 1, 0x3C, 0x41, 0x40, 0x41, 0x3C, 0x00, /* 0xB4 */
693 6, 1, 0x3C, 0x40, 0x42, 0x41, 0x3C, 0x00, /* 0xB5 */
694 6, 1, 0x3C, 0x41, 0x42, 0x40, 0x3C, 0x00, /* 0xB6 */
695 6, 1, 0x3C, 0x42, 0x41, 0x42, 0x3C, 0x00, /* 0xB7 */
696 6, 1, 0x00, 0x02, 0x05, 0x02, 0x00, 0x00, /* 0xB8 */
697 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xB9 */
698 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBA */
699 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBB */
700 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBC */
701 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBD */
702 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBE */
703 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xBF */
704 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC0 */
705 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC1 */
706 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC2 */
707 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC3 */
708 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC4 */
709 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC5 */
710 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC6 */
711 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC7 */
712 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC8 */
713 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xC9 */
714 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCA */
715 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCB */
716 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCC */
717 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCD */
718 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCE */
719 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xCF */
720 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD0 */
721 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD1 */
722 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD2 */
723 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD3 */
724 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD4 */
725 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD5 */
726 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD6 */
727 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD7 */
728 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD8 */
729 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xD9 */
730 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDA */
731 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDB */
732 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDC */
733 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDD */
734 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDE */
735 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xDF */
736 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE0 */
737 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE1 */
738 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE2 */
739 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE3 */
740 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE4 */
741 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE5 */
742 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE6 */
743 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE7 */
744 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE8 */
745 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xE9 */
746 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEA */
747 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEB */
748 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEC */
749 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xED */
750 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEE */
751 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xEF */
752 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF0 */
753 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF1 */
754 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF2 */
755 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF3 */
756 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF4 */
757 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF5 */
758 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF6 */
759 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF7 */
760 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF8 */
761 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xF9 */
762 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFA */
763 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFB */
764 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFC */
765 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFD */
766 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xFE */
767 6, 1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* 0xFF */
771 int VFD_IsFont(char *ptr)
772 // ----------------------------------------------------------------------------
773 // Return true if the pointer is a pre-defined font
774 // ----------------------------------------------------------------------------
776 #define ISFNT(fname) (ptr >= fname && ptr <= fname + sizeof(fname))
777 return ISFNT(VFD_ProportionalFont) || ISFNT(VFD_MonospacedFont);