ShadowM's Commodore GEOS Page(last updated 2014-04-16)
GEOS is a disk-based GUI operating system for the Commodore 64, and was a remarkable achievement for its time (1986). It includes features like pull-down menus, icons, dialog boxes, and proportional fonts. It also has extensive drag and drop capability (e.g. drag a data file to the printer icon to print it, to a disk icon to copy it, or to the trashcan to delete it). Some of its features are still considered modern, like the ability to double-click a data file and have it load in its parent application regardless of name (i.e. no file extensions). Later enhancements made it possible to use RAM expanders, CPU accelerators, hard drives, and more.
The GEOS 2.0 brochure gives a good impression of what GEOS is like and how it was marketed.
On this page you can find everything you need to use GEOS on a Commodore 64: the operating system and applications (all cracked), programming tools and tips, and a few miscellaneous goodies. This isn't the entire contents of my collection, so if there's something you're looking for, email me (shadowm at lyonlabs dot org) and I'll see if I have it. (Note: I've never owned a Commodore 128, so I have no idea if what's available here will run on that machine. Caveat utilitor.)
If you'd like to chat about GEOS usage and writing GEOS programs, there's a #geos IRC channel on NewNet. I've also started a Google group for questions and answers about GEOS.
In April 2010, I released geoLink, an IRC client for GEOS. If you'd like to hack on it, the page at that link contains source code, build instructions, and a PDF of a presentation about the internals.
The Toronto Pet Users Group (TPUG) is selling CDs of their disk library, which was two years in the making. I highly recommend it to GEOS users, as there are 57 D64 images of GEOS software on it (including over two dozen font disks).
Another great resource is the geoSpecific CD, which you could spend years exploring. This is the ultimate GEOS collection, and was compiled by Bruce Thomas, who has given his permission for me to post the contents on the site. (Note: the CD shipped with a note from Bruce, which you can find here). The nice thing about geoSpecific is that there are HTML indexes, so it's browsable from a PC. I copied the entire contents of the CD here, so you can just follow the links and grab the D64s you want to check out. Please be considerate to others and don't download the whole thing at once, or you will start seeing 403 errors. Among the jewels in this collection are the endless collections of fonts... and Dick Estel's Font Resource Directory, which is the canonical reference for GEOS font IDs (if you create a GEOS font, please check to make sure you haven't duplicated an ID). Thanks to Bruce for making this wonderful resource available to all GEOS users!
The GEnie libraries are still available, and contain a lot of GEOS files (including message and conference archives).
You can also find a large GEOS collection on Bo Zimmerman's FTP site.
Here's what you can find here:
|GEOS operating system images||GEOS Programming Tools|
|GEOS device drivers||GEOS Programming Tips 'n' Tricks|
|GEOS applications||High-Level Programming Languages for GEOS|
A word about resources: GEOS pushes the Commodore 64 to its limits as far as hardware and memory usage are concerned; little bits of code and data are constantly being swapped in from disk. You can run it from a single 1541 drive, but you'll be sorry (remember the days of "Bad or missing COMMAND.COM"?). A 1541 and a 1581 or CMD FD are better, and a CMD HD is a joy to use (and well supported). An even faster solution is to get a RAM expansion unit (REU), and set it up as a RAMdisk using the CONFIGURE program. You can work from the RAMdisk and copy your data back to the "real" disk every so often during your session; the speed is really amazing even without an accelerator like the TurboMaster or SuperCPU. Note that if you are using more than one type of drive without an REU, you will need to have a copy of CONFIGURE on every disk that contains the deskTop (see GEOS 2.0 manual, page 27). This is because the disk drivers are normally loaded from CONFIGURE, but if you have an REU, they are cached there. This is one of the reasons why an REU is strongly recommended to work with GEOS.
Here's a bootable D64 image of GEOS, made with my modification of a utility by Paul Bosacki. It must be booted from device #8, and is configured for a single 1541 drive (although you can change that once it's booted by double-clicking the CONFIGURE icon). Mouse goes in port one (closest to you as you face the computer), or if you don't have a mouse, press Commodore-I (that's I for input) and select the joystick driver. This image will also boot from an SD card in a 1541 Ultimate. The kernel has been patched to fix the extra pixel on one side of the lower-case 'z', and to try and recover to the deskTop on a crash. (Also, the kernel image was built from a running copy whose keymap had been changed to match that of a PC. If you'd like me to build you an image with standard Commodore key mappings, just ask.) This image also includes a utility (QUIKPIK/QUIKSTASH) to automatically copy files to a RAM drive at boot time if so configured.
For those who own the almost impossible to find SuperCPU, try this D64 image, which contains the SuperCPU kernel patches (it's an autoexec). If you have the SuperCPU manual, you can use the original "SuperInstall" program from CMD's SuperCPU utilities disk to make your own.
The 1541 Ultimate works well with any D64 GEOS image.
If you want to run GEOS on a uIEC, try this bootable D81 image, which contains a cracked copy of GEOS and all the major apps, plus the PostScript programs and a few fonts (both standard and laser). It also contains a copy of geoSnap (see below), which was used to create the boot files. Note that there's nothing uIEC-specific about this image, although I was unable to get a D64 to boot on a uIEC. Set your uIEC to device 8 before booting from this image.
I've also written a utility called uIecSwitch for switching between D81 images on a uIEC. Here's a D64 image containing the source, executable, and a symbol table for geoDebugger. You can also have a look at the main source files directly: uIecSwitchS1, uIecSwitchS2.
If you want to create your own bootable image, you can use the same tool I did, which I based on a utility by Paul Bosacki. It was originally meant to create a patched GEOS snapshot for the Turbo Master/Master Adapter, but I removed the Master Adapter patches, added a GUI, and made it write out a loader in addition to the snapshot. For want of a better name, it's called geoSnap (link to D64 image). The D64 image has the program along with the source code and a geoDebugger symbol table. To use it:
That will leave you with two files: GEOS and TURBOBOOT. Load GEOS with ",8,1" or ",9,1" depending on whether drive A or drive B was active when you ran geoSnap, and GEOS should start right up. Mind the instructions that the program displays; you'll need both the deskTop and CONFIGURE on your shiny new boot disk. There's not much to it, really, although a read through Paul's original code that does the snapshot is very interesting.
CMD released a GEOS utility disk (D64 image) with their hard drives (which are of course no longer available and fabulously rare even on eBay). This includes a patched version of CONFIGURE that includes disk drivers for the CMD devices.
I've also got the CMD RAMLink utilities disk; on the other side is a copy of gateWay.
The final "official" version of GEOS (2.5) was only released in Germany (see Bo Zimmerman's FAQ). Its main feature is the replacement of the deskTop with TopDesk 1.2, a shell with movable, resizable windows. This D64 image is a bootable copy (all in German). I've also got a copy of TopDesk 3.2 (with four-drive support); here's topDesk and the help system that goes with it (all in German).
This D64 image contains device drivers for GEOS, including input drivers (mouse, light pen, Koala Pad, even the SuperSketch tablet) and a wide variety of printer drivers. There are many more in my collection, so if there's something specific you're looking for, drop me an email.
CMD made a "smart mouse" that had a real-time clock; here is a D64 image of the disk that came with it.
This geoWrite disk image (see GEOS 2.0 manual) contains:
Here's a collection of almost 100 GEOS fonts, in D64 images. If you put more than eight fonts on your geoWrite disk, you'll want to grab the geoWrite disk image above, which contains a desk accessory to choose which eight will appear in the menu.
I had a request for geoSpell, so here it is in all its glory. The disk image contains geoSpell, geoDictionary, and geoFont.
Here's a D64 image of geoPaint (see GEOS 2.0 manual), with some utilities for image conversion, photo scrap manipulation, etc. geoGIF (see below) is on this disk too.
Here's a D64 containing geoGIF, a utility that can convert .gif files to geoPaint files. I've included a .gif of a photo I took, scaled down and then converted to a geoPaint image.
This D64 contains geoCalc (spreadsheet) and geoChart (charting tools).
This D64 contains geoFile (database) and geoMerge (mail merge).
These are D64s of geoPublish (desktop publishing), side A and side B. Between the two sides, you'll find geoPublish and its master page libraries, geoPubLaser, some LW and Mega fonts, the Text Manager, and the Text Grabber (for importing other Commodore word processing formats).
Perfect Print was an interesting hack for geoWrite that depended on interpolating printer drivers and special fonts, and produced high-resolution printouts on dot-matrix printers using multiple passes. Here's the manual.
Side A contains the programs that will do this. geoPublsrDskA will generate PostScript on drive A from a geoPublish file, and geoPublsrDiskB will do the same on drive B. geoLasrDiskA will generate PostScript on drive A from a geoWrite file, and geoLasrDiskB will do the same on drive B. They should be on the same drive as your geoPublish or geoWrite file. These images also contain "LW" (laser writer) fonts, which you need to use in your documents to get the proper resolution (you must also use the most recent versions of geoPublish and geoWrite). There are additional laser fonts on side B.
The output will be a Commodore SEQ file (not a GEOS file), so you can use whatever utility you like to get the file onto your PC (the name will start with "PS."). What I do is to use WCOPY+ to get the file to a CMD FD, then mount the floppy on a Linux box. You could also make a D64 and extract the file on the PC (or whatever other technique you might come up with).
Here's an example: it's the document I handed out laser-printed copies of at ECCC 2013 (it was made with geoPublish). If you have trouble viewing PostScript files, I also converted it to a PDF file. Recently, I also ran across this newsletter created by Allan Bairstow as part of the British Commodore Scene magazine, which uses more advanced techniques.
geoCope is an assembler for GEOS. I haven't used it, so I can't give any advice, although core pointed me to a review in the Transactor. I have two versions, both of which appear to be version 1.3: here's one, and here's the other.
geoWizard is a very interesting utility by Jim Collette (in fact, he referred to it as "The Ultimate GEOS Utility", although I'd call it "the most interesting GEOS program in the world"). You thought GEOS wasn't a multi-tasking operating system, right? Well it isn't... but with geoWizard, you can "freeze" the current state of the machine into the REU and start another application; when it's terminated, the first is restored where you left off. See the documentation on the disk image for full details.
geoShell is a command-line interface for GEOS; these are D64
images of version 2.2 (side
A, side B), and here's
These are some new commands (the "geoShell Extras"); the disk is marked "LACC PD LIBRARY" (one side only), and here's the manual.
This appears to be another version of the same disk (side A, side B).
There was also a developer's manual explaining how to write geoShell commands.
These are some software collections I've picked up at the shows in recent years.
This D64 image contains archiving utilities for GEOS, including Convert 2.5, geoBEAP 2.1, geoPack, and GeoConvertE98f. I made up a D64 with the geoBEAP source since I've been studying the Convert file format (which can be found on Peter Scheppers' site).
geoBEAP (Bo's Excellent Archive Program) relies on a massive project, also by Bo Zimmerman, to create a library of GEOS routines for programmers. The project is called geoModules, and after extracting and converting the Lynx files available on his site for my own use (with geoBEAP, of course), I took the liberty of making the resulting files available here on D64s to make them easier for GEOS programmers who prefer to work from disk images. Make sure to visit the link to his site for documentation. As the saying goes, "Bo knows GEOS!"
Here's a bunch of GEOS utilities in a D81 image, which includes a GEOS disassembler. (Note that the disassembler on that disk will crash if run from a 1581 or 1581 CMD partition. It will run from a 1541 or CMD native partition, and has been reported to run from a 1571 as well).
I've removed the geoWorld disks that I had here, since they're in the geoSpecific collection (see above).
Here's an entire set of GEOS manuals that DLH scanned.
This D64 contains geoProgrammer (geoAssembler, geoLinker, and geoDebugger), along with a few utilities (sector editor, header and icon editors, onscreen ruler, fast file copier). Note that this is the 1.1 version. The 1.0 versions of geoAssembler and geoLinker are known to be buggy: in particular, that version of geoLinker will not correctly assemble a VLIR application, and will sometimes trash the disk as well!
This is the geoProgrammer manual (all 439 pages of it, scanned by DLH). It includes sections on the assembler, linkage editor, and debugger. This is a 28M PDF file.
Here's a D64 of the sample apps that came with geoProgrammer (source code only). This disk also contains the symbol file (geosSym) and the macro file (geosMac).
Here is a the official GEOS Programmer's Reference Guide, complete with errata sheets, as published by Berkeley Softworks (scan and OCR by DLH). This is a 35M PDF file. I have my own set of errata, only a couple of which are in the sheets published by Berkeley.
Here is Alexander Boyce's GEOS Programmer's Reference Guide (text file), a commentary on the GEOS kernel routines that was based on his disassembly of the operating system. This is the version revised by Bo Zimmerman, and replaces Boyce's labels with the official ones from the Berkeley version. Note the following errors in the geoWrite file format description:
And here is the legendary Hitchhiker's Guide To GEOS (all 568 pages of it), scanned from a photocopy of my precious original by DLH. HHGG is the working copy of a never-published book by Berkeley Softworks. Many pages have edit marks on them, and a few are even stamped "CONFIDENTIAL". This is the ultimate guide to GEOS programming, and includes late additions to the API not present in the above two books (including the REU APIs), as well as information on Apple GEOS. This is a 39M PDF file. Note: it looks like there are a few pages missing from DLH's scan: here are two missing APIs: CopyString and CRC; and here are two missing pages from the section on text and fonts: page 16 and page 17.
You may find the disassembler on this D81 image helpful. It creates geoWrite listings with the standard BSW labels, although there doesn't seem to be a way to specify areas that should be listed as data. Note that it will crash if run from a 1581 or 1581 CMD partition. I've only tested on real Commodore and CMD hardware and haven't tried other drives, but I can verify that it will run from a 1541, or a CMD native partition under Wheels. It's also been reported to run from a 1571. As always, if you're using a '128, you're on your own.
If you are interested in studying the kernel, you may find this page by Maciej Witkowiak helpful. It includes a complete disassembly of the GEOS 2.0 kernel, including the 1541 disk driver (follow the "GEOS Sources" link). The site is down at the moment; here's a copy of the tarball containing the source. There's also a mirror here.
There were a few attempts at creating interpreters or compilers for high-level languages in GEOS, but it was a difficult task at best because of the memory constraints. Perhaps the best-known was geoBasic, which was picked up from Berkeley Softworks in an incomplete state and released by RUN magazine. You do not want a copy of this. It is possibly the buggiest software ever written, and is of interest only to entomologists.
Abacus also published a BASIC for use with GEOS, called BeckerBASIC. Here is a D64 of the disk, and here is the manual (scanned by DLH).
Did you know that there were two implementations of the Forth programming language for GEOS? One was by Hank Wilkinson and was known as "Brian"; here are D64 images of side A and side B. There was also one by Nick Vrtis called geoForth.
And in more recent times, it is even possible to cross-compile GEOS programs in C on a PC... but where's the fun in that?
This is a D64 of the GEOS demo disk as distributed by Berkeley. Double click the icon from GEOS to start it. It includes the famous "lobster picture".
Here's something for Star Trek fans: A D64 image of a GEOS disk containing the Organian Peace Treaty as a geoWrite file... in Klingon (tlhIngan Hol). There's actually a Klingon font on this disk; there's also a nice geoPaint image of a Klingon ship.
And now for something completely different: since GEOS is a disk-based operating system, it's theoretically possible to write a virus for it. Years ago, I was fascinated by this idea, so I tried to do it... and succeeded. I've put it here partly to brag about it, and partly because the code shows some interesting (if unorthodox) examples of using the GEOS APIs. Obviously, this is something you want to handle carefully, but this is how the Shadow Virus works: