Aus Das deutschsprachige Scratch-Wiki

Comodore logo.png
Commodore-64-Computer-FL.png
Eingabe eines Programms nach dem Start des Computers

Der Commodore 64Wikipedia.jpg (kurz C64, umgangssprachlich 64er oder in Bezug auf das Aussehen der ersten und einiger Folgeversionen „Brotkasten“ genannt) ist ein 8-Bit-Heimcomputer mit 64 KB Arbeitsspeicher. Mit für die damalige Zeit überragenden Sound- und Grafikfähigkeiten ausgestattet, erreichte der C64 hohe Popularität als Spielcomputer, wobei er gleichzeitig auch ein programmmierbares System mit eingebauter Tastatur war, welches nach dem Einschalten sofort im BASICWikipedia.jpg-Programmiermodus startete. Das motivierte damals Millionen Benutzer dazu, sich im Programmieren zu versuchen.

Auch Jahrzehnte nach seiner Einführung ist der C64 weiterhin populär, aktuell ist mit dem C64 Mini C64-kompatible Hardware im Handel und es werden auch noch heutzutage kommerzielle Spiele für den C64 entwickelt. Aufgrund ähnlicher Systemleistungen stellt der C64 somit auch für Scratcher eine Möglichkeit dar, sich als Programmierer oder Designer zu betätigen.

Gemeinsamkeiten zwischen C64 und Scratch

C64 und Scratch waren in ihrer Zeit bei einer ähnlichen Zielgruppe äußerst populär: Kinder und Jugendliche, die an Computerprogrammierung interessiert sind und ihre Spiele selber erfinden wollen. Daher gibt es auch heute viele C64-Retro-Fans, die Scratch als natürlichen Nachfolger sehen, mit der die heutige Teenagergeneration ähnliche Erfahrungen sammeln kann wie die Teenager in den 1980er-Jahren an ihrem 64er.

Die Programmiermöglichkeiten der beiden Systeme sind bei der Grafik trotz der drei Jahrzehnte Differenz nicht unähnlich: wie bei Scratch gibt es beim C64 bewegte Figuren ("Sprites"), die frei vor (und beim C64 nach Wahl auch hinter) dem Hintergrund platziert werden konnten und deren Kostüme einfach gewechselt werden können. Dazu kann der Hintergrund mit einer Auflösung von 320x200 Pixel bemalt werden.

Im Audiobereich unterscheiden sich die beiden Systeme stark. Während Scratch typischerweise vorgegebene Audiodateien abspielt und dazu nur eine rudimentäre Funktion zum Abspielen von Noten besitzt, bietet der C64 einen mehrstimmigen Synthesizerchip, der die Erstellung von professionell klingenden Sounds und Musikstücken ermöglicht. Das Abspielen von fertigen Audiodateien ist allerdings aufgrund von Einschränkungen bei Speicher und Prozessorgeschwindigkeit nur eingeschränkt möglich.

Der größte Unterschied liegt allerdings im Programmieren. Während Scratch mit fertigen Befehlen zum Platzieren oder Bewegen von Figuren oder zum Abspielen von Sounds aufwartet, kommt der C64 nur mit einem rudimentären BASIC daher, welches zum Ansprechen von Grafik und Sound POKE-Befehle benötigt, die eine angegebene Speicherstelle direkt manipulieren. Nachfolgersysteme des C64 hatten ein erweitertes BASIC, welches die entsprechenden Befehle für Sprites, Sound und zum Malen bot. Alternativ konnte man am C64 das BASIC mit der Simons' Basic-Erweiterung aufrüsten oder vorgefertigte Befehlsblöcke im GameMaker nutzen.

Scratch-Projekte mit C64-Bezug

Auf Scratch findet man unter dem Stichwort C64 einige Projekte, welche den Bezug zum C64 ganz unterschiedlich herstellen:

  • Allgemeine Projekte zum Thema C64 (Info-Projekte, Fan-Made Commercials, ...):

141121813_144x108.png

Scratch64

138124873_144x108.png

C64 Fanmade Commercial

55988366_144x108.png

Commodore BASIC Versions

