SHARP MZ-2500の内蔵3.5'FDDや、 MZ-80B/2000/2200へ3.5'FDDを接続した場合に、 いくつかのソフトウエアを動作させるパッチと、 シークタイム変更パッチ

Last updated 2024/08/20 since about 2009

«Quick Links» 1. 概要 (summary)  2. 3.5インチFDD対応パッチ  2.1. Carry C-DOSの3.5インチFDD対応と6MHz対応  2.2. I/O誌 1983/6「Relocatable Disk Control Program」の6MHz対応  2.3. Oh!MZ誌 1985/8(?)「TAKE-DOS」の3.5インチFDD対応と6MHz対応  2.4 その他、動作しないものの簡単な対応方法等…  3. シークタイム・パッチ  3.1. Carry C-DOSのシークタイム・パッチ  3.2. I/O誌 1983/6「Relocatable Disk Control Program」のシークタイム変更  3.3. Oh!MZ誌 1985/8(?)「TAKE-DOS」のシークタイム変更  4. その他


1. 概要 (Summary)

MZ-2500の2000/80Bモードは、MZ-2000/2200やMZ-80Bのソフトウエアがほぼすべて動作するとされています。 FDのソフトウエアに関しても、確かに外付5インチFDDを使用する場合に問題はありません。 しかし、3.5インチFDへコンバートした場合は、SHARP純正ソフトウエアを除いて、動作 しないものがいろいろと見つかります。
これは、モーターON直後のready信号 (ドライブ・インタフェースの信号ではない、MZは参照しない。 代わりに、インデックスホールの検出を参照する)が反転しているため、 正しくwaitが入っていないソフトウエアは全部動作しないのですが、 これをさぼるとディスクアクセスが高速化される上に、 条件によってはかなり長く待つ必要があるので、みんなさぼって時間を短くしてしまっているのです。

なお、MZ-2500の3.5'FDD対応となると、6MHz動作させた時の更なる問題にも対応する必要があります。 更に、多少改造して2DDで後半のトラックを使用しようとすると、 20ms/30msシークではbusy checkでタイムアウトして、今度はこちらの対策も必要になってしまいます。 ready問題の6MHzには対応はしていますが、2DD対応は行っておりません。

MZ-80B/2000/2200へ3.5'FDDを接続しても同じです。 少なくともSHARP純正FDD I/Fはready信号を参照しないのですが (参照するこのパッチが必要になるので、多分サードパーティも全部同じ)、 3.5インチFDDはほとんどのものがそのまま接続できますが、I/Fが多少異なる場合があるので工夫が必要です。
MZへIBM-PC/AT互換機用の3.5'FDDを接続する方法は、 http://www.ne.jp/asahi/suga/junkyard/ にあります。

ところで、MZ-2521で確認しましたが、2500は内蔵FDDもready信号を使っていないので、 多くのドライブが使用できます。 従って、そのままIBM-PC/AT互換機用の3.5'FDD (そのままではドライブ番号が1固定なのでドライブ2はいいが、ドライブ1の場合は、 ドライブ番号設定がなければ配線の対策が必要)が接続できます。
FDが壊れた時の修理は簡単です。 ただし、前面パネルとの物理的形状の整合性は知らないよ!! 頑張って工作しましょう。


2. 3.5インチFDD対応パッチ

2.1. Carry C-DOSの3.5インチFDD対応と6MHz対応

Carry C-DOSは、DISK READYのチェックにWAITがありません…おかげで超高速です。
こちらを参照してください。

    Carry C-DOSのパッチはこちらのページ

2.2. I/O誌 1983/6「Relocatable Disk Control Program」の6MHz対応


これは6MHz対応であって、4MHzであれば普通に動作しますが、ワークエリアの
前アクセスのmotor ON/OFF情報がおかしい場合、つまり、使い方の悪いプログ
ラムの場合は動作しないことがあります。下記のTAKE-DOSも多分そうなのです
が、それを指摘するのが目的ではなく、僕が中学生の頃のコンバートしたテー
プのゲームも1バイト計算を間違えていたらしく、そうなっていました。
6MHzの場合は、FDCコマンド出力直後に必要なはずのwaitが入っていないこと
が原因ですので、これを入れてreadyチェックの待ち時間を変更すれば動作し
ます。

