Peer-to-peer text chat between Classic Macs and modern systems over a LAN. Built on the PeerTalk SDK for all networking.
| Target | Platform | Network | Output |
|---|---|---|---|
| csend-posix | Linux / macOS | POSIX sockets | build/csend-posix |
| csend-mac (68k) | System 7+ | MacTCP | build-68k/csend-mac.bin |
| csend-mac (68k) | System 7.5+ | Open Transport | build-68k-ot/csend-mac.bin |
| csend-mac (PPC) | System 7+ | MacTCP | build-ppc-mactcp/csend-mac.bin |
| csend-mac (PPC) | System 7.5+ | Open Transport | build-ppc-ot/csend-mac.bin |
The full dependency chain for building csend:
- Retro68 — Classic Mac cross-compiler (fork with OT fixes). Only needed for Classic Mac targets.
- clog — Minimal C89 logging library. Built from source automatically via FetchContent.
- PeerTalk SDK — Networking SDK for discovery, connections, and messaging across POSIX/MacTCP/OpenTransport.
Retro68 -> clog -> peertalk -> csend
| Variable | Default | Description |
|---|---|---|
$CLOG_DIR |
~/clog |
Path to the clog source directory |
$PEERTALK_DIR |
~/peertalk |
Path to the PeerTalk SDK source directory |
$RETRO68_TOOLCHAIN |
~/Retro68-build/toolchain |
Path to the Retro68 toolchain install |
Run ./setup.sh to bootstrap everything from scratch. It will clone and build all dependencies (Retro68, clog, peertalk) and configure the environment so you can build all csend targets.
Requires PeerTalk SDK, clog, and Retro68 (fork with OT fixes) for Classic Mac targets.
# POSIX
cmake -B build -DCLOG_DIR=$CLOG_DIR && cmake --build build
# 68k MacTCP
cmake -B build-68k \
-DCMAKE_TOOLCHAIN_FILE=$RETRO68_TOOLCHAIN/m68k-apple-macos/cmake/retro68.toolchain.cmake \
-DPT_PLATFORM=MACTCP -DCLOG_DIR=$CLOG_DIR
cmake --build build-68k
# PPC Open Transport
cmake -B build-ppc-ot \
-DCMAKE_TOOLCHAIN_FILE=$RETRO68_TOOLCHAIN/powerpc-apple-macos/cmake/retroppc.toolchain.cmake \
-DPT_PLATFORM=OT -DCLOG_DIR=$CLOG_DIR
cmake --build build-ppc-ot./build/csend-posix <username>
# Commands
/list # Show connected peers
/send <peer_num> <message> # Send to specific peer
/broadcast <message> # Send to all peers
/debug # Toggle debug output
/test # Run automated test sequence
/quit # ExitDeploy .bin to real hardware using the classic-mac-hardware-mcp MCP server. The GUI provides a message area, input field, peer list, send button, broadcast checkbox, and debug toggle.
csend is a thin UI layer on top of PeerTalk. The SDK handles discovery, connections, and messaging. csend provides the interface.
posix/ POSIX terminal UI (2-thread: main PT_Poll + stdin input)
classic_mac/ Classic Mac Toolbox UI (single-threaded event loop)
shared/ Common definitions, Classic Mac UI components
MPW_resources/ ResEdit binary resources (.finf/.rsrc metadata)
- POSIX: C11, pthreads for stdin only, SPSC ring buffer for command queue
- Classic Mac: C89,
WaitNextEvent+PT_Pollin idle handler - Shared:
MSG_CHATmessage type,BUFFER_SIZEconstant

