1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
/* Matthew Reed's hard drive format. Thanks to Matthew for providing
documentation. The comments below are copied from his mail
messages, with some additions. */
typedef struct {
Uchar id1; /* 0: Identifier #1: 56H */
Uchar id2; /* 1: Identifier #2: CBH */
Uchar ver; /* 2: Version of format: 10H = version 1.0 */
Uchar cksum; /* 3: Simple checksum:
To calculate, add together bytes 0 to 31 of header
(excepting byte 3), then XOR result with 4CH */
Uchar blks; /* 4: Number of 256 byte blocks in header: should be 1 */
Uchar mb4; /* 5: Not used, but HDFORMAT sets to 4 */
Uchar media; /* 6: Media type: 0 for hard disk */
Uchar flag1; /* 7: Flags #1:
bit 7: Write protected: 0 for no, 1 for yes
[xtrshard/dct ignores for now]
bit 6: Must be 0
bit 5 - 0: reserved */
Uchar flag2; /* 8: Flags #2: reserved */
Uchar flag3; /* 9: Flags #3: reserved */
Uchar crtr; /* 10: Created by:
14H = HDFORMAT
42H = xtrs mkdisk
80H = Cervasio xtrshard port to Vavasour M4 emulator */
Uchar dfmt; /* 11: Disk format: 0 = LDOS/LS-DOS */
Uchar mm; /* 12: Creation month: mm */
Uchar dd; /* 13: Creation day: dd */
Uchar yy; /* 14: Creation year: yy (offset from 1900) */
Uchar res1[12]; /* 15 - 26: reserved */
Uchar dparm; /* 27: Disk parameters: (unused with hard drives)
bit 7: Density: 0 = double, 1 = single
bit 6: Sides: 0 = one side, 1 = 2 sides
bit 5: First sector: 0 if sector 0, 1 if sector 1
bit 4: DAM convention: 0 if normal (LDOS),
1 if reversed (TRSDOS 1.3)
bit 3 - 0: reserved */
Uchar cyl; /* 28: Number of cylinders per disk */
Uchar sec; /* 29: Number of sectors per track (floppy); cyl (hard) */
Uchar gran; /* 30: Number of granules per track (floppy); cyl (hard)*/
Uchar dcyl; /* 31: Directory cylinder [mkdisk sets to 1; xtrs ignores]*/
char label[32]; /* 32: Volume label: 31 bytes terminated by 0 */
char filename[8];/* 64 - 71: 8 characters of filename (without extension)
[Cervasio addition. xtrs actually doesn't limit this
to 8 chars or strip the extension] */
Uchar res2[184]; /* 72 - 255: reserved */
} ReedHardHeader;
|