Skip to content

A2 File Cmd 1.0 — Two panels. One Apple II.

Latest

Choose a tag to compare

@github-actions github-actions released this 28 Oct 05:44
· 1 commit to main since this release

A2 File Cmd 1.0 — Two panels. One Apple II.

A2 File Cmd 1.0 brings the two-panel workspace to ProDOS on the Apple IIe,
//c and IIgs, with a separate DOS 3.3 edition for the 48 KB Apple II+.
Four self-contained disk images cover the complete XL workspace, enhanced
XL, the practical 800K selection and DOS 3.3. This release consolidates
0.9.9 with the data-preservation fixes below; physical writes remain
vulnerable to power loss.

  • Sense Disk II write protection with its sequencer running in read mode.
    A stopped motor could leave stale data in the latch, causing DOS33W to
    refuse a writable disk or misread a protected one. Native regressions
    cover both CPUs, slots 5/6, both drives and stopped/running motors, with
    unchanged disk bytes and AUX.

  • Route named .FOTO1/.FOTO2 image pairs to PURPLE before the generic
    raw HGR fallback, preserving complete pair validation and both planes.

  • Read fixed sample prefixes through isolated accessors. cc65 2.19 could
    reuse an uninitialized or clobbered scratch pointer across branches,
    opening VisiCalc as text and Arlequin as hex on 65C02. Compare the real
    production stage against the host C classifier on 4,996 cases per CPU,
    including every file type, malformed prefixes and original-format fixtures.

  • Recognize LISA 8/16 source files before the generic Integer BASIC run
    fallback. Return could offer to execute an INT-typed source instead of
    opening LISAV4. Both CPU regressions retain normal BAS/INT execution and
    verify real LISA sources, header bounds and source-byte preservation.

  • Read Multiplan grid dimensions independently of the saved cursor. A
    valid sheet saved after moving back to the top left could be refused.
    Recreate seven sheets with original Multiplan 1.06 and add byte-preserving
    host, both-CPU and native regressions, including invalid dimensions.

  • Link the macOS POM2 test hosts with CoreFoundation, required by the
    current emulator library. Respect POM2_ROOT for disposable host builds
    and run the composite plugin qualification serially by default.
    Use monotonic deadlines in the benches so host sleep or clock changes
    do not produce false UI timeouts; keep the active-time limits unchanged.

  • Reorganize the English manual: reader descriptions join the reading chapter;
    continuous pagination reduces the PDF from 25 to 19 pages without smaller
    type. Keep headings with opening text and repeat table headers.

  • Binary II extraction checks output stream errors after full-count writes,
    verification reads and the EOF probe. An errored zero-byte probe could
    previously hide an unverified output tail and report success. Only the
    owned failed record is cleaned; prior records, the archive and unrelated
    files remain intact. The summary now fits its 64-byte buffer even with
    five-digit counters from a malformed archive.

  • SYNC rechecks all source metadata after its copy/readback closes and
    before publication. A changed or unreadable source could previously replace
    a newer destination using the source's stale catalog timestamp or type.
    Refusal keeps the original destination and the verified A2FC.SYNC, and
    stops the tree before the next file. Late cancellation still discards only
    the owned temporary and reports a failed cleanup if it cannot do so.

  • DIRSORT refuses parent and child directory pointers to boot blocks or
    blocks outside the declared volume. A malformed child header could
    previously authorize raw writes to those blocks while reporting success.
    Host and both native compiler regressions verify zero writes and unchanged
    disk bytes, even when the underlying device can read the invalid block.

  • Fix the fuzz campaign's refused-write expectation: REPAIR can verify that
    the original bytes remain intact even if every write is refused. Require
    zero applied corrections and an unchanged image, with a regression replay
    of the 150-case CI campaign.

  • Recover resident MAIN space without raising memory limits: 322 bytes free
    on 65C02 and 676 on 6502. VDrive's install-only code and page-3 relay
    source move to BATCH; collective tagging and the T/H selection helper move
    into the language card. Boot loads BATCH before reading panels, with the
    uninstall marker disarmed before the load. Active drivers and uninstall
    remain resident; normal navigation needs no extra overlay load.

  • Fit VERIFY's 6502 code and BSS back into its existing window: shorten its
    menu description and compact equivalent expressions and summary arguments,
    retaining the DOS 3.3 refusal and all read checks.

  • S cycles disk order (the default, no header star), then name, size and
    type. Returning to disk order rereads both panels, so tags are not kept
    on that step. Saved S0/S1/S2 still mean name, size and type.

  • IMGCONV Escape after CREATE, during replace or between blocks prints
    « Stopped. », not « Stopped failed. » or « Aborted, DEST removed. »
    while DEST is still the original.

  • Tree copy count refuses a destination directory that cannot hold
    A2FC.COPY: a file whose own name fitted used to pass the count, then
    stop the copy mid-tree with a partial destination. « Path too long for
    ProDOS. » now, before the first byte.

  • VERIFY refuses a DOS 3.3 volume-list row instead of READ_BLOCK on unit
    $00 (those rows store the unshifted unit and access = 0).

  • REPAIR and BOOTBLK judge a failed write by the bytes that remain: a
    write-protected disk that still holds the original is not reported as a
    failed restore.

  • NIBCOPY reads the target's volume name again after the first "Erase
    TARGET" question and writes nothing if it changed or is now the
    program's disk: a disk swapped during that question received track 0
    (boot, root directory and bitmap). Two disks of one name, or both
    without a ProDOS volume, are still not told apart there.

  • Tree copy, move and delete treat an entry as a directory only when its
    storage type says so: a plain file typed $0F whose first block read as
    a directory header was copied as an empty directory, then destroyed by
    V. A refuses type $0F on a file. A copy whose destination holds a file
    of the directory's name is refused ($47) instead of reporting success.

  • BLKEDIT on an image closes the file, checking the close, and opens it
    again before reading the block back: the read back came from ProDOS's
    file buffer, and a flush failing at the close (write-protected or
    failing disk) was lost after "written and read back identical".

  • The two remaining JMP (vector) of FORMAT and NIBCOPY are checked at
    link time against the NMOS 6502 page-boundary bug.

  • DISKIMG W and two-drive O read the device list again after ERASE and
    refuse ($2E) when the target drive no longer holds the volume the warning
    named, or now holds the program's disk or the image's. Two disks of one
    name, or both without a ProDOS volume, are still not told apart.

  • A copy or move batch stops when the target panel can no longer be read
    after an item: the next item is no longer written under the prefix as a
    bare name, nor its source deleted. ESC pressed during an item still stops.

  • VOLNAME refuses to rename when two volumes on line answer to the chosen
    name (ProDOS could rename either), and reports an ON_LINE failure, before
    any change.

  • FORMAT marks AUX as in use from the first Disk II track, so a Ctrl-Reset
    before the rebuild rebuilds /RAM instead of leaving its directory on line
    over overwritten blocks.

  • DIRSORT revalidates a subdirectory's parent entry after confirmation,
    refusing raw writes if its protection, name, key or storage changed, or
    the parent block cannot be read. Check the actual leaf-name length before
    comparing malformed parent metadata, avoiding an out-of-bounds path read.
    Add host/ASan and both-CPU regressions, plus a POM2 disk-swap check during
    confirmation with every disk byte, AUX and the C stack guard preserved.

  • Honor ESC received by the final metadata checks before TXTCONV, IMGCONV
    or DOSIMAGE replaces an original. Poll before the first rename, preserve
    originals on cancellation and report failed temporary cleanup. Add
    byte-preservation regressions for all three callers and execute the shared
    replacement/rollback code on both CPUs, including cancellation after the
    transaction has started.

  • DIRSORT now checks the volume's write protection when sorting a
    subdirectory, including after confirmation, and the header protection of
    each child directory it would update. Refuse writes after a parent-catalog
    close error. Add host and both-CPU regressions plus POM2 checks that
    protected volumes retain every byte, AUX and the C stack guard.

  • Honor ESC received during either verification close before publishing a
    core copy or allowing a move to delete its source. Preserve the original
    destination and discard only the exclusively created temporary. Add
    byte-preservation regressions for all four closes, empty and nonempty
    sources, and existing or absent destinations; retain both CPU layout guards.

