von Frederik Holst Nachdem in der letzten Ausgabe mit der Display List so viel Neues auf alle eingestürzt ist, soll es diesmal um etwas gehen, was wir im Prinzip schon können: Das Abfragen von Speicherstellen. Dies soll eine Vorarbeit sein für die Programmierung von VBIs auf die wir uns das nächste Mal stürzen werden, falls Sie nicht ein anderes Thema vorschlagen, für die ich weiterhin immer offen bin. Als Problem wollen wir uns die Aufgabe stellen, die HELP Taste abzufragen. Wie man entweder weiß oder nachlesen kann, steht der Status der HELP Taste in der Speicherstelle 732. Dabei ist folgendes zu beachten: Wenn die Taste nicht gedrückt ist, steht in 732 der Wert 255. Wird die HELP Taste dann gedrückt, so wird der Wert auf 17 gesetzt. Doch leider ist es nicht so, daß der Wert wieder auf 255 zurückgeht, wenn man die Taste wieder loslässt. Hier muß man selbst Hand anlegen. Für unser Listing soll es noch folgende Aufgabe geben: Jedes Mal, wenn HELP gedrückt wird, soll der Wert in 710 um eins erhöht werden. 710 kennen wir noch aus der ersten Folge, dort ist die Hintergrundfarbe gespeichert. Los geht es wie immer mit ORG $A800 Das braucht wohl nicht mehr näher erläutert werden. Als nächstes lesen wir den Inhalt von 732 ein: LOOP LDA 732 Ich habe gleich eine Marke davor gesetzt, da wir diesen Wert ja immer wieder einlesen wollen. Nun kommt der Vergleich mit dem Wert 17: CMP #17 Wenn der Wert nicht 17 ist, dann soll zu LOOP gesprungen werden, ansonsten geht es weiter: BNE LOOP Angenommen der Wert ist also siebzehn, dann muß der Wert in 710 um eins erhöht werden. Dazu lernen wir einen neuen Befehl kennen: Er heißt INC. Das kommt von INCrease. Dahinter steht die Speicherstelle, die wir erhöhen wollen. Also: INC 710 Nachdem wir 710 also um eins erhöht haben, muß aber nun 732 wieder auf 255 gesetzt werden. Das machen wir ganz normal mit LDA #255 STA 732 Da nun wieder ganz normal 732 eingelesen werden kann, springen wir zu LOOP zurück: JMP LOOP Das war schon das Listing. Dazu noch folgende Anmerkungen: Um den Unterschied feststellen zu können, nehmen Sie doch einfach einmal die LDA #255 Zeile heraus und beobachten Sie den Unterschied. Sie verlassen das Programm in beiden Fällen mit RESET. Wenn Sie 710 nicht erhöhen wollen, sondern erniedriegen dann verwenden Sie den Befehl DEC, das kommt von DECrease. Die Syntax ist die selbe. Sie werden feststellen, daß sich der Wert erst bei jedem zweiten Mal erniedrigt. Das kommt daher, daß der Atari in GR.0 nur 128 Farbabstufungen hat. Um also bei jedem Tastendruck einen Farbwechsel zu erzeugen, muß der INC Befehl auch zweimal ausgeführt werden, also INC 710 INC 710 Das soll es für dieses Mal gewesen sein. Nächstes Mal geht es dann an die VBIs !