Me and the Apple II
Keeping up the boring monologues, here’s my Apple II background in a nutshell. Note, of course, no specific references to my 10 year secret life as Australia’s premiere Apple II double agent…
I started programming the Apple II way back in 1979 as a hobby, and I’m still doing it.
Around 1983, I wrote a number of programming utilities such as graphical character generators and program editors. Unfortunately, the only publisher I knew of, was going out of the publishing business, and they decided not to publish it.
From about 1984 onwards, my last year of high school, I started writing copy protection schemes and other utilites, such as backup routines, for local publishers, including Ashton Scholastic and Dataflow, amongst others.
A friend of mine, Alan, and I went to a computer warehouse sale in 1985, and we saw the new UniDisk 3.5″ drives, which had just been released, mistakingly placed on the table of write downs. We grabbed one each. About 15 minutes later, we noticed that the cable was non-standard and realised that we needed a card as well. Running back to the table, we found two of the cards, which luckily hadn’t been sold. Over the next week, I wrote Oz DOS, which was, contrary to popular belief, the first DOS 3.3 released for the UniDisk. It was distributed by a local company, Applix, who built their own 3.5″ drive, and needed a DOS 3.3 driver for it. We met up at a user group meeting where they were demonstrating it. This led to a number of conversion projects for various companies wanting their DOS 3.3 products to ship on a 3.5″ disk, or at least be able to access one. Oh, and Alan helped beta test that first version and even wrote a demo program for it. Thanks Alan.
Meanwhile, the BBS scene had well and truly taken off in Sydney, and I’d started getting involved in writing telecom code. I was amazed at how you could get characters to and from the super serial card and modem, across the phone network, and onto somebody else’s screen. It was fun writing drivers so that people could use AppleSoft and the monitor of someone else’s computer, via modem.
One day I offerred to speed up some of the message searching routines on a local BBS called “Galaxy”, by writing them in assembly. It wasn’t long before all of the CPU intensive routines were rewritten in assembly, and the entire BBS was being marketted as ProBOARD and its successor ProBOARD //. Accordingly, I wrote the copy protection scheme for it, a beautiful spiral sectored beast which to this day hasn’t been copied. When ProBOARD // eventually sold out, I continued to write hacks for it, for sysops who needed support for higher baud rates as well as other modern features. I’m still proud of the high speed GS serial driver I shoe horned into page 3, which had to conform to the ProBOARD interface spec. (Hi Cameron :-)
This led to a number of my own boards, which I wrote myself, and various telecom apps for different people. For a while there, it seemed like telecom was all I was interested in.
In 1986, following the release of the Apple IIGS, myself and the author of ProBOARD started work on an Apple IIGS only bulletin board which allowed free form graphics in messages, and came with a full Apple IIGS application front end. I wrote the host, but the client was never completed. It worked, but wasn’t yet polished enough for everyday use. Apple Computer even gave us a Tenspeed (prototype ROM 03) to develop on. You could liken the project, “GSBS”, to First Class on the Mac, although we allowed graphics, and they didn’t. Because the project was years ahead of its time, we had problems with the amount of traffic being transferred, and asked John MacLean if he was interested in writing some LZW code for us. He did, but we never got around to using it.
In 1988, myself, Cameron Brawn and Sean Craig (both local Apple II sysops) decided to write an online multi-player gaming system, with robots which you controlled by dialing in and making moves. I ended up writing the system myself and running it for a few weeks, but our game design was flawed. This was a good introduction for our next project “The Complex”, which was more of a D&D style game, although still multi-player. I ended up handing the project over to Sean, and he updated it to “The Complex II” which successfully ran for several years with many of us dialing in religiously each week to post our moves and beat the shit out of the other players. I eventually wrote a Mac front end for it, and he went on to write “The Complex III” which was never completed. I was starting to collect incomplete projects…
At around the same time, political trouble started brewing with ProBOARD //, and myself, Cameron again and Andrew Roughan (another local sysop) started to design a new BBS written in assembly, which included its own programming language. I ended up writing most of the initial code, because the others were fairly busy with their educations. However, Andrew Roughan came back on board just in time for him to write the numeric formula routines, and numerous other add ons to round out the language rather nicely. METAL was announced in the U.S. at the same time, which basically killed the Eclipse project. Our code name was SOCA (backwards of ACOS, another BBS language available at the time, but nowhere near as powerful), and the source code still uses the prefix “SA” for each module.
In about 1988, I approached John MacLean again to see if he was interested in writing an Apple IIGS version of Disk Doubler, a file compression utility on the Mac. He didn’t want to do GUI stuff, and I didn’t want to do the compression, so it was a good match. Unfortunately, he got too involved with Graphic Exchange (published by RWP) at the time, and we were beaten to market by two other products, most notably Hard Pressed, by Andy McFadden who interestingly reminded me a lot of John.
In 1990, a number of us Australians went to KansasFest 1990, and on one of the stalls we saw Flopticals for sale, a new type of optically guided drive that stored 20MB on a special 3.5″ disk. We all bought one. Aside from the fact that we stupidly bought them from LRO, we didn’t realise that the 20MB support wasn’t available on the Apple II. The drive still supported 800K GCR and 720K/1.44MB MFM however. A few months later, during a ski trip, I wrote a Floptical driver for the Apple High Speed and Rev C SCSI cards. Matt Gulick, who wrote much of the SCSI drivers for Apple, also released a Floptical driver, which was a commercial product, but his implementation didn’t support the lower media types as well, and required replacing the SCSI.Manager, as well as a new Floptical driver. This was because of a timeout value which was hard coded in Apple’s SCSI Manager. What he didn’t realise, was that you could work around the problem by coding custom SCSI commands, which were also faster, and didn’t need replacing of the SCSI Manager. My driver was also freeware. I hope he had to pay a royalty for selling a new SCSI Manager!
Since 1990, I have had a close working (hobby?) relationship with Seven Hills Software, one of the few companies still developing software for the Apple II. They’re the good guys!
Our relationship began when I was contracted to write the Express print spooler for the Apple IIGS. They found out about me through a local Australian Seven Hills Software distributor, II Series Software (Thanks Jeff). This was the first time I’d written code for a product outside of Australia. Dave Hecker, their Development Manager and everything else it appeared, was amazing in guiding the development process, so much so, that I’ve stuck with them ever since.
But by then my forte was really telecommunications, which Seven Hills were surprised to learn, as they were currently developing an Apple IIGS telecom program called Gazelle. At the time I had just written an Apple IIGS ANSI emulator called Zebra, which used active updating, which I later adapted for use in writing MiniTalk. Seven Hills were after a custom serial port driver, because they were having trouble controlling interrupts at speeds above 9600, which was exactly my area of expertise. And the ANSI experience came in handy as well, when I was asked to write the ANSI and PTSE drivers.
Gazelle went on to be released as Spectrum, which almost immediately became the premier Apple IIGS telecom product. It was written in the U.K. by Ewen Wannop, amazingly yet another telecom code hacker from way back.
My personal claim to fame, was that my code allowed Spectrum to be the first telecom application to support the TurboASB super serial card add on, and with the ANSI display was the first commercial product to support the Second Sight SVGA video board, allowing users to run two monitors at once, one for the ANSI display, and one for working on the Spectrum desktop. Plus, thanks to a suggestion by Paul Zaleski, the ProTERM Special display included an enhanced PTSEX command set for graphical displays. I never really liked PTSE in the first place though, it didn’t seem very logical when most of the same commands were in the ROM of every Apple II as the Pascal 1.1 Firmware.
When 1993 came around, Seven Hills had finally convinced me to do an update for GraphicWriter III, the premier Apple IIGS desktop publishing program, which they had acquired the rights to. They had been trying for a while to find someone willing to take it on, and I guess I was the only one crazy enough to even consider it. The guy who finally convinced me, was Steve Stephenson, at that time another Seven Hills cohort, and now an Apple employee, working on both the Macintosh and Gus, Apple’s PowerMac Apple IIGS emulator.
GraphicWriter III eventually had to compete for time with various other projects, and was finally released in January 1996 after many delays. Initially, it was written by Gary Crandall of DataPak Software, Inc. who had limited experience in writing 65816 code, but had quite a talent for writing algorithms. When I acquired the source, it was uncommented MPW 65816 cross assembler source, with the code written as if to emulate a 68000 (Gary was a 68000 dude), with 68000 pseudo registers on the ’816 direct page. It now sits quite happily in Merlin, on my Apple IIGS where it belongs, optimised for 65816 native.
At the same time, I was contracted by Syndicomm Online Management, to write the Apple IIGS graphical front end for the Genie (at that time named GEnie) online service, code named Albatross, Cassidy and finally Jasmine. Initially it only took six months to build the main application, only then to be bogged down with various bugs in Genie’s host software, and their continually varying political power struggle, which kept affecting their engineering staff.
I need to thank especially Dean Esmay (Syndicomm), Dave Hecker (Seven Hills) and Tom Weishaar (Resource Central) for their faith and support over those years. I also need to thank all the Syndicomm staffies who assisted at various stages throughout the project, as well as Andrew Roughan and Sean Craig, local dudes, for the extra coding they did for it.
The final completed version of Jasmine was released at the end of 1996, and is still plagued by Genie system bugs.
At KansasFest ’96, a yearly Apple II expo, Dave Hecker, Ewen Wannop and myself were having dinner. I started asking about TCP/IP, and talk soon turned to graphical web browsers. Tim Buccheim, a Genie staffie who was at the same table, told us a neat trick that would allow shell scripts to issue http commands, thus opening up a way to browse the web without requiring an Apple II based TCP/IP stack.
Later that night, we were discussing it again, and decided to try it out. Geoff Weiss owned the nearest machine, and co-incidentally worked for an ISP, so we asked if we could use his machine to try something out. A few minutes later, with Tim at the keyboard and the rest of us watching, there was complete silence as we realised what we’d stumbled across. Geoff and Ewen went on to write SIS, the first and to date only Apple IIGS web browser, which didn’t require TCP/IP.
However, I was still interested in this mystical TCP/IP thing, and why it was so hard to write. Having met Geoff when we forced ourselves upon his machine, later that night I cornered him again and quizzed him about it. Gee, is that all? What’s all the fuss about? The next day, I stupidly mentioned to a few people that I was going to start writing a TCP/IP stack, which is probably why only half those at KansasFest ’97 were surprised when I announced and demoed Marinetti in my telecom presentation. A year later on 27th September 1998, I released Marinetti 2.0, which was the last major Apple II project I completed.
Around about this time, the bottom fell out of the Apple IIGS market, and with it went a lot of long time users and developers, including myself. Then around 2004, in the middle of a house move, my wife accidentally sent all of the Apple II gear I’d collected over the years to the dump, including a stack of custom and unreleased hardware, and that was the end of my time writing code for the Apple II. However, I still have an interest in the Apple II community, and am still involved to a small degree. You’ve gotta love the ol’ Apple II.
Around that time I also wrote an IBM System/370 emulator for Intel boxes, and a Java Apple IIGS emulator called Florence, both of which worked but weren’t ever ready to be released.
Applications such as ResLin (resource editor), Pixie (memory debugging utility), my Floptical SCSI driver, MiniTalk (active display CDA telecom program), Scarabaeidae (FDK Finder extra), Eclipse (BBS language, co-written with Andrew Roughan) etc. can be found on most of the big Apple II FTP sites on the Internet. You may find some of my older products, such as Oz DOS (800K DOS 3.3) and The Mover (multiple virtual 5.25″s on a 800K), both pre-1985 and now designated as freeware, via FTP as well. Merlin specific stuff, such as my library of EXE commands (26 in all), MPW to Merlin source converter etc. seem to be only available in Genie’s A2Pro. Likewise, most of my DAs, inits and games seem only to be available in Genie’s A2, the exception being “Code Name Firefly”, which is in A2Pro with the assembly source code.
I’ve also got a whole heap of O/S loaders, copy protection sources, and disk utility code from when I used to do that sort of stuff for companies in the early eighties. I intend to upload them all one day, I just haven’t found the time. If there’s anything specific you’d like to look at, let me know.
There’s a few x86 apps as well, a quick and dirty file encryptor, and a quick and dirty telecom app which also supports The Complex II front end protocol, again only available on Genie as far as I know. Telecom, always telecom.