amitools - AmigaOS tools for other platforms
amitools is a set of command line tools and Python libraries for working
with classic Amiga disk images, file systems, Kickstart ROMs, icons and
executables on macOS, Linux and Windows. Its centrepiece, vamos, runs
AmigaOS command line programs directly on the host by emulating the 68k CPU
and the AmigaOS API.
The tools target the classic 680x0 Amiga with AmigaOS 1.x to 3.x and are written for developers, so a background in Amiga programming helps.
- Documentation: https://amitools.readthedocs.io/
- Source and issues: https://github.com/cnvogelg/amitools
- Releases: https://pypi.org/project/amitools/, change log
Installation
amitools supports Python 3.11 through 3.15 and can be installed with pip
or uv.
Tools only
pip install amitools
This installs the pure Python package: all tools except vamos work out of
the box.
With vamos
vamos needs the 68k CPU emulator from the
machine68k package, which the
vamos extra pulls in:
pip install 'amitools[vamos]'
machine68k is a C extension published as a source package, so a C compiler
has to be available (Xcode command line tools on macOS, gcc on Linux,
Visual Studio Build Tools on Windows).
With uv, install the command-line tools in an isolated environment:
uv tool install amitools
To include vamos and its emulator dependency:
uv tool install 'amitools[vamos]'
Latest development version
pip install -U git+https://github.com/cnvogelg/machine68k.git
pip install -U git+https://github.com/cnvogelg/amitools.git
Repeat the commands to update. The development version has the newest features but may be unstable from time to time.
Optional packages
- lhafile lets the file
scanners look inside
.lhaarchives. - pypng is needed by
icontoolto import and export PNG images.
Tools
| Tool | Purpose | Docs |
|---|---|---|
xdftool |
Create, inspect and modify ADF and HDF disk images: format, list, read, write, delete, pack and unpack whole images, boot blocks, bitmaps | xdftool |
xdfscan |
Scan single images or whole directory trees of ADF/HDF files and verify their file systems | xdfscan |
rdbtool |
Create and edit hard disk images and devices with a Rigid Disk Block: partitions, file system drivers, geometry | rdbtool |
romtool |
Scan, split, patch and build Kickstart ROM images for emulators, soft kickers and flash ROMs | romtool |
icontool |
List and batch edit Workbench .info icon files: tool types, positions, structure fields, PNG import and export |
icontool |
vamos |
Run AmigaOS command line programs on the host: the Virtual Amiga OS | vamos, reference, libraries |
vamospath |
Convert between AmigaOS and host paths using a vamos configuration | |
vamostool |
Helpers around vamos: path conversion, type inspection, library profile dumps and state file info | |
hunktool |
Load and dump Amiga Hunk executables, libraries, object files and overlays | |
typetool |
Inspect the AmigaOS C structure definitions vamos uses | |
fdtool |
Read Commodore's .fd function description files and dump them in several formats, including vamos' code structures |
|
geotool |
Detect and compute disk geometries (cylinders, heads, sectors) for image files and sizes |
Every tool prints its usage with -h or help.
Quick examples
# list a floppy image, then read a file from it to the current directory
xdftool wb310.adf list
xdftool wb310.adf read c/dir
# create a new disk, format it and copy a file in, all in one command line
xdftool test.adf format "My Image" + makedir c + write myfile c
# create a 10 MiB RDB hard disk image with one partition
rdbtool work.hdf create size=10Mi + init + fill
# check a whole directory tree of disk images
xdfscan my_disks
# show what is inside a Kickstart ROM
romtool scan kick31.rom -i
# run an Amiga program; -V maps a host directory to an Amiga volume
vamos -V work:/path/to/dir myprog
Python libraries
The tools are built on packages you can use in your own code:
| Package | Contents |
|---|---|
amitools.fs |
OFS and FFS file systems, block devices and image files, Rigid Disk Blocks and partitions |
amitools.binfmt |
Readers for Amiga Hunk binaries (binfmt.hunk) and the ELF subset used by AROS m68k (binfmt.elf), with relocation |
amitools.rom |
Kickstart ROM parsing, splitting and building |
amitools.icon |
Workbench .info icon files |
amitools.fd |
Parser for .fd function description files |
amitools.scan |
Scanners that walk file trees, .lha archives and disk images |
amitools.vamos |
The vamos runtime: machine, memory, scheduler, library and device implementations |
The vamos library API is described in the library documentation.
Development
Clone the repository and set up an editable install with the development and test requirements:
git clone https://github.com/cnvogelg/amitools.git
cd amitools
make init
make init installs machine68k from its git repository, the test and
documentation tools, and amitools itself in editable mode, so edits in the
tree take effect immediately.
To set up the same environment with uv, create and activate a virtual environment, then install the existing development and test requirements:
uv venv
# macOS/Linux
source .venv/bin/activate
# Windows
.venv\Scripts\activate
uv pip install -r requirements-dev.txt -r requirements-test.txt -e .
Tests
The unit tests run in a few seconds:
pytest test/unit
pytest test also runs the vamos test suite, which executes the prebuilt
Amiga test programs under vamos and compares their output with recordings
from real Amigas; add --full-suite for the slow tests as well. make test
runs everything through tox for all supported Python versions. Rebuilding
the test programs needs the cross compilers described in
test/README.md.
Code style and docs
The code is formatted with Ruff:
make format. The documentation is Sphinx; make docs builds it into
build/docs/html.
Contributing
Bug reports and pull requests are welcome on
GitHub. Please add a unit test for a
fix where possible and run ruff format . before submitting.
License and authors
amitools is written by Christian Vogelgsang chris@vogelgsang.org, with
contributions from many others, and is licensed under the GNU General Public
License version 2 or later.
Metadata
Release files for amitools 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| amitools-0.9.0.tar.gz | 3.8 MB | Without provenance | Details for amitools-0.9.0.tar.gz |
Release files / amitools-0.9.0.tar.gz
| Download URL | amitools-0.9.0.tar.gz |
|---|---|
| Size | 3.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6172074deaf2702b6b5bb03abca22ce3edf665fed3d69e8fdf1d0045059e5a78
|
|
BLAKE2b-256 checksum How to use checksums |
0c16a53249d97fa7a74d4604135515ae70ae9dd04454ea2b6d16864a33e4d7bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.0.1 CPython/3.12.8
|
Security for amitools 0.9.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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.