温故知新: S-100バスの仕様を詳しく見てみる。
というのも、
今回 作ろうとしているマイコンボードにも44ピンのエッジコネクタがあり、ここにつなげる信号の配置をこれから決めていこうと思っているのだが・・・ 現時点では全くの白紙。
せっかく新たに仕様を決めるのであれば、今後 使いやすい奇麗な設計にしたい。 そのためには 過去の制作例を調べて参考にし、良いところは取り入れ、悪いところは同じ過ちを繰り返さないようにしたいと思います。
IntelのCPU 8080を使った 最初のマイコンの成功例としては、↓ Altair8800(アルタイル8800)が、とても有名です。
Microsoft社のビルゲイツとポール・アレンとポール・アレンがこのマシンで使える言語BASICを作ったことで成功し、現在のマイクロソフトが存在していると言ってもいい。 それだけ多くの台数が普及した最初のマイコンで、そこに使われているバス仕様が「S-100バス」と呼ばれるものだ。
”S-100" の名称の 「S」 は、StanderdのS、「100」はエッジ端子のピン数が100個だったからで、「標準100ピンのバス仕様」といった意味らしい。 こういった歴史的な話や、表面的な説明はネットをググれば出てくるが、肝心の「バスの信号内容」はなかなか探し出せない。 (それだけ みんな関心が無いのか?)
このブログでは、できるだけ有益な資料も実際に見られるように S-100バスの信号内容を ↓ に載せておきます。 (少しでも参考になればと…)
さすがに少し説明をしないと分かりづらいかと思います。
● pin番号 と 内容(=信号名) は 説明不要ですね。
信号名の最後に”*” アスタリスクが付いているものは通常、「負論理の信号」
という意味です。 「空き」と書かれている端子は現在使われていないピン。
「リザーブ」と書かれている端子は将来使う予定があるので使わないように(これも現在使われていない)という意味のピンです。
DI1(ディー、アイ、いち)とか、DO0(ディー、オー、ゼロ)とか、非常に読み分けづらい信号名が並んでいますので、区別しやすいフォントに変えてあります。 (Oはオー(アルファベットの)、斜線/のある0は数字のゼロです)
● [ M/S ] と いう項目は、その信号をどのボードが制御(主に出力)しているか?という区別です。
”M”というのがMaster(マスタ・ボード)がその信号を出す=つまりCPUボードが出す信号という意味です。(マスタは通常1枚のみ存在)
”S”というのがSlave(スレーブ・ボード)がその信号を出す=つまりCPU以外のその他のボードが出す信号という意味です。(スレーブは複数存在可能)
もうひとつ、
”B”というのが Bus(バス・ボード)がその信号を出す=今回KELのコネクタから5V電源を供給しているのと同じで、電源が主ですが、CLOCK信号などもバスで作って供給しているようです。
● [ Active ] と いう項目はそのままです。 その信号が、アクティブ・ローなら ”L”、アクティブ・ハイなら ”H” と書かれています。 O.C.(オープン・コレクタ)の信号はほぼ確実にアクティブ・ロー(=Lowの時に意味がある)です。
● [ Type ] と いう項目は、その O.C.(オープン・コレクタ)か 否かが書かれています。 例えば、98番ピンは ERROR* という名称で(おそらく エラー信号)、スレーブボードが出力し(CPUボードにエラーを伝える)、オープン・コレクタなのでワイヤード・オア( Wired OR )接続ができることが分かります。
ここまで 幾つか出てきた技術用語の意味は 自分で調べてください(説明は省きます)
このS-100バスには、いくつか特徴があります。
① まず、基板の部品面、半田(パターン)面ごとに pin番号がまっすぐに付けられています。 (つまり基板側から見て分かりやすい番号振りである点) 私が今回作るマイコン基板は(KELのコネクタに番号が付いていたのでそれで表を作った為:コネクタ側から見て分かりやすい番号振り)、基板を挟んで交互に1番、2番と番号を振りわけています。 どちらが良いのか悩む所です。
② 信号の配置がめちゃくちゃ。
アドレス信号(A?)などは、降順に並んでいたり、昇順に並んでいたり、アドレス番号がいきなり飛んだり、別の信号が間に挟まれたりと・・・ 使いやすいとは お世辞にも言えません。
デファクト・スタンダード(設計が悪くても普及してしまって標準になった仕様)の典型的な例です。
おそらく、最初のこのALTAIRのCPUボードを設計した技術者が 将来の使いやすさなどは考えず、その場のアートワークが楽になるよう適当に信号を配置した…そんな風景が目に浮かびます。(笑)
こんな汚い仕様でも 後に IEEE-696という国際規格になってしまうのは悲惨なことだと思います。 また 100ピンもあるので、その後の技術者、開発会社が 勝手な拡張/改変を行って色々な亜種が存在するようです。 ここで表にしたのは初期のオリジナルのS-100バス仕様です。 よって、最終版とは信号名などが異なっていると思います。
③ 逆挿し防止の機構はバス上には無い。
実際のS-100バスのCPUボードを見てみるとわかりますが、エッジコネクタが中央には無く、1番ピン側←に少し寄っています。 これならボードを「誤挿し」する間違えは まず起こりません。
ボード上には i8080とほんのわずかなICが並んでいるだけ… 当初 メモリは たったの256バイト、2MHzのクロックで動いていたらしいので、スピード遅いしメモリは少ないし… で 何ができたのか不思議なくらいです。
この信号表と、下の↓ ALTAIR 8800のパネルを見れば、
どんな信号が使われているか 想像も楽になるでしょう。
Intel 8080が出している信号を そのままバスに出し、メイン・パネルに LEDとトグルスイッチで そのまま点灯、そのまま制御、しているだけ… というのも分かります。
この仕様は、できるだけ真似しない方が良い=反面教師 的な内容と言えます。
ただ、S-100バスそのままで 作ってみるのも面白いかもしれません。
IMSAI 8080 や SOL-20 といったレトロ・マイコンも S-100バスですし、
最近 ALTAIR8800をそっくりに 復刻した Legacy8080 のようなものを
手作りするのも 面白そうです。 簡単に作れそうですし・・・
。