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