Short: CompactFlash PCMCIA driver for A600/1200 Author: jaroslav.pulchart@gmail.com (Jaroslav Pulchart), based on work by Torsten Jager and Paul Carter Uploader: jaroslav pulchart gmail com (Jaroslav Pulchart) Type: driver/media Version: 1.38 Requires: AmigaOS 2.0+, PCMCIA slot, CF-to-PCMCIA or SD-to-CF adapter Architecture: m68k-amigaos Kurz: CompactFlash PCMCIA Treiber (A600/1200) compactflash.device V1.38 - PCMCIA CompactFlash driver for Amiga 600/1200. Fork of driver/media/CFD133.lha. CHANGES IN 1.38 (27.01.2026) ============================ Driver: Reworks CIS handling to avoid side effects with non-storage PCMCIA cards (e.g. WiFi) and restores PCMCIA (Gayle) timing setup. * CIS gate (PCMCIA card type filter) fixes github issue #25 - Reads `CISTPL_FUNCID` (when available) and rejects non-disk cards early to avoid interfering with other PCMCIA devices (e.g. WiFi). - If `CISTPL_FUNCID` is missing/unreadable, the driver continues for compatibility (some CF cards/adapters do not provide reliable CIS tuples). * PCMCIA (Gayle) timing setup - Restores access timing setup from CISTPL_DEVICE via CardAccessSpeed (v1.37 didn't program timing based on CIS speed). Tools: * pcmciacheck: Simplified test output Others: * documentation improvements FEATURES ======== * Supports CompactFlash, MicroDrive, and various adapters (SD, MemoryStick, SmartMedia) * TD64 and SCSI emulation support * Works with fat95 filesystem for FAT32 support * 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-pcmcia-adapter.jpg) or SD-to-CF adapter (see images/sd-cf-adapter.jpg) * fat95 filesystem (disk/misc/fat95.lha) recommended INSTALLATION ============ Two versions of the driver are included: compactflash.device 11276 bytes Driver with debug to serial console flag support compactflash.device.small 8452 bytes Driver without debug to serial console support 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 devs/compactflash.device to DEVS: (or copy compactflash.device.small as DEVS: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: [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 [CFD] Transfer: WORD [CFD] Getting IDE ID [CFD] ..done [CFD] Model: TS4GCF133............................... [CFD] Serial: G68120052383AC0700C7 [CFD] FW: 20110407 [CFD] IDENTIFY: 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] ..card supports max multi: 1 [CFD] ..setting multi mode to: 1 [CFD] ..OK [CFD] ..testing multi-sector capability... [CFD] ..DRQ issue not detected [CFD] ..auto-enabling 256 sector mode [CFD] ..multi-sector RW size: 256 [CFD] ..done [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.38 - 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, 11276 bytes): MD5: 0f2c8cb62cebe05a1c6491611f9a28d1 SHA256: 83b637890af9396aae14933f05ef3d9ff71b5fae4975ff16c1f17934e594429e compactflash.device.small (no debug, 8452 bytes): MD5: bfb90753e4be5f79e350ab624e26d4bc SHA256: 95ca46430f926534c40f2daae41f85dd2f9e7211a3bce22a0e2682f5d85f9bb5 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/compactflash.device - Driver with debug to serial console flag support cfd/devs/compactflash.device.small - 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-pcmcia-adapter.jpg - CF-to-PCMCIA adapter photo 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