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