After trying out FS-UAE on my Fedora Linux system, which worked quite nicely, I got to thinking. Even though when the Amiga was originally released in the middle 1980s, it was revolutionary in its graphics and sound capabilities, not all Amiga programs need them. As a specific case, C compilers on the Amiga have no need of the computer's graphics and sound capabilities. (I mean the compilers themselves don't, the programs they produce as compiled output may well do.)
So it seems to me that firing up a fully emulated Amiga just to compile C code on it is overkill. Would it be technically possible to have an emulator that has an emulated Motorola 680x0 CPU and the Amiga operating system ROM running, maps the Amiga's file system to the host computer's like FS-UAE does, but instead of implementing a full Amiga GUI only interacts with the user through standard stdio? That way it could run in a Linux terminal and be faster, more efficient and less error-prone to use. The emulator could just skip all system calls or direct chip instructions that use graphics or sound.
What I am looking for here is some kind of system that would allow me to run this kind of program:
#include <stdio.h>
int main(void) {
printf("Hello world!\n");
}
in a Linux terminal, but with the actual program being in Motorola 608x0 machine code using the AmigaOS system libraries.
This would allow me to write programs such as:
#include <exec/types.h>
#include <exec/memory.h>
#include <libraries/dos.h>
int main(void) {
BPTR lock;
lock = Lock("DF0:Stuff", ACCESS_READ);
AssignLock("Stuff:", lock);
}
which will (if I remember my AmigaOS correctly) assign "Stuff:" to "DF0:Stuff", all in AmigaOS code, but with the emulator never actually starting up an Amiga GUI, but instead doing the whole thing in a Linux terminal. Note that exec/types.h, exec/memory.h and libraries/dos.h are AmigaOS library headers, not Linux library headers.
Is this kind of thing possible? And if it is, does something like it exist and has anyone else thought about it?