Author Topic: 5x7 or 7x9 dot matrix font files in C/C++?  (Read 5377 times)

0 Members and 1 Guest are viewing this topic.

Offline IDEngineerTopic starter

  • Super Contributor
  • ***
  • Posts: 1926
  • Country: us
5x7 or 7x9 dot matrix font files in C/C++?
« on: January 17, 2022, 12:47:05 am »
I'm preparing to experiment with using an SPI -interfaced OLED display on a handheld project. I'll be writing ASCII characters to it. Years ago I authored dot matrix fonts for the printer company I was working for, and even wrote a DOS based tool to ease their creation, editing, and generation as C arrays.

Sadly those resources are long in the past. But OLED and LCD dot matrix displays are still common. Some controller chips have fonts in them, but these do not so I will be writing the pixels directly.

I cannot be the first person to recently need dot matrix fonts for embedded systems. But all I can find online are TrueType fonts that "look like retro dot matrix printers!".

Anyone know of some resources out there? Thanks!
 

Online mariush

  • Super Contributor
  • ***
  • Posts: 5026
  • Country: ro
  • .
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #1 on: January 17, 2022, 01:00:38 am »
Check out  https://www.dafont.com/

Click on the  Pixel / Bitmap https://www.dafont.com/bitmap.php   or Techno/LCD  https://www.dafont.com/theme.php?cat=302 or Basic / Fixed width

From there you can filter to get open source fonts or fonts with permissive licenses
 

Offline Cerebus

  • Super Contributor
  • ***
  • Posts: 10576
  • Country: gb
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #2 on: January 17, 2022, 02:20:10 am »
Ask and it shall be given unto you. From some code I wrote to drive an LED matrix display:


Code: [Select]
// standard ASCII 5x7 font

// Each five successive bytes represent the 5 columns.
// i.e. the character represented by N starts at offset 5*N

// Least significant bit in each column is the physically highest pixel (top line).
// The spare 8th bit has been filled in on some characters (but not necessarily all characters that might need it)
// to provide slightly better descenders on a 5x8 display.


static const uint8_t font[] = {
0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
0x18, 0x3C, 0x7E, 0x3C, 0x18,
0x1C, 0x57, 0x7D, 0x57, 0x1C,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
0x00, 0x18, 0x3C, 0x18, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
0x00, 0x18, 0x24, 0x18, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
0x30, 0x48, 0x3A, 0x06, 0x0E,
0x26, 0x29, 0x79, 0x29, 0x26,
0x40, 0x7F, 0x05, 0x05, 0x07,
0x40, 0x7F, 0x05, 0x25, 0x3F,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
0x7F, 0x3E, 0x1C, 0x1C, 0x08,
0x08, 0x1C, 0x1C, 0x3E, 0x7F,
0x14, 0x22, 0x7F, 0x22, 0x14,
0x5F, 0x5F, 0x00, 0x5F, 0x5F,
0x06, 0x09, 0x7F, 0x01, 0x7F,
0x00, 0x66, 0x89, 0x95, 0x6A,
0x60, 0x60, 0x60, 0x60, 0x60,
0x94, 0xA2, 0xFF, 0xA2, 0x94,
0x08, 0x04, 0x7E, 0x04, 0x08,
0x10, 0x20, 0x7E, 0x20, 0x10,
0x08, 0x08, 0x2A, 0x1C, 0x08,
0x08, 0x1C, 0x2A, 0x08, 0x08,
0x1E, 0x10, 0x10, 0x10, 0x10,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
0x30, 0x38, 0x3E, 0x38, 0x30,
0x06, 0x0E, 0x3E, 0x0E, 0x06,
0x00, 0x00, 0x00, 0x00, 0x00,   // Space
0x00, 0x00, 0x5F, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14,
0x24, 0x2A, 0x7F, 0x2A, 0x12,
0x23, 0x13, 0x08, 0x64, 0x62,
0x36, 0x49, 0x56, 0x20, 0x50,
0x00, 0x08, 0x07, 0x03, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
0x08, 0x08, 0x3E, 0x08, 0x08,
0x00, 0x80, 0x70, 0x30, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08,
0x00, 0x00, 0x60, 0x60, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02,
0x3E, 0x51, 0x49, 0x45, 0x3E,
0x00, 0x42, 0x7F, 0x40, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46,
0x21, 0x41, 0x49, 0x4D, 0x33,
0x18, 0x14, 0x12, 0x7F, 0x10,
0x27, 0x45, 0x45, 0x45, 0x39,
0x3C, 0x4A, 0x49, 0x49, 0x31,
0x41, 0x21, 0x11, 0x09, 0x07,
0x36, 0x49, 0x49, 0x49, 0x36,
0x46, 0x49, 0x49, 0x29, 0x1E,
0x00, 0x00, 0x14, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41,
0x14, 0x14, 0x14, 0x14, 0x14,
0x00, 0x41, 0x22, 0x14, 0x08,
0x02, 0x01, 0x59, 0x09, 0x06,
0x3E, 0x41, 0x5D, 0x59, 0x4E,
0x7C, 0x12, 0x11, 0x12, 0x7C,
0x7F, 0x49, 0x49, 0x49, 0x36,
0x3E, 0x41, 0x41, 0x41, 0x22,
0x7F, 0x41, 0x41, 0x41, 0x3E,
0x7F, 0x49, 0x49, 0x49, 0x41,
0x7F, 0x09, 0x09, 0x09, 0x01,
0x3E, 0x41, 0x41, 0x51, 0x73,
0x7F, 0x08, 0x08, 0x08, 0x7F,
0x00, 0x41, 0x7F, 0x41, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01,
0x7F, 0x08, 0x14, 0x22, 0x41,
0x7F, 0x40, 0x40, 0x40, 0x40,
0x7F, 0x02, 0x1C, 0x02, 0x7F,
0x7F, 0x04, 0x08, 0x10, 0x7F,
0x3E, 0x41, 0x41, 0x41, 0x3E,
0x7F, 0x09, 0x09, 0x09, 0x06,
0x3E, 0x41, 0x51, 0x21, 0x5E,
0x7F, 0x09, 0x19, 0x29, 0x46,
0x26, 0x49, 0x49, 0x49, 0x32,
0x03, 0x01, 0x7F, 0x01, 0x03,
0x3F, 0x40, 0x40, 0x40, 0x3F,
0x1F, 0x20, 0x40, 0x20, 0x1F,
0x3F, 0x40, 0x38, 0x40, 0x3F,
0x63, 0x14, 0x08, 0x14, 0x63,
0x03, 0x04, 0x78, 0x04, 0x03,
0x61, 0x59, 0x49, 0x4D, 0x43,
0x00, 0x7F, 0x41, 0x41, 0x41,
0x02, 0x04, 0x08, 0x10, 0x20,
0x00, 0x41, 0x41, 0x41, 0x7F,
0x04, 0x02, 0x01, 0x02, 0x04,
0x40, 0x40, 0x40, 0x40, 0x40,
0x00, 0x03, 0x07, 0x08, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40,
0x7F, 0x28, 0x44, 0x44, 0x38,
0x38, 0x44, 0x44, 0x44, 0x28,
0x38, 0x44, 0x44, 0x28, 0x7F,
0x38, 0x54, 0x54, 0x54, 0x18,
0x00, 0x08, 0x7E, 0x09, 0x02,
0x18, 0xA4, 0xA4, 0x9C, 0x78,
0x7F, 0x08, 0x04, 0x04, 0x78,
0x00, 0x44, 0x7D, 0x40, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78,
0x7C, 0x08, 0x04, 0x04, 0x78,
0x38, 0x44, 0x44, 0x44, 0x38,
0xFC, 0x18, 0x24, 0x24, 0x18,
0x18, 0x24, 0x24, 0x18, 0xFC,
0x7C, 0x08, 0x04, 0x04, 0x08,
0x48, 0x54, 0x54, 0x54, 0x24,
0x04, 0x04, 0x3F, 0x44, 0x24,
0x3C, 0x40, 0x40, 0x20, 0x7C,
0x1C, 0x20, 0x40, 0x20, 0x1C,
0x3C, 0x40, 0x30, 0x40, 0x3C,
0x44, 0x28, 0x10, 0x28, 0x44,
0x4C, 0x90, 0x90, 0x90, 0x7C,
0x44, 0x64, 0x54, 0x4C, 0x44,
0x00, 0x08, 0x36, 0x41, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02,
0x3C, 0x26, 0x23, 0x26, 0x3C,
0x1E, 0xA1, 0xA1, 0x61, 0x12,
0x3A, 0x40, 0x40, 0x20, 0x7A,
0x38, 0x54, 0x54, 0x55, 0x59,
0x21, 0x55, 0x55, 0x79, 0x41,
0x21, 0x54, 0x54, 0x78, 0x41,
0x21, 0x55, 0x54, 0x78, 0x40,
0x20, 0x54, 0x55, 0x79, 0x40,
0x0C, 0x1E, 0x52, 0x72, 0x12,
0x39, 0x55, 0x55, 0x55, 0x59,
0x39, 0x54, 0x54, 0x54, 0x59,
0x39, 0x55, 0x54, 0x54, 0x58,
0x00, 0x00, 0x45, 0x7C, 0x41,
0x00, 0x02, 0x45, 0x7D, 0x42,
0x00, 0x01, 0x45, 0x7C, 0x40,
0xF0, 0x29, 0x24, 0x29, 0xF0,
0xF0, 0x28, 0x25, 0x28, 0xF0,
0x7C, 0x54, 0x55, 0x45, 0x00,
0x20, 0x54, 0x54, 0x7C, 0x54,
0x7C, 0x0A, 0x09, 0x7F, 0x49,
0x32, 0x49, 0x49, 0x49, 0x32,
0x32, 0x48, 0x48, 0x48, 0x32,
0x32, 0x4A, 0x48, 0x48, 0x30,
0x3A, 0x41, 0x41, 0x21, 0x7A,
0x3A, 0x42, 0x40, 0x20, 0x78,
0x00, 0x9D, 0xA0, 0xA0, 0x7D,
0x39, 0x44, 0x44, 0x44, 0x39,
0x3D, 0x40, 0x40, 0x40, 0x3D,
0x3C, 0x24, 0xFF, 0x24, 0x24,
0x48, 0x7E, 0x49, 0x43, 0x66,
0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
0xFF, 0x09, 0x29, 0xF6, 0x20,
0xC0, 0x88, 0x7E, 0x09, 0x03,
0x20, 0x54, 0x54, 0x79, 0x41,
0x00, 0x00, 0x44, 0x7D, 0x41,
0x30, 0x48, 0x48, 0x4A, 0x32,
0x38, 0x40, 0x40, 0x22, 0x7A,
0x00, 0x7A, 0x0A, 0x0A, 0x72,
0x7D, 0x0D, 0x19, 0x31, 0x7D,
0x26, 0x29, 0x29, 0x2F, 0x28,
0x26, 0x29, 0x29, 0x29, 0x26,
0x30, 0x48, 0x4D, 0x40, 0x20,
0x38, 0x08, 0x08, 0x08, 0x08,
0x08, 0x08, 0x08, 0x08, 0x38,
0x2F, 0x10, 0xC8, 0xAC, 0xBA,
0x2F, 0x10, 0x28, 0x34, 0xFA,
0x00, 0x00, 0x7B, 0x00, 0x00,
0x08, 0x14, 0x2A, 0x14, 0x22,
0x22, 0x14, 0x2A, 0x14, 0x08,
0xAA, 0x00, 0x55, 0x00, 0xAA,
0xAA, 0x55, 0xAA, 0x55, 0xAA,
0x00, 0x00, 0x00, 0xFF, 0x00,
0x10, 0x10, 0x10, 0xFF, 0x00,
0x14, 0x14, 0x14, 0xFF, 0x00,
0x10, 0x10, 0xFF, 0x00, 0xFF,
0x10, 0x10, 0xF0, 0x10, 0xF0,
0x14, 0x14, 0x14, 0xFC, 0x00,
0x14, 0x14, 0xF7, 0x00, 0xFF,
0x00, 0x00, 0xFF, 0x00, 0xFF,
0x14, 0x14, 0xF4, 0x04, 0xFC,
0x14, 0x14, 0x17, 0x10, 0x1F,
0x10, 0x10, 0x1F, 0x10, 0x1F,
0x14, 0x14, 0x14, 0x1F, 0x00,
0x10, 0x10, 0x10, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x1F, 0x10,
0x10, 0x10, 0x10, 0x1F, 0x10,
0x10, 0x10, 0x10, 0xF0, 0x10,
0x00, 0x00, 0x00, 0xFF, 0x10,
0x10, 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x10, 0xFF, 0x10,
0x00, 0x00, 0x00, 0xFF, 0x14,
0x00, 0x00, 0xFF, 0x00, 0xFF,
0x00, 0x00, 0x1F, 0x10, 0x17,
0x00, 0x00, 0xFC, 0x04, 0xF4,
0x14, 0x14, 0x17, 0x10, 0x17,
0x14, 0x14, 0xF4, 0x04, 0xF4,
0x00, 0x00, 0xFF, 0x00, 0xF7,
0x14, 0x14, 0x14, 0x14, 0x14,
0x14, 0x14, 0xF7, 0x00, 0xF7,
0x14, 0x14, 0x14, 0x17, 0x14,
0x10, 0x10, 0x1F, 0x10, 0x1F,
0x14, 0x14, 0x14, 0xF4, 0x14,
0x10, 0x10, 0xF0, 0x10, 0xF0,
0x00, 0x00, 0x1F, 0x10, 0x1F,
0x00, 0x00, 0x00, 0x1F, 0x14,
0x00, 0x00, 0x00, 0xFC, 0x14,
0x00, 0x00, 0xF0, 0x10, 0xF0,
0x10, 0x10, 0xFF, 0x10, 0xFF,
0x14, 0x14, 0x14, 0xFF, 0x14,
0x10, 0x10, 0x10, 0x1F, 0x00,
0x00, 0x00, 0x00, 0xF0, 0x10,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
0xFF, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0xFF,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0x38, 0x44, 0x44, 0x38, 0x44,
0x7C, 0x2A, 0x2A, 0x3E, 0x14,
0x7E, 0x02, 0x02, 0x06, 0x06,
0x02, 0x7E, 0x02, 0x7E, 0x02,
0x63, 0x55, 0x49, 0x41, 0x63,
0x38, 0x44, 0x44, 0x3C, 0x04,
0x40, 0x7E, 0x20, 0x1E, 0x20,
0x06, 0x02, 0x7E, 0x02, 0x02,
0x99, 0xA5, 0xE7, 0xA5, 0x99,
0x1C, 0x2A, 0x49, 0x2A, 0x1C,
0x4C, 0x72, 0x01, 0x72, 0x4C,
0x30, 0x4A, 0x4D, 0x4D, 0x30,
0x30, 0x48, 0x78, 0x48, 0x30,
0xBC, 0x62, 0x5A, 0x46, 0x3D,
0x3E, 0x49, 0x49, 0x49, 0x00,
0x7E, 0x01, 0x01, 0x01, 0x7E,
0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
0x44, 0x44, 0x5F, 0x44, 0x44,
0x40, 0x51, 0x4A, 0x44, 0x40,
0x40, 0x44, 0x4A, 0x51, 0x40,
0x00, 0x00, 0xFF, 0x01, 0x03,
0xE0, 0x80, 0xFF, 0x00, 0x00,
0x08, 0x08, 0x6B, 0x6B, 0x08,
0x36, 0x12, 0x36, 0x24, 0x36,
0x06, 0x0F, 0x09, 0x0F, 0x06,
0x00, 0x00, 0x18, 0x18, 0x00,
0x00, 0x00, 0x10, 0x10, 0x00,
0x30, 0x40, 0xFF, 0x01, 0x01,
0x00, 0x1F, 0x01, 0x01, 0x1E,
0x00, 0x19, 0x1D, 0x17, 0x12,
0x00, 0x3C, 0x3C, 0x3C, 0x3C,
0x00, 0x00, 0x00, 0x00, 0x00,
};

Anybody got a syringe I can use to squeeze the magic smoke back into this?
 

Offline CaptDon

  • Super Contributor
  • ***
  • Posts: 1740
  • Country: is
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #3 on: January 17, 2022, 02:31:41 am »
Anyone remember using the 2513 character generator once the standard of video terminals.
Collector and repairer of vintage and not so vintage electronic gadgets and test equipment. What's the difference between a pizza and a musician? A pizza can feed a family of four!! Classically trained guitarist. Sound engineer.
 

Online oPossum

  • Super Contributor
  • ***
  • Posts: 1417
  • Country: us
  • Very dangerous - may attack at any time
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #4 on: January 17, 2022, 02:32:17 am »
HD44780 font
Code: [Select]
// Hitachi HD44780A00 32 to 127
static uint8_t const __code font_A00[96][5] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // 20  32
{ 0x00, 0x00, 0x4F, 0x00, 0x00 },  // 21  33  !
{ 0x00, 0x07, 0x00, 0x07, 0x00 },  // 22  34  "
{ 0x14, 0x7F, 0x14, 0x7F, 0x14 },  // 23  35  #
{ 0x24, 0x2A, 0x7F, 0x2A, 0x12 },  // 24  36  $
{ 0x23, 0x13, 0x08, 0x64, 0x62 },  // 25  37  %
{ 0x36, 0x49, 0x55, 0x22, 0x50 },  // 26  38  &
{ 0x00, 0x05, 0x03, 0x00, 0x00 },  // 27  39  '
{ 0x00, 0x1C, 0x22, 0x41, 0x00 },  // 28  40  (
{ 0x00, 0x41, 0x22, 0x1C, 0x00 },  // 29  41  )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 },  // 2A  42  *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 },  // 2B  43  +
{ 0x00, 0x50, 0x30, 0x00, 0x00 },  // 2C  44  ,
{ 0x08, 0x08, 0x08, 0x08, 0x08 },  // 2D  45  -
{ 0x00, 0x60, 0x60, 0x00, 0x00 },  // 2E  46  .
{ 0x20, 0x10, 0x08, 0x04, 0x02 },  // 2F  47  /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E },  // 30  48  0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 },  // 31  49  1
{ 0x42, 0x61, 0x51, 0x49, 0x46 },  // 32  50  2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 },  // 33  51  3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 },  // 34  52  4
{ 0x27, 0x45, 0x45, 0x45, 0x39 },  // 35  53  5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 },  // 36  54  6
{ 0x03, 0x01, 0x71, 0x09, 0x07 },  // 37  55  7
{ 0x36, 0x49, 0x49, 0x49, 0x36 },  // 38  56  8
{ 0x06, 0x49, 0x49, 0x29, 0x1E },  // 39  57  9
{ 0x00, 0x36, 0x36, 0x00, 0x00 },  // 3A  58  :
{ 0x00, 0x56, 0x36, 0x00, 0x00 },  // 3B  59  ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 },  // 3C  60  <
{ 0x14, 0x14, 0x14, 0x14, 0x14 },  // 3D  61  =
{ 0x00, 0x41, 0x22, 0x14, 0x08 },  // 3E  62  >
{ 0x02, 0x01, 0x51, 0x09, 0x06 },  // 3F  63  ?
{ 0x32, 0x49, 0x79, 0x41, 0x3E },  // 40  64  @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E },  // 41  65  A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 },  // 42  66  B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 },  // 43  67  C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C },  // 44  68  D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 },  // 45  69  E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 },  // 46  70  F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A },  // 47  71  G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F },  // 48  72  H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 },  // 49  73  I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 },  // 4A  74  J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 },  // 4B  75  K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 },  // 4C  76  L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F },  // 4D  77  M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F },  // 4E  78  N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E },  // 4F  79  O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 },  // 50  80  P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E },  // 51  81  Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 },  // 52  82  R
{ 0x46, 0x49, 0x49, 0x49, 0x31 },  // 53  83  S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 },  // 54  84  T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F },  // 55  85  U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F },  // 56  86  V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F },  // 57  87  W
{ 0x63, 0x14, 0x08, 0x14, 0x63 },  // 58  88  X
{ 0x07, 0x08, 0x70, 0x08, 0x07 },  // 59  89  Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 },  // 5A  90  Z
{ 0x7F, 0x41, 0x41, 0x00, 0x00 },  // 5B  91  [
{ 0x15, 0x16, 0x7C, 0x16, 0x15 },  // 5C  92  '\'
{ 0x00, 0x41, 0x41, 0x7F, 0x00 },  // 5D  93  ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 },  // 5E  94  ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 },  // 5F  95  _
{ 0x00, 0x01, 0x02, 0x04, 0x00 },  // 60  96  `
{ 0x20, 0x54, 0x54, 0x54, 0x78 },  // 61  97  a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 },  // 62  98  b
{ 0x38, 0x44, 0x44, 0x44, 0x20 },  // 63  99  c
{ 0x38, 0x44, 0x44, 0x48, 0x7F },  // 64 100  d
{ 0x38, 0x54, 0x54, 0x54, 0x18 },  // 65 101  e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 },  // 66 102  f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E },  // 67 103  g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 },  // 68 104  h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 },  // 69 105  i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 },  // 6A 106  j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 },  // 6B 107  k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 },  // 6C 108  l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 },  // 6D 109  m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 },  // 6E 110  n
{ 0x38, 0x44, 0x44, 0x44, 0x38 },  // 6F 111  o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 },  // 70 112  p
{ 0x08, 0x14, 0x14, 0x18, 0x7C },  // 71 113  q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 },  // 72 114  r
{ 0x48, 0x54, 0x54, 0x54, 0x20 },  // 73 115  s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 },  // 74 116  t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C },  // 75 117  u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C },  // 76 118  v
{ 0x3C, 0x40, 0x38, 0x40, 0x3C },  // 77 119  w
{ 0x44, 0x28, 0x10, 0x28, 0x44 },  // 78 120  x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C },  // 79 121  y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 },  // 7A 122  z
{ 0x00, 0x08, 0x36, 0x41, 0x00 },  // 7B 123  {
{ 0x00, 0x00, 0x7F, 0x00, 0x00 },  // 7C 124  |
{ 0x00, 0x41, 0x36, 0x08, 0x00 },  // 7D 125  }
{ 0x08, 0x08, 0x2A, 0x1C, 0x08 },  // 7E 126  ~
{ 0x08, 0x1C, 0x2A, 0x08, 0x08 }   // 7F 127
};

