Difference between revisions of "+3DOS"

From SinclairFAQ
Jump to: navigation, search
(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.