210

slubman a écrit :
Porquoi dans la derniere version de CC le fichier avec la liste de ROM_CALL disponible à disparuwhat
Donc quels sont les ROM_CALL utilisablent maintenannt???

Si tu parles de ams_c, il est toujours à la meme place.
P.S: Sur 92+ les flèches directionnelles ne fonctionnent pas correctements dans side (haut/bas=curseur à gauche/droite etgauche/droite= curseur haut/bas)fou

C'est la version TI-89, les sources actuelles ne compilent plus donc je peux pas faire de version pour TI-92+ dans l'immédiat.
So much code to write, so little time.

211

Et pour les #include?

212

Non y'avais un fichier dans lequel on pouvait ajouter des ROM_CALL et il n'est plus là
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

213

ExtendeD
a écrit : Et pour les #include?

Avec un double backslash ça marche smile
#include "rep\include"
slubman
a écrit : Non y'avais un fichier dans lequel on pouvait ajouter des ROM_CALL et il n'est plus là

Je vois pas trop de quoi tu parles ... t'es sur que c'est pas ams_c confus
So much code to write, so little time.

214

En fait oups c'était bien celui-làconfus
Plis fòs ba pengwen là !

mon site: http://www.slubman.info/
partie GP32: http://www.slubman.info/gp32
partie TI: http://www.slubman.info/ti

215

J'ai une petite surprise pour vous:
Je viens de porter ANSI2KNR, un convertisseur qui vous permettra de coder en ISO C-89 ("C ANSI") avec CC.

attention Il y a quand-même quelques restrictions:
1. Règles d'indentation (extrait de ma doc):
1. Function headers or prototypes MUST NOT be indented.
OK:
void main(void);

void main(void)
{
}
NOT OK:
 void main(void);

 void main(void)
 {
 }

2. Function headers or prototypes MUST be on ONE LINE.
OK:
void f(int a, int b);
void g(int c, int d);
NOT OK:
void f(int a,
       int b);
void g(int c,
int d);

3. The opening brace MUST NOT follow the function header on the same line.
OK:
int f(int a)
{
}

void main(void)
{
}
NOT OK:
int f(int a){
}

void main(void) {
}

4. Code inside functions MUST be indented.
OK:
void main(void)
{
 DrawStr(0,0,"Hello, World!",4);
}
NOT OK:
void main(void)
{
DrawStr(0,0,"Hello, World!",4);
}

2. attention CC ne comprend pas vraiment les prototypes. Ceci ne se fera pas remarquer dans le cas général, mais attention avec des choses de style:
memcpy(dest,0x4c00,3840);
Syntaxe correcte:
memcpy(dest,0x4c00L,3840L);
(un pointeur est aussi un long).

Pour le téléchargement, c'est ici.
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é

216

