INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER AX = 4404h BL = drive number (00h = default, 01h = A:, etc.) CX = 0004h DS:DX -> DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. buffer to receive device driver address Return: buffer filled with pointer into Stacker device driver (see #02550): driver + 19h if Stacker Anywhere controls this drive driver + 1Ah if Stacker controls this drive unchanged else Notes: in addition to returning the address of the Stacker device driver, this call also sets the volume number at offset 58h in the device driver (see #02550 at INT 25/AX=CDCDh) Stacker Anywhere does not link its built-in device driver into the standard device driver chain, but it can be found via CDSsee Current Directory Structure/DPBsee Drive Paramter Block this call can be used as an installation check for all versions of Stacker and Stacker Anywhere to avoid the INT 25 call SeeAlso: AX=4408h,AX=440Eh,AH=52h,INT 25/AX=CDCDh
INT 21 - Stacker - GET STACVOL FILE SECTORS AX = 4404h BL = drive number (0 is current drive) CX = byte count (i.e., 200h = 1 sector) DS:DX -> buffer (see #01529) Return: Data Buffer contains the number of sectors requested from the STACVOL physical file for the drive specified. Format of Stacker buffer: Offset Size Description (Table 01529) 00h WORD 01CDh 02h WORD sector count 04h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. number of starting sector 08h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. far pointer to Data Buffer
INT 21 - DUBLDISK.SYS v2.6 - GET INFO AX = 4404h BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.) CX = number of bytes (000Ah-0014h, call ignored otherwise) DS:DX -> data record (see #01530) Return: CF clear if successful AX = number of bytes read CF set on error AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h) Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk expander by Vertisoft Systems, Inc. InstallCheck: for v2.6, scan memory for the signature "FATsee File Allocation Table 2.6 byte:", which is immediately followed by a data table (see #01531) BUG: VOPT (a disk optimizer by Golden Bow Software) assumes that any driver which returns the "correct" number of bytes when the first word of the buffer for the data record contains the signature value 4444h is DoubleDisk; a workaround is for the non-DoubleDisk driver to return no data if the signature is present SeeAlso: AX=440Dh"DOS 3.2+" Index: installation check;DUBLDISK.SYS Format of DUBLDISK data record: Offset Size Description (Table 01530) 00h WORD (call) signature 4444h 02h BYTE (call) function 00h ??? 01h ??? ---function 00h--- 02h BYTE (ret) ??? 03h BYTE (ret) ??? ---function 01h--- 02h WORD (ret) 4444h 04h WORD allocation unit size??? 06h WORD ??? 08h WORD ??? 0Ah BYTE ??? Format of DUBLDISK signature data table: Offset Size Description (Table 01531) 00h 5 BYTEs ??? 05h BYTE first drive number 06h BYTE number of drives 07h ???
INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES AX = 4404h BL = drive number (00h = default, 01h = A:, etc) CX = 000Ah (size of DSPACKET structure) DS:DX -> DSPACKET structure (see #01532) Return: CF clear if IOCTL successful -- check DSPACKET for actual status AX = number of bytes actually transferred CF set on error AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h) SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h Format of DoubleSpace DSPACKET structure: Offset Size Description (Table 01532) 00h WORD signature 444Dh ("DM") 02h BYTE command code 46h ('F') flush internal caches 49h ('I') flush and invalidate internal caches 03h WORD result code (ret) 4F4Bh ("OK") if successful, else unchanged 05h 5 BYTEs padding
INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE AX = 4404h BL = drive number (00h = default, 01h = A:, etc) CX = size of DSPACKET structure (ignored in DOS 6.2) DS:DX -> DSPACKET structure (see #01533) Return: CF clear if IOCTL successful -- check DSPACKET for actual status AX = number of bytes actually transferred CF set on error AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h) SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h Format of DoubleSpace DSPACKET structure: Offset Size Description (Table 01533) 00h WORD signature 444Dh ("DM") 02h BYTE command code 53h ('S') get ??? for specified drive 03h WORD result code (ret) 4F4Bh ("OK") if successful, else unchanged 05h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. (ret) pointer to 96-byte ??? data 09h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. (ret) pointer to ??? data 0Dh 3 BYTEs reserved
INT 21 U - DoubleTools v1.0 - GET ??? AX = 4404h BL = drive number (00h = default, 01h = A:, etc) CX = 0006h DS:DX -> DoubleTools structure (see #01534) Return: CF clear if IOCTL successful -- check DSPACKET for actual status AX = number of bytes actually transferred CF set on error AX = error code (01h,05h,06h,0Dh) (see #01680 at AH=59h/BX=0000h) Note: the Transporter device driver has the signature 55h 61h 50h 74h ("DaPt") twelve bytes after it beginning Format of DoubleTools structure: Offset Size Description (Table 01534) 00h WORD (call) signature 55h AAh (ret) signature 78h 70h ("xp") 02h WORD (call) signature 52h 16h (ret) ??? 04h WORD (ret) segment of driver's DS (same as its PSPsee Program Segment Prefix)