Home » Archimedes archive » Acorn Computing » 1994 04.adf » 9404 » Flowsnakes/SnowFlow

Flowsnakes/SnowFlow

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 Computing » 1994 04.adf » 9404
Filename: Flowsnakes/SnowFlow
Read OK:
File size: 23EC bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >SnowFlow
   20REM by Jim Paterson
   30REM (c) Acorn Computing
   40PROCinit
   50REPEAT
   60  ONERROR OFF:PROCmenu
   70  IF go% THEN PROCinterpret
   80UNTILquit%
   90MODE12
  100END
  110:
  120DEFPROCinit
  130DIM x(100),y(100),d%(100),s%(100)
  140DIM G%(3),X(3,12),Y(3,12),D%(3,12),S%(3,12)
  150DIM depth%(2),colour%(2),type%(2),type$(2),C%(8)
  160type$(0)="Outline":type$(1)="Interior":type$(2)="  None"
  170C%(0)=7:C%(1)=4:C%(2)=0:C%(3)=8:C%(4)=10:C%(5)=11:C%(6)=14:C%(7)=13
  180FOR I%=0 TO 2
  190  depth%(I%)=0:colour%(I%)=0:type%(I%)=2
  200NEXT
  210type%(2)=0:midx=600:midy=512:mode%=12:PROCdata
  220back%=2:fill%=2:quit%=FALSE:snow%=TRUE
  230m1%=120:m2%=320:m0%=100
  240ENDPROC
  250:
  260DEFPROCinterpret
  270ONERROR LOCAL IF ERR<>17 THEN MODE12:REPORT:PRINT ERL ELSE ENDPROC
  280MODE mode%:PROCcolours:GCOL 128+C%(back%):CLG:VDU29,0;0;:TIME=0
  290IF snow% THEN len=280 ELSE len=252
  300FOR I%=2 TO 0 STEP -1
  310  T%=type%(I%)
  320  IF T%<>2 THEN
  330    GCOL C%(colour%(I%)):D%=depth%(I%)
  340    CASE T% OF
  350      WHEN 0:IF snow% THEN PROCtriangle ELSE PROChexagon
  360      WHEN 1:PROCtwopoint
  370        MOVE x(0),y(0):DRAW x(0),0:MOVE x(1),y(1):DRAW x(1),1280
  380    ENDCASE
  390    IF NOTsnow% THEN T%+=2
  400    G%=G%(T%):P%=V%:N%=0:MOVE x(P%),y(P%):PROCrecurse
  410    IF I%=2 AND fill%<>back% THEN GCOL C%(fill%):FILL 0,0
  420  ENDIF
  430NEXT
  440REPEAT:UNTIL TIME>20
  450REPEAT MOUSE x,y,b:UNTIL b>0
  460ENDPROC
  470:
  480DEFPROChexagon
  490REM--for the flowsnake exterior
  500x(0)=midx+len  :y(0)=midy-len*SQR3:V%=6
  510x(1)=midx-len  :y(1)=midy-len*SQR3:d%(1)=-1:s%(1)=1
  520x(2)=midx-len*2:y(2)=midy         :d%(2)=-1:s%(2)=1
  530x(3)=midx-len  :y(3)=midy+len*SQR3:d%(3)=-1:s%(3)=1
  540x(4)=midx+len  :y(4)=midy+len*SQR3:d%(4)=-1:s%(4)=1
  550x(5)=midx+len*2:y(5)=midy         :d%(5)=-1:s%(5)=1
  560x(6)=midx+len  :y(6)=midy-len*SQR3:d%(6)=-1:s%(6)=1
  570ENDPROC
  580:
  590DEFPROCtriangle
  600REM--for the snowflake curve
  610x(0)=midx+len  :y(0)=midy-len*SQR3:V%=3
  620x(1)=midx-len*2:y(1)=midy         :d%(1)=1:s%(1)=1
  630x(2)=midx+len  :y(2)=midy+len*SQR3:d%(2)=1:s%(2)=1
  640x(3)=midx+len  :y(3)=midy-len*SQR3:d%(3)=1:s%(3)=1
  650ENDPROC
  660:
  670DEFPROCtwopoint
  680REM--for both Peano curves
  690x(0)=midx+len:y(0)=midy-len*SQR3:V%=1
  700x(1)=midx+len:y(1)=midy+len*SQR3:d%(1)=1:s%(1)=1
  710ENDPROC
  720:
  730DEFPROCdata
  740REM--Koch outline curve - "Snowflake"
  750G%(0)=3:D%(0,0)=1:S%(0,0)=1
  760X(0,1)=2/6:Y(0,1)=0*SQR3/6:D%(0,1)=1:S%(0,1)=1
  770X(0,2)=3/6:Y(0,2)=1*SQR3/6:D%(0,2)=1:S%(0,2)=1
  780X(0,3)=4/6:Y(0,3)=0*SQR3/6:D%(0,3)=1:S%(0,3)=1
  790REM--Mandlebrot Peano curve - interior of Snowflake
  800G%(1)=12:D%(1,0)=1:S%(1,0)=-1
  810X(1,1)=1/6:Y(1,1)=3*SQR3/18:D%(1,1)=1:S%(1,1)=1
  820X(1,2)=2/6:Y(1,2)=6*SQR3/18:D%(1,2)=1:S%(1,2)=1
  830X(1,3)=4/6:Y(1,3)=6*SQR3/18:D%(1,3)=1:S%(1,3)=1
  840X(1,4)=5/6:Y(1,4)=3*SQR3/18:D%(1,4)=1:S%(1,4)=1
  850X(1,5)=4/6:Y(1,5)=4*SQR3/18:D%(1,5)=1:S%(1,5)=-1
  860X(1,6)=3/6:Y(1,6)=5*SQR3/18:D%(1,6)=1:S%(1,6)=-1
  870X(1,7)=2/6:Y(1,7)=4*SQR3/18:D%(1,7)=1:S%(1,7)=-1
  880X(1,8)=2/6:Y(1,8)=2*SQR3/18:D%(1,8)=1:S%(1,8)=1
  890X(1,9)=4/6:Y(1,9)=2*SQR3/18:D%(1,9)=1:S%(1,9)=1
  900X(1,10)=3/6:Y(1,10)=1*SQR3/18:D%(1,10)=1:S%(1,10)=-1
  910X(1,11)=2/6:Y(1,11)=0*SQR3/18:D%(1,11)=1:S%(1,11)=-1
  920X(1,12)=4/6:Y(1,12)=0*SQR3/18:D%(1,12)=1:S%(1,12)=1
  930REM--Gosper perimeter - outline of Flowsnake
  940G%(2)=2:D%(2,0)=1:S%(2,0)=1
  950X(2,1)=5/14:Y(2,1)=-SQR3/14:D%(2,1)=1:S%(2,1)=1
  960X(2,2)=9/14:Y(2,2)=SQR3/14:D%(2,2)=1:S%(2,2)=1
  970REM--Gosper Peano curve - "Flowsnake"
  980G%(3)=6:D%(3,0)=1:S%(3,0)=1
  990X(3,1)=5/14:Y(3,1)=-SQR3/14:D%(3,1)=-1:S%(3,1)=1
 1000X(3,2)=9/14:Y(3,2)=SQR3/14:D%(3,2)=-1:S%(3,2)=1
 1010X(3,3)=4/14:Y(3,3)=2*SQR3/14:D%(3,3)=1:S%(3,3)=1
 1020X(3,4)=3/14:Y(3,4)=5*SQR3/14:D%(3,4)=1:S%(3,4)=1
 1030X(3,5)=8/14:Y(3,5)=4*SQR3/14:D%(3,5)=1:S%(3,5)=1
 1040X(3,6)=13/14:Y(3,6)=3*SQR3/14:D%(3,6)=-1:S%(3,6)=1
 1050ENDPROC
 1060:
 1070DEFPROCrecurse
 1080IF D%=N% THEN
 1090  IF D%=0 THEN W%=V% ELSE W%=G%+1
 1100  FOR K%=1 TO W%
 1110    P%-=1:DRAW x(P%),y(P%)
 1120  NEXT
 1130ELSE
 1140  LOCAL I%,J%,M%
 1150  IF N%=0 THEN M%=V% ELSE M%=G%+1
 1160  N%+=1
 1170  FOR J%=1 TO M%
 1180    x1=x(P%):y1=y(P%):x2=x(P%-1):y2=y(P%-1):s0%=s%(P%)
 1190    dx=x1-x2:dy=y1-y2
 1200    IF d%(P%)=1 THEN
 1210      FOR I%=1 TO G%
 1220        x(P%)=x2+dx*X(T%,I%)-dy*Y(T%,I%)*s0%
 1230        y(P%)=y2+dx*Y(T%,I%)*s0%+dy*X(T%,I%)
 1240        d%(P%)=D%(T%,I%-1):s%(P%)=S%(T%,I%-1)*s0%:P%+=1
 1250      NEXT
 1260      x(P%)=x1:y(P%)=y1:d%(P%)=D%(T%,G%):s%(P%)=S%(T%,G%)*s0%
 1270    ELSE
 1280      FOR I%=G% TO 1 STEP -1
 1290        x(P%)=x1-dx*X(T%,I%)+dy*Y(T%,I%)*s0%
 1300        y(P%)=y1-dx*Y(T%,I%)*s0%-dy*X(T%,I%)
 1310        d%(P%)=-D%(T%,I%):s%(P%)=S%(T%,I%-1)*s0%:P%+=1
 1320      NEXT
 1330      x(P%)=x1:y(P%)=y1:d%(P%)=-D%(T%,0):s%(P%)=S%(T%,0)*s0%
 1340    ENDIF
 1350    PROCrecurse
 1360  NEXT
 1370  N%-=1
 1380ENDIF
 1390ENDPROC
 1400:
 1410DEF PROCcolours
 1420COLOUR 0,255,255,255:COLOUR 1,221,221,221
 1430COLOUR 2,187,187,187:COLOUR 3,153,153,153
 1440COLOUR 4,119,119,119:COLOUR 5, 85, 85, 85
 1450COLOUR 6, 51, 51, 51:COLOUR 7,  0,  0,  0
 1460COLOUR 8,  0, 68,153:COLOUR 9,238,238,  0
 1470COLOUR10,  0,204,  0:COLOUR11,221,  0,  0
 1480COLOUR12,238,238,187:COLOUR13, 85,136,  0
 1490COLOUR14,255,187,  0:COLOUR15,  0,187,255
 1500ENDPROC
 1510:
 1520DEF PROCmenu
 1530MODE mode%:VDU5:OSCLI"POINTER":PROCcolours
 1540IF mode%=20 THEN dy=15 ELSE dy=8
 1550VDU 23,17,7,3,8;dy;0;0;:exit%=FALSE
 1560GCOL 129:CLG:VDU19,0,24,153,153,153:w=12
 1570GCOL 0:MOVE 0,0:MOVE w,w:PLOT 85,1280,0:PLOT 85,1280-w,w
 1580PLOT 85,1280,1024:PLOT 85,1280-w,1024-w
 1590GCOL 4:MOVE 0,0:MOVE w,w:PLOT 85,0,1024:PLOT 85,w,1024-w
 1600PLOT 85,1280,1024:PLOT 85,1280-w,1024-w
 1610VDU24,w;w;1280-w;1024-w;
 1620FOR curve=0 TO 2
 1630  VDU29,0;m0%+200*curve;
 1640  PROCbutton(m1%,12,6,"Colour:",2,TRUE)
 1650  FOR I%=0 TO 7
 1660    IF I%=colour%(curve) THEN state=TRUE ELSE state=FALSE
 1670    PROCbutton(m2%+I%*100,12,C%(I%),"",1,state)
 1680  NEXT
 1690  PROCbutton(m1%,72,6,"Depth:",2,TRUE)
 1700  FOR I%=0 TO 5
 1710    IF I%=depth%(curve) THEN state=TRUE ELSE state=FALSE
 1720    PROCbutton(m2%+I%*100,72,-1," "+STR$(I%),1,state)
 1730  NEXT
 1740  PROCbutton(m1%,132,6,"Curve:"+STR$(3-curve),2,TRUE)
 1750  FOR I%=0 TO 2
 1760    IF curve<>2 OR I%<>2 THEN
 1770      IF I%=type%(curve) THEN state=TRUE ELSE state=FALSE
 1780      PROCbutton(m2%+I%*200,132,-1,type$(I%),2,state)
 1790    ENDIF
 1800  NEXT
 1810  GCOL7:MOVE 0,196:DRAW 1280,196
 1820NEXT
 1830VDU29,0;0;
 1840PROCbutton(450,m0%-64,-1,"   GO",2,FALSE)
 1850PROCbutton(650,m0%-64,-1,"  QUIT",2,FALSE)
 1860VDU29,0;m0%+600;
 1870PROCbutton(m1%,12,6," Fill:",2,TRUE)
 1880FOR I%=0 TO 7
 1890  IF I%=fill% THEN state=TRUE ELSE state=FALSE
 1900  PROCbutton(m2%+I%*100,12,C%(I%),"",1,state)
 1910NEXT
 1920PROCbutton(m1%,72,6," Back:",2,TRUE)
 1930FOR I%=0 TO 7
 1940  IF I%=back% THEN state=TRUE ELSE state=FALSE
 1950  PROCbutton(m2%+I%*100,72,C%(I%),"",1,state)
 1960NEXT
 1970PROCbutton(m1%,132,6," Mode:",2,TRUE)
 1980IF mode%=12 THEN state=TRUE ELSE state=FALSE
 1990PROCbutton(m2%,132,-1,"12",1,state)
 2000PROCbutton(m2%+100,132,-1,"20",1,NOTstate)
 2010PROCbutton(m1%,220,6," Type:",2,TRUE)
 2020PROCbutton(m2%,220,-1,"SnowFlake",2,snow%)
 2030PROCbutton(m2%+200,220,-1,"Flowsnake",2,NOTsnow%)
 2040go%=FALSE
 2050REPEAT
 2060  VDU29,0;0;:REPEAT:MOUSE x,y,b:UNTIL b>0
 2070  IF y<m0% THEN
 2080    IF x>=450 AND x<=630 THEN go%=TRUE
 2090    IF x>=650 AND x<=830 THEN quit%=TRUE
 2100  ENDIF
 2110  y-=m0%
 2120  IF y<600 THEN
 2130    IF y>=0 AND y<200 THEN curve=0
 2140    IF y>=200 AND y<400 THEN curve=1
 2150    IF y>=400 AND y<600 THEN curve=2
 2160    y-=200*curve:VDU29,0;m0%+200*curve;
 2170    IF y>=8 AND y<=58 THEN
 2180      J%=colour%(curve)
 2190      FOR I%=0 TO 7
 2200        IF x>=m2%+I%*100 AND x<=m2%+80+I%*100 AND I%<>J% THEN
 2210          PROCbutton(m2%+J%*100,12,C%(J%),"",1,FALSE)
 2220          colour%(curve)=I%
 2230          PROCbutton(m2%+I%*100,12,C%(I%),"",1,TRUE)
 2240        ENDIF
 2250      NEXT
 2260    ENDIF
 2270    IF y>=70 AND y<=120 THEN
 2280      J%=depth%(curve)
 2290      FOR I%=0 TO 5
 2300        IF x>=m2%+I%*100 AND x<=m2%+80+I%*100 AND I%<>J% THEN
 2310          PROCbutton(m2%+J%*100,72,-1," "+STR$(J%),1,FALSE)
 2320          depth%(curve)=I%
 2330          PROCbutton(m2%+I%*100,72,-1," "+STR$(I%),1,TRUE)
 2340        ENDIF
 2350      NEXT
 2360    ENDIF
 2370    IF y>=132 AND y<=182 THEN
 2380      J%=type%(curve)
 2390      FOR I%=0 TO 2
 2400        IF x>=m2%+I%*200 AND x<=m2%+180+I%*200 AND I%<>J% THEN
 2410          IF curve<>2 OR I%<>2 THEN
 2420            PROCbutton(m2%+J%*200,132,-1,type$(J%),2,FALSE)
 2430            type%(curve)=I%
 2440            PROCbutton(m2%+I%*200,132,-1,type$(I%),2,TRUE)
 2450          ENDIF
 2460        ENDIF
 2470      NEXT
 2480    ENDIF
 2490    IF y>=8 AND y<=58 THEN
 2500      J%=colour%(curve)
 2510      FOR I%=0 TO 7
 2520        IF x>=m2%+I%*100 AND x<=m2%+80+I%*100 AND I%<>J% THEN
 2530          PROCbutton(m2%+J%*100,12,C%(J%),"",1,FALSE)
 2540          colour%(curve)=I%
 2550          PROCbutton(m2%+I%*100,12,C%(I%),"",1,TRUE)
 2560        ENDIF
 2570      NEXT
 2580    ENDIF
 2590  ELSE
 2600    y-=600:VDU29,0;m0%+600;
 2610    IF y>=8 AND y<=58 THEN
 2620      J%=fill%
 2630      FOR I%=0 TO 7
 2640        IF x>=m2%+I%*100 AND x<=m2%+80+I%*100 AND I%<>J% THEN
 2650          PROCbutton(m2%+J%*100,12,C%(fill%),"",1,FALSE)
 2660          fill%=I%:PROCbutton(m2%+I%*100,12,C%(fill%),"",1,TRUE)
 2670        ENDIF
 2680      NEXT
 2690    ENDIF
 2700    IF y>=72 AND y<=122 THEN
 2710      J%=back%
 2720      FOR I%=0 TO 7
 2730        IF x>=m2%+I%*100 AND x<=m2%+80+I%*100 AND I%<>J% THEN
 2740          PROCbutton(m2%+J%*100,72,C%(back%),"",1,FALSE)
 2750          back%=I%:PROCbutton(m2%+I%*100,72,C%(back%),"",1,TRUE)
 2760        ENDIF
 2770      NEXT
 2780    ENDIF
 2790    IF y>=132 AND y<=182 THEN
 2800      IF (x>=m2% AND x<=m2%+80 AND mode%=20) OR (x>=m2%+100 AND x<=m2%+180 AND mode%=12) THEN
 2810        mode%=32-mode%:exit%=TRUE
 2820        IF mode%=12 THEN state=TRUE ELSE state=FALSE
 2830        PROCbutton(m2%,132,-1,"12",1,state)
 2840        PROCbutton(m2%+100,132,-1,"20",1,NOTstate)
 2850      ENDIF
 2860    ENDIF
 2870    IF y>=220 AND y<=270 THEN
 2880      IF (x>=m2% AND x<= m2%+180 AND NOTsnow%) OR (x>=m2%+200 AND x<=m2%+380 AND snow%) THEN
 2890        snow%=NOTsnow%
 2900        PROCbutton(m2%,220,-1,"SnowFlake",2,snow%)
 2910        PROCbutton(m2%+200,220,-1,"FlowSnake",2,NOTsnow%)
 2920      ENDIF
 2930    ENDIF
 2940  ENDIF
 2950UNTIL go% OR quit% OR exit%
 2960ENDPROC
 2970:
 2980DEFPROCbutton(x,y,c,t$,s,on)
 2990LOCAL l,h,b,g:h=48
 3000IF s=2 THEN l=168 ELSE l=84
 3010IF on THEN b=4:g=0:GCOL5 ELSE b=16:g=7:GCOL3
 3020RECTANGLE FILL x,y,l,h
 3030IF NOTon THEN
 3040  GCOL5:MOVE x,y:DRAW BY l,0:DRAW BY 0,h
 3050  GCOL0:MOVE x,y:DRAW BY 0,h:DRAW BY l,0
 3060ENDIF
 3070GCOL1:POINT x,y:POINT x+l,y:POINT x+l,y+h:POINT x,y+h
 3080IF c>-1 THEN GCOLc:RECTANGLE FILL x+b,y+b,l-b*2,h-b*2
 3090GCOLg:MOVE x+16,y+38:PRINT t$
 3100ENDPROC
