MoofTCP 1.0 Brings a Lean TCP/IP Stack to System 6 Macs
MoofTCP 1.0 offers a from-scratch MacTCP replacement for 68k Macs running System 6, with a DHCP client, control panel, installer, and low-memory design tested on a Mac Classic and Snow emulator.
MoofTCP 1.0 is a new MIT-licensed networking stack for 68k Macs running System 6. It is designed as a drop-in replacement for Apple’s MacTCP, with its own control panel, installer, and DHCP client. The project targets machines like the Mac Classic with 4 MB of RAM, where every byte of resident memory matters.
A Fresh Stack Behind the MacTCP Interface
MacTCP has long served as the TCP/IP interface for System 6, but on a 4 MB Mac Classic connected through a SCSI Wi-Fi/Ethernet adapter such as BlueSCSI, it can be slow to respond, memory-hungry, and awkward to configure. MoofTCP’s developers list reliability, low latency for interactive sessions like telnet, and throughput as priorities, and they aim to use no more resident memory than MacTCP. The implementation is new code in portable C, not a patch to Apple’s stack.
MoofTCP implements the MacTCP .IPP driver interface, covering TCP, UDP, and ICMP echo, along with the dnrp name resolver. Existing MacTCP programs run unchanged. The installer moves MacTCP’s files aside, installs MoofTCP, and its Remove button restores the original state. Interrupted installations repair themselves. The control panel supports either a static address or DHCP. A separate MoofTCP Lite build omits DHCP to save about 5 KB of system memory, and a single installer carries both variants behind a checkbox. MultiFinder-awareness is built in: quitting an application that has open connections triggers cleanup. For diagnostics, MoofTCP keeps an optional in-memory log and ships a small MoofDiag tool. The core stack lives in core/, uses no malloc and no global state, and is tested on desktop hosts with AddressSanitizer, UBSan, and fuzzers.
What Has Been Tested
The project has been tested on a real Mac Classic with System 6.0.8, 4 MB of RAM, and a BlueSCSI v2 WiFi with DaynaPORT, as well as in the Snow emulator. Flynn and Wikipedia Reader work on both real hardware and the emulator. MacTCP Watcher, NCSA Telnet, Fetch (FTP), and TurboGopher work in the emulator. Eudora starts, but mail was not tried.
The release is distributed as .dsk, .hqx, and .sit archives; StuffIt Lite 3.6 is tested for expanding the .hqx packages.
Memory figures from the release: the full driver code is 95,623 bytes and the Lite version is 90,722 bytes. On a real Mac Classic using the standard Finder, free system heap after a first open of the full build is about 30.7 KB. With MultiFinder, the system heap grows on demand, so free memory varies more.
MoofTCP does not include an Ethernet driver. It requires an adapter that provides the .ENET0 driver; the tested hardware is a BlueSCSI v2 WiFi with DaynaPORT. System 6.0.8 is the only version officially tested.
Known Limits and Building
The DHCP implementation is basic. It does not perform lease RELEASE, INIT-REBOOT, or address-conflict probing. While it runs, programs cannot use UDP port 68. If no DHCP server is present, the first open waits about 10 seconds and then fails. There is no IPv6 support.
Building from source uses Docker and a pinned Retro68 cross-compiler image, which is pulled automatically. The build scripts produce either the full MoofTCP file or MoofTCP Lite. Host tests run through CMake and ctest, with ASan and UBSan enabled by default. Emulator tests require Apple system software and a BlueSCSI DaynaPORT image supplied by the user; those files are not in the repository. The project layout keeps the portable core separate from Mac-specific glue, host tests, scripts, and tools. Contributors are asked to run host tests before submitting code changes, and compatibility reports for specific programs are welcome. The developers also plan longer bake-in tests on real hardware, a similar remake of DaynaPORT under the name MoofPort, and possible optimizations for older systems.