前のトピックを表示 :: 次のトピックを表示 |
投稿者 |
メッセージ |
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/02/13 (Wed) 21:37 記事の件名: HDFORM.COM (PC-Engine v1.1) |
|
|
20MBのハードディスク(.HDI)がPC-ENGINEから
フォーマット出来ないようです。
実機では問題なく動作しています。
40MBの場合はVAEGでも問題なくフォーマット、
システム転送、起動できています。
少し調べてみますと、HDD-BIOSコールNo.9
(mov ax,9 mov bh,0 int 81h)の
SENSEコマンドが返す値が実機と異なります。
40MBの場合、実機、VAEG共に
実機 AL=03h
VAEG AL=03h
20MBの場合
実機 AL=02h
VAEG AL=0FFh
VAEGで20MBの場合でも、直接BIOS経由での
HD読み込みは出来ています。
もう少し詳しい状況がわかりましたら
報告させていただきます。
【VAEG環境】
Windows2000 SP4
Pentium-III 533MHz
SASI-1にHDIファイルをマウント
PC-Engine v1.1 1MB-FDにて起動
CONFIG.SYS 無し
AUTOEXEC.BAT 無し
【実機環境】
PC-88VA2
SASI-IF LOGITEC LHA-12V
SASI-HDD LOGITEC LHD-34V 20MB+20MB分割モード
バンクメモリ PIO-PC34F-8MB うち128kBでメインメモリ増設
EMSメモリ EMJ-8000 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/02/18 (Mon) 23:45 記事の件名: |
|
|
不具合報告をありがとうございます。
SASIは資料がないのでちょっと厳しいですが、
40Mの場合との挙動の比較でなんとかなるかもしれませんので
調べてみます。 |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/02/19 (Tue) 00:50 記事の件名: SASI-20MB続報 |
|
|
shinra 様
コメントありがとうございました。
まず訂正です。(既にお察しとは思いますが念のため)
誤)(mov ax,9 mov bh,0 int 81h)
正)(mov ah,9 mov bh,0 int 81h)
です。申しわけありません。
前回から判明したことを報告します。
PC-Engine起動時に、デバイスドライバでINT81hを
フックしてah=9の場合のsenseの戻り値を強制的に
02hにしてみました。
結果:フォーマット不可。
別件、New diskで作成した未フォーマットのHDIをマウント。
20MB⇒ドライブ認識されず。
40MB⇒ドライブ認識される。(DIRコマンド通る)
推定:PC-Engine(@VAEG)そのものが20MB-SASIを認識しない。
HDFORM.COMは存在しないドライブのためエラー終了。
今後:PC-Engine起動前にBIOSパッチにて確認。
課題:どの時点でパッチできるか不明。
⇒まずはFDブートセクタに仕込んで見ます。
次回報告がいつできるか自信ありませんが、
結果出次第、続報入れます。
余談:
SASI-20MBは、PC-98の場合、BIOSの mode setで
ヘッド数を4と8で切り替えるようになっていますが、
np2では未実装のようです。senseコマンドの戻り値も
実機と異なりますね。(というより、IDEと返す)
さらに、PC-9800シリーズテクニカルデータブック
HARDWARE編の記述も不正確(20MB-SASIのヘッド数が4
との記述。実機ではデフォルトでは8ヘッド)で難物ですね。 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/02/20 (Wed) 01:04 記事の件名: |
|
|
kazさん、
ヒントをありがとうございます。
そうか98のテクマニが(すっかり忘れてました
ソース確認しました。
HDIファイル自身がセクタ数、ヘッド数などの情報を持っており、
以下の情報とマッチするものが無いとIDEとみなす処理になっている
ようです。
Code: | const SASIHDD sasihdd[7] = {
{33, 4, 153}, // 5MB
{33, 4, 310}, // 10MB
{33, 6, 310}, // 15MB
{33, 8, 310}, // 20MB
{33, 4, 615}, // 20MB (not used!)
{33, 6, 615}, // 30MB
{33, 8, 615}}; // 40MB |
np2のnew diskでHDIを作成し、20Mを選択した場合、
{33, 8, 310}, // 20MB
このパラメタで HDIを作成しているようです。
⇒NRDSW = 0 でディップスイッチを読み取ると、011が返るはず。
VAのBIOSは100を期待している?
#すみません、今日はここまでです。 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/03/27 (Thu) 01:07 記事の件名: |
|
|
>⇒NRDSW = 0 でディップスイッチを読み取ると、011が返るはず。
>VAのBIOSは100を期待している?
BIOSの動作を調べてみたところ、上記のとおりでした。
BIOS内のテーブルから、BIOSは、ヘッド数8、シリンダ数308を期待しているようだったので、その場合に、ディップスイッチの値として100が返るように変更してみたところ、
PC-Engineから認識されるようになりました。
詳細は以下に書きました。
http://88va.seesaa.net/article/91118359.html
気になる点
・new diskで作成される{33, 8, 310}と、シリンダ数が若干異なる→何か問題になるか?
・この変更は、98側からみるとどうなるのか
この辺をちょっと確認してから公開します。
>SASI-20MBは、PC-98の場合、BIOSの mode setで
>ヘッド数を4と8で切り替えるようになっていますが、
よろしければ、詳細を教えていただけないでしょうか。
mode setというのは、INT 1Bhのファンクションのひとつですか? |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/03/29 (Sat) 00:22 記事の件名: SASI mode set |
|
|
Shinraさん、みなさん こんばんは
情報提供すると言いながら何もできずに申しわけありません。
PC-9801のSASI-HDD BIOSのmode set については
小高輝真・河野健 著 UNDOCUMENTED 9801/9821 Vol.1 BIOS・割り込み編
1994年3月21日初版インプレス に以下のような記述があります。
INT 1BH Function 0E
入力 AH bit 7 モード(1=薄型(ハーフハイト)指定、0=厚型(フルハイト)指定)
bit 6-0 0001110b
AL DA/UA
出力 AH リターンコード
00h(CF=0) Normal End(正常終了)
40h(CF=1) Equipment Check(DAで指定されたBIOSは存在しない)
解説 AH bit7で指定されたモードにより、システム共通域内のポインタとフラグを変更する。
そのアドレスとビット位置を以下の表に示す。
---以下略---
以下は私が検証した結果ですので、確度は低いかもしれません。
解説文からだと何のことか良く判りませんが、BIOSの挙動としましては、
ah=0eh フルハイト指定:8ヘッド/シリンダ
ah=8eh ハーフハイト指定:4ヘッド/シリンダ
を切り替わります。もちろん、物理(磁気)的なディスクのジオメトリが変わる
訳ではなく、BIOSコール時のCHS論理アドレスから物理アドレスに変換する
パラメータが変わるだけです。
私自身は、実機PC-9801RA21+PC9801RA-35(内蔵40MBハードディスクを
20MB + 20MB 分割モードで使用)で動作確認しました。
実は、PC-9821Pentium機(IDE-HDDの256バイト/セクタ設定が無い)の
IDE-HDDの領域内で20MB SASI-HDDをエミュレートし、HDD起動メニュー
からCP/M-86を起動するパッチを作成した際に、このヘッド数の違いの
ために随分悩んだ事があります。9801RA21でいろいろ調査した結果、
この切替挙動を確信しました。
このような事があるため、実用性は無くとも実機は捨てられません。 |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/03/29 (Sat) 12:30 記事の件名: 20MB SASI mode set 補足 |
|
|
88VAの話題から離れて恐縮ですが、私が確認できている
現象で少しでも有効な部分があればと思い、
昨日の投稿につきまして、補足説明させていただきます。
20MB SASI-HDD使用中、mode set でヘッド数を切り替えても、
BIOSの新センスコマンド(ah=84h INT 1bh)の結果には反映されず
20MBの場合、常に「ヘッド数4」と返します。
リニアセクタアドレスと、4/8ヘッド切替しながらのCHSセクタ
アドレスでのセクタダンプを見比べて得た結論です。
ここのことについてWEB・書籍等で言及されているのを見たことは
無いため、私の環境での特異な現象かもしれません。
(どなたか追試していただけると確信を深められるのですが・・・) |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/03/29 (Sat) 22:50 記事の件名: |
|
|
kazさん、詳細な情報をありがとうございます。
予想ですが、
物理的には、ヘッド数4, シリンダ数615で、
BIOSのファンクションコールとしては、ヘッド数8、シリンダ数307
に見せている(BIOS内で変換している)のではないかと思います。
VAクラブ版テクマニによれば、BIOS内では、HDCに設定するヘッド数
などの情報と、BIOSで論理セクタ番号を求めるのに使うヘッド数は、
異なる値となっており、テクマニにあるMHAというパラメタが、
ヘッド番号上限値をあらわしているとすると、物理的にはヘッド数
4としてHDDをコントロールしていることになります。
PC-98H51などがどのドライブを採用していたかはわかりませんが、
NECのD3126/D3126Hという20Mドライブは、シリンダ数615、ヘッド数4
のようです。
http://museum.ipsj.or.jp/computer/device/magnetic_disk/0040.html
> 20MB SASI-HDD使用中、mode set でヘッド数を切り替えても、
> BIOSの新センスコマンド(ah=84h INT 1bh)の結果には反映されず
> 20MBの場合、常に「ヘッド数4」と返します。
これは、物理的なヘッド数が返却されているのではないかと。
ただ、物理的なヘッド数とは言っても、実際にはHDDから値を
取得する手段はなく、単純にディップスイッチから決定している
のではないかと推測します。0100ならヘッド数4、シリンダ数615。
古いHDDと、アプリレベルの互換を保つため、BIOSに与えるパラ
メータは20Mなら常にヘッド数8とし、新しいアプリはah=8eh
INT 1Bhすることで、ヘッド数4でパラメータを与えることが可能
になるのではないかと。
np2+実機ROMで動かすことで調査できるかも・・・と思いましたが、
9801-27のROMを読み込む機能が無いような・・・
----
いろいろ考えましたが、VAEGの実装のことだけを考えた場合、
・領域分割が無いので、おそらくHDD内にシリンダ数、ヘッド数を書き込むことはない
・CPU-HDC間では、論理セクタ番号を使う
・ヘッド数によらず、総容量が同じならセクタ数も同じ
ということで、ディップスイッチの値が0100になりさえすれば、シリンダ数、ヘッド数まわりは考慮しなくても、問題なく動作はしそうです。 |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/04/02 (Wed) 22:01 記事の件名: なるほど SASI |
|
|
Shinraさん
分かりやすい解説ありがとうございました。
少し前に書き込んだ、SASIエミュレーションでは、
得心がいかないまま実機の動作に合わせていたのですが
おかげさまですっきりしました。 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/04/06 (Sun) 01:22 記事の件名: |
|
|
VA2で使っている緑電子のSASIインタフェースからROMイメージを作成して、
np2(vaeg)にSASIのROMを読み込む機能を追加して、
(実機98のBIOS ROMとITF ROMも必要)
動かしてみましたが、何かが足りないのか暴走してしまって。
素直にROMの中身を読んで見ました。
が、どうも新SENSEコマンドには対応していないようで
ファンクション04HでAH以外を設定しているそぶりナシ。
ファンクションxEHは何の処理もしていないし。
・・・残念。
VAのハードディスクBIOS同様のパラメータテーブルが
DIPスイッチの値000〜111それぞれに用意されている
ことはわかりました。DIPスイッチ100のときのヘッド番号
最大値は3になっています。011だと7。
なので、多分推測どおりではないかと。
ファンクション04hで返却されるAHの下位4bitも
DIPスイッチの値に対応するテーブルから持ってきている
だけでした。 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/04/06 (Sun) 19:11 記事の件名: |
|
|
>np2(vaeg)にSASIのROMを読み込む機能を追加して、
最初から読み込む機能はちゃんとありました。
うまく動かなかったのは二重にROMを読み込んでいたからかも・・・
r080406 をリリースしました。
結局、NewDiskでSASI(.HDI) 20M を選択した時のパラメータを
変更して、ヘッド数4にしました。
新たに20Mの.HDIを作成して接続してみてください。 |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/04/09 (Wed) 23:42 記事の件名: |
|
|
Shinra様
新リリース、ダウンロードさせていただきました。
ありがとうございました。
無事SASI-20MB使えるようになりました。
ただ、VAEGで作成した4ヘッド20MBのHDIは
np2では当然に4ヘッドとして扱われますので、
CP/M-86等の拡張フォーマットをサポートしない
(知らない)DOSで使えなくなります。
この点は、HDIのヘッダを書き換えるなり、np2で
HDIを作成するなりで対応できますので問題ありません。
SASI-IFの件、私の手許にLogitecのLHA-12が3枚あり
1枚は完全に余っています。40MBのHDDが接続できる
ので、新SENSEコマンドにも対応していると思われます。
外付けSASI-HDDのLHD34Vも2台有り、1台は遊休状態です。
20MB+20MB分割モードでは、前面のスイッチで1台目と
2台目の入れ替えができるため、VA実機に接続した場合、
起動ドライブが変更できて便利です。
VAEGの今後にお役に立てて、送付先をお知らせ
いただくのに差し支えなければ差し上げますが、
いかがいたしましょう。 |
|
トップに戻る |
|
|
Shinra
登録日: 2005.05.22 記事: 138
|
日時: 2008/04/13 (Sun) 17:13 記事の件名: |
|
|
> ただ、VAEGで作成した4ヘッド20MBのHDIは
> np2では当然に4ヘッドとして扱われますので、
> CP/M-86等の拡張フォーマットをサポートしない
> (知らない)DOSで使えなくなります。
なるほど、確かにそうですね。
NewDiskの選択肢に20Mを2種類(4ヘッドと8ヘッド)にするとか、
np2のBIOSエミュレーションのルーチンにmode setを追加する
などの手が考えられますが、
いずれも98のエミュレーションの細かいところになりますので、
VA-EGとしてはあまりこだわらないことにさせていただこうかと
思います。
SASI HDDのご提供については、お申し出ありがとうございます。
大変ありがたいのですが、SASIエミュレーションについては、一応
先日のリリースでFIXのつもりでおり、また、実機に接続している
HDDも今のところ動作していますので、お気持ちだけありがたく
頂戴させていただく、ということにさせてください。 |
|
トップに戻る |
|
|
kaz
登録日: 2008.02.10 記事: 15
|
日時: 2008/04/14 (Mon) 22:11 記事の件名: |
|
|
了解しました。
VAEGの場合はHDCから見えるヘッド数(=4)を
設定する現仕様が正しいですね。
4 or 8ヘッドはnp2の問題ですし。
この度は、マイナーな機能のためにご対応
いただきましてありがとうございました。 |
|
トップに戻る |
|
|
|