← ジョン・ドウ レポート
SFORM16 · 技術資料

MSX SCSI/IDE パーティション形式 比較仕様書

V0.09a 似非ASPI形式 / V0.09a MEGA-SCSIネイティブ形式 / Nextor形式

確認済 実機ダンプで確認推定 ダンプから導いた規則FAT規格 FAT一般の規則要確認 未確認

3つのパーティション形式を並べて比較できるようにまとめたもの。いずれも実機ダンプ解析に基づく。フォーマッタの再実装に必要な情報を網羅している。

1. 共通の前提知識

3方式とも、Sector0(またはパーティション自身の先頭)の0x1BE以降に、以下の16byte構造(標準MBRパーティションエントリと同一レイアウト)を1〜2個持つ。

+0-3  : status/CHS開始(3方式とも未使用、常に0)
+4    : パーティション種別(type)
+5-7  : CHS終了(3方式とも未使用、常に0)
+8-11 : 開始LBA(4byte, リトルエンディアン)
+12-15: サイズ(4byte, リトルエンディアン、セクタ数)

エントリ配置は 0x1BE(エントリ1)、0x1CE(エントリ2)。標準MBRは最大4エントリ(0x1BE〜0x1FD)だが、3方式とも実際に使うのは先頭2つまで。

代表的なtype値(Nextorの公式ドキュメントに準拠):

0x00 : 無し(空エントリ)
0x01 : FAT12
0x05 : Extended(CHS、拡張パーティション/EBRチェーンへのリンク)
0x06 : FAT16(CHS)
0x0E : FAT16(LBA)

2. V0.09a 似非ASPI形式

作者による命名。Adaptec系のSCSI I/F(ASPI)との互換性、PC-AT機からの認識を目的とした形式。

2.1 全体構成

Sector 0-19          : 隠しFAT12ミニファイルシステム(MBR兼用)
Sector 20-           : 基本パーティション(FAT16)
基本パーティションの後ろ : 拡張パーティションチェーン(FAT16、可変個数)

隠し領域(Sector0-19)自身も「パーティション0」として扱われる(基本パーティションが「パーティション1」、以降が「パーティション2,3...」)。

2.2 隠しFAT12ミニファイルシステム(Sector 0-19)

パラメータ

項目値
総セクタ数20
bytes/sector512
sectors/cluster8
reserved sectors1
FATs2
root entries16
sectors/FAT1
media ID0xF0

セクタ配置:

Sector 0      : ブートセクタ(MBR兼用)
Sector 1-2    : FAT ×2
Sector 3      : エントリーテーブル(ルートディレクトリ、1セクタ)
Sector 4-11   : クラスタ2 = MEGASCSI.TBL の実データ(8セクタ)
Sector 12-19  : クラスタ3 = MEGASCSI.PNT の実データ(8セクタ)

Sector0(ブートセクタ兼MBR)のフィールド

offset内容
0x00-0x02ジャンプ命令 00 FE 90(★通常のFAT16パーティションと異なる)
0x03-0x0AOEM名 "MEGASCSI"(8byte)
0x0B-0x0Cbytes/sector = 512 (LE)
0x0Dsectors/cluster = 8
0x0E-0x0Freserved sectors = 1
0x10FATs = 2
0x11-0x12root entries = 16
0x13-0x14total sectors(16bit) = 20(非ゼロ。拡張BPB不要)
0x15media ID = 0xF0
0x16-0x17sectors/FAT = 1
0x18-0x19sectors/track = 0
0x1A-0x1Bheads = 0
0x1C-0x1Dhidden sectors(2byte) = 0
0x1E-0x1F18 16(JR命令、+22 → 0x36へジャンプ)
0x20-0x25文字列 "VOL_ID"
0x260x00
0x27-0x2AボリュームID(4byte、任意値)
0x2B-0x35"NO NAME "(11byte)
0x36-ブートプログラム(138byte、§付録参照)
0x1B8-0x1BBディスクシグネチャ(4byte、任意値)
0x1BE-0x1CDエントリ1: 基本パーティション。type=0x06、開始LBA=20(絶対)、サイズ=基本パーティションのセクタ数
0x1CE-0x1DDエントリ2: 拡張パーティション。type=0x05、開始LBA=最初の拡張パーティションの絶対LBA、サイズ=0(拡張パーティションが無ければ全ゼロ)
0x1FE-0x1FF55 AA

