Gigamix Online

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

似非DOS for MSX 互換性チェックリスト

随時更新中。

【2022.12.02 22:30更新】 v0.15のDOS2モードにおいてCOPYコマンドに不具合が発見されましたので、ご注意ください。

https://p.gigamix.jp/devmsx/cg/dosformsx-compatibility_title.png

似非DOS for MSX とは

 MSX-DOSと互換性がある、ライセンスフリー(MIT License)の互換OSです。MSX-DOS(1)モード・DOS2モードの2タイプがあり、DOS2モードでは階層ディレクトリやRAMディスクにも対応しています。

github.com

 当ページは過去にフリーソフトウェアとして配られた各種DOSアプリを「似非DOS for MSX」で実行して、その動作を確認するものです。

動作チェック内訳

似非DOS本体

DOSモード 処理 結果 似非DOSバージョン
DOS2 環境変数SHELL OK 0.11
DOS2 他のドライブへ
ファイルコピー
copy hoge.dat b:
NG
ファイルサイズが変更される
0.15
DOS2 他のディレクトリへ
ファイルコピー①
copy hoge.dat ..
NG
ファイルサイズが変更される
0.15
DOS2 他のディレクトリへ
ファイルコピー②
copy hoge.dat ..\
NG
ファイルサイズが変更される
0.15
DOS2 ルートディレクトリへ
ファイルコピー
copy hoge.dat \
NG
ファイルサイズが変更される
0.15
DOS2 他のドライブの
ルートディレクトリへ
ファイルコピー
copy hoge.dat b:\
NG
ファイルサイズが変更される
0.15
DOS2 他のドライブの
サブディレクトリへ
ファイルコピー
copy hoge.dat b:\fuga\
NG
ファイルサイズが変更される
0.15
DOS2 ファイルの削除
del hoge.dat
OK 0.01
DOS2 他のドライブの
ファイル削除
del b:hoge.dat
OK 0.12
DOS2 他のディレクトリに在る
ファイル削除
del ..\hoge.dat
OK 0.13
DOS2 ルートディレクトリに在る
ファイル削除
del \hoge.dat
OK 0.13
DOS2 他のドライブの
サブディレクトリにある
ファイル削除
del b:\fuga\hoge.dat
NG
Error!
0.13
DOS2 ディレクトリの作成
mkdir fuga
OK 0.12
DOS2 サブディレクトリから
ルートディレクトリ下の
サブディレクトリ作成
mkdir \fuga
OK 0.12
DOS2 ディレクトリのリネーム
rndir fuga hoge
OK
ren fuga hoge なら可能
0.12
DOS2 サブディレクトリから
ルートディレクトリ下の
サブディレクトリのリネーム
rndir \fuga hoge
OK
ren \fuga hoge なら可能
0.12
DOS2 ディレクトリの削除
rmdir fuga
OK 0.12
DOS2 サブディレクトリから
ルートディレクトリ下の
サブディレクトリの削除
mkdir \fuga
OK 0.12
DOS2 FORMAT
format b:
OK 0.12
DOS2 RAMディスクの確保
ramdisk 512
OK 0.12
DOS1 FORMAT
format b:
OK 0.12
DOS1 RAMディスクの確保
ramdisk 512

機能が元々無い
0.12

MultiMente(MM)

MM version 2.08_K を使用。https://gigamix.jp/multimente/

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.08
DOS2 ファイル一覧表示 OK 0.09
DOS2 他のドライブへファイルコピー OK 0.09
DOS2 他のディレクトリへファイルコピー
..
OK 0.09
DOS2 他のディレクトリへファイルコピー
..\
OK 0.13
DOS2 ファイルの移動(Mキー) OK 0.09
DOS2 ファイルの削除(Dキー) OK 0.09
DOS2 ファイル名の変更(Nキー) NG
ファイルが見つかりません
0.13
DOS2 ディレクトリの作成(Kキー) OK 0.09
DOS2 ディレクトリのコピー(Cキー) OK 0.09
DOS2 ディレクトリ名の変更(Nキー) NG
ファイルが見つかりません
0.13
DOS2 ディレクトリのコピー(Cキー) OK 0.09
DOS2 ディレクトリの移動(Mキー) NG
「重複しています」と表示される。ディレクトリは移動するがディレクトリ内のファイルは消失する
0.13
DOS2 ディレクトリの削除(Dキー) OK 0.09
DOS2 ファイルの内容表示(Vキー) OK 0.09
DOS2 ディレクトリツリーの表示 NG
カレントディレクトリのファイルもツリーに一覧表示される、ツリー内の表示が全て同じファイル名
0.13
DOS2 ファイル・ディレクトリの並べ替え(INS/DELキー) NG
ファイルが見つかりません
0.13
DOS2 ソート結果の書き込み(Yキー) 未検証
DOS2 ヘルプ表示(F1キー) NG 0.11
DOS2 コマンドの入力(Xキー) NG 0.12
DOS2 プログラムの実行(Rキー) NG
プロンプトに落ちる
0.12
DOS2 外部アプリからの復帰 未着手
DOS2 アプリの終了 OK 0.11

アーカイバ

PMM

LHArc

PMArc

UNArc

UNARC16

UNARC 1.6 を使用。88VA User's Clubにて公開中の「UNARC16.COM」は、CP/M用のアプリです。 http://www.pc88.gr.jp/softlib/?action=list_group&anum=1&from=1&size=20

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.11
DOS2 アーカイブの一覧表示
unarc16 hoge.ark
OK 0.11
DOS2 他のドライブにあるアーカイブの一覧表示
unarc16 b:hoge.ark
OK 0.11
DOS2 アーカイブの展開
unarc16 hoge.ark a:
OK 0.11
DOS2 他のドライブへのアーカイブの展開
unarc16 hoge.ark b:
OK 0.11
DOS2 他のドライブにあるアーカイブを他のドライブへ展開
unarc16 b:hoge.ark b:
OK 0.11
DOS2 アプリの終了 OK 0.11
DOS1 アプリの起動 OK 0.11
DOS1 アーカイブの一覧表示
unarc16 hoge.ark
NG
Bad archive file headerエラーで永久ループ
0.12
DOS1 他のドライブにあるアーカイブの一覧表示
unarc16 b:hoge.ark
NG
Bad archive file headerエラーで永久ループ
0.12
DOS1 アーカイブの展開
unarc16 hoge.ark a:
OK 0.11
DOS1 他のドライブへのアーカイブの展開
unarc16 hoge.ark b:
OK 0.11
DOS1 他のドライブにあるアーカイブを他のドライブへ展開
unarc16 b:hoge.ark b:
OK 0.11
DOS1 アプリの終了 OK 0.11
  • UNARC16では展開したファイルのタイムスタンプは展開時の日時に変更される。
  • UNARC2(ととりあえず呼称する出所不明のアプリ)ではファイルのタイムスタンプが正常に反映される。MSX-DOS1専用アプリ?

ARK

ARK version 0.4 を使用。CP/M用のアプリです。

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.11
DOS2 アーカイブの作成
ark hoge fuga1.dat fuga2.dat
OK 0.11
DOS2 アーカイブを他のドライブへ作成
ark b:hoge fuga1.dat fuga2.dat
OK 0.11
DOS2 他のドライブにあるファイルを他のドライブへアーカイブ作成
ark b:hoge b:fuga1.dat b:fuga2.dat
OK 0.11
DOS2 アプリの終了 OK 0.11

ISH

ISH version 1.10b

