von Frederik Holst Es freut mich, daß wir in dieser Ausgabe eine Frage eines Lesers behandeln können, denn so stelle ich mir die konstruktive Arbeit der USER-MAG Leser im USER-MAG vor, denn nur wenn alle mitarbeiten, kann dieses Magazin für den ATARI überleben ! Dietmar Boll hat ein Problem mit der Tastaturabfrage im Interrupt. Einen ähnlichen Fall hatten wir zwar schon einmal bei der Interruptbesprechung, aber ich will diesen Brief zum Anlaß nehmen, auch noch einmal die Konvertierung des internen Codes in den ATASCII Code durchzusprechen. Die Programmierung des Interrupts kennen wir schon: Wir schalten zuerst alle Interrupts ab, biegen die Interruptvektoren auf unseren eigenen Interrupt um, und springen in die VBI-End-Routine im ROM. Das sieht also so aus: ORG $A800 LDA #0 STA $D40E LDA #VBI:LO STA 548 LDA #VBI:HI STA 549 LDA #192 STA $D40E RTS Damit ist das Hauptprogramm beendet und nur der Interrupt läuft noch im Hintergrund. Der Interrupt soll ganz einfach gehalten werden, damit die Funktionsweise klar wird. Bei einem Tastendruck auf die Taste "B"lack soll der Hintergrund schwarz geschaltet werden, bei "W"hite auf weiß gewechselt werden. VBI LDA 764 CMP #46 BEQ WHITE CMP #21 BEQ BLACK JMP $E477 BLACK LDA #0 STA 710 JMP $E477 WHITE LDA #15 STA 710 JMP $E477 Dies ist also unser VBI. Der Tastaturcode kann nur aus 764 ausgelesen werden, das ist wichtig. Es gibt zwar auch eine Speicherstelle, in der der ASCII Code ausgelesen werden kann, jedoch läßt sich diese nicht im Interrupt benutzen. Dieser Wert mit 46, dem Tastaturcode für "W" verglichen und bei Übereinstimmung zu WHITE verzweigt. Das gleiche gilt für "B". Der Interrupt wird in jedem Fall mit JMP $E477 im ROM beendet. Leider taucht bei diesem Programm ein ziemliches Problem auf: Es gibt keine Möglichkeit, den Tastaturcode zu berechnen, da die Tastaturcodetabelle jederzeit vom User verändert werden kann. Die Werte, die beim PAL-ATARI eingestellt sind, scheinen wahllos verteilt zu sein. Die einzige Möglichkeit ist, im BASIC ein kleines Programm ablaufen zu lassen, das einem den Tastaturwert auswirft: 10 PRINT PEEK(764) 20 GOTO 10 30 END Wenn man diese Programm ablaufen läßt, werden die Tastaturcodes ausgegeben, die man sich dann notieren kann und in eigenen Programmen einbauen kann. So, das war's schon für diese Ausgabe. Ich hoffe, Dietmar, Dein Problem ist damit gelöst. Es soll für Sie alle ein Ansporn sein, uns Ihre Probleme zu schreiben, auch wenn sie schon einmal in ähnlicher Form behandelt worden sind ! Dies können Sie auf verschiedene Art und Weise tun: Post: Frederik Holst Ulrich-Günther Str. 101 24321 Lütjenburg E-Mail: freddy@frederik.toppoint.de INTERNET FREDDY@1ST-TRAC Z-NETZ FREDDY@POLARIS SEVEN-NETZ Frederik Holst@2:242/255.5 FIDO-Classic Ich freue mich auf Ihre Reaktion ! Frederik Holst