void main(void) { /* put your own code here */ EnableInterrupts; DDR1AD0 = DDRT = 0xFF; PT1AD0 = PTT = 0x00; set_baud_rate(9600); send(); fct_set(8,2,58); disp_on(1,1,1); entry_mode(1,0); clear_disp(); char val,buf[16] ; #define go 5000 while(1) { memset(buf,0,16); for(int v=0,i =0; i<16 ; i++) { v=0; while( chk_rx() >= 0 ? 0: i==0 ? 1: v++ < go ? 1: 0); if (v >= go){ break; } buf[i]=fetch_char(); } return_home(); clear_disp(); prt_str(buf); } for(;;) { _FEED_COP(); /* feeds the dog */ } /* loop forever */ /* please make sure that you never leave main */ }
// ----------------------------------------------------------------- void staple_mcrg(int dir1, int block) { register int i, dir2; register site *s; int j, bl, start, disp[4]; // Displacement vector for general gather msg_tag *tag0, *tag1, *tag2, *tag3, *tag4, *tag5, *tag6; matrix tmat1, tmat2; bl = 1; for (j = 1; j < block; j++) bl *= 2; // Block size start = 1; // Indicates staple sum not initialized // Loop over other directions for (dir2 = XUP; dir2 <= TUP; dir2++) { if (dir2 != dir1) { // Get link[dir2] from direction 2 * dir1 clear_disp(disp); disp[dir1] = 2 * bl; tag0 = start_general_gather_site(F_OFFSET(link[dir2]), sizeof(matrix), disp, EVENANDODD, gen_pt[0]); wait_general_gather(tag0); // Get link[dir1] from direction dir2 clear_disp(disp); disp[dir2] = bl; tag1 = start_general_gather_site(F_OFFSET(link[dir1]), sizeof(matrix), disp, EVENANDODD, gen_pt[1]); wait_general_gather(tag1); // Get link[dir1] from direction dir1 + dir2 clear_disp(disp); disp[dir1] = bl; disp[dir2] = bl; tag2 = start_general_gather_site(F_OFFSET(link[dir1]), sizeof(matrix), disp, EVENANDODD, gen_pt[2]); wait_general_gather(tag2); // Get link[dir2] from direction -dir2 clear_disp(disp); disp[dir2] = -bl; tag3 = start_general_gather_site(F_OFFSET(link[dir2]), sizeof(matrix), disp, EVENANDODD, gen_pt[3]); wait_general_gather(tag3); // Get link[dir1] from direction -dir2 clear_disp(disp); disp[dir2] = -bl; tag4 = start_general_gather_site(F_OFFSET(link[dir1]), sizeof(matrix), disp, EVENANDODD, gen_pt[4]); wait_general_gather(tag4); // Get link[dir1] from direction dir1 - dir2 clear_disp(disp); disp[dir1] = bl; disp[dir2]= -bl; tag5 = start_general_gather_site(F_OFFSET(link[dir1]), sizeof(matrix), disp, EVENANDODD, gen_pt[5]); wait_general_gather(tag5); // Get link[dir2] from direction 2 * dir1 - dir2 clear_disp(disp); disp[dir1] = 2 * bl; disp[dir2] = -bl; tag6 = start_general_gather_site(F_OFFSET(link[dir2]), sizeof(matrix), disp, EVENANDODD, gen_pt[6]); wait_general_gather(tag6); // Upper staple if (start) { // The first contribution to the staple FORALLSITES(i, s) { mult_nn(&(s->link[dir2]), (matrix *)(gen_pt[1][i]), &tmat1); mult_nn(&tmat1, (matrix *)(gen_pt[2][i]), &tmat2); mult_na(&tmat2, (matrix *)(gen_pt[0][i]), &(s->tempmat2)); } start = 0; } else {