1

Comment obtenir la valeur du contraste avec une routine C ?

2

On ne peut pas. Il faut appeler un trap, donc on a besoin d'assembleur inline.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

3

rah, merde!
Tu as la routine ASM sous la main Kevin ?
Je suis pas tip-top en ASM, mais je px me débrouiller avec...

4

Au fait Kevin, avant que tu me le demande :
J'ai posté cette question sur le TIGCC message board parce que je suis à peu près
sur que Greg tombera dessus, ce qui n'est pas le cas ici wink

5

unsigned char *value_contrast(void);
asm("xdef value_contrast\n"
"value_contrast:\n"
"moveq #4,%d0\n"
"trap #9\n"
"rts");


© PpHd smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

ok, merci...c'est assez simple pour mon faible niveau ASM wink
Merci

7

deadbird a écrit :
rah, merde!
Tu as la routine ASM sous la main Kevin ? Je suis pas tip-top en ASM, mais je px me débrouiller avec...

C'est dans les sources de TI-Chess.
Vertyos a écrit :
© PpHd smile

Faux, c'est Thomas Nussbaumer qui a écrit cette routine en premier!
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

8

Voilà:
/*===========================================================================*/
/* due to a real strange behaviour the contrast gets lost when we set our    */
/* keyboard handler !!!                                                      */
/* I haven't managed to restore it correctly in the interrupt installer so I */
/* will do it just in the main routine ...                                   */
/*                                                                           */
/* The following routine fetches the address where the contrast will be      */
/* stored, so we can get and restore it later again                          */
/*===========================================================================*/

/* code not used anymore!! - BUT I leave it in if anyone is interested */

//unsigned char* ActiveContrastAddr(void);
//asm("ActiveContrastAddr:\n"
//    "    movem.l  %d0-%d1,-(%a7)\n"
//    "    move.w   #4,%d0\n"
//    "    trap     #9\n"
//    "    movem.l  (%a7)+,%d0-%d1\n"
//    "    rts");
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

9

La preuve par le code wink

10

Ce n'est pas la même routine. Et celle que j'ai posté, c'est PpHd qui me l'a donnée, et elle est plus optimisée ce que celle que tu as postée.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

11

ben c normal, elle sauvegarde pas les registres...
A mon avis, si Tn sauvegarde d1 et d0, il doit y avoir une raison...
Après, on gagne ptet un peu avec le moveq a la place du move.w, mais la routine est appelée une fois en principe, donc le gain est pas très utile...
Mon site perso : http://www.xwing.info

12

La sauvegarde de %d0 et de %d1 n'est pas nécessaire, parce que ces registres sont dans la classe "call-clobbered" (%d0-%d2/%a0-%a1).
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

13

so ...

14

Bref la routine de PpHd est préferable.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

15

c assez souvent le cas !

16

PpHd POWAAA ! :]

Kevin>Faux, c'est Thomas Nussbaumer qui a écrit cette routine en premier!
je ne voudrais pas dire, mais oser dire que c TN qui a fait ce code le premier me fait bien rire : comment peux tu affirmer une chose aussi invérifiable ?
c peut etre dans un de ses sources que tu l'a vue pour la premiere fois, mais arrêtte de généraliser roll
A la rigueur c peut etre lui qui l'a vulgarisée, mais c tout ce qu'on peut dire wink

17

Oui y'a même un semblant de doc dessus dans le pack de Fargo II alors ... roll
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

18

#define OSContrastAddress ({unsigned char* __addr; asm volatile ("moveq #4,%%d0; trap #9; move.l %%a0,%0": "=a"(__addr):: "d0","a0"); __addr; })

#define OSContrastValue *OSContrastAddress
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.