// Hitachi HD44780A00 160 to 255
static uint8_t const __code font_A00h[96][5] = {
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // A0 160
{ 0x70, 0x50, 0x70, 0x00, 0x00 },  // A1 161
{ 0x00, 0x00, 0x0F, 0x01, 0x01 },  // A2 162
{ 0x40, 0x40, 0x78, 0x00, 0x00 },  // A3 163
{ 0x10, 0x20, 0x40, 0x00, 0x00 },  // A4 164
{ 0x00, 0x18, 0x18, 0x00, 0x00 },  // A5 165
{ 0x0A, 0x0A, 0x4A, 0x2A, 0x1E },  // A6 166
{ 0x04, 0x44, 0x34, 0x14, 0x0C },  // A7 167
{ 0x20, 0x10, 0x78, 0x04, 0x00 },  // A8 168
{ 0x18, 0x08, 0x4C, 0x48, 0x38 },  // A9 169
{ 0x44, 0x44, 0x7C, 0x44, 0x44 },  // AA 170
{ 0x48, 0x28, 0x18, 0x7C, 0x08 },  // AB 171
{ 0x08, 0x7C, 0x08, 0x28, 0x18 },  // AC 172
{ 0x40, 0x48, 0x48, 0x78, 0x40 },  // AD 173
{ 0x54, 0x54, 0x54, 0x7C, 0x00 },  // AE 174
{ 0x18, 0x00, 0x58, 0x40, 0x38 },  // AF 175
{ 0x08, 0x08, 0x08, 0x08, 0x08 },  // B0 176
{ 0x01, 0x41, 0x3D, 0x09, 0x07 },  // B1 177
{ 0x10, 0x08, 0x7C, 0x02, 0x01 },  // B2 178
{ 0x0E, 0x02, 0x43, 0x22, 0x1E },  // B3 179
{ 0x42, 0x42, 0x7E, 0x42, 0x42 },  // B4 180
{ 0x22, 0x12, 0x0A, 0x7F, 0x02 },  // B5 181
{ 0x42, 0x3F, 0x02, 0x42, 0x3E },  // B6 182
{ 0x0A, 0x0A, 0x7F, 0x0A, 0x0A },  // B7 183
{ 0x08, 0x46, 0x42, 0x22, 0x1E },  // B8 184
{ 0x04, 0x03, 0x42, 0x3E, 0x02 },  // B9 185
{ 0x42, 0x42, 0x42, 0x42, 0x7E },  // BA 186
{ 0x02, 0x4F, 0x22, 0x1F, 0x02 },  // BB 187
{ 0x4A, 0x4A, 0x40, 0x20, 0x1C },  // BC 188
{ 0x42, 0x22, 0x12, 0x2A, 0x46 },  // BD 189
{ 0x02, 0x3F, 0x42, 0x4A, 0x46 },  // BE 190
{ 0x06, 0x48, 0x40, 0x20, 0x1E },  // BF 191
{ 0x08, 0x46, 0x4A, 0x32, 0x1E },  // C0 192
{ 0x0A, 0x4A, 0x3E, 0x09, 0x08 },  // C1 193
{ 0x0E, 0x00, 0x4E, 0x20, 0x1E },  // C2 194
{ 0x04, 0x45, 0x3D, 0x05, 0x04 },  // C3 195
{ 0x00, 0x7F, 0x08, 0x10, 0x00 },  // C4 196
{ 0x44, 0x24, 0x1F, 0x04, 0x04 },  // C5 197
{ 0x40, 0x42, 0x42, 0x42, 0x40 },  // C6 198
{ 0x42, 0x2A, 0x12, 0x2A, 0x06 },  // C7 199
{ 0x22, 0x12, 0x7B, 0x16, 0x22 },  // C8 200
{ 0x00, 0x40, 0x20, 0x1F, 0x00 },  // C9 201
{ 0x78, 0x00, 0x02, 0x04, 0x78 },  // CA 202
{ 0x3F, 0x44, 0x44, 0x44, 0x44 },  // CB 203
{ 0x02, 0x42, 0x42, 0x22, 0x1E },  // CC 204
{ 0x04, 0x02, 0x04, 0x08, 0x30 },  // CD 205
{ 0x32, 0x02, 0x7F, 0x02, 0x32 },  // CE 206
{ 0x02, 0x12, 0x22, 0x52, 0x0E },  // CF 207
{ 0x00, 0x2A, 0x2A, 0x2A, 0x40 },  // D0 208
{ 0x38, 0x24, 0x22, 0x20, 0x70 },  // D1 209
{ 0x40, 0x28, 0x10, 0x28, 0x06 },  // D2 210
{ 0x0A, 0x3E, 0x4A, 0x4A, 0x4A },  // D3 211
{ 0x04, 0x7F, 0x04, 0x14, 0x0C },  // D4 212
{ 0x40, 0x42, 0x42, 0x7E, 0x40 },  // D5 213
{ 0x4A, 0x4A, 0x4A, 0x4A, 0x7E },  // D6 214
{ 0x04, 0x05, 0x45, 0x25, 0x1C },  // D7 215
{ 0x0F, 0x40, 0x20, 0x1F, 0x00 },  // D8 216
{ 0x7C, 0x00, 0x7E, 0x40, 0x30 },  // D9 217
{ 0x7E, 0x40, 0x20, 0x10, 0x08 },  // DA 218
{ 0x7E, 0x42, 0x42, 0x42, 0x7E },  // DB 219
{ 0x0E, 0x02, 0x42, 0x22, 0x1E },  // DC 220
{ 0x42, 0x42, 0x40, 0x20, 0x18 },  // DD 221
{ 0x02, 0x04, 0x01, 0x02, 0x00 },  // DE 222
{ 0x07, 0x05, 0x07, 0x00, 0x00 },  // DF 223
{ 0x38, 0x44, 0x48, 0x30, 0x4C },  // E0 224
{ 0x20, 0x55, 0x54, 0x55, 0x78 },  // E1 225
{ 0xF8, 0x54, 0x54, 0x54, 0x28 },  // E2 226
{ 0x28, 0x54, 0x54, 0x44, 0x20 },  // E3 227
{ 0xFC, 0x40, 0x40, 0x20, 0x7C },  // E4 228
{ 0x38, 0x44, 0x4C, 0x54, 0x24 },  // E5 229
{ 0xF0, 0x48, 0x44, 0x44, 0x38 },  // E6 230
{ 0x38, 0x44, 0x44, 0x44, 0xFC },  // E7 231
{ 0x20, 0x40, 0x3C, 0x04, 0x04 },  // E8 232
{ 0x04, 0x04, 0x00, 0x0E, 0x00 },  // E9 233
{ 0x00, 0x00, 0x04, 0xFD, 0x00 },  // EA 234
{ 0x0A, 0x04, 0x0A, 0x00, 0x00 },  // EB 235
{ 0x18, 0x24, 0x7E, 0x24, 0x10 },  // EC 236
{ 0x14, 0x7F, 0x54, 0x40, 0x40 },  // ED 237
{ 0x7C, 0x09, 0x05, 0x05, 0x78 },  // EE 238
{ 0x38, 0x45, 0x44, 0x45, 0x38 },  // EF 239
{ 0xFC, 0x48, 0x44, 0x44, 0x38 },  // F0 240
{ 0x38, 0x44, 0x44, 0x48, 0xFC },  // F1 241
{ 0x3C, 0x4A, 0x4A, 0x4A, 0x3C },  // F2 242
{ 0x30, 0x28, 0x10, 0x28, 0x18 },  // F3 243
{ 0x58, 0x64, 0x04, 0x64, 0x58 },  // F4 244
{ 0x7C, 0x81, 0x80, 0x41, 0xFC },  // F5 245
{ 0x63, 0x55, 0x49, 0x41, 0x41 },  // F6 246
{ 0x44, 0x3C, 0x04, 0x7C, 0x44 },  // F7 247
{ 0x45, 0x29, 0x11, 0x29, 0x45 },  // F8 248
{ 0x3C, 0x40, 0x40, 0x40, 0xFC },  // F9 249
{ 0x14, 0x14, 0x7C, 0x14, 0x12 },  // FA 250
{ 0x44, 0x3C, 0x14, 0x14, 0x74 },  // FB 251
{ 0x7C, 0x14, 0x1C, 0x14, 0x7C },  // FC 252
{ 0x08, 0x08, 0x2A, 0x08, 0x08 },  // FD 253
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // FE 254
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },  // FF 255
};

