add forgotten files
This commit is contained in:
@@ -0,0 +1,463 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// This is a driver for the Intra2net Intranator 2500 VFD display //
|
||||||
|
// //
|
||||||
|
// The display features: //
|
||||||
|
// - B/W and two additional grayscale colors //
|
||||||
|
// - USB data transfer //
|
||||||
|
// - Animated boot logo //
|
||||||
|
// - Hardware double buffering, limit is 27 FPS //
|
||||||
|
// - Adjustable brightness / brightness of single colors //
|
||||||
|
// //
|
||||||
|
// (C) 2003,2007 Intra2net AG //
|
||||||
|
// //
|
||||||
|
// The HD44780 font in i2500vfdfm.c was taken from //
|
||||||
|
// Michael Reinelt / lcd4linux and is (C) 2000 by him. //
|
||||||
|
// //
|
||||||
|
// Code here is basend on sed1520.c: //
|
||||||
|
// (C) 2001,2002 Robin Adams ( robin@adams-online.de ) //
|
||||||
|
// //
|
||||||
|
// This driver is released under the GPL. See file COPYING in this //
|
||||||
|
// package for further details. //
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/errno.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
#include "i2500vfdfm.h"
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "shared/str.h"
|
||||||
|
#include "lcd.h"
|
||||||
|
#include "i2500vfd.h"
|
||||||
|
#include "report.h"
|
||||||
|
|
||||||
|
#include <ftdi.h>
|
||||||
|
|
||||||
|
// The display itself stores three pixels in one byte
|
||||||
|
// We waste a little memory as we store one pixel per byte
|
||||||
|
// as we want to keep the drawing code simple.
|
||||||
|
// Take a look at i2500vfd_flush for the conversion
|
||||||
|
|
||||||
|
#define INTRA2NET_VFD_XSIZE 140
|
||||||
|
#define INTRA2NET_VFD_YSIZE 32
|
||||||
|
#define INTRA2NET_VFD_SCREENSIZE INTRA2NET_VFD_XSIZE*INTRA2NET_VFD_YSIZE
|
||||||
|
#define INTRA2NET_VFD_PACKEDSIZE 47*32
|
||||||
|
#define INTRA2NET_VFD_XSHIFT 0
|
||||||
|
|
||||||
|
#define WIDTH 23
|
||||||
|
#define HEIGHT 4
|
||||||
|
#define CELLWIDTH 6
|
||||||
|
#define CELLHEIGHT 8
|
||||||
|
|
||||||
|
typedef struct driver_private_data {
|
||||||
|
struct ftdi_context ftdi;
|
||||||
|
unsigned char *framebuf;
|
||||||
|
int changed;
|
||||||
|
} PrivateData;
|
||||||
|
|
||||||
|
// Vars for the server core
|
||||||
|
MODULE_EXPORT char *api_version = API_VERSION;
|
||||||
|
MODULE_EXPORT int stay_in_foreground = 0;
|
||||||
|
MODULE_EXPORT int supports_multiple = 0;
|
||||||
|
MODULE_EXPORT char *symbol_prefix = "i2500vfd_";
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// draws char z from fontmap to the framebuffer at position
|
||||||
|
// x,y. These are zero-based textmode positions.
|
||||||
|
// The Fontmap is stored in rows while the framebuffer is stored
|
||||||
|
// in columns, so we need a little conversion.
|
||||||
|
//
|
||||||
|
void
|
||||||
|
drawchar2fb (Driver *drvthis, int x, int y, unsigned char z)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
|
||||||
|
if (x < 0 || x >= WIDTH || y < 0 || y >= HEIGHT)
|
||||||
|
return;
|
||||||
|
|
||||||
|
x++;
|
||||||
|
|
||||||
|
int font_x, font_y;
|
||||||
|
for (font_y = 0; font_y < 8; font_y++) {
|
||||||
|
for (font_x = 5; font_x > -1; font_x--) {
|
||||||
|
if ((i2500vfd_fontmap[z][font_y] & 1<<font_x) == 1<<font_x)
|
||||||
|
p->framebuf[INTRA2NET_VFD_XSHIFT+x*6-font_x + (y*8+font_y)*140] = 1;
|
||||||
|
else
|
||||||
|
p->framebuf[INTRA2NET_VFD_XSHIFT+x*6-font_x + (y*8+font_y)*140] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
p->changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// This initialises the stuff.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_init (Driver *drvthis)
|
||||||
|
{
|
||||||
|
PrivateData *p;
|
||||||
|
int i;
|
||||||
|
unsigned char c;
|
||||||
|
|
||||||
|
/* Allocate and store private data */
|
||||||
|
p = (PrivateData *) calloc(1, sizeof(PrivateData));
|
||||||
|
if (p == NULL)
|
||||||
|
return -1;
|
||||||
|
if (drvthis->store_private_ptr(drvthis, p))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (ftdi_init (&p->ftdi) < 0) {
|
||||||
|
report (RPT_ERR, "ftdi_init failed. Out of memory?");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = ftdi_usb_open (&p->ftdi, 0x0403, 0xF8A8);
|
||||||
|
if (i != 0 && i != -5) {
|
||||||
|
report (RPT_ERR, "Unable to find i2500 VFD display on USB bus. Aborting");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Allocate our framebuffer
|
||||||
|
p->framebuf = (unsigned char *) malloc(INTRA2NET_VFD_SCREENSIZE * 2 + INTRA2NET_VFD_PACKEDSIZE + 1);
|
||||||
|
if (p->framebuf == NULL) {
|
||||||
|
report(RPT_ERR, "%s: unable to allocate framebuffer", drvthis->name);
|
||||||
|
i2500vfd_close (drvthis);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fade out (set brightness to zero)
|
||||||
|
c = 4|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
c = 0|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
sleep (1);
|
||||||
|
|
||||||
|
// Blank display
|
||||||
|
c = 2|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
|
||||||
|
// Bring voltage up again
|
||||||
|
c = 4|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
c = 63|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
|
||||||
|
// Flip to blank page
|
||||||
|
c = 64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
sleep (1);
|
||||||
|
|
||||||
|
// Clear internal screen
|
||||||
|
i2500vfd_clear(drvthis);
|
||||||
|
|
||||||
|
// Unblank display
|
||||||
|
c = 3|64;
|
||||||
|
ftdi_write_data (&p->ftdi, &c, 1);
|
||||||
|
|
||||||
|
report(RPT_DEBUG, "%s: init() done", drvthis->name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Frees the frambuffer and exits the driver.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_close (Driver *drvthis)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
|
||||||
|
if (p) {
|
||||||
|
ftdi_usb_close (&p->ftdi);
|
||||||
|
ftdi_deinit(&p->ftdi);
|
||||||
|
|
||||||
|
if (p->framebuf)
|
||||||
|
free(p->framebuf);
|
||||||
|
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
drvthis->store_private_ptr(drvthis, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display width
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_width (Driver *drvthis)
|
||||||
|
{
|
||||||
|
return WIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display height
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_height (Driver *drvthis)
|
||||||
|
{
|
||||||
|
return HEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display width
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_cellwidth (Driver *drvthis)
|
||||||
|
{
|
||||||
|
return CELLWIDTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Returns the display height
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_cellheight (Driver *drvthis)
|
||||||
|
{
|
||||||
|
return CELLHEIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Clears the LCD screen
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_clear (Driver *drvthis)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
|
||||||
|
memset(p->framebuf, 0, INTRA2NET_VFD_SCREENSIZE);
|
||||||
|
p->changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Flushes all output to the VFD...
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_flush (Driver *drvthis)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
|
||||||
|
if (!p->changed)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Grayscales are currently discarded.
|
||||||
|
// Could be useful for antialised fonts
|
||||||
|
int packed_begin = INTRA2NET_VFD_SCREENSIZE*2;
|
||||||
|
int packed_offset = packed_begin, offset = 0, pixpos = 0, xpos = 0;
|
||||||
|
memset (p->framebuf+packed_begin, 0, INTRA2NET_VFD_PACKEDSIZE);
|
||||||
|
while (offset != INTRA2NET_VFD_SCREENSIZE) {
|
||||||
|
if (p->framebuf[offset] != 0) {
|
||||||
|
switch(pixpos) {
|
||||||
|
case 0:
|
||||||
|
p->framebuf[packed_offset] = 3;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
p->framebuf[packed_offset] |= 3<<2;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
p->framebuf[packed_offset] |= 3<<4;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
xpos++;
|
||||||
|
offset++;
|
||||||
|
pixpos++;
|
||||||
|
if (pixpos == 3) {
|
||||||
|
pixpos = 0;
|
||||||
|
packed_offset++;
|
||||||
|
}
|
||||||
|
// Special: The display is organized in 3-pixel columns, but the last column got only 2 pixels
|
||||||
|
if (xpos == 140) {
|
||||||
|
packed_offset++;
|
||||||
|
pixpos = 0;
|
||||||
|
xpos = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Page flip command
|
||||||
|
p->framebuf[INTRA2NET_VFD_SCREENSIZE * 2 + INTRA2NET_VFD_PACKEDSIZE] = 64;
|
||||||
|
|
||||||
|
// Write data to display
|
||||||
|
ftdi_write_data (&p->ftdi, p->framebuf+packed_begin, INTRA2NET_VFD_PACKEDSIZE+1);
|
||||||
|
|
||||||
|
p->changed = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Prints a string on the lc display, at position (x,y). The
|
||||||
|
// upper-left is (1,1), and the lower right should be (20,4).
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_string (Driver *drvthis, int x, int y, const char string[])
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
x--; // Convert 1-based coords to 0-based
|
||||||
|
y--;
|
||||||
|
|
||||||
|
for (i = 0; string[i]; i++)
|
||||||
|
drawchar2fb (drvthis, x + i, y, string[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Writes char c at position x,y into the framebuffer.
|
||||||
|
// x and y are 1-based textmode coordinates.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_chr (Driver *drvthis, int x, int y, char c)
|
||||||
|
{
|
||||||
|
y--;
|
||||||
|
x--;
|
||||||
|
drawchar2fb(drvthis, x, y, c);
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Changes the font of character n to a pattern given by *dat.
|
||||||
|
// HD44780 Controllers only posses 8 programmable chars. But
|
||||||
|
// we store the fontmap completely in RAM, so every character
|
||||||
|
// can be altered. !Important: Characters have to be redrawn
|
||||||
|
// by drawchar2fb() to show their new shape. Because we use
|
||||||
|
// a non-standard 6x8 font a *dat not calculated from
|
||||||
|
// width and height will fail.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_set_char (Driver *drvthis, int n, char *dat)
|
||||||
|
{
|
||||||
|
int row, col;
|
||||||
|
|
||||||
|
if (n < 0 || n > 255)
|
||||||
|
return;
|
||||||
|
if (!dat)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (row = 0; row < CELLHEIGHT; row++) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
for (col = 0; col < CELLWIDTH; col++)
|
||||||
|
i = (i << 1) | (dat[(row * CELLWIDTH) + col] > 0);
|
||||||
|
|
||||||
|
i2500vfd_fontmap[n][row] = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Draws a vertical from the bottom up to the last 3 rows of the
|
||||||
|
// framebuffer at 1-based position x. len is given in pixels.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_vbar(Driver *drvthis, int x, int y, int len, int promille, int pattern)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
unsigned int offset;
|
||||||
|
int i, j, pixels;
|
||||||
|
|
||||||
|
x--;
|
||||||
|
// don't do y-- as we draw bottom up
|
||||||
|
|
||||||
|
if (x < 0 || y < 1 || x >= WIDTH || y > HEIGHT || len > HEIGHT) {
|
||||||
|
report(RPT_DEBUG, "%s: [vbar ERROR] x: %d, y: %d, len: %d", drvthis->name, x, y, len);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = INTRA2NET_VFD_XSHIFT + x*CELLWIDTH + y*INTRA2NET_VFD_XSIZE*CELLHEIGHT;
|
||||||
|
pixels = len*CELLHEIGHT*promille/1000;
|
||||||
|
|
||||||
|
// printf("[vbar] x: %d, y: %d, len: %d, offset: %d, pixels: %d\n", x, y, len, offset, pixels);
|
||||||
|
for (i = 0; i < pixels; i++) {
|
||||||
|
for (j = 0; j < CELLWIDTH; j++) {
|
||||||
|
p->framebuf[offset+j] = 1;
|
||||||
|
}
|
||||||
|
// go to next y-line
|
||||||
|
offset -= INTRA2NET_VFD_XSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Draws a horizontal bar from left to right at 1-based position
|
||||||
|
// x,y into the framebuffer. len is given in characters;
|
||||||
|
//
|
||||||
|
MODULE_EXPORT void
|
||||||
|
i2500vfd_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern)
|
||||||
|
{
|
||||||
|
PrivateData *p = drvthis->private_data;
|
||||||
|
unsigned int offset;
|
||||||
|
int i, j, pixels;
|
||||||
|
|
||||||
|
x--;
|
||||||
|
y--;
|
||||||
|
|
||||||
|
if (y < 0 || y >= HEIGHT || x < 0 || len < 0 || x + len > WIDTH) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset = INTRA2NET_VFD_XSHIFT + 2 + x*CELLWIDTH + y*INTRA2NET_VFD_XSIZE*CELLHEIGHT;
|
||||||
|
|
||||||
|
// calculate length of bar
|
||||||
|
pixels = len*CELLWIDTH*promille/1000;
|
||||||
|
|
||||||
|
for (i = 0; i < CELLHEIGHT-1; i++) {
|
||||||
|
for (j = 0; j < pixels; j++) {
|
||||||
|
p->framebuf[offset+j] = 1;
|
||||||
|
}
|
||||||
|
// go to next y-line
|
||||||
|
offset += INTRA2NET_VFD_XSIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
p->changed = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////
|
||||||
|
// Reprogrammes character dest to contain an icon given by
|
||||||
|
// which. Calls set_char() to do this.
|
||||||
|
//
|
||||||
|
MODULE_EXPORT int
|
||||||
|
i2500vfd_icon (Driver *drvthis, int x, int y, int icon)
|
||||||
|
{
|
||||||
|
static char heart_open[] = {
|
||||||
|
1, 1, 1, 1, 1,
|
||||||
|
1, 0, 1, 0, 1,
|
||||||
|
0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0,
|
||||||
|
1, 0, 0, 0, 1,
|
||||||
|
1, 1, 0, 1, 1,
|
||||||
|
1, 1, 1, 1, 1 };
|
||||||
|
|
||||||
|
static char heart_filled[] = {
|
||||||
|
1, 1, 1, 1, 1,
|
||||||
|
1, 0, 1, 0, 1,
|
||||||
|
0, 1, 0, 1, 0,
|
||||||
|
0, 1, 1, 1, 0,
|
||||||
|
0, 1, 1, 1, 0,
|
||||||
|
1, 0, 1, 0, 1,
|
||||||
|
1, 1, 0, 1, 1,
|
||||||
|
1, 1, 1, 1, 1 };
|
||||||
|
|
||||||
|
switch (icon) {
|
||||||
|
case ICON_BLOCK_FILLED:
|
||||||
|
i2500vfd_chr(drvthis, x, y, 255);
|
||||||
|
break;
|
||||||
|
case ICON_HEART_FILLED:
|
||||||
|
i2500vfd_set_char(drvthis, 0, heart_filled);
|
||||||
|
i2500vfd_chr(drvthis, x, y, 0);
|
||||||
|
break;
|
||||||
|
case ICON_HEART_OPEN:
|
||||||
|
i2500vfd_set_char(drvthis, 0, heart_open);
|
||||||
|
i2500vfd_chr(drvthis, x, y, 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef I2500VFD_H
|
||||||
|
#define I2500VFD_H
|
||||||
|
|
||||||
|
#include "lcd.h"
|
||||||
|
|
||||||
|
MODULE_EXPORT int i2500vfd_init (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void i2500vfd_close (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int i2500vfd_width (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int i2500vfd_height (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int i2500vfd_cellwidth (Driver *drvthis);
|
||||||
|
MODULE_EXPORT int i2500vfd_cellheight (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void i2500vfd_clear (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void i2500vfd_flush (Driver *drvthis);
|
||||||
|
MODULE_EXPORT void i2500vfd_string (Driver *drvthis, int x, int y, const char string[]);
|
||||||
|
MODULE_EXPORT void i2500vfd_chr (Driver *drvthis, int x, int y, char c);
|
||||||
|
|
||||||
|
MODULE_EXPORT void i2500vfd_vbar(Driver *drvthis, int x, int y, int len, int promille, int pattern);
|
||||||
|
MODULE_EXPORT void i2500vfd_hbar(Driver *drvthis, int x, int y, int len, int promille, int pattern);
|
||||||
|
MODULE_EXPORT int i2500vfd_icon (Driver *drvthis, int x, int y, int icon);
|
||||||
|
|
||||||
|
MODULE_EXPORT void i2500vfd_set_char (Driver *drvthis, int n, char *dat);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,835 @@
|
|||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// This file contains a HD44780 font and a font for big numbers. //
|
||||||
|
// The HD44780 font in this file was shamelessly stolen from //
|
||||||
|
// Michael Reinelt / lcd4linux and is //
|
||||||
|
// Copyright 1999, 2000 by Michael Reinelt (reinelt@eunet.at) //
|
||||||
|
// The rest of this file is //
|
||||||
|
// //
|
||||||
|
// (C) 2001 Robin Adams ( robin@adams-online.de ) //
|
||||||
|
// //
|
||||||
|
// This file is released under the GPL. See file COPYING in this //
|
||||||
|
// package for further details. //
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define b______ 0x00
|
||||||
|
#define b_____O 0x01
|
||||||
|
#define b____O_ 0x02
|
||||||
|
#define b____OO 0x03
|
||||||
|
#define b___O__ 0x04
|
||||||
|
#define b___O_O 0x05
|
||||||
|
#define b___OO_ 0x06
|
||||||
|
#define b___OOO 0x07
|
||||||
|
#define b__O___ 0x08
|
||||||
|
#define b__O__O 0x09
|
||||||
|
#define b__O_O_ 0x0a
|
||||||
|
#define b__O_OO 0x0b
|
||||||
|
#define b__OO__ 0x0c
|
||||||
|
#define b__OO_O 0x0d
|
||||||
|
#define b__OOO_ 0x0e
|
||||||
|
#define b__OOOO 0x0f
|
||||||
|
#define b_O____ 0x10
|
||||||
|
#define b_O___O 0x11
|
||||||
|
#define b_O__O_ 0x12
|
||||||
|
#define b_O__OO 0x13
|
||||||
|
#define b_O_O__ 0x14
|
||||||
|
#define b_O_O_O 0x15
|
||||||
|
#define b_O_OO_ 0x16
|
||||||
|
#define b_O_OOO 0x17
|
||||||
|
#define b_OO___ 0x18
|
||||||
|
#define b_OO__O 0x19
|
||||||
|
#define b_OO_O_ 0x1a
|
||||||
|
#define b_OO_OO 0x1b
|
||||||
|
#define b_OOO__ 0x1c
|
||||||
|
#define b_OOO_O 0x1d
|
||||||
|
#define b_OOOO_ 0x1e
|
||||||
|
#define b_OOOOO 0x1f
|
||||||
|
#define b_OOOOO 0x1f
|
||||||
|
#define bOOOOOO 0x3f
|
||||||
|
|
||||||
|
unsigned char i2500vfd_fontmap[256][8] = {
|
||||||
|
[0x20] {b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x21] {b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x22] {b__O_O_,
|
||||||
|
b__O_O_,
|
||||||
|
b__O_O_,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x23] {b__O_O_,
|
||||||
|
b__O_O_,
|
||||||
|
b_OOOOO,
|
||||||
|
b__O_O_,
|
||||||
|
b_OOOOO,
|
||||||
|
b__O_O_,
|
||||||
|
b__O_O_,
|
||||||
|
b______},
|
||||||
|
[0x24] {b___O__,
|
||||||
|
b__OOOO,
|
||||||
|
b_O_O__,
|
||||||
|
b__OOO_,
|
||||||
|
b___O_O,
|
||||||
|
b_OOOO_,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x25] {b_OO___,
|
||||||
|
b_OO__O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_O__OO,
|
||||||
|
b____OO,
|
||||||
|
b______},
|
||||||
|
[0x26] {b__OO__,
|
||||||
|
b_O__O_,
|
||||||
|
b_O_O__,
|
||||||
|
b__O___,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O__O_,
|
||||||
|
b__OO_O,
|
||||||
|
b______},
|
||||||
|
[0x27] {b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x28] {b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b______},
|
||||||
|
[0x29] {b__O___,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x2a] {b______,
|
||||||
|
b___O__,
|
||||||
|
b_O_O_O,
|
||||||
|
b__OOO_,
|
||||||
|
b_O_O_O,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x2b] {b______,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b_OOOOO,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x2c] {b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x2d] {b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b_OOOOO,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x2e] {b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b__OO__,
|
||||||
|
b__OO__,
|
||||||
|
b______},
|
||||||
|
[0x2f] {b______,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_O____,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x30] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O__OO,
|
||||||
|
b_O_O_O,
|
||||||
|
b_OO__O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x31] {b___O__,
|
||||||
|
b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x32] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x33] {b_OOOOO,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b_____O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x34] {b____O_,
|
||||||
|
b___OO_,
|
||||||
|
b__O_O_,
|
||||||
|
b_O__O_,
|
||||||
|
b_OOOOO,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b______},
|
||||||
|
[0x35] {b_OOOOO,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_OOOO_,
|
||||||
|
b_____O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x36] {b___OO_,
|
||||||
|
b__O___,
|
||||||
|
b_O____,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x37] {b_OOOOO,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x38] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x39] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b__OO__,
|
||||||
|
b______},
|
||||||
|
[0x3a] {b______,
|
||||||
|
b__OO__,
|
||||||
|
b__OO__,
|
||||||
|
b______,
|
||||||
|
b__OO__,
|
||||||
|
b__OO__,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x3b] {b______,
|
||||||
|
b__OO__,
|
||||||
|
b__OO__,
|
||||||
|
b______,
|
||||||
|
b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x3c] {b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_O____,
|
||||||
|
b__O___,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b______},
|
||||||
|
[0x3d] {b______,
|
||||||
|
b______,
|
||||||
|
b_OOOOO,
|
||||||
|
b______,
|
||||||
|
b_OOOOO,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x3e] {b_O____,
|
||||||
|
b__O___,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_O____,
|
||||||
|
b______},
|
||||||
|
[0x3f] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x40] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_____O,
|
||||||
|
b__OO_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x41] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOOO,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x42] {b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b______},
|
||||||
|
[0x43] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x44] {b_OOO__,
|
||||||
|
b_O__O_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O__O_,
|
||||||
|
b_OOO__,
|
||||||
|
b______},
|
||||||
|
[0x45] {b_OOOOO,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x46] {b_OOOOO,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b______},
|
||||||
|
[0x47] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O____,
|
||||||
|
b_O_OOO,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b______},
|
||||||
|
[0x48] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOOO,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x49] {b__OOO_,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x4a] {b___OOO,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b_O__O_,
|
||||||
|
b__OO__,
|
||||||
|
b______},
|
||||||
|
[0x4b] {b_O___O,
|
||||||
|
b_O__O_,
|
||||||
|
b_O_O__,
|
||||||
|
b_OO___,
|
||||||
|
b_O_O__,
|
||||||
|
b_O__O_,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x4c] {b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x4d] {b_O___O,
|
||||||
|
b_OO_OO,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x4e] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OO__O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O__OO,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x4f] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x50] {b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b______},
|
||||||
|
[0x51] {b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O__O_,
|
||||||
|
b__OO_O,
|
||||||
|
b______},
|
||||||
|
[0x52] {b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O_O__,
|
||||||
|
b_O__O_,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x53] {b__OOOO,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b__OOO_,
|
||||||
|
b_____O,
|
||||||
|
b_____O,
|
||||||
|
b_OOOO_,
|
||||||
|
b______},
|
||||||
|
[0x54] {b_OOOOO,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x55] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x56] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x57] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b__O_O_,
|
||||||
|
b______},
|
||||||
|
[0x58] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b___O__,
|
||||||
|
b__O_O_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x59] {b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x5a] {b_OOOOO,
|
||||||
|
b_____O,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_O____,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x5b] {b__OOO_,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x5c] {b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b_OOOOO,
|
||||||
|
b___O__,
|
||||||
|
b_OOOOO,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x5d] {b__OOO_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x5e] {b___O__,
|
||||||
|
b__O_O_,
|
||||||
|
b_O___O,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x5f] {b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x60] {b__O___,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0x61] {b______,
|
||||||
|
b______,
|
||||||
|
b__OOO_,
|
||||||
|
b_____O,
|
||||||
|
b__OOOO,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b______},
|
||||||
|
[0x62] {b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O_OO_,
|
||||||
|
b_OO__O,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b______},
|
||||||
|
[0x63] {b______,
|
||||||
|
b______,
|
||||||
|
b__OOO_,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x64] {b_____O,
|
||||||
|
b_____O,
|
||||||
|
b_____O,
|
||||||
|
b__OO_O,
|
||||||
|
b_O__OO,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b______},
|
||||||
|
[0x65] {b______,
|
||||||
|
b______,
|
||||||
|
b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOOO,
|
||||||
|
b_O____,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x66] {b___OO_,
|
||||||
|
b__O__O,
|
||||||
|
b__O___,
|
||||||
|
b_OOO__,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x67] {b______,
|
||||||
|
b__OOOO,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b_____O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x68] {b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O_OO_,
|
||||||
|
b_OO__O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x69] {b___O__,
|
||||||
|
b______,
|
||||||
|
b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x6a] {b____O_,
|
||||||
|
b______,
|
||||||
|
b___OO_,
|
||||||
|
b____O_,
|
||||||
|
b____O_,
|
||||||
|
b_O__O_,
|
||||||
|
b__OO__,
|
||||||
|
b______},
|
||||||
|
[0x6b] {b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O__O,
|
||||||
|
b__O_O_,
|
||||||
|
b__OO__,
|
||||||
|
b__O_O_,
|
||||||
|
b__O__O,
|
||||||
|
b______},
|
||||||
|
[0x6c] {b__OO__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x6d] {b______,
|
||||||
|
b______,
|
||||||
|
b_OO_O_,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O_O_O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x6e] {b______,
|
||||||
|
b______,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x6f] {b______,
|
||||||
|
b______,
|
||||||
|
b__OOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x70] {b______,
|
||||||
|
b______,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O___O,
|
||||||
|
b_OOOO_,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b______},
|
||||||
|
[0x71] {b______,
|
||||||
|
b______,
|
||||||
|
b__OO_O,
|
||||||
|
b_O__OO,
|
||||||
|
b__OOOO,
|
||||||
|
b_____O,
|
||||||
|
b_____O,
|
||||||
|
b______},
|
||||||
|
[0x72] {b______,
|
||||||
|
b______,
|
||||||
|
b_O_OO_,
|
||||||
|
b_OO__O,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b_O____,
|
||||||
|
b______},
|
||||||
|
[0x73] {b______,
|
||||||
|
b______,
|
||||||
|
b__OOO_,
|
||||||
|
b_O____,
|
||||||
|
b__OOO_,
|
||||||
|
b_____O,
|
||||||
|
b_OOOO_,
|
||||||
|
b______},
|
||||||
|
[0x74] {b__O___,
|
||||||
|
b_OOO__,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O___,
|
||||||
|
b__O__O,
|
||||||
|
b___OO_,
|
||||||
|
b______},
|
||||||
|
[0x75] {b______,
|
||||||
|
b______,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O__OO,
|
||||||
|
b__OO_O,
|
||||||
|
b______},
|
||||||
|
[0x76] {b______,
|
||||||
|
b______,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x77] {b______,
|
||||||
|
b______,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b_O_O_O,
|
||||||
|
b__O_O_,
|
||||||
|
b______},
|
||||||
|
[0x78] {b______,
|
||||||
|
b______,
|
||||||
|
b_O___O,
|
||||||
|
b__O_O_,
|
||||||
|
b___O__,
|
||||||
|
b__O_O_,
|
||||||
|
b_O___O,
|
||||||
|
b______},
|
||||||
|
[0x79] {b______,
|
||||||
|
b______,
|
||||||
|
b_O___O,
|
||||||
|
b_O___O,
|
||||||
|
b__OOOO,
|
||||||
|
b_____O,
|
||||||
|
b__OOO_,
|
||||||
|
b______},
|
||||||
|
[0x7a] {b______,
|
||||||
|
b______,
|
||||||
|
b_OOOOO,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_OOOOO,
|
||||||
|
b______},
|
||||||
|
[0x7b] {b____O_,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b______},
|
||||||
|
[0x7c] {b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b______},
|
||||||
|
[0x7d] {b__O___,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b______},
|
||||||
|
[0x7e] {b______,
|
||||||
|
b___O__,
|
||||||
|
b____O_,
|
||||||
|
b_OOOOO,
|
||||||
|
b____O_,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
|
||||||
|
[0x7f] {b______,
|
||||||
|
b___O__,
|
||||||
|
b__O___,
|
||||||
|
b_OOOOO,
|
||||||
|
b__O___,
|
||||||
|
b___O__,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0xb0] {b__OOO_,
|
||||||
|
b__O_O_,
|
||||||
|
b__OOO_,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______,
|
||||||
|
b______},
|
||||||
|
[0xff] {bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO,
|
||||||
|
bOOOOOO},
|
||||||
|
};
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
#ifndef I2500VFDFM_H
|
||||||
|
#define I2500VFDFM_H
|
||||||
|
|
||||||
|
unsigned char i2500vfd_fontmap[256][8];
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user