SS30C IDE Hard Disk Interface

The IDE Hard disk interface is based on a Xilinx XC9572 or XC95108.
I have used a PLCC84 package for ease of soldering and PCB design
I have provided a 40 Pin IDE connector, a 50 pin Compact Flash socket
and a DB25 connector wired up as an IBM printer port.

I've stuck with a 16 bit interface. It has been pointed out to me that the Flex operating system
can only address 16 Mbytes (256 Tracks * 256 sectors * 256 bytes) so in theory you only
need an 8 bit interface, however I'd like to be able to mount MSDOS  compatible drives
under Flex. Also I'm not sure about the cyclinder / head / sector symetry. An 8 head drive
would need 32 sectors per cylinder, which I guess is reasonable.

14th March 2002
Actually I got it wrong ... The 16 bit transfer is to read and write 512 byte sectors.
They are written and read as double bytes.

IDE Code for the HD6303 with an 8255 parallel I/O device is available from Keith Welker:
You can use this as a rough guide. With the XC9572 you should be able to do direct 16 bit
read and writes of the IDE ports rather than toggling the read/write lines via the 8255 port.

Welker Code reconstituted from the assembly listing for the 6803
6801/02/02 Cross Assembler for DOS

Welker Code reconstituted for the 6809 without optimisations
6809/6309 Cross Assembler for DOS

Other Information on IDE Interfaces

Some ideas on running virtual file systems for Flex

Files for the SS30IDE project as of March 14th 2002

SS30IDE.GIF Schematic Diagram

SS30IDE.PCB PCB file Express PCB software

Parts List - Yet to come

new icon VHDL CPLD code for SWTPC6800.

April 19th 2002 I started off with Michael Holley's Verilog code for his DC-5 but it was too much to learn in one night.
This version of the SS30IDE CPLD code assumes a Parallel I/O port with a 16 bit data port and 8 bit
control port. Another port was used as a master control register for enabling and disabling interrupts.
Its basically a simplified 8255 port and can be used on SWTPC motherboards with 4bytes per IO slot.

At one satge I had a memory map switch to select between a centronics printer port, but the XC95108
was too small for all the code.

new icon VHDL CPLD code for SWTPC6809

April 20th 2000 10:28pm AEST and I've just finished another VHDL design ...
It maps two banks of IDE registers from 0 to 7 and 8 to 15
It uses a two state flip flop on register 0 of the IDE  map.

If you access register 0, it assumes a 16 bit access and the IDE address line is latched at 0 dispite the second
read or write to register 1.

The IDE read line is strobed on the first read cycle to register 0 but not the second read cycle to register 1.
The low order bits are latched on the first read cycle and are read by the 6809 on the second read cycle.

The IDE write line is strobed on the second write after writing to register 0.
The first write cycle latches the high bytes, and the second write cycle writes the full 16 bits to the IDE disk.

If you access register 1 on its own, it will perform an 8 bit read or write, with the IDE address set to 1
which is necessary for reading the error register.

DC-5 as a Starting Point....

Michael Holley made a start on an IDE CPLD interface ... it can be located here:

I have used his SS30 PCB as a starting point.
Michael recommended using the free expess PCB software.

Michael has data sheets for the XC9572 on his web page for his SS30 Floppy disk controller.
He also has verilog code for the Xilinx Web Pack ISE software, which may be a good starting
point for coding the IDE interface.

Cf_ide.pdf Flash Memory

Oyvind Hagestuen tells me that he has managed to buy a 32Mb flash memory "cf card"
designed for use with digital cameras for about US$30. Cf_ide.pdf is a circuit for interfacing
a cf card to an IDE interface, so I will look at incorporating that into the ide interface design.

Hello !

cf stands for compact flash and it's a small card 2"x2" x0.1" (inch) thick.
the card is used in todays digtal cameras. link to sandisk they make these cards. I recently bougt a usb to compactflash reader for my pc (paid app $30). I have more information ie manufacture of compact flash holder (one is 3M).
I'm looking for a holemounted version.


Compact Flash connector information can be obtained from

Connector Information:

I have based my PCB on the Molex 50CK Low Profile CF Header
Part Number 67155-0002