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の動作を確認しました。

コメント