●●● Carry C-DOSのディスク・フォーマットについて (2019/07/31) ●●● 1983年6月頃Carry labから市販されていた、一般入手可能なC-DOSの最終版を 基本に、C-DOSのディスクの構成とフォーマットについて記述します。 - MZ-2000用 C-DOS 2000 Ver.1.1 (1983/05/01) - PC-8801用 C-DOS 8801 Ver.1.0 (1983/06/10) 当時、他に、MZ-80B用 C-DOS 80Bが発売されていて、Oh!MZ'83/2等に紹介記事 があります。内容はWICS等がないこと以外、C-DOS 2000 1.1と同等だと思われ ます。C-DOS 2000 Ver.1.0は、存在するかどうかを含めて不明です。 C-DOSは、Carry labの内部で開発が続けられ、V2や様々な改良版があるらしい のですが、ほとんど情報がないし、実物も一般入手ルートがなく、私自身、 市販ゲームに含まれているもの以外見たことがないので、V1についてのみ記載 しています。 かなり構成が異なるFM版について、ゲームから抜き出したものをベースに記述 します。市販品がないので詳細は不明です。 他に、発売されていたゲームからX1版も入手することが可能ですし、MZ-2000 版を元にI/O誌や別冊「WICS/BASEプログラム集」等の掲載プログラムを利用し て、MZ-80B版、MZ-700版、X1版を作ることができますが、これらについても、 C-DOS 2000と同じです。X1版はMZ互換フォーマットとなっています。 C-DOSのディスク・フォーマットは、5'2Dのみをターゲットとした、256バイト 長16セクタの標準的な320KBです。 - MZ版とPC版の大きな違い、サーフェスとデータビットの反転 - PC版とFM版の大きな違い、ディレクトリ情報の2バイト数値のエンディアン が違う、FM版のみ文字列終了コードが$00、その他は$0D - PC-9801版は、2DD/2HDイメージがあるが、320KB分しか扱えそうになかった。 (2HDの詳細は今後再調査、通常の全トラック倍密のみで26セクタだったはず) * 共通領域 TRK/SCT (16進数) 00/01 機種別のIPL 00/02 +$00〜+$AF ビットマップテーブル 0トラックから2バイト(16ビット)ずつ、順番に配置されていて、 未使用セクタのビットが0になっている。 - 2000版 70トラック構成のため、+$8Bまでの$46トラック分が使用可 能 - その他 80トラック構成のため、+$9Fまでの$50トラック分が使用 可能 - +$AFまでFFFFで埋まっているが、どこまで使用可能かはわからない (おそらく、MZ/X1は83トラックまで使用可能) C-DOS V2では、+$AE-$AFで拡張ディレクトリ情報が記述されていて、 ディレクトリエントリを64ファイル -> 128ファイルに拡張できる らしい。 +$B0〜+$B1 Volume番号 (FMのみBig Endian) 0の時の意味、MZ/PCはMaster、X1/FMは任意ディスク名 +$B2〜+$B4 年/月/日が16進数で記載 ($83,$05,$01で、83年5月1日) +$B5〜+$CF FM/X1のみ27バイトのディスク名 (FM=終端コード0、X1は終端コード$0Dを含む、 X1は$0Dがないと画面がぐちゃくぢゃ、FMは27バイト目以降無視) MZ/88は0で埋まっている、終端コード以降も0で埋まっている) +$D0〜+$D1 "FM"と書かれていると、FMのディスク FM版のみ参照され、FMがないとエラーで読み書き不能 (PC-8801版の市販ゲームのものは、+$C0以降に自動実行文字列が格納 されている。V2では+$E0以降に同等のものがあるらしい…) 01/01〜08 ディレクトリ 1エントリ$20バイトで64ファイル ($800バイト) ディレクトリの各エントリについて +$00 Type 01=OBJ,02=TEX,03=CMD,04=REL,05=SCD,06=RDD,その他=??? (FM以外) 01=OBJ,02=TEX,03=COM (FM版のみ) 市販版マニュアルには、01と02しか記載されていない。 FM版は03がトランジェストコマンドになるが、他機種ではOBJと同じ。 +$01-$11 file name (FM以外=$0D終端、FM=$00終端) 文字列終了が終端文字1文字で、それ以降がゴミになるか00で埋まる、 Z80版はモニタコマンドで操作した時のみ、$0Dで埋まるが、通常 $0D終端で残りは$00パディング +$12 Lock mode 00 or 01 +$13 (00) +$14-$15 Length (FM以外はlittle endian、FMはbig endian) +$16-$17 Start (FM以外はlittle endian、FMはbig endian) +$18-$19 Execute (FM以外はlittle endian、FMはbig endian) +$1A-$1C Date 年月日がそれぞれ16進数でそのまま記載 $83 $05 $01とあると1983/05/01 +$1D (00) +$1E 保存開始 Track +$1F 保存開始 Sector * C-DOSユーザディスク (システムディスクでないフォーマット直後のディスク) TRK/SCT (16進数) 00/03〜00/10 01/09〜01/10 リザーブ、未使用 02/01〜 フリーエリア * MZ/X1/PC88版 C-DOSシステムディスク 正規の市販品ディスクであるMZ-2000用V1.1 (83/05/01版)と、PC-8801用 V1.0 (83/06/10版)について記述します。 TRK/SCT (16進数) 00/03〜04 トランジェスト(trangent)・コマンド名の文字列集合 00/05 トランジェスト・コマンドのアドレス/格納先情報 00/06〜08 未使用 00/09〜10 トランジェスト・コマンド群 01/09〜10 トランジェスト・コマンド群 02/01〜03/05 Monitor TS-xxxx - TS-2000 (MZ-2000版) - TS-8801 V1.x (PC-8801版) 03/06〜03/10 - MZ版 03/06〜09 Monitor TS-2000のIPL 03/0A〜10 - PC-8801版 03/06〜0B トランジェスト・コマンド群 03/0C〜10 04/01〜10 C-DOS 05/01〜06/10 SuperBASE Ver.1.0x 07/01〜08/10 Debugger 09/01〜0A/10 Monitor TS-8801 V2.x (PC-8801版のみ) MZ版09/01〜 フリーエリア。市販品マスターでは、続いて、 WICS/Compiler/MISSILE DEFENDERが保存されている 88版0B/01〜 フリーエリア。市販品マスターでは、続いて、 WICS/Compiler/MISSILE DEFENDERが保存されている * FM版 C-DOSシステムディスク TRK/SCT (16進数) 00/03 +$00〜+$7Fは未使用 +$80〜オートスタートコマンド文字列 (0終端) 00/04〜10 C-DOS システム (前半) 01/09〜0C C-DOS システム (後半) 01/0D〜 フリーエリア トランジェストコマンドがなく、通常ファイルの$03=CMDがコマンド なので、フリーエリア内にBASE-09や各種コマンドが存在するはず。 * PC-9801版 C-DOSシステムディスク 詳細不明だが、Z80版と類似しているはず。 トランジェスト・コマンドの扱いについて等の詳細は忘れた… 以上