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が点灯します。

コメント

  1. vintagechips より:

    6821は有名なICであるにもかかわらずちゃんと動かした実例が少ないので、とても面白く読ませていただきました。ところで、細かいところにツッコミを入れてたいへん恐縮ですが、「外付け32kB RAMへの配線は」のあとSBC6303データパックじゃなくてSBC6303技術資料が正解ですね。職業がら、つい見付けちゃうんですよ、すみませんね。

    • kuninet より:

      コメントありがとうございます。
      たしかに! 配線図は技術資料でした。訂正します。^^)>

      6821の動かし方は大昔の書籍「マイコンの作り方」に2ページほど出ていたのと、英文のデータシートぐらいしか手元に資料がなくて、国会図書館で昔の雑誌記事を取り寄せたりしてました。
      (雑誌記事もデータシート以上の情報はなかったのですが…)

  2. […] 以前、SBC6303ルーズキットの拡張コネクタから線を延ばしてブレッドボードでパラレルI/O(PIA-MC68B21P)の稼働を確認しました。 […]