Introduction

I designed this expansion board in 2019 to provide more modern support for fixed storage on QX-10 systems. Orignally the QX-10 had support for an external 10MB winchester drive using a WD1002 controller, but the expansion card and physical drive unit for those are pretty hard to find these days.

Schematic

The schematic itself is fairly straight forward using only a 3-8 decoder and a few logic gates to handle the IO decoding, plus a buffer for the address and data lines.

It uses a jumper to allow setting the base IO address to 0x80-0xF0, though currently the drivers for this expect it to reside on 0xD0. Offsets 0x00-0x07 will activate the Compact Flash’s CS1 line, while offsets 0x08-0x0F will trigger the CS2 line.

Bill of Materials
Ref Description Part
C1-C7 0.1uf Capacitor RDER71E104K0P1H03B
D1 Red LED LTL-307EE
J2 CF Adapter N7E50-7516PK-20
J3 Address Jumper 67996-416HLF
R1-R4 1k Resistor MFR-25FBF52-1K
U1 74LS138 SN74LS138N
U2 74LS04 SN74LS04N
U3 74LS32 SN74LS32N
U4 74LS08 SN74LS08N
U5 74LS245 SN74LS245N
U6 74LS541 SN74LS541N

CP/M Support

The CP/M distribution for the QX-10 already supported the WD1002 controller, however this is not entirely compatable with the modern IDE protocol. Therefore to get this to work with the QX-10 it was necessary to disassemble and modify the existing CPM2.SYS file slightly.

Since the WD1002 and IDE protocols are so similiar I was able to get the existing code to work with IDE by making the following minmal changes:

  • Remove use of seek command. This is implicit on a compact flash and frees up space for other changes.
  • Removes writes to register to disable hdd controllers when idle. The bits in this register are used for other things in IDE.
  • Set sector count register to 1. IDE requires a sector count, where as the WD1002 defaults to reading/writing just one sector.
  • Setup 8 bit mode during init routine. The IDE protocol is 16-bit by default, we need to set the 8 bit feature.
  • Waiting for DRQ bit on write. If this was not done writing failed when using IDE.
  • Update code to use LBA instead of CHS for accessing the CF card.
  • Increase partition size from 5 MB to 8 MB.
  • Change default port to use 0xD0 as its base instead of 0x80.

QX-16 MS-DOS support

I have also written a small DOS device driver that will work with MS-DOS to provide support for accessing the Compact Flash under MS-DOS on the QX-16. The driver supports up to 4 32MB primary paritions allowing drives C:, D:, E: and F:. When the driver is loaded it will only take up about 800 bytes of ram.

I also wrote a formatter to allow formatting of the parititions under DOS, this was done by writing an OEM module and linking it with the DOS 2.11 FORMAT.OBJ file provided by Microsoft. Currently however it is not possible to partition the device under DOS and the CF card most be partitioned outside the DOS environment.

There are a few limitations to this driver:

  • Only supports 32 MB partitions.
  • Only supports FAT12 partition types.
  • Does not scan extended partitions.

To load the driver simply add the following line to your config.sys file and reboot your system.

DEVICE=A:\CFIDE.SYS