標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第239回]

●朝になって読み直してみましたら、また…!

いやあ、毎度、毎度で本当に情けないことなのですが、前回書いたところを今朝になって読み直してみましたら、また、間違えてるじゃありませんか。
どうも、蓄積疲労なんじゃないでしょーか。
ちょっと休養が必要だと思いますね。

前回のブートプログラムのリストの下あたりのところで、PICからCPUへのデータの受け渡しについて説明をしています。
次の文です。ここが間違っていました。

[もとの文]
PICはデータをセットしたことをCPUに知らせるために、I/Oアドレス98のbit0のラインをLにします。
CPUはアドレス98のbit0を見ていて、それがL(=0)になったら、これからデータの読み込み処理をしますよ、ということをPICに伝えるために、アドレス98のbit0をL(=0)にしてから、アドレス94からデータを読み込み、HLレジスタで示すメモリアドレスに書き込みます。
PICはアドレス98のbit0出力を監視していて、それがLになったら、データセット信号(アドレス98のbit0入力)をHに戻します。

そして最後に、1バイトのデータのメモリ書き込み作業が完了したことをPICに知らせるために、アドレス98のbit0出力をH(=1)にします。
PICは、そのCPUからの信号を見ていて、アドレス98のbit0出力がHになったのを確認したら、次のシリアルデータ受信〜CPUへのパラレル出力動作に入ります。

[正しい文]
PICはデータをセットしたことをCPUに知らせるために、I/Oアドレス98のbit0のラインをLにします。
CPUはアドレス98のbit0を見ていて、それがL(=0)になったら、これからデータの読み込み処理をしますよ、ということをPICに伝えるために、アドレス98のbit0をL(=0)にしてから、アドレス94からデータを読み込み、HLレジスタで示すメモリアドレスに書き込みます。
PICはアドレス98のbit0出力を監視していて、それがLになったら、データセット信号(アドレス98のbit0入力)をHに戻しておいて、次のシリアルデータ受信作業に行きます。

CPUは1バイトのデータのメモリ書き込み作業が完了したことをPICに知らせるために、アドレス98のbit0出力をH(=1)にしておいて、次のデータがPICから出力されるのを待ちます。
PICは、次のデータの出力準備が完了したら、アドレス98のbit0出力がHになっているのを確認してから、アドレス94に次のデータを出力し、アドレス98のbit0のラインをLにします。

●TK80のRETキー

さて、やっとまた、TK80のお話に戻りました。
とりあえずは、TK80モニタの移植にも成功して、各キーの動作を確認してみました。
このあたりのところについては、[第235回]で、キー操作の写真をお見せしました。
ただこのときは、まだお見せしていないキーがありました。

[第235回]でお見せしたキー操作は、[0]〜[F]の「数値」キーと、[ADRS SET][READ INCR][READ DECR][WRITE INCR]です。

[STORE DATA]と[LOAD DATA]はとりあえず後の作業ということにします。
すると残るキーは[RUN]と[RET]です。

[RUN]はユーザープログラムを実行するためのキーです。
たとえば[4][0][0][0][ADRESET][RUN]と操作することで、アドレス4000から書かれているプログラムを実行します。
この[RUN]キーについても、正しく機能することを確認しました。

そこで、残る[RET]です。

まいったなぁ…。
[RET]は、プログラムのステップ動作とブレイク動作のためのキーです。
ブレイク動作については、[RET]キーはなくてもよいのですけれど、ステップ動作については、[RET]キーが必要です。

だって、ステップ動作については、「つくるCPU」本体の回路に、マシンクロック毎のステップ動作の機能がちゃんとあるじゃありませんか。じゃあ、こいつは省略してもいいのでは…。

とも思ったのですけれど、でもそうすると、[RET]キーがただの飾りになってしまいます。
「TK80と同じ動作をさせる」って言ったじゃないのさ。うそつき。

でもですねえ。TK80のステップ動作はちょいと特殊な割り込み回路が必要なんですよぉ。
また、回路を追加しなくちゃならないじゃありませんかぁ。
もう、いいかげん、疲れちゃってるんですから…。

う。割込み?
そういえば、まだ、割込みについて、説明をしていませんでした。

せっかく割込み回路についても説明をしなければ、と思っていたことでもありますから、この際、老骨にムチ打って、もうひと頑張りしましょうかぁ。

TK80モニタプログラムのステップ動作、ブレイク動作のための追加回路も作ってしまいましたよ。
回路については、お話が進んでいく中で、そのうちご披露いたしますね。

ところが、ところが、せっかく回路を追加したというのに、[RET]キーが反応してくれません。
いや、正確にいいますと、反応はするのだけれど、ちょいとおかしい…。
いや、ちょいとどころか、非常におかしい。
まるで、まやかしの術にでもかかっているかのような…。
いやーな予感がしてたんだ、ほんとうは…。

ああ、またしても…。
果てなく続く泥沼の道…(もう、ほんと、疲れた)。
2009.6.3upload

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