BeebSCSI User Guide

General information

Overview

BeebSCSI 7 is the result of a long running project to emulate the original BBC Domesday Laser Video Disc system. Both Acorn ADFS (hard drive and floppy drive support) and VFS (LV-DOS Laser Video support) provide a 256-byte sector SCSI-1 disc filing system for the 8-bit range of BBC Micros including both the BBC Micro Model B and the BBC Master range.

The BeebSCSI Logo

Originally Acorn provided a SCSI solution based on 3 individual parts: The Acorn SCSI host adapter, the Adaptec ACB-4000 SCSI adapter and a physical MFM hard disc (a ‘Winchester drive’). Later, as part of the Domesday project (in 1986), this was extended to include the AIV SCSI Host Adapter (designed to be connected internally to a BBC Master Turbo) and the Philips VP415 LaserVision laser disc player with SCSI-1 support.

BeebSCSI 7 is a credit-card sized board that provides a single-chip implementation of the host adapter board (both original and AIV) using a modern CPLD (Complex Programmable Logic Device). In addition, an AVR Microcontroller provides a complete SCSI-1 emulation including the vendor specific video control commands of the VP415.

Rather than using a physical hard drive, BeebSCSI uses a single Micro SD card to provide up to >64Gbytes of storage with support for either 4 (ADFS) or 8 (VFS) virtual hard drives (or ‘LUNs’) per card. In addition, in the BBC Master, two BeebSCSI devices can be attached, one internal and one external, providing 12 SCSI LUNs (hard drive images) simultaneously.

BeebSCSI Prototype board

Importantly BeebSCSI emulates the original Winchester-based hard drive solution accurately; this means that a completely stock BBC Micro (with ADFS) or BBC Master can use BeebSCSI with absolutely no modification necessary to either the hardware or software. In addition, BeebSCSI achieves read speeds of around 70Kbytes/sec, providing lightning-fast load times even for very large files.

Features

Open-source and open-hardware

BeebSCSI 7 is completely open hardware and software and uses a combination of GNU GPLv3 and Creative Commons licensing to ensure it will always remain free and open. You are welcome to modify, enhance, study and add to the electronics design, the CPLD code and the AVR code. A complete set of circuit schematics is available along with the PCB designs and this document aims to describe the overall design and functionality of BeebSCSI to make modifications and enhancements as easy as possible.

FAT FS based Micro SD Card

Unlike other ‘modern’ storage solutions for Acorn computers, BeebSCSI supports a FAT FS layer between the SCSI emulation and the SD card. This means that all SCSI LUN images are stored in FAT compatible files. An SD card can be simply removed from BeebSCSI and inserted into any modern Linux or Windows machine for reading and writing; No additional software is required. This allows easy exchange of LUN images for both backup and use of LUNs with emulators such as BeebEm.

BeebSCSI also supports on-the-fly exchange of SD cards. Cards can be swapped whilst the host is running and a simple CTRL-Break on the host computer makes the new LUN images immediately available (or a *BYE followed by a *MOUNT if you don’t want to reboot).

BeebSCSI supports both FAT32 and exFAT standards allowing a wide range of SD card sizes to be used from small 2Gb cards to cards >32Gb.

Advanced SCSI tracing and debugging

BeebSCSI includes a serial output port (5V TTL) that is compatible with Arduino-style serial to USB converter boards that allows BeebSCSI to provide extensive amounts of information about the SCSI activity. An on-the-fly debug configuration allows the user to configure the debug output from the host computer using the Acorn OS built-in *FX commands. BeebSCSI provides full traceability of all SCSI interactions including hexadecimal and ASCII sector dumps for both read and write operations.

This functionality allows BeebSCSI to be used to analyse host software and understand the interactions towards the storage device. In addition, BeebSCSI provides analysis of the Philips VP415 F-Codes showing the interaction between AIV software (such as Domesday) and the video functionality of the Laser Video Disc player.

