戻る
***** 返 信 *****

 98システム解析スレッド2024年3月  /人'A`;人\  2024年3月1日(金) 5:18
こちらもたてておきます。

 ATAリセットに伴うパラメータリセット  リウ  2024年3月1日(金) 19:53
bauxite.sakura.ne.jp/wiki/mypad.cgi?p=PC-98x1%2Fmisc%2FPC-98%A4%CE%C6%E2%C2%A2IDE%A5%C9%A5%E9%A5%A4%A5%D6%A4%F2%B4%B9%C1%F5%A4%B7%A4%BF%A4%A4%A4%B1%A4%C9%A1%C4

規格書をきちんと読んでないと指摘されたも同然ですが
set featuresの66hで飛ばなくなるデバイスがあるはずだ、とのことですので自前で試してみました。
飛ばなくなったものが手元ではとりあえず一つは見つかりました。
大多数がそうなってくれていることを期待してプログラムを書いておきます。

21:45追記
drive.google.com/file/d/1yCGhRF5eQAM_aS-jsxofkzIy0YHdJLVm/view?usp=drive_link
USBドライバはバージョンアップしました。OHCIは手元ではなんとか動いているようには見えます。

drive.google.com/file/d/1xEbr8CHaCGSbWr3qn5-fgi83auZoh3-d/view?usp=drive_link
CFリセット関係ファイルも改版しました。
情報いただいたものを反映するset66h.comを中に入れています。

0:17追記
>ATA/CFの仕様書の読みが甘かった点は反省しないとなりません...
本当に反省しています。………何年も見すごしてきてしまったわけで…LBAへの変換で満足してしまっていました。
この単純操作一つで解決するものが増えるのなら朗報だと思います。
一応ですが第4世代前期(4351MiB壁機種)のITFは当然このコマンドを送っていないことは確認しています。

 それ自体がパワオンデフォルトに戻されるのかされないのか  まりも  2024年3月1日(金) 22:53
Set feature コマンドで設定の66h/CCh、これは知りませんでした。

ところが、、、Set featureでは03hを送ってIO転送モードの設定(IDE BIOSが初期化時に発行)もあって、これがATAリセットがかかった後は初期値に戻ってしまうことが(モノが)あるようなのです。当然転送速度が遅くなります。
すると同様に、66h(Disable reverting to power on defaults)でパワーオン時デフォルトに戻さない設定をすること自体が、ATAリセットがかかると無効にされてしまうような気がします。いっぽう、この66hをやっておくと、03hで設定した転送モードのほうもATAリセット時に保持されるようになるかも?という期待もあります。どっちが正解かはATAデバイス/CFごとに違うということになるんでしょうかねぇ。ともかく「やってみるしかない」面白いテーマです。

【0時追記】手持ちのCFについて片っ端からSet66hを実行してみました。念のため逆コマンドになるsetCCh も作っておき、パラメータリセットが起こらなかった場合にこちらを実行した後にはリセットになることも確かめています。Set66hが有効に働いたCFは◎、そうでなかったものは×示します。
× PQI FLASH CARD
× メルコ RCF シリーズ
◎ Sandisk SDCF*- 全て SetCChも機能
Sandiskの古めのCFは容易にCFリセットしていたのですが、 Set66hのおまじないの後はCHSパラメータのリセットは起こらなくなりました。さすがSandisk、コマンド仕様通りに動いてくれています。

ATAリセット時の転送モードのリセットの有無がどうなるかはよくわかりませんが、もともとBIOSが初期化時に転送モード設定を行わない(その設定ルーチンが回避されてしまう)CFが多いことから、あまり気にしなくていいかもしれません。致命的なのはCHSパラメータリセットですから。

これで、98オンボードで安定確実に動作するCFが少し増えることになったのは朗報です。と同時に、ATA/CFの仕様書の読みが甘かった点は反省しないとなりません... あとわたしがやるべきこととしては、「CFを漫然と使ってはいけない」例の文書の改訂と、プログラムIDEDEVの改訂追記ですね。

 CFリセットには速度低下の問題もある  まりも  2024年3月2日(土) 12:54
