MSX-MSXマシン語勉強
今まではBASICでスプライトを定義しておいて、 マシン語を呼び出して、 スプライトを動かす部分のみをマシン語かしていましたが、 今回はマシン語でスプライトの定義をします。 では例のごとく、MSXPENでやりたいと思います。 (MSXPEN.comは、ブラウザででき…
MSX PENでアセンブラを書いていくときに、 画面設定などをすると思いますが、 その例を書きます。 アセンブラソースコード ;ワークエリア RG0SAV:EQU 0xF3DF ;VDPレジスタR#0の値の入っているアドレス FORCLR:EQU 0xF3E9 ;前景色の入っているアドレス BAKCLR…
前回、マシン語でスプライトを動かすことができました。 今回はウォーキングのアニメーションをさせたいと思います。 カーソルキーの右を入れたら右を向き、そしてテクテクと歩く! というものです。 僕が持っているマシン語の本には、スプライトの移動は書…
VRAMについて説明します。 MSXにはRAMとVRAMがついています。 普通にBASICを書いた場合、プログラムはRAMに入ります。 VRAMはどんなデータが入るのかといいますと、 画像についてのデータが入ります! 僕が小学生の頃は、恥ずかしながら、VRAMを知りませんで…
今回は、MSXのRAMについて解説したいと思います。 僕は、数年前にMSXについてあれこれ調べ始めるまでは、 RAM? うーん、 プログラムが入っているんだよね? (僕が本格的なプログラムを書いたのはWindowsからでした。 最近のPCはメモリを意識しなくても書け…
MSXPenという、 MSX BASICとアセンブラの両方をテキスト画面に書けて、 隣のWebMSXで実行できるというサイトがあります。 そのサイトでマシン語が簡単に実行できます。 (前回の記事にMSXPenの書き方を書いています) MSXマシン語入門(Z80 アセンブラ・機械語)…
前回、pasmoでマシン語(アセンブリ)を書くようにしたいと 言っていましたが、 あれはやめました(~~;) macでpasmo入れるのって、なんか面倒( ・∇・) そこでマシン語を書く上で、今、一番お手軽な方法のひとつである、 MSX PENを使うことにしました。 前回の米…
今回はカーソルキーの入力です。 やっとゲームらしくなってきました^^ BASICでいうところのSTICK関数みたいなのがあるのかな? それでは始めます。 MSXマシン語では、BIOSでジョイスティック(カーソル移動キー)の状態が分かるそうです。 BIOS ------------…
I / Oポートって何? よく聞くのですけど、いまいち分からなかったんです。 Windowsでもポートの何番をあけてどうのこうのというのをよく聞くのですが.... MSXのハードの構造を読んでよくわかりました^^ MSXハード構成: CPU ------ I/Oポート------ VDP | |…
今回は、ビット操作です。 今までは基本的には1バイト単位での操作でしたが、 これからやることは1ビット単位です。 これぞマシン語、ですね^^ 2進数のところが身についていないと少しやりずらいかも。 では、本を読んで勉強したいと思います。 まずビット操…
2進数でマイナスの値を表すのはどうすればいいのか? 今回は負の値について書きます。 本当は、2進数のことについて書いた時の書くべきでした(~~; 申し訳ないです。 10進数から2進数への変換は分かると思います。 25 ---> 00011001 となります。 まぁ計算を…
今回はマシン語の計算です。 ゲームで計算というと座標とか、敵のダメージ量であったり まぁ何かと使いますね^^ これを学ぶと少しプログラムを組めるようになるのかな? 今回もこの本でお勉強です^^ MSXマシン語入門講座 posted with amazlet at 18.09.0…
今回、本で勉強したのは、8ビットでの論理演算です。 僕は少しだけ知っています。国家資格の2種の勉強の時にやりました。 でもほとんど忘れてしまったなぁ~; でも前回の論理演算の基礎が分かればわかるはず! MSXマシン語入門(Z80 アセンブラ・機械語) 第2…
今回は論理演算について。 論理演算はBASICでもよく使われますねぇ〜。 ANDとかORとかいうヤツです。 マシン語では、グラフィックとか掛け算、割り算に代わるような 計算をするのによく使われるそうです。 私は一応知っていますが、内容をすぐ忘れてしまうの…
マシン語の最後の部分の解説をします。 最後は、画面描画です。 画面の端にいったら、一瞬で画面を描き換えて 隣の面にいく処理です。 BASICだと、1画面すべてを描き換えると かなり遅くなるのですが、マシン語なら一瞬です。 (なお、このページだけでは理…
前回は、MSX BASIC自作ゲーム作成のところで使った、 マシン語を2つ解説しました。 WebMSXでMSX BASICの自作ゲーム作成!第17弾。 マシン語部分を解説。その1 - ニャオニャオ21世紀 今回は後半の2つのマシン語の解説をしたいと思います。 (なお、このペ…
今回は一部に使用したマシン語部分の解説をします。 別のコーナーで、マシン語勉強レポートをやってきたのですが、 それがこのプログラムで使用しているマシンコードのところまで やれたので、やっと説明ができます。 こんなゲームを作ってきました。 www.ny…
やっと、ループを作るところにきました^^ 長かった〜。 これでやっとMSX BASICで使ったマシン語の説明ができます。 ループはとても大切。 それでは勉強して行きます! BASICだと、FOR~NEXTという命令があります。 MSX BASIC入門 初心者も中級者も歓迎です…
今回はジャンプ命令の続きです。 条件ジャンプというのをやります。 絶対アドレスジャンプと相対アドレスジャンプの両方にあります。 まず、絶対アドレスジャンプの方を。 JP C, LABEL2 JP NZ , LABEL2 などと書きます。 LABEL2はただのラベルということはわ…
今回はジャンプ命令です。 BASICではGOTOですね。 www.nyaonyao21.com 現代の言語には失われた命令ですw GOTOとかって評判悪いですからね〜。やっぱりややこしくなって しまうのが原因ですかね。 しかし大切な命令です。 ジャンプ命令には2種類あるそうです…
今回は比較命令です。 2つの数を比較します。 正攻法だと、 Aレジスタの内容とBレジスタの内容を比べる時は、 SUB B とします。(まだやっていませんが、Aレジスタ ー Bレジスタのことです。 引き算ですね。) すると、 2つのレジスタが同じ値ならゼロにな…
今回はFレジスタ(フラグレジスタ)です。 レジスタなんですが、ちょっと変わったレジスタだそうです。 (いつものとおり、MSX マシン語入門講座という本で勉強します) データをロードしたり、他のレジスタとの間で 演算をすることは出来ないそうです。 名前の…
EX(エクスチェンジ)命令です。 MSX FANに載っているマシン語を解析しているときに でてきました。 結構使うのでしょうか? 値を入れ替えるという命令です。 EX (SP) , HL これは、スタックトップの値と、HLレジスタの内容を入れ替えます。 うん?スタック…
前回はスタックについて説明しました。 CALL / RETの時のスタックは、一時的に戻るアドレスを入れておくメモリの場所 のことでした。 SP ( スタックポインタ) は、そのアドレスを指し示すレジスタでした。 今回の勉強は、PUSH / POP 。 PUSH / POP はスタッ…
今日勉強するところはなんかややこしそう! CALL命令っていったら、 CALL C120H とか書いて、その番地に飛んで、 RET があったら、また戻ってくるというやつでした。 BASICでいうGOSUB ~ RETURNみたいなの。 別にメカニズムといっても、不思議なところはない…
今回はサブルーチンの呼び出し方と、戻り方です。 命令自体はとても簡単です。 CALL と RET です。 BIOSのところでも出て来ました! BASICでいうところの GOSUB ~ RETURN に当たります。 スポンサーリンク // サブルーチンを呼び出すのは、 マシン語からマシ…
今回はとても簡単で、便利な命令です。 +1増加するのが、INC (インクリメント) -1減少するのが、 DEC (デクリメント) です。 例:ニーモニックは、 ① INC B レジスタBの中身を1増やします。 ② DEC (HL) HLレジスタでアドレスを指定されるメモリの内容を1減…
// 今回はVRAMからメモリへのブロック転送です。 前回とは逆になります。 どんな時にこれらのBIOSルーチンを 使うのかと言いますと、 画面のデータをメモリへ写して、そこで改変して、再びVRAMへ 戻してやるような時です。 前回スクロールに使うと書きました…
// ブロック転送というのは、いっぺんに大量のメモリの内容を、 別のメモリのアドレスに写すというものです。 コレができると、マップの画面切り替えとか、 そういったことができるようになります。 マシン語ではこれが一番やりたいんですよね〜。 BASICでは…
BIOS!よく聞きます。 詳しい意味は最近知りました; マシン語では必要になってくるというか、使うととても便利なもの だそうです。 MSXのROMには、BASICインタープリタとBIOSが入っています。 BASICインタープリタは、BASICプログラムを翻訳しMSXで動くよう…