D'ailleurs, ce que j'ai fait n'est pas un simple portage. J'ai aussi rajouté des fonctionnalités (fonctions sous la forme:
void main(void)
plutôt que:
void
main(void)

- mais la 2ème variante devrait aussi marcher si vous l'aimez vraiment) et corrigé des bogues (genre arguments du style char *(test[]) qui étaient mal reconnus).
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é

217

Nitro : est-ce que tu as une idée comment faire pour empêcher le bug de l'optimisation de plusieurs appels du même rom call, en attendant une correction? Est-ce qu'il y'aurait mieux que de faire un ams_c contenant les adresses absolues de toutes les rom calls?

218

MERCI KÉVIN top

219

ExtendeD
a écrit : Nitro : est-ce que tu as une idée comment faire pour empêcher le bug de l'optimisation de plusieurs appels du même rom call, en attendant une correction? Est-ce qu'il y'aurait mieux que de faire un ams_c contenant les adresses absolues de toutes les rom calls?

Tu peux faire une fonction qui appelle ce rom call, et cette fonction là tu peux l'appeller plusieurs fois...
So much code to write, so little time.

220

Ah oui, c'est vrai.

Pour éviter ça j'ai quand même fait un convertisseur d'ams_c en adresses absolues de rom call. Les programmes compilés avec le nouvel ams_c ne fonctionneront que sur le type de calc et la version d'AMS utilisés durant la conversion, mais c'est pas très gênant, puisque les modifications ne sont effectués que sur l'ams_c, la source n'est pas modifiée.

Il faut absolument ce format en entrée :
romcall_name = -$romcall_#
ou
romcall_name = -romcall_#
(les espaces, le = et le - sont importants)
Toutes les lignes qui n'ont pas ce format sont recopiées telles quel.

[URL]http://membres.lycos.fr/extended/amscp.zip[/URL]

221

Nitro
a écrit : Par contre il reste un probleme lorsqu'on appelle plusieurs fois de suite le meme ROM_CALL... le probleme vient de l'astuce utilisée dans AS pour appeller les ROM_CALL, mais ça devrait etre corrigé tres bientot

N'y a-t'il pas moyen de désactiver la common subexpression elimination des fonctions quelque part?
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é

222

J'ai quelques petites problèmes avec CC, mais ça vient peut-être de moi ...
(avec la dernière version de CC)
Le programme csrc suivant (désolé pour les : du TI Graph-Link)
 :#include "consts_h"
 :main() {
 : HSym HSymVar;
 : SYM_ENTRY *pSymEntry;
 : unsigned char *pFile;
 : char tab[5];
 : char buff[50];
 : 
 : tab[0]=0;
 : tab[1]='a';
 : tab[2]='b';
 : tab[3]='c';
 : tab[4]=0;
 : 
 : HSymVar = SymFind(tab+4);
 : pSymEntry = DerefSym(HSymVar);
 : sprintf(buff,"%d",pSymEntry->handle);
 : ST_helpMsg(buff);
 :}


compilé par CC donne la source assembleur suivante :
 : include "ams_c"
 : bra _main
 : even
 :_NULL:
 : dc.l 0
 : even
 :_LCD_MEM:
 : dc.l 19456
 : even
 :_LCD_SIZE:
 : dc.l 3840
 :L1:
 : dc.b 37,100,0
 : even
 :_main:
 : link a6,#-68
 : move.b #0,-17(a6)
 : move.b #97,-16(a6)
 : move.b #98,-15(a6)
 : move.b #99,-14(a6)
 : move.b #0,-13(a6)
 : pea -13(a6)
 : jsr _SymFind
 : addq.l #4,a7
 : lea -4(a6),a0
[b] : move.l (a-50)+,(a0)+[/b]
 : subq.w #4,a7
 : lea -4(a6),a0
 : move.l a7,a1
 : move.l (a0)+,(a1)+
 : jsr _DerefSym
 : addq.l #4,a7
 : ext.l d0
 : move.l d0,-8(a6)
 : move.l -8(a6),a0
 : move.w 12(a0),-(a7)
 : pea L1
 : pea -67(a6)
 : jsr _sprintf
 : lea 10(a7),a7
 : pea -67(a6)
 : jsr _ST_helpMsg
 : addq.l #4,a7
 : unlk a6
 : rts
 :


Et il y a évidemment une erreur à la ligne mise en gras ...

223

triso
So much code to write, so little time.

224

Et ANSI2KNR, vous l'avez essayé? Il marche bien?
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é

225

Nitro a écrit :
triso


C'est si con que ça ? picolgrin

226

La flemme zzz
Programmez une interface de compilation comme celle d'Azur qui permet d'enchaîner les différentes phases du processus, parceque là je suis découragé de savoir qu'il faut lancer 3 progs à la suite zzzzzz
Nitro : si tu veux l'ajouter au zip de CC en même temps que le truc de Kevin, je veux bien adapter l'interface de mon compilo pour le tiens pencil
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.

227

> Nitro :
Voilà consts_h (qui marche sans problème avec d'autres programmes) :

:enum Bool {FALSE,TRUE};
 :typedef unsigned short HANDLE;
 :typedef unsigned long size_t;
 :
 :enum Attrs {A_REVERSE,A_NORMAL,A_XOR,A_SHADED,A_REPLACE,A_OR,A_AND,A_THICK1,A_SHADE_V,A_SHADE_H,A_SHADE_NS,A_SHADE_PS};
 :
 :enum Fonts {F_4x6,F_6x8,F_8x10};
 :
 :void *NULL = 0;
 :
 :enum Buttons {BT_NONE,BT_OK,BT_SAVE,BT_YES,BT_CANCEL,BT_NO,BT_GOTO};
 :
 :typedef unsigned char LCD_BUFFER[3840];
 :
 :void *LCD_MEM = 0x4C00;
 :
 :unsigned long LCD_SIZE=3840;
 :
 :typedef enum Couleurs {BLACK,WHITE} COLOR;
 :
 :typedef unsigned char SCR_COORDS;
 :
 :typedef short WIN_COORDS;
 :
 :typedef union
 :{
 : struct
 : {
 :  unsigned char x0,y0,x1,y1;
 : } xy;
 : unsigned long l;
 :} SCR_RECT;
 :
 :typedef struct
 :{
 : short x0,y0,x1,y1;
 :} WIN_RECT;
 :
 :typedef struct WindowsStruct
 :{
 : unsigned short Flags;
 : unsigned char CurFont;
 : unsigned char CurAttr;
 : unsigned char Background;
 : short TaskId;
 : short CurX,CurY;
 : short CursorX,CursorY;
 : SCR_RECT Client;
 : SCR_RECT Window;
 : SCR_RECT Clip;
 : SCR_RECT Port;
 : unsigned short DupScr;
 : struct WindowStruct *Next;
 : char *Title;
 :} WINDOW;
 :
 :enum BoxAttrs {B_NORMAL=0x10,B_ROUNDED=0x20,B_DOUBLE=0x40,B_CUT=0x80};
 :
 :/* enum WinFlags {WF_SYS_ALLOC=0x0001,WF_STEAL_MEM=0x0002,WF_DONT_REALLOC=0x0004,WF_ROUNDEDBORDER=0x0008,WF_SAVE_SCR=0x0010,WF_DUP_SCR=0x0020,WF_TTY=0x0040,WF_ACTIVE=0x0080,WF_NOBORDER=0x0100,WF_NOBOLD=0x0200,WF_DUP_ON=0x0400,WF_VIRTUAL=0x0800,WF_TITLE=0x1000,WF_DIRTY=0x2000,WF_TRY_SAVE_SCR=0x4010,WF_VISIBLE=0x8000}; */
 :
 :typedef struct
 :{ unsigned short i[16]; } ICON;
 :
 :typedef unsigned short *pICON;
 :
 :/*typedef struct
 :{
 : unsigned short NumRows,NumCols;
 : unsigned char Data[];
 :} BITMAP;*/
 :typedef struct
 : {
 :   void *ScrAddr;
 :   unsigned char XMax,YMax;
 :   short CurFont,CurAttr,CurX,CurY;
 :   SCR_RECT CurClip;
 : } SCR_STATE;
 : 
 :enum ST_ACTIVITIES {ACTIVITY_IDLE,ACTIVITY_BUSY,ACTIVITY_PAUSED,ACTIVITY_NORMAL};
 :typedef float ti_float;
 :
 :typedef struct
 : {
 :   unsigned short exponent;
 :   unsigned long mantissa;
 :   /*unsigned long long mantissa sous TIGCC, mais CC ne gere pas cette extension GNU-C*/
 : } bcd;
 :
 :typedef char* ESI;
 :
 :typedef unsigned short BOOL;
 :
 :typedef unsigned char BYTE;
 :typedef char SBYTE; /*signed*/
 :typedef unsigned char UBYTE;
 :typedef unsigned short WORD;
 :typedef short SWORD; /*signed*/
 :typedef unsigned short UWORD;
 :typedef unsigned long DWORD;
 :typedef long SDWORD; /*signed*/
 :typedef unsigned long UDWORD;
 :
 :typedef unsigned char UCHAR;
 :typedef char SCHAR; /*signed*/
 :typedef unsigned short USHORT;
 :typedef short SSHORT; /*signed*/
 :typedef unsigned int UINT;
 :typedef int SINT; /*signed*/
 :typedef unsigned long ULONG;
 :typedef long SLONG; /*signed*/
 :
 :typedef struct {
 : HANDLE folder;
 : unsigned short offset;
 :} HSym;
 :
 :typedef struct {
 : char name[8];
 : unsigned short compat;
 : union {
 :  unsigned short flags_n;
 :  struct {
 :   unsigned short busy:1,local:1,flag1_m:1,flag1_4:1,collapsed:1,twin:1,archived:1,in_view:1;
 :   unsigned short folder:1,overwritten:1,checked:1,hidden:1,locked:1,statvar:1,graph_ref_1:1,graph_ref_0:1;
 :  } bits;
 : } flags;
 : unsigned short handle;
 :} SYM_ENTRY;
 :
 :/* Fin consts.h */

228

Thibaut a écrit :
La flemme zzz
Programmez une interface de compilation comme celle d'Azur qui permet d'enchaîner les différentes phases du processus, parceque là je suis découragé de savoir qu'il faut lancer 3 progs à la suite zzzzzz

Si tu avais téléchargé ANSI2KNR, tu saurais que j'ai livré avec ANSI2KNR un petit programme TI-BASIC nommé ISOCC qui fait exactement ça.
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é

229

Tu l'aurais précisé, j'aurais téléchargé ton zip hum
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.

230

J'espère que ça marche bien.

Et je précise aussi que ISOCC devrait marcher quelle que soit la langue choisie pour AMS.
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é

231

là Kevin t'aurais pas du, il faut forcer les newbies à mettre en anglais. oui
Car sur les gros programmes BASIC, on ne peut pas se permettre de perdre de la place pour traiter les cas de chaque langue. wink
M'enfin au moins ça t'évitera les questions de newbies : "my Ti89 doesn't work correctely when I start you program, I hate you !!!!" gringrin.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

232

en fait j'aurais pas du mettre le msg de pleinte de newbie en anglais, car en général les anglophones mettent leur calc en langue anglaise grin donc ils ont pas de conflits de nom de fonctions changés (avec l'APPS). gringrin

bon, alors tu as évité cela : "Meine Ti89 kann nicht dein program [G]executer[/G]. Ich mag du nicht !!!" >> excusez mon allemand très très faible. grin
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

233

Du Arschloch ... Du Hure ... grin

234

Au fait, quelqu'un a compris mon bug ?

235

zdr
a écrit : Au fait, quelqu'un a compris mon bug ?

En fait deja je viens de remarquer que la convention d'AMS pour retourner des "not too long structures" du genre HSym c'est dans D0... voila qui est bien embetant, mais je peux adapter CC en conséquence.
Par contre ton bug à toi je pense que c'est un "side effect" des modifs que j'ai du faire pour changer le registre de retour pour les pointeurs.
So much code to write, so little time.

236

zdr
a écrit : Au fait, quelqu'un a compris mon bug ?

Ben, c'est que CC essaye d'utiliser le registre d'adresse numéro -50. roll
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é

237

ok smile
Je vais essayer de me débrouiller autrement pour l'instant smile

C'est sûr que move.l (a-50)+,(a0)+ ça parait faux grin

zdrubal smile

238

Nitro
a écrit : En fait deja je viens de remarquer que la convention d'AMS pour retourner des "not too long structures" du genre HSym c'est dans D0... voila qui est bien embetant, mais je peux adapter CC en conséquence.

C'est normal, une structure n'est pas un pointeur!
Un long sera aussi retourné en D0.
Et puis, tiams.h définit HSYM comme un long tout simplement.
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é

239

Pim89 a écrit :
là Kevin t'aurais pas du, il faut forcer les newbies à mettre en anglais. oui


tsss Il ne faut forcer personne à faire quoi que ce soit! tsss
(C'est aussi le principe selon lequel je suis absolument contre les kernels. On force les utilisateurs à installer un kernel si on programme en mode kernel.)
Et une chose est ne pas traduire son programme en toutes les langues, une autre est ignorer complètement l'existance de ces langues! Le premier est acceptable (on ne peut pas savoir toutes les langues quand-même), le deuxième est inacceptable! Un programme doit marcher quelle que soit la langue de AMS!
Car sur les gros programmes BASIC, on ne peut pas se permettre de perdre de la place pour traiter les cas de chaque langue. wink

En général, si tu programme correctement, tu ne dois pas traîter chaque langue en particulier! Dans tous mes programmes, il y a une seule ligne où j'ai été obligé de le faire: un solve construit avec expr dans CHEMISLV. (Il faut d'ailleurs enfin que je rajoute le polonais - je voulais déjà le faire depuis plus d'un an!)
Sinon, tu fais comme j'ai fait dans ISOCC:
- ne pas utiliser "NONE". Utilise:
:Local [tau]
:getType([tau])->[tau]

[tau] est le t grec.
- même chose pour les autres types. Par exemple, pour "EXPR":
:Local [tau]
:exact([pi])->[tau]
:getType([tau])->[tau]

- utiliser les modes numériques, avec un Try qui utilise le nom anglais pour AMS 1. Par exemple:
:Try
:setMode(0,0)->[mu]
:Else
:setMode("foo","bar")->[mu]
:ClrErr
:EndTry


Comme ça, votre programme sera portable. S'il ne l'est pas, c'est un programme mal programmé.
Pim89 a écrit :
bon, alors tu as évité cela : "Meine Ti89 kann nicht dein program [G]executer[/G]. Ich mag du nicht !!!" >> excusez mon allemand très très faible. grin

Déjà, ça serait plutôt: "Mein TI-89 kann dein Programm nicht ausführen. Ich hasse dich!!!" grin
Ensuite, c'est justement en programmant un programme qui fonctionne dans toutes les langues qu'on évite ce problème! Si ton programme à toi ne marche pas sur une TI-89 en allemand, les germanophones ont raison de te détester!!!
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é

240

Kevin Kofler a écrit :
Et ANSI2KNR, vous l'avez essayé? Il marche bien?



Ben ouais, et ça ne marche pas (enfin, je l'ai p-e mal utilisé...). Même quand j'utilise ISOCC... mourn
Pourtant j'ai compilé ton exemple (hellow).