MEGASCSI.TBL(実データ、512byte、16byteレコード×32個)

+0    : ドライブ種別(実パーティションは0)
+1    : フラグ。bit6=書込禁止。パーティション0(隠し領域自身)のみ0x40
+2-4  : 開始LBA(3byte, ビッグエンディアン, 絶対値)
+5-7  : サイズ(3byte, ビッグエンディアン)
+8-9  : ブロック長(2byte, ビッグエンディアン) = 512
+10-15: 予約(0)

実パーティション数をNとすると、レコードNは終端マーカー(開始=総容量,サイズ=0xFFFFFF, ブロック長=0, 予約=00 00 FF FF FF FF)を1つだけ置き、以降は00 00 00 00 FF FF FF FFを8byte単位で末尾まで繰り返す。この実データは隠し領域自身に加え、基本・全拡張パーティションのクラスタ2にも複製する。

MEGASCSI.PNT(実データ、512byte)

16byteレコード×最大32個。ASCII 2桁の番号 + スペース14byte。隠し領域自身も含めて連番。隠し領域にのみ存在し、基本・拡張パーティションには置かない。

2.3 基本パーティション・拡張パーティション(FAT16)

パラメータ(実装値の一例。用途に応じて変更可)

項目値
sectors/cluster16 (8KB/cluster)
reserved sectors1
FATs2
root entries512
max clusters用途により変更(例: 4078=約32MB、65501=約512MB、131005=約1GB)
sectors/FATceil(max_clusters×2/512)

ブートセクタのフィールド(基本・拡張とも共通)

offset内容
0x00-0x02EB FE 90
0x03-0x0AOEM名(8byte、任意)
0x0B-0x0C512
0x0Dsectors/cluster
0x0E-0x0Freserved = 1
0x10FATs = 2
0x11-0x12root entries
0x13-0x140(拡張BPB使用)
0x15media ID = 0xF0
0x16-0x17sectors/FAT
0x18-0x190
0x1A-0x1B0
0x1C-0x1Dhidden sectors(2byte) = 常に0
0x1E-0x1F18 1E(JR命令、+30 → 0x3Eへジャンプ)
0x20-0x23総セクタ数(32bit拡張、LE)
0x240
0x250
0x260x29
0x27-0x2Aボリュームシリアル(4byte、任意)
0x2B-0x35"NO NAME "
0x36-0x3D"FAT16 "
0x3E-ブートプログラム(138byte)
0x1BE-0x1CDエントリ1(自分自身): type=0x06、開始LBA=常に0(自己相対)、サイズ=自分のセクタ数
0x1CE-0x1DDエントリ2(次のパーティション): §2.4参照
0x1FE-0x1FF55 AA

2.4 エントリ2(次のパーティション)の規則

2.5 FAT・ルートディレクトリ・MEGASCSI.TBL

各パーティション(基本・拡張とも)は、ブートセクタ→FAT×2(先頭4byteはF0 FF FF FF、残りゼロ)→ルートディレクトリ(先頭32byteにMEGASCSI.TBLのディレクトリエントリ、クラスタ2、サイズ=パーティション総数×16byte、残りゼロ)→クラスタ2(MEGASCSI.TBLの実データ、§2.2と同一内容を複製)、という構成。MEGASCSI.PNTは置かない。

3. V0.09a MEGA-SCSIネイティブ形式

隠しFAT12領域を持たない、よりシンプルな構成。Sector0自身がそのまま使える実パーティション(パーティション0)である。

3.1 全体構成

Sector 0    : パーティション0(FAT16)。同時にMBRを兼ねる。
Sector xxx  : パーティション1(FAT16)。チェーンの基準点。
Sector xxx  : パーティション2以降(FAT16)。拡張チェーン本体。

3.2 ブートセクタのフィールド(全パーティション共通)

§2.3の表と同一(media ID=0xF0、0x1C-1Dは常に0、0x1E-1Fは18 1Eで0x3Eへジャンプ、拡張BPB使用、等)。ただし以下2点が異なる:

3.3 MBRエントリの規則

エントリ1(自分自身、0x1BE-0x1CD)

