Commander X16: Philosophy and Specification

I recently got involved in the Commander X16 project. I would like to give an overview of the project and the vision behind it from my perspective.

Philosophy

The Commander X16 is a new 8 bit computer designed by David Murray of the well-known “The 8-Bit Guy” online video channel.

8 bit computers are great for learning about computer architecture, because they are simple enough that they can be fully understood, and they are great for learning to program, because they boot straight into a programming language. But 8 bit computers also have some annoyances like cheap, non-standard keyboards, TV-out and the reliance on floppy disks (or rather expensive SD card adapters).

Therefore, David is designing a new 8 bit computer in the style of Commodore computers like the VIC-20 and the C64, fixing the annoyances of retro computers by having:

  • VGA output (in addition to composite)
  • support for standard PS/2 keyboards (instead of a cheap built-in keyboard with a non-standard layout)
  • SD card for storage (instead of an additional floppy drive)
  • RS232 port for efficient cross-developmment
  • efficient modern power supply

Another problem with retro computers nowadays is the high barrier of entry when developing (semi-)professional software: Since retro computers have been researched for almost 40 years, standards for software are very high. Any credible new game release for the C64 for example will have to come with a fastloader to overcome slow load speeds, and a sprite multiplexer to overcome the 8 sprite limit. The X16 ROM supports fast loading from SD card, and its video chip supports plenty of sprites as well as hardware scrolling of bitmaps. The memory map is kept simple and does not need (or support) complex reconfigurations.

With a rather modest set of hardware features, the X16 targets a lower price point than most comparable projects.

These are the original videos on the topic:

Hardware

These are the hardware specs:

  • 65C02 CPU at 8 MHz
  • 40 KB of main RAM
  • 512 KB (or 2 MB) of banked RAM
  • 128 KB of banked ROM
  • VERA video controller
    • 16-bit class
    • 128 KB of external video RAM
    • 640×480 (or 320×240) pixels
    • 256 colors out of 4096
    • 2 layers supporting tiled and bitmap modes
    • 128 sprites (limit per line based on memory bandwidth)
  • sound TBD
  • two 6522 VIA I/O controllers

The computer supports the following connections:

  • VGA (480p), or Composite/RGB (480i)
  • PS/2 keyboard
  • PS/2 mouse
  • two NES or SNES controllers
  • SD card
  • legacy IEC
  • RS-232

The X16 is not an FPGA-based solution, but uses real, socketed 65C02 and 6522 chips for the same hackability as a retro computer. The video chip is a new design and comes as an FPGA.

Software

From the software side, the Commander X16 feels like a Commodore computer. Its ROM contains the “KERNAL” operating system derived from the C64 version, as well as an enhanced version of Commodore/Microsoft BASIC based on V2.

Consequently, the X16 can be considered a sibling of the computers from the Commodore 8 bit family (PET, VIC-20, C64, CBM2, Plus/4, C128 and C65). It is not meant to be fully compatible with any of these machines, but it is as compatible as a Plus/4 is with a C64: BASIC programs without PEEK and POKE as well as machine code programs that only use the documented KERNAL API (e.g. BSOUT $FFD2) will just work, but existing code that accesses hardware would have to be ported.

The fact that the X16 breaks compatibility with the C64 is what I find particular interesting. Most retro projects try to recreate a classic computer. Users will start their favorite two games and then get bored. The X16 is a new system, with new tricks to discover – but familiar to people who know the C64.

Development

As of October 2019, only a handful of prototype machines exist. If you don’t want to wait for the release hardware, you can use the emulator:

https://github.com/commanderx16/x16-emulator/

There are binary releases for macOS, Windows and Linux on the GitHub releases page, which always include the latest build of the ROM.

The ROM is being developed as open source:

https://github.com/commanderx16/x16-rom/

The reference guide is worked on as an open source project as well:

https://github.com/commanderx16/x16-docs/

And here is a collection of demo/example code contributed to by many people:

https://github.com/commanderx16/x16-demo/

The official forum is unfortunately hosted on Facebook, but there is a lot going on: Users show off programs they have written and discuss programming questions. There is also a forum on David Murray’s website.

8 thoughts on “Commander X16: Philosophy and Specification”

  1. I’ve heard of it and I personally find that there could have been a better way to utilize paging.

    What I would have done was to use paging for IO cards. So you have a set of (virtual) slots on your mainboard, and by accessing some register you can decide which slot will be mapped into the memory location. That way IO cards won’t need to be configured for addresses or interrupts, and those cards can have their own code on ROMs. That would enable you to instantly work with new hardware you didn’t know about when you wrote the main ROM. Or you could install 5 identical soundcards without any chance of them taking up the same resources. In fact as you have clear semantics on when your CPU can access which device, you can even extend this to multi-CPU or multi-user systems comparatively easy.

    In fact as the device will always be at constant addresses, you can just jump straight into the driver ROM, if you know the address. (If you have selected the device first)

  2. While a nice attempt, I think they should have spend a bit more time in analysing other systems and what could possibly add to the system. So far it’s more like a C64 with a CPU speed up than any real new development. It carries along all the problems of the C64 design. In fact, there have been multiple other 8-bit machines, offering superior solutions, already back in the 1980s.

    Memory management being the most obvious point – even without going as far as his nice basic I/O channel concept does.

  3. BTW regardless of details of the implementation, this fills a nice niche for people thriving to understand computers. It is a computer you can fully understand, a computer you can learn the basics from.

    This is important work.

  4. This brings back old times. I have always been fond of 6502 ML. It would be great if the monitor had the micromon Walk command.

  5. I do wish they’d just switch to supporting modern tvs with 16×9 aspect ratio.

    I wrote a post suggesting that, and it wasn’t approved.

    The screen memory is already WIDER than that, because on the vera chip the stride has to be a power of 2.

  6. From my viewpoint, every technical choice is debatable but correct, eventually – as David said – it’s HIS “dream computer”, so he’s in charge of making those choices.

    Personally speaking, I would have designed a system with a flexible CPU/VIDEO/SOUND/MEMORY/IO (i.e. selectable) hardware architecture instead of a fixed one (i.e. 6502-rooted, Commodore-resembling environment), enabling it to emulate any known (or even a custom) 8-bit computer system, as it was briefly said in the very initial goals, but the retrocomputing story is telling us the it’s not the best technical project that corners the market, but it’s a combination of low prices, average performances and software availability (i.e. programmers involvement) that creates a large user base, thus determining a successful product.

    From this viewpoint, David seemed very careful and democratic, ready to change some ideas along the way in order to please his followers (this is why he chose Facebook to share feedback and stimulate every kind of people involvement), still he’ll be uncertain about the final price, that – despite the well-supported (i.e. youtube adverted) and shared project objectives – will be precisely determined when the project is mature and initial production costs & quantities can be estimated. In that moment, the final statement on the x16 project will be said.

    Given the braveness (and intelligence) he showed in exposing himself for this ambitious project, I really hope David could be satisfied by the ultimate user redemption.

    Anyway – consider it David if you’re reading me – no matter if you’ll see the desired user response or not, all this development is ALREADY a successful way of creating a dream computer and IMHO is also the best captivating video series you’ve created so far.

Leave a Comment