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
Tastaturcode...
Moderator: Rockford
-
- Beiträge: 230
- Registriert: 18.06.2021 23:16
- Has thanked: 205 times
- Been thanked: 30 times
- Kontaktdaten:
Re: Tastaturcode...
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.

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.
- DjayBee
- Beiträge: 1040
- Registriert: 17.08.2021 04:02
- Has thanked: 743 times
- Been thanked: 359 times
- Kontaktdaten:
Re: Tastaturcode...
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:
Hiermit übersetzt du dann den Keycode, der sich in X befinden muss, durch den ASCII-Wert:
Du kannst natürlich auch umgekehrt die ZP-Variable anpassen:
Und übersetzt den Keycode, der sich diesmal in Y befinden muss, dann durch:
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
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
Code: Alles auswählen
lda (KEYDEF),Y
- Dr. Irata
- Beiträge: 1265
- Registriert: 24.08.2021 14:40
- Has thanked: 182 times
- Been thanked: 417 times
- Kontaktdaten:
Re: Tastaturcode...
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 ???
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 ???
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast