Gigamix Online

懐かしの8bitおもちゃPC「MSX」を骨までしゃぶり尽くそう。MSXの最新ニュース、ブログ、自作ソフトの配布など。

DMシステム2:「ねこいらず」という当時の8bitパソコンで不要だったがMSXでは必要だった日本語表示技術のメモ

絶賛追記中

 拙作「DMシステム2」の各種ドライバをオープンソースで公開する作業の一環で、「ねこいらず」というフォントドライバを公開するにあたりフォントデータの構造を理解する必要があったので、解析結果を忘れないうちにメモしておきます。

半角文字

  • 文字コード 0x20~0xFF(224文字)、計2016バイト(9×224=2016)格納。
  • フォントデータの0バイト目から、1文字あたり9バイト(6bit折り返し×12行)で、224文字分連続している。
  • DMシステム2の日本語表示時は文字コードが「シフトJIS」で解釈されるため、本来であればシフトJISで表示できない1バイト目の領域(0x80~0x9Fと0xE0~0xFF)は使用できないが、「ねこいらず」ではMSXの半角文字のデザインが無駄に入っている(データ領域を端折ると誤動作する)。

ちなみに文字コード 0x7F も表示はできないがデータの領域は確保されている。

半角文字の計算を端折るためかな?

全角文字

  • JIS第1水準の文字コード 0x8140~0x9872(「腕」)まで格納。
  • JIS第2水準は含まれない。
  • フォントデータの2016バイト目から、1文字あたり18バイト(12bit折り返し×12行)。
  • シフトJISの領域外である文字コード(2バイト目が0x00~0x3F、0x7F、0xFD、0xFE、0xFF)はデータ領域が確保させずに詰められている。半角文字では領域があるのに!!
  • 2020年現在JIS第3水準として定義されている一部のコードは意味が全く違うデザインが含まれる。

「ねこいらず」開発当時は未定義だったものの1994年に「JIS X 0208」にて規格化された文字コード(主にJIS第3水準の部分)についてはデータ領域が確保されており適当なデザインデータが入っている。そのため、2020年現在の最新規格で作成されたシフトJISのテキストデータを「ねこいらず」で表示しようとすると違う字形になってしまう。

「ねこいらず」とは?

 漢字ROM(というフォントデータを含んだIC)を搭載しないMSX2以降の機種で漢字混じりの日本語表示を行うため、JIS第1水準に準拠した12px角のフォントデータをVRAMの裏画面(10000h)へを配置し、日本語表示を行うソフトウェアです。漢字ROM要らずだから「ねこいらず」。

 やってることと言えば、アメリカ産のIBM/PCで「DOS/V」として日本語表示を行う技術(メモリにフォントデータを常駐してグラフィック画面へ日本語の文字を表示する手法)とほぼ同等です。

 作者はKICHIさん(お元気でしょうか?)。元々DMシステム2とは関係がなかった独立したソフトウェアでしたが、作者自らDMシステム2のフォントドライバAPIに合わせてリリースしてくださったのでした。

 なお「ねこいらず」はMSX向け漢字ROM相当のハードウェアやインターフェースをソフトウェアでエミュレートするものではありません。

で、なんでこんなことが必要だったかと言うと

 今ではにわかに信じがたい話ですが、MSX2のリリース時点(1985年)では漢字混じりの日本語表示をハードウェア側で行う環境が整っていませんでした。漢字ROMの部品が高価なため、コストアップを嫌ったメーカーは安価な機種で漢字ROMを搭載しませんでした。まぁMSXの場合ANKコードのGRAPH文字(日月火水木金土・大中小・年月日・時分秒)は表示できましたけど、文字数が全然足りないわけです。

 1987年に29800円で発売された超低価格のMSX2(FS-A1, HB-F1)は当時爆発的に普及しましたが、もちろん漢字ROMは非搭載です。漢字ROMはMSX2の時点ではオプション(周辺機器)の扱いです。FDD搭載のモデルでも漢字ROMが搭載されないケースがあり、「VRAM 128KB搭載・FDDは利用できるが漢字ROMは利用できないMSX2」のハードウェアスペックがそれなりに溢れました。

 日本産のいわゆる御三家と呼ばれた8bitPCやPC-9801は漢字ROMが当然のように搭載されていましたし、実用ではなくゲーム用途ならMSXでも漢字混じりの文字表示がほとんど限定的(メーカー側が予め制御できる程度に留め、アプリケーション毎にフォントを内蔵して解決した)ですから、MSXユーザーの中でもそんな苦労の経験ない人のほうが圧倒的に多いですが、MSXで日本語を表示しようとしたソフトウェアの開発は…それはそれはご苦労されたようです。

 「ねこいらず」使用時は裏のVRAM 64KBがまるまるフォントデータで埋め尽くされるので、これをゲーム用途へ活用するのは難しいのでした。DMシステム2ではVRAMではなくMSX-DOS2のマッパーRAM(拡張メモリ)へフォントデータを配置できる「マッパーRAM版のフォントドライバ」も開発されたので、VRAMが足りない問題は多少解決しました。