Skip to main content

amitools - AmigaOS tools for other platforms

PyPI Python Docs Tests

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.

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 .lha archives.
  • pypng is needed by icontool to 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)

Source distribution for amitools 0.9.0
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.

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