Commander X16
Commander X16 | |
---|---|
Typ | Heimcomputer |
Hersteller | David Murray |
Neupreis | 350 US-$ (ohne Gehäuse) |
Erscheinungsjahr | 2023 |
Prozessor | WDC 65C02 @ 8 MHz |
Speicher | 40KByte RAM + 512KByte RAM (64 Bänke zu je 8Kbyte) + 512KByte ROM (32 Bänke zu je 16KByte) |
OS | Erweitertes Kernal and erweitertes BASIC 2.0. |
Sonstiges |
|
Der Commander X16 (auch bekannt als X16) ist eine moderne (Retro-)Hardware. Die Absicht war, einen Hobby-Computer mit moderner Hardware, soweit wie möglich "von der Stange", zu bauen, die vom Betriebssystem her kompatibel mit den Computern der Commodore-Familie ist. Das Projekt ist ein Idee von David "the 8 Bit Guy" Murray, der einen Computer mit der Grafik und dem Sound der späten 1980er Jahre zugänglich machen wollte. In seinen eigenen Worten:
- I wanted a computer that was similar to the Commodore 64, but made from all off-the-shelf components.
- Übersetzung: Ich wollte einen Computer, der dem Commodore 64 ähnelt, aber aus handelsüblichen Komponenten besteht.
Die Hardware enthält einen 65C02 Prozessor, der heute noch von der Firma WDC gebaut wird. Sie ist einfach genug, damit man das gesamte System verstehen kann. Sie ist imstande, ein eigenes Retro-System zu schaffen. Ihre weitgehend "von der Stange" verfügbaren Komponenten lösen ein heutiges Problem der Retro-Computer: die ständig steigenden Preise für Gebrauchtgeräte und die Nicht-Verfügbarkeit 40 Jahre alter Komponenten.[1]
Entstehung[Bearbeiten | Quelltext bearbeiten]
Im Jahr 2019 erschienen im YouTube-Kanal The 8-Bit Guy zwei Videos mit dem Titel "Building My Dream Computer", in denen David Murray Überlegungen zur Hardware zum Bau eines modernen 8-Bit-Computers anstellte. Am Ende des zweiten Videos entschied er sich für eine 6502-verwandte CPU, den Kernal des C64 und eine Architektur, die lose auf der des VIC-20 basiert. Er disktutierte die Anforderungen für Sound und schlägt mögliche Sound Chips vor.[2][3] Schließlich wurde auch ein erweitertes BASIC V2 benutzt. Serielles IEC erlaubt den Dateitransfer zu Floppy Disks. Ein SD-Karten-Slot ermöglicht sehr schnelles Laden von Dateien. Zur Grafikausgabe wurde eine Version des Grafik-FPGA „VERA“ für den X16 eingesetzt, der Grafik- und Soundfähigkeiten beisteuert.
Eigenschaften[Bearbeiten | Quelltext bearbeiten]
Das System nutzt eine Micro ATX-Hauptplatine, auf der alle Chips gesockelt sind.
CPU und Echtzeituhr[Bearbeiten | Quelltext bearbeiten]
- Western Design Center 65C02S, ein Nachfolger der 6502 CPU, die mit 8 MHz läuft.
- Batterie-gepufferte Echtzeituhr mit dem Microchip MCP7940N. Sie bietet auch einen Echtzeitkalender, zwei Wecker, 64 Bytes RAM und wird über den I2C-Bus angesprochen.
Ein- und Ausgabe[Bearbeiten | Quelltext bearbeiten]
Der X16 bietet vier Steckplätze für Erweiterungen mit direktem Zugriff auf den Datenbus der CPU. Wie der C64 und der VIC-20 hat das System einen IEC-kompatiblen Floppy-Anschluss. Außerdem bietet der X16 einen I2C-Bus.
Er akzeptiert eine PS/2-Tastatur und Maus als Eingabegeräte und verfügt über zwei freiliegende SNES-Controller-Anschlüsse mit zwei internen Stiftleisten, die zwei weitere SNES-Anschlüsse unterstützen können.
- Der IEC-Anschluss ist als Laufwerk 8 ansprechbar.
- Der SD-Karten-Slot wird auch als Laufwerk 8 erreicht, kann aber auch als Laufwerk 9 gesetzt werden.
Speicher und Betriebssystem[Bearbeiten | Quelltext bearbeiten]
Die Speicherbelegung ist inspiriert vom VIC-20 mit 40 KByte "low RAM". 1 KByte davon nutzt das System für die Ein- und Ausgabe. Die 512 KByte ROM sind aufgeteilt in 32 Bänke zu je 16 KByte; Bank 0 enthält den Commodere Kernal mit DOS-Funktionien und dem Basic 2.0 and a 16 bit ABI. Der X16 hat 512 KByte "high RAM", das in 64 Bänke zu je 8 KByte aufgeteilt ist. Dieser Speicher kann bis zu 2 MByte erweitert werden. RAM bank 0 is a scratch space for the operating system.
Die Speicheraufteilung ist vom VC-20 inspiriert, der eine übersichtliche Aufteilung von RAM, I/O-Adressen und ROM hatte. Der Commander X16 baut auf diesem Konzept auf, indem er ein 8K-Fenster für jede RAM-Bank und die oberen 16K des Speichers für die ROM-Bank verwendet.''
Die Logik der Bank erlaubt bis zu 2 MB High-RAM für Daten, Maschinensprache usw. und 128 KB für ROM.''
Commander X16 Memory Map
Addressbereich | Größe | Beschreibung |
---|---|---|
0x0000-0x0001
|
2 Bytes | RAM, ROM Bank Kontrolle |
0x0002-0x0021
|
32 Bytes | 16 bit ABI Register |
0x0022-0x007F
|
94 Bytes | Zeropage für Benutzer |
0x0080-0x00FF
|
128 Bytes | Zeropage für Kernal und Basic |
0x0100-0x01FF
|
256 Bytes | Prozessorstack |
0x0200-0x03FF
|
512 Bytes | Kernal und Basic Variablen und Zeiger |
0x0400-0x07FF
|
1024 Bytes | User space |
0x0800-0x9EFF
|
38.656 Bytes | RAM für Basic Programm und Variablen |
0x9F00-0x9FFF
|
256 Bytes | I/O Register |
0xA000-0xBFFF
|
8192 Bytes | RAM Bank Fenster (512KB gesamt, erweiterbar bis 2MB) |
0xC000-0xFFFF
|
16.384 Bytes | ROM Bank Fenster (512KB gesamt) |
ABI-Register[Bearbeiten | Quelltext bearbeiten]
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. (The registers start at $02 instead of $00 to allow compatibility with 65xx systems that have a processor port at $00/$01.)
Speicherbänke[Bearbeiten | Quelltext bearbeiten]
Die RAM-Speicherbank 0 wird für Variablen und Puffer des Betriebssystems verwendet. Die Speicherbänke 1-63 (bei 512 KB) sind für den Benutzer frei verfügbar. Nach dem Start ist für den Benutzer die Speicherbank 1 ausgewählt.
Die ROM-Speicherbänke 0-31 sind wiefolgt aufgeteilt:
Bank | Name | Beschreibung |
---|---|---|
0 | KERNAL | Betriebssystem und Treiber |
1 | KEYBD | Belegungstabellen für Tastaturen |
2 | CBDOS | The computer-based CMDR-DOS for FAT32 SD cards' |
3 | FAT32 | Der eigentliche FAT32 Treiber |
4 | BASIC | BASIC Interpreter |
5 | MONITOR | Maschinensprachmonitor |
6 | CHARSET | PETSCII und ISO Zeichsätze (hochgeladen ins VRAM) |
7 | DIAG | Memory diagnostic' |
8 | GRAPH | Grafik- und Zeichensatzroutinen des Betriebsystems |
9 | DEMO | Demo-Programme |
10 | AUDIO | Audio API Routinen |
11 | UTIL | Systemkonfiguratioen (Datum/Uhrzeit, Darstellungsoptionen) |
12 | BANNEX | einige der Basic-Erweiterungen |
13-14 | X16EDIT | Texteditor |
15 | BASLOAD | A transpiler that converts BASLOAD dialect to BASIC V2 |
16-31 | - | derzeit unbenutzt |
Sound[Bearbeiten | Quelltext bearbeiten]
Der Yamaha YM2151 liefert MIDI-ähnlichen FM-Sound. Zusätzlich zum YM2151 bietet das VERA-Modul Audio-Wiedergabe.
VERA[Bearbeiten | Quelltext bearbeiten]
Ein FPGA-Modul (basierend auf einem Lattice ICE40UP5K mit 5280 LUTs) mit dem Namen VERA (Video Embedded Retro Adapter) liefert die Grafik, PSG und PCM Sound sowie den SD-Karten-Zugriff für den X16. Es wurde von Frank van den Hoef entwickelt.
Grafik[Bearbeiten | Quelltext bearbeiten]
Die Grafik-Fähigkeiten des X16 werden von dem VERA-Modul bereitgestellt. Es hat 128 KByte RAM, verschiedene Ausgabeformate (inklusive VGA) und eine feste Auflösung von 640x480 Pixel bei 60 Hz. Das Grafik-RAM ist nicht direkt für die CPU sichtbar und muss indirekt über VERA adressiert werden, ähnlich wie es der VDC macht, allerdings effizienter.
Es unterstützt zwei Ebenen mit verschiedenen Kachel- und Bitmap-Modi und bis zu 128 Sprites. Das Modul kann 256 Farben aus einer Palette von 4096 Farben darstellen.
VERA supports per-tile h-flip, v-flip, 4-bit palette offset, and a 10 bit tile index. All these modes support smooth scrolling.
Sound[Bearbeiten | Quelltext bearbeiten]
VERA bietet einen programmierbaren 16-Kanal-Stereo Sound Generator (PSG), der auch Digitalaudio (PCM) wiedergeben kann. ADSR und Filter werden nicht angeboten. ADSR kann über Software nachgebildet werden.
SMC[Bearbeiten | Quelltext bearbeiten]
Der System Management Controller (SMC) des X16 wird durch einen ATtiny861-Mikrocontroller (20 MHz Takt) implementiert. Der SMC steuert die Stromversorgung sowie die LEDs an und setzt die Anbindung der Buttons und PS/2-Geräte um.
BASIC[Bearbeiten | Quelltext bearbeiten]
Der X16 bietet die Befehle des BASIC V2 des VIC-20 und C64 sowie einige neue Befehle für u.a. Grafik- und Sound-Unterstützung, Zugriff auf die Speicherbänke, neue Diskettenbefehle und nützliche Funktionen wie BIN$ und HEX$. Der X16 ist soweit wie möglich kompatibel mit den C64-BASIC-Token. Zusätzliche Befehle, die auch schon in anderen Basic-Version existieren, haben deren Token, und gänzlich neue Befehle sind in den Bereichen $CE-$80+ and $FE-$80+ einsortiert. Eine DOS-Wedge ist integriert.
KERNAL[Bearbeiten | Quelltext bearbeiten]
Der X16 nutzt einen erweiterten C64-KERNAL. Er unterstützt die X16-Text- und Grafikmodi, Erweiterungen, eine Echtzeituhr und einfaches Speichermanagement.
Softwarekompatibilität[Bearbeiten | Quelltext bearbeiten]
Im Vergleich zum C64 sind viele Routinen und Hardware-Adressen unterschiedlich, was zu Inkompatibilitäten mit BASIC-Programmen führt, die PEEK, POKE, WAIT und SYS verwenden.
Maschinenspracheprogramme vom C64 oder C128 sind nur in wenigen Ausnahmefällen ohne Änderungen auf dem X16 lauffähig, da der X16 sowohl eine andere Belegung der Zeropage als auch andere Einsprungpunkte im KERNAL und BASIC benutzt und wesentliche Hardware des C64/C128 (VIC-II und SID) nicht existiert.
Programme, die ausschließlich die KERNAL-Sprungtabelle benutzen, sind eventuell ohne Änderungen lauffähig; der X16 unterstützt neben den KERNEL-Aufrufe des C64 auch einen Teil der KERNAL-Aufrufe des C128.
Programmentwicklung[Bearbeiten | Quelltext bearbeiten]
Assembler[Bearbeiten | Quelltext bearbeiten]
Das ROM des X16 enthält einen Maschinensprachemonitor, der auf dem von Final Cartridge III basiert und die gleichen Befehle benutzt.
Cross Compiler-Unterstützung[Bearbeiten | Quelltext bearbeiten]
The Commander X16 ist eine der unterstützten Platformen des cc65 Compilers.[4]
Emulator[Bearbeiten | Quelltext bearbeiten]
Ein offizieller Emulator wird parallel zur Hardware entwickelt. Der Emulator ist auf Windows, Mac OS X und Linux lauffähig.[5]
Nicht-offizielle Emulatoren werden entwickelt für das iPad[6] und Android-Geräte[7]. Sie wurden vom Quelltext der offiziellen Version abgeleitet.
Rechtliche Fragen zum modifizierten Kernal und Basic[Bearbeiten | Quelltext bearbeiten]
The software of the computer is based on leaked Commodore 64 KERNAL and BASIC source code.[8] David requested permission from the current owners of the software (Cloanto) but didn't get a reply.[9] However, "Peri Fractic" was able to get permission from Cloanto to use the BASIC and KERNAL ROMs.
Michael Steil has also added new KERNAL routines, based on routines present in the C128 and other systems, for dealing with sprites, date/time, joysticks, mouse, graphics mode, and memory handling.
Should it ever need them, the Commander X16 emulator project has access to the MEGA 65's open ROMs[10] which are open sourced under the LGPL v3 license.[11].
Quellen[Bearbeiten | Quelltext bearbeiten]
- ↑ [1] Commander X16 FAQ
- ↑ [2] My Dream Computer - Part 1
- ↑ [3] My Dream Computer - Part 2
- ↑ [4] GitHub cc65 — Cx16 page
- ↑ [5] GitHub X-16 emulator
- ↑ [6] Cx16 Facebook Group announcement
- ↑ [7] APKPure.com Commander X16 Emulator
- ↑ [8] GitHub: "BASIC and KERNAL are derived from the Commodore 64 versions. GEOS is derived from the C64/C128 version."
- ↑ [9] Youtube.com: 8Bit Guy — Building my Dream Computer, Part 1.
- ↑ [10] GitHub: Commander X16 r37 release.
- ↑ [11] GitHub: MEGA65 Open ROM Repository.
Weblinks[Bearbeiten | Quelltext bearbeiten]
Dokumentation[Bearbeiten | Quelltext bearbeiten]
- Offizielle Commander X16 Webseite
- Offizielle X16 and VERA Programmier Handbuch (Github)
- Offizieller X16 Emulator (Github)
- Offizielle X16 Demos
Tools und Tutorials[Bearbeiten | Quelltext bearbeiten]
- Aloevera - a build tool that converts PNG to VERA text, tiles, sprites, and bitmaps.
- Dansbo's "Hello, World!" in Assembler für X16
- Blog Assembler-Tutorial