MySilicium

Forum de discussions sur les vieux micros, pockets & consoles
Cliquez ici pour rejoindre le CHAT irc (canal #silicium)
Nous sommes actuellement le Jeu Sep 09, 2010 12:57 pm

Heures au format UTC + 1 heure [ Heure d’été ]




Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 
Auteur Message
 Sujet du message: Tracé de fonctions en C sur G850v
MessagePublié: Lun Avr 26, 2010 15:41 pm 
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Avatar de l’utilisateur

Inscrit le: Dim Juin 21, 2009 22:13 pm
Messages: 113
A quelque-chose malheur est bon, j'ai été récemment hospitalisé pour cause de diabète. Pour m'occuper un peu j'avais pris mon 1261 et mon G850v.

Du coup, entre deux visites des charmantes infirmières, j'ai commencé un petit traceur de fonctions en C sur le G850v (photo pourrie ci-dessous)
Image

Je posterai le code (moche et bourré de variables globales) un peu plus tard.
Mais déjà il peut tracer 2 fonctions, on passe de l'une à l'autre avec les touches droites et gauches, pour obtenir une valeur y on tape "x" suivi de la valeur x puis "Entrée". Le zoom n'est pas implémenté.

Les fonctions et les limites de tracé sont en dur dans le programme (je n'ai pas trouvé de fonction "eval")

_________________
Ma gallerie photo de mes machines (dernières màj : Vendredi 26 mars 2010 - 01:40


Haut
 Profil  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Lun Avr 26, 2010 17:15 pm 
Fonctionne à 300 bauds
Fonctionne à 300 bauds

Inscrit le: Jeu Sep 25, 2008 6:40 am
Messages: 175
Tu dois pouvoir coder la fonction eval toi même avec du courage. J'avais fait ca en Turbo-Pascal sous MS-DOS il y a 25 ans de cela et je n'avais pas plus de mémoire qu'un 850V.
Ecrire un parser/evaluateur de fonctions mathématiques représente un peu de travail ceci dit surtout si on n'utilise pas un outil de compilation de grammaire.

Si ca se trouve, j'ai le code C qque part.

_________________
Pas mal de HP de la 55 à la 48, 97.... Casio 702p, 603p, 890P, AI-1000 et PB-2000C.
Je cherche les modules Pascal et Prolog pour la PB-2000C


Haut
 Profil  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Lun Avr 26, 2010 19:31 pm 
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Avatar de l’utilisateur

Inscrit le: Mer Juin 06, 2007 19:28 pm
Messages: 3664
Localisation: Indre et loire
bonne continuation
et n'oublie pas de mettre ton code

tu peux dans un premier temps faire juste l'évaluateur d'expressions préfixées ça simplifie le taf sur le parser
ou en RPN pour faire plus standard

_________________
Moi j'aime Pô les CASIO !!!!


Haut
 Profil Envoyer un e-mail  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Mar Avr 27, 2010 22:23 pm 
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Avatar de l’utilisateur

Inscrit le: Dim Juin 21, 2009 22:13 pm
Messages: 113
Allez, voici le code, les dix Saint-Jean te l'amènent :

D'abord la petite lib ("mylib.c") :
Code:
1 /* INKEY    ASKEY
2    WAITKEY  WAITASC
3 */
10 #define INKEY call((int)ink,0)
11 #define ASKEY call((int)ask,0)
12 #define WAITKEY call((int)waitk,0)
13 #define WAITASC call((int)waita,0)
30  char *ink="\xCD\x53\xBE\x6F\x26\x00\xC9";
31  char *ask="\xCD\x53\xBE\xCD\x56\xBE\x6F\x26\x00\xC9";
32  char *waitk="\xCD\xFD\xBC\x6F\x26\x00\xC9";
33  char *waita="\xCD\xFD\xBC\xCD\x56\xBE\x6F\x26\x00\xC9";
39 testlib(){
40  int b=0,a=0;
50  do {
60 /*b=INKEY;a=ASKEY;*/
61   b=WAITKEY;a=WAITASC;
70   printf("%d\t%d\n",b,a);
80  } while (1);
90 }
100 gpxy(int x,int y, char *h){gcursor(x,y);gprint(h);}


Et le code proprement dit (graph.c) :
Code:
10#include"mylib.h"
20 double XA,XB,YA,YB,S,X1,X2,Y1,Y2,XT,TX,YT,TY;
30 double y0,y1,a,b,c,x,mx1,my1,mx2,my2,ax1,ay1,ax2,ay2;int fc,w;
40 /*
50 *
60 *
70 */
80  double f0(double x) { return(sin(x));}
90  double f1(double x) { return(cos(x));}
100 /*
110 *
120 *
130 */
140 double cfc(int n,double x){
150  if (n==0) return(f0(x)); else return(f1(x));
160 }
170 double cx(double x){return(X1+((x-XA)/TX)*XT);}
180 double cy(double y){return(Y1+YT-(((y-YA)/TY)*YT));}
190 main(){
200 /*
210 *
220 *
230 *
240 *
250 */
260 XA=-360; /* xmin */
270 XB= 360; /* xmax */
280 YA=  -1; /* ymin */
290 YB=   1; /* ymax */
300 S =   5; /* pas  */
310 X1=  48; /* x1win*/
320 Y1=   8; /* y1win*/
330 X2= 143; /* x2win*/
340 Y2=  47; /* y2win*/
350 XT=X2-X1;/* lgwin*/
360 YT=Y2-Y1;/* htwin*/
370 TX=XB-XA;/* lggfx*/
380 TY=YB-YA;/* htgfx*/
390 /*
400 *
410 *
420 *
430 */
440 dessine();
450 gotoxy(0,0);w=0;
460 while(w!=80){w=WAITKEY;
470  if(w==18){
480   gotoxy(0,0);printf("                        ");
490   gotoxy(0,0);printf("x=");scanf("%f",&x);
500   gotoxy(9,0);printf("y=%f\t\t",cfc(fc,x));
510  }
520  if(w==33){
530   fc=0;
540   affmenu();
550  }
560  if(w==34){
570   fc=1;
580   affmenu();
590  }
600 }  /* while */
610 } /* main */
620 dessine(){
630  clrscr();
640  line(X1,Y1,X2,Y2,2,65535,1); /* CADRE */
650  line(cx(0),cy(YA),cx(0),cy(YB),0,65535,0); /* AXE Y */
660  line(cx(XA),cy(0),cx(XB),cy(0),0,65535,0); /* AXE X */
670  a=f0(XA),b=f1(XA);
680  c=XA;
690  for(x=XA;x<=XB;x+=S){
700   y0=f0(x);
710   y1=f1(x);
720   line(cx(c),cy(a),cx(x),cy(y0),0,65535,0);
730   line(cx(c),cy(b),cx(x),cy(y1),0,21845,0);
740   c=x;a=y0;b=y1;
750  }
760 fc=0;affmenu();
770}
780 affmenu(){gotoxy(0,1);printf("f%d\n<> f0/f1\nM Marque\nZ Zoom\nX Resol.",fc);}

_________________
Ma gallerie photo de mes machines (dernières màj : Vendredi 26 mars 2010 - 01:40


Haut
 Profil  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Mar Avr 27, 2010 22:37 pm 
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Avatar de l’utilisateur

Inscrit le: Mer Juin 06, 2007 19:28 pm
Messages: 3664
Localisation: Indre et loire
sais tu que ou peut renuméroter les ligne en C (RENUM)
pas besoin donc de réserver de la place

_________________
Moi j'aime Pô les CASIO !!!!


Haut
 Profil Envoyer un e-mail  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Mar Avr 27, 2010 23:49 pm 
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Avatar de l’utilisateur

Inscrit le: Dim Juin 21, 2009 22:13 pm
Messages: 113
Oui oui, mais j'aime bien avoir "de la place".

Mais déjà que je ne suis pas trop C :lol: , j'avais commencé le programme en BASIC mais ça devenait bordélique et je voulais pouvoir accéder à des fonctions et proc nommées plutôt que d'initialiser des variables et faire des GOSUB. D'où aussi toutes les variables globales.

_________________
Ma gallerie photo de mes machines (dernières màj : Vendredi 26 mars 2010 - 01:40


Haut
 Profil  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Mer Juil 28, 2010 12:21 pm 
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Avatar de l’utilisateur

Inscrit le: Mer Juin 06, 2007 19:28 pm
Messages: 3664
Localisation: Indre et loire
une fonction en C
Code:
unsigned int key(unsigned char* code,unsigned char* ascii){
     unsigned int touche;
     touche=call((int)"\xCD\x53\xBE\x6F\xCD\x56\xBE\x67\xC9",0);
     *code=touche,*ascii=touche>>8;
     return touche?1:0;
}

qui retourne le code touche et le code ascii et en plus, et tout cela pour le même prix, si il y a eu pression d'une touche

_________________
Moi j'aime Pô les CASIO !!!!


Haut
 Profil Envoyer un e-mail  
 
 Sujet du message: Re: Tracé de fonctions en C sur G850v
MessagePublié: Mer Juil 28, 2010 13:26 pm 
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Avatar de l’utilisateur

Inscrit le: Jeu Mar 26, 2009 14:07 pm
Messages: 1401
Localisation: Clamart
Salut,
Je passe un peu de temps dans les hopitaux en ce moment (pas pour moi hélas, je préfèrerais), les pockets sont vraiment une bénédiction dans ces moments-là.
Beau boulot pour un non-C !

_________________
Recherche : PB-80 en boite avec doc
Site sur les Pockets Casio


Haut
 Profil Envoyer un e-mail  
 
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 8 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Marge et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Rechercher pour:
Sauter vers:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduction réalisée par Maël Soucaze © 2009 phpBB.fr