MZ80Kのエミュレータを完成させるには、8253 PITと 8255 PIO の動きを完全に理解してエミュレートしないとだめなので、ここで整理しておく。ちなみに回路としてはその下に タイマーICの555もあるので、これもやらないとな。。
さて、8253 PIT とは何なのかというと、カウンタです。設定した値からカウントダウンして0になると終わったよと知らせてくれます。このカウンタが C0~2 の3 つのカウンタが搭載されていて、それぞれ動作モードや値を設定して独立したカウンタとして機能します。カウントダウンは外部からクロックを入れることでカウントダウンを行います。GATEピンでカウントダウンする、しないを制御することもできます。
MZ80Kでは、この8253 を サウンド出力とタイマに利用しています。
MZ80K2に付属してきた取扱説明書のページで、MZ80Kがどのように利用しているか解説されています。

MZ80Kでは、メモリマップドI/O という方式が採用されていて、メモリの E000h~E008h が 8255と8253 につながっていて、そこのアドレスに値に読み書きして 8255と8253 を制御するわけです。
MZ80Kに電源を入れて表示される モニタ SP-1002 では、8253の C0 にサウンド・コントロール用にコントロールワードをセットしています。
MZ80Kの8253 周辺の回路図を見てみましょう。

CLK1 に 31.25Kのクロックが入っていて、そのOUT1 がCLK2 に接続されています。つまりこの二つのカウンタは回路上で連携しているのです。
細かい挙動
- コントロールワードを設定しただけではカウントダウンはスタートしない
- カウントダウンしているときにコントロールワードを設定してもカウントダウンは続いている
- 1byte または 2byteのカウンタ値が与えられたらカウントダウンスタート
- カウンタの値はカウントラッチしてもしなくても読みとれるが2byteのときは値がずれる
- カウントラッチした値があれば、その値を返して、カウントラッチを解除する
- カウントラッチしたまま、カウントダウンがつづいて0になってもカウントラッチの値はそのまま
- コントロールワードで再ラッチしても値は元のまま
- コントロールワードで新しくタイマの設定がされたらラッチは解除
細かい挙動については、今後も継続メンテ。
このページもまだ途中なので、継続メンテ