// Hitachi HD44780A02
static uint8_t const __code font_A02[240][5] = {
{ 0x00, 0xFE, 0x7C, 0x38, 0x10 },  // 10  16
{ 0x10, 0x38, 0x7C, 0xFE, 0x00 },  // 11  17
{ 0x0C, 0x0A, 0x00, 0x0C, 0x0A },  // 12  18
{ 0x0A, 0x06, 0x00, 0x0A, 0x06 },  // 13  19
{ 0x88, 0xCC, 0xEE, 0xCC, 0x88 },  // 14  20
{ 0x22, 0x66, 0xEE, 0x66, 0x22 },  // 15  21
{ 0x38, 0x7C, 0x7C, 0x7C, 0x38 },  // 16  22
{ 0x20, 0x70, 0xA8, 0x20, 0x3E },  // 17  23
{ 0x08, 0x04, 0xFE, 0x04, 0x08 },  // 18  24
{ 0x20, 0x40, 0xFE, 0x40, 0x20 },  // 19  25
{ 0x10, 0x10, 0x54, 0x38, 0x10 },  // 1A  26
{ 0x10, 0x38, 0x54, 0x10, 0x10 },  // 1B  27
{ 0x80, 0x88, 0x94, 0xA2, 0x80 },  // 1C  28
{ 0x80, 0xA2, 0x94, 0x88, 0x80 },  // 1D  29
{ 0x40, 0x70, 0x7C, 0x70, 0x40 },  // 1E  30
{ 0x04, 0x1C, 0x7C, 0x1C, 0x04 },  // 1F  31
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // 20  32
{ 0x00, 0x00, 0x9E, 0x00, 0x00 },  // 21  33  !
{ 0x00, 0x0E, 0x00, 0x0E, 0x00 },  // 22  34  "
{ 0x28, 0xFE, 0x28, 0xFE, 0x28 },  // 23  35  #
{ 0x48, 0x54, 0xFE, 0x54, 0x24 },  // 24  36  $
{ 0x46, 0x26, 0x10, 0xC8, 0xC4 },  // 25  37  %
{ 0x6C, 0x92, 0xAA, 0x44, 0xA0 },  // 26  38  &
{ 0x00, 0x0A, 0x06, 0x00, 0x00 },  // 27  39  '
{ 0x00, 0x38, 0x44, 0x82, 0x00 },  // 28  40  (
{ 0x00, 0x82, 0x44, 0x38, 0x00 },  // 29  41  )
{ 0x28, 0x10, 0x7C, 0x10, 0x28 },  // 2A  42  *
{ 0x10, 0x10, 0x7C, 0x10, 0x10 },  // 2B  43  +
{ 0x00, 0xA0, 0x60, 0x00, 0x00 },  // 2C  44  ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 },  // 2D  45  -
{ 0x00, 0xC0, 0xC0, 0x00, 0x00 },  // 2E  46  .
{ 0x40, 0x20, 0x10, 0x08, 0x04 },  // 2F  47  /
{ 0x7C, 0xA2, 0x92, 0x8A, 0x7C },  // 30  48  0
{ 0x00, 0x84, 0xFE, 0x80, 0x00 },  // 31  49  1
{ 0x84, 0xC2, 0xA2, 0x92, 0x8C },  // 32  50  2
{ 0x42, 0x82, 0x8A, 0x96, 0x62 },  // 33  51  3
{ 0x30, 0x28, 0x24, 0xFE, 0x20 },  // 34  52  4
{ 0x4E, 0x8A, 0x8A, 0x8A, 0x72 },  // 35  53  5
{ 0x78, 0x94, 0x92, 0x92, 0x60 },  // 36  54  6
{ 0x06, 0x02, 0xE2, 0x12, 0x0E },  // 37  55  7
{ 0x6C, 0x92, 0x92, 0x92, 0x6C },  // 38  56  8
{ 0x0C, 0x92, 0x92, 0x52, 0x3C },  // 39  57  9
{ 0x00, 0x6C, 0x6C, 0x00, 0x00 },  // 3A  58  :
{ 0x00, 0xAC, 0x6C, 0x00, 0x00 },  // 3B  59  ;
{ 0x10, 0x28, 0x44, 0x82, 0x00 },  // 3C  60  <
{ 0x28, 0x28, 0x28, 0x28, 0x28 },  // 3D  61  =
{ 0x00, 0x82, 0x44, 0x28, 0x10 },  // 3E  62  >
{ 0x04, 0x02, 0xA2, 0x12, 0x0C },  // 3F  63  ?
{ 0x64, 0x92, 0xF2, 0x82, 0x7C },  // 40  64  @
{ 0xF8, 0x24, 0x22, 0x24, 0xF8 },  // 41  65  A
{ 0xFE, 0x92, 0x92, 0x92, 0x6C },  // 42  66  B
{ 0x7C, 0x82, 0x82, 0x82, 0x44 },  // 43  67  C
{ 0xFE, 0x82, 0x82, 0x44, 0x38 },  // 44  68  D
{ 0xFE, 0x92, 0x92, 0x92, 0x82 },  // 45  69  E
{ 0xFE, 0x12, 0x12, 0x12, 0x02 },  // 46  70  F
{ 0x7C, 0x82, 0x92, 0x92, 0xF4 },  // 47  71  G
{ 0xFE, 0x10, 0x10, 0x10, 0xFE },  // 48  72  H
{ 0x00, 0x82, 0xFE, 0x82, 0x00 },  // 49  73  I
{ 0x40, 0x80, 0x82, 0x7E, 0x02 },  // 4A  74  J
{ 0xFE, 0x10, 0x28, 0x44, 0x82 },  // 4B  75  K
{ 0xFE, 0x80, 0x80, 0x80, 0x80 },  // 4C  76  L
{ 0xFE, 0x04, 0x18, 0x04, 0xFE },  // 4D  77  M
{ 0xFE, 0x08, 0x10, 0x20, 0xFE },  // 4E  78  N
{ 0x7C, 0x82, 0x82, 0x82, 0x7C },  // 4F  79  O
{ 0xFE, 0x12, 0x12, 0x12, 0x0C },  // 50  80  P
{ 0x7C, 0x82, 0xA2, 0x42, 0xBC },  // 51  81  Q
{ 0xFE, 0x12, 0x32, 0x52, 0x8C },  // 52  82  R
{ 0x4C, 0x92, 0x92, 0x92, 0x64 },  // 53  83  S
{ 0x02, 0x02, 0xFE, 0x02, 0x02 },  // 54  84  T
{ 0x7E, 0x80, 0x80, 0x80, 0x7E },  // 55  85  U
{ 0x3E, 0x40, 0x80, 0x40, 0x3E },  // 56  86  V
{ 0x7E, 0x80, 0x70, 0x80, 0x7E },  // 57  87  W
{ 0xC6, 0x28, 0x10, 0x28, 0xC6 },  // 58  88  X
{ 0x0E, 0x10, 0xE0, 0x10, 0x0E },  // 59  89  Y
{ 0xC2, 0xA2, 0x92, 0x8A, 0x86 },  // 5A  90  Z
{ 0x00, 0xFE, 0x82, 0x82, 0x00 },  // 5B  91  [
{ 0x04, 0x08, 0x10, 0x20, 0x40 },  // 5C  92  '\'
{ 0x00, 0x82, 0x82, 0xFE, 0x00 },  // 5D  93  ]
{ 0x08, 0x04, 0x02, 0x04, 0x08 },  // 5E  94  ^
{ 0x80, 0x80, 0x80, 0x80, 0x80 },  // 5F  95  _
{ 0x00, 0x02, 0x04, 0x08, 0x00 },  // 60  96  `
{ 0x40, 0xA8, 0xA8, 0xA8, 0xF0 },  // 61  97  a
{ 0xFE, 0x90, 0x88, 0x88, 0x70 },  // 62  98  b
{ 0x70, 0x88, 0x88, 0x88, 0x40 },  // 63  99  c
{ 0x70, 0x88, 0x88, 0x90, 0xFE },  // 64 100  d
{ 0x70, 0xA8, 0xA8, 0xA8, 0x30 },  // 65 101  e
{ 0x10, 0xFC, 0x12, 0x02, 0x04 },  // 66 102  f
{ 0x10, 0xA8, 0xA8, 0xA8, 0x78 },  // 67 103  g
{ 0xFE, 0x10, 0x08, 0x08, 0xF0 },  // 68 104  h
{ 0x00, 0x90, 0xFA, 0x80, 0x00 },  // 69 105  i
{ 0x40, 0x80, 0x88, 0x7A, 0x00 },  // 6A 106  j
{ 0xFE, 0x20, 0x50, 0x88, 0x00 },  // 6B 107  k
{ 0x00, 0x82, 0xFE, 0x80, 0x00 },  // 6C 108  l
{ 0xF8, 0x08, 0xF0, 0x08, 0xF0 },  // 6D 109  m
{ 0xF8, 0x10, 0x08, 0x08, 0xF0 },  // 6E 110  n
{ 0x70, 0x88, 0x88, 0x88, 0x70 },  // 6F 111  o
{ 0xF8, 0x28, 0x28, 0x28, 0x10 },  // 70 112  p
{ 0x10, 0x28, 0x28, 0x30, 0xF8 },  // 71 113  q
{ 0xF8, 0x10, 0x08, 0x08, 0x10 },  // 72 114  r
{ 0x90, 0xA8, 0xA8, 0xA8, 0x40 },  // 73 115  s
{ 0x08, 0x7E, 0x88, 0x80, 0x40 },  // 74 116  t
{ 0x78, 0x80, 0x80, 0x40, 0xF8 },  // 75 117  u
{ 0x38, 0x40, 0x80, 0x40, 0x38 },  // 76 118  v
{ 0x78, 0x80, 0x60, 0x80, 0x78 },  // 77 119  w
{ 0x88, 0x50, 0x20, 0x50, 0x88 },  // 78 120  x
{ 0x18, 0xA0, 0xA0, 0xA0, 0x78 },  // 79 121  y
{ 0x88, 0xC8, 0xA8, 0x98, 0x88 },  // 7A 122  z
{ 0x00, 0x10, 0x6C, 0x82, 0x00 },  // 7B 123  {
{ 0x00, 0x00, 0xFE, 0x00, 0x00 },  // 7C 124  |
{ 0x00, 0x82, 0x6C, 0x10, 0x00 },  // 7D 125  }
{ 0x20, 0x10, 0x10, 0x20, 0x10 },  // 7E 126  ~
{ 0x78, 0x44, 0x42, 0x44, 0x78 },  // 7F 127
{ 0xFE, 0x92, 0x92, 0x92, 0x66 },  // 80 128
{ 0xF0, 0x29, 0x27, 0x21, 0xFF },  // 81 129
{ 0xEE, 0x10, 0xFE, 0x10, 0xEE },  // 82 130
{ 0x82, 0x82, 0x92, 0x92, 0x6C },  // 83 131
{ 0xFE, 0x20, 0x10, 0x08, 0xFE },  // 84 132
{ 0xFC, 0x41, 0x22, 0x11, 0xFC },  // 85 133
{ 0x40, 0x82, 0x7E, 0x02, 0xFE },  // 86 134
{ 0xFE, 0x02, 0x02, 0x02, 0xFE },  // 87 135
{ 0x8E, 0x50, 0x20, 0x10, 0x0E },  // 88 136
{ 0x7E, 0x40, 0x40, 0x40, 0xFE },  // 89 137
{ 0x0E, 0x10, 0x10, 0x10, 0xFE },  // 8A 138
{ 0xFC, 0x80, 0xFC, 0x80, 0xFC },  // 8B 139
{ 0x7E, 0x40, 0x7E, 0x40, 0xFE },  // 8C 140
{ 0x02, 0xFE, 0x90, 0x90, 0x60 },  // 8D 141
{ 0xFE, 0x90, 0x60, 0x00, 0xFE },  // 8E 142
{ 0x44, 0x92, 0x8A, 0x92, 0x7C },  // 8F 143
{ 0x70, 0x88, 0x90, 0x60, 0x98 },  // 90 144
{ 0xC0, 0xC0, 0xFE, 0x04, 0x18 },  // 91 145
{ 0xFE, 0x02, 0x02, 0x02, 0x06 },  // 92 146
{ 0x88, 0x78, 0x08, 0xF8, 0x88 },  // 93 147
{ 0xC6, 0xAA, 0x92, 0x82, 0x82 },  // 94 148
{ 0x70, 0x88, 0x88, 0x78, 0x08 },  // 95 149
{ 0x60, 0x60, 0x3F, 0xC5, 0xFE },  // 96 150
{ 0x10, 0x08, 0x78, 0x88, 0x04 },  // 97 151
{ 0x20, 0x3C, 0x7E, 0x3C, 0x20 },  // 98 152
{ 0x7C, 0x92, 0x92, 0x92, 0x7C },  // 99 153
{ 0xB8, 0xC4, 0x04, 0xC4, 0xB8 },  // 9A 154
{ 0x60, 0x94, 0x8A, 0x92, 0x64 },  // 9B 155
{ 0x30, 0x28, 0x10, 0x28, 0x18 },  // 9C 156
{ 0x38, 0x7C, 0xF8, 0x7C, 0x38 },  // 9D 157
{ 0x50, 0xA8, 0xA8, 0x88, 0x40 },  // 9E 158
{ 0xFC, 0x02, 0x02, 0x02, 0xFC },  // 9F 159
{ 0xFE, 0xFE, 0x00, 0xFE, 0xFE },  // A0 160
{ 0x00, 0x00, 0xF2, 0x00, 0x00 },  // A1 161
{ 0x38, 0x44, 0xFE, 0x44, 0x20 },  // A2 162
{ 0x90, 0x7C, 0x92, 0x82, 0x40 },  // A3 163
{ 0x44, 0x38, 0x28, 0x38, 0x44 },  // A4 164
{ 0x2A, 0x2C, 0xF8, 0x2C, 0x2A },  // A5 165
{ 0x00, 0x00, 0xEE, 0x00, 0x00 },  // A6 166
{ 0x40, 0x94, 0xAA, 0x52, 0x04 },  // A7 167
{ 0x50, 0x90, 0x7C, 0x12, 0x14 },  // A8 168
{ 0xFE, 0x82, 0xBA, 0x92, 0xFE },  // A9 169
{ 0x90, 0xAA, 0xAA, 0xAA, 0xBC },  // AA 170
{ 0x10, 0x28, 0x54, 0x28, 0x44 },  // AB 171
{ 0xFE, 0x10, 0x7C, 0x82, 0x7C },  // AC 172
{ 0x8C, 0x52, 0x32, 0x12, 0xFE },  // AD 173
{ 0xFE, 0x82, 0xCA, 0xA2, 0xFE },  // AE 174
{ 0x00, 0x0C, 0x0A, 0x00, 0x00 },  // AF 175
{ 0x0E, 0x11, 0x11, 0x0E, 0x00 },  // B0 176
{ 0x88, 0x88, 0xBE, 0x88, 0x88 },  // B1 177
{ 0x12, 0x19, 0x15, 0x12, 0x00 },  // B2 178
{ 0x11, 0x15, 0x15, 0x0A, 0x00 },  // B3 179
{ 0x7F, 0x05, 0x25, 0xF2, 0xA0 },  // B4 180
{ 0xFE, 0x20, 0x20, 0x10, 0x3E },  // B5 181
{ 0x0C, 0x12, 0x12, 0xFE, 0xFE },  // B6 182
{ 0x00, 0x30, 0x30, 0x00, 0x00 },  // B7 183
{ 0x70, 0x88, 0x60, 0x88, 0x70 },  // B8 184
{ 0x12, 0x1F, 0x10, 0x00, 0x00 },  // B9 185
{ 0x9C, 0xA2, 0xA2, 0xA2, 0x9C },  // BA 186
{ 0x44, 0x28, 0x54, 0x28, 0x10 },  // BB 187
{ 0x17, 0x68, 0x54, 0xFA, 0x41 },  // BC 188
{ 0x17, 0x08, 0x94, 0xCA, 0xB1 },  // BD 189
{ 0x15, 0x1F, 0x60, 0x50, 0xF8 },  // BE 190
{ 0x60, 0x90, 0x8A, 0x80, 0x40 },  // BF 191
{ 0xF0, 0x29, 0x26, 0x28, 0xF0 },  // C0 192
{ 0xF0, 0x28, 0x26, 0x29, 0xF0 },  // C1 193
{ 0xF0, 0x2A, 0x29, 0x2A, 0xF0 },  // C2 194
{ 0xF2, 0x29, 0x29, 0x2A, 0xF1 },  // C3 195
{ 0xF0, 0x29, 0x24, 0x29, 0xF0 },  // C4 196
{ 0xF0, 0x2A, 0x2D, 0x2A, 0xF0 },  // C5 197
{ 0xF8, 0x24, 0xFE, 0x92, 0x92 },  // C6 198
{ 0x1E, 0x21, 0xA1, 0xE1, 0x12 },  // C7 199
{ 0xF8, 0xA9, 0xAA, 0xA8, 0x88 },  // C8 200
{ 0xF8, 0xA8, 0xAA, 0xA9, 0x88 },  // C9 201
{ 0xF8, 0xAA, 0xA9, 0xAA, 0x88 },  // CA 202
{ 0xF8, 0xAA, 0xA8, 0xAA, 0x88 },  // CB 203
{ 0x00, 0x89, 0xFA, 0x88, 0x00 },  // CC 204
{ 0x00, 0x88, 0xFA, 0x89, 0x00 },  // CD 205
{ 0x00, 0x8A, 0xF9, 0x8A, 0x00 },  // CE 206
{ 0x00, 0x8A, 0xF8, 0x8A, 0x00 },  // CF 207
{ 0x10, 0xFE, 0x92, 0x82, 0x7C },  // D0 208
{ 0xFA, 0x11, 0x21, 0x42, 0xF9 },  // D1 209
{ 0x78, 0x85, 0x86, 0x84, 0x78 },  // D2 210
{ 0x78, 0x84, 0x86, 0x85, 0x78 },  // D3 211
{ 0x70, 0x8A, 0x89, 0x8A, 0x70 },  // D4 212
{ 0x72, 0x89, 0x89, 0x8A, 0x71 },  // D5 213
{ 0x78, 0x85, 0x84, 0x85, 0x78 },  // D6 214
{ 0x44, 0x28, 0x10, 0x28, 0x44 },  // D7 215
{ 0x10, 0xAA, 0xFE, 0xAA, 0x10 },  // D8 216
{ 0x7C, 0x81, 0x82, 0x80, 0x7C },  // D9 217
{ 0x7C, 0x80, 0x82, 0x81, 0x7C },  // DA 218
{ 0x78, 0x82, 0x81, 0x82, 0x78 },  // DB 219
{ 0x7C, 0x81, 0x80, 0x81, 0x7C },  // DC 220
{ 0x04, 0x08, 0xF2, 0x09, 0x04 },  // DD 221
{ 0x81, 0xFF, 0xA4, 0x24, 0x18 },  // DE 222
{ 0x80, 0x7C, 0x92, 0x92, 0x6C },  // DF 223
{ 0x40, 0xA9, 0xAA, 0xA8, 0xF0 },  // E0 224
{ 0x40, 0xA8, 0xAA, 0xA9, 0xF0 },  // E1 225
{ 0x40, 0xAA, 0xA9, 0xAA, 0xF0 },  // E2 226
{ 0x42, 0xA9, 0xA9, 0xAA, 0xF1 },  // E3 227
{ 0x40, 0xAA, 0xA8, 0xAA, 0xF0 },  // E4 228
{ 0x40, 0xAA, 0xAD, 0xAA, 0xF0 },  // E5 229
{ 0x64, 0x94, 0x78, 0x94, 0x58 },  // E6 230
{ 0x18, 0xA4, 0xE4, 0x24, 0x10 },  // E7 231
{ 0x70, 0xA9, 0xAA, 0xA8, 0x30 },  // E8 232
{ 0x70, 0xA8, 0xAA, 0xA9, 0x30 },  // E9 233
{ 0x70, 0xAA, 0xA9, 0xAA, 0x30 },  // EA 234
{ 0x70, 0xAA, 0xA8, 0xAA, 0x30 },  // EB 235
{ 0x00, 0x91, 0xFA, 0x80, 0x00 },  // EC 236
{ 0x00, 0x90, 0xFA, 0x81, 0x00 },  // ED 237
{ 0x00, 0x92, 0xF9, 0x82, 0x00 },  // EE 238
{ 0x00, 0x92, 0xF8, 0x82, 0x00 },  // EF 239
{ 0x4A, 0xA4, 0xAA, 0xB0, 0x60 },  // F0 240
{ 0xFA, 0x11, 0x09, 0x0A, 0xF1 },  // F1 241
{ 0x70, 0x89, 0x8A, 0x88, 0x70 },  // F2 242
{ 0x70, 0x88, 0x8A, 0x89, 0x70 },  // F3 243
{ 0x60, 0x94, 0x92, 0x94, 0x60 },  // F4 244
{ 0x64, 0x92, 0x92, 0x94, 0x62 },  // F5 245
{ 0x70, 0x8A, 0x88, 0x8A, 0x70 },  // F6 246
{ 0x10, 0x10, 0x54, 0x10, 0x10 },  // F7 247
{ 0x10, 0xA8, 0x7C, 0x2A, 0x10 },  // F8 248
{ 0x78, 0x81, 0x82, 0x40, 0xF8 },  // F9 249
{ 0x78, 0x80, 0x82, 0x41, 0xF8 },  // FA 250
{ 0x78, 0x82, 0x81, 0x42, 0xF8 },  // FB 251
{ 0x78, 0x82, 0x80, 0x42, 0xF8 },  // FC 252
{ 0x18, 0xA0, 0xA4, 0xA2, 0x78 },  // FD 253
{ 0x00, 0x82, 0xFE, 0xA8, 0x10 },  // FE 254
{ 0x18, 0xA2, 0xA0, 0xA2, 0x78 },  // FF 255
};