148271021_144x108.png

Commodore 64 Drawing

  • Bekannte C64-Spiele welche in derselben Ästethik nachprogrammiert wurden:

238593748_144x108.png

C64 Boulder Dash

3098023_144x108.png

Aztec Challenge

24678679_144x108.png

Buffalo Roundup

203377002_144x108.png

Way of the Exploding Fist

  • Projekte welche Teilaspekte des C64 emulieren, darunter den legendären SAM Sprachsynthesizer:

95318269_144x108.png

Text to Speech - C64 SAM

120535270_144x108.png

C64 scroller

18214085_144x108.png

Commodore BASIC Interpreter

195375564_144x108.png

10 PRINTCHR$(205.5+RND(1));:GOTO10

C64 Web Player

Emulation des C16 in VICE

Ein großer Unterschied zwischen C64 und Scratch ist dass der C64 als eigene Hardware existiert wohingegen Scratch als Software im Webbrowser eines PCs ausgeführt wird. Durch sogenannte Emulatoren ist es jedoch seit längerem auch möglich C64-Programme auf einem PC auszuführen. Ein Emulator gleicht in der Anwendung dabei dem Scratch Offline Editor: der Emulator muss zuerst heruntergeladen und installiert werden und kann dann zum Ausführen oder Programmieren von C64-Programmen verwendet werden. Ein bekannter quelloffener Emulator ist hier zum Beispiel VICE - the Versatile Commodore Emulator, welcher nicht nur den C64 sondern auch andere Commodore-Systeme wie den PET, VC20, C16, C116, Plus/4 oder C128 emulieren kann.

Mittlerweile gibt es aber auch einen komfortablen Webplayer für den C64, Rjanicek's Versatile Commodore Emulator for JavaScript. Dieser html5-Player spielt C64-Programme direkt im Browser ab und ist damit mit dem neuen Scratch Online Player vergleichbar. Dies ermöglicht insbesondere die Verbreitung von neuprogrammierten C64-Spielen, da viele Benutzer bei einer Installation von Software auf ihrem Rechner zurückhaltend sind.

C64 Kultur

Seit seiner Vorstellung im Januar 1982 war der von CommodoreWikipedia.jpg gebaute C64 Mitte bis Ende der 1980er Jahre sowohl als Spielcomputer als auch zur Softwareentwicklung äußerst populär. Er gilt als der meistverkaufte HeimcomputerWikipedia.jpg weltweit. Schätzungen der Verkaufszahlen bewegen sich zwischen 12,5 Mio. und 30 Mio. Exemplaren. Dazu gibt es rund 10000 kommerzielle Softwaretitel, die so gut wie alle Genres von Spielen bis hin zu Geschäftsanwendungen abdecken.

Zur Zeit des C64 gab es nur wenige Leute, die sich über ein Netzwerk austauschten; das World Wide Web wurde ja erst 1989 erfunden. Abgesehen von wenigen Benutzern, die Software und Informationen über Videotextsysteme wie BTX austauschten, fand die Vernetzung zwischen den meisten C64-Usern durch persönlichen Kontakt und Weiterkopieren von Software statt. Freie Software gab es allerdings nur wenige, die meisten Titel waren kommerziell und vergleichsweise teuer. Der C64 war allerdings auch für seine Software-Crackerszene bekannt, welche Kopierschutz von kommerzieller Software entfernte und die Software dann weiterverteilte.

Dazu gab es eine Menge Zeitschriften und Bücher, welche Programme zum Abtippen abdruckten. Ein entsprechendes Programm wurde dann oft in mehrtägiger Arbeit eingegeben und dann auf einem Datenträger (beim C64 zumeist eine Diskette oder eine Kassette) gespeichert. Die Programme in den Zeitschriften stammten oft von Benutzern, die ihre selbst programmierten Programme und Spiele an den Verlag einschickten. Wurde ein Programm in einer Zeitschrift abgedruckt, so war das für den Einsender so etwas wie ein Vorstellen eines Scratch-Projektes auf der Frontpage durch das Scratch Team. Anders als bei Scratch bekam man für seine Programme sogar etwas bezahlt, umgerechnet ca. 50 bis 200 €. Einzelne Wettbewerbe wie zum Beispiel der GameMaker Design Contest schütteten sogar bis zu 5000 $ aus.