全パーティション例外無く: type=0x06, 開始LBA=0(常に自己相対),サイズ=自分のセクタ数。Sector0(パーティション0)も例外ではない。

エントリ2(次のパーティション、0x1CE-0x1DD)

基準点は常にパーティション1の絶対LBA(chain_start)。

3.4 FAT・ルートディレクトリ・MEGASCSI.TBL

§2.5と同一構成。全パーティション(パーティション0含む)がMEGASCSI.TBLを持つ(隠し領域が無いため、レコード0=パーティション0自身から始まる)。MEGASCSI.PNTは存在しない。

4. Nextor形式

Nextor(MSX-DOS2の後継OS)が使う、標準的なPC-AT MBR/EBR方式。実機ダンプ解析(8MB/64MB/4GB、複数パーティション構成)により確認。

4.1 全体構成

未パーティション時: Sector0が直接そのままFAT12ボリューム(MBRエントリ無し)
パーティション時  : Sector0がMBR(基本パーティション1個+拡張パーティション
                     1個の、最大2エントリ)
                     拡張パーティション内は、論理パーティションごとに
                     専用のEBR(拡張ブートレコード)セクタ+実データ
                     セクタの組で構成される

SFORM-2系(§2,3)と異なり、パーティション自身のブートセクタにはチェーン情報を一切持たない(MBR/EBRのエントリは全て独立した専用セクタに分離されている)。

4.2 Sector0(MBR)

offset内容
0x00-0x02EB FE 90(未パーティション時も同じ)
0x03-0x0AOEM名 "NEXTOR20"(8byte)
その他BPBフィールド§4.4参照(内包する1パーティション目と同じ規則)
0x1B8-0x1BBディスクシグネチャ
0x1BE-0x1CDエントリ1: 基本パーティション。type=0x01(FAT12)/0x0E(FAT16,LBA)、開始LBA=1(絶対、Sector0直後から)、サイズ=基本パーティションのセクタ数
0x1CE-0x1DDエントリ2: 拡張パーティション。type=0x05、開始LBA=拡張パーティション全体の絶対開始位置、サイズ=拡張パーティション全体のセクタ数(基本パーティション+拡張領域の合計ではなく、拡張領域自体の合計サイズ)
0x1FE-0x1FF55 AA

未パーティション時はエントリ1・2とも全ゼロ(単一ボリュームがSector0直後から直接始まる)。

4.3 EBR(拡張ブートレコード)セクタ

各論理パーティション(基本パーティションの次、パーティション2以降)の実データ直前の1セクタに、独立したEBRを配置する。EBR自身は非実行セクタで、ジャンプ命令・OEM名等のBPBフィールドは全てゼロ。パーティションテーブル部分のみ意味を持つ。

offset内容
0x00-0x1BD全ゼロ
0x1BE-0x1CDエントリ0: このEBRが指す論理パーティション。type=0x01(FAT12)/0x0E(FAT16,LBA)、開始LBA=常に1(このEBR自身からの相対位置。直後のセクタが実データ)、サイズ=そのパーティションのセクタ数
0x1CE-0x1DDエントリ1: 次のEBR。type=0x05(次があれば)、開始LBA=拡張パーティション全体の開始位置(Sector0のエントリ2の絶対値)からの相対LBA、サイズ=0。最後の論理パーティションの場合は全ゼロ
0x1FE-0x1FF55 AA

実データ検証例(8パーティション構成、拡張パーティション開始=絶対LBA 262145):

EBR@Sector262145: entry0=(type01,LBA=1,size=61440)  → 実データ@262146
                  entry1=(type05,LBA=61441)          → 次EBR@262145+61441=323586
EBR@Sector323586: entry0=(type0E,LBA=1,size=1935360) → 実データ@323587
                  entry1=(type05,LBA=1996802)        → 次EBR@262145+1996802=2258947

4.4 各パーティション自身のブートセクタ(実データ)

標準的なMSX-DOS2 BPB。FAT12/FAT16問わず、独特のハイブリッド構成をとる(VOL_ID文字列とファイルシステム種別文字列が両方存在する)。

