Seite 1 von 1
Tastaturcode...
Verfasst: 05.03.2025 20:41
von Dr. Irata
Hallo in die Runde,
folgendes Problem:
Ich möchte über das Register CH einen Buchstaben auslesen und anschließend auf den Bildschirm printen.
Blöd nur, daß der Tastaturcode nicht mit dem Code für den Buchstaben übereinstimmt!
Z.B. gibt CH für A den Wert 63 aus und man muss aber den Wert 33 auf den Bildschirm printen um A zu sehen.
Da braucht man also eine Umrechnungstabelle... das geht doch sicherlich ganz anders, bzw. so eine Tabelle muss es doch im OS geben??!!
Wer kann da helfen?
LG
Peter
Re: Tastaturcode...
Verfasst: 05.03.2025 21:28
von slx
Na, dann zieh' doch einfach 30 ab, dann passt das mit dem A
Scherz beiseite: ich hab' mal auf die Schnelle
dieses kryptische Stück Code auf AtariAge gefunden. Das basiert auf einer Tabelle und so wie die Keyboard-Werte aussehen, geht das auch nicht ohne Tabelle.
Alternativ könntest Du auf XL/XE die Tabelle des OS verwenden (Adresse auf $79), aber das funktioniert auf 400/800 nicht (und erlaubt laut
diesem Artikel auch nicht alle Tastenkombinationen mit Shift und/oder Control zu lesen.
Re: Tastaturcode...
Verfasst: 05.03.2025 21:30
von DjayBee
Ja, die gibt es.
Im OS-A/OS-B befindet sie sich an $FEFE.
Im XL-OS gibt es eine neue Variable KEYDEF=$79, die zur Tabelle zeigt.
Mit diesem Code habe ich einige Spiele XL-tauglich gemacht:
Code: Alles auswählen
KEYDEF EQU $79
keytab EQU $FEFE ; Tabelle im 400/800
lda KEYDEF+1 ; adapt keyboard translation table
beq noxl ; KEYDEF ist im 400/800 =$0000
sta keytbl+2 ; XL-Tabelle in den unten ...
lda KEYDEF
sta keytbl+1 ; ... stehenden Code patchen.
noxl
Hiermit übersetzt du dann den Keycode, der sich in X befinden muss, durch den ASCII-Wert:
Code: Alles auswählen
keytbl lda keytab,X ; voreingestellt ist die Tabelle in OS-A/OS-B
rts
Du kannst natürlich auch umgekehrt die ZP-Variable anpassen:
Code: Alles auswählen
KEYDEF EQU $79
keytab EQU $FEFE ; Tabelle im 400/800
lda KEYDEF+1 ; adapt keyboard translation table
bne xl ; KEYDEF ist im 400/800 =$0000
lda #<keytab ; Zeiger auf die 400/800-Tabelle ...
sta KEYDEF
lda #>keytab ; in die ZP-Variable schreiben
sta KEYDEF+1
xl
Und übersetzt den Keycode, der sich diesmal in Y befinden muss, dann durch:
Re: Tastaturcode...
Verfasst: 05.03.2025 22:07
von Dr. Irata
lieben Dank !
Ich hatte auch gerade im Profibuch nachgelesen und diese Tabelle bei keydef gefunden und entsprechend die Werte konvertieren können.
Nur Leider funktioniert es nicht gut - bekomme nur kleine Buchstaben und die Zahlen funktionieren gar nicht.
Ob es am Emulator liegt ???
Re: Tastaturcode...
Verfasst: 05.03.2025 22:27
von mega-hz
bedenke, KEYDEF=$79 ist fürs XL/XE OS!
Du benutzt da aber ein OLD-OS!