Home » Archimedes archive » Acorn User » AU 1998-13 (Christmas).adf » Regulars » StarInfo/Granger/Carbon/!CarbonDem/grapPROCS

StarInfo/Granger/Carbon/!CarbonDem/grapPROCS

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-13 (Christmas).adf » Regulars
Filename: StarInfo/Granger/Carbon/!CarbonDem/grapPROCS
Read OK:
File size: 125F bytes
Load address: 0000
Exec address: 0000
File contents
   10REM Graphics
   20REM LEN A.Granger 98
   30END
   40DEFPROCpaint(t$,xp,yp,s)
   50SYS&40086,,t$,16,xp,yp
   60ENDPROC
   70DEFPROCmemline(a1,b1,a2,b2)
   80co%!(nlines*16)=a1:co%!(nlines*16+4)=b1:co%!(nlines*16+8)=a2:co%!(nlines*16+12)=b2:nlines+=1
   90ENDPROC
  100DEFPROCextragraphics
  110IFpoly THEN
  120df=20:piv=150:df2=30
  130FORrf=-1 TO 1 STEP2
  140PROCmemline(piv+(df2-piv)*rf,200,(df*rf)+piv+(df2-piv)*rf,200):PROCmemline(piv+(df2-piv)*rf,0,piv+(df2-piv)*rf,200):PROCmemline(piv+(df2-piv)*rf,0,(df*rf)+piv+(df2-piv)*rf,0)
  150NEXTrf
  160PROCmemprint(280,0,2,"n")
  170ENDIF
  180ENDPROC
  190DEFPROCdrawbonds
  200FORn2=1 TO length-1+cyclic
  210IFn2=length THENnext=1 ELSEnext=n2+1
  220PROCbond(x(n2),y(n2),x(next),y(next),bonds(n2))
  230NEXTn2
  240ENDPROC
  250DEFPROCsidebranch(len,ang,xs,ys)
  260IFcyclic THENsbr=1:fac=1.5 ELSEsbr=0.4:fac=1
  270stx=xs+(dist*fac*SIN(ang)):sty=ys+(dist*fac*COS(ang))
  280PROCbond(xs,ys,stx,sty,1):xin=dist*SIN(ang)*sbr:yin=dist*COS(ang)*sbr
  290FORn=1 TO len
  300PROCmemprint(stx+(xin*(n-1)),sty+(yin*(n-1)),2,"C")
  310cx=stx+(xin*(n-1)):cy=sty+(yin*(n-1))
  320PROCbond(cx,cy,stx+(xin*n),sty+(yin*n),1)
  330rx=cx+(dist*sbr*SIN(ang+(PI/2))):ry=cy+(dist*sbr*COS(ang+(PI/2)))
  340lx=cx+(dist*sbr*SIN(ang+(PI*1.5))):ly=cy+(dist*sbr*COS(ang+(PI*1.5)))
  350PROCbond(cx,cy,rx,ry,1):PROCbond(cx,cy,lx,ly,1):PROCmemprint(rx,ry,2,"H"):PROCmemprint(lx,ly,2,"H")
  360NEXTn
  370PROCmemprint(stx+(xin*(n-1)),sty+(yin*(n-1)),2,"H")
  380ENDPROC
  390DEFPROCsticks
  400FORn2=1 TO length
  410nused=FNused(n2):count=1
  420FORn3=1 TO 4
  430IFcarbons$(n2,n3)<>">" AND carbons$(n2,n3)>"" THEN
  440type=2
  450IFn2=1 THENtype=1
  460IFn2=length THENtype=3
  470IFcyclic THEN
  480ang=((used-1)*(360/length*(count-1.5)))+((n2-1+(ex*0.5))/length)*360:dist=dist*perc
  490PROCstick(ang)
  500dist=dist*1/perc
  510ELSE
  520IFlength=1 AND nused<4 THENang=360*(count/nused)-30 ELSEang=angles(type,nused+(poly*3)-(poly*nused),count)
  530PROCstick(ang)
  540ENDIF
  550count+=1
  560ENDIF
  570NEXTn3
  580NEXTn2
  590ENDPROC
  600DEFPROCstick(ang)
  610ang=RAD(ang):carb$=carbons$(n2,n3)
  620IFRIGHT$(carb$,1)="#" THEN
  630PROCsidebranch(VAL(carb$),ang,x(n2),y(n2))
  640ELSE
  650x7=x(n2)+SIN(ang)*dist:y7=y(n2)+COS(ang)*dist
  660IFRIGHT$(carbons$(n2,n3),1)="/" THENbond=VAL(MID$(carb$,LEN(carb$)-1,1)) ELSEbond=1
  670PROCbond(x(n2),y(n2),x7,y7,bond)
  680IFRIGHT$(carb$,1)="/" THENcarb$=LEFT$(carb$,LENcarb$-2)
  690carb$=FNbrack(carb$):PROCmemprint(x7,y7,2,carb$)
  700ENDIF
  710ENDPROC
  720DEFPROCbond(x5,y5,x6,y6,no)
  730ang=RAD(FNangle(x6-x5,y6-y5))
  740x5=x5+(gap*SIN(ang)):y5=y5+(gap*COS(ang)):x6=x6-(gap*SIN(ang)):y6=y6-(gap*COS(ang))
  750xi=-gp*SIN(ang+(PI*1.5)):yi=gp*COS(ang+(PI*1.5)):xd=-(no-1)*xi/2:yd=(no-1)*yi/2
  760FORc8=1 TO no
  770PROCmemline(xd+x5,yd+y5,xd+x6,yd+y6):xd+=xi:yd-=yi
  780NEXTc8
  790ENDPROC
  800DEFPROCcarbon_cords
  810FORn2=1 TO length
  820IFcyclic THEN
  830IFlength MOD 2=0 AND poly THENex=1 ELSEex=0
  840x(n2)=dist*SIN((n2-1+(ex*0.5))/length*2*PI):y(n2)=dist*COS((n2-1+(ex*0.5))/length*2*PI)
  850ELSE
  860x(n2)=n2*dist:y(n2)=100
  870ENDIF
  880NEXTn2
  890ENDPROC
  900DEFPROCplotcarbs
  910FORn2=1 TO length:PROCmemprint(x(n2),y(n2),2,cs$(n2)):NEXTn2
  920ENDPROC
  930DEFPROCfitwin(x1,y1,x2,y2)
  940w1=x2-x1:h1=y2-y1:w2=mx_x-mn_x:h2=mx_y-mn_y
  950IFw2=0 THENsc1=1 ELSEsc1=w1/w2
  960IFh2=0 THENsc2=1 ELSEsc2=h1/h2
  970IFsc1>sc2 THENsc=sc2 ELSEsc=sc1
  980xsh=-mn_x:ysh=-mn_y:winx=x1:winy=y1
  990ENDPROC
 1000DEF FNangle(x,y)
 1010angle=0
 1020IFy=0 THEN
 1030IFx>0 THENangle=90
 1040IFx<0 THENangle=270
 1050ELSE
 1060angle=DEG(ATN(x/y))
 1070ENDIF
 1080IFy<0 THENangle=180+angle
 1090IFy>0 AND x<0 THENangle=360+angle
 1100=angle
 1110DEFPROCchoosefont(fs%)
 1120IFfs%<>lfs THEN
 1130IFlfs THENSYS&40082,fhand%
 1140SYS&40081,,font$,fs%*16,fs%*16,0,0 TO fhand%
 1150lfs=fs%
 1160ENDIF
 1170SYS&4008A,fhand%
 1180SYS&400F3,,1,7
 1190ENDPROC
 1200DEFPROCtsize(t$)
 1210SYS&40097,,t$ TO ,,,w%,h%
 1220w%=w%/400:h%=h%/400
 1230ENDPROC
 1240DEFPROCsubscript(xo,yo,text$)
 1250x=winx+(xsh+xo)*sc:y=winy+(ysh+yo)*sc
 1260PROCchoosefont(fsize*sc):PROCtsize(text$):ch%=h%:cw%=w%
 1270IFjus!(c3/2)=2 THEN
 1280x-=w%/2
 1290ELSE
 1300IFjus!(c3/2)=1 THENx-=w%
 1310ENDIF
 1320y-=h%/2
 1330IFLENtext$=1 OR INSTR(text$," ") THEN
 1340PROCpaint(text$,x,y,fsize*sc)
 1350ELSE
 1360IFFNnums(text$) THEN
 1370FORn=1 TO LENtext$
 1380m$=MID$(text$,n,1)
 1390sub=ABS(FNletter(m$)-1)
 1400IFsub>1 OR sub<0 THENsub=0
 1410IFm$="=" THENsub=0
 1420size=sc*(fsize-fsize/4*sub)
 1430PROCchoosefont(size):PROCpaint(m$,x,y-sub*ch%/2,size):PROCtsize(m$):x+=w%
 1440NEXTn
 1450ELSE
 1460PROCpaint(text$,x,y,fsize*sc)
 1470ENDIF
 1480ENDIF
 1490ENDPROC
 1500DEFPROCmemprint(xo,yo,j,text$)
 1510IFfhand% THENSYS&40082,fhand%:lfs=0
 1520PROCchoosefont(fsize*sc)
 1530PROCtsize(text$)
 1540in=INSTR(text$,"*")
 1550IFin THEN
 1560j=VAL(RIGHT$(text$,1))
 1570MID$(text$,in,2)="  "
 1580text$=FNremovespaces(text$)
 1590ENDIF
 1600IFj<4 THENw2%=w% ELSEw2%=0
 1610IFxo+w%>mx_x THENmx_x=xo+w%
 1620IFxo-w2%<mn_x THENmn_x=xo-w%
 1630IFyo+h%>mx_y THENmx_y=yo+h%
 1640IFyo-h%<mn_y THENmn_y=yo-h%
 1650jus!(ntext*4)=j
 1660tc%!(8*ntext)=xo:tc%!(8*ntext+4)=yo:tx$(ntext)=text$:ntext+=1
 1670ENDPROC
 1680DEF FNnums(t$)
 1690FORc1=1 TO 9
 1700IFINSTR(t$,STR$c1) THEN=1
 1710NEXTc1
 1720=0
 1730DEFPROCredraw
 1740SYS&400C8,,b% TO more%
 1750WHILE more%
 1760PROCfitwin(b%!4,b%!8,b%!12,b%!16):PROCquickdraw:SYS&400CA,,b% TO more%
 1770ENDWHILE
 1780ENDPROC
 1790DEFPROCquickdraw
 1800FORc3=0 TO nlines*16-1 STEP16
 1810LINE winx+(xsh+co%!c3)*sc,winy+(ysh+co%!(c3+4))*sc,winx+(xsh+co%!(c3+8))*sc,winy+(ysh+co%!(c3+12))*sc
 1820NEXTc3
 1830FORc3=0 TO ntext*8-1 STEP8
 1840PROCsubscript(tc%!c3,tc%!(c3+4),tx$(c3/8))
 1850NEXTc3
 1860IFbenz THENCIRCLE winx+(xsh*sc),winy+(ysh*sc),dist*0.7*sc
 1870ENDPROC

