98システム解析スレッド2022年11月-1 /人'A`;人\ 2022年11月4日(金) 3:29 |
過去ログにあったいろいろ まりも 2022年11月4日(金) 11:00 |
この板休業中に過去ログ参照で答えることができなかったいくつかの件。
●9801RA初代とRLなどでは裏RAMがあっても拡張ROM域のRAM化はできない ttp://ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2022&mon=2 の98システム解析スレpart1 「前期型RLは拡張ROM域のRAMが現れない」
●第2世代B-FELLOW/mateや同時代の機種のPLL ICのICD2061や2028はカスタマイズ品である可能性 ttp://ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2022&mon=8 の汎用スレッド 「9821Bs生還す」
|
RA2 リウ 2022年11月4日(金) 11:54 |
前期RAを入手して調べていましたが既に答えが出ていたではないですか 384kBのシャドーRAMの実体はあります。MELWAREには利用オプションがありました。バンクメモリの様に使うんですかね。(未確認)
17:19修正 io461hでの切り替え自体は(8 a c eのみ確認)可能なので384kb全体は眺められます。利用オプションは私の読み違えでした。ここの384kBは(裏EMSを除いて)メルウェアでは使用できません。 22:00追記 はい 53dhの04hはEセグメントの有効無効だけです。 8 a cのものは無条件に割り当てが可能です。しかし前に出てくる仕組み(43fh C6h)は既報通り無効です。裏EMSの43fh 22hだけは効きます。
|
後期がいいのに好機じゃない まりも 2022年11月4日(金) 13:36 |
386前期機種の裏RAMのうちの物理アドレスA000セグメントのからの128KBは、0A,0Bバンクにそのまま割り当てて、B000セグメントのNEC方式EMSの土台に使っていると思います。1MB以上のところの実体との間でデータをコピーして。9801DXでも存在していた分です。IO-DATA方式バンクメモリの足しにすることは、ドライバさえそのように作れば行けそうな気がします。しかしRA前期ではメモリウィンドウを0Cバンクにマッピングできないとなっているので、I/O ポート43FhのC0/C4機能以前に、やっぱりそこ(C000)の128KBは使えないような?裏技があるのかどうか。
結局買うべきなのはRA21とDAとたぶんDSなのですが、このところさらにお値段上がってきました。海外バイヤーが争っているところには入り込めません。円安おそるべしです。明治初期に日本の美術品や金細工が海外に流出した時ってこんな感じだったのかなと。
<21時追加>前期RAで、物理アドレスC000の裏RAMもメモリウィンドウ461hでのマッピングはできる、というとUndoc2のio_mem.txtの記述は微妙に違うわけですか。すると前期型では43FhのC0/C2/C4が効かないだけ?後期型はそれが使えるけど、ソフトリブート時の状態が不明で、、、
|
間の世代のRL2/5とESは? かかっくん 2022年11月5日(土) 6:33 |
> はい 53dhの04hはEセグメントの有効無効だけです。
気に成るのは間の世代のRL2/5とESです。何方も仕様で1.6M搭載ですし おふがおさん・KAZZEZさんに依るとRL2/5とRA2/5は同じでしたっけ? ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbsdata/1939-0.jpg
Undoc2 io_mem.txtには
> bit 1: BIOS RAM/ROM SELECT > 1= BIOS RAM選択 > 0= BIOS ROM選択 > * E8000〜FFFFFhのBIOS領域にRAMとROMのどちらを出現させるかを > 選択する。 > * リセット時はBIOS ROM選択。BIOS RAMにBIOS ROMの内容を転送後は > BIOS RAMが選択される。
とも有りますから、BASICのメッセージ辺りをいじってからROM BASICに移行してみると判りそうな気がします # まぁ此れが有ったところでSASI/SCSI BIOSにはパッチできないので使い道が少なそうですが # SASI/SCSIは仮想86で別のRAMを割り当てて高速化やパッチするかしか無さそうな? ところでBIOS ROMの実行順ってアドレスの昇順でしたっけ?降順でしたっけ?SASIにパッチするにはもっと前に 実行されるBIOSでしないと成らないので。 ex. D7のSASIとDCのSCSI、先に実行されるのは?
|
仮想86下でのSCSI BIOS RAM化 まりも 2022年11月5日(土) 21:09 |
本体システムが拡張BIOSをスキャンしてコールするのは、アドレス昇順です。 最低位のD000にしておけば、どこにあるBIOSに対しても手出しできます。
仮想86でRAM化するのは最も一般的な手法ですから、昔からそのようなフリーソフトはありました。ズバリRAMBIOSという名前のソフトがあったと思います。こういうのでSCSI_RAMと同等にできるはずです。ただし仮想86ではROMバンク切り替えが正しく行えるのか分かりません。SMITでは通常のSCSI BIOSファンクションで読み書きしている分にはおもてバンクのままのようなので動作していましたけど、特別なことをするとダメかもしれませんね。
壁超えSCSIは裏バンクを表に展開しているのでその点はいいのですが、IPLwareの段階で仮想86というのが困難です。EMM386のIPLware版が必要になってしまいます。それができたとしても問題は山積みになりそうです。EMMファンクションって結構DOSの存在と切り離せないんですよね。そして仮想86状態でDOSを起動するとhimem.sysやemm386には拒否されるし、仮にそこをクリアしても一旦作ったRAM BIOSが初期化されてしまうでしょう。
結局のところ、IPLware段階ではGVRAMなどに一時的に住み着いてから、config.sys段階のEMM386が稼働した後にEMSページRAM BIOSに戻す、といった二段階手続の方式になるかなと思います。
|
D0より下位のBIOS? かかっくん 2022年11月5日(土) 23:55 |
成る程昇順ですか 確か、何処ぞで参照出来るUV21のマニュアルに由ると MEMSW 4の bit 7 CE000〜CFFFFh bit 6 CA000〜CBFFFh bit 2 C8000〜C9FFFh で設定出来るやうです(ページ60、何れも1で有効)。此の内CE000〜CFFFFhは音源ROMとダブるので実用性低と してもC8とCAは遣えそうです。設定後にハードリセット迄ROMの存在を消すデコーダにすれば良いでせう # 尤もROMの存在を消すならD0でも構いませんが
ところで、SMITとTEENの件で出たyukkurizさんの ykz.f5.si/?page_id=292 に、BASICでCMT I/F対応を復活させるBIOS代替プログラム等が有りますね
|
メモリスイッチ4 まりも 2022年11月6日(日) 10:39 |
ここは、各bitの対応アドレスにROMを持つ拡張ボードを装着したときに、そのbitが1になるという仕組みだったかと思います。参照するのはBASICくらいです。それ以上の機能はなく、C0000からCFFFFのところにブート可能形式のROMを置いても、ブートは出来なかったはずです。SOUND、RS-232Cいずれもブート機能はないボードです。B4670ボードはブート機能有りなのかもしれませんが、これはD0000に置くことになっているようです。GPIBボードはD4000が指定席ですけど、ブート機能があるんですかね。 実験的に不揮発なEMSボードをC8000などに出し、ブート可能ROMを置いて(画像)みましたが、リセット後に何も反応はしませんでした。もしかして別の形式のROMを置けば応答するのでしょうか?
|
只のフラグ? かかっくん 2022年11月7日(月) 20:49 |
其処はBASICの制御を変えるだけのフラグなんですかねぇ? (D*でも)ブートしない内容を容れてもフラグは同様に成りますか? # 今日のグンマ軒の人数が栃木より少なかったので気分age # 意味無しとの意見も有りますが傾向の目安には成るので
B4670はブート可(MEMSWの起動装置に在るネットワークとは此れ)ですね リモートのリソースを仮想FDや仮想HDDとしてエミュレートされます。其々専用のDA/UAも有ったやうな? だから他のハードで此れをエミュレートしたかったのです # まぁ他のハードでやるなら其れに合わせたブートBIOSにすれば良いのですが。MEMSWで固定する事も無さそうな?
何処にどんなコードを置くと実行するのか、実機のITF/BIOSを讀み解いてみますか
|
ITFも仕事していない? まりも 2022年11月11日(金) 13:28 |
メモリスイッチ4は、BASICくらいが使う単なるフラグではないでしょうかね。BASICはROMでもDISKでも容量も限られるし機種間の差は無くしたいわけなので、周辺ハードウェアの存在チェックは軽くすませたいはずです。デバイス存在チェックをしたITFが立てたフラグを参照するのが一番いいということになります。ただそれならシステム共通域に書けば済む話です。メモリスイッチを使うというのは、ITFは仕事してないということではないでしょうかね。実際適当な内容のROMを所定位置に置くだけでは、メモリスイッチ4のフラグは立ちませんでした。ユーザが意識して立てるにしてもDOSのswitchコマンドは対象外のスイッチですから、BASIC側で何かをし、参照もするのだろうと思います。switch.n88に項目ありましたっけ?
ところで別スレッドで9821Stはメモリのインターリーブが2wayなのが残念と書きました。ひょっとして、ハードウェア配線の変更を必要としないのであれば、後から4wayに変更できる可能性があるんじゃないですかね?ただし普通はそれはITFがかなり初期の段階でやる仕事なので、後から直すとなると、メモリチェックや初期化まで自前でやることになります。640KB内のメモリもいったん失われるので、かなり大変というか現実的でないですが。拙作MEMSETUPですらそこまではやる必要がありませんでしたから、実際どうやるんだろう?です。
|
PIO/SMITモード時のDMAch設定 かかっくん 2022年11月14日(月) 5:40 |
SCSIの質問に答える内に疑問に想たのですが、PIOやSMITならDMAを遣わないのでDMAchは幾つでも 良いんでしたっけ? INT/IRQには余裕が有る、又はデバイス不使用で解放出来ますが、DMAchは0か3かしか無い上1や2は 解放出来ないので
バスマスタでもDMAchを遣うんでしたっけ?DMA石自体が板に有るので外に出す必要は無さそうな気が しますが、DMAモードへのフォールバック時用の設定の気が? PIO/SMITなら間違い無くDMA不使用ですが
BIOSを書き換えてDMAモードを無くす(8086機では不動作とする)とDMAchは不要に成る気がします PIO/DMAのSCSI板(→PIO専用)で試してみます
|
DMAch リウ 2022年11月14日(月) 8:00 |
SMITではBIOSではSCSIコマンドパケットをIOで送っているのは確認しましたが、その他の情報のやりとりやwinドライバで内蔵DMAをやはり使っているかもしれません。 92のBIOSでの動作を後で確認してみます。 11:25追記 92のFIFOモードでもレジスタ01hのDMA設定はされていましたが、コマンドパケットの送信は19hのデータレジスタ経由でした。 バスマスタのボードもアドレスが内蔵DMAのIOで設定(奪い取り?)されているはずなのでなかなか難しい気がします。
|
PIO/SMITはDMA不使用に出来そう、バスマスタは困難そう かかっくん 2022年11月14日(月) 13:49 |
> 92のFIFOモードでもレジスタ01hのDMA設定はされていましたが、コマンドパケットの送信は19hのデータレジスタ経由でした。
DMAを遣わない設定も33C93のレジスタ1でしますから、此のレジスタに設定したからとDMAを遣うとは限らない やうです DREQ0/3とDACK0/3をカット(マスク)しても正常に動作し続けるならDMA不使用と考えて良いでせう。 使用ならDREQを出してDACKが返る迄待ちますからカットされると返らないDACKを延々と待ち続ける事に成り ダンマリに成りそーな気がします # DACK0/3をカットしたらPUが要ります。DREQを出さない限りDACKは出ませんからDREQカットだけでも # 良さそうです
> バスマスタのボードもアドレスが内蔵DMAのIOで設定(奪い取り?)されているはずなのでなかなか難しい気がします。
此方は板のバスマスタDMACのI/Oアドレスと対応するヶ所のコードを変える必要が有りそうで難しそうです # 他のデバイスのBIOS/DRVが本体DMACの設定を変えやうとすると板のバスマスタDMACの設定値も変わり # 兼ねないので 其れとも本体と板の両方共設定しないと(本体DMACと同一I/Oアドレスでないと)駄目ですかねぇ?
|
SCSIのDMA KAZZEZ 2022年11月14日(月) 22:40 |
> PIOやSMITならDMAを遣わないのでDMAchは幾つでも良いんでしたっけ? FIFO転送においても各種コマンドの発行にDMAを使うのでDMA設定が必要だというのはどこかで読んだのですが、とりあえずICMのIF-2760付きHDDの説明書にはそのように書いてありました。
> DMAを遣わない設定も33C93のレジスタ1でします 内部的にはDMAを使わない設定もあるのですか…。現実問題としてWD33C93系の55/92系SCSIボードはDMA転送が標準的な設定(最も安定する?)ですから、BIOSも共用するためにI/O転送時もSCSIコマンドにDMAを使うままなんでしょうかね。それならI/O転送しかない100ボードではDMAを使わないというのも合点が行きますが…。
|
BIOSのRAM化はアドレスを変える手も有る かかっくん 2022年11月17日(木) 18:17 |
DOSに関しては起動前にIPLwareでRAM化するだけでなく、仮想86DRVでUMBを確保してからMCBチェインを いじって只のRAM化をして其処に展開すると云う手も有ります。<del>要はBIOSの移動と同じやり口です。</del> IPLwareでRAM化した物を更に移動する事も出来ます。 # MCBはブロック毎に16バイト(1パラグラフ)のヘッダが憑くので断片化する程フリーエリアが減り枡
結局の処、窓9x/NT(/2k)・OS/2・BSD/Linux等は自前のDRVを遣いますからRAM化の恩恵が有るのは DOSやBASIC辺りと云う事に成増。SCSI対応のCP/Mが有ったか?は不明です # BASICやCP/Mなら仮想86で動かしても余り問題無い気も?
ところで、RL2/5とRL21/51の内部の違いですが、両機の基板を見較べる機会が有ったのですが肝心の撮影を 忘れたので特に印象に残った事を一つ。 DMAC(μPD71037)に5M(2/5)と10M(21/51)の違いが有りますた。メイン基板の型番は印象に残らなかった ので同じだった気がします。次に機会が有ったら撮影します # メイン基板が同じでもRAM化範囲等が違うのでCPU基板か98チップセットの型番が違うかも知れません
|
Canbe Cxのグラフィックモード起動関連仕様 まりも 2022年11月17日(木) 23:00 |
個人的には初めてのグラフィック起動モードであるわけですが、ブート関連でいくつか98本来の仕様とは異なるのが(今更?)わかりました。
(1)IDEディスク未接続だと、画面2のエラーで停止→これはよく知られている (2)メモリSWでBOOT装着をSCSIなどに設定してあっても強引にIDEから起動する (3)拙作 diskboot s でSCSIからの高速再起動(画面1)をしようとすると(1)の画面の赤文字エラーを表示し停止 これをグラフィック画面をONにしたあとに試みたところ、ご丁寧なことに、蜂が引っ込むという動作もしていましたw(画像2)。IDE未接続時のエラーと同じルーチンに飛んでいるらしいことがわかりました。それにしてもグラフィック起動モードでは即席TV起動の必要があって強制的にIDEからのみ起動なんですかね。グラフィック起動でもSCSIその他から起動できるようにしたいところです。この赤文字はIDE BIOS内にあるので、なにかしらのパッチ(EXIDE486に追加)でなんとかなるかもしれません。
ITFをダンプしてみると、起動開始のかなり初期のほうで直に音源のI/Oを叩きまくっていますね。メモリチェックより前です。そうしないとデロリーンを鳴らすことができないからでしょうか。システムセットアップメニューで「サウンド機能」「使用しない」にすると、デロリーン音が消え、代わりにピポ音起動になります。
<18日12時追記> 蜂画像ですが、640*400,16色の普通の98グラフィック画面が使われており、青バック背景色はパレット1番で7,0,0に設定されていました。そして蜂が引っ込んで泣く画像2は、エラーがなくてもITFにより「最初から裏画面に描画されっぱなし」ということがわかりました。蜂の画像ブロックを移動させるなどという面倒なことはしておらず、裏画面に描かれた泣きっ面蜂画像に表示ページをフリップさせているだけでした。以前ここでCanbe画像の(取得の仕方の?)質問がありましたが、おおよその答えは以上になります。なお蜂が羽ばたく間の画像の仕掛けはまだ解明されていません。 過去にあった質問 ttp://ematei.s602.xrea.com/kakorogu39/リサイクル掲示板201811.htm 中程
|
RA21にSCSI_RAMを導入後に細工してソフトリブート くりすと 2022年11月19日(土) 12:04 |
今月の頭位にリウさんがつぶやいていた方法を元に以下を試してみました。
IFC-NNを挿す SCSI_RAMを導入した状態でシグニチャの55とAAを書き換える ソフトリセットをする
その結果が、 リブート後のメモリチェックでフリーズせず ROM BASIC起動 となりました。
FDを挿入してDOS起動からデバッガで覗いたところSCSI BIOSはDC00にRAM化された状態で居座ってシグニチャが無効のためSCSI BIOSも無効の状態でした。
|
うらら小春日和 まりも 2022年11月19日(土) 15:05 |
ブートROMとしての内容を破壊してソフトリブートしたときは、SCSIとしては当然起動せず、他のデバイスから正常起動できるということですね。RAM化しているBIOSが中途半端に災いしているということは確実です。 SCSIボードが純正92や55Lのときはどうでしょうか。これらは裏バンクが1個しかない(動作モード別の2対はある)ので、RAM化された裏バンクが切り替わって問題なく起動するように思います。100ボードの場合は裏バンクすら存在しません。IFC-NNに限りませんが、マルチ裏バンクがあるサードパーティ製SCSIボードは、RAM化すると主な機能でない一部の機能が使えないのではないかと見ています。システム起動時は、裏の第1バンク以外のものも表に出る必要があるのですが、RAM化されているとそれは出ようがありません。例えばキーボード押しで出るメニューやマルチベンダー機能などです。
ということでSCSI_RAMや壁超えSCSIは、FAかBX以降のみ対応(正常なソフトリブートを期待する場合)かと思います。
ちなみにSCSI_RAMと同じことを、別アドレスに置いたROMアプリで実行しようとすると、純正品92,100ボードしか機能しないのですよね。ROMスキャン中は裏の裏などのバンクが一時的に居ることは間違いありません。
<17時追記>ということで現象に当たりがついたので対処法を考えてみます。ソフトリブートしたいときにRAM化SCSI BIOSをROMに戻せばいいわけですよね。I/Oポート43Fのbit 2を引っ込めて叩き、そのあとF0を叩いてリセットをかけます。HSBのソース改造が許されるならその辺りにそのように追加します。
もう一つはできるかわかりませんが、リセット時に現れているIFC-NNのBIOSコードの冒頭にパッチを当てて強制ROM出しを追加することです。改造できるかどうかやったことがありませんが、書き込みプログラムがゴネるかもしれないですよね。チェックサム機構なんかがあるとお手上げです。
それかもうROMアプリに頼るやり方で、例えばdiv0ROMの隅っこに上記ROM出しルーチンを入れてしまうという手もあります。 そして、out F0系のソフトリブートでないと絶対ダメというのでなければ、起動メニューからの高速リブートでもいいのではと思いますが、HSB h や HSB sではいけない理由がありますか?
|
対策思いつき リウ 2022年11月19日(土) 17:21 |
特に考えずに思いつきをいくつか 1.RA21からF*までのIDEなし機種では DC以外を初期設定にしてもらう。そしてDCとDDに表と裏をコピーして55AAのシグネチャ削除→IPLwareで割り込み設定などを再設定→リセット時にDC側は無視をされ、元設定側は4bank切り替え可能なまま デメリット メモリマップが非標準、SMITの場合、MMIO域のせいでとても面倒
2.Ramにしたもののinitialize部分にout 43f c0hをさせるコードを挟んでおく。initialize直後にROMに戻すことで諸々を解決 デメリット 我々に本体無しのデバッグが必要
out f0 0をされること 私もあまり経験がないのですがwindowsのインストール時くらいでしょうか?またDOS7のctrl-grph-delもですかね HSBでたいていのことはできてしまいます。
|
こちらの環境としては くりすと 2022年11月19日(土) 18:19 |
WinのインストールというかWin95/NTからの再起動ですね。リセット押し直すだけですが結局メモリカウント2回実施することになるので…そもそもDA以前でWin? って言われると身も蓋もないです。
後はHSBと連携を取る前にVEM486上でCPU例外を検知して再起動するとソフトリブートが掛かります。(えらー15氏のINIT118をHSB後に実行するとこの状態になってます。調査はできていません。)
|
対策rebootツールも作ってみた まりも 2022年11月19日(土) 18:36 |
ユーザの意図でなく、EMMなどから自発的にリブートがかかる場合があるわけですね。ハングアップしたときに常駐HSBからctrl grph del キー押しでリブートする場合も似たようなことになります。ユーザの意図でない再起動を考えると、リブートルーチンに43F叩きを追加するのは、VEM486もソースに遡っての改造となって難しそうです。まあ殆どの場合HSBで済んでいるなら、ソースレベルでのHSBの改造がいいような気がします。HSBってコンパイル、アセンブル条件ってどうなっていましたっけ?TURBO C/ASM でした?
リウさんがつぶやきの方で書かれている、RAM化されているSYSTEM BIOSルーチンに付け加える方法、これは一定の条件下では最も簡単な方法ですし、そもそも機種依存の問題なので、機種ごとのSYSTEM BIOSの方をいじるのは理にかなっています。ただし、FFFF:0000にジャンプして再起動するソフトウェアってあまり無いように思うのですよね。直にポートF0を叩きに行くのが多いと思いますが、それだと効力を持ちません。
Windowsが勝手に行う再起動は広範な機種に対応するということでFFFF:0000ジャンプの可能性はあるかも?。RAM化しているSYSTEM BIOSのリセットルーチンの改造は、目的に合うので、やってみる価値がありそうです。
なおハードウェアリセットがかかった場合でも一旦はFFFF:0000から起動しますが、そこはROMなITFですので、43F叩きルーチンを埋め込む余地はありません。RAMなSYSTEM BIOSが出ている時のFFFF:0000の話です。ITFを出してからF800:4000(古い機種は0000かも)に行くまでの間のルーチンにパッチできるかどうかです。
<21時追記>RA21,DAなどでSCSI_RAM,壁超えSCSI使用時に、意図的に再起動する場合は下記のプログラムをお試しください。これでうまく行くようなら、上に書いた問題の通りだということになります。(直リンクのみ) ttp://hp.vector.co.jp/authors/VA012947/scsi/reboot.zip
|
HSB再起動にこだわる理由は他にも有る かかっくん 2022年11月20日(日) 9:22 |
HSB再起動にこだわる理由の一つにサブDIRに在るDOSの起動があります。みいそDOSに無いCONFIG/ AUTOEXECの選択を補完する為にも利用出来ますが、別バージョンのDOS起動も出来ます。 # IO.SYS以外をリネームして¥に写して実行します。ファイル名以外は一往仕様通りの動作デス 他のやり方では困難な芸当です。 # ところでVEM486もHSBも98版の他にPC版も有ります
DOS/VEM486/HSBに限ればIPLwareでの方法でなく、VEM486直前にSCSI BIOSをVRAMにでも載せて INTベクタを変えておき(此処でVRAM化に成る)、VEM486直後にMCBをいじって只のRAM化をして、 RAM化BIOSファイルをロードするかVRAMに載せたBIOSを其処に写してINTベクタを変える(此処で RAM化に成る)手も有りそうです。 VEM486前提なら仮想86前提ですから「仮想86RAMでなくシャドウRAM化する理由は何ですか?」の問いの 回答の一つは「其処にRAMが在るから」と思いますが、汎用的でなく個々に個別対応が必要なら其処迄する よりとも想えてしまいますねぇ # 他にも「シャドウRAMのが仮想86RAMより速いから」とか有りそうですが
RAM化でなく仮想86に依るBIOS移動ではソフトリセットでもHSB再起動でも斯う云う問題は起きなかった 気がしますから、3点セットではRAM化よりもBIOS移動のがベターかも # RA2/5 RL2/5(=旧ロゴ386機)でも出来ますし、ES LS XL^2でも出来そうな?
|
対策rebootツールの結果 くりすと 2022年11月20日(日) 10:38 |
SCSI_RAM設定後にREBOOT.COMを実行したところメモリカウント後、無事固定ディスクメニューまでたどり着きました。(その後DOSも通常通りに起動しました。)
|
たった6バイトをどこに入れるか まりも 2022年11月20日(日) 12:59 |
ではこの問題は完全に解明されたと言ってよいでしょう。次は解決策ですが、以下の6バイト(レジスタ退避含まず)の命令コードをどこかに仕込めばいいということになります。
mov dx,043Fh mov al,0C0h か 0C2h(内蔵SASI使用の場合) out dx,al どこに入れるかは上で書いたような候補になります。リブートを行う各ソフトウェアやWindowsに入れるのは個別対応になってちょっと面倒ではあります。一番スッキリなのはIFC-NNのROMへのパッチですが、調べた所かなり厳しい感じはしました。しかも43F叩きを入れるとEPSON機で動作しないボードになってしまうかもしれません。やはりSCSI_RAMで動的にIFC-NNのRAM BIOSの初期化ルーチン(INIT0)にパッチを当てるのがいいのかなと思います。やるべきことは判明しているのでRA21,DAの実機なしでも開発・実験に着手はできます。ただしBIOSバージョン1.10限定決め打ちにはなります。
<1310追記>IFC-NNのBIOSの空いてそうな部分ですが、たぶん先頭から0FC0h目にある16バイトの00が並んでいるところは使えそうです。しかし、RAMからROMに変わっても元の実行位置に戻れるようにするルーチン(一旦SYSTEM共通域に飛ぶ)を付け加えると、16バイトでは全然足りません。これは困った、、、 <15時追記>とりあえずIFC-NNのROMに上記のことを追加してみましたが、画像のような結果に・・・32KBのROMファイル全体のチェックサム(0になる)は書き換え範囲の直後の位置で合わせたのですけどねぇ。ということはSCSI_RAMでIFC-NNのRAM BIOSにパッチを当てても同じことが起こってしまいダメです。チェックサム回避法がわかるまでは、IFC-NNをどうにかする方法はボツになりました。やはりリブート要因になる各ソフトウェアにパッチしてくださいになりますかね。
|
裏の裏のコードは本当に不断不要なのか? かかっくん 2022年11月20日(日) 14:41 |
でも、HSB再起動ではSCSI BIOSはDOS稼働中と同等程度しか使用しない筈(裏の裏に有るスキャン等は せず)ですから、稼働中のバンク切替だけ考慮すれば良い、逆にDOS稼働中に裏の裏にも切り替えるなら其処も RAMに展開要と思いますが如何でせう? 但し、ソフトリブートの場合はコールドブートと同様DC00:0他のエントリポイントからの実行ですから対応した ルーチンが有るバンク(大抵スキャンルーチンの有るバンク)でなければ成りません。コールドブート・ハードリセットと ソフトリセットでバンクが異なるストレージ板が有るか?は不明です
> WinのインストールというかWin95/NTからの再起動ですね。リセット押し直すだけですが結局メモリカウント2回実施することになるので…そもそもDA以前でWin? って言われると身も蓋もないです。
律儀にカウントが済む迄待つ必要は有りませんからカウントが始まったら直ぐに推しても良さそうです。 此れならカウントは1.n回です
抑々窓の起動時にRAM化の恩恵が何れ位有るか?が疑問ですが、窓9xなら起動時とDOS窓は速く成りますね # あ、VRAM化は目に見えて遅く成りますね、R以降ならEMS RAMのが良いかも # 因みにVRAM化・EMS RAM化はBIOS部をUMBにする為です。其れ自体の目的は高速化の一環であっても # 高速化の全てではありません
|
DA以前限定なら くりすと 2022年11月20日(日) 15:22 |
RA21のF8987h〜F8EFFhは00フィルです。(同世代の他のROM(DAやESなど)もほとんど変わらないとは思いますが…)そもそも機種限定なので、この辺りをサーチして00フィルならパッチエリアとして使うのもありかと。 ただしF8E80h〜F8EBFhに被ると他のソフトで9821チェックが誤爆しそうですが。
裏の裏をRAMで使うのって言うのはいわゆる高速化ユーティリティIFCNNUTL.COM(Q-VisionのものではFASTSMIT.EXE)がしていることと思っていました。
|
最終手段? まりも 2022年11月20日(日) 15:46 |
本体SYSTEM BIOS部(RAM状態)へのパッチは、直接 out F0 でリブートされると使われないことになってしまいます。FFFF:0に飛んでリブートする方法には対応できますが、この方法は(80x86汎用ではありますが)推奨されていなかったと思います。したがってout F0を使う98ソフトのほうが多いでしょう。
リセットがかかった直後にFFFF:0000から実行されますが、そのとき出ているのはITF側であり、ROMです。<追記修正:それは間違いであることが判明> もう こうなったらITFのROMそのものを変更したいとことろですが、ちゃんとしたROMライタが要りますよね。
>FASTSMIT.EXE これとSCSI_RAMの併用で最速になり、とくに動作不能になったことはありませんから、裏裏バンクを呼び出すこともしていないと思います。
>裏の裏のコードは本当に普段不要か これが最大の問題ですが、経験上「なし」です。しかし不明な理由でハングアップすることがあれば、そうなのかもしれません。SMITボードが一部のCFとの併用でおかしなことが起こるのは、関係ありますかねぇ?
|
内蔵IDEで544MB以上のHDDを使えるようにするREIの作者である こうのたけし氏が 55U/55Lおよび同等のNEC純正SCSI I/FのNECチェックを外すSBPATCHというツールもVECTORに掲載しているのですが ttps://www.vector.co.jp/soft/dos/hardware/se009720.html
このツールは、SCSI BIOS ROMを初回に読み込んでプログラム側に取り込んでしまい その後はSCSI BIOS ROMを無効にした状態で、プログラム側でパッチを当てたSCSI BIOSを1度読み込ませてから再起動することで パッチ適用済みのSCSI BIOS ROMが搭載されているのと同等に使えるようにしているようですが これはパッチ適用時に裏RAMではなく実ROMを読みに行くルーチンも潰してあるのでしょうかね・・・?
|
DA以前?のシャドウRAM くりすと 2022年11月20日(日) 17:17 |
> 本体SYSTEM BIOS部(RAM状態)へのパッチは、直接 out F0 でリブートされると使われないことになってしまいます。
とのことですが、FA以降が該当するのでは? と思います。
ちなみにRA21のSYSTEM BIOS部(F8E8:0,1を98h 01hにして)RAM化の状態でF0叩いたらROM SUM ERRORになりましたので。この頃の98はシャドウRAM全般においてF0では変化がないのだと思います。(故にD700,DC00もRAMのまま。)
|
結局買うしか? まりも 2022年11月20日(日) 17:37 |
え、初代RAからRA21,DAあたりの機種ではF0リセットでSYSTEM BIOSはITFに切り替わらないで起動するのですか。それはビックリというか、持っていないから知りませんでした。Undoc2を読んだくらいではこれは気がつかないですね。 SYSTEM BIOSのRAMが出たままということであれば、FFFF:0からの流れにIPLwareの段階でパッチを当てれば行けそうです。RAMからROMに移り渡るルーチンが必要がなくて簡単です。E8000-FFFFF区間のサムをきちんと合わせれば問題ないでしょう。まずはBX初代で実験してみようと思います。パッチを当てる位置はさすがに現物合わせが必要です。
さらに気になりますが、ひょっとしてこれらの機種ではリセットポートを叩いても周辺回路にはリセット信号が行かないのでしょうかね? 少なくともオンボードのROM/RAMの切り替え回路にはそれが行っていないわけですけど。Cバスに挿したメルコのEMSメモリも初期化されることはないのかどうか?CバスのRESET信号が動いていないと色々問題だとは思うのですが。こりゃやはりRA21,DAを買わなきゃダメじゃんという結論になりました。
>SBPATCH これって対象は55L/Uボードおよび内蔵純正SCSIボードですよね。電源入っている間はずっとRAMに居続けるようですから、あえて再起動時にROMにするようなことはしていないはずです。当該機のSCSI_RAMも同じ状態で動作していると思います。55ボードはすでに書いたように裏の裏などない単純なBIOSなので、問題ないのです。92も同様です。
|
SYSTEM BIOSのリブートルーチン まりも 2022年11月20日(日) 21:35 |
F0出力リブートのときに、「ITFに切り替わらない」のではなくて、やっぱりITFには切り替わっていませんかね(調べるのは難しいですが)。RA-DA-BX初代の頃の機種では、ITFからSYSTEM BIOSに移ったときにRAMのままということなのだろうと思います。とするとF0を叩いた瞬間にはROMですから、SYSTEM BIOSに見えているFFFF:0000からのルーチンにパッチをあてても、多くの場合でダメということになるでしょう。6バイト以上の空きはあるので可能ですが、チェックサムも合わせ、何かしらのソフト要因でリブートをかけた(リセットがかかった)ときに果たしてDC000がROM化してくれるかどうか。
とりあえず9801BA/BXではSYSTEM BIOSは画像のようになっており、すぐにITF に切り替わってまたFFFF:0000へ飛び直しています。この部分、RA21ではどうなっているでしょうか? BX/BAでもチェックサムは検査されてしまいますが、このときは既にITFからSYSTEM BIOS(RAM)に移った状態なのではないかと思います。RA-DAと違うのは、D7000,DC000などの拡張BIOS部が初期にROMに戻される点だけかもしれません。
|
CPUシャットダウン リウ 2022年11月20日(日) 22:08 |
残念ながら動作では未調査での発言になりますがお許しください。 RA2のBIOS部を覗いたところ同じようにFD80:0000へのJMPが FFFF:0000には書かれていました。 そしてそこからのCPUシャットダウンかどうかの判別がRA2にも同様にありました。 そしてCPUシャットダウンだと 43Dhに10hを出力してITFに変更してからFFFF:0000へのジャンプが準備されている0000:4F8hへのジャンプが同様にあります。 ここにわざわざITFへの変更が準備されているわけで 通常BIOS状態でのout f0h 0はやはりそのままFFFF:0000へのジャンプとほぼ同義ではないでしょうか? 動作して調べれば一発なのですが…すみません…。
0:34追記 調べていただきありがとうございます。 ffff:0の位置で行うととても珍しいパターンですがリアルモードにもどるさいに通ってしまうと、使用中の拡張域がROMに戻ってしまうという問題がありそうとは思っていました。 次回のバージョンアップで少し対応考えようと思います。 現行のではDC以外に設定すればリセット出来る気もしますがやはり実機なしのデバッグは大変です。
|
SYSTEM BIOSが出ているのにITFがサムチェックできる理由 まりも 2022年11月20日(日) 22:45 |
BX/BA初代もSYSTEM BIOS(RAM)改変でCHECK SUM ERRORが出ますが、ITFでやっているのに同じアドレスにあるSYSTEM BIOSが出ているのは不思議です。ということでITFコードを調べてみたところ、チェックサムを調べる前にメインメモリの0000:0000に自身をコピーしてからそこに飛んで、SYSTEM BIOSに切り替えた先をチェックしていました。だからITFが実行しているのにシステムBIOSが表に出て、かつそのサムチェックができていたわけです。「CHECK SUM ERRORが出る」は「ITFが動作しているのでない」の証明にはならないというわけでした。OUT F0の直後の状態はハードウェアも使わないと調べるのは難しそうです。
「SYSTEM BIOSのサムチェックだからSYSTEM BIOSで行っているのでは?」 「それならそこを潰すついでにIPLwareでパッチあてればいいじゃない」 という野望は打ち砕かれました・・・
>out f0h 0はやはりそのままFFFF:0000へのジャンプとほぼ同義 普通の目的ではそうですが、「ほぼ」の違いが、今回のテーマではパッチを入れ込むことが可能かどうかの大きな違いになっているわけです。
|
とりあえずなのですが くりすと 2022年11月20日(日) 23:03 |
FFFF:0000をJMP E800:0000に書き換えてF0を叩いたらROM BASICが起動しました。F0を叩いてITF ROMならピポるのでは?…と。
[11/21 0:00追記] それ以前にROM SUM ERRORがでますね。ITFが起動したらということで、試そうとFFFF:0000書き換えたてチェックサムを合わせ忘れてエラったので、予め別に計算してサム値を求めておかないといけないですね。デバッガからだけではちょっと難しいので今はここまでということで…。
|
それは朗報 まりも 2022年11月20日(日) 23:22 |
おおっ、F0hを叩いただけではITFに切り替わることはないということのようですね。ハードウェア的にも調べようとしていたところですが、その必要はなさそうです。であれば画像のコードを入れて、F8000-FFFFFまでの奇数・偶数ごとのバイトチェックサムがゼロになる値を FFFF:000BとFFFF:000Cに書き込んでおけば行けるのではと思います。
でもF0では何か外部に信号は出していますよね。ROM/RAMやITF/SYSBIOS の切り替えにはつながっていないだけで。CバスのRESETにも出るのかどうかはハードウェア調べないとわかりません。V30/80386の切り替えにも何か出てないといけないでしょう。
それと気になるのは 043Dに出力する値です。00hでITFとなっていますが Undoc2では 10hなんですよね。SYSTEM ROMに戻すのが 02hか12hかというのもあります。
<0時00分追記> BX/BAですが、ハードウェア的にも調べてみました。I/O表示ボードを使い、画像のプログラムでI/Oアドレスを43Fhではなく 610hにしておき、ボードのLEDが点灯するかどうか見ました。OUT F0hを出力すると、0610hの出力値の通りに光りましたので、SYSTEM BIOS(RAM)のここを通ることはBX/BAでも確認できました。さらに言えば、Cバスのリセット信号も出ていないとみられます。リセットがあると表示は消えるはずです(したがって光っても一瞬で見えない)が、点灯状態は保持されていました。古い目の機種でのout F0の実体が今更ながらわかりました。思っていたのとは違っていたようです(汗 BX/BAより後の機種ではどうなんですかね。調べてみたいと思います。
というわけで、SCSI_RAMでも 壁超えSCSIでも、ここの箇所のパッチで対応できます!! ただしEA 00 00 80 FDという特徴的バイト列は、98かAT互換機、その他のx86機種判別に使われることがあるので、あまり書き換えるべきではないかもしれません。FD80:0000に飛んだ後のほうを書き換えるのが礼儀正しいです。またWindows9xのDOSモードのときにはどうなっているかわかりません。 ------------- <21日10時>SCSI_RAM、RA21以降対応のつもりのSCSI_RAM 2.24試作版ができておりますのでお試しください。なお区別のためCOM形式アプリとしています(いまのところ直リンクのみ)。上で書いている「礼儀正しくない」パッチであるのが当面の問題です。 ttp://hp.vector.co.jp/authors/VA012947/scsi/scram224.zip 削除済み
>リアルモードにもどるさいに通ってしまうと これは可能性としてありますが、himem.sysも80386ならF0リセットは使っていないので大丈夫かと思います。危ないのは80286用himem.sys相当品を使っている場合とか、古いバージョンのOS/2 1.xxやら PC/UXを再起動後に使おうとするような場合でしょうかね。危ないといってもROMに戻すだけですから、SCSI_RAMで容量壁パッチなしの場合はそのまま動作して気がつきもしないかもしれません。
|
I/O表示ボードを043DにしてBIOS←→ITFをチェック かかっくん 2022年11月21日(月) 12:22 |
> それと気になるのは 043Dに出力する値です。00hでITFとなっていますが Undoc2では 10hなんですよね。SYSTEM ROMに戻すのが 02hか12hかというのもあります。
此れにも↓のI/O表示ボードを043Dhにして遣ってみては? # PIO板だからできないんでしたっけ?IORDをマスク(カット)・プルアップして試すとか?
> BX/BAですが、ハードウェア的にも調べてみました。I/O表示ボードを使い、画像のプログラムでI/Oアドレスを43Fhではなく 610hにしておき、ボードのLEDが点灯するかどうか見ました。OUT F0hを出力すると、0610hの出力値の通りに光りましたので、SYSTEM BIOS(RAM)のここを通ることはBX/BAでも確認できました。さらに言えば、Cバスのリセット信号も出ていないとみられます。リセットがあると表示は消えるはずです(したがって光っても一瞬で見えない)が、点灯状態は保持されていました。古い目の機種でのout F0の実体が今更ながらわかりました。思っていたのとは違っていたようです(汗 BX/BAより後の機種ではどうなんですかね。調べてみたいと思います。
I/O表示ボードてリセットすると消えるんですか。out F0ではCバスにRESETが出ないとするとバンクRAMの 出るバンクとかEMJのマッピングとかは其の儘のやうですね。前者はタイミングに依ってはマズそうな? 同じくソフトリセットのjmp FFFF:0/jmp F000:FFF0ではどうでせう?
> これは可能性としてありますが、himem.sysも80386ならF0リセットは使っていないので大丈夫かと思います。危ないのは80286用himem.sys相当品を使っている場合とか、古いバージョンのOS/2 1.xxやら PC/UXを再起動後に使おうとするような場合でしょうかね。危ないといってもROMに戻すだけですから、そのまま動作して気がつきもしないかもしれませんが。
詰まり286機+386+アクセラ/XL^2/PC-386の一部はA20が286式なのでXMM(FDXMS286, XMZ286, etc.)を遣う場合が問題に成りますね # あ、286機・XL^2やPC-386の一部にはSCSI部のシャドウRAMは無い?ですね
|
SCSI_RAM 2.24β くりすと 2022年11月21日(月) 21:06 |
単刀直入にNGでした。 43Fhに00hを書き込んでいますが、先の画像ではC0hになってますので多分間違っているのかと…。
|
I/O 043Dhの観察 まりも 2022年11月21日(月) 22:25 |
I/O出力値が激しく変わっている場合はI/Oボードでの点灯はほとんど目視不可能ですが、043Dhの出力値をみると、BX/BAでは 00h(全bit不点灯)と02hの2つの状態しかないようです。時系列にみると以下のような感じです。CPU MODE Highの直後にROM SUM ERRORは出ますから、確かにこの時期に02つまりSYSTEM BIOSが出ているということがわかります。その後メモリチェックのためにITFに戻っているようです。メモリチェック完全終了までの間の大部分の時間は00(ITF)です。
電源投入時もリセット押下時もOUT F0,0の時も同じ 00 初期状態→ピポ 00 CPU MODE High表示 02 640KB 00 1MB以上のチェック表示 02 ブートまでの間
ちなみに、こうのたけし氏作の mate.com(fellow)を実行すると 12 DOS起動しmate.com実行後 となりましたが、何かやっているのでしょうかね。Undoc2に従って、02hではなく12hにしているのかもしれません。Undoc2にあるように10hでITF 、12hでSYSTEM BIOS というのは、別の機種のことなのかもしれません。当該機種では bit4がなにかの意味を持って存在しているのでしょう。<追記>9801DXは10/12hでした。
>くりすとさま 妙ですね。今朝uploadしたやつをBX/BAで実行してみましたが C0となるべきところが00にはなりません。IDEがあるのでC2にはなっていますが。念のためor C0 を入れてみたので下記のを試してみてください。<追記>あ、SASIもIDEもない機種のためC2hを設定しない状態で通過するから00なのですね。 ttp://hp.vector.co.jp/authors/VA012947/software/scram224.zip
|
機種に依っては10h/12h かかっくん 2022年11月21日(月) 23:38 |
> となりましたが、何かやっているのでしょうかね。Undoc2に従って、02hではなく12hにしているのかもしれません。Undoc2にあるように10hでITF 、12h SYSTEM BIOS というのは別の機種のことなのかもしれません。当該機種では bit4がなにかの意味を持って存在しているのでしょう。
確かVX21では10hと12hだった気がします。V98のROMREAD2は0と2ですが動かなかったのでパッチした 憶えが有ります。np2でも10h/12hです
|
out F0の仕様変遷と機種 まりも 2022年11月22日(火) 0:19 |
RA 21-DA-FA-BX/BA初代までの機種では、どうもF0リセットで内部メモリ回路はおろかCバスにもリセット信号が行かない、ということが今回判明したわけですが、Xmate 9821Xsで試してみると、Cバスのリセット信号は出されるようです。I/O表示ボードで何かのI/Oの値を点灯しておいた状態で、out F0,0を実行すると表示が消えます。リセットされたということになります。これ以降の機種もたぶんそうでしょう。
F0リセットで周辺もリセットされるこの仕様のほうが正しいというか間違いのないものだと思いますが、知らないうちに勝手に変更になっていたとなると、当時のハードウェア設計者やメーカーは相当困ったのではないかと推察されます。とくにメモリボードのEMJはハードウェアリセットでメモリの「マッピング」が飛んでしまいますが、古い機種では飛ばなかったわけですから、RAMDISKのデータ保持ではえらいことになっていたはずです。80286用の古いOSのデバイスとドライバも然りです。
|
2.24β1 くりすと 2022年11月22日(火) 1:11 |
C0hであることを確認できました。 VEM486上のCPU例外からのソフトリセットも普通に再起動できるようになりました。
|
EMJは仕様上は「リセット時にデータが消える」 かかっくん 2022年11月22日(火) 2:14 |
> F0リセットで周辺もリセットされるこの仕様のほうが正しいというか間違いのないものだと思いますが、知らないうちに勝手に変更になっていたとなると、当時のハードウェア設計者やメーカーは相当困ったのではないかと推察されます。とくにメモリボードのEMJはハードウェアリセットでメモリのマッピングが飛んでしまいますが、古い機種では飛ばなかったわけですから、RAMDISKのデータ保持ではえらいことになっていたはずです。
EMJをMELWAREで遣う以上はMELEMM.SYSが内容を消すので問題に成りませんですた。 仕様上はリセット時にハードEMS上のデータは消える事に成って居ます out F0hで必ずCバスにRESETが出るのか、出るのはソフトリセットだけでリアルモード移行やA20関連では 出ないのかにも依りますが。
因みに、嘗てウチではEMJとPIO-9234を併用しMELDISKにはPIOの方を遣って居たためリセット時のクリアは 問題にしませんですた # EMS未使用アプリ実行時はMELCACH1の増量やMELPRINとか入れれば良かった
|
MELEMM.SYSはEMJを消さないこともできたかと。 KAZZEZ 2022年11月22日(火) 4:33 |
個人的にはPC-286LE20のLスロット用EMJ相当ボードでRAMDISKを使ってATOK6の辞書を置いていますが、電源を切るまではリセットボタンを押してもRAMDISK内容は保持されています。 MELWAREのオンラインマニュアルを読み返してみましたが、MELEMM.SYSであれば、/F1 オプションの指定で(MELDISKの正常なデータが残っていた場合は)EMSをセロクリアしないこともできるそうです。もちろん普通にEMSを使う場合はゼロクリアが仕様ですから、あくまでEMJ等のハードウェアEMSモードにおいてMELWAREのRAMDISKドライバMELDISK.SYSと組み合わせる前提の場合だそうですが。当然プロテクト兼EMS設定だと駄目で、(バンク兼)ハードウェアEMSに設定する必要があります。
|
補足 リウ 2022年11月22日(火) 6:36 |
EMJの場合、リセットで飛ぶのはデータではなくマッピングです。RAM内データはリセットだけでは保持されています。config.sys内でmelemm.sysでオプションを選んだ場合(かつデータ先頭にmeldiskの残骸が見える場合)のみ0フィルされずに再開できます。PDISKも同じ事ができたはずです。
|
out F0 再起動後のハードウェア状態のまとめ まりも 2022年11月22日(火) 10:27 |
気になったらとことん行きます。 OUT F0で再起動した後にどうなっているかを調べ、まとめてみました(Rはリセットされることを示す) [機種群] Cバス FFFF:0の初期状態 486前期 × SYSBIOS(RAM) (286機DXでもCバスRESET ×) 486後期 R SYSBIOS(RAM) PCI世代 R ITF ROM
全部の機種を調べていませんので境界が確かではないですが、 486前期とは386も含んでRAから初代BX/BAおよび初代A-mate(ハイレゾ含む)、実験機はBX,Ae 486後期はそれ以降(最初の機種は未だ不明)、実験機はXs,An PCI世代は初代Xa/Xf/Xtがどうか不明、実験機はXc16/S
FFFF:0の初期状態を調べる方法: RESET信号線をマスクしたI/O表示ボードを装着し、FFFF:0からのところ(通常RAM化SYSTEM BIOS)にはボードのLEDを点灯させる値を out するコードを入れておき、out F0,0実行でリセットをかける。 ・FFFF:0がSYSTEM BIOSの状態なら実行されて、LEDに値が表示されてから再起動 ・out F0,0の直後にITFに即切り替わっているなら実行されないので、所定値で点灯せず
わたしのこれまでの認識はPCI機ないしは486後期のものでした。ずいぶんと変遷があったようです。 互換性の権化ミイソのくせにこういう重要なところの互換性は維持していなかったのも驚きです。 <17時追記>SCSI_RAM 2.24正式版を公開しましたが、バグってたので2.25
|
つぶやきレベルの意見 くりすと 2022年11月22日(火) 12:46 |
8,9バンクでバンクメモリの使用ができなくなった頃と言うのはどの位の頃でしょうか。何か関連しているのかな?と、ふと思いました。
|
PCI chipsetの仕様と関連 まりも 2022年11月22日(火) 13:23 |
バンクメモリが使えなくなったのは、intelやVLSIのPCIチップセットが導入された機種からです。512-640KBを切り離す機構が用意されていないようです。 ただし初代のXa,Xtで使用されているチップセットおよびCバスブリッジには512-640KBを切り離す機構があると見られます。Undoc2にも記述がうかがえます。Xfはチップセットの資料を見ていないのでちょっとわかりません<追記>切り離し機構があるそうです。
FFFF:0の初期状態との関連もいまのところわかりません。そういうわけで、98軍備増強禁止(艦船本体に限る)の我が家ではありますが、初代Xaは手に入れておきたいと思っています。RA21〜FAについては、納得できたのでもういいですw
|
効果の程を調べてみた くりすと 2022年11月23日(水) 19:36 |
RA21ではHDB98が使えないので今回はI-O DATAのINSPECTで効果の程を見てみました。接続したストレージはZuluSCSI(SCSIエミュ)です。シーケンシャルとランダムで有意な差は無いので書き分けていません。 CPUはCx5x86なので速度的にはほぼRA21の限界と思っています。
リアルモードで何も無し Read 2581KB/s Write 1630KB/s
リアルモードで純正高速化ユーティリティ(IFCNNUTL.COM) Read 3421KB/s Write 1936KB/s
リアルモードでSCSI_RAM Read 3421KB/s Write 1936KB/s
リアルモードでSCSI_RAM+IFCNNUTLはIFC-NNが接続されていませんと出て高速化できませんでした。(FASTSMITは重複できるみたいですが。なぜ??)
VEM486でDC-DDをA5-A6に移動のみ Read 2581KB/s Write 1475KB/s
VEM486でDC-DDをA5-A6に移動してIFCNNUTL Read 3136KB/s Write 1720KB/s
SCSI_RAM後のVEM486でDC-DDをA5-A6に移動したとき(効果が出ていない) Read 2581KB/s Write 1475KB/s
SCSI_RAM後のVEM486でDC-DDをA5-A6に移動してIFCNNUTL(接続されていないで拒否られていない) Read 3136KB/s Write 1720KB/s
参考 VEM486下のIOS10(RAMディスク) Read 8723KB/s Write 7726KB/s
VEM486下でHDDのライトバックキャッシュ有の状態 Read 4714KB/s Write 4421KB/s
VEM486のROM移動(/M)では単なるメモリマッピングの変更だけのようですがシャドウRAMが移動されているのではなくCバスのROMの方が移動しているような結果でした。(画像はUMBのマップ)
[11/24 追記] > RA21ではHDB98が使えない についてですが起動すると「この機種では測定できません. いささか古すぎます.」というメッセージが出て終わります。解析した訳ではないので何のチェックに引っかかっているのかは分かりませんが。
|
再起動関連を備忘録に まりも 2022年11月23日(水) 21:45 |
>RA21ではHDB98が使えない やはり再起動時にROM BIOSのマッピングが初期化されないことが原因なのでしょうね。BX/BA初代では大丈夫ですが、DA,FAはどうなんでしょうか。いずれにしてもこのへんの機種は仕様が「特異」というしかありません。当時DAを持っていたものの、こんなことは全く意識していませんでした。
VEM486でIFC-NNのBIOSの DD00h(SMITのMMIOの窓)が移動できるとは知りませんでした。V86マネージャはI/Oは監視できますが、MMIOもマッピングできて、論理アドレスA6000hに書いたものが物理アドレスDD000hに出るってことですよね。仮想86、再び勉強したいところですが難しそうで・・・
>I/OのINSPECT LUMB.EXEのチャイルド実行?かと思いますが、EMSの色は反転色で、16KBの境界に切れ目があるのが芸が細かいです。
ところでディスク高速再起動ツールに、ふつうの再起動ツールも同梱で公開にしました。このスレッドでわかったことの備忘録として書いておくことにし、ついでに再起動ツールを載せました。ハイレゾモード対応になっています。 ttp://hp.vector.co.jp/authors/VA012947/knowhow/diskboot.html くりすと様には、SCSI_RAMのリクエストではありましたが、おかげで再起動関連の知見が深まりました。ありがとうございました。
|
未だ終わっちゃいない まりも 2022年11月23日(水) 23:52 |
ちょっと気になる点も追記しておきます。486後期以降の機種で out F0 「再起動で」「Cバスにリセットが出る」の件ですが、本当に「F0を出力した時点で」出ているかは厳密な意味ではロジアナもないので確認していません。F0を出力してSYSTEM BIOSを数十バイト実行しますが、その中にはSHUT 0のポートの状態を読んで呼び出し元に戻る方のルーチンもあります。80286プロテクトモードから復帰するときに使うやつです。これで周辺回路までリセットかかると、デバイスの従来互換性がひどく悪くなりますよね。こちらの時にはリセット信号が出ていないという可能性も残されています。
ひょっとすると、「ITFに切り替えてFFFF:0000をやり直す前に」、または「以前の状態がソフトウェア再起動と判定された場合に」、自発的に周辺ハードウェアへリセットを掛けている可能性があります。それがI/O 0534hの読み出しと出力なんですよね。このコードがBX/BAにはありませんが、486後期機種にはあります。しかしUndoc2に詳細がありません。これも未だテストしていません。ハードウェア絡みなので作業場所を取らないといけなくて、実験は少し先になりそうです。未だ調べていません。時間と機材に恵まれた方々どうぞ。
|
CバスにRESETが出る条件は? かかっくん 2022年11月24日(木) 1:56 |
↑の
> out F0hで必ずCバスにRESETが出るのか、出るのはソフトリセットだけでリアルモード移行やA20関連では > 出ないのかにも依りますが。
の部分ですね 更にI/Oが有るのか何処かのフラグとのANDか、後者の気がしますが。
|
いちいち外部にリセット出していたら大変 まりも 2022年11月24日(木) 21:16 |
重要なことを思い出しました。ITFがメモリチェックする際に15-16MBシステム空間使用時はいったんチェックカウントを終了してCPUリセットを掛けるのですよね。この時にいちいちCバスにリセット信号を出していたらえらいことになります。したがって80286方式のCPUリセットのときは、Cバスにもメモリ制御の外部回路にもリセット信号は出ることはないと言えます。 ダメ押しでいま実際やってみましたがSHUT 0=0でF0を叩いても、点灯済みI/Oボードの表示は消えることはありませんでした。Cバスはリセットされません。 ではどういう条件に御膳立てすればCバスにリセットが出るようになるかのほうですが、詳しい機構は未だ分かりません。もちろんSHUT 0=1でF0を叩けば再起動し、486後期機種からはCバスにリセットが出ますが、具体的に何をやっているのか、それはF0の応答と独立な(完全に同時ではない)のかが気になります。こんなことは知らなくても実用上はとくに問題はないですけどね。結果だけわかっていればよくて。
<0:00追記>PCI機および486後期の機種ですが、I/O 534hを読み出してbit0を反転させて書き込むと、その瞬間にリセットがかかるようです。これって知られていませんでしたよね。PCI機なので普通にF0でソフトリブートするのと結果は同じで、Cバスにリセットが出ますが、見かけ区別はつきません。
|
I/O 534hが外部回路リセットの正体 まりも 2022年11月25日(金) 7:00 |
i486後期機種一般にみられるSYSTEM BIOSのリセットルーチンは画像のとおりになります。前期機種と違うのは、色反転で示したI/O 534hを叩く部分です。bit0を反転させてから叩いています。既に述べたようにこれを任意の時点で実行すると再起動がかかりますから、リセットに関連しそうだという仮説は立てられます。
では色反転部分をバイパスしたらどうなるか? SYSTEM BIOSはRAMですからこの部分をnop命令で潰すことができます。その状態で out F0,0 でリセットをかけると・・・ピポっと再起動になりましたがCバスボードはリセットされませんでした。このことから次のことが言えます。
・out F0h だけではCPU以外のどこにもリセットは発生しない(従前機種どおり) ・外部回路やCバスにリセットが発生するのは 534hを叩いたときである ・外部回路だけでなくCPUもリセットしているようである ・CPUリセットに失敗してもITFに切り替わって最初からやり直すだけなので問題なし Cバスにリセットパルスを出している者の正体はI/O 534hにつながっている「何か」だったわけです。
ちなみにUndoc2には534hの各ビットのことが書かれていますが、bit 0はCPU MODEのフラグであるとは書かれているものの、「i486後期機種でのリセット」であるなどとは書かれていません。フラグということはREADの機能であって、WRITE時はまた別です。bit 0のWRITEではリセット発行が機能ということでよいのかもしれません。ただしトグルで反転させてからでないといけないのは謎です。
ともかくまた再起動関連の知識が増えました。逆手にとって、「i486後期とそれ以降の機種でもCバスにリセットを出さずに再起動する」という必要性があれば、予め534hを叩くルーチンを潰すパッチをSYSTEM BIOS(RAM)に施しておけばよいということになりそうです。これで無改造でEMJボードのリセット時の"マッピング解除"に対抗できるかも?
|
ハードウェアリセットの534を叩かないとどうなる? まりも 2022年11月26日(土) 23:05 |
I/Oポート534hをいじらずにF0リセットをかけて、再起動時にCバスにリセットが出ないようにはなりますが、きちんと動作もしないといけません。いろいろな機種でテストしてみましたが以下のようなことになりそうです。 ・486後期の機種 うまく再起動できる(SUM合わせをしていないのに) ・PCI 山猫機 再起動後ROM SUMエラーが出る ・PCI Intel機 再起動後640KB OKのままフリーズ PCIチップセット機では534hの叩きを抜いてしまうとPCIチップセットがリセットされずにおかしなことになるようです。山猫では明らかにSYSTEM BIOSのRAMが出たままです。チップセットはリセットされていません。RA21ーBX/BA初代相当になってしまうみたいです(笑 ある意味想定通りです。いっぽうIntel機はハードウェアリセットをしないわけには行かないような感じです。RA21にSCSI_RAMを入れてF0リブートした状態にそっくりです。ということで、「Cバスをリセットしないリブートプログラム」を作りかけているものの、対象は486後期機種のみになりそうな気配です。
|
山猫機には かかっくん 2022年11月27日(日) 2:17 |
山猫機にはサウスがGHOST7とYEBISUの2種類(以上かも)が有りますが、其の違いは有りますかねぇ?
|
486後期以降というと KAZZEZ 2022年11月27日(日) 9:38 |
もしかしてFDloaderの対応機種とかぶっているんでしょうか。FDloaderではソフトリセットしても完全なリセットにはならない仕様がありましたけど、そのへんの都合は何か関連するんでしょうかね?
|
FDloaderではsystem共通域と1MB以上のRAMが未初期化 まりも 2022年11月27日(日) 10:58 |
ここでいうリセット機構関連の機種グループ分けについては、386/486前期の最も後の機種は初代BX/BAです。後期の始まりは、全機を所有なんてしていないのでわかりませんが、リセット機能のI/O 534hが存在するのは少なくとも9801/9821Bシリーズからです。FDloaderはX-mateからなので(Anは同じとは見做さない)、時期的にかなりズレはあります。関連性もないでしょう。
486後期の機種の場合(事実上X-mateと相応時期の機種のみ)、FDloaderで開始してF0リセットをすれば、続く534hの叩きでもって、内部メモリ回路はそのままかリセットされるかはっきりしませんが、Cバスにはリセットがかかります。PCI機なら全てリセットがかかると思います。このときESC HELP 8 を押してまたFDloaderに移ってもとくに問題ありません。
>山猫機にはサウスがGHOST7とYEBISU メモリコントローラはノースですから関係ないでしょう。振る舞いに違いがあるなら、むしろITFのリビジョン違いのほうが大きいかもしれません。
|
横道 くりすと 2022年11月27日(日) 14:18 |
I/O 534hがリセットすることを知っていた方が…ですがあまり深掘りではないようです。(このコードでリセットします。と言った内容) www2s.biglobe.ne.jp/~asmpwx/story/error.htm
np21/wはreadもwriteも未実装。(エミュレータにハードリセットって影響あるのかは不明ですが。)
検証した訳ではないですが、他に読めるbitもundoc2とは異なるような気もします。ですが100%異なっているとも言えない。(Xv/wでみると7Ehでソフトリセットする度に7Ehと7Fhになりbit0以外に反転値を入れてもreadは固定値。I/Oはreadとwriteで異なるので何とも言えませんが。)
|
Bfではbit2でテキストが乱れる… KAZZEZ 2022年11月27日(日) 15:51 |
> 386/486前期の最も後の機種は初代BX/BAです。 そうでしたか。手近にあった機種で確認したときに、NS/Aには無くBX3にはあるというところまでしか見ていませんでしたので、FDloaderの境目と区別が付きませんでした。Bfをセッティングしたら、確かに534hは生きているようでした。NS/Aは16MB超え対応機ですから、てっきり同世代の2代目B系も同じかと思ったのですが、NS/AとB-MATE/2代目FELLOWは同年の夏と秋くらい離れていましたね。デスクトップでもNS/Aより少し前のCeにも534hはありませんでしたので、境目は初代FELLOWよりは半年〜10か月くらい後になりそうです。
で、Bfの場合ですがI/O 534hは初期値00hで、書き込んだ値の下4bitが読み出せるようです。このうちbit2を有効にすると、テキスト画面をスクロールさせた際に画面(アトリビュート)が乱れるようです。テキストVRAMの上限に影響があるのでしょうか? しかしBX3では初期値7Cで変更は効かないようでした。Bfのようなbit2による画面乱れもありません。bit0も反転しませんし、機種によってずいぶん違うようです。
21:15頃追記 ROM BASIC上では、BfのI/O 534hのbit2で画面が乱れると以降全ての入力がSyntax errorになり、再起動するしかなくなります。DOS上ではスクロールしたときだけ画面が乱れるだけで操作は可能でしたので気付きませんでしたが、行全体の文字を律儀に拾う(?)BASIC上ではエラーになるあたり、どうやらVRAM全体がおかしくなっている感じです。バンク切り替えでも起きているのでしょうか?
|
bit 0以外は まりも 2022年11月27日(日) 17:34 |
>534hがリセットすることを知っていた方 おぉこれはpowerxさんのサイトではないですか。昔読んでいましたし、パソ痛オフ会などで直接いろいろ話もしましたが、この件はとくに意識していませんでした。いやもっと濃い内容が他にたくさんあるサイトですから。まあ彼なら気が付かないはずはなく、534hはpowerxさんの発見(1999年頃)が最初としておきます。
534hの他のbitですがたしかにUndoc2の通りではないですよね。bit7なんかは486中期の機種のクロックを表すとなっています。1で33MHz、0で25MHzとなっていますが、うちの9821Bsでも読み出しは00hであり25MHz扱いです。WRITE時も同じ意味があるとすると、書き込んだらBeがBsになると期待しそうですよね。まあbit 0の機能に便乗して他のbitに何かしらの機種フラグ機能を乗せただけかもしれません。念のためITFをスキャンすると、534hのbit 7を読み出しているところはリセット絡み以外でいくつかあります。bit2は書き込みもしているような。
ところでBsで534hパスして再起動した場合ですが、SCSI_RAMでRAM化したり無理矢理RAMだししておいたSASI BIOS域などは、ROMまたは不可視状態で起動しますね。F0リセット直後の状態は不明ですが、ITFが正しく初期化していると思われます。実用上はハードウェアリセットされたのと等価です。つまりリブート前にSYSTEM BIOSや拡張BIOS域のRAMに書き込んだ内容は、リブート後に保持されません。あることに使おうという目論見は消えましたが、きっちり動作してCバスのリセットのみ起こらないというのは好ましい状態です。
それから気がついたことをもう一つ。534hをパスしてソフトリブートしたときは、ピポ音に先立つ、スピーカのボコッという不快なポップノイズが発生しないんですね。外部回路にリセットが出ないことは、音声回路の制御にも及んでいるということのようです。PCI機というかX-PCM搭載機ではとくによくわかります。
|
アドレス移動前提で、シャドウRAMとPMの何方が速い? かかっくん 2022年11月27日(日) 22:47 |
SCSIのベンチですが、↑のやうにBIOSを何処かに写して(IRQのエントリ他を変えて)からVEM486でA5-A7を普通に UMB化して(元のBIOSの範囲はUMBで上書きして)、MCBチェインを書き換えてA5-A7を只のRAM化して、 何処かに写したBIOSをA5-A7に写して(同)ベンチをとると変わりますかねぇ? 詰まりシャドウRAMをA5-A7に移動ではなくVEM486でPM(1M越のRAM、此の場合はCバスではなく内部増設)を A5-A7に割り当てたRAMを遣うと云う事です # VMM386やMELEMM.386ではA5-A7をUMBに出来ない場合が有るので念の為
ところで486機やPCI機でA5-A7をCバスに向けられましたっけ? # ゐゑ、D*00にA5-A7を参照するプログラムだけを入れてBIOSの実体をA5-A7に置けるかな?と # C*00でも良いですけど
リセット時のポップノイズは9821全般に有りそうな?基に成った(?)GSはド〜なんでせう?
|
それは… くりすと 2022年11月28日(月) 0:06 |
元々のDC000は55ですら2バンク切り替えなので単純にDC000をUMBのA5000に移動できても意味ないと思います。(IFC-NNは4バンクでしたっけ?)
|
RAM/ROMの速度 まりも 2022年11月28日(月) 0:42 |
アドレス移動可否はともかく速度では CバスのROM <= CバスのRAM < < 仮想86のRAM < 裏RAM < = メインメモリ キャッシュ無効で裏RAMが遅い機種だと仮想86のほうが速いことはあります。↓その例 ttp://hp.vector.co.jp/authors/VA012947/scsi/scsi_ram.html
|
|
|