1

bon voila, j'ai fait un petit programme qui me permet de faire des bench, mais il se passe des chose paranormale dedans...
En effet quand je lance mon programme, avant de faire le bench, j'efface l'ecran avec clrscr..et j'affiche une phrase (bench go) or il se trouve que: soit l'ecran ne s'efface pas , soit il s'efface qu'a moitie soit il sefface completement.. et la phrase, niette..
bisard non...
voici l'extrait de la source:
INT_HANDLER oldint7 = NULL;
INT_HANDLER oldint6 = NULL;
INT_HANDLER oldint5 = NULL;

volatile int mseconds50 =0;

volatile short count;


DEFINE_INT_HANDLER (myint5handler) { mseconds50--;}
DEFINE_INT_HANDLER (myint7handler) { }
DEFINE_INT_HANDLER (myint6handler) { }
unsigned short vaisseau[]={ 0x180, 0x180, 0x240, 0x240, 0x240, 0x240, 0x5A0, 0x7E0, 0xBD0, 0x2BD4, 0x33CC, 0x27E4, 0x4C32, 0xD99B, 0xDA5B, 0x7C3E};

//sprite teste
unsigned char S8[] = {
170,170,
//...
170,170
};


void bench()
{
	unsigned long k=0;
  clrscr();
	DrawStr(0,90,"Bench GO!",A_NORMAL);
  oldint5 = GetIntVec(AUTO_INT_5);
  SetIntVec(AUTO_INT_5, myint5handler);
	oldint6 = GetIntVec(AUTO_INT_6);
  SetIntVec(AUTO_INT_6, myint6handler);
  oldint7 = GetIntVec(AUTO_INT_7);
  SetIntVec(AUTO_INT_7, myint7handler);
	asm("
	movem.l	%d0,-(%a7)
	move.w	#400,%d0
	TRAP	#1
	movem.l	(%a7)+,%d0	
	")

Teste=XNewGPlan();
XClrGPlan(Teste);

k=0;	mseconds50 =20;
	while (mseconds50)
		{ 
/////////////////////////////////////////		
 XGSprite16x16(0,20,S8,Teste);
///////////////////////////////////////// 
 	 	 k++;

			k++;
		}
	printf_xy(10,0,"R1:  %ld /s",k);
 k=0;	mseconds50=20;
	while (mseconds50)
	 {
/////////////////////////////////////////
 XGSprite16x16(14,20,S8,Teste);
/////////////////////////////////////////
 	 	 k++;
	 }
	printf_xy(10,10,"R2: %ld Sp",k);
 k=0;	mseconds50=20;
	while (mseconds50)
	 {
/////////////////////////////////////////
 XGSprite16x16(20,40,S8,Teste);
/////////////////////////////////////////
 			k++;
	 } 
	 
	printf_xy(10,20,"R3: %ld Sp",k);
 k=0;	mseconds50=20;
	while (mseconds50)
	 {
 XGSpriteM16x16(26,80,S8,Teste);
 			k++;
	 } 
	 
	printf_xy(10,30,"R3: %ld Sp",k);

  ngetchx();
//	for (k=0;k<17;k++)  XGSpriteM16x16(k,k,S8,Teste);
// XGSpriteM16x16(10,19,S8,Teste);
   
	for (k=0;k<239;k++) XPxlPut(k,125,12,Teste);
  XCpyGPlanToLCD(Teste);

	SetIntVec(AUTO_INT_5, oldint5); 
	SetIntVec(AUTO_INT_6, oldint6); 
	SetIntVec(AUTO_INT_7, oldint7); 
	asm("
	movem.l	%d0,-(%a7)
	clr.w	%d0
	TRAP	#1
	movem.l	(%a7)+,%d0	
	")
	XDestrGplan(Teste);
  ngetchx();
}


Si qqn peut m'expliquer ce myster....
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

2

tu as vraiment besoin de détourner autanbt de auto ints ?
avatar
納 豆パワー!
I becamed a natto!!!1!one!

3

personne a une idée fou
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

4

tu n'as pas essayé de tracer ac un debugueur pour voir ce qui se passe ?

5

heu non, car je crain que cela depasse mes competence.. cf topic sur movem.l...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!