PC-9821 のハードディスク相当を復旧する / その3

(その2はあとでかく) ひとまず Compact FlashMS-DOS が BOOT できるようになりましたので現行のパソコンから dd で dump してみました. 筆者は開発環境として msys2 を常用していますので dd なり /dev/sdx というデバイスは普段から利用できます.

実データ

LBA=0, IPL らしい.


LBA=1, パーティションテーブル.

説明はここにちょっとある. https://hp.vector.co.jp/authors/VA013937/editdisk/tech.html

LBA=2, OS 選択起動画面の文字列.


パーティションテーブルの開始シリンダから MS-DOS 6.2 の領域(つまり FAT) が始まる. これは FORMAT.EXE の固定ディスクの領域確保 (つまりいまでいう fdisk) らしい.

ここまでやって1シリンダが何バイトなのか不明だったのと、利用した古い 64MB の Compact FlashMBR なしのフォーマットと PC-98固定ディスクフォーマットと PC/AT固定ディスクフォーマットがまざりまくって、 FAT の先頭が3つありどれかわからなくなったのでやり直します.

 dd if=/dev/zero of=/dev/sdx bs=1M count=2

FAT filesystem の先頭

先頭 2Mbyte を data 0 で埋めた Compact Flash を接続し再度PC-98から固定ディスクの初期化とシステム転送をしてきました.

LBA=0x88, NEC 5.0 (?) の filesystem header

LBA=0x89, NEC 6.2 (?) の filesystem header

LBA=0x8a, FAT16 の cluster chain table

固定ディスク領域マップによるとこの領域はシリンダ 00001-00915, サイズ 00061 とのことです. 1シリンダが 0x11000 byte なのか 0x11200 byte なのか謎ですが filesystem header をみることにします.

JmpBoot 0xeb 0x45 0x90
OEMName "NEC  5.0"
BytesPerSector 1024
SectorPerCluster 2
ReservedSectorCount 1
NumFats 2
RootEntryCount 3072
TotalSector16 60390
Media 0xf8
FATSz16 59
SectorPerTrack 17
NumHeads 8
HideSector 136
TotSec32 0
DriveNumber 128
Reserved1 0x00
BootSignature 0x29
VolumeID 0x29 0xfe 0x07 0x10
VolumeLabel "NO NAME    "
FilesystemType "FAT16   "
BootSign 0x00 0x00
JmpBoot 0xeb 0x45 0x90
OEMName "NEC  6.2"
BytesPerSector 1024
SectorPerCluster 2
ReservedSectorCount 1
NumFats 2
RootEntryCount 3072
TotalSector16 60390
Media 0xf8
FATSz16 59
SectorPerTrack 17
NumHeads 8
HideSector 136
TotSec32 0
DriveNumber 128
Reserved1 0x00
BootSignature 0x29
VolumeID 0x29 0xc0 0x07 0x16
VolumeLabel "NO NAME    "
FilesystemType "FAT16   "
BootSign 0x00 0x00

NEC 5.0 と NEC 6.2 の内容は大きな違いはないのですがその次に cluster chain がある NEC 6.2 を使うことにします.