10
20 :
30 FOR M%=0 TO 127
40 MODE M%
50 :
60
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
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%