Accueil

CPC


 Dev C sur CPC :

  • le C sur CPC
  • SDCC débuter
  • fichier BAT pour compiler
  • Dessiner Sur CPC
  • Optimiser le dessin
  • Ecrire du texte
  • Lire un fichier
  • Ecrire un fichier
  • Swap d'écran
  • CLS ultra rapide
  • H line
  • Attaquer le CRTC
  • Full Overscan
  • Put pixel très rapide
  • Afficher une image
  • Slide show 1
  • Bézier
  • faire un fichier pour Bézier

  • Quelque fonctions utile

  • Animation
  • 3D
  • Raster
  • Manche a balais

    Le plan du Site

  •  
      Ici les nouvelle du site  
     
    Recherche ?
    Saissisez un mot clé

     
      Quelques chiffres
    Visiteurs:13811
    Visiteurs aujourd'hui:3
     
     
    Me contacter
    Donnez votre avis
     
    Le site de Steph : Le CPC

    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 ;
    	}
    }