[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