commit 1424fafd87ad4691f7552d8e0bdbfb5575f56efe
parent 6ffa78ed7eb94b3b93a9eccba8ee76b56c3f277d
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Mon, 5 Aug 2024 20:09:43 +0200
move 2*20 LCD sim to hardware lib
Diffstat:
14 files changed, 3002 insertions(+), 3001 deletions(-)
diff --git a/source/hardwareLib/CMakeLists.txt b/source/hardwareLib/CMakeLists.txt
@@ -9,6 +9,8 @@ set(SOURCES
haltDSP.cpp haltDSP.h
i2c.cpp i2c.h
i2cFlash.cpp i2cFlash.h
+ lcd.cpp lcd.h
+ lcdfonts.cpp lcdfonts.h
sciMidi.cpp sciMidi.h
syncUCtoDSP.h
)
diff --git a/source/hardwareLib/lcd.cpp b/source/hardwareLib/lcd.cpp
@@ -0,0 +1,218 @@
+#include "lcd.h"
+
+#include <cassert>
+
+#include "mc68k/logging.h"
+
+#define LOG MCLOG
+
+namespace hwLib
+{
+ LCD::LCD() = default;
+
+ std::optional<uint8_t> LCD::exec(bool registerSelect, bool read, uint8_t g)
+ {
+ bool changed = false;
+ bool cgRamChanged = false;
+
+ std::optional<uint8_t> result;
+
+ if(!read)
+ {
+ if(!registerSelect)
+ {
+ if(g == 0x01)
+ {
+ LOG("LCD Clear Display");
+ m_dramData.fill(' ');
+ changed = true;
+ }
+ else if(g == 0x02)
+ {
+ LOG("LCD Return Home");
+ m_dramAddr = 0;
+ m_cursorPos = 0;
+ }
+ else if((g & 0xfc) == 0x04)
+ {
+ const int increment = (g >> 1) & 1;
+ const int shift = g & 1;
+ LOG("LCD Entry Mode Set, inc=" << increment << ", shift=" << shift);
+
+ m_addrIncrement = increment ? 1 : -1;
+ }
+ else if((g & 0xf8) == 0x08)
+ {
+ const int displayOnOff = (g >> 2) & 1;
+ const int cursorOnOff = (g >> 1) & 1;
+ const int cursorBlinking = g & 1;
+
+ LOG("LCD Display ON/OFF, display=" << displayOnOff << ", cursor=" << cursorOnOff << ", blinking=" << cursorBlinking);
+
+ m_displayOn = displayOnOff != 0;
+ m_cursorOn = cursorOnOff != 0;
+ m_cursorBlinking = cursorBlinking != 0;
+ }
+ else if((g & 0xf3) == 0x10)
+ {
+ const int scrl = (g >> 2) & 3;
+
+ LOG("LCD Cursor/Display Shift, scrl=" << scrl);
+ m_cursorShift = static_cast<CursorShiftMode>(scrl);
+ }
+ else if((g & 0xec) == 0x28)
+ {
+ const int dl = (g >> 4) & 1;
+ const int ft = g & 3;
+
+ LOG("LCD Function Set, dl=" << dl << ", ft=" << ft);
+ m_dataLength = static_cast<DataLength>(dl);
+ m_fontTable = static_cast<FontTable>(ft);
+ }
+ else if(g & (1<<7))
+ {
+ const int addr = g & 0x7f;
+// LOG("LCD Set DDRAM address, addr=" << addr);
+ m_dramAddr = addr;
+ m_addressMode = AddressMode::DDRam;
+ }
+ else if(g & (1<<6))
+ {
+ const int acg = g & 0x3f;
+
+// LOG("LCD Set CGRAM address, acg=" << acg);
+ m_cgramAddr = acg;
+ m_addressMode = AddressMode::CGRam;
+ }
+ else
+ {
+ LOG("LCD unknown command");
+ assert(false);
+ }
+ }
+ else
+ {
+ if(m_addressMode == AddressMode::CGRam)
+ {
+// changed = true;
+// LOG("LCD write data to CGRAM addr " << m_cgramAddr << ", data=" << static_cast<int>(g));
+
+ if (m_cgramData[m_cgramAddr] != g)
+ {
+ m_cgramData[m_cgramAddr] = g;
+ cgRamChanged = true;
+ }
+
+ m_cgramAddr += m_addrIncrement;
+
+ /*
+ if((m_cgramAddr & 0x7) == 0)
+ {
+ std::stringstream ss;
+ ss << "CG RAM character " << (m_cgramAddr/8 - 1) << ':' << '\n';
+ ss << "##################" << '\n';
+ for(auto i = m_cgramAddr - 8; i < m_cgramAddr - 1; ++i)
+ {
+ ss << '#';
+ for(int x=7; x >= 0; --x)
+ {
+ if(m_cgramData[i] & (1<<x))
+ ss << "[]";
+ else
+ ss << " ";
+ }
+ ss << '#' << '\n';
+ }
+ ss << "##################" << '\n';
+ const auto s(ss.str());
+ LOG(s);
+ }
+ */
+ }
+ else
+ {
+// LOG("LCD write data to DDRAM addr " << m_dramAddr << ", data=" << static_cast<int>(g) << ", char=" << static_cast<char>(g));
+
+ const auto old = m_dramData;
+
+ if(m_dramAddr >= 20 && m_dramAddr < 0x40)
+ {
+ for(size_t i=1; i<=20; ++i)
+ m_dramData[i-1] = m_dramData[i];
+ m_dramData[19] = static_cast<char>(g);
+ }
+ else if(m_dramAddr > 0x53)
+ {
+ for(size_t i=21; i<=40; ++i)
+ m_dramData[i-1] = m_dramData[i];
+
+ m_dramData[39] = static_cast<char>(g);
+ }
+ else
+ {
+ if(m_dramAddr < 20)
+ m_dramData[m_dramAddr] = static_cast<char>(g);
+ else
+ m_dramData[m_dramAddr - 0x40 + 20] = static_cast<char>(g);
+ }
+
+ if(m_dramAddr != 20 && m_dramAddr != 0x54)
+ m_dramAddr += m_addrIncrement;
+
+ if(m_dramData != old)
+ changed = true;
+ }
+ }
+ }
+ else
+ {
+ if(registerSelect)
+ {
+ LOG("LCD read data from CGRAM or DDRAM");
+ if(m_addressMode == AddressMode::CGRam)
+ result = m_cgramData[m_cgramAddr];
+ else
+ result = m_dramData[m_dramAddr];
+ }
+ else
+ {
+ LOG("LCD read busy flag & address");
+ if(m_addressMode == AddressMode::CGRam)
+ {
+ result = static_cast<uint8_t>(m_cgramAddr);
+ }
+ else
+ {
+ auto a = m_dramAddr;
+ if(a > 0x53)
+ a = 0x53;
+ if(a == 20)
+ a = 19;
+ result = static_cast<uint8_t>(m_dramAddr);
+ }
+ }
+ }
+
+ if(changed && m_changeCallback)
+ m_changeCallback();
+
+ if(cgRamChanged && m_cgRamChangeCallback)
+ m_cgRamChangeCallback();
+
+ return result;
+ }
+
+ bool LCD::getCgData(std::array<uint8_t, 8>& _data, uint32_t _charIndex) const
+ {
+ const auto idx = _charIndex * 8;
+ if(idx + 8 >= getCgRam().size())
+ return false;
+
+ uint32_t j = 0;
+
+ for(auto i = idx; i<idx+8; ++i)
+ _data[j++] = getCgRam()[i];
+
+ return true;
+ }
+}
diff --git a/source/hardwareLib/lcd.h b/source/hardwareLib/lcd.h
@@ -0,0 +1,91 @@
+#pragma once
+
+#include <array>
+#include <cstdint>
+#include <functional>
+#include <optional>
+
+namespace hwLib
+{
+ // 2*20 characters display simulation (20*2)
+ // EW20290GLW / NHD-0220DZW-AB5 and compatibles
+
+ class LCD
+ {
+ public:
+ using ChangeCallback = std::function<void()>;
+
+ LCD();
+ std::optional<uint8_t> exec(bool registerSelect, bool read, uint8_t g);
+
+ const std::array<char, 40>& getDdRam() const { return m_dramData; }
+ const auto& getCgRam() const { return m_cgramData; }
+ bool getCgData(std::array<uint8_t, 8>& _data, uint32_t _charIndex) const;
+
+ void setChangeCallback(const ChangeCallback& _callback)
+ {
+ m_changeCallback = _callback;
+ }
+
+ void setCgRamChangeCallback(const ChangeCallback& _callback)
+ {
+ m_cgRamChangeCallback = _callback;
+ }
+ private:
+ enum class CursorShiftMode
+ {
+ CursorLeft,
+ CursorRight,
+ DisplayLeft,
+ DisplayRight
+ };
+ enum class DisplayShiftMode
+ {
+ Right,
+ Left
+ };
+ enum class FontTable
+ {
+ EnglishJapanese,
+ WesternEuropean1,
+ EnglishRussian,
+ WesternEuropean2,
+ };
+ enum class DataLength
+ {
+ Bit8,
+ Bit4
+ };
+
+ enum class AddressMode
+ {
+ DDRam,
+ CGRam,
+ };
+
+ uint32_t m_lastWriteCounter = 0xffffffff;
+
+ uint32_t m_cursorPos = 0;
+ uint32_t m_dramAddr = 0;
+ uint32_t m_cgramAddr = 0;
+
+ CursorShiftMode m_cursorShift = CursorShiftMode::CursorLeft;
+ DisplayShiftMode m_displayShift = DisplayShiftMode::Left;
+ FontTable m_fontTable = FontTable::EnglishJapanese;
+ DataLength m_dataLength = DataLength::Bit8;
+ AddressMode m_addressMode = AddressMode::DDRam;
+
+ bool m_displayOn = true;
+ bool m_cursorOn = false;
+ bool m_cursorBlinking = false;
+
+ int m_addrIncrement = 1;
+
+ std::array<uint8_t, 0x40> m_cgramData{};
+ std::array<char, 40> m_dramData{};
+ uint32_t m_lastOpState = 0;
+
+ ChangeCallback m_changeCallback;
+ ChangeCallback m_cgRamChangeCallback;
+ };
+}
diff --git a/source/hardwareLib/lcdfonts.cpp b/source/hardwareLib/lcdfonts.cpp
@@ -0,0 +1,2675 @@
+#include <cstdint>
+#include <cstddef>
+
+#include <array>
+
+namespace hwLib
+{
+ constexpr uint8_t g_fontTable0[] =
+ {
+ // CGRam Data, initially empty
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 0
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 1
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 2
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 3
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 4
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 5
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 6
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 7
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 8
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 9
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 a
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 b
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 c
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 d
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 e
+ 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 f
+
+ 0b00000, // 1 0
+ 0b10001,
+ 0b01001,
+ 0b01110,
+ 0b10010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 1
+ 0b11110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 2
+ 0b00110,
+ 0b00010,
+ 0b00110,
+ 0b01010,
+ 0b01010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 3
+ 0b11111,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 4
+ 0b11111,
+ 0b00001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 5
+ 0b00110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 6
+ 0b01110,
+ 0b00100,
+ 0b01000,
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 7
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 8
+ 0b10111,
+ 0b10101,
+ 0b10101,
+ 0b10001,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 9
+ 0b00110,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 a
+ 0b01111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 b
+ 0b11110,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // 1 c
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 d
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 e
+ 0b10110,
+ 0b01001,
+ 0b10001,
+ 0b10001,
+ 0b10111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 1 f
+ 0b00110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 0
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 2 1 !
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // 2 2 "
+ 0b01010,
+ 0b01010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // 2 3 #
+ 0b01010,
+ 0b11111,
+ 0b01010,
+ 0b11111,
+ 0b01010,
+ 0b01010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 2 4 $
+ 0b01111,
+ 0b10100,
+ 0b01110,
+ 0b00101,
+ 0b11110,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11000, // 2 5 %
+ 0b11001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b10011,
+ 0b00011,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01100, // 2 6 &
+ 0b10010,
+ 0b10100,
+ 0b01000,
+ 0b10101,
+ 0b10010,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01100, // 2 7 '
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 2 8 (
+ 0b00100,
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // 2 9 )
+ 0b00100,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 a *
+ 0b00100,
+ 0b10101,
+ 0b01110,
+ 0b10101,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 b +
+ 0b00100,
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 c ,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b01100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 d -
+ 0b00000,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 e .
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b01100,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 2 f /
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 3 0 0
+ 0b10001,
+ 0b10011,
+ 0b10101,
+ 0b11001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 3 1 1
+ 0b01100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 3 2 2
+ 0b10001,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 3 3 3
+ 0b00010,
+ 0b00100,
+ 0b00010,
+ 0b00001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 3 4 4
+ 0b00110,
+ 0b01010,
+ 0b10010,
+ 0b11111,
+ 0b00010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 3 5 5
+ 0b10000,
+ 0b11110,
+ 0b00001,
+ 0b00001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00110, // 3 6 6
+ 0b01000,
+ 0b10000,
+ 0b11110,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 3 7 7
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 3 8 8
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 3 9 9
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 3 a :
+ 0b01100,
+ 0b01100,
+ 0b00000,
+ 0b01100,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 3 b ;
+ 0b01100,
+ 0b01100,
+ 0b00000,
+ 0b01100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 3 c <
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b01000,
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 3 d =
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // 3 e >
+ 0b00100,
+ 0b00010,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 3 f ?
+ 0b10001,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 0 @
+ 0b10001,
+ 0b00001,
+ 0b01101,
+ 0b10101,
+ 0b10101,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 1 A
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11110, // 4 2 B
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 3 C
+ 0b10001,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11100, // 4 4 D
+ 0b10010,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10010,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 4 5 E
+ 0b10000,
+ 0b10000,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 4 6 F
+ 0b10000,
+ 0b10000,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 7 G
+ 0b10001,
+ 0b10000,
+ 0b10111,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 4 8 H
+ 0b10001,
+ 0b10001,
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 9 I
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00111, // 4 a J
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b10010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 4 b K
+ 0b10010,
+ 0b10100,
+ 0b11000,
+ 0b10100,
+ 0b10010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // 4 c L
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 4 d M
+ 0b11011,
+ 0b10101,
+ 0b10101,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 4 e N
+ 0b10001,
+ 0b11001,
+ 0b10101,
+ 0b10011,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 4 f O
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11110, // 5 0 P
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 5 1 Q
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10101,
+ 0b10010,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11110, // 5 2 R
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b10100,
+ 0b10010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01111, // 5 3 S
+ 0b10000,
+ 0b10000,
+ 0b01110,
+ 0b00001,
+ 0b00001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 5 4 T
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 5 5 U
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 5 6 V
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10101, // 5 7 W
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b01010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 5 8 X
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b01010,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 5 9 Y
+ 0b10001,
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // 5 a Z
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 5 b [
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10001, // 5 c
+ 0b01010,
+ 0b11111,
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // 5 d ]
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 5 e ^
+ 0b01010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 5 f _
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // 6 0 `
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 1 a
+ 0b00000,
+ 0b01110,
+ 0b00001,
+ 0b01111,
+ 0b10001,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // 6 2 b
+ 0b10000,
+ 0b10110,
+ 0b11001,
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 3 c
+ 0b00000,
+ 0b01110,
+ 0b10000,
+ 0b10000,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00001, // 6 4 d
+ 0b00001,
+ 0b01101,
+ 0b10011,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 5 e
+ 0b00000,
+ 0b01110,
+ 0b10001,
+ 0b11111,
+ 0b10000,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00110, // 6 6 f
+ 0b01001,
+ 0b01000,
+ 0b11100,
+ 0b01000,
+ 0b01000,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 7 g
+ 0b01111,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // 6 8 h
+ 0b10000,
+ 0b10110,
+ 0b11001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 6 9 i
+ 0b00000,
+ 0b01100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 6 a j
+ 0b00000,
+ 0b00110,
+ 0b00010,
+ 0b00010,
+ 0b10010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // 6 b k
+ 0b10000,
+ 0b10010,
+ 0b10100,
+ 0b11000,
+ 0b10100,
+ 0b10010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01100, // 6 c l
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 d m
+ 0b00000,
+ 0b11010,
+ 0b10101,
+ 0b10101,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 e n
+ 0b00000,
+ 0b10110,
+ 0b11001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 6 f o
+ 0b00000,
+ 0b01110,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 0 p
+ 0b00000,
+ 0b11110,
+ 0b10001,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 1 q
+ 0b00000,
+ 0b01101,
+ 0b10011,
+ 0b01111,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 2 r
+ 0b00000,
+ 0b10110,
+ 0b11001,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 3 s
+ 0b00000,
+ 0b01110,
+ 0b10000,
+ 0b01110,
+ 0b00001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // 7 4 t
+ 0b01000,
+ 0b11100,
+ 0b01000,
+ 0b01000,
+ 0b01001,
+ 0b00110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 5 u
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10011,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 6 v
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 7 w
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10101,
+ 0b01010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 8 x
+ 0b00000,
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b01010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 9 y
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 a z
+ 0b00000,
+ 0b11111,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 7 b {
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b00100,
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 7 c |
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // 7 d }
+ 0b00100,
+ 0b00100,
+ 0b00010,
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 e ->
+ 0b00100,
+ 0b00010,
+ 0b11111,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 7 f <-
+ 0b00100,
+ 0b01000,
+ 0b11111,
+ 0b01000,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 0
+ 0b00110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 1
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 2
+ 0b10001,
+ 0b10001,
+ 0b01001,
+ 0b00101,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 3
+ 0b01111,
+ 0b01001,
+ 0b01101,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 4
+ 0b11111,
+ 0b01001,
+ 0b01101,
+ 0b00001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 5
+ 0b01001,
+ 0b00110,
+ 0b00010,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 6
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b00010,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 7
+ 0b11111,
+ 0b00001,
+ 0b10001,
+ 0b10110,
+ 0b10000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 8
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 9
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 a
+ 0b01111,
+ 0b01001,
+ 0b01001,
+ 0b01001,
+ 0b11001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 8 b
+ 0b01001,
+ 0b11101,
+ 0b00001,
+ 0b10001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 c
+ 0b00010,
+ 0b00000,
+ 0b00010,
+ 0b00101,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 d
+ 0b00000,
+ 0b00000,
+ 0b00010,
+ 0b00101,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // 8 e
+ 0b00100,
+ 0b01110,
+ 0b00000,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 8 f
+ 0b00100,
+ 0b00000,
+ 0b00110,
+ 0b01000,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 9 0
+ 0b00101,
+ 0b11100,
+ 0b00000,
+ 0b00100,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 1
+ 0b00000,
+ 0b00100,
+ 0b01010,
+ 0b00001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 2
+ 0b00010,
+ 0b00000,
+ 0b10011,
+ 0b10011,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 3
+ 0b00000,
+ 0b00000,
+ 0b00111,
+ 0b00101,
+ 0b11011,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 4
+ 0b01100,
+ 0b00010,
+ 0b01001,
+ 0b10101,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 9 5
+ 0b00000,
+ 0b01111,
+ 0b01001,
+ 0b00110,
+ 0b11001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 9 6
+ 0b01001,
+ 0b11101,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 7
+ 0b00101,
+ 0b00000,
+ 0b00010,
+ 0b00101,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 8
+ 0b00000,
+ 0b00000,
+ 0b01100,
+ 0b01010,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 9
+ 0b01010,
+ 0b00000,
+ 0b01100,
+ 0b01010,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 a
+ 0b00000,
+ 0b01111,
+ 0b01001,
+ 0b00110,
+ 0b11001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // 9 b
+ 0b00000,
+ 0b00100,
+ 0b01010,
+ 0b00001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 c
+ 0b00101,
+ 0b00000,
+ 0b10011,
+ 0b10011,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 d
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // 9 e
+ 0b00000,
+ 0b00000,
+ 0b00100,
+ 0b01010,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00110, // 9 f
+ 0b11101,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 0
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 1
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b11100,
+ 0b10100,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00111, // a 2
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 3
+ 0b00000,
+ 0b00000,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 4
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b10000,
+ 0b01000,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 5
+ 0b00000,
+ 0b00000,
+ 0b01100,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 6
+ 0b11111,
+ 0b00001,
+ 0b11111,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 7
+ 0b00000,
+ 0b11111,
+ 0b00001,
+ 0b00110,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 8
+ 0b00000,
+ 0b00010,
+ 0b00100,
+ 0b01100,
+ 0b10100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a 9
+ 0b00000,
+ 0b00100,
+ 0b11111,
+ 0b10001,
+ 0b00001,
+ 0b00110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a a
+ 0b00000,
+ 0b00000,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a b
+ 0b00000,
+ 0b00010,
+ 0b11111,
+ 0b00110,
+ 0b01010,
+ 0b10010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a c
+ 0b00000,
+ 0b01000,
+ 0b11111,
+ 0b01001,
+ 0b01010,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a d
+ 0b00000,
+ 0b00000,
+ 0b01110,
+ 0b00010,
+ 0b00010,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a e
+ 0b00000,
+ 0b00000,
+ 0b11110,
+ 0b00010,
+ 0b11110,
+ 0b00010,
+ 0b11110,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // a f
+ 0b00000,
+ 0b00000,
+ 0b10101,
+ 0b10101,
+ 0b00001,
+ 0b00110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b 0
+ 0b00000,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // b 1
+ 0b00001,
+ 0b00101,
+ 0b00110,
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00001, // b 2
+ 0b00010,
+ 0b00100,
+ 0b01100,
+ 0b10100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // b 3
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b 4
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // b 5
+ 0b11111,
+ 0b00010,
+ 0b00110,
+ 0b01010,
+ 0b10010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // b 6
+ 0b11111,
+ 0b01001,
+ 0b01001,
+ 0b01001,
+ 0b01001,
+ 0b10010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // b 7
+ 0b11111,
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b 8
+ 0b01111,
+ 0b01001,
+ 0b10001,
+ 0b00001,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // b 9
+ 0b01111,
+ 0b10010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b a
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // b b
+ 0b11111,
+ 0b01010,
+ 0b01010,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b c
+ 0b11000,
+ 0b00001,
+ 0b11001,
+ 0b00001,
+ 0b00010,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b d
+ 0b11111,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b01010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // b e
+ 0b11111,
+ 0b01001,
+ 0b01010,
+ 0b01000,
+ 0b01000,
+ 0b00111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // b f
+ 0b10001,
+ 0b10001,
+ 0b01001,
+ 0b00001,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c 0
+ 0b01111,
+ 0b01001,
+ 0b10101,
+ 0b00011,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // c 1
+ 0b11100,
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c 2
+ 0b10101,
+ 0b10101,
+ 0b10101,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // c 3
+ 0b00000,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // c 4
+ 0b01000,
+ 0b01000,
+ 0b01100,
+ 0b01010,
+ 0b01000,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // c 5
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c 6
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c 7
+ 0b11111,
+ 0b00001,
+ 0b01010,
+ 0b00100,
+ 0b01010,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // c 8
+ 0b11111,
+ 0b00010,
+ 0b00100,
+ 0b01110,
+ 0b10101,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // c 9
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c a
+ 0b00100,
+ 0b00010,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10000, // c b
+ 0b10000,
+ 0b11111,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c c
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+ 0b00010,
+ 0b01100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c d
+ 0b01000,
+ 0b10100,
+ 0b00010,
+ 0b00001,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // c e
+ 0b11111,
+ 0b00100,
+ 0b10101,
+ 0b10101,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // c f
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b01010,
+ 0b00100,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 0
+ 0b01110,
+ 0b00000,
+ 0b01110,
+ 0b00000,
+ 0b01110,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 1
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b10001,
+ 0b11111,
+ 0b00001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 2
+ 0b00001,
+ 0b00001,
+ 0b01010,
+ 0b00100,
+ 0b01010,
+ 0b10000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 3
+ 0b11111,
+ 0b01000,
+ 0b11111,
+ 0b01000,
+ 0b01000,
+ 0b00111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // d 4
+ 0b01000,
+ 0b11111,
+ 0b01001,
+ 0b01010,
+ 0b01000,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 5
+ 0b01110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 6
+ 0b11111,
+ 0b00001,
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // d 7
+ 0b00000,
+ 0b11111,
+ 0b00001,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b10010, // d 8
+ 0b10010,
+ 0b10010,
+ 0b10010,
+ 0b00010,
+ 0b00100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d 9
+ 0b00100,
+ 0b10100,
+ 0b10100,
+ 0b10100,
+ 0b10101,
+ 0b10110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d a
+ 0b10000,
+ 0b10000,
+ 0b10001,
+ 0b10010,
+ 0b10100,
+ 0b11000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d b
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d c
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b00001,
+ 0b00010,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // d d
+ 0b11000,
+ 0b00000,
+ 0b00001,
+ 0b00001,
+ 0b00010,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00100, // d e
+ 0b10010,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11100, // d f
+ 0b10100,
+ 0b11100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e 0
+ 0b01001,
+ 0b10101,
+ 0b10010,
+ 0b10010,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // e 1
+ 0b00000,
+ 0b01110,
+ 0b00001,
+ 0b01111,
+ 0b10001,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e 2
+ 0b00000,
+ 0b01110,
+ 0b10001,
+ 0b11110,
+ 0b10001,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+
+ 0b00000, // e 3
+ 0b00000,
+ 0b01110,
+ 0b10000,
+ 0b01100,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e 4
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10011,
+ 0b11101,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+
+ 0b00000, // e 5
+ 0b00000,
+ 0b00000,
+ 0b01111,
+ 0b10100,
+ 0b10010,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e 6
+ 0b00000,
+ 0b00110,
+ 0b01001,
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+
+ 0b00000, // e 7
+ 0b00000,
+ 0b01111,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b00001,
+ 0b01110,
+
+ 0b00000, // e 8
+ 0b00000,
+ 0b00111,
+ 0b00100,
+ 0b00100,
+ 0b10100,
+ 0b01000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e 9
+ 0b00010,
+ 0b11010,
+ 0b00010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00010, // e a
+ 0b00000,
+ 0b00110,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b00010,
+ 0b10010,
+ 0b01100,
+
+ 0b00000, // e b
+ 0b10100,
+ 0b01000,
+ 0b10100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // e c
+ 0b00100,
+ 0b01110,
+ 0b10100,
+ 0b10101,
+ 0b01110,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01000, // e d
+ 0b01000,
+ 0b11100,
+ 0b01000,
+ 0b11100,
+ 0b01000,
+ 0b01111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01110, // e e
+ 0b00000,
+ 0b10110,
+ 0b11001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // e f
+ 0b00000,
+ 0b01110,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f 0
+ 0b00000,
+ 0b10110,
+ 0b11001,
+ 0b10001,
+ 0b10001,
+ 0b11110,
+ 0b10000,
+ 0b10000,
+ 0b10000,
+
+ 0b00000, // f 1
+ 0b00000,
+ 0b01101,
+ 0b10011,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b00001,
+ 0b00001,
+
+ 0b00000, // f 2
+ 0b01110,
+ 0b10001,
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b01110,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f 3
+ 0b00000,
+ 0b00000,
+ 0b01011,
+ 0b10101,
+ 0b11010,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f 4
+ 0b00000,
+ 0b01110,
+ 0b10001,
+ 0b10001,
+ 0b01010,
+ 0b11011,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b01010, // f 5
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10011,
+ 0b01101,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // f 6
+ 0b10000,
+ 0b01000,
+ 0b00100,
+ 0b01000,
+ 0b10000,
+ 0b11111,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f 7
+ 0b00000,
+ 0b11111,
+ 0b01010,
+ 0b01010,
+ 0b01010,
+ 0b10011,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // f 8
+ 0b00000,
+ 0b10001,
+ 0b01010,
+ 0b00100,
+ 0b01010,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f 9
+ 0b00000,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b10001,
+ 0b01111,
+ 0b00001,
+ 0b00001,
+ 0b01110,
+
+ 0b00000, // f a
+ 0b00001,
+ 0b11110,
+ 0b00100,
+ 0b11111,
+ 0b00100,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f b
+ 0b00000,
+ 0b11111,
+ 0b01000,
+ 0b01111,
+ 0b01001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f c
+ 0b00000,
+ 0b11111,
+ 0b10101,
+ 0b11111,
+ 0b10001,
+ 0b10001,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f d
+ 0b00000,
+ 0b00100,
+ 0b00000,
+ 0b11111,
+ 0b00000,
+ 0b00100,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b00000, // f e
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+ 0b00000,
+
+ 0b11111, // f f
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ 0b11111,
+ };
+
+ static_assert(std::size(g_fontTable0) == static_cast<size_t>(256 * 10));
+
+ const uint8_t* getCharacterData(const uint8_t _character)
+ {
+ return &g_fontTable0[static_cast<size_t>(_character) * 10];
+ }
+}
diff --git a/source/hardwareLib/lcdfonts.h b/source/hardwareLib/lcdfonts.h
@@ -0,0 +1,8 @@
+#pragma once
+
+#include <cstdint>
+
+namespace hwLib
+{
+ const uint8_t* getCharacterData(uint8_t _character);
+}
diff --git a/source/mqJucePlugin/mqLcd.cpp b/source/mqJucePlugin/mqLcd.cpp
@@ -1,10 +1,8 @@
#include "mqLcd.h"
-#include "jucePluginLib/pluginVersion.h"
-
-#include "wLib/lcdfonts.h"
+#include "hardwareLib/lcdfonts.h"
-// EW20290GLW display simulation (20*2)
+#include "jucePluginLib/pluginVersion.h"
MqLcd::MqLcd(Component& _parent) : Lcd(_parent, 20, 2)
{
@@ -40,5 +38,5 @@ bool MqLcd::getOverrideText(std::vector<std::vector<uint8_t>>& _lines)
const uint8_t* MqLcd::getCharacterData(uint8_t _character) const
{
- return wLib::getCharacterData(_character);
+ return hwLib::getCharacterData(_character);
}
diff --git a/source/mqLib/lcd.cpp b/source/mqLib/lcd.cpp
@@ -30,7 +30,7 @@ namespace mqLib
if(!execute)
return false;
- const auto res = wLib::LCD::exec(registerSelect, read, g);
+ const auto res = hwLib::LCD::exec(registerSelect, read, g);
if(res)
_portGp.writeRX(*res);
diff --git a/source/mqLib/lcd.h b/source/mqLib/lcd.h
@@ -1,6 +1,6 @@
#pragma once
-#include "wLib/lcd.h"
+#include "hardwareLib/lcd.h"
namespace mc68k
{
@@ -9,7 +9,7 @@ namespace mc68k
namespace mqLib
{
- class LCD : public wLib::LCD
+ class LCD : public hwLib::LCD
{
public:
bool exec(mc68k::Port& _portGp, const mc68k::Port& _portF);
diff --git a/source/wLib/CMakeLists.txt b/source/wLib/CMakeLists.txt
@@ -5,8 +5,6 @@ project(wLib)
add_library(wLib STATIC)
set(SOURCES
- lcd.cpp lcd.h
- lcdfonts.cpp lcdfonts.h
wDevice.cpp wDevice.h
wDsp.cpp wDsp.h
wHardware.cpp wHardware.h
diff --git a/source/wLib/lcd.cpp b/source/wLib/lcd.cpp
@@ -1,218 +0,0 @@
-#include "lcd.h"
-
-#include <cassert>
-
-#include "mc68k/logging.h"
-
-#define LOG MCLOG
-
-namespace wLib
-{
- LCD::LCD() = default;
-
- std::optional<uint8_t> LCD::exec(bool registerSelect, bool read, uint8_t g)
- {
- bool changed = false;
- bool cgRamChanged = false;
-
- std::optional<uint8_t> result;
-
- if(!read)
- {
- if(!registerSelect)
- {
- if(g == 0x01)
- {
- LOG("LCD Clear Display");
- m_dramData.fill(' ');
- changed = true;
- }
- else if(g == 0x02)
- {
- LOG("LCD Return Home");
- m_dramAddr = 0;
- m_cursorPos = 0;
- }
- else if((g & 0xfc) == 0x04)
- {
- const int increment = (g >> 1) & 1;
- const int shift = g & 1;
- LOG("LCD Entry Mode Set, inc=" << increment << ", shift=" << shift);
-
- m_addrIncrement = increment ? 1 : -1;
- }
- else if((g & 0xf8) == 0x08)
- {
- const int displayOnOff = (g >> 2) & 1;
- const int cursorOnOff = (g >> 1) & 1;
- const int cursorBlinking = g & 1;
-
- LOG("LCD Display ON/OFF, display=" << displayOnOff << ", cursor=" << cursorOnOff << ", blinking=" << cursorBlinking);
-
- m_displayOn = displayOnOff != 0;
- m_cursorOn = cursorOnOff != 0;
- m_cursorBlinking = cursorBlinking != 0;
- }
- else if((g & 0xf3) == 0x10)
- {
- const int scrl = (g >> 2) & 3;
-
- LOG("LCD Cursor/Display Shift, scrl=" << scrl);
- m_cursorShift = static_cast<CursorShiftMode>(scrl);
- }
- else if((g & 0xec) == 0x28)
- {
- const int dl = (g >> 4) & 1;
- const int ft = g & 3;
-
- LOG("LCD Function Set, dl=" << dl << ", ft=" << ft);
- m_dataLength = static_cast<DataLength>(dl);
- m_fontTable = static_cast<FontTable>(ft);
- }
- else if(g & (1<<7))
- {
- const int addr = g & 0x7f;
-// LOG("LCD Set DDRAM address, addr=" << addr);
- m_dramAddr = addr;
- m_addressMode = AddressMode::DDRam;
- }
- else if(g & (1<<6))
- {
- const int acg = g & 0x3f;
-
-// LOG("LCD Set CGRAM address, acg=" << acg);
- m_cgramAddr = acg;
- m_addressMode = AddressMode::CGRam;
- }
- else
- {
- LOG("LCD unknown command");
- assert(false);
- }
- }
- else
- {
- if(m_addressMode == AddressMode::CGRam)
- {
-// changed = true;
-// LOG("LCD write data to CGRAM addr " << m_cgramAddr << ", data=" << static_cast<int>(g));
-
- if (m_cgramData[m_cgramAddr] != g)
- {
- m_cgramData[m_cgramAddr] = g;
- cgRamChanged = true;
- }
-
- m_cgramAddr += m_addrIncrement;
-
- /*
- if((m_cgramAddr & 0x7) == 0)
- {
- std::stringstream ss;
- ss << "CG RAM character " << (m_cgramAddr/8 - 1) << ':' << '\n';
- ss << "##################" << '\n';
- for(auto i = m_cgramAddr - 8; i < m_cgramAddr - 1; ++i)
- {
- ss << '#';
- for(int x=7; x >= 0; --x)
- {
- if(m_cgramData[i] & (1<<x))
- ss << "[]";
- else
- ss << " ";
- }
- ss << '#' << '\n';
- }
- ss << "##################" << '\n';
- const auto s(ss.str());
- LOG(s);
- }
- */
- }
- else
- {
-// LOG("LCD write data to DDRAM addr " << m_dramAddr << ", data=" << static_cast<int>(g) << ", char=" << static_cast<char>(g));
-
- const auto old = m_dramData;
-
- if(m_dramAddr >= 20 && m_dramAddr < 0x40)
- {
- for(size_t i=1; i<=20; ++i)
- m_dramData[i-1] = m_dramData[i];
- m_dramData[19] = static_cast<char>(g);
- }
- else if(m_dramAddr > 0x53)
- {
- for(size_t i=21; i<=40; ++i)
- m_dramData[i-1] = m_dramData[i];
-
- m_dramData[39] = static_cast<char>(g);
- }
- else
- {
- if(m_dramAddr < 20)
- m_dramData[m_dramAddr] = static_cast<char>(g);
- else
- m_dramData[m_dramAddr - 0x40 + 20] = static_cast<char>(g);
- }
-
- if(m_dramAddr != 20 && m_dramAddr != 0x54)
- m_dramAddr += m_addrIncrement;
-
- if(m_dramData != old)
- changed = true;
- }
- }
- }
- else
- {
- if(registerSelect)
- {
- LOG("LCD read data from CGRAM or DDRAM");
- if(m_addressMode == AddressMode::CGRam)
- result = m_cgramData[m_cgramAddr];
- else
- result = m_dramData[m_dramAddr];
- }
- else
- {
- LOG("LCD read busy flag & address");
- if(m_addressMode == AddressMode::CGRam)
- {
- result = static_cast<uint8_t>(m_cgramAddr);
- }
- else
- {
- auto a = m_dramAddr;
- if(a > 0x53)
- a = 0x53;
- if(a == 20)
- a = 19;
- result = static_cast<uint8_t>(m_dramAddr);
- }
- }
- }
-
- if(changed && m_changeCallback)
- m_changeCallback();
-
- if(cgRamChanged && m_cgRamChangeCallback)
- m_cgRamChangeCallback();
-
- return result;
- }
-
- bool LCD::getCgData(std::array<uint8_t, 8>& _data, uint32_t _charIndex) const
- {
- const auto idx = _charIndex * 8;
- if(idx + 8 >= getCgRam().size())
- return false;
-
- uint32_t j = 0;
-
- for(auto i = idx; i<idx+8; ++i)
- _data[j++] = getCgRam()[i];
-
- return true;
- }
-}
diff --git a/source/wLib/lcd.h b/source/wLib/lcd.h
@@ -1,88 +0,0 @@
-#pragma once
-
-#include <array>
-#include <cstdint>
-#include <functional>
-#include <optional>
-
-namespace wLib
-{
- class LCD
- {
- public:
- using ChangeCallback = std::function<void()>;
-
- LCD();
- std::optional<uint8_t> exec(bool registerSelect, bool read, uint8_t g);
-
- const std::array<char, 40>& getDdRam() const { return m_dramData; }
- const auto& getCgRam() const { return m_cgramData; }
- bool getCgData(std::array<uint8_t, 8>& _data, uint32_t _charIndex) const;
-
- void setChangeCallback(const ChangeCallback& _callback)
- {
- m_changeCallback = _callback;
- }
-
- void setCgRamChangeCallback(const ChangeCallback& _callback)
- {
- m_cgRamChangeCallback = _callback;
- }
- private:
- enum class CursorShiftMode
- {
- CursorLeft,
- CursorRight,
- DisplayLeft,
- DisplayRight
- };
- enum class DisplayShiftMode
- {
- Right,
- Left
- };
- enum class FontTable
- {
- EnglishJapanese,
- WesternEuropean1,
- EnglishRussian,
- WesternEuropean2,
- };
- enum class DataLength
- {
- Bit8,
- Bit4
- };
-
- enum class AddressMode
- {
- DDRam,
- CGRam,
- };
-
- uint32_t m_lastWriteCounter = 0xffffffff;
-
- uint32_t m_cursorPos = 0;
- uint32_t m_dramAddr = 0;
- uint32_t m_cgramAddr = 0;
-
- CursorShiftMode m_cursorShift = CursorShiftMode::CursorLeft;
- DisplayShiftMode m_displayShift = DisplayShiftMode::Left;
- FontTable m_fontTable = FontTable::EnglishJapanese;
- DataLength m_dataLength = DataLength::Bit8;
- AddressMode m_addressMode = AddressMode::DDRam;
-
- bool m_displayOn = true;
- bool m_cursorOn = false;
- bool m_cursorBlinking = false;
-
- int m_addrIncrement = 1;
-
- std::array<uint8_t, 0x40> m_cgramData{};
- std::array<char, 40> m_dramData{};
- uint32_t m_lastOpState = 0;
-
- ChangeCallback m_changeCallback;
- ChangeCallback m_cgRamChangeCallback;
- };
-}
diff --git a/source/wLib/lcdfonts.cpp b/source/wLib/lcdfonts.cpp
@@ -1,2675 +0,0 @@
-#include <cstdint>
-#include <cstddef>
-
-#include <array>
-
-namespace wLib
-{
- constexpr uint8_t g_fontTable0[] =
- {
- // CGRam Data, initially empty
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 0
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 1
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 2
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 3
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 4
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 5
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 6
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 7
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 8
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 9
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 a
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 b
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 c
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 d
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 e
- 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, 0b00000, // 0 f
-
- 0b00000, // 1 0
- 0b10001,
- 0b01001,
- 0b01110,
- 0b10010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 1
- 0b11110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 2
- 0b00110,
- 0b00010,
- 0b00110,
- 0b01010,
- 0b01010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 3
- 0b11111,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 4
- 0b11111,
- 0b00001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 5
- 0b00110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 6
- 0b01110,
- 0b00100,
- 0b01000,
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 7
- 0b11111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 8
- 0b10111,
- 0b10101,
- 0b10101,
- 0b10001,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 9
- 0b00110,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 a
- 0b01111,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 b
- 0b11110,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // 1 c
- 0b11111,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 d
- 0b11111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 e
- 0b10110,
- 0b01001,
- 0b10001,
- 0b10001,
- 0b10111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 1 f
- 0b00110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 0
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 2 1 !
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // 2 2 "
- 0b01010,
- 0b01010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // 2 3 #
- 0b01010,
- 0b11111,
- 0b01010,
- 0b11111,
- 0b01010,
- 0b01010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 2 4 $
- 0b01111,
- 0b10100,
- 0b01110,
- 0b00101,
- 0b11110,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11000, // 2 5 %
- 0b11001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b10011,
- 0b00011,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01100, // 2 6 &
- 0b10010,
- 0b10100,
- 0b01000,
- 0b10101,
- 0b10010,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01100, // 2 7 '
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 2 8 (
- 0b00100,
- 0b01000,
- 0b01000,
- 0b01000,
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // 2 9 )
- 0b00100,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 a *
- 0b00100,
- 0b10101,
- 0b01110,
- 0b10101,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 b +
- 0b00100,
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 c ,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b01100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 d -
- 0b00000,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 e .
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b01100,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 2 f /
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 3 0 0
- 0b10001,
- 0b10011,
- 0b10101,
- 0b11001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 3 1 1
- 0b01100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 3 2 2
- 0b10001,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 3 3 3
- 0b00010,
- 0b00100,
- 0b00010,
- 0b00001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 3 4 4
- 0b00110,
- 0b01010,
- 0b10010,
- 0b11111,
- 0b00010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 3 5 5
- 0b10000,
- 0b11110,
- 0b00001,
- 0b00001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00110, // 3 6 6
- 0b01000,
- 0b10000,
- 0b11110,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 3 7 7
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b01000,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 3 8 8
- 0b10001,
- 0b10001,
- 0b01110,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 3 9 9
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 3 a :
- 0b01100,
- 0b01100,
- 0b00000,
- 0b01100,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 3 b ;
- 0b01100,
- 0b01100,
- 0b00000,
- 0b01100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 3 c <
- 0b00100,
- 0b01000,
- 0b10000,
- 0b01000,
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 3 d =
- 0b00000,
- 0b11111,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // 3 e >
- 0b00100,
- 0b00010,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 3 f ?
- 0b10001,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 0 @
- 0b10001,
- 0b00001,
- 0b01101,
- 0b10101,
- 0b10101,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 1 A
- 0b10001,
- 0b10001,
- 0b10001,
- 0b11111,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11110, // 4 2 B
- 0b10001,
- 0b10001,
- 0b11110,
- 0b10001,
- 0b10001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 3 C
- 0b10001,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11100, // 4 4 D
- 0b10010,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10010,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 4 5 E
- 0b10000,
- 0b10000,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 4 6 F
- 0b10000,
- 0b10000,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 7 G
- 0b10001,
- 0b10000,
- 0b10111,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 4 8 H
- 0b10001,
- 0b10001,
- 0b11111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 9 I
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00111, // 4 a J
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b10010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 4 b K
- 0b10010,
- 0b10100,
- 0b11000,
- 0b10100,
- 0b10010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // 4 c L
- 0b10000,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 4 d M
- 0b11011,
- 0b10101,
- 0b10101,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 4 e N
- 0b10001,
- 0b11001,
- 0b10101,
- 0b10011,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 4 f O
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11110, // 5 0 P
- 0b10001,
- 0b10001,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 5 1 Q
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10101,
- 0b10010,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11110, // 5 2 R
- 0b10001,
- 0b10001,
- 0b11110,
- 0b10100,
- 0b10010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01111, // 5 3 S
- 0b10000,
- 0b10000,
- 0b01110,
- 0b00001,
- 0b00001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 5 4 T
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 5 5 U
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 5 6 V
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10101, // 5 7 W
- 0b10101,
- 0b10101,
- 0b10101,
- 0b10101,
- 0b10101,
- 0b01010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 5 8 X
- 0b10001,
- 0b01010,
- 0b00100,
- 0b01010,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 5 9 Y
- 0b10001,
- 0b10001,
- 0b01010,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // 5 a Z
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b10000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 5 b [
- 0b01000,
- 0b01000,
- 0b01000,
- 0b01000,
- 0b01000,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10001, // 5 c
- 0b01010,
- 0b11111,
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // 5 d ]
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 5 e ^
- 0b01010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 5 f _
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // 6 0 `
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 1 a
- 0b00000,
- 0b01110,
- 0b00001,
- 0b01111,
- 0b10001,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // 6 2 b
- 0b10000,
- 0b10110,
- 0b11001,
- 0b10001,
- 0b10001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 3 c
- 0b00000,
- 0b01110,
- 0b10000,
- 0b10000,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00001, // 6 4 d
- 0b00001,
- 0b01101,
- 0b10011,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 5 e
- 0b00000,
- 0b01110,
- 0b10001,
- 0b11111,
- 0b10000,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00110, // 6 6 f
- 0b01001,
- 0b01000,
- 0b11100,
- 0b01000,
- 0b01000,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 7 g
- 0b01111,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // 6 8 h
- 0b10000,
- 0b10110,
- 0b11001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 6 9 i
- 0b00000,
- 0b01100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 6 a j
- 0b00000,
- 0b00110,
- 0b00010,
- 0b00010,
- 0b10010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // 6 b k
- 0b10000,
- 0b10010,
- 0b10100,
- 0b11000,
- 0b10100,
- 0b10010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01100, // 6 c l
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 d m
- 0b00000,
- 0b11010,
- 0b10101,
- 0b10101,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 e n
- 0b00000,
- 0b10110,
- 0b11001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 6 f o
- 0b00000,
- 0b01110,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 0 p
- 0b00000,
- 0b11110,
- 0b10001,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 1 q
- 0b00000,
- 0b01101,
- 0b10011,
- 0b01111,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 2 r
- 0b00000,
- 0b10110,
- 0b11001,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 3 s
- 0b00000,
- 0b01110,
- 0b10000,
- 0b01110,
- 0b00001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // 7 4 t
- 0b01000,
- 0b11100,
- 0b01000,
- 0b01000,
- 0b01001,
- 0b00110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 5 u
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10011,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 6 v
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 7 w
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10101,
- 0b01010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 8 x
- 0b00000,
- 0b10001,
- 0b01010,
- 0b00100,
- 0b01010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 9 y
- 0b00000,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 a z
- 0b00000,
- 0b11111,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 7 b {
- 0b00100,
- 0b00100,
- 0b01000,
- 0b00100,
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 7 c |
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // 7 d }
- 0b00100,
- 0b00100,
- 0b00010,
- 0b00100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 e ->
- 0b00100,
- 0b00010,
- 0b11111,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 7 f <-
- 0b00100,
- 0b01000,
- 0b11111,
- 0b01000,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 0
- 0b00110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 1
- 0b11111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 2
- 0b10001,
- 0b10001,
- 0b01001,
- 0b00101,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 3
- 0b01111,
- 0b01001,
- 0b01101,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 4
- 0b11111,
- 0b01001,
- 0b01101,
- 0b00001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 5
- 0b01001,
- 0b00110,
- 0b00010,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 6
- 0b10001,
- 0b01010,
- 0b00100,
- 0b00010,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 7
- 0b11111,
- 0b00001,
- 0b10001,
- 0b10110,
- 0b10000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 8
- 0b11111,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 9
- 0b10101,
- 0b10101,
- 0b10101,
- 0b10101,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 a
- 0b01111,
- 0b01001,
- 0b01001,
- 0b01001,
- 0b11001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 8 b
- 0b01001,
- 0b11101,
- 0b00001,
- 0b10001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 c
- 0b00010,
- 0b00000,
- 0b00010,
- 0b00101,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 d
- 0b00000,
- 0b00000,
- 0b00010,
- 0b00101,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // 8 e
- 0b00100,
- 0b01110,
- 0b00000,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 8 f
- 0b00100,
- 0b00000,
- 0b00110,
- 0b01000,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 9 0
- 0b00101,
- 0b11100,
- 0b00000,
- 0b00100,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 1
- 0b00000,
- 0b00100,
- 0b01010,
- 0b00001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 2
- 0b00010,
- 0b00000,
- 0b10011,
- 0b10011,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 3
- 0b00000,
- 0b00000,
- 0b00111,
- 0b00101,
- 0b11011,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 4
- 0b01100,
- 0b00010,
- 0b01001,
- 0b10101,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 9 5
- 0b00000,
- 0b01111,
- 0b01001,
- 0b00110,
- 0b11001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 9 6
- 0b01001,
- 0b11101,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 7
- 0b00101,
- 0b00000,
- 0b00010,
- 0b00101,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 8
- 0b00000,
- 0b00000,
- 0b01100,
- 0b01010,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 9
- 0b01010,
- 0b00000,
- 0b01100,
- 0b01010,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 a
- 0b00000,
- 0b01111,
- 0b01001,
- 0b00110,
- 0b11001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // 9 b
- 0b00000,
- 0b00100,
- 0b01010,
- 0b00001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 c
- 0b00101,
- 0b00000,
- 0b10011,
- 0b10011,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 d
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b11110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // 9 e
- 0b00000,
- 0b00000,
- 0b00100,
- 0b01010,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00110, // 9 f
- 0b11101,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 0
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 1
- 0b00000,
- 0b00000,
- 0b00000,
- 0b11100,
- 0b10100,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00111, // a 2
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 3
- 0b00000,
- 0b00000,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 4
- 0b00000,
- 0b00000,
- 0b00000,
- 0b10000,
- 0b01000,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 5
- 0b00000,
- 0b00000,
- 0b01100,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 6
- 0b11111,
- 0b00001,
- 0b11111,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 7
- 0b00000,
- 0b11111,
- 0b00001,
- 0b00110,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 8
- 0b00000,
- 0b00010,
- 0b00100,
- 0b01100,
- 0b10100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a 9
- 0b00000,
- 0b00100,
- 0b11111,
- 0b10001,
- 0b00001,
- 0b00110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a a
- 0b00000,
- 0b00000,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a b
- 0b00000,
- 0b00010,
- 0b11111,
- 0b00110,
- 0b01010,
- 0b10010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a c
- 0b00000,
- 0b01000,
- 0b11111,
- 0b01001,
- 0b01010,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a d
- 0b00000,
- 0b00000,
- 0b01110,
- 0b00010,
- 0b00010,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // a e
- 0b00000,
- 0b00000,
- 0b11110,
- 0b00010,
- 0b11110,
- 0b00010,
- 0b11110,
- 0b00000,
- 0b00000,
-
- 0b00000, // a f
- 0b00000,
- 0b00000,
- 0b10101,
- 0b10101,
- 0b00001,
- 0b00110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b 0
- 0b00000,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // b 1
- 0b00001,
- 0b00101,
- 0b00110,
- 0b00100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00001, // b 2
- 0b00010,
- 0b00100,
- 0b01100,
- 0b10100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // b 3
- 0b11111,
- 0b10001,
- 0b10001,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b 4
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // b 5
- 0b11111,
- 0b00010,
- 0b00110,
- 0b01010,
- 0b10010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // b 6
- 0b11111,
- 0b01001,
- 0b01001,
- 0b01001,
- 0b01001,
- 0b10010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // b 7
- 0b11111,
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b 8
- 0b01111,
- 0b01001,
- 0b10001,
- 0b00001,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // b 9
- 0b01111,
- 0b10010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b a
- 0b11111,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // b b
- 0b11111,
- 0b01010,
- 0b01010,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b c
- 0b11000,
- 0b00001,
- 0b11001,
- 0b00001,
- 0b00010,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b d
- 0b11111,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b01010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // b e
- 0b11111,
- 0b01001,
- 0b01010,
- 0b01000,
- 0b01000,
- 0b00111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // b f
- 0b10001,
- 0b10001,
- 0b01001,
- 0b00001,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c 0
- 0b01111,
- 0b01001,
- 0b10101,
- 0b00011,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // c 1
- 0b11100,
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c 2
- 0b10101,
- 0b10101,
- 0b10101,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // c 3
- 0b00000,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // c 4
- 0b01000,
- 0b01000,
- 0b01100,
- 0b01010,
- 0b01000,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // c 5
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b01000,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c 6
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c 7
- 0b11111,
- 0b00001,
- 0b01010,
- 0b00100,
- 0b01010,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // c 8
- 0b11111,
- 0b00010,
- 0b00100,
- 0b01110,
- 0b10101,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // c 9
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c a
- 0b00100,
- 0b00010,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10000, // c b
- 0b10000,
- 0b11111,
- 0b10000,
- 0b10000,
- 0b10000,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c c
- 0b11111,
- 0b00001,
- 0b00001,
- 0b00001,
- 0b00010,
- 0b01100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c d
- 0b01000,
- 0b10100,
- 0b00010,
- 0b00001,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // c e
- 0b11111,
- 0b00100,
- 0b10101,
- 0b10101,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // c f
- 0b11111,
- 0b00001,
- 0b00001,
- 0b01010,
- 0b00100,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 0
- 0b01110,
- 0b00000,
- 0b01110,
- 0b00000,
- 0b01110,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 1
- 0b00100,
- 0b01000,
- 0b10000,
- 0b10001,
- 0b11111,
- 0b00001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 2
- 0b00001,
- 0b00001,
- 0b01010,
- 0b00100,
- 0b01010,
- 0b10000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 3
- 0b11111,
- 0b01000,
- 0b11111,
- 0b01000,
- 0b01000,
- 0b00111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // d 4
- 0b01000,
- 0b11111,
- 0b01001,
- 0b01010,
- 0b01000,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 5
- 0b01110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 6
- 0b11111,
- 0b00001,
- 0b11111,
- 0b00001,
- 0b00001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // d 7
- 0b00000,
- 0b11111,
- 0b00001,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b10010, // d 8
- 0b10010,
- 0b10010,
- 0b10010,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d 9
- 0b00100,
- 0b10100,
- 0b10100,
- 0b10100,
- 0b10101,
- 0b10110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d a
- 0b10000,
- 0b10000,
- 0b10001,
- 0b10010,
- 0b10100,
- 0b11000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d b
- 0b11111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d c
- 0b11111,
- 0b10001,
- 0b10001,
- 0b00001,
- 0b00010,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // d d
- 0b11000,
- 0b00000,
- 0b00001,
- 0b00001,
- 0b00010,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00100, // d e
- 0b10010,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11100, // d f
- 0b10100,
- 0b11100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // e 0
- 0b01001,
- 0b10101,
- 0b10010,
- 0b10010,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // e 1
- 0b00000,
- 0b01110,
- 0b00001,
- 0b01111,
- 0b10001,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // e 2
- 0b00000,
- 0b01110,
- 0b10001,
- 0b11110,
- 0b10001,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b10000,
-
- 0b00000, // e 3
- 0b00000,
- 0b01110,
- 0b10000,
- 0b01100,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // e 4
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10011,
- 0b11101,
- 0b10000,
- 0b10000,
- 0b10000,
-
- 0b00000, // e 5
- 0b00000,
- 0b00000,
- 0b01111,
- 0b10100,
- 0b10010,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
-
- 0b00000, // e 6
- 0b00000,
- 0b00110,
- 0b01001,
- 0b10001,
- 0b10001,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b10000,
-
- 0b00000, // e 7
- 0b00000,
- 0b01111,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b00001,
- 0b01110,
-
- 0b00000, // e 8
- 0b00000,
- 0b00111,
- 0b00100,
- 0b00100,
- 0b10100,
- 0b01000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // e 9
- 0b00010,
- 0b11010,
- 0b00010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00010, // e a
- 0b00000,
- 0b00110,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b00010,
- 0b10010,
- 0b01100,
-
- 0b00000, // e b
- 0b10100,
- 0b01000,
- 0b10100,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // e c
- 0b00100,
- 0b01110,
- 0b10100,
- 0b10101,
- 0b01110,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01000, // e d
- 0b01000,
- 0b11100,
- 0b01000,
- 0b11100,
- 0b01000,
- 0b01111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01110, // e e
- 0b00000,
- 0b10110,
- 0b11001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // e f
- 0b00000,
- 0b01110,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f 0
- 0b00000,
- 0b10110,
- 0b11001,
- 0b10001,
- 0b10001,
- 0b11110,
- 0b10000,
- 0b10000,
- 0b10000,
-
- 0b00000, // f 1
- 0b00000,
- 0b01101,
- 0b10011,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b00001,
- 0b00001,
-
- 0b00000, // f 2
- 0b01110,
- 0b10001,
- 0b11111,
- 0b10001,
- 0b10001,
- 0b01110,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f 3
- 0b00000,
- 0b00000,
- 0b01011,
- 0b10101,
- 0b11010,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f 4
- 0b00000,
- 0b01110,
- 0b10001,
- 0b10001,
- 0b01010,
- 0b11011,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b01010, // f 5
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10011,
- 0b01101,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // f 6
- 0b10000,
- 0b01000,
- 0b00100,
- 0b01000,
- 0b10000,
- 0b11111,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f 7
- 0b00000,
- 0b11111,
- 0b01010,
- 0b01010,
- 0b01010,
- 0b10011,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // f 8
- 0b00000,
- 0b10001,
- 0b01010,
- 0b00100,
- 0b01010,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f 9
- 0b00000,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b10001,
- 0b01111,
- 0b00001,
- 0b00001,
- 0b01110,
-
- 0b00000, // f a
- 0b00001,
- 0b11110,
- 0b00100,
- 0b11111,
- 0b00100,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f b
- 0b00000,
- 0b11111,
- 0b01000,
- 0b01111,
- 0b01001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f c
- 0b00000,
- 0b11111,
- 0b10101,
- 0b11111,
- 0b10001,
- 0b10001,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f d
- 0b00000,
- 0b00100,
- 0b00000,
- 0b11111,
- 0b00000,
- 0b00100,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b00000, // f e
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
- 0b00000,
-
- 0b11111, // f f
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- 0b11111,
- };
-
- static_assert(std::size(g_fontTable0) == static_cast<size_t>(256 * 10));
-
- const uint8_t* getCharacterData(const uint8_t _character)
- {
- return &g_fontTable0[static_cast<size_t>(_character) * 10];
- }
-}
diff --git a/source/wLib/lcdfonts.h b/source/wLib/lcdfonts.h
@@ -1,8 +0,0 @@
-#pragma once
-
-#include <cstdint>
-
-namespace wLib
-{
- const uint8_t* getCharacterData(uint8_t _character);
-}
diff --git a/source/xtJucePlugin/xtLcd.cpp b/source/xtJucePlugin/xtLcd.cpp
@@ -4,7 +4,7 @@
#include "jucePluginLib/pluginVersion.h"
-#include "wLib/lcdfonts.h"
+#include "hardwareLib/lcdfonts.h"
namespace
{
@@ -84,7 +84,7 @@ bool XtLcd::getOverrideText(std::vector<std::vector<uint8_t>>& _lines)
const uint8_t* XtLcd::getCharacterData(const uint8_t _character) const
{
- return wLib::getCharacterData(_character);
+ return hwLib::getCharacterData(_character);
}
void XtLcd::setCurrentParameter(const std::string& _name, const std::string& _value)