Annotation of nono/vm/lcd.cpp, revision 1.1.1.9

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.