//This is the fastest you can update the whole scrn.
//See ::/Demo/Lectures/MiniGrLib.HC if this interests you.

F64 VGAPattern(I64 p)
{//This returns the time to update in seconds.
  F64 start=tS;
  I64 plane;
  for (plane=1;plane<0x10;plane<<=1) {
    OutU8(VGAP_IDX,VGAR_MAP_MASK);
    OutU8(VGAP_DATA,plane);
    MemSetI64(text.vga_alias,p,640*480/64);
  }
  return tS-start;
}
 
 
U0 GrDemo()
{
  I64 i;
  F64 t;
  CPURep;
  for (i=0;i<16;i++) {
    t=VGAPattern(0x5555555555555555);
    "$GREEN$Rate:$RED$%5.1f FPS$FG$"
          "  $GREEN$Load@30Hz:$RED$%5.1f%%$FG$\n",1/t,100*t*30.0;
    t=VGAPattern(0x3333333333333333);
    "$GREEN$Rate:$RED$%5.1f FPS$FG$"
          "  $GREEN$Load@30Hz:$RED$%5.1f%%$FG$\n",1/t,100*t*30.0;
  }
//<CTRL-ALT-v> will flush scrn VGA cache.
  VGAFlush;
}

GrDemo;