� >SnowFlow
� by Jim Paterson
� (c) Acorn Computing
(	�init
2�
<  � �:�menu
F  � go% � �interpret
P
�quit%
Z�12
d�
n:
x
��init
�#� x(100),y(100),d%(100),s%(100)
�-� G%(3),X(3,12),Y(3,12),D%(3,12),S%(3,12)
�2� depth%(2),colour%(2),type%(2),type$(2),C%(8)
�<type$(0)="Outline":type$(1)="Interior":type$(2)="  None"
�GC%(0)=7:C%(1)=4:C%(2)=0:C%(3)=8:C%(4)=10:C%(5)=11:C%(6)=14:C%(7)=13
�� I%=0 � 2
�,  depth%(I%)=0:colour%(I%)=0:type%(I%)=2
��
�/type%(2)=0:midx=600:midy=512:mode%=12:�data
�#back%=2:fill%=2:quit%=�:snow%=�
�m1%=120:m2%=320:m0%=100
��
�:
��interpret
 � � � �<>17 � �12:�:� � � �
3� mode%:�colours:� 128+C%(back%):�:�29,0;0;:�=0
"� snow% � len=280 � len=252
,� I%=2 � 0 � -1
6  T%=type%(I%)
@  � T%<>2 �
J'    � C%(colour%(I%)):D%=depth%(I%)
T    Ȏ T% �
^,      � 0:� snow% � �triangle � �hexagon
h      � 1:�twopoint
r8        � x(0),y(0):� x(0),0:� x(1),y(1):� x(1),1280
|	    �
�    � �snow% � T%+=2
�3    G%=G%(T%):P%=V%:N%=0:� x(P%),y(P%):�recurse
�2    � I%=2 � fill%<>back% � � C%(fill%):Ȑ 0,0
�  �
��
��:� �>20
�� ȗ x,y,b:� b>0
��
�:
�
��hexagon
�!�--for the flowsnake exterior
�)x(0)=midx+len  :y(0)=midy-len*�3:V%=6
�5x(1)=midx-len  :y(1)=midy-len*�3:d%(1)=-1:s%(1)=1
7x(2)=midx-len*2:y(2)=midy         :d%(2)=-1:s%(2)=1
5x(3)=midx-len  :y(3)=midy+len*�3:d%(3)=-1:s%(3)=1
5x(4)=midx+len  :y(4)=midy+len*�3:d%(4)=-1:s%(4)=1
&7x(5)=midx+len*2:y(5)=midy         :d%(5)=-1:s%(5)=1
05x(6)=midx+len  :y(6)=midy-len*�3:d%(6)=-1:s%(6)=1
:�
D:
N��triangle
X�--for the snowflake curve
b)x(0)=midx+len  :y(0)=midy-len*�3:V%=3
l6x(1)=midx-len*2:y(1)=midy         :d%(1)=1:s%(1)=1
v4x(2)=midx+len  :y(2)=midy+len*�3:d%(2)=1:s%(2)=1
�4x(3)=midx+len  :y(3)=midy-len*�3:d%(3)=1:s%(3)=1
��
�:
���twopoint
��--for both Peano curves
�'x(0)=midx+len:y(0)=midy-len*�3:V%=1
�2x(1)=midx+len:y(1)=midy+len*�3:d%(1)=1:s%(1)=1
��
�:
�
��data
�'�--Koch outline curve - "Snowflake"
�G%(0)=3:D%(0,0)=1:S%(0,0)=1
�0X(0,1)=2/6:Y(0,1)=0*�3/6:D%(0,1)=1:S%(0,1)=1
0X(0,2)=3/6:Y(0,2)=1*�3/6:D%(0,2)=1:S%(0,2)=1
0X(0,3)=4/6:Y(0,3)=0*�3/6:D%(0,3)=1:S%(0,3)=1
5�--Mandlebrot Peano curve - interior of Snowflake
 !G%(1)=12:D%(1,0)=1:S%(1,0)=-1
