Home » Archimedes archive » Acorn User » AU 1997-12.adf » Regulars » StarInfo/vanMourik/SIER-TRIAN

StarInfo/vanMourik/SIER-TRIAN

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-12.adf » Regulars
Filename: StarInfo/vanMourik/SIER-TRIAN
Read OK:
File size: 05C4 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >SIER-TRIAN
   20REM JEAN VAN MOURIK MILLCOTTAGE DERWYDD AMMANFORD DYFED SA183LQ  UK.
   30 
   40MODE19:OFF:*POINTER
   50S%=1023:ORIGIN640,512:DIMX(3),Y(3)
   60PRINT"SIERPINSKI TRIANGLE":PRINT:PRINT"TAP SPACE TO PAUSE"
   70PRINT"MIDDLE BUTTON TO ALTER THE SHAPE OF THE TRIANGLE."
   80PRINT"LEFT BUTTON TO ALTER C IN X=(X(R%)+X)*C:Y=(Y(R%)+Y)*C, MOVE MOUSE VERTICALY."
   90Y(1)=512:X(2)=-640:Y(2)=-512:X(3)=640:Y(3)=Y(2):X=0:Y=0
  100GCOL1:CIRCLE FILLX(1),Y(1),8:CIRCLE FILLX(2),Y(2),8:CIRCLE FILLX(3),Y(3),8:C=.5:PRINT:PRINT"ITER. ":PRINT:PRINT"C= ";C:GCOL3:X()=X()*C:Y()=Y()*C
  110 
  120REM MAIN LOOP
  130FOR I%=0 TO 9999999 STEP 100:PRINTTAB(8,6);I%
  140FOR J%=I%TOI%+99:R%=RND(3):X=X(R%)+X*C:Y=Y(R%)+Y*C:POINTX,Y:NEXT
  150MOUSE X%,Y%,Z%:IFZ% PROCMOUSE(Z%)
  160A$=INKEY$(0):IF A$<>"" PROCPAUSE
  170NEXT:END
  180 
  190DEFPROCMOUSE(Z%):LOCAL W%,X%,Y%,Z%,Z,Y
  200MOUSE X%,Y%,Z%:IFZ%>2 ENDPROC
  210IFZ%=2 PROCALTER(C)
  220IFZ%=1 REPEAT:MOUSEX%,Y%,W%:PRINTTAB(0,8)"C= ";Y%/999;" ":UNTILW%=0:X()=X()/C:Y()=Y()/C:C=Y%/999:X()=X()*C:Y()=Y()*C
  230CLS:GCOL1:CIRCLE FILLX(1)/C,Y(1)/C,8:CIRCLE FILLX(2)/C,Y(2)/C,8:CIRCLE FILLX(3)/C,Y(3)/C,8:I%=0:GCOL3:PRINTTAB(0,8)"C= ";C:PRINTTAB(0,6)"ITER. "
  240ENDPROC
  250 
  260REM ROUTINE TO ALTER THE TRIANGLE'S SHAPE
  270DEFPROCALTER(C):LOCAL S%,T%,X,Y,X%,Y%,Z%
  280MOUSE X%,Y%,Z%:S%=9999999
  290X=X%-X(1)/C:Y=Y%-Y(1)/C:IF S%>X*X+Y*Y S%=X*X+Y*Y:T%=1
  300X=X%-X(2)/C:Y=Y%-Y(2)/C:IF S%>X*X+Y*Y S%=X*X+Y*Y:T%=2
  310X=X%-X(3)/C:Y=Y%-Y(3)/C:IF S%>X*X+Y*Y S%=X*X+Y*Y:T%=3
  320GCOL0:CIRCLE FILLX(T%)/C,Y(T%)/C,8:GCOL3,1
  330REPEAT:MOUSE X%,Y%,Z%:CIRCLE FILLX%,Y%,8:WAIT:CIRCLE FILLX%,Y%,8:UNTILZ%=0
  340X(T%)=X%*C:Y(T%)=Y%*C
  350ENDPROC
  360 
  370DEFPROCPAUSE
  380PRINTTAB(0,11)"PAUSE":REPEAT:A$=INKEY$(0):UNTILA$=""
  390REPEAT:A$=INKEY$(0):UNTILA$<>"":PRINTTAB(0,11)"      "
  400REPEAT:A$=INKEY$(0):UNTILA$=""
  410ENDPROC

� >SIER-TRIAN
F� JEAN VAN MOURIK MILLCOTTAGE DERWYDD AMMANFORD DYFED SA183LQ  UK.
 
(�19:�:*POINTER
2 S%=1023:ȑ640,512:�X(3),Y(3)
<2�"SIERPINSKI TRIANGLE":�:�"TAP SPACE TO PAUSE"
F8�"MIDDLE BUTTON TO ALTER THE SHAPE OF THE TRIANGLE."
PS�"LEFT BUTTON TO ALTER C IN X=(X(R%)+X)*C:Y=(Y(R%)+Y)*C, MOVE MOUSE VERTICALY."
Z;Y(1)=512:X(2)=-640:Y(2)=-512:X(3)=640:Y(3)=Y(2):X=0:Y=0
dl�1:ȏ ȐX(1),Y(1),8:ȏ ȐX(2),Y(2),8:ȏ ȐX(3),Y(3),8:C=.5:�:�"ITER. ":�:�"C= ";C:�3:X()=X()*C:Y()=Y()*C
n 
x� MAIN LOOP
�$� I%=0 � 9999999 � 100:�8,6);I%
�9� J%=I%�I%+99:R%=�(3):X=X(R%)+X*C:Y=Y(R%)+Y*C:ȒX,Y:�
�ȗ X%,Y%,Z%:�Z% �MOUSE(Z%)
�A$=�(0):� A$<>"" �PAUSE
��:�
� 
�!��MOUSE(Z%):� W%,X%,Y%,Z%,Z,Y
�ȗ X%,Y%,Z%:�Z%>2 �
��Z%=2 �ALTER(C)
�d�Z%=1 �:ȗX%,Y%,W%:�0,8)"C= ";Y%/999;" ":�W%=0:X()=X()/C:Y()=Y()/C:C=Y%/999:X()=X()*C:Y()=Y()*C
�l�:�1:ȏ ȐX(1)/C,Y(1)/C,8:ȏ ȐX(2)/C,Y(2)/C,8:ȏ ȐX(3)/C,Y(3)/C,8:I%=0:�3:�0,8)"C= ";C:�0,6)"ITER. "
��
� 
+� ROUTINE TO ALTER THE TRIANGLE'S SHAPE
#��ALTER(C):� S%,T%,X,Y,X%,Y%,Z%
ȗ X%,Y%,Z%:S%=9999999
"8X=X%-X(1)/C:Y=Y%-Y(1)/C:� S%>X*X+Y*Y S%=X*X+Y*Y:T%=1
,8X=X%-X(2)/C:Y=Y%-Y(2)/C:� S%>X*X+Y*Y S%=X*X+Y*Y:T%=2
68X=X%-X(3)/C:Y=Y%-Y(3)/C:� S%>X*X+Y*Y S%=X*X+Y*Y:T%=3
@"�0:ȏ ȐX(T%)/C,Y(T%)/C,8:�3,1
J4�:ȗ X%,Y%,Z%:ȏ ȐX%,Y%,8:Ȗ:ȏ ȐX%,Y%,8:�Z%=0
TX(T%)=X%*C:Y(T%)=Y%*C
^�
h 
r��PAUSE
|#�0,11)"PAUSE":�:A$=�(0):�A$=""
�%�:A$=�(0):�A$<>"":�0,11)"      "
��:A$=�(0):�A$=""
��
�
00000000  0d 00 0a 11 f4 20 3e 53  49 45 52 2d 54 52 49 41  |..... >SIER-TRIA|
00000010  4e 0d 00 14 46 f4 20 4a  45 41 4e 20 56 41 4e 20  |N...F. JEAN VAN |
00000020  4d 4f 55 52 49 4b 20 4d  49 4c 4c 43 4f 54 54 41  |MOURIK MILLCOTTA|
00000030  47 45 20 44 45 52 57 59  44 44 20 41 4d 4d 41 4e  |GE DERWYDD AMMAN|
00000040  46 4f 52 44 20 44 59 46  45 44 20 53 41 31 38 33  |FORD DYFED SA183|
00000050  4c 51 20 20 55 4b 2e 0d  00 1e 05 20 0d 00 28 12  |LQ  UK..... ..(.|
00000060  eb 31 39 3a 87 3a 2a 50  4f 49 4e 54 45 52 0d 00  |.19:.:*POINTER..|
00000070  32 20 53 25 3d 31 30 32  33 3a c8 91 36 34 30 2c  |2 S%=1023:..640,|
00000080  35 31 32 3a de 58 28 33  29 2c 59 28 33 29 0d 00  |512:.X(3),Y(3)..|
00000090  3c 32 f1 22 53 49 45 52  50 49 4e 53 4b 49 20 54  |<2."SIERPINSKI T|
000000a0  52 49 41 4e 47 4c 45 22  3a f1 3a f1 22 54 41 50  |RIANGLE":.:."TAP|
000000b0  20 53 50 41 43 45 20 54  4f 20 50 41 55 53 45 22  | SPACE TO PAUSE"|
000000c0  0d 00 46 38 f1 22 4d 49  44 44 4c 45 20 42 55 54  |..F8."MIDDLE BUT|
000000d0  54 4f 4e 20 54 4f 20 41  4c 54 45 52 20 54 48 45  |TON TO ALTER THE|
000000e0  20 53 48 41 50 45 20 4f  46 20 54 48 45 20 54 52  | SHAPE OF THE TR|
000000f0  49 41 4e 47 4c 45 2e 22  0d 00 50 53 f1 22 4c 45  |IANGLE."..PS."LE|
00000100  46 54 20 42 55 54 54 4f  4e 20 54 4f 20 41 4c 54  |FT BUTTON TO ALT|
00000110  45 52 20 43 20 49 4e 20  58 3d 28 58 28 52 25 29  |ER C IN X=(X(R%)|
00000120  2b 58 29 2a 43 3a 59 3d  28 59 28 52 25 29 2b 59  |+X)*C:Y=(Y(R%)+Y|
00000130  29 2a 43 2c 20 4d 4f 56  45 20 4d 4f 55 53 45 20  |)*C, MOVE MOUSE |
00000140  56 45 52 54 49 43 41 4c  59 2e 22 0d 00 5a 3b 59  |VERTICALY."..Z;Y|
00000150  28 31 29 3d 35 31 32 3a  58 28 32 29 3d 2d 36 34  |(1)=512:X(2)=-64|
00000160  30 3a 59 28 32 29 3d 2d  35 31 32 3a 58 28 33 29  |0:Y(2)=-512:X(3)|
00000170  3d 36 34 30 3a 59 28 33  29 3d 59 28 32 29 3a 58  |=640:Y(3)=Y(2):X|
00000180  3d 30 3a 59 3d 30 0d 00  64 6c e6 31 3a c8 8f 20  |=0:Y=0..dl.1:.. |
00000190  c8 90 58 28 31 29 2c 59  28 31 29 2c 38 3a c8 8f  |..X(1),Y(1),8:..|
000001a0  20 c8 90 58 28 32 29 2c  59 28 32 29 2c 38 3a c8  | ..X(2),Y(2),8:.|
000001b0  8f 20 c8 90 58 28 33 29  2c 59 28 33 29 2c 38 3a  |. ..X(3),Y(3),8:|
000001c0  43 3d 2e 35 3a f1 3a f1  22 49 54 45 52 2e 20 22  |C=.5:.:."ITER. "|
000001d0  3a f1 3a f1 22 43 3d 20  22 3b 43 3a e6 33 3a 58  |:.:."C= ";C:.3:X|
000001e0  28 29 3d 58 28 29 2a 43  3a 59 28 29 3d 59 28 29  |()=X()*C:Y()=Y()|
000001f0  2a 43 0d 00 6e 05 20 0d  00 78 0f f4 20 4d 41 49  |*C..n. ..x.. MAI|
00000200  4e 20 4c 4f 4f 50 0d 00  82 24 e3 20 49 25 3d 30  |N LOOP...$. I%=0|
00000210  20 b8 20 39 39 39 39 39  39 39 20 88 20 31 30 30  | . 9999999 . 100|
00000220  3a f1 8a 38 2c 36 29 3b  49 25 0d 00 8c 39 e3 20  |:..8,6);I%...9. |
00000230  4a 25 3d 49 25 b8 49 25  2b 39 39 3a 52 25 3d b3  |J%=I%.I%+99:R%=.|
00000240  28 33 29 3a 58 3d 58 28  52 25 29 2b 58 2a 43 3a  |(3):X=X(R%)+X*C:|
00000250  59 3d 59 28 52 25 29 2b  59 2a 43 3a c8 92 58 2c  |Y=Y(R%)+Y*C:..X,|
00000260  59 3a ed 0d 00 96 1e c8  97 20 58 25 2c 59 25 2c  |Y:....... X%,Y%,|
00000270  5a 25 3a e7 5a 25 20 f2  4d 4f 55 53 45 28 5a 25  |Z%:.Z% .MOUSE(Z%|
00000280  29 0d 00 a0 1b 41 24 3d  bf 28 30 29 3a e7 20 41  |)....A$=.(0):. A|
00000290  24 3c 3e 22 22 20 f2 50  41 55 53 45 0d 00 aa 07  |$<>"" .PAUSE....|
000002a0  ed 3a e0 0d 00 b4 05 20  0d 00 be 21 dd f2 4d 4f  |.:..... ...!..MO|
000002b0  55 53 45 28 5a 25 29 3a  ea 20 57 25 2c 58 25 2c  |USE(Z%):. W%,X%,|
000002c0  59 25 2c 5a 25 2c 5a 2c  59 0d 00 c8 17 c8 97 20  |Y%,Z%,Z,Y...... |
000002d0  58 25 2c 59 25 2c 5a 25  3a e7 5a 25 3e 32 20 e1  |X%,Y%,Z%:.Z%>2 .|
000002e0  0d 00 d2 13 e7 5a 25 3d  32 20 f2 41 4c 54 45 52  |.....Z%=2 .ALTER|
000002f0  28 43 29 0d 00 dc 64 e7  5a 25 3d 31 20 f5 3a c8  |(C)...d.Z%=1 .:.|
00000300  97 58 25 2c 59 25 2c 57  25 3a f1 8a 30 2c 38 29  |.X%,Y%,W%:..0,8)|
00000310  22 43 3d 20 22 3b 59 25  2f 39 39 39 3b 22 20 22  |"C= ";Y%/999;" "|
00000320  3a fd 57 25 3d 30 3a 58  28 29 3d 58 28 29 2f 43  |:.W%=0:X()=X()/C|
00000330  3a 59 28 29 3d 59 28 29  2f 43 3a 43 3d 59 25 2f  |:Y()=Y()/C:C=Y%/|
00000340  39 39 39 3a 58 28 29 3d  58 28 29 2a 43 3a 59 28  |999:X()=X()*C:Y(|
00000350  29 3d 59 28 29 2a 43 0d  00 e6 6c db 3a e6 31 3a  |)=Y()*C...l.:.1:|
00000360  c8 8f 20 c8 90 58 28 31  29 2f 43 2c 59 28 31 29  |.. ..X(1)/C,Y(1)|
00000370  2f 43 2c 38 3a c8 8f 20  c8 90 58 28 32 29 2f 43  |/C,8:.. ..X(2)/C|
00000380  2c 59 28 32 29 2f 43 2c  38 3a c8 8f 20 c8 90 58  |,Y(2)/C,8:.. ..X|
00000390  28 33 29 2f 43 2c 59 28  33 29 2f 43 2c 38 3a 49  |(3)/C,Y(3)/C,8:I|
000003a0  25 3d 30 3a e6 33 3a f1  8a 30 2c 38 29 22 43 3d  |%=0:.3:..0,8)"C=|
000003b0  20 22 3b 43 3a f1 8a 30  2c 36 29 22 49 54 45 52  | ";C:..0,6)"ITER|
000003c0  2e 20 22 0d 00 f0 05 e1  0d 00 fa 05 20 0d 01 04  |. "......... ...|
000003d0  2b f4 20 52 4f 55 54 49  4e 45 20 54 4f 20 41 4c  |+. ROUTINE TO AL|
000003e0  54 45 52 20 54 48 45 20  54 52 49 41 4e 47 4c 45  |TER THE TRIANGLE|
000003f0  27 53 20 53 48 41 50 45  0d 01 0e 23 dd f2 41 4c  |'S SHAPE...#..AL|
00000400  54 45 52 28 43 29 3a ea  20 53 25 2c 54 25 2c 58  |TER(C):. S%,T%,X|
00000410  2c 59 2c 58 25 2c 59 25  2c 5a 25 0d 01 18 1a c8  |,Y,X%,Y%,Z%.....|
00000420  97 20 58 25 2c 59 25 2c  5a 25 3a 53 25 3d 39 39  |. X%,Y%,Z%:S%=99|
00000430  39 39 39 39 39 0d 01 22  38 58 3d 58 25 2d 58 28  |99999.."8X=X%-X(|
00000440  31 29 2f 43 3a 59 3d 59  25 2d 59 28 31 29 2f 43  |1)/C:Y=Y%-Y(1)/C|
00000450  3a e7 20 53 25 3e 58 2a  58 2b 59 2a 59 20 53 25  |:. S%>X*X+Y*Y S%|
00000460  3d 58 2a 58 2b 59 2a 59  3a 54 25 3d 31 0d 01 2c  |=X*X+Y*Y:T%=1..,|
00000470  38 58 3d 58 25 2d 58 28  32 29 2f 43 3a 59 3d 59  |8X=X%-X(2)/C:Y=Y|
00000480  25 2d 59 28 32 29 2f 43  3a e7 20 53 25 3e 58 2a  |%-Y(2)/C:. S%>X*|
00000490  58 2b 59 2a 59 20 53 25  3d 58 2a 58 2b 59 2a 59  |X+Y*Y S%=X*X+Y*Y|
000004a0  3a 54 25 3d 32 0d 01 36  38 58 3d 58 25 2d 58 28  |:T%=2..68X=X%-X(|
000004b0  33 29 2f 43 3a 59 3d 59  25 2d 59 28 33 29 2f 43  |3)/C:Y=Y%-Y(3)/C|
000004c0  3a e7 20 53 25 3e 58 2a  58 2b 59 2a 59 20 53 25  |:. S%>X*X+Y*Y S%|
000004d0  3d 58 2a 58 2b 59 2a 59  3a 54 25 3d 33 0d 01 40  |=X*X+Y*Y:T%=3..@|
000004e0  22 e6 30 3a c8 8f 20 c8  90 58 28 54 25 29 2f 43  |".0:.. ..X(T%)/C|
000004f0  2c 59 28 54 25 29 2f 43  2c 38 3a e6 33 2c 31 0d  |,Y(T%)/C,8:.3,1.|
00000500  01 4a 34 f5 3a c8 97 20  58 25 2c 59 25 2c 5a 25  |.J4.:.. X%,Y%,Z%|
00000510  3a c8 8f 20 c8 90 58 25  2c 59 25 2c 38 3a c8 96  |:.. ..X%,Y%,8:..|
00000520  3a c8 8f 20 c8 90 58 25  2c 59 25 2c 38 3a fd 5a  |:.. ..X%,Y%,8:.Z|
00000530  25 3d 30 0d 01 54 19 58  28 54 25 29 3d 58 25 2a  |%=0..T.X(T%)=X%*|
00000540  43 3a 59 28 54 25 29 3d  59 25 2a 43 0d 01 5e 05  |C:Y(T%)=Y%*C..^.|
00000550  e1 0d 01 68 05 20 0d 01  72 0b dd f2 50 41 55 53  |...h. ..r...PAUS|
00000560  45 0d 01 7c 23 f1 8a 30  2c 31 31 29 22 50 41 55  |E..|#..0,11)"PAU|
00000570  53 45 22 3a f5 3a 41 24  3d bf 28 30 29 3a fd 41  |SE":.:A$=.(0):.A|
00000580  24 3d 22 22 0d 01 86 25  f5 3a 41 24 3d bf 28 30  |$=""...%.:A$=.(0|
00000590  29 3a fd 41 24 3c 3e 22  22 3a f1 8a 30 2c 31 31  |):.A$<>"":..0,11|
000005a0  29 22 20 20 20 20 20 20  22 0d 01 90 14 f5 3a 41  |)"      ".....:A|
000005b0  24 3d bf 28 30 29 3a fd  41 24 3d 22 22 0d 01 9a  |$=.(0):.A$=""...|
000005c0  05 e1 0d ff                                       |....|
000005c4