I've wanted a simple revision control system on my Mac since starting
development of my IMAP client.
Porting a large system like Git or even CVS would be overkill (and very slow),
but maybe something small like OpenBSD's
RCS
implementation would suffice.
For now, just having a 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.
In this episode, I fetch the flags of each message and for unseen messages,
make them appear in the list in bold.
That introduces an off-by-one which I run out of time to fix while recording.
Today, I implement plaintext message viewing and hook it up to the message list.
I also review a cleanup of int variables to make them either short or long
throughout the project.
I wrote a utility function to parse RFC822 dates/times sent by the IMAP server,
which then converts them to a UTC time.
In this video, I hook it into the IMAP parser and add a resource string for the
local timezone offset setting, so these UTC times can then be converted to a
local time and displayed in the message list.
I recently read about using a jump instruction as an 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.
In this video, I get the list of messages displaying again and fix a bug that
occurred when closing a mailbox.
I provide a quick summary of creating LDEF procedures in THINK C for drawing
custom list cells, which I will expand upon on in a future video.
In this episode, I fix the off-by-one error in the IMAP envelope parser noted
in the previous episode, then improve the tracking of a malloced buffer that
gets shifted around during parsing.
Returning to the development of my IMAP client, in this video I add
functionality to fetch the default mailbox name from the resource file (later to
be moved to a preferences window) and then eventually locate a crash in the IMAP
protocol parser from a bogus memmove.
In this video, I create a new GUI application from scratch, create a resource
file and add an image to it, and then display that image in a window.
I also cover using THINK C's debugger to inspect a struct.
Then, my Mac dies.
I've been writing an IMAP client for and on my
Mac 512Ke
over the past many weeks.
Taking inspiration from
Andreas Kling's
excellent YouTube videos documenting his development of the Serenity operating
system, I thought I'd start screencasting some of my work.
This video is the first of hopefully many and presents a quick introduction to
System 6, HFS resource forks, THINK C 5.0, and a look at some of the progress
of my IMAP client so far.
posted on thursday, september 3rd, 2020
with tags
mac,
networking,
openbsd, and
retrocomputing
last updated on thursday, september 10th, 2020
Now that my Mac 512Ke is able to use
PPP
for native TCP/IP, I wanted an easy way to do PPP between it and an OpenBSD
server on my network.
I initially did this with a physical serial cable, but was later able to do it
over TCP so I could retain the use of my
WiFi232.
I recently came across an unused Dove Computer MacSnap RAM upgrade on eBay, so I
bought it and installed it in
my Mac 512Ke
to bring its RAM up to 1 MB.
posted on friday, may 15th, 2020
with tags
laptops and
openbsd
last updated on friday, july 31st, 2020
part of OpenBSD on Laptops series
I used OpenBSD on the
original Surface Go
back in 2018 and many things worked with the big exception of the internal
Atheros WiFi.
This meant I had to keep it tethered to a USB-C dock for Ethernet or use
a small USB-A WiFi dongle plugged into a less-than-small USB-A-to-USB-C adapter.
Microsoft has switched to Intel WiFi chips on their recent Surface devices,
making the Surface Go 2 slightly more compatible with OpenBSD.
Last year I
wrote about the Cidco MailStation
and how I was using it as a Z80 development platform.
One of the biggest hurdles to running code on them is that it must be
uploaded over the MailStation's parallel port with a LapLink cable and some
custom software (although it's certainly easier than having to pull and
flash a chip).
I recently created a USB data loader device that allows for easier development
from a modern computer and implements the MailStation's custom data encoding
routines in its firmware.
Back in 2017, I bought an
Arduboy,
a fun little Arduino development system which integrates an ATmega32U4 8-bit
CPU, 32 KB of flash storage, 2 KB of RAM, a 128x64 pixel OLED display,
some buttons, a speaker, and a battery in a Gameboy-like package.
OpenBSD had an
old Arduino package
available without the
Arduino IDE, and it instead included
a custom
Makefile
for end-users to build off of for compiling projects.
But it was all pretty old and crufty and kind of sucked the fun out of tinkering
with a new piece of hardware.