*1X(1,1)=1/6:Y(1,1)=3*�3/18:D%(1,1)=1:S%(1,1)=1
41X(1,2)=2/6:Y(1,2)=6*�3/18:D%(1,2)=1:S%(1,2)=1
>1X(1,3)=4/6:Y(1,3)=6*�3/18:D%(1,3)=1:S%(1,3)=1
H1X(1,4)=5/6:Y(1,4)=3*�3/18:D%(1,4)=1:S%(1,4)=1
R2X(1,5)=4/6:Y(1,5)=4*�3/18:D%(1,5)=1:S%(1,5)=-1
\2X(1,6)=3/6:Y(1,6)=5*�3/18:D%(1,6)=1:S%(1,6)=-1
f2X(1,7)=2/6:Y(1,7)=4*�3/18:D%(1,7)=1:S%(1,7)=-1
p1X(1,8)=2/6:Y(1,8)=2*�3/18:D%(1,8)=1:S%(1,8)=1
z1X(1,9)=4/6:Y(1,9)=2*�3/18:D%(1,9)=1:S%(1,9)=1
�6X(1,10)=3/6:Y(1,10)=1*�3/18:D%(1,10)=1:S%(1,10)=-1
�6X(1,11)=2/6:Y(1,11)=0*�3/18:D%(1,11)=1:S%(1,11)=-1
�5X(1,12)=4/6:Y(1,12)=0*�3/18:D%(1,12)=1:S%(1,12)=1
�.�--Gosper perimeter - outline of Flowsnake
�G%(2)=2:D%(2,0)=1:S%(2,0)=1
�1X(2,1)=5/14:Y(2,1)=-�3/14:D%(2,1)=1:S%(2,1)=1
�0X(2,2)=9/14:Y(2,2)=�3/14:D%(2,2)=1:S%(2,2)=1
�'�--Gosper Peano curve - "Flowsnake"
�G%(3)=6:D%(3,0)=1:S%(3,0)=1
�2X(3,1)=5/14:Y(3,1)=-�3/14:D%(3,1)=-1:S%(3,1)=1
�1X(3,2)=9/14:Y(3,2)=�3/14:D%(3,2)=-1:S%(3,2)=1
�2X(3,3)=4/14:Y(3,3)=2*�3/14:D%(3,3)=1:S%(3,3)=1
�2X(3,4)=3/14:Y(3,4)=5*�3/14:D%(3,4)=1:S%(3,4)=1
2X(3,5)=8/14:Y(3,5)=4*�3/14:D%(3,5)=1:S%(3,5)=1
4X(3,6)=13/14:Y(3,6)=3*�3/14:D%(3,6)=-1:S%(3,6)=1
�
$:
.
��recurse
8
� D%=N% �
B  � D%=0 � W%=V% � W%=G%+1
L  � K%=1 � W%
V    P%-=1:� x(P%),y(P%)
`  �
j�
t  � I%,J%,M%
~  � N%=0 � M%=V% � M%=G%+1
�  N%+=1
�  � J%=1 � M%
�:    x1=x(P%):y1=y(P%):x2=x(P%-1):y2=y(P%-1):s0%=s%(P%)
�    dx=x1-x2:dy=y1-y2
�    � d%(P%)=1 �
�      � I%=1 � G%
�0        x(P%)=x2+dx*X(T%,I%)-dy*Y(T%,I%)*s0%
�0        y(P%)=y2+dx*Y(T%,I%)*s0%+dy*X(T%,I%)
�;        d%(P%)=D%(T%,I%-1):s%(P%)=S%(T%,I%-1)*s0%:P%+=1
�      �
�A      x(P%)=x1:y(P%)=y1:d%(P%)=D%(T%,G%):s%(P%)=S%(T%,G%)*s0%
�	    �
      � I%=G% � 1 � -1

0        x(P%)=x1-dx*X(T%,I%)+dy*Y(T%,I%)*s0%
0        y(P%)=y1-dx*Y(T%,I%)*s0%-dy*X(T%,I%)
:        d%(P%)=-D%(T%,I%):s%(P%)=S%(T%,I%-1)*s0%:P%+=1
(      �
2@      x(P%)=x1:y(P%)=y1:d%(P%)=-D%(T%,0):s%(P%)=S%(T%,0)*s0%
<	    �
F    �recurse
P  �
Z  N%-=1
d�
n�
x:
�� �colours
�#� 0,255,255,255:� 1,221,221,221
�#� 2,187,187,187:� 3,153,153,153
�#� 4,119,119,119:� 5, 85, 85, 85
�#� 6, 51, 51, 51:� 7,  0,  0,  0
�#� 8,  0, 68,153:� 9,238,238,  0
�#�10,  0,204,  0:�11,221,  0,  0
�#�12,238,238,187:�13, 85,136,  0
�#�14,255,187,  0:�15,  0,187,255
��
�:
�� �menu
�"� mode%:�5:�"POINTER":�colours
� mode%=20 � dy=15 � dy=8
!� 23,17,7,3,8;dy;0;0;:exit%=�
%� 129:�:�19,0,24,153,153,153:w=12
"-� 0:� 0,0:� w,w:� 85,1280,0:� 85,1280-w,w
,%� 85,1280,1024:� 85,1280-w,1024-w
6-� 4:� 0,0:� w,w:� 85,0,1024:� 85,w,1024-w
@%� 85,1280,1024:� 85,1280-w,1024-w
J�24,w;w;1280-w;1024-w;
T� curve=0 � 2
^  �29,0;m0%+200*curve;
h%  �button(m1%,12,6,"Colour:",2,�)
r  � I%=0 � 7
|/    � I%=colour%(curve) � state=� � state=�
�0    �button(m2%+I%*100,12,C%(I%),"",1,state)
�  �
�$  �button(m1%,72,6,"Depth:",2,�)
�  � I%=0 � 5
�.    � I%=depth%(curve) � state=� � state=�
�3    �button(m2%+I%*100,72,-1," "+�(I%),1,state)
�  �
�0  �button(m1%,132,6,"Curve:"+�(3-curve),2,�)
�  � I%=0 � 2
�    � curve<>2 � I%<>2 �
�/      � I%=type%(curve) � state=� � state=�
�6      �button(m2%+I%*200,132,-1,type$(I%),2,state)
�	    �
  �
  �7:� 0,196:� 1280,196
�
&�29,0;0;
0&�button(450,m0%-64,-1,"   GO",2,�)
:'�button(650,m0%-64,-1,"  QUIT",2,�)
D�29,0;m0%+600;
N"�button(m1%,12,6," Fill:",2,�)
X� I%=0 � 7
b$  � I%=fill% � state=� � state=�
l.  �button(m2%+I%*100,12,C%(I%),"",1,state)
v�
�"�button(m1%,72,6," Back:",2,�)
�� I%=0 � 7
�$  � I%=back% � state=� � state=�
�.  �button(m2%+I%*100,72,C%(I%),"",1,state)
��
�#�button(m1%,132,6," Mode:",2,�)
�"� mode%=12 � state=� � state=�
�$�button(m2%,132,-1,"12",1,state)
�)�button(m2%+100,132,-1,"20",1,�state)
�#�button(m1%,220,6," Type:",2,�)
�+�button(m2%,220,-1,"SnowFlake",2,snow%)
�0�button(m2%+200,220,-1,"Flowsnake",2,�snow%)
�	go%=�
�
  �29,0;0;:�:ȗ x,y,b:� b>0
  � y<m0% �
 !    � x>=450 � x<=630 � go%=�
*#    � x>=650 � x<=830 � quit%=�
4  �
>  y-=m0%
H  � y<600 �
R     � y>=0 � y<200 � curve=0
\"    � y>=200 � y<400 � curve=1
f"    � y>=400 � y<600 � curve=2
p)    y-=200*curve:�29,0;m0%+200*curve;
z    � y>=8 � y<=58 �
�      J%=colour%(curve)
�      � I%=0 � 7
�9        � x>=m2%+I%*100 � x<=m2%+80+I%*100 � I%<>J% �
�2          �button(m2%+J%*100,12,C%(J%),"",1,�)
�          colour%(curve)=I%
�2          �button(m2%+I%*100,12,C%(I%),"",1,�)
�
        �
�      �
�	    �
�    � y>=70 � y<=120 �
�      J%=depth%(curve)
�      � I%=0 � 5
�9        � x>=m2%+I%*100 � x<=m2%+80+I%*100 � I%<>J% �
	5          �button(m2%+J%*100,72,-1," "+�(J%),1,�)
	          depth%(curve)=I%
	5          �button(m2%+I%*100,72,-1," "+�(I%),1,�)
	$
        �
	.      �
	8	    �
	B    � y>=132 � y<=182 �
	L      J%=type%(curve)
	V      � I%=0 � 2
	`:        � x>=m2%+I%*200 � x<=m2%+180+I%*200 � I%<>J% �
	j"          � curve<>2 � I%<>2 �
	t8            �button(m2%+J%*200,132,-1,type$(J%),2,�)
	~            type%(curve)=I%
	�8            �button(m2%+I%*200,132,-1,type$(I%),2,�)
	�          �
	�
        �
	�      �
	�	    �
	�    � y>=8 � y<=58 �
	�      J%=colour%(curve)
	�      � I%=0 � 7
	�9        � x>=m2%+I%*100 � x<=m2%+80+I%*100 � I%<>J% �
	�2          �button(m2%+J%*100,12,C%(J%),"",1,�)
	�          colour%(curve)=I%
	�2          �button(m2%+I%*100,12,C%(I%),"",1,�)

        �

      �
	    �
  �
