Entscheidungspoint: Wie weiter nach den 8bit Prozessoren bei den Homecomputern? Eine oft gewählte Option – Motorola 68000 in Mac, Atari ST, Amiga, Sinclair QL, NExT [InArbeit]

Die 70er und Anfang 80er Jahre waren geprägt von 8bit-Prozessoren allen voran dem 680x (der als teuer galt), 650x (der darauf schon billiger entworfen wurde), japanischen NEC-Varianten und den Intel-‚kompatiblen‘ 8008 und ZX80. Diese waren billig aber durch ihre 8Bittigkeit auch beschränkt. Was allerdings nicht all zu sehr störte, da die Anforderungen nicht besonders hoch waren (Selbst die Arcades seit Space Invaders 1978 arbeiteten mit Prozessoren) und viele Extras im Gamebereich wurden von der Hardware ausgeführt wurde (etwa Sound, Sprites oder Scrolling).

Der Prozessor & Assembler

Die Zukunft war zu dieser Zeit weiter offen, als dies heute der Fall scheint im Rückblick. Es gab viele verschiedene Computerhersteller mit eigenen Hardwaredesigns. Der Hauptprozessor war zwar nur ein Teil des Computers. Da aber gerade im Gamebereich viel in Assembler gemacht wurde, war der Prozessor bzw. die spezifischen Kenntnisse davon schon massgeblich in Sachen Portabilität. Danach folgten Speed des Prozessors oder/und Videofähigkeiten (Sprite, Scrolling) und Audiofähigkeiten. (Durchgesetzt haben sich bekanntlich vorallem die Intel-Schiene in den 90ern und PowerPC und heute wieder vermehrt die ARMs).

Siehe dazu auch im Vergleich die Entwicklung der Videokonsolen https://de.wikipedia.org/wiki/Spielkonsole#8-Bit-Ära_bis_zum_Video-Game-Crash_(November_1976_bis_1982) oder die Prozessoren der Arcades.

Die neue Generation 16/32-Bit: 68000

Neben Intels Schiene kam vorallem ein Prozessor mehr und mehr in den Fokus der Firmen und der Entwicklung: Das Nachfolgemodell des Motorola 680x. Der Motorola 68000 wurde 1979 auf den Markt gebracht. Er besitzt 32Bit-Register, einen 32Bit Adressraum, 8 Datenregister (D0-D8) und 8 Addressregister (A0-A8) und einen 16 Bit Adressbus.

// ToDo: Ähnlichkeiten/Weiterentwicklung 680x vs 68000

Wikipedia fasst den Werdegang folgendermassen zusammen:

68000: Designed for Workstations

Bereits zu Beginn der 1980er Jahre fand die CPU, dank optionaler MMU, ihren Weg in die Unix-Welt. Sie wurde in hohen Stückzahlen in die Workstations von Apollo Computer (Apollo), HP (HP 9000-300) und Sun (Sun-1) oder auch von Digital Equipment Corporation (Vax 100) und SGI verbaut.

Mitte der 1980er Jahre folgten dann Personal- und Home-Computer, der erste war Lisa von Apple, die schon bald vom Macintosh (Mac) abgelöst wurde. Er wurde auch im CommodoreAmiga, im Atari ST und Sinclair QL (68008) verbaut.

Ende der 1980er und Anfang der 1990er fand er sich dann in Spielkonsolen wie dem Sega Mega Drive oder dem Neo Geo. Auch in Schachcomputern (wie z. B. im Fidelity Mach IV als 68020 mit 20 MHz und Mephisto Amsterdam als 68000 mit 12 MHz) wurde der Prozessor verwendet.

https://de.wikipedia.org/wiki/Motorola_68000

Ein gewichtiger Punkt ist sicherlich auch, dass der 68000 auch in vielen Arcades zum Einsatz kam. Hier spielt der Preis der Platine bei einem Kasten der 5-10k kosten kann nicht so eine Rolle.

