Probleme programmation Kernel
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:
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:
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:
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:
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:
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 !