Z280ボード(解決編)
作ったけど動作していなかったZ280ボード、動くようになりました。今回はその過程を書いてみたいと思います。
まずは私の常套手段、周波数カウンタであちこち測定してみました。動かすたびに状況が異なることがあるのですが、かなり高い確率で次のようになっていました。
マイクロプロセッサ・マイクロコントローラ等です。
作ったけど動作していなかったZ280ボード、動くようになりました。今回はその過程を書いてみたいと思います。
まずは私の常套手段、周波数カウンタであちこち測定してみました。動かすたびに状況が異なることがあるのですが、かなり高い確率で次のようになっていました。
いろいろやってMAA-1は復活しました。今回はその経過を書いてみたいと思います。
最初、Z8613を動かす (その3:苦戦中...)のようにアドレスバスの周波数をみようとしたのですが、リフレッシュアドレスやI/Oアクセスなどの命令フェッチ以外のアドレスが混じってしまいます。たとえテスト用に短いループにしてもリフレッシュアドレスは排除できません。
仕方ないのでアドレスは諦めて他から動きを推測することにします。
まずROMの先頭から C3,00,00 とJP nn命令による無限ループを書いてM1の周波数を測ると400kHzでした。M1は一周に1回(C3をフェッチ直後に)出るので、4MHz÷400kHz=10となって一周10クロックとなりJP nn命令のステート数と一致します。
同様に 18, FE とJR e命令にすると333kHz、4MHz÷333kHz≒12となってやはりJR e命令のステート数に一致します。
MC68020で外部バスがデータ・アドレスともに32ビットとなってメモリは当初計画のフルスペックの4GBとなりました。とはいえ登場した頃はまだ4GBのメモリを必要とする応用など無かったのでアドレスデコードが面倒くさいだけと思った人も多いでしょう。
ここまできてもメモリ管理ユニット(MMU)は内蔵されていません。メモリ空間の拡張のためにもMMUを必要とした80286などと異なり、必要性がそれほど無かったからかもしれません。
それでも仮想記憶には必要なので外付けとして用意されました。一つはMC68000,MC68010用のMC68451を拡張したらしいMC68461ですが、残念ながら詳しい資料が見当たりません。もう一つはMC68851、こちらは一部のパソコンなどにオプションで搭載できましたからそれなりに知られていました。いずれも論理メモリ空間・物理メモリ空間はともに4GBです。
命令フェッチのみですが256バイトのキャッシュも内蔵されました。
MC68010の前にMC68008について書いておきましょう。
Intelの8088に対抗して小規模向けに作られたのがMC68008です。データバスが8ビット、アドレスバスが20ビットに縮小されています。メモリ空間は1MBとなります。
これで不足するなら素直にMC68000を使えということです。
それでは本題のMC68010を見ていきましょう。
ハードウェア的にはMC68000と互換でそのまま挿し換えもできます。当然バス幅にも変更はなく、メモリ空間も16MBのままです。ソフトウェア的にはさまざまな改良点がありますが、メモリに関するものには次のようなものがあります。
MAA-1の改造のデバッグ状況は逐一実況してもなんなので大きな進展があったときに書くことにしますね。
今回はパーソナルなコンピュータのメモリ事情 (第8回: 80386以降)で書くと予告してまだ書いていなかったMC68000系のメモリ事情について取り上げてみようと思います。
以前書いたようにIntelは8086で64kBから1MBにメモリ空間を拡張するに際してはアドレスのレジスタ長を8ビット時代の16ビットのままセグメントによって拡張する道を選びました。単独で64kBを超えるメモリを必要とするプログラムが少ないという当時の事情を考慮すれば悪くない選択だったのでしょう。不幸は拡張を繰り返して使われ続けたことです。
一方でMotorolaは大胆にレジスタ長をデータもアドレスも32ビットにするという選択をしました。Intelが必要に応じて少しずつ拡張していくことになったのに対し、最初に考えうる最大限を計画しておいてそのサブセットを実装していくという道です。
ちょっと試してみたいことがあってMAA-1をちょっと改造しました。
別にZ80 CPUさえ載っていればZ80ボード3号機とかでも構わなかったのですが、実験のベースとしてはシンプルな方が良いのでMAA-1を選びました。
改造の内容はとても簡単で、Z80 CPU(とSIO/0)へのクロック供給を切れるようにすること、分周器の74LS393の横にジャンパピンを設置するだけです。こんな失敗の余地のなさそうな内容だったので事前に動作確認しなかったのですが...
とりあえずジャンパをショート(改造前と同じ状態)しておいて電源を入れてみたところウンともスンとも言わないではないですか。
2年前に掲載用の画面キャプチャした時は確かに動作していたのに。
CPUの6ピン(CLK)の周波数をテスタでみてみるとなんか変です。
D8251Aはついでに買ったと書きましたが、その時の本命だったのがこのデバイスです。
Texas InstrumentsのTMS9900JDLというプロセッサです。「7906」とありますから1979年製ですね。
64ピンの巨大なパッケージです。しかも結構薄いのでうっかり割ってしまいそうで怖いです。
このようなセラミックパッケージではピンは側面にロウ付けされているのが一般的ですが、これは上面に付けられています。ピンは金メッキのようですが40年近い年月のせいでかなりボロボロになってしまっています。
さて、これはTIのミニコン 990シリーズをIC化したものです。
SBC基板編ではメイン基板を見てみましたので、今回はメモリとI/OのSUB基板を取り上げます。
こちらもやはり変わったデバイスを選んでいます。
左端は最近入手したCERDIPのD8251Aを早速載せました。
隣のSN74HC4060Nは発振器と分周器が一体になったもの、使ったことのないものでこのために購入した新品です。
これまで4/8/16MHzのCPUクロックをLS161で13分周してからLS393でさらに分周して作ることが多かったのですが、これだと1つで済む上にCPUクロックを自由に選べるようになります。今度からこれにしようかなぁ。でも単体の水晶ってあまり好きではないから...
これも念のため単独で通電してクロック出力を確認しておきました。
予告したとおりSBC8080について書こうと思います。今回はCPUの載ったSBC8080、メモリやUSARTの載ったSUB8080基板は次回を予定しています。
部品は持っている中でなるべく変わったものを選んでいます。普通に作るだけでは面白くないですから。
左上の電源(+12V)関係は手持ちが無いのでNJM2360やコイルはこれ用に調達しました。ICはこのNJM2360だけ挿した状態で+12Vの電圧を確認しておきます。