file : /dsgn/flpyspec.text date : 31-Januay-1983 Floppy driver functional specification. Functional requirements : 1) Driver must be able to read and write single and double density diskettes. It must determine if the diskette is single or double density from the diskette. It cannot depend on user or system input to determine diskette density. 2) Driver must be able to switch between single and double density on the same unit at any time. 3) Driver must support multiple drives on a single controller. 4) Driver must be slot independent. 5) 1 driver must work for all floppy device units. 6) The system must allocate each drive it's own unit number. 7) Driver need only support single sided diskettes. The floppy driver uses the following standard driver commands : 1) Unitread : Read n bytes from a sequential set of 1 or more blocks starting at the block number specified. a) Reads partial blocks. 2) Unitwrite : Write n bytes to a sequential set of 1 or more blocks starting at the block number specified. a) Writes partial blocks. 3) Unitbusy : always returns false. 4) Unitclear : Home the head of the drive. 5) Unitinstall : Initializes the driver to its default state. e) initialize internal tables b) initialize device table c) Home the head of the drive. d) Get number of drives attached to controller. e) determine density of diskette f) determine number of sides of diskette 6) Unitunmount : Deattach driver from system. 7) Unitstatus : used for several driver dependent functions. a) Return the number of bytes per sector, sectors per track, tracks per side, the number of sides, and the number of blocks for current diskette in drive. b) Read 1 sector. c) Write 1 sector. d) Get number of drives attached to controller. Comments : 1) Switch densities only if an operation fails, then retry operation. Do this only on failures related to media density not lack of device readiness.