
TK-Z80についての質問

7セグメントLED表示で使用しているDMAのタイミングについて教えてください。
どうすれば7セグメントLEDに任意のデータを表示できますか。
モニタープログラムのキー入力はどうなっていますか。
モニタープログラムのワークエリア(RAM)の割り付けはどうなっていますか。
アセンブルからプログラムの実行までの手順を教えてください。
Z-Vison Windowsを接続する場合はどのように設定しますか。
Z-VisionやRM-80でトレース中に割り込み信号を入れても
割り込みプログラムに処理が移りません。なぜですか。
キットを購入したのですが,部品表と違う型番の部品が入っています。

7セグメントLED表示で使用している
DMAのタイミングについて教えてください。
DMAのタイミングチャートと回路図を見ながら以下の説明をお読みください。
- U11(74HC08)からCPUシステムクロックと同じクロックがU4(74HC4040)とU14(74HC393)で13段分周され,U14のQAから600Hzのクロックが出力されています。
- U14のQA(11番ピン)のクロックの立ち上がりに同期してU13(74HC74)のQ(6番ピン)からCPUへBUSREQ信号が出力されます。
- CPUはBUSREQ信号を検知すると,BUSACK信号をLowにし,データバスとアドレスバスをハイインピーダンス状態にします。
- BUSACK信号はU21(74HC00)で反転され,それを受けたU3(74HC74)はQ(9番ピン)からDMA信号,Q(8番ピン)からDMA信号を出力します。
- DMA信号はDMAアドレス生成部で使用されます。まずU14(74HC393)のクロックに入力されますが,仮に前の状態がQCQBQA=111とすると,このクロックの立ち下がりでQCQBQA=000となります。この値は次のU13(74HC367)によって,A15A2A1A0=1000となり,その他のアドレスは(3)によりハイインピーダンス状態なので10Kオームのプルアップ抵抗が効いてHiの状態になっており,生成されるアドレスはFFF8hとなります。このアドレスとMREQ,RDにより,データバス上にはFFF8h番地の内容が乗っています。
- DMA信号はU6(74HC107)とU21(74HC00)で構成される同期式カウンタの入力として使用され,データラッチ,アドレスラッチ(CLRと兼用)信号を出力します。同期式カウンタ部分を見ていくと,DMA信号はまず1段目の74HC107のJK端子に入りクロックに同期してQ(3番ピン)がHigh,Q(2番ピン)がLowになります(6−1)。Q(3番ピン)=High信号は,2段目の74HC107のJK端子に入り,次のクロックに同期してQ(5番ピン)がHighになります(6−2)。このとき,1段目のHC107の出力はQ,Qとも反転します。Q(2番ピン)とQ(5番ピン)を受けてU21(74HC00)からデータラッチ信号Lowが出力され(6−3),U20(74HC574)からデータバス上のFFF8h番地のデータがLEDへ出力されます。そして次のクロックで,Q(3番ピン)とQ(5番ピン)は共にHighとなり,CLR信号が出力されます(6−4)。CLR信号はタイミングチャートを見るとわかるように,いくつかの信号をクリアしますが,同時にU16(74HC137)の入力でアドレスラッチとしても使用しています。U16(74HC137)のデコーダ入力(ABC端子)は,U14(74HC393)で出力された下位3ビットアドレスと同じもので,出力はU17(TD62384)を介してLED2,3の桁選択に用いられます。いま,U14(74HC393)はQAQBQC=000なので,U16(74HC137)の15番ピンがLowになり,LED2の最左端の桁がアクティブになります。
以上 (1)〜(6)の一連の操作で7セグメントLED1桁を表示し,(1)〜(6)を8回繰り返すことにより全桁を表示することができます。
[先頭に戻る]

どうすれば7セグメントLEDに任意のデータを表示できますか。
TK-Z80はDMAによりFFF8h〜FFFFh番地のメモリーの内容を自動的に表示します。それで,任意のデータを表示するにはこのアドレスにデータをセットすればよいことになります。各桁とアドレスの関係は次のようになっています。
| 左 |
|
|
|
|
|
|
右 |
| FFF8h |
FFF9h |
FFFAh |
FFFBh |
FFFCh |
FFFDh |
FFFEh |
FFFFh |
各アドレスにはセグメントデータをセットすることになります。セグメントとデータビットの関係は次のとおりで,光らせたいセグメントに相当するデータビットに1をセットします。
| bit7 |
bit6 |
bit5 |
bit4 |
bit3 |
bit2 |
bit1 |
bit0 |
| d.p. |
g |
f |
e |
d |
c |
b |
a |
なお,参考としてプログラム設計時に作成したモニターの表示プログラムのフローチャートをダウンロードすることができます。
[先頭に戻る]

モニタープログラムのキー入力はどうなっていますか。
プログラム設計時のフローチャートをダウンロードしてください。詳細はこのフローチャートに記されています。(全3ページ。1ページ,2ページ,3ページ)
[先頭に戻る]

モニタープログラムのワークエリア(RAM)の
割り付けはどうなっていますか。
メモリーマップをダウンロードしてください。(全2ページ。1ページ,2ページ)
[先頭に戻る]

アセンブルからプログラムの実行までの手順を教えてください。
アセンブラにXA80(システムロード社)を利用した場合の手順についての資料を下記からダウンロードしてください(Xa80.pdf)。他のアセンブラの場合でも参考になると思います。
[先頭に戻る]

Z-Vison Windowsを接続する場合はどのように設定しますか
Z-Vision WindowsをTK-Z80で使用するときの設定方法については,次の資料をダウンロードしてください(zvr.pdf)。
[先頭に戻る]

Z-VisionやRM-80でトレース中に割り込み信号を入れても
割り込みプログラムに処理が移りません。なぜですか。
Z-VisionやRM-80のトレースは,次に実行する命令の,さらに次に実行する命令を‘INT30H’に置き換えることで,1命令実行したあとでデバッガに処理を移しています。例として次のプログラムをトレースする場合を考えます。
| LD |
A,30h |
;(1)ここまでトレースしてきた |
| LD |
B,16h |
;(2)次にこの命令を実行する |
| ADD |
A,B |
;(3) |
(1)で止まっているときに割り込み信号を入れると,リモートデバッガ内はDIになっているので割り込みは一時保留になります。リモートデバッガからトレースでアプリケーションに処理が移るときに,これまでアプリケーションでEIであればEIに戻すので,それ以降,割り込みを受け付けることになります。つまり,(2)の命令を実行する前に割り込みを受け付けます。
さて,(1)で止まっているときに割り込み信号を入れ,そしてトレースを行うと,(3)を‘INT30H’に置き換えてからアプリケーションに処理を移すので,割り込み処理と(2)の命令を実行してからデバッガに処理が移ります。というわけで,トレースでは割り込みプログラムに処理を移すことができません。
対応策は,割り込みプログラムのデバッグは,割り込みプログラムの先頭にブレークをはって一度ブレークをかけてからトレースすることで行います。
[先頭に戻る]

キットを購入したのですが,
部品表と違う型番の部品が入っています。
特にICのパッケージに記されている型番と部品表の型番が違うことがあります。しかしこれは相当品を使用しているためですので,動作的には何ら問題ありません。安心してお使いください。
[先頭に戻る]
