前回はMSXBASICのスプライトの処理の速さを見てみました。
今回はDOTRAINをマシン語を使って同じようなことをやって比較することを目標に
マシン語の話を進めていきます。
ではMSXBASICのプログラミングとマシン語のプログラミングを
どうすれば同居できるのかを考えていきます。
最初にBASICを起動すると空き容量が表示されます。
23966bytefreeと表示しています。BASICプログラムを実行すると20509まで下がります。
8000Hから8D8Bまでが、このプログラミングの長さです。およそ3画面程度です。
メモリにデータをあまり書かないで、VRAMに保存するようにします。
マシン語化を前提にしますので、おおざっぱにCLEAR500,&HA000といきます。
これで、A000-E000Hよりちょっと大きいくらいメモリを確保できます。
今のところは十分ですね。
BASICではスプライト定義と座標設定をやります。
このデータは書き換えられるようにBASICの初期設定は残しますが、
全ての数値はメモリのデータエリアに書きます。このエリアは自分で決めます。
次にプログラムソースをどのような環境で作成するか?考えているところです。
このままではアセンブラのソースプログラムはMSXBASICのプログラムのメモリを使いますから、
とりあえず、ディスクにプログラムを書くことにします。
と、言っても次世代のMSX環境では日本語変換ができません。
やっぱり日本語のコメントは欲しいところですね。MSX2+では
漢字BASICでCALLKANJI3を実行して、この画面へ進めるようにしましたが、
PRINT#の表示ではANKスタイルの表示になります。
そこでDM-SYSTEM2を使えるようにしています。
MS-DOSっぽい画面ですが、新たに点滅カーソルが付いたソースエディタを制作しています。
徐々に準備を進めていこうと思います。
マシン語化する部分はTRAINの移動に関わる部分です。
24通りの条件分岐があり、このままのBASICではかなりの負担になります。
以前の311のアセンブラは入力して実行することができますが、CALLを検索して、LDを検索してと
1回1回検索してプログラムをオペコードに直接変換します。
この辺りをビルド時間短縮できないかなと考え中です。くわしくは
変換表のCOPY Z80-INST.TXT CONの頭を表示してみると
このようなファイル構造になっています。
00 NOPは2バイトがマシン語変換コード、4バイト目から命令になって
次の行はヘルプになっています。すでに、ヘルプの編集ができるプログラムもあります。
311アセンブラの特徴はニーモニックを選びながらコード化していくので、
ただ、このように1つの命令ごとにロードして選ぶ時間がかかります。
構文を間違えることがありません。久しぶりにMSXを使う用途なら迷わないで快適かもしれません。
もう1つはVRAMのアドレスに仮配置するので、RAMに別のプログラムがあってもBSAVEできます。
実行するアドレスを直接指定すればよいです。
まだテスト段階ですが、BASICのI/Oのシステム(BIOS)の設定を変えたりする小技ができます。
アセンブラの機能は全く足りていない暫定的な状態ですが、ハンドアセンブルよりも少しよいかな?の程度です。
3月半ばに制作していた通称311アセンブラを続けていきます。
また別にテキストからビルドする方法も考えます。
2011/03月のブログ
こんなことも★
実は私も腰痛の悩みがあります。(おい)
30代後半から続いているわけですが、少ないですが医療費がかかっています。
そこで、最近はグルコサミンを飲み始めました。
ヒアルロン酸も必要のようですが、グルコサミンとコンドロイチンが入った健康食品で
薬を飲まないでコレを飲んでいます。
薬ではなく食品ですが錠剤ですので、負担がかからない5錠程度でよいと思います。
ヒアルロン酸は美容にもよいですが、肌をスベスベにしたり、関節の滑りをよくもします。
薬のように即効性がないので、数週間かかりますが、痛みも少なくなりました。
また、通販のように多少ムリな運動をしても痛むことがなく若返ります。(ホント)
結局、薬漬けかコンドロイチン漬けかを選択となるとコンドロイチンですね。
薬は痛みを騙すような感じであまりスッキリとはいきませんね。
デスクワークのかたはよく首を回しましょう。
※コメント投稿者のブログIDはブログ作成者のみに通知されます