NEWS, EDITORIALS, REFERENCE
Desktop Designer
C64 OS v1.07 is currently in beta testing. It will hopefully be released soon, and is another free system update to all licensed users of Version 1.0 and up.
A whole pile of cool new things are coming in v1.07. However, today I wanted to talk about something a little less well known, but nonetheless I think is pretty cool. It's a new Application that I created for C64 OS called Desktop Designer.
In the very first release of C64 OS, version 1.0, there was a handful of tools included for creating different types of image data that C64 OS consumes. For instance, there was (and still is) a set of two programs found in the //os/desktop/ directory for creating desktop backdrops. How they work is very basic. You load and run screenedit. It clears the screen and installs a very simple listener for PETSCII control characters. It supports one to invert the characters on the screen, one to reload the screen from a filename that you specify, and another to save the screen to that filename by invoking the second too, screensave.
With these two simple tools, you can use the standard screen editor from the READY prompt to draw simple PETSCII pictures on the screen using the cursor keys and the PETSCII symbols on the keyboard. When you get a screen that you like, CONTROL+Z (if memory serves) writes the 1000 bytes of screen memory out to the file. This file can then be opened as a backdrop in App Launcher, in C64 OS.
This pair of tools works, kinda, but they're very hacky and full of weird gotchas and my guess is that no one but me has ever bothered to try to use them to make a backdrop.
I wrote Desktop Designer because I wanted a simple Application, that can run within C64 OS itself, to be able to create these desktop backdrops. But... it evolved into something that is quite a bit more interesting and useful.
Hey, Commodore 64 user,
C64 OS v1.04 is now available! It keeps getting better.
You've come here to read one of my high-quality, long-form, weblog posts. Thank you for your interest, time and input. It would be a lonely world without loyal and friendly readers like you.
C64 OS is off to a great start with the successful v1.0 launch in 2022.
I created C64 OS because I wanted the C64 to be more capable, powerful and useful. In these blog posts I document my thoughts, plans and progress along the way, because I want others to share in the journey of learning, planning, designing and coding for our favorite home computer.
The best way to contribute and to help ensure continued development is to order a copy for yourself of latest release, C64 OS v1.04. The printed User's Guide is longer with improved layout and typography. The v1.04 Standard Bundle now comes with a pre-built IDE64 disk image. Plus, all the updates, improvements, bug fixes, and new features from the first four software updates have been rolled together and come pre-installed on the System Card.
Join the growing community of C64 OS users and get more out of your Commodore 64 and its many hardware expansions.
Gregory Naçu — OpCoders Inc.
Get your copy of C64 OS today.
Learn More Order NowNetworking in C64 OS
For the last few months I have been super hard at work on the next major update to C64 OS, version 1.07. It will be released as a free update to all licensed users of C64 OS v1.x, and will be made available for download from the C64 OS System Updates page.
The big new technology coming to C64 OS is networking. It's been a long time coming, but up until this point there have been many more basic features that had to be completed first. And now I'm very excited to finally be at the point where I can work on the networking layer, which I think will really bust open the doors of what we can do with C64 OS.
Along the way I've been implementing a number of smaller items on the list and fixing a bunch of annoying bugs. Here's a short list of some of the updates and improvements that are coming in v1.07:
- Improved NMI handling and behavior of STOP+RESTORE
- New Network Utility for configuring C64 OS networking
- Settings Utility now offers to open the Network Utility
- TKInput fields gain support for "secure" mode
- Fixed a bug rotating through status bar modes
- COMMODORE+O in Copy and Move Utilities toggles overwrite checkbox
- Network status is now shown in status bar along with drive status
- Fixed a memory leak in the Clipboard Utility
- Hold COMMODORE key when mounting disk images to auto-mount
- Hold CONTROL when selecting mouse pointers in Mouse Utility for large pointer
- Fixed a bug in Installer with 16-character directory names
- Booter now supports "optional" run components
- CONTROL-click refresh button in Utilities Utility to rebuild Utilities menu
- New 32-bit division support in the KERNAL
- Fixed a bug when dragging a scroll bar a very long distance
- New Help Utility; each Application can provide built-in help content
- C64 Archiver can produce .CAR files with scratch file support
- Fixed a bug renaming items on SD2IEC that only change by case
- Fixed many bugs rendering MText in the TKText class
- Added support for hyperlink clicking and callbacks from TKText
- Added link support in the TextView Utility
- Keyboard driver is no longer part of the KERNAL
And much more.
Now let's dig into the meat of this post; All things networking.
RAD Review
I haven't done a hardware review in a while, but I have acquired a few new pieces of hardware to test with C64 OS for compatibility. Today we're going to talk about the "RAD" RaspberryPi-based REU cartridge for the C64.
Before we get into that, a couple of very brief updates about C64 OS and c64os.com. I have been hard at work on the next major update to C64 OS, v1.07. For context, Version 1.06 was released in March 2024 and brought fast app switching via REU. This has been huge, it totally changes how C64 OS can be used and makes it significantly more powerful.
In version 1.07 C64 OS is gaining networking abilities. I won't go into details yet on how the networking in C64 OS works, but, I think it's going to be pretty great. I am quite far along in its development, and am now in the phase of testing and debugging and implementing the first few Utilities and Applications that make use of the internet.
Lots more to come soon. And when I'm a bit further along I'll write up a technical blog post explaining how the networking support is designed.
I've added a new page to the C64 OS sub-site of c64os.com, called "The C64 OS Video Guide." It is a kind of gallery of videos that I've previously posted either to Twitter, Youtube or both, and which are now available on the OpCoders Inc Youtube channel.
I thought it would be nice if you could find those videos on a page on c64os.com. They are in a few categories, and go back to the very beginning. So, many of these videos show super early builds of C64 OS, it's quite a blast from the past. And some of the most recent videos are from just a couple of months ago. I'll continue to add videos to this "Video Guide" as they get uploaded to YouTube.
The C64 OS Video Guide
Hybrid BASIC/ASM Programs
Here is a blog post about some general programming theory and practice on the C64, that I personally find useful and hopefully you'll find it useful too.
I recently updated a tool that I use to help me with C64 OS development from being written in BASIC to being written as a hybrid of BASIC and 6502 Assembly. I'm sure there are many books and many magazine articles that have been published on this subject, but there can never be too much information on programming tips and ideas for the Commodore 64.
I should set the stage by explaining my development environment. I decided from the beginning that I wanted to develop C64 OS using a C64 (or C128), and not by cross development on a Mac or PC. I know that isn't everyone's cup of tea, but since I would be spending years working on the project, I wanted to spend those years becoming intimately comfortable again with the C64's keyboard, and the storage devices, and all the various commands in BASIC and in the DOSes of the drives. I think that time spent has paid off, as I now have a pretty comprehensive understanding about how things work.
A tricky thing that I found when doing native development is a lack of a standardized set of tools. How do you convert numbers from int to hex and back? How do you run a checksum on a file? How do you split an existing file into two pieces at an arbitrary place? How do you add a header to a file? How do you convert an ASCII file to a PETSCII file? And on and on and on. There are tons of small tasks that have to be performed in order to do the dirty work of creating software.
Hidden Files
The news is that C64 OS version 1.06 has just been released, March 22, 2024. I'm happy to get that out the door, as it frees up my mind to start working on important new cornerstone technologies coming to C64 OS. I'll start dropping hints about that in the coming weeks.
Version 1.06 is a more modest release than 1.05 or 1.04. But I think that's okay. v1.06 includes one new Application, three new Utilities and new features and improvements to several existing Apps and Utilities, and even some new low-level features in the KERNAL and libraries.
This latest release makes use of a combination of all of the above to provide a handy new feature for users and a potentially powerful and useful feature for developers, when put to creative uses at a low-level. Discussions of just this nature have already been spurred on in the developer forums on the C64 OS Discord server.
That feature is: Hidden Files. (But you knew that already from the title of this post.)
Let me give a quick walk through of how hidden files work in C64 OS, some of the pit falls, some of the advantages, etc.
If you haven't yet, go grab the free v1.06 update here.
Eliza for C64 OS
I'm super busy, so I'm going to have to keep this blog post short. First a couple of updates. I had a great time at World of Commodore in December 2023. I had a nice vendor table there, I think it was the nicest I've ever put together.
The top image is how I imagined it, when I set it up on my basement floor. The bottom is how it ended up on a table at the show. I had three machines set up, each with a quite different collection of hardware, but each showing C64 OS v1.05 running and available for live demo.
There's an Ulimate64 with a cableless SD2IEC and a 1581 connected to a Commodore 1702 monitor, with a MouSTer and black wireless wheel mouse. This was the machine I used to give my presentation. There is also the C64 Luggable, which is a C64 Reloaded MK2 with a UltimateII+, MicroMys 5 and wired wheel mouse. And squeezed in the middle is TheC64 mini, mounted to the underside of a tiny black HDMI monitor on a stand I built for it. It's running VICE with C64 OS installed on a virtual IDE64. It's got a wireless keyboard and a TheMouse, USB tank mouse.
Vendor table at WoC2023.
The presentation went well, in my opinion. People *gasped* when I ended the presentation with the 3D teapot. I also demoed a variety of other new technologies that were added to C64 OS throughout 2023; disk image mounting in File Manager, mouse wheel support in Toolkit, Fast App Switching with REU and Fast Reboot, custom boot modes and bitmap boot screens, and of course the new animations and 3D matrix images in Image Viewer.
The presentation was recorded, both myself and the screen, and I am waiting for TPUG to post the video to their YouTube channel, so I can post it here and on social media.
I'm now working on the next thing for C64 OS. I'm working on a multi-line text area Toolkit control. I've got it mostly working, still a few bugs to work out. I'm excited by its addition because each new class opens the door for new opportunities to create software for the C64 with ease.
This video shows it crammed at the bottom of the Today Utility and without a scroll bar, etc. This is just an early test build that I was excited to share.
Some other updates include: I finished and published the Advanced set up for IDE64 section of the C64 OS User's Guide's Chapter 2: Installation. And I split up the Software Updates page which used to have three sections, into three separate pages:
But, following World of Commodore, and in time for Christmas morning, I dropped a little surprise. I released an Eliza Application for C64 OS! And that's what the rest of this post is about.
Fast App Switching
Hi everyone. I know it's been a while since I've written a blog post, but I have been super busy working on new C64 OS code and documentation.
A quick update on the documentation. I've been working on the Programmer's Guide, where I have completed Chapter 4: Using the KERNAL. It is an overview and discussion about how to use the C64 OS KERNAL, plus a reference-style breakdown of all 114 KERNAL routines divided into 10 modules: Memory, Input, String, Math, Screen, Menu, Service, File, Toolkit and Timers.
I've also been working on Chapter 7: Writing an Application. It's not quite ready to publish yet, but it is currently sitting around 35,000 words, and is a deep technical walkthrough of everything from stem-to-stern that goes into writing the TestGround Application that ships with C64 OS. TestGround's source code is opened in the process of writing this chapter, and it covers everything from creating an Application Bundle, to making its menu data file, creating an icon and about metadata file for your App, implementing a user interface in Toolkit, creating custom a class with custom draw routines, responding to messages, handling menu commands, loading data files and loading custom classes.
I have also been updating the online C64 OS User's Guide with new material from C64 OS v1.03, v1.04 and the brand new v1.05. I've added new documentation for the simplified VICE set up instructions for CMD HD and a new sub-chapter for set up with IDE64. And a new and updated document for advanced VICE configuration with CMD HD. Advanced VICE configuration for IDE64 and set up guide for C64 OS on TheC64 mini/maxi are on their way.
I decided early on when I was working on the C64 OS User's Guide that I would draw a dividing line between "core" OS features and the Applications, Utilities and other features that are provided as add-ons. One reason for this division is because, from my experience with working on other OSes for the Commodore 64, I have found that in the minds of many people all things that depend on the OS get rolled into one giant mega-project. And then cool new things get dismissed as, "Oh, it's just a new feature of that C64 OS project. Neat." I want to fight against this impulse. C64 OS is an application platform, and therefore Applications written for C64 OS should stand alone as their own productions, which, incidently require C64 OS to be run.
Image File Formats
The free software update v1.04 of C64 OS was released last month, June 2023. I like to give titles to the releases that capture the most important features of the release. I decided to call 1.04 the Multimedia Release.
The reason for calling it a Multimedia release is because it has 4 main changes related to graphics, animation and sound. Let me briefly touch on these 4 changes, and then we'll hop into the main point of this weblog post, which is to discuss Commodore 64 image file formats, including two new ones.
1) New video modes in splitscreen and fullscreen
From v1.0, C64 OS supports an adjustable raster-split which is referred to as splitscreen mode. It's built into the OS at the KERNAL level, with some help from a shared library called gfx.lib. The only reason for the gfx.lib is because if any Application doesn't need to use splitscreen mode, it's nice for it to reclaim some of that memory, and so some of the code that implements splitscreen which was originally in the KERNAL during the pre-release betas got moved to a shared library that could be loaded by those Applications that need it.
In addition to the splitscreen mode, there is also a fullscreen graphics mode. The two features are essentially the same thing; any Application that loads the gfx.lib and provides it with the pointers and configuration for the graphics data automatically gains support for both fullscreen and splitscreen modes.
Starting in v1.04, the gfx.lib and KERNAL have been updated to support all native VIC-II video modes. Prior to this update, only HiRes bitmap and MultiColor bitmap modes were available in split- and fullscreen graphics. Now, C64 OS supports HiRes character mode, MultiColor character mode, and Extended Background Color character mode, and each supports a custom character set. This opens the door for viewing PETSCII graphics which are very popular these days. Also most games are in a character mode with a custom tileset/characterset and this allows us either to view screen grabs of those games, but also makes it possible to implement games for C64 OS itself using those modes.
Mounting and Mouse Wheel
Mounting and mouse wheel? What the heck have those two things got to do with each other? Well, they're two new features available in the most recent update to C64 OS, version 1.03.
If you purchased a copy of C64 OS, either the Starter Bundle or the Standard Bundle, then you are a version 1.X licensed user. Congratulations. That entitles you to patches, bug fixes and updates with new features. If you didn't know that you get access to new features and updates, you may be missing out on cool new things being added to C64 OS.
You can download, for free, C64 OS system updates and other independent releases from the Official Software Updates page. These updates can be installed overtop of an existing C64 OS installation to update it to a newer version. This is all handled by the "Installer" Utility which was included as part of version 1.0. There are a few things you need to know before installing an update, such as updating your current system in steps. If you're currently on 1.0, you need to update to 1.01 first. Once you're on 1.01 you can update to 1.02, and from there to 1.03, and so on.
Everything you need to know is in a special guide called, C64 Archiver and Installer. And some of that information is repeated in condensed form at the top of the software updates page itself. In this blog post I'm going to talk about two new features in v1.03: Mouse Wheel Support, and Disk Image mounting in File Manager.
Gaps in Software IEC
Happy New Year Commodore 64 lovers, welcome to 2023.
C64 OS is selling well. I couldn't be happier about it. I'm currently restocking for the 4th stock run and hope to be back ready to take orders again around the end of January.
Lots of stuff is going on. We're just doing some beta testing on the v1.02 and v1.03 updates to make sure these work without any issues, and then they'll be released for download from the Software Updates page.
v1.02 is very minor; It fixes a bug in the Installer Utility which is important for making sure that subsequent updates install properly. At the same time v1.03 is being released with several new features I've been working on. More details on this, when it's released, will come in another weblog post.
I thought I'd share these pictures; A day in the life of an OpCoders Inc. grunt worker, assembling C64 OS bundles and making them ready for shipment.
OpCoders Inc. assembly factory.Many people have asked me if it is possible to use C64 OS with a 1541 Ultimate II+ or Ultimate64. This usually comes in the form of a question, "Is C64 OS compatible with the 1541 Ultimate II+ or Ultimate 64?"
This is a tough question to answer, because these devices are not just one thing with one feature. The Ultimate64 is a complete modern C64 replacement, so, can C64 OS be used on an Ultimate64? Of course! My last two World of Commodore demos have been delivered using an Ultimate64, along with both of my demos for Commodore Users Europe.
And a 1541 Ultimate II+ (its functionality is also built into Ultimate64) can be so many things: a 17xx REU, a GEORAM, a multi-SID chip emulator, a KERNAL ROM replacement, a speed loader cartridge, a source for Realtime Clock, an Ultimate Audio Module (for digital audio) and much more. So, is C64 OS compatible with a 1541 Ultimate II+? Of course! You can definitely plug a 1541UII+ into your C64 and also use C64 OS, and C64 OS can benefit from and use many of these features.
But that's not really what most people are asking. What they really want to know is, can C64 OS be installed on and booted directly from a 1541UII+ or Ultimate64? The short answer is, No. The longer answer is because these devices primarily provide a highly compatible modern implementation of a pair of 1541 disk drives (or now, 1571 or 1581 disk drives), which backend on disk image files rather than using physical floppy disk media. C64 OS cannot be installed on 1541, 1571 or 1581 disks because A) they are too low capacity, and B) they don't support subdirectories. All of this is outlined in some detail in the User's Guide, Chapter 2: Installation and in the Appendix: FAQ.
Inevitably, the curious person then asks me, "what about installing it on Software IEC?" and the explanation being, "because it supports subdirectories and access to the native USB device's file system." This is the point where it starts to become difficult to explain to people, in a nutshell, why Software IEC (at this point in time) is not sufficiently compatible with the other supported device families to be able to run C64 OS. The other device families are: CMD HD, RamLink, IDE64 and SD2IEC. All of which are remarkably DOS compatible with one another.
Above are previews of the 10 most recent posts.
Below are titles of the 5 next most recent posts.