ツイッターで見つけた発言について。
>>FM77AV20以降の2DDドライブは66SRにはいけるけど、66にはどうなん? 教えてエロい人。
私宛ではないでしょうが(^^;
結論から言うと、66に2DDドライブやSRの1DDドライブを接続しても使えるはずです。
FDD の制御関連は、PC-6601とPC-6601SR では機能的に全く同じです。
(インバータ×2をバッファに変更する、みたいな変更があります)
そのため、制御さえちゃんとすれば、問題なく使えるはずです。
注意点は4点ほど。
1)1D のドライブとの混在は不可
uPD765A は、同時に4ドライブの制御が出来ますが、シーク時間などの設定は個別に設定できないためです(Specifyコマンド)。
2)シリンダ番号は1DD/2DD は0〜79になる
当たり前ですね(^^;) サーフェス番号を適切に与えると、2DDにもアクセスが可能です。
3)書き込み時、0xD8 のポートを適切に設定する
ナゾのポートですが、シリンダ番号により、0か1を与えるようです。
1D の場合と1DD の場合で、その閾値が違うようです。
4)当然、BASICからは普通には使えません
無難な使い方は、66SR のROMからディスク関連のルーチンを取り出す事でしょう。
実際に66にFM-77AV20のドライブ(2DD)を付けて、ブートさせてみました。
普通のソフトはダメですが、ディスクアクセス関連を自分で作った某こら息子は
見事に動きました。
ベルーガはダメだった...ROMルーチン使ってたかな?


