gbraad / amitools Goto Github PK
View Code? Open in Web Editor NEWThis project forked from cnvogelg/amitools
Various tools for using AmigaOS programs on other platforms
This project forked from cnvogelg/amitools
Various tools for using AmigaOS programs on other platforms
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. Installation ------------ - You can run all tools right where you checked out the source tree. No installation is required. On Mac OS X or other Unixes simply run the tool directly, on Windows you need to prefix the python binary. - vamos m68k emulator using musashi needs a native library to be compiled first. You need Cython version 0.21 or greater to build it: On Mac OS X: > sudo port install py27-cython > cd musashi && make On Ubuntu: > sudo apt-get install python-pip > sudo pip install cython # do not install Ubuntu's cython as its too old (0.20)! > cd musashi && make On Windows with MSYS2: > pacman -S mingw-w64-i686-cython2 # 32 bit > pacman -S mingw-w64-x86_64-cython2 # 64 bit > cd musashi && make CYTHON=cython2 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 cython (>= 0.21)). 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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.