--- nono/vm/lcd.cpp 2026/04/29 17:04:55 1.1.1.7 +++ nono/vm/lcd.cpp 2026/04/29 17:05:14 1.1.1.10 @@ -9,39 +9,47 @@ // #include "lcd.h" +#include "uimessage.h" -std::unique_ptr gLCD; +// グローバル参照用 +LCDDevice *gLCD; +// コンストラクタ LCDDevice::LCDDevice() : inherited("LCD") { - monitor.func = (MonitorCallback_t)&LCDDevice::MonitorUpdate; + monitor.func = ToMonitorCallback(&LCDDevice::MonitorUpdate); monitor.SetSize(67, 3); monitor.Regist(ID_MONITOR_LCD); } +// デストラクタ LCDDevice::~LCDDevice() { + gLCD = NULL; } -bool -LCDDevice::PowerOff() -{ - // XXX 電源オフは色を落としたほうがいい - memset(ddram, 0x20, sizeof(ddram)); - update++; - return true; -} - +// リセット void -LCDDevice::ResetHard() +LCDDevice::ResetHard(bool poweron) { // とりあえずモニタ画面での表示を消す memset(ddram, 0x20, sizeof(ddram)); // XXX not yet // CGRAM とか信号線とか - update++; + SetAddr(0, false); + + UIMessage::Post(UIMessage::LCD); +} + +// 電源オフ +void +LCDDevice::PowerOff() +{ + // XXX 電源オフは色を落としたほうがいい + memset(ddram, 0x20, sizeof(ddram)); + UIMessage::Post(UIMessage::LCD); } void @@ -52,7 +60,7 @@ LCDDevice::SetRW(bool val) } void -LCDDevice::SetRS(int val) +LCDDevice::SetRS(bool val) { rs = val; putlog(2, "RS = %d", rs); @@ -70,57 +78,126 @@ uint8 LCDDevice::Get() const { return (en ? 0x80 : 0) - | (rs >> 6) + | (rs ? 0x40 : 0) | (rw ? 0x20 : 0); } +// 現在のアドレスでデータレジスタにラッチ +void +LCDDevice::LatchData() +{ + if (addr_is_cgram) { + // cgram は 5 bit 有効で左詰めされている + data_reg = cgram[addr_counter] >> 3; + } else { + data_reg = ddram[addr_counter]; + } +} + +// アドレスカウンタを設定 +void +LCDDevice::SetAddr(int addr, bool is_cgram) +{ + // アドレスカウンタをセットするとデータレジスタにラッチされる + addr_counter = addr; + addr_is_cgram = is_cgram; + LatchData(); +} + +// アドレスカウンタを次へ進める +void +LCDDevice::NextAddr() +{ + // アドレス更新について。 + // DDRAM は各行 0x27 までしか存在していないが、stride が 0x40 バイト。 + // XXX CGRAM が折り返すかどうかは分からないがそのまま DDRAM 領域に + // 行っても困ると思うのでとりあえず。 + + if (addr_is_cgram) { + if (addr_inc) { + addr_counter++; + } else { + addr_counter--; + } + addr_counter &= 0x3f; + } else { + // 2 行モードしかサポートしていない + if (addr_inc) { + addr_counter++; + if (addr_counter == 0x28) { // DDRAM 1行目 + addr_counter = 0x40; + } else if (addr_counter == 0x68) { // DDRAM 2行目 + addr_counter = 0x0; + } + } else { + if (addr_counter == 0x0) { // DDRAM 1行目 + addr_counter = 0x68; + } else if (addr_counter == 0x40) { // DDRAM 2行目 + addr_counter = 0x28; + } + addr_counter--; + } + } + LatchData(); +} + uint8 LCDDevice::Read() { if (en == false || rw == false) { - // XXX どうなるんだろ + // ハイインピーダンス return 0xff; } - if (rs == 0) { + + if (rs == false) { // ステータスレジスタの読み込み // B A A A A A A A // | +-+-+-+-+-+-+-- アドレスカウンタ // +---------------- ビジーフラグ %1=BUSY // XXX ビジーは未実装 - return (addr & 0x7f); + return addr_counter; } else { - putlog(0, "未実装データ読み込み"); + // データレジスタの読み込み + uint8 rv = data_reg; + NextAddr(); + return rv; } - return 0xff; } void LCDDevice::Write(uint8 data) { - if (en == false || rw == true) { - // どうなるんだろ + if (en == false) { + // ハイインピーダンス + return; + } + if (rw == true) { + // LCD はドライブ、PIOもドライブ。ショートが発生して燃える。 + // たまたま値が一致したときだけセーフ。 + putlog(0, "LCD will short out."); return; } - if (rs == 0) { + + if (rs == false) { // コマンド書き込み if ((data & 0x80)) { - addr = data; - putlog(1, "DDRAM アドレスセット $%02x", addr & 0x7f); + SetAddr(data & 0x7f, false); + putlog(1, "DDRAM Address <- $%02x", addr_counter); } else if ((data & 0x40)) { - addr = data; - putlog(1, "CGRAM アドレスセット $%02x", addr & 0x3f); + SetAddr(data & 0x3f, true); + putlog(1, "CGRAM Address <- $%02x", addr_counter); } else if ((data & 0x20)) { // ファンクション・セット // 0x38 (8ビットバス、2行表示、8ライン/行)モードのみサポート if (data != 0x38) { - putlog(0, "コマンド書き込み $%02x ファンクションセット(未実装)", - data); + putlog(0, "Write Command $%02x Function Set (NOT IMPLEMENTED)", data); } } else if ((data & 0x10)) { // カーソル移動 - putlog(0, "コマンド書き込み $%02x カーソル移動(未実装)", data); + putlog(0, "Write Command $%02x Move Cursor (NOT IMPLEMENTED)", + data); } else if ((data & 0x08)) { // 表示ON/OFF // 文字表示 ON/OFF のみサポート @@ -132,47 +209,33 @@ LCDDevice::Write(uint8 data) // XXX 表示シフトは未サポート } else if ((data & 0x02)) { // カーソルホーム - addr = 0x40; + // DDRAM アドレス 0 をセット + SetAddr(0, false); } else if ((data & 0x01)) { // 表示クリア memset(ddram, 0x20, sizeof(ddram)); - addr = 0x40; - update++; + // DDRAM アドレス 0 をセット + SetAddr(0, false); + UIMessage::Post(UIMessage::LCD); } else { // $00 が書き込まれるんだけど、データシートにはないんだよね。 // 無視していいかな。 - putlog(2, "未定義書き込み $%02x", data); + putlog(2, "Write undefined $%02x", data); } } else { - if ((addr & 0x80)) { - putlog(1, "DDRAM データ書き込み X=%d Y=%d <- $%02x", - (addr & 0x7f) % 0x40, (addr & 0x7f) / 0x40, data); - } else { - putlog(1, "CGRAM データ書き込み $%02x <- $%02x", addr & 0x3f, data); - } - ram[addr] = data; - update++; - // アドレス更新 - // DDRAM は各行 0x27 までしか存在していないが、stride が 0x40 バイト。 - // XXX CGRAM が折り返すかどうかは分からないがそのまま DDRAM 領域に - // 行っても困ると思うのでとりあえず。 - if (addr_inc) { - addr++; - if (addr == 0x80) // CGRAM (XXX) - addr = 0x40; - else if (addr == 0x80 + 0x28) // DDRAM 1行目 - addr = 0x80 + 0x40; - else if (addr == 0x80 + 0x68) // DDRAM 2行目 - addr = 0x80 + 0; + // データ書き込み + if (addr_is_cgram) { + // cgram は 5 bit 有効で左詰めで格納 + cgram[addr_counter] = data << 3; + putlog(1, "CGRAM Data $%02x <- $%02x", + addr_counter, data); } else { - addr--; - if (addr == 0x3f) // CGRAM (XXX) - addr = 0x7f; - else if (addr == 0x7f) // DDRAM 1行目 - addr = 0x80 + 0x67; - else if (addr == 0x80 + 0x3f) // DDRAM 2行目 - addr = 0x80 + 0x27; + ddram[addr_counter] = data; + putlog(1, "DDRAM Data X=%2d Y=%d <- $%02x", + addr_counter % 0x40, addr_counter / 0x40, data); } + NextAddr(); + UIMessage::Post(UIMessage::LCD); } } @@ -184,11 +247,13 @@ LCDDevice::Peek() const // XXX どうなるんだろ return 0xff; } - if (rs == 0) { - // XXX ? - return (addr & 0x7f); + if (rs == false) { + // ステータスレジスタをピークする + // XXX ビジーは未実装 + return addr_counter; } else { - // データ読み込みは未実装 + // データレジスタをピークする + return data_reg; } return 0xff; } @@ -290,1736 +355,1739 @@ LCDDevice::GetFont(int ch) const return &CGROM[(ch - 0xa0 + 0x60) * 8]; } +// MSB 側 5 ビットに詰める +#define B(x) (0b##x##000) + /*static*/ const uint8 LCDDevice::CGROM[12 * 16 * 8] = { - 0b000'00000, // 0x20 space - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00100, // 0x21 ! - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00000, - 0b000'00100, - 0, - - 0b000'01010, // 0x22 " - 0b000'01010, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'01010, // 0x23 # - 0b000'01010, - 0b000'11111, - 0b000'01010, - 0b000'11111, - 0b000'01010, - 0b000'01010, - 0, - - 0b000'00100, // 0x24 $ - 0b000'01110, - 0b000'10100, - 0b000'01110, - 0b000'00101, - 0b000'01110, - 0b000'00100, - 0, - - 0b000'11000, // 0x25 % - 0b000'11001, - 0b000'00010, - 0b000'00100, - 0b000'01011, - 0b000'10011, - 0b000'00000, - 0, - - 0b000'01100, // 0x26 & - 0b000'10010, - 0b000'10100, - 0b000'01000, - 0b000'10100, - 0b000'10010, - 0b000'01101, - 0, - - 0b000'01100, // 0x27 ' - 0b000'00100, - 0b000'01000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00010, // 0x28 ( - 0b000'00100, - 0b000'01000, - 0b000'01000, - 0b000'01000, - 0b000'00100, - 0b000'00010, - 0, - - 0b000'01000, // 0x29 ) - 0b000'00100, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0x2a * - 0b000'00100, - 0b000'10101, - 0b000'01110, - 0b000'10101, - 0b000'00100, - 0b000'00000, - 0, - - 0b000'00000, // 0x2b + - 0b000'00100, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00000, - 0, - - 0b000'00000, // 0x2c , - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'01100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0x2d - - 0b000'00000, - 0b000'00000, - 0b000'11111, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0x2e . - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'01100, - 0b000'01100, - 0, - - 0b000'00000, // 0x2f / - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0b000'10000, - 0b000'00000, - 0, - - 0b000'01110, // 0x30 0 - 0b000'10001, - 0b000'10011, - 0b000'10101, - 0b000'11001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'00100, // 0x31 1 - 0b000'01100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01110, - 0, - - 0b000'01110, // 0x32 2 - 0b000'10001, - 0b000'10001, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0b000'11111, - 0, - - 0b000'11111, // 0x33 3 - 0b000'00010, - 0b000'00100, - 0b000'01110, - 0b000'00001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'00010, // 0x34 4 - 0b000'00110, - 0b000'01010, - 0b000'10010, - 0b000'11111, - 0b000'00010, - 0b000'00010, - 0, - - 0b000'11111, // 0x35 5 - 0b000'10000, - 0b000'10000, - 0b000'11110, - 0b000'00001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'00110, // 0x36 6 - 0b000'01000, - 0b000'10000, - 0b000'11110, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'11111, // 0x37 7 - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'01110, // 0x38 8 - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'01110, // 0x39 9 - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0b000'00001, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'00000, // 0x3a : - 0b000'01100, - 0b000'01100, - 0b000'00000, - 0b000'01100, - 0b000'01100, - 0b000'00000, - 0, - - 0b000'00000, // 0x3b ; - 0b000'01100, - 0b000'01100, - 0b000'00000, - 0b000'01100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00010, // 0x3c < - 0b000'00100, - 0b000'01000, - 0b000'10000, - 0b000'01000, - 0b000'00100, - 0b000'00010, - 0, - - 0b000'00000, // 0x3d = - 0b000'00000, - 0b000'11111, - 0b000'00000, - 0b000'11111, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'01000, // 0x3e > - 0b000'00100, - 0b000'00010, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'01110, // 0x3f ? - 0b000'10001, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'00000, - 0b000'00100, - 0, - - 0b000'01110, // 0x40 @ - 0b000'10001, - 0b000'00001, - 0b000'01101, - 0b000'10101, - 0b000'10101, - 0b000'01110, - 0, - - 0b000'01110, // 0x41 A - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'11110, // 0x42 B - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0, - - 0b000'01110, // 0x43 C - 0b000'10001, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'11100, // 0x44 D - 0b000'10010, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10010, - 0b000'11100, - 0, - - 0b000'11111, // 0x45 E - 0b000'10000, - 0b000'10000, - 0b000'11110, - 0b000'10000, - 0b000'10000, - 0b000'11111, - 0, - - 0b000'11111, // 0x46 F - 0b000'10000, - 0b000'10000, - 0b000'11110, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0, - - 0b000'01110, // 0x47 G - 0b000'10001, - 0b000'10000, - 0b000'10011, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'10001, // 0x48 H - 0b000'10001, - 0b000'10001, - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'01110, // 0x49 I - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01110, - 0, - - 0b000'00111, // 0x4a J - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'10010, - 0b000'10010, - 0b000'01100, - 0, - - 0b000'10001, // 0x4b K - 0b000'10010, - 0b000'10100, - 0b000'11000, - 0b000'10100, - 0b000'10010, - 0b000'10001, - 0, - - 0b000'10000, // 0x4c L - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0b000'11111, - 0, - - 0b000'10001, // 0x4d M - 0b000'11011, - 0b000'10101, - 0b000'10101, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'10001, // 0x4e N - 0b000'10001, - 0b000'11001, - 0b000'10101, - 0b000'10011, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'01110, // 0x4f O - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'11110, // 0x50 P - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0, - - 0b000'01110, // 0x51 Q - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10101, - 0b000'10010, - 0b000'01101, - 0, - - 0b000'11110, // 0x52 R - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0b000'10100, - 0b000'10010, - 0b000'10001, - 0, - - 0b000'01111, // 0x53 S - 0b000'10000, - 0b000'10000, - 0b000'01110, - 0b000'00001, - 0b000'00001, - 0b000'11110, - 0, - - 0b000'11111, // 0x54 T - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'10001, // 0x55 U - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'10001, // 0x56 V - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0, - - 0b000'10001, // 0x57 W - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10101, - 0b000'10101, - 0b000'01010, - 0, - - 0b000'10001, // 0x58 X - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0b000'01010, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'10001, // 0x59 Y - 0b000'10001, - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'11111, // 0x5a Z - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0b000'10000, - 0b000'11111, - 0, - - 0b000'01110, // 0x5b [ - 0b000'01000, - 0b000'01000, - 0b000'01000, - 0b000'01000, - 0b000'01000, - 0b000'01110, - 0, - - 0b000'10001, // 0x5c ¥ - 0b000'01010, - 0b000'11111, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'01110, // 0x5d ] - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'01110, - 0, - - 0b000'00100, // 0x5e ^ - 0b000'01010, - 0b000'10001, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0x5f _ - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'11111, - 0, - - 0b000'01000, // 0x60 ` - 0b000'00100, - 0b000'00010, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0x61 a - 0b000'00000, - 0b000'01110, - 0b000'00001, - 0b000'01111, - 0b000'10001, - 0b000'01111, - 0, - - 0b000'10000, // 0x62 b - 0b000'10000, - 0b000'10110, - 0b000'11001, - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0, - - 0b000'00000, // 0x63 c - 0b000'00000, - 0b000'01110, - 0b000'10001, - 0b000'10000, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'00001, // 0x64 d - 0b000'00001, - 0b000'01101, - 0b000'10011, - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0, - - 0b000'00000, // 0x65 e - 0b000'00000, - 0b000'01110, - 0b000'10001, - 0b000'11111, - 0b000'10000, - 0b000'01110, - 0, - - 0b000'00011, // 0x66 f - 0b000'00100, - 0b000'01110, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'00000, // 0x67 g - 0b000'00000, - 0b000'01111, - 0b000'10001, - 0b000'01111, - 0b000'00001, - 0b000'01110, - 0, - - 0b000'10000, // 0x68 h - 0b000'10000, - 0b000'10110, - 0b000'11001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'00100, // 0x69 i - 0b000'00000, - 0b000'01100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01110, - 0, - - 0b000'00010, // 0x6a j - 0b000'00000, - 0b000'00110, - 0b000'00010, - 0b000'00010, - 0b000'10010, - 0b000'01100, - 0, - - 0b000'10000, // 0x6b k - 0b000'10000, - 0b000'10010, - 0b000'10100, - 0b000'11000, - 0b000'10100, - 0b000'10010, - 0, - - 0b000'01100, // 0x6c l - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01110, - 0, - - 0b000'00000, // 0x6d m - 0b000'00000, - 0b000'11010, - 0b000'10101, - 0b000'10101, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'00000, // 0x6e n - 0b000'00000, - 0b000'10110, - 0b000'11001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'00000, // 0x6f o - 0b000'00000, - 0b000'01110, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0, - - 0b000'00000, // 0x70 p - 0b000'00000, - 0b000'11110, - 0b000'10001, - 0b000'11110, - 0b000'10000, - 0b000'10000, - 0, - - 0b000'00000, // 0x71 q - 0b000'00000, - 0b000'01111, - 0b000'10001, - 0b000'01111, - 0b000'00001, - 0b000'00001, - 0, - - 0b000'00000, // 0x72 r - 0b000'00000, - 0b000'10110, - 0b000'11001, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0, - - 0b000'00000, // 0x73 s - 0b000'00000, - 0b000'01110, - 0b000'10000, - 0b000'01110, - 0b000'00001, - 0b000'11110, - 0, - - 0b000'00000, // 0x74 t - 0b000'01000, - 0b000'11110, - 0b000'01000, - 0b000'01000, - 0b000'01000, - 0b000'00110, - 0, - - 0b000'00000, // 0x75 u - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10011, - 0b000'01101, - 0, - - 0b000'00000, // 0x76 v - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0, - - 0b000'00000, // 0x77 w - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10101, - 0b000'10101, - 0b000'01010, - 0, - - 0b000'00000, // 0x78 x - 0b000'00000, - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0b000'01010, - 0b000'10001, - 0, - - 0b000'00000, // 0x79 y - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0b000'00001, - 0b000'01110, - 0, - - 0b000'00000, // 0x7a z - 0b000'00000, - 0b000'11111, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0b000'11111, - 0, - - 0b000'00010, // 0x7b { - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0b000'00100, - 0b000'00100, - 0b000'00010, - 0, - - 0b000'00100, // 0x7c | - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'01000, // 0x7d } - 0b000'00100, - 0b000'00100, - 0b000'00010, - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0x7e → - 0b000'00100, - 0b000'00010, - 0b000'11111, - 0b000'00010, - 0b000'00100, - 0b000'00000, - 0, - - 0b000'00000, // 0x7f ← - 0b000'00100, - 0b000'01000, - 0b000'11111, - 0b000'01000, - 0b000'00100, - 0b000'00000, - 0, - - - 0b000'00000, // 0xa0 space - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0xa1 。 - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'11100, - 0b000'10100, - 0b000'11100, - 0, - - 0b000'00111, // 0xa2 「 - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0xa3 」 - 0b000'00000, - 0b000'00000, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'11100, - 0, - - 0b000'00000, // 0xa4 、 - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'10000, - 0b000'01000, - 0b000'00100, - 0, - - 0b000'00000, // 0xa5 ・ - 0b000'00000, - 0b000'00000, - 0b000'01100, - 0b000'01100, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0xa6 ヲ - 0b000'11111, - 0b000'00001, - 0b000'01111, - 0b000'00001, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'00000, // 0xa7 ァ - 0b000'00000, - 0b000'11111, - 0b000'00001, - 0b000'00110, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xa8 ィ - 0b000'00000, - 0b000'00010, - 0b000'00100, - 0b000'01100, - 0b000'10100, - 0b000'00100, - 0, - - 0b000'00000, // 0xa9 ゥ - 0b000'00000, - 0b000'00100, - 0b000'11111, - 0b000'10001, - 0b000'00001, - 0b000'00110, - 0, - - 0b000'00000, // 0xaa ェ - 0b000'00000, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'11111, - 0, - - 0b000'00000, // 0xab ォ - 0b000'00000, - 0b000'00010, - 0b000'11111, - 0b000'00110, - 0b000'01010, - 0b000'10010, - 0, - - 0b000'00000, // 0xac ャ - 0b000'00000, - 0b000'01000, - 0b000'11111, - 0b000'01001, - 0b000'01010, - 0b000'01000, - 0, - - 0b000'00000, // 0xad ュ - 0b000'00000, - 0b000'00000, - 0b000'11110, - 0b000'00010, - 0b000'00010, - 0b000'11111, - 0, - - 0b000'00000, // 0xae ョ - 0b000'00000, - 0b000'11111, - 0b000'00001, - 0b000'11111, - 0b000'00001, - 0b000'11111, - 0, - - 0b000'00000, // 0xaf ッ - 0b000'00000, - 0b000'10101, - 0b000'10101, - 0b000'00001, - 0b000'00001, - 0b000'00110, - 0, - - 0b000'00000, // 0xb0 ー - 0b000'00000, - 0b000'10000, - 0b000'01111, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'00000, // 0xb1 ア - 0b000'11111, - 0b000'00001, - 0b000'00101, - 0b000'00110, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00001, // 0xb2 イ - 0b000'00010, - 0b000'00100, - 0b000'01100, - 0b000'10100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'00100, // 0xb3 ウ - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0, - - 0b000'00000, // 0xb4 エ - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'11111, - 0, - - 0b000'00010, // 0xb5 オ - 0b000'11111, - 0b000'00010, - 0b000'00110, - 0b000'01010, - 0b000'10010, - 0b000'00010, - 0, - - 0b000'01000, // 0xb6 カ - 0b000'11111, - 0b000'01001, - 0b000'01001, - 0b000'01001, - 0b000'01001, - 0b000'10010, - 0, - - 0b000'00100, // 0xb7 キ - 0b000'11111, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0, - - 0b000'00000, // 0xb8 ク - 0b000'01111, - 0b000'01001, - 0b000'10001, - 0b000'00001, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'01000, // 0xb9 ケ - 0b000'01111, - 0b000'10010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00100, - 0, - - 0b000'00000, // 0xba コ - 0b000'11111, - 0b000'00001, - 0b000'00001, - 0b000'00001, - 0b000'00001, - 0b000'11111, - 0, - - 0b000'01010, // 0xbb サ - 0b000'11111, - 0b000'01010, - 0b000'01010, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xbc シ - 0b000'11001, - 0b000'00001, - 0b000'11001, - 0b000'00001, - 0b000'00010, - 0b000'11100, - 0, - - 0b000'00000, // 0xbd ス - 0b000'11111, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0b000'01010, - 0b000'10001, - 0, - - 0b000'01000, // 0xbe セ - 0b000'11111, - 0b000'01001, - 0b000'01001, - 0b000'01010, - 0b000'01000, - 0b000'00110, - 0, - - 0b000'00000, // 0xbf ソ - 0b000'10001, - 0b000'10001, - 0b000'01001, - 0b000'00001, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'00000, // 0xc0 タ - 0b000'01111, - 0b000'01001, - 0b000'10101, - 0b000'00011, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'00010, // 0xc1 チ - 0b000'01100, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xc2 ツ - 0b000'10101, - 0b000'10101, - 0b000'10101, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0, - - 0b000'01110, // 0xc3 テ - 0b000'00000, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'01000, // 0xc4 ト - 0b000'01000, - 0b000'01000, - 0b000'01100, - 0b000'01010, - 0b000'01000, - 0b000'01000, - 0, - - 0b000'00100, // 0xc5 ナ - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xc6 ニ - 0b000'01110, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'11111, - 0, - - 0b000'00000, // 0xc7 ヌ - 0b000'11111, - 0b000'00001, - 0b000'01010, - 0b000'00100, - 0b000'01010, - 0b000'10001, - 0, - - 0b000'00100, // 0xc8 ネ - 0b000'11111, - 0b000'00010, - 0b000'00100, - 0b000'01110, - 0b000'10101, - 0b000'00100, - 0, - - 0b000'00000, // 0xc9 ノ - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xca ハ - 0b000'00100, - 0b000'00010, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0, - - 0b000'00000, // 0xcb ヒ - 0b000'10000, - 0b000'11111, - 0b000'10000, - 0b000'10000, - 0b000'10000, - 0b000'01111, - 0, - - 0b000'00000, // 0xcc フ - 0b000'11111, - 0b000'00001, - 0b000'00001, - 0b000'00001, - 0b000'00010, - 0b000'01100, - 0, - - 0b000'00000, // 0xcd ヘ - 0b000'01000, - 0b000'10100, - 0b000'10010, - 0b000'00001, - 0b000'00001, - 0b000'00000, - 0, - - 0b000'00100, // 0xce ホ - 0b000'11111, - 0b000'00100, - 0b000'10101, - 0b000'10101, - 0b000'10101, - 0b000'00100, - 0, - - 0b000'00000, // 0xcf マ - 0b000'11111, - 0b000'00001, - 0b000'00001, - 0b000'01010, - 0b000'00100, - 0b000'00010, - 0, - - 0b000'00000, // 0xd0 ミ - 0b000'01110, - 0b000'00000, - 0b000'01110, - 0b000'00000, - 0b000'01110, - 0b000'00001, - 0, - - 0b000'00000, // 0xd1 ム - 0b000'00100, - 0b000'00100, - 0b000'01000, - 0b000'01001, - 0b000'10011, - 0b000'11101, - 0, - - 0b000'00000, // 0xd2 メ - 0b000'00001, - 0b000'00001, - 0b000'00101, - 0b000'00010, - 0b000'00101, - 0b000'11000, - 0, - - 0b000'00000, // 0xd3 モ - 0b000'11111, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00011, - 0, - - 0b000'01000, // 0xd4 ヤ - 0b000'01000, - 0b000'11111, - 0b000'01001, - 0b000'01010, - 0b000'01000, - 0b000'01000, - 0, - - 0b000'00000, // 0xd5 ユ - 0b000'01110, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'11111, - 0, - - 0b000'00000, // 0xd6 ヨ - 0b000'11111, - 0b000'00001, - 0b000'01111, - 0b000'00001, - 0b000'00001, - 0b000'11111, - 0, - - 0b000'01110, // 0xd7 ラ - 0b000'00000, - 0b000'11111, - 0b000'00001, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0, - - 0b000'00000, // 0xd8 リ - 0b000'10010, - 0b000'10010, - 0b000'10010, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0, - - 0b000'00000, // 0xd9 ル - 0b000'00100, - 0b000'10100, - 0b000'10100, - 0b000'10101, - 0b000'10101, - 0b000'00110, - 0, - - 0b000'00000, // 0xda レ - 0b000'10000, - 0b000'10000, - 0b000'10001, - 0b000'10010, - 0b000'10100, - 0b000'11000, - 0, - - 0b000'00000, // 0xdb ロ - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'11111, - 0, - - 0b000'00000, // 0xdc ワ - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'00001, - 0b000'00010, - 0b000'00100, - 0, - - 0b000'00000, // 0xdd ン - 0b000'11000, - 0b000'00000, - 0b000'00001, - 0b000'00001, - 0b000'00010, - 0b000'11100, - 0, - - 0b000'00100, // 0xde ゛ - 0b000'10010, - 0b000'01000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, - - 0b000'11100, // 0xdf ゜ - 0b000'10100, - 0b000'11100, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0, + B(00000), // 0x20 space + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(00100), // 0x21 ! + B(00100), + B(00100), + B(00100), + B(00100), + B(00000), + B(00100), + B(0), + + B(01010), // 0x22 " + B(01010), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(01010), // 0x23 # + B(01010), + B(11111), + B(01010), + B(11111), + B(01010), + B(01010), + B(0), + + B(00100), // 0x24 $ + B(01110), + B(10100), + B(01110), + B(00101), + B(01110), + B(00100), + B(0), + + B(11000), // 0x25 % + B(11001), + B(00010), + B(00100), + B(01011), + B(10011), + B(00000), + B(0), + + B(01100), // 0x26 & + B(10010), + B(10100), + B(01000), + B(10100), + B(10010), + B(01101), + B(0), + + B(01100), // 0x27 ' + B(00100), + B(01000), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(00010), // 0x28 ( + B(00100), + B(01000), + B(01000), + B(01000), + B(00100), + B(00010), + B(0), + + B(01000), // 0x29 ) + B(00100), + B(00010), + B(00010), + B(00010), + B(00100), + B(01000), + B(0), + + B(00000), // 0x2a * + B(00100), + B(10101), + B(01110), + B(10101), + B(00100), + B(00000), + B(0), + + B(00000), // 0x2b + + B(00100), + B(00100), + B(11111), + B(00100), + B(00100), + B(00000), + B(0), + + B(00000), // 0x2c , + B(00000), + B(00000), + B(00000), + B(01100), + B(00100), + B(01000), + B(0), + + B(00000), // 0x2d - + B(00000), + B(00000), + B(11111), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0x2e . + B(00000), + B(00000), + B(00000), + B(00000), + B(01100), + B(01100), + B(0), + + B(00000), // 0x2f / + B(00001), + B(00010), + B(00100), + B(01000), + B(10000), + B(00000), + B(0), + + B(01110), // 0x30 0 + B(10001), + B(10011), + B(10101), + B(11001), + B(10001), + B(01110), + B(0), + + B(00100), // 0x31 1 + B(01100), + B(00100), + B(00100), + B(00100), + B(00100), + B(01110), + B(0), + + B(01110), // 0x32 2 + B(10001), + B(10001), + B(00010), + B(00100), + B(01000), + B(11111), + B(0), + + B(11111), // 0x33 3 + B(00010), + B(00100), + B(01110), + B(00001), + B(10001), + B(01110), + B(0), + + B(00010), // 0x34 4 + B(00110), + B(01010), + B(10010), + B(11111), + B(00010), + B(00010), + B(0), + + B(11111), // 0x35 5 + B(10000), + B(10000), + B(11110), + B(00001), + B(10001), + B(01110), + B(0), + + B(00110), // 0x36 6 + B(01000), + B(10000), + B(11110), + B(10001), + B(10001), + B(01110), + B(0), + + B(11111), // 0x37 7 + B(00001), + B(00010), + B(00100), + B(00100), + B(00100), + B(00100), + B(0), + + B(01110), // 0x38 8 + B(10001), + B(10001), + B(01110), + B(10001), + B(10001), + B(01110), + B(0), + + B(01110), // 0x39 9 + B(10001), + B(10001), + B(01111), + B(00001), + B(00010), + B(01100), + B(0), + + B(00000), // 0x3a : + B(01100), + B(01100), + B(00000), + B(01100), + B(01100), + B(00000), + B(0), + + B(00000), // 0x3b ; + B(01100), + B(01100), + B(00000), + B(01100), + B(00100), + B(01000), + B(0), + + B(00010), // 0x3c < + B(00100), + B(01000), + B(10000), + B(01000), + B(00100), + B(00010), + B(0), + + B(00000), // 0x3d = + B(00000), + B(11111), + B(00000), + B(11111), + B(00000), + B(00000), + B(0), + + B(01000), // 0x3e > + B(00100), + B(00010), + B(00001), + B(00010), + B(00100), + B(01000), + B(0), + + B(01110), // 0x3f ? + B(10001), + B(00001), + B(00010), + B(00100), + B(00000), + B(00100), + B(0), + + B(01110), // 0x40 @ + B(10001), + B(00001), + B(01101), + B(10101), + B(10101), + B(01110), + B(0), + + B(01110), // 0x41 A + B(10001), + B(10001), + B(10001), + B(11111), + B(10001), + B(10001), + B(0), + + B(11110), // 0x42 B + B(10001), + B(10001), + B(11110), + B(10001), + B(10001), + B(11110), + B(0), + + B(01110), // 0x43 C + B(10001), + B(10000), + B(10000), + B(10000), + B(10001), + B(01110), + B(0), + + B(11100), // 0x44 D + B(10010), + B(10001), + B(10001), + B(10001), + B(10010), + B(11100), + B(0), + + B(11111), // 0x45 E + B(10000), + B(10000), + B(11110), + B(10000), + B(10000), + B(11111), + B(0), + + B(11111), // 0x46 F + B(10000), + B(10000), + B(11110), + B(10000), + B(10000), + B(10000), + B(0), + + B(01110), // 0x47 G + B(10001), + B(10000), + B(10011), + B(10001), + B(10001), + B(01110), + B(0), + + B(10001), // 0x48 H + B(10001), + B(10001), + B(11111), + B(10001), + B(10001), + B(10001), + B(0), + + B(01110), // 0x49 I + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(01110), + B(0), + + B(00111), // 0x4a J + B(00010), + B(00010), + B(00010), + B(10010), + B(10010), + B(01100), + B(0), + + B(10001), // 0x4b K + B(10010), + B(10100), + B(11000), + B(10100), + B(10010), + B(10001), + B(0), + + B(10000), // 0x4c L + B(10000), + B(10000), + B(10000), + B(10000), + B(10000), + B(11111), + B(0), + + B(10001), // 0x4d M + B(11011), + B(10101), + B(10101), + B(10001), + B(10001), + B(10001), + B(0), + + B(10001), // 0x4e N + B(10001), + B(11001), + B(10101), + B(10011), + B(10001), + B(10001), + B(0), + + B(01110), // 0x4f O + B(10001), + B(10001), + B(10001), + B(10001), + B(10001), + B(01110), + B(0), + + B(11110), // 0x50 P + B(10001), + B(10001), + B(11110), + B(10000), + B(10000), + B(10000), + B(0), + + B(01110), // 0x51 Q + B(10001), + B(10001), + B(10001), + B(10101), + B(10010), + B(01101), + B(0), + + B(11110), // 0x52 R + B(10001), + B(10001), + B(11110), + B(10100), + B(10010), + B(10001), + B(0), + + B(01111), // 0x53 S + B(10000), + B(10000), + B(01110), + B(00001), + B(00001), + B(11110), + B(0), + + B(11111), // 0x54 T + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(0), + + B(10001), // 0x55 U + B(10001), + B(10001), + B(10001), + B(10001), + B(10001), + B(01110), + B(0), + + B(10001), // 0x56 V + B(10001), + B(10001), + B(10001), + B(10001), + B(01010), + B(00100), + B(0), + + B(10001), // 0x57 W + B(10001), + B(10001), + B(10001), + B(10101), + B(10101), + B(01010), + B(0), + + B(10001), // 0x58 X + B(10001), + B(01010), + B(00100), + B(01010), + B(10001), + B(10001), + B(0), + + B(10001), // 0x59 Y + B(10001), + B(10001), + B(01010), + B(00100), + B(00100), + B(00100), + B(0), + + B(11111), // 0x5a Z + B(00001), + B(00010), + B(00100), + B(01000), + B(10000), + B(11111), + B(0), + + B(01110), // 0x5b [ + B(01000), + B(01000), + B(01000), + B(01000), + B(01000), + B(01110), + B(0), + + B(10001), // 0x5c ¥ + B(01010), + B(11111), + B(00100), + B(11111), + B(00100), + B(00100), + B(0), + + B(01110), // 0x5d ] + B(00010), + B(00010), + B(00010), + B(00010), + B(00010), + B(01110), + B(0), + + B(00100), // 0x5e ^ + B(01010), + B(10001), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0x5f _ + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(11111), + B(0), + + B(01000), // 0x60 ` + B(00100), + B(00010), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0x61 a + B(00000), + B(01110), + B(00001), + B(01111), + B(10001), + B(01111), + B(0), + + B(10000), // 0x62 b + B(10000), + B(10110), + B(11001), + B(10001), + B(10001), + B(11110), + B(0), + + B(00000), // 0x63 c + B(00000), + B(01110), + B(10001), + B(10000), + B(10001), + B(01110), + B(0), + + B(00001), // 0x64 d + B(00001), + B(01101), + B(10011), + B(10001), + B(10001), + B(01111), + B(0), + + B(00000), // 0x65 e + B(00000), + B(01110), + B(10001), + B(11111), + B(10000), + B(01110), + B(0), + + B(00011), // 0x66 f + B(00100), + B(01110), + B(00100), + B(00100), + B(00100), + B(00100), + B(0), + + B(00000), // 0x67 g + B(00000), + B(01111), + B(10001), + B(01111), + B(00001), + B(01110), + B(0), + + B(10000), // 0x68 h + B(10000), + B(10110), + B(11001), + B(10001), + B(10001), + B(10001), + B(0), + + B(00100), // 0x69 i + B(00000), + B(01100), + B(00100), + B(00100), + B(00100), + B(01110), + B(0), + + B(00010), // 0x6a j + B(00000), + B(00110), + B(00010), + B(00010), + B(10010), + B(01100), + B(0), + + B(10000), // 0x6b k + B(10000), + B(10010), + B(10100), + B(11000), + B(10100), + B(10010), + B(0), + + B(01100), // 0x6c l + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(01110), + B(0), + + B(00000), // 0x6d m + B(00000), + B(11010), + B(10101), + B(10101), + B(10001), + B(10001), + B(0), + + B(00000), // 0x6e n + B(00000), + B(10110), + B(11001), + B(10001), + B(10001), + B(10001), + B(0), + + B(00000), // 0x6f o + B(00000), + B(01110), + B(10001), + B(10001), + B(10001), + B(01110), + B(0), + + B(00000), // 0x70 p + B(00000), + B(11110), + B(10001), + B(11110), + B(10000), + B(10000), + B(0), + + B(00000), // 0x71 q + B(00000), + B(01111), + B(10001), + B(01111), + B(00001), + B(00001), + B(0), + + B(00000), // 0x72 r + B(00000), + B(10110), + B(11001), + B(10000), + B(10000), + B(10000), + B(0), + + B(00000), // 0x73 s + B(00000), + B(01110), + B(10000), + B(01110), + B(00001), + B(11110), + B(0), + + B(00000), // 0x74 t + B(01000), + B(11110), + B(01000), + B(01000), + B(01000), + B(00110), + B(0), + + B(00000), // 0x75 u + B(00000), + B(10001), + B(10001), + B(10001), + B(10011), + B(01101), + B(0), + + B(00000), // 0x76 v + B(00000), + B(10001), + B(10001), + B(10001), + B(01010), + B(00100), + B(0), + + B(00000), // 0x77 w + B(00000), + B(10001), + B(10001), + B(10101), + B(10101), + B(01010), + B(0), + + B(00000), // 0x78 x + B(00000), + B(10001), + B(01010), + B(00100), + B(01010), + B(10001), + B(0), + + B(00000), // 0x79 y + B(00000), + B(10001), + B(10001), + B(01111), + B(00001), + B(01110), + B(0), + + B(00000), // 0x7a z + B(00000), + B(11111), + B(00010), + B(00100), + B(01000), + B(11111), + B(0), + + B(00010), // 0x7b { + B(00100), + B(00100), + B(01000), + B(00100), + B(00100), + B(00010), + B(0), + + B(00100), // 0x7c | + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(00100), + B(0), + + B(01000), // 0x7d } + B(00100), + B(00100), + B(00010), + B(00100), + B(00100), + B(01000), + B(0), + + B(00000), // 0x7e → + B(00100), + B(00010), + B(11111), + B(00010), + B(00100), + B(00000), + B(0), + + B(00000), // 0x7f ← + B(00100), + B(01000), + B(11111), + B(01000), + B(00100), + B(00000), + B(0), + + + B(00000), // 0xa0 space + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0xa1 。 + B(00000), + B(00000), + B(00000), + B(11100), + B(10100), + B(11100), + B(0), + + B(00111), // 0xa2 「 + B(00100), + B(00100), + B(00100), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0xa3 」 + B(00000), + B(00000), + B(00100), + B(00100), + B(00100), + B(11100), + B(0), + + B(00000), // 0xa4 、 + B(00000), + B(00000), + B(00000), + B(10000), + B(01000), + B(00100), + B(0), + + B(00000), // 0xa5 ・ + B(00000), + B(00000), + B(01100), + B(01100), + B(00000), + B(00000), + B(0), + + B(00000), // 0xa6 ヲ + B(11111), + B(00001), + B(01111), + B(00001), + B(00010), + B(01100), + B(0), + + B(00000), // 0xa7 ァ + B(00000), + B(11111), + B(00001), + B(00110), + B(00100), + B(01000), + B(0), + + B(00000), // 0xa8 ィ + B(00000), + B(00010), + B(00100), + B(01100), + B(10100), + B(00100), + B(0), + + B(00000), // 0xa9 ゥ + B(00000), + B(00100), + B(11111), + B(10001), + B(00001), + B(00110), + B(0), + + B(00000), // 0xaa ェ + B(00000), + B(11111), + B(00100), + B(00100), + B(00100), + B(11111), + B(0), + + B(00000), // 0xab ォ + B(00000), + B(00010), + B(11111), + B(00110), + B(01010), + B(10010), + B(0), + + B(00000), // 0xac ャ + B(00000), + B(01000), + B(11111), + B(01001), + B(01010), + B(01000), + B(0), + + B(00000), // 0xad ュ + B(00000), + B(00000), + B(11110), + B(00010), + B(00010), + B(11111), + B(0), + + B(00000), // 0xae ョ + B(00000), + B(11111), + B(00001), + B(11111), + B(00001), + B(11111), + B(0), + + B(00000), // 0xaf ッ + B(00000), + B(10101), + B(10101), + B(00001), + B(00001), + B(00110), + B(0), + + B(00000), // 0xb0 ー + B(00000), + B(10000), + B(01111), + B(00000), + B(00000), + B(00000), + B(0), + + B(00000), // 0xb1 ア + B(11111), + B(00001), + B(00101), + B(00110), + B(00100), + B(01000), + B(0), + + B(00001), // 0xb2 イ + B(00010), + B(00100), + B(01100), + B(10100), + B(00100), + B(00100), + B(0), + + B(00100), // 0xb3 ウ + B(11111), + B(10001), + B(10001), + B(00001), + B(00010), + B(00100), + B(0), + + B(00000), // 0xb4 エ + B(11111), + B(00100), + B(00100), + B(00100), + B(00100), + B(11111), + B(0), + + B(00010), // 0xb5 オ + B(11111), + B(00010), + B(00110), + B(01010), + B(10010), + B(00010), + B(0), + + B(01000), // 0xb6 カ + B(11111), + B(01001), + B(01001), + B(01001), + B(01001), + B(10010), + B(0), + + B(00100), // 0xb7 キ + B(11111), + B(00100), + B(11111), + B(00100), + B(00100), + B(00100), + B(0), + + B(00000), // 0xb8 ク + B(01111), + B(01001), + B(10001), + B(00001), + B(00010), + B(01100), + B(0), + + B(01000), // 0xb9 ケ + B(01111), + B(10010), + B(00010), + B(00010), + B(00010), + B(00100), + B(0), + + B(00000), // 0xba コ + B(11111), + B(00001), + B(00001), + B(00001), + B(00001), + B(11111), + B(0), + + B(01010), // 0xbb サ + B(11111), + B(01010), + B(01010), + B(00010), + B(00100), + B(01000), + B(0), + + B(00000), // 0xbc シ + B(11001), + B(00001), + B(11001), + B(00001), + B(00010), + B(11100), + B(0), + + B(00000), // 0xbd ス + B(11111), + B(00001), + B(00010), + B(00100), + B(01010), + B(10001), + B(0), + + B(01000), // 0xbe セ + B(11111), + B(01001), + B(01001), + B(01010), + B(01000), + B(00110), + B(0), + + B(00000), // 0xbf ソ + B(10001), + B(10001), + B(01001), + B(00001), + B(00010), + B(01100), + B(0), + + B(00000), // 0xc0 タ + B(01111), + B(01001), + B(10101), + B(00011), + B(00010), + B(01100), + B(0), + + B(00010), // 0xc1 チ + B(01100), + B(00100), + B(11111), + B(00100), + B(00100), + B(01000), + B(0), + + B(00000), // 0xc2 ツ + B(10101), + B(10101), + B(10101), + B(00001), + B(00010), + B(00100), + B(0), + + B(01110), // 0xc3 テ + B(00000), + B(11111), + B(00100), + B(00100), + B(00100), + B(01000), + B(0), + + B(01000), // 0xc4 ト + B(01000), + B(01000), + B(01100), + B(01010), + B(01000), + B(01000), + B(0), + + B(00100), // 0xc5 ナ + B(00100), + B(11111), + B(00100), + B(00100), + B(00100), + B(01000), + B(0), + + B(00000), // 0xc6 ニ + B(01110), + B(00000), + B(00000), + B(00000), + B(00000), + B(11111), + B(0), + + B(00000), // 0xc7 ヌ + B(11111), + B(00001), + B(01010), + B(00100), + B(01010), + B(10001), + B(0), + + B(00100), // 0xc8 ネ + B(11111), + B(00010), + B(00100), + B(01110), + B(10101), + B(00100), + B(0), + + B(00000), // 0xc9 ノ + B(00010), + B(00010), + B(00010), + B(00010), + B(00100), + B(01000), + B(0), + + B(00000), // 0xca ハ + B(00100), + B(00010), + B(10001), + B(10001), + B(10001), + B(10001), + B(0), + + B(00000), // 0xcb ヒ + B(10000), + B(11111), + B(10000), + B(10000), + B(10000), + B(01111), + B(0), + + B(00000), // 0xcc フ + B(11111), + B(00001), + B(00001), + B(00001), + B(00010), + B(01100), + B(0), + + B(00000), // 0xcd ヘ + B(01000), + B(10100), + B(10010), + B(00001), + B(00001), + B(00000), + B(0), + + B(00100), // 0xce ホ + B(11111), + B(00100), + B(10101), + B(10101), + B(10101), + B(00100), + B(0), + + B(00000), // 0xcf マ + B(11111), + B(00001), + B(00001), + B(01010), + B(00100), + B(00010), + B(0), + + B(00000), // 0xd0 ミ + B(01110), + B(00000), + B(01110), + B(00000), + B(01110), + B(00001), + B(0), + + B(00000), // 0xd1 ム + B(00100), + B(00100), + B(01000), + B(01001), + B(10011), + B(11101), + B(0), + + B(00000), // 0xd2 メ + B(00001), + B(00001), + B(00101), + B(00010), + B(00101), + B(11000), + B(0), + + B(00000), // 0xd3 モ + B(11111), + B(00100), + B(11111), + B(00100), + B(00100), + B(00011), + B(0), + + B(01000), // 0xd4 ヤ + B(01000), + B(11111), + B(01001), + B(01010), + B(01000), + B(01000), + B(0), + + B(00000), // 0xd5 ユ + B(01110), + B(00010), + B(00010), + B(00010), + B(00010), + B(11111), + B(0), + + B(00000), // 0xd6 ヨ + B(11111), + B(00001), + B(01111), + B(00001), + B(00001), + B(11111), + B(0), + + B(01110), // 0xd7 ラ + B(00000), + B(11111), + B(00001), + B(00001), + B(00010), + B(00100), + B(0), + + B(00000), // 0xd8 リ + B(10010), + B(10010), + B(10010), + B(00010), + B(00100), + B(01000), + B(0), + + B(00000), // 0xd9 ル + B(00100), + B(10100), + B(10100), + B(10101), + B(10101), + B(00110), + B(0), + + B(00000), // 0xda レ + B(10000), + B(10000), + B(10001), + B(10010), + B(10100), + B(11000), + B(0), + + B(00000), // 0xdb ロ + B(11111), + B(10001), + B(10001), + B(10001), + B(10001), + B(11111), + B(0), + + B(00000), // 0xdc ワ + B(11111), + B(10001), + B(10001), + B(00001), + B(00010), + B(00100), + B(0), + + B(00000), // 0xdd ン + B(11000), + B(00000), + B(00001), + B(00001), + B(00010), + B(11100), + B(0), + + B(00100), // 0xde ゛ + B(10010), + B(01000), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), + + B(11100), // 0xdf ゜ + B(10100), + B(11100), + B(00000), + B(00000), + B(00000), + B(00000), + B(0), // ここから実際には 5x10 dot も混ざるが、現在はサポートしていない - 0b000'00000, // 0xe0 α - 0b000'00000, - 0b000'00001, - 0b000'01101, - 0b000'10010, - 0b000'10010, - 0b000'01101, - 0b000'00000, - - 0b000'01010, // 0xe1 a‥(Latin Small Letter A with Diaeresis) - 0b000'00000, - 0b000'01110, - 0b000'00001, - 0b000'01111, - 0b000'10001, - 0b000'01111, - 0b000'00000, - - 0b000'00000, // 0xe2 β (10dot) - 0b000'00000, - 0b000'01110, - 0b000'10001, - 0b000'11110, - 0b000'10001, - 0b000'11110, - 0b000'10000, - - 0b000'00000, // 0xe3 ε - 0b000'00000, - 0b000'01110, - 0b000'10000, - 0b000'01110, - 0b000'10000, - 0b000'01110, - 0b000'00000, - - 0b000'00000, // 0xe4 μ (10dot) - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10011, - 0b000'11101, - 0b000'10000, - - 0b000'00000, // 0xe5 σ - 0b000'00000, - 0b000'01111, - 0b000'10010, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0b000'00000, - - 0b000'00000, // 0xe6 ρ (10dot) - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'00000, // 0xe7 g (10dot ver) - 0b000'00000, - 0b000'01111, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0b000'00001, - - 0b000'00000, // 0xe8 √(?) - 0b000'00111, - 0b000'00100, - 0b000'00100, - 0b000'10100, - 0b000'01000, - 0b000'00000, - 0b000'00000, - - 0b000'00000, // 0xe9 ^(-1) (?) - 0b000'00010, - 0b000'11010, - 0b000'00010, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'00010, // 0xea j (10dot ver) - 0b000'00000, - 0b000'00110, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - 0b000'00010, - - 0b000'00000, // 0xeb ^x (?) - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'00000, // 0xec ¢ - 0b000'00100, - 0b000'01110, - 0b000'10100, - 0b000'10101, - 0b000'01110, - 0b000'00100, - 0b000'00000, - - 0b000'00000, // 0xed L= (U+26c0 だろうか?) - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'00000, // 0xee n ̄(n マクロン?) - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'01010, // 0xef o‥(Latin Small Letter O with Diaeresis) - 0b000'00000, - 0b000'01110, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0b000'00000, - - 0b000'00000, // 0xf0 p (10dot ver) - 0b000'00000, - 0b000'10110, - 0b000'11001, - 0b000'10001, - 0b000'10001, - 0b000'11110, - 0b000'10000, - - 0b000'00000, // 0xf1 q (10dot ver) - 0b000'00000, - 0b000'01101, - 0b000'10011, - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0b000'00001, - - 0b000'01110, // 0xf2 θ(?) - 0b000'10001, - 0b000'10001, - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'01110, - 0b000'00000, - - 0b000'00000, // 0xf3 ∞(?) - 0b000'00000, - 0b000'01010, - 0b000'10101, - 0b000'10101, - 0b000'01010, - 0b000'00000, - 0b000'00000, - - 0b000'00000, // 0xf4 Ω - 0b000'01110, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01010, - 0b000'11011, - 0b000'00000, - - 0b000'01010, // 0xf5 u‥(?) - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10011, - 0b000'01101, - 0b000'00000, - - 0b000'11111, // 0xf6 Σ - 0b000'01000, - 0b000'00100, - 0b000'00010, - 0b000'00100, - 0b000'01000, - 0b000'11111, - 0b000'00000, - - 0b000'00000, // 0xf7 π - 0b000'00000, - 0b000'11111, - 0b000'01010, - 0b000'01010, - 0b000'01010, - 0b000'10011, - 0b000'00000, - - 0b000'11111, // 0xf8 x ̄(?) - 0b000'00000, - 0b000'10001, - 0b000'01010, - 0b000'00100, - 0b000'01010, - 0b000'10001, - 0b000'00000, - - 0b000'00000, // 0xf9 y (10dot ver) - 0b000'00000, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'10001, - 0b000'01111, - 0b000'00001, - - 0b000'00000, // 0xfa 千 - 0b000'00001, - 0b000'01110, - 0b000'00100, - 0b000'11111, - 0b000'00100, - 0b000'00100, - 0b000'00000, - - 0b000'00000, // 0xfb 万 - 0b000'11111, - 0b000'01000, - 0b000'01111, - 0b000'01001, - 0b000'01001, - 0b000'10001, - 0b000'00000, - - 0b000'00000, // 0xfc 円 - 0b000'11111, - 0b000'10101, - 0b000'10101, - 0b000'11111, - 0b000'10001, - 0b000'10001, - 0b000'00000, - - 0b000'00000, // 0xfd ÷ - 0b000'00000, - 0b000'00100, - 0b000'00000, - 0b000'11111, - 0b000'00000, - 0b000'00100, - 0b000'00000, - - 0b000'00000, // 0xfe space - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - 0b000'00000, - - 0b000'11111, // 0xff cursor - 0b000'11111, - 0b000'11111, - 0b000'11111, - 0b000'11111, - 0b000'11111, - 0b000'11111, - 0b000'11111, + B(00000), // 0xe0 α + B(00000), + B(00001), + B(01101), + B(10010), + B(10010), + B(01101), + B(00000), + + B(01010), // 0xe1 a‥(Latin Small Letter A with Diaeresis) + B(00000), + B(01110), + B(00001), + B(01111), + B(10001), + B(01111), + B(00000), + + B(00000), // 0xe2 β (10dot) + B(00000), + B(01110), + B(10001), + B(11110), + B(10001), + B(11110), + B(10000), + + B(00000), // 0xe3 ε + B(00000), + B(01110), + B(10000), + B(01110), + B(10000), + B(01110), + B(00000), + + B(00000), // 0xe4 μ (10dot) + B(00000), + B(10001), + B(10001), + B(10001), + B(10011), + B(11101), + B(10000), + + B(00000), // 0xe5 σ + B(00000), + B(01111), + B(10010), + B(10001), + B(10001), + B(01110), + B(00000), + + B(00000), // 0xe6 ρ (10dot) + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + + B(00000), // 0xe7 g (10dot ver) + B(00000), + B(01111), + B(10001), + B(10001), + B(10001), + B(01111), + B(00001), + + B(00000), // 0xe8 √(?) + B(00111), + B(00100), + B(00100), + B(10100), + B(01000), + B(00000), + B(00000), + + B(00000), // 0xe9 ^(-1) (?) + B(00010), + B(11010), + B(00010), + B(00000), + B(00000), + B(00000), + B(00000), + + B(00010), // 0xea j (10dot ver) + B(00000), + B(00110), + B(00010), + B(00010), + B(00010), + B(00010), + B(00010), + + B(00000), // 0xeb ^x (?) + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + + B(00000), // 0xec ¢ + B(00100), + B(01110), + B(10100), + B(10101), + B(01110), + B(00100), + B(00000), + + B(00000), // 0xed L= (U+26c0 だろうか?) + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + + B(00000), // 0xee n ̄(n マクロン?) + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + + B(01010), // 0xef o‥(Latin Small Letter O with Diaeresis) + B(00000), + B(01110), + B(10001), + B(10001), + B(10001), + B(01110), + B(00000), + + B(00000), // 0xf0 p (10dot ver) + B(00000), + B(10110), + B(11001), + B(10001), + B(10001), + B(11110), + B(10000), + + B(00000), // 0xf1 q (10dot ver) + B(00000), + B(01101), + B(10011), + B(10001), + B(10001), + B(01111), + B(00001), + + B(01110), // 0xf2 θ(?) + B(10001), + B(10001), + B(11111), + B(10001), + B(10001), + B(01110), + B(00000), + + B(00000), // 0xf3 ∞(?) + B(00000), + B(01010), + B(10101), + B(10101), + B(01010), + B(00000), + B(00000), + + B(00000), // 0xf4 Ω + B(01110), + B(10001), + B(10001), + B(10001), + B(01010), + B(11011), + B(00000), + + B(01010), // 0xf5 u‥(?) + B(00000), + B(10001), + B(10001), + B(10001), + B(10011), + B(01101), + B(00000), + + B(11111), // 0xf6 Σ + B(01000), + B(00100), + B(00010), + B(00100), + B(01000), + B(11111), + B(00000), + + B(00000), // 0xf7 π + B(00000), + B(11111), + B(01010), + B(01010), + B(01010), + B(10011), + B(00000), + + B(11111), // 0xf8 x ̄(?) + B(00000), + B(10001), + B(01010), + B(00100), + B(01010), + B(10001), + B(00000), + + B(00000), // 0xf9 y (10dot ver) + B(00000), + B(10001), + B(10001), + B(10001), + B(10001), + B(01111), + B(00001), + + B(00000), // 0xfa 千 + B(00001), + B(01110), + B(00100), + B(11111), + B(00100), + B(00100), + B(00000), + + B(00000), // 0xfb 万 + B(11111), + B(01000), + B(01111), + B(01001), + B(01001), + B(10001), + B(00000), + + B(00000), // 0xfc 円 + B(11111), + B(10101), + B(10101), + B(11111), + B(10001), + B(10001), + B(00000), + + B(00000), // 0xfd ÷ + B(00000), + B(00100), + B(00000), + B(11111), + B(00000), + B(00100), + B(00000), + + B(00000), // 0xfe space + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + B(00000), + + B(11111), // 0xff cursor + B(11111), + B(11111), + B(11111), + B(11111), + B(11111), + B(11111), + B(11111), };