PCの一般的な2HDドライブで書いた1Dのディスクが
66実機のドライブで読むのが不安定、という件についてでした。
実機で確実に読める1Dディスクを作るには実機のドライブで
書くのが一番ですが、それを含めいろいろ方法が提案されて
いました。
1DD/2DDのドライブを66で使うというのもそのひとつですが、
えすびさんのお話を見る限りお手軽というわけにはいかなさそう
ですね。
あー、なるほど。
PC から書き込む際に、どのトラックに書き込んでるんでしょうか?
例えば、2DD(2HD)のドライブで、1Dのトラック#0を書き込む際、1DDのトラック#0と#1を書き込むとかで、安定するかも知れません。
(逆に不安定になるかも...)
うちではdittが使えない状況なので、もっぱらテープ経由です。
RS-232C経由のを作ろうと思って、手が回ってません...
(RS-232Cボードはそのために作ったのに)
話の流れで2重書きは提案していますが、1Dと1DDのトラックの
物理的な位置関係などが問題で、幅の広い1Dのヘッドだと
隣接トラックも読んでしまうのではないかという点を
NDittの作者のゆみたろさんは懸念していました。
いずれにしても、書き込みドライブの個体差が大きいようです。
2重書き込みは、正解かどうかはかなり微妙です。
どっちにずれているかによりますので。
1Dのトラック#1が、1DDのトラック#2と#3なのか、#1と#2なのか、それともぴったり#2と一致しているのかは、個体差ですよねぇ。
トラック同士って恐らくピッタリくっついてるわけじゃなくて,ある程度隙間があると思うのです。
その部分を一緒に読み込んでしまうとノイズになるのかなと。
このあたりの数値はFDDの規格書かで規定されてるんでしょうかねぇ?
それが判ったところでFDDのヘッドは自作できないのでどうしようもないのですけど(^^;
トラックの間隔は、トラック密度という数値で表されます。単位はTPI(Track Per Inch)で、3.5インチ2Dだと67.5TPI、3.5インチ2DDだと135TPIです。
以下は5インチ2Dの例です。
トラック密度48TPI
トラックの間隔:529μm
トラックの幅:約330μm
トラックギャップ(隙間)の幅:約200μm
さらに、トラックの中心は大抵ずれるので、イレースヘッドでトラックギャップ(隙間)を作るようです。
それぞれのディスクの中心から、トラックの中心の位置も決まっているようです。
5インチの例だと
Rn0 (mm) = 57.151 - n × 25.4 / T
Rn1 (mm) = 55.034 - n × 25.4 / T
Rn0:サイド0
Rn1:サイド1
n:トラック番号
T:トラック密度(2D=48、2DD=96)
両面ディスクの場合、表と裏で4トラック分(8トラック分)ずらしているんだそうです。
持ってる本が古いので、3.5インチの情報が少ないです...
・1Dのトラック#0と1DDのトラック#0の位置は同じ。
・1DDのトラック#1の位置は、1Dのトラック#0と#1の間。
→1DDでトラック#1に書き込む事は、1Dのトラック#0と#1の隙間をつぶすからよくない。
かと思います。
ふと思ったんですが、Dittで書き込む前に、1Dドライブで物理フォーマットをして、隙間を作ってから、2DD(2HD)のドライブで、偶数シリンダのみ書き込めばいい結果になりそうな気がするんですが、どうでしょう?
さて、P66でもやっぱり互換性問題はあったんですね(当時は顕在化しませんでしたか?)
この分野の研究はPC-88関連のところが詳しいです(ご存知のようにPC-88は5インチ
2D/2HD)。
PC-88では当時から問題になっていました。
参考
www.geocities.co.jp/SiliconValley/7111/guestbook.html
www.geocities.co.jp/SiliconValley/7111/log0002.html
> ・1Dのトラック#0と1DDのトラック#0の位置は同じ。
> ・1DDのトラック#1の位置は、1Dのトラック#0と#1の間。
> →1DDでトラック#1に書き込む事は、1Dのトラック#0と#1の隙間をつぶすからよくない。
1D互換(両面も同様、以降略)で使う際には1DDの奇数シリンダにはアクセスしない
はずなので、これはトラック#1の問題というよりむしろトラック#0の問題になります。
1D/2D FDDの場合は1DD/2DDの偶数シリンダの中心に合った位置になりますが、
1DD/2DDでの隣接トラックの磁気も一緒に読んでしまうからです。これが1DD/2DD
FDDでの書き込み後の1D/2D FDDでの使用が保障されない理由ですね。
実際、偶数シリンダの書き込み後にエラーになる率が高くなります。
逆に奇数シリンダの書き換えの方がエラーの率が低いのが不思議です。
以前ゆみたろさんに、NDittに奇数シリンダのアンフォーマット機能を要望しましたが、
これの対策です。アンフォーマットがポイントで、磁化方向を一定にして、信号として
拾わないようにするためです。
ステップパルスを2倍にする回路を開発しました。2DD FDDを1D/2D用のホストで
使えそうです(この点、PC-88は3.5インチ2Dを使用しなかった(既存の資産がない)
ので3.5インチ化した後は互換性問題を生じない分有利ですが)。
尤も、確実性を重視するなら、分厚くて入りませんがFM-77用の2D FDDが確実ですが。
愚痴
5インチは当初35シリンダでスタートして→40→80と進化したので、トラック幅の問題が
生じるのは仕方ないところもありますが、3.5インチは最初が70シリンダの倍トラックから
スタートしたので、1D/2D開発の際にトラック幅を1DD/2DDと同じにしてピッチだけ
半分にしておけば、このような問題は起こらなかったような気がします。
でもヘッド(1D/2D用は5インチ2HD用が流用できそう)とか駆動部以外のコストも安くなる
のかな?
P6系は互換性というか、何が使えるかという問題ですね。
普通(?)に使ってディスクドライブとしては...
PC-8031系:外付け5インチ2D(制御:Z80)
PC-6031系:外付け3.5インチ1D(制御:8052)
PC-6031SR系:外付け3.5インチ1DD(制御:?)
PC-6601:内蔵3.5インチ1D
PC-6601SR:内蔵3.5インチ1DD
と5種類あるので、プロテクトが掛かっているようなディスクは、他のドライブでは読めないのが当たり前な状態です。
ただ、P6のディスクのソフト自体が少なかったので、あまり混乱はなかったようです。
>> 以前ゆみたろさんに、NDittに奇数シリンダのアンフォーマット機能を要望しましたが、
>> これの対策です。アンフォーマットがポイントで、磁化方向を一定にして、信号として
>> 拾わないようにするためです。
アンフォーマットの代わりに、
1) 2Dドライブで物理フォーマットをする
2) NDittで、偶数シリンダのみに書き込む
の手順で、安定的になりそうな気がするんですが、どうでしょう?
(うちでNDittが使える環境ではないので試せないんです)
ところで、アンフォーマットって、どんな処理?
>> PC-6031系:外付け3.5インチ1D(制御:8052)
8052、じゃなくて 8049、ですね。
PC-88では2DのF系と2HDのM系を併売していたので、互換性問題が最後までありました。
> 1) 2Dドライブで物理フォーマットをする
> 2) NDittで、偶数シリンダのみに書き込む
> の手順で、安定的になりそうな気がするんですが、どうでしょう?
これではダメなんです。有意なデータの有無の問題ではなく1D/2Dの磁気情報が
あるディスクを2DDドライブで書き換える事が問題なので、解決にはなりません。
奇数シリンダ(1D/2Dのトラックの両端部)に磁気情報がない必要があります。
> ところで、アンフォーマットって、どんな処理?
平たく説明すれば、磁気情報を消す処理です。データを復活させる処理ではありません。
ID部・データ部共に消します。
ノートで例えると、
フォーマットはページをまっさらに消してから罫線や升目を書き、文字を書ける
ようにする処理、アンフォーマットは文字とともに罫線や升目も消す処理です。
普通は罫線・升目を消す必要はないのでフォーマットし直せば済みます。
罫線・升目を残したまま文字だけを消すのが通常のデリートです。
2DDドライブで奇数シリンダを消す事により、書き換えられなかった1D/2Dトラックの
両端部が消え、ノイズが少なくなります。
PC-98のWizard98なら 3 erase にて実行できます(PC-88のWizard88でもできるか?は
持っていないので判りません。P6/P66用のが出なかったのは残念です)。
> PC-8031系:外付け5インチ2D(制御:Z80)
> PC-6031系:外付け3.5インチ1D(制御:8052)
> 8052、じゃなくて 8049、ですね。
PC-6031/6032は5インチ1D、PC-8031系は5インチ1D/2D(PC-8031-2W・PC-80S31(K))
ですね。初期はPC-80もPC-88も1Dでした。
ただPC-8801+PC-8031を新規に導入するユーザは少なく、次のPC-8801mkIIは最初から
2Dだったので、PC-88用ソフトは最初期を除いて2Dでしたが。mkII(FDDなしモデル10)に
PC-8031を外付けできたか?は知りません。
PC-8831-MW(5インチ2HD)やPC-88T31(3.5インチ2TD)なんてモノもありましたが略。
ところで、海外ではFDDエミュレータというハードウェア(実体はメモリカードリーダ)が
普及していますが、日本ではプロテクトが一般的なのであまり普及していませんね。
3.5インチFDDも生産しなくなった(再生品はある程度ある)からには今後徐々に
出回りそうですが、一般向け需要がほとんどなくなったので一般の売場には出ない
でしょうね...
D88形式よりもさらに詳細な、ギャップ・CRCやミッシングクロックまで記録・再現できる
仕様ならプロテクトも再現できそうな気がします(これでもウェーブやコロコロは無理かも)。
(D88ではCRCエラー等のステータスしか記録されない)
厳密にはこれでも完璧ではなく、シリンダ0の外周側が消せないので、
ここでのエラーがあり得ます(シリンダ0は重要なので結構切実)。
シリンダ39の内周側はシリンダ79として消せるので、問題ありません。
いちばんいいのは2Dドライブでのアンフォーマットです。PCにFM-77用
2Dドライブを接続してNDitt(中略)それをするくらいならP66に載せた方が
いいですね。
>> PC-88では2DのF系と2HDのM系を併売していたので、互換性問題が最後までありました。
1DDで書き込んだのを1Dで読めない、という問題はあるかと思います、多分。
両方の機種を持っていて、さらにディスクのソフト自体が少ないので、
あまり話題にならなかったのかも。
>>奇数シリンダ(1D/2Dのトラックの両端部)に磁気情報がない必要があります。
2Dドライブで物理フォーマット、で消されると思うんですが...
書き込みの際、通常の読み書きをしているリード・ライトヘッドの両端に、各トラック間の
隙間を作るイレースヘッドが付いていて、これで消されると思うんですが、どうでしょう?
>> ところで、アンフォーマットって、どんな処理?
書き方が悪かったですね。
uPD765A にはアンフォーマットというコマンドはないので、何を与えているのかなーと
思いまして。
> 1)1D のドライブとの混在は不可
> uPD765A は、同時に4ドライブの制御が出来ますが、シーク時間などの設定は個別に設定できないためです(Specifyコマンド)。
各ドライブにつきヘッド位置がシリンダ0で有効になる信号(Track00)が出るまでシークする
ような気がするので、問題ないのでは?
問題が出るとすれば、765Aの場合77シリンダしかシークしないため、シリンダ78以降にある
場合に戻りきれない(FDDなしと判断される)という点です。PC-98では戻すコマンドを2回
出して凌いでいるとか?
これはCMOS版の72065では改善されて255シリンダまで対応しました。多分2TD対応と
思われます(でも88VA/88T31の時代にはまだなかったような?)。
> 2)シリンダ番号は1DD/2DD は0〜79になる
> 当たり前ですね(^^;) サーフェス番号を適切に与えると、2DDにもアクセスが可能です。
シリンダ番号はともかく、BIOSレベルでは両面対応なんですか?まさか
> 3)書き込み時、0xD8 のポートを適切に設定する
> ナゾのポートですが、シリンダ番号により、0か1を与えるようです。
> 1D の場合と1DD の場合で、その閾値が違うようです。
何でしょうね?8インチにあるLOW CURRENTのような信号でしょうかね?閾値という事は
範囲のような気もします。あとはフィルタの定数変更とかタイミングとか?
> 物理フォーマット、で消されると思うんですが...
> 書き込みの際、通常の読み書きをしているリード・ライトヘッドの両端に、各トラック間の
> 隙間を作るイレースヘッドが付いていて、これで消されると思うんですが、どうでしょう?
この部分を消去(イレース)ギャップと云いますが、ここでは消せません。なぜなら
問題になる部分は、1D/2Dではデータトラックの部分で、隙間ではないからです。
つまり、2DDドライブで書き換えた1Dディスクのトラックパターンは...
・1Dドライブが生成した隙間
・1Dドライブが書き込んだデータ
・2DDドライブが生成した隙間
・2DDドライブが書き換えたデータ
・2DDドライブが生成した隙間
・1Dドライブが書き込んだデータ
・1Dドライブが生成した隙間
となり、この両端の残ったデータが問題を起こします。残った部分は2DDでは隣の
シリンダなので、このシリンダからはいじれません。
コマンドについてはあまり詳しくないので、ゆみたろさんの方が詳しいかと...
調べてまた書きます
Wizard98のeraseを追ってみるかな?Wizard98なだけに何かトリッキーな事を
しているような気も...
>>> uPD765A は、同時に4ドライブの制御が出来ますが、シーク時間などの設定は個別に設定できないためです>>(Specifyコマンド)。
>>
>>各ドライブにつきヘッド位置がシリンダ0で有効になる信号(Track00)が出るまでシークする
>>ような気がするので、問題ないのでは?
Specifyコマンドの問題ではないかも知れません。
ただ、1Dと1DDを混在させた場合、制御が出来なかったので。
1Dだけ、1DDだけ、の場合は、問題なく制御できていました。
>>問題が出るとすれば、765Aの場合77シリンダしかシークしないため、シリンダ78以降にある
>>場合に戻りきれない(FDDなしと判断される)という点です。PC-98では戻すコマンドを2回
>>出して凌いでいるとか?
キャリブレート(シーク)をしている音もなかったので、多分この問題ではないかと思います。
ちなみに66SRの場合は、
キャリブレート
トラック#10にシーク
キャリブレート
キャリブレート
の処理をしていました。
最後の2回のキャリブレートは77シリンダ分しか戻らないためですね。
最初のキャリブレート+シークは、シリンダ#0よりも外側にあった場合の対策のようです。
>>> 2)シリンダ番号は1DD/2DD は0〜79になる
>>> 当たり前ですね(^^;) サーフェス番号を適切に与えると、2DDにもアクセスが可能です。
>>
>>シリンダ番号はともかく、BIOSレベルでは両面対応なんですか?まさか
シリンダ番号もサーフェス番号も、当然BIOSレベルでも非対応です。
ハードウエア的には対応しているので、適切なシリンダ番号、サーフェス番号を与えてやると
動作するという意味です。
>>問題になる部分は、1D/2Dではデータトラックの部分で、隙間ではないからです。
>>つまり、2DDドライブで書き換えた1Dディスクのトラックパターンは...
>>
>>・1Dドライブが生成した隙間
>>・1Dドライブが書き込んだデータ
>>・2DDドライブが生成した隙間
>>・2DDドライブが書き換えたデータ
>>・2DDドライブが生成した隙間
>>・1Dドライブが書き込んだデータ
>>・1Dドライブが生成した隙間
>>
2DDドライブの奇数シリンダに書き込んだ場合は、上記のようになると思いますが...
1)1Dのフォーマットの直後
・1Dドライブが生成した隙間
・1Dドライブが書き込んだデータ
・1Dドライブが書き込んだデータ ← 2DDの偶数シリンダ
・1Dドライブが書き込んだデータ
・1Dドライブが生成した隙間
・1Dドライブが生成した隙間 ← 2DDの奇数シリンダ
・1Dドライブが生成した隙間
・1Dドライブが書き込んだデータ
・1Dドライブが書き込んだデータ ← 2DDの偶数シリンダ
・1Dドライブが書き込んだデータ
・1Dドライブが生成した隙間
2)2DDドライブで偶数シリンダに書き込む
・1Dドライブが生成した隙間
・2DDドライブが生成した隙間
・2DDドライブが書き換えたデータ ← 2DDの偶数シリンダ
・2DDドライブが生成した隙間
・1Dドライブが生成した隙間
・1Dドライブが生成した隙間 ← 2DDの奇数シリンダ
・1Dドライブが生成した隙間
・2DDドライブが生成した隙間
・2DDドライブが書き換えたデータ ← 2DDの偶数シリンダ
・2DDドライブが生成した隙間
・1Dドライブが生成した隙間
となりそうなんですが...
もしかしたら、こうなる?
・1Dドライブが生成した隙間
・1Dドライブが書き込んだデータ(残骸)
・2DDドライブが生成した隙間
・2DDドライブが書き換えたデータ ← 2DDの偶数シリンダ
・2DDドライブが生成した隙間
・1Dドライブが書き込んだデータ(残骸)
・1Dドライブが生成した隙間
・1Dドライブが生成した隙間 ← 2DDの奇数シリンダ
・1Dドライブが生成した隙間
・1Dドライブが書き込んだデータ(残骸)
・2DDドライブが生成した隙間
・2DDドライブが書き換えたデータ ← 2DDの偶数シリンダ
・2DDドライブが生成した隙間
・1Dドライブが書き込んだデータ(残骸)
・1Dドライブが生成した隙間
違います。2DDで偶数シリンダに書き込んだ場合です。
> ・1Dドライブが書き込んだデータ
> ・1Dドライブが生成した隙間
> ・1Dドライブが生成した隙間 ← 2DDの奇数シリンダ
> ・1Dドライブが生成した隙間
> ・1Dドライブが書き込んだデータ
↓のようになります。
・1Dドライブが書き込んだデータ
・1Dドライブが生成した隙間 ← 2DDの奇数シリンダ
・1Dドライブが書き込んだデータ
この時点で2DDの奇数シリンダでは1Dのデータトラック(両方)のデータが読めてしまい
ます(Wizard98で確認済)。両方の信号が干渉して、読むたびに異なったデータになり
ます。
NDittの1DD/2DDモードで1D/2Dを読ませてみると再現できると思います>ALL
> もしかしたら、こうなる?
偶数シリンダだけの書き換えではこうなります。だから厄介なのです。
2DDドライブの隙間では1Dのデータトラックは消しきれずに残っています。
そのため、奇数シリンダを消す事により残骸を消去します。
3.5インチ(1DD/)2DD/2HDの資料はありますが、あいにく1D/2Dの資料がないので
ここだけは実践と憶測になってしまい理論がありませんが...
www.vector.co.jp/soft/data/hardware/se016321.html
5インチの方は今までの推測で合っているようです。
1) 1Dのフォーマットの直後
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
・1Dデータ _|_ |
・1Dデータ ~|~ |
・1Dデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・1Dデータ _|_ |
・1Dデータ ~|~ |
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
・1Dデータ _|_ |
・1Dデータ ~|~ |
・1Dデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・1Dデータ _|_ |
・1Dデータ ~|~ |
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
2) 2DDドライブで偶数シリンダに書き込む
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
・1Dデータ(残骸) _|_ |
・2DD隙間 ~|~ |
・2DDデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・2DD隙間 _|_ |
・1Dデータ(残骸) ~|~ |
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
・1Dデータ(残骸) _|_ |
・2DD隙間 ~|~ |
・2DDデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・2DD隙間 _|_ |
・1Dデータ(残骸) ~|~ |
・1D隙間 ← 2DD奇数シリンダ |2DD -+-
3) 2DDドライブで奇数シリンダを消す
・2DD(空) ← 2DD奇数シリンダ |2DD -+-
・2DD隙間 _|_ |
・2DD隙間 ~|~ |
・2DDデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・2DD隙間 _|_ |
・2DD隙間 ~|~ |
・2DD(空) ← 2DD奇数シリンダ |2DD -+-
・2DD隙間 _|_ |
・2DD隙間 ~|~ |
・2DDデータ ← 2DD偶数(1D)シリンダ |2DD |1D
・2DD隙間 _|_ |
・2DD隙間 ~|~ |
・2DD(空) ← 2DD奇数シリンダ |2DD -+-
ちなみに、2DDのデータトラックは100μmになっています。
135TPIよりトラックピッチは188.15μmですから、1D/2Dのトラックよりも
狭いかも知れません。消しきれないのはここに原因が?
両方ともわかっている5インチで計算すると、
2Dのトラックは300μm、2DDは150μm、ピッチは529.17μm・264.58μmとなり、
消しきれないのが明白ですね。
あと、本来の1D/2Dよりもトラックが細いため1D/2Dドライブでは読み込みレベルが
低くなり、使い続けるとエラーが出やすくなるので、できるだけ本来のフォーマットに
コピーして下さい。
>>2Dのトラックは300μm、2DDは150μm、ピッチは529.17μm・264.58μmとなり、
>>消しきれないのが明白ですね。
この場合だと、
2DDのデータヘッドの幅 = トラック幅 = 150um
2DDのイレースヘッドの大きさ = ギャップ幅 = 264.58-150 = 114.58um
→1トラックに2DDのヘッドが書き込み+イレースする幅 = 150 + 114.58×2 = 379.16um
なので、計算上は300umより大きくなって2Dのデータを消す事が出来そうですが...
私が何か勘違いしている??
> 2DDのデータヘッドの幅 = トラック幅 = 150um
> 2DDのイレースヘッドの大きさ = ギャップ幅 = 264.58-150 = 114.58um
> →1トラックに2DDのヘッドが書き込み+イレースする幅 = 150 + 114.58×2 = 379.16um
違います。これでは2DDの隣のトラックも消してしまいます。1トラック分の隙間は両端に
あるので、114.58umの半分です(普通なら隣のトラックにも隙間がありますが、1シリンダ
おきに書き換えるとこの幅しかありません)。
トラックピッチはデータトラックの中心から中心で、はみ出してはならない幅です。
2DDのトラックピッチよりも2Dのデータトラックの幅が広いので消しきれないわけです。
www.skyfree.org/jpn/brainstorm/HWFS-1.pdf
今回問題にしているのは↑のpdfの7ページ図6のInter-track gapです。
縮尺が正しくないですが図を描きました。→回転方向にディスクが回転します。
まずヘッドの記録ギャップによりトラック幅より若干広く記録されます。
次に消去ギャップで両端を消します。
読み込み時はトラック幅より広い幅を読み取ります。
この図はピッチに対するトラック幅の比率が正しくないので、2Dのトラックと
2DDのピッチの直接の比較はできませんが、2Dと2DDの比率は2:1にしてあります。
アンフォーマットというのは特別なコマンド等があるわけではなく,やっていることはただのフォーマットです。uPD765のコマンドで言えばWriteIDです。では普通のフォーマットと何が違うかといえばセクタサイズ(N)をトラックの容量より大きな値にしています。xD/xDDの場合はトラック容量が6250byteなので N>5 とします。この条件でWriteIDを実行すると,フォーマットの途中でDISKが1周してしまいますがFDCは構わず書込みを続けます。すると今書いているセクタのID部分を上書きしてしまい,FDCはセクタを認識できなくなります。これがアンフォーマットの原理です。
磁気情報を消しているわけではなく無効データで書き潰しているだけなので,まっさらな状態にすることはできません。真の意味でのアンフォーマットとは状況が異なるので,何らかのノイズ源は残ってしまうのではないかなーと思います。データレートの異なる2HDや単密度でフォーマットすると多少マシ?
オーディオ用のテープデッキみたいにまっさらに出来る消去用のヘッドが付いていればいいのに。
>>あるので、114.58umの半分です(普通なら隣のトラックにも隙間がありますが、1シリンダ
>>おきに書き換えるとこの幅しかありません)。
何となく分かりました。
・ギャップ幅≠イレースヘッドの幅
・イレースヘッドの幅が、ギャップ幅の半分以上ならば、トラック間のギャップを作れる
という理解で正解でしょうか?
アンフォーマットですが、やっぱりNの数を大きくして、1周以上書き込んでいるんですね。
(そういうプロテクトがあったような気がするので)
データをベタ0x00 かベタ0xFF にしても、最後のCRC部分はそれ以外の特定の値が書き込まれちゃいますね。
もしかしてCRCも0x00とかになるようにしているとか...
0x00も0xffも実際にDISKに書き込むときにはクロックビットが挿入されるので,本当のベタにはならないんですよね。0か1で文字通りベターっと書ければいいんですけど。
>もしかしてCRCも0x00とかになるようにしているとか...
なーんにも考えていません(^^;
FDCリセットを使ってCRC書込み前で切ってしまうということも出来そうですが,そこまではやっていません。
>>本当のベタにはならないんですよね。0か1で文字通りベターっと書ければいいんですけど。
資料を見たら、確かにそのようですね。本当にベタ0だと、データからクロックが抽出できないですもんね。
FM の0x00か、MFMの0xAA(0x55)とかが、等間隔にパルスが入るのでよさそうな気はしますが、それ以前に「アンフォーマット」に何を求められているかによりますね。
磁石でフロッピーの表面をなでるのが一番簡単そうだ(^^;
(ウソです)
Nをトラック長より大きくすれば2周目以降でIDが上書きされて読めなくなるんでした。
プロテクトの基本でした。この技法はメジャーどころでは765系で使える技ですが、
Nが0〜3(下位2ビット)の1791/8877系(主に富士通とMSXの一部)では使えないん
ですよね。
PC-98/PC-88でできるので、原理的にはP66/66SRでもできるはずです(PC-6031は
不明。フォーマットコマンドでNが指定できれば可)。
まっさらにできないにしても、2DDのデータトラックの大部分が1D/2Dでは隙間に
落ち込むので、元データの残骸と比べて問題が少なそうです。
それでも、データトラックが細いため信号レベルが低く、ノイズが多くなり、
本物よりS/Nが低いので、本物のフォーマットにコピーして使った方がいいですね。
> オーディオ用のテープデッキみたいにまっさらに出来る消去用のヘッドが付いていればいいのに。
2DDの消去ギャップで消せるのは80〜90umくらいのようです。
FDの場合、一般用途ではまっさらにする必要がなく上書きで済むので、データトラックを
消すヘッドはないですね。
その中でも、3.5インチ2EDは全幅消去ギャップが先だそうです。
> 0x00も0xffも実際にDISKに書き込むときにはクロックビットが挿入されるので,本当のベタにはならないんですよね。0か1で文字通りベターっと書ければいいんですけど。
MFMの場合、クロックビットが入るのは0の2個目以降の場合(1が続けばデータパルスだけ。
FMでは0でも1でもクロックパルスが入り、1ではパルスが2個)ですが、データパルスに
してもクロックパルスにしても、パルスがあるごとに磁気が反転するので、普通にFDCと
接続するとどうしても反転します。
FDD自体は入力信号に関知しないので、アインシュタインのようにFDCとFDDの間に割り
込んで信号を乗っ取ればいろいろできますが。
> 1D/2D FDDの場合は1DD/2DDの偶数シリンダの中心に合った位置になりますが、
> 1DD/2DDでの隣接トラックの磁気も一緒に読んでしまうからです。これが1DD/2DD
> FDDでの書き込み後の1D/2D FDDでの使用が保障されない理由ですね。
これは隣接トラックを読むからではないですね。1D/2Dを1DD/2DDで書き換えた場合は、
後述のとおり隣接トラックのせいではなく消去しきれなかった残骸のせいです。
書き換えた1D/2Dではなく1DD/2DDそのものを読み込んだ場合は、偶数シリンダを
エラーの率が低く読み込めます。あまり意味ないですが。
> 実際、偶数シリンダの書き込み後にエラーになる率が高くなります。
> 逆に奇数シリンダの書き換えの方がエラーの率が低いのが不思議です。
ここは間違いではないです。
あと、FM-77の3.5インチ2D FDDはYD-625でした。サイズ以外は5インチ互換です。
・300rpm
・34ピンはReady
・2HD穴があるとディスクなしとみなす
PC用3.5インチは720K・1.44M・2.88Mともに34ピンがDiskChangeなので、YD-625を
使う場合は5インチ360K設定(この設定だけがReady)にします。
MSX用2DD(Ready)を3.5インチ720Kとして接続したら動かなくて調べたら、こういう
理由でした。360Kにしたら外側40シリンダだけですがそれなりに動きました。
2DDですが、FM77AV(の後期)用以外は、MSX用やTOWNS用あたりが使えそうです。
TOWNS用はPC-98用同様に2DDの回転数の変更が必要かも知れませんが、元から
VFOがないので容易かも知れません。EPSON用の(特にキヤノン電子のもの)は
PC-98とも違うらしくお勧めできません(VFO不要のPC-98に接続しても動作しない
ケースが多い)。