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

☆☆☆前回UPしました、緊急のご連絡はお読みいただきましたでしょうか?
[第346回]に書きましたように、突然の災難で、メールに使っていたパソコンのハードディスクがダウンしてしまって、ご購入者様のメールアドレスも消えてしまいました。
メールでお知らせできませんので、とりあえずホームページ上でお知らせしております。

●1KΩの抵抗について

組立説明書にミスがあって1KΩを取り付けるべきところが100KΩになっていましたので、説明書を訂正してください。
というのが「緊急のご連絡」の内容なのですが、すると、そこで1KΩを使ってしまったら、100KΩが余って、1KΩは足りなくなってしまうのではないか?
と心配になってきてしまいます。

でも、その点については、ご安心ください。
こういうこともあろうかと、抵抗やLEDなどで数が多いものは1本余計に入れてあります。
さらに今回は基板の裏に何本か抵抗を取り付けてお送りしたのですが、そのうちの1本は1KΩでしたので、その分も含めると1KΩは2本余る計算ですから、大丈夫です。

●前回の説明にもミスがありました

前回説明をしましたOUT命令のテストプログラムの実行時間の計算に誤りがありました。
前回のその部分は今日になってから訂正いたしました。

操作説明書も同じところが間違っていますから、訂正をお願いします。
操作説明書39ページ 24−3.オシロスコープや周波数カウンタを使わないで観測する の下記部分です。
赤字のように訂正してください。

実行クロック数を計算します。
Bレジスタが256回インクリメント(+1)されるごとにAレジスタが+1されます。
Aレジスタが+1されるときのクロック数をまず求めます。

 (8+12)×256−4+8
+8+12=5144クロック

−4は256回に1回、Bレジスタが00になったときだけJNZ命令が8クロックになることによる補正です。
これが128回繰り返されるごとに10pフラットケーブルの6番からの出力が反転します。

 
5144×128=658432クロック
 658432×0.5=329216μs

0.33
秒ごとに10pフラットケーブルの6番に取り付けた赤LEDが点滅するのが確認できます。

☆☆☆訂正については以上です。

…だったのですが。
たった今、YT様からメールが入りました。

●またミスがありました

また組立説明書にミスがみつかってしまいました。
なんだかミスだらけでメゲてしまいます。

組立説明書29ページ 中ほどにある次の一行を削除してください。
これに合わせて、ADDRESS BUS(外部アドレスバス)A15〜A0も同じタイミングで点滅します。

ここは[3]プログラムカウンタ回路の実装後の動作テストの説明の最後の部分です。
MYCPU回路がまともに動作するようになると、アドレスバスにプログラムカウンタの内容が出力されるようになりますが、ここまでの作業では、まだ回路が不完全なのでプログラムカウンタの内容はアドレスバスに出力されません。
なのに、いかにもプログラムカウンタと同じようにアドレスバス(のLED)も点滅するという、上の文はウソでした(全く見ずに書いたことがバレバレです)。この時点ではアドレスバスのLEDは点灯したままになります。
YT様、重ねてご指摘いただき感謝いたします。
ありがとうございました。

●組立作業が快調なペースで進んでいます

今回の抵抗のミスおよび上記のミスをご指摘いただいたのは、MYCPU80の製作記事をご自身のブログで書いていらっしゃるYT様です。
そのブログについては[第344回][第345回]でご紹介させていただいたのですが、昨日訪問させていただきましたら、快調なペースで組立作業が進んでいました。
[2]RAMとスイッチ回路 まで完成です。

YT様のブログはこちらです。FIAT500と洗車の日々・・・(http://plaza.rakuten.co.jp/flyback/)

私の方もがんばって説明を進めなくてはいけません。

●[10]IN、OUT、RLC〜RAR、STC、CMC、CMA命令回路の動作テストです(操作説明書から)

☆☆☆前回からの続きです☆☆☆

●25. RLC〜RAR命令のテスト

MYCPU80組立説明書 V組立 [10]IN、OUT、RLC〜RAR、STC、CMC、CMA命令回路 の組立作業後に行う動作テストの説明です。

●25−1. RLC命令のテストプログラムをメモリに書く

メモリに次のプログラムを書きます(1. メモリにデータを書き込む の説明を参考にして操作してください)。

0000 310000  LXI SP,$0000
0003 3E80    MVI A,80
0005 CD3000  CALL $0030
0008 07      RLC
0009 4F      MOV C,A
000A C30500  JMP $0005
(リスト23)RLC テストプログラム

[注記]0030からのタイマールーチンがないとリスト23のテストプログラムは実行できません。もしまだタイマールーチンをメモリに書き込んでいない場合には、16−1.タイマールーチン(NOP命令のテストプログラム)をメモリに書く の作業をしてください。
組立説明書か、この操作説明書にしたがって、前から順にプログラムのテストをしてきた場合には、RAMに書かれたプログラムやデータはボタン電池でバックアップされていますから、0030からのタイマールーチンも残っているはずですが念の為に確認してみてください。

RLCはAレジスタを左に(ビット0からビット7の方向に)1ビットシフトする命令です。
ビット7の値はビット0に入れられますが、同時にC(キャリー)フラグにも入れられます。
リスト23はビット7だけが1のデータ(80)を初期値としてAレジスタに入れた後、0.5秒ごとに左シフトすることを繰り返すものです。
0030からのタイマールーチンの中でAレジスタが使われているため、Aレジスタがシフトされる様子をLEDで確認することはできません。MOV C,Aはそのためにつけ加えられたものです。
Aレジスタの様子はLEDで確認することができませんが、代わりにCレジスタのLEDでその様子を見ることができます。

●25−2. テストプログラムを実行する

プログラムの実行の仕方については 4. テストプログラムを実行する を参照してください。
RESETSWを押しながら、ディップスイッチDS3−4をOFFにします。その後RESETSWを離すとプログラムが実行されます。

プログラムが実行されると、0.5秒ごとにCレジスタの値が80→01→02→04→08→10→20→40→80の順に左シフトします。80から01になるタイミングでC(キャリー)フラグが点灯しますが、その他のタイミングでは消灯します。

リスト23の0008 07 RLCを、0F(RRC)、17(RAL)、1F(RAR)に書き換えることで、それぞれの命令の動作を確認することができます(各命令の動作については8080命令説明書を参照してください)。

なおRLC〜RAR命令については、当社ホームページの
「つくるCPU[第168回]」(http://www.alles.or.jp/~thisida/mycpu168.html)「つくるCPU[第171回]」(http://www.alles.or.jp~thisida/mycpu171.html)
でも説明をしています。

●26. STC、CMC、CMA命令のテスト

MYCPU80組立説明書 V組立 [10]IN、OUT、RLC〜RAR、STC、CMC、CMA命令回路 の組立作業後に行う動作テストの説明です。

●26−1. STC、CMC、CMA命令のテストプログラムをメモリに書く

 メモリに次のプログラムを書きます(1. メモリにデータを書き込む の説明を参考にして操作してください)。

0000 310000  LXI SP,$0000
0003 3E00    MVI A,00
0005 4F      MOV C,A 
0006 07      RLC
0007 CD3000  CALL $0030
000A CD3000  CALL $0030
000D 37      STC
000E CD3000  CALL $0030
0011 2F      CMA
0012 4F      MOV C,A
0013 3F      CMC
0014 C30E00  JMP $000E
(リスト24)RLC テストプログラム

[注記]0030からのタイマールーチンがないとリスト24のテストプログラムは実行できません。もしまだタイマールーチンをメモリに書き込んでいない場合には、16−1.タイマールーチン(NOP命令のテストプログラム)をメモリに書く の作業をしてください。
 組立説明書か、この操作説明書にしたがって、前から順にプログラムのテストをしてきた場合には、RAMに書かれたプログラムやデータはボタン電池でバックアップされていますから、0030からのタイマールーチンも残っているはずですが念の為に確認してみてください。

STCはC(キャリー)フラグをセットする命令です。
CMCはC(キャリー)フラグを反転させる命令です。
CMAはAレジスタの値を反転させる(1のビットを0に、0のビットを1にする命令です。
リスト24はC(キャリー)フラグとAレジスタの値を、0.5秒ごとに反転させることを繰り返すものです。
0030からのタイマールーチンの中でAレジスタが使われているため、Aレジスタが反転される様子をLEDで確認することはできません。MOV C,Aはそのためにつけ加えられたものです。
Aレジスタの様子はLEDで確認することができませんが、代わりにCレジスタのLEDでその様子を見ることができます。

●26−2. テストプログラムを実行する

プログラムの実行の仕方については 4. テストプログラムを実行する を参照してください。
RESETSWを押しながら、ディップスイッチDS3−4をOFFにします。その後RESETSWを離すとプログラムが実行されます。

プログラムが実行されると、最初1秒間はCレジスタとC(キャリー)フラグが0クリアされ、LEDが消灯します。その後は0.5秒ごとにCレジスタの値が00とFFを交互に繰り返し、また同じタイミングでC(キャリー)フラグが点滅します。

なおSTC、CMC、CMA命令については、当社ホームページの
「つくるCPU[第167回]」(http://www.alles.or.jp/~thisida/mycpu168.html)
「つくるCPU[第170回]」(http://www.alles.or.jp/~thisida/mycpu170.html)
「つくるCPU[第171回]」(http://www.alles.or.jp/~thisida/mycpu171.html)
でも説明をしています。

2009.9.30upload

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