offset内容
0x00-0x02EB FE 90
0x03-0x0A"NEXTOR20"
0x0B-0x0C512
0x0Dsectors/cluster(パーティションサイズに応じて可変)
0x0E-0x0Freserved sectors = 1
0x10FATs = 2
0x11-0x12root entries
0x13-0x14total sectors(16bit)。FAT12の場合は非ゼロ(実値)、FAT16の場合は0(拡張BPB使用)
0x15media ID = 0xF0
0x16-0x17sectors/FAT
0x18-0x190
0x1A-0x1B0
0x1C-0x1D(or 1F)hidden sectors。常に0(実際の位置情報はMBR/EBR側で管理)
0x1E-0x1F18 1E(JR命令、+30 → 0x3Eへジャンプ)
0x20-0x25文字列 "VOL_ID"(FAT12・FAT16問わず常に存在)
0x26FAT12: 0x00 / FAT16: 0x29(拡張ブートシグネチャ)
0x27-0x2Aボリュームシリアル(4byte)
0x2B-0x35"NEXTOR 2.0 "(11byte、ボリュームラベル)
0x36-0x3D"FAT12 " または "FAT16 "(8byte)
0x3E-ブートプログラム
0x1BE-0x1DD全パーティション、全ゼロ(MBR/EBRエントリを一切持たない)
0x1FE-0x1FF55 AA

★注目点: FAT16の場合でも0x20-0x25に"VOL_ID"という文字列が残っている(総セクタ数の数値ではない)。これはSFORM-2系(§2,3)が0x20-0x23を32bit総セクタ数として使うのと対照的で、Nextorはbase仕様のVOL_ID文字列と、拡張的なファイルシステム種別文字列を両方保持するハイブリッド構成を取っていることが分かる。総セクタ数はFAT12なら0x13-14(16bit)、FAT16ならMBR/EBRのエントリのサイズ値から得る設計と考えられる。

4.5 パーティションタイプの自動判定基準(実機確認)

パーティションサイズtype値
〜約32MB0x01 (FAT12)
約32MB〜0x0E (FAT16, LBA)

5. FAT12パーティション時の仕様

§2〜4は主にFAT16パーティションの実機ダンプに基づく。本章はFAT12時の仕様をまとめる。出典は FAT12フォーマット調査.txt(8MB/64MB/256MB SDでの実機ダンプ、2026/09)。

記号の意味:

5.1 FAT12共通の規則 FAT規格

項目FAT12FAT16(参考)
FAT種別の判定データクラスタ数 ≤ 40844085 ≤ データクラスタ数 ≤ 65524
FATエントリ長12bit(2エントリを3byteにpacking)16bit
sectors/FATceil((クラスタ数+2)×1.5 / 512)ceil((クラスタ数+2)×2 / 512)
EOC値0xFF8〜0xFFF0xFFF8〜0xFFFF
総セクタ数の格納0x13-14(16bit、最大65535)通常は32bit拡張フィールド

12bit packingの規則(クラスタnのエントリ):

offset = n + n/2 (切り捨て)
n が偶数: 値 = word[offset] & 0x0FFF
n が奇数: 値 = word[offset] >> 4

5.2 SFORM-2(V0.09a)のFAT12フォーマット

★SFORM-2はFAT12専用のフォーマッタであり、1パーティションの最大セクタ数は65288 確認済。以下は似非ASPI形式・ネイティブ形式の両方に共通する。

5.2.1 パーティションのブートセクタ(BPB)確認済

offset値
0x00-0x02EB FE 90
0x03-0x0A"MEGASCSI"
0x0B-0x0C512
0x0Dsectors/cluster(§5.2.3)
0x0E-0x0F1
0x102
0x11-0x12root entries(§5.2.3。可変)
0x13-0x14総セクタ数(16bit、実値)
0x15media ID。似非ASPI形式=0xF8、ネイティブ形式=0xF0
0x16-0x17sectors/FAT
0x18-0x1D0
0x1E-0x1F18 16(JR +22 → 0x36へジャンプ)
0x20-0x25"VOL_ID"
0x260x00
0x27-0x2Aボリュームシリアル(4byte、任意)
0x2B-0x35"NO NAME "
0x36-ブートプログラム(付録と同一の138byte)。"FAT12 "文字列は無い
0x1B8-0x1BBディスクシグネチャ。ネイティブ形式のパーティション0のみ非ゼロ。似非ASPI形式はSector0もゼロ
0x1BE-0x1CDエントリ1。type=0x01
0x1CE-0x1DDエントリ2。type=0x05。§5.2.4
0x1FE-0x1FF55 AA

