From b4fc064979da65b0337cafa0c8552844a96f01c9 Mon Sep 17 00:00:00 2001 From: Augusto Baffa <7242662+abaffa@users.noreply.github.com> Date: Thu, 8 Feb 2024 14:11:06 -0300 Subject: [PATCH 1/7] . adding support to videx card on slot 3 . adding videx text fonts --- README.md | 22 + docs/apple2plus_videx_80columns1.jpg | Bin 0 -> 109014 bytes docs/apple2plus_videx_80columns2.jpg | Bin 0 -> 105268 bytes docs/apple2plus_videx_80columns3.jpg | Bin 0 -> 150892 bytes pico/CMakeLists.txt | 2 + pico/buffers.c | 4 + pico/buffers.h | 3 + pico/card_videx.c | 225 +++ pico/card_videx.h | 134 ++ pico/render.c | 44 +- pico/render.h | 4 + pico/render_videx_text.c | 144 ++ pico/scripts/dump_character_rom.py | 151 +- pico/textfont/textfont.h | 5 + pico/textfont/videx_apl.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_epson.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_french.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_german.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_inverse.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_katakana.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_normal.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_spanish.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_super_sub.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_symbol.c | 2317 ++++++++++++++++++++++++++ pico/textfont/videx_uppercase.c | 2317 ++++++++++++++++++++++++++ 25 files changed, 26149 insertions(+), 76 deletions(-) create mode 100644 docs/apple2plus_videx_80columns1.jpg create mode 100644 docs/apple2plus_videx_80columns2.jpg create mode 100644 docs/apple2plus_videx_80columns3.jpg create mode 100644 pico/card_videx.c create mode 100644 pico/card_videx.h create mode 100644 pico/render_videx_text.c create mode 100644 pico/textfont/videx_apl.c create mode 100644 pico/textfont/videx_epson.c create mode 100644 pico/textfont/videx_french.c create mode 100644 pico/textfont/videx_german.c create mode 100644 pico/textfont/videx_inverse.c create mode 100644 pico/textfont/videx_katakana.c create mode 100644 pico/textfont/videx_normal.c create mode 100644 pico/textfont/videx_spanish.c create mode 100644 pico/textfont/videx_super_sub.c create mode 100644 pico/textfont/videx_symbol.c create mode 100644 pico/textfont/videx_uppercase.c diff --git a/README.md b/README.md index f577e16..38e4fe3 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,28 @@ _thanks to @swetland for [this idea](https://github.com/markadev/AppleII-VGA/dis ![Live action shot](docs/installed_in_iie.jpg) +## 80 Columns support for AppleII+ + +This code implements a videx card virtually mapped to slot 3. The Apple2Vga can be used in slot 7 and let slot 3 empty. + +I found out that the videx card is not compatible to grappler+ (printer interface) 'cos they share the same banking rom solution using I/O STB address. I had to remove my printer interface to have the videx running :D. + +I decided to virtally map slot 3 directly from the memory in order to leave the devsel signal to change the character rom fonts. So the card can be used in slot 7 but it always maps videx card to slot 3. + +**AppleII+ running 80 Columms Videos** + + +[![AppleII Videx Videoterm 80 Columns card Demo running at AppleIIVga by Markadev](http://img.youtube.com/vi/jKAShbG-p9Y/0.jpg)](https://www.youtube.com/watch?v=jKAShbG-p9Y "Apple][+ Videx Videoterm 80 Columns card Demo running at AppleIIVga by Markadev") + +[![AppleII Accessing BBS using Videx Videoterm 80 Columns card running at AppleIIVga by Markadev](http://img.youtube.com/vi/D4BjUacbDPo/0.jpg)](https://www.youtube.com/watch?v=D4BjUacbDPo "Apple][+ Accessing BBS using Videx Videoterm 80 Columns card running at AppleIIVga by Markade") + +**AppleII+ running 80 Columms Examples** + +![AppleII 80 Columms Mode 1](docs/apple2plus_videx_80columns1.jpg) +![AppleII 80 Columms Mode 2](docs/apple2plus_videx_80columns1.jpg) +![AppleII 80 Columms Mode 3](docs/apple2plus_videx_80columns1.jpg) + + ## Comparisons Here are a few comparisons of the VGA card output vs composite video through diff --git a/docs/apple2plus_videx_80columns1.jpg b/docs/apple2plus_videx_80columns1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4c72d5a3dd664520e5fdb0c096b3b793c93b9b45 GIT binary patch literal 109014 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%0DYd51?^>HUBix~c?3}HY$8U^l!ysCV8&-^ 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 z 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%0An$85LjIJ97c8G&d-j&( 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�!gihDGMzD(P2Nv0eFhOTE%3SylmWeDZpenKtCUsT>t4+aU}jk9%~; zV>;K6Jl~{g@#>fGDnlc2UNWqbfOZo zrr&L%se1hw3@F!Biz50YE2H_A=G_WeUe9brP^?nCW}XxUaz-8OY_k;noz^vPE!kh_ zcHHh5zt@`LWQYI&o#x-5YfHEFw7nXdJ=Y3x4=Ep{f!`m8MDU?8fkMfwP zY=od{&m{+X>ZJ#e{NH=#8FUD(Oxl!W`m5?Mr%~V4CxIX3R|H~e`Yi70b=Q(S<)-

Tmu^H!@AdcT-raiX*@FU4}A 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 2; + + if(adr & 0x0001) + // get current register value + value = videx_regSLOT[videx_regvalSLOT]; + else + // define current register + value = videx_regvalSLOT; + + return value; +} + + +void card_videx_putC0SLOTX(int adr, int value) // 0x0400 at C800-CBFF +{ + // define current memory bank + videx_bankSLOT = (adr & 0x000c) >> 2; + + if(adr & 0x0001) { + // set current register value + videx_regSLOT[videx_regvalSLOT] = value; + + // 10:0A Cursor upper //11:0B Cursor lower + if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) + card_videx_modifySLOT(); + + /* + //14:0E Cursor Hi //15:0F Cursor Lo + if ((videx_regvalSLOT == 14) || (videx_regvalSLOT == 15)) + cursorSLOT(); + + //13:0D Startpos Lo + if (videx_regvalSLOT == 13) + redrawSLOT(); + + //12:0C Startpos Hi + */ + + } else + // define current register + videx_regvalSLOT = value; +} + +// IOSEL READS ROM +// when reading using iosel, adds bit at A9 +uint8_t card_videx_getRomIoSel(int addr) { + if(addr < 0xCC00) + return videx_rom[(addr | 0b1000000000) & 0x03ff]; + + return 0; +} + +// Read Video Memory using position x, y +int8_t card_videx_getCSLOTXX(int col, int row) { + int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); + // int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); + + int vaddr = (((row * 80) + col) + vstart) % 0x800; + + return videx_vram[vaddr]; +} + +// Read Character Rom (Char/scanline) +int8_t card_videx_getVideoBits(int8_t keycode, int line) { + return videx_chars[keycode * 16 + line]; +} + +// Is cursor at defined x, y? +bool card_videx_isCursorPosition(int col, int row) { + int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); + int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); + return vcursor == (((row * 80) + col) + vstart); +} + +// IOSTB - Get Rom or VRam +int card_videx_getSLOTC8XX(int adr) { + // if (adr < 0x0400) // Rom is at 0x0-0x3ff + if(adr < 0xCC00) // Rom is at 0x0-0x3ff + return (videx_rom[adr & 0x03ff]); + else + // VRAM is at 0x600-0x7FF + // VRAM has 0x0800 at CC00-CDFF divided in 4 banks of 0x1FF + // if (adr < 0x0600) + return (videx_vram[(adr & 0x01ff) + videx_bankSLOT * 0x0200]); + // else //600 (or CE00-CF00) + // return(0); +} + +// IOSTB - set VRam +void card_videx_putSLOTC8XX(int adr, int value) { + // VRAM is at 0x600-0x7FF + // VRAM has 0x0800 at CC00-CDFF divided in 4 banks of 0x1FF + if((adr >= 0xCC00) && (adr <= 0xCDFF)) { + int vadr; + + vadr = (adr & 0x01ff) + videx_bankSLOT * 0x0200; + videx_vram[vadr] = value; + } +} + + +void card_videx_card_videx_init() { + int i; + + // initializing registers + videx_bankSLOT = 0; + videx_regvalSLOT = 0; + videx_regSLOT[0] = 0x7b; + videx_regSLOT[1] = 0x50; + videx_regSLOT[2] = 0x62; + videx_regSLOT[3] = 0x29; + videx_regSLOT[4] = 0x1b; + videx_regSLOT[5] = 0x08; + videx_regSLOT[6] = 0x18; + videx_regSLOT[7] = 0x19; + videx_regSLOT[8] = 0x0; + videx_regSLOT[9] = 0x8; + videx_regSLOT[10] = 0xc0; + videx_regSLOT[11] = 0x8; + videx_regSLOT[12] = 0x0; + videx_regSLOT[13] = 0x0; + videx_regSLOT[14] = 0x0; + videx_regSLOT[15] = 0x0; + videx_regSLOT[16] = 0x0; + videx_upperSLOT = 0; + videx_lowerSLOT = 8; + // videx_oldcursorSLOT = 0; + + card_videx_modifySLOT(); +} + +void card_videx_modifySLOT() { + videx_blink_cursor = (videx_regSLOT[10] & 0x40) > 0; + videx_blink_mode = (videx_regSLOT[10] & 0x20) > 0; + + // If videx_blink_cursor is false then + // videx_blink_mode determines if there is a cursor displayed (false) or not (true). + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink + // - true = 1/32th field rate blink + + // glyph start + videx_upperSLOT = videx_regSLOT[10] & 0xf; + if(videx_upperSLOT > 11) + videx_upperSLOT = 11; + + // glyph end + videx_lowerSLOT = videx_regSLOT[11] & 0xf; + if(videx_lowerSLOT > 11) + videx_lowerSLOT = 11; + + // if the setting is ridiculous + if(videx_upperSLOT >= videx_lowerSLOT) { + videx_upperSLOT = 0; + videx_lowerSLOT = 11; + } +} diff --git a/pico/card_videx.h b/pico/card_videx.h new file mode 100644 index 0000000..7196dd2 --- /dev/null +++ b/pico/card_videx.h @@ -0,0 +1,134 @@ +#pragma once + +#ifndef CARD_VIDEX +#define CARD_VIDEX + +#include +#include +/* +//notes: + +// To turn on/off 80 columns mode: +// Write at 0xC058 or 0xC059 +// card_videx_80col = (addr == 0xc059); +// +// To Control the card: +// +// IOSEL // 0xC300-C3FFF - slot 3 +// Read +// r = videxcard.getRomIoSel(addr & 0x1FF); +// card_videx_mem_on = true; +// Write +// card_videx_mem_on = true; +// +// DEVSEL // 0xC0B0-C0BF +// Read +// r = videxcard.getC0SLOTX(addr); +// +// Write +// videxcard.putC0SLOTX(addr, val); +// +// IOSTB (0xC800-0xCFFF) +// Read +// if (((addr >> 9) & 0b11) == 0b11) card_videx_mem_on = false; +// +// if (card_videx_mem_on && addr >= 0xC800 && addr <= 0xCDFF) +// r = videxcard.getSLOTC8XX(addr & 0x7ff); +// +// Write +// if (((addr >> 9) & 0b11) == 0b11) card_videx_mem_on = false; +// +// if (card_videx_mem_on && addr >= 0xC800 && addr <= 0xCDFF) +// videxcard.putSLOTC8XX(addr - 0xC800, val); +// +// To Render: +// +// +//for (int y = 0; y < 25; y++) { +// for (int x = 0; x < 80; x++) { +// +// int vkeycode = videxcard.getCSLOTXX(x, y); // get ascii code from memory +// bool vinverse = videxcard.isCursorPosition(x, y); // check cursor position to inverse +// +// for (int i = 0; i < 9; i++) { +// +// int video_bits = videxcard.getVideoBits(vkeycode, i); // get bits for the current char/scanline +// +// if (vinverse) +// display_bit_80col(renderer, x, y, ~video_bits, i); // render char/scanline +// else +// display_bit_80col(renderer, x, y, video_bits, i); // render char/scanline +// +// } +// } +//} +*/ + +extern const uint8_t videx_rom[0x400]; +extern uint8_t videx_chars[0xfff]; // 0x0-0x7ff rom 1 | 0x800-0xfff rom2 character rom (12x8) Matrix) +extern uint8_t videx_vram[2048]; // 0x0800 at CC00-CDFF in 4 banks of 0x1FF + +// internal variables +extern uint8_t videx_bankSLOT; +extern uint8_t videx_regvalSLOT; // active memory bank, selected register +extern uint8_t videx_regSLOT[17]; // registers of the CRT-controller +extern uint8_t videx_upperSLOT, videx_lowerSLOT; // cursor size +extern uint8_t videx_blink_mode, videx_blink_cursor; +//******************************************************* +// Registers +// register r/w normal value Name +// 00: w 7B Horiz. total +// 01: w 50 Horiz. displayed +// 02: w 62 Horiz. sync pos +// 03: w 29 Horiz. sync width +// 04: w 1B Vert. total +// 05: w 08 Vert. adjust +// 06: w 18 Vert. displayed +// 07: w 19 Vert. sync pos +// 08: w 00 Interlaced +// 09: w 08 Max. scan line +// 10:0A w C0 Cursor upper +// 11:0B w 08 Cursor lower +// 12:0C w 00 Startpos Hi +// 13:0D w 00 Startpos Lo +// 14:0E r/w 00 Cursor Hi +// 15:0F r/w 00 Cursor Lo +// 16:10 r 00 Lightpen Hi +// 17:11 r 00 Lightpen Lo +// +// The registers are addressed as follows: +// To write To read +// LDA #$ LDA #$ +// STA $C0B0 STA $C0B0 +// LDA #$ LDA $C0B1 +// STA $C0B1 +//******************************************************* + +// 0x0400 at C800-CBFF +int card_videx_getC0SLOTX(int adr); + +// 0x0400 at C800-CBFF +void card_videx_putC0SLOTX(int adr, int value); + +// IOSEL READS ROM +// when reading using iosel, adds bit at A9 +uint8_t card_videx_getRomIoSel(int addr); + +// Read Video Memory using position x, y +int8_t card_videx_getCSLOTXX(int col, int row); + +// Read Character Rom (Char/scanline) +int8_t card_videx_getVideoBits(int8_t keycode, int line); + +// Is cursor at defined x, y? +bool card_videx_isCursorPosition(int col, int row); +// IOSTB - Get Rom or VRam +int card_videx_getSLOTC8XX(int adr); + +// IOSTB - set VRam +void card_videx_putSLOTC8XX(int adr, int value); + +void card_videx_card_videx_init(); + +void card_videx_modifySLOT(); +#endif \ No newline at end of file diff --git a/pico/render.c b/pico/render.c index 17f9f89..a20a780 100644 --- a/pico/render.c +++ b/pico/render.c @@ -12,25 +12,35 @@ void render_loop() { #ifdef RENDER_TEST_PATTERN render_vga_testpattern(); #else - update_text_flasher(); - switch(soft_switches & SOFTSW_MODE_MASK) { - case 0: - render_lores(); - break; - case SOFTSW_MIX_MODE: - render_mixed_lores(); - break; - case SOFTSW_HIRES_MODE: - render_hires(false); - break; - case SOFTSW_HIRES_MODE | SOFTSW_MIX_MODE: - render_hires(true); - break; - default: - render_text(); - break; +#ifdef APPLE_MODEL_IIPLUS + if(card_videx_80col) { + update_videx_text_flasher(); + render_videx_text(); + } else { +#endif + update_text_flasher(); + + switch(soft_switches & SOFTSW_MODE_MASK) { + case 0: + render_lores(); + break; + case SOFTSW_MIX_MODE: + render_mixed_lores(); + break; + case SOFTSW_HIRES_MODE: + render_hires(false); + break; + case SOFTSW_HIRES_MODE | SOFTSW_MIX_MODE: + render_hires(true); + break; + default: + render_text(); + break; + } +#ifdef APPLE_MODEL_IIPLUS } +#endif #endif } } diff --git a/pico/render.h b/pico/render.h index b55eb5c..17aeecb 100644 --- a/pico/render.h +++ b/pico/render.h @@ -20,3 +20,7 @@ extern void render_mixed_lores(); extern void generate_hires_tables(); extern void render_hires(bool mixed); + +extern void update_videx_text_flasher(); +extern void render_videx_text(); +extern void render_videx_text_line(unsigned int line); diff --git a/pico/render_videx_text.c b/pico/render_videx_text.c new file mode 100644 index 0000000..b4db0a6 --- /dev/null +++ b/pico/render_videx_text.c @@ -0,0 +1,144 @@ +#include "render.h" + +#include +#include "buffers.h" +#include "card_videx.h" +#include "colors.h" +#include "textfont/textfont.h" +#include "vga.h" + + +static uint_fast32_t videx_text_flasher_mask = 0; +static uint64_t videx_next_flash_tick = 0; + +void update_videx_text_flasher() { + uint64_t now = time_us_64(); + if(now > videx_next_flash_tick) { + videx_text_flasher_mask ^= 0xff; + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink 62500u + // - true = 1/32th field rate blink 31250u + + if(videx_blink_mode) + videx_next_flash_tick = now + 312500u; + else + videx_next_flash_tick = now + 625000u; + } +} + + +static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t glyph_line, bool has_cursor) { + uint_fast8_t bits; + if(ch < 0x80) { + bits = videx_normal[((uint_fast16_t)ch << 4) + glyph_line]; + } else { + bits = videx_inverse[((uint_fast16_t)(ch & 0x7f) << 4) + glyph_line]; + } + + // If videx_blink_cursor is false then + // videx_blink_mode determines if there is a cursor displayed (false) or not (true). + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink + // - true = 1/32th field rate blink + if(has_cursor && videx_upperSLOT <= glyph_line && videx_lowerSLOT >= glyph_line) { + // flashing character + if(videx_blink_cursor) + bits ^= videx_text_flasher_mask; + else if(!videx_blink_mode) + bits ^= 0xff; + } + + // VIDEX HAS 8 BIT COL + return bits; +} + + +void render_videx_text() { + vga_prepare_frame(); + // Skip 25 lines to center vertically + vga_skip_lines(25); + + for(int line = 0; line < 24; line++) { + render_videx_text_line(line); + } +} + + +void render_videx_text_line(unsigned int line) { + const uint32_t bg_color = soft_monochrom ? mono_bg_color : ntsc_palette[0]; + const uint32_t fg_color = soft_monochrom ? mono_fg_color : ntsc_palette[15]; + uint32_t bits_to_pixelpair[4] = { + (bg_color << 16) | bg_color, + (bg_color << 16) | fg_color, + (fg_color << 16) | bg_color, + (fg_color << 16) | fg_color, + }; + + + int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); + int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); + + int line_offset; + int vram_offset; + bool has_cursor_a; + bool has_cursor_b; + uint_fast8_t char_a; + uint_fast8_t char_b; + uint_fast16_t bits; + + struct vga_scanline *sl; + uint sl_pos; + + for(uint glyph_line = 0; glyph_line < 9; glyph_line++) { + sl = vga_prepare_scanline(); + sl_pos = 0; + + // Pad 40 pixels on the left to center horizontally + // VIDEX HAS 8 BIT COL + // sl->data[sl_pos++] = (0 | THEN_EXTEND_7) | ((0 | THEN_EXTEND_7) << 16); // 16 pixels + // sl->data[sl_pos++] = (0 | THEN_EXTEND_7) | ((0 | THEN_EXTEND_7) << 16); // 16 pixels + // sl->data[sl_pos++] = (0 | THEN_EXTEND_3) | ((0 | THEN_EXTEND_3) << 16); // 8 pixels + + for(uint col = 0; col < 80;) { + // Grab 14 pixels from the next two characters. If an aux memory bank was provided (80 column mode is on) + // then the first character comes from that, otherwise both characters just come from main memory. + + line_offset = (((line * 80) + col) + vstart); + vram_offset = line_offset % 0x800; + has_cursor_a = vcursor == line_offset; + char_a = videx_vram[vram_offset]; + col++; + + line_offset = (((line * 80) + col) + vstart); + vram_offset = line_offset % 0x800; + has_cursor_b = vcursor == line_offset; + char_b = videx_vram[vram_offset]; + col++; + + + // VIDEX HAS 8 BIT COL + bits = (char_videx_text_bits(char_b, glyph_line, has_cursor_b) << 8) | char_videx_text_bits(char_a, glyph_line, has_cursor_a); + + // Render each pair of bits into a pair of pixels, least significant bit first + // VIDEX HAS 8 BIT COL + for(int i = 0; i < 8; i++) { + sl->data[sl_pos] = bits_to_pixelpair[bits & 0x03]; + sl_pos++; + bits >>= 2; + } + } + + if(soft_scanline_emulation) { + // Just insert a blank scanline between each rendered scanline + sl->data[sl_pos++] = THEN_WAIT_HSYNC; + } else { + sl->repeat_count = 1; + } + sl->length = sl_pos; + vga_submit_scanline(sl); + } +} diff --git a/pico/scripts/dump_character_rom.py b/pico/scripts/dump_character_rom.py index 722f223..5174d8e 100755 --- a/pico/scripts/dump_character_rom.py +++ b/pico/scripts/dump_character_rom.py @@ -6,7 +6,7 @@ def parse_args(): parser = argparse.ArgumentParser(description='Reads an Apple II video character ROM and transforms it to the internal format used by the AppleII-VGA firmware') - parser.add_argument('-t', choices=['ii+', 'iij+', 'iie'], required=True, help='Machine type of the character ROM') + parser.add_argument('-t', choices=['ii+', 'iij+', 'iie', 'videx'], required=True, help='Machine type of the character ROM') parser.add_argument('filename', help='Name of the ROM file to dump') return parser.parse_args() @@ -55,68 +55,101 @@ def main(): 0xe0: 'Lower alpha', } - charset_name = "" - print("const uint8_t default_character_rom[256 * 8] = {") - for ch in range(256): - if ch in charset_offsets: - # Print a nice header - charset_name = charset_offsets[ch] - if ch > 0: - print("") - print(" //") - print(f" // {charset_name} Set") - print(" //") - - print(f"\n // {charset_name} character 0x{ch:02x}") - for i in range(8): - char_byte = char_bytes[8*ch + i] - # Convert the character pattern into the normalized format expected by the AppleII-VGA firmware - # * bit[7] on Apple II+ is used to indicate a flashing character in the lower half of the character set - # * bit[6:0] are the pattern where 1 represents an on pixel and will be rendered from LSB to MSB - # (which will look mirrored if you examine the resulting bit pattern directly). - if args.t == 'iie': - # IIe ROM patterns are stored with 0 representing an on pixel, so invert - char_byte ^= 0x7f - - # bit 7 is not used by IIe character sets so just clear it - char_byte &= 0x7f - elif args.t == 'ii+': - # II+ inverse character ROM patterns are stored with 0 representing an on pixel and bit7==0 to indicate - # that the hardware should invert the pattern. Just invert those patterns here. - if ch < 0x80 and (char_byte & 0x80) == 0: - char_byte ^= 0x7f - - # bit 7 is not used in the upper half of II+ characters sets so just clear it - if ch >= 0x80: - char_byte &= 0x7f - elif args.t == 'iij+': - # Translate with katakana always enabled, so map 0x40-0x7f to 0x00-0x3f - if ch >= 0x40 and ch <= 0x7f: - char_byte = char_bytes[8*(ch-0x40) + i] + elif args.t == 'videx': + charset_offsets = { + 0x00: '', + 0x40: '', + 0x80: '', + 0xa0: '', + 0xc0: '', + 0xe0: '', + } - # 0x00 to 0x3f are supposed to be normal characters so make the bits right - if ch <= 0x3f: + if args.t == 'videx': + charset_name = "" + print("const uint8_t default_character_rom[128 * 16] = {") + for ch in range(128): + if ch in charset_offsets: + # Print a nice header + charset_name = charset_offsets[ch] + if ch > 0: + print("") + print(" //") + print(f" // {charset_name} Set") + print(" //") + + print(f"\n // {charset_name} character 0x{ch:02x}") + for i in range(16): + char_byte = char_bytes[16*ch + i] + char_bits = f"{char_byte:08b}" + char_bits = char_bits[::-1] + print(f" 0b{char_bits},") + print("};") + else: + + charset_name = "" + print("const uint8_t default_character_rom[256 * 8] = {") + for ch in range(256): + if ch in charset_offsets: + # Print a nice header + charset_name = charset_offsets[ch] + if ch > 0: + print("") + print(" //") + print(f" // {charset_name} Set") + print(" //") + + print(f"\n // {charset_name} character 0x{ch:02x}") + + for i in range(8): + char_byte = char_bytes[8*ch + i] + # Convert the character pattern into the normalized format expected by the AppleII-VGA firmware + # * bit[7] on Apple II+ is used to indicate a flashing character in the lower half of the character set + # * bit[6:0] are the pattern where 1 represents an on pixel and will be rendered from LSB to MSB + # (which will look mirrored if you examine the resulting bit pattern directly). + if args.t == 'iie': + # IIe ROM patterns are stored with 0 representing an on pixel, so invert char_byte ^= 0x7f - char_byte &= 0x7f - - # II+ inverse character ROM patterns are stored with 0 representing an on pixel and bit7==0 to indicate - # that the hardware should invert the pattern. Just invert those patterns here. - #if ch < 0x80 and (char_byte & 0x80) == 0: - # char_byte ^= 0x7f - # bit 7 is not used in the upper half of II+ characters sets so just clear it - if ch >= 0x80: + # bit 7 is not used by IIe character sets so just clear it char_byte &= 0x7f - - char_bits = f"{char_byte:08b}" - if args.t in ('ii+', 'iij+'): - # II+ ROMs store the character pattern from left to right in bit6 to bit0 (the most significant - # bit is drawn to screen first). The AppleII-VGA firmware expect the pattern to be in the opposite - # bit order so reverse those bits here. - char_bits = char_bits[0] + char_bits[:0:-1] - - print(f" 0b{char_bits},") - print("};") + elif args.t == 'ii+': + # II+ inverse character ROM patterns are stored with 0 representing an on pixel and bit7==0 to indicate + # that the hardware should invert the pattern. Just invert those patterns here. + if ch < 0x80 and (char_byte & 0x80) == 0: + char_byte ^= 0x7f + + # bit 7 is not used in the upper half of II+ characters sets so just clear it + if ch >= 0x80: + char_byte &= 0x7f + elif args.t == 'iij+': + # Translate with katakana always enabled, so map 0x40-0x7f to 0x00-0x3f + if ch >= 0x40 and ch <= 0x7f: + char_byte = char_bytes[8*(ch-0x40) + i] + + # 0x00 to 0x3f are supposed to be normal characters so make the bits right + if ch <= 0x3f: + char_byte ^= 0x7f + char_byte &= 0x7f + + # II+ inverse character ROM patterns are stored with 0 representing an on pixel and bit7==0 to indicate + # that the hardware should invert the pattern. Just invert those patterns here. + #if ch < 0x80 and (char_byte & 0x80) == 0: + # char_byte ^= 0x7f + + # bit 7 is not used in the upper half of II+ characters sets so just clear it + if ch >= 0x80: + char_byte &= 0x7f + + char_bits = f"{char_byte:08b}" + if args.t in ('ii+', 'iij+'): + # II+ ROMs store the character pattern from left to right in bit6 to bit0 (the most significant + # bit is drawn to screen first). The AppleII-VGA firmware expect the pattern to be in the opposite + # bit order so reverse those bits here. + char_bits = char_bits[0] + char_bits[:0:-1] + + print(f" 0b{char_bits},") + print("};") if __name__ == '__main__': diff --git a/pico/textfont/textfont.h b/pico/textfont/textfont.h index 62a587f..690035e 100644 --- a/pico/textfont/textfont.h +++ b/pico/textfont/textfont.h @@ -23,3 +23,8 @@ extern const uint8_t textfont_iiplus_pigfont[256 * 8]; extern const uint8_t textfont_iiplus_jp_katakana[256 * 8]; extern const uint8_t textfont_clone_pravetz_cyrillic[256 * 8]; + +///////////////////////////////////////////////// + +extern const uint8_t videx_normal[128 * 16]; +extern const uint8_t videx_inverse[128 * 16]; diff --git a/pico/textfont/videx_apl.c b/pico/textfont/videx_apl.c new file mode 100644 index 0000000..7694d7d --- /dev/null +++ b/pico/textfont/videx_apl.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_apl[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00000000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b01111100, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00000000, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b01000000, + 0b00100000, + 0b01111111, + 0b00001000, + 0b01111111, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00001000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b01111100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00000001, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00000000, + 0b00000000, + 0b01000110, + 0b00101001, + 0b00010001, + 0b00101001, + 0b01000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00000000, + 0b00000000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000010, + 0b00011110, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b00000000, + 0b00000000, + 0b00111110, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00000000, + 0b00000000, + 0b01111111, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00000000, + 0b00000000, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00000000, + 0b00000000, + 0b00011000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b00000000, + 0b00000000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000110, + 0b00111010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b00000000, + 0b00000000, + 0b00000110, + 0b01001001, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01010100, + 0b00111000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b00000000, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b00000000, + 0b00000000, + 0b00100010, + 0b01000001, + 0b01001001, + 0b01001001, + 0b00110110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000000, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b00010000, + 0b00111000, + 0b01010100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000001, + 0b00000001, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b00000000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000010, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000000, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b00000000, + 0b00010000, + 0b00100000, + 0b01111111, + 0b00100000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000000, + 0b01000000, + 0b01000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_epson.c b/pico/textfont/videx_epson.c new file mode 100644 index 0000000..5ddfcd3 --- /dev/null +++ b/pico/textfont/videx_epson.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_epson[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00001001, + 0b00001011, + 0b00001101, + 0b00001001, + 0b00001000, + 0b00001000, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b00001110, + 0b00000001, + 0b00000110, + 0b01001000, + 0b01001111, + 0b01111000, + 0b01001000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00101111, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b00001111, + 0b00000001, + 0b00000011, + 0b00000001, + 0b00101111, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00001111, + 0b00000001, + 0b00000011, + 0b00000001, + 0b01111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b00001111, + 0b00000001, + 0b00000011, + 0b00110001, + 0b01001111, + 0b01001000, + 0b00101000, + 0b01010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000110, + 0b00001001, + 0b00001111, + 0b00001001, + 0b00101001, + 0b00011000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b00000111, + 0b00001001, + 0b00000111, + 0b00001001, + 0b00001111, + 0b00001000, + 0b00001000, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00111000, + 0b01001111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000111, + 0b00001001, + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001000, + 0b00001000, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00000111, + 0b00001001, + 0b00001001, + 0b00101001, + 0b00110111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000111, + 0b00001001, + 0b00001001, + 0b00111001, + 0b01000111, + 0b00100000, + 0b00010000, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00000111, + 0b00001001, + 0b00001001, + 0b00111001, + 0b01000111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000111, + 0b00001001, + 0b00001001, + 0b00101001, + 0b00110111, + 0b00101000, + 0b01111100, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x15 + 0b00001001, + 0b00001011, + 0b00001101, + 0b00001001, + 0b00101000, + 0b00011000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x16 + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b01001111, + 0b01011000, + 0b01101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x17 + 0b00001111, + 0b00000001, + 0b00000011, + 0b00111001, + 0b01001111, + 0b00111000, + 0b01001000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x18 + 0b00001110, + 0b00000001, + 0b00000001, + 0b00001110, + 0b01001000, + 0b01011000, + 0b01101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00001111, + 0b00000001, + 0b00000011, + 0b01000101, + 0b01101111, + 0b01010100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00001110, + 0b00000001, + 0b00000110, + 0b00111000, + 0b01001111, + 0b00111000, + 0b01001000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00001111, + 0b00000001, + 0b00000011, + 0b00000001, + 0b01110111, + 0b00001000, + 0b00001000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01110001, + 0b00001001, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1d + 0b00001110, + 0b00000001, + 0b00001101, + 0b01111001, + 0b00001110, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1e + 0b00000111, + 0b00001001, + 0b00000111, + 0b01110101, + 0b00001001, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1f + 0b00001001, + 0b00001001, + 0b00001001, + 0b01110110, + 0b00001000, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b11110000, + 0b11110000, + 0b11110000, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b00001111, + 0b00001111, + 0b00001111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b11111111, + 0b11111111, + 0b11111111, + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b00001111, + 0b00001111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b11110000, + 0b11110000, + 0b11110000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_french.c b/pico/textfont/videx_french.c new file mode 100644 index 0000000..4f21af6 --- /dev/null +++ b/pico/textfont/videx_french.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_french[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b01101100, + 0b01101100, + 0b01001000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00011000, + 0b00100100, + 0b00000100, + 0b00001110, + 0b00000100, + 0b01000100, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000100, + 0b00001010, + 0b00001010, + 0b01000110, + 0b00101001, + 0b00010001, + 0b01101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00011100, + 0b00100000, + 0b00011000, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00011100, + 0b00100000, + 0b00011000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00000010, + 0b00000100, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b01111100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b01111100, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00011000, + 0b00011000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00111000, + 0b01000100, + 0b00000100, + 0b00011110, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b01000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000010, + 0b00000010, + 0b00111010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000010, + 0b00000010, + 0b01100010, + 0b00011010, + 0b00000110, + 0b00011010, + 0b01100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00011000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00110111, + 0b01001001, + 0b01001001, + 0b01001001, + 0b01001001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000010, + 0b00111100, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00001000, + 0b01111100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000100, + 0b00000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b01111110, + 0b00100000, + 0b00011000, + 0b00000100, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00100000, + 0b00010000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000100, + 0b00001000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00000100, + 0b00001000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00111000, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_german.c b/pico/textfont/videx_german.c new file mode 100644 index 0000000..add5d77 --- /dev/null +++ b/pico/textfont/videx_german.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_german[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00000000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b00000000, + 0b01101100, + 0b01101100, + 0b01001000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00000000, + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00000000, + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b00000000, + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000000, + 0b00000100, + 0b00001010, + 0b00001010, + 0b01000110, + 0b00101001, + 0b00010001, + 0b01101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00000000, + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00000000, + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00000000, + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b00000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00000000, + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00000000, + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b00000000, + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00000000, + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b00000000, + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b00000000, + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b00000000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00000000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00011100, + 0b00100010, + 0b00001100, + 0b00010010, + 0b00100010, + 0b00100100, + 0b00011000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00000000, + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00000000, + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b00000000, + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b00000000, + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000000, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b00000000, + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b00000000, + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00000000, + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00000000, + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b00000000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b00000000, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b00000000, + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b00100100, + 0b00000000, + 0b00011000, + 0b00100100, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00100010, + 0b00000000, + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b00100100, + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00000000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00000000, + 0b00011000, + 0b00011000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00000000, + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000100, + 0b00011110, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b00000000, + 0b01000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000000, + 0b00000010, + 0b00000010, + 0b00111010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00000000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00000000, + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000000, + 0b00000010, + 0b00000010, + 0b01100010, + 0b00011010, + 0b00000110, + 0b00011010, + 0b01100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000000, + 0b00011000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00110111, + 0b01001001, + 0b01001001, + 0b01001001, + 0b01001001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000010, + 0b00111100, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00000000, + 0b00001000, + 0b01111100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00100000, + 0b00011000, + 0b00000100, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00000000, + 0b00010010, + 0b00000000, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000000, + 0b00100100, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00000000, + 0b00100100, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111010, + 0b01000010, + 0b01001010, + 0b00111010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_inverse.c b/pico/textfont/videx_inverse.c new file mode 100644 index 0000000..97927c5 --- /dev/null +++ b/pico/textfont/videx_inverse.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_inverse[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x01 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x02 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x03 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x04 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x05 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x06 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x07 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x08 + 0b11111000, + 0b11110110, + 0b11111000, + 0b10000110, + 0b11110000, + 0b11001111, + 0b10111111, + 0b11000111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x09 + 0b11110110, + 0b11110110, + 0b11110000, + 0b11110110, + 0b10000010, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0a + 0b11111110, + 0b11111110, + 0b11111110, + 0b10000110, + 0b11110000, + 0b11100111, + 0b11110111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0b + 0b11101110, + 0b11101110, + 0b11110101, + 0b11111011, + 0b10000011, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0c + 0b11110000, + 0b11111110, + 0b11111100, + 0b10000110, + 0b11110110, + 0b11100111, + 0b11110111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0d + 0b11110001, + 0b11111110, + 0b11111110, + 0b11000001, + 0b10110111, + 0b11000111, + 0b11010111, + 0b10110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0e + 0b11110001, + 0b11111110, + 0b11111001, + 0b11110111, + 0b11001000, + 0b10110111, + 0b10110111, + 0b11001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x0f + 0b11110001, + 0b11111110, + 0b11111001, + 0b10000111, + 0b11011000, + 0b11011111, + 0b11011111, + 0b10001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x10 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x11 + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x12 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x13 + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b00001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x14 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x15 + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x16 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00001111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x17 + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b00001111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x18 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11100000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x19 + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11100000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x1a + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x1b + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x1c + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11100000, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x1d + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11100000, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x1e + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x1f + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b00000000, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + + // character 0x20 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x21 + 0b11100111, + 0b11100111, + 0b11100111, + 0b11100111, + 0b11100111, + 0b11111111, + 0b11100111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x22 + 0b10010011, + 0b10010011, + 0b10110111, + 0b11011011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x23 + 0b11011011, + 0b11011011, + 0b10000001, + 0b11011011, + 0b10000001, + 0b11011011, + 0b11011011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x24 + 0b11101111, + 0b10000011, + 0b11101101, + 0b11000011, + 0b10110111, + 0b11000001, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x25 + 0b10111001, + 0b11010110, + 0b11101001, + 0b11110111, + 0b11001011, + 0b10110101, + 0b11001110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x26 + 0b11111011, + 0b11110101, + 0b11110101, + 0b10111001, + 0b11010110, + 0b11101110, + 0b10010001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x27 + 0b11100111, + 0b11100111, + 0b11101111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x28 + 0b11001111, + 0b11110111, + 0b11111011, + 0b11111011, + 0b11111011, + 0b11110111, + 0b11001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x29 + 0b11110011, + 0b11101111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11101111, + 0b11110011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2a + 0b11110111, + 0b10110110, + 0b11010101, + 0b11100011, + 0b11010101, + 0b10110110, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2b + 0b11111111, + 0b11110111, + 0b11110111, + 0b10000000, + 0b11110111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2c + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11100111, + 0b11100111, + 0b11101111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2d + 0b11111111, + 0b11111111, + 0b11111111, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2e + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11100111, + 0b11100111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x2f + 0b10111111, + 0b11011111, + 0b11101111, + 0b11110111, + 0b11111011, + 0b11111101, + 0b11111110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x30 + 0b11100011, + 0b11011101, + 0b10101110, + 0b10110110, + 0b10111010, + 0b11011101, + 0b11100011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x31 + 0b11101111, + 0b11100011, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b10000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x32 + 0b11000011, + 0b10111101, + 0b10111111, + 0b11000111, + 0b11111011, + 0b11111101, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x33 + 0b10000001, + 0b11011111, + 0b11101111, + 0b11000111, + 0b10111111, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x34 + 0b11011111, + 0b11001111, + 0b11010111, + 0b11011011, + 0b10000001, + 0b11011111, + 0b11011111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x35 + 0b10000001, + 0b11111101, + 0b11000001, + 0b10111111, + 0b10111111, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x36 + 0b10000111, + 0b11111011, + 0b11111101, + 0b11000001, + 0b10111101, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x37 + 0b10000001, + 0b10111111, + 0b11011111, + 0b11101111, + 0b11110111, + 0b11111011, + 0b11111011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x38 + 0b11000011, + 0b10111101, + 0b10111101, + 0b11000011, + 0b10111101, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x39 + 0b11000011, + 0b10111101, + 0b10111101, + 0b10000011, + 0b10111111, + 0b11011111, + 0b11100001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3a + 0b11111111, + 0b11100111, + 0b11100111, + 0b11111111, + 0b11100111, + 0b11100111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3b + 0b11111111, + 0b11100111, + 0b11100111, + 0b11111111, + 0b11100111, + 0b11100111, + 0b11101111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3c + 0b11111111, + 0b10011111, + 0b11100111, + 0b11111001, + 0b11100111, + 0b10011111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3d + 0b11111111, + 0b11111111, + 0b10000001, + 0b11111111, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3e + 0b11111111, + 0b11111001, + 0b11100111, + 0b10011111, + 0b11100111, + 0b11111001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3f + 0b11000011, + 0b10111101, + 0b10111111, + 0b11001111, + 0b11110111, + 0b11111111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // + // Set + // + + // character 0x40 + 0b11000011, + 0b10111101, + 0b10100110, + 0b10101010, + 0b11010110, + 0b11111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x41 + 0b11100111, + 0b11011011, + 0b10111101, + 0b10111101, + 0b10000001, + 0b10111101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x42 + 0b11000001, + 0b10111101, + 0b10111101, + 0b11000001, + 0b10111101, + 0b10111101, + 0b11000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x43 + 0b11000111, + 0b10111011, + 0b11111101, + 0b11111101, + 0b11111101, + 0b10111011, + 0b11000111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x44 + 0b11100001, + 0b11011101, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11011101, + 0b11100001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x45 + 0b10000001, + 0b11111101, + 0b11111101, + 0b11100001, + 0b11111101, + 0b11111101, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x46 + 0b10000001, + 0b11111101, + 0b11111101, + 0b11100001, + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x47 + 0b11000111, + 0b10111011, + 0b11111101, + 0b10001101, + 0b10111101, + 0b10111011, + 0b10000111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x48 + 0b10111101, + 0b10111101, + 0b10111101, + 0b10000001, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x49 + 0b11000111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11000111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4a + 0b10001111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11011101, + 0b11100011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4b + 0b10111101, + 0b11011101, + 0b11101101, + 0b11110101, + 0b11101001, + 0b11011101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4c + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111101, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4d + 0b10111110, + 0b10011100, + 0b10101010, + 0b10110110, + 0b10111110, + 0b10111110, + 0b10111110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4e + 0b10111101, + 0b10111001, + 0b10110101, + 0b10101101, + 0b10011101, + 0b10111101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x4f + 0b11100011, + 0b11011101, + 0b10111110, + 0b10111110, + 0b10111110, + 0b11011101, + 0b11100011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x50 + 0b11000001, + 0b10111101, + 0b10111101, + 0b11000001, + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x51 + 0b11100011, + 0b11011101, + 0b10111110, + 0b10111110, + 0b10101110, + 0b11011101, + 0b10100011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x52 + 0b11000001, + 0b10111101, + 0b10111101, + 0b11000001, + 0b11101101, + 0b11011101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x53 + 0b11000011, + 0b10111101, + 0b11111101, + 0b11000011, + 0b10111111, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x54 + 0b10000000, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x55 + 0b10111101, + 0b10111101, + 0b10111101, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x56 + 0b10111110, + 0b10111110, + 0b11011101, + 0b11011101, + 0b11101011, + 0b11101011, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x57 + 0b10111110, + 0b10111110, + 0b10111110, + 0b10111110, + 0b10110110, + 0b10101010, + 0b11011101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x58 + 0b10111110, + 0b11011101, + 0b11101011, + 0b11110111, + 0b11101011, + 0b11011101, + 0b10111110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x59 + 0b10111110, + 0b11011101, + 0b11101011, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5a + 0b10000000, + 0b11011111, + 0b11101111, + 0b11110111, + 0b11111011, + 0b11111101, + 0b10000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5b + 0b10000011, + 0b11110011, + 0b11110011, + 0b11110011, + 0b11110011, + 0b11110011, + 0b10000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5c + 0b11111110, + 0b11111101, + 0b11111011, + 0b11110111, + 0b11101111, + 0b11011111, + 0b10111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5d + 0b10000011, + 0b10011111, + 0b10011111, + 0b10011111, + 0b10011111, + 0b10011111, + 0b10000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5e + 0b11101111, + 0b11000111, + 0b10101011, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x5f + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b10000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x60 + 0b11100111, + 0b11100111, + 0b11110111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x61 + 0b11111111, + 0b11111111, + 0b11100000, + 0b11011111, + 0b11000001, + 0b11011110, + 0b10100001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x62 + 0b11111101, + 0b11111101, + 0b11000001, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x63 + 0b11111111, + 0b11111111, + 0b11000011, + 0b10111101, + 0b11111101, + 0b11111101, + 0b10000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x64 + 0b10111111, + 0b10111111, + 0b10000011, + 0b10111101, + 0b10111101, + 0b10111101, + 0b10000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x65 + 0b11111111, + 0b11111111, + 0b11000011, + 0b10111101, + 0b10000001, + 0b11111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x66 + 0b11000111, + 0b10111011, + 0b11111011, + 0b11100001, + 0b11111011, + 0b11111011, + 0b11111011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x67 + 0b11111111, + 0b10111111, + 0b11000011, + 0b10111101, + 0b10111101, + 0b10000011, + 0b10111111, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x68 + 0b11111101, + 0b11111101, + 0b11000101, + 0b10111001, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x69 + 0b11101111, + 0b11111111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6a + 0b11011111, + 0b11111111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11011111, + 0b11011011, + 0b11100111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6b + 0b11111101, + 0b11111101, + 0b10011101, + 0b11100101, + 0b11111001, + 0b11100101, + 0b10011101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6c + 0b11100111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11000111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6d + 0b11111111, + 0b11111111, + 0b11001000, + 0b10110110, + 0b10110110, + 0b10110110, + 0b10110110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6e + 0b11111111, + 0b11111111, + 0b11000101, + 0b10111011, + 0b10111011, + 0b10111011, + 0b10111011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x6f + 0b11111111, + 0b11111111, + 0b11000011, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11000011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x70 + 0b11111111, + 0b11111111, + 0b11000001, + 0b10111101, + 0b10111101, + 0b10111101, + 0b11000001, + 0b11111101, + 0b11111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x71 + 0b11111111, + 0b11111111, + 0b10000011, + 0b10111101, + 0b10111101, + 0b10111101, + 0b10000011, + 0b10111111, + 0b10111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x72 + 0b11111111, + 0b11111111, + 0b11000101, + 0b10111001, + 0b11111101, + 0b11111101, + 0b11111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x73 + 0b11111111, + 0b11111111, + 0b10000011, + 0b11111101, + 0b11000011, + 0b10111111, + 0b11000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x74 + 0b11111111, + 0b11110111, + 0b10000011, + 0b11110111, + 0b11110111, + 0b11110111, + 0b10001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x75 + 0b11111111, + 0b11111111, + 0b11011101, + 0b11011101, + 0b11011101, + 0b11011101, + 0b10100011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x76 + 0b11111111, + 0b11111111, + 0b10111110, + 0b10111110, + 0b11011101, + 0b11101011, + 0b11110111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x77 + 0b11111111, + 0b11111111, + 0b10111110, + 0b10111110, + 0b10110110, + 0b10101010, + 0b11011101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x78 + 0b11111111, + 0b11111111, + 0b10111101, + 0b11011011, + 0b11100111, + 0b11011011, + 0b10111101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x79 + 0b11111111, + 0b11111111, + 0b10111110, + 0b10111110, + 0b11011101, + 0b11101011, + 0b11110111, + 0b11111011, + 0b11111100, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7a + 0b11111111, + 0b11111111, + 0b10000001, + 0b11011111, + 0b11100111, + 0b11111011, + 0b10000001, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7b + 0b11001111, + 0b11110111, + 0b11101111, + 0b11110011, + 0b11101111, + 0b11110111, + 0b11001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7c + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11101111, + 0b11101111, + 0b11101111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7d + 0b11110011, + 0b11101111, + 0b11110111, + 0b11001111, + 0b11110111, + 0b11101111, + 0b11110011, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7e + 0b11111001, + 0b10110110, + 0b11001111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x7f + 0b11011011, + 0b11101101, + 0b10110110, + 0b11011011, + 0b11101101, + 0b10110110, + 0b11011011, + 0b11101101, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, +}; diff --git a/pico/textfont/videx_katakana.c b/pico/textfont/videx_katakana.c new file mode 100644 index 0000000..909d944 --- /dev/null +++ b/pico/textfont/videx_katakana.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_katakana[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00000000, + 0b00010000, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b00000000, + 0b01010100, + 0b01010100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00000000, + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00000000, + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b00000000, + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000010, + 0b00000010, + 0b01111111, + 0b01000010, + 0b00100010, + 0b00010010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00001110, + 0b00010001, + 0b00010001, + 0b00001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00000001, + 0b00000001, + 0b00111111, + 0b00000001, + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00000000, + 0b01000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00000000, + 0b01111111, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b00000000, + 0b00001010, + 0b00001010, + 0b00001010, + 0b01001010, + 0b01001010, + 0b00101010, + 0b00011001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00000000, + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00000000, + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b00000000, + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00000000, + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b00000000, + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b00000000, + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00101010, + 0b00101010, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b01111111, + 0b01000000, + 0b00100000, + 0b00010100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b01000001, + 0b00100010, + 0b00010100, + 0b01111111, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00010000, + 0b11111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01010100, + 0b10010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00000000, + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00000100, + 0b00000100, + 0b00111111, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000010, + 0b00100001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00000000, + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00000000, + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b00000000, + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b00000000, + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b00000000, + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000000, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b00000000, + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b00000000, + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00000000, + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00000000, + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b00000000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b00000000, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b00000000, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b00000000, + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b00011100, + 0b01100000, + 0b00000000, + 0b00001100, + 0b00110000, + 0b00000000, + 0b00011100, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b01111111, + 0b01000000, + 0b01001000, + 0b00111000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b00000000, + 0b01111111, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000110, + 0b00001001, + 0b00001001, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00000000, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b01111110, + 0b01000010, + 0b01000001, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b01111111, + 0b01000000, + 0b01000000, + 0b01111110, + 0b01000000, + 0b01000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00001000, + 0b00001000, + 0b01111111, + 0b01000001, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00000000, + 0b00111110, + 0b00000000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00000000, + 0b01111111, + 0b00000100, + 0b00000100, + 0b01111111, + 0b00000100, + 0b00000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b00000100, + 0b00000100, + 0b00111111, + 0b01000100, + 0b01000100, + 0b01000010, + 0b00100001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00000000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00000000, + 0b01111110, + 0b01000010, + 0b01000001, + 0b00101000, + 0b00010000, + 0b00101000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000000, + 0b01000001, + 0b01000010, + 0b01000100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000000, + 0b01000111, + 0b01000000, + 0b01000000, + 0b01000111, + 0b00100000, + 0b00010000, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b01001001, + 0b01001001, + 0b01001001, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b11111110, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b11111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000100, + 0b00000100, + 0b00001100, + 0b00010100, + 0b00100100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00101000, + 0b01001010, + 0b01001001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b01111111, + 0b01000001, + 0b01000001, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00001000, + 0b00001000, + 0b00111110, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00100000, + 0b00011110, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00010000, + 0b01111111, + 0b00010000, + 0b00011000, + 0b00010100, + 0b00010010, + 0b00010001, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b00000011, + 0b01000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01000001, + 0b01111111, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00100000, + 0b00010000, + 0b00001000, + 0b00001100, + 0b00001010, + 0b00001001, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000010, + 0b00000010, + 0b01111111, + 0b01000010, + 0b00100010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00111110, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b01111111, + 0b01000000, + 0b01000000, + 0b01111111, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000000, + 0b00111110, + 0b00000000, + 0b01111111, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00000010, + 0b00000010, + 0b01111110, + 0b00010001, + 0b00010000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000000, + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00000000, + 0b00000000, + 0b00000100, + 0b00001010, + 0b00010001, + 0b00100000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_normal.c b/pico/textfont/videx_normal.c new file mode 100644 index 0000000..36b9232 --- /dev/null +++ b/pico/textfont/videx_normal.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_normal[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b01101100, + 0b01101100, + 0b01001000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000100, + 0b00001010, + 0b00001010, + 0b01000110, + 0b00101001, + 0b00010001, + 0b01101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00111100, + 0b01000010, + 0b01011001, + 0b01010101, + 0b00101001, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b01111100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000001, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b01111100, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00010000, + 0b00111000, + 0b01010100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00011000, + 0b00011000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00111000, + 0b01000100, + 0b00000100, + 0b00011110, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b01000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000010, + 0b00000010, + 0b00111010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000010, + 0b00000010, + 0b01100010, + 0b00011010, + 0b00000110, + 0b00011010, + 0b01100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00011000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00110111, + 0b01001001, + 0b01001001, + 0b01001001, + 0b01001001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000010, + 0b00111100, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00001000, + 0b01111100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000100, + 0b00000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b01111110, + 0b00100000, + 0b00011000, + 0b00000100, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000110, + 0b01001001, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_spanish.c b/pico/textfont/videx_spanish.c new file mode 100644 index 0000000..b3f2295 --- /dev/null +++ b/pico/textfont/videx_spanish.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_spanish[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b00100100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000100, + 0b00001010, + 0b00001010, + 0b01000110, + 0b00101001, + 0b00010001, + 0b01101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00000000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00001100, + 0b00000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b01111100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00100010, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b01111100, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b01001100, + 0b00110010, + 0b00000000, + 0b00111010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000010, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b00000010, + 0b00000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b01000000, + 0b01000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00111000, + 0b01000100, + 0b00000100, + 0b00011110, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b01000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000010, + 0b00000010, + 0b00111010, + 0b01000110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000010, + 0b00000010, + 0b01100010, + 0b00011010, + 0b00000110, + 0b00011010, + 0b01100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00011000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00110111, + 0b01001001, + 0b01001001, + 0b01001001, + 0b01001001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b01111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00111010, + 0b01000110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000010, + 0b00111100, + 0b01000000, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00001000, + 0b01111100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b01000010, + 0b00100100, + 0b00011000, + 0b00100100, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00000100, + 0b00000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b01111110, + 0b00100000, + 0b00011000, + 0b00000100, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00001000, + 0b00000100, + 0b00011111, + 0b00100000, + 0b00111110, + 0b00100001, + 0b01011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00100000, + 0b00010000, + 0b00111100, + 0b01000010, + 0b01111110, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00100000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00100000, + 0b00010000, + 0b00111100, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00010000, + 0b00001000, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_super_sub.c b/pico/textfont/videx_super_sub.c new file mode 100644 index 0000000..2a8ce4a --- /dev/null +++ b/pico/textfont/videx_super_sub.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_super_sub[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b01111111, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b01111111, + 0b00000001, + 0b00000001, + 0b00000001, + 0b00000001, + 0b00000001, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000100, + 0b00001000, + 0b00010000, + 0b00111110, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b01111111, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01010101, + 0b01100011, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00100000, + 0b00010000, + 0b00001001, + 0b00000101, + 0b00000011, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00010100, + 0b01110111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000100, + 0b00000010, + 0b00011111, + 0b00100010, + 0b01000100, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001000, + 0b00010000, + 0b00100000, + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b01111111, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00001000, + 0b00001000, + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001000, + 0b00101010, + 0b00011100, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00011100, + 0b00100010, + 0b01010101, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01001001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b01111111, + 0b01000001, + 0b01000001, + 0b01111111, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00011100, + 0b00101010, + 0b01001001, + 0b01111001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01111001, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01001111, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00011100, + 0b00101010, + 0b01001001, + 0b01001111, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x15 + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000101, + 0b00000011, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x16 + 0b00111110, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b00100010, + 0b01100011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x17 + 0b01000000, + 0b01000000, + 0b01000000, + 0b01111111, + 0b01000000, + 0b01000000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x18 + 0b01111111, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00111000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00111100, + 0b01000010, + 0b00000010, + 0b00001100, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00011100, + 0b00100010, + 0b01000001, + 0b01111111, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b01111111, + 0b01001001, + 0b01001001, + 0b01001111, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1d + 0b01111111, + 0b01000001, + 0b01000001, + 0b01001111, + 0b01001001, + 0b01001001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1e + 0b01111111, + 0b01000001, + 0b01000001, + 0b01111001, + 0b01001001, + 0b01001001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1f + 0b01111111, + 0b01001001, + 0b01001001, + 0b01111001, + 0b01000001, + 0b01000001, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x20 + 0b00011000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00010000, + 0b00011000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b00011100, + 0b00100000, + 0b00011000, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00011100, + 0b00100000, + 0b00011000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00010000, + 0b00011000, + 0b00010100, + 0b00111100, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b00111100, + 0b00000100, + 0b00011100, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00111000, + 0b00000100, + 0b00011100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00111100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00011000, + 0b00100100, + 0b00011000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00011000, + 0b00100100, + 0b00111000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00000000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00011000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100000, + 0b00011000, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100000, + 0b00011000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00011000, + 0b00010100, + 0b00111100, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000100, + 0b00011100, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111000, + 0b00000100, + 0b00011100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00011000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00111000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b01101100, + 0b01101100, + 0b00100100, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00011000, + 0b00100100, + 0b00111100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00011100, + 0b00100100, + 0b00011100, + 0b00100100, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00011000, + 0b00100100, + 0b00000100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00011100, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b00111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b00111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00111000, + 0b00000100, + 0b00110100, + 0b00100100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00100100, + 0b00100100, + 0b00111100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b00100100, + 0b00010100, + 0b00001100, + 0b00010100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b01000100, + 0b01101100, + 0b01010100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b00100100, + 0b00101100, + 0b00110100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00011000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00011100, + 0b00100100, + 0b00011100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00011000, + 0b00100100, + 0b00100100, + 0b00010100, + 0b00101000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00011100, + 0b00100100, + 0b00011100, + 0b00010100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111000, + 0b00000100, + 0b00011000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b00100100, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b01000100, + 0b01000100, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b01000100, + 0b01000100, + 0b01010100, + 0b01010100, + 0b00101000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b01000100, + 0b00101000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b00111100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b00001000, + 0b00011100, + 0b00000010, + 0b00000010, + 0b00011100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00011100, + 0b00100010, + 0b01011101, + 0b01001101, + 0b01010101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00011100, + 0b00100010, + 0b01011001, + 0b01000101, + 0b01011001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00011000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00111100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100100, + 0b00011100, + 0b00100100, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00000100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111000, + 0b00000100, + 0b00110100, + 0b00100100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00111100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100100, + 0b00010100, + 0b00001100, + 0b00010100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b01101100, + 0b01010100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100100, + 0b00101100, + 0b00110100, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100100, + 0b00011100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00100100, + 0b00100100, + 0b00010100, + 0b00101000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011100, + 0b00100100, + 0b00011100, + 0b00010100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111000, + 0b00000100, + 0b00011000, + 0b00100000, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01010100, + 0b01010100, + 0b00101000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b00000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00111100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00111000, + 0b01000100, + 0b00001100, + 0b00010010, + 0b00100100, + 0b01001000, + 0b00110000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b01111110, + 0b00101111, + 0b00101111, + 0b00101110, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00101000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00010000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b01110111, + 0b01010010, + 0b01010010, + 0b01010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_symbol.c b/pico/textfont/videx_symbol.c new file mode 100644 index 0000000..7eeaad3 --- /dev/null +++ b/pico/textfont/videx_symbol.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_symbol[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b10001110, + 0b00101111, + 0b00000000, + 0b01101111, + 0b00000000, + 0b11100111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10101111, + 0b00000000, + + // character 0x01 + 0b00000000, + 0b11101101, + 0b11000011, + 0b00000000, + 0b00100011, + 0b00000000, + 0b01110100, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b00101101, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00001001, + 0b00000000, + 0b00000000, + 0b10101011, + + // character 0x03 + 0b10000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b10001000, + 0b10001000, + 0b00000000, + 0b10001000, + 0b10001000, + 0b00000000, + 0b10001000, + + // character 0x04 + 0b00010011, + 0b00000000, + 0b00000100, + 0b00000001, + 0b00010011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10110111, + 0b00000000, + + // character 0x05 + 0b11101101, + 0b00000000, + 0b11000011, + 0b11000011, + 0b11000011, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + + // character 0x08 + 0b00010011, + 0b00000110, + 0b00000101, + 0b10011111, + 0b00100100, + 0b00001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b11101101, + 0b11000011, + 0b11111001, + 0b01101101, + 0b11000011, + 0b00001000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + + // character 0x0a + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b10000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10101011, + 0b00000000, + + // character 0x0b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b10001000, + 0b00000000, + 0b10001000, + 0b10001000, + 0b00000000, + 0b10001000, + 0b10001000, + 0b00000000, + + // character 0x0c + 0b00000000, + 0b00100100, + 0b00001001, + 0b00000000, + 0b00000100, + 0b00001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b11000011, + 0b00000000, + 0b00001000, + 0b00000000, + 0b11000011, + 0b11000011, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + + // character 0x0e + 0b11111111, + 0b11000000, + 0b10000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b10001000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b10000000, + 0b00000100, + 0b01111010, + 0b00000000, + 0b01111111, + 0b00001001, + 0b01000000, + 0b00000101, + 0b00010001, + 0b00010001, + 0b00001010, + 0b00100000, + 0b00000000, + 0b00000101, + + // character 0x11 + 0b00000000, + 0b10001000, + 0b00000000, + 0b01110111, + 0b00001001, + 0b01010011, + 0b11111111, + 0b00001000, + 0b00000000, + 0b11111001, + 0b01010010, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b11111001, + + // character 0x12 + 0b00010100, + 0b00000000, + 0b10000000, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b10000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b11111111, + + // character 0x13 + 0b10001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b10000000, + 0b00000000, + 0b11101110, + 0b00000000, + 0b00001011, + 0b00000001, + 0b00001110, + 0b00000000, + 0b00000000, + 0b01000000, + 0b00000000, + 0b00000110, + 0b00011110, + 0b00001110, + 0b00001001, + + // character 0x15 + 0b10001000, + 0b00000000, + 0b00000000, + 0b00001001, + 0b01010011, + 0b01010011, + 0b00001000, + 0b11000011, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00001000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b11000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b10000000, + 0b11111111, + 0b00000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + 0b10000000, + + // character 0x17 + 0b00000000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000111, + 0b01101110, + 0b00001100, + 0b01110000, + 0b00000000, + 0b00000000, + 0b10010000, + 0b00000000, + 0b00011010, + 0b10010000, + 0b00001110, + 0b00000000, + + // character 0x19 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110010, + 0b01010011, + 0b00001001, + 0b00001000, + 0b01010010, + 0b11111111, + 0b00100000, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00001000, + 0b00000000, + + // character 0x1a + 0b01000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b10000000, + 0b11111111, + 0b11111111, + 0b10000000, + 0b00000000, + 0b10000000, + 0b10000000, + 0b00000000, + 0b10000000, + 0b00000000, + + // character 0x1b + 0b10001000, + 0b10001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00010000, + 0b00001110, + 0b11010110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000100, + 0b00000011, + 0b00000000, + 0b00010110, + 0b10010000, + 0b00000000, + 0b00000100, + 0b00001110, + + // character 0x1d + 0b00000000, + 0b10001000, + 0b00000000, + 0b11110010, + 0b00001001, + 0b10000100, + 0b00100000, + 0b00100000, + 0b11000011, + 0b11000011, + 0b00000000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b11000011, + 0b11000011, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b10000000, + 0b10000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b10000000, + 0b10000000, + 0b00000000, + 0b11111111, + 0b11111111, + + // character 0x1f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x20 + 0b01111111, + 0b00000000, + 0b00001100, + 0b00011110, + 0b00000000, + 0b00001011, + 0b11001110, + 0b00000000, + 0b00000111, + 0b01101110, + 0b00000000, + 0b00001110, + 0b11101110, + 0b00000000, + 0b00010000, + 0b10011110, + + // character 0x21 + 0b10100011, + 0b00000000, + 0b11100011, + 0b00001001, + 0b11111001, + 0b01000100, + 0b00001001, + 0b11110010, + 0b01010011, + 0b00001001, + 0b10111110, + 0b10111100, + 0b00001001, + 0b00001001, + 0b11100110, + 0b00001001, + + // character 0x22 + 0b11111111, + 0b00000000, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + + // character 0x23 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00111001, + 0b00001011, + 0b00000000, + 0b00000000, + 0b00000100, + 0b01000111, + 0b00000000, + 0b00001110, + 0b11010110, + 0b00000000, + 0b00001011, + 0b11101110, + 0b00000000, + 0b00000100, + 0b11010110, + 0b00000000, + + // character 0x25 + 0b11000011, + 0b11000011, + 0b00000000, + 0b00111000, + 0b11111001, + 0b11011001, + 0b01110111, + 0b11110010, + 0b00001001, + 0b10000100, + 0b10111110, + 0b00001001, + 0b10110010, + 0b00001001, + 0b00001001, + 0b00001011, + + // character 0x26 + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + + // character 0x27 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b10000000, + 0b10111001, + 0b00000000, + 0b00001000, + 0b10000111, + 0b00000000, + 0b00000100, + 0b01111010, + 0b00000000, + 0b00001110, + 0b01101110, + 0b00000000, + 0b00000011, + 0b01101110, + 0b00000000, + 0b00000111, + + // character 0x29 + 0b00000000, + 0b00100011, + 0b01110110, + 0b00111000, + 0b11011001, + 0b10010100, + 0b01110111, + 0b00001001, + 0b01010011, + 0b10000100, + 0b00001001, + 0b00110101, + 0b10110010, + 0b00001001, + 0b11110110, + 0b00001011, + + // character 0x2a + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + + // character 0x2b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000110, + 0b11101110, + 0b00000000, + 0b00000001, + 0b11101110, + 0b00000000, + 0b00001011, + 0b01000111, + 0b00000000, + 0b00000001, + 0b11101110, + 0b00000000, + 0b00000001, + 0b10011110, + + // character 0x2d + 0b00000000, + 0b11000000, + 0b01110110, + 0b00001001, + 0b01000100, + 0b10010100, + 0b00001001, + 0b01010011, + 0b01010011, + 0b11011001, + 0b10111100, + 0b00110101, + 0b00001001, + 0b11100110, + 0b11110110, + 0b00001001, + + // character 0x2e + 0b00000000, + 0b10000000, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + + // character 0x2f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00000000, + 0b00001101, + 0b00011110, + 0b00000000, + 0b00001110, + 0b10001110, + 0b00000000, + 0b00001110, + 0b00011001, + 0b00000011, + 0b00000100, + 0b00001110, + 0b00001011, + 0b00000000, + 0b00001100, + 0b11100000, + + // character 0x31 + 0b01001001, + 0b11000010, + 0b00001001, + 0b10101101, + 0b00010011, + 0b00001001, + 0b10110100, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b00000000, + + // character 0x32 + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + + // character 0x33 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00000100, + 0b01000111, + 0b00000000, + 0b00000111, + 0b01000111, + 0b00000000, + 0b00000011, + 0b00000110, + 0b00011111, + 0b00011010, + 0b00011101, + 0b00010000, + 0b00010110, + 0b00010010, + 0b00100100, + 0b00000100, + + // character 0x35 + 0b01001001, + 0b11011001, + 0b00110100, + 0b10101101, + 0b11011001, + 0b11101101, + 0b10110100, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b00000000, + 0b11100011, + + // character 0x36 + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11000000, + 0b11111111, + + // character 0x37 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b11101110, + 0b00000000, + 0b00001110, + 0b11010110, + 0b00000000, + 0b00001011, + 0b01000111, + 0b00001000, + 0b00001001, + 0b00001111, + 0b00001010, + 0b00000101, + 0b00000000, + 0b10011011, + 0b00000100, + 0b00001101, + + // character 0x39 + 0b00001001, + 0b11110100, + 0b00110100, + 0b00001001, + 0b01010011, + 0b11101101, + 0b11011001, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b10100011, + 0b11000011, + 0b11100011, + + // character 0x3a + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x3b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b00000100, + 0b01000111, + 0b00000000, + 0b00001011, + 0b11101110, + 0b00001101, + 0b00001001, + 0b00010100, + 0b00010001, + 0b00010111, + 0b00011100, + 0b00010110, + 0b00000000, + 0b10010001, + 0b00001011, + + // character 0x3d + 0b11000010, + 0b11110100, + 0b11011001, + 0b00010011, + 0b01010011, + 0b00001001, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b11100011, + 0b00000000, + 0b11101110, + 0b11000011, + + // character 0x3e + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b10000000, + 0b11111101, + 0b11111111, + + // character 0x3f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b11011101, + 0b00000000, + 0b00000000, + 0b00110001, + 0b00000000, + 0b00001000, + 0b00001110, + 0b00011000, + 0b10110101, + 0b00001011, + 0b01000111, + 0b00110110, + 0b00000011, + 0b00011010, + 0b01000110, + 0b00000000, + + // character 0x41 + 0b10100011, + 0b00000000, + 0b00000000, + 0b11100010, + 0b00000000, + 0b11100011, + 0b00110100, + 0b00000000, + 0b11000011, + 0b11101101, + 0b11011001, + 0b01000110, + 0b11100011, + 0b11110010, + 0b11100011, + 0b00000000, + + // character 0x42 + 0b11111111, + 0b01010111, + 0b00000000, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00001100, + 0b11111111, + 0b11111111, + 0b00000000, + 0b10011110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + + // character 0x43 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00000000, + 0b00000000, + 0b00000100, + 0b01000000, + 0b00001111, + 0b01001001, + 0b01000111, + 0b00001001, + 0b11000000, + 0b11101110, + 0b00001101, + 0b10110110, + 0b00001010, + 0b01000000, + 0b00000001, + 0b00000100, + + // character 0x45 + 0b00000000, + 0b00000000, + 0b11000011, + 0b00000000, + 0b11000011, + 0b00001000, + 0b11011001, + 0b11000011, + 0b00000000, + 0b00001001, + 0b11100011, + 0b11000110, + 0b11000011, + 0b00000000, + 0b11000011, + 0b11100011, + + // character 0x46 + 0b00000000, + 0b10000000, + 0b11111111, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00100110, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + + // character 0x47 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00110110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b00000000, + 0b00000011, + 0b10000000, + 0b01111000, + 0b01010011, + 0b00001110, + 0b00000000, + 0b00001101, + 0b00110110, + 0b00000000, + 0b10011111, + 0b01000110, + 0b10111000, + 0b00110110, + 0b00000001, + 0b01100001, + + // character 0x49 + 0b00000000, + 0b11000011, + 0b00000000, + 0b00100011, + 0b00100011, + 0b11100011, + 0b10101101, + 0b11000011, + 0b01000110, + 0b10110100, + 0b01110111, + 0b10100011, + 0b00100011, + 0b01000110, + 0b11000011, + 0b11110010, + + // character 0x4a + 0b00100100, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b10000110, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b10011110, + 0b11111111, + 0b11111111, + + // character 0x4b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00101110, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b01000000, + 0b00011010, + 0b00000111, + 0b00000010, + 0b01110100, + 0b00000011, + 0b10000000, + 0b00001110, + 0b00100000, + 0b10110110, + 0b00000001, + 0b11000000, + + // character 0x4d + 0b00000000, + 0b00000000, + 0b11000011, + 0b00000000, + 0b00000000, + 0b00000000, + 0b10101101, + 0b11000011, + 0b10011110, + 0b10110100, + 0b00000000, + 0b11000011, + 0b00000000, + 0b11000110, + 0b11000011, + 0b00000000, + + // character 0x4e + 0b11100000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b10010110, + 0b11111111, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00100110, + 0b11111111, + 0b00000000, + + // character 0x4f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00110110, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00000001, + 0b00000110, + 0b00001101, + 0b00000001, + 0b00001001, + 0b00001101, + 0b00010011, + 0b00011011, + 0b00010000, + 0b00000000, + 0b00001101, + 0b00010011, + 0b00000000, + 0b00010111, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b11000011, + 0b11100011, + 0b11100011, + 0b11000011, + 0b11000011, + 0b11100011, + 0b00100011, + 0b10110110, + 0b11100011, + 0b00000000, + 0b11000000, + 0b11000000, + 0b11000000, + 0b11000011, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111101, + 0b11111111, + 0b00000000, + 0b10000000, + 0b10000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b00000001, + 0b00000111, + 0b00000100, + 0b11000000, + 0b00000011, + 0b10011000, + 0b00001110, + 0b10001000, + 0b00000100, + 0b00001111, + 0b00000000, + 0b00000011, + 0b00011101, + 0b00010000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b11000011, + 0b11000011, + 0b11100011, + 0b00000000, + 0b00110100, + 0b01101110, + 0b11000011, + 0b10110110, + 0b11100011, + 0b11000011, + 0b00000000, + 0b11000011, + 0b11000011, + 0b11000011, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b01100110, + 0b11111101, + 0b11111111, + 0b11111101, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b00000000, + 0b00000001, + 0b00111110, + 0b00000000, + 0b10001101, + 0b00000000, + 0b01110010, + 0b00001110, + 0b00010010, + 0b00101000, + 0b00000000, + 0b00000001, + 0b00000000, + 0b00110101, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b00000000, + 0b11000011, + 0b11000011, + 0b11000010, + 0b10101110, + 0b00000000, + 0b01101110, + 0b11100110, + 0b11000011, + 0b00100011, + 0b00000000, + 0b00100011, + 0b11000000, + 0b00100011, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111101, + 0b00000000, + 0b11111101, + 0b11111101, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + 0b10000000, + 0b11111111, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000100, + 0b10000000, + 0b00000111, + 0b11000000, + 0b00000100, + 0b00000011, + 0b10010101, + 0b00000011, + 0b00000000, + 0b00000011, + 0b00001101, + 0b00000000, + 0b00000000, + 0b10001110, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b11100011, + 0b00000000, + 0b11000011, + 0b00000000, + 0b11100011, + 0b11000011, + 0b01101110, + 0b11100011, + 0b00000000, + 0b00110100, + 0b11100011, + 0b00000000, + 0b00000000, + 0b00100011, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b11111111, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111101, + 0b11111111, + 0b00000000, + 0b01100110, + 0b11111111, + 0b11000000, + 0b01110000, + 0b11111111, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00000000, + 0b01101010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00100110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b11000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b11110100, + 0b10100110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b11001110, + 0b11010110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b01001110, + 0b00100110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b11110100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b01001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b11001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00110110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b11101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00110110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b10000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b11001110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00101010, + 0b11001001, + 0b01011000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100011, + 0b00100011, + 0b11000011, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011101, + 0b00000000, + 0b00000100, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11000011, + 0b11000011, + 0b00000000, + 0b11000011, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b00000000, + 0b11111111, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00000000, + 0b00001100, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00100011, + 0b11000011, + 0b11000000, + 0b11000011, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b10000000, + 0b11111111, + + // character 0x7b + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000010, + 0b00000011, + 0b00000011, + 0b00000000, + + // character 0x7d + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11000011, + 0b11000011, + 0b11000011, + 0b00000000, + + // character 0x7e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11000000, + + // character 0x7f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; diff --git a/pico/textfont/videx_uppercase.c b/pico/textfont/videx_uppercase.c new file mode 100644 index 0000000..8ce97eb --- /dev/null +++ b/pico/textfont/videx_uppercase.c @@ -0,0 +1,2317 @@ +#include "textfont.h" +#include + + +const uint8_t __in_flash("chr_rom") videx_uppercase[128 * 16] = { + // + // Set + // + + // character 0x00 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x01 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x02 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x03 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x04 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x05 + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x06 + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x07 + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x08 + 0b00000111, + 0b00001001, + 0b00000111, + 0b01111001, + 0b00001111, + 0b00110000, + 0b01000000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x09 + 0b00001001, + 0b00001001, + 0b00001111, + 0b00001001, + 0b01111101, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0a + 0b00000001, + 0b00000001, + 0b00000001, + 0b01111001, + 0b00001111, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0b + 0b00010001, + 0b00010001, + 0b00001010, + 0b00000100, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0c + 0b00001111, + 0b00000001, + 0b00000011, + 0b01111001, + 0b00001001, + 0b00011000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0d + 0b00001110, + 0b00000001, + 0b00000001, + 0b00111110, + 0b01001000, + 0b00111000, + 0b00101000, + 0b01001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0e + 0b00001110, + 0b00000001, + 0b00000110, + 0b00001000, + 0b00110111, + 0b01001000, + 0b01001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x0f + 0b00001110, + 0b00000001, + 0b00000110, + 0b01111000, + 0b00100111, + 0b00100000, + 0b00100000, + 0b01110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x10 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x11 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x12 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x13 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x14 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x15 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x16 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x17 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11110000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x18 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x19 + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1a + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1b + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x1c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1d + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00011111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x1f + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b11111111, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + + // character 0x20 + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x21 + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x22 + 0b01101100, + 0b01101100, + 0b01001000, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x23 + 0b00100100, + 0b00100100, + 0b01111110, + 0b00100100, + 0b01111110, + 0b00100100, + 0b00100100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x24 + 0b00010000, + 0b01111100, + 0b00010010, + 0b00111100, + 0b01001000, + 0b00111110, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x25 + 0b01000110, + 0b00101001, + 0b00010110, + 0b00001000, + 0b00110100, + 0b01001010, + 0b00110001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x26 + 0b00000100, + 0b00001010, + 0b00001010, + 0b01000110, + 0b00101001, + 0b00010001, + 0b01101110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x27 + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x28 + 0b00110000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x29 + 0b00001100, + 0b00010000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2a + 0b00001000, + 0b01001001, + 0b00101010, + 0b00011100, + 0b00101010, + 0b01001001, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2b + 0b00000000, + 0b00001000, + 0b00001000, + 0b01111111, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2c + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2d + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2e + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x2f + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b00000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x30 + 0b00011100, + 0b00100010, + 0b01010001, + 0b01001001, + 0b01000101, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x31 + 0b00010000, + 0b00011100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x32 + 0b00111100, + 0b01000010, + 0b01000000, + 0b00111000, + 0b00000100, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x33 + 0b01111110, + 0b00100000, + 0b00010000, + 0b00111000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x34 + 0b00100000, + 0b00110000, + 0b00101000, + 0b00100100, + 0b01111110, + 0b00100000, + 0b00100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x35 + 0b01111110, + 0b00000010, + 0b00111110, + 0b01000000, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x36 + 0b01111000, + 0b00000100, + 0b00000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x37 + 0b01111110, + 0b01000000, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x38 + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x39 + 0b00111100, + 0b01000010, + 0b01000010, + 0b01111100, + 0b01000000, + 0b00100000, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3a + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3b + 0b00000000, + 0b00011000, + 0b00011000, + 0b00000000, + 0b00011000, + 0b00011000, + 0b00010000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3c + 0b00000000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3d + 0b00000000, + 0b00000000, + 0b01111110, + 0b00000000, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3e + 0b00000000, + 0b00000110, + 0b00011000, + 0b01100000, + 0b00011000, + 0b00000110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x3f + 0b00111100, + 0b01000010, + 0b01000000, + 0b00110000, + 0b00001000, + 0b00000000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // + // Set + // + + // character 0x40 + 0b00111100, + 0b01000010, + 0b01011001, + 0b01010101, + 0b00101001, + 0b00000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x41 + 0b00011000, + 0b00100100, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x42 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x43 + 0b00111000, + 0b01000100, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x44 + 0b00011110, + 0b00100010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00100010, + 0b00011110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x45 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x46 + 0b01111110, + 0b00000010, + 0b00000010, + 0b00011110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x47 + 0b00111000, + 0b01000100, + 0b00000010, + 0b01110010, + 0b01000010, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x48 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01111110, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x49 + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4a + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100000, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4b + 0b01000010, + 0b00100010, + 0b00010010, + 0b00001010, + 0b00010110, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4c + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000010, + 0b01111110, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4d + 0b01000001, + 0b01100011, + 0b01010101, + 0b01001001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4e + 0b01000010, + 0b01000110, + 0b01001010, + 0b01010010, + 0b01100010, + 0b01000010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x4f + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01000001, + 0b00100010, + 0b00011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x50 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00000010, + 0b00000010, + 0b00000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x51 + 0b00011100, + 0b00100010, + 0b01000001, + 0b01000001, + 0b01010001, + 0b00100010, + 0b01011100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x52 + 0b00111110, + 0b01000010, + 0b01000010, + 0b00111110, + 0b00010010, + 0b00100010, + 0b01000010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x53 + 0b00111100, + 0b01000010, + 0b00000010, + 0b00111100, + 0b01000000, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x54 + 0b01111111, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x55 + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b01000010, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x56 + 0b01000001, + 0b01000001, + 0b00100010, + 0b00100010, + 0b00010100, + 0b00010100, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x57 + 0b01000001, + 0b01000001, + 0b01000001, + 0b01000001, + 0b01001001, + 0b01010101, + 0b00100010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x58 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00010100, + 0b00100010, + 0b01000001, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x59 + 0b01000001, + 0b00100010, + 0b00010100, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00001000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5a + 0b01111111, + 0b00100000, + 0b00010000, + 0b00001000, + 0b00000100, + 0b00000010, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5b + 0b01111100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b00001100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5c + 0b00000001, + 0b00000010, + 0b00000100, + 0b00001000, + 0b00010000, + 0b00100000, + 0b01000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5d + 0b01111100, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01100000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5e + 0b00010000, + 0b00111000, + 0b01010100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x5f + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b01111111, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x60 + 0b00011000, + 0b00011000, + 0b00001000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x61 + 0b00000000, + 0b00000000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b01111100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x62 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000100, + 0b00111100, + 0b01000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x63 + 0b00000000, + 0b00000000, + 0b00111000, + 0b01000100, + 0b00000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x64 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x65 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x66 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00000100, + 0b00011100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x67 + 0b00000000, + 0b00000000, + 0b01111000, + 0b00000100, + 0b01100100, + 0b01000100, + 0b01111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x68 + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01111100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x69 + 0b00000000, + 0b00000000, + 0b00111000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6a + 0b00000000, + 0b00000000, + 0b01110000, + 0b00100000, + 0b00100000, + 0b00100100, + 0b00011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6b + 0b00000000, + 0b00000000, + 0b01000100, + 0b00100100, + 0b00010100, + 0b00101100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6c + 0b00000000, + 0b00000000, + 0b00000100, + 0b00000100, + 0b00000100, + 0b00000100, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6d + 0b00000000, + 0b00000000, + 0b01000100, + 0b01101100, + 0b01010100, + 0b01000100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6e + 0b00000000, + 0b00000000, + 0b01000100, + 0b01001100, + 0b01010100, + 0b01100100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x6f + 0b00000000, + 0b00000000, + 0b00111000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x70 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000100, + 0b00111100, + 0b00000100, + 0b00000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x71 + 0b00000000, + 0b00000000, + 0b00111000, + 0b01000100, + 0b01010100, + 0b00100100, + 0b01011000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x72 + 0b00000000, + 0b00000000, + 0b00111100, + 0b01000100, + 0b00111100, + 0b00100100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x73 + 0b00000000, + 0b00000000, + 0b01111000, + 0b00000100, + 0b00111000, + 0b01000000, + 0b00111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x74 + 0b00000000, + 0b00000000, + 0b01111100, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x75 + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00111000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x76 + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x77 + 0b00000000, + 0b00000000, + 0b01000100, + 0b01000100, + 0b01010100, + 0b01101100, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x78 + 0b00000000, + 0b00000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00101000, + 0b01000100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x79 + 0b00000000, + 0b00000000, + 0b01000100, + 0b00101000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7a + 0b00000000, + 0b00000000, + 0b01111100, + 0b00100000, + 0b00010000, + 0b00001000, + 0b01111100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7b + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7c + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00010000, + 0b00010000, + 0b00010000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7d + 0b00001100, + 0b00010000, + 0b00001000, + 0b00110000, + 0b00001000, + 0b00010000, + 0b00001100, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7e + 0b00000110, + 0b01001001, + 0b00110000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + + // character 0x7f + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b01001001, + 0b00100100, + 0b00010010, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, + 0b00000000, +}; From 5b7182951582b5a6b23b14187bb34b5fbe30cf28 Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Fri, 1 Mar 2024 07:56:01 -0500 Subject: [PATCH 2/7] Integrate shadowing of Videx writes Refactored the original videx write handling to integrate it in with the existing shadow write tables and functions. --- README.md | 41 ++++++++++++++------------------ pico/abus.c | 60 +++++++++++++++++++++++++++++++++++++++++++---- pico/card_videx.c | 39 ++++++++++++------------------ pico/card_videx.h | 4 ++-- 4 files changed, 90 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 38e4fe3..535165f 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,7 @@ These features are currently supported: (thanks to @dkgrizzly and @Paco1979) * Soft-monochrome mode to force display as if on a monochrome monitor * Some Video-7 RGB card extended graphical modes are implemented + * Compatibility with Videx VideoTerm modes on Apple II+ (thanks to @abaffa) I had these goals in mind during design: * Generate video out to a more modern display - I don't have any old CRTs for @@ -77,28 +78,6 @@ _thanks to @swetland for [this idea](https://github.com/markadev/AppleII-VGA/dis ![Live action shot](docs/installed_in_iie.jpg) -## 80 Columns support for AppleII+ - -This code implements a videx card virtually mapped to slot 3. The Apple2Vga can be used in slot 7 and let slot 3 empty. - -I found out that the videx card is not compatible to grappler+ (printer interface) 'cos they share the same banking rom solution using I/O STB address. I had to remove my printer interface to have the videx running :D. - -I decided to virtally map slot 3 directly from the memory in order to leave the devsel signal to change the character rom fonts. So the card can be used in slot 7 but it always maps videx card to slot 3. - -**AppleII+ running 80 Columms Videos** - - -[![AppleII Videx Videoterm 80 Columns card Demo running at AppleIIVga by Markadev](http://img.youtube.com/vi/jKAShbG-p9Y/0.jpg)](https://www.youtube.com/watch?v=jKAShbG-p9Y "Apple][+ Videx Videoterm 80 Columns card Demo running at AppleIIVga by Markadev") - -[![AppleII Accessing BBS using Videx Videoterm 80 Columns card running at AppleIIVga by Markadev](http://img.youtube.com/vi/D4BjUacbDPo/0.jpg)](https://www.youtube.com/watch?v=D4BjUacbDPo "Apple][+ Accessing BBS using Videx Videoterm 80 Columns card running at AppleIIVga by Markade") - -**AppleII+ running 80 Columms Examples** - -![AppleII 80 Columms Mode 1](docs/apple2plus_videx_80columns1.jpg) -![AppleII 80 Columms Mode 2](docs/apple2plus_videx_80columns1.jpg) -![AppleII 80 Columms Mode 3](docs/apple2plus_videx_80columns1.jpg) - - ## Comparisons Here are a few comparisons of the VGA card output vs composite video through @@ -116,8 +95,22 @@ a cheap composite -> HDMI adapter **DHires** ![DHires Mode](docs/composite_vs_vga_dhires.jpg) -**80 Columms** -![80 Columms Mode](docs/composite_vs_vga_80columms.jpg) +**80 Columns** +![80 Columns Mode](docs/composite_vs_vga_80columms.jpg) + + +## 80 Column support for the Apple II+ + +The firmware implements Videx VideoTerm compatibility when there's a VideoTerm card installed +in slot 3. It's not enabled by default but if you have a Videx VideoTerm card in slot 3 +then you can enable 80 column VGA support using the Configuration Disk image. The VGA card +can still be installed in any slot. + +**Apple II+ running 80 Columns Examples** + +![AppleII 80 Columms Mode 1](docs/apple2plus_videx_80columns1.jpg) +![AppleII 80 Columms Mode 2](docs/apple2plus_videx_80columns2.jpg) +![AppleII 80 Columms Mode 3](docs/apple2plus_videx_80columns3.jpg) ## Future work diff --git a/pico/abus.c b/pico/abus.c index 9fbdc36..dd29b12 100644 --- a/pico/abus.c +++ b/pico/abus.c @@ -4,6 +4,7 @@ #include "abus.pio.h" #include "board_config.h" #include "buffers.h" +#include "card_videx.h" #include "colors.h" #include "device_regs.h" @@ -21,7 +22,7 @@ typedef void (*shadow_handler)(bool is_write, uint_fast16_t address, uint_fast8_ static int reset_detect_state = 0; -static shadow_handler softsw_handlers[128]; +static shadow_handler softsw_handlers[256]; static void abus_main_setup(PIO pio, uint sm) { @@ -159,6 +160,18 @@ static void shadow_softsw_57(bool is_write, uint_fast16_t address, uint_fast8_t soft_switches |= SOFTSW_HIRES_MODE; } +static void shadow_softsw_58(bool is_write, uint_fast16_t address, uint_fast8_t data) { +#ifdef APPLE_MODEL_IIPLUS + card_videx_80col = false; +#endif +} + +static void shadow_softsw_59(bool is_write, uint_fast16_t address, uint_fast8_t data) { +#ifdef APPLE_MODEL_IIPLUS + card_videx_80col = true; +#endif +} + static void shadow_softsw_5e(bool is_write, uint_fast16_t address, uint_fast8_t data) { soft_dhires = true; } @@ -181,6 +194,10 @@ void abus_init() { // Init states soft_switches = SOFTSW_TEXT_MODE; +#ifdef APPLE_MODEL_IIPLUS + card_videx_card_videx_init(); +#endif + // Setup soft-switch handlers for the Apple model softsw_handlers[0x21] = shadow_softsw_21; softsw_handlers[0x50] = shadow_softsw_50; @@ -191,6 +208,8 @@ void abus_init() { softsw_handlers[0x55] = shadow_softsw_55; softsw_handlers[0x56] = shadow_softsw_56; softsw_handlers[0x57] = shadow_softsw_57; + softsw_handlers[0x58] = shadow_softsw_58; + softsw_handlers[0x59] = shadow_softsw_59; #ifdef APPLE_MODEL_IIE softsw_handlers[0x00] = shadow_softsw_00; softsw_handlers[0x01] = shadow_softsw_01; @@ -203,6 +222,12 @@ void abus_init() { softsw_handlers[0x5e] = shadow_softsw_5e; softsw_handlers[0x5f] = shadow_softsw_5f; #endif +#ifdef APPLE_MODEL_IIPLUS + // slot 3 device registers + for(uint i = 0xb0; i < 0xc0; i++) { + softsw_handlers[i] = videx_shadow_register; + } +#endif abus_main_setup(CONFIG_ABUS_PIO, ABUS_MAIN_SM); @@ -273,15 +298,39 @@ static void shadow_memory(bool is_write, uint_fast16_t address, uint32_t value) case 0xc000 >> 10: reset_detect_state = 0; - // Handle shadowing of the soft switches in the range 0xc000 - 0xc07f - if(address < 0xc080) { - shadow_handler h = softsw_handlers[address & 0x7f]; + // Handle shadowing of the soft switches and I/O in the range $C000 - $C0FF + if(address < 0xc100) { + shadow_handler h = softsw_handlers[address & 0xff]; if(h) { h(is_write, address, value & 0xff); } } +#ifdef APPLE_MODEL_IIPLUS + else if((address >= 0xc300) && (address < 0xc400)) { + // slot 3 access + card_videx_mem_on = true; + } +#endif break; +#ifdef APPLE_MODEL_IIPLUS + case 0xc800 >> 10: + case 0xcc00 >> 10: + // expansion slot memory space $C800-$CFFF + reset_detect_state = 0; + if(!card_videx_mem_on) + break; + + if(address < 0xce00) { + if(is_write) { + card_videx_putSLOTC8XX(address, value); + } + } else { + card_videx_mem_on = false; + } + break; +#endif + case 0x0000 >> 10: case 0xfc00 >> 10: // reset detection - the IOU chip on the Apple IIe cleverly detects a CPU reset by monitoring bus activity @@ -305,6 +354,9 @@ static void shadow_memory(bool is_write, uint_fast16_t address, uint32_t value) soft_80store = false; soft_altcharset = false; soft_ramwrt = false; +#ifdef APPLE_MODEL_IIPLUS + card_videx_80col = false; +#endif reset_detect_state = 0; } else { diff --git a/pico/card_videx.c b/pico/card_videx.c index 46786a6..e04a4fa 100644 --- a/pico/card_videx.c +++ b/pico/card_videx.c @@ -77,36 +77,29 @@ int card_videx_getC0SLOTX(int adr) // 0x0400 at C800-CBFF } -void card_videx_putC0SLOTX(int adr, int value) // 0x0400 at C800-CBFF -{ +// Shadow accesses to card registers in $C0n0 - $C0nF range +void videx_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data) { // define current memory bank - videx_bankSLOT = (adr & 0x000c) >> 2; + videx_bankSLOT = (address & 0x000c) >> 2; + + if(!is_write) + return; - if(adr & 0x0001) { + if(address & 0x0001) { // set current register value - videx_regSLOT[videx_regvalSLOT] = value; + videx_regSLOT[videx_regvalSLOT] = data; - // 10:0A Cursor upper //11:0B Cursor lower - if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) + // 10: Cursor upper, 11: Cursor lower + if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) { card_videx_modifySLOT(); - - /* - //14:0E Cursor Hi //15:0F Cursor Lo - if ((videx_regvalSLOT == 14) || (videx_regvalSLOT == 15)) - cursorSLOT(); - - //13:0D Startpos Lo - if (videx_regvalSLOT == 13) - redrawSLOT(); - - //12:0C Startpos Hi - */ - - } else + } + } else { // define current register - videx_regvalSLOT = value; + videx_regvalSLOT = data; + } } + // IOSEL READS ROM // when reading using iosel, adds bit at A9 uint8_t card_videx_getRomIoSel(int addr) { @@ -166,8 +159,6 @@ void card_videx_putSLOTC8XX(int adr, int value) { void card_videx_card_videx_init() { - int i; - // initializing registers videx_bankSLOT = 0; videx_regvalSLOT = 0; diff --git a/pico/card_videx.h b/pico/card_videx.h index 7196dd2..fc5464b 100644 --- a/pico/card_videx.h +++ b/pico/card_videx.h @@ -104,11 +104,11 @@ extern uint8_t videx_blink_mode, videx_blink_cursor; // STA $C0B1 //******************************************************* +void videx_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data); + // 0x0400 at C800-CBFF int card_videx_getC0SLOTX(int adr); -// 0x0400 at C800-CBFF -void card_videx_putC0SLOTX(int adr, int value); // IOSEL READS ROM // when reading using iosel, adds bit at A9 From 1b920e745c6c05cb6e2d0f5e82b9e4dd2256f4a1 Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Fri, 1 Mar 2024 08:06:12 -0500 Subject: [PATCH 3/7] Update videx soft video switch Update the Videx 80-column mode switch check so that 80 column mode is only displayed when the "color killer is on", i.e. only if the II+ video mode is text mode. This matches how the real VideoTerm video switch works. --- pico/render.c | 52 ++++++++++++++++++++++++++------------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/pico/render.c b/pico/render.c index a20a780..0d63aa1 100644 --- a/pico/render.c +++ b/pico/render.c @@ -8,39 +8,41 @@ void render_init() { void render_loop() { - while(1) { #ifdef RENDER_TEST_PATTERN + while(1) { render_vga_testpattern(); + } #else - + while(1) { + update_text_flasher(); #ifdef APPLE_MODEL_IIPLUS - if(card_videx_80col) { - update_videx_text_flasher(); - render_videx_text(); - } else { + update_videx_text_flasher(); #endif - update_text_flasher(); - switch(soft_switches & SOFTSW_MODE_MASK) { - case 0: - render_lores(); - break; - case SOFTSW_MIX_MODE: - render_mixed_lores(); - break; - case SOFTSW_HIRES_MODE: - render_hires(false); - break; - case SOFTSW_HIRES_MODE | SOFTSW_MIX_MODE: - render_hires(true); - break; - default: + switch(soft_switches & SOFTSW_MODE_MASK) { + case 0: + render_lores(); + break; + case SOFTSW_MIX_MODE: + render_mixed_lores(); + break; + case SOFTSW_HIRES_MODE: + render_hires(false); + break; + case SOFTSW_HIRES_MODE | SOFTSW_MIX_MODE: + render_hires(true); + break; + default: +#ifdef APPLE_MODEL_IIPLUS + if(card_videx_80col) { + render_videx_text(); + } else +#endif + { render_text(); - break; } -#ifdef APPLE_MODEL_IIPLUS + break; } -#endif -#endif } +#endif } From 425532117dcaa913193a50c10ee3c1e5a80a5596 Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Fri, 1 Mar 2024 08:54:42 -0500 Subject: [PATCH 4/7] Consolidate all the Videx VideoTerm code --- pico/CMakeLists.txt | 3 +- pico/abus.c | 31 ++---- pico/buffers.c | 4 - pico/buffers.h | 3 - pico/card_videx.c | 216 ------------------------------------ pico/card_videx.h | 134 ---------------------- pico/render.c | 5 +- pico/render.h | 4 - pico/render_videx_text.c | 144 ------------------------ pico/videx_vterm.c | 233 +++++++++++++++++++++++++++++++++++++++ pico/videx_vterm.h | 15 +++ 11 files changed, 265 insertions(+), 527 deletions(-) delete mode 100644 pico/card_videx.c delete mode 100644 pico/card_videx.h delete mode 100644 pico/render_videx_text.c create mode 100644 pico/videx_vterm.c create mode 100644 pico/videx_vterm.h diff --git a/pico/CMakeLists.txt b/pico/CMakeLists.txt index 9a570b2..5e572c2 100644 --- a/pico/CMakeLists.txt +++ b/pico/CMakeLists.txt @@ -29,7 +29,6 @@ target_sources(applevga PUBLIC main.c abus.c buffers.c - card_videx.c colors.c config.c device_regs.c @@ -38,9 +37,9 @@ target_sources(applevga PUBLIC render_lores.c render_testpat.c render_text.c - render_videx_text.c ${TEXTFONT_SRC_FILES} vga.c + videx_vterm.c ) target_include_directories(applevga PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_link_libraries(applevga PUBLIC diff --git a/pico/abus.c b/pico/abus.c index dd29b12..b01fe2f 100644 --- a/pico/abus.c +++ b/pico/abus.c @@ -4,9 +4,11 @@ #include "abus.pio.h" #include "board_config.h" #include "buffers.h" -#include "card_videx.h" #include "colors.h" #include "device_regs.h" +#ifdef APPLE_MODEL_IIPLUS +#include "videx_vterm.h" +#endif #if CONFIG_PIN_APPLEBUS_PHI0 != PHI0_GPIO @@ -162,13 +164,13 @@ static void shadow_softsw_57(bool is_write, uint_fast16_t address, uint_fast8_t static void shadow_softsw_58(bool is_write, uint_fast16_t address, uint_fast8_t data) { #ifdef APPLE_MODEL_IIPLUS - card_videx_80col = false; + videx_vterm_80col_enabled = false; #endif } static void shadow_softsw_59(bool is_write, uint_fast16_t address, uint_fast8_t data) { #ifdef APPLE_MODEL_IIPLUS - card_videx_80col = true; + videx_vterm_80col_enabled = true; #endif } @@ -195,7 +197,7 @@ void abus_init() { soft_switches = SOFTSW_TEXT_MODE; #ifdef APPLE_MODEL_IIPLUS - card_videx_card_videx_init(); + videx_vterm_init(); #endif // Setup soft-switch handlers for the Apple model @@ -225,7 +227,7 @@ void abus_init() { #ifdef APPLE_MODEL_IIPLUS // slot 3 device registers for(uint i = 0xb0; i < 0xc0; i++) { - softsw_handlers[i] = videx_shadow_register; + softsw_handlers[i] = videx_vterm_shadow_register; } #endif @@ -308,28 +310,19 @@ static void shadow_memory(bool is_write, uint_fast16_t address, uint32_t value) #ifdef APPLE_MODEL_IIPLUS else if((address >= 0xc300) && (address < 0xc400)) { // slot 3 access - card_videx_mem_on = true; + videx_vterm_mem_selected = true; } #endif break; -#ifdef APPLE_MODEL_IIPLUS case 0xc800 >> 10: case 0xcc00 >> 10: // expansion slot memory space $C800-$CFFF reset_detect_state = 0; - if(!card_videx_mem_on) - break; - - if(address < 0xce00) { - if(is_write) { - card_videx_putSLOTC8XX(address, value); - } - } else { - card_videx_mem_on = false; - } - break; +#ifdef APPLE_MODEL_IIPLUS + videx_vterm_shadow_c8xx(is_write, address, value); #endif + break; case 0x0000 >> 10: case 0xfc00 >> 10: @@ -355,7 +348,7 @@ static void shadow_memory(bool is_write, uint_fast16_t address, uint32_t value) soft_altcharset = false; soft_ramwrt = false; #ifdef APPLE_MODEL_IIPLUS - card_videx_80col = false; + videx_vterm_80col_enabled = false; #endif reset_detect_state = 0; diff --git a/pico/buffers.c b/pico/buffers.c index 53c89ca..819b39d 100644 --- a/pico/buffers.c +++ b/pico/buffers.c @@ -10,10 +10,6 @@ volatile bool soft_dhires; volatile bool soft_monochrom; volatile bool soft_ramwrt; -// activate videx appleii+ -volatile bool card_videx_80col; -volatile bool card_videx_mem_on; - // Custom device soft-switches volatile bool soft_scanline_emulation; diff --git a/pico/buffers.h b/pico/buffers.h index db58efa..e03fd76 100644 --- a/pico/buffers.h +++ b/pico/buffers.h @@ -28,9 +28,6 @@ extern volatile bool soft_dhires; extern volatile bool soft_monochrom; extern volatile bool soft_ramwrt; -extern volatile bool card_videx_80col; -extern volatile bool card_videx_mem_on; - extern volatile bool soft_scanline_emulation; #define CHARACTER_ROM_SIZE 2048 diff --git a/pico/card_videx.c b/pico/card_videx.c deleted file mode 100644 index e04a4fa..0000000 --- a/pico/card_videx.c +++ /dev/null @@ -1,216 +0,0 @@ -#include "card_videx.h" - - -const uint8_t videx_rom[0x400] = { // 0x0400 at C800-CBFF - 0xad, 0x7b, 0x07, 0x29, 0xf8, 0xc9, 0x30, 0xf0, 0x21, 0xa9, 0x30, 0x8d, 0x7b, 0x07, 0x8d, 0xfb, 0x07, 0xa9, 0x00, 0x8d, 0xfb, 0x06, - 0x20, 0x61, 0xc9, 0xa2, 0x00, 0x8a, 0x8d, 0xb0, 0xc0, 0xbd, 0xa1, 0xc8, 0x8d, 0xb1, 0xc0, 0xe8, 0xe0, 0x10, 0xd0, 0xf1, 0x8d, 0x59, - 0xc0, 0x60, 0xad, 0xfb, 0x07, 0x29, 0x08, 0xf0, 0x09, 0x20, 0x93, 0xfe, 0x20, 0x22, 0xfc, 0x20, 0x89, 0xfe, 0x68, 0xa8, 0x68, 0xaa, - 0x68, 0x60, 0x20, 0xd1, 0xc8, 0xe6, 0x4e, 0xd0, 0x02, 0xe6, 0x4f, 0xad, 0x00, 0xc0, 0x10, 0xf5, 0x20, 0x5c, 0xc8, 0x90, 0xf0, 0x2c, - 0x10, 0xc0, 0x18, 0x60, 0xc9, 0x8b, 0xd0, 0x02, 0xa9, 0xdb, 0xc9, 0x81, 0xd0, 0x0a, 0xad, 0xfb, 0x07, 0x49, 0x40, 0x8d, 0xfb, 0x07, - 0xb0, 0xe7, 0x48, 0xad, 0xfb, 0x07, 0x0a, 0x0a, 0x68, 0x90, 0x1f, 0xc9, 0xb0, 0x90, 0x1b, 0x2c, 0x63, 0xc0, 0x30, 0x14, 0xc9, 0xb0, - 0xf0, 0x0e, 0xc9, 0xc0, 0xd0, 0x02, 0xa9, 0xd0, 0xc9, 0xdb, 0x90, 0x08, 0x29, 0xcf, 0xd0, 0x04, 0xa9, 0xdd, 0x09, 0x20, 0x48, 0x29, - 0x7f, 0x8d, 0x7b, 0x06, 0x68, 0x38, 0x60, 0x7b, 0x50, 0x5e, 0x29, 0x1b, 0x08, 0x18, 0x19, 0x00, 0x08, 0xe0, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x8d, 0x7b, 0x06, 0xa5, 0x25, 0xcd, 0xfb, 0x05, 0xf0, 0x06, 0x8d, 0xfb, 0x05, 0x20, 0x04, 0xca, 0xa5, 0x24, 0xcd, 0x7b, 0x05, - 0x90, 0x03, 0x8d, 0x7b, 0x05, 0xad, 0x7b, 0x06, 0x20, 0x89, 0xca, 0xa9, 0x0f, 0x8d, 0xb0, 0xc0, 0xad, 0x7b, 0x05, 0xc9, 0x50, 0xb0, - 0x13, 0x6d, 0x7b, 0x04, 0x8d, 0xb1, 0xc0, 0xa9, 0x0e, 0x8d, 0xb0, 0xc0, 0xa9, 0x00, 0x6d, 0xfb, 0x04, 0x8d, 0xb1, 0xc0, 0x60, 0x49, - 0xc0, 0xc9, 0x08, 0xb0, 0x1d, 0xa8, 0xa9, 0xc9, 0x48, 0xb9, 0xf2, 0xcb, 0x48, 0x60, 0xea, 0xac, 0x7b, 0x05, 0xa9, 0xa0, 0x20, 0x71, - 0xca, 0xc8, 0xc0, 0x50, 0x90, 0xf8, 0x60, 0xa9, 0x34, 0x8d, 0x7b, 0x07, 0x60, 0xa9, 0x32, 0xd0, 0xf8, 0xa0, 0xc0, 0xa2, 0x80, 0xca, - 0xd0, 0xfd, 0xad, 0x30, 0xc0, 0x88, 0xd0, 0xf5, 0x60, 0xac, 0x7b, 0x05, 0xc0, 0x50, 0x90, 0x05, 0x48, 0x20, 0xb0, 0xc9, 0x68, 0xac, - 0x7b, 0x05, 0x20, 0x71, 0xca, 0xee, 0x7b, 0x05, 0x2c, 0x78, 0x04, 0x10, 0x07, 0xad, 0x7b, 0x05, 0xc9, 0x50, 0xb0, 0x68, 0x60, 0xac, - 0x7b, 0x05, 0xad, 0xfb, 0x05, 0x48, 0x20, 0x07, 0xca, 0x20, 0x04, 0xc9, 0xa0, 0x00, 0x68, 0x69, 0x00, 0xc9, 0x18, 0x90, 0xf0, 0xb0, - 0x23, 0x20, 0x67, 0xc9, 0x98, 0xf0, 0xe8, 0xa9, 0x00, 0x8d, 0x7b, 0x05, 0x8d, 0xfb, 0x05, 0xa8, 0xf0, 0x12, 0xce, 0x7b, 0x05, 0x10, - 0x9d, 0xa9, 0x4f, 0x8d, 0x7b, 0x05, 0xad, 0xfb, 0x05, 0xf0, 0x93, 0xce, 0xfb, 0x05, 0x4c, 0x04, 0xca, 0xa9, 0x30, 0x8d, 0x7b, 0x07, - 0x68, 0x09, 0x80, 0xc9, 0xb1, 0xd0, 0x67, 0xa9, 0x08, 0x8d, 0x58, 0xc0, 0xd0, 0x5b, 0xc9, 0xb2, 0xd0, 0x51, 0xa9, 0xfe, 0x2d, 0xfb, - 0x07, 0x8d, 0xfb, 0x07, 0x60, 0x8d, 0x7b, 0x06, 0x4e, 0x78, 0x04, 0x4c, 0xcb, 0xc8, 0x20, 0x27, 0xca, 0xee, 0xfb, 0x05, 0xad, 0xfb, - 0x05, 0xc9, 0x18, 0x90, 0x4a, 0xce, 0xfb, 0x05, 0xad, 0xfb, 0x06, 0x69, 0x04, 0x29, 0x7f, 0x8d, 0xfb, 0x06, 0x20, 0x12, 0xca, 0xa9, - 0x0d, 0x8d, 0xb0, 0xc0, 0xad, 0x7b, 0x04, 0x8d, 0xb1, 0xc0, 0xa9, 0x0c, 0x8d, 0xb0, 0xc0, 0xad, 0xfb, 0x04, 0x8d, 0xb1, 0xc0, 0xa9, - 0x17, 0x20, 0x07, 0xca, 0xa0, 0x00, 0x20, 0x04, 0xc9, 0xb0, 0x95, 0xc9, 0xb3, 0xd0, 0x0e, 0xa9, 0x01, 0x0d, 0xfb, 0x07, 0xd0, 0xa9, - 0xc9, 0xb0, 0xd0, 0x9c, 0x4c, 0x09, 0xc8, 0x4c, 0x27, 0xc9, 0xad, 0xfb, 0x05, 0x8d, 0xf8, 0x04, 0x0a, 0x0a, 0x6d, 0xf8, 0x04, 0x6d, - 0xfb, 0x06, 0x48, 0x4a, 0x4a, 0x4a, 0x4a, 0x8d, 0xfb, 0x04, 0x68, 0x0a, 0x0a, 0x0a, 0x0a, 0x8d, 0x7b, 0x04, 0x60, 0xc9, 0x0d, 0xd0, - 0x06, 0xa9, 0x00, 0x8d, 0x7b, 0x05, 0x60, 0x09, 0x80, 0xc9, 0xa0, 0xb0, 0xce, 0xc9, 0x87, 0x90, 0x08, 0xa8, 0xa9, 0xc9, 0x48, 0xb9, - 0xb9, 0xc9, 0x48, 0x60, 0x18, 0x71, 0x13, 0xb2, 0x48, 0x60, 0xaf, 0x9d, 0xf2, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, - 0x66, 0x0e, 0x13, 0x38, 0x00, 0x14, 0x7b, 0x18, 0x98, 0x6d, 0x7b, 0x04, 0x48, 0xa9, 0x00, 0x6d, 0xfb, 0x04, 0x48, 0x0a, 0x29, 0x0c, - 0xaa, 0xbd, 0xb0, 0xc0, 0x68, 0x4a, 0x68, 0xaa, 0x60, 0x0a, 0x48, 0xad, 0xfb, 0x07, 0x4a, 0x68, 0x6a, 0x48, 0x20, 0x59, 0xca, 0x68, - 0xb0, 0x05, 0x9d, 0x00, 0xcc, 0x90, 0x03, 0x9d, 0x00, 0xcd, 0x60, 0x48, 0xa9, 0xf7, 0x20, 0xa0, 0xc9, 0x8d, 0x59, 0xc0, 0xad, 0x7b, - 0x07, 0x29, 0x07, 0xd0, 0x04, 0x68, 0x4c, 0x23, 0xca, 0x29, 0x04, 0xf0, 0x03, 0x4c, 0x87, 0xc9, 0x68, 0x38, 0xe9, 0x20, 0x29, 0x7f, - 0x48, 0xce, 0x7b, 0x07, 0xad, 0x7b, 0x07, 0x29, 0x03, 0xd0, 0x15, 0x68, 0xc9, 0x18, 0xb0, 0x03, 0x8d, 0xfb, 0x05, 0xad, 0xf8, 0x05, - 0xc9, 0x50, 0xb0, 0x03, 0x8d, 0x7b, 0x05, 0x4c, 0x04, 0xca, 0x68, 0x8d, 0xf8, 0x05, 0x60, 0xad, 0x00, 0xc0, 0xc9, 0x93, 0xd0, 0x0f, - 0x2c, 0x10, 0xc0, 0xad, 0x00, 0xc0, 0x10, 0xfb, 0xc9, 0x83, 0xf0, 0x03, 0x2c, 0x10, 0xc0, 0x60, 0xa8, 0xb9, 0x31, 0xcb, 0x20, 0xf1, - 0xc8, 0x20, 0x44, 0xc8, 0xc9, 0xce, 0xb0, 0x08, 0xc9, 0xc9, 0x90, 0x04, 0xc9, 0xcc, 0xd0, 0xea, 0x4c, 0xf1, 0xc8, 0xea, 0x2c, 0xcb, - 0xff, 0x70, 0x31, 0x38, 0x90, 0x18, 0xb8, 0x50, 0x2b, 0x01, 0x82, 0x11, 0x14, 0x1c, 0x22, 0x4c, 0x00, 0xc8, 0x20, 0x44, 0xc8, 0x29, - 0x7f, 0xa2, 0x00, 0x60, 0x20, 0xa7, 0xc9, 0xa2, 0x00, 0x60, 0xc9, 0x00, 0xf0, 0x09, 0xad, 0x00, 0xc0, 0x0a, 0x90, 0x03, 0x20, 0x5c, - 0xc8, 0xa2, 0x00, 0x60, 0x91, 0x28, 0x38, 0xb8, 0x8d, 0xff, 0xcf, 0x48, 0x85, 0x35, 0x8a, 0x48, 0x98, 0x48, 0xa5, 0x35, 0x86, 0x35, - 0xa2, 0xc3, 0x8e, 0x78, 0x04, 0x48, 0x50, 0x10, 0xa9, 0x32, 0x85, 0x38, 0x86, 0x39, 0xa9, 0x07, 0x85, 0x36, 0x86, 0x37, 0x20, 0x00, - 0xc8, 0x18, 0x90, 0x6f, 0x68, 0xa4, 0x35, 0xf0, 0x1f, 0x88, 0xad, 0x78, 0x06, 0xc9, 0x88, 0xf0, 0x17, 0xd9, 0x00, 0x02, 0xf0, 0x12, - 0x49, 0x20, 0xd9, 0x00, 0x02, 0xd0, 0x3b, 0xad, 0x78, 0x06, 0x99, 0x00, 0x02, 0xb0, 0x03, 0x20, 0xed, 0xca, 0xa9, 0x80, 0x20, 0xf5, - 0xc9, 0x20, 0x44, 0xc8, 0xc9, 0x9b, 0xf0, 0xf1, 0xc9, 0x8d, 0xd0, 0x05, 0x48, 0x20, 0x01, 0xc9, 0x68, 0xc9, 0x95, 0xd0, 0x12, 0xac, - 0x7b, 0x05, 0x20, 0x59, 0xca, 0xb0, 0x05, 0xbd, 0x00, 0xcc, 0x90, 0x03, 0xbd, 0x00, 0xcd, 0x09, 0x80, 0x8d, 0x78, 0x06, 0xd0, 0x08, - 0x20, 0x44, 0xc8, 0xa0, 0x00, 0x8c, 0x78, 0x06, 0xba, 0xe8, 0xe8, 0xe8, 0x9d, 0x00, 0x01, 0xa9, 0x00, 0x85, 0x24, 0xad, 0xfb, 0x05, - 0x85, 0x25, 0x4c, 0x2e, 0xc8, 0x68, 0xac, 0xfb, 0x07, 0x10, 0x08, 0xac, 0x78, 0x06, 0xc0, 0xe0, 0x90, 0x01, 0x98, 0x20, 0xb1, 0xc8, - 0x20, 0xcf, 0xca, 0xa9, 0x7f, 0x20, 0xa0, 0xc9, 0xad, 0x7b, 0x05, 0xe9, 0x47, 0x90, 0xd4, 0x69, 0x1f, 0x18, 0x90, 0xd1, 0x60, 0x38, - 0x71, 0xb2, 0x7b, 0x00, 0x48, 0x66, 0xc4, 0xc2, 0xc1, 0xff, 0xc3, 0xea}; -uint8_t videx_chars[0xfff]; // 0x0-0x7ff rom 1 | 0x800-0xfff rom2 character rom (12x8) Matrix) -uint8_t videx_vram[2048]; // 0x0800 at CC00-CDFF in 4 banks of 0x1FF - -// internal variables -uint8_t videx_bankSLOT; -uint8_t videx_regvalSLOT; // active memory bank, selected register -uint8_t videx_regSLOT[17]; // registers of the CRT-controller -uint8_t videx_upperSLOT, videx_lowerSLOT; // cursor size -uint8_t videx_blink_mode, videx_blink_cursor; - -int card_videx_getC0SLOTX(int adr) // 0x0400 at C800-CBFF -{ - int value = 0x00; - - // define current memory bank - videx_bankSLOT = (adr & 0x000c) >> 2; - - if(adr & 0x0001) - // get current register value - value = videx_regSLOT[videx_regvalSLOT]; - else - // define current register - value = videx_regvalSLOT; - - return value; -} - - -// Shadow accesses to card registers in $C0n0 - $C0nF range -void videx_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data) { - // define current memory bank - videx_bankSLOT = (address & 0x000c) >> 2; - - if(!is_write) - return; - - if(address & 0x0001) { - // set current register value - videx_regSLOT[videx_regvalSLOT] = data; - - // 10: Cursor upper, 11: Cursor lower - if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) { - card_videx_modifySLOT(); - } - } else { - // define current register - videx_regvalSLOT = data; - } -} - - -// IOSEL READS ROM -// when reading using iosel, adds bit at A9 -uint8_t card_videx_getRomIoSel(int addr) { - if(addr < 0xCC00) - return videx_rom[(addr | 0b1000000000) & 0x03ff]; - - return 0; -} - -// Read Video Memory using position x, y -int8_t card_videx_getCSLOTXX(int col, int row) { - int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); - // int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); - - int vaddr = (((row * 80) + col) + vstart) % 0x800; - - return videx_vram[vaddr]; -} - -// Read Character Rom (Char/scanline) -int8_t card_videx_getVideoBits(int8_t keycode, int line) { - return videx_chars[keycode * 16 + line]; -} - -// Is cursor at defined x, y? -bool card_videx_isCursorPosition(int col, int row) { - int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); - int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); - return vcursor == (((row * 80) + col) + vstart); -} - -// IOSTB - Get Rom or VRam -int card_videx_getSLOTC8XX(int adr) { - // if (adr < 0x0400) // Rom is at 0x0-0x3ff - if(adr < 0xCC00) // Rom is at 0x0-0x3ff - return (videx_rom[adr & 0x03ff]); - else - // VRAM is at 0x600-0x7FF - // VRAM has 0x0800 at CC00-CDFF divided in 4 banks of 0x1FF - // if (adr < 0x0600) - return (videx_vram[(adr & 0x01ff) + videx_bankSLOT * 0x0200]); - // else //600 (or CE00-CF00) - // return(0); -} - -// IOSTB - set VRam -void card_videx_putSLOTC8XX(int adr, int value) { - // VRAM is at 0x600-0x7FF - // VRAM has 0x0800 at CC00-CDFF divided in 4 banks of 0x1FF - if((adr >= 0xCC00) && (adr <= 0xCDFF)) { - int vadr; - - vadr = (adr & 0x01ff) + videx_bankSLOT * 0x0200; - videx_vram[vadr] = value; - } -} - - -void card_videx_card_videx_init() { - // initializing registers - videx_bankSLOT = 0; - videx_regvalSLOT = 0; - videx_regSLOT[0] = 0x7b; - videx_regSLOT[1] = 0x50; - videx_regSLOT[2] = 0x62; - videx_regSLOT[3] = 0x29; - videx_regSLOT[4] = 0x1b; - videx_regSLOT[5] = 0x08; - videx_regSLOT[6] = 0x18; - videx_regSLOT[7] = 0x19; - videx_regSLOT[8] = 0x0; - videx_regSLOT[9] = 0x8; - videx_regSLOT[10] = 0xc0; - videx_regSLOT[11] = 0x8; - videx_regSLOT[12] = 0x0; - videx_regSLOT[13] = 0x0; - videx_regSLOT[14] = 0x0; - videx_regSLOT[15] = 0x0; - videx_regSLOT[16] = 0x0; - videx_upperSLOT = 0; - videx_lowerSLOT = 8; - // videx_oldcursorSLOT = 0; - - card_videx_modifySLOT(); -} - -void card_videx_modifySLOT() { - videx_blink_cursor = (videx_regSLOT[10] & 0x40) > 0; - videx_blink_mode = (videx_regSLOT[10] & 0x20) > 0; - - // If videx_blink_cursor is false then - // videx_blink_mode determines if there is a cursor displayed (false) or not (true). - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink - // - true = 1/32th field rate blink - - // glyph start - videx_upperSLOT = videx_regSLOT[10] & 0xf; - if(videx_upperSLOT > 11) - videx_upperSLOT = 11; - - // glyph end - videx_lowerSLOT = videx_regSLOT[11] & 0xf; - if(videx_lowerSLOT > 11) - videx_lowerSLOT = 11; - - // if the setting is ridiculous - if(videx_upperSLOT >= videx_lowerSLOT) { - videx_upperSLOT = 0; - videx_lowerSLOT = 11; - } -} diff --git a/pico/card_videx.h b/pico/card_videx.h deleted file mode 100644 index fc5464b..0000000 --- a/pico/card_videx.h +++ /dev/null @@ -1,134 +0,0 @@ -#pragma once - -#ifndef CARD_VIDEX -#define CARD_VIDEX - -#include -#include -/* -//notes: - -// To turn on/off 80 columns mode: -// Write at 0xC058 or 0xC059 -// card_videx_80col = (addr == 0xc059); -// -// To Control the card: -// -// IOSEL // 0xC300-C3FFF - slot 3 -// Read -// r = videxcard.getRomIoSel(addr & 0x1FF); -// card_videx_mem_on = true; -// Write -// card_videx_mem_on = true; -// -// DEVSEL // 0xC0B0-C0BF -// Read -// r = videxcard.getC0SLOTX(addr); -// -// Write -// videxcard.putC0SLOTX(addr, val); -// -// IOSTB (0xC800-0xCFFF) -// Read -// if (((addr >> 9) & 0b11) == 0b11) card_videx_mem_on = false; -// -// if (card_videx_mem_on && addr >= 0xC800 && addr <= 0xCDFF) -// r = videxcard.getSLOTC8XX(addr & 0x7ff); -// -// Write -// if (((addr >> 9) & 0b11) == 0b11) card_videx_mem_on = false; -// -// if (card_videx_mem_on && addr >= 0xC800 && addr <= 0xCDFF) -// videxcard.putSLOTC8XX(addr - 0xC800, val); -// -// To Render: -// -// -//for (int y = 0; y < 25; y++) { -// for (int x = 0; x < 80; x++) { -// -// int vkeycode = videxcard.getCSLOTXX(x, y); // get ascii code from memory -// bool vinverse = videxcard.isCursorPosition(x, y); // check cursor position to inverse -// -// for (int i = 0; i < 9; i++) { -// -// int video_bits = videxcard.getVideoBits(vkeycode, i); // get bits for the current char/scanline -// -// if (vinverse) -// display_bit_80col(renderer, x, y, ~video_bits, i); // render char/scanline -// else -// display_bit_80col(renderer, x, y, video_bits, i); // render char/scanline -// -// } -// } -//} -*/ - -extern const uint8_t videx_rom[0x400]; -extern uint8_t videx_chars[0xfff]; // 0x0-0x7ff rom 1 | 0x800-0xfff rom2 character rom (12x8) Matrix) -extern uint8_t videx_vram[2048]; // 0x0800 at CC00-CDFF in 4 banks of 0x1FF - -// internal variables -extern uint8_t videx_bankSLOT; -extern uint8_t videx_regvalSLOT; // active memory bank, selected register -extern uint8_t videx_regSLOT[17]; // registers of the CRT-controller -extern uint8_t videx_upperSLOT, videx_lowerSLOT; // cursor size -extern uint8_t videx_blink_mode, videx_blink_cursor; -//******************************************************* -// Registers -// register r/w normal value Name -// 00: w 7B Horiz. total -// 01: w 50 Horiz. displayed -// 02: w 62 Horiz. sync pos -// 03: w 29 Horiz. sync width -// 04: w 1B Vert. total -// 05: w 08 Vert. adjust -// 06: w 18 Vert. displayed -// 07: w 19 Vert. sync pos -// 08: w 00 Interlaced -// 09: w 08 Max. scan line -// 10:0A w C0 Cursor upper -// 11:0B w 08 Cursor lower -// 12:0C w 00 Startpos Hi -// 13:0D w 00 Startpos Lo -// 14:0E r/w 00 Cursor Hi -// 15:0F r/w 00 Cursor Lo -// 16:10 r 00 Lightpen Hi -// 17:11 r 00 Lightpen Lo -// -// The registers are addressed as follows: -// To write To read -// LDA #$ LDA #$ -// STA $C0B0 STA $C0B0 -// LDA #$ LDA $C0B1 -// STA $C0B1 -//******************************************************* - -void videx_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data); - -// 0x0400 at C800-CBFF -int card_videx_getC0SLOTX(int adr); - - -// IOSEL READS ROM -// when reading using iosel, adds bit at A9 -uint8_t card_videx_getRomIoSel(int addr); - -// Read Video Memory using position x, y -int8_t card_videx_getCSLOTXX(int col, int row); - -// Read Character Rom (Char/scanline) -int8_t card_videx_getVideoBits(int8_t keycode, int line); - -// Is cursor at defined x, y? -bool card_videx_isCursorPosition(int col, int row); -// IOSTB - Get Rom or VRam -int card_videx_getSLOTC8XX(int adr); - -// IOSTB - set VRam -void card_videx_putSLOTC8XX(int adr, int value); - -void card_videx_card_videx_init(); - -void card_videx_modifySLOT(); -#endif \ No newline at end of file diff --git a/pico/render.c b/pico/render.c index 0d63aa1..441cc03 100644 --- a/pico/render.c +++ b/pico/render.c @@ -1,5 +1,8 @@ #include "render.h" #include "buffers.h" +#ifdef APPLE_MODEL_IIPLUS +#include "videx_vterm.h" +#endif void render_init() { @@ -34,7 +37,7 @@ void render_loop() { break; default: #ifdef APPLE_MODEL_IIPLUS - if(card_videx_80col) { + if(videx_vterm_80col_enabled) { render_videx_text(); } else #endif diff --git a/pico/render.h b/pico/render.h index 17aeecb..b55eb5c 100644 --- a/pico/render.h +++ b/pico/render.h @@ -20,7 +20,3 @@ extern void render_mixed_lores(); extern void generate_hires_tables(); extern void render_hires(bool mixed); - -extern void update_videx_text_flasher(); -extern void render_videx_text(); -extern void render_videx_text_line(unsigned int line); diff --git a/pico/render_videx_text.c b/pico/render_videx_text.c deleted file mode 100644 index b4db0a6..0000000 --- a/pico/render_videx_text.c +++ /dev/null @@ -1,144 +0,0 @@ -#include "render.h" - -#include -#include "buffers.h" -#include "card_videx.h" -#include "colors.h" -#include "textfont/textfont.h" -#include "vga.h" - - -static uint_fast32_t videx_text_flasher_mask = 0; -static uint64_t videx_next_flash_tick = 0; - -void update_videx_text_flasher() { - uint64_t now = time_us_64(); - if(now > videx_next_flash_tick) { - videx_text_flasher_mask ^= 0xff; - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink 62500u - // - true = 1/32th field rate blink 31250u - - if(videx_blink_mode) - videx_next_flash_tick = now + 312500u; - else - videx_next_flash_tick = now + 625000u; - } -} - - -static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t glyph_line, bool has_cursor) { - uint_fast8_t bits; - if(ch < 0x80) { - bits = videx_normal[((uint_fast16_t)ch << 4) + glyph_line]; - } else { - bits = videx_inverse[((uint_fast16_t)(ch & 0x7f) << 4) + glyph_line]; - } - - // If videx_blink_cursor is false then - // videx_blink_mode determines if there is a cursor displayed (false) or not (true). - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink - // - true = 1/32th field rate blink - if(has_cursor && videx_upperSLOT <= glyph_line && videx_lowerSLOT >= glyph_line) { - // flashing character - if(videx_blink_cursor) - bits ^= videx_text_flasher_mask; - else if(!videx_blink_mode) - bits ^= 0xff; - } - - // VIDEX HAS 8 BIT COL - return bits; -} - - -void render_videx_text() { - vga_prepare_frame(); - // Skip 25 lines to center vertically - vga_skip_lines(25); - - for(int line = 0; line < 24; line++) { - render_videx_text_line(line); - } -} - - -void render_videx_text_line(unsigned int line) { - const uint32_t bg_color = soft_monochrom ? mono_bg_color : ntsc_palette[0]; - const uint32_t fg_color = soft_monochrom ? mono_fg_color : ntsc_palette[15]; - uint32_t bits_to_pixelpair[4] = { - (bg_color << 16) | bg_color, - (bg_color << 16) | fg_color, - (fg_color << 16) | bg_color, - (fg_color << 16) | fg_color, - }; - - - int vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); - int vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); - - int line_offset; - int vram_offset; - bool has_cursor_a; - bool has_cursor_b; - uint_fast8_t char_a; - uint_fast8_t char_b; - uint_fast16_t bits; - - struct vga_scanline *sl; - uint sl_pos; - - for(uint glyph_line = 0; glyph_line < 9; glyph_line++) { - sl = vga_prepare_scanline(); - sl_pos = 0; - - // Pad 40 pixels on the left to center horizontally - // VIDEX HAS 8 BIT COL - // sl->data[sl_pos++] = (0 | THEN_EXTEND_7) | ((0 | THEN_EXTEND_7) << 16); // 16 pixels - // sl->data[sl_pos++] = (0 | THEN_EXTEND_7) | ((0 | THEN_EXTEND_7) << 16); // 16 pixels - // sl->data[sl_pos++] = (0 | THEN_EXTEND_3) | ((0 | THEN_EXTEND_3) << 16); // 8 pixels - - for(uint col = 0; col < 80;) { - // Grab 14 pixels from the next two characters. If an aux memory bank was provided (80 column mode is on) - // then the first character comes from that, otherwise both characters just come from main memory. - - line_offset = (((line * 80) + col) + vstart); - vram_offset = line_offset % 0x800; - has_cursor_a = vcursor == line_offset; - char_a = videx_vram[vram_offset]; - col++; - - line_offset = (((line * 80) + col) + vstart); - vram_offset = line_offset % 0x800; - has_cursor_b = vcursor == line_offset; - char_b = videx_vram[vram_offset]; - col++; - - - // VIDEX HAS 8 BIT COL - bits = (char_videx_text_bits(char_b, glyph_line, has_cursor_b) << 8) | char_videx_text_bits(char_a, glyph_line, has_cursor_a); - - // Render each pair of bits into a pair of pixels, least significant bit first - // VIDEX HAS 8 BIT COL - for(int i = 0; i < 8; i++) { - sl->data[sl_pos] = bits_to_pixelpair[bits & 0x03]; - sl_pos++; - bits >>= 2; - } - } - - if(soft_scanline_emulation) { - // Just insert a blank scanline between each rendered scanline - sl->data[sl_pos++] = THEN_WAIT_HSYNC; - } else { - sl->repeat_count = 1; - } - sl->length = sl_pos; - vga_submit_scanline(sl); - } -} diff --git a/pico/videx_vterm.c b/pico/videx_vterm.c new file mode 100644 index 0000000..3798f3a --- /dev/null +++ b/pico/videx_vterm.c @@ -0,0 +1,233 @@ +#include "videx_vterm.h" + +#include +#include "buffers.h" +#include "colors.h" +#include "textfont/textfont.h" +#include "vga.h" + + +volatile bool videx_vterm_80col_enabled; +volatile bool videx_vterm_mem_selected; + +static uint8_t videx_vram[2048]; +static uint8_t videx_bankSLOT; // selected memory bank +static uint8_t videx_regvalSLOT; // selected CRTC register +static uint8_t videx_regSLOT[17]; // registers of the CRT-controller + +static uint8_t videx_upperSLOT, videx_lowerSLOT; // cursor size +static uint8_t videx_blink_mode, videx_blink_cursor; + +static uint_fast32_t videx_text_flasher_mask = 0; +static uint64_t videx_next_flash_tick = 0; + + +static void card_videx_modifySLOT(); + + +void videx_vterm_init() { + // initializing registers + videx_bankSLOT = 0; + videx_regvalSLOT = 0; + videx_regSLOT[0] = 0x7b; + videx_regSLOT[1] = 0x50; + videx_regSLOT[2] = 0x62; + videx_regSLOT[3] = 0x29; + videx_regSLOT[4] = 0x1b; + videx_regSLOT[5] = 0x08; + videx_regSLOT[6] = 0x18; + videx_regSLOT[7] = 0x19; + videx_regSLOT[8] = 0x00; + videx_regSLOT[9] = 0x08; + videx_regSLOT[10] = 0xc0; + videx_regSLOT[11] = 0x08; + videx_regSLOT[12] = 0x00; + videx_regSLOT[13] = 0x00; + videx_regSLOT[14] = 0x00; + videx_regSLOT[15] = 0x00; + videx_regSLOT[16] = 0x00; + videx_upperSLOT = 0; + videx_lowerSLOT = 8; + + card_videx_modifySLOT(); +} + + +// Shadow accesses to card registers in $C0n0 - $C0nF range +void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data) { + // define current memory bank + videx_bankSLOT = (address & 0x000c) >> 2; + + if(!is_write) + return; + + if(address & 0x0001) { + // set current register value + videx_regSLOT[videx_regvalSLOT] = data; + + // 10: Cursor upper, 11: Cursor lower + if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) { + card_videx_modifySLOT(); + } + } else { + // define current register + videx_regvalSLOT = data; + } +} + + +// Shadow bus accesses to the $C800-$CFFF memory space +void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t value) { + if(!videx_vterm_mem_selected) + return; + + if(address < 0xcc00) + return; // ignore ROM reads + + if(address < 0xce00) { + // this is the window into the card's video RAM + if(is_write) { + unsigned int vaddr = ((unsigned int)videx_bankSLOT << 9) + (address & 0x01ff); + videx_vram[vaddr] = value; + } + } else { + // accesses to $CE00-$CFFF deactivates the card's memory + videx_vterm_mem_selected = false; + } +} + + +static void card_videx_modifySLOT() { + videx_blink_cursor = (videx_regSLOT[10] & 0x40) > 0; + videx_blink_mode = (videx_regSLOT[10] & 0x20) > 0; + + // If videx_blink_cursor is false then + // videx_blink_mode determines if there is a cursor displayed (false) or not (true). + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink + // - true = 1/32th field rate blink + + // glyph start + videx_upperSLOT = videx_regSLOT[10] & 0xf; + if(videx_upperSLOT > 11) + videx_upperSLOT = 11; + + // glyph end + videx_lowerSLOT = videx_regSLOT[11] & 0xf; + if(videx_lowerSLOT > 11) + videx_lowerSLOT = 11; + + // if the setting is ridiculous + if(videx_upperSLOT >= videx_lowerSLOT) { + videx_upperSLOT = 0; + videx_lowerSLOT = 11; + } +} + + +void update_videx_text_flasher() { + uint64_t now = time_us_64(); + if(now > videx_next_flash_tick) { + videx_text_flasher_mask ^= 0xff; + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink 62500u + // - true = 1/32th field rate blink 31250u + + if(videx_blink_mode) + videx_next_flash_tick = now + 312500u; + else + videx_next_flash_tick = now + 625000u; + } +} + + +static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t glyph_line, bool has_cursor) { + uint_fast8_t bits; + if(ch < 0x80) { + bits = videx_normal[((uint_fast16_t)ch << 4) + glyph_line]; + } else { + bits = videx_inverse[((uint_fast16_t)(ch & 0x7f) << 4) + glyph_line]; + } + + // If videx_blink_cursor is false then + // videx_blink_mode determines if there is a cursor displayed (false) or not (true). + + // If videx_blink_cursor is true then + // videx_blink_mode determines blink rate + // - false = 1/16th field rate blink + // - true = 1/32th field rate blink + if(has_cursor && videx_upperSLOT <= glyph_line && videx_lowerSLOT >= glyph_line) { + // flashing character + if(videx_blink_cursor) { + bits ^= videx_text_flasher_mask; + } else if(!videx_blink_mode) { + bits ^= 0xff; + } + } + + return bits; +} + + +static void render_videx_text_line(unsigned int line) { + const uint32_t bg_color = soft_monochrom ? mono_bg_color : ntsc_palette[0]; + const uint32_t fg_color = soft_monochrom ? mono_fg_color : ntsc_palette[15]; + uint32_t bits_to_pixelpair[4] = { + (bg_color << 16) | bg_color, + (bg_color << 16) | fg_color, + (fg_color << 16) | bg_color, + (fg_color << 16) | fg_color, + }; + + const uint vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); + const uint vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); + + for(uint glyph_line = 0; glyph_line < 9; glyph_line++) { + struct vga_scanline *sl = vga_prepare_scanline(); + uint sl_pos = 0; + + // Note: Videx characters are 8 pixels wide so 80 columns fills an entire 640 pixel VGA line and + // no left-padding is needed + + for(uint col = 0; col < 80; col++) { + // Grab 8 pixels from the next character + uint line_offset = ((line * 80) + col) + vstart; + uint vram_offset = line_offset % sizeof(videx_vram); + bool has_cursor = (vcursor == line_offset); + uint_fast8_t ch = videx_vram[vram_offset]; + + uint_fast16_t bits = char_videx_text_bits(ch, glyph_line, has_cursor); + + // Render each pair of bits into a pair of pixels, least significant bit first + for(int i = 0; i < 4; i++) { + sl->data[sl_pos] = bits_to_pixelpair[bits & 0x03]; + sl_pos++; + bits >>= 2; + } + } + + if(soft_scanline_emulation) { + // Just insert a blank scanline between each rendered scanline + sl->data[sl_pos++] = THEN_WAIT_HSYNC; + } else { + sl->repeat_count = 1; + } + sl->length = sl_pos; + vga_submit_scanline(sl); + } +} + + +void render_videx_text() { + vga_prepare_frame(); + // Skip 25 lines to center vertically + vga_skip_lines(25); + + for(int line = 0; line < 24; line++) { + render_videx_text_line(line); + } +} diff --git a/pico/videx_vterm.h b/pico/videx_vterm.h new file mode 100644 index 0000000..48f9e78 --- /dev/null +++ b/pico/videx_vterm.h @@ -0,0 +1,15 @@ +#pragma once + +#include +#include + + +extern volatile bool videx_vterm_80col_enabled; +extern volatile bool videx_vterm_mem_selected; + +extern void videx_vterm_init(); +extern void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data); +extern void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t value); + +extern void update_videx_text_flasher(); +extern void render_videx_text(); From 4ca87b9908bfc0ea92d651567dfba296eb77e144 Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Sun, 3 Mar 2024 08:43:23 -0500 Subject: [PATCH 5/7] Slight refactoring & cleanup of videx code Some small refactoring and cleanup to: * Remove some redundant global variables * Use more consistent variable names --- pico/render.c | 2 +- pico/videx_vterm.c | 191 ++++++++++++++++++++------------------------- pico/videx_vterm.h | 2 +- 3 files changed, 87 insertions(+), 108 deletions(-) diff --git a/pico/render.c b/pico/render.c index 441cc03..65072f9 100644 --- a/pico/render.c +++ b/pico/render.c @@ -19,7 +19,7 @@ void render_loop() { while(1) { update_text_flasher(); #ifdef APPLE_MODEL_IIPLUS - update_videx_text_flasher(); + videx_vterm_update_flasher(); #endif switch(soft_switches & SOFTSW_MODE_MASK) { diff --git a/pico/videx_vterm.c b/pico/videx_vterm.c index 3798f3a..1ff080c 100644 --- a/pico/videx_vterm.c +++ b/pico/videx_vterm.c @@ -7,71 +7,82 @@ #include "vga.h" -volatile bool videx_vterm_80col_enabled; -volatile bool videx_vterm_mem_selected; - -static uint8_t videx_vram[2048]; -static uint8_t videx_bankSLOT; // selected memory bank -static uint8_t videx_regvalSLOT; // selected CRTC register -static uint8_t videx_regSLOT[17]; // registers of the CRT-controller - -static uint8_t videx_upperSLOT, videx_lowerSLOT; // cursor size -static uint8_t videx_blink_mode, videx_blink_cursor; - -static uint_fast32_t videx_text_flasher_mask = 0; +volatile bool videx_vterm_80col_enabled; // true -> the annunciator to enable 80-columns is on +volatile bool videx_vterm_mem_selected; // true -> videx memory is accessible at $C800-$CFFF +volatile uint8_t videx_vram[2048]; + +static uint8_t videx_banknum; // selected memory bank +static uint8_t videx_crtc_idx; // selected CRTC register + +// CRT controller registers (Ref. MC6845 datasheet): +// register r/w name +// 00 w Horiz. Total +// 01 w Horiz. Displayed +// 02 w Horiz. Sync Position +// 03 w Horiz. Sync Width +// 04 w Vert. Total +// 05 w Vert. Total Adjust +// 06 w Vert. Displayed +// 07 w Vert. Sync Position +// 08 w Interlace Mode +// 09 w Max Scan Line Address +// 10 w Cursor Start +// 11 w Cursor End +// 12 w Start Address (H) +// 13 w Start Address (L) +// 14 r/w Cursor (H) +// 15 r/w Cursor (L) +// 16 r Light Pen (H) +// 17 r Light Pen (L) +static volatile uint8_t videx_crtc_regs[17]; + +static uint_fast32_t videx_cursor_mask = 0; static uint64_t videx_next_flash_tick = 0; -static void card_videx_modifySLOT(); +#define CURSOR_LINE_START (videx_crtc_regs[10] & 0xf) +#define CURSOR_LINE_END (videx_crtc_regs[11] & 0xf) void videx_vterm_init() { // initializing registers - videx_bankSLOT = 0; - videx_regvalSLOT = 0; - videx_regSLOT[0] = 0x7b; - videx_regSLOT[1] = 0x50; - videx_regSLOT[2] = 0x62; - videx_regSLOT[3] = 0x29; - videx_regSLOT[4] = 0x1b; - videx_regSLOT[5] = 0x08; - videx_regSLOT[6] = 0x18; - videx_regSLOT[7] = 0x19; - videx_regSLOT[8] = 0x00; - videx_regSLOT[9] = 0x08; - videx_regSLOT[10] = 0xc0; - videx_regSLOT[11] = 0x08; - videx_regSLOT[12] = 0x00; - videx_regSLOT[13] = 0x00; - videx_regSLOT[14] = 0x00; - videx_regSLOT[15] = 0x00; - videx_regSLOT[16] = 0x00; - videx_upperSLOT = 0; - videx_lowerSLOT = 8; - - card_videx_modifySLOT(); + videx_banknum = 0; + videx_crtc_idx = 0; + videx_crtc_regs[0] = 0x7b; + videx_crtc_regs[1] = 0x50; + videx_crtc_regs[2] = 0x62; + videx_crtc_regs[3] = 0x29; + videx_crtc_regs[4] = 0x1b; + videx_crtc_regs[5] = 0x08; + videx_crtc_regs[6] = 0x18; + videx_crtc_regs[7] = 0x19; + videx_crtc_regs[8] = 0x00; + videx_crtc_regs[9] = 0x08; + videx_crtc_regs[10] = 0xc0; + videx_crtc_regs[11] = 0x08; + videx_crtc_regs[12] = 0x00; + videx_crtc_regs[13] = 0x00; + videx_crtc_regs[14] = 0x00; + videx_crtc_regs[15] = 0x00; } // Shadow accesses to card registers in $C0n0 - $C0nF range void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data) { - // define current memory bank - videx_bankSLOT = (address & 0x000c) >> 2; + // select the video memory bank + videx_banknum = (address & 0x000c) >> 2; if(!is_write) return; if(address & 0x0001) { // set current register value - videx_regSLOT[videx_regvalSLOT] = data; - - // 10: Cursor upper, 11: Cursor lower - if((videx_regvalSLOT == 10) || (videx_regvalSLOT == 11)) { - card_videx_modifySLOT(); + if(videx_crtc_idx < sizeof(videx_crtc_regs)) { + videx_crtc_regs[videx_crtc_idx] = data; } } else { - // define current register - videx_regvalSLOT = data; + // set the crtc register being accessed + videx_crtc_idx = data; } } @@ -87,7 +98,7 @@ void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t if(address < 0xce00) { // this is the window into the card's video RAM if(is_write) { - unsigned int vaddr = ((unsigned int)videx_bankSLOT << 9) + (address & 0x01ff); + unsigned int vaddr = ((unsigned int)videx_banknum << 9) + (address & 0x01ff); videx_vram[vaddr] = value; } } else { @@ -97,50 +108,31 @@ void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t } -static void card_videx_modifySLOT() { - videx_blink_cursor = (videx_regSLOT[10] & 0x40) > 0; - videx_blink_mode = (videx_regSLOT[10] & 0x20) > 0; - - // If videx_blink_cursor is false then - // videx_blink_mode determines if there is a cursor displayed (false) or not (true). - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink - // - true = 1/32th field rate blink - - // glyph start - videx_upperSLOT = videx_regSLOT[10] & 0xf; - if(videx_upperSLOT > 11) - videx_upperSLOT = 11; - - // glyph end - videx_lowerSLOT = videx_regSLOT[11] & 0xf; - if(videx_lowerSLOT > 11) - videx_lowerSLOT = 11; - - // if the setting is ridiculous - if(videx_upperSLOT >= videx_lowerSLOT) { - videx_upperSLOT = 0; - videx_lowerSLOT = 11; - } -} - - -void update_videx_text_flasher() { +void videx_vterm_update_flasher() { uint64_t now = time_us_64(); if(now > videx_next_flash_tick) { - videx_text_flasher_mask ^= 0xff; - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink 62500u - // - true = 1/32th field rate blink 31250u - - if(videx_blink_mode) + switch((videx_crtc_regs[10] >> 5) & 0x03) { + case 0: + // non-blinking cursor + videx_cursor_mask = 0xff; videx_next_flash_tick = now + 312500u; - else + break; + case 1: + // no cursor + videx_cursor_mask = 0; + videx_next_flash_tick = now + 312500u; + break; + case 2: + // blink, 1/16th field rate + videx_cursor_mask ^= 0xff; videx_next_flash_tick = now + 625000u; + break; + case 3: + // blink, 1/32th field rate + videx_cursor_mask ^= 0xff; + videx_next_flash_tick = now + 312500u; + break; + } } } @@ -153,20 +145,8 @@ static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t g bits = videx_inverse[((uint_fast16_t)(ch & 0x7f) << 4) + glyph_line]; } - // If videx_blink_cursor is false then - // videx_blink_mode determines if there is a cursor displayed (false) or not (true). - - // If videx_blink_cursor is true then - // videx_blink_mode determines blink rate - // - false = 1/16th field rate blink - // - true = 1/32th field rate blink - if(has_cursor && videx_upperSLOT <= glyph_line && videx_lowerSLOT >= glyph_line) { - // flashing character - if(videx_blink_cursor) { - bits ^= videx_text_flasher_mask; - } else if(!videx_blink_mode) { - bits ^= 0xff; - } + if(has_cursor && glyph_line >= CURSOR_LINE_START && glyph_line <= CURSOR_LINE_END) { + bits ^= videx_cursor_mask; } return bits; @@ -183,8 +163,8 @@ static void render_videx_text_line(unsigned int line) { (fg_color << 16) | fg_color, }; - const uint vstart = ((videx_regSLOT[12] << 8) | videx_regSLOT[13]); - const uint vcursor = ((videx_regSLOT[14] << 8) | videx_regSLOT[15]); + const uint vstart = ((videx_crtc_regs[12] & 0x3f) << 8) | videx_crtc_regs[13]; + const uint vcursor = ((videx_crtc_regs[14] & 0x3f) << 8) | videx_crtc_regs[15]; for(uint glyph_line = 0; glyph_line < 9; glyph_line++) { struct vga_scanline *sl = vga_prepare_scanline(); @@ -195,10 +175,9 @@ static void render_videx_text_line(unsigned int line) { for(uint col = 0; col < 80; col++) { // Grab 8 pixels from the next character - uint line_offset = ((line * 80) + col) + vstart; - uint vram_offset = line_offset % sizeof(videx_vram); - bool has_cursor = (vcursor == line_offset); - uint_fast8_t ch = videx_vram[vram_offset]; + uint crtc_mem_offset = ((line * 80) + col) + vstart; + bool has_cursor = (vcursor == crtc_mem_offset); + uint_fast8_t ch = videx_vram[crtc_mem_offset % sizeof(videx_vram)]; uint_fast16_t bits = char_videx_text_bits(ch, glyph_line, has_cursor); diff --git a/pico/videx_vterm.h b/pico/videx_vterm.h index 48f9e78..0909bc2 100644 --- a/pico/videx_vterm.h +++ b/pico/videx_vterm.h @@ -11,5 +11,5 @@ extern void videx_vterm_init(); extern void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data); extern void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t value); -extern void update_videx_text_flasher(); +extern void videx_vterm_update_flasher(); extern void render_videx_text(); From 2549026e2188142139d94fcec186a3523117fb9e Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Sun, 3 Mar 2024 09:05:34 -0500 Subject: [PATCH 6/7] Small Videx rendering fix Calculate the text window's start address and cursor address one at the start of the rendering frame to limit scrolling artifacts. --- pico/videx_vterm.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/pico/videx_vterm.c b/pico/videx_vterm.c index 1ff080c..3eed0ff 100644 --- a/pico/videx_vterm.c +++ b/pico/videx_vterm.c @@ -40,10 +40,6 @@ static uint_fast32_t videx_cursor_mask = 0; static uint64_t videx_next_flash_tick = 0; -#define CURSOR_LINE_START (videx_crtc_regs[10] & 0xf) -#define CURSOR_LINE_END (videx_crtc_regs[11] & 0xf) - - void videx_vterm_init() { // initializing registers videx_banknum = 0; @@ -145,7 +141,7 @@ static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t g bits = videx_inverse[((uint_fast16_t)(ch & 0x7f) << 4) + glyph_line]; } - if(has_cursor && glyph_line >= CURSOR_LINE_START && glyph_line <= CURSOR_LINE_END) { + if(has_cursor) { bits ^= videx_cursor_mask; } @@ -153,18 +149,18 @@ static inline uint_fast16_t char_videx_text_bits(uint_fast8_t ch, uint_fast8_t g } -static void render_videx_text_line(unsigned int line) { +static void render_videx_text_line(unsigned int line, uint text_base_addr, uint cursor_addr) { const uint32_t bg_color = soft_monochrom ? mono_bg_color : ntsc_palette[0]; const uint32_t fg_color = soft_monochrom ? mono_fg_color : ntsc_palette[15]; - uint32_t bits_to_pixelpair[4] = { + const uint32_t bits_to_pixelpair[4] = { (bg_color << 16) | bg_color, (bg_color << 16) | fg_color, (fg_color << 16) | bg_color, (fg_color << 16) | fg_color, }; - - const uint vstart = ((videx_crtc_regs[12] & 0x3f) << 8) | videx_crtc_regs[13]; - const uint vcursor = ((videx_crtc_regs[14] & 0x3f) << 8) | videx_crtc_regs[15]; + const uint cursor_line_start = videx_crtc_regs[10] & 0xf; + const uint cursor_line_end = videx_crtc_regs[11] & 0xf; + const uint crtc_mem_offset_of_line = text_base_addr + (line * 80); for(uint glyph_line = 0; glyph_line < 9; glyph_line++) { struct vga_scanline *sl = vga_prepare_scanline(); @@ -175,11 +171,10 @@ static void render_videx_text_line(unsigned int line) { for(uint col = 0; col < 80; col++) { // Grab 8 pixels from the next character - uint crtc_mem_offset = ((line * 80) + col) + vstart; - bool has_cursor = (vcursor == crtc_mem_offset); - uint_fast8_t ch = videx_vram[crtc_mem_offset % sizeof(videx_vram)]; - - uint_fast16_t bits = char_videx_text_bits(ch, glyph_line, has_cursor); + const uint crtc_mem_offset = crtc_mem_offset_of_line + col; + const bool has_cursor = + (crtc_mem_offset == cursor_addr) && (glyph_line >= cursor_line_start) && (glyph_line <= cursor_line_end); + uint_fast16_t bits = char_videx_text_bits(videx_vram[crtc_mem_offset % sizeof(videx_vram)], glyph_line, has_cursor); // Render each pair of bits into a pair of pixels, least significant bit first for(int i = 0; i < 4; i++) { @@ -206,7 +201,11 @@ void render_videx_text() { // Skip 25 lines to center vertically vga_skip_lines(25); + // Compute these once at the start of the frame + const uint text_base_addr = ((videx_crtc_regs[12] & 0x3f) << 8) | videx_crtc_regs[13]; + const uint cursor_addr = ((videx_crtc_regs[14] & 0x3f) << 8) | videx_crtc_regs[15]; + for(int line = 0; line < 24; line++) { - render_videx_text_line(line); + render_videx_text_line(line, text_base_addr, cursor_addr); } } From f812c5a8f18e6185e6096a96e616a89d686d2dd1 Mon Sep 17 00:00:00 2001 From: Mark Aikens <17986295+markadev@users.noreply.github.com> Date: Fri, 8 Mar 2024 07:46:29 -0500 Subject: [PATCH 7/7] Add an enable flag for the Videx support --- config-disk/STARTUP.bas | 27 ++++++++++++++++++--------- docs/Usage.md | 7 ++++++- pico/config.c | 25 +++++++++++++++++++++++++ pico/device_regs.c | 11 ++++++++++- pico/render.c | 2 +- pico/videx_vterm.c | 37 ++++++++++++++++++++++++++++++++++++- pico/videx_vterm.h | 3 +++ 7 files changed, 99 insertions(+), 13 deletions(-) diff --git a/config-disk/STARTUP.bas b/config-disk/STARTUP.bas index aed8dfd..578583f 100644 --- a/config-disk/STARTUP.bas +++ b/config-disk/STARTUP.bas @@ -12,9 +12,11 @@ 130 PRINT "1 SCANLINES ON 2 SCANLINES OFF" 140 PRINT "3 MONOCHROME ON 4 MONOCHROME OFF" 150 PRINT "5 MONOCHROME CFG 6 CHARSET CFG" - 170 PRINT "7 COLOR PATTERNS": PRINT "" - 180 PRINT "11 ABOUT": PRINT "12 LOAD DEFAULT CONFIG" - 180 PRINT "13 QUIT W/OUT SAVING": PRINT"14 SAVE AND QUIT": PRINT "" + 160 PRINT "7 ][+ VIDEX ON 8 ][+ VIDEX OFF" + 170 PRINT "9 COLOR PATTERNS": PRINT "" + 175 PRINT "11 ABOUT" + 180 PRINT "12 LOAD DEFAULT CONFIG": PRINT "13 LOAD SAVED CONFIG" + 185 PRINT "14 SAVE AND QUIT": PRINT "15 QUIT W/OUT SAVING" 190 VTAB 22: GOSUB 1400: INPUT "PLEASE ENTER YOUR SELECTION: ";CH 200 IF CH < 1 THEN GOSUB 1550 210 IF CH = 1 THEN GOSUB 500 @@ -23,14 +25,15 @@ 240 IF CH = 4 THEN GOSUB 650 250 IF CH = 5 THEN GOSUB 2000 260 IF CH = 6 THEN GOSUB 3000 - 270 IF CH = 7 THEN GOSUB 700 - 280 IF CH = 8 THEN GOSUB 1550 - 290 IF CH = 9 THEN GOSUB 1550 + 270 IF CH = 7 THEN GOSUB 900 + 280 IF CH = 8 THEN GOSUB 950 + 290 IF CH = 9 THEN GOSUB 700 300 IF CH = 10 THEN GOSUB 1550 310 IF CH = 11 THEN GOSUB 1650 320 IF CH = 12 THEN GOSUB 800 - 330 IF CH = 13 THEN GOTO 4050 - 340 IF CH = 14 THEN GOTO 4000 + 325 IF CH = 13 THEN GOSUB 850 + 330 IF CH = 14 THEN GOTO 4000 + 340 IF CH = 15 THEN GOTO 4050 350 IF CH > 14 THEN GOSUB 1550 360 GOTO 100 500 REM '''SCANLINES ON @@ -46,7 +49,13 @@ 720 FOR I = 0 TO 31: COLOR= I / 2: VLIN 0,39 AT I: NEXT I: FOR I = 0 TO 14 STEP 2: PRINT TAB( I * 2 + 1);I;: NEXT I: PRINT : FOR I = 1 TO 15 STEP 2: PRINT TAB( I * 2 + 1);I;: NEXT I 730 PRINT "": GET A$: TEXT : RETURN 800 REM '''LOAD DEFAULT CONFIGURATION - 810 POKE BASEADDR + 4,1: RETURN + 810 POKE BASEADDR + 4,0: RETURN + 850 REM '''LOAD SAVED CONFIGURATION + 860 POKE BASEADDR + 4,1: RETURN + 900 REM '''][+ VIDEX ON + 910 POKE BASEADDR + 0,4: RETURN + 950 REM '''][+ VIDEX OFF + 910 POKE BASEADDR + 0,8: RETURN 1400 REM STRING ROUTINES 1410 PRINT "---------------------------------------": RETURN 1450 HOME : PRINT "APPLE II VGA": GOSUB 1400: PRINT "COPYRIGHT (C) 2021-2023 MARK AIKENS": PRINT "COPYRIGHT (C) 2022-2023 DAVID KUDER": RETURN diff --git a/docs/Usage.md b/docs/Usage.md index 3c4dcff..8ac5e69 100644 --- a/docs/Usage.md +++ b/docs/Usage.md @@ -4,6 +4,9 @@ After you load on the firmware for your respective Apple II system (II+ or IIe) the VGA card is generally plug-and-play. Plug it in, power on your Apple II and that's it. +There are some optional features and other controls that can be changed using the +menu-based Configuration disk or by directly using `POKE` commands. + ## Soft Monochrome Mode @@ -56,7 +59,9 @@ This register controls enablement of some features of the card | bit(s) | Description | ------ | ----------- -| 7:2 | reserved +| 7:4 | reserved +| 3 | Setting to 1 will disable Videx VideoTerm support (II+ only) +| 2 | Setting to 1 will enable Videx VideoTerm support (II+ only) | 1 | Setting to 1 will disable simulated scanline rendering | 0 | Setting to 1 will enable simulated scanline rendering diff --git a/pico/config.c b/pico/config.c index 1c6193f..ec0622e 100644 --- a/pico/config.c +++ b/pico/config.c @@ -7,6 +7,9 @@ #include "buffers.h" #include "colors.h" #include "textfont/textfont.h" +#ifdef APPLE_MODEL_IIPLUS +#include "videx_vterm.h" +#endif // A block of flash is reserved for storing configuration persistently across power cycles @@ -32,11 +35,18 @@ struct config { // magic word determines if the stored configuration is valid uint32_t magic_word; + + // Add new fields after here. When reading the config use the IS_STORED_IN_CONFIG macro + // to determine if the field you're looking for is actually present in the stored config. + + uint8_t videx_vterm_enabled; }; // This is a compile-time check to ensure the size of the config struct fits within one flash erase sector typedef char config_struct_size_check[(sizeof(struct config) <= FLASH_SECTOR_SIZE) - 1]; +#define IS_STORED_IN_CONFIG(cfg, field) ((offsetof(struct config, field) + sizeof((cfg)->field)) <= (cfg)->size) + extern uint8_t __persistent_data_start[]; static struct config *cfg = (struct config *)__persistent_data_start; @@ -54,6 +64,14 @@ void config_load() { mono_bg_color = cfg->mono_bg_color; mono_fg_color = cfg->mono_fg_color; memcpy(character_rom, cfg->character_rom, CHARACTER_ROM_SIZE); + +#ifdef APPLE_MODEL_IIPLUS + if(IS_STORED_IN_CONFIG(cfg, videx_vterm_enabled) && cfg->videx_vterm_enabled) { + videx_vterm_enable(); + } else { + videx_vterm_disable(); + } +#endif } @@ -63,6 +81,9 @@ void config_load_defaults() { mono_bg_color = mono_bg_colors[1]; mono_fg_color = mono_fg_colors[1]; memcpy(character_rom, default_character_rom, CHARACTER_ROM_SIZE); +#ifdef APPLE_MODEL_IIPLUS + videx_vterm_disable(); +#endif } @@ -71,6 +92,7 @@ void config_save() { const int new_config_size = (sizeof(struct config) + FLASH_PAGE_SIZE - 1) & -FLASH_PAGE_SIZE; struct config *new_config = malloc(new_config_size); memset(new_config, 0xff, new_config_size); + memset(new_config, 0, sizeof(struct config)); new_config->size = sizeof(struct config); new_config->scanline_emulation = soft_scanline_emulation; @@ -79,6 +101,9 @@ void config_save() { new_config->mono_fg_color = mono_fg_color; memcpy(new_config->character_rom, character_rom, CHARACTER_ROM_SIZE); new_config->magic_word = MAGIC_WORD_VALUE; +#ifdef APPLE_MODEL_IIPLUS + new_config->videx_vterm_enabled = videx_vterm_enabled; +#endif const uint32_t flash_offset = (uint32_t)cfg - XIP_BASE; flash_range_erase(flash_offset, FLASH_SECTOR_SIZE); diff --git a/pico/device_regs.c b/pico/device_regs.c index 5cac535..b033879 100644 --- a/pico/device_regs.c +++ b/pico/device_regs.c @@ -5,6 +5,9 @@ #include "colors.h" #include "config.h" #include "textfont/textfont.h" +#ifdef APPLE_MODEL_IIPLUS +#include "videx_vterm.h" +#endif static unsigned int char_write_offset; @@ -18,6 +21,12 @@ void device_write(uint_fast8_t reg, uint_fast8_t data) { soft_scanline_emulation = true; if(data & 0x02) soft_scanline_emulation = false; +#ifdef APPLE_MODEL_IIPLUS + if(data & 0x04) + videx_vterm_enable(); + if(data & 0x08) + videx_vterm_disable(); +#endif break; // soft-monochrome color setting @@ -55,7 +64,7 @@ void device_write(uint_fast8_t reg, uint_fast8_t data) { // command value. // // Note: some of these commands could take a long time (relative to 6502 bus cycles) so -// some bus activity may be missed. Other projects like the Analog-V2 delegate this execution +// some bus activity may be missed. Other projects like the V2-Analog delegate this execution // to the other (VGA) core to avoid this. Maybe do this if the missed bus cycles become a noticable // issue; I only expect it would happen when some config is being saved, which is not done often. void execute_device_command(uint_fast8_t cmd) { diff --git a/pico/render.c b/pico/render.c index 65072f9..f1ee0ed 100644 --- a/pico/render.c +++ b/pico/render.c @@ -37,7 +37,7 @@ void render_loop() { break; default: #ifdef APPLE_MODEL_IIPLUS - if(videx_vterm_80col_enabled) { + if(videx_vterm_enabled && videx_vterm_80col_enabled) { render_videx_text(); } else #endif diff --git a/pico/videx_vterm.c b/pico/videx_vterm.c index 3eed0ff..5bbb0d4 100644 --- a/pico/videx_vterm.c +++ b/pico/videx_vterm.c @@ -7,6 +7,7 @@ #include "vga.h" +volatile bool videx_vterm_enabled; // true -> the videx card is enabled volatile bool videx_vterm_80col_enabled; // true -> the annunciator to enable 80-columns is on volatile bool videx_vterm_mem_selected; // true -> videx memory is accessible at $C800-$CFFF volatile uint8_t videx_vram[2048]; @@ -40,8 +41,10 @@ static uint_fast32_t videx_cursor_mask = 0; static uint64_t videx_next_flash_tick = 0; +// Initialize VideoTerm state +// +// Only called from the abus core void videx_vterm_init() { - // initializing registers videx_banknum = 0; videx_crtc_idx = 0; videx_crtc_regs[0] = 0x7b; @@ -63,8 +66,29 @@ void videx_vterm_init() { } +// Enable the VideoTerm support +// +// Only called from the abus core +void videx_vterm_enable() { + videx_vterm_enabled = true; +} + + +// Disable the VideoTerm support +// +// Only called from the abus core +void videx_vterm_disable() { + videx_vterm_enabled = false; +} + + // Shadow accesses to card registers in $C0n0 - $C0nF range +// +// Only called from the abus core void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data) { + if(!videx_vterm_enabled) + return; + // select the video memory bank videx_banknum = (address & 0x000c) >> 2; @@ -84,7 +108,12 @@ void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast // Shadow bus accesses to the $C800-$CFFF memory space +// +// Only called from the abus core void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t value) { + if(!videx_vterm_enabled) + return; + if(!videx_vterm_mem_selected) return; @@ -104,6 +133,9 @@ void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t } +// Update the internal VideoTerm flashing state +// +// Only called from the render core void videx_vterm_update_flasher() { uint64_t now = time_us_64(); if(now > videx_next_flash_tick) { @@ -196,6 +228,9 @@ static void render_videx_text_line(unsigned int line, uint text_base_addr, uint } +// Render a screen of VideoTerm text mode +// +// Only called from the render core void render_videx_text() { vga_prepare_frame(); // Skip 25 lines to center vertically diff --git a/pico/videx_vterm.h b/pico/videx_vterm.h index 0909bc2..6d22e64 100644 --- a/pico/videx_vterm.h +++ b/pico/videx_vterm.h @@ -4,10 +4,13 @@ #include +extern volatile bool videx_vterm_enabled; extern volatile bool videx_vterm_80col_enabled; extern volatile bool videx_vterm_mem_selected; extern void videx_vterm_init(); +extern void videx_vterm_enable(); +extern void videx_vterm_disable(); extern void videx_vterm_shadow_register(bool is_write, uint_fast16_t address, uint_fast8_t data); extern void videx_vterm_shadow_c8xx(bool is_write, uint_fast16_t address, uint_fast8_t value);