10 *REFRESH OFF
   20 VDU 29,48;32;
   30 GCOL 0,127
   40 GCOL 0,128
   50 DIM p%(15)
   60 fps%=0
   70 lfps%=0
   80 fpst%=TIME+100
   90 REPEAT
  100   s=40*(SIN(TIME/150)+1.5)
  110   rX=TIME/300
  120   rY=TIME/400
  130   SrX=SIN(rX)
  140   CrX=COS(rX)
  150   SrY=SIN(rY)
  160   CrY=COS(rY)
  170   pt%=0
  180   FOR x=-1TO1STEP2
  190     FOR y=-1TO1STEP2
  200       FOR z=-1TO1STEP2
  210         tX=y*CrX-x*SrX
  220         tY=-x*CrX*SrY-y*SrX*SrY-z*CrY
  230         tZ=3-x*CrX*CrY-y*SrX*CrY+z*SrY
  240         sf=s/tZ
  250         p%(pt%)=tX*sf
  260         pt%=pt%+1
  270         p%(pt%)=tY*sf
  280         pt%=pt%+1
  290       NEXT
  300     NEXT
  310   NEXT
  320   CLG
  330   PRINTTAB(10,0)lfps%" FPS"
  340   MOVE p%(0),p%(1)
  350   DRAW p%(4),p%(5)
  360   DRAW p%(12),p%(13)
  370   DRAW p%(8),p%(9)
  380   DRAW p%(0),p%(1)
  390   DRAW p%(2),p%(3)
  400   DRAW p%(6),p%(7)
  410   DRAW p%(14),p%(15)
  420   DRAW p%(10),p%(11)
  430   DRAW p%(2),p%(3)
  440   MOVE p%(4),p%(5)
  450   DRAW p%(6),p%(7)
  460   MOVE p%(12),p%(13)
  470   DRAW p%(14),p%(15)
  480   MOVE p%(8),p%(9)
  490   DRAW p%(10),p%(11)
  500   *REFRESH
  510   fps%=fps%+1
  520   IF TIME>fpst% THEN lfps%=fps%:fps%=0:fpst%=TIME+100
  530 UNTIL INKEY(0)<>-1
  540 *REFRESH ON
  550 END