Gigamix Online

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

MSXの漢字ROMの互換性を調査する

 MSXは各社から発売されていましたが、漢字ROMにはどのくらい互換性があったのか調査します。また、MSX以外の他機種とテキストを交換する際の互換性についても検討しています。

https://p.gigamix.jp/devmsx/cg/kanjirom_title.png

分かっていること

 当方で確認できる環境で全ての文字を調査したところ、以下のような結果でした。

  1. MSXの漢字ROMは旧JIS(JIS C 6226、いわゆる78JIS)ベースだが、漢字部分は新JIS(83JIS)による字形の変更が実装されている
  2. シフトJISコード 81ADh~859Eh のうち旧JISでは定義されていなかった部分(主に非漢字部分)に、新JISとは違う独自に実装された文字が含まれる
  3. 独自に実装された非漢字部分は東芝ワープロRupoシリーズと互換性があるものの、MSXにおいてはメーカー・機種問わず共通の字形で揃えられており、MSX以外のPCでは採用実績が見当たらないため、MSXにおける事実上の規格化された文字群(いわゆる機種依存文字)である可能性が高い。
  4. 独自実装と思われる拡張文字には「(CR1)」「(禁)」「(均)」や多種な網点等の文字が含まれており、一部の文字はUnicodeでも代用できない。
  5. なお、MSXの規格において、漢字ROMのどのコードがどの文字を表すかといったJIS規格のような仕様は明確に存在しない。

MSXと他機種とで互換性が失われる、独自実装の拡張文字群

 非漢字の赤と緑の文字について解説。この2色に含まれる文字は、MSX以外の他機種と互換性が失われます。

  • ■ 赤字:旧JIS(78JIS)では定義が無かった空きエリアだが、新JIS(83JIS)では定義されたために他機種との互換性が無い文字
  • ■ 緑字:旧JIS・新JISともに定義が無かった空きエリアだが、後の90JISで第3水準に定義されたものが含まれるために他機種との互換性が無い文字

https://p.gigamix.jp/devmsx/cg/kanjirom_non-kanji_large.png

 ここで気になるのが、独自実装された文字群が当方で確認できる環境(FS-4600F・FS-A1ST・MSXPLAYer・HALNOTE・MSXView)すべてで(デザインの誤差はあるものの)字形は同じでした。松下・ソニー東芝・三洋・アスキーHAL研究所各社ともども敢えて独自実装部分を揃えているのかもしれません。

 非漢字部分で独自実装されている文字群は大まかに「上部(81ADh~824Eh)」と「下部(8492h~859Fh)」に分かれます(表中の「モヤモヤポイント」を参照のこと)。上部の実装は共通化されている傾向が強い一方、下部の実装は各社で違いが見受けられます。

MSXとそれ以外との互換性を保つには

 以上のことから、表中の緑字と赤字の文字を避ければ他のレトロPCや2021年現在のPCとの互換性をほぼ保てます(エンコードシフトJISが適切です)。

 逆にMSXの実機との完全な互換性を確保するには、ROM側に緑字と赤字の実装(特にモヤモヤポイントの上部文字群の実装)が必須、ということのようです。

そしてパイオニアの漢字ROMにはMSX規格外のフォントが入ってる旨がマニュアルに書かれているなど無法っぷりがすごい。 — MSX研究所長 (@yoshimatsuTUQ) 2021年5月26日

 えっ!?

漢字ROM全文字ビュアー(閲覧プログラム)

 今回の調査で私が使用しました「漢字ROM全文字ビュアー」です。もしこれ以外の字形である機種をお持ちの方がいらっしゃいましたらぜひご確認&ご連絡ください。→ twitter@nf_ban

ブラウザで動きを確認する

webmsx.org

ダウンロード

BASICプログラム解説

  • 16PXVIEW.BAS…MSX標準漢字ROM(16pxフォント)のビュアー
  • 12PXVIEW.BAS…MSXView互換ROM(12pxフォント)のビュアー(参考出品) ※対象フォントROMが必要です
  • AUTOEXEC.DS2…READMEを表示します

 次々と漢字を表示します。BEEP音のあとに何かキーを押すと改ページ、Sキーを押すと画面をBSAVE形式で保存します。JIS第1水準で計13枚の画像、第2水準まで保存すると計16枚の画像となります。

【おことわり】画面上の文字はROMをダンプした結果ではなく、文字出力エンジンであるDMシステム2による結果ですので、ROMの実際の内容と違って表示される可能性がありますので予めご了承ください。

www.gigamix.jp

12pxフォントの調査

 MSXの標準漢字ROMは16pxフォントですが、MSXの低解像度に適したスモールフォントも存在します。

HALNOTE・MSXView

 HALNOTE及びMSXViewに付属されているスモールフォントです。12pxフォントと12×8pxフォントの2種類を利用できます。FS-A1GTに内蔵されています。12pxはJIS第1水準・第2水準を搭載、12×8pxはJIS第1水準のみ搭載。

https://p.gigamix.jp/devmsx/cg/kanjirom_halnote12_large.png

 12px・12×8pxの双方において、赤字・緑字のどちらも、非漢字部分にMSX共通の字形が実装されていますので、実機で作成したテキストに関しては互換性がほぼ保たれています(モヤモヤポイントの下部は互換性がありません)。

 このフォントは各種対応アプリで日本語表示が可能です。詳しくはブログ記事にて

gigamix.hatenablog.com

松下仕様12ドット漢字

 FS-4600F、FS-A1FM、通信モデムFS-CM1、プリンタカートリッジFS-PW1に内蔵されているスモールフォントです。MSX日本語BASICのCALL KANJI1・CALL KANJI3で対応しています。JIS第1水準のみ搭載。

https://p.gigamix.jp/devmsx/cg/kanjirom_matsushita12_large.png

 緑字は全く実装がなく、赤字はMSX共通の字形ではなく83JIS相当の字形となっています。

【細かすぎて伝わらない】松下仕様12ドット漢字ROMとは、パナソニックの一部環境(FS-4600F、FS-A1FM、FS-CM1)に搭載されたROM。画面解像度が低いMSXでは16px角の標準漢字ROMより12px角が重宝する場面あり。また、漢字BASICの_kanji1と_kanji3でこのROMが利用される。文字の見え方が全然違うでしょ? pic.twitter.com/8fSJPVDd6U — Takashi Kobayashi (@nf_ban) 2020年7月20日

 つまり、MSX以外の他機種との互換性は高いものの、標準漢字ROMのフォントが用いられる CALL KANJI0・CALL KANJI2 と、松下仕様の12ドット漢字が用いられる CALL KANJI1・CALL KANJI3 とでは同一機種でも字形が変わって表示されるということです。

 なお、技術資料ならびにソースコード・実装例については、別ページにて解説しています。

gigamix.hatenablog.com

かんたん手帳リフィルくん

 アスキーのシステム手帳リフィル用印刷アプリに付属されているスモールフォントです。JIS第1水準のみ搭載。

https://p.gigamix.jp/devmsx/cg/kanjirom_refill12_large.png

 緑字は全く実装がなく、赤字はMSX共通の字形ではなく83JIS相当の字形となっています。全角文字は松下仕様12ドット漢字と全く同じデザインですが、83JISで定義されている849Fh以降の各種罫線文字が含まれていません(注:確認プログラムのバグで表示できていないだけかもしれません)。

要町 as MSX-View(MSXView漢字カートリッジ互換ROM)

 MSXViewの付属漢字ROMカートリッジと互換性のある、フリーフォント「要町フォント」のROMイメージです。JIS第1水準・第2水準の漢字を搭載。

https://p.gigamix.jp/devmsx/cg/kanjirom_kanamecho12_large.png

 非漢字部分に90JISの文字が含まれており、漢字部分も90JISの改定が含まれますので、字形としては90JIS相当品と考えられます。他機種との互換性は非常に高くなる一方、赤字・緑字のどちらもMSX実機とは互換性がありません。

 「要町 as MSX-View」は、A to CさんのWebページでダウンロード可能です。→ http://www.yo.rim.or.jp/~anaka/AtoC/labo/labo32.htm

k12x8shn(MSXView漢字カートリッジ互換ROM)

 MSXViewの付属漢字ROMカートリッジと互換性のある、フリーフォント「東雲フォント(12px)」「k12x8(12×8px)」が組み合わせられているROMイメージです。JIS第1水準・第2水準の漢字を搭載。

https://p.gigamix.jp/devmsx/cg/kanjirom_k12x8shn12_large.png

 ここでは「東雲フォント(12px)」を取り上げますが、緑字は全く実装がなく、赤字はMSX共通の字形ではなく83JIS相当の字形となっています。なお「k12x8」も83JIS相当の字形となっています。

 「k12x8shn」は、門真なむさんのWebページでダウンロード可能です。→ https://littlelimit.net/viewfont.htm

こぼれ話

漢字ROMの源流はどこなのか

