Skip to content

v0.4.0

Choose a tag to compare

@acscpt acscpt released this 04 Apr 08:31
· 112 commits to main since this release

Added

  • ADFS disc image support (read-only): beebtools now reads .adf
    (single-sided) and .adl (double-sided) ADFS disc images using the old-map
    small-directory ("Hugo") format. Supports ADFS-S (160K), ADFS-M (320K), and
    ADFS-L (640K) images. All read commands (cat, extract, search) work
    transparently with both DFS and ADFS images.

  • ADFS write support: beebtools create, add, delete, and build
    commands now work with ADFS disc images (.adf, .adl). Format is detected
    from the file extension. Create supports ADFS-S (160K, 40-track .adf),
    ADFS-M (320K, 80-track .adf), and ADFS-L (640K, .adl). File paths use
    the ADFS hierarchical syntax (e.g. $.GAMES.ELITE). Build walks the source
    directory tree recursively, creating subdirectories as needed.

  • createAdfsImage() library function: creates a blank ADFS disc image with
    valid free space map and root directory. Accepts format size, title, and boot
    option parameters.

  • validateAdfsName() library function: validates ADFS filenames (1-10
    printable ASCII characters).

  • buildAdfsImage() library function: assembles an ADFS disc image from a
    directory tree with .inf sidecars, including recursive subdirectory creation.

  • openImage() format auto-detection dispatcher: detects DFS or ADFS from the
    file extension and delegates to the appropriate parser. Exported from the
    public API.

  • ADFS library types exported from the public API: ADFSEntry, ADFSCatalogue,
    ADFSDirectory, ADFSFreeSpaceMap, ADFSImage, ADFSSide, ADFSError,
    ADFSFormatError, openAdfsImage.

  • beebtools cat on ADFS images shows the full hierarchical directory tree with
    directory entries labelled as DIR. Column width adjusts dynamically for long
    ADFS path names.

  • beebtools extract accepts ADFS full paths (e.g. $.GAMES.ELITE) as well as
    bare filenames. Bulk extraction (-a) creates nested filesystem directories
    matching the ADFS directory hierarchy. Directory entries are skipped.

  • beebtools search works on ADFS images, searching all BASIC files across the
    entire directory tree.

  • BBC BASIC II tokenizer (tokenize.py): converts LIST-style plain text back
    to tokenized binary - the inverse of the detokenizer. tokenize() and
    encodeLineRef() are exported from the public API.

  • beebtools add --basic now auto-tokenizes plain-text BASIC files before adding
    them to a disc image, enabling a full detokenize-edit-retokenize workflow.

  • --basic flag for beebtools add: sets BBC BASIC default addresses
    (load=0x1900, exec=0x8023) without needing to specify them manually.
    Explicit --load or --exec flags override the corresponding default
    with an informational note. Ignored with a warning when --inf is used.

Fixed

  • DFS filename validation now rejects the characters . : " # * and space,
    matching the Acorn DFS disc format specification. Previously only the
    printable ASCII range was checked.