| ホーム |     私の電子工作作品集

x05. 8080A CPU コンピュータシステム

[ 初公開日:2016年5月1日 ]

このコンピュータシステムは今から三十数年ほども以前の、私がまだずいぶんと若かったころの 大昔に作製をしたものです。

数年前に押入れの整理をしていたときに奥の方から出てきました。 見た目にはひどい汚れなどもなく保存状態は良い方だと思います。

私にとっては特別な思い入れのあるもので、若かったころの情熱をこの一点に最も注ぎ込んできた、といっても過言ではありません。

CS00_8080aCpuSystem_01.jpg (拡大)

CQ出版社発行の 「マイクロコンピュータの本格的応用」 と言う本を教科書にして、自分なりのシステムを設計、製作をしたものです。

システムが完成するまでの間に、何度も何度も繰り返し読み返したため、その本がボロボロになってしまったことは記憶にも残っていますが、 どういうわけか、肝心の中身本体はどこかへ紛失して無くなってしまい、残念なことに今では表(おもて)表紙1枚だけしか手元には残っていません。

この頃、個人的に利用できるようなワープロやCADというものは、まったく存在しなかった時代ですからすべてが私の手書きですが、 当時作成した回路図やメモ書きなどの資料は今でも残っています。 しかし、大切な教科書の中身は一体どこに消えてしまったのでしょうか。

CS00_8080aCpuSystem_02.jpg

システムのハードウエアの特徴として、CPU、メモリ IC、その他の一部の専用ICを除いては、周辺のロジックのすべてをスタンダード TTL ICで構成をしています。 このあたりからも時代を感じさせますが、TTL ICの使用量が多いためその使用電力も相当なものです。

また、ロジック ICを組み込むための基板については、まとまった回路ごとに分けて複数の基板に分割したラック形式を採ったため、 ラックに取り付けた複数のコネクタ間の配線で全体をまとめています。 上の写真からもそれらが想像されるのではないでしょうか。

それにしてもこのシステム、完成するまでにかなりの年月を要したことを覚えています。 時にはあるインターフェイスで悩んでしまい、 解決できるまでの間、約1年近くも放置していたこともありました。 その分、やがて火入れ式を迎えた時には、感慨もひとしおでした。

もちろん、火は入れたものの一発でまともに動くわけもなく、それからはハードバグを一つずつ潰していくのが日課となりました。 それでも、それまでにかかった期間に比べれば、そんなことはほんの一瞬で、十数日でほとんどのハードバグはなくなったと思います。


01: CPU (8080A) 基板
02: Indicator 基板
03: Start / Stop Controller 基板
04: Deposit / Examine Controller (1) 基板
05: Deposit / Examine Controller (2)
    Pause / Start Address Controller 基板
06: DMA Controller 基板
07, 08: Data / Address Bus Buffer 基板
09: Control Bus Buffer 基板
10: Interrupt / Flag Controller 基板
11: 16 / 32 Character Display (1) 基板
12: 16 / 32 Character Display (2) 基板
13: 16 / 32 Character Display (3)
    Keyboard Controller 基板
14: 16 Kbyte Rom ( 0000 〜 3FFF ) 基板
15: 2 Kbyte Ram (1) ( 4000 〜 47FF ) 基板
16: 2 Kbyte Ram (2) ( 4800 〜 4FFF ) 基板
17: 2 Kbyte Ram (3) ( 5000 〜 57FF ) 基板
18: 2 Kbyte Ram (4) ( 5800 〜 5FFF ) 基板
19: 8 Kbyte Ram (1) ( 6000 〜 7FFF ) 基板
20: 8 Kbyte Ram (2) ( 8000 〜 9FFF ) 基板
21: 8 Kbyte Ram (3) ( A000 〜 BFFF ) 基板
シャーシケース・筐体
電源について

モニタプログラム
セルフアセンブラ
システムライブラリ
  以下は関連ページ
x06. 2716 専用 手書き EP-ROM ライター
x07. タイマー付き EP-ROM イレーサー
x08. EP-ROM ライター(システムから制御)