Font use by Crystalfontz
Code: [Select]
// Crystalfontz
static uint8_t const __code font_cf[240][5] = {
{ 0x00, 0x7F, 0x3E, 0x1C, 0x08 },  // 10  16
{ 0x08, 0x1C, 0x3E, 0x7F, 0x00 },  // 11  17
{ 0x44, 0x66, 0x77, 0x66, 0x44 },  // 12  18
{ 0x11, 0x33, 0x77, 0x33, 0x11 },  // 13  19
{ 0x08, 0x14, 0x2A, 0x14, 0x22 },  // 14  20
{ 0x22, 0x14, 0x2A, 0x14, 0x08 },  // 15  21
{ 0x07, 0x03, 0x05, 0x08, 0x10 },  // 16  22
{ 0x10, 0x08, 0x05, 0x03, 0x07 },  // 17  23
{ 0x70, 0x60, 0x50, 0x08, 0x04 },  // 18  24
{ 0x04, 0x08, 0x50, 0x60, 0x70 },  // 19  25
{ 0x20, 0x38, 0x3E, 0x38, 0x20 },  // 1A  26
{ 0x02, 0x0E, 0x3E, 0x0E, 0x02 },  // 1B  27
{ 0x10, 0x38, 0x54, 0x10, 0x1F },  // 1C  28
{ 0x04, 0x02, 0x01, 0x02, 0x04 },  // 1D  29
{ 0x01, 0x02, 0x04, 0x02, 0x01 },  // 1E  30
{ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF },  // 1F  31
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // 20  32
{ 0x00, 0x00, 0x5F, 0x00, 0x00 },  // 21  33  !
{ 0x00, 0x07, 0x00, 0x07, 0x00 },  // 22  34  "
{ 0x14, 0x7F, 0x14, 0x7F, 0x14 },  // 23  35  #
{ 0x44, 0x38, 0x28, 0x38, 0x44 },  // 24  36  $
{ 0x23, 0x13, 0x08, 0x64, 0x62 },  // 25  37  %
{ 0x36, 0x49, 0x55, 0x22, 0x50 },  // 26  38  &
{ 0x00, 0x05, 0x03, 0x00, 0x00 },  // 27  39  '
{ 0x00, 0x1C, 0x22, 0x41, 0x00 },  // 28  40  (
{ 0x00, 0x41, 0x22, 0x1C, 0x00 },  // 29  41  )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 },  // 2A  42  *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 },  // 2B  43  +
{ 0x00, 0x50, 0x30, 0x00, 0x00 },  // 2C  44  ,
{ 0x08, 0x08, 0x08, 0x08, 0x08 },  // 2D  45  -
{ 0x00, 0x60, 0x60, 0x00, 0x00 },  // 2E  46  .
{ 0x20, 0x10, 0x08, 0x04, 0x02 },  // 2F  47  /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E },  // 30  48  0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 },  // 31  49  1
{ 0x42, 0x61, 0x51, 0x49, 0x46 },  // 32  50  2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 },  // 33  51  3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 },  // 34  52  4
{ 0x27, 0x45, 0x45, 0x45, 0x39 },  // 35  53  5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 },  // 36  54  6
{ 0x01, 0x71, 0x09, 0x05, 0x03 },  // 37  55  7
{ 0x36, 0x49, 0x49, 0x49, 0x36 },  // 38  56  8
{ 0x06, 0x49, 0x49, 0x29, 0x1E },  // 39  57  9
{ 0x00, 0x36, 0x36, 0x00, 0x00 },  // 3A  58  :
{ 0x00, 0x56, 0x36, 0x00, 0x00 },  // 3B  59  ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 },  // 3C  60  <
{ 0x14, 0x14, 0x14, 0x14, 0x14 },  // 3D  61  =
{ 0x00, 0x41, 0x22, 0x14, 0x08 },  // 3E  62  >
{ 0x02, 0x01, 0x51, 0x09, 0x06 },  // 3F  63  ?
{ 0x00, 0x00, 0x7D, 0x00, 0x00 },  // 40  64  @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E },  // 41  65  A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 },  // 42  66  B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 },  // 43  67  C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C },  // 44  68  D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 },  // 45  69  E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 },  // 46  70  F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A },  // 47  71  G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F },  // 48  72  H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 },  // 49  73  I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 },  // 4A  74  J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 },  // 4B  75  K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 },  // 4C  76  L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F },  // 4D  77  M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F },  // 4E  78  N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E },  // 4F  79  O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 },  // 50  80  P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E },  // 51  81  Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 },  // 52  82  R
{ 0x46, 0x49, 0x49, 0x49, 0x31 },  // 53  83  S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 },  // 54  84  T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F },  // 55  85  U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F },  // 56  86  V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F },  // 57  87  W
{ 0x63, 0x14, 0x08, 0x14, 0x63 },  // 58  88  X
{ 0x07, 0x08, 0x70, 0x08, 0x07 },  // 59  89  Y
{ 0x61, 0x59, 0x49, 0x4D, 0x43 },  // 5A  90  Z
{ 0x78, 0x15, 0x14, 0x15, 0x78 },  // 5B  91  [
{ 0x38, 0x45, 0x44, 0x45, 0x38 },  // 5C  92  '\'
{ 0x78, 0x12, 0x21, 0x42, 0x79 },  // 5D  93  ]
{ 0x3C, 0x41, 0x40, 0x41, 0x3C },  // 5E  94  ^
{ 0x00, 0x4E, 0x55, 0x39, 0x00 },  // 5F  95  _
{ 0x30, 0x48, 0x45, 0x40, 0x20 },  // 60  96  `
{ 0x20, 0x54, 0x54, 0x54, 0x78 },  // 61  97  a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 },  // 62  98  b
{ 0x38, 0x44, 0x44, 0x44, 0x20 },  // 63  99  c
{ 0x38, 0x44, 0x44, 0x48, 0x7F },  // 64 100  d
{ 0x38, 0x54, 0x54, 0x54, 0x18 },  // 65 101  e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 },  // 66 102  f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E },  // 67 103  g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 },  // 68 104  h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 },  // 69 105  i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 },  // 6A 106  j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 },  // 6B 107  k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 },  // 6C 108  l
{ 0x78, 0x04, 0x78, 0x04, 0x78 },  // 6D 109  m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 },  // 6E 110  n
{ 0x38, 0x44, 0x44, 0x44, 0x38 },  // 6F 111  o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 },  // 70 112  p
{ 0x08, 0x14, 0x14, 0x7C, 0x40 },  // 71 113  q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 },  // 72 114  r
{ 0x48, 0x54, 0x54, 0x54, 0x20 },  // 73 115  s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 },  // 74 116  t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C },  // 75 117  u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C },  // 76 118  v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C },  // 77 119  w
{ 0x44, 0x28, 0x10, 0x28, 0x44 },  // 78 120  x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C },  // 79 121  y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 },  // 7A 122  z
{ 0x20, 0x55, 0x54, 0x55, 0x78 },  // 7B 123  {
{ 0x30, 0x4A, 0x48, 0x4A, 0x30 },  // 7C 124  |
{ 0x78, 0x12, 0x09, 0x0A, 0x71 },  // 7D 125  }
{ 0x3C, 0x41, 0x40, 0x21, 0x7C },  // 7E 126  ~
{ 0x20, 0x55, 0x56, 0x54, 0x78 },  // 7F 127
{ 0x0E, 0x11, 0x11, 0x0E, 0x00 },  // 80 128
{ 0x12, 0x1F, 0x10, 0x00, 0x00 },  // 81 129
{ 0x12, 0x19, 0x15, 0x12, 0x00 },  // 82 130
{ 0x11, 0x15, 0x15, 0x0A, 0x00 },  // 83 131
{ 0x0C, 0x0A, 0x1F, 0x08, 0x00 },  // 84 132
{ 0x17, 0x15, 0x15, 0x09, 0x00 },  // 85 133
{ 0x0E, 0x15, 0x15, 0x09, 0x00 },  // 86 134
{ 0x01, 0x19, 0x05, 0x03, 0x00 },  // 87 135
{ 0x0A, 0x15, 0x15, 0x0A, 0x00 },  // 88 136
{ 0x02, 0x15, 0x15, 0x0E, 0x00 },  // 89 137
{ 0x17, 0x08, 0x94, 0xCA, 0xB1 },  // 8A 138
{ 0x17, 0x68, 0x54, 0xFA, 0x41 },  // 8B 139
{ 0x44, 0x44, 0x5F, 0x44, 0x44 },  // 8C 140
{ 0x40, 0x51, 0x4A, 0x44, 0x40 },  // 8D 141
{ 0x40, 0x44, 0x4A, 0x51, 0x40 },  // 8E 142
{ 0x7F, 0x10, 0x10, 0x08, 0x1F },  // 8F 143
{ 0xC0, 0xC0, 0xFE, 0x04, 0x18 },  // 90 144
{ 0x60, 0x60, 0x3F, 0xC5, 0xFE },  // 91 145
{ 0x20, 0x3E, 0x7F, 0x3E, 0x20 },  // 92 146
{ 0x0C, 0x1E, 0x3C, 0x1E, 0x0C },  // 93 147
{ 0x08, 0x1C, 0x3E, 0x1C, 0x08 },  // 94 148
{ 0x01, 0x03, 0x7F, 0x03, 0x01 },  // 95 149
{ 0x07, 0x01, 0x01, 0x00, 0x00 },  // 96 150
{ 0x00, 0x00, 0x40, 0x40, 0x70 },  // 97 151
{ 0x06, 0x05, 0x00, 0x06, 0x05 },  // 98 152
{ 0x05, 0x03, 0x00, 0x05, 0x03 },  // 99 153
{ 0x00, 0x1C, 0x22, 0x41, 0x00 },  // 9A 154
{ 0x00, 0x41, 0x22, 0x1C, 0x00 },  // 9B 155
{ 0x38, 0x44, 0x48, 0x30, 0x4C },  // 9C 156
{ 0x28, 0x54, 0x54, 0x44, 0x20 },  // 9D 157
{ 0x30, 0x4A, 0x45, 0x49, 0x32 },  // 9E 158
{ 0x18, 0x14, 0x08, 0x14, 0x0C },  // 9F 159
{ 0x3E, 0x41, 0x59, 0x55, 0x1E },  // A0 160
{ 0x48, 0x3E, 0x49, 0x41, 0x20 },  // A1 161
{ 0x24, 0x2A, 0x7F, 0x2A, 0x12 },  // A2 162
{ 0x15, 0x16, 0x7C, 0x16, 0x15 },  // A3 163
{ 0x38, 0x55, 0x56, 0x54, 0x18 },  // A4 164
{ 0x38, 0x54, 0x56, 0x55, 0x18 },  // A5 165
{ 0x3C, 0x41, 0x42, 0x20, 0x7C },  // A6 166
{ 0x00, 0x49, 0x7A, 0x40, 0x00 },  // A7 167
{ 0x38, 0x45, 0x46, 0x44, 0x38 },  // A8 168
{ 0x0E, 0x51, 0x71, 0x11, 0x12 },  // A9 169
{ 0x0F, 0x05, 0x05, 0x02, 0x00 },  // AA 170
{ 0x3E, 0x61, 0x5D, 0x43, 0x3E },  // AB 171
{ 0x38, 0x64, 0x54, 0x4C, 0x38 },  // AC 172
{ 0x0F, 0x02, 0x01, 0x02, 0x00 },  // AD 173
{ 0x78, 0x14, 0x15, 0x14, 0x78 },  // AE 174
{ 0x20, 0x54, 0x55, 0x54, 0x78 },  // AF 175
{ 0x38, 0x24, 0x22, 0x24, 0x38 },  // B0 176
{ 0x1C, 0x22, 0x7F, 0x22, 0x10 },  // B1 177
{ 0x08, 0x55, 0x7F, 0x55, 0x08 },  // B2 178
{ 0x04, 0x04, 0x7C, 0x44, 0x04 },  // B3 179
{ 0x41, 0x32, 0x0C, 0x30, 0x40 },  // B4 180
{ 0x5C, 0x62, 0x02, 0x62, 0x5C },  // B5 181
{ 0x04, 0x7C, 0x04, 0x7C, 0x04 },  // B6 182
{ 0x07, 0x08, 0x7F, 0x08, 0x07 },  // B7 183
{ 0x63, 0x55, 0x49, 0x41, 0x41 },  // B8 184
{ 0x1C, 0x2A, 0x49, 0x2A, 0x1C },  // B9 185
{ 0x22, 0x2A, 0x2A, 0x2A, 0x22 },  // BA 186
{ 0x1C, 0x3E, 0x3E, 0x3E, 0x1C },  // BB 187
{ 0x7C, 0x0A, 0x09, 0x7F, 0x49 },  // BC 188
{ 0x64, 0x54, 0x78, 0x54, 0x58 },  // BD 189
{ 0x7E, 0x15, 0x25, 0x25, 0x1A },  // BE 190
{ 0x7C, 0x54, 0x56, 0x45, 0x00 },  // BF 191
{ 0x7F, 0x01, 0x01, 0x01, 0x03 },  // C0 192
{ 0x70, 0x0C, 0x03, 0x0C, 0x70 },  // C1 193
{ 0x7F, 0x01, 0x01, 0x01, 0x7F },  // C2 194
{ 0x06, 0x01, 0x7E, 0x01, 0x06 },  // C3 195
{ 0x40, 0x40, 0x40, 0x40, 0x40 },  // C4 196
{ 0x7C, 0x55, 0x56, 0x44, 0x00 },  // C5 197
{ 0x7C, 0x56, 0x55, 0x46, 0x00 },  // C6 198
{ 0x38, 0x56, 0x55, 0x56, 0x18 },  // C7 199
{ 0x0C, 0x52, 0x72, 0x12, 0x00 },  // C8 200
{ 0x08, 0x55, 0x56, 0x55, 0x3C },  // C9 201
{ 0x22, 0x25, 0x65, 0x25, 0x19 },  // CA 202
{ 0x24, 0x2A, 0x6A, 0x2A, 0x10 },  // CB 203
{ 0x00, 0x44, 0x7D, 0x44, 0x00 },  // CC 204
{ 0x00, 0x44, 0x7C, 0x40, 0x00 },  // CD 205
{ 0x04, 0x02, 0x04, 0x08, 0x04 },  // CE 206
{ 0x08, 0x14, 0x22, 0x14, 0x08 },  // CF 207
{ 0x3E, 0x3E, 0x3E, 0x3E, 0x3E },  // D0 208
{ 0x3E, 0x3E, 0x3E, 0x3E, 0x00 },  // D1 209
{ 0x3E, 0x3E, 0x3E, 0x00, 0x00 },  // D2 210
{ 0x3E, 0x3E, 0x00, 0x00, 0x00 },  // D3 211
{ 0x3E, 0x00, 0x00, 0x00, 0x00 },  // D4 212
{ 0x28, 0x48, 0x3E, 0x09, 0x0A },  // D5 213
{ 0x7F, 0x7F, 0x7F, 0x7F, 0x7F },  // D6 214
{ 0x7F, 0x7F, 0x7F, 0x7F, 0x00 },  // D7 215
{ 0x7F, 0x7F, 0x7F, 0x00, 0x00 },  // D8 216
{ 0x7F, 0x7F, 0x00, 0x00, 0x00 },  // D9 217
{ 0x7F, 0x00, 0x00, 0x00, 0x00 },  // DA 218
{ 0x7F, 0x05, 0x25, 0xF2, 0xA0 },  // DB 219
{ 0x3C, 0x24, 0x24, 0x3C, 0x00 },  // DC 220
{ 0x00, 0x18, 0x18, 0x00, 0x00 },  // DD 221
{ 0x04, 0x02, 0x7F, 0x02, 0x04 },  // DE 222
{ 0x08, 0x08, 0x2A, 0x1C, 0x08 },  // DF 223
{ 0x10, 0x20, 0x7F, 0x20, 0x10 },  // E0 224
{ 0x08, 0x1C, 0x2A, 0x08, 0x08 },  // E1 225
{ 0x78, 0x14, 0x16, 0x15, 0x78 },  // E2 226
{ 0x00, 0x44, 0x7E, 0x45, 0x00 },  // E3 227
{ 0x38, 0x44, 0x46, 0x45, 0x38 },  // E4 228
{ 0x3C, 0x40, 0x42, 0x41, 0x3C },  // E5 229
{ 0x04, 0x08, 0x72, 0x09, 0x04 },  // E6 230
{ 0x20, 0x54, 0x56, 0x55, 0x78 },  // E7 231
{ 0x00, 0x48, 0x7A, 0x41, 0x00 },  // E8 232
{ 0x30, 0x48, 0x4C, 0x4A, 0x30 },  // E9 233
{ 0x3C, 0x40, 0x42, 0x21, 0x7C },  // EA 234
{ 0x0C, 0x50, 0x52, 0x51, 0x3C },  // EB 235
{ 0x38, 0x46, 0x45, 0x46, 0x38 },  // EC 236
{ 0x30, 0x4C, 0x4A, 0x4C, 0x30 },  // ED 237
{ 0x3C, 0x40, 0x41, 0x40, 0x3C },  // EE 238
{ 0x3C, 0x40, 0x41, 0x20, 0x7C },  // EF 239
{ 0x38, 0x45, 0x46, 0x45, 0x28 },  // F0 240
{ 0x7C, 0x55, 0x56, 0x45, 0x44 },  // F1 241
{ 0x7C, 0x15, 0x16, 0x35, 0x48 },  // F2 242
{ 0x48, 0x55, 0x56, 0x55, 0x24 },  // F3 243
{ 0x64, 0x55, 0x56, 0x55, 0x4C },  // F4 244
{ 0x30, 0x4A, 0x4C, 0x4A, 0x00 },  // F5 245
{ 0x38, 0x55, 0x56, 0x55, 0x18 },  // F6 246
{ 0x7C, 0x09, 0x06, 0x05, 0x08 },  // F7 247
{ 0x48, 0x55, 0x56, 0x55, 0x20 },  // F8 248
{ 0x44, 0x65, 0x56, 0x4D, 0x44 },  // F9 249
{ 0x00, 0x7F, 0x41, 0x41, 0x00 },  // FA 250
{ 0x02, 0x04, 0x08, 0x10, 0x20 },  // FB 251
{ 0x00, 0x41, 0x41, 0x7F, 0x00 },  // FC 252
{ 0x00, 0x08, 0x36, 0x41, 0x00 },  // FD 253
{ 0x00, 0x00, 0x77, 0x00, 0x00 },  // FE 254
{ 0x00, 0x41, 0x36, 0x08, 0x00 }   // FF 255
};