Für Folgemodelle des C64 wie den C128, C16, Plus/4 war das Softwareangebot geringer, was deren Erfolg trotz technischer Verbesserungen stark beeinträchtigte. Der Commodore 128 war allerdings voll kompatibel zum C64 und konnte somit von der C64-Softwarewelt profitieren.

Während der C64 im Brotkastenformat seit 1994 nicht mehr produziert wird, gibt es immer noch Nachfolgemodelle wie zum Beispiel den C64dtv der 2004 auf den Markt kam. 2018 brachte die britische Retro Games Ltd. und die österreichische Koch Media den C64 Mini heraus welcher als eigenständige Hardware einen C64 im Masstab 1:2 nachempfunden ist. Die Tastatur ist allerdings leider nur eine Attrappe, sodass zum Programmieren eine Tastatur über USB angeschlossen werden muss.

Software für den C64 wird weiterhin kommerziell und hobbymäßig produziert, hauptsächlich in Form von Spielen oder Demos.

Programmierung

Der C64 kommt zwar mit einer vorinstallierten Programmiersprache, ist aber nicht an diese gebunden. Häufig verwendete Programmiersprachen auf dem C64 sind:

BASIC

Der C64 wird mit einem im ROM vorinstallierten Commodore BASIC V2.0 ausgeliefert. Commodore BASIC basiert auf dem Produkt Microsoft BASIC welches Commodore von Microsoft mit einer Einmalzahlung von 25000 $ lizenzierte. Das Angebot von Bill Gates war urpsrünglich eine Lizenzgebühr von 3$ pro Computer, was bei den vielen Millionen Stückzahlen wesentlich teurer gekommen wäre.

BASIC war gleichzeitig auch das Interface zum Betriebssystem, d.h. Aktionen wie Speichern eines Programmes, Laden, Anzeigen eines Diskettenverzeichnisses oder Löschen einer Datei wurde alle über BASIC-Befehle angestoßen. Bei BASIC V2.0 war das mitunter noch umständlich über den OPEN-Befehl realisiert:

entsprechender Scratch Code
Scratch hat keine Blöcke für den Dateisystemzugriff, aber einige Scratch-Modifikation -Elemente haben Blöcke für Dateioperationen. In Explore würde der Block delete file [] diesen beiden BASIC-Befehlen entsprechen.


 OPEN 1,8,15,"Kommando":CLOSE 1
 

Das Kommando S:dateiname löschte zum Beispiel eine Datei. "S" steht dabei für "scratch", im Sinne von "das Programm von der Platte runterkratzen". In späteren BASICversionen gibt es dazu sogar einen Befehl namens SCRATCH.

Das mitgelieferte BASIC hatte leider auch keine Befehle um auf die Grafik- und Soundhardware des C64 zugreifen zu können, darum mussten diese direkt über Speicherstellen angesprochen werden.

Modul Zweck Speicherbereich Speicherbereich als Hexadezimalzahl
VIC (Video Interface Chip) Grafikchip für Hintergrund und Sprites 53248-53311 $D000-$D03F
SID (Sound Interface Device) 3 stimmiger Synthesizer-Soundchip 54272-54300 $D400-$D41C
CIA (Complex Interface Adapter) Zugriff auf externe Schnittstellen (Joysticks) und Timer 56320-56335 $DC00-$DC0F
CIA II (identischer Chip) Zugriff auf serielle Schnittstelle und Timer 56576-56591 $DD00-$DD0F

Zugriff auf die Speicherstellen erfolgte mit PEEK (zum Lesen) und POKE-Befehlen (zum Schreiben). Um die Farbe des Bildschirmhintergrunds auf Schwarz zu ändern musste man zum Beispiel folgendes eingeben:

entsprechender Scratch Code
Scratch hat zwar keine Blöcke, um die Farbe des Hintergrunds direkt einzustellen, ein weißer Hintergrund kann jedoch mit folgenden Blöcken geändert werden:
setze [Farbeffekt v] auf ()
und
setze [Helligkeit v] auf ()


 POKE 53281,0
 

