[030208/030213]

メイン・メモリ無しでの、最大容量は?   *追記あり  *更に追記   [English for "over16s"]

メイン・メモリを剥ぎ取ったPC110に、拡張メモリ板を載せて凌いでいますが、最大容量が16MB止まりなので、何とか増やせないかと、四苦八苦。

例の32MBとプログラムの手直しなどで懸命に頑張ったら...やった!18MBになった...(ん?)
(それ以外は、"16MB"か"起動せず"、あるいは"永久ループ(カーソル点滅)"か"フリーズ(カーソル消失/固着)")
その後、更に丸1日掛けて改善したら、24MBにまで増えました!

そして、今回分かったのは、バンク0に置けるメモリ量は、16MBではダメって事。どうやら、4MBが上限なのかな?
−−−−−−−−−−−−−−−−−−−−−−−−−
プログラムの手直し
HeroHeroさん(目盛屋さん処)から、「最初に認識したバンクの容量を書き替えるとフリーズするよ」とのアドバイスを頂きました。感謝!m(._.)m
で、そこは触らないで済むように、プログラム(Over20m)を改変して、色々やってみました。

細かく設定の出来るプログラムにしようか、とも思ったのですが、どうせ接続は一回毎に半田付けし直す必要があるので、実験がし易いように簡素にしました。

プログラム名は0ver16sで、各バンク毎に容量を指定(ただし、16進数1桁で)できるようにしました。
また、オプション無しの時、レジスタ(ED02,ED03)内容をバンク毎に分けて表示させるようにしています。(左最上部の写真、赤丸印に表示例)

尚、左写真は、テスト用の切り替えスイッチをリード線で引き出した様子。

