Minix-ST Cross-Development

This page describes what you need to build a Minix-ST 1.6.25 cross-development environment on a Unix like OS, with a M68K cross-compiler featuring modern versions of GNU gcc (currently 9.5, 10.5, 11.4 and 12.3) and binutils (2.30).

The toolkit is based on the original Minix-ST 1.6.25 source code, as distributed in the form of diffs relative to Minix 1.5.10 in the spring of 1993.

As a first step you need to download and unpack this tarball. This will automatically create a directory crossdev, in which you will find the buildcrossenv.sh script. Running this script downloads the required GNU distribution files and my modified Minix-ST 1.6.25 , if not already present in crossdev/distfiles. Subsequently it performs a complete build and installation of binutils, gcc and the Minix libraries in a directory that needs to be configured in the script (currently $HOME/crosstools). Be aware that the script will delete this directory first if it already exists and be advised not to run the script with superuser privileges and to check beforehand whether your backups are in working order.

Once you have built the cross-tools you can either source or execute the script devenv in the directory crossdev to set several environment variables and you are ready to go. You can use m68k-minix-atari-gcc to directly create Minix-ST 1.6.25 executables. You can generate a bootable OS floppy image by running make from the directory minix-1.6.25/usr/src.

For more details, see the README file in the crossdev directory.

I have tested this scripted procedure on FreeBSD 13.2, on Mac OS X El Capitan and on Linux. I have seen evidence that the script has been adapted by others to run on Solaris, although I did not receive any feedback on that. Antonio Eleuteri adapted the script to run on Cygwin and kindly contributed his changes. Remember that you will need C and C++ compilers and the zlib library on your host platform. On FreeBSD, you will also need gmake, from either ports or packages.

This release also supports the Atari TT. The variant for that platform still has some issues and a lot of effort will be needed to get the OS and the development environment functioning as reliably as they do for the 1040 ST and the STonC simulator.

I have made a start with cleaning up the Minix source files, to reduce the number of warning messages during compilation of the library and the OS components.

The workaround previously needed to prevent multiple definition errors while linking C++ programs is not needed anymore.

Finally, I have added versions of ash (the Almquist shell, as provided with Minix 2.x) and awk (the original one-true-awk, as still maintained by Brian Kernighan) to the tree, including working makefiles.

Please keep in mind the somewhat experimental status of this software, but do not hesitate to contact me if you have any questions or remarks, and please drop me an email if you actually try this software, whether successful or not. I am very eager to hear what host platform you use and on what type of Atari (or other M68K?) target you run (or intend to run) the resulting code.

For future releases I intend to work on cleaning up the makefiles and the build script and I still have to decide on the possible inclusion of my statistical profiler (i.e. the profil(2) system call and the prof(1) command.) Also, I am wondering if I should provide a ready-to-run binary version, probably something like the demo disk from the Minix 1.5 era. Please let me know your opinion about this.

In the not so near future I will need to switch from the ancient a.out executable format to ELF and it is probably possible to switch to full 32 bits mode without too much trouble, though it will break binary compatibility. I also have a software floating point library (written in C) that I want to integrate in my cross development environment. It is far more correct than the M68K assembly version provided with GCC (it passes the "Paranoia" test with "excellent" results) and is only slightly slower. It might also be a good idea to bring libc and libm more up-to-date with respect to the C11 standard.

Update July 2021

Due to a very low number of non-robotic downloads and the lack of feedback for the last year or so, I must conclude that there is no real interest anymore in regular updates of this cross development kit. With the release of GCC 11.2.0, I will stop releasing these updates. I will continue my development, but plan to prepare releases at major milestones only, though an annual update to newer GCC versions is likely.

Still, if you need anything specific, e.g. help with ports to other M68K based hardware, please feel free to contact me.

Contact

You can reach me via email as hans@beastielabs.net.

Back to home

Copyright © 2014-2024 Hans Ottevanger. All rights reserved.