電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

MSXで遊ぶ! BASICプログラムのROM化

MSXでBASICプログラムをROM化して遊びたいと思って調べてたところ、手順を書いたページがありました。
MSX Datapack3章 カートリッジソフトの作成法
このページのBASICプログラムのROM化の方法に書いてあるIDの作成をそのままBASIC画面で実行するとメモリの内容が書き変わってしまい、なかなか上手くいきませんでした。
要はBASICのテキスト格納先頭アドレスを8021Hにして、先頭の32バイトを書き換えれば良いことが分かり、一度8000H〜BFFFHで保存してPC上でバイナリエディタで書き換えてれば成功しました。
このやり方の手順を紹介します。


BASICのROM化方法

BASICプログラムを用意する

今回は例として1から10を表示する簡単なプログラムを作成して、"test1.bas"というファイル名で保存しました。

10 FOR I=1 TO 10
20 PRINT I
30 NEXT
save "test1.bas"

BASICのテキスト格納先頭アドレスを変更してバイナリを保存

BASICのテキスト格納先頭アドレスを8021Hに変える。

POKE &HF676,&H21:POKE &HF677,&H80:POKE &H8020,0:NEW

これは必ず1行で実行してください。

保存したBASICプログラムをロード

load "test1.bas"

BSAVE形式で8000H〜BFFFHを保存する
今回は"test1.bin"というファイル名で保存しました。

bsave "test1.bin",&h8000,&hbfff

PC上でバイナリを編集

保存したBSAVE形式のファイルをPC上の適当なバイナリエディタを使用して編集します。
ここで行うことは2点です。
・BSAVE形式のヘッダ部分(先頭から7バイト)を削除する
・ID部分(BSAVE形式のヘッダ部分削除後の先頭から32バイト)を下の値に書き換える

41 42 00 00 00 00 00 00 20 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
アドレスの00,01,80,09以外はすべて00です。

今回は編集後のファイルを"test1.rom"というファイル名で保存しました。

編集前(test1.bin)


編集後(test1.rom)

実際に動かしてみる

作成したROMファイル(test1.rom)をエミュレータ(blueMSX)で動かしてみました。

無事にBASICプログラムが実行されています。

Mega Flash ROMに書き込んで実機で動かそうと思いましたが、リセットを繰り返すばかりで上手く実行できませんでした。これに関して、もう少し調査が必要そうです。


80年代マイコン大百科

80年代マイコン大百科

レジェンドパソコンゲーム80年代記

レジェンドパソコンゲーム80年代記

  • 作者: 佐々木潤,レトロPCゲーム愛好会,エマ・パブリッシング
  • 出版社/メーカー: 総合科学出版
  • 発売日: 2014/12/18
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (1件) を見る
激レア! お宝発掘!! 80年代マイコン読本

激レア! お宝発掘!! 80年代マイコン読本