1chipNextorMSXで利用するSDカードのフォーマット2017年01月11日 23:31

れふてぃさんが
Windows10でフォーマットしたSDカードが1chipNextorMSXで利用できないと書き込みくれたので追試。

テストしたのは16MBのSDカード。
フォーマット直後のSDカードをセットしたまま起動し、NextorBasicが起動した後Filesコマンドで動作検証。

3種類の方法でSDカードをクイックフォーマットしてみた結果
Windows7      ->OK
Windows10     ->NG
SDFormatter  ->OK

Win7とSDアソシエーションのSDFormatterでフォーマットしたものはFile not foundと表示されるが
Win10でフォーマットしたものはBad drive nameと表示される。

Win10でフォーマットしたものもcall mapdrvコマンドでドライブレター割り当てれば一応アクセスはできるみたいだけど、call fdiskで初期化しようとしても初期化できない。

なぜこんな差が出るんだろうとフォーマットを調べてみた。
Win系でフォーマットしたSDとSDFormatter でフォーマットしたSDはブートセクタの内容が全く違う。
ただし、Win7とWin10はほとんど違いがない。
違うのは&h29のボリュームシリアル番号位。
試しにWin7でフォーマットしたものと全く同じになるように直接値を変更し、論理ドライブのイメージバックアップしたバイナリが全く同じになることを確認したメディアをNextorで試してみたが、やっぱりBad drive namと表示されてしまった。

何が原因なんだろう?

とりあえず、SDFormatterで初期化するかNextorのcall fdiskで初期化するのが確実かな?

特にWindows10で初期化する場合はSystem Volume Infomation作る問題回避するために
こちらもれふてぃさんに教えていただいた
ttp://www.thewindowsclub.com/prevent-system-volume-information-folder-usb 
の手順通りに設定したうえでSDFormatterで初期化するのがベストか。

コメント

_ れふてぃ ― 2017年01月14日 00:06

Nextorの作者であるKonamimanさんにメールしてみました。
どうやらWindows10だとFAT16ではなくFAT16Xでフォーマットされるのが原因のようです。FAT16XはディスクアクセスがCHSではなくLBAを使う仕様のようです。といっても中身はほぼ同じはずなのですが・・・。Partition IDが0Ehになります。
パーティションの情報はブートセクタ(=各パーティションの先頭セクタ)ではなくディスクの先頭であるMBR(マスターブートレコード)に書かれています。WindowsからMBRを見られるツールは見つけられませんでした。

こういうツールでパーティションIDは変更できます。まぁ、SDカードフォーマッタを使った方が早いですが。
ttps://www.partitionwizard.com/

ただ、Konamimanさんも以前からFAT16Xの話は知っていて、でもFDISKで問題はでるけどディスクアクセスには問題ないという認識でした。だとするとFAT16XもOS(?)か何かによって微妙な差があるのかも知れません。MBRのパーティション情報には、CHSとLBA両方の情報を書ける仕様になっていますが、その辺りに差があるのかも。でも、ダンプツール、アクセス可能なFAT16Xのディスクが無いのでこれ以上は追えませんね。

_ ゆうくん ― 2017年01月14日 11:46

ありがとうございます。

SDカードをとっかえひっかえしながら確認していたんですけど、
Nextorでパーティション切ったSDSCやSDHCの先頭パーティションをWindows10でフォーマットした場合2番目のパーティションがマッピングされて使えてます。
このようなSDの場合はFDISKで異常が起こることもないようです。(_FDISKメニューでフォーマット種類が「Type 0E」と表記されるのも確認出来ました)

このフォーマット問題は、
SDカードのパーティションをWindows10でフォーマット(FAT16X=ID:0E)した場合
・FAT16Xパーティションは起動時にドラブレターが割り当てられない。
・SDカードに複数パーティションがある場合、2番目のパーティションがFAT16ならそのパーティションが選択される
・SDカードに1パーティションしか存在しない場合、ドライブレター割り当てに失敗し、かつFDISKが動作しなくなる。
という現象と理解しました。

FAT16Xパーティションを_MAPDRVで手動でドライブレター割り当てした場合は_SYSTEMでDOS起動もできるのでディスクアクセス自体に問題ないというのも正しいのかと。

_ OKEI ― 2017年01月14日 22:00

2GBのSDカード、Windows10でフォーマットしてから読めなくなって困っていました。FAT16Xなんて初めて聞きました。

MBRを見ると+1C2が0Eになっていますね。ふつうは06ですか?
MBRのその他の値もFAT16フォーマットのSD2GBとは違うので、手作業で書き換えました。

フォーマットするときは気を付けないといけないですね。

_ れふてぃ ― 2017年01月15日 00:32

