null Le 03/02/2004 à 21:11 Ok. Par contre j'ai des gros problème de crash : j'ai dû me planter quelque part en remplaçant les structures.
Voici les structures que j'utlises :
typedef struct
{
unsigned char stick_char:2;
unsigned char color:2;
unsigned char align:2;
unsigned char under_line:1;
unsigned char on_line:3;
unsigned char font:2;
unsigned char animate:2;
unsigned char left:2;
unsigned char right:2;
unsigned char inter_line:2;
unsigned char br:2;
unsigned char frame:1;
unsigned char blink:1;
unsigned char hide:1;
short x:12;// 4096
}Str_Mode;
typedef struct
{
char *str;
Str_Mode *param;
}TEXT;
typedef struct
{
union
{
BITMAP *Bitmap;
TEXT *Text;
}File;
unsigned char flag;
}DOCUMENT;
Je déclare la structure qui va stocker le fichier lors du parsing comme ceci :
DOCUMENT *Document=malloc(2048*sizeof(DOCUMENT));
Ce qui doit faire un tableau de 2048 lignes si je ne me trompe pas...
Et ensuite j'alloue la mémoire pour le texte et les paramètre comme avant c'est à dire comme ça :
Document[nb_str].File.Text->str = malloc(Mem_to_alloc);
sauf qu'avant j'utilisais la structure TEXT au lieu de la structure document ce qui faisait :
TEXT *Text = malloc(2048*sizeof(TEXT));
et
TEXT[nb_str]->str = malloc(Mem_to_alloc);
... Avec ces unions je n'y comprend pas grand chose et apparement il n'y a pas ou pas assez de mémoire allouée pour stocker le texte et les paramètres alors que j'ai simplment changé de structure.
www.wikio.fr/user1921&info=comments
Avec ton malloc, tu n'alloues que ton tableau de pointeurs. Il faudra en plus allouer toutes tes structures TEXT et StrMode séparément.
null Le 03/02/2004 à 21:49 Ah ouais mais là ça bouffe carrément plus de mémoire alors !
Ce que je voulais faire c'est une structure qui contient :
- la structure TEXT qui permet d'avoir une chaîne et un paramètre.
ou
- la structure BITMAP qui permet d'avoir une image.
- Et un octet pour savoir si c'est une image ou une chaîne de caractère.
Et c'est avec cette structure que j'alloue en fonction du nombre de lignes. C'est possible de faire ça ?
Parce-que je ne m'y suis peut-être mal pris pour faire ma structure là ?
Je suis arrivé à faire ce que tu viens de me dire en reprenant une sources antérieure mais c'est pas ce qu'il y a de meiux parce-qu'il faut deux tableaux : un pour Document et puis un pour Text alors que je n'ai besoin de qu'un seul en fait.
Il faudrait mettre l'octet flag au même niveau que TEXT et BITMAP alors ?
www.wikio.fr/user1921&info=comments
null Le 03/02/2004 à 22:21 Ok.
Mais alors la structure DOCUMENT fait combien d'octets ? : 4 pour File + 2 (vu que la structure en fait 6 lorsque j'ai regardé avec printf) pour flag.
Et ensuite il faudrait de nouveau allouer de la mémoire pour TEXT ou BITMAP.
Ce qui fait encore 4 octets et donc 10 au total ?
Je ne comprend pas l'intérêts des Union dans ce cas ?
En fait pour gaspiller moins de place il faudrait que je face une structure avec le flag et une autre qui contient l'union TEXT et BITMAP.
Comme ça, ce couterait que 4 octets pour l'union + 1 pour le flag = 5 octets ?
www.wikio.fr/user1921&info=comments
null Le 04/02/2004 à 16:20 J'y suis enfin arrivé et voilà la structure que j'utilise :
typedef struct
{
unsigned char flag;
union
{
BITMAP *Bitmap;
TEXT Text;
}File;
}DOCUMENT;
En fait j'avais fait l'erreur bête de laisser un pointeur à Text alors que les seuls trucs qui sont alloués sont les éléments de la structure Text. Et puis pour Bitmap rien n'est alloué puisque j'utilise directement les fichiers PIC.
Donc tout marche sauf que la méthode d'affichage (enfin de scrolling) qui fait déplacer le texte de ligne en ligne n'est pas adapté aux images... et là je ne sais vraiment pas comment faire pour scroller tout les 3-4 pixels par exemple... Enfin je verrais plus tard parce-que là je n'ai pas le temp.
www.wikio.fr/user1921&info=comments
null Le 04/02/2004 à 17:29 Je sais pas. Pour l'instant c'est des PIC en noir et blanc... enfin en gris foncé et blanc. Je pensais aussi ajouter une syntaxe qui permette avec deux images de faire deux plans pour les nvg mais c'est vrai que ça prendra de la place.
Je pensais à compresser les PIC en un autre format avec le RLC ou autre chose mais ça ne servira pas à grand chose vu qu'il faudra quand même les décompresser pour l'affichage.
www.wikio.fr/user1921&info=comments
ba sinon, tu met par défaut en noir et blanc pis si y'a deux plans tu met en nvg ...
La différence est que st.b marche aussi pour les adresses mémoire et pas moveq. C'est pour ça que 255 est un choix meilleur pour "vrai". On peut utiliser moveq #-1 dans les registres et st en mémoire.
null Le 04/02/2004 à 20:18 Ah oui en effet ça donne des trucs du genre : st (%a0,%d3.l). J'avais encore jamais vu cette instruction.
www.wikio.fr/user1921&info=comments
null Le 04/02/2004 à 20:53 Porquoi elle n'est pas expliqué dans les documentations de motorola ?
www.wikio.fr/user1921&info=comments
Si, elle y est.
Elle est désignée par Scc (cc représente la condition et peut prendre 16 "valeurs" différentes : ne, eq, cc, cs, vc, vs, hi, hs, ...)

« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas
. »
D'ailleurs, 'sf' peut même avantageusement remplacer clr.b (plus rapide).
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)
Ah bon, 'sxx' va aussi lire l'opérande? Faut dire que j'ai pas regardé une table de timing depuis super longtemps, alors des points de détail comme ça...
« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)