GEOS For the Commodore 64
toastytech.com
toastytech.com
I once wrote a letter to Berkeley Softworks asking for more information about programming in GEOS (API's, etc.), and was surprised when I got a huge binder in the mail with a printout of the Hitchhiker's Guide to GEOS. [1]
[1] http://freepdfs.net/the-hitchhikers-guide-to-geos-lyonlabsor...
Of course, this could be due to not caring for most of the applications launchable from GEOS.
Something as simple as a double-click instead of having to reset and "LOAD * ,8,1" would have encouraged the practice of launching into a GUI first.
I once mentioned to my auto mechanic that I was a programmer, and he invited me into the back room of his garage full of old C64 stuff. He showed me a modified C128 with an IDE interface, running his custom modded version of GEOS (Wheels). He had an accelerator hooked up to the machine and could change the CPU speed from the original C64/128 speed to something that appeared to be 10 times faster. To top off the demo, he showed me the web browser he was working on, bringing up a roughly rendered version of Yahoo's page (it was 1999) on the screen.
It turned out my mechanic was the famous (or infamous) Maurice Randall. It's worth searching for his name to learn about his accomplishments in the C64 hobbyist scene (and his unfortunate unreliability).
http://www.lemon64.com/forum/viewtopic.php?t=39637&sid=b6a11...
But in order to do any of this you had to write programs in a custom C dialect called GOC, compile things with a ghastly mess of Perl and Borland C mangled together, and the architecture was inextricably entangled with the 8086 architecture so it was fundamentally non-portable. (Object-oriented machine code. shudder) There was a debugger. It required two PCs connected via a serial cable...
If anyone's interested, I've got some source code here:
http://cowlark.com/geos-software/index.html
(including an ELKS syscall translator which allows you to run Linux-86 binaries on GEOS! I think someone used it, once.)
A mere $69 (the copy of DOS required to run it on is not included).
It was the Commodore 64C that came bundled with GEOS.
They had a Commodore 128 version and a Commodore 16/Plus4 version of GEOS as well.
They also ported it to the Apple II series.
of course the Amiga could do more than all 3 machines, but it cost even more than the ST (but nowhere near the cost of a Mac.)
One thing about the Atari ST is that it was considered the real successor to the Commodore 64 because Jack Tremiel was behind it. Nicknamed the Jackintosh with the Magic Sack software it could run Mac software with a Mac ROM chip on a dongle.
They stopped using it when they stopped supporting DOS and switched to a Windows client. Older AOL for DOS 3.5" floppies can take the Geoworks files out and run them by themselves without the AOL client.
Geoworks kind of fell to the side of the road, but it still exists in some form at Breadbox.com: http://www.breadbox.com/
Like GEM, OS/2, Vision, Desqview, Geoworks kind of got killed by Microsoft bundling DOS and Windows to make their monopoly. By the time Windows NT and Windows 95 made it to the market, people went crazy over Windows and forgot the alternatives to it.
My cousin had a Sinclair PC200 back then, that IIRC was Amstrad's poor attempt to get in to the PC market. That was a 8086 based PC with CGA card, and it came with DOS 3-something and GEOS (don't remember the version).
My cousin had a mouse and all, quite uncommon back then, and we tried and experimented with GEOS quite a lot, but we couldn't see the point really.
Perhaps was a limitation of the monitor and/or the CGA card (it didn't look to good in the high resolution mode of the CGA, with a very poor refresh rate) or the limitations of the 740 KB floppies, but the CLI that DOS provided was definitely better!
Here's a fragment:
@method MyProcessClass, MSG_META_EXPOSED
{
GStateHandle gstate = GrCreateState(win);
GrBeginUpdate(gstate);
@call GameView::MV_REDRAW(win, gstate);
GrEndUpdate(gstate);
GrDestroyState(gstate);
}
The GOC files were preprocessed to produce very very manky C which was then compiled with Borland and linked with a custom linker. It was true OO with dynamic dispatch and a deeply strange system for allowing classes to have unspecified superclasses (that were then filled in at runtime programmatically). @call does a method call of MV_REDRAW on the object whose handle in GameView. (There was also @send which did an asynchronous call; if the object belonged to another thread a message would be sent rather than calling the code directly.)Interestingly, there is still a company selling PC GEOS under the name Breadbox Ensemble, and their forum has posts from this year (not a lot of posts...but, still). I had no idea. It still looks about like it did in 1995. I am kinda baffled at who would still be buying and using this stuff...in a world with amazingly high quality Open Source tools to do everything GEOS ever did only better, and able to do it well on a very low powered machine (just like GEOS), it seems really strange to keep flogging that old horse.
The implementation didn't just rely on the 8086 architecture, it was inextricably intertwined with it. It worked like PalmOS where memory was referred to by object handle. To access memory, you'd lock it, then you'd get back a pointer. Once you'd finished, you'd unlock it again. This let the GEOS kernel page in your memory from swap. What it actually did was assign one of your segment descriptors to point at the locked block, which you'd dereference with ds:[offset] or es:[offset]. Very elegant, and totally using the 8086 segment infrastructure the way it was intended to be used... good porting to anything else, however!
Hey, I still have my old Geoworks SDK CD. (Which I scrounged free from someone. Useful tip: if you want your platform to be popular, don't make the SDK cost $1000.) I may have accidentally left the PDF of one of the manuals here. http://www.docdroid.net/vclb0s2/concepts.pdf.html
Totally ahead of its time. Totally doomed.
That said, I recall very little third-party programs appearing for C64 GEOS, so it may have been the case for most programmers who attempted to write for it.
Totally amazing.