8080マイコンをつくろう!(TK−80完全復活!)
なんと8080です!
もちろん、BASICからCP/Mまで、できます!
36年の時を経ていまよみがえる
8080CPUマイコン組立キット!
なんたってはるか昔の生産中止品を集めて作る組立キットです。
生産前から堂々予告です。
入手できなくなったら
即生産終了!売り切れ御免!




2016.3.27

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

[第9回]

●ステップ動作でまさかのエラーが

前回のリモートプログラムの続きで、ステップ動作のテストをしましたら、まさかのエラーで立ち往生してしまいました。
いやそんなはずはない、はずだったのですが…。
ステップ動作のところはZ80とは回路が異なってきますから、試作の段階で念を入れて十分チェックをしましたし、しっかり動作確認をしましたから、エラーになるはずがない、と安心しきっていたのです。
こうなるとどこかに配線のミスがあるとしか考えられません。
回路図を見ていましたら、とんでもない配線ミスに気が付きました。
下は[第7回]でお見せしたCPU周りの回路図からステップ回路の部分を取り出したものです。


74HC74のpin1(CLR)にROMselect_が入っています。
これはとんでもないミスでした。
実はここはND80Z3.5(ND80ZV)ではこのようになっています。
うっかりここの部分をND80Z3.5と同じにしてしまいました。
ここは下の回路図のように74HC74のpin1(CLR)をVccにつないでおくべきでした。



74HC74のpin1に来ているラインをカットしてpin14に接続しました。


●ステップ動作

やっとまともにステップ動作が働くようになって、ほっとしました。

ステップ動作はND8080単独で5×5キーと7segLEDを使って実行することができますが、ここでは前回の続きでWindowsパソコンに接続してリモートで操作させてみました。
ステップ動作はブレーク後に有効になります。
ディップスイッチをステップ側にしておいて、ブレークアドレスとループ回数を設定したうえでプログラムを実行すると、設定したアドレスを指定回数実行したあと、ブレークします。
そのあと[Cont]キーを押すと1ステップ(1命令)動作をします。

上の画面の説明です。
アドレス8000からテストプログラムを書きました。
8000 3E00   LP:MVI A,00
8002 3C        INR A
8003 C30280    JMP LP

[/][r]でレジスタモードにエントリしてブレークアドレスレジスタ(brA、FFF0)に8002を、ブレークカウンタ(brC、FFF2)に32(16進数です。十進の50)をセットしました。

その続きの画面です。

念のために[-]キーで確認したあと[/][0]でレジスタモードを終了しました。
8000[.][r]
と入力するとプログラムが瞬時に50回実行され、アドレス8002でブレークし、レジスタの値が表示されました。
Aレジスタは32になっています。
PC(プログラムカウンタ)はブレークした次のアドレス8003になっています。

リモート操作の[Cont](Continue)は[n]キーです。
[n]キーを押すと1ステップだけ実行されてまたブレークしレジスタの値が表示されます。
[n]を入力するたびにAレジスタとPCカウンタの値が変化しています。
[+]キーを入力して普通の表示に戻った後[Ctrl][e]の入力でリモートプログラムを終了しました。

●フラグについて

レジスタダンプではフラグレジスタはAレジスタとペアでAFレジスタとして16進数で表示されますが、さらに右端部分でビットごとに表示されます。
8080とZ80ではフラグレジスタの一部の機能が異なっています。
両者の相違を下に図で示します。

Z80ではビット1はNフラグですが、8080では使われていません。
上のレジスタダンプでは1になっていますが意味はありません。
またビット2はZ80ではP/V(パリティ&オーバーフローフラグ)ですが8080ではP(パリティフラグ)です。

●ログファイル

リモートプログラムでは操作の全てを記録するログファイルが自動的に作成され保存されます。
下は上のテストの開始から終了までを記録したログファイルです。

logfile nd8080log\03272138.txt open

ND8080に接続しました
0001 0000 - 8000[ADRSSET]
8000 003E - 3e[WR+]
8001 3E00 - 00[WR+]
8002 003C - 3c[WR+]
8003 3CC3 - c3[WR+]
8004 C302 - 02[WR+]
8005 0280 - 80[WR+]
8006 8052 - 8000[ADRSSET]
8000 003E - [RD+]
8001 3E00 - [RD+]
8002 003C - [RD+]
8003 3CC3 - [RD+]
8004 C302 - [RD+]
8005 0280 - [RD+]
8006 8052 - /r
*** REGISTER mode entry ***
[ AF ] FFEA 0000 - ra
[ brA] FFF0 0000 - 8002[WR+]
[ brC] FFF2 0000 - 32[WR+]
[ AF ] FFEA 0000 - [RD-]
[ brC] FFF2 0032 - [RD-]
[ brA] FFF0 8002 - /0

*** REGISTER mode end ***
FFF0 8002 - 8000[ADRSSET]
8000 003E - r [RUN]
A F  B C  D E  H L   SP   PC   IX   IY  A'F' B'C' D'E' H'L' I R  SZ H PNC BRC
3202 0000 0000 0000 F800 8003 0000 0000 0000 0000 0000 0000 0000 00000010 00
n [CONT]
A F  B C  D E  H L   SP   PC   IX   IY  A'F' B'C' D'E' H'L' I R  SZ H PNC BRC
3202 0000 0000 0000 F800 8002 0000 0000 0000 0000 0000 0000 0000 00000010 00
n [CONT]
A F  B C  D E  H L   SP   PC   IX   IY  A'F' B'C' D'E' H'L' I R  SZ H PNC BRC
3306 0000 0000 0000 F800 8003 0000 0000 0000 0000 0000 0000 0000 00000110 00
[RD+]
8004 0602 - ^E
0000 00C3 - 
リモート接続を終了しました
logfile closed at Sun Mar 27 21:44:51 2016


8080マイコンをつくろう![第9回]
2016.3.27upload

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