C64-Wiki:Ablage/Programmiersprachen
Dieser Artikel befindet sich im Aufbau und ist vorläufig als Entwurf einzustufen. |
Einführung[Quelltext bearbeiten]
Computer sind doof. Sie sind die dümmsten Wesen die wir kennen. Sie können nur das tun, was wir ihnen sagen, dass sie tun sollen. Und zwar haarklein und ganz genau. Das können sie dann allerdings in einer atemberaubenden Geschwindigkeit. Und sie werden auch nicht müde, auch die langweiligsten Operationen immer und immer wieder durchzuführen, solange, bis man ihnen was anderes sagt.
Weil aber Computer eben so dumm sind, kann man ihnen auch nicht einfach sagen, was sie tun sollen, sondern man muss es in eine Sprache übersetzen, die sie verstehen. Die Computer, mit denen wir meist zu tun haben (und einer davon ist der C=64) können nur zwei Dinge unterscheiden: Strom an und Strom aus, oder 1 und 0.
Deshalb wurden auch die ersten digitalen Computer von Spezialisten bedient, die eine Reihe von Schaltern entweder ein- oder ausgeschaltet und damit dem Computer gesagt haben, was er machen soll. Dies ist für uns Menschen sehr kompliziert. Deshalb wurden sehr bald Konzepte entwickelt, wie man dem Computer mitteilen kann, was er tun soll, ohne dies dann erst in Form von endlosen Reihen von Einsen und Nullen aufschreiben zu müssen.
Maschinensprache
Der C=64 ist ein 8 Bit Computer. Das bedeutet, dass der Prozessor des C=64 jeweils 8 Nullen und Einsen als Einheit auffasst und gemeinsam verarbeitet. Diese Einheit wird auch als Byte bezeichnet. Die gesamte Hardware des C=64 ist auf diese 8 Bit ausgelegt. Der Speicher wird byteweise gelesen oder beschrieben, die Ein- und Ausgabe an den Ports erfolgt byteweise, und die Befehle für den Prozessor sind ebenfalls 8 Bit lang (Ein solcher Befehl kann allerdings einen Hinweis enthalten, dass ein oder mehrere nachfolgende Bytes ebenfalls zu diesem Befehl gehören und zusammen mit ihm verarbeitet werden müssen).
Wenn man nun mehrere achterfolgen von einzelnen Nullen oder einsen notiert, wird dies für Menschen leicht unübersichtlich, selbst wenn man nach jeweils 8 bits einen Zwischenraum lässt:
01010001 10100101 01010001 10111011
Aus diesem Grund stellt man diese Zahlen nicht im Binärsystem dar, sonder benutzt stattdessen das Hexadezimalsystem.
Im Hexadezimalsystem werden jeweils 4 Bit durch eine Ziffer des Hexadezimalsystems dargestellt. Mit 4 Bit kann man aber nicht nur 10 sondern 16 Werte darstellen, so dass die Ziffern 0-9 für die Darstellung nicht ausreichen. Daher werden zusätzlich die Buchstaben A bis F benutzt.
4 Bit-Gruppe | 0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
Dezimalwert | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Hexadezimalwert | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
Da man die Zahlen in den verschiedenen Zahlensystemen eine ganz andere Bedeutung haben:
Die Ziffernfolge 10 | entspricht dem Dezimalwert |
im Binärsystem | 2 |
im Dezimalsystem | 10 |
im Hexadezimalsystem | A |
Wenn man nun einen Computer einschaltet, dann liest der Prozessor eine zuvor festgelegte Speicherstelle aus und interpretiert den dort gelesenen Wert. Beim c=64 werden 2 Bytes aus den Adressen 65.532 und 65.533 ausgelesen, in den Befehlszähler geschrieben und dann die dort beginnende Befehlssequenz ausgeführt.
Die Befehlssequenz dort sieht folgendermaßen aus:
Programmierkurse[Quelltext bearbeiten]
Grundlagen
- Bits und Bytes: Grundlagen der Zahlensysteme
- Der 6510 Mikroprozessor
- Unterschiede zwischen Assembler, Interpreter und Compiler
- Übersicht und Funktionen aller 6510-Befehle
- CIA-IRQ
- Raster-IRQ
- Kernal MODs
- Kernal Hallo Welt (eigens Kernel)