SBC6303にPIA(MC68B21P)を接続
オレンジピコで68系のパラレルI/O LSIのPIA(MC68B21P)が売られていたので思わずゲットしてしまいました。
Z80でPPI(8255A)でLチカできたので、SBC6303でもLチカしてみたい。
SBC6303は外部バスに8ポートのI/Oポートが出てますが….そこは「やってみたい」ということで…
今後以前作った MC6800べースの SBC6800のパラレルI/Oボードを作成する布石という意味もありまして…
まずはブレッドボードに実験環境を…
SBC6303ボードを作成した際、拡張RAMボードをユニバーサル基板に組みました。
PIA(MC68B21P)も拡張RAMボードに搭載すれば良いのですが、ちょっと自信がなかったのでまずはブレッドボードで実験環境を作ってみます。
せっかくユニバーサル基板で拡張RAMボードを作ったのに、またブレッドボード上にSRAM 62256(32kB)を載せて動かしてみました。なんかリード線がニョロニョロ出てますけど動きました。
ちなみに外付け32kB RAMへの配線は SBC6303データパック SBC6303技術資料 とまったく一緒です。
PIA(MC68B21P)をブレッドボードへ搭載
SRAMを搭載したブレッドボードへ、PIA(MC68B21P)を搭載します。回路図はこんな感じです。
LEDをBポート側に8個装着してLチカしてみたいと思います。
- CS2はSBC6303基板本体の74HC138からジャンパ線で持ってくれば簡単でしたが、基板に手を加えたくないので別ICで外付けしました。
- PIA(MC68B21P)の各種制御ピンの信号もSBC6303の外部バスにすべて出ていますので直結すればOKです。
- LEDの電流制限抵抗は適当に….
すべて接続した状態はこんな感じです。ちょっとジャングル状態。
Lチカ用 アセンブラプログラム
Lチカ用にアセンブラでLILBUGで動くプログラムを作りました。
作ったといっても、初期設定はPIA(6821)の使い方参考書の丸写しで、LチカのウェイトのあたりはSBC6303データパックのBLINK.ASMを参考にさせていただきました。(貰い物だらけですが…)
- ソースはgistに上げてあります。
- PIAの初期化でAポートのデータ方向レジスタは入力に設定してますが、今回は何もつないでません。(DIP SWとかつけると楽しそう)
- LEDはBポート側へ8個つないでますのでデータ方向レジスタは出力に設定しています。
- 一つおきに点灯/消灯させるため出力データは$AAとビット反転した$55を出力しています。
ソースコメントにも書いてますが、アークピットのクロスアセンブラでアセンブリできます。
書式はたしかこんな感じで、モトローラS形式のオブジェクトがテキストで生成されます。
> X6801.EXE LEDON.ASM,LEDON.S,LEDON.LST;
LILBUGへ流し込んでLチカ!
アセンブルできたら、SBC6303のLILBUGを起動してLコマンドでモトローラS形式のオブジェクトを流し込んだ後、Gコマンドで$0100から動かすとLチカしました。
成功です!!
ちなみにZ80+8255Aのときといっしょで、PIA(MC68B21P)のポートが”L”レベルのLEDが点灯します。
Z80にFM音源接続がうまくいってないので….別の案件にトライしてみました。SBC6303にオレンジピコさんで買ったMC68B21PをつなげてLチカできました。 pic.twitter.com/EPXPd46CtS — KUNI-NET元シソペ (@kuninet) June 4, 2018



