1

Hello, maintenant que c'est les vacances, je vais pouvoir commencer a programmer un peux plus sérieusement. Or, je pense que j'aurais plein de questions donc je crée mon topic wink

1ère question :

Pour créer une nouvelle fonction, j'utilise :

void newfunc ( short x, short y, ..........)
{
...........
}

Maintenant, imaginons que je veule faire une fonction, mais sans paramètre,
comment je dois déclarer cette dernière ?

Car
void newfunc(void)
{
...........
}

&

void newfunc
{
...........
}

ne marche pas.
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

2

void newfunc(void)
{
...........
}

devrait marcher...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

Suis je bête :

void newfunc()
{
.....
}

embarrassed
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

4

le void n'est pas absolument nécessaire, mais il est plus précis de le mettre...
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

Puis je comprendre pourquoi ceci ne marche pas ?

SCR_RECT Screen = {{0, 0, 159, 99}};
DrawClipRect (MakeWinRect (0,8,159,99),Screen,A_NORMAL||B_DOUBLE);

Screen est mal définit ?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

6

squale92 : c'est pas tout à fait pareil. Sans le void le compilateur considère que la fonction peut prendre un nombre d'arguments quelconque : zéro ou 10 ou 150 ...
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

7

oué, c pr ça que je dis qu'il est plus précis de le mettre, et c'est aussi pr ça que je dis qu'il n'est pas absolument nécessaire de le mettre smile
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

Quelqu'un peut répondre, je trouve ça vraiment bizarre.
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

9

WIN_RECT *MakeWinRect (short x0, short y0, short x1, short y1);


Builds a structure for representing rectangular area.

MakeWinRect accepts coordinates of two corners (x0, y0) and (x1, y1) of an rectangular area, and returns the pointer to the structure of type WIN_RECT in which these coordinates are embeded. This function may be useful in combination with a rich set of TIOS functions which expect a structure of type WIN_RECT as explicite argument, like WinOpen, WinLine, etc.

Note: This function returns a static pointer, which will be rewritten with each call. So, you must not use it inside functions which needs more than one parameter of type WIN_RECT like WinFillLines2 etc.

10

Je ne vois pas le rapport avec SCR_RECT hum
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

11

essaie : DrawClipRect(MakeWinRect(0,8,159,99), (&(SCR_RECT){{0, 0, 159, 99}}) , A_NORMAL | B_DOUBLE);
Fiou.

12

TachMan> Merci, je pense que sa devrait marcher.
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

13

Au lieu de MakeWinRect(0,8,159,99), utilise plutôt &(WIN_RECT){0,8,159,99}, ça donne du code plus efficace (et ça marche même pour des variables dans la version la plus récente de TIGCC).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

14

Merci Kevin.

Comment faire pour créer un tableau de string dans la ram.
Je m'explique mal, je veux dire par là que la variable representant mon tableau doit être déclarer comme externe au programme car elle prend beaucoup trop de place.
Faut il utiliser malloc ?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

15

Oui.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

16

Thibaut a écrit un truc très interessant :
Sans le void le compilateur considère que la fonction peut prendre un nombre d'arguments quelconque : zéro ou 10 ou 150 ...

Mais c'est génial ça ! Comment on fait pr les utiliser les arguments, après ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

17

bah il faut déclarer le type d'arguments j'imagine ... wink comme pour toutes les fonctions qui en nécéssite.
tu ne pourras pas faire main(2, i, str) par ex, sans avoir dit ce qu'était 2, i , et str dans la liste des arguments.
Enfin peut-être me tompe-je ?! winkconfus
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

18

il faut que tu utilise les fonctions de stdarg.h je crois
=> tu devra utiliser quelque chose du style de ce que printf utilise.

