Gigamix Online

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

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

 MegaSCSIのノウハウ備忘録。

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

SCSIストレージを実機でバーティーションを切りながらフォーマットする(SFORM)

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

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

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

 注意点は、切られたパーティーションはWindowsでは全て別々のドライブにマウントされます。容量230MBのMOドライブの場合、7ドライブ分がマウントされます。パーティーションが沢山ある場合、Windowsのドライブレターの最後(Z:)を消費し切る場合もあります。2GBのストレージを32MB単位で区切ると単純計算で64のパーティーションに切られます。そういうストレージを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)

Windowsで使うとストレージにボリューム名が勝手に付く問題

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

  1. MSX上で予めボリューム名をつけてからWindows おく。

Windowsで使うとストレージにSystem Volume Information を勝手に作られる問題

  1. Windowsでマウントするたび、Windowsコマンドプロンプトで以下のコマンドを実行する。
d: ←マウントしたドライブ名
rmdir "system volume information" /s /q

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

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

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

公式の手順

 マニュアルを読めばいたって簡単なんです。

  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)

 カートリッジ裏側のSRAM無効化ボタンを押しながらDOS(例えばインストレーションディスクのDOS2)を起動し、以下のコマンドを実行します。

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

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

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

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

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

エラーが出た場合の対処

「Illigal DOS kernel」というエラー

 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」というエラー

 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回目に正常に認識してカーネルインストールが成功しました。

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

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

その他のエラー

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

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

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

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

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

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

こぼれ話

MegaSCSIとは

 MSXパソコン用のSCSI I/Fカートリッジです。元々は「MEGA-SCSI」という名称で同人サークル・似非職人工房からリリースされていました。私は個人的な好みで「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ディスク」というMSXのゲームカートリッジを改造して作成するSRAMストレージで、似非RAMの仕組みにSCSI I/Fを増設した形で自作向けの回路図やドキュメントが公開されていました。

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日

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

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

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

 PCカードとは、90年代のノートパソコンで普及していた拡張端子の一つです。PCカードは名刺サイズ型・5mm厚の寸法になっていて、「FM音源カード」や「フラッシュメモリカード」等の周辺機器をノートパソコンの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となります。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(MSX-DOS2のFAT12環境)の最大容量32MBは今となってはもうゴミ扱いです。NextorはFAT16対応ですが最大容量は2GBで、2GBのSDカードもそろそろ新品の購入が厳しい世の中になってしまいました

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

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

 ちなみに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 を使用しています。

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

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

  • 保存する画像フォーマットは「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が起動し、プログラムが実行されます。「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作品集 (by らいきんぐ!) min.togetter.com

aro(aro.hiro74)さん

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

うにスキーさん

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

ぎゃぶねこ(gyabuneko)さん

www.nicovideo.jp

コイチロ(Koichiro)さん

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

たかをさん

Github - takawon github.com

ぱるぷさん

parupu.hatenablog.com

Pt.Macumbaさん

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

DSAさん

github.com

drmDRM Soundwork)さん

www.youtube.com

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

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

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

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

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

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

MSXPenで半角ひらがなやGRAPH文字などの特殊文字を入力する方法

 PCやスマホでは文字として存在しないMSXの「半角ひらがな」や「GRAPH文字」を、MSXPenの入力フォームでどうやったら入力できるのか?

https://p.gigamix.jp/devmsx/cg/msxpen-special-codes.png

 実は全角文字で入力するとMSXの半角文字へ自動的に変換されます。記事の後半に、コピペ用文字列があります。

MSXPen とは

 MSX BASICによるプログラムおよびZ80アセンブラコードをWebブラウザ上で作成および実行できる、仮想プログラミング環境です。ソースコードをWebの入力フォームに入れるだけ!スマホでも動きます!

msxpen.com

 Webデザイナー界隈でよく使われる「CodePen」というHTML・CSSJavaScriptのコーディングシェアサイトがあるんですが、私はMSXPenはWebブラウザで動作するMSXエミュレータ「WebMSX」の実行環境をカスタマイズしてコーディングシェアできるようにしたWebサービスという認識です。

https://codepen.io/

webmsx.org

日本語の特殊文字

 MSXの仕様上、基本的にシフトJISコードで入力できる文字はそのまま利用可能です。つまり「半角カタカナ」や「カナ記号」は半角文字のまま入力できます。

 Webブラウザ上から入力できないMSXの「半角ひらがな」と「GRAPH文字」は、全角文字で入力するとMSXの半角文字へ自動的に変換されます。全角カタカナも半角文字へ置換されます。

Here it is @nf_ban , half-width characters 🙌https://t.co/SLnwWIOYHw — jannone (@jannone) 2020年8月24日

 ちなみに濁音・半濁音の文字は2文字に分解されて置換されます(「ガ」→「ガ」)。

