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

●BREAKアドレスとBREAKカウンタのセット

Z80版TK80ボード(ND80ZH)の機能説明の続きです。

TK80モニタには割り込みを利用したステップ機能があることは既に何回か説明をしています。
普通のステップ動作は、プログラムの先頭から1命令ずつステップ実行させるものですが、スタートしてからあらかじめ指定したアドレスまでは普通に実行して、その指定したアドレスまできたら、そこでブレイクして、そこからはステップ動作に移るようにすることもできます。
さらに、指定したアドレスまできたらいきなりブレイクするのではなくて、あらかじめブレイクカウンタに値をセットしておくことで、そのアドレスを実行するたびに、ブレイクカウンタを−1していき、カウンタがゼロになったときに、そこではじめてブレイクして、それ以後ステップ動作に移る、というようにすることもできます。
TK80では、ブレイクアドレスとブレイクカウンタもRAMの特定アドレスに割り当ててあって、そのアドレスに対して、[ADRSSET]と[WRITEINC]およびデータキーを使って、ブレイクアドレス、ブレイクカウンタをセットするようになっています。

ND80ZモニタもTK80のブレイク機能と全く同じことができます。
またブレイクアドレスとブレイクカウンタの設定についても、TK80と同じ方法で[ADRSSET]と[WRITEINC]を使って行うこともできますが、ND80Zモニタは、さらに、前回説明した[REG]キーを使って、より簡単にブレイクアドレスとブレイクカウンタを設定することができます。

前回と同じように、また写真を使って説明をすることにします。
ブレイクアドレスを設定するためには、[REG]に続いてデータキーの[E]を押します。
データキーの[E]には白抜き文字で[BRA]と印刷してあります。ブレイクアドレス(BREAK ADDRESS)です(前々回[第442回]のキーの写真を参照してください)。

[REG]に続いて[E]([BRA])を押したところです。

rAはブレイクアドレスのことです。
リセット後はブレイクアドレスはクリアされるので初期値として0000が表示されます。
ここでブレイクさせたいアドレスを入力します。

[8][2][0][3]と入力したところです。
入力した値を実際にメモリに書き込むには[WRITEINC]を使います。


[WRITEINC]を押すと、7セグメントLEDのデータ表示部に表示されていた値がメモリに書き込まれます。
上の写真の場合では、ブレイクアドレスバッファに8203が書き込まれます。
そのあと、rCが表示されます。
rCはブレイクカウンタのことです。ブレイクカウンタもリセット後は00になります。
ブレイクカウンタは8ビットなので、7セグメントLEDのデータ表示部の上位2桁は使いません。もしそこに何か値を書き込んでも上位2桁の数値は無視されます。


ブレイクカウンタに繰り返し回数として25(16進数で指定しますから、10進数では37回になります)を入力しています。
このあと[WRITEINC]を押すと、7セグメントLEDのデータ表示部の下位2桁に表示されている値(この写真の例では25)がブレイクカウンタにセットされます。


[WRITEINC]を実行すると、ブレイクカウンタに値が書き込まれて、7セグメントLEDには次のレジスタ表示順のAF(Aレジスタとフラグレジスタ)が表示されます。
このあと続いて各レジスタに初期値を設定したいときは、[READINC][READDEC]でレジスタを選択して、データキーでデータを入力してから[WRITEINC]キーで値を確定します。
レジスタの設定が不要な場合や、あるいは必要な設定を行ってしまったあとは、[REG]に続いてデータキーの[0]を押すとREGモードが終了して、通常のモニタキーの操作モードに戻ります。

●TK80モニタとND80Zモニタの切り換えとステップスイッチ

肝心のことを説明していませんでした。
今回のZ80版TK80ボード(ND80ZH)のROMにはTK80モニタと当社オリジナルのND80Zモニタの両方が書き込まれています。
モニタプログラムの選択はボード上のディップスイッチによって行います。

左端(1)を上(ON)にするとND80Zモニタが選択され、下(OFF)にするとTK80モニタが選択されます。
なおついでですから、ステップスイッチについても説明をしておきます。
右端(4)がステップスイッチです。
(4)をONにすると、ステップ動作(およびブレイク動作)が有効になります。
OFFのときは、ブレイクアドレスやブレイクカウンタが設定されていても、ブレイク、ステップ動作は行われません。

●メモリダンプ

今回のZ80版TK80ボード(ND80ZH)にはプリンタ出力の機能があります。
出力コネクタはDOS/Vパソコンと同じ25pinのDSUBコネクタです。
ここに接続できるプリンタはセントロニクス準拠インターフェースのプリンタです。
昔のMSDOSの時代のプリンタは接続できますが、最近のWindows専用プリンタはコネクタが同じでもインターフェースが異なりますから接続することができません。

何回も同じことを書きますが、WindowsはバージョンUPのたびに新しい機能が追加されるのはいいとしても、以前の機能が使えなくなってしまう、というのは本当に困ったものです。
個人レベルならばOSがバージョンアップされるたびに周辺装置を含めてセットで買い換えてしまえばそれでよいのでしょうけれど(おお。まさにそれこそが業界の思うツボなのでありましょう)、業務として使うとなると、ことはそんなに単純ではありません。とんでもないことです。
なので私は、今のところといいますか、いまだにといいますか、ちょうど居心地がまずまずのWindows98に軸足を置いたままなのです。

以上。余談でした。
本題に戻ります。

ND80Zモニタは、プリンタ接続時には、指定したアドレス範囲のメモリダンプリストをプリンタに出力することができます。
[第422回]で説明した[*I/O]キーを使います。
データキーの[A]がメモリダンプ機能になっています。
プリンタ出力用の25pinDSUBコネクタにプリンタが接続されているときに、7セグメントLEDのアドレス表示部(左4桁)に、メモリダンプの開始アドレスを表示させ、データ表示部に終了アドレスを表示させてから、[*I/O]に続けてデータキーの[A]([DP])を押すと、プリンタに、指定した範囲のメモリダンプリストが出力されます。



アドレス0000〜02FF(TK80モニタプログラム)を指定してプリンタに出力した、メモリダンプリストの一部です。
1行は16ビット分で、左端がアドレスの表示です。
データは16進2桁で印字され、その右端にその値をASCIIコード(JISコード)とみなしたときの文字が印字されます。
00〜1Fなどの、文字コードとして定義されていないコードは、文字の代わりにピリオドが印字されます。
2010.2.27upload
2010.2.28加筆

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