� Graphics
� � A.Granger 98
�
(��paint(t$,xp,yp,s)
2ș&40086,,t$,16,xp,yp
<�
F��memline(a1,b1,a2,b2)
P`co%!(nlines*16)=a1:co%!(nlines*16+4)=b1:co%!(nlines*16+8)=a2:co%!(nlines*16+12)=b2:nlines+=1
Z�
d��extragraphics
n�poly �
xdf=20:piv=150:df2=30
��rf=-1 � 1 �2
���memline(piv+(df2-piv)*rf,200,(df*rf)+piv+(df2-piv)*rf,200):�memline(piv+(df2-piv)*rf,0,piv+(df2-piv)*rf,200):�memline(piv+(df2-piv)*rf,0,(df*rf)+piv+(df2-piv)*rf,0)
��rf
��memprint(280,0,2,"n")
��
��
���drawbonds
��n2=1 � length-1+cyclic
�!�n2=length �next=1 �next=n2+1
�0�bond(x(n2),y(n2),x(next),y(next),bonds(n2))
��n2
��
���sidebranch(len,ang,xs,ys)
)�cyclic �sbr=1:fac=1.5 �sbr=0.4:fac=1
5stx=xs+(dist*fac*�(ang)):sty=ys+(dist*fac*�(ang))
B�bond(xs,ys,stx,sty,1):xin=dist*�(ang)*sbr:yin=dist*�(ang)*sbr
"�n=1 � len
,4�memprint(stx+(xin*(n-1)),sty+(yin*(n-1)),2,"C")
6)cx=stx+(xin*(n-1)):cy=sty+(yin*(n-1))
@*�bond(cx,cy,stx+(xin*n),sty+(yin*n),1)
J?rx=cx+(dist*sbr*�(ang+(�/2))):ry=cy+(dist*sbr*�(ang+(�/2)))
TClx=cx+(dist*sbr*�(ang+(�*1.5))):ly=cy+(dist*sbr*�(ang+(�*1.5)))
^[�bond(cx,cy,rx,ry,1):�bond(cx,cy,lx,ly,1):�memprint(rx,ry,2,"H"):�memprint(lx,ly,2,"H")
h�n
r4�memprint(stx+(xin*(n-1)),sty+(yin*(n-1)),2,"H")
|�
���sticks
��n2=1 � length
�nused=�used(n2):count=1
�
�n3=1 � 4
�0�carbons$(n2,n3)<>">" � carbons$(n2,n3)>"" �
�
type=2
��n2=1 �type=1
��n2=length �type=3
�
�cyclic �
�Wang=((used-1)*(360/length*(count-1.5)))+((n2-1+(ex*0.5))/length)*360:dist=dist*perc
��stick(ang)
�dist=dist*1/perc
��
e�length=1 � nused<4 �ang=360*(count/nused)-30 �ang=angles(type,nused+(poly*3)-(poly*nused),count)
�stick(ang)
�
&count+=1
0�
:�n3
D�n2
N�
X��stick(ang)
b$ang=�(ang):carb$=carbons$(n2,n3)
l��carb$,1)="#" �
v)�sidebranch(�(carb$),ang,x(n2),y(n2))
��
�-x7=x(n2)+�(ang)*dist:y7=y(n2)+�(ang)*dist
�B��carbons$(n2,n3),1)="/" �bond=�(�carb$,�(carb$)-1,1)) �bond=1
�!�bond(x(n2),y(n2),x7,y7,bond)
�*��carb$,1)="/" �carb$=�carb$,�carb$-2)
�0carb$=�brack(carb$):�memprint(x7,y7,2,carb$)
��
��
���bond(x5,y5,x6,y6,no)
�ang=�(�angle(x6-x5,y6-y5))
�Ox5=x5+(gap*�(ang)):y5=y5+(gap*�(ang)):x6=x6-(gap*�(ang)):y6=y6-(gap*�(ang))
�Mxi=-gp*�(ang+(�*1.5)):yi=gp*�(ang+(�*1.5)):xd=-(no-1)*xi/2:yd=(no-1)*yi/2
��c8=1 � no
3�memline(xd+x5,yd+y5,xd+x6,yd+y6):xd+=xi:yd-=yi
�c8
�
 ��carbon_cords
*�n2=1 � length
4
�cyclic �
>$�length � 2=0 � poly �ex=1 �ex=0
HUx(n2)=dist*�((n2-1+(ex*0.5))/length*2*�):y(n2)=dist*�((n2-1+(ex*0.5))/length*2*�)
R�
\x(n2)=n2*dist:y(n2)=100
f�
p�n2
z�
���plotcarbs
�7�n2=1 � length:�memprint(x(n2),y(n2),2,cs$(n2)):�n2
��
���fitwin(x1,y1,x2,y2)
�/w1=x2-x1:h1=y2-y1:w2=mx_x-mn_x:h2=mx_y-mn_y
��w2=0 �sc1=1 �sc1=w1/w2
��h2=0 �sc2=1 �sc2=h1/h2
��sc1>sc2 �sc=sc2 �sc=sc1
�'xsh=-mn_x:ysh=-mn_y:winx=x1:winy=y1
��
�� �angle(x,y)
�angle=0
�
�y=0 �
�x>0 �angle=90
�x<0 �angle=270
�
$angle=�(�(x/y))
.�
8�y<0 �angle=180+angle
B�y>0 � x<0 �angle=360+angle
L
=angle
V��choosefont(fs%)
`�fs%<>lfs �
j�lfs �ș&40082,fhand%
t.ș&40081,,font$,fs%*16,fs%*16,0,0 � fhand%
~lfs=fs%
��
�ș&4008A,fhand%
�ș&400F3,,1,7
��
���tsize(t$)
�ș&40097,,t$ � ,,,w%,h%
�w%=w%/400:h%=h%/400
��
���subscript(xo,yo,text$)
�)x=winx+(xsh+xo)*sc:y=winy+(ysh+yo)*sc
�5�choosefont(fsize*sc):�tsize(text$):ch%=h%:cw%=w%
��jus!(c3/2)=2 �
x-=w%/2

