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 30 Dec 2002 15:53:34

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

fonction en ASM

Code:

invgpix(unsigned int X,unsigned int Y)     // inverse les couleurs: noir devient blanc et inversement. gris reste gris !
{ 
X=127-X; 
Y=63-Y; 
asm { 
mov ax,0x1A20 
mov es,ax 
mov cx,X 
mov si,Y 
shl si,4 
mov ch,cl 
shr cx,3 
shr cl,5 
xor bx,bx 
mov bl,ch 
add si,bx 
xor bl,bl 
db 0x0F,0x14,0xC3 
xor es:[si],bl 

mov ax,0x1AA0 
mov es,ax 
xor bl,bl 
db 0x0F,0x14,0XC3 
xor es:[si],bl 
} 
return 0; 
}

Est-ce que quelqu'un pourai modifier cette fonction pour que au-lieu de transformer le blanc en noir et inversement, gris reste gris ca serait blanc devient gris, noir reste noir.
Merci !!!

Hors ligne

 

#2 31 Dec 2002 05:38:41

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

Re: fonction en ASM

Code:

invgpix2(unsigned int X,unsigned int Y)     // inverse les couleurs: gris devient blanc et inversement. noir reste noir ! 
{ 
X=127-X; 
Y=63-Y; 
asm { 
mov ax,0x1A20 
mov es,ax 
mov cx,X 
mov si,Y 
shl si,4 
mov ch,cl 
shr cx,3 
shr cl,5 
xor bx,bx 
mov bl,ch 
add si,bx 
xor bl,bl 
db 0x0F,0x14,0xC3 
xor es:[si],bl 

mov ax,0x1A60 
mov es,ax 
xor bl,bl 
db 0x0F,0x14,0XC3 
xor es:[si],bl 
} 
return 0; 
} 

Pensez à surveiller mes releases wink

Hors ligne

 

#3 31 Dec 2002 05:44:20

Grizzly
Membre Communauté Graph100
Lieu: Pôle Nord
Date d'inscription: 09 Dec 2002
Messages: 337
Site web

Re: fonction en ASM

C'est CA l'ASM ! :?
J'ai franchement aucune chance de l'apprendre ! sad
'sigh'  :cry:


Bah !
Et puis allez sur le chat => #Xquizz !
Lol, un peu de pub !
www.15-25ans.net/forum forum du site
www.15-25ans.net

Hors ligne

 

#4 31 Dec 2002 05:47:18

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

Re: fonction en ASM

Au fait j'ai pas testé, j'ai pas le temps, mais vu comment la fonction que tu as donnée est construite je pense que ca doit marcher... Chuis cependant pas sur a 100%, faudrait essayer!


Pensez à surveiller mes releases wink

Hors ligne

 

#5 31 Dec 2002 07:11:14

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

C'est presque ca :
dans la fonction, blanc devient gris, gris devient noir, noir devient gris

Hors ligne

 

#6 31 Dec 2002 09:01:20

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

Re: fonction en ASM

Ouille oui ca s'annonce plus compliqué que j'avais pensé...  :?


Pensez à surveiller mes releases wink

Hors ligne

 

#7 31 Dec 2002 09:09:28

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: fonction en ASM

c complexe car il faut
si ya un bit sur els 2couches, laisser
si y'en a un sur une des couches, l'enlever, et si y'en a pas, en mettre un
tu cherche la complication jean-fran !

Hors ligne

 

#8 31 Dec 2002 09:25:28

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: fonction en ASM

vopila ta fonction, ça devrai marcher !

Code:

invnpix(unsigned int X,unsigned int Y)
{ 
///////////////
X=127-X; 
Y=63-Y; 
asm { 
mov ax,0x1A20 
mov es,ax 
mov cx,X 
mov si,Y 
shl si,4 
mov ch,cl 
shr cx,3 
shr cl,5 
xor bx,bx 
mov bl,ch 
add si,bx 
///////////////
mov bl,es:[si]
add si,0x800 //je sautte de 2 pages
mov bh,es:[si]
shr bx,cl
and bx,0x11
//g recuperré letat des 2 bits sur les 2 couches
//ça va chauffer
cmp bx,0x11
je exit
jz nobit
mov bx,0x11
not bx
shl bx,cl
and es:[si],bh
sud si,0x800
and es:[si],bl
jmp exit
}
nobit:
asm{
mov bh,1
shl bh,cl
or es:[si],bh }
exit:
}

dsl julien !

Hors ligne

 

#9 31 Dec 2002 09:55:32

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

Re: fonction en ASM

Essai: ( c'est assez compliqué pour moi, je promets rien! )

Code:

invgpix(unsigned int X,unsigned int Y)     // inverse les couleurs: noir devient blanc et inversement. gris reste gris ! 
{ 
X=127-X; 
Y=63-Y; 
asm { 
    mov ax,0x1a20
    mov es,ax
    mov ax,0x1AA0
    mov ds,ax
    mov cx,X
    mov dx,Y
    mov si,0x003f
    sub si,dx
    xor dx,dx
    sub cx,0x80
    not cx
    push cx
    and cl,0xf8
    shl cx,0x03
    add si,cx
    pop cx
    and cl,0x07
    mov dl,es:[si];
    mov al,dl
    ror al,cl;
    and al,1;
    cmp al,0;    // teste la valeur du pixel sur 0x1A20
    je noir
    mov dh,ds:[si]  // si le pixel est allumé
    mov al,1
    shl al,cl 
    and dh,al
    or dl,dh     // copie le pixel de 0x1AA0 sur 0x1A20
    mov es:[si],dl
    jmp fin
noir:
    mov dl,es:[si];    // sinon on inverse le pixel de 0x1AA0
    db 0x0F,0x016,0x0C3    //not1 bl,cl (specifique au nec v20/30)
    mov es:[si],dl; 
fin:
} } 

Pensez à surveiller mes releases wink

Hors ligne

 

#10 31 Dec 2002 09:56:34

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

Re: fonction en ASM

merci superna, c'ets un peu chaud pour moi  lol
( je sais pas ce que donnerait celle que je viens de mettre ( deux fois, dsl ) )

edit: j'ai oublié de fermer les crochets avant les labels noir et fin et de les rouvrir apres!


Pensez à surveiller mes releases wink

Hors ligne

 

#11 31 Dec 2002 10:00:41

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

Re: fonction en ASM

Et vlan un bug: c'est

Code:

noir: 
   mov bl,es:[si];   // sinon on inverse le pixel de 0x1AA0 
   db 0x0F,0x016,0x0C3   //not1 bl,cl (specifique au nec v20/30) 
   mov es:[si],bl; 
fin:

à la fin!


Pensez à surveiller mes releases wink

Hors ligne

 

#12 31 Dec 2002 12:48:12

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

Desoler superna mais il me dit :

Code:

Expression syntax : 
sud si, 0x800  // erreur

Ca veut dire quoi ???

Hors ligne

 

#13 31 Dec 2002 12:49:31

Superna
Ex-Trouvetou G100
Lieu: Sous Linux ^^
Date d'inscription: 01 Feb 2002
Messages: 2275
Site web

Re: fonction en ASM

remplace par

Code:

sub si,0x800 //pas sud

Hors ligne

 

#14 31 Dec 2002 12:49:42

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

Re: fonction en ASM

c'est 'sub' et pas 'sud'


Pensez à surveiller mes releases wink

Hors ligne

 

#15 31 Dec 2002 12:50:16

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

Re: fonction en ASM

... décidément  lol


Pensez à surveiller mes releases wink

Hors ligne

 

#16 31 Dec 2002 13:06:14

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

Code:

#include <casio2.h>
#include <prgnuls.h>
#include <ascii.h>

int main() {
  gclear();
  setDB();
  contrast(1,5);
  print3(1,1,"SALUT");
  invRect2(1,1,40,40);
  getch();
  setC3();
  contrast(0,5);
  gclear();
  return(0);
  }

J'utilise la librairie prgnuls.h et j'ai remplacer la fonction invpix par celle de superna.
Regarder ce que ca fait lol , y a le A qui est a moitier afficher, le U qui l'est pas du tout :?: , et y a aucune couleur qui est modifier :?:  :?:
Mais c'est bon ca fait pas planter la calto.

Hors ligne

 

#17 31 Dec 2002 13:27:41

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

Re: fonction en ASM

Avec quelle fonction?
celle de superna ou la mienne?
Essaie avec l'autrre pour voir...


Pensez à surveiller mes releases wink

Hors ligne

 

#18 31 Dec 2002 14:54:05

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

Julien, avec ta fnction ca fait :

Code:

Undefined label fin
Undefined label noir

Hors ligne

 

#19 31 Dec 2002 19:28:37

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

Re: fonction en ASM

Oui j'avais dit d'ailleurs que j'avais oublié de fermer les crochets avant de mettre ces mots:

Code:

invgpix2(unsigned int X,unsigned int Y)     // inverse les couleurs: gris devient blanc et inversement. noir reste noir ! 
{ 
X=127-X; 
Y=63-Y; 
asm { 
   mov ax,0x1a20 
   mov es,ax 
   mov ax,0x1AA0 
   mov ds,ax 
   mov cx,X 
   mov dx,Y 
   mov si,0x003f 
   sub si,dx 
   xor dx,dx 
   sub cx,0x80 
   not cx 
   push cx 
   and cl,0xf8 
   shl cx,0x03 
   add si,cx 
   pop cx 
   and cl,0x07 
   mov dl,es:[si]; 
   mov al,dl 
   ror al,cl; 
   and al,1; 
   cmp al,0;    // teste la valeur du pixel sur 0x1A20 
   je noir 
   mov dh,ds:[si]  // si le pixel est allumé 
   mov al,1 
   shl al,cl 
   and dh,al 
   or dl,dh    // copie le pixel de 0x1AA0 sur 0x1A20 
   mov es:[si],dl 
   jmp fin }; 
noir: asm{
   mov bl,es:[si]   // sinon on inverse le pixel de 0x1AA0 
   db 0x0F,0x016,0x0C3   //not1 bl,cl (specifique au nec v20/30) 
   mov es:[si],bl }
fin: 
 } 

Pensez à surveiller mes releases wink

Hors ligne

 

#20 01 Jan 2003 18:08:36

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

Julien, ta fonction elle donne une bouilli de pixel en bas de l'ecran et le texte reste la, toujours noir. :?:  :?:  :?:

Hors ligne

 

#21 01 Jan 2003 18:11:47

Jean-Fran
Membre Communauté Graph100
Date d'inscription: 05 Dec 2002
Messages: 331

Re: fonction en ASM

Sinon il y aurrait pas une autre methode  pour le faire, en C :?:  :?:  :?:

Hors ligne

 

#22 02 Jan 2003 03:41:12

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

Re: fonction en ASM

Ben ecoute le texte il est sensé rester noir puisque tu as demandé une fonction qui inverse gris et blanc, et qui touche pas au noir! Donc si tu écris SALUT en noir, ca devrait rester noir!
Pour les pixels en bas d'écran je sais pas du tout... je m'y connais pas assez en asm pour ca, c'était juste un essai de ma part en attendant que qqn ( comme superna, hum  lol ) donne une meilleure fonction...

Y'a moyen de la faire en C, mais ca va etre extremement lent!
Tu peux le faire avec les fonctions du mode C3, donc celles pour le noir et blanc ( celles ou tu peux donner un numéro de page en parametre ):

Code:

void invpix2(unsigned char x, unsigned char y)
{
if (tstpixel(x,y,0)) setpix(x,y,0,tstpixel(x,y,2));
else invpixel(x,y,2);
}

( en supposant que ces fonctions portent bien ce nom la bien sur)

Ca ca devrait aller mais n'espere pas avoir un résultat rapide!


Pensez à surveiller mes releases wink

Hors ligne

 

Pied de page des forums

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