ASPI4B User's Guide - Version 3 ASPI4B is a character device driver for IBM SCSI systems that runs under the DOS operating system. On the user side it supports the Advanced SCSI Programming Interface (ASPI). On the system side it supports the IBM Advanced Services BIOS interface (interrupt 4B) (supported by all the IBM SCSI cards, and possibly the Future Domain SCSI cards made for IBM). To install ASPI4B, all you have to do is: ù Download ASPI4B SYSBIN to a DOS disk as ASPI4B.SYS. ù Add the line "DEVICE = ASPI4B.SYS" somewhere in your CONFIG.SYS file. ù Re-IPL your PC. If the installation is successful, ASPI4B will display: ASPI4B - Version 3 - installed as SCSIMGR If an error message is displayed, you probably don't have a SCSI attachment with the advanced services BIOS. Once installed, ASPI4B should follow the ASPI interface conventions. A description of this interface is available from the Adaptec bulletin board (the phone number is 408-945-7727) The Set Host Adapter Parameters command is supported to set the command timeout value for a device. The layout of the Unique Parameters field is: Offset # Bytes Description -------- -------- --------------- 00h (00) 01h (01) Target ID 01h (01) 01h (01) Logical Unit Number 02h (02) 02h (02) Function code = 0 04h (04) 02h (02) Timeout value (seconds) 06h (06) 0Ah (10) Reserved = 0 I know of the following limitations of ASPI4B: ù ASPI4B can run only under a pure DOS operating system. It could theoretically support DOS programs under OS/2 2.x, but OS/2 appears to allocate all devices it finds at startup, leaving none for ASPI4B. ù At the moment, ASPI4B cannot be loaded with the "devicehigh" command. ù It looks like the attachment BIOS doesn't recognize all device types (in particular, the reserved type 'F0'). If BIOS ignores a device because of it's type, ASPI4B will never see it, either. ù I determine the attachment SCSI device number using a "Get POS and Adapter Information" request (Interrupt 4B, Al = '12'). This appears to work with IBM SCSI cards; I don't know how it will work with the BIOS supplied on other (particularly ISA channel) cards. ù When I am asked to do a Reset Device, I actually do a Reset Adapter, so only the adapter will be reset. ù When a SCSI command ends with a target check, I always execute a Request Sense command - even if the sense allocation length is zero. I think this is standard, but would love to be proven wrong. ù Linking has been implemented, but not tested. ù Posting has been implemented, but not the way it was intended by the ASPI designers. If you specify posting, ASPI4B will: Ä Execute the command and wait for command completion Ä Call the post subroutine Ä Return control to the original calling routine. If your post routine issues another ASPI call, you will be executing ASPI4B while the original call is still in progress. ASPI4B can handle this (it is reentrant), but the original calling routine must supply a stack that is large enough to handle all the nested ASPI4B instances. I recommend not using the post feature. ù The Abort SCSI I/O Request always returns successfully, but never does anything. ù Get Disk Drive Information is not supported, and returns invalid SCSI request. Doug Conly 03/21/94