MacVox68 is a Classic Mac OS 7.x (68k) application targeting Mac OS 7.5.3 and built with the Retro68 toolchain. It aims to deliver a TCP-driven text-to-speech client while keeping the UI and build flow faithful to 1990s System 7 conventions.
- OS: Classic Mac OS 7.5.3 (tested in BasiliskII).
- CPU: 68k.
- Application signature: Type
APPL, CreatorMV68.
MacVox68 is built with Retro68 and depends on the MPW Interfaces & Libraries headers (Built against 3.6!). On the host machine, builds are performed out-of-tree via CMake and Ninja with the Retro68 toolchain file. The maintainer drives these builds on a Linux host (not in the Codex container), so avoid container-specific tweaks and keep configuration changes aligned with the host workflow.
If you need Appearance Manager headers, pass APPEARANCE_SDK_ROOT when configuring. It should point at the Appearance SDK headers directory that contains CIncludes and RIncludes (the project stays opt-in so local paths are not baked into the repo).
Example:
cmake -G Ninja ../MacVox68 \
-DCMAKE_TOOLCHAIN_FILE="$HOME/OldMacStuff/Retro68/toolchain-full/m68k-apple-macos/cmake/retro68.toolchain.cmake" \
-DAPPEARANCE_SDK_ROOT="$HOME/OldMacStuff/TheBigOS7DocBlob/ReleaseBits/AppearanceSDK-1.0.4-ReadableOverlay/Appearance Sample Code/Headers"
Retro68 Rez is invoked through the shell, so include paths that contain special characters must be quoted to avoid being split. In particular, MPW's Interfaces&Libraries path must be passed as a single token (or replaced with a symlink that avoids &). The CMakeLists.txt uses a quoted -I argument to keep the path intact when generating Ninja rules, following the safety guidance from docs/rez_gotchas.md.
- Retro68 (toolchain + canonical samples): https://github.com/autc04/Retro68
- BasiliskII (KanjiTalk fork) (emulator reference + hardware behavior): https://github.com/kanjitalk755/macemu
- Inside Macintosh (Apple developer documentation): https://developer.apple.com/library/archive/documentation/mac/
- Classic Mac OS Interfaces & Libraries (MPW headers): https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/MPW_Ref/
The container provides lookup-only classic Mac references sourced from the projects above along with develop magazine content and sample code. For details on what is available in the container and how to use it, consult the local documentation in the docs/ folder.
All UI is currently code-driven from the ui_app and main_window pair:
window_ui.cinitializes the Toolbox (InitGraf,InitWindows, menus, dialogs, cursor) and runs the main event pump.main_window.cowns the main document window, draws its placeholder chrome, and builds all controls/pop-up menus in code.ui_app.handmain_window.hkeep the declarations together so each window can live in its own source file as the project grows.
Because the project ships no Toolbox resources (no Rez .r menus, DITLs, etc.), every menu and control is created programmatically. Avoid adding references to resource IDs that are not constructed in code; if a control or menu is needed, define and build it explicitly at runtime.
The Retro68 sample dialog files now live in legacy/dialog.c and legacy/dialog.r. They are not referenced by the CMake target (which only builds main.c, window_ui.c, and main_window.c) and remain in the tree purely for historical reference.