#define ARGL1 graphh_ptr[0] #define ARGL2 graphh_ptr[1] #define ARGL3 graphh_ptr[2] #define ARGL4 graphh_ptr[3] #define ARGL5 graphh_ptr[4] #define ARGL6 graphh_ptr[5] #define ARGL7 graphh_ptr[6] #define ARGL8 graphh_ptr[7] #define RETURNL graphh_ptr[8]= #define ANSWERL graphh_ptr[8] #define FC_LISTL graphh_ptr[9] #define EXECHDL2L graphh_ptr[10] #define COPIEHDL2L graphh_ptr[11] //void FastClearScreen_R(void *plane asm("%a0")); HANDLE CopieHdl2,ExecHdl2; long *scr_copy[4]; long *graphh_ptr; char ii_; //WINDOW wind; typedef struct { void* (*fc_ptr[255])(void); unsigned char fc_nb_args[255]; } NppLIB_returned_datas ; NppLIB_returned_datas *npp_lib_rt; unsigned char *fptr; long *args_input_ptr,*output_ptr,*npp_fc_num_ptr; signed long *argsss_list,*fc_data_return; void execos(unsigned char *str_cmd) { HANDLE handle; TRY handle = HS_popEStack (); push_parse_text (str_cmd); handle = HS_popEStack (); NG_execute (handle, FALSE); ONERR 0; ENDTRY HeapFree (handle); } /* long osvar2(unsigned char *var_name) { unsigned char *cptr,*lptr; long rval; SYM_ENTRY *SymPtr; HANDLE h;rval=0; SymPtr = DerefSym (SymFind (SYMSTR (var_name))); if (!SymPtr) { return 0;}; h = SymPtr->handle; lptr=HToESI (h); switch(*lptr) { case POSINT_TAG: rval=GetIntArg (lptr); return rval; break; case NEGINT_TAG: rval=(long)(-GetIntArg (lptr)); return rval; break ; case STR_TAG: rval=(long)(GetStrnArg (lptr)); return rval; break ; //case FLOAT_TAG: //return (signed long)(GetFloatArg(lptr)); break ; } } */ void loadasm(void) //charge la librairie npplib2 { long *data_ptr; graphh_ptr=loadlib("npplib2"); } long execasm(unsigned char f_num) { return exelib0(graphh_ptr,f_num); } void closeasm(void) { /* if(EXECHDL2L) HeapUnlock(EXECHDL2L); if(COPIEHDL2L) HeapFree(COPIEHDL2L); if(graphh_ptr) free(graphh_ptr); */ closelib(graphh_ptr); graphh_ptr=0; } void f_clrscr_(unsigned char *lcdad) //100 { ARGL1=(long)lcdad; execasm(55); MoveTo(0,0); } void f_clrlcd_(unsigned char *lcdad) //55 { ARGL1=(long)lcdad; execasm(55); } void f_dpix_(int x, int y,char gmode,unsigned char *lcdad) //51 { ARGL1=(long)x; ARGL2=(long)y; ARGL3=(long)gmode; ARGL4=(long)lcdad; execasm(51); } long f_sprt82_(int x,int y,int h,unsigned char *sprt,char gmode,unsigned char *lcdad, unsigned int *sprt2_return) //47 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=gmode; ARGL6=(long)lcdad; ARGL7=(long)sprt2_return; // printf("\nin graphh"); ngetchx(); return execasm(47); } long f_sprt162_(int x,int y,int h,unsigned int *sprt,char gmode,unsigned char *lcdad, unsigned int *sprt2_return) //48 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=gmode; ARGL6=(long)lcdad; ARGL7=(long)sprt2_return; // printf("\nin graphh"); ngetchx(); return execasm(48); } long f_sprt322_(int x,int y,int h,unsigned long *sprt,char gmode,unsigned char *lcdad, unsigned int *sprt2_return) //49 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=gmode; ARGL6=(long)lcdad; ARGL7=(long)sprt2_return; // printf("\nin graphh"); ngetchx(); return execasm(49); } long f_gsprt8_(int x,int y,int h,unsigned char *sprite_buf,unsigned char *lcdad) //33 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprite_buf; ARGL5=(long)lcdad; // printf("\nin graphh"); ngetchx(); return execasm(33); } long f_gsprt16_(int x,int y,int h,unsigned int *sprite_buf,unsigned char *lcdad) //34 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprite_buf; ARGL5=(long)lcdad; // printf("\nin graphh"); ngetchx(); return execasm(34); } long f_gsprt32_(int x,int y,int h,unsigned long *sprite_buf,unsigned char *lcdad) //63 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprite_buf; ARGL5=(long)lcdad; // printf("\nin graphh"); ngetchx(); return execasm(63); } long f_gpix_(long x,long y,unsigned char *lcdad) { ARGL1=x; ARGL2=y; ARGL3=(long)lcdad; return execasm(52); } unsigned char *f_light_(unsigned char **lcdad_ptr) //72 { PortSet((*lcdad_ptr=GrayGetPlane(LIGHT_PLANE)),239,127); return *lcdad_ptr; } unsigned char *f_dark_(unsigned char **lcdad_ptr) //73 { PortSet((*lcdad_ptr=GrayGetPlane(DARK_PLANE)),239,127); return *lcdad_ptr; } unsigned char *f_setlcd_(unsigned char *new_lcdmem,unsigned char **lcdad_ptr) //50 { unsigned char *old_lcdmem; old_lcdmem=*lcdad_ptr; PortSet ((*lcdad_ptr=new_lcdmem), 239, 127); return old_lcdmem; } void f_dcircle_(int x,int y,int r,unsigned char gmode, unsigned char *lcdad) //124 { ARGL1=x; ARGL2=y; ARGL3=r; ARGL4=(long)gmode; ARGL5=(long)lcdad; execasm(124); } void f_fillcirc_(int x,int y,int r,unsigned char gmode,unsigned char *lcdad) //125 { ARGL1=x; ARGL2=y; ARGL3=r; ARGL4=(long)gmode; ARGL5=(long)lcdad; execasm(125); } long f_sprt8x_(int x, int y,int h,int w,unsigned char *sprite,unsigned char gmode, unsigned char *lcdad) //154 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=w; ARGL5=(long)sprite; ARGL6=(long)gmode; ARGL7=(long)lcdad; execasm(154); } unsigned char *f_gsprt8x_(int x,int y,int h,unsigned char *lcdad,unsigned char *dest,int w) //174 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)lcdad; ARGL5=(long)dest; ARGL6=(long)w; return execasm(174); } unsigned char *f_savescr_(unsigned char indexx,unsigned char *lcdad) //162 { unsigned char *ptrrr; if(scr_copy[indexx]!=NULL) { if(indexx>4) return 0; ptrrr=(unsigned char *)scr_copy[indexx]; } else { if(indexx>4) return 0; scr_copy[indexx]=(long*)(ptrrr=malloc(LCD_SIZE)); if(!ptrrr) {printf("\nMemory Error in savescr()"); ngetchx(); return 0;} } ARGL1=(long)lcdad; ARGL2=(long)ptrrr; execasm(162); return ptrrr; } unsigned char *f_loadscr_(unsigned char indexx,unsigned char *lcdad) //163 { unsigned char *ptrrr; if(indexx>4) return 0; ptrrr=(unsigned char *)scr_copy[indexx]; if(ptrrr) { ARGL1=(long)ptrrr; ARGL2=(long)lcdad; execasm(163); } return ptrrr; } void init_save_load_scr(void) { int i; for(i=0;i<4;i++) scr_copy[i]=0; } char f_drawpic_(int x, int y, unsigned char *pic_name, unsigned char gmode) { char *fptr, *cptr; unsigned char gmode2; SYM_ENTRY *SymPtr; HANDLE h; SCR_RECT full_screen = {{0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1}}; SymPtr = DerefSym (SymFind (SYMSTR (pic_name))); if (!SymPtr) { return 0;} h = SymPtr->handle; if (HeapGetLock (h)) //si archivé { cptr = fptr = HeapDeref (h); h = 0; } else { cptr = fptr = HLock (h); } switch(gmode) { case 2: //xor gmode2=A_XOR; break; case 3: //AND gmode2=A_AND; break; case 0: //or gmode2=A_OR; break; case 1: //blank gmode2=A_REPLACE; break; } BitmapPut (x, y, cptr+2, &full_screen, gmode2); if (h) HeapUnlock (h); return 1; } unsigned int f_getpic_(unsigned char x0, unsigned char y0, unsigned char x1, unsigned char y1,unsigned char *tivar_str) { SCR_RECT rect; unsigned char bmp[LCD_SIZE+4],*base; unsigned int len,i; short bmp_size; HANDLE handle; rect.xy.x0=x0; rect.xy.y0=y0; rect.xy.x1=x1; rect.xy.y1=y1; bmp_size=BitmapSize (&rect); BitmapGet (&rect, bmp); handle = CreateFile2(tivar_str); if(!handle) { printf("\nMemory error in getpic()."); ngetchx(); exit(2); } for(i=0;i HeapSize(handle) - 10) return; *(unsigned short*)base = len-1; CloseFile_type (handle,PIC_TAG); return bmp_size+3; } char f_prettyxy_(int x,int y, unsigned char *expr_str) //245 { char rtn; TRY push_parse_text (expr_str); NG_rationalESI (top_estack); is_wind=1; Print2DExpr (Parse2DExpr (top_estack, FALSE), &wind, x, y); rtn=1; ONERR rtn=0; ENDTRY return rtn; /* sprintf(buff,"f_getwbt_(%s,&%s,&%s,&%s)",buff1,buff2,buff3,buff4); push_in_my_stack(buff);*/ } char f_getwbt_(unsigned char *expr_str,long *ww,long *bb,long *tt) //246 { short wp,bp,tp; char rtn; TRY push_parse_text (expr_str); Parse2DExpr (top_estack, FALSE); Parms2D (top_estack, &wp, &bp, &tp); *ww=wp; *bb=bp; *tt=tp; rtn=1; ONERR rtn=0; ENDTRY return rtn; } void f_drawstr_(int x,int y,unsigned char *str, char gmode) //75 { ARGL1=(long)x; ARGL2=(long)y; ARGL3=(long)str; ARGL4=(long)gmode; execasm(75); } void f_lscroll_(unsigned char nbline,unsigned char *lcdad) //90 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(90); } void f_rscroll_(unsigned char nbline,unsigned char *lcdad) //91 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(91); } void f_uscroll_(unsigned char nbline,unsigned char *lcdad) //92 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(92); } void f_bscroll_(unsigned char nbline,unsigned char *lcdad) //93 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(93); } void f_lscroll2_(unsigned char nbline,unsigned char *lcdad) //103 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(103); } void f_rscroll2_(unsigned char nbline,unsigned char *lcdad) //104 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(104); } void f_uscroll2_(unsigned char nbline,unsigned char *lcdad) //105 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(105); } void f_bscroll2_(unsigned char nbline,unsigned char *lcdad) //106 { ARGL1=nbline; ARGL2=(long)lcdad; execasm(106); } void f_sprt8_(int x,int y,int h,unsigned char *sprt,unsigned char gmode,unsigned char *lcdad) //43 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=(long)gmode; ARGL6=(long)lcdad; execasm(43); } void f_sprt16_(int x,int y,int h,unsigned int *sprt,unsigned char gmode,unsigned char *lcdad) //44 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=(long)gmode; ARGL6=(long)lcdad; execasm(44); } void f_sprt32_(int x,int y,int h,unsigned long *sprt,unsigned char gmode,unsigned char *lcdad) //53 { ARGL1=x; ARGL2=y; ARGL3=h; ARGL4=(long)sprt; ARGL5=(long)gmode; ARGL6=(long)lcdad; execasm(53); } void f_dline_(int x0,int y0,int x1,int y1,unsigned char gmode,unsigned char *lcdad) //40 { ARGL1=x0; ARGL2=y0; ARGL3=x1; ARGL4=y1; ARGL5=(long)gmode; ARGL6=(long)lcdad; execasm(40); } //f_dmline_(%s,%s,%s,gmode,lcdad)",buff1,buff2,buff3); void f_dmline_(unsigned char *xl,unsigned char *yl,unsigned int nbpoints,unsigned char gmode,unsigned char *lcdad) //40 { ARGL1=(long)xl; ARGL2=(long)yl; ARGL3=nbpoints; ARGL4=(long)gmode; ARGL5=(long)lcdad; execasm(40); } void f_fillrect_(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned char gmode,unsigned char *lcdad) //54 { ARGL1=(long)x1; ARGL2=(long)y1; ARGL3=(long)x2; ARGL4=(long)y2; ARGL5=(long)gmode; ARGL6=(long)lcdad; execasm(54); } long f_gsprt_(unsigned char cval,unsigned char rval,unsigned char *picvar,unsigned char **sprt_dest) //102 { ARGL1=cval; ARGL2=rval; ARGL3=(long)picvar; ARGL4=(long)sprt_dest; //printf("\nin graphh, args_list=%ld, sprt_dest=%ld-%ld",argsss_list,sprt_dest,ARGL4); ngetchx(); return execasm(102); } unsigned int f_files_(unsigned char *rep_str,unsigned char **dest_file_ptr) //114 { ARGL1=(long)rep_str; ARGL2=(long)dest_file_ptr; return execasm(114); }