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

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

[第263回]


●CPUクロック(2)

今朝になりましてから前回書きましたところを読み直してみましたら、あれ、ちょっとちがうなあ、という感じがいたしました。
なにしろほんの数日経っただけで記憶がぼろぼろ欠けていってしまうものですから、ついいいかげんなことを書いてしまいます。

前回の内容です。
E−80ボードにND80ZV(ND80Z3.5)の電子オルゴールプログラムをロードして、実行してみましたところ、めっちゃ遅いことに気が付きました。
で。
64180の参考書を調べてみたところ、リセット後は命令の各マシンサイクルに1クロックのウェイトが挿入されてしまうことがわかりました。
と書いたのでありますが。

そこのところが違っておりました。
1クロックのウェイトではなくて、正しくは、命令の各マシンサイクルに3クロックのウェイトが挿入される、でした。

ですからたとえばJP命令のクロックはZ80では10クロックですが、64180は少し短縮されていてノンウェイトならば9クロックなのですが、JP命令は3マシンサイクルなので、リセット後は倍の18クロックになってしまいます。
めっちゃ遅いわけです。

前回書きましたそこのところは今朝になりましてから書き直しました。
むむ。
歳は取りたくないものであります。

さて。
リセット後に必ず挿入されてしまうこの3クロックのウェイトは、CPUに内蔵されているI/Oコントロールレジスタの設定値をソフトウェアで書き換えることによって、3、2、1、0ウェイトのいずれかにすることができます(リセットするとまた3ウェイトに戻ってしまいます)。

そこで、さっそく電子オルゴールプログラムの先頭で内蔵I/Oコントロールレジスタを書き換えて、ノンウェイトにしてみたのですけれど、それでもやっぱり遅いのです。

あらためてじっくりと64180の解説書を読んでみましたら。
とんでもない間違いをしていたことに気がつきました。

以上が昨日の内容でした。
どこが間違っていたのか?

Z8S180(64180も同じ)に供給するクロックは、CPUクロックの倍の周波数のクロックが必要だったのです。

実は、私はZ8S180も64180も今回さわるのが初めてなのです。
んで。
ついZ80やPICと同じでいい、と思い込んでしまったのです(お恥ずかしい)。

そりゃあ、遅いはずです。
10MHzのつもりで10MHzのクロックを供給したのですが、ということはつまり実際の実行クロックは半分の5MHzになってしまいます。
おまけにたっぷりとウェイトがかかっていたものですから、おそらくせいぜい2〜3MHzくらいで動いていたのでありましょう。
そりゃあいかにも遅いはずでありました。

さて。
めっちゃ遅い理由はわかりましたが、そういうことになりますと、CPUに供給するクロックの回路を変更しなければなりません。
ところがここでまた困ったことになりました。

実は前回ちょっと書きましたように、そこのところを説明するつもりで、やっと回路図も準備できたのですが、本日もずっときつい作業をやっておりましたので、また時間がなくなってしまいました。
毎回細切れ状態でまことに申し訳ありません。
この続きは次回にすることにいたします。

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

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