Skip to main content

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 git+https://github.com/anarkiwi/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

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

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.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kimtape 0.1.1
File Size Uploaded
kimtape-0.1.1.tar.gz 24.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kimtape 0.1.1
File Interpreter ABI Platform
kimtape-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 44.0 kB

Release files / kimtape-0.1.1.tar.gz

Download URL kimtape-0.1.1.tar.gz
Size 24.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b6317f68aed7cb23e6449b32747718adf185b07fd63ffca671610402f5d88fdb
BLAKE2b-256 checksum
How to use checksums
795fa3f464996d9f65645e0e7ce363be8fc781062eb9d18edd490c9ebf8b700e
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

Release files / kimtape-0.1.1-py3-none-any.whl

Download URL kimtape-0.1.1-py3-none-any.whl
Size 19.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fb7546e665f8373b007365f3f4481aca606409a18cc7240c0bb6b9659a545943
BLAKE2b-256 checksum
How to use checksums
d4daa2db1fd698a5cf82a1c963f4f5b40303cc758e8fb6766ca8db482ebf5f58
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

Release history Release notifications | RSS feed

0.2.0

2 release files

0.1.2

2 release files

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page