Computerrätsel 8
Hans bestätigt mit seinem neuen Rätsel genau das was ich sage. Alle die keinen C64 oder C128 als Rechner hatten, oder nicht in Maschinensprache programmierten sind wahrscheinlich auch vom heutigen Rätsel ausgeschlossen. Aber genug der Vorrede: Hier seine Mail:
Hallo Bernd,
dann versuchen wir es doch mal mit Spezialfragen, so wie im Kommentar zu
Arne’s Antwort vorgeschlagen: ich hätte da mal eine zur Auswahl:
Wie sah die Einschaltmeldung des C-128 von Commodore aus?
Oder, falls das zu einfach ist: Was hat man über die Register an der
Adresse $ff00 programmiert?
Oder für Cracks: Was macht dieses Programm?
01300 inc $d020
01303 inc $d021
01306 jmp $1300
Mal sehen, was dabei heraus kommt…
Hans
P.S. 2 min. später: Ach mist, die Einschaltmeldung findet man ja in der
Wikipedia… :-( – Aber da steht nicht, wo sie im ROM des 128er’s steht,
oder wie sie codiert ist…
Da ich nicht weiß, inwieweit C64 und C128 vom Adressraum übereinstimmen,
kann ich nur vermuten, dass bei beiden $D000 die Basisadresse des Videochip ist. Damit würde das Programm Rahmen- und Hintergrundfarbe um 1 erhöhen, und das in einer Endlosschleife, was wirres Geflacker in allen 16 Farben produziert. An $FF00 erinnere ich mich nicht mehr, nur dass da beim C64 das Kernel-ROM liegt.
@Bernd: Ich hatte das mit den Spezialrätseln eigentlich als Vorschlag verstanden, deshalb hab ich es gestellt. Ich kann mir natürlich auch mal was Allgemeineres überlegen, aber das wird wahrscheinlich auch wieder derjenige lösen, der am besten mit Google & Co. umgehen kann, sofern er es nicht zufällig weis…
———————————————–
Zum Rätsel selbst:
Damit stellen wir fest: Arne hatte früher wohl auch so ein Teil, denn die Antwort ist richtig. Zumindest, was das Assemblerprogramm angeht.
Dass in Adresse $FF00 beim C64 das Kernal-ROM liegt, stimmt auch, da tun sich C64 und C128 nichts. Der C128 verfügt allerdings über doppelt so viel Speicher wie der C64, also 128KB, die CPU kann aber nur 64KB adressieren.
Dann mal sehen, ob noch weitere Kommentare kommen.
Okay, da keiner mehr was dazu zu melden hat, löse ich auch mal den Rest auf:
Da der C128 über doppelt so viel Speicher verfügt wie der C64, also 128KB, die CPU aber nur 64KB adressieren kann, ist ein Memory-Management-Baustein, MMU genannt nötig, der zwischen den Speicherbereichen (Bänken) hin und her schalten kann. Die MMU hat ihre Register u.a. auch im I/O-Bereich zwischen $D000 und $Dfff, aber nicht nur. Fünf davon sind Hardwaremässig an die Adresse $FF00 und folgende „gemappt“, wo sie immer erreichbar sind, egal welche Speicherkonfiguration sonst gerade ausgewählt ist. Denn neben den 128 KB RAM sind ja auch 48KB ROM für Betriebssystem und Basicinterpreter, sowie Zeichensatz ROM zu verwalten.
Noch ein paar Worte zu dem Assemblerprogramm:
Es war bei uns in den 80er Jahren so, das es einige Läden gab, wo die Computer nicht nur ausgestellt waren, sondern auch benutzt werden durften. Da haben sich dann regelmässig ein paar begeisterte eingefunden um sich zu informieren, oder zu spielen. Es waren zwar nicht immer Spiele, die man gemacht hat, sondern auch Programmierübungen, mit denen man mehr oder weniger angegeben hat. Meisst ging es um Gags oder einfache Effekte.
In diese Kategorie gehört auch das im Rätsel gestellte Assemblerprogramm, das eines schönen Tages mal jemand in den ausgestellten 128er eingetippt und vorgeführt hat. Ich hab’s damals, als ich es gesehen habe zwar nicht verstanden, war davon aber so fasziniert, das ich mich von da an auch mit Assembler beschäftigt habe. Dieses Programm war für mich also sozusagen die Initialzündung, um auch Assembler zu lernen.