いまさらベーシックマスターの開発環境を作ってみる(15) 文字コード(4)

2024/06/14BASICMASTER, 昔のパソコン

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

Unicodeのテキストファイルを、BASICMASTERの機種依存文字(以下BM独自文字)を含むファイルに変換するプログラムは書けた。これを、エミュレーターに持ち込む方法を考える。

(変換後は牛と音符が$9C,$9Bになっている)

変換後のテキストをbmtape2で .bin 形式に変換すれば、bm2とeBasicmasterJrでテープとして読むことができるし、拡張子をbin→cmtにすれば、j68 でも読めるらしい。しかし、いちいちテープにしてLOADするのは面倒くさいし時間もかかる。

キーボード入力かファイル直接か

テープ以外の持ち込み方法は大きく分けると4通りになうる。キー入力するかメモリに直接書くか、それぞれペーストするのかファイルを使うのかだ。

ペーストしてキー入力ファイルからキー入力メモリにペーストファイル読み込み
j68ALT+CTRL+VKeyboard→Input FileMonitor GUI→Pastedrop many format

bm2ALT+P(なし?)なしdrop/LOAD S format
ebmjrControl→Paste(なし?)なしdrop/LOAD Binary or Intel Hex format

ebmjrのPaste機能は英大文字が読めないのが難点。キーボード入力同様に、英小文字でないといけない。実に不便。また、ebmjrだけIntel Hexフォーマットだ。

ペーストしてキー入力する場合、j68/bm2ではカタカナまでは入力できる。BM独自文字は不可のようだ。フルキーボード化プログラムなどで対応することになる。

フルキーボード化プログラムを使う場合

フルキーボード化プログラムの読み込みの手間と、どこにプログラムを置くかが常に問題になる。実機で使っていたときは、テープだったのでなおさら面倒だった。

エミュレーターの場合も読み込み速度はともかく、いちいちCALLするのは面倒くさい。プリンタROMを潰してそこに常設すべきか。
(GAMEなどのインタプリタや、エディタ/アセンブラは、プログラムに組み込むんでしまうのも手かもしれない)

フルキーボード化プログラム前提なら、 _ によるエスケープに変換するプログラムを書けば Paste できそうなので、書いてみた。


メモリにソースプログラムを直接書く

GAME言語には == という命令があって、メモリ上のソースプログラムを走査してプログラム末ポインタを正しくセットできる。 =$1000 などとすれば、プログラム開始アドレスも変更できる。

これを使えば、Motorola S形式なり、Intel Hex形式なりに変換したソースプログラムをDropして、  == すれば、一瞬でプログラムを読み込むことができる。

MacOSのファイル形式と異なり、行番号がバイナリだし、行末はLFなのでその部分の変換は必要だが、どのみち文字コードの変換は必要なので一緒にMakefileに書いておけば良い。

ということで、bmtexttoolに game2bin, ntb2bin を置きました。これで テキストファイルをGAME言語やNTBの内部形式に変換できます。変換後のファイルを txt2mot でS形式にして読み込めます。
NTBには GAME言語の == と同等の機能であるOLDコマンドを追加しました。

よく考えてみるとL2 BASICも、予約語や変数が変換されているだけなので、同様の発想で変換・読み込みできそう。ベーシックプログラムの開始・終了位置は0ページにあるので、そこも同時に書き直せば良いわけだ。あとでプログラム書こう(実数の扱いが面倒くさいんだよな、たしか)。

続く