98システム解析スレッド2023年3月-1 /人'A`;人\ 2023年3月1日(水) 2:14 |
ハイレゾモードのITF/BIOS ROM まりも 2023年3月1日(水) 8:45 |
初代A-mateには表題のものが本体のROMのどこにも無いという事実に数日前に気がつきました。もしかしてハイレゾボードにあるんじゃね?と思って、ボードをバラし上側基板を外すと、なんか銀色のシールのICがあります。そのシールを剥がして現れたのは、NEC D27C2001の文字。うわぁこんなところにROMが居たのか<3/5追記の画像>。 というわけで初代が出た頃にはボード上のROMがハイレゾ時には使用されていた可能性が高いです。ではAp2からはどうなんでしょうねというのが疑問です。おそらく本体側の仕様を変えて、ハイレゾボードのROMは(全然ではないかもしれないが)基本的に使わず本体のを使うように変更になったと考えられます。本当にそうかはハイレゾボード上の27C2001を撤去しても動作するかでわかるでしょう。
大熊猫さんのサイトにあるように、本体ROMの書き換えでIDE BIOSにパッチを当てている人はいるかもしれませんが、初代A-mateではハイレゾの時には働かないということになりますね。
しかし、、、この27C2001 は1.27mmピッチのため直に読み出すのが難しいです。aitendoあたりに安い変換基板ないですかね。
|
初代AとA2以降の違い かかっくん 2023年3月1日(水) 14:03 |
初代AとA2(Af?)以降の大きな違いは ・RAM16M越え、61SIMMから容量可変の72pSIMMに変更(Af以降) ・N/HR切り替えがSWからメニューに変更 とかが有ります(他にも有る)。 詰まり当初の(PC-9821A-E02の)ITFやBIOSでは対応出来なく成ったと考えるのが妥当でせう # PC-9821A2-E02『98ハイレゾボード2』?後方互換有としても賣れるか判らん物を出しはしないでせう # 次代で亦仕様が変わるかもですし、其の際にPC-9821A3-E02『98ハイレゾボード3』を出す羽目に成り # 兼ねないので 因みにえぷ機のHR板は各世代(386GS/GE 486GR*/GF 486H)で専用で、VRAM以外のグラフィックは 本体に有り枡 HR板にはハイレゾ用のROM(BIOS/フォント?)とVRAM、36pのLPTが有り98ハイレゾボードよりずっとシンプルです
|
完成版でも同様です かかっくん 2023年3月1日(水) 21:33 |
>>おまじないドライバのどうしようもない仕様にきづいてしまいました。誰かがATAリセットを不用意に呼ぶとマスタ側にもどってしまいます。読みとり中に一度でもエラーがかかる場合はまともに使えませんね… > おまじないドライバの完成版(2月26日6:00)でも同じということですか? > 詳しくないので、理解に限界はありますが、実機検証では完璧(?)に動いていると思ったのですが、NECCDC.SYSに起因するポリスノーツの問題とは別の問題があるとのことですか?(それとも既に解決済みの問題?)
完成版でも同様です。此のおまじないはセカンダリのIDEポートで操作対象とするデバイスをスレーブの物とする だけで終了し、常駐して都度スレーブを指定したりはしない物ですが、其のポートに対してリセットのコマンドを DRVなりBIOSなり(アプリなり)が送ってしまうと対象のデバイスが初期値(ATAの仕様で決まって居ます)の マスターに戻ってしまい以後動作しなく成ると云う物です。 NECCDCは対象のデバイスがマスターかスレーブか指定して居ません(其れが単純なパッチが出来ない原因)から 通常では初期値のマスターのデバイスを操作します。おまじないに由りスレーブの物が動作します。
|
ハイレゾバグフィックスドライバ まりも 2023年3月1日(水) 21:40 |
ハイレゾボードの添付品には、ハイレゾドライバなるFDがあり、バグ(ハードウェア?ファームウェア?)修正目的とのことですが、この正体はいったい何だったのでしょうね。ひょっとしてハイレゾボード上のROMにあるハイレゾグラフィックBIOSのパッチだったのでしょうか?またこれはAfやAp2からは本体ROMのハイレゾグラフィックルーチンが修正されて、このドライバは不要になっていたのではないでしょうか?
具体的にどこの何を修正するものなのか不明だし、ハイレゾのグラフィックでバグらしきものに遭遇したこともないので、よくわかりませんが。それにしてもミイソは、ハイレゾボードを最初に発売した当時、本体が改良や仕様変更された場合でもハイレゾボードに載せたファームウェアが永遠に通用すると思っていたんですかねぇ。
ところでRLおよびDXのメモリチェック時間を1/2に短縮するというのをやってみました。本体ROMが2個の27C010なのでNIC 100円ライタで焼けます。ただし64KB(NICのハードウェアの制限)を超えるので、最上位のアドレスは手動切り替えできるようNICにスイッチを取り付ける改造をし、128KBのROMデータを上下分割して2度に分けて書き込む必要があります。以前RLのノーマルモードのROM構成をこれで調べた時に配線を間違ってしまい、1月に記事に書いた内容が間違ったものになってしまいました。EPROM時代の本体ROM構成はRLでも他の機種でも同じで、物理アドレス配置はバンク番号昇順で間違い無いです。 ttp://hp.vector.co.jp/authors/VA012947/knowhow/rommap.html <3月5日0:30画像追記>テスト中のRL ダンボール囲いは怪我防止用
|
sound blaster 16 2023年3月1日(水) 22:12 |
>完成版でも同様です。
あ、、、ポリスノーツの問題はNECCDC.SYSに起因する問題だから別とすれば、リウさんのドライバは完璧(?)な解決策と思ったのですが、難しいですね。
|
ケーブルの19ピンをカットして本体から存在を隠す? かかっくん 2023年3月1日(水) 23:07 |
1分待たされるのの対策の一つはおふがおさんの回路ですが、もっと簡単な方法で直ぐに試せそうな物に ケーブルの19ピン(HDD/円盤のコネクタに差したIDEケーブルの【右から19本目】の線。色違いの線からとは 限らないので注意)をカット(カッターで対象の線の左右の節を割いて1本に成った線をカットするとやり易い)して、 本体から存在を隠す方法が有ります。1分待たされる対策だけでなくセカンダリに大容量HDDを憑けて起動 しない対策にも遣えそうです。但し通用しない機種も有るのでご注意。通用しない機種にはおふがおさんの 回路ですな
此れで対策出来る機種か?は両端がバラの40芯ケーブル(秋月C-15868 C-17228等)で、19ピン・20ピン以外を 接続して試すと云う方法が有り枡。 akizukidenshi.com/catalog/g/gC-15868/ akizukidenshi.com/catalog/g/gC-17228/ 既存のケーブルを延長するオスメス(C-17228)がお手軽でせう
ドライブ側のコネクタに下段中央のピンが無かったら、上段左上から右へ順に【白紫緑橙茶】を4回繰り返します。 3回目の白は差しません。下段は左下から右へ【黒灰青黄赤】をを4回繰り返します。3回目の黒は差しません。
上段中央のピンが無かったら180°回転し上下左右が逆に成増。上段左上から右へ【赤黄青灰黒】をを4回繰り 返します。2回目の黒は差しません。下段は左下から右へ【茶橙緑紫白】をを4回繰り返します。2回目の白は 差しません。
下段中央のピン無し ○は無いピン、・は差さない 左上→右上 白紫緑橙茶白紫緑橙茶・紫緑橙茶白紫緑橙茶 黒灰青黄赤黒灰青黄赤○灰青黄赤黒灰青黄赤 左下→右下
上段中央のピン無し ○は無いピン、・は差さない 左上→右上 赤黄青灰黒赤黄青灰○赤黄青灰黒赤黄青灰黒 茶橙緑紫白茶橙緑紫・茶橙緑紫白茶橙緑紫白 左下→右下
ケーブル側も同様に、延長無しと同じ位置のピンがつながるやうにします(手抜きモード)
|
|
IDE 19ピンマスク法 まりも 2023年3月2日(木) 0:28 |
その名付けて「IDE19ピンマスク法」は、HDDを(CDDも)認識しなくなるという意味合いよりも IDE BIOSを表に出さなくなるという意味合いが強いのです。プライマリマスタにHDDを繋いであればBIOS出現は問題ないはずですが、CD-ROMドライブの存在は、見に行こうとすれば見えてしまい、応答してしまうはずです。IDE 19ピンにはIDEの機能はないですから。19ピンはマザーボード側ではGNDに接続されていない代わりにI/OポートF0hのbit6だか5の入力に接続してあり、デバイスの接続があれば(80芯UATAケーブルを使うのも同等)GNDに落ちて0になります。ITFはそれをみてIDE BIOSを出すか引っ込めるかを決めています。
|
バラ線で試して通用しないならレイの回路でしか? かかっくん 2023年3月2日(木) 0:42 |
とすると、プライマリのHDDを認識させてセカンダリの円盤を認識させない方法には遣えませんかねぇ? BIOSの件は知って居ましたが。
バラ線で試して通用しないならレイの回路でしか?
|
SCSI HDD、IDE CDDという運用 まりも 2023年3月2日(木) 0:57 |
プライマリマスタのHDDを繋がないようにすれば、BIOSが出ませんので、IDE19ピンマスクでセカンダリマスタに繋いだCDDは反応しなくなりますが、今度はNECCD*.SYSドライバが応答できなくなりませんかね? int 1Bに中途半端なCDDの機能があるような? そういえばこの構成で19ピンマスクの実験をしてみたことがないですねぇ。 XtやStのような鯖タワー機では有りでしたが、SCSIがあるのなら、IDE HDD、SCSI CDDにするのが普通ですよね。記憶デバイスがみんな壊れ果てた現在ではどうするのがいいのでしょうね、ほんと。
|
SASI HDD、ATAPI CDDという運用 かかっくん 2023年3月2日(木) 1:48 |
IDE HDDとSASI HDDはDA/UA等BIOSでの扱いが同じに成るから併用不可なだけでI/OやBIOSアドレスは ダブって居ませんから、IDEはATAPI円盤だけでIDE BIOS無しならSASI HDDと併用出来る筈です。 併用不可にしたのは手抜きな気もしますが、併用可でもBIOSアドレスが下位のSASIからDA/UAが振られると HDD 1がSASI、HDD 2がIDEに成って都合が悪そうですね
と云うワケで土塗れでジャンクな27板(此の状態で¥500は高価いと思うのは吾だけ?)が届きますた 遣うのはLHA-12Vの方ですが。27板はROMを外して水洗いして部品を採って解析に遣い枡
|
何てこった かかっくん 2023年3月3日(金) 16:18 |
以前知人に頼んでおいたXL^2でのXMZ/FDXMS/HIMEMXの結果ですが、大方の予想を裏切り(?) 386用でも正常に動作したそうです。ぅーむ不動条件は他にも有るのか?最初期〜16BITの386搭載ロットとか まりもさん、ARC98での確認ポイントは何処でしたっけ?其れともA20何某でしたっけ? 此れを調べて貰ったら其れ以上賦課彫りしません。「動作しなかったら286用を使用下さい」と云う事で。 386用の不動報告だけ募集を続けます。 で、FDXMS/HIMEMXのバグっぽい動作はV30や286機に限らず386かつ640K機やCPU Mode Lowでも 再現したので組み込まなかった際の異常動作のやうです
因みにロットですが、本体のロットはシールが讀めず不明なので、代わりにメイン基板の型番がG8AWR、ロット 上4ケタが8800だそうです
|
IDE BIOSが無いとNECCDMは動かない まりも 2023年3月3日(金) 19:52 |
突然XLダブルとは何についての話だろう?と思いましたが、思い出せません。XLダブルでだけ動作しないというのは、本体のA20機構ではなく初期の80386のバグ問題ではなかったですかね? ほとんどのXLダブルオーナーは、ミイソが配布したまともな80386に置き換えていたはずです。その問題とは仮想86に関連したものだったと記憶しています。したがって現存するXLダブルでは普通にXMZやHIMEM系のソフトは動作すると思います。
ところで上で出ていた、「IDE BIOSが無い状況でセカンダリマスタに接続されたCD-ROMドライブはどうなるか」という疑問ですが、やってみたところ、NECCDMドライバがロードされた時点でハングアップになりました。やはりDISK BIOSへのフック(int 1Bhだけでなく11h IRQ9も)ができなくなるのでしょう。「対応したSCSI BIOS」が無いと動作しないSCSI用 NECCDA、NECCDBと同様ですね。
|
PC用のATAPI DRVを移植出来ないか かかっくん 2023年3月3日(金) 22:02 |
でも初期の386DXが原因であれば286式(00F2h)でも動作しない筈では? ミイソが配布 との事ですが有償配布だった気がします。 support.nec-lavie.jp/support/product/data/spec/bod/a535-1.html support.nec-lavie.jp/support/product/data/spec/bod/a536-1.html サードパーティも出して居そうですが! 此の有償配布でいんてる・みいそが叩かれたからか(?)、P5の際には無償交換に成ったのでせう
ところでNECCD*がBIOS(INT 1Bh)を呼ぶのはプライマリとセカンダリの切り替えに関係するとか有りませんか ねぇ? NECCD*はIDE BIOSが無いと動作しないのであれば、PC用のATAPI DRVを移植出来ないか検討して居ます (先ずは切り替えの全く無いプライマリマスターから始めます。DOSはFDかSCSI(/SASI?)から起動)が、EDWARD +CD-SD(又は他のASPI円盤DRV)もIDE BIOSが無いと駄目でしたっけ?
# 簡易的なチェックではINT 13hは呼んで居ない模様、BIOSすら無いSB16のI/Fでも動かせるワケですからねぇ
|
A20ライン制御の件ですか? まりも 2023年3月3日(金) 23:22 |
問題点がわからないのですが、XLダブルで何のソフトが動かないという問題ですか? XMZやHIMEMなら関連するのはA20ライン制御とCPUリセットだけで、仮想86は関係ないでしょう。F2でのA20アクティブは80286機だけでなく互換性維持のため後の98全機種にあります。386用に追加したF6は、「XLダブル以降の386(以上の)機種」という記述がUndoc2にあります。この「以降」が当該を含む含まないという日本語解釈の問題でしょうかね? ttps://www.webtech.co.jp/company/doc/undocumented_mem/io_cpu.txt のF6のWRITEにあります。「〇〇以降」とは〇〇を含むか含まないか。もし含まないなら、XLダブルではCPUをあてにしてF6でA20ラインを制御しようとすると失敗することになります。日本語に詳しい専門家に聞くしかないかも?
で、ちょうどUndoc2のここが引き合いに出されたので新しい疑問を。上でポートF0にIDEの19ピンが読み出せると書いてますが、bit5のREADのことですよね。ところが486X-mate機では、セカンダリのIDEのぶら下がりがbit6に現れるようなのです。うちのXsだけでしょうかね。<3月4日12時追記,これは誤りと判明> SCSIを内蔵する可能性がある機種(FAやA-mate)ではbit6がそれですが、486X-mateではSCSIを内蔵する可能性はないので、流用したのでしょうかね。 なおBX4「以降」のIDE第4世代になるとポートF1をめんどくさい手順で切り替えてF0のbit5だけを読むというように元の仕様に戻っています。「以降」の意味は多数派の用法で書いてみてますがw ttps://www.nhk.or.jp/bunken/research/kotoba/20221101_4.html
|
セカンダリは些細な差? かかっくん 2023年3月4日(土) 1:34 |
はいA20の件デス
『以降』ですが、其処の解釈が微妙で、例えばXMZ 1.02のDOCには --- ■動作環境 i386/486,80286が搭載されたPC98/互換機で動作(ハイレゾ対応)する。 EPSON286シリーズの初期型(PC286STD)では、CPUリセットがPC98と互換性がないため 動作しません。
・i386/486搭載マシン PC9801RA2/5 PC9801LS2 PC98RLmodel2/5/21/51ノーマルモード PC9801RA21/51,PC9801RS21/51 PC9801DS2/5,PC9801DA2/5/7 PC9801NS/E,PC9801NC,PC9801NS/T PC9801NS/L PC9801FA,PC9801FS,PC9801FX PC9801US EPSON PC386/486
・80286搭載マシン PC9801VX0/2/4,PC98XLmodel1/2/4ノーマルモード PC9801VX01/21/41,PC98XL^2ノーマルモード PC9801LX2/4/5 PC9801UX21/41 PC9801EX2/4 PC9801RX2/4 PC9801RX21/51,PC9801DX2/5 EPSON PC286(L,LE,noteを除く) --- と有り枡(ノーマルモードは半角) 意味も無く386機が286用の項目に有るとも思えないので何か有りそーな気もします。 尤も、明らかな不動報告も無さそうですが。 (えぷ386の一部機種は286式だけなので、↑はざっくり杉ですが)
で、セカンダリですが、シリーズにより開発した事業所が違うらしいので些細な差は有る物でせう # Undoc2でも似た機種が違ったり、特定の機種だけ有ったり無かったりしますし で、プライマリとセカンダリは別々に検知するのでセカンダリだけの19ピンマスクは試す価値有りそうです
|
誤記かも まりも 2023年3月4日(土) 12:37 |
単なる誤記という可能性もありますよね。XLダブルでF6使って制御できたということならそういう結論でいいのでしょう。 ところでNECCDドライバはどれも1箇所必ずint 1Bをax=F087hで実行しているようです。それ以外にはBIOSに依存するところはない模様。このファンクションは一体何でしょう?Undoc1のBIOS編には記述がありませんでした。CD-ROM用ファンクションはAH =FFhのようですから、それとも違います。
486X-mateでのF0h bit6の件ですが、いま検証したところセカンダリの接続とは関係がないようです、お騒がせいたしました。しかし何かに流用はされており、他の機種同様のSCSIの内蔵bitだと信じて扱ってはいけません。どうも映像周波数に関連していそうです。またITFを読むとIDE BIOSを出す出さないはF0hのbit5だけしかみていないので、セカンダリのIDE19ピンマスクは無意味という結論には変わりません。
|
BIOSを出すかでなく接続の有無 かかっくん 2023年3月4日(土) 13:36 |
BIOSを出すか否かではなく接続の有無の問題ですから、セカンダリ(F0h2回目)が無ならば態々IDENTIFYで デバイスの検知をするとも思えませんが如何でせう? BIOSが有効でもセカンダリを検知しなければ1分待たされずに済みそうな気もします 其れとも此のフラグはBIOSを出すか否かにしか遣われないんですかねぇ?
因みにウチには此の世代の機種が無く試せません A2にセカンダリを増設してもBIOSはプライマリだけの儘ですから此の検証には成りませんし
|
存在認識とIDE BIOS出現が不可分 まりも 2023年3月4日(土) 18:20 |
接続が無しとみなされれば延々と起動に待たされることはないですよ?ただしそれはBIOSの出現と不可分なので困っているわけです。第2第3世代機のITFでは、2度F0をチェックするのではないようです。なお9821Bsで調べてみたところ、遠く離れたプライマリとセカンダリの19ピンには導通がありました。どっちかにデバイスがぶら下がっていればITFからは接続ありとみなされることになりますし、そこをマスク法で誤魔化したとしても、19ピンはATAの信号に関係ないので、BIOSやデバドラからは認識されてしまう(その結果待たされたりコケたりする)ことになります。
IDE BIOSの処理中のどこで待たされるのかが見当つきませんが、ATAPIデバイスへの不適切なIdentifyが直接の原因ではないような気がします。その後の何かのATAコマンド発行後の処理ではないですかね。
<3月5日0:30画像追記>Bsで「IDE BIOSがセカンダリは見に行かない」はずの状況を意図的に作り出してみたのですが、画像のようなことになりました。セカンダリマスタのCD-ROMドライブを2台目のHDDとして認識してしまっていますね。アクセスに行こうものなら数分間ダンマリになります。もちろん起動時にも待たされることには変わりません。プライマリマスタにCD-ROMドライブを接続したリウさんの報告でもHDDと誤認しています。 identifyの結果を見てATAPIだったら何もしないというようなルーチンを付け加えればよいということになるのでしょうかね。
|
ついったはすぐ流れてしまいますので リウ 2023年3月5日(日) 1:44 |
画像を取り出してきました。 Xfでプライマリマスタに本物のIDEのHDD(2GB) セカンダリマスタにCDR-1700Aをつないだときの起動メニューの表示です。 HDDと誤認されIDEのHDDからDOS6が起動不可(待てなかった…)でした。
ところでV166のPCI-BIOSですがDB00を使っています。IDE-BIOSを使わないまま起動し、Cバスのカードで壁こえSCSIを使おうとすると(表側をDB00に強制的にコピーするはず!!)とんでもないことが起きるはずであることに気づいてしまいました。手一杯ですので修正は後回しになります。
|
レイの回路しか無いのか かかっくん 2023年3月5日(日) 3:22 |
むぅ、矢っ張り19ピンマスクだけでは駄目dsk BsでPとSの19ピンが導通でしたら片方だけマスクしても無意味ですね レイの回路しか無いのか # 此んな単純な仕組みで隠せればおふがおさんが気付かないワケ無さそうですが
|
IDE無接続でBIOSが引っ込まない機種 まりも 2023年3月5日(日) 6:06 |
IDEに何も接続がないとIDE BIOSが引っ込むというのは、A-mate初代からずっと仕様だったのですが、PCIのmate-R RaII以降およびmate-X/Wの最終の頃の機種(Xa200)だけは、接続がなくともIDE BIOSが隠れません。これに関連してIRQ 9の解放(他のデバイスへのリソース流用)もできなくなっています。何を目的とした仕様変更かわかりませんが、IDE BIOSの存在を前提にしておきたい何かがあったのでしょうかね。
|
割り込み処理をするIDE identify取得 まりも 2023年3月8日(水) 20:39 |
ideinf だと第2第3世代機ではIDEデバイスに触った後にフリーズする問題があります。極力IDE BIOSがやっているとおりにすればいいかなということでATAコマンド発行後の割り込みに応答するようにしたものを作ってみました。といってもほとんどBIOSコードの真似みたいなものです。 追加したのは ・システム共通域0000:055Fh bit0の割り込み通知フラグを立てる ・I/O 0433h に1を叩く です。IDE BIOSワークエリアの D800:20XXのどっかも整合性を持たせた方がいいのでしょうけど、ここは機種依存性が強そうなのであきらめました。とりあえずこれだけでフリーズもどきは起こらなくなるようです。
しかしBIOSが関知しないIDEデバイスを直に探しに行こうとすると、この方法ではデバイスがぶら下がっていないと無限ループでハングアップになります。そこはしょうがないのでステータスレジスタを読みに行くループで対応するしかありません。IDE BIOSが確立する段階より前ならいいのですが、それ以降だと整合性といっても難しいです。
プライマリマスタにATAデバイスは普通接続していると思われるので、 セカンダリ/スレーブ→→プライマリ/マスタ の順に処理をすることで、最終的にはBIOSとの整合性がとれるようになりそうです。
ということでIDEDEV というプログラムを公開しておきます。全ソースつきです(CとASM混在)。デバイスの種類で CF,SATAを識別して表示できるようにしてみました(画像)。ATAPIはモデル名のみIdentify ATAPIで取得し、結果を表示します。標準出力に表示するので、リダイレクトで結果を取り込むこともできます。ideinfと同様に、-d0 から -d3 のオプションをつけると、そのIDE portのデバイスの詳細を表示しますが、1画面で流れないようにしたかったので、98のIDEで関連ある情報だけにしました。パワーマネージメント関連の能力装備の有無は要らないでしょう。 ttp://hp.vector.co.jp/authors/VA012947/util/idedev.html
<9日14時追記> rmv表示で見えてしまうCD-ROMドライブは、Identifyに中途半端に応答してしまう(ゴミが読み出される)古い仕様のドライブかと思います。画像2はうちで一番古いNEC PC-CD60DRです。一般的なCD-ROMドライブはこれに反応せずデータを返しません。その場合にこのプログラムではIdentify packet deviceでやり直すようにしていますが、先にIdentify packet deviceで見に行った方がいいのかもしれませんね。
|
PC-CD60DRというCD-ROMドライブ まりも 2023年3月10日(金) 9:53 |
という、X-mateの頃に標準で載っていたCD-ROMドライブは、セカンダリ・マスタに接続して起動時に1分間待つことはありません。対応ドライバはneccdD.sysのようです。しかしこれを接続していると、他のHDDなどからの割り込みが返ってこなくなるみたいなのですよね。またneccdM.sysはこのドライブがあるとハングアップします。本当にneccdD専用のようです。さらには、IDE 4台接続可能機のセカンダリ・マスタにこのドライブを接続した場合にF8E8:10の接続情報がおかしなことになります。スレーブは無接続なのに接続フラグが立ちます。普通のATAPIドライブをセカンダリ・スレーブに接続してあるのにこの接続フラグが立たないバグ仕様のほうは知られていると思いますが、その逆です。
それからこのCD-ROMドライブ(たぶんCDR-1700も?)は、Identifyで読むとでたらめな値を返してくるのですよね。そのため読み出したバッファを精査して、256ワードぜんぶ同じ値なら無効にして、Identify packet deviceで読み直すという処置を追加する必要がありました。
モデル名もバイトオーダーがおかしいです。やはりATAPIの規格が固まる以前の独自仕様のCD-ROMドライブなのですかね。スレーブ接続に変更しても同様です。idedevをあちこち修正(画像4)しましたが、このドライブだけは接続されているとどうにもなりません・・・
それから古いHDDもいろいろ変なことだらけです。D3765というNECドラブをマスターに接続してあると、スレーブは認識できません。Native CHSは物理的な値っぽいですが変更できない固定仕様のようです。さすがIDE BIOSの「特別扱いブラックリスト」に載っているモデルだけのことはあります。マルチプルセクタR/Wはサポートしているらしい(ATA規格に沿わない独自仕様?)のに装着本体9821Bsでは機能していなさそう。実際ものすごく遅いです。D3766はハードウェア的にはマシですが装備機能的に「NOT」が多いです。マルチR/Wは最初から非装備。D3772は壊れていてテストできず・・・
|
|
とても興味深いモノですね リウ 2023年3月10日(金) 12:30 |
D3765がコマンド91hへの応答をしないようですがBIOSでのSENSEの返事はこの場合だけは8:17にならないということでしょうか?
|
BIOSでは8:17 まりも 2023年3月10日(金) 12:44 |
BIOSを介すると8:17になります。8:17で受けたCHS→LBA→Native CHS でドライブに送っているのではないでしょうかね。直にCHS to CHSのアドレス変換ってどうやるの?って思いますので。
|
何故全部然うしなかった? かかっくん 2023年3月10日(金) 22:42 |
其れなら何故全部然うしなかった?とか疑問ですが、此の仕組みはIDE HDD初採用のNSからの気がしますから パフォーマンスの面で91hに対応しないのだけに限ったのでせう と云う事は此のルーチンが有ると云う事ですから判定部をツブして全部然うするとか?
|
CDR-260というCD-ROMドライブ かかっくん 2023年3月10日(金) 23:46 |
Ce2やCs2にCDR-260が遣われて居ますが、CDR-260にはPC-CD60DRに有ると云われているATAPIモードが 有りません。中のROMはCDR-260が256、PC-CD60DRは512で倍に成って居ますが半分(確か後半)がFFhで未使用だったやうな?
で、ジャンパを変えると確かATAPIに成った(PCで動作した、98では起動時のランプ点滅が停まった)気が しますが何処のジャンパか?は忘却の彼方です # 四半世紀も前の噺なので勘弁 確か竹ノ塚方面の同人サークル板辺りを参考にした気がするので当時のログを発掘すれば出て来ますが 230のMOでHFSフォーマットなので出て来れば讀めるでせう
|
やっぱり専用インターフェイスじゃ まりも 2023年3月11日(土) 2:06 |
珍しく夜更かししてこのゴミデバイスと格闘していますが、PC-CD60DRがまともなATAPIデバイスだなんて思えません。Identify Packetをこのドライブに対して発行し割り込みを受け付けると、以降IDE BIOSがおかしくなるようなのです。それもシステム再起動しないと治りません。面白いことに、このゴミデバイスにIdentify packetを送った後は、I/O 433hから読み出される値が02hとなっているのです。ここは1を出力しても読み出しは常に00なので、明らかにおかしな状態になっています。このゴミデバイスがどこかに繋がっているとneccdmドライバがインストール時フリーズしてしまいますから、普通の作法が通らないことを裏付けているでしょう。
IDE第2第3世代機では起動時待たずに使えるとは言っても、ゴミはゴミです。このゴミに最適化?してあるIDE BIOSの方も問題ありなわけですけどね。
ということで、idedev は、指定のポート番号のスキャンを除外するというオプションを付けて「対応」することにします。CD60DRとかCDR260が繋がっている時は除外してもらうしかないです。
HDDのD3765もゴミですが、ミイソのやることなので、ATAコマンド91h以外の独自の方法で8:17になる命令を送っているのですかね? 【3月15日追記】D3765などを特別扱いするルーチンの無い第4世代機に繋いだところ、BIOSのint 1B,AH=84 のsenseファンクションでは0シリンダ8ヘッド17セクタを返してきました。普通に既存の領域が読み出せます。何故0シリンダになる?それでも普通に動作するのも不思議です。ちなみにフォーマッタの類は容量ゼロのため誤動作します。
|
ジャンパについては リウ 2023年3月11日(土) 8:58 |
ttp://ematei.s602.xrea.com/junk/cd60dr.htm ttp://cham-reo.com/logsearch/Log.aspx?c=maniax&d=20000522T145245&id=5965 ここ(本当の意味でここ)にありました。しかしおもしろいですね。
|
CD60DRのJ3をJ2 まりも 2023年3月11日(土) 14:34 |
なんと灯台下暗しですね。エマティさんが当時このゴミCDドライブに関心を持っていらしたとは。 確かにジャンパ3のピンを2に移動すると、普通のATAPIドライブのような振舞いになります。また連動して勝手にスレーブにもなるようです。なおidentify packet deviceで読み出される内容には違いはありませんでした。というより、モデル名など文字列を除くとほとんど情報がないのですよね。
<12日16時追記>特定ポートの除外とウエイト時間調整のオプションをつけて、PC-CD60DRなどのヘンテコデバイスを回避できるようにしました。1.00バージョンになります。当該デバイスを回避してもういちど実行すればIDE BIOSのハングアップもどき状態から回復できるようです。なおUndoc2にも詳細がなくBIOSコードにもない、I/O 433hのREADの機能ですが、正常なときは常に00が読み出され、異常なときは 00以外が読み出されるようです。02hや03hが読み出されましたが、その意味までは不明です。
<14日1:00追記>バージョン2に一気上げです。BIOS による接続情報を一切使わないようにしました。勝手にslaveに接続したものも正しくアクセスできるようになりますが、素性不明な物にアクセスしようとして失敗しやすくもなります。割り込みが発生しない場合もあるので -P という割り込みを使わないオプションを新設しました。どうも、マスタに何も繋いでなくてスレーブにATAPIデバイスを繋いだ場合は、デバイスからの割り込みが発生しないようなんですよね。ATAPIとはそういう仕様なんですかね?
<14日16時追記> I/Oの0433hですが、IDE BIOSの割り込み処理ルーチンでこれを全くいじっていない機種があります。それはセカンダリがないAp2/As2,An,Ap3/As3 なんですよね。これを叩くコードが抜かれています。ということは機能としてはポート切り替え処理の補完であろうことは間違いはないでしょう。
いっぽうI/O 0430h について。初代A-Bmate,Ceにはなく、読み出せばFFhが返ることで機種判断できます。どうも第2世代では読み出すと00hのようです。Undoc2では01にもなりうるような記述ですが、なった試しがなく、条件が不明です。第3世代機(Anは含むことにする)とそれ以降では40hが固定値で返ります。このbit6をもって「セカンダリがある機種」としてしまうと第2世代が漏れます。「スレーブがBIOSで使える機種」とすると第3世代期が反してしまいます。なかなか難しいところです。IDEDEVでは、とりあえずFFhを返さないものは「セカンダリやスレーブにアクセス可能」という意味で使いました。初代mateやCeで間違ってセカンダリまで見にゆこうとしないためです。切り替わらないので、セカンダリはプライマリと同一のイメージが現れるような状態になります。
|
新たなCFリセット条件 リウ 2023年3月17日(金) 11:23 |
としてNECCDMとの合同で昨日発見したものですが、結局はATAリセットを呼んでいました。原因はBIOS内のステータスチェッカでした。データ転送を含むATAコマンドを発行した後にIO64ehの状態が58hになります。この状態を放置したまま終了しておくと、BIOSがATAコマンドを発行しようとしたときにATAリセットを呼ばなければいけない状態になります。 確実に起こすにはIO64eに0xecでも発行した後に、640hからのデータを全部受け取らずに終了、そのままInt1BでREADをやろうとすると発生します。 NECCDMのどの部分がこれに相当するのかはわかりませんが(以下原因追記)、必ず起こります。 1135追記 identifyコマンド後にCDドライブかどうかの返事がIO64Ahと648hの返事(ebh と14hが帰る)でわかるのですがこれだけを確認して後始末を何もしてなさそうです。(パッチするならここでしょうが大掛かりになりそうなので諦めます。)
|
2がスレーブ、3がCDDモード? かかっくん 2023年3月19日(日) 0:06 |
> 確かにジャンパ3のピンを2に移動すると、普通のATAPIドライブのような振舞いになります。また連動して勝手にスレーブにもなるようです。なおidentify packet deviceで読み出される内容には違いはありませんでした。というより、モデル名など文字列を除くとほとんど情報がないのですよね。
2がスレーブ、3がCDDモード(?)のジャンパですかねぇ?2と3の両方にするとCDDでスレーブに成りますか? # CDDのパッチは既知のものと(略)
> <14日1:00追記>バージョン2に一気上げです。BIOS による接続情報を一切使わないようにしました。勝手にslaveに接続したものも正しくアクセスできるようになりますが、素性不明な物にアクセスしようとして失敗しやすくもなります。割り込みが発生しない場合もあるので -P という割り込みを使わないオプションを新設しました。どうも、マスタに何も繋いでなくてスレーブにATAPIデバイスを繋いだ場合は、デバイスからの割り込みが発生しないようなんですよね。ATAPIとはそういう仕様なんですかね?
元々ATAPIデバイスからは割り込みが出ない説も?マスターのATAPIからは出てスレーブからだけ出ませんか?
|
ATAリセットに行く可能性があるところはIDE BIOSの至る所にあるのだからCD-ROMドライバにも当然あるでしょうけど、CFの実験中にneccdmドライバを有効にしていたことはなくて気がつきませんでした。ideflags実行でもATAリセットは必発ですがそれについて言及されたものを見たことがありません。CFを使う派とATAPI CD-ROMドライブ使う派はカブることがなかったということでしょうかね。個人的にはSCSIのCF変換かつSCSI CDドライブ派なので、CFリセット問題が浮上するまで全く気にも止めていませんでした。
ところでFreeDOS(98)上でのIDEDEVですが、表示画面で改行が一つ多く入るようですね。これはNEC独自2バイト半角という凶悪な文字セットをあえてIDEDEVで使っていることが一因でしょうが、FreeDOS側でのその処理にも少しNEC DOS非互換なところがあるのだろうと思います。「80桁」いっぱいまで表示してから改行となっていますが、このときFreeDOSでは「80バイト」進んだので自動改行した後にIDEDEVが改行を入れるモノだからダブってしまうのではという気がします。FreeDOSの方で対応していただくのが互換性向上という点ではよいのですが、とりあえずIDEDEVの方でも表示桁数を減らして対処しておこうかと思います。IDEDEV側で80桁いっぱいまで表示の後の改行を入れない、という手もありますが、リダイレクトして画面の標準出力をファイルにした時にまずいことになりますから、桁を削る方向で。いや、でもファイルにしたときにはそもそもNEC独自凶悪文字を使わない方がいいのですよね。ANK半角しか使わない標準出力に被せて画面上では凶悪文字をVRAM直書きするという方法も検討しますか。そういえば自分のVRAM直書きルーチンもリアル桁数でなくバイト数で行送りしていました(汗 <15時追記>どうも2バイト半角文字の問題ではなくて、FreeDOS(98)では80桁目まで行くと次の文字出力を行うより前に改行してしまうことが原因のようです。IDEDEVのソースに添付しているANK罫線バージョンでも改行が連続しました。
|
光学ドライブドライバの一覧 リウ 2023年3月20日(月) 21:39 |
バイナリを覗いたものと手持ちで動作したかどうかの結果を報告します。 どうやら調べたものはRvII付属CD内のDOS6アップデータ内に入っているもののようです。
A B ともにSCSIのNEC製ドライブ用 SCSIBIOSが必要 AとBの差はよくわからず
C Sony用だがベンダチェックなし CFリセット発生しない セカンダリ側の割り込みを封印する D NEC用だが古いものだけを通す(パッチをしてCDR-1700Aでテスト) CFリセットが発生する E TEAC用 CD-48Eでテスト CFリセット発生しない F MKE用 CR-583でテスト CFリセット発生しない G TOSHIBA用 XM-1202Bでテスト CFリセット発生しない H 4連装ドライブ専用 Cx13付属ドライブでテスト CFリセット発生しない(新しいNEC製ドライブが通るかも?) J Sony CD-R CDU924S専用 SCSI用?未チェック K Rv付属PDのCD部用 第4世代IDEチェックが含まれる f8e8:0010が立ってない場合使えない ideflagsで回避可能 現LBAパッチでF8E8:0010が立たないことを確認済み CFリセット発生しない PCRBIOS.SYS PD用 Kと同じチェッカがある CFリセット発生しない M CFリセットが発生する 第4世代かどうかで動作が変化する?
JがSCSI用と初めて知りました。 22日追記 Jの専用ドライブプロテクトを外して汎用にするパッチ アドレス16A9hの74hをEBhにするとどうやら汎用になる気がします。 ID2のTEAC CD-R58Sでは問題なく読めて音楽も鳴りました。(ベンダ特有コマンドが必要な面倒なデバイスはダメと思います。) DOS6のアップデート版からWin98付属まで全て同じファイルのようです。
|
IDEDEV 2.01 さらに2.50 まりも 2023年3月20日(月) 22:19 |
2.00で IDEDEV -p オプションは「割り込みを使用しない」としていましたが、実際には使用されていたかもしれません。割り込みが発生する前にポーリングしてreadyを確認して次のステップに行った後に発生していた可能性があります。クリック音が聞こえる場合がありました。
割り込み処理を待たずにポーリングすると何がどうなるのか、デバイス関連の動作って正直よく理解できていないのですよね。
とりあえず2.01にあらためて、-pオプション指定時は割り込みのフックをしないことにしました。このとき割り込みが発生するのであればIDE BIOSまたはCD-ROMドライバ内の処理ルーチンが使われますが、IDEDEVでの処理と整合が取れないで起こる可能性はあります。基本的にideflagsの実行時と同じですから、第2第3世代機ではIDE BIOSの状態が正常化するどころかおかしくなる可能性の方が高くなります。そもそもは-pオプション無しが正義なのですが、PC-CD60DRのような古いゴミドライブ接続時におかしなことになるだけなので、そのような場合は使わないでくださいということにしておきたいと思います。
なお2.01ではFreeBSD(98)を考慮して、80カラムまで表示に使わないようにしたほか、ソースファイルの終端のテキストファイルEOFコード(アスキーコードの1Ah)を付加しない仕様にしました。DOS環境ではエディタが勝手に付けるのが普通ですが、コンパイラ処理系によってはこれがあると困るらしいので。実際EOFコードを当てにしてテキストファイルを読むなんていうことはまともなプログラムでは行わないので、もはや無意味有害な1バイトだと思います。
>RvII付属CD内のDOS6アップデータ内に入っている RvのPDドライバってどこにあるのだろうと思ったら、FDでの供給ではなく、そんなところにあったのですか。こりゃ手に入りにくいわけです。
<21日8時追記> 割り込みでタイムアウトしているのを音で検知するための -B というオプションを追加してバージョン 2.50としました。接続されていないポートではタイムアウトは当然なので音が鳴りますが、それは異常を示すものではありません。接続されているのに鳴るようなら異常(このソフトのバグ含む)です。
|
EOFコード かかっくん 2023年3月21日(火) 0:49 |
EOFコードと云えば、嘗てCP/Mで(中略)、FCBしか無かったDOS1.xやMSX-DOS1.xでは(中略)、ファイルハンドルが 導入された両DOS2.x(以降)では両DOS1.x用のプログラムの為に遺されますた ところがDOS2とDOS3+で返値の各パラメータのアドレスがズレて居て(中略)、結局DOS1用のプログラムは DOS2迄でしか遣えない事に成ります。遅松! # FCBもかよ?、互換性を犠牲にして迄の機能拡張は要らなかったンぢゃね?
で、FCBならEOFが要るのか?と云うと両DOSのFCBの返値にはCP/Mには無いファイルサイズのパラメータが 有る(此の時代に32bit!)ので不要なワケです。要るのはDOS BASICのファイル位です。MSXでもCP/Mとの 互換性を無視すればBASICのシーケンシャルデータを除き不要に成増。
結局EOFが要るのはBASICとCP/Mと云う事に成りDOSでは本質的には不要と云う事です。個々のプログラムでの 要否は別です
CP/MがDOSより優れた点はファイル末尾〜128バイト単位のレコード末尾がEOFで埋められるのでゴミが書き 出されない点位ですか
|
IDEの接続情報にゴミが入るX-mate まりも 2023年3月21日(火) 8:03 |
IDE第3世代機(X-mate)では、ideflagsで表示すると接続されていないIDEポートにゴミ文字列(制御文字コードなど)が表示されます。たとえばプライマリだけに接続していてセカンダリに接続が無い場合です。 この現象は割り込みを使用しないでアクセスすると必ず起こるようです。割り込みを使用した場合には発生しません。IDEDEV ではゴミをクリアするなどというお節介を行って表示、さらには無接続の判断にまで使っていますが、そもそも割り込みを使えばいい(そうでない手段は不適切である)だけの話なのかもしれません。
|
|
|