パーソナルなコンピュータの入力装置事情 (第1回: マイコン時代)
久しぶりのこのシリーズ、ハードウェア関連はネタが無くなってきたのでOS・プログラム言語などソフトウェア関連を書こうと準備していたのですが、そういえば入力装置について書いていないことを思い出したので数回にわたって取り上げてみます。
個人で初めてのコンピュータを自作するとしたらスイッチパネルしかないでしょう。
トグルスイッチ(他のスイッチでも構いませんがすばやく簡単に操作できないと後悔するでしょう)がたくさん並んだパネルです。プロセッサを一時的に止めておき、このスイッチでバスに直接アクセスします。スイッチでアドレスとデータを1バイトずつメモリ(RAM)に書き込んでいくのです。
プロセッサの動作中は邪魔をしないように切り離しておきますが、ソフトウェアからスイッチの状態を読めるようにすることもできます。
これは使い勝手はとても悪いのですが、ソフトウェア無しで使えるという他にないメリットがあります。
不明な基板発見
探し物をしていてこんなものも発見してしまいました。
かなり古いものです。
2つの7セグメントLEDは東芝のTLR312、以前は入手しやすい定番のデバイスでした。
下にはデコーダがあります。右側のソケットは抜かれていますが、左に挿さっているのはFairchildのF9368です。これはZ80ボード 1号機(の形見)でも取り上げました。1号機ではデータバスの表示用に2つ使用していましたが、それがこのボードに流れてきていたのかもしれません。
隣には日立のHD14040BPがいます。12ステージのリプルカウンタ、これは74HC4040として74HCシリーズにも取り込まれています。
MSM62X42B
FDCボード(テスト編)の途中ですが、部品探しているときにこんなの発見したので先に取り上げようかと。
沖のMSM62X42B、RTC(Real Time Clock)のICです。
DIPの18ピン、CPUバスに接続するデバイスとしてはピン数が少ないですね。PC-8001やPC-9801シリーズに使われたNECのμPD1990,μPD4990などはシリアル接続ですが、これは普通にパラレルバス(ただし4ビットバス)接続です。10進の1桁ごとのアクセスなのでそれで十分です。
もう一つの特徴は32.768kHzの水晶振動子を内蔵していることです。±10PPM(SOP品は±20PPM)と±50PPMの2ランクありますが、これは「6472Z01A」と末尾「A」なので±10PPMの方です。
マレーシア製。
FDCボード (テスト編 その3)
ちょっと間があいてしまいました。
前回CRCエラーが出ているとはいえ一応セクタが読めるようになりました。データ転送のオーバランも発生していません。
FDCの回路を作るのは今回が初めてですが、8ビット時代に製作記事はよく読んでいました。そこではデータ転送が間に合うかどうかが大きな課題として扱われることが多く、ソフトウェアでステータスを見ながらでは取りこぼすということでいろいろな工夫がありました。
- 他の割り込みを禁止する
- DMA(Direct Memory Access)を利用する。これは速度の余裕ができてからもほかの理由で使われ続けました。
- ステータスをチェックしないでデータ転送する。そのままでは正常に転送できないので、ハードウェアでFDCへのアクセスを引き伸ばす。
それで当初は心配していたのですが、さすがに当時とはCPUの速度が一桁以上上がっているので余裕がありますね。
FDCボード (テスト編 その2)
前回手動でコマンド発行するところまで書きました。
このままでは面倒ですし、何よりデータ転送を伴うコマンドが使えません。
メモリ上にコマンドとパラメータ列を書いておいて自動で送信、リザルトステータスの受信までを行えるようにします。
当初はステータスレジスタを参照しながら送信・受信を自動切換えさせようとしたのですが、なぜか不安定だったのでパラメータやリザルトのバイト数を指定するように変更しています。
これでFDCとのやりとりはできるようになったので、実際にディスクを読んでみることにします。
これがREAD DATAを試してみたところです。
FDCボード (テスト編 その1)
FDCボード (続・ハードウェア編)
50ピンのコネクタに刺さっていたジャンパーピンはREADYをGNDに落とすためのもの、34ピンコネクタに接続していないからです。いずれDSKCHGと切り替えられるようにしたいですね。
裏側、FDDコネクタのところ以外はほとんど一対一の接続なので配線作業は楽でした。
ATmega1284Pのポート割り当ては以下のようになっています。
FDCボード (ハードウェア編)
MC68kボード復活作戦(番外編)などで取り上げた大昔の環境は以前イメージ化してあったものですが、フロッピーディスクのままでイメージ化していないものがまだまだ存在します。読めなくなる前に(既に手遅れかもしれませんが)イメージ化しておきたいものです。
以前はまだPCに5.25インチのドライブが接続してあったのでそれを利用したのですが、今やろうとするといろいろ面倒なことになりそうです。
ということでこんなボードを作ってみました。
PCとはシリアル(USB変換ケーブル)で接続します。
Mass Storage Classを使うべきではという意見もあるかもしれませんが、次のような理由でこの形式を選択しました。
MC146805E2
W65C51と一緒に入手したもの、というよりこちらが本命でした。
MotorolaのMC146805E2Pというマイコンです。頭に「14」が付くのはCMOSだからでしょう、他にもMC/HD146818なんかが同様の命名ですね。