8080マイコンをつくろう!(TK−80完全復活!)
なんと8080です!
もちろん、BASICからCP/Mまで、できます!
36年の時を経ていまよみがえる
8080CPUマイコン組立キット!
なんたってはるか昔の生産中止品を集めて作る組立キットです。
生産前から堂々予告です。
入手できなくなったら
即生産終了!売り切れ御免!




2016.6.23

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

[第42回]

●ゲームプログラムの乱数について(5)

ゲームのための乱数発生プログラムは毎回異なる数列になるようにしなければなりません。
Z80ではその仕掛けとして、本来はダイナミックRAMのリフレッシュ用カウンタレジスタとして用意されたRレジスタを利用する、という方法について前回は説明をしました。
しかし8080にはRレジスタがありません。

ND8080用の応用プログラム(ゲームプログラム)を作ろうとして、そこでつかえてしまいました。
なにかいい工夫はないものか。
必要は発明の母、なんてことを申しますが、そんな大げさなものではありませんけれど、8080でRレジスタの代わりになる、ちょいといい方法を思いつきました。
それがこれです。

              ;
              ;CHATTERING TIMER
              ;
              ;D1=4.5112ms->4.6841ms
              ;D2=9.0176ms->9.3648ms
              ;D3=27.0176ms->28.0679ms
              ;
                ORG $02DD
02DD 1624     D1:MVI D,24;=36 ck=7 (7+266*36+10)/2.048=9593/2.048=4684.08microsec
02DF 1E10     D1_2:MVI E,10;=16 ck=7  7+15*16+15=266
02E1 1D       D1_3:DCR E;       ck=5
02E2 C2E102     JNZ D1_3; ck=10
02E5 15         DCR D;    ck=5    
02E6 C2DF02     JNZ D1_2; ck=10
02E9 C9         RET;      ck=10
02EA 1648     D2:MVI D,48;=72  (7+266*72+10+10)/2.048=19179/2.048=9364.75microsec
02EC C3CF03     JMP D2_2
02EF 16D8     D3:MVI D,D8;=216 (7+266*216+20)/2.048=57483/2.048=28067.87microsec
02F1 C3DF02     JMP D1_2
              ;;;


キー入力ルーチンでコールされるチャタリング回避のためのタイマールーチンです。
ということはキー入力プログラムを実行するときは、このタイマールーチンが必ずコールされます。
これを利用することを考えました。
もともとはD2:では繰り返し回数をセットしたあと、すぐにD1_2にジャンプしていたのですが、そこにRレジスタの代わりになるプログラムを埋め込みました。
D2_2(03CF)へのジャンプです。

下はそのジャンプ先のD2_2のプログラムです。

              ;
03CF EB       D2_2:XCHG
03D0 21D2FF     LXI H,R
03D3 34         INR M
03D4 EB         XCHG
03D5 C3DF02     JMP D1_2


メモリ上に置いたRレジスタ(FFD2)の値を+1しています。
つまりキー入力ルーチンで、チャタリングタイマーをコールするたびにRレジスタの値が+1されるわけです。

今気が付きました。
このプログラムにはミスがありました。
繰り返しの数をDレジスタにセットするのはD2_2のあとでなければいけませんでした。
これではDレジスタがFFになってしまいます。

ま、でも、ちょっとチャタリングタイマーとしては大きい数字になりますが、ここはこういうことにしておきましょう。
将来何か直さなければならないところが出てきたときに、ついでに直すことにいたします。

このところずっと多忙で途中休み休みで書いてきました当連載もこれでひとまず終了ということにいたします。
これまで辛抱強くお付き合いいただきました皆様には心から感謝申し上げます。

ND8080組立キットはプリント基板やLSIの入荷がご注文に追いつかず、ご注文いただいた皆様には随分長くお待ちいただきました。
それも今月に入ってからやっと落ち着きました。
その後はそれほど待っていただかなくてもお届けすることができるようになりましたが、ここにきてプリント基板在庫がほとんどなくなってしまいました。
8080CPUや8224、8228もわずかな在庫が残っているだけですので、それがなくなったら追加で発注できるかどうかはなんともいえません。
もしご購入をお考えでしたら、早めのご注文をおすすめいたします。

8080マイコンをつくろう![第42回]
2016.6.23upload

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