MSXPENでアセンブラを試してみる。

コンピュータ

幼少のころMSXというパソコンで雑誌のゲームプログラムを打ち込んで遊んだ記憶があります。
MSX-BASICは何となく学習した記憶がありますが、マシン語はとても理解できるような代物ではないと感じた記憶があります。
最近WebMSXというWebで実行できるMSXのエミュレーターがあることを知りました。さらにWebMSXにBASICとアセンブラの開発機能を付加したMSXPENというサイトがあることを知りました。
昔全く手も足も出なかったMSXのマシン語を開発する環境がWEBで誰でも利用できるようになっていることを知り少し試してみたい衝動に駆られました。とりあえずアセンブラで文字を表示するプログラムとそのプログラムを呼び出すBASICのプログラムを抑えておきたいと思います。

ソースコード

Basic

10 CLEAR 100,&HD000
20 DEFUSR=&HD000
30 BLOAD"program.bin"
40 A=USR(0)
50 END

Asm

           ORG     0D000H
CHPUT       EQU     00A2H
            LD      A,41H
            CALL    CHPUT
            RET
            END

実行

RunをクリックするかCtrl + Alt +R

アルファベットの”A”が表示されました。
BASICのBLOAD”program.bin”はアセンブラのコードから生成されたバイナリがAドライブの仮想フロッピーに保存されるファイル名になります。歯車アイコンでファイル名を変更することが出来ます。またBASICのコードは同じくフロッピーディスクにAUTOEXEC.BASというファイル名で保存されます。AUTOEXEC.BASというファイル名でBASICのプログラムをフロッピーに保存すると、フロッピーディスクを挿入した状態でMSX(エミュレーター)を起動した際自動的にAUTOEXEC.BASをロードし実行するようになります。
虫眼鏡のアイコンをクリックするとレジスターの内容ぽいものが表示されました。

アセンブラ部分のORGがマシン語のプログラムのの開始アドレスを指定しており、BASICのDEFUSRのアドレスに対応させています。
CHPUTのはCALL命令で指定するアドレスのラベルになり、1文字を画面に出力するBIOSをコールするために設定しています。
LDでAレジスタにアルファベットの”A”の文字コードを代入しています。
CALLで文字を出力するBIOSをコールしてAレジスタに代入した文字を画面に出力します。
RETでBASICに戻ります。
ENDでアセンブラのコードの終了を宣言しています。
今回学習したことは、こんなところです。

WebMSX側で文字をペーストする方法

Alt+V→Ctrl+V

ディスクイメージファイル(.DSK)からファイルを抽出する方法

フリーソフトのWinImageを使う。
Windows11でversion10.0の動作を確認しました。

雑誌掲載プログラム

MSXマガジンのバックナンバーがアカシックライブラリで無料で公開されています。
記事にBASICプログラムのソースコードが掲載されていて昔は慣れないキーボードに四苦八苦しながら入力した記憶あります。

今の技術を使うと手軽に入力できるのでは無いかと考えました。
・記事からプログラム部分をスキャナなどで画像ファイルを作成する。
・紙の凹凸がスキャンされているので、GIMPで加工。「色」→「レベル」白色が画像の空白部分、黒色が文字になるように画像を修正。
・GIMPでプログラム以外不要部分も消去。プログラム以外が含まれないように画像サイズを変更など。
・画像をGoogleドライブにアップロードし、「アプリで開く」→「Googleドキュメント」で開く
・OCRされてテキスト化されますのでこれをMSXPENに張り付けて「Run」で実行
・エラーが出る場合は修正。

多分手で入力するより速いと思われます。ただ、OCRがうまくいかない部分のエラー修正は大変そうですが…

コメント