Difference between revisions of "+3DOS"
(Created page with "==Foo== ==eXtended Disk Parameter Block==") |
|||
Line 2: | Line 2: | ||
==eXtended Disk Parameter Block== | ==eXtended Disk Parameter Block== | ||
+ | |||
+ | Each logical drive in +3DOS has an extended disk parameter block. This is a [[CP/M]] disk parameter block (DPB) with additional information to support different formats. | ||
+ | When a disk is logged on the XDPB is initialised and set with the relevant settings for the disk format in use. | ||
+ | |||
+ | The Plus 3 manual describes the XDPB layout: | ||
+ | <pre> | ||
+ | Bytes 0...1 SPT records per track | ||
+ | Byte 2 BSH log2(block size / 128) | ||
+ | Byte 3 BLM block size / 128 - 1 | ||
+ | Byte 4 EXM extent mask | ||
+ | Bytes 5...6 DSM last block number | ||
+ | Bytes 7...8 DRM last directory entry number | ||
+ | Byte 9 AL0 directory bit map | ||
+ | Byte 10 AL1 directory bit map | ||
+ | Bytes 11...12 CKS size of checksum vector (bit 15 = permanent) | ||
+ | Bytes 13...14 OFF number of reserved tracks | ||
+ | Byte 15 PSH log2(sector size / 128) | ||
+ | Byte 16 PHM sector size / 128 - 1 | ||
+ | Byte 17 Bits 0...1 Sidedness | ||
+ | 0 = Single sided | ||
+ | 1 = Double sided (alternating sides) | ||
+ | 2 = Double sided (successive sides) | ||
+ | Bits 2...6 Reserved (set to 0) | ||
+ | Bit 7 Double track | ||
+ | Byte 18 Number of tracks per side | ||
+ | Byte 19 Number of sectors per track | ||
+ | Byte 20 First sector number | ||
+ | Bytes 21...22 Sector size | ||
+ | Byte 23 Gap length (read/write) | ||
+ | Byte 24 Gap length (format) | ||
+ | Byte 25 Bit 7 Multi-track operation | ||
+ | 1 = multi-track | ||
+ | 0 = single track | ||
+ | Bit 6 Modulation mode | ||
+ | 1 = MFM mode | ||
+ | 0 = FM mode | ||
+ | Bit 5 Skip deleted data address mark | ||
+ | 1 = skip deleted data address mark | ||
+ | 0 = don't skip deleted address mark | ||
+ | Bits 0...4 = 0 | ||
+ | Byte 26 Freeze flag | ||
+ | 00h (0) = auto-detect disk format | ||
+ | FFh (255) = don't auto-detect disk format | ||
+ | |||
+ | Byte 25 is normally set to 60h (96). Multi-track operation is not | ||
+ | recommended. | ||
+ | |||
+ | Setting the freeze flag (byte 26) prevents +3DOS from trying to | ||
+ | determine the format of a disk. This should be used when patching an | ||
+ | XDPB for a non-standard format. | ||
+ | </pre> | ||
+ | |||
+ | It also gives examples of the XDPB for three different formats. | ||
+ | |||
+ | The AMSTRAD PCW range single track format (type 0) (As used by the +3): | ||
+ | <pre> | ||
+ | 36 SPT, records per track | ||
+ | 3 BSH, block shift | ||
+ | 7 BLM, block mask | ||
+ | 0 EXM, extent mask | ||
+ | 174 DSM, number of blocks - 1 | ||
+ | 63 DRM, number of directory entries - 1 | ||
+ | C0h (192) AL0, 2 directory blocks | ||
+ | 00h (0) AL1 | ||
+ | 16 CKS, size of checksum vector | ||
+ | 1 OFF, reserved tracks | ||
+ | 2 PSH, physical sector shift | ||
+ | 3 PHM, physical sector mask | ||
+ | |||
+ | 0 Single sided | ||
+ | 40 Tracks per side | ||
+ | 9 Sectors per track | ||
+ | 1 First sector number | ||
+ | 512 Sector size | ||
+ | 42 Gap length (read/write) | ||
+ | 82 Gap length (format) | ||
+ | 60h (96) MFM mode, skip deleted data address mark | ||
+ | 0 Do auto select format | ||
+ | </pre> | ||
+ | |||
+ | The AMSTRAD CPC range SYSTEM format (type 1) | ||
+ | <pre> | ||
+ | 36 SPT, records per track | ||
+ | 3 BSH, block shift | ||
+ | 7 BLM, block mask | ||
+ | 0 EXM, extent mask | ||
+ | 170 DSM, number of blocks - 1 | ||
+ | 63 DRM, number of directory entries - 1 | ||
+ | C0h (192) AL0, 2 directory blocks | ||
+ | 00h (0) AL1 | ||
+ | 16 CKS, size of checksum vector | ||
+ | 2 OFF, reserved tracks | ||
+ | 2 PSH, physical sector shift | ||
+ | 3 PHM, physical sector mask | ||
+ | |||
+ | 0 Single sided | ||
+ | 40 Tracks per side | ||
+ | 9 Sectors per track | ||
+ | 41h (65) First sector number | ||
+ | 512 Sector size | ||
+ | 42 Gap length (read/write) | ||
+ | 82 Gap length (format) | ||
+ | 60h (96) MFM mode, skip deleted data address mark | ||
+ | 0 Do auto select format | ||
+ | </pre> | ||
+ | |||
+ | Finally the AMSTRAD CPC range DATA ONLY format (type 2) | ||
+ | <pre> | ||
+ | 36 SPT, records per track | ||
+ | 3 BSH, block shift | ||
+ | 7 BLM, block mask | ||
+ | 0 EXM, extent mask | ||
+ | 179 DSM, number of blocks - 1 | ||
+ | 63 DRM, number of directory entries - 1 | ||
+ | C0h (192) AL0, 2 directory blocks | ||
+ | 00h (0) AL1 | ||
+ | 16 CKS, size of checksum vector | ||
+ | 0 OFF, reserved tracks | ||
+ | 2 PSH, physical sector shift | ||
+ | 3 PHM, physical sector mask | ||
+ | |||
+ | 0 Single sided | ||
+ | 40 Tracks per side | ||
+ | 9 Sectors per track | ||
+ | C1h (193) First sector number | ||
+ | 512 Sector size | ||
+ | 42 Gap length (read/write) | ||
+ | 82 Gap length (format) | ||
+ | 60h (96) MFM mode, skip deleted data address mark | ||
+ | 0 Do auto select format | ||
+ | </pre> | ||
+ | |||
+ | ====The +3e ROMs==== | ||
+ | Garry Lancaster's [[+3e|+3e ROMs]] patch the XDPB to support the +3DOS filesystem on hard disk partitions. |
Revision as of 20:42, 24 March 2011
Foo
eXtended Disk Parameter Block
Each logical drive in +3DOS has an extended disk parameter block. This is a CP/M disk parameter block (DPB) with additional information to support different formats. When a disk is logged on the XDPB is initialised and set with the relevant settings for the disk format in use.
The Plus 3 manual describes the XDPB layout:
Bytes 0...1 SPT records per track Byte 2 BSH log2(block size / 128) Byte 3 BLM block size / 128 - 1 Byte 4 EXM extent mask Bytes 5...6 DSM last block number Bytes 7...8 DRM last directory entry number Byte 9 AL0 directory bit map Byte 10 AL1 directory bit map Bytes 11...12 CKS size of checksum vector (bit 15 = permanent) Bytes 13...14 OFF number of reserved tracks Byte 15 PSH log2(sector size / 128) Byte 16 PHM sector size / 128 - 1 Byte 17 Bits 0...1 Sidedness 0 = Single sided 1 = Double sided (alternating sides) 2 = Double sided (successive sides) Bits 2...6 Reserved (set to 0) Bit 7 Double track Byte 18 Number of tracks per side Byte 19 Number of sectors per track Byte 20 First sector number Bytes 21...22 Sector size Byte 23 Gap length (read/write) Byte 24 Gap length (format) Byte 25 Bit 7 Multi-track operation 1 = multi-track 0 = single track Bit 6 Modulation mode 1 = MFM mode 0 = FM mode Bit 5 Skip deleted data address mark 1 = skip deleted data address mark 0 = don't skip deleted address mark Bits 0...4 = 0 Byte 26 Freeze flag 00h (0) = auto-detect disk format FFh (255) = don't auto-detect disk format Byte 25 is normally set to 60h (96). Multi-track operation is not recommended. Setting the freeze flag (byte 26) prevents +3DOS from trying to determine the format of a disk. This should be used when patching an XDPB for a non-standard format.
It also gives examples of the XDPB for three different formats.
The AMSTRAD PCW range single track format (type 0) (As used by the +3):
36 SPT, records per track 3 BSH, block shift 7 BLM, block mask 0 EXM, extent mask 174 DSM, number of blocks - 1 63 DRM, number of directory entries - 1 C0h (192) AL0, 2 directory blocks 00h (0) AL1 16 CKS, size of checksum vector 1 OFF, reserved tracks 2 PSH, physical sector shift 3 PHM, physical sector mask 0 Single sided 40 Tracks per side 9 Sectors per track 1 First sector number 512 Sector size 42 Gap length (read/write) 82 Gap length (format) 60h (96) MFM mode, skip deleted data address mark 0 Do auto select format
The AMSTRAD CPC range SYSTEM format (type 1)
36 SPT, records per track 3 BSH, block shift 7 BLM, block mask 0 EXM, extent mask 170 DSM, number of blocks - 1 63 DRM, number of directory entries - 1 C0h (192) AL0, 2 directory blocks 00h (0) AL1 16 CKS, size of checksum vector 2 OFF, reserved tracks 2 PSH, physical sector shift 3 PHM, physical sector mask 0 Single sided 40 Tracks per side 9 Sectors per track 41h (65) First sector number 512 Sector size 42 Gap length (read/write) 82 Gap length (format) 60h (96) MFM mode, skip deleted data address mark 0 Do auto select format
Finally the AMSTRAD CPC range DATA ONLY format (type 2)
36 SPT, records per track 3 BSH, block shift 7 BLM, block mask 0 EXM, extent mask 179 DSM, number of blocks - 1 63 DRM, number of directory entries - 1 C0h (192) AL0, 2 directory blocks 00h (0) AL1 16 CKS, size of checksum vector 0 OFF, reserved tracks 2 PSH, physical sector shift 3 PHM, physical sector mask 0 Single sided 40 Tracks per side 9 Sectors per track C1h (193) First sector number 512 Sector size 42 Gap length (read/write) 82 Gap length (format) 60h (96) MFM mode, skip deleted data address mark 0 Do auto select format
The +3e ROMs
Garry Lancaster's +3e ROMs patch the XDPB to support the +3DOS filesystem on hard disk partitions.