Benutzer:Mstma/test
Mstma/test | |
---|---|
Typ | Heimcomputer |
Hersteller | David Murray Homepage |
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. |
(Übersetzung der gleichnamigen Seite auf www.c64-wiki.com)
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 80er 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.
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]
KERNAL Kompatibilität[Bearbeiten | Quelltext bearbeiten]
Das Projektziel ist nicht die Schaffung eines C64 Klones. Jedoch ist es ein primäres Ziel, den 6502 Prozessor, das Kernal von Commodore und ein erweitertes Basic 2.0 zu benutzen. Dadurch ist das Gerät generell Kernal-kompatibel mit Commodore Rechner. Serielles IEC erlaubt den Dateitransfer zu Floppy Disks und ein SD-Karten-Slot ermöglicht sehr schnelles Laden von Dateien.
VERA's Proof of Concept[Bearbeiten | Quelltext bearbeiten]
A follow-on possibility is in repackaging the X16's graphics FPGA "VERA" to extend the graphics and sound capabilities of Commodore and non-Commodore machines, including the C64 and the VIC-20.
Hardware Spezifikation[Bearbeiten | Quelltext bearbeiten]
Das System hat 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 hat 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, sowie einen I2C-Bus.
It also has two exposed SNES game controller connectors, with two internal pin headers that can support two more SNES connectors.
Er akzeptiert eine PS/2 Tastatur und Maus als Eingabegeräte.
- 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.
The memory map is inspired by the VIC-20, which had a no-fuss division of RAM, I/O addresses, and ROM. 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.
Banking logic allows up to 2MB of high RAM for data, machine language, etc, and 128K for 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]
An on-board Yamaha YM2151 provides MIDI-like sound. Additionally, the VERA module has a simpler PSG with some PCM playback and SID-like capability.
VERA[Bearbeiten | Quelltext bearbeiten]
Ein FPGA-Modul 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 dex 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.
It supports two layers with various tile and bitmap modes 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 has a programmable 16-channel stereo sound generator (PSG) based loosely on the SID; it is also capable of PCM playback.
VERA's PSG has 64 registers devoted to 16 voices.
There are no ADSR envelope controls in VERA itself, nor filters. ADSR must be managed by software.
Emulator[Bearbeiten | Quelltext bearbeiten]
Ein offizieller Emulator wird parallel zur Hardware entwickelt. Der Emulator ist auf Windows, Mac OS X und Linux lauffähig.[4]
Nicht-offizielle Emulatoren werden entwickelt für das iPad[5] und Android-Geräte[6]. Sie wurden vom Quelltext der offiziellen Version abgeleitet.
Softwarekompatibilität[Bearbeiten | Quelltext bearbeiten]
Anwendungen[Bearbeiten | Quelltext bearbeiten]
Der X16 hat ein erweitertes Commodore Kernal, ein verbessertes Basic 2.0 (mit DOS-Wedge und zusätzlichen Befehlen, die vom C128 und anderen übernommen wurden), einen Maschinensprachmonitor und mehr.[7][8]
Basic[Bearbeiten | Quelltext bearbeiten]
Commander X16 Basic 2.0 ist weitgehend kompatibel mit dem des VIC-20 und C64, und hat einige neue Befehle. Viele Routinen und Hardware-Adressen sind unterschiedlich, was zu Inkompatibilitäten mit Programmen führt, die PEEK, POKE, WAIT und SYS verwenden.
Die neuen Basic-Befehle liefern 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 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.
Kernal[Bearbeiten | Quelltext bearbeiten]
Der X16 hat einen erweiterten C64-Kernal. Er unterstützt die X16 Text- und Grafikmodi, Erweiterungen, timekeeping und ein einfaches Speichermanagement.
Um zwischen verschiedenen Platformen kompatibel zu sein, müssen Anwendungen die Kernal-Aufrufe verwenden. Der X16 unterstützt die Kernal-Aufrufe des C64 und einen Teil der Kenal-Aufrufe des C128.
Binärkompatibilität[Bearbeiten | Quelltext bearbeiten]
Die meisten Binärprogramme bauen auf spezielle Adressierungen auf und müssen daher neu assembliert oder kompiliert werden. Insbesondere die Unterschiede zwischen VERA und der Grafikprogrammierung bei den Commodore-Rechnern machen Anpassungen nötig.
Assembler[Bearbeiten | Quelltext bearbeiten]
Das ROM enthält einen Maschinensprachmonitor, 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.[9]
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.[10] David requested permission from the current owners of the software (Cloanto) but didn't get a reply.[11] 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[12] which are open sourced under the LGPL v3 license.[13].
Quellen[Bearbeiten | Quelltext bearbeiten]
- ↑ [1] Commander X16 FAQ
- ↑ [2] My Dream Computer - Part 1
- ↑ [3] My Dream Computer - Part 2
- ↑ [4] GitHub X-16 emulator
- ↑ [5] Cx16 Facebook Group announcement
- ↑ [6] APKPure.com Commander X16 Emulator
- ↑ [7] Commander X16 FAQ
- ↑ [8] My Dream Computer - Part 2
- ↑ [9] GitHub cc65 — Cx16 page
- ↑ [10] GitHub: "BASIC and KERNAL are derived from the Commodore 64 versions. GEOS is derived from the C64/C128 version."
- ↑ [11] Youtube.com: 8Bit Guy — Building my Dream Computer, Part 1.
- ↑ [12] GitHub: Commander X16 r37 release.
- ↑ [13] GitHub: MEGA65 Open ROM Repository.