Font used by Matrix orbital
Code: [Select]
// Matrix orbital
static uint8_t const __code font_mo[240][5] = {
{ 0x44, 0x44, 0x5F, 0x44, 0x44 },  // 10  16
{ 0x2A, 0x2A, 0x2A, 0x2A, 0x2A },  // 11  17
{ 0x07, 0x39, 0xC1, 0x01, 0x0F },  // 12  18
{ 0x80, 0x70, 0x0E, 0x01, 0xC0 },  // 13  19
{ 0x00, 0x00, 0xF8, 0x06, 0x01 },  // 14  20
{ 0x00, 0x00, 0x7F, 0x80, 0x00 },  // 15  21
{ 0x01, 0x06, 0xF8, 0x00, 0x00 },  // 16  22
{ 0x00, 0x80, 0x7F, 0x00, 0x00 },  // 17  23
{ 0x00, 0x00, 0xFC, 0x02, 0x01 },  // 18  24
{ 0x01, 0x02, 0xFC, 0x00, 0x00 },  // 19  25
{ 0x24, 0x12, 0x24, 0x12, 0x00 },  // 1A  26
{ 0x00, 0x00, 0xFE, 0x01, 0x03 },  // 1B  27
{ 0x50, 0x50, 0x50, 0x50, 0x50 },  // 1C  28
{ 0x18, 0x04, 0x18, 0x20, 0x18 },  // 1D  29
{ 0x1D, 0x15, 0x17, 0x00, 0x00 },  // 1E  30
{ 0x15, 0x15, 0x1F, 0x00, 0x00 },  // 1F  31
{ 0x00, 0x00, 0x00, 0x00, 0x00 },  // 20  32
{ 0x00, 0x00, 0x4F, 0x00, 0x00 },  // 21  33  !
{ 0x00, 0x07, 0x00, 0x07, 0x00 },  // 22  34  "
{ 0x14, 0x7F, 0x14, 0x7F, 0x14 },  // 23  35  #
{ 0x24, 0x2A, 0x7F, 0x2A, 0x12 },  // 24  36  $
{ 0x23, 0x13, 0x08, 0x64, 0x62 },  // 25  37  %
{ 0x36, 0x49, 0x56, 0x20, 0x58 },  // 26  38  &
{ 0x00, 0x05, 0x03, 0x00, 0x00 },  // 27  39  '
{ 0x00, 0x1C, 0x22, 0x41, 0x00 },  // 28  40  (
{ 0x00, 0x41, 0x22, 0x1C, 0x00 },  // 29  41  )
{ 0x22, 0x14, 0x7F, 0x14, 0x22 },  // 2A  42  *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 },  // 2B  43  +
{ 0x00, 0x50, 0x30, 0x00, 0x00 },  // 2C  44  ,
{ 0x08, 0x08, 0x08, 0x08, 0x08 },  // 2D  45  -
{ 0x00, 0x60, 0x60, 0x00, 0x00 },  // 2E  46  .
{ 0x20, 0x10, 0x08, 0x04, 0x02 },  // 2F  47  /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E },  // 30  48  0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 },  // 31  49  1
{ 0x42, 0x61, 0x51, 0x49, 0x46 },  // 32  50  2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 },  // 33  51  3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 },  // 34  52  4
{ 0x27, 0x45, 0x45, 0x45, 0x39 },  // 35  53  5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 },  // 36  54  6
{ 0x01, 0x01, 0x71, 0x0D, 0x03 },  // 37  55  7
{ 0x36, 0x49, 0x49, 0x49, 0x36 },  // 38  56  8
{ 0x06, 0x49, 0x49, 0x29, 0x1E },  // 39  57  9
{ 0x00, 0x36, 0x36, 0x00, 0x00 },  // 3A  58  :
{ 0x00, 0x56, 0x36, 0x00, 0x00 },  // 3B  59  ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 },  // 3C  60  <
{ 0x14, 0x14, 0x14, 0x14, 0x14 },  // 3D  61  =
{ 0x00, 0x41, 0x22, 0x14, 0x08 },  // 3E  62  >
{ 0x02, 0x01, 0x51, 0x09, 0x06 },  // 3F  63  ?
{ 0x3E, 0x41, 0x5D, 0x55, 0x1E },  // 40  64  @
{ 0x7C, 0x12, 0x11, 0x12, 0x7C },  // 41  65  A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 },  // 42  66  B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 },  // 43  67  C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C },  // 44  68  D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 },  // 45  69  E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 },  // 46  70  F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A },  // 47  71  G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F },  // 48  72  H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 },  // 49  73  I
{ 0x20, 0x41, 0x41, 0x3F, 0x01 },  // 4A  74  J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 },  // 4B  75  K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 },  // 4C  76  L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F },  // 4D  77  M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F },  // 4E  78  N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E },  // 4F  79  O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 },  // 50  80  P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E },  // 51  81  Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 },  // 52  82  R
{ 0x26, 0x49, 0x49, 0x49, 0x32 },  // 53  83  S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 },  // 54  84  T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F },  // 55  85  U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F },  // 56  86  V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F },  // 57  87  W
{ 0x63, 0x14, 0x08, 0x14, 0x63 },  // 58  88  X
{ 0x03, 0x04, 0x78, 0x04, 0x03 },  // 59  89  Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 },  // 5A  90  Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 },  // 5B  91  [
{ 0x02, 0x04, 0x08, 0x10, 0x20 },  // 5C  92  '\'
{ 0x00, 0x41, 0x41, 0x7F, 0x00 },  // 5D  93  ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 },  // 5E  94  ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 },  // 5F  95  _
{ 0x00, 0x00, 0x03, 0x05, 0x00 },  // 60  96  `
{ 0x20, 0x54, 0x54, 0x54, 0x78 },  // 61  97  a
{ 0x7F, 0x44, 0x44, 0x44, 0x38 },  // 62  98  b
{ 0x38, 0x44, 0x44, 0x44, 0x44 },  // 63  99  c
{ 0x38, 0x44, 0x44, 0x44, 0x7F },  // 64 100  d
{ 0x38, 0x54, 0x54, 0x54, 0x18 },  // 65 101  e
{ 0x04, 0x04, 0x7E, 0x05, 0x05 },  // 66 102  f
{ 0x08, 0x54, 0x54, 0x54, 0x3C },  // 67 103  g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 },  // 68 104  h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 },  // 69 105  i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 },  // 6A 106  j
{ 0x00, 0x7F, 0x10, 0x28, 0x44 },  // 6B 107  k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 },  // 6C 108  l
{ 0x7C, 0x04, 0x78, 0x04, 0x78 },  // 6D 109  m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 },  // 6E 110  n
{ 0x38, 0x44, 0x44, 0x44, 0x38 },  // 6F 111  o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 },  // 70 112  p
{ 0x08, 0x14, 0x14, 0x14, 0x7C },  // 71 113  q
{ 0x00, 0x7C, 0x08, 0x04, 0x04 },  // 72 114  r
{ 0x48, 0x54, 0x54, 0x54, 0x20 },  // 73 115  s
{ 0x04, 0x04, 0x3F, 0x44, 0x44 },  // 74 116  t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C },  // 75 117  u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C },  // 76 118  v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C },  // 77 119  w
{ 0x44, 0x28, 0x10, 0x28, 0x44 },  // 78 120  x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C },  // 79 121  y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 },  // 7A 122  z
{ 0x00, 0x08, 0x36, 0x41, 0x41 },  // 7B 123  {
{ 0x00, 0x00, 0x7F, 0x00, 0x00 },  // 7C 124  |
{ 0x41, 0x41, 0x36, 0x08, 0x00 },  // 7D 125  }
{ 0x02, 0x01, 0x02, 0x04, 0x02 },  // 7E 126  ~
{ 0x60, 0x58, 0x46, 0x58, 0x60 },  // 7F 127
{ 0x0E, 0x51, 0x51, 0x71, 0x11 },  // 80 128
{ 0x38, 0x42, 0x40, 0x22, 0x78 },  // 81 129
{ 0x38, 0x54, 0x56, 0x55, 0x18 },  // 82 130
{ 0x20, 0x56, 0x55, 0x56, 0x78 },  // 83 131
{ 0x20, 0x55, 0x54, 0x55, 0x78 },  // 84 132
{ 0x20, 0x55, 0x56, 0x54, 0x78 },  // 85 133
{ 0x20, 0x54, 0x55, 0x54, 0x78 },  // 86 134
{ 0x0C, 0x52, 0x52, 0x72, 0x12 },  // 87 135
{ 0x38, 0x56, 0x55, 0x56, 0x18 },  // 88 136
{ 0x38, 0x55, 0x54, 0x55, 0x18 },  // 89 137
{ 0x38, 0x55, 0x56, 0x54, 0x18 },  // 8A 138
{ 0x00, 0x45, 0x7C, 0x41, 0x00 },  // 8B 139
{ 0x00, 0x4A, 0x79, 0x42, 0x00 },  // 8C 140
{ 0x00, 0x49, 0x7A, 0x40, 0x00 },  // 8D 141
{ 0x70, 0x29, 0x24, 0x29, 0x70 },  // 8E 142
{ 0x70, 0x2A, 0x2D, 0x2A, 0x70 },  // 8F 143
{ 0x7C, 0x54, 0x56, 0x55, 0x44 },  // 90 144
{ 0x24, 0x54, 0x78, 0x54, 0x58 },  // 91 145
{ 0x7E, 0x09, 0x7F, 0x49, 0x49 },  // 92 146
{ 0x30, 0x4A, 0x49, 0x4A, 0x30 },  // 93 147
{ 0x30, 0x4A, 0x48, 0x4A, 0x30 },  // 94 148
{ 0x30, 0x49, 0x4A, 0x48, 0x30 },  // 95 149
{ 0x38, 0x42, 0x41, 0x22, 0x78 },  // 96 150
{ 0x38, 0x41, 0x42, 0x20, 0x78 },  // 97 151
{ 0x0C, 0x51, 0x50, 0x51, 0x3C },  // 98 152
{ 0x3D, 0x42, 0x42, 0x42, 0x3D },  // 99 153
{ 0x3C, 0x41, 0x40, 0x41, 0x3C },  // 9A 154
{ 0x7A, 0x11, 0x09, 0x0A, 0x71 },  // 9B 155
{ 0x7A, 0x09, 0x11, 0x22, 0x79 },  // 9C 156
{ 0x48, 0x55, 0x55, 0x55, 0x5E },  // 9D 157
{ 0x4E, 0x51, 0x51, 0x51, 0x4E },  // 9E 158
{ 0x30, 0x48, 0x45, 0x40, 0x20 },  // 9F 159
{ 0x20, 0x54, 0x56, 0x55, 0x78 },  // A0 160
{ 0x00, 0x48, 0x7A, 0x41, 0x00 },  // A1 161
{ 0x30, 0x48, 0x4A, 0x49, 0x30 },  // A2 162
{ 0x38, 0x40, 0x42, 0x21, 0x78 },  // A3 163
{ 0x1C, 0x22, 0x7F, 0x22, 0x22 },  // A4 164
{ 0x48, 0x7E, 0x49, 0x49, 0x42 },  // A5 165
{ 0x15, 0x16, 0x7C, 0x16, 0x15 },  // A6 166
{ 0x7F, 0x05, 0x15, 0x7A, 0x50 },  // A7 167
{ 0x20, 0x48, 0x3E, 0x09, 0x02 },  // A8 168
{ 0x00, 0x00, 0x79, 0x00, 0x00 },  // A9 169
{ 0x72, 0x29, 0x29, 0x2A, 0x71 },  // AA 170
{ 0x22, 0x51, 0x55, 0x56, 0x79 },  // AB 171
{ 0x3A, 0x45, 0x45, 0x46, 0x39 },  // AC 172
{ 0x32, 0x49, 0x49, 0x4A, 0x31 },  // AD 173
{ 0x5C, 0x32, 0x2A, 0x26, 0x1D },  // AE 174
{ 0x18, 0x64, 0x3C, 0x26, 0x18 },  // AF 175
{ 0x00, 0x00, 0x01, 0x00, 0x00 },  // B0 176
{ 0x00, 0x01, 0x00, 0x01, 0x00 },  // B1 177
{ 0x00, 0x02, 0x05, 0x02, 0x00 },  // B2 178
{ 0x00, 0x01, 0x02, 0x00, 0x00 },  // B3 179
{ 0x00, 0x00, 0x02, 0x01, 0x00 },  // B4 180
{ 0x0F, 0x00, 0x48, 0x64, 0x58 },  // B5 181
{ 0x0F, 0x00, 0x3C, 0x20, 0x78 },  // B6 182
{ 0x22, 0x14, 0x08, 0x14, 0x22 },  // B7 183
{ 0x08, 0x08, 0x2A, 0x08, 0x08 },  // B8 184
{ 0x40, 0x44, 0x4A, 0x51, 0x40 },  // B9 185
{ 0x40, 0x51, 0x4A, 0x44, 0x40 },  // BA 186
{ 0x08, 0x14, 0x2A, 0x14, 0x22 },  // BB 187
{ 0x22, 0x14, 0x2A, 0x14, 0x08 },  // BC 188
{ 0x14, 0x74, 0x1C, 0x17, 0x14 },  // BD 189
{ 0x10, 0x20, 0x7F, 0x01, 0x01 },  // BE 190
{ 0x01, 0x01, 0x01, 0x01, 0x01 },  // BF 191
{ 0x00, 0x00, 0x7E, 0x01, 0x02 },  // C0 192
{ 0x20, 0x40, 0x3F, 0x00, 0x00 },  // C1 193
{ 0x18, 0x24, 0x18, 0x24, 0x18 },  // C2 194
{ 0x3F, 0x11, 0x09, 0x05, 0x03 },  // C3 195
{ 0x10, 0x38, 0x54, 0x10, 0x1F },  // C4 196
{ 0x04, 0x02, 0x7F, 0x02, 0x04 },  // C5 197
{ 0x10, 0x20, 0x7F, 0x20, 0x10 },  // C6 198
{ 0x08, 0x08, 0x2A, 0x1C, 0x08 },  // C7 199
{ 0x08, 0x1C, 0x2A, 0x08, 0x08 },  // C8 200
{ 0x7F, 0x01, 0x01, 0x01, 0x01 },  // C9 201
{ 0x01, 0x01, 0x01, 0x01, 0x7F },  // CA 202
{ 0x7F, 0x40, 0x40, 0x40, 0x40 },  // CB 203
{ 0x40, 0x40, 0x40, 0x40, 0x7F },  // CC 204
{ 0x00, 0x18, 0x18, 0x00, 0x00 },  // CD 205
{ 0x3E, 0x41, 0x75, 0x4B, 0x3E },  // CE 206
{ 0x3E, 0x63, 0x5D, 0x6B, 0x3E },  // CF 207
{ 0x79, 0x11, 0x27, 0x11, 0x79 },  // D0 208
{ 0x04, 0x04, 0x7F, 0x04, 0x04 },  // D1 209
{ 0x0A, 0x55, 0x55, 0x55, 0x28 },  // D2 210
{ 0x06, 0x0F, 0x7F, 0x01, 0x7F },  // D3 211
{ 0x7F, 0x01, 0x01, 0x01, 0x07 },  // D4 212
{ 0x60, 0x50, 0x48, 0x44, 0x7E },  // D5 213
{ 0x3E, 0x49, 0x49, 0x49, 0x3E },  // D6 214
{ 0x70, 0x0C, 0x03, 0x0C, 0x70 },  // D7 215
{ 0x63, 0x49, 0x49, 0x49, 0x63 },  // D8 216
{ 0x01, 0x7F, 0x01, 0x7F, 0x01 },  // D9 217
{ 0x41, 0x63, 0x55, 0x49, 0x41 },  // DA 218
{ 0x06, 0x01, 0x7E, 0x01, 0x06 },  // DB 219
{ 0x18, 0xA5, 0xFF, 0xA5, 0x18 },  // DC 220
{ 0x0F, 0x10, 0x7F, 0x10, 0x0F },  // DD 221
{ 0x4E, 0x71, 0x01, 0x71, 0x4E },  // DE 222
{ 0x38, 0x44, 0x44, 0x38, 0x44 },  // DF 223
{ 0xFE, 0x01, 0x49, 0x4E, 0x30 },  // E0 224
{ 0x04, 0x98, 0x60, 0x18, 0x04 },  // E1 225
{ 0x30, 0x4A, 0x4D, 0x49, 0x32 },  // E2 226
{ 0x38, 0x54, 0x54, 0x54, 0x44 },  // E3 227
{ 0x31, 0x49, 0x45, 0x43, 0x81 },  // E4 228
{ 0x04, 0x78, 0x04, 0x04, 0xF8 },  // E5 229
{ 0x3E, 0x49, 0x49, 0x3E, 0x00 },  // E6 230
{ 0x00, 0x00, 0x3C, 0x40, 0x40 },  // E7 231
{ 0x00, 0x7C, 0x10, 0x28, 0x44 },  // E8 232
{ 0x40, 0x31, 0x0F, 0x30, 0x40 },  // E9 233
{ 0xFC, 0x40, 0x40, 0x3C, 0x40 },  // EA 234
{ 0x3C, 0x40, 0x20, 0x14, 0x0C },  // EB 235
{ 0x61, 0x95, 0x8B, 0x89, 0x09 },  // EC 236
{ 0x44, 0x3C, 0x04, 0x7C, 0x44 },  // ED 237
{ 0xF8, 0x44, 0x44, 0x44, 0x38 },  // EE 238
{ 0x38, 0x44, 0x44, 0x3C, 0x04 },  // EF 239
{ 0x04, 0x04, 0x3C, 0x44, 0x24 },  // F0 240
{ 0x3C, 0x40, 0x40, 0x24, 0x18 },  // F1 241
{ 0x04, 0xC4, 0xF8, 0x30, 0x0C },  // F2 242
{ 0x38, 0x40, 0xFC, 0x40, 0x38 },  // F3 243
{ 0x38, 0x44, 0x30, 0x44, 0x38 },  // F4 244
{ 0x06, 0x1E, 0x7E, 0x1E, 0x06 },  // F5 245
{ 0x3E, 0x1C, 0x1C, 0x08, 0x08 },  // F6 246
{ 0x08, 0x08, 0x1C, 0x1C, 0x3E },  // F7 247
{ 0x7F, 0x7F, 0x1B, 0x7F, 0x6E },  // F8 248
{ 0x08, 0x1C, 0x2A, 0x08, 0x7F },  // F9 249
{ 0x7F, 0x7F, 0x1B, 0x1B, 0x03 },  // FA 250
{ 0x08, 0x08, 0x2A, 0x1C, 0x7F },  // FB 251
{ 0xFF, 0x81, 0x81, 0x81, 0xFF },  // FC 252
{ 0x18, 0x18, 0x18, 0x18, 0x18 },  // FD 253
{ 0x7F, 0x53, 0x55, 0x65, 0x7F },  // FE 254
{ 0x7F, 0x41, 0x75, 0x71, 0x7F }   // FF 255
};

 

Online SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14471
  • Country: fr
 

Online oPossum

  • Super Contributor
  • ***
  • Posts: 1417
  • Country: us
  • Very dangerous - may attack at any time
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #6 on: January 17, 2022, 02:48:55 am »
TI 99/4 fonts

Code: [Select]
// TI 99/4A

// 994AGROM.Bin 0x04B4
// Uppercase only
// 32 column
uint8_t const ti_994A_large[64 * 8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 20  32
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20,  // 21  33 !
0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,  // 22  34 "
0x00, 0x48, 0xFC, 0x48, 0x48, 0xFC, 0x48, 0x00,  // 23  35 #
0x10, 0x3C, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00,  // 24  36 $
0xC0, 0xC4, 0x08, 0x10, 0x20, 0x40, 0x8C, 0x0C,  // 25  37 %
0x60, 0x90, 0x90, 0x60, 0x60, 0x94, 0x88, 0x74,  // 26  38 &
0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,  // 27  39 '
0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x08,  // 28  40 (
0x40, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x40,  // 29  41 )
0x00, 0x00, 0x48, 0x30, 0xCC, 0x30, 0x48, 0x00,  // 2A  42 *
0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00,  // 2B  43 +
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20,  // 2C  44 ,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,  // 2D  45 -
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30,  // 2E  46 .
0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00,  // 2F  47 /
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38,  // 30  48 0
0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, 0x7C,  // 31  49 1
0x78, 0x84, 0x04, 0x08, 0x10, 0x20, 0x40, 0xFC,  // 32  50 2
0x78, 0x84, 0x04, 0x38, 0x04, 0x04, 0x84, 0x78,  // 33  51 3
0x0C, 0x14, 0x24, 0x44, 0x84, 0xFC, 0x04, 0x04,  // 34  52 4
0xF8, 0x80, 0x80, 0xF8, 0x04, 0x04, 0x84, 0x78,  // 35  53 5
0x78, 0x80, 0x80, 0xF8, 0x84, 0x84, 0x84, 0x78,  // 36  54 6
0xFC, 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x40,  // 37  55 7
0x78, 0x84, 0x84, 0x78, 0x84, 0x84, 0x84, 0x78,  // 38  56 8
0x78, 0x84, 0x84, 0x84, 0x7C, 0x04, 0x04, 0x78,  // 39  57 9
0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00,  // 3A  58 :
0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x10, 0x20,  // 3B  59 ;
0x00, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08,  // 3C  60 <
0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00,  // 3D  61 =
0x00, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40,  // 3E  62 >
0x38, 0x44, 0x04, 0x08, 0x10, 0x10, 0x00, 0x10,  // 3F  63 ?
0x00, 0x78, 0x84, 0x9C, 0xA4, 0x98, 0x80, 0x7C,  // 40  64 @
0x78, 0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84,  // 41  65 A
0xF8, 0x44, 0x44, 0x78, 0x44, 0x44, 0x44, 0xF8,  // 42  66 B
0x78, 0x84, 0x80, 0x80, 0x80, 0x80, 0x84, 0x78,  // 43  67 C
0xF8, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xF8,  // 44  68 D
0xFC, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0xFC,  // 45  69 E
0xFC, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x80,  // 46  70 F
0x78, 0x84, 0x80, 0x80, 0x9C, 0x84, 0x84, 0x78,  // 47  71 G
0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84, 0x84,  // 48  72 H
0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x7C,  // 49  73 I
0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x78,  // 4A  74 J
0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x84,  // 4B  75 K
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C,  // 4C  76 L
0x84, 0xCC, 0xB4, 0x84, 0x84, 0x84, 0x84, 0x84,  // 4D  77 M
0x84, 0xC4, 0xA4, 0x94, 0x8C, 0x84, 0x84, 0x84,  // 4E  78 N
0xFC, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0xFC,  // 4F  79 O
0xF8, 0x84, 0x84, 0x84, 0xF8, 0x80, 0x80, 0x80,  // 50  80 P
0x78, 0x84, 0x84, 0x84, 0x84, 0x94, 0x88, 0x74,  // 51  81 Q
0xF8, 0x84, 0x84, 0x84, 0xF8, 0x90, 0x88, 0x84,  // 52  82 R
0x78, 0x84, 0x80, 0x78, 0x04, 0x04, 0x84, 0x78,  // 53  83 S
0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,  // 54  84 T
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78,  // 55  85 U
0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10,  // 56  86 V
0x84, 0x84, 0x84, 0x84, 0x84, 0xB4, 0xCC, 0x84,  // 57  87 W
0x84, 0x84, 0x48, 0x30, 0x30, 0x48, 0x84, 0x84,  // 58  88 X
0x44, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10,  // 59  89 Y
0xFC, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xFC,  // 5A  90 Z
0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38,  // 5B  91 [
0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00,  // 5C  92 '\'
0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70,  // 5D  93 ]
0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00,  // 5E  94 ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC   // 5F  95 _
};

// 994AGROM.Bin 0x06B4
// Large and small uppercase
// 40 column
uint8_t const ti_994A_normal[96 * 8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 20  32
0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10,  // 21  33 !
0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00,  // 22  34 "
0x00, 0x28, 0x28, 0x7C, 0x28, 0x7C, 0x28, 0x28,  // 23  35 #
0x00, 0x38, 0x54, 0x50, 0x38, 0x14, 0x54, 0x38,  // 24  36 $
0x00, 0x60, 0x64, 0x08, 0x10, 0x20, 0x4C, 0x0C,  // 25  37 %
0x00, 0x20, 0x50, 0x50, 0x20, 0x54, 0x48, 0x34,  // 26  38 &
0x00, 0x08, 0x08, 0x10, 0x00, 0x00, 0x00, 0x00,  // 27  39 '
0x00, 0x08, 0x10, 0x20, 0x20, 0x20, 0x10, 0x08,  // 28  40 (
0x00, 0x20, 0x10, 0x08, 0x08, 0x08, 0x10, 0x20,  // 29  41 )
0x00, 0x00, 0x28, 0x10, 0x7C, 0x10, 0x28, 0x00,  // 2A  42 *
0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00,  // 2B  43 +
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20,  // 2C  44 ,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,  // 2D  45 -
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30,  // 2E  46 .
0x00, 0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00,  // 2F  47 /
0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38,  // 30  48 0
0x00, 0x10, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38,  // 31  49 1
0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x20, 0x7C,  // 32  50 2
0x00, 0x38, 0x44, 0x04, 0x18, 0x04, 0x44, 0x38,  // 33  51 3
0x00, 0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x08,  // 34  52 4
0x00, 0x7C, 0x40, 0x78, 0x04, 0x04, 0x44, 0x38,  // 35  53 5
0x00, 0x18, 0x20, 0x40, 0x78, 0x44, 0x44, 0x38,  // 36  54 6
0x00, 0x7C, 0x04, 0x08, 0x10, 0x20, 0x20, 0x20,  // 37  55 7
0x00, 0x38, 0x44, 0x44, 0x38, 0x44, 0x44, 0x38,  // 38  56 8
0x00, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x08, 0x30,  // 39  57 9
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00,  // 3A  58 :
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x10, 0x20,  // 3B  59 ;
0x00, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08,  // 3C  60 <
0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00,  // 3D  61 =
0x00, 0x20, 0x10, 0x08, 0x04, 0x08, 0x10, 0x20,  // 3E  62 >
0x00, 0x38, 0x44, 0x04, 0x08, 0x10, 0x00, 0x10,  // 3F  63 ?
0x00, 0x38, 0x44, 0x5C, 0x54, 0x5C, 0x40, 0x38,  // 40  64 @
0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44,  // 41  65 A
0x00, 0x78, 0x24, 0x24, 0x38, 0x24, 0x24, 0x78,  // 42  66 B
0x00, 0x38, 0x44, 0x40, 0x40, 0x40, 0x44, 0x38,  // 43  67 C
0x00, 0x78, 0x24, 0x24, 0x24, 0x24, 0x24, 0x78,  // 44  68 D
0x00, 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x7C,  // 45  69 E
0x00, 0x7C, 0x40, 0x40, 0x78, 0x40, 0x40, 0x40,  // 46  70 F
0x00, 0x3C, 0x40, 0x40, 0x5C, 0x44, 0x44, 0x38,  // 47  71 G
0x00, 0x44, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44,  // 48  72 H
0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x10, 0x38,  // 49  73 I
0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38,  // 4A  74 J
0x00, 0x44, 0x48, 0x50, 0x60, 0x50, 0x48, 0x44,  // 4B  75 K
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C,  // 4C  76 L
0x00, 0x44, 0x6C, 0x54, 0x54, 0x44, 0x44, 0x44,  // 4D  77 M
0x00, 0x44, 0x64, 0x64, 0x54, 0x4C, 0x4C, 0x44,  // 4E  78 N
0x00, 0x7C, 0x44, 0x44, 0x44, 0x44, 0x44, 0x7C,  // 4F  79 O
0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x40,  // 50  80 P
0x00, 0x38, 0x44, 0x44, 0x44, 0x54, 0x48, 0x34,  // 51  81 Q
0x00, 0x78, 0x44, 0x44, 0x78, 0x50, 0x48, 0x44,  // 52  82 R
0x00, 0x38, 0x44, 0x40, 0x38, 0x04, 0x44, 0x38,  // 53  83 S
0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,  // 54  84 T
0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38,  // 55  85 U
0x00, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10,  // 56  86 V
0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x54, 0x28,  // 57  87 W
0x00, 0x44, 0x44, 0x28, 0x10, 0x28, 0x44, 0x44,  // 58  88 X
0x00, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10,  // 59  89 Y
0x00, 0x7C, 0x04, 0x08, 0x10, 0x20, 0x40, 0x7C,  // 5A  90 Z
0x00, 0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38,  // 5B  91 [
0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00,  // 5C  92 '\'
0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x08, 0x38,  // 5D  93 ]
0x00, 0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00,  // 5E  94 ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C,  // 5F  95 _
// 994AGROM.Bin 0x0874
0x00, 0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00,  // 60  96 `
0x00, 0x00, 0x00, 0x38, 0x44, 0x7C, 0x44, 0x44,  // 61  97 a
0x00, 0x00, 0x00, 0x78, 0x24, 0x38, 0x24, 0x78,  // 62  98 b
0x00, 0x00, 0x00, 0x3C, 0x40, 0x40, 0x40, 0x3C,  // 63  99 c
0x00, 0x00, 0x00, 0x78, 0x24, 0x24, 0x24, 0x78,  // 64 100 d
0x00, 0x00, 0x00, 0x7C, 0x40, 0x78, 0x40, 0x7C,  // 65 101 e
0x00, 0x00, 0x00, 0x7C, 0x40, 0x78, 0x40, 0x40,  // 66 102 f
0x00, 0x00, 0x00, 0x3C, 0x40, 0x5C, 0x44, 0x38,  // 67 103 g
0x00, 0x00, 0x00, 0x44, 0x44, 0x7C, 0x44, 0x44,  // 68 104 h
0x00, 0x00, 0x00, 0x38, 0x10, 0x10, 0x10, 0x38,  // 69 105 i
0x00, 0x00, 0x00, 0x08, 0x08, 0x08, 0x48, 0x30,  // 6A 106 j
0x00, 0x00, 0x00, 0x24, 0x28, 0x30, 0x28, 0x24,  // 6B 107 k
0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x7C,  // 6C 108 l
0x00, 0x00, 0x00, 0x44, 0x6C, 0x54, 0x44, 0x44,  // 6D 109 m
0x00, 0x00, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,  // 6E 110 n
0x00, 0x00, 0x00, 0x7C, 0x44, 0x44, 0x44, 0x7C,  // 6F 111 o
0x00, 0x00, 0x00, 0x78, 0x44, 0x78, 0x40, 0x40,  // 70 112 p
0x00, 0x00, 0x00, 0x38, 0x44, 0x54, 0x48, 0x34,  // 71 113 q
0x00, 0x00, 0x00, 0x78, 0x44, 0x78, 0x48, 0x44,  // 72 114 r
0x00, 0x00, 0x00, 0x3C, 0x40, 0x38, 0x04, 0x78,  // 73 115 s
0x00, 0x00, 0x00, 0x7C, 0x10, 0x10, 0x10, 0x10,  // 74 116 t
0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x38,  // 75 117 u
0x00, 0x00, 0x00, 0x44, 0x44, 0x28, 0x28, 0x10,  // 76 118 v
0x00, 0x00, 0x00, 0x44, 0x44, 0x54, 0x54, 0x28,  // 77 119 w
0x00, 0x00, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44,  // 78 120 x
0x00, 0x00, 0x00, 0x44, 0x28, 0x10, 0x10, 0x10,  // 79 121 y
0x00, 0x00, 0x00, 0x7C, 0x08, 0x10, 0x20, 0x7C,  // 7A 122 z
0x00, 0x18, 0x20, 0x20, 0x40, 0x20, 0x20, 0x18,  // 7B 123 {
0x00, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10,  // 7C 124 |
0x00, 0x30, 0x08, 0x08, 0x04, 0x08, 0x08, 0x30,  // 7D 125 }
0x00, 0x00, 0x20, 0x54, 0x08, 0x00, 0x00, 0x00,  // 7E 126 ~
// 994AGROM.Bin 0x0998
0x3C, 0x42, 0x99, 0xA1, 0xA1, 0x99, 0x42, 0x3C   // 7F 127 (C)
};