隠し領域(似非ASPI形式のSector0)は§2.2の表と同じ構成だが、FAT12ダンプでは以下が異なる:media ID=0xF8(FATも F8 FF FF FF FF FF)、0x1B8-0x1BB=ゼロ、エントリ1のtype=0x01。

5.2.2 FAT先頭 確認済

似非ASPI形式: F8 FF FF FF 0F 00 ...   (entry0=0xFF8, entry1=0xFFF, entry2=0xFFF)
ネイティブ形式: F0 FF FF FF 0F 00 ...  (entry0=0xFF0, entry1=0xFFF, entry2=0xFFF)

クラスタ2(MEGASCSI.TBL用)はFAT上で使用中(EOC)になっている。パーティションが1個だけ(ネイティブ形式8MB)でも同じ。MSX-DOS2でファイルを書き込むと、クラスタ3から使われる(書込後 F8 FF FF FF FF FF)。

5.2.3 ジオメトリの決定規則 推定

観測値(ts=総セクタ数、spc=sectors/cluster、spf=sectors/FAT、rd=ルートディレクトリのセクタ数):

tsspcspfroot entries (rd)データ開始クラスタ数
1149949128 (8)272868
1151949128 (8)272873
13259410160 (10)313307
13279410160 (10)313312
16384412752 (47)724078
327688121904 (119)1444078
634881612112 (7)323966

全観測値と一致する規則:

spc      = ts/spc ≤ 4096 となる最小の2のべき(観測範囲は4〜16)
clusters = min(4078, floor((ts − 1 − 2×spf − 7) / spc))
spf      = ceil((clusters+2)×1.5 / 512)
rd       = ts − 1 − 2×spf − clusters×spc   (最小7セクタ=112エントリ)

つまり、ルートディレクトリを伸ばして端数セクタを吸収し、データ領域をクラスタサイズでちょうど割り切れるようにする。クラスタ数の上限は4078 (FAT12上限4084より少し小さい)。§2.3のFAT16用例「max clusters 4078」は、この値に由来すると考えられる。

最大セクタ数65288の場合は spc=16、クラスタ4078、rd=15(240エントリ)になる計算だが、未検証 要確認。

5.2.4 MBRエントリ(チェーン)の規則 確認済

似非ASPI形式(64MB例: 隠し0-19, P1@20(16384), P2@16404(32768), P3@49172(63488), P4@112660(11499)):

セクタエントリ1エントリ2
Sector0(隠し)(01, 20, 16384) = P1絶対(05, 16404, 0) = P2絶対
P1@20(01, 0, 16384) 自己(05, 0, 0)
P2@16404(01, 0, 32768) 自己(05, 32768, 0) = P3−P2
P3@49172(01, 0, 63488) 自己(05, 96256, 0) = P4−P2
P4@112660(01, 0, 11499) 自己全ゼロ

チェーンの相対基準はP2(最初の拡張パーティション)で、§2.4と同じ。ただしP1のエントリ2は (05, 0, 0)(最初の拡張パーティションの相対LBA=0)で、§2.4(FAT16)の「最初の拡張パーティションの絶対LBA」とは異なる。

ネイティブ形式(64MB例: P0@0(16384), P1@16384(32768), P2@49152(63488), P3@112640(11519)):

セクタエントリ1エントリ2
Sector0(P0)(01, 20, 32768) ★(05, 49152, 0) = P2絶対
P1@16384(01, 0, 32768) 自己(05, 0, 0)
P2@49152(01, 0, 63488) 自己(05, 63488, 0) = P3−P2
P3@112640(01, 0, 11519) 自己全ゼロ

ネイティブ形式は似非ASPI形式の隠し領域をP0に置き換えた構造になっている(P0↔隠し領域、P1↔基本パーティション、P2以降↔拡張パーティション)。Sector0のエントリ1は、自分自身ではなくP1を指す(サイズ=P1のサイズ)。チェーンの相対基準はP2。これは§3.3(FAT16、基準=P1)とは異なる。