�
�jus!(c3/2)=1 �x-=w%
�
(y-=h%/2
2�text$=1 � �text$," ") �
<�paint(text$,x,y,fsize*sc)
F�
P�nums(text$) �
Z�n=1 � �text$
dm$=�text$,n,1)
nsub=�(�letter(m$)-1)
x�sub>1 � sub<0 �sub=0
��m$="=" �sub=0
�size=sc*(fsize-fsize/4*sub)
�D�choosefont(size):�paint(m$,x,y-sub*ch%/2,size):�tsize(m$):x+=w%
��n
��
��paint(text$,x,y,fsize*sc)
��
��
��
���memprint(xo,yo,j,text$)
�"�fhand% �ș&40082,fhand%:lfs=0
��choosefont(fsize*sc)
��tsize(text$)
in=�text$,"*")
	�in �
j=�(�text$,1))
"�text$,in,2)="  "
,text$=�removespaces(text$)
6�
@�j<4 �w2%=w% �w2%=0
J�xo+w%>mx_x �mx_x=xo+w%
T�xo-w2%<mn_x �mn_x=xo-w%
^�yo+h%>mx_y �mx_y=yo+h%
h�yo-h%<mn_y �mn_y=yo-h%
rjus!(ntext*4)=j
|Atc%!(8*ntext)=xo:tc%!(8*ntext+4)=yo:tx$(ntext)=text$:ntext+=1
��
�� �nums(t$)
�
�c1=1 � 9
��t$,�c1) �=1
��c1
�=0
���redraw
�ș&400C8,,b% � more%
�ȕ more%
�B�fitwin(b%!4,b%!8,b%!12,b%!16):�quickdraw:ș&400CA,,b% � more%
��
��
���quickdraw
�c3=0 � nlines*16-1 �16
f� winx+(xsh+co%!c3)*sc,winy+(ysh+co%!(c3+4))*sc,winx+(xsh+co%!(c3+8))*sc,winy+(ysh+co%!(c3+12))*sc
�c3
&�c3=0 � ntext*8-1 �8
0+�subscript(tc%!c3,tc%!(c3+4),tx$(c3/8))
:�c3
D5�benz �ȏ winx+(xsh*sc),winy+(ysh*sc),dist*0.7*sc
N�
�
00000000  0d 00 0a 0e f4 20 47 72  61 70 68 69 63 73 0d 00  |..... Graphics..|
00000010  14 14 f4 20 a9 20 41 2e  47 72 61 6e 67 65 72 20  |... . A.Granger |
00000020  39 38 0d 00 1e 05 e0 0d  00 28 17 dd f2 70 61 69  |98.......(...pai|
00000030  6e 74 28 74 24 2c 78 70  2c 79 70 2c 73 29 0d 00  |nt(t$,xp,yp,s)..|
00000040  32 19 c8 99 26 34 30 30  38 36 2c 2c 74 24 2c 31  |2...&40086,,t$,1|
00000050  36 2c 78 70 2c 79 70 0d  00 3c 05 e1 0d 00 46 1a  |6,xp,yp..<....F.|
00000060  dd f2 6d 65 6d 6c 69 6e  65 28 61 31 2c 62 31 2c  |..memline(a1,b1,|
00000070  61 32 2c 62 32 29 0d 00  50 60 63 6f 25 21 28 6e  |a2,b2)..P`co%!(n|
00000080  6c 69 6e 65 73 2a 31 36  29 3d 61 31 3a 63 6f 25  |lines*16)=a1:co%|
00000090  21 28 6e 6c 69 6e 65 73  2a 31 36 2b 34 29 3d 62  |!(nlines*16+4)=b|
000000a0  31 3a 63 6f 25 21 28 6e  6c 69 6e 65 73 2a 31 36  |1:co%!(nlines*16|
000000b0  2b 38 29 3d 61 32 3a 63  6f 25 21 28 6e 6c 69 6e  |+8)=a2:co%!(nlin|
000000c0  65 73 2a 31 36 2b 31 32  29 3d 62 32 3a 6e 6c 69  |es*16+12)=b2:nli|
000000d0  6e 65 73 2b 3d 31 0d 00  5a 05 e1 0d 00 64 13 dd  |nes+=1..Z....d..|
000000e0  f2 65 78 74 72 61 67 72  61 70 68 69 63 73 0d 00  |.extragraphics..|
000000f0  6e 0b e7 70 6f 6c 79 20  8c 0d 00 78 18 64 66 3d  |n..poly ...x.df=|
00000100  32 30 3a 70 69 76 3d 31  35 30 3a 64 66 32 3d 33  |20:piv=150:df2=3|
00000110  30 0d 00 82 11 e3 72 66  3d 2d 31 20 b8 20 31 20  |0.....rf=-1 . 1 |
00000120  88 32 0d 00 8c a9 f2 6d  65 6d 6c 69 6e 65 28 70  |.2.....memline(p|
00000130  69 76 2b 28 64 66 32 2d  70 69 76 29 2a 72 66 2c  |iv+(df2-piv)*rf,|
00000140  32 30 30 2c 28 64 66 2a  72 66 29 2b 70 69 76 2b  |200,(df*rf)+piv+|
00000150  28 64 66 32 2d 70 69 76  29 2a 72 66 2c 32 30 30  |(df2-piv)*rf,200|
00000160  29 3a f2 6d 65 6d 6c 69  6e 65 28 70 69 76 2b 28  |):.memline(piv+(|
00000170  64 66 32 2d 70 69 76 29  2a 72 66 2c 30 2c 70 69  |df2-piv)*rf,0,pi|
00000180  76 2b 28 64 66 32 2d 70  69 76 29 2a 72 66 2c 32  |v+(df2-piv)*rf,2|
00000190  30 30 29 3a f2 6d 65 6d  6c 69 6e 65 28 70 69 76  |00):.memline(piv|
000001a0  2b 28 64 66 32 2d 70 69  76 29 2a 72 66 2c 30 2c  |+(df2-piv)*rf,0,|
000001b0  28 64 66 2a 72 66 29 2b  70 69 76 2b 28 64 66 32  |(df*rf)+piv+(df2|
000001c0  2d 70 69 76 29 2a 72 66  2c 30 29 0d 00 96 07 ed  |-piv)*rf,0).....|
000001d0  72 66 0d 00 a0 1a f2 6d  65 6d 70 72 69 6e 74 28  |rf.....memprint(|
000001e0  32 38 30 2c 30 2c 32 2c  22 6e 22 29 0d 00 aa 05  |280,0,2,"n")....|
000001f0  cd 0d 00 b4 05 e1 0d 00  be 0f dd f2 64 72 61 77  |............draw|
00000200  62 6f 6e 64 73 0d 00 c8  1b e3 6e 32 3d 31 20 b8  |bonds.....n2=1 .|
00000210  20 6c 65 6e 67 74 68 2d  31 2b 63 79 63 6c 69 63  | length-1+cyclic|
00000220  0d 00 d2 21 e7 6e 32 3d  6c 65 6e 67 74 68 20 8c  |...!.n2=length .|
00000230  6e 65 78 74 3d 31 20 8b  6e 65 78 74 3d 6e 32 2b  |next=1 .next=n2+|
00000240  31 0d 00 dc 30 f2 62 6f  6e 64 28 78 28 6e 32 29  |1...0.bond(x(n2)|
00000250  2c 79 28 6e 32 29 2c 78  28 6e 65 78 74 29 2c 79  |,y(n2),x(next),y|
00000260  28 6e 65 78 74 29 2c 62  6f 6e 64 73 28 6e 32 29  |(next),bonds(n2)|
00000270  29 0d 00 e6 07 ed 6e 32  0d 00 f0 05 e1 0d 00 fa  |).....n2........|
00000280  1f dd f2 73 69 64 65 62  72 61 6e 63 68 28 6c 65  |...sidebranch(le|
00000290  6e 2c 61 6e 67 2c 78 73  2c 79 73 29 0d 01 04 29  |n,ang,xs,ys)...)|
000002a0  e7 63 79 63 6c 69 63 20  8c 73 62 72 3d 31 3a 66  |.cyclic .sbr=1:f|
000002b0  61 63 3d 31 2e 35 20 8b  73 62 72 3d 30 2e 34 3a  |ac=1.5 .sbr=0.4:|
000002c0  66 61 63 3d 31 0d 01 0e  35 73 74 78 3d 78 73 2b  |fac=1...5stx=xs+|
000002d0  28 64 69 73 74 2a 66 61  63 2a b5 28 61 6e 67 29  |(dist*fac*.(ang)|
000002e0  29 3a 73 74 79 3d 79 73  2b 28 64 69 73 74 2a 66  |):sty=ys+(dist*f|
000002f0  61 63 2a 9b 28 61 6e 67  29 29 0d 01 18 42 f2 62  |ac*.(ang))...B.b|
00000300  6f 6e 64 28 78 73 2c 79  73 2c 73 74 78 2c 73 74  |ond(xs,ys,stx,st|
00000310  79 2c 31 29 3a 78 69 6e  3d 64 69 73 74 2a b5 28  |y,1):xin=dist*.(|
00000320  61 6e 67 29 2a 73 62 72  3a 79 69 6e 3d 64 69 73  |ang)*sbr:yin=dis|
00000330  74 2a 9b 28 61 6e 67 29  2a 73 62 72 0d 01 22 0e  |t*.(ang)*sbr..".|
00000340  e3 6e 3d 31 20 b8 20 6c  65 6e 0d 01 2c 34 f2 6d  |.n=1 . len..,4.m|
00000350  65 6d 70 72 69 6e 74 28  73 74 78 2b 28 78 69 6e  |emprint(stx+(xin|
00000360  2a 28 6e 2d 31 29 29 2c  73 74 79 2b 28 79 69 6e  |*(n-1)),sty+(yin|
00000370  2a 28 6e 2d 31 29 29 2c  32 2c 22 43 22 29 0d 01  |*(n-1)),2,"C")..|
00000380  36 29 63 78 3d 73 74 78  2b 28 78 69 6e 2a 28 6e  |6)cx=stx+(xin*(n|
00000390  2d 31 29 29 3a 63 79 3d  73 74 79 2b 28 79 69 6e  |-1)):cy=sty+(yin|
000003a0  2a 28 6e 2d 31 29 29 0d  01 40 2a f2 62 6f 6e 64  |*(n-1))..@*.bond|
000003b0  28 63 78 2c 63 79 2c 73  74 78 2b 28 78 69 6e 2a  |(cx,cy,stx+(xin*|
000003c0  6e 29 2c 73 74 79 2b 28  79 69 6e 2a 6e 29 2c 31  |n),sty+(yin*n),1|
000003d0  29 0d 01 4a 3f 72 78 3d  63 78 2b 28 64 69 73 74  |)..J?rx=cx+(dist|
000003e0  2a 73 62 72 2a b5 28 61  6e 67 2b 28 af 2f 32 29  |*sbr*.(ang+(./2)|
000003f0  29 29 3a 72 79 3d 63 79  2b 28 64 69 73 74 2a 73  |)):ry=cy+(dist*s|
00000400  62 72 2a 9b 28 61 6e 67  2b 28 af 2f 32 29 29 29  |br*.(ang+(./2)))|
00000410  0d 01 54 43 6c 78 3d 63  78 2b 28 64 69 73 74 2a  |..TClx=cx+(dist*|
00000420  73 62 72 2a b5 28 61 6e  67 2b 28 af 2a 31 2e 35  |sbr*.(ang+(.*1.5|
00000430  29 29 29 3a 6c 79 3d 63  79 2b 28 64 69 73 74 2a  |))):ly=cy+(dist*|
00000440  73 62 72 2a 9b 28 61 6e  67 2b 28 af 2a 31 2e 35  |sbr*.(ang+(.*1.5|
00000450  29 29 29 0d 01 5e 5b f2  62 6f 6e 64 28 63 78 2c  |)))..^[.bond(cx,|
00000460  63 79 2c 72 78 2c 72 79  2c 31 29 3a f2 62 6f 6e  |cy,rx,ry,1):.bon|
00000470  64 28 63 78 2c 63 79 2c  6c 78 2c 6c 79 2c 31 29  |d(cx,cy,lx,ly,1)|
00000480  3a f2 6d 65 6d 70 72 69  6e 74 28 72 78 2c 72 79  |:.memprint(rx,ry|
00000490  2c 32 2c 22 48 22 29 3a  f2 6d 65 6d 70 72 69 6e  |,2,"H"):.memprin|
000004a0  74 28 6c 78 2c 6c 79 2c  32 2c 22 48 22 29 0d 01  |t(lx,ly,2,"H")..|
000004b0  68 06 ed 6e 0d 01 72 34  f2 6d 65 6d 70 72 69 6e  |h..n..r4.memprin|
000004c0  74 28 73 74 78 2b 28 78  69 6e 2a 28 6e 2d 31 29  |t(stx+(xin*(n-1)|
000004d0  29 2c 73 74 79 2b 28 79  69 6e 2a 28 6e 2d 31 29  |),sty+(yin*(n-1)|
000004e0  29 2c 32 2c 22 48 22 29  0d 01 7c 05 e1 0d 01 86  |),2,"H")..|.....|
000004f0  0c dd f2 73 74 69 63 6b  73 0d 01 90 12 e3 6e 32  |...sticks.....n2|
00000500  3d 31 20 b8 20 6c 65 6e  67 74 68 0d 01 9a 1b 6e  |=1 . length....n|
00000510  75 73 65 64 3d a4 75 73  65 64 28 6e 32 29 3a 63  |used=.used(n2):c|
00000520  6f 75 6e 74 3d 31 0d 01  a4 0d e3 6e 33 3d 31 20  |ount=1.....n3=1 |
00000530  b8 20 34 0d 01 ae 30 e7  63 61 72 62 6f 6e 73 24  |. 4...0.carbons$|
00000540  28 6e 32 2c 6e 33 29 3c  3e 22 3e 22 20 80 20 63  |(n2,n3)<>">" . c|
00000550  61 72 62 6f 6e 73 24 28  6e 32 2c 6e 33 29 3e 22  |arbons$(n2,n3)>"|
00000560  22 20 8c 0d 01 b8 0a 74  79 70 65 3d 32 0d 01 c2  |" .....type=2...|
00000570  11 e7 6e 32 3d 31 20 8c  74 79 70 65 3d 31 0d 01  |..n2=1 .type=1..|
00000580  cc 16 e7 6e 32 3d 6c 65  6e 67 74 68 20 8c 74 79  |...n2=length .ty|
00000590  70 65 3d 33 0d 01 d6 0d  e7 63 79 63 6c 69 63 20  |pe=3.....cyclic |
000005a0  8c 0d 01 e0 57 61 6e 67  3d 28 28 75 73 65 64 2d  |....Wang=((used-|
000005b0  31 29 2a 28 33 36 30 2f  6c 65 6e 67 74 68 2a 28  |1)*(360/length*(|
000005c0  63 6f 75 6e 74 2d 31 2e  35 29 29 29 2b 28 28 6e  |count-1.5)))+((n|
000005d0  32 2d 31 2b 28 65 78 2a  30 2e 35 29 29 2f 6c 65  |2-1+(ex*0.5))/le|
000005e0  6e 67 74 68 29 2a 33 36  30 3a 64 69 73 74 3d 64  |ngth)*360:dist=d|
000005f0  69 73 74 2a 70 65 72 63  0d 01 ea 0f f2 73 74 69  |ist*perc.....sti|
00000600  63 6b 28 61 6e 67 29 0d  01 f4 14 64 69 73 74 3d  |ck(ang)....dist=|
00000610  64 69 73 74 2a 31 2f 70  65 72 63 0d 01 fe 05 cc  |dist*1/perc.....|
00000620  0d 02 08 65 e7 6c 65 6e  67 74 68 3d 31 20 80 20  |...e.length=1 . |
00000630  6e 75 73 65 64 3c 34 20  8c 61 6e 67 3d 33 36 30  |nused<4 .ang=360|
00000640  2a 28 63 6f 75 6e 74 2f  6e 75 73 65 64 29 2d 33  |*(count/nused)-3|
00000650  30 20 8b 61 6e 67 3d 61  6e 67 6c 65 73 28 74 79  |0 .ang=angles(ty|
00000660  70 65 2c 6e 75 73 65 64  2b 28 70 6f 6c 79 2a 33  |pe,nused+(poly*3|
00000670  29 2d 28 70 6f 6c 79 2a  6e 75 73 65 64 29 2c 63  |)-(poly*nused),c|
00000680  6f 75 6e 74 29 0d 02 12  0f f2 73 74 69 63 6b 28  |ount).....stick(|
00000690  61 6e 67 29 0d 02 1c 05  cd 0d 02 26 0c 63 6f 75  |ang).......&.cou|
000006a0  6e 74 2b 3d 31 0d 02 30  05 cd 0d 02 3a 07 ed 6e  |nt+=1..0....:..n|
000006b0  33 0d 02 44 07 ed 6e 32  0d 02 4e 05 e1 0d 02 58  |3..D..n2..N....X|
000006c0  10 dd f2 73 74 69 63 6b  28 61 6e 67 29 0d 02 62  |...stick(ang)..b|
000006d0  24 61 6e 67 3d b2 28 61  6e 67 29 3a 63 61 72 62  |$ang=.(ang):carb|
000006e0  24 3d 63 61 72 62 6f 6e  73 24 28 6e 32 2c 6e 33  |$=carbons$(n2,n3|
000006f0  29 0d 02 6c 14 e7 c2 63  61 72 62 24 2c 31 29 3d  |)..l...carb$,1)=|
00000700  22 23 22 20 8c 0d 02 76  29 f2 73 69 64 65 62 72  |"#" ...v).sidebr|
00000710  61 6e 63 68 28 bb 28 63  61 72 62 24 29 2c 61 6e  |anch(.(carb$),an|
00000720  67 2c 78 28 6e 32 29 2c  79 28 6e 32 29 29 0d 02  |g,x(n2),y(n2))..|
00000730  80 05 cc 0d 02 8a 2d 78  37 3d 78 28 6e 32 29 2b  |......-x7=x(n2)+|
00000740  b5 28 61 6e 67 29 2a 64  69 73 74 3a 79 37 3d 79  |.(ang)*dist:y7=y|
00000750  28 6e 32 29 2b 9b 28 61  6e 67 29 2a 64 69 73 74  |(n2)+.(ang)*dist|
00000760  0d 02 94 42 e7 c2 63 61  72 62 6f 6e 73 24 28 6e  |...B..carbons$(n|
00000770  32 2c 6e 33 29 2c 31 29  3d 22 2f 22 20 8c 62 6f  |2,n3),1)="/" .bo|
00000780  6e 64 3d bb 28 c1 63 61  72 62 24 2c a9 28 63 61  |nd=.(.carb$,.(ca|
00000790  72 62 24 29 2d 31 2c 31  29 29 20 8b 62 6f 6e 64  |rb$)-1,1)) .bond|
000007a0  3d 31 0d 02 9e 21 f2 62  6f 6e 64 28 78 28 6e 32  |=1...!.bond(x(n2|
000007b0  29 2c 79 28 6e 32 29 2c  78 37 2c 79 37 2c 62 6f  |),y(n2),x7,y7,bo|
000007c0  6e 64 29 0d 02 a8 2a e7  c2 63 61 72 62 24 2c 31  |nd)...*..carb$,1|
000007d0  29 3d 22 2f 22 20 8c 63  61 72 62 24 3d c0 63 61  |)="/" .carb$=.ca|
000007e0  72 62 24 2c a9 63 61 72  62 24 2d 32 29 0d 02 b2  |rb$,.carb$-2)...|
000007f0  30 63 61 72 62 24 3d a4  62 72 61 63 6b 28 63 61  |0carb$=.brack(ca|
00000800  72 62 24 29 3a f2 6d 65  6d 70 72 69 6e 74 28 78  |rb$):.memprint(x|
00000810  37 2c 79 37 2c 32 2c 63  61 72 62 24 29 0d 02 bc  |7,y7,2,carb$)...|
00000820  05 cd 0d 02 c6 05 e1 0d  02 d0 1a dd f2 62 6f 6e  |.............bon|
00000830  64 28 78 35 2c 79 35 2c  78 36 2c 79 36 2c 6e 6f  |d(x5,y5,x6,y6,no|
00000840  29 0d 02 da 1e 61 6e 67  3d b2 28 a4 61 6e 67 6c  |)....ang=.(.angl|
00000850  65 28 78 36 2d 78 35 2c  79 36 2d 79 35 29 29 0d  |e(x6-x5,y6-y5)).|
00000860  02 e4 4f 78 35 3d 78 35  2b 28 67 61 70 2a b5 28  |..Ox5=x5+(gap*.(|
00000870  61 6e 67 29 29 3a 79 35  3d 79 35 2b 28 67 61 70  |ang)):y5=y5+(gap|
00000880  2a 9b 28 61 6e 67 29 29  3a 78 36 3d 78 36 2d 28  |*.(ang)):x6=x6-(|
00000890  67 61 70 2a b5 28 61 6e  67 29 29 3a 79 36 3d 79  |gap*.(ang)):y6=y|
000008a0  36 2d 28 67 61 70 2a 9b  28 61 6e 67 29 29 0d 02  |6-(gap*.(ang))..|
000008b0  ee 4d 78 69 3d 2d 67 70  2a b5 28 61 6e 67 2b 28  |.Mxi=-gp*.(ang+(|
000008c0  af 2a 31 2e 35 29 29 3a  79 69 3d 67 70 2a 9b 28  |.*1.5)):yi=gp*.(|
000008d0  61 6e 67 2b 28 af 2a 31  2e 35 29 29 3a 78 64 3d  |ang+(.*1.5)):xd=|
000008e0  2d 28 6e 6f 2d 31 29 2a  78 69 2f 32 3a 79 64 3d  |-(no-1)*xi/2:yd=|
000008f0  28 6e 6f 2d 31 29 2a 79  69 2f 32 0d 02 f8 0e e3  |(no-1)*yi/2.....|
00000900  63 38 3d 31 20 b8 20 6e  6f 0d 03 02 33 f2 6d 65  |c8=1 . no...3.me|
00000910  6d 6c 69 6e 65 28 78 64  2b 78 35 2c 79 64 2b 79  |mline(xd+x5,yd+y|
00000920  35 2c 78 64 2b 78 36 2c  79 64 2b 79 36 29 3a 78  |5,xd+x6,yd+y6):x|
00000930  64 2b 3d 78 69 3a 79 64  2d 3d 79 69 0d 03 0c 07  |d+=xi:yd-=yi....|
00000940  ed 63 38 0d 03 16 05 e1  0d 03 20 12 dd f2 63 61  |.c8....... ...ca|
00000950  72 62 6f 6e 5f 63 6f 72  64 73 0d 03 2a 12 e3 6e  |rbon_cords..*..n|
00000960  32 3d 31 20 b8 20 6c 65  6e 67 74 68 0d 03 34 0d  |2=1 . length..4.|
00000970  e7 63 79 63 6c 69 63 20  8c 0d 03 3e 24 e7 6c 65  |.cyclic ...>$.le|
00000980  6e 67 74 68 20 83 20 32  3d 30 20 80 20 70 6f 6c  |ngth . 2=0 . pol|
00000990  79 20 8c 65 78 3d 31 20  8b 65 78 3d 30 0d 03 48  |y .ex=1 .ex=0..H|
000009a0  55 78 28 6e 32 29 3d 64  69 73 74 2a b5 28 28 6e  |Ux(n2)=dist*.((n|
000009b0  32 2d 31 2b 28 65 78 2a  30 2e 35 29 29 2f 6c 65  |2-1+(ex*0.5))/le|
000009c0  6e 67 74 68 2a 32 2a af  29 3a 79 28 6e 32 29 3d  |ngth*2*.):y(n2)=|
000009d0  64 69 73 74 2a 9b 28 28  6e 32 2d 31 2b 28 65 78  |dist*.((n2-1+(ex|
000009e0  2a 30 2e 35 29 29 2f 6c  65 6e 67 74 68 2a 32 2a  |*0.5))/length*2*|
000009f0  af 29 0d 03 52 05 cc 0d  03 5c 1b 78 28 6e 32 29  |.)..R....\.x(n2)|
00000a00  3d 6e 32 2a 64 69 73 74  3a 79 28 6e 32 29 3d 31  |=n2*dist:y(n2)=1|
00000a10  30 30 0d 03 66 05 cd 0d  03 70 07 ed 6e 32 0d 03  |00..f....p..n2..|
00000a20  7a 05 e1 0d 03 84 0f dd  f2 70 6c 6f 74 63 61 72  |z........plotcar|
00000a30  62 73 0d 03 8e 37 e3 6e  32 3d 31 20 b8 20 6c 65  |bs...7.n2=1 . le|
00000a40  6e 67 74 68 3a f2 6d 65  6d 70 72 69 6e 74 28 78  |ngth:.memprint(x|
00000a50  28 6e 32 29 2c 79 28 6e  32 29 2c 32 2c 63 73 24  |(n2),y(n2),2,cs$|
00000a60  28 6e 32 29 29 3a ed 6e  32 0d 03 98 05 e1 0d 03  |(n2)):.n2.......|
00000a70  a2 19 dd f2 66 69 74 77  69 6e 28 78 31 2c 79 31  |....fitwin(x1,y1|
00000a80  2c 78 32 2c 79 32 29 0d  03 ac 2f 77 31 3d 78 32  |,x2,y2).../w1=x2|
00000a90  2d 78 31 3a 68 31 3d 79  32 2d 79 31 3a 77 32 3d  |-x1:h1=y2-y1:w2=|
00000aa0  6d 78 5f 78 2d 6d 6e 5f  78 3a 68 32 3d 6d 78 5f  |mx_x-mn_x:h2=mx_|
00000ab0  79 2d 6d 6e 5f 79 0d 03  b6 1b e7 77 32 3d 30 20  |y-mn_y.....w2=0 |
00000ac0  8c 73 63 31 3d 31 20 8b  73 63 31 3d 77 31 2f 77  |.sc1=1 .sc1=w1/w|
00000ad0  32 0d 03 c0 1b e7 68 32  3d 30 20 8c 73 63 32 3d  |2.....h2=0 .sc2=|
00000ae0  31 20 8b 73 63 32 3d 68  31 2f 68 32 0d 03 ca 1c  |1 .sc2=h1/h2....|
00000af0  e7 73 63 31 3e 73 63 32  20 8c 73 63 3d 73 63 32  |.sc1>sc2 .sc=sc2|
00000b00  20 8b 73 63 3d 73 63 31  0d 03 d4 27 78 73 68 3d  | .sc=sc1...'xsh=|
00000b10  2d 6d 6e 5f 78 3a 79 73  68 3d 2d 6d 6e 5f 79 3a  |-mn_x:ysh=-mn_y:|
00000b20  77 69 6e 78 3d 78 31 3a  77 69 6e 79 3d 79 31 0d  |winx=x1:winy=y1.|
00000b30  03 de 05 e1 0d 03 e8 11  dd 20 a4 61 6e 67 6c 65  |......... .angle|
00000b40  28 78 2c 79 29 0d 03 f2  0b 61 6e 67 6c 65 3d 30  |(x,y)....angle=0|
00000b50  0d 03 fc 0a e7 79 3d 30  20 8c 0d 04 06 12 e7 78  |.....y=0 ......x|
00000b60  3e 30 20 8c 61 6e 67 6c  65 3d 39 30 0d 04 10 13  |>0 .angle=90....|
00000b70  e7 78 3c 30 20 8c 61 6e  67 6c 65 3d 32 37 30 0d  |.x<0 .angle=270.|
00000b80  04 1a 05 cc 0d 04 24 13  61 6e 67 6c 65 3d 9d 28  |......$.angle=.(|
00000b90  99 28 78 2f 79 29 29 0d  04 2e 05 cd 0d 04 38 19  |.(x/y)).......8.|
00000ba0  e7 79 3c 30 20 8c 61 6e  67 6c 65 3d 31 38 30 2b  |.y<0 .angle=180+|
00000bb0  61 6e 67 6c 65 0d 04 42  1f e7 79 3e 30 20 80 20  |angle..B..y>0 . |
00000bc0  78 3c 30 20 8c 61 6e 67  6c 65 3d 33 36 30 2b 61  |x<0 .angle=360+a|
00000bd0  6e 67 6c 65 0d 04 4c 0a  3d 61 6e 67 6c 65 0d 04  |ngle..L.=angle..|
00000be0  56 15 dd f2 63 68 6f 6f  73 65 66 6f 6e 74 28 66  |V...choosefont(f|
00000bf0  73 25 29 0d 04 60 0f e7  66 73 25 3c 3e 6c 66 73  |s%)..`..fs%<>lfs|
00000c00  20 8c 0d 04 6a 19 e7 6c  66 73 20 8c c8 99 26 34  | ...j..lfs ...&4|
00000c10  30 30 38 32 2c 66 68 61  6e 64 25 0d 04 74 2e c8  |0082,fhand%..t..|
00000c20  99 26 34 30 30 38 31 2c  2c 66 6f 6e 74 24 2c 66  |.&40081,,font$,f|
00000c30  73 25 2a 31 36 2c 66 73  25 2a 31 36 2c 30 2c 30  |s%*16,fs%*16,0,0|
00000c40  20 b8 20 66 68 61 6e 64  25 0d 04 7e 0b 6c 66 73  | . fhand%..~.lfs|
00000c50  3d 66 73 25 0d 04 88 05  cd 0d 04 92 13 c8 99 26  |=fs%...........&|
00000c60  34 30 30 38 41 2c 66 68  61 6e 64 25 0d 04 9c 11  |4008A,fhand%....|
00000c70  c8 99 26 34 30 30 46 33  2c 2c 31 2c 37 0d 04 a6  |..&400F3,,1,7...|
00000c80  05 e1 0d 04 b0 0f dd f2  74 73 69 7a 65 28 74 24  |........tsize(t$|
00000c90  29 0d 04 ba 1b c8 99 26  34 30 30 39 37 2c 2c 74  |)......&40097,,t|
00000ca0  24 20 b8 20 2c 2c 2c 77  25 2c 68 25 0d 04 c4 17  |$ . ,,,w%,h%....|
00000cb0  77 25 3d 77 25 2f 34 30  30 3a 68 25 3d 68 25 2f  |w%=w%/400:h%=h%/|
00000cc0  34 30 30 0d 04 ce 05 e1  0d 04 d8 1c dd f2 73 75  |400...........su|
00000cd0  62 73 63 72 69 70 74 28  78 6f 2c 79 6f 2c 74 65  |bscript(xo,yo,te|
00000ce0  78 74 24 29 0d 04 e2 29  78 3d 77 69 6e 78 2b 28  |xt$)...)x=winx+(|
00000cf0  78 73 68 2b 78 6f 29 2a  73 63 3a 79 3d 77 69 6e  |xsh+xo)*sc:y=win|
00000d00  79 2b 28 79 73 68 2b 79  6f 29 2a 73 63 0d 04 ec  |y+(ysh+yo)*sc...|
00000d10  35 f2 63 68 6f 6f 73 65  66 6f 6e 74 28 66 73 69  |5.choosefont(fsi|
00000d20  7a 65 2a 73 63 29 3a f2  74 73 69 7a 65 28 74 65  |ze*sc):.tsize(te|
00000d30  78 74 24 29 3a 63 68 25  3d 68 25 3a 63 77 25 3d  |xt$):ch%=h%:cw%=|
00000d40  77 25 0d 04 f6 13 e7 6a  75 73 21 28 63 33 2f 32  |w%.....jus!(c3/2|
00000d50  29 3d 32 20 8c 0d 05 00  0b 78 2d 3d 77 25 2f 32  |)=2 .....x-=w%/2|
00000d60  0d 05 0a 05 cc 0d 05 14  18 e7 6a 75 73 21 28 63  |..........jus!(c|
00000d70  33 2f 32 29 3d 31 20 8c  78 2d 3d 77 25 0d 05 1e  |3/2)=1 .x-=w%...|
00000d80  05 cd 0d 05 28 0b 79 2d  3d 68 25 2f 32 0d 05 32  |....(.y-=h%/2..2|
00000d90  1d e7 a9 74 65 78 74 24  3d 31 20 84 20 a7 74 65  |...text$=1 . .te|
00000da0  78 74 24 2c 22 20 22 29  20 8c 0d 05 3c 1e f2 70  |xt$," ") ...<..p|
00000db0  61 69 6e 74 28 74 65 78  74 24 2c 78 2c 79 2c 66  |aint(text$,x,y,f|
00000dc0  73 69 7a 65 2a 73 63 29  0d 05 46 05 cc 0d 05 50  |size*sc)..F....P|
00000dd0  13 e7 a4 6e 75 6d 73 28  74 65 78 74 24 29 20 8c  |...nums(text$) .|
00000de0  0d 05 5a 11 e3 6e 3d 31  20 b8 20 a9 74 65 78 74  |..Z..n=1 . .text|
00000df0  24 0d 05 64 12 6d 24 3d  c1 74 65 78 74 24 2c 6e  |$..d.m$=.text$,n|
00000e00  2c 31 29 0d 05 6e 18 73  75 62 3d 94 28 a4 6c 65  |,1)..n.sub=.(.le|
00000e10  74 74 65 72 28 6d 24 29  2d 31 29 0d 05 78 19 e7  |tter(m$)-1)..x..|
00000e20  73 75 62 3e 31 20 84 20  73 75 62 3c 30 20 8c 73  |sub>1 . sub<0 .s|
00000e30  75 62 3d 30 0d 05 82 12  e7 6d 24 3d 22 3d 22 20  |ub=0.....m$="=" |
00000e40  8c 73 75 62 3d 30 0d 05  8c 1f 73 69 7a 65 3d 73  |.sub=0....size=s|
00000e50  63 2a 28 66 73 69 7a 65  2d 66 73 69 7a 65 2f 34  |c*(fsize-fsize/4|
00000e60  2a 73 75 62 29 0d 05 96  44 f2 63 68 6f 6f 73 65  |*sub)...D.choose|
00000e70  66 6f 6e 74 28 73 69 7a  65 29 3a f2 70 61 69 6e  |font(size):.pain|
00000e80  74 28 6d 24 2c 78 2c 79  2d 73 75 62 2a 63 68 25  |t(m$,x,y-sub*ch%|
00000e90  2f 32 2c 73 69 7a 65 29  3a f2 74 73 69 7a 65 28  |/2,size):.tsize(|
00000ea0  6d 24 29 3a 78 2b 3d 77  25 0d 05 a0 06 ed 6e 0d  |m$):x+=w%.....n.|
00000eb0  05 aa 05 cc 0d 05 b4 1e  f2 70 61 69 6e 74 28 74  |.........paint(t|
00000ec0  65 78 74 24 2c 78 2c 79  2c 66 73 69 7a 65 2a 73  |ext$,x,y,fsize*s|
00000ed0  63 29 0d 05 be 05 cd 0d  05 c8 05 cd 0d 05 d2 05  |c)..............|
00000ee0  e1 0d 05 dc 1d dd f2 6d  65 6d 70 72 69 6e 74 28  |.......memprint(|
00000ef0  78 6f 2c 79 6f 2c 6a 2c  74 65 78 74 24 29 0d 05  |xo,yo,j,text$)..|
00000f00  e6 22 e7 66 68 61 6e 64  25 20 8c c8 99 26 34 30  |.".fhand% ...&40|
00000f10  30 38 32 2c 66 68 61 6e  64 25 3a 6c 66 73 3d 30  |082,fhand%:lfs=0|
00000f20  0d 05 f0 19 f2 63 68 6f  6f 73 65 66 6f 6e 74 28  |.....choosefont(|
00000f30  66 73 69 7a 65 2a 73 63  29 0d 05 fa 11 f2 74 73  |fsize*sc).....ts|
00000f40  69 7a 65 28 74 65 78 74  24 29 0d 06 04 12 69 6e  |ize(text$)....in|
00000f50  3d a7 74 65 78 74 24 2c  22 2a 22 29 0d 06 0e 09  |=.text$,"*")....|
00000f60  e7 69 6e 20 8c 0d 06 18  12 6a 3d bb 28 c2 74 65  |.in .....j=.(.te|
00000f70  78 74 24 2c 31 29 29 0d  06 22 15 c1 74 65 78 74  |xt$,1)).."..text|
00000f80  24 2c 69 6e 2c 32 29 3d  22 20 20 22 0d 06 2c 1e  |$,in,2)="  "..,.|
00000f90  74 65 78 74 24 3d a4 72  65 6d 6f 76 65 73 70 61  |text$=.removespa|
00000fa0  63 65 73 28 74 65 78 74  24 29 0d 06 36 05 cd 0d  |ces(text$)..6...|
00000fb0  06 40 17 e7 6a 3c 34 20  8c 77 32 25 3d 77 25 20  |.@..j<4 .w2%=w% |
00000fc0  8b 77 32 25 3d 30 0d 06  4a 1b e7 78 6f 2b 77 25  |.w2%=0..J..xo+w%|
00000fd0  3e 6d 78 5f 78 20 8c 6d  78 5f 78 3d 78 6f 2b 77  |>mx_x .mx_x=xo+w|
00000fe0  25 0d 06 54 1c e7 78 6f  2d 77 32 25 3c 6d 6e 5f  |%..T..xo-w2%<mn_|
00000ff0  78 20 8c 6d 6e 5f 78 3d  78 6f 2d 77 25 0d 06 5e  |x .mn_x=xo-w%..^|
00001000  1b e7 79 6f 2b 68 25 3e  6d 78 5f 79 20 8c 6d 78  |..yo+h%>mx_y .mx|
00001010  5f 79 3d 79 6f 2b 68 25  0d 06 68 1b e7 79 6f 2d  |_y=yo+h%..h..yo-|
00001020  68 25 3c 6d 6e 5f 79 20  8c 6d 6e 5f 79 3d 79 6f  |h%<mn_y .mn_y=yo|
00001030  2d 68 25 0d 06 72 13 6a  75 73 21 28 6e 74 65 78  |-h%..r.jus!(ntex|
00001040  74 2a 34 29 3d 6a 0d 06  7c 41 74 63 25 21 28 38  |t*4)=j..|Atc%!(8|
00001050  2a 6e 74 65 78 74 29 3d  78 6f 3a 74 63 25 21 28  |*ntext)=xo:tc%!(|
00001060  38 2a 6e 74 65 78 74 2b  34 29 3d 79 6f 3a 74 78  |8*ntext+4)=yo:tx|
00001070  24 28 6e 74 65 78 74 29  3d 74 65 78 74 24 3a 6e  |$(ntext)=text$:n|
00001080  74 65 78 74 2b 3d 31 0d  06 86 05 e1 0d 06 90 0f  |text+=1.........|
00001090  dd 20 a4 6e 75 6d 73 28  74 24 29 0d 06 9a 0d e3  |. .nums(t$).....|
000010a0  63 31 3d 31 20 b8 20 39  0d 06 a4 11 e7 a7 74 24  |c1=1 . 9......t$|
000010b0  2c c3 63 31 29 20 8c 3d  31 0d 06 ae 07 ed 63 31  |,.c1) .=1.....c1|
000010c0  0d 06 b8 06 3d 30 0d 06  c2 0c dd f2 72 65 64 72  |....=0......redr|
000010d0  61 77 0d 06 cc 18 c8 99  26 34 30 30 43 38 2c 2c  |aw......&400C8,,|
000010e0  62 25 20 b8 20 6d 6f 72  65 25 0d 06 d6 0c c8 95  |b% . more%......|
000010f0  20 6d 6f 72 65 25 0d 06  e0 42 f2 66 69 74 77 69  | more%...B.fitwi|
00001100  6e 28 62 25 21 34 2c 62  25 21 38 2c 62 25 21 31  |n(b%!4,b%!8,b%!1|
00001110  32 2c 62 25 21 31 36 29  3a f2 71 75 69 63 6b 64  |2,b%!16):.quickd|
00001120  72 61 77 3a c8 99 26 34  30 30 43 41 2c 2c 62 25  |raw:..&400CA,,b%|
00001130  20 b8 20 6d 6f 72 65 25  0d 06 ea 05 ce 0d 06 f4  | . more%........|
00001140  05 e1 0d 06 fe 0f dd f2  71 75 69 63 6b 64 72 61  |........quickdra|
00001150  77 0d 07 08 1b e3 63 33  3d 30 20 b8 20 6e 6c 69  |w.....c3=0 . nli|
00001160  6e 65 73 2a 31 36 2d 31  20 88 31 36 0d 07 12 66  |nes*16-1 .16...f|
00001170  86 20 77 69 6e 78 2b 28  78 73 68 2b 63 6f 25 21  |. winx+(xsh+co%!|
00001180  63 33 29 2a 73 63 2c 77  69 6e 79 2b 28 79 73 68  |c3)*sc,winy+(ysh|
00001190  2b 63 6f 25 21 28 63 33  2b 34 29 29 2a 73 63 2c  |+co%!(c3+4))*sc,|
000011a0  77 69 6e 78 2b 28 78 73  68 2b 63 6f 25 21 28 63  |winx+(xsh+co%!(c|
000011b0  33 2b 38 29 29 2a 73 63  2c 77 69 6e 79 2b 28 79  |3+8))*sc,winy+(y|
000011c0  73 68 2b 63 6f 25 21 28  63 33 2b 31 32 29 29 2a  |sh+co%!(c3+12))*|
000011d0  73 63 0d 07 1c 07 ed 63  33 0d 07 26 18 e3 63 33  |sc.....c3..&..c3|
000011e0  3d 30 20 b8 20 6e 74 65  78 74 2a 38 2d 31 20 88  |=0 . ntext*8-1 .|
000011f0  38 0d 07 30 2b f2 73 75  62 73 63 72 69 70 74 28  |8..0+.subscript(|
00001200  74 63 25 21 63 33 2c 74  63 25 21 28 63 33 2b 34  |tc%!c3,tc%!(c3+4|
00001210  29 2c 74 78 24 28 63 33  2f 38 29 29 0d 07 3a 07  |),tx$(c3/8))..:.|
00001220  ed 63 33 0d 07 44 35 e7  62 65 6e 7a 20 8c c8 8f  |.c3..D5.benz ...|
00001230  20 77 69 6e 78 2b 28 78  73 68 2a 73 63 29 2c 77  | winx+(xsh*sc),w|
00001240  69 6e 79 2b 28 79 73 68  2a 73 63 29 2c 64 69 73  |iny+(ysh*sc),dis|
00001250  74 2a 30 2e 37 2a 73 63  0d 07 4e 05 e1 0d ff     |t*0.7*sc..N....|
0000125f