一つ上のコメントで危惧している問題は転送モードの設定がリセットされることですが、他にもありました。それはmultiple sector read/writeも初期値ゼロに戻されてしまうことです。ごく一部のCFではこれが2以上にできる能力があり(SandiskのCFは割と装備)、IDE BIOS第2世代期以降ではこれが能力最大値に設定されます(追記:第4世代でないとこれが16以外の場合は設定されないことが判明)。しかしCFリセットではこれも飛んでしまい、read速度はこれら2つの要素によって大幅に低下します。初代A-mate相当に落ちます。

やっぱりCFリセットはCHSパラメータリセットで読めなくなることだけ気にすればよいという話ではなく、そもそもCFリセットを阻止できるCFではそうするのが正道です。Set66hはそのために必要であり、これでもCFリセットを起こしてしまうCFは使うべきでないというか、「漫然と使ってはいけない」との考えには変わりません。

SandiskのCFはSet66hによって「98で使える優秀なCF」に化けるようです。Set66hをもっと知ってもらうとよいと思います。

【4日0時追記】IDEDEVに、ATAリセットを起こす /r番号 オプションと、SET FEATURES 66hを設定する /c番号 のオプションを追加しました。コマンド実行後にidentifyを読み出して表示するので、CHSパラメータが飛んだかどうかはすぐわかります。そのほかIDE第4世代機用のEXIDE**に66h機能とIDE高速転送になるように偽装する機能を追加してみました。SandiskのCFだと効果が大きくて転送速度が3600KB/sくらいになります。やっぱりCFはsandiskですよ〜

【4日12時追記】ttps://twitter.com/One_PC9821/status/1763823903359508979
ありゃ、Set66hのあと、見かけCHSパラメータは変化しないようなのにハングアップ?実態としては変化してしまっているのですかね?
この逆パターンがメルコのRCFシリーズで、返すCHSパラメータは初期値に戻っている(Set66hが効かない)ですが、実態は変わらずアクセスできます。まだまだCFリセット問題にはデバイス固有なところがあるようです。というわけでSandiskをダメ推し。
TranscendのCF TS1GCF133というのが出てきたので試してみたところ、Set66hが効かずリセットしてしまうようです。Transcendの製品でももっと高級なやつは行けるのでしょうか。

 手持ち調査  リウ  2024年3月4日(月) 19:12
買いまくっていた時期もあったのですがいつのまにかこの量に減っていました。
(お返事後修正)
調査はset66h実行後、ATAリセットを送り、CHSパラメータの値とマルチセクタの設定値の変化を見ました。

Apacer ◎
Transcend
firmwareが2.0の工業品(CFAフラグなし!) ◎
firmwareが日付のもの(工業品も民生品も) ×
GREENHOUSE △
SanDisk SDCFXS-064G(64GBですので試すのはNw133のLBAパッチ環境下です。) ×

となりました。うちのものはすべてマルチセクタが1なのでそこまで早くありませんがsmartdrvと併用すればDOSではそこまで我慢できなくないのかも?と思い始めました。

◎は66hが完全有効でパラメータ(CHSだけでなくマルチセクタ設定含む)がATAリセットで飛ばなくなるものです。
×は66hが機能しません。CFリセットが発生します。残念です。
△は特別扱いな変なやつです。パラメータは見掛け上飛んでいますが、実態は8:17のままのものです。SCSI変換籠に入れるとちゃんと動作しない、などBuffaloのRCFシリーズと挙動がそっくりな変なやつです。

Sandiskの64GB品は見た目のCHSは飛びません。(LBA環境で使用中のため実態はわかりません。)がマルチセクタ設定が0に戻ります。

 CFリセット問題はまだ続く  まりも  2024年3月5日(火) 10:38