// 994AGROM.Bin 0x0950
uint8_t const ti_logo[3 * 3 * 8] = {
// TI Logo
0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,  // Row 1
0xFC, 0x04, 0x05, 0x05, 0x04, 0x06, 0x02, 0x0C,  //
0x00, 0x80, 0x40, 0x40, 0x80, 0x00, 0x0C, 0x12,  //
0xFF, 0x80, 0xC0, 0x40, 0x60, 0x38, 0x1C, 0x0E,  // Row 2
0x19, 0x21, 0x21, 0x3D, 0x05, 0x05, 0x05, 0xC4,  //
0xBA, 0x8A, 0x8A, 0xBA, 0xA1, 0xA1, 0xA1, 0x22,  //
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // Row 3
0xE2, 0x31, 0x10, 0x18, 0x0C, 0x07, 0x03, 0x00,  //
0x4C, 0x90, 0x20, 0x40, 0x40, 0x20, 0xE0, 0x00   //
};


// --- TI 99/8 ---

// g0_f830.bin 0x050D
// Uppercase only
// 32 column
uint8_t const ti_998_large[64 * 8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 20  32
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x20,  // 21  33 !
0x48, 0x48, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,  // 22  34 "
0x00, 0x48, 0xFC, 0x48, 0x48, 0xFC, 0x48, 0x00,  // 23  35 #
0x10, 0x3C, 0x50, 0x38, 0x14, 0x78, 0x10, 0x00,  // 24  36 $
0xC0, 0xC4, 0x08, 0x10, 0x20, 0x40, 0x8C, 0x0C,  // 25  37 %
0x60, 0x90, 0x90, 0x60, 0x60, 0x94, 0x88, 0x74,  // 26  38 &
0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,  // 27  39 '
0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x08,  // 28  40 (
0x40, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x40,  // 29  41 )
0x00, 0x00, 0x48, 0x30, 0xCC, 0x30, 0x48, 0x00,  // 2A  42 *
0x00, 0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00,  // 2B  43 +
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20,  // 2C  44 ,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,  // 2D  45 -
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30,  // 2E  46 .
0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00,  // 2F  47 /
0x38, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38,  // 30  48 0
0x10, 0x30, 0x50, 0x10, 0x10, 0x10, 0x10, 0x7C,  // 31  49 1
0x78, 0x84, 0x04, 0x08, 0x10, 0x20, 0x40, 0xFC,  // 32  50 2
0x78, 0x84, 0x04, 0x38, 0x04, 0x04, 0x84, 0x78,  // 33  51 3
0x0C, 0x14, 0x24, 0x44, 0x84, 0xFC, 0x04, 0x04,  // 34  52 4
0xF8, 0x80, 0x80, 0xF8, 0x04, 0x04, 0x84, 0x78,  // 35  53 5
0x78, 0x80, 0x80, 0xF8, 0x84, 0x84, 0x84, 0x78,  // 36  54 6
0xFC, 0x04, 0x04, 0x08, 0x10, 0x20, 0x40, 0x40,  // 37  55 7
0x78, 0x84, 0x84, 0x78, 0x84, 0x84, 0x84, 0x78,  // 38  56 8
0x78, 0x84, 0x84, 0x84, 0x7C, 0x04, 0x04, 0x78,  // 39  57 9
0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x30, 0x00,  // 3A  58 :
0x00, 0x30, 0x30, 0x00, 0x00, 0x30, 0x10, 0x20,  // 3B  59 ;
0x00, 0x08, 0x10, 0x20, 0x40, 0x20, 0x10, 0x08,  // 3C  60 <
0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00,  // 3D  61 =
0x00, 0x40, 0x20, 0x10, 0x08, 0x10, 0x20, 0x40,  // 3E  62 >
0x38, 0x44, 0x04, 0x08, 0x10, 0x10, 0x00, 0x10,  // 3F  63 ?
0x00, 0x78, 0x84, 0x9C, 0xA4, 0x98, 0x80, 0x7C,  // 40  64 @
0x78, 0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84,  // 41  65 A
0xF8, 0x44, 0x44, 0x78, 0x44, 0x44, 0x44, 0xF8,  // 42  66 B
0x78, 0x84, 0x80, 0x80, 0x80, 0x80, 0x84, 0x78,  // 43  67 C
0xF8, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xF8,  // 44  68 D
0xFC, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0xFC,  // 45  69 E
0xFC, 0x80, 0x80, 0xF0, 0x80, 0x80, 0x80, 0x80,  // 46  70 F
0x78, 0x84, 0x80, 0x80, 0x9C, 0x84, 0x84, 0x78,  // 47  71 G
0x84, 0x84, 0x84, 0xFC, 0x84, 0x84, 0x84, 0x84,  // 48  72 H
0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x7C,  // 49  73 I
0x04, 0x04, 0x04, 0x04, 0x04, 0x84, 0x84, 0x78,  // 4A  74 J
0x88, 0x90, 0xA0, 0xC0, 0xA0, 0x90, 0x88, 0x84,  // 4B  75 K
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C,  // 4C  76 L
0x84, 0xCC, 0xB4, 0x84, 0x84, 0x84, 0x84, 0x84,  // 4D  77 M
0x84, 0xC4, 0xA4, 0x94, 0x8C, 0x84, 0x84, 0x84,  // 4E  78 N
0xFC, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0xFC,  // 4F  79 O
0xF8, 0x84, 0x84, 0x84, 0xF8, 0x80, 0x80, 0x80,  // 50  80 P
0x78, 0x84, 0x84, 0x84, 0x84, 0x94, 0x88, 0x74,  // 51  81 Q
0xF8, 0x84, 0x84, 0x84, 0xF8, 0x90, 0x88, 0x84,  // 52  82 R
0x78, 0x84, 0x80, 0x78, 0x04, 0x04, 0x84, 0x78,  // 53  83 S
0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,  // 54  84 T
0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x78,  // 55  85 U
0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10,  // 56  86 V
0x84, 0x84, 0x84, 0x84, 0x84, 0xB4, 0xCC, 0x84,  // 57  87 W
0x84, 0x84, 0x48, 0x30, 0x30, 0x48, 0x84, 0x84,  // 58  88 X
0x44, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10,  // 59  89 Y
0xFC, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0xFC,  // 5A  90 Z
0x38, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x38,  // 5B  91 [
0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00,  // 5C  92 '\'
0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x70,  // 5D  93 ]
0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00,  // 5E  94 ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC   // 5F  95 _
};

// g0_f830.bin 0x070D
// Upper and lower case
// 40 column
uint8_t const ti_998_40col[96 * 8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 20  32
0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00,  // 21  33 !
0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00,  // 22  34 "
0x00, 0x28, 0x7C, 0x28, 0x28, 0x7C, 0x28, 0x00,  // 23  35 #
0x00, 0x38, 0x54, 0x30, 0x18, 0x54, 0x38, 0x00,  // 24  36 $
0x00, 0x44, 0x4C, 0x18, 0x30, 0x64, 0x44, 0x00,  // 25  37 %
0x00, 0x20, 0x50, 0x20, 0x54, 0x48, 0x34, 0x00,  // 26  38 &
0x00, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00,  // 27  39 '
0x00, 0x08, 0x10, 0x10, 0x10, 0x10, 0x08, 0x00,  // 28  40 (
0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00,  // 29  41 )
0x00, 0x44, 0x28, 0x7C, 0x28, 0x44, 0x00, 0x00,  // 2A  42 *
0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00,  // 2B  43 +
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20,  // 2C  44 ,
0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00,  // 2D  45 -
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00,  // 2E  46 .
0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,  // 2F  47 /
0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,  // 30  48 0
0x00, 0x10, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00,  // 31  49 1
0x00, 0x38, 0x44, 0x08, 0x10, 0x20, 0x7C, 0x00,  // 32  50 2
0x00, 0x38, 0x44, 0x18, 0x04, 0x44, 0x38, 0x00,  // 33  51 3
0x00, 0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x00,  // 34  52 4
0x00, 0x78, 0x40, 0x78, 0x04, 0x44, 0x38, 0x00,  // 35  53 5
0x00, 0x38, 0x40, 0x78, 0x44, 0x44, 0x38, 0x00,  // 36  54 6
0x00, 0x7C, 0x04, 0x08, 0x10, 0x20, 0x20, 0x00,  // 37  55 7
0x00, 0x38, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00,  // 38  56 8
0x00, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x78, 0x00,  // 39  57 9
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00,  // 3A  58 :
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x10, 0x20,  // 3B  59 ;
0x00, 0x00, 0x10, 0x20, 0x40, 0x20, 0x10, 0x00,  // 3C  60 <
0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00,  // 3D  61 =
0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00,  // 3E  62 >
0x00, 0x38, 0x44, 0x08, 0x10, 0x00, 0x10, 0x00,  // 3F  63 ?
0x00, 0x38, 0x44, 0x54, 0x58, 0x40, 0x3C, 0x00,  // 40  64 @
0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x00,  // 41  65 A
0x00, 0x78, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00,  // 42  66 B
0x00, 0x38, 0x44, 0x40, 0x40, 0x44, 0x38, 0x00,  // 43  67 C
0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00,  // 44  68 D
0x00, 0x7C, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00,  // 45  69 E
0x00, 0x7C, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00,  // 46  70 F
0x00, 0x38, 0x44, 0x40, 0x4C, 0x44, 0x38, 0x00,  // 47  71 G
0x00, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00,  // 48  72 H
0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // 49  73 I
0x00, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00,  // 4A  74 J
0x00, 0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00,  // 4B  75 K
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C, 0x00,  // 4C  76 L
0x00, 0x44, 0x6C, 0x54, 0x44, 0x44, 0x44, 0x00,  // 4D  77 M
0x00, 0x44, 0x64, 0x54, 0x54, 0x4C, 0x44, 0x00,  // 4E  78 N
0x00, 0x7C, 0x44, 0x44, 0x44, 0x44, 0x7C, 0x00,  // 4F  79 O
0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x00,  // 50  80 P
0x00, 0x38, 0x44, 0x44, 0x54, 0x4C, 0x3C, 0x00,  // 51  81 Q
0x00, 0x78, 0x44, 0x44, 0x78, 0x48, 0x44, 0x00,  // 52  82 R
0x00, 0x38, 0x44, 0x30, 0x08, 0x44, 0x38, 0x00,  // 53  83 S
0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,  // 54  84 T
0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,  // 55  85 U
0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00,  // 56  86 V
0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x28, 0x00,  // 57  87 W
0x00, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x00,  // 58  88 X
0x00, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00,  // 59  89 Y
0x00, 0x7C, 0x08, 0x10, 0x20, 0x40, 0x7C, 0x00,  // 5A  90 Z
0x00, 0x38, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00,  // 5B  91 [
0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00,  // 5C  92 '\'
0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00,  // 5D  93 ]
0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00,  // 5E  94 ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00,  // 5F  95 _
0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,  // 60  96 `
0x00, 0x00, 0x00, 0x38, 0x48, 0x48, 0x3C, 0x00,  // 61  97 a
0x00, 0x20, 0x20, 0x38, 0x24, 0x24, 0x38, 0x00,  // 62  98 b
0x00, 0x00, 0x00, 0x1C, 0x20, 0x20, 0x1C, 0x00,  // 63  99 c
0x00, 0x04, 0x04, 0x1C, 0x24, 0x24, 0x1C, 0x00,  // 64 100 d
0x00, 0x00, 0x00, 0x1C, 0x28, 0x30, 0x1C, 0x00,  // 65 101 e
0x00, 0x0C, 0x10, 0x38, 0x10, 0x10, 0x10, 0x00,  // 66 102 f
0x00, 0x00, 0x00, 0x1C, 0x24, 0x1C, 0x04, 0x38,  // 67 103 g
0x00, 0x20, 0x20, 0x38, 0x24, 0x24, 0x24, 0x00,  // 68 104 h
0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x38, 0x00,  // 69 105 i
0x00, 0x08, 0x00, 0x08, 0x08, 0x08, 0x48, 0x30,  // 6A 106 j
0x00, 0x20, 0x20, 0x24, 0x38, 0x28, 0x24, 0x00,  // 6B 107 k
0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // 6C 108 l
0x00, 0x00, 0x00, 0x78, 0x54, 0x54, 0x54, 0x00,  // 6D 109 m
0x00, 0x00, 0x00, 0x38, 0x24, 0x24, 0x24, 0x00,  // 6E 110 n
0x00, 0x00, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00,  // 6F 111 o
0x00, 0x00, 0x00, 0x38, 0x24, 0x38, 0x20, 0x20,  // 70 112 p
0x00, 0x00, 0x00, 0x1C, 0x24, 0x1C, 0x04, 0x04,  // 71 113 q
0x00, 0x00, 0x00, 0x28, 0x34, 0x20, 0x20, 0x00,  // 72 114 r
0x00, 0x00, 0x00, 0x1C, 0x30, 0x0C, 0x38, 0x00,  // 73 115 s
0x00, 0x10, 0x10, 0x38, 0x10, 0x10, 0x0C, 0x00,  // 74 116 t
0x00, 0x00, 0x00, 0x24, 0x24, 0x24, 0x1C, 0x00,  // 75 117 u
0x00, 0x00, 0x00, 0x44, 0x28, 0x28, 0x10, 0x00,  // 76 118 v
0x00, 0x00, 0x00, 0x44, 0x54, 0x54, 0x28, 0x00,  // 77 119 w
0x00, 0x00, 0x00, 0x24, 0x18, 0x18, 0x24, 0x00,  // 78 120 x
0x00, 0x00, 0x00, 0x24, 0x24, 0x1C, 0x04, 0x38,  // 79 121 y
0x00, 0x00, 0x00, 0x3C, 0x08, 0x10, 0x3C, 0x00,  // 7A 122 z
0x00, 0x0C, 0x10, 0x10, 0x20, 0x10, 0x10, 0x0C,  // 7B 123 {
0x00, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10,  // 7C 124 |
0x00, 0x60, 0x10, 0x10, 0x08, 0x10, 0x10, 0x60,  // 7D 125 }
0x00, 0x00, 0x20, 0x54, 0x08, 0x00, 0x00, 0x00,  // 7E 126 ~
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // 7F 127
};

#if 0
// TI logo
// g0_f830.bin 0x09B4
0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,  // 00   0
0xFC, 0x04, 0x05, 0x05, 0x04, 0x06, 0x02, 0x0C,  // 01   1
0x00, 0x80, 0x40, 0x40, 0x80, 0x00, 0x0C, 0x12,  // 02   2
0xFF, 0x80, 0xC0, 0x40, 0x60, 0x38, 0x1C, 0x0E,  // 03   3
0x19, 0x21, 0x21, 0x3D, 0x05, 0x05, 0x05, 0xC4,  // 04   4
0xBA, 0x8A, 0x8A, 0xBA, 0xA1, 0xA1, 0xA1, 0x22,  // 05   5
0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 06   6
0xE2, 0x31, 0x10, 0x18, 0x0C, 0x07, 0x03, 0x00,  // 07   7
0x4C, 0x90, 0x20, 0x40, 0x40, 0x20, 0xE0, 0x00   // 08   8

// (C) Copyright
// g0_f830.bin 0x09FC
0x3C, 0x42, 0x99, 0xA1, 0xA1, 0x99, 0x42, 0x3C   // 00   0
#endif

