Forum Graph100

Forum Graph100

Vous n'êtes pas identifié.

Annonce

Bonjour et bienvenue sur le nouveau Forum Graph100 !
L'intégralité des données a été transférée sur un forum PunBB et tout les comptes sont fonctionnels avec le même nom d'utilisateur et mot de passe.
Un wiki est aussi disponible avec le même compte ! N'oubliez pas de remettre votre avatar, bon surf !
Pour plus d'informations, consultez ce post.

#1 24 Sep 2004 13:02:28

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Timer

Salut à tous (euh comme vous le voyez je suis toujours pas mort big_smile )

Bon, étant donné que ma connaissance de l'asm frise le zéro ... je n'arrive pas a créer une fonction qui récuper la valeur du timer de la g100 (pas le RTC mais bien le timer rapide). Si qqun peut me donner un coup de pouce ou a déja fait un fonction,  je suis preneur  wink

En faite, j'en ai besoin pour avoir une base de temps fixe dans un jeu que je dévellope pour régler  le problème des ralentissement et autre bidule du genre ( comme pouvoir calculer le fps)

++ guys ;-)


lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

#2 24 Sep 2004 13:14:43

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Timer

pour avoir le nombre de jours il faut faire

Code:

in ax,0x20

les secondes :

Code:

in al,0x1D

les minutes :

Code:

in al,0x1E

les secondes :

Code:

in al,0x1F

enfin je sais pas si c'est exactement ce que tu voulais
(j'ai regardé dans casio2.h il y a toutes les fonctions pour l'heure/date)


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#3 24 Sep 2004 13:21:03

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Re: Timer

dsl Bija mais c juste l'autre qu'il me faut ... sinon, pour l'heure, ect, j'ai déja tout ce qu'il faut (et je n'en ais pas besoin) ,

Merci quand même ;-)

Il s'agit de l'interruption 1Ch (voir page 25 du guide du programmeur 2nd édition ;-) )

En fait, je c pas du tout comment la mettre en pratique ... (quand je pense que je prog sur g100 depuis 4 ans passé et je c toujours pas faire ca ...  :oops: ). Ca m'apprendra à ne pas me tenir au courant des dernières trouvailles sur g100 et à programmer un peu moins en Opengl avec des Lib toute faites ...


lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

#4 24 Sep 2004 13:42:02

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Timer

ah ok désolé !! sad

sinon le timer je ne sais pas non plus sad
mais bon je programme depuis quelques mois seulement ca me fait une excuse  big_smile


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#5 24 Sep 2004 13:59:26

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: Timer

la version longue :

Code:

int compteur=0;

void interrupt newint1C()
{
    asm int 0xD9;
    asm mov ax, [compteur];
    asm inc ax;
    asm mov [compteur], ax;
}


void main ()
{
    int adr1C_segment,adr1C_offset,adrD9_segment,adrD9_offset;
    //on pushe
    asm push ax;
    asm push es;
    asm push di;
    //sauvegarde le vect de l'int 1C
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x001C * 4;    
    asm mov di, ax;
    asm mov ax, es:[di];
    asm mov adr1C_segment, ax;
    asm mov ax, es:[di + 2];
    asm mov adr1C_offset, ax;
    //remplace celui de la D9
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x00D9 * 4;    
    asm mov di, ax;
    asm mov ax, adr1C_segment;
    asm mov es:[di], ax;
    asm mov ax, adr1C_offset
    asm mov es:[di + 2], ax;
    //met la perso ds la 1C
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x001C * 4;    
    asm mov di, ax;
    asm mov ax, offset newint1C;
    asm mov es:[di], ax;
    asm mov ax, cs;
    asm mov es:[di + 2], ax;
    //et on pope
    asm pop di;
    asm pop es;
    asm pop ax;

    // ...

    //on pushe
    asm push ax;
    asm push es;
    asm push di;
    //remet l'int 1C com i fo
    asm xor ax, ax;
    asm mov es, ax;
    asm mov ax, 0x001C * 4;    
    asm mov di, ax;
    asm mov ax, adr1C_segment;
    asm mov es:[di], ax;
    asm mov ax, adr1C_offset
    asm mov es:[di + 2], ax;
    //et on pope
    asm pop di;
    asm pop es;
    asm pop ax;
}

