今日は、MSX BASICの中から、マシン語を呼び出す方法を勉強しました。
前回のページはこちらです。
最近はWebMSXで動かす、BASICで書かれたゲームの記事を
書いています。
(手軽なのはいいのですけどねぇ(*´ω`*))
処理が遅く、マシン語の必要性を感じてきたので
また、マシン語の勉強を再開したいと思っていました。
今までマシン語の勉強に使っていた本では最後の方のページになりますが
問題ないと思います。
BASICからマシン語を呼び出す場合は
マシン語はサブルーチンになるそうです。
メインルーチンはBASICですね。
マシン語は、メモリに直接数字(マシン語の命令とか)を
入れておいて実行されるものですが、
どうやってメモリにマシン語をいれるかというと
2種類あるそうです。
1.POKE文(BASICの命令)を使う。
POKE &HD000,&H89
などと書きます。
POKE メモリのアドレス、入れたい値
です。
2.カセットテープにセーブしたデータや
プログラムをBLOAD命令でロードする。
(DISKは書いてませんでした;)
BLOAD "ファイル名"
で呼び込むそうです。
お、カセットテープの市販のゲームで使っていました、これ!
そのときはどんなふうだったかな?
bload"cas:",r
を打ち込むとテープから読み込んでいました。
懐かしいですね!
メモリへデータを直接読み込んでいたんですね!
ちなみにマシン語のプログラムファイルを作るには、
BSAVE"CAS:PROG1",&HD000,&HD028
などとするそうです。
PROG1はファイル名
あとの16進数は&HD000〜&HD028のメモリの内容をセーブすると
いうことみたいです。
そのプログラムをロードするのは
BLOAD"CAS:PROG1"
でカセットテープからロードされるそうです。
市販のテープのゲームもBLOADのあとの ,Rをつけずにロードして
あとはメモリを覗く命令のPEEKをつかえば、
マシン語が見れたのかな?
へぇ〜。
市販のゲームのマシン語を覗くなんて、当時小学生だった私には
考えたこともなかったです;
そういうことやっていた人もいたのかな〜?
すごいですね!
マシン語プログラムのコール
マシン語を呼び出すのは、BASICのUSR関数というのを使うそうです。
まず、メモリに入れたマシン語を保護しないといけないそうです。
メモリにはBASICの変数領域というのがとられるそうです。
BASICで変数を使うときに、値を取っておく領域だそうです。
その領域が勝手にとられるので、マシン語の領域を壊してしまわないように
しないといけません。
そのために
CLEAR文を使うそうです。
CLEAR 300,&HCFFF
などとします。
変数の領域をあるアドレスよりも上におけという命令だそうです。
マシン語の領域を壊さないために、
BASICの変数領域をどこにするか指定するわけですね!
ここでMSXのメモリのことが書いてありました。
RAMの構成(32k,64kのMSXの場合)
(アドレス)
&H8000 -------------------------
BASICプログラム
マシン語とか
&HF380 --------------------------
ワークエリア
---------------------------
32kバイト、64kバイトのMSXの場合は、
プログラムが入るアドレスが
&H8000
16kバイトのMSXの場合は、
アドレスが
&HC000
になるそうです。
ワークエリアというのは、BASIC インタプリタが動くために
使うデータを入れておく領域だそうです。
BASICのプログラムは上の方にはいるので、マシン語は下の方に
いれるといいそうです。(ワークエリアより上)
ふむふむ。
この本では&HD000 (D000H番地)
くらいからマシン語を入れていけば十分でしょうと書いてありました。
そして、いよいよマシン語の呼び出しです。
マシン語を使うには、
マシン語の開始アドレスを教えてやらなければいけません。
それには、
DEF USR = &HD000
&HD000からマシン語をスタートすることを宣言
実際にマシン語のサブルーチンを使うときは、
A=USR(0)
とします。
0~9まで宣言できるそうです。
実際の使い方は,
MSX BASICでゲームを作ろうのページで紹介することが
あるかもしれません。
(勉強した本には特に詳しく書いてなかったです)
今日はこの辺りまでとします。
次回は、BASICからマシン語へ値を渡すということを勉強します。
(マシン語からBASICへ値を渡すのは難しいので、
勉強している本には書いてないそうです。)
面白くなってきました!
では〜。
スポンサーリンク
次のページ
MSXのゲームを作りたいという思いが、
こんななんちゃってMSXゲームを生み出してしまいました;
iphoneとandroidのアプリです。
簡単操作です。
無料ですので試してみてください^^