C64 OS: USER'S GUIDE
Last modified: Oct 21, 2019
C64 OS has one goal.
Make a Commodore 64 feel fast and useful in today’s modern world.
It's a very high bar. The C64 was introduced in 1982 and has an 8-bit, 1MHz, 6510 CPU with just 64 kilobytes of RAM. It has a screen resolution of 320x200 pixels, and a fixed palette of 16 colors. But, it is an incredibly versatile machine with a wide range of modern hardware expansions, and it enjoys an active and passionate userbase.
The C64 has had other operating systems written for it, so why write another?
Some of these projects were designed to be experimental, or to demonstrate a point, rather than to solve a problem or to make using the C64 better. Others had good intentions but pushed the machine in ways it wasn't designed for, compromising on speed and usability in the pursuit of features available on more powerful computers. The aim of C64 OS is to work with the limitations of the Commodore 64 and enable it to become far more useful.
All software is written to solve its problem or to accomplish its goals. An operating system
is no different. But the goals of one project are often incompatible with the goals of another.
The reason, therefore, to write an operating system for the C64 is to create something that
is maximally in line with its goal.
Make a C64 feel fast and useful in today's modern world.
The speed of a system should not be measured in either bytes or cycles per second. It should be measured by how quickly it enables the user to get something done. But there is often a trade–off between speed and usability. A command line interface with difficult to remember commands may enable an expert user to accomplish something very quickly, but be impossible for a novice user. An operating system, ideally, makes a computer both faster and easier to use.
C64 OS is simple and streamlined, and carefully designed to work within the hardware limitations. The power of C64 OS is its consistent user interface and in the network effects of its components. The utilities and applications are designed to interoperate and build up advanced capabilities by relying on each other's small contributions.
Along with consistency and usability advantages for the user, C64 OS also makes writing new applications easier. Within an operating system, programs don't have to reinvent every wheel. Instead they can take advantage of common services, such as: a universal clipboard, advanced mouse and keyboard drivers and event queues, file system abstraction and dynamic memory allocation.
The GUI was a major leap forward for usability. It makes computers intuitive and discoverable, and it makes some traditionally complicated tasks, like file management, trivially easy. But the most important part of a Graphical User Interface, ironically, is not its graphics, but its point–and–click nature. After 35 years of mouse–based computing, the mouse is still going incredibly strong.
A good user interface is a consistent user interface. One that makes the user familiar with a new application the very first time they use it. A good user interface is one that helps the user accomplish their task, without overloading them with too many options all at once. Progressive disclosure makes the most common tasks the easiest, and the least common tasks don't get in the way.
The unsung hero of graphical user interface design is the menu bar.
The menu bar has been, and in my opinion remains, the best mechanism for providing familiarity, discoverability, and progressive disclosure in user interfaces on any platform. Jack Wellborn — The Menu Bar, Worms & Viruses, March 2018
A tremendous amount of user interface can be tucked away, and neatly organized behind pulldown hierarchical menus. Multi–modifier–key mnemonic shortcuts give users speed to access their most used features, without forcing them to memorize commands. And full menu customizability provides a lot of power. Even with a low resolution, a hundred menu options can be accessed in a jiffy, without robbing from or cluttering up precious screen real estate.
In order to be effective, and to make the computer feel fast, the menus have to be fluid and responsive. C64 OS's menus pop out and render instantaneously. The mouse can be rolled back and forth, as you watch the menus dance under the cursor, opening and shutting automatically.
C64 OS combines advanced mouse and keyboard drivers and a sophisticated event model, with hierarchical pulldown menus, an object–oriented widget toolkit and a multi–layer screen compositor to create a UI that feels consistent between apps and renders super fast. C64 OS has the ease of use of point–and–click, and the power of customizable keyboard shortcuts, drag and drop and universal cut, copy and paste.
There is a whole new world of hardware expansion options for the Commodore 64, as attested to by
The Commodore 8–bit Buyer's Guide. Here are some examples, out of hundreds:
But, what of all this hardware has made the biggest impact? And what hardware is the most underutilized?
Although RAM expansion units are readily available today, the base C64 and its 6510 CPU still only directly address 64K. Screen resolution is still the same as it always was, and the SID is still the SID. There are options for expanding audio capabilities, like SUX6400, DigiMax and FM-YAM, but these come with specific programs, and new ones need to be written specifically to take advantage of these.
But there are two big hardware advances that change everything:
Be sure to checkout the Commodore 8–Bit Buyer's Guide for a visual catalog of all the products, projects and kits that are commercially available today for your C64 and other Commodore 8–bit computers.
In the 1990's Creative Micro Designs' Harddrives were best of breed. They behaved as you would expect if Commodore had evolved the 1541 to mass storage. Instead of disks you had partitions, and each partition could be up to 16 megabytes, nearly 100X bigger than a 1541 disk. The drives came with a battery–backed RTC, they had JiffyDOS built in, and the native file system supported subdirectories, among a host of other nice features. But they also cost 500 to 600 dollars, and used bulky SCSI spinning disks.
Most C64 software had already been written before the CMD HD was available. Some later C64 software supported them by exposing the command channel to the drive, but didn't have any awareness of partitions or subdirectories. If the user changed a partition out from under the software, it would often break, unable to find its original "disk." 1 Lack of enthusiasm for supporting native features of the CMD HD can probably be attributed to the high price of the hardware, and its subsequently limited market penetration.
Jump ahead 2 decades and SD Card readers are now cheap and abundant. They're like miniature CMD HDs that are, in some respects, much more powerful. Instead of 4 gigabyte spinning disks with 16 megabyte partitions for $600, an SD Card reader fits in the palm of your hand, and uses tiny, inexpensive SD cards which can be natively shared with PCs and Macs. They support partition sizes that can span many gigabytes, and for all this, what is the cost? A mere 50$. Storage today is like cheap super–powerful CMD HD's for everyone.
It's time for software that doesn't just support them, but exploits them.
Right from the beginning, Commodore computers were shipped with networking in mind. With the addition of an inexpensive modem, the software already inside the computer was ready to start talking with the external world. Commodore introduced millions of users to telecommunications. BBSes, hosted on inexpensive Commodore hardware, allowed one Commodore to connect with another through the telephone network. There were commercial services too. Some, like QuantumLink, were specifically designed for Commodore users.
Commodore 8–bits were able to keep pace into the 1990's with faster and faster modems and dial–up connections, by means of highspeed UART cartridges, like SwiftLink and Turbo232. But when communications transitioned over to ethernet, Commodore 8–bit participation stalled. There are ethernet adapters for the C64, but they require a lot of sophisticated software to implement the more advanced ethernet packet handling and TCP/IP protocols, and leave little memory left over to process the information available on the modern internet.
Within the last few years a new networking option has become available. WiFi modems are commercially available from a number of vendors in a wide assortment of packages.2 These modems not only connect via WiFi, but they handle all of the TCP/IP communications inside the modem, freeing the computer from this burden. The computer connects to the WiFi modem via RS-232 just as they were originally designed to interface with a dial–up modem.
C64 software has not traditionally been written with ready access to always–on networking. C64 OS changes that expectation. Modem detection, configuration, memory management and numerous other features are provided for by the operating system, making it easy for an applications to use networked services, with very little development effort.
The next section, provides an overview of how C64 OS works, and all the services it provides.
- GoDot, despite having a utility that allows you to navigate a CMD HD's partitions and directories, doesn't really understand them. The moment you navigate away from GoDot's home partition, it loses track of where its own files are and you lose access to them. [↩]
- Check out the Commodore 8 Bit Buyer's Guide for a number of WiFi TCP/IP Modems, and also for several SD2IEC–based SD Card Readers. [↩]
This is document is continually updated.
Refer to the last modified date at the top of this document for the most recent changes.