SRを含めて、ディスク周りの話です(余りまとまってません)。
1.内蔵ドライブの起動時のドライブの認識
66/66SRは内蔵ドライブを持っていますが、ドライブの認識は次のように行います。
起動時に、まず内蔵ドライブ1、2に対して、SPECIFYコマンドを発行した後、RECALIBRATEコマンドを発行します。この時、ドライブが接続されていないと、レスポンスが返ってきません。タイムアウトになれば、そのドライブは接続されていないと認識します。
また、背面のドライブ数切り替えスイッチは、nDS0、nDS1 を物理的に接続するか、切断するかを切り替えています。ドライブ数0にした場合は、nDS0、nDS1は接続されず、ドライブ数1は、nDS0のみ接続されます。
さらに、READY信号を使っていないため、BASICでは「常にドライブにはディスクが入っている」という認識です。
そのため、起動時にドライブが存在した場合は、必ずドライブ1のディスクのトラック#0セクタ#1が読めるまで、ずーーっと待っています。タイムアウト処理でスキップするようにすればよさそうなんですけどねぇ。
2.SRの1D/1DDについて
66SRは、1DDドライブを積んでいます。
66との互換を図るため、1Dのディスクを読めるようにBASICが対応していますが、66SRの1DDドライブは、物理的には、1DDのディスクしか読めません。
1Dのディスクを読む時は、1DDのディスクの偶数トラックに相当する部分を読んでいるだけです。トラック間隔が丁度2倍になるので、この方法で読み込めます。
トラック#0セクタ#1が"SYS"で始まっているディスクは、起動時に1Dと判断します(起動時に1度だけ判断します)。BASIC内部で1D/1DDのフラグを持っており、トラック間隔を2倍にするかどうかを決めています。
1Dのディスクに書き込む時も同様なのですが、1Dに比べてトラック幅が狭いため、書き込みが不安定だったり、66などの1Dドライブで読み込めない事があるようです。


実際には、ファイルを開く・閉じる度にディスクを入れ替えたという処理でしょうね。
(ファイルを開いている間はディスクを入れ替えてはいけない、これはその後も
今日も同様)
N80/N88同様に、Nにあったアノ忌々しいMOUNT/REMOVEがないのですから。
蛇足ですが、PC-98でも2DDではReadyを使っていません。2DDのシステムでは
ディスクキャッシュが使えないのはこのせいです。
> そのため、起動時にドライブが存在した場合は、必ずドライブ1のディスクのトラック#0セクタ#1が読めるまで、ずーーっと待っています。タイムアウト処理でスキップするようにすればよさそうなんですけどねぇ。
とありますが、66にDOS用の2DDを入れた場合など読めないディスクの場合は
どうなりますか?
これもずーーっと待ちますか?それともIndex等は返ってくるのできちんと
エラーになりますか?
>>これもずーーっと待ちますか?それともIndex等は返ってくるのできちんと
エラーになりますか?
6601の場合は、ずーっと待ちます。6601SRの場合は、1分ほどで立ち上がります。
6601の場合は、ずーっと待っているため、フォーマットされたディスクを持っていない場合は、DISK-BASICを起動する事が出来ません。
うわぁ予想通り
もしかしたらROMをmkIIに載せる際にパッチしたルーチンと同じかも?
> 6601の場合は、ずーっと待っているため、フォーマットされたディスクを持っていない場合は、DISK-BASICを起動する事が出来ません。
そのために新規ユーザはformat5dが必要になるワケですね。これは内蔵FDD用ではないか
確か、FDD 0台で起動してからSWを切り替えてFDをフォーマットする方法があったような?
この辺りです。
http://p6ers.net/mm/pc-6001/66fmt/