main() { register int i,j; /* use em for FOR loops */ point3d pointi; /* declare one instance of our point3d struct */ int color =1; /* color to draw triangle */ char com; /* for user input */ puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); puts("1-Spin Y 2-Spin X 3-Spin Z 9-Quit\n"); theport = a_init(); /* line a invokage */ theport -> plane0 = 1; theport -> plane1 = 0; theport -> plane2 = 0; theport -> plane3 = 0; for(i=0;i<nlines;i++) /* set up points-to-connect lookup table*/ { drawpt1[i] = point_[linefrom[i]]; drawpt2[i] = point_[lineto[i]]; } com = 0x32; /* set to spin about x */ while( com != 0x39) { if( Bconstat(2) ) /* if keypress */ com = Bconin(2); /* get input */ /* The main loop */ for(i=0;i<npts;i++) { pointi = point_[i]; /* get current point data. We do this for efficiency, since we will use this value many times within one loop it's more efficient to compute it's value only once */ if(com == 0x31) { /* spin y */ point_[i].x =( mu_global_c(pointi.x) - mu_global_s(pointi.z))>>BITSH; /* since our points are scaled AND or trig angles, sin&cos values are scaled we must divide by scale once here*/ point_[i].z =( mu_global_s(pointi.x) + mu_global_c(pointi.z))>>BITSH; } if(com == 0x32) { /* spin x */ point_[i].y =( mu_global_c(pointi.y) + mu_global_s(pointi.z))>>BITSH; point_[i].z =( -(mu_global_s(pointi.y)) + mu_global_c(pointi.z))>>BITSH; } if(com == 0x33) { /* spin z */ point_[i].x =( mu_global_c(pointi.x) + mu_global_s(pointi.y))>>BITSH; point_[i].y =( mu_global_c(pointi.y) - mu_global_s(pointi.x))>>BITSH; }
void main(void) { int Hdl; void *OldScreen; int dummy; long i; /* d‚termine la base line A pour la position souris */ linea_init(); /* charge l'image et la duplique en largeur */ Hdl=Fopen("MORETA.NEO",0); if (Hdl<0) { appl_exit(); Pterm0(); } Fseek(4L,Hdl,0); Fread(Hdl,32L,NewPalette); Fseek(128L,Hdl,0); for (i=0;i<200;i++) { LINE1 *p=(LINE1 *)&picbuf[0].line[i]; Fread(Hdl,sizeof(LINE1),p); p[1]=p[0]; } Fclose(Hdl); /* Duplique l'image en hauteur */ picbuf[1]=picbuf[0]; /* Installe la pallette et sauve l'ancienne */ InsPalette(); /* Sauve l'adresse de l'‚cran courant */ OldScreen=GetScreenPtr(); /* Installe la routine de scrolling en VBL */ InsVBL(Scrolling); /* Boucle en attendant un Ctrl-C */ while (1) if (Bconstat(2)<0 && (char)Bconin(2)==3) break; /* Remet tout en ordre et sort de l… */ RmvVBL(); SetScreenPtr(OldScreen); SetScroll(0); SetLineStride(0); RestPalette(); }
ssize_t CharHandle::ReadAt(void *cookie, off_t pos, void *buffer, size_t bufferSize) { char *string = (char *)buffer; int i; // can't seek for (i = 0; i < bufferSize; i++) { if (Bconstat(fHandle) == 0) return i; string[i] = (char)Bconin(fHandle); } return bufferSize; }
main() { int key; Supexec(doit); for (;;) { while (Bconstat(2)!=-1); key=Bconin(2); if (key=='r') Supexec(inner_loop); if (key=='c') Supexec(outer_loop); if (key=='s') Supexec(monitor_sound); if (key=='d') Supexec(disable_loop); if (key=='e') Supexec(enable_loop); if (key==' ') break; } }
void AtariBios_PumpEvents(_THIS) { int i; SDL_keysym keysym; SDL_AtariMint_BackgroundTasks(); /* Update pressed keys */ SDL_memset(bios_currentkeyboard, 0, ATARIBIOS_MAXKEYS); while (Bconstat(_CON)) { unsigned long key_pressed; key_pressed=Bconin(_CON); bios_currentkeyboard[(key_pressed>>16)&(ATARIBIOS_MAXKEYS-1)]=0xFF; } /* Read special keys */ UpdateSpecialKeys(Kbshift(-1)); /* Now generate events */ for (i=0; i<ATARIBIOS_MAXKEYS; i++) { /* Key pressed ? */ if (bios_currentkeyboard[i] && !bios_previouskeyboard[i]) SDL_PrivateKeyboard(SDL_PRESSED, SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE)); /* Key unpressed ? */ if (bios_previouskeyboard[i] && !bios_currentkeyboard[i]) SDL_PrivateKeyboard(SDL_RELEASED, SDL_Atari_TranslateKey(i, &keysym, SDL_FALSE)); } if (use_dev_mouse) { SDL_AtariDevMouse_PostMouseEvents(this, SDL_TRUE); } else { SDL_AtariXbios_PostMouseEvents(this, SDL_TRUE); } /* Will be previous table */ SDL_memcpy(bios_previouskeyboard, bios_currentkeyboard, sizeof(bios_previouskeyboard)); }
int replay_sample(FILE *fp, long f_size) { long f_left; SndBufPtr pointer; f_left = f_size; init_sound_system(); load_dsample(sound, fp, &f_left, sizeof(sound)/2); printf("\rPlayback sound\n"); buffoper(0x3); load_dsample(sound+sizeof(sound)/2, fp, &f_left, sizeof(sound)/2); buffptr(&pointer); while(pointer.play < sound+sizeof(sound)/2) buffptr(&pointer); while (f_left > 0) { buffptr(&pointer); while(pointer.play < sound+sizeof(sound)/2) buffptr(&pointer); printf("\r%lds ", (f_size-f_left)/(4*options.frequency)); fflush(stdout); load_dsample(sound, fp, &f_left, sizeof(sound)/2); buffptr(&pointer); while(pointer.play > sound+sizeof(sound)/2) buffptr(&pointer); printf("\r%lds ", (f_size-f_left)/(4*options.frequency)); fflush(stdout); load_dsample(sound+sizeof(sound)/2, fp, &f_left, sizeof(sound)/2); if (!f_left) { fseek(fp, 0, 0); f_left = filelength(fp); } } buffptr(&pointer); while(pointer.play < sound+sizeof(sound)/2 && !Bconstat(2)) buffptr(&pointer); load_dsample(sound, fp, &f_left, sizeof(sound)/2); buffoper(0x0); exit_sound_system(); return(0); }
void AtariBios_PumpEvents(_THIS) { int i; SDL_keysym keysym; SDL_memset(bios_currentkeyboard, 0, ATARIBIOS_MAXKEYS); while (Bconstat(_CON)) { unsigned long key_pressed; key_pressed=Bconin(_CON); bios_currentkeyboard[(key_pressed>>16)&(ATARIBIOS_MAXKEYS-1)]=0xFF; } UpdateSpecialKeys(Kbshift(-1)); for (i=0; i<ATARIBIOS_MAXKEYS; i++) { if (bios_currentkeyboard[i] && !bios_previouskeyboard[i]) SDL_PrivateKeyboard(SDL_PRESSED, SDL_Atari_TranslateKey(i, &keysym, SDL_TRUE)); if (bios_previouskeyboard[i] && !bios_currentkeyboard[i]) SDL_PrivateKeyboard(SDL_RELEASED, SDL_Atari_TranslateKey(i, &keysym, SDL_FALSE)); } if (use_dev_mouse) { SDL_AtariDevMouse_PostMouseEvents(this, SDL_TRUE); } else { SDL_AtariXbios_PostMouseEvents(this, SDL_TRUE); } SDL_memcpy(bios_previouskeyboard, bios_currentkeyboard, sizeof(bios_previouskeyboard)); }
main() /* Main control loop */ { unsigned char m; modulation = 0; BELL; while (!Bconstat(2)) { for (x = 0; x < 26; x++) /* Play one cycle of tune */ { m = note[x]+48+modulation; Note_On(m); sound(m, 127); for (z = 0; z < speed*time[x]; z++); /* timing loop */ Note_Off(m); sound(m, 0); } if (modulation < 36) { modulation = modulation+7; /* Modulate a fifth */ } else modulation = 0; } }
void edit_at(int row, int col, int max_length, int screen_length, char *string_to_edit, char filler, int fixed, int (*check_func)( char ), int convert_upper) { #define BLINK 2 #define NOBLINK 3 char *edit_string; int blink,logical_cursor, cursor, last_char, insert; int first_char_on_screen; int finished; long key; int upper,lower; char asc; int loop,loop2/*,delete_loop*/; char *blank=(char *)malloc(screen_length+1); edit_bottom_title(); for(loop=0;loop<=screen_length;loop++) blank[loop]=' '; blank[loop]='\0'; /* set up the string - create space, copy old, pad out new with filler */ edit_string=(char *)malloc(max_length+1); strcpy(edit_string,string_to_edit); logical_cursor=0; while(edit_string[logical_cursor]!='\0') logical_cursor++; last_char=logical_cursor; /* for(;logical_cursor<max_length;logical_cursor++) edit_string[logical_cursor]=filler; */ edit_string[logical_cursor]='\0'; cursor=0; logical_cursor=0; first_char_on_screen=0; insert=1; if(insert==1) { blink=BLINK; Cursconf(blink,0); } else { blink=NOBLINK; Cursconf(blink,0); } /* print string */ print_at_from(row,col,first_char_on_screen,screen_length,edit_string); SHOW_CURSOR AT(row,col) finished=0; while(!finished) { /* AT(0,0) printf(" %d ",last_char); */ while(!Bconstat(2)) ; key=Bconin(2); upper=(int)(key>>16); lower=(int)(key%256); asc=(char)lower&0x00FF; switch(upper) { case 0x4D: /* right arrow */ if(logical_cursor<last_char/*max_length*/) { logical_cursor++; if(cursor<screen_length) { cursor++; } else { cursor=screen_length; if(first_char_on_screen+screen_length<last_char /*max_length*/ && !fixed) { first_char_on_screen++; print_at_from(row,col,first_char_on_screen,screen_length,edit_string); } } } else { BELL logical_cursor=last_char/*max_length*/; } break; case 0x4B: /* left arrow */ if(logical_cursor>0) { logical_cursor--; } else { BELL logical_cursor=0; } if(cursor>0) { cursor--; } else { cursor=0; if(first_char_on_screen>0 && !fixed) { first_char_on_screen--; print_at_from(row,col,first_char_on_screen,screen_length,edit_string); } } /* logical_cursor--; cursor--; if(logical_cursor<0) { BELL logical_cursor=0; cursor=0; } else if(cursor<0) { cursor=0; if(first_char_on_screen>0 && !fixed) { first_char_on_screen--; print_at_from(row,col,first_char_on_screen,screen_length,edit_string); } }*/ break; case 0x1C: /* return */ finished=1; /* print_at_from(row,col,0,screen_length,blank); */ AT(row,col) printf("%s",blank+1); /* printf("%s",blank);*/ AT(row,col) strcpy(string_to_edit,edit_string); print_at_from(row,col,0,screen_length,string_to_edit); break; case 0x0E: /* backspace */ if(logical_cursor>0) { loop=logical_cursor-1; loop2=logical_cursor; while(loop2<=last_char) { edit_string[loop]=edit_string[loop2]; loop++; loop2++; } edit_string[last_char]='\0'; last_char--; logical_cursor--; if(cursor>0 && last_char<screen_length) { cursor--; } else { if(cursor==0) { first_char_on_screen--; if(first_char_on_screen<0) first_char_on_screen=0; } else { cursor--; } } if(first_char_on_screen+screen_length>last_char) { /* for(delete_loop=0;cursor+delete_loop<screen_length;delete_loop++) { AT(row,delete_loop+col) Bconout(2,' '); }*/ AT(row,col+cursor) printf("%s",blank+cursor+1); } } else BELL break; case 0x53: /* delete */ if(logical_cursor<last_char) { loop=logical_cursor; loop2=logical_cursor+1; while(loop2<=last_char) { edit_string[loop]=edit_string[loop2]; loop++; loop2++; } edit_string[last_char]='\0'; last_char--; if(first_char_on_screen+screen_length>last_char) { /* for(delete_loop=0;cursor+delete_loop<=screen_length;delete_loop++) { AT(row,delete_loop+col) Bconout(2,' '); } */ AT(row,col+cursor) printf("%s",blank+cursor+1); } } else BELL break; case 0x01: /* escape */ finished=1; /* print_at_from(row,col,0,screen_length,blank); *//* AT(row,col) CLEAR_EOL */ AT(row,col) printf("%s",blank+1); /* printf("%s",blank); */ AT(row,col) print_at_from(row,col,0,screen_length,string_to_edit); break; case 0x52: /* insert */ BELL if(insert==1) insert=0; else insert=1; if(insert==1) { blink=BLINK; Cursconf(blink,0); } else { blink=NOBLINK; Cursconf(blink,0); } break; default: if((*check_func)(asc)) { if(insert==1) { if(last_char<max_length) { loop=last_char-1; loop2=last_char; while(loop2>logical_cursor) { edit_string[loop2]=edit_string[loop]; loop--; loop2--; } last_char++; edit_string[last_char]='\0'; if(convert_upper) edit_string[logical_cursor]=toupper(asc); else edit_string[logical_cursor]=asc; logical_cursor++; cursor++; if(cursor>screen_length) { cursor=screen_length; if(first_char_on_screen+screen_length<last_char) first_char_on_screen++; } } else BELL } else { if(logical_cursor<last_char) { if(convert_upper) edit_string[logical_cursor]=toupper(asc); else edit_string[logical_cursor]=asc; logical_cursor++; cursor++; if(cursor>screen_length) { first_char_on_screen++; cursor=screen_length; } } else { if(logical_cursor>=last_char && last_char<max_length) { if(convert_upper) edit_string[last_char]=toupper(asc); else edit_string[last_char]=asc; logical_cursor=last_char; last_char++; logical_cursor++; if(logical_cursor>max_length) logical_cursor=max_length; edit_string[last_char]='\0'; cursor++; if(cursor>screen_length) { cursor=screen_length; if(first_char_on_screen+screen_length<max_length) first_char_on_screen++; } } else BELL } } } break; } if(finished!=1) { /* if(last_char<screen_length) { AT(row,col) CLEAR_EOL }*/ print_at_from(row,col,first_char_on_screen,screen_length,edit_string); AT(row,col+cursor) }
void options_screen() { /* options are */ /* 17 Lines -7 -1025 0 New Progs ON OFF SAME 1 New Accs ON OFF SAME 2 Auto Window PAGING SCROLLING 3 Accs Window PAGING SCROLLING 4 Sets Window PAGING SCROLLING 5 Other Window PAGING SCROLLING 6 Auto Path -------------------------------------- 7 Accs Path -------------------------------------- 8 <Set Keys> 9 <Resolution Info> 10 [ OK ] 11[ CANCEL ] 12[ SAVE ] */ #define MAX_OPTIONS 12 int options_y, options_x, curr_option, old_option, exit_options; long key; int upk,lowk; /*char temp[60]; */ /* local defaults */ int lnew_progs_flag; /* 1 = ON, 2 = OFF, 3 = SAME */ int lnew_accs_flag; int lauto_paging; /* 1 = paging, 2 = scrolling */ int laccs_paging; int lsets_paging; int lother_paging; char lauto_path[FILENAME_MAX]; char laccs_path[FILENAME_MAX]; curr_option=0; old_option=11; lnew_progs_flag=prog_defaults.new_progs_flag; lnew_accs_flag=prog_defaults.new_accs_flag; lauto_paging=prog_defaults.auto_paging; laccs_paging=prog_defaults.accs_paging; lsets_paging=prog_defaults.sets_paging; lother_paging=prog_defaults.other_paging; strcpy(lauto_path,prog_defaults.auto_path); strcpy(laccs_path,prog_defaults.accs_path); options_y=prog_defaults.rows-3-17+1; if(options_y>0) options_y=options_y/2; else options_y=1; options_x=prog_defaults.columns-40; if(options_x>0) options_x=options_x/2; else options_x=0; CLEAR_SCREEN centre_text("OPTIONS",line_buffer,prog_defaults.columns,' '); DISCARD_EOL AT(title_row,0) REVERSE_VIDEO printf("%s",line_buffer); NORMAL_VIDEO options_bottom_title(); AT(options_y,options_x+1) printf("New Progs"); print_on_off_same(options_y,options_x+1,lnew_progs_flag); AT(options_y+1,options_x+1) printf("New Accs"); print_on_off_same(options_y+1,options_x+1,lnew_accs_flag); AT(options_y+3,options_x+1) printf("Auto Window"); print_paging_scrolling(options_y+3,options_x+1,lauto_paging); AT(options_y+4,options_x+1) printf("Accs Window"); print_paging_scrolling(options_y+4,options_x+1,laccs_paging); AT(options_y+5,options_x+1) printf("Sets Window"); print_paging_scrolling(options_y+5,options_x+1,lsets_paging); AT(options_y+6,options_x+1) printf("Other Window"); print_paging_scrolling(options_y+6,options_x+1,lother_paging); remove_extension(lauto_path); AT(options_y+8,options_x+1) printf("Auto Path"); /* AT(options_y+9,options_x+1) printf("--------------------------------------"); */ AT(options_y+9,options_x+1) printf("%s",lauto_path); remove_extension(laccs_path); AT(options_y+11,options_x+1) printf("Accs Path"); /* AT(options_y+12,options_x+1) printf("--------------------------------------"); */ AT(options_y+12,options_x+1) printf("%s",laccs_path); AT(options_y+14,options_x+1) printf("<Set Keys>"); AT(options_y+14,options_x+22) printf("<Resolution Info>"); AT(options_y+16,options_x+3) printf("[ OK ]"); AT(options_y+16,options_x+15) printf("[ CANCEL ]"); AT(options_y+16,options_x+27) printf("[ SAVE ]"); upk=0;lowk=0;exit_options=0; print_option(options_y,options_x,old_option, curr_option); while(exit_options==0) { while(!Bconstat(2)) ; key=Bconin(2); upk=(int)(key>>16); lowk=(int)(key%256); if(upk==0x48 ) /* up arrow */ { old_option=curr_option; switch(curr_option) { case 11: case 10: curr_option=8; break; case 12: curr_option=9; break; case 9: curr_option=7; break; default: curr_option=curr_option-1; break; } if(curr_option<0) curr_option=MAX_OPTIONS; print_option(options_y,options_x,old_option, curr_option); } else { if(upk==0x50) /* down arrow */ { old_option=curr_option; switch(curr_option) { case 8: curr_option=10; break; case 9: curr_option =12; break; case 10: case 11: case 12: curr_option=0; break; default: curr_option=curr_option+1; break; } if(curr_option>MAX_OPTIONS) curr_option=0; print_option(options_y,options_x,old_option, curr_option); } else { if(upk==0x4D) /* right arrow */ { old_option=curr_option; switch(curr_option) { case 0: lnew_progs_flag++; if(lnew_progs_flag>3) lnew_progs_flag=1; print_on_off_same(options_y,options_x+1,lnew_progs_flag); break; case 1: lnew_accs_flag++; if(lnew_accs_flag>3) lnew_accs_flag=1; print_on_off_same(options_y+1,options_x+1,lnew_accs_flag); break; case 2: lauto_paging++; if(lauto_paging>SCROLLING) lauto_paging=PAGING; print_paging_scrolling(options_y+3,options_x+1,lauto_paging); break; case 3: laccs_paging++; if(laccs_paging>SCROLLING) laccs_paging=PAGING; print_paging_scrolling(options_y+4,options_x+1,laccs_paging); break; case 4: lsets_paging++; if(lsets_paging>SCROLLING) lsets_paging=PAGING; print_paging_scrolling(options_y+5,options_x+1,lsets_paging); break; case 5: lother_paging++; if(lother_paging>SCROLLING) lother_paging=PAGING; print_paging_scrolling(options_y+6,options_x+1,lother_paging); break; case 8: case 10: case 11: curr_option++; break; } if(curr_option>MAX_OPTIONS) curr_option=0; print_option(options_y,options_x,old_option, curr_option); } else { if(upk==0x4B) /* left arrow */ { old_option=curr_option; switch(curr_option) { case 0: lnew_progs_flag--; if(lnew_progs_flag<1) lnew_progs_flag=3; print_on_off_same(options_y,options_x+1,lnew_progs_flag); break; case 1: lnew_accs_flag--; if(lnew_accs_flag<1) lnew_accs_flag=3; print_on_off_same(options_y+1,options_x+1,lnew_accs_flag); break; case 2: lauto_paging--; if(lauto_paging<PAGING) lauto_paging=SCROLLING; print_paging_scrolling(options_y+3,options_x+1,lauto_paging); break; case 3: laccs_paging--; if(laccs_paging<PAGING) laccs_paging=SCROLLING; print_paging_scrolling(options_y+4,options_x+1,laccs_paging); break; case 4: lsets_paging--; if(lsets_paging<PAGING) lsets_paging=SCROLLING; print_paging_scrolling(options_y+5,options_x+1,lsets_paging); break; case 5: lother_paging--; if(lother_paging<PAGING) lother_paging=SCROLLING; print_paging_scrolling(options_y+6,options_x+1,lother_paging); break; case 9: case 11: case 12: curr_option--; break; } if(curr_option<0) curr_option=MAX_OPTIONS; print_option(options_y,options_x,old_option, curr_option); } else { if(upk==0x1C) /* return */ { switch(curr_option) { case 6: edit_at(options_y+9,options_x+1,FILENAME_MAX,37,lauto_path,'-',0,valid_filename_char,1); options_bottom_title(); break; case 7: edit_at(options_y+12,options_x+1,FILENAME_MAX,37,laccs_path,'-',0,valid_filename_char,1); options_bottom_title(); break; case 8: /* set keys */ break; case 9: /* set res stuff */ break; case 10: /* set defaults */ prog_defaults.new_progs_flag=lnew_progs_flag; prog_defaults.new_accs_flag=lnew_accs_flag; prog_defaults.auto_paging=lauto_paging; prog_defaults.accs_paging=laccs_paging; prog_defaults.sets_paging=lsets_paging; prog_defaults.other_paging=lother_paging; strcpy(prog_defaults.auto_path,lauto_path); strcpy(prog_defaults.accs_path,laccs_path); exit_options=1; break; case 11: exit_options=1; break; case 12: /* save defaults */ break; } } else { if(upk==prog_defaults.toggle_key_high) { switch(curr_option) { case 0: lnew_progs_flag++; if(lnew_progs_flag>3) lnew_progs_flag=1; print_on_off_same(options_y,options_x+1,lnew_progs_flag); break; case 1: lnew_accs_flag++; if(lnew_accs_flag>3) lnew_accs_flag=1; print_on_off_same(options_y+1,options_x+1,lnew_accs_flag); break; case 2: lauto_paging++; if(lauto_paging>SCROLLING) lauto_paging=PAGING; print_paging_scrolling(options_y+3,options_x+1,lauto_paging); break; case 3: laccs_paging++; if(laccs_paging>SCROLLING) laccs_paging=PAGING; print_paging_scrolling(options_y+4,options_x+1,laccs_paging); break; case 4: lsets_paging++; if(lsets_paging>SCROLLING) lsets_paging=PAGING; print_paging_scrolling(options_y+5,options_x+1,lsets_paging); break; case 5: lother_paging++; if(lother_paging>SCROLLING) lother_paging=PAGING; print_paging_scrolling(options_y+6,options_x+1,lother_paging); break; } } } } } } } } }
int m_stat () { return ((int) Bconstat (3) ? TRUE : FALSE); }