10
20 :
30 quit$="":IF(V%DIV1000000)=985:quit$="$.!Boot"
40 ONERROR:MODE&87:REPORT:IFINKEY-1:END ELSE PROCquit:END
50 MODE2:VDU19,15,7,0,0,0,23;8202;0;0;0;
60 REPEATCLS:PROCsnow:UNTILFNsettle:PROCquit:END
70 :
80 DEFPROCquit:IFASCquit$=42:OSCLIquit$ ELSE IFquit$<>"":CHAINquit$
90 ENDPROC
100 :
110 DEFPROCsnow:X%=-40:C%=1:REPEAT:X1%=X%
120 FOR Y%=1023 TO 0 STEP -RND(30)-5
130 GCOL 0,C%:C%=((C%+1)-2*(C%=14))AND15
140 X1%=X1%+(RND(16)-8):PLOT 69,X1%,Y%
150 NEXT:X%=X%+RND(10)+25:UNTILX%>1320:ENDPROC
160 :
170 DEFFNsettle:A%=TRUE:Sn=0:GCOL 0,15:REPEAT FOR I%=1 TO 14:*FX19
180 VDU19,I%,0,0,0,0,19,((I%+1)-2*(I%=14))AND15,7,0,0,0
190 MOVE0,Sn:DRAW 1279,Sn:Sn=Sn+.15
200 A%=A% AND INKEY(5):NEXT:UNTILA%>=0 OR Sn>1020
210 =A%>=0