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