diff --git a/obj/modern.bmp.o b/obj/modern.bmp.o new file mode 100644 index 0000000..959c5ee Binary files /dev/null and b/obj/modern.bmp.o differ diff --git a/obj/periodiq.c.o b/obj/periodiq.c.o new file mode 100644 index 0000000..2160ebe Binary files /dev/null and b/obj/periodiq.c.o differ diff --git a/periodiq.bin b/periodiq.bin new file mode 100755 index 0000000..d8770a3 Binary files /dev/null and b/periodiq.bin differ diff --git a/periodiq.elf b/periodiq.elf new file mode 100755 index 0000000..a8bb85e Binary files /dev/null and b/periodiq.elf differ diff --git a/periodiq.g1a b/periodiq.g1a new file mode 100644 index 0000000..8f1f48f Binary files /dev/null and b/periodiq.g1a differ diff --git a/src/periodiq.c b/src/periodiq.c index 898fdb4..f2f806c 100644 --- a/src/periodiq.c +++ b/src/periodiq.c @@ -200,6 +200,7 @@ char *etat[9]={ extern Font modern; +#define floor(x) ((int)(x)) int main() { @@ -212,10 +213,10 @@ void Mini(char* chaine, int n ) // fonc defini le numero de la fonction { short j; - - drect(n*21+2, 56, n*21+20, 63, color_black); - dtext(n*21+strlen(chaine), 58, chaine); + + drect(n*21+2, 56, n*21+20, 63, color_invert); + //ML_display_vram(); } @@ -297,7 +298,7 @@ text_configure(&modern, color_black); case KEY_UP : y--; break; // case KEY_F4 : chang=tableauEleMini(chang); break; - //case KEY_F2 : chang=find(chang); break; + case KEY_F2 : chang=find(chang); break; // case KEY_F3 : calcul_mole(); break; case KEY_F6 : case KEY_EXE : chang=detailsElement(3); break; @@ -450,7 +451,7 @@ char i=0, y; int detailsElement(int a) { unsigned char buffer[50]; - int descente=0; + unsigned char page = 0; unsigned char i, j = 0; @@ -458,77 +459,96 @@ int detailsElement(int a) while (1) { - dclear(); - dprint(20, descente+4, "%s", elements[a].symbol); + dprint(20, 2, "%s", elements[a].symbol); + dprint(40, 2, "%s", elements[a].nom); + dprint((10-a/25), 4, "%d", a+1); + dline(0, 10, 128, 10, color_black); - dprint(40, descente+4, "%s", elements[a].nom); + dline(127, 22*page + 12, 127, 22*page + 42, color_black); - dprint((10-a/25), descente+6, "%d", a+1); - - dprint(1, descente+14, "masse molaire %d.%03d g/mol", elements[a].masse_mol/1000, elements[a].masse_mol % 1000); - - dprint(1, descente + 31, "propriete de base"); - - sprintf(buffer, "groupe : %d ", elements[a].groupe); - - if(elements[a].famille==6 || elements[a].famille==7) + switch(page) { - sprintf(buffer, "groupe inconnu"); - } + case 0 : + { + dprint(1, 12, "masse molaire %d.%03d g/mol", elements[a].masse_mol/1000, elements[a].masse_mol % 1000); - dtext(1, descente+41, buffer); + dprint(20, 22, "propriete de base"); - sprintf(buffer, "periode : %d ", elements[a].periode); - dtext(1, descente+51, buffer); + sprintf(buffer, "groupe : %d ", elements[a].groupe); - j=0; + if(elements[a].famille==6 || elements[a].famille==7) + { + sprintf(buffer, "groupe inconnu"); + } - for(i=0; i < 7; i++) - { - buffer[j++] = elements[a].config_electro[i] + '0'; - buffer[j++] = '-'; + dtext(1, 32, buffer); - } - j--; - buffer[j]=0; + sprintf(buffer, "periode : %d ", elements[a].periode); + dtext(1, 42, buffer); - sprintf(buffer, "couch electro %s", buffer); - dtext(1, descente+70, buffer); + j=0; - sprintf(buffer, "famille %s", family[elements[a].famille]); - dtext(1, descente+80, buffer); -/* - sprintf(buffer, "decouvert en %d", ajout[a].annee); - dtext(1, descente+90, buffer); + for(i = 0; i < strlen(elements[a].config_electro); i++) + { + if(elements[a].config_electro[i]>=10) + { + buffer[j++] = (int)elements[a].config_electro[i]/10 + '0'; + buffer[j++] = elements[a].config_electro[i]%10 + '0'; + } + else + { + buffer[j++] = elements[a].config_electro[i] + '0'; + } - sprintf(buffer, "etat a 293.15 K : %s", etat[ajout[a].etat]); - dtext(1, descente+100, buffer); + buffer[j++] = '-'; + } - dtext(20, descente+120, "reactivite :"); // + j--; - if (elements[a].electro_neg==0) - { - dtext(1, descente+130, "electro neg inconnue"); - } - else - { - sprintf(buffer, "electro neg : %f ", elements[a].electro_neg); - dtext(1, descente+130, buffer); - } + buffer[j]=0; - if (elements[a].valence>=0) - { - sprintf(buffer, "valence : %d ", elements[a].valence); - dtext(1, descente+140, buffer); - } - else - { - dtext(1, descente+140, "valence inconnue"); - } + sprintf(buffer, "couch electro %s", buffer); + dtext(1, 52, buffer); - Mini("ret", 5);*/ + break; + } + + case 1 : + { + dprint(1, 12, "famille %s", family[elements[a].famille]); + + dprint(1, 22, "etat a 293.15 K : %s", etat[elements[a].etat]); + + dtext(20, 32, "reactivite :"); + + if (elements[a].electro_neg == -1) + { + sprintf(buffer, "electro neg inconnue"); + } + else + { + sprintf(buffer, "electro neg : %d.%02d ", elements[a].electro_neg/100, elements[a].electro_neg%100); + } + + dtext(1, 42, buffer); + + if (elements[a].valence == -1) + { + sprintf(buffer, "valence inconnue "); + } + else + { + sprintf(buffer, "valence : %d", elements[a].valence); + } + dtext(1, 52, buffer); + + break; + } + } + + Mini("ret", 5); dupdate(); @@ -536,83 +556,109 @@ int detailsElement(int a) switch (key) { - case KEY_LEFT : a-=1, descente=0; break; - case KEY_RIGHT : a+=1, descente=0; break; - case KEY_DOWN : descente-=4; break; - case KEY_UP : descente+=4; break; + case KEY_LEFT : a-=1; break; + case KEY_RIGHT : a+=1; break; + case KEY_DOWN : page = (page <= 1 ? 1 : page + 1); break; + case KEY_UP : page = (page >=0 ? 0 : page - 1); break; case KEY_F6 : case KEY_EXE : case KEY_EXIT : return a; } a=(a<0 ? 117 : a>117 ? 0 : a); - descente=(descente>0 ? 0 : descente<-85 ? -85 : descente); // on fixe les limites de la page } } +unsigned char* input(unsigned char* ask, unsigned char size, unsigned char* char_allowed) +{ + unsigned char buffer[50]; + unsigned char j,i; + + j=0; + + while(1) + { + dclear(); + + dtext(1, 1, ask); + dtext(1, 20, buffer); + + dupdate(); + key=getkey(); + + for(i = 0; i < strlen(char_allowed); i++) + { + if(char_allowed[i]==key_char(key) && j < size) + { + buffer[j++] = key_char(key); + buffer[j]=0; + } + } + + if(key == KEY_DEL) + { + j--; + buffer[j]=0; + } + + if(key == KEY_EXE || key == KEY_EXIT) + { + return buffer; + } + } +} + int find(chang) -{/* +{ + char *numero=NULL; -char i=0, j; +char i=0, j=0; -const char buffer[50]; +unsigned char buffer[50]; -Bdisp_AllClr_DDVRAM(); +dclear(); dtext(10, 1, "Vous cherchez :"); dtext(10, 15, "1. numero de l'element"); dtext(10, 25, "2. masse molaire"); dtext(10, 35, "3. Symbole de l'element"); dtext(10, 45, "4. Nom de l'element"); +dupdate(); while (1) { - EI_init(); - - EI_manage_config(EI_SET_COLUMN, 1); - EI_manage_config(EI_SET_ROW, 3); - EI_manage_config(EI_SET_START_MODE, EI_NORMAL); - - GetKey(&key); + key=getkey(); switch(key) { - case 72 : - { - while(1) - { - Bdisp_AllClr_DDVRAM(); - dtext(1, 1, "Vous cherchez l'element n :"); + case KEY_1 : + { + numero=input("Element num :", 3, "0123456789"); - numero=EI_input_string(3, (const char*)"0123456789"); - // ça coupe ici - if (atoi(numero)>0 && atoi(numero)<119) // ça arrête le curseur - { - return atoi(numero)-1; - } - } + if (atoi(numero)>0 && atoi(numero)<119) + { + return atoi(numero)-1; } + break; + } - case 62 : - { - while(1) - { - Bdisp_AllClr_DDVRAM(); - dtext(1, 1, "Vous cherchez une masse"); - dtext(1, 7, "molaire de :"); - - numero=EI_input_string(3, (const char*)"0123456789"); + case KEY_2 : + { + while(1) + { + numero=input("Masse molaire de :", 3, "0123456789"); for (i=0;i<118;i++) { - if (atoi(numero)==floor(elements[i].masse_mol+0.5)) + if (atoi(numero)==floor(elements[i].masse_mol/1000+0.5)) { return i; } } } + break; } - - case 52 : +/* + case KEY_3 : { while(1) { @@ -638,7 +684,7 @@ while (1) } } - case 73 : + case KEY_4 : { while(1) { @@ -662,12 +708,12 @@ while (1) } } } - } + }*/ - case 47 : return chang; + case KEY_EXIT : return chang; } - }*/ + } } void calcul_mole()