研究所入口  研究日誌  アプリ  データベース  掲示板
MSX自作ソフト紹介

標準モード

説 明
Basic
目の前に広がる崖を越えるコマンド選択式のアドベンチャー。AVG0.BAS
名作ゲームのコラムス。(初期設定)COLUMNS.BAS
(実行)COLLLL.BIN
(実行ソース)COLUMNS.ASC
ダイヤを5個集めるとステージクリア。DAIYA.BAS
どのモンスターが勝つか?FIGHT.BAS
ふわふわ。スペースキー1個のワンキーゲーム。FUWAFUWA.BAS
(アセンブラ部ソース)FUWAFUWA.ASM
迷路自動作成。MAKEMAZE.BAS
3D迷路をさまよう。MAZE0.BAS
意地悪な3D迷路。MAZE1.BAS
フィールドタイプの迷路。MAZE2D.BAS
オセロゲーム。OTHELLO.BAS
石をすべて取る、パズルゲーム。PICKUP.BAS




高速モード

説 明
Basic
ダイヤを5個集めるとステージクリア。DAIYA.FST
迫り来る敵を振り切って、おなかいっぱい。DOT-GAME.FST
オセロゲーム。OTHELLO.FST
石をすべて取る、パズルゲーム。PICKUP.FST

拡張子FSTは高速モード用BASICプログラムに付けています。
中身はBASと同じですので、普通にBASICで実行できます。




MSX-DOS

機 能
実行ソース
BEEP音を鳴らす。
DL
DL
CAPSキーをONにする。
DL
DL
COLOR変更。
DL
DL
ファンクションキーの内容変更。
DL
DL
BEEP.ASMのファイルが壊れてしまっているようです。

レジスタの内容をPUSHでスタックに積んで保存して、
BEEP音を鳴らす文字コードをAレジスタに入れて、
DOSコールしていたと思います。
(キャラクタコード07Hを表示していたはずです。)

ソースの中でインクルードを記述しているところがありますが、
当時C言語の影響を受けて、独自に機能を拡張しました。
拡張といっても、単純に、その位置にライブラリファイルの内容を追加しているだけです。




ソースライブラリ

名 称
ソース
ASCtoBINASC2BIN.LIB
atJUMPATJMP0.LIB
CheckHEXCHKHEX.LIB
CommandLineCheckCMDLINE.LIB
CommandNo.CMDNO.LIB




Z80 小技

■Aレジスタに0を入れる

XOR A

同じ値どうしでXOR演算をすると0になります。


■Bレジスタに0を入れる

LD B,0

これが一番素直です。ステート数も7です。

XOR A
LD B,A

こちらはメモリを2バイト消費するのは同じですが、ステート数が8なので、
わずかですが時間が掛かります。

よくやる間違いとして「XOR B」があります。
これはBレジスタに代入する命令ではありません。
Aレジスタに何が入るかも分かりません。


■Aレジスタが0か判定する

AND A  または OR A

0ならZフラグが立ちます。


■Bレジスタが0か判定する

INC B
DEC B

0ならZフラグが立ちます。


■自己書き換え

コラムスの次の石を表示するところで利用しました。

PUTF1: LD   HL,(LOCATE);Print FALL1
       LD   DE,0B03H
       ADD  HL,DE
       CALL POSIT
       LD   DE,FALL1
       DEFB 3EH
PUTF2: NOP            ;Print FALL2
       CALL PTFALL
       CALL PTFALL
PTFALL:LD   A,(DE)
       ADD  A,0B1H
       CALL CHPUT
       INC  DE
       LD   HL,MG6
       JP   PRINT
PUTF2は次に出てくる石を表示するサブルーチンです。
設定によって表示しないようにできます。

表示する時は、先頭に「NOP」命令を書いておきます。
(「NOP」は何もしない命令です。)
表示しない設定の時は、ここにC9H(「RET」命令)を書きます。
PUTF2をコールした時に、「RET」ですぐに戻ります。

「DEFB 3EH」は「LD A,n」のコードです。
PUTF1のサブルーチンはPUTF2を利用しています。
PUTF1(現在落ちている石)は必ず表示するため、
PUTF2の先頭が「NOP」と「RET」のどちらでもいいように、
命令コードをAレジスタに代入して実行しないようにしています。

表示するかどうかをワークエリアに入れておいて、それを判定するよりもスマートに記述できます。
もちろん、プログラムがRAM上に置かれることが前提です。





Z80 参考

Ticalc Japan :: Z80アセンブラの小技 プログラミングテクニックを紹介しています。
Z80 教室 日高徹さんが運営しています。
にゃごすのホームページ MSX2 テクニカルハンドブックの内容を公開しています。



■Z80マシン語秘伝の書 日高徹/著

高度な内容をやさしくQ&A形式で説明しています。
初歩的な内容も紹介されています。
すぐに使えるサブルーチンがたくさん掲載されています。

巻末の資料が素晴らしいです。
ニーモニック表にバイト数・ステート数・変化するフラグなど
分かりやすく書かれています。
マシン語コード表はハンドアセンブルする時にとても役に立ちました。

Z80でプログラミングするなら、一度は読むことをお勧めします。


■MSX2 テクニカルハンドブック



MSXのことがほとんど分かります。




研究所入口  研究日誌  アプリ  データベース  掲示板