ARMASPI FAQ

Last revised 1997.11.12

Contents

Introduction

What are ASPI Managers / Modules?
What use are they on the PC Card?
Using the ARM ASPI manager under Windows
Where can I get them?
Files in the release

Installation Instructions

Installing the files
Installing ASPI for Windows
Configuring The Driver
Manually Setting ASPIIgnore
Manually Setting ASPIReserve
Manually Setting ASPIReserveForce
Manually Setting ASPIBuffer

Compatibility

SCSI Cards
Scanners
Removable Drives
CD Writers

Known Problems

Debugging

Introduction

This software has been written by Andreas Walter as Freeware for use with PC cards. As such it is not supported by Aleph One, but is distributed in the hope that you find it useful. Please report/discuss problems on comp.sys.acorn.extra-cpu or the Aleph One 'pc-cards' mailing list (subscribe via our web pages).

What are ASPI Managers / Modules?

ASPI, the Advanced SCSI Programming Interface, is a software interface designed by Adaptec that relieves manufacturers of SCSI devices of having to write specific drivers for each and every SCSI interface that the device is to work with. An ASPI Manager provides a consistent interface between drivers for SCSI devices (ASPI Modules) and the SCSI bus. RISCOS has a similar feature in its SCSI modules, which provide a consistent interface to the bus through the SCSI_ SWIs.

Andreas Walter's ARM ASPI Manager is an implementation of an Adaptec compatible ASPI Manager. However, instead of talking directly to the hardware of one particular SCSI interface, it takes the ASPI commands and converts them into something the Acorn SCSI_ SWIs understand. Hence your actual interface type doesn't matter, ARMASPI will work with all Acorn-compatible interfaces.

What use are they on the PC Card?

They provide a bridge between the PC Card and your SCSI peripherals. So long as your SCSI devices (be it a scanner, hard disk, tape streamer etc.) come with ASPI modules to drive them, they can now be accessed directly from the PC card. For example, a Scanner can now normally be installed under the PC Card by simply following the PC Installation instructions.

Using the ARM ASPI Manager under Windows

Currently, the ARM ASPI Manager only provides a DOS and Windows 3.xx (16bit) interface. Unfortunately this means that most Windows95-specific drivers will fail to work. In order for most Windows95 applications to run, a new 32bit driver will need to be written. However you can use the Windows 3.xx or DOS drivers under Windows95, so long as you replace Windows' version of WINASPI.DLL with the one supplied.

Where can I get them?

Currently, the ASPI Drivers are only at a beta release stage. However, they are remarkably stable with only one or two known glitches.

The latest version, 0.05c, can be downloaded directly from here.

    Change list:
  1. v0.05c ASPISetup defaults to single SCSI card config
  2. v0.05b 16-bit Windows (3.x) support & Castle SCSI card/Mustek Scanner support.
  3. v0.05 Instructions provided, ASPI buffer option added
  4. v0.04 First scanner support, Config utility included
  5. v0.03 ASPIreserve & ASPIForce added
  6. v0.01 Initial release.

Files in the release

ARMASPI     v0.05  RISCOS Module for ASPI driver
ARMASPI_D   v0.05  Debugging version of ARMASPI
HPCASPI/SYS v0.05  DOS Device driver for ASPI driver
WINASPI/DLL v0.01a DLL to support ASPI driver under Windows
ASPI_DDD           RISCOS Basic program to decode ARMASPI_D output
!ASPISetup  v0.03  Setup application for ASPI driver
!Run+              Addition to !PC !Run file
Confdata+          Addition to !PC !PCConfig Confdata file
Config+            Addition to !PC Config file
ASPIDocs           HTML version of this file
UserGuide          Text version of this file

Installation Instructions

Installing the files

Once you have the Archive containing the ARMASPI Manager, you need to follow the following instructions to install it.

  1. Double click your !PC application with SHIFT held down. This opens your application directory.
  2. Copy the ARMASPI module from the archive into the directory.
  3. Load file called '!Run' (again no quotes) into your favourite editor.
  4. About halfway down the file, paste the following 2 lines

    	| Load the ARMASPI driver

    	RMEnsure ARMASPI RMLoad <Diva$Dir>.ARMASPI

  5. Save the !Run file.
  6. Open your PC partition and copy the file HPCASPI/SYS into a convenient location (e.g. C:\DRIVERS\ASPI). Ensure that the file does not get renamed in the process.
  7. Close your !PC Application.
  8. Shift-double click your !PCConfig application to open it
  9. Open up the Resource directory in !PCConfig
  10. Drag the !ASPISetup Application from the Archive into the Resources directory
  11. Close the Resources directory
  12. Load the text file ConfData from the !PCConfig application into your favourite editor.
  13. Add the contents of the ConfData+ file in the archive to the end of ConfData
  14. Save ConfData and close the directory
  15. Boot up the PC Card.
  16. load your CONFIG.SYS file into your favourite DOS editor and add the following line after HIMEM or EMM386 drivers, with PATH being replaced with the DOS directory where you stored HPCASPI.SYS:

    	DEVICE=<PATH>HPCASPI.SYS
    e.g.    DEVICE=C:\DRIVERS\ASPI\HPCASPI.SYS

  17. Reboot your PC Card (Hold down CTRL+ALT+DEL or choose reset from the menu). During the start-up sequence, you should see the following message (or similar):

    	ARM ASPI Driver 0.05

    	Andreas Walter 1996

    If you don't, ensure you've followed the above properly. Rebooting the PC Card and holding down F8 when the 'Starting MS DOS' message appears allows you to step through the boot sequence, confirming each step.

  18. Now the driver is installed, it's time to set up the various settings:

Installing ASPI For Windows

Inside the ASPI Archive, you should also find a file called WinASPI.dll. This is a 16 bit windows driver to enable you to run Windows 3.xx ASPI programs / drivers. However, you must first install the DOS version, and then copy WinASPI.dll to the System folder inside your Windows directory. WinASPI.dll can be installed to Windows95 in the same way, but this is will not enable 32 bit Windows95 applications that require ASPI to run, although you should be able to use your old Windows 3.xx programs.

Configuring The ASPI Driver

If you have SCSI devices that are being driven by RISC OS, then you DO NOT want the PC card to take control of these using the ASPI driver. This could lead to the loss of data, and maybe a trashed hard disk. Similarly, if a device is controlled by the PC card using the ASPI drivers, you don't want RISC OS to be able to use it as well. The only exception to this rule is using scanners. However, you should never try to use the RISC OS drivers and PC drivers at the same time.

If you load up !PCConfig, and go to 'Advanced configuration' by clicking menu on the !PCconfig Icon bar Icon, then selecting Open -> Advanced Configuration, you will notice an extra option for the ASPI drivers. Click on te Setup button to load up and open the ASPI driver configuration window.

This window has a toggle for three different commands along the top, and a number of tick boxes for SCSI devices and cards just below. If a box is ticked for a device ID, then that command will apply to that device. The three commands are ASPIIgnore, ASPIReserve and ASPIReserveForce, explained below.

There is also a toggle for single/multiple SCSI card setup. Most people only have one SCSI card and should use this setting, and the top row of buttons only. If you have more than one then select this option, and use the top row for Logical SCSI card 0, next row for logical SCSI card 1 etc. Logical SCSI card numbers 0-3 are given in ascending order starting with slot 0. So far a setup with a SCSI card in slot 2 and slot 4, the card in slot 2 will be logical SCSI card 0, and the card in slot 4 will be logical SCSI card 1.

ASPIIgnore

Use this setting to make the ASPI drivers ignore a device on the SCSI bus. You need to do this if the device is being driven by RISC OS drivers, e.g. your hard disk. Do not set ignore for the SCSI card itself (usually device 7).

ASPIReserve

Use this setting to make the ASPI drivers reserve a device ID for its exclusive use.

ASPIReserveForce

Similar to ASPIReserve, except it overrides any Reserve commands issued by other drivers.

Manually Setting ASPIIgnore

Shift double-click your !PC to open the application directory. Load the Config text file into your favourite editor. Depending upon whether the line is already present or not, you need to insert / modify a line of the form

ASPIIgnore <n>,

where <n> is a decimal value. Basically, the idea of ASPIIgnore is to mask out all devices that you don't want visible to the ASPI drivers under DOS (See above). Note that the Host Adaptor (ie SCSI card must be visible, (i.e. not ignored). In order to do this, you need to set the corresponding bits for the device IDs you want to mask out. For example, say you have the following setup:

RISC OS Hard Drive
ID 0
Accessed by RISC OS
DOS Format Hard Drive
ID 2
To be accessed by ASPI Drivers
SCSI CD-ROM
ID 4
Driven By RIS OS Drivers & HPC_CD.SYS
Scanner
ID 6
To be accessed by ASPI Drivers

In this case, you will want to mask out SCSI IDs 0 and 4. This is because they are being driven by RISCOS, so the ASPI Drivers are not needed on these devices. Hence you need to set bits 0 and 4, corresponding to decimal values of 1 and 16 (2^0=1 and 2^4=16). Adding these values together gives 17. This is what your ASPIIgnore setting should be, i.e. Config should contain the following line:

ASPIIgnore 17

Manually Setting ASPIReserve

This is done in a similar way to ASPIIgnore, except the line you are modifying is of the form:

ASPIReserve <n>

Manually Setting ASPIReserveForce

This is done in a similar way to ASPIIgnore, except the line you are modifying is of the form:

ASPIReserveForce <n>

Manually Setting ASPIBuffer

ASPIBuffer is used to overcome a memory management problem. Setting it to a value of 0 is OK in most cases, and allows the driver to use it's normal size of 16K. However, in some cases, it will be necessary to confine this buffer to 4K. This is done by setting ASPIBuffer to 1, i.e. a line of the form:

ASPIBuffer 1

Compatibility

SCSI Cards

The following SCSI Cards are known to work:

Scanners

The following scanners are known to work:

Removable Drives

The following removable drives are known to work:

*See problems section for issues concerning these drives

CD Writers

The following CD writers are known to work:

Known Problems

Debugging

IF things are not working then you can collect debugging info by replacing the ARMASPI module with ARMASPI_D. This is functionally identical to ARMASPI, but has the additional feature to create a binary file with informations for debugging purposes. The output can now be directed to any file, by giving the variable 'ASPI$DebugFile' the full path and file name. If the module cannot find the vari- able it uses the default name 'RAM::RamDisc0.$.ASPIData' as in older versions.

To use it copy it into the !PC directory and change the line in !PC.!Run that RMLoads ARMASPI to load ARMASPI_D instead. Also set the ASPI$DebugFile variable to specify the name & position of the output. If the module cannot find the variable it uses the default name 'RAM::RamDisc0.$.ASPIData'.

Once you have generated a debug file you can quit !PC and run ASPI_DDD in a task window. It will load the binary output file and print the data, block by block, in a readable form. In line 40 there is a switch called 'Skip_SS_NO_DEVICE%'. By default it is set to FALSE. If you change it to TRUE, the program will skip all ASPI blocks, with the result 'SS_NO_DEVICE'. With some software you will get a considerable reduction of the size of the readable output, by setting this switch.