8031/8032ボード(ハードウェア編)
カテゴリー:
またEMILY Board使って新たなプロセッサが動くようになりました。
今回作ったのはIntelのMCS-51ファミリの8031/8032用のボードです。
このファミリはEA/Vppで内蔵ROMを切り離せるので8058とか8751なども使えると思いますが、8031/8032の入手性は悪くないのでわざわざROM内蔵品を使うことも無いでしょう。
マイクロプロセッサ・マイクロコントローラ等です。
またEMILY Board使って新たなプロセッサが動くようになりました。
今回作ったのはIntelのMCS-51ファミリの8031/8032用のボードです。
このファミリはEA/Vppで内蔵ROMを切り離せるので8058とか8751なども使えると思いますが、8031/8032の入手性は悪くないのでわざわざROM内蔵品を使うことも無いでしょう。
Universal MonitorのZ80版にR(egister)コマンド実装していてRレジスタの挙動について誤解していたことがわかりました。そこで今回はZ80のRレジスタについて書いてみることにします。
今さら役に立つ機会なんて無いでしょうけどね。
これまでのRレジスタについての理解はざっとこんなところでした。
LD A,R
, LD R,A
命令で値の出し入れができるはっきり言ってあまり使い道はありません。ゲームなどの簡易乱数発生器として使うか、プロテクトのチェッカルーチンで解析妨害のために使うくらいしか思いつきません。あとは同じ値を代入し続けてソフト的にリフレッシュ動作を不全にするくらいでしょうか。
普通なら無かったことにしても構わないレジスタなのですが...
前にOTP品のTMP90P802APを内蔵ROMを切り離して外部メモリで実行できました。ならマスクROM品でもいけるだろうとこれ買ってみました。数ヶ月前ですが...
東芝のTMP90C840N-1351、1989年の日本製のようです。
DIPなのは良いのですが、64ピンのシュリンクDIPですのでユニバーサル基板で扱うにはちと難がありますね。サンハヤトからシュリンクDIPの周りに2.54mmのユニバーサルパターンの配置されたのがあるのでそれを使うつもりです。EMILY Board使うからそれで十分収まるでしょう。
8088ボードのソフトウェアについて書いてみます。
動かすのはいつものようにUniversal Monitorです。
8086系は8080に似ていますし、以前(30年ほど前です)書いていたこともあるので、あまり苦もなく書けますね。フラグ変化とか細部はもちろん憶えてはいないので資料確認しながらですし、アセンブルすると使えないレジスタ指定しててエラーになったりはありますが、書いているうちにすぐに慣れていきます。
まずはコンソールドライバ、EMILY Board用のものを6502から、8251用のものを8080から移植しました。ほぼ機械的な変換で済みますが8251の初期化部分にはNOP
を追加(8251はまだ配線もしていないので動作未確認)しています。
これも何かのついでに買ったまま忘れていました。
IntelのD8087-1、数値演算コプロセッサです。-1と付くので10MHz品ですね。
これ今でこそ何かのついでに買えますが、現役当時はとても気軽に買えるシロモノではありませんでした。ちょうど手元にあった1983年のトランジスタ技術の広告によると、8086(5MHz)が約5,000円なのに対して8087は約100,000円の値がついていました。
8086/8088搭載のパソコンには8087用のソケットが用意されていることも多く、一パソコンユーザが買ってきて挿すこともあるデバイスで、パソコンメーカからも「純正品」として供給されていました。
HD1-6120ボードはちょっと置いておいて、また新たなCPUボード作ってみました。
今回もEMILY Board用です。
EMILY Boardは外付けパラレルROMで動かせる知っている限りのプロセッサを動かせるようにと計画したものなので、よほど変態的なプロセッサでない限り工夫すれば繋がるはずです。今回の8088は素直な部類ですね。
TMS9902と一緒に入手したものです。
Texas InstrumentsのTMS9900NL、以前取り上げたTMS9900JDLのプラスチックパッケージ版です。
デートコードらしき数字が「8323」と「9035」と2通り記載されていますがどちらでしょう?
フィリピン製です。
キズが多くて中古っぽいですが、妙に綺麗なものよりリマーク品の可能性低そうでかえって安心かもしれません。
EMILY Boardの12/16ビットワード対応を始めたのですが、意外に大規模な変更になってしまってだいぶ時間がかかりそうです。
ということで今回は最近入手したデバイスを取り上げようと思います。
Texas InstrumentsのTMS9902ANL、ACC(Asynchronous Communication Controller)と呼ばれるものです。いわゆるUARTですね。
この手のデバイスで18ピンというのは少ないですが、これはパラレルバスではなくCRU(Communication Register Unit)というシリアル通信でCPUと接続するためです。それでも10本ほどの線が必要ですが...
予告どおりソフトウェア編です。これまでの「ソフトウェア編」ではモニタ程度のものが動いていることが多かったと思いますが、今回はプログラムの実行ができているらしいとわかる程度です。
最も簡単なテストプログラムは実行開始番地で無限ループさせるものでしょう。
HD1-6120(IM6100も)は0FFFH番地から実行を始めますので、ここに0FFFH番地へのJMP
命令を置きます。これを実行させておいてアドレスバスの状態を観察するとA0~A11までがすべて"H"になっていて0FFFH番地を読み続けていることがわかります。
次に異なるアドレスでループさせてみます。
HD1-6120でダイレクトにJMP
できる先は、同ページ(アドレスの上位5ビットが同じ)か0ページ(アドレスの上位5ビットがすべて0)だけです。それ以外へ飛びたいときは同ページか0ページにアドレスを書いておいて間接アドレッシングを使います。ここでは簡単に0ページで試してみます。