>○は66hが一度だけ有効で再度ATAリセットをするとCFリセット
これが上で危惧していると書いた症状です。つまりset featuresで設定したこと自体が、ATAリセットで飛ぶという現象です。そのサブコマンドに66hも含まれるとしたら意味がないわけです。66hは、「リセットを起こさない」というコマンドではなくて、あくまでも「"一部の"パラメータ設定について初期値に戻さない」という文言通りであるだけかもしれません。

>idedevにrとcを同時につけた場合
すみません、/rn /cn は同時使用に対応していません。Beepが鳴らないならばリセットのほうは実行されていないと思います。したがって66hの「有効な時間」というのは無いかもしれません。

>SanDisk SDCFXS-064G
Sandiskでも新しいやつはSet66hが効かないのですか。う〜んSandiskにもいろいろあるとは・・・

ところでEXIDECB,EXIDE55X,EXIDEBX4に66hコマンド送りの機能を追加しましたが、3月3日版ではCFが3台接続されているとおかしくなる問題があったので直しました。【3月14日追記】EXIDEAE,EXIDEBAにもこの機能を追加しましたがパリティエラーが出る問題が見つかったのでいったん取り下げ

基本的にEXIDE** はBIOSコードを変更するだけで、ATAデバイスに何もしませんでしたが、66hコマンドを送るにあたってATAデバイス操作を行う部分を追加しています。介入のタイミングは、BIOSがidentifyのデータからCHSを設定する時なのですが、そこではATAのレジスタおよび切り替えポートの状態は、プライマリ/セカンダリ、マスタ/スレーブのどの状態になっているか判りません。しかしそれぞれのIDE接続ポートのデバイスのidentifyの結果を見ているタイミングであればレジスタやポート状態を引き継いでいるのでは?と予想したら、半分は当たっていました。ATAのデバイスヘッドレジスタだけはそうは行かなくて、BIOSが扱う変数[bp+00]から引っ張ってくる必要がありました。

Sandisk製の新しくないCFを3台接続して、システム起動後に抗ATAリセットな状態になっているようなのでたぶんOKだと思います。なおEXIDE486だけはこう簡単にはいかないと予想していますので着手しません。なのでIPLware版(かつ全世代IDE対応版)のSet66hはやはり必要度が高いと思います。

 epson機のIDE  リウ  2024年3月5日(火) 12:08
CFリセットでエゴサーチしています。こんな履歴を見つけてきました。
ttps://twitter.com/xtv183/status/1667351581036253184?t=sseyGwQZCiO8z7vN4ljytg&s=19

返信にえらそうに解説してるやつがおりますが、大切な物を見逃していました。
epson機のIDE-BIOSの仕組みが見え隠れしています。BIOSは8:17なのに(おそらく512B/s)メディア側は4:17です。epson機の2G壁は符号付き16bitのせい?などとされてきましたが、メディア側がこの値ならそっちが原因だったとも言えます。
またメディア側とBIOSの設定値が一致していません。これはwin95のドライバで面倒が起きる原因ではありますが、CFリセットされても読み書きできるような柔軟な計算がBIOS内ではされている可能性も示唆しています。(偉そうに解説してる奴が間違えている。)やはり一台手に入れて中身を読みたくなってしまいます。

14:18追記
メディア側にテキトウに91hを送るとわかりますが(LBAパッチでわざと小さいHSを指定してもよいです。)
結構ここは柔軟につくられていましてあふれてしまってもシリンダ数に65535を返してくるものは多いと思います。(ATA標準のnative嘘値であるところの16:63:16383とは結果が違います。)

 256B/s? 対デバイスLBA?  まりも  2024年3月5日(火) 13:28
もしかしてそのEPSON機は 「BIOSセクタ長256バイト」になっていますかね?
ただそれでもちょっと不思議です。NEC機で256B/sの設定をすると、BIOSセクタ数側が2倍−1になるのであって、どれかのパラメータが半減にはなることはないです。本物のSASIのときは4:33だったかと思います。
ちなみに画像のはとんでもなく旧いIDE HDDで、nativeなCHSが滅茶苦茶な値だったりしていますが、BIOSで256B/sに設定でもCurrent CHSは512/B/sのHDDとして8:17に設定されています。