5.2.5 SFORM-2の不具合と思われる点

  1. ★ネイティブ形式 Sector0 の 0x1C6-0x1C9(エントリ1の開始LBA)=20(0x14)似非ASPI形式の値(隠し領域20セクタの直後=P1の開始位置)がそのまま書かれていると考えられる。上記の対応関係から、正しくはP1の絶対LBA(64MB例では16384=00 40 00 00)であるべき。サイズ(0x1CA)は正しくP1のサイズになっているため、開始LBAだけが似非ASPI形式の固定値で上書きされている可能性が高い。
  2. ネイティブ形式でパーティションが1個だけの場合(8MB)、Sector0のエントリ1が (01, 20, 3883322)。P1が存在しないにもかかわらずエントリがあり、サイズ(3A 41 3B 00)はメディア容量を超える無意味な値(未初期化の変数と思われる)。本来は全ゼロであるべき。
  3. 似非ASPI形式でパーティションがP1だけの場合(8MB)、Sector0のエントリ2が(05, 13279, 0)。拡張パーティションが無いのに、P1の末尾(=デバイス末尾)を指している。
  4. MEGASCSI.TBLのファイルサイズ以降(レコードN以降)の内容が不定。空白埋め、SFORM-2のメッセージ文字列の断片、FFパターンなどケースによって異なる(§5.2.6)。未初期化バッファの内容がそのまま書かれていると思われる。ファイルサイズ(N×16byte)の外なので、実害は無い可能性が高い。

これらがMEGA-SCSIの動作に影響するかどうかは 要確認。

5.2.6 MEGASCSI.TBL / MEGASCSI.PNT 確認済

N = パーティション総数(似非ASPI形式は隠し領域を含む)。

意味のある部分(全ケース共通)
rec0 〜 rec(N-1): 各パーティション  (種別00, フラグ, 開始3byte BE, サイズ3byte BE, 0200, 予約0×6)
rec N の +2〜+4 : 最終パーティションの末尾LBA(=最終パーティションの開始+サイズ)

64MB似非ASPI形式(N=5):

rec0: 00 40 000000 000014 0200   隠し領域(書込禁止)
rec1: 00 00 000014 004000 0200   P1
rec2: 00 00 004014 008000 0200   P2
rec3: 00 00 00C014 00F800 0200   P3
rec4: 00 00 01B814 002CEB 0200   P4
rec5: ?? ?? 01E4FF ...           最終パーティション末尾=124159

64MBネイティブ形式(N=4):

rec0: 00 00 000000 004000 0200   P0
rec1: 00 00 004000 008000 0200   P1
rec2: 00 00 00C000 00F800 0200   P2
rec3: 00 00 01B800 002CFF 0200   P3
rec4: ?? ?? 01E4FF ...           最終パーティション末尾=124159

8MBネイティブ形式(N=1):

rec0: 00 00 000000 0033DF 0200   P0
rec1: ?? ?? 0033DF ...           最終パーティション末尾=13279
レコードN以降(ファイルサイズ外)の実際の内容
ケースrec N の残りrec N+1以降
64MB似非ASPI 隠し領域00 00 / 000009 / 0200 / 0×6(残り9セクタ)00 00 00 00 FF FF FF FF の繰り返し
64MB似非ASPI P1〜P4空白(0x20)空白+SFORM-2のメッセージ文字列("(for MSX-DOS2)" "Copyright (c) by K.Tsujikawa." "Something error happened !" 等)
8MB似非ASPI 隠し領域空白空白
8MB似非ASPI P1空白0x29以降にメッセージ文字列("SCSI device logical formatter ver 0.09a" 等)
64MBネイティブ 全P空白空白
8MBネイティブ P0空白0x29以降にメッセージ文字列
MEGASCSI.PNT(似非ASPI形式の隠し領域のみ)

各レコードの先頭を "NN"+空白14byteに置き換えたもの。レコードN以降は同じ隠し領域のTBLと同じ内容になっている(TBLのバッファを再利用していると思われる)。

5.3 Nextor形式のFAT12パーティション

5.3.1 ブートセクタ(BPB)確認済

§4.4のとおり。FAT12時の値:

offset値
0x0Dsectors/cluster(§5.3.3)
0x11-0x12root entries = 112(常に)
0x13-0x14総セクタ数(16bit、実値)
0x150xF0
0x1E-0x1F18 1E(→0x3E)
0x20-0x25"VOL_ID"
0x260x00
0x2B-0x35"NEXTOR 2.0 "
0x36-0x3D"FAT12 "
0x3E-Nextor独自のブートプログラム(SFORM-2とは異なる)
0x1B8-0x1DD全ゼロ

