98システム解析スレッド2021年11月-2 /人'A`;人\ 2021年11月17日(水) 4:57 |
テクニカルデータブック リウ 2021年11月17日(水) 12:50 |
増補版にEGCの情報が細かく書かれているという情報に従って図書館に行ってきました。残念ながら蔵書されていたものは増補改訂"2"版でして、本自体も薄く求めていたものはありませんでした。 他にも新版、H98版、MULTIMEDIA版、BIOS版、HARDWARE版なども蔵書されていましたので読んできました。EGCに関する情報はありませんでした。(現場で気づけなかったのですがXL/XA編も蔵書されていたので明日また読んできます。) しかしMULTIMEDIA版には98GSと73ボードにしかない機能がたっぷり解説されていましたし、H98版の最後のサンプルプログラムリストにはEGCを利用しているものが収録されていました。(ただしEGCに関する解説は相変わらずなし)
しかし、旧バス、新バスに関しては気になるものを見つけてきました。 70116という私にとっては見慣れない表記でしたが、V30のことのようです。 VXの1番バスが旧バス扱いになるのは70116モード時だけで286モード時は新バス扱いになると書かれていました。そのためPC-UXボードはV30モードでしか使えないとはっきり書かれていました。 またDMAコントローラを使うボードは新バス(修正) では使えないとも書かれています。ただしNEC製品には存在しない、という注意書きがありました。(09 15のようなFDCボード?) そういうわけでVM21のFDCボードが実は旧バス仕様?なのであればVXのCPUボードを載せて無理やり286モードにした時に新バスに切り替わってしまっておかしくなるような気配はありました。 以上ご報告まで
|
Re:旧バス、新バス KAZZEZ 2021年11月19日(金) 5:39 |
これは貴重な情報ありがとうございます。参考にしたいと思います。 # うちの近所の大学図書館は、コロナ対策で大学敷地内が関係者以外立ち入り禁止中で、なんだか利用しづらいです…。
たぶんですがVX初代とVM21は同じマザーだと予想していますのでCPUボードも互換性はあると思うのですが、 VX後期は少し仕様が違いますので、特に10MHzモードまわりで何らかの不具合がありそうですね。 V30モードでも起動直後は286で、ITFの途中でV30に切り替わるという話ですから、 ITFで本来想定されていない286/10MHzモードからV30/10MHzに切り替わったことで、何らかの不具合が出たとすれば筋は通りそうですね。 2DDボードはサードパーティ品があったと思うので、発掘できたら試してみたいと思います。 # 2DDボードに繋がるケーブルやドライブあったかな…。(ぉ
|
2DDボード(640KB FD I/F)につながるFDDは かかっくん 2021年11月21日(日) 5:41 |
> # 2DDボードに繋がるケーブルやドライブあったかな…。(ぉ
ケーブルさえ有ればPC用FDDがつながりますよ 2DDが300rpmでReady不要ですし
|
【発見】山猫にしかない特典 まりも 2021年11月22日(月) 21:43 |
VLSI Supercore 594 チップセットのレジスタ64h は通常00h だと思いますが、ここを0Chにすると、なんとA5000hからA7FFFhのアドレスにメモリが現れます。UMBで使うこともできました。IPLwareの段階くらいなら何か利用価値がありそうです。おそらくはA4000hからの16KBがメモリになる仕組みなのでCGウィンドウが使えなくなるとは思います。
レジスタ64hの値を0Fhにすると以降テキストVRAMの表示ができなくなるので、下位2ビットはA0000hのメモリ出現でしょう。そうするとレジスタ64hの上位側4ビットはGVRAMのA8やACでしょうか。計算中に一時的にDOSメモリ領域を768KBに増やして使い倒すようなアプリに応用できそうです。画面の表示は既にあるものはOKで、ここをメモリにした後には画面に書き込まれないだけです。
|
さっそく リウ 2021年11月22日(月) 22:16 |
Cx13で追試しました。(0Cのみ確認) 同様に64hでA4-A7にRAMが出現しました。
|
山猫チップセットメモリ属性マッピング機能 まりも 2021年11月22日(月) 22:38 |
レジスタ アドレス帯 64h A0,A4,A8,AC00h 65h B0,B4,B8,BC00h この辺はメモリ化しても256色モードでは影響無し 66h C0,C4,C8,CC00h UMBでしゃぶり尽くせます 67h D0,D4,D8,DC00h この辺りは既にいじったことがあり どうでもいい結論:山猫チップセットを使えばハイレゾモードでPCIバス搭載機は設計できたはずである。テキストVRAMの出現位置を98グラフィックチップセットの方で何とかすればよかったわけです。レジスタ6Dの寝ているビットを立てたらB000の64KBのメモリはL2キャッシュも利きますね。で6EはC000に効きますか。 レジスタ6C-71hが1バイト64KBゾーンでA000hからFC00hに、2ビット16KBで対応するキャッシュ可否設定のようです。これも新知見でしょうか。11bにすれば最速になります。ビット2個の機能的役割は不明。 例:DC00hにPCIのSCSI RAM BIOSがあるとき、レジスタ6Fhの最上位2ビットを11bにすると細かいアクセスのデータ転送速度がかなり高速化しました(HDB98調べ)。すごいぞ山猫、1MB空間全部メモリにできてキャッシュも効いて、完璧に「クリーンコンピュータ」(8ビット機時代の死語)ではないですか。
|
メモリを出すか出さないかはMRD/MWRをDRAMに向けるかPCIバスに出すか かかっくん 2021年11月23日(火) 1:27 |
山猫に限らずいんてるでも他社品(REDやVIA・ALi他)でも、メモリを出すか出さないかと云うのはノースブリッジ (一般にブリッジのシリーズ名で呼ばれるのは此方)がホスト(CPU)バスからの当該アドレス帯をDRAMに向けるか PCIバスに向けるかと云う選択ですから、メモリのリード可/ライト可と云うのはDRAMに、同不可はPCIバスにつなぐ と云う事ですね で、一般には余り意味が無いと云われるリード不可・ライト可と云う設定もできますが、此れはリード時はPCIバスから、 ライトはDRAMへと成るワケですから遣い途は皆無ではなさそうです。 で、キャッシュ可否の2bitはリードキャッシュとライトキャッシュでせう。リードキャッシュだけ可ならライトスルーに 成りますが、ライトキャッシュだけ可の場合の挙動は不明ですが。
では、逆に0 - 9FFFFh(0000-9FFF)をPCIバスに出す事はできますか?ゐゃ此れができないからPCI機では バンクRAMを遣えないのか
PCI/DRAM 64:A 65:B 66:C 67:D 68:E 69:F
6A:? 6B:?
キャッシュ可否 6C:A 6D:B 6E:C 6F:D 70:E 71:F
と成って居ますが、0 - 9FFFFhの設定も有るんですかねぇ?
|
>逆に0 - 9FFFFh(0000-9FFF)をPCIバスに出す事は 並びの対称性などから察すると 62 と63が PCI/MEM 、6Aと6Bがキャッシュ可否でしょうか。ビット位置と物理アドレスの対応はわかりませんが、A000以上とは解像度が違うでしょう。8000hセグメント以上のところを細かく分けているのかも? <追記>と妄想したがそうではなく、レジスタ63hは無機能、62hは下位2ビットでメモリ書き込み速度のコントロールのようです。初期値の0Chを0Eh,0Fhとすると書き込み速度が遅くなります。上位4ビットもいじれますが何に作用したかわかりませんでした。なおレジスタ6Aと6Bもいじれないようです。 レジスタ62hはそういえば高速化で情報あったなと思い出しました。 ttp://www2s.biglobe.ne.jp/~asmpwx/down/download.htm 04にしたままだと何でWin95がハングアップするのかよくわかりませんが、ともかく下位2ビットはメモリライトのタイミングに関わるものです。bit 3を変えても(0C->04)メモリの速度が変わらないのですが、PCIメモリ転送の方に作用する何かでしょうね。
確認方法がデバッガ的なものでは難しいのでテストプログラムを作らないといけません。メインメモリが見えなくなったらすぐハングアップですから。
|
試すならメモリSWを512Kで かかっくん 2021年11月23日(火) 2:37 |
> 確認方法がデバッガ的なものでは難しいのでテストプログラムを作らないといけません。メインメモリが見えなくなったらすぐハングアップですから。
例えばDDEBは其れ程大きくないので、メモリSWを512K、MCBを7FFFh迄にしてDDEB実行前に INTELSAT 6B 00 実行中に INTELSAT 63 00 とかしてみて8000:0からのデータがどう成るか?を試すとか? # SYMDEB.EXEはもっと小さいですが # DEBUG.COMは子プロセスを起動できない(略) バンクRAM(設定は512K〜)を載せて INTELSAT 6B 00 INTELSAT 63 FF と INTELSAT 6B 00 INTELSAT 63 00 で、CPUBENCHやPFM486/686の速度を比較するとかも関心有りますね # CPUBENCH 0.99cは zob.club/zob/files/CPUB099C.LZH に有りマス
0-512Kはリード可(DRAM)、ライト不可(PCI)に設定してDS=ES=[0-7]000 SI=DI=0 CX=4000 で REP MOVSDしてから切り替えるとか
|
やっぱり違うか かかっくん 2021年11月23日(火) 4:28 |
やっぱり違うやうですね 山猫(機)では0 - 640KをPCIに向けられない? →バンクRAM不可 →DRAMはSIMMでしか搭載できない →此のアドレス帯のPCIやCバスでのRAM増設は不可 と成りますが、SIMMは最小(?)の4Mx2にして、CバスRAMの始点を8Mにして7M増設して16M以上をPCIで 増設(有れば)するとどう成るでしょうね? # PCIに載せる増設RAMが有れば見た目はi-RAMのやうな商品でせう image.shutterstock.com/image-vector/computer-memory-ram-expansion-pci-600w-91764494.jpg i-RAMの一例 upload.wikimedia.org/wikipedia/commons/e/ef/IRAM13a.JPG
<del>やっぱりSIMM/DIMMを空にして汎用バスだけでRAMを搭載できるのは486なB/Xと非PCIなP5/P54C機だけか</del>
|
0MBからの汎用バスメモリ増設 まりも 2021年11月23日(火) 17:15 |
山猫の1MB以下のPCI裏RAMは、いきなりアクセスしても赤字パリティエラーが出ませんね。A-mateで同様なことをするとすぐエラー出てしまいます。ITFを読まねば何とも言えませんが(読んでもレジスタの意味わからないからつらい)、SIMMセッティングした直後に全部に書き込みを行っているのでしょうね。
レジスタ60..63hは奇数番は00で書き込めませんが、ひょっとしてワード単位で意味があるものですかね。60hのほうは下手にいじるとハングアップしますが640KB以内のメモリ制御ではなさそうです。 >汎用バスだけでRAMを搭載 8086アーキテクチャ機ですから、ITFのワークエリアや割り込みベクタの置かれるメモリは電源入れたら速やかに存在確立していなければいけないもので、それを「汎用バス増設メモリ」にするというのは、まああり得ないことです。したがって0番地〜のメモリを切り離す機能は用意されるはずもないでしょう。しかし8000-9FFFhのところを切り離せる機能でもあれば、山猫でバンクメモリ復活が可能だったので、完璧98アーキテクチャ継承PCI機に成らずちょっと残念かも。そういえばH98でI-O BANKメモリが機能するっていう話も聞いたことはないですよね。
山猫だと最小でも4+4MBなので、8MB以上のアドレスのところに「汎用バス増設メモリ」を乗せることは可能です。たしかCバスメモリでも行けましたから、「PCIバス用メモリ装置」でPnPでなく機械式固定でアドレス設定できるものなら使えるでしょう。リウさんがすでにつぶやいているように、PCIビデオカードは搭載メモリがそこそこあるので、ひょっとすると汎用メモリとして使える可能性はあります。ただしPnPでアドレス自動で割り振られてしまうのでITFの段階で認識させることはできず、IPLwareで後からアドレス設定し、最大メモリサイズを記憶するシステム共通域のつじつま合わせをします。ソフトウェア型ハイパーCPUメモリのような感じですかね。実体はHYPO-CPU memoryですけど。
>汎用バスだけでRAMを搭載できるのは486なB/X えっとこれ出来るんですか?それは驚きです。EMJボードだとアドレスxMBからの増設はSW1の番号x でSW2=0なのですがx = 0にすれば行けてしまう? ちょっとやってみますかね。 <20分後追記> さすがにこれは無いですわ。PC-9821BsでEMJボードを0MBからのメモリ増設にしてみましたが赤字MEMORY ERRORです。そもそもITFはSIMMセッティングをしてからメモリチェックに行きますが、この時点で内部のメモリアクセス優先になっているからダメでしょう。ITFのどこかで out 43Fh, 80hのところを82hにして拡張スロット側とし(これって80000h〜のメモリのはずですが)、SIMM設定エラーの時の行く先に行かないようにITFコードを変更すれば、ハードウェア的には行けるのかもしれませんが。現実的には不可能という結果でした。
|
Cバスブリッジに80-9Fの設定が有る かかっくん 2021年11月23日(火) 21:05 |
ぁ此れは本来の使い方では有り得ない設定なので、EMJで始点を0Mには設定できないのも有るでせう で、486B/Xでは043Fhが有るのでPCI機同様にCバスには出なさそうですね 詰まり結論はアドレス0から汎用バスでRAMを搭載できる機種は怪造機以外皆無と云う事ですか。詰まらん # 嘗てF2を快造した際は単純にオンボードのDRAMとバッファを外すだけでできたので。そして自作の1M SRAM板を # 載せる(アドレスデコーダに凝った)だけでできますた
で、80-9Fですが、PCIブリッジの他にCバスブリッジ(☆α2 pci_cbus.txt)の方も設定する必要が有るやうです
|
KAZZEZ 2021年11月24日(水) 4:05 |
> 山猫にしかない特典 偽猫ではどうなるのでしょうね。
> そういえばH98でI-O BANKメモリが機能するっていう話も聞いたことはないですよね。 まあNESA機ではCバスでプロテクトメモリは使えない(NESAメモリを使う必要がある)と言いますから もしかしたらリニアアドレスのメモリはCバスで使えないのでしょうかね? ただバンクの設定はできるみたいで、カノープスのGAを使うためにバンク領域にGAのメモリアドレスを割り当てたりされていたようです。 ハイレゾでは512〜768MBという2倍のメモリウィンドウが取れるという情報もあって興味深いところです。
> たしかCバスメモリでも行けました 山猫あたりでは(通常の使い方では)CバスメモリはハードウェアEMSしか使えないと思いました。 # ハードウェアEMSの場合でもXa7e以降ではCTLR+GRPH+5/6で信号線を切り替えないと使えません。 何らかのソフトウェアで追加認識処理させればプロテクトメモリとして使えるということでしょうか?
> リウさんがすでにつぶやいているように、PCIビデオカードは搭載メモリがそこそこあるので、ひょっとすると汎用メモリとして使える可能性はあります。 これは実用化できるならすごく期待したいです。(豪)漢メモリは今となっては入手が期待できませんし。 Windows2000ではいくらスワップを大きく取っても、物理メモリの塔裁量が少ないと動かないソフトがありますので、できることがかなり違ってきます。 特にセキュリティソフトのウィルスデータ更新が重いです。
まあそうなるとWin用のGAは別途載せなければならないのでPCI増設は必要でしょうけど。 あと大容量のGAとなるとPCIe版になるのでPCI-PCIEX1経由すなわちPericomブリッジ経由になりそうですね…。
|
PCI機で8MB以上のところにCバスメモリ増設可 まりも 2021年11月24日(水) 10:07 |
そういえばH98で8-9バンクにカノープスのPW805などのメモリ窓を置くという方法がありましたね。1MB以上のメモリウィンドウの機構はH98でも使えそうです。 PCI機種でのCバスのプロテクトモード用メモリ増設は430HX機でテストしたことがあります(過去ログにあるかと)。これも公式にはSIMM容量は最小で4MB+4MBですので、8MBに相当するアドレスにEMJボードを設定してやればメモリカウントが8MBを超えて最大14336KB表示まで継続します。Cバスメモリは本来のメモリより一桁くらい遅いのかと思いきや、メモリベンチマークしてみると1/3程度の速度です。CPUのキャッシュが効いて連続アクセスだからでしょうか。なおESC+HELP+5押し起動は念のためやっておきます。追記:山猫でも可能です。
|
486なA-MATEなら かかっくん 2021年11月24日(水) 15:29 |
A-MATEのうち486機は486何某のPCHK#ピンをGNDから切り離して10k位でPUするとDRAMについてはパリティ チェックされなく成ります # 抑々オンボードがP無なので親亀やSIMMにPが有ってもねぇ Cバス等の外部(?)拡張分は別のチェックなので不十分(IOCHK(A32ピン)をカット等が必要)ですが。
|
PCIバス型メモリ リウ 2021年11月24日(水) 23:09 |
期待されてしまったので手を動かしてみました。 i430FXのXb10にSIMM16MBの状態でPCIビデオボード GeforceFX5200(VRAM128MByte)を突っ込んでみました。 VGA-BIOSが実行されてしまうと当然立ち上がりませんが、なぜかすりぬけることが多いようです。 PCI-BAR0がVRAM?128MByte BAR1がVGA用の何か? BAR6がROMでしょう というつもりでレジスタを弄くりました。 BAR0を01000000hにして16MBの位置にMAPした状態でHSBします。
以前に作っておいたscanmem.comでメモリをサーチさせましたが見えません。 0000:0594hを弄くった状態でhimem.sysにtestmem:onをやるときちんとエラーを帰されて見えません。
実験結果としてはダメだったわけですが、PCI空間にMAPされていながらなぜ見えないのか?という根本からやり方が間違っている可能性があります。 しかしemulatorでやってみるとPCIなCIRRUSボード上のVRAMがMAPされて見えてしまいました。 ビデオカードのVRAMを汎用RAMにしよう!という計画自体は面白いと思うのですが とりあえずの実験結果は以上になります。 nVidia(しょうもない追記 現在はNVIDIAになってるんですね、びっくりしました。)じゃなければうまく行くかも?(Milleniumはintelsatが暴走するので未テスト→PCIPLを使ってテスト 16MBの位置に触った瞬間フリーズ canopus型のS3のものも見える位置にあったのでやりましたが同様に読み書き可能なメモリにはなりませんでした。→04000000までしか下がりません。)
25日19:46追記 Nr166/XのVRAM2MBがどうやら使えました。BAR0を搭載している128MBの08000000hに合わせてHSBしただけです。 himem.sysにはtestmem:onで怒られますがLEMMというドライバですと自動的に(0000:0594hを弄らずとも)メモリ量が増えました。 LAMDというRAMDISKドライバで127Mを確保することが実験前後で不可能と可能に切り替わりますのでアクセスもできているととりあえず判断しました。
さらに追記 28日18:57 ノートではなくデスクトップ(Xb10)でもMilleniumの4MBが使えました。 BAR0がMMIOでBAR1がVRAMです。(tridentとは逆です。) MMIOのINDEXレジスタ1FDEに3番を指定し、1FDFで80hのbitを立てるとBAR1にVRAMがリニアに現れます。 linuxのソースを参考にしてアクセスしてみると動いたように見えます。 ただし速度は明らかに遅い上にHIMEM.SYSがやはりtestmem:onでエラーを吐きます。キャッシュが怪しいというご指摘を参考にしたいと思います。 なお、DWORD転送だとおかしくBYTE転送だとまともっぽい動作もしています。 気持ち悪いです。
|
VGAカードとか。 KAZZEZ 2021年11月24日(水) 23:53 |
試していただき、ありがとうございます。やはり簡単にはいきませんか…。 # 詳しいことは存じないので的外れかもしれませんが、chachaだかvgaenbだかにあったコマンドレジスタでのメモリアクセス応答の許可とかいう設定は関係ないのでしょうか?
> GeforceFX5200 > なぜかすりぬけることが多いようです。 うちでもAGP版のGeforceFX5500が、AT互換機でなかった場合はBIOSがスルーされる仕様でした。 FX5500は実質FX5200の高速版とのことですのでBIOSがほとんど同じなのかもしれません。 GeForceの場合は2MX200/400の頃からPC-98でも起動できる(ことが多い)ので知られていましたから、 その時代のGeForceはPC-98で暴走しないものが多いのかもしれません。 AT互換機のVGAカードをPC-98に搭載する手順を解説したサイトでは、確か、 もともとAT互換機用のBIOSには本来そういう設定があるようなのですが、 AT互換機前提のBIOSでは必ず実行される設定になっていることが多いそうですので、 各VGAカードのBIOSアップデータを使ってその設定を変えたBIOSを書き込むのがセオリーだったと思います。 # 同じFX5200でも手持ちのPCI版はPC-98では暴走するBIOSでしたし、起動時にディスプレイが繋がれていないと出力されない仕様もあってPC-98には不向きでした。
あとはPCIブリッジ2段を介すと(PCIバス番号2以上のスロットでは)BIOSが出現せず起動阻害が起こらないというのもありました。 ただ結局、NoATbootか、大熊猫BIOSのNoATboot機能を使えばとりあえず起動できますので、 私は今のところそれで済ませています。
|
Win9Xを動かしてからDOSに戻るとか まりも 2021年11月25日(木) 15:15 |
VGA BIOSがたまたま無効になって起動できた場合はベースアドレスレジスタ(BAR)などがゼロのままで、最重要であるコマンドレジスタもゼロでアクセス無効となっていることが多いです(だから起動阻害要因にならない)。まず当該BARを実メモリ上限に継ぎ足せるアドレスに設定して、その他のBARも問題ない値にしてからコマンドレジスタのメモリアクセスビットを有効にしておきます。メモリのBARレジスタは2個あるものが多く、たぶん小さい範囲の方はMMIOで、広い範囲の方がVIDEO RAMとして使える(かもな)方です。でもリセット後から無条件でアクセス可能になっているか、、、ですよね。 本来はビデオドライバが行うようなおまじないが必要でしょうかねやっぱり。仕様が明らかになっていたりドライバのソースがわかっているビデオカードがいいのでしょうけど、シーラスロジックの5446なんかではメモリ量が少なくて意味無し。nVIDIAの旧5000番台やRadeonの旧9000番台で、最低でも128MBのやつが使えるといいですが。 Windows98の98用ドライバは無いですが、無理矢理インストールして、表示はともかく一旦動作させてからMS-DOSモード起動に戻った時には使えるようになっている可能性があるかも?まずはWindows95で98用ビデオカードでそのようなことができるかを確かめてみてもいいでしょう。
<28日22時追記> あーアラインメントの問題がありましたね。おそらく搭載可能最大のメモリサイズで割り付けられます。ってことは64MBか128MBが最大のやつじゃないとちょうどいい使い道になりませんね。旧Radeon7000とかRIVA128(Nv3)くらいですか。
|
RAMのパリティチェックって かかっくん 2021年11月25日(木) 16:46 |
io_syste.txtに > I/O 0035h > bit 4: MCHKEN - RAMのパリティチェック > 1= 有効 > 0= 無効 > I/O 0037h > 08h,09h|RAMのパリティチェック 08h=無効,09h=有効
と有ります。後から認識させる際にパリティエラーが出る場合の1M以上のチェックの際にmov al,8; out 37h,alで 凌げませんかねぇ?
GAのDRVですが、BSDやLinuxで対応して居ればsrcも入手できそうな気がしますが如何でせう?
PCIバス上に載せたRAMについてはノースブリッジのRAM上限は関係ないでせう。 方法が確立されれば上限が128MiBの430FX/VXとか、ブリッジ自体の仕様上の上限が1GiBでありながら128MiBに スポイルされて居る山猫とかでは可也朗報でせう。あとECC機で36bitのSIMMをケチりたい方面とか # 36bitのSIMMはFPのP有でも動きますからケチらない方が良いですが
但しキャッシュ上限に注意。K6-III等CPU内のキャッシュなら問題なさそうですがチップセットのキャッシュが効くか?は ?です
|
98ハイスペック機にはいつも落とし穴が まりも 2021年11月27日(土) 23:36 |
実家にゴミ整理に来ているのですが、「ザベ」の雑誌の山をどうにかしなきゃなと思いつつ拾い読みしていたところ、H98 model70が98RLより遅くてけしからんという怒りの投稿記事(The BASIC 1991,Jan)を見つけました。まあ遅いというのは8-9バンクのメモリが他のアドレス帯の半分以下の速度だという点なのですが、H98のハイレゾのみそうであってノーマルモードではそうはならないそうです。ミイソに問い合わせたら伝家の宝刀「それは仕様です」で返り討ちにあったとのこと(3.5ヶ月後に回答ってどんだけ役所仕事なミイソ)。 これは明らかにキャッシュが効かない設計であることが理由ですが、ハイレゾの時だけというのが謎というか酷い設計だとは思います。
というわけで8-9バンクはH98でも存在していることがわかりました。ちなみにこれとそっくりなことはAnやXnにも起こっていてます。H98m70と違うところはノーマルモードでも遅くなること、読み込み時は遅くなく書き込み時のみ遅くなる点です。でもってその速度低下は半分どころか1/4以下ですから、H98よりひどいですね(笑
アーキテクチャ的には、ハイレゾだからキャッシュが効かないようにする設計というのはおかしいと思いますね。ノーマルモードでもバンク機構があるのですから。ハイレゾでそんなことではH98の意味がありませんが、よほどH98m70の設計がやっつけ仕事だったんでしょう。なお他のH98はH98model105しか知りませんが8-9バンクで遅くなるような事象はないです。外部キャッシュ回路がないからでしょう。
そして別の号を読んでいたところ、H98S 8がDAより遅くてけしからんという記事も見つけました(1991,Nov.)。内蔵メモリのアクセスが遅くCバスも遅く(特にNOWAITが効かないらしい)、そしてCバスで1MB以上のメモリボードが使用できないのでどうにもだそうです。PCI機でも使えるものなのにですね。というわけでH98SではCバスでプロテクトモードメモリが使えないということが、実機ではなく文献検索にてわかったので報告しておきます(笑 8-9バンク機能はあっても内部メモリのためのもので、同様にアイオーバンクメモリボードは使用できないのではと推測します。
|
ハイレゾでバンクRAMが遣えないのは かかっくん 2021年11月28日(日) 22:46 |
ハイレゾでバンクRAMが遣えないのは昔から云われて来ますた。多分RAMウィンドウの初期値がRAMを割り当てて 居るせいでせう 或いは、出さない設定(値)が有るのは標準量が512KのXAだけかも知れません # まぁ出さない設定にした処でバッファが開いて居たら駄目ですが
他のハイレゾ機は標準で1.1M以上(XLは640K/512K(実際は768K〜1M?)+512K、他は640K/512K(1M?) +1M以上)有りますから、起動時にRAM(起動時は100000h〜11FFFFh(A-Bバンクは120000h〜13FFFFh)が 割り当てられて居ます。此の辺のHMAやEMBとの関係はどう成って居るんでせう?DOS起動の際に8-Bバンクの アドレスを変えるとか? # XLで080000h〜09FFFFh/0A0000h〜0BFFFFhに成らなかったのはXAとの互換性の為でせう
で、H98/70(多分60も)の8-9バンクがハイレゾでだけ遅くなってノーマルでは然うでないのは、ハイレゾでは RAMウィンドウ経由、ノーマルでは直にマッピングされる(此の部分の128KiB分はハイレゾではマッピングされない) からでせう。H98にはRL迄に無いNESAが有り、1M以上のRAMはNESAバス上に有りますから(略) 0〜512K(640K)はNESAよりCPUに近い部分に有るのでは? # 元々の仕様だからみいその返答は「仕様です」だわな、でも『ざべ』だけに編集部に解明してほしかったかも
ところで、ハイレゾが無いH98Sで、ノーマルで8-9バンクが遣えるかは?な気が?
|
すると80386なH98で512KB(80000h)からのメモリを物理アドレスと等しくなるように設定するとキャッシュが効くようになる可能性が? XA除くハイレゾでは out 91,08 とout 93,0Aは効いて何がしかの(たぶん物理アドレス一致の)内部メモリは現れるんですよね。
まあ8-9バンクが遅い機種やモードでも、仮想86で使えば問題解消するので、普通のDOSアプリケーションを動かす上では特に問題ではないはずです。N88-DISK BASICで使いたい人には問題でしょうけども。 <憤慨して追記> というかハイレゾモードの実メモリナシ(と仕様上される)8-9-A-Bバンク機構なんてCPUが80386になった時点で廃止してしまえばよかったんですよね。LIM EMSは仮想86で実現できたわけですから、EMM.SYSの方式によるEMSなんて要らなかったのです。互換性の権化だかなんだか知らないけどそれにこだわりすぎて、機構を複雑怪奇にしたり性能面を犠牲にするというのは愚策であったと思います。
|
XAの512K〜768KにRAMを載せると91,8/93,Aで出るか? かかっくん 2021年11月29日(月) 0:08 |
多分XLには1.5M、XL^2/RLには2M分のRAMが載って居るのでは?と思います。XL^2とRLでA20ライン周辺の 回路が変わった(XL^2はXL/VXや他の286機と同じ)ので此の辺も違うかも? # A20周辺回路が386以降のCPU自体に入って居れば良かったんですけどねぇ
XAは1M迄には512K迄しかRAMが無いのでout 91h,8 とout 93h,0AhでRAMが出ないのだと思います。 Cバスに512K〜768KのRAMを置けばできそうな気がしますが、out 91h,8 とout 93h,0Ahの際にCバスに 512K〜768KとMRD/MWRが出るかは別のやうな気も?
|
twitter.com/guitar_SST/status/1465126163680948226?t=ONsxENkH2ACsjIqLe0mM7g&s=19
ヲチスレかな?と思いつつノート機にも8-9bankのメモリがありそうな?
|
Pモードメモリを継ぎ足す手法を512KB以上の所に応用 まりも 2021年11月29日(月) 14:01 |
ノート機でもn08拡張ユニットで使うことができるように、8-9バンク機構は用意されていると思います。 FEFEFEFEという表示は、FFFFFFFFを書いて読んだら8bitの最低位が化けてることを意味しています。メモリチップ単位の不良でしょうか。メモリソケットへのデータ配線パターン切れ/短絡の場合は32bit単位になるでしょうが、オンボードのメモリですよね。チップ不良とは言い切れず、特定チップへのデータ線1本の配線短絡の可能性もあります。液漏れがチップの下に浸透していればありそうな気がします。
512KBのまま起動できるようなら、8-9バンクに1MB以上のうち最高位アドレスのメモリをあてがってからMCB(DOSメモリコントロールブロック)を拡張して640KBにし、EMM386で仮想86モードに逃げ込むという使い方ができそうな気がしますが、どうでしょうね。<追記>出来ても非常に遅くなる これはメモリが壊れていなくてもメモリスイッチで512KBに制限すれば再現実験ができますので、ちょっとやってみますか。あ、でもMCB拡張はconfig .sysデバドラでやらなきゃいかんのか。これはやったことがないです。DOSアプリではやったことありますが。config.sys 段階でMCBって確立しているものなんですかね?
|
アドレス線の一部も妖しい気が? かかっくん 2021年11月29日(月) 20:54 |
FFFFFFFF→FEFEFEFEと云う事は32bitのうち4bitが化けて居ると云う事に成りますから特定の1ヶではなく 2〜4ヶでせう でも此の機種はNA/C(486SX、標準RAM1.6M+RAMドライブ1M)ですから、 〜512Kと512K〜が別の石とは 考え難いんですよねぇ 32bitずつだと256Kibit単位でも1Mが最小(256Kbit x 32 = 8Mbit=1MB)に成ります。 普通に考えて514800x4 + 514256x8(514260x2)+αな気がします もっと小さい単位では64Kibit単位で、256Kずつに成りますが64Kの石なんかNA/Cの世代で遣って居るワケ ないでせう(64Kbitx16=1Mbitの石自体は511664が実在するが40pのデカい石1ヶでたった128K)
アドレス線の一部も妖しい気が?
MCBについてはCONFIG段階でも有ります。本来はDRVですべきですが手抜きでDRVEXEC(DXM.SYS)を遣って COM形式で作った事が有ります(分断されたUMBを接続) で、NA/CってI/O 0461hは有りましたけ?もし有ればIPLwareで適宜設定すればOS起動段階では正常に動作 しそうな?
|
ハイレゾでの8-9,A-Bバンク仕様再考 まりも 2021年11月29日(月) 22:21 |
初代80286機XAの仕様は頑なに守り続けたミイソ。 その仕様とは、80000h(512KB)〜AFFFFh(768KB手前)には物理メモリがなく、バンク切り替えによって1MB以上のどこかを投影させるという仕組みでした。 物理メモリを1.5MB以上搭載した後続のハイレゾ機でも仕様は守られていて、起動直後のデフォルトでは80000hには100000h(1MB)の物理メモリが、A0000hでは120000hが投影されています。
この仕様は後にXMS規格とくにHMA規格が出てくるとややこしいことになります。この仕様どおりだと1MB以上のHMAが使用できないことになるからです。512KBのところから書き込むと1MBのところも変わってしまうわけですから。
そのためHIMEM.SYSでは80000hには裏にある本当の80000hを、A0000も本物を投影するように変更しています。100000hのメモリはDOSメモリエリアから侵されずにHMAが使えるようになっています。80000h〜に物理メモリのないXAではどうしていたのかは今となってはわかりませんが。
ということで、IPLwareアプリの段階では80000hの物理メモリは100000hである(out 91h, 10hの状態にある)という仕様を守る必要がありますが、DOSのHIMEM.SYS起動後はそれではいけないということになります。DOS起動後に8-9,A-Bバンクをいじるようなソフトは、HIMEM.SYSが使われているかどうかを判別しないといけません【重要】。IPLware/DOS実行兼用のプログラムを作るときにこれをうっかりしそうです。 <30日追記>うっかりしたのでE10PATとSCSI_RAM のEXE 版はハイレゾで問題あるはずです。
そのHIMEM.SYS(同等機能含むメモリマネージャ)がミイソ純正品でない場合、ミイソ版どおりに動作しているか怪しいところがあります。チェックしないといけませんがこれが非常に難しい問題です。I/O port 91,93hに最後に書いた値はどこにも保持されず不明だからです。
まぁつくづくミイソは要らん仕組みを残したもんだと思いますよ。HMAや仮想86EMSが使われる時代にはほんとに無用の長物どころか迷惑な機構に成り下がったわけですから。
|
HIMEM.SYSロード時点で512K〜768Kが遣われて居る場合は? かかっくん 2021年11月29日(月) 22:42 |
あ、みいそHIMEM.SYSはやっぱり此の辺の処理はちゃんとして居るんですね。 では、HIMEM.SYSをロードする時点で既に512K〜768K(100000h〜13FFFFh)が遣われて居た場合はどう云う 処理をするんでせう?内容をちゃんと80000h〜BFFFFhにコピーしてから切り替えますか?其れともHMA不可で EMBだけ組み込むんですかねぇ?
> XA除くハイレゾでは out 91,08 とout 93,0Aは効いて何がしかの(たぶん物理アドレス一致の)内部メモリは現れるんですよね。
XLでは出るらしいです。XL^2/RLでは(Undoc2時点では)未確認だったらしいです。多分出ると思いますが。
> <憤慨して追記> というかハイレゾモードの実メモリナシ(と仕様上される)8-9-A-Bバンク機構なんてCPUが80386になった時点で廃止してしまえばよかったんですよね。LIM EMSは仮想86で実現できたわけですから、EMM.SYSの方式によるEMSなんて要らなかったのです。互換性の権化だかなんだか知らないけどそれにこだわりすぎて、機構を複雑怪奇にしたり性能面を犠牲にするというのは愚策であったと思います。
何の為にそんな仕様にしたのかは不明ですが(バンク切り替えを本体の仕様にした方が今後のマルチタスクOS 対応に有利とでも考えたんですかね?其の仕様が定着したら其れ迄と同じ流れでノーマル機にも適用してVRAMと 主記憶の切り替えにしようとしたとか?あ、↑の通りI/O 0461h/0463hなんてのを実装しましたね)、多分XL^2/ RLの頃には其れを利用したソフトが有ってやめられなかったとか? ハードウェアの方はXA専用板とかを切り捨てて居るにも関わらず、です。何だかな
満を持して(?)発表したXL^2が実は完全な32bit機でなかったり(不完全な386DXのせいだったので本来リコール すべきだった物を有償アップデートで対応)、A20制御が旧式だったりして其の後のハイレゾ機のリファレンスに 成らなかったり(A20が新式に成ったのはノーマル機のRA/LS/ES以降)、RLがリファレンスに成ったかと思えば NESAのH98なんて機種を出してきたり、ハイレゾはH98の仕様に成るのかと思えばA-MATEのHR板では RL上位(H98互換の50k/60p対応)互換に成り下がったり。ハイレゾは一体何がリファレンスなのか?と云えば 最初のXAとRLが事実上リファレンスだったワケですな。
一般人だけでなくソフト開発者も関わりたくなかったシリーズと云う事に成りますな>ハイレゾ # その点後発のFMR(FM系列の半導体部門でなくFACOM系列の情報処理部が開発、ん?何処かの何かと # 同じだな?)は16ドット機と24ドット機の基本構成を同じにしてある(違いは主に表示関連)のは他山の石ですな # まぁ98の元祖より5年も後なんだから出来が良くない方がおかしい気もしますが
|
himem.sysは必須だがadddrv組込みは禁止 まりも 2021年11月29日(月) 23:18 |
>HIMEM.SYSをロードする時点で既に512K〜768K(100000h〜13FFFFh)が遣われて という状況が具体的にどんなものなのか思いつきませんが、DOSが完全に起動したあとにadddrvにてhimem.sysを組み込むことを想定してやってみたところ、、、機能的には正常に組み込まれたように見えて(ちなみにメッセージが出ない)、A20ラインがONにならないままという状態になりました。FFFF:0010からは割り込みベクタが見えています。システム共通域0:401も元のままです。なのにEMBファンクション(XMSメモリ確保)やHMAファンクションは使えます。もちろん使ったら破滅します。
これはヤバイですよね。ハイレゾモード時、himem.sysはadddrvでの組み込では少なくとも完全に異常終了するようさせるべきです。メッセージが出ないことからすると一部の機能は異常終了しているのでしょうが、XMSXXXX0が登録されEMB,HMAも機能してしまう状況はマズいです。まあミイソは自らの罠に落ちているとしか・・・
<追記があったので追記> >ソフト開発者も関わりたくなかったシリーズと云う事に成りますな>ハイレゾ 一般のアプリ開発者にとってはさほど問題はなく、むしろハイレゾの方がお絵描きするにもG-VRAMの分断はないしBIOSも使いやすくていいです。いっぽうITFがやらなきゃいけないことをやるようなシステムプログラムの開発者には関わりたくないものだったでしょう。HIMEM.SYSの移植開発をした部隊はミイソ自らが課した仕様に苦しめられたのではないかと。
あとさらに気が付きましたが、HSBも8-9、A-Bバンクの状態を仕様通りに引き戻そうとします。これは正しいのではありますが、IPLwareなどでマッピングを変更してもHSB実行時に無効にされてしまい、思い通りにはできません。HSBは他にもハイレゾでは困ったことが起こります。ソースから直すしかないですかねぇ。
<30日22時40分追記>まだ追記しておくべきことがありました。Undoc2によれば、8-9バンクに物理アドレス80000h以外のメモリをマッピングした場合、アクセスが遅くなると書かれていますが、実際ノーマルモードだけでなくハイレゾでもそうなります。ハイレゾでは、HIMEM.SYSを使わない状態だと物理アドレス100000hがマッピングされているため、512KB以上のところがもともと遅いのにさらに遅くなります。80000hがマッピングされているときとは比べ物にならないほど遅いのです(画像)。CPUのL1キャッシュすらflushされるようです。L1の有無の落差の大きいPentium機であるAnで調べてみると一桁では済まないです。9801VX相当の速度なんですがそれでは流石にユーザは納得できないですよねぇ。 というわけでハイレゾモードではまずHIMEM.SYS の使用は絶対であり、EMM386の使用も強く推奨となります。ミイソ独自EMM.SYSなんてもう無かったことにしてくださいです。
とまあ、SCSIスロット裏BIOS RAMの発見の時と同じく、またザベの記事の読み返しから色々な発見をしました。EPSON 486GR族の特集記事も見つけたので持って帰っています。実機がないのが悔しいところですw
|
|
|