ソフトウェアUART
前々回や前回書いたような厄介な点はありましたが、CDP1802ボードでUniversal Monitorを動かすのは思っていたより簡単でD(ump), G(o), S(et), L(oad)の各コマンドは動作するようになりました。
そうなると今度はSBC1802でも動かしてみたくなります。
ところがこれにはUART相当のハードウェアは無く、CPU内蔵のQ, EF3をシリアルポートとして使うようになっています。UARTの機能をソフトウェアで実現しなくてはなりません。
マイクロプロセッサ・マイクロコントローラ等です。
前々回や前回書いたような厄介な点はありましたが、CDP1802ボードでUniversal Monitorを動かすのは思っていたより簡単でD(ump), G(o), S(et), L(oad)の各コマンドは動作するようになりました。
そうなると今度はSBC1802でも動かしてみたくなります。
ところがこれにはUART相当のハードウェアは無く、CPU内蔵のQ, EF3をシリアルポートとして使うようになっています。UARTの機能をソフトウェアで実現しなくてはなりません。
前回書いたようにCOSMACにはサブルーチン呼び出しの仕組みがありません。
それではどうするかというとSEP
命令を使います。
COSMACはメモリをポイントできるレジスタを16個 R(0)
~R(F)
と、4ビットのレジスタP
を持っています。R(0)
~R(F)
の内P
で選ばれたR(P)
がプログラムカウンタとして使用されます。
SEP
命令でP
に新たな値を設定することでサブルーチンを呼び出し、P
に元の値を設定することで戻ることができます。
CDP1802のハードウェアができたのでいつものようにUniversal Monitorを移植していきます。
以前SC/MP使いの憂鬱で書いたようにSC/MPはかなり癖の強いアーキテクチャでしたが、このCOSMACも負けず劣らずですね。
今日2度目のワクチン接種に行ってきまして、ついでに秋月に寄って不足していた(持ってるはずなんだけど行方不明)パーツを調達してきました。
CDP1802(とCDP1806も)のボード、いつものようにEMILY Boardと組み合わせるボードです。
CDP1802動かすだけならSBC1802でいいのですが、新CPUでいきなりソフトウェアUARTは敷居が高いかなと思って作ってみました。
現在EMILY BoardでCDP1802 / CDP1806を動かすCPUボードを製作中ですが、動くまでまだ時間がかかりそうなのでシリアルクロックの話を少し書いてみようかなと思います。
PCと自作のマイコンを接続する最も簡単な方法の一つが調歩同期シリアルです。
マイコンボードを新たに作る場合、最終的には必要なくてもデバッグ用などにあると重宝するので、まずこれを動かすことが初期の目標になることも多いですね。
でマイコン内蔵にしろ外付けにしろUARTを動かすには(通常通信レート×16の)クロックが必要になります。
専用に発振器を用意してしまうのが簡単で自由度も高いですが、CPUクロックと共通の発振器から供給できれば部品を減らせます。その場合必要とするシリアルクロックの整数倍の発振器が使えればピッタリのクロックが得られますが常にそうできるわけではありません。PLL等を使わない限り整数分の一のクロックしか得られませんから近似値で代用することになります。この誤差はどの程度まで許容できるのか考えてみましょう。
これ届いたときに写真だけ撮って忘れてました。
NSC858、NSC800ファミリのUARTです。1985年製ですね。
NSC800をEMILY Boardで動かすにせよ、変換アダプタでSBCZ80に載せるにせよ、シリアルI/Oは既にあるのでUARTは特に必要ではないのですが、データシートを読んでいるうちに興味が出てきて買ってしまったのでした。
この68070はあまり知名度無いかもしれません。
PhilipsのSCC68070CDA84というものです。1990年製かな。
68070という番号からMC68000の仲間らしいことは想像がつきますが...
68000ファミリは →MC68020→MC68030→MC68040→MC68060で終わりのはずです。しかも84ピンということからもMC68060の後継なはずがありません。
実はこれ、68000を中心に周辺デバイスを集積したものです。
もうちょっと誤解を招かないナンバリングできなかったのでしょうかね。
8755を焼けるようになったので続いてMCS8085を動かします。
MCS8085もやはり 電脳伝説@vintagechips さん作のボードです。
8085+8755+8156の3チップ構成でグルーロジックなどは一切ありません。40ピンのDIPが3つだけというシンプルな美しさがありますね。
これだけで以下の機能を含んでいます。
何度か書いていますが、デバイス購入時に複数のパッケージが選べる場合は原則としてユニバーサル基板で使いやすいかを基準にしています。そういう意味でシュリンクDIPは避けているのですが...
Z80180-Z80 ADAPTER for SBCZ80は前に組んだPLCC版だけではなくシュリンクDIP用のものもあります。専用基板があるなら避ける理由は無いので買ってみました。
HD64180ZP8、Z80ペリフェラルとの接続を考慮した「Zバージョン」のシュリンクDIP版です。
PLCC版と基本的には同じものなのですが、ピン数(PLCCは68ピン・DIPは64ピン)の関係でアドレス空間は1MBではなく512kBになっています。
早速アダプタを組んでみます。