Advanced SCSI Programming Interface: Difference between revisions

Content deleted Content added
Drivers: That's not an exhaustive list.
 
(30 intermediate revisions by 16 users not shown)
Line 1:
{{Short description|Computer software for connecting SCSI devices}}
{{more footnotes|date=June 2009}}
In [[computing]],The '''ASPIAdvanced SCSI Programming Interface''' ('''Advanced SCSI Programming InterfaceASPI''') is ana programming interface developed by [[Adaptec]]-developed programming interface which standardizes [[communication]] on a [[computer bus]] between a [[SCSI]] [[device driver|driver]] module on the one hand and SCSI (and [[ATAPI]]) [[peripheral]]s on the other.<ref name=guide>{{cite journalbook | last=Sawert | first=Brian | date=1998 | url=https://archive.org/details/programmersguide0000sawe/page/55/ | title=The AdvancedProgrammer's Guide to SCSI Programming| publisher=Addison-Wesley Interface| pages=55–102, 233 | isbn=0201185385 | via=Google Books}}</ref>{{rp|55–56}}<ref>{{cite journal | last=Dr.White Dobb's| first=Myles Journal| date=MarchMay 25, 1995 1994| url=httphttps://www.drdobbsnewspapers.com/architecture-and-designarticle/the-advancedtoronto-scsistar-programminggetting-interfaceyour-components/184409199159678613/ | title=Getting your components to work together, part II | journal=The Toronto Star | page=H3 | via=Newspapers.com}}</ref>
 
== ASPI structureStructure ==
The ASPI manager software provides an interface between ASPI modules (device drivers or applications with direct SCSI support), a [[SCSI host adapter]], and SCSI devices connected to the host adapter. The ASPI manager is specific to the host adapter and [[operating system]]; its primary role is to abstract the host adapter specifics and provide a generic software interface to SCSI devices.<ref name=guide />{{rp|56}}
 
On [[Windows 9x]] and [[Windows NT]], the ASPI manager is generic and relies on the services of SCSI miniport drivers. On those systems, the ASPI interface is designed for applications which require SCSI pass-through functionality (such as [[CD-ROM]] burning software).<ref name=guide />{{rp|57}}
 
The primary operations supported by ASPI are discovery of host adapters and attached devices, and submitting [[SCSI commandscommand]]s to devices via SRBs (SCSI Request Blocks).<ref name=guide />{{rp|233}} ASPI supports concurrent execution of SCSI commands.<ref name=bookofscsi />{{rp|231}}
 
== History ==
 
ASPI was developed by [[Adaptec]] around 1989<ref name=hoovers>{{cite book | editor-last=Spain | editor-first=Patrick J. | editor2=James R. Talbot | date=1995 | url=https://archive.org/details/hoovershandbooko0000unse_j4c4/page/118/ | title=Hoover's Handbook of Emerging Compaies 1995: Profiles of America's Most Exciting Growth Enterprises | publisher=The Reference Press | page=118 | isbn=9781878753755 | via=Google Books}}</ref> and was formally introduced in January 1990. Originally supporting only [[MS-DOS]],<ref name=brownstein>{{cite journal | last=Brownstein | first=Mark | date=January 15, 1990 | url=https://books.google.com/books?id=eTAEAAAAMBAJ&pg=PA409 | title=Adaptec Unveils SCSI Interface Standard | journal=InfoWorld | publisher=IDG Publications | volume=12 | issue=3 | page=23 | via=Google Books}}</ref> support for [[NetWare]] was added in 1991, while support for [[OS/2]] and [[Windows 3.x]] was added in 1992.<ref name=hoovers /><ref name=redefines>{{cite journal | last=Guzman | first=Ed | date=June 1992 | url=https://www.proquest.com/docview/220619290 | title=ASPI Refines SCSI I/O Routing | journal=Computer Technology Review | publisher=West World Publications | volume=12 | issue=7 | page=22 | id={{ProQuest|220619290}} }}</ref> Originally developed only for SCSI devices, support for [[ATAPI]] devices was added later.<ref>{{cite book | last=Mueller | first=Scott | date=2003 | edition=14th | url=https://books.google.com/books?id=eV1_LjW3pTkC | title=Upgrading and Repairing PCs | publisher=Que | pages=563–564, 771–772 | isbn=9780789727459 | via=Google Books}}</ref>{{rp|772}} Most other SCSI host adapter vendors (for example [[BusLogic]], DPT, AMI, [[Future Domain]], DTC) shipped their own ASPI managers with their hardware.<ref>{{cite journal|last=Myers|first=Ben|title=More on ASPI|url=https://www.drdobbs.com/letters/184409247|page=10|volume=19|issue=5|date=May 1994|journal=Dr. Dobb's Journal|publisher=UBM LLC|archiveurl=https://web.archive.org/web/20241125034059/https://www.drdobbs.com/letters/184409247|archivedate=November 25, 2024|url-status=live}}</ref>
Originally inspired by a driver architecture developed by [[Douglas Goodall|Douglas W. Goodall]] for [[Ampro|Ampro Computers]] in 1983,<ref>{{cite web |title=Douglas W. Goodall - Ampro Computers |url=https://www.linkedin.com/in/douglasgoodall/de |access-date=2017-01-28 |quote=I worked briefly at Ampro in order to modify the [[CP/M-80]] [[CP/M BIOS|BIOS]] for the Little Board [[Zilog Z80|Z80]] to support [[SCSI]] hard disk operations. […] I suggested my skills would be better used working with a 16-bit card such as an [[Intel 80186|80186]]. […] I wrote the SCSI support for that board as well. […] I taught a staff employee the principles of my driver architecture. He then left Ampro and went to work for [[Adaptec]], where he reproduced my driver architecture and it ended up being called ASPI.}}</ref> ASPI was developed by [[Adaptec]] around 1990. It was initially designed to support DOS, OS/2, Windows 3.x, and Novell NetWare. It was originally written to support SCSI devices; support for ATAPI devices was added later. Most other SCSI host adapter vendors (for example BusLogic, DPT, AMI, Future Domain, DTC) shipped their own ASPI managers with their hardware.<ref>{{cite web|last=Myers|first=Ben|title=More on ASPI|url=http://www.drdobbs.com/letters/184409247}}</ref>
 
Adaptec also developed generic SCSI disk and CD-ROM drivers for DOS ({{mono|ASPICD.SYS}} and {{mono|ASPIDISK.SYS}}).<ref name=bookofscsi>{{cite book | last=Ridge | first=Peter M. | date=1995 | url=https://books.google.com/books?id=etcmAQAAMAAJ&q=%22ASPIDISK.SYS%22+%22ASPICD.SYS%22 | title=The Book of SCSI: A Guide for Adventurers | publisher=No Starch Press | isbn=9781886411029 | via=Google Books}}</ref>{{rp|60–61}}
 
At least a couple of other programming interfaces for SCSI device drivers competed with ASPI in the early 1990s, including CAM (Common Access Method), developed by Apple; and Layered Device Driver Architecture, developed by [[Microsoft]]. However, ASPI was far and away more common than any of its competitors in this space, with ''PC Magazine'' declaring it a ''de facto'' standard for developing SCSI device drivers only two years after its introduction.<ref>{{cite journal | last=Thomas | first=Susan G. | date=April 28, 1992 | url=https://books.google.com/books?id=HERlo0BgpGYC&pg=PT32 | title=SCSI Protocol Wars: ASPI, CAM, LADDR | journal=PC Magazine | publisher=Ziff-Davis | volume=11 | issue=8 | page=31 | via=Google Books}}</ref>
Microsoft licensed the interface for use with [[Windows 9x|Windows 9x series]]. At the same time Microsoft developed [[SCSI Pass Through Interface]] (SPTI), an in-house substitute that worked on the NT platform. Microsoft did not include ASPI in Windows 2000/XP, in favor of its own SPTI. Users may still download ASPI from Adaptec. A number of CD/DVD applications also continue to offer their own implementations of ASPI layer.
 
Starting in 1995, Microsoft licensed the interface for use with their [[Windows 9x]] operating systems. At the same time [[Microsoft]] developed SCSI Pass Through Interface (SPTI), an in-house substitute that worked on the NT platform. Microsoft did not include ASPI in [[Windows 2000]]/[[Windows XP|XP]], in favor of its own SPTI.<ref>{{cite journal | last=Tewell | first=Thomas | date=December 1997 | url=https://www.drdobbs.com/windows/writing-portable-win32-scsi-applications/184410340 | title=Writing Portable Win32 SCSI Applications | journal=Dr. Dobb's Journal | publisher=UBM LLC | volume=22 | issue=12 | pages=56–57 | archiveurl=https://web.archive.org/web/20141218172923/https://www.drdobbs.com/windows/writing-portable-win32-scsi-applications/184410340 | archivedate=December 18, 2014}}</ref>
== Driver ==
 
ASPI was provided by the following drivers.
To support [[Universal Serial Bus|USB]] drives under DOS, [[Panasonic]] developed a universal ASPI driver ({{mono|USBASPI.SYS}}) that bypasses the lack of native USB support by DOS.<ref>{{cite book | date=2006 | url=https://books.google.com/books?id=bf6LjPgbE9QC&dq=%22USBASPI.SYS%22&pg=PA130 | title=软件安装完全手册 | trans-title=Complete Software Installation Manual | lang=Chinese | publisher=Science Press | page=130 | isbn=978-7-03-018123-7 | via=Google Books}}</ref>
 
== DriverDrivers ==
Examples of ASPI drivers:
:
{| class="wikitable" border="1"
|-
! Operating Systemsystem
! Driver Filenamefilename
! Bundled
|-
| MS-DOS
| {{mono|ASPI4DOS.SYS}} or {{mono|USBASPI.SYS}} (USB drives only)
| {{no}}
|-
| Windows 3.1x
| {{mono|WINASPI.DLL}}
| {{no}}
|-
| [[Windows 95]], [[Windows 98|98]] and [[Windows ME|ME]]
| {{mono|WNASPI32.DLL}}, {{mono|WINASPI.DLL}}, {{mono|APIX.VXD}} and {{mono|ASPIENUM.VXD}}
| {{yes}}
|-
| Windows NT, 2000, XP
| {{mono|WNASPI32.DLL}}, {{mono|ASPI32.SYS}}
| {{no}}
|-
| [[FreeDOS]]
| USBASPI.SYS
| {{unk}}
|}
 
== See also ==
* [[SCSI Pass-Through Direct]] (SPTD)
* [[SCSI Pass Through Interface]] (SPTI)
 
== References ==
{{Reflist}}
 
== External links ==
 
=== Adaptec's ASPI driver ===
*[https://storage.microsemi.com/en-us/speed/software_pc/aspi/aspi_471a2_exe.php Adaptec ASPI driver]
 
=== Non-Adaptec ASPI drivers for Windows ===
*[https://web.archive.org/web/20100223201424/ftp://ftp6.nero.com/NeroAspiEn.exe Nero ASPI driver]
*[https://web.archive.org/web/20100223201424/http://www.frogaspi.org/download.htm Frog ASPI driver]
*[http://users.skynet.be/t_chan/MekugiAspi/MekugiAspi.htm Mekugi ASPI driver for Win7 64bits]
*[ftp://ftp.pinnaclesys.de/driver/pc/InstantCDDVD/ASAPI.exe Pinnacle Systems ASAPI driver]{{dead link|date=October 2016 |bot=InternetArchiveBot |fix-attempted=yes }}
 
=== Technical information===
*[http://www.zianet.com/jgray/dat/files/ASPI32.pdf Technical reference (ASPI for Win32)]
*[https://web.archive.org/web/20080915021504/http://www.doom9.org/aspi.htm ASPI Layer setup]
 
=== Tips ===
* [http://www.nu2.nu/aspi/ Bart's page about ASPI]
 
[[Category:Application programming interfaces]]