orion128
An emulator of the Orion-128, a home computer built around the KR580VM80A processor (an i8080 clone).
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:
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orion128-0.1.0.tar.gz.
File metadata
- Download URL: orion128-0.1.0.tar.gz
- Upload date:
- Size: 38.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9841ff1ce0dfbdec6bbda55795554c6f5603eca08ed10169794450b900f7b6c0
|
|
| MD5 |
7dd068fc7c7c95213717d4b1c43def18
|
|
| BLAKE2b-256 |
d56a3a79b569eca56244eeb012d6cd4853218692ad0b947a223a4c9edcc7df30
|
Provenance
The following attestation bundles were made for orion128-0.1.0.tar.gz:
Publisher:
release.yml on kosarev/orion128
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orion128-0.1.0.tar.gz -
Subject digest:
9841ff1ce0dfbdec6bbda55795554c6f5603eca08ed10169794450b900f7b6c0 - Sigstore transparency entry: 2739032553
- Sigstore integration time:
-
Permalink:
kosarev/orion128@360bfa15e01deef57090117ac74a39593fd708e6 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kosarev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@360bfa15e01deef57090117ac74a39593fd708e6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file orion128-0.1.0-py3-none-any.whl.
File metadata
- Download URL: orion128-0.1.0-py3-none-any.whl
- Upload date:
- Size: 35.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b64695efe09262e6d7e7aaf5048c5046f72c735085c9a58f366944c603de9726
|
|
| MD5 |
764bee82bb36f005f158ba99ead5f890
|
|
| BLAKE2b-256 |
7dccfad141b3445737140a5f7d5b9271529f4ce77e22cb27e684eb43979827f2
|
Provenance
The following attestation bundles were made for orion128-0.1.0-py3-none-any.whl:
Publisher:
release.yml on kosarev/orion128
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
orion128-0.1.0-py3-none-any.whl -
Subject digest:
b64695efe09262e6d7e7aaf5048c5046f72c735085c9a58f366944c603de9726 - Sigstore transparency entry: 2739032606
- Sigstore integration time:
-
Permalink:
kosarev/orion128@360bfa15e01deef57090117ac74a39593fd708e6 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/kosarev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@360bfa15e01deef57090117ac74a39593fd708e6 -
Trigger Event:
push
-
Statement type: