Skip to main content

orion128

An emulator of the Orion-128, a home computer built around the KR580VM80A processor (an i8080 clone).

Python package CI PyPI Python License: MIT

orion128 emulates the hardware — memory-mapped video, the keyboard, ports and the disk controller — and runs the real ROM and software on top of it. It is built on the z80 package for the i8080 core and on cpm80 for the CP/M side of the disks, and aims to stay in pure Python. The display is built on PySDL2 and numpy.

Norton Commander (NC.COM) running under CP/M, booted from a disk image:

NC.COM running under CP/M

It ships with the Monitors for both Orion keyboards, the MS7007 and the RK-86, and an ORDOS 4.03 ROM-disk, so once installed from PyPI it boots a working system out of the box:

pip install orion128
orion128

--rk86 selects the RK-86 keyboard machine, with its own Monitor and keyboard layout, for software written for that keyboard. --z80 runs on the Z80 core, for software that uses Z80 instructions. --monitor PATH and --romdisk PATH replace the bundled ROMs. --help lists everything.

Each extra argument is a file the emulator loads. An ORDOS program (.ORD or .BRU) is placed on the RAM-disk (drive B:). A disk image is put in a floppy drive; give several to fill the drives in turn:

orion128 PENX4$.ORD
orion128 system.img data.img

With a disk in the drive the Orion's own disk software runs: the ORDOS file manager copies files to and from disks, and CP/M boots from a system disk. Changes to a disk are kept in memory, so your image files are left as they are.

Disk images can also be worked on from the host:

orion128 dir work.odi              # list the files of every user area
orion128 dir work.odi --user 1     # just one user area's
orion128 save HELLO.COM work.odi   # put host files on the disk
orion128 save work.odi HELLO.COM   # take files off the disk
orion128 ren work.odi HI.COM=HELLO.COM   # rename a file, NEW=OLD
orion128 era work.odi HELLO.COM    # delete files
orion128 format work.odi           # make a blank disk (--tracks 82 for 820K)
orion128 sysgen system.odi work.odi   # copy the system tracks
orion128 sysgen system.odi osdos.sys  # extract them to a file
orion128 sysgen osdos.sys work.odi    # install them from a file
orion128 split work.odi parts/     # take the image apart, erased files too
orion128 strip PENX4$.BRU          # write the canonical PENX4$.ORD

split writes every byte of the image into a directory: the system tracks, the directory, the live files by user area, the erased files with the blocks taken over since filled in, and the unallocated blocks that hold data, with a report of what went where. That is the raw material for recovering erased files by hand.

F12 is the RESET button. F10 closes the emulator.

Each PC key is mapped to the Orion key that gives the same character, so :, ; and # come out as expected, even though the Orion's own keyboard is laid out quite differently. Old games that scan the keyboard ports directly, like Manic Miner, keep working too.

The bundled ROMs are the copyright of their original authors and are not covered by this package's MIT licence; see orion128/ROMS.txt.

Metadata

Release files for orion128 0.1.0

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

Source distribution (sdist)

Source distribution for orion128 0.1.0
File Size Uploaded Provenance Actions
orion128-0.1.0.tar.gz 38.3 kB With provenance Details for orion128-0.1.0.tar.gz

Built distribution (wheel)

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

Total release size: 73.3 kB

Release files / orion128-0.1.0.tar.gz

Download URL orion128-0.1.0.tar.gz
Size 38.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9841ff1ce0dfbdec6bbda55795554c6f5603eca08ed10169794450b900f7b6c0
BLAKE2b-256 checksum
How to use checksums
d56a3a79b569eca56244eeb012d6cd4853218692ad0b947a223a4c9edcc7df30
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 Sep 6, 2026.

Transparency log

Release files / orion128-0.1.0-py3-none-any.whl

Download URL orion128-0.1.0-py3-none-any.whl
Size 35.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b64695efe09262e6d7e7aaf5048c5046f72c735085c9a58f366944c603de9726
BLAKE2b-256 checksum
How to use checksums
7dccfad141b3445737140a5f7d5b9271529f4ce77e22cb27e684eb43979827f2
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 Sep 6, 2026.

Transparency log

Security for orion128 0.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for orion128-0.1.0.tar.gz

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 Sep 6, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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