(注) 上記のメニュー項目中、リンクが張られていない項目については、ページを順次製作中のためしばらくお待ちください。


上の写真を見て気付かれた方もいると思いますが、このシステムにはキーボードが無いではないか。(実はただ写真に写っていないだけ)

このハードウエアだけが(ほぼ)完成した時点では、例えキーボードがあったとしても、その情報を取り込むことはできません。 なぜなら、 取り込むためのプログラムがまだシステム側に用意がされていないからです。 それではプログラムをどのようにして入力すれば良いのか。

上の写真 をもう一度見てください。フロントパネルには、LEDとスイッチがずらりと並んでいますが、これらのスイッチの操作で入力をします。

上段左枠内にある 16 個の ADDRESSスイッチで書き込むメモリアドレスを指定し、右枠内の 8 個の DATAスイッチでデータを指定して次に、 下段左枠内の右端にある DEPOSITスイッチを操作することで、指定したアドレスに指定したデータ内容を書き込むことができます。

このように、8 個の DATAスイッチ = 8 ビット = 1 バイトずつ、指定したアドレスに マシン(機械)語プログラムを書き込んで行くのです。 実に地道な作業ですが、システム側に何のプログラムも用意がされていない初期の状態では、他にはまったく方法がありません。

やがて、一連のマシン語プログラムを書き込んだ後、下段左枠内の左から2番目の STARTスイッチを操作することで、プログラムを RUN させることができます。 また、下段左枠内には他にも、RUN しているプログラムを一時的に止めたり、一連のプログラムを一命令ごとに 実行させたり、指定したメモリアドレスのデータ内容を読み出したりと、いろいろな動作をさせるための 操作スイッチ (拡大) が並んでいます。

・・・・・

ハードウエアがある程度完成すると、次は当然ソフトウエアの開発になります。 これ以降、ソフトウエアにどんどんのめり込んでいきました。

この頃の私にとってのソフトウエアの教科書は、インテルジャパン社発行の 「8080 アセンブリ言語 プログラミング マニュアル」 でした。

CS00_8080aCpuSystem_04.jpg CS00_8080aCpuSystem_05.jpg

まず、本機のハードウエアに合わせたモニタプログラムを作成しなければなりません。 モニタプログラムとは、前述の例のように キーボードからの1文字の入力情報を取り込んだりする、最も基本的な動作をさせるプログラムとか、あるまとまった動作をさせるための コマンドを受け付け、それを解釈してそれらに見合った各種の動作をさせたりする、基本中の基本プログラム群の集まりを言います。

これらのプログラムをまずアセンブリ言語で作成し、これをメモリ内に格納するためのマシン(機械)語に翻訳しなければなりませんが、 この翻訳という作業を、一般的には人間(自分自身)が行わなければなりません。 これをハンドアセンブルと言っていましたが、 数十行のプログラムであれば何とかなりますが、モニタプログラム全体では数千行にも及びますから、ほとんど無理といっても良いでしょう。

プログラムというものは、人間が考えたものですから、当然ながら間違い(バグ)が付きものです。 その度に再度ハンドアセンブルを しなければならないのですが、プログラムが大きくなってくるとその労力も大変なものとなり、それを考えただけでもメゲてしまいます。

アセンブリ言語で書いたプログラムの場合(一般的に横書き)、通常のプログラムの流れは、並んでいる命令を上から下へと進んで 1命令ずつ次々に実行して行きますが、中にはジャンプ命令というものがあって、条件によって自由にプログラムの流れを変更します。

すなわち、現在位置の命令よりも上(元)の方の命令に再度戻って、既に実行の済んだ命令を繰り返したり、または、次の位置の命令 を飛び越えて、より下(先)の方の命令に飛んで行ったりもするのです。 ジャンプ命令の飛び先の指定次第で、どこにでも移動をします。

