forked from cnvogelg/amitools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
101 lines (68 loc) · 3.64 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
amitools - various AmigaOS tools for other platforms
----------------------------------------------------
written by Christian Vogelgsang <[email protected]>
under the GNU Public License V2
Introduction
------------
amitools is a collection of (currently python 2.x only) tools that I've
written to work with Amiga OS binaries and files on Mac OS X. But they
should work on all other platforms supporting pythons, too.
I focus with my tools on classic Amiga setups, i.e. a 680x0 based system with
Amiga OS 1.x - 3.x running on it. However, this is an open project, so you can
provide other Amiga support, too.
The tools are mostly developer-oriented, so a background in Amiga programming
will be very helpful.
Tools
-----
- vamos (Python 2.x) = V)irtual AM)iga OS
The most ambitious project in the collection emulates the Amiga OS library
API so that native m68k Amiga OS 1.x - 3.x binaries can be loaded and
executed (think of Wine for Amiga :). With this approach only API conform
programs can be run (i.e. no direct hardware access is possible).
The goal is to run CLI programs relying on Exec and Dos library starting
with a minimal set of implemented functions. But the design of vamos is
flexible enough to add more libraries and more functions later on.
Remember, vamos is and never will be a full Amiga system emulator like
WinUAE or P-UAE.
It uses the Hunk library of amitools to load and relocate the binary. A
m68k CPU emulator is used to execute the code (here: Musashi emulator
in native C with Python binding via ctypes).
Every call to a library is trapped during execution and realized with own
Python code or simply ignored if no trap is defined.
All public in memory structures (e.g. ExecBase) are also provided. vamos
implements a memory handler to allocate and free structures used in the
heap of a program or for library data exchange.
Currently, this is a work in progress and mostly a proof of concept that
is very instructive but not too fast. Later on, a native C implementation
may be derived from these concepts to create a very fast and efficient
vamos.
For now its a playground for me to learn lots about Amiga OS, its binaries,
its libraries and how they work together...
- hunktool
The hunktool uses amitools' hunk library to load a hunk-based amiga
binary. Currently, its main purpose is to display the contents of the
files in various formats.
You can load hunk-based binaries, libraries, and object files. Even
overlayed binary files are supporte.
- typetool
This little tool is a companion for vamos. It allows you to dump and get
further information on the API C structure of AmigaOS used in vamos.
- fdtool
This tool reads the fd (function description) files Commodore supplied for
all of their libraries and dumps their contents in different formats
including a code structure used in vamos.
You can query functions and find their jump table offset.
Libraries
---------
- Hunk library (Python 2.x)
This library allows to read Amiga OS loadSeg()able binaries and represent
them in a python structure. You could query all items found there,
retrieve the code, data, and bss segments and even relocate them to target
addresses
- ELF library (Python 2.x)
This library allows to read a subset of the ELF format mainly used in
AROS m68k.
- File Scanners (Python 2.x)
I've written some scanners that walk through file trees and retrieve the
file data for further processing. I support file trees on the file system,
in lha archives or in adf disk images