readyチェック対策として、

  +$00A 06 02 18 02 06 0A

の最後の$0Aを$0Bとします。
単体読み込みの場合は、"06 02"の$02も$0Bにしといた方がいいかもしれません。
ワークエリアの前回のmotor ON/OFF情報がONの時にも待つようになります。
使い方に問題があって偶然動作しているプログラムでも正しく動作するように
なります。

リロケータブル・べクトルのオフセット変更します。

  +$059 11 59 01 -> 11 5D 01

そして、

  +$174 D3 D8 C5 E5

の次から、

  +$178 06 20 10 FE 06 10 21 00
  +$180 00 2B 7C B5 00 00 DB D8 2F 0F 38 F5 E1 C1 C9

へ変更します。ちなみに、バイト数はぎりぎりで、元のプログラムを置き換え
できます。

2.3. Oh!MZ誌 1985/8(?)「TAKE-DOS」の3.5インチFDD対応と6MHz対応


挙げ足を取りたくありませんが、FDアクセスルーチンは、
「Relocatable Disk Control Program」のリロケータブル機能が削除されてい
るだけのまったく同じものでした。月刊誌へのソース公開プログラムですので、
特に問題ないと思います。
当時は、FDCの情報はほとんどなかったですし、今みたいにインターネットから
データーシートが取れたり本が購入できる環境ではなかったですし。当時、一
般人が入手できたかどうか。僕がそういうわけで苦労しましたから。
それで、本来は4MHzで動作するはずですが、"disk not ready"になってしまい
ます。

READYチェック用に、

  TRK:03
  SCT:08
  +$F0 03 -> 0B (4MHzのみなら$09でもよい)

とします。4MHzで動作しない原因はここです。
必ず、「Relocatable Disk Control Program」のmotor ON時の処理が実行され
るため、3.5'FDDでは"disk not ready"になってしまいます。

FDCコマンド出力後にwaitを追加します。

  TRK:03
  SCT:0A
  +$41 09 -> 00
  +$4A C9 10 ED 18 91 -> 06 20 10 FE C9

「Relocatable Disk Control Program」の前に改造した上にダンプで適当に読
んだため、間違ってFDCコマンドの直後でなかったり、POP BCの後につけてし
まったのですが、TAKE-DOSの方はこれでも動くから気にしないことにします。

TAKE-DOSバックアップ(ユーティリティ)コマンドのパッチは、次の通りです。

  TRK:00
  SCT:0B
  +$75 02 -> 0B
  +$79 0A -> 0B

2.4. その他、動作しないものの簡単な対応方法等…

