98システム解析スレッド2021年8月-1 /人'A`;人\ 2021年8月1日(日) 5:20 |
ソフトウェアDIPスイッチの未使用箇所 まりも 2021年8月1日(日) 17:29 |
このところソフトウェアDIPスイッチのことが気になってよく眠れません。 (・_・):暑いから眠れないだけやろ ということでそれを表示するもの作りました。システムセットアップメニューで変更したら結果をすぐに知りたいのでIPLware兼用です。 ttp://hp.vector.co.jp/authors/VA012947/util/vswitch.html ソフトウェアDIPスイッチはUndocumented 9801/9821に記載が一応ありますが不明なことも多く、機種依存も激しいところです。98アーキテクチャ最後の未知の領域の一つです。EPSON機に至っては、旧来からあるメモリスイッチ以外のことは全くわかりません。
そこで気がついたのですが、今までPCIデスクトップ機では未使用だと思っていた I/O 8C1Eの記憶箇所は、システムセットアップメニューを一度起動すると値が設定されることがわかりました。ここはEXIDECBでずっと使っていたんですが、システムセットアップメニュー実行後には000bに設定され、場合によってはパラメータ選択が狂ってしまうんですよね(汗 既にROMに焼いてEXIDECBまたはEXIDE557を使っている人はいると思いますが、そういう問題があることが分かったのでお知らせしておきます。モードを1番(M9互換)以外で使っているとそういうことになります。 <8月20日追記>そのためPCI機種用EXIDECBとEXIDE55Xは設定用EXIDESWと合わせてバージョン2に上げました。
いまある家中のPCI機(お決まりの初代XaXtXf除く)で試したところでは、I/O 891Eの箇所は未使用で、システムセットアップメニューによる変更も受けず、電源断でも保持されるようです。今後出るEXIDECBでは、こちらに変更するかメモリスイッチを使うことに仕様変更しようと思います。ちなみにメモリスイッチの保持/初期化に関わるスイッチbitもあるわけですが、あちこちにあってなんだかよくわかりません。『"メモリスイッチ保持"を保持』するのはI/O 871Eと 8E1Eにあるらしいのはわかりましたが、実際のシステムセットアップメニュー画面では保持するにならないので、そっちはソフトウェアDIPスイッチで参照できない範囲の裏KCGの他の記憶場所に格納されているようです。ソフトウェアDIPスイッチの範囲の箇所以外は、情報を破壊せずに書き込む方法がまだわかっていません。
|
Cx13の映像水平周波数設定を記憶させるには? まりも 2021年8月5日(木) 12:30 |
>Cx13 GRPH+F2で31khzになるという情報 これは昔から見るのですが一方でダメだったというはっきりした情報の方が多く確認できます。31kHzに変更するソフトというのはあると言われていますが見たことがありません。あっても一時的に変更するだけで(int18使用)、31kHz側設定に記憶させるソフトウェアではないでしょう。Cx13に近いPCI機でGRPH+2/1押し起動をしても上のソフトウェアDIPスイッチのエリアでは変動がないようなので、設定を正しい手順で安全に記憶させる方法が分からないんですよね。
<8月9日 8:30追記> ソフトウェアDIPスイッチの範囲外のところでも行ける汎用的な設定記憶の手順がわかってきたので、24/31kHz変更ツールを試作してみました。直リンク置きます。 ttp://hp.vector.co.jp/authors/VA012947/software/fliphfrq.lzh 9821Cx2,Cx3,Cx13などを持っている方は試してください。Xa山猫,Xa/W前期BIOS機ではうまく行っています。Xa/W後期やMate-R は対象外になります。画面周波数が対応しないディスプレイだとDOS起動すら確認困難ですから、FDloader アプリ化するのもよさそうです。
<8月10日 20時追記>Cx13ではダメでしたか。機種ごとに記憶域の使い方がバラバラなんですよね。もしかすると「プラズマディスプレイ使用」の設定のように、機能的には可能だが設定記憶は完全に削除され、24kHz固定にされている可能性もあります。せっかく方法を見出したのに、役立てることができない仕様なら残念。
|
プラズマディスプレイ使用するしないの設定記憶 まりも 2021年8月10日(火) 12:38 |
いちおう記憶場所はあって、上で書いた映像水平24kHz/31kHzと同様の方法で設定も可能になったのですが、Xv13/Wでいま調べた限りでは、どっちに設定してあっても起動時には「プラズマディスプレイを使用しない」状態=テキスト画面1ドット左ズレのようです。もう少し古い機種でどうなるか試してみます。 <17時頃追記> ソフトウェアDIPスイッチの記憶方式については、いまひとつ概念的にわかりにくいと思うのでまとめてみました(画像)。機種世代ごとに真に使われる記憶場所が変化しています。たとえばUndoc2によれば I/O 841E〜にあるソフトウェアDIPスイッチは書き込みできて、その通りに設定されるように読めますが、PCI機ではそこに書くことはできても起動時に初期設定されてしまいます。その初期値が裏KCG領域のほうに書かれます。その物理的記憶の一部を司るデバイスは、98ビデオ回路の近くのSRAMだけでなく、マザーボード上にある24C01も関係あるのではないかと見ていますが、中身を調べたことはありません。 なおレガシー初期機を持っていなくて、正確なところはわかりません。PCI初期機はお任せします(V-SWITCHの表示見た感じでは後継PCI機と同じか?)。 # Dシリーズとか、PU-463系電源不良やニッカド漏れがあるので、わざわざ買う気が起きません
|
ノート機ではさらに前の世代も? KAZZEZ 2021年8月10日(火) 21:45 |
> レガシー初期機 Ra21はRa2と同じくハードウェアディップスイッチですので ソフトウェアディップスイッチはDシリーズ以降でしょうね。 小型機(Uシリーズ)ではUV11がハードウェアでしたがUF/URではソフトウェアでした。
ノート機ではNS・NVあたりからディップスイッチがソフトウェア化はされたのですが、 たしかio_sdip.txtではNS/Tよりも前の機種は対象外になっていましたので、 NS/T以降とは全然違うI/O仕様ってことでしょうかね?
|
初代A-MATE まりも 2021年8月10日(火) 22:27 |
初代A-MATEなんですが、ソフトウェアDIPスイッチになっているにもかかわらず、、I/O 841Eからのところを使用していません。どういう記憶方式なのかがわからないわけですが(ITF読めって)、Dシリーズもそうなんですかね。この辺りの機種は、画像にあげた分類のように単純には行かないかもしれません。Dシリーズで80286でないのをゲットしておくしかないかな、、
<23時45分追記>というわけでAeのITFをざっと見直してみると、Undoc2に全く記載のないI/O 0468hと046Chのハードウェアがそれっぽい感じですね。I/O 841Eからを使う方式とは一線を画しています。KCGも使っていません。9801FAやDシリーズもこのハードウェアなのでしょうか?持っていない上にGetitf98すら動きそうにない機種に遡ると皆目わかりません。
|
手持ちで調べた結果です リウ 2021年8月10日(火) 23:03 |
As初代 vswitchではスイッチ2が表示されますが、IO841e付近はどれもFFで返事が帰ってきます。
Xf IOにアウトした結果はリセットするまでは残っているように見えますがリセットと同時に消えます。 fliphfrqによるKCGの60h、20hの値はリセット後も保存されました。 なお機種IDが1Aでした。
Cx13 fliphfrqで操作する部分にはリセット直後には00が入っていました。 31khz設定はここではないようでした。残念です。
ハイパーメモリCPUと0000:0594h かなり以前の話題でしたが出してきたのでそのまま調査しました。 ex16mem.sysでしか認識できないタイプの方です。 0594hに数値を入れるだけではFreeBSD/pc98で容量認識はしたもののまだきちんと使えないようでした。(メモリ搭載量のチェッカに書き込みチェックがあることは読んで知っていますがどの程度の信用かはわかりません。)
業務連絡 tshさんへ D@drachen6jpからダイレクトメッセージ形式でsakohitiさんのtwitterへ連絡しました。
|
リアルモード4GB まりも 2021年8月11日(水) 21:14 |
ハイパーCPUメモリ、先月のスレッドでは16MB以上のところから飛んで割り付けという感触だったのですが、そうではないのですか。基板上にアドレス設定に関わるスイッチでもあるのですかね。そして仕様はバッファローしか知らないとなると、自力で調べるしかないですね。
正しいプロテクトモードは面倒なので、386リアルモード32bitポインタが便利です。intelのバグと言われていたけども仕様化されており、使えないCPUは現在に至るまで(少なくともCore-i 第三世代まで)ありません。一度プロテクトモードに入ってすぐにFSセレクタなどに4GB全空間参照可能なグローバルIDTをセットしてからリアルモードに戻ると、FS:[32bitリニアアドレス] (使えるのは即値、EBX、ESI、EDI、EBP)で参照書き込みできるようになります。PCISETのソースにあるやつをそのまま使っていいです。
<訂正>IDTちゃうわ、グローバルDT,GDTです。IDTなんて面倒なので設定しません
ただし走っている時間が長いプログラムになると、途中で何かの割り込み処理の際にFSレジスタにリアルモードセグメント値が代入されることで破壊される可能性があります。割り込みルーチンでFSだのGSを使うものは世の中にはあまり存在しないとは思いますが一応。念のため、使う直前に必ずFSセレクタをリフレッシュしておくようにするとか、32bitアクセス中は割り込み禁止にしてしまうとよいかもしれません。 それからNMI発生時の処理ルーチンINT02 ベクタも先に作っておけば、いちいちパリティエラーで再起動しなくて済みます。
|
EX系はリセット後にRAMが16M↑に出て居ない かかっくん 2021年8月11日(水) 22:49 |
> ex16mem.sysでしか認識できないタイプの方です。 > 0594hに数値を入れるだけではFreeBSD/pc98で容量認識はしたもののまだきちんと使えないようでした。(メモリ搭載量のチェッカに書き込みチェックがあることは読んで知っていますがどの程度の信用かはわかりません。)
ex16mem.sysと云う事はEX系ですね
> ハイパーCPUメモリ、先月のスレッドでは16MB以上のところから飛んで割り付けという感触だったのですが、そうではないのですか。基板上にアドレス設定に関わるスイッチでもあるのですかね。そして仕様はバッファローしか知らないとなると、自力で調べるしかないですね。
EX系の場合はDX系と異なり、直接16M↑には出て居ないやうです。バスから切り離されて居るか アドレスが違うかのやうです。基板にSW類は無さそうです。 参考 ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2021&mon=6 仕様についてはexcaxheで解析されて居そうな気がします。 excache単体での入手は困難なやうですが、〜8.xのBSDに入って居ましたっけ?
|
独自I/Oアドレスがあるのでしょうかね? KAZZEZ 2021年8月11日(水) 23:45 |
EX系の独自メモリ制御もどこかのCPU I/Oを使っているんでしょうかね。 ハイパーメモリCPUの有無でI/Oの出現するアドレスを特定できればそこを適当にいじって挙動を見るという手もあるんでしょうけど、 私の手持ちはDX系しかありませんので何とも言えません…。
> Dシリーズで286でないのを CPUアクセラレータが入った個体であれば286機でも386命令は使えると思いますが 多くの場合は中を開けてみないと分からないでしょうね。 # さすがに筐体に486化シール貼ったままCPUを元に戻していたらお手上げです。
ただし当時のCPUアクセラレータは相性なのか不安定なものも多いようでした。 去年VX相当VM21でいくつか試した際も、安定動作するものは限られていました。 # 486DLC搭載品で2k起動しようとしたら熱暴走なのかアクセラレータが壊れました…。 # せっかくなのでアクセラレータ基板からCPU剥がしてソケット化に挑戦しようか考え中…。
|
386SXの286化って可能? まりも 2021年8月12日(木) 0:14 |
>さすがに筐体に486化シール貼ったままCPUを元に戻していたら 98マニアや98に詳しいジャンク商からの出品は大体そうだと思いますよ。 実用にするつもりはなく単なる解析や検証ですから、しょぼい9801DSでいいのですが、80286で動くかどうかのテストもしたい時があるので、おっしゃるようにDXと486アクセラレータの方がいいです。しかしアクセラレータはお高いですよね。
386SXを286にダウングレードするCPUデグレーダーがあるといいのに(笑
|
ex系はアドレス16Mから始まりません リウ 2021年8月12日(木) 0:32 |
プロテクトモードの解説ありがとうございます。 過去ログで16Mじゃない場所に出るかも?という情報もかかっくんさんから書き込まれていました。それを検証しました。 対象はEUA-QP0M EX系のハイパーメモリCPUと初代Asです。 本体側にメモリが11MB載った状態でENL-32Mを外から見える側のソケットに挿しました。 まず16GIGA.SYSはメモリを見つけてくれません。 ttps://www.vector.co.jp/soft/dos/hardware/se027390.html ソースがついていますのできっちり読みました。 16MBから検索を開始して書き込んだ値と読んだ値が一致したところにはメモリが存在する、という検索ルーチンでした。書き込みが先に行われるのでパリティエラーの問題はなさそうです。 ただしFFFFFFFFを検索対象にしていますのでこれはメモリがないところでも同じ挙動が帰ってくる可能性がありました。 下から検索をかけて書き込み結果と読み込み結果が一致しなかったところで打ちきります。
それを参考に実メモリがありそうな部分を検索させました。 そのまま16MBから検索をかけるとメモリが存在しませんでしたが、32MBの位置にメモリがあることがわかりました。 とんでもなく分断されています。FreeBSDではこの位置を検索させて有効にする方法はなんとなく思い付いていますが NTで使うにはIPLwareにした上で分断情報をなんとかしてNTKERNELに教えないといけません。何もアイデアが浮かびません。 分断を16MBの位置に変更することが可能ならドライバを逆アセしてあやしいところを探すという方法はなくはないのですが…躊躇しています。
追記 ttps://drive.google.com/file/d/1ySWQcKla018BtA4SIPLPsw-tH4f52iBu/view?usp=sharing に調査プログラムのソースを置きました。 バイナリはあまりにも16GIGA.SYSをコピペしすぎなのでやめました。 twitterで宣伝もしてみますが…どうでしょうね。 不審なプログラムは実行したくないですよね…。
12日朝追記 偉そうに書きましたがたった4byteの書き込みでメモリが存在すると決めつけていたので愚か者でした。 もう少し判定を厳しくするとやはりそこにもメモリはいませんでした。 EX16MEM.SYSを使った後に判定するときちんと16Mからに出てくるようです。 上のプログラムは消しました。
16日14時10分追記(日付間違い修正 12日?) ttps://drive.google.com/file/d/17AndvEUvP0_ntiVA3jlEjbyZZjSYCO1A/view?usp=sharing もう一度作り直しました。 今度は1MBしっかり読み書きします。 中に書きましたがやはり変なところにマッピングされているようです。 おかしいところがあれば指摘していただきたいのでよろしくお願いします。 さらに18分追記 ハイパーメモリを取り外して 同じ領域を検索すると結果が同じく34M付近にメモリを発見しました結果がでました。 残念ながらハイパーメモリ側のメモリを見つけてきたわけではなさそうです。
19時頃さらに追記 情報共有として ttp://web.archive.org/web/19990922040848/h**p://www.indiscipline.com/kawakubo/excache/exset-990522.tar.gz ドライバではなくUtilityの方のソースが残っていました。 軽くみたところIOport 60e0で操作するようです。 これからしっかり読んでみようと思います。
|
ダウングレードとか KAZZEZ 2021年8月12日(木) 2:38 |
> CPUデグレーダーがあるといいのに(笑 そういえば私も昔、似たようなことを思っていました。 286機でCPUアクセラレータを使った後に386機を使ったり、 あるいは386機でCPUアクセラレータを使った後に486機を使ったりすると、 アクセラレータが流用できず、かえってCPUスペックで負けてしまうことがあるんですよね。 そんなとき、なんで486ソケットに386を差したり、386ソケットに286を差せる下駄が存在しないのかと思いました。 # PenII機にPenProを差す下駄はあったらしいですが、チップセットに制限があるそうで。
でも考えてみれば昔は初代9801と同じ速さになる8086ボードとかありましたっけ。 VX21以降の新しいCバスでは動かせないという話でしたっけか。 Cバス用のCPUアクセラレータでサードパーティの286搭載ボードの場合はどうだか知りませんが、 あったとしてもお高いでしょうね…。
> 32MBの位置にメモリがあることがわかりました。 なんと、そうでしたか。 そういえばENLは一枚あたり最大32MBですから、もしかして本体メモリを0バンク目と見なして、 アクセラレータ上のDIMMソケットをデフォルトで32MB〜と64MB〜に割り当てているのでしょうかね? 実際の本体メモリやDIMM容量の感知後にソフトウェアで間を詰めていくのでしょうか?
|
謎のハードウェア機構 まりも 2021年8月12日(木) 13:38 |
ミイソ製のOS仕様からして16MB直前のギャップ以外に分断があってはいけないので、やっぱりそうせざるを得ないですよね。EX16MEM.SYSが何か秘密のことをやって16MBのところにマッピングするという結論でしょうか。メモリのスロットが複数ありメモリの容量をどう認識しているかも含めて。EX16MEM.SYSの改造とIPLware化のほうがハードウェア機構解読より早いですかねぇ。 それにしても32MBのところに何かが見えたとするとそれはそれでハイパーCPUメモリに関係あるのかもしれませんし(マッピング機構がMMIO)、たまたまノイズかもしれません。後者ならメモリチェックする際にCPUの一次キャッシュを切るとその変なイメージが出なくなるかも?あとテストの方法として、バイトや2ワード単位で書き込んですぐ読むのではなく、あるブロックを全部書き込んでから読み出しチェックすると、変なイメージが見えることは無くなるかもしれません。 <16時追記> メモリを外しても何か見えるならそれはやっぱりMMIOなのかもしれません。えーめーたずで毎黒仮節渡万氏が書いている「レジスタ」というのがそれ?
>386ソケットに286を差せる下駄が存在しないのか 386SXは外部バスがかなり80286互換だという話なので、ハードウェア的にはピン配置合わせるだけで行けるかもしれないのですが、ITFのほうがバリバリ386命令や32bitレジスタのテストを行うのでダメです。だから商業的以前に製品化できないのです。ITFのダウングレード改造まで考えないといけません。でもDSにDXのROMを持って来ればあっさり動いたりしてですね。あっシステムクロック8/10MHzの違いがあったか。
|
excacheは何処? かかっくん 2021年8月12日(木) 19:02 |
ex16mem.sysはEXE形式なのでデバッガで追えそうです。其れよりexcacheのソースコードを讀むのが近道の 気はしますが、今は公式に配布されて居ませんしWebアーカイブにも有りませんし
で、ex16mem.sysには --- 本体増設メモリが16Mバイトを超えているため CPUアクセラレータ上のメモリ認識を中止しました。 --- (原文之ママ) と云う文字列が有るので、アドレスが違うのではなくバスから切り離されて居るのかも知れません。 然うでなければDX系のやうにバス上でぶつかる気がします。
ITFは同じ5/10M系のRX21/51とRA21/51、DXとDAは似て居るかも知れません。RSとRX21/51・RA21/51、 DSとDX・DAはクロックのフラグとBEEP/RS-232C/キーボードの分周比が違うと思います。 RのITFはVX用のROMREAD(をバグfixした物)で讀めそうな気がします。Dはシステムセットアップメニューの 分増量した気もします バグfixのパッチはv98v10?.exeに有るROMREAD2.EXEの31Eh, 34Fh, 380hの02を12hにします
|
ROMREAD って まりも 2021年8月12日(木) 23:31 |
ROMREADというのがどこのサイトに存在しているかわかりませんでしたが、たぶんそのパッチ内容は I/O 043Dhへの出力値の変更だろうと察します。ROMの全容量が128KByteの時代はおもてBIOSとITFの32KBずつで足りていたんですよね(残り64KBがBASICとBIOS前半)。256KByte時代からgetitf98が基本的に対応だろうと思います。チップセット判別など省いて簡略化のうえ、043Dhへの出力値を機種に合わせれば対応できるはずです。H98もここが違っていました。
|
旧型機の中身の少ないITFなら此れで充分 かかっくん 2021年8月13日(金) 0:25 |
ROMREADは4年前に話題に成ったうんず用98VXエミュV98のツールです。OSASKの川合氏作です www.vector.co.jp/soft/towns/util/se034406.html
旧型機の中身の少ないITFなら此れで充分採れます。多分R/E*かD/F*位迄と思います
ITFとBIOSが切り替えに成ったのはVX0/2/4・VM21からです。3.5インチ機は多分UX・UV11辺りと思います。 VM0/2/4迄は切り替えは無く、ITFはBIOSの一部として表に出て居ます VX01/21/41では更に286/10と他での切り替えも有ります 此の辺は4年前の 2017年9月 ematei.s602.xrea.com/kakorogu39/%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E6%8E%B2%E7%A4%BA%E6%9D%BF%20%E9%81%8E%E5%8E%BB%E3%83%AD%E3%82%B0%202017%E5%B9%B4%EF%BC%99%E6%9C%88.htm 2017年10月前半 ematei.s602.xrea.com/kakorogu39/%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%AF%E3%83%AB%E6%8E%B2%E7%A4%BA%E6%9D%BF%20%20%E9%81%8E%E5%8E%BB%E3%83%AD%E3%82%B0%2020171016%E3%81%BE%E3%81%A7.htm 辺りで調べますた
因みにバグfixについてはRへの適用ではなく本来のVXに遣う際も必要です。
|
|
|