Home » Archimedes archive » Acorn User » AU 1998-06 A.adf » Regulars » StarInfo/Brobecker/VonKoch

StarInfo/Brobecker/VonKoch

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 1998-06 A.adf » Regulars
Filename: StarInfo/Brobecker/VonKoch
Read OK:
File size: 03AB bytes
Load address: 0000
Exec address: 0000
File contents
   10REM>>> Von Koch's Snowflake
   20REM    Alain BROBECKER (baah/Arm's Tech) on 27-Mar-1997
   30n%=5:REMNb of iterations
   40MODE20:OFF:REMScreen inits
   50FORc%=0TOn%:d%=128*c%/n%:COLOURc%,96+d%,d%,128-d%:NEXT
   60COLOUR15,0,0,0:ORIGIN640,512
   70DIMs% 2^18:DIMt% 2^18:REMMemory for grammars
   80a%=s%:PROCz(a%,"-rr-l-rr-l-rr-l-rr-l-rr-l-rr-"):?a%=0:REMInit grammar
   90l=2^(11-n%)
  100FORc%=0TOn%-1
  110 GCOL15
  120 a=2*PI/3:REMStart angle
  130 l=1.8*l/3:REMlength of a segment
  140 x=-l*2^c%:y=0:REMInitial position
  150 IFc%>0THENFORd%=0TOc%-1:x-=l*2^(c%-d%)*3^d%*COS(PI/3):NEXT
  160 a%=s%:b%=t%
  170 WHILE?a%<>0
  180  ?b%=?a%:b%+=1:REMCopy char
  190  CASE?a%OF
  200   WHENASC"-"
  210    PROCz(b%,"l-rr-l-"):REMAdd this to grammar
  220    MOVEx,y:x+=l*COSa:y+=l*SINa:DRAWx,y:REMAnd draw line
  230   WHENASC"l":a+=PI/3:REMTurn left
  240   WHENASC"r":a-=PI/3:REMTurn right
  250  ENDCASE
  260  a%+=1                 
  270 ENDWHILE
  280 ?b%=0:REMMark end
  290 SWAPs%,t%:REMExchange grammars
  300 GCOLn%-c%:FILLx+4,y:REMFill
  310NEXT:END
  320REMAdd string to memory
  330DEFPROCz(RETURN z%,z$):FORy%=1TOLEN(z$):?z%=ASCMID$(z$,y%,1):z%+=1:NEXT:ENDPROC

�>>> Von Koch's Snowflake
9�    Alain BROBECKER (baah/Arm's Tech) on 27-Mar-1997
n%=5:�Nb of iterations
(�20:�:�Screen inits
2/�c%=0�n%:d%=128*c%/n%:�c%,96+d%,d%,128-d%:�
<�15,0,0,0:ȑ640,512
F*�s% 2^18:�t% 2^18:�Memory for grammars
PDa%=s%:�z(a%,"-rr-l-rr-l-rr-l-rr-l-rr-l-rr-"):?a%=0:�Init grammar
Zl=2^(11-n%)
d�c%=0�n%-1
n �15
x a=2*�/3:�Start angle
�# l=1.8*l/3:�length of a segment
�$ x=-l*2^c%:y=0:�Initial position
�2 �c%>0��d%=0�c%-1:x-=l*2^(c%-d%)*3^d%*�(�/3):�
� a%=s%:b%=t%
�
 ȕ?a%<>0
�  ?b%=?a%:b%+=1:�Copy char
�  Ȏ?a%�
�   ɗ"-"
�-    �z(b%,"l-rr-l-"):�Add this to grammar
�0    �x,y:x+=l*�a:y+=l*�a:�x,y:�And draw line
�   ɗ"l":a+=�/3:�Turn left
�   ɗ"r":a-=�/3:�Turn right
�  �
  a%+=1                 
 �
 ?b%=0:�Mark end
" Ȕs%,t%:�Exchange grammars
, �n%-c%:Ȑx+4,y:�Fill
6�:�
@�Add string to memory
J5��z(� z%,z$):�y%=1��(z$):?z%=��z$,y%,1):z%+=1:�:�
�
00000000  0d 00 0a 1d f4 3e 3e 3e  20 56 6f 6e 20 4b 6f 63  |.....>>> Von Koc|
00000010  68 27 73 20 53 6e 6f 77  66 6c 61 6b 65 0d 00 14  |h's Snowflake...|
00000020  39 f4 20 20 20 20 41 6c  61 69 6e 20 42 52 4f 42  |9.    Alain BROB|
00000030  45 43 4b 45 52 20 28 62  61 61 68 2f 41 72 6d 27  |ECKER (baah/Arm'|
00000040  73 20 54 65 63 68 29 20  6f 6e 20 32 37 2d 4d 61  |s Tech) on 27-Ma|
00000050  72 2d 31 39 39 37 0d 00  1e 1a 6e 25 3d 35 3a f4  |r-1997....n%=5:.|
00000060  4e 62 20 6f 66 20 69 74  65 72 61 74 69 6f 6e 73  |Nb of iterations|
00000070  0d 00 28 17 eb 32 30 3a  87 3a f4 53 63 72 65 65  |..(..20:.:.Scree|
00000080  6e 20 69 6e 69 74 73 0d  00 32 2f e3 63 25 3d 30  |n inits..2/.c%=0|
00000090  b8 6e 25 3a 64 25 3d 31  32 38 2a 63 25 2f 6e 25  |.n%:d%=128*c%/n%|
000000a0  3a fb 63 25 2c 39 36 2b  64 25 2c 64 25 2c 31 32  |:.c%,96+d%,d%,12|
000000b0  38 2d 64 25 3a ed 0d 00  3c 17 fb 31 35 2c 30 2c  |8-d%:...<..15,0,|
000000c0  30 2c 30 3a c8 91 36 34  30 2c 35 31 32 0d 00 46  |0,0:..640,512..F|
000000d0  2a de 73 25 20 32 5e 31  38 3a de 74 25 20 32 5e  |*.s% 2^18:.t% 2^|
000000e0  31 38 3a f4 4d 65 6d 6f  72 79 20 66 6f 72 20 67  |18:.Memory for g|
000000f0  72 61 6d 6d 61 72 73 0d  00 50 44 61 25 3d 73 25  |rammars..PDa%=s%|
00000100  3a f2 7a 28 61 25 2c 22  2d 72 72 2d 6c 2d 72 72  |:.z(a%,"-rr-l-rr|
00000110  2d 6c 2d 72 72 2d 6c 2d  72 72 2d 6c 2d 72 72 2d  |-l-rr-l-rr-l-rr-|
00000120  6c 2d 72 72 2d 22 29 3a  3f 61 25 3d 30 3a f4 49  |l-rr-"):?a%=0:.I|
00000130  6e 69 74 20 67 72 61 6d  6d 61 72 0d 00 5a 0f 6c  |nit grammar..Z.l|
00000140  3d 32 5e 28 31 31 2d 6e  25 29 0d 00 64 0e e3 63  |=2^(11-n%)..d..c|
00000150  25 3d 30 b8 6e 25 2d 31  0d 00 6e 08 20 e6 31 35  |%=0.n%-1..n. .15|
00000160  0d 00 78 19 20 61 3d 32  2a af 2f 33 3a f4 53 74  |..x. a=2*./3:.St|
00000170  61 72 74 20 61 6e 67 6c  65 0d 00 82 23 20 6c 3d  |art angle...# l=|
00000180  31 2e 38 2a 6c 2f 33 3a  f4 6c 65 6e 67 74 68 20  |1.8*l/3:.length |
00000190  6f 66 20 61 20 73 65 67  6d 65 6e 74 0d 00 8c 24  |of a segment...$|
000001a0  20 78 3d 2d 6c 2a 32 5e  63 25 3a 79 3d 30 3a f4  | x=-l*2^c%:y=0:.|
000001b0  49 6e 69 74 69 61 6c 20  70 6f 73 69 74 69 6f 6e  |Initial position|
000001c0  0d 00 96 32 20 e7 63 25  3e 30 8c e3 64 25 3d 30  |...2 .c%>0..d%=0|
000001d0  b8 63 25 2d 31 3a 78 2d  3d 6c 2a 32 5e 28 63 25  |.c%-1:x-=l*2^(c%|
000001e0  2d 64 25 29 2a 33 5e 64  25 2a 9b 28 af 2f 33 29  |-d%)*3^d%*.(./3)|
000001f0  3a ed 0d 00 a0 10 20 61  25 3d 73 25 3a 62 25 3d  |:..... a%=s%:b%=|
00000200  74 25 0d 00 aa 0d 20 c8  95 3f 61 25 3c 3e 30 0d  |t%.... ..?a%<>0.|
00000210  00 b4 1e 20 20 3f 62 25  3d 3f 61 25 3a 62 25 2b  |...  ?b%=?a%:b%+|
00000220  3d 31 3a f4 43 6f 70 79  20 63 68 61 72 0d 00 be  |=1:.Copy char...|
00000230  0c 20 20 c8 8e 3f 61 25  ca 0d 00 c8 0c 20 20 20  |.  ..?a%.....   |
00000240  c9 97 22 2d 22 0d 00 d2  2d 20 20 20 20 f2 7a 28  |.."-"...-    .z(|
00000250  62 25 2c 22 6c 2d 72 72  2d 6c 2d 22 29 3a f4 41  |b%,"l-rr-l-"):.A|
00000260  64 64 20 74 68 69 73 20  74 6f 20 67 72 61 6d 6d  |dd this to gramm|
00000270  61 72 0d 00 dc 30 20 20  20 20 ec 78 2c 79 3a 78  |ar...0    .x,y:x|
00000280  2b 3d 6c 2a 9b 61 3a 79  2b 3d 6c 2a b5 61 3a df  |+=l*.a:y+=l*.a:.|
00000290  78 2c 79 3a f4 41 6e 64  20 64 72 61 77 20 6c 69  |x,y:.And draw li|
000002a0  6e 65 0d 00 e6 1e 20 20  20 c9 97 22 6c 22 3a 61  |ne....   .."l":a|
000002b0  2b 3d af 2f 33 3a f4 54  75 72 6e 20 6c 65 66 74  |+=./3:.Turn left|
000002c0  0d 00 f0 1f 20 20 20 c9  97 22 72 22 3a 61 2d 3d  |....   .."r":a-=|
000002d0  af 2f 33 3a f4 54 75 72  6e 20 72 69 67 68 74 0d  |./3:.Turn right.|
000002e0  00 fa 07 20 20 cb 0d 01  04 1c 20 20 61 25 2b 3d  |...  .....  a%+=|
000002f0  31 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |1               |
00000300  20 20 0d 01 0e 06 20 ce  0d 01 18 14 20 3f 62 25  |  .... ..... ?b%|
00000310  3d 30 3a f4 4d 61 72 6b  20 65 6e 64 0d 01 22 1f  |=0:.Mark end..".|
00000320  20 c8 94 73 25 2c 74 25  3a f4 45 78 63 68 61 6e  | ..s%,t%:.Exchan|
00000330  67 65 20 67 72 61 6d 6d  61 72 73 0d 01 2c 19 20  |ge grammars..,. |
00000340  e6 6e 25 2d 63 25 3a c8  90 78 2b 34 2c 79 3a f4  |.n%-c%:..x+4,y:.|
00000350  46 69 6c 6c 0d 01 36 07  ed 3a e0 0d 01 40 19 f4  |Fill..6..:...@..|
00000360  41 64 64 20 73 74 72 69  6e 67 20 74 6f 20 6d 65  |Add string to me|
00000370  6d 6f 72 79 0d 01 4a 35  dd f2 7a 28 f8 20 7a 25  |mory..J5..z(. z%|
00000380  2c 7a 24 29 3a e3 79 25  3d 31 b8 a9 28 7a 24 29  |,z$):.y%=1..(z$)|
00000390  3a 3f 7a 25 3d 97 c1 7a  24 2c 79 25 2c 31 29 3a  |:?z%=..z$,y%,1):|
000003a0  7a 25 2b 3d 31 3a ed 3a  e1 0d ff                 |z%+=1:.:...|
000003ab