André's 8-bit Pages  Projects  Code  Resources  Tools  Forum

SCSI-64: SCSI controller for the C64 and other 6502

This is the description of several SCSI controllers for the Commodore C64 computer. Some of them may be used with a VIC20 or C128 as well. All of the controllers are based on one hardware interface that is built into different setups.


Description

After going a bit into the SCSI standard first I present the generic interface. (You can download a slightly older page and all schematics in one archive in scsi64-1.tar.gz. The link to the SCSI standard below is missing).

The driver code is made in a modular way. It consist of the hardware driver and the partition handler. Both are separated by a well-formed programming interface, as well as the partition handler presents a nice interface to the filesystem code. This architecture is presented in the second part.

The different hardware projects using the generic SCSI interface are described in the third chapter. Those include a SCSI interface directly for the C64, as well as disk-drive-like small computers that can be used via the C64s serial IEC bus.


Disclaimer

Before you go on, you should know that all this stuff comes with no warranty at all . Of course this hardware is not to be used in any important or even life-critical systems. The hardware schematics and software are provided 'AS IS', WITHOUT WARRANTY of any kind. The entire risk as to the quality and performance of the hard- and software is with you. Should the hard- or software prove defective, you assume the cost of all necessary servicing, repair or correction.

Distribution

This computer system is distributed under the GNU Public License V2.


SCSI Standard

SCSI means "Small Computer System Interface". It is an interface that connectes computers with peripheral devices, like disks, scanners, CD-ROMs etc. As such it is very flexible.

More on the SCSI standard can be found on its SCSI page on this site.


Generic 6502 SCSI Interface

In my SCSI interfaces and devices for the Commodore computers I use a generic 6502 SCSI interface I developed for the CS/A65 computer. The SCSI interface has its own place there.

This interface has been designed for the CS/A65 bus system. However, this bus system basically is the 6502 bus. In fact, besides the /IOSEL line only 6502 CPU lines are used./IOSEL selects the I/O area and is generated from the address lines in the usual way. This means that the interface can be used on a variety of systems, and it is used on selfbuilt computers as well as the C64, as will be seen below. The 6809 has the same bus interface as the 6502, so it could even be used with this CPU (although no drivers exist for the 6809).


Software Architecture

The software architecture is kept as flexible as possible. Three levels work together, the hardware driver, the partition level that transforms block numbers in a partition into block numbers in the device, and the third level which is the filesystem code.

An implementation of the drivers can be found in the GeckOS operating system. A description comes with the description of the CS/A65 SCSI interface.

The most recent SCSI drivers can be found in the GeckOS/A65 operating system. An example of a filesystem implementation can be found in oa-2.0.8/sysapps/fs/fsibm*, that implement a fileserver task for the GeckOS/A65 operating system. It handles PC-style disks with the FAT12 or FAT16 filesystem (no FAT32 and no long filenames). But be warned, it is an early beta!!! Don't ever try it on a disk that contains anything valuable to you!!!


Hardware projects

Now I will describe the different approaches to use the generic SCSI interface in a Commodore system, more specifically with a C64 or C128.

Return to Homepage