kimdos
Commodore serial bus (IEC) disk access for the KIM-1, PAL-1/PAL-II and other replicas: a 6502 library, and a shell built on it, that load and save CBM DOS files on a 1541, an SD2IEC/uIEC or anything else that speaks the bus, with JiffyDOS for devices that have it. Written from the protocol, not from Commodore's code.
The library uses no zero page, preserves the user port's spare bits, and links anywhere with ld65; an llvm-mos C version comes with a KIM-1 platform for that compiler. The shell runs over the monitor's TTY:
KIMDOS
>S PROG,2000,290D
00, OK,00,00
>L PROG,4000
$4000-$490D
>$
1 " " 32 2A
10 "PROG" PRG
65535 BLOCKS FREE.
>S PROG,2000,2001
63,FILE EXISTS,00,00
Install
pip install kimdos
kimtape load --port /dev/ttyUSB0 https://github.com/anarkiwi/kimdos/releases/latest/download/kimdos-2000.ptp --go 2000
Each release has the shell at $0400, $2000 and $C000 (kimdos-<org>.ptp,
.bin, .lbl), also in the package (kimdos.build.packaged); it needs
about 2.5K of RAM there. The package ships the llvm-mos C library:
python -m kimdos.clib prints its directory.
To build, with cc65: make ORG=2000 writes build/kimdos-2000.{bin,ptp,lbl,map}
and build/kimdos.lib; make clib builds build/c/libkimdos.a with llvm-mos
in docker.
Shell
| Command | |
|---|---|
$[pattern] |
directory, e.g. $, $0:A* |
@ |
drive status |
@command |
DOS command, e.g. @S:OLD, @R:NEW=OLD, @CD:GAMES |
L name[,addr] |
load, to the file's own address or to addr |
V name[,addr] |
verify against memory |
S name,start,end |
save start-end inclusive; @0:name replaces |
#[device] |
show or set the device number (decimal, default 8) |
J[0|1] |
show, or turn off or on, JiffyDOS (default on) |
Q |
return to the monitor; G then runs what was loaded |
Names may be quoted. From the keypad, put the KIM tape ID in $17F9 and run
ORG+3 to load the file named by its two hex digits, or set $17F5-$17F8 as
for a tape save and run ORG+6 to save.
Simulator
kimdos sim --dir ./disk # the shell against .prg files in ./disk
kimdos sim --no-jiffy # against a drive without JiffyDOS
kimdos bench # cycles per byte and JiffyDOS margins
kimdos board --port /dev/ttyUSB0 --install '$' '@'
Documentation
- docs/hardware.md — the adapter and its wiring
- docs/library.md — linking the library into a program, the API
- docs/clibrary.md — the llvm-mos C library and KIM-1 platform
- docs/protocol.md — the bus protocol as implemented
- docs/development.md — tests, the simulator, releases
Metadata
Release files for kimdos 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kimdos-0.2.0.tar.gz | 60.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kimdos-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 117.5 kB
Release files / kimdos-0.2.0.tar.gz
| Download URL | kimdos-0.2.0.tar.gz |
|---|---|
| Size | 60.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bb9693d25059c8a7c7283da618aa7ccfac93ebe9d383ad2649d2fec449297d0a
|
|
BLAKE2b-256 checksum How to use checksums |
04178125f63862eb6c25abf97287e855b397c4c2f8acbb93b1b8975779b57327
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / kimdos-0.2.0-py3-none-any.whl
| Download URL | kimdos-0.2.0-py3-none-any.whl |
|---|---|
| Size | 57.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
06de4d5c76a1746a4ccabe7e787b524daf44b0c9a57d2d1711d68ed8d1971e34
|
|
BLAKE2b-256 checksum How to use checksums |
ff1a482d4afbbff1f5e0dd0112997e142ab130c14ea2f8e7c2287c55bd394a97
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log