絶賛追記中
拙作「DMシステム2」の各種ドライバをオープンソースで公開する作業の一環で、「ねこいらず」というフォントドライバを公開するにあたりフォントデータの構造を理解する必要があったので、解析結果を忘れないうちにメモしておきます。
「ねこいらず」とは?
漢字ROM(というフォントデータを含んだIC)を搭載しないMSX2以降の機種で漢字混じりの日本語表示を行うため、JIS第1水準に準拠した12px角のフォントデータをVRAMの裏画面(10000h)へを配置し、日本語表示を行うソフトウェアです。漢字ROM要らずだから「ねこいらず」。
やってることと言えば、アメリカ産のIBM/PCで「DOS/V」として日本語表示を行う技術(メモリにフォントデータを常駐してグラフィック画面へ日本語の文字を表示する手法)とほぼ同等です。
作者はKICHIさん(お元気でしょうか?)。元々DMシステム2とは関係がなかった独立したソフトウェアでしたが、作者自らDMシステム2のフォントドライバAPIに合わせてリリースしてくださったのでした。
なお「ねこいらず」はMSX向け漢字ROM相当のハードウェアやインターフェースをソフトウェアでエミュレートするものではありません。
DMシステム2および「ねこいらず」「フォントドライバ」について詳しくはこちらをご覧ください。
「ねこいらず」ファイルフォーマット
「ねこいらず」データファイル(KANJI3.GRP)は、以下のような構造を持ちます。
- 65419 バイト…実データ量
- 65412 バイト…BSAVEヘッダを抜いた実質データ量
- うち2016バイト…半角文字(224文字分)※表示可能文字数は159文字
- うち63396バイト…全角文字(3522文字分)
なお、データファイルにヘッダや辞書の類は存在しません。
半角文字
- 半角文字のピクセル数は、6×12px。
- フォントデータの0バイト目(データ先頭からのオフセット +0)から、1文字あたり9バイト(6bit折り返し×12行)格納。
- 文字コード 0x20~0xFF の224文字分を連続して、計2016バイトのデータ量となります。
- DMシステム2の日本語表示時は文字コードが「シフトJIS」で解釈されるため、本来であればシフトJISで表示できない1バイト目の領域(0x80~0x9Fと0xE0~0xFF)は使用できませんが、「ねこいらず」ではMSXの半角文字のデザインが無駄に入っています。データ領域を端折ると誤動作するので、224文字分の領域は確保しますが、実際に表示可能な半角文字数は159文字となります。
ちなみに文字コード 0x7F も表示はできないがデータの領域は確保されている。データオフセットの計算を端折るためかな?
全角文字
- 全角文字のピクセル数は、12×12px。
- フォントデータの2016バイト目(データ先頭からのオフセット +2016)から、1文字あたり18バイト(12bit折り返し×12行)格納。
- 漢字(2965文字)および非漢字(557文字)を含む文字コード 0x8140~0x9872(「腕」)まで3418文字分連続して、計63396バイトのデータ量となります。
- 規格はJIS C 6226(いわゆる旧JIS、78JIS)がベースになっています。第1水準の漢字(2965文字)は全て対応します。第2水準の漢字は非対応です。非漢字(557文字)はMSX標準の独自実装文字が含まれていますが新JIS(83JIS)以降の規格とは違っているため、互換性に気をつける必要があります。
- シフトJISの領域外である文字コード(2バイト目が0x00~0x3F、0x7F、0xFD、0xFE、0xFF)はデータ領域が確保されずに詰められています(半角文字では領域があるのに!!)。
- 旧JISと互換性が無い一部の文字にUnicodeで再現できない文字が含まれています。
非漢字部分の互換性について
非漢字の赤と緑の文字について解説。
- ■ 赤字:旧JIS(78JIS)では定義が無かった空きエリアだが、新JIS(83JIS)では定義されたために他機種との互換性が無い文字
- ■ 緑字:旧JIS・新JISともに定義が無かった空きエリアだが、後の90JISで第3水準に定義されたものが含まれるために他機種との互換性が無い文字
- ■ 薄字:ねこいらずフォントの中にフォントデータが存在しない文字(全く違う文字が表示されます)
旧JISで未定義だった文字コード(赤字・緑字)は基本的にフォントデータそのものが存在しません(薄字になっています)が、MSXにおける事実上の規格化された独自実装の文字群は概ね含まれています。
全角文字のデータ構造としては若いコードの順から18バイト毎に羅列されていますが、データが存在しないコードは詰められていますので注意が必要です。
なお、赤字・緑字の2色に含まれる文字はMSX以外の他機種と互換性が失われます。MSXの漢字ROMに関する文字の互換性問題については、以下のブログ記事をご参照ください。
全ての全角文字のデータオフセット対比表
全ての全角文字のシフトJISコード(デザイン割付)とデータオフセット(先頭が+0000h)の対比表は以下の通りです。
文字が複数ある列の文字列は、左端から1文字につき +18バイトのオフセットが追加されます。
表中にある「G」から始まる数字は、MSX共通・非漢字部分の文字です。Unicodeで表示できない文字が含まれているため、番号0(G000)から93(G093)まで全94文字を「G」から始まる数字で表現しています。これらの文字に対するデザイン割付については、以下のブログ記事をご参照ください。
https://gigamix.hatenablog.com/entry/kanjirom-nonkanji-freefontgigamix.hatenablog.com
オフセット | シフトJIS | 文字の意味 |
---|---|---|
07E0 | 8140 | 、。,.・:;?!゛゜´`¨^ |
0900 | 8150 |  ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\ |
0A20 | 8160 | ~∥|…‥‘’“”()〔〕[]{ |
0B40 | 8170 | }〈〉《》「」『』【】+-±× |
0C4E | 8180 | ÷=≠<>≦≧∞∴♂♀°′″℃¥ |
0D6E | 8190 | $¢£%#&*@§☆★○●◎◇◆ |
0E8E | 81A0 | □■△▲▽▼※〒→←↑↓〓 |
0F78 | 81AD | G000 |
0F8A | 81AE | G001 |
0F9C | 81AF | G002 |
0FAE | 81B0 | G003 |
0FC0 | 81B1 | G004 |
0FD2 | 81B2 | G005 |
0FE4 | 81B3 | G006 |
0FF6 | 81B4 | G007 |
1008 | 81B5 | G008 |
101A | 81B6 | G009 |
102C | 81B7 | G010 |
103E | 81B8 | G011 |
1050 | 81B9 | G012 |
1062 | 81BA | G013 |
1074 | 81BB | G014 |
1086 | 81BC | G015 |
1098 | 81BD | G016 |
10AA | 81BE | G017 |
10BC | 81BF | G018 |
10CE | 81C0 | G019 |
10E0 | 81C1 | G020 |
10F2 | 81C2 | G021 |
1104 | 81C3 | G022 |
1116 | 81C4 | G023 |
1128 | 81C5 | G024 |
113A | 81C6 | G025 |
114C | 81C7 | G026 |
115E | 81C8 | G027 |
1170 | 81C9 | G028 |
1182 | 81CA | G029 |
1194 | 81CB | G030 |
11A6 | 81CC | G031 |
11B8 | 81CD | G032 |
11CA | 81CE | G033 |
11DC | 81CF | G034 |
11EE | 81D0 | G035 |
1200 | 81D1 | G036 |
1212 | 81D2 | G037 |
1224 | 81D3 | G038 |
1236 | 81D4 | G039 |
1248 | 81D5 | G040 |
125A | 81D6 | G041 |
126C | 81D7 | G042 |
127E | 81D8 | G043 |
1290 | 81D9 | G044 |
12A2 | 81DA | G045 |
12B4 | 81DB | G046 |
12C6 | 81DC | G047 |
12D8 | 81DD | G048 |
12EA | 81DE | G049 |
12FC | 81DF | G050 |
130E | 81E0 | G051 |
1320 | 81E1 | G052 |
1332 | 81E2 | G053 |
1344 | 81E3 | G054 |
1356 | 81E4 | G055 |
1368 | 81E5 | G056 |
137A | 81E6 | G057 |
138C | 81E7 | G058 |
139E | 81E8 | G059 |
13B0 | 81E9 | G060 |
13C2 | 81EA | G061 |
13D4 | 81EB | G062 |
13E6 | 81EC | G063 |
13F8 | 81ED | G064 |
140A | 81EE | G065 |
141C | 81EF | G066 |
142E | 81F0 | G067 |
1440 | 81F1 | G068 |
1452 | 81F2 | G069 |
1464 | 81F3 | G070 |
1476 | 81F4 | G071 |
1488 | 81F5 | G072 |
149A | 81F6 | G073 |
14AC | 81F7 | G074 |
14BE | 81F8 | G075 |
14D0 | 81F9 | G076 |
14E2 | 81FA | G077 |
14F4 | 81FB | G078 |
1506 | 81FC | G079 |
1518 | 8240 | G080 |
152A | 8241 | G081 |
153C | 8242 | G082 |
154E | 8243 | G083 |
1560 | 8244 | G084 |
1572 | 8245 | G085 |
1584 | 8246 | G086 |
1596 | 824F | 0 |
15A8 | 8250 | 123456789 |
164A | 8260 | ABCDEFGHIJKLMNOP |
176A | 8270 | QRSTUVWXYZ |
181E | 8281 | abcdefghijklmno |
192C | 8290 | pqrstuvwxyz |
19F2 | 829F | ぁ |
1A04 | 82A0 | あぃいぅうぇえぉおかがきぎくぐけ |
1B24 | 82B0 | げこごさざしじすずせぜそぞただち |
1C44 | 82C0 | ぢっつづてでとどなにぬねのはばぱ |
1D64 | 82D0 | ひびぴふぶぷへべぺほぼぽまみむめ |
1E84 | 82E0 | もゃやゅゆょよらりるれろゎわゐゑ |
1FA4 | 82F0 | をん |
1FC8 | 82F2 | G087 |
1FDA | 82F3 | G088 |
1FEC | 82F4 | G089 |
1FFE | 82F5 | G090 |
2010 | 82F6 | G091 |
2022 | 8340 | ァアィイゥウェエォオカガキギクグ |
2142 | 8350 | ケゲコゴサザシジスズセゼソゾタダ |
2262 | 8360 | チヂッツヅテデトドナニヌネノハバ |
2382 | 8370 | パヒビピフブプヘベペホボポマミ |
2490 | 8380 | ムメモャヤュユョヨラリルレロヮワ |
25B0 | 8390 | ヰヱヲンヴヵヶ |
262E | 839F | Α |
2640 | 83A0 | ΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ |
2760 | 83B0 | ΣΤΥΦΧΨΩ |
27DE | 83B7 | G092 |
27F0 | 83BF | α |
2802 | 83C0 | βγδεζηθικλμνξοπρ |
2922 | 83D0 | στυφχψω |
29A0 | 83DD | G093 |
29B2 | 8440 | АБВГДЕЁЖЗИЙКЛМНО |
2AD2 | 8450 | ПРСТУФХЦЧШЩЪЫЬЭЮ |
2BF2 | 8460 | Я |
2C04 | 8470 | абвгдеёжзийклмн |
2D12 | 8480 | опрстуфхцчшщъыьэ |
2E32 | 8490 | юя |
2F0A | 889F | 亜 |
2F1C | 88A0 | 唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦 |
303C | 88B0 | 芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷 |
315C | 88C0 | 安庵按暗案闇鞍杏以伊位依偉囲夷委 |
327C | 88D0 | 威尉惟意慰易椅為畏異移維緯胃萎衣 |
339C | 88E0 | 謂違遺医井亥域育郁磯一壱溢逸稲茨 |
34BC | 88F0 | 芋鰯允印咽員因姻引飲淫胤蔭 |
35A6 | 8940 | 院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓 |
36C6 | 8950 | 臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲 |
37E6 | 8960 | 荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴 |
3906 | 8970 | 英衛詠鋭液疫益駅悦謁越閲榎厭円 |
3A14 | 8980 | 園堰奄宴延怨掩援沿演炎焔煙燕猿縁 |
3B34 | 8990 | 艶苑薗遠鉛鴛塩於汚甥凹央奥往応押 |
3C54 | 89A0 | 旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶 |
3D74 | 89B0 | 臆桶牡乙俺卸恩温穏音下化仮何伽価 |
3E94 | 89C0 | 佳加可嘉夏嫁家寡科暇果架歌河火珂 |
3FB4 | 89D0 | 禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過 |
40D4 | 89E0 | 霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会 |
41F4 | 89F0 | 解回塊壊廻快怪悔恢懐戒拐改 |
42DE | 8A40 | 魁晦械海灰界皆絵芥蟹開階貝凱劾外 |
43FE | 8A50 | 咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣 |
451E | 8A60 | 柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚 |
463E | 8A70 | 角赫較郭閣隔革学岳楽額顎掛笠樫 |
474C | 8A80 | 橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹 |
486C | 8A90 | 叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥 |
498C | 8AA0 | 刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官 |
4AAC | 8AB0 | 寛干幹患感慣憾換敢柑桓棺款歓汗漢 |
4BCC | 8AC0 | 澗潅環甘監看竿管簡緩缶翰肝艦莞観 |
4CEC | 8AD0 | 諌貫還鑑間閑関陥韓館舘丸含岸巌玩 |
4E0C | 8AE0 | 癌眼岩翫贋雁頑顔願企伎危喜器基奇 |
4F2C | 8AF0 | 嬉寄岐希幾忌揮机旗既期棋棄 |
5016 | 8B40 | 機帰毅気汽畿祈季稀紀徽規記貴起軌 |
5136 | 8B50 | 輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇 |
5256 | 8B60 | 義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍 |
5376 | 8B70 | 却客脚虐逆丘久仇休及吸宮弓急救 |
5484 | 8B80 | 朽求汲泣灸球究窮笈級糾給旧牛去居 |
55A4 | 8B90 | 巨拒拠挙渠虚許距鋸漁禦魚亨享京供 |
56C4 | 8BA0 | 侠僑兇競共凶協匡卿叫喬境峡強彊怯 |
57E4 | 8BB0 | 恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響 |
5904 | 8BC0 | 饗驚仰凝尭暁業局曲極玉桐粁僅勤均 |
5A24 | 8BD0 | 巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近 |
5B44 | 8BE0 | 金吟銀九倶句区狗玖矩苦躯駆駈駒具 |
5C64 | 8BF0 | 愚虞喰空偶寓遇隅串櫛釧屑屈 |
5D4E | 8C40 | 掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫 |
5E6E | 8C50 | 訓群軍郡卦袈祁係傾刑兄啓圭珪型契 |
5F8E | 8C60 | 形径恵慶慧憩掲携敬景桂渓畦稽系経 |
60AE | 8C70 | 継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨 |
61BC | 8C80 | 劇戟撃激隙桁傑欠決潔穴結血訣月件 |
62DC | 8C90 | 倹倦健兼券剣喧圏堅嫌建憲懸拳捲検 |
63FC | 8CA0 | 権牽犬献研硯絹県肩見謙賢軒遣鍵険 |
651C | 8CB0 | 顕験鹸元原厳幻弦減源玄現絃舷言諺 |
663C | 8CC0 | 限乎個古呼固姑孤己庫弧戸故枯湖狐 |
675C | 8CD0 | 糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午 |
687C | 8CE0 | 呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉 |
699C | 8CF0 | 交佼侯候倖光公功効勾厚口向 |
6A86 | 8D40 | 后喉坑垢好孔孝宏工巧巷幸広庚康弘 |
6BA6 | 8D50 | 恒慌抗拘控攻昂晃更杭校梗構江洪浩 |
6CC6 | 8D60 | 港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔 |
6DE6 | 8D70 | 膏航荒行衡講貢購郊酵鉱砿鋼閤降 |
6EF4 | 8D80 | 項香高鴻剛劫号合壕拷濠豪轟麹克刻 |
7014 | 8D90 | 告国穀酷鵠黒獄漉腰甑忽惚骨狛込此 |
7134 | 8DA0 | 頃今困坤墾婚恨懇昏昆根梱混痕紺艮 |
7254 | 8DB0 | 魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐 |
7374 | 8DC0 | 座挫債催再最哉塞妻宰彩才採栽歳済 |
7494 | 8DD0 | 災采犀砕砦祭斎細菜裁載際剤在材罪 |
75B4 | 8DE0 | 財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾 |
76D4 | 8DF0 | 昨朔柵窄策索錯桜鮭笹匙冊刷 |
77BE | 8E40 | 察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三 |
78DE | 8E50 | 傘参山惨撒散桟燦珊産算纂蚕讃賛酸 |
79FE | 8E60 | 餐斬暫残仕仔伺使刺司史嗣四士始姉 |
7B1E | 8E70 | 姿子屍市師志思指支孜斯施旨枝止 |
7C2C | 8E80 | 死氏獅祉私糸紙紫肢脂至視詞詩試誌 |
7D4C | 8E90 | 諮資賜雌飼歯事似侍児字寺慈持時次 |
7E6C | 8EA0 | 滋治爾璽痔磁示而耳自蒔辞汐鹿式識 |
7F8C | 8EB0 | 鴫竺軸宍雫七叱執失嫉室悉湿漆疾質 |
80AC | 8EC0 | 実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮 |
81CC | 8ED0 | 社紗者謝車遮蛇邪借勺尺杓灼爵酌釈 |
82EC | 8EE0 | 錫若寂弱惹主取守手朱殊狩珠種腫趣 |
840C | 8EF0 | 酒首儒受呪寿授樹綬需囚収周 |
84F6 | 8F40 | 宗就州修愁拾洲秀秋終繍習臭舟蒐衆 |
8616 | 8F50 | 襲讐蹴輯週酋酬集醜什住充十従戎柔 |
8736 | 8F60 | 汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出 |
8856 | 8F70 | 術述俊峻春瞬竣舜駿准循旬楯殉淳 |
8964 | 8F80 | 準潤盾純巡遵醇順処初所暑曙渚庶緒 |
8A84 | 8F90 | 署書薯藷諸助叙女序徐恕鋤除傷償勝 |
8BA4 | 8FA0 | 匠升召哨商唱嘗奨妾娼宵将小少尚庄 |
8CC4 | 8FB0 | 床廠彰承抄招掌捷昇昌昭晶松梢樟樵 |
8DE4 | 8FC0 | 沼消渉湘焼焦照症省硝礁祥称章笑粧 |
8F04 | 8FD0 | 紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾 |
9024 | 8FE0 | 鐘障鞘上丈丞乗冗剰城場壌嬢常情擾 |
9144 | 8FF0 | 条杖浄状畳穣蒸譲醸錠嘱埴飾 |
922E | 9040 | 拭植殖燭織職色触食蝕辱尻伸信侵唇 |
934E | 9050 | 娠寝審心慎振新晋森榛浸深申疹真神 |
946E | 9060 | 秦紳臣芯薪親診身辛進針震人仁刃塵 |
958E | 9070 | 壬尋甚尽腎訊迅陣靭笥諏須酢図厨 |
969C | 9080 | 逗吹垂帥推水炊睡粋翠衰遂酔錐錘随 |
97BC | 9090 | 瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄 |
98DC | 90A0 | 摺寸世瀬畝是凄制勢姓征性成政整星 |
99FC | 90B0 | 晴棲栖正清牲生盛精聖声製西誠誓請 |
9B1C | 90C0 | 逝醒青静斉税脆隻席惜戚斥昔析石積 |
9C3C | 90D0 | 籍績脊責赤跡蹟碩切拙接摂折設窃節 |
9D5C | 90E0 | 説雪絶舌蝉仙先千占宣専尖川戦扇撰 |
9E7C | 90F0 | 栓栴泉浅洗染潜煎煽旋穿箭線 |
9F66 | 9140 | 繊羨腺舛船薦詮賎践選遷銭銑閃鮮前 |
A086 | 9150 | 善漸然全禅繕膳糎噌塑岨措曾曽楚狙 |
A1A6 | 9160 | 疏疎礎祖租粗素組蘇訴阻遡鼠僧創双 |
A2C6 | 9170 | 叢倉喪壮奏爽宋層匝惣想捜掃挿掻 |
A3D4 | 9180 | 操早曹巣槍槽漕燥争痩相窓糟総綜聡 |
A4F4 | 9190 | 草荘葬蒼藻装走送遭鎗霜騒像増憎臓 |
A614 | 91A0 | 蔵贈造促側則即息捉束測足速俗属賊 |
A734 | 91B0 | 族続卒袖其揃存孫尊損村遜他多太汰 |
A854 | 91C0 | 詑唾堕妥惰打柁舵楕陀駄騨体堆対耐 |
A974 | 91D0 | 岱帯待怠態戴替泰滞胎腿苔袋貸退逮 |
AA94 | 91E0 | 隊黛鯛代台大第醍題鷹滝瀧卓啄宅托 |
ABB4 | 91F0 | 択拓沢濯琢託鐸濁諾茸凧蛸只 |
AC9E | 9240 | 叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹 |
ADBE | 9250 | 単嘆坦担探旦歎淡湛炭短端箪綻耽胆 |
AEDE | 9260 | 蛋誕鍛団壇弾断暖檀段男談値知地弛 |
AFFE | 9270 | 恥智池痴稚置致蜘遅馳築畜竹筑蓄 |
B10C | 9280 | 逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷 |
B22C | 9290 | 註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖 |
B34C | 92A0 | 帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹 |
B46C | 92B0 | 腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍 |
B58C | 92C0 | 賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃 |
B6AC | 92D0 | 漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴 |
B7CC | 92E0 | 亭低停偵剃貞呈堤定帝底庭廷弟悌抵 |
B8EC | 92F0 | 挺提梯汀碇禎程締艇訂諦蹄逓 |
B9D6 | 9340 | 邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹 |
BAF6 | 9350 | 撤轍迭鉄典填天展店添纏甜貼転顛点 |
BC16 | 9360 | 伝殿澱田電兎吐堵塗妬屠徒斗杜渡登 |
BD36 | 9370 | 菟賭途都鍍砥砺努度土奴怒倒党冬 |
BE44 | 9380 | 凍刀唐塔塘套宕島嶋悼投搭東桃梼棟 |
BF64 | 9390 | 盗淘湯涛灯燈当痘祷等答筒糖統到董 |
C084 | 93A0 | 蕩藤討謄豆踏逃透鐙陶頭騰闘働動同 |
C1A4 | 93B0 | 堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳 |
C2C4 | 93C0 | 涜特督禿篤毒独読栃橡凸突椴届鳶苫 |
C3E4 | 93D0 | 寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那 |
C504 | 93E0 | 内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難 |
C624 | 93F0 | 汝二尼弐迩匂賑肉虹廿日乳入 |
C70E | 9440 | 如尿韮任妊忍認濡禰祢寧葱猫熱年念 |
C82E | 9450 | 捻撚燃粘乃廼之埜嚢悩濃納能脳膿農 |
C94E | 9460 | 覗蚤巴把播覇杷波派琶破婆罵芭馬俳 |
CA6E | 9470 | 廃拝排敗杯盃牌背肺輩配倍培媒梅 |
CB7C | 9480 | 楳煤狽買売賠陪這蝿秤矧萩伯剥博拍 |
CC9C | 9490 | 柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函 |
CDBC | 94A0 | 箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪 |
CEDC | 94B0 | 伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆 |
CFFC | 94C0 | 搬斑板氾汎版犯班畔繁般藩販範釆煩 |
D11C | 94D0 | 頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲 |
D23C | 94E0 | 扉批披斐比泌疲皮碑秘緋罷肥被誹費 |
D35C | 94F0 | 避非飛樋簸備尾微枇毘琵眉美 |
D446 | 9540 | 鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧 |
D566 | 9550 | 姫媛紐百謬俵彪標氷漂瓢票表評豹廟 |
D686 | 9560 | 描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓 |
D7A6 | 9570 | 頻敏瓶不付埠夫婦富冨布府怖扶敷 |
D8B4 | 9580 | 斧普浮父符腐膚芙譜負賦赴阜附侮撫 |
D9D4 | 9590 | 武舞葡蕪部封楓風葺蕗伏副復幅服福 |
DAF4 | 95A0 | 腹複覆淵弗払沸仏物鮒分吻噴墳憤扮 |
DC14 | 95B0 | 焚奮粉糞紛雰文聞丙併兵塀幣平弊柄 |
DD34 | 95C0 | 並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変 |
DE54 | 95D0 | 片篇編辺返遍便勉娩弁鞭保舗鋪圃捕 |
DF74 | 95E0 | 歩甫補輔穂募墓慕戊暮母簿菩倣俸包 |
E094 | 95F0 | 呆報奉宝峰峯崩庖抱捧放方朋 |
E17E | 9640 | 法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽 |
E29E | 9650 | 鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒 |
E3BE | 9660 | 冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲 |
E4DE | 9670 | 朴牧睦穆釦勃没殆堀幌奔本翻凡盆 |
E5EC | 9680 | 摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾 |
E70C | 9690 | 鱒桝亦俣又抹末沫迄侭繭麿万慢満漫 |
E82C | 96A0 | 蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民 |
E94C | 96B0 | 眠務夢無牟矛霧鵡椋婿娘冥名命明盟 |
EA6C | 96C0 | 迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄 |
EB8C | 96D0 | 孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻 |
ECAC | 96E0 | 籾貰問悶紋門匁也冶夜爺耶野弥矢厄 |
EDCC | 96F0 | 役約薬訳躍靖柳薮鑓愉愈油癒 |
EEB6 | 9740 | 諭輸唯佑優勇友宥幽悠憂揖有柚湧涌 |
EFD6 | 9750 | 猶猷由祐裕誘遊邑郵雄融夕予余与誉 |
F0F6 | 9760 | 輿預傭幼妖容庸揚揺擁曜楊様洋溶熔 |
F216 | 9770 | 用窯羊耀葉蓉要謡踊遥陽養慾抑欲 |
F324 | 9780 | 沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪 |
F444 | 9790 | 乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢 |
F564 | 97A0 | 裏裡里離陸律率立葎掠略劉流溜琉留 |
F684 | 97B0 | 硫粒隆竜龍侶慮旅虜了亮僚両凌寮料 |
F7A4 | 97C0 | 梁涼猟療瞭稜糧良諒遼量陵領力緑倫 |
F8C4 | 97D0 | 厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令 |
F9E4 | 97E0 | 伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦 |
FB04 | 97F0 | 歴列劣烈裂廉恋憐漣煉簾練聯 |
FBEE | 9840 | 蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼 |
FD0E | 9850 | 榔浪漏牢狼篭老聾蝋郎六麓禄肋録論 |
FE2E | 9860 | 倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀 |
FF4E | 9870 | 湾碗腕 |
こぼれ話
で、なんでこんなことが必要だったかと言うと
今ではにわかに信じがたい話ですが、MSX2のリリース時点(1985年)では漢字混じりの日本語表示をハードウェア側で行う環境が整っていませんでした。漢字ROMの部品が高価なため、コストアップを嫌ったメーカーは安価な機種で漢字ROMを搭載しませんでした。まぁMSXの場合ANKコードのGRAPH文字(日月火水木金土・大中小・年月日・時分秒)は表示できましたけど、文字数が全然足りないわけです。
1987年に29800円で発売された超低価格のMSX2(FS-A1, HB-F1)は当時爆発的に普及しましたが、もちろん漢字ROMは非搭載です。漢字ROMはMSX2の時点ではオプション(周辺機器)の扱いです。FDD搭載のモデルでも漢字ROMが搭載されないケースがあり、「VRAMを128KB搭載しているが漢字ROMは利用できないMSX2」という最低限なハードウェアスペックがMSXの市場に溢れました。
日本産のいわゆる御三家と呼ばれた8bitPCやPC-9801は漢字ROMが当然のように搭載されていましたし、実用ではなくゲーム用途ならMSXでも漢字混じりの文字表示がほとんど限定的(メーカー側が予め制御できる程度に留め、アプリケーション毎にフォントを内蔵して解決した)ですから、MSXユーザーの中でもそんな苦労の経験ない人のほうが圧倒的に多いですが、MSXで日本語を表示しようとしたソフトウェアの開発は…それはそれはご苦労されたようです。
「ねこいらず」使用時は裏のVRAM 64KBがまるまるフォントデータで埋め尽くされるので、これをゲーム用途へ活用するのは難しいのでした。DMシステム2ではVRAMではなくMSX-DOS2のマッパーRAM(拡張メモリ)へフォントデータを配置できる「マッパーRAM版のフォントドライバ」も開発されたので、VRAMが足りない問題は多少解決しました。