Table of Contents
Wayne Warthen (firstname.lastname@example.org)
Firmware Version 0.6a
Updated July 5, 2015
The SCSI2IDE board is intended to provide a drop-in replacement for legacy SASI/SCSI hard disks. The board allows either and IDE or SD Card device to be presented on a SCSI bus as a SCSI hard disk. The board itself utilizes a form factor such that it can mounted in place of a standard 5.25“ SCSI hard disk. The SCSI connector and power connector are positioned exactly the same as a hard disk drive.
The S2I Firmware Project intends to produce a ROM firmware for the Prototype SCSI2IDE board. The firmware leverages much of the RomWBW work done for N8VEM. At present, the focus is purely on proving out the hardware. The firmware is now able to emulate 2 20MB LUNs or 2 1GB LUNs.
The firmware targets the SCSI-1 protocol and with backward compatibility with SASI. It is surprising that I have found my SCSI-2 controller to work reasonably well with the firmware, but the firmware is not fully SCSI-2 compliant.
The SCSI2IDE board supports storage on two devices; either IDE or SD Card. Only one storage type can used at a time and is determined by the setting of P1 jumper position 7. Note that the IDE interface is distinctly faster than the SD Card interface.
The firmware assumes your board is fully constructed and is configured as follows:
- P14: jumper bank: 3-4 & 5-6 closed for I/O base address of $80
- JP1: closed (Vcc to IDE interface)
- JP2: open (Vcc to SD Card) – you must close/short this jumper to use the SD Card for storage
- JP3: open (UART INT → CPU INT)
- JP4: open (PPIDE INT → CPU INT)
- JP5: open (SCSI IRQ → CPU INT)
- JP6: open (SCSI DRQ → CPU INT)
- JP7: open (GND → UART DCD)
- JP8: open (GND → UART RI)
- JP9: ???
- JP10: open (used for 28 pin EPROM device)
- K1: 2-3 for EEPROM write protect
- P1: config jumper bank (see below)
- P6: open (reset)
- P3: connected to serial terminal @ 38.4K baud
The P1 jumper bank is used to set the operating characteristics of the firmware. The jumper positions are defined as follows:
- 0-2: SCSI device ID in binary
- 3: Storage block size (0=512 bytes, 1=256 bytes)
- 4-5: Currently unused
- 6: Debug mode (0=off, 1=on)
- 7: Storage device (0=IDE, 1=SD)
In my testing, I am finding that the speed of the SCSI2IDE board can significantly impact compatibility. The speed of the board is determined primarily by the CPU clock speed. The board will run up to 20MHz, but you must use appropriate chips for this. Primarily, the speed rating of the CPU must be sufficient and the speed of the ROM and RAM must be sufficient. Newer (and more lenient) host controllers will work fine with SCSI2IDE running at 4MHz. However, my Future Domain TMC-860 controller fails in different ways until I get to 12MHz CPU clock speed. At this speed, I have no compatibility problems at all. For those that have followed my previous issues, increasing the SCSI2IDE board CPU speed resolved my problem with FDISK on DOS 6.22. In general, the faster you can run the SCSI2IDE board, the better. I would strongly recommend a CPU clock speed of at least 8MHz.
Three test bench environments are being used to perform basic testing:
- An Xi 8088 with an Future Domain TMC-860 controller w/ BIOS v6.01.
- A modern Windows 7 PC with an Adaptec AHA-2940AU controller.
- An Amiga 2000 using a GVP SCSI Controller Card
Using the Firmware
Download the firmware archive and extract the zip file to a convenient location.
The archive contains pre-built copies of the following ROM configurations that you can “burn and go”:
|s2i_20MX2.rom||2 LUNs of 20MB each|
|s2i_1GX2.rom||2 LUNs of 1GB each|
You should try one of the pre-built ROMs before attempting to do a custom ROM build. In most cases, one of the above will be fine and there will be no need to build a ROM.
Building the Firmware
If you want to customize the firmware, you will need to follow this build process.
A Windows build environment is assumed. XP or better (32 or 64 bit). The build process relies upon PowerShell which is included in all modern Windows distributions. If you do not have it, you can download and install it from Microsoft (free). Additionally, it is necessary for PowerShell to be configured to allow running of local unsigned scripts. If you get an error like “File …\S2I\Build.ps1 cannot be loaded because the execution of scripts is disabled on this system” when attempting to build, you can right click on FixPowerShell.cmd and select “Run as Administrator”. This will permanently correct this situation.
The assembler is included in the distribution. Launch a DOS prompt in the build directory and type “build”. You will be prompted to select a configuration to build. The result is a file called “s2i.rom”. It should be 32KB in size and you will need to burn that to your EEPROM.
Connect either an IDE device (CF card via a CF-IDE adapter is recommended) or an SD Card in the SD slot. Make sure P1, position 7 is set properly for the type of storage you have connected. Connect the SCSI port of the SCSI2IDE board to a host computer (initiator). Typically, this would be a computer with a SCSI adapter. Finally, you will need to connect power to the board via a standard floppy power connector. This power connector is the same as a normal SCSI hard disk power connector, so the host computer should already have one.
Note that the SCSI bus should be terminated at both ends. The current revision of the board (v1.0) provides a location for SIP resistors to self-terminate at the board. In actual usage, I have not needed to use termination in either of my test environments.
If you want to see diagnostic output, connect a serial terminal to the serial port (a null modem cable is required if using a PC as your serial terminal). Configure your terminal or communications program for no flow control and 38.4K baud. It is NOT necessary to have the diagnostic output in normal operation, but it is very helpful is determining the source of any problems you have.
Apply power and press reset. If everything works and you have connected the serial terminal for diagnostic output, you should see a startup banner followed by the SCSI Target Controller startup. At this point, the board is ready to process host commands. You can access the Zapple monitor prompt by pressing the <Esc> key. From the Zapple prompt, you can invoke several routines by typing GXXXX where XXXX is the address of the routine to execute:
|G1000||Restart the Target Mode Command Processor|
|G1010||Zero the first 256 blocks of the storage device|
|G1020||Read the first block of the storage device into buffer at $FD00|
|G1030||Write the buffer at $FD00 to the first block of the storage device|
|G1040||Dump the contents of the buffer at $FD00|
Below is a sample session that shows the startup of S2I (with debug enabled). You can see the first few command/responses from a standard hard disk boot sequence.
N8VEM HBIOS v2.2 B3 (S2I-WWarthen-130218T1222) SCSI2IDE, PPIDE (STD), SD CARD Zapple V1.1 === S2I Target Command Processor V0.3B === Press <esc> for monitor Using Pseudo DMA I/O Data storage on IDE device SCSI ID=00, LUN=00 *** Bus Free *** Waiting for selection... [81:18:00:40] Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 00 00 00 00 00 00 Status: 00 . Message In: 00 . *** Bus Free *** Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 12 00 00 00 02 00 Data In: 00 00 . Status: 00 . Message In: 00 . *** Bus Free *** Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 00 00 00 00 00 00 Status: 00 . Message In: 00 . *** Bus Free *** Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 12 00 00 00 24 00 Data In: 00 00 01 01 20 00 00 00 4E 38 56 45 4D 20 20 20 . Status: 00 . Message In: 00 . *** Bus Free *** Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 25 00 00 00 00 00 00 00 00 00 Data In: 00 00 9F FF 00 00 02 00 . Status: 00 . Message In: 00 . *** Bus Free *** Waiting for selection... [03:1A:41:40] Message Out: 80 Command: 08 00 00 00 01 00 Data In: FA 33 C0 8E D0 BC 00 7C 8B F4 50 07 50 1F FB FC . Status: 00 . Message In: 00 . *** Bus Free ***
- The CPU clock speed used on the SCSI2IDE board can substantially impact compatibility with higher clock speeds achieving better compatibility. The speed you can run your SCSI2IDE CPU clock is dependent on your components.
|s2i-v0.6a.zip||1.3 MiB||2015/10/29 14:59|
|scsi2ide_v2.0-004_kicad.zip||281.4 KiB||2015/10/29 14:55|
|scsi2ide_v2_board.pdf||344.9 KiB||2015/10/29 14:55|
|scsi2ide_v2_board_bw.pdf||187.5 KiB||2015/10/29 14:55|
|scsi2ide_v2_bom.pdf||83.9 KiB||2015/10/29 14:55|
|scsi2ide_v2_bom.xlsx||16.2 KiB||2015/10/29 14:55|
|scsi2ide_v2_schematic.pdf||190.9 KiB||2015/10/29 14:55|
|scsi2ide_v2_schematic_bw.pdf||180.7 KiB||2015/10/29 14:55|
|douglas_scsi2ide_almost_assembled.jpg||2.1 MiB||2015/10/29 15:41|
|douglas_scsi2ide_prototype_fully_assembled.jpg||2.0 MiB||2015/10/29 15:41|
|scsi2ide-0111_early_photo_dwg.jpg||2.1 MiB||2015/10/29 15:42|
|scsi2ide-0111_latest_photo_dwg.jpg||2.3 MiB||2015/10/29 15:42|
|scsi2ide_prototype.jpg||1.8 MiB||2015/10/29 15:41|
|scsi2ide_v2_assembled_board.jpg||1.8 MiB||2015/10/29 15:41|
|scsi2ide_v2_board_with_cd-ide_daughter_adapter.jpg||1.9 MiB||2015/10/29 15:42|
|scsi2ide_v2_mounted.jpg||1.6 MiB||2015/10/29 15:41|