>柔軟な計算がBIOS内では
普通に考えると、BIOS側 CHS-->変換-->LBAデバイス側 でのアクセスと思います。傍証として、65535:4:17でオーバーフローしているのに素通り【注を追記】している?というのが挙げられます。この状況でBIOSファンクションで最大容量は何を返してくるのか、使われもしない?4:17のデバイス設定はなんのためにあるのか、真相はEPSON機を手に入れないとわかりませんね。SASIハードウェアエミュレートの名残り?

なお符号付整数問題は他のところにはあります。すくなくともEPSON フォーマッタでは32767より大きい値は全滅なのは明らか(C言語のprintf で使う%dが見え、%uにパッチすると正常化する)です。EPSON製DOS内部で符号問題が起こっているかどうかはわかりません。

【注 追記】デバイスにCHSを設定しにゆくのはBIOSのルーチンですが、65535シリンダになってしまう計算過程で普通は除算エラーが起こるはずなのに、という点です。

 同じpqiでも挙動が異なる  KAZZEZ  2024年3月6日(水) 1:45
やっと時間が取れました…3月3日のIDEDEVで手持ちのCFのパラメータが変化するか見てみました。Nr15使用なので試せたのは4GB以下のCFだけですが、8GBはどのみち4GBのと同じトランセンドの安物しか持っておりませんので。
・SAMSUNG 256MB(ネイティブ16ヘッド32セクタ)- 非ATA Removable、/RでCurrentパラメータは変化せず(/Cの出番なし)。
・pqi 2GB x100倍速(ネイティブ16ヘッド63セクタ)- ATA Fixed、/RでCurrentパラメータは変化せず(/Cの出番なし)。
・pqi 2GB x120倍速(ネイティブ16ヘッド63セクタ)- 非ATA Removable、/Cの効果なく/RでCurrent=ネイティブに変化。
・Transcend 4GB x133倍速(ネイティブ16ヘッド63セクタ)- 非ATA Removable、/Cの効果なく/RでCurrent=ネイティブに変化。
というわけで、当方の手持ちでは/Cnの効果は確認できませんでした。こうしてみると古すぎるCFだと/RではCurrentパラメータ変化を起こさないようでした。BEEPは鳴るのでATAリセットは多分できているのでしょうけど…。
同じpqiでもx100倍速のほうは以前から安定でHDDとして認識するので2kで運用とかしていたのですが、後から買ったものはx120倍速になっていて、こちらは100倍速よりも少し不安定に感じましたが、やはりCFリセットを起こすタイプだったようですね。こちらはAT互換機のほうに入れています。なんでこのような変更があったんでしょうね。
Transcendの133倍速の安物は4GBも8GBも以前から不安定な印象で、時々どこかで引っかかるのか、実際HDB98ではpqiの2GBよりも遅かったです。
それでも速度を別とすればリウさんのLBA_IDEで使えるようになったわけですが(そのせつはありがとうございます)。