テクハンやデータパックのI/Oマップにもその名残が…。 pic.twitter.com/BGxE2hvNV1 — ごりぽん (@goripon_tw) 2021年5月26日

 MSXの漢字ROMは東芝の意向が強く働いた、という見解があります。松下製品に搭載された漢字ROMのICは東芝製、とのこと。東芝仕様の漢字ROMがそのまま規格化されたようです。

 私が分からないのは、東芝仕様をMSXの規格として取り込む際、JIS規格(JIS X 9051-1984「表示装置用16ドット字形」)のような「コードと文字の意味付け」を含んでいたのか?ということです。例えば旧JISの空きエリアの一つ「81F9hはマル禁マークにしよう」というような。非漢字部分の共通化されているかもしれない独自実装の文字が実は或るメーカーによっては字形が異なるかもしれない、という可能性を未だ捨て切れません。

https://t.co/KyKVHQhcPz このサイトによると、FS-A1Fの漢字ROMはTC531000AP(マスク番号6616)でMSX-Writeと同一らしいです。HX-33/MSX-WriteIIの漢字ROMであるTC531000P/CP/AP(マスク番号0071)からの拡張からなのかがわかれば、MSX独自拡張文字(?)の由来の手がかりにはなるかと思います。 — たけがみりう@Nice boat. (@RyuTakegami) 2021年5月1日
TC531000CP-0071は手元に吸出し済みの状態であるから画像化すれば良いのね?ちょっと気になったことがあるのでちょっと作業してみるけど… — SASANO Takayoshi (@uaa) 2021年5月4日
レイアウトが全然違うので比較が難しくなっていますけど、こっちがJW-R50FIIの16×16部分(こちらも意図的に縮小しています)。/\の部分はMSX仕様になっていないと記憶してるんだけど、実際どうだったっけか…? pic.twitter.com/wDZx4ZYHnx — SASANO Takayoshi (@uaa) 2021年5月4日

 東芝製の漢字ROMはワープロ「Rupo」シリーズで採用されたものと同等のようです。ワープロが先にあり、MSXへ転用された可能性が高い。

今後作成するフリーフォントの互換ROMは、どこに合わせるべきなのか

個人的にはJIS2004/2012字形とかJIS第三水準の非漢字部分とか…イマドキの仕様を含んだMSX向け漢字ROMを作る方が良いんじゃないのって気がする。 — SASANO Takayoshi (@uaa) 2021年5月4日

 私も、今から漢字ROMイメージを作るのであればJIS2004/2012字形とかイマドキの規格でいいんじゃないかと思います。もちろん後述の「実機と互換性のある漢字フォント」も組み込めば完璧とは思うのですが。

 で、問題なのは、MSXView互換の漢字フォントのほうでして。

MSX-View用漢字ROMって第二水準のグリフの並びがバグってたりするんですが、あれを直すべきかどうかって問題ありますよね。ソフト側で漢字ROMのバグを意識しているならバグを残した並びにしないといけないし、そうでなければ正しい並びに直さないといけないし…どうするのかな? — SASANO Takayoshi (@uaa) 2021年5月4日

となると対処としては… ・純正相当でバグ無しROMの仕様(ヘッダ文字列)を定めてそれにプログラム側で対応する ・(さっき書いたように)ROMの側で対処コード有無に関係なく使えるようフォントデータを配置する …のどちらかだけど、すでにメンテされてない対応アプリを考慮すると後者が無難かも? — ごりぽん (@goripon_tw) 2021年4月26日

うーんダメか。結構派手にズレてたorz。両用は無理ですね。 pic.twitter.com/VwLvyhwlU8 — ごりぽん (@goripon_tw) 2021年4月27日

 MSXViewの純正ROMには、一部文字のデータ位置が間違って格納されているバグがあります。FS-A1GT内蔵のROMも該当します。対して「要町 as MSX-View」「k8x12shn」のように新しく開発された互換フォントROMでは第2水準の漢字データが追加されることに加え、このバグが修正されています。

 純正ROMを「旧仕様」、互換ROMを「新仕様」と呼ぶことにすると、ROMが旧仕様の場合は一部文字の表示処理をソフトウェア側で補正する必要があり、Viewフォント対応の各種アプリは既にそのように実装されています。

MSXViewのバグについてはモノは既に出回っているので結局ソフト側の対応が必要で、ソフト側の対応フローも既にあって各アプリが実装済(そして作者はフェードアウト気味でソフト改修が見込めない)なので、ROMの実装でバグ解消するなら要町の字形に準拠した新仕様のROMでリリースするのが得策かと。 — Takashi Kobayashi (@nf_ban) 2021年5月4日

なるほど……。となると、やはり12×8の第二水準を機械的な変換で埋めて、

 新仕様向けの互換ROMについてはイマドキの規格(90JIS以降)で作成して良いと思っています。逆に、実機との互換性を重視する旧仕様向けの互換ROMを新規作成する場合は以下の要件を満たすべきと考えます。

  1. 文字体系は旧JIS(漢字部分は新JIS)に準拠し、上記の表のようにMSX特有の独自文字群を実装する
  2. 一部文字のバグを逆算して実装する

独自実装された文字をUnicodeへ代用する

 Unicodeでは何のコードが適切なのか…未来情報産業さんのブログにオピニオンがあります。

miraicorp.blog.fc2.com

miraicorp.blog.fc2.com

 ただし、Unicodeでは代用できない文字も含まれています。

MSXの実機と互換性のある漢字フォント作り

