C64OS.com began as my outlet to blog about my adventures learning to code in 6502 and the progress I am making towards the development of an operating system called, simply, C64 OS.

After writing 30 blog posts, I realized that great posts about key topics quickly get buried beneath newer posts about topics that are less important. I needed a way to float the good ideas to the top. Additionally, I have wanted since the beginning to use the site as a way to recommend Commodore compatible peripherals and expansion hardware to new and returning users. When I returned after my several year hiatus it took a long time to gradually stumble upon all the great projects that are available for purchase. But it was hard to find a place to squeeze in that information such that it could be reliably found. I also realized that besides a tiny 10pt byline, there is nothing on the site that talks about who I am and what my history is. And lastly, I am working on my own C64 hardware project, a Commodore 64 all-in-one luggable. I intend for it to run C64 OS, but it will also make it easier for me to bring a C64 to where my friends are, to encourage them to play some rounds of shotgun with me, or enjoy some great demos. Well, I need a place to show this project too.

Background

Every Commodore 64 comes with a built–in operating system. But it doesn't have a unified marketing name, and it hasn't changed significantly in nearly 35 years. The C64's operating system is made up of two ROM chips on the motherboard. These are, the KERNAL rom and the BASIC rom. Each chip occupies 8 kilobytes of space for a complete OS in a grand total of 16k. 1

It's sometimes hard to notice that this is an operating system, because they are so tightly integrated with the hardware that it just feels like the way the machine works. In fact, these two sets of code work beautifully together to implement all of the user experience when the C64 is first turned on.

The KERNAL provides much more than just low–level access to I/O devices. The KERNAL implements the C64's screen editor. This is what enables keypresses to produce text on the screen. The fact that the cursor moves one place to the right after each character is typed is implemented by the KERNAL rom.

PETSCII is a variant of ASCII used by Commodore 8-Bit computers. I often wondered why Commodore bothered to use a proprietary text encoding. The answer is because of the way the KERNAL works with the keyboard and the screen editor, and the way the character rom works with the VIC-II's video modes, and how BASIC interacts with the KERNAL. These components all come together in a tight and beautiful package that we're all familiar with as the C64's blue screen of life.

The problem is that many of the basic assumptions from 35 years ago about how a computer should work are woefully insufficient for a modern computing experience.

  1. Plus a 4K character set ROM. []

Design Goals

The primary design goal of C64 OS is to be true to the hardware. This means to work with it, the way the hardware wants to work. Not constantly fighting an uphill battle slowing the machine down trying to get it to do something it's not designed for.

First this means C64 OS is not pre–emptively multi–tasking. It is unashamedly unitasking. And second it is not attempting to ape the structure or the interaction model of any other operating system. C64 OS is not a unix clone, nor is it a Windows or Mac OS clone. It is an experience that feels like it belongs on a C64.

The goal is to provide a consistent user interface model against which applications and utilities can easily be written. C64 OS tries to get out of the way as much as possible, while providing modern amenities to help write more powerful, more capable and easier to use programs.

C64 OS is written 100% in ASM and prioritizes its goals arounding making the C64 feel fresh, fast and responsive.

Features

Recommended Hardware

The C64 is awesome, but one of the things that makes it so awesome is that there is a vibrant community of hardware expansion options. C64 OS is designed to work with as minimal hardware as possible, a C64, a 1541 disk drive and a 1351 or compatible mouse.

But the power comes in getting a few nice add-ons to bring your C64 into the 21st century.

The Computer

C64c Profile
A Commodore 64, of course.

C128 Profile
A Commodore 128, is a great alternative.

Input

1351 Mouse
A 1351 Mouse

MicroMys v4 Mouse Adaptor
A MicroMys 4 adaptor about

Storage

JiffyDos 64 ROM Chip with Switch
A JiffyDOS 64 ROM about


uIEC/SD Serial SD Card Drive
A uIEC/SD Drive about


Two 1GB SD Cards
1GB SD Cards about

Networking

64NIC+ Ethernet Cartridge
A 64NIC+ Ethernet Cartridge about

Video

S-Video to VGA Video Adaptor
An S-Video Converter about


Commodore Video to S-Video Cable
A Video to S-Video Cable about