wobei die Zahl 53281 für die Speicherstelle steht in welcher der VIC-Chip die Bildschirmhintergrundfarbe speichert und 0 die Farbe schwarz auswählt.

In späteren BASIC-Versionen für andere Commodorecomputer gab es Befehle welche diese Aufgabe direkt übernahmen, zum Beispiel den COLOR-Befehl beim C128.

Handbuch zu Simons' Basic

Simons' BASIC

Das BASIC des C64 ist zwar rudimentär, aber ist dafür gut mit neuen Befehlen erweiterbar. Ein Jahr nach Erscheinen des C64 hatte der 16jährige David Simons eine Erweiterung für das C64-BASIC programmiert welche von Commodore als Diskettenversion und als Cartridge vertrieben wurde. Das sogenannte Simons' BASIC erweiterte das Commodore BASIC um 114 zusätzliche Befehle welche das Programmieren von Sprites, hochauflösenden und mehrfarbigen Grafiken sowie von Musik und Sound erheblich erleichterten. Außerdem wurden Befehle implementiert um strukturierte Programmierung zu unterstützen.

Programm in Simons' Basic
Ausgabe des Programms links
entsprechender Scratch Code
Wenn gf angeklickt
wische Malspuren weg
setze [i v] auf [0]
wiederhole bis <(i) > [200]>
    gehe zu x: (0) y: ((200) - (i))
    schalte Stift ein
    gehe zu x: (i) y: (0)
    schalte Stift aus
    ändere [i v] um (10)
end
warte bis <Taste [any v] gedrückt?>


BASIC Compiler

Das BASIC am C64 ist wie Scratch eine Interpretersprache, d.h. die Befehle werden erst zur Laufzeit übersetzt. Dies bringt Vorteile durch einen schnelleren Programmstart und Möglichkeiten zum Debuggen in dem ein Programm einfach gestoppt und später wieder fortgesetzt werden kann. Dies geht allerdings auf Kosten der Geschwindigkeit, was insbesondere bei dem mit nur 1MHz getakteten Prozessor ein großes Manko darstellt.

BASIC Compiler sind Programme welche ein BASIC-Programm einlesen, direkt in Maschinensprache übersetzen und danach wieder speichern. Ein derart übersetztes Programm läuft dann wesentlich schneller, der Übersetzungsvorgang dauert aber üblicherweise mehrere Minuten. Darum wurde für kurze Tests oft der Interpretermodus verwendet und das finale Programm dann mit dem Compiler übersetzt.

Bei Scratch wenden der Phosphorus und der Sulfurous-Player eine ähnlich Technik an um das Programm schneller zu machen, allerdings ist der Übersetzungsvorgang dank schnellerer Hardware hier wesentlich schneller.

Assembler

Assembler ist eine Sprache welche die Maschinencodebefehle eins zu eins als sogenannte Mnemonics (Merkwörter) angibt. Der sogenannte Assembler übersetzt die Mnemonics dann in den Maschinencode welche mit hoher Geschwindigkeit abläuft.

Zum Ändern der Hintergrundfarbe würde das Assemblerprogramm wie folgt aussehen:

 lda #00
 sta 53281

Der erste Befehl lädt den Wert 0 in den Akkumulator, der zweite speichert diesen im VIC-Register für die Hintergrundfarbe ab. Im Vergleich zu dem oben im BASIC-Teil angegebenen Befehl POKE53281,0 ist die Assemblervariante 1000mal schneller!

Programmieren in Assembler ist aufgrund der kleinteiligen Befehle sehr mühsam, erlaubt aber das genaue Austarieren des Timings, was viele Grafik und Soundeffekte möglich macht. BASIC und Assemblerprogramme können gemischt werden, dabei wird von BASIC aus mit dem Befehl SYS Adresse in ein Assemblerprogramm gesprungen und mit dem Assemblerbefehl RTS (Return from Subroutine) kehrt man wieder zu BASIC zurück.

Cross-Development

