Skip Ribbon Commands
Skip to main content

Cory's Blog


Quick Launch

Stenoweb Home Page > Cory's Blog > Posts > Hobbyist Operating System
September 07
Hobbyist Operating System

Once in a while, the topic of making newer software and running newer types of tasks on old computers comes up again. It's a topic with a long and morbid history. It has been made much more interesting by the availability of the GS/OS source code. Talk about re-implementations are pretty common, but I think that the most

For those not in the know, the source code for the GS/OS operating system on the Apple IIgs computer is available, and hobbyists have since figured out the build chain and can now build the operating system. There's now a 6.0.3 version available, up from the last shipped version, 6.0.2.

You can hot-rod the IIgs a fair bit and it runs that operating system well, but the development tool chain requires a vintage Macintosh, and there's the pretty serious issue of the fact that hot-rodding a IIgs so that it really runs GS/OS 6.0.3 well costs a lot of money. The ultimate upgrades are the ZipChip and the Transwarp GS, which increase the CPU speed a lot. They're mandatory for many games and they're considered very important for other types of applications as well.

Add to that, storage, RAM, as well as auxiliary cards for things such as networking, better sound processing, VGA output, and you can easily spend a thousand dollars on an Apple IIgs, and you still can't program GS/OS applications directly on the thing.

One suggestion to combat all of this is to simply interface a Raspberry Pi to the CPU socket of the Apple IIgs. Then, you can route video out from the CPU, emulate the CPU in software as fast as that little ARM chip can go, emulate storage while you're in there, and get better audio out of the pi as well.

Another suggestion was simply to port GS/OS to the pi, write a 6502/65816 emulator and allow "old" GS/OS apps to run under that emulator, and run/compile new apps in ARM ASM or as binaries for ARM.

But, that stuff's literally insane. GS/OS is designed with some pretty specific hardware in mind, and on that hardware, it's designed to work a pretty specific way. Either of these options are going to create some pretty crazy situations. Firstly, I think that the engineering and software effort on either is going to be utterly insane. I don't think that "oh, just port GS/OS to the pi" is really even possible. The source code exists, and it compiles, and it's the whole OS but you'd essentially need to go in (after building a bootloader) file by file and rewrite it in ARM code.

While doing this, you could update the build procedure and move it away from vintage Macs onto something else, but without massively changing the way GS/OS works, I don't know if GS/OS itself would be the best place for it. You'd also need to write drivers for the Pi hardware, among other things.

I think the real problem here is that the OS was not designed with faster hardware in mind. The Pi has performance that's on the order of something like 700-1000 times what the IIgs is, and it's still modern and pretty dumpy by today's mobile and inexpensive computer standards.

And so, my personal proposition is that you simply build a new operating system with an eye toward programmability in a few different ways, and let people do what they will with it. In an ideal world, it would have a few different self-hosted development environments, including an environment that lets you work with assembly or whatever language the OS is written in, a simpler basic environment, as well as a graphical environment, possibly using drag-and-drop modules, or something like HyperCard where you are really building scripts or multimedia creations. Over time, a library of applications, games, etc would develop. Open source ports might or might not show up, and the whole thing would be built both with an eye toward modern memory management, networking,

I personally think that the ideal platform for this system is the nVidia "Jetson" Tegra K1 board. It has a very large group of GPIO pins, a fast CPU and GPU, 2 gigabytes of RAM, SATA, USB 3.0, and Ethernet and some eMMC storage onboard. The boards on their own are $192, and it wouldn't be too hard to design and build a case for it and provide installation media for the OS. Then, the SDHC card slot and SATA connector are available for additional mass storage needs.

I'm imagining the operating system being like a Mac System 7, but with more functionality and stability baked in. The hardware would be fast enough to connect with modern e-mail systems and make any task that involves encryption relatively easy. The thing would have enough resources to act as a server, and I imagine that it should be possible to add the concept of background processes, through extensions, control panels, or something else similar. (Perhaps a "services" folder?)

Adding authentication and security to the system level would be neat, and I of course personally love the idea of it as a networked computer. Put the OS and a few applications onto the built-in storage media, and run another instance of the OS on another system (perhaps something with a bit more hardware) and map network spaces as drives. That's a moonshot, and not really necessary for the core system, however.

The development environment(s) would be more ideal if they used some kind of management process. Even better if you have the option to use a source control system. If you integrate more than one in a network, you could have a Version Control server on such a machine connected to the Internet, and connect other machines to it. That machine (presuming it's faster) could be a build server, continuous integration and testing server, as well as host other things (IRC communications, group e-mail or a visual bulletin board server for collaboration purposes?) for team projects.

Perhaps more thought about this project is something I'll do over the next few weeks/months. It's interesting to think about what functionality is and isn't important in an operating system, and how to get what you want out of it.

Regardless of what hardware it ends up on (and there's no reason it couldn't run on different types of hardware) I think it really fulfills the software component of the original vision for the Raspberry Pi, which was to be an inexpensive computer kids could learn on. A big problem with that is that it's almost too vague a goal. You can simply hook it up to a TV or HDTV and say "okay kid, play some flash games and learn how to use a console text editor" or you can give them something even simpler, something that even encourages direct access of the hardware.

For others, it may provide an interesting alternative to learning how to use Linux, limping along with old insecure systems, and using the most current releases of Windows 10 and Mac OS X, which have had changing privacy policies and have been adding features that make some uncomfortable over the past few years.

The problem is that if you put me in charge of such an operating system, it'll almost certainly trend in that direction itself, the idea being that for regular people, it's better if "somebody else" manages the backup of your computer, as well as the other maintenance things, which is a lot of what happens in Windows 10.

If such a thing were added to this system (and that stuff is all so complicated, it would be a "several major versions in" addition to working in reverse of how it does on Windows, you'd need to pretty specifically opt into it, and there may even be a tool to choose whose server you're using. (Essentially, you'd be allowing domain resources to go over the Internet, and you'd be allowing end users to join machines do the domain without first adding them.)

As I find or make time, I'll consider the structure, features, hardware, and what's needed for "1.0" more closely, and then post some stuff about that. In the long run, I may end up making some graphics or doing some interface wireframes for it. It'd be interesting to see such a thing come to life, even if only on paper.


There are no comments for this post.