Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,26 @@

# Release version: YYYYMMDD package date + optional in-progress suffix
# (-dev, -rc1, ...). Empty suffix for a final release.
RELEASE_DATE = 20260827
VERSION_SUFFIX = -dev
RELEASE_DATE = 20260911
VERSION_SUFFIX =

# compactflash.device version
CFD_MAJOR = 2
CFD_MINOR = 0
CFD_VERSION_SUFFIX = -dev
CFD_DATE = 27.08.2026
CFD_VERSION_SUFFIX =
CFD_DATE = 11.09.2026

# compactflash.automount version (optional boot/automount module)
AUTOMOUNT_MAJOR = 2
AUTOMOUNT_MINOR = 0
AUTOMOUNT_VERSION_SUFFIX = -dev
AUTOMOUNT_VERSION_SUFFIX =
AUTOMOUNT_DATE = 27.08.2026

# Tool-specific versions
CFINFO_MAJOR = 1
CFINFO_MINOR = 37
CFINFO_MINOR = 38
CFINFO_VERSION_SUFFIX =
CFINFO_DATE = 11.01.2026
CFINFO_DATE = 11.09.2026

PCMCIASPEED_MAJOR = 1
PCMCIASPEED_MINOR = 36
Expand Down Expand Up @@ -439,19 +439,19 @@ $(GUIDE_LSPTRES): $(PTABLE_VERSION_FILE)
$(Q)cp $(PTABLE)/dist/docs/lsptres.guide $@
$(Q)echo " PTABLE $@"

$(TARGET_CFINFO): $(SOURCE_CFINFO)
$(TARGET_CFINFO): $(SOURCE_CFINFO) Makefile
$(Q)mkdir -p $(OUTDIR_C)
$(Q)echo " VBCC $(TARGET_CFINFO)"
$(Q)VBCC=$(VBCC_HOME) PATH=$(VBCC_HOME)/bin:$$PATH $(VBCC) +aos68k -O2 -c99 -INDK/Include_H -DVERSION='"$(CFINFO_VERSION)"' -DDATE='"$(CFINFO_DATE)"' -o $(TARGET_CFINFO) $<
$(Q)echo " $$(stat -c%s $(TARGET_CFINFO)) bytes, md5:$$(md5sum $(TARGET_CFINFO) | cut -c1-8)"

$(TARGET_PCMCIASPEED): $(SOURCE_PCMCIASPEED)
$(TARGET_PCMCIASPEED): $(SOURCE_PCMCIASPEED) Makefile
$(Q)mkdir -p $(OUTDIR_C)
$(Q)echo " VBCC $(TARGET_PCMCIASPEED)"
$(Q)VBCC=$(VBCC_HOME) PATH=$(VBCC_HOME)/bin:$$PATH $(VBCC) +aos68k -O2 -c99 -INDK/Include_H -DVERSION='"$(PCMCIASPEED_VERSION)"' -DDATE='"$(PCMCIASPEED_DATE)"' -o $(TARGET_PCMCIASPEED) $<
$(Q)echo " $$(stat -c%s $(TARGET_PCMCIASPEED)) bytes, md5:$$(md5sum $(TARGET_PCMCIASPEED) | cut -c1-8)"

$(TARGET_PCMCIACHECK): $(SOURCE_PCMCIACHECK)
$(TARGET_PCMCIACHECK): $(SOURCE_PCMCIACHECK) Makefile
$(Q)mkdir -p $(OUTDIR_C)
$(Q)echo " VBCC $(TARGET_PCMCIACHECK)"
$(Q)VBCC=$(VBCC_HOME) PATH=$(VBCC_HOME)/bin:$$PATH $(VBCC) +aos68k -O2 -c99 -INDK/Include_H -DVERSION='"$(PCMCIACHECK_VERSION)"' -DDATE='"$(PCMCIACHECK_DATE)"' -o $(TARGET_PCMCIACHECK) $<
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ See [docs/changes.md](docs/changes.md) for release news and history.
* Amiga 1200 or 600 (A1200 tested)
* AmigaOS 2.0+ (tested with 3.2.3)
* CF-to-PCMCIA adapter or SD-to-CF adapter (see [Hardware Notes](#hardware-notes))
* `ptable.library` (bundled) in `LIBS:` or in ROM: does all partition scanning and mounting
* Works with fat95 filesystem for FAT32 support (disk/misc/fat95.lha) or native (FFS, SFS, PFS) filesystems if RDB partition table is used

## Installation
Expand Down
52 changes: 34 additions & 18 deletions dist.readme.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,38 @@ COMPONENTS IN THIS RELEASE
==========================
@COMPONENT_VERSIONS@

CHANGES IN @DATE@
=====================
WHAT'S NEW (@DATE@)
=======================

compactflash.device:
New major version of compactflash.device 2.0 driver:

* Automount: hotplugged cards mount automatically at DOS time (on by
default; disable with AUTOMOUNT 0 in the new ENV:cfd.prefs config
file). Removing a card unmounts all supported filesystems by default.
Boot and automount bringup is split into a separate
compactflash.automount module. See automount.guide.
* Automount: hotplugged cards mount automatically at DOS time, on by
default. Can be disabled with AUTOMOUNT 0 in the new ENV:cfd.prefs
config file. Removing a card fully unmounts all supported filesystems
by default (UNMOUNT <names> restricts it, UNMOUNT NONE keeps the
handlers). Boot and automount bringup is split into a separate
compactflash.automount module. Cold boot registers the RDB partitions
(the autoboot chain); MBR, GPT and flat partitions are mounted by the
automount agent once DOS is up, so cfd.prefs applies to them on a
ROM-resident system too. See automount.guide for the full reference;
automount-review.guide walks the feature scenario by scenario with
the expected result of each.

ptable.library:
New major version of ptable.library 2.0 (bundled):

* Unified partition scanning: one scanner parses RDB, MBR, GPT, and
whole-disk FAT and publishes every partition into a shared
partition.resource, now used by both compactflash.device and fat95
instead of each carrying its own. The new lsptres tool lists the
resource. Library: https://github.com/pulchart/amigaos-ptable
* Unified partition scanning: a shared partition-table library the
driver now uses instead of its own parser. It scans RDB, MBR, GPT and
flat (whole-disk) partition tables and publishes every partition into
a shared partition.resource. The new lsptres tool lists the resource
(https://github.com/pulchart/amigaos-ptable).

pcmciacheck:
Tools 'CFInfo 1.38':

* The report prints one screenful at a time; any key continues, Q
stops.
* Output lines end in LF alone.

Tools 'pcmciacheck 2.0':

* New "-identify" read-stability test: reads the same sector several
times per mode and reports STABLE, UNSTABLE or STUCK. A card that
Expand Down Expand Up @@ -156,8 +168,9 @@ recognise exactly five filesystem names and no others: DOS, FFS, SFS,
PFS, FAT. Any other name is silently ignored.

FAT partitions still need fat95 loaded so its filesystem code is
registered. On cold boot the driver tolerates slow cards by polling for
up to ~1.8s; with a stable card the delay is zero.
registered. At cold boot an empty slot is detected by a single Gayle
read and costs nothing; with a card present the boot stub polls up to
5 s for a slow one.

More details are in automount.guide.

Expand Down Expand Up @@ -341,7 +354,7 @@ cfd/small/68020/devs/compactflash.device - 68020+, no debug code
cfd/full/68000/devs/compactflash.device - 68000+, debug-capable (serial output with Flags=8)
cfd/small/68000/devs/compactflash.device - 68000+, no debug code

ptable.library (optional) - partition scanner/automounter (RDB/MBR/GPT/FAT):
ptable.library (required) - partition scanner/automounter (RDB/MBR/GPT/FAT):
cfd/full/68020/libs/ptable.library - 68020+, debug-capable (serial output always on at boot)
cfd/small/68020/libs/ptable.library - 68020+, no debug code
cfd/full/68000/libs/ptable.library - 68000+, debug-capable (serial output always on at boot)
Expand All @@ -357,15 +370,18 @@ cfd/small/68000/libs/compactflash.automount - no debug code
cfd/c/CFInfo - Card information utility (displays model, size, capabilities)
cfd/c/pcmciacheck - PCMCIA check utility
cfd/c/pcmciaspeed - Speed test utility
cfd/c/lsptres - partition.resource entry lister (from ptable.library)

cfd/Storage/DOSDrivers/CF0 - Mountlist entry (with flags documentation)
cfd/Storage/DOSDrivers/CF0.info - Mountlist Workbench icon
cfd/ENVARC/cfd.prefs - Example config (copy to ENVARC:cfd.prefs to automount)

cfd/docs/cfd.guide - Main documentation
cfd/docs/automount.guide - Autoboot, automount, and ENV:cfd.prefs configuration
cfd/docs/automount-review.guide - Automount feature review (expected behaviour)
cfd/docs/changes.guide - Release notes and original CFD history
cfd/docs/CFInfo.guide - CFInfo utility documentation
cfd/docs/lsptres.guide - lsptres utility documentation
cfd/docs/pcmciacheck.guide - pcmciacheck utility documentation
cfd/docs/pcmciaspeed.guide - pcmciaspeed utility documentation

Expand Down
23 changes: 13 additions & 10 deletions dist/ENVARC/cfd.prefs
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
; compactflash.device config. copy to ENVARC:cfd.prefs (see automount.guide).
; compactflash.device config. copy to ENVARC:cfd.prefs
AUTOMOUNT 1
FLAGS 0
CONTROL_FAT -d-D+q
; Mount FAT cards with CrossDOS instead of fat95 (both lines needed):
; DOSTYPE_FAT 0x4D534400
; HANDLER_FAT L:CrossDOSFileSystem
; Hand-mounted (DEVS:DOSDrivers) partitions are unmounted on card removal
; like everything else. Set 0 to keep their handler mounted instead:
; UNMOUNT_STATIC 0
; A hand mount over an already-served partition is refused (object in use).
; Set 1 to allow it anyway; writes then corrupt the volume, your own risk:
; MOUNT_USED 1

; Mount FAT cards with CrossDOS instead of fat95:
;DOSTYPE_FAT 0x4D534400
;HANDLER_FAT L:CrossDOSFileSystem

; Static mounts (DEVS:DOSDrivers) are unmounted on card removal.
; Set 0 to keep their handler mounted instead:
;UNMOUNT_STATIC 0

; A static mount over an already-automounted partition is refused
; (object in use). Set 1 to allow it anyway.
;MOUNT_USED 1
4 changes: 2 additions & 2 deletions dist/c/CFInfo
Git LFS file not shown
4 changes: 2 additions & 2 deletions dist/c/lsptres
Git LFS file not shown
8 changes: 6 additions & 2 deletions dist/docs/CFInfo.guide
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@database "CFInfo - CompactFlash Card Information Tool"
@$VER: CFInfo guide 1.37 (11.01.2026)
@$VER: CFInfo guide 1.38 (11.09.2026)
@author "Generated by md2guide.py v1.6 (14.06.2026)"
@(c) "See LICENSE"
@font topaz.font 8
Expand Down Expand Up @@ -103,9 +103,13 @@ using the @{fg shine}compactflash.device@{fg text} driver.
CFInfo 1 ; Show info for unit 1
@{fg text}

The report prints one screenful at a time; any key continues, @{fg shine}Q@{fg text} stops.
Output
redirected to a file or another stream scrolls without pausing.

Example Output:
@{fg highlight}
CFInfo 1.37 - CompactFlash Card Information
CFInfo 1.38 - CompactFlash Card Information
Device: compactflash.device unit 0

=== CompactFlash Card Information ===
Expand Down
48 changes: 26 additions & 22 deletions dist/docs/automount.guide
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,13 @@ they go away again. With the driver in a Kickstart ROM you can also boot
straight off the card. This guide covers both, and the @{fg shine}ENV:cfd.prefs@{fg text}
file that configures them.

The scanning and mounting itself is done by @{fg shine}ptable.library@{fg text} , which is
required for all of it. Without that library @{fg shine}compactflash.device@{fg text} still
works, but as a plain mount-only device: you mount partitions yourself
through @{fg shine}DEVS:DOSDrivers/@{fg text} . See @{fg shine}ptable.guide@{fg text} (shipped with the
ptable.library archive) for the library internals. The expected
behaviour of the whole feature is catalogued scenario by scenario in
@{fg shine}automount-review.guide@{fg text} ( @{" automount-review.guide " link "automount-review.guide/Main"} ).
@{fg shine}ptable.library@{fg text} does the scanning and mounting, and is required for all
of it. Without that library @{fg shine}compactflash.device@{fg text} still works, but as a
plain mount-only device: you mount partitions yourself through
@{fg shine}DEVS:DOSDrivers/@{fg text} . See @{fg shine}ptable.guide@{fg text} (shipped with the ptable.library
archive) for the library internals. The expected behaviour of the whole
feature is catalogued scenario by scenario in @{fg shine}automount-review.guide@{fg text} ( @{" automount-review.guide " link "automount-review.guide/Main"}
).

----------------------------------------
@{"<< Prev" link Main} @{"Contents" link Main} @{"Next >>" link Quick_start}
Expand All @@ -66,25 +66,29 @@ behaviour of the whole feature is catalogued scenario by scenario in
@node Quick_start "Quick start"
@{b}Quick start@{ub}

Three modules are involved, and automount is opt-in by whether you
include the third:
Three modules are involved:

* @{fg shine}compactflash.device@{fg text}: the I/O driver.
* @{fg shine}ptable.library@{fg text} : the partition scanner and automounter (RDB, MBR, GPT, flat
FAT).
* @{fg shine}compactflash.automount@{fg text} : boot and automount bringup. Include it only when you
want autoboot or automount.

@{b}Goal@{ub} @{b}Modules@{ub} @{b}Cold-boot autoboot@{ub}
-------------------- ------------------------ ------------------
ROM autoboot @{fg shine}compactflash.device@{fg text} + available
@{fg shine}compactflash.automount@{fg text} +
@{fg shine}ptable.library@{fg text} in
Kickstart
Resident/on-disk, no @{fg shine}compactflash.device@{fg text} + no
automount @{fg shine}ptable.library@{fg text} (no
automount module)
On-disk automount @{fg shine}LoadModule@{fg text} line below no
* @{fg shine}compactflash.automount@{fg text} : bringup. It opens the device after DOS, and in a ROM
it also carries the cold-boot autoboot stub.

Automount needs the device open, because the agent lives in the unit
task. Anything that opens it will do, a @{fg shine}DEVS:DOSDrivers/CF0@{fg text} mount
included; @{fg shine}compactflash.automount@{fg text} is how you get it open without a
mountlist entry, and the only way to get cold-boot autoboot.

@{b}Goal@{ub} @{b}Modules@{ub} @{b}Cold-boot autoboot@{ub}
------------------------- ------------------------ ------------------
ROM autoboot @{fg shine}compactflash.device@{fg text} + available
@{fg shine}compactflash.automount@{fg text} +
@{fg shine}ptable.library@{fg text} in
Kickstart
On-disk, device opened by @{fg shine}compactflash.device@{fg text} + no
a @{fg shine}DOSDrivers@{fg text} mount @{fg shine}ptable.library@{fg text}
On-disk, no mountlist @{fg shine}LoadModule@{fg text} line below no
entry

For a disk install, put @{fg shine}compactflash.automount@{fg text} and @{fg shine}ptable.library@{fg text} in
@{fg shine}LIBS:@{fg text} and add this to your @{fg shine}user-startup@{fg text} :
Expand Down
4 changes: 3 additions & 1 deletion dist/docs/cfd.guide
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@database "compactflash.device"
@$VER: compactflash.device guide 2.0-dev (25.08.2026)
@$VER: compactflash.device guide 2.0-dev (27.08.2026)
@author "Generated by md2guide.py v1.6 (14.06.2026)"
@(c) "See LICENSE"
@font topaz.font 8
Expand Down Expand Up @@ -185,6 +185,8 @@ See @{" docs/changes.guide " link "changes.guide/Main"} for release news and h
* Amiga 1200 or 600 (A1200 tested)
* AmigaOS 2.0+ (tested with 3.2.3)
* CF-to-PCMCIA adapter or SD-to-CF adapter (see @{"Hardware Notes" link hardware_notes})
* @{fg shine}ptable.library@{fg text} (bundled) in @{fg shine}LIBS:@{fg text} or in ROM: does all partition scanning and
mounting
* Works with fat95 filesystem for FAT32 support (disk/misc/fat95.lha) or native
(FFS, SFS, PFS) filesystems if RDB partition table is used

Expand Down
Loading