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

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

[第288回]


●追加改造をしたSTOP回路のロジアナ波形

前回説明をいたしました、Z80の拡張命令対策をほどこしたSTOP回路がうまく機能している様子をとらえたロジアナ波形をお見せします。
下図はロジアナのプローブをつないだポイントを、前回お見せした回路図上にプロットしたものです。

ロジアナはSTOPスイッチの入力によってH出力になる74HC02pin13(プローブ00)の立ち上がりでスタートします。
74HC74のD入力(プローブ01)は、データバスのD0〜D7がCB、DD、ED、FDのときにHになります。
そのクロック入力(プローブ05)はMREQ(プローブ02)とM1(プローブ03)がともにLアクティブからHになったタイミングで立ち上がり信号として入力されます。
そのタイミングでD入力がラッチされQ_(プローブ06)から反転出力されます。
その一方でMREQとM1がLのときにHとなる信号(プローブ04)と上記のQ_出力がともにHになったときに、74HC73のクロック(プローブ07)が立下り、そのときにスイッチ入力信号がON(H)になっていたら、Q_(プローブ24)から反転出力され、それが最終的にはWAIT信号(プローブ25)になります。

こちらがその様子をとらえたロジアナ波形です。

プローブ08〜15はデータバスのD0〜D7に接続され、プローブ16〜23はアドレスバス下位8ビット(A0〜A7)に接続されています。
STOPスイッチからの入力は@の時点でアクティブになります。
その約200ns後にデータバスにはメモリからコード78Hが出力されています。
そのときのメモリアドレスはXX3AHです。
これに先立ってもうひとつ前のM1サイクルではデータバスにメモリのアドレスXX39HのデータEDHが出力されていて、それはすでにCPUに読み込まれています。
なおMREQ(プローブ02)のRで示した期間は各マシンサイクルに自動的に挿入されるDRAMのためのリフレッシュサイクルです(これは回路動作に影響は与えません)。
データバスの値がEDなのでプローブ01の信号はHになっています(Aの期間)。
そのH信号はプローブ05信号の立ち上がり(B)で74HC74にラッチされ、その結果Q_からWAIT出力禁止信号として次のM1が完了するときまで出力されます(C)。
そのCが利いているおかげで、本来ならばAのタイミングで立ち下がるはずのプローブ07の信号がHのままになるために、STOP入力信号がここでは有効になりません。
結局入力されたSTOP信号が有効になるのはその次のM1サイクルになったとき(B)ということになります。
プローブ06の信号によって、拡張命令の二番目のM1(OPコードフェッチサイクル)のときにはSTOP信号がラッチされるのを回避していることがおわかりいただけると思います。

前回書きましたように、Z8S180はこのような回路を用意しなくても、もっと簡単な回路で上記の問題を回避することができます(その回路につきましては次回に説明をいたします)。
しかし手間ではありますが、このような回路を工夫することで、問題がクリアできる様子を見るのはなかなかに楽しいものです。
「やったぜ!」という感じです。
これこそが、まさに「つくる楽しさ」であると思います。

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

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