Magic Disk 64

home to index to html: MD8905-KURS-BASIC_KURS_TEIL_5-1_:_VON_ADAM_UND_EVA...(TEIL_5)-5.1.html
     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:                   
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 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:                                          
MD8905-KURS-5.22.hires.png
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.
Valid HTML 4.0 Transitional Valid CSS!