処理時間を求める、の続きです。
5.スクロールの速度を上げる
処理時間を求める事と直接は関係ないですが...
画面スクロールの処理速度は、
メモリ読み出し→メモリ書き込み→ポインタを進める
が一連の流れで、この部分をどれだけ高速に出来るかになります。
最初のLDIRバージョンでは、1バイト当たり、23クロック
次のLDIバージョンでは、1バイト当たり、18クロック
です。
今のままでは、結構限界に近い速度です。
私が思いついたのは以下の2つです。
1)M1サイクル時のWAIT挿入を止める
通常では本体改造をしない限り、M1サイクルのWAIT挿入を止める事ができません。
ですが、外部RAM(拡張RAMパック)に関しては、M1サイクルのWAITを挿入しても動くようです。
新しいRAMだけでなく、当時のPC-6006などで試しても問題なく動作しました。
これで、1バイト当たり、16クロックです。

2)PUSH-POPを使い、さらに力技にする
PUSH/POP命令はメモリアクセスに関しては最速です。
ただ、自由に書き込み/読みだし位置(SP)を操れないので、その辺りで悩んだ結果、力技にしました(^^;)
1)のM1サイクルWAIT挿入なしとも併せて、1バイト当たり、12.5クロックになっています。

↓これまでのを合わせたプログラムです。ちょっと読みにくいプログラムになってしまいましたが。
test3p6.zip
0:(23clk/1byte)LDIR
1:(18clk/1byte)LDI
2:(16clk/1byte)M1時、WAIT挿入なし
3:(12.5clk/1byte)PUSH-POP
で、0〜3を繰り返し実行します。
途中でSTOPキーを押した時は、PAGEキーを押すと元に戻ります。
80行でFOR-NEXTしていますので、適当に修正してみて下さい。

