项目介绍

cnvogelg/amitools 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,目前获得 362 个 Star、85 次 Fork。

仓库全名
cnvogelg/amitools
Star 数
362
Fork 数
85
未关闭 Issue
25

README 摘要

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…

完整内容见 GitHub 原始 README 或本页 。

常见问题

amitools 用什么语言开发?

主要使用 Python 编写,目前有 362 个 Star。

如何获取 amitools 的源码?

可以直接克隆仓库:git clone https://github.com/cnvogelg/amitools.git,默认分支为 main;安装与运行步骤见仓库 README。

amitools 最近还在维护吗?

仓库最近一次更新为 2 天前,当前有 25 个未关闭 Issue;Star 数为 362,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Various tools for using AmigaOS programs on other platforms

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
562
价值分
244
活跃状态
活跃

语言占比

C
Dockerfile
Makefile
Python
Shell

Release

README

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 needs pip.

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

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.

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 black: 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 black before submitting.

License and authors

amitools is written by Christian Vogelgsang [email protected], with contributions from many others, and is licensed under the GNU General Public License version 2 or later.

评论

暂无评论