INCLUDE EQMON Appel des equates SECT GETCH EXTERN BRASHI TTL MONITEUR MO5: LECTURE DU CLAVIER, VERSION 6809 * ***** VERSION HARD MO5 * ******************************************************************************* * * * Decodage du clavier avec autorepeat des touches. SHIFT appelle le code * * superieur de la touche. CONTROL force le bit 6 a zero. BASIC renvoie le * * code numerique avec bit 7 force a 1. CONTROL, BASIC ou SHIFT seuls sont * * ignores ainsi qu'une combinaison de ces touches. Le caractere se trouve * * dans B. B = 0 signifie qu'aucune touche n'est enfoncee. * * KEYTST est un test rapide des touches qui retourne avec : * * Z=1 B=$34 (PAS DE TOUCHE ENFONCEE) * * Z=0 B=NUMERO PHYSIOUE DE TOUCHE (UNE TOUCHE ENFONCEE) * * Les registres utilises sont STATUS : (Bit7 = maj/min, Bit2 = flag auto- * * repeat; CMPTKB = compteur it clavier; KEY = lecture precedente ( a zero * * si aucune touche n'a ete enfoncee ); * * * ******************************************************************************* * ***** CONTROLE RAPIDE DES TOUCHES ET DEMATRICAGE DU CLAVIER * INTERN KEYTST * KEYTST EQU * LDD BLOCZ STD TEMP LDB #%01110010 KBSCAN EQU * STB PRB-PRA,U LDA PRB-PRA,U BMI NXTKEY LDA #1 CMPB #%01110010 BEQ SAVFLG LSLA CMPB #%01101010 BEQ SAVFLG LSLA CMPB #%01110000 BNE EXREAD SAVFLG EQU * STA TEMP NXTKEY EQU * INC TEMP+1 SUBB #2 BPL KBSCAN EXREAD EQU * LDD TEMP STD 3,S CMPB #$3A RTS * ***** NOYAU DE LA ROUTINE * INTERN GETCH GETCH EQU * TST SS3GET BNE MINACC CALL KTST CONFRM EQU * PSHS D LDX #625 WAIT EQU * LEAX -1,X BNE WAIT CALL KTST CMPD ,S++ BNE CONFRM CMPB #$3A BEQ EXITER CMPB KEY BNE NEWKEY LDA CMPTKB CMPA LATCLV BLO EXIT01 LDA #02 BITA STATUS BNE EXIT01 JSR BRASHI SKIP2 NEWKEY EQU * CLR CMPTKB STB KEY CALL BIIP LSR TEMP BCC CONTRL ORB #$80 BRA EXITOK MINACC EQU * LDB SS3GET CLRA BRA STASS3 EXITER EQU * CLR KEY EXIT01 EQU * CLRB BRA EXIT CONTRL EQU * LDX CHRPTR LDB B,X LSR TEMP BCC SHIFT ANDB #$BF BRA CTRLVE SHIFT EQU * LSR TEMP BCC ONEKEY CMPB #SP BLO EXITOK BNE NONINV LDA #$80 EORA STATUS STA STATUS CLRB BRA EXITOK NONINV EQU * CMPB #$2F BGT SUPA2F ORB #$10 BRA EXITOK SUPA2F EQU * CMPB #$39 BGT SUPA39 ANDB #$EF BRA TSTSS2 SUPA39 EQU * CMPB #$40 BNE EXITOK LDB #$5E BRA TSTSS2 ONEKEY EQU * CMPB #$41 BLO TSTSS2 LDA STATUS BPL EXITOK ADDB #$20 TSTSS2 EQU * TST SS2GET BEQ CTRLVE LDA #$0A NXTACC EQU * DECA BEQ EXITOK LEAX -3,X CMPB ,X BNE NXTACC LDD 1,X STASS3 EQU * STA SS3GET EXITOK EQU * CLR SS2GET EXIT EQU * STB 4,S RTS CTRLVE EQU * CMPB #SS2 BNE EXITOK INC SS2GET BRA EXIT * ***** TABLE DE CORRESPONDANCE MINUSCULES ACCENTUEES OU ACCENTS * FCB 0,0,0 FCB $36,$61,$4B FCB $37,$6F,$4B FCB $38,$75,$4B FCB $39,$6F,$4B INTERN TABSS2 TABSS2 EQU * FCB $63,$00,$4B FCB $20,$00,$41 FCB $27,$00,$42 FCB $5E,$00,$43 FCB $22,$00,$48