Home » Archimedes archive » Acorn User » AU 1997-05 B.adf » Regulars » StarInfo/clouds/Jeffs/GroundZero

StarInfo/clouds/Jeffs/GroundZero

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn User » AU 1997-05 B.adf » Regulars
Filename: StarInfo/clouds/Jeffs/GroundZero
Read OK:
File size: 069F bytes
Load address: 0000
Exec address: 0000
File contents
   10REM  GroundZero          by R.W.Jeffs
   20REM (or Time To Split)
   30REM
   40REM  Acorn User Cloud Challenge
   50REM
   60
   70MODE9:OFF
   80D%=100:REM  Diameter of column
   90P%=240:REM  No. of particles
  100DIM data(P%,3):REM  Type, X, COS val, colour
  110
  120REM  Velocities controlling particle flight
  130
  140XV1=-1:XV2=-1
  150Y1=0:Y2=0
  160YV1=4:YV2=4
  170XO%=640
  180YO%=128
  190
  200REM  Define particle type, depth and X
  210
  220FOR A%=1 TO P%
  230 IF P%<240 THEN
  240  IF RND(4)=1 data(A%,0)=1 ELSE data(A%,0)=0
  250 ELSE
  260  IF A%<=180 OR A%>240 data(A%,0)=0 ELSE data(A%,0)=1
  270 ENDIF
  280 IF A%<=180 AND P%>=240 data(A%,2)=COS(RAD(A%+180)) ELSE data(A%,2)=COS(RAD(RND(180)+180))
  290 data(A%,1)=D%/2*data(A%,2)
  300NEXT
  310
  320REM  Define particle colour
  330
  340FOR A%=1 TO P%
  350 REM data(A%,3)=3+RND(7)+(1-ABS(data(A%,2)))*4
  360 data(A%,3)=5+(1-ABS(data(A%,2)))*9
  370NEXT
  380
  390REM  Define colours and draw backdrop
  400
  410FOR C%=3 TO 15:VDU 19,C%,16,C%*16,C%*16,C%*16:NEXT
  420VDU 19,1,16,0,0,64
  430VDU 19,2,16,0,64,0
  440GCOL0,2:RECTANGLEFILL 0,0,1280,YO%:GCOL0,1:RECTANGLEFILL 0,YO%,1280,1024-YO%
  450TIME=0:REPEATUNTILTIME>100
  460
  470REM  Flash
  480WAIT:VDU 19,1,16,0,0,255:VDU 19,2,16,0,255,0
  490WAIT:VDU 19,1,16,0,0,64:VDU 19,2,16,0,64,0
  500
  510REM  Animate cloud
  520
  530count%=0:REPEAT:REM P.TAB(0,0);count%
  540
  550IF count%<40 XV1+=.025:XV2+=.025
  560IF count%>370 THEN
  570 YV1+=.018:XV1-=.01
  580ELSE
  590 IF count%>245 THEN
  600  YV1-=.016:XV1-=.003
  610 ELSE
  620  IF count%>120 THEN
  630   YV1-=.032:XV1+=.006
  640  ENDIF
  650 ENDIF
  660ENDIF
  670IF count%>80 YV2=-.02:XV2=.3
  680
  690FOR A%=1 TO P%
  700 GCOL0,data(A%,3)+RND(5)-3
  710 CASE data(A%,0) OF
  720  WHEN 0 : IF count%<486 PLOT 69,XO%+data(A%,1),YO%+Y1+RND(9)-5
  730  WHEN 1 : PLOT 69,XO%+data(A%,1),YO%+Y2+RND(9)-5
  740 ENDCASE
  750 IF data(A%,0)=0 data(A%,1)+=XV1*data(A%,2) ELSE data(A%,1)+=XV2*data(A%,2)
  760NEXT
  770Y1+=YV1:Y2+=YV2
  780count%+=1:UNTIL count%=500
  790PRINTTAB(0,29);
  800END

