月が変わりましたので、スレッドをたてさせていただきます。
ディスクブートからの再起動ツールDISKOOTを大幅に改良しました。バージョンが1.xxからなぜか2.xxを通り越して3.xxになっていますが、DOSアプリとIPLwareアプリのバージョンがずれて面倒になったためそろえました。 ttps://www7b.biglobe.ne.jp/~marimo9821/knowhow/diskboot.html
DOSが介入するシステム共通域である、0:0460hからのSCSIのパラメータテーブル32バイトも保存するようにしました。同様にDOSが変更するメモリ容量パラメータ0:401,0:594に加えて、任意のアドレスを登録・削除してカスタマイズできるようにしました(上級者向け?)。もしDOSが勝手にいじってそうなところが見つかれば、追加するとよいでしょう。逆にDOS(のプログラム)で設定したものを保持したい場合は、登録しないほうがいいでしょう。
EPSON機に関してはチェックするけども動作はするようになっています。コマンドオプションを指定しないとうまく再起動できないそうですが、対策はわかりません。相当初期の98から変化のない仕様的なところなので、不思議です。なおV30,8086機、ハイレゾ機では全然テストしていないので、バグが見つかるかもしれません。80286-386機もテストしていませんが、そこで引っかかる理由はないと思います。
【12時追記】SCSIパラメータテーブルを保管するようにしたのは、MS-DOS(NEC版)がMOドライブのパラメータに対して変更を加えるからです。ひょっとしてこれをやっておかないとMOからの高速リブートができないのではと思いました。EPSON版DOSがMOのSCSI IDのパラメータに変更を加えるかどうかは、未だ調べていません。テーブルを保管しておいて再起動時に元に戻せばなんの問題もないはずですから、やっておく意味はあるでしょう。この辺のことはHSBのソースを見れば書いてあるのでしょうが、読み解くより作るが早いということで。
|
|
内蔵タイマーでCPU周波数計測 リウ 2024年11月1日(金) 0:33 |
修正 |
結局おもしろそうに思って作ってしまいました。 www7b.biglobe.ne.jp/~drachen6jp/cputimer.zip Windows98のインストーラが66MHzを確認してる部分のアイデアの盗用です。 (なおその部分はバグっていると指摘しました。www7b.biglobe.ne.jp/~drachen6jp/EPSON%E6%A9%9F%E3%81%ABWindows98.txt)
プロテクトモード中に割り込みを使わず時間を制御するためのIOを探してこれしかなさそうだ…と仕方なく弄り始めたらこれになっていました。
11/4 21:40 使っていただいた皆様方 バグ報告ありがとうございます。未だになおせていません。ソース覗いてびっくりしてください。とんでもないです。V30が思った通りの挙動をしてくれなくて困っていますが、まあこれも楽しめる心意気になれるよう努力します。 11/5 17:45 なおしたつもりです。Cyrix5x86だけは手元にあったので特殊処理を入れていますが、486互換CPUはまともに測定できないと思います。 21:53発見 なおせていません。たまたま動作しますがV30時にxlat(TRANS)を使うつもりでD7hをE7hに間違えています。
|
NSのIDE BIOSの似非RAMイヒ かかっくん 2024年11月1日(金) 4:09 |
修正 |
先月号に具体的なやり方が無かったので V86を遣い枡から当然デスがUR/UFでわフカと云う事で。
IPLwareでEMS RAMかVRAMを間借りしてIDE BIOSを写して、DOSを起動後VEM486/LEMMで元のBIOS部を 前後に余裕をとってUMBイヒして(此の部分にVEM486/LEMMが常駐しないやう注意)MCBをいじって DOSの管理下から外して (UMBがジャストサイズだと此れが出来ない)似非RAMイヒし枡。序でにC*とかに 移動すると善い鴨 # A5-A7に収まり枡か?
尚『似非RAMイヒ』で1単語で、『似非RAM』とわ無関係デス
|
IDEから起動しないとして まりも 2024年11月1日(金) 13:43 |
修正 |
各社(者)の仮想86EMSドライバにHD BIOSを移動させるオプションがありましたよね。/movehdbios みたいなオプションをつけるやつです。元のBIOS ROMと同じアドレスに設定することはできたのでしょうか?ふと疑問に思いました。勝手に12KBキメ打ちでA5-A7でしたっけ?UMBを連続で確保したいがため、BIOSは移動させたくてしょうがない時代だったので、同アドレス移行は試しも考えもしていないです。
ただのRAM化ならいいですが、IDE-BIOS-LBA-patchの場合は結構大変だと思います。やはりEMMが動き出すまではパッチをしたIDE BIOS全体を、一旦はVRAMなりハードウェアEMSなりN88BASICの裏RAM BIOSなり、どこかに移動しないといけないので。IDEから起動しない(FD起動にする)制約をつければ、もっと裏技はあるかも?今ならOSFDIPLwareがあるのです。そういえばノート機のFD互換RAMドライブでOSFDIPLwareを試したという話を聞いたことがありませんが、起動は速いので、IDE起動と比べて悪くはないと思います。
|
また別のSD-CF MCtek 2024年11月1日(金) 15:15 |
修正 |
前々から気になっていた、SAGE MICROのINIC2051が載ったSD-CFアダプタをやっと手に入れました。 ICの刻印と型番をみてアレ?と思った通り、一時期SCSIボードでよく見かけたinitioが買収され、現在のSAGE MICROとなっているようです。
結論から申し上げますと、別のデバイスやOSFDIPLwareでLBA_IDEを組み込めばきちんと動作しました。 ですが、これ自身からはIPLを正しく起動することができませんでした。IPLwareでは、(モジュール名) CHECKSUM不正と表示されます。 タイトル画面が表示されるところを見ると、先頭のセクタは読めているのかもしれません。CHSモードが正しく動いていないのではないかと勘繰っていますが、まだ中身を覗いたりはしていません。
なんとかして先頭シリンダだけでも正しくアクセスできるようにしてやれたら、使い物になりそうなんですけれどね…。
|
OSFDIPLware>IPLware ? まりも 2024年11月1日(金) 16:41 |
修正 |
これも現状では「FD起動なら裏技」の例になってますね。 8ヘッド17セクタですので、CHS変換がどう間違ってもLBA 16番地のセクタまでは正しく読めます。98ではIPL、固定ディスク起動メニュー(NEC版2. 20以上)、IPLwareローダまではセクタ番地16以内なので行けるのですよね。いっぽうIPLwareアプリは少なくとも次のヘッド番号以降にあるので、変換が間違っていると正しく読めなくなります。16ヘッド63セクタ対応の4.3GB壁なし機で壁以上の容量(8GB-32GB)のSDを使うなら、62番地まで行けるので、そこ以内にIDE-BIOS-LBA-patchがうまく置かれればなんとかなります。
ATAデバイス側のCHS変換機能はもうobsoleteとなっているので、SD-CF/IDEのファームウェアは実装していない可能性は高いです。ファームウェアを改造するしかなさそうです。
「IDE-BIOS-LBA-patchのROMアプリ化」というのも別解としてはアリですが、かなり大変だし、ノートPCでは使えない技になります。でも考えてみますかね?とりあえずIPLwareはアプリをロードするときはLBAでDISK BIOSを呼んでいますから、IDE BIOSのLBA-->CHS変換ルーチンだけROMアプリでぶっ壊しておけばよいかもしれません。LBAのまま素通しで呼ぶというだけの軽いROMパッチがどこまでできるか。
|
98内蔵インターフェース リウ 2024年11月1日(金) 18:09 |
修正 |
自作LBA用BIOSに総とっかえしてやる!、というのもありとは思うのです。(mistressはそれをやってると勘違いしてたくらいですし。)じっくり時間をかけて取り組めばそんなにひどくはないものができあがるとは思います。まあ構想だけでなかなか手は動きませんが。 PCI機以降はD800をUMBにしないほうが良いので第四世代BIOSをUMBに移動した人はほとんどいないと思います。 で、LBA化されたBIOSのUMBへの移動は、今の仕組みだとできないです。DA00セグメント直接指定のfar callがたくさん入っています。ここはpush csかアドレスの2000h後ろをやればnear callに変更できますので直すことは可能です。(そうすると一時的に裏EMSに保管し、仮想86でUMBへ移動、の流れは可能になると思います。) なぜそうしてこなかったかといえばBIOSCALLでD900直接指定の256色関係のルーチンがあるからどうせ動かせない、ということも頭にあったのです。
ただNSの人からの返事はないのでもう満足してしまったようです。 追記(23:04) おっしゃられるようにこちらは満足しておりませんので、NS/Aあたり(11/5ぴぽらなくなってました 泣)を使って実際にやってみようとは思います。多分可能だとは思います。動作するNS NS/E NCが手元に来れば別ですが。
checksum不正、8G壁機でCHSをネイティブから変更しているとリセット後に発生する場合がありました(ので今は8G機判定を通るとメディア側はネイティブのままにしています。)。位置次第で失敗可能性があるのですね
ところでEPSON機のHDDのinitializeで変な挙動はでています。過去の報告全てをまとめたわけではありませんがIO 74Ehに規格通りの反応をしないものがそこそこありまして、それが少し原因に見えています。が完全な解明には全く至れていません。
|
V86のBIOS移動って かかっくん 2024年11月1日(金) 22:36 |
修正 |
> 各社(者)の仮想86EMSドライバにHD BIOSを移動させるオプションがありましたよね。/movehdbios みたいなオプションをつけるやつです。元のBIOS ROMと同じアドレスに設定することはできたのでしょうか?ふと疑問に思いました。勝手に12KBキメ打ちでA5-A7でしたっけ?UMBを連続で確保したいがため、BIOSは移動させたくてしょうがない時代だったので、同アドレス移行は試しも考えもしていないです。
確かBIOSの移動わ移動先にRAMを割り当ててから内容を写すか、RAMを割り当てずに只単にアドレスのマッピングを 変えるだけの気がし枡から同じアドレスに割当出来なかった気がし枡 ↑が何方かわ起動後に空きEMB容量を確認するか移動先の内容を変えられるかで判り枡
VEM486の場合わVRAMからA5-A7へ移動出来そーな? 確かSCSI板だったかIDE-98だったかにRAMイヒの小ツールが憑いて来た気がし枡がRAMイヒと移動で ベンチ結果が違ったやうな?
> ただのRAM化ならいいですが、IDE-BIOS-LBA-patchの場合は結構大変だと思います。やはりEMMが動き出すまではパッチをしたIDE BIOS全体を、一旦はVRAMなりハードウェアEMSなりN88BASICの裏RAM BIOSなり、どこかに移動しないといけないので。IDEから起動しない(FD起動にする)制約をつければ、もっと裏技はあるかも?今ならOSFDIPLwareがあるのです。そういえばノート機のFD互換RAMドライブでOSFDIPLwareを試したという話を聞いたことがありませんが、起動は速いので、IDE起動と比べて悪くはないと思います。
↑の通り、一旦EMS RAMかVRAMを間借りしてLBAパッチをし枡。int 1Bhのエントリも必要に応じて←に 変え枡
> ただNSの人からの返事はないのでもう満足してしまったようです。
本人が満足しても周りが満足しないのが此の界隈の(略) のて機のBIOSわNSに限らず可成り後年迄ROMの儘でしたから無駄にわならんでせう
> 8ヘッド17セクタですので、CHS変換がどう間違ってもLBA 16番地のセクタまでは正しく読めます。98ではIPL、固定ディスク起動メニュー(NEC版2. 20以上)、IPLwareローダまではセクタ番地16以内なので行けるのですよね。IPLwareアプリは少なくとも次のヘッド番号以降にあるので、変換が間違っていると正しく読めなくなります。16ヘッド63セクタ対応の4.3GB壁なし機で壁以上の容量(8GB-32GB)のSDを使うなら、62番地まで行けるので、そこにIDE-BIOS-LBA-patchがうまく置かれればなんとかなります。
IPLwareでなく別のLBA 16迄にコードを置く仕組みでLBAパッチするか、IPLwareをLBA 16迄の空きにも 置けるやうにするかdsk? みいそメニューでなくBSDメニューなら空きが有りそーな? 或いわLBA対応ストレージ専用版「通常版が動作不良の場合はこちら」として、IPLwareローダがモジュールに 直I/OでLBAアクセスするとか?
|
OSFDIPLware >>IPLware まりも 2024年11月2日(土) 11:26 |
修正 |
ttps://x.com/zinfyk/status/1852397186677649448 この手の偽IDEドライブは得てしてCHSモードをサポートしていません。その場合IPLwareのローダを入れるところまでしか到達せず、アプリを入れても起動できません。「チェックサム不正」はその通りなのですが、もう少し丁寧なエラーメッセージがこれからは必要かもしれないと思いました。発生理由のほぼ全てはこれだからです。その他の理由としてはIDEのBIOSセクタ長を切り替えてしまった場合などで発生します。
とりあえずの対策は、FD起動でIDE-BIOS-LBA-patchを実行する、つまりはOSFDIPLwareの出番です。OSFDIPLwareはFD起動するものだと思われているかもしれませんが、いったんFD上にあるIPLwareアプリを実行してから(Hのキーを押して)HDブートするツールだということはもっと周知されてほしいところです。この使い方ではOSの入っていないブランクなフロッピーにインストールしても構いません。
>IPLwareローダがモジュールに直I/OでLBAアクセス 現バージョンでは許されるコードスペースが512バイトしかないので、SCSIとの共用も考えると無理です。 ただしローダの次の1セクタ(番地16)は使えます。IPLにある、固定ディスク起動メニューをロードするサイズにもパッチを加えないといけないのですが、ちょっと検討してみますかね。最大の問題は、Windows 2000(PC-98版)の署名と完全に被ってしまう点です。このセクタをWindows2000がread-mod-write で書き換えるなら、署名部を外せばいいのですが、たぶん1セクタ丸置き換えではないかなと思います。末尾に55AAも入れてきますからね。
サイズが小さいFreeBSD 98のブートローダを大改造してスキマに入れる手はあります。直I/OでIDE-BIOS-LBA-patchのアプリ格納セクタを読んで実行してしまうようなやつをです。IPLwareのディレクトリでは実行しないフラグ設定にもします。2度実行しないためです。
|
エラーメッセージを具体的に かかっくん 2024年11月2日(土) 16:07 |
修正 |
> この手の偽IDEドライブは得てしてCHSモードをサポートしていません。その場合IPLwareのローダを入れるところまでしか到達せず、アプリを入れても起動できません。「チェックサム不正」はその通りなのですが、もう少し丁寧なエラーメッセージがこれからは必要かもしれないと思いました。発生理由のほぼ全てはこれだからです。その他の理由としてはIDEのBIOSセクタ長を切り替えてしまった場合などで発生します。
IPLwareモジュールをロードできません とか IPLwareをロードできません とか? エラーメッセージわ可能な限り具体的にするのが大事デス 例えば文法のエラー Syntax error (M$の代表的なBASIC/英語DOS) と ?SN Error (N60等) でわ何方が直感的でせう? # 日本語DOSわ「文法が違います」
>>IPLwareローダがモジュールに直I/OでLBAアクセス > 現バージョンでは許されるコードスペースが512バイトしかないので、SCSIとの共用も考えると無理です。
此の専用バージョンわ本体IDEポートでの起動不良の対策版でSCSIでの使用を想定して居ませんから、 SCSI用(=BIOS使用)のコードを消しても問題無さそーな?SCSIであれば現行版で無問題デスし、起動 メニュー自体の機能は其の儘でSCSIから起動出来枡し 悪魔デモ現行版を置き換えるモノでわなく新たなるバージョンとして、3.xxLとか
|
ソフトウェア更新 まりも 2024年11月3日(日) 14:28 |
修正 |
おとといアップロードしたdiskbootですが、やっぱりハイレゾモードでSCSIのときに不具合が見つかったので修正しました(1行入れ忘れ)。80286機では問題ないことを確認しました。
ところでリウさんのCPUクロック計測freqですが、初代A-mateのAe(ノーマルモード)では正しいクロック表示になりませんでした。DX4を載せていますが1/3の値になります。実行後にbeepが全く鳴らなく(聴こえなく)なる(out 37h,6で無音)ことから、間違って8253カウンタの方が使われたものと思います。
【6日追記】もともと80386の頃まではCPUクロックを計測するソフトウェアってほぼ無かったように思います。クロックのタイプ自体少なかったし、クロックはPCの仕様として自明のため、調べる動機付けがなかったのでしょうね。代わりにCPUの種類は8086以来の多種があるので、CPUベンチマークソフトウェアはたくさんありました。
|
freq KAZZEZ 2024年11月3日(日) 23:57 |
修正 |
> freq 11/1版を試してみましたが、確かに、まともに機能していないようで、何らかのバグがあるようです。486以下の環境だと実行するたびに一桁から三桁台(MHz)まで違う値が返ってきます。 TSC&CPUIDな環境では何度実行しても一定値のようですが、C3/1065MHzが5396MHz?とか出ました。(汗 ----追記---- 修正ありがとうございます。やはり486互換CPUのクロック計測は難しいのですね。Cx5x86は対応しているクロック計測ソフトがなかなか見当たらなかったので助かりました。実は先日の100MHzに設定したつもりのBX3で、いくつか計測ソフトを走らせても90MHz以下の半端な値しか返さないので設定を間違えたのかと思っていたのですが、今回はちゃんとiDX4/100MHzとほぼ同じ値(freqで103〜106MHz、freq8253で100±0.25MHz)が得られましたのでひと安心です。Ra上でのC3も1063MHzと妥当な値でした。
|
near 絶対番地とは cs:0からの相対? まりも 2024年11月6日(水) 21:48 |
修正 |
80x86リアルモードで、nearの絶対番地jmp または call に即値を使った命令が無いのは不便な気はします。farだと命令はあるので、アセンブラで書けなくてもデータとして値を埋め込んで 0EAh, オフセットワード、セグメントワード などとやれば一応書けます。 nearの絶対番地といってもcs:ipのip=0基準の相対番地でよいことが普通なので、その番地をBX(インデクスレジスタならどれでもよい)に入れて push bx mov bx,即値 call bx または jmp bx pop bx とやれば近いことはできます。パッチを当てるときにはよくやりますが、7バイト消費がちょっと困ることはあります。もし専用命令があれば3バイトで済みそうなところなのですが。
push 即値 ret でも同様のジャンプが5バイトで可能です。しかしこの命令は8086では使えず186以降という制約があります。またcallとしては使えません。
実行セグメントが固定で既知のBIOS ROM内コードだと、near即値をfar即値に直すこともあります。これも5バイトの命令ですので、上2つと同じ程度です。BXを壊していいときは mov bx,即値; call bxも5バイトなのでこっちを使うことが多い印象です。
|
裏EMSを使って仮想86で移す リウ 2024年11月6日(水) 22:54 |
修正 |
LBA_IDEを改造しました。 たった今アドバイスを拝見しました。ありがとうございます。
面倒なことがいくつも見つかっています。 まずESをD800hに直接指定をしている部分がIDEBIOSコード内にいくつもあります。(これは検索してpush cs pop esにでも書き換えれば問題ありません。バイトサイズ的にも余裕でしょう。が次の内容があったのでやめました。) 次に絶対アドレスCALLの問題でした。これはnearのCALLに変えようと思い立ったものの結局はDA00セグメントは他の用途にも使われている(RAMドライブ機のメモリ窓)ことから動かせないはずですから直接アドレスCALLのままにしておきました。 最後に仮想86で移動させてくれるメモリマネージャの機能の中身です。(LEMMとVEM486で確認しました。)私は1M以上のアドレスのメモリをそこに配置した上で元のデータをコピーしているものと思い込んでいたのですが、そんなことはなく単に仮想アドレスを移しかえているだけでした。つまりB8をA6に移す、ということは、A6000hにB8000hの中身を見せているだけでした。なのでVRAM側で書き換えると当然A6側も書き換えられてしまいます。これではディスクBIOSとしてはまるで役に立ちません。 一度UMBとして確保し、そこを新たにディスクBIOSとして移し替えるデバイスドライバが必要となりました。まだそれは作成していませんが、手順が増えてちょっとがっかりしています。
書いている途中でこのソフトを思い出しました。RAMBIOS.COMというソフトがあります。これを使うとその状況が私の予想と同じになります。これで裏EMSの部分をVRAMに戻しても問題なくなります。 一応満足行くものができたような気がしますが、実機テストができないので片手落ちです。 8日23:10追記 As(CS指定の機種)で暴走していましたので修正しました。オリジナルコードはles bx,[5e8h]でESをもらっていました。この中身はAH=03のINITが行われるまで更新されませんのでタイミングによってD800がもらえたり裏EMSのB800がもらえたり、と極めて不安定でしたのでCS決め付けに変更させました。
ついでに3.5MOか5MOかはBIOSのAH=14hのSENSEのBLの返事、0000:0460hの中身(undoc参照)で推定しているようです。
お買い物スレ向けですが、ヤフオクに出ていた33c93ではない石を持つSCSIBIOS付カードを落札してしまいました。何かおもしろい結果が出れば報告します。
|
仮想86IPLware(要るかも)、MOIPLware(要らない) まりも 2024年11月7日(木) 15:03 |
修正 |
CPUクロック測定はなかなか難しいですよね。Pentium以降でもARTICで測ったのとTSCで測ったので随分差が出ることがあります。仮想86は全然勉強せず避けて通っていたのですが、今後はEMMに頼らず美味しいところで使うというのもありかもしれませんね。そうなるとIPLwareでは仮想86モードにいることは考慮しなくてよいという大前提が成り立たなくなりそうです。
ところでIPLwareはOSFDIPLwareまで進化しましたが、98ではSCSI MOでブートできることからすると、MOのIPLにもIPLwareがあってもいいのかも?とふと思いました。ところがMOの場合スーパーフォーマットが98では普通です。予約セクタをやたらと大きく取ってそこにアプリを入れるしかなさそうです。つまり独自専用フォーマッタを作り適用しないといけないわけで、すでに運用中のMOではダメです。 もちろんファイルシステムとして正しく大きなファイルを連続で割り当てて、そこにアプリを置くという方法はありますが、場所が不定となるため少々面倒そうです(でもやるならこっち)。いずれにしてもIPLのセクタ512バイトのプログラムではローダも置けませんで、ローダのある場所へのジャンプくらいしかできません。
MOのIPLwareの必要性はさほどない割に大変なだけという感じはします。MOの接続はあるけどFDDの接続がないなんていう環境で使っている人はいませんよね?NEC固定ディスク起動メニューにSCSI MO(3.5インチ光ディスク)という選択肢があれば本当に必要性はないのですが、ないのはなんでですかねぇ。
|
初代AがIDE BIOSのワークRAMでCS:で参照する謎 まりも 2024年11月7日(木) 23:41 |
修正 |
初代A-mateはCSで参照されるのに対して、Ap2,Af以降はハイレゾのときにBranch4670 の使用有無でBIOSコード部とワークエリアRAM部が分離されるため、ESで参照することになったと考えています。ノーマルモードではどうでもいいことなのですがおそらくは共通化のためです。CS:に変更しても問題ないです。ちなみにそれで無用なpush es/pop esを省いてパッチエリアを捻出したりします。
ところが初代A-mateには本体にハイレゾ用IDE BIOSがなく(確認済み)、どうもハイレゾボードの隙間のROMにあるっぽい(未確認)のですよね。ハイレゾモードで出てくるROMは内容としてはノーマルモードと同じです。初代A-mateにはBranch4670のときにIDE RAMの配置を変更する機能がありません。Branch4670は使えない仕様にうっかりしてしまったのでしょうかね。 ほぼ同時期のB-fellowではESになっているのも謎です。ハイレゾがありえないので、この機種からESを使うようにした理由がわかりません。開発時期がA-mateが先でB-fellowが後のためでしょうかね。
第0世代は、、、持っていないので知らんがなですが、流れ的にCSでしょう。
|
5インチMOの場合って かかっくん 2024年11月8日(金) 2:25 |
修正 |
> MOのIPLwareの必要性はさほどない割に大変なだけという感じはします。MOの接続はあるけどFDDの接続がないなんていう環境で使っている人はいませんよね?NEC固定ディスク起動メニューにSCSI MO(3.5インチ光ディスク)という選択肢があれば本当に必要性はないのですが、ないのはなんでですかねぇ。
FDD故障のユーザは居そーな?
ところで5インチMOの方わ起動時にどんな表示が出ましたっけ? MOに対応したDOS3.3C以降で一面当たり最少3領域デスから何かしらの表示が出た気がし枡が # 当時の5インチMOわ一面当たり約300M、両面で約600M 起動メニューがバージョン2に成って見た目が変わったのと関係有りそーな? # DOS5+でわ一面を一括で確保出来ましたっけ?>5インチMO
抑々5インチMOと3.5インチMOの区別って何処でするのでせう?容量?其れとも何かのフラグ?真坂ドライヴの型番?
|
INIC2051の続き MCtek 2024年11月10日(日) 13:33 |
修正 |
出張に出ており現物で試せませんでしたが、頭の中ではいろいろ考えていました。
> 8ヘッド17セクタですので、CHS変換がどう間違ってもLBA 16番地のセクタまでは正しく読めます。 > 変換が間違っていると正しく読めなくなります。
もしやひょっとして単に変換が間違っているだけかと考え、まっさらな状態からIPLwareをインストールしてみると、0x3000〜にいるべきものが0x8C00〜にいました。 丁度63-17=46セクタ分後ろにずれています。単純に8/17パラメータにならず16/63パラメータのまま動作しているだけのようにも見えます。 ところが、そのあとも17セクタ毎に46セクタ飛んでると思いきや、繋がってそのあとにいます。 シークしない限りは連続して読み書きされるのかもしれません。変な感じですね。
だた一つ言えるのは、INIC2051を4.3GB機で使いたいときは、4GB以下のカードにIPLwareとLBA_IDEをセルフでインストールするか、 既にLBA_IDEインストール済みのメディアの場合はLBA17〜の46セクタをLBA63〜にコピーしておくだけで十分だったということです。
一方で、この様子だと8GB対応機の場合は何もしなくても使用可能な予感がします。
> 「IDE-BIOS-LBA-patchのROMアプリ化」 それも魅力的ですが、逆にEXIDE ROMシリーズをIPLwareでロードできたらなぁ、と思っていました。 SD-IDEやDIV0ROMでハングアップ回避だけできている環境で、使える手が増えますから。
> MOのIPLware あったらいいな〜くらいには思っていましたが、OSFDIPLwareのブートセレクタがあれば十分なのは確かにです。 FDがないか故障している環境を考えると、IPLwareの「Fキーでフロッピー起動」機能が、OSFDIPLwareのブートセレクタのように飛び先を選択出来たら嬉しいかもしれません。
|
mvLBAIDE まりも 2024年11月10日(日) 22:35 |
修正 |
「98オンボードのIDEで動作しない」IDEデバイスの多くは、HSパラメータの設定ができないだけで、16:63などのデフォルトとしてはCHSモードで動作します(もしかすると一切CHSモードが通用せずエラーすら返さないデバイスもあるかも?)。
LBA17〜にあるものをLBA63〜にBIOSを介さない読み書きでコピーするプログラム(命名未定)は、IPLwareでIDE-BIOS-LBA-patchを入れた直後に実行してもらう仕様でいいと思いますが、IDE-BIOS-LBA-patchのバージョン替えによって格納位置が変動するのが問題になるのですよね。入れ直したらまたこれを実行しないとなりません。それと、この仕様にすると格納できる上限はLBA33までの17セクタに制限されてしまいます。制限しない場合、LBA34〜に格納したつもりのアプリが、いったん8:17で変換され、ヘッド=2,セクタ=0となり、実際にはLBA126〜に現れることで、本当の上限を超えるLBA136〜に侵入してしまう恐れがあります。【修正】これでは領域先頭を破壊します。
「BIOSを介さない読み書きでコピーするプログラム(命名未定)」はI「IDE-BIOS-LBA-patch を検出し、さらにオンボードIDE#0にインストールされる場合」に限り、上限をLBA33までにして、BIOSを使わずにLBA17-33にあるものをLBA63〜にも書けばいいことになります。【追記】現実はそうは甘くないことが考察の結果判明。
と、ここまで仕様は確定しましたが、作るのはやっぱり大変・・・オンボードIDE#0に何も繋いで無くて#1以降にIDE/CF/SDデバイスが居たりするのを調べるのが面倒そうです。【追記】問題はそんなことではない
【2315追記】LBA33まで(の17セクタぶん)に制限すればと書きましたが、現在のLBA_IDE.COMは15KB、30セクタあるではないですか。17セクタに入り切りません。 >ところが、そのあとも17セクタ毎に46セクタ飛んでると思いきや、繋がってそのあとにいます。 ここが気になります。このとおりなら制限しなくていいですが、まずは徹底的に調査しないと危ないですよね。たぶんIDE BIOSがデバイスに書き込みコマンドを送るとき、先頭セクタ番号だけが誤変換され、デバイス側はセクタ数が指定されていれば最大63セクタぶんまでは連続で書き込むでしょうから、これは道理です。しかし1セクタ毎に書いたり、細かいアプリをちまちま書いたときはそうはならないわけです。うわこれは現実的には対処不能か・・・
|
LBA_IDEのサイズ リウ 2024年11月11日(月) 3:35 |
修正 |
無頓着にオリジナルBIOSのコピーをばしばし放り込んでおりまして…(世代調査用にも必須なのですけれども)機種依存させれば少しは減りますし、今も未熟ですが、初学の頃のコードも残したままです。まとめなおすよりも新しいことをしたがるタチでございまして…とひたすら言い訳です。 16:63のままからメディアが変更を受け付けないものに対して、8:17のつもりでBIOSが読み書きしにいった場合ですが、これはquantumの一部のHDDがやってたのではないか?とこっそり思っていることでもあります。連続アクセスの場合と1セクタ毎のアクセスで挙動が変わるのなら危ないからやめておけ、になると思うのですが、再現性があるのならどうすればよいのか考えてみます。
読み返して納得?しました。LBA化させてしまえばどうとでもなるが、その前段階でこける可能性がある、ということですね。インストール時と実行時で読み書きアドレスがずれてしまう。IPLWareインストール時の書き込みではLBAの18番には行かないのに、読み出し時はLBA18番を読んでいそう?という感じでしょうか。(その逆?頭が回ってなくてすみません。)
0527追記 これはひどい!理解できました。うわ、LBAにしたせいで間違いが正され、そのせいで間違うわけですか。日本語もおかしい! となるとですね、LBA_IDEだけを登録した場合は通りますが、二つ以上を実行したければIPLWuniでまとめてください、が一つの解決案でしょうか、しかしこれもLBA_IDE自体がサイズ大なのが問題ですね。さらに8:17に見せかけた16:63時代のデータ(オリジナルBIOS時に保管したデータ)は捨てて新たに作り直し、がほぼ強制になりますね
|
ややこしくなってきましたが まりも 2024年11月11日(月) 5:10 |
修正 |
>インストール時の書き込みではLBAの18番には行かないのに、読み出し時はLBA18番を読んでいそう? いや、上で間違ったことを書いてしまったのでうまく伝わらなかったようです(汗 IDE-BIOS-LBA-patchをインストールするときにもこれが実行されていない状態なら誤ったところにIPLwareは書いてしまいます。再起動してIPLwareのローダが読むときも同じように間違ったところから読むはずです。しかし読み書きで同じなので動作していいはずですし、コピーの必要もないと言えばないです。
IPLware.exeがアプリをストアするときも、ローダがアプリをロードするときも、DISK BIOSを普通に一回呼ぶだけですので、連続での読み書きは一応保証されています。初めてIPLwareアプリを入れるとき、たぶんこうなります ・IPLwareはLBA_IDEをLBA番地17から50までに置くようDISK BIOSに書き込み指示をする ・BIOSで8:17で解釈されたときにヘッド1、2のそれぞれセクタ0-16となる ・デバイスでは16:63で解釈され、LBA63-96に書いてしまう(非連続だとLBA63-79とLBA126-147に) ・IPLwareが次に動作したときもLBA-IDEをLBA63から読むので一応成功するはず。 コピーの向きは 誤→正 の方向が必要ですね。最初から正の位置には書かれていないのです
一方LBA-IDEを実行できるOSFDIPLwで起動してからHDにインストールしようとすると、最初から正の位置に書かれますが、こんどHDから起動しようとした時は誤から読もうとして失敗するわけです。このときは正→誤の方にコピーしないとなりません。上で書いたのはこちらの話になってしまっています。
ややこしいですね。LBA-IDE.comをインストールするとき、すでに実行済みの環境と、そうでない環境で、書かれる位置が違ってしまうわけですから。
しかもその後にIPLwareアプリを他に入れようとすると ・LBA63にかかる位置に置かれると破壊される ・LBA136以上のところに書かれるとその瞬間に先頭パーティションが壊れる といった問題が起こります。
うわこれ仕組みやソフトを作ったとして万人に理解されるように説明なんてできる気がしません。可能な説明は、「毎回必ずOSFDIPLwでFDでLBA-IDEを実行してからHのキーを押してIDE起動してください、IDEのHDにはLBA-IDEを入れないでください」くらいです。
|
ややこしくてスミマセン MCtek 2024年11月11日(月) 15:53 |
修正 |
状況を整理しましたが、まりもさんの記載と齟齬が無かったので省略します。
>現在のLBA_IDE.COMは15KB、30セクタあるではないですか。 モジュール先頭が24sにいましたので、LBA_IDEのサイズが19.5kBを超えるとウロボロスになってしまうと考えます。
状況から推測して、BIOSモードで起きていると思われることは… ・ヘッドをSEEKする際はホスト側は8:17のつもりで計算するが、ディスク側では16:63パラメータで計算される ・もし、ヘッド2にシークしたら10s進むとLBA136がいますので、怖いですね。 ・連続で次のセクタを読むときには単純にLBA+1される(とびとびにはならない) といった感じですね。
IPLwareなしのFD(MS-DOS 5.0A-H #5)から起動した際にどうなるかも念のため試しましたが、BPBが目標の位置にいないのでFSをマウントできず、DOS起動途中で停止しているようでした。 不便ですが書き込みに至ることはないのでとりあえず安全かと思います。
一方で、ドライバ未パッチのWindowsがまかり間違って走ってしまったら…と考えると怖くて眠れなくなりそうです。いわば常時CFリセット状態みたいなものですから。
これは8GB機で8GB以上のカードを挿して使うのみに留めるべきか…と思っています。
4.3GB機で使うなら、またファームウェアを8:17ネイティブに改造してしまえばすんなり動きそうな気もしなくはないですが…さてさて中のCPUは何でしょうね。
|
矢っ張り直I/OのLBA? かかっくん 2024年11月11日(月) 22:16 |
修正 |
INIC2051が8:17変更を受けないのが判り(近年のCFにも有るので不思議でナイ)次に16:63等としてわ動くか? と云う事に成増が、此れわ出来そーデスね。HS数が幾つであってもCHSで動けば起動の余地が有りそーデス LBA鹿受けないのであれば無怪造でわFDかパッチROM無しでのHDD 1(80h)としての起動は出来ないと云う 事でせう。CFにIPLwareとLBA_IDEを容れてHDD 1とすればHDD 2としてLBAだけのストレージを遣えそーな?
矢っ張りIPLwareモジュールを直I/OのLBAでロードするのが解決策の気が?当該ストレージへのインスコわ LBA_IDE有りの環境ですれば済み枡し
|
EXIDEnative まりも 2024年11月12日(火) 23:17 |
修正 |
利用者の混乱が大きくなるだけなので直I/O版IPLwareは作る気ありません。そもそも1セクタに収まりません。 一応ROMアプリとしては解決済みなのです。EXIDE** で 4.3GB以下のCF(CFA属性かリムーバブル属性のデバイス)ではそのデバイスのヘッド数:セクタ数(ふつう16:63)にするモードが用意されています。使っている人がどれだけいるかどうかわかりませんが。これをSD-IDE変換器にも適用、というかSSDでもあり得るので、すべてのIDEデバイスでも適用するように仕様を変更すれば行けます。ただ別々のIDEポートで旧来の8:17と同時使用できる作りではないので、新旧のデバイスを繋いでコピーというときには困るし、昔のHDDがいざというとき読めないのも困るかなと言う気はします。まあそこでIDE-BIOS-LBA-patchの365MiB設定を使ってデバイス別にBIOS CHSを設定すればいいわけですけども。
えむしてさんのSD-IDE/CFやINIC2051についてはリムーバブル属性を返すのですよね?それならEXIDE**適用でとりあえず16:63にできます。
これまでのEXIDE**のどれもが対応になっていない B2-mate,fellow,C2multiについては、16:63固定版(ロジカルには上限8063MB)なら一応の検証はしてあるので、すぐ出せます。BIOSの中に出てくる8,17、8*17の即値をそのまま16,63,16*63にしただけです。副産物として543MiB壁がなくなり2014MiBになるメリットはあると思うので、とりあえずお試し用に公開しておこうかと思います。
ちなみにDOSコマンドとしても使えなくもないです。RAM IDE BIOS中のパラメータ定数を16,63系に変更した後、BIOSのinitialize コマンドを発行し、ディスクからのリブート(HSBか拙作diskboot)を掛ければ、DOSから認識できます。
|
HDD 1にこだわりさえしなければ何とデモ成る かかっくん 2024年11月13日(水) 0:50 |
修正 |
確かにHDD 1にこだわりさえしなければ元のBIOSで認識するCFにIPLwareを入れれば態々LBA専用を遣う 必要わ有馬せんね 起動メニューでHDD 2を撰べば良いデスしNTLDRもHDD 2から起動出来枡し
問題ナノわのて機で2台に難、ROMも難と云う場合でせう # 最近NSの件が有ったので振り回された鴨
あと一応BIOSで0:0:16(=LBA16、IDEでわC0H0S17)からnセクタと指定すれば讀めるやうデスから ・LBA_IDEをモジュールの先頭に入れる ・IPLWuniで纏めても動くか?わ不明 ・LBA_IDE更新の際、全部のモジュールを入れ直す を厳守すれば現行版の多少の手直し(LBA 24からのロードに限りLBA 16からのロードに変えロードするセクタ数を 8増やす。LBA 24が元の6000:100に位置するやうにロード位置を4KiB分前の5F100hにズラす)で動きそーな? # 常に各モジュールの先頭-8sから5F100h〜へのロードにしても可、但しセキュリティ面で劣るのでロード後に # 5F100h〜600FFhを0フィルしてから実行するとベター LBA_IDEがLBA 24〜62に収まる限り此れでイケそーな? # 真坂メニューが直ぐ下位に有って5F100h〜へのロードわ駄目とか?
|
21ビットだか24ビット制限 まりも 2024年11月13日(水) 13:34 |
修正 |
>厳守すれば そこが98勢には難しいかなと思うわけです。
ところで第2世代IDE BIOS機の LBA-LBA(無)変換ルーチンにこう言うコードがあるのですよね。 mov dh,0 mov dl,[bp +06h] mov ax,[bp+04h] これってLBAを24ビットに制限していると言うことになりますよね。LBA_IDEで8192MB以上のディスクアクセスは正しくできているのでしょうか?後で試してみようと思います。ちなみのこのコードをdl--->dxに置き換えると起動しなくなってしまうので、どうやって回避すれば良いのかわかりません。 【1530追記】LBA_IDEではそこを通らないパッチをしているのですね。では大丈夫でしょう。
|
混乱は避けたい MCtek 2024年11月13日(水) 13:56 |
修正 |
実験で色々試すのは楽しいですが、発表するものはシンプルでありたいですね。
>えむしてさんのSD-IDE/CFやINIC2051についてはリムーバブル属性を返すのですよね? FC1307AもINIC2051もリムーバブルフラグはなく、Fixed属性です。 FC1307A改造ファームウェアではCFAフラグも倒してしまい…HDDのフリをしています。
>B2-mate,fellow,C2multiについては、16:63固定版(上限8063MB)なら一応の検証はしてあるので、すぐ出せます。 おおっ、これは面白そうですね。 ROMアプリケーションをSMIT SCSIの空きROMバンクに入れて共存する作戦を…(まだ言ってる)
>BIOSの中に出てくる8,17、8*17の即値をそのまま16,63,16*63にしただけです。 FC1307Aのファームウェア改造でも、これとまったくさかさまのことをしています。どちらに合わせるか、ですね。
>LBA16、IDEでわC0H0S17)からnセクタと指定すれば讀めるやうデスから 確かに、LBA16から続けて読むことができるなら本来の位置にあるものが読めそうです。 ただ、書き込む際は「正」の環境で動いている必要があり、これも厳守事項となりそうです。
|
闇討ち まりも 2024年11月13日(水) 15:35 |
修正 |
>ROMアプリケーションをSMIT SCSIの空きROMバンクに入れて共存する作戦 第2世代IDE BIOSはアドレスも含めて同じ内容らしいので、闇雲にアドレス決め打ちができそうです。それなら10箇所程度の場所へのメモリライトで30バイト程度の空きがあれば行けるかなと期待します。
|
スキマから闇討ち MCtek 2024年11月13日(水) 18:12 |
修正 |
>30バイト程度の空きがあれば行けるかな 非常駐で30バイト程度でしたら空きバンクを使うまでもなく組み込めるかもしれません。
DIV0ROM相当の処理は常駐11バイト+非常駐13バイトで、いろんなSCSIボードのスキマに組みこめましたから… (ほぼそのままの形ですが、DIV0ROMとIFN92Rのコードを大変参考にさせていただきましたm(_ _)m)
本体のROMをいじるのはマスク互換ピンということもあってやりづらいですし、やはりボードを抜けば元通りという手軽さがいいですね。
ただ、ROMライターなしで適用できるボードに関しても、動いた、だめだった、git applyの使い方がワカラン、というような話が全然聞出てこなかったので需要はなかったのかもしれません。 性質的にアレなので、みんなコッソリやってくれてるだけかもしれませんが(^^;)
|
LBA 24にLBA_IDE(入りのモジュール)を配置する かかっくん 2024年11月13日(水) 18:32 |
修正 |
> ・LBA_IDEをモジュールの先頭に入れる > ・IPLWuniで纏めても動くか?わ不明 > ・LBA_IDE更新の際、全部のモジュールを入れ直す
>>厳守すれば > そこが98勢には難しいかなと思うわけです。
ゑ゛?
1. LBA_IDE環境で起動する 2. 当該ストレージをフォーマット 3. IPLwareローダを入れる 4. 最初にLBA_IDEを入れる LBA_IDE未導入の場合、全部の内容をバックアップしてフォーマットからやり直し 他のストレージに入れる方がラク
だけで良さそーな気がし枡が? 兎に角LBA 24にLBA_IDE(又は纏めた物、後述)が有る状況なら動きそーな気がし枡。LBA_IDE環境で真っ更を フォーマットしてIPLwareローダとLBA_IDEを入れれば自ずとLBA 24にLBA_IDEが入る気がし枡が、然う成らない 場合てどんなケースdsk? 其れとも機種にも依ってわLBA_IDEより先にロードする必要が有るモジュールが有るとか?其の場合IPLWuniが可なら 纏めるとか?
> ただ、書き込む際は「正」の環境で動いている必要があり、これも厳守事項となりそうです。
此れもLBA_IDE環境でフォーマット・IPLware導入なら成立しそーな? 其の意味でわDOSの実行用FDにOSFDIPLwareとLBA_IDEを入れて起動してフォーマットするのが良さそーな?
其れともLBA_IDE環境ならば完全に同じ条件に成るやうな単純な噺でわナイとか?
亞、必要なソフトが入ったFDの用意に難が有るんデスね、常用のユーザにわ盲点ですた ベタイメージのFreeDOS(98)に ・FDSK98 ・BSDメニュー ・OSFDIPLwareインストーラ ・IPLwareインストーラ ・LBA_IDE を入れてUSB FDDでFDに書き出すかD88に変換してなおさん x.com/yukkuriz のSFD98winかd88to98fdd pc98.asukadns.net/ pc98.asukadns.net/?p=264 で98(又わえぷ+BASIC FD)に転送してFDに書き出して下サイ。前者わD88イメージの儘実機で起動出来るそーで。スゲェー # FDDエミュのがお手軽鴨
尚各々の配布ライセンスが違ィ枡ので全部を入れたイメージの配布わライセンス違反に成増
|
マニュアルは読まれない リウ 2024年11月13日(水) 19:11 |
修正 |
現実的なお話として LBA_IDEはやくざなプログラムです。そのマニュアルには必要なことは書いていますが、実際かなりよみずらく、読んでもわからないけど実行しちゃおう、他の人も使えてるのならつかえるはずだ、の人もいます。また世の中には作者の想定外の動きをする方もいらっしゃいます。 ので、厳命してもダメです。ユーザー側に注意させるのではなくプログラム側で対処すべきです。で、IPLWareのローダはすでに512byte埋まりきっているので私のプログラム専用コードを追加してください、とは言いたくないです。
chs trans非対応のSSDを98内蔵IDEにどうしても繋ぎたい、という人はまだ私の前にはあらわれていません、現れる前に考える必要はありますが、まだCHS TRANS対応機器の残存数はありそうです。今はこのようなデバイスを使うのであればフロッピーかSCSIからブートしてください、のお願いを一つ入れているだけです
IPLWareとしてロードされたHDD内位置はDX:AXとして渡されていますからこれが先頭セクタ付近だった場合にのみ特殊コードを入れる、というのが一つ思いついてはいます。が、まだ何も手をつけていません。
Bsの24bitLBA部、つぶやきで書いておきました。記憶では上からパッチして通らなくなる部分です。
|
説明文を讀まないとDL出来ないやうにするとか かかっくん 2024年11月13日(水) 20:46 |
修正 |
> LBA_IDEはやくざなプログラムです。そのマニュアルには必要なことは書いていますが、実際かなりよみずらく、読んでもわからないけど実行しちゃおう、他の人も使えてるのならつかえるはずだ、の人もいます。また世の中には作者の想定外の動きをする方もいらっしゃいます。
自分もプログラマの端くれ(下請けばかりで最近はプログラミングよりもメディア変換で稼いで居枡が)デスから 分かり枡。想定外の遣い方をしてクレームを寄越す輩とか
DL頁のHTMLに説明文を置き、本文の何処かに 「本プログラムは動作中のプログラムを魔改造することにより、仕様上は動作しないストレージを動作するようにするものです。ご利用のOSやアプリケーションに対して仕様外の動作をさせています。利用者各自の責任においてご使用下さい。導入に必要なプログラムは各自で揃えて下さい。 この説明を読んで原理や意味がわからない方は使用しないで下さい。正しく使用されない場合はデータ損失にとどまらず、各機器が再起不能になる場合もございます。 上記OSやアプリの開発元に動作不良について問い合わせをしないで下さい。なお、当方ではトラブルの対処・被害の補償をできかねます」 と免責事項を示す事でモンスター何某や何某ハラスメントを避けられると憶われ 如何にもげに恐ろιぃ事をして居るからちゃんと説明文を嫁と云う事デス。RTFMとわ良く云った物デスな
ファイルでわなくCGIにリンクして、説明文の途中のCAPTCHAを入れて「上記内容に承知した上でダウンロード する」のチェックを憑けて初めてDLリンクが有効に成るやうにするとか?
で、レクチャーに付いてわするにしても現状の環境への導入でわなく真っ更に新規だけを説明するとか? # ↑のやうに状況に依って結果が均一でなければ前提が卓袱台返し
|
EXIDE2Gn ・・・2Gとは何だ? まりも 2024年11月13日(水) 23:43 |
修正 |
人にモノを伝えるのはなかなか難しく、モノを作ってしまうほうが容易なことのほうが多いのです。98勢には方法を示すよりできたモノを提示する方がいいと誰かが言っていたような? DIV0ROM,EXIDE,IDE-BIOS-LBA-patchがある現在でも、"mistress9"ボードが2万円くらいで売れることからしてもわかるでしょう。えむしてさんがSD変換器を出品なさっているのもそういうことからだと思っています。
さてROMアプリですが非常に簡易版です。IDE BIOS 2nd Gen.機用のCHS変更ROMアプリ、16:63のとき2014MiBまでの制約があります。 ttps://www7b.biglobe.ne.jp/~marimo9821/exiderom/exide2gn.html LBA総数をセクタ数で割り算する魔のコードを直すのは、パッチ量が多くて本格的にやらないといけないので、今日はできません。いずれ対処します。
>非常駐で30バイト程度 よく考えたら、パッチだけで45バイトくらいあります。SC98IIIだとなんとかなります。しかし、環境調査のためのコードを入れるところが無いではないですか。そこは決め打ちは危なすぎて難しいです。SCSIの初期化時に使われるROMの裏ページ実行時になんとかならないかという気はしています。
【16日17時追記】0.99バージョンはどうもセカンダリのほうが誤動作しますので一旦公開中止します。それと別ですがB2-mateは一部のSATA変換器でプライマリとセカンダリのデータがごっちゃになるハードウェア上の問題を抱えており、実験がしにくいです。見かけは44pin PATAの「なんちゃってSSD」でもそういう製品を見つけました。
|
門戸を狭めればよいというわけでも… MCtek 2024年11月14日(木) 19:02 |
修正 |
>人にモノを伝えるのはなかなか難しく、(中略)そういうことからだと思っています。
最初は改造記事を公開して、身近な友人を中心にある程度はフィードバックがあったのですが、次第に「ハードウェアの改造には手が出ない」、「ROMを書き換えるだけでも難しい」という声がぽつぽつ聞かれ、最後には、「できる人は良いよね」といった声も聞こえはじめ… そんな話を友人としていたら、モノがあるなら頒布してみたらいいんじゃない?と言われたのがきっかけでした。
プレミアがついた拡張ボードや高価なストレージ変換器は気軽に手が出せないと思っている方もいるでしょうし、新品CF+IDEアダプタを手に取ろうとしている方のもうひとつの選択肢になるかな?くらいの考えです。 当面は用意し続けようと思いますが、頒布を終了しても記事が残っていればロストテクノロジーにはならないかなと考えています。幸いFC1307A自体はまだ生産されているようですし。
98に限ったことではないですが、コミュニティの全員が技術に明るいわけでなく、割合としては完成品を欲してる人の方が多い、ということは肝に銘じておかなければならないと思う出来事でした。
>IDE BIOS 2nd Gen.機用のCHS変更ROMアプリ、16:63のとき2014MiBまでの制約があります。 ありがとうございます。17が63になるので、543MiBが2014MiBに、というわけですね。 これで正常に動くようになるストレージデバイスもありそうなので色々ためしてみたくなります。
>環境調査のためのコードを入れるところが無いではないですか 完全に実験用ですね。 裏ページに空きがなければ、ボード依存ですがセットアップメニューのページに行って戻ってくる方法もありそうです。 ページ切り替えルーチンがどこにいるかは追わないとならないですが。
|
矢っ張りバッファを挟むとか? かかっくん 2024年11月17日(日) 5:01 |
修正 |
↑の返信は汎用スレにて
> 【16日17時追記】0.99バージョンはどうもセカンダリのほうが誤動作しますので一旦公開中止します。それと別ですがB2-mateは一部のSATA変換器でプライマリとセカンダリのデータがごっちゃになるハードウェア上の問題を抱えており、実験がしにくいです。見かけは44pin PATAの「なんちゃってSSD」でもそういう製品を見つけました。
☆α2機だけでなくB2もdsk?同時期の9801B2もの悪寒? # ん?MATE Bて1世代だった希ガス 此れわIDE2マイ差しに等しいPCとの実装の違ィに起因する相性(?)の気が? # CS1/3が有効でなくてもIOR/IOWが出るとIDE-SATAが応答するとか
CS*がP/S別々でIOR/IOWが共通のが有るかと憶いましたがPCI機のサウスにわ無さそーデス が山猫YEBISU機にCS3が共通の機種が(研究板参照)
矢っ張りIDEポートとIDE-SATAの間にバッファを挟むとか?
|
98勢は98税を払う まりも 2024年11月17日(日) 13:33 |
修正 |
EXIDE2Gn ですがバージョン1.00となりました。 ・98multi Cs2で動作検証,SOUND BIOS 有効/無効に対応確認(画像1) ・容量は16:63で8063MiBは当然OK、いちおう32255MiBまで行けます ・256B/セクタモードを潰していませんので256B/sとしてかつて無い容量に? ・対応機種でなくてもDIV0ROMは動作します ttps://www7b.biglobe.ne.jp/~marimo9821/exiderom/exide2gn.html
Multiは実機テストしなかったらやはりダメでした。IDE BIOSの最後のほうに空きがないのです。そこで「特定IDEドライブのブラックリスト」を潰してパッチコードを置くようにしました。いまどきLBA非対応のNEC D3765とか使わないですよね?すぐ壊れるConnerドライブなんて生き残っているわけないですよね?
このため当初は即値だけパッチとしていたものの、結構パッチの量が大きくなり、あちこちに飛んでいます。IDE-BIOS-LBA-patchとDV0ROMがあれば全て解決!ということで第2世代のROMアプリは作らないと宣言していましたが、こうも98で動作しないデバイスがあるならROMアプリと運用変更で対応するしかなく、作ってしまいました。
画像2のデバイス(見かけ44pin PATAのSSD)は98にとってトリプル役満なやつです。 ・デバイスに対するHead,Sector数の設定は不可能(これだけで使えない) ・CHSモードは許容されるがH=15の変態、さらにCが本当に16382まで(普通は黙認で65534) ・容量変更不可 EXIDE2Gnで「一応は」使えるようになります。
ところで単にIPLware置き場としてIDEのディスクドライブを使っている場合、HSパラメータを変えても動作はしますが、格納上限が変化するわけなのですよね。8:17だと136未満まで、16:63だと1008未満までです。多数IPLwareアプリを入れていると136を超えてきてしまうわけですが、8:17に戻したときに危ないです。同じことは、IDE-SCSI変換で接続したものをIDEに繋ぐときにも言えます。この危険性をどうすればいいかの策は思いつきません。まあそんなに大量にアプリを入れる人やつなぎ替えるひとはいないから問題になったことはないのでしょうけども。
|
|
KAZZEZ 2024年11月17日(日) 15:05 |
修正 |
> IPLwareの格納上限 そんな変化もあったのですね。そういえば8月にXc16(8G壁機)でCFにLBA_IDE(とKBNEW)を入れて2kのインストールテストを行ったとき、何回かに一回はIPLwareローダが画面フラッシュするだけで肝心のLBA_IDEが実行されない(?)ことがありましたが、IPLware実行前にCFリセットが起きてHSが変わったと考えれば説明が付きそうですね。 ただ、よく考えたらあの時も使っていたのは8GBのCFでしたからHSが変わったとも考えにくく、むしろ例のマルチプルセクタの設定が変わってモジュールが読めなかったのかもしれません。
|
感謝感激98Multi MCtek 2024年11月17日(日) 23:21 |
修正 |
まりもさん、魔のコード退治&Multi対応お疲れさまでした。
>ちなみにDOSコマンドとしても使えなくもないです。 とありましたので、バージョン1.00のEXIDE2Gn.ROMから.COM形式と思われる部分を切り出して、OSFDIPLwareに組み込んでINIC2051+4GB SDをつないだCe2で実行してみました。
結果は成功で、以前にLBA_IDE環境にて16:63パラメータでフォーマットしてあったSDカード上のパーティションに問題なくアクセスできました。 これでINIC2051はLBAモードだけでなく16:63のCHSモードでも正常に動く(16:63で決め打ち動作している)らしいことの裏付けができました。
しかし、FDSK98を実行してみると、Cの値に8:17で計算された値が入っているのか、容量が過大に表示されてしまいました。 また、OSFDIPLwareのブートセレクタでHキーを押し固定ディスク起動メニューを起動した後、パーティションを選択しても起動させられませんでした。
正しくない使い方での報告で恐縮ですが、気づいた点は共有しておこうと思います。
>「特定IDEドライブのブラックリスト」を潰してパッチコードを置くようにしました。 このパッチを必要とする際は小容量HDDを使わないでしょうし、小容量HDDを使いたい場合はROMボードを抜けばいいだけなので、たとえ生き残っていたとしても問題ないでしょう。
>格納上限が変化する 先頭パーティションの開始シリンダを後ろにずらせばたくさん入れられるというわけではく、最初のシリンダ内しかつかえないルールだったんですね。一杯になるまで入れたことがなかったので気づきませんでした。
|
あとからinitialize法の限界? まりも 2024年11月18日(月) 0:31 |
修正 |
どうも確かにシリンダ数はinitializeコマンドをBIOSに発行しても変化しないっぽいですね。即値しか変更しないバージョンでもそのようです。デバイスへのHS変更は行われるようです。なので以前に16:63でフォーマットしておいたメディアは読めたのでしょう。
ところでプライマリとセカンダリで別々のHSにできないかと苦心していますが、第3世代以上に頑なにパラメータは1組しかない前提の作りなので、もう別途にパラメータの記憶場所を作るしかなくなりました。IDE BIOSのワークエリアRAMのD800:2080h、2090hの後ろの方を使っています。それを参照するように書き換えるとうまく行くかもしれません。とりあえずヘッド数だけ分離できるようになりました。
例えば543MB以下は従来の8:17で、それ以上は16:63でというような混在ができると、メディアの移行コピー時に便利だと思います。
【追記】IPLwareアプリ格納域上限は「一応」インストーラはシリンダ0内としています。次のシリンダから領域が始まるのが普通だからですが、パーティションの現況を参照して、先頭領域のシリンダ手前まで使うようにすることは可能です。しかし今度はフォーマッタがIPLwareのことなんて知らないわけですから、領域の再確保の時にシリンダ0をはみ出た分は潰される恐れがあります。ということでシリンダ0内としておくのは無難な仕様だと思います。
いっぽう最終領域のシリンダ境界より後ろの端数を使うという手もあります。現行のインストーラはやりませんが手動でやることはかまいません。ただこれもHSが変わると端数も変わり、潰される運命にあります。
それでも今後のIPLwareの拡張の方法として、末尾の端数に飛ぶというのはアリだと思います。オンボードIDEならBIOSを使わないでそこを読みに行きます(最終のBIOSシリンダの次なのでどっちみちBIOSではアクセスできません)。そこに別途非BIOSアクセス版の別のローダを置きます。問題は端数のセクタ数がいくらになるかは予想がつかないことです。デバイスや制限容量によって異なり、HSの積で割り切れて0セクタになることもあります。せめて5セクタくらい必要かなと思っています。
|
インストーラの仕様はシリンダ0だけ かかっくん 2024年11月18日(月) 0:52 |
修正 |
>>格納上限が変化する > 先頭パーティションの開始シリンダを後ろにずらせばたくさん入れられるというわけではく、最初のシリンダ内しかつかえないルールだったんですね。一杯になるまで入れたことがなかったので気づきませんでした。
インストーラの仕様でわモジュールがシリンダ0にだけ入り枡。 此処で度々出て来る『仕様外の使用法』としてディスクエディタ(DDTX等)で直接書き込んでテーブルに モジュールを書き込んだLBAを書き込めば、BIOSで正常にアクセス出来る範囲内で何処に配置しても動作し枡 領域内に入れてクラスタをスキップセクタにする方法も有馬す
|
配線さえ出来れば かかっくん 2024年11月18日(月) 4:17 |
修正 |
> ・98multi Cs2で動作検証,SOUND BIOS 有効/無効に対応確認(画像1)
配線さえ出来ればメインをHDD 2(SM)にして、HDD 1(PM)を安定デモ不安定デモCFにするとか。 CFリセットが起こっても、取り敢えずわLBA 16迄わ讀める筈デスし、エントリのLBA-8から讀むのを検討する時期鴨 # CDR-260わSSにしてNECCDD.SYSにパッチ デモ↑をすればHDD 1にしても無問題な肝
|
IO433h リウ 2024年11月18日(月) 9:10 |
修正 |
>矢っ張りバッファ 忘れていますがIO433hがその機構に関わるようなことをやってくれてないですかね 何でテストすればよいのかわかりませんけれども
|
コールドスタートとソフトウェアリセットの判別法 まりも 2024年11月18日(月) 10:38 |
修正 |
ttps://x.com/One_PC9821/status/1858057525473718275 を読んだので書いておきます。 PC98のメモリチェックのコールドスタートとソフトウェアリセットの区別をするフラグがどこにあるかはわたしも突き止めていません。undoc2にも当然記載はありません。486-PCIバス搭載機世代くらいで言えば、I/O 534h関連でしょうか。裏KCGつまり外字メモリには何やら書き込みと参照を行っていますから、そのどこかにも鍵があるのではないかと思います。
ITFを読むにしても外字の設定ルーチンは読みにくくて骨が折れますよね。電源投入直後のFDloader起動の段階では、1MB以上のメモリチェックが一度も行われていないので、この時点での諸情報のどこかをいじってからソフト的に再起動すると、メモリチェックが速くなるかパリティエラーが出るところを見つけられるかもしれません。そこが鍵ですかね。しかし後者の場合はメモリチェックの仕方そのものを捻じ曲げないことには、メモリチェック時間をソフトリブート並みに短縮して真っ当に起動することができません。
ちなみにリセットボタン付きPCI世代機だと、 ソフトリブート < リセットボタン押し << 電源投入 この3つでメモリチェックの時間が異なるようです。となると判定基準は一つではないわけです。コールドスタートといっても前2者も区別する必要があります。
ということで判別法を見つけることはできていないし、見つけたとしてもパリティチェックがきつい機種ではあまり意味はないので、メモリチェックの仕方そのものを捻じ曲げる方法(機種ごとに結構違う)を見つけるほう実利的です。
なおこうした研究解析をするのであれば、ROMとSRAMで二重化して切り替えるスイッチをつけるといった改造から始めるべきだと思います。ROMのソケット化だけでは面倒すぎます。それか、実機に限りなく近く些細なハードウェアも完璧に再現できるエミュレータを使うことです。QEMUはどこまで?
|
あとからでは手遅れか MCtek 2024年11月18日(月) 13:33 |
修正 |
>シリンダ数はinitializeコマンドをBIOSに発行しても変化しないっぽい IDE BIOSが最初に実行されるより前にパッチが実行されないとうまくいかないわけですね。 今度ROMに焼いて試してみます。
>インストーラの仕様でわモジュールがシリンダ0にだけ入り枡。 >BIOSで正常にアクセス出来る範囲内で何処に配置しても動作し枡 たとえば第一パーティションの先頭を4:8:17から切る予定としたときに、IPLwareのインストール時だけ強制的に32:17パラメータで認識させた状態で行えば、見かけ上0シリンダになった0〜3シリンダを全部使えそうですね。
そういえば、SC983PATが追加されていたことに今気づきました。 ツール化してくださってありがとうございます。
>ソフトリブート < リセットボタン押し ここにも差異があったんですね。 電源投入時のメモリチェックがSTOPキーで飛ばせるとの話もありましたが、確かに飛ばせるものの正常に起動しませんでした。
|
リセットのトリセツ まりも 2024年11月18日(月) 17:26 |
修正 |
>今度ROMに焼いて試してみます 逸般家庭に必ず1枚はあるEMSメモリボード I-O DATA PC34RをROMエミュレータにするのもお手軽でいいですよ。メルコのEMJはCバスのリセット信号を受けないようにする改造をすれば同様に使えます。 ttps://www7b.biglobe.ne.jp/~marimo9821/exiderom/pc34d0.html ということでリセットの話を・・・
「ホットではない」リセットとは次の(0)-(2)を一般的には指していると思います。(3)は電源投入とは違うけれど「ホットな」リセットです。 (0)シャットダウンポートを0,0にセットしてOUT F0h →リアルモードに戻る/V30にするための機構 (1)シャットダウンポートを1,1にセットしてOUT F0h (2)I/O 534h の bit0を反転して出力する(だけ) (3)リセットボタンを押す
(0)と(1)は80286以降でCPU「だけ」もしくはCPU「直近」の回路をリセットする機構です。おそらく486の中期より前の機種では(1)で実質的には用が足りていたと思います。486中期以降(JEDEC SIMM搭載機以降)の機種では、(1)では周辺回路がリセットされず困ったことが起こります。たとえばROMやシャドウRAMの出現状態がリセットされません。ソフトウェアでは完全なリセットができないわけです。
普通に昔からある「ソフト(コールド)リブートをするプログラム」は、たぶん(1)だけをやっていると思います。
ソフトからも(3)相当のことをする必要性が生じてきて、486中期以降では外部回路も含めてリセットするため(2)I/O 534h を装備させたのだと思われます。これは(1)をせずにリセットできているようです(註*)。
メモリチェックに関連する状態記憶も(1)と(3)では様相が異なるはずです。チェック時間が ソフトウェアリセット < リセットボタン <<電源投入 と書いたのは、(1) と (2)=(3) との違いが理由です。(2)でリセットする場合は(3)リセットボタン押しと同じかと思います。ちなみに(2)ではCバスのRESET#信号が出ます。(1)で出ないのは昔からの仕様です。
リセットボタン無しのATX電源機種では、(3)が不可能なので、(2)でリブートするとチェックが速くかつ周辺がリセットされて都合がよいです。「PowerGoodリセット」は電源投入と同時に(3)をやっているようなものなので、ハード的にはリセットがきちんとかかりますが、メモリチェックの状態記憶は電源投入時扱いになります。これが迷惑な仕様ではあるわけです。
なおFFFF:0000(F000:FFFF)へのジャンプは、V30までの機種ではROMに書いてある通りに動作し、80286-486中期より前の機種は(1)で動作し、以降の機種は(2)で動作します。したがってあまり問題なく周辺回路もリセットされます。妙なことをしない限り(シャドウRAMの内容改変とか)、リアルモードであれば一応必要なリセットはこれでできます。
(*註)PCI搭載機のITFでは、(1)のシャットダウンポート1,1設定だけ-->(2)534h反転--> OUT F0h -->HLT命令の順に念入りにやっています。正常なら(2)のところでリセットがかかりますが、もし異常ないしは機能装備していなかった場合でも次でリセットがかかります。そこも故障ならHLTかjmp $ で無限ループです。HLTの代わりにjmp ffff:0000 にしておけば、8086からP6まで機種に依存しない最適なリセットプログラムになりえます。
ところでI/O 534hにおそらく最初に気づいた人は、私の知る限りではNIFパソ通時代のメンバーだったようです。あのP55CSUP.SYSの作者のT.A.Labs氏です。当時の内輪での会話ログを検証して確かめました(当時は重要なことだと意識してなくて記憶に残っていませんでした)。今はPowerX氏のサイトには書かれていますが、この発見を受けてのものだと思います。
|
STOPキーって かかっくん 2024年11月18日(月) 18:19 |
修正 |
> 電源投入時のメモリチェックがSTOPキーで飛ばせるとの話もありましたが、確かに飛ばせるものの正常に起動しませんでした。
STOPリセットわホットスタート(RAM内容の保持)をする為の操作で、BASIC位でしか正常に動作しな かったやうな?
> リセットボタン無しのATX電源機種では、(3)が不可能なので、(2)でリブートするとチェックが速くかつ周辺がリセットされて都合がよいです。「PowerGoodリセット」は電源投入と同時に(3)をやっているようなものなので、ハード的にはリセットがきちんとかかりますが、メモリチェックの状態記憶は電源投入時扱いになります。これが迷惑な仕様ではあるわけです。
PGリセットわ『PowerがGoodでなくなった』を意味し枡から電源入と同様にチェックするのわ当然でせう リセットIC其の物デス(と云うよりリセットICのOC/OD出力をPUした物がPG)
> なおFFFF:0000(F000:FFFF)へのジャンプは、V30までの機種ではROMに書いてある通りに動作し、80286-486中期より前の機種は(1)で動作し、以降の機種は(2)で動作します。したがってあまり問題なく周辺回路もリセットされます。妙なことをしない限り(シャドウRAMの内容改変とか)、リアルモードであれば一応必要なリセットはこれでできます。
F000:FFFFでなくF000:FFF0デスね F000:FFFFでわFFFFFhに飛んで仕舞い枡
|
リセット雑感 KAZZEZ 2024年11月18日(月) 18:20 |
修正 |
> (2)ではCバスRESET#信号が出ます。 この意味ではJEDEC SIMM以前の機種でも(2)が欲しかったところですが、無かったのでしょうかね? Ce(61SIMM機)でアライドテレシスのCバスLANボードRE1000(plus)をDOS/Win3.1上からLANマネージャで使っていた当時、(1)でソフトリセットするとLANボードがエラーになって動作しないので、必ずリセットボタンを押す必要がありました。
> メモリチェックがSTOPキーで飛ばせる すでにご指摘がありますように、事実上N88BASICのための機能ですから、あまり意味無いんじゃないかと思います。 メモリ内容を保持したまま再起動することで作りかけのプログラムを失わずにコマンド入力に戻るための機能ですから、BIOSやOSがその配慮をする必要があるでしょうし、当然プロテクトメモリの扱いも考慮されていないと思われます。 特に純正以外のSCSIやATAボード(たぶんIPLwareも)を使っているとBIOSやIPLの段階でどれだけメインメモリの内容を改変しているのか分かりませんから、BASIC用途ですら正常に機能するのか疑問です。 純正のSCSIボードが画面に何も表示しないのは、この機能のための都合ではないかという気がします。逆を言えば多くの場合においてBASIC環境は考慮されていないということでもあるでしょうけど。
|
EMJボードの抗リセット改造 まりも 2024年11月18日(月) 19:10 |
修正 |
秋月でパワーONリセットICを買ったぞと何年か前に書きましたが、EMJボードがリセットされない(マッピングが解除されない)ようにする改造の中身を書いていなかったですね。 手順 1.CバスのRESET信号とMGA-7チップの導通のあるピンを調べる(探す) 2.適当なところでこのパターンを切断する 3.MGA-7側のそこと電源リセットICの出力ピン[3]を繋ぐ 4.リセットICのVcc[2]をVcc5Vに繋ぐ 5.リセットICのGND[1]をVcc5Vに繋ぐ
半田付けの順番としては5、4、3かなと思います。 三端子のリセットICのピン番号はその製品のデータシートに従ってください。 ピン配置は画像の通りという保証はありません。 CバスのRESET0のピン番号はB34です。 MGA-7の該当ピンは忘れましたが105-110番あたりでしょうか、画像でなく現物をテスタで。 このボードでは積層セラコン近くでGNDとVccの拾えるところにリセットICを置きました。 MGA-7への配線はピッチが細かいので半田付けは少々難しいです。 切断したパターンを磨きだして半田付けするほうが普通は容易と思います。
D000:0にこのボードのメモリを配置するプログラムはEMJUMB.COMですが、そもそもがリアルモードUMBを目的として作ったので、C0000:0〜もRAM化してしまいます。
【追記】>(2)が欲しかったところですが、無かった たぶんそうです。undoc2にもそれらしいI/Oの記述はないですよね。当時はミイソもあまり深く考えていなかったのでしょう。 【20日追記】上でソフト的なハードウェアリセットのことを書いていますが、それをやっている拙作reboot.exe(diskbootの付属品)に、メモリスイッチのブート装置を変更してから再起動する部分にバグ(常に標準に戻ってしまう)が見つかったので、差し替えました。
|
HDDすぐ壊れる? KAZZEZ 2024年11月20日(水) 21:36 |
修正 |
> すぐ壊れるConnerドライブ がーん…そうなのですか。先日実用配備したばかりのBX3に入れていたのが、まさにCONNERの420MB品でした(IDEDEVで確認…LBA非対応でした)。Cバスが少ないのでSCSI I/FやPCカードスロットは入れておらず、光学ドライブもただのCD-ROMでしかないので、FD以外のストレージはHDD1個(とNAS)でまかなうつもりですが…壊れたらまた1日がかりの入れ替え作業です。(汗
たしかBfにも同じものを入れていたと思いますが、こちらはスキップセクタ頻発の症状が出ていて使い物にならなくなりつつあります。 # たぶんXa7/C4にデフォルトで入っていたのがこのタイプのドライブだったんじゃないかと思いますが、拾い物なので確証なし。
|
500M以内ならLBA非対応も仕方なし かかっくん 2024年11月21日(木) 14:56 |
修正 |
まぁLBAの可否がEIDEか否か(本来わサイズでわナイ)デスから528M(504MiB)以内(実際わ1Gとかが有る シリーズの小容量品とかがLBA対応、シリーズの最大が500M以内の多くわ非対応)のモノなら LBA非対応デモ仕方ないでせう # 抑々500M以内のわ16:63/15:63でナイのも多い。256M以内わ8:32とか128M以内わ*:17とか
蛇足デスが128MのCFにも*:17のが有ったのわ(略・事実) 98に最適鴨知れませんが
ところでMemtest86+の98版・うんず版が有るらιぃデス mcdom.blog.fc2.com/blog-entry-5.html
|
|