[Freemint-list] FreeMiNT for Amiga
Vincent Rivière
vincent.riviere at freesbee.fr
Mon Jun 27 16:36:41 MSD 2016
On 27/06/2016 00:32, Miro Kropáček wrote:
> This is amazing, who would have thought it's so easy?
Actually, I was completely amazed to see Didier Méquignon and Olivier
Landemarre's work. In 2006, they managed to run FreeMiNT and MyAES on
the M5484LITE ColdFire Evaluation Board. This was very surprising as the
M5484LITE has absolutely no Atari hardware, not even the CPU. By looking
at their patches, I saw that FreeMiNT had actually very few dependencies
to the hardware. Another clue was Milan support: AFAIK, Milan is quite
different than Atari hardware, while FreeMiNT works fine.
The biggest job was to port EmuTOS to non-Atari hardware. Originally, I
made that to run EmuTOS on the M5484LITE, in order to test the ColdFire
patches when the FireBee was not yet available. Through a set of
defines, each hardware component can be disabled in EmuTOS. When
everything is disabled, you have EmuTOS for non-Atari hardware.
Then you just have to add minimal support for new hardware (display,
keyboard, mouse, mass storage) and you have EmuTOS for a new platform. I
suspected it was easy to port EmuTOS to Amiga and indeed, I got the
first results in a few days. Even if I known virtually nothing about
Amiga hardware. Fortunately, the documentation is good. And WinUAE
integrates a nice debugger. And Toni Wilen gave me good hints to make a
ROM bootstrap.
Back to FreeMiNT: I did more or less the same thing as Didier and
Olivier, but I took the time to do that the clean way, so patches can be
safely integrated into official FreeMiNT sources and binaries. And voilà
:-) This was more or less a matter of removing a few minor MFP
dependencies. And keyboard hooking.
The only significant feature I needed to introduce in both EmuTOS and
FreeMiNT was the _5MS cookie. The Timer C 200 Hz vector is almost the
only thing that FreeMiNT needs to hook for its multitasking job. Since
non-Atari hardware has no Timer C, the actual timer vector is elsewhere.
The _5MS cookie simply tells where that vector resides, and FreeMiNT can
hook it. Very simple.
> (I mean easy as the number of lines of code, not implying that your
> job is less than awesome!)
Hehe, I love to compare the result to the effort. Here we have a huge
result for a minimal effort :-) But someone had to try that, and AFAIK
no one tried EmuTOS or FreeMiNT on Amiga before me.
> And voila, now you can run not only the same executables but also the
> same OS, incl. VDI/AES which is nearly hard to believe, far beyond
> what Linux/m68k, oAESis etc could provide.
Hehe, exactly :-)
Really, the key point is that unlike most TOS ones, almost all FreeMiNT
user programs never use the hardware. So wether they run on Atari,
Milan, Amiga or anything else, they still work fine, unmodified. The
only requirement is a reliable 680x0 CPU (unlike the unfortunate FireBee).
And best of all, there is no crap running behind FreeMiNT / EmuTOS. You
are free to switch to supervisor, use the whole Amiga hardware, make
clean FreeMiNT drivers, etc... All of that using classic Atari
development tools :-)
--
Vincent Rivière
More information about the Freemint-list
mailing list