入力できる特殊文字

  • 【GRAPH文字】♠♥♣♦○●月火水木金土日年円時分秒百千万大中小π┴┬┤├┼│─┌┐└┘╳
  • 【半角ひらがな】をぁぃぅぇぉゃゅょっあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん
  • 【半角カタカナ】ヲァィゥェォャュョッアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン
  • 【半角カタカナ】ヲァィゥェォャュョッアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマ"ミムメモヤユヨラリルレロワン
  • 【カナ記号】。「」、・ー゛゜
  • 【カナ記号(半角文字)】。「」、・ー゙゚
  • 【半角ひらがな(濁音・半濁音)】がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ
  • 【半角カタカナ(濁音・半濁音)】ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ

入力できない文字

MSXPenでGRAPH文字や半角ひらがな等の特殊文字を入力する説明として全ての文字を全角文字にしてBASICリスト化したのだけれど、全角英数字を半角文字へ置換する処理を作者さんへ依頼するのを忘れていて、現状エラーが出ちゃう。うっかりしてた。https://msxpen.com/codes/-MUCFjmMgHLjdD-CEzwd #MSXPen #MSX - Takashi Kobayashi (@nf_ban) 2021年2月23日

 全角英数字は正常に入力できません。半角文字への置換処理が無いため。

コピペ用文字列

100 REM Japanese codes for MSXPen
110 REM " 月火水木金土日年円時分秒百千万"
120 REM "π┴┬┤├┼│─┌┐└┘╳大中小"
130 REM " !”#$%&’()*+,-./"
140 REM "0123456789:;<=>?"
150 REM "@ABCDEFGHIJKLMNO"
160 REM "PQRSTUVWXYZ[¥]^_"
170 REM "`abcdefghijklmno"
180 REM "pqrstuvwxyz{|}~"
190 REM "♠♥♣♦○●をぁぃぅぇぉゃゅょっ"
200 REM " あいうえおかきくけこさしすせそ"
210 REM " 。「」、・ヲァィゥェォャュョッ"
220 REM "ーアイウエオカキクケコサシスセソ"
230 REM "タチツテトナニヌネノハヒフヘホマ"
240 REM "ミムメモヤユヨラリルレロワン゛゜"
250 REM "たちつてとなにぬねのはひふへほま"
260 REM "みむめもやゆよらりるれろわん"
270 END

英語版の特殊文字

@jannone Hi, I tried input the international codes 0x80-0x9F on #MSXPen refer to https://t.co/8UNdk2bAX8 , but i could't print.🤔 Please how to input these codes? https://t.co/Ur65yZbOaD — Takashi Kobayashi (@nf_ban) 2021年2月16日
I checked it. It's going to need a special converter just like I did last time for Japanese characters. It will take some time, because I still have some other tasks for MSXPen. But we'll get there eventually 💪 — jannone (@jannone) 2021年2月16日

 英語版の特殊文字はまだ入力できないようで、対応予定とのこと。

コピペ用文字列

100 REM ÇüéâäàåçêëèïîìÄÅ
110 REM ÉæÆôöòûùÿÖÜ¢£¥₧ƒ
120 REM áíóúñѪº¿⌐¬½¼¡«»
130 REM ÃãĨĩÕõŨũIJij¾∽◊‰¶§
140 REM ▂▚▆🮂▬🮅▎▞▊🮇🮊🮙🮘🭭🭯🭬
150 REM 🭮🮚🮛▘▗▝▖🮖Δ‡ω█▄▌▐▀
160 REM αßΓπΣσµτΦΘΩδ∞φε∩
170 REM ≡±≥≤⌠⌡÷≈°∙·√ⁿ²■

ソースコードが含まれる画像をOCRで入力する方法

#MSX #DumpListEditor の暫定MSX対応版を作ってみました。現在は、BASICプログラムの入力&表示しかできません。プログラムはMSXPenに張り付けて実行して下さい。↓下記ページからダウンロードして下さい。BASICプログラムの作業方法も簡単にまとめてあります。https://t.co/Rg4MyeqidK pic.twitter.com/PYhLqFkZD0 — bugfire2009 (@bugfire01) 2021年2月20日

 MSXでの用途では今までありそうで無かった!画像のOCRでテキストデータ化する、twitter@bugfire01さん開発のアプリ。プログラミング雑誌に掲載されたプログラムをスキャンした画像をこのアプリに放り込むと…!?

MSX文字コード一覧

 Wikipedia および MSX Resource Centerの情報を参考にしています。

MSX character set - Wikipedia

MSX Characters and Control Codes - MSX Wiki

 他にも便利な入力方法がありましたら情報をお待ちしております。→ twitter@nf_ban