A savoir, quelque chose qui t'indique à la fois le nombre d'arguments, et leurs types...
(dans printf, c'est une chaîne de caractères)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

19

Le mieux c'est de coder la fonction en assembleur, parceque je ne sais pas comment fonctionne stdarg.h mais ça doit être le bodel en C couic
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

20

le peu que j'en ai lu, ça paraissait bordélique smile
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

21

Une simple question :
Pourquoi

#define SAVE_SCREEN

est équivalent à :

LCD_BUFFER ecran;
LCD_save(Ecran);
LCD_restore(Ecran);

et nom à ça :

void *Ecran = malloc(3840);
LCD_save(Ecran);
LCD_restore(Ecran);

Les programmes ferait 3840 octets de moins en archive et prendrais exactement (je pense) la même taille en ram à l'execution.

Si chaque programme compiler avec Tigcc et utilisant #define SAVE_SCREEN de ma calculatrice utiliserait l'autre méthode, ça ferais des ko de gagné, non ?

De même : 4 octets de différence entre off(); et asm("trap #4") confus

Sinon quelqu'un a t-il une fonction C ou ASM pour sauver et restaurer l'écran avec les gris activés ?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

22

Il faut que je déclare un pointeur globale, donc avant void _main(void) et avant toutes mes fonctions, je fais :

void *Screen = malloc(3840);

Tigcc me donne l'erreur "Initializer element is not constant".
Comment faire pour corriger ce problème ?
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

23

Il faut déclarer void *screen; puis faire screen = malloc(LCD_SIZE);
car malloc renvoie un pointeur que tu stockes dans screen.
avatar
;)

24

"Initializer element is not constant"
tigcc est explicite : malloc() est une fonction et non une constante !
En dehors de toute fonction, tu ne peux pas éxécuter de code...

Comme BiHi te l'explique, met:

void * screen=NULL;

void _main(void) {

screen=malloc(3840);

}

25

Ok, merci a tout les deux, c'est sympa et maitenant, à table miam !
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

26

Bon, en fait, ça va toujours pas, je veux que Screen soit une variable globale, pas dans _main.

Donc je répète : comment déclarer un screen pour qu'il soit variable globale what
Watcha @ka JBJ @ka @ngelfire

ICQ: 109631918

27

Dans l'exemple cite, il est declare comme var globale.

28

Watcha a écrit :
Une simple question :
Pourquoi

#define SAVE_SCREEN

est équivalent à :

LCD_BUFFER ecran;
LCD_save(Ecran);
LCD_restore(Ecran);

et nom à ça :

void *Ecran = malloc(3840);
LCD_save(Ecran);
LCD_restore(Ecran);

Les programmes ferait 3840 octets de moins en archive et prendrais exactement (je pense) la même taille en ram à l'execution.

Si chaque programme compiler avec Tigcc et utilisant #define SAVE_SCREEN de ma calculatrice utiliserait l'autre méthode, ça ferais des ko de gagné, non ?

De même : 4 octets de différence entre off(); et asm("trap #4") confus
Sinon quelqu'un a t-il une fonction C ou ASM pour sauver et restaurer l'écran avec les gris activés ?


Bon déjà faut pas oiublier les free ou HeapFree après malloc ou HeapAlloc ...

Ensuite, pour l'histoire du off, ben c'est normal ...
Si tu mets off, ce sera traduit par quelque chose du style :
move.l $c8,a0
move.l off*4(a0),a0
jsr (a0)

(bien sûr, ça change avec OPTIMIZE_ROM_CALLS)
En gros, cela appelle le ROM_CALL off d'AMS.

Tandis que asm("trap #4") sera traduit en trap #4 en assembleur, et il se trouve que sur la TI l'extinction de la calculatrice est gérée par le trap #4 ...

Mais peut-être que off fait plus de choses que trap #4, du style générer un évènement pour les applications Flash ou autre ...

Je me trompe ?

29

Il me semble que la fonction off de TIGCC fait un simple trap #4 attention
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

30

Non, elle appelle un simple ROM_CALL qui lui ne contient que 0x4e444e75, c'est-à-dire trap #4;rts.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité