Programmer's Corner Dezember 91 ------------------------------- Hallo Freaks, zum Schluß unseres kleinen Ausflugs über die Tastatur befasst sich die Pro- grammer's Corner diesmal mit dem Tastaturinterrupt. Nachdem in den letzten beiden Folgen die TURBO-BASIC Programmierer mit Listings bedacht wurden, gibt es diesmal etwas für unsere Assemblerfreunde: Ein voll- ständig dokumentiertes Quelllisting des Tastaturinterrupt des XL/XE, eine neue Version des Interrupts, der die Funktionstasten des 1200XL über SHIFT-CTRL Tastenkombinationen beinhaltet und ein minimal Tastatur- interrupthändler für eigene Programme und zum experimentieren. Die Quelltexte befinden sich jeweils im Bibo-Assembler Format auf der Diskette. Weiterhin sind auch die übersetzten Maschinenspracheprogramme auf der Diskette zu finden. Die Tastaturinterruptroutine des XL/XE: Die Lage des original Tastatur- interrupts läßt sich durch den Tastaturinterruptvektor (VKEYBD 520-512 / $208-$208) bestimmen. Normalerweise liegt er im ROM ab Adresse 64537 ($FC19). Um eigene Tastaturinterrupts zu installieren, muß man den Vektor VKEYBD auf eine eigene Routine umbiegen. Ein Grossteil des Tastatur- interrupts wird durch die Abfragen der Funktionstasten des 1200XL eingenommen. Diese Teile sind im Betriebssystem des 800XL/XE oder 130XE überflüssig, da diese Computer keine zusätzlichen Funktionstasten besitzen. Man kann allerdings in der Routine die Tastaturcodes für die Funktionstasten durch Codes ersetzten, die der XL/XE Computer erzeugen kann. Folgende Werte müssen dafür geändert werden (die Zeilenangaben beziehen sich auf das Bibo-Assembler Listing): Zeile 0710 (#$83 = CTRL-F1) Zeile 1900 (#$84 = CTRL-F2) Zeile 1902 (#$94 = CTRL-F4) In dem Beispiellisting KEYNEW.SRC haben nun die Tastenkombinationen folgende Wirkung: CTRL-ESC = Tastatur an/aus CTRL-CLEAR = Bildschirm (DMA) aus, jede Taste schaltet wieder an CTRL-CAPS = Umschalten zwischen Grafik- und internationalen Zeichensatz Die Abfrageroutinen der Funktionstasten manipulieren das PIA-Register PORTB (54017 / $D301). Diese Register steuerte beim 1200XL vier LED's auf dem Gehäuse des 1200XL, die den Status der Tastatur und des Zeichensatzes anzeigen. Beim 130XE und fast allen aufgerüsteten Atari Computern kontrolliert dieses Register aber den Zugriff auf die Speichererweiterung (RAMDISK). Wird die modifizierte Tastaturinterruptroutine auf solchen Rechner eingesetzt, so sollten dieses egister nicht verändert werden. Es reicht, im Quelllisting die Zeile 1770 zu entfernen, da hier das Register PORTB neu geschrieben wird. Das dritte Listing KEYMINI.SRC ist eine optimierte und von allem überflüssigen Ballast befreite Tastaturinterrupt- routine. Sie arbeitet wie das Original. Auf dieser Routine kann man eigene Routinen entwickeln, die spezielle Fähigkeiten besitzen. Ein Beispiel hierfür ist das Programm VERTIPP.COM. Diese Programm installiert eine neue Tastaturinterruptroutine und ändert zufällig 'E' in 'W' und 'A' in 'S'. Angehängt an ein AUTORUN.SYS kann dieses Programm Unwissende zur Weißglut treiben, die der Meinung sind, sich andauernd zu vertippen. Probiert es einmal aus. Viel Spaß und ein frohes 1992 wünscht euch Carsten Strotmann Bis zur nächsten Ausgabe ...