Not that I need another UNIX, but I came across this fine thing googling around for some Mach based OS’s running on the 68000, and well here is MachTen. Perhaps the most notable thing about MachTen is that it is capable of running in usermode under MacOS. Without a MMU.
# cc -v hi.c -o hi
gcc version 1.40
/usr/local/PMtools/cpp -v -undef -D__GNUC__ -Dunix -D__MACHTEN__ -DMACHTEN -DTENON -D__unix__ -D____MACHTEN____ -D__MACHTEN__ -D__TENON__ -Dmc68000 hi.c /var/tmp/cc000093.cpp
GNU CPP version 1.40
/usr/local/PMtools/cc1 /var/tmp/cc000093.cpp -fno-builtin-alloca -fno-defer-pop -quiet -dumpbase hi.c -version -o /var/tmp/cc000093.s
GNU C version 1.40 (68k, MIT syntax) compiled by GNU C version 2.3.3.
default target switches:
as -mc68000 -o hi.o /var/tmp/cc000093.s
ld -o hi -x /usr/lib/crt0.o hi.o -lc
# size hi
text data bss dec hex
11220 400 1672 13292 33ec
And yes, it even supports TCP/IP with it’s own TCP/IP stack. It can even operate as a router of all things! From a users point of view it is a little sparse, but it’s 4.3BSD, and thankfully includes the C compiler, so unlike of UNIX of the era on ‘small hardware’ this one isn’t crippled.
TCP/IP is configured through the MacOS via the control panel. As you can see it can use AppleTalk, Ethernet and TokenRing interfaces. For my simplicity, I’m just using SLiRP on the Ethernet, so it’s the old 10.0.2.15/24 setup. I re-compiled my BasiliskIII to redirect a port into the VM so I can telnet into it.
To install System 7.0.1 you need to set Basilisk II / Cockatrice III as a IIci. I went ahead and used this ROM. The ROM however does expect there to be a FPU.
Running however, I’ve been able to set the CPU to 3 or 4 (68030/68040) and it’s fine, I think the major thing is the modelid. If I try this under System 8 which needs a 68040, then it’ll crash in spectacular ways. You don’t need MacTCP as again MachTen is a 4.3BSD kernel with Mach 2.5, so it has it’s own.
MachTen also includes support for NFS! This greatly eases getting data in & out of the system. To mount my Synology I just need the following command:
mount -t nfs -o timeo=1,retry=1,rsize=512,wsize=512,retrans=1 192.168.1.3:/volume1/Data /mnt/data
And I’m good to go!