Fast read and write performance

BeebSCSI is a tailor-made solution for the Acorn range of 8-bit computers and is optimised for the ADFS implementation of SCSI-1. BeebSCSI achieves read performance in the range of 3 times faster than existing CF card-based IDE solutions. BeebSCSI can achieve 80 Kbytes/second read speeds and 48 Kbytes/second write speeds on a standard BBC Model B computer.

JTAG programming

Both the AVR Microcontroller and the Xilinx CPLD can be freely reprogrammed using dedicated JTAG headers on the BeebSCSI PCB. JTAG also allows for more in-depth debugging and tracing when developing both Verilog and C code.

1 MHz bus termination

BeebSCSI provides bus termination in accordance to the Acorn 1 MHz bus application note. This means that BeebSCSI can act either standalone or as the last part of a daisy-chain of devices. Due to size constraints, BeebSCSI does not provide a 1 MHz bus pass-through connector. If multiple bus devices are required BeebSCSI can be either connected as the last device in a chain or a cable with multiple connectors can be used.

VP415 F-Code support

BeebSCSI can act as part of a wider Domesday emulation system. BeebSCSI (when configured internally on a BBC Master Turbo) supports both F-Code reading and writing as implemented in the Group 6 SCSI commands of the VP415. BeebSCSI provides bidirectional serial input and output of F-Code commands and responses, performing the necessary SCSI actions to receive and transmit F-codes to and from the host computer.

Low power consumption

BeebSCSI typically consumes around 130mA of power at 5V. This makes it suitable for both external power supplies as well as being powered directly from the host computer’s power supply.

BeebSCSI history

The BeebSCSI project was started in July 2016 as part of an overall effort to produce a cost-effective and open version of the BBC Domesday system. The BBC Domesday system uses custom Laser Video Discs that combine data and analogue video, sound and pictures. The Philips VP415 LaserVision player was specifically designed for Domesday and provided ‘LV-DOS’ that allowed an Acorn ADFS partition to be included on the disc.

Previous Domesday emulation projects have either relied entirely on emulation (such as the CAMiLEON project) or, as in the case of the BBC Domesday reloaded project, presented the Domesday information as part of an HTML based web-site. The CAMiLEON project was partially successful, however as a closed-source project, all the results we effectively lost when the project team disbanded. The BBC Domesday reloaded project provides access to some of the Domesday information, however it does not recreate the experience of using Domesday as it was originally designed.

Whilst certain parts of the Domesday system (such as the discs, VP415 and AIV board) are difficult to acquire, other parts of the system (such as the Master 128 itself) are readily available. Therefore, the intent of the author was to use as much of the original hardware as possible (such as the BBC Master and the 65C102 co-processor card) whilst replacing the additional physical hardware (i.e. the VP415 and Acorn AIV SCSI Host Adapter). For compatibility, it was also desirable to use the original ROM software such as ADFS and VFS to ensure that the original AIV software would run without alteration.

Although there are several IDE-based storage solutions for the Acorn 8-bit range of computers, LV-DOS relies on vendor specific SCSI commands to control the VP415, so the idea of a microcontroller based SCSI emulation for the VP415 was born. The requirements for BeebSCSI rapidly grew from a pure VFS based implementation to cover all the ADFS functionality thus making BeebSCSI a perfect storage solution for Acorn retro enthusiasts.

In addition, the original logic IC-based host adapter hardware implementation was replaced by programmable logic, firstly using GAL chips and later as a single chip CPLD Verilog implementation. Allowing the board space and overall component count of BeebSCSI to be greatly reduced. Overall, there have been 7 major revisions of the BeebSCSI design – hence BeebSCSI 7.

Using BeebSCSI as an ADFS SCSI Hard drive

Preparing an SD Card for use with BeebSCSI