// g2_f850.bin 0x011A
// Graphics, upper and lower case
// 32 column
uint8_t const ti_998_32col[128 * 8] = {
0x00, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C, 0x7C,  // 00   0
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,  // 01   1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,  // 02   2
0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18,  // 03   3
0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,  // 04   4
0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18,  // 05   5
0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,  // 06   6
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 07   7
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 08   8
0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,  // 09   9
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 0A  10
0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,  // 0B  11
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 0C  12
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 0D  13
0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x18, 0x18,  // 0E  14
0x00, 0x00, 0x00, 0x1F, 0x1F, 0x18, 0x18, 0x18,  // 0F  15
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 10  16
0x18, 0x18, 0x18, 0xF8, 0xF8, 0x00, 0x00, 0x00,  // 11  17
0x18, 0x18, 0x18, 0x1F, 0x1F, 0x00, 0x00, 0x00,  // 12  18
0x18, 0x18, 0x18, 0xFF, 0xFF, 0x00, 0x00, 0x00,  // 13  19
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x18, 0x18, 0x18,  // 14  20
0x18, 0x18, 0x18, 0xF8, 0xF8, 0x18, 0x18, 0x18,  // 15  21
0x18, 0x18, 0x18, 0x1F, 0x1F, 0x18, 0x18, 0x18,  // 16  22
0xC3, 0xC3, 0x66, 0x3C, 0x3C, 0x66, 0xC3, 0xC3,  // 17  23
0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,  // 18  24
0x00, 0x10, 0x20, 0x7C, 0x20, 0x10, 0x00, 0x00,  // 19  25
0x00, 0x10, 0x08, 0x7C, 0x08, 0x10, 0x00, 0x00,  // 1A  26
0x00, 0x10, 0x10, 0x10, 0x54, 0x38, 0x10, 0x00,  // 1B  27
0x00, 0x10, 0x38, 0x54, 0x10, 0x10, 0x10, 0x00,  // 1C  28
0x00, 0x00, 0x00, 0xF8, 0xF8, 0x18, 0x18, 0x18,  // 1D  29
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 1E  30
0x00, 0x1C, 0x0C, 0x14, 0x20, 0x40, 0x00, 0x00,  // 1F  31
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 20  32
0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x10, 0x00,  // 21  33 !
0x00, 0x28, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00,  // 22  34 "
0x00, 0x28, 0x7C, 0x28, 0x28, 0x7C, 0x28, 0x00,  // 23  35 #
0x00, 0x38, 0x54, 0x30, 0x18, 0x54, 0x38, 0x00,  // 24  36 $
0x00, 0x44, 0x4C, 0x18, 0x30, 0x64, 0x44, 0x00,  // 25  37 %
0x00, 0x20, 0x50, 0x20, 0x54, 0x48, 0x34, 0x00,  // 26  38 &
0x00, 0x08, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00,  // 27  39 '
0x00, 0x10, 0x20, 0x20, 0x20, 0x20, 0x10, 0x00,  // 28  40 (
0x00, 0x20, 0x10, 0x10, 0x10, 0x10, 0x20, 0x00,  // 29  41 )
0x00, 0x44, 0x28, 0x7C, 0x28, 0x44, 0x00, 0x00,  // 2A  42 *
0x00, 0x10, 0x10, 0x7C, 0x10, 0x10, 0x00, 0x00,  // 2B  43 +
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x10, 0x20,  // 2C  44 ,
0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00,  // 2D  45 -
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00,  // 2E  46 .
0x00, 0x04, 0x08, 0x10, 0x20, 0x40, 0x00, 0x00,  // 2F  47 /
0x00, 0x38, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,  // 30  48 0
0x00, 0x10, 0x30, 0x10, 0x10, 0x10, 0x38, 0x00,  // 31  49 1
0x00, 0x38, 0x44, 0x08, 0x10, 0x20, 0x7C, 0x00,  // 32  50 2
0x00, 0x38, 0x44, 0x18, 0x04, 0x44, 0x38, 0x00,  // 33  51 3
0x00, 0x08, 0x18, 0x28, 0x48, 0x7C, 0x08, 0x00,  // 34  52 4
0x00, 0x78, 0x40, 0x78, 0x04, 0x44, 0x38, 0x00,  // 35  53 5
0x00, 0x38, 0x40, 0x78, 0x44, 0x44, 0x38, 0x00,  // 36  54 6
0x00, 0x7C, 0x04, 0x08, 0x10, 0x20, 0x20, 0x00,  // 37  55 7
0x00, 0x38, 0x44, 0x38, 0x44, 0x44, 0x38, 0x00,  // 38  56 8
0x00, 0x38, 0x44, 0x44, 0x3C, 0x04, 0x78, 0x00,  // 39  57 9
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00,  // 3A  58 :
0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x10, 0x20,  // 3B  59 ;
0x00, 0x00, 0x10, 0x20, 0x40, 0x20, 0x10, 0x00,  // 3C  60 <
0x00, 0x00, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x00,  // 3D  61 =
0x00, 0x00, 0x10, 0x08, 0x04, 0x08, 0x10, 0x00,  // 3E  62 >
0x00, 0x38, 0x44, 0x08, 0x10, 0x00, 0x10, 0x00,  // 3F  63 ?
0x00, 0x38, 0x44, 0x54, 0x58, 0x40, 0x3C, 0x00,  // 40  64 @
0x00, 0x38, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x00,  // 41  65 A
0x00, 0x78, 0x44, 0x78, 0x44, 0x44, 0x78, 0x00,  // 42  66 B
0x00, 0x38, 0x44, 0x40, 0x40, 0x44, 0x38, 0x00,  // 43  67 C
0x00, 0x78, 0x44, 0x44, 0x44, 0x44, 0x78, 0x00,  // 44  68 D
0x00, 0x7C, 0x40, 0x78, 0x40, 0x40, 0x7C, 0x00,  // 45  69 E
0x00, 0x7C, 0x40, 0x78, 0x40, 0x40, 0x40, 0x00,  // 46  70 F
0x00, 0x38, 0x44, 0x40, 0x4C, 0x44, 0x38, 0x00,  // 47  71 G
0x00, 0x44, 0x44, 0x7C, 0x44, 0x44, 0x44, 0x00,  // 48  72 H
0x00, 0x38, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // 49  73 I
0x00, 0x04, 0x04, 0x04, 0x04, 0x44, 0x38, 0x00,  // 4A  74 J
0x00, 0x44, 0x48, 0x50, 0x70, 0x48, 0x44, 0x00,  // 4B  75 K
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7C, 0x00,  // 4C  76 L
0x00, 0x44, 0x6C, 0x54, 0x44, 0x44, 0x44, 0x00,  // 4D  77 M
0x00, 0x44, 0x64, 0x54, 0x54, 0x4C, 0x44, 0x00,  // 4E  78 N
0x00, 0x7C, 0x44, 0x44, 0x44, 0x44, 0x7C, 0x00,  // 4F  79 O
0x00, 0x78, 0x44, 0x44, 0x78, 0x40, 0x40, 0x00,  // 50  80 P
0x00, 0x38, 0x44, 0x44, 0x54, 0x4C, 0x3C, 0x00,  // 51  81 Q
0x00, 0x78, 0x44, 0x44, 0x78, 0x48, 0x44, 0x00,  // 52  82 R
0x00, 0x38, 0x44, 0x30, 0x08, 0x44, 0x38, 0x00,  // 53  83 S
0x00, 0x7C, 0x10, 0x10, 0x10, 0x10, 0x10, 0x00,  // 54  84 T
0x00, 0x44, 0x44, 0x44, 0x44, 0x44, 0x38, 0x00,  // 55  85 U
0x00, 0x44, 0x44, 0x44, 0x44, 0x28, 0x10, 0x00,  // 56  86 V
0x00, 0x44, 0x44, 0x44, 0x54, 0x54, 0x28, 0x00,  // 57  87 W
0x00, 0x44, 0x28, 0x10, 0x10, 0x28, 0x44, 0x00,  // 58  88 X
0x00, 0x44, 0x44, 0x28, 0x10, 0x10, 0x10, 0x00,  // 59  89 Y
0x00, 0x7C, 0x08, 0x10, 0x20, 0x40, 0x7C, 0x00,  // 5A  90 Z
0x00, 0x38, 0x20, 0x20, 0x20, 0x20, 0x38, 0x00,  // 5B  91 [
0x00, 0x00, 0x40, 0x20, 0x10, 0x08, 0x04, 0x00,  // 5C  92 '\'
0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00,  // 5D  93 ]
0x00, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x00,  // 5E  94 ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00,  // 5F  95 _
0x00, 0x20, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00,  // 60  96 `
0x00, 0x00, 0x00, 0x38, 0x48, 0x48, 0x3C, 0x00,  // 61  97 a
0x00, 0x40, 0x40, 0x70, 0x48, 0x48, 0x70, 0x00,  // 62  98 b
0x00, 0x00, 0x00, 0x38, 0x40, 0x40, 0x38, 0x00,  // 63  99 c
0x00, 0x08, 0x08, 0x38, 0x48, 0x48, 0x38, 0x00,  // 64 100 d
0x00, 0x00, 0x00, 0x38, 0x50, 0x60, 0x38, 0x00,  // 65 101 e
0x00, 0x18, 0x20, 0x70, 0x20, 0x20, 0x20, 0x00,  // 66 102 f
0x00, 0x00, 0x00, 0x38, 0x48, 0x38, 0x08, 0x70,  // 67 103 g
0x00, 0x40, 0x40, 0x70, 0x48, 0x48, 0x48, 0x00,  // 68 104 h
0x00, 0x10, 0x00, 0x30, 0x10, 0x10, 0x38, 0x00,  // 69 105 i
0x00, 0x08, 0x00, 0x08, 0x08, 0x08, 0x48, 0x30,  // 6A 106 j
0x00, 0x40, 0x40, 0x48, 0x70, 0x50, 0x48, 0x00,  // 6B 107 k
0x00, 0x30, 0x10, 0x10, 0x10, 0x10, 0x38, 0x00,  // 6C 108 l
0x00, 0x00, 0x00, 0x78, 0x54, 0x54, 0x54, 0x00,  // 6D 109 m
0x00, 0x00, 0x00, 0x70, 0x48, 0x48, 0x48, 0x00,  // 6E 110 n
0x00, 0x00, 0x00, 0x30, 0x48, 0x48, 0x30, 0x00,  // 6F 111 o
0x00, 0x00, 0x00, 0x70, 0x48, 0x70, 0x40, 0x40,  // 70 112 p
0x00, 0x00, 0x00, 0x38, 0x48, 0x38, 0x08, 0x08,  // 71 113 q
0x00, 0x00, 0x00, 0x50, 0x68, 0x40, 0x40, 0x00,  // 72 114 r
0x00, 0x00, 0x00, 0x38, 0x60, 0x18, 0x70, 0x00,  // 73 115 s
0x00, 0x20, 0x20, 0x70, 0x20, 0x20, 0x18, 0x00,  // 74 116 t
0x00, 0x00, 0x00, 0x48, 0x48, 0x48, 0x38, 0x00,  // 75 117 u
0x00, 0x00, 0x00, 0x44, 0x28, 0x28, 0x10, 0x00,  // 76 118 v
0x00, 0x00, 0x00, 0x44, 0x54, 0x54, 0x28, 0x00,  // 77 119 w
0x00, 0x00, 0x00, 0x48, 0x30, 0x30, 0x48, 0x00,  // 78 120 x
0x00, 0x00, 0x00, 0x48, 0x48, 0x38, 0x08, 0x70,  // 79 121 y
0x00, 0x00, 0x00, 0x78, 0x10, 0x20, 0x78, 0x00,  // 7A 122 z
0x00, 0x18, 0x20, 0x20, 0x40, 0x20, 0x20, 0x18,  // 7B 123 {
0x00, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x10,  // 7C 124 |
0x00, 0x60, 0x10, 0x10, 0x08, 0x10, 0x10, 0x60,  // 7D 125 }
0x00, 0x00, 0x20, 0x54, 0x08, 0x00, 0x00, 0x00,  // 7E 126 ~
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // 7F 127
};

 

Offline ozcar

  • Frequent Contributor
  • **
  • Posts: 322
  • Country: au
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #7 on: January 17, 2022, 03:00:27 am »
This is a situation where use of binary binary constants could make some sense.

Like this - not C but you get the idea (maybe):

Code: [Select]
CGDATA EQU * ; LCD CG RAM DATA
 FCB %00000000 ; 0
 FCB %00000000
 FCB %00000001
 FCB %00010010
 FCB %00010100
 FCB %00011000
 FCB %00011110
 FCB %00000000

 FCB %00000000 ; 1
 FCB %00000000
 FCB %00010000
 FCB %00001001
 FCB %00000101
 FCB %00000011
 FCB %00001111
 FCB %00000000

 FCB %00011110 ; 2
 FCB %00011000
 FCB %00010100
 FCB %00010010
 FCB %00000001
 FCB %00000000
 FCB %00000000
 FCB %00000000

 FCB %00001111 ; 3
 FCB %00000011
 FCB %00000101
 FCB %00001001
 FCB %00010000
 FCB %00000000
 FCB %00000000
 FCB %00000000

 FCB %00010000 ; 4
 FCB %00010000
 FCB %00010000
 FCB %00010000
 FCB %00010000
 FCB %00010000
 FCB %00010000
 FCB %00010000

 FCB %00011000 ; 5
 FCB %00011000
 FCB %00011000
 FCB %00011000
 FCB %00011000
 FCB %00011000
 FCB %00011000
 FCB %00011000

 FCB %00011100 ; 6
 FCB %00011100
 FCB %00011100
 FCB %00011100
 FCB %00011100
 FCB %00011100
 FCB %00011100
 FCB %00011100

 FCB %00011110 ; 7
 FCB %00011110
 FCB %00011110
 FCB %00011110
 FCB %00011110
 FCB %00011110
 FCB %00011110
 FCB %00011110



Ah, found I have something similar in some flavor of C++.
See if you can figure what these strange chars were for...

Code: [Select]
const uint8_t CGdata[] =
  {
        0b00001110,  // 0 '1'
0b00000100,
0b00000100,
0b00000100,
0b00000100,
0b00000110,
0b00000100,
0b00000000,

        0b00011111,  // 1 '2'
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00010001,
0b00001110,
0b00000000,

        0b00001110,  // 2 '3'
0b00010001,
0b00010000,
0b00001000,
0b00000100,
0b00001000,
0b00011111,
0b00000000,

        0b00001000,  // 3 '4'
0b00001000,
0b00011111,
0b00001001,
0b00001010,
0b00001100,
0b00001000,
0b00000000,

        0b00001110,  // 4 '5'
0b00010001,
0b00010000,
0b00010000,
0b00001111,
0b00000001,
0b00011111,
0b00000000,

        0b00000010,  // 5 '7'
0b00000010,
0b00000100,
0b00001000,
0b00010000,
0b00010000,
0b00011111,
0b00000000,

        0b00000110,  // 6 '.'
0b00000110,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,

        0b00000000,  // 7  unused
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000,
0b00000000
  };

« Last Edit: January 17, 2022, 03:28:11 am by ozcar »
 

Online oPossum

  • Super Contributor
  • ***
  • Posts: 1417
  • Country: us
  • Very dangerous - may attack at any time
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #8 on: January 17, 2022, 03:04:42 am »
RadioShack / Tandy Color Computer

Code: [Select]
// Motorola 6847 derived
BYTE byCoCoFont[256][12]={
0x00,0x00,0x00,0x1C,0x22,0x02,0x12,0x2A,0x2A,0x1E,0x00,0x00,
0x00,0x00,0x00,0x08,0x14,0x22,0x22,0x3E,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x3C,0x12,0x12,0x1C,0x12,0x12,0x3C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x20,0x20,0x20,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3C,0x12,0x12,0x12,0x12,0x12,0x3C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x20,0x3C,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x20,0x3C,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x20,0x2C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x3E,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x24,0x28,0x30,0x28,0x24,0x22,0x00,0x00,
0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x22,0x36,0x2A,0x2A,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x32,0x2A,0x26,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3C,0x22,0x22,0x3C,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x2A,0x24,0x1A,0x00,0x00,
0x00,0x00,0x00,0x3C,0x22,0x22,0x3C,0x28,0x24,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x10,0x08,0x04,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x2A,0x2A,0x36,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x14,0x08,0x14,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x14,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x1C,0x10,0x10,0x10,0x10,0x10,0x1C,0x00,0x00,
0x00,0x00,0x00,0x20,0x20,0x10,0x08,0x04,0x02,0x02,0x00,0x00,
0x00,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x1C,0x00,0x00,
0x00,0x00,0x00,0x08,0x1C,0x2A,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x08,0x10,0x3E,0x10,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x14,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x14,0x14,0x36,0x00,0x36,0x14,0x14,0x00,0x00,
0x00,0x00,0x00,0x08,0x1E,0x20,0x1C,0x02,0x3C,0x08,0x00,0x00,
0x00,0x00,0x00,0x32,0x32,0x04,0x08,0x10,0x26,0x26,0x00,0x00,
0x00,0x00,0x00,0x10,0x28,0x28,0x10,0x2A,0x24,0x1A,0x00,0x00,
0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x08,0x10,0x10,0x10,0x08,0x04,0x00,0x00,
0x00,0x00,0x00,0x10,0x08,0x04,0x04,0x04,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x1C,0x3E,0x1C,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0x04,0x08,0x10,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x08,0x14,0x22,0x22,0x22,0x14,0x08,0x00,0x00,
0x00,0x00,0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x1E,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x0C,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x04,0x0C,0x14,0x3E,0x04,0x04,0x04,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x3C,0x02,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x20,0x20,0x3C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x1C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x1C,0x02,0x02,0x1C,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x04,0x08,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x12,0x2A,0x2A,0x1E,0x00,0x00,
0x00,0x00,0x00,0x08,0x14,0x22,0x22,0x3E,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x3C,0x12,0x12,0x1C,0x12,0x12,0x3C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x20,0x20,0x20,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3C,0x12,0x12,0x12,0x12,0x12,0x3C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x20,0x3C,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x20,0x3C,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x20,0x2C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x3E,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x08,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x24,0x28,0x30,0x28,0x24,0x22,0x00,0x00,
0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x22,0x36,0x2A,0x2A,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x32,0x2A,0x26,0x22,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3C,0x22,0x22,0x3C,0x20,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x22,0x2A,0x24,0x1A,0x00,0x00,
0x00,0x00,0x00,0x3C,0x22,0x22,0x3C,0x28,0x24,0x22,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x10,0x08,0x04,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x22,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x14,0x14,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x22,0x2A,0x2A,0x36,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x14,0x08,0x14,0x22,0x22,0x00,0x00,
0x00,0x00,0x00,0x22,0x22,0x14,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x1C,0x10,0x10,0x10,0x10,0x10,0x1C,0x00,0x00,
0x00,0x00,0x00,0x20,0x20,0x10,0x08,0x04,0x02,0x02,0x00,0x00,
0x00,0x00,0x00,0x1C,0x04,0x04,0x04,0x04,0x04,0x1C,0x00,0x00,
0x00,0x00,0x00,0x08,0x1C,0x2A,0x08,0x08,0x08,0x08,0x00,0x00,
0x00,0x00,0x00,0x08,0x10,0x3E,0x10,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x14,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x14,0x14,0x36,0x00,0x36,0x14,0x14,0x00,0x00,
0x00,0x00,0x00,0x08,0x1E,0x20,0x1C,0x02,0x3C,0x08,0x00,0x00,
0x00,0x00,0x00,0x32,0x32,0x04,0x08,0x10,0x26,0x26,0x00,0x00,
0x00,0x00,0x00,0x10,0x28,0x28,0x10,0x2A,0x24,0x1A,0x00,0x00,
0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x08,0x10,0x10,0x10,0x08,0x04,0x00,0x00,
0x00,0x00,0x00,0x10,0x08,0x04,0x04,0x04,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x1C,0x3E,0x1C,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x08,0x08,0x3E,0x08,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
0x00,0x00,0x00,0x02,0x02,0x04,0x08,0x10,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x08,0x14,0x22,0x22,0x22,0x14,0x08,0x00,0x00,
0x00,0x00,0x00,0x08,0x18,0x08,0x08,0x08,0x08,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x1E,0x20,0x20,0x3E,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x0C,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x04,0x0C,0x14,0x3E,0x04,0x04,0x04,0x00,0x00,
0x00,0x00,0x00,0x3E,0x20,0x3C,0x02,0x02,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x20,0x20,0x3C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x3E,0x02,0x04,0x08,0x10,0x20,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x1C,0x22,0x22,0x1C,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x22,0x1C,0x02,0x02,0x1C,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x18,0x00,0x18,0x18,0x08,0x10,0x00,0x00,
0x00,0x00,0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x3E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,0x00,
0x00,0x00,0x00,0x1C,0x22,0x02,0x04,0x08,0x00,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};

