GS/OS Applications
- Don’t Fret (1996–1998)
- Don’t Fret is a program to display chords and scales (25 of them)
for stringed instruments. Features include support for custom tunings and
string counts, so it can be used with banjos, ukeleles, dulcimers, violins,
guitars, et cetera.
- GShisen (1998-2000)
- My take on Shisen Sho aka Four Rivers. A deceptively simple tile-matching
game; remove all 32 tiles as quickly as possible. The limited colors, resolution,
and tile size meant that doing the tile artwork was one of the hardest parts
of this game. It was written in a combination of C and 65816 assembly for
some speed-critical parts.
- Printer Dumper (1998)
- This was a quick and dirty little application to send a file straight
to a printer. Presumably the file would be something the printer could handle
(HP PCL, PostScript, et cetera).
Twilight II Modules
- Bubbles (1997)
- A Twilight II module which draws bubbles or squares. This was the second
T2 screensaver I wrote, and probably my favorite. The effect is based on
a small demo program I found in the AOL file libraries in the early/mid
90s.
- InkBlot (2004)
- A Twilight II module which draws inkblot-like designs.
GNO/ME Utilities
- blist (1997)
- List an AppleSoft BASIC file. Works with orca or gno/me. I didn’t
have any documentation on how AppleSoft tokenized the files on disk, so
I had to hexdump a lot of test files until I had all the tokens documented.
Some of the code is recycled in the Babelfish translator below.
- peek (June, August 1997)
- Show the SHR screen from GNO or ORCA shell. Not terribly exciting.
- rlist (1997)
- List the resources in a IIgs or Macintosh resource fork. Works with orca
or gno/me. The information on Macintosh resources came from the Macintosh
Toolbox books (which my library amazingly had!).
- scrappy (1997)
- Copy or paste text to or from the IIgs clipboard. Requires gno/me.
- shir (March 1997)
- Shell Interface for IR, IR being Apple's Init Restarter utility to install
system files on the fly. IR allowed you to install system files from gno
or orca shells. It’s pretty straightforward — or would be if
not for a bug with the _ShowBootInfo tool call which caused crashes. I had
to patch the toolbox and replace the call.
- Marignotti (2012)
-
GS/TCP was a BSD socket implementation, so it needed to be in the GNO/ME kernel.
However, it couldn't be in the kernel for financial reasons — it was going to be a
separate (commercial) product. The solution was a new kernel call (InstallNetDriver) which
installed a function pointer. Anytime the kernel needed to do something with a socket (open,
read, write, et cetera), it would ask the net driver to take care of it. Marignotti is
a net driver that uses Marinetti to provide TCP functionality. Also included in the package
are updated versions of ftp and whois, plus a simple IRC client.
- gopher (2012)
-
A gopher client for GNO/ME. Actually, it was intended to be a lightweight version of CURL,
so it also supports HTTP. I even started working on SMB support. Maybe someday.
Finder™ Extras
- AddMessage (1997)
- Adds the selected icons to the Message Center. The Macintosh Finder allowed
you to drag and drop a file onto an application to open the file with that
app (instead of using the default application). With AddMessage, you could
get the same functionality — select a file, AddMessage, then launch
whatever program you wanted. The most interesting part of this program is
this comment in addmsg.rez: “Silly Rabbit, PIFs are for kids!”
Well, it seemed funny to me.
- GnoP8 (March 1997)
- Prevents Finder™ from launching ProDOS 8 applications while GNO/ME
is active, which would cause a crash. Now that GNO/ME is open source, I
should probably add this functionality to the gno kernel proper.
- Lilan (1998)
- Finder™ Extra to quickly launch the 10 most recent applications.
The Macintosh Finder had a folder with aliases to the most recently launched
applications. This was a clone of that idea, and one of my favorite (and
most useful) programs. The first version only kept track of 5, but I found
that to be too limiting. “Lilan” nominally meant “List
It Like A Nerd”, but it was actually named for something (someone)
else.
TCP/IP
- ifconfig (2003?)
- A commandline utility to connect/disconnect Marinetti. Requires a shell
such as GNO/ME or ORCA.
- Marlene (2000-2004?)
- Marlene is a 4-color vt100 telnet client. Instead of using the (single
color) text screen for displaying text, it uses a 640-mode super hires character
generator, which allows it to use 4 distinct colors. The character set is
copied from the text generator characters, but slightly narrower. This started
out as an entirely different concept (darlene), but I refactored it for
vt100 and telnet use. Requires a shell such as GNO/ME or Orca.
- QServer NDA (2004)
- A Quote of the Day server. Requires Marinetti. This was mostly written
as a demonstration/proof of concept for a TCP server and to test the queueing
capability for handling multiple requests/connections simultaneously.
- TCP Snooper CDA (2004)
- A Classic Desk Accessory, displays information about active TCP connections.
Requires Marinetti. I originally tried using the GS/OS console driver for
text output (one of the IIgs technotes recommends it), however that was
a problematic, so I switched to using the TextTools.
- Silver Platter
- The first (and only) IIgs NDA HTTP server. Supports HTTP .9–1.1.
Formerly a commercial product sold by Syndicomm.
As of 10/1/2011 I have reclassified it as freeware (Syndicomm still sells a disk version which might include documentation).
I also have a page with more details here.
Miscellaneous
- Apple 8/16 Font (2005)
- This is a windows bitmap font of the Apple II ROM character set, including
mouse codes. Being a bitmap font, it only is useful for graphic applications.
- Babelfish AppleSoft BASIC translator (1998)
- Converts AppleSoft BASIC files into text. Requires Babelfish. I recycled
the blist code (above) into this work of art. Babelfish (a universal text/graphic
converter) was a good idea, but it didn’t really catch on.
- Deterministic Finite Automata (DFA) library (fall 2004)
- This is a tool for creating a simple DFA table and a function to do string
matching. The DFA is case insensitive and doesn't support regular expressions.
The dfa compiler tool can output the table as a binary file, a linkable
OMF file, or c/asm code.
- PNG Floyd CDA (winter 2004/2005)
- PNG Floyd saves a super hi-res screenshot…as a PNG graphic. Although
the PNG file format is well documented and standardized, the compression
(deflate) is not nearly as nice — the RFC suggests looking at the
source code for zlib, which is an amazing mess. I spent a fair amount of
time looking at file dumps of small png graphics to get a handle on how
the compression was working, and then used a perl script to verify my compression
output could be decompressed. For compression, I only did a 1-byte run length
encoding, and I only compress one line of the image at a time, so recompressing
would be a good idea. Supporting multi-byte RLE could help the compression,
as would using 4-bit graphics (if 16 colors or less).
- WaitCtrl Control Definition (2004)
- Draws a “rotating barbershop” pole to signify an operation
with an indeterminate end time Includes a sample NDA which shows how to
use it. This was originally written as an offshoot of a dict NDA I was writing.
That work was abandoned after another dict client was released.
- Dragon Words CDA (Summer 2015)
- So you're playing Dragon Wars
and it tells you to read paragraph 38.
You can either dig through your book to find it (or, perhaps search through
a PDF to find it) or you can drop into this desk accessory. Data is stored
in the resource fork (as a binary blob) with an index for fast lookups.
Additionally, text is fully justified (thanks to some pre-processing with the
par utility).
ORCA/X
Patches to ORCA compilers.
Java
Java utilities of interest to Apple II users
In 2006 or so, I worked on some Java utilities for managing OMF files. This included
an incomplete linker and an even more incomplete assembler.
© 2004–2013 Kelvin W Sherlock