2013.4.13
前へ
次へ
ホームページトップへ戻る

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第369回]


●ZB3BASIC用のSTARTREKを再修正しました

本日も朝からずっとプログラム作業に没頭しておりました。
ゲームプログラムなどにこだわっている暇などないのですけれど。
あ。
しかし、STARTREKプログラムを走らせる過程で、CP/M互換DOSやZB3BASICシステムにいくつかの見落としておりました問題箇所を発見することができました。
Y様が送ってくださったお蔭です。
本当に有難うございました。
とても役に立ちました。

さて、システムの改良点とは別に、[第367回]でお見せしましたZB3BASIC用のSTARTREKプログラムにも、さらにいくつか問題点がみつかりましたので再修正をいたしました。
乱数のサブルーチンはやっつけでZ80のリフレッシュ用レジスタ(Rレジスタ)を使ったのですが、これはやっぱりまずい場面が出てきました。
頻繁にコールすると乱数にならない場合が出てきます。
仕方がありませんから覚悟をきめて正攻法の乱数発生プログラムを書いて差し替えました。
そのためにマシン語のサブルーチンが長くなってしまいましたので、BASICのメインプログラムのロード開始アドレスも当初は8060番地としておりましたところを8100番地に変更いたしました。

今この記事を書いていて気がついたのですけれど、乱数の初期値が0だと乱数にならなくなってしまいますねえ。
ここはもう一度考えてみることにいたします。

●STARTREKのルールについて

最初はまったくちんぷんかんぷんでさっぱりわけがわかりませんでしたが、なんだか少しはわかってきたような気がします。

プログラムがスタートするとエンタープライズ号がスクロールしながら表示され、停止後数秒待ってから、命令が表示されます。
下の画面では、
25日間で敵戦艦(KLINGON WARSHIP)13艦を破壊せよ
という指令が与えられています。
ARE YOU READY ACCEPT COMMAND?
にはN以外の文字を入力して[Enter]を押します。
以下、何かを入力するときは最後に[Enter]を押します。
すると下のように表示されます。


前回Y様のメールにもありましたように、STARTREKゲームの舞台となります全宇宙は8×8の小宇宙で構成されています。
最初に画面に表示されるのが、現在エンタープライズ号がいる小宇宙(QUADRANT)です。

画面右側の
QUADRANT 6,7
がその小宇宙の位置を示しています。



表示されている、現在エンタープライズ号がいる小宇宙(QUADRANT)も8×8マスの座標に区切られています。


<E>がエンタープライズ号です。
その位置は右のSECTOR 1,2で示されています。
数学の座標などでは普通は(X,Y)のようにX(ヨコ)が先でY(タテ)があとというように表記しますが、STARTREKではそれとは逆で、タテが先、ヨコがあとに表示されます。
敵(KLINGON)は+K+で表示されます。
たまたま最初の場面で敵に遭遇しましたが、敵がいないこともあります。
今回の設定では64の小宇宙に敵は13ですから、敵がいない場所の方が多いことになります。
その敵を別の小宇宙にワープしながら探します。

この図では敵は(6,1)にいます。
自分の位置から、敵位置の方向(DIRECTION)を計算して、攻撃します。
この計算について、わかったことがあります。

途中ですが時間がなくなってしまいました。
続きは次回にいたします。

ワンボードマイコンでCP/Mを![第369回]
2013.4.13upload

前へ
次へ
ホームページトップへ戻る