Shiro:OvenPC
オーブンに組み込んだPC。大学の学部時代までは現役で使っていた。 ずっと実家に置いていたけど、米国に移る時にばらして捨ててしまった。 これは捨てる前に撮った記念写真。
もともとのオーブンについていたダイヤルとかは取っぱらってしまったので、 あまり風情はない。奇をてらったわけではなく、単にケースを買う金が もったいなかったので、拾ったオーブントースターに組み込んだまでである。
なお、これを作るまでは木製のケースに入れていたのだが、私がPCを使いはじめると 家のTVの写りが極めて悪くなるので評判が悪かった。 今思えば近所迷惑だったかもしれない。時効時効。
中身はほとんどジャンク品でできている。FDDが色違いなのもそのせい。
こんな配線で動いてたのだから牧歌的な時代である。
基板の内訳は、
FDC | CRTC | サブCPU |
メインCPU | DRAM | I/O |
一応スペック。
- CPUはZ80A (クロック4MHz) だったと思うけど、途中でB (6MHz) にしたかも。
- RAMは最終的に256KB積んでいた。BIOSでバンク切替えして、 通常は192KBをRAMディスクとして使っていた。あとドライバを組み込んだ32KBのROMも バンク切り替え。メモリ最上位のスタブルーチンを呼ぶとROMバンクに切り替えて ドライバに制御が渡る。カーネルモードとユーザモードの切り替えみたいなもんだね。 この構造のおかげで、ユーザRAMエリアをかなり広く取れた。
- OSはCP/M-80だったけど、全部逆アセンブルして中身を解析し、かなり書き換えて使っていた。 当時学校でUnixを触り始めてそれに憧れていたので、標準入出力のredirectionとか パイプ(MS-DOS時代の疑似パイプね)なんかができるようにしていた。
- FDDは5inchの時代。2DDとか2HDとか。FDCはかのμPD765。
- CRTCは日立のチップ、何て言ったっけ、6で始まるやつ。
- キーボードスキャンは別にZ80載せた基盤(フロントパネルの裏についてるやつ)で やっている。ローマ字かな変換なんかはこのサブCPUの方でやっている。 さすがに漢字を出すまでには至らなかった。 確か最初の頃は、7821だっけ、キーボードスキャン&LED駆動の チップを使ってたんだけど、途中で変えた。
用途としては、I/Oにいろいろつないで遊ぶことが多かったかなあ。
ホストとなるPCを持っていなかったので、クロスアセンブラとかリモートデバッガ なんかが使えるわけはなく、全てボトムアップで作った。つまり、
- 最初はトグルスイッチ+LEDのインタフェースで、モニタを手動で書き込んで デバッグ。ROMもないので、電源が切れたらパァ。最初はLEDも7セグメントとかではなく ビット毎に表示するものだった。一番最初のバージョンは中学生の時に 作ったもの。一番高価な部品はZ80自体だった。
- 次にROMライタプログラムを作って、ROMにモニタとライタプログラムを焼く。 やっとROMから起動できるようになる。一番高価な部品はTextoolのソケットだった。
- 次にキーボードインタフェースを作り、7セグメントLEDを駆動するようにして それでモニタを動かせるようにする。
- ディスプレイドライバを作り、やっと80x25の画面でダンプリストが見られるように なる。キャラクタROMはグラフ用紙にフォントを書いて、手動でROMに書き込んだ。
- プログラムを保存するのにいちいちROMを焼いていたのではたまらんので、 FDDをつなげる。セクタ単位で読み書きするプログラムを作って ROMに焼き、やっと自作プログラムをディスクに保存できるようになる。 もちろん最初はどのセクタに何を書いておいたか手でメモっておくのだ。
- この環境を使ってCP/Mから叩けるBIOSを開発し、ついにCP/M-80が起動する。
- 友人からwordmasterだとかM-80だとかもらったので、やっとハンドアセンブルから 開放される。
- TOPS-20っていったっけ、フリープログラムの大きなアーカイブがあって、 CP/M-80用のプログラムも結構たくさんあった。いろんなプログラム処理系を 走らせてみる。APLにあこがれて、キャラクタジェネレータROMを書き換えて APLの文字が出るようにしてみたりとか。