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 # ./hi hello!
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.
rom Mac-IIci.ROM
modelid 5
cpu 2
fpu true
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!
Nifty! Now where’s the disk set?
Here’s a pretty useful MachTen resource:
http://www.floodgap.com/retrotech/machten/
I found that one, however it seems to be more so for the PowerPC version. I contacted their sales to see if the 68k version is still availble, but they were pushing me to PowerPC.. I guess we’ll have to wait and see.
Wow! I can’t believe Tenon is still selling powermachten all these years later. Iirc, it was already discontinued and that was it.
Oh btw check Macintosh garden if the latest is a available.
I ‘found’ a 2.4 but it’s horribly unstable under BasiliskII … I need to play with MacOS under Previous, as it’s got a far better CPU emulation
2.3 was the last 68k version released, and for OS 8 support there’s a 2.4 patch which is just a new kernel. (This is all at the garden, look for “Professional MachTen” which is the 68k version, “Power” was for PPC).
One of the coolest parts of 68k MachTen (and which wasn’t implemented for PPC) is that when you do have an MMU, it hijacks the Mac memory manager to implement real memory protection and VM/paging! This has the funny side effect that you can’t quit MachTen once it’s launched–a quit requires a restart because there’s no other way to restore the Mac memory manager.
Unfortunately I haven’t found any collection of more recent 3rd party/open source software built for 68k MachTen like there is for A/UX. It’s a shame, as it’s far easier to set up and with much better HW compatibility than A/UX.
You can always try building some yourself, its not as hard as most people feel, thanks to autoconfigure.
the things you are going to hit as a limitation is the C compiler is ancient. GCC 1.40 is old. Very old. I don’t know if they made changes to it, but I suspect Tenon has lost all their source by now, and all they have left is a mountain of the PPC CD’s. I emailed them to ask some questions, and the only reply I got was telling me to buy the PowerPC CD, which isn’t what I wanted in the first place.
I had built an IRC client, but the whole thing explodes, just as pasting through putty, I suspect it can’t handle “fast” networks, as I can do simple and interactive stuff just fine.
And of course this is 4.3BSD, I suspect it would be 4.3BSD Tahoe. While that source is available, it is from 1988, or perhaps it incorporates more from RENO, but I haven’t really dived deep enough.
i just discovered MachTen and it looks really cool! I’ve been trying to set it up in Cockatrice and Basiliks to no avail. It bombs in an unimplemented trap, guess it needs a patch I can’t find.
Would you care sharing your disk to see MachTen working?
I have a secret file here, although you have to read the 404 error for the username and password.
I tried with an OS X build and it’ll come up just fine. Of course serving stuff like gopher however broke it’s back. I’m guessing that since it crushed on my LC it probably is more so a MachTen fault.
On Basilisk and Cockatrice Machten bombs when virtual memory is enabled under the MachTen Controls memory settings in the Control Panel. Try disabling the virtual memory.
Machten on 68k uses the mmu to provide memory protection (unlike the ppc version).
On
Yeah add more memory to the system, dont’ use VM!….
Ive been meaning to try to hack a better 68040 emu onto it, but motivation and time always …. kill me.
Early Basilisk as used in Cockatrice supposedly supported using the native 68k cpu on NetBSD and Amiga hosts. It would be interesting for MachTen and NetBSD on NetBSD as an experiment (if possible with the relocated memory map in native mode). I’ve never seen a native mode cpu build for the Amiga, but one would be a good test because the NetBSD version seems to have some issues. I’m not familiar enough with the Amiga to do a build there.
The only working reports I’ve seen are for NetBSD 1.4 that lacked kernel pthreads and couldn’t do networking as a result according to the INSTALL notes from around Basilisk 0.8 in 2000 (https://github.com/cebix/macemu/blob/master/BasiliskII/INSTALL). NetBSD 2.0 added kernel pthreads, but I don’t think Basilisk ever added support for them and Basilisk does not want to build there in native mode. I can send you the details if you’re interested. I’d like to see the capabilities and limits of native mode sometime. It’s just one of those mythical setups that would be neat to stress test.
I remember this being such a ‘big deal’ and this is of course where products like VMware really pulled ahead on the 386 as it turns out a chip that supports virtualisation made emulating privileged mode instructions much more easier than the 68k stuff. It’s amazing just how forward thinking the 80386 was! And of course Intel never hit that brick wall (well it seems it’s finally happened as they still haven’t cracked 10nm) and they just kept getting faster and faster first to 100Mhz, then 500Mhz and onward to 1Ghz and beyond.
It’d probably be better to look at WinUAE/Previous/Hatari for that 68k core as it runs MMU code just fine(ish) and try to figure out how/why Basilisk patches the ROMs and uses invalid instructions to get it to do stuff.
It’s so annoying how people that lifted the UAE cpu core never mentioned where they got it from, what version/level so at least diffing would be a lot easier. Mame took it from System16 which in turn used a generated version that they didn’t include the generation code… Although I did manage (somehow?!) to get that swapped to using Musashi.
I see that the developer of Hatari has confirmed that a number of NetBSD versions boot successfully and provided detailed instructions https://hatari.tuxfamily.org/doc/m68k-netbsd.txt.
I like winuae, but this avoids having to use wine and is a nice simple way to setup a typical constrained 68k machine from the period when emulating a Falcon.
Damn! It’s about time!
The era of 68k Unix is upon us!
Thanks so much!