Device Driver Attribute Values (brief)
│F│E│D│C│B│A-7│6│5│4│3│2│1│0│ │ │ │ │ │ │ │ │ │ │ │ │ └── 1 = character device is stdin │ │ │ │ │ │ │ │ │ │ │ │ 1 = block dev supports generic IOCTL │ │ │ │ │ │ │ │ │ │ │ └─── 1 = character device is stdout │ │ │ │ │ │ │ │ │ │ │ 1 = block dev supports generic IOCTL │ │ │ │ │ │ │ │ │ │ └──── 1 = current NUL device │ │ │ │ │ │ │ │ │ └───── 1 = current clock device │ │ │ │ │ │ │ └─┴────── reserved by DOS │ │ │ │ │ │ └───────── 1 = supports Get/Set logical device │ │ │ │ │ └─────────── reserved (must be zero) │ │ │ │ └───────────── 1 = supports removable media │ │ │ └────────────── reserved (must be zero) │ │ └─────────────── 1 = non-IBM format (block device) │ │ 1 = output until busy (char device) │ └──────────────── 1 = supports IOCTL strings └───────────────── 1 = character device, 0 = block device - true bit values are described, a false indicates opposite - see INT 21,44 or IOCTL,n where "n" is an IOCTL function Device Driver Attribute Bit Values (detailed) 0 standard input device: used by character devices to tell DOS a character device driver is the standard input device. For block devices, a 1 indicates generic IOCTL supported 1 standard output device: used by character devices to tell DOS a character device driver is the standard output device. For block devices, a 1 indicates generic IOCTL supported 2 NUL attribute: used for character devices only. Tells DOS the character device driver is a NUL device. This bit is used by DOS to determine if the NUL device is being used. The NUL device cannot be reassigned. 3 clock device: set to 1 to tell DOS this is the new CLOCK$ device. 0B open/close removable media: set to 1 tells DOS the device driver can handle removable media. (DOS 3.x) 0D non-IBM format: for block devices, indicates the method the driver uses to determine media type. Set to 1 for drivers that use the BPB to determine media type, set to zero for drivers that use the media descriptor byte. For character devices (usually printers), set to 1 if the driver supports output until busy, set to 0 otherwise. 0E IOCTL bit: used with both character and block devices. Indicates if the device driver can handle control strings through the IOCTL. Zero if a device driver can't process control strings. If an attempt to send/receive an IOCTL control strings, is made without this bit set, an error code is returned. The IOCTL functions allow data to be sent to and from the driver without doing normal reads or writes. The device driver can use the data for information. It is up to the device to interpret the string, but the information must not be treated as a normal I/O request. Affects only IOCTL functions AL=2 and AL=5. 0F device type: used to indicate block or character device.