2022年11月12日土曜日

パソピアのフロッピーフォーマット

以前の投稿で パソピアのフロッピーをイメージ化する手順をまとめたが、今回はフロッピーの内部フォーマットについて調べてみたので備忘録。
パソピアには片面ミニフロッピーもあるが、今回は両面倍密(2D)ミニフロッピーについて。

・2ヘッド:Side0, Side1
・35トラック:Track#0(外周)~#34(内周)
・1トラックあたり16セクタ:Sector#1~#16 (時計回り順)
・1セクタあたり256byte(倍密度) ※Track#0.Side0のみ128byte(単密度)
・8セクタ毎に1クラスタ。クラスタの並び順は、
 Side0.Sector1-8 → Side1.Sector1-8 → Side0.Sector9-16 → Side1.Sector9-16
 下の表の場合、セクタ順に並べたのでクラスタ順が0→2→1→3になっているのに注意。

・Track#0は未使用領域
・Track#18.Side0は、
 (a) Sector#1-12:ディレクトリ
 (b) Sector#13:ディスク属性
 (c) Sector#14-16:FAT(256byte)×3セット

初代パソピア用T-DISK BASICの場合は、以下の領域が使われている。
・Track#0.Side1.Sector#1-8:初期化ルーチン
・Track#1.Side0.Sector#2~Track#8.Side1.Sector#16:T-DISK BASICシステム
・Track#19.Side1.Sector#1~Track#34.Side1.Sector#16:漢字パターン

総容量は、2ヘッド×35トラック×16セクタ×256byte-(単密度分:16セクタ×128byte)
=284,672byte

Track#18.Side0の格納データにについて。
(a) Sector#1-12:ディレクトリ ... 16バイト毎に、ファイル情報が格納される
・0~9バイト:ファイル名
 - ファイル名に00h, FFh, 3Ah(":")は含んではならない
 - 0バイト目が00hならKILLされたファイル、FFhなら未使用
・10バイト:ファイル属性
 - 00h:ソース形式(JISコード)
 - 01h:マシン語
 - 80h:バイナリ(中間言語)形式
 - それぞれ10hを加えると書き込み禁止
・11バイト:クラスタ番号
・12~15バイト:未使用
・1セクタあたり16ファイルの情報が書き込めるので、12セクタで最大192ファイルの領域
・フォーマット直後はFFh埋め

(b) Sector#13:ディスク属性
・0バイト:ディスク属性
 - 00h:(SET 装置番号," ") 属性なし
 - 10h:(SET 装置番号,"P") 書き込み禁止(Write Protect)
 - 20h:(SET 装置番号,"E"?) EBCDIC(未使用)
 - 40h:(SET 装置番号,"R") 書き込み確認(Read after Write)
・1~255バイト:未使用(00h)
・フォーマット直後は00h埋め

(c) Sector#14-16:FAT(256byte)×3セット
・クラスタ(8セクタ)単位でFAT情報1バイトを格納
 - 00h~8Bh:Nextクラスタ番号(=FAT内ポインタ)
 - C1h~C8h:ラストクラスタ ※右4bitの1~8:有効セクタ数
 - FEh:Reserved
 - FFh:未使用クラスタ
・フォーマット直後は、0~3, 72, 74, 140~255バイトがFEh、それ以外はFFh。
 上記256バイトが、Sector#14,#15,#16に3セット書き込まれる。

FAT256バイトはクラスタ順で並んでいる。
上の表はセクタ順に並べたのでTrack#18でFEhが連続しているように見えるが、クラスタ順が入れ子になっているため、Track#18(72-75セクタ)のFATはFEh, FFh, FEh, FFhの並び。
紛らわしいので注意...

-----
(2023/1/29)表の一部が間違っていたので訂正。Track#0.Side0(Sector#1-16)が単密度

1 件のコメント:

  1. PASOPIA7は私が初めて楽しんだ思い入れのあるマシンです。このマシンだけは大切にしたいです。

    返信削除