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.

The official forum is at commanderx16.com, with people discussing programming questions and showing off new programs.

24 thoughts on “Commander X16: Philosophy and Specification”

    • Or perhaps DVI-I support so those with HDMI monitors can use DVI-D and those with VGA have the DVI-A option as well.

  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.

  7. “The official forum is unfortunately hosted on Facebook…”.

    Yes, exactly right – it is supremely unfortunate, and I’m pretty sure I’m speaking for a lot of 8-bit retro geeks who have zero interest in having our hobby monetized by Mark Zuckerberg.

    Please consider a “Just Say No to Facebook” policy for the X16 project, or at minimum cross-post the content to a platform that is aligned with the hacker/DIY/OSS ethos. This post is a great step in the right direction!

  8. > I’m pretty sure I’m speaking for a lot of 8-bit retro geeks who have zero interest in having our hobby monetized by Mark Zuckerberg.

    E.g. me. I’m the primary maintainer of the cc65 C compiler project – that already officially supports the CX16. However, I can’t actively participate in the discussion as I’ll for sure won’t create a FB account for whatever reason.

  9. Thought more expensive I prefer the c256foenix. https://c256foenix.com/ The site is a little out of date, most talk is on the discord. The developerboard is in its final release (rev c4) and being build. It also has many “real” chips. Multiple opl’s (real opl3 opm etc.) types an saa (real) chip and sid (fpga) and a modern codec (44.1 kHz) audio out and in. Also midi out and in and 4 atari style joyports and sdcard and harddisk support. It also has DVI out and some higher resolutions (800×600) and a big sprite engine. The video chip is an fpga design. But as murray discovered that is unavoidable. foenix uses a real 65816 chip. Same as for example was in the snes. Yeah it cost more, but you get a lot more too. Also final cost will not be that much higher than X16.

  10. What’s the point of this? It doesn’t seem to be that useful. But people are taking it too seriously.
    It’s specs for graphics and sound seem to be beyond what an 6502 CPU should be used with. This is more 16-bit / 68000 territory.

    Based on the CPU, at what rate can PCM sound be output from the SAA chips via software methods? Because if it cannot compete with Atari ST, I don’t see the point in going beyond 16 colors or using FM synthesis.

    But I would like to be proven wrong.

  11. I understand David’s desire for an 8-bit platform to help aspiring programmers better understand the relationship between Basic and Assembly programming. Op codes for an 8-bit CPU are a smaller domain that can be more easily grasped and wielded. However, I agree with the lust for higher than standard VGA graphics resolution. If you must go the FPGA route for display hardware in any case, it seems as though 960×720 (4:3), 1152×720 (8:5), and 1280x720p (16:9) would be a more inspiring goal at the high-end.

  12. I really think the CX16 is a great idea, but using facebook and youtube as primary means of communication is just plain wrong. Also (as the licensing trouble with Cloanto has clearly shown) this project needs a clean room, open source KERNAL implementation. If you’re building your own dream computer, being dependant on big companies and ‘social’ networks is a very bad thing.

    (I’ve played around a little bit and implemented two little games and a roguelike dungeon generator for the CX16… you can find it on my github pages. I’ve posted the executables to the murray2 forum, but of course with the main talk going on on facebook, I might as well have posted it to my cellar door and would have gotten more feedback…)

  13. Those knocking decisions should do so with the understanding that he is building his own dream computer, not one for you. I know this has been said, and it’s also been said that it’s either doing or looking at doing certain things that are more in line with 16bit computers than 8bit and is therefore going against what it should be. Let’s not forget, he’s building “a computer”. He didn’t say he’s building “an 8bit computer” or “16bit computer” or that he’s trying to replicate anything that exists or existed. What chips it uses and how it uses them, it’s up to him. Like any good chef would say…”If you don’t like the food I’m preparing for you, go and eat elsewhere!”

    I personally am looking forward to this as a guy who grew up entering listings from magazines to get an understanding of programming without even realising it. Do I wish it had more modern interfaces for TVs and peripherals? Sure. But then it does take away from the general vibe that he’s going for.

  14. Forgot to say, the one thing I do agree with is the use of Facebook for discussing this! Hate that damn thing, which is an unusual decision as I suspect most people in our position won’t be huge fans of said platform.

  15. Well, one aspect of the CBM keyboards SHOULD have become a standard in computing: multifunctional keys giving access to lots of cleverly designed graphical characters + color selection + reverse key. In that respect, the C64 keyboard compares to a standard PC keyboard like the Space Shuttle cockpit to the wooden steering contraption of the Wright Flyer.

    • What I really like with the X16 is that it has several expansion slots a la Apple II. A really good idea missing on many new retro inspired computers!

  16. I like all the “new” retro computers that are popping up a dussin, including X16 and the c256foenix.com (perhaps a bit more ambitious than the x16), but the reference retro project and bar is really the Spectrum Next (specnext.com). Extremely well executed and a role model for Kick Starter funding as well as retro computer projects. Missed out on the first batch on KS, but will join the new Spectrum Next one coming up in a week on KS (or two weeks). But I really look forward to both the X16 and C256, and hope they progress to such a refined state.

  17. I’m using (and like very much) the Colour Maximite 2/ It goes to retro needs from opposite side: simply takes ARM microcontroller, built it into case with rPI-like expansion port, SD card, VGA etc. and you can programming it (mainly) just in BASIC (very good dialect).
    But it’s so fast, that BASIC is about speed of 6502 machine code on C64…
    https://geoffg.net/maximite.html

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.