=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#6 24 Sep 2004 14:07:32

Bija
Membre Communauté Graph100
Lieu: Nord de la France
Date d'inscription: 20 Apr 2004
Messages: 240
Site web

Re: Timer

ouaaa ...
ok
bon je vais essayer de comprendre ca maintenant


" Ignorer l'impossiblité de ce que l'on tente reste l'un des ingrédients essentiels de la réussite "

Hors ligne

 

#7 24 Sep 2004 15:44:28

Julien
C++iste convaincu
Lieu: Waterloo (Be)
Date d'inscription: 29 May 2002
Messages: 1456
Site web

Re: Timer

Tiens, je crois que je vais me baser sur ce code dans gxLib pour ne pas avoir à utiliser dos.h  lol

Sinon Gathering, pour les timers j'ai aussi une lib qui fournit une classe pour en implementer, mais tu le sais déjà...  wink


Pensez à surveiller mes releases wink

Hors ligne

 

#8 24 Sep 2004 18:25:21

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Re: Timer

ouaip merci Ju

je suis en train d'essayer de la comprendre .. tongue


lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

#9 25 Sep 2004 10:20:39

mastermage
Magicien G100
Lieu: Charleville-Mézières,Compiègne
Date d'inscription: 31 Jan 2002
Messages: 1008

Re: Timer

le getvect/setvect en C-inline asm, en plus comprehensible et plus souple :

Code:


//compatibilité TC3-DM
#ifdef __DMC__
#define far __far
#define interrupt __interrupt
#endif
 
void (interrupt far * dos_getvect(unsigned vector))()
{
   void (interrupt far * funcptr)();
   
   asm mov AL,byte ptr vector;
   asm mov AH,0x35;
   asm int 0x21;
   asm mov word ptr funcptr,BX;
   asm mov word ptr funcptr+2,ES;
   
   return funcptr;
}

void dos_setvect(unsigned vector, void (interrupt far * funcptr)())
{
   asm mov  AL,byte ptr vector;
   asm mov  AH,0x25;
   asm push DS;
   asm lds  DX,dword ptr funcptr;
   asm int  0x21;
   asm pop  DS;
}

int compteur=0; 

void interrupt far newint1C()
{
   asm int 0xD9;
   asm mov ax, [compteur];
   asm inc ax;
   asm mov [compteur], ax;
}

void (interrupt far * oldint1C)();

void setTimer()
{
   oldint1C=dos_getvect(0x1C);
   dos_setvect(0x1C, newint1C);
}

void endTimer()
{
   dos_setvect(0x1C,oldint1C);
}

int main(int argc, char* argv[])
{
   setTimer();

   //...

   endTimer();

   return 0;
}

doit surement y avoir des erreurs mais bon...

Hors ligne

 

#10 25 Sep 2004 11:39:11

[neo]f4kill
Programmeur Graph100
Lieu: montauban
Date d'inscription: 05 Oct 2003
Messages: 678
Site web

Re: Timer

oui oui c'est pour sa que g dit : "version longue"
g oublié de rajouter "et moche" tongue


=> Auteur de : Code, Hot-dog (v alpha), Aspirin v1.2, Memory v1.0, Slider v1.0 + 2 ou 3 progs à la noi wink


http://www.danasoft.com/sig-fre.jpg

Hors ligne

 

#11 27 Sep 2004 08:28:40

gathering
Programmeur Graph100
Lieu: Belgique - Liège
Date d'inscription: 29 Jan 2002
Messages: 133

Re: Timer

doit surement y avoir des erreurs mais bon...

Non non, y'a pas d'erreur  :P . G réussit a compiler le tous du premier coup sans aucun problème si ce n'est 2 warning facilement contournable.

Bon maintenant, je v essayer de comprendre dans une ceratine mesure (suis pas pro de l'asm) ensuite, je me lance dans un algo de scrolling horizontal tongue


lol Julien Ghaye, Alias Gathering lol

gathering@gathex.net

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr