復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第467回]
●ステップ動作
前回からの続きです。
前回は、フロントパネルのスイッチを使ってメモリに書いた、下のプログラムを実行しました。
0000 DBFF IN A,(FF)
0002 D3FF OUT (FF),A
0004 C30000 JP $0000
今朝になりましてから前回のところを読み直してみて気がついたところがありましたので、最後のところに書き加えました。
プログラムを実行するとアクセスしていないはずのアドレスバスの上位A8〜A15に、アドレスFFHのスイッチの設定値がそのまま表示されているように見えるのですが、それはなぜでしょうか?
という文です。
実は先日から、何だかどうも前にも同じようなことを書いたような気がしてなりませんでした。
むむ。
デジャブか???
デジャブなどではありませんでした。
やっぱり。
書いておりました。
[第300回]と[第301回]に全く同じことをすでに書いておりました。
うむむむむ。
半年以上も前のことですものねえ。
私の場合、覚えていたら、そりゃあ奇跡つうもんです。
ま。
書いております内容は前回、今回あたりと同じですけれど、写真は新しく撮りましたものですから…。
んでも、なんだかがっくり、力が抜けてしまいました。
気を取り直して、書いてしまいましょう。
今度はステップ動作をさせてみました。
RUN/STOPスイッチを押し下げてCPUを停止させてから、RESETスイッチを押します。
CPUはアドレス0000Hを表示した状態で停止しています。
入力する値も変えてみます。
33Hにしました。
アドレスバスLEDは全部消灯しています。
アドレスは0000Hです。
DATA BUSにはDBHが表示されています。
左側のCPU STATUSを見ると、MEMRD(左端)とM1(右から2つ目)が点灯しています。
命令のM1サイクルにあって、CPUがメモリから命令コードを読み出していることを示しています。
右から2つ目のスイッチ、AUTO STEP/SINGLE STEPを押し下げます。
アドレス表示が0001Hになり、メモリの値FFHがDATA BUSに表示されました。
CPUがIN命令の2バイト目、I/Oアドレス部を読み込んでいることを示しています。
M1の表示が消えました。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
すると下位アドレスA0〜A7にI/OアドレスのFFHが表示されました。
左側のCPU STATUSは右から4つ目、IORDが点灯しています。
ここで、上位アドレスバスA8〜A15に注目してください。
さきほどまでは全部消灯(00H)していたのですが、ここにきて55Hが表示されました。
これが前回の最後に書きましたことへの答えです。
Z80(Z8S180)ではIN A,(XX)を実行すると、アドレス上位8ビットに、実行前のAレジスタの値が出力されます。
Aレジスタの値は前回実行したときのままですから、55Hです。
IN A,(FF)を実行したために、その直前のAレジスタの値(55H)がA8〜A15に表示されたのです。
IN命令を実行中ですから、I/OアドレスFFHの値(左側の8個のスイッチの値)がDATA BUSに表示されています。
33Hです。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
アドレスが1つ進んで0002Hになりました。
DATA BUSにはD3Hが表示されました。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
アドレスが1つ進んで0003Hになりました。
DATA BUSにはFFHが表示されました。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
CPU STATUS のIOWR(右から3つ目)が点灯して、OUT命令を実行中であることを示しています。
ここで、上位アドレスバスA8〜A15に注目してください。
さきほどまでは全部消灯(00H)していたのですが、今度は先程Aレジスタに読み込んだスイッチの値33Hが表示されました。
Z80(Z8S180)ではIN A,(XX)と同様にOUT (XX),Aを実行すると、アドレス上位8ビットに、実行前のAレジスタの値が表示されます。
そのほかのLEDを見てみますと、OUT (FF),Aを実行しましたから、アドレス下位はFFHになっています。
DATA BUSにAレジスタの値33Hが表示されるとともに、PROGRAMMED OUTPUTにも33Hが表示されました。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
アドレスが1つ進んで0004Hになりました。
DATA BUSにはC3Hが表示されました。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
アドレスが1つ進んで0005Hになりました。
DATA BUSは全部消灯して00Hを示しています。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
アドレスが1つ進んで0006Hになりました。
DATA BUSは全部消灯して00Hを示しています。
もう一度AUTO STEP/SINGLE STEPを押し下げます。
0000Hへのジャンプ命令 C3 00 00 が実行されて、アドレスは0000Hになりました。
ここからは最初に戻って、繰り返しになります。
ワンボードマイコンでCP/Mを![第467回]
2013.8.31upload
前へ
次へ
ホームページトップへ戻る