CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

時間調整

1ビット分の処理が39クロック分で出来ることがわかりましたが、RS232Cでボーレート38400bpsでダイレクトに送出することを考えると
このボードの原振が9.8304MHz、CPU内部クロックで4.9152MHzなので4915200/38400=128で128クロックタイムが必要になります。RS232Cとしては38.4kbpsは割と速い方ですがCPU時間から見ると結構余裕があるようです。

SODに「0」または「1」を送出する処理は39クロックで済んでいるので残り89クロックはダミーの命令を実行して時間を潰さなければなりません。ただ命令によって必要クロック数は決まっていて89クロックをピッタリ割り切るよう幾つか組み合さなければなりません
 
・影響がなく一番最適な「NOP」   ・・・1バイト命令 4クロックタイム
・即値ロード系「MVI A,imm」など ・・・2バイト命令 7クロックタイム
・ロード/ストア系「LDA addr」など ・・・3バイト命令 13クロックタイム
 
4,7,13がたまたま「互いに素」なので数学の問題風に書けば
 
イメージ 2
という感じでしょうか。
紙とエンピツでシコシコやって解いてもいいですが目の前に動作している8085ボードがあるので「おまえ自身で解け」と。
 
 
イメージ 1

Palo Alto Tiny BASICのバイナリをロードしてX,Y,Zを総当たりするプログラムを書いて実行。
十数秒で解が得られました。今見るとZを回すFOR文で「0」と「O」をミスタイプしてますが変数Oの初期値がゼロだったのでなんとかOKです

この結果をみればX=6、Z=5で「NOP」を6個 「LDA 0000H」を5個ダミーで挿入しておけば良さそうです。