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