FAT先頭は F0 FF FF(クラスタ2は未使用)。

5.3.2 MBR・EBR 確認済

64MB例(4MB/8MB/16MB/31MB):

Sector0 (MBR): entry1=(status 0x80, type01, LBA=1, size=8192)
               entry2=(type05, LBA=8193, size=112643)
EBR@8193 : entry0=(01, 1, 16384)  entry1=(05, 16385)  → 次EBR@8193+16385=24578
EBR@24578: entry0=(01, 1, 32768)  entry1=(05, 49154)  → 次EBR@8193+49154=57347
EBR@57347: entry0=(01, 1, 63488)  entry1=全ゼロ

5.3.3 ジオメトリ [確認済/一部要確認]

パーティションts16spcspfクラスタ数
パーティション無し(8MB SD, 13279セクタ)13278163829
4MB(8192)8182831021
8MB(16384)163501631021
16MB(32768)326863231021
31MB(63488)6348816123966

5.3.4 FAT12/FAT16の境界 確認済

256MB SDで確認:

6. 3方式の比較表

項目V0.09a 似非ASPI形式V0.09a MEGA-SCSIネイティブ形式Nextor形式
準拠する外部規格Adaptec ASPI系を意識(独自拡張)無し(MEGA-SCSI独自)PC-AT標準MBR/EBR(実質そのもの)
隠し領域あり(Sector0-19、FAT12)無し無し
Sector0の役割隠し領域自身のブートセクタ兼MBRパーティション0自身のブートセクタ兼MBR純粋なMBR(それ自体はどのパーティションのデータも含まない)
チェーン情報の置き場所各パーティション自身のブートセクタ内(0x1BE-0x1DD)各パーティション自身のブートセクタ内(0x1BE-0x1DD)各論理パーティションの直前にある専用EBRセクタ(パーティション自身のブートセクタは無関係)
エントリ1(自分自身)の開始LBA常に0(自己相対)常に0(自己相対)(該当無し。EBRのエントリ0が"直後"を指す形で代替)
拡張チェーンの相対基準最初の拡張パーティションパーティション1拡張パーティション全体の絶対開始位置(Sector0のエントリ2)
media ID0xF00xF00xF0
FAT12/FAT16判定FAT16(§2)。SFORM-2本体はFAT12専用(§5.2)FAT16(§3)。SFORM-2本体はFAT12専用(§5.2)サイズで自動判定(32MBまでFAT12、33MBからFAT16。§5.3.4)
FAT12時のチェーン相対基準P2(最初の拡張)P2(§3.3のFAT16はP1)拡張パーティション全体の開始位置
VOL_ID文字列の有無隠し領域のみ(0x20-25)無し(0x20-23は総セクタ数)全パーティションに存在(0x20-25)
ボリュームラベル"NO NAME ""NO NAME ""NEXTOR 2.0 "
MEGASCSI.TBL相当あり(独自)あり(独自)無し(標準ファイルシステムのみ)

付録: ブートプログラム(138byte、V0.09a系で共通使用)

d0 ed 53 70 c0 32 7a c0 36 6d 23 36 c0 31 1f f5 11 b4 c0 0e 0f cd 7d f3
b7 20 28 11 00 01 0e 1a cd 7d f3 21 01 00 22 c2 c0 21 00 3f 11 b4 c0 0e
27 cd 7d f3 c3 00 01 6f c0 cd 00 00 79 e6 fe fe 02 20 06 3e 00 b7 ca 22
40 11 8e c0 0e 09 cd 7d f3 0e 07 cd 7d f3 18 b5 42 6f 6f 74 20 65 72 72
6f 72 0d 0a 50 72 65 73 73 20 61 6e 79 20 6b 65 79 20 66 6f 72 20 72 65
74 72 79 0d 0a 24 00 4d 53 58 44 4f 53 20 20 53 59 53

(SFORM-2オリジナルのIPLを流用。MSXDOS.SYSをロードする処理。Nextorは独自のブートプログラムを使用しており、上記とは異なる)

既知の注意点(V0.09a系共通)