Video game manufacturers used the 68000 as the backbone of many arcade games and home game consoles: Atari’s Food Fight, from 1982, was one of the first 68000-based arcade games. Others included Sega’s System 16Capcom’s CP System and CPS-2, and SNK’s Neo Geo. By the late 1980s, the 68000 was inexpensive enough to power home game consoles, such as Sega’s Sega Genesis console and also the Sega CD attachment for it (A Sega CD system has three CPUs, two of them 68000s). The multi-processor Atari Jaguar console from 1993 used a 68000 as a support chip, although some developers used it as the primary processor due to familiarity. The Sega Saturn console used the 68000 as a sound co-processor. In October 1995, the 68000 made it into a handheld game console, Sega’s Genesis Nomad, as its CPU.[44]

https://en.wikipedia.org/wiki/Motorola_68000

Neu, einfacher, schneller und komfortabler: Motorola 68000

Das Wichtigste ist dabei der „Quantensprung“ in Sachen Speed und Handhabung.

Anzahl Befehle

Rechnen & Co

Das Wichtigste in Apps aber vorallem in Games ist Datenprozessing/Datenmanagement, also das Rechnen mit Daten, Verschieben von Daten und das Abprüfen von Daten.

Datenraum

Rechnen mit nur 8bit ist unendlich mühsam. Denn in 0-256 oder -128 – 128 passen einfach nicht viele Daten hinein. Dies geht einigermassen bei einfachen Systemen mit einem Videoscreen von 128 x 128 aber endet dann bei Computern wie dem C64. Hier sind die Screencordinaten über dem 8bit-Datenrange und es muss permanent mit Low- und High-bytes gerechnet werden. Dasselbe gilt natürlich auch für das konkrete implementieren von Spielmechanik. Hier überlegt es sich der Entwickler* zweimal, ob nun alles zwischen 0-256 spielt oder zwischen 0-512 etc.

Der 68000er bietet mit seinen möglichen 32bit natürlich viel mehr Datenformate an: Es gibt also nicht nur 0-256 (byte), sondern 0-512 (word), 0-1024 und 0-2048.

In Assembler ist das auch minimal einfach nutzbar:

move.b #4,d0
move.w #510,d0
move.l #2111,d0

Rechnen

Der 6510 (es gibt auch komfortablere 8bitter mit mehreren Datenregistern) hatte nur ein Datenregister (a) und zwei Indexer (x,y). Man muss also alles in dieses Register reinladen, dort rechnen, vergleichen und es dann wieder verteilen. Die Indexer helfen dabei, dass man in Listen Dinge laden und speichern kann (relativ: Speicherstelle,X entfern davon). Bei nicht so komplexen Dingen kann natürlich (langsamer) im Speicher gerechnet werden. Dadurch entsteht sehr viel Verwaltungs- und Managementaufwand. Die Metaphorik hinter dem Assembler ist das Reinladen der Zahlen und dann Addieren.

lda #10 ; lade 10 in den accumulator
clc     ; je nach mode: clearing der statusbits
sec     ; spezieller mode
adc #5 ; addiere 5

Im 68000er-Assembler sieht das folgendermassen aus:

move.l #10,d1 ; schiebe 10 ins datenregister 1 (lösche es acuh gerade)
add.l #5,d1 ; addiere 100 als long-word

Der 68000er hat auch in der Assembler Metaphorik einen Sprung gemacht. Es erinnert jetzt mehr an höhere Programmiersprachen:

oder anders gesagt:
10 -> d1 oder moderner d1=10
d1 + 5 -> d1 oder moderner d1 += 5

Noch kein Standard-Floating-Point-Unit

Immer wichtiger werden auch Floating-Point (gerade auch für 3D). Dies muss standardmässig weiterhin simuliert werden.

Memory

Paging (Aufteilung des Speichers in Segmente). Der Unterschied zwischen Zahl und Adresse verschwindet weitgehend.

Grafik

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert