Exemplo n.º 1
0
int main()
{
	init();       //初始化 
	tournament(N);//求解
	print();      //打印结果
	endprogram(); //回收内存
	return 0;
}
Exemplo n.º 2
0
void kmain(ol_mmap_register_t mmr)
{
	textinit();
	clearscreen();

	println("The openLoader kernel is executing. \n");

	print("Current stack pointer: ");
	ol_registers_t regs = getregs();
	printnum(regs->esp, 16, FALSE, FALSE);
	putc(0xa);

	char status = inb(0x60);
	if((status & 2) == 2)
	{
		println("The A20 gate is open.");
		putc(0xa);
	}
	
	pic_init();
	setIDT();
	outb(OL_KBC_COMMAND, OL_KB_INIT);	// enable the keyboard

// display mmap
	init_mmap(mmr);
	println("Multiboot memory map:\n");
	display_mmap(mmr);

#if 0
	uint8_t active = ide_init(bootdrive);
	ide_read(0x100, 1<<20, &bootdrive[active], 60);
	uint8_t eax = ata_identify();
	printnum(active, 16, FALSE, FALSE);
#endif

	putc(0xa);

	println("Waiting for service interrupts..");
	while(1) halt();
	println("End of program reached!");
	endprogram();
}
Exemplo n.º 3
0
 void handle(event mev)
 {int f=0;
  me[2]=me[1];
  me[1]=mev;
  if(is1(sc.flag,15))
  {if(me[1].key==1)endprogram();
   else status("Press any key to exit");

  }
  if(me[1].key==1&&me[1].ch==27)
  {set0(sc.flag,0);
   set0(sc.flag,1);
   set1(sc.flag,15);
   status("Press any key to exit");
  }
  t1.handle(me);
  t2.handle(me);
  t3.handle(me);
  sc.handle(me);
  e1.handle(me);
  e2.handle(me);
  e3.handle(me);e3.st[0]=0;
  e4.handle(me);e4.st[0]=0;
  e5.handle(me);e5.st[0]=0;
  e6.handle(me);e6.st[0]=0;
  b.handle(me);
  rb1.handle(me);
  rb2.handle(me);
  scrbar.handle(me);
  if(is1(sc.flag,15))return;
  sc.dt=(0.5*scrbar.x1)/scrbar.w;
  if(is1(e1.flag,2)||is1(e1.flag,4))
  {set0(e1.flag,1);set0(e1.flag,2);set0(e1.flag,4);set1(e2.flag,1);
  }
  if(is1(e2.flag,2))
  {set0(e2.flag,1);set0(e2.flag,2);
  }
  if(is1(e2.flag,3))
  {set0(e2.flag,3);set0(e2.flag,1);set1(e1.flag,1);
  }
  if(e1.st[0]!=0)
  { set1(f,2);for(int i=0;e1.st[i]!=0;i++)if(!isdigit(e1.st[i])){set1(f,0);break;}
  }
  if(e2.st[0]!=0)
  { set1(f,3);for(int i=0;e2.st[i]!=0;i++)if(!isdigit(e2.st[i])){set1(f,1);break;}
  }
  switch(f&3)
  {case 1:status("Invalid Mass 1");break;
   case 2:status("Invalid Mass 2");break;
   case 3:status("Invalid Mass 1 and Mass 2");
  };
  if((f&3)!=0||(f>>2)!=3)
  { set0(sc.flag,0);
    set0(b.flag,0);
    set0(rb1.flag,0);
    set0(rb2.flag,0);
  }
  if(is0(sc.flag,0)&&(f&3)==0&&is0(sc.flag,1))status("Enter Mass 1 and Mass 2");
  if(is1(sc.flag,0))status("Use Mouse to set position and direction of velocity of both masses");
  if((f&3)==0&&(f>>2)==3&&is0(sc.flag,1))
  {set1(sc.flag,0);
   long lm1,lm2;
   sscanf(e1.st,"%ld",&lm1);
   sscanf(e2.st,"%ld",&lm2);
   sc.m1=lm1;
   sc.m2=lm2;
   set1(b.flag,0);
   set1(rb1.flag,0);
   set1(rb2.flag,0);
  }
  if(is1(b.flag,3))          //play
  {set0(b.flag,3);
   set0(e1.flag,0);
   set0(e2.flag,0);
   set0(sc.flag,0);
   set1(sc.flag,1);
   set0(rb1.flag,0);
   set0(rb2.flag,0);
  }
  if(is1(b.flag,4))         //pause
  {set0(b.flag,4);
   set1(e1.flag,0);
   set1(e2.flag,0);
   set1(sc.flag,0);
   set0(sc.flag,1);
   set1(rb1.flag,0);
   set1(rb2.flag,0);
  }
  if(is1(sc.flag,0)&&(f&3)==0)
  {sprintf(e3.st,"%f",sc.r1.x);
   sprintf(e4.st,"%f",sc.r1.y);
   sprintf(e5.st,"%f",sc.r2.x);
   sprintf(e6.st,"%f",sc.r2.y);
  }
  if(is1(sc.flag,1)&&(f&3)==0)
  {sprintf(e3.st,"%f",sc.d1.x);
   sprintf(e4.st,"%f",sc.d1.y);
   sprintf(e5.st,"%f",sc.d2.x);
   sprintf(e6.st,"%f",sc.d2.y);
  }
  if(is1(rb1.flag,2))
  {set0(rb1.flag,2);
   set1(rb1.flag,1);
   set0(rb2.flag,1);
   set0(sc.flag,13);

  }
  if(is1(rb2.flag,2))
  {set0(rb2.flag,2);
   set1(rb2.flag,1);
   set0(rb1.flag,1);
   set1(sc.flag,13);

  }
 }