Bonsoir à tous ,

J'essaye de programmer un debut de petit kernel , pour apprendre .

Cependant mes codes ne fonctionnes pas , alors que lorsque je les essaye avec un programme en C "normal" ( avec #include <stdio.h> etc ) ...

Pour le premier code , j'utilise les structure , mais seulement lorsque je teste la structure reçu , la valeur de pX = 0 alors qu'elle devrait être égale à 1 ...

Voici mon code , il affiche 'D' ( pos.pX=0 ):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
void _start(void)
{
		Position p;
		p.pX=1;
		p.pY=1;
		print("un message\n",p);
        //kattr = 0x4E;
        print("un autre message\n",p);
/*
        scrollup(2);
*/
        while (1);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void print(char *string,Position pos)
{
 
    if(pos.pX==1)
    {
          //printf("putcar k=%d",k);
        unsigned char* p;
        p=(unsigned char*)RAMSCREEN;
        *(p+1)='1';
        *(p+2)=0x57;
    }
    else if(pos.pX==0)
    {
                 //printf("putcar k=%d",k);
        unsigned char* p;
        p=(unsigned char*)RAMSCREEN;
        *(p+1)='D';
        *(p+2)=0x57;
    }
    // putcar('A',kX);
    /*
        while (*string != 0) {  // tant que le caractere est different de 0x0 
                putcar(*string);
                string++;
        }
    */
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
typedef struct
{
	unsigned int pX;
	unsigned int pY;
}Position;


Le code ne fonction pas non plus avec des pointeurs sur des variables , là le code affiche 'V' :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
void _start(void)
{
		unsigned int a=1;
		print("un message\n",&a);
        //kattr = 0x4E;
        print("un autre message\n",&a);
/*
        scrollup(2);
*/
        while (1);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void print(char *string,unsigned int* pos)
{
 
    if(*pos==1)
    {
          //printf("putcar k=%d",k);
        unsigned char* p;
        p=(unsigned char*)RAMSCREEN;
        *(p+1)='1';
        *(p+2)=0x57;
    }
    else if(*pos==0)
    {
                 //printf("putcar k=%d",k);
        unsigned char* p;
        p=(unsigned char*)RAMSCREEN;
        *(p+1)='D';
        *(p+2)=0x57;
    }
    else
    {
        unsigned char* p;
        p=(unsigned char*)RAMSCREEN;
        *(p+1)='V';
        *(p+2)=0x57;
    }
    // putcar('A',kX);
    /*
        while (*string != 0) {  // tant que le caractere est different de 0x0 
                putcar(*string);
                string++;
        }
    */
}

Ça ne fonctionne pas non plus avec des variables globales...

Tout cela fonctionne correctement avec un programme "normal".

Merci d'avance pour votre aide !