Repolode
hra1129

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. 1

    BASICプログラム hello.bas を作成する

  2. 2

    msx_bacon で hello.bas をアセンブリにコンパイルする

    msx_bacon hello.bas hello.asm
  3. 3

    ZMA(別途用意するアセンブラ)で hello.asm を hello.bin にアセンブルする

    zma hello.asm hello.bin
  4. 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 の数値は毎日更新されます。

関連プロジェクト

Windows向けに開発され、LinuxやmacOSでもビルドできる、Z80およびR800プロセッサ用のコマンドライン・クロスアセンブラです。

開発ツール#assembler#z80#r800
255C++MIT更新 6 日前

プロセッサのコード実行を学べる、RISC-Vコンピューターアーキテクチャのビジュアルシミュレーター兼アセンブリエディター。

学習リソース#risc-v#computer-architecture#simulator
3474+8 今週388C++MIT活発にメンテナンス更新 4 日前