A graphical user interface for the QEMU virtual machine emulator, showing a window with various controls and information related to the virtual machine.

It’s been quite rewarding diving back into C programming lately, and the main focus has been my little project, csend. It’s a peer-to-peer chat application I’ve been tinkering with. The big idea is to get it running smoothly on different systems, specifically modern POSIX platforms like Linux, and, for a bit of a retro challenge, classic Mac OS.

I’m chuffed to say there are now working builds for both! The POSIX version, which I typically run on Ubuntu, is coming along nicely with a decent set of features. The classic Mac OS version, built for System 7 with MacTCP, is still in its early days but it’s definitely alive. At the moment, it fires up the classic Mac GUI and sends out the initial UDP broadcast message to announce itself on the network. This means the POSIX version can see it pop up, which is a great first step.

To show how things are shaping up, I’ve put together a demo video and popped it onto YouTube. In the video, I run through:

  1. Getting the POSIX and Classic Mac client compiled and running on Ubuntu.
  2. Showing the current state of the System 7 version running on my Performa 6200 with System 7.5.3
  3. A quick look at the source code structure, highlighting how I’m trying to share as much ‘vanilla’ C code as possible between the platform-specific bits (POSIX and classic Mac).

The POSIX version handles the core chat functionality, while the Mac version is currently focused on the user interface and network discovery. It’s a fun challenge managing the different APIs and environments!

CSEND Demo 1 - POSIX and Mac OS System 7 Build

If you fancy seeing it in action or you’re just curious about mixing modern and vintage C programming techniques, give the video a watch. You can find the source code over on the GitHub page if you want a closer look.

Cheers!

Tags

Programming C RetroComputing Development MacOS P2P Networking