88VA User's Clubにて公開中の「ISH110B.COM」は、CP/M用のアプリです。 http://www.pc88.gr.jp/softlib/?action=list_group&anum=1&from=1&size=20

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.11
DOS2 アーカイブの展開
ish110b hoge.ish
OK 0.11
DOS2 他のドライブへのアーカイブの展開
ish110b hoge.ish /a /cb:
OK 0.12
DOS2 アーカイブの作成
ish110b hoge.dat /ss /c
OK 0.11
DOS2 他のドライブのファイルのアーカイブ作成
ish110b b:hoge.dat /ss /c
OK
カレンドドライブに作成される
0.12
DOS2 他のドライブへのアーカイブ作成
機能が元々無い
0.12
DOS2 アプリの終了 OK 0.12
DOS1 アプリの起動 OK 0.11
DOS1 アーカイブの展開
ish110b hoge.ish
OK 0.11
DOS1 他のドライブへのアーカイブの展開
ish110b hoge.ish /a /cb:
OK 0.12
DOS1 アーカイブの作成
ish110b hoge.dat /ss /c
OK 0.11
DOS1 他のドライブのファイルのアーカイブ作成
ish110b b:hoge.dat /ss /c
OK
カレンドドライブに作成される
0.12
DOS1 他のドライブへのアーカイブ作成
機能が元々無い
0.12
DOS1 アプリの終了 OK 0.12
  • ISH110B.COMはアーカイブのタイムスタンプが展開後に反映されない(アーカイブの展開を実行した日時になります)

ISH version 1.10e++

ISH 1.10eにMSX-DOS用のパッチが適用されたアプリです。アーカイブのタイムスタンプが展開後に反映されます。

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.11
DOS2 アーカイブの展開
ish hoge.ish
OK 0.11
DOS2 他のドライブへのアーカイブの展開
ish hoge.ish /a /cb:
OK 0.12
DOS2 アーカイブの作成
ish hoge.dat /ss /c
OK 0.11
DOS2 他のドライブのファイルのアーカイブ作成
ish b:hoge.dat /ss /c
OK
カレンドドライブに作成される
0.12
DOS2 他のドライブへのアーカイブ作成
機能が元々無い
0.12
DOS2 アプリの終了 OK 0.12
DOS1 アプリの起動 OK 0.11
DOS1 アーカイブの展開
ish hoge.ish
OK 0.11
DOS1 他のドライブへのアーカイブの展開
ish hoge.ish /a /cb:
OK 0.12
DOS1 アーカイブの作成
ish hoge.dat /ss /c
OK 0.11
DOS1 他のドライブのファイルのアーカイブ作成
ish b:hoge.dat /ss /c
OK
カレンドドライブに作成される
0.12
DOS1 他のドライブへのアーカイブ作成
機能が元々無い
0.12
DOS1 アプリの終了 OK 0.12

テキストエディタ

KID

MSX-DOS2 TOOLS」同梱の KID version 1.02 を使用。MSXマガジン永久保存版3に収録されています。

モード 処理 結果 似非DOS
DOS2 アプリの起動(ファイル無指定) OK 0.12
DOS2 アプリの起動(ファイル指定)
kid hoge.txt
NG
全角表示できずフリーズすることがある(ファイルによる)
0.12
DOS2 S セーブ OK 0.12
DOS2 N セーブ/新ファイル 未検証
DOS2 E セーブ終了 NG
保存されるがプロンプトがバグる
0.12
DOS2 Q 中断 OK 0.12

APeD

APeD version 0.41 を使用。https://hp.vector.co.jp/authors/VA010445/MSX/kakmsxf.htm

モード 処理 結果 似非DOS
DOS2 アプリの起動(ファイル無指定) NG
Not MSX-DOS2
0.12
DOS2 アプリの起動(ファイル指定)
aped hoge.txt
NG
Not MSX-DOS2
0.12
DOS2 S save/Edit 未検証
DOS2 N Save/New 未検証
DOS2 E Save/End 未検証
DOS2 Q Quit 未検証

音楽再生ツール

MGSEL

MGSEL version 3.01n を使用。https://gigamix.jp/mgsdrv/

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK
MGSDRV.COMはルートディレクトリに置く
0.10
DOS2 ファイル一覧表示 OK 0.10
DOS2 楽曲データの再生 OK 0.10
DOS2 プレイリスト(MGSEL.DIR)の利用 OK 0.08
DOS2 カレントディレクトリの移動 OK 0.12
DOS2 アプリの終了 OK
利用時間は表示されない
0.10
DOS1 アプリの起動 OK 0.10
DOS1 ファイル一覧表示 NG
表示されない
0.11
DOS1 楽曲データの再生 OK
プレイリストの楽曲のみ再生可能
0.11
DOS1 プレイリスト(MGSEL.DIR)の利用 OK 0.11
DOS1 アプリの終了 OK
利用時間は表示されない
0.10

MGSP

MGSP version 2.1.1 を使用。https://hra1129.github.io/software/mgsp_body.html

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.12
DOS2 ファイル一覧表示 OK 0.12
DOS2 楽曲データの再生 OK 0.12
DOS2 カレントディレクトリの移動 OK 0.12
DOS2 アプリの終了 OK 0.12

MPX

MPX version 1.13 を使用。

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK
MGSDRV.COMはルートディレクトリに置く
0.09
DOS2 ファイル一覧表示 OK 0.09
DOS2 楽曲データの再生 OK 0.09
DOS2 カレントディレクトリの移動 OK 0.11
DOS2 テキストファイルの閲覧 OK 0.11
DOS2 アプリの終了 OK 0.09
DOS1 アプリの起動 OK 0.09
DOS1 ファイル一覧表示 OK 0.09
DOS1 楽曲データの再生 OK 0.09
DOS1 テキストファイルの閲覧 OK 0.11
DOS1 アプリの終了 OK 0.09

MuPLAY

MuPLAY version 2.61 を使用。https://github.com/K-Sakanoshita/MuPlay

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.15
DOS2 ファイル一覧表示 OK 0.15
DOS2 楽曲データの再生 OK 0.15
DOS2 カレントディレクトリの移動 未検証
DOS2 アプリの終了 OK 0.12

MsPLAY(まさるん MUSIC PLAYER)

MSPLAY.COM version 0.07f01暫定版 を使用。https://sakuramail.net/fswold/music.html

モード 処理 結果 似非DOS
DOS2 アプリの起動 NG
画面が黒くてフリーズ
0.12
DOS2 ファイル一覧表示 未検証
DOS2 楽曲データの再生 未検証
DOS2 カレントディレクトリの移動 未検証
DOS2 アプリの終了 未検証

グラフィック系

BLS

BLS version 2.00 を使用。当方はパソコン通信(草の根ネット)で入手しましたが、MSX・FAN 1994年6-7月情報号のスーパー付録ディスクに収録されています。

モード 処理 結果 似非DOS
DOS2 アプリの起動 OK 0.15
DOS2 ファイル一覧表示 OK 0.15
DOS2 ベタ画像(BSAVE形式)データの表示 OK 0.15
DOS2 MAG形式データの表示 OK 0.15
DOS2 MAKI形式データの表示 未検証
DOS2 QLD形式データの表示 未検証
DOS2 PIC形式データの表示 未検証
DOS2 カレントディレクトリの移動 OK 0.15
DOS2 ファイルのコピー(Cキー) OK 0.15
DOS2 ファイルの移動(Mキー) OK 0.15
DOS2 ファイルの削除(Dキー) OK 0.15
DOS2 アプリの終了 OK 0.15

巷の24bitカラー(RGB888)をMSXの色(RGB333・332)へ変換するのに最適な輝度は何なのか

 執筆中。とりあえず記事化する。

事の発端

RGB888→RGB333(512色中16色)

 MSX2のVDP・V9938にて実装された「512色中16色のパレット」は、RGBの輝度がそれぞれ0~7の3bit(8階調)の組み合わせで色を作成します。MSX BASICでは「COLOR=(15,7,7,7)」のように色を定義します。

 R(赤)3bit・G(緑)3bit・B(青)3bitなので「RGB333」と表します。

 ちなみに最近のハードウェアはRGBそれぞれの輝度が8bit(256階調)で「24bitカラー」「RGB888」と表したりします。しかも24bitカラーはもはや「最低限の映像表現」とも言われています。凄い時代ですね。