AtoCさんの漢字ROMイメージがOCMやMSXPLAYerへ実装されたもので間違いないと思います。jiskan16にはMSX固有の非漢字が含まれていないから足りない部分を手描きする必要があった、と。他のFPGAプロダクツの事情はちょっと分かりません。 — Takashi Kobayashi (@nf_ban) 2021年5月5日

 公式のMSXエミュレータであったMSXPLAYerに実装された漢字ROMは、A to Cさん製作の「漢字ROM image file for msx emulaters」であることは間違いないようです。この漢字ROMイメージはJISで規格化されたパプリックドメインのフォント「jiskan16(JIS X 9051-1984」をベースに、規格外の半角文字やMSX独自実装の文字を手描きで実装したようです。

 「漢字ROM image file for msx emulaters」は、A to CさんのWebページでダウンロード可能です。→ http://www.yo.rim.or.jp/~anaka/AtoC/labo/labo32.htm

あと、このROMイメージのライセンスについて、jiskan16は半角部分がソニー製で、無償で使えますがソニーのコピーライト表記が必要だったはずなので、手描きで置き換えることでライセンス表記を回避したんだと思います。が、これ自身(手描きを含んだjiskan16)に対するライセンス明示が無いんですね。 — Takashi Kobayashi (@nf_ban) 2021年5月5日

ライセンス表記さえちゃんとしていればSONYのフォントでも問題ないってことですか…(8x16.bdfの表記 https://t.co/OS3nCmCScg みたいに)。おそらく自由に使っても問題ないのでしょうが、なんとなくですがAtoCさんの追加部分に関してもライセンスをきちんと設定した方が良い気がします。 — SASANO Takayoshi (@uaa) 2021年5月5日

あの頃は無料のものにライセンスを明示するなんて発想がなかった…。 > jiskan16はパブリックドメインですが手描きの追加部分はライセンスが明示されていません 今更ですが、Apache License 2.0ということにします。@nf_ban — LD A,'akayaman';RRCA (@akayaman) 2021年5月26日

 A to Cさんの粋な計らいで、2021年5月26日、Apache License 2.0の適用となりました。

 MSX共通非漢字部分のライセンスフリーフォントについては、以下のブログ記事をご参照ください。

gigamix.hatenablog.com

参考文献:漢字ROMに関する情報サイト

MegaSCSI:MSX用SCSI I/Fの使い方備忘録

 MSXSCSI I/F「MegaSCSI」のノウハウ備忘録。私のSCSI活用方針は、MSXWindowsとのデータ交換を手軽にするために、MSXに接続するSCSIストレージをWindowsにも持ってゆける環境の構築を目指すものです。

https://p.gigamix.jp/devmsx/cg/megascsi_cartridge_1280x960_2.png

 ちなみにMegaSCSIを初期化(カーネルインストール・SRAMフォーマット)する方法はこちら。

gigamix.hatenablog.com

SCSIストレージを実機でフォーマットしてパーティーションを切る(SFORM)

  1. SFORM-1ではなく「SFORM-2」を利用する
  2. 似非ASPIは「オン」にしてフォーマットする。

 SFORM-1.COMで初期化するとWindowsでは容量0バイトのパーティーションがマウントされますので、Windowsと併用する場合は SFORM-2.COM を用います。

SFORM-2で似非ASPIオンで初期化し直したら全パーティーションがマウントされるけど、MSXで作ったファイルが見えるようになった。気になるのは、エクスプローラーでは.batファイルが見えない+Amazon DriveをインストールしているとSDカードへ勝手に何かファイルを作ってしまう。 pic.twitter.com/AngNwJKsMn — Takashi Kobayashi (@nf_ban) 2018年3月24日

 2018年当時のこのツイートでは System Volume Information フォルダが勝手に作られるWindowsの仕様に気付いておらず、Amazon Driveの挙動を疑っていました。実際はマウントしたドライブ全てに等しく勝手に作られており、Googleドライブも同様でした。

MSXのSFORM-2でフォーマットしたSDカードをWindowsに差してみたら全てのパーティーションがマウントされたようで割と大惨事。そのうえパーティーション0に書き込んだファイルは、パーティーションまるごと見えない様子。なんだろうこれは…似非ASPIをオフにしたから? pic.twitter.com/HsgXjyeZeU — Takashi Kobayashi (@nf_ban) 2018年3月24日

 MSX-DOS2が認識できるストレージ容量は1ドライブ32MB(ファイルシステム FAT12の最大値)のため、32MB以上のストレージをMegaSCSIのフォーマットツールで初期化すると、32MB毎にパーティーションが分割されます。

 注意点は、分割されたパーティーションはWindowsでは全て別々のドライブにマウントされます。容量230MBのMOドライブの場合、7ドライブ分がマウントされます。パーティーションが沢山ある場合、Windowsのドライブレターの最後(Z:)を使い切る場合もあります。2GBのストレージを32MB単位で区切ると60分割されます。そういうストレージもWindowsではマウントできるのですが、大量のドライブがマウントされる状況はハードウェア側の負担を増やす原因にもなりますし、実用的ではありません。

 2021年現在、私はMSXの実機ではなくWindows PC+クラウドサーバでコンテンツの管理をしているため、本音を言えばMSXの実機側はWindowsとのデータ交換が便利なだけで十分です。私が希望することは、SFORM-2 で32MBのパーティーションを1個や2個だけにして初期化したい(分割数を指定したい)ということなのですが、現状は実現していません。Windowsの管理ツールで複数のパーティーションをつなげて無効化すればドライブ数は減りますが自動化する方法が分からず、手動ではとても面倒な作業です。

 私がSFORMで試行錯誤した顛末はこちら。

https://twitter.com/search?q=SFORM-2%20from%3Anf_ban&src=typd&f=live

仮想ディスクの使い方(EP.COM)

忘備録。MegaSCSIでディスクイメージをドライブにマウントする設定例。マウント先のドライブレターは予め空けて実行。設定後のドライブレターはSCSIデバイスに置き換わるのでマウント解除はESETで空にする。WebMSXでダウンロードしたイメージはMSX実機では形式違い?でマウントできないので注意。 pic.twitter.com/WvX7aLP2SF — Takashi Kobayashi (@nf_ban) 2018年9月28日

 ディスクイメージファイルを仮想的にドライブへマウントできる機能です。「MegaFlashROM」や「Carnivore2」など昨今発売中の多機能カートリッジにおいても「SofaRun」アプリを使うと仮想ディスクの機能が利用できますよね。MegaSCSIではEP.COMを利用します。

 MegaSCSIのEP.COMは、保存したイメージファイルの書き込みセクタが連続している必要があります。よって、ファイルの書き換え(作ったり消したり)が頻繁に起きているドライブではセクタを連続して書き込めないままファイル保存される場合が多いためEP.COMの利用に失敗する場合があります。

 ドライブをフォーマットしたうえでディスクイメージファイルをコピーすれば連続したセクタで書き込めるので、EP.COMの利用が捗るはずです。

ストレージをWindowsでマウントすると以後MSXではボリューム名が勝手に付いたように見える問題

 ストレージドライブにボリューム名を付けておかない状態でWIndowsへもってゆくと、勝手にボリューム名「B」が付けられている問題。

 MSX上で予めボリューム名をつけてからWindowsへ持ってゆく。

ストレージをWindowsでマウントすると「System Volume Information」フォルダが勝手に作られる問題

 Windowsでマウントするたび、Windowsコマンドプロンプトで以下のコマンドを実行する。

d: ←マウントしたドライブ名
rmdir "system volume information" /s /q

 何度も入力するには面倒くさい文字量なので、私は日本語入力の辞書へコマンド1行分を単語登録して、都度実行しています。

将来的にはSCSI経由でクラウドストレージへ繋ぎたい

 フロッピーディスクの生産中止によってSDカードへの移行が求められ(ワンチップMSXがまさにそれ)、今度はSDカードも低容量の製品が不足になりつつあり、SDカードが物理的になくなった将来にMSXのストレージドライブを考えるにあたり一つの解決策となり得るのが、インターネット経由のクラウドドライブへ接続する方法です。SCSIMSXで使えるということは、RaSCSIもMSXで利用できるということです。

BOOTHでRaSCSI基板購入して、MSXからMOドライブとして使うことできた。結構嬉しい。はじめ勘違いしてRasPiB+を使っててうまくく動かず。3Bに交換して動いた #RaSCSI #MSX pic.twitter.com/MaXln2yPIw — ハルマッキン (@Harumakkin) 2020年10月28日

MSXでEtherは無理にせよRaSCSI経由でクラウドストレージを直接マウントできれば最高ですね(できるのか調べてませんが)。MegaSCSIなので基本的にFAT12運用なんですよね…(FAT16化に失敗したままウン年経過して未だ実現せず)。Nextor動けばなぁ。 — Takashi Kobayashi (@nf_ban) 2020年10月29日

いちおう、 linuxのクラウドマウントで任意のドライブにマウントできるので あとは rascsi版のドライバがあればナチュラルにアクセスできるはず。(ソースはあるよ) — applesorce (@applesorce) 2020年10月29日

 RaSCSIでMSXのストレージドライブを仮想的に構築し、MegaSCSIとRaSCSIを接続すると、MSXからはSCSI機器に接続する体でアクセスできます。RaSCSIと各種クラウドストレージを接続することでMSXのドライブをクラウド化することは可能なようなんですけど、まだ実践したことがありませんが、夢がありますね!MSXの処理速度の遅さから言えば体感速度はほとんど無いと思われます。フロッピーよりは確実に速い。

 MSXが直接ネットへ繋がるソリューションが今後求められてゆくのでしょうね。

MegaSCSI:MSX用SCSI I/Fをカーネルインストールからやり直す

 MegaSCSIの似非RAM部分をウン十年ぶりに初期化しようと思いました。が、ノウハウをすっかり忘れたので忘備録。今回の作業で2回失敗して、3回目のカーネルインストールで成功しました。

https://p.gigamix.jp/devmsx/cg/megascsi_cartridge_1280x960.png

 ちなみにMegaSCSIの使い方備忘録はこちら。

gigamix.hatenablog.com

公式の手順

 マニュアルを読めばいたって簡単なんです。(なのにうまくいかない)

  1. 「インストレーションディスク(インストール用ディスク)」を作成する
  2. MSX-DOSカーネルをファイルに保存する(KSAVER)
  3. MegaSCSIへカーネルをインストールする(MGINST)

 マニュアル(PDF)→ http://www.hat.hi-ho.ne.jp/tujikawa/ese/megaman.pdf

MSX-DOSカーネルをファイルに保存する(KSAVER)

 マニュアルどおりに「インストレーションディスク(インストール用ディスク)」を作成し、MegaSCSIは抜いた状態MSX-DOS2を起動し、以下のコマンドを実行します。

A>KSAVER <ファイル名>

 保存に成功すると、65536バイトのファイルが生成されます。

MegaSCSIへカーネルをインストールする(MGINST)

 MegaSCSIのカートリッジを本体に挿入し、カートリッジ裏側のSRAM無効化ボタンを押しながらインストレーションディスクのMSX-DOS2を起動し、以下のコマンドを実行します。

A>MGINST <ファイル名> /Sxx /D

 /Sxx オプションは、MegaSCSIを差しているスロット番号。スロット1なら「/S01」です。

 /D オプションは、各種設定を初期化し、「似非RAMディスク(ESE-RAM Disk)」と呼ばれるSRAMストレージのフォーマットを行います。せっかくだからやっておきましょう。

 「Install Complete. Thank you.」と表示されたらインストールは成功したので、本体を再起動しましょう。

 インストレーションディスクの作成時に MSXDOS2.SYS と COMMAND2.COM を含める指示がありましたが、カーネルインストール時にこの2ファイルをSRAMストレージへコピーしているようです。おそらくFDD環境でなくても(例えばCarnivore2のNextorのような環境でも)MegaSCSIのカーネルインストールは可能だと思うのですが、上記2ファイルがカレントディレクトリに配置されている必要がありそうです。

エラーが出た場合の対処

「Illigal DOS kernel」というエラー

 私(nf_ban)が1回目のカーネルインストールに失敗した際のエラーメッセージは「Illigal DOS kernel」という、マニュアルには載っていないエラーでした。保存したカーネルのファイル構造に異常があるようです。

MegaSCSIのカーネル復旧に失敗する図。たいして難しくない正規の手順でやってるはずなんだけどな…🤔 pic.twitter.com/1Ntq8j9BoP — Takashi Kobayashi (@nf_ban) 2021年5月15日

 今思えば…1回目はMegaSCSIを差したままカーネルを保存していたので、本来取得できたであろう「本体に含まれるMSX-DOSカーネル」ではないもの(例えばMegaSCSIに含まれるカーネル)が生成されてしまったのかもしれません。

 確実な方法は、MegaSCSIや各種カートリッジを外し、且つ素のFDD環境MSX-DOS2を起動したうえでKSAVERコマンドを実行すること、ですね。

「Bad ERAMDISK」というエラー

 私(nf_ban)が2回目のカーネルインストールに失敗した際のエラーメッセージは「Bad ERAMDISK」でした。MegaSCSI内蔵の似非RAMディスク(ERAMDISK)が認識していないようです。

2回目。状況が悪化してる!? pic.twitter.com/OfMtaePZY4 — Takashi Kobayashi (@nf_ban) 2021年5月15日

 マニュアルにエラーの解説が載ってはいましたが、原因は「スロット番号の指定が誤っている」・対策は「正しいスロット番号を指定する」とあり、参考になりませんでした。

Badはスロット端子が汚れてると出がちです。電池はなくても認識には関係ないです(電源切ると消えるけど) — MSX研究所長 (@yoshimatsuTUQ) 2021年5月15日

 端子の汚れでそんなエラーが出ることがあるの!?と半信半疑でしたが、念のためキムワイプでカートリッジ端子を拭き上げたら、3回目に正常に認識してカーネルインストールが成功しました。

おお、復旧がうまく行ったようで何よりです。カートリッジ側の端子もですが、そろそろ製造から30年モノとなると本体スロット側も汚れて接触不良を起こしがちなので、ペンチで平たく潰した綿棒で掃除したりしてました。もしもの時という感じですが。 — MSX研究所長 (@yoshimatsuTUQ) 2021年5月16日

 本体側の接触不良でエラーが出る可能性もありそう。本体スロットのクリーニングも試せる選択肢の一つ、と。

前回使ったのが何年前なのか何十年前なのかもう分からないけど、MSXのSCSI I/F「MegaSCSI」を発掘した。恐ろしいことにCR2032の電池が入れっぱなしだった…見たところ汚れや液漏れは無いようだが、電池交換したら使えるのかな…? pic.twitter.com/NGWKcoADqN — Takashi Kobayashi (@nf_ban) 2018年3月8日

 SRAMバックアップ用のボタン型電池(CR2032)の劣化でSRAMストレージが認識できない可能性も無きにしもあらずですが、今回のエラーについては関係がありませんでした。

その他のエラー

 れふてぃさんのWebページ「似非RAMディスクの作り方(How to make ESE-RAM Disk)」にも詳しい技術情報がありますので参考になります。主に自作向け。

http://www7b.biglobe.ne.jp/~leftyserve/ese-org/page-00.htm

カーネルインストールに成功すると

 カーネルインストールに成功すると、MegaSCSIに含まれるSRAMストレージからMSX-DOS2が起動するようになります。めちゃくちゃ高速です!

MegaSCSIのカーネルインストールに成功。素の状態ではMSX-DOS2のシステムファイル2つが入った容量1MBytesの似非RAMディスクで起動する。ストレージの残量が932KBytesだからFDD起動(MAX 713KBytes)ではないことが分かる。さあ、アプリをどんどん入れるぞ〜 pic.twitter.com/XNxp9BhL6k — Takashi Kobayashi (@nf_ban) 2021年5月15日

 SRAMストレージに各種アプリをぶっこむのも良し、SRAMは起動ファイルのみの最低限にしてSCSI接続のドライブに各種アプリを配置するという運用も良し…。

こぼれ話

MegaSCSIとは

 MSXパソコン用のSCSI I/Fカートリッジです。元々は「MEGA-SCSI」という名称で同人サークル・似非職人工房(Ese Artists' Factory)からリリースされていました。私は個人的な好みで「MegaSCSI」と呼ぶことにしています。

 似非職人工房のWebサイトはこちら→ http://www.hat.hi-ho.ne.jp/tujikawa/ese/

 MegaSCSIは、最大7台までのSCSIバイスを認識できます。とは言え、2021年の今SCSI規格の周辺機器はほぼ姿を消しました。1990年代はSCSI規格の全盛期で、ハードディスクを筆頭にMOドライブ(光磁気ディスク)、Zipドライブ(Zip圧縮アーカイブではない)、CD-ROMドライブ、PCカードリーダ(PCMCIA)、スキャナ(TWAIN)などなど幅広い周辺機器が発売されており、MSXでもこれらが制御可能な状態でした。

高校野球のシーズンだから野球ツイート多めですけど、MSXのフロッピーディスクのバックアップは変わらずちびちび進めていますので〜。SCSI環境が動いてる間はどんどん使っていきたい… pic.twitter.com/My3s9KLLpX — Takashi Kobayashi (@nf_ban) 2019年7月24日

MegaSCSIに繋ぐテスト。昔MSXとかMacで使ったMOが未だに大量に残ってて、そろそろ処分したいけど中身を確認してから…。まぁ今日はMOドライブが使えるかどうかの目処くらいは付けたい。 pic.twitter.com/BYPNqv3Re7 — Takashi Kobayashi (@nf_ban) 2018年3月24日

 私が2021年現在に所有するSCSIバイスは「PCカードリーダ」「MOドライブ」です。90年代当時はHDD、CD-ROMドライブ、EPSON製スキャナも接続していました。

MegaSCSIは「似非RAM」の流れを汲む自作ハードウェア

 MegaSCSIの源流は「似非RAMディスク(ESE-RAM Disk)」というMSXのメガROMゲームカートリッジを改造して作成するSRAMストレージで、SRAMストレージの仕組みにSCSI I/Fを増設した形で自作向けの回路図やドキュメントが90年代のパソコン通信ネットで公開され、普及しました。

MEGA-SCSIも一度似非RAM作ってからそこにSCSI増設するような仕組みでしたね。ジャンパー線の山で作るのに苦労しました。ボタン電池でなくキャパシタなので定期的に火入れしてやらないとカーネルもデータも消え去りますがw SDカード使える機器が欲しい・・・#MSX https://t.co/DKrURYOMKB pic.twitter.com/2ZCyjG8PIf — あさひたか (@asahitaka_honjo) 2020年1月16日

When I built mine in 2000 I used Sanyo ML2430 Manganese Litium rechargeable cell with diode/3300r resitor for charging. Kernel stays over 1 year without erase. pic.twitter.com/9ZYEtXUGth — Leo Oliveira (@leo__oliveira) 2020年1月17日

こんなの発掘してしまった。つじかわさんが開発された似非SCSIに、SCC音源を強引に乗っけた基盤ですw 確か似非SCSI初期のプロトタイプの頃で、紙に印刷された回路図を見ながら作った記憶があります。それにしても配線が汚い。。 pic.twitter.com/7w3LQVqHRn — たかを⁧⁨🎯_(:3」∠)_ (@takawo_n) 2020年12月22日

最近仕事が忙しすぎて物作りの時間が取れていないので、懐かしの制作物のご紹介 1995年、大学一年生の時に師匠のつじかわ先輩の手解きで作ったMEGA-SCSI(MSX用SCSIアダプタ)です こんなのを個人で設計できる人が居るのかと衝撃を受けてハード工作に目覚めたキッカケの一品です😀#msx pic.twitter.com/bmgpy18qIQ — くにちこ(Kunihiko Ohnaka) (@kunichiko) 2021年5月30日

 SRAMストレージの容量は本人の頑張り次第で増設できます。MegaSCSIを自作した猛者の方々は256K~2MBytes等の容量でおのおの製作されていたようです。私が2021年現在に所有するMegaSCSIカートリッジは後に発売された製品版(完成品)で、SRAMストレージの容量は1MBytesでした。

 今の御時世1MBytesなんてみみっちい容量でしかありませんが、メモリの少ないMSXでは広大な容量でした。2DDフロッピーディスク 1枚の容量ですら1MBytesよりも劣る713KBytesでした。フロッピーよりも大きい容量で、ハードディスクよりも高速に起動できるSRAMストレージは、当時とても便利なアイテムの一つでした。

SCSIPCカードリーダでmicroSDカードを利用する

 PCカードリーダの話を出す前にPCカード(PCMCIA)の規格の話を書くとして。

 PCカードとは、1990年代のノートパソコンで普及していたデバイス拡張規格の一つです。PCカードは名刺サイズ型・5mm厚の寸法になっていて、「FM音源カード」や「通信モデムカード」「SCSIカード」「フラッシュメモリカード」等の周辺機器をノートパソコンのPCカードスロットへ挿入して利用していました。

久々にMSXの火入れをしたらSCSIのPCカードリーダーへアクセスできなくなって焦る。①うちの子が勝手にPCカードのスロットを入れ替えていたずらしていた、②SDカードのアダプタを交換したらmicroSDが見えるようになった、など綱渡りな運用になっちゃってる…まぁとりあえず復活して良かった。 pic.twitter.com/XCHnAngv8t — Takashi Kobayashi (@nf_ban) 2019年9月21日

 SCSI接続のPCカードリーダは「PCカードの形状になっているストレージデバイスSCSI規格でマウントする装置」として重宝しました。

はい、次はPCカードリーダーをMegaSCSIに繋ぐテストです。これはMSXでの利用経験が無いので、どうなるかは全く分からないな…本体死んでるかもしれんし… pic.twitter.com/JO4hcOKvFY — Takashi Kobayashi (@nf_ban) 2018年3月24日

 世の中には便利なことを考える人が居るもので、デジカメで普及したCompactFlashをPCカードの形状へ変換するアダプタが製造されていました。また、SDカードをCompactFlashの形状へ変換するアダプタも製造されていました。さらに、microSDカードを購入するとSDカードの通常サイズへ変換するアダプタが付属する場合もあります。

32GBでなく32MBのSDカードを2018年のいま用意しようと思うと結構大変で、とりあえずガラケーで使ってたminiSDの32MBが1枚だけ見つかったので、これでやることにする。次に容量の少ないカードは128MBか…ムーアの法則よろしく容量が短期間で倍々に増えていった時代の産物… pic.twitter.com/IABfwdDqmH — Takashi Kobayashi (@nf_ban) 2018年9月29日

 以上の便利なアイテムをマトリョーシカのように組み合わせるととどのつまり「ガラケーで使用した32MBまでのSDカード・miniSDmicroSDMSXでストレージドライブとして認識できる」わけです。MSXで利用する場合はファイルシステム FAT12の制限により、1ドライブの最大容量は32MBとなります(32MB以上のストレージは32MB単位でパーティーションを区切って使います)。

 MSXのストレージドライブはMS-DOSとファイルフォーマットの互換性があることも幸いしました。2021年になっても特に意識せずMSXWindows PCとでSDカード経由でファイル交換ができることは、たいへん貴重なことです。

課題:MSXに使える低容量ストレージが入手困難に

 2021年現在のMSX界隈は、microSDカードやCompactFlash等のFlashメモリカードMSXのカートリッジへ直接利用できる「多機能カートリッジ」と、FAT16に対応する新OS「Nextor DOS」の組み合わせがトレンドになっています。2021年にSCSI機器を揃えるのはもはや酔狂で、今はMegaSCSIではなくそれらを利用したほうが圧倒的に快適です。

Carnivore2のFlashROM退避先としてMegaSCSIの各種ストレージを、MegaSCSIのSRAM(メガROM)退避先としてCarnivore2のCFカードを用意しておけば、それぞれの復旧が簡単になることが今回分かった。んーでも、MSXで大容量ストレージ(最低8MB)を複数用意するのって実際は大変ではなかろうか? pic.twitter.com/s1xm39Ts1K — Takashi Kobayashi (@nf_ban) 2020年9月29日

 とは言え喫緊の課題としては、MSXで利用できる各種ストレージは現在では低容量すぎて入手が困難になりつつあります

 フロッピーディスクは既に生産中止してますから言わずもがな、MegaSCSI(ファイルシステム FAT12)の最大容量32MBytesは今となってはもうゴミ同然です。NextorはFAT16対応ですが最大容量は2GBytesで、2GBytesのSDカードもそろそろ新品の購入が厳しい世の中になってしまいました

 2021年現在のSDカード界隈は、規格がSDXC(ファイルシステム exFAT、最大容量2TBytes)です。そんな中、低容量のメディアが再生産される可能性は殆ど無い状況かと思います。見つけたら買い貯めしておこうかな…

MSXのユーザとして今一番の困り事はストレージ。2DDは生産中止、カセットテープは虫の息、SASIは死亡、SCSIは下火、1チップMSXでSDカード対応したが2GB以下は既に低容量の部類となり危険信号…。クラウド方面に逃げるしかないんじゃないかと思ったり。 — Takashi Kobayashi (@nf_ban) 2011年2月23日

 SDカードが物理的になくなった将来にMSXのストレージドライブを考えるにあたり一つの解決策となり得るのが、インターネット経由のクラウドドライブへ接続する方法です。SCSIMSXで使えるということは、RaSCSIMSXで利用できるということです。

retropc.net

 RaSCSIでMSXのストレージドライブを仮想的に構築し、MSXからはSCSI機器に接続する体でアクセスできます。データはRaSCSI上のストレージにもクラウド上にも置けますがMSXの処理速度の遅さから言えば体感速度はほとんど無いと思われます。フロッピーよりは確実に速い。

 しかしMegaSCSIはそのままではFAT12環境であるところが「惜しい」のです。

 MegaSCSIでNextorを動作させる手段は今のところ存在しないと思います。MegaSCSIをFAT16環境へアップグレードする方法もあるらしいですが方法が分かりません。情報がありましたらぜひお寄せください。よろしくお願いします。→ https://twitter.com/nf_ban/

楽しいフォントいじり!MSXの8pxフォントを簡単にデータ化する方法(2021年版)

【2021.4.26更新】PC(Java)用アプリ「MSX Font Editor」での利用方法を追記しました。
【2021.4.18更新】ファイラー「Multi Mente」での利用方法を追記しました。

 MSXでプログラミングしたことがある人なら誰でも一度は「フォントいじり」をした経験があるのではないでしょうか。VRAMメモリを適当に書き換えるだけでキーボードで入力した画面上の文字の見た目がすぐに変化してゆくため、「何を変えたらどのような結果になるか」を瞬時に知ることができる、プログラミング学習にはもってこいの遊びでした。

https://p.gigamix.jp/devmsx/cg/8pxfont-title.png

 ただ、フォントをデータ化するにはちょっとした知識と手間が必要です。昔はMSXの実機上でポチポチとドット絵を描いていたものですが、すでに令和の時代に入っているので、今回はWindows PCを効率よく活用したフォントデータの作成方法を模索します。

MSX向けのフォントデータとは

 MSXにおいて通称的に用いるフォントデータとは、VRAMの「パターンジェネレータ・テーブル」へ転送するためのデータ群です。

https://p.gigamix.jp/devmsx/cg/8pxfont-patterngenerator-table-1.png

 MSXの1文字は8×8ピクセル(px)です。立っているビットが色の付く点と見立て、横1例に8px(=8bit)で、1バイト。これが8行分あるので、1文字8バイトを消費します。

https://p.gigamix.jp/devmsx/cg/8pxfont-patterngenerator-table-2.png

 パターンジェネレータ・テーブルは文字コード0から255まで順に8バイト単位で格納されます。合計256文字分あるので、テーブルの全容量は8×256=2048バイト(=2KBytes)です。

 パターンジェネレータ・テーブルのアドレスは、利用するVDPモード(SCREENモード)によって可変します。SCREEN1・2の場合は0000hから07FFhの2KBytesです。

フォント作成までの手順

各種画像編集アプリでフォントをデザインする

 PCの各種画像編集アプリにて、以下の条件に準じてビットマップ画像を作成します。

https://p.gigamix.jp/devmsx/cg/8pxfont-msxfontset.png

  • 解像度は 256×64px の矩形領域。
  • 文字コード0から255までの文字デザインを左上から右に向かって順に並べます。右端までいったら改行して左端から並べます。8pxフォントなので、1行32文字並べられます。
  • 画像内で使用する色数は2色のみに限定しておくのがおすすめです。
  • デザインする文字は白(#ffffff)、背景は黒(#000000)に固定しておくのがおすすめです。
  • 文字コード00h(Null)・7Fh(DEL)・FFh(カーソル)など、入力できない・表示できない文字コードに対してもデザイン領域(8×8px)を充てる必要があります。通常は空白を入れておきます。

 画像を作成するアプリは使いやすいものならなんでも良いと思います。ちなみに筆者(nf_ban)はAdobe Photoshop および Aseprite を使用しています。

Photoshop・Aseprite向け デザインテンプレート(PSD形式)
ダウンロード → https://www.gigamix.jp/ds2/download/8x8font_template.psd

変換用の画像データを作成する

 画像の編集が完成したら、最終的には以下の条件に準じて「変換用の画像」を作成します。

  • 保存する画像フォーマットは「BMP形式」。
  • 色深度は「モノクロ 2階調」(「モノクロ ビットマップ」「1bit BMP」「2色 BMP」と呼ばれることもあります)
  • データ圧縮オプションがある場合は「なし(無圧縮)」を選択。
  • 作成する画像のファイルネームは半角大文字英数字のみで構成するDOS用の「8.3形式」を強くおすすめします

https://p.gigamix.jp/devmsx/cg/8pxfont-mspaint.png

 上記のデータ形式は、Windowsの標準アクセサリの一つ「ペイント」で作成できます。BMP画像の保存時に「モノクロ ビットマップ」を選択します。

https://p.gigamix.jp/devmsx/cg/8pxfont-xe_256x64_1bit.png

 原寸(256×64px)サイズです。2021年の基準ですとなかなかの狭さですね…

MSXで変換プログラムを実行する

 Webブラウザを開き、以下のURLへアクセスします。

https://webmsx.org/?MACHINE=MSXTRJ&SPEED=800&DISKA_URL=https://www.gigamix.jp/ds2/download/ds2ank_bmp2fnt.dsk

webmsx.org

 仮想MSXが起動し、プログラムが実行されます。

WebMSXでの起動に失敗する場合は、変換プログラムが入ったディスクイメージファイルをダウンロードし、各種MSXエミュレータでドライブAへイメージを挿入したうえで実行してください。
ダウンロード → https://www.gigamix.jp/ds2/download/ds2ank_bmp2fnt.dsk
なお、BASICプログラムのため処理速度は極めて遅いです。エミュレータ環境の場合、CPU速度を極限まで高めたうえでのご利用をおすすめします。
WebMSX(turboRの8倍速)を起動 → https://webmsx.org/?MACHINE=MSXTRJ&SPEED=800

「Insert Disk/File for Drive:A」と表示されるとプログラムが一時停止します。この状態で、「変換用のBMPファイル」をフロッピーディスクアイコン(Drive:A)の「FILES」へドラッグアンドドロップしてください。

https://p.gigamix.jp/devmsx/cg/8pxfont-insert-webmsx-1.png

 仮想DriveAにBMPファイルが入ると、次のBMPファイル一覧表示(FILES "*.BMP")にてドロップしたBMPファイルが見えていることを確認しくください。

https://p.gigamix.jp/devmsx/cg/8pxfont-insert-webmsx-2.png

 MSXの画面内でファイルネームを指定するとデータ変換が行われ、拡張子 .FNT のフォントデータファイル(容量 2055バイト)が作成されます。

https://p.gigamix.jp/devmsx/cg/8pxfont-insert-webmsx-4.png

 作成されたフォントデータファイルは仮想DriveAのディスクイメージに格納されています。黄色いフロッピーディスクのアイコンから「Save Disk Image」をクリックするとディスクイメージファイルをローカルPCへダウンロードできますので、ディスクイメージファイルの中を開いてフォントデータファイルを取り出してください。

フォントが白黒反転した場合の対処方法

 画像作成のアプリケーションによっては、変換後のフォントが白黒反転している場合があります。

https://p.gigamix.jp/devmsx/cg/8pxfont-insert-webmsx-3.png

 当サイトで提供する変換ツールでは、文字色は白・背景色は黒として扱いますので、場合によっては白黒反転処理が必要です。白黒反転したフォントに対して「Invert it?」の質問に「Y」キーを押すと再反転処理を行い、フォントを修正します。

Indeed photoshop format uses an inverted palette both in bitmap and indexed color mode 👍 — Jon Cortázar (@Jon_Cortazar) 2021年4月13日

 私が使用するアプリ「Adobe Photoshop」ではモノクロ2階調のBMP形式がビット反転していました

生成したフォントの表示確認

 以下のBASICプログラムを実行します。(Ctrl+STOPで確認終了)

1 COLOR 15,0,0:SCREEN 1
2 BLOAD "<フォントデータファイル名>",S
3 FOR I=0 TO 255
4  VPOKE &H1800+I,I
5 NEXT
6 GOTO 6

そのほかの作成方法

MSX Font Editor」を用いる方法

 PC上でMSXの8pxフォントを直接作れる「MSX Font Editor」というアプリがあります。

Marcelo Teixeira Silveira (MarsMSX) did it again! 😎 He just updated his

 「MSX Font Editor」についての詳しい情報とダウンロードは以下のWebページをご覧ください。なお、アプリの起動にはJavaのインストールが必要です。 marmsx.msxall.com

PC上でMSXの8pxフォントを直接作れる「MSX Font Editor」というアプリが便利そうで昨夜からレビュー中なのだけれど、入出力データのBSAVEヘッダが開始9200h・終了99FFhなのはどういう用途なのか想像つかなくて…何かの需要があるのかな?俺はバイナリエディタで開始0000hに変えてしまうけどね… https://t.co/s5U1kVE5O6 pic.twitter.com/KniK5eXfyf — Takashi Kobayashi (@nf_ban) 2021年4月26日

 既存の8pxフォントデータファイルがインポート可能(1文字8バイトで256文字分・2048バイトまで)。データファイルのBSAVEヘッダがあっても無くても読めます。デフォルトの拡張子は *.ALF ですが、「ファイル名.FNT」というように自分で記入すればアクセスできます。

 注意点としては、出力されるフォントデータファイルのBSAVEヘッダが開始9200h・終了99FFhで固定されることです。理想としては開始0000h・終了07FFhのBSAVEヘッダで出力されて欲しいのですが…バイナリエディタを使って各々書き換えてください。

BMP to MSX」を用いる方法

 Windows PC用のMSX向け画像作成・コンバートツール「BMP to MSX」で画像ファイルを開き、SCREEN2用へ変換したBSAVE画像データからフォントデータを作成する方法をご紹介します。

 「BMP to MSX」についての詳しい情報とダウンロードは以下のWebページをご覧ください。 www5d.biglobe.ne.jp

 作成する画像データの仕様は以下の通りです。

  • 解像度は「256×192px」をおすすめします。
  • 利用する色は白黒の2色をおすすめします。
  • ファイルフォーマットはBMP形式(24bit可)ですが、他アプリからBMP to MSXクリップボード(いわゆるコピペ)で貼り付けることもできます。

https://p.gigamix.jp/devmsx/cg/8pxfont-bmp2msx.png

 BMP to MSXにおける変換設定のポイントは以下の通りです。

  • スクリーンモードは「SCREEN 2/4」を選択。
  • ディザパターンは「なし」を選択。
  • 変換の際に使用する色はCOLOR 15(白)とCOLOR 0(黒に見える透明色)の2色に限定しておくことをおすすめします。黒に見えるからと言って実際はCOLOR 1(黒)とCOLOR 0(黒に見える透明色)が混在するようなことが無いように心がけましょう。
  • 「ゼロ化色」にカラー0を設定。
  • 「0番を使わない」のチェックを外す

 変換後の「名前を付けて保存」で、SCREEN2画像データを保存します。保存する画像のファイルネームは半角大文字英数字のみで構成するDOS用の「8.3形式」を強くおすすめします。また、ファイルネームの拡張子は「 .SC2」をおすすめします。

 「BMP to MSX」で変換したSCREEN2画像をMSXのコンソール上でそのまま表示するときれいに変換されているように見えますが、このままではフォントデータを作成したことになりません。以下の修正プログラムを実行するとフォントデータを生成できます。

1 COLOR 15,0,0:SCREEN 2
2 BLOAD "<画像ファイル名>",S
3 FOR I=0 TO &H7FF
4  VPOKE I,VPEEK(I) XOR ((VPEEK(I+&H2000)=15) AND 255)
5 NEXT
6 BSAVE "<フォントデータファイル名>",0,&H7FF,S
7 END

 「BMP to MSX」で変換した画像は、パターンジェネレータ・テーブルが「白から見たパターンデータ(白でビットを立てる)」または「黒から見たパターンデータ(黒でビットを立てる)」のどちらかで生成されます。データは違うのですが見た目は全く同じです。パターンジェネレータ・テーブルの生成に合わせてVRAMのカラーテーブルもリンクして生成されるからです(「ビットパターンが白・背景が黒(F0h)」と「ビットパターンが黒・背景が白(0Fh)」の2種類)。

 フォントデータとして利用するには「白から見たパターンデータ」に統一する必要があります。

パレットを 0番と15番だけ使うようにして パターンのアドレス + &H2000 の値が &HF0 か &H0F かで判別できます。&H0Fだった場合はパターンを全ビット反転( xor 255)ですね。FORI=0TO&h7FF:VPOKEI,VPEEK(I)XOR((VPEEK(I+&H2000)=15)AND255):NEXT こんな感じでしょうか😅 — HRA! (@thara1129) 2021年4月11日

修正プログラムの適用、成功です。WindowsPCで作成した画像データからMSXのフォントデータ化までの手順がすこぶる簡単になりました!アドバイスをありがとうございました。 pic.twitter.com/E7H5QIvlSp — Takashi Kobayashi (@nf_ban) 2021年4月11日

 プログラムの4行目でVRAMのカラーテーブルが「ビットパターンが黒・背景が白(0Fh)」であるパターンはビット反転させることで「白から見たパターンデータ」に修正しています。そしてプログラムの6行目で「パターンジェネレータ・テーブル」の部分だけをファイル保存しています。カラーテーブルの色情報はフォントデータとしては不要なので無視しています。

MSX実機のみで作成(SCREEN5画像から変換)する

SCREEN2ではなく、SCREEN5へ変換したフォントの画像ファイルからMSXの8pxフォントデータを生成するプログラムがとりあえず完成したっぽい。BASICなので凄く遅いけど、基礎技術はこれでOKかな… pic.twitter.com/vakmRqv3Lk — Takashi Kobayashi (@nf_ban) 2021年4月11日

 参考までに、MSX実機のみでフォントデータを作成する方法を記します。上のサンプルプログラムではSCREEN5用ビットマップ画像(BSAVE形式データ)をフォントデータファイルへ変換しています。

 デザインする文字は白(カラー15)、背景は透明色(カラー0)に固定しておきます。

 もっとも、実機で作るなら最初から各種キャラクタエディタを使用したほうが早いとは思いますが。

こぼれ話

フォントの利用方法

 以下のBASICプログラムを実行します。

1 COLOR 15,0,0:SCREEN 1
2 BLOAD "<フォントデータファイル名>",S

 このプログラムは、単にフォントデータをVRAMのパターンジェネレータ・テーブルへ転送しているだけです。転送するだけでフォントが切り替わります。

 ただし上記の方法は他のスクリーンモードへ変更する(例えば SCREEN1の状態で「SCREEN 0」を実行する)とフォントがリセットされてしまいます。スクリーンモードの変更命令はパターンジェネレータ・テーブルなど各種VRAMの初期化(工場出荷時に戻す)を含むからです。

スクリーンモードを変更してもフォントの利用を維持する方法

予想どおりの手法で、スクリーンモードを変えてもフォントが維持できました。実験成功! pic.twitter.com/vnbjAcnvrk — Takashi Kobayashi (@nf_ban) 2021年4月11日

 デフォルトのフォントデータはメインROMに格納されており、MSXのワークエリアに記載されている「フォントの在り処」がメインROMのアドレスを指しているため、MSXBIOSはスクリーンモードを変更するたびにメインROMに格納されるフォントデータをVRAMのパターンジェネレータ・テーブルへ転送しています。

 スクリーンモードを変更しても自作フォントデータを維持するためには、RAMにフォントデータを配置したうえでMSXのワークエリアを「自分で配置したRAMのアドレス」へ書き換えることで実現できます。以下のサンプルプログラムを実行すると、とりあえずは自作フォントの利用を維持できます。

1 CLEAR 200,&HC000
2 BLOAD "<フォントデータファイル名>",&HC000
3 POKE &HF91F,PEEK(&HF344)
4 POKE &HF920,&H0
5 POKE &HF921.&HC0
6 END

 1行目:フォントデータをRAMのC000hへ転送するため、BASICフリーエリアがC000h以上を利用しないように制限をかけています。

 2行目:フォントデータをRAMのC000hへ転送しています。

 3行目:ワークエリア F91Fhにフォントのあるスロット番号を入れます。このサンプルでは「メインRAM・ページ3」のスロット番号をコピーしています。RAMのC000hは、RAMのページ3の先頭アドレスになります。

 4行目・5行目:フォントのあるアドレスを入れます。C000hの場合、C0h・00hの順ではなく00h・C0hの順に入れる必要があります。

 上記のような方法でフォントを維持できるものの、BASICフリーエリアを消費するため逆にメモリ不足のリスクが増えます。本来であればBASICで利用しないRAMのページ0(0000h~3FFFh)・ページ1(4000h~7FFFh)といった空き領域をフォント置き場として活用すべきとは思いますがマシン語によるプログラミングが必要になりますのでここでは割愛します。

ファイラー「Multi Mente」のANK文字表示機能に利用する

 ここで作成した8pxフォントデータは、当サイトで配布しているMSX用ファイラーアプリ「Multi Mente(通称:MM)のANK文字表示機能に利用できます。一部の特殊なハードウェア環境で文字表示が行えなくなる不具合を補正できます。

 「Multi Mente」についての詳しい情報とダウンロードは以下のブログ記事をご覧ください。 gigamix.hatenablog.com

 なお、生成したフォントデータをMMで利用するにはMM用に加工する必要があります

MSXの8pxフォントデータが自由に作れるようになったのでせっかくだからMultiMenteのANKフォントに反映させてみたら文字化け。正しい手順は①フォントデータのコード0から31の部分を削除、②BSAVEヘッダも削除して保存、③環境変数FONT0808をAUTOEXEC.BAT等で設定する、で利用可能になります。 pic.twitter.com/lTo9fEGGRI — Takashi Kobayashi (@nf_ban) 2021年4月18日

DMシステム2で文字装飾表示機能に利用する

 ここで作成した8pxフォントデータは、当クラブのBASIC開発支援環境「DMシステム2」の文字表示機能に利用できます。影文字、縁取り、太文字、斜体等の装飾効果を適用できるので、文字の見た目をさらに彩ることができます。

 DMシステム2についての詳しい情報とダウンロードはDMシステム2のページをご覧ください。

www.gigamix.jp

ビット演算(プログラミング)だけで文字をデザインする

 特に「MSX・FAN」や「マイコンBASICマガジン」などの投稿プログラム雑誌でお馴染みだったフォントいじりは、自作データを用意するのではなく、プログラミングによってデフォルトの文字を加工して新しいデザインへ変更する手法でした。

www.nyaonyao21.com

 横方向へ1pxビット演算(OR演算)して「太文字」を作成する表現は最もポピュラーな表現でしたね。これだけでデフォルト感がなくなる。

sunflat.hatenablog.com

 どのラインをどのような演算でいじるかは作者の好みとセンスが問われるところです。色んな表現がありますね。

MSXのSCREEN 1モードでは文字サイズは8x8ピクセルだが、文字データは6x8なのでスカスカな印象になる。投稿プログラムではビットシフトしたパターンをOR演算で重ね合わせるいわゆる太文字テクニックがよく使われていた。LAST WAR IIでは丸文字っぽさを出すためにさらに複雑なビット演算を導入した pic.twitter.com/HFyliuiBsH — 草薙 昭彦 (@nagix) 2019年3月3日

 NAGI-P SOFTさんのフォントいじりが凄い。「ア」の処理はどうなってんだ!?

フォントデータファイルにBSAVEヘッダを付ける・付けない問題

 MSXシーンにおけるフォントデータファイルの流通をざっと眺めると、BSAVEヘッダは付けた状態で、開始アドレス0000hで保存しているケースが多いようです。

 開始アドレス0000hのBSAVEヘッダを付けるとどのアドレスへもリロケートできるので使い勝手がよくなる一方でデータ容量が2048バイトから2055バイトに増えることで128バイトで割り切れなくなるためフロッピーディスクの空き容量が少し減少します(1バイトのファイルを置くだけでもストレージは128バイト消費するため)。

 昨今の大容量ストレージでは特に気にする必要はありませんが、ゲームソフトへの組み込み等でフロッピーディスクへフォントファイルを保存するような場合では使用容量を削減できるネタの一つになるかもしれません。

フォントデータファイルの拡張子

 完成したフォントデータファイルは拡張子を「.FNT」としている人が多いようです。

MGSDRV:楽曲データ置き場まとめ

随時更新中。見つかり次第随時追加してゆきます。

 PCやスマホで聴くもよし、MSXの実機で聴くもよし。MGSDRV形式の楽曲データをインターネットで配信しているクリエイターさんの配信先URLをまとめました。楽曲の提供に深く感謝します。

https://p.gigamix.jp/mgsdrv/cg/music-resource.png

 ちなみにMGSDRVの概要・ダウンロードは、こちらのリンクからどうぞ。 www.gigamix.jp

らいきんぐ!さん

うちのMSXplayの作品リストを更新いたしました! ★[[New!]]「Charan Po Rantan -Short movie ending theme-」を追加しました #MSXplay #MGSDRV #YM2413 #SCC #PSG #chiptune https://t.co/zKFaQ2qFhe — らいきんぐ! (@liking_birds) 2021年2月14日

 MGSDRVがリリースされた'90年代のパソコン通信ネットにおいて高いクオリティのMGSデータを提供していたレジェンドDTMerの一人。環境をMSXplayへ移して復活。過去作もMSXplay用に再配信。

MSXplay作品集 (by らいきんぐ!) min.togetter.com

 当クラブ制作「MSX版 仮装大賞パネル」へデータを提供していただきました。

たかをさん

これまでに MSX (MSXplay) でコピーしてきたゲームミュージックを、リスト化してまとめました。min.t めっちゃ便利! 一瞬でまとまった!🥰 Game Music on MSX (MSXplay) byたかをhttps://t.co/1a4pbH6fL7 #MSX #MGSDRV #MSXplay #OPLL #YM2431 #SCC #PSG #chiptune — たかを🎯 (@takawo_n) 2022年4月29日

 らいきんぐ!さん同様、'90年代パソコン通信の頃からMGSデータを数多く提供していたレジェンドの一人。環境をMSXplayへ移しても昔取った杵柄は今なお健在。過去作もMSXplay用に再調整して配信中。

Game Music on MSX (MSXplay) byたかを min.togetter.com

Github - takawon github.com

GitHub に MGSDRV の曲データ置き場を作りました。ここにこれまでの過去データを含めて置いていきます。MML データも置きますので、音色やエンベロープパラメータなどご自由に使っていただければと思います。https://t.co/kZaGosHFw2 — たかを🎯 (@takawo_n) 2021年3月14日

 当クラブ制作「MSX版 仮装大賞パネル」へデータを提供していただきました。

aro(aro.hiro74)さん

#ゲーム音楽フォロー祭り2021 MSXとMUCOM88で昔のゲーム音楽のコピーやアレンジをやっています。コナミ・ファルコム・ナムコ中心ですが最近は「途中で曲が変わるシリーズ」で界隈のお笑い要員になりつつあります😂 モーメントでジャンル毎に作品をまとめています。https://t.co/7qEJZrjtKD — aro.hiro74 (@arohiro74) 2021年2月27日

 OPLLだけでなくOPN・OPMやMIDI等幅広くチャレンジ。YouTubeチャンネルで各楽曲が聴けます。MSXで制作する楽曲の各動画にMSXplayへのリンクが含まれています。

www.youtube.com

MSX作品集(SCC音源によるWSG音源再現集) twitter.com

うにスキーさん

githubのMuSICA & MGSDRVファイル置き場 https://t.co/B5tTOO769j ディスクイメージや音量設定の補足などを追加しました。登録していないもので、githubだと文字化けして見えるものがそれなりにありますが、どうしたものか。 — うにスキー (@uniskie) 2021年2月6日

 MGSDRVやMuSICAを用いて楽曲を発表している、うにスキーさん。「バーニラバニラ…」は本気で笑いました!

githubのMuSICA & MGSDRVファイル置き場 github.com

ぎゃぶねこ(gyabuneko)さん

では、これもシェアさせて戴きます。これは、自分がMSX2+で打ち込んだグラⅡの最終面の曲を耳コピしたMMLのソースリストですが、Compileしてplay(再生)ボタンを押すと、曲が鳴ります。https://t.co/ZgcURvByyP — ぎゃぶねこ (@gyabuneko) 2020年1月22日

 OPLL・PSG・SCCの3音源を駆使してアーケードゲームのBGMをMGSDRVで次々と再現。複数台の同期演奏も見もの。

www.nicovideo.jp

コイチロ(Koichiro)さん

以前公開していたサイトを再公開しました。内容は変わってませんが、よければ覘いてやってください。K's MSX Workshttps://t.co/p5o6pCUzGq — コイチロ Koichiro (@msxworks) 2021年1月23日

Koichiro's MSX works xirco.html.xdomain.jp

ぱるぷさん

 黎明期のアーケードゲームは音声出力にPSGや波形メモリ音源が多用されていて、オールドゲーマーの耳を楽しませていました。そんな名曲の数々をMSXで上手く再現しています。

#ゲーム音楽フォロー祭り2021 MIDIやMSXを使った80年代のゲームミュージックやDominoの定義ファイルを作ったり作らなかったりしています。最近はグラディウスやペンゴや初期ナムコのゲームなど波形メモリ音源のゲームを、MSXでSCCを使って作ることに注力しています(*'▽')https://t.co/teXBakrSTS — ぱるぷ (@parupu_x_nagae) 2021年2月27日

Pt.Macumbaさん(YouTube PMC Ongaku)

#YM2413 (MGSDRV)で打ち込んだデンジャラスシードの5面BGM(Mars)です。https://t.co/5iDV69S3eu リハビリがてらの打ち込みです。原曲より疾走感強めです。 — Pt.Macumba (@Pt_Macumba) 2022年3月26日

 セガレトロゲーム機に精通していて、MGSDRVでマスターシステムっぽく演奏する技法を数多くご存知。レトロ調な動画に懐かしを感じるYouTubeチャンネルで各楽曲が聴けます。MSXで制作する楽曲の各動画にMSXplayへのリンクが含まれている場合があります。

www.youtube.com

K.H.(焼飯太郎)さん

#5月も半ばだがフォロワーさんに自己紹介しようぜ 幼少期より素敵なメロディ・ハーモニー・コード進行の音楽に恋して、声の多重録音やチップチューン打込みやっています。モーメント一覧https://t.co/uEtwxDcy3P YouTubehttps://t.co/TfEVVcDVN2 SoundCloudhttps://t.co/yqGIfEFHaa pic.twitter.com/xkmc7yy1Wk — K.H.(焼飯太郎) (@Yakimeshi_Taroh) 2022年5月14日

 #深夜の2時間DTMMSXを使用した楽曲提供でお馴染み。作曲してリリースまでの時間が短くて本当に羨ましいです。twitterのモーメントに楽曲がまとめられています。YouTubeチャンネルで聴くこともできます。

 当クラブ制作「MSX版 仮装大賞パネル」、「MSX版 千葉の某ニュース」へデータを提供していただきました。

www.youtube.com

DSAさん

YM2413+PSG実チップで演奏したソーサリアン・基本シナリオ全曲集です。88版(YM2203)準拠です。https://t.co/KsduweyDu8 — DSA (@ym2413) 2020年12月4日

 MGSDRV形式のMMLWebブラウザ上で作成できるWebサービスMSXplay」を運営する、DSAさん。昨今のMSXシーンで誰もがお世話になっているYM2413エミュレーションエンジンの開発者であり、音源を極めた楽曲は流石のクオリティ。方や #素YM2413#素2413)の提唱者。

github.com

www.youtube.com

drmDRM Soundwork)さん

月が変わりましたので、12月度のMSX曲を公開します。Puffy Amiyumiより「Hi Hii」を、MSX音源でカヴァーしたものです。以前公開したものから、SCCによる簡易PCM再生のドラム音色の入れ替え、FM音色の微調整等を実施しています。#MSXplayhttps://t.co/fXItjtwSx1 — drm (@NudiDrm) 2020年11月30日

 2000年頃のチップチューンというジャンルが確立しつつある頃よりMSXを用いてライブ活動をする、チップチューナー。YouTubeチャンネルで各楽曲が聴けます。MSXで制作する楽曲の各動画にMSXplayへのリンクが含まれている場合があります。

www.youtube.com

新田忠広さん

以前、自身が取り組もうと始めたMSXBASICでどこまで出来るか!?の試みは概ね3回で限界を知り🥲 MSXplayへの移行を固めました🔥 今回は、限界を知った前回の曲をMSXBASICからMSXplayに移植+アレンジとなりました。 YM2413+PSG vanillaから YM2413+PSG+SCCへ!! - 新田忠弘【Tadahiro Nitta】Bandcamp始めました。 (@TadahiroNitta) 2022年3月19日

 「サーク」「幻影都市」など'90年代のMSXシーンで圧倒的なクオリティのゲームBGMを産み出していた元マイクロキャビンの新田忠広さんが自身のアルバム制作にMSXを再活用。一部楽曲ではMMLも公開されています。

tadahironitta.bandcamp.com

芦原みくにさん

過去作含めたMGSファイル置き場も貼っておきますhttps://t.co/jS5j0gqDA2 — 芦原みくに (@SW_M004) 2021年12月14日

 わざわざカシオMX-101を購入してMSXで音楽活動を開始する平成生まれの若人という存在に、お父さん世代の俺(nf_ban)としては大変ありがたい…と思うわけです。自身のホームページ「MGSのお部屋」にてデータを配布中。

nuresen.be

NANAさん(YouTube ななちゃんねる)

YouTubeチャンネル開設したので宣伝です YSよりPALACE OF DESTRUCTION https://t.co/j95gm4Z7CB 悪魔城伝説よりBeginning https://t.co/9DC9nHdGht 魍魎戦記MADARAよりMA・DA・RA https://t.co/YSEgro2wfh スーパーストⅡよりRyu Stage https://t.co/uFA49dzOgB#MSX #MGSDRV #msxplay — NANA@音楽制作リハビリ中 (@rx7_nana) 2021年12月9日

 昔はMSXを使って活動されていて、ブランクを経て最近MSXを用いた音楽活動へ復帰。YouTubeチャンネルで各楽曲が聴けます。MSXplayへのリンクはtwitterで配布されています。

www.youtube.com

特定のWebページが存在しないけどtwitterで楽曲を公開されている方々

MSX #MML #MSXplay.js 沖縄 童歌 てぃんさぐぬ花 https://t.co/WYs0qBdcW4 — 1re1 (@1re1) 2019年10月27日

 1reiさん。音楽に限らず幅広いMSXの活動。「舟歌」のコライトもありましたね。

YS2のOPのドラムパートだけをここ1年で身に着けた技術で作り直してみたけど意外といけてる気がするhttps://t.co/YBlXwBXIFu#MGSDRV — gary (@keijiro_im) 2020年2月2日

 garyさん。当クラブ制作「MSX版 仮装大賞パネル」へデータを提供していただきました。

OPLLにも興味がありましてよく見かけるMSXplayに挑戦してみました!仕様とか全然把握できてませんがとりあえず作ったので… pic.twitter.com/1hyHSoh51d — ムカデンス (@XkE7scsNMWwd26L) 2020年11月23日

 ムカデンスさん。MSXの音源に最近触れて練習中のご様子。2オペレータな貧弱チップですけど楽しいですよ!

aciiiiiiiiiiiiiiiiiiiiiiiiiidhttps://t.co/ScAMQktAog — Xyz (@XyzGonGivItToYa) 2020年2月11日

 Xyzさん。海外でMMLを書いている人は珍しい(海外のチップチューナーはトラッカーがトレンド)。

 xaviel@フィさん。近年ものすごいハイペースでレトロゲームBGMのMGSデータで数多くリリースされているのですが、まとめサイトが存在しないのです。

 ハムカツさん。MSXの楽曲を各種チップチューンアプリで再現する中、MSXplayにも挑戦開始。トラッカーとMMLを両方使いこなせる人はうらやましい…。

www.youtube.com

 MDPC(MSX研鑚推進委員会)さん。MSXでPCMを使った各種技術発表はただただ驚くばかりなのですが、その一つに「MGSDRVの楽曲再生で音声出力を行う」という超技術(ツール有)も!

 他にも色々いらっしゃるのだけれど追いきれない!ハッシュタグ #MSXplay#MGSDRV で探してみてください!

Zipでまとめている人

めっちゃある!

www.msx.org

楽曲データをネットでシェアしてみませんか?

 2021年の今ならWebブラウザhttps://msxplay.com/ へアクセスしてデータファイルをドロップしたりMMLを貼り付けるだけで楽曲が演奏できる・シェアできるいい時代になりました。

 1990年代のパソコン通信全盛期に作ったデータをお持ちの方、久しぶりにMMLを書きたい・最近MMLを書いたという方…ぜひ MSXplay.com でお手持ちのMGSデータを使ってみてください。

 識者のみなさま、情報をありがとうございます。

MGSDRVのトップページ → https://www.gigamix.jp/mgsdrv/