Magic Disk 64

home to index to text: MD8905-KURS-BASIC_KURS_TEIL_5-1_:_VON_ADAM_UND_EVA...(TEIL_5)-5.1.txt
     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:

MD8905-KURS-5.8.hires.png

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:

MD8905-KURS-5.22.hires.png

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.

Valid HTML 4.0 Transitional Valid CSS!