int main() { init(); //初始化 tournament(N);//求解 print(); //打印结果 endprogram(); //回收内存 return 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(); }
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); } }