6:50修正
すみません。おっしゃる通りですので、ご指摘を受けて用語を修正しました。相変わらずHDD関連は深入りできていないほうですので…。(ぉ

 見た目でわからん仕様違い  まりも  2024年3月6日(水) 6:22
<疑問点は解消したので削除>
PQIの普通のCFに、見かけでは大した違いがないのに、コマンド応答仕様が違うものがあるとは驚きでした。人は見かけによらず、じゃなくてCFは見かけによらずです。メーカー名やブランド名だけではダメで、IDEDEVなどで表示される正確なデバイスモデル名(場合によってはファームウェアバージョンも)がないと話が噛み合わなくなる可能性がありそうです。

【13時追記】Sandisk製CFでATAリセット後にmultiple sector R/W current settingが0にされてしまう件ですが、一度そのCFに通常の読み書きアクセスに行ったあとに調べると、ちゃんと規定値に戻るようです(画像1,2)。速度的にも問題ありません。なおCurrent CHSの変化は元には戻りません(画像の場合は8GB品でもともと16:63なので見かけ変動はありませんが)。

ついでに・・・IDEDEVを 3.60に更新しました【表示誤りがあったので22時に3.61をupload】。-rn -cn の併用指定はできないことを明記しました。-cn のほうが優先されます。また-cn では設定のみ行い、デバイス諸元の表示は行いません。逆のコマンド -zn も装備させました。これによりデバイスを元の状態に戻すのにいちいちシステムを再起動しなくて済むようになりました(CFがこれに対応であればですが)。

 CFリセット 考察  リウ  2024年3月6日(水) 20:55
SanDiskの結果を頂いての考察です。

デスクトップ機のIDE第2世代以降ではマルチセクタ読みをやります。(解析事実) 注(第2,第3世代ではセクタ数が16固定だと解析しましたが間違えているかも…)
ATAリセットは呼ばれるとパラメータを吹き飛ばすのが仕様です(仕様違反多数)
第2世代以降ではマルチセクタ読み(C4h)をBIOSで行いますが、パラメータが吹き飛んでいるとメディアはエラーを出します。(動作傍証)
ーーーーー削除(8日13時ごろ訂正) CFリセットに伴うdir読みエラー後にBIOSはAH=03をやりませんでした。本当???
BIOSはエラーをもらうとInt1BのAH=03(ATAリセットも含みますが)を新たにやります。(動作傍証)ーーーーー
第2世代以降のデスクトップはAH=03では(マルチセクタ値の再設定を含み やっていないかも…)、PIOモードの設定と 91hもやり直します。(動作傍証 解析事実)
暴走しません。(予想)

これがマルチセクタ値が0のもの(修正 1でもC4hでした。)、またノート機の場合
BIOSはATAコマンド20hで読み出しです。(解析事実)
こいつはCFリセットを喰らっていても読み書きでエラーを出しません。(動作傍証)
Int1BのAH=03が呼ばれずにCHSがネイティブに戻ったままです。(動作傍証)
とんでもないアドレスの読み書きになりリセットボタンを押さなくてはなりません。(事実)

今まで経験してこなかった、という方の報告は上側のことが起きているのでは?と思ってしまいました。マルチセクタが2より上のデバイスをデスクトップで使っている限りはうまく行く可能性がありませんか?と考察?してみました。

>【注 追記】
私が話を理解できていません。すみません。一度打ちきってください。

21:17追記
AH=03hの実行時に91hをやらない場合はあったはずです。その場合はATAリセットの時間待ちもほぼありません。どの条件でそれが場合わけをされているのか読みきっていません。
AH=03hを連打すると奇数回と偶数回で分離していたような記憶はありますが、今手元で調べたわけではありません。

   まりも  2024年3月6日(水) 21:12
動作傍証 解析事実 ということなのでそうかなと思いますが、multiple sector readでのエラーのときだけ自動的にInt1BのAH=03を実行しているわけですか。

意図的にこれをやると、応答に結構時間がかかりますが、SandiskのCFにリセットをかけて、multiple sector Current settingがゼロになった場合、再度読み込もうとしたときには時間がかからないという違いがあります。Current CHSが治らない点も違います。この自動的に行われるBIOSファンクションの03hに、コマンド91hまでは行わない抜け道があったりしますかね?

 大ハズレ  リウ  2024年3月7日(木) 21:38
考察だけで実験しないと意味がありませんのでやりました。
Xb10 KIOXIAのSSD マルチセクタは16です。
なんとCFリセットしないタイプのSSDでした。
こいつはとても優秀で98内蔵IDEで使うならかなりお勧めになってきたような気がします。マルチセクタが16もある。容量変更が効く。CFリセットしない。といいことづくめの気配です。(もちろんSATA変換がめんどうですが…)

でこれでは実験できませんので上で×をつけた工業品のTranscendのCFで試しました。マルチセクタ設定値は1です。それでもマルチセクタリードC4hを使っているはずです。
結論としてはCFリセット後にdirをとったところ長時間待たされたもののエラーを出されなかったのですがファイルの読み出しは不可能でした。(ディレクトリを移動するとdirすら取れなくなりましたのでbufferを表示していただけのようです。10日0時追記 STOPキーでも同じようになりましたのでやはりBUFFERをみていただけのようです。)その後AH=03hのInt1Bが呼ばれているはずですが91hでの復帰がなされなかったようです。(処理追いかけていません。)
予想は大ハズレとなりました。ただし最大値が1のメディアの場合ですので2以上だとまた違う結果が来る かもしれません。

経験上CFリセットなんて喰らわなかった、この方達の運が良かっただけ というつまらない結論になりそうです。


0:55追記
emulatorで全部裏から見える状態で実験してみました。
CFリセット後マルチセクタ値を0にするとC4hが失敗します。
その後BIOSからはsetfeaturesの03hが送られて来ましたが91hは残念ながら送られてきませんでした。
ここの場合分けに91hへ必ず行くような道順を見つけてきたら、デスクトップ機の場合は、LBAにしなくともそのパッチだけで(とはいえ結局パッチが必要なことに変わりありませんが)使えるデバイスが増えないかなあ、と妄想しています。

8日22:17追記
真面目に処理を追いかけました。
C4hが失敗した場合Int1Bは何もやりません。
ただしリード終了時にBUSYビットが立っていた場合、(20hの場合も多分通るのでは?としっかり読んでいません。)ATAリセットを発行していました。(これがCFリセットの元凶の気がします。これはないと困るものですから削除不可能でしょう。)
AH=03h(Initialize)のInt1Bh自体はエラー時に呼び出されてはいませんでした。こちらはinitializeですから91hはやっていました。ただし見ている限りではマルチセクタの設定を戻そうとはしていません。どこか別のところからまた呼び出されるようです。
予想ばかりで、解析が甘すぎました。

BUSYビットが立ちにくくなる何かがあればよいのかもしれませんが、やっぱり変なCFは使わないほうがいいですね。
CFリセットの発生しない当たりを使う。66hでCFリセットを拒否できるようなものを使う。それもダメならLBAパッチだ、との思いを強くしました。

 STOPキー  かかっくん  2024年3月9日(土) 0:34
DOSでバッファをクリアするのはSTOPを推せば出来たやうな?
後付けのキャッシュには無力な気がし枡が
# ^C (CTRL-C)でも出来た鴨

リード終了時にBUSYビットが立つと云うのはどんな時かを考えれば対処法も解りそーな?
まぁ抑々98のHDDポートはモノホンのIDEでは有馬せんし、CFも規格上はIDEに接続して遣える事を保障して
居ない?(必須要項でなくオプションだった飢餓?、個々の製品の仕様としてIDE対応を謳った物は有る)ので、
本体無改造でマトモに対応させる気ならマイコンを積んだ番長並みのアダプタに成る気がし枡。デモ其処迄
する位ならCF対応よりSD対応のが良さそーな?
だからレイのIDE板に期待して居るワケで

ところでSD対応でなくTF対応とするにもSDAに入る必要が有るんデスかねぇ?
資料ゲッツの為だけなら入ってすぐ辞めても良い(初年度の会員費だけで済む)ワケで(?)
SD対応として賣り續けるにはSDAも續ける必要が有馬すが!
# スマフォのμSDスロットに今一つ速くない物が有るのは真坂SDAに入らず(略)

 Unreal modeの謎なところ  まりも  2024年3月23日(土) 17:35
ttps://twitter.com/yKasumi/status/1771395577026420774
DSやESを使うと、よくわからない問題が発生するかもしれません。というかぶち当たりました。
まずrepeatプレフィクスのつく転送命令が怪しくなります。
それから転送命令で転送元を暗黙のDSの代わりに他のセグメントレジスタのプレフィクスをつけたもの(普通のアセンブラでは書けないので機械語埋め込みで行う)が想定通りに動作しなくなるみたいです。
(ちなみにES暗黙の転送先をプレフィクスで変更することは元々不可能らしい)

それにデバッガでのデバッグが困難になります。デバッガが内部でDSやESをいったん触るはずだからです。push/popで値だけUnrealの時のものに戻してもダメです。触られたら終わり。386より古いCPUもターゲットにしていてFSやGSを内部で一切触らないことが判っているデバッガでないといけません。

Unrealモード内でFSやGSだけを使っていても、動作しているシステムの割り込みルーチン(多くはBIOS)の中で触っていることも想定しないといけません。98システムの場合は互換性の権化なので、ITFは別としてBIOSサービスルーチンではFSやGSに触ることがないようですが、保証の限りではありません。ときどきFSやGSをセレクタとしての内容にリフレッシュするのが確実です。

 第3世代IDE BIOS機のよくない仕様の改善  まりも  2024年3月27日(水) 23:45
Sandisk製だけでもいいから第3世代IDE BIOS機でEXIDE486を使って抗CFリセットにしたいと思い、少し解析しました。ついでにmultiple sector R/WがSandiskのCFでも有効にならないかと思案していたのですが、、、なんと第3世代のIDE BIOSではmultiple sectorの値を16で決め打ちしているのですね。これではエラーになってしまい、せっかく2や4の値を持つCFやSSDが高速になりません。

ということでそこにもEXIDE486でパッチを当てることにしました。さらにidentifyデータの値を誤魔化してCFなら無条件にIORDY flow コントロール転送を行うためのパッチも当てます。その結果、9821Xn上でHDB98ベンチマークの32KB readで1500KB/sしか出なかったCFが 2600KB/sほど出るようになりました。【29日画像追記】Ap3だと転送速度は2倍近くに向上

ところがパッチコード量が増えてきて、第3世代486機用とAn用を同居させることが不可能になってしまっています。今後、EXIDE_An というのを別個に掲載することになりそうです。

それからもう一点気がついたことは、第3世代機でもX-mateはBIOSが古そうだという点です(第3世代前期と仮称)。特徴は、一般的なCD-ROMドライブをセカンダリ・マスタに接続すると起動時に一分間の黙祷をするアレです。BX3、Cxなどはそういうことがないようです。後期第3世代機で追加されたコードにこれを回避できるヒントがあるような気がします。初代Xa、Xfは前期後期どっちなんでしょうね?

【30日0時追記】EXIDE486 V3を公開しました。文書量がデカくなったのでダイジェスト版も用意しました。→ ttp://hp.vector.co.jp/authors/VA012947/exiderom/explanation486.html

 当時みいそは16に設定出来ないHDDは1として遣うか選定外かだった  かかっくん  2024年3月29日(金) 23:35
当時、みいそは16に設定出来ないHDDは1として遣うか、選定の対象から外すかをして居ますた
例えばWD 21000は16、Qゥantum FB540ATは8、コNNER CFA340は1(対応せず)デスがFB540ATは16に
対応しないので1の扱いに成増。サードパーティ品は16は守られたんデスかねぇ?

デモ、疑問ナノデスが、IDEのレジスタ自体にはセクタ数(セクタ番号でわなく)のレジスタ(8bit)が有馬すが、
此処に指定するだけでわ駄目なんデスかねぇ?駄目だから憶うやうな動作をしないのデスが

 FB540ATはブラックリストに無し  まりも  2024年3月30日(土) 0:00
>Qゥantum FB540ATは8
これが「XaだかXsだかで動作しないドライブ」という迷信に関係することになった理由でしょうかね。

第3世代IDE BIOSでは、multiple sector(identifyデータのワード47のところ)が0の場合はIDE HDDのモデル名を比較しに行って一致するとなんらかの設定をするようです。IDE BIOS内にあるモデル名の「ブラックリスト」ですが、そこにあるような旧いHDDはもう使うべきでもないので、EXIDE486 V3ではばっさり切り捨てて、CF寄りにシフトしました。

 ATAコマンド20h c4h  リウ  2024年3月30日(土) 3:16
セクタ数設定はありますが、20hでは1セクタ毎に割り込みがかかり、C4hは全部終わるまで割り込みがかかりません。その割り込み処理の回数の差で遅くなりがちです。
0925追記
IDEBIOSは割り込み処理の中で実際のPIO転送をやってたような?
今第0世代BIOSの中身と戦っていますが、こいつは割り込み処理内ではやっていませんので記憶違いを起こしている可能性がありますが、書きます。

1080ATや540ATはマルチセクタの最大値が8というのを初めて知りました。REIのLBAモードでは動いてた、という報告が気になっていましたが、そちらにも原因の可能性があったのですね。

 EXIDE_Anも公開  まりも  2024年3月31日(日) 0:07
EXIDE486 ttp://hp.vector.co.jp/authors/VA012947/exiderom/exide486.html
EXIDE_An ttp://hp.vector.co.jp/authors/VA012947/exiderom/exide_an.html
仕様的にはどちらもまったく同じで、対象機種のうちAnを別にしただけです。ただしPnP対応にしたAn (ITFリビジョン0.51)で動作するかどうか不明です。以前から不明でしたが、動作しないという報告はありませんでした。

あとちょっとした実験をしてみました。XsのIDE BIOS部分をBX3のそれに置き換えることです(ハードウェアEMSメモリボード流用のROMエミュレータを活用すればできます)。起動時に専用CD-ROMドライブ以外を繋いでも待たされなくなり、それ以外の点でとくに問題なく動作しました。どちらもPnP対応機だし、近縁種の接ぎ木は割と問題ないようです。

 古い話ですが  KAZZEZ  2024年3月31日(日) 17:46
XsのIDEといえば物理的にHDDが取り外されてフルSCSI化されていると95が起動しない(インストール途中で止まる)という問題も知られていましたが、まさかそれも直るなんてことはないですよね? 仮にハードウェア的な違いに起因するものであればBIOSでは対処できないことになると思いますので(IDEドライバの問題?)。なお前身のBシリーズではそのような問題は無かったはずですが、CD-ROMで待たされる問題のほうは普通にありました。

 X-mateって  まりも  2024年3月31日(日) 23:47
第三研究所のこれですよね、Xsに関する記述
ttp://www.amy.hi-ho.ne.jp/nakajima-jr/com/xmate/xs.htm
以下引用-------
 PC-9821Xs (PC-9821Xp、PC-9821Xe、PC-9821Bp、PC-9821Bs、PC-9821Beも恐らく同じ) が標準で搭載している IDE仕様ハードディスクは、取り外すことができません。取り外すと動作が不安定になったり、ATAPI接続の CD-ROMを認識しなくなったり、外付け HDDに Windows95が正常にインストールできない等、
------引用終わり

HDDが接続されていないというかIDEコネクタの19番ピンがグラウンドに落ちる接続がないと、IDE BIOSが現れません。IDE BIOSが引っ込んでいるとセカンダリATAPIドライブをneccd*のデバイスドライバが認識できません。Int 1Bhフックに失敗するためです。という過去ログにある知見で説明できますが、9821Bは該当しないのではないでしょうかね?これも過去ログの通り、プライマリとセカンダリの19番が導通の稀有な機種だからです。
Win95の失敗の件はやってみないとわからないですね。これ以外にX-mateにはformat /hで表示されるドライブ番号の最後番(SCSI)に重複が起こるという変な(危ない)バグがあります。過去に書いたことがあります。たぶんIDE BIOSと外付けSCSI BIOSの連携でおかしなところがあるのでしょう。

 ダミープラグで対処?  かかっくん  2024年4月1日(月) 1:14
↑についてはプライマリの19ピン(検知)と22ピン(GND)をつなぐだけのダミープラグを差し込めば解決しそーな?
プライマリにもちゃんとデバイスが無いと不具合が出ましたっけ?

何時ものやうに、位置合わせにコネクタのではなく本来の位置の20ピンを折ると間違えなく成増
偶数ピンの列は両端のピン同士(2ピンと40ピン)に導通が有る側デス
# 機種に依り定位・反位様々な為

エイプリルフールでわないデスよ

名前
題名

内容
画像1
画像2
画像3
画像4
修正キー (英数8文字以内)