'�  GroundZero          by R.W.Jeffs
� (or Time To Split)
�
(!�  Acorn User Cloud Challenge
2�
<
F�9:�
P D%=100:�  Diameter of column
ZP%=240:�  No. of particles
d,� data(P%,3):�  Type, X, COS val, colour
n
x-�  Velocities controlling particle flight
�
�XV1=-1:XV2=-1
�
Y1=0:Y2=0
�YV1=4:YV2=4
�XO%=640
�YO%=128
�
�(�  Define particle type, depth and X
�
�� A%=1 � P%
� � P%<240 �
�*  � �(4)=1 data(A%,0)=1 � data(A%,0)=0
� �
4  � A%<=180 � A%>240 data(A%,0)=0 � data(A%,0)=1
 �
N � A%<=180 � P%>=240 data(A%,2)=�(�(A%+180)) � data(A%,2)=�(�(�(180)+180))
" data(A%,1)=D%/2*data(A%,2)
,�
6
@�  Define particle colour
J
T� A%=1 � P%
^0 � data(A%,3)=3+RND(7)+(1-ABS(data(A%,2)))*4
h% data(A%,3)=5+(1-�(data(A%,2)))*9
r�
|
�'�  Define colours and draw backdrop
�
�.� C%=3 � 15:� 19,C%,16,C%*16,C%*16,C%*16:�
�� 19,1,16,0,0,64
�� 19,2,16,0,64,0
�8�0,2:ȓȐ 0,0,1280,YO%:�0,1:ȓȐ 0,YO%,1280,1024-YO%
��=0:���>100
�
��  Flash
�*Ȗ:� 19,1,16,0,0,255:� 19,2,16,0,255,0
�(Ȗ:� 19,1,16,0,0,64:� 19,2,16,0,64,0
�
��  Animate cloud

"count%=0:�:� P.TAB(0,0);count%

&#� count%<40 XV1+=.025:XV2+=.025
0� count%>370 �
: YV1+=.018:XV1-=.01
D�
N � count%>245 �
X  YV1-=.016:XV1-=.003
b �
l  � count%>120 �
v   YV1-=.032:XV1+=.006
�  �
� �
��
�� count%>80 YV2=-.02:XV2=.3
�
�� A%=1 � P%
� �0,data(A%,3)+�(5)-3
� Ȏ data(A%,0) �
�:  � 0 : � count%<486 � 69,XO%+data(A%,1),YO%+Y1+�(9)-5
�-  � 1 : � 69,XO%+data(A%,1),YO%+Y2+�(9)-5
� �
�K � data(A%,0)=0 data(A%,1)+=XV1*data(A%,2) � data(A%,1)+=XV2*data(A%,2)
��
Y1+=YV1:Y2+=YV2
count%+=1:� count%=500
�0,29);
 �
�
00000000  0d 00 0a 27 f4 20 20 47  72 6f 75 6e 64 5a 65 72  |...'.  GroundZer|
00000010  6f 20 20 20 20 20 20 20  20 20 20 62 79 20 52 2e  |o          by R.|
00000020  57 2e 4a 65 66 66 73 0d  00 14 18 f4 20 28 6f 72  |W.Jeffs..... (or|
00000030  20 54 69 6d 65 20 54 6f  20 53 70 6c 69 74 29 0d  | Time To Split).|
00000040  00 1e 05 f4 0d 00 28 21  f4 20 20 41 63 6f 72 6e  |......(!.  Acorn|
00000050  20 55 73 65 72 20 43 6c  6f 75 64 20 43 68 61 6c  | User Cloud Chal|
00000060  6c 65 6e 67 65 0d 00 32  05 f4 0d 00 3c 04 0d 00  |lenge..2....<...|
00000070  46 08 eb 39 3a 87 0d 00  50 20 44 25 3d 31 30 30  |F..9:...P D%=100|
00000080  3a f4 20 20 44 69 61 6d  65 74 65 72 20 6f 66 20  |:.  Diameter of |
00000090  63 6f 6c 75 6d 6e 0d 00  5a 1e 50 25 3d 32 34 30  |column..Z.P%=240|
000000a0  3a f4 20 20 4e 6f 2e 20  6f 66 20 70 61 72 74 69  |:.  No. of parti|
000000b0  63 6c 65 73 0d 00 64 2c  de 20 64 61 74 61 28 50  |cles..d,. data(P|
000000c0  25 2c 33 29 3a f4 20 20  54 79 70 65 2c 20 58 2c  |%,3):.  Type, X,|
000000d0  20 43 4f 53 20 76 61 6c  2c 20 63 6f 6c 6f 75 72  | COS val, colour|
000000e0  0d 00 6e 04 0d 00 78 2d  f4 20 20 56 65 6c 6f 63  |..n...x-.  Veloc|
000000f0  69 74 69 65 73 20 63 6f  6e 74 72 6f 6c 6c 69 6e  |ities controllin|
00000100  67 20 70 61 72 74 69 63  6c 65 20 66 6c 69 67 68  |g particle fligh|
00000110  74 0d 00 82 04 0d 00 8c  11 58 56 31 3d 2d 31 3a  |t........XV1=-1:|
00000120  58 56 32 3d 2d 31 0d 00  96 0d 59 31 3d 30 3a 59  |XV2=-1....Y1=0:Y|
00000130  32 3d 30 0d 00 a0 0f 59  56 31 3d 34 3a 59 56 32  |2=0....YV1=4:YV2|
00000140  3d 34 0d 00 aa 0b 58 4f  25 3d 36 34 30 0d 00 b4  |=4....XO%=640...|
00000150  0b 59 4f 25 3d 31 32 38  0d 00 be 04 0d 00 c8 28  |.YO%=128.......(|
00000160  f4 20 20 44 65 66 69 6e  65 20 70 61 72 74 69 63  |.  Define partic|
00000170  6c 65 20 74 79 70 65 2c  20 64 65 70 74 68 20 61  |le type, depth a|
00000180  6e 64 20 58 0d 00 d2 04  0d 00 dc 0f e3 20 41 25  |nd X......... A%|
00000190  3d 31 20 b8 20 50 25 0d  00 e6 0f 20 e7 20 50 25  |=1 . P%.... . P%|
000001a0  3c 32 34 30 20 8c 0d 00  f0 2a 20 20 e7 20 b3 28  |<240 ....*  . .(|
000001b0  34 29 3d 31 20 64 61 74  61 28 41 25 2c 30 29 3d  |4)=1 data(A%,0)=|
000001c0  31 20 8b 20 64 61 74 61  28 41 25 2c 30 29 3d 30  |1 . data(A%,0)=0|
000001d0  0d 00 fa 06 20 cc 0d 01  04 34 20 20 e7 20 41 25  |.... ....4  . A%|
000001e0  3c 3d 31 38 30 20 84 20  41 25 3e 32 34 30 20 64  |<=180 . A%>240 d|
000001f0  61 74 61 28 41 25 2c 30  29 3d 30 20 8b 20 64 61  |ata(A%,0)=0 . da|
00000200  74 61 28 41 25 2c 30 29  3d 31 0d 01 0e 06 20 cd  |ta(A%,0)=1.... .|
00000210  0d 01 18 4e 20 e7 20 41  25 3c 3d 31 38 30 20 80  |...N . A%<=180 .|
00000220  20 50 25 3e 3d 32 34 30  20 64 61 74 61 28 41 25  | P%>=240 data(A%|
00000230  2c 32 29 3d 9b 28 b2 28  41 25 2b 31 38 30 29 29  |,2)=.(.(A%+180))|
00000240  20 8b 20 64 61 74 61 28  41 25 2c 32 29 3d 9b 28  | . data(A%,2)=.(|
00000250  b2 28 b3 28 31 38 30 29  2b 31 38 30 29 29 0d 01  |.(.(180)+180))..|
00000260  22 1f 20 64 61 74 61 28  41 25 2c 31 29 3d 44 25  |". data(A%,1)=D%|
00000270  2f 32 2a 64 61 74 61 28  41 25 2c 32 29 0d 01 2c  |/2*data(A%,2)..,|
00000280  05 ed 0d 01 36 04 0d 01  40 1d f4 20 20 44 65 66  |....6...@..  Def|
00000290  69 6e 65 20 70 61 72 74  69 63 6c 65 20 63 6f 6c  |ine particle col|
000002a0  6f 75 72 0d 01 4a 04 0d  01 54 0f e3 20 41 25 3d  |our..J...T.. A%=|
000002b0  31 20 b8 20 50 25 0d 01  5e 30 20 f4 20 64 61 74  |1 . P%..^0 . dat|
000002c0  61 28 41 25 2c 33 29 3d  33 2b 52 4e 44 28 37 29  |a(A%,3)=3+RND(7)|
000002d0  2b 28 31 2d 41 42 53 28  64 61 74 61 28 41 25 2c  |+(1-ABS(data(A%,|
000002e0  32 29 29 29 2a 34 0d 01  68 25 20 64 61 74 61 28  |2)))*4..h% data(|
000002f0  41 25 2c 33 29 3d 35 2b  28 31 2d 94 28 64 61 74  |A%,3)=5+(1-.(dat|
00000300  61 28 41 25 2c 32 29 29  29 2a 39 0d 01 72 05 ed  |a(A%,2)))*9..r..|
00000310  0d 01 7c 04 0d 01 86 27  f4 20 20 44 65 66 69 6e  |..|....'.  Defin|
00000320  65 20 63 6f 6c 6f 75 72  73 20 61 6e 64 20 64 72  |e colours and dr|
00000330  61 77 20 62 61 63 6b 64  72 6f 70 0d 01 90 04 0d  |aw backdrop.....|
00000340  01 9a 2e e3 20 43 25 3d  33 20 b8 20 31 35 3a ef  |.... C%=3 . 15:.|
00000350  20 31 39 2c 43 25 2c 31  36 2c 43 25 2a 31 36 2c  | 19,C%,16,C%*16,|
00000360  43 25 2a 31 36 2c 43 25  2a 31 36 3a ed 0d 01 a4  |C%*16,C%*16:....|
00000370  14 ef 20 31 39 2c 31 2c  31 36 2c 30 2c 30 2c 36  |.. 19,1,16,0,0,6|
00000380  34 0d 01 ae 14 ef 20 31  39 2c 32 2c 31 36 2c 30  |4..... 19,2,16,0|
00000390  2c 36 34 2c 30 0d 01 b8  38 e6 30 2c 32 3a c8 93  |,64,0...8.0,2:..|
000003a0  c8 90 20 30 2c 30 2c 31  32 38 30 2c 59 4f 25 3a  |.. 0,0,1280,YO%:|
000003b0  e6 30 2c 31 3a c8 93 c8  90 20 30 2c 59 4f 25 2c  |.0,1:.... 0,YO%,|
000003c0  31 32 38 30 2c 31 30 32  34 2d 59 4f 25 0d 01 c2  |1280,1024-YO%...|
000003d0  0f d1 3d 30 3a f5 fd 91  3e 31 30 30 0d 01 cc 04  |..=0:...>100....|
000003e0  0d 01 d6 0c f4 20 20 46  6c 61 73 68 0d 01 e0 2a  |.....  Flash...*|
000003f0  c8 96 3a ef 20 31 39 2c  31 2c 31 36 2c 30 2c 30  |..:. 19,1,16,0,0|
00000400  2c 32 35 35 3a ef 20 31  39 2c 32 2c 31 36 2c 30  |,255:. 19,2,16,0|
00000410  2c 32 35 35 2c 30 0d 01  ea 28 c8 96 3a ef 20 31  |,255,0...(..:. 1|
00000420  39 2c 31 2c 31 36 2c 30  2c 30 2c 36 34 3a ef 20  |9,1,16,0,0,64:. |
00000430  31 39 2c 32 2c 31 36 2c  30 2c 36 34 2c 30 0d 01  |19,2,16,0,64,0..|
00000440  f4 04 0d 01 fe 14 f4 20  20 41 6e 69 6d 61 74 65  |.......  Animate|
00000450  20 63 6c 6f 75 64 0d 02  08 04 0d 02 12 22 63 6f  | cloud......."co|
00000460  75 6e 74 25 3d 30 3a f5  3a f4 20 50 2e 54 41 42  |unt%=0:.:. P.TAB|
00000470  28 30 2c 30 29 3b 63 6f  75 6e 74 25 0d 02 1c 04  |(0,0);count%....|
00000480  0d 02 26 23 e7 20 63 6f  75 6e 74 25 3c 34 30 20  |..&#. count%<40 |
00000490  58 56 31 2b 3d 2e 30 32  35 3a 58 56 32 2b 3d 2e  |XV1+=.025:XV2+=.|
000004a0  30 32 35 0d 02 30 12 e7  20 63 6f 75 6e 74 25 3e  |025..0.. count%>|
000004b0  33 37 30 20 8c 0d 02 3a  17 20 59 56 31 2b 3d 2e  |370 ...:. YV1+=.|
000004c0  30 31 38 3a 58 56 31 2d  3d 2e 30 31 0d 02 44 05  |018:XV1-=.01..D.|
000004d0  cc 0d 02 4e 13 20 e7 20  63 6f 75 6e 74 25 3e 32  |...N. . count%>2|
000004e0  34 35 20 8c 0d 02 58 19  20 20 59 56 31 2d 3d 2e  |45 ...X.  YV1-=.|
000004f0  30 31 36 3a 58 56 31 2d  3d 2e 30 30 33 0d 02 62  |016:XV1-=.003..b|
00000500  06 20 cc 0d 02 6c 14 20  20 e7 20 63 6f 75 6e 74  |. ...l.  . count|
00000510  25 3e 31 32 30 20 8c 0d  02 76 1a 20 20 20 59 56  |%>120 ...v.   YV|
00000520  31 2d 3d 2e 30 33 32 3a  58 56 31 2b 3d 2e 30 30  |1-=.032:XV1+=.00|
00000530  36 0d 02 80 07 20 20 cd  0d 02 8a 06 20 cd 0d 02  |6....  ..... ...|
00000540  94 05 cd 0d 02 9e 1f e7  20 63 6f 75 6e 74 25 3e  |........ count%>|
00000550  38 30 20 59 56 32 3d 2d  2e 30 32 3a 58 56 32 3d  |80 YV2=-.02:XV2=|
00000560  2e 33 0d 02 a8 04 0d 02  b2 0f e3 20 41 25 3d 31  |.3......... A%=1|
00000570  20 b8 20 50 25 0d 02 bc  19 20 e6 30 2c 64 61 74  | . P%.... .0,dat|
00000580  61 28 41 25 2c 33 29 2b  b3 28 35 29 2d 33 0d 02  |a(A%,3)+.(5)-3..|
00000590  c6 14 20 c8 8e 20 64 61  74 61 28 41 25 2c 30 29  |.. .. data(A%,0)|
000005a0  20 ca 0d 02 d0 3a 20 20  c9 20 30 20 3a 20 e7 20  | ....:  . 0 : . |
000005b0  63 6f 75 6e 74 25 3c 34  38 36 20 f0 20 36 39 2c  |count%<486 . 69,|
000005c0  58 4f 25 2b 64 61 74 61  28 41 25 2c 31 29 2c 59  |XO%+data(A%,1),Y|
000005d0  4f 25 2b 59 31 2b b3 28  39 29 2d 35 0d 02 da 2d  |O%+Y1+.(9)-5...-|
000005e0  20 20 c9 20 31 20 3a 20  f0 20 36 39 2c 58 4f 25  |  . 1 : . 69,XO%|
000005f0  2b 64 61 74 61 28 41 25  2c 31 29 2c 59 4f 25 2b  |+data(A%,1),YO%+|
00000600  59 32 2b b3 28 39 29 2d  35 0d 02 e4 06 20 cb 0d  |Y2+.(9)-5.... ..|
00000610  02 ee 4b 20 e7 20 64 61  74 61 28 41 25 2c 30 29  |..K . data(A%,0)|
00000620  3d 30 20 64 61 74 61 28  41 25 2c 31 29 2b 3d 58  |=0 data(A%,1)+=X|
00000630  56 31 2a 64 61 74 61 28  41 25 2c 32 29 20 8b 20  |V1*data(A%,2) . |
00000640  64 61 74 61 28 41 25 2c  31 29 2b 3d 58 56 32 2a  |data(A%,1)+=XV2*|
00000650  64 61 74 61 28 41 25 2c  32 29 0d 02 f8 05 ed 0d  |data(A%,2)......|
00000660  03 02 13 59 31 2b 3d 59  56 31 3a 59 32 2b 3d 59  |...Y1+=YV1:Y2+=Y|
00000670  56 32 0d 03 0c 1a 63 6f  75 6e 74 25 2b 3d 31 3a  |V2....count%+=1:|
00000680  fd 20 63 6f 75 6e 74 25  3d 35 30 30 0d 03 16 0c  |. count%=500....|
00000690  f1 8a 30 2c 32 39 29 3b  0d 03 20 05 e0 0d ff     |..0,29);.. ....|
0000069f