ゆうくんさん

詳細な確認ありがとうございます。SDカードに複数のパーティションがあっても、すべてFAT16Xだと駄目なのですよね、きっと。SDアソシエーションのフォーマッタでフォーマットしたものを例のツールでパーティションIDを変更しても駄目でしたので、Windows10でもおかしな情報を書いている訳では無いのでしょう。FAT16Xで読み書きできるという話は起動時に割り当てているだけかも知れませんね。

OKEIさん

0Ehは私も初耳でしたが、調べて見たら2000年頃の資料にも載っていたので新しいわけでは無く・・・マイナーだったのでしょうね。

起動コードが01BDまであって、パーティションテーブルが01BEから始まり、オフセット+04なので・・・01C2がパーティションIDですね。
01h:FAT12(CHS)
04h:FAT16(CHS, 32MB未満)
06h:FAT16(CHS, 32MB以上)
0Eh:FAT16X(LBA)

FAT16の時とFAT16Xの時の差ってどんな感じなのか気になります。

実用的には、SDアソシエーションのフォーマッタを使うのが楽です。
ttps://www.sdcard.org/jp/downloads/formatter_4/
デジカメでも大丈夫かも知れません。私のFujifilmのデジカメ(10年以上前の)はFAT16でフォーマットしてくれました。

_ OKEI ― 2017年01月15日 20:20

FAT16XのSDカードを使うとどうなるのか、MegaFlashROM SCC+ SDをtRのSlot 1に挿して調べました。
実験に使ったSDカードは両方とも2GB パーティション分割無し、SD slot 1にFAT16、SD slot 2にFAT16X、電源ONで下の表示が出てNextorが起動します。


 ROM disk found
 SD card slot 1: SDSC 1.x
 SD card slot 2: SDSC 2.x


Shem.comでFB21辺りを見るとMegaFlashのために3ドライブ確保されています。

 FB21: 03 8D 01 8B (slot1-3 3ドライブ、slot3-2 1ドライブ)

FD29: 04 04
(ROMdisk有り SD slot1 : SDSC SD slot2: SDSC)

F355: 8A F1 9F F1 B4 F1 5B F1
(各ドライブのDPBアドレス)


MMから各ドライブを表示させるとCドライブにアクセスできません。原因はページ2のドライブ情報エリアがMegaFlash用に2ドライブ確保されていたから。1ドライブ足りない・・・

DOS2ではドライブ情報をページ3のDPBではなくページ2に置かれるドライブ情報エリアから得ます。そのメモリマッパ番号はF2CFに書かれています。

Nextorではドライブ情報エリアが拡張されていて、DOS2と同様のドライブ情報+パーティションの先頭セクタ等が書き込まれます。
Nextor 2.1 alpha2では1ドライブに6Bhバイト(DOS2では61hバイト)のメモリを確保しますが、起動時にFAT16Xのドライブがあるとドライブ情報エリアを確保しないようです。

メモリの確保はNextorの場合bank8 4CC8hルーチンが関係しているようですが、まだ解析していません。


中途半端な報告でした。

_ ゆうくん ― 2017年01月15日 23:47

OKEIさん、れふてぃさん
色々な情報、ありがとうございます。

今、caroさんとメールでやり取りしているのですが(caroさんもNextor搭載版作成されるようです)、その中でMSXでSDCARDのMBR含めた詳細情報表示できるプログラムをいただきました。

お二人にメールしておきますので調査にお役立てください。

caroさん、本当にいつもありがとう!

_ れふてぃ ― 2017年01月15日 23:47

ありがとうございます。微妙な現象ですよね。
Konamimanさんが直してくれると良いのですが、まぁ、回避方法はあるので。
それなりの使い道を考えると、フロッピーディスクエミュレーションくらいはやりたいところですね。MFR SCC+ SDではSDカードから直接起動するので1Chip MSXでも出来そうなのですが、EMUFILE.COMで登録しても駄目でした。カーネルが同じなら動くかなと思ったのですが、う~む。

_ ゆうくん ― 2017年01月16日 20:07

れふてぃさん

EMUFILE.COMってNextor2.1-alpha2からの機能ですよね?
試しにNextor2.1-alpha2のROM読み込ませてEMUFILE.COM実行したらディスクイメージ(Wizardry)から起動できました。

今組み込んでいるNextorのROMはver2.04なんですけど2.1alpha2に入れ替えた方がいいですかね?

_ れふひ ― 2017年01月16日 22:59

ゆうくんさん

