compactflash.device V1.41 - PCMCIA CompactFlash driver for Amiga 600/1200. Fork of driver/media/CFD133.lha.
CHANGES IN 1.41 (18.04.2026)
============================
Driver:
This release focuses on stability and CPU compatibility improvements across
both CPU tiers (68000/68010 and 68020+).
* Read/write path streamlined: an internal cleanup in the IO code path.
* The driver now ships two CPU tiers:
68020+ (A1200 stock, 030/040/060/080 accelerators) at devs/68020/compactflash.device
68000 (stock A600) at devs/68000/compactflash.device.
* 68020+ build uses native 32-bit math
Others:
* Experimental COPYBURST build option removed (had no effect in practice)
FEATURES
========
* Supports CompactFlash, MicroDrive, and various adapters (SD, MemoryStick, SmartMedia)
* TD64 and SCSI emulation support
* Works with fat95 filesystem for FAT32 support, not excluding Amiga native
(ffs, sfs, pfs) filesystems
* Serial debug output for troubleshooting (Flags = 8)
* Transfer speeds up to 2.2 MB/s read, 1.9 MB/s write
(in multi-sector mode if firmware supports it or with Flags = 16 override)
REQUIREMENTS
============
* Amiga 600 or 1200 with PCMCIA slot (A1200 tested)
* AmigaOS 2.0 or higher (3.2.3 tested)
* "CompactFlash to PCMCIA/ATA" adapter card (see images/cf-type-1.jpg, images/cf-type-2.jpg)
or SD-to-CF adapter (see images/sd-cf-adapter.jpg)
* fat95 filesystem (disk/misc/fat95.lha) recommended
INSTALLATION
============
Two CPU tiers are included, each in full and small flavours:
68020+ (A1200 stock, 68020+ accelerators -- 030/040/060/080):
devs/68020/compactflash.device 11344 bytes debug-capable
devs/68020/compactflash.device.small 8552 bytes no debug code
68000 (stock A600):
devs/68000/compactflash.device 11480 bytes debug-capable
devs/68000/compactflash.device.small 8684 bytes no debug code
Choose based on your needs:
- Use the full version if you need serial debug output (Flags = 8)
- Use small for minimal memory footprint (rename to compactflash.device)
Steps:
1. Copy the driver for your CPU tier to DEVS:
- A1200 + accelerators: devs/68020/compactflash.device
- Stock A600: devs/68000/compactflash.device
(or the .small variant renamed to compactflash.device)
2. Copy c/CFInfo to C: (optional, card info utility)
3. Have fat95 installed on your system
4. Mount the drive by double-clicking devs/CF0
For OS 3.5+:
Copy def_CF0.info to sys:prefs/env-archive/sys and env:sys
MOUNT FLAGS
===========
Set in CF0 mountlist (can be combined, e.g. Flags = 24 for debug + enforce):
Flags = 0 /* default */
Flags = 1 /* "cfd first" hack for PCMCIA conflicts with other drivers */
Flags = 2 /* unused - was "skip invalid PCMCIA signature" (v1.37+) */
Flags = 4 /* use CardResource API instead of direct chipset access */
Flags = 8 /* output init messages to serial port at 9600 baud (v1.35+ full build) */
Flags = 16 /* force 256 sector transfers regardless of card capability (v1.35+) */
Flags = 32 /* skip multi-sector override auto-detection, use firmware value (v1.37+) */
SERIAL DEBUG EXAMPLE
====================
With Flags = 8, connect serial cable and monitor at 9600 baud. The first
line is a version banner that identifies the driver version and CPU tier
([68020] or [68000]):
[CFD] compactflash.device 1.41 (17.04.2026) [68020]
[CFD] Card inserted
[CFD] Identifying card...
[CFD] Reset
[CFD] Configuring HBA
[CFD] ..done
[CFD] Setting voltage
[CFD] Voltage: 5V
[CFD] CIS gate
[CFD] ..DEVICE: type=0x0D speed=720ns size=0x00000000
[CFD] ..FUNCID: missing (compat)
(or: [CFD] ..FUNCID: 0x04)
[CFD] ..RESULT: accept
[CFD] ..CONFIG: addr=0x00000200
(or: [CFD] ..CONFIG: default (0x200))
[CFD] RW test
[CFD] ..done, transfer mode: WORD
[CFD] Getting IDE ID
[CFD] ..done
Model: TS4GCF133...............................
Serial: G68120052383AC0700C7
FW: 20110407
Max Multi (W47): 8001
Capabilities (W49): 0200
Multi Setting (W59): 0100
LBA Sectors (W60-61): 00777E70
DMA Modes (W63): 0000
PIO Modes (W64): 0003
UDMA Modes (W88): 0000
[CFD] IDENTIFY (raw):
W0: 848A 1E59 0000 0010 0000 0240 003F 0077
W8: 7E70 0000 4736 3831 3230 3035 3233 3833
W16: 4143 3037 3030 4337 0002 0002 0004 3230
W24: 3131 3034 3037 5453 3447 4346 3133 3320
W32: 2020 2020 2020 2020 2020 2020 2020 2020
W40: 2020 2020 2020 2020 2020 2020 2020 8001
...
W248: 0000 0000 0000 0000 0000 0000 0000 0000
[CFD] Init multi mode
[CFD] ..max multi: 1
[CFD] ..set multi: 1, OK
[CFD] ..override test: OK
[CFD] ..done, multi RW: 256
[CFD] Card identified OK
[CFD] Notify clients
[CFD] Card removed
ENFORCE MULTI MODE (FLAG 16)
============================
Forces 256 sector reads/writes per IO regardless of card firmware
support to improve IO performance. Same behaviour as v1.33 and
earlier versions.
WARNING: Verify your card is capable before using for real data!
Set the flag and read any text file from CF card. The content should
not contain repeating 32-byte pattern after first 512 bytes.
See images/multimode-issue.jpg for example of broken output.
NOTE: Since v1.37, the driver auto-detects multi-sector override
capability and enables 256 sector mode when safe. This flag is now
only needed as a manual override if auto-detection fails.
Can be combined with MaxTransfer to limit sectors per IO:
Flags = 16
MaxTransfer = 0x10000 /* 128 sectors per IO (64 KB) */
Tested configurations (author's experience - your results may vary):
SD-to-CF adapter (SanDisk) 32GB - Works
SD-to-CF adapter (Samsung) 32GB, 64GB - Works
CF cards <=4GB - Works
CF cards >4GB - Not working
CFINFO UTILITY
==============
CFInfo displays detailed information about the inserted CF card.
Requires compactflash.device v1.36+ for IDENTIFY data, v1.37+ for driver config.
CFInfo ; Show info for compactflash.device unit 0
CFInfo 1 ; Show info for unit 1
Example output:
CFInfo 1.41 - CompactFlash Card Information
Device: compactflash.device unit 0
=== CompactFlash Card Information ===
Model: TS16GCF133
Serial: G64126022013C4120210
Firmware: 20180926
=== Capacity ===
Size: 15.2 GB (31522736 sectors)
Geometry: 30401 cyl, 16 heads, 63 sectors/track
=== Capabilities ===
LBA: Yes
DMA: No
PIO Modes: 0, 1, 2, 3, 4
Multi-sect: Max 1 sectors/interrupt
=== Card Type ===
Removable: Yes
Type: CompactFlash
=== Driver Configuration ===
Driver Ver: 1.37
Mount Flags: 0 (none)
Multi-sect: FW=1, Used=256
R/W Mode: WORD/WORD
R/W Mode indicates how the driver accesses the PCMCIA:
WORD 16-bit word access (standard)
BYTE (...) 8-bit byte access variants (fallback)
MMAP Memory mapped word access
SOURCE CODE
===========
Source code available at: https://github.com/pulchart/cfd
Licensed under GNU LGPL v2.1
SUPPORT
=======
The improvements to this driver are developed in my free time.
If you'd like to support ongoing maintenance and experimentation,
you can do so on Ko-fi: https://ko-fi.com/jaroslavpulchart
HISTORY
=======
see https://github.com/pulchart/cfd/blob/master/README.md for complete history
CHECKSUMS
=========
compactflash.device (full, 11344 bytes):
MD5: 173034da85b667e6f8f87a1252ba7e80
SHA256: 604a077158e81b6a0f09eeb4c90f83f7b662870b9bed0facdca574f1d0dcf0cf
compactflash.device.small (no debug, 8552 bytes):
MD5: 59582c8fd551436470eb22a68ff95efe
SHA256: d3d95d9ab556607ae023a6fde5295645fe01d41d731b5b94b92f8e42048c2fae
CFInfo (15564 bytes):
MD5: 40f7c1221f3a3a2466e31818d3f9f9ea
SHA256: 036f51b0b4310ba43a60db62decb035afabd917aed954500677bb0f45ec5ac49
pcmciacheck (14144 bytes):
MD5: 27ea335a8606c8d49c5301423f60329b
SHA256: f583ed64aa20c439ea45460bef2baaf10357ae56b6aa1abaeb191b49b33b9c8a
pcmciaspeed (9264 bytes):
MD5: 47212b103dd94ffa3116ef07b3a4cdef
SHA256: 32ea11e0f4d1587fbc85587a39bee21c66abc62a33e301651eed585535c88610
CONTENTS
========
cfd/c/CFInfo - Card information utility (displays model, size, capabilities)
cfd/c/pcmciacheck - PCMCIA check utility
cfd/c/pcmciaspeed - Speed test utility
cfd/devs/CF0 - Mountlist entry (with flags documentation)
cfd/devs/68020/compactflash.device - 68020+ driver with debug to serial console flag support
cfd/devs/68020/compactflash.device.small - 68020+ driver without debug to serial console support
cfd/devs/68000/compactflash.device - 68000 driver with debug to serial console flag support
cfd/devs/68000/compactflash.device.small - 68000 driver without debug to serial console support
cfd/docs/cfd.guide - Main documentation (AmigaGuide)
cfd/docs/CFInfo.guide - CFInfo utility documentation (AmigaGuide)
cfd/docs/pcmciacheck.guide - pcmciacheck utility documentation (AmigaGuide)
cfd/docs/pcmciaspeed.guide - pcmciaspeed utility documentation (AmigaGuide)
cfd/src/ - Full source code (assembler + C)
cfd/images/cf-type-1.jpg - CF Type 1 adapter photo
cfd/images/cf-type-2.jpg - CF Type 2 adapter photo (also MicroDrive)
cfd/images/sd-cf-adapter.jpg - SD-to-CF adapter photo
cfd/images/multimode-issue.jpg - Example of broken output with unsupported enforce multi mode
cfd/LICENSE - GNU LGPL v2.1
"CompactFlash" is (TM) by CompactFlash Association
|