BMP to MSX

TINY Bitmap Converter

MSX Screen Converter

piroPAINT 9918(Pixel Converterツール)

RGB888→RGB332(SCREEN 8)

 MSX2のVDP・V9938の「GRAPHIC7モード(SCREEN8)」にて実装された、256色の固定色です。輝度は赤と緑が0~7の3bit(8階調)に対し、青だけ0~3の2bit(4階調)となっています。

 R(赤)3bit・G(緑)3bit・B(青)2bitだから「RGB332」。3+3+2=8bit、つまり1つの色の点を8bit=1バイトで管理するのです。SCREEN8は固定色なのでパレットの概念がありません。

BMP to MSX

TINY Bitmap Converter

MSX Screen Converter

piroPAINT 9918(Pixel Converterツール)

エミュレータの「MSX実機の色」は、RGB888の何色なのか

 エミュレータ上で指定する「MSX実機の色」は、Windows PC上ではどんな輝度で表示されているのか、という調査です。RGB333・RGB332からRGB888への逆変換というわけです。

MSXPLAYerMSXマガジン永久保存版3 同梱版)

 調査中

openMSX

 調査中

WebMSX

 調査中

MSX Graphic Viewer

 調査中

Susie Plug-in

 調査中

Webアプリ多め!ネットで見つけたMSX向け画像編集ツールまとめ

 ネットで見つけたMSX向け画像編集ツールまとめました。嬉しいことに最近どんどん増えてきました。WebアプリでリリースされているツールはPCだけでなくスマホでも動くかもしれませんね!?

https://p.gigamix.jp/devmsx/cg/msx-graphic-tools_title.png

 Z80アセンブラC言語等の開発関連ツールは別ページにてまとめています。

gigamix.hatenablog.com

閲覧系アプリ

MSX BASIC Viewer(オンライン BASICプログラムビュアー)

@nf_ban 拙作「MSX VIEWer」のマルチプラットフォーム化の一環でWeb(HTML5)版とAndroid版をリリースしました。https://t.co/onpfSjqyMPで掲載していますので、お試しいただければ幸いです。 — みなしん (@shingo_minagi) 2016年11月20日

 Webブラウザ上でMSX BASIC形式のファイルを閲覧できる、Webアプリ。MSXのフォントがWebフォント化されていて、本来は表示できないGRAPH文字も読める!

www.minagi.jp

MSX BASIC VIEWER(オンライン BASICプログラムビュアー, jig.jp版)

MSX BASICのファイルをブラウザにドロップすると読めるツールを作成 MSX-FANという熱い雑誌が数多くのプログラマーを育てた この意思は継がねばなるまいhttp://t.co/NO7RPnqkF3 http://t.co/E2AmdgAaGs — 福野泰介 (@taisukef) 2013年12月23日

 Webブラウザ上でMSX BASIC形式のファイルを閲覧できる、Webアプリ。IchigoJamで知られる株式会社jig.jp 創業者&会長・福野泰介さんが開発。

fukuno.jig.jp

DumpListEditor(ダンプリストのOCR支援ほか)

#DumpListEditor Ver0.55公開しました。X1ユーザー皆さまの情報のおかげでX1対応が完了しました 同梱のX1フォント2種類をWindowsにインストールしてから使って下さい モデル切替をお忘れなく。iniファイルで設定可能です 他モデルのバグ修正なんぞもひっそり行ってますhttps://t.co/iT7WCNP7fm pic.twitter.com/Hgsi77keyP — bugfire2009 (@bugfire01) 2022年7月10日

 元々は各種レトロPCの雑誌に掲載されたダンプリストのOCR(スキャナによる文字認識)の結果を補正しやすくする、Windows用のアプリ。最新版はBASICプログラムの閲覧(MSXにも対応)やテープイメージの補正など、多様な機能が追加されています。

bugfire2009.ojaru.jp

MSX Graphic Viewer(オンライン BSAVE画像ビュアー)

MSX Graphic Viewerをアップデートしました。https://t.co/vLKq4XyF4m#MSX #Webアプリケーション — みなしん (@shingo_minagi) 2021年7月22日

 Webブラウザ上でMSXの画像ファイルを閲覧できる、Webアプリ。BSAVE形式・COPY形式に対応。

www.minagi.jp

COLCOMBG(スプライトの重ね合わせによる組み合わせ色の一覧表示)

https://t.co/AHf13RVfKk MSXツールSAMPLE置き場に COLCOMBG.BAS 追加 スプライトモード2のCCビット使用時のカラー組み合わせリストを表示します。任意のカラーパレットで表示したい場合 1020 BLOAD

 違う色のスプライト2枚をORで重ねると3色目が出るという、スプライトモード2のCCビット使用時のカラー組み合わせリストを表示する、MSX実機用のアプリ。

画像作成・画像変換系アプリ

SCREEN2 画像変換 for MSX(オンライン SCREEN2変換ツール)

ディザパターン変換のサンプル。いつもの人のアップ。輪郭を赤にしています。 島村卯月 【ステージオブマジック】 BANDAI NAMCO Entertainment Inc.#デレステ #TMS9918 #16色グラフィック #MSX1画像 pic.twitter.com/uzWriJ5e5D — なぞの📛まひな (@myna_nazo) 2022年3月6日

 Webブラウザ上で任意の画像ファイルをSCREEN2の画像データへコンバートできる、Webアプリ。変換に用いるデフォルトカラーをMSX1(TMS9918)または MSX2(V9938)のどちらかを選択できます。

nazo.main.jp

SCREEN4 画像変換 for MSX(オンライン SCREEN4変換ツール)

先日MSX2のSCREEN4を教えて頂きました。SCREEN2の仕様で512色中16色だそうで、「SCREEN4とやらが、どこまでやれるか見てみるとしようぞ。」少し色強調してあります。比較用にSCREEN5。 島村卯月 【ステージオブマジック】 BANDAI NAMCO Entertainment Inc.#デレステ #16色グラフィック #MSX2 https://t.co/vnXKn0vdaC pic.twitter.com/eYGFQMCMU2 — なぞの📛まひな (@myna_nazo) 2022年3月8日

 Webブラウザ上で任意の画像ファイルをMSX2用SCREEN4の画像データへコンバートできる、Webアプリ。上のSCREEN2画像変換との違いは、SCREEN2の場合はデフォルトカラーで色変換するのに対し、SCREEN4は元画像の使用色から取捨選択された16色で変換されることです。

nazo.main.jp

MSX Screen Converter(オンライン MSX向け各種画像コンバータ)

MSX Screen Converter使ってMSX1のSCREEN2に変換。思ってたよりも自然な感じに テレビの地上波で電波乱れるとこんな感じでしたよね… #sailormoonredraw pic.twitter.com/BZ29lU0cmt — KUMO (@kumokosi) 2020年5月19日

 任意の画像データをSCREEN 2・5・6・7・8・12の画像データへコンバートできる、Webアプリ。プレビュー画像(PNG形式)のほか、BSAVE画像がそのまま出力できるのが便利。

 注意点としては、アップロードできる画像のデータ容量は400kBytesと少なめなのと、BSAVE形式で出力した画像ファイルにはパレットテーブルの情報が保存されないので出力時に生成されるBASICプログラムも保存してそれを実行する必要があります。

msx.jannone.org

Dithertron(オンライン 汎用レトロPC向け画像コンバータ)

追記)DHITHERTRON 8bit系への画像変換ページ。効果をリアルタイム表示という凄いツール!https://t.co/DPD4lAYydl — 1re1 (@1re1) 2021年9月22日

 任意の画像データをMSX1(TMS9918)用カラーや他のレトロPC向けへコンバートできる、Webアプリ。これホントにSCREEN2の画像?と二度目してしまうくらい高品質なディザリング処理が魅力。出力されるデータは「PNG形式」と「バイナリデータ」の2種類。「バイナリデータ」はMSXのBSAVEヘッダが付加されないので注意。

