| Ce2/Cs2のROM まりも 2025年12月1日(月) 0:22 |
修正 |
先月スレッドの最後 >Ce2/Cs2ではオンボードSCSIも無くなりましたので4Mbも使われていないような気がしますが Cs2のマザーボードにはuPD27C4000が載っており4Mbitです。ただし同時期の機種はどれも4Mbitが載っていながら半分しか使っていないので、Cs2/Ce2でもそうかもしれませんね。読み出すことができれば調べてみます。
|
| IPL1前パラメータ型BIOS リウ 2025年12月1日(月) 8:44 |
修正 |
PCI版には大きなバグが含まれていました。 KAZZEZさんには大変な手間をおかけして申し訳ないです。
ブートROMが配置されている場所が書き込み可能な状態になっておらず、かつパラメータ置き場をAT互換機用コードの位置を再利用、という状態で強制的にBIOSに渡すSが00になっていました。その状態でLBAからCHSへの計算も行うので0除算直行でした。しかも0除算回避ルーチンを設置しておらず逃げることも不可能な状態でした。まったく動くわけがありません。
そこをまずは修正しています。Int1FのAX=CD02h、BH=対象セグメントの上位アドレス、BL=20h,DX=0という非公開命令をLHA521のROMが使っていたのを見てそれをそのまま写しています。対象セグメントが(PCIのRAMとして)書き込み可能になります。とっても便利ですが今まで目にしたことがないのでどこにも解説は書かれていないと思います。 [13:00追記] CanBe系列にはなさそうです。Cr13、Cx13,Nr166/Xに存在せず(ただしこれらにはPCIカードを刺せないのでそんなに影響なし)Xt13、Xb10、V166_D2には存在 残念ながらXfにはありませんでした。430LXなEPSON機にも調べてすらいませんがないと思われます。 [13:20追記] 勝手RAMにする方法 AX=CD01 BX 同じでInt1Fを呼ぶと返事が帰ってきます。AX=CD01のままだと未実装、0000で帰ってくると実装されているはず、DX=1で帰ってくると書き込み不可、DX=0で帰ってくると書き込み可の状態っぽいです。 それを呼んだ後にAX=CD02でInt1Fを呼ぶと勝手RAMにはなりそうです、がやはり機種依存なので全機種で使えません。結局IOを叩くことになるのなら便利なプログラムとしては使えそうにないです。
> card at 0:13:0 set > PCI mechanism1 used > card found at 0:13:0 この表示がされるということはカード側がまともにIOを設置できておらずIOがFFFEh扱い、という状態です。Intelsat /editやPCILIST -bでも同じようにFFFFと表示されるか無視されてしまうと思います。 その状態のときにあれやこれやをするルーチンは入れていますが、まずはPCI版は完全にバグっていました。またIPLWare版で止まるのは無理やりのあれやこれやがうまく行ってない可能性が高いです。余計なことをせずとも正常反応してくれる状態でないとうまく行かないかもしれません。 IPLware版を使ったあとだけこうなってしまう、ということはそのあれやこれやがおかしいという話になりますので、やりなおします。
そのバグつぶしの際にちょっとだけ気づいたこととして div0回避ルーチンですが、div ecxで飛んできた場合には3byte進める必要があります。実際に使われることはありえないと思います。(私のBIOSはやらかしました。)余計な判定を増やすとメモリをたくさん食べるのでよほどのことがないかぎり今のルーチンで十分と思いました。
SMIとSMMの勉強を始めました。とんでもない機能ですね。
|
| そんな便利なファンクションが まりも 2025年12月1日(月) 11:31 |
修正 |
>Int1FのAX=CD02h、BH=対象セグメントの上位アドレス、BL=20h,DX=0という非公開命令 これは滅茶苦茶便利な機能ではないですか!! よくぞ発見されました。機種依存部分のコードを大幅に簡略化できます。問題は9821Xf、Xa初代の頃の機種にも実装されているかどうかです。場合によってはCfも。ちなみにPCIの旧い機種ではCDxxのファンクション、たとえばIRQ routing取得ファンクションなどが実装されていません。なおやはりRAM化するブロックはintel chipset機以外でも16KB単位でしょうかね? そもそもがundocumentなチップセットであるRvII26や山猫でも試さなきゃ。
SMI,SMMのことは全然知りませんが、以前、電源を自動で落とすプログラムをAPM BIOSではなくI/Oだけでやろうとして、勉強のためファンクション9Axxをtraceしました。ところが突然知らない町に旅に逝ってしまい、こりゃなんの資料もなしに解析するのは無理、と思ったことがあります。 モデムring電源ONの機能やタイマー電源の機能もSMMつながりでしょうかね。あとは何が・・・気になっているのは、PCI機のマザーボードにあるserial EEPROM 24C01へのアクセスです。
【13時追記】このファンクション int 1Fh, CD02hをいじってみました。 まず元々メモリに接続されている状態でないと機能しないようです。なので既にBIOS域に何かがいる状態でないとダメです。勝手RAMを作るときには使えません。BHとして使える範囲はC0h〜DChまでです。残念ながらF0hやE8hという指定は無効でした。まあ拡張BIOSが自身で使うための機能なのだから、そういう制約はあって当然でしょうけども。
シャドウメモリが予め出ていれば、DX=0でRAM化、DX=1でWrite Protected RAMになるようです。ちなみに当該セグメントのPCI PAMのWrite可bitだけを立てる操作をするようで、「CバスのROMが読めるけど本体のシャドウメモリに書き込める」という状態になります。シャドウメモリに読み書きするにはPCI PAMのread可bitを立てないといけませんが、DX=0の機能では為されませんし、DX=1でもPCI PAMに何も変化が起きません。write可bitを引っ込めるだけのようです。
DX=2つまりbit1を立てるとキャッシュが有効になるようです(intel430系チップセットの場合)。この他のbitやBLの他のbitのことはまだ調べられていませんが、適当にやると結構ハングアップしますね。しかもD0を操作仕様とすると道連れでD4に副作用が及ぶ(その逆もしかり)という問題もあるようです・・・ちゃんとトレースで調べるべきかも。
【17時追記】結論として、このファンクションは使い物にはならない感じです。PAMの上位と下位の4bitの片方を設定しようとするともう片方がメモリの接続から外れてしまいます。またBLやDXの使ってなさそうなbitをいじると勝手にキャッシュ可にされてしまいます。これってバグなんじゃないですかねぇ・・・ LHA-521はよくこれで動いていますね。
|
| ROMを写す際に かかっくん 2025年12月2日(火) 0:32 |
修正 |
CバスROMが讀めてシャドウRAMに書けるモードってRAMイヒでROMをシャドウRAMに写す際に 遣えそーな?実際遣って居そーな? ; (此のモードに設定する) ; --- CバスのROMから同じアドレスのシャドウRAMに写す ; ES:DI = DS:SI = BX:0 に設定する mov BX,imm16 ; BB ** ** ; mov BX,[mem16] ; 8B 1E ** ** mov DS,BX ; 8E DB xor SI,SI ; 31 F6 mov ES,BX ; 8E C3 xor DI,DI ; 31 FF mem16:defw segm ; ** **
; ES:DI = DS:SI = [mem32] に設定する lds SI,[mem32] ; C5 36 ** ** les DI,[mem32] ; C4 3E ** ** mem32: defw 0 ; 00 00 defw segm ; ** **
; 転送量の半分を設定してCバスのROMから同じアドレスのシャドウRAMに写す mov CX,imm16 ; B9 ** ** ; mov CX,[mem16] ; 8B 0E ** ** rep movsw ; F3 A5 mem16: defw **** ; ** ** ; --- ; (R/W共シャドウRAMに設定する)
まぁ今日でわ多くの場合要パッチに成増から別の位置に写してパッチして移すやうでせう あとバンク切替を平屋に組み替えるとか、バンク切替を同じ位置への書き換えにする(ソフトウェアEMSの やうに他の位置から書き写す。WBキャッシュと相性良いが実行されない無駄な部分もキャッシュされる) とか? # UMB使用等でV86ならページングで容易に切り替え出来る # PCI,PnP含めバンク切替の全BIOSをV86のページングで切り替えるのも技術的に可能 # 但しリアルモードに戻すITFに限り非推奨 # まぁV86ならITFへのパッチも(286→386+アクセラ機であっても!)フカ能でわナイのデスが
Ce2,Cs2のμPD27C4000わ大小有って(SOPのわμPD23C4000鴨)片方が漢字ROMだとか? # BIOSも漢字ROMも2MのμPD2[37]C2000で足りそーな?
|
| 手数は減るけども まりも 2025年12月2日(火) 6:55 |
修正 |
>ROMをシャドウRAMに写す際に遣えそーな 読み出して同じところに1回書くだけですから手数を減らすことができますが、ソースコードの可読性は悪くなるというか、「これって何無意味なことやってんだ?ハテナ」なります。そして、パッチ当てがある場合は、途中で終了するわけにゆかなくなります。
別のところに一旦コピーしてからROM/RAM変更してコピー戻しをする普通の方法の方がいいです。コピーした方にパッチを当てれば、パターン不一致などの理由で途中で放棄しても問題ありません。
|
| ほぼ私信 KAZ.K 2025年12月4日(木) 8:55 |
修正 |
だいぶ前に某所のポチ枝に書いていたんですが、埋もれて気付かれていなかったようなので、余計なお世話かもとは思いつついちおう転載しておきます。読み違いは有り得るのでその辺は適宜ご注意ください。
なお元の枝で言及している TowerNMI/TowerSMI や TTwT の現物はhp.vectorと共にどっかいってしまいましたが、ひとまずweb.archive.orgには確保されているようなので、必要でしたら適当にそちらを当たってください。
A08/A0A近辺 A08 &01 ←→ SMI配送マスク A09 ←→ レジスタアドレス(以下[]表記) A0A ←→ レジスタデータ
割り込み配線の流れ
トリガー[03]、電源スイッチ、SERR#、テストパッド等 ↓ \ 入力マスク[x0]\ ↓ \ ラッチ[x1] A09/A0A ↓ / 出力マスク[x0]/ ↓ ↓ ↓ SMI→ A08マスク → CPUのSMI#入力 ↓ NMI→ システムポートC(マスク+ラッチ) → 50/52マスク → CPUのNMI入力 ↑ チップセットその他バスのNMI出力
//以下 2023/01/24 (Tue) 08:49:17 付投稿より。スイッチ=電源スイッチ。
-------- [x0] ←→ 入出力マスク 0=入力無視+発射保留 [x1] ← 発射(待機)中ステータス [x1] → 0=発射待機解除 1=nop [0x] SMI &80 [03]&01 手動発射 &04 たぶんSERRあたり &02 [32]=1 ← スイッチ &01 たぶんMMDUMP [3x] NMI &02 [03]&02 手動発射 &01 [32]=2 ← スイッチ -------- [02] &02 ← スイッチ入力# [32] ←→ スイッチの接続先選択 0or3 無接続っぽい? 1 → SMI (&02) 2 → NMI (&01) [03] → 手動発射トリガー &02 → NMI (&02) &01 → SMI (&80) -------- [10] ← たぶん電源EC &02 EC DATA WRITE READY &01 EC DATA READ READY [11] ← EC DATA READ ??? [13] → EC DATA WRITE 80 06 00 00 初期化っぽい 80 07 00 02 電源断前準備? 80 01 00 00 電源断 -------- [20] ??? --------
補) たぶんSERRあたり: チップセットにメモリECCエラーが記録されていたらNMIを発射するように書いてあるように見える。チップセットがSERR#→SMI送出設定になっている場合でも従来の挙動を維持するためのshimっぽい。ただし少なくともXvではSERR#→NMI送出設定になっているのでこの機構が実際に働くことは無さそうに思える。(Raというか440FXだとSERR#からNMI/SMI#への接続は本来PIIX3の領分らしくちょっとはっきりしない)
補2) たぶんMMDUMP: SHIFT+CTRL+STOP+スイッチSMI と等価。
補3) [20] ???: クロック倍率設定の読み取りポートその他。詳細未読。
|
| KAZZEZ 2025年12月5日(金) 1:54 |
修正 |
RaII23でBIOSの出現しなくなったVT6421の件ですが、AT互換機に差したら普通にBIOS認識しましたので、ROM内容が壊れたわけではなさそうです(疑ってすみません)。そしてまたRaに戻すとBIOSが出現せず起動阻害も起こりません。PC-98用BIOSの用意されていないPCIボードであればそのほうが都合がよいですから、何故そんな状態になったのかは興味深いのですが、全然わかりません。(汗 前述のようにRaをスーパーリセットしても直らなかったわけですから、VT6421にアクセスした際にボード側の設定が変わったとしか思えないのですが…。
HPT368についてはIwillのウェブアーカイブにも残っているアップデータ web.archive.org/web/20020606025014/www.iwill.net/support/drivers/raid109.exe を試す限り、AT互換機のDOS上でBIOS更新できそうなことは確認(といっても同じバージョンの上書きしか試していませんが)。しかしPC-98上で実行するとハングするようですので、万一にもAT互換機上で起動できなくなった場合の対策を考えておく必要がありそうです。 # ところで同じバージョンの上書きと言っても、PCIXROMで読み出したBIOSはきりの良いサイズで末尾にサム合わせがありましたが、アップデータ付属のBIOSファイルはサムが0になっておらず、ファイル末尾が中途半端なところで終わっておりサイズが小さいです。どちらを書き込んでもAT互換機上でBIOSは動作しますから、BIOS更新プログラムが勝手にサム合わせして書き出しているのでしょうかね。
|
| お返事 リウ 2025年12月5日(金) 3:18 |
修正 |
おそらく私宛と想像しますので KAZ.Kさま とてもわかりやすい解説ありがとうございます。A08系列IOの1級資料として保存しました。ちょろっとITFを読んだ感じのものと一致しておりますのでIntelチップセットではこれをヒントにあれやこれややろうと思います。
VT6421のROMについて 手持ちのカードをinternetで検索すると、ROMが載っているカードと別リビジョンのどうみてもそれを省略したタイプのものがひっかかりました。やはり私の手持ちはROMへの配線すら省略されてしまったようです。 ですが、たまたまPCILIST-bを見たときにROMが(形の上では)前に出てきていました。資料を読むとconfig spaceの68hですが、そこや69hの値を弄くると出たり消えたりするようです。うちのカードは配線すらされてないようで何も見えませんがそのような気配でした。叩いてみると出てくるかもしれません。何かの解決を示せているわけではありませんが情報として
|
| 追試した結果… KAZZEZ 2025年12月6日(土) 0:58 |
修正 |
リウ様情報ありがとうございます。 結論から言いますと、今のところ、どうも80芯ケーブルにHDDが繋がれているとBIOSが出現しない状態になっているようで、HDDを外せばPCILISTやPCIXROMはBIOSを見付けてくれました。しかしPCILISTのMEMはNoとなっており、なぜか起動阻害も起こりません(他にPCIとCバスには何も差していません)。ちなみにPCIXROMで読み出した内容は以前のものと全く同一でした。
その状態で該当PCIスロットのPCIレジスタ68h/69hを適当にいじってみたところ(資料が無かったので本当に適当ですが)、PCIXROMでBIOSが検出されなくなったり検出されたりといった挙動は確認できました。しかしIDE-HDDを繋いでROMが引っ込んでいる状態では68h/69hを適当にいじってもROMは検出されませんでした。
なんとも中途半端な結果ですが、とりあえずヤドカリブートで試用すべきのようです。 [追記] SATA1にSSDを繋いだら起動阻害が起きましたので、BIOSが機能したのかもしれません。もしかしてROM内容に関係なく最初からそういうハードウェア仕様だったのでしょうか?? AT互換機でも何も繋いでいないときはVT6421のBIOS表示が出なかったような気もします。しかしPC-98ではIDE-HDDと併用したらBIOSが出現しないというのも変ですが。
|
| 40芯ケーブルの場合? かかっくん 2025年12月6日(土) 2:09 |
修正 |
| 続き KAZZEZ 2025年12月6日(土) 20:26 |
修正 |
> 40芯ケーブルで試すと ご助言ありがとうございます。そういえばAT互換機で試したときは2.5インチ変換ケーブル経由のCFでしたので全結線相当だったかも?と思って替えてみましたが、同様のようでした。 結論を言いますと、どうもPC-98側でテストに使っていたMaxtorの40GB(ICCFIXで31.5MBに制限)との相性のようでした。なぜか件のHDDをIDEのまま繋ぐとBIOSが引っ込むようです(SATA変換して繋ぐと起動阻害)。 VT6421に2.5インチ変換ケーブルで500MBのHDD(IBM)を繋いだところ、普通に起動阻害になりました。 また(IDEの)CFアダプタでCFを試したところ、マスタ側にCFを差していると起動阻害、スレーブ側だけに差すと起動阻害は起こりませんでしたが、DOS起動後に(MEM=Noですが)BIOSの存在はちゃんと検出されます。 SATAにSSDを繋ぐ限りは1/2どちら側でも起動阻害になるようでした。 いずれにしても件のHDD以外でROMが引っ込むようなことはなかったと考えられますので、今のところHDDとの相性としか思えません。 [23:30追記]AT互換機でも、件のHDDは(オンボードIDEでは認識するのに)VT6421上では認識しませんね。これが繋がっているとSATAに繋がれたSSDまで認識しないのも同様でした。
先月iplbios版を試したときに件のIDE-HDDでしか動作を確認できなかったことも、もしかしたらBIOSの無いVT6421で開発されたことで、逆に相性が良かったのかも?
----10日01:43追記---- HPT368のアップデートプログラムLOAD.EXEがPC-98で動かない件について。軽くデバッガで追ったところ、どうもAT互換機のI/O 0x61(NMIの状態を示すらしい)bit4を使ってリフレッシュタイミングを計るルーチンから抜け出せなくなっているようでした(PC-98ではハイレゾマウスポートだそうで、ノーマル機ではFFのまま変化しないようです)。機種依存でタイミングを計っているとなると移植するには目的を調べた上での代替ルーチンが必要ですから、簡単ではなさそうですね。さすがにプログラム全体を解析するほどの元気はありません。
もっとも、どるこむのログを見たところ(ABIT HotRod66での話ですが)書き込み成功の表示が出てもAT互換機で起動しなくなってしまったケース(ROM種別の選択を誤ったらしい?)もあるそうですので、そもそもAT互換機で書き込みに成功していたのかどうかも定かではなかったりします。 結局のところHPT368(VT6421もそうですが)のBIOSを自由にテストするにはROMをソケット化改造して別の手段で書き換えられるようにするしかなさそうです。当面はiplbios版かヤドカリブート版でテストするのが無難そうですね。
> Cs2のマザーボードにはuPD27C4000が載っており4Mbitです。ただし同時期の機種はどれも4Mbit これも同ログを検索してみますとそのような話が見付かりました(すみません)。 対応するROMライタが限られるそうで。手持ちのROMライタも40ピンソケットは付いていますが、最大でも1Mbit(および一部の2Mbit)しか対応していようでした。 REIでパッチしたBIOS RAMデータを元のBIOS ROM(の該当個所)に(ROMライタで)書き込めば540MB制限を解除できるという話もありましたので、EXIDEABでも同様のことができないかと考えていましたが、大人しくSCSIボードか何かで試すのが無難のようです。
----20:00追記---- ふと思ったんですが、NoAtBootのAT互換機版みたいなものがあれば話は簡単になる気がするのですが、そういうことは可能なのでしょうか? AT互換機でPCIボードのBIOSアップデートに失敗して差したままだと誤動作で起動しなくなった場合に、BIOS ROMは現れていても実行されない状況で起動できるようにできれば、再度AT互換機用のアップデータが実行できるので安心なのですが。
----12日01:00追記---- > HPT36xは汎用書き込みツールが適用できます ありがとうございます。その手がありましたか(汗)。あとで試してみたいと思います。 [追記] > 対応デバイスベンダIDを追加するだけ pciflash5143に同梱されているどのEXEファイルもそれなりに内容が違うようなのですが(デバイスIDを規定していないものは)どのEXEファイルであってもベンダID部分だけを書き換えて動作するようなものなのでしょうか?? [13日1:20自己レス] バイナリを比較する限り、ベンダIDとEXEヘッダの違い以外は、文字列の長さの違いに起因する、文字列以降に配置された参照アドレスのずれのようですね。ACARDとSIIMGではちょうど6だけずれている個所がほとんどです。EXEヘッダの違いもチェックサムとかサイズ違いに起因するものばかりみたいですから、多分ベンダIDだけの変更(+SUM合わせ?)で大丈夫そうですかね。
> acpimod こちらはなぜかDLできないと思ったら、ファイルのリンク先が旧アドレスになっているようでした...というか期限切れなのですね。
|
| ハード的にROM無効/有効にした方がいいかも まりも 2025年12月11日(木) 0:18 |
修正 |
>NoAtBootのAT互換機版みたいなものがあれば できないことはないと思いますが、基本的にBoot ROMアプリを作るということになります。98と同様です。特定のデバイスのブートを阻止するというのは作ったことがありませんが、ACPI を書き換えるというのは作ったことがあります。国内では注目した人はほとんどなかったようですが、Mac OSX86を実行可能にできたという報告は頂いたことがあります。 ttps://www7b.biglobe.ne.jp/~marimo9821/pcat/acpimod.html でもブート阻止だけならROMのChipSelectを切り離す改造(ON/OFFスイッチもつける)でもした方が簡単です。ソフトを作るなんて1000倍面倒です。なおHPT36xは汎用書き込みツールが適用できます。↓の対応デバイスベンダIDを追加するだけです。I/OアドレスやROMアドレスがまともに現れた時には98から書き込みできたことはあります。 ttps://www7b.biglobe.ne.jp/~marimo9821/pcat/pciflash5.html
ところでそういえばうちにはCyrixの6x86があるなと思い出してCPUジャンク箱から出してきました。MIIのご先祖様に当たるものです。Xa7とかAnの頃に試したわけですが、後に出たK6には性能と互換性で大差をつけられたため使わなくなりました。ATX電源搭載の9821には載せたことすらありませんでした。リウさんがMIIのことについて呟いていたのを見て、それも思い出しました。Cx686をXa13/Wに載せてみるとやはり電源ボタンで電源遮断ができませんね。SMMの仕組みが異なるようです。Cx686のデータシートっぽいものをネットで拾ってみると、確かにIntelのとは違っていますね。BANK1後半のSMM用コードを改造すればいいのでしょうけど、大変そうです。そこまでしてCx686を使う気も起きません。
Cx686のキャッシュ関連レジスタもいじれば何かメリットがあるかもしれませんが、基本的に載せるのはPentium機なので、キャッシュの設定を変更しなきゃならないところもないような気がします。
|
| ROMカットで出来ましたっけ? かかっくん 2025年12月12日(金) 2:28 |
修正 |
> でもブート阻止だけならROMのChipSelectを切り離す改造(ON/OFFスイッチもつける)でもした方が簡単です。ソフトを作るなんて1000倍面倒です。なおHPT36xは汎用書き込みツールが適用できます。
CバスやISAなら兎も角PCI板で出来ましたっけ? 以前SiI3112か3114の板(確かRAID BIOS)で「窓で鹿遣わんからBIOS要らんな」とROMのCSピンを カット+PUした処、起動しなく成った記憶が有ったやうな? ピンを間違えただけ哉?
|
| CSカット まりも 2025年12月12日(金) 15:58 |
修正 |
|
CSはバスに関係ないはずです。アドレスの下位bitは共用しているかもしれませんが。一般的にはCSカットで問題ありません。なお3112/3512はRAIDかどうかの情報をBIOS ROMから読み出すので、BIOSが読み出せなくなると、今までドライバが動作していたものが動かなくなる可能性はあります。それでも他のデバイスからのブートができなくなるということはないと思います。
|
| 3114の場合。 KAZZEZ 2025年12月14日(日) 2:27 |
修正 |
たぶん玄人あたりのSiI3114ですが、RAID版にはIDE版には無いチップ(HT24LC02)がありますので、もしかしたらその関係でしょうかね? RAID版のほうに大熊猫BIOSを書き込んでWindows2000のセットアップを試したことがありますが、F6でIDEドライバを読み込ませたらセットアップは成功したように記憶しています。デバイスマネージャではドライバは正しく組み込まれていませんでしたが、ブルースクリーンになることなく動いていました。たぶんntbootdd.sysに該当ドライバを入れておけば、RAIDドライバかIDEドライバかが違っていても動作はするのだと思われます。
---- pciflash5143を試してみました。ベンダIDを書き換えても、特にEXEヘッダのチェックサムを合わせずに動くのですね。これでPC-98上からHPT368に気兼ねなく書込みできます。
気付いた点としては、書き込んだ直後にPCIXROMで吸い出して比較しようとしたとき、なぜかPCIXROMで表示される該当ボードのROMアドレスの下1桁が0ではなく1になっていた点でしょうか。しかし端数が丸められるのか、吸い出したROMデータに違いはありませんので実害は無いようでした。
なおHPT368はプライマリとセカンダリで2つ現れますが、SATA/PATA/SCSI系の3種類の書き込みプログラムについては、Silicon Image以外の場合でも > The same Silicon Image devices exist on this machine. となっております(重箱ながら…)。
取り急ぎ31.5GB制限したHDDをプライマリマスタに繋いだHPT368にhptbios.pci(11/27夕版)を書き込んで試しましたところ、特に表示は無く、FDSK98でHDDは認識されませんでした。barcheck(11/26版)の結果は以下の通りで、起動するたびにI/Oが違いますので念のため2つ示しておきます。
|
   |
| FPU用IRQ08 リウ 2025年12月14日(日) 7:58 |
修正 |
|
IRQ08が気になります。IOは素直に割り当てられてそうですのでセカンダリ側にも(なるべくプライマリも同時にがいいです)つないで動作を見てほしいです。
|
| どうにもこうにも まりも 2025年12月14日(日) 14:07 |
修正 |
>起動するたびにI/Oが違います これがHighPoint 36xボードの特徴というか異常な仕様(ものすごく控え目な言い方)ですので、IRQについてもトンデモない値になるのは道理かと思います。
|
| BIOSが実行されなかった? KAZZEZ 2025年12月15日(月) 0:04 |
修正 |
WDの40GBのHDDをPMに、従来のHDDをSMに繋いでbarcheckを見てみましたが…。よく見たらベンダIDとデバイスIDが違っていますね。PCILISTではクラスもシリアルバスとか表示されます。前述の通りBIOSが対象を認識したときのID表示が出ないので、BIOS自体が実行されていない感触があったのですが、もしかしたら今回のROMデータがPCI用ROMの仕様の何かを満たしていないのかもしれません。なお、まりもさんの書き込みツールのベンダIDを表示通りのD2E8に変えて元のBIOSおよびIDに戻すことはできておりますのでご心配なく…。というか各種ID情報ってBIOS ROMにあったのですね。
なぜか今回はI/Oが安定しており、(スーパーリセットとか他のオンボードデバイスの有効無効を変えない限りは)起動のたびに変わるということもありませんでした。なお以前話題になったI/O 8000台については、どうもPCISETを使ったときにそうなる感じでした。(PCIやCバスには他に何も差していません) ところでVT6421のほうには汎用書き込みツールは試していないのですが、迂闊に実行しないほうがよいのでしょうか?
----16日2:25追記---- uideinfについて、前述の通りベンダIDとデバイスIDが本来とは変わっていますので、そのままではHPT368ボードが検出されません。例によってuideinf.exe内にある1103:0004のID個所を、後述の変化後のIDに書き換えることで認識しました。普通に接続されたHDDを見付けましたが、40GBのまま繋いだHDDはBIOSが31.5GBに制限するはずのところをLBAで約38GBと認識しました(画像は左に追加)ので、BIOSは働いていないことになりそうです。 なお本来のAT互換機用BIOSのまま大熊猫BIOSのNoAtBootで起動したときは普通にuideinfはHPT368のHDDを見付けてくれますので、そのときと同様になると思います。
また、プライマリ(ファンクション0)側のベンダ:デバイスはD2E8:B908に変わっているのですが、セカンダリ(ファンクション1)は7580:3103という違ったベンダ:デバイスでしたので、これも書き換える必要があったのですが、この場合はセカンダリではなくプライマリマスタとしてHDDを見付けました(画像は割愛)。
|
   |
| リウ 2025年12月15日(月) 1:55 |
修正 |
テストありがとうございます。 fdsk98に反応がない、ということからBIOSROMが実行されていない気配は感じます。 0000:05E8hにIOの数値が保管されているかでこれは判別できます。また0000:04B0hの値やそれに指示されている場所がRAMとしてCPUから見えているか、でも判別できます。 IOの反応だけはかなりそれっぽく見えますのでできればuideinfの結果も欲しいです。ですがまずはカードの正常認識がかなり怪しそうです。何度も抜き差しするのが面倒だと思いますがROM書き込みでの反応が正常っぽいですよね。 うちの機械もUSBカードだけは何十回も差し直さないと正しく認識してくれなくて困っています。
BIOSROM内ID情報はPCIBIOSがカードと一致しているかの確認のために使われるものですので、ヤドカリブートする場合には、敢えて違う数値にするようなものでもあります。
16日10:00追記 報告ありがとうございます。IDが本来のものから変化してしまっているのですね。ようやく理解しました。 思いつく対策としてはBIOSROM内のPCIDEVIDの方を敢えてその数値に変えてください、それでROM実行"は"されるようになると思います、がWindowsのドライバは本来のIDと違っているせいでinfを弄くる必要がありそうです。しかしROM改変したせいでIDが変わる?という想定外のことが起きるのでしたらちょっとお手上げです。ROM内IDをさらに弄って見えているIDと一致させる必要があります。ROM内検索してそのIDと一致してしまうところも探してみます。(いました。写真参照 少し弄くってみました、(セカンダリ側はまた変なIDを返すと思います、それはオフセット47Chからになりそうです。)バイナリアップロード済み オリジナルBIOSをwebから探してきます、おそらくそのあたりを参照する作りになってそうです) 18:12追記 サムチェックを忘れていたので、アップロード修正しました。ついでにセカンダリ側も含めて調整だけはやりました。オフセット400hではなく43Chになってしまう理由がまだ想像つきませんので、また違うところを参照されてしまうかもしれませんが…
|
| HPTのファームウェアは外付けROM内にコードを置いていないか まりも 2025年12月16日(火) 17:31 |
修正 |
ATA Interfaceチップのファームウェアかハードウェアが、BIOS ROM内の情報を使って動作するというのはありますが、Sil 3x12にしても、デバイスclassについて64KB以降のところを使う程度です。BIOSコード中のさほどキリのいいわけでもない場所にベンダ:デバイスコードを記入するなんていうのは、首を傾げたくなる仕様です。OEMで色々なベンダに使ってもらいやすいようにということでしょうか。BIOS中のコードに、80x86コードっぽくないデータ部分があるとすると、もしかしてファームウェアのためのコード(本体ではなくてもその修正や追加)かもそれません。98版BIOSを作るにあたり削ってはいけないということになりますが、どうなんでしょうね。
ちなみにROM内に80x86 CPUのコードでない実行コードが入っている例は98本体にもあって、例えばP6 CPU Microcodeのコードです。アップデート分だけが謎の暗号化された状態で入っています。SMMのためのコードもそんな物の一種と言えるかもしれません。80486リアルモードコードそのまんまではありますが。
|
| SymbiosのSCSIBIOS リウ 2025年12月16日(火) 18:00 |
修正 |
>ROM内に80x86 CPUのコードでない実行コード SC-UPCI系列のもの(LHA-521も)にも入っていてまったく読めないのでお手上げだったことを思い出しました。結構ありますよね
ダウンロードしてきたHPT3XXのBIOSでは400hからを指してPCI config spaceの返事を作っていそう(IRQが8なんてとんでもない数値を選んでしまうのもおそらくこれの影響)なのですが、報告では43Chですよね、もう少し探ってみます。
1:43追記 報告ありがとうございます!起きてから修正を行います。 8:51 行いました。報告がなければさっぱりわからなかったことです。とても助かっています。
19日20:15追記 ひどいバグでした。ataresetルーチン中にデバイスがつながっていないところを触るとataresetを呼ぶ、という無限呼び出しでした。4portすべてにつないでいると動いたかもしれませんが、そのような状態でした。報告のおかげでなおせました、ありがとうございます。 VT6421用のコードをAHA-2930U2のROMに書き込み、Xa初代で試してDOS起動までの動作をしていることだけは確認しています。その他のモノはこれからのバックポートで書き直しただけで、実際に試せていません。CBUS用ROMがそれなりの変化についてきているか心配です。(4kB制限はやめました。)Xa初代のようなPCIBIOSの古いタイプでの動作、VT6421の第2SATAへの対応、動作中の文字表示が新機構です。
|
| バージョン違い KAZZEZ 2025年12月17日(水) 1:35 |
修正 |
 > 報告では43Chですよね いえ、バージョンが違っていたようです。試用したhptbios.pciは11/27 19:48バージョンでした。 オリジナルBIOS(1.09)と比較すると、確かに400hからプライマリ、440hからセカンダリのベンダ:デバイスIDが格納されていることが分かります。さらにそれらから+0Ahした位置に、デバイスクラスのIDが存在するようです。…その直前の0002は何のID情報なんでしょうね?
18日0:20過ぎ追記 ありがとうございます。適用したところプライマリ・セカンダリともベンダ・デバイス・クラスIDが正常になり、IRQも正常(06)になりました。 ただbarcheck・uideinfともIDやIRQ以外に目立った変化は無く、ボードを認識した際のベンダID:デバイスIDも表示されないままですので、BIOSが実行されていない雰囲気なのは変わりませんでした。 同梱のiplbios版はボードを見付けるのですが、そのまま止まってしまいます。 1:10追記 試しにDOS上からiplbios3.com(12/1版)をデバッガで追ってみましたが、ステップ実行のタイミングの関係もあるのか、どこで止まるのかよく分かりませんでした。ただ、6Fh(16Fh)にあるINT 1Bからは帰ってこないようで、セグメントD400:のBIOS領域のどこかで止まることが多いような感じでした。
19日23:20追記 > VT6421のほうには汎用書き込みツールは 試してみましたが、ROMの種別が(Winbondの)Unknownでしたのでキャンセルしました。実ROMを見るとW49V002APでした。
23:50追記 hptbios.pciの新版については、例の400h・440hにあった部分が、本来の位置からずれてしまっているようです。同梱のiplbios2.comについては画面がバグって止まります(DOS/IPLWAREとも)。VRAMに何か書き込んでいるのかもしれません。
20日1:00追記 VT6421版はSiI3112のヤドカリブートで新表示を確認しました。IDE側にはプライマリ(3台目)しか繋いでいないのですが、なぜか4台目にも同じデバイスが表示されました(実際のドライブには反映されないので実害は無いのですが)。FD起動では繋いだHDDの内容を確認できるのですが、以前と同じく繋いだHDDからの起動には失敗します(黒画面で停止)。VT6421のBIOSが消える例のMaxtorのHDDで試していますので何らかの相性かもしれませんが、vi6421.pci自体には大熊猫BIOSのようなNoAtBoot機能はありませんから、PCIが二基しかないRaIIでヤドカリブートを試すにはそうするのが簡単ですので。iplbios版の場合、OSFDIPLWからHDD起動しようとするとリセットが掛かりますが、これはSATA1だけでも同じでした。FD起動時のbarcheck結果(IDEプライマリマスタ+SATA1)を載せておきます。
1:30追記 お手数お掛けしております。hptbios.pciの修正版ですが、よく見たらまだちょっとずれているようで、ベンダ:デバイスが0300:0411、デバイスクラスが8000になっていました。頭の働かない時間帯での報告になってしまい、申し訳ないです。
お返事を受けて追記:はい。ベンダ・デバイスIDも表示されず即時バグる感じです。→ 訂正、デバッガで追ったところ、確かにメッセージは出ておりました。すぐに画面がバグるので気付かなかっただけでした。m(_ _;)m とりあえず18C5(17C5)にあるLOOP 189A(179A)というループの場面で画面がバグるようでした。LOOPの直前にDEC CXが入っていて、条件によってはLOOPが終わらないケースがあるようです。
> 強請はできません いやまあHPT368については私が言い出したことですので…。
|
| さっそくのテストありがとうございます リウ 2025年12月20日(土) 0:32 |
修正 |
 HPT368のPCIROM版に400hの修正を施しました。(恥ずかしい…) DOS/IPLWareの実行では左下(20行目)にfound PCIIDが表示されるはずですが、それも為されない感じ、もしくはその表示を判別するまでもなく画面崩壊でしょうか。 PCIROM版は通り道が違う(代わりに接続デバイスを表示します)ので動くかもしれませんが、コード自体はほぼ同じですから全くダメかもです。
また頭がまわり始めたら再開します。デバッガでトレースして止まる場所を指示していただけたら助かりますが、強請はできません。テストしていただけるだけでありがとうございます。
11:23追記 401hの間違い修正(悲しいです。) 暴走部分の指示ありがとうございます。 VRAM暴走は手元で再現するまで時間がかかりました。HPTのもののIPLware版"だけ"report1ルーチンを最初に呼び出していました、テストでは82C686のものを使っていたため気づけませんでした。その部分がROM内アドレスを指示せずに変なアドレス指定で文字表示を呼び出していました。文字表示できずに画面破壊のバグは直せたと思いますが、結局その後ろで暴走しているなら直せていないはずです…。
11:45 起動時表示について セカンダリスレーブにセカンダリマスタのHDD名が表示されてしまうという同じことが起きていますが直せていません、VT6421のSATA2の認識にも関わってると思うのですが直せていません。第1セクタを読み出しに行ったときに読めなかった場合に接続フラグを落とすことで対処はしていますが気持ち悪いのはそのとおりです。
HDD起動が行えないという話 もしかしてNEC純正HDDメニューだと82hからは起動できない?と試してみます。 12:34追記 起動DA/UAをLBA側で報告していたためでした。直しておきます。 13:10アップロードしました。起動できるとよいのですが… ただ内蔵IDE版ROMがなにかおかしい気配です、それは放置で先にやれることをやりました。 18:25内蔵IDE版ROMもなおしました。
要望がありましたので、NoATbootのコードは(逆アセしてしまい仕組みだけは承知しています。)使ってもよいでしょうか? 23:50追記 寛大なご対応ありがとうございます。Xa,Xfの超初期PCIBIOS機種(16kBサイズ)でも動作できるようにがんばってみます。
日曜お昼ごろ追記 まりもさま、ありがとうございます。無事にXaのPCIバスに挿したPC98非対応ROMが無効にできました。が、手元ではPC98対応ROMまで無効になってしまいましたが、運用でごまかしてください、という文言にしました。 PC-9821Xa無印で先に認識される方に自作ヤドカリROMの2930U2、後ろから認識される方にPC98非対応の2930CUで起動可、PC98対応のUIDE-66がBIOS未実行(これだけ想定外)、VT6421を挿して想定動作 の確認を行っています。
>情報をいただけると、SubFNOATの対応は簡単 画像はXb10のものです bank0のオフセット417eからに存在します。BXに入れるために見ているアドレスが違うので同じパターン探しだと見つけてくれないはずです。またXaとXfは全然違う形をしています、まだ読み始めたところですが完全にバグってそうな気配を感じています。
22日21:45追記 Xb10のものは無駄情報でしたので画像取り替えでXaのものにしました。 SubFNOATの機構、大熊猫さんの解析結果とパッチを(内容理解できてるつもりで)取り込みました。Xa,Xfの場合はバス番号BHは0固定で、BLだけなので1byte足りませんでしたが、AH=CCを省略しても動作する中身でしたので、そのようにしてあります。(画像2枚目)うちの機種群にはSubFNOATを適用させてなかったのですが、びびりすぎているかもしれません。そういえばStのことを忘れていましたがおそらく非対応ということで…
PC98signatureのところ、Xfで動作しない?というのは勘違いだったようです。本日やりなおしたところ無事にPCAT版ROMは無視されPC98版BIOSは実行されてくれました。
|
| ソースコード(ですらない物)の2次利用 まりも 2025年12月20日(土) 21:16 |
修正 |
 >NoATbootのコードは(逆アセしてしまい仕組みだけは承知しています。)使ってもよいでしょうか? NoATbootのツボなんてたったの1バイト書き換え(画像の赤枠)に過ぎませんので、著作物とは認められない、単なる情報レベルでしょう。DIV0ROMもそんなものです。ハードウェアで言えば「なんとかのピン配置わかりました」程度のものです。わたしが持っていないXa初代やXfのことは判らないので、どんどん使って頂いて構いません。
ただ、一般的に、ソースが公開されていないものを逆汗して、まとまった量のソースコードとして流用するのはどうなのかなとは思います。ソースが公開されている場合は、利用の範囲が明記されていると思いますが、公開されていない場合はわかりませんよね。
ところでNoATbootだけでなくサブファンクションのボードが無視される問題のほうも、4x00:0000hのメモリ上のPCI BIOS処理ルーチンへの介入で できないのかなと思っていますが、やったことはありません。ROMが呼ばれたPCIデバイスより後ろのデバイス番号のものからは有効になるような気がしていますが、どうなのでしょうね。これのパッチは2カ所です。SubFnoATでは、Xa7,Xb10くらいの時期の古いPCI BIOS用と V2桁後期以降のPCI BIOS用の2パターン用意しています。初代Xa,Xfにも適用できるようにしたいところではありますが、emulatorでないと怖くてできません。
【22日12時追記】 画像のアセンブリコードのリストの上の方に構造体があります。 たとえば line 61で 6800h,1000h,0FFF8h という即値の列がありますが、これらは探索範囲を規定している値です。ROMのBANK0のオフセット 6800h から1000hの範囲で探すという意味になります。初代Xa,Xfでこの範囲以外にあるとか、0F 85の相対ジャンプ先が異なる(他の機種とはパターンが違う)などの情報をいただけると、SubFNOATの対応は簡単です。 サブファンクションの改善のほうは、初代Xa,Xfとはパターンが全然合わなくてダメかもしれませんが、どうでしょうね。
|
| 便乗でコードの流用の質問 One 2025年12月23日(火) 1:13 |
修正 |
>ソースが公開されている場合は、利用の範囲が明記されていると思いますが、公開されていない場合はわかりませんよね。
便乗質問で申し訳ないのですが、自分が作ったVXのL1/L2キャッシュを止めて386相当の速さにする拡張ROMは本質的にまりもさんのVXL2COFFのFLUSH処理を流用しています。(というかかなり広範囲持ってきた) ソースの使用範囲が見当たらなくて、寝かせておこうと思っていましたが便乗して確認させていただけるとありがたいです。
あと別件ですが、PCI BIOSの空き地にコード埋め込んで、BIOS時に実行はここの掲示板だとやっている方もいるかと思いますが、この追加方法を整備ってあったりするのでしょうか。 というのも、自分は大熊猫さんのBIOSの空き地にV200に追加したYMF288の設定コードを埋めて使っているんですが、それを公開しようかと考えています。 大熊猫さんにはパッチにして公開する分にはソースも公開すればいいと言っていただいてますが、もし追加方法を整備している方がいればそれに合わせようかと思いました。 自分で整備はグダグダになりそうなので、無ければそのままYMF288の設定だけにしようかと思います。
|
| すごい設計のROMボードですから まりも 2025年12月23日(火) 19:49 |
修正 |
VXL2COFFのFLUSH処理、これも知的財産になるようなものはなく、ただひたすら無意味な読み出しをして、L2キャッシュを溢れさせているだけです。かなり野蛮で、他人様のコードでも見たこともありません。どんどん流用して頂いて構いませんが、ソース公開のものの流用ということで、やはりソース公開がよろしいとは思っています。
>追加方法を整備 この意味がわからなかったので少し考えたのですが、前にわたしが書いた、IplwareのようなもののROMプログラム版でしょうか?? 複数ROMアプリをうまく共存させるプラットフォームのようなものです。実は何も具体的に着手していません(汗 ので、Oneさんがお造りになってもいいと思います。
しかしOneさんのROMボードの場合4KB制限がないので、4KBごとに複数のROMアプリを入れてしまってもいいのではないでしょうか。しかもOneさんのボードではDOSデバイスドライバの段階で、ROMの出現を全部取り消すことができますから、UMB領域の無駄食いをしていても実害がありません。この点、本当に素晴らしい設計だと思っています。
いっぽうもしCバスROMボードのことではなく既存のPCIデバイス用ROMに複数アプリを追加するという話でしたら、何かしらの管理のためのルール作りはあった方がいいと思います。ある方が確実に便利ではあります。しかしなくても、所定のジャンプ命令の飛び先を、後から追加したアプリが横取りして、実行後に元のところにジャンプするという普通のパッチの方法でなんとかなります。
|
| リウ式ヤドカリBOOT リウ 2025年12月23日(火) 21:13 |
修正 |
ヤドカリBOOTの仕組みがまりもさん公開のものと少し違うので勝手に解説します。 これも公開された瞬間から公知としてお使いください。 1.PCIBIOSが接続判定をしながらデバイスにIOやメモリ、IRQを割り当てます。(ブリッジとマルチファンクションにはバグあり そこにもパッチあててるのは上の画像部です) 2.もしROMが有効であれば実行します。(ここの時点で判定を乗っ取るのがまりもさん式ヤドカリBOOTです) 2-a.ROM終了後サムチェックを再度行い有効であればサイズに依ってC0000hからDF000hのどこかにコピーされます。 3.次のデバイスもIOやメモリを割り当てて、ROMが有効だったら実行します。
PC98型BOOTROMはその後の実行を4回に分けて繰り返します。
5.2周目の段階ではどのカードもIOとメモリ、IRQは割り当て済みなのでここで有効ROM内からROMなしカードを制御するBIOSの設定を開始させます。 2の地点でやる場合はIRQの割り当てをプログラムでやらなくてはいけない、と解説があります。5の地点で乗っ取ることでそれをさぼれますがPCIBIOSを信用しすぎると痛い目を見ると思っています。
ということで公知になったので、お使いください。 PCIROMの場合は2の終了段階で意図的にサムを化けさせれば1M以下へのコピーが起こらずUMBの邪魔になりません。判定がゆるいものは1周目で、厳し目のものは二周目以降を乗っ取るのがよいのではないでしょうか
CBUSの方はOneさんのROMボードで前半8kBを内蔵IDEの自作BIOS、それにCyrix5x86用initを混ぜたもの(未公開だがSTOPAPMがほぼ同じ内容)、別の4kBに118ボードのPnP初期設定(アドレス固定が多すぎてinit1から乗っ取るのが面倒…)、と分けて配置して16kB占有でうちのXe10ではとてもいい感じに動作しています。二枚目の購入制限がなくなればまた購入したいと思っています。
|
| 自分の欲しい機能をいれた One 2025年12月24日(水) 0:58 |
修正 |
まりもさん、ソースの使用の意見ありがとうございます。 ちょっと安心して使えます。
BIOSへの機能追加の件は分かりにくくてすいませんでした。聞きたかったのは、 >いっぽうもしCバスROMボードのことではなく既存のPCIデバイス用ROMに複数アプリを追加するという話でしたら、 の内容でした。 自分の寄生もPCIデバイス用ROMの後ろの空間にコードを置いてジャンプして戻しているのですが、この空き地の使い方をどうしようかなと思った次第です。 広いし適当に使うのももったいないなと。でも、とりあえずルールは後で考える(?)として、広い空き地を使わせてもらおうかな。
リウさんのヤドカリBOOTも勉強になります。 サイズを選べる機能で16kb使えてて安心しました。 枚数制限は、落ち着いてきたのでそろそろ外そうかと思ってます。 今のところ、ROM付きの方が意外と枚数出てました。
|
| PCI ROMアプリ管理域の仕様と呼び出し まりも 2025年12月24日(水) 10:11 |
修正 |
やはりPCIの方ですね。複数アプリを管理するとなると、まずディレクトリのような管理域が必要になります。IPLwareだと1個あたり16バイトを使って8個用意しています。この128バイトの位置はディスク上で固定で済んでいますが、PCIのROM中では空いている不定の場所になります。したがってまず管理域を探す方式と空きを判定する方式を考えないといけません。普通には何か4文字くらいのキーワードの埋め込みでしょう。PC98や$PnPのような文字列埋め込みがPCIデバイスのBIOSにもありますが、それと同様なものを考える必要があります。 ということで、 ・管理域の仕様 ー 勝手アプリ名称文字列8、開始オフセット4、長さバイト2、属性bit 、空き領域残り情報など ・管理域を探すことのできる特徴バイト列 それと管理域との位置関係 などの仕様決定があればいいと思います。特に不足が無ければIPLWUNIの管理域そっくりにしておけばいいでしょう。 ttps://www7b.biglobe.ne.jp/~marimo9821/iplware/iplwuni.html
注意点はまだまだあります。PCI ROMデータのオフセット2にサイズ情報(512バイト単位)があります。PCIの ROMは最初の呼び出しの際に8000:0に置かれて実行されます。このときに参照されるROMサイズも変更する必要があります。一般に既存のPCIボードのROMは必要最小限になっており、ユーザが勝手なアプリを付け足すのであれば、その分大きくしておかないといけません。常識的な最大値の64KB(80h)にしておけば大丈夫ですが、何か不都合が起こらないとも限りません。
2回目以降の呼び出しのときはC000以降の不定のセグメントに置かれ、もともと入っていたPCIデバイス用のコードがさらに切り詰められて収容されます。このとき勝手アプリや管理域は落とされてしまう可能性が非常に高いです。つまり2回目の呼び出しでは勝手アプリを実行することは難しくなります。もちろんその必要性も無いアプリが多いとは思いますが、ヤドカリブートのようなものになると難しくなります。
というわけで、何も無いただのPCI ROMにいろいろアプリを追加するときは自分で全権掌握できるからいいのですが、すでにあるATAやSCSIのBIOSに追加する場合は結構難儀です。9821X-B09の空きにEXIDEPCIを組み込むのをやったことがありますが、基本的にハンドアセンブルで手作業になりました。勝手アプリを追加する仕組みがあると楽なことは確かですが、完成までの道のりは結構あります。
|
| 情熱が無いと厳しい One 2025年12月25日(木) 2:43 |
修正 |
まりもさんありがとうございます。 自分がPCIのボードに寄生させたときも、単純なものだったのですがハンドアセンブルでバイナリを直書きして作っていました。 汎用性持たせようとすると、かなり検討・検証していかないと厳しいですね。
まずは特定機能(ymf288設定)の組み込みだけ考えて、みようと思います。
|
| ハイレゾE5000のROM まりも 2025年12月29日(月) 22:19 |
修正 |
OneさんのUSB-Cバス&ROMボードはROMアドレスと範囲の設定自由度がたいへん高いので、ハイレゾモードでのE5000hに配置してみました。このアドレスは、青本のROM回路例にあったりミイソ公式の仕様にもあるのに、確認された現物がこれまでありませんでした。SCSIボード流用でも絶対にできない(ノーマルモードとのアドレス切り替え回路がASIC内部にあって外部的に改造できない)芸当です。
結論からすると(あたりまえですが)普通に動作します。ただしやはりブートからは無視されます。予めROMに入っているTESTプログラムをハイレゾのTEXT VRAM用にA000->E000に書き換えていますが、表示はされません。なおIDEドライブを取り外して E6000hに置けばハイレゾでもブートでき、表示されます。
ところでハイレゾモードではSYSTEM BIOSの F5000hにも空きがあります。これは初代のXA,RLからA-mateまで必ずあるようです。しかしSHADOW RAMがあるため、ROMボードをF5000hに配置しても、現れません。初代A-mateではout 53Dh, 10hや14h を実行するとハングアップしてしまうので、ROMを見ることもかないません。初代A-mateには本体ROMにハイレゾ用のITF/BIOSがないからです。Ap3だと大丈夫です。
|
| 何周目かのINITが機能する? かかっくん 2025年12月29日(月) 22:30 |
修正 |
起動出来なくともDISK BIOSとして機能すると云う事dsk? 何周目かのINITが機能するんでせうかねぇ?
F5わシャドウRAMを遣うか移動先として遣うかでせう
不要に成ったら隠せるOneさんのROM板わ有用デスね
|
| INITは全く呼ばれず まりも 2025年12月29日(月) 22:48 |
修正 |
INITは機能しません。それを記憶すべきSYSTEM共通域の0:4C0以降が用意されていませんし、それを実行するITFもE5000hを参照するようにはなっていないと思います。あまり積極的な活用法は思いつきません。壁超えSCSIやIDE-BIOS-LBA-PatchなどのデカいROMアプリが飛び地としてコードを置く(ROMボードの2枚挿し)くらいです。
スプリットでROMが2領域、例えばE5とEAなどに現れる(ノーマルモードだとA5,A6,A7とD0など)ようなボードは、見たこともありません。設計するにしてもプログラマブルロジックが必要なレベルでしょう。E0からの連続64KBにして、VRAM、CG、IDE BIOSなどは勝手に出てきたらOKということにすれば、飛び飛び出現もまあ可能かもしれませんが、かなり怖いです。しかもEA,EB,EC,EDは内部RAMを出せるので、そっちを使う方がいいです(ほとんどHIRES100)。
|
| ハイレゾE5活用法 リウ 2025年12月30日(火) 4:32 |
修正 |
undoc2のPC-98XA専用ブートの項でE0-E5が無効とは書かれながら場所の準備だけはされているのが読めます。可能性としてはそこくらいでしょうか? もしくはブートROMとしてはE6から始めるが本体はE5に設置して連続8kBを確保、などは思いつきますが今度はわざわざこの場所である必要性が思いつきません。 なにかおもしろい使い方がでてくることを期待します。
|
| 無事ハイレゾ機で動作、ありがとうございます One 2025年12月31日(水) 19:55 |
修正 |
テクニカルデータブックにもわざわざE5000hの回路例があるぐらいなのにハイレゾ機で何に使うのかと思ってた場所でした。 折角だからついでに使えるようにしておこうと思って設計したのですが自分がハイレゾ機を持っていないので未確認でした。
それにしても、このボードは自分用に設計したため設定の自由度を高くしすぎていて、簡単におかしな危ない設定も多く取れてしまうんですよね。 メモリもですしI/O PORTも16bitのI/O空間のどこにでも設定できる設計にしてます。
もう少しドキュメントに注釈しないとと思っている次第です
|
| ゆく年 まりも 2025年12月31日(水) 22:34 |
修正 |
I/Oが完全デコードなのもすごいですよね。お高い74HCT688をふんだんに使っているだけのことはあります。デフォルトで00DC,00DD,00DEが使われていますが、00DFhのデコード結果も何かに流用できそうです。8bitの出力値を表示するデバッグボードが思い付きます。
なおI/Oベースアドレスを00D8hに変えたボードと2枚挿しをして、CH376ドライバもそのようにパッチを当てて、2つのUSBドライブが使用できることも確認しました。
|
| 12/22版 KAZZEZ 2026年1月1日(木) 1:57 |
修正 |
ちょっと間があきましたがリウさんのBIOSの動作確認の続き…12/22版について。 VT6421版はAT互換BIOSのままSiI3112からのPCIヤドカリブートでSATA1からのSSD起動に成功しました。したがってNoAtBootも無事機能しているようです。セカンダリマスタに繋いでいないときはセカンダリスレーブの文字列が|||||…みたいに出るのですね…。HDB98の値は3500くらいですからI/O転送相応ですね。 これで直接起動ROMが機能すれば面白そうですね。ご紹介のダウンロードはまだ試していませんが、いずれ検討してみたいと思います。
HPT368版については相変わらずな感じでした。PCIBIOS版を書き込んでも実行される感じがしません。もしかしてこれもHPTチップの何らかの独自仕様が絡んでいるのでしょうかね? チップが勝手にRAMを書き換えてPC-98側のサムチェックに引っ掛かるとかないのでしょうかね(よく理解していないのですが)。とりあえずINITの何周目まで実行されるのか調べるだけのBIOSがあればヒントになりそうか気がします。 iplbios2.comについてはデバッガで追ったところ、D400:0440のOUT DX,AL (DX=6027 AL=EC)のところでFDDの動作音がしてハングしました。Win98のDOS7.1でしたが、CTRL+ALT+DELも効かない状態でした。
|
|