U0 Main() { "Julia Set Generator\n"; SettingsPush; I64 k,j; CBGR bgr; for (k=0; k<16; k++) { j=0xFF*k/15; bgr.b=j; bgr.g=j; bgr.r=j; SetVGAPaletteColor(k, bgr); } CDC *dc=DCAlias; I64 row, col; for (row=0; row<ROWS; row++) { for (col=0; col<COLS; col++) { F64 r=LEFT+ToF64(COL_INC*col), i=BOTTOM+ToF64(ROW_INC*row); dc->color=getColor(-0.8, 0.156, r, i); I64 x=col*(640/COLS), y=row*(480/ROWS); GrRect(dc, x, y, 640/COLS, 480/ROWS); } } PressAKey; DCFill(dc); DCDel(dc); SettingsPop; }
U0 TimeIns() { I64 start1,end1,start2,end2,overhead_time,test_time; I64 reg i,reg temp; Bool old_preempt=Preempt(OFF); CPURep; //Measure Loop Overhead start1=GetTimeStamp; for (i=0;i<SAMPLE_SIZE;i++) { } end1=GetTimeStamp; overhead_time=end1-start1; //Measure remainder... start2=GetTimeStamp; for (i=0;i<SAMPLE_SIZE;i++) temp=i%0x400; end2=GetTimeStamp; test_time=end2-start2; "Remainder Version #1 Cycles\t: %10.5f\n", ToF64(test_time-overhead_time)/SAMPLE_SIZE; //Measure remainder... start2=GetTimeStamp; for (i=0;i<SAMPLE_SIZE;i++) temp=i&0x3FF; end2=GetTimeStamp; test_time=end2-start2; "Remainder Version #2 Cycles\t: %10.5f\n", ToF64(test_time-overhead_time)/SAMPLE_SIZE; Preempt(old_preempt); }
U0 Init(CDC *dc) { I64 i,w=Fs->win_pixel_width,h=Fs->win_pixel_height; F64 scale=h/5.0; DocClear; DCFill(dc); dc->color=BLACK; GrLine(dc,0,h/2,w-1,h/2); GrLine(dc,w/2,0,w/2,h-1); for (i=-2;i<=2;i++) { dc->color=BLACK; GrLine(dc,w/2-3,h/2-scale*i,w/2+3,h/2-scale*i); if (i) { dc->color=DKGRAY; GrPrintF(dc,w/2+5,h/2-scale*i-FONT_HEIGHT/2,"%5.1f",ToF64(i)); } } for (i=-4;i<=4;i++) { dc->color=BLACK; GrLine(dc,w/2+scale*i,h/2-3,w/2+scale*i,h/2+3); if (i) { dc->color=DKGRAY; GrPrintF(dc,w/2+scale*i-7*FONT_WIDTH/2,h/2+5+FONT_HEIGHT,"%5.1f*T",ToF64(i)); } } }
I64 getColor(F64 cr, F64 ci, F64 zr, F64 zi) { I64 i=0; F64 tzr=0.0, tzi=0.0; while(i<ITERS && ((zr*zr + zi*zi) < 4.0)) { i++; tzr=zr*zr-zi*zi+cr; tzi=2.0*zr*zi+ci; zr=tzr; zi=tzi; } return ToI64((ToF64(i)/ITERS)*15.0); }
U0 Main() { F64 t0,f_sum=0,f_val; I64 i ,i_sum=0,i_val; i_val= 2.0000002 *0x100000000; t0=tT; for (i=1000000000;i;i--) i_sum+=i_val; "IntegerSum:%.9f Time:%7.3fs\n",i_sum/ToF64(0x100000000),tT-t0; f_val= 2.0000002; t0=tT; for (i=1000000000;i;i--) f_sum+=f_val; "FloatSum:%.9f Time:%7.3fs\n",f_sum,tT-t0; NewLine; }
F64 CompileDemo(U8 *st) { I64 type; U8 *ex; CLex *lx=LexNew(st,LF_DONT_FREE_BUF); F64 result=0; Lex(lx); //Gotta get it started "Compile \"%s\"\n",st; do { if (ex=LexExpression2Bin(lx,&type)) { if (type!=IT_F64) result=ToF64(Call(ex)); else result=Call(ex)(F64); ExpressionBinDel(ex); } "result=%9.4f\n",result; if (lx->token==';') Lex(lx); } while (lx->token!=TK_EOF); //end of file? LexDel(lx); return result; }