SC/MPボード(ハードウェア編)
6502ボードとTLCS-90ボードがあっさり動作したので、調子に乗って3枚目を作ってみました。
これがそれ、SC/MPボードです。正確にはSC/MP(ISP-8A/500)ではなくSC/MP II(INS8060N)ですが、ソフトウェア的には両者は一緒です。
上の方に写っているのはEMILY Board、16ビット対応用のコネクタが追加されています(配線はまだ途中です)。
個人的に製作してきたものの紹介です。
電子的なものがほとんどですが、そうでないものも出来るだけ出していきたいと思っています。
回路図、ソースコードなどは出来ればすべて載せたいのですが、以下の理由で難しいものが多いです。
残っていないのではなく、そもそも書かないことが多かったためです。
もちろん仕事ならば書きますが。
特に古いものでは雑誌など掲載のものをベースにしているものがあり、オリジナルと分離できないものは公開できません。
5インチや8インチのフロッピーだったり、PC-9801フォーマットだったりして読むのが難しいものがあります。
6502ボードとTLCS-90ボードがあっさり動作したので、調子に乗って3枚目を作ってみました。
これがそれ、SC/MPボードです。正確にはSC/MP(ISP-8A/500)ではなくSC/MP II(INS8060N)ですが、ソフトウェア的には両者は一緒です。
上の方に写っているのはEMILY Board、16ビット対応用のコネクタが追加されています(配線はまだ途中です)。
EMILY Boardで動かした2番目のCPUは東芝 TLCS-90の一員TMP90P802APです。
TMP90P802APを動作させるために新たに作ったのはこの基板だけです。
基板上の部品はほんのわずかです。見えているものの他、CPUソケットの内側にパスコンと若干のプルアップ抵抗があります。
CPUのTMP90P802APの左にあるのはTTL-232R-5V用のシリアルコネクタ、内蔵UARTに接続されています。
メモリ基板、確かにメモリではあるのですがそれだけでもないので「EMILY Board」と名付けました。
Environment for Microprocessor Introduction ... の略というのはもちろん後からのこじつけで、二式大型飛行艇の連合国側コードネームからの命名です。
これだけではなんなのでこれまで書かなかった資料編をお送りします。
まずは基板上部のCPUボードへのコネクタです。
ハードウェア編に続いて今回はソフトウェア編です。
最初のテストはJMP
でループを作ってみます。これは3バイト命令なのできりの良いアドレスに配置すればA0, A1が変化しA2以降のアドレスは変化しません。
これでメモリ基板から読んで実行できていることがわかります。メモリ基板のターゲット側ポートはこれまで未確認だったのですが、ここで確認が取れました。
この後はメモリへの書き込みなど一つずつ確認していくのが堅実だとは思いますが、一気にUniversal Monitorの移植に進むことにしました。
実はこの時点ではR65C51 ACIAは未搭載だったのでメモリ基板のコンソール機能を利用します。この機能も未確認なのでまずはオープニングメッセージを表示するところまで移植してみます。
6502のアセンブリ言語を書くのは初めてです。
メモリ基板: 現状と今後の予定で製作中と書いた6502ボードが動き出しました。今回はハードウェア編です。
メモリボードに接続することを前提にしているので6502以外には6551 ACIAを積んでいるだけです。
メモリボードの共有メモリ経由でコンソールが使えればACIAは無くても困らないのですが、6551を使ってみたいという気持ちもあって搭載してみました。
表側、上のコネクタはメモリボードへの接続用です。
今回はメモリ基板の現状と今後の予定を書いてみます。
まずは今動いているところです。
ターゲットCPU基板がまだ1枚も完成していないのでターゲット側からのアクセスは未確認ですが、ただ接続するだけなのであまり心配はしていません。
ROMエミュレータではアクセス中はターゲットからのアクセス不能になり暴走するのでアクセス中"L"になる信号を用意していましたが、せっかくDPSRAMを使っていることでもありRAMアクセスとは独立させています。
前回に引き続きメモリ基板についてです。今回はDPSRAM構成になった理由を書いてみたいと思います。
これまでに検討した方式には次のようなものがあります。
起動させるだけならこれでも構いませんが、何らかのモニタを動作させようとすると最低限コンソールが必要です。
作りかけで何度も中断し放置してきたメモリ基板がやっと動き出しました。
これ構想しはじめたのは何年も前、製作に着手してからでも半年近く経過しています。一気にやれば大して配線量はないんですけどね。
ここでも紹介しているように歴史的なプロセッサを多数持っていますし、珍しいのを見かけて買ってしまうことも多くどんどん増えています。できれば単なるコレクションではなく動かしたいと思っているのですが...
今時のマイコンは高速なので、周辺回路(最低限メモリとUARTなど)をエミュレーションさせる方法もあります。AVRマイコンなどのGPIOをターゲットのバスに直結してあとはソフトウェアで処理するわけです。これはこれで面白いとは思いますが、個人的にはちょっと違う気がします。
TTLをディスクリートで作ってみた・続・TTLをディスクリートで作ってみたではとりあえず電圧を測っておけばと思っていましたが...
結局、電流を測れるようにジャンパをに追加しました。必要に応じてジャンパを抜いて電流計を挿入します。
これでいくつかの場合について動作を追ってみました。
以下の回路図で青地で書かれているのは実測値、赤字で書かれているのは計算値です。数字が単独で書かれているのは電圧(V)、矢印とともに書かれているのは電流(mA)です。入出力の「1k」はもちろん抵抗値1kΩです。
電流の和が0にならない点が多々ありますが、電圧・電流は同時に測ったものではなく使用したテスタの内部抵抗で動作点が若干動いているようです。
前回「あとは1A, 1Bをともにプルダウンしたときの影響と、負荷を変化させたときの変化を見たいですね。」と書いた件、早速試してみました。
まずはANDの入力からです。
1Aをギリギリ"1"となる3.3kΩのプルダウンに固定し、1Bをプルアップ / プルダウンに切り替えてみます。
最初は本物のSN7450Jの場合、1C, 1DはGNDです。