BASIC-Kurs: "Von Adam und Eva..." (Teil 5)
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
Herzlich Willkommen beim fünften Teil unseres Basic-
kurses. Wie letzten Monat schon versprochen geht es
diesmal um das sogenannte Binärsystem und den Spei-
cheraufbau unseres 64ers. Dieses Thema hat eigentlich
mit BASIC im allgemeinen ganz und garnichts zu tun,
doch ist es unerläßlich wenigstens einige Kenntnisse
davon zu haben, wenn man sich mit der Grafik- und
Soundprogrammierung auf dem C64 beschäftigen möchte.
Zunächst einmal eine kleine Erläuterung zu Zahlen im
allgemeinen:
Wie Sie ja wissen benutzen wir Menschen ein Zahlensy-
stem mit dessen Hilfe wir Maße, Gewichte, Geldsummen
oder ähnliches bequem ausdrücken können. Ich spreche
vom sogenannten "Dezimalsystem". Indem wir uns der
Ziffern 0123456789 bedienen, können wir durch belie-
biges kombinieren dieser Ziffern Zahlen von unendli-
cher Länge bilden. Ein Beispiel wäre da die Zahl
1989. Sie gliedert sich in 4 Teile auf, die ich Ihnen
im Folgenden einmal grafisch darstellen möchte:
Die Buchstaben
T,H,Z und E
stehen für
"Tausender",
"Hunderter",
"Zehner" und
"Einer". Das
heißt also, daß
die Zahl 1989
in eine Zahl
mit vier Kompo-
nenten aufge-
spaltet wird.
Mathematisch läßt sich das folgendermaßen ausdrücken:
1000*T + 100*H + 10*Z + 1*E = THZE (oder auch)
10↑3*T + 10↑2*H + 10↑1*Z + 10↑0*E = THZE
Oder in unserem Beispiel:
1000*1 + 100*9 + 10*8 + 1*9 =
10↑3*1 + 10↑2*9 + 10↑1*8 + 10↑0*9 =
1000 + 900 + 80 + 9 = 1989
Jeder Stelle der Zahl ist also eine Potenz von 10
zugeordnet (1=10↑0, 10=10↑1, 100=10↑2, 1000=10↑3,
usw...). Daher auch der Name DEZIMALsystem - "decum"
kommt aus dem lateinischen und heißt "zehn".
Dieses Verfahren läßt sich natürlich auch bei größer-
stelligen Zahlen anwenden. Bei der Zahl 2313660 ist
die höchste Zehnerpotenz 10↑6. Hierbei ist übrigens
noch anzumerken, daß die letzte Ziffer eine Null ist,
bei der der ihr zugehörige Potenzfaktor (hier 10↑0)
sozusagen "wegmultipliziert" wird, denn 1*0=0, wes-
halb auch hier als Endsumme aller Produkte der Poten-
zen 2313660 herauskommt. Das scheint alles kompli-
zierter als es ist - wichtig ist, daß Sie begriffen
haben, daß eine Dezimalziffer nur aus der Addition
von 10er-Potenzen besteht.
Sie sehen auch, daß jedesmal nachdem wir die höchste
Ziffer einer Potenz erreicht haben, nämlich die 9,
die nächste Zahl als ein Vielfaches der nächsthöheren
Potenz darstellen können. Haben Sie also die Zahl
neun erreicht, so findet ein sogenannter "Überlauf"
statt, das heißt, daß die nun folgende Zahl eine
Stelle mehr bekommt, und ihre höchste 10er Potenz mit
der Ziffer 1 als Multiplikator versehen wird. Der
Nachfolger von 9 ist 10 wobei letztgenannte Zahl eine
zweistellige ist, erstere allerdings nur eine ein-
stellige.
Ebenso kommen Überläufe vor, wenn wir von 19 auf 20
zählen. Hier wird der Zähler der nächsten Potenz um
eins erhöht. Auch von 29 auf 30 verhält es sich so,
und so fort. Bei jedem Überlauf erhält also die nied-
rigere Potenz die Ziffer 0 in den Zähler, während
die höhere die nächst höhere Ziffer verpasst bekommt.
Beim Zählen von 99 auf 100 zum Beispiel geschieht
dies sogar gleich zweimal. Zum Einen erhalten die
"Einer" (10↑0) die Nullziffer und es findet ein Über-
lauf zu den "Zehnern" (10↑1) statt, zum Anderen be-
wirkt dieser wiedrum, daß die "Zehner" überlaufen und
somit den Zähler 0 erhalten, wobei die "Hunderter"
(10↑2) um 1 erhöht werden und nun die Ziffer 1 dort
im Zähler steht.
Sehen Sie hier das Ganze ein wenig grafisch aufge-
macht (denn ein Bild sagt mehr als tausend Worte):
Wir haben also gelernt, daß die 10 mit ihren Potenzen
die Basis unseres Zahlensystems liefert, da alle De-
zimalzahlen als Summe von 10er-Potenzen dargestellt
werden können. Sie werden jetzt fragen:
"Was hat das Ganze denn mit dem Binärsystem zu tun,
darum geht es hier doch?"
Nun, das Binärsystem folgt nämlich (fast) genau die-
sem Muster, mit dem einzigen Unterschied (daher auch
die Einschränkung eben), daß wir hier nicht mit einer
Basis von 10 sondern mit der von 2 arbeiten. Auch
hier können Sie den Namen des Systems von ihr ablei-
ten "Bi" steht für Zwei. Da wir ja nun alle 2er-
Potenzen verwenden, brauchen wir logischerweise auch
nur zwei Ziffern, mit denen wir unsere Binärzahlen
darstellen (im Dezimalsystem hatten wir ja 10 davon -
Sie sehen, es werden immer soviele Ziffern benötigt,
wie die Basis angibt). Dies sind ganz einfach die
Ziffern 0 und 1. Demnach kann man also sagen, daß
eine Binärzahl so aussehen könnte: 11001010. Diese
hier zum Beispiel ist achtstellig. Das hat einen be-
sonderen Grund, wie wir später erkennen werden.
Wie sich eine solche Zahl jetzt zusammensetzt ist
klar - wir müssen ganz einfach die Potenzen von 2
nebeneinander schreiben (allerdings mit der niedrig-
sten ganz links und der höchsten ganz rechts) und die
Produkte der Binärziffern mit den ihnen zugehörigen
Potenzen miteinander addieren. Als Ergebnis erhalten
wir dann unsere Binärzahl in Dezimalschreibweise.
Führen wir dies doch einmal durch:

Sie sehen also: wir benutzen hier genau dasselbe
Prinzip wie beim Dezimalsystem, mit dem Unterschied,
daß hier die Produkte der 2er-Potenzen addiert wer-
den.
Doch warum das alles? Wozu können wir das Binärsy-
stem gebrauchen, und warum sind achtstellige Binär-
zahlen etwas Besonderes? Leider muß ich zur Beant-
wortung dieser Frage wiederum etwas weiter ausholen:
Im Prinzip kann man sagen - und das wird mir jeder,
der sich mit Computern gut auskennt bestätigen:
"Computer sind dumm".
Sie können nämlich ausschließlich nur zwischen
"STROM AN" und "STROM AUS" unterscheiden. Das heißt,
daß sie nur erkennen können, ob auf einer ihrer vie-
len Leitungen ein elektrischer Strom fließt, oder
nicht. Was Computer jetzt allerdings so schlau macht,
daß wir Ihnen Befehle eingeben können, die sie dann
ausführen können liegt einfach nur daran, daß sie
immens viele socher EIN/AUS-Leitungen besitzen und
daß diese in richtiger Kombination bestimmte Wirkun-
gen erzielen können. Ein recht einfaches Beispiel
wäre etwa folgendes:
Angenommen, ein Computer hätte vier Leitungen vor
sich, die er auf EIN oder AUS überprüfen könnte. Er
erkennt, daß Leitung 1 EINgeschaltet (sprich: "auf
ihr fließt Strom), Leitung 2 AUSgeschaltet (hier
fließt also KEIN Strom), Leitung 3 wieder EINgeschal-
tet und Leitung 4 ebenfalls wieder EINgeschaltet
sind. Daraus ergibt sich die Kombination:
EIN
AUS
EIN
EIN
Nun weiß unser Computerchen zusätzlich noch, daß er,
wenn diese Kombination eintreten sollte, beispiels-
weise die Hintergrundfarbe auf Dunkelgrau umschalten
soll. Diese Information ist irgendwo in seinem Aufbau
gespeichert.
Sie sehen also, so einfach (oder kompliziert) ist es,
einen Computer ganz elementar zu programmieren, das
heißt also ganz grundsätzlich, ohne irgendwelche
Hilfsmittel ihm einen Befehl zu erteilen, indem man
bestimmte Stromleitungen in ihm ein- oder ausschal-
tet. Kompliziert ist dies vielleicht deshalb, weil
man hierzu alle möglichen Kombinationen mit ihrer
Wirkung kennen muß. Das sind bei vier Leitungen zwar
"nur" 16 verschiedene, aber es könnten ja beispiels-
weise auch viel mehr Leitungen zum Unterscheiden zur
Verfügung stehen.
Hm - Moment einmal, die Zahl 16 hatten wir doch heute
schon einmal!!! Genau - 16 ist die vierte Potenz von
2 (also 2↑4), der Wert der fünften Ziffer des
Binärsystems! Und genau das ist es, worauf ich hin-
aus möchte: die oben genannte EIN/AUS-Kombination
könnte nämlich auch genausogut folgendermaßen ausse-
hen (wenn man anstelle von EIN die Ziffer 1 und an-
stelle von AUS die Ziffer 0 schreibt):
EIN AUS EIN EIN
1 0 1 1
Und siehe da: da haben wir doch eine echte (vorläu-
fig vierstellige) Binärzahl! Ins Dezimalsystem umge-
rechnet lautet sie übrigens 11 (elf). Und tatsächlich
ist es auch so, daß wenn wir unserem C64 an einer
bestimmten Stelle in seinem Speicher die Zahl 11 an-
geben, er den Bildschirm in die Farbe Dunkelgrau um-
färben wird. "An einer bestimmten Stelle" hört sich
vielleicht etwas merkwürdig an, doch werden wir dies
jetzt noch klären.
Wollen wir uns nun mit dem Speicheraufbau unseres C64
befassen. Anschließend werden Sie feststellen, daß
das Wort "Stelle" absolut passend ist.
Wie Sie vielleicht einmal gehört haben, oder in Ihrem
C64 Bedienungshandbuch gelesen haben, verfügt Ihr
kleiner Freund über 64 (sogenannte) Kilobytes (Abkür-
zung : KB) Speicher (bei denjenigen Lesern, die die
Funktionsweise des Binärsystems begriffen haben soll-
ten, müßte eigentlich gerade eben ein Licht aufgegan-
gen sein - 64 ist die sechste Potenz von 2, also
2↑6). Bestimmt konnten Sie bis jetzt absolut nichts
damit anfangen, weshalb wir jetzt erst einmal klären
wollen was ein Kilobyte, oder besser ein einzelnes
Byte ist. Zuerst einmal zum Byte:
Ein Byte ist die Zusammenfassung von acht(!) soge-
nannten Bits. Man kann also sagen: 1 Byte = 8 Bits.
Doch was, um alles in der Welt, ist jetzt wieder ein
Bit? Nun, ein Bit ist ganz einfach eine von jenen
vielen Leitungen, wie ich sie oben schon beschrieben
hatte, die ein- und ausschaltbar sind. Eine von die-
sen Leitungen, die ein Computer miteinander kombi-
niert, um den Befehl, den er ausführen soll zu ermit-
teln. Womit unsere Frage nach dem "Warum eine acht-
stellige Binärzahl" beantwortet wäre: da unser Bit
für eine stromführende Leitung steht, die entweder
EIN- oder AUSgeschaltet sein kann (1 oder 0) , und
weil acht Bit einem Byte entsprechen, kann dieses
Byte mit Hilfe einer achtstelligen Binärzahl aus-
gedrückt werden. Man spricht hier von dem "Wert" ei-
nes Bytes. Von der Binärzahl also, die in diesem Byte
enthalten ist, oder anders gesagt: von den Bits, die
in diesem Byte "gesetzt" (Bit=1) oder "nicht gesetzt"
(Bit=0) sind.
Würde man also sagen: dieses Byte hat den Wert 202,
so würde man damit die Bitgruppe 11001010 meinen
(hier einmal die Werte unseres Beispiels von oben).
Ein Kilobyte ist jetzt ganz einfach die Gesamtheit
von 1024 Bytes. Dies verhält sich etwa ähnlich wie
bei Gramm und Kilogramm. Ein Kilogramm sind 1000
Gramm, oder das 10↑3-fache von 1. Bei Bytes rechnet
man mit einer Potenz von 2, da die Bytes ja auch auf
ein System aus 2er-Potenzen aufgebaut sind, und somit
die Zahlen besser "harmonieren". Doch dies ist jetzt
unwichtig, da Sie die Bedeutung dieser "Harmonie"
erst verstehen müssen, wenn Sie einmal die Maschi-
nensprache (auch "Assembler genannt) lernen werden.
Des Weiteren sind ein Megabyte demnach also 1024 Ki-
lobytes. Am Rande vielleicht eine kleine Umrechnung-
stabelle:
1 Megabyte = 1024 Kilobytes = 1024*1024 Bytes
(1024*1024 sind übrigens 1048576, also "ein klein
wenig" mehr als eine Million...)
Jetzt wissen Sie also, daß wir insgesamt 64*1024*8
(=524288) Leitungen in unserem C64 haben (64 KB
eben), die alle in verschiedenster Weise ein- oder
ausgeschaltet sein können. Zahlenmäßg gesehen ist das
ja eine ganz schöne Menge, in der Realität werden wir
allerdings nur eine Handvoll davon effektiv nutzen
können. Man kann etwa sagen, daß gute 99 Prozent die-
ser 64 Kilobytes nur zur Speicherung von Befehlen
benutzt wird. Das heißt also, daß sich der Computer
in diesen Bereichen die Befehle, die er irgendwann
einmal ausführen soll, einfach nur zwischenspeichert,
damit er sie bei Bedarf dann gleich griffbereit hat,
um sie abzuarbeiten. Doch dies fällt ebenfalls in den
Themenbereich der Maschinensprache, wo es sogar eine
sehr große Rolle spielt.
Diese 65536 Bytes (=64 KB), können jetzt alle einzeln
mit ihren Nummern angesprochen werden. Bildlich könn-
te man sich das etwa wie eine Straße vorstellen, in
der es 65536 Häuser gibt, mit ebenso vielen Hausnum-
mern. Möchten Sie jetzt beispielsweise einen Brief an
das Haus mit der Nummer 53281 schicken, so müßten Sie
diesen an folgende Adresse schicken:
An
Herrn Byte
Speicherstraße 53281
64KB Commodore 64
Der Name des Adressaten und der adressierten Stadt
dient hier nur zur Untermalung, wichtig ist jedoch,
daß Sie erkennen, daß Sie so einen "Brief" an das
Haus mit der Nummer 53281 schicken können. Der Inhalt
dieses Briefes könnte etwa folgendermaßen aussehen:
Sehr geehrter Herr Byte,
00001011
Herzlichst, Ihr Programmierer.
Auch diesmal nur ein kleines aufmunterndes Beispiel,
um den Zweck des "Verschicken eines Briefes" aufzu-
zeigen. Tatsächlich sagt man sogar, daß man ein Byte
"adressiert", also seine "Adresse" angibt, und ihm
dann einen Wert zuweist. Mit unserem Brief hätten wir
also dem Byte 53281 den Wert 00001011 zugewiesen,
womit wir wieder beim Binärsystem wären. Der aufmerk-
same Leser hat bestimmt schon längst gemerkt, daß wir
hier die Binärzahl von vorhin auf dem Bildschirm ste-
hen haben, nämlich die dezimale 11. Diesmal aller-
dings achtstellig, da wir ja gelernt haben, daß man
das ganze Byte adressiert, und somit auch auf jeden
Fall 8 Bits verändert. Die höherwertigen 4 Bits bein-
halten jetzt ganz einfach die Ziffer 0, womit ihre
Produkte mit ihren jeweiligen Potenzen auch zu 0 wer-
den, weshalb sie auch nicht zu Gewicht schlagen.
Wollen wir nun endlich den BASIC-Befehl kennenlernen,
mit dem wir "Briefe verschicken" können: der POKE-
Befehl.
Die Syntax von POKE ist denkbar einfach: Sie müssen
hinter dem Befehlswort POKE ganz einfach nur noch die
Adresse des zu verändernden Bytes angeben und an-
schließend, durch ein Komma voneinander getrennt, den
Wert, der zugewiesen werden soll, allerdings in dezi-
maler Schreibweise. Daher also auch die vorangehende
langwierige Erklärung des Binärsystems, denn später
müssen Sie sich Ihre Bitkombinationen selbst zusam-
menrechenen können.
Um unser Adressierungsbeispiel gleich in die Realität
umzusetzen - hier ist der Brief an Herrn Byte, wie
wir ihn in BASIC schreiben mÜssten:
POKE 53281,11
Wir haben also der Speicherzelle (das ist die deut-
sche Übersetzung für Byte) 53281 den Dezimalwert 11
beziehungsweise den Binärwert 00001011 zugewiesen.
Probieren Sie es doch einmal aus, und beobachten Sie,
was passiert... Na? Verblüfft? Eben genau DAS ist
eingetreten, was ich Ihnen vorhin beschrieben hatte:
der Hintergrund des Bildschirms Ihres C64 hat sich
vom üblichen Blau in ein tristes Dunkelgrau verfärbt.
Sie sehen also, man muß nur die richtigen STELLEN im
Speicher des 64ers verändern, um gewisse Ergebnisse
zu erzielen.
Jetzt möchte ich Ihnen allerdings nicht verschweigen,
daß es ebenso möglich ist, von einer Speicherzelle
einen Brief zu erhalten. Das heißt also, daß Sie als
Programmierer die Speichezelle dazu veranlassen kön-
nen, ihren Inhalt (oder ihren Wert) Ihnen zuzuschik-
ken. Dies kann in BASIC mit der PEEK-Funktion reali-
siert werden. Die Syntax von PEEK ist ebenfalls sehr
einfach: Sie müssen nach dem Befehlswort PEEK nur
noch die gewünschte Byteadresse, in Klammern gesetzt,
angeben, um den Inhalt dieses Bytes zu erhalten. Ich
möchte darauf aufmerksam machen, daß es sich hierbei
um eine FUNKTION handelt. Sie können PEEK also ohne
alles kaum effektiv nutzen, es solte nämlich schon
ein PRINT-Befehl, eine Variablenzuweisung, oder ein
Vergleich durch IF-THEN dabei stehen, um der Funktion
entsprechend einen Sinn zu geben. Eine Möglichkeit,
sich den Inhalt einer Speicherzelle anzusehen, wäre
über PRINT gegeben. Versuchen Sie doch einmal folgen-
des:
PRINT PEEK(53281)
Jetzt sollten Sie eine Zahl auf dem Bildschirm stehen
haben. Sie gibt die Farbe des Hintergrundes an, da
das Byte 53281 ja für die Farbe des Bildschirms
zuständig ist, wie wir es vorhin gelernt hatten. Es
kann durchaus sein, daß Sie jetzt hier etwas anderes
als 11 auf dem Bildschirm stehen haben. Das hat etwas
mit der computerinternen Handhabung der Farben zu
tun, doch das wollen wir an späterer Stelle genauer
behandeln. Prinzipiell kann man jetzt also sagen, daß
Sie mit Hilfe von PEEK und POKE ein Byte zu verschie-
denen Aktionen veranlassen können. Mit PEEK lassen
Sie sich von dem Byte einen Brief schicken, der sei-
nen Wert beinhaltet und mit POKE können Sie das Spiel
umkehren und dem Byte einen Brief zuschicken, der den
Wert beinhaltet, den es annehmen soll. Wie wir gese-
hen haben, ist gerade letztere Funktion ja sehr nütz-
lich, wenn wir verschiedene Dinge im Computer bewir-
ken wollen, man muß nur wissen an welchen Stellen man
Änderunngen vornehmen muß, um einen gewissen Effekt
zu erzielen.
Womit wir wieder bei den Stellen wären. Ich möchte
Ihnen hier einmal eine kleine Übersicht aller Stellen
(Bytes, Speicherzellen, Hausnummern, Adressen, oder
wie Sie es auch immer nennen möchten) geben, wie Sie
im C64 vorkommen. Man kann diese 65536 Bytes nämlich
in gewissen Aufgabenbereichen zusammenfassen, um et-
was Ordnung in die Tausenden von verschiedenen Zellen
zu bringen:

Ich habe hier den Speicher des C64 einmal mit Hilfe
eines Balkens, der in verschiedene Teilbereiche auf-
gespalten ist, dargestellt. Unten sehen Sie die Spei-
cherzelle 0, und am oberen Rand haben wir das letzte
Byte, mit der Adresse 65535. Sie werden jetzt fra-
gen: "Warum 65535 wo wir doch die ganze Zeit von
65536 Bytes reden ?" - Nun, wir müssen hier wieder
berücksichtigen, daß das Byte mit der Adresse 0 ja
auch mitzählt, somit haben wir (rein zahlenmäßig)
dann 65535 Bytes plus ein 0-Byte, das macht
65535+1=65536!
Ich möchte Ihnen hier dann gleich noch die Aufgaben
der verschiedenen Speicherbereiche erläutern, wie ich
sie im Bild schon angedeutet habee. Hierbei möchte
ich allerdings vorerst die Bytes von 0 bis 40960
übergehen, da Sie deren Funktionsweise besser verste-
hen können, wenn Sie die der Folgenden schon kennen.
Beginnen wir also bei 40960 bis 49152. Hier steht das
sogenannte BASIC-ROM. Klären wir zunächst einmal,
wofür ROM steht. Hierzu sollte ich vielleicht erwäh-
nen, daß es zwei verschiedene Arten von Speicherzel-
len in Ihrem C64 gibt. Bestimmte Teilbereiche haben
also bestimmte Eigenschaften, die ein anderer wiede-
rum nicht hat. Die zwei Arten, von denen hier gespro-
chen wird, nennt man RAM und ROM. RAM steht für "Ran-
dom Access Memory" und ROM für "Read Only Memory".
Übersetzen wir dies aus dem Englischen, so haben
wir: "Speicher für beliebigen Zugriff" und "Spei-
cher, der nur gelesen werden kann." Dies heißt im
Klartext, daß RAM-Speicherzellen beschrieben UND ge-
lesen werden können, im Gegensatz zu ROM-Adressen,
die NUR gelesen werden. Sie können sich dies etwa mit
folgendem Bild verdeutlichen: die RAM-Adressen sind
schreibfreudige Mitbürger. Sie erhalten gerne Briefe,
und beantworten diese auch, sollten sie dazu aufge-
fordert worden sein. ROM-Adressen hingegen sind eher
Kontaktscheu, sie ignorieren ihre Post, und werfen
sie, wie Sie es vielleicht auch manchmal bei Werbe-
sendungen tun, ungelesen in den Mülleimer. Sie kennen
ihren Programmierer schon gut genug, weshalb sie auch
nur dann an ihn ihren Inhalt senden, wenn dieser es
unbedingt verlangt. Außerdem sind ROM-Adressen sehr
konservative Individuen, sie haben nämlich auch gar
nicht vor, ihre Einstellung (also ihren Wert) zu än-
dern und bleiben auch auf Immer und Ewig bei ihrem
voreingestellten Wert.
Doch jetzt einmal Spaß beiseite - der Grund, warum
man ROM und RAM schuf, war einfach der, daß man einen
Speicher benötigte, der auch ohne Stromzufuhr, also
im ausgeschalteten Zustand des Computers, in der Lage
ist, seine in ihm gespeicherten Informationen zu be-
halten. Da man sonst bei jedem neuen Einschalten ei-
nes Computers ein gewisses Grundprogramm jedesmal
wieder von Neuen hätte eingeben müssen, wobei natür-
lich die Frage aufkommt, wie man dies getan hätte, da
in einem leeren Computer ohne Programm auch nichts
getan werden kann, um Daten aufzunehmen, da dieser
immer ein Programm braucht, das ihm diese Daten ein-
liest. Ebenso ist es bei BASIC. In dem vorhin ange-
sprochenen Bereich des BASIC-ROMs sind die Grundpro-
gramme gespeichert, die es uns ermöglichen, in BASIC
mit unserem 64er zu kommunizieren. Alle Befehle, die
wir bisher behandelt haben, ebenso wie diese, die
noch kommen werden, sind hier genauestens definiert,
so daß der Computer immer genau weiß, was er zu tun
hat, wenn Sie ihn Beispielsweise mit der Buchstaben-
folge PRINT konfrontieren.
ROM braucht also keinen Strom, um die in ihm gespei-
cherten Bits zu behalten. Sie können sich dies etwa
als eine Unmenge von Leitungen vorstellen, die fest
und unveränderlich sind. Und nicht, wie es beim RAM
der Fall ist, durch Schalter ein-, oder ausschaltbar
sind. ROM-Bits STEHEN ganz einfach schon auf EIN oder
AUS.
Der Vorteil am RAM ist ganz einfach, daß man seinen
Inhalt sozusagen "von Hand" verändern kann und wäre
dies nicht möglich, so könnte man beispielsweise die
Bildschirmfarbe auch gar nicht verändern. Dafür geht
diese dann allerdings auch verloren, wenn man die
Stromzufuhr unterbricht.
Doch machen wir nun wieder in unserer Speicherüber-
sicht weiter. Es folgt nun der Bereich von 49152 bis
53248. Hier ist freier RAM-Speicher, der vom Computer
nicht benutzt wird. Wir als Programmierer, können ihn
uns zwar zu Nutze machen, doch das ebenfalls erst,
wenn Sie sich einmal mit Assembler befassen sollten.
Der folgende Speicherbereich ist der für uns BASIC-
Programmierer wichtigste, weshalb ich anschließend
auch etwas genauer darauf eingehen werde. Der soge-
nannte I/O-Bereich, oder Input/Output-Bereich (von
53248 bis 57344), enthält die Speicherzellen der ver-
schiedenen Ein-/Ausgabe-Bausteine (Input/Output =
Eingabe/Ausgabe). Das sind jene Bausteine (oder Com-
puterchips) in unserem C64, die dafür verantwortlich
sind, daß zum Beispiel der Ton aus dem Lautsprecher
kommt, daß das Floppylaufwerk auch odrnungsgemäß sei-
ne Daten speichert, oder daß, wie oben schon gezeigt,
der Bildschirm in dunkelgrauer Farbe dargestellt
wird. Wir wollen uns Speziell um zwei bestimmte Chips
aus diesem Bereich kümmern, sie tragen die Namen SID
und VIC.
SID steht für "Sound Interface Device" was etwa so-
viel heißt wie "Musikerzeuger" (nicht wörtlich über-
setzt, doch das hier trifft die Aufgabe von SID auf
den Punkt genau). Um ihn werden wir uns in einer der
nächsten Ausgaben noch kümmern.
VIC ist die Abkürzung für "Video Interface Control-
ler". Wie sein Name schon verrät (Überwacher der Vi-
deoschnittstelle, oder frei nach J.R.R. Tolkien "Der
Herr der Videoschnittstelle"), ist er zuständig für
Bildschirmaufbau und Grafik innerhalb unseres Compu-
ters. Er wird auch unser Hauptthema sein, um das es
sich nächsten Monat drehen wird.
Nun wollen wir noch unsere Speichertabelle zu Ende
abhandeln. Da wäre zunächst einmal noch der Bereich
von 57344 bis zum Ende des Speichers (also bis
65535). Hier haben wir wieder einen ROM-Bereich vor-
liegen, diesmal allerdings das Betriebssystem-ROM.
Das Betriebssystem ist der wichtigste Teil eines Com-
puters, da in ihm alle Unterprogramme enthalten sind,
die zur Steuerung des Computers beim Einschalten und
während der Eingabe über die Tastatur unbedingt not-
wenig sind. Hier liegt das eigentliche Herzstück des
C64, ohne das er nur bedingt leben könnte. Wenn wir
das aus unserer Sicht als werdende BASIC-
Programmierer betrachten, könnte er es sogar über-
haupt nicht. Hier muß ich dann abermals auf die Ma-
schinensprache verweisen, denn bei dieser ist es dur-
chaus möglich, den C64 OHNE Betriebssystem zu benut-
zen, doch ist dies auch hier nur unter -relativ- gro-
ßem Aufwand machbar. Auch werden Sie beim Erlernen
der Maschinensprache nicht umhin kommen, sich mit dem
Betriebssystem eingehender zu befassen, Sie werden es
nach einiger Zeit sogar sehr zu schätzen wissen.
Zum Abschluß noch die Speicherbereiche von 0 bis
40960, deren Funktionen Sie jetzt besser verstehen
werden:
Da wäre ja zuerst einmal der Bereich von 0 bis 1024.
In diesem Bereich findet sich eine Ansammlung von
Bytes, die ausschließlich vom Betriebssystem und von
BASIC benutzt werden, um bestimmte Werte zwischenzu-
speichern. Uns als BASIC-Programmierern bleiben die
meisten davon verschlossen, und wir können Sie nur in
bedingtem Maße für uns nutzen, doch auch dies zu ei-
nem späteren Zeitpunkt.
Dann käme als nächstes das VIDEO-RAM, oder der Bild-
schirmspeicher, von 1024 bis 2048. Auf diesen Bereich
werden wir nächsten Monat auch noch genauer eingehen,
da er, wie sich aufgrund des Namens vielleicht ja
schon vermuten läßt, etwas mit VIC zu tun hat. Hier
sei nur gesagt, daß in diesem Bereich die Zeichen,
wie sie normalerweise immer auf dem Bildschirm ste-
hen, in genau der Reihenfolge abgespeichert sind, wie
Sie sie auf diesem abgebildet sehen.
Als letztes hätten wir dann noch den Bereich von 2048
bis 40960. Zugegebenermaßen wohl der größte Speicher-
bereich im 64er. Hier werden in aller Regel die Pro-
grammzeilen, so wie Sie sie eingeben gespeichert.
Der LIST-Befehl tut also nichts anderes, als die
BASIC-Zeilen, die hier gespeichert sind, Ihnen auf
dem Bildschirm darzustellen.
In diesem Bereich finden übrigens gleichzeitig auch
alle Variablen Platz, die Sie in Ihren Programmen
verwenden.
Hiermit bin ich nun wieder am Ende der Folge ange-
langt und hoffe, Ihnen nicht zu sehr die Gehirnwin-
dungen mit der Thematik des Speicheraufbaus und des
Binärssystems verknotet zu haben. Wie Sie ja merkten,
hatten wir diesmal eigentlich kaum etwas mit BASIC
zu tun, wenn man einmal von PEEK und POKE absieht.
Doch glaube ich mit diesem Artikel bei Ihnen einen
Grundstein für das "wirkliche" Vertändnis von Compu-
tern gelegt zu haben, da Sie mit Hilfe der Informa-
tionen, die Sie hier und heute erlangt haben, sich
viele Phänomene der Informatik sehr einfach und ver-
ständlich verdeutlichen können.
Ich darf Ihnen nun noch ein fröhliches Gehirnentkno-
ten wünschen und verabschiede mich bis nächsten Mo-
nat, wenn es dann heißt "Von nun an wirds aber bunt -
die Grafikprogrammierung als solche",
Ihr Uli Basters.