where B is the bank number, from 0 to 255. (The registers start at $02 instead of $00 to allow compatibility with 65xx systems that have a processor port at $00/$01.) The "ABI Registers" are virtual 16 bit registers r0 through r15, which are located in zero page locations $02 through $21: r0 = r0L = $02, r0H = $03, r1 = r1L = $04 etc. RAM Bank window (512K total, expandable to 2MB) The Commander X16 builds on this concept by using an 8K window for banked RAM, and using the top 16K of memory for banked ROM:īanking logic allows up to 2MB of high RAM for data, machine language, etc, and 128K for ROM. The memory map is inspired by the VIC-20, which had a no-fuss division of RAM, I/O addresses, and ROM. Bank 0 is a scratch space for the operating system. The X16 also ships with 512K "high" static RAM, which is split into banks of 8K. A 512K ROM is split into 32 banks of 16K each Bank 0 holds the Commodore KERNAL, with DOS functions and a 16 bit ABI, and an upgraded BASIC 2.0. The memory model is inspired by the VIC-20 with 40k of "low RAM". There are no ADSR envelope controls in VERA itself, nor filters. Byte 3: waveform (bits 6 and 7), pulse width (bits 0-5).Byte 2: channel (right = bit 7, left = bit 6), volume (bits 0-5).
VERA's Programmable Sound Generator registersĮach block of four registers are as follows: VERA's PSG has 64 registers devoted to 16 voices, from $1F9C0 - $1F9FF: A Yamaha YM2151 provides MIDI-like sound. VERA has a programmable 16-channel stereo sound generator (PSG) based loosely on the SID it is also capable of PCM playback. All these modes support smooth scrolling. VERA supports per-tile h-flip, v-flip, 4-bit palette offset, and a 10 bit tile index. Its color palette is 256 colors, using a total range of 4096 colors. It has 128 KB RAM, and has multiple output formats (including VGA) at a fixed resolution of It supports two layers with various tile and bitmap modes, and up to 128 sprites. The graphics capabilities of the X16 are provided by the VERA module. VERA Ī single FGPA module, named VERA, supplies graphics, basic sound, and SD card access for the X16. It also has two exposed SNES game controller connectors, with two internal pin headers that can support two more connectors. Like the C64 and the VIC-20, the system contains an IEC compatible disk drive port, as well as an I2C bus. Device #1 is an SD card, instead of the Commodore Datasette. The X16 has four expansion slots with access to the CPU data bus. It provide a real-time clock/calendar, two alarms and 64 bytes of RAM.
A serial IEC port, and an SD card slot, permits file transfer between the X16 and Commodore machines by way of floppy diskette or SD2IEC.Ī follow-on possibility is in repackaging the X16's graphics FPGA "VERA" to extend the graphics capability of other Commodore machines, including the C64. However, a primary goal is to use a 6502 processor, the Commodore KERNAL and BASIC (with extensions), and to that extent be generally KERNAL-compatible with Commodore machines. The project's goal is not to create a C64 clone. He discussed requirements for sound and proposed potential sound chips. By the end of the second video, he had settled on a 6502-derived CPU, the Commodore 64 KERNAL, and an architecture based loosely on the VIC-20. In 2019, the popular YouTube program The 8-Bit Guy posted two videos titled "Building My Dream Computer", where he discussed hardware considerations in building a modern 8-bit computer.
It is simple enough that someone can understand the entire system, and interesting enough to create its own retro ecosystem. I wanted a computer that was similar to the Commodore 64, but made from all off-the-shelf components. It is the brainchild of David "the 8 Bit Guy" Murray, who wanted an accessible and affordable platform with late-80s sound and graphics.
It is intended to be a hobby computer built from modern, mostly off-the-shelf parts, with KERNAL compatibility with the Commodore family of computers. The Commander X16 (colloquially known as the X16) is a modern hardware platform under development. 512K ROM + 40K program RAM + 512K banked RAM (expandable to 2MB)