LEX 'ONKEYLEX' * (c) Copyright PPC Paris 1986 ID #E1 MSG 0 POLL 0 ENTRY onkey CHAR #F ENTRY nokey CHAR #F KEY 'CURSDOWN' TOKEN 31 KEY 'CURSKEYS' TOKEN 32 KEYSCN EQU #00D4D DÅtermine quelles sont * les touches sur lesquelles * on a appuyÅ depuis le * dernier appel de cette * routine. Est executÅe * chaque fois que l'on appui * sur une touche. C'est * cette routine qui est * responsable de la * dÅfinition * de la touche ATTN et du * couple de touches (ON,/). * C'est donc elle qui, * Åventuellement appelle la * routine de Memory Lost. POPBUF EQU #010EE Retire une touche du * buffer de touches si carry * est dÅsarmÅ FINDA EQU #023E3 Saut dans une table, * suivant la valeur du code * en A(B) FNRTN2 EQU #0F219 Exprime le rÅsultat placÅ * en C(W) puis retourne È * l'interprÅteur BASIC ENDTXT NIBHEX 00 Fonction CURSDOWN, sans * paramÉtres onkey C=0 P C=C+1 P INTOFF L'instruction qui suit ne * peut Átre interrompue OUT=CS OUT=1 (Cf article de J-J * MOREAU sur les registres * IN et OUT, JPC No26, A=IN juin 1985). Lit IN en * A(3-0). ASL A Ne garde que la partie * utile de IN. A=A+A A . A=A+A A . D=0 W D(W)=rÅsultat (Nul pour * l'instant) ?A#0 A GOYES onky17 GOTO onky20 Sort si aucune touche de * la rangÅe infÅrieure n'est * enfoncÅe onky17 B=A A B(A)=copie de A(A) P= 7 La touche #47 est-elle * enfoncÅe ? GOSUB onky10 . GONC onky50 Non. On continue le test P= 14 Oui, exprimez le rÅsultat * (1) GOTO onky80 . onky50 P= 8 Touche #48 GOSUB onky10 GONC onky60 P= 14 RÅsultat=2 GOTO onky82 onky60 P= 10 Touche #50 GOSUB onky10 GONC onky70 P= 14 RÅsultat 3 GOTO onky84 onky70 P= 11 Touche #51 GOSUB onky10 GONC onky20 P= 14 RÅsultat 4 GOTO onky86 onky86 D=D+1 P Routine permettant * d'exprimer le rÅsultat onky84 D=D+1 P . onky82 D=D+1 P . onky80 D=D+1 P . onky20 P= 0 . C=0 P Remet OUT(0) È sa valeur * initiale (#F) C=C-1 P . OUT=CS . INTON RÅactive les interruptions C=D W RÅsultat en C(W) AD0EX D0 en A(A) GOVLNG FNRTN2 onky10 A=B A Cette routine arme carry * si la touche est enfoncÅe, * la dÅsarme sinon onky99 A=A+A A P=P+1 GONC onky99 A=A+A A RTN NIBHEX 00 Fonction CURSKEYS (Aucun * paramÉtre) nokey CD0EX Sauvegarde D0 et D1 R2=C CD1EX R0=C GOSBVL KEYSCN RÅactualise le buffer de * touches GOSBVL POPBUF D=0 W RÅsultat=0 GOC noky20 Aucune touche dans le * buffer A=B B Exprime le rÅsultat * correspondant È chaque * touche GOSBVL FINDA CON(2) 47 REL(3) nokyl CON(2) 48 REL(3) nokyr CON(2) 50 REL(3) nokyu CON(2) 51 REL(3) nokyd CON(2) 162 REL(3) nokyt CON(2) 163 REL(3) nokyb CON(2) 0 Fin de la table de saut noky20 C=D W Exprime le rÅsultat et * retourne au BASIC A=R0 D1=A A=R2 GOVLNG FNRTN2 noky36 D=D+1 P Cf onky40 noky38 D=D+1 P noky40 D=D+1 P noky42 D=D+1 P noky44 D=D+1 P noky46 D=D+1 P P= 0 GOTO noky20 nokyl P= 14 GOTO noky46 nokyr P= 14 GOTO noky44 nokyu P= 14 GOTO noky42 nokyd P= 14 GOTO noky40 nokyt P= 14 GOTO noky38 nokyb P= 14 GOTO noky36 END