Full changelog.

Files

Image Contents
A2FILECMD-PRODOS-XL-1.0.2mg Complete bootable 32 MB image, 6502, with demonstration files
A2FILECMD-PRODOS-XL-65C02-enhanced-1.0.2mg Complete 32 MB image for an enhanced IIe, //c or IIgs: MouseText, optional mouse
A2FILECMD-DOS3.3-1.0.dsk Standalone DOS 3.3 edition for Apple II+ 48 KB, 40 columns, two drives
A2FILECMD-PRODOS-800K-1.0.po Bootable 800 KB ProDOS image, 6502, selected tools and BASIC runtimes, no demo corpus

The English user guide is included as A2FILECMD-MANUAL-EN-1.0.pdf.

XL includes all 130 overlays, BASIC.SYSTEM, INTBASIC.SYSTEM and a DEMO
folder sorted by kind of file. The 800K edition has the practical selection in
config/800k.mk, without the demonstration corpus and with space left for files.
Both editions are self-contained; their menus list available tools.
All ProDOS editions need 128 KB and 80 columns. The choice is enhanced or
not: the enhanced XL is for an enhanced IIe, a //c or a IIgs; every other
ProDOS image runs on any IIe. Mini is a separate DOS 3.3 program for the 48 KB Apple II+.

Boot an image and press ? for help. sha256sum -c SHA256SUMS-1.0.txt
checks the four images and manual. ProDOS images carry ProDOS 8 2.4.3.
XL and 800K include BASIC.SYSTEM (John Brooks' free distribution; Apple's
software) and INTBASIC.SYSTEM v0.9 by Joshua Bell
(https://github.com/a2stuff/intbasic).
Sources, manual and benches: https://github.com/habib256/a2filecmd.