void waitesc(void) { long x=0; while(!(_rowread(ESC)) { x++; } }
car je crois bien que le compilo vire ta ligne si elle est vide
ex :
for(x=0 ; x<15000; x++) { }
sera viré car elle n'a pas d'interet en prog.
void waitesc(void) { long x=0; while(!(_rowread(ESC)) { x++; } }
for(x=0 ; x<15000; x++) { }
for (;;) { BEGIN_KEYTEST if (_keytest_optimized (RR_ESC) break; END_KEYTEST }
Pim89 a écrit :
je crois bien que le compilo vire ta ligne si elle est vide
ex :
for(x=0 ; x<15000; x++) { }
sera viré car elle n'a pas d'interet en prog.
//librairie pour la lecture du clavier en bas niveau
//pour ne pas facher, celle ci est disponible ne _nostub et en kernel
//il suffi d'avoir defini ou pas USE_KERNEL le reste se fait totomatiquement
//publié sous GPLv2
#ifndef __H_LOWKBLID__
#define __H_LOWKBLID__
#ifdef USE_KERNEL
#define low_getmatrix lowkblib__0001
extern unsigned char low_getmatrix();
#define low_ngetchx lowkblib__0002
extern unsigned char low_ngetchx();
#else
#define XBOTH(a) (CALCULATOR?X_92P##a:X_89##a)
void low_getmatrix(char *matrix)
{
register short loop;
for(loop=1;loop!=0x400;loop<<=1)//a chaque passage on shifte jusquà 1<<10
{
register short __r;
*(short*)0x600018=(short)(~loop);
__asm__ volatile("move.w #24,%0n0:nt dbra %0,0b":"=g"(__r)::"memory");//waits a while
*matrix++=~(*(unsigned char*)0x60001b);
}
}
#define XROWCOL(a,b) (kbmat##a&b)
//touches 92plus
#define X_92P_KEY_ENTER (XROWCOL(9,0x2)||XROWCOL(6,0x40))
#define X_92P_KEY_DOWN XROWCOL(0,0x80)
#define X_92P_KEY_RIGHT XROWCOL(0,0x40)
#define X_92P_KEY_UP XROWCOL(0,0x20)
#define X_92P_KEY_LEFT XROWCOL(0,0x10)
#define X_92P_KEY_HAND XROWCOL(0,0x8)
#define X_92P_KEY_SHIFT XROWCOL(0,0x4)
#define X_92P_KEY_DIAMOND XROWCOL(0,0x2)
#define X_92P_KEY_2ND XROWCOL(0,0x1)
#define X_92P_KEY_PAD3 XROWCOL(1,0x80)
#define X_92P_KEY_PAD2 XROWCOL(1,0x40)
#define X_92P_KEY_PAD1 XROWCOL(1,0x20)
#define X_92P_KEY_F8 XROWCOL(1,0x10)
#define X_92P_KEY_ALPHAW XROWCOL(1,0x8)
#define X_92P_KEY_ALPHAS XROWCOL(1,0x4)
#define X_92P_KEY_ALPHAZ XROWCOL(1,0x2)
#define X_92P_KEY_PAD6 XROWCOL(2,0x80)
#define X_92P_KEY_PAD5 XROWCOL(2,0x40)
#define X_92P_KEY_PAD4 XROWCOL(2,0x20)
#define X_92P_KEY_F3 XROWCOL(2,0x10)
#define X_92P_KEY_ALPHAE XROWCOL(2,0x8)
#define X_92P_KEY_ALPHAD XROWCOL(2,0x4)
#define X_92P_KEY_ALPHAX XROWCOL(2,0x2)
#define X_92P_KEY_PAD9 XROWCOL(3,0x80)
#define X_92P_KEY_PAD8 XROWCOL(3,0x40)
#define X_92P_KEY_PAD7 XROWCOL(3,0x20)
#define X_92P_KEY_F7 XROWCOL(3,0x10)
#define X_92P_KEY_ALPHAR XROWCOL(3,0x8)
#define X_92P_KEY_ALPHAF XROWCOL(3,0x4)
#define X_92P_KEY_ALPHAC XROWCOL(3,0x2)
#define X_92P_KEY_STO XROWCOL(3,0x1)
#define X_92P_KEY_VIR XROWCOL(4,0x80)
#define X_92P_KEY_OPAR XROWCOL(4,0x40)
#define X_92P_KEY_CPAR XROWCOL(4,0x20)
#define X_92P_KEY_F2 XROWCOL(4,0x10)
#define X_92P_KEY_ALPHAT XROWCOL(4,0x8)
#define X_92P_KEY_ALPHAG XROWCOL(4,0x4)
#define X_92P_KEY_ALPHAV XROWCOL(4,0x2)
#define X_92P_KEY_SPACE XROWCOL(4,0x1)
#define X_92P_KEY_TAN XROWCOL(5,0x80)
#define X_92P_KEY_COS XROWCOL(5,0x40)
#define X_92P_KEY_SIN XROWCOL(5,0x20)
#define X_92P_KEY_F6 XROWCOL(5,0x10)
#define X_92P_KEY_ALPHAY XROWCOL(5,0x8)
#define X_92P_KEY_ALPHAH XROWCOL(5,0x4)
#define X_92P_KEY_ALPHAB XROWCOL(5,0x2)
#define X_92P_KEY_DIVIDE XROWCOL(5,0x1)
#define X_92P_KEY_ALPHAP XROWCOL(6,0x80)
#define X_92P_KEY_ENTER2 XROWCOL(6,0x40)
#define X_92P_KEY_LN XROWCOL(6,0x20)
#define X_92P_KEY_F1 XROWCOL(6,0x10)
#define X_92P_KEY_ALPHAU XROWCOL(6,0x8)
#define X_92P_KEY_ALPHAJ XROWCOL(6,0x4)
#define X_92P_KEY_ALPHAN XROWCOL(6,0x2)
#define X_92P_KEY_SQR XROWCOL(6,0x1)
#define X_92P_KEY_MUL XROWCOL(7,0x80)
#define X_92P_KEY_APPS XROWCOL(7,0x40)
#define X_92P_KEY_CLEAR XROWCOL(7,0x20)
#define X_92P_KEY_F5 XROWCOL(7,0x10)
#define X_92P_KEY_ALPHAI XROWCOL(7,0x8)
#define X_92P_KEY_ALPHAK XROWCOL(7,0x4)
#define X_92P_KEY_ALPHAM XROWCOL(7,0x2)
#define X_92P_KEY_EQUAL XROWCOL(7,0x1)
#define X_92P_KEY_ESC XROWCOL(8,0x40)
#define X_92P_KEY_MODE XROWCOL(8,0x20)
#define X_92P_KEY_ADD XROWCOL(8,0x10)
#define X_92P_KEY_ALPHAO XROWCOL(8,0x8)
#define X_92P_KEY_ALPHAL XROWCOL(8,0x4)
#define X_92P_KEY_THETA XROWCOL(8,0x2)
#define X_92P_KEY_BACK XROWCOL(8,0x1)
#define X_92P_KEY_NEGAT XROWCOL(9,0x80)
#define X_92P_KEY_DOT XROWCOL(9,0x40)
#define X_92P_KEY_PAD0 XROWCOL(9,0x20)
#define X_92P_KEY_F4 XROWCOL(9,0x10)
#define X_92P_KEY_ALPHAQ XROWCOL(9,0x8)
#define X_92P_KEY_ALPHAA XROWCOL(9,0x4)
#define X_92P_KEY_ENTER1 XROWCOL(9,0x2)
#define X_92P_KEY_SUB XROWCOL(9,0x1)
//touches 89
#define X_89_KEY_ALPHA XROWCOL(0,0x80)
#define X_89_KEY_DIAMOND XROWCOL(0,0x40)
#define X_89_KEY_SHIFT XROWCOL(0,0x20)
#define X_89_KEY_2ND XROWCOL(0,0x10)
#define X_89_KEY_RIGHT XROWCOL(0,0x8)
#define X_89_KEY_DOWN XROWCOL(0,0x4)
#define X_89_KEY_LEFT XROWCOL(0,0x2)
#define X_89_KEY_UP XROWCOL(0,0x1)
#define X_89_KEY_F5 XROWCOL(1,0x80)
#define X_89_KEY_CLEAR XROWCOL(1,0x40)
#define X_89_KEY_SQR XROWCOL(1,0x20)
#define X_89_KEY_DIVIDE XROWCOL(1,0x10)
#define X_89_KEY_MUL XROWCOL(1,0x8)
#define X_89_KEY_SUB XROWCOL(1,0x4)
#define X_89_KEY_ADD XROWCOL(1,0x2)
#define X_89_KEY_ENTER XROWCOL(1,0x1)
#define X_89_KEY_F4 XROWCOL(2,0x80)
#define X_89_KEY_BACK XROWCOL(2,0x40)
#define X_89_KEY_T XROWCOL(2,0x20)
#define X_89_KEY_VIR XROWCOL(2,0x10)
#define X_89_KEY_PAD9 XROWCOL(2,0x8)
#define X_89_KEY_PAD6 XROWCOL(2,0x4)
#define X_89_KEY_PAD3 XROWCOL(2,0x2)
#define X_89_KEY_NEGAT XROWCOL(2,0x1)
#define X_89_KEY_F3 XROWCOL(3,0x80)
#define X_89_KEY_CATALOG XROWCOL(3,0x40)
#define X_89_KEY_Z XROWCOL(3,0x20)
#define X_89_KEY_CPAR XROWCOL(3,0x10)
#define X_89_KEY_PAD8 XROWCOL(3,0x8)
#define X_89_KEY_PAD5 XROWCOL(3,0x4)
#define X_89_KEY_PAD2 XROWCOL(3,0x2)
#define X_89_KEY_DOT XROWCOL(3,0x1)
#define X_89_KEY_F2 XROWCOL(4,0x80)
#define X_89_KEY_MODE XROWCOL(4,0x40)
#define X_89_KEY_Y XROWCOL(4,0x20)
#define X_89_KEY_OPAR XROWCOL(4,0x10)
#define X_89_KEY_PAD7 XROWCOL(4,0x8)
#define X_89_KEY_PAD4 XROWCOL(4,0x4)
#define X_89_KEY_PAD1 XROWCOL(4,0x2)
#define X_89_KEY_PAD0 XROWCOL(4,0x1)
#define X_89_KEY_F1 XROWCOL(5,0x80)
#define X_89_KEY_HOME XROWCOL(5,0x40)
#define X_89_KEY_X XROWCOL(5,0x20)
#define X_89_KEY_EQUAL XROWCOL(5,0x10)
#define X_89_KEY_VERT XROWCOL(5,0x8)
#define X_89_KEY_EE XROWCOL(5,0x4)
#define X_89_KEY_STO XROWCOL(5,0x2)
#define X_89_KEY_APPS XROWCOL(5,0x1)
#define X_89_KEY_ESC XROWCOL(6,0x1)
unsigned char low_ngetchx()
{
unsigned char key=0;
char kbmat[10],kbmat0,kbmat1,kbmat2,kbmat3,kbmat4,kbmat5,kbmat6,kbmat7,kbmat8,kbmat9;
low_getmatrix(kbmat);
kbmat0=kbmat[0];
kbmat1=kbmat[1];
kbmat2=kbmat[2];
kbmat3=kbmat[3];
kbmat4=kbmat[4];
kbmat5=kbmat[5];
kbmat6=kbmat[6];
kbmat7=kbmat[7];
kbmat8=kbmat[8];
kbmat9=kbmat[9];
if(CALCULATOR)
{
if(X_92P_KEY_2ND)
{
if(X_92P_KEY_ALPHAQ)key='?';else
if(X_92P_KEY_ALPHAW)key='!';else
if(X_92P_KEY_ALPHAE)key=233;else
if(X_92P_KEY_ALPHAR)key='@';else
if(X_92P_KEY_ALPHAT)key='#';else
if(X_92P_KEY_ALPHAY)key=18;else
if(X_92P_KEY_ALPHAU)key=249;else
if(X_92P_KEY_ALPHAI)key=151;else
if(X_92P_KEY_ALPHAO)key=244;else
if(X_92P_KEY_ALPHAP)key='_';else
if(X_92P_KEY_ALPHAH)key='&';else
if(X_92P_KEY_ALPHAJ)key=190;else
if(X_92P_KEY_ALPHAK)key='|';else
if(X_92P_KEY_ALPHAL)key='"';
}else
if(X_92P_KEY_ALPHAA)key='a';else
if(X_92P_KEY_ALPHAB)key='b';else
if(X_92P_KEY_ALPHAC)key='c';else
if(X_92P_KEY_ALPHAD)key='d';else
if(X_92P_KEY_ALPHAE)key='e';else
if(X_92P_KEY_ALPHAF)key='f';else
if(X_92P_KEY_ALPHAG)key='g';else
if(X_92P_KEY_ALPHAH)key='h';else
if(X_92P_KEY_ALPHAI)key='i';else
if(X_92P_KEY_ALPHAJ)key='j';else
if(X_92P_KEY_ALPHAK)key='k';else
if(X_92P_KEY_ALPHAL)key='l';else
if(X_92P_KEY_ALPHAM)key='m';else
if(X_92P_KEY_ALPHAN)key='n';else
if(X_92P_KEY_ALPHAO)key='o';else
if(X_92P_KEY_ALPHAP)key='p';else
if(X_92P_KEY_ALPHAQ)key='q';else
if(X_92P_KEY_ALPHAR)key='r';else
if(X_92P_KEY_ALPHAS)key='s';else
if(X_92P_KEY_ALPHAT)key='t';else
if(X_92P_KEY_ALPHAU)key='u';else
if(X_92P_KEY_ALPHAV)key='v';else
if(X_92P_KEY_ALPHAW)key='w';else
if(X_92P_KEY_ALPHAX)key='x';else
if(X_92P_KEY_ALPHAY)key='y';else
if(X_92P_KEY_ALPHAZ)key='z';else
if(X_92P_KEY_SPACE)key=' ';
}
else
{
if(X_89_KEY_ALPHA)
{
if(X_89_KEY_EQUAL)key='a';else
if(X_89_KEY_OPAR)key='b';else
if(X_89_KEY_CPAR)key='c';else
if(X_89_KEY_VIR)key='d';else
if(X_89_KEY_DIVIDE)key='e';else
if(X_89_KEY_VERT)key='f';else
if(X_89_KEY_PAD7)key='g';else
if(X_89_KEY_PAD8)key='h';else
if(X_89_KEY_PAD9)key='i';else
if(X_89_KEY_MUL)key='j';else
if(X_89_KEY_EE)key='k';else
if(X_89_KEY_PAD4)key='l';else
if(X_89_KEY_PAD5)key='m';else
if(X_89_KEY_PAD6)key='n';else
if(X_89_KEY_SUB)key='o';else
if(X_89_KEY_STO)key='p';else
if(X_89_KEY_PAD1)key='q';else
if(X_89_KEY_PAD2)key='r';else
if(X_89_KEY_PAD3)key='s';else
if(X_89_KEY_ADD)key='u';else
if(X_89_KEY_PAD0)key='v';else
if(X_89_KEY_DOT)key='w';else
if(X_89_KEY_NEGAT)key=' ';
}else
if(X_89_KEY_T)key='t';else
if(X_89_KEY_X)key='x';else
if(X_89_KEY_Y)key='y';else
if(X_89_KEY_Z)key='z';
}
if(CALCULATOR||(!X_89_KEY_ALPHA))
{
if(XBOTH(_KEY_2ND))
{
if(XBOTH(_KEY_OPAR))key='{';else
if(XBOTH(_KEY_CPAR))key='}';else
if(XBOTH(_KEY_MUL))key=168;else
if(XBOTH(_KEY_VIR))key='[';else
if(XBOTH(_KEY_DIVIDE))key=']';else
if(XBOTH(_KEY_DOT))key='>';else
if(XBOTH(_KEY_PAD0))key='<';else
if(XBOTH(_KEY_SQR))key=140;
}else
if(XBOTH(_KEY_DOT))key='.';else
if(XBOTH(_KEY_PAD0))key='0';else
if(XBOTH(_KEY_PAD1))key='1';else
if(XBOTH(_KEY_PAD2))key='2';else
if(XBOTH(_KEY_PAD3))key='3';else
if(XBOTH(_KEY_PAD4))key='4';else
if(XBOTH(_KEY_PAD5))key='5';else
if(XBOTH(_KEY_PAD6))key='6';else
if(XBOTH(_KEY_PAD7))key='7';else
if(XBOTH(_KEY_PAD8))key='8';else
if(XBOTH(_KEY_PAD9))key='9';else
if(XBOTH(_KEY_OPAR))key='(';else
if(XBOTH(_KEY_CPAR))key=')';else
if(XBOTH(_KEY_EQUAL))key='=';else
if(XBOTH(_KEY_VIR))key=',';else
if(XBOTH(_KEY_DIVIDE))key='/';else
if(XBOTH(_KEY_MUL))key='*';else
if(XBOTH(_KEY_ADD))key='+';else
if(XBOTH(_KEY_SUB))key='-';
}
if(XBOTH(_KEY_ENTER))key='n';
//majuscules
if(XBOTH(_KEY_SHIFT)&&key>='a'&&key<='z')key+='A'-'a';
return key;
}
#endif
#endif
stylobil a écrit :
ah ouais on est obligé d'utiliser un goto ? bah mince alors...
et sinon on peut utiliser directement _rowread(ESC) ? si oui ca change quoi ?