Read, write, create and format Commodore 1541 D64 disk images: CBM DOS 2A directories, BAM allocation, PETSCII names, and the 40-track SpeedDOS / DolphinDOS / PrologicDOS extensions
[decks]
"@deckyard/d64" = "^0.2.0"| Version | Status | Kind | Pin | Requires | Engines | Capabilities |
|---|---|---|---|---|---|---|
| 0.2.0 | live | git | 124a07dc8e34 | - | jennifer >=0.25.0 jennifer-tiny >=0.25.0 | - |
LGPL-3.0-only
0.2.0Times a client asked this registry where to find this deck. Not downloads: the registry only stores metadata, and the code is fetched from its repository directly, so we never see an install and cannot count one. Repeated builds inflate these numbers; installs from an existing lockfile do not appear at all. Counted in UTC.
Reads, writes, creates and formats Commodore 1541 D64 disk images: the CBM DOS 2.6 BAM and directory, SEQ, PRG and USR files, PETSCII names, raw block access, and the 40-track SpeedDOS, DolphinDOS and PrologicDOS BAM layouts. Pure Jennifer with no capabilities, so it runs on jennifer-tiny; only open and save touch the filesystem.
Manual: https://deckyard.github.io/deck-d64/
Requires Jennifer 0.25.0 or newer.
jvc add @deckyard/d64jvc vendors the deck to vendor/deckyard/d64/. Without jvc, copy src/ from a checkout or a deckyard-d64-<version>.tar.gz release archive there, minus the test overlays:
mkdir -p vendor/deckyard/d64
cp -R path/to/deck-d64/src/. vendor/deckyard/d64/
find vendor/deckyard/d64 -name '*_test.j' -deleteuse io;
use binary;
import "@deckyard/d64/" as d64;
def code as bytes init binary.make(600);
def img as d64.Image init d64.formatDisk("sample disk", "01");
$img = d64.writeText($img, "readme", d64.FileType.Seq, "hello from jennifer\n");
$img = d64.writeProgram($img, "demo", 0x0801, $code);
io.printf("%s", d64.directoryText($img));
# 0 "sample disk " 01 2a
# 1 "readme" seq
# 3 "demo" prg
# 660 blocks free.
d64.save($img, "sample.d64");LGPL-3.0-only, see LICENSE. Copyright (C) 2026 mplx <[email protected]>.