8bitworkshop.com

BMP to MSXBMP→SCREEN2~12画像変換)

BMPtoMSXでSCREEN2用画像を作成する。色はカラー0(黒)と15(白)しか利用しない。「指定色ゼロ化」で黒をカラー0へ割り当てる。 pic.twitter.com/Pca1zWdNyK — Takashi Kobayashi (@nf_ban) 2021年4月10日

 BMP形式画像データをMSXのSCREEN2・3・4・5・6・7・8・10(11)・12へ変換できる、Windowsアプリ。個人的に大変お世話になっている、定番のツール。

www5d.biglobe.ne.jp

 元のBMPデータの解像度は、予め256×212(192)ピクセルまたは512×424(384)ピクセルに整形しておくことをおすすめします。

TINY Bitmap Converter(各種画像形式→SCREEN1~12画像変換)

TinyBitmapConverterを更新して、P6SRとMSX2の4色モードに対応したり、なんでもピーガーと合体させて直接wavを出力できるようにしたので、その辺を使った動画を作ってみました。四色の世界(PC-6001,PC-6001mkII/PC-6601, PC-8001mkII, PC-6001mkIISR/PC-6601SR, MSX2) - TINY野郎 (@tiny_yarou) 2022年8月21日

 各種画像ファイルをMSXまたはPC-6001の画像へ変換できる、Windows用アプリ。入力画像の色補正機能やSCREEN1用画像が作成できるのが他とは無い特徴。

www.tiny-yarou.com

TINY Bitmap Converter。水色成分を増したほうがスナッチャー味がある… #8色写真 pic.twitter.com/nbeNkjQpBV — Takashi Kobayashi (@nf_ban) 2022年7月18日

BMP → YJK変換(BMP→SCREEN10・12画像変換)

YJK変換の研究は大分しましたが滲みはどうにもなりませんでした。誰かが新たに作ってくれるのを願うばかりです。※ちなみに私が作った変換ツールはこれですhttps://t.co/Z4KNUWcNc7 — MSX研鑚推進委員会 (@mdpc___) 2022年6月23日

 BMP形式画像データをMSX2+のSCREEN10(11)・12へ変換できる、Windowsアプリ。上記のBMP to MSXと変換アルゴリズムが違うので、仕上がり結果も変わります。

mdpc.dousetsu.com

SCREEN10+SCREEN5合成ツール

白猫アップローダーへ、手製のMSX-DOSの実用ツールをアップしました。内容はこのプレイヤーとSC10とSC5の合成ツール、各SC画像をロードして表示、画像データ変換等、4種類が入っています。よろしければDLしてみてください。 後にMRCの方へ置きます。https://t.co/5K6X22KFFJ password: djkqdsfjobgd pic.twitter.com/6GxuHpGxYL — Mstz80ax (@mstz80ax) 2019年8月13日

 MSX2+の自然画モードであるSCREEN10の画像とSCREEN5の画像を合成して、1つのデータで保存できる、MSX-DOS用アプリ。

猫をアニメ絵風に差し替えてSCREEN10で合成した結果 https://t.co/DR6murgLd6 pic.twitter.com/aiWb3xJDy5 — Takashi Kobayashi (@nf_ban) 2019年10月27日

convert9918

github.com

harmlesslion.com

GSRLE(グラフサウルス圧縮形式への圧縮ツール)

https://t.co/iSHEFb0Ld1 GSRLE更新 同じSR7でもBSAVEとグラフサウルスではサイズの計算方法が違うため、そのあたりの修正。デフォルトのヘッダからサイズを判定するときの修正です。(以前のものでも実質的に問題なし) (/212や/256/や/cpで強制指定の場合は関係なし)#MSX pic.twitter.com/SOLFhx4ZrP — うにスキー (@uniskie) 2022年8月7日

 MSXの定番ペイントツール「グラフサウルス」専用圧縮データを実機無しに作成できる、Windowsアプリ。いわゆるBSAVE画像ファイルからグラフサウルス専用圧縮形式ファイルへ変換します。

github.com

LOADSRD(グラフサウルス圧縮形式への展開ツール)

https://t.co/xdlAWcA4WA BSAVE&グラフサウルス画像ローダー パレット周りですがパレットセーブとBSAVE機能をパパッと付けました。画像表示中に "P"でPL?ファイル保存 "B"でBSAVE 左右キーでパレットトラックを選んでからBでセーブできるので、グラフサウルス付録のPLTLNK.BASより楽かも?#MSX pic.twitter.com/rw3TVm3JZv — うにスキー (@uniskie) 2022年8月3日

 MSX実機で動作する「グラフサウルス」専用圧縮データのビュアー(展開ツール)はこちら。BSAVE形式画像への出力も可能。

github.com

エディタ

TinySprite(オンライン スプライトエディタ)

Did you know you can draw sprites on the go? #MSX #Tinysprite pic.twitter.com/X6Z7ZCazE2 — jannone (@jannone) 2022年3月16日

 Webブラウザ上でMSX用スプライトデータをデザイン・出力できる、Webアプリ。スプライトデータはDATA文で出力されます。

msx.jannone.org

うちの子から「Appleの林檎の絵を描いて」と言うのでドット絵でポチポチ描いてみたけど、意外と難しいんだな…。TinySpriteはそのままMSXPenへスプライトデータを持って来れるのがいいね!(スプライト定義・表示プログラムを書く必要あり) pic.twitter.com/kwUIPm8dwY — Takashi Kobayashi (@nf_ban) 2020年8月29日

S・S・T(MSX2用スプライトエディタ)

長々と仕込んでいたネタがようやく完成。拙サイトに「PSYZANSの間」こと、創作物置き場を設けました。第一弾はここでも何度かおひろめしている荒井兄弟謹製MSX2用スプライトツール「SST」です。https://t.co/4KrGtslCMb pic.twitter.com/6l4v4S7zqn — 本名荒井 (@psyzans) 2018年6月14日

 MSXのスプライトデータを編集・出力できる、MSX BASIC用アプリ。MSX2以降に登場した「スプライトモード2(2枚重ねのOR演算で3色表示)」に対応するデータを作成できるのが特徴。MSX・FANの「ファンダム」で採用された逸品が、作者本人より直接ネットで配布中。

psyzans.com

EDIO2(オンライン PCGエディタ)

自作のMSX1 PCGエディタのEDIO2は、ギリギリスマホでも使えそう^ ^ 保存は文字データとしてメモ帳にでもコピペしてください(´・Д・)」 まだ作りかけのツールです^_^https://t.co/dcArcA9dPJ — nao (@nyaonyao21) 2020年10月18日

 Webブラウザ上でMSX1用多色刷り(いわゆるSCREEN1.5モード)の ドット絵を作成できる、Webアプリ。

www.nyaonyao21.com

piroPAINT 9918(SCREEN2ペイントツール)

※piroPAINT9918とは:MSXのフルスクリーン画像を作成する為に作成されたWindows用のペイントツール。公開後に頂いたご意見、ご要望をもとにぼちぼちとVer.UPを繰り返し、終いにはP6や88の画像作成が可能に。(公開場所はTwitterのプロフ欄をご参照下さい) — ぴろやん (@piroyan) 2016年3月8日

piroPAINTいじり2日目。MSXのSCREEN2では輪郭を描かないほうが仕上がりが面白くなると思う。 pic.twitter.com/xyaSZaGcQz — Takashi Kobayashi (@nf_ban) 2013年7月2日

 横8px毎2色の厳しい制限を求められるMSXのSCREEN2画像を描ける、Windows用のTMS9918風ペイントツール。2色を混色した中間色(タイルパターン)にも対応。

wiki.piroyan.com

99x8Edit(SCREEN2 PCG・スプライト・マップエディタ)

タイル・スプライトエディタ、現時点のを以下に公開してみます。たぶん動くと思う https://t.co/Dfo2bZtKPI pic.twitter.com/m51Di68OCC — 宮内悠介 (@chocolatechnica) 2022年8月6日

 小説家の宮内悠介さんが文筆活動の合間にMSX向けの画像を制作できるWindows用アプリを作ってしまわれた!PCGエディタ・スプライトエディタ・マップエディタが付属。MSX(BSAVE形式)へのエクスポートにも対応。

github.com

宮内悠介さんの99x8Edit、動きました!PCGエディタ・スプライトエディタ・マップエディタがセットになってる。MSXに限らずTMS99x8を扱うハードならどれにでも使えそう。今のところ使い方が全然分からないけどそのうち慣れるだろう…。アプリのリリースをありがとうございます。 https://t.co/utnD0CDgQm pic.twitter.com/aDLzwVK9qd — Takashi Kobayashi (@nf_ban) 2022年8月9日

SZMFE(鈴見咲フォントエディタ。SCREEN 2/4 タイルマップエディタ)

こんにちは。自分はここ何年かはマップエディタ兼ねてSZMFEですね。性質上3枚あるパターン/カラーテーブルの1枚分しか表示できないのが難ですが、8枚分切り替え可能なので重宝しています。https://t.co/Q2ykQAWGmN pic.twitter.com/4m1RlykGzx — むらかたとうじ/村方凍二💾 (@ipheion78) 2020年6月8日

 SCREEN2/4に対応するマップチップ(いわゆるPCG)とマップがエディットできる、鈴見咲君高さん制作の実機用アプリ。

hp.vector.co.jp

D2E・E2D(DD倶楽部←→SZMFE 相互変換ツール)

~需要があるかわからないが上げておくシリーズ~ DD倶楽部の.DAT(SC5用)をSZMFEの.EPG(SC2/4用)に変換するツールD2E、その逆変換 E2D。※秘伝のタレことMSX-DOS1は添付されないので各自で味付けしてください。#MSX #indiedevhttps://t.co/fjhn4J5VTr https://t.co/QchtmcaNbn pic.twitter.com/aWs06Na74S — むらかたとうじ/村方凍二💾 (@ipheion78) 2021年8月29日

 前述「SZMFE」とT&Eソフトのペイントツール「DD倶楽部」のスプライトエディタ SPE5用データを相互にデータ変換する、MSX-DOS用アプリ。DD倶楽部のアニメーション機能でゲームキャラの動きを確認するために作られた、という。

 DD倶楽部→SZMFEが「D2E」、その逆変換が「E2D」。

使い方、D2E編(要MSX-DOS) https://t.co/fjhn4J5VTr D2E ファイル名(.DAT 省略可)⏎ ファイル名.EPGと.PL5を生成します。パレット(.PL5)は.DATの1,2が反映されます。.EPGはSC2/4の仕様上、1ライン2色までルールを破ると変換画像は化けますのでご注意ください。 pic.twitter.com/Bpd7fKAJgX — むらかたとうじ/村方凍二💾 (@ipheion78) 2021年8月29日
使い方、E2D編(要MSX-DOS) https://t.co/QchtmcaNbn E2D ファイル名(.EPG省略可)⏎ .EPGファイルを.DATに変換します。PL5ファイルがあれば、1番目と2番目が反映されます。なければMSXデフォルトの色が充てられます。 pic.twitter.com/ThYBacDpyy — むらかたとうじ/村方凍二💾 (@ipheion78) 2021年8月29日

 SZMFEのパターンデータをBMP形式に変換する「E2B」というMSX実機用アプリもあります。

おまけ、E2B(要MSXDOS) https://t.co/9eecd0EbHW SC2/4レベルのSZMFE .EPG パターンデータを BMPに変換します。これは近いうちに記事で公開される予定のシンギュラーストーン全体マップのためTiled向けに用意したツールで.PL5がないと変換されません。マップデータCSV変換もあるのだが、いつの日か。 pic.twitter.com/jtSgHdPfMA — むらかたとうじ/村方凍二💾 (@ipheion78) 2021年8月29日
こんなに時間が経ってから、SZMMP, SZMKO ばかりか SZMFE に言及する方が現れるとは… https://t.co/O8H2zuP82K — 鈴見咲 君高 (@szmzk) 2021年9月1日

 SZMFE作者の鈴見咲君高さんもビックリ。

nMSXtiles(SCREEN 2/4 タイルマップ・スプライトエディタ)

 SCREEN2/4に対応するマップチップ(いわゆるPCG)やスプライトがエディットできる、macOSWindows用のツール。

github.com

 導入事例はこちらのブログが参考になります。

maple4estry.netlify.app

フォント

Image To Font for MSX(オンライン フォントコンバータ)

「Image To Font for MSX」を公開しました。フォントの画像を読み込んで(BSAVE形式の)フォントファイルに変換します。#MSXhttps://t.co/X7pNWMTn4t — なぞの📛まひな (@myna_nazo) 2022年1月29日

 Webブラウザ上で任意のフォント画像からMSX用フォントファイル(BSAVE形式のバイナリーデータ)を作成できる、Webアプリ。

nazo.main.jp

特設:Webブラウザで動く「オンラインMAGローダー」

 個人的に思い入れがあるのでコーナー化。MSXのBSAVE画像を2DDのフロッピーへ大量に保存するため、私は何らかのデータ圧縮をかけていました。特にMAGフォーマットは可逆圧縮が可能だしMSXにも対応していたので'90年代当時は大変重宝していました。

 MAG形式画像ファイルのサンプル(MSX SCREEN7)はこちら → https://p.gigamix.jp/devmsx/cg/MSXUTILS.MAG

RECOIL - Retro Computer Image Library(オンライン 各種レトロPC用画像ビュアー)

Tip: RECOIL also has web, desktop and even smartphone versions. It can view files from a lot of classic platforms. For the MSX, it can even view .SCx, Graph Saurus and Makichan files.https://t.co/sHAa01vPEW — SD-Snatcher (@SnatcherAlpha) 2020年1月6日

 Webブラウザ上でMSXを含む465種類もの各種レトロPC用画像ファイルを閲覧できる、Webアプリ。MSX向けとしてはBSAVE形式・グラフサウルス形式のほか、MAG・MAKI・PI・PICといった'90年代の日本のパソコン通信で流通したファイル形式にも対応しているのが凄い!

recoil.sourceforge.net

RECOIL - Retro Computer Image Library というWebサイトでパソコン通信の頃の画像がブラウザ上で閲覧できるらしく、思わずMSXのSCREEN7画像をMAGセーブしてRECOILで読み込ませてみたらちゃんと縦倍角(200ラインフラグ有効)で表示できた凄い!MAKI形式もいける!🤣https://t.co/umzVHfmZZ5 pic.twitter.com/UZ5cVTG5br — Takashi Kobayashi (@nf_ban) 2022年5月16日

JavaScript PIC/Pi/MAG/MAKIファイルローダー(オンライン 各種画像ローダー)

PIC/Pi/MAG/MAKIファイルローダーをちょい更新。添付は当時驚愕した超絶技巧16色画像ファイル。 http://t.co/4XPnbCfV67 pic.twitter.com/Ae0pWh4XGs — ばに (@raimeiji) 2014年5月19日

 Webブラウザ上で動作する、PIC/Pi/MAG/MAKIファイルローダー。

http://raimeiji.s1006.xrea.com/labo/pmloader.htmlraimeiji.s1006.xrea.com

HTML5 まぐろーだー(オンライン MAGローダー)

で、さっそくGoogleドライブから適当にMAGファイルを探してきて、Webページへドロップする。あぁ、これはMファン「ほほ梅麿のCGコンテスト」のお題画像だ。しかしMSXのSCREEN7のMAGデータは縦2倍で拡大表示しないと正しく見られないんだよな(MAGフォーマットの実装としては正しいのだろうけど)。 pic.twitter.com/9JWk6EvzeI — Takashi Kobayashi (@nf_ban) 2020年8月30日

 Webブラウザ上で動作する、MAGローダー。MSXのSCREEN7画像は縦方向が半分に潰れます。

