My Apple II Software
I’ve written more than a little software for the Apple II over the past ~30 years; what’s on this page is some of the more recent stuff I’ve done. All of it is offered free-as-in-speech; the license under which it’s offered is linked in parentheses.)
- Apple II Beer Fridge Controller (GPL; last updated 25 September 2007)
The BASIC program I wrote to go with the 1-Wire Apple II Primitives (below) was kinda cheesy…device enumeration on startup took several seconds per device, and updating the temperature chart took somewhere around 20 seconds. BASIC is interpreted; it’s going to be slow. In preparation for replacing the Apple II in this role with a custom 6502-based controller board, I decided to rewrite the entire package in C, using cc65. This is the result of that task. The 1-Wire routines contained within should be reasonably portable to other targets supported by cc65. All of the Apple II-specific 1-Wire code is in one file, which would need to be rewritten.
- 1-Wire Apple II Primitives (GPL; last updated 8 February 2003)
This is a library for using Dallas Semiconductor’s 1-Wire and iButton devices on any Apple II with a 16-pin joystick port (this excludes the IIc and IIc+). It takes care of the timing-critical parts of the 1-Wire protocol and allows you to write apps in any language (even BASIC) that use these devices for device control, sensing, etc.
- ProDOS/HFS Partition Table Generator (MIT; last updated 15 December 2022)
This doesn’t directly run on a II (well, it might run on a IIGS with some fixes), but it’s useful if you want to create CD-ROMs that are readable on a II. (I used it to make a bootable IIGS System 6.0.1 install CD.) It creates a partition table with the specified number and sizes of ProDOS and/or HFS partitions. You then concatenate filesystem images after the partition table to make an image file that can be burned to CD-R, dumped to a hard drive, etc. It’s known to build and run under Linux and Cygwin; other POSIXish environments (including Mac OS X) should also work without much fuss. Non-POSIX environments (such as Win32 and older versions of Mac OS) may need some tweaking. As of the latest revision, it finally works properly on 64-bit hardware…finally!
- Hi-Res and Double Hi-Res Character Generator (GPL; last updated 27 January 2003)
These are character I/O routines that work with ProDOS 8’s BASIC.SYSTEM to enable use of the Hi-Res and Double Hi-Res graphics displays for text. This allows you to freely mix text and graphics on the same screen. The Hi-Res version creates a 40×24 display, works with Applesoft’s built-in drawing commands, and works on the 64K II+, IIe, IIc, IIc+, and IIGS. The Double Hi-Res version creates an 80×24 display and works on the 128K IIe (rev. B or later), IIc, IIc+, and IIGS. The font used closely mimics the Apple II’s normal text display, but you could create your own font and use that if you want.
- TMLE: The Machine-Language Editor (GPL; last updated 14 July 2002)
This is an easy-to-use relocatable hex editor. Changing bytes in memory is as easy as typing text in a word processor. Because it’s relocatable, you can load it wherever you want in memory so that it doesn’t interfere with the parts of memory you want to edit. In addition to changing bytes, you can insert and delete bytes. ASCII input is also accepted, including control characters and both high (128-255) and low (0-127) characters. TMLE works on any II under both ProDOS 8 (under BASIC.SYSTEM) and DOS 3.3.
- SoftDAC (GPL; last updated 11 August 1992)
SoftDAC allows you to play digital-audio files (known colloquially as “WAV files”) on 8-bit Apple IIs. The IIGS has fairly nice hardware built in (the Ensoniq 5503 DOC) that can do this, but all the 8-bitters had was a speaker that could be toggled on and off to make beeping noises. SoftDAC takes advantage of the way loudspeakers work to play back 8-bit mono sound (sampled at 11.025 kHz) on the II with passable fidelity (this program uses 4 bits of each sample). The core routine works with any II; a wrapper program is provided that works on a 128K IIe/IIc/IIc+ to play longer samples. This wrapper program also supports RamWorks-compatible memory expansion, so you can play even longer files.