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

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)

Source distribution for kimtape 0.1.2
File Size Uploaded
kimtape-0.1.2.tar.gz 25.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kimtape 0.1.2
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.2.0

2 release files

This release

0.1.2 This release

2 release files

0.1.1

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