|
Quelque fonction utile
Je vous livre sur cette page quelques fonctions qui peuvent vous être utiles, ou pas ! ;-)
Une fonction qui permet de récupérer le temps
en fait c'est ne nombre se de milliseconde depuis le démarrage de votre CPC.
unsigned char byte1,byte4;
unsigned int GetTime()
{
__asm
CALL #0xBD0D ;KL TIME PLEASE
PUSH HL
POP DE
LD HL, #_byte1
LD (HL), D
LD HL, #_byte4
LD (HL), E
__endasm;
return (byte1 << 8) + byte4;;
}
Remarque : il faut définir byte1 et byte4 en global dans votre fichier C.
Maintenant pour l'utilisé par exemple avec le main de DESMD1 :
void main()
{
int i;
unsigned int nTimeStart = 0;
unsigned int nTime1 = 0;
//SCR_SET_MODE 1
__asm
ld a, #1
call #0xBC0E
__endasm;
nTimeStart = GetTime();
for(i=0; i<25; i++)
{
lineBresenham(108+i,48+i, 211+i,48+i,i%4);
lineBresenham(211+i,48+i, 211+i,151+i,i%4);
lineBresenham(211+i,151+i, 108+i,151+i,i%4);
lineBresenham(108+i,151+i, 108+i,48+i,i%4);
// trace ligne oblique
//lineBresenham(108+i,48+i, 211+i,151+i,i%4);
//lineBresenham(211+i,151+i, 108+i,48+i,i%4);
}
nTime1 = GetTime() - nTimeStart;
//KM_WAIT_CHAR
__asm
call #0xBB06
__endasm;
}
On récupère le temps avant de commencer ce que l'on veut mesurer, et quand c'est fini on reprend le temps en y soustraient le temps du début, vous avez donc le temps que prend la boucle FOR.
Attente la pression d'une touche
void KM_WAIT_CHAR()
{
//KM_WAIT_CHAR
__asm
call #0xBB06
__endasm;
}
Pas grand choses à dite, on appel la fonction (vecteur !) système pour attendre l'appuie sur une touche
Une fonction pour afficher un nombre en binaire
void affichebin(unsigned char n)
{
int i;
unsigned char bit = 0 ;
unsigned char mask = 1 ;
for (i = 0 ; i < 8 ; ++i)
{
bit = (n & mask) >> i ;
printf("%d", bit) ;
mask <<= 1 ;
}
}
|
|
|