Comment by skywal_l
1 day ago
There is fundamental difference between Windows and AmigaOS is that you usually want to run Linux+wine on a the same hardware you would run Windows. That's why wine is not an emulator. Whereas, in the case of vamos, the AmigaOS hardware is not a PC.
They explicitly states that in the link: "It will run typical console binaries that do not rely on user interface [...] This approach will not run any applications or games using direct hardware register access - for this use case a machine emulator like FS-UAE is the tool you will need..."
There's a lot of Amiga software that doesn't rely on direct hardware access.
Couple that with AROS providing implementations of all the important parts of AmigaOS, it'd be possible create something that supported the GUI as well. It's a decade+ since I did any work on the AROS source, so I don't remember how much work it might be to retarget the window rendering to open and update actual windows of the OS it runs on, instead of compositing to a window representing the full screen.
The caveat is that a lot of AmigaOS apps open their own "screens" (virtual desktops) and expect to be able to open windows on them, in which case you might end up with a bunch of full-screen sized windows anyway. Then you might as well run full AROS.
For that reason I think the limitation of this is probably fine: Use this for command line programs you want to run in your regular terminal, and just spin up AROS or FS-UAE to run programs with a gui. I can spawn AROS with a custom StartupSequence to "boot" right into FrexxEd (an editor co-written by the guy behind Curl) and have it spin up the entire OS and the editor faster than a typical Emacs session...
The comparison with WINE is quite apt, though. Although it is using a 68000 emulator, unlike WINE which is purely native code, it is taking the same approach to implementing AmigaOS as WINE took to implementing Windows: it offers the normal API entrypoints, and as soon as programs call into them, it takes over and does things natively.
VAMOS writes as few 68000 instructions into the emulator's memory as possible; as soon as the program calls an AmigaOS API, the emulator traps it and handles the implementation in Python.