Almost lost technologies

ここは昔の CPU を用いた工作記事を書くために用意しました。

i8008 工作 (承前)

中途半端に時間があるとさらに作業が進まない……

 

---------- >8 ---------- >8

(3) リセット
i8008 にはリセットピンはなく、パワーオン時は特定のシーケンスが走るようになっており、外部からリセットを掛ける場合は RST を差し込むしかありません。

パワーオン時のシーケンスは以下のようになっています。
① VDD (+5V) 立ち上がりで i8008 は一旦 HALT 状態になり内部でパワーオンシーケンスが走ってレジスタの初期化などを行います。一応全レジスタが '0' になると書いてある。このときは割り込みはアサートされない (というか多分アサートしてはいけない)。16サイクルかかる。どうもこのあと HALT のまま止まリ続ける模様。
② 初期化が終わったら割り込み信号をアサート*しなければならない*。T1Iステートに移ったらすぐ落とすこととある。

正直外付けのプロセッサで制御したほうが簡単ということで、一応 AVR で駆動することを想定します。

(4) ドライブするためのサブ CPU
ATmega328 だとピンが足りなくはないんですけど、8ビットのデータバスを押さえると残りピンがばらばらになってプログラムが面倒そうなので、40pin ATmega を使うことにします。また、25分周と奇数なのと、約数が 5 しかないので 5分周で CPU ドライブするとタイミングがややキツイので、20MHz そのまま放り込みます。このためよく使われている ATmega32A などが使えません。ここではメモリの余裕の関係で ATmega1284 にしています。ATmega4809 はまるっきりピンも機能も非互換なので両用はむりです。4809 のほうが断然安いけど、まぁ他の部分からすると差額はしれています。
逆に、ATmega1284 だと RAM が潤沢にあるのでスタックとして利用することも考えられなくはない。
また、一応ターミナルはこのサブ CPU 側で面倒を見るつもり。ここは気が変わるかもしれませんが i8008 はポート数が少ないのでボーレート生成まで集積している石だと使えるものがほどんどない。ポート数を半分食いつぶしますけど SCN2661 くらい? 8251A でシリアルクロックだけ AVR から供給、というのはアリかもしれません。