To prepare an SD Card for use with BeebSCSI you will require the following:

  • A BBC Microcomputer/Master with BeebSCSI connected to the external 1 MHz bus
  • ADFS ROM – This must be the original ADFS ROM (not a patched IDE version!)
  • Superform on ADFS floppy (either 5.25” or 3.5” depending on your floppy drive)
  • A floppy drive suitable for reading the Superform disc
  • A FAT32 or exFAT formatted Micro SD Card (you will need a minimum of 2Gbytes of free space on the card for all 4 supported LUNs). Note that 4x512Mbyte LUNs will not fit on a 2Gbyte SD card due to the FAT filesystem overheads. A 4Gbyte card is recommended.

Insert a FAT32 or exFAT formatted Micro SD Card into the card socket on the BeebSCSI board and power up BeebSCSI and the host computer.

If the host computer is a BBC Micro the BeebSCSI board will be automatically detected. For a BBC Master ensure that the following configurations are performed (these commands assume a standard MOS image with ADFS in ROM slot 13):

 *CONFIGURE FILE 13
 *CONFIGURE HARD
 *CONFIGURE NOBOOT
 *CONFIGURE NODIR

Once configured the BBC Master should be reset with a CTRL-BREAK.

Now enter the following command:

*.

This should cause the BeebSCSI status LED to flash and, after a short delay, the computer should report an error such as:

Disc Error 2C at :0/000000

This indicates that the host can talk to the SCSI device, but the SCSI device is returning an error (since no LUNs are currently available).

Now insert the ADFS floppy containing Superform into your floppy drive and mount it and load Superform:

*MOUNT 4
 CHAIN “SUPERFORM”

If successful, you should see the main Superform screen as shown in the following screenshot:

Superform: main screen

Now press C to change drive and enter N when prompted (to change drive number only). Superform will prompt you to enter the geometry of the drive. It is recommended that you use the following geometry (unless you know what you are doing!):

  • Heads = 16
  • Cylinders = 3971
  • Step rate code = 1
  • RWCC = 128
  • Landing zone = 0

This specifies a drive with 511.9 Mbytes of space (536,752,128 bytes or 2,096,688 sectors) which is just below the maximum supported size of 512 Mbytes. Once complete you should be returned to the ‘Action:’ prompt as shown in the following screenshot:

Superform: change drive geometry

Now you are ready to format the drive (which takes BeebSCSI only a few seconds!). Press F and enter ‘Yes’ when prompted, then hit return for the default fill pattern. Superform will perform a series of actions to format the drive and then return you to the ‘Action:’ prompt as shown in the following screenshot:

Superform: Formatting complete

At this point you can enter Q to quit and then CTRL-BREAK the host. The new SCSI LUN should now be available. To test it enter the following commands:

*.

*FREE

Your screen should look similar to the following screenshot:

Testing a newly formatted LUN

As can be seen, Superform automatically copies itself to a newly formatted LUN. To format the other LUNs (1, 2 and 3 under ADFS) simply reload the Superform program and use the C command to change LUNs before performing the same procedure as before. Superform can be loaded using the following commands:

*DIR FORMAT

CHAIN “SUPERFORM”

Once you have finished formatting the LUNs you can remove the Micro SD Card and insert it into a Windows PC card reader to see how BeebSCSI has organised your LUN images (you can even copy the LUN images over to BeebEm and boot them as BeebSCSI images are compatible with BeebEm’s SCSI support). In the top-level directory of the card you should see a directory called “BeebSCSI0”:

Top level directory of a BeebSCSI Micro SD Card

Opening the directory will show the individual LUN images (DAT files) and the corresponding LUN descriptor files (DSC) that describe the formatted geometry of the drive:

BeebSCSI LUN images and descriptors

Note that the time-stamps of the files created by BeebSCSI will always read 9th April 2016; this is due to the fact that BeebSCSI does not have a real-time clock and cannot write the actual time of file creation.