SPSの「きた平」がダメです。 ただし起動ドライブを参照しますので、 MZ-2500の場合は、「drive 1」以外で起動すればOKです。 また、エラーが出てもリセットボタンを押せば起動可能で、 MZ-2000の場合はこちらも使えます。 なお、ぐるっぺはOKでした。
Carry labのJETは、C-DOSベースだから、C-DOSと同じ理由でダメだと思いましたが、 起動時に、C-DOSと同じ問題があるだけで、一応動作するようです。 「Close Disc Drive」と出た時、ディスクランプが消える前に再読み込みすれば動作します。 それを超えると普通に動作するようです。
他で問題が発生した場合も同じようにしてみてください。 C-DOSと同じパッチのはずですが、アドレスがかなりずれていますし、 同じパッチをした場合はディスクアクセスが死ぬ程遅くなるので、 しない方がいいはずです。
(連続アクセス時はモータONのままにし、 on時とoff時で待ち時間を分ける必要があるが、 C-DOSにそんな処理がないので対策が難しい… 連続読み込みの時のみmotor ONにしない、面倒ないわゆるAPIの追加とJETの解析が必要です… ちなみに、X1はハード的に数秒待つからmotor OFFにしても気にしなくていいし、 ready信号も有効になるまでnot readyだから、こんな問題はないです…
地獄の練習問題も起動はしてコピープロテクトチェック等は問題ないのですが、 画像を読む度に「disk I/O error」が頻繁に発生してなかなか読み込めません。 解析はしていませんが、モーターON直後のみなのでready checkが原因だと思われます。 これも、モータが止まる前に連続読み込みするのがコツで、回避可能です。
(一応、努力で動くのでパッチ作るのさぼってしまう… エミュレータで動かずに悩んで、ディスク関係は全部どこにあるか調べて、 解析したんだがなぁ…)
他の手持ちのプログラムは全部動作するようでしたので、他に動かないものはないはず… いや、そういえば、CarryのC-DOSのゲームは、C-DOSと同じなのですが、どうなのか知りません。 なんか、嫌な予感がします。同じパッチでいいのですが、ほんの少しずれているような… X1やPC88は、コマンド自動起動が追加されていてそうなっていた… エラー処理が同じような…
Victorious Nineは大丈夫だったから、Chack'n Popは大丈夫なはず。
他機種での知識利用や独自開発をしていない物程、SHARP純正コードに近いので安全です。


3. シークタイム・パッチ

高速にディスクへアクセスするために、ドライブのシークタイムを変更するパッチ集です。
SHARP MZ-80BF等の旧厚型ドライブのシークタイムは20ms以上ですので、 これらのパッチを適用すると、使えなくなります。 SHARP MZ-1F07は6msです。
薄型ドライブは、だいたい6msのようですが、EPSON TF-10は12msですので、 そのままでは使えません。

3.1. Carry C-DOSのシークタイム・パッチ

Carry C-DOSのシークタイム・パッチは、こちらを参照してください。

    Carry C-DOSのパッチはこちらのページ

3.2. I/O誌 1983/6「Relocatable Disk Control Program」のシークタイム変更


シークタイムのパッチは、ソフト別に用意してあります。

seek時に、read IDを使うので、ヘッド位置をリセットしませんのでrestoreは
ありません。

3.3. Oh!MZ誌 1985/8(?)「TAKE-DOS」のシークタイム変更


       20ms  6ms
  Trk:03 Sct:09  (MZ-MODE)
  +$72 12 -> 10

TAKE-DOSは、Relocatable Disk Control Programと同じです。
seek時に、read IDを使うので、ヘッド位置をリセットしませんのでrestoreは
ありません。

4. その他 (others)

旧versionの文書です。前にあった未整理の内容そのままです。
何か使える情報があるかもよ。

読みにくい原因の犯人は、全部自衛隊員です。 頑張って解読してください。さすがに、修正がめんどくさい。
そのうち、整理して作り直したいとは思っていますよ!!

* MZ-2000へAT用3.5'FDDを接続した場合、うちの場合、 4MHzで2Dの80トラックの使用でも20msシークだけまともに動きません。 理由は不明で、30ms/12ms/6msは問題ないみたいです。そのパッチもあります。
* SHARPのMZ用ソフトウエアはすべて30msです。
* MITSUMIのドライブだと、更に30msも失敗することがありました。

自作プログラム関係を中心として、パッチは増えています。 このWEBは面倒くさがってそのままになって、テキストファイルのみになっています。
私のところでは、MZ-2000の場合は、何種類かのドライブを使って試しましたが、 シークタイム20msがまともに動作しませんでしたのでその対策も含みます。

シーク問題は電源容量不足かもしれないので注意!!
よくよく考えれば1ドライブのFDDを改造して2ドライブにしたことを思い出した…
でも、別ドライブのMZ-1500でもTF-DOSはシークに失敗しまくっていたなぁ…

この原因ですが、全部別の問題でした。
正常品だったのですが、そう見えなくするためのとんでもない謎テクノロジーが存在したのです…
というわけで、どの方もこのWEBに惑わされずに、6/12/20/30msで、好きなように使ってください。
# 大変怒っています!! もちろん犯人は、全部自衛隊です。


以上