10 REM > SPIRAL
   20 :
   30 FOR M%=0 TO 127
   40   MODE M%
   50   :
   60   REM Find size of screen:
   70   PRINT'CHR$8;:W%=POS+1:REPEAT:H%=VPOS+1:PRINT:UNTILVPOS+1=H%:CLS
   80   x=W%*8:y=H%*(8-2*(INSTR(CHR$3+CHR$6+CHR$7+CHR$11+CHR$14+CHR$17,CHR$M%)<>0 AND (H%=22 OR H%=25)))
   90   REPEAT:x=x*2:UNTILx>=&400:REPEAT:y=y*2:UNTILy>=&300
  100   :
  110   REM Centre on screen:
  120   y=y/2
  130   x=x/2
  140   r=y*7/8
  150   l=8192/y
  160   :
  170   a = 0
  180   MOVE x,y-r
  190   REPEAT
  200     GCOL 0,RND(7):DRAW x + r*SIN(a), y - r*COS(a)
  210     r=r-0.5
  220     a=a+0.1
  230   UNTIL r<l
  240   :
  250   PRINTTAB(W%DIV2-3,0);"MODE ";M%
  260   IF W%>45:PRINTTAB(W%DIV2-23,H%-1);"There should be a spiral centred on the screen";
  270   IF W%<46:PRINTTAB(W%DIV2-8,H%-4);"There should be a";TAB(W%DIV2-8,H%-3);"spiral centred on";TAB(W%DIV2-5,H%-2);"the screen";
  280   IF INKEY(500)=8:M%=M%-2
  290 NEXT M%