Um die Zeit beim Compilieren eines Programms zu reduzieren ist es heutzutage üblich das Programm auf einem PC zu schreiben und dort mit einem Cross-CompilerWikipedia.jpg für den C64 zu kompilieren. Das Ergebnis wird dann als Programm in Maschinensprache auf den C64 oder einen Emulator geladen.

Hier ist vor allem der Compiler CC65 nennenswert, welcher Quellcode in C oder Assembler unterstützt, es kann auch beides in einem Projekt kombiniert werden.

Garry Kitchen's GameMaker

1985 erschien eine Software für den C64, die das Entwickeln von Spielen stark vereinfachte, Gary Kitchen's GameMaker von Activision. GameMaker war eines der ersten Spieleentwicklungssysteme, die alle notwendigen Werkezeuge zum Erstellen eines Spiels enthielten mit der Zielsetzung, auch weniger erfahrene Computernutzer zu unterstützen. Scratch enstand im Vergleich dazu ca. 20 Jahre später; auch die Vorläufer von Scratch wie Etoys und Squeak entstanden erst in den 1990ern.

Ähnlich wie bei Scratch, welches einen Editor für Figuren, Hintergrund, einen einfachen Soundeditor und eine Programmieroberfläche mit sich bringt, ist GameMaker in fünf Werkzeuge unterteilt, von denen jedes aus einer grafischen Oberfläche besteht, die mit dem Joystick gesteuert wird:

  • Der Editor - für die Programmierung des eigentlichen Spiels
  • SpriteMaker - zum Erstellen beweglicher Objekte (sprich Sprites)
  • SoundMaker - zum Erstellen von Soundeffekten
  • SceneMaker - zum Erstellen von Hintergrundgrafiken
  • MusicMaker - zum Komponieren von Musikstücken

C64gamemakercoding.gif C64gamemakersprite.gif C64gamemakersound.gif C64gamemakerscene.gif C64gamemakermusic.gif

Pitfall!, made with GameMaker

Bei der Programmierung wurden Textzeilen in einer an BASIC angelehnten Sprache mit dem Joystick ausgewählt und konfiguriert, ähnlich wie dies bei den Scratch-Blöcken der Fall ist. Da alle anderen Tools auch mit dem Joystick bedienbar waren, konnte man den GameMaker somit zurückgelehnt mit dem Joystick in der Hand benutzen. Das Wechseln vom Code-Editor in einen anderen Editor erforderte allerdings immer ein Nachladen von Diskette, welches ca. 30 Sekunden dauerte, sodass mitunter viel Geduld bei der Bedienung des Programms erforderlich war.

Ein fertiges Spiel kann mit dem GameMaker als eigenständiges Programm exportiert werden. Beim Starten zeigt das Programm dann einen Begrüßungsbildschirm mit einer Info zu GameMaker an. Die Softwareseite Gamebase64 listet bis dato 126 Spiele auf, die mit dem GameMaker erstellt wurden.

Anders als Scratch kostete die GameMaker-Software bei dessen Einführung jedoch rund 40$, inflationsbereinigt entspricht dies 2018 einem Wert von 94$ oder rund 83 Euro, ein Betrag, den sich Kids nicht ohne weiteres leisten konnten.

Weitere Programmiersprachen

  • Ada
  • APL
  • COBOL
  • COMAL
  • FORTH
  • FORTRAN
  • LISP
  • LOGO
  • M (MUMPS)
  • Pascal
  • PILOT

Dazu gibt es noch eine große Anzahl von nicht standardisierten Programmiersprachen welche als Eigenentwicklungen oft nur für den C64 oder ansonsten wenige Plattformen verfügbar sind, darunter die Sprache PROMAL (PROgrammers Microapplication Language) oder die Sprache FCL (First Compiled Language) welches es zum Abtippen mit dem englischen Commodore Magazin 44/1988 gab.

Bis dato gibt es noch keine blockbasierten Programmiersprachen wie Scratch oder Snap! für den C64.

Links



Code zum Einbinden ins Forum:
[wiki=de:Scratch und der Commodore 64]Scratch und der Commodore 64[/wiki]