#pragma once
|
|
|
|
#include "gp/containers/array.hpp"
|
|
|
|
using display_char = gp::array<uint8_t, 8>;
|
|
|
|
constexpr display_char ascii_tr(unsigned char c) {
|
|
display_char whitespace{
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000
|
|
};
|
|
|
|
display_char invalid{
|
|
0b11111111,
|
|
c,
|
|
0b10101011,
|
|
0b10101011,
|
|
0b10011001,
|
|
0b10100101,
|
|
0b11000011,
|
|
0b11111111
|
|
};
|
|
|
|
switch(c) {
|
|
case '\0':
|
|
return whitespace;
|
|
case ' ':
|
|
return whitespace;
|
|
case '!':
|
|
return {
|
|
0b00000000,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b00000000,
|
|
0b00010000,
|
|
0b00000000
|
|
};
|
|
case '"':
|
|
return {
|
|
0b00000000,
|
|
0b00101000,
|
|
0b00101000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000
|
|
};
|
|
case '#':
|
|
return {
|
|
0b00010010,
|
|
0b00100100,
|
|
0b11111110,
|
|
0b00100100,
|
|
0b01001000,
|
|
0b11111110,
|
|
0b01001000,
|
|
0b10010000
|
|
};
|
|
case '$':
|
|
return {
|
|
0b01111000,
|
|
0b10100100,
|
|
0b10100000,
|
|
0b01111000,
|
|
0b00100100,
|
|
0b00100100,
|
|
0b01111000,
|
|
0b00100000
|
|
};
|
|
case '%':
|
|
return {
|
|
0b11100001,
|
|
0b10100010,
|
|
0b11100100,
|
|
0b00001000,
|
|
0b00010000,
|
|
0b00100111,
|
|
0b01000101,
|
|
0b10000111
|
|
};
|
|
case '&':
|
|
return {
|
|
0b00011000,
|
|
0b00100100,
|
|
0b01000000,
|
|
0b00100000,
|
|
0b01010100,
|
|
0b10001000,
|
|
0b01110100,
|
|
0b00000000
|
|
};
|
|
case '\'':
|
|
return {
|
|
0b00000000,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000
|
|
};
|
|
case '(':
|
|
return {
|
|
0b00100000,
|
|
0b01000000,
|
|
0b10000000,
|
|
0b10000000,
|
|
0b10000000,
|
|
0b01000000,
|
|
0b00100000,
|
|
0b00000000
|
|
};
|
|
case ')':
|
|
return {
|
|
0b00100000,
|
|
0b00010000,
|
|
0b00001000,
|
|
0b00001000,
|
|
0b00001000,
|
|
0b00010000,
|
|
0b00100000,
|
|
0b00000000
|
|
};
|
|
case '*':
|
|
return {
|
|
0b00000000,
|
|
0b00010000,
|
|
0b01111100,
|
|
0b00101000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000
|
|
};
|
|
case '+':
|
|
return {
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b01111100,
|
|
0b00010000,
|
|
0b00010000,
|
|
0b00000000
|
|
};
|
|
case ',':
|
|
return {
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00001000,
|
|
0b00010000,
|
|
0b00000000
|
|
};
|
|
case '-':
|
|
return {
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b01111100,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000
|
|
};
|
|
case '.':
|
|
return {
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00000000,
|
|
0b00011000,
|
|
0b00011000,
|
|
0b00000000
|
|
};
|
|
case '/':
|
|
return {
|
|
0b00000100,
|
|
0b00001000,
|
|
0b00001000,
|
|
0b00010000,
|
|
0b00100000,
|
|
0b00100000,
|
|
0b01000000,
|
|
0b00000000
|
|
};
|
|
case '0':
|
|
return {
|
|
0b00111000,
|
|
0b01000100,
|
|
0b10001010,
|
|
0b10010010,
|
|
0b10100010,
|
|
0b01000100,
|
|
0b00111000,
|
|
0b00000000
|
|
};
|
|
case '1':
|
|
return {
|
|
0b00100000,
|
|
0b01100000,
|
|
0b00100000,
|
|
0b00100000,
|
|
0b00100000,
|
|
0b00100000,
|
|
0b00100000,
|
|
0b00000000
|
|
};
|
|
case '2':
|
|
return {
|
|
0b00111000,
|
|
0b01000100,
|
|
0b00000100,
|
|
0b00001000,
|
|
0b00010000,
|
|
0b00100000,
|
|
0b11111100,
|
|
0b00000000
|
|
};
|
|
case '3':
|
|
return {
|
|
0b00111000,
|
|
0b01000100,
|
|
0b00000100,
|
|
0b00011000,
|
|
0b00000100,
|
|
0b01000100,
|
|
0b00111000,
|
|
0b00000000
|
|
};
|
|
case '4':
|
|
return {
|
|
0b00001000,
|
|
0b00011000,
|
|
0b00101000,
|
|
0b01001000,
|
|
0b11111100,
|
|
0b00001000,
|
|
0b00001000,
|
|
0b00000000
|
|
};
|
|
case '5':
|
|
return {
|
|
0b01111110,
|
|
0b01000000,
|
|
0b00111100,
|
|
0b00000010,
|
|
0b00000010,
|
|
0b00000010,
|
|
0b01111100,
|
|
0b00000000
|
|
};
|
|
default:
|
|
return invalid;
|
|
}
|
|
}
|