容量拡大の試み
設定値増メモリ状況
D+16MB16MB
C+8MB16MB
B+4MBループ
A+2MB18MB
9+?MB16MB
上記の32MB板(備忘2の補助回路による)を使って、次のような標準(?)ステップでバンク3の容量を変更設定したら、状況(全メモリ量)は、左表のようになりました。
1.バンク2の16MBのみで立ち上げ
2.スタンバイ状態で、スイッチをバンク3を有効側に切り替え
3.復帰後に、over16sで、バンク3の容量を変更設定
4.ソフト・リセット(Ctrl+Alt+Delete)
5.DOSモードで、状況(全メモリ量)を確認
どうにも解せない結果です。16,8MBを増そうとしたら、"知らん顔"です。4MB増では、立ち上がり時に"永久ループ"に入ってしまいました。そして、どうあがいても、2MB増の18MBにしかなりませんでした。(フン!)
(後日記:これは、当苑方式の拡張用補助回路固有の問題でした!

尚、バンク2は、書き替えたら、やはりその直後にフリーズします。(これは、今の処"触らぬ神"です)

結線の変更と思わぬ結果.
接続結果レジスタ値
RAS0NG?,?,?,?
RAS1OK0,5,0,0
RAS2OK0,0,5,0
RAS3OK0,0,0,5
試しに、16MB分だけを、RAS2(バンク2)の結線を板上でカット(左写真)しておいて、他のRAS線に繋ぎ替えてみたら、RAS1,2,3では正常動作。


ただ、RAS0だけは、何故か電源ON後フリーズで立ち上がらず。
もしかしたら、RAS0(バンク0)領域は、メモリ量が16MBではダメなのかな?と、4MB板を、RAS線をカットしてRAS0に繋いだら、これは正解!(左写真)
つまり、バンク0の上限値は、4MBだったようです。

(惜しい事をしました。これが分かっていれば、先回の"ランド剥がし"よりも、もう少しましな対策があったかも知れません。

・・・しかし、やってみないと分からない事もありますから、あまり悔やまない事にしましょう。

考えた事.
以上の結果から、現在の本体でメモリを増やそうとしたら、拡張4MB板をRAS0に繋ぎ、16MB/32MBのチップを「亀々方式」で乗せれば、20/28MBにできるはずです。しかし、「亀々方式」にはトラウマがありますので...
また、メイン基板に再度4MBチップを乗せて、裏の拡張用コネクタから線群を引いて補う手もありそうですが、まったく後ろ向きの作業ですから、ちょっとやる気が失せそうです。もう、現状で妥協しておくかな?と迷っています。(が、まだ、手はあるかも)

*追記 [0209]
32MB拡張用の補助回路方式(備忘2)が良くないかも知れないと考え、回路構成をHeroHeroさん方式(現在、未公開中?)に変更。そしたら、苦も無く24MBに拡張できました。(再度、感謝!m(._.)m )
(でも、やはり、32MBにすると、Win95がまともに立ち上がりませんねぇ。それと、この方式でも"RAS0に、16MBを接続"では、フリーズしてダメでした)

"RAS信号で、アドレス信号を抜き出す"当苑方式は、汎用性が無いみたい。素直に、「RAS信号を、アドレス信号として使う」と、こんなに苦労せずに済んだようです。
何はともあれ、24MBになったので、使用には殆ど差し支えが無くなりました。(ヤレヤレ...)

プログラム
実験用に作ったプログラムover16sですが、触ってみたいと思われる方のために、DLできるようにしておきます。
何の保証も致しませんが、よろしければどうぞ! [ over16s.lzh

書式/使い方は、次の通り。
  over16s [?] [w[/[x][/[y][/[z]]]]]
         (w,x,y,zは、1桁の16進数。前から順に、バンク0,1,2,3を指定)
 例1:over16s
     バンク毎の現在値を表示
 例2:over16s ?
     簡単な書式を表示
 例3:over16s B
     バンク0だけを、B(4MB)に設定
 例4:over16s /D
     バンク1だけを、D(16MB)に設定
 例5:over16s 0///A
     バンク0を、0に
     バンク1には、元の値を
     バンク2には、元の値を
     バンク3を、A(2MB)に設定

尚、設定後は、設定値に変更があれば自動的にホット・リセット(ウォーム・ブート)します。(無ければ、そのままリターン)
(追加:? の代わりに、p オプションを入れれば、そのリブートを回避できます)
従って、以前のOver20mと同じように(Autoexec.batに置いて)使えるはずです。(多分!)

[English note]

It is a program over16s made for experiments, but for those who want to touch it, I will make it DL.
We do not guarantee anything, but if you don't mind, pleas e! [ over16s.lzh ]

The format / usage is as follows.
  over16s [?] [W [/ [x] [/ [y] [/ [z]]]]]
   (W, x, y, z are 1-digit hexadecimal numbers. Banks 0,1,2,3 are specified in order from the front)
 Example 1: over16s
  Display the current value for each bank
 Example 2: over16s ?
  Display a simple format
 Example 3: over16s B
  Set only bank 0 to B (4MB)
 Example 4: over16s / D
  Set only bank 1 to D (16MB)
 Example 5: over16s 0 /// A
  Bank 0 to 0
 Original value for bank 1
  For bank 2, the original value
  Set bank 3 to A (2MB)

After setting, if there is a change in the set value, it will be automatically hot reset (warm boot).
(If not, return as it is)
(If you put the "p" option instead of "?" , You can avoid the reboot.)
Therefore, you should be able to use it like the previous Over20m (put it in Autoexec.bat). (may be !)


備忘1-板種とレジスタ値
板種レジスタ値
 4MB板0,0,B,0
16MB板0,0,D,0
市販16MB0,0,C,C
32MB板0,0,5,0
実験中、32MB板での「5」という値が気になったので、他種の拡張メモリ板を(RAS2/バンク2で)装着した時の、レジスタの値を見てみました。(右表)
4MB,16MB板は予想通りですが、32MB板の16MB分だけが違うようです。(理由は分かりましぇん)
また、市販の16MBは8ビット幅なのでちょっと違うかなと思ったのですが、そうでもなかった。
まあ、HeroHeroさん処の資料(「4MB 増設目盛の 32MB 化(暫定版)」)によると、「5」も有り得るようですから、善しとしましょう。


備忘2-回路の簡素化
実験をしていて気が付いたのですが、128ビットのメモリ・チップ(5113165)を使った32MB拡張メモリ板用の補助回路を、少し簡素化できる事が分かりました。
と言っても、回路からゲートを1個外すだけ。(左図)
4ゲート入りのSOPを使っているので、1ゲート外したからとて、全然得した感じはありませんが、信号遅延の低減には多少役立っている(はず!?)
尚、ICは74VHCタイプを使用。(74HCでは動作せず)また、C≒1μF、R≒1MΩ。


*更に追記-配線替え [0213]
32MB拡張メモリ板に使っている128Mビットのメモリ・チップは、内部容量が大きいので、元の拡張メモリ板上の信号だけでは、全領域をアクセスできません。それで、現状は、各領域を外部で切り替えるために補助回路を使っているわけですが、その回路接続を、色々弄ってみました。

あわよくば、遅延用C,Rの省略や無リセット28MB化ができないかと、気張ってみたのですが、配線替えだけでは、やはりBIOSを出し抜くことはできませんでした。そして、上限は(当然?)20MB

実験の手順.
当該メモリ板の補助回路の配線替えをした後、電源投入。メモリ表示の記録をし、DOSで止めて、"Over16s"でレジスタの値を確認する、といった手順です。16MBや20MBについては、一応Win95まで、走らせてみました。

接続替えの結果
始めは、多少予想をしながら接続替えをしていたのですが、あまりにもそれと結果とのギャップが大きすぎて嫌気が差し、途中から闇雲に接続を替えては、結果がどうなるか?だけを記録しました。それが、左図。
(作図は、水魚堂さんのBSchによる)
尚、これ以外の接続方法もあり、フリーズやループになる接続もあるのですが、それらは省略。

図からはナーンにも言えませんが、敢えて言うとしたら、"BIOSは、ハード構成に応じて、自在に20MB(まで)を確保する"という(当然の?)事ぐらいでしょうか?
(きっと、内蔵MMUの働きも、上手く行っているのでしょう。ダメな時には、フリーズやループか?)

愚痴
拡張メモリ板には実容量が32MBあるのに、たった20MBしか認識されないってのは、ホント勿体無い事です。
BIOSの書き直しができれば、こんなのは簡単に解決できるのでしょうが、力不足でママなりません(2児のパパですから(^^; ?)


[表紙頁]へ  関連記事の目次へ  [一言板]へ