I am proud to present AIRConfig for GlobalTalk 1

Posted 2024-03-26 | Back to blog index

I am proud to present AIRConfig for GlobalTalk 1.0! The all-singing, all-dancing, feature-complete final version. Just in time for the end of MARCHintosh!

To the uninitiated, to participate in GlobalTalk you need to add 80 IP addresses to Apple Internet Router. Manually. One-by-one. AIRConfig automates this!

AIRConfig 1.0 can get a list of Host IDs from a local file, a file share over GlobalTalk, or now with 1.0, from a web server! Making it easier than ever for new members to get set up

With previous versions, new members would have to add at least BaroNet, and preferably PurrTopia manually, then use AIRConfig to add everything else. A confusing and hard to explain workflow. Now to get set up you can just download a SIT file, add it to your image, and then type in a secret URL off the Google Sheet to pull down all the Host IDs!

And using Headless Mode, it's easy to automate the updating using a tool like QuicKeys!

Oh and version 1.0 finally has a custom, non-stolen icon!

AIRConfig for GlobalTalk 1.0, showing a domain name configuring a Router Config file

Get it from “Blackbird” on “BaroNet” on GlobalTalk, or download it here: http://kalleboo.com/linked/AIRConfig1.0.sit

The file share containing AIRConfig

AIRConfig was fully developed in MPW C using period documentation and tools (the most anachronistic part is working on a G4 Quicksilver 2002 with MacOS 9). I would have cheated and Googled things, but I was completely unable to get any useful results

As someone who's never made anything non-trivial in C before, the most difficult parts were dealing with strings (and Pascal vs C strings), and figuring out the MPW build chain

It was fun using MacsBug for actual debugging for the first time!

MPW in action MacsBug crashed in my app

One other thing that this taught me that I rely on so much that was not available back then is multiple undo! Pretty much all these old tools only have a single undo

If anyone is curious, the source code is available on Blackbird. This is not good code, do not learn from it. There are memory leaks I have not tracked down - keep switching between file and URL and it eventually quits, luckily I noticed this when the RAM allotment was only 150 KB so raising that to 800 KB hopefully nobody notices!

I started this code base by modifying the "Sample.c" sample code that ships with MPW. It explicity says in the code comments "this is not to be used as a template, it will not work for your next 600 K application". Man imagine how bloated an app must be to reach 600K!!!

There are a couple more System 7 niceties that I would have wanted to get in there - Balloon Help, Drag & Drop, AppleScriptability... But I've already spent way to much time on a tool that likely nobody will use.

But in conclusion, it was tons of fun role-playing as a 1990's Mac application developer, and it feels like an accomplishment finally being able to say I've built a native Classic Mac application after all these years!

Addendum

Choosing MPW may be a continuous choice. The other main options were CodeWarrior and THINK C

The main reason I went for MPW was I had experience with it - the only other time I've written native Mac code was back in like 1998 I wrote some HyperCard XCMDs, and then I used MPW which was fine

I would have also expected Apple's sample code to all be MPW but it's a complete mix - some samples are MPW, some are THINK, some are CW! The MacTCP sample code was an MPW tool, with THINK headers!

One thing that confused me for a while was that at one point Apple renamed a bunch of fundamental system APIS. "DisposHandle" became "DisposeHandle" etc. This caused various vintage of sample code to not compile until I found a legacy compatility define flag to enable...

Addendum:

In the demo video I used a local machine so it's so fast that you can't tell, but the status window you see in the video for the internet download is also used when it resolves an alias over GlobalTalk.

It even extracts the AppleTalk zone name out of the stored alias to display.

A dialog in System 7 style that says “Loading input file in zone PurrTopia.”

Back to blog index