Avec cette routine, qui est très similaire à la précédente, je dévie le programme au bon moment pour récupérer les résultats du scan de clavier, autrement dit : Le bit pour SHIFT, le bit pour CNT et le scancode de la touche (son code électronique, pas le code ASCII).
Donc maintenant, non seulement ton programme pourra différencier les curseurs avec ou sans SHIFT, mais aussi avec ou sans CNT. Et donc avec ou sans CNT+SHIFT.
A assembler et lancer par un "GDEBUT", comme précédemment.
Code : Tout sélectionner
DEBUT
LBSR INIT Init le clavier
PSHS CC ! Gèle les
ORCC #$10 ! IRQ
TEST JSR $E806 Capture clavier
TSTB ! Boucle
BEQ TEST ! si rien
CMPB #$20 ! Si SPC,
BEQ EXIT ! sort
BSR HEXS Affiche ASCII
LDB #'( ! Affiche "("
JSR $E803 !
LDB KEY !
ANDB #$80 ! Affiche SHIFT
BSR HEXS !
LDB KEY+1 !
ANDB #$01 ! Affiche CNT
BSR HEXS !
LDB KEY !
ANDB #$7F ! Affiche CODE
BSR HEX !
LDB #') ! Affiche ")"
JSR $E803 !
LDB #$0A !
JSR $E803 ! Retour
LDB #$0D ! de ligne
JSR $E803 !
BRA TEST Test suivant
EXIT PULS CC Restaure IRQ
LBSR OUT Restaure vecteur
SWI - Fin -
HEXS BSR HEX !
LDB #$20 ! Affiche code
JMP $E803 !
* Affichage d'un 8 bits en hexadécimal
HEX BSR HEX0
EXG A,B
HEX0 LDA #$10
MUL
ADDA #$90
DAA
ADCA #$40
DAA
EXG A,B
JMP $E803
INIT EQU *
* Copie de la routine clavier
LDX #PCOPY ! Init vecteur
STX $6055 ! de copie
JSR $FFA0 Exécute dans bank1
* Ajustement des adressages
LDX #CLAV !
LEAU $CD,X !
STU $AF,X !
LEAU $28D,X !
STU $13D,X !
STU $1F1,X !
LEAU $2DD,X !
STU $142,X !
* Inclusion du programme de capture
LDB #$7E ! Code
STB $136,X ! de JMP
LDU #CAPTUR ! Adresse du
STU $137,X ! programme
* Protection du vecteur de clavier
LDX $600A Lit vecteur clav
STX PROTCL Sauve vecteur
* Activation du nouveau clavier
PSHS CC !
ORCC #$50 Gèle interruptions
LDX #CLAV ! Init nouveau
STX $600A ! vecteur
PULS CC,PC !
PROTCL FDB $0000 Protection vecteur
OUT EQU *
* Restaure le vecteur clavier
PSHS CC !
ORCC #$50 Gèle interruptions
LDX PROTCL ! Restaure
STX $600A ! vecteur système
PULS CC,PC !
* Programme de copie de routine clavier
PCOPY LDX $600A Lit vecteur clav
LDX 1,X Lit ptr routine
LDU #CLAV Ptr buffer
LDY #813 Taille à copier
PCOPY0 LDB ,X+ !
STB ,U+ ! Copie
LEAY -1,Y ! routine clavier
BNE PCOPY0 !
RTS !
* Programme de capture
CAPTUR LDD <$6C ! Sauve les
STD KEY ! scancodes
BITA #$80 Teste pour suite
LBRA CLAV+$13A Suite routine
KEY FDB $0000 Capture scancode
* Buffer pour routine clavier
CLAV RMB 813 Buffer de copie
END