16ビットマイコンボードの製作
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
いつか使ってみるつもりで入手してそのまま置いてあった16ビットCPUのことを思い出しました。
AMD社のAM188です。
その名の通り、CPUコアは80188互換の16ビットCPUです。
そのAM188を使った16ビットマイコンボードの製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第1回]
●プロローグ
この長い年月、8080から始まってZ80からKL5C80A12に至るまで、ずっと80系の8ビットCPU一筋でやってきたのですけれど。
世の中の流れを全然見ていなかったわけではありません。
いつかは16ビットのCPUもさわってみようと思いつつ、なかなかその思いも果たせずに今日まできてしまいました。
それがこのところ書いておりますように、ND80Z3.5の上位マイコンボードとして、KL5C80A12を使ったND80Kの改良型を出そうと思い立って、その仕様についてあれこれ検討を重ねている最中のことだったのですが。
あらためてKL5C80A12の100pinフラットパッケージを眺めていましたら、ふと
「そういえばずっと以前にこれと同じぐらいのサイズの16ビットCPUを入手したはずだったが、あれはどうしたんだっけ」
なんて、突然に脈絡もないことを思い出してしまいました。
まだ今日のようにインターネットを使って海外からICを直接購入するなどということが簡単にできる時代ではありませんでしたので、当時懇意にしていただいておりました当地の大学の先生のご紹介で、海外からICを直接購入しているというお知り合いの先生にお願いして、「代行輸入」していただいたものです。
捜してみましたら、封こそ切ってありましたが中身は全く手付かずでそのまま残っておりました。
そうそう。
うっすらとですけれど、思い出してきました。
「いずれそのうち16ビットのBASIC制御ボードを出そう」
ということでサンプル的に入手してみたものだったと思います。
当時かなり高額なCPUだったと思いますが、そうやってせっかく入手したものでしたのに、結局手をつけることもできずにそのままになってしまっておりました。
右上の1個分が空いていますが、今回の企画のために試作に使用したためです。
AMDのAM188EMです。
パッケージのサイズ、端子間隔を確認してみましたら。
なんと。
KL5C80A12とピッタリ一致するではありませんか。
もちろん同じ100pinと言っても端子の役割は全く違いますから、KL5C80A12とは別のCPU基板を作らなければなりませんけれど。
のちほど詳しく説明しますが。
そもAM188とは一体なにものぞ?
オリジナルはINTELの80188ですが、これはAMD製の80188互換チップです。
然らばその80188とはなにものぞ、ということなのですが。
コアに16ビットの8088上位互換CPUを使って、それにクロックオシレータ、MMU、タイマーカウンタ、シリアルインターフェース、パラレルインターフェースなどをあわせて1チップに集積した組込制御用のLSIです。
188とありますが抜本的に8088を強化したものではなく、8088に若干の命令機能を追加した程度のもので、まあ8088と同等のものと考えてよいかと思います。
AM188はINTELの80188互換ということですが、セカンドソースではなくて、INTELの80188の機能強化版としてAMDが独自に設計したもののようです(あるいはセカンドソース契約を結んだ上でAMDが独自の機能を追加したものか?)。
皆様ご存知かと思いますが、8088はソフトウェアから見れば8086と全く同じ16ビットCPUです。
ハード面から見て、設計の容易さとコスト削減のために、データバス幅を8086の16本から8080、Z80と同じ8本にしたのが8088です。
8086はINTELが8080の16ビット版として開発したCPUで、もしも8086が生まれていなかったら、今日のINTEL王国もMicrosoft帝国も、もちろんWindowsパソコンもこの世に存在しなかったでありましょう。
かくのごとく、名実ともにまさに記念すべきCPUです。
重ねて書きますが、80188はその8086の8ビットデータバス版でありますところの8088上位互換CPUをコアにして、その周辺にクロックオシレータなどを集積した、KL5C80A12と同じタイプのコントローラLSIで、しかもKL5C80A12と同じ100pinのフラットパーケージです。
おお。
そういうことならば。
うまく考えれば。
CPU基板を差し換えてプログラムROMを交換するだけで、新ND80Kボードがそのまま16ビットマイコンボードになってしまうではありませんか!
言うなれば、8ビットマイコンと16ビットマイコンの共通のプラットホームを作ることになります。
なんでしょうか、ねえ。
またしても、悪魔のささやきでありました。
8ビットCPUと16ビットCPUを交換して、同じプラットホーム基板の上で動作させよう、なんてとんでもないことを思いついてしまったのであります。
幸い入手しておりましたAM188は内部CPUコアは16ビットですが外部データバス幅は8ビットの「8088」型ですから、アドレスバス、データバスはKL5C80A12と同じ仕様でいけます。
またどちらももとは8080から発展した「80系CPU」ですから、制御信号等についても極端に異なるわけではありません。
それはそうですけれど。
過去のソフトウェア資産を有効に活用して、新ND80K組立キットを最短でこさえてしまおうなどともくろんでおりましたのに。
今まで全く手がけたことのない、16ビットCPUのマイコンボード組立キットを並行して作り上げようなんて。
作業量はおそらく当初見込みの数倍になりますでしょう。
これが悪魔のささやきでなくて、何でありましょうか。
ひとつ確実に言えることは。
これで私の正月は完全にぶっとんでしまった、ということであります(ま、例年のことでありますけれど)。
それにしましても。
そもそも。
16ビットCPUに7セグメントLEDはいかがなものか。
うーん。
そこのところも考えてみたのですよね。
でも。
よいではありませんか。
なんたって、トレーニングボードです。
確かに今でもWindows上のDOSプロンプトで、8086のマシン語プログラムを実行させることはできます。
しかし、これっぽっちもハードウェアを直接制御することなどできません。
ええ。
これっぽっちも、です。
それが、このボードならできてしまうのです。
おお。
TK−80と同じようにシングルステップ動作もできるようにしようではありませんか。
そうそう。
それなら、できるだけTK−80と同じ動作になるように、8086のマシン語プログラムで「TK−80モニタプログラム」を作ったら、8086プログラミングのよいサンプルになるじゃありませんか。
あー。
待て待て。
それならいっそのこと、ND80Z3.5、ND8080用の応用プログラム集と同じ内容のプログラムの16ビット版を作ったら、それこそもっともっとよいサンプルプログラム集になるではありませんか。
8080と8086とではマシン語コードは全く異なりますから、さすがにCP/Mを走らせることはできませんが…。
.............................................................!?
おお!
いかん!
どんどん、危ない方向に引きずられていってしまう(ああ、悪魔よ!)。
だめだ!
もう、それ以上考えるな。
CP/M?
DOSプロンプト?
ああ(いかん、とうとう思いついてしまった)。
CP/Mではなくて。
16ビットならば、MSDOS互換ではないか。
(もうー。しんでしまいそぉー)
うーん。
完全互換なんてことに首をつっこみますと、それこそ命取りになってしまいますから、そこまで考えたりはしませんけれど。
そこそこ互換ということでしたなら。
あれば何かと重宝するではありませんか。
そういうことでしたら。
この16ビットマイコンボードも「マイコン独立大作戦」に参画させれば。
おおお。
長年のWindowsの呪縛から抜け出せるかも。
CP/M互換DOSはおよそ1年をかけて作り上げました。
そのくらいの時間をかければ、おそらくMSDOSそこそこ互換DOS(またはMSDOSちょっぴり互換DOS)ぐらいなら実現可能かも。
そういうことで、その実現には時間がかかりますから、今のところは、それは将来の課題といたしまして。
何はさておき、まずは、「TK−80ライクな」16ビットマイコン組立キットを離陸させましょう!
(わー!来年は、もお、例年にまして、思いっきりめっちゃんこなトシになってしまいそぉぉ!)
16ビットマイコンボードの製作[第1回]
2016.12.29upload
次へ
ホームページトップへ戻る