Friday, May 25, 2012

The CFFA1 CompactFlash Interface for Apple 1

The CFFA1  is a Compact Flash Interface for Apple1 computer and compatibles like the Replica 1. It was designed and sold by Rick Dreher. It provides flash filesystem storage of up to 32MB. This is actually quite a lot -- the equivalent of over 200 floppy disks of the Apple II era.

It has 8K of on-board firmware in EEPROM which can be write enabled for updates. It has 32KB of RAM which can be used for expanding the system memory (on Apple 1 and clones that only have 4K) and for the buffer storage of saved and loaded files.

It uses the Apple ProDOS file system so it is compatible with Apple II systems. There is a menu system in firmware that lets you load, save, list directories, delete and rename files, etc. If you don't have an Apple II system there is a Windows program called Cider Press that can access the ProDOS file system on the CF card.

It uses removable CF flash memory cards which are commonly supported by some laptops and most USB card readers.

There is also a version of the card for Apple II computers.

The CFFA1 Card

There is one big problem with the CFFA1 - you can't get your hands one until and unless Rick does another run of boards or someone sells a used one to you. There may be a run this summer. I was fortunate to acquire one from someone who had one they didn't need.

Mine worked very well in my Replica 1. I had two old CF cards around and both of them worked. It worked flawlessly even on my system which is clocked at 2 MHz and has a 65C02.

I noticed one quirk. The command to format a CD card from the firmware menu is Control-F. The Replica 1 Propeller chip keyboard firmware (at least the one I am running) doesn't pass Control-F from the keyboard, so the command was not recognized. Using the serial port I was able to send Control-F. This is not a fault of the CFFA1. In fact it is trivial to map this to just "F" if you wanted to change the firmware (all the source code is included on CD).

I was also able to run the Cider Press program on Windows and access the SD cards through a USB reader.

CFFA1 Firmware Menu

A disk image for the CFFA1 called the "Ultimate Apple 1 software collection" was recently put together by nama_chari and reported on the Apple Fritter forums. It contains every piece of Apple 1 software he could find. It is a great way to get your hands on a lot of software and quickly load it up and try it. The image can currently be found here, although the location may change.

There are a few enhancements I would like to see to make the CFFA1 even better:

The CF format is pretty much obsolete. Newer formats are SD or micro SD. There are adaptors so that SD and micro SD can git in a CF slot, but if the hardware was refreshed it would be nice to use the smaller cards.

You can't use more than the first 32MB of the flash card. This a limitation of the ProDOS file system. It could support multiple 32MB volumes. In fact there are some hacks around to partially support this. 32 MB is a lot though. The archive of every known Apple 1 program is not even close to filling a 32MB drive.

You can't directly run programs from the menus, so you need to exit either to the Woz Mon or BASIC. It would be nice to be able to do this from the menus (maybe I will look at enhancing it to do this).

While it stores the load address and length of a program, it doesn't store the start address. For programs where the start address is not the load address, it is a pain because you need to remember the address. One option is to follow a convention of putting it in the filename.

It supports directories but currently only one level. It would be a nice enhancement to support multiple levels of directories but probably not very critical on an Apple 1 system.

I don't have an Apple II and don't have a need for ProDOS interoperability. I'd prefer to see the CD card use a standard FAT filesystem that I could read on a Mac, Windows, or Linux system.

There is integration with Applesoft Lite. It supports the CFFA1 card, if present, in it's SAVE and LOAD commands. I modified my port of Enhanced BASIC  to call the CFFA1 menu program when SAVE and LOAD commands are run. Better integration could be done in the future, i.e. passing a filename directly to the CFFA1 APIs.

I also added a command to my JMON machine language monitor program to call the CFFA1 menu, if a card is present.

In summary, the CFFA1 is a great accessory for the Replica 1 or Apple 1, and reduces the reliance on an external computer to load and save files.


Unknown said...

The CFFA image can now be found here:

Win said...

Jeff. Do you recall how you got AppleSoft to work with the CFFA1? I cannot seem to get save to work. I have not tried load yet. Thanks