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