ありがとうございます。2.1からの機能でしたか。確かにちょっと前のMFR SCC+ SDではFLASH ROMからの起動で、最近SDカード起動になっていましたね。せっかくなのでFloppy Eulationに対応できると使い勝手が広がると思います。ついでに古いRealforce、USB接続のPS/2キーボードも一緒に対応して下さると嬉しいかな。うちのPS/2のRealforceもだめで、1,000円くらいのしょぼいキーボードを繋げています。

あ、今更ですがサイトからリンクさせて頂きました。

_ れふてぃ ― 2017年01月16日 23:00

↑何故か名前をミスりました・・・。

_ ゆうくん ― 2017年01月17日 06:53

取り敢えずテスト版
USBは下の口で(USB/PS2の判定はかなり適当なので同時接続不可で)

ttp://yahoo.jp/box/RtHmJC

_ ゆうくん ― 2017年01月17日 22:38

OKEIさん

>メモリの確保はNextorの場合bank8 4CC8hルーチンが関係しているようですが、まだ解析していません。
多分ビンゴです。
そのすぐそばの以下のルーチンでFAT12~16とそれ以外を判断してるっぽいです。
試しに4F74hの04(FAT16、32M以下)を0E(FAT16X)にしたら起動時にFAT16XパーティションをA:にマッピングしてくれました。同パーティションのNextorDOSも起動します。

ただし、それだけだとSD差し入れすると認識しなくなります。
FDISKも多分ダメなので他にもかかわるところはあるんだと思います。

Z0252:
    LD    A,(HL)        ;4F63 7E    --ここかな?
    CP    01H         ;4F64 FE 01  --FAT12
    JR    Z,Z0250       ;4F66 28 21
    LD    D,A          ;4F68 57
    LD    A,(0F313H)     ;4F69 3A 13 F3
    OR    A          ;4F6C B7
    JR    Z,Z0251       ;4F6D 28 09
    LD    A,D          ;4F6F 7A
    CP    06H         ;4F70 FE 06  --FAT16(32M以上)
    JR    Z,Z0250       ;4F72 28 15
    CP    04H         ;4F74 FE 04  --FAT16(32M以下)
    JR    Z,Z0250       ;4F76 28 11

_ ゆうくん ― 2017年01月17日 23:45

SD抜き差ししたときはBank4-5の7711hみたいです。
同様に04(FAT16、32M以下)を0E(FAT16X)でSD抜き差しした際にFAT16Xパーティションをマッピングできました。

あとはFDISKか…

_ ゆうくん ― 2017年01月17日 23:58

今試したら、上記2か所の変更で今まで_FDISKでハングしていたSDカードもハングしなくなってる。

_ れふてぃ ― 2017年01月18日 00:29

テスト版ありがとうございました。
#1 仮想FD機能が正常に動作しました。FD入れ替えもOKでした。
#2 NandemoSCC (Shift起動) もOKでした。
#3 RealforceのPS/2キーボード接続もOKでした。
#4 USB変換コネクタが見当たらず、USB接続はテスト出来ず・・・。
(でも、元々PS/2接続がうまくいかなくてタイミングの問題かなと思って、USB変換経由ならなにかがずれてつながるのでは、と思っていた程度なので、PS/2がつながるのであればUSBは不要なのかも・・・。)
#1と#2はキーボードの確認でもあります。FD入れ替えとかSHIFT立ち上げとか。

ちなみにDIP SW5 (SD/MMC Slot) をOFF (無効) にして、SDカード無しで電源を入れると起動しないので、私はkdlさんのバージョンをよく使っていました。まぁ、機能的にどのバージョンが必須という訳でも無いのですが。Original → HRA!さん → kdlさん → caroさんと進化しているのかな・・・caroさんのサイトはロシア語なのかなんなのかさっぱり分からなかったり・・・。

_ ゆうくん ― 2017年01月18日 22:36

れふてぃさん
動作報告ありがとうございます。
仮想FD機能ってディスクアクセスがキーボードのCAPSLEDに割り当てられるんですね。
最初知らなくて修正間違えたかと思ってあたふたしました。

>ちなみにDIP SW5 (SD/MMC Slot) をOFF (無効) にして、SDカード無しで電源を入れると起動しない
確かに、いつもSDありで使ってたからあまり気にしたことなかったんですけどこれはこれで制限あって不便ですよね。
IPLROMが原因なんでしょうけど、何がいけないんだろ?

_ れふてぃ ― 2017年01月18日 23:53

HRA!さんに問い合わせたことあるのですが、特に不具合を知らなかったようでした。
個人的にはSD/MMCをOFFにして使うことは無いので不便と思うことは無いのですが、バグだと思うと最新版を使いたくなります(笑) DIPスイッチの無駄遣いですしね。

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
答えは「MSX」です。

コメント:

トラックバック

このエントリのトラックバックURL: http://miyako.asablo.jp/blog/2017/01/11/8316975/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。