BYTE byCoCo3Font[128][8]={
0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x10,
0x44,0x00,0x44,0x44,0x44,0x4C,0x34,0x00,
0x08,0x10,0x38,0x44,0x7C,0x40,0x38,0x00,
0x10,0x28,0x38,0x04,0x3C,0x44,0x3C,0x00,
0x28,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00,
0x20,0x10,0x38,0x04,0x3C,0x44,0x3C,0x00,
0x10,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00,
0x00,0x00,0x38,0x44,0x40,0x44,0x38,0x10,
0x10,0x28,0x38,0x44,0x7C,0x40,0x38,0x00,
0x28,0x00,0x38,0x44,0x7C,0x40,0x38,0x00,
0x20,0x10,0x38,0x44,0x7C,0x40,0x38,0x00,
0x28,0x00,0x30,0x10,0x10,0x10,0x38,0x00,
0x10,0x28,0x00,0x30,0x10,0x10,0x38,0x00,
0x00,0x18,0x24,0x38,0x24,0x24,0x38,0x40,
0x44,0x10,0x28,0x44,0x7C,0x44,0x44,0x00,
0x10,0x10,0x28,0x44,0x7C,0x44,0x44,0x00,
0x08,0x10,0x38,0x44,0x44,0x44,0x38,0x00,
0x00,0x00,0x68,0x14,0x3C,0x50,0x3C,0x00,
0x3C,0x50,0x50,0x78,0x50,0x50,0x5C,0x00,
0x10,0x28,0x38,0x44,0x44,0x44,0x38,0x00,
0x28,0x00,0x38,0x44,0x44,0x44,0x38,0x00,
0x00,0x00,0x38,0x4C,0x54,0x64,0x38,0x00,
0x10,0x28,0x00,0x44,0x44,0x4C,0x34,0x00,
0x20,0x10,0x00,0x44,0x44,0x4C,0x34,0x00,
0x38,0x4C,0x54,0x54,0x54,0x64,0x38,0x00,
0x44,0x38,0x44,0x44,0x44,0x44,0x38,0x00,
0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00,
0x38,0x40,0x38,0x44,0x38,0x04,0x38,0x00,
0x08,0x14,0x10,0x38,0x10,0x14,0x78,0x00,
0x10,0x10,0x7C,0x10,0x10,0x00,0x7C,0x00,
0x10,0x28,0x10,0x00,0x00,0x00,0x00,0x00,
0x08,0x14,0x10,0x38,0x10,0x50,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x00,
0x28,0x28,0x00,0x00,0x00,0x00,0x00,0x00,
0x28,0x28,0x6C,0x00,0x6C,0x28,0x28,0x00,
0x10,0x3C,0x40,0x38,0x04,0x78,0x10,0x00,
0x60,0x64,0x08,0x10,0x20,0x4C,0x0C,0x00,
0x20,0x50,0x50,0x20,0x54,0x48,0x34,0x00,
0x10,0x10,0x20,0x00,0x00,0x00,0x00,0x00,
0x08,0x10,0x20,0x20,0x20,0x10,0x08,0x00,
0x20,0x10,0x08,0x08,0x08,0x10,0x20,0x00,
0x00,0x10,0x54,0x38,0x38,0x54,0x10,0x00,
0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x20,
0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,
0x00,0x04,0x08,0x10,0x20,0x40,0x00,0x00,
0x38,0x44,0x4C,0x54,0x64,0x44,0x38,0x00,
0x10,0x30,0x10,0x10,0x10,0x10,0x38,0x00,
0x38,0x44,0x04,0x3C,0x40,0x40,0x7C,0x00,
0x38,0x44,0x04,0x18,0x04,0x44,0x38,0x00,
0x08,0x18,0x28,0x48,0x7C,0x08,0x08,0x00,
0x7C,0x40,0x78,0x04,0x04,0x44,0x38,0x00,
0x38,0x40,0x40,0x78,0x44,0x44,0x38,0x00,
0x7C,0x04,0x08,0x10,0x20,0x40,0x40,0x00,
0x38,0x44,0x44,0x38,0x44,0x44,0x38,0x00,
0x38,0x44,0x44,0x38,0x04,0x04,0x38,0x00,
0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,
0x00,0x00,0x10,0x00,0x00,0x10,0x10,0x20,
0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x00,
0x00,0x00,0x7C,0x00,0x7C,0x00,0x00,0x00,
0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,
0x38,0x44,0x04,0x08,0x10,0x00,0x10,0x00,
0x38,0x44,0x04,0x34,0x4C,0x4C,0x38,0x00,
0x10,0x28,0x44,0x44,0x7C,0x44,0x44,0x00,
0x78,0x24,0x24,0x38,0x24,0x24,0x78,0x00,
0x38,0x44,0x40,0x40,0x40,0x44,0x38,0x00,
0x78,0x24,0x24,0x24,0x24,0x24,0x78,0x00,
0x7C,0x40,0x40,0x78,0x40,0x40,0x7C,0x00,
0x7C,0x40,0x40,0x70,0x40,0x40,0x40,0x00,
0x38,0x44,0x40,0x40,0x4C,0x44,0x38,0x00,
0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x00,
0x38,0x10,0x10,0x10,0x10,0x10,0x38,0x00,
0x04,0x04,0x04,0x04,0x04,0x44,0x38,0x00,
0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x00,
0x40,0x40,0x40,0x40,0x40,0x40,0x7C,0x00,
0x44,0x6C,0x54,0x54,0x44,0x44,0x44,0x00,
0x44,0x44,0x64,0x54,0x4C,0x44,0x44,0x00,
0x38,0x44,0x44,0x44,0x44,0x44,0x38,0x00,
0x78,0x44,0x44,0x78,0x40,0x40,0x40,0x00,
0x38,0x44,0x44,0x44,0x54,0x48,0x34,0x00,
0x78,0x44,0x44,0x78,0x50,0x48,0x44,0x00,
0x38,0x44,0x40,0x38,0x04,0x44,0x38,0x00,
0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
0x44,0x44,0x44,0x44,0x44,0x44,0x38,0x00,
0x44,0x44,0x44,0x28,0x28,0x10,0x10,0x00,
0x44,0x44,0x44,0x44,0x54,0x6C,0x44,0x00,
0x44,0x44,0x28,0x10,0x28,0x44,0x44,0x00,
0x44,0x44,0x28,0x10,0x10,0x10,0x10,0x00,
0x7C,0x04,0x08,0x10,0x20,0x40,0x7C,0x00,
0x38,0x20,0x20,0x20,0x20,0x20,0x38,0x00,
0x00,0x40,0x20,0x10,0x08,0x04,0x00,0x00,
0x38,0x08,0x08,0x08,0x08,0x08,0x38,0x00,
0x10,0x38,0x54,0x10,0x10,0x10,0x10,0x00,
0x00,0x10,0x20,0x7C,0x20,0x10,0x00,0x00,
0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x38,0x04,0x3C,0x44,0x3C,0x00,
0x40,0x40,0x58,0x64,0x44,0x64,0x58,0x00,
0x00,0x00,0x38,0x44,0x40,0x44,0x38,0x00,
0x04,0x04,0x34,0x4C,0x44,0x4C,0x34,0x00,
0x00,0x00,0x38,0x44,0x7C,0x40,0x38,0x00,
0x08,0x14,0x10,0x38,0x10,0x10,0x10,0x00,
0x00,0x00,0x34,0x4C,0x4C,0x34,0x04,0x38,
0x40,0x40,0x58,0x64,0x44,0x44,0x44,0x00,
0x00,0x10,0x00,0x30,0x10,0x10,0x38,0x00,
0x04,0x00,0x04,0x04,0x04,0x04,0x44,0x38,
0x40,0x40,0x48,0x50,0x60,0x50,0x48,0x00,
0x30,0x10,0x10,0x10,0x10,0x10,0x38,0x00,
0x00,0x00,0x68,0x54,0x54,0x54,0x54,0x00,
0x00,0x00,0x58,0x64,0x44,0x44,0x44,0x00,
0x00,0x00,0x38,0x44,0x44,0x44,0x38,0x00,
0x00,0x00,0x78,0x44,0x44,0x78,0x40,0x40,
0x00,0x00,0x3C,0x44,0x44,0x3C,0x04,0x04,
0x00,0x00,0x58,0x64,0x40,0x40,0x40,0x00,
0x00,0x00,0x3C,0x40,0x38,0x04,0x78,0x00,
0x20,0x20,0x70,0x20,0x20,0x24,0x18,0x00,
0x00,0x00,0x44,0x44,0x44,0x4C,0x34,0x00,
0x00,0x00,0x44,0x44,0x44,0x28,0x10,0x00,
0x00,0x00,0x44,0x44,0x54,0x54,0x28,0x00,
0x00,0x00,0x44,0x28,0x10,0x28,0x44,0x00,
0x00,0x00,0x44,0x44,0x44,0x3C,0x04,0x38,
0x00,0x00,0x7C,0x08,0x10,0x20,0x7C,0x00,
0x08,0x10,0x10,0x20,0x10,0x10,0x08,0x00,
0x10,0x10,0x10,0x00,0x10,0x10,0x10,0x00,
0x20,0x10,0x10,0x08,0x10,0x10,0x20,0x00,
0x20,0x54,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,
};

 

Online T3sl4co1l

  • Super Contributor
  • ***
  • Posts: 21684
  • Country: us
  • Expert, Analog Electronics, PCB Layout, EMC
    • Seven Transistor Labs
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #9 on: January 17, 2022, 04:29:33 am »
In addition to the above, here's a real capture from a HD44780:


or formatted for my tool,
https://www.seventransistorlabs.com/Images/LCD_6x8_Charset.png
tool:
https://htmlpreview.github.io/?https://github.com/T3sl4co1l/fontenc/blob/master/font.html
which is probably simultaneously much more, and much less, help than you were expecting (as it handles a variety of formats, none of which have C source handy, alas..).

Tim
Seven Transistor Labs, LLC
Electronic design, from concept to prototype.
Bringing a project to life?  Send me a message!
 

Offline IDEngineerTopic starter

  • Super Contributor
  • ***
  • Posts: 1926
  • Country: us
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #10 on: January 17, 2022, 05:39:32 am »
Wow, thanks everyone! I'll start digesting all of the resources you've identified. Have to say, some of the data "looked" odd, very symmetrical and I can't quite identify the characters without penciling them out on paper (I used to be really good at doing that in my head). Time to clear out those cobwebs and find a good solution amongst all the references.

I'll end up using a subset, as all I need are uppercase and digits.

Thanks again!
 

Offline MarkF

  • Super Contributor
  • ***
  • Posts: 2548
  • Country: us
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #11 on: January 17, 2022, 07:11:32 am »
I digitized the Verdana font plus a few additional charater remappings:
Code: [Select]
#ifndef __FONT_H
#define __FONT_H

// Standard ASCII 5x8 font

const unsigned char font[] =
{
      0x00,0x00,0x00,0x00,0x00,  // space
      0x00,0x00,0x5f,0x00,0x00,  // !
      0x00,0x07,0x00,0x07,0x00,  // "
      0x14,0x7f,0x14,0x7f,0x14,  // #
      0x24,0x2a,0x6b,0x2a,0x12,  // $
      0x63,0x13,0x08,0x64,0x63,  // %
      0x36,0x49,0x56,0x20,0x50,  // &
      0x00,0x00,0x07,0x00,0x00,  // '
      0x00,0x3c,0x42,0x81,0x00,  // (
      0x00,0x81,0x42,0x3c,0x00,  // )
      0x14,0x08,0x3e,0x08,0x14,  // *
      0x08,0x08,0x3e,0x08,0x08,  // +
      0x00,0x80,0x60,0x00,0x00,  // ,
      0x08,0x08,0x08,0x08,0x08,  // -
      0x00,0x00,0x60,0x00,0x00,  // .
      0xc0,0x30,0x0c,0x03,0x00,  // /
      0x3e,0x51,0x49,0x45,0x3e,  // 0
      0x00,0x42,0x7f,0x40,0x00,  // 1
      0x62,0x51,0x49,0x49,0x46,  // 2
      0x22,0x41,0x49,0x49,0x36,  // 3
      0x18,0x14,0x12,0x7f,0x10,  // 4
      0x27,0x45,0x45,0x45,0x39,  // 5
      0x3c,0x4a,0x49,0x49,0x30,  // 6
      0x01,0x71,0x09,0x05,0x03,  // 7
      0x36,0x49,0x49,0x49,0x36,  // 8
      0x06,0x49,0x49,0x29,0x1e,  // 9
      0x00,0x00,0x6c,0x00,0x00,  // :
      0x00,0x80,0x6c,0x00,0x00,  // ;
      0x08,0x14,0x22,0x41,0x00,  // <
      0x24,0x24,0x24,0x24,0x24,  // =
      0x00,0x41,0x22,0x14,0x08,  // >
      0x02,0x01,0x51,0x09,0x06,  // ?

      0x3e,0x41,0x5d,0x55,0x1e,  // @
      0x7c,0x12,0x11,0x12,0x7c,  // A
      0x7f,0x49,0x49,0x49,0x36,  // B
      0x3e,0x41,0x41,0x41,0x22,  // C
      0x7f,0x41,0x41,0x41,0x3e,  // D
      0x7f,0x49,0x49,0x49,0x41,  // E
      0x7f,0x09,0x09,0x09,0x01,  // F
      0x3e,0x41,0x49,0x49,0x7a,  // G
      0x7f,0x08,0x08,0x08,0x7f,  // H
      0x00,0x41,0x7f,0x41,0x00,  // I
      0x20,0x40,0x40,0x40,0x3f,  // J
      0x7f,0x08,0x14,0x22,0x41,  // K
      0x7f,0x40,0x40,0x40,0x40,  // L
      0x7f,0x02,0x0c,0x02,0x7f,  // M
      0x7f,0x04,0x08,0x10,0x7f,  // N
      0x3e,0x41,0x41,0x41,0x3e,  // O
      0x7f,0x09,0x09,0x09,0x06,  // P
      0x3e,0x41,0x51,0x21,0x5e,  // Q
      0x7f,0x09,0x19,0x29,0x46,  // R
      0x26,0x49,0x49,0x49,0x32,  // S
      0x01,0x01,0x7f,0x01,0x01,  // T
      0x3f,0x40,0x40,0x40,0x3f,  // U
      0x1f,0x20,0x40,0x20,0x1f,  // V
      0x1f,0x60,0x18,0x60,0x1f,  // W
      0x63,0x14,0x08,0x14,0x63,  // X
      0x03,0x04,0x78,0x04,0x03,  // Y
      0x61,0x51,0x49,0x45,0x43,  // Z
      0x00,0xff,0x81,0x81,0x00,  // [
      0x03,0x0c,0x30,0xc0,0x00,  // backslash
      0x00,0x81,0x81,0xff,0x00,  // ]
      0x04,0x02,0x01,0x02,0x04,  // ^
      0x80,0x80,0x80,0x80,0x80,  // _

      0x06,0x09,0x09,0x06,0x00,  // ` (Degree symbol)
      0x20,0x54,0x54,0x54,0x78,  // a
      0x7f,0x48,0x48,0x48,0x30,  // b
      0x38,0x44,0x44,0x44,0x00,  // c
      0x30,0x48,0x48,0x48,0x7f,  // d
      0x38,0x54,0x54,0x54,0x08,  // e
      0x08,0x7e,0x09,0x09,0x00,  // f
      0x18,0xa4,0xa4,0xa4,0x7c,  // g
      0x7f,0x08,0x08,0x70,0x00,  // h
      0x00,0x00,0x7d,0x40,0x00,  // i
      0x40,0x80,0x84,0x7d,0x00,  // j
      0x7f,0x10,0x28,0x44,0x00,  // k
      0x00,0x00,0x7f,0x40,0x00,  // l
      0x7c,0x04,0x18,0x04,0x78,  // m
      0x7c,0x04,0x04,0x78,0x00,  // n
      0x38,0x44,0x44,0x44,0x38,  // o
      0xfc,0x24,0x24,0x24,0x18,  // p
      0x18,0x24,0x24,0x24,0xfc,  // q
      0x7c,0x08,0x04,0x04,0x00,  // r
      0x08,0x54,0x54,0x54,0x20,  // s
      0x04,0x3e,0x44,0x44,0x00,  // t
      0x3c,0x40,0x40,0x20,0x7c,  // u
      0x1c,0x20,0x40,0x20,0x1c,  // v
      0x3c,0x60,0x30,0x60,0x3c,  // w
      0x6c,0x10,0x10,0x6c,0x00,  // x
      0x9c,0xa0,0x60,0x3c,0x00,  // y
      0x64,0x54,0x54,0x4c,0x00,  // z
      0x00,0x08,0x76,0x81,0x81,  // {
      0x00,0x00,0xff,0x00,0x00,  // |
      0x81,0x81,0x76,0x08,0x00,  // }
      0x4c,0x72,0x02,0x72,0x4c,  // ~ (Omega character)
      0x55,0x2a,0x55,0x2a,0x55   // del
};

#endif


And a little code:
Code: [Select]
void SSD1351_DrawTxt(int x0, int y0, int size, color_t color, char *str)
{
   uint8_t x,y,cc,ptr;

   ptr=0;
   while (str[ptr] != 0) {
      for (x=0;x<5&&str[ptr]>32;x++) {
         cc=font[(str[ptr]-32)*5+x];
         for (y=0;y<8;y++) {
            if (cc&1) {
               if (size>1) {
                  SSD1351_FillRectangle(x0+x*size,y0+y*size,size,size,color);
               } else {
                  SSD1351_DrawPixel(x0+x,y0+y,color);
               }
            }
            cc >>= 1;
         }
      }
      ptr++;
      x0+=size*6;
      if (x0>SSD1351_WIDTH-size*6) {x0=0;  y0+=size*9;}
   }
}

« Last Edit: January 17, 2022, 07:15:36 am by MarkF »
 

Offline mayor

  • Regular Contributor
  • *
  • Posts: 234
  • Country: ca
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #12 on: January 17, 2022, 11:42:10 am »
I wrote a TrueType to C array converter for a project a while back. If that can help, I'll clean it up and post it on GitHub. It's easily modifiable, lemme know.
 

Offline IDEngineerTopic starter

  • Super Contributor
  • ***
  • Posts: 1926
  • Country: us
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #13 on: April 06, 2022, 11:25:06 pm »
Finally getting back to this project. What I'm not finding so far is a standard 7x9 font. That is, 7 pixels wide by 9 pixels tall. In addition to providing a more pleasing appearance than the older 5x7 standard, the 7 pixel width makes intercharacter spacing easy by writing a byte for each row and leaving the rightmost bit clear. Nine byte writes per character, done.

One of the 7x9 fonts above got pretty close, but downloading it proved "difficult". I only need 26 uppercase, 10 digits, and a couple of punctuation marks... ~40 chars, nine bytes each, so ~360 bytes total. I may just generate them by hand like the good old days.

Thanks!
« Last Edit: April 06, 2022, 11:40:38 pm by IDEngineer »
 

Offline DavidAlfa

  • Super Contributor
  • ***
  • Posts: 5907
  • Country: es
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #14 on: April 07, 2022, 12:01:57 am »
Did you check u8g2?
Hantek DSO2x1x            Drive        FAQ          DON'T BUY HANTEK! (Aka HALF-MADE)
Stm32 Soldering FW      Forum      Github      Donate
 

Offline IDEngineerTopic starter

  • Super Contributor
  • ***
  • Posts: 1926
  • Country: us
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #15 on: April 07, 2022, 12:04:06 am »
Nope, I don't see a reference to that in this thread. What is it?

EDIT: Found it. Digging in now. Thanks!
 

Offline Nominal Animal

  • Super Contributor
  • ***
  • Posts: 6260
  • Country: fi
    • My home page and email address
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #16 on: April 07, 2022, 04:57:37 am »
It is rather easy to create such a font editor in HTML and JavaScript.  Here's my tiny bitmap editor, which is all of 102 lines of HTML and JavaScript, and can edit 8-bit wide bitmaps.  You can even choose if MSB is on the left or on the right.

Feel free to create your own based on mine (I consider it too simple to be copyrightable, but if it matters, I'll slap a CC0-1.0/Public Domain license on it).
 

Offline mikerj

  • Super Contributor
  • ***
  • Posts: 3240
  • Country: gb
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #17 on: April 07, 2022, 08:42:06 am »
Perhaps you could use the fonts in one of the numerous Arduino LCD libraries e.g. https://github.com/Sagittarius21/glcd-arduino/tree/279fdfc6a3936c86f6e5ce9b544993569799cd54/glcd/fonts
 

Offline emece67

  • Frequent Contributor
  • **
  • !
  • Posts: 614
  • Country: 00
Re: 5x7 or 7x9 dot matrix font files in C/C++?
« Reply #18 on: April 07, 2022, 09:41:14 am »
.
« Last Edit: August 19, 2022, 05:23:39 pm by emece67 »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf