Windows向けに開発され、LinuxやmacOSでもビルドできる、Z80およびR800プロセッサ用のコマンドライン・クロスアセンブラです。
hra1129/msx_basic_compiler
MSX-BASICプログラムをMSX向けの機械語に変換し、PLAY(PSG音楽)にも対応するコンパイラBACON。
- スター
- 37
- フォーク
- 5
- 未解決の Issue
- 9
- 最終コミット
- 5 日前
これは何?
msx_basic_compiler(BACON)は、MSX-BASICのソースファイルをアセンブリコードにコンパイルし、さらにアセンブルしてMSXで動作するバイナリを生成します。生成したプログラムはBACONのローダーバイナリと一緒に読み込んでMSX上で実行するため、コンパイル済みコードはBASICインタプリタの通常の行単位解釈を介さずに動作します。
コンパイラはソース全体を走査し、DEFINT、DEFSNG、DEFDBL、DEFSTR文に基づいて変数のデフォルト型を決定します。また、LIST、RENUM、TRON、MERGEなど、ソース上でのみ使われるコマンドは出力から除外します。速度向上のため、一部の実行時エラーチェックは省略されます。また、配列に対するVARPTRの値は文字列操作後に変わることがあります。これらの仕様は、MSX-BASICとの相違点についてのプロジェクトの説明に記載されています。
このプロジェクトは、標準のMSX-BASICのPLAY文とPLAY(n)関数に対応しており、MML文字列をBIOSのサウンドキューに変換します。出力アセンブリはmsx_baconツールで生成し、ZMAアセンブラでアセンブルします。
主な機能
- 01MSX-BASICのソースファイルをMSX向けのアセンブリコードにコンパイルします。
- 02PSG音楽用に、標準のMSX-BASICのPLAY文とPLAY(n)関数に対応しています。
- 03ソース全体を対象に、DEFINT、DEFSNG、DEFDBL、DEFSTRから変数のデフォルト型を決定します。
- 04ZMAアセンブラと連携して、実行可能なバイナリを生成します。
- 05PLAYの動作確認に使えるOpenMSX用テストディスクが付属しています。
ユースケース
- 既存のMSX-BASICプログラムを機械語にコンパイルして高速化する。
- BASICでPLAYの音楽を記述し、MSXのサウンドを試す。
- MSX-BASICコンパイラが変数や文字列をどう扱うかを学ぶ。
クイックスタート
- 1
BASICプログラム hello.bas を作成する
- 2
msx_bacon で hello.bas をアセンブリにコンパイルする
msx_bacon hello.bas hello.asm - 3
ZMA(別途用意するアセンブラ)で hello.asm を hello.bin にアセンブルする
zma hello.asm hello.bin - 4
hello.bin と BACONLDR.BIN を MSX にコピーし、BLOAD で読み込む
使う前に知っておきたいこと
- 最終バイナリの生成には、別途 ZMA アセンブラが必要です。
- macOS のインストール先パスは /opt/homebrew/bin に固定されているため、ほかの環境では Makefile の編集が必要です。
- LIST、RENUM、TRON、TROFF、MERGE など、一部の MSX-BASIC 機能はサポートされておらず、実行時のエラーチェックも最小限です。
収録されている特集
トピック
よくある質問
- msx_basic_compiler とは?
- MSX-BASICプログラムをMSX向けの機械語に変換し、PLAY(PSG音楽)にも対応するコンパイラBACON。 msx_basic_compiler(BACON)は、MSX-BASICのソースファイルをアセンブリコードにコンパイルし、さらにアセンブルしてMSXで動作するバイナリを生成します。生成したプログラムはBACONのローダーバイナリと一緒に読み込んでMSX上で実行するため、コンパイル済みコードはBASICインタプリタの通常の行単位解釈を介さずに動作します。
- msx_basic_compiler は無料で使えますか?ライセンスは?
- msx_basic_compiler は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- msx_basic_compiler は今もメンテナンスされていますか?
- 活発にメンテナンス中。msx_basic_compiler の最終コミットは 2026年11月2日 です。
- msx_basic_compiler は何に使えますか?
- 既存のMSX-BASICプログラムを機械語にコンパイルして高速化する。 BASICでPLAYの音楽を記述し、MSXのサウンドを試す。 MSX-BASICコンパイラが変数や文字列をどう扱うかを学ぶ。
- msx_basic_compiler のインストール方法は?
- BASICプログラム hello.bas を作成する msx_bacon で hello.bas をアセンブリにコンパイルする: msx_bacon hello.bas hello.asm ZMA(別途用意するアセンブラ)で hello.asm を hello.bin にアセンブルする: zma hello.asm hello.bin hello.bin と BACONLDR.BIN を MSX にコピーし、BLOAD で読み込む
- msx_basic_compiler はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/hra1129/msx_basic_compiler
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
プロセッサのコード実行を学べる、RISC-Vコンピューターアーキテクチャのビジュアルシミュレーター兼アセンブリエディター。
15種類以上の数値型に対応し、距離・内積・行列演算をSIMDで高速化する数学カーネル。Python、Rust、C/C++、JS、Swift、Go向けのバインディングを提供します。
512バイトのx86ブートセクターで動作し、リアルモードで偽のLinux起動ログを生成する小さな文字単位の言語モデル。
実機のOSを起動できる、実行時にマシンコードをWebAssemblyへ変換してブラウザー上で動作するx86 PCエミュレーター。