98システム解析スレッド2023年6月-1 /人'A`;人\ 2023年6月1日(木) 3:01 |
IO433h リウ 2023年6月4日(日) 16:54 |
謎だと言われておきながら手元ではまったくbitが立たなかったので検証できていなかったのですが、どうやらデスクトップ機でしかこのbitが立たない?ようです。 IO64ehに何かしらのコマンドを送った際に何らかのエラーがあると プライマリ側でbit0セカンダリ側でbit1 が立つようです。IO74cでATAリセットを送るとそのbitが消えます。 LBAパッチ内部ではコマンド91hを送った際に複数接続されていると、実行した際にbitが立ってしまうようでした。さらにそのbitが立っていると55Fの割り込みフラグが立たなくなるようでBIOSは何も実行できなくなってしまいました。
|
MECIA3用ATAドライバ リウ 2023年6月7日(水) 12:12 |
i82365互換用(98非依存)のものを以前書きましたが MECIA3搭載機種がたまたま手に入ったのでundoc98を参考に書きました。 drive.google.com/file/d/1PrfCs69MQEp_thEo2pOkYgHZcULK4wPr/view?usp=drive_link 大変便利だと思います。(自画自賛) 当時は可搬メディアはフロッピーでATAカードは超高級品でしたが今やその立場はどちらも地に落ちてしまいましたかね…。フロッピーだって便利なのですが
tipsのところでご紹介いただいていますが説明が間違っています。(作者がきちんと説明できてないことをお詫びいたします。)SSDRV.SYSの代替品はまだ構想中のものでして、これも82365互換の以前のモノもいわゆるポイントイネーブラと呼ばれたドライバたちと同じくそれ専用のドライバでございます。(修正ありがとうございました。)
大変便利だと思います。(自画自賛)再度 現代的機械と当時の機械とのファイルやりとりをする際に何を使って転送するか?(必要性はとりあえず無視する)その際の選択肢の一つとしてこのPCMCIA-ATA(CompactFlash)というものがあると思います。現代的機種の方にはUSBを介してCompactFlashへアクセスする方法はまだまだ楽勝の段階です。(これもいつ廃れるかはわからない。)それなのに98のPCMCIA側はDOS用ドライバが中古品にはまずついておりません。このことへの不満が私には旧世紀からずっとありましたのでせっかく書ける資料と能力があったので作った、というものになります。個人的にはなくてはならないものだと思っております。
|
SCSI BIOS容量の壁 リウ 2023年6月7日(水) 15:35 |
書き残そうと思います。web上にも同じモノはありますが私のgoogledriveまで見に行く人は少ないと思いますので、以下著作権は放棄、引用ご自由に 55互換、92互換という言葉は敢えて使いません。12bitシリンダモード、16bitシリンダモードと書きます。
55ボード発売から92ボード発売まで 12bitシリンダモードです。しかもHDDからもらったCHSパラメータをBIOSがそのまま使います。シリンダ上限が4095ですが、かけ算バグはほぼ全ての板にそんざいします。4095とかけ算してもあふれない最大値は16:255の設定をした場合の8GBです。それ以外の数値では"使ったモノに伴った壁"が存在します。scsiemulatorなどでわからずに設定してもDOSでは(計算バグのある場合もありますが)LBAアクセスですので起動時以外は気にならないことも多いです。 サードパーティー マルチベンダシステム搭載でHDD固有の数値を無視してパラメータを振れるようなものもありますが、かけ算バグはまず取り除かれていません。IDE変換で16:63を選んでしまった場合も12bitシリンダの壁でおよそ2GBという低い位置に正常な認識可能制限があります。 92ボードから100ボード前まで NEC製HDDでなければ16bitシリンダモードで8:32を強制選択です。ですが8192シリンダの壁で1GBより上には正常にCHSアクセスできません。サードパーティーのものにはかけ算バグが取り除かれているモノがでてきはじめました。 100ボードからPCIまで かけ算バグが取り外されました。8GBまでは正常に扱えます。 それ以降 NEC製HDDなら12bitシリンダモードでHDDからパラメータをもらい、そうでなければ容量毎に8:32 8:128(さらには15:255まで)の設定をとって認識させていました。きわめて稀ですが8:32固定のPCISCSIBIOSも存在します。
書いてから思いましたがじゃあなんぎがばいとが壁やねん?ってことを書いてませんね…
21:15追記 ウォッチスレの該当のモノは8GBを認識させた、と書いてありますが、暴走をしなかっただけで、12bitシリンダモードで見えて、511MB扱いだと思います。(フォーマッタにはそう見えるでしょうがDOSからは8GBアクセスできてしまうところが問題をややこしくしてしまいます。フォーマッタから8GBに見えているなら16bitシリンダモードですがIF-2560は後で手持ちを確認します。)
|
12ビットシリンダ数モードのLBA変換部? まりも 2023年6月7日(水) 20:35 |
92互換SCSI BIOSの中に出てくる、LBAで24bitに制限をかけるコード、あれはシリンダ数12bitモードの時だけ使われるものなんですかね? こんな命令が書かれているところです。 mov dl,[bp +14h] mov ax,[bp +15h] 実はメルコIFN-92の容量問題解消(とりあえず1GB壁をなくす)に際して、ここはパッチしにくいので放置していましたが(他の所の24bit落としのコードは28bitに直した)、マルチベンダパラメータ設定で無理やり8ヘッド128セクタにしたときに8GBを超えて正常にアクセスできている感じでした。使われているとするとLBAは24bitで切り捨てられてしまうはずです。ヘッド数を16以上に設定したら12bitシリンダ数モードになる可能性が出てきますので、ジオメトリ的に同じでも16ヘッド64セクタなどにするのは危なそうです。
どっちのシリンダ数モードになっているかは、0000:0460hからのパラメータでも見にゆかない限り、一般のユーザには分かりにくいというのも問題です。シリンダ数が4095以上になっている時でも12bitモードで動作しているボードBIOSがあるらしいことは以前報告してます(当然異常動作)。
それから100ボードの8GiB超えの拙作A1030ROMです。100ボードでも‘NEC’ドライブに出くわすと12bitシリンダ数モードになって互換性を維持するらしいわけですが、このときの24bit LBA壁については考慮していない気がします。まあミイソ印のドライブで8GiB超えなんて、SCSIエミュレータを使わない限りあり得ないので放置でもいいと思うのですが、エミュレータを使う場合は一応ご承知おきください。
|
'NEC' HDDは'nEC'前のか'nEC'後のか? かかっくん 2023年6月8日(木) 1:43 |
『8GiB超えのミイソ印』で想い出したのは、みいそ賣りのHDDでVIDが'NEC'なのは'nEC'前と'nEC'後の2種類有る らしい('nEC'後のは現物未確認)デス(Wikiの98の項か9801の項だかに55板の記述が有り'nEC'から'NEC'に 戻った旨の記述有り)が、(記述通り実在すれば)'nEC'後の'NEC' HDDは一般向けでなく鯖用の気がするんデスよねぇ ja.wikipedia.org/wiki/PC-9800シリーズ#55ボード問題 # 阿、今のバージョンには書いて無い(5年前に削除)、ガセだったのけ? ja.wikipedia.org/w/index.php?title=PC-9800シリーズ&oldid=67549384#55ボード問題
'nEC'後のが鯖用なら8.4G超(8GiB超え)なんてザラな気がし枡が、'nEC'前後なんて知らない厨がテキトーに 撰んでテキトーにつないで「ぉかιぃ」とかほざいたりしそーな気がするんデスよねぇ
ところで92板や100板の'NEC'判定部って'nEC'前の仕様(ReadCapacity対応せず)だけでの判定でしたっけ?
|
MODE SENSEでのCHS取得の判別 リウ 2023年6月8日(木) 2:38 |
PCI時代のadaptecOEMのBIOSでは以前にくりすとさんから報告があったようにNECかどうかではなくVERSIONが1かどうかで判別をされています。例えNECで始まっていてもversionが2以上であるとreadcapaからわり算です。
24bitLBAまわりですが int1B ax=46Axで読み出した場合に通るLBAtoCHS計算ルーチンの気配を感じました。AH=4xは手持ちの資料では何もありませんので実機確認するまでは妄想ですが。
8日12:33追記 24BitLBA周り エラー処理の際にしか通らないようです。壊れかけのHDDをつなぐと通りましたが、それ以外だとその部分を通りませんでした。 IF-2560 試しました。掛け算バグはあります。ですのでウォッチスレの8GBはあまり楽しくない結果が残ると思います。認識はMODE_SENSEの結果をそのままもらっていますが、ヘッドが15を越えていた上でシリンダが4095を越えると結果が間の子になってまともに動作しません。emulatorで8:32を選択するなら認識だけはまともにするでしょう。(前回書き込みの511MB予想は外れ)
|
そこんところは[bp +51h]のbitテスト40hつまりビット6が立っている時に通るようですが、エラー処理の時だけ通るのなら問題にならなかったのも道理です。12bitシリンダ数モードと関係ないなら放置ですかね。いやエラー処理がエラーになるとどうなるのか見当もつきませんが、最悪ハングアップでしょうか。 いちおうIFN92Rのバージョン1.32では28bit対応にしたつもりですが、やり方が合っているかどうか分かりません。該当部分の後にendianをひっくり返すところがありますが、なのであれば mov dl,[bp +14h]は dhを使ってくれれば直しやすいのにとは思いました。昔から謎だった場所です。
|
ハイレゾのメモリウィンドウ設定値 まりも 2023年6月11日(日) 21:13 |
ハイレゾの80000h(512KB以上)のメモリウィンドウの設定を行うI/Oポート91h、93hですが、XAとXLでの問題点を以前書いたことがあります。 DOS起動前には91hに値10hが出力されてウィンドウは100000h番地(1MB)を指しています。なのでIPLwareでは必ず10hにします。HSBも10hに戻そうとします。 DOSが起動してHIMEM.SYSがインストールされると08hに設定されて、80000hには同じアドレスにある物理メモリが現れます。いっぽう100000h以上のアドレスはそこにある物理メモリが現れます。でないとHMAが実現できないからです。 ところがXA/XLでは80000hには固有の物理メモリが無いとされているので、08hには設定してはいけないはずなのですよね。512KB-768KBの空間にどこから物理メモリを持ってくるのでしょう?最上位から256KB削ってくるのでしょうかね。HIMEM.SYSのどこか(もしかするとDOS内)に、古いハイレゾ機であることを確実に判別するルーチンが入っているはずです。XAでHIMEM.SYSを使ったときどうだったか覚えていない(意識してなかった)のが悔やまれます。
IPLware/DOS兼用のプログラムでハイレゾのメモリウィンドウをいじるものは、HIMEM常駐調査をしっかり行わないといけないわけですが、ポート91h,93hが読み出し不可なのでHIMEM常駐時のXA/XLでは何が正しい値なのか分かりません。
|
XLには08,0Aが有るらしい かかっくん 2023年6月11日(日) 22:33 |
Undoc2のio_mem.txtに依ると、XLには08,0Aが有るらしいデス
I/O 0091h 名前 08h,09hバンクアドレス指定 機能 [WRITE] RAMウィンドウマッピング設定 u PC-98XLでは、08hを出力したときだけ、隠されたメモリが出現する。 0Ahを出力しても、0Ah,0Bhバンク用の隠しメモリは出現しない。
I/O 0093h 名前 0Ah,0Bhバンクアドレス指定 機能 [WRITE] RAMウィンドウマッピング設定 u PC-98XLでは、0Ahを出力したときだけ、隠されたメモリが出現する。 08hを出力しても、08h,09hバンク用の隠しメモリは出現しない。
XAの場合は単純にHIMEMと無関係に512Kなのでわ? 1M〜に増設してメモリSWを768Kに設定出来るか?で判りそーな?
|
1MB以上で768KB まりも 2023年6月11日(日) 23:40 |
XAで1MB以上のところに増設してDOSで768KB空間を使っていました。10h,12hで設定されていたはずです。DOS 3.1の時代で、HIMEM.SYSを使っていないのですよね。以前にも書きましたが、このウィンドウ機構はXAのみで廃止した方が良かったのです。512-768KB空間にはキャッシュが効かない(効かすわけに行かない)ので、こんな機構を486登場まで引っ張る必要など微塵もなかったのです。全くもって互換性のやり過ぎ。IO-バンクメモリがハイレゾでも使えるという利点だけありましたが、ドライバがハイレゾに対応できたのも途中からだし、使っていた人なんていなかったのでは。
|
XAでのHIMEMはド〜動く? かかっくん 2023年6月12日(月) 0:14 |
とすると、XAでのHIMEMは ・何処かのバンクを256K遣い10h 12hを写す ・HMA不可としEMBは14h〜とする ・640K/768K設定では動作しない の何れかの気が?
『IO-バンクメモリがハイレゾでも使える』は正しくなく、I/O 00EChか10ECh(不揮発)のバンク専用RAM(9234/ 9834/LB/SB/SC)はハイレゾで遣えない事に成って居枡しI/O 00ECh/10EChのDRVも動きませんし BMSは後から出来た規格で、BMS対応DRVしか遣えませんし
|
XAでの80000hメモリ窓の配置 リウ 2023年6月12日(月) 11:39 |
emulatorで実験しました。DOS起動後にadddrvでHIMEMをロードしました。 その際のXA判定は0000:0500と0000:0501で試しました。(undoc参照) ハイレゾ判定だけですと91hに8 93hにaを渡します。(とても普通) XA判定と思われる値にしてメインメモリの量を640k設定にしておくと91hにeehを渡しました。93hは放置です。 次にメインメモリの量を768k設定にすると91hにech 93hにはeehでした。 メモリ量は0000:0401が70hの場合でした。変更すると、それに伴ってIO91hと93hに出す値が変わりました、やはり一番後ろのメモリをここに持ってきているだけのようです。EMBの総量が256k減少することも確かめられました。 (とはいってもemulatorでの検証であることはお忘れなく)
確かめたときのIO 91hの操作に対してはemulator側は何もしていません。(裏方からの出力値の確認のみです。) なので元々8000:0000に出ていた100000hのモノがどこかにコピーされて、それからメモリ窓内部の256kに再度コピーされ、HMAが有効になったとは思うのですが、それについても確かめきれてはおりません。
|
まだ謎はあって まりも 2023年6月12日(月) 23:02 |
XAではやはり上位アドレスから切り取りでしたか。I/Oに何を叩いたかがわかるのはエミュレータならではですが、考えてみたら、システム共通域参照なのであればXA以外のハイレゾでもXAのフリをすることは可能ですよね。フェイクXAな実機で試してみたいと思います。ただ旧メモリサイズ指標0000:0401hの変更でしかないので16MB以上搭載機では具合が悪いかもですね。RLか初代A-mateに限定でしょう。
ところでハイレゾ時にはADDDRVでHIMEMを組み込むと問題があるかもというのを以前書きました。 ttp://ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2021&mon=11 DOS起動後には512KB以上のDOS空間上限近くにDOSのトランジェント部がいるわけですけども、HIMEMが組み込まれてメモリウィンドウが操作されると、そこの内容が変わってしまいます。元々あったメモリの内容は1MB以上のところに持ち去られ(HMA使用だとさらには3412hシグネチャによって潰されて)、ゼロで埋まっている本当の80000hからのメモリが出現してしまいます(XA以外)。
HIMEMはひょっとして組み込み時に元の512-768KBの内容を、新しくマップした物理アドレスにコピーしているかも?
<13日追記>ハイレゾのメモリウィンドウ関連のかなり突っ込んだ検討はこの過去ログにあります(なのに結構忘れてることも;汗)。IO-バンクメモリ機能の使用はHIMEM.SYSとBMS.SYSの同時使用が危ないかもという。 ttp://ematei.s602.xrea.com/cgi-bin/bbs39_ris3/bbs39.cgi?mode=past&year=2021&mon=12
|
RAM窓の他の遣い途 かかっくん 2023年6月13日(火) 4:59 |
他の遣い途として考えられるのは、EMSのラージフレーム等や、OS/2や窓での利用を想定して居たとか?
|
ADDDRVで組み込むHIMEM.SYS(ハイレゾ時) まりも 2023年6月13日(火) 23:18 |
そもそもDOSのメモリ配置が確定してからになるADDDRV組み込みでは、HIMEM.SYSに加えてDOS =high をconfig.sysに記述しても無視されます。元々100000h(1MB)に割り当てられていた512-768KB空間は、少なくとも初代A-mateでは物理80000h(512KB)には変更されないようです。ですからDOSのcommand.comエリアが壊れることはないわけですが、実態としては何もしていないのと同じようです(システム共通域0401のマーカーはゼロになった)。メモリのデータをコピーなどしていないと思われます。
1MB空間の最初のシグネチャも書かれません。しかしHMAファンクションは利用可能というメッセージは出ます。EMBファンクションも使えて、110000hから割り付け可能となっています。なおときどきA20ラインマスクの状態のままとなってしまうことがありました。HMAに関して全くまともに動作している感じはしないですね。1MB以上は80000hの影武者ですからHMAを使うとDOS空間を壊すであろうし、EMBも140000h未満のところは使うわけに行かないと思います。
さてfake-XAにするIPLwareを作るところから始めるとします。システム共通域0500-0501hをいじるだけでいいのかどうか?あとチェック方法も考えないといけませんね。I/O の91hと93hを監視するようIO表示ボードを挿してみますか。そういえばハイレゾモードでこれを使ったことがありませんでした。A-mateのCバスに素直にアドレスが出ないようならRLを投入しますが、忙しくて当面無理かも。
|
/人'A`;人\ 2023年6月14日(水) 5:43 |
>説明が間違っています ありがとうございます。いつも通りコソコソと直しておきます(撲殺 追記:ツイートを拝見しましたのでさらに直しておきます(再撲殺 NS/Aとか用のPCカードスロット用の奴ですよね? 使ったことないのでよく(どころか全く)わからんのです。 ちなみに純正品は持っています(入念殺 これも今は亡き大穴場ハードオフ仙台鶴巻店で買ったものだったと思います。ディスクイメージ化してありますがオリジナルのFDは死んでおる可能性が高いです。
|
【ハイレゾ】HIMEM.SYSは実行時にメモリコピーをする まりも 2023年6月15日(木) 0:06 |
ADDDRVによるデバドラ組み込みのハイレゾモードのhimem.sysは環境によってどうも結果が一定でないようですが、config.sys組み込みではリウさんの結論を裏付ける結果となりました。I/Oポート91,93hへの出力はI/O表示ボードにも現れ、9821Aeの通りのときは08,0Ahになり、システム共通域でXAに偽装したときはメモリ上限の手前を示す値、DCh,DEhが出力されました。なおなんちゃってプロテクトモードにてIPLware段階でハイメモリにデータを書き込み、himem.sysロード後に読み出してみたところ、もともと100000hに書いておいたデータが80000hとDC0000h(メモリ上限E00000hの手前256KB)の両方にも現れていました。このことから、config組み込みのhimem.sysは実行開始時に512-768KB空間の(物理アドレスでは1MBにあった)メモリを新しいマッピング先にコピーしていることは確かなようです。<15日画像追記>
問題はADDDRV組み込み時になんで再現性が悪いのかですが、、、分かりません。E10 SCSIボードを使うとまずいのかも?
|
動作がヘンなのはADDDRVだけでか、他のでもか? かかっくん 2023年6月15日(木) 1:22 |
疑問は動作がヘンなのはADDDRVだけでか、ADDDEV等他のでもか?とか、COMMAND.COMのロード前なら ADDDRV等でも正常に動くのか?とか沢山有り枡 COMMAND.COMロード前のADDDRV等とは、CONFIG.SYS実行中にDRVEXECでデバッガを実行して ADDDRV等でDRVを組み込むと云う物デス
あとはDOSやHIMEM.SYS・ADDDRVのバージョンに依っても挙動が違いそーデス
ところで、バンクの内容を写すのは必要デスが、其のバンクに此の写すコードが有り両方のバンク(640K)を 跨いで居たらド〜し枡? 其処で考えたのは、此の最中はCLI(DI)なのを利用して、INTテーブルの後方(前方はNMIも遣うのでよろしく ない)をワークエリアに写して其処に写すコードを写してSS:SPを変えてCALLF、戻ったらSS:SPを戻してワーク エリアからINTテーブルに書き戻すと云う案デス。如何でせう? ソースコードが有るXMZを改良出来そーデスが、DOS/窓9xのHIMEM.SYSはド〜対処して居るでせう?
|
普通にDOS 6のですが まりも 2023年6月15日(木) 16:03 |
使っているのはDOS 6.20のADDDRVとHIMEM.SYSです。ADDDRV組み込み時には動作がおかしいことは2021/11の過去ログの通りで今回も再現したのですが、昨日になって調べると何故か普通に動作しているのですよね。ただしA20ラインはマスク状態です。HMAはファンクションとして使えるとなっていますが、A20L制御は自動で行うのだったかどうか? DOS =highはどっちみち使えないので実用としてはADDDRV組み込みは無意味です。DELDRVで開放した後にシステム共通域が復元されるわけでもないので再びADDDRVできませんし。
XMZがどうかわかりませんが、ハイレゾモードをあまり考慮しないHIMEM.SYS下位互換のものは、正しく動くという期待はせず試してみるしかないでしょう。512-768KB空間のコピーは必要です。HMA機能がないものであればEMBで140000h以上を使う分には大丈夫でしょう。
<23時追記>himem.sysがコピーする元の物理アドレスについて、非常に重要なことがわかりました。現在512-768KB空間に出ていてDOSが使用しているメモリからではないのですね。無条件に物理1MB(100000h)から、新規に512-768KB空間に割り当てるメモリの物理番地へコピーします。DOS起動時には100000hに512-768KBのウィンドウが割り付けられていることを前提にしていますね。ADDDRVでhimem.sysを繰り返し組み込むなどすれば(システム共通域の情報を復元させても)おかしなことになるのは当然ということになります。DELDRVしても80000h(XA以外)に割り付けられたままなわけですから。
|
XMZは かかっくん 2023年6月15日(木) 23:48 |
XMZはアーカイブに有り枡。ソースコード同梱デスのでご覧下さい web.archive.org/web/20011123050358/www.geocities.co.jp/SiliconValley-SanJose/8291/ web.archive.org/web/20011123050358/www.geocities.co.jp/SiliconValley-SanJose/8291/Gif/xmz102.lzh
512K〜768Kを256K〜512Kに写してからバンクを替えて書き戻し枡。でも256K〜512Kが空か使用中かの チェックは有りません。此れでわマズいので別の領域を遣わずに512K〜768Kだけで写す検討をしたのが 21年11〜12月ですた。当時はバンク間で写すコード自体がバンクに在る場合、而も両バンクに跨がって 不可分の場合の検討を忘れて居ますた。
其処でCLIの間は参照されないINTテーブルの後方に写すコード(数十バイト)を写して其処で実行と考えますた。 其の前に元のデータをワークエリアに写し、SS:SPを保存し変更し枡。 # ソフトウェア割り込みはコード中にINTが無ければ実行されないが0除算や一般保護違反等の例外の # (略)、其の為テーブルの前半は使用せず
因みにXMZにはXAのチェックが有りません(問答無用で8とAにする)のでXAではおかしく成増
ところでCONFIG.SYS実行中は未だ高位のRAMは遣って居なかった気がし枡(DRVEXECでVMAPを実行すると 判り枡)から、CONFIG.SYSの先頭のDEVICE=にて問答無用で8とA(XAは無視するか最上位から2バンク 割り当て0:0401hを-2)にするDRVを讀めばノーマル専用のVEM486やLEMMもハイレゾで動きそーな? # ゐゃMCB関連の情報が有るから写すのはMUSTか、大したサイズは無いからVRAMでも間借りして(略)
|
内蔵DMAの16M越え リウ 2023年6月16日(金) 1:40 |
話題が飛びましてすみません。 内蔵DMA対Cバス24bitアドレスの壁 結局本体側がバンク切り替え(?)を行ってCバスデバイス相手にも4G空間全部使えそうだ という結果が得られました。 ttps://drive.google.com/file/d/15NcmN-DLDObo80Y2SSBJmdxvVSb13oz6/view Xe10に挿した118板で18Mの位置のアドレスからのDMA(メモリ→デバイス転送)で音が鳴りました。
外部DMA(バスマスタSCSI)もきちんと制御すれば(BIOSはやってないでしょうし、win9x時代のドライバもやってなさそう)対応機種では越えられるような気がしています、またそれも検証しておきます。
19日追記 色々やっては見ましたが、検証が正しいかは別として やはりCバスで外部DMAを使う場合はこの24bitアドレスの壁は越えられない気配でした。一度16M以下に転送し、そこからすくい上げるやり方はあまり好みではないのですがそれしかなさそうです。
|
DOS起動直後なら かかっくん 2023年6月16日(金) 4:41 |
ナイコンでの机上の空論では大して進まないのでXL^2持ちの知人に調査を依頼しますた # 未だに386GSは不動 DOS起動直後ならMCB周りだけ写せば良さそーな?DOS起動前なら無断で変えても良さそーな? 無断で変えるなら8バイト追加で済み枡し # IPLwareで8 Aに変えてからノーマル専用のVEM486とかLEMMを遣うとか、PBRのIPLコードに仕込むとベター
> 結局本体側がバンク切り替え(?)を行ってCバスデバイス相手にも4G空間全部使えそうだ > という結果が得られました。
確か此れに対応したSCSI板が16M越えSCSIだったやうな? Undoc2 io_dma.txtの最後に有った気が?
|
XMZ286のXA対応版 まりも 2023年6月16日(金) 15:31 |
>DOS起動前なら無断で変えても良さそー 一般的なIPLwareは60000-7FFFF hのところで運用されているはずです。DOS起動前に80000h以上のところは使っているものはないでしょう。そこや1MB以上のメモリを使うIPLwareアプリも今のところないでしょう。ハイレゾを考えると使わない方が良さそうです。基本的にDOS起動前にはハイレゾ512-768KB空間は1MB直上を指していないといけない、それがミイソ仕様です。
DOS起動後はMCBの終点だけコピーしておけばいいかもしれませんが、メモリを無断使用するデバドラやひょっとしてDOS本体もあるし、MCBを追跡するのも面倒ですから、無条件に256KBコピーの方が簡単です。
XMZのソースはざっと読んでみました。16MB以上のメモリに対応していない古い仕様なので、むしろ80286機でメリット(サイズが小さいなど)があるものと思います。XMZ286の方です。そうするとXA対応にアップグレードしておいた方がいいかもしれないですね。XA対応ソースレベルパッチでも考えてみますか。しかし需要はないですよね。
これまでのIPLwareアプリでハイレゾ時メモリウィンドウを操作するものをXAに対応する予定もありません。XAにはシャドウRAMが全くありませんから操作の必要となるもの自体がありません。SCSI_RAMのDOS実行版はハイレゾでは正しくはHIMEM.SYSの存在チェックが必要ですが入れてないですね(汗
メモリウィンドウ操作するプログラムではXA対応は非常に厳しいというか面倒です。EMBファンクションによりメモリをいっぱいまで使ったことにして搭載量を取得し、最上位アドレスを知る必要があります。XA以外のハイレゾ機ではhimem.sysがいたら08,0Aバンク決め打ちでいいのですけども。
|
どのバンクかが問題に成るのは かかっくん 2023年6月16日(金) 21:21 |
どのバンクを割り当てて居るか?が問題に成るのはXMS(特にHMA)位な気が? # 1M以上を直に遣うプログラムも有り枡が で、バンクを替えないノーマル専用XMM(VEM486やLEMM以外にFreeDOS(98)向けのFDXMS(/286)や HIMEMX等も)の前処置として8とAにしておくのを考えますた 因みにDOS自体はDOS=HIGHを除き、両窓が同じバンクでない限り其々が何のバンクでも動作に支障 無いやうデス
で、以前にも問題提起が有ったやうにHSBはIPLwareどころかPBRのIPLコードすらスキップして直に IO.SYSを讀んで居るんデスよ。此れでは前処理を幾らしやうとしても意味無し、別の対策が必要デス HSBユーザには正攻法を採って戴くしか?
で、XL^2に付いて、幾つかの疑問が解けますた。知人に感謝、仕事が早い! ・DOS起動最中の〜768KのMCBはxD**辺りに在るそーデス。xはメモリSWのRAMサイズに依り変わり枡 ・512K(XL^2初期値) 7 ・640K 9 ・768K B 各バンクの上位32K位を写せば用が足りる気が? ・Undoc2にundocな、XL以外で512K〜640KにA、640K〜768Kに8を割り当てた場合、知人所有のXL^2 (88年?月)ではキチンと512K〜640KにA、640K〜768Kに8が出るそーデス。 # 銘板のLOTシールの1ケタ目が8、2ケタ目は不明瞭だそーデス RLやH98・A-MATEでも同様ならXLと違って(?)386+機は此の仕様と考えても良い鴨? ・ハイレゾでは単純にjmp FFFF:0やjmp F000:FFF0ではリセットが掛かりません。正規の手順を踏んで out F0hでないとリセットしないやうデス。面倒!(ハイレゾでの常識でしたっけ?其れともXL^2だけ?) ・IPL前に8とAにしてVEM486・LEMM・FDXMS・HIMEMXが動くか?は「待たれよ」との事。続報を待ち枡
|
ハイレゾのOUT F0h リウ 2023年6月16日(金) 21:44 |
リセットボタンを押さなくともリセットできる という便利さから私的にはとてもよく使うのですが たしかにAsハイレゾで、これは効きません。SYSTEM SHUTDOWNな赤文字が出ます。 なぜかとおもっていたのですがそういうことだったのですね。何が代わりになるのでしょうか
DOS起動前にハイレゾ機で91 8 93 aをやると HIMEMは暴走です。LEMMは素通りします。vem486も暴走だったかな(とにかく動作はしません) 今月11日に修正をかける前のfreebsd.mbrが残念ながらかなり長期間8 a指定でブート前initをやっていました。
|
VEM486が動作しないとしたら かかっくん 2023年6月17日(土) 3:31 |
↑の通り、91=8,93=A状態で、ハイレゾ対応のHIMEMが動作しないのはお判りでせう。惡迄も此の前処置は ノーマル専用のXMMを利用する場合に限られ枡
VEM486が動作しないとしたら常駐するセグメント(標準設定ではUMBに常駐)やEMSのページフレームの 位置がマズい気が? VEM486.EXEをEMSDRIVE.SYSにリネームして、DEVICE=EMSDRIVE.SYS /E=B0にしてみて下さい。
CONFIG.SYSにDEVICE=EMSDRIVE.SYSが有ると主記憶を704Kに切り詰めB0-BFを予約とし枡 記述だけで良いのか内容が別でもEMSDRIVE.SYSファイルがロードされれば良いのか、内容がEMMである 必要も有るのか?は不明デス。DOS5/6辺りはEMM386.SYSかEMM386.EXEへのリネームでも良い鴨?
此れでウマく逝かない場合はメモリSWを768Kから640Kにして、EMUMB386でA0-AFをUMBにしてみて 下さい。あとは640K部のMCBを連結させれば主記憶が704Kに成増
|
ハイレゾで効かない再起動 まりも 2023年6月17日(土) 10:44 |
jump FFFF:0000でリセットできないのはBIOSのF800:0000からのコード(もしかしてハイレゾボード上のROMにあるやつ)のバグなのでしょうかね。A-mateハイレゾは、基本的にはソフトウェアリセットではノーマルモードに戻って再起動ルーチンに入らなければなりませんが、初代A-mateにはその仕組みがありません(ハイレゾボード上のリレーが動作せず)。いっぽうAnには(おそらくAf以降)それがありますし、I/O 534h bit 0トグル操作による完全ハードウェア(外部回路の)リセットが効きます。 シャットダウンポートをセットしてからのout F0hの方は動作していますよね? 初代B-fellowと似て周辺回路のリセットはできていないかもしれませんが。
|
Asハイレゾの場合 リウ 2023年6月17日(土) 12:30 |
お二方ともお返事ありがとうございます。 まずout 91 8 out 93 a状態でDOSに入った上でのEMSDRIVE.SYSの名前変更でのvem486 動作しているようです。CPU載せ替えで、キャッシュ制御ドライバがハイレゾ非対応の場合にはこれはとても便利に思いました。(が普通の使い方ではないですね…)
シャットダウンポートは1 0の状態でした。これでもノーマルではリセットがかかるはずです(修正V166では 1 1でした。)がハイレゾではこれではだめなようです。1 1の状態にしてout f0hできちんとピポりました。常識だったのかもしれませんが、学び直せました。
|
ハイレゾのEMSのB000フレーム まりも 2023年6月17日(土) 21:08 |
.ハイレゾ時に64KBのフレームを構成する場合は メルコのEMJのドライバmelemm でもemsdrive.sysに改名するようにという指示があります。EMM.SYSかEMSDRIVE.SYSが有ると主記憶を704Kに切り詰めるのは、NEC版MS-DOS側が隠し持っている仕様のようです。EPSON DOSをEPSONハイレゾ機で使う場合はどうなんですかね?
ちなみにアイオーはこの手段を使わずに、メモリスイッチ設定でメモリ空間をひとまず640KBに縮めておいて、ドライバは改名せずemm4j.sysを使えとなっています。DOS起動後にmex.comというようなプログラムでMCBの終点をA0000h-->B0000に拡張して704KBのDOSメモリ空間にしています。
<18日追記>使うべきでもないミイソ独自EMM.SYSですが、これもADDDRVによる組み込みではおかしなことが起こりますね。DOSメモリ空間が768KBのままで704KBに縮小されません。つまりEMS領域とDOSメモリ空間がB0000hで重複の状態になってしまいます。EMS使用中の状態でうっかりDELDRVできてしまうのもよくありませんから、config.sysで組み込むべきです。
|
MCBが変更されるのはCONFIG.SYSに記述が有る場合 かかっくん 2023年6月19日(月) 20:53 |
惡迄MCBが変更されるのはCONFIG.SYSに記述が有る場合で、みいそDOS3.3DではCONFIG.SYSに DEVICE=EMM.SYSかDEVICE=EMSDRIVE.SYSの記述さえ有れば704Kに成るそーデス # 見つかりません でも変わるらしい=記述だけで良い
640K設定でMEXで704Kにする方が確実な気も?512K設定でもMEXで704Kに出来れば文句無しデスが! # 512Kではエラー表示で動作しない模様。理論的には出来ると思われ
|
MEXがする事 かかっくん 2023年6月20日(火) 10:30 |
MEXの動作条件に ・ハイレゾ ・メモリSWは640K設定 ・DOS5(以上?) ウチのはバージョンの問題かDOS6以上では不動 ・DOS=UMB HIGHは無くても良い が有り枡。此れは640K設定でDOS=UMBの際に有るセグメント9FFFhのMCBヘッダを目印にする為デス。 此れもDOS=UMBが有るだけで置かれるのかUMBを確保して初めて置かれるのか、DOS=UMBは無くても UMBを確保すれば置かれるのか(DOSに遣わせない場合も有り得るので此れかと) でも其れならDOS=UMBを動作条件にはしない筈デスし 因みに9FFFhのMCBヘッダを移動しなくても主記憶上のMCBの情報を書き換えれば主記憶のサイズを変える事は 出来枡 # 移動しないとUMBを認識しなく成る
|
MEXの仕様 まりも 2023年6月20日(火) 13:15 |
>9FFFhのMCBヘッダを移動しなくても主記憶上のMCBの情報を書き換え 簡単にこっちでやっているのかと思っていましたが、そうではないのですね。DOS 5で動かないのも気が付きませんでした。当時確かにDOS5でした。EMSボードが出た頃、アイオーはハイレゾ対応がイマイチという印象を持っており、メルコのEMJに乗り換えたのです。PCIマシンになるまではそれで使っていました。
|
MEXをノーマル機で試す かかっくん 2023年6月20日(火) 19:31 |
メモリSWを512Kにして、デバッガでMEXのハイレゾ判定をスキップして動作を追う事でノーマル機でも 試せ枡。ファイルの後方にエラー表示の文字列が有り枡が、其の順番通りの判定をして居枡 DOS5判定が cmp 5 jz 次の判定 ならば jnc 次の判定 にすればDOS6等でも動き枡
|
一部機種でのHxC+VFOでの動作不良について かかっくん 2023年6月20日(火) 21:08 |
VM21 VX UV21でHxC+VFOの動作がぉかιく成ったり、動作しなかったりした原因は仕様に反した(?)実装の HxCに有りますた # そー云えば知人宅でXL^2に遣った際もぉかιかったやうな? HxC revC/FのPIC18F4620のGPIOのIoは±25mAデスから不足と云う事デス
多分本体のPU値の問題だらうと想て測った処150、部品を見ると9ピンの151抵抗ですた。只のPUでなく終端 だったワケデス VMやVXは8インチ4台も想定して長いケーブルに合わせた終端なのは解り枡がUV21(やXL^2?)は8インチでも 2台迄デスから330位(331)でも良さそーな?
と云うワケで本体を1kに、HxCには14pLPTの双方向イヒで外した7407N(Iol=40mA)を取り付け枡。 其の内やり枡
|
【予告】ICC365の修正 まりも 2023年7月1日(土) 0:40 |
FDLOADERとしても使えるIDE容量変更ツールICC365ですが、いろいろと不具合が見つかったので直しにかかります。容量変更が不揮発non VOLATILEモードになっていなかったようです。電源を落とすと変更が保持されない状態です。 原因は、定数定義に文法エラーがあるのにMASMにより素通りしていたことにありました。文法エラーが出てくれずに異常な値になっているとそりゃ気がつきません。これってMASMのバグじゃないかとも思うのですが、644hと書いてた数値に名前定義してからおかしくなっていたようです。とにかく気がつくのに時間がかかりました。
|
|
|