kimtape
Paper tape loader for the MOS Technology KIM-1 and its replicas. Loads, dumps and verifies programs over a serial line using the stock ROM monitor — no extra hardware, no pyserial, standard library only.
Works with the KIM-1, PAL-1, PAL-II, Micro-KIM, KIM Clone and simulators exposed on a pty.
Install
pip install kimtape
Use
kimtape load --port /dev/ttyUSB0 zp.ptp game.ptp --go 0200
kimtape dump --port /dev/ttyUSB0 --range 0200-0774 -o game.ptp
kimtape run --port /dev/ttyUSB0 --go 0200
kimtape probe --port /dev/ttyUSB0 # what does this board answer, and how?
kimtape term --port /dev/ttyUSB0 # raw terminal, ^] to quit
kimtape info game.ptp # parse a tape without a board
Tapes and images may be http(s) URLs, fetched on the fly:
kimtape load --port /dev/ttyUSB0 \
https://github.com/anarkiwi/kimformer/releases/latest/download/kimdos-0400.ptp --go 0400
Programs distributed as raw binaries, Intel HEX or S-records — fig-FORTH, xKIM, MICRO-ADE among them — convert first:
kimtape convert forth.bin --at 2000 -o forth.ptp
kimtape convert xKIM.hex -o xkim.ptp # format read from the content
Press RS before running: the monitor sets its bit rate from the first carriage return it receives. Defaults are 1200 baud, 8N1, no flow control.
load verifies every byte by reading the range back, and retries a tape that
does not match. probe reports which pacing a board needs when something is
wrong; start there.
As a library:
from kimtape import Monitor, Port, Tape
port = Port("/dev/ttyUSB0", 1200)
mon = Monitor(port)
mon.sync()
mon.load(Tape("game.ptp", open("game.ptp", "rb").read()))
mon.go(0x0200)
Examples
examples/load.py fetches any catalogued program from its own archive and
loads it. The catalogue is examples/programs.toml;
nothing is redistributed here.
examples/load.py --list
examples/load.py microchess --port /dev/ttyUSB0 # chess in 1K, on the keypad
examples/load.py kb9 --port /dev/ttyUSB0 # Microsoft BASIC, over this terminal
examples/load.py kimventure --port /dev/ttyUSB0
Most catalogued programs talk over the same serial line you loaded them through: BASIC, FOCAL, Tiny BASIC, two chess programs, an RPN calculator, a text editor and a disassembler. See docs/kim-software.md for what else is out there, and docs/kimventure.md for the worked example in full.
Documentation
- docs/protocol.md — tape format, monitor commands, why writes are paced
- docs/hardware.md — serial wiring, TTY jumper, PAL-II switch settings
- docs/kimventure.md — the worked example, start to finish
- docs/kim-software.md — other programs worth loading
- docs/development.md — tests, the fake board, releasing
Licence
Apache 2.0. Program images are fetched at run time and are not redistributed here; they remain the property of their authors.
Metadata
Release files for kimtape 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kimtape-0.1.2.tar.gz | 25.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kimtape-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.3 kB
Release files / kimtape-0.1.2.tar.gz
| Download URL | kimtape-0.1.2.tar.gz |
|---|---|
| Size | 25.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7c22562c2dadaf1163c3be17db19142ad33ff72469363c75c4bd99d362cbfdf7
|
|
BLAKE2b-256 checksum How to use checksums |
a1cdc1dba74913d3c1b6ed3a6024cb5943cfaa4ec4d0bd8be3c6de6aded9f20a
|
| 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 / kimtape-0.1.2-py3-none-any.whl
| Download URL | kimtape-0.1.2-py3-none-any.whl |
|---|---|
| Size | 19.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1980149f7f93955149812148dab1f4b91636592137f129f8a61c32697877c99b
|
|
BLAKE2b-256 checksum How to use checksums |
684ad8f8a5d85b179b4211d0123edcda6b2b1924509183eec310441c6544af01
|
| 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