いまさらベーシックマスターの開発環境を作ってみる(4) エミュレーターへのデータ移動(1)

2024/05/22BASICMASTER, 昔のパソコン

いまさらベーシックマスターの開発環境を作ってみる(3) eBASICMasterJr | ず@沖縄の続きです。

ベーシックマスター用のエミュレーターは3種類あった。いずれも動作には問題はない。開発向けの機能はj68とeBasicmasterJrの方が優れている。eBasicmasterJrとbm2はソースが公開されており色々楽しめそうである。

これらを使って開発環境を作ってみる。セルフ開発する気力はないので、MacOSからクロス開発するのが前提。


クロス開発のためのデータのやり取り

クロス開発なので、ホスト側で作ったプログラムやデータを ターゲットのエミュレータに持ち込んだり、その逆を行う必要がある。いちいち仮想テープを介しているとLOAD/SAVE時間が馬鹿にならないので、その他の方法を使う。

当面は、移動するデータとして 次のものがあれば良いだろう。

・バイナリデータ
・テキストデータ
・BASICのソースプログラム


j68

モニターGUIが非常に優秀なので、これを使う。

j68の  doc/monitor.txt によると、モニタにファイルをドロップすることでデータを持ち込めるようだ。モトローラS形式が使えるので、当面はこれを使う(拡張子は .mot)。テキストデータもS形式経由で良いだろう。

まずは、バイナリデータの移動。モニタ画面で右クリックしてペーストすることで、16進ダンプを持ち込める。雑誌の16進ダンプをOCRしたものを持ち込めると便利。

逆に、右クリックからコピーで、S形式で持ち出せる。なかなか便利である。テキストデータもアドレスがわかっていれば、これで移動すれば良いだろう。

問題はBASICのソースだ。持ち込むのは、エミュレータ画面のKeyboardメニューからInput Fileすれば良い。直接ペーストできると良いのだが、機能を探せなかった。
(ただし、ペーストだとカタカナや、などの特殊文字をどうするかが問題になる。フルキー化プログラムを使って対応?)
追記: 作者の方に教えていただきました。ALT+CTRL+Vでペーストできます、が、RDP経由だとYen sign(\)問題が…

持ち出しはPrinter→Paperでファイルを指定すればいけるかと思ったが、うまくいかなかった。プリンタの制御文字を吐いているのか?

どうしようもなかったら、LIST#を使ってメモリにリストを書き込むようなプログラムを作ればいいか。

bm2

モトローラS形式をドロップすることで読み込みが行える。あるいはALT+FでもS形式が読める。
ALT+Pでクリップボードのテキストを書き込める。これは便利。

bmtape2を使うと、ソースからbinテープ形式のファイルを作れる。これをLOADすれば良い。拡張子をbin→cmtに直せばj68でも読めるはず。

問題は持ち出す方法。テープにSAVEするしかなさそう? これも要調査。
(テープにSAVEしたcmt形式のファイルを解析すれば出来そうだが面倒臭い…)

追記: cmtからソースを抜き出すのは作れた。バイナリはどうしたもんか

eBasicmasterJr

Control→Paste でペースト可能。英小文字をペーストすると英大文字に変換され、英大文字はペーストできないようだ。カナ文字もペーストできない。

Control→Debug でデバッグ画面。

W 1000 1fff でファイルにメモリ内容を書ける。ヘッダなどの無いベタなバイナリ or Intel HEXフォーマット。ファイル名はNコマンドで指定する。 N file.bin など。拡張子が hex ならIntel Hexフォーマット。

L 2000 でファイルから読み込み。こちらもバイナリ or Intel HEX。

コマンドをファイルから入力もできる( < )。 BASICの読み込みは(カナや特殊文字以外ば)ペーストでできそう。書き込みはどうしたらいいだろうか。 bin形式のファイルも読める。

BASICプログラムを持ち出すのが面倒

どのエミュレーターもBASICプログラムの持ち出しが面倒だな。もしかすると機能があるのかもしれないけど、調べきれてない。

テープイメージにSAVEはできるから、SAVEしたイメージを解析するのもいいんだけど、SAVE時間かかるのが面倒くさすぎる。このあたり、エミュレータをスーパパイザーコールできるような仕組みが欲しいところである。ソース公開されてるエミュレーターなら自分で書けばいいのか?

プリンターROM部分を差し替えて、プリンターに印刷するとメモリの適当な番地に書くようなルーチン書くのが手っ取り早そう。エミュレータにプリンタを繋いだりはしないだろうから(する?)、プリンタROMを差し替えて、LIST# の結果をメモリに書くようにすれば良い。MB-6885モードならBASICの裏が12KB使えるので、そこに書けばいいか。

書いてみた: BASICMASTER/tools/baslist at main · zu2/BASICMASTER

続く