Series: C Programming on System 6
Hello, cyberpals. In October 2020, I started recording videos of my development of an IMAP client written on my Mac 512Ke (later upgraded to a Mac Plus logic board with 4 MB of RAM) running System 6, using the THINK C 5 IDE.
These days I'm developing other software, but with the same setup: an 8Mhz system with a 1-bit, 512x342 screen, a one-button mouse, a keyboard with no arrow keys, and an editor with one level of undo and no syntax highlighting. Let's see what we can build with it!
Software
I've released some software that I've developed on my Macintosh Plus. All of it is freely released under the terms of the ISC license and includes source code.
- Amend: A small revision control system
- BlueSCSI Wi-Fi DA: A desk accessory for BlueSCSI Wi-Fi
- Subtext: A multi-user BBS server
- Wallops: A modern IRC client
- Wikipedia: An encyclopedia reader
Videos
This list of videos is in reverse chronological order. To be notified of new videos as I publish them, you can subscribe to my RSS feed. There is also a #cyberpals IRC channel on Libera Chat where I and some other interested parties are discussing development on old Macs.
Carl Update, Test Suite, Malloc Tracing
VCF Midwest 18, Subtext FidoNet Support, Wi-Fi DA, PowerBook Batteries
VCF Midwest 17, Wikipedia Reader, and Subterm
Wallops & Talking to the Modem
Video: Q&A
A New On-Disk Database Format
Implementing Multi-User Chat
User Authentication and Telnet Negotiation
A Cooperative Threading Implementation
Amend Revision Control System
SOCKS5 Support
Adding a GUI to diff(1)
diff(1)
but there wasn't any interface to select
files or scroll through the output.
I've since added a proper GUI with the ability to select files or folders, and
in this episode I walk through the GUI and filesystem code and then add a
proper Edit menu.
I also make a formal release of the code and binary available for download.
Porting OpenBSD's diff(1)
diff
utility would be helpful so in this video I port
the guts of
OpenBSD's diff(1)
and show it generating a unified diff between revisions of a C file.
Message Flags
Viewing Messages
int
variables to make them either short
or long
throughout the project.
Parsing RFC822 Dates
Easier LDEFs With This One Weird Trick
LDEF
resource to allow
keeping the list definition function in the main program executable/project, so
in this video I implement the technique for the message list.
Message List Fixes
LDEF
procedures in THINK C for drawing
custom list cells, which I will expand upon on in a future video.
IMAP Protocol Parser Fixes
malloc
ed buffer that
gets shifted around during parsing.
Debugging a Crash
memmove
.