Vous n'êtes pas identifié.
Pages: 1
voila g édité le post bah effectivement ça marche !!
o bout de 6mn tjrs pas éteinte !!
Il faut donc désactiver l'int 4A
Comme elle est désactivée d'office ds mes derniers progz, c pr çà k'ils s'éteignent pa
Hors ligne
lol...
cool ca complete les premieres recherche...
téribble!!!
Hors ligne
Je confirme, ca marche impec: on vire les int 9 et 4A, et tout baigne
Hors ligne
bonne nouvelle sauf que là si j'ai bien compris la calto ne s'éteint plus jamais tant que ces int sont désactivées ?
Hors ligne
hmm si ct le cas ca ruinerait tous les marchands de pile
En tout cas dans les essais elle a pas l'air de s'éteindre apres un certain temps
Hors ligne
ca le ferait bien en classe, les profs vont se demander pkoi tu zones toujours pres de la prise
Hors ligne
et en cas de bogue de l'appli on peu plus éteindre la calcos...
Hors ligne
voila...ca donne :
(quelques fonctions de supern modifiées)
// Desactive l'extinction automatique. unsigned int OldIntSeg,OldIntOff; void desactAPO() { asm{ xor ax,ax mov es,ax mov ax,es:0x12A mov OldIntSeg,ax mov ax,es:0x128 mov OldIntOff,ax mov ax,es:0x03FE mov es:0x12A,ax mov ax,es:0x03FC mov es:0x128,ax } } // Reactive l'extinction automatique. void actAPO() { asm{ xor ax,ax mov es,ax mov ax,OldIntSeg mov es:0x12A,ax mov ax,OldIntOff mov es:0x128,ax } }
Hors ligne
ouaah cool!
euh on peut l' éteindre toujours quand on veut ( avec en gros la fonction shutdown)?
Hors ligne
Donc en fait kan on désactive cette int la calto s'éteint effectivement plus ... koi k'il arrive !! en fait ds le tuto de whyp c t dit ke c un timer dc je l'avais désactivé pr gagner du temps !! Or il se trouve que c'est lui qui est utilisé par l'Apo !!
Hors ligne
Moi j'ai préféré faire comme ca:
typedef void interrupt (*ptr_inter) (...); ... void interrupt intnulle(...) {} void inter(bool active) { static ptr_inter ptr_int9 = _dos_getvect(0x9), ptr_int4A = _dos_getvect(0x4A); _dos_setvect(0x9,active ? ptr_int9 : intnulle); _dos_setvect(0x4A,active ? ptr_int4A : intnulle); }
Comme ca y'a une seule fonction pour activer et desativer les int 9 et 4A, et pas de variables globales exterieures (faudrait pas melanger les 2 variables pour chaque interruption en plus :!: )
Evidemment pour ceux qui n'aiment pas trop dos.h on peut toujours traduir en asm, mais ce que je trouve important c de tout rassembler en une fonx sinon on s'y retrouve plus... :?
Hors ligne
moi c tout en 1 pareil! je désact la 9, la 1C et la 4A par défaut lol
Hors ligne
non toi t'as une fonx pour tout desactiver, une fonx pour tout reactiver, et 3 variables globales
Hors ligne
c bien d'utiliser des var static pour la lisibilité du code, et d'erreurs éventuelles mais utiliser dos.h n'est pas très judicieux car ca pompe plus de place dans l'exe.
Par contre une question :
Si on désactive int 4A, pour l'affichage de l'heure (exemple dans GComm) ca va encore fonctionner ? (sachant que je passe par les ports pour lire)
Hors ligne
Je suppose que oui, vu que j'ai réglé l'heure avec Gcomm il y a qq jours, puis que j'ai lancé sonic pendant qq temps avec l'int 4A désactivée, et que l'heure est toujours correcte maintenant... Donc le fait de désactiver la 4A n'empeche pas les ports de s'incrémenter correctement (mais ce n'est qu'une supposition )
Hors ligne
oui Juliena raison, d'ailleurs ça marche sur gx2 (gx2 a l'int 4A désactivée) et pourtant y'a l'heure!
Hors ligne
"c bien d'utiliser des var static pour la lisibilité du code, et d'erreurs éventuelles mais utiliser dos.h n'est pas très judicieux car ca pompe plus de place dans l'exe. "
dos.h qui pompe des ressources... hmmm c'est vrai dans la mesure ou tu utilise une ou plusieurs fonctions, dès lors la taille dépend des fonctions utilisées(sachant que certaines s' appellent certainement)
dos.h c'est une header relié a une lib ( dos.lib, je suppose) et il ne contient que des structures/var globales/prototype neccessaires pour la librairie.
Si vous me croyez pas, essayer d' inclure une liste longue de librairies, normalement l' exe doit pas grossir autant que ça... meme pas, mais je préfère ne pas m' avancer, sait on jamais si une lib .h contiendrait pas une définition de fonction
Je vois que tout avance vite, lol
Ca donne envie de me remettre à la prog G100 rien que pour lancer TCX3 :twisted: (car ça serait plus que mon unique projet, BattleTour étant dès à présent dans l' impossibilité d'ètre porté sur G100 ( trop lent certainement, trop lourd, trop de trucs à gerer etc), dommage je peut po du moins encore
Hors ligne
tiens ben...vu qu'on aborde le sujet...
comment traduire la fonction _dos_getvect en asm...
j'ai pas de problemes pour setvect pour c pour le retour de dos_getvect que g un probleme
Hors ligne
et bien swifter tu l'as récrit plus haut en reprenant le code de superna pour désactivé int 4A
xor ax,ax
mov es,ax
mov ax,es:0x12A
mov OldIntSeg,ax
mov ax,es:0x128
mov OldIntOff,ax
il faut mémoriser l'offset + le segment qui en dans la table des interruptions (regarde la doc de Whyp pour savoir ou est l'interruption en question dans le tableau)
Sinon X-Thunder28, je n'ai pas voulu dire que le fait d'inclure dos.h faisait grossir l'exe, mais le fait d'utiliser les méthodes de dos.h. Dans mon cas ct _dos_getvect et _dos_setvect. Tu verras qu'il faut mieux que tu reécrives tes propres fonctions en asm.
Hors ligne
lol...merci mais je comprend ce que je modifie comme code...
mon probleme est que je n'arrive pas a faire le retour de la fonction set_vect...pour tous le reste de la fonction je sais faire
Hors ligne
en fait dans la doc de TC il est clairement dit que si on inclu dos.h, toutes les fonctions'qui y sont définies seront écrites en inline à chaque appel... donc pour que ça prenne moins de place, il ne faut pas inclure dos.h.
Hors ligne
Pages: 1