Amiga Foreverby Cloanto
 
HomeProducts
 
 
TITLE

Support for Amiga SCSI and Block-Type Devices on Windows

 

TOPIC

Q: Can an Amiga hard disk partition (SCSI, IDE, USB, etc.) be mounted directly in the emulation? Is it possible to also access Amiga SCSI devices such as ZIP drives, tape drives and scanners?

 

DISCUSSION

Overview

Amiga Forever 2005 and higher include support for SCSI both in the WinUAE emulation component and as part of the tools which are preinstalled in the Workbench environment.

The procedures described here are fully supported only on Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008, using WinUAE 1.1.1 and higher. Support for Windows 2000 is limited in some cases, reflecting system API limitations. SCSI and the other low-level device access interfaces and procedures described here are not supported in WinFellow.

Special thanks to Toni Wilen for assisting in the preparation of this document.

Important: Because Amiga SCSI devices and media are generally quite old, we recommend that you copy your Amiga data to new storage media as soon as you are able to access it. If possible, prepare the required interface and software first, and then switch on your legacy hardware only once, and immediately proceed with the transfer.

SCSI Devices and IDs (Units)

From within the operating system as preinstalled in Amiga Forever you have the option to use one of two devices:

  • uaehf.device (for hardfiles, "real" hard disks and other block-type devices);
  • uaescsi.device (optimized both for SCSI and for CD-ROM-like hardware, e.g. CD-ROM and DVD devices, ZIP drives, tape drives, SCSI pass-through, etc.)

uaehf.device uses IOCTL functionality (see below), and does not require SPTI or ASPI. It provides limited emulation of SCSI commands, e.g. for HDToolBox and similar system tools, for mounting devices and for booting from them, and to support file systems and partitions, in a way similar to the boot ROMs that are included with Amiga SCSI controllers.

uaescsi.device uses either SPTI (Windows 2000, Windows XP and higher) or ASPI functionality (Windows 98 and Windows Me), depending on the version of Windows and the installed software (see below).

Because the emulation needs to merge and support units from different access interfaces, SCSI ID (unit) numbers inside the Amiga environment have no relationship with "real" device ID or unit numbers. In particular, uaescsi.device unit numbers 0 and 1 are reserved (and automatically remapped, if necessary) to the first two CD-ROM/DVD type devices.

Emulation Settings

If you determine that you need to use uaescsi.device:

  • Make sure that the "UAE scsi.device" option is enabled in the WinUAE settings.

Furthermore, if you are using a non-disk, non-CD device, keep in mind that:

  • If SPTI functionality is not available on Windows, the "Use ASPI SCSI layer" WinUAE option must be set (otherwise only hard disks and CD/DVD drives are supported);
  • By default, uaescsi.device as implemented in WinUAE up to version 1.0 does not automatically mount all types of devices. For example, it will mount a CD drive, but it will not mount a scanner. If your device does not appear to be recognized, then you must force-enable detection of all SCSI devices by using the "-noaspifiltering" WinUAE command line option. This is not necessary in WinUAE 1.1 and higher.

As a general rule, in order to avoid accidental access and corruption of non-Amiga data, the emulation (WinUAE) will only mount disks that are recognized as either being empty or having Amiga-formatted content. This means that by default it is not possible to mount PC-formatted disks, or disks formatted under custom Amiga partition schemes, such as those developed before the release of the Amiga Rigid Disk Block specification, or RDB/RDSK. This behavior can be overridden by starting WinUAE.exe with the -disableharddrivesafetytest command line option. If the drives have a PC file system (e.g. FAT or NTFS) they can also be mounted as mapped drives or directories in the emulation, provided that they are accessible by the Windows side.

Amiga Settings

All Amiga programs that support SCSI peripherals have one ore more configuration parameters (ToolType, command line option, etc.) that need to be set to the proper device name and unit number. So be sure to set the correct device name ("uaehf.device" or "uaescsi.device") and unit number.

Within the Workbench 3.X environment of Amiga Forever you can use the "FindDevice" tool (in "Work:Software/IDEfix97") to verify that a device has been recognized, and to obtain the unit number as it has been mapped within the emulation environment. The WinUAE log file, if enabled, also lists the unit numbers that have been assigned to recognized devices.

Windows IOCTL Support

The virtual uaehf.device device which is part of the Amiga emulation uses the Windows IOCTL (I/O Control Code) software interface to provide access to devices. IOCTL is supported on Windows 2000, Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008. It only supports block-type devices like hard disks, including USB storage media, flash memory disks, etc.

As a rule of thumb, if Windows detects such a device and allows you to configure it in Disk Management (found under Storage, in Computer Management), WinUAE can use it via uaehf.device.

This functionality requires administrator privileges.

Windows SPTI and ASPI Support

The virtual uaescsi.device device which is part of the Amiga emulation uses either the Windows SPTI (SCSI Pass Through Interface) or the Windows ASPI (Advanced SCSI Programming Interface) software interface to provide access to devices. ASPI is included by Microsoft in Windows 95, Windows 98, and Windows Me. ASPI is not directly supported by Microsoft on Windows NT and newer versions of Windows, where it has been replaced by the newer SPTI. In order to maintain compatibility with different versions of Windows the Amiga emulation software can use either SPTI or ASPI.

In order to use ASPI on Windows 2000, Windows XP, Windows Server 2003, Windows Vista and Windows Server 2008 you may need to install a third-party ASPI component. This software is made available (often for free download, or as part of evaluation versions of their software) by companies like Nero and Adaptec. If you have a recordable CD or DVD writer mounted in your system then you most likely already have such software installed.

It has been reported that the software by Nero is more compatible than the one by Adaptec when used with CD-like devices and hard drives. Apparently however the Nero software may not support certain other devices, such as scanners.

In WinUAE 1.0 and higher, the ASPI software is detected automatically. In previous versions of WinUAE you may need to copy the ASPI DLL file (e.g. "wnaspi.dll") to the WinUAE program directory. SPTI is only supported in WinUAE 1.1.1 and higher.

Another Approach: Using Disk Images

Software like WinImage (on Windows) can be used to create a low-level image of any disk. This image can then in turn be mounted by the emulation as a hardfile (set the Surfaces, Reserved and Sectors settings to 0). This procedure supports different types of media (hard disks, ZIP, etc.), and does not require that the host operating system have an Amiga file system.

We have seen cases of Amiga partitions transferred by WinImage where the high and low bytes were swapped (e.g. the "RDSK" header had become "DRKS"). This can be corrected with a good hex editor, after which the partitions can be mounted by WinUAE.

Windows 2000: Details about Limited Functionality

Under Windows 2000 WinUAE has limited access to the exact hard disk configuration. In particular, it can only get generic information about the hard drive geometry, which is usually not enough to calculate the total disk size up to the exact end of the disk. This means that when reading Amiga disk partitions formatted using the FFS or OFS file systems some errors may occur when reading or writing the last few blocks. Similarly, partitions formatted using the SFS file system cannot be mounted at all, because SFS places crucial information in the last block of a partition.

Beginning with version 0.9.92 WinUAE started supporting the new IOCTL_DISK_GET_LENGTH_INFO functionality first introduced in Windows XP, and also available in Windows Server 2003, Windows Vista and Windows Server 2008, which makes it possible to obtain the exact disk size, overcoming the above limitations.

If you need to transfer partition data from the Amiga to a Windows 2000 PC you can consider using Amiga Explorer.

Additional Information

Also see:

  • 3-132 - System Configuration Import Checklist
  • 3-156 - Host File System vs. Hardfiles
  • 3-108 - Transferring Software from Amiga to PC
  • 3-109 - Reading Amiga Non-Floppy Media on PC
  • 3-118 - Reading Amiga Floppy Disks on PC

 

Article Information
Article ID:5-113
Platform:Windows
Products:Amiga Forever
Additional Keywords:syquest 
Last Update:2008-05-29
Your feedback is always appreciated. It is safe to link to this page.