BASIC-Kurs: "Von Adam und Eva..." (Teil 5)
Herzlich Willkommen beim fünften Teil unseres Basickurses. Wie letzten Monat schon versprochen geht es
diesmal um das sogenannte Binärsystem und den Speicheraufbau unseres 64 ers. 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 Grafikund
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 Zahlensystem 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 beliebiges kombinieren dieser Ziffern Zahlen von unendlicher 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ößerstelligen 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, weshalb auch hier als Endsumme aller Produkte der Potenzen 2313660 herauskommt. Das scheint alles komplizierter als es ist - wichtig ist, daß Sie begriffen
haben, daß eine Dezimalziffer nur aus der Addition
von 10 er-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 10 er 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 einstellige.
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 niedrigere 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 Überlauf zu den " Zehnern"(10↑1) statt, zum Anderen bewirkt 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 aufgemacht ( 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 Dezimalzahlen als Summe von 10 er-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 diesem 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 ableiten " Bi" steht für Zwei. Da wir ja nun alle 2 er-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 besonderen 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 niedrigsten 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 2 er-Potenzen addiert werden.
Doch warum das alles? Wozu können wir das Binärsystem gebrauchen, und warum sind achtstellige Binärzahlen etwas Besonderes? Leider muß ich zur Beantwortung 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 vielen 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 Wirkungen 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 EINgeschaltet 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, beispielsweise 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 einoder ausschaltet. 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 beispielsweise 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 hinaus möchte: die oben genannte EIN/ AUS-Kombination
könnte nämlich auch genausogut folgendermaßen aussehen ( wenn man anstelle von EIN die Ziffer 1 und anstelle von AUS die Ziffer 0 schreibt) :
EIN AUS EIN EIN 1 0 1 1
Und siehe da: da haben wir doch eine echte ( vorläufig vierstellige) Binärzahl! Ins Dezimalsystem umgerechnet 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 angeben, er den Bildschirm in die Farbe Dunkelgrau umfä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ürzung : KB) Speicher ( bei denjenigen Lesern, die die
Funktionsweise des Binärsystems begriffen haben sollten, müßte eigentlich gerade eben ein Licht aufgegangen 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( !) sogenannten 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 einund ausschaltbar sind. Eine von diesen Leitungen, die ein Computer miteinander kombiniert, um den Befehl, den er ausführen soll zu ermitteln. Womit unsere Frage nach dem " Warum eine achtstellige Binärzahl" beantwortet wäre: da unser Bit
für eine stromführende Leitung steht, die entweder
EINoder AUSgeschaltet sein kann (1 oder 0), und
weil acht Bit einem Byte entsprechen, kann dieses
Byte mit Hilfe einer achtstelligen Binärzahl ausgedrückt werden. Man spricht hier von dem " Wert" eines 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 2 er-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 Maschinensprache ( auch " Assembler genannt) lernen werden.
Des Weiteren sind ein Megabyte demnach also 1024 Kilobytes. Am Rande vielleicht eine kleine Umrechnungstabelle:
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 einoder
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 dieser 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önnte man sich das etwa wie eine Straße vorstellen, in
der es 65536 Häuser gibt, mit ebenso vielen Hausnummern. 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" aufzuzeigen. 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 aufmerksame Leser hat bestimmt schon längst gemerkt, daß wir
hier die Binärzahl von vorhin auf dem Bildschirm stehen haben, nämlich die dezimale 11 . Diesmal allerdings 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 beinhalten jetzt ganz einfach die Ziffer 0, womit ihre
Produkte mit ihren jeweiligen Potenzen auch zu 0 werden, 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 anschließend, durch ein Komma voneinander getrennt, den
Wert, der zugewiesen werden soll, allerdings in dezimaler Schreibweise. Daher also auch die vorangehende
langwierige Erklärung des Binärsystems, denn später
müssen Sie sich Ihre Bitkombinationen selbst zusammenrechenen 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 deutsche Ü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 64 ers 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önnen, ihren Inhalt ( oder ihren Wert) Ihnen zuzuschikken. Dies kann in BASIC mit der PEEK-Funktion realisiert 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 folgendes:
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 verschiedenen Aktionen veranlassen können. Mit PEEK lassen
Sie sich von dem Byte einen Brief schicken, der seinen 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 gesehen haben, ist gerade letztere Funktion ja sehr nützlich, wenn wir verschiedene Dinge im Computer bewirken 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 etwas 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 aufgespalten ist, dargestellt. Unten sehen Sie die Speicherzelle 0, und am oberen Rand haben wir das letzte
Byte, mit der Adresse 65535 . Sie werden jetzt fragen:" 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 verstehen 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ähnen, daß es zwei verschiedene Arten von Speicherzellen in Ihrem C64 gibt. Bestimmte Teilbereiche haben
also bestimmte Eigenschaften, die ein anderer wiederum nicht hat. Die zwei Arten, von denen hier gesprochen wird, nennt man RAM und ROM. RAM steht für " Random Access Memory" und ROM für " Read Only Memory" .
Übersetzen wir dies aus dem Englischen, so haben
wir:" Speicher für beliebigen Zugriff" und " Speicher, der nur gelesen werden kann." Dies heißt im
Klartext, daß RAM-Speicherzellen beschrieben UND gelesen 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 aufgefordert worden sein. ROM-Adressen hingegen sind eher
Kontaktscheu, sie ignorieren ihre Post, und werfen
sie, wie Sie es vielleicht auch manchmal bei Werbesendungen 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 ändern 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 behalten. Da man sonst bei jedem neuen Einschalten eines Computers ein gewisses Grundprogramm jedesmal
wieder von Neuen hätte eingeben müssen, wobei natürlich 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 einliest. Ebenso ist es bei BASIC. In dem vorhin angesprochenen Bereich des BASIC-ROMs sind die Grundprogramme gespeichert, die es uns ermöglichen, in BASIC
mit unserem 64 er 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 Buchstabenfolge PRINT konfrontieren.
ROM braucht also keinen Strom, um die in ihm gespeicherten 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übersicht 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 sogenannte I/ O-Bereich, oder Input/ Output-Bereich ( von
53248 bis 57344), enthält die Speicherzellen der verschiedenen Ein-/ Ausgabe-Bausteine ( Input/ Output = Eingabe/ Ausgabe) . Das sind jene Bausteine ( oder Computerchips) in unserem C64, die dafür verantwortlich
sind, daß zum Beispiel der Ton aus dem Lautsprecher
kommt, daß das Floppylaufwerk auch odrnungsgemäß seine 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 soviel heißt wie " Musikerzeuger"( nicht wörtlich übersetzt, 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 Controller" . Wie sein Name schon verrät ( Überwacher der Videoschnittstelle, oder frei nach J. R. R. Tolkien " Der
Herr der Videoschnittstelle"), ist er zuständig für
Bildschirmaufbau und Grafik innerhalb unseres Computers. 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 vorliegen, diesmal allerdings das Betriebssystem-ROM.
Das Betriebssystem ist der wichtigste Teil eines Computers, da in ihm alle Unterprogramme enthalten sind, die zur Steuerung des Computers beim Einschalten und
während der Eingabe über die Tastatur unbedingt notwenig 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 überhaupt nicht. Hier muß ich dann abermals auf die Maschinensprache verweisen, denn bei dieser ist es durchaus möglich, den C64 OHNE Betriebssystem zu benutzen, doch ist dies auch hier nur unter - relativgro-ß 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 zwischenzuspeichern. 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 einem späteren Zeitpunkt.
Dann käme als nächstes das VIDEO-RAM, oder der Bildschirmspeicher, 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 stehen, 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 Speicherbereich im 64 er. Hier werden in aller Regel die Programmzeilen, 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 angelangt und hoffe, Ihnen nicht zu sehr die Gehirnwindungen 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 Computern gelegt zu haben, da Sie mit Hilfe der Informationen, die Sie hier und heute erlangt haben, sich
viele Phänomene der Informatik sehr einfach und verständlich verdeutlichen können.
Ich darf Ihnen nun noch ein fröhliches Gehirnentknoten wünschen und verabschiede mich bis nächsten Monat, wenn es dann heißt " Von nun an wirds aber bunt - die Grafikprogrammierung als solche", Ihr Uli Basters.