|
|
1.1 root 1: //
2: // nono
1.1.1.3 root 3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
1.1 root 5: //
6:
1.1.1.4 root 7: //
8: // LCD (HD44780)
9: //
10:
1.1 root 11: #include "lcd.h"
1.1.1.8 ! root 12: #include "uimessage.h"
1.1 root 13:
1.1.1.2 root 14: std::unique_ptr<LCDDevice> gLCD;
1.1 root 15:
16: LCDDevice::LCDDevice()
1.1.1.7 root 17: : inherited("LCD")
1.1 root 18: {
1.1.1.7 root 19: monitor.func = (MonitorCallback_t)&LCDDevice::MonitorUpdate;
20: monitor.SetSize(67, 3);
21: monitor.Regist(ID_MONITOR_LCD);
1.1 root 22: }
23:
24: LCDDevice::~LCDDevice()
25: {
26: }
27:
28: bool
29: LCDDevice::PowerOff()
30: {
1.1.1.5 root 31: // XXX 電源オフは色を落としたほうがいい
1.1 root 32: memset(ddram, 0x20, sizeof(ddram));
1.1.1.8 ! root 33: UIMessage::Post(UIMessage::LCD);
1.1 root 34: return true;
35: }
36:
37: void
1.1.1.5 root 38: LCDDevice::ResetHard()
39: {
40: // とりあえずモニタ画面での表示を消す
41: memset(ddram, 0x20, sizeof(ddram));
42: // XXX not yet
43: // CGRAM とか信号線とか
44:
1.1.1.8 ! root 45: SetAddr(0, false);
! 46:
! 47: UIMessage::Post(UIMessage::LCD);
1.1.1.5 root 48: }
49:
50: void
1.1 root 51: LCDDevice::SetRW(bool val)
52: {
53: rw = val;
54: putlog(2, "R/W = %c", val ? 'R' : 'W');
55: }
56:
57: void
1.1.1.8 ! root 58: LCDDevice::SetRS(bool val)
1.1 root 59: {
60: rs = val;
61: putlog(2, "RS = %d", rs);
62: }
63:
64: void
65: LCDDevice::SetE(bool val)
66: {
67: en = val;
68: putlog(2, "E = %d", en);
69: }
70:
71: // E, RS, R/W 線の状態を取得する (PIO1 のポートC 読み込み用)
72: uint8
73: LCDDevice::Get() const
74: {
75: return (en ? 0x80 : 0)
1.1.1.8 ! root 76: | (rs ? 0x40 : 0)
1.1 root 77: | (rw ? 0x20 : 0);
78: }
79:
1.1.1.8 ! root 80: // 現在のアドレスでデータレジスタにラッチ
! 81: void
! 82: LCDDevice::LatchData()
! 83: {
! 84: if (addr_is_cgram) {
! 85: data_reg = cgram[addr_counter];
! 86: } else {
! 87: data_reg = ddram[addr_counter];
! 88: }
! 89: }
! 90:
! 91: // アドレスカウンタを設定
! 92: void
! 93: LCDDevice::SetAddr(int addr, bool is_cgram)
! 94: {
! 95: // アドレスカウンタをセットするとデータレジスタにラッチされる
! 96: addr_counter = addr;
! 97: addr_is_cgram = is_cgram;
! 98: LatchData();
! 99: }
! 100:
! 101: // アドレスカウンタを次へ進める
! 102: void
! 103: LCDDevice::NextAddr()
! 104: {
! 105: // アドレス更新について。
! 106: // DDRAM は各行 0x27 までしか存在していないが、stride が 0x40 バイト。
! 107: // XXX CGRAM が折り返すかどうかは分からないがそのまま DDRAM 領域に
! 108: // 行っても困ると思うのでとりあえず。
! 109:
! 110: if (addr_is_cgram) {
! 111: if (addr_inc) {
! 112: addr_counter++;
! 113: } else {
! 114: addr_counter--;
! 115: }
! 116: addr_counter &= 0x3f;
! 117: } else {
! 118: // 2 行モードしかサポートしていない
! 119: if (addr_inc) {
! 120: addr_counter++;
! 121: if (addr_counter == 0x28) { // DDRAM 1行目
! 122: addr_counter = 0x40;
! 123: } else if (addr_counter == 0x68) { // DDRAM 2行目
! 124: addr_counter = 0x0;
! 125: }
! 126: } else {
! 127: if (addr_counter == 0x0) { // DDRAM 1行目
! 128: addr_counter = 0x68;
! 129: } else if (addr_counter == 0x40) { // DDRAM 2行目
! 130: addr_counter = 0x28;
! 131: }
! 132: addr_counter--;
! 133: }
! 134: }
! 135: LatchData();
! 136: }
! 137:
1.1 root 138: uint8
139: LCDDevice::Read()
140: {
141: if (en == false || rw == false) {
1.1.1.8 ! root 142: // ハイインピーダンス
1.1 root 143: return 0xff;
144: }
1.1.1.8 ! root 145:
! 146: if (rs == false) {
1.1 root 147: // ステータスレジスタの読み込み
148: // B A A A A A A A
149: // | +-+-+-+-+-+-+-- アドレスカウンタ
150: // +---------------- ビジーフラグ %1=BUSY
151:
152: // XXX ビジーは未実装
1.1.1.8 ! root 153: return addr_counter;
1.1 root 154: } else {
1.1.1.8 ! root 155: // データレジスタの読み込み
! 156: uint8 rv = data_reg;
! 157: NextAddr();
! 158: return rv;
1.1 root 159: }
160: }
161:
162: void
163: LCDDevice::Write(uint8 data)
164: {
1.1.1.8 ! root 165: if (en == false) {
! 166: // ハイインピーダンス
1.1 root 167: return;
168: }
1.1.1.8 ! root 169: if (rw == true) {
! 170: // LCD はドライブ、PIOもドライブ。ショートが発生して燃える。
! 171: // たまたま値が一致したときだけセーフ。
! 172: putlog(0, "LCD will short out.");
! 173: return;
! 174: }
! 175:
! 176: if (rs == false) {
1.1 root 177: // コマンド書き込み
1.1.1.4 root 178:
1.1 root 179: if ((data & 0x80)) {
1.1.1.8 ! root 180: SetAddr(data & 0x7f, false);
! 181: putlog(1, "DDRAM アドレスセット $%02x", addr_counter);
1.1 root 182: } else if ((data & 0x40)) {
1.1.1.8 ! root 183: SetAddr(data & 0x3f, true);
! 184: putlog(1, "CGRAM アドレスセット $%02x", addr_counter);
1.1 root 185: } else if ((data & 0x20)) {
186: // ファンクション・セット
187: // 0x38 (8ビットバス、2行表示、8ライン/行)モードのみサポート
188: if (data != 0x38) {
189: putlog(0, "コマンド書き込み $%02x ファンクションセット(未実装)",
190: data);
191: }
192: } else if ((data & 0x10)) {
193: // カーソル移動
194: putlog(0, "コマンド書き込み $%02x カーソル移動(未実装)", data);
195: } else if ((data & 0x08)) {
196: // 表示ON/OFF
197: // 文字表示 ON/OFF のみサポート
198: disp_char = (data & 0x04);
199: // XXX それ以外は未サポート
200: } else if ((data & 0x04)) {
201: // エントリモード
202: addr_inc = (data & 0x02);
203: // XXX 表示シフトは未サポート
204: } else if ((data & 0x02)) {
205: // カーソルホーム
1.1.1.8 ! root 206: // DDRAM アドレス 0 をセット
! 207: SetAddr(0, false);
1.1 root 208: } else if ((data & 0x01)) {
209: // 表示クリア
210: memset(ddram, 0x20, sizeof(ddram));
1.1.1.8 ! root 211: // DDRAM アドレス 0 をセット
! 212: SetAddr(0, false);
! 213: UIMessage::Post(UIMessage::LCD);
1.1 root 214: } else {
215: // $00 が書き込まれるんだけど、データシートにはないんだよね。
216: // 無視していいかな。
217: putlog(2, "未定義書き込み $%02x", data);
218: }
219: } else {
1.1.1.8 ! root 220: // データ書き込み
! 221: if (addr_is_cgram) {
! 222: cgram[addr_counter] = data;
! 223: putlog(1, "CGRAM データ書き込み $%02x <- $%02x",
! 224: addr_counter, data);
1.1.1.4 root 225: } else {
1.1.1.8 ! root 226: ddram[addr_counter] = data;
! 227: putlog(1, "DDRAM データ書き込み X=%d Y=%d <- $%02x",
! 228: addr_counter % 0x40, addr_counter / 0x40, data);
1.1 root 229: }
1.1.1.8 ! root 230: NextAddr();
! 231: UIMessage::Post(UIMessage::LCD);
1.1 root 232: }
233: }
234:
1.1.1.2 root 235: // PIO1 からのピーク用
236: uint8
237: LCDDevice::Peek() const
238: {
239: if (en == false || rw == false) {
240: // XXX どうなるんだろ
241: return 0xff;
242: }
1.1.1.8 ! root 243: if (rs == false) {
! 244: // ステータスレジスタをピークする
! 245: // XXX ビジーは未実装
! 246: return addr_counter;
1.1.1.2 root 247: } else {
1.1.1.8 ! root 248: // データレジスタをピークする
! 249: return data_reg;
1.1.1.2 root 250: }
251: return 0xff;
252: }
253:
1.1.1.4 root 254: void
1.1.1.7 root 255: LCDDevice::MonitorUpdate(Monitor *, TextScreen &screen)
1.1 root 256: {
257: char buf[17];
258:
1.1.1.4 root 259: // 0 1 2 3 4 5 6
260: // 01234567890123456789012345678901234567890123456789012345678901234567
261: // RW=R RS=0 E=0
262: // 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |0123456789abcdef|
263: // 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f |0123456789abcdef|
264:
1.1.1.7 root 265: screen.Clear();
266: screen.Print(0, 0, "RW=%c RS=%d E=%d", rw ? 'R' : 'W', rs, en);
1.1 root 267:
268: for (int y = 0; y < 2; y++) {
269: memcpy(buf, &ddram[y * 0x40], 16);
270: buf[16] = '\0';
1.1.1.4 root 271: // 16進を表示する端から文字ダンプ用に加工していく
272: for (int x = 0; x < 16; x++) {
1.1.1.7 root 273: screen.Print(x * 3 + (x / 8), y + 1, "%02x", buf[x]);
1.1.1.4 root 274: if (buf[x] < 0x20 || buf[x] > 0x7e) {
275: buf[x] = '.';
276: }
277: }
1.1.1.7 root 278: screen.Print(49, y + 1, "|%-16s|", buf);
1.1 root 279: }
280: }
1.1.1.4 root 281:
282: // CGROM は ROM A00 版のみ考慮する (A02 版との共存は今の所考えない)。
283: // A00 版は以下のような配置になっている。
284: //
285: // +0+1+2+3+4+5+6+7+8+9+a+b+c+d+e+f
286: // 0x00 <------------ CGRAM ----------->
287: // 0x10
288: // 0x20 ! " # $ % & ' ( ) * + , - . /
289: // 0x30 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
290: // 0x40 @ A B C D E F G H I J K L M N O
291: // 0x50 P Q R S T U V W X Y Z [ \ ] ^ _
292: // 0x60 ` a b c d e f g h i j k l m n o
293: // 0x70 p q r s t u v w x y z { | } →←
294: // 0x80
295: // 0x90
296: // 0xa0 。「」、・ヲァィゥェォャュョッ
297: // 0xb0 ーアイウエオカキクケコサシスセソ
298: // 0xc0 タチツテトナニヌネノハヒフヘホマ
299: // 0xd0 ミムメモヤユヨラリルレロワン゛゜
300: // 0xe0 <---- 5x10 ギリシャ文字など --->
301: // 0xf0 <---- 5x10 ギリシャ文字など --->
302: //
303: // 0x00 〜 0x07 は 8文字の CGRAM で、0x08 〜 0x0f には同じものが見える。
304: // 0x20〜0x7f と 0xa0〜0xdf までが 5x7 フォント、
305: // 0xe0〜0xff は 5x7 フォントと 5x10 フォントが混在している。
306: // 5x7 フォントは、メモリとしては 5x8 分(8バイト) を使用し、一番下のラインを
307: // 常に空白としておく (LCD の1行自体が 5x8 で構成されており、一番下が
308: // カーソル用に予約されているため)。
309: // 一方 5x10 フォントのカーソルはこのフォントの一つ下に表示するので 5x11
310: // フォントのうち一番下のラインがカーソル用とも言える。5x10 モードはサポート
311: // しないので、サイズを揃えるため上から 5x8 分のデータだけを保持することにする。
312: // (5x10 モードをサポートする時になんとかすること)
313: //
314: // 空き領域が多いこと、どのみち CGRAM 部分を考慮する必要があること、それと
315: // もし 5x10 モードをサポートする場合には途中でライン数が変わることなどから、
316: // フォントデータの取得は生データに直接アクセスさせるのではなく、1文字ずつ
317: // フォントデータのアドレスを返す方式にする。
318:
319: // 文字コード ch のフォントデータ(の先頭アドレス) を取得する。
320: //
321: // 連続する 8 バイトがフォントデータで、下位側(右側) 5ビットのみ有効。
322: // 9バイト目が次の文字の1バイト目であることは保証していないので必ず1文字ごと
323: // に呼び出すこと。また CGRAM 領域のように動的に変化する場合もあるため
324: // 呼び出し側でこの読み出し値をキャッシュしないこと。
325: const uint8 *
326: LCDDevice::GetFont(int ch) const
327: {
328: // CGRAM 部分
329: if (ch < 0x10) {
330: ch &= 0x07;
331: return &cgram[ch * 8];
332: }
333:
334: if (ch < 0x20) {
335: return &CGROM[0]; // space
336: }
337:
338: // ASCII 部分
339: if (ch < 0x80) {
340: return &CGROM[(ch - 0x20) * 8];
341: }
342:
343: if (ch < 0xa0) {
344: return &CGROM[0]; // space
345: }
346:
347: // カナ以降
348: return &CGROM[(ch - 0xa0 + 0x60) * 8];
349: }
350:
351: /*static*/ const uint8 LCDDevice::CGROM[12 * 16 * 8] =
352: {
353: 0b000'00000, // 0x20 space
354: 0b000'00000,
355: 0b000'00000,
356: 0b000'00000,
357: 0b000'00000,
358: 0b000'00000,
359: 0b000'00000,
360: 0,
361:
362: 0b000'00100, // 0x21 !
363: 0b000'00100,
364: 0b000'00100,
365: 0b000'00100,
366: 0b000'00100,
367: 0b000'00000,
368: 0b000'00100,
369: 0,
370:
371: 0b000'01010, // 0x22 "
372: 0b000'01010,
373: 0b000'00000,
374: 0b000'00000,
375: 0b000'00000,
376: 0b000'00000,
377: 0b000'00000,
378: 0,
379:
380: 0b000'01010, // 0x23 #
381: 0b000'01010,
382: 0b000'11111,
383: 0b000'01010,
384: 0b000'11111,
385: 0b000'01010,
386: 0b000'01010,
387: 0,
388:
389: 0b000'00100, // 0x24 $
390: 0b000'01110,
391: 0b000'10100,
392: 0b000'01110,
393: 0b000'00101,
394: 0b000'01110,
395: 0b000'00100,
396: 0,
397:
398: 0b000'11000, // 0x25 %
399: 0b000'11001,
400: 0b000'00010,
401: 0b000'00100,
402: 0b000'01011,
403: 0b000'10011,
404: 0b000'00000,
405: 0,
406:
407: 0b000'01100, // 0x26 &
408: 0b000'10010,
409: 0b000'10100,
410: 0b000'01000,
411: 0b000'10100,
412: 0b000'10010,
413: 0b000'01101,
414: 0,
415:
416: 0b000'01100, // 0x27 '
417: 0b000'00100,
418: 0b000'01000,
419: 0b000'00000,
420: 0b000'00000,
421: 0b000'00000,
422: 0b000'00000,
423: 0,
424:
425: 0b000'00010, // 0x28 (
426: 0b000'00100,
427: 0b000'01000,
428: 0b000'01000,
429: 0b000'01000,
430: 0b000'00100,
431: 0b000'00010,
432: 0,
433:
434: 0b000'01000, // 0x29 )
435: 0b000'00100,
436: 0b000'00010,
437: 0b000'00010,
438: 0b000'00010,
439: 0b000'00100,
440: 0b000'01000,
441: 0,
442:
443: 0b000'00000, // 0x2a *
444: 0b000'00100,
445: 0b000'10101,
446: 0b000'01110,
447: 0b000'10101,
448: 0b000'00100,
449: 0b000'00000,
450: 0,
451:
452: 0b000'00000, // 0x2b +
453: 0b000'00100,
454: 0b000'00100,
455: 0b000'11111,
456: 0b000'00100,
457: 0b000'00100,
458: 0b000'00000,
459: 0,
460:
461: 0b000'00000, // 0x2c ,
462: 0b000'00000,
463: 0b000'00000,
464: 0b000'00000,
465: 0b000'01100,
466: 0b000'00100,
467: 0b000'01000,
468: 0,
469:
470: 0b000'00000, // 0x2d -
471: 0b000'00000,
472: 0b000'00000,
473: 0b000'11111,
474: 0b000'00000,
475: 0b000'00000,
476: 0b000'00000,
477: 0,
478:
479: 0b000'00000, // 0x2e .
480: 0b000'00000,
481: 0b000'00000,
482: 0b000'00000,
483: 0b000'00000,
484: 0b000'01100,
485: 0b000'01100,
486: 0,
487:
488: 0b000'00000, // 0x2f /
489: 0b000'00001,
490: 0b000'00010,
491: 0b000'00100,
492: 0b000'01000,
493: 0b000'10000,
494: 0b000'00000,
495: 0,
496:
497: 0b000'01110, // 0x30 0
498: 0b000'10001,
499: 0b000'10011,
500: 0b000'10101,
501: 0b000'11001,
502: 0b000'10001,
503: 0b000'01110,
504: 0,
505:
506: 0b000'00100, // 0x31 1
507: 0b000'01100,
508: 0b000'00100,
509: 0b000'00100,
510: 0b000'00100,
511: 0b000'00100,
512: 0b000'01110,
513: 0,
514:
515: 0b000'01110, // 0x32 2
516: 0b000'10001,
517: 0b000'10001,
518: 0b000'00010,
519: 0b000'00100,
520: 0b000'01000,
521: 0b000'11111,
522: 0,
523:
524: 0b000'11111, // 0x33 3
525: 0b000'00010,
526: 0b000'00100,
527: 0b000'01110,
528: 0b000'00001,
529: 0b000'10001,
530: 0b000'01110,
531: 0,
532:
533: 0b000'00010, // 0x34 4
534: 0b000'00110,
535: 0b000'01010,
536: 0b000'10010,
537: 0b000'11111,
538: 0b000'00010,
539: 0b000'00010,
540: 0,
541:
542: 0b000'11111, // 0x35 5
543: 0b000'10000,
544: 0b000'10000,
545: 0b000'11110,
546: 0b000'00001,
547: 0b000'10001,
548: 0b000'01110,
549: 0,
550:
551: 0b000'00110, // 0x36 6
552: 0b000'01000,
553: 0b000'10000,
554: 0b000'11110,
555: 0b000'10001,
556: 0b000'10001,
557: 0b000'01110,
558: 0,
559:
560: 0b000'11111, // 0x37 7
561: 0b000'00001,
562: 0b000'00010,
563: 0b000'00100,
564: 0b000'00100,
565: 0b000'00100,
566: 0b000'00100,
567: 0,
568:
569: 0b000'01110, // 0x38 8
570: 0b000'10001,
571: 0b000'10001,
572: 0b000'01110,
573: 0b000'10001,
574: 0b000'10001,
575: 0b000'01110,
576: 0,
577:
578: 0b000'01110, // 0x39 9
579: 0b000'10001,
580: 0b000'10001,
581: 0b000'01111,
582: 0b000'00001,
583: 0b000'00010,
584: 0b000'01100,
585: 0,
586:
587: 0b000'00000, // 0x3a :
588: 0b000'01100,
589: 0b000'01100,
590: 0b000'00000,
591: 0b000'01100,
592: 0b000'01100,
593: 0b000'00000,
594: 0,
595:
596: 0b000'00000, // 0x3b ;
597: 0b000'01100,
598: 0b000'01100,
599: 0b000'00000,
600: 0b000'01100,
601: 0b000'00100,
602: 0b000'01000,
603: 0,
604:
605: 0b000'00010, // 0x3c <
606: 0b000'00100,
607: 0b000'01000,
608: 0b000'10000,
609: 0b000'01000,
610: 0b000'00100,
611: 0b000'00010,
612: 0,
613:
614: 0b000'00000, // 0x3d =
615: 0b000'00000,
616: 0b000'11111,
617: 0b000'00000,
618: 0b000'11111,
619: 0b000'00000,
620: 0b000'00000,
621: 0,
622:
623: 0b000'01000, // 0x3e >
624: 0b000'00100,
625: 0b000'00010,
626: 0b000'00001,
627: 0b000'00010,
628: 0b000'00100,
629: 0b000'01000,
630: 0,
631:
632: 0b000'01110, // 0x3f ?
633: 0b000'10001,
634: 0b000'00001,
635: 0b000'00010,
636: 0b000'00100,
637: 0b000'00000,
638: 0b000'00100,
639: 0,
640:
641: 0b000'01110, // 0x40 @
642: 0b000'10001,
643: 0b000'00001,
644: 0b000'01101,
645: 0b000'10101,
646: 0b000'10101,
647: 0b000'01110,
648: 0,
649:
650: 0b000'01110, // 0x41 A
651: 0b000'10001,
652: 0b000'10001,
653: 0b000'10001,
654: 0b000'11111,
655: 0b000'10001,
656: 0b000'10001,
657: 0,
658:
659: 0b000'11110, // 0x42 B
660: 0b000'10001,
661: 0b000'10001,
662: 0b000'11110,
663: 0b000'10001,
664: 0b000'10001,
665: 0b000'11110,
666: 0,
667:
668: 0b000'01110, // 0x43 C
669: 0b000'10001,
670: 0b000'10000,
671: 0b000'10000,
672: 0b000'10000,
673: 0b000'10001,
674: 0b000'01110,
675: 0,
676:
677: 0b000'11100, // 0x44 D
678: 0b000'10010,
679: 0b000'10001,
680: 0b000'10001,
681: 0b000'10001,
682: 0b000'10010,
683: 0b000'11100,
684: 0,
685:
686: 0b000'11111, // 0x45 E
687: 0b000'10000,
688: 0b000'10000,
689: 0b000'11110,
690: 0b000'10000,
691: 0b000'10000,
692: 0b000'11111,
693: 0,
694:
695: 0b000'11111, // 0x46 F
696: 0b000'10000,
697: 0b000'10000,
698: 0b000'11110,
699: 0b000'10000,
700: 0b000'10000,
701: 0b000'10000,
702: 0,
703:
704: 0b000'01110, // 0x47 G
705: 0b000'10001,
706: 0b000'10000,
707: 0b000'10011,
708: 0b000'10001,
709: 0b000'10001,
710: 0b000'01110,
711: 0,
712:
713: 0b000'10001, // 0x48 H
714: 0b000'10001,
715: 0b000'10001,
716: 0b000'11111,
717: 0b000'10001,
718: 0b000'10001,
719: 0b000'10001,
720: 0,
721:
722: 0b000'01110, // 0x49 I
723: 0b000'00100,
724: 0b000'00100,
725: 0b000'00100,
726: 0b000'00100,
727: 0b000'00100,
728: 0b000'01110,
729: 0,
730:
731: 0b000'00111, // 0x4a J
732: 0b000'00010,
733: 0b000'00010,
734: 0b000'00010,
735: 0b000'10010,
736: 0b000'10010,
737: 0b000'01100,
738: 0,
739:
740: 0b000'10001, // 0x4b K
741: 0b000'10010,
742: 0b000'10100,
743: 0b000'11000,
744: 0b000'10100,
745: 0b000'10010,
746: 0b000'10001,
747: 0,
748:
749: 0b000'10000, // 0x4c L
750: 0b000'10000,
751: 0b000'10000,
752: 0b000'10000,
753: 0b000'10000,
754: 0b000'10000,
755: 0b000'11111,
756: 0,
757:
758: 0b000'10001, // 0x4d M
759: 0b000'11011,
760: 0b000'10101,
761: 0b000'10101,
762: 0b000'10001,
763: 0b000'10001,
764: 0b000'10001,
765: 0,
766:
767: 0b000'10001, // 0x4e N
768: 0b000'10001,
769: 0b000'11001,
770: 0b000'10101,
771: 0b000'10011,
772: 0b000'10001,
773: 0b000'10001,
774: 0,
775:
776: 0b000'01110, // 0x4f O
777: 0b000'10001,
778: 0b000'10001,
779: 0b000'10001,
780: 0b000'10001,
781: 0b000'10001,
782: 0b000'01110,
783: 0,
784:
785: 0b000'11110, // 0x50 P
786: 0b000'10001,
787: 0b000'10001,
788: 0b000'11110,
789: 0b000'10000,
790: 0b000'10000,
791: 0b000'10000,
792: 0,
793:
794: 0b000'01110, // 0x51 Q
795: 0b000'10001,
796: 0b000'10001,
797: 0b000'10001,
798: 0b000'10101,
799: 0b000'10010,
800: 0b000'01101,
801: 0,
802:
803: 0b000'11110, // 0x52 R
804: 0b000'10001,
805: 0b000'10001,
806: 0b000'11110,
807: 0b000'10100,
808: 0b000'10010,
809: 0b000'10001,
810: 0,
811:
812: 0b000'01111, // 0x53 S
813: 0b000'10000,
814: 0b000'10000,
815: 0b000'01110,
816: 0b000'00001,
817: 0b000'00001,
818: 0b000'11110,
819: 0,
820:
821: 0b000'11111, // 0x54 T
822: 0b000'00100,
823: 0b000'00100,
824: 0b000'00100,
825: 0b000'00100,
826: 0b000'00100,
827: 0b000'00100,
828: 0,
829:
830: 0b000'10001, // 0x55 U
831: 0b000'10001,
832: 0b000'10001,
833: 0b000'10001,
834: 0b000'10001,
835: 0b000'10001,
836: 0b000'01110,
837: 0,
838:
839: 0b000'10001, // 0x56 V
840: 0b000'10001,
841: 0b000'10001,
842: 0b000'10001,
843: 0b000'10001,
844: 0b000'01010,
845: 0b000'00100,
846: 0,
847:
848: 0b000'10001, // 0x57 W
849: 0b000'10001,
850: 0b000'10001,
851: 0b000'10001,
852: 0b000'10101,
853: 0b000'10101,
854: 0b000'01010,
855: 0,
856:
857: 0b000'10001, // 0x58 X
858: 0b000'10001,
859: 0b000'01010,
860: 0b000'00100,
861: 0b000'01010,
862: 0b000'10001,
863: 0b000'10001,
864: 0,
865:
866: 0b000'10001, // 0x59 Y
867: 0b000'10001,
868: 0b000'10001,
869: 0b000'01010,
870: 0b000'00100,
871: 0b000'00100,
872: 0b000'00100,
873: 0,
874:
875: 0b000'11111, // 0x5a Z
876: 0b000'00001,
877: 0b000'00010,
878: 0b000'00100,
879: 0b000'01000,
880: 0b000'10000,
881: 0b000'11111,
882: 0,
883:
884: 0b000'01110, // 0x5b [
885: 0b000'01000,
886: 0b000'01000,
887: 0b000'01000,
888: 0b000'01000,
889: 0b000'01000,
890: 0b000'01110,
891: 0,
892:
893: 0b000'10001, // 0x5c ¥
894: 0b000'01010,
895: 0b000'11111,
896: 0b000'00100,
897: 0b000'11111,
898: 0b000'00100,
899: 0b000'00100,
900: 0,
901:
902: 0b000'01110, // 0x5d ]
903: 0b000'00010,
904: 0b000'00010,
905: 0b000'00010,
906: 0b000'00010,
907: 0b000'00010,
908: 0b000'01110,
909: 0,
910:
911: 0b000'00100, // 0x5e ^
912: 0b000'01010,
913: 0b000'10001,
914: 0b000'00000,
915: 0b000'00000,
916: 0b000'00000,
917: 0b000'00000,
918: 0,
919:
920: 0b000'00000, // 0x5f _
921: 0b000'00000,
922: 0b000'00000,
923: 0b000'00000,
924: 0b000'00000,
925: 0b000'00000,
926: 0b000'11111,
927: 0,
928:
929: 0b000'01000, // 0x60 `
930: 0b000'00100,
931: 0b000'00010,
932: 0b000'00000,
933: 0b000'00000,
934: 0b000'00000,
935: 0b000'00000,
936: 0,
937:
938: 0b000'00000, // 0x61 a
939: 0b000'00000,
940: 0b000'01110,
941: 0b000'00001,
942: 0b000'01111,
943: 0b000'10001,
944: 0b000'01111,
945: 0,
946:
947: 0b000'10000, // 0x62 b
948: 0b000'10000,
949: 0b000'10110,
950: 0b000'11001,
951: 0b000'10001,
952: 0b000'10001,
953: 0b000'11110,
954: 0,
955:
956: 0b000'00000, // 0x63 c
957: 0b000'00000,
958: 0b000'01110,
959: 0b000'10001,
960: 0b000'10000,
961: 0b000'10001,
962: 0b000'01110,
963: 0,
964:
965: 0b000'00001, // 0x64 d
966: 0b000'00001,
967: 0b000'01101,
968: 0b000'10011,
969: 0b000'10001,
970: 0b000'10001,
971: 0b000'01111,
972: 0,
973:
974: 0b000'00000, // 0x65 e
975: 0b000'00000,
976: 0b000'01110,
977: 0b000'10001,
978: 0b000'11111,
979: 0b000'10000,
980: 0b000'01110,
981: 0,
982:
983: 0b000'00011, // 0x66 f
984: 0b000'00100,
985: 0b000'01110,
986: 0b000'00100,
987: 0b000'00100,
988: 0b000'00100,
989: 0b000'00100,
990: 0,
991:
992: 0b000'00000, // 0x67 g
993: 0b000'00000,
994: 0b000'01111,
995: 0b000'10001,
996: 0b000'01111,
997: 0b000'00001,
998: 0b000'01110,
999: 0,
1000:
1001: 0b000'10000, // 0x68 h
1002: 0b000'10000,
1003: 0b000'10110,
1004: 0b000'11001,
1005: 0b000'10001,
1006: 0b000'10001,
1007: 0b000'10001,
1008: 0,
1009:
1010: 0b000'00100, // 0x69 i
1011: 0b000'00000,
1012: 0b000'01100,
1013: 0b000'00100,
1014: 0b000'00100,
1015: 0b000'00100,
1016: 0b000'01110,
1017: 0,
1018:
1019: 0b000'00010, // 0x6a j
1020: 0b000'00000,
1021: 0b000'00110,
1022: 0b000'00010,
1023: 0b000'00010,
1024: 0b000'10010,
1025: 0b000'01100,
1026: 0,
1027:
1028: 0b000'10000, // 0x6b k
1029: 0b000'10000,
1030: 0b000'10010,
1031: 0b000'10100,
1032: 0b000'11000,
1033: 0b000'10100,
1034: 0b000'10010,
1035: 0,
1036:
1037: 0b000'01100, // 0x6c l
1038: 0b000'00100,
1039: 0b000'00100,
1040: 0b000'00100,
1041: 0b000'00100,
1042: 0b000'00100,
1043: 0b000'01110,
1044: 0,
1045:
1046: 0b000'00000, // 0x6d m
1047: 0b000'00000,
1048: 0b000'11010,
1049: 0b000'10101,
1050: 0b000'10101,
1051: 0b000'10001,
1052: 0b000'10001,
1053: 0,
1054:
1055: 0b000'00000, // 0x6e n
1056: 0b000'00000,
1057: 0b000'10110,
1058: 0b000'11001,
1059: 0b000'10001,
1060: 0b000'10001,
1061: 0b000'10001,
1062: 0,
1063:
1064: 0b000'00000, // 0x6f o
1065: 0b000'00000,
1066: 0b000'01110,
1067: 0b000'10001,
1068: 0b000'10001,
1069: 0b000'10001,
1070: 0b000'01110,
1071: 0,
1072:
1073: 0b000'00000, // 0x70 p
1074: 0b000'00000,
1075: 0b000'11110,
1076: 0b000'10001,
1077: 0b000'11110,
1078: 0b000'10000,
1079: 0b000'10000,
1080: 0,
1081:
1082: 0b000'00000, // 0x71 q
1083: 0b000'00000,
1084: 0b000'01111,
1085: 0b000'10001,
1086: 0b000'01111,
1087: 0b000'00001,
1088: 0b000'00001,
1089: 0,
1090:
1091: 0b000'00000, // 0x72 r
1092: 0b000'00000,
1093: 0b000'10110,
1094: 0b000'11001,
1095: 0b000'10000,
1096: 0b000'10000,
1097: 0b000'10000,
1098: 0,
1099:
1100: 0b000'00000, // 0x73 s
1101: 0b000'00000,
1102: 0b000'01110,
1103: 0b000'10000,
1104: 0b000'01110,
1105: 0b000'00001,
1106: 0b000'11110,
1107: 0,
1108:
1109: 0b000'00000, // 0x74 t
1110: 0b000'01000,
1111: 0b000'11110,
1112: 0b000'01000,
1113: 0b000'01000,
1114: 0b000'01000,
1115: 0b000'00110,
1116: 0,
1117:
1118: 0b000'00000, // 0x75 u
1119: 0b000'00000,
1120: 0b000'10001,
1121: 0b000'10001,
1122: 0b000'10001,
1123: 0b000'10011,
1124: 0b000'01101,
1125: 0,
1126:
1127: 0b000'00000, // 0x76 v
1128: 0b000'00000,
1129: 0b000'10001,
1130: 0b000'10001,
1131: 0b000'10001,
1132: 0b000'01010,
1133: 0b000'00100,
1134: 0,
1135:
1136: 0b000'00000, // 0x77 w
1137: 0b000'00000,
1138: 0b000'10001,
1139: 0b000'10001,
1140: 0b000'10101,
1141: 0b000'10101,
1142: 0b000'01010,
1143: 0,
1144:
1145: 0b000'00000, // 0x78 x
1146: 0b000'00000,
1147: 0b000'10001,
1148: 0b000'01010,
1149: 0b000'00100,
1150: 0b000'01010,
1151: 0b000'10001,
1152: 0,
1153:
1154: 0b000'00000, // 0x79 y
1155: 0b000'00000,
1156: 0b000'10001,
1157: 0b000'10001,
1158: 0b000'01111,
1159: 0b000'00001,
1160: 0b000'01110,
1161: 0,
1162:
1163: 0b000'00000, // 0x7a z
1164: 0b000'00000,
1165: 0b000'11111,
1166: 0b000'00010,
1167: 0b000'00100,
1168: 0b000'01000,
1169: 0b000'11111,
1170: 0,
1171:
1172: 0b000'00010, // 0x7b {
1173: 0b000'00100,
1174: 0b000'00100,
1175: 0b000'01000,
1176: 0b000'00100,
1177: 0b000'00100,
1178: 0b000'00010,
1179: 0,
1180:
1181: 0b000'00100, // 0x7c |
1182: 0b000'00100,
1183: 0b000'00100,
1184: 0b000'00100,
1185: 0b000'00100,
1186: 0b000'00100,
1187: 0b000'00100,
1188: 0,
1189:
1190: 0b000'01000, // 0x7d }
1191: 0b000'00100,
1192: 0b000'00100,
1193: 0b000'00010,
1194: 0b000'00100,
1195: 0b000'00100,
1196: 0b000'01000,
1197: 0,
1198:
1199: 0b000'00000, // 0x7e →
1200: 0b000'00100,
1201: 0b000'00010,
1202: 0b000'11111,
1203: 0b000'00010,
1204: 0b000'00100,
1205: 0b000'00000,
1206: 0,
1207:
1208: 0b000'00000, // 0x7f ←
1209: 0b000'00100,
1210: 0b000'01000,
1211: 0b000'11111,
1212: 0b000'01000,
1213: 0b000'00100,
1214: 0b000'00000,
1215: 0,
1216:
1217:
1218: 0b000'00000, // 0xa0 space
1219: 0b000'00000,
1220: 0b000'00000,
1221: 0b000'00000,
1222: 0b000'00000,
1223: 0b000'00000,
1224: 0b000'00000,
1225: 0,
1226:
1227: 0b000'00000, // 0xa1 。
1228: 0b000'00000,
1229: 0b000'00000,
1230: 0b000'00000,
1231: 0b000'11100,
1232: 0b000'10100,
1233: 0b000'11100,
1234: 0,
1235:
1236: 0b000'00111, // 0xa2 「
1237: 0b000'00100,
1238: 0b000'00100,
1239: 0b000'00100,
1240: 0b000'00000,
1241: 0b000'00000,
1242: 0b000'00000,
1243: 0,
1244:
1245: 0b000'00000, // 0xa3 」
1246: 0b000'00000,
1247: 0b000'00000,
1248: 0b000'00100,
1249: 0b000'00100,
1250: 0b000'00100,
1251: 0b000'11100,
1252: 0,
1253:
1254: 0b000'00000, // 0xa4 、
1255: 0b000'00000,
1256: 0b000'00000,
1257: 0b000'00000,
1258: 0b000'10000,
1259: 0b000'01000,
1260: 0b000'00100,
1261: 0,
1262:
1263: 0b000'00000, // 0xa5 ・
1264: 0b000'00000,
1265: 0b000'00000,
1266: 0b000'01100,
1267: 0b000'01100,
1268: 0b000'00000,
1269: 0b000'00000,
1270: 0,
1271:
1272: 0b000'00000, // 0xa6 ヲ
1273: 0b000'11111,
1274: 0b000'00001,
1275: 0b000'01111,
1276: 0b000'00001,
1277: 0b000'00010,
1278: 0b000'01100,
1279: 0,
1280:
1281: 0b000'00000, // 0xa7 ァ
1282: 0b000'00000,
1283: 0b000'11111,
1284: 0b000'00001,
1285: 0b000'00110,
1286: 0b000'00100,
1287: 0b000'01000,
1288: 0,
1289:
1290: 0b000'00000, // 0xa8 ィ
1291: 0b000'00000,
1292: 0b000'00010,
1293: 0b000'00100,
1294: 0b000'01100,
1295: 0b000'10100,
1296: 0b000'00100,
1297: 0,
1298:
1299: 0b000'00000, // 0xa9 ゥ
1300: 0b000'00000,
1301: 0b000'00100,
1302: 0b000'11111,
1303: 0b000'10001,
1304: 0b000'00001,
1305: 0b000'00110,
1306: 0,
1307:
1308: 0b000'00000, // 0xaa ェ
1309: 0b000'00000,
1310: 0b000'11111,
1311: 0b000'00100,
1312: 0b000'00100,
1313: 0b000'00100,
1314: 0b000'11111,
1315: 0,
1316:
1317: 0b000'00000, // 0xab ォ
1318: 0b000'00000,
1319: 0b000'00010,
1320: 0b000'11111,
1321: 0b000'00110,
1322: 0b000'01010,
1323: 0b000'10010,
1324: 0,
1325:
1326: 0b000'00000, // 0xac ャ
1327: 0b000'00000,
1328: 0b000'01000,
1329: 0b000'11111,
1330: 0b000'01001,
1331: 0b000'01010,
1332: 0b000'01000,
1333: 0,
1334:
1335: 0b000'00000, // 0xad ュ
1336: 0b000'00000,
1337: 0b000'00000,
1338: 0b000'11110,
1339: 0b000'00010,
1340: 0b000'00010,
1341: 0b000'11111,
1342: 0,
1343:
1344: 0b000'00000, // 0xae ョ
1345: 0b000'00000,
1346: 0b000'11111,
1347: 0b000'00001,
1348: 0b000'11111,
1349: 0b000'00001,
1350: 0b000'11111,
1351: 0,
1352:
1353: 0b000'00000, // 0xaf ッ
1354: 0b000'00000,
1355: 0b000'10101,
1356: 0b000'10101,
1357: 0b000'00001,
1358: 0b000'00001,
1359: 0b000'00110,
1360: 0,
1361:
1362: 0b000'00000, // 0xb0 ー
1363: 0b000'00000,
1364: 0b000'10000,
1365: 0b000'01111,
1366: 0b000'00000,
1367: 0b000'00000,
1368: 0b000'00000,
1369: 0,
1370:
1371: 0b000'00000, // 0xb1 ア
1372: 0b000'11111,
1373: 0b000'00001,
1374: 0b000'00101,
1375: 0b000'00110,
1376: 0b000'00100,
1377: 0b000'01000,
1378: 0,
1379:
1380: 0b000'00001, // 0xb2 イ
1381: 0b000'00010,
1382: 0b000'00100,
1383: 0b000'01100,
1384: 0b000'10100,
1385: 0b000'00100,
1386: 0b000'00100,
1387: 0,
1388:
1389: 0b000'00100, // 0xb3 ウ
1390: 0b000'11111,
1391: 0b000'10001,
1392: 0b000'10001,
1393: 0b000'00001,
1394: 0b000'00010,
1395: 0b000'00100,
1396: 0,
1397:
1398: 0b000'00000, // 0xb4 エ
1399: 0b000'11111,
1400: 0b000'00100,
1401: 0b000'00100,
1402: 0b000'00100,
1403: 0b000'00100,
1404: 0b000'11111,
1405: 0,
1406:
1407: 0b000'00010, // 0xb5 オ
1408: 0b000'11111,
1409: 0b000'00010,
1410: 0b000'00110,
1411: 0b000'01010,
1412: 0b000'10010,
1413: 0b000'00010,
1414: 0,
1415:
1416: 0b000'01000, // 0xb6 カ
1417: 0b000'11111,
1418: 0b000'01001,
1419: 0b000'01001,
1420: 0b000'01001,
1421: 0b000'01001,
1422: 0b000'10010,
1423: 0,
1424:
1425: 0b000'00100, // 0xb7 キ
1426: 0b000'11111,
1427: 0b000'00100,
1428: 0b000'11111,
1429: 0b000'00100,
1430: 0b000'00100,
1431: 0b000'00100,
1432: 0,
1433:
1434: 0b000'00000, // 0xb8 ク
1435: 0b000'01111,
1436: 0b000'01001,
1437: 0b000'10001,
1438: 0b000'00001,
1439: 0b000'00010,
1440: 0b000'01100,
1441: 0,
1442:
1443: 0b000'01000, // 0xb9 ケ
1444: 0b000'01111,
1445: 0b000'10010,
1446: 0b000'00010,
1447: 0b000'00010,
1448: 0b000'00010,
1449: 0b000'00100,
1450: 0,
1451:
1452: 0b000'00000, // 0xba コ
1453: 0b000'11111,
1454: 0b000'00001,
1455: 0b000'00001,
1456: 0b000'00001,
1457: 0b000'00001,
1458: 0b000'11111,
1459: 0,
1460:
1461: 0b000'01010, // 0xbb サ
1462: 0b000'11111,
1463: 0b000'01010,
1464: 0b000'01010,
1465: 0b000'00010,
1466: 0b000'00100,
1467: 0b000'01000,
1468: 0,
1469:
1470: 0b000'00000, // 0xbc シ
1471: 0b000'11001,
1472: 0b000'00001,
1473: 0b000'11001,
1474: 0b000'00001,
1475: 0b000'00010,
1476: 0b000'11100,
1477: 0,
1478:
1479: 0b000'00000, // 0xbd ス
1480: 0b000'11111,
1481: 0b000'00001,
1482: 0b000'00010,
1483: 0b000'00100,
1484: 0b000'01010,
1485: 0b000'10001,
1486: 0,
1487:
1488: 0b000'01000, // 0xbe セ
1489: 0b000'11111,
1490: 0b000'01001,
1491: 0b000'01001,
1492: 0b000'01010,
1493: 0b000'01000,
1494: 0b000'00110,
1495: 0,
1496:
1497: 0b000'00000, // 0xbf ソ
1498: 0b000'10001,
1499: 0b000'10001,
1500: 0b000'01001,
1501: 0b000'00001,
1502: 0b000'00010,
1503: 0b000'01100,
1504: 0,
1505:
1506: 0b000'00000, // 0xc0 タ
1507: 0b000'01111,
1508: 0b000'01001,
1509: 0b000'10101,
1510: 0b000'00011,
1511: 0b000'00010,
1512: 0b000'01100,
1513: 0,
1514:
1515: 0b000'00010, // 0xc1 チ
1516: 0b000'01100,
1517: 0b000'00100,
1518: 0b000'11111,
1519: 0b000'00100,
1520: 0b000'00100,
1521: 0b000'01000,
1522: 0,
1523:
1524: 0b000'00000, // 0xc2 ツ
1525: 0b000'10101,
1526: 0b000'10101,
1527: 0b000'10101,
1528: 0b000'00001,
1529: 0b000'00010,
1530: 0b000'00100,
1531: 0,
1532:
1533: 0b000'01110, // 0xc3 テ
1534: 0b000'00000,
1535: 0b000'11111,
1536: 0b000'00100,
1537: 0b000'00100,
1538: 0b000'00100,
1539: 0b000'01000,
1540: 0,
1541:
1542: 0b000'01000, // 0xc4 ト
1543: 0b000'01000,
1544: 0b000'01000,
1545: 0b000'01100,
1546: 0b000'01010,
1547: 0b000'01000,
1548: 0b000'01000,
1549: 0,
1550:
1551: 0b000'00100, // 0xc5 ナ
1552: 0b000'00100,
1553: 0b000'11111,
1554: 0b000'00100,
1555: 0b000'00100,
1556: 0b000'00100,
1557: 0b000'01000,
1558: 0,
1559:
1560: 0b000'00000, // 0xc6 ニ
1561: 0b000'01110,
1562: 0b000'00000,
1563: 0b000'00000,
1564: 0b000'00000,
1565: 0b000'00000,
1566: 0b000'11111,
1567: 0,
1568:
1569: 0b000'00000, // 0xc7 ヌ
1570: 0b000'11111,
1571: 0b000'00001,
1572: 0b000'01010,
1573: 0b000'00100,
1574: 0b000'01010,
1575: 0b000'10001,
1576: 0,
1577:
1578: 0b000'00100, // 0xc8 ネ
1579: 0b000'11111,
1580: 0b000'00010,
1581: 0b000'00100,
1582: 0b000'01110,
1583: 0b000'10101,
1584: 0b000'00100,
1585: 0,
1586:
1587: 0b000'00000, // 0xc9 ノ
1588: 0b000'00010,
1589: 0b000'00010,
1590: 0b000'00010,
1591: 0b000'00010,
1592: 0b000'00100,
1593: 0b000'01000,
1594: 0,
1595:
1596: 0b000'00000, // 0xca ハ
1597: 0b000'00100,
1598: 0b000'00010,
1599: 0b000'10001,
1600: 0b000'10001,
1601: 0b000'10001,
1602: 0b000'10001,
1603: 0,
1604:
1605: 0b000'00000, // 0xcb ヒ
1606: 0b000'10000,
1607: 0b000'11111,
1608: 0b000'10000,
1609: 0b000'10000,
1610: 0b000'10000,
1611: 0b000'01111,
1612: 0,
1613:
1614: 0b000'00000, // 0xcc フ
1615: 0b000'11111,
1616: 0b000'00001,
1617: 0b000'00001,
1618: 0b000'00001,
1619: 0b000'00010,
1620: 0b000'01100,
1621: 0,
1622:
1623: 0b000'00000, // 0xcd ヘ
1624: 0b000'01000,
1625: 0b000'10100,
1626: 0b000'10010,
1627: 0b000'00001,
1628: 0b000'00001,
1629: 0b000'00000,
1630: 0,
1631:
1632: 0b000'00100, // 0xce ホ
1633: 0b000'11111,
1634: 0b000'00100,
1635: 0b000'10101,
1636: 0b000'10101,
1637: 0b000'10101,
1638: 0b000'00100,
1639: 0,
1640:
1641: 0b000'00000, // 0xcf マ
1642: 0b000'11111,
1643: 0b000'00001,
1644: 0b000'00001,
1645: 0b000'01010,
1646: 0b000'00100,
1647: 0b000'00010,
1648: 0,
1649:
1650: 0b000'00000, // 0xd0 ミ
1651: 0b000'01110,
1652: 0b000'00000,
1653: 0b000'01110,
1654: 0b000'00000,
1655: 0b000'01110,
1656: 0b000'00001,
1657: 0,
1658:
1659: 0b000'00000, // 0xd1 ム
1660: 0b000'00100,
1661: 0b000'00100,
1662: 0b000'01000,
1663: 0b000'01001,
1664: 0b000'10011,
1665: 0b000'11101,
1666: 0,
1667:
1668: 0b000'00000, // 0xd2 メ
1669: 0b000'00001,
1670: 0b000'00001,
1671: 0b000'00101,
1672: 0b000'00010,
1673: 0b000'00101,
1674: 0b000'11000,
1675: 0,
1676:
1677: 0b000'00000, // 0xd3 モ
1678: 0b000'11111,
1679: 0b000'00100,
1680: 0b000'11111,
1681: 0b000'00100,
1682: 0b000'00100,
1683: 0b000'00011,
1684: 0,
1685:
1686: 0b000'01000, // 0xd4 ヤ
1687: 0b000'01000,
1688: 0b000'11111,
1689: 0b000'01001,
1690: 0b000'01010,
1691: 0b000'01000,
1692: 0b000'01000,
1693: 0,
1694:
1695: 0b000'00000, // 0xd5 ユ
1696: 0b000'01110,
1697: 0b000'00010,
1698: 0b000'00010,
1699: 0b000'00010,
1700: 0b000'00010,
1701: 0b000'11111,
1702: 0,
1703:
1704: 0b000'00000, // 0xd6 ヨ
1705: 0b000'11111,
1706: 0b000'00001,
1707: 0b000'01111,
1708: 0b000'00001,
1709: 0b000'00001,
1710: 0b000'11111,
1711: 0,
1712:
1713: 0b000'01110, // 0xd7 ラ
1714: 0b000'00000,
1715: 0b000'11111,
1716: 0b000'00001,
1717: 0b000'00001,
1718: 0b000'00010,
1719: 0b000'00100,
1720: 0,
1721:
1722: 0b000'00000, // 0xd8 リ
1723: 0b000'10010,
1724: 0b000'10010,
1725: 0b000'10010,
1726: 0b000'00010,
1727: 0b000'00100,
1728: 0b000'01000,
1729: 0,
1730:
1731: 0b000'00000, // 0xd9 ル
1732: 0b000'00100,
1733: 0b000'10100,
1734: 0b000'10100,
1735: 0b000'10101,
1736: 0b000'10101,
1737: 0b000'00110,
1738: 0,
1739:
1740: 0b000'00000, // 0xda レ
1741: 0b000'10000,
1742: 0b000'10000,
1743: 0b000'10001,
1744: 0b000'10010,
1745: 0b000'10100,
1746: 0b000'11000,
1747: 0,
1748:
1749: 0b000'00000, // 0xdb ロ
1750: 0b000'11111,
1751: 0b000'10001,
1752: 0b000'10001,
1753: 0b000'10001,
1754: 0b000'10001,
1755: 0b000'11111,
1756: 0,
1757:
1758: 0b000'00000, // 0xdc ワ
1759: 0b000'11111,
1760: 0b000'10001,
1761: 0b000'10001,
1762: 0b000'00001,
1763: 0b000'00010,
1764: 0b000'00100,
1765: 0,
1766:
1767: 0b000'00000, // 0xdd ン
1768: 0b000'11000,
1769: 0b000'00000,
1770: 0b000'00001,
1771: 0b000'00001,
1772: 0b000'00010,
1773: 0b000'11100,
1774: 0,
1775:
1776: 0b000'00100, // 0xde ゛
1777: 0b000'10010,
1778: 0b000'01000,
1779: 0b000'00000,
1780: 0b000'00000,
1781: 0b000'00000,
1782: 0b000'00000,
1783: 0,
1784:
1785: 0b000'11100, // 0xdf ゜
1786: 0b000'10100,
1787: 0b000'11100,
1788: 0b000'00000,
1789: 0b000'00000,
1790: 0b000'00000,
1791: 0b000'00000,
1792: 0,
1793:
1794: // ここから実際には 5x10 dot も混ざるが、現在はサポートしていない
1795:
1796: 0b000'00000, // 0xe0 α
1797: 0b000'00000,
1798: 0b000'00001,
1799: 0b000'01101,
1800: 0b000'10010,
1801: 0b000'10010,
1802: 0b000'01101,
1803: 0b000'00000,
1804:
1805: 0b000'01010, // 0xe1 a‥(Latin Small Letter A with Diaeresis)
1806: 0b000'00000,
1807: 0b000'01110,
1808: 0b000'00001,
1809: 0b000'01111,
1810: 0b000'10001,
1811: 0b000'01111,
1812: 0b000'00000,
1813:
1814: 0b000'00000, // 0xe2 β (10dot)
1815: 0b000'00000,
1816: 0b000'01110,
1817: 0b000'10001,
1818: 0b000'11110,
1819: 0b000'10001,
1820: 0b000'11110,
1821: 0b000'10000,
1822:
1823: 0b000'00000, // 0xe3 ε
1824: 0b000'00000,
1825: 0b000'01110,
1826: 0b000'10000,
1827: 0b000'01110,
1828: 0b000'10000,
1829: 0b000'01110,
1830: 0b000'00000,
1831:
1832: 0b000'00000, // 0xe4 μ (10dot)
1833: 0b000'00000,
1834: 0b000'10001,
1835: 0b000'10001,
1836: 0b000'10001,
1837: 0b000'10011,
1838: 0b000'11101,
1839: 0b000'10000,
1840:
1841: 0b000'00000, // 0xe5 σ
1842: 0b000'00000,
1843: 0b000'01111,
1844: 0b000'10010,
1845: 0b000'10001,
1846: 0b000'10001,
1847: 0b000'01110,
1848: 0b000'00000,
1849:
1850: 0b000'00000, // 0xe6 ρ (10dot)
1851: 0b000'00000,
1852: 0b000'00000,
1853: 0b000'00000,
1854: 0b000'00000,
1855: 0b000'00000,
1856: 0b000'00000,
1857: 0b000'00000,
1858:
1859: 0b000'00000, // 0xe7 g (10dot ver)
1860: 0b000'00000,
1861: 0b000'01111,
1862: 0b000'10001,
1863: 0b000'10001,
1864: 0b000'10001,
1865: 0b000'01111,
1866: 0b000'00001,
1867:
1868: 0b000'00000, // 0xe8 √(?)
1869: 0b000'00111,
1870: 0b000'00100,
1871: 0b000'00100,
1872: 0b000'10100,
1873: 0b000'01000,
1874: 0b000'00000,
1875: 0b000'00000,
1876:
1877: 0b000'00000, // 0xe9 ^(-1) (?)
1878: 0b000'00010,
1879: 0b000'11010,
1880: 0b000'00010,
1881: 0b000'00000,
1882: 0b000'00000,
1883: 0b000'00000,
1884: 0b000'00000,
1885:
1886: 0b000'00010, // 0xea j (10dot ver)
1887: 0b000'00000,
1888: 0b000'00110,
1889: 0b000'00010,
1890: 0b000'00010,
1891: 0b000'00010,
1892: 0b000'00010,
1893: 0b000'00010,
1894:
1895: 0b000'00000, // 0xeb ^x (?)
1896: 0b000'00000,
1897: 0b000'00000,
1898: 0b000'00000,
1899: 0b000'00000,
1900: 0b000'00000,
1901: 0b000'00000,
1902: 0b000'00000,
1903:
1904: 0b000'00000, // 0xec ¢
1905: 0b000'00100,
1906: 0b000'01110,
1907: 0b000'10100,
1908: 0b000'10101,
1909: 0b000'01110,
1910: 0b000'00100,
1911: 0b000'00000,
1912:
1.1.1.6 root 1913: 0b000'00000, // 0xed L= (U+26c0 だろうか?)
1.1.1.4 root 1914: 0b000'00000,
1915: 0b000'00000,
1916: 0b000'00000,
1917: 0b000'00000,
1918: 0b000'00000,
1919: 0b000'00000,
1920: 0b000'00000,
1921:
1922: 0b000'00000, // 0xee n ̄(n マクロン?)
1923: 0b000'00000,
1924: 0b000'00000,
1925: 0b000'00000,
1926: 0b000'00000,
1927: 0b000'00000,
1928: 0b000'00000,
1929: 0b000'00000,
1930:
1931: 0b000'01010, // 0xef o‥(Latin Small Letter O with Diaeresis)
1932: 0b000'00000,
1933: 0b000'01110,
1934: 0b000'10001,
1935: 0b000'10001,
1936: 0b000'10001,
1937: 0b000'01110,
1938: 0b000'00000,
1939:
1940: 0b000'00000, // 0xf0 p (10dot ver)
1941: 0b000'00000,
1942: 0b000'10110,
1943: 0b000'11001,
1944: 0b000'10001,
1945: 0b000'10001,
1946: 0b000'11110,
1947: 0b000'10000,
1948:
1949: 0b000'00000, // 0xf1 q (10dot ver)
1950: 0b000'00000,
1951: 0b000'01101,
1952: 0b000'10011,
1953: 0b000'10001,
1954: 0b000'10001,
1955: 0b000'01111,
1956: 0b000'00001,
1957:
1958: 0b000'01110, // 0xf2 θ(?)
1959: 0b000'10001,
1960: 0b000'10001,
1961: 0b000'11111,
1962: 0b000'10001,
1963: 0b000'10001,
1964: 0b000'01110,
1965: 0b000'00000,
1966:
1967: 0b000'00000, // 0xf3 ∞(?)
1968: 0b000'00000,
1969: 0b000'01010,
1970: 0b000'10101,
1971: 0b000'10101,
1972: 0b000'01010,
1973: 0b000'00000,
1974: 0b000'00000,
1975:
1976: 0b000'00000, // 0xf4 Ω
1977: 0b000'01110,
1978: 0b000'10001,
1979: 0b000'10001,
1980: 0b000'10001,
1981: 0b000'01010,
1982: 0b000'11011,
1983: 0b000'00000,
1984:
1985: 0b000'01010, // 0xf5 u‥(?)
1986: 0b000'00000,
1987: 0b000'10001,
1988: 0b000'10001,
1989: 0b000'10001,
1990: 0b000'10011,
1991: 0b000'01101,
1992: 0b000'00000,
1993:
1994: 0b000'11111, // 0xf6 Σ
1995: 0b000'01000,
1996: 0b000'00100,
1997: 0b000'00010,
1998: 0b000'00100,
1999: 0b000'01000,
2000: 0b000'11111,
2001: 0b000'00000,
2002:
2003: 0b000'00000, // 0xf7 π
2004: 0b000'00000,
2005: 0b000'11111,
2006: 0b000'01010,
2007: 0b000'01010,
2008: 0b000'01010,
2009: 0b000'10011,
2010: 0b000'00000,
2011:
2012: 0b000'11111, // 0xf8 x ̄(?)
2013: 0b000'00000,
2014: 0b000'10001,
2015: 0b000'01010,
2016: 0b000'00100,
2017: 0b000'01010,
2018: 0b000'10001,
2019: 0b000'00000,
2020:
2021: 0b000'00000, // 0xf9 y (10dot ver)
2022: 0b000'00000,
2023: 0b000'10001,
2024: 0b000'10001,
2025: 0b000'10001,
2026: 0b000'10001,
2027: 0b000'01111,
2028: 0b000'00001,
2029:
2030: 0b000'00000, // 0xfa 千
2031: 0b000'00001,
2032: 0b000'01110,
2033: 0b000'00100,
2034: 0b000'11111,
2035: 0b000'00100,
2036: 0b000'00100,
2037: 0b000'00000,
2038:
2039: 0b000'00000, // 0xfb 万
2040: 0b000'11111,
2041: 0b000'01000,
2042: 0b000'01111,
2043: 0b000'01001,
2044: 0b000'01001,
2045: 0b000'10001,
2046: 0b000'00000,
2047:
2048: 0b000'00000, // 0xfc 円
2049: 0b000'11111,
2050: 0b000'10101,
2051: 0b000'10101,
2052: 0b000'11111,
2053: 0b000'10001,
2054: 0b000'10001,
2055: 0b000'00000,
2056:
2057: 0b000'00000, // 0xfd ÷
2058: 0b000'00000,
2059: 0b000'00100,
2060: 0b000'00000,
2061: 0b000'11111,
2062: 0b000'00000,
2063: 0b000'00100,
2064: 0b000'00000,
2065:
2066: 0b000'00000, // 0xfe space
2067: 0b000'00000,
2068: 0b000'00000,
2069: 0b000'00000,
2070: 0b000'00000,
2071: 0b000'00000,
2072: 0b000'00000,
2073: 0b000'00000,
2074:
2075: 0b000'11111, // 0xff cursor
2076: 0b000'11111,
2077: 0b000'11111,
2078: 0b000'11111,
2079: 0b000'11111,
2080: 0b000'11111,
2081: 0b000'11111,
2082: 0b000'11111,
2083: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.