You can now copy over the LUN images to BeebEm and use the emulator to load floppy drive images (or other hard drive images) to copy files, games and the like over to your BeebSCSI LUNs. Once done simply copy the LUN images back to the SD Card (in the BeebSCSI0 directory) and place the SD card back in the BeebSCSI board. After a CTRL-BREAK your new LUNs will be available from the host computer as real SCSI drives. You can also use the closed-source ADFS explorer utility to add files to the LUN images if required.

Since BeebSCSI is completely compatible with the original Acorn ADFS there is nothing new for you to learn; all other BeebSCSI functions are accessed using the normal ADFS commands. If you wish to have multiple SD Cards (for example, to have LUN image sets for different purposes) then it’s a good idea to type *BYE before swapping cards (this ensures you don’t remove a card during a write operation). Then you simply swap the card and *MOUNT the required LUN (a CTRL-BREAK is generally recommended, but not required).

Physical mounting of a BeebSCSI board

Overview

The BeebSCSI board is designed to be both internally and externally mounted. The two mounting holes in the PCB align with the screw holes inside a BBC Master where the original AIV SCSI board was located.

BBC Master Turbo with two BeebSCSI Prototype boards

External mounting

For external mounting, it is recommended that the board is placed inside a small plastic box and held in place using self-adhesive mounting stands as used for motherboards and other types of circuits. For general use, it is possible to seal the PCB in a box (enclosing the PCB and the SD card) as there is no need to change SD cards for normal use. If you intend to regularly swap SD cards, it’s better to leave the top part of the plastic case off.

Internal mounting

For internal mounting simply align the BeebSCSI PCB with the internal screw holes of the BBC Master and fix in place with two screws. To connect the BeebSCSI board to the internal bus you will require the optional internal bus adapter board which connects directly to the BeebSCSI 1 MHz IDC connector and provides a 20 pin SIL connection to the BBC Master’s motherboard (this adapter is described in the BeebSCSI Hardware Guide).

You can also connect an internally mounted BeebSCSI board to the external 1 MHz bus connector by routing an appropriate length ribbon cable under the Master’s PCB. This is also possible in the BBC Micro by mounting the BeebSCSI board to the underside of the top part of the case and routing a ribbon cable under the motherboard.

Internal mounted BeebSCSI connected to the external 1 MHz bus

File read and write speeds

Overview

BeebSCSI provides extremely fast read and write speeds (considering the host hardware is from the 1980’s!). This section shows the measured speeds of BeebSCSI on various Acorn hardware with and without a second 6502 processor installed.

The speed test was performed using a simple BASIC program running in screen mode 7 (teletext); whilst there are ways to measure just the read or write part of the overall operation such tests do not give a practical measurement of the device in real day-to-day usage.

The BBC BASIC program used is as follows:

   10 REM ****************************************
    20 REM ** Simple Read and Write speed tester **
    30 REM ** Simon Inns 20161123                **
    40 REM ****************************************
    50 :
    60 PRINT "Writing..."
    70 TIME = 0
    80 *SAVE FILE16 2000 + 4000
    90 PRINT TIME
   100 :
   110 PRINT "Reading..."
   120 TIME = 0
   130 OSCLI "LOAD FILE16 2000"
   140 PRINT TIME
   150 GOTO 60

As can be seen from the code, the program simply writes 16K of RAM to the disc and then reads it back; the BBC BASIC TIME command is used to measure the amount of time the *SAVE and *LOAD commands use to execute. The result of the TIME command is the execution time in hundredths of a second.

Results

Host Co-processor Read Write
BBC Master 128 None 23 (70Kbytes/sec) 34 (47Kbytes/sec)
BBC Master 128 65C102 internal 28 (57Kbytes/sec) 38 (42Kbytes/sec)
BBC Model B None 20 (80Kbytes/sec) 33 (48Kbytes/sec)
BBC Model B 6502 25 (64Kbytes/sec) 38 (42Kbytes/sec)

These results were from BeebSCSI 7 using a Sandisk Ultra (class 10) 8 Gbyte SDHC card.