PC-386BookLで最後に残った問題はメモリです。せっかくの386を搭載しているのに,プロテクトメモリが全く搭載されていないために高速な8086に成り下がってしまっています。
もっとも,DOSで使う以上はそれで十分だという話もあるのですが,それでもコンベンションルメモリを可能な限り確保するだとか,EMSを使って大きなデータを扱うアプリケーションを立ち上げるだとか,そうした使い方が出来ずに制約を受けるのは面白くない話です。
もともと,私はPC-9801は386以下を所有していたことがなく,メモリも十分に内蔵してあったので,メモリがないなどと言うのは考えたこともなかったのですが,0x100000以上のエリアにメモリが全く搭載されていないマシンを使ってみて,その不自由さには驚くばかりです。
ということでメモリの増設をしたいところなのですが,PC-386BookLはそれが難しい機種の代表と言ってもいいかと思うくらい,難しい機種です。専用メモリスロットがあるのは結構ですが,そこに差し込む専用メモリというのが純正しかなく,他の機種に流用が出来ない文字通り「専用品」でした。
高価で球数も少なく,私も新品はおろか中古品ですら見た事がありません。しかもこのボード(PCRB6)は1MBという小さな容量のもので,増設はこれまた専用のサブボードを乗せるという仕様でした。
結局386SXなんだからPC-286BookやPC-386Noteと同じメモリを使えるようにしておけばよかったのにと思うのですが,このあたりの行き当たりばったりさは当時のEPSONの元気の良さとも言い換えられるので,まあ仕方がないかなあとも思います。
そうなってくると現実的な解はLスロットでの増設です。LスロットはPC-286Lというラップトップモデルで採用された拡張スロットで,後にCバスと呼ばれるPC-9801の拡張スロットを小型にしたものです。
本家NECのラップトップモデルが拡張性を全く持たなかったのに対し,PC-286Lでは2スロットも持っていたわけですし,仕様上はCバスと同じ事がほぼ可能だったわけですから,なかなか意欲的だったと思います。
しかし,EPSONだけのローカル規格でしたし,そもそもラップトップに拡張性がいるんかいな,という話もあり,結局市場に出たのは高価な純正品で,メルコから数品種のメモリボードが出たりした程度じゃないでしょうか。
これらを探し出すのも一苦労でしょうが,仮に手に入ったとしてもCバス相当ですので,速度は遅いです。まあ,386SXですから速度を落とす主要因であるバス幅の問題はないのですが,クロックが25MHzから10MHz相当になりますので,私も経験がありますがCバスのプロテクトメモリは使わない方がむしろシステムのパフォーマンスは高かったです。
内蔵メモリは絶望的,Lスロットのメモリは欠点もあるし入手も難しい。
もうあきらめるしかないと思っていたいたのですが,ふとジャンク箱を見ると,PowerBook100や170で使われていた2MBのRAMボードがありました。なかなか贅沢で,4Mbitの疑似SRAMが4個搭載されています。
疑似SRAMで回路は簡単,しかもアドレスバスは配線済みです。これを使えばLスロット用のメモリくらい簡単に作れるんじゃないかと。(のちのこれが安易過ぎたことを知る事になるのですが)
で,Cバスの仕様を調べていたのですが,これがなかなかくせ者です。一番困ったのがアドレスバスの上位がラッチされないので,ボード側でラッチしないといけないという決まりです。そんなアホなと思っていたら,やっぱりタイミングチャートはそうなっていました。
面倒くさいなと思っていたら,ある資料にPC-286/386は本体内でラッチされていると書かれている箇所を発見しました。それならボード側にラッチは必要ありません。
ならばもうほぼ直結じゃないか。アドレスのデコードをHC138でやってCEに繋ぎ,OEはすべてのチップ共通(メモリボード上で繋がってました)でMRDに繋ぎます。そしてバイト単位の書き込みのためにORを使ってMWEとA0とBHEでそれぞれのWEを作ってやります。
複数チップのRAMを使う時の最大の手間は配線なのですが,今回はメモリ基板をそのまま使いますのでアドレスバスは配線済みです。なので,チップごとにわかれて出てきているデータバスをさっさと16bit構成に配線し,先程の簡単な回路に繋いでやれば完成です。これくらいの回路規模でメモリが増えるなら実験としても面白そうです。
残った問題は実装ですが,Lスロットのユニバーサルカードを手にれるのは絶望的,今ならCADでさっさと書いて中国の基板屋さんにだせば済むだけの話でしょうが,そこまでやるのもなあ,と本体にケーブルを直結するつもりでおりました。
しかし,Lスロットって1.27mmピッチの50ピンなんですね。だったら懐かしのPCIのコネクタとか流用できるんじゃないかと。カードエッジ部分だけ切り取ってあとは力業でハンダ付けすればいけるような気がしてきました。
こういう場合にはライザーカードが便利です。探してみますがPCI-Expressのライザーカードばかりです。まあなんとかなると確かめもせずに安いものを買ったのですが,注文してからPCI-Expressって1mmピッチである事に気が付きました。商品が届いてから測ってみても当然1mmでした。トホホ。
PCIのライザーカードって今は結構高価で,分解して使うにはちょっともったいないです。なんとか安いものを見つけました。それでも1200円です。
これを49ピンでカット(本当は50ピンでカットしたかったんですが,ちょうど逆差し防止用のスロットが50ピンの場所にあるので49ピンです),メスコネクタを外してピンヘッダをハンダ付けします。
ちょうどいい大きさの万能基板を探し出して先程のピンヘッダをハンダ付けすると,カードエッジコネクタ付きのユニバーサルボードの完成です。
さっさと回路図通りに組み立ててテストをしますが,やはりすんなり動くはずもなく,本体も起動しないという最悪ぶりです。CPUENBをデコーダに突っ込むのを忘れていたので修正して試しますがそれでもダメ。
しかし何度か起動を繰り返していると,時々メモリを認識していることがあるのに気が付きました。最初のメモリチェックでメモリのカウントが起きる場合がたまにある,と言う感じで,しかも1024KB,2048KB,1536KBと認識される容量はまちまちです。
起動後tmem.exeというツールでメモリチェックを行うとプロテクトメモリのチェックでエラー連発。というかエラーなしが全くありません。
一応わかったことは,0x100000以上のメモリは普通に繋げば認識してメモリカウントされるということ,また2048KBまでカウントしているので基本的な考え方は間違ってないだろうという事です。
加えてこれほどエラーがあるというのは,波形が汚いとか電源が汚いとかそういう不安定要因ではなく,完全に何かが間違っているということ。ならもう一度見直しましょう。
疑わしいのは,やはり上位アドレスのラッチです。EPSON機は上位アドレスが本体内部でラッチ済みという情報を信じてラッチを挟みませんでしたが,そう書かれていた資料は1つだけですし,真偽以前の問題としてPC-386BookLに適用されるかどうかも不明な情報です。
ならやっぱりラッチを挟んでみよう,ということで配線を大幅に修正しました。幸い手元に74F373のパッケージがありましたので,これを使ってみます。
しかし全くダメ。波形も見ずにダメとか言っているうちは愚痴にもならないのですが,以前時々行われていた起動時のメモリカウントも一切行われなくなってしまったことが気がかりです。
回路図の見直しや論理だけではなく簡単にタイミングも見直して見ましたが,全く動かないというのはちょっと納得がいかず,もしかして疑似SRAMだからではないかと思うようになってきました。
疑似SRAMは見た目はSRAMですが,当然内部はDRAMですのでリフレッシュが必要です。非選択の時に自動でリフレッシュが行われるので非選択の時間が十分にあれば特に気にしなくても良いはずなのですが,メモリを連続でアクセスするようなケースでリフレッシュサイクルを考慮しないと,データが保証されません。
とはいえ,DRAMのデータはちょっとやそっとじゃ化けないものなので,メモリカウントが始まらないというのはちょっと納得がいかないところもありますが,とにかく不安要因は取り除きたいので,コンパチなSRAMに置き換えることにしました。
うん?4MbitのSRAMということは1つで512kBもあるんかいな?
2kBから始まった私のC-MOS SRAM購入の歴史は,とうとう512kBですよ。すごいです。
もちろん,これ以上の大きさのSRAMもあるわけですが,5Vで動いて6116や62256といったおなじみのSRAMがただ大きくなっただけのSRAMとしては,最大容量ではないかと思います。その名もHM628512。C-MOS SRAMの証である62で始まっています。
こんなもの,正規品を買ったら高すぎて死んでしまいます。こういうときはいつものaliexpressです。昨今の円安には腰を抜かしますが,送料を入れても$10程の買い物ですので,ハズレを引いてもガチャで課金よりは楽しめるでしょう。
それにしても最近のaliexpressは短時間で届きます。心配もなくなってきましたので助かります。
届いたSRAMはおそらく偽物ではなさそうで,早速載せ替えて試してみます。
結果は後日。