- Use UCS-32 internally for the text video memory (uint8_t -> uint32_t).
- Those are not yet handled properly because of the xscreensaver legacy utf-8
decoder.
TODO
====
+- On a friend's Ubuntu machine, analogterm runs and backspace runs fine in
+ general but not in top(1)'s line editor, despite ^H being set for ERASE.
+ Moreover, strangely, when switching to the English US keyboard layout (his
+ default are French Canadian), space no longer works. Space works in his
+ default layout. I should enable some X11 input debugging log and see what
+ gets issued for space, if any. Currently, the only space-related special
+ processing may be in utils/textclient.c and is to map the keypad space to
+ space. Apparently some users had similar issues with space not working
+ correctly when using extra input method tools like ibus-ui-gtk3. This was
+ running and I killed it but the issue persisted. Space works in xterm
+ despite that, so there must be something different going on with analogterm.
+ I should also check if xterm on Ubuntu uses the same stty settings like for
+ ERASE. No such problem with RPI2 and ArchLinux.
+- Apparently eol2 can be used for Flush and Linux would not support it. On
+ NetBSD I see it applied by xterm, so have included in tcsetattr(3). This
+ may be wrong on Linux. Moreover, running xterm remotely from an Ubuntu
+ system showed ERASE mapped by default to ^? rather than ^H, indicating that
+ BS/SWAP should be enabled. When I run analogterm remotely, it shows that
+ eol2 is not mapped and seems to not be supported. ERASE was mapped to ^H as
+ expected and delete/backspace were working, but not in top(1)'s line editor.
+ It worked in cat(1), though. Terminfo seems rather messy on that system and
+ I may need to use the ncurses source or to decompile a terminfo entry to
+ look at it. Moreover, it's unclear what xterm variant is used for "xterm",
+ there are many yet none named exactly that way. What a mess.
- Maybe cleanup code checking boundaries, using max or other similar
macros or inline functions.
- When blinking and double-underline, the line doesn't blink.
- When under tmux/screen, dialog(1) attempts to use higher characters
rather than DEC Special Graphics. May perhaps be configurable...
Some programs also use those extended characters like wordgrinder.
+ When under tmux(1), interestingly, (0 is used rather than )0 to switch the
+ character set and unicode characters are substituted for the display of
+ DEC Special Graphics. This does not happen if LANG=C when starting tmux.
+- Currently special characters and unicode typically result in
+ suboptimally chosen glyphs like #. This affects applications
+ that use extended line graphics characters for boxes rather than
+ vt100 DEC Special Graphics charset. When in UTF8, tmux remaps DEC
+ characters to unicode ones, also resulting in the same #.
- It would still be interesting to carefully look at the entry to determine
what affects the behavior of applications, like determining if colors are
available or not. The "colors" terminfo entry depends on the terminfo entry
- Determine why # is the fallback character for high glyphs.
Perhaps replace it by something better looking.
Ideally increase character support.
+ Internally now UCS-32. However, accents and special chars still result in
+ #, likely because of the xscreensaver's original UTF-8 handling.
- Interesting is that the terminal doesn't support UTF-8 glyphs
yet but that it gracefully degrades to ASCII when French UTF-8 text
is displayed, at least for accents. More complete support would
be nice. Could use UCS-16 or UCS-32 internally.
+ Update: now uses UCS-32, but UTF-8 decoding should be improved.
- [>0c Secondary DA request (distinguishes VT240 from VT220)
Seems to not be supported by the current state system for >
https://www.real-world-systems.com/docs/ANSIcode.html
May not be necessary
https://stackoverflow.com/questions/29939026/what-is-the-ansi-escape-code-sequence-escc
-- Currently special characters and unicode typically result in
- suboptimally chosen glypths like #. This affects applications
- that use extended line graphics characters for boxes rather than
- vt100 DEC Special Graphics charset.
- Some query features are not supported like cursor position,
terminal type, and "Query window/icon labels using hexadecimal",
"Send Device Attributes", "Device Status Report".
* wordgrinder, etc.), vifm, sc, more/less, tmux/screen, irssi, top,
* systat, lynx, links, hack, angband, matanza, ninvaders, cmatrix...
* For vim :set t_Co=0 is recommended for bold/underline/reverse modes
- * instead of colors, more suitable for monochrome.
+ * instead of colors, even better is a monochrome color scheme, since unless
+ * t_Co is >= 8, some non-color highlighting doesn't work, like paren match.
*/
#ifdef HAVE_CONFIG_H
}
static void
-at_ascii_printc (analogterm_state_t *st, unsigned char c, uint16_t m,
+at_ascii_printc (analogterm_state_t *st, uint32_t c, uint16_t m,
Bool scroll_p)
{
We can just ignore this and always process UTF-8, I think?
We must still catch the last byte, though.
*/
- case '(':
-/* case ')': XXX Links uses )0 without apparent exit */
- /* I don't support different fonts either - see above
- for SO and SI */
+ case '(': /* FALLTHROUGH */
+ case ')': /* FALLTHROUGH */ /* XXX Links uses )0 without exit */
state->escstate = 3;
break;
default:
many = state->csiparam[0];
if (many == 0)
many = 1;
- if (st->lastchar != -1 && isprint(st->lastchar)) {
+ if (st->lastchar != (uint32_t)-1 && isprint((int)st->lastchar)) {
for (i = 0; i < many; i++)
at_printc(st, st->lastchar, state->mode);
/* XXX Silly double state requires this */
state->escstate = 0;
break;
case 'T': /* Scroll down (rin) */
+ case '^': /* FALLTHROUGH */
/*
* Scroll <n> lines down. No argument is like 1, 0 is no action.
* Takes the scrolling range in consideration.
*
* Apple ][ CRT simulator, by Trevor Blackwell <tlb@tlb.org>
* with additional work by Jamie Zawinski <jwz@jwz.org>
- * 2022 Adapted to analogterm and more complete xterm emulation by Matthew Mondor.
+ *
+ * 2022 Adapted to analogterm and more complete xterm emulation by
+ * Matthew Mondor.
*/
#include <math.h>
{
(void)memmove(&st->textlines_char[dy][dx],
- &st->textlines_char[sy][sx], len);
+ &st->textlines_char[sy][sx], len * sizeof(uint32_t));
(void)memmove(&st->textlines_mode[dy][dx],
&st->textlines_mode[sy][sx], len * sizeof(uint16_t));
}
void
at_clear(analogterm_state_t *st, int x, int y, int len)
{
- uint16_t *mptr, *tptr;
-
- (void)memset(&st->textlines_char[y][x], ' ', len);
- for (mptr = &st->textlines_mode[y][x], tptr = &mptr[len];
- mptr < tptr; mptr++)
+ uint32_t *cptr, *ctptr;
+ uint16_t *mptr, *mtptr;
+
+ for (cptr = &st->textlines_char[y][x], ctptr = &cptr[len];
+ cptr < ctptr; cptr++)
+ *cptr = ' ';
+ for (mptr = &st->textlines_mode[y][x], mtptr = &mptr[len];
+ mptr < mtptr; mptr++)
*mptr = st->mode & TMODE_BGCOLOR;
}
/*
* Insert space for <many> characters at cursor, scrolling text rightwards.
+ * XXX Could use abstracted functions instead of custom loops.
*/
void
at_insert(analogterm_state_t *st, int many)
{
- unsigned char *cptr;
- uint16_t *mptr, *tptr;
+ uint32_t *cptr, *ctptr;
+ uint16_t *mptr, *mtptr;
int s;
if (many < 1)
s = 80 - st->cursx - many;
cptr = &st->textlines_char[st->cursy][st->cursx];
- (void)memmove(&cptr[many], cptr, s);
- (void)memset(cptr, ' ', many);
+ (void)memmove(&cptr[many], cptr, s * sizeof(uint32_t));
+ for (ctptr = &cptr[many]; cptr < ctptr; cptr++)
+ *cptr = ' ';
mptr = &st->textlines_mode[st->cursy][st->cursx];
(void)memmove(&mptr[many], mptr, s * sizeof(uint16_t));
- for (tptr = &mptr[many]; mptr < tptr; mptr++)
+ for (mtptr = &mptr[many]; mptr < mtptr; mptr++)
*mptr = st->mode & TMODE_BGCOLOR;
}
/* XXX Mode could use a state structure */
static void
-at_printc_1(analogterm_state_t *st, char c, uint16_t m, int scroll_p)
+at_printc_1(analogterm_state_t *st, uint32_t c, uint16_t m, int scroll_p)
{
at_resetcursor();
}
void
-at_printc(analogterm_state_t *st, char c, uint16_t m)
+at_printc(analogterm_state_t *st, uint32_t c, uint16_t m)
{
at_printc_1(st, c, m, 1);
}
void
-at_printc_noscroll(analogterm_state_t *st, char c, uint16_t m)
+at_printc_noscroll(analogterm_state_t *st, uint32_t c, uint16_t m)
{
at_printc_1(st, c, m, 0);
}
-
void
-at_prints(analogterm_state_t *st, char *s, uint16_t m)
+at_prints(analogterm_state_t *st, uint32_t *s, uint16_t m)
{
while (*s) at_printc(st, *s++, m);
}
/* XXX
* Why can't a single memset(3) be used? The video memory may be improperly
* allocated.
+ * XXX Could use at_clear().
*/
void
at_cls(analogterm_state_t *st)
{
int y;
- uint16_t *mptr, *tptr;
+ uint32_t *cptr, *ctptr;
+ uint16_t *mptr, *mtptr;
for (y = 0; y < 25; y++) {
- memset(st->textlines_char[y], ' ', 80);
- for (mptr = st->textlines_mode[y], tptr = &mptr[80];
- mptr < tptr; mptr++)
+ for (cptr = st->textlines_char[y], ctptr = &cptr[80];
+ cptr < ctptr; cptr++)
+ *cptr = ' ';
+ for (mptr = st->textlines_mode[y], mtptr = &mptr[80];
+ mptr < mtptr; mptr++)
*mptr = st->mode & TMODE_BGCOLOR;
}
}
-/* jwz: since MacOS doesn't have "6x10", I dumped this font to an XBM... */
-#include "images/analogtermfont.xbm"
-#include "images/analogtermgfxfont.xbm"
+/* AnalogTerm font */
+#include "images/analogterm/analogterm_unknown.xbm"
+#include "images/analogterm/analogterm_dec_graphics.xbm"
+#include "images/analogterm/analogterm_ascii.xbm"
+#include "images/analogterm/analogterm_latin.xbm"
+#include "images/analogterm/analogterm_graphics1.xbm"
+#include "images/analogterm/analogterm_graphics2.xbm"
+#include "images/analogterm/analogterm_graphics3.xbm"
/*
* XXX So many contortions just to get at the bits, that we could probably
* directly use from the bits ourselves... In any case, this does the
* preconversion at initialization for now.
*/
-static void
-at_make_font(analogterm_sim_t *sim, int fi, char *bits, unsigned int width,
- unsigned int height)
+static font_t *
+at_make_font(analogterm_sim_t *sim, uint32_t index, char *bits,
+ unsigned int width, unsigned int height)
{
Pixmap pm;
XImage *xi;
- uint8_t (*f)[8][7];
- int c, r, b;
+ font_t *font;
+ int c, r, b, nglyphs;
+
+ assert(width % 7 == 0 && height == 8);
+ nglyphs = width / 7;
- assert(width == 96 * 7 && height == 8);
+ if (((font = malloc(sizeof(font_t))) == NULL) ||
+ ((font->glyphs = malloc(nglyphs * (8 * 7))) == NULL))
+ abort();
+ font->next = NULL;
+ font->start = index;
+ font->end = index + nglyphs;
pm = XCreatePixmapFromBitmapData(sim->dpy, sim->window, bits, width,
height, 1, 0, 1);
xi = XGetImage(sim->dpy, pm, 0, 0, width, height, ~0L, ZPixmap);
(void)XFreePixmap(sim->dpy, pm);
- /* Fill structure element with font data */
- f = sim->text_font[fi];
- for (c = 0; c < 96; c++) {
+ /* Fill font data */
+ for (c = 0; c < nglyphs; c++) {
for (r = 0; r < 8; r++) {
for (b = 0; b < 7; b++)
- f[c][r][b] = (uint8_t)XGetPixel(xi,
+ font->glyphs[c][r][b] = (uint8_t)XGetPixel(xi,
(c * 7) + b, r % 8);
}
}
free(xi->data);
xi->data = NULL;
XDestroyImage(xi);
+
+ return font;
+}
+
+static void
+at_free_font(font_t *font)
+{
+
+ free(font->glyphs);
+ free(font);
+}
+
+/* Get glyph for UCS-32 char, points at "unknown" glyph if unsupported */
+/*
+ * XXX A bit ridiculous but today we may want to consider that information
+ * about what's in the video memory may be discovered using CPU,
+ * electromagnetism or heat analysis, since this fonction is not time-stable.
+ * But this is simple and avoids using a huge memory array considering the
+ * large sparse unicode space. In theory, subtrees could be used for
+ * fixed-time resolution.
+ * XXX I somehow never could quiet incompatible types warnings without using
+ * void *. Not working: uint8_t (*)[7], uint8_t **, uint8_t *[],
+ * uint8_t *[7], ...
+ */
+static void *
+at_glyph(analogterm_sim_t *sim, uint32_t c, bool decgfx)
+{
+ uint8_t (*glyph)[7] = sim->font_unknown->glyphs[0]; /* Default */
+ font_t *font;
+
+ /* DEC Special Graphics */
+ if (decgfx && c > 94 && c < 127)
+ return sim->font_decgfx->glyphs[c - 96];
+
+ /* Any other supported */
+ for (font = sim->font; font != NULL; font = font->next) {
+ if (c < font->end && c >= font->start) {
+ glyph = font->glyphs[c - font->start];
+ break;
+ }
+ }
+
+ return glyph;
}
analogterm_sim_t *
sim->st->scroll_top = 0;
sim->st->scroll_bottom = 24; /* XXX Use definition/macro */
- at_make_font(sim, 0, analogterm_font_bits, analogterm_font_width,
- analogterm_font_height);
- at_make_font(sim, 1, analogtermgfx_font_bits, analogtermgfx_font_width,
- analogtermgfx_font_height);
+ /* Create font */
+ sim->font_unknown = at_make_font(sim, 0, analogterm_unknown_bits,
+ analogterm_unknown_width, analogterm_unknown_height);
+ sim->font_decgfx = at_make_font(sim, 95, analogterm_dec_graphics_bits,
+ analogterm_dec_graphics_width, analogterm_dec_graphics_height);
+ sim->font = at_make_font(sim, 32, analogterm_ascii_bits,
+ analogterm_ascii_width, analogterm_ascii_height);
+ sim->font->next = at_make_font(sim, 161, analogterm_latin_bits,
+ analogterm_latin_width, analogterm_latin_height);
+ sim->font->next->next = at_make_font(sim, 9472, analogterm_graphics1_bits,
+ analogterm_graphics1_width, analogterm_graphics1_height);
+ sim->font->next->next->next = at_make_font(sim, 129896,
+ analogterm_graphics2_bits, analogterm_graphics2_width,
+ analogterm_graphics2_height);
+ sim->font->next->next->next->next = at_make_font(sim, 990192,
+ analogterm_graphics3_bits, analogterm_graphics3_width,
+ analogterm_graphics3_height);
sim->stepno=0;
at_goto(sim->st,24,0);
- sim->st->lastchar = -1;
+ sim->st->lastchar = (uint32_t)-1;
sim->next_actiontime=0.0;
if (sim->curtime >= sim->delay)
sim->stepno = A2CONTROLLER_DONE;
+ /* XXX Likely unused code for analogterm */
if (sim->printing) {
int nlcnt=0;
while (*sim->printing) {
/* Free sim and else */
analogtv_release(sim->dec);
+
+ at_free_font(sim->font->next->next->next->next);
+ at_free_font(sim->font->next->next->next);
+ at_free_font(sim->font->next->next);
+ at_free_font(sim->font->next);
+ at_free_font(sim->font);
+
free(st);
free(sim->inp);
free(sim);
pp=&sim->inp->signal[row + ANALOGTV_TOP + 3][ANALOGTV_PIC_START + 100];
for (col = 0; col < 80; col++) {
int rev, level, olevel, iblink;
- int c = st->textlines_char[textrow][col];
+ uint32_t c = st->textlines_char[textrow][col];
uint16_t m = st->textlines_mode[textrow][col];
- uint8_t (*f)[8][7] = sim->text_font[(m & TMODE_GFX) != 0 ? 1 : 0];
uint8_t (*cf)[7];
rev = ((m & (TMODE_INVERSE | TMODE_BGCOLOR)) != 0);
else
iblink = 0;
- /* XXX Restricts to ASCII/DEC Special Graphics */
- if (c < 32 || c > 126)
- c = /* XXX originally space 32 */95;
- else
- c -= 32;
- cf = f[c];
+ cf = at_glyph(sim, c, (m & TMODE_GFX) != 0);
/*
- * Font is 96 7x8 glyphs including embedded spacing.
+ * Font glyphs are 7x8.
* Virtual resolution is 280x192 but at 80 columns it gives a less
* visibly-precise 560 pixels width.
* A better font would be one with double-width verticals that
typedef struct analogterm_state {
unsigned char hireslines[192][80];
- unsigned char textlines_char[25][80]; /* XXX Use definition/macro */
+ uint32_t textlines_char[25][80]; /* XXX Use definition/macro */
uint16_t textlines_mode[25][80];
int gr_text;
enum {
uint16_t mode;
int blink; /* XXX Still needed? */
int scroll_top, scroll_bottom;
- int lastchar;
+ uint32_t lastchar;
} analogterm_state_t;
+typedef struct font_s font_t;
+struct font_s {
+ font_t *next;
+ uint32_t start, end; /* nglyphs == end - start */
+ uint8_t (*glyphs)[8][7];
+};
typedef struct analogterm_sim_s analogterm_sim_t;
struct analogterm_sim_s {
Display *dpy;
Window window;
XWindowAttributes xgwa;
- uint8_t text_font[CHARSETS][96][8][7];
+
+ font_t *font;
+ font_t *font_decgfx;
+ font_t *font_unknown;
struct timeval basetime_tv;
double curtime;
void (*controller)(analogterm_sim_t *sim,
int *stepno,
double *next_actiontime);
-
};
int len, char type);
void at_scroll_range(analogterm_state_t *st, int offset);
void at_scroll(analogterm_state_t *st);
-void at_printc(analogterm_state_t *st, char c, uint16_t m);
-void at_printc_noscroll(analogterm_state_t *st, char c, uint16_t m);
-void at_prints(analogterm_state_t *st, char *s, uint16_t m);
+void at_printc(analogterm_state_t *st, uint32_t c, uint16_t m);
+void at_printc_noscroll(analogterm_state_t *st, uint32_t c, uint16_t m);
+void at_prints(analogterm_state_t *st, uint32_t *s, uint16_t m);
void at_goto(analogterm_state_t *st, int r, int c);
void at_cls(analogterm_state_t *st);
void at_clear_hgr(analogterm_state_t *st);
--- /dev/null
+KREATIVE SOFTWARE RELAY FONTS FREE USE LICENSE\r
+version 1.2f\r
+\r
+Permission is hereby granted, free of charge, to any person or entity (the "User") obtaining a copy of the included font files (the "Software") produced by Kreative Software, to utilize, display, embed, or redistribute the Software, subject to the following conditions:\r
+\r
+1. The User may not sell copies of the Software for a fee.\r
+\r
+1a. The User may give away copies of the Software free of charge provided this license and any documentation is included verbatim and credit is given to Kreative Korporation or Kreative Software.\r
+\r
+2. The User may not modify, reverse-engineer, or create any derivative works of the Software.\r
+\r
+3. Any Software carrying the following font names or variations thereof is not covered by this license and may not be used under the terms of this license: Jewel Hill, Miss Diode n Friends, This is Beckie's font!\r
+\r
+3a. Any Software carrying a font name ending with the string "Pro CE" is not covered by this license and may not be used under the terms of this license.\r
+\r
+4. This license becomes null and void if any of the above conditions are not met.\r
+\r
+5. Kreative Software reserves the right to change this license at any time without notice.\r
+\r
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE SOFTWARE OR FROM OTHER DEALINGS IN THE SOFTWARE.\r
--- /dev/null
+The ASCII font is derived from the xscreensaver one, originally
+inspired by the Apple ][ font. It was altered in 2022 by Matthew
+Mondor to be non-serif, along with other personal taste changes.
+
+The DEC Special Graphics font was drawn from scratch by Matthew
+Mondor in 2022. The Unknown glyph as well.
+
+The other glyphs, Latin 1 and Graphics, were imported from the PR font.
-#define analogterm_font_width 672
-#define analogterm_font_height 8
-static char analogterm_font_bits[] = {
+#define analogterm_ascii_width 665
+#define analogterm_ascii_height 8
+static char analogterm_ascii_bits[] = {
0x00, 0x04, 0x85, 0x82, 0x30, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00,
0x00, 0x80, 0x1C, 0x04, 0xC7, 0x07, 0xF1, 0x61, 0x7C, 0x1C, 0x0E, 0x00,
0x00, 0x01, 0x10, 0x38, 0x1C, 0x84, 0x87, 0xE3, 0xF1, 0xF9, 0x78, 0x22,
0x04, 0x48, 0x22, 0xB0, 0x89, 0x44, 0x22, 0x91, 0x48, 0x84, 0x10, 0x89,
0x44, 0x22, 0x11, 0x88, 0x20, 0x80, 0x00, 0x00, 0x08, 0x80, 0x00, 0x00,
0x02, 0x90, 0x00, 0x02, 0x00, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0xC0, 0x68, 0x54,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x81, 0xC0, 0x68, 0x00,
0x00, 0x04, 0xC5, 0xA7, 0x80, 0x28, 0x10, 0x02, 0x10, 0x07, 0x01, 0x00,
0x00, 0x20, 0x2A, 0x04, 0x08, 0x42, 0xF1, 0x08, 0x20, 0x22, 0x11, 0x02,
0x41, 0xF0, 0x41, 0x20, 0x2A, 0x91, 0x48, 0x20, 0x12, 0x08, 0x04, 0x22,
0x04, 0x48, 0x21, 0x50, 0x99, 0x44, 0x22, 0x91, 0x48, 0x80, 0x10, 0x89,
0x44, 0x14, 0x0A, 0x84, 0x40, 0x80, 0x20, 0x00, 0x10, 0x8E, 0x87, 0xC7,
0xE3, 0x10, 0x38, 0x1E, 0x04, 0x46, 0x84, 0xB0, 0x79, 0x38, 0x1E, 0x1E,
- 0x8F, 0xE7, 0x13, 0x89, 0x44, 0x22, 0x91, 0x8F, 0x81, 0xC0, 0x00, 0x28,
+ 0x8F, 0xE7, 0x13, 0x89, 0x44, 0x22, 0x91, 0x8F, 0x81, 0xC0, 0x00, 0x00,
0x00, 0x04, 0x80, 0xC2, 0x41, 0x10, 0x00, 0x02, 0xD0, 0xDF, 0x07, 0xF0,
0x01, 0x10, 0x2A, 0x04, 0x06, 0x23, 0x01, 0x79, 0x10, 0x1C, 0x1E, 0x00,
0x20, 0x00, 0x80, 0x10, 0x3A, 0x91, 0x47, 0x20, 0xF2, 0x78, 0x64, 0x3E,
0x04, 0xC8, 0x20, 0x50, 0xA9, 0x44, 0x1E, 0x91, 0x87, 0x83, 0x10, 0x89,
0x54, 0x08, 0x04, 0x82, 0x80, 0x80, 0x50, 0x00, 0x00, 0x90, 0x48, 0x20,
0x12, 0x79, 0x44, 0x22, 0x04, 0x44, 0x82, 0x50, 0x89, 0x44, 0x22, 0x91,
- 0x40, 0x80, 0x10, 0x89, 0x44, 0x14, 0x11, 0xC4, 0x80, 0x80, 0x01, 0x54,
+ 0x40, 0x80, 0x10, 0x89, 0x44, 0x14, 0x11, 0xC4, 0x80, 0x80, 0x01, 0x00,
0x00, 0x04, 0xC0, 0x87, 0x22, 0xA8, 0x00, 0x02, 0x10, 0x07, 0x01, 0x00,
0x00, 0x08, 0x2A, 0x04, 0x01, 0xE4, 0x03, 0x89, 0x08, 0x22, 0x10, 0x00,
0x40, 0xF0, 0x41, 0x10, 0x1A, 0x9F, 0x48, 0x20, 0x12, 0x08, 0x44, 0x22,
0x04, 0x48, 0x21, 0x10, 0xC9, 0x44, 0x02, 0x95, 0x02, 0x84, 0x10, 0x89,
0x54, 0x14, 0x04, 0x81, 0x00, 0x81, 0x88, 0x00, 0x00, 0x9E, 0x48, 0x20,
0xF2, 0x11, 0x44, 0x22, 0x04, 0xC4, 0x81, 0x50, 0x89, 0x44, 0x22, 0x91,
- 0x80, 0x83, 0x10, 0x89, 0x54, 0x08, 0x11, 0x82, 0x81, 0xC0, 0x00, 0x28,
+ 0x80, 0x83, 0x10, 0x89, 0x54, 0x08, 0x11, 0x82, 0x81, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x80, 0xE2, 0x91, 0x49, 0x00, 0x04, 0x88, 0x0A, 0x81, 0x00,
0x00, 0x04, 0x22, 0x84, 0x40, 0x04, 0x11, 0x89, 0x08, 0x22, 0x08, 0x02,
0x81, 0x00, 0x20, 0x00, 0x02, 0x91, 0x48, 0x24, 0x12, 0x08, 0x44, 0x22,
0x84, 0x48, 0x22, 0x10, 0x89, 0x44, 0x02, 0x89, 0x44, 0x84, 0x10, 0x51,
0x6C, 0x22, 0x84, 0x80, 0x00, 0x82, 0x00, 0x00, 0x00, 0x91, 0x48, 0x20,
0x12, 0x10, 0x78, 0x22, 0x04, 0x44, 0x82, 0x50, 0x89, 0x44, 0x1E, 0x9E,
- 0x00, 0x84, 0x10, 0x51, 0x54, 0x14, 0x1E, 0x81, 0x81, 0xC0, 0x00, 0x54,
+ 0x00, 0x84, 0x10, 0x51, 0x54, 0x14, 0x1E, 0x81, 0x81, 0xC0, 0x00, 0x00,
0x00, 0x04, 0x80, 0x82, 0x80, 0xB1, 0x00, 0x08, 0x04, 0x00, 0x40, 0x00,
0x20, 0x02, 0x1C, 0x84, 0x8F, 0x03, 0xE1, 0x70, 0x08, 0x1C, 0x06, 0x80,
0x00, 0x01, 0x10, 0x10, 0x3C, 0x91, 0x87, 0xE3, 0xF1, 0x09, 0x78, 0x22,
--- /dev/null
+#define analogterm_dec_graphics_width 217
+#define analogterm_dec_graphics_height 8
+static char analogterm_dec_graphics_bits[] = {
+ 0x00, 0x55, 0xE1, 0x60, 0x08, 0x00, 0x00, 0x85, 0x02, 0x02, 0x00, 0x40,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x00, 0x08, 0x18, 0x01,
+ 0x00, 0xC1, 0x01, 0x00, 0x88, 0x6A, 0x21, 0x10, 0x08, 0x20, 0x10, 0x85,
+ 0x02, 0x02, 0x00, 0x40, 0x20, 0xFE, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
+ 0x00, 0x08, 0x06, 0x06, 0x00, 0x21, 0x02, 0x00, 0x1C, 0xD5, 0x61, 0x10,
+ 0x08, 0x50, 0x10, 0x87, 0x02, 0x02, 0x00, 0x40, 0x20, 0x00, 0x7F, 0x00,
+ 0x00, 0x80, 0x40, 0x20, 0x00, 0x08, 0x01, 0xC8, 0xE7, 0x23, 0x00, 0x00,
+ 0xBE, 0x6A, 0x3D, 0x1E, 0x8F, 0x23, 0x7C, 0x15, 0xF9, 0xE3, 0x81, 0xC7,
+ 0xFF, 0x01, 0x80, 0x3F, 0x00, 0x80, 0x7F, 0xFC, 0xFF, 0x08, 0x06, 0xA6,
+ 0x82, 0x70, 0x00, 0x00, 0x1C, 0x55, 0x29, 0x62, 0xBD, 0x00, 0x10, 0x15,
+ 0x11, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0xC0, 0x1F, 0x80, 0x40, 0x00,
+ 0x10, 0x08, 0x98, 0x81, 0xE2, 0x23, 0x20, 0x00, 0x88, 0x2A, 0x08, 0x06,
+ 0x83, 0x01, 0x10, 0x10, 0x10, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0x00,
+ 0xE0, 0x8F, 0x40, 0x00, 0x10, 0x08, 0x00, 0x80, 0x42, 0x20, 0x00, 0x00,
+ 0x00, 0x15, 0x08, 0x02, 0x85, 0x00, 0x7C, 0x10, 0x10, 0x00, 0x81, 0x00,
+ 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00, 0x10, 0x08, 0x9F, 0x4F,
+ 0x44, 0xD0, 0x03, 0x00, 0x80, 0x2A, 0x08, 0x02, 0x85, 0x00, 0x00, 0x70,
+ 0x10, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x00,
+ 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
--- /dev/null
+#define analogterm_graphics1_width 1050
+#define analogterm_graphics1_height 8
+static char analogterm_graphics1_bits[] = {
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x20, 0x30, 0x00, 0x00, 0x02, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0x30, 0x08, 0x04, 0x06,
+ 0x83, 0x40, 0x60, 0x10, 0x18, 0x0C, 0x02, 0x83, 0x40, 0x60, 0x10, 0x18,
+ 0x0C, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
+ 0x10, 0x18, 0x0C, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x04, 0x06, 0x83,
+ 0x41, 0x20, 0x30, 0x08, 0x0C, 0x06, 0x03, 0x00, 0x20, 0x30, 0x00, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x05, 0x41, 0xA1, 0x20, 0x28,
+ 0x14, 0x04, 0x85, 0x02, 0x00, 0x00, 0x10, 0x14, 0x0A, 0x82, 0x42, 0x01,
+ 0x00, 0x10, 0x08, 0x60, 0x20, 0x08, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x40, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0xF8, 0xAA, 0xEA, 0xFE, 0x07, 0x02,
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x20, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0x30, 0x08, 0x04, 0x06,
+ 0x83, 0x40, 0x60, 0x10, 0x18, 0x0C, 0x02, 0x83, 0x40, 0x60, 0x10, 0x18,
+ 0x0C, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
+ 0x10, 0x18, 0x0C, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x04, 0x06, 0x83,
+ 0x41, 0x20, 0x30, 0x08, 0x0C, 0x06, 0x03, 0x00, 0x20, 0x30, 0x00, 0x0A,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0A, 0x05, 0x41, 0xA1, 0x20, 0x28,
+ 0x14, 0x04, 0x85, 0x02, 0x00, 0x00, 0x10, 0x14, 0x0A, 0x82, 0x42, 0x01,
+ 0x00, 0x10, 0x08, 0x90, 0x40, 0x04, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x40, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x40, 0xB5, 0x0B, 0x00, 0x02,
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x60, 0x30, 0x08, 0x04, 0x06,
+ 0x83, 0x40, 0x60, 0x10, 0x18, 0x0C, 0x02, 0x83, 0x40, 0x60, 0x10, 0x18,
+ 0x0C, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
+ 0x10, 0x18, 0x0C, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x04, 0x06, 0x83,
+ 0x41, 0x20, 0x30, 0x08, 0x0C, 0x06, 0x03, 0x00, 0x20, 0x30, 0x7F, 0x0A,
+ 0x1E, 0xC0, 0x7F, 0x00, 0x3E, 0x78, 0x0A, 0xFD, 0x41, 0xB9, 0xE0, 0x29,
+ 0xF4, 0x07, 0xE5, 0xF2, 0x07, 0xFC, 0xFF, 0x94, 0xFB, 0x9F, 0x72, 0x07,
+ 0x00, 0x08, 0x10, 0x08, 0x81, 0x02, 0x40, 0x00, 0x00, 0x00, 0x0C, 0x00,
+ 0x00, 0x40, 0x00, 0x30, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x95, 0xEA, 0x0E, 0x00, 0x02,
+ 0xFF, 0x3F, 0x02, 0xB3, 0x5A, 0x21, 0x30, 0xD5, 0x2A, 0x00, 0x80, 0xC7,
+ 0xE3, 0xF1, 0x8F, 0xC7, 0xE7, 0x83, 0xC7, 0xE3, 0xF1, 0x8F, 0xC7, 0xE7,
+ 0x83, 0xC7, 0xE3, 0xF1, 0x78, 0x3C, 0x1E, 0xFF, 0x78, 0x7C, 0x3E, 0x9F,
+ 0xCF, 0xE7, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xBB, 0x01, 0x00, 0x00, 0x0A,
+ 0x82, 0x4F, 0x40, 0x7C, 0x20, 0x08, 0x3E, 0x01, 0xF1, 0x81, 0x20, 0xE8,
+ 0x04, 0xC4, 0x05, 0x02, 0xF8, 0x03, 0x00, 0x7F, 0x00, 0xE2, 0x0F, 0x00,
+ 0x0F, 0x06, 0x60, 0x04, 0x02, 0xF1, 0x40, 0xE0, 0x11, 0x1F, 0x0C, 0x1E,
+ 0xF3, 0xC7, 0xFC, 0x31, 0x7F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x40, 0xB5, 0x0B, 0x00, 0x02,
+ 0x80, 0x3F, 0x02, 0x03, 0x58, 0x21, 0x30, 0x80, 0x2A, 0x02, 0x83, 0xC0,
+ 0x63, 0xF0, 0x88, 0x07, 0xE6, 0x03, 0xC0, 0x03, 0xF0, 0x80, 0x07, 0xE0,
+ 0x83, 0xC0, 0x23, 0x30, 0x18, 0x3C, 0x1E, 0x8F, 0x78, 0x20, 0x30, 0x98,
+ 0xCF, 0xE7, 0x83, 0x78, 0xE0, 0xFF, 0x98, 0x0F, 0xFE, 0x0F, 0x78, 0xE0,
+ 0xFF, 0x80, 0x0F, 0xFE, 0x8F, 0x78, 0xE0, 0xFF, 0x08, 0x0C, 0xE6, 0x83,
+ 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xFE, 0x0F, 0xB8, 0x21, 0x30, 0x7F, 0x0A,
+ 0x9E, 0x42, 0x7F, 0x50, 0x2E, 0x78, 0x00, 0xFF, 0x01, 0xF8, 0xE0, 0x29,
+ 0xF4, 0x07, 0xE5, 0xF2, 0xA7, 0xDC, 0xFF, 0x80, 0xFF, 0x9F, 0x72, 0x87,
+ 0x10, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x10, 0x1F, 0x0C, 0x1E,
+ 0x83, 0xC7, 0x7C, 0x30, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0xF8, 0xAA, 0xEA, 0x0E, 0x00, 0x02,
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
+ 0x60, 0x30, 0x08, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x40, 0x20, 0x30, 0x18, 0x04, 0x06, 0x83, 0x40, 0x20, 0x30, 0x18,
+ 0x04, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x0C, 0x06, 0x81,
+ 0xC0, 0x60, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x20, 0x30, 0x00, 0x0A,
+ 0x82, 0x42, 0x41, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28,
+ 0x14, 0x04, 0x85, 0x82, 0xA0, 0x50, 0x00, 0x00, 0x00, 0x82, 0x42, 0x41,
+ 0x20, 0x00, 0x00, 0x02, 0x84, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x03, 0xC0, 0x00, 0x10, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x40, 0xB5, 0x0B, 0x00, 0x02,
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x20, 0x30, 0x00, 0x00, 0x02, 0x83, 0x40,
+ 0x60, 0x30, 0x08, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x40, 0x20, 0x30, 0x18, 0x04, 0x06, 0x83, 0x40, 0x20, 0x30, 0x18,
+ 0x04, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x0C, 0x06, 0x81,
+ 0xC0, 0x60, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x20, 0x30, 0x00, 0x0A,
+ 0x82, 0x42, 0x41, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28,
+ 0x14, 0x04, 0x85, 0x82, 0xA0, 0x50, 0x00, 0x00, 0x00, 0x82, 0x42, 0x41,
+ 0x20, 0x00, 0x00, 0x01, 0x48, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x03, 0xC0, 0x00, 0x10, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x95, 0xEA, 0x0E, 0x00, 0x02,
+ 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40,
+ 0x60, 0x30, 0x08, 0x04, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x40, 0x20, 0x30, 0x18, 0x04, 0x06, 0x83, 0x40, 0x20, 0x30, 0x18,
+ 0x04, 0x06, 0x83, 0x40, 0x20, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x0C, 0x06, 0x81,
+ 0xC0, 0x60, 0x10, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x0A,
+ 0x82, 0x42, 0x41, 0x50, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x28,
+ 0x14, 0x04, 0x85, 0x82, 0xA0, 0x50, 0x00, 0x00, 0x00, 0x82, 0x42, 0x41,
+ 0x20, 0x00, 0x80, 0x00, 0x30, 0x08, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x03, 0xC0, 0x00, 0x10, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xDF, 0xE7, 0xF1, 0x38, 0x0C, 0x02, 0x78, 0x40, 0xB5, 0x0B, 0x00, 0x02,
+ };
--- /dev/null
+#define analogterm_graphics2_width 693
+#define analogterm_graphics2_height 8
+static char analogterm_graphics2_bits[] = {
+ 0x7E, 0xC0, 0xEF, 0x1F, 0xF8, 0x03, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0xF8, 0xFF, 0x81, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xC1, 0x70, 0x3C, 0xDF, 0xAF, 0x40, 0xA9, 0x00, 0xD5,
+ 0x7F, 0xF5, 0xDB, 0x07, 0x00, 0x00, 0x00, 0xC0, 0x3F, 0xA8, 0x52, 0x01,
+ 0x00, 0x08, 0x04, 0x00, 0x80, 0x40, 0x00, 0x10, 0x08, 0x04, 0x02, 0x81,
+ 0x40, 0x20, 0x00, 0x80, 0x3F, 0x1C, 0xF0, 0x9B, 0x90, 0x81, 0x40, 0x00,
+ 0x80, 0xF2, 0xF7, 0xFD, 0xEF, 0xB6, 0xFE, 0xFF, 0xF3, 0x47, 0x20, 0x10,
+ 0x08, 0x04, 0x02, 0xFC, 0xE0, 0xE7, 0x3F, 0xF0, 0x81, 0x01, 0x02, 0x02,
+ 0x02, 0x01, 0x01, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x10, 0x08, 0x00, 0x81,
+ 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x70, 0x3C, 0xDF, 0x5F, 0x80,
+ 0x56, 0x01, 0xAA, 0xBF, 0xEA, 0xA5, 0x07, 0x00, 0x00, 0x00, 0x80, 0x6F,
+ 0x5C, 0xA1, 0x02, 0x03, 0x04, 0x08, 0x00, 0x40, 0x80, 0x00, 0x28, 0x04,
+ 0x08, 0x84, 0x40, 0xA1, 0x50, 0x00, 0x80, 0x1F, 0x18, 0xF3, 0xC3, 0x30,
+ 0x90, 0x48, 0x1F, 0x80, 0x02, 0xEC, 0xFE, 0xD7, 0xC9, 0x01, 0x04, 0x34,
+ 0xA6, 0x50, 0x28, 0x14, 0x0A, 0x05, 0xF8, 0xF1, 0xE3, 0x7F, 0xE0, 0xC0,
+ 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x10,
+ 0x08, 0x00, 0x81, 0x80, 0x3F, 0xE0, 0xFF, 0xFF, 0xFF, 0xC1, 0x70, 0x3C,
+ 0xDF, 0xAF, 0x40, 0xA9, 0x00, 0xD5, 0x7F, 0xF5, 0xDB, 0x07, 0x00, 0xFE,
+ 0x00, 0x00, 0xE7, 0xAE, 0x40, 0x81, 0x04, 0x02, 0x10, 0x00, 0x20, 0x00,
+ 0x01, 0x44, 0x02, 0x10, 0x48, 0x20, 0x12, 0x89, 0x10, 0x82, 0xAF, 0xFF,
+ 0xF0, 0xE3, 0x70, 0x10, 0x9C, 0xE0, 0xEF, 0x0E, 0x5C, 0xFF, 0xBB, 0xC1,
+ 0x31, 0xF8, 0xD3, 0x45, 0xA8, 0x50, 0x0A, 0x84, 0x08, 0xF0, 0xFB, 0xE1,
+ 0xFF, 0x40, 0xE0, 0x01, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x7F,
+ 0x00, 0x00, 0x10, 0x08, 0x00, 0x81, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF,
+ 0xC1, 0x70, 0x3C, 0xDF, 0x5F, 0x80, 0x56, 0x01, 0xAA, 0xBF, 0xEA, 0xA5,
+ 0x07, 0x00, 0xFE, 0x00, 0x00, 0xE2, 0x5F, 0x80, 0x42, 0x0B, 0x01, 0x20,
+ 0x00, 0x10, 0x00, 0x02, 0x82, 0x01, 0x20, 0x30, 0x10, 0x0C, 0x06, 0xFF,
+ 0x06, 0x76, 0x0C, 0xB0, 0xF3, 0xFF, 0xFE, 0xBE, 0x00, 0x10, 0xC0, 0xBC,
+ 0xFF, 0x7C, 0xA2, 0xD1, 0x07, 0x70, 0xE6, 0x70, 0x38, 0x1C, 0x8E, 0x08,
+ 0xF0, 0xFF, 0xE1, 0xFE, 0x00, 0xE0, 0x11, 0x02, 0x02, 0x02, 0x01, 0x01,
+ 0x01, 0x00, 0x80, 0x3F, 0x00, 0x10, 0x08, 0x00, 0x81, 0x80, 0x3F, 0x00,
+ 0xF0, 0xFF, 0xFF, 0xC1, 0x70, 0x3C, 0xDF, 0xAF, 0x40, 0x01, 0x54, 0xD5,
+ 0xEA, 0xFF, 0xDB, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xAF, 0x40, 0xA1,
+ 0x14, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x01, 0xC0, 0x40, 0x30, 0x08,
+ 0x0C, 0x04, 0x11, 0x8E, 0x7A, 0xFE, 0x90, 0xE3, 0x70, 0x7C, 0xFF, 0x00,
+ 0xF0, 0xCE, 0x5C, 0x7F, 0xBB, 0xC1, 0x09, 0x08, 0xF0, 0x57, 0x21, 0x14,
+ 0x28, 0x95, 0x08, 0xF8, 0xFF, 0x63, 0x7C, 0x00, 0xC0, 0x39, 0x02, 0x02,
+ 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0xC0, 0x1F, 0x10, 0x08, 0x00, 0x81,
+ 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xC1, 0x70, 0x3C, 0xDF, 0x5F, 0x80,
+ 0x02, 0xAA, 0x2A, 0xD5, 0xFF, 0xA5, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE7,
+ 0x5E, 0x80, 0x52, 0x2B, 0x00, 0x80, 0x00, 0x24, 0x00, 0x89, 0x00, 0x20,
+ 0x81, 0x48, 0x04, 0x12, 0x88, 0x00, 0x9E, 0x3D, 0x8C, 0x01, 0xC0, 0x30,
+ 0x38, 0x88, 0x00, 0x90, 0x02, 0xEC, 0xBE, 0xD7, 0xC9, 0xF7, 0x07, 0x70,
+ 0x47, 0x20, 0x10, 0x08, 0x8A, 0x0A, 0xFC, 0xFF, 0x27, 0x38, 0x00, 0x80,
+ 0x7D, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0xE0, 0x1F,
+ 0x08, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xC1, 0x70, 0x3C,
+ 0xDF, 0xAF, 0x40, 0x01, 0x54, 0xD5, 0xEA, 0xFF, 0xDB, 0x07, 0x00, 0xFE,
+ 0x00, 0x80, 0x6F, 0x2C, 0x00, 0xA9, 0x54, 0x00, 0x00, 0x01, 0x42, 0x80,
+ 0x50, 0x00, 0x10, 0x02, 0x85, 0x02, 0x21, 0x50, 0x00, 0xB6, 0xFD, 0x0F,
+ 0x91, 0x87, 0x10, 0x90, 0xC8, 0xFF, 0x9F, 0x02, 0xF4, 0xDD, 0xEF, 0xB6,
+ 0x01, 0x04, 0xF0, 0xA7, 0x50, 0x28, 0x14, 0x9F, 0x0D, 0xFE, 0xFF, 0x0F,
+ 0x10, 0x00, 0x00, 0xFF, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0xF0, 0x0F, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
+ 0xC0, 0x70, 0x3C, 0xDF, 0x5F, 0x80, 0x02, 0xAA, 0x2A, 0xD5, 0xFF, 0xA5,
+ 0x07, 0x00, 0xFE, 0x00, 0xC0, 0x3F, 0x18, 0x00, 0x56, 0xAB, 0x00, 0x00,
+ 0x02, 0x81, 0x40, 0x20, 0x00, 0x08, 0x04, 0x02, 0x81, 0x40, 0x20, 0x00,
+ 0xC2, 0xBF, 0x00, 0xBE, 0x7F, 0xEF, 0x81, 0x40, 0x00, 0x00, 0xF0, 0x07,
+ 0x00, 0x00, 0x80, 0xFE, 0x03, 0x00, 0x10, 0x89, 0x48, 0x12, 0x8A, 0x08,
+ };
--- /dev/null
+#define analogterm_graphics3_width 70
+#define analogterm_graphics3_height 8
+static char analogterm_graphics3_bits[] = {
+ 0x1C, 0x00, 0x87, 0x03, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x22, 0x10, 0x08,
+ 0x24, 0x12, 0x08, 0x44, 0x22, 0x11, 0x22, 0x10, 0x08, 0x24, 0x12, 0x08,
+ 0x44, 0x22, 0x11, 0x00, 0x00, 0x87, 0xC3, 0xE1, 0x70, 0x00, 0x1C, 0x0E,
+ 0x22, 0x90, 0x00, 0x04, 0x02, 0x89, 0x40, 0x22, 0x10, 0x22, 0x90, 0x00,
+ 0x04, 0x02, 0x89, 0x40, 0x22, 0x10, 0x1C, 0x00, 0x87, 0x03, 0xE0, 0x70,
+ 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ };
--- /dev/null
+#define analogterm_latin_width 665
+#define analogterm_latin_height 8
+static char analogterm_latin_bits[] = {
+ 0x08, 0x04, 0x0E, 0x20, 0x42, 0xF0, 0x44, 0x1C, 0x06, 0x12, 0x00, 0xE0,
+ 0xF8, 0x10, 0x08, 0x06, 0x07, 0x02, 0xE0, 0x01, 0x00, 0x08, 0x44, 0x42,
+ 0x20, 0x30, 0x20, 0x10, 0x08, 0x04, 0x4B, 0xC4, 0xE1, 0x71, 0x20, 0x20,
+ 0x88, 0x88, 0x00, 0x41, 0x88, 0x38, 0x2C, 0x04, 0x08, 0xC2, 0x12, 0x01,
+ 0x40, 0x04, 0x08, 0x42, 0x04, 0x11, 0x78, 0x20, 0x20, 0x08, 0x0B, 0x80,
+ 0x00, 0x00, 0x20, 0x20, 0x08, 0x80, 0x00, 0x41, 0x00, 0x28, 0x2C, 0x00,
+ 0x00, 0xC0, 0x02, 0x00, 0x00, 0x04, 0x08, 0x02, 0x00, 0x11, 0x00, 0x00,
+ 0x00, 0x1E, 0x51, 0x24, 0x42, 0x08, 0x00, 0x22, 0x0C, 0x09, 0x00, 0x10,
+ 0x01, 0x28, 0x08, 0x08, 0x02, 0x01, 0x50, 0x01, 0x00, 0x0C, 0x8A, 0x44,
+ 0x24, 0x22, 0x01, 0x20, 0x04, 0x8A, 0x06, 0x20, 0x52, 0x88, 0x40, 0x10,
+ 0x14, 0x00, 0x81, 0xA0, 0x00, 0x48, 0x1A, 0x08, 0x04, 0xA5, 0xE1, 0x88,
+ 0x38, 0x08, 0x04, 0x05, 0x80, 0x10, 0x88, 0x40, 0x10, 0x94, 0x46, 0x44,
+ 0x01, 0x00, 0x40, 0x10, 0x94, 0x08, 0x81, 0xA0, 0x88, 0x10, 0x1A, 0x04,
+ 0x08, 0xA2, 0x11, 0x21, 0x40, 0x08, 0x04, 0x45, 0x84, 0x10, 0x88, 0x00,
+ 0x08, 0x05, 0x81, 0x43, 0x41, 0x70, 0x00, 0x59, 0x8A, 0xC4, 0x07, 0xE8,
+ 0x02, 0x10, 0x3E, 0x04, 0x84, 0x20, 0x52, 0x01, 0x00, 0x08, 0x0A, 0x49,
+ 0x22, 0xB1, 0x20, 0x10, 0x08, 0x04, 0x02, 0xC1, 0x51, 0x08, 0x7C, 0x3E,
+ 0x9F, 0x8F, 0xC3, 0xE1, 0x70, 0x48, 0x00, 0x0E, 0x87, 0xC3, 0x11, 0x51,
+ 0x64, 0x22, 0x91, 0x48, 0x24, 0xF2, 0x88, 0x38, 0x1C, 0x0E, 0x87, 0xC3,
+ 0xB1, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x00, 0x00, 0x00, 0x28, 0x00, 0x08,
+ 0x04, 0x05, 0xE0, 0x00, 0x38, 0x22, 0x91, 0x08, 0x20, 0xF2, 0x00, 0x00,
+ 0x08, 0x85, 0x83, 0x82, 0x00, 0x88, 0x00, 0x45, 0x4C, 0x02, 0xE4, 0x6B,
+ 0x02, 0x00, 0x08, 0x0E, 0x03, 0x20, 0xE2, 0x21, 0x00, 0x1C, 0x04, 0x12,
+ 0x81, 0x40, 0x20, 0x28, 0x14, 0x0A, 0x85, 0x22, 0xF2, 0x09, 0x04, 0x02,
+ 0x81, 0x00, 0x81, 0x40, 0x20, 0x5C, 0x26, 0x91, 0x48, 0x24, 0x12, 0x21,
+ 0x54, 0x22, 0x91, 0x48, 0x24, 0x12, 0x79, 0x40, 0x20, 0x10, 0x08, 0x04,
+ 0x42, 0x09, 0x44, 0x22, 0x91, 0x08, 0x81, 0x40, 0x20, 0x38, 0x1E, 0x0E,
+ 0x87, 0xC3, 0x11, 0xF9, 0x64, 0x22, 0x91, 0x48, 0x24, 0x12, 0x89, 0x00,
+ 0x08, 0x05, 0x81, 0xE3, 0x03, 0x70, 0x00, 0x59, 0x80, 0x04, 0x04, 0xA8,
+ 0x02, 0x00, 0x08, 0x00, 0x00, 0x20, 0x42, 0x01, 0x00, 0x00, 0x00, 0x89,
+ 0x42, 0xA3, 0x10, 0x44, 0x22, 0x91, 0x48, 0xE4, 0x53, 0x88, 0x3C, 0x1E,
+ 0x8F, 0x07, 0x81, 0x40, 0x20, 0x48, 0x2A, 0x91, 0x48, 0x24, 0x12, 0x51,
+ 0x54, 0x22, 0x91, 0x48, 0x44, 0xF1, 0x88, 0x78, 0x3C, 0x1E, 0x8F, 0xC7,
+ 0xE3, 0x09, 0x7C, 0x3E, 0x9F, 0x0F, 0x81, 0x40, 0x20, 0x44, 0x22, 0x91,
+ 0x48, 0x24, 0x12, 0x01, 0x54, 0x22, 0x91, 0x48, 0x24, 0x12, 0x89, 0x00,
+ 0x08, 0x1E, 0x41, 0x84, 0x40, 0x80, 0x00, 0x22, 0x0E, 0x09, 0x00, 0x10,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x43, 0x01, 0x00, 0x00, 0x8E, 0x44,
+ 0x26, 0x91, 0x89, 0x7C, 0x3E, 0x9F, 0xCF, 0x27, 0x52, 0x70, 0x04, 0x02,
+ 0x81, 0x00, 0x81, 0x40, 0x20, 0x48, 0x32, 0x91, 0x48, 0x24, 0x12, 0x89,
+ 0x4C, 0x22, 0x91, 0x48, 0x84, 0x10, 0x88, 0x44, 0x22, 0x91, 0x48, 0x24,
+ 0x52, 0xF0, 0x04, 0x02, 0x81, 0x00, 0x81, 0x40, 0x20, 0x44, 0x22, 0x91,
+ 0x48, 0x24, 0x12, 0x21, 0x4C, 0x22, 0x91, 0x48, 0xC4, 0xF3, 0xF0, 0x00,
+ 0x08, 0x84, 0x1E, 0x80, 0x40, 0x78, 0x00, 0x1C, 0x00, 0x12, 0x00, 0xE0,
+ 0x00, 0x00, 0x3E, 0x00, 0x00, 0xA0, 0x42, 0x01, 0x20, 0x00, 0x40, 0x02,
+ 0x04, 0x03, 0x71, 0x44, 0x22, 0x91, 0x48, 0x24, 0xD2, 0x41, 0x7C, 0x3E,
+ 0x9F, 0x8F, 0xC3, 0xE1, 0x70, 0x38, 0x22, 0x0E, 0x87, 0xC3, 0xE1, 0x00,
+ 0x38, 0x1C, 0x0E, 0x87, 0x83, 0x10, 0x68, 0x78, 0x3C, 0x1E, 0x8F, 0xC7,
+ 0xE3, 0x41, 0x78, 0x3C, 0x1E, 0x0F, 0x81, 0x40, 0x20, 0x38, 0x22, 0x0E,
+ 0x87, 0xC3, 0xE1, 0x00, 0x38, 0x3C, 0x1E, 0x8F, 0x07, 0x12, 0x80, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xC0, 0x11, 0x70, 0x00,
+ };
--- /dev/null
+#define analogterm_unknown_width 7
+#define analogterm_unknown_height 8
+static char analogterm_unknown_bits[] = {
+ 0x00, 0x3E, 0x22, 0x22, 0x22, 0x22, 0x3E, 0x00, };
+++ /dev/null
-#define analogtermgfx_font_width 672
-#define analogtermgfx_font_height 8
-static char analogtermgfx_font_bits[] = {
- 0x00, 0x04, 0x85, 0x82, 0x30, 0x10, 0x10, 0x08, 0x04, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x1C, 0x04, 0xC7, 0x07, 0xF1, 0x61, 0x7C, 0x1C, 0x0E, 0x00,
- 0x00, 0x01, 0x10, 0x38, 0x1C, 0x84, 0x87, 0xE3, 0xF1, 0xF9, 0x78, 0x22,
- 0x0E, 0x48, 0x24, 0x10, 0x89, 0x38, 0x1E, 0x8E, 0x87, 0xE3, 0x13, 0x89,
- 0x44, 0x22, 0x91, 0x8F, 0x17, 0xF0, 0x00, 0x00, 0x00, 0x55, 0xE1, 0x60,
- 0x08, 0x00, 0x00, 0x85, 0x02, 0x02, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x40, 0x20, 0x00, 0x08, 0x18, 0x01, 0x00, 0xC1, 0x01, 0x00,
- 0x00, 0x04, 0x85, 0xC2, 0x33, 0x29, 0x10, 0x04, 0x88, 0x0A, 0x01, 0x00,
- 0x00, 0x40, 0x22, 0x86, 0x08, 0x84, 0x11, 0x10, 0x40, 0x22, 0x11, 0x00,
- 0x80, 0x00, 0x20, 0x44, 0x22, 0x8A, 0x48, 0x24, 0x12, 0x08, 0x04, 0x22,
- 0x04, 0x48, 0x22, 0xB0, 0x89, 0x44, 0x22, 0x91, 0x48, 0x84, 0x10, 0x89,
- 0x44, 0x22, 0x11, 0x88, 0x20, 0x80, 0x00, 0x00, 0x88, 0x6A, 0x21, 0x10,
- 0x08, 0x20, 0x10, 0x85, 0x02, 0x02, 0x00, 0x40, 0x20, 0xFE, 0x00, 0x00,
- 0x00, 0x80, 0x40, 0x20, 0x00, 0x08, 0x06, 0x06, 0x00, 0x21, 0x02, 0x54,
- 0x00, 0x04, 0xC5, 0xA7, 0x80, 0x28, 0x10, 0x02, 0x10, 0x07, 0x01, 0x00,
- 0x00, 0x20, 0x2A, 0x04, 0x08, 0x42, 0xF1, 0x08, 0x20, 0x22, 0x11, 0x02,
- 0x41, 0xF0, 0x41, 0x20, 0x2A, 0x91, 0x48, 0x20, 0x12, 0x08, 0x04, 0x22,
- 0x04, 0x48, 0x21, 0x50, 0x99, 0x44, 0x22, 0x91, 0x48, 0x80, 0x10, 0x89,
- 0x44, 0x14, 0x0A, 0x84, 0x40, 0x80, 0x20, 0x00, 0x1C, 0xD5, 0x61, 0x10,
- 0x08, 0x50, 0x10, 0x87, 0x02, 0x02, 0x00, 0x40, 0x20, 0x00, 0x7F, 0x00,
- 0x00, 0x80, 0x40, 0x20, 0x00, 0x08, 0x01, 0xC8, 0xE7, 0x23, 0x00, 0x28,
- 0x00, 0x04, 0x80, 0xC2, 0x41, 0x10, 0x00, 0x02, 0xD0, 0xDF, 0x07, 0xF0,
- 0x01, 0x10, 0x2A, 0x04, 0x06, 0x23, 0x01, 0x79, 0x10, 0x1C, 0x1E, 0x00,
- 0x20, 0x00, 0x80, 0x10, 0x3A, 0x91, 0x47, 0x20, 0xF2, 0x78, 0x64, 0x3E,
- 0x04, 0xC8, 0x20, 0x50, 0xA9, 0x44, 0x1E, 0x91, 0x87, 0x83, 0x10, 0x89,
- 0x54, 0x08, 0x04, 0x82, 0x80, 0x80, 0x50, 0x00, 0xBE, 0x6A, 0x3D, 0x1E,
- 0x8F, 0x23, 0x7C, 0x15, 0xF9, 0xE3, 0x81, 0xC7, 0xFF, 0x01, 0x80, 0x3F,
- 0x00, 0x80, 0x7F, 0xFC, 0xFF, 0x08, 0x06, 0xA6, 0x82, 0x70, 0x00, 0x54,
- 0x00, 0x04, 0xC0, 0x87, 0x22, 0xA8, 0x00, 0x02, 0x10, 0x07, 0x01, 0x00,
- 0x00, 0x08, 0x2A, 0x04, 0x01, 0xE4, 0x03, 0x89, 0x08, 0x22, 0x10, 0x00,
- 0x40, 0xF0, 0x41, 0x10, 0x1A, 0x9F, 0x48, 0x20, 0x12, 0x08, 0x44, 0x22,
- 0x04, 0x48, 0x21, 0x10, 0xC9, 0x44, 0x02, 0x95, 0x02, 0x84, 0x10, 0x89,
- 0x54, 0x14, 0x04, 0x81, 0x00, 0x81, 0x88, 0x00, 0x1C, 0x55, 0x29, 0x62,
- 0xBD, 0x00, 0x10, 0x15, 0x11, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0xC0,
- 0x1F, 0x80, 0x40, 0x00, 0x10, 0x08, 0x98, 0x81, 0xE2, 0x23, 0x20, 0x28,
- 0x00, 0x00, 0x80, 0xE2, 0x91, 0x49, 0x00, 0x04, 0x88, 0x0A, 0x81, 0x00,
- 0x00, 0x04, 0x22, 0x84, 0x40, 0x04, 0x11, 0x89, 0x08, 0x22, 0x08, 0x02,
- 0x81, 0x00, 0x20, 0x00, 0x02, 0x91, 0x48, 0x24, 0x12, 0x08, 0x44, 0x22,
- 0x84, 0x48, 0x22, 0x10, 0x89, 0x44, 0x02, 0x89, 0x44, 0x84, 0x10, 0x51,
- 0x6C, 0x22, 0x84, 0x80, 0x00, 0x82, 0x00, 0x00, 0x88, 0x2A, 0x08, 0x06,
- 0x83, 0x01, 0x10, 0x10, 0x10, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0xE0, 0x8F, 0x40, 0x00, 0x10, 0x08, 0x00, 0x80, 0x42, 0x20, 0x00, 0x54,
- 0x00, 0x04, 0x80, 0x82, 0x80, 0xB1, 0x00, 0x08, 0x04, 0x00, 0x40, 0x00,
- 0x20, 0x02, 0x1C, 0x84, 0x8F, 0x03, 0xE1, 0x70, 0x08, 0x1C, 0x06, 0x80,
- 0x00, 0x01, 0x10, 0x10, 0x3C, 0x91, 0x87, 0xE3, 0xF1, 0x09, 0x78, 0x22,
- 0x0E, 0x47, 0xE4, 0x13, 0x89, 0x38, 0x02, 0x96, 0x88, 0x83, 0xE0, 0x20,
- 0x44, 0x22, 0x84, 0x8F, 0x07, 0xF4, 0x00, 0x00, 0x00, 0x15, 0x08, 0x02,
- 0x85, 0x00, 0x7C, 0x10, 0x10, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x40, 0x00, 0x10, 0x08, 0x9F, 0x4F, 0x44, 0xD0, 0x03, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x80, 0x2A, 0x08, 0x02,
- 0x85, 0x00, 0x00, 0x70, 0x10, 0x00, 0x81, 0x00, 0x20, 0x00, 0x00, 0x00,
- 0x00, 0x80, 0x40, 0x00, 0x10, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- };