Mir hat das aber keine Ruhe gelassen und ich bin dem Problem jetzt mal genauer auf die Spur gegangen.
Ich habe mal ein Miniprogramm geschrieben, das nur die Abfrage der SELECT Taste nachstellt. Und wie im eigentlichen Programm, das gleiche Problem: Altirra-Hui / Atari-Pfui
Hier mal im Videovergleich:
Meine Vermutung war ja, dass die Taster der Originalhardware einfach nachfedern/prellen. Und das ist auch so und ich konnte das so nachweisen:
Wieder ein Miniprogramm geschrieben:
Code: Alles auswählen
ORG $A000
;
TIMER: EQU $14
START: EQU $A000
PUFFER: EQU $0600
CONSOL: EQU $D01F
VCOUNT: EQU $D40B
;
LDA #8
STA CONSOL ; Nur zur Sicherheit die Eingänge Freischalten
LDX #0
LOOP1: LDA CONSOL ; Tasten abfragen
AND #%00000010 ; auf SLECT prüfen
BNE LOOP1 ; falls nicht gedrückt, weiter warten
LOOP2: LDA CONSOL ; falls gedrückt
STA PUFFER,X ; den Status der Funktionstasten 255 mal abspeichern
INX
BNE LOOP2
BRK
Und so sah das Ergebnis aus:
05 = SELECT gedrückt
07 = keine Taste gedrückt
Wie man schön sehen kann, folgt auf den ersten Tstendruck 7*15 Takte eine Leerphase, dann noch zwei kleine Nachschwinger, bevor sich der Tastendruck stabil verhält.
In den meisten Programmen wird sich das nicht auswirken, denn das sind gerade mal 180 Taktzyklen oder nicht einmal ganz zwei Scan-Lines. Frägt man die Tasten also im VBI ab, gar kein Problem.
Hat man ein längeres Programm, auch kein Problem. Je nachdem wie energisch man die Taste drückt, treten auch mal mehr, mal weniger Nachschwinger auf.
Bei mir wurde es nur blöde, da fast mein komplettes Programm in einem DLI und dem VBI abläuft. Meine Hauptschleife ist nur sehr klein und besteht eigentlich nur aus der Überwachung der Funktionstasten.
Dadurch hat sich dann eben das Nachschwingen der Taste bemerkbar gemacht. Der Emulator hat dagegen ein sauberes Schaltverhalten und es treten auch bei meiner kurzen Hauptschleife keine Probleme auf.
Also: Problem erkannt - Problem gebannt.
Vielleicht hilft das ja mal noch jemand ....