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 !
Partager