プログラムのバグを修正することによって、修正前に比べて命令の種類が変更されたり、使用する命令数の増減が起こったりします。 そして 8080A CPUの場合、命令の長さが 1バイト、2バイト、3バイトの3種類があって、個々の命令の種類によって決まっています。

ですから、プログラムのバグを修正すると、例えジャンプ先の命令が同じであっても、ジャンプ命令とその飛び先の命令との、 間の占めるメモリの量が変更することが起こり得るわけで、したがって、プログラム全体の再アセンブル(翻訳)をすることが必要となります。

・・・・・

ところが、おかげさまで私の場合には、このモニタプログラム等を作成していた頃、幸運なことにハンドアセンブルをしなくても良いような 職場環境に所属していたこともあって、私個人の趣味のこのシステムですが、その環境を大いに利用させていただきました。

その結果、上述したように基本動作をさせるためのモニタプログラムの開発、職場環境にあったシステムライブラリの一部の移植、 アブソリュートですが本システムのためのセルフアセンブラの開発、そして、ROMの読み書きの機能も備えることができました。

・・・・・

このシステムの製作とは直接関係ない話ですが、この頃の時期的な背景としては、1981年に NEC から初代機 PC-8801が発売され、 それまでアセンブラ一辺倒な私でしたが、ベーシックにも手を出したくて、私にとって初めてのパソコンとして購入することになりました。

ちなみに、前述のハードウエアの教科書本ですが、比較的最近の数年前に Yahoo!オークションで、一度は新たに入手したのですが、 その後の引っ越しで、どさくさに紛れて再び紛失してしまいました。 大変お世話になったのに、よくよく私には縁が薄いのかもしれません。


( 2016/5/16 追記 )

このページを公開してから二週間ほどになりますが、"本システムを再び稼働できるようにしてみたい" という欲求が日に日に高まってきました。 初めは過去の製作物の紹介だけのつもりでいたのですが、やはり動作をさせてみないと確認が取れない、という部分もたくさんあって、 また、8080A でのプログラムを久しぶりに作ってみたいとも思い、そのような気持ちに変わってきました。

しかし、実際にはそう簡単には実現させることは難しく、解決しなければならない問題点がいくつもあります。 三十数年も経た現在、 たくさんの使用されている ICたちは変わりなく無事でいてくれただろうか。 1枚1枚ごとのプリント基板はすべてコネクタによって 接続をされていますが、今でもそれらは接触不良等を起こさずに動作をしてくれるだろうか。

現在一番問題なのは、このシステムのための電源が存在しないことです。 実は、本システムではリアパネルに電源( +5V, +12V, -5V )用の コネクタを取り付け、外部から供給するようになっています。 もちろん当時は、このための電源も作製して使用をしていました。

当時は、スイッチング電源はかなり高価なもので、アマチュアの私にとってはまさに高嶺の花でした。 そこで、かなり重い電源トランス (大きな電流容量が必要なため)を用いて、シリーズ方式の電源装置を作製したのです。

ところが、3年前の引っ越しのときにもこの電源装置を見た記憶がないのです。 どこに消えてしまったのでしょう。 本システムそのものは とても捨てるようなことはできませんが、重い電源装置は捨ててしまったのかもしれません。 私は過去に6度(行って戻ってを3回)の 引っ越しを経験していますが、そのいずれかのときにでも処分をしてしまったものと思われます。

また、本システムに関しての資料は、前述の通り今でもほとんどが残っているのですが、問題のこの電源装置に関しては、まったくの皆無で 何一つ残っていません。 回路図の1枚ぐらい残っていてもよさそうなものですが、ありません。 したがって電源に関しては再考を要します。

今、このページにおける小さな夢があります。 いつの日にか(といってもそんなに遠くない日の内に)本システムを稼働させて、 フロントパネルのたくさんのLEDたちがチカチカと元気よく点滅している様子を写真に撮り、このページの花として添えたいと思っています。

| ページトップ | メニュー項目 | ホーム |


Copyright (C) 2006-2023 やまもとみのる
初版:2006年12月7日、初公開:2016年5月1日、最終更新:2023年11月6日