emk.name

タイトル画像の原画は、Free PhotosによるPixabayからの画像

Webアプリ多め!ネットで見つけたMSX向け開発関連ツールまとめ

【2022.07.30更新】画像作成・画像変換系アプリを別ページへ移動しました。

【2022.07.30更新】開発・プログラミング系アプリ を追加しました。

 ネットで見つけたMSX向け開発関連ツールをまとめました。嬉しいことに最近どんどん増えてきました。WebアプリでリリースされているツールはPCだけでなくスマホでも動くかもしれませんね!?

https://p.gigamix.jp/devmsx/cg/msx-utils_title.png

 画像変換・スプライトエディタ等の画像編集ツールは別ページにてまとめています。

gigamix.hatenablog.com

音系アプリ

MGSDRV関連アプリ

 ミュージックドライバ「MGSDRV」に関連する各種アプリはMGSDRVのページにてまとめています。

gigamix.hatenablog.com

PSG Pad(オンライン PSGエミュレータ

自作のPSG&MMLエミュレータ「PSG for Web」のポータルページを作りました。作例動画もありますので、ぜひご覧ください。https://t.co/l46snOOu3v BASICのPLAY文のMMLに対応しているのがhttps://t.co/ljk6PlX0Dzにはない特徴です。ブラウザで簡単に試せるツールもあります。#PSG #MSX #エミュレータ — みなしん (@shingo_minagi) 2021年7月29日

 Webブラウザ上でMSX BASICのPLAY文で用いるMMLを記述してPSGをエミュレートして発音する、Webアプリ。MSXマガジン「究極のPSGシステム」のMMLにも対応しているのが芸が細かい!

www.minagi.jp

lc2msxmml(LovelyComposer→MMLコンバータ)

LovelyComposerからMSX basic mmlファイルへの変換を整えたのでようやっと公開です ターミナルから直接呼び出せるwin用のビルドのリンクも載せてます 使い方はhttps://t.co/FRTOrvkseRを一読下さいhttps://t.co/VfYDtEmXmW — FuBuKi (@Van0fon) 2022年5月8日

 LovelyComposerで作成した楽曲データ(拡張子 .jsonl)を、MSX BASICのPLAY文で用いるMMLへ変換する、Windowsアプリ(Python実行環境も可)。

とは言え1/2程度の時間で起動してくるおで、お試しでひとまずアップ 次回更新時にリンクも追加しとこう 最適化もlevel1まで実施済み、2はシンボル削り過ぎで起動せず cx_Freeze版、起動速度1/2, exeサイズ3倍 通常の3倍・・・https://t.co/eipy4oPqar#lc2msxmml — FuBuKi (@Van0fon) 2022年5月19日

MML2SMF(オンライン MML→SMFコンバータ)

twitter.com

 MMLからMIDI(SMF)ファイルを生成できる、Webアプリ。

KansasEncoder for MSX(オンライン テープ音シミュレータ)

33年前できなかったテープからのLOADコマンド、CLOADに初成功! Macを使った #MSX 実機クロス開発環境が整った#CMTケーブル はMIDIケーブルと簡単な電子工作で代用可!https://t.co/0Okc5rmkid — 福野泰介 (@taisukef) 2019年4月7日

 Webブラウザ上でBASICプログラムをCLOAD音へ変換できる、Webアプリ。"PLAY"ボタンを押すと、ピーーーー、ギョロギョロギョロっと懐かしの音がします。

fukuno.jig.jp

Waveファイルのフォーマット変換(オンライン MSX turbo R向けPCMデータ作成)

WindowsのPCM(WAVE)データのフォーマット変換はこちらのWebサービスで行いました。https://t.co/r4OEvJqyGK MSX(turboR)互換のデータにするには ①ビット「符号なし8bit(PCM)」、②周波数はL側に3875 or 5250 or 7875 or 15750のいずれか、③チャンネル「モノラル(1チャンネル)」を指定して出力。— Takashi Kobayashi (@nf_ban) 2020年9月4日

 各種WAVEデータ(拡張子 .WAV)の相互変換・周波数・チャンネルの変更が可能なWebアプリ。MSX turbo R規格で採用されたPCMデータをWindows PC等で作成する際に便利です。

www.petitmonte.com

 MSXのPCMデータは以下の仕様となっていますので、それに合わせて変換しましょう。

  • ビットは、符号なし8bit(PCM)
  • 周波数は、4種類のいずれか。3.875kHz、5.25kHz、7.875kHz、15.75kHz
  • チャンネル数は、1(モノラル)

 変換したWAVEデータをMSXで使用する場合は、WAVEデータのヘッダ情報を削除する必要がありますMSX BASIC上で読み込む(ロードする)にはBSAVEヘッダを付与する必要もあるかもしれません。

WAVEデータ形式のフォーマットは以下のWebページが参考になりました。https://t.co/pHzWZfcn5d 先頭40バイトは _LOAD にオフセット付けて読み飛ばし、dataチャンクの波形バイト数の2バイトだけ _PEEKW で把握して(MSXだから2バイトで十分)、データの4バイト目から波形バイト数分をPCM再生。お手軽! — Takashi Kobayashi (@nf_ban) 2020年9月4日

 なお拙作ミドルウェア「DMシステム2」https://gigamix.jp/ds2/ では、BSAVEヘッダの有無問わずMSX BASIC上でロードすることができます。

gigamix.jp

WebAssembly VGM Player(オンライン VGMデータ再生)

MSX系の音源(YM2413 Y8950)もWebブラウザ上で再生できるらしい!?おれVGMデータは持ってないので試せないけど、お持ちの方はぜひお試しあれ… https://t.co/qJEXFs3SeS — Takashi Kobayashi (@nf_ban) 2022年6月23日

 各種レトロゲーム・レトロPCのVGM形式音楽データをWebブラウザ上で再生できる、Webアプリ。MSXにゆかりのあるFM音源(YM2413、Y8950)にも対応している!!

chipstream.netlify.app

開発・プログラミング系アプリ

MSXPen(オンライン MSX向けプログラミング環境)

88ユーザーの友達が見せびらかすオープニングの星の流れを指を加えて見ているしかなかったMSXユーザーだった俺は仕方なく自分で星が流れるプログラムを作って自分で慰めていたのだけれど、その後TAKERUから発売されたんだ… https://t.co/uMHwLgpUao #MSXPen #MSX #ソーサリアン #ソーサリアン33周年 — Takashi Kobayashi (@nf_ban) 2020年12月20日

 言わずと知れた、Webブラウザ上でMSX向けプログラミング(MSX BASIC・Z80アセンブラ)が行える、Webアプリ。行番号の自動入力、予測変換可能。URLのシェアリングもできる!

msxpen.com

MSXのスクリーンモードとスプライト定義(カラーパレット)の違いを見るプログラム https://t.co/3Q2a1H0HX7 #MSXPen #MSX スプライト4枚ORの重ね合わせで16色出す。自然画モードもパレット変更可能。SCREEN8だけがパレット変更できず固定色。SCREEN6はパレット変更できるけどスプライト表示が崩れる。 — Takashi Kobayashi (@nf_ban) 2021年1月25日

8bitworkshop IDE(オンライン レトロPC向けIDE

追記)こちら「8bitworkshop」版で虹(一部)URLシェア機能こそ無いものの、アセンブラ、メモリ、VRAM、Z80&VDPレジスタ、スタックまで表示!単純逆アセ、ステップ実行も「全部ブラウザで出来る」超絶物凄いページ!ASMはC-BIOS絶対なのでROM化前提のヘッダ記述に注意 #MSXhttps://t.co/zanoj7Clhz pic.twitter.com/rzcyNqPQlT — 1re1 (@1re1) 2021年9月22日

 Webブラウザ上でMSXを含む各種レトロPC向けプログラミングが行える、Webアプリ。ROMイメージをZ80アセンブラC言語で作成できる!

8bitworkshop.com

追記)しかも 8bitworkshop IDE は、ですね?「何と!「C言語で」MSXのプログラミングが出来ちゃうのですよ!しかもこれもブラウザで!!!」 環境揃える必要無し!うむ。わけがわからない。素晴らしい! #MSXhttps://t.co/qD0wWd4V4w pic.twitter.com/ovsKbXHQ9U — 1re1 (@1re1) 2021年9月22日

