工作
個人的に製作してきたものの紹介です。
電子的なものがほとんどですが、そうでないものも出来るだけ出していきたいと思っています。
回路図、ソースコードなどは出来ればすべて載せたいのですが、以下の理由で難しいものが多いです。
- 回路図については無いものが多い
- どうせ1台しか作らないのだから紙に線を引くのと、実際に配線する手間は大して違わない。
- バス配線などは書かなくてもわかる(各デバイスのD0同士を接続するなど)。ずらすなど注意を要するところだけメモがあれば困らない。
- 雑誌などの記事・データシート・アプリケーションノート等を参考にしたところはそれを見ながら配線すればよい。
- 著作権的に公開でない
- 古いメディアに入っている
- 本当に失われた
残っていないのではなく、そもそも書かないことが多かったためです。
もちろん仕事ならば書きますが。
特に古いものでは雑誌など掲載のものをベースにしているものがあり、オリジナルと分離できないものは公開できません。
5インチや8インチのフロッピーだったり、PC-9801フォーマットだったりして読むのが難しいものがあります。
Universal Monitor Z8
先日のROMエミュレータを2732には去年作ったZ8613ボードにモニタを移植するのが目的でした。

とりあえず基本的な機能が動くようになりましたので、試しているスクリーンショットを載せておきます。
まずは0FFF8H~0FFFFH,0000H~0077Hまでのメモリダンプ、次のHコマンドでCが表示されているのでこれはプログラム(コード)メモリ空間です。
次にHRコマンドでレジスタファイル空間に切り替えてから内容を書き換えて確認したところです。上とアドレスが一部重なっていますが、内容がまったく違っていることがわかると思います。
現時点で実装されているコマンドは以下です。
ROMエミュレータを2732に
ROMエミュレータを2732として使いたくなったので...
当初は簡単に済ますつもりでした。28ピン⇒26ピンにダイオード入れるだけならソケットに挿す部分に取り付けられます。
ただそれだと使わなくなるアドレス A12~A14 がフロートになってしまいます。メイン基板にはプルアップを追加するスペースはもう無いし、実用品なのであまり空中配線はしたくありません。
そこでソケットに挿す子基板ごと作り直してしまいました。
電卓を作ってみる(後編)
前回に引き続き電卓です。
試しに √2 を計算してみたところです。まぁ演算部分はブラックボックスなので私がどうこう言うところではありません。
有効数字は8桁です。残る左端の一桁は以下のように使われます。
- 値が負の場合「-」(セグメント g)を表示
- メモリに値が入っている場合は「.」(小数点・セグメント dp)を表示
- 電源電圧が低い場合は「L」(セグメント d, e)を表示
前回アナログ的な部分があると書きましたが、データシートの参考回路のその部分は次のようになっていました。
電卓を作ってみる(前編)
先日、電卓用IC MC74007を入手したので早速電卓を作ってみました。
作ったといっても基本データシートの回路そのままです。
ボタンは全部で30付けられるのですが、製作が面倒なのと機能のわからないものがあるのでとりあえず23だけ付けています。マトリクスの線はコネクタに引き出してあるので後日機能を見てみるつもりです。
配列は次のようにしました。
不明な基板発見
探し物をしていてこんなものも発見してしまいました。
かなり古いものです。
2つの7セグメントLEDは東芝のTLR312、以前は入手しやすい定番のデバイスでした。
下にはデコーダがあります。右側のソケットは抜かれていますが、左に挿さっているのはFairchildのF9368です。これはZ80ボード 1号機(の形見)でも取り上げました。1号機ではデータバスの表示用に2つ使用していましたが、それがこのボードに流れてきていたのかもしれません。
隣には日立のHD14040BPがいます。12ステージのリプルカウンタ、これは74HC4040として74HCシリーズにも取り込まれています。
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のポート割り当ては以下のようになっています。