(    y-=600:�29,0;m0%+600;
2    � y>=8 � y<=58 �
<      J%=fill%
F      � I%=0 � 7
P9        � x>=m2%+I%*100 � x<=m2%+80+I%*100 � I%<>J% �
Z5          �button(m2%+J%*100,12,C%(fill%),"",1,�)
d>          fill%=I%:�button(m2%+I%*100,12,C%(fill%),"",1,�)
n
        �
x      �
�	    �
�    � y>=72 � y<=122 �
�      J%=back%
�      � I%=0 � 7
�9        � x>=m2%+I%*100 � x<=m2%+80+I%*100 � I%<>J% �
�5          �button(m2%+J%*100,72,C%(back%),"",1,�)
�>          back%=I%:�button(m2%+I%*100,72,C%(back%),"",1,�)
�
        �
�      �
�	    �
�    � y>=132 � y<=182 �
�T      � (x>=m2% � x<=m2%+80 � mode%=20) � (x>=m2%+100 � x<=m2%+180 � mode%=12) �
�"        mode%=32-mode%:exit%=�
*        � mode%=12 � state=� � state=�
,        �button(m2%,132,-1,"12",1,state)
1        �button(m2%+100,132,-1,"20",1,�state)
"      �
,	    �
6    � y>=220 � y<=270 �
@Q      � (x>=m2% � x<= m2%+180 � �snow%) � (x>=m2%+200 � x<=m2%+380 � snow%) �
J        snow%=�snow%
T3        �button(m2%,220,-1,"SnowFlake",2,snow%)
^8        �button(m2%+200,220,-1,"FlowSnake",2,�snow%)
h      �
r	    �
|  �
�� go% � quit% � exit%
��
�:
���button(x,y,c,t$,s,on)
�� l,h,b,g:h=48
�� s=2 � l=168 � l=84
�#� on � b=4:g=0:�5 � b=16:g=7:�3
�ȓ Ȑ x,y,l,h
�� �on �
�   �5:� x,y:� BY l,0:� BY 0,h
�   �0:� x,y:� BY 0,h:� BY l,0
��
�*�1:Ȓ x,y:Ȓ x+l,y:Ȓ x+l,y+h:Ȓ x,y+h
)� c>-1 � �c:ȓ Ȑ x+b,y+b,l-b*2,h-b*2
�g:� x+16,y+38:� t$
�
�
00000000  0d 00 0a 0f f4 20 3e 53  6e 6f 77 46 6c 6f 77 0d  |..... >SnowFlow.|
00000010  00 14 15 f4 20 62 79 20  4a 69 6d 20 50 61 74 65  |.... by Jim Pate|
00000020  72 73 6f 6e 0d 00 1e 19  f4 20 28 63 29 20 41 63  |rson..... (c) Ac|
00000030  6f 72 6e 20 43 6f 6d 70  75 74 69 6e 67 0d 00 28  |orn Computing..(|
00000040  09 f2 69 6e 69 74 0d 00  32 05 f5 0d 00 3c 10 20  |..init..2....<. |
00000050  20 ee 85 20 87 3a f2 6d  65 6e 75 0d 00 46 18 20  | .. .:.menu..F. |
00000060  20 e7 20 67 6f 25 20 8c  20 f2 69 6e 74 65 72 70  | . go% . .interp|
00000070  72 65 74 0d 00 50 0a fd  71 75 69 74 25 0d 00 5a  |ret..P..quit%..Z|
00000080  07 eb 31 32 0d 00 64 05  e0 0d 00 6e 05 3a 0d 00  |..12..d....n.:..|
00000090  78 0a dd f2 69 6e 69 74  0d 00 82 23 de 20 78 28  |x...init...#. x(|
000000a0  31 30 30 29 2c 79 28 31  30 30 29 2c 64 25 28 31  |100),y(100),d%(1|
000000b0  30 30 29 2c 73 25 28 31  30 30 29 0d 00 8c 2d de  |00),s%(100)...-.|
000000c0  20 47 25 28 33 29 2c 58  28 33 2c 31 32 29 2c 59  | G%(3),X(3,12),Y|
000000d0  28 33 2c 31 32 29 2c 44  25 28 33 2c 31 32 29 2c  |(3,12),D%(3,12),|
000000e0  53 25 28 33 2c 31 32 29  0d 00 96 32 de 20 64 65  |S%(3,12)...2. de|
000000f0  70 74 68 25 28 32 29 2c  63 6f 6c 6f 75 72 25 28  |pth%(2),colour%(|
00000100  32 29 2c 74 79 70 65 25  28 32 29 2c 74 79 70 65  |2),type%(2),type|
00000110  24 28 32 29 2c 43 25 28  38 29 0d 00 a0 3c 74 79  |$(2),C%(8)...<ty|
00000120  70 65 24 28 30 29 3d 22  4f 75 74 6c 69 6e 65 22  |pe$(0)="Outline"|
00000130  3a 74 79 70 65 24 28 31  29 3d 22 49 6e 74 65 72  |:type$(1)="Inter|
00000140  69 6f 72 22 3a 74 79 70  65 24 28 32 29 3d 22 20  |ior":type$(2)=" |
00000150  20 4e 6f 6e 65 22 0d 00  aa 47 43 25 28 30 29 3d  | None"...GC%(0)=|
00000160  37 3a 43 25 28 31 29 3d  34 3a 43 25 28 32 29 3d  |7:C%(1)=4:C%(2)=|
00000170  30 3a 43 25 28 33 29 3d  38 3a 43 25 28 34 29 3d  |0:C%(3)=8:C%(4)=|
00000180  31 30 3a 43 25 28 35 29  3d 31 31 3a 43 25 28 36  |10:C%(5)=11:C%(6|
00000190  29 3d 31 34 3a 43 25 28  37 29 3d 31 33 0d 00 b4  |)=14:C%(7)=13...|
000001a0  0e e3 20 49 25 3d 30 20  b8 20 32 0d 00 be 2c 20  |.. I%=0 . 2..., |
000001b0  20 64 65 70 74 68 25 28  49 25 29 3d 30 3a 63 6f  | depth%(I%)=0:co|
000001c0  6c 6f 75 72 25 28 49 25  29 3d 30 3a 74 79 70 65  |lour%(I%)=0:type|
000001d0  25 28 49 25 29 3d 32 0d  00 c8 05 ed 0d 00 d2 2f  |%(I%)=2......../|
000001e0  74 79 70 65 25 28 32 29  3d 30 3a 6d 69 64 78 3d  |type%(2)=0:midx=|
000001f0  36 30 30 3a 6d 69 64 79  3d 35 31 32 3a 6d 6f 64  |600:midy=512:mod|
00000200  65 25 3d 31 32 3a f2 64  61 74 61 0d 00 dc 23 62  |e%=12:.data...#b|
00000210  61 63 6b 25 3d 32 3a 66  69 6c 6c 25 3d 32 3a 71  |ack%=2:fill%=2:q|
00000220  75 69 74 25 3d a3 3a 73  6e 6f 77 25 3d b9 0d 00  |uit%=.:snow%=...|
00000230  e6 1b 6d 31 25 3d 31 32  30 3a 6d 32 25 3d 33 32  |..m1%=120:m2%=32|
00000240  30 3a 6d 30 25 3d 31 30  30 0d 00 f0 05 e1 0d 00  |0:m0%=100.......|
00000250  fa 05 3a 0d 01 04 0f dd  f2 69 6e 74 65 72 70 72  |..:......interpr|
00000260  65 74 0d 01 0e 20 ee 85  20 ea 20 e7 20 9f 3c 3e  |et... .. . . .<>|
00000270  31 37 20 8c 20 eb 31 32  3a f6 3a f1 20 9e 20 8b  |17 . .12:.:. . .|
00000280  20 e1 0d 01 18 33 eb 20  6d 6f 64 65 25 3a f2 63  | ....3. mode%:.c|
00000290  6f 6c 6f 75 72 73 3a e6  20 31 32 38 2b 43 25 28  |olours:. 128+C%(|
000002a0  62 61 63 6b 25 29 3a da  3a ef 32 39 2c 30 3b 30  |back%):.:.29,0;0|
000002b0  3b 3a d1 3d 30 0d 01 22  1f e7 20 73 6e 6f 77 25  |;:.=0..".. snow%|
000002c0  20 8c 20 6c 65 6e 3d 32  38 30 20 8b 20 6c 65 6e  | . len=280 . len|
000002d0  3d 32 35 32 0d 01 2c 13  e3 20 49 25 3d 32 20 b8  |=252..,.. I%=2 .|
000002e0  20 30 20 88 20 2d 31 0d  01 36 12 20 20 54 25 3d  | 0 . -1..6.  T%=|
000002f0  74 79 70 65 25 28 49 25  29 0d 01 40 0f 20 20 e7  |type%(I%)..@.  .|
00000300  20 54 25 3c 3e 32 20 8c  0d 01 4a 27 20 20 20 20  | T%<>2 ...J'    |
00000310  e6 20 43 25 28 63 6f 6c  6f 75 72 25 28 49 25 29  |. C%(colour%(I%)|
00000320  29 3a 44 25 3d 64 65 70  74 68 25 28 49 25 29 0d  |):D%=depth%(I%).|
00000330  01 54 0f 20 20 20 20 c8  8e 20 54 25 20 ca 0d 01  |.T.    .. T% ...|
00000340  5e 2c 20 20 20 20 20 20  c9 20 30 3a e7 20 73 6e  |^,      . 0:. sn|
00000350  6f 77 25 20 8c 20 f2 74  72 69 61 6e 67 6c 65 20  |ow% . .triangle |
00000360  8b 20 f2 68 65 78 61 67  6f 6e 0d 01 68 17 20 20  |. .hexagon..h.  |
00000370  20 20 20 20 c9 20 31 3a  f2 74 77 6f 70 6f 69 6e  |    . 1:.twopoin|
00000380  74 0d 01 72 38 20 20 20  20 20 20 20 20 ec 20 78  |t..r8        . x|
00000390  28 30 29 2c 79 28 30 29  3a df 20 78 28 30 29 2c  |(0),y(0):. x(0),|
000003a0  30 3a ec 20 78 28 31 29  2c 79 28 31 29 3a df 20  |0:. x(1),y(1):. |
000003b0  78 28 31 29 2c 31 32 38  30 0d 01 7c 09 20 20 20  |x(1),1280..|.   |
000003c0  20 cb 0d 01 86 18 20 20  20 20 e7 20 ac 73 6e 6f  | .....    . .sno|
000003d0  77 25 20 8c 20 54 25 2b  3d 32 0d 01 90 33 20 20  |w% . T%+=2...3  |
000003e0  20 20 47 25 3d 47 25 28  54 25 29 3a 50 25 3d 56  |  G%=G%(T%):P%=V|
000003f0  25 3a 4e 25 3d 30 3a ec  20 78 28 50 25 29 2c 79  |%:N%=0:. x(P%),y|
00000400  28 50 25 29 3a f2 72 65  63 75 72 73 65 0d 01 9a  |(P%):.recurse...|
00000410  32 20 20 20 20 e7 20 49  25 3d 32 20 80 20 66 69  |2    . I%=2 . fi|
00000420  6c 6c 25 3c 3e 62 61 63  6b 25 20 8c 20 e6 20 43  |ll%<>back% . . C|
00000430  25 28 66 69 6c 6c 25 29  3a c8 90 20 30 2c 30 0d  |%(fill%):.. 0,0.|
00000440  01 a4 07 20 20 cd 0d 01  ae 05 ed 0d 01 b8 0c f5  |...  ...........|
00000450  3a fd 20 91 3e 32 30 0d  01 c2 14 f5 20 c8 97 20  |:. .>20..... .. |
00000460  78 2c 79 2c 62 3a fd 20  62 3e 30 0d 01 cc 05 e1  |x,y,b:. b>0.....|
00000470  0d 01 d6 05 3a 0d 01 e0  0d dd f2 68 65 78 61 67  |....:......hexag|
00000480  6f 6e 0d 01 ea 21 f4 2d  2d 66 6f 72 20 74 68 65  |on...!.--for the|
00000490  20 66 6c 6f 77 73 6e 61  6b 65 20 65 78 74 65 72  | flowsnake exter|
000004a0  69 6f 72 0d 01 f4 29 78  28 30 29 3d 6d 69 64 78  |ior...)x(0)=midx|
000004b0  2b 6c 65 6e 20 20 3a 79  28 30 29 3d 6d 69 64 79  |+len  :y(0)=midy|
000004c0  2d 6c 65 6e 2a b6 33 3a  56 25 3d 36 0d 01 fe 35  |-len*.3:V%=6...5|
000004d0  78 28 31 29 3d 6d 69 64  78 2d 6c 65 6e 20 20 3a  |x(1)=midx-len  :|
000004e0  79 28 31 29 3d 6d 69 64  79 2d 6c 65 6e 2a b6 33  |y(1)=midy-len*.3|
000004f0  3a 64 25 28 31 29 3d 2d  31 3a 73 25 28 31 29 3d  |:d%(1)=-1:s%(1)=|
00000500  31 0d 02 08 37 78 28 32  29 3d 6d 69 64 78 2d 6c  |1...7x(2)=midx-l|
00000510  65 6e 2a 32 3a 79 28 32  29 3d 6d 69 64 79 20 20  |en*2:y(2)=midy  |
00000520  20 20 20 20 20 20 20 3a  64 25 28 32 29 3d 2d 31  |       :d%(2)=-1|
00000530  3a 73 25 28 32 29 3d 31  0d 02 12 35 78 28 33 29  |:s%(2)=1...5x(3)|
00000540  3d 6d 69 64 78 2d 6c 65  6e 20 20 3a 79 28 33 29  |=midx-len  :y(3)|
00000550  3d 6d 69 64 79 2b 6c 65  6e 2a b6 33 3a 64 25 28  |=midy+len*.3:d%(|
00000560  33 29 3d 2d 31 3a 73 25  28 33 29 3d 31 0d 02 1c  |3)=-1:s%(3)=1...|
00000570  35 78 28 34 29 3d 6d 69  64 78 2b 6c 65 6e 20 20  |5x(4)=midx+len  |
00000580  3a 79 28 34 29 3d 6d 69  64 79 2b 6c 65 6e 2a b6  |:y(4)=midy+len*.|
00000590  33 3a 64 25 28 34 29 3d  2d 31 3a 73 25 28 34 29  |3:d%(4)=-1:s%(4)|
000005a0  3d 31 0d 02 26 37 78 28  35 29 3d 6d 69 64 78 2b  |=1..&7x(5)=midx+|
000005b0  6c 65 6e 2a 32 3a 79 28  35 29 3d 6d 69 64 79 20  |len*2:y(5)=midy |
000005c0  20 20 20 20 20 20 20 20  3a 64 25 28 35 29 3d 2d  |        :d%(5)=-|
000005d0  31 3a 73 25 28 35 29 3d  31 0d 02 30 35 78 28 36  |1:s%(5)=1..05x(6|
000005e0  29 3d 6d 69 64 78 2b 6c  65 6e 20 20 3a 79 28 36  |)=midx+len  :y(6|
000005f0  29 3d 6d 69 64 79 2d 6c  65 6e 2a b6 33 3a 64 25  |)=midy-len*.3:d%|
00000600  28 36 29 3d 2d 31 3a 73  25 28 36 29 3d 31 0d 02  |(6)=-1:s%(6)=1..|
00000610  3a 05 e1 0d 02 44 05 3a  0d 02 4e 0e dd f2 74 72  |:....D.:..N...tr|
00000620  69 61 6e 67 6c 65 0d 02  58 1e f4 2d 2d 66 6f 72  |iangle..X..--for|
00000630  20 74 68 65 20 73 6e 6f  77 66 6c 61 6b 65 20 63  | the snowflake c|
00000640  75 72 76 65 0d 02 62 29  78 28 30 29 3d 6d 69 64  |urve..b)x(0)=mid|
00000650  78 2b 6c 65 6e 20 20 3a  79 28 30 29 3d 6d 69 64  |x+len  :y(0)=mid|
00000660  79 2d 6c 65 6e 2a b6 33  3a 56 25 3d 33 0d 02 6c  |y-len*.3:V%=3..l|
00000670  36 78 28 31 29 3d 6d 69  64 78 2d 6c 65 6e 2a 32  |6x(1)=midx-len*2|
00000680  3a 79 28 31 29 3d 6d 69  64 79 20 20 20 20 20 20  |:y(1)=midy      |
00000690  20 20 20 3a 64 25 28 31  29 3d 31 3a 73 25 28 31  |   :d%(1)=1:s%(1|
000006a0  29 3d 31 0d 02 76 34 78  28 32 29 3d 6d 69 64 78  |)=1..v4x(2)=midx|
000006b0  2b 6c 65 6e 20 20 3a 79  28 32 29 3d 6d 69 64 79  |+len  :y(2)=midy|
000006c0  2b 6c 65 6e 2a b6 33 3a  64 25 28 32 29 3d 31 3a  |+len*.3:d%(2)=1:|
000006d0  73 25 28 32 29 3d 31 0d  02 80 34 78 28 33 29 3d  |s%(2)=1...4x(3)=|
000006e0  6d 69 64 78 2b 6c 65 6e  20 20 3a 79 28 33 29 3d  |midx+len  :y(3)=|
000006f0  6d 69 64 79 2d 6c 65 6e  2a b6 33 3a 64 25 28 33  |midy-len*.3:d%(3|
00000700  29 3d 31 3a 73 25 28 33  29 3d 31 0d 02 8a 05 e1  |)=1:s%(3)=1.....|
00000710  0d 02 94 05 3a 0d 02 9e  0e dd f2 74 77 6f 70 6f  |....:......twopo|
00000720  69 6e 74 0d 02 a8 1c f4  2d 2d 66 6f 72 20 62 6f  |int.....--for bo|
00000730  74 68 20 50 65 61 6e 6f  20 63 75 72 76 65 73 0d  |th Peano curves.|
00000740  02 b2 27 78 28 30 29 3d  6d 69 64 78 2b 6c 65 6e  |..'x(0)=midx+len|
00000750  3a 79 28 30 29 3d 6d 69  64 79 2d 6c 65 6e 2a b6  |:y(0)=midy-len*.|
00000760  33 3a 56 25 3d 31 0d 02  bc 32 78 28 31 29 3d 6d  |3:V%=1...2x(1)=m|
00000770  69 64 78 2b 6c 65 6e 3a  79 28 31 29 3d 6d 69 64  |idx+len:y(1)=mid|
00000780  79 2b 6c 65 6e 2a b6 33  3a 64 25 28 31 29 3d 31  |y+len*.3:d%(1)=1|
00000790  3a 73 25 28 31 29 3d 31  0d 02 c6 05 e1 0d 02 d0  |:s%(1)=1........|
000007a0  05 3a 0d 02 da 0a dd f2  64 61 74 61 0d 02 e4 27  |.:......data...'|
000007b0  f4 2d 2d 4b 6f 63 68 20  6f 75 74 6c 69 6e 65 20  |.--Koch outline |
000007c0  63 75 72 76 65 20 2d 20  22 53 6e 6f 77 66 6c 61  |curve - "Snowfla|
000007d0  6b 65 22 0d 02 ee 1f 47  25 28 30 29 3d 33 3a 44  |ke"....G%(0)=3:D|
000007e0  25 28 30 2c 30 29 3d 31  3a 53 25 28 30 2c 30 29  |%(0,0)=1:S%(0,0)|
000007f0  3d 31 0d 02 f8 30 58 28  30 2c 31 29 3d 32 2f 36  |=1...0X(0,1)=2/6|
00000800  3a 59 28 30 2c 31 29 3d  30 2a b6 33 2f 36 3a 44  |:Y(0,1)=0*.3/6:D|
00000810  25 28 30 2c 31 29 3d 31  3a 53 25 28 30 2c 31 29  |%(0,1)=1:S%(0,1)|
00000820  3d 31 0d 03 02 30 58 28  30 2c 32 29 3d 33 2f 36  |=1...0X(0,2)=3/6|
00000830  3a 59 28 30 2c 32 29 3d  31 2a b6 33 2f 36 3a 44  |:Y(0,2)=1*.3/6:D|
00000840  25 28 30 2c 32 29 3d 31  3a 53 25 28 30 2c 32 29  |%(0,2)=1:S%(0,2)|
00000850  3d 31 0d 03 0c 30 58 28  30 2c 33 29 3d 34 2f 36  |=1...0X(0,3)=4/6|
00000860  3a 59 28 30 2c 33 29 3d  30 2a b6 33 2f 36 3a 44  |:Y(0,3)=0*.3/6:D|
00000870  25 28 30 2c 33 29 3d 31  3a 53 25 28 30 2c 33 29  |%(0,3)=1:S%(0,3)|
00000880  3d 31 0d 03 16 35 f4 2d  2d 4d 61 6e 64 6c 65 62  |=1...5.--Mandleb|
00000890  72 6f 74 20 50 65 61 6e  6f 20 63 75 72 76 65 20  |rot Peano curve |
000008a0  2d 20 69 6e 74 65 72 69  6f 72 20 6f 66 20 53 6e  |- interior of Sn|
000008b0  6f 77 66 6c 61 6b 65 0d  03 20 21 47 25 28 31 29  |owflake.. !G%(1)|
000008c0  3d 31 32 3a 44 25 28 31  2c 30 29 3d 31 3a 53 25  |=12:D%(1,0)=1:S%|
000008d0  28 31 2c 30 29 3d 2d 31  0d 03 2a 31 58 28 31 2c  |(1,0)=-1..*1X(1,|
000008e0  31 29 3d 31 2f 36 3a 59  28 31 2c 31 29 3d 33 2a  |1)=1/6:Y(1,1)=3*|
000008f0  b6 33 2f 31 38 3a 44 25  28 31 2c 31 29 3d 31 3a  |.3/18:D%(1,1)=1:|
00000900  53 25 28 31 2c 31 29 3d  31 0d 03 34 31 58 28 31  |S%(1,1)=1..41X(1|
00000910  2c 32 29 3d 32 2f 36 3a  59 28 31 2c 32 29 3d 36  |,2)=2/6:Y(1,2)=6|
00000920  2a b6 33 2f 31 38 3a 44  25 28 31 2c 32 29 3d 31  |*.3/18:D%(1,2)=1|
00000930  3a 53 25 28 31 2c 32 29  3d 31 0d 03 3e 31 58 28  |:S%(1,2)=1..>1X(|
00000940  31 2c 33 29 3d 34 2f 36  3a 59 28 31 2c 33 29 3d  |1,3)=4/6:Y(1,3)=|
00000950  36 2a b6 33 2f 31 38 3a  44 25 28 31 2c 33 29 3d  |6*.3/18:D%(1,3)=|
00000960  31 3a 53 25 28 31 2c 33  29 3d 31 0d 03 48 31 58  |1:S%(1,3)=1..H1X|
00000970  28 31 2c 34 29 3d 35 2f  36 3a 59 28 31 2c 34 29  |(1,4)=5/6:Y(1,4)|
00000980  3d 33 2a b6 33 2f 31 38  3a 44 25 28 31 2c 34 29  |=3*.3/18:D%(1,4)|
00000990  3d 31 3a 53 25 28 31 2c  34 29 3d 31 0d 03 52 32  |=1:S%(1,4)=1..R2|
000009a0  58 28 31 2c 35 29 3d 34  2f 36 3a 59 28 31 2c 35  |X(1,5)=4/6:Y(1,5|
000009b0  29 3d 34 2a b6 33 2f 31  38 3a 44 25 28 31 2c 35  |)=4*.3/18:D%(1,5|
000009c0  29 3d 31 3a 53 25 28 31  2c 35 29 3d 2d 31 0d 03  |)=1:S%(1,5)=-1..|
000009d0  5c 32 58 28 31 2c 36 29  3d 33 2f 36 3a 59 28 31  |\2X(1,6)=3/6:Y(1|
000009e0  2c 36 29 3d 35 2a b6 33  2f 31 38 3a 44 25 28 31  |,6)=5*.3/18:D%(1|
000009f0  2c 36 29 3d 31 3a 53 25  28 31 2c 36 29 3d 2d 31  |,6)=1:S%(1,6)=-1|
00000a00  0d 03 66 32 58 28 31 2c  37 29 3d 32 2f 36 3a 59  |..f2X(1,7)=2/6:Y|
00000a10  28 31 2c 37 29 3d 34 2a  b6 33 2f 31 38 3a 44 25  |(1,7)=4*.3/18:D%|
00000a20  28 31 2c 37 29 3d 31 3a  53 25 28 31 2c 37 29 3d  |(1,7)=1:S%(1,7)=|
00000a30  2d 31 0d 03 70 31 58 28  31 2c 38 29 3d 32 2f 36  |-1..p1X(1,8)=2/6|
00000a40  3a 59 28 31 2c 38 29 3d  32 2a b6 33 2f 31 38 3a  |:Y(1,8)=2*.3/18:|
00000a50  44 25 28 31 2c 38 29 3d  31 3a 53 25 28 31 2c 38  |D%(1,8)=1:S%(1,8|
00000a60  29 3d 31 0d 03 7a 31 58  28 31 2c 39 29 3d 34 2f  |)=1..z1X(1,9)=4/|
00000a70  36 3a 59 28 31 2c 39 29  3d 32 2a b6 33 2f 31 38  |6:Y(1,9)=2*.3/18|
00000a80  3a 44 25 28 31 2c 39 29  3d 31 3a 53 25 28 31 2c  |:D%(1,9)=1:S%(1,|
00000a90  39 29 3d 31 0d 03 84 36  58 28 31 2c 31 30 29 3d  |9)=1...6X(1,10)=|
00000aa0  33 2f 36 3a 59 28 31 2c  31 30 29 3d 31 2a b6 33  |3/6:Y(1,10)=1*.3|
00000ab0  2f 31 38 3a 44 25 28 31  2c 31 30 29 3d 31 3a 53  |/18:D%(1,10)=1:S|
00000ac0  25 28 31 2c 31 30 29 3d  2d 31 0d 03 8e 36 58 28  |%(1,10)=-1...6X(|
00000ad0  31 2c 31 31 29 3d 32 2f  36 3a 59 28 31 2c 31 31  |1,11)=2/6:Y(1,11|
00000ae0  29 3d 30 2a b6 33 2f 31  38 3a 44 25 28 31 2c 31  |)=0*.3/18:D%(1,1|
00000af0  31 29 3d 31 3a 53 25 28  31 2c 31 31 29 3d 2d 31  |1)=1:S%(1,11)=-1|
00000b00  0d 03 98 35 58 28 31 2c  31 32 29 3d 34 2f 36 3a  |...5X(1,12)=4/6:|
00000b10  59 28 31 2c 31 32 29 3d  30 2a b6 33 2f 31 38 3a  |Y(1,12)=0*.3/18:|
00000b20  44 25 28 31 2c 31 32 29  3d 31 3a 53 25 28 31 2c  |D%(1,12)=1:S%(1,|
00000b30  31 32 29 3d 31 0d 03 a2  2e f4 2d 2d 47 6f 73 70  |12)=1.....--Gosp|
00000b40  65 72 20 70 65 72 69 6d  65 74 65 72 20 2d 20 6f  |er perimeter - o|
00000b50  75 74 6c 69 6e 65 20 6f  66 20 46 6c 6f 77 73 6e  |utline of Flowsn|
00000b60  61 6b 65 0d 03 ac 1f 47  25 28 32 29 3d 32 3a 44  |ake....G%(2)=2:D|
00000b70  25 28 32 2c 30 29 3d 31  3a 53 25 28 32 2c 30 29  |%(2,0)=1:S%(2,0)|
00000b80  3d 31 0d 03 b6 31 58 28  32 2c 31 29 3d 35 2f 31  |=1...1X(2,1)=5/1|
00000b90  34 3a 59 28 32 2c 31 29  3d 2d b6 33 2f 31 34 3a  |4:Y(2,1)=-.3/14:|
00000ba0  44 25 28 32 2c 31 29 3d  31 3a 53 25 28 32 2c 31  |D%(2,1)=1:S%(2,1|
00000bb0  29 3d 31 0d 03 c0 30 58  28 32 2c 32 29 3d 39 2f  |)=1...0X(2,2)=9/|
00000bc0  31 34 3a 59 28 32 2c 32  29 3d b6 33 2f 31 34 3a  |14:Y(2,2)=.3/14:|
00000bd0  44 25 28 32 2c 32 29 3d  31 3a 53 25 28 32 2c 32  |D%(2,2)=1:S%(2,2|
00000be0  29 3d 31 0d 03 ca 27 f4  2d 2d 47 6f 73 70 65 72  |)=1...'.--Gosper|
00000bf0  20 50 65 61 6e 6f 20 63  75 72 76 65 20 2d 20 22  | Peano curve - "|
00000c00  46 6c 6f 77 73 6e 61 6b  65 22 0d 03 d4 1f 47 25  |Flowsnake"....G%|
00000c10  28 33 29 3d 36 3a 44 25  28 33 2c 30 29 3d 31 3a  |(3)=6:D%(3,0)=1:|
00000c20  53 25 28 33 2c 30 29 3d  31 0d 03 de 32 58 28 33  |S%(3,0)=1...2X(3|
00000c30  2c 31 29 3d 35 2f 31 34  3a 59 28 33 2c 31 29 3d  |,1)=5/14:Y(3,1)=|
00000c40  2d b6 33 2f 31 34 3a 44  25 28 33 2c 31 29 3d 2d  |-.3/14:D%(3,1)=-|
00000c50  31 3a 53 25 28 33 2c 31  29 3d 31 0d 03 e8 31 58  |1:S%(3,1)=1...1X|
00000c60  28 33 2c 32 29 3d 39 2f  31 34 3a 59 28 33 2c 32  |(3,2)=9/14:Y(3,2|
00000c70  29 3d b6 33 2f 31 34 3a  44 25 28 33 2c 32 29 3d  |)=.3/14:D%(3,2)=|
00000c80  2d 31 3a 53 25 28 33 2c  32 29 3d 31 0d 03 f2 32  |-1:S%(3,2)=1...2|
00000c90  58 28 33 2c 33 29 3d 34  2f 31 34 3a 59 28 33 2c  |X(3,3)=4/14:Y(3,|
00000ca0  33 29 3d 32 2a b6 33 2f  31 34 3a 44 25 28 33 2c  |3)=2*.3/14:D%(3,|
00000cb0  33 29 3d 31 3a 53 25 28  33 2c 33 29 3d 31 0d 03  |3)=1:S%(3,3)=1..|
00000cc0  fc 32 58 28 33 2c 34 29  3d 33 2f 31 34 3a 59 28  |.2X(3,4)=3/14:Y(|
00000cd0  33 2c 34 29 3d 35 2a b6  33 2f 31 34 3a 44 25 28  |3,4)=5*.3/14:D%(|
00000ce0  33 2c 34 29 3d 31 3a 53  25 28 33 2c 34 29 3d 31  |3,4)=1:S%(3,4)=1|
00000cf0  0d 04 06 32 58 28 33 2c  35 29 3d 38 2f 31 34 3a  |...2X(3,5)=8/14:|
00000d00  59 28 33 2c 35 29 3d 34  2a b6 33 2f 31 34 3a 44  |Y(3,5)=4*.3/14:D|
00000d10  25 28 33 2c 35 29 3d 31  3a 53 25 28 33 2c 35 29  |%(3,5)=1:S%(3,5)|
00000d20  3d 31 0d 04 10 34 58 28  33 2c 36 29 3d 31 33 2f  |=1...4X(3,6)=13/|
00000d30  31 34 3a 59 28 33 2c 36  29 3d 33 2a b6 33 2f 31  |14:Y(3,6)=3*.3/1|
00000d40  34 3a 44 25 28 33 2c 36  29 3d 2d 31 3a 53 25 28  |4:D%(3,6)=-1:S%(|
00000d50  33 2c 36 29 3d 31 0d 04  1a 05 e1 0d 04 24 05 3a  |3,6)=1.......$.:|
00000d60  0d 04 2e 0d dd f2 72 65  63 75 72 73 65 0d 04 38  |......recurse..8|
00000d70  0d e7 20 44 25 3d 4e 25  20 8c 0d 04 42 1e 20 20  |.. D%=N% ...B.  |
00000d80  e7 20 44 25 3d 30 20 8c  20 57 25 3d 56 25 20 8b  |. D%=0 . W%=V% .|
00000d90  20 57 25 3d 47 25 2b 31  0d 04 4c 11 20 20 e3 20  | W%=G%+1..L.  . |
00000da0  4b 25 3d 31 20 b8 20 57  25 0d 04 56 1b 20 20 20  |K%=1 . W%..V.   |
00000db0  20 50 25 2d 3d 31 3a df  20 78 28 50 25 29 2c 79  | P%-=1:. x(P%),y|
00000dc0  28 50 25 29 0d 04 60 07  20 20 ed 0d 04 6a 05 cc  |(P%)..`.  ...j..|
00000dd0  0d 04 74 10 20 20 ea 20  49 25 2c 4a 25 2c 4d 25  |..t.  . I%,J%,M%|
00000de0  0d 04 7e 1e 20 20 e7 20  4e 25 3d 30 20 8c 20 4d  |..~.  . N%=0 . M|
00000df0  25 3d 56 25 20 8b 20 4d  25 3d 47 25 2b 31 0d 04  |%=V% . M%=G%+1..|
00000e00  88 0b 20 20 4e 25 2b 3d  31 0d 04 92 11 20 20 e3  |..  N%+=1....  .|
00000e10  20 4a 25 3d 31 20 b8 20  4d 25 0d 04 9c 3a 20 20  | J%=1 . M%...:  |
00000e20  20 20 78 31 3d 78 28 50  25 29 3a 79 31 3d 79 28  |  x1=x(P%):y1=y(|
00000e30  50 25 29 3a 78 32 3d 78  28 50 25 2d 31 29 3a 79  |P%):x2=x(P%-1):y|
00000e40  32 3d 79 28 50 25 2d 31  29 3a 73 30 25 3d 73 25  |2=y(P%-1):s0%=s%|
00000e50  28 50 25 29 0d 04 a6 19  20 20 20 20 64 78 3d 78  |(P%)....    dx=x|
00000e60  31 2d 78 32 3a 64 79 3d  79 31 2d 79 32 0d 04 b0  |1-x2:dy=y1-y2...|
00000e70  14 20 20 20 20 e7 20 64  25 28 50 25 29 3d 31 20  |.    . d%(P%)=1 |
00000e80  8c 0d 04 ba 15 20 20 20  20 20 20 e3 20 49 25 3d  |.....      . I%=|
00000e90  31 20 b8 20 47 25 0d 04  c4 30 20 20 20 20 20 20  |1 . G%...0      |
00000ea0  20 20 78 28 50 25 29 3d  78 32 2b 64 78 2a 58 28  |  x(P%)=x2+dx*X(|
00000eb0  54 25 2c 49 25 29 2d 64  79 2a 59 28 54 25 2c 49  |T%,I%)-dy*Y(T%,I|
00000ec0  25 29 2a 73 30 25 0d 04  ce 30 20 20 20 20 20 20  |%)*s0%...0      |
00000ed0  20 20 79 28 50 25 29 3d  79 32 2b 64 78 2a 59 28  |  y(P%)=y2+dx*Y(|
00000ee0  54 25 2c 49 25 29 2a 73  30 25 2b 64 79 2a 58 28  |T%,I%)*s0%+dy*X(|
00000ef0  54 25 2c 49 25 29 0d 04  d8 3b 20 20 20 20 20 20  |T%,I%)...;      |
00000f00  20 20 64 25 28 50 25 29  3d 44 25 28 54 25 2c 49  |  d%(P%)=D%(T%,I|
00000f10  25 2d 31 29 3a 73 25 28  50 25 29 3d 53 25 28 54  |%-1):s%(P%)=S%(T|
00000f20  25 2c 49 25 2d 31 29 2a  73 30 25 3a 50 25 2b 3d  |%,I%-1)*s0%:P%+=|
00000f30  31 0d 04 e2 0b 20 20 20  20 20 20 ed 0d 04 ec 41  |1....      ....A|
00000f40  20 20 20 20 20 20 78 28  50 25 29 3d 78 31 3a 79  |      x(P%)=x1:y|
00000f50  28 50 25 29 3d 79 31 3a  64 25 28 50 25 29 3d 44  |(P%)=y1:d%(P%)=D|
00000f60  25 28 54 25 2c 47 25 29  3a 73 25 28 50 25 29 3d  |%(T%,G%):s%(P%)=|
00000f70  53 25 28 54 25 2c 47 25  29 2a 73 30 25 0d 04 f6  |S%(T%,G%)*s0%...|
00000f80  09 20 20 20 20 cc 0d 05  00 1a 20 20 20 20 20 20  |.    .....      |
00000f90  e3 20 49 25 3d 47 25 20  b8 20 31 20 88 20 2d 31  |. I%=G% . 1 . -1|
00000fa0  0d 05 0a 30 20 20 20 20  20 20 20 20 78 28 50 25  |...0        x(P%|
00000fb0  29 3d 78 31 2d 64 78 2a  58 28 54 25 2c 49 25 29  |)=x1-dx*X(T%,I%)|
00000fc0  2b 64 79 2a 59 28 54 25  2c 49 25 29 2a 73 30 25  |+dy*Y(T%,I%)*s0%|
00000fd0  0d 05 14 30 20 20 20 20  20 20 20 20 79 28 50 25  |...0        y(P%|
00000fe0  29 3d 79 31 2d 64 78 2a  59 28 54 25 2c 49 25 29  |)=y1-dx*Y(T%,I%)|
00000ff0  2a 73 30 25 2d 64 79 2a  58 28 54 25 2c 49 25 29  |*s0%-dy*X(T%,I%)|
00001000  0d 05 1e 3a 20 20 20 20  20 20 20 20 64 25 28 50  |...:        d%(P|
00001010  25 29 3d 2d 44 25 28 54  25 2c 49 25 29 3a 73 25  |%)=-D%(T%,I%):s%|
00001020  28 50 25 29 3d 53 25 28  54 25 2c 49 25 2d 31 29  |(P%)=S%(T%,I%-1)|
00001030  2a 73 30 25 3a 50 25 2b  3d 31 0d 05 28 0b 20 20  |*s0%:P%+=1..(.  |
00001040  20 20 20 20 ed 0d 05 32  40 20 20 20 20 20 20 78  |    ...2@      x|
00001050  28 50 25 29 3d 78 31 3a  79 28 50 25 29 3d 79 31  |(P%)=x1:y(P%)=y1|
00001060  3a 64 25 28 50 25 29 3d  2d 44 25 28 54 25 2c 30  |:d%(P%)=-D%(T%,0|
00001070  29 3a 73 25 28 50 25 29  3d 53 25 28 54 25 2c 30  |):s%(P%)=S%(T%,0|
00001080  29 2a 73 30 25 0d 05 3c  09 20 20 20 20 cd 0d 05  |)*s0%..<.    ...|
00001090  46 10 20 20 20 20 f2 72  65 63 75 72 73 65 0d 05  |F.    .recurse..|
000010a0  50 07 20 20 ed 0d 05 5a  0b 20 20 4e 25 2d 3d 31  |P.  ...Z.  N%-=1|
000010b0  0d 05 64 05 cd 0d 05 6e  05 e1 0d 05 78 05 3a 0d  |..d....n....x.:.|
000010c0  05 82 0e dd 20 f2 63 6f  6c 6f 75 72 73 0d 05 8c  |.... .colours...|
000010d0  23 fb 20 30 2c 32 35 35  2c 32 35 35 2c 32 35 35  |#. 0,255,255,255|
000010e0  3a fb 20 31 2c 32 32 31  2c 32 32 31 2c 32 32 31  |:. 1,221,221,221|
000010f0  0d 05 96 23 fb 20 32 2c  31 38 37 2c 31 38 37 2c  |...#. 2,187,187,|
00001100  31 38 37 3a fb 20 33 2c  31 35 33 2c 31 35 33 2c  |187:. 3,153,153,|
00001110  31 35 33 0d 05 a0 23 fb  20 34 2c 31 31 39 2c 31  |153...#. 4,119,1|
00001120  31 39 2c 31 31 39 3a fb  20 35 2c 20 38 35 2c 20  |19,119:. 5, 85, |
00001130  38 35 2c 20 38 35 0d 05  aa 23 fb 20 36 2c 20 35  |85, 85...#. 6, 5|
00001140  31 2c 20 35 31 2c 20 35  31 3a fb 20 37 2c 20 20  |1, 51, 51:. 7,  |
00001150  30 2c 20 20 30 2c 20 20  30 0d 05 b4 23 fb 20 38  |0,  0,  0...#. 8|
00001160  2c 20 20 30 2c 20 36 38  2c 31 35 33 3a fb 20 39  |,  0, 68,153:. 9|
00001170  2c 32 33 38 2c 32 33 38  2c 20 20 30 0d 05 be 23  |,238,238,  0...#|
00001180  fb 31 30 2c 20 20 30 2c  32 30 34 2c 20 20 30 3a  |.10,  0,204,  0:|
00001190  fb 31 31 2c 32 32 31 2c  20 20 30 2c 20 20 30 0d  |.11,221,  0,  0.|
000011a0  05 c8 23 fb 31 32 2c 32  33 38 2c 32 33 38 2c 31  |..#.12,238,238,1|
000011b0  38 37 3a fb 31 33 2c 20  38 35 2c 31 33 36 2c 20  |87:.13, 85,136, |
000011c0  20 30 0d 05 d2 23 fb 31  34 2c 32 35 35 2c 31 38  | 0...#.14,255,18|
000011d0  37 2c 20 20 30 3a fb 31  35 2c 20 20 30 2c 31 38  |7,  0:.15,  0,18|
000011e0  37 2c 32 35 35 0d 05 dc  05 e1 0d 05 e6 05 3a 0d  |7,255.........:.|
000011f0  05 f0 0b dd 20 f2 6d 65  6e 75 0d 05 fa 22 eb 20  |.... .menu...". |
00001200  6d 6f 64 65 25 3a ef 35  3a ff 22 50 4f 49 4e 54  |mode%:.5:."POINT|
00001210  45 52 22 3a f2 63 6f 6c  6f 75 72 73 0d 06 04 1d  |ER":.colours....|
00001220  e7 20 6d 6f 64 65 25 3d  32 30 20 8c 20 64 79 3d  |. mode%=20 . dy=|
00001230  31 35 20 8b 20 64 79 3d  38 0d 06 0e 21 ef 20 32  |15 . dy=8...!. 2|
00001240  33 2c 31 37 2c 37 2c 33  2c 38 3b 64 79 3b 30 3b  |3,17,7,3,8;dy;0;|
00001250  30 3b 3a 65 78 69 74 25  3d a3 0d 06 18 25 e6 20  |0;:exit%=....%. |
00001260  31 32 39 3a da 3a ef 31  39 2c 30 2c 32 34 2c 31  |129:.:.19,0,24,1|
00001270  35 33 2c 31 35 33 2c 31  35 33 3a 77 3d 31 32 0d  |53,153,153:w=12.|
00001280  06 22 2d e6 20 30 3a ec  20 30 2c 30 3a ec 20 77  |."-. 0:. 0,0:. w|
00001290  2c 77 3a f0 20 38 35 2c  31 32 38 30 2c 30 3a f0  |,w:. 85,1280,0:.|
000012a0  20 38 35 2c 31 32 38 30  2d 77 2c 77 0d 06 2c 25  | 85,1280-w,w..,%|
000012b0  f0 20 38 35 2c 31 32 38  30 2c 31 30 32 34 3a f0  |. 85,1280,1024:.|
000012c0  20 38 35 2c 31 32 38 30  2d 77 2c 31 30 32 34 2d  | 85,1280-w,1024-|
000012d0  77 0d 06 36 2d e6 20 34  3a ec 20 30 2c 30 3a ec  |w..6-. 4:. 0,0:.|
000012e0  20 77 2c 77 3a f0 20 38  35 2c 30 2c 31 30 32 34  | w,w:. 85,0,1024|
000012f0  3a f0 20 38 35 2c 77 2c  31 30 32 34 2d 77 0d 06  |:. 85,w,1024-w..|
00001300  40 25 f0 20 38 35 2c 31  32 38 30 2c 31 30 32 34  |@%. 85,1280,1024|
00001310  3a f0 20 38 35 2c 31 32  38 30 2d 77 2c 31 30 32  |:. 85,1280-w,102|
00001320  34 2d 77 0d 06 4a 1a ef  32 34 2c 77 3b 77 3b 31  |4-w..J..24,w;w;1|
00001330  32 38 30 2d 77 3b 31 30  32 34 2d 77 3b 0d 06 54  |280-w;1024-w;..T|
00001340  11 e3 20 63 75 72 76 65  3d 30 20 b8 20 32 0d 06  |.. curve=0 . 2..|
00001350  5e 1a 20 20 ef 32 39 2c  30 3b 6d 30 25 2b 32 30  |^.  .29,0;m0%+20|
00001360  30 2a 63 75 72 76 65 3b  0d 06 68 25 20 20 f2 62  |0*curve;..h%  .b|
00001370  75 74 74 6f 6e 28 6d 31  25 2c 31 32 2c 36 2c 22  |utton(m1%,12,6,"|
00001380  43 6f 6c 6f 75 72 3a 22  2c 32 2c b9 29 0d 06 72  |Colour:",2,.)..r|
00001390  10 20 20 e3 20 49 25 3d  30 20 b8 20 37 0d 06 7c  |.  . I%=0 . 7..||
000013a0  2f 20 20 20 20 e7 20 49  25 3d 63 6f 6c 6f 75 72  |/    . I%=colour|
000013b0  25 28 63 75 72 76 65 29  20 8c 20 73 74 61 74 65  |%(curve) . state|
000013c0  3d b9 20 8b 20 73 74 61  74 65 3d a3 0d 06 86 30  |=. . state=....0|
000013d0  20 20 20 20 f2 62 75 74  74 6f 6e 28 6d 32 25 2b  |    .button(m2%+|
000013e0  49 25 2a 31 30 30 2c 31  32 2c 43 25 28 49 25 29  |I%*100,12,C%(I%)|
000013f0  2c 22 22 2c 31 2c 73 74  61 74 65 29 0d 06 90 07  |,"",1,state)....|
00001400  20 20 ed 0d 06 9a 24 20  20 f2 62 75 74 74 6f 6e  |  ....$  .button|
00001410  28 6d 31 25 2c 37 32 2c  36 2c 22 44 65 70 74 68  |(m1%,72,6,"Depth|
00001420  3a 22 2c 32 2c b9 29 0d  06 a4 10 20 20 e3 20 49  |:",2,.)....  . I|
00001430  25 3d 30 20 b8 20 35 0d  06 ae 2e 20 20 20 20 e7  |%=0 . 5....    .|
00001440  20 49 25 3d 64 65 70 74  68 25 28 63 75 72 76 65  | I%=depth%(curve|
00001450  29 20 8c 20 73 74 61 74  65 3d b9 20 8b 20 73 74  |) . state=. . st|
00001460  61 74 65 3d a3 0d 06 b8  33 20 20 20 20 f2 62 75  |ate=....3    .bu|
00001470  74 74 6f 6e 28 6d 32 25  2b 49 25 2a 31 30 30 2c  |tton(m2%+I%*100,|
00001480  37 32 2c 2d 31 2c 22 20  22 2b c3 28 49 25 29 2c  |72,-1," "+.(I%),|
00001490  31 2c 73 74 61 74 65 29  0d 06 c2 07 20 20 ed 0d  |1,state)....  ..|
000014a0  06 cc 30 20 20 f2 62 75  74 74 6f 6e 28 6d 31 25  |..0  .button(m1%|
000014b0  2c 31 33 32 2c 36 2c 22  43 75 72 76 65 3a 22 2b  |,132,6,"Curve:"+|
000014c0  c3 28 33 2d 63 75 72 76  65 29 2c 32 2c b9 29 0d  |.(3-curve),2,.).|
000014d0  06 d6 10 20 20 e3 20 49  25 3d 30 20 b8 20 32 0d  |...  . I%=0 . 2.|
000014e0  06 e0 1c 20 20 20 20 e7  20 63 75 72 76 65 3c 3e  |...    . curve<>|
000014f0  32 20 84 20 49 25 3c 3e  32 20 8c 0d 06 ea 2f 20  |2 . I%<>2 ..../ |
00001500  20 20 20 20 20 e7 20 49  25 3d 74 79 70 65 25 28  |     . I%=type%(|
00001510  63 75 72 76 65 29 20 8c  20 73 74 61 74 65 3d b9  |curve) . state=.|
00001520  20 8b 20 73 74 61 74 65  3d a3 0d 06 f4 36 20 20  | . state=....6  |
00001530  20 20 20 20 f2 62 75 74  74 6f 6e 28 6d 32 25 2b  |    .button(m2%+|
00001540  49 25 2a 32 30 30 2c 31  33 32 2c 2d 31 2c 74 79  |I%*200,132,-1,ty|
00001550  70 65 24 28 49 25 29 2c  32 2c 73 74 61 74 65 29  |pe$(I%),2,state)|
00001560  0d 06 fe 09 20 20 20 20  cd 0d 07 08 07 20 20 ed  |....    .....  .|
00001570  0d 07 12 1b 20 20 e6 37  3a ec 20 30 2c 31 39 36  |....  .7:. 0,196|
00001580  3a df 20 31 32 38 30 2c  31 39 36 0d 07 1c 05 ed  |:. 1280,196.....|
00001590  0d 07 26 0c ef 32 39 2c  30 3b 30 3b 0d 07 30 26  |..&..29,0;0;..0&|
000015a0  f2 62 75 74 74 6f 6e 28  34 35 30 2c 6d 30 25 2d  |.button(450,m0%-|
000015b0  36 34 2c 2d 31 2c 22 20  20 20 47 4f 22 2c 32 2c  |64,-1,"   GO",2,|
000015c0  a3 29 0d 07 3a 27 f2 62  75 74 74 6f 6e 28 36 35  |.)..:'.button(65|
000015d0  30 2c 6d 30 25 2d 36 34  2c 2d 31 2c 22 20 20 51  |0,m0%-64,-1,"  Q|
000015e0  55 49 54 22 2c 32 2c a3  29 0d 07 44 12 ef 32 39  |UIT",2,.)..D..29|
000015f0  2c 30 3b 6d 30 25 2b 36  30 30 3b 0d 07 4e 22 f2  |,0;m0%+600;..N".|
00001600  62 75 74 74 6f 6e 28 6d  31 25 2c 31 32 2c 36 2c  |button(m1%,12,6,|
00001610  22 20 46 69 6c 6c 3a 22  2c 32 2c b9 29 0d 07 58  |" Fill:",2,.)..X|
00001620  0e e3 20 49 25 3d 30 20  b8 20 37 0d 07 62 24 20  |.. I%=0 . 7..b$ |
00001630  20 e7 20 49 25 3d 66 69  6c 6c 25 20 8c 20 73 74  | . I%=fill% . st|
00001640  61 74 65 3d b9 20 8b 20  73 74 61 74 65 3d a3 0d  |ate=. . state=..|
00001650  07 6c 2e 20 20 f2 62 75  74 74 6f 6e 28 6d 32 25  |.l.  .button(m2%|
00001660  2b 49 25 2a 31 30 30 2c  31 32 2c 43 25 28 49 25  |+I%*100,12,C%(I%|
00001670  29 2c 22 22 2c 31 2c 73  74 61 74 65 29 0d 07 76  |),"",1,state)..v|
00001680  05 ed 0d 07 80 22 f2 62  75 74 74 6f 6e 28 6d 31  |.....".button(m1|
00001690  25 2c 37 32 2c 36 2c 22  20 42 61 63 6b 3a 22 2c  |%,72,6," Back:",|
000016a0  32 2c b9 29 0d 07 8a 0e  e3 20 49 25 3d 30 20 b8  |2,.)..... I%=0 .|
000016b0  20 37 0d 07 94 24 20 20  e7 20 49 25 3d 62 61 63  | 7...$  . I%=bac|
000016c0  6b 25 20 8c 20 73 74 61  74 65 3d b9 20 8b 20 73  |k% . state=. . s|
000016d0  74 61 74 65 3d a3 0d 07  9e 2e 20 20 f2 62 75 74  |tate=.....  .but|
000016e0  74 6f 6e 28 6d 32 25 2b  49 25 2a 31 30 30 2c 37  |ton(m2%+I%*100,7|
000016f0  32 2c 43 25 28 49 25 29  2c 22 22 2c 31 2c 73 74  |2,C%(I%),"",1,st|
00001700  61 74 65 29 0d 07 a8 05  ed 0d 07 b2 23 f2 62 75  |ate)........#.bu|
00001710  74 74 6f 6e 28 6d 31 25  2c 31 33 32 2c 36 2c 22  |tton(m1%,132,6,"|
00001720  20 4d 6f 64 65 3a 22 2c  32 2c b9 29 0d 07 bc 22  | Mode:",2,.)..."|
00001730  e7 20 6d 6f 64 65 25 3d  31 32 20 8c 20 73 74 61  |. mode%=12 . sta|
00001740  74 65 3d b9 20 8b 20 73  74 61 74 65 3d a3 0d 07  |te=. . state=...|
00001750  c6 24 f2 62 75 74 74 6f  6e 28 6d 32 25 2c 31 33  |.$.button(m2%,13|
00001760  32 2c 2d 31 2c 22 31 32  22 2c 31 2c 73 74 61 74  |2,-1,"12",1,stat|
00001770  65 29 0d 07 d0 29 f2 62  75 74 74 6f 6e 28 6d 32  |e)...).button(m2|
00001780  25 2b 31 30 30 2c 31 33  32 2c 2d 31 2c 22 32 30  |%+100,132,-1,"20|
00001790  22 2c 31 2c ac 73 74 61  74 65 29 0d 07 da 23 f2  |",1,.state)...#.|
000017a0  62 75 74 74 6f 6e 28 6d  31 25 2c 32 32 30 2c 36  |button(m1%,220,6|
000017b0  2c 22 20 54 79 70 65 3a  22 2c 32 2c b9 29 0d 07  |," Type:",2,.)..|
000017c0  e4 2b f2 62 75 74 74 6f  6e 28 6d 32 25 2c 32 32  |.+.button(m2%,22|
000017d0  30 2c 2d 31 2c 22 53 6e  6f 77 46 6c 61 6b 65 22  |0,-1,"SnowFlake"|
000017e0  2c 32 2c 73 6e 6f 77 25  29 0d 07 ee 30 f2 62 75  |,2,snow%)...0.bu|
000017f0  74 74 6f 6e 28 6d 32 25  2b 32 30 30 2c 32 32 30  |tton(m2%+200,220|
00001800  2c 2d 31 2c 22 46 6c 6f  77 73 6e 61 6b 65 22 2c  |,-1,"Flowsnake",|
00001810  32 2c ac 73 6e 6f 77 25  29 0d 07 f8 09 67 6f 25  |2,.snow%)....go%|
00001820  3d a3 0d 08 02 05 f5 0d  08 0c 1f 20 20 ef 32 39  |=..........  .29|
00001830  2c 30 3b 30 3b 3a f5 3a  c8 97 20 78 2c 79 2c 62  |,0;0;:.:.. x,y,b|
00001840  3a fd 20 62 3e 30 0d 08  16 0f 20 20 e7 20 79 3c  |:. b>0....  . y<|
00001850  6d 30 25 20 8c 0d 08 20  21 20 20 20 20 e7 20 78  |m0% ... !    . x|
00001860  3e 3d 34 35 30 20 80 20  78 3c 3d 36 33 30 20 8c  |>=450 . x<=630 .|
00001870  20 67 6f 25 3d b9 0d 08  2a 23 20 20 20 20 e7 20  | go%=...*#    . |
00001880  78 3e 3d 36 35 30 20 80  20 78 3c 3d 38 33 30 20  |x>=650 . x<=830 |
00001890  8c 20 71 75 69 74 25 3d  b9 0d 08 34 07 20 20 cd  |. quit%=...4.  .|
000018a0  0d 08 3e 0c 20 20 79 2d  3d 6d 30 25 0d 08 48 0f  |..>.  y-=m0%..H.|
000018b0  20 20 e7 20 79 3c 36 30  30 20 8c 0d 08 52 20 20  |  . y<600 ...R  |
000018c0  20 20 20 e7 20 79 3e 3d  30 20 80 20 79 3c 32 30  |   . y>=0 . y<20|
000018d0  30 20 8c 20 63 75 72 76  65 3d 30 0d 08 5c 22 20  |0 . curve=0..\" |
000018e0  20 20 20 e7 20 79 3e 3d  32 30 30 20 80 20 79 3c  |   . y>=200 . y<|
000018f0  34 30 30 20 8c 20 63 75  72 76 65 3d 31 0d 08 66  |400 . curve=1..f|
00001900  22 20 20 20 20 e7 20 79  3e 3d 34 30 30 20 80 20  |"    . y>=400 . |
00001910  79 3c 36 30 30 20 8c 20  63 75 72 76 65 3d 32 0d  |y<600 . curve=2.|
00001920  08 70 29 20 20 20 20 79  2d 3d 32 30 30 2a 63 75  |.p)    y-=200*cu|
00001930  72 76 65 3a ef 32 39 2c  30 3b 6d 30 25 2b 32 30  |rve:.29,0;m0%+20|
00001940  30 2a 63 75 72 76 65 3b  0d 08 7a 18 20 20 20 20  |0*curve;..z.    |
00001950  e7 20 79 3e 3d 38 20 80  20 79 3c 3d 35 38 20 8c  |. y>=8 . y<=58 .|
00001960  0d 08 84 1b 20 20 20 20  20 20 4a 25 3d 63 6f 6c  |....      J%=col|
00001970  6f 75 72 25 28 63 75 72  76 65 29 0d 08 8e 14 20  |our%(curve).... |
00001980  20 20 20 20 20 e3 20 49  25 3d 30 20 b8 20 37 0d  |     . I%=0 . 7.|
00001990  08 98 39 20 20 20 20 20  20 20 20 e7 20 78 3e 3d  |..9        . x>=|
000019a0  6d 32 25 2b 49 25 2a 31  30 30 20 80 20 78 3c 3d  |m2%+I%*100 . x<=|
000019b0  6d 32 25 2b 38 30 2b 49  25 2a 31 30 30 20 80 20  |m2%+80+I%*100 . |
000019c0  49 25 3c 3e 4a 25 20 8c  0d 08 a2 32 20 20 20 20  |I%<>J% ....2    |
000019d0  20 20 20 20 20 20 f2 62  75 74 74 6f 6e 28 6d 32  |      .button(m2|
000019e0  25 2b 4a 25 2a 31 30 30  2c 31 32 2c 43 25 28 4a  |%+J%*100,12,C%(J|
000019f0  25 29 2c 22 22 2c 31 2c  a3 29 0d 08 ac 1f 20 20  |%),"",1,.)....  |
00001a00  20 20 20 20 20 20 20 20  63 6f 6c 6f 75 72 25 28  |        colour%(|
00001a10  63 75 72 76 65 29 3d 49  25 0d 08 b6 32 20 20 20  |curve)=I%...2   |
00001a20  20 20 20 20 20 20 20 f2  62 75 74 74 6f 6e 28 6d  |       .button(m|
00001a30  32 25 2b 49 25 2a 31 30  30 2c 31 32 2c 43 25 28  |2%+I%*100,12,C%(|
00001a40  49 25 29 2c 22 22 2c 31  2c b9 29 0d 08 c0 0d 20  |I%),"",1,.).... |
00001a50  20 20 20 20 20 20 20 cd  0d 08 ca 0b 20 20 20 20  |       .....    |
00001a60  20 20 ed 0d 08 d4 09 20  20 20 20 cd 0d 08 de 1a  |  .....    .....|
00001a70  20 20 20 20 e7 20 79 3e  3d 37 30 20 80 20 79 3c  |    . y>=70 . y<|
00001a80  3d 31 32 30 20 8c 0d 08  e8 1a 20 20 20 20 20 20  |=120 .....      |
00001a90  4a 25 3d 64 65 70 74 68  25 28 63 75 72 76 65 29  |J%=depth%(curve)|
00001aa0  0d 08 f2 14 20 20 20 20  20 20 e3 20 49 25 3d 30  |....      . I%=0|
00001ab0  20 b8 20 35 0d 08 fc 39  20 20 20 20 20 20 20 20  | . 5...9        |
00001ac0  e7 20 78 3e 3d 6d 32 25  2b 49 25 2a 31 30 30 20  |. x>=m2%+I%*100 |
00001ad0  80 20 78 3c 3d 6d 32 25  2b 38 30 2b 49 25 2a 31  |. x<=m2%+80+I%*1|
00001ae0  30 30 20 80 20 49 25 3c  3e 4a 25 20 8c 0d 09 06  |00 . I%<>J% ....|
00001af0  35 20 20 20 20 20 20 20  20 20 20 f2 62 75 74 74  |5          .butt|
00001b00  6f 6e 28 6d 32 25 2b 4a  25 2a 31 30 30 2c 37 32  |on(m2%+J%*100,72|
00001b10  2c 2d 31 2c 22 20 22 2b  c3 28 4a 25 29 2c 31 2c  |,-1," "+.(J%),1,|
00001b20  a3 29 0d 09 10 1e 20 20  20 20 20 20 20 20 20 20  |.)....          |
00001b30  64 65 70 74 68 25 28 63  75 72 76 65 29 3d 49 25  |depth%(curve)=I%|
00001b40  0d 09 1a 35 20 20 20 20  20 20 20 20 20 20 f2 62  |...5          .b|
00001b50  75 74 74 6f 6e 28 6d 32  25 2b 49 25 2a 31 30 30  |utton(m2%+I%*100|
00001b60  2c 37 32 2c 2d 31 2c 22  20 22 2b c3 28 49 25 29  |,72,-1," "+.(I%)|
00001b70  2c 31 2c b9 29 0d 09 24  0d 20 20 20 20 20 20 20  |,1,.)..$.       |
00001b80  20 cd 0d 09 2e 0b 20 20  20 20 20 20 ed 0d 09 38  | .....      ...8|
00001b90  09 20 20 20 20 cd 0d 09  42 1b 20 20 20 20 e7 20  |.    ...B.    . |
00001ba0  79 3e 3d 31 33 32 20 80  20 79 3c 3d 31 38 32 20  |y>=132 . y<=182 |
00001bb0  8c 0d 09 4c 19 20 20 20  20 20 20 4a 25 3d 74 79  |...L.      J%=ty|
00001bc0  70 65 25 28 63 75 72 76  65 29 0d 09 56 14 20 20  |pe%(curve)..V.  |
00001bd0  20 20 20 20 e3 20 49 25  3d 30 20 b8 20 32 0d 09  |    . I%=0 . 2..|
00001be0  60 3a 20 20 20 20 20 20  20 20 e7 20 78 3e 3d 6d  |`:        . x>=m|
00001bf0  32 25 2b 49 25 2a 32 30  30 20 80 20 78 3c 3d 6d  |2%+I%*200 . x<=m|
00001c00  32 25 2b 31 38 30 2b 49  25 2a 32 30 30 20 80 20  |2%+180+I%*200 . |
00001c10  49 25 3c 3e 4a 25 20 8c  0d 09 6a 22 20 20 20 20  |I%<>J% ...j"    |
00001c20  20 20 20 20 20 20 e7 20  63 75 72 76 65 3c 3e 32  |      . curve<>2|
00001c30  20 84 20 49 25 3c 3e 32  20 8c 0d 09 74 38 20 20  | . I%<>2 ...t8  |
00001c40  20 20 20 20 20 20 20 20  20 20 f2 62 75 74 74 6f  |          .butto|
00001c50  6e 28 6d 32 25 2b 4a 25  2a 32 30 30 2c 31 33 32  |n(m2%+J%*200,132|
00001c60  2c 2d 31 2c 74 79 70 65  24 28 4a 25 29 2c 32 2c  |,-1,type$(J%),2,|
00001c70  a3 29 0d 09 7e 1f 20 20  20 20 20 20 20 20 20 20  |.)..~.          |
00001c80  20 20 74 79 70 65 25 28  63 75 72 76 65 29 3d 49  |  type%(curve)=I|
00001c90  25 0d 09 88 38 20 20 20  20 20 20 20 20 20 20 20  |%...8           |
00001ca0  20 f2 62 75 74 74 6f 6e  28 6d 32 25 2b 49 25 2a  | .button(m2%+I%*|
00001cb0  32 30 30 2c 31 33 32 2c  2d 31 2c 74 79 70 65 24  |200,132,-1,type$|
00001cc0  28 49 25 29 2c 32 2c b9  29 0d 09 92 0f 20 20 20  |(I%),2,.)....   |
00001cd0  20 20 20 20 20 20 20 cd  0d 09 9c 0d 20 20 20 20  |       .....    |
00001ce0  20 20 20 20 cd 0d 09 a6  0b 20 20 20 20 20 20 ed  |    .....      .|
00001cf0  0d 09 b0 09 20 20 20 20  cd 0d 09 ba 18 20 20 20  |....    .....   |
00001d00  20 e7 20 79 3e 3d 38 20  80 20 79 3c 3d 35 38 20  | . y>=8 . y<=58 |
00001d10  8c 0d 09 c4 1b 20 20 20  20 20 20 4a 25 3d 63 6f  |.....      J%=co|
00001d20  6c 6f 75 72 25 28 63 75  72 76 65 29 0d 09 ce 14  |lour%(curve)....|
00001d30  20 20 20 20 20 20 e3 20  49 25 3d 30 20 b8 20 37  |      . I%=0 . 7|
00001d40  0d 09 d8 39 20 20 20 20  20 20 20 20 e7 20 78 3e  |...9        . x>|
00001d50  3d 6d 32 25 2b 49 25 2a  31 30 30 20 80 20 78 3c  |=m2%+I%*100 . x<|
00001d60  3d 6d 32 25 2b 38 30 2b  49 25 2a 31 30 30 20 80  |=m2%+80+I%*100 .|
00001d70  20 49 25 3c 3e 4a 25 20  8c 0d 09 e2 32 20 20 20  | I%<>J% ....2   |
00001d80  20 20 20 20 20 20 20 f2  62 75 74 74 6f 6e 28 6d  |       .button(m|
00001d90  32 25 2b 4a 25 2a 31 30  30 2c 31 32 2c 43 25 28  |2%+J%*100,12,C%(|
00001da0  4a 25 29 2c 22 22 2c 31  2c a3 29 0d 09 ec 1f 20  |J%),"",1,.).... |
00001db0  20 20 20 20 20 20 20 20  20 63 6f 6c 6f 75 72 25  |         colour%|
00001dc0  28 63 75 72 76 65 29 3d  49 25 0d 09 f6 32 20 20  |(curve)=I%...2  |
00001dd0  20 20 20 20 20 20 20 20  f2 62 75 74 74 6f 6e 28  |        .button(|
00001de0  6d 32 25 2b 49 25 2a 31  30 30 2c 31 32 2c 43 25  |m2%+I%*100,12,C%|
00001df0  28 49 25 29 2c 22 22 2c  31 2c b9 29 0d 0a 00 0d  |(I%),"",1,.)....|
00001e00  20 20 20 20 20 20 20 20  cd 0d 0a 0a 0b 20 20 20  |        .....   |
00001e10  20 20 20 ed 0d 0a 14 09  20 20 20 20 cd 0d 0a 1e  |   .....    ....|
00001e20  07 20 20 cc 0d 0a 28 1d  20 20 20 20 79 2d 3d 36  |.  ...(.    y-=6|
00001e30  30 30 3a ef 32 39 2c 30  3b 6d 30 25 2b 36 30 30  |00:.29,0;m0%+600|
00001e40  3b 0d 0a 32 18 20 20 20  20 e7 20 79 3e 3d 38 20  |;..2.    . y>=8 |
00001e50  80 20 79 3c 3d 35 38 20  8c 0d 0a 3c 12 20 20 20  |. y<=58 ...<.   |
00001e60  20 20 20 4a 25 3d 66 69  6c 6c 25 0d 0a 46 14 20  |   J%=fill%..F. |
00001e70  20 20 20 20 20 e3 20 49  25 3d 30 20 b8 20 37 0d  |     . I%=0 . 7.|
00001e80  0a 50 39 20 20 20 20 20  20 20 20 e7 20 78 3e 3d  |.P9        . x>=|
00001e90  6d 32 25 2b 49 25 2a 31  30 30 20 80 20 78 3c 3d  |m2%+I%*100 . x<=|
00001ea0  6d 32 25 2b 38 30 2b 49  25 2a 31 30 30 20 80 20  |m2%+80+I%*100 . |
00001eb0  49 25 3c 3e 4a 25 20 8c  0d 0a 5a 35 20 20 20 20  |I%<>J% ...Z5    |
00001ec0  20 20 20 20 20 20 f2 62  75 74 74 6f 6e 28 6d 32  |      .button(m2|
00001ed0  25 2b 4a 25 2a 31 30 30  2c 31 32 2c 43 25 28 66  |%+J%*100,12,C%(f|
00001ee0  69 6c 6c 25 29 2c 22 22  2c 31 2c a3 29 0d 0a 64  |ill%),"",1,.)..d|
00001ef0  3e 20 20 20 20 20 20 20  20 20 20 66 69 6c 6c 25  |>          fill%|
00001f00  3d 49 25 3a f2 62 75 74  74 6f 6e 28 6d 32 25 2b  |=I%:.button(m2%+|
00001f10  49 25 2a 31 30 30 2c 31  32 2c 43 25 28 66 69 6c  |I%*100,12,C%(fil|
00001f20  6c 25 29 2c 22 22 2c 31  2c b9 29 0d 0a 6e 0d 20  |l%),"",1,.)..n. |
00001f30  20 20 20 20 20 20 20 cd  0d 0a 78 0b 20 20 20 20  |       ...x.    |
00001f40  20 20 ed 0d 0a 82 09 20  20 20 20 cd 0d 0a 8c 1a  |  .....    .....|
00001f50  20 20 20 20 e7 20 79 3e  3d 37 32 20 80 20 79 3c  |    . y>=72 . y<|
00001f60  3d 31 32 32 20 8c 0d 0a  96 12 20 20 20 20 20 20  |=122 .....      |
00001f70  4a 25 3d 62 61 63 6b 25  0d 0a a0 14 20 20 20 20  |J%=back%....    |
00001f80  20 20 e3 20 49 25 3d 30  20 b8 20 37 0d 0a aa 39  |  . I%=0 . 7...9|
00001f90  20 20 20 20 20 20 20 20  e7 20 78 3e 3d 6d 32 25  |        . x>=m2%|
00001fa0  2b 49 25 2a 31 30 30 20  80 20 78 3c 3d 6d 32 25  |+I%*100 . x<=m2%|
00001fb0  2b 38 30 2b 49 25 2a 31  30 30 20 80 20 49 25 3c  |+80+I%*100 . I%<|
00001fc0  3e 4a 25 20 8c 0d 0a b4  35 20 20 20 20 20 20 20  |>J% ....5       |
00001fd0  20 20 20 f2 62 75 74 74  6f 6e 28 6d 32 25 2b 4a  |   .button(m2%+J|
00001fe0  25 2a 31 30 30 2c 37 32  2c 43 25 28 62 61 63 6b  |%*100,72,C%(back|
00001ff0  25 29 2c 22 22 2c 31 2c  a3 29 0d 0a be 3e 20 20  |%),"",1,.)...>  |
00002000  20 20 20 20 20 20 20 20  62 61 63 6b 25 3d 49 25  |        back%=I%|
00002010  3a f2 62 75 74 74 6f 6e  28 6d 32 25 2b 49 25 2a  |:.button(m2%+I%*|
00002020  31 30 30 2c 37 32 2c 43  25 28 62 61 63 6b 25 29  |100,72,C%(back%)|
00002030  2c 22 22 2c 31 2c b9 29  0d 0a c8 0d 20 20 20 20  |,"",1,.)....    |
00002040  20 20 20 20 cd 0d 0a d2  0b 20 20 20 20 20 20 ed  |    .....      .|
00002050  0d 0a dc 09 20 20 20 20  cd 0d 0a e6 1b 20 20 20  |....    .....   |
00002060  20 e7 20 79 3e 3d 31 33  32 20 80 20 79 3c 3d 31  | . y>=132 . y<=1|
00002070  38 32 20 8c 0d 0a f0 54  20 20 20 20 20 20 e7 20  |82 ....T      . |
00002080  28 78 3e 3d 6d 32 25 20  80 20 78 3c 3d 6d 32 25  |(x>=m2% . x<=m2%|
00002090  2b 38 30 20 80 20 6d 6f  64 65 25 3d 32 30 29 20  |+80 . mode%=20) |
000020a0  84 20 28 78 3e 3d 6d 32  25 2b 31 30 30 20 80 20  |. (x>=m2%+100 . |
000020b0  78 3c 3d 6d 32 25 2b 31  38 30 20 80 20 6d 6f 64  |x<=m2%+180 . mod|
000020c0  65 25 3d 31 32 29 20 8c  0d 0a fa 22 20 20 20 20  |e%=12) ...."    |
000020d0  20 20 20 20 6d 6f 64 65  25 3d 33 32 2d 6d 6f 64  |    mode%=32-mod|
000020e0  65 25 3a 65 78 69 74 25  3d b9 0d 0b 04 2a 20 20  |e%:exit%=....*  |
000020f0  20 20 20 20 20 20 e7 20  6d 6f 64 65 25 3d 31 32  |      . mode%=12|
00002100  20 8c 20 73 74 61 74 65  3d b9 20 8b 20 73 74 61  | . state=. . sta|
00002110  74 65 3d a3 0d 0b 0e 2c  20 20 20 20 20 20 20 20  |te=....,        |
00002120  f2 62 75 74 74 6f 6e 28  6d 32 25 2c 31 33 32 2c  |.button(m2%,132,|
00002130  2d 31 2c 22 31 32 22 2c  31 2c 73 74 61 74 65 29  |-1,"12",1,state)|
00002140  0d 0b 18 31 20 20 20 20  20 20 20 20 f2 62 75 74  |...1        .but|
00002150  74 6f 6e 28 6d 32 25 2b  31 30 30 2c 31 33 32 2c  |ton(m2%+100,132,|
00002160  2d 31 2c 22 32 30 22 2c  31 2c ac 73 74 61 74 65  |-1,"20",1,.state|
00002170  29 0d 0b 22 0b 20 20 20  20 20 20 cd 0d 0b 2c 09  |)..".      ...,.|
00002180  20 20 20 20 cd 0d 0b 36  1b 20 20 20 20 e7 20 79  |    ...6.    . y|
00002190  3e 3d 32 32 30 20 80 20  79 3c 3d 32 37 30 20 8c  |>=220 . y<=270 .|
000021a0  0d 0b 40 51 20 20 20 20  20 20 e7 20 28 78 3e 3d  |..@Q      . (x>=|
000021b0  6d 32 25 20 80 20 78 3c  3d 20 6d 32 25 2b 31 38  |m2% . x<= m2%+18|
000021c0  30 20 80 20 ac 73 6e 6f  77 25 29 20 84 20 28 78  |0 . .snow%) . (x|
000021d0  3e 3d 6d 32 25 2b 32 30  30 20 80 20 78 3c 3d 6d  |>=m2%+200 . x<=m|
000021e0  32 25 2b 33 38 30 20 80  20 73 6e 6f 77 25 29 20  |2%+380 . snow%) |
000021f0  8c 0d 0b 4a 18 20 20 20  20 20 20 20 20 73 6e 6f  |...J.        sno|
00002200  77 25 3d ac 73 6e 6f 77  25 0d 0b 54 33 20 20 20  |w%=.snow%..T3   |
00002210  20 20 20 20 20 f2 62 75  74 74 6f 6e 28 6d 32 25  |     .button(m2%|
00002220  2c 32 32 30 2c 2d 31 2c  22 53 6e 6f 77 46 6c 61  |,220,-1,"SnowFla|
00002230  6b 65 22 2c 32 2c 73 6e  6f 77 25 29 0d 0b 5e 38  |ke",2,snow%)..^8|
00002240  20 20 20 20 20 20 20 20  f2 62 75 74 74 6f 6e 28  |        .button(|
00002250  6d 32 25 2b 32 30 30 2c  32 32 30 2c 2d 31 2c 22  |m2%+200,220,-1,"|
00002260  46 6c 6f 77 53 6e 61 6b  65 22 2c 32 2c ac 73 6e  |FlowSnake",2,.sn|
00002270  6f 77 25 29 0d 0b 68 0b  20 20 20 20 20 20 cd 0d  |ow%)..h.      ..|
00002280  0b 72 09 20 20 20 20 cd  0d 0b 7c 07 20 20 cd 0d  |.r.    ...|.  ..|
00002290  0b 86 19 fd 20 67 6f 25  20 84 20 71 75 69 74 25  |.... go% . quit%|
000022a0  20 84 20 65 78 69 74 25  0d 0b 90 05 e1 0d 0b 9a  | . exit%........|
000022b0  05 3a 0d 0b a4 1b dd f2  62 75 74 74 6f 6e 28 78  |.:......button(x|
000022c0  2c 79 2c 63 2c 74 24 2c  73 2c 6f 6e 29 0d 0b ae  |,y,c,t$,s,on)...|
000022d0  12 ea 20 6c 2c 68 2c 62  2c 67 3a 68 3d 34 38 0d  |.. l,h,b,g:h=48.|
000022e0  0b b8 18 e7 20 73 3d 32  20 8c 20 6c 3d 31 36 38  |.... s=2 . l=168|
000022f0  20 8b 20 6c 3d 38 34 0d  0b c2 23 e7 20 6f 6e 20  | . l=84...#. on |
00002300  8c 20 62 3d 34 3a 67 3d  30 3a e6 35 20 8b 20 62  |. b=4:g=0:.5 . b|
00002310  3d 31 36 3a 67 3d 37 3a  e6 33 0d 0b cc 11 c8 93  |=16:g=7:.3......|
00002320  20 c8 90 20 78 2c 79 2c  6c 2c 68 0d 0b d6 0b e7  | .. x,y,l,h.....|
00002330  20 ac 6f 6e 20 8c 0d 0b  e0 20 20 20 e6 35 3a ec  | .on ....   .5:.|
00002340  20 78 2c 79 3a df 20 42  59 20 6c 2c 30 3a df 20  | x,y:. BY l,0:. |
00002350  42 59 20 30 2c 68 0d 0b  ea 20 20 20 e6 30 3a ec  |BY 0,h...   .0:.|
00002360  20 78 2c 79 3a df 20 42  59 20 30 2c 68 3a df 20  | x,y:. BY 0,h:. |
00002370  42 59 20 6c 2c 30 0d 0b  f4 05 cd 0d 0b fe 2a e6  |BY l,0........*.|
00002380  31 3a c8 92 20 78 2c 79  3a c8 92 20 78 2b 6c 2c  |1:.. x,y:.. x+l,|
00002390  79 3a c8 92 20 78 2b 6c  2c 79 2b 68 3a c8 92 20  |y:.. x+l,y+h:.. |
000023a0  78 2c 79 2b 68 0d 0c 08  29 e7 20 63 3e 2d 31 20  |x,y+h...). c>-1 |
000023b0  8c 20 e6 63 3a c8 93 20  c8 90 20 78 2b 62 2c 79  |. .c:.. .. x+b,y|
000023c0  2b 62 2c 6c 2d 62 2a 32  2c 68 2d 62 2a 32 0d 0c  |+b,l-b*2,h-b*2..|
000023d0  12 17 e6 67 3a ec 20 78  2b 31 36 2c 79 2b 33 38  |...g:. x+16,y+38|
000023e0  3a f1 20 74 24 0d 0c 1c  05 e1 0d ff              |:. t$.......|
000023ec