JatoBAS(オンライン MSX BASICシミュレータ)

Webブラウザ上からBASIC言語でコーディングするとJavaScriptに変換されて結果がわかる「JatoBAS」というWebアプリがなぜかMSXのSCREEN2に対応していて、思わず声が出た。🤣MSXPenの @jannone さんが作成。どういう仕掛けなのだろうか。凄!https://t.co/3OFjPtZ7w6 pic.twitter.com/uo6gy4OgiU — Takashi Kobayashi (@nf_ban) 2022年5月15日

 Webブラウザ上でMSX BASICのプログラムをJavaScriptへ変換し実行できる、Webアプリ。いわゆるMSXエミュレータではありませんが…どういう仕掛けで動くの!?

msx.jannone.org

ASM80.com(オンライン Z80クロスアセンブラ

 Webブラウザ上で稼働する、オンラインZ80 ASMエディタ。Z80のほか、8080・8008、6502等のCPUにも対応。出力がintel HEX形式のテキスト。

www.asm80.com

BiT =](オンライン Z80クロスアセンブラ

 Webブラウザ上で稼働する、オンラインZ80 ASMエディタ。ニーモニック、待機状態/クロックサイクル、ラベルに関する情報をリアルタイムで表示可能。

msx.jannone.org

Tonyu System 2(オンライン ゲームプログラミング環境)

 Webブラウザで動くHTML5のゲームをWebブラウザ上で開発できるというゲームプログラミング環境の「Tonyu System 2(通称「Tonyu 2」)」が、なんとMSXのバイナリ出力に対応。

www.tonyu.jp

 Tonyu 2のプログラミング言語JavaScriptライクの独自言語で、Tonyu 2が提供するゲーム用ライブラリとリンクしてHTML5対応Webブラウザ上で動作します。ほぼJavaScriptで組んだプログラムが、MSXマシン語コンパイルできる、って…凄くないですか?

Z88DK(Z80向けクロス開発キット)

 Z80 CPUに特化した、最近人気のCおよびアセンブラ開発キット。世界各国で発売された100種類以上のZ80を用いたコンピュータに対応しており、MSX向けバイナリも出力可能。

www.z88dk.org

 導入事例はこちらのブログが参考になります。

another.maple4ever.net

qiita.com

SDCC(Small Device C Compiler)

 Z80ほか小規模マイコンに対応する、定番のクロスC言語コンパイラ

sdcc.sourceforge.net

 導入事例はこちらのブログが参考になります。

aburi6800.hatenablog.com

PasmoZ80用 クロスアセンブラ

 Z80 CPUを用いた複数のプラットフォームに対応する、クロスコンパイラ。MSX用バイナリの出力も可能。

pasmo.speccy.org

zma(Z80R800用クロスアセンブラ

github.com

 いわゆるZ80アセンブラに独自機能を追加し、R800 CPUにも対応した、クロスアセンブラ。Zilogニーモニックとzmaで表記が少し違うところがありますが、慣れの問題かも。

hra1129.github.io

 zmaを用いたサンプルプログラムもあります。

asMSX(MSXに特化したZ80クロスアセンブラ

メモ)よし決めた。方向性はSDCC(sdasz80)とasMSX。pasmoは楽だったけど64K以上非対応。asMSXは標準で疑似命令&メガロム対応なのが良い点で、そもそもMSX用特化Z80 ASM。更新止まっていなければ今頃MSX最強アセンブラだったのかなぁ。 — 1re1 (@1re1) 2018年4月19日

 MSX向けZ80クロスアセンブラメガロム形式のバイナリを作成できることが特徴

github.com

XSM(Z80用 クロスアセンブラ

github.com

 いわゆるZ80アセンブラではなく、既存のC言語Javascriptライクな文法を使えるようにしたアセンブリ言語。今どきはこちらのほうが組みやすいという人も居るかもしれません。

asm8(Z80用 クロスアセンブラ

普段使っている自作アセンブラ(Z80)を公開してみました。https://t.co/90re12dveJ GitHubには4CPU分あります。(説明書を書くのがつらい)https://t.co/BwFr9txWeK — いぬふと(ステマニP) (@mxb03523) 2021年11月21日

 国内外問わずありとあらゆるレトロPC向けゲームソフトを開発する、いぬふと(ステマニP)さんのクロスアセンブラ。自身のゲーム開発で実際に用いているもので、Z80のほか6800、6809、6502、TMS9900にも対応。

Sjasm(Z80用 クロスアセンブラ

 MSX-DOS2の後継OS「Nextor」を開発する、KonamimanさんのZ80用クロスアセンブラ

github.com

Visual Studio CodeMSXアセンブラ拡張機能

 Z80アセンブリソースコードからクロックサイクルおよびバイトコードサイズを表示する、 Visual Studio Codeの機能拡張。Z80 CPUを採用するMSXではいわゆるM1待ち時間が必要なので、この拡張機能はM1待ち時間も測定できます。

github.com

hoja(ほおじゃあ, Z80アセンブラ

 '90年代のパソコン通信時代にフリーウェアとして公開されてから今もなお愛される、大場正輝さんが開発するZ80アセンブラの定番ツール。2017年にアップデートし、WindowsmacOSUNIXなどMSX実機以外のプラットフォームにも対応。

www.nabeta.tk

BDS C(8080/Z80 C言語コンパイラ

 CP/MまたはMSX-DOSのような8080/Z80を用いる8bit OS向けの老舗C言語コンパイラ。当時38,000円で販売されていたそうですが、2002年にパブリックドメインとされ現在は無料で使用可能。

www.bdsoft.com

 BDS Cは古いK&R Cのサブセットであり新しいANSI Cではありません。前述hojaの大場正輝さんのWebサイトでBDS Cを補完するツールが発表されていました。

www.nabeta.tk

asu ihex2bin(インテルHEX→バイナリ変換ツール)

 インテルHEXファイルからバイナリファイルへ変換する、Windows用のアプリ。

www.nabeta.tk

asu bloadmake(MSX BSAVEヘッダ付加ツール)

 MSXのバイナリファイルにMSXのBSAVEヘッダを付加する、Windows用のアプリ。通常のバイナリファイルはMSX BASICでデータを読み込むことができませんが、バイナリデータにBSAVEヘッダを付与することで、BASICのBLOAD命令で読み込むことができます。

www.nabeta.tk

MSXBas2Asm(MSX BASIC→Pasmo ASM変換ツール)

#MSX)関連)MSXBas2ASM、どうも姉妹ツールらしい。こちらは Z80 アセンブラの pasmo 併用。途中でASMファイルを出力してくれる。https://t.co/3DLwn4Ey4B — 1re1 (@1re1) 2020年11月24日

 詳細不明。どういうこと!?

launchpad.net

MSXのBSAVE形式バイナリデータの読み書きにバグ発見!?BSAVE・BLOAD命令の挙動を検証

 MSX BASICのBSAVE命令はメモリの内容をバイナリーデータで保存する命令、BLOAD命令はバイナリーデータをメモリへ転送する命令ですが、一体どのくらいのメモリ容量が扱えるのか、知らなかったので調べてみました…と思ったらバグかもしれない場面に遭遇しました。

https://p.gigamix.jp/devmsx/cg/bload-bsave_title.png

結論

  • BLOAD命令・BSAVE命令ともども、メモリの最大容量は65535バイトまで扱えます。
  • メインRAMの最大容量である64kB(65536バイト)以上のデータには対応しません。誤動作が発生します。
  • そういう動作をするのは仕様でした。

BSAVE形式ファイルの仕様

 今一度MSXのBSAVE形式ファイルの仕様を確認します。

オフセット 容量 内訳
+0 1 BSAVE形式の明示(0xFEが必ず入る)
+1~+2 2 開始アドレス
+3~+4 2 終了アドレス
+5~+6 2 実行アドレス
+7~ n 実際のバイナリデータ

 先頭7バイトがいわゆる「BSAVEヘッダ」と呼ばれるヘッダデータ、以後は実際のバイナリデータが連結されます。MSXZ80 CPUなので、アドレス指定はリトルエンディアン(下位アドレスから先に記述する方式)となります。

 例えばメインRAMのC000hからC00Fhまでの16バイトをBSAVE命令で保存する場合、以下の通りになります。

  • BASICコマンドは「BSAVE "(ファイル名)",&HC000,&HC00F」
  • 保存されるファイルのBSAVEヘッダは「FE 00 C0 0F C0 00 C0」
  • 保存されるファイルのデータ容量は 7+16=23バイト

 なおBLOAD・BSAVEともにBSAVEコマンドの末尾に「,S」を記述すると、対象がVRAMになります。

  • 「BSAVE"(ファイル名),0,256*212-1,S」← SCREEN8の1画面を保存する
  • 「BLOAD"(ファイル名),S」← VRAMへバイナリデータを転送する

BSAVE命令のテスト

SAVEヘッダのテストプログラムを作る(2回目)。65536.SC8…BSAVEヘッダのみ7バイト(FE 00 00 FF FF 00 00)で保存される。65535.SC8…0から始まって256バイトごとに1増える、65535バイトのバイナリデータで保存される。※1回目のプログラムは失敗だったのでツイート消しました pic.twitter.com/NYNeFmmn8h — Takashi Kobayashi (@nf_ban) 2022年5月25日

↓↓↓ 皆さんも今すぐブラウザ上で動作テスト!

結果

結果 65535.SC8…正常表示。1バイト欠けてるのが見える。65536A.SC8…96ライン目の途中から最後までバグってる。フリーズはしない。なんで途中からバグるのか。32768.SC8…最大量が65536でなければFFFFhまで正常に保存できるらしい。MSX BASICではBLOAD・BSAVEの最大量は65535バイトのようです。 — Takashi Kobayashi (@nf_ban) 2022年5月26日

  • 0000~FFFFh(65536バイト)を保存すると、BSAVEヘッダのみ7バイト(FE 00 00 FF FF 00 00)で保存される。これはバグなのか仕様なのか…
  • 0000~FFFEh(65535バイト)の保存は、正常に動作する。
  • 保存するデータ容量が65536バイト未満であれば、FFFFhの値は保存できる。「FFFFhが保存できない」というわけではない。

 つまり、64kBの1バイト少ない65535バイトがBSAVE命令で保存できる最大データ容量となります。

 もしかしてFFFFhが保存できないのでは?と一時期思ったので念のためFFFFhだけを保存するテストを行ったところ、これは正常に動作しました。

BLOAD命令のテスト

バイナリエディタで 65535.SC8 を改造。BSAVEヘッダは終了アドレス FFFFh に変更、データの終端に 45h(SCREEN8の01001001b=灰色)を1バイト追加して、65536A.SC8(65536バイトの嘘データ)を作成。さて、どうなるのか… pic.twitter.com/laauhYGrAx — Takashi Kobayashi (@nf_ban) 2022年5月25日

 Windowsバイナリエディタを用いてデータ加工し、BSAVEヘッダが付いた65536バイトの偽バイナリデータを作成しました。その際、BSAVEヘッダの終了アドレスがFFFEhでなくFFFFhで終了するよう偽装してあります。

 また、BSAVEヘッダの定義内容と実際のバイナリデータの量が違う偽のバイナリデータも作成し、テストしてみました。

結果

  • 強引に作成した65536バイトの読み込みは、正常に読み込めない。フリーズはしないが途中で関係の無いデータが勝手に読み込まれる。
  • 65535バイトまでのデータ容量であれば、正常に読み込める。
  • BSAVEヘッダの定義よりも実際のデータ量が多い場合は、余分なデータは無視される(読み込まれない)。
  • BSAVEヘッダの定義よりも実際のデータ量が少ない場合は、関係の無いデータが勝手に追加される(不定値)。

オマケ BSAVEヘッダで定義している以上のデータが実際に含まれている場合は無視される。0000~000Fhの16バイトが45h(灰色)で、その後にFFh(白)を16バイト埋めてみたら、灰色しか表示されない。なるほど…これだと開発者にしか分からない暗号データやメッセージ等をファイルに埋め込めるかもなぁ。 pic.twitter.com/N9VXtbhQ8K — Takashi Kobayashi (@nf_ban) 2022年5月25日
オマケ② BSAVEヘッダの定義よりも実際のデータが少ない場合は、何かのデータが勝手に追加される。色づかいに見覚えがあるから前回ロードしたバッファのような何かなのかな? pic.twitter.com/q5ZKNBsE4Q — Takashi Kobayashi (@nf_ban) 2022年5月25日

 よって、MSX BASICではBLOAD・BSAVE命令で扱える最大データ量は65535バイトでファイナルアンサーのようです。

バグではなく仕様でした

 アドレスに入る値の有効範囲は0~65534(&HFFFE)である旨は、テクハン(アスキー刊「MSX2 テクニカル・ハンドブック」)に記載されていました。実際にはエラーは出力されず命令は実行されるので、「有効範囲」という言い方になっているのですね。

なぜそうなるのか仮説

BASIC内部でBSAVEの長さ計算が16bitなんでしょうなぁ。17ビットになる65536=10000hだと0000hに化けると😅 ファイル形式的には65536バイト保存を許容するものの、BASICの仕様(というかほぼバグ)により65536バイト保存されたは扱えない(多分BLOADでも0バイト読み込み)だろうなと。 https://t.co/7YNX5joJk0 — ごりぽん (@goripon_tw) 2022年5月25日

 この頃はまだ何も分かっていなかった。

今ざっとOpenMSX上のFS-A1STで試したんですが、7バイトのファイルをVRAMに読むとゴミ書き込まれますね…。BSAVEは65536バイト書けないのに、BLOADは65536バイト読めるっぽい? — ごりぽん (@goripon_tw) 2022年5月25日
SCREEN8:BSAVE

 実データが無いBSAVEヘッダのみのファイルの読み込みでゴミ(不定なデータ)が追加されるのは、BSAVEヘッダの定義よりも実際のデータ量が少ない場合は何かのデータが勝手に追加される(不定値)条件だったことが、実験で判明する。

バグはBSAVE側(64KB保存されない)で、BLOADは想定されない壊れたデータ(ヘッダに64KBの情報があるのに本体が0バイト)のロードによる症状で、ある意味正常…かなぁ。たぶん64KBのBLOADはイケるかなと。 — ごりぽん (@goripon_tw) 2022年5月25日
BLOAD側がバグっているなら多分…①BSAVE同様に0バイト読み込み(VRAMは書き換わらない)②64KBのファイルだと読み込みが終わらず無限ループ(VRAMには本来のデータに続けてゴミが上書き)…のどちらかになると思うんですよね。どちらでもないので多分イケてるかなーと。 — ごりぽん (@goripon_tw) 2022年5月25日

 テストしてみたら64kB(65536バイト)のファイルは正常に読めないというオチに…

ちなみに「メインROMの内容をVRAMに書き込んだ場合の画面」は見る人が見れば判ります(少なくとも私は判った😅🤣)。 — ごりぽん (@goripon_tw) 2022年5月25日

 特殊スキルすぎる!!