Wloe 4ecm 6qHugoApps @ Fonts @i%| Game @(* Icons @+< Library @,` Modules @-p Tutorials @00 Utilities @3 Apps @ Fonts @i%| Game @(* Icons @+< Library @,` Modules @-p Tutorials @00 Utilities @3 0277,020-01$HugoHugoFontAlias UsFontDes @N\!=MusicEd @9Painting @pUserFonts @" UserPics @# UserTunes @$h FontAlias UsFontDes @N\!=MusicEd @9Painting @pUserFonts @" UserPics @# UserTunes @$h Apps Apps Hugo  > &.apps.FontAlias  (c) Acorn Computers 1987  Version 1.1 ( 26 < 23,16,&40,&BF| F manifest Pweldir$="&.Apps.UserFonts." Z7 WHext%(maxW),WHint%(maxW),PTwin%(maxW),Heap heapS d b% 4096 n dat% 4096 x bezwork 24  SIZE%(20)  TC%(256) 9 Y%=0 256:TC%(Y%)=Y%+14>>4: TC%(Y%)>15 TC%(Y%)=15  ; I%=0 maxW:WHext%(I%)=-1:WHint%(I%)=0:PTwin%(I%)=0: initheap ș Init * 23,6,&FC,&FC,&FC,&FC,&FC,&FC,&FC,&FC wmodels copyw(warn%) "b%!40=0: b%!44=-b%!52: b%!52=0 ș CreateW,0,b% ErrorH% clerr%=0  defact%=0  FontW%=0  FontK%=0 "finished%= , *POINTER 6ș Screen,-1,0,0,1280,1024 @ *FX 21,9 J *FX 4,1 T openfont ^1 defact%=0: clerr% <>17 error($) h r poll |  poll  do%  !b%=0 ș Poll,0,b% do%  Ȏ do%  0: defact  1: redrawW(!b%) < 2: openW(!b%,b%!4,b%!8,b%!12,b%!16,b%!20,b%!24,b%!28)  3: closeW(!b%)  4: leaveW(!b%)  5: enterW(!b%) 0 6: mouse(!b%,b%!4,b%!8,b%!12,b%!16,b%!20) ' 7: dragover(!b%,b%!4,b%!8,b%!12)  8: keypres(b%!24,b%!4)  9: menusel  & 0 defact : X%,Y%,Z% D finished% closedown NȎ defact% X 1: metrics b 2: startfont l 3: nextpoint v 4: nextchar  5: scanchar  6: aliaschar  7: writechar    closedown  4,30 *FX4 ("DeskTop")   redrawW(xh%) cnvint(xh%)  !b%=Wxh% ș RedrawW,0,b% more%  info(b%+4) Ȏ (Wih% &FF00)>>8   2: drawchar() * 4 > leaveW(xh%) H ppt% Rcnvint(xh%) \Ȏ (Wih% &FF00)>>8 f p z enterW(xh%) cnvint(xh%) Ȏ (Wih% &FF00)>>8   - openW(xh%,wl%,wb%,wr%,wt%,sx%,sy%,bh%)  S,R%  clerr% cnvint(xh%) K!b%=xh%: b%!4=wl%: b%!8=wb%: b%!12=wr%: b%!16=wt%: b%!20=sx%: b%!24=sy%  b%!28=bh% R%= Ȏ (Wih% &FF00)>>8  ș OpenW,0,b%   closeW(xh%) $ clerr% .cnvint(xh%) 8( (Wih% &FF00)=&100 defact%<>0 B !b%=xh% Lș GetW,0,b% VmouseX%=b%!4+64 `mouseY%=b%!16+32 j openwork t ~ closeI(Wih%,)  2 mouse(mouseX%,mouseY%,mbt%,xh%,icon%,ombt%)  T% cnvint(xh%) T%=(Wih% &FF00) >> 8 * clerr% (T%<>3 T%<>5 T%<>6)  Ȏ T% : 1: defact%=0 mmast(mbt%,icon%,mouseX%,mouseY%) # 3: mbt%<>0 mwarn(icon%) # 5: mbt%<>0 mwork(icon%) # 6: mbt%<>0 mflex(icon%)     dragP(lx%,ly%,rx%,ty%) dragx0%=lx% (dragx1%=rx% 2dragy0%=ly% <dragy1%=ty% FȎ draguser% P Z d dragover(lx%,ly%,rx%,ty%) n x keypres(key%,icon%)  IH% cnvint(!b%) IH%=(Wih% &FF00)>>8  Ȏ IH%  1: keym(key%,icon%)    menusel   mmast(but%,icon%,x%,y%)  CHX%,CHY%  but%=0  !b%=Wxh% ș GetW,0,b% info(b%+4) Ȏ icon% " 0: woggle(Wxh%,icon%):go , 6 @ keym(key%,icon%) J key%<>13 T !b%=Wxh% ^ș GetW,0,b% hinfo(b%+4) rȎ icon% | 1: ș SetC,Wxh%,2,0,0,-1,0  2: ș SetC,Wxh%,1,0,0,-1,0    woggle(window%,icon%)  I%,T%  I%=1 5 ;!b%=window%:b%!4=icon%:b%!8=&200000:b%!12=0:ș SetI,,b% T%=:-T%>=3    go  I%,J%,A$,B$  Xres%=90  Yres%=45 /ș WhichI,Wxh%,b%,&00200000,&00200000 ,I% J%=0 &ȕ !I%<>-1 0! !I%=3 SIZE%(J%)=10: J%+=1 :! !I%=4 SIZE%(J%)=12: J%+=1 D! !I%=5 SIZE%(J%)=14: J%+=1 N! !I%=6 SIZE%(J%)=16: J%+=1 X! !I%=7 SIZE%(J%)=18: J%+=1 b! !I%=8 SIZE%(J%)=20: J%+=1 l! !I%=9 SIZE%(J%)=24: J%+=1 v" !I%=10 SIZE%(J%)=28: J%+=1 " !I%=11 SIZE%(J%)=36: J%+=1  I%+=1  $ J%=0 1,"No sizes selected" SIZE%(J%)=-1 INfile$=$(Wpt%!16) OUTfile$=$(Wpt%!12)  load(INfile$) Font%=Wpt% )Prefix$=ReadArthurVar("Font$Prefix") 7 IF Prefix$="" THEN ERROR 1,"No font area defined" $ Prefix$="" Prefix$="&.fonts" ș File,5,Prefix$ I% ' I%<>2 1,"Font area not found" Prefix$=Prefix$+"."  (A$=Prefix$,Prefix$-1): B$=OUTfile$ ȕ A$<>Prefix$+OUTfile$  I%=B$,".") *A$=A$+"."+B$,I%-1) 4B$=B$,I%+1) >ș File,5,A$ J% H Ȏ J% R 0: ("CDIR "+A$) \ 1: 1,"Font name clash" f p zPrefix$=Prefix$+OUTfile$ (ș File,5,Prefix$+".IntMetrics" J%  Ȏ J%  1: openflex:  2: 1,"Font name clash"   start   ReadArthurVar(A$)  I%   :="" %ș ReadVar,A$,dat%,256,0,3 ,,I% dat%?I%=13  =$dat%  start ș SetC,-1,-1 !b%=Font%!4  b%!4=0 $b%!8=&400000 .b%!12=&400000 8ș SetI,0,b% B defact%=1 L V finish `!b%=Font%!4 j b%!4=0 tb%!8=&000000 ~b%!12=&400000 ș SetI,0,b% defact%=0   openfont  M%,N%,I%,J% copyw(masf%) N%=getvec(84) M%=getvec(84)  N%=0 M%=0  N%<>0 freevec(N%)  M%<>0 freevec(M%)   ?N%=13: ?M%=13 b%!140=N%: b%!172=M% b%!144=-1: b%!176=-1 (b%!148=83: b%!180=83 2make((1<<24)+&170,1988,0) < Wpt%=0 F" I%=16 1979 4:Wpt%!I%=0: PWpt%!8=Wpt% ZWpt%!12=M% dWpt%!16=N% nș SetC,Wxh%,1,0,0,-1,0 xfinished%=   metrics ; N%,I%,J%,K%,map%,space%,Ax0%,Ax1%,Ay0%,Ay1%,Axo%,Ayo% N%=1  I%=192 1087 4  Font%!I%<>0 N%+=1  ' N%=1 defact%=0: 1,"Null font" 'map%=getvec(256): map%=0 )space%=getvec(12*N%): space%=0  I%=0 255: map%?I%=0: Ax0%=space% Ay0%=Ax0%+N%+N% Ax1%=Ay0%+N%+N% Ay1%=Ax1%+N%+N% Axo%=Ay1%+N%+N% "Ayo%=Axo%+N%+N% ,metpoke(Ax0%,0,0) 6metpoke(Ay0%,0,0) @metpoke(Ax1%,0,0) Jmetpoke(Ay1%,0,0) Tmetpoke(Axo%,0,0) ^metpoke(Ayo%,0,0) hJ%=1 r I%=32 255 |K%=I%*4+192-128  Font%!K%<>0 map%?I%=J% hiresbound(Font%!K%) lx0%>lx1% lx0%=0: lx1%=0 ly0%>ly1% ly0%=0: ly1%=0 !(Font%!K%+40)=lx0% !(Font%!K%+44)=ly0% !(Font%!K%+48)=lx1% !(Font%!K%+52)=ly1% metpoke(Ax0%,J%,lx0%) metpoke(Ay0%,J%,ly0%) metpoke(Ax1%,J%,lx1%) metpoke(Ay1%,J%,ly1%) $metpoke(Axo%,J%,Font%!(K%+896)) metpoke(Ayo%,J%,0)  J%+=1 & 0 :K%=(Prefix$+".IntMetrics") D6 K%=0 defact%=0: 1,"Cannot open metrics file" N$dat%=OUTfile$ X% I%=$dat%+1 41: dat%?I%=13: bș Gbpb,2,K%,dat%,40 l I%=0 1 v #K%,16 #K%,0 #K%,0 #K%,0  #K%, N%  I%=1 3: #K%,0: ș Gbpb,2,K%,map%,256 freevec(map%) ș Gbpb,2,K%,space%,N%*12 freevec(space%) #K% defact%=2   metpoke(base%,O%,V%)  T%  T%=O%+O% base%?T%=V% 255 *base%?(T%+1)=(V%>>8) 255 4 > startfont H N%,I% R FontN%=0 \ FontP%=0 f,FontH%=(Prefix$+".x"+Xres%+"y"+Yres%) p8 FontH%=0 defact%=0: 1,"Cannot open pixel file" zN%=0 ȕ SIZE%(N%)<>-1  I%=1 16: #FontH%,0: N%+=1  #FontH%,0 defact%=3   nextpoint  T%,U%,S,T,U - SIZE%(FontN%)=-1 #FontH%: finish: #FontH%=FontP% #FontH%,SIZE%(FontN%) #FontH%,4 #FontH%,Xres% #FontH%,Yres% putword(0) $T%=#FontH% .putword(T%) 8#FontH%=T% B FontB%=T% LFontS%=532 VFontX0%=1000 `FontY0%=1000 jFontX1%=-1000 tFontY1%=-1000 ~ FontK%=0 $putword(SIZE%(FontN%)*Xres%*16) $putword(SIZE%(FontN%)*Yres%*16) putword(Xres%) putword(Yres%) putword(0)  T%=1 512: #FontH%,0: copyw(char%) $T=SIZE%(FontN%)*8*Xres%*2/72*1.5 $U=SIZE%(FontN%)*8*Yres%*4/72*1.5 b%!40=T: b%!48=T b%!44=U: b%!52=U b%!0=1279-T: b%!8=1279 b%!4=1023-U: b%!12=1023  $(b%+72)=SIZE%(FontN%)+"pt" make(&200,32,Font%) FontW%=Wpt% ( Wpt%!12=0 2 Wpt%!16=0 < Wpt%!20=0 F'S=1000/(SIZE%(FontN%)/72*Yres%*8*4) P|(Wpt%+24)=S Z FontC%=32 d defact%=4 n x putword(T%) #FontH%,T% 255 #FontH%,(T%>>8) 255 #FontH%,(T%>>16) 255 #FontH%,(T%>>24) 255 FontK%+=T%   endpoint  Q% closeI(!FontW%,) #FontH%=FontB%+16 Q% =(FontX0% &FF) Q%+=(FontY0% &FF)<<8 %Q%+=(FontX1%-FontX0%+1 &FF)<<16 %Q%+=(FontY1%-FontY0%+1 &FF)<<24 putword(Q%) #FontH%=FontP%+4 "putword(-FontK%) ,#FontH%=FontP%+12 6putword(FontS%) @ FontN%+=1 JFontP%+=16 T defact%=3 ^ h nextchar r T%,U%,S | FontC%=256 endpoint: T%=FontC%*4+192-128 U%=Font%!T%  U%<>0 S=|(FontW%+24) FontW%!12=U% FontW%!16=(64-U%!40)/S+16 FontW%!20=(-64-U%!52)/S-32 9!b%=FontW%!4: b%!4=0: b%!8=-1024: b%!12=1280: b%!16=0 ș UpdateW,0,b% more% info(b%+4) Wpt%=FontW% Wih%=!FontW% Wxh%=FontW%!4 drawchar()  defact%=5  & FontC%+=1 0 : D scanchar N T%,U%,V%,S,X%,Y%,P% X, edfront(FontW%!4) 19,2,25,0,0,0: bmap%=getvec(&4000) l$ T%=0 &3FFC 4: map%!T%=0: v Font0%=100000: Font1%=100000 "Font2%=-100000: Font3%=-100000 S=|(FontW%+24) X%=FontW%!16 Y%=FontW%!20 P%=FontW%!12 9!b%=FontW%!4: b%!4=0: b%!8=-1024: b%!12=1280: b%!16=0 ș UpdateW,0,b% more%  ȕ more% info(b%+4) 1 T%=(P%!44/S+Y%-16) -4 P%!52/S+Y%+16 4 U%=map%+&3FC0+T%*16 / V%=(P%!40/S+X%-8) -4 P%!48/S+X%+8 2  `gd  V%+bx%,T%+by%)<>0  %U%?(V%>>4)+=1<< (7-((V%>>1) 7))  V%Font2% Font2%=V% * T%Font3% Font3%=T% > `wf H RȒ V%+bx%,T%+by% \ f pș GetR,0,b% more% z  defact%=6   edfront(XH%)  !b%=XH% ș GetW,0,b%  (b%!32 &20000)<>0 =  b%!28=-1 ș OpenW,0,b% =  aliaschar  T%,U%,V%,I%,X%,Y% 7Font0%=((Font0%-12-FontW%!16 -16)+FontW%!16 >> 1) 7Font2%=((Font2%+12-FontW%!16 -16)+FontW%!16 >> 1) 7Font1%=((Font1%-24-FontW%!20 -32)+FontW%!20 >> 2) 7Font3%=((Font3%+24-FontW%!20 -32)+FontW%!20 >> 2) 8 Font0%>Font2% Font0%=FontW%!16>>1: Font2%=Font0% $8 Font1%>Font3% Font1%=FontW%!20>>2: Font3%=Font1% .1FontZ%=(Font2%-Font0%+8)*(Font3%-Font1%+8)>>6 8pixels%=getvec(FontZ%+4) BV%=0 L!b%=FontW%!4 VHb%!4=0: b%!8=-16+Font1%-Font3%: b%!12=(16+Font2%-Font0%)>>1: b%!16=0 `ș UpdateW,0,b% more% j ȕ more% tinfo(b%+4) ~ T%=Font1% Font3% 8  U%=Font0% Font2% 8 6I%=p(U%,T%)+p(U%+6,T%)+p(U%,T%+6)+p(U%+6,T%+6) rI%+=p(U%+1,T%)+p(U%,T%+1)+p(U%+5,T%)+p(U%+6,T%+1)+p(U%,T%+5)+p(U%+1,T%+6)+p(U%+5,T%+6)+p(U%+6,T%+5)<<1 sI%+=(p(U%+2,T%)+p(U%,T%+2)+p(U%+4,T%)+p(U%+6,T%+2)+p(U%,T%+4)+p(U%+2,T%+6)+p(U%+4,T%+6)+p(U%+6,T%+4))*3 vI%+=p(U%+3,T%)+p(U%,T%+3)+p(U%+6,T%+3)+p(U%+3,T%+6)+p(U%+1,T%+1)+p(U%+1,T%+5)+p(U%+5,T%+5)+p(U%+5,T%+1)<<2 {I%+=(p(U%+2,T%+1)+p(U%+1,T%+2)+p(U%+4,T%+1)+p(U%+5,T%+2)+p(U%+1,T%+4)+p(U%+2,T%+5)+p(U%+4,T%+5)+p(U%+5,T%+4))*6 BI%+=p(U%+3,T%+1)+p(U%+1,T%+3)+p(U%+3,T%+5)+p(U%+5,T%+3)<<3 CI%+=(p(U%+2,T%+2)+p(U%+4,T%+2)+p(U%+2,T%+4)+p(U%+4,T%+4))*9 UI%+=(p(U%+3,T%+2)+p(U%+2,T%+3)+p(U%+4,T%+3)+p(U%+3,T%+4))*12+p(U%+3,T%+3)*16 pixels%?V%=TC%(I%)  TC%(I%)>>1 1Ȓ bx%+8+(U%-Font0%>>2),by%-16+(T%-Font3%>>1)  V%+=1    ș GetR,0,b% more% ( 2%Font0%=((Font0%<<1)-FontW%!16)>>4 <%Font2%=((Font2%<<1)-FontW%!16)>>4 F%Font1%=((Font1%<<2)-FontW%!20)>>5 P%Font3%=((Font3%<<2)-FontW%!20)>>5 Z% Font0%FontX1% FontX1%=Font2% n% Font1%FontY1% FontY1%=Font3% freevec(map%)  defact%=7   p(X%,Y%) A map%?(&3FC0+(Y%<<6)+(X%>>3)) (1<< (7-(X% 7))) =1 =0  writechar  T%,U%,V% T%=#FontH%-FontB%-20 $#FontH%=FontB%+20+FontC%+FontC% #FontH%,T% &FF #FontH%,(T%>>8) &FF  FontC% 1 T%=T%<<16 FontK%+=T% #FontH%=#FontH% T% =(Font0% &FF) T%+=(Font1% &FF)<<8 "#T%+=(Font2%-Font0%+1 &FF)<<16 ,#T%+=(Font3%-Font1%+1 &FF)<<24 6putword(T%) @ FontS%+=4 J U%=0:V%=0 T.FontZ%=(Font2%-Font0%+1)*(Font3%-Font1%+1) ^ T%=0 FontZ%-1 hȎ T% 7 r 0: U%+=pixels%?T% | 1: U%+=pixels%?T%<<4  2: U%+=pixels%?T%<<8  3: U%+=pixels%?T%<<12  4: U%+=pixels%?T%<<16  5: U%+=pixels%?T%<<20  6: U%+=pixels%?T%<<24  7: U%+=pixels%?T%<<28   V%+=1 0 V%=8 putword(U%): FontS%+=4: U%=0: V%=0  $ V%>0 putword(U%): FontS%+=4 freevec(pixels%)  FontC%+=1  defact%=4   drawchar(clg%) & @%,BP%,S,GP,lx 0DEBUG1%=FontW% :DEBUG2%=Wpt% DBP%=Wpt%!12 NS=|(Wpt%+24) X ȕ more% b clg% l BP%<>0 vsx0%=(rx0%-Wpt%!16)*S-125 sx1%=(rx1%-Wpt%!16)*S+125 sy0%=(ry0%-Wpt%!20)*S-125 sy1%=(ry1%-Wpt%!20)*S+125 ,drawfull(BP%,S,bx%+Wpt%!16,by%+Wpt%!20)  ș GetR,0,b% more% info(b%+4)    openflex  maxW+=1 !b%=ErrorH% ș DeleteW,0,b% copyw(flex%)  posnwindow make(&604,12,Wpt%)  maxW-=1 *ErrorH%=Wxh% 4 clerr%+=1 > H mflex(icon%) R icon%<2 \ icon%=2 fcloseI(Wih%, ) p start z closeI(Wih%, )    openwork  maxW+=1 !b%=ErrorH% ș DeleteW,0,b% copyw(work%) posnwindow make(&504,12,Wpt%)  maxW-=1 ErrorH%=Wxh%  clerr%+=1   mwork(icon%)  icon%<2 $ icon%=2 .closeI(Wih%, ) 8closeI(!Font%, ) BFontH%=FontH% L FontH%>0 #FontH% V `closeI(Wih%, ) j t ~ error(ES$)  X%,Y% FontH%=FontH%  FontH%<>0 #FontH%  maxW+=1 !b%=ErrorH% ș DeleteW,0,b% copyw(warn%) X%=152+16*ES$  X%<192 X%=192  b%!8=X%  b%!40=X%  b%!48=X% b%!128=X%-16  Y%=(X%-160) 2  b%!152=Y% b%!160=Y%+160 ( $dat%=ES$ 2b%!140=dat% < b%!144=-1 Fb%!148=ES$ Pposnwindow ZWpt%=dat%+256 dmake(&304,-1,0) n maxW-=1 x clerr%+=1   mwarn(icon%)  icon%=2 closeI(Wih%,)   copyw(I%)  L%,J% L%=I%!(-4)-5 ! J%=0 L% 4:b%!J%=I%!J%:   make(IH%,sz%,pr%)  I% I%=0 ȕ WHext%(I%)<>-1 I%=maxW 1,"No more windows" " sz%>0 Wpt%=getvec(sz%) , Wpt%=0 6 Wih%=IH% @ !Wpt%=IH% J"b%!40=0: b%!44=-b%!52: b%!52=0 Tș CreateW,0,b% Wxh% ^Wpt%!4=Wxh% hWpt%!8=pr% rWHext%(I%)=Wxh% |PTwin%(I%)=Wpt% WHint%(I%)=IH%  !b%=Wxh% ș GetW,0,b% ș OpenW,0,b%   closeI(IH%,update%)  I%,J%,L%,Wxh%,Wpt% I%=0  ȕ I%IH%  I%+=1  < WHint%(I%)<>IH% Wxh%=WHext%(I%): Wpt%=PTwin%(I%)  Wih%=IH% Ȏ (IH% &FF00)>>8  0 , 1: FontW%<>0 closeI(!FontW%,0) &Wpt%=PTwin%(I%) 0freevec(Wpt%!16) :freevec(Wpt%!44) D L%=64 127 4 Nfreevec(Wpt%!L%) X b L%=128 1087 4 l% Wpt%!L%<>0 freechar(Wpt%!L%) v closit(I%) # 2: DEBUG%=FontW%: FontW%=0 closit(I%)  3,5,6:clerr%=0 closit(I%) : closit(I%)    closit(I%)  NONE% !b%=WHext%(I%) ș CloseW,0,b% NONE%=WHint%(I%) &FF00 / NONE%<>&300 NONE%<>&500 NONE%<>&600  !b%=WHext%(I%) ș DeleteW,0,b%   *( NONE%<>&300 freevec(PTwin%(I%)) 4WHext%(I%)=-1 >WHint%(I%)=0 HPTwin%(I%)=0 R NONE%= \ I%=0 maxW f WHint%(I%)<>0 NONE%= p z NONE% finished%=   initheap Heap!0=Heap+4  Heap!4=0 Heap!8=heapS-4   getvec(X%)  S%,T%,U%,V%  T%=Heap  U%=!Heap X%=(X%+3)3 X%<8 X%=8  X%=X%+4  U%<>0   S%=U%!4 $ S%>X% . S%-X%>16 8$!T%=U%+X%:U%!X%=!U%:!U%=X%:V%=U% BU%=!T%:U%!4=S%-X% L V!T%=!U%:!U%=U%!4:V%=U% ` j =V%+4 t ~T%=U%:U%=!U%  U%=0   1,"Out of memory"  freevec(X%)  T%,U%  X%=0 T%=Heap:U%=!T%  X%=X%-4  X%!4=!X% !ȕ X%>U% U%<>0:T%=U%:U%=!U%  !T%=X%:!X%=U% 1 U%<>0 X%+X%!4=U% X%!4=X%!4+U%!4:!X%=!U%  4 T%<>Heap T%+T%!4=X% T%!4=T%!4+X%!4:!T%=!X%   freechar(X%) ( T%,U% 2 X%=0 <freevec(X%!0) F T%=X%!36 P(ȕ T%<>0:U%=!T%:freevec(T%):T%=U%: Zfreevec(X%) d n string(A$) x P% P%=getvec(84)  P%<>0 $P%=A$ =P%  asstring(P%,A$)  !P%<>0  $!P%=A$  !P%=string(A$)    str(A%)  K%,I%,R$  I%=?A%+A% ȕ ?I%=32:I%-=1: &K%=I%?1:I%?1=13:R$=$(A%+1):I%?1=K% =R$ " load(F$) , H%,R$,A$,B%,C%,D%,E%,FAIL% 6! F$="" 1,"Null filename" @H%= (weldir$+F$) J! H%=0 1,"File not found" T R$=#H% ^ R$<>FileHead$ h #H% r0 R$,9)="FontLocus" 1,"Old file format" | 1,"Bad file format"   A$=#H% asstring(Wpt%+44,A$)  C%=20 43 4  #H%,B% Wpt%!C%=B%  C%  #H%,B% Wpt%!1984=B%  #H%,B%  #H%,C%  #H%,D%  FAIL%= #ȕ B%<>0 readpen(H%):B%-=1: / FAIL% ȕ C%<>0 readserif(H%):C%-=1: . FAIL% ȕ D%<>0 readchar(H%):D%-=1: &#H% 0= : readpen(H%) D B%=0 = N P%,B%,A$,C%,D% X&B%=getvec(60): B%=0 FAIL%=:= b P%=#H% l, P%=0 P%>16 freevec(B%):FAIL%=:= v A$=#H% !B%=0 asstring(B%,A$) B%!4=#H%  C%=8 16 4 #H%,D% B%!C%=D%  calcpen(B%) |(B%+44)=(B%!16/100) |(B%+52)=(B%!16/100) Wpt%!((P%<<2)+60)=B% =  calcpen(B%) ! SN,CS,X%,Y%,X,Y,MY ! SN=(B%!16/100) !CS=(SN)/2:SN=(SN)/2 !  B%!4=0 !*X=B%!8*CS:Y=B%!12*SN !4B%!20=Y-X+0.5 !>B%!28=0.5-(X+Y) !HB%!36=X-Y+0.5 !RX=B%!8*SN:Y=B%!12*CS !\B%!24=X+Y+0.5 !fB%!32=X-Y+0.5 !pB%!40=0.5-(X+Y) !z !B%!20=0: B%!24=0: B%!32=0 !Y%=B%!12: X%=B%!8 !Y=Y%*CS: X=X%*SN !MY=(Y*Y+X*X) !B%!28=(X%*Y%)/(MY*4)+0.5 !$B%!36=(Y%*Y%-X%*X%)*CS*SN/MY+0.5 !B%!40=MY+0.5 ! ! ! readserif(H%) ! C%=0 = ! S%,B%,A$,C%,D% !&B%=getvec(56): B%=0 FAIL%=:= " S%=#H% ", S%=0 S%>16 freevec(B%):FAIL%=:= " A$=#H% "$ !B%=0 ".asstring(B%,A$) "8 D%=4 39 4:B%!D%=0: "B #H%,C% "L3 C%<>0 D%=readlines(H%,C%,B%+4,B%+20,B%+36) "V$ D%=0 freevec(B%):FAIL%=:= "`bound(B%) "j2B%!40=lx0%: B%!44=ly0%: B%!48=lx1%: B%!52=ly1% "tWpt%!((S%<<2)+124)=B% "~= " bound(PT%) "8lx0%=100000: lx1%=-100000: ly0%=100000: ly1%=-100000 "bound2(PT%,0,0) " " bound2(PT%,X%,Y%) " T% " PT%=0 "PT%=PT%!36 " ȕ PT%<>0 " T%=PT%+8 PT%+32 8 " !T%+X%>lx1% lx1%=!T%+X% " !T%+X%ly1% ly1%=T%!4+Y% # ! T%!4+Y%0 bound2(Wpt%!((PT%!52<<2)+124),PT%!8+X%,PT%!12+Y%) #(E PT%!56<>0 bound2(Wpt%!((PT%!56<<2)+124),PT%!32+X%,PT%!36+Y%) #2 PT%=!PT% #< #F #P readchar(H%) #Z D%=0 = #d S%,B%,A$,C%,D%,E% #n&B%=getvec(56): B%=0 FAIL%=:= #x S%=#H% #% S%<32 freevec(B%):FAIL%=:= # S%=S%-32 # A$=#H% # !B%=0 #asstring(B%,A$) # D%=4 39 4:B%!D%=0: # #H%,E% # #H%,C% #3 C%<>0 D%=readlines(H%,C%,B%+4,B%+20,B%+36) #$ D%=0 freevec(B%):FAIL%=:= #bound(B%) #2B%!40=lx0%: B%!44=ly0%: B%!48=lx1%: B%!52=ly1% #Wpt%!((S%<<2)+192)=B% $Wpt%!((S%<<2)+1088)=E% $= $# readlines(H%,N%,PC%,SC%,SP%) $" B%,D%,E% $, !SP%=0 $6 N%=0 $@ $J&B%=getvec(60): B%=0 FAIL%=:=0 $T D%=#H% $^B%!0=0: B%!4=D% $h E%=8 39 4 $r #H%,D% $| B%!E%=D% $ $ D%=#H% $ D%>0 PC%?(D%-1)+=1 $ B%!40=D% $ D%=#H% $ B%!44=D% $ D%=#H% $ B%!48=D% $ E%=52 56 4 $ D%=#H% $ D%>0 SC%?(D%-1)+=1 $ B%!E%=D% $ % !SP%=B% % SP%=B% % N%-=1 %& N%=0 %0=1 %: info(b%) %DBx0%=!b%: y0%=b%!4: x1%=b%!8: y1%=b%!12: scx%=b%!16: scy%=b%!20 %Nbx%=x0%-scx%: by%=y1%-scy% %X2Rx0%=b%!24: Ry0%=b%!28: Rx1%=b%!32: Ry1%=b%!36 %b>rx0%=Rx0%-bx%: rx1%=Rx1%-bx%: ry0%=Ry0%-by%: ry1%=Ry1%-by% %l %v front(XH%) % !b%=XH% %ș GetW,0,b% % (b%!32 &20000)<>0 % b%!28=-1 %ș OpenW,0,b% % % cnvint(XH%) % I% %I%=0 % ȕ I%XH% % I%+=1 % % Wxh%=XH% &) WHext%(I%)<>XH% Wih%=0: Wpt%=0: & Wih%=WHint%(I%) &Wpt%=PTwin%(I%) & index%=I% &* &4 posnwindow &> SX%,SY% &HSX%=b%!8-!b% &RSY%=b%!12-b%!4 &\!b%=mouseX%-(SX%>>1) &fb%!8=mouseX%+(SX%>>1) &pb%!4=mouseY%-(SY%>>1) &zb%!12=mouseY%+(SY%>>1) & & manifest & maxW=30 &heapS=--&6000 &FileHead$="FontLocus1" & `wf=&07 & `wb=&80 & `tf=&07 & `tb=&88 & `if=&07 & `ib=&89 & `sf=&0E & `sb=&8A ' `mf=&07 ' `mb=&00 ' `mt=`tf '$ `mr=`tb '. `gd=&02 '8 `rl=&0B 'B `ln=&07 'L `sl=&0C 'V `pt=&0D '` `sp=&0E 'j `dr=&07 't `st=&0C '~ Word =7 ' File =8 'Gbpb =12 'ReadVar=&23 'Wimp=(1<<18)+(3<<6) 'Init =Wimp+0 'CreateW=Wimp+1 'CreateI=Wimp+2 'DeleteW=Wimp+3 'DeleteI=Wimp+4 'OpenW =Wimp+5 'CloseW =Wimp+6 'Poll =Wimp+7 (RedrawW=Wimp+8 ( UpdateW=Wimp+9 (GetR =Wimp+10 (GetW =Wimp+11 ((GetWI =Wimp+12 (2SetI =Wimp+13 (<GetI =Wimp+14 (FGetP =Wimp+15 (PDrag =Wimp+16 (ZScreen =Wimp+17 (dSetC =Wimp+18 (nGetC =Wimp+19 (xCreateM=Wimp+20 (DecodeM=Wimp+21 (WhichI =Wimp+22 (SetX =Wimp+23 ( ( wmodels (masf%=wmodel (C &13,`wf,`wb,340,252,1234,984,0,771,1234,1023,16,"AntiAliaser" (& 4,-80,68,-16,&2003D,`if,`ib,5,Go (* 200,-136,1228,-88,&131,`wf,`wb,15,"" (+ 216,-200,1228,-152,&131,`wf,`wb,15,"" (- 180,-64,252,-32,&10429,`wf,`wb,5,"10pt" (- 260,-64,332,-32,&10429,`wf,`wb,5,"12pt" (- 340,-64,412,-32,&10429,`wf,`wb,5,"14pt" )- 420,-64,492,-32,&10429,`wf,`wb,5,"16pt" )- 500,-64,572,-32,&10429,`wf,`wb,5,"18pt" )- 580,-64,652,-32,&10429,`wf,`wb,5,"20pt" )"- 660,-64,732,-32,&10429,`wf,`wb,5,"24pt" ),- 740,-64,812,-32,&10429,`wf,`wb,5,"28pt" )6- 820,-64,892,-32,&10429,`wf,`wb,5,"36pt" )@+ 76,-64,172,-32,&21,`wf,`wb,0,"Sizes:" )J0 4,-128,180,-96,&21,`wf,`wb,0,"Input font:" )T1 4,-192,180,-160,&21,`wf,`wb,0,"Output font" )^) 180,-192,196,-160,&01,`wf,`wb,0,":" )hchar%=wmodel )r& &83,`wf,`wb,0,0,0,0,0,0,0,0,0,"" )|warn%=wmodel )2 &10,`wf,`wb,384,160,384,160,0,0,384,160,3,"" ), 16,-56,128,-24,&21,`wf,`wb,0,"Error: " )' 128,-56,288,-24,&121,`wf,`wb,0,"" )- 112,-144,272,-80,&3D,`if,`ib,3,"Cancel" )flex%=wmodel )2 &10,`wf,`wb,384,160,384,160,0,0,384,160,4,"" )0 32,-56,208,-24,&21,`wf,`wb,0,"Warning: Fo" )/ 208,-56,352,-24,&01,`wf,`wb,0,"nt exists" ). 24,-144,184,-80,&3D,`if,`ib,3,"Continue" )- 200,-144,360,-80,&3D,`if,`ib,3,"Cancel" )work%=wmodel )2 &10,`wf,`wb,384,160,384,160,0,0,384,160,4,"" )0 32,-56,208,-24,&21,`wf,`wb,0,"Warning: Wo" */ 208,-56,352,-24,&01,`wf,`wb,0,"rking " *+ 24,-144,184,-80,&3D,`if,`ib,3,"Abort" */ 200,-144,360,-80,&3D,`if,`ib,3,"Continue" *& *0 wmodel *:< FL%,FC%,BC%,SX%,SY%,LX%,LY%,WL%,WB%,WR%,WT%,NI%,T$,BT% *D HP%,HS% *N8 FL%,FC%,BC%,SX%,SY%,LX%,LY%,WL%,WB%,WR%,WT%,NI%,T$ *XHS%=88+32*NI% *b HP%=getvec(HS%-(FL%=&50)*4) *l. HP%=0 0,"Cannot start Font Designer" *v/HP%!0=WL%: HP%!4=WB%: HP%!8=WR%: HP%!12=WT% *!HP%!16=0: HP%!20=0: HP%!24=-1 *HP%!28=FL% *JHP%?32=`tf: HP%?33=`tb: HP%?34=FC%: HP%?35=BC%: HP%?36=`sf: HP%?37=`sb *HP%?38=`st: HP%?39=0 *2HP%!40=SX%: HP%!44=SY%: HP%!48=LX%: HP%!52=LY% * HP%!56=&2D: $(HP%+60)=(197) *HP%!84=NI% *$(HP%+72)=T$,11) * NI%=0 =HP% * I% * I%=HP%+88 HP%+HS%-1 32 *( WL%,WB%,WR%,WT%,FL%,FC%,BC%,BT%,T$ * T$="UPARR" T$=&8B + T$="DOWNAR" T$=&8A + +I%!0=WL%: I%!4=WB%: I%!8=WR%: I%!12=WT% +2I%!16=FL%+(BT%<<12): I%?19=(BC%<<4)+(FC% 15) + $(I%+20)=T$,11) +* I% +4=HP% +> mmodel +H- P%,I%,FC%,BC%,maxch%,NI%,T$,MF%,if%,SM% +R FC%,BC%,maxch%,NI%,T$ +\P%=getvec(28+NI%*24) +f- P%=0 0,"Cannot start font designer" +p $P%=T$ +z P%?12=`mt + P%?13=`mr + P%?14=`mf + P%?15=`mb +P%!16=maxch%*16+12 + P%!20=44 + P%!24=0 + I%=P%+28 + FC%=1 NI% + MF%,if%,SM%,T$ + FC%=NI% MF%=MF% &80 + !I%=MF% + SM% + ,I%!4=mmodel , , I%!4=-1 ,$ ,. I%!8=if% ,8$(I%+12)=T$,11) ,B I%+=24 ,L ,V=P% ,` drawfull(BP%,S,X%,Y%) ,j T%,U%,TP%,BPT% ,tBPT%=Wpt%!8 ,~ `wf ,plotfull(BP%,S,X%,Y%) , , plotfull(CP%,S,X%,Y%) , sx0%,sx1%,sy0%,sy1% ,sx0%=(Rx0%-X%)*S-125 ,sx1%=(Rx1%-X%)*S+125 ,sy0%=(Ry0%-Y%)*S-125 ,sy1%=(Ry1%-Y%)*S+125 , CP%=0 , T%,S% , T%=CP%!36 , ȕ T%<>0 - pllf - T%=!T% - - -( hiresbound(CP%) -28lx0%=100000: ly0%=100000: lx1%=-100000: ly1%=-100000 -< CP%=0 -Fhireschar(CP%,0,0) -P -Z hireschar(CP%,X%,Y%) -d T%,BPT% -nBPT%=Font% -x T%=CP%!36 - ȕ T%<>0 - pllb - T%=!T% - - - pllf - PP% - `ln -Ȏ (T%!4) 63 - 0,1,2,3,4,5 -PP%=BPT%!((T%!40<<2)+60) -? T%!40=0 PP%=0 plotskeline(T%) plotfulline(T%,PP%) - . . pllb . PP% ." `ln .,Ȏ (T%!4) 63 .6 0,1,2,3,4,5 .@PP%=BPT%!((T%!40<<2)+60) .Jboundfulline(T%,PP%) .T .^ .h plotfulline(T%,PP%) .rȎ T%!4 63 .| 0,2,4 . bez3 . 1,3,5,7 .Dpenline(T%!8/S+X%,T%!12/S+Y%,T%!32/S+X%,T%!36/S+Y%,T%!44,T%!48) . .E T%!52 plotfull(BPT%!((T%!52<<2)+124),S,T%!8/S+X%,T%!12/S+Y%) .F T%!56 plotfull(BPT%!((T%!56<<2)+124),S,T%!32/S+X%,T%!36/S+Y%) . . plotskeline(T%) .Ȏ T%!4 63 . 0,2,4 . bez2 . 1,3,5,7 ." T%!8/S+X%+1.5,T%!12/S+Y%+2.5 /# T%!32/S+X%+1.5,T%!36/S+Y%+2.5 / / (T%!4 32)<>0 /&E T%!52 plotfull(BPT%!((T%!52<<2)+124),S,T%!8/S+X%,T%!12/S+Y%) /0F T%!56 plotfull(BPT%!((T%!56<<2)+124),S,T%!32/S+X%,T%!36/S+Y%) /: /D boundfulline(T%,PP%) /NȎ T%!4 63 /X 0,2,4 /b bez4 /l 1,3,5,7 /v2boundline(T%!8+X%,T%!12+Y%,T%!32+X%,T%!36+Y%) / /: T%!52 hireschar(BPT%!((T%!52<<2)+124),T%!8,T%!12) /; T%!56 hireschar(BPT%!((T%!56<<2)+124),T%!32,T%!36) / / bez2 / R%,U% /R%=bezwork /" T%!8/S+X%+1.5,T%!12/S+Y%+2.5 / U%=1 32 /!!R%=T%!8+(U%*(T%!16-T%!8)>>5) /$R%!4=T%!12+(U%*(T%!20-T%!12)>>5) /$R%!8=T%!16+(U%*(T%!24-T%!16)>>5) /%R%!12=T%!20+(U%*(T%!28-T%!20)>>5) 0%R%!16=T%!24+(U%*(T%!32-T%!24)>>5) 0 %R%!20=T%!28+(U%*(T%!36-T%!28)>>5) 0!R%=!R%+(U%*(R%!8-!R%)>>5) 0 "R%!4=R%!4+(U%*(R%!12-R%!4)>>5) 0*"R%!8=R%!8+(U%*(R%!16-R%!8)>>5) 04%R%!12=R%!12+(U%*(R%!20-R%!12)>>5) 0>L (!R%+(U%*(R%!8-!R%)>>5))/S+X%+1.5,(R%!4+(U%*(R%!12-R%!4)>>5))/S+Y%+2.5 0H 0R 0\ bez3 0f R%,U% 0pR%=bezwork 0z`BZ1=T%!8/S+X% 0`BZ2=T%!12/S+Y% 0`BZ6=T%!44:`BZ5=T%!48-T%!44 0 U%=1 32 0!!R%=T%!8+(U%*(T%!16-T%!8)>>5) 0$R%!4=T%!12+(U%*(T%!20-T%!12)>>5) 0$R%!8=T%!16+(U%*(T%!24-T%!16)>>5) 0%R%!12=T%!20+(U%*(T%!28-T%!20)>>5) 0%R%!16=T%!24+(U%*(T%!32-T%!24)>>5) 0%R%!20=T%!28+(U%*(T%!36-T%!28)>>5) 0!R%=!R%+(U%*(R%!8-!R%)>>5) 0"R%!4=R%!4+(U%*(R%!12-R%!4)>>5) 0"R%!8=R%!8+(U%*(R%!16-R%!8)>>5) 0%R%!12=R%!12+(U%*(R%!20-R%!12)>>5) 1&`BZ3=(!R%+(U%*(R%!8-!R%)>>5))/S+X% 1)`BZ4=(R%!4+(U%*(R%!12-R%!4)>>5))/S+Y% 1`BZ7=`BZ5*U%/32+T%!44 1$+penline(`BZ1,`BZ2,`BZ3,`BZ4,`BZ6,`BZ7) 1.#`BZ1=`BZ3: `BZ2=`BZ4: `BZ6=`BZ7 18 1B 1L bez4 1V R%,U% 1`R%=bezwork 1j`BZ1=T%!8+X% 1t`BZ2=T%!12+Y% 1~ U%=1 32 1!!R%=T%!8+(U%*(T%!16-T%!8)>>5) 1$R%!4=T%!12+(U%*(T%!20-T%!12)>>5) 1$R%!8=T%!16+(U%*(T%!24-T%!16)>>5) 1%R%!12=T%!20+(U%*(T%!28-T%!20)>>5) 1%R%!16=T%!24+(U%*(T%!32-T%!24)>>5) 1%R%!20=T%!28+(U%*(T%!36-T%!28)>>5) 1!R%=!R%+(U%*(R%!8-!R%)>>5) 1"R%!4=R%!4+(U%*(R%!12-R%!4)>>5) 1"R%!8=R%!8+(U%*(R%!16-R%!8)>>5) 1%R%!12=R%!12+(U%*(R%!20-R%!12)>>5) 1$`BZ3=(!R%+(U%*(R%!8-!R%)>>5))+X% 1'`BZ4=(R%!4+(U%*(R%!12-R%!4)>>5))+Y% 2#boundline(`BZ1,`BZ2,`BZ3,`BZ4) 2 `BZ1=`BZ3: `BZ2=`BZ4 2 2 2( penline(X1,Y1,X2,Y2,R1,R2) 22`P1=R1/(S*100) 2<`P2=R2/(S*100) 2F`P00%=PP%!20*`P1+X1+1.5 2P`P01%=PP%!24*`P1+Y1+2.5 2Z`P02%=PP%!28*`P1+X1+1.5 2d`P03%=PP%!32*`P1+Y1+2.5 2n`P04%=PP%!36*`P1+X1+1.5 2x`P05%=PP%!40*`P1+Y1+2.5 2`P10%=PP%!20*`P2+X2+1.5 2`P11%=PP%!24*`P2+Y2+2.5 2`P12%=PP%!28*`P2+X2+1.5 2`P13%=PP%!32*`P2+Y2+2.5 2`P14%=PP%!36*`P2+X2+1.5 2`P15%=PP%!40*`P2+Y2+2.5 2 PP%!4=0 2`P06%=`P00%+`P04%-`P02% 2`P07%=`P01%+`P05%-`P03% 2`P16%=`P10%+`P14%-`P12% 2`P17%=`P11%+`P15%-`P13% 2H`P1%=`P00%*(`P03%-`P13%)+`P01%*(`P12%-`P02%)+`P02%*`P13%-`P03%*`P12% 2H`P2%=`P12%*(`P03%-`P05%)+`P13%*(`P04%-`P02%)+`P02%*`P05%-`P03%*`P04% 3 (`P1%)=(`P2%) 3 `P2%>0 30 `P00%,`P01%: `P02%,`P03%: 85,`P04%,`P05% 3"0 `P10%,`P11%: `P16%,`P17%: 85,`P14%,`P15% 3, 360 `P00%,`P01%: `P06%,`P07%: 85,`P04%,`P05% 3@0 `P10%,`P11%: `P12%,`P13%: 85,`P14%,`P15% 3J 3T0 `P00%,`P01%: `P04%,`P05%: 85,`P10%,`P11% 3^0 `P10%,`P11%: `P14%,`P15%: 85,`P04%,`P05% 3h 3r `P2%>0 3|0 `P02%,`P03%: `P04%,`P05%: 85,`P06%,`P07% 30 `P10%,`P11%: `P16%,`P17%: 85,`P12%,`P13% 3 30 `P00%,`P01%: `P06%,`P07%: 85,`P02%,`P03% 30 `P12%,`P13%: `P14%,`P15%: 85,`P16%,`P17% 3 30 `P02%,`P03%: `P06%,`P07%: 85,`P12%,`P13% 30 `P12%,`P13%: `P16%,`P17%: 85,`P06%,`P07% 3 3 33 `P00%,`P01%: `P02%-2,`P03%: 205,`P04%,`P05% 33 `P10%,`P11%: `P12%-2,`P13%: 205,`P14%,`P15% 3&`P00%=`P00% -2: `P01%=`P01% -4 3&`P10%=`P10% -2: `P11%=`P11% -4 4$`P2=`P10%-`P00%: `P3=`P11%-`P01% 4 `P0=4*S*S 4`P6=(PP%!8*PP%!8)/`P0 4&`P7=(PP%!12*PP%!12)/`P0 40 `P0=|(PP%+44): `P1=|(PP%+52) 4:`P4=`P2*`P1-`P3*`P0 4D`P5=`P3*`P1+`P2*`P0 4N (`P4)<(`P5) 4X`P2=`P4/`P5 4b`P3=(`P2*`P2*`P7+`P6) 4l`P4=-`P6/`P3 4v`P5=`P7*`P2/`P3 4 4 `P4<1 4`P2=`P5/`P4 4`P3=(`P2*`P2*`P6+`P7) 4`P4=-`P6*`P2/`P3 4`P5=`P7/`P3 4 4`P6=`P4*`P1+`P5*`P0 4`P7=`P5*`P1-`P4*`P0 4`P16%=`P6*R2/100+0.5 4`P17%=`P7*R2/100+0.5 4`P06%=`P6*R1/100+0.5 4`P07%=`P7*R1/100+0.5 58 `P00%+`P06%,`P01%+`P07%: `P00%-`P06%,`P01%-`P07% 5 85,`P10%+`P16%,`P11%+`P17% 58 `P10%+`P16%,`P11%+`P17%: `P10%-`P16%,`P11%-`P17% 5 85,`P00%-`P06%,`P01%-`P07% 5* 54 5>! boundline(x0%,y0%,x1%,y1%) 5H X0%,X1%,Y0%,Y1%,U% 5RX0%=min(x0%,x1%) 5\Y0%=min(y0%,y1%) 5fX1%=max(x0%,x1%) 5pY1%=max(y0%,y1%) 5z PP%<>0 T%!40<>0 5U%=max(PP%!8,PP%!12) 5 X0%-=U% 5 X1%+=U% 5 Y0%-=U% 5 Y1%+=U% 5 5 X0%lx1% lx1%=X1% 5 Y0%ly1% ly1%=Y1% 5 5 max(X%,Y%) 5 X%>Y% =X% =Y% 6 min(X%,Y%) 6 X% &.apps.FontDes  (c) Acorn Computers 1987  Version 1.1 ( 26 < 23,16,&40,&BF| F manifest Pweldir$="&.Apps.UserFonts." Z7 WHext%(maxW),WHint%(maxW),PTwin%(maxW),Heap heapS d b% 4096 n dat% 4096 x O%(8,1)  REFP%(8,1)  REF%(7,1)  bezwork 24 ; I%=0 maxW:WHext%(I%)=-1:WHint%(I%)=0:PTwin%(I%)=0: initheap ș Init * 23,6,&FC,&FC,&FC,&FC,&FC,&FC,&FC,&FC wmodels copyw(warn%) "b%!40=0: b%!44=-b%!52: b%!52=0 ș CreateW,0,b% ErrorH% ș CreateW,0,ibar% root% !ibar%=root% ș GetW,0,ibar% ș OpenW,0,ibar% fontmap%=0 " clerr%=0 ,ltime%=-30 6 linc%=1 @ ltzer%= J defact%=0 Tdraguser%=0 ^dragx0%=-1 hdragx1%=-1 rdragy0%=-1 |dragy1%=-1 menuuser%=0 finished%=  *POINTER ș Screen,-1,0,0,1280,1024  *FX 21,9  *FX 4,1 openfont(0,"") ' clerr% <>17 error($)   poll   poll  do%  !b%=0 ș Poll,0,b% do%  Ȏ do% & 0: defact 0 1: redrawW(!b%) :< 2: openW(!b%,b%!4,b%!8,b%!12,b%!16,b%!20,b%!24,b%!28) D 3: closeW(!b%) N 4: leaveW(!b%) X 5: enterW(!b%) b 6: defact%=0 l+mouse(!b%,b%!4,b%!8,b%!12,b%!16,b%!20) v' 7: dragover(!b%,b%!4,b%!8,b%!12)  8: keypres(b%!24)  9: menusel    defact  X%,Y%,Z%  finished% closedown # defact%<>0 cnvint(defwin%) Ȏ defact%  2: ș GetP,0,b% X%=b%!0: Y%=b%!4: Z%=b%!8 ? (Y%<>dragy0% X%<>dragx1%) Z%<>0 dragP(X%,Y%,X%,Y%)     closedown  !b%=root%  ș CloseW,0,b% * !b%=root% 4ș DeleteW,0,b% >finished%= H poll R 4,30 \*FX4 f("DeskTop") p z redrawW(xh%) cnvint(xh%)  !b%=Wxh% ș RedrawW,0,b% more% info(b%+4) Ȏ (Wih% &FF00)>>8  1: drawmast()  11: drawpenm()  12: drawserm()  13: drawepen()  14: drawedit() 5 (Wih% 1)=0 !(Wpt%!12+32)<>0 enterW(Wxh%)  17: drawital()  19: drawpens()    leaveW(xh%) $ ppt% .cnvint(xh%) 8Ȏ (Wih% &FF00)>>8 B 11: ppt%=Wpt%!8 L(ș WhichI,xh%,b%,&003F0000,&00210000 Vppt%!52=!b%+1 ` 12: ppt%=Wpt%!8 j(ș WhichI,xh%,b%,&003F0000,&00210000 tppt%!56=!b%+1 ~   enterW(xh%) cnvint(xh%) Ȏ (Wih% &FF00)>>8  13 epenun(index%)  14 %!b%=Wxh%: b%!4=3: b%!8=0: b%!12=0 ș SetI,0,b% editun(index%) ' (Wih% 1)=0 !(Wpt%!12+32)<>0 S=|(Wpt%+24)  !b%=Wxh%  ș GetW,0,b% centreedit(Wpt%!12,b%+4) !(Wpt%!12+32)=0 (udedit(0,-984,984,-96) 2 < 17: italun(index%) F P Z- openW(xh%,wl%,wb%,wr%,wt%,sx%,sy%,bh%) d S,R% n clerr% xcnvint(xh%) K!b%=xh%: b%!4=wl%: b%!8=wb%: b%!12=wr%: b%!16=wt%: b%!20=sx%: b%!24=sy%  b%!28=bh% R%= Ȏ (Wih% &FF00)>>8  13  b%!20=0  b%!24=0  14 + Wpt%!32<>wt%-wb% Wpt%!36<>wr%-wl% "S=1200: (Wih% 2)=2 S=500 S=S/(wt%-wb%-96)  S>8 S=8 |(Wpt%+24)=S centreedit(Wpt%!12,b%+4) R%=  " ,ș OpenW,0,b% 6/ (Wih% &FF00)=&E00 R% redrawW(Wxh%) @ J closeW(xh%) T clerr% ^cnvint(xh%) h (Wih% &FF00)=&100 r !b%=xh% |ș GetW,0,b% mouseX%=b%!4+64 mouseY%=b%!16+32 ) Wpt%!48<>0 openfmod("",Wih%,0):  closeI(Wih%,)  2 mouse(mouseX%,mouseY%,mbt%,xh%,icon%,ombt%)  T%  xh%=root% ! clerr% mibar(mbt%):  cnvint(xh%) T%=(Wih% &FF00) >> 8 * clerr% (T%<>3 T%<>5 T%<>6)  Ȏ T% , 1: mmast(mbt%,icon%,mouseX%,mouseY%) & 2: mdirw(mbt%,icon%) 0# 3: mbt%<>0 mwarn(icon%) :, 4: mdisk(mbt%,icon%,mouseX%,mouseY%) D# 5: mbt%<>0 mfmod(icon%) N# 6: mbt%<>0 mflex(icon%) X 11: mpenm(icon%,mbt%) b 12: mserm(icon%,mbt%) l 13: mepen(mbt%,icon%) v, 14: medit(mbt%,icon%,mouseX%,mouseY%)  17: mital(mbt%,icon%)  19: mpens(mbt%,icon%)    dragP(lx%,ly%,rx%,ty%) dragx0%=lx% dragx1%=rx% dragy0%=ly% dragy1%=ty% Ȏ draguser%  1:dragline(rx%,ly%)  2:dragbez(rx%,ly%)  3:dragdash(rx%,ly%)  4:dragpoint(rx%,ly%)   5:dragvert(rx%,ly%)    * dragover(lx%,ly%,rx%,ty%) 4 defact%=0 >Ȏ draguser% H 1:overline R 2:overbez \ 3:overdash f 4:overpoint p 5:oververt z" 6:overcopy(lx%,ly%,rx%,ty%)  draguser%=0   keypres(key%)  IH% cnvint(!b%) IH%=(Wih% &FF00)>>8  Ȏ IH%  1: kmast(key%)  14: kedit(key%)  0 IH%<>4 key%=13 ș SetC,-1,-1,0,0,-1,-1   menusel Ȏ menuuser%  1:mlinm(b%!0) $ . 8 mibar(but%) B (but% 5)<>0 Lopenfont(0,"") V `! (but% 2)<>0 opendir(0) j t ~ mdirw(but%,icon%)  icon%=-1 front(Wxh%):  F$,T%,ATT%  (but% 5)=0 !b%=Wxh%: b%!4=icon% ș GetI,0,b% F$=$(b%+28)  F$="^" T%=2  ș File,5,F$ T%,,,,,ATT%  T%=2 ("DIR "+F$) opendir(Wpt%!8)  * (ATT% 1)=1 load(F$,Wpt%,Wpt%!8,) ( 2 < opendir(OWN%) F I%,T$,N%,J% P I%=0 maxW Z7 (WHint%(I%) &FF00)=&200 closeI(WHint%(I%),) d nș Gbpb,6,0,b% xT$=str(b%+?b%+1) "ș Gbpb,8,0,dat%,255,0 ,,,N% N%=255-N% copyw(dirw%) 4b%!0=500: b%!4=500-32*N%-64: b%!8=700: b%!12=500 b%!52=32*N%+64 $(b%+72)=T$,11) I%=0: OWN%<>0 I%=!OWN% (make(&200+(I% &FF000000),12,OWN%) I%=dat%  J%=0 N% + J%>0 T$=str(I%):I%+=?I%+1 T$="^" C!b%=Wxh%:b%!4=16:b%!8=-48-32*J%:b%!12=32+16*T$:b%!16=-16-32*J% 8b%!20=&15031: b%?23=(`wf 15)+(`wb<<4): $(b%+24)=T$ ș CreateI,0,b%   " mmast(but%,icon%,x%,y%) , CHX%,CHY% 6 but%=0 @ !b%=Wxh% Jș GetW,0,b% Tinfo(b%+4) ^Ȏ icon% h 0: openpen r 1: openserif | 2: openital  3: opendisk 5 5: charm((x%-bx%-4) 68,(by%-96-y%) 68,but%) : front(Wxh%)    kmast(key%)  key%=13 updfname   charm(CX%,CY%,but%)  ppt%,P1%,P2%,T%,CH% CH%=CY%*18+CX%  (but% &500)<>0 * Wpt%!60<>0 togch(Wpt%!60-32,Wxh%) ; CH%<224 togch(CH%,Wxh%):Wpt%!60=CH%+32 Wpt%!60=0   CH%>=224 &9 (but% 5)<>0 CH%+32 =Wpt%!60 openechr(CH%+32) 0< (but% &50)<>0 copydrag(3,CH%,Wpt%+192+(CH% << 2)) : D$ charchanged(char%,font%,not%) N DMI%,DMI2%,T% X"DMI%=(!font% &FF000000)+&170 b T%=0 maxW l2 WHint%(T%)=DMI% updmast(char%,WHext%(T%)) v .DMI%=(!font% &FF000000)+(char%<<16)+&E00  T%=0 maxW 7 (WHint%(T%) &FFFFFF02)=DMI% PTwin%(T%)<>not% Wxh%=WHext%(T%) Wih%=WHint%(T%) Wpt%=PTwin%(T%) udedit(4,-984,984,-96)     togch(CH%,W%) X%,Y% X%=CH% 18: Y%=CH% 18 X%=4+X%*68: Y%=(-96)-Y%*68 6!b%=W%: b%!4=X%: b%!8=Y%-68: b%!12=X%+68: b%!16=Y% ș UpdateW,0,b% more% ȕ more% * 3,`ec 4-ȓ Ȑ b%!28,b%!32,b%!36-b%!28,b%!40-b%!32 >ș GetR,0,b% more% H R `wf \ f openfont(fhand%,fname$) p M%,N%,I%,J% z M%=1:I%=1 $ȕ (fontmap% M%)<>0 I%<=maxF I%=I%+1: M%=M%<<1  $ I%>maxF 1,"Too many fonts" copyw(masf%)  J%=4 15 8 b%!J%-=(I%-1)<<8  N%=getvec(84)  N%=0 ?N%=13 b%!236=N% b%!240=-1  b%!244=83 make((I%<<24)+&170,1988,0) Wpt%!12=16 $" I%=16 1979 4:Wpt%!I%=0: .Wpt%!8=Wpt% 8Wpt%!16=N% BWpt%!24=750 LWpt%!28=250 VWpt%!32=-200 `Wpt%!36=450 jWpt%!40=700 tWpt%!1984=-125 ~fontmap%+=M% finished%= & fhand%<>0 read(fhand%,fname$)   updmast(char%,W%)  X%,Y% *X%=(char%-32) 18: Y%=(char%-32) 18 X%=4+X%*68: Y%=(-96)-Y%*68 $ș Screen,W%,X%+2,Y%-64,X%+68,Y%   drawmast(clr%) / LX%,RX%,BY%,TY%,lx%,rx%,ly%,ty%,I%,J%,CH%  ȕ more%  clr%   ry0%<-95  `gd 7LX%=(rx0%-4) 68: LX%<0 LX%=0 LX%>17 LX%=17 (8RX%=(rx1%-12) 68: RX%<0 RX%=0 RX%>17 RX%=17 2:BY%=(-104-ry0%) 68: BY%<0 BY%=0 BY%>12 BY%=12 <9TY%=(-96-ry1%) 68: TY%<0 TY%=0 TY%>12 TY%=12 F&lx%=bx%+4+LX%*68: rx%=bx%+4+RX%*68 P(ly%=by%-96-68*BY%: ty%=by%-96-68*TY% Z Q%=lx% rx%+68 68 d Q%,ly%-68: Q%,ty% n Q% x Q%=ly%-68 ty% 68  lx%,Q%: rx%+68,Q%  Q%   ry0%<-99  `wf  I%=TY% BY%  J%=LX% RX% CH%=I%*18+J%  CH%<224 Q%=Wpt%!(192+(CH%<<2))  Q%=0 " bx%+4+J%*68+4,by%-96-68*I%-8 Ȏ CH%+32  32: "sp";  127: "del"; : CH%+32 " , 61drawch(Q%,bx%+4+J%*68+34,by%-96-68*I%-34,-1) @ J CH%+32=Wpt%!60 T 3,`ec ^)ȓ Ȑ bx%+J%*68+4,by%-I%*68-164,66,64 h `wf r |    ș GetR,0,b% more% info(b%+4)    opendisk  DMI%,I%,X%,Y%  DMI%=(Wih% &FF000000)+&408 : I%=0 maxW: WHint%(I%)=DMI% front(WHext%(I%)):  copyw(dskw%) X%=getvec(84)  X%=0  ?X%=13 &! Wpt%!44<>0 $X%=$(Wpt%!44) 0 b%!172=X% : b%!176=-1 D b%!180=83 Nposnwindow X I%=Wpt% bmake(DMI%,16,Wpt%) lWpt%!12=X% vș SetC,Wxh%,2,0,0,-1,0   mdisk(but%,icon%,X%,Y%)  but%=0  !b%=Wxh% ș GetW,0,b% info(b%+4) Ȏ icon%  0: diskload(but%) * 1: Wpt%!12=0 1,"Null filename" #save($(Wpt%!12),Wpt%!8,Wih%,) : front(Wxh%)    diskload(but%)   T%  (but% 2)=2  T%=Wpt%!8 *closeI(Wih%,) 4opendir(T%) > H R (but% 5)<>0 \% Wpt%!12=0 1,"Null filename" f#load($(Wpt%!12),Wpt%,Wpt%!8,) p z  updfname  I%,IH% IH%=Wih% &FF000000  I%=0 maxW $ (WHint%(I%) &FF000000)=IH%  Ȏ (WHint%(I%) &FF00)>>8  13: epenun(I%)  14: editun(I%)  17: italun(I%)      openpen  DMI%,I%,X%,Y%,Z%  DMI%=(Wih% &FF000000)+&B20 $: I%=0 maxW: WHint%(I%)=DMI% front(WHext%(I%)): . 8copyw(spmn%) B$(b%+72)="Pen menu" Lmake(DMI%,12,Wpt%!8) V ` drawpenm(clg%) j1 CURP%,CX%,CY%,LX%,RX%,TY%,BY%,I%,J%,PN%,LB% tLB%=Wpt%!8+64 ~ ȕ more%  clg% 5LX%=(rx0%-2) 66: LX%<0 LX%=0 LX%>3 LX%=3 5RX%=(rx1%-2) 66: RX%<0 RX%=0 RX%>3 RX%=3 6BY%=(-4-ry0%) 68: BY%<0 BY%=0 BY%>3 BY%=3 6TY%=(-4-ry1%) 68: TY%<0 TY%=0 TY%>3 TY%=3  I%=TY% BY%  J%=LX% RX%  `wf PN%=(I%<<2)+J% :drawpen(LB%!(PN%<<2),bx%+2+J%*66+32,by%-4-68*I%-32,4)   ș GetR,0,b% more%  info(b%+4)   `wf ( 2 updpenm(pen%,W%) < X%,Y% F%X%=(pen%-1) 3: Y%=(pen%-1) >> 2 PX%=4+X%*66: Y%=(-8)-Y%*68 Z"ș Screen,W%,X%,Y%-56,X%+60,Y% d n drawpen(L%,X%,Y%,S) x PN%  L%=0  L%!4=0 PN%=117 PN%=205  X%+L%!20/S+1, Y%+L%!24/S+2  X%+L%!28/S+1, Y%+L%!32/S+2 % PN%, X%+L%!36/S+1, Y%+L%!40/S+2   mpenm(icon%,but%)  ppt%,P1%,P2%,T%  but%=0 icon%<0  !b%=Wxh% ș GetW,0,b% info(b%+4) ppt%=Wpt%!8 ' (but% &4)<>0 openepen(icon%+1) = (but% &40)<>0 copydrag(1,icon%,ppt%+64+(icon% << 2))  " copypen(P1%,P2%,ppt%) , T% 6 !P1%=0 @ !P2%<>0 Jfreevec(!!P2%) Tfreevec(!P2%) ^ !P2%=0 h ppt%!48=1 r |  !P2%=0 !P2%=getvec(60)  !P2%=0  !!P2%=0   T%=4 59 4 !(!P2%+T%)=!(!P1%+T%)   !!P1%=0 ( !!P2%<>0 freevec(!!P2%):!!P2%=0  asstring(!P2%,$(!!P1%))   ppt%!48=1   & penchanged(pen%,font%) 0 DMI%,T% :"DMI%=(!font% &FF000000)+&B20 D T%=0 maxW N1 WHint%(T%)=DMI% updpenm(pen%,WHext%(T%)) X b"DMI%=(!font% &FF000000)+&E00 l T%=0 maxW v% (WHint%(T%) &FF00FF01)=DMI% Wxh%=WHext%(T%) Wih%=WHint%(T%) Wpt%=PTwin%(T%) udedit(4,-984,984,-96)     openepen(pen%)  DMI%,I%,X%,Y%,Z% +DMI%=(Wih% &FF000000)+&D00+(pen%<<16) : I%=0 maxW: WHint%(I%)=DMI% front(WHext%(I%)):  copyw(epen%) I%=getvec(84)   I%=0  ?I%=13  b%!204=I% * b%!208=-1 4 b%!212=83 >make(DMI%,64,Wpt%!8) HX%=Wpt%!8+60+(pen%<<2) RWpt%!12=I% \ !X%=0 f Wpt%!16=0 pWpt%!20=126 zWpt%!24=126  Wpt%!28=0 calcpen(Wpt%+12)   X%=!X%  !X%<>0 $I%=$(!X%) - Y%=4 43 4: Wpt%!(Y%+12)=X%!Y%: Y%  tidypen(Wpt%)   drawepen(clg%)  @%  ȕ more%  *FX19  clg% G rx1%>208 ry0%<-96 drawpen(Wpt%+12,bx%+Wpt%!56,by%-Wpt%!60,1)  ry1%>-90 $)drawname("Font: ",Wpt%!8+16,218,-20) . 8 rx0%<164 ry0%<-96 B ry0%<-96 ry1%>-196 L bx%+20,by%-106: "x size"; V @%=&20305 `* bx%+20,by%-154: Wpt%!20/1000;" em"; j t ry0%<-192 ry1%>-292 ~ bx%+20,by%-202: "y size";  @%=&20305 * bx%+20,by%-250: Wpt%!24/1000;" em";   ry0%<-288 ry1%>-388 " bx%+20,by%-298: "rotation";  @%=&20207 ( bx%+20,by%-346: Wpt%!28/100;&A0;   ș GetR,0,b% more% info(b%+4)     epenun(I%) 5Wxh%=WHext%(I%): Wih%=WHint%(I%): Wpt%=PTwin%(I%) 7!b%=Wxh%: b%!4=208: b%!8=-44: b%!12=1228: b%!16=-10 (ș UpdateW,0,b% more% 2info(b%+4) <drawepen() F P epenup Z7!b%=Wxh%: b%!4=208: b%!8=-984: b%!12=984: b%!16=-96 dș UpdateW,0,b% more% ninfo(b%+4) xdrawepen()   mepen(but%,icon%)  PT%,O%,T%,ic%  but%<2  !b%=Wxh% ș GetW,0,b% info(b%+4) O%=0  ic%=icon% Ȏ icon%  0: showpen  1: Wpt%!16<>0  Wpt%!16=0 calcpen(Wpt%+12) tidypen(Wpt%)  epenup " , 2: Wpt%!16=0 6Wpt%!16=&FF @calcpen(Wpt%+12) Jtidypen(Wpt%) T epenup ^ h 4: PT%=20: O%=1: T%=-150 r 5: PT%=20: O%=-1: T%=-150 | 6: PT%=24: O%=1: T%=-246  7: PT%=24: O%=-1: T%=-246  8: PT%=28: O%=10: T%=-342  9: PT%=28: O%=-10:T%=-342 : front(Wxh%)   O%<>0 $ -ltime%>25 linc%=1:ltzer%= Wpt%!PT%=Wpt%!PT%+O%*linc%  PT%<28  Wpt%!PT%<1 Wpt%!PT%=1 # Wpt%!PT%>1000 Wpt%!PT%=1000  9 (Wpt%!28)>18000 Wpt%!28=Wpt%!28-36000*(Wpt%!28)   -ltzer%>200 linc%=10  -ltzer%>1000 linc%=100 &calcpen(Wpt%+12) 0tidypen(Wpt%) : epenup D6!b%=Wxh%: b%!4=16: b%!8=T%-40: b%!12=160: b%!16=T% Nș UpdateW,0,b% more% Xinfo(b%+4) bdrawepen() l ltime%= v   showpen  J%,L% #L%=Wpt%!8+60+((Wih%>>14) &7C) & !L%=0 !L%=getvec(60):!(!L%)=0  !L%<>0  L%=!L%  J%=4 43 4 L%!J%=Wpt%!(12+J%)  |(L%+44)=(L%!16/100) |(L%+52)=(L%!16/100) !(Wpt%!8+48)=1 + Wpt%!12<>0 asstring(L%,$(Wpt%!12))  (penchanged((Wih%>>16) &1F,Wpt%!8)    * calcpen(B%) 4 SN,CS,X%,Y%,X,Y,MY >SN=(B%!16/100) HCS=(SN)/2:SN=(SN)/2 R B%!4=0 \X=B%!8*CS:Y=B%!12*SN fB%!20=Y-X+0.5 pB%!28=0.5-(X+Y) zB%!36=X-Y+0.5 X=B%!8*SN:Y=B%!12*CS B%!24=X+Y+0.5 B%!32=X-Y+0.5 B%!40=0.5-(X+Y)  B%!20=0: B%!24=0: B%!32=0 Y%=B%!12: X%=B%!8 Y=Y%*CS: X=X%*SN MY=(Y*Y+X*X) B%!28=(X%*Y%)/(MY*4)+0.5 $B%!36=(Y%*Y%-X%*X%)*CS*SN/MY+0.5 B%!40=MY+0.5    tidypen(P%)  BBX%, BBY% $BBX%=(P%!32) .# (P%!40)>BBX% BBX%=(P%!40) 8# (P%!48)>BBX% BBX%=(P%!48) BBBY%=(P%!36) L# (P%!44)>BBY% BBY%=(P%!44) V# (P%!52)>BBY% BBY%=(P%!52) `P%!56=BBX%+268 jP%!60=BBY%+160 t ~ openserif  DMI%,I%,X%,Y%,Z%  DMI%=(Wih% &FF000000)+&C60 : I%=0 maxW: WHint%(I%)=DMI% front(WHext%(I%)):  copyw(spmn%)  b%!4+=316 b%!12+=316 $(b%+72)="Serif menu" make(DMI%,12,Wpt%!8)   updserm(serif%,W%)  X%,Y% )X%=(serif%-1) 3: Y%=(serif%-1) >> 2  X%=4+X%*66: Y%=(-8)-Y%*68 "ș Screen,W%,X%,Y%-56,X%+60,Y%  ( drawserm(clg%) 2. CURS%,CX%,CY%,LX%,RX%,BY%,TY%,SN%,SB%,T% <SB%=Wpt%!8 F SB%+=128 P ȕ more% Z `wf d clg% n5LX%=(rx0%-2) 66: LX%<0 LX%=0 LX%>3 LX%=3 x5RX%=(rx1%-2) 66: RX%<0 RX%=0 RX%>3 RX%=3 6BY%=(-4-ry0%) 68: BY%<0 BY%=0 BY%>3 BY%=3 6TY%=(-4-ry1%) 68: TY%<0 TY%=0 TY%>3 TY%=3  I%=TY% BY%  J%=LX% RX%  `wf SN%=(I%<<2)+J% T%=SB%!(SN%<<2) 9 T%<>0 drawch(T%,bx%+2+J%*66+32,by%-4-68*I%-32,0)   ș GetR,0,b% more% info(b%+4)   `wf   mserm(icon%,but%) " ppt%,P1%,P2%,T% , but%=0 icon%<0 6 !b%=Wxh% @ș GetW,0,b% Jinfo(b%+4) Tppt%=Wpt%!8 ^& (but% 4)<>0 openeser(icon%+1) h> (but% &40)<>0 copydrag(2,icon%,ppt%+128+(icon% << 2)) r | copydrag(A%,B%,C%)  X%,Y%  Ȏ A% " 1,2: X%=B% 3: Y%=B% >> 2 "X%=bx%+4+X%*66: Y%=by%-8-Y%*68 # 3: X%=B% 18: Y%=B% 18 #X%=bx%+4+X%*68: Y%=by%-96-Y%*68   drag1%=A%  drag2%=C% ,drag(5,X%,Y%-68,X%+66,Y%,0,0,1279,1023) draguser%=6   overcopy(lx%,ly%,rx%,ty%)  CX%,CY%,N%,T%,DMI% ș GetP,0,b% cnvint(b%!12) & !b%=Wxh% 0ș GetW,0,b% :info(b%+4) DCX%=(lx%+rx%)>>1 NCY%=(ly%+ty%)>>1 XȎ drag1% b 1 l (Wih% &FF00)<>&B00 v-N%=(CX%-4-bx%) 66+((by%-8-CY%) 68<<2) +DMI%=(Wih% &FF000000)+(N%+1<<16)+&D00  T%=0 maxW ' (WHint%(T%) &FFFFFF00)=DMI%  T%=Wpt%!8 DMI%=T%+64+(N%<<2)  DMI%=drag2% copypen(drag2%,DMI%,T%) penchanged(N%+1,T%)  2  (Wih% &FF00)<>&C00 -N%=(CX%-4-bx%) 66+((by%-8-CY%) 68<<2) +DMI%=(Wih% &FF000000)+(N%+1<<16)+&E02 ! T%=0 maxW ! ' (WHint%(T%) &FFFFFF02)=DMI% ! ! T%=Wpt%!8 !*DMI%=T%+128+(N%<<2) !4 DMI%=drag2% !>!copychar(drag2%,DMI%,T%,0,0) !Hserifchanged(N%+1,T%,0) !R 3 !\ (Wih% &FF00)<>&100 !f.N%=(CX%-4-bx%) 68+((by%-96-CY%) 68)*18 !p,DMI%=(Wih% &FF000000)+(N%+32<<16)+&E00 !z T%=0 maxW !' (WHint%(T%) &FFFFFF02)=DMI% ! ! T%=Wpt%!8 !DMI%=T%+192+(N%<<2) ! DMI%=drag2% !!copychar(drag2%,DMI%,T%,0,0) !DMI%!896=drag2%!896 !charchanged(N%+32,T%,0) ! ! !& serifchanged(serif%,font%,not%) ! DMI%,DMI2%,T%,U% !"DMI%=(!font% &FF000000)+&C60 " T%=0 maxW "3 WHint%(T%)=DMI% updserm(serif%,WHext%(T%)) " "$"DMI%=(!font% &FF000000)+&E00 ".DMI2%=DMI%+(serif%<<16)+2 "8 T%=0 maxW "BF (WHint%(T%) &FF00FF02)=DMI% (WHint%(T%) &FFFFFF02)=DMI2% "L PTwin%(T%)<>not% "VWxh%=WHext%(T%) "`Wih%=WHint%(T%) "jWpt%=PTwin%(T%) "tudedit(4,-984,984,-96) "~ " " " T%=192 1084 4 " font%!T%<>0 "U%=font%!T% " U%?(19+serif%)<>0 "&updmast(((T%-192)>>2)+32,font%!4) " " " " " copychar(F%,T%,pt%,X%,Y%) #copychar2(F%,T%,X%,Y%) # pt%!48=1 # # copychar2(F%,T%,X%,Y%) #( I%,P%,R%,Q% #2 !F%=0 #< !T%=0 #Ffreechar(!T%) #P !T%=0 #Z #dfreechar(!T%) #n!T%=getvec(56) #x !T%=0 # I%=4 36 4 #!(!T%+I%)=!(!F%+I%) # # !!T%=0 #& !!F%<>0 asstring(!T%,$(!!F%)) #8lx0%=100000: lx1%=-100000: ly0%=100000: ly1%=-100000 #P%=!(!F%+36): R%=!T%+36 # ȕ P%<>0 # (P%!4 63)<7 #!R%=getvec(60) # !R%=0 #!(!R%+4)=P%!4 63 # I%=8 39 8 $ Q%=!R%+I% $!Q%=P%!I%-X% $Q%!4=P%!(I%+4)-Y% $" !Q%>lx1% lx1%=!Q% $, !Q%ly1% ly1%=Q%!4 $@ Q%!4DMI%: I%+=1: % I%) (DMI% 1)=1 b%!0+=504: b%!8+=504 &H$(b%+72)=T$ &R$(b%+140)=I1$ &\$(b%+172)=I2$ &f"S=1200: (DMI% 2)=2 S=500 &pS=S/(b%!12-b%!4-96) &zmake(DMI%,44,Wpt%!8) &|(Wpt%+24)=S & Wpt%!40=0 & I%Wih%: I%+=1: '.WHext%(I%)=-1 '8WHint%(I%)=0 'BPTwin%(I%)=0 'L 'V '`Wpt%!12=I% 'j K%=0 48 4:I%!K%=0: 't !I%=J% '~ I%!20=0 'I%!28=pos% 'copychar2(pos%,I%+20,0,0) ' K%=I%!20 ' !pos%<>0 ' K%=0 closeI(Wih%,): ' !K%<>0 '$(!I%)=$(!K%) 'freevec(!K%) ' !K%=0 ' ' J%=K% '# (Wih% 2)=0 I%!12=pos%!896 ( ( J%=getvec(56) ( J%=0 closeI(Wih%,): ( I%!20=J% (( K%=0 52 4:J%!K%=0: (2 (Wih% 2)=0 I%!12=1000 (< (F K%=Wpt%!8 (P (DMI% 2)=0 (Z'addsline(J%,8,K%!1984,0,K%!1984,0) (d3addsline(J%,8,K%!1984+I%!12,0,K%!1984+I%!12,0) (naddsline(J%,9,0,0,0,0) (x$addsline(J%,10,0,K%!24,0,K%!24) (.addsline(J%,11,0,K%!24-1000,0,K%!24-1000) ($addsline(J%,12,0,K%!28,0,K%!28) ($addsline(J%,13,0,K%!32,0,K%!32) ($addsline(J%,14,0,K%!36,0,K%!36) ($addsline(J%,15,0,K%!40,0,K%!40) ( (addsline(J%,7,0,0,0,-125) ( ( (DMI% 2)=0 (addpoint(I%,0,0,4,0) (addpoint(I%,I%!12,0,6,0) ( ( L%=J%!36 ) ȕ L%<>0 ) L%!4<8 )!addpoint(I%,L%!8,L%!12,0,L%) )""addpoint(I%,L%!32,L%!36,0,L%) ), )6 L%!4=8 )@1 L%!8=K%!1984 addpoint(I%,L%!8,-64,10,L%) )J )T!addpoint(I%,-125,L%!12,8,L%) )^ )h )r L%=!L% )| ) ) !b%=Wxh% )ș GetW,0,b% )centreedit(I%,b%+4) ) ) refchanged(font%,not%) )! DMI%,T%,U%,V%,W%,X%,Y%,Z%,S )"DMI%=(!font% &FF000000)+&E00 ) T%=0 maxW )8 (WHint%(T%) &FF00FF02)=DMI% PTwin%(T%)<>not% )Wpt%=PTwin%(T%) ) V%=Wpt%!8 )X%=Wpt%!12 * U%=X%!16 *Z%=1 * ȕ U%<>0 *& (U%!20 14)=8 *0 W%=U%!24 *:Ȏ W%!4 15 *D 9: Y%=0 *N 10: Y%=V%!24 *X 11: Y%=V%!24-1000 *b. 12,13,14,15: Y%=V%!(((W%!4 15)<<2)-20) *l *vY%=Y%+X%!8 *'REF%(Z%,0)=U%: REF%(Z%,1)=Y%: Z%+=1 *W%!12=Y%: W%!36=Y% * * U%=!U% * * ȕ Z%<>1 * Z%-=1 *!(REF%(Z%,0)+16)=REF%(Z%,1) *resortpt(X%,REF%(Z%,0)) * *Wxh%=WHext%(T%) *Wih%=WHint%(T%) *S=|(Wpt%+24) + !b%=Wxh% + ș GetW,0,b% +centreedit(Wpt%!12,b%+4) + udedit(4,-984,984,-96) +* +4 +> +H vrefchanged(font%,not%) +R DMI%,T%,U%,V%,W%,X%,Y% +\"DMI%=(!font% &FF000000)+&E00 +f T%=0 maxW +p8 (WHint%(T%) &FF00FF03)=DMI% PTwin%(T%)<>not% +zWpt%=PTwin%(T%) + V%=Wpt%!8 +X%=Wpt%!12 +Y%=V%!1984+X%!4 + U%=X%!16 + ȕ U%<>0 + (U%!20 14)=10 + U%!12=Y% +resortpt(X%,U%) + W%=U% +U%=0 + + U%=!U% + , ,U%=!(X%!20+36) , ȕ U%<>0 ,$ (U%!4 15)=8 ,.$ U%=W%!24 V%=Y% V%=Y%+X%!12 ,8U%!8=V%: U%!32=V% ,B ,L U%=!U% ,V ,`Wxh%=WHext%(T%) ,jWih%=WHint%(T%) ,tudedit(4,-984,984,-96) ,~ , , , drawedit(clg%) , @%,BP%,S,GP,lx ,BP%=Wpt%!12 ,S=|(Wpt%+24) , GP=125/S , ȕ more% , clg% , ry1%>-90 ,)drawname("Font: ",Wpt%!8+16,218,-20) , - ry0%<-95 - `gd -sx0%=(rx0%-Wpt%!16)*S-125 -sx1%=(rx1%-Wpt%!16)*S+125 -(sy0%=(ry0%-Wpt%!20)*S-125 -2sy1%=(ry1%-Wpt%!20)*S+125 --96 ly%=-96 -dly%=ly%+by% -n Q%=-1 n% -x lx,ly%: lx,y0% - lx+=GP - Q% -#lx=((-96-ry1%)/GP): lx<0 lx=0 -lx=by%-94-lx*GP -n%=(ry1%-ry0%)/GP -ly%=rx0%: ly%<4 ly%=4 -ly%=ly%+bx% - Q%=-1 n% - ly%,lx: x1%,lx - lx-=GP - Q% - (Wih% 1)=0 -,drawfull(BP%,S,bx%+Wpt%!16,by%+Wpt%!20) . .,drawskel(BP%,S,bx%+Wpt%!16,by%+Wpt%!20) . ." .,ș GetR,0,b% more% .6info(b%+4) .@ .J .T editun(I%) .^5Wxh%=WHext%(I%): Wih%=WHint%(I%): Wpt%=PTwin%(I%) .hudedit(208,-44,1228,-10) .r .| updpnt(P%,C%) . updedt . ȕ more% . C% .?ȏ Ȑ bx%+Wpt%!16+(P%!12/S)+1.5,by%+Wpt%!20+(P%!16/S)+2.5,8 .ș GetR,0,b% more% . .P%!20=P%!20 sl% . . updlns(P%,C%) . X%,Y% .X%=Wpt%!16+bx% .Y%=Wpt%!20+by% .BPT%=Wpt%!8 / updedt / ȕ more% / C% /&plotskeline(P%) /0ș GetR,0,b% more% /:info(b%+4) /D /N /X updlnf(P%,C%) /b X%,Y%,PP% /lX%=Wpt%!16+bx% /vY%=Wpt%!20+by% /BPT%=Wpt%!8 /PP%=BPT%!((T%!40<<2)+60) / T%!40=0 PP%=0 / updedt / ȕ more% / C% /5 PP%=0 plotskeline(P%) plotfulline(P%,PP%) /ș GetR,0,b% more% /info(b%+4) / / / edfront /ș GetW,0,b% 0= (b%!32 &20000)<>0 0 updedt 05!b%=Wxh%: b%!4=4: b%!8=-984: b%!12=984: b%!16=-96 0 ș UpdateW,0,b% more% 0*info(b%+4) 04 0> udedit(A%,B%,C%,D%) 0H2!b%=Wxh%: b%!4=A%: b%!8=B%: b%!12=C%: b%!16=D% 0Rș UpdateW,0,b% more% 0\info(b%+4) 0fdrawedit() 0p 0z centreedit(I%,p%) 0 T% 0bound(I%!20) 0 I%!4lx1% lx1%=I%!4 0 I%!8ly1% ly1%=I%!8 0 I%!12lx1% lx1%=I%!12 0#T%=(p%!8-!p%-128)-(lx1%-lx0%)/S 0Wpt%!16=64-lx0%/S 0 T%>0 Wpt%!16+=T%>>1 0%T%=(p%!12-p%!4-136)-(ly1%-ly0%)/S 0Wpt%!20=-116-ly1%/S 1 T%>0 Wpt%!20-=T%>>1 1Wpt%!32=p%!12-p%!4 1Wpt%!36=p%!8-!p% 1$ 1. kedit(key%) 18 key%<>13 1B DMI%,X% 1LDMI%=Wih% 1 1V X%=0 maxW 1` WHint%(X%)=DMI% 1j!b%=WHext%(X%) 1t b%!4=3 1~ b%!8=0 1 b%!12=0 1ș SetI,0,b% 1 1 1 1 medit(but%,icon%,x%,y%) 1 PT%,O%,T%,ic%,Ipt%,S 1 but%=0 1 !b%=Wxh% 1ș GetW,0,b% 1info(b%+4) 1O%=0 2S=|(Wpt%+24) 2 Ipt%=Wpt%!12 2Ȏ icon% 2 0: showchar(Wih%,Wpt%!12) 2( 1 22* (Wih% 1)=0 openpen openserif 2< 2 2F+openedit((Wih% &FF00FF) 1,Ipt%!28) 2P 4 2Z edfront front(Wxh%) 2d edit 2n: front(Wxh%) 2x 2 2 edit 2 mx%,my%,d%,T%,sl% 2d%=S*12+0.5 2mx%=(x%-bx%-Wpt%!16)*S+0.5 2my%=(y%-by%-Wpt%!20)*S+0.5 2$sl%=64: (Wih% 1)=0 sl%=128 2* (Wih% 1)=1 editskel editfull 2 2 editskel 2 MP%,ML%,T%,LP% 2MP%=matchpoint 2ML%=matchline 3 MP%<>0 (but% &10)<>0 3LP%=MP%!24 3. (MP%!20 62)=8 dragref(LP%!4 15): 3" 3,' LP%<>0 (LP%!4 15)>7 LP%=0 36' ML%<>0 (ML%!4 15)>7 ML%=0 3@( MP%<>0 (MP%!20 14)>2 MP%=0 3J (but% &40)<>0 3T MP%=0 3^createline(mx%,my%) 3h 3rcreateline(MP%!12,MP%!16) 3| 3 3 (but% 2)<>0 3 T%=ML% 3 MP%<>0 T%=MP%!24 3openlinm(Ipt%,T%,3,MP%) 3 3 (but% 1)<>0 3 T%=ML% 3 MP%<>0 3 ML%<>MP%!24 T%=MP%!24 3 3 T%<>0 T%<>Ipt%!44 3 Ipt%!44<>0 4kilsell(Ipt%,44) 4 4Ipt%!44=T% 4& T%!4+=64 40updlns(T%,`sl) 4:makectl(Ipt%,T%) 4D (T%!4 63)<>7 4Nupdpnt(lastpoint%,`pt) 4Xupdpnt(lastpoint2%,`pt) 4b 4l.updpnt(findpt(Ipt%,0,T%!8,T%!12,T%),`pt) 4v/updpnt(findpt(Ipt%,0,T%!32,T%!36,T%),`pt) 4 4MP%=matchpoint 4 MP%<>0 MP%<>Ipt%!48 4 (MP%!20 30)=2 4 Ipt%!48<>0 4!(Ipt%!48+20)-=1 4updpnt(Ipt%!48,`pt) 4 4Ipt%!48=MP% 4 MP%!20+=1 4updpnt(MP%,`sp) 4 4 5 5 (but% &10)<>0 MP%<>0 5LP%=MP%!24 5  (MP%!20 30)=0 5*. (LP%!4 1)=1 dragsline dragspline 54 5> (MP%!20 30)=2 5H (LP%!4 1)=1 LP%!4-=1 5Rdragspline 5\ 5f 5p 5z 5 editfull 5 MP%,ML%,BP%,CP%,LP%,T% 5MP%=matchpoint 5ML%=matchline 5BP%=Wpt%!8 5 MP%<>0 (but% &50)<>0 5) (MP%!20 30)=4 (MP%!20 30)=6 5dragrpt(MP%!20 30) 5 5 5 (MP%!20 30)=10 5 dragvref 5 6 6 6' ML%<>0 (ML%!4 15)>7 ML%=0 6$( MP%<>0 (MP%!20 14)>2 MP%=0 6. (but% 4)<>0 ML%<>0 68CP%=Ipt%!20+3 6BBP%=Wpt%!8 6L ML%!40<>0 6VCP%?(ML%!40)-=1 6` ML%!40=0 6j 6t BP%!52<>0 6~CP%?(BP%!52)+=1 6ML%!40=BP%!52 6 6rdline(ML%) 6 6 (but% 2)<>0 MP%<>0 6LP%=MP%!24 6 (MP%!20 30)=0 6CP%=LP%+44 6, MP%!12=LP%!32 MP%!16=LP%!36 CP%+=4 6openpens(MP%!24,CP%,Ipt%) 6 6 7 (but% 1)<>0 ML%<>0 7 % ML%<>Ipt%!24 (ML%!4 63)<7 7 T%=ML% 7 Ipt%!24<>0 7(kilsell(Ipt%,24) 72 7<Ipt%!24=ML% 7FML%!4+=128 7Pupdlnf(ML%,`sl) 7Z1updpnt(findpt(Ipt%,0,ML%!8,ML%!12,ML%),`pt) 7d2updpnt(findpt(Ipt%,0,ML%!32,ML%!36,ML%),`pt) 7n 7x 7 7 makectl(Ipt%,T%) 7 A%,B% 7 (T%!4 1)=1 7!A%=T%!32-T%!8: B%=T%!36-T%!12 7T%!16=A% 3+T%!8 7T%!20=B% 3+T%!12 7T%!24=2*A% 3+T%!8 7T%!28=2*B% 3+T%!12 7 7 (T%!4 63)<>7 7%addpoint(Ipt%,T%!16,T%!20,66,T%) 7lastpoint2%=lastpoint% 8%addpoint(Ipt%,T%!24,T%!28,66,T%) 8 8 8" kilsell(T%,U%) 8, P%,G% 86 P%=T%!U% 8@ T%!U%=0 8J U%=44 P%<>0 8T T%!48<>0 8^!(T%!48+20)-=1 8h T%!48=0 8r 8| 8 P%=0 8P%!4=P%!4 sl% 8 (P%!4 31)<>7 sl%=64 8!delpt(Ipt%,2,P%!16,P%!20,P%) 8!delpt(Ipt%,2,P%!24,P%!28,P%) 8 8rdline(P%) 8 8 rdline(P%) 8 PTS%,X%,B%,Y% 8boundL(P%) 8 B%=Wpt%!8 8 Y%=8+P% 9 X%=52 56 4 9 P%!X%<>0 9PTS%=B%!((P%!X%<<2)+124) 9& PTS%<>0 90) PTS%!40+!Y%lx1% lx1%=PTS%!48+!Y% 9D+ PTS%!44+Y%!4ly1% ly1%=PTS%!52+Y%!4 9X 9b 9l Y%=32+P% 9v 9 rdline2 9 9 rdline2 9 G% 9(G%=16*S+0.5: (Wih% 1)=0 G%=125 9bș Screen,Wxh%,(lx0%-G%)/S+Wpt%!16,(ly0%-G%)/S+Wpt%!20,(lx1%+G%)/S+Wpt%!16,(ly1%+G%)/S+Wpt%!20 9 9 matchpoint 9 T%,U%,V%,W% 9T%=Ipt%!36 9W%=0 9 ȕ T%<>0 9U%=T%!12: V%=T%!16 : U%>mx%+d% =W% : ? U%>=mx%-d% V%>=my%-d% V%<=my%+d% (T%!20 sl%)<>0 :* W%=0 (!(T%!24+4) sl%)<>0 W%=T% :  :* T%=T%!4 :4 :>=W% :H matchline :R T%,K%,D%,X0%,X1%,Y0%,Y1% :\T%=!(Ipt%!20+36) :f ȕ T%<>0 :p*X0%=T%!8:Y0%=T%!12:X1%=T%!32:Y1%=T%!36 :zȎ T%!4 63 : 1,3,5,7 : X0%=X1% Y0%=Y1% := mx%>X0%-d% mx%Y0%-d% my%(K%-D%) : X0%>X1% Ȕ X0%,X1% : Y0%>Y1% Ȕ Y0%,Y1% ;A mx%+d%>=X0% mx%-d%<=X1% my%+d%>=Y0% my%-d%<=Y1% =T% ; ; ;$ 0,2,4 ;. matchbez =T% ;8 ;B T%=!T% ;L ;V=0 ;` showchar(H%,P%) ;j P%!20<>0 !(P%!20)=!P% ;t% (H% 2)=0 !(P%!28+896)=P%!12 ;~-copychar(P%+20, P%!28, Wpt%!8,P%!4,P%!8) ; P%!20<>0 !(P%!20)=0 ; (H% 2)=0 ;.charchanged((Wih%>>16) &FF,Wpt%!8,Wpt%) ; ;/serifchanged((Wih%>>16) &FF,Wpt%!8,Wpt%) ; ; ;' addsline(J%,TP%,SX%,SY%,EX%,EY%) ; T%,U% ;T%=getvec(60) ; T%=0 ; !T%=J%!36 < J%!36=T% <  U%=16 56 4:T%!U%=0: < T%!4=TP% < T%!8=SX% <( T%!12=SY% <2 T%!32=EX% << T%!36=EY% 0 = V%!12>=X% = V%=-V% = =" U%=V%+4 =, V%=V%!4 =6 =@ =J T%!4=-V% =T !U%=T% =^U%=I%+40: V%=I%!40 =h ȕ V%>0 =r V%!16>=Y% =| V%=-V% = = U%=V%+8 = V%=V%!8 = = = T%!8=-V% = !U%=T% = = resortpt(I%,P%) = U%,V% = U%=I%+36 = V%=!U% = ȕ V%>0 > V%<>P% > U%=V%+4 > V%=!U% >& >0 V%=-1 >: >D >N V%<0 >X !U%=P%!4 >b >l U%=I%+40 >v V%=!U% > ȕ V%>0 > V%<>P% > U%=V%+8 > V%=!U% > > V%=-1 > > > V%<0 > !U%=P%!8 > >sortpt(I%,P%,P%!12,P%!16) > ? findpt(I%,TP%,X%,Y%,P%) ?  T%,U%,V% ? T%=I%!36 ? ȕ T%>0 ?*U%=T%!12: V%=T%!16 ?4 U%>X% =0 ?>7 U%=X% V%=Y% T%!24=P% (T%!20 62)=TP% =T% ?H T%=T%!4 ?R ?\=T% ?f delpt(I%,TP%,X%,Y%,P%) ?p T%,U%,V%,W% ?zT%=I%!36:W%=I%+36-4 ? ȕ T%>0 ?U%=T%!12: V%=T%!16 ?3 U%=X% V%=Y% T%!24=P% (T%!20 62)=TP% ? T%=-T% ? ?W%=T%:T%=T%!4 ? ? ? T%=-T% ? T%=0 ? W%!4=T%!4 ? U%=I%+16 ?ȕ !U%<>T%: U%=!U%: @ !U%=!T% @ U%=I%+40 @ȕ !U%<>T%: U%=!U%+8: @$ !U%=T%!8 @.freevec(T%) @8 @B bound(PT%) @L T% @VPT%=PT%!36 @`8lx0%=100000: lx1%=-100000: ly0%=100000: ly1%=-100000 @j ȕ PT%<>0 @t T%=PT%+8 PT%+32 8 @~ !T%>lx1% lx1%=!T% @ !T%ly1% ly1%=T%!4 @ T%!4lx1% lx1%=!T% A !T%ly1% ly1%=T%!4 A T%!4lx1% lx1%=!T% AZ !T%ly1% ly1%=T%!4 An T%!40 B"!(Ipt%!48+20)-=1 B, Ipt%!48=0 B6 B@ LP%!4+=32 BJMP%!20+=16 BT (LP%!4 31)<>7 B^$delpt(Ipt%,2,LP%!16,LP%!20,LP%) Bh$delpt(Ipt%,2,LP%!24,LP%!28,LP%) Br B|rdline(LP%) B?linedrag(MP%,LP%,N%,MP%!12,MP%!16,LP%!(40-N%),LP%!(44-N%)) B B* linedrag(pc%,lc%,lo%,x%,y%,dx%,dy%) B A%,B% Bdrag1%=pc% Bdrag2%=lc% Bdrag3%=lo% Bdrag4%=bx%+Wpt%!16 Bdrag5%=by%+Wpt%!20 Bdrag6%=dx%/S+drag4%+1.5 Bdrag7%=dy%/S+drag5%+2.5 B drag0%= BdragA%=Ipt% CdragB%=Wpt% C drag1=S Cdraguser%=1 C&A%=x%/S+drag4%+1.5 C0B%=y%/S+drag5%+2.5 C:drag8%=A%: drag9%=B% CDdraged(7,A%,B%,A%,B%) CN CX overline Cb& S,X%,Y%,BPT%,Ipt%,mx%,my%,d%,sl% Cl drag0% Cv9!b%=dragB%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Cș UpdateW,0,b% more% C ȕ more% C 3,`sp Cȏ Ȑ drag8%,drag9%,8 C 3,`sl C# drag8%,drag9%: drag6%,drag7% Cș GetR,0,b% more% C C CFmx%=drag1%!12: my%=drag1%!16: d%=12*drag1+0.5: sl%=64: Ipt%=dragA% CX%=matchpoint C X%<>0 C (X%!20 14)=0 D$drag1%!12=X%!12: drag1%!16=X%!16 D 0drag2%!drag3%=X%!12: drag2%!(drag3%+4)=X%!16 D!drag8%=X%!12/drag1+drag4%+1.5 D !drag9%=X%!16/drag1+drag5%+2.5 D* D4 D>$drag1%!20=(drag1%!20 &EF) 64 DHdrag2%!4=drag2%!4 &DF DRresortpt(dragA%,drag1%) D\ (drag2%!4 63)=7 DfdragA%!4=drag2%!8 DpdragA%!8=drag2%!12 Dz Dmakectl(dragA%,drag2%) D DdragA%!32=1 DWpt%=dragB% DWih%=!Wpt% DWxh%=Wpt%!4 DBPT%=Wpt%!8 D S=drag1 DX%=drag4%: Y%=drag5% D5!b%=Wxh%: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Dș UpdateW,0,b% more% D ȕ more% D `sl Eplotskeline(drag2%) E `pt Eȏ Ȑ drag8%,drag9%,8 E$ȏ Ȑ drag6%,drag7%,8 E. (drag2%!4 63)<>7 E8Iȏ Ȑ lastpoint%!12/drag1+drag4%+1.5,lastpoint%!16/drag1+drag5%+2.5,8 EBKȏ Ȑ lastpoint2%!12/drag1+drag4%+1.5,lastpoint2%!16/drag1+drag5%+2.5,8 EL EVș GetR,0,b% more% E` Ej Et dragline(x%,y%) E~ A%,B% EA%=(x%-drag4%)*drag1+0.5 EB%=(y%-drag5%)*drag1+0.5 Edrag1%!12=A%: drag1%!16=B% E*drag2%!drag3%=A%: drag2%!(drag3%+4)=B% EA%=A%/drag1+drag4%+1.5 EB%=B%/drag1+drag5%+2.5 E9!b%=dragB%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Eș UpdateW,0,b% more% E ȕ more% E drag0% E 3,`sp Eȏ Ȑ drag8%,drag9%,8 F 3,`sl F # drag8%,drag9%: drag6%,drag7% F F 3,`sl F( A%,B%: drag6%,drag7% F2 3,`sp F<ȏ Ȑ A%,B%,8 FFș GetR,0,b% more% FP FZ drag8%=A% Fd drag9%=B% Fn drag0%= Fx F dragspline F N%,OT%,A%,B% F Ipt%!48<>0 F!(Ipt%!48+20)-=1 F Ipt%!48=0 F F N%=-1 F OT%=8 32 8 F2 MP%!12=LP%!OT% MP%!16=LP%!(OT%+4) N%=OT% F F LP%!4+=32 FMP%!20+=16 Frdline(LP%) Gdrag1%=MP% Gdrag2%=LP% G drag3%=N% G"drag4%=bx%+Wpt%!16 G,drag5%=by%+Wpt%!20 G6 drag0%= G@dragA%=Ipt% GJdragB%=Wpt% GT drag1=S G^draguser%=2 GhA%=MP%!12/S+drag4%+1.5 GrB%=MP%!16/S+drag5%+2.5 G|draged(7,A%,B%,A%,B%) G G overbez G) S,X%,Y%,U%,BPT%,Ipt%,mx%,my%,d%,sl% G drag0% G9!b%=dragB%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Gș UpdateW,0,b% more% G ȕ more% G 3,`sp Gȏ Ȑ drag8%,drag9%,8 G 3,`sl G unbez1 Gș GetR,0,b% more% G H HFmx%=drag1%!12: my%=drag1%!16: d%=12*drag1+0.5: sl%=64: Ipt%=dragA% HX%=matchpoint H&" X%<>0 (drag1%!20 14)=0 H0 (X%!20 14)=0 H:$drag1%!12=X%!12: drag1%!16=X%!16 HD0drag2%!drag3%=X%!12: drag2%!(drag3%+4)=X%!16 HN!drag8%=X%!12/drag1+drag4%+1.5 HX!drag9%=X%!16/drag1+drag5%+2.5 Hb Hl Hv$drag1%!20=(drag1%!20 &EF) 64 Hdrag2%!4=drag2%!4 &DF Hresortpt(dragA%,drag1%) HdragA%!32=1 HBPT%=dragB%!8 HWpt%=dragB% HWih%=!Wpt% HWxh%=Wpt%!4 H5!b%=Wxh%: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Hș UpdateW,0,b% more% H ȕ more% H 3,`sl H drag0% unbez1 H `sl IS=drag1:X%=drag4%:Y%=drag5% I plotskeline(drag2%) I `pt I ! U%=drag2%+8 drag2%+36 8 I*&ȏ Ȑ !U%/S+X%+1.5,U%!4/S+Y%+2.5,8 I4 I>ș GetR,0,b% more% IH IR I\ dragbez(x%,y%) If A%,B% IpA%=(x%-drag4%)*drag1+0.5 IzB%=(y%-drag5%)*drag1+0.5 Idrag1%!12=A%: drag1%!16=B% I*drag2%!drag3%=A%: drag2%!(drag3%+4)=B% IA%=A%/drag1+drag4%+1.5 IB%=B%/drag1+drag5%+2.5 I9!b%=dragB%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Iș UpdateW,0,b% more% I ȕ more% I 3,`sp I$ drag0% ȏ Ȑ drag8%,drag9%,8 Iȏ Ȑ A%,B%,8 I 3,`sl I drag0% unbez1 I%bez1(drag2%,drag1,drag4%,drag5%) Jș GetR,0,b% more% J J drag8%=A% J$ drag9%=B% J. drag0%= J8 JB dragref(RT%) JL A%,B%,C%,D%,G% JVA%=Ipt%!16 J` ȕ A%<>0 JjȎ (A%!20 14) Jt 4: StartP%=A% J~ 6: EndP%=A% J 8: B%=A%!24 JREF%((B%!4 15)-8,1)=A% JREF%((B%!4 15)-8,0)=B% J 10:Vhand%=A% J J A%=!A% J J Ȏ RT% J 9: A%=1 8 JREFP%(A%,1)=A% 8 J J 10,11 K*REFP%(1,1)=2:REFP%(2,1)=3:REFP%(3,1)=0 K  12,13,14,15 K!REFP%(1,1)=RT%-8:REFP%(2,1)=0 K K(B%=REF%(RT%-8,1) K2A%=1 K<ȕ REFP%(A%,1)<>0 KFC%=REFP%(A%,1) KP D%=REF%(C%,0): G%=REF%(C%,1) KZD%!4+=32: G%!20+=16 Kd) C%=1 StartP%!20+=16: EndP%!20+=16 Kn A%+=1 Kx KA%=1 Kȕ REFP%(A%,1)<>0 KC%=REF%(REFP%(A%,1),1) K#REFP%(A%,0)=(C%!16-B%!16)/S+2.5 K RT%<>9 KD%=C%!16/S+2.5+Wpt%!20 Kudedit(4,D%-16,984,D%+16) K K A%+=1 K K% RT%=9 udedit(4,-984,984,-96) K !b%=Wxh% Kș GetW,0,b% Linfo(b%+4) Ldrag5%=x0%: drag6%=x1% Ldrag1%=RT%-8 L"drag3%=B%!16/S+2.5 L,drag4%=drag3%+by%+Wpt%!20 L6drag7%=Wpt% L@drag8%=Wpt%!16 LJdrag9%=Wpt%!20 LTdragA%=Ipt% L^dragB%=by% Lh drag0%= Lr drag1=S L|draguser%=3 LC%=B%!12/S+bx%+drag8%+1.5 LD%=B%!16/S+by%+drag9%+2.5 LB%=min(y1%,by%-96) L%drag(7,C%,D%,C%,D%,C%,y0%,C%,B%) L L dragdash(x%,y%) L B%,C% L9!b%=drag7%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Lș UpdateW,0,b% more% L ȕ more% L 3,`dr LB%=1 Lȕ REFP%(B%,1)<>0 MC%=drag4%+REFP%(B%,0) M' drag0% drag5%,C%: 21,drag6%,C% MC%=y%+REFP%(B%,0) M& drag5%,C%: 21,drag6%,C% M0 B%+=1 M: MD 3,`sp MN" drag0% ȏ Ȑ drag2%,drag4%,8 MXȏ Ȑ x%,y%,8 Mbș GetR,0,b% more% Ml Mv drag4%=y%:drag2%=x%:drag0%= M M overdash M A%,B%,C%,D%,G% M9!b%=drag7%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Mș UpdateW,0,b% more% M ȕ more% M drag0% M 3,`dr MB%=1 Mȕ REFP%(B%,1)<>0 MC%=drag4%+REFP%(B%,0) M drag5%,C%: 21,drag6%,C% M B%+=1 N N 3,`sp Nȏ Ȑ drag2%,drag4%,8 N  N*ș GetR,0,b% more% N4 N>.B%=(drag4%-drag9%-dragB%-drag3%)*drag1+0.5 NHA%=drag7%!8 NR A%!48=1 N\Ȏ drag1% Nf 2,3: A%!24+=B% Np! 4,5,6,7: A%+=(drag1%<<2)+12 Nz !A%+=B% N NA%=1 NWpt%=drag7% NWih%=!Wpt% NWxh%=Wpt%!4 N S=drag1 Nȕ REFP%(A%,1)<>0 NC%=REFP%(A%,1) N1D%=REF%(C%,0): D%!12+=B%: D%!36+=B%: D%!4-=32 N'D%=REF%(C%,1): D%!16+=B%: D%!20-=16 Nresortpt(dragA%,D%) N C%=1 N0StartP%!16+=B%: StartP%!20-=16: dragA%!8+=B% Oresortpt(dragA%,StartP%) OEndP%!16+=B%: EndP%!20-=16 Oresortpt(dragA%,EndP%) O$Vhand%!16+=B% O.resortpt(dragA%,Vhand%) O8 OB A%+=1 OL OV !b%=Wxh% O`ș GetW,0,b% Ojcentreedit(dragA%,b%+4) Otudedit(4,-984,984,-96) O~< drag1%<>1 refchanged(drag7%!8,drag7%) dragA%!32=1 O O dragrpt(RT%) O A%,B%,C%,D%,G% OA%=Ipt%!16 O ȕ A%<>0 OȎ (A%!20 30) O 4: StartP%=A% O 6: EndP%=A% O 10: Vhand%=A% O O A%=!A% O PA%=!(Ipt%!20+36) P ȕ A%<>0 PȎ (A%!4 15) P1 8: A%=Vhand%!24 Vline1%=A% Vline2%=A% P( P2 A%=!A% P< PFEndP%!20+=16 PP drag6%=0 PZVline2%!4+=32 Pd RT%=4 Pn(StartP%!20+=16: drag6%=Ipt%!12/S+1.5 PxVhand%!20+=16 PVline1%!4+=32 P PD%=StartP%!16/S+2.5+Wpt%!20 PB%=StartP%!12/S+1.5+Wpt%!16 PC%=EndP%!12/S+1.5+Wpt%!16 P'dragC%=(Vhand%!12-StartP%!12)/S+1.5 P$udedit(C%-16,D%-16,C%+16,D%+16) PdragD%=min(by%-96,y1%) PdragE%=y0% P:udedit(C%+dragC%-4,dragE%-by%,C%+dragC%+4,dragD%-by%) P RT%=4 P$udedit(B%-16,D%-16,B%+16,D%+16) P 3,`rl SH1 drag4%+dragC%,dragD%: drag4%+dragC%,dragE% SR drag1%=4 S\? drag4%+drag6%+dragC%,dragD%: drag4%+drag6%+dragC%,dragE% Sf 3,`sp Sp ȏ Ȑ drag4%+drag6%,drag5%,8 Sz S S `pt Sȏ Ȑ drag4%,drag5%,8 S `rl S1 drag4%+dragC%,dragD%: drag4%+dragC%,dragE% S drag1%=4 S? drag4%+drag6%+dragC%,dragD%: drag4%+drag6%+dragC%,dragE% S `pt S ȏ Ȑ drag4%+drag6%,drag5%,8 SAȏ Ȑ drag4%+dragC%,drag5%+(Vhand%!16-StartP%!16)/drag1+0.5,8 S Sș GetR,0,b% more% S T.B%=(drag4%-drag8%-dragB%-drag3%)*drag1+0.5 TWpt%=drag7% TWih%=!Wpt% T$Wxh%=Wpt%!4 T. S=drag1 T8 drag1%=4 TBStartP%!12+=B% TL"StartP%!20=StartP%!20-16 128 TVdragA%!4+=B% T`resortpt(dragA%,StartP%) TjEndP%!12+=B% TtEndP%!20=EndP%!20-16 128 T~resortpt(dragA%,EndP%) TVhand%!12+=B% T Vhand%!20=Vhand%!20-16 128 Tresortpt(dragA%,Vhand%) TVline1%!4-=32 T!Vline1%!8+=B%: Vline1%!32+=B% TVline2%!4-=32 T!Vline2%!8+=B%: Vline2%!32+=B% T T dragA%!12+B%>dragA%!4 TdragA%!12+=B% TEndP%!12+=B% TEndP%!20=EndP%!20-16 128 Uresortpt(dragA%,EndP%) U Vline2%!4-=32 U!Vline2%!8+=B%: Vline2%!32+=B% U U( U2 U< dragvref UF A%,B%,C%,D%,G% UPA%=Ipt%!16 UZ ȕ A%<>0 UdȎ (A%!20 30) Un 10: Vhand%=A% Ux U A%=!A% U UA%=!(Ipt%!20+36) U ȕ A%<>0 UȎ (A%!4 15) U1 8: A%=Vhand%!24 Vline1%=A% Vline2%=A% U U A%=!A% U UVhand%!20+=16 UVline1%!4+=32 UVline2%!4+=32 UB%=Vhand%!12/S+1.5+Wpt%!16 VC%=Vhand%!12/S+1.5+Wpt%!16 V&drag6%=(Vline2%!8-Vline1%!8)/S+1.5 V !b%=Wxh% V"ș GetW,0,b% V,info(b%+4) V6dragD%=min(by%-96,y1%) V@dragE%=y0% VJ.udedit(C%-16,dragE%-by%,C%+16,dragD%-by%) VT:udedit(C%+drag6%-4,dragE%-by%,C%+drag6%+4,dragD%-by%) V^drag2%=Vhand%!16/S+2.5 Vhdrag5%=drag2%+by%+Wpt%!20 Vrdrag3%=Vhand%!12/S+1.5 V|drag4%=drag3%+bx%+Wpt%!16 Vdrag7%=Wpt% Vdrag8%=Wpt%!16 Vdrag9%=Wpt%!20 VdragA%=Ipt% VdragB%=bx% VdragC%=by% V drag0%= V drag1=S Vdraguser%=5 V C%=drag4% V D%=drag5% Vdraged(7,C%,D%,C%,D%) V W dragvert(x%,y%) W9!b%=drag7%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Wș UpdateW,0,b% more% W& ȕ more% W0 drag0% W: 3,`rl WD# drag4%,dragD%: drag4%,dragE% WN1 drag4%+drag6%,dragD%: drag4%+drag6%,dragE% WX 3,`sp Wbȏ Ȑ drag4%,drag5%,8 Wl Wv 3,`rl W x%,dragD%: x%,dragE% W) x%+drag6%,dragD%: x%+drag6%,dragE% W 3,`sp Wȏ Ȑ x%,y%,8 Wș GetR,0,b% more% W W drag4%=x%:drag5%=y%:drag0%= W W oververt W A%,B%,C%,D%,G% W9!b%=drag7%!4: b%!4=0: b%!8=-984: b%!12=984: b%!16=-96 Wș UpdateW,0,b% more% W ȕ more% X drag0% X 3,`rl X# drag4%,dragD%: drag4%,dragE% X 1 drag4%+drag6%,dragD%: drag4%+drag6%,dragE% X* 3,`sp X4ȏ Ȑ drag4%,drag5%,8 X> XH `rl XR# drag4%,dragD%: drag4%,dragE% X\1 drag4%+drag6%,dragD%: drag4%+drag6%,dragE% Xf `pt Xpȏ Ȑ drag4%,drag5%,8 Xzș GetR,0,b% more% X X.B%=(drag4%-drag8%-dragB%-drag3%)*drag1+0.5 X.C%=(drag5%-drag9%-dragC%-drag2%)*drag1+0.5 XWpt%=drag7% XWih%=!Wpt% XWxh%=Wpt%!4 X S=drag1 XVhand%!12+=B% XVhand%!16+=C% X Vhand%!20=Vhand%!20-16 128 Xresortpt(dragA%,Vhand%) XVline1%!4-=32 XVline1%!8+=B% YVline1%!32+=B% YVline2%!4-=32 YVline2%!8+=B% Y$Vline2%!32+=B% Y. C%=Wpt%!8 Y8C%!1984+=B% YB C%!48=1 YL!vrefchanged(drag7%!8,drag7%) YV Y`% draged(T%,IX0%,IY0%,IX1%,IY1%) Yj X0%,Y1% YtX0%=max(x0%,bx%+4) Y~Y1%=min(y1%,by%-96) Y1drag(T%,IX0%,IY0%,IX1%,IY1%,X0%,y0%,x1%,Y1%) Y Y max(X%,Y%) Y X%>Y% =X% =Y% Y min(X%,Y%) Y X%0 Ipt%!48=0 [6 (PP%!20 30)<>2 [@b%!84=b%!84 &400000 [Jb%!108=b%!108 &400000 [T [^ [h Ipt%!48=0 [rb%!132=b%!132 &400000 [| [ PP%=0 (Wih% 2)=2 [b%!156=b%!156 &400000 [ [ (PP%!20 30)<>0 [b%!156=b%!156 &400000 [ [ [ Lp%=0 Lp%=Ipt%!44 [b%!132=b%!132 &400000 [ [-ș CreateM,0,b%,mouseX%-(b%!16/2),mouseY% [ [ mlinm(icon%) \A IP%,LP%,WP%,PP%,T%,lx0%,lx1%,ly0%,ly1%,X%,Y%,Q%,R%,BP%,PTS% \IP%=menuI% \LP%=menuL% \&WP%=menuW% \0PP%=menuP% \: BP%=WP%!8 \D sl%=64 \N LP%=0 LP%=IP%!44 \X LP%<>0 \bboundL(LP%) \lR%=8 \v Q%=52 56 4 \ LP%!Q%<>0 \X%=LP%!R%: Y%=LP%!(R%+4) \PTS%=BP%!((LP%!Q%<<2)+124) \' PTS%!40+X%lx1% lx1%=PTS%!48+X% \' PTS%!44+Y%ly1% ly1%=PTS%!52+Y% \ \ R%=32 \ \ \Ȏ icon% \ 0 ]T%=(Wih% &FFFF0000)+&1300 ]  Q%=0 maxW ] WHint%(Q%)=T% ] * !(PTwin%(Q%)+12)=LP% closeI(T%,) ]* ]4 ]> (LP%!4 63)>6 ]HT%=IP%!20+36 ]R ȕ T%>0 ]\ !T%=LP% T%=-T% T%=!T% ]f ]p T%=0 ]zQ%=IP%!20+19 ] F%=52 56 4 ]+ LP%!F%<>0 Q%?(LP%!F%)=Q%?(LP%!F%)-1 ] ]! (LP%!4 128)<>0 IP%!24=0 ] (LP%!4 64)<>0 IP%!44=0 ] T%=-T% ] !T%=!LP% ] IP%!48<>0 ]! !(IP%!48+24)=LP% IP%!48=0 ] ]"delpt(IP%,0,LP%!8,LP%!12,LP%) ]#delpt(IP%,2,LP%!16,LP%!20,LP%) ]#delpt(IP%,2,LP%!24,LP%!28,LP%) ^#delpt(IP%,0,LP%!32,LP%!36,LP%) ^freevec(LP%) ^ 1 ^$ (LP%!4 63)>6 ^. (LP%!4 1)=1 ^8LP%!4=LP%!4 1 ^B%X%=LP%!32-LP%!8: Y%=LP%!36-LP%!12 ^L)PTS%=findpt(IP%,2,LP%!16,LP%!20,LP%) ^VLP%!16=X% 3+LP%!8 ^`LP%!20=Y% 3+LP%!12 ^j PTS%<>0 ^t!PTS%!12=LP%!16:PTS%!16=LP%!20 ^~resortpt(IP%,PTS%) ^ ^)PTS%=findpt(IP%,2,LP%!24,LP%!28,LP%) ^LP%!24=2*X% 3+LP%!8 ^LP%!28=2*Y% 3+LP%!12 ^ PTS%<>0 ^!PTS%!12=LP%!24:PTS%!16=LP%!28 ^resortpt(IP%,PTS%) ^ ^ 2 ^ PP%=0 PP%=IP%!48 ^ arc 1,"No centre" ^boundL2(LP%) _ 3 _ Ipt%=IP% _ (!(Ipt%!44+4) 1)=1 _ T%=PP% _( T%=0 T%=Ipt%!48 _2 symetry _< 4 _F T%=LP% _P Ipt%=IP% _Z parallel _d 5 _n Ipt%=IP% _x T%=PP% _ LP%=T%!24 _ serif _ 6 _bound(IP%!20) _refl(lx0%+lx1%,8,12) _ 7 _bound(IP%!20) _refl(ly0%+ly1%,12,16) _: _ _ IP%!32=1 _ Wpt%=WP% _ Wih%=!WP% `Wxh%=WP%!4 `S=|(Wpt%+24) ` rdline2 `" `, serif `6 SP%,PS%,CP%,UIT% `@? LP%!8=T%!12 LP%!12=T%!16 SP%=52:PS%=8 SP%=56:PS%=32 `J"lx0%=0: lx1%=0: ly0%=0: ly1%=0 `T UIT%= `^CP%=Ipt%!20+19 `h LP%!SP%<>0 `r!CP%?(LP%!SP%)=CP%?(LP%!SP%)-1 `|&eptuser(BP%!((LP%!SP%<<2)+124),0) ` ` BP%!56<>0 `CP%?(BP%!56)=CP%?(BP%!56)+1 `*eptuser(BP%!((BP%!56<<2)+124),BP%!56) ` ` UIT% ` lx0%+=LP%!PS%: lx1%+=LP%!PS% `(ly0%+=LP%!(PS%+4): ly1%+=LP%!(PS%+4) ` Ipt%!32=1 ` ` ` eptuser(PTS%,TSP%) `LP%!SP%=TSP% a! PTS%!40lx1% lx1%=PTS%!48 a! PTS%!44ly1% ly1%=PTS%!52 a0 UIT%= a: aD symetry aN O%,S%,PHI,W1%,W2%,W3%,W4% aX O%=8:S%=8 ab/ T%!12=LP%!16 T%!16=LP%!20 O%=32:S%=-8 al Ipt%!32=1 avboundL(LP%) aW1%=LP%!(3*S%+O%)-LP%!O% a"W2%=LP%!(3*S%+O%+4)-LP%!(O%+4) a W1%=0 aPHI=(W2%)*/2 a aPHI=(W2%/W1%) a a PHI=PHI*2 aW1%=LP%!(S%+O%)-LP%!O% a W2%=LP%!(S%+O%+4)-LP%!(O%+4) a W3%=-(W1%*PHI+W2%*PHI)+0.5 aW4%=W2%*PHI-W1%*PHI+0.5 aW1%=LP%!(3*S%+O%)+W3% bW2%=LP%!(3*S%+O%+4)+W4% b LP%!(2*S%+O%)=W1% bLP%!(2*S%+O%+4)=W2% b T%!12=W1% b* T%!16=W2% b4resortpt(Ipt%,T%) b>boundL2(LP%) bH bR arc b\ O%,S%,CT,ST,L,R,PHI bf O%=8:S%=8 bp T%=PP% bz/ T%!12=LP%!24 T%!16=LP%!28 O%=32:S%=-8 b;PTS%=findpt(IP%,2,LP%!(O%+S%+S%),LP%!(O%+S%+S%+4),LP%) bQ%=LP%!O%: R%=LP%!(O%+4) bLX%=(LP%!(O%+S%)-Q%)*(LP%!(40-O%)-Q%)+(LP%!(O%+S%+4)-R%)*(LP%!(44-O%)-R%) b$L=arcL(LP%!(40-O%),LP%!(44-O%)) b L<2 = b(PHI=arcL(LP%!(O%+S%),LP%!(O%+S%+4)) b PHI<2 = bCT=(X%)/(L*PHI) bST=1-CT*CT b ST<0 = b ST=(ST) b (ST)<0.01 = b R=L/ST/2 c X%<0 c'T%!12=Q%+Q%-T%!12:T%!16=R%+R%-T%!16 cLP%!(O%+S%)=T%!12 c$LP%!(O%+S%+4)=T%!16 c. c8R=4*R*(1-CT)/(3*ST) cB L=R*(LP%!(O%+S%)-Q%)/PHI+0.5 cL"R=R*(LP%!(O%+S%+4)-R%)/PHI+0.5 cVLP%!(S%+O%)=Q%+L c`LP%!(S%+O%+4)=R%+R cjT%!12=Q%+L ctT%!16=R%+R c~X%=LP%!(3*S%+O%)-Q% cY%=LP%!(3*S%+O%+4)-R% c X%=0 cPHI=(Y%)*/2 c cPHI=(Y%/X%) c c PHI=PHI*2 cQ%=-(L*PHI+R*PHI)+0.5 cR%=R*PHI-L*PHI+0.5 cQ%+=LP%!(S%*3+O%) cR%+=LP%!(S%*3+O%+4) cLP%!(S%*2+O%)=Q% dLP%!(S%*2+O%+4)=R% d PTS%!12=Q% dPTS%!16=R% dresortpt(IP%,T%) d(resortpt(IP%,PTS%) d2= d< arcL(X%,Y%) dF X%=X%-Q% dP Y%=Y%-R% dZ=(X%*X%+Y%*Y%) dd parallel dn2 UX,UY,SZ,W1%,W2%,W3%,W4%,W5%,W6%,PL%,PP%,PQ% dx (T%!4 1)=1 dW1%=T%!8-T%!32 dW2%=T%!12-T%!36 d d section%<=16 dW1%=T%!8-T%!16 dW2%=T%!12-T%!20 d dW1%=T%!24-T%!32 dW2%=T%!28-T%!36 d d dSZ=(W1%*W1%+W2%*W2%) d UX=W1%/SZ e UY=W2%/SZ e Ipt%!32=1 ePL%=Ipt%!44 e"PP%=Ipt%!48 e,boundL(PL%) e6 PQ%=PL% e@PL%!4=PL%!4 &FE eJ% PL%!16=PP%!12 PL%!20=PP%!16 eT W1%=PL%!8 e^W2%=PL%!12 ehW3%=PL%!24 erW4%=PL%!28 e|PL%=PL%+16 e eW1%=PL%!32 eW2%=PL%!36 eW3%=PL%!16 eW4%=PL%!20 ePL%=PL%+24 e eW5%=PP%!12-W1% eW6%=PP%!16-W2% eSZ=(W5%*W5%+W6%*W6%) eUX=UX*SZ+0.5 eUY=UY*SZ+0.5 e) parfunc(UX,UY)0 f (T%!4 63)<8 f U%=X% 36 8 fT%!U%=Q%-T%!U% f f (T%!4 63)=7 fIP%!4=T%!8 gIP%!8=T%!12 g  g g T%=!T% g* g4 T%=IP%!16 g> ȕ T%<>0 gH (T%!20 63)<4 gRT%!Y%=Q%-T%!Y% g\ T%!20+=32 gf gp T%=!T% gz gU%= g ȕ U% gU%= g T%=IP%!16 g ȕ T%<>0 g (T%!20 32)<>0 g T%!20-=32 gresortpt(IP%,T%) gU%= gT%=0 g g T%=!T% g h h h h$ openpens(LP%,RP%,Ipt%) h. X%,Y%,DMI% h8 Y%=Wpt% hB!DMI%=&1300+(Wih% &FFFF0000) hL X%=0 maxW hV WHint%(X%)=DMI% h`Wpt%=PTwin%(X%) hjWpt%!12=LP% htWpt%!16=RP% h~Wpt%!20=Ipt% hWpt%!24=Y% hfront(WHext%(X%)) h h h hcopyw(pens%) hposnwindow hmake(DMI%,28,Wpt%!8) hWpt%!12=LP% hWpt%!16=RP% hWpt%!20=Ipt% hWpt%!24=Y% i i  drawpens(clg%) i @% i@%=5 i( ȕ more% i2 *FX 19 i< clg% iF rx0%<212 ry0%<-16 iP ry0%<-16 ry1%>-116 iZ% bx%+36,by%-74: !(Wpt%!16);"%"; id" bx%+36,by%-26: "Pen ratio"; in ix iș GetR,0,b% more% iinfo(b%+4) i i i mpens(but%,icon%) i PT%,O%,T%,ic% i but%<2 i !b%=Wxh% iș GetW,0,b% iinfo(b%+4) iO%=0 i ic%=icon% iȎ icon% j 0: O%=1 j 1: O%=-1 j: front(Wxh%): j" j, -ltime%<5 j6$ -ltime%>25 linc%=1:ltzer%= j@PT%=Wpt%!16 jJ!PT%=!PT%+O%*linc% jT !PT%<1 !PT%=1 j^ !PT%>100 !PT%=100 jh -ltzer%>1000 linc%=10 jr6!b%=Wxh%: b%!4=16: b%!8=-108: b%!12=200: b%!16=-56 j|ș UpdateW,0,b% more% jinfo(b%+4) jdrawpens() j ltime%= j j openital j DMI%,I%,X%,Y%,Z% j!DMI%=(Wih% &FF000000)+&1100 j: I%=0 maxW: WHint%(I%)=DMI% front(WHext%(I%)): j jcopyw(ital%) jposnwindow j I%=Wpt%!8 jmake(DMI%,16,I%) kWpt%!12=I%!20 k k drawital(clg%) k& @% k0 ȕ more% k: *FX19 kD clg% kN rx1%>208 ry0%<=-96 kX `gd kb bx%+300,by%-106 kl 1,0,-80 kv 1,80,0 k 0,-160,0 k 1,80,0 k `rl k- 1,80*(Wpt%!12/100),80*(Wpt%!12/100) k `wf k k ry1%>-90 k(drawname("Font: ",Wpt%!8+16,82,-32) k k rx0%<164 ry0%<-96 k ry0%<-96 ry1%>-196 k bx%+52,by%-106: "Angle"; k @%=&20206 l( bx%+20,by%-154: Wpt%!12/100;&A0; l  l l ș GetR,0,b% more% l*info(b%+4) l4 l> lH italun(I%) lR5Wxh%=WHext%(I%): Wih%=WHint%(I%): Wpt%=PTwin%(I%) l\6!b%=Wxh%: b%!4=78: b%!8=-72: b%!12=1228: b%!16=-10 lfș UpdateW,0,b% more% lpinfo(b%+4) lzdrawital() l l italup l7!b%=Wxh%: b%!4=208: b%!8=-984: b%!12=984: b%!16=-96 lș UpdateW,0,b% more% linfo(b%+4) ldrawital() l l mital(but%,icon%) l PT%,O%,ic% l but%=0 l !b%=Wxh% lș GetW,0,b% linfo(b%+4) mO%=0 m ic%=icon% mȎ icon% m$ 0: showital m. 1: O%=linc% m8 2: O%=-linc% mB: front(Wxh%) mL mV O%<>0 m`$ -ltime%>25 linc%=1:ltzer%= mjWpt%!12=Wpt%!12+10*O% mt/ (Wpt%!12)>4500 Wpt%!12=(Wpt%!12)*4500 m~ -ltzer%>200 linc%=10 m italup m7!b%=Wxh%: b%!4=16: b%!8=-190: b%!12=160: b%!16=-150 mș UpdateW,0,b% more% minfo(b%+4) mdrawital() m ltime%= m m m showital m# ifact,BP%,I%,J%,DMI%,K%,DONE% mBP%=Wpt%!8 m(ifact=(Wpt%!12/100)-(BP%!20/100) nBP%!20=Wpt%!12 n  I%=128 1087 4 n* BP%!I%<>0 shearchar(BP%!I%,ifact) n n($ș Screen,BP%!4,0,-1300,1300,-96 n2 DMI%=(!BP% &FF000000)+&E00 n< I%=0 maxW nF% (WHint%(I%) &FF00FF00)=DMI% nP DONE%= nZ I%<>0 nd J%=0 I%-1 nn+ (WHint%(I%) WHint%(J%))=1 DONE%= nx n n DONE% nJ%=!(PTwin%(I%)+12) nJ%!4+=ifact*J%!8+0.5 nshearchar(J%!20,ifact) n K%=J%!16 n ȕ K%<>0 n (K%!20 14)<=2 nK%!12+=K%!16*ifact+0.5 nresortpt(J%,K%) n n K%=!K% n o o'ș Screen,WHext%(I%),0,-984,984,-96 o o" o, o6 shearchar(P%,F) o@ T%,U%,lx0%,lx1%,ly0%,ly1% oJ T%=P%!36 oT5lx0%=100000:lx1%=-100000:ly0%=100000:ly1%=-100000 o^ ȕ T%<>0 oh (T%!4 15)<=7 or U%=T%+8 T%+32 8 o|!U%+=U%!4*F+0.5 o !U%lx1% lx1%=!U% o U%!4ly1% ly1%=U%!4 o o o T%=!T% o o2P%!40=lx0%: P%!44=ly0%: P%!48=lx1%: P%!52=ly1% o o openfmod(F$,WP%,DES%) o X%,Y% o maxW+=1 p!b%=ErrorH% pș DeleteW,0,b% pcopyw(fmod%) p&posnwindow p0make(&504,24,DES%) p: maxW-=1 pDErrorH%=Wxh% pN clerr%+=1 pX Wpt%!12=0 pbasstring(Wpt%+12,F$) plWpt%!16=WP% pvWpt%!20=DES% p p mfmod(icon%) p F$, PT%, DES% p icon%<2 p icon%=2 pF$=$(Wpt%!12) pPT%=Wpt%!16 pDES%=Wpt%!20 pcloseI(Wih%, ) p F$="" DES%=0 pcloseI(PT%,) p pload(F$,PT%,DES%,) q q  qcloseI(Wih%, ) q  q* q4 openflex(F$,font%,DES%) q> maxW+=1 qH!b%=ErrorH% qRș DeleteW,0,b% q\copyw(flex%) qfposnwindow qpmake(&604,24,font%) qz maxW-=1 qErrorH%=Wxh% q clerr%+=1 q Wpt%!12=0 qasstring(Wpt%+12,F$) qWpt%!16=font% qWpt%!20=DES% q q mflex(icon%) q F$, font%, DES% q icon%<2 q icon%=2 qF$=$(Wpt%!12) qfont%=Wpt%!16 rDES%=Wpt%!20 rcloseI(Wih%, ) rsave(F$,font%,DES%,) r$ r.closeI(Wih%, ) r8 rB rL error(ES$) rV X%,Y% r` maxW+=1 rj!b%=ErrorH% rtș DeleteW,0,b% r~copyw(warn%) rX%=152+16*ES$ r X%<192 X%=192 r b%!8=X% r b%!40=X% r b%!48=X% rb%!128=X%-16 rY%=(X%-160) 2 r b%!152=Y% rb%!160=Y%+160 r $dat%=ES$ rb%!140=dat% r b%!144=-1 sb%!148=ES$ s posnwindow sWpt%=dat%+256 smake(&304,-1,0) s(ErrorH%=Wxh% s2 maxW-=1 s< clerr%+=1 sF sP mwarn(icon%) sZ icon%=2 closeI(Wih%,) sd sn copyw(I%) sx L%,J% sL%=I%!(-4)-5 s! J%=0 L% 4:b%!J%=I%!J%: s s make(IH%,sz%,pr%) s I% sI%=0 sȕ WHext%(I%)<>-1 I%=maxW 1,"No more windows" s sz%>0 Wpt%=getvec(sz%) s Wpt%=0 s Wih%=IH% t !Wpt%=IH% t"b%!40=0: b%!44=-b%!52: b%!52=0 tș CreateW,0,b% Wxh% t"Wpt%!4=Wxh% t,Wpt%!8=pr% t6WHext%(I%)=Wxh% t@PTwin%(I%)=Wpt% tJWHint%(I%)=IH% tT !b%=Wxh% t^ș GetW,0,b% thș OpenW,0,b% tr t| closeI(IH%,update%) t I%,J%,L%,Wxh%,Wpt% tI%=0 t ȕ I%IH% t I%+=1 t t< WHint%(I%)<>IH% Wxh%=WHext%(I%): Wpt%=PTwin%(I%) t Wih%=IH% tȎ (IH% &FF00)>>8 t 0 t 1: J%=0 maxW t J%<>I% t8 ((WHint%(J%) IH%)>>24)=0 closeI(WHint%(J%),0) t u uWpt%=PTwin%(I%) ufreevec(Wpt%!16) u&freevec(Wpt%!44) u0 L%=64 127 4 u:freevec(Wpt%!L%) uD uN L%=128 1087 4 uX% Wpt%!L%<>0 freechar(Wpt%!L%) ub ulclosit(I%) uv+fontmap%=fontmap% (1<<((IH%>>24)-1)) u 3: clerr%=0 uclosit(I%) u 4: freevec(Wpt%!12) uclosit(I%) u 5,6: freevec(Wpt%!12) u clerr%=0 uclosit(I%) u 11: !(Wpt%!8+52)=0 uclosit(I%) u 12: !(Wpt%!8+56)=0 uclosit(I%) u& 13: L%=(Wih% &FFFF0000)+&808 u J%=0 maxW v+ WHint%(J%)=L% closeI(WHint%(J%),0) v  v update% showpen v closit(I%) v*+ 14: dumpedit(Wih%,Wpt%!12,update%) v4closit(I%) v> 17: showital vHclosit(I%) vR 19: clospens(I%) v\: closit(I%) vf vp vz clospens(I%) v LP% vLP%=Wpt%!12 vWpt%=Wpt%!24 vclosit(I%) vWih%=!Wpt% vWxh%=Wpt%!4 vS=|(Wpt%+24) vrdline(LP%) v v closit(I%) v NONE% v!b%=WHext%(I%) vș CloseW,0,b% wNONE%=WHint%(I%) &FF00 w/ NONE%<>&300 NONE%<>&500 NONE%<>&600 w!b%=WHext%(I%) w$ș DeleteW,0,b% w. w8( NONE%<>&300 freevec(PTwin%(I%)) wBWHext%(I%)=-1 wLWHint%(I%)=0 wVPTwin%(I%)=0 w` NONE%= wj I%=0 maxW wt WHint%(I%)<>0 NONE%= w~ w NONE% finished%= w w dumpedit(H%,P%,U%) w I%,J% wI%=0 w/ȕ I%(H% 1): I%+=1: w I%<>maxW w!(PTwin%(I%)+40)=0 w w wI%=(H% &FFFF0000)+&908 w (H% 2)=0 I%+=&100 x J%=0 maxW x , WHint%(J%)=I% closeI(WHint%(J%),U%) x x U% showchar(H%,P%) x( !P%<>0 freevec(!P%) x2 I%=P%!16 x< ȕ I%<>0 xF J%=!I% xPfreevec(I%) xZ I%=J% xd xn! P%!20<>0 freechar(P%!20) xxfreevec(P%) x x drawname(hdr$,p%,X%,Y%) x tail$ xtail$="unnamed" x* !p%<>0 $(!p%)<>"" tail$=$(!p%) xhdr$=hdr$+tail$ x bx%+X%,by%+Y%: hdr$; x x initheap xHeap!0=Heap+4 x Heap!4=0 xHeap!8=heapS-4 x y getvec(X%) y S%,T%,U%,V% y T%=Heap y" U%=!Heap y,X%=(X%+3)3 y6X%<8 X%=8 y@ X%=X%+4 yJ U%<>0 yT y^ S%=U%!4 yh S%>X% yr S%-X%>16 y|$!T%=U%+X%:U%!X%=!U%:!U%=X%:V%=U% yU%=!T%:U%!4=S%-X% y y!T%=!U%:!U%=U%!4:V%=U% y y =V%+4 y yT%=U%:U%=!U% y U%=0 y y 1,"Out of memory" y freevec(X%) y T%,U% y X%=0 zT%=Heap:U%=!T% z X%=X%-4 z X%!4=!X% z&!ȕ X%>U% U%<>0:T%=U%:U%=!U% z0 z:!T%=X%:!X%=U% zD1 U%<>0 X%+X%!4=U% X%!4=X%!4+U%!4:!X%=!U% zN4 T%<>Heap T%+T%!4=X% T%!4=T%!4+X%!4:!T%=!X% zX zb freechar(X%) zl T%,U% zv X%=0 zfreevec(X%!0) z T%=X%!36 z(ȕ T%<>0:U%=!T%:freevec(T%):T%=U%: zfreevec(X%) z z string(A$) z P% zP%=getvec(84) z P%<>0 $P%=A$ z=P% z asstring(P%,A$) z !P%<>0 z $!P%=A$ { { !P%=string(A$) { {  {* str(A%) {4 K%,I%,R$ {> I%=?A%+A% {Hȕ ?I%=32:I%-=1: {R&K%=I%?1:I%?1=13:R$=$(A%+1):I%?1=K% {\=R$ {f load(F$,WP%,DES%,ign%) {p FH%,R$ {z! F$="" 1,"Null filename" {FH%= (weldir$+F$) {" FH%=0 1,"File not found" { R$=#FH% { R$<>FileHead$ { #FH% {0 R$,9)="FontLocus" 1,"Old file format" { 1,"Bad file format" { { DES%<>0 ign% {2 DES%!48<>0 #FH%:openfmod(F$,WP%,DES%): { { WP%<>0 closeI(!WP%,) { DES%<>0 closeI(!DES%,) |openfont(FH%,F$) | | read(H%,F$) |$ A$,B%,C%,D%,E%,FAIL% |. A$=#H% |8asstring(Wpt%+16,A$) |B" F$<>"" asstring(Wpt%+44,F$) |L C%=20 43 4 |V #H%,B% |`Wpt%!C%=B% |j C% |t #H%,B% |~Wpt%!1984=B% | #H%,B% | #H%,C% | #H%,D% | FAIL%= |#ȕ B%<>0 readpen(H%):B%-=1: |/ FAIL% ȕ C%<>0 readserif(H%):C%-=1: |. FAIL% ȕ D%<>0 readchar(H%):D%-=1: |#H% | | readpen(H%) | B%=0 = | P%,B%,A$,C%,D% }&B%=getvec(60): B%=0 FAIL%=:= } P%=#H% }, P%=0 P%>16 freevec(B%):FAIL%=:= } A$=#H% }( !B%=0 }2asstring(B%,A$) }< B%!4=#H% }F C%=8 16 4 }P #H%,D% }Z B%!C%=D% }d }ncalcpen(B%) }x|(B%+44)=(B%!16/100) }|(B%+52)=(B%!16/100) }Wpt%!((P%<<2)+60)=B% }= } readserif(H%) } C%=0 = } S%,B%,A$,C%,D% }&B%=getvec(56): B%=0 FAIL%=:= } S%=#H% }, S%=0 S%>16 freevec(B%):FAIL%=:= } A$=#H% } !B%=0 }asstring(B%,A$) } D%=4 39 4:B%!D%=0: ~ #H%,C% ~3 C%<>0 D%=readlines(H%,C%,B%+4,B%+20,B%+36) ~$ D%=0 freevec(B%):FAIL%=:= ~"bound(B%) ~,2B%!40=lx0%: B%!44=ly0%: B%!48=lx1%: B%!52=ly1% ~6Wpt%!((S%<<2)+124)=B% ~@= ~J readchar(H%) ~T D%=0 = ~^ S%,B%,A$,C%,D%,E% ~h&B%=getvec(56): B%=0 FAIL%=:= ~r S%=#H% ~|% S%<32 freevec(B%):FAIL%=:= ~ S%=S%-32 ~ A$=#H% ~ !B%=0 ~asstring(B%,A$) ~ D%=4 39 4:B%!D%=0: ~ #H%,E% ~ #H%,C% ~3 C%<>0 D%=readlines(H%,C%,B%+4,B%+20,B%+36) ~$ D%=0 freevec(B%):FAIL%=:= ~bound(B%) ~2B%!40=lx0%: B%!44=ly0%: B%!48=lx1%: B%!52=ly1% ~Wpt%!((S%<<2)+192)=B% ~Wpt%!((S%<<2)+1088)=E% = # readlines(H%,N%,PC%,SC%,SP%)  B%,D%,E% & !SP%=0 0 N%=0 : D&B%=getvec(60): B%=0 FAIL%=:=0 N D%=#H% XB%!0=0: B%!4=D% b E%=8 39 4 l #H%,D% v B%!E%=D%   D%=#H%  D%>0 PC%?(D%-1)+=1  B%!40=D%  D%=#H%  B%!44=D%  D%=#H%  B%!48=D%  E%=52 56 4  D%=#H%  D%>0 SC%?(D%-1)+=1  B%!E%=D%   !SP%=B% SP%=B%  N%-=1 N%=0 *=1 4 save(F$,font%,Wcl%,ign%) > H%,L%,T%,P%,S%,C% H ign% RH%= (weldir$+F$) \- H%<>0 #H%:openflex(F$,font%,Wcl%): f p"REMOVE "+F$ zH%= (weldir$+F$) " H%=0 1,"Can't open file" #H%,FileHead$ savename(H%,font%+16)  L%=20 43 4 T%=font%!L% #H%,T%  T%=font%!1984 #H%,T% P%=0  L%=64 127 4  font%!L%<>0 P%+=1   #H%,P% S%=0  L%=128 191 4 $ font%!L%<>0 S%+=1 . 8 #H%,S% BC%=0 L L%=192 1087 4 V font%!L%<>0 C%+=1 ` j #H%,C% tT%=0 ~ȕ T%<16 P%>0 9 font%!((T%<<2)+64)<>0 savepen(H%,font%,T%):P%-=1 T%+=1  T%=0 ȕ T%<16 S%>0 < font%!((T%<<2)+128)<>0 saveserif(H%,font%,T%):S%-=1 T%+=1  T%=0 ȕ T%<224 C%>0 ; font%!((T%<<2)+192)<>0 savechar(H%,font%,T%):C%-=1 T%+=1  font%!48=0  #H% closeI(Wcl%,) ( 2 savepen(H%,R%,N%) < P%,L%,T% FP%=R%!((N%<<2)+64) P #H%,N%+1 Zsavename(H%,P%) d#H%,(P%!4<>0) n L%=8 16 4 x T%=P%!L% #H%,T%    saveserif(H%,R%,N%)  P% P%=R%!((N%<<2)+128) #H%,N%+1 savename(H%,P%) savelines(H%,P%!36)   savechar(H%,R%,N%) P%,T% P%=R%!((N%<<2)+192) T%=R%!((N%<<2)+1088) #H%,N%+32 savename(H%,P%) " #H%,T% ,savelines(H%,P%!36) 6 @ savelines(H%,P%) J C%,T%,L% TC%=0 ^ T%=P% hȕ T%<>0: C%+=1: T%=!T%: r #H%,C% | C%=0  #H%,P%!4  L%=8 39 4 T%=P%!L% #H%,T%   L%=40 56 4 #H%,P%!L%  P%=!P% C%-=1 C%=0   savename(H%,N%)  !N%=0  #H%,"" & 0#H%,$(!N%) : D N info(b%) XBx0%=!b%: y0%=b%!4: x1%=b%!8: y1%=b%!12: scx%=b%!16: scy%=b%!20 bbx%=x0%-scx%: by%=y1%-scy% l2Rx0%=b%!24: Ry0%=b%!28: Rx1%=b%!32: Ry1%=b%!36 v>rx0%=Rx0%-bx%: rx1%=Rx1%-bx%: ry0%=Ry0%-by%: ry1%=Ry1%-by%   front(XH%) !b%=XH% ș GetW,0,b%  (b%!32 &20000)<>0 b%!28=-1 ș OpenW,0,b%   cnvint(XH%)  I% I%=0 ȕ I%XH% I%+=1  Wxh%=XH% ) WHext%(I%)<>XH% Wih%=0: Wpt%=0: Wih%=WHint%(I%) *Wpt%=PTwin%(I%) 4 index%=I% > H posnwindow R SX%,SY% \SX%=b%!8-!b% fSY%=b%!12-b%!4 p!b%=mouseX%-(SX%>>1) zb%!8=mouseX%+(SX%>>1) b%!4=mouseY%-(SY%>>1) b%!12=mouseY%+(SY%>>1)   manifest maxF=10 maxW=30 heapS=--&6000 FileHead$="FontLocus1" `wf=&07 `wb=&80 `tf=&07 `tb=&88 `if=&07  `ib=&89  `sf=&0E  `sb=&8A $ `mf=&07 . `mb=&00 8 `mt=`tf B `mr=`tb L `gd=&02 V `rl=&0B ` `ln=&07 j `sl=&0C t `pt=&0D ~ `sp=&0E `dr=&07 `st=&0C `ec=6 File =8 Gbpb =12 Wimp=(1<<18)+(3<<6) Init =Wimp+0 CreateW=Wimp+1 CreateI=Wimp+2 DeleteW=Wimp+3 DeleteI=Wimp+4 OpenW =Wimp+5 CloseW =Wimp+6 Poll =Wimp+7 RedrawW=Wimp+8 UpdateW=Wimp+9 (GetR =Wimp+10 2GetW =Wimp+11 <GetWI =Wimp+12 FSetI =Wimp+13 PGetI =Wimp+14 ZGetP =Wimp+15 dDrag =Wimp+16 nScreen =Wimp+17 xSetC =Wimp+18 GetC =Wimp+19 CreateM=Wimp+20 DecodeM=Wimp+21 WhichI =Wimp+22 SetX =Wimp+23   wmodels ibar%=wmodel + &50,`wf,`wb,0,-96,82,0,0,0,82,96,1,"" # 0,-96,82,4,&0D,`if,`ib,3,Font masf%=wmodel A &0F,`wf,`wb,340,252,1234,984,0,771,1234,1023,7,"Whole font" $ 4,-80,68,-16,&3D,`if,`ib,3,Pen & 72,-80,136,-16,&3D,`if,`ib,3,Ser ( 140,-80,204,-16,&3D,`if,`ib,3,Ital ( 208,-80,272,-16,&3D,`if,`ib,3,Disk ") 376,-80,1228,-16,&131,`wf,`wb,15,"" ,# 4,-980,1228,-96,&00,0,0,10,"" 6) 280,-64,376,-32,1,`wf,`wb,0,"Font:" @dirw%=wmodel J/ &1F,`wf,`wb,100,100,440,8192,0,0,0,0,0,"" Tdskw%=wmodel ^< &13,`wf,`wb,384,176,384,176,0,0,384,176,4,"File name:" h) 56,-80,184,-16,&3D,`if,`ib,3,"Load" r* 200,-80,328,-16,&3D,`if,`ib,3,"Save" |) 112,-160,368,-96,&131,`wf,`wb,15,"" ) 16,-160,112,-96,1,`wf,`wb,0,"File:" warn%=wmodel 2 &10,`wf,`wb,384,160,384,160,0,0,384,160,3,"" + 16,-56,128,-24,&1,`wf,`wb,0,"Error: " ' 128,-56,288,-24,&101,`wf,`wb,0,"" - 112,-144,272,-80,&3D,`if,`ib,3,"Cancel" fmod%=wmodel 2 &10,`wf,`wb,384,160,384,160,0,0,384,160,4,"" 0 16,-56,192,-24,&01,`wf,`wb,0,"Warning: Fo" 1 192,-56,368,-24,&01,`wf,`wb,0,"nt modified" . 24,-144,184,-80,&3D,`if,`ib,3,"Continue" - 200,-144,360,-80,&3D,`if,`ib,3,"Cancel" flex%=wmodel 2 &10,`wf,`wb,384,160,384,160,0,0,384,160,4,"" 0 32,-56,208,-24,&01,`wf,`wb,0,"Warning: Fi" / 208,-56,352,-24,&01,`wf,`wb,0,"le exists" &. 24,-144,184,-80,&3D,`if,`ib,3,"Continue" 0- 200,-144,360,-80,&3D,`if,`ib,3,"Cancel" :spmn%=wmodel D4 &03,`wf,`wb,264,272,264,272,0,96,264,368,16,"" N% 2,-68,66,-4,&10084,`wf,`ec,8,"" X' 68,-68,132,-4,&10084,`wf,`ec,8,"" b( 134,-68,198,-4,&10084,`wf,`ec,8,"" l( 200,-68,264,-4,&10084,`wf,`ec,8,"" v' 2,-136,66,-72,&10084,`wf,`ec,8,"" ) 68,-136,132,-72,&10084,`wf,`ec,8,"" * 134,-136,198,-72,&10084,`wf,`ec,8,"" * 200,-136,264,-72,&10084,`wf,`ec,8,"" ( 2,-204,66,-140,&10084,`wf,`ec,8,"" * 68,-204,132,-140,&10084,`wf,`ec,8,"" + 134,-204,198,-140,&10084,`wf,`ec,8,"" + 200,-204,264,-140,&10084,`wf,`ec,8,"" ( 2,-272,66,-208,&10084,`wf,`ec,8,"" * 68,-272,132,-208,&10084,`wf,`ec,8,"" + 134,-272,198,-208,&10084,`wf,`ec,8,"" + 200,-272,264,-208,&10084,`wf,`ec,8,"" epen%=wmodel > &0F,`wf,`wb,460,388,984,984,272,96,732,484,14,"Edit pen" % 4,-80,68,-16,&3D,`if,`ib,3,Show ' 72,-80,136,-16,&3D,`if,`ib,3,Squr ( 140,-80,204,-16,&3D,`if,`ib,3,Oval ) 308,-88,1228,-48,&131,`wf,`wb,15,"" *, 164,-148,204,-96,&3D,`if,`ib,2,"UPARR" 4. 164,-196,204,-144,&3D,`if,`ib,2,"DOWNAR" >- 164,-244,204,-192,&3D,`if,`ib,2,"UPARR" H. 164,-292,204,-240,&3D,`if,`ib,2,"DOWNAR" R- 164,-340,204,-288,&3D,`if,`ib,2,"UPARR" \. 164,-388,204,-336,&3D,`if,`ib,2,"DOWNAR" f& 4,-196,164,-96,&204,`wf,`wb,0,"" p' 4,-292,164,-192,&204,`wf,`wb,0,"" z' 4,-388,164,-288,&204,`wf,`wb,0,"" ( 212,-84,308,-52,1,`wf,`wb,0,"Pen:" edit%=wmodel 5 &0F,`wf,`wb,460,388,984,840,272,96,732,640,6,"" % 4,-80,68,-16,&3D,`if,`ib,3,Show % 72,-80,136,-16,&3D,`if,`ib,3,"" & 140,-80,204,-16,&3D,`if,`ib,3,"" ( 308,-88,984,-48,&131,`wf,`wb,15,"" ! 4,-984,984,-96,&00,0,0,6,"" ) 212,-84,308,-52,1,`wf,`wb,0,"Char:" mlin%=mmodel  `mf,`mb,10,8,"Alter line"  0,&7010021,0,"Delete"  0,&7010021,0,"Straighten"  0,&7010021,0,"Arc"  0,&7010021,0,"Symmetry"  0,&7010021,0,"Parallel" $ 0,&7010021,0,"Serif" . 0,&7010021,0,"Reflect X" 8 0,&7010021,0,"Reflect Y" Bpens%=wmodel L; &03,`wf,`wb,256,132,256,132,0,0,256,132,3,"Pen ratio" V+ 212,-68,252,-16,&3D,`if,`ib,2,"UPARR" `- 212,-116,252,-64,&3D,`if,`ib,2,"DOWNAR" j& 4,-116,212,-16,&204,`wf,`wb,0,"" tital%=wmodel ~9 &03,`wf,`wb,416,212,416,212,0,0,416,212,4,"Italics" % 4,-80,68,-16,&3D,`if,`ib,3,Show , 164,-148,204,-96,&3D,`if,`ib,2,"UPARR" . 164,-196,204,-144,&3D,`if,`ib,2,"DOWNAR" & 4,-196,164,-96,&204,`wf,`wb,0,""  wmodel < FL%,FC%,BC%,SX%,SY%,LX%,LY%,WL%,WB%,WR%,WT%,NI%,T$,BT% HP%,HS% 8 FL%,FC%,BC%,SX%,SY%,LX%,LY%,WL%,WB%,WR%,WT%,NI%,T$ HS%=88+32*NI% HP%=getvec(HS%-(FL%=&50)*4) . HP%=0 0,"Cannot start Font Designer" /HP%!0=WL%: HP%!4=WB%: HP%!8=WR%: HP%!12=WT% !HP%!16=0: HP%!20=0: HP%!24=-1 HP%!28=FL% JHP%?32=`tf: HP%?33=`tb: HP%?34=FC%: HP%?35=BC%: HP%?36=`sf: HP%?37=`sb (HP%?38=`st: HP%?39=0 22HP%!40=SX%: HP%!44=SY%: HP%!48=LX%: HP%!52=LY% < HP%!56=&2D: $(HP%+60)=(197) FHP%!84=NI% P$(HP%+72)=T$,11) Z NI%=0 =HP% d I% n I%=HP%+88 HP%+HS%-1 32 x( WL%,WB%,WR%,WT%,FL%,FC%,BC%,BT%,T$  T$="UPARR" T$=&8B  T$="DOWNAR" T$=&8A +I%!0=WL%: I%!4=WB%: I%!8=WR%: I%!12=WT% 2I%!16=FL%+(BT%<<12): I%?19=(BC%<<4)+(FC% 15) $(I%+20)=T$,11)  I% =HP% mmodel - P%,I%,FC%,BC%,maxch%,NI%,T$,MF%,if%,SM%  FC%,BC%,maxch%,NI%,T$ P%=getvec(28+NI%*24) - P%=0 0,"Cannot start font designer" $P%=T$  P%?12=`mt  P%?13=`mr  P%?14=`mf " P%?15=`mb ,P%!16=maxch%*16+12 6 P%!20=44 @ P%!24=0 J I%=P%+28 T FC%=1 NI% ^ MF%,if%,SM%,T$ h FC%=NI% MF%=MF% &80 r !I%=MF% | SM%  I%!4=mmodel  I%!4=-1  I%!8=if% $(I%+12)=T$,11) I%+=24  =P%  drawfull(BP%,S,X%,Y%)  T%,U%,TP%,BPT% BPT%=Wpt%!8 plotfull(BP%!20,S,X%,Y%)  T%=BP%!16  ȕ T%<>0 &TP%=T%!20 30 0T%!20=T%!20 &7F : TP%=0 D U%=T%!24 N+ U%!4>127 plotpoint(T%,S,X%,Y%,128) X b< (TP%>=4 TP%<8) TP%=10 plotpoint(T%,S,X%,Y%,128) l v T%=!T%  `wf   drawskel(BP%,S,X%,Y%)  T%,U%,TP%,BPT% BPT%=Wpt%!8 plotskel(BP%!20,S,X%,Y%) T%=BP%!16 ȕ T%<>0 TP%=T%!20 30 T%!20=T%!20 &BF U%=T%!24  (TP% 30)=2 0 (U%!4 64)<>0 plotpoint(T%,S,X%,Y%,64)   (TP% 30)=0  (U%!4 &5F)=7 *: T%!12=U%!8 T%!16=U%!12 plotpoint(T%,S,X%,Y%,64) 4 >plotpoint(T%,S,X%,Y%,64) H R \. (TP% 30)=8 plotpoint(T%,S,X%,Y%,64) f p z T%=!T%  `wf   plotpoint(T%,S,X%,Y%,O%)  (T%!20 16)<>0 T%!20=T%!20 O% E T%!12sx1%+50 T%!16sy1%+50 `pt  (T%!20 1)=1 `sp -ȏ Ȑ X%+(T%!12/S)+1.5,Y%+(T%!16/S)+2.5,8   drawch(CP%,X%,Y%,S) BPT%,T%,U%,X0%,X1%,Y0%,Y1% 2X0%=CP%!40: X1%=CP%!48: Y0%=CP%!44: Y1%=CP%!52 BPT%=Wpt%!8  S<=0 $U%=X1%-X0%+250 . S<0 8C Y1%BPT%!24-1000 Y0%=BPT%!24-1000:Y1%=BPT%!24 B LT%=Y1%-Y0%+250 V U%>T% T%=U% `S=T%/56: S<1 S=1 j tX%-=(X0%+X1%)/(S*2) ~Y%-=(Y0%+Y1%)/(S*2) < S<3 plotfull(CP%,S,X%,Y%) plotsmall(CP%,S,X%,Y%)   plotskel(CP%,S,X%,Y%)  sx0%,sx1%,sy0%,sy1% sx0%=(Rx0%-X%)*S-63 sx1%=(Rx1%-X%)*S+63 sy0%=(Ry0%-Y%)*S-63 sy1%=(Ry1%-Y%)*S+63 CP%=0 T%,S% T%=CP%!36 ȕ T%<>0  ok plls T%=!T%   ( plotfull(CP%,S,X%,Y%) 2 sx0%,sx1%,sy0%,sy1% <sx0%=(Rx0%-X%)*S-125 Fsx1%=(Rx1%-X%)*S+125 Psy0%=(Ry0%-Y%)*S-125 Zsy1%=(Ry1%-Y%)*S+125 d CP%=0 n T%,S% x T%=CP%!36 ȕ T%<>0  ok pllf T%=!T%    plotsmall(CP%,S,X%,Y%)  sx0%,sx1%,sy0%,sy1%,T%,S% CP%=0 sx0%=(Rx0%-X%)*S-63 sx1%=(Rx1%-X%)*S+63 sy0%=(Ry0%-Y%)*S-63 sy1%=(Ry1%-Y%)*S+63 E (CP%!44-sy0%)=(CP%!52-sy0%) (CP%!44-sy1%)=(CP%!52-sy1%) ' (CP%!44-sy0%)=(CP%!44-sy1%)  E (CP%!40-sx0%)=(CP%!48-sx0%) (CP%!40-sx1%)=(CP%!48-sx1%) "' (CP%!40-sx0%)=(CP%!40-sx1%) , 6 T%=CP%!36 @ ȕ T%<>0 J `ln Tplotskeline(T%) ^ T%=!T% h r | plls `ln S%=(T%!4 64)<>0  S% `sl Ȏ (T%!4) 63 5 0,1,2,3,4,5,32,33,34,35,36,37: plotskeline(T%)  7: plotsline 9,10,11 `rl plotref(5,(T%!12)/S+Y%)  12,13,14,15 `rl plotref(21,(T%!12)/S+Y%)    pllf  PP% & `ln 0S%=(T%!4 128)<>0 : S% `sl DȎ (T%!4) 63 N 0,1,2,3,4,5 XPP%=BPT%!((T%!40<<2)+60) b? T%!40=0 PP%=0 plotskeline(T%) plotfulline(T%,PP%) l 7: plotsline v 8: plotvref(T%!8/S+X%) 9,10,11 `rl plotref(5,(T%!12)/S+Y%)  12,13,14,15 `rl plotref(21,(T%!12)/S+Y%)    plotref(T%,Y%) # bx%+4,Y%+2: T%,bx%+rx1%,Y%+2   plotvref(X%)  L%  `rl )L%=by%+ry1%: L%-by%>-96 L%=by%-96  X%+1,L%: X%+1,by%+ry0%  * plotsline 4 S% `rl >" T%!8/S+X%+1.5,T%!12/S+Y%+2.5 H# T%!32/S+X%+1.5,T%!36/S+Y%+2.5 R \ plotfulline(T%,PP%) fȎ T%!4 63 p 0,2,4 z bez3 1,3,5,7 Dpenline(T%!8/S+X%,T%!12/S+Y%,T%!32/S+X%,T%!36/S+Y%,T%!44,T%!48)  E T%!52 plotfull(BPT%!((T%!52<<2)+124),S,T%!8/S+X%,T%!12/S+Y%) F T%!56 plotfull(BPT%!((T%!56<<2)+124),S,T%!32/S+X%,T%!36/S+Y%)   plotskeline(T%) Ȏ T%!4 63 0,2,4 bez2 1,3,5,7 " T%!8/S+X%+1.5,T%!12/S+Y%+2.5 # T%!32/S+X%+1.5,T%!36/S+Y%+2.5   (T%!4 32)<>0 E T%!52 plotskel(BPT%!((T%!52<<2)+124),S,T%!8/S+X%,T%!12/S+Y%) $F T%!56 plotskel(BPT%!((T%!56<<2)+124),S,T%!32/S+X%,T%!36/S+Y%) . 8 bez1(T%,S,X%,Y%) B R%,U% LR%=bezwork V0O%(0,0)=T%!8/S+X%+1.5:O%(0,1)=T%!12/S+Y%+2.5 ` O%(0,0),O%(0,1) j U%=1 8 t!!R%=T%!8+(U%*(T%!16-T%!8)>>3) ~$R%!4=T%!12+(U%*(T%!20-T%!12)>>3) $R%!8=T%!16+(U%*(T%!24-T%!16)>>3) %R%!12=T%!20+(U%*(T%!28-T%!20)>>3) %R%!16=T%!24+(U%*(T%!32-T%!24)>>3) %R%!20=T%!28+(U%*(T%!36-T%!28)>>3) !R%=!R%+(U%*(R%!8-!R%)>>3) "R%!4=R%!4+(U%*(R%!12-R%!4)>>3) "R%!8=R%!8+(U%*(R%!16-R%!8)>>3) %R%!12=R%!12+(U%*(R%!20-R%!12)>>3) .O%(U%,0)=(!R%+(U%*(R%!8-!R%)>>3))/S+X%+1.5 1O%(U%,1)=(R%!4+(U%*(R%!12-R%!4)>>3))/S+Y%+2.5  13,O%(U%,0),O%(U%,1)   unbez1  U%  O%(0,0),O%(0,1) (' U%=1 8: 13,O%(U%,0),O%(U%,1): 2 < bez2 F R%,U% PR%=bezwork Z" T%!8/S+X%+1.5,T%!12/S+Y%+2.5 d U%=4 32 4 n!!R%=T%!8+(U%*(T%!16-T%!8)>>5) x$R%!4=T%!12+(U%*(T%!20-T%!12)>>5) $R%!8=T%!16+(U%*(T%!24-T%!16)>>5) %R%!12=T%!20+(U%*(T%!28-T%!20)>>5) %R%!16=T%!24+(U%*(T%!32-T%!24)>>5) %R%!20=T%!28+(U%*(T%!36-T%!28)>>5) !R%=!R%+(U%*(R%!8-!R%)>>5) "R%!4=R%!4+(U%*(R%!12-R%!4)>>5) "R%!8=R%!8+(U%*(R%!16-R%!8)>>5) %R%!12=R%!12+(U%*(R%!20-R%!12)>>5) L (!R%+(U%*(R%!8-!R%)>>5))/S+X%+1.5,(R%!4+(U%*(R%!12-R%!4)>>5))/S+Y%+2.5   bez3 R%,U% R%=bezwork `BZ1=T%!8/S+X% `BZ2=T%!12/S+Y% "`BZ6=T%!44:`BZ5=T%!48-T%!44 , U%=4 32 4 6!!R%=T%!8+(U%*(T%!16-T%!8)>>5) @$R%!4=T%!12+(U%*(T%!20-T%!12)>>5) J$R%!8=T%!16+(U%*(T%!24-T%!16)>>5) T%R%!12=T%!20+(U%*(T%!28-T%!20)>>5) ^%R%!16=T%!24+(U%*(T%!32-T%!24)>>5) h%R%!20=T%!28+(U%*(T%!36-T%!28)>>5) r!R%=!R%+(U%*(R%!8-!R%)>>5) |"R%!4=R%!4+(U%*(R%!12-R%!4)>>5) "R%!8=R%!8+(U%*(R%!16-R%!8)>>5) %R%!12=R%!12+(U%*(R%!20-R%!12)>>5) &`BZ3=(!R%+(U%*(R%!8-!R%)>>5))/S+X% )`BZ4=(R%!4+(U%*(R%!12-R%!4)>>5))/S+Y% `BZ7=`BZ5*U%/32+T%!44 +penline(`BZ1,`BZ2,`BZ3,`BZ4,`BZ6,`BZ7) #`BZ1=`BZ3: `BZ2=`BZ4: `BZ6=`BZ7    matchbez  R%,U%,A%,B%,C%,D%,E%, R%=bezwork A%=X0%:B%=Y0%  U%=4 32 4 !R%=X0%+(U%*(T%!16-X0%)>>5)  R%!4=Y0%+(U%*(T%!20-Y0%)>>5) &$R%!8=T%!16+(U%*(T%!24-T%!16)>>5) 0%R%!12=T%!20+(U%*(T%!28-T%!20)>>5) :#R%!16=T%!24+(U%*(X1%-T%!24)>>5) D#R%!20=T%!28+(U%*(Y1%-T%!28)>>5) N!R%=!R%+(U%*(R%!8-!R%)>>5) X"R%!4=R%!4+(U%*(R%!12-R%!4)>>5) b"R%!8=R%!8+(U%*(R%!16-R%!8)>>5) l%R%!12=R%!12+(U%*(R%!20-R%!12)>>5) vC%=!R%+(U%*(R%!8-!R%)>>5) E%=R%!4+(U%*(R%!12-R%!4)>>5) section%=U% *K%=mx%*(B%-E%)+my%*(C%-A%)+A%*E%-B%*C%  (C%-A%)=(E%-B%) D%=(A%+B%-E%-C%)*d%  D%=(A%+E%-B%-C%)*d%   (K%+D%)<>(K%-D%) K%=C%:D%=E%  A%>K% Ȕ A%,K%  B%>D% Ȕ B%,D% < mx%+d%>=A% mx%-d%<=K% my%+d%>=B% my%-d%<=D% =  A%=C%:B%=E%  = * penline(X1,Y1,X2,Y2,R1,R2) 4`P1=R1/(S*100) >`P2=R2/(S*100) H`P00%=PP%!20*`P1+X1+0.5 R`P01%=PP%!24*`P1+Y1+0.5 \`P02%=PP%!28*`P1+X1+0.5 f`P03%=PP%!32*`P1+Y1+0.5 p`P04%=PP%!36*`P1+X1+0.5 z`P05%=PP%!40*`P1+Y1+0.5 `P10%=PP%!20*`P2+X2+0.5 `P11%=PP%!24*`P2+Y2+0.5 `P12%=PP%!28*`P2+X2+0.5 `P13%=PP%!32*`P2+Y2+0.5 `P14%=PP%!36*`P2+X2+0.5 `P15%=PP%!40*`P2+Y2+0.5  PP%!4=0 `P06%=`P00%+`P04%-`P02% `P07%=`P01%+`P05%-`P03% `P16%=`P10%+`P14%-`P12% `P17%=`P11%+`P15%-`P13% H`P1%=`P00%*(`P03%-`P13%)+`P01%*(`P12%-`P02%)+`P02%*`P13%-`P03%*`P12% H`P2%=`P12%*(`P03%-`P05%)+`P13%*(`P04%-`P02%)+`P02%*`P05%-`P03%*`P04%  (`P1%)=(`P2%)  `P2%>0 0 `P00%,`P01%: `P02%,`P03%: 85,`P04%,`P05% $0 `P10%,`P11%: `P16%,`P17%: 85,`P14%,`P15% . 80 `P00%,`P01%: `P06%,`P07%: 85,`P04%,`P05% B0 `P10%,`P11%: `P12%,`P13%: 85,`P14%,`P15% L V0 `P00%,`P01%: `P04%,`P05%: 85,`P10%,`P11% `0 `P10%,`P11%: `P14%,`P15%: 85,`P04%,`P05% j t `P2%>0 ~0 `P02%,`P03%: `P04%,`P05%: 85,`P06%,`P07% 0 `P10%,`P11%: `P16%,`P17%: 85,`P12%,`P13%  0 `P00%,`P01%: `P06%,`P07%: 85,`P02%,`P03% 0 `P12%,`P13%: `P14%,`P15%: 85,`P16%,`P17%  0 `P02%,`P03%: `P06%,`P07%: 85,`P12%,`P13% 0 `P12%,`P13%: `P16%,`P17%: 85,`P06%,`P07%   3 `P00%,`P01%: `P02%-2,`P03%: 205,`P04%,`P05% 3 `P10%,`P11%: `P12%-2,`P13%: 205,`P14%,`P15% &`P00%=`P00% -2: `P01%=`P01% -4 &`P10%=`P10% -2: `P11%=`P11% -4 $`P2=`P10%-`P00%: `P3=`P11%-`P01%  `P0=4*S*S `P6=(PP%!8*PP%!8)/`P0 (`P7=(PP%!12*PP%!12)/`P0 2 `P0=|(PP%+44): `P1=|(PP%+52) <`P4=`P2*`P1-`P3*`P0 F`P5=`P3*`P1+`P2*`P0 P (`P4)<(`P5) Z`P2=`P4/`P5 d`P3=(`P2*`P2*`P7+`P6) n`P4=-`P6/`P3 x`P5=`P7*`P2/`P3   `P4<1 `P2=`P5/`P4 `P3=(`P2*`P2*`P6+`P7) `P4=-`P6*`P2/`P3 `P5=`P7/`P3  `P6=`P4*`P1+`P5*`P0 `P7=`P5*`P1-`P4*`P0 `P16%=`P6*R2/100+0.5 `P17%=`P7*R2/100+0.5 `P06%=`P6*R1/100+0.5 `P07%=`P7*R1/100+0.5 8 `P00%+`P06%,`P01%+`P07%: `P00%-`P06%,`P01%-`P07%  85,`P10%+`P16%,`P11%+`P17% 8 `P10%+`P16%,`P11%+`P17%: `P10%-`P16%,`P11%-`P17% " 85,`P00%-`P06%,`P01%-`P07% , 6 @ ok J T%!52 T%!56 = T lx0%,lx1%,ly0%,ly1% ^boundL(T%) h (T%!4 31)<>8 r= (ly0%-sy0%)=(ly1%-sy0%) (ly0%-sy1%)=(ly1%-sy1%) |$ (ly0%-sy0%)=(ly0%-sy1%) =   (T%!4 31)>8 =  = (lx0%-sx0%)=(lx1%-sx0%) (lx0%-sx1%)=(lx1%-sx1%) $ (lx0%-sx0%)=(lx0%-sx1%) =  =  > &.apps.MusicEd  (c) Acorn Computers 1987  Version 1.01 :  error: INITIALISED%=initialise  error ( 2 <=PLAYING% B1%=B2%:ș Sound_QBeat B2%:B2%PTIME% 6PTIME%=+10 @"Imminent_KEY%+=Imminent_KEY%>0 Jhighlight_pointer TSCORING% symbol_pointer ^ h= r redraw_window_request | R% (ș Redraw_Window,,Window+handle R%  ȕ R% Ȏ Window!handle & Description_W%:draw_description  Score_W%:draw_staves # Confirm_W%:draw_confirmation  (ș Get_Rectangle,,Window+handle R%    open_window_request  release !ș Open_Window,,Window+handle   close_window_request  W%,O% & release 0Ȏ Window!handle :- Description_W%:O%=MH_Describe(O_Exit%) D+ Score_W%:close_window(Window!handle) N X%O%=match_option(7,Window!handle) b O% lOO%=O%:O$=O$(O%) vdo_option(O_Exit%)  #O%=match_menu(1,Window!handle) O% close_menu(O%)     open_window(W%,U%) Window!handle=W% &ș Get_Window_State,,Window+handle Window!under=U% !ș Open_Window,,Window+handle   move_window(W%,X%,Y%,U%)  x%,y%  Window!handle=W% &ș Get_Window_State,,Window+handle  #x%=X%-Window!x0:y%=Y%-Window!y1 *Window!x0+=x%:Window!x1+=x% 4Window!y0+=y%:Window!y1+=y% >Window!under=U% H!ș Open_Window,,Window+handle R \ check_window(W%,U%) fWindow!handle=W% p&ș Get_Window_State,,Window+handle zE %1Window?status Window!under=U%:ș Open_Window,,Window+handle   close_window(W%) Window!handle=W% "ș Close_Window,,Window+handle   pointer_leaving_window )Window!handle=Confirm_W% confirm()   mouse_button_click B%,C%,W%,I% !W%=Mouse!window:I%=Mouse!icon 6B%=%111Mouse!buttons:C%=B%%111Mouse!old_buttons 'Mouse_X%=Mouse!x0:Mouse_Y%=Mouse!y0 B%=%010C%=%010 W%=Confirm_W% confirm() open_menu(Menu_Root%+1,) $ . Ȏ W% 8 Score_W% BfB%=%100C%=%100SCORING%SCRIBE%(drawn%) put_down B%=%001C%=%001 play():release:SCORING%= L Confirm_W%:confirm() V Description_W% ` jB%C%%101 tO% ~ release O%=match_option(7,W%)  O% B%=Adj%(B%%1)>0 ZOO%=O%:O$=O$(O%):I%>=0 select_item(B%I%):set_option(O%(OO%,Menu%),O%(OO%,Option%))  O%=match_menu(1,W%) *O% MO%=O%:I%>=0 select_option(I%+1)   keyboard       key_pressed  *FX21,0 PLAYING%Window!key=27 ( play() 2 < !Icon F.input_key(Window!handle,!Icon,Window!key) P ZȎ Window!handle d, Menu_W%(M%(MO%)):menu_key(Window!key) n2 List_W%(O%(OO%,List%)):list_key(Window!key) x) Confirm_W%:confirm_key(Window!key)      keyboard W% WCONFIRM%>0 W%=Confirm_W% OO% W%=List_W%(O%(OO%,List%)) MO% W%=Menu_W%(M%(MO%)) ,W% șSet_Caret_Position,W%,,,,&2000000   keyoff șSet_Caret_Position,,   highlight(W%,I%,S%) Window!handle=W%:!Icon=I% ZS% Icon!state=C_High<<28 ș Get_Icon_Info,,Icon+handle:Icon!state=5-(Icon?23&F)<<27 Icon!mask=&F0000000 ""ș Set_Icon_State,,Icon+handle , 6 select(W%,I%,S%) @Window!handle=W%:!Icon=I% JIcon!state=S%<> &200000 TIcon!mask=&200000 ^"ș Set_Icon_State,,Icon+handle h r outline(W%,I%,S%) |Window!handle=W%:!Icon=I% Icon!state=S%<> %100 Icon!mask=%100 "ș Set_Icon_State,,Icon+handle   input_key(W%,I%,K%) OO%=match_option(7,W%) O$=O$(OO%)  Ȏ K%  27:do_option(O_Exit%)  13:do_option(I%) * 138,139:do_option(I%):list_key(K%)    menu_key(K%) Imminent_KEY%= L% & Ȏ K% 0# 27:ș Get_Pointer_Info,,Mouse :)%111Mouse!buttons close_menu(MO%) D\ 13:Menu_OPTION%(0) MO%=match_menu(0,Menu_OPTION%(0)):select_option(Menu_OPTION%(1)) N XK%=key_option(K%) b K% lL%=match_option(6,K%) v L%  OO%=L% O$=O$(OO%) .set_option(O%(OO%,Menu%),O%(OO%,Option%)) +open_window(List_W%(O%(OO%,List%)),-1)  keyboard  highlight_option(K%) describe(0,K%) Imminent_KEY%=15      list_key(K%)  Imminent_KEY%>0MO% Imminent_KEY%=  menu_key(K%) * 4S%,L%,I%,V% > release H Ȏ K% R 27:do_option(O_Exit%) \D 13:O%(OO%,Item%)>=0 select_item(O%(OO%,Item%)Adj%SCORING%) f 136,137,138,139 p%L%=O%(OO%,List%):I%=O%(OO%,Item%) zPK%>137 K%=(138.5-K%) K%=(K%-136.5)*(List_Items%(L%)List_Columns%(L%)+1) =0 S%=SCORING%O%(OO%,State%)<>0List_Flag%(L%,I%)2 S% I%=bit(O%(OO%,State%))   I%+=K%  V%=I%>=0I%<=List_Items%(L%)  V%List_Select%(L%)%1<48K%<58 I%=(K%&F)-1 VI%>=0I%<=List_Items%(O%(OO%,List%)) describe(1,I%):select_item(I%):List_KEY%=  MO% menu_key(K%)    $ . describe(S%,N%) 8O% B' S%=0 O%=M%(MO%) O%=O%(OO%,List%) L~O%>0 O%<>DESCRIPTION%(0) N%<>DESCRIPTION%(2) DESCRIPTION%(0)=O%:DESCRIPTION%(1)=S%:DESCRIPTION%(2)=N%:new_description V ` new_description jDESCRIBING% t R%,C% ~ Window!handle=Description_W% OWindow!x0=0:Window!y0=-C_Height%-Vi%*2:Window!x1=S_Width%-Hi%*2:Window!y1=0 (ș Update_Window,,Window+handle R% &DL%=(Window!x1-Window!x0)/C_Width% ȕ R%  draw_description (ș Get_Rectangle,,Window+handle R%     draw_description  O% DN$,D$ O%=DESCRIPTION%(2) Ȏ DESCRIPTION%(1)  0 (LO% O%=option_n(DESCRIPTION%(0),O%)+1 O%=menu_name(DESCRIPTION%(0))-1 2DN$=menu_OPTION(O%+1)+": " <"?O% D$=Menu_Description$(?O%) F 1 P{List_Flag%(DESCRIPTION%(0),O%)2(List_Flag%(DESCRIPTION%(0),O%)&F000)=&F000 DN$=List_Item$(DESCRIPTION%(0),O%)+": " Z,D$=List_Description$(DESCRIPTION%(0),O%) d nIprint(Window!x0-Window!scx,Window!y1-C_Height%-2*Vi%," "+DN$+D$,DL%) x  open_menu(M%,P%) MO%=match_menu(0,M%) &MO% MOP%+=1:M%(MOP%)=M%:MO%=MOP% Window!handle=Menu_W%(M%) &ș Get_Window_State,,Window+handle P%  T% 'T%=Mouse_X%-(Window!x0+Window!x1)2 Window!x0+=T%:Window!x1+=T% T%=Mouse_Y%-Window!y1 Window!y0+=T%:Window!y1+=T%  Window!under=-1 !ș Open_Window,,Window+handle NMenu_BASE%(M%)>0 P%=match_option(6,Menu_BASE%(M%)):P% OO%=P%:O$=O$(OO%)  keyboard " , close_menu(H%) 6 keyoff @M%:M%=M%(H%) J"close_window(Menu_W%(M%(H%))) TM%(H%)=M%(MOP%) ^ MOP%-=1 hMO%>MOP% MO%=MOP% rXMenu_BASE%(M%(MO%))>0 M%=match_option(6,Menu_BASE%(M%(MO%))):M% OO%=M%:O$=O$(OO%) | keyboard   match_menu(T%,V%) H% H%=MOP% AT% ȕMenu_W%(M%(H%))<>V%H%:H%+=: ȕM%(H%)<>V%H%:H%+=: =H%  select_option(O%) P%,o% Imminent_KEY%= P%=option_n(M%(MO%),O%) ?P%=0 set_option(M%(MO%),O%) OO%=match_option(6,O%) zOO% O$=O$(OO%):open_window(List_W%(O%(OO%,List%)),-1) O$=name_option(M%(MO%),P%+2):CONFIRM%=:do_option(O_Entry%)  keyboard  & OO%=0 0open_menu(?P%,) : D N option_n(M%,N%) X P% bP%=MP%(M%) l&N%>0 N%=N%1-1:P%+=$P%,Sep$): v=P%  set_option(M%,O%) Menu_BASE%(M%)<>O% U% U%=Menu_BASE%(M%) #O% select(Menu_W%(M%),O%-1,) #U% select(Menu_W%(M%),U%-1,) Menu_BASE%(M%)=O%    key_option(C%) C%=alphanumeric(C%) C%<0 = P%,I%  F%,O% P%=MP%(M%(MO%)):I%=2 O%=0  * O%+=1 4 P%+=I% >I%=$P%,Sep$,3) HF%=$P%,C%,3) R P%?I%=13 F%F%96 I%-=32 N$=I%+N$ M%=?MP%(M%) M%=Menu_Root% ="FN"+N$+"(R%)"  do_option(R%) play(O$PLAYING%)   highlight_option(O%) 6 M%(MO%)<>Menu_OPTION%(0) O%<>Menu_OPTION%(1) MMenu_OPTION%(0) highlight(Menu_W%(Menu_OPTION%(0)),Menu_OPTION%(1)-1,) O%>0 Menu_OPTION%(0)=M%(MO%):Menu_OPTION%(1)=O%:highlight(Menu_W%(Menu_OPTION%(0)),O%-1,):List_KEY%= Menu_OPTION%(0)=0    select_item(I%) $i%:i%=I%Adj%+ .HList_Select%(O%(OO%,List%))%1<0M%=M%(MO%) OO%=match_option(6,Menu_BASE%(M%)) OO%=match_option(Menu%,M%) O$=O$(OO%) (OO% set_option(M%,O%(OO%,Option%))  keyboard   match_option(T%,V%) O%  O%=OOP%  Ȏ T% . 5:ȕMenu_W%(O%(O%,Menu%))<>V%O%:O%+=: ? 6:ȕ(O%(O%,Menu%)<>M%(MO%)O%(O%,Option%)<>V%)O%:O%+=: . 7:ȕList_W%(O%(O%,List%))<>V%O%:O%+=: "ȕO%(O%,T%)<>V%O%:O%+=: , 6=O% @ list_set(S%,M%,N%) JC% TM(O%(OO%,State%)S%)=S% S%=O%(OO%,State%)S% S%=O%(OO%,State%)M%S%M% ^-N% (S%N%)= C%=(O%(OO%,State%)S%)M% h5C% O%(OO%,State%)=set_list(O%(OO%,List%),C%,S%) r | list_reset(L%,S%) O% O%=match_option(List%,L%) lO% O%(O%,State%)=set_list(L%,O%(O%,State%)S%,S%) List_STATE%(L%)=set_list(L%,List_STATE%(L%)S%,S%)   set_list(L%,C%,S%) B% B%= ȕ(%1<O%(OO%,Item%) FO%(OO%,Item%)>=0 outline(List_W%(O%(OO%,List%)),O%(OO%,Item%),) SI%>=0 O%(OO%,Item%)=I%:outline(List_W%(O%(OO%,List%)),I%,) O%(OO%,Item%)=-1 & 0 : confirm(C%) DCONFIRM%=C% N Ȏ C% X 1,2,3 bș Get_Pointer_Info,,Mouse l'Mouse_X%=Mouse!x0:Mouse_Y%=Mouse!y0 vWindow!handle=Confirm_W% CWindow!x0=Mouse_X%-4.5*C_Width%:Window!x1=Mouse_X%+4.5*C_Width% AWindow!y0=Mouse_Y%-2*C_Height%:Window!y1=Mouse_Y%+2*C_Height% -Window!scx=0:Window!scy=0:Window!under=-1 !ș Open_Window,,Window+handle  close_window(Confirm_W%) do_option(O_Exit%)  close_window(Confirm_W%) do_option(O_Entry%)   keyboard   draw_confirmation  +4,Window!x0+C_Width%2,Window!y1-5*Vi% Ȏ CONFIRM%   1 *"Abandon" 4BYC_Width%2,0:"current" >BYC_Width%2,0:"score?" H 2 R"Replace" \BYC_Width%2,0:"existing" fBYC_Width%2,0:"file?" p 3 z " Are" BYC_Width%2,0:" you" BYC_Width%2,0:" sure?"    confirm_key(K%) Imminent_KEY%= L%  Ȏ K%  27,"N","n":confirm()  13,"Y","y":confirm()    highlight_pointer  W%,I%,O% ș Get_Pointer_Info,,Mouse !W%=Mouse!window:I%=Mouse!icon $O%=match_menu(1,W%) . O% 8MO%:MO%=O% BBI%>=0 I%+=1:highlight_option(I%):List_KEY% describe(0,I%) L VO%=match_option(7,W%) ` O% jOO%:OO%=O% t]I%>=0 List_Select%(O%(OO%,List%))%1<0 W%<>Confirm_W% confirm()     symbol_pointer ș Get_Pointer_Info,,Mouse EMouse!window=Score_W%Mouse!buttons= scribe(Mouse!x0,Mouse!y0)   M_eXit(R%)  Ȏ R%  O_Entry%  CONFIRM%= CHANGED%=  EXIT%= set_option(M%(MO%),0) ( 2confirm(1) < F$ O_Exit%:set_option(M%(MO%),0) P Z= d MH_Describe(R%) n Ȏ R% x O_Entry% #open_window(Description_W%,-1) DESCRIBING%= set_option(M%(MO%),0)  O_Exit% !close_window(Description_W%) DESCRIBING%=  O_Initialise% cdefine_window(0,0,S_Width%-Hi%*2,C_Height%+Vi%*2,&B,,"DESCRIBE",C_Text,C_Menu,C_Music,C_Bkgd) -ș Create_Window,,Window Description_W% DESCRIBING%= &DL%=(Window!x1-Window!x0)C_Width%  =  MS_Clear(R%)  Ȏ R%  O_Entry% "CONFIRM%= CHANGED%= ,GATE%=MUSIC%+2 6FINE%()=MUSIC%() @PP%=MUSIC%:P%()=MUSIC%() Jstart_music Trescore(0) ^CHANGED%= hset_option(M%(MO%),0) r |confirm(1)  $ O_Exit%:set_option(M%(MO%),0)  =  MS_Volume(R%)  R%>=0 R%=R%Adj% !list_set(%1<=Adj% R%-=Adj%  R%>=0 CHANGED%= * Ȏ R% 4- 0:list_set(%001,%101,%111):new_staves >- 1:list_set(%010,%110,%111):new_staves H- 2:list_set(%100,%111,%111):new_staves R0 4:list_set(%010000,%110000,0):new_staves \0 5:list_set(%100000,%110000,0):new_staves f O_Entry% pcheck_window(Score_W%,-2) zopen_option(Stave_list%)  O_Exit%:close_option  O_Initialise% Max_Stave%=3  Li%=2*Vi% Stave_Height%=Li%*8  Y_STAVE%(Max_Stave%+2)  STAVE%=0  PERC%=0 'Stave_list%=define_list("STAVE",1) Mlist_item("VOICE:One stave (may be an accompaniment to Keyboard)",&3031) Ilist_item("KEYBOARD:Two staves (may be accompanied by Voice)",&3031) *list_item("CHORUS:Four staves",&3031) list_item("",0) 2list_item("SINGLE:One percussion line",&3031) 3list_item("DOUBLE:Two percussion lines",&3031) end_list(Stave_list%) $0List_STATE%(Stave_list%)=PERC%<<4 STAVE%+1 .&Score_Width%=S_Width%-B_Width%-Hi% 8position_staves Bwdefine_window(Hi%,S_Height%-B_Height%+Vi%,Score_Width%,Score_Height%,&F,,"The Score",C_Text,C_Menu,C_Stav,C_Bkgd) L'ș Create_Window,,Window Score_W% Vsetup_staves ` j= t new_staves ~ S%,P% S%=(O%(OO%,State%)7)-1 P%=O%(OO%,State%)>>4 9S%<>STAVE%P%<>PERC% STAVE%=S%:PERC%=P%:setup_score   setup_score  S%,P% setup_staves 1S%=07:S_C%(S%)=Stave_Channels%(STAVE%,S%): ?P%=0:ȕP%STAVE%))+";") (HList_Description$(Instrument_list%,S%8)=Voice$(Instrument%(S%,2),1) 2Cupdate_item(Instrument_list%,S%8,Voice$(Instrument%(S%,2),0)) =Adj% R%-=Adj%:S%=1 %R%>=0 CHANGED%=:r%=R%8:R%=R%8  Ȏ R%  1 BInstrument%(r%,2)=(Instrument%(r%,2)+S%+NVoices%-1)NVoices%+1 /ș Sound_AttachVoice,r%+1,Instrument%(r%,2) HList_Description$(Instrument_list%,r%8)=Voice$(Instrument%(r%,2),1) Cupdate_item(Instrument_list%,r%8,Voice$(Instrument%(r%,2),0))  2 R%=Instrument%(r%,0) M% M%=L%  R%=1NVoices%-1 L%=R%+1NVoices% 7ȕcut(Voice$(L%,1),M%)=cut(Voice$(R%,1),M%)M%<30  M%+=1    R%=1NVoices% 4Voice$(R%,0)=cut(Voice$(R%,1),M%)+M%," "),M%)   R%=07  >ș Sound_AttachVoice,R%+1,0 L%,S%:S%<1S%>NVoices% S%=1 ș Sound_AttachVoice,L%,S%  Instrument%(R%,0)=R% * Instrument%(R%,1)=S_C%(R%)+1 4Instrument%(R%,2)=S% > Hsort_instruments R1Instrument_list%=define_list("INSTRUMENT",4) \ R%=07 f2S%=Instrument%(R%,1):S%-1>STAVE% S%+=3-STAVE% p#list_item(Nth$(S%)+"; ",&371) z  R%=07 S%=Instrument%(R%,2) 3list_item(Voice$(S%,0)+":"+Voice$(S%,1),&3131)   R%=07 list_item(List_Item$(Volume_list%,Volumes%(Instrument%(R%,0)))+":"+List_Description$(Volume_list%,Volumes%(Instrument%(R%,0))),&3131)  NStereos%=6 A Stereo%(NStereos%),Stereo$(NStereos%,1),Stereo_Position%(7) ެStereo$(0,0)="Full left":Stereo$(1,0)="Left":Stereo$(2,0)="Centre left":Stereo$(3,0)="Centre":Stereo$(4,0)="Centre right":Stereo$(5,0)="Right":Stereo$(6,0)="Full right" R%=0NStereos% &Stereo%(R%)=(2*R%/NStereos%-1)*127 6Stereo$(R%,1)="Stereo position ("+Stereo%(R%)+")"   R%=07 $Stereo_Position%(R%)=NStereos%2 $6ș Sound_Stereo,R%+1,Stereo%(Stereo_Position%(R%)) .}list_item(Stereo$(Stereo_Position%(Instrument%(R%,0)),0)+" :"+Stereo$(Stereo_Position%(Instrument%(R%,0)),1),&3131) 8 Bend_list(Instrument_list%) L#List_STATE%(Instrument_list%)=0 V ` j= tݤcut(C$,L%):I%,S% ~)S%=I%:I%=C$," ",S%+1):I%-1>L%I%= S% =C$,S%-1) =C$,L%)  sort_instruments  I%,J%,S%  I%=06 J%=I%+17 , Instrument%(J%,1)<=Instrument%(I%,1) ā Instrument%(J%,1)=0  R%=R%Adj% !list_set(%1<2(P%5)=0)*7-1-(C%-1>>1)-2*(C%=2)    #Key_list%=define_list("KEY",2) 5list_item("0:Number of accidentals (0-7)",&2171) Elist_item("accidental%+2:Type of accidental (Sharp/Flat)",&303A) !end_list(Key_list%) ! List_STATE%(Key_list%)=0 ! ! R%<0 KEY_SIG%(1) R%=accidental%+2+KEY_SIG%(0):X%(key%)=(x%(R%)+X%(R%))*KEY_SIG%(1):R%= X%(key%)=x%(accidental%+2)+X%(accidental%+2) !* =R%<0 !4 MT_Time(R%) !> Ȏ R% !H 0,1 !Rcheck_window(Score_W%,-2) !\attach(time%,%1) !f"FONT% list_set(%11,%11,%11) !p- Adj%+0:TIME_SIG%(0)=(TIME_SIG%(0)+1)16 !z0update_item(Time_list%,0,(TIME_SIG%(0)+1)) !. Adj%+1:TIME_SIG%(1)=(TIME_SIG%(1)-1)4+2 !3update_item(Time_list%,1,(1<=0R%=0R% 0,1,2,5,6,9,10:attach(accidental%+R%-R%4*2+1,%1100000) #, 3,7,11:attach(dot%+(R%+1)4,%1101000) # 4:attach(tie%,%1101000) # 8:attach(bar%,%10010000) #( O_Entry%:open_option(Other_list%) #4 O_Exit%:list_set(&4000,&3FFF,0):close_option # O_Initialise% #'Other_list%=define_list("OTHER",3) #-list_item("accidental%+1:Natural",&303A) #+list_item("accidental%+2:Sharp",&303A) #*list_item("accidental%+3:Flat",&303A) #&list_item("dot%+1:One dot",&303A) # list_item("tie%:Tie",&303A) #2list_item("accidental%+4:Double sharp",&303A) $1list_item("accidental%+5:Double flat",&303A) $'list_item("dot%+2:Two dots",&303A) $%list_item("bar%:Bar line",&303A) $"3list_item("accidental%+6:Natural sharp",&303A) $,2list_item("accidental%+7:Natural flat",&303A) $6)list_item("dot%+3:Three dots",&303A) $@end_list(Other_list%) $JList_STATE%(Other_list%)=0 $T $^ =R%<0 $h MC_Begin(R%) $r Ȏ R% $| O_Entry% $BP%>MUSIC% $ release $start_music $rescore(0) $ $set_option(M%(MO%),0) $ $= $ MC_Rewind(R%) $R%=O_Entry% $BP%>MUSIC% $ release $start_bar %back_bar(1) % %set_option(M%(MO%),0) %& %0= %: MC_Stop(R%) %D Ȏ R% %N O_Entry% %X play() %b release %lGP%=PP%:N%()=P%() %vback_bar(3) %set_option(M%(MO%),0) % %= % play(P%) %,PLAYING%P%= PLAYING%=:ș Sound_QInit % % MC_Play(R%) % Ȏ R% % O_Entry% % release %SCORING%= %play_start %set_option(M%(MO%),0) & O_Initialise% &  &= &  MC_Forward(R%) &* Ȏ R% &4 O_Entry% &>PX% &Hstart_bar &RR%=BBAR%+1 &\"skip_gate:BAR%>R%GP%=GATE% &fBAR%>R% &p release &zGP%-=2:BAR%=R% & set_bar &rescore(0) & &set_option(M%(MO%),0) & &= & MC_End(R%) & Ȏ R% & O_Entry% & release &GP%=GATE%:N%()=FINE%() & GP%?-1=Bar%GP%?-2= GP%-=2 &back_bar(1) 'set_option(M%(MO%),0) ' '= '$ MR_Catalogue(R%) '. R%>0 '8R%=R%Adj% 'Blist_set(%1< 'FșSet_Caret_Position,List_W%(Catalogue_list%),R%,,,R%R%&2000000 '.FONT% list_set(1,1,) list_set(1,,) 'FILENAME%=0 ', O_Entry%:open_option(Catalogue_list%) ' O_Exit%:close_option '( O_Initialise%:make_catalogue_list '"List_STATE%(Catalogue_list%)=0 'FILENAME%=0 ' ' '= ' make_catalogue_list (F$,I%,M$,T%,L%,A%,F% ( 0Catalogue_list%=define_list("CATALOGUE",-3) (=0 (2F$=$String_Space% (< șOS_File,5,F$ T%,,,,L%,A% (FT%=1A%1L%>8 (P FILE%=F$ (Z M$="":I%=17:M$+=#FILE%: (dFM$="Maestro" list_item(F$,11)+":Of length "+L%+" bytes",&3031) (n#FILE%:FILE%= (x (F%=get_name(F%) ( (end_list(Catalogue_list%) ( ( get_name(N%) (S%:S%=String_Space% (4ș"OS_GBPB",9,"",S%,1,N%,256,"*" ,,,,N%: SKS (ȕ?S%:S%+=1::?S%=13: SKS (=N% (m filename:FILENAME%>0 =List_Item$(Catalogue_list%,FILENAME%) =icon_text(List_W%(Catalogue_list%),0) ( new_catalogue (S%,X%,Y%,U%,F$ (-F$=icon_text(List_W%(Catalogue_list%),0) )*Window!handle=List_W%(Catalogue_list%) )&ș Get_Window_State,,Window+handle )AS%=%1Window?status:U%=Window!under:X%=Window!x0:Y%=Window!y1 )"#redefine_list(Catalogue_list%) ),make_catalogue_list )67S% move_window(List_W%(Catalogue_list%),X%,Y%,U%) )@>S%=match_option(List%,Catalogue_list%):S% O%(S%,Item%)= )JGFILENAME%FONT%= highlight(List_W%(Catalogue_list%),FILENAME%,) )T&update_item(Catalogue_list%,0,F$) )^ )h MR_Load(R%) )r Ȏ R% )| O_Entry% )CONFIRM%= CHANGED%= )load_music(filename) )set_option(M%(MO%),0) ) )confirm(1) ) )$ O_Exit%:set_option(M%(MO%),0) ) )= ) load_music(F$) )T%,F%,L%,A%,M$ )F%=FILENAME% )>F%=0F$ șOS_File,5,F$ T%,,,,L%,A%:F%=(T%=1)A%1L%>8 * F% * FILE%=F$ * M$="":R%=17:M$+=#FILE%: *&B%=#FILE% *0M$="Maestro" *:T%= *DȎ #FILE% *N 0:T%= *X 1 *b*lTempo:lInstruments:lStaves:lMusic *l" File id version 2 and above *vA%= * *N #FILE% lMusic,lStaves,lInstruments,lVolumes,lStereos,lTempo A%= *#FILE%A% * * T% *'list_reset(Tempo_list%,%1<#FILE%,GATE%:GATE%+=MUSIC% +H C%=07 +R+#FILE%,FINE%(C%):FINE%(C%)+=MUSIC%(C%) +\ +f,B%=MUSIC%:ȕB%ș Sound_AttachVoice,Instrument%(C%,0)+1,Instrument%(C%,2) , , , lVolumes ,$C% ,. C%=07 ,8Volumes%(C%)=#FILE% ,B ,L ,V lStereos ,`C% ,j C%=07 ,t Stereo_Position%(C%)=#FILE% ,~6ș Sound_Stereo,C%+1,Stereo%(Stereo_Position%(C%)) , , , lTempo ,set_tempo(#FILE%) , , MR_Save(R%) , Ȏ R% , O_Entry% , F$,A% ,F$=filename ,R%= ,confirm(3) 0H 0R 0\7 0fset_option(M%(MO%),0) 0p 0z$ O_Exit%:set_option(M%(MO%),0) 0 0= 0 print(X%,Y%,S$,W%) 0FONT%S$>W% 0S% 0ș Select_Font,Thin_Font% 0:ș String_Width,,S$,W%*C_Width%*400,,32,S$ ,,W%,,S% 0 Y%+=Vi% 0X%+W%400+4*Hi%*S%,Y% 0#ș Paint_Chars,,S$,%10101,X%,Y% 0 04,X%,Y%+C_Height% 0S$ 1 1 1G sprite(s%,X%,Y%):("SCHOOSE "+S$(s%)):237,X%-x%(s%),Y%-y%(s%): 1$ float(s%,X%,Y%) 1.R% 18Window!handle=Score_W% 1BWindow!x1=X%+X%(s%) 1LX%-=x%(s%) 1VWindow!x0=X% 1`Window!y1=Y%+Y%(s%) 1jY%-=y%(s%) 1tWindow!y0=Y% 1~(ș Update_Window,,Window+handle R% 1X%+=Window!x0-Window!scx 1Y%+=Window!y1-Window!scy 1("SCHOOSE "+S$(s%)) 1Fȕ R%:3,C_Music:s%key% 237,X%,Y% float_key_sig(X%,Y%+y%(s%)) 1(ș Get_Rectangle,,Window+handle R% 1 1 1 float_key_sig(X%,Y%) 1I%,A%,C%,W% 1KEY_SIG%(1) 1C%=SCRIBE%(sclef%) 1A%=KEY_SIG%(0) 2I%=accidental%+2+A% 2 W%=x%(I%)+X%(I%):Y%-=y%(I%) 2("SCHOOSE "+S$(I%)) 2 I%=0 KEY_SIG%(1)-1 2(#237,X%,Y%+Li%*Key_Y%(C%,A%,I%) 22 X%+=W% 2< 2F 2P237,X%,Y%-y%(s%) 2Z 2d 2n start_music 2xBP%=MUSIC% 2 BBAR%=0 2BP%()=MUSIC%() 2BCLEF%()=0 2BSIG%(0)=%01100111 2BSIG%(1)=%00000010 2start_bar 2 2 start_bar 2 GP%=BP% 2BAR%=BBAR% 2N%()=BP%() 2CLEF%()=BCLEF%() 2SIG%()=BSIG%() 3 3 set_bar 3 BP%=GP% 3"BBAR%=BAR% 3,BP%()=N%() 36BCLEF%()=CLEF%() 3@BSIG%()=SIG%() 3J 3T back_bar(B%) 3^GP%>MUSIC%+2 3hPX%,A%,T% 3rȕB%>0GP%>MUSIC%+2 3|back_gate 3(ȕBar%GP%?1?GP%:PX%=:back_gate: 3 B%-=1 3 3 set_bar 31GP%=MUSIC%:BCLEF%()=0:BSIG%(0)=&67:BSIG%(1)=2 3?GP%= 3GP%-=:A%=?GP% 3#T%=%1:A%%1 T%=T%<<%1:A%T% 3 Ȏ T% 3 Time%,Key%:BSIG%(T%-1)=A% 3! Clef%:BCLEF%(A%>>6)=A%>>33 3 Bar%:BAR%+=1 3 4 4GP%-=:GP%>=BP% 4rescore(0) 4& 40 4: note_type(C%,T%) 4D N%(C%)?1=N%(C%)?1&1F T%<<5 4N 4X note_dots(C%,D%) 4b N%(C%)?1=N%(C%)?1&E7 D%<<3 4l 4v note_accidental(C%,A%) 4N%(C%)?1=N%(C%)?1&F8 A% 4 4 note_line(C%,L%) 4!?N%(C%)=?N%(C%)7 (16+L%)<<3 4 4 note_tie(C%,T%) 4"?N%(C%)=?N%(C%)&FB (T%<>0)4 4 4 note_join(C%,J%) 4"?N%(C%)=?N%(C%)&FD (J%<>0)2 4 4 note_stem(C%,D%) 4#?N%(C%)=?N%(C%)&FE (D%<>0)%1 5 5  note_clear(C%) 5?N%(C%)=0:N%(C%)?1=0 5  5* time_sig(N%,B%) 54"?GP%=0:GP%?1=Time%N%<<1B%<<5 5> 5H key_sig(A%,N%) 5R!?GP%=0:GP%?1=Key%A%<<2N%<<3 5\ 5f clef(S%,C%) 5p"?GP%=0:GP%?1=Clef%C%<<3S%<<6 5z 5 slur(S%,X%) 5"?GP%=0:GP%?1=Slur%X%<<4S%<<6 5 5 octave(S%,O%) 5$?GP%=0:GP%?1=Octave%O%<<5S%<<6 5 5 bar 5?GP%=0:GP%?1=Bar% 5 5 insert_gate(W%) 5G% 5GP%=GP%:G%?W%=?G%:G%+=: 6 6$ GATE%+=W% 6. EP%+=W% 68?GP%=0:GP%?(W%-1)=0 6B 6L insert_note(C%) 6VN% 6`N%(C%)=N%(C%):N%?2=?N%:N%+=: 6 6FINE%(C%)+=2 6?GP%=?GP%%1<=0G%%1<=0 S_C%(c%)=S% C%=c% 7x c%+= 7 c%<0 7=C% 7 arrange_stave(S%) 7 C%,B% 7 B%=:C%= 7#?GP% GP%+=2:?GP%GP%>=GATE% 7ȕB%GP%=GATE% 7 7 7 sort_gate 80C%,NC%,NN%,G%,g%,pg%,d%,shortest%,Gchanged% 8shortest%=255 8 G%=?GP% 8"g%=previous_gate(GP%) 8,pg%=preceding_gate(GP%) 86 NC%=-1 8@ NN%=-1 8J C%=07 8TS_C%(C%)=S% 8^2NC%+=1:n%(NC%)=C%:G%%1<>3%11100:d%0NN%>=0 sort 8=Gchanged% 8 sort 8 N%,M% 8 c%()=-1 8 M%=0NC% 8 N%=0NN% 8-same_pitch(n%(M%),C%(N%)) c%(N%)=n%(M%) 8 8 8 N%=0NN% 8c%(N%)<0 c%(N%)=best 9 9 N%=0NN% 9]C%(N%)=c%(N%) Gchanged%=:M%=in(c%(N%),C%()):M%>N% swap_notes(N%,M%) move_note(N%) 9& 90 9: swap_notes(N%,M%) 9D s%,d% 9Ns%=C%(N%):d%=c%(N%) 9XȔC%(N%),C%(M%) 9bȔ?N%(s%),?N%(d%) 9lȔN%(s%)?1,N%(d%)?1 9v 9 move_note(N%) 9 s%,d% 9s%=C%(N%):d%=c%(N%) 9insert_note(d%) 9?N%(d%)=?N%(s%) 9N%(d%)?1=N%(s%)?1 9delete_note(s%) 9 9 best 9 N%,C% 9# short%,free%,rest%,any%,tied% 9 N%=NC%0-1 9 C%=n%(N%) :in(C%,c%())<0 : N%(C%)?-24 :tied%=C%+1 :  :*pg%%1<>3)=shortest% short%=C%+1 :>N%(C%)?-2&F8 rest%=C%+1 :H :Rfree%=C%+1 :\ :f any%=C%+1 :p :z : :Pshort% C%=short% free% C%=free% rest% C%=rest% any% C%=any% C%=tied% : =C%-1 : in(U%,U%()) :I%:I%=NN% :ȕI%U%<>U%(I%):I%-=1: :=I%+(U%<>U%(I%)) :ʉ same_pitch(c%,C%):R%,r%:R%=?N%(C%)&F8:r%=N%(c%)?-2&F8:=N%(c%)-2>=MUSIC%(c%)(g%(N%(c%)?-24)=4)%1<R%r%=) : preceding_gate(gp%) : C%,gm% :'C%=07:S_C%(C%)=S% gm%=gm%%1<MUSIC%+1gp%?-1<> ;$ previous_gate(gp%) ;. C%,gm% ;8'C%=07:S_C%(C%)=S% gm%=gm%%1<MUSIC%gp%?-1=:gp%-=2: ;jgm%?gp%gp%MUSIC%+1 ;~ conflict(T%,S%,L%) ; C%,co% ; L%+=16 ;C%=7 ; ;/co%=?GP%%1<>3)=L% ; C%+= ; co%C%< ;=C%-(co%<>0) ; set_score(PX%) ;(ȕ PX%(PX%)>2%1)+2:SIG%(1)=A% T%=accidental%+1:ȔA%,SIG%(1):A%56 A%=8:T%+=1 <&PW%(PX%)=(A%>>37)*(x%(T%)+X%(T%)) <+Clef%:PW%(PX%)=x%(clef%+3)+X%(clef%+3) <Bar%:PW%(PX%)=Hi%*4 < < < set_notes(G%) <x0%,x1%,y0%,y1% <C%,P%,R%,s% < C%=-1 < =C%-=:G%%1<P% P%=x0% ="x1%>R% R%=x1% =, N%(C%)+=2 =6(2<G% =@)PX%(PX%+1)=PX%(PX%)+PW%(PX%)+Pgap%+P% =J PX%+=1 =TPW%(PX%)=R% =^PTYPE%(PX%)=Note% =h =r bound_note(L%) =| H%,S%,s% =H%=L%>>8&FF =,L%&F8 S%=H%>>5L%<<38 S%=rest%H%>>5 =x0%=x%(S%) =x1%=X%(S%) =y0%=y%(S%) =y1%=Y%(S%) = H%7 =s%=accidental%H%7 =x0%+=x%(s%) =y%(s%)>y0% y0%=y%(s%) =Y%(s%)>y1% y1%=Y%(s%) = =EH%24 s%=dot%+(H%>>33):x1%=x%(S%)+X%(s%):y%(s%)>y0% y0%=y%(s%) > > position_staves > Y%,S% >&8Score_Height%=(PERC%+1+3*(STAVE%+1)+1)*Stave_Height% >0%Y%=-Score_Height%-Stave_Height%2 >:DPERC% S%=PERC%1-1:Y%+=Stave_Height%:Y_STAVE%(STAVE%+S%)=Y%: >D: S%=STAVE%0-1:Y%+=3*Stave_Height%:Y_STAVE%(S%)=Y%: >N >X setup_staves >b H%,O% >lposition_staves >v)H%=S_Height%-2*(B_Height%-Vi%)-24*Vi% >&Score_Height%Window!handle=Score_W% >"ș Close_Window,,Window+handle >&ș Get_Window_State,,Window+handle >2Window!y1-Window!y0>H% Window!y0=Window!y1-H% >Window!scx=0:Window!scy=0 >!ș Open_Window,,Window+handle >Window!x0=0 >Window!y0=-Score_Height% >Window!x1=Score_Width% >Window!y1=0 >!ș Set_Extent,Score_W%,Window > ?< update_score(Window!x0,Window!y0,Window!x1,Window!y1) ? Window!handle=Score_W% ?(ș Update_Window,,Window+handle R% ? ȕ R% ?*:draw_staves ?4(ș Get_Rectangle,,Window+handle R% ?> ?H ?R draw_staves ?\ Y%,T%,B%,S%,L% ?f x%,y%,x1% ?p c%,t%,b% ?zy%=Window!y1-Window!scy ?x%=Window!x0-Window!scx ?1x1%=x%+Score_Width%: x1%>Clip!x1 x1%=Clip!x1 ?#c%=Clip!x0:c%=Y% c%,Y%,x1%,Y% ? ? ? S%=0 STAVE% ?@Y%=y%+Y_STAVE%(S%):T%=Y%+Stave_Height%2:B%=T%-Stave_Height% ?b%<=T%t%>=B% @c%,Y%,x1%,Y% @L%=Li%*2L%*2L% @c%,Y%+L%,x1%,Y%+L% @$c%,Y%-L%,x1%,Y%-L% @. @8 @B @Lstart_bar @VB%=Score_Width% @`T%=Clip!x1-x%:T%G% Ad An back_notes(G%) Ax PX%-=1 A C%:C%= A,C%-=:G%%1<G% A A draw_notes(G%) A C%,x%,y%,s%,l% A PX%+=1 Ax%=X%+PX%(PX%) A C%=-1 A AC%-=:G%%1<>3)-16 B&l%>5 sprite(ledger%+l%2,x%,y%) By%+=Li%*l% Bs%=N%(C%)?1>>5?N%(C%)<<38 B"sprite(s%,x%,y%) B,>5 BJsprite(s%,x%,y%) BT B^;N%(C%)?124 sprite(dot%+(N%(C%)?1>>33),x%+x%(s%),y%) Bh"?N%(C%)4 sprite(tie%,x%,y%) Br N%(C%)+=2 B|(2<G% B B skip_attribute(A%) B'T%:T%=%1:A%%1 T%=T%<<%1:A%T% B ȎT% BTime%,Key%:SIG%(T%-1)=A% BClef%:CLEF%(A%>>6)=A%>>33 BBar%:BAR%+=1 B BT%PTYPE%(PX%) PX%+=1 B B back_attribute(A%) BA%=Bar% BAR%-=1 B,A%PTYPE%(PX%+1)+ A%PTYPE%(PX%+1) C PX%-=1 C C draw_attribute(A%) C& x%,N% C0N%=:N%-=:A%%1<>115)+1) CD$=(%1<<(A%>>5)-1) C w%=x% CB$<2 w%+=PW%(PX%)>>2 CD$<2 x%+=PW%(PX%)>>2 C FONT% Cș Select_Font,Roman_Font% CS%=0STAVE%+PERC% C4ș Paint_Chars,,B$,%10100,w%,Y%+Y_STAVE%(S%)+Vi% C6ș Paint_Chars,,D$,%10100,x%,Y%+Y_STAVE%(S%)-Li%*4 C C CS%=0STAVE%+PERC% D%w%,Y%+Y_STAVE%(S%)+Li%*4-Vi%:B$ D x%,Y%+Y_STAVE%(S%)-Vi%:D$ D D  D* D4 draw_key_sig(A%) D>S%,C%,N%,a%,W% DH4A%56 SIG%(1)=A% ȔA%,SIG%(1):a%=accidental%+1 DRN%=(A%>>37)-1 D\ N%>=0 DfA%=A%>>2%1 Dpa% a%=accidental%+2+A% DzW%=x%(a%)+X%(a%) Dx%+=x%(a%) D C%=0 N% D S%=0STAVE% D>sprite(a%,x%,Y%+Y_STAVE%(S%)+Li%*Key_Y%(CLEF%(S%),A%,C%)) D D x%+=W% D D D S%=0STAVE% D$sprite(key%,x%,Y%+Y_STAVE%(S%)) D D D E draw_clef(A%) ES% E S%=A%>>6 E$CLEF%(S%)=A%>>33 E.;S%<=STAVE% sprite(clef%+CLEF%(S%),x%,Y%+Y_STAVE%(S%)) E8 EB draw_slur(A%) EL EV draw_octave(A%) E` Ej draw_bar_line(A%) Et BAR%+=1 E~S%=0STAVE%+PERC% E$sprite(bar%,x%,Y%+Y_STAVE%(S%)) E E(STAVE%+1)2 E y% E/x%+Hi%,Y%+Y_STAVE%(STAVE%)+Stave_Height%2 E8y%=Y_STAVE%(STAVE%-1)-Y_STAVE%(STAVE%)-Stave_Height% E3,0,y%:0,Hi%,0:3,0,-y% E E E put_down EC%,PX%,X%,Y%,S%,s% EGP%=SCRIBE%(sgp%) F C%=07:N%(C%)=SCRIBE%(C%): F PX%=SCRIBE%(posx%) FX%=SCRIBE%(sx%) FY%=SCRIBE%(sy%) F(s%=SCRIBE%(sprite%) F2S%=SCRIBE%(stave%) F<C%=SCRIBE%(sc%) FF release FPs%=rest% L%=-16 FE%=GP%=EP% F2E% insert_gate(1) C%=conflict(Note%,S%,L%) FE%C%= FC%=allocate_channel(S%) F C%>=0 Finsert_note(C%) Fnote_type(C%,s%7) G3s%PX%(PX%+1) skip_gate Ginsert_gate(1) GC%=allocate_channel(S%) Ginsert_note(C%) Gnote_type(C%,s%7) G3s%=FINE%(C%)(?N%(C%)N%(C%)?2)&F8 note_tie(C%,) update_score(X%+24,Y%+12,X%+70,Y%+24) H H H put_accidental H A%,a% Ha%=N%(C%)?17 H A%=s%7 HA%=a% A%=0 Hnote_accidental(C%,A%) H@A%*a% update_score(X%-34,Y%-24,X%+16,Y%+52) rescore(PX%) H H put_dot H D%,d% Hd%=N%(C%)?1>>33 I D%=s%3 I D%=d% D%=0 Inote_dots(C%,D%) I D%*d% I*9s%=N%(C%)?1>>5?N%(C%)<<38:?N%(C%)&F8 s%=s%rest% I4X%+=x%(s%) I>&update_score(X%+24,Y%-8,X%+50,Y%) IH IRrescore(PX%) I\ If Ip put_clef Izc% I c%=s%3 I'GP%=EP%?GP%(GP%?1%111)<>Clef% Iinsert_gate(2) Iclef(S%,c%) I I7ȕ ?GP%=0(GP%?1%111)=Clef%(GP%?1>>6)<>S%GP%>6)=S% I3(GP%?1>>33)<>c% clef(S%,c%) delete_gate(2) I Iinsert_gate(2) Iclef(S%,c%) J J Jrescore(PX%) J$SCORING%= J. J8 put_key JB%GP%=EP%?GP%(GP%?1%11)<>Key% JLinsert_gate(2) JV%key_sig(KEY_SIG%(0),KEY_SIG%(1)) J` JjxKEY_SIG%(1)>0(GP%?1>>2%1)<>KEY_SIG%(0)(GP%?1>>3)<>KEY_SIG%(1) key_sig(KEY_SIG%(0),KEY_SIG%(1)) delete_gate(2) Jt J~rescore(PX%) JSCORING%= J J put_time J%GP%=EP%?GP%(GP%?1%1)<>Time% Jinsert_gate(2) J(time_sig(TIME_SIG%(0),TIME_SIG%(1)) Jrescore(PX%) J J;(GP%?1>>115)<>TIME_SIG%(0)(GP%?1>>5)<>TIME_SIG%(1) J(time_sig(TIME_SIG%(0),TIME_SIG%(1)) J,update_score(X%,-Score_Height%,X%+48,0) J Kdelete_gate(2) K rescore(PX%) K K K(SCORING%= K2 K< put_bar KFZ(?GP%GP%?1<>Bar%)X%>PX%(PX%+1)GP%MUSIC% KZ GP%y1% y1%=Y%(tie%) L"(Y%-Y_STAVE%(S%))>Li%*5 L,x%(dot%)>x0% x0%=x%(dot%) L6X%(dot%)>x1% x1%=X%(dot%) L@ LJ$y1%+=Y%:Y%-=y0%:y0%=Y_STAVE%(S%) LTy0%+Li%*5 Y%=y0%+Li%*5 L^'update_score(X%-x0%,Y%,X%+x1%,y1%) Lh Lr attach(s%,V%) L|SCRIBE%(sx%)= LSCRIBE%(drawn%)= L?s%5 float(ledger%+SCRIBE%(line%)2,SCRIBE%(sx%),Y_STAVE%(SCRIBE%(stave%))) LSCRIBE%(sx%)= LSCRIBE%(drawn%)= M M M scribe(X%,Y%) M& S%,L%,C% M0Window!handle=Score_W% M:&ș Get_Window_State,,Window+handle MDX%-=Window!x0-Window!scx MNY%-=Window!y1-Window!scy MXproximate(SCRIBE%(valid%)) Mb(X%<>SCRIBE%(sx%)Y%<>SCRIBE%(sy%) MlA% MvA%= MU(SCRIBE%(valid%)112)=96 A%=:C%>=0 A%=SCRIBE%(valid%)8S%<=STAVE%?N%(C%)&F8 M A% MSCRIBE%(drawn%) M6float(SCRIBE%(sprite%),SCRIBE%(sx%),SCRIBE%(sy%)) MvSCRIBE%(sprite%)5 float(ledger%+SCRIBE%(line%)2,SCRIBE%(sx%),Y_STAVE%(SCRIBE%(stave%))) M MSCRIBE%(drawn%)= M MSCRIBE%(sprite%)5 float(ledger%+L%2,X%,Y_STAVE%(S%)) MKY%<>SCRIBE%(sy%) SCRIBE%(sprite%)=SCRIBE%(sprite%)78Y%>SCRIBE%(sy%) M MSCRIBE%(sx%)=X% NSCRIBE%(sy%)=Y% N SCRIBE%(stave%)=S% NPS%<=Max_Stave% SCRIBE%(sclef%)=CLEF%(S%) SCRIBE%(sclef%)=CLEF%(Max_Stave%) N SCRIBE%(line%)=L% N*SCRIBE%(posx%)=PX% N4SCRIBE%(sgp%)=GP% N>SCRIBE%(sc%)=C% NH C%=07:SCRIBE%(C%)=N%(C%): NR"float(SCRIBE%(sprite%),X%,Y%) N\ Nf Np Nz proximate(V%) N d%,D% N px%,x% Ngp% Nstart_bar ND%=2*S_Width% N PX%=0 N V%7 NT% NX%-=X%(clef%)>>1 NT%=-V%<<16 N N savp N)skip_gate:PTYPE%(PX%)Bar%GP%=EP% OPTYPE%(PX%)Bar% OȕPTYPE%(PX%+1)T%GP%d%GP%=EP% O`d%>1 O O savp Oskip_gate O(ȕPTYPE%(PX%+1)GP%d%GP%=EP% Od%PX%(EX%) O8PTYPE%(PX%) x%=PX%(PX%)+PW%(PX%)-X%(2) x%=PX%(PX%) Ox%=x%+PX%(PX%+1)>>1 O3V%128 x%+=Hi%*4:PTYPE%(PX%)=Bar% x%=PX%(PX%) P P x%=PX%(PX%+1)+PX%(PX%+2)>>1 P7V%128 x%+=Hi%*4:PTYPE%(PX%+2)=Bar% x%=PX%(PX%+2) P P(8V%8(PX%(PX%+1)-X%)<(x%-X%) X%=PX%(PX%+1) X%=x% P2 P<X%=PX%(PX%+1) PF PP PZ C%=-1 PdL%=0 PnV%64?GP%>0 Px G%,c% P c%=C% Pd%=2*S_Height% P G%=?GP% P PC%-=:G%%1<>3)-16)) D%=D% PD%G% P C%=c% PS%=S_C%(C%) P#?N%(C%)&F8 L%=(?N%(C%)>>3)-16 P QMS% Q MS%=STAVE%:V%6 MS%+=PERC% Q S%=-1 Q"D%=2*S_Height% Q, Q6 d%=D% Q@ S%+=1 QJD%=(Y%-Y_STAVE%(S%)) QTD%>d%S%=MS% Q^ S%+=d%=Y_STAVE%(STAVE%)-Li%*16 Q|S%<=STAVE% Q)L%=(Y%-Y_STAVE%(S%))/Li%+16.75:L%-=16 QL%>15 L%=15*L% Q Q Q QY%=Y_STAVE%(S%)+L%*Li% Q QK savp:n%()=N%():d%=D%:px%=PX%:gp%=GP%:clef%()=CLEF%():sig%()=SIG%(): QE rstp:N%()=n%():PX%=px%:GP%=gp%:CLEF%()=clef%():SIG%()=sig%(): Q set_tempo(T%) Q Tempo%=T% Q,ș Sound_QTempo,Tempo%(T%)*128*40966000 Q R play_start RC% RPBAR%=BBAR%+1 R& PP%=BP%+2 R0P%()=BP%() R: C%=03 RD PCLEF%(C%)=Clef%(BCLEF%(C%)) RN RXplay_key_sig(BSIG%(1)) RbPLAYING%= Rlș Sound_QInit Rv;Beats%=((BSIG%(0)>>1&F)+1)*Length%(BSIG%(0)>>3%11100) RQ%()=Beats% R TIE%=&FF RB2%=&10000 Rș Sound_QBeat,Beats% RLș Sound_QSchedule,Beats%,Sch%Sound_QTempo,Tempo%(Tempo%)*128*40966000 R)C%=Beats%/50*&1000:C%>&7FFF C%=&7FFF Rș Sound_QTempo,C% R R play_bar RC%,L%,I%,D%,S%,Q%,T%,B%,A% RQ%()=Beats% R B%=PBAR% RAccidental%()=0 SȕB%=PBAR%PP%=GATE% PLAYING%= S* S4 play_notes(G%) S> Q%=:C%= SHC%-=:G%%1<Q% Q%=Q%(S_C%(C%)) S\(2<G% SfQI%()=&10000:C%= Sp SzC%-=:G%%1<>3:S%=S_C%(C%):L%=T%>>3:A%=0 SL%S%<=STAVE% S!D%7 Accidental%(S%,L%)=D%7 S;A%=Accidental%(S%,L%):L%+=PCLEF%(S%):A% A%=Key%(L%7) S STIE%%1<>3):T%>FINE%(C%)4T%?:D%>254 D%=254 S@L% C%+1,Volume%(Volumes%(C%))&100,Line(L%)+Aoff(A%),D%,Q% S S4T% TIE%=TIE%%1<G% T T play_attribute(A%) TC%=:C%-=:A%%1<>1&F)+1)*Length%(A%>>3%11100) TL1ș Sound_QSchedule,Beats%,Sch%Sound_QBeat,A% TV Beats%=A% T` Tj play_key_sig(A%) TtN%:A%=A%>>2 T~&N%=06:Key%(N%)=Key_Sig%(A%,N%): T T play_clef(A%) T PCLEF%(A%>>6)=Clef%(A%>>33) T T play_slur(A%) T T play_octave(A%) T T play_bar_line(A%) T PBAR%+=1 T T count(S$,C$) U C%,I% U C%=-1 UI%=0 U U( C%+=1 U2I%=S$,C$,I%+1) U< I%= UF=C% UPe upper(A%):$String_Space%=$A%:A%=String_Space%String_Space%+$String_Space%-1:?A%>96 ?A%-=32 UZ:=String_Space% Ud alphanumeric(C%) UnC%>96 C%-=32 Ux'C%>47C%<58C%>64C%<91 =C% =-C% U- bit(M%):I%:I%=:M% I%-=:M%%1<S$ XH ȕS$<>"" XRx%,y%,W%,H%,S$ X\ N%+=1 Xf Xp-assert(N%>=0,"Sprite data installed") Xz( S$(N%),x%(N%),y%(N%),X%(N%),Y%(N%) X X I%=0N% X S$(I%),x%,y%,W%,H% Xx%(I%)=x%*Hi% Xy%(I%)=y%*Vi% XX%(I%)=(W%-x%)*Hi% XY%(I%)=(H%-y%)*Vi% X X note%=0 X rest%=16 Xaccidental%=24 X clef%=32 X high%=36 Y dot%=44 Yledger%=47 Y bar%=48 Y$ time%=55 Y. key%=56 Y8 tie%=57 YB SL%(N%,1) YLSCORING%= YV SCRIBE%(18) Y` sx%=8 Yj sy%=9 Yt drawn%=10 Y~sprite%=11 Y valid%=12 Y stave%=13 Y sclef%=14 Y line%=15 Y posx%=16 Y sgp%=17 Y sc%=18 Y Yp B,7,3,26,7,SB,0,2,12,5,Mu,0,2,11,15,Cu,0,2,11,15,Qu,0,2,17,17,SQu,0,2,17,17,DSQu,0,2,17,17,SDSQu,0,2,17,17 Yv B,7,3,26,7,SB,0,2,12,5,Md,0,12,11,15,Cd,0,12,11,15,Qd,0,14,11,17,SQd,0,14,11,17,DSQd,0,14,11,17,SDSQd,0,14,11,17 Y Rest,-1,-1,8,4,Rest,-1,-2,8,4,Rest,-1,0,8,4,Rest4,-2,5,7,12,Rest8,-1,4,9,8,Rest16,0,8,11,12,Rest32,1,8,13,16,Rest64,2,12,15,20 Y M,0,2,11,5,Natural,8,6,7,13,Sharp,10,5,9,11,Flat,8,3,7,12,Sharp2,9,2,8,5,Flat2,14,3,13,12,NSharp,17,6,16,13,NFlat,15,6,14,15 ZD Treble,0,16,18,31,Alto,0,8,16,19,Alto,0,4,16,19,Bass,0,7,20,17 Z 6 Bh,7,3,26,7,SBh,0,2,12,5,Mh,0,2,11,5,Ch,0,2,11,5 ZR ldg5,2,28,15,17,ldg4,2,24,15,13,ldg3,2,20,15,9,ldg2,2,16,15,5,ldg1,2,12,15,1 ZL Dot1,-12,2,3,2,Dot2,-12,2,8,2,Dot3,-12,2,13,2,Bar,-1,8,2,17,C,0,2,11,5 Z(W ldg1,2,-12,15,1,ldg2,2,-12,15,5,ldg3,2,-12,15,9,ldg4,2,-12,15,13,ldg5,2,-12,15,17 Z25 Time,1,9,25,19,Key,0,13,0,30,Tie,-12,-3,23,3,"" Z< initialise_wimp ZFenumerate_wimp_SWIs ZPenumerate_wimp_offsets ZZș Initialise ZdB_Width%=2*C_Width%+5*Hi% ZnB_Height%=C_Height%+4*Vi% Zx *POINTER ZMouse_X%=640:Mouse_Y%=560 Z PTIME%=0 Z *FX21,9 Zredraw_screen Z Z redraw_screen Z-ș Force_Redraw,-1,0,0,S_Width%,S_Height% Z Z enumerate_wimp_SWIs ZW%:W% = &400C0 ZInitialise = W%+0 ZCreate_Window = W%+1 ZCreate_Icon = W%+2 [Delete_Window = W%+3 [Delete_Icon = W%+4 [Open_Window = W%+5 ["Close_Window = W%+6 [,Poll_Wimp = W%+7 [6Redraw_Window = W%+8 [@Update_Window = W%+9 [JGet_Rectangle = W%+10 [TGet_Window_State = W%+11 [^Get_Window_Info = W%+12 [hSet_Icon_State = W%+13 [rGet_Icon_Info = W%+14 [|Get_Pointer_Info = W%+15 [Drag_Box = W%+16 [Force_Redraw = W%+17 [Set_Caret_Position= W%+18 [Get_Caret_Position= W%+19 [Create_Menu = W%+20 [Decode_Menu = W%+21 [Which_Icon = W%+22 [Set_Extent = W%+23 [Set_Pointer_Shape = W%+24 [Open_Template = W%+25 [Close_Template = W%+26 [Load_Template = W%+27 [ \ enumerate_wimp_offsets \ Wimp_Space &500 \Window=Wimp_Space+4 \& handle=-4 \0x0=0:y0=4:x1=8:y1=12 \:scx=16:scy=20 \D under=24 \Nflags=28:status=30 \X%tFrgd=32:tBkgd=33:Frgd=34:Bkgd=35 \bsbo=36:sbi=37 \l tHigh=38 \vEx0=40:Ey0=44:Ex1=48:Ey1=52 \title_flags=56 \work_area_flags=60 \sprite_area=64 \ title=72 \ icons=84 \icon_defs=88 \Icon=Wimp_Space+4 \ iflags=16 \ Colour=19 \ idata=20 \Mouse=Wimp_Space \ buttons=8 \ window=12 ] icon=16 ] old_buttons=20 ] colour=23 ] state=4 ]* mask=8 ]4Clip=Window+24 ]> key=20 ]H ]R create_menu_wimp(M%) ]\ P%,W%,S% ]f N%,N$ ]p X%,I% ]zP%=MP%(M%) ]N%=count($P%,Sep$)-1 ]W%=($P%-N%*3-2)*C_Width% ]#N$=menu_OPTION(menu_name(M%)) ]S%=C_Width% ]I%=2*B_Width%+N$*C_Width% ]I%>W%+N%*S% S%=(I%-W%)N% ] W%+=N%*S% ]Udefine_window(0,0,W%+Hi%*2,B_Height%+Vi%*2,&13,,N$,C_Text,C_Menu,C_Text,C_Bkgd) ]Window!icons=N% ] Icon:Icon=Window+icon_defs ]X%=0 ] P%+=4 ] I%=1 N% ^N$=menu_option(P%) ^W%=N$*C_Width%+S% ^Kdefine_icon(X%+Hi%*2,-B_Height%-Vi%,X%+W%,-Vi%,&303D,C_Text,C_Menu,N$) ^$ Icon+=32 ^. X%+=W% ^8 P%+=N$+3 ^B ^L*ș Create_Window,,Window Menu_W%(M%) ^V ^` create_list_wimp(L%,T$) ^j W%,H%,CW% ^t R%,T%,TH% ^~ LI$,F% ^ X%,Y%,I% ^List_Columns%(L%)<0 ^(List_Columns%(L%)=List_Columns%(L%) ^PList_Items%(L%)/16>List_Columns%(L%) List_Columns%(L%)=List_Items%(L%)16+1 ^JList_Item$(L%,0)=ĩList_Item$(L%,0)*List_Columns%(L%)/(1-FONT%*2)," ") ^T%=1 ^ ^/R%=(List_Items%(L%)-T%)List_Columns%(L%)+1 ^CW%=String_Space%:!CW%=0 ^I%=1List_Columns%(L%) ^0List_Flag%(L%,(I%-1)*R%+T%)%10 F%=0 F%=I% ^#W%+=max_item_size(L%,F%)&FFFF _CW%!(I%*4)=W% _  _X%=2*B_Width%+T$*C_Width% _LT% TH%=max_item_size(L%,0):H%=TH%&FFFF:TH%=(TH%>>16)+Vi%:H%>X% X%=H% _ W%=0 W%=1: SKS _(_X%>W% I%=4List_Columns%(L%)*44:CW%!I%=(CW%!I%*X%/W%+2.5)(Hi%-1)::W%=(X%+2)(Hi%-1) _2&H%=(max_item_size(L%,T%)>>16)+Vi% _0 List_Item$(L%,0)=LI$,X%-1) _6define_icon(0,-TH%,W%,-Vi%,F%,C_Music,C_Bkgd,LI$) _ Icon+=32 _ _ I%=T% _ȕI%<=List_Items%(L%) _F%=List_Flag%(L%,I%) _LI$=List_Item$(L%,I%) _=F%&100 X%=LI$," "):X%>0 List_Item$(L%,I%)=LI$,X%-1) _8F%&F000 List_Select%(L%)=List_Select%(L%) %1<List_Items%(L%) N%=List_Items%(L%) `| `T% N%=List_Items%(L%) ` ` ȕI%<=N% `I$=List_Item$(L%,I%) `List_Flag%(L%,I%)%10 ` s%=I$ `w%=x%(s%)+X%(s%)+Hi%*2 `h%=y%(s%)+Y%(s%)+Vi%*2 ` `"FONT%List_Flag%(L%,I%)&40 `ș Select_Font,Roman_Font% `7ș String_Width,,I$,S_Width%*400,,32,I$ ,,w%,,s% `@w%=w%400:(List_Flag%(L%,I%)&F000)=&F000 w%+=2*C_Width%*s% ah%=B_Height%+2*Vi% a aw%=(I$+1)*C_Width% a&h%=B_Height% a0 a: aDw%>W% W%=w% aNh%>H% H%=h% aX I%+=1 ab al!W%=W%(Hi%-1):H%=H%(Vi%-1) av=W%H%<<16 a8 define_window(X%,Y%,W%,H%,F%,B%,T$,tf%,tb%,f%,b%) a$Window=88,0) a=Window!x0=X%:Window!y1=Y%:Window!x1=X%+W%:Window!y0=Y%-H% a Window!Ex1=W%:Window!Ey0=-H% aWindow!under=-1 aWindow!flags=F% a%Window?tFrgd=tf%:Window?tBkgd=tb% a!Window?Frgd=f%:Window?Bkgd=b% a'Window!sbo=C_Menu:Window?sbi=C_Text awindow?tHigh=C_High aWindow!title_flags=&3D a#Window!work_area_flags=B%&3000 a$(Window+title)=T$ b b / define_icon(X0%,Y0%,X1%,Y1%,F%,f%,b%,T$) b3Icon!x0=X0%:Icon!y0=Y0%:Icon!x1=X1%:Icon!y1=Y1% b FONT% F%=F%&40 b*Icon!iflags=F% b4F%&100 b> X0%=T$+1 bH X1% X0% bRY0%=T$," ") b\Y0% T$=T$,Y0%-1) bf $X1%=T$ bpIcon!idata=X1% bzIcon!(idata+4)=-1 bIcon!(idata+8)=X0% b b$(Icon+idata)=T$ b b9F%&40 Icon?Colour=Roman_Font% Icon?Colour=f%b%<<4 b b update_item(L%,I%,T$) bList_Item$(L%,I%)=T$ b#update_icon(List_W%(L%),I%,T$) bnew_description b b update_icon(W%,I%,T$) bWindow!handle=W%:!Icon=I% c#ș Get_Icon_Info,,Window+handle c$(Icon!(idata-handle))=T$ cIcon!state=0:Icon!mask=0 c$$ș Set_Icon_State,,Window+handle c. c8 icon_text(W%,I%) cBWindow!handle=W%:!Icon=I% cL#ș Get_Icon_Info,,Window+handle cV=$(Icon!(idata-handle)) c` new_icon(W%,I%,T$) cj H%,F% ctWindow!handle=W%:!Icon=I% c~#ș Get_Icon_Info,,Window+handle c!ș Delete_Icon,,Window+handle c!Window=W% c$(Icon+idata-handle)=T$ cș Create_Icon,,Icon H% c3assert(H%=I%,"Icon handle has not changed") cWindow!handle=W%:!Icon=I% cIcon!state=0:Icon!mask=0 c$ș Set_Icon_State,,Window+handle c c initialise_menu cMax_Menu%=63 c MP%(Max_Menu%) d Sep$=9 d Menu_Root%=32 d" Menu_Description$(Max_Menu%) d Menu_W%(Max_Menu%) d( M%(Max_Menu%) d2 Menu_BASE%(Max_Menu%) d< MOP%=0 dF MO%=0 dP Menu_DESCRIPTION%=Menu_Root% dZdefine_menu_hierarchy dd Menu_OPTION%(1) dnMax_Option%=31 dx O%(Max_Option%,4) d.Menu%=0:Option%=1:List%=2:Item%=3:State%=4 d O$(Max_Option%) d OOP%=0 d OO%=0 d O$="" d) List_Item$(Max_Option%,Max_Option%) d0 List_Description$(Max_Option%,Max_Option%) d List_Items%(Max_Option%) d List_Columns%(Max_Option%) d) List_Flag%(Max_Option%,Max_Option%) d List_W%(Max_Option%) d List_Select%(Max_Option%) d List_STATE%(Max_Option%) e List_N%=0 eList_W%(0)=0 eList_KEY%= e" DESCRIPTION%(2) e,DESCRIPTION%(0)=M%(MO%) e6DESCRIPTION%(1)=0 e@DESCRIPTION%(2)=0 eJO_Initialise%=-1 eTO_Entry%=-2 e^O_Exit%=-3 eh Adj%=64 er[define_window(0,0,9*C_Width%,4*C_Height%,&83,,"CONFIRM",C_Text,C_Menu,C_Music,C_High) e|)ș Create_Window,,Window Confirm_W% eCONFIRM%= e e define_menu_hierarchy eMenu_MAX%=Menu_Root%-1 edefine_menu(":Maestro") e\describe_menu("MAESTRO:Music scoring facility by Crosbie Fitch (Ashdown Software Ltd)") eIdefine_menu("MAESTRO:Help,Setup,Transcribe,Console,Repertoire,eXit") eCdescribe_menu("HELP:Obtain helpful information about Maestro") e[describe_menu("SETUP:Set music volume, stave structure, instruments to use and tempo") eIdescribe_menu("TRANSCRIBE:Enter music into Maestro from manuscript") eUdescribe_menu("CONSOLE:Access control console to play and move about the score") e>describe_menu("REPERTOIRE:Music score filing operations") e;describe_menu("EXIT:Leave Maestro to whence you came") f)define_menu("MAESTRO.HELP:Describe") f?describe_menu("DESCRIBE:Briefly describe indicated items") fEdefine_menu("MAESTRO.SETUP:Clear,Volume,Stave,Instrument,Tempo") f&-describe_menu("CLEAR:Reset music score") f02describe_menu("VOLUME:Set loudness of music") f:?describe_menu("STAVE:Set stave structure for music score") fDFdescribe_menu("INSTRUMENT:Set instruments to use for each stave") fN.describe_menu("TEMPO:Set speed of music") fX?define_menu("MAESTRO.TRANSCRIBE:Clef,Key,Time,Note,Other") fb(describe_menu("CLEF:Select a clef") fl0describe_menu("KEY:Select a key signature") fv2describe_menu("TIME:Select a time signature") f-describe_menu("NOTE:Select notes/rests") fMdescribe_menu("OTHER:Select an accidental or dots for a note, or a bar") fFdefine_menu("MAESTRO.CONSOLE:Begin,Rewind,Stop,Play,Forward,End") fassert(Menu_MAX%<=Max_Menu%,"Sufficient menu indices") g4 M%,I% g> S%,P% gHI%=M$,":") gR8assert(I%,"Colon is present in menu definition") g\1I%>1 P%=sub_menu(M$,I%-1),Menu_MAX%) P%=0 gf4assert(M$>1,"Menu has at least one option") gpS%=count(M$,",")+1 gz-assert(S%<11,"Up to 10 menu options") g M% M$-I%+4+S%*2 gMP%(Menu_MAX%)=M% g ?M%=P% gM%?1=Sep$ g M%+=2 g gM$=M$,I%) gI%=M$,",",2) g$M%=0+M$,I%-1)+Sep$ g M%?1=0 g M%+=I%+1 g I%= g create_menu_wimp(Menu_MAX%) h h sub_menu(R$,S%) h N%,M%,R%,I% h$ R$=R$+"." h.N%=Menu_Root% h8 hBM%=MP%(N%) hLR%=R$,".") hV'I%=$upper(M%),R$,R%-1)+Sep$,5)-3 h`R$=R$,R%+1) hj)assert(I%>0,"Menu root is valid") ht!M%?I%R$<>"" N%=M%?I%: h~7assert(R$="","Menu root is completely defined") h9assert(M%?I%=,"Destination not already defined") h M%?I%=S% h&=N%:Return number of previous menu h describe_menu(D$) h O%,I% hCassert(D$0,"Is a valid menu option and has not already been defined") h'MP%(Menu_MAX%)?I%=Menu_DESCRIPTION% h2Menu_Description$(Menu_DESCRIPTION%)=D$,O%+1) iMenu_DESCRIPTION%+=1 i Massert(Menu_DESCRIPTION%<=Max_Menu%,"Sufficient description numbers") i i) menu_option(P%)=$P%,$P%,Sep$)-1) i(1 menu_OPTION(P%)=$upper(P%),$P%,Sep$)-1) i2 menu_name(M%) i<P% iFP%=MP%(?MP%(M%))+1 iP=P%+$P%,Sep$+M%)+2 iZ define_list(T$,C%) idDassert(List_N%>=0,"Previously defined list has been closed") in@assert(List_N%0,"List has been opened") iOassert(List_Items%(L%)=0,"List contains items") j^\assert(List_Items%(L%)+1>=List_Columns%(L%),"There are not more columns than items") jh)create_list_wimp(L%,List_Item$(0,0)) jrList_N%=L% j| j initialise_options j M%,I%,P% j M%=Menu_Root% Menu_MAX% jP%=MP%(M%) jI%=$P%,Sep$+0)+2 j ȕ I%>2 j P%+=I% jO$=name_option(M%,P%) jdo_option(O_Initialise%) jI%=$P%,Sep$+0)+2 j j j k initialise_keyboard k *FX229,1 k *FX4,1 k&Imminent_KEY%=0 k0 k: initialise_sound kDenumerate_sound_SWIs kNș Sound_Configure,8 kXș Sound_Enable kb kl enumerate_sound_SWIs kv S0,S1,S2 k"S0 = &40140 k"S1 = &40180 k"S2 = &401C0 kSound_Configure = S0 k Sound_Enable = S0+1 k Sound_Stereo = S0+2 k Sound_Speaker = S0+3 kSound_Volume = S1 k Sound_SoundLog = S1+1 k Sound_LogScale = S1+2 k Sound_InstallVoice = S1+3 k Sound_RemoveVoice = S1+4 k Sound_AttachVoice = S1+5 l Sound_AttachNamedVoice= S1+6 l Sound_Tuning = S1+7 l Sound_Pitch = S1+8 l Sound_Control = S1+9 l*!Sound_ControlPacked = S1+10 l4Sound_QInit = S2 l> Sound_QSchedule = S2+1 lH Sound_QRemove = S2+2 lR Sound_QFree = S2+3 l\ Sound_QDispatch = S2+4 lf Sound_QTempo = S2+5 lp Sound_QBeat = S2+6 lzSch%=&F000000 l l initialise_music l N%,C% l=Note%=0:Time%=1:Key%=2:Clef%=4:Slur%=8:Octave%=16:Bar%=32 lq Ninc%(6),Line(42),Aoff(7),Clef%(3),Key%(6),Key_Sig%(15,6),Length%(31),Duration%(NTempos%),Accidental%(3,31) l,N%=06:Ninc%(N%)="024579;",N%+1)15: lST:ST=&1000/12 l N%=042 l,Line(N%)=(1+N%7<<12)+Ninc%(N%7)*ST+.49 l lLAoff(2)=ST:Aoff(3)=-ST:Aoff(4)=ST*2:Aoff(5)=-ST*2:Aoff(6)=ST:Aoff(7)=-ST l1Clef%(0)=11:Clef%(1)=5:Clef%(2)=3:Clef%(3)=-1 l C%=215 mN%=0(C%>>1)-1 m0Key_Sig%(C%,(7+Key_Y%(1,C%%1,N%))7)=C%2+2 m m$ m. C%=031 m88Length%(C%)=(%1<<7-(C%>>2))*(%1111000>>(C%3)%1111) mB mLD% mVN%=0NTempos% m` C% 32:Duration%(N%)=C% mj C%=031 mt%D%=75/Tempo%(N%)*Length%(C%)/8+.5 m~D%>254 D%=254 mDuration%(N%)?C%=D% m m m TIE%=&FF mPLAYING%= m Q%(Max_Stave%+2) m QI%(Max_Stave%+2) mB1%=0:B2%=0 m# PX%(128),PW%(128),PTYPE%(128) m BP%(7) m MUSIC%(7),FINE%(7) m N%(7),n%(7) n C%(7),c%(7) n < BCLEF%(Max_Stave%),CLEF%(Max_Stave%),clef%(Max_Stave%) n BSIG%(1),SIG%(1),sig%(1) n P%(7),PCLEF%(3) n(SPACE%=- n2SPACE%-=&4000 n1024,"Sufficient memory available for music storage") nF MUSIC% SPACE%+8 nPFINE%=MUSIC%+SPACE% nZGATE%=MUSIC% nd C%=07 nn%MUSIC%(C%)=MUSIC%+(C%+1)*SPACE%/9 nx nFINE%()=MUSIC%() n BBAR%=0 n BAR%=0 n PBAR%=0 nstart_music n EP%=GP% nbar n GATE%+=2 nPgap%=X%(2)2+1 n PX%(0)=0 nPW%(0)=4*Hi% nPTYPE%(0)=Bar% nGP%=MUSIC% oPP%=MUSIC% oP%()=MUSIC%() oset_score(0) o" o, exit o6șSet_Caret_Position,, o@ ȕ OOP%>0 oJ*close_window(List_W%(O%(OOP%,List%))) oT OOP%-=1 o^ oh ȕ MOP%>0 or$close_window(Menu_W%(M%(MOP%))) o| MOP%-=1 o o!close_window(Description_W%) oclose_window(Score_W%) o FONT% oș Lose_Font,Thin_Font% oș Lose_Font,Roman_Font% o o o terminate o o *FX229 o*FX4 o*POINTER 0 p4,20,26,31;31 p pD assert(E%,A$):E% = terminate:"ASSERTION FAILED: "+A$:= p& error p07 p: E%,E$ pD pN error2: pXE$=$+" at line "+Þ pb&FILE%=FILE%:FILE% #FILE%:FILE%= plE%=error_action pv0E%=2INITIALISED% save_music("ErrorMUSIC") p` IFE%=1 ELSEPROCterminate:IFE%<4ANDLENHost$ SYS OS_FSControl,0,Host_Dir$:CHAINHost$ ELSEEND pe IFE%=1 ELSEPROCterminate:IFE%<4ANDLENHost$ SYS OS_FSControl,0,Host_Dir$:OSCLI("DeskTop")ELSEEND p INITIALISED% redraw_screen p p p error_action p P%,G% p*POINTER 0 p4 p28,18,25,62,7 p131 p p28,20,24,60,8 p 128:6 q q %'" This error has occurred:"''E$ q*'" Enter 1,2,3 or 4 for next action"' q " 1) Continue program" q*/" 2) Save music (as ErrorMUSIC) and exit" q4!" 3) Just exit the program" q>" 4) QUIT to system" qH'" :?"8; qR q\P%="1234",G%) qfG%= qpG%>32G%<127 G%,8 qz P%G%=13 q*POINTER 1 q=P% q error2 q qterminate q"Primary error: "E$ q('"Secondary error: "$" at line "; q q  > &.apps.Painting  (c) Acorn Computers 1987  Version 1.2 ( 2 *SNEW PC wimp 2200 , windows(31) , heap 4000 , heap(10) , `sub_men(10) ZD `help 2000 , help(10,10) , `r(16) , `g(16) , `b(16) , par% 256 d2 t_wimp 128 , data 3100 , save% 16 , `p(3,64) n4spt_area_size = 110000: spt_area spt_area_size x; A% = spt_area spt_area+spt_area_size-1 4:!A%=-1: 6,12,23,16,&40,&BF| 135 wimp_vars init ș initialise desktop *POINTER 2open_window(windows(1),0,100,1280,988,0,0,-1) def_heap(windows(1)) create_help  scrn  report " ,`old_area = `dr_area 6c = poll(0) @ Ȏ c J. 1 : redraw_window(!wimp):update(!wimp) TT 2 : open_window(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20, wimp!24,wimp!28) ^ 3 : close_window(!wimp) h 4 : r4 5 : !wimp=windows(5) `handle% = windows(5) |= 6 : mouse(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20)  7 :  8 : save_name  ȗ `x%,`y%,`b%  draw_area & `old_area <> `dr_area dr_copy 24,162;232;1274;972;  `col% = 17 80+`style%,0   `style%,`col%   `cur_menu = 1 Ȏ `func%  3 : do_line  4 : do_joined & 5 : do_radii 0 6 : do_point : D N `cur_menu = 2 XȎ `func% b 3 : do_rect l 4 : do_square v 5 : do_para  6 : do_tria    `cur_menu = 3 Ȏ `func%  3 : do_circ  4 : do_elip  5 : do_segm  6 : do_arc  7 : do_sect    `cur_menu = 4 Ȏ `func%   3 : do_text    * `cur_menu = 5 4Ȏ `func% > 3 : do_copy H 4 : do_move R 5 : do_clear \ 7 : do_fill f p z  26    init D 19, 0,16, 0, 0, 0 :`r(0)=0 :`g(0)=0 :`b(0)=0 : BLACK G 19, 1,16,240, 0, 0 :`r(1)=240:`g(1)=0 :`b(1)=0 : RED 100% I 19, 2,16, 0,240, 0 :`r(2)=0 :`g(2)=240:`b(2)=0 : GREEN 100% J 19, 3,16,240,240, 0 :`r(3)=240:`g(3)=240:`b(3)=0 : YELLOW 100% H 19, 4,16, 0, 0,240 :`r(4)=0 :`g(4)=0 :`b(4)=240: BLUE 100% K 19, 5,16,240, 0,240 :`r(5)=240:`g(5)=0 :`b(5)=240: MAGENTA 100% H 19, 6,16, 0,240,240 :`r(6)=0 :`g(6)=240:`b(6)=240: CYAN 100% I 19, 7,16,240,240,240 :`r(7)=240:`g(7)=240:`b(7)=240: WHITE 100% I 19, 8,16,224,144,144 :`r(8)=224:`g(8)=144:`b(8)=144: TITLE BACK H 19, 9,16,160,160,160 :`r(9)=160:`g(9)=160:`b(9)=160: ICON BACK J 19,10,16,114,114,114 :`r(10)=114:`g(10)=114:`b(10)=114: SCROLL BACK H 19,11,16,176,176,176 :`r(11)=176:`g(11)=176:`b(11)=176: MENU BACK $: 19,12,16,208, 0, 0 :`r(12)=208:`g(12)=0 :`b(12)=0 .: 19,13,16,176,176, 0 :`r(13)=176:`g(13)=176:`b(13)=0 8< 19,14,16, 0, 0,208 :`r(14)=0 :`g(14)=0 :`b(14)=208 B< 19,15,16,112,160,160 :`r(15)=112:`g(15)=160:`b(15)=160 L: VI`ib = &89 : `if = &00 : `wf = &00 : `wb = &87 : `tf = &00 : `tb = &88 ``sf = &04 : `sb = &8A j19,0,24,&50,&50,&50 t19,1,25,&00,&F0,&F0 ~19,2,25,&00,&00,&F0 19,3,25,&F0,&00,&00 `cur_menu = 0 `m_fill = `m_open = `m_dots =  `m_xor=  `m_or =  `m_and=  `m_inv=  `func%= 2  `col% = 0 `style% = 0 `brsh%= 243  `x% = 0 : `y% = 0 : `b% = 0 `handle% = 0 `icon% = 0 (`state% = 0 2`dr_area = -1 <`max_file% = 77 F23,243,0,0,0,&18,&18,0,0,0 P#23,244,0,0,&3C,&3C,&3C,&3C,0,0 Z+23,245,&FF,&FF,&FF,&FF,&FF,&FF,&FF,&FF d#23,246,0,&18,&3C,&7E,&FF,0,0,0 n'23,247,0,&18,&3C,&7E,&7E,&3C,&18,0 x$23,248,0,6,&E,&1C,&38,&70,&60,0 '23,249,0,&54,&2A,&54,&2A,&54,&2A,0 !23,250,0,&40,&20,&10,8,4,2,0 !23,251,0,16,16,16,16,16,16,0 23,252,0,0,0,0,0,0,0,0 &23,253,&80,&52,8,&29,&90,&C,&A2,8 23,254,0,0,0,&7E,0,0,0,0  23,17,4,1,0,0,0,0,0,0  a% = 0 63 %`p(0,a%) = (a% 2)+1+(a% 8) 2 *`p(1,a%) = ((a% 2)+(a% 8) 2) 2+1 %`p(2,a%) = (a% 2)+5+(a% 8) 2 *`p(3,a%) = ((a% 2)+(a% 8) 2) 2+9  a%  `ptrn = 0  0 ȓ Ȑ 46,694,64,64 ")ș &2E,16,0,"curcol",0,46,694,100,758 ,[spt_area!0 = spt_area_size : spt_area!4 = 0 : spt_area!8 =16 : spt_area!12 = spt_area!8 626,23,17,4,1,0,0,0,0,0,0 @ J wimp_vars T: ^: hws = &000400C0 r: |initialise= ws create_window = ws + 01 create_icon = ws + 02 delete_window = ws + 03 delete_icon = ws + 04 open_window = ws + 05 close_window= ws + 06 poll_wimp = ws + 07 redraw_window = ws + 08 update_window = ws + 09 get_rectangle = ws + 10 get_window_state= ws + 11 get_window_info = ws + 12 set_icon_state= ws + 13 get_icon_info = ws + 14 get_pointer_info= ws + 15 drag_box= ws + 16 &screen_redraw = ws + 17 0set_carot_position= ws + 18 :: D N desktop X bwind% = -1 l vG f%,fc%,bc%,x0%,y0%,x1%,y1%,if%,ic$,cx0%,cy0%,cx1%,cy1%,nic%,tit$: wind% = wind% + 1 dwindows(wind%) = createW(cx0%,cy0%,cx1%,cy1%,0,0,f%,fc%,bc%,x0%,y0%,x1%,y1%,if%,197,tit$,nic%) :  A$  A$="" !wimp = windows(10)  wimp!4= 0 wimp!8= -100 wimp!12 = 250 wimp!16 = 0 wimp!20 = &9000F135 wimp!24 = save% wimp!28 = -1 wimp!32 = 10  $save% = "" ș create_icon,0,wimp  : *K flags,forecl,backcl,minx,miny,maxx,miny,iconflg,icon,x0,y0,x1,y1,n,t$ 4: >PALETTE WINDOW 7 H2 &50,`wf,`wb,0,-96,100,0,0,"",0,0,100,96,1,"" R' 0,-96,100,4,&300E,`if,0,func,null \: fF &11,`wf,`wb,0,-888,1280,0,&302D,"",0,100,1280,988,11,"ARM PAINT" p' 0,-40,160,4,&302D,`if,`ib,COLOURS z( 0,-752,160,-538,&303D,`if,`ib,mode ( 0,-888,160,-748,&303D,`if,&88,func * 160,-888,300,-748,&303D,`if,`ib,draw , 300,-888,440,-748,&303D,`if,`ib,shapes + 440,-888,580,-748,&303D,`if,`ib,curve * 580,-888,720,-748,&303D,`if,`ib,text * 720,-888,860,-748,&303D,`if,`ib,area ) 860,-888,1000,-748,&303D,`if,`ib,"" , 1000,-888,1140,-748,&303D,`if,`ib,load 1 1140,-888,1280,-748,&303D,`if,`ib,save,null : > &11,`wf,`wb,0,-200,400,0,&302D,"",120,230,520,430,7,MODE $ 0,-98,200,0,&303D,`if,`ib,fill & 200,-98,400,0,&303D,`if,&88,open  0,0,0,0,&303E,`if,`ib,"" ' 0,-200,100,-100,&303D,`if,`ib,Xor ( 100,-200,200,-100,&303D,`if,`ib,OR $) 200,-200,300,-100,&303D,`if,`ib,AND .. 300,-200,400,-100,&303D,`if,`ib,INV,null 8: B? &11,`wf,`wb,0,-280,720,0,&302D,"",180,170,900,450,0,HELP! L null V> &1D,`wf,`wb,0,-700,150,0,&302D,"",500,550,650,850,0,DISK ` null j> &00,`wf,`wb,0,-744,1112,0,&302D,"",164,232,1276,976,0,"" t null ~7 &10,`if,`ib,0,-494,160,0,0,"",0,442,160,936,21,"" $ 4,- 40, 36,-8,&302D,`if,&80,"" $44,- 40, 76,-8,&302D,`if,&81,"" $84,- 40,116,-8,&302D,`if,&82,"" & 124,- 40,156,-8,&302D,`if,&83,"" & 4,- 80, 36,- 48,&302D,`if,&84,"" &44,- 80, 76,- 48,&302D,`if,&85,"" &84,- 80,116,- 48,&302D,`if,&86,"" ( 124,- 80,156,- 48,&302D,`if,&87,"" & 4,-120, 36,- 88,&302D,`if,&88,"" &44,-120, 76,- 88,&302D,`if,&89,"" &84,-120,116,- 88,&302D,`if,&8A,"" ( 124,-120,156,- 88,&302D,`if,&8B,"" & 4,-160, 36,-128,&302D,`if,&8C,"" &44,-160, 76,-128,&302D,`if,&8D,"" &84,-160,116,-128,&302D,`if,&8E,"" ( 124,-160,156,-128,&302D,`if,&8F,"" (* 4,-380, 68,-308,&303E,`if,`ib,"ecf0" 2*92,-380,152,-308,&303E,`if,`ib,"ecf1" <* 4,-460, 68,-388,&303E,`if,`ib,"ecf2" F*92,-460,152,-388,&303E,`if,`ib,"ecf3" P- 40,-248,110,-172,&303E,`if,&80,"curcol" Z null d@ &1,`wf,`wb,0,-400,500,0,&302D,"",250,330,750,730,1,Palette n# 0,-400,500,0,&3000,`if,`ib,"" x null B &11,`wf,`wb,0,-292,306,0,&302D,"",150,400,456,692,64,Pattern ! 2,-36, 38,-4,&3029,7,&80,"" !40,-36, 76,-4,&3029,7,&80,"" !78,-36,114,-4,&3029,7,&80,"" # 116,-36,152,-4,&3029,7,&80,"" # 154,-36,190,-4,&3029,7,&80,"" # 192,-36,228,-4,&3029,7,&80,"" # 230,-36,266,-4,&3029,7,&80,"" # 268,-36,304,-4,&3029,7,&80,"" $ 2,- 72, 38,- 40,&3029,7,&80,"" $40,- 72, 76,- 40,&3029,7,&80,"" $78,- 72,114,- 40,&3029,7,&80,"" & 116,- 72,152,- 40,&3029,7,&80,"" & 154,- 72,190,- 40,&3029,7,&80,"" & 192,- 72,228,- 40,&3029,7,&80,"" & 230,- 72,266,- 40,&3029,7,&80,"" "& 268,- 72,304,- 40,&3029,7,&80,"" ,$ 2,-108, 38,- 76,&3029,7,&80,"" 6$40,-108, 76,- 76,&3029,7,&80,"" @$78,-108,114,- 76,&3029,7,&80,"" J& 116,-108,152,- 76,&3029,7,&80,"" T& 154,-108,190,- 76,&3029,7,&80,"" ^& 192,-108,228,- 76,&3029,7,&80,"" h& 230,-108,266,- 76,&3029,7,&80,"" r& 268,-108,304,- 76,&3029,7,&80,"" |$ 2,-144, 38,-112,&3029,7,&80,"" $40,-144, 76,-112,&3029,7,&80,"" $78,-144,114,-112,&3029,7,&80,"" & 116,-144,152,-112,&3029,7,&80,"" & 154,-144,190,-112,&3029,7,&80,"" & 192,-144,228,-112,&3029,7,&80,"" & 230,-144,266,-112,&3029,7,&80,"" & 268,-144,304,-112,&3029,7,&80,"" $ 2,-180, 38,-148,&3029,7,&80,"" $40,-180, 76,-148,&3029,7,&80,"" $78,-180,114,-148,&3029,7,&80,"" & 116,-180,152,-148,&3029,7,&80,"" & 154,-180,190,-148,&3029,7,&80,"" & 192,-180,228,-148,&3029,7,&80,"" & 230,-180,266,-148,&3029,7,&80,"" & 268,-180,304,-148,&3029,7,&80,"" $ 2,-216, 38,-184,&3029,7,&80,"" &$40,-216, 76,-184,&3029,7,&80,"" 0$78,-216,114,-184,&3029,7,&80,"" :& 116,-216,152,-184,&3029,7,&80,"" D& 154,-216,190,-184,&3029,7,&80,"" N& 192,-216,228,-184,&3029,7,&80,"" X& 230,-216,266,-184,&3029,7,&80,"" b& 268,-216,304,-184,&3029,7,&80,"" l$ 2,-252, 38,-220,&3029,7,&80,"" v$40,-252, 76,-220,&3029,7,&80,"" $78,-252,114,-220,&3029,7,&80,"" & 116,-252,152,-220,&3029,7,&80,"" & 154,-252,190,-220,&3029,7,&80,"" & 192,-252,228,-220,&3029,7,&80,"" & 230,-252,266,-220,&3029,7,&80,"" & 268,-252,304,-220,&3029,7,&80,"" $ 2,-288, 38,-256,&3029,7,&80,"" $40,-288, 76,-256,&3029,7,&80,"" $78,-288,114,-256,&3029,7,&80,"" & 116,-288,152,-256,&3029,7,&80,"" & 154,-288,190,-256,&3029,7,&80,"" & 192,-288,228,-256,&3029,7,&80,"" & 230,-288,266,-256,&3029,7,&80,"" & 268,-288,304,-256,&3029,7,&80,"" null B &11,`wf,`wb,0,-192,192,0,&302D,"",600,400,792,592,12,Brushes $0,- 64, 48, 0,&302D,`if,&88,"" *& 48,- 64, 96, 0,&302D,`if,`ib,"" 4' 96,- 64, 144, 0,&302D,`if,`ib,"" >' 144,- 64,192, 0,&302D,`if,`ib,"" H&0,-128, 48,- 64,&302D,`if,`ib,"" R( 48,-128, 96,- 64,&302D,`if,`ib,"" \) 96,-128, 144,- 64,&302D,`if,`ib,"" f) 144,-128,192,- 64,&302D,`if,`ib,"" p&0,-192, 48,-128,&302D,`if,`ib,"" z( 48,-192, 96,-128,&302D,`if,`ib," " ) 96,-192, 144,-128,&302D,`if,`ib,"" ) 144,-192,192,-128,&302D,`if,`ib,"-" null F &11,`wf,`wb,0,-100,250,0,&F02D,"",900,350,1150,450,0,"DISK SAVE" null B &41,`wf,`wb,0,-700,1280,0,&302D,"",100,50,1000,300,0,"ERROR"  "" : `max_window = wind%  l createW(cx0%,cy0%,cx1%,cy1%,scx%,scy%,flags%,fc%,bc%,sx0%,sy0%,sx1%,sy1%,iconf%,icon$,title$,nicons%) M!wimp=cx0%:wimp!4=cy0%:wimp!8=cx1%:wimp!12=cy1%:wimp!16=scx%:wimp!20=scy% wimp!24=-1:wimp!28=flags% 3wimp?32=`tf:wimp?33=`tb:wimp?34=fc%:wimp?35=bc% 1wimp?36=`sf:wimp?37=`sb:wimp?38=`wb:wimp?39=0 7wimp!40=sx0%:wimp!44=sy0%:wimp!48=sx1%:wimp!52=sy1% $Twimp!56=iconf%:wimp!60=0:wimp!64=0:wimp!68=0: DANGER $(wimp+60)=LEFT$(icon$,11) .$(wimp+72)=title$,11) 8wimp!84=nicons% B+I%,x0%,y0%,x1%,y1%,f%,data$:I%=wimp+88 Lȕ nicons%>0 V& x0%,y0%,x1%,y1%,f%,fc%,bc%,data$ `@I%!0=x0%:I%!4=y0%:I%!8=x1%:I%!12=y1%:I%!16=f%:$(I%+20)=data$ jI%?19=fc%+(bc%15)*16 tI%=I%+32:nicons%=nicons%-1 ~ %ș create_window,0,wimp handle%  =handle% > open_window(handle%,x0%,y0%,x1%,y1%,scx%,scy%,bhandle%)  handle%=-1 bhandle%<-1 #wimp!0=handle%:wimp!28=bhandle% 1wimp!4=x0%:wimp!8=y0%:wimp!12=x1%:wimp!16=y1% wimp!20=scx%:wimp!24=scy% ș open_window,0,wimp  handle% = windows(1)  ecf(0)  ecf(1)  ecf(2)  ecf(3)  handle% = 0 1open_window(windows(6),4,442,160,936,0,0,-1) (4open_window(windows(5),164,232,1276,976,0,0,-1) 2 upd_ecf <24,162;232;1274;972; F135 P d3ș &2E,256+16,spt_area,"HDS",0,162,232,1274,972 n 26 x%ș screen_redraw,-1,0,0,1279,1023    poll(mask) !wimp = mask !ș poll_wimp,0,wimp handle%  =handle%   redraw_window(handle%) !wimp = handle% #ș redraw_window,0,wimp more%  handle%=windows(11)  ȕ more% # wimp!4+16,wimp!16-40: $ ' ș get_rectangle,0,wimp more%  2 : PMF BODGE - must complete the protocol ! " ȕ more% ,' ș get_rectangle,0,wimp more% 6 @ J T ^ close_window(handle%) h a% r, handle%=windows(11) ȗ ȓ0,0,1279,1023 |!wimp = handle% ș close_window,0,wimp  handle% = windows(1)  a% = 1 `max_window !wimp = windows(a%) ș close_window,0,wimp  a% ("DeskTop")    handle% = windows(8) ecf(`ptrn)  upd_ecf    get_window_state(handle%) !wimp=handle% &ș get_window_state,0,wimp 0 : get_pointer_info D !wimp=`x% Nwimp!4 = `y% Xwimp!8 = `b% bwimp!12 = `handle% lwimp!16 = `icon% v  delete_icon(handle%,n%) !wimp = handle% wimp!4 = n% ș delete_icon,0,wimp  0 set_icon_state(handle%,ih%,f%,if%,ib%,m%) !wimp = handle% wimp!4 = ih% wimp!8 = f% wimp?11 = if%+(ib% 15)*16 wimp!12 = m% ș set_icon_state,0,wimp  # get_icon_info(handle%,icon%)  !wimp=handle% wimp!4=icon%  ș get_icon_info,0,wimp * 4( mouse(x%,y%,b%,handle%,icon%,ob%) >H`b% = b% : `x% = x% : `y% = y% : `handle% = handle% : `icon% = icon% H handle% = -1 Rget_window_state(handle%) \ (b% 1) fȎ handle% p : drag_box(handle%,1) z  :  (b% 2) Ȏ handle% , windows(0) : close_window(windows(1)) & windows(1) : might_close(icon%)   :  (b% 4) & handle%<>windows(0) scrn_copy Ȏ handle% ) windows(0) : test_open(windows(1))  windows(1) : icon_menus % windows(2) : mode_flags(icon%)  windows(4) : load(icon%) $( windows(6) : select_colour(icon%) . windows(7) : palette 8$ windows(8) : patt_edit(icon%) B' windows(9) : select_brush(icon%) L V ` j test_open(handle%) t b%,hp,c% ~* handle% = windows(3) `func% >= 2  b% = 27 0 -1 delete_icon(windows(3),b%)  b% hp = help(`cur_menu,`func%)  b% = 0 27 ș create_icon,0,hp c% hp = hp + 36  b%  get_window_state(handle%)  wimp!32 &0003000 <> 0 Mopen_window(!wimp,wimp!4,wimp!8,wimp!12,wimp!16,wimp!20,wimp!24,wimp!28)     might_close(icon%)  icon% = 1 (close_window(windows(2)) 2 <Ȏ `cur_menu Fm 0 : icon% = `sub_men(0)-1 close_window(windows(3)): icon% = `sub_men(0) close_window(windows(4)) P9 1 : icon% = `sub_men(1) close_window(windows(3)) Z9 2 : icon% = `sub_men(2) close_window(windows(3)) d9 3 : icon% = `sub_men(3) close_window(windows(3)) n9 4 : icon% = `sub_men(4) close_window(windows(3)) x9 5 : icon% = `sub_men(5) close_window(windows(3))    drag_box(handle%,type%) !wimp = handle% wimp!4= type% ș drag_box,0,wimp   key_bounce  x%,y%,b%  ȗ x%,y%,b%  b%<>`b%  4 set_carot_position(handle%,icon%,x%,y%,h%,i%) 3ș set_carot_position,handle%,icon%,x%,y%,h%,i%  " def_heap(handle%) ,+ n%,g%,x0,y0,x1,y1,f%,for%,bck%,tit$,a 6a = 0 : hp = heap @ J n% : `sub_men(a) = n%+1 T n% <> 0 ^heap(a) = hp h g% = 1 n% r# x0,y0,x1,y1,f%,for%,bck%,tit$ |!hp = handle% hp!4= x0 : hp!8= y0 hp!12 = x1 : hp!16 = y1 hp!20 = f% hp?22 = for% : hp?23 = bck% $(hp+24) = tit$ hp = hp + 36  g%   a = a + 1  n%=0 : `func = heap(0) `draw = heap(1) `shape= heap(2) `curve= heap(3) `text = heap(4) &`area = heap(5) 0: : D 9 N( 0,-888,160,-748,&303D,`if,&88,func X* 160,-888,300,-748,&303D,`if,`ib,draw b, 300,-888,440,-748,&303D,`if,`ib,shapes l+ 440,-888,580,-748,&303D,`if,`ib,curve v* 580,-888,720,-748,&303D,`if,`ib,text * 720,-888,860,-748,&303D,`if,`ib,area ) 860,-888,1000,-748,&303D,`if,`ib,"" , 1000,-888,1140,-748,&303D,`if,`ib,load , 1140,-888,1280,-748,&303D,`if,`ib,save  7 ( 0,-888,160,-748,&303D,`if,&88,draw * 160,-888,320,-748,&303D,`if,`ib,line , 320,-888,480,-748,&303D,`if,`ib,joined + 480,-888,640,-748,&303D,`if,`ib,radii + 640,-888,800,-748,&303D,`if,`ib,brush - 800,-888,1000,-748,&303D,`if,`ib,select * 1000,-888,1280,-748,&303D,`if,`ib,""  6 * 0,-888,160,-748,&303D,`if,&88,shapes  / 160,-888,320,-748,&303D,`if,`ib,rectangle , 320,-888,480,-748,&303D,`if,`ib,square  / 480,-888,640,-748,&303D,`if,`ib,parallelo *. 640,-888,800,-748,&303D,`if,`ib,triangle 4) 800,-888,1280,-748,&303D,`if,`ib,"" > 7 H) 0,-888,160,-748,&303D,`if,&88,curve R, 160,-888,320,-748,&303D,`if,`ib,circle \- 320,-888,480,-748,&303D,`if,`ib,ellipse f- 480,-888,640,-748,&303D,`if,`ib,segment p) 640,-888,800,-748,&303D,`if,`ib,arc z- 800,-888,1000,-748,&303D,`if,`ib,sector * 1000,-888,1280,-748,&303D,`if,`ib,""  3 ( 0,-888,160,-748,&303D,`if,&88,text . 160,-888,320,-748,&303D,`if,`ib,text@cur ) 320,-888,1280,-748,&303D,`if,`ib,""  7 ( 0,-888,160,-748,&303D,`if,&88,area * 160,-888,320,-748,&303D,`if,`ib,copy * 320,-888,480,-748,&303D,`if,`ib,move + 480,-888,640,-748,&303D,`if,`ib,clear - 640,-888,800,-748,&303D,`if,`ib,pattern + 800,-888,1000,-748,&303D,`if,`ib,fill * 1000,-888,1280,-748,&303D,`if,`ib,""  0  icon_menus get_pointer_info $, wimp!12 = -1 wimp!12 <> windows(1) . 8 B wimp!16 < 2 L( wimp!16 = 1 test_open(windows(2)) V1 wimp!16 = 0 test_open(windows(7)):palette ` j t `cur_menu = 0 ~Ȏ wimp!16 - 3 : draw_menu: `func% = 3:update_help / 4 : shape_menu : `func% = 3:update_help / 5 : curve_menu : `func% = 3:update_help - 6 : text_menu: `func% = 3:update_help - 7 : area_menu: `func% = 3:update_help ) 8 : PROCtest_open(windows(3)) RCM  9 : get_dir  10: on_top test_open(windows(10)) /set_carot_position(windows(10),0,0,0,-1,0)   show_icons(`func%):    `cur_menu = 1 Ȏ wimp!16 ( 2 : func_menu 2+ 3 : `func% = 3:`state%=0:update_help <+ 4 : `func% = 4:`state%=0:update_help F+ 5 : `func% = 5:`state%=0:update_help P+ 6 : `func% = 6:`state%=0:update_help Z+ 7 : `func% = 7:`state%=0:update_help dtest_open(windows(9)) n3 `sub_men(1) : PROCtest_open(windows(3)) RCM x show_icons(`func%)   `cur_menu = 2 Ȏ wimp!16  2 : func_menu + 3 : `func% = 3:`state%=0:update_help + 4 : `func% = 4:`state%=0:update_help + 5 : `func% = 5:`state%=0:update_help + 6 : `func% = 6:`state%=0:update_help 3 `sub_men(2) : PROCtest_open(windows(3)) RCM  show_icons(`func%)   `cur_menu = 3 Ȏ wimp!16  2 : func_menu "+ 3 : `func% = 3:`state%=0:update_help ,+ 4 : `func% = 4:`state%=0:update_help 6+ 5 : `func% = 5:`state%=0:update_help @+ 6 : `func% = 6:`state%=0:update_help J+ 7 : `func% = 7:`state%=0:update_help T3 `sub_men(3) : PROCtest_open(windows(3)) RCM ^ hshow_icons(`func%) r | `cur_menu = 4 Ȏ wimp!16  2 : func_menu + 3 : `func% = 3:`state%=0:update_help 2 `sub_men(4) : PROCtest_open(windows(3)) RCM  show_icons(`func%)   `cur_menu = 5 Ȏ wimp!16  2 : func_menu + 3 : `func% = 3:`state%=0:update_help + 4 : `func% = 4:`state%=0:update_help + 5 : `func% = 5:`state%=0:update_help + 6 : `func% = 6:`state%=0:update_help %test_open(windows(8)):show_patt  7 : `func% = 7 &3 `sub_men(5) : PROCtest_open(windows(3)) RCM 0 :show_icons(`func%) D N$ a% = 2 `sub_men(`cur_menu)+1 X*set_icon_state(windows(1),a%,0,0,0,0) b a% l v func_menu  n%,a% a% = a% + 1 ( n% = `sub_men(`cur_menu)+1 2 -1 delete_icon(windows(1),n%)  n% ș create_icon,0,`func ș create_icon,0,`func+36 ș create_icon,0,`func+72 ș create_icon,0,`func+108 ș create_icon,0,`func+144 ș create_icon,0,`func+180 ș create_icon,0,`func+216 ș create_icon,0,`func+252 ș create_icon,0,`func+288  `cur_menu = 0:`func% = 2    draw_menu * n% 4 n% = `sub_men(0)+1 2 -1 >delete_icon(windows(1),n%) H n% Rș create_icon,0,`draw \ș create_icon,0,`draw+36 fș create_icon,0,`draw+72 pș create_icon,0,`draw+108 zș create_icon,0,`draw+144 ș create_icon,0,`draw+180 ș create_icon,0,`draw+216 `cur_menu = 1 : `state% = 0   shape_menu  n%  n% = `sub_men(0)+1 2 -1 delete_icon(windows(1),n%)  n% ș create_icon,0,`shape ș create_icon,0,`shape+36 ș create_icon,0,`shape+72 ș create_icon,0,`shape+108 ș create_icon,0,`shape+144 ș create_icon,0,`shape+180 `cur_menu = 2 : `state% = 0 $ . curve_menu 8 n% B n%= `sub_men(0)+1 2 -1 Ldelete_icon(windows(1),n%) V n% `ș create_icon,0,`curve jș create_icon,0,`curve+36 tș create_icon,0,`curve+72 ~ș create_icon,0,`curve+108 ș create_icon,0,`curve+144 ș create_icon,0,`curve+180 ș create_icon,0,`curve+216 `cur_menu = 3 : `state% = 0   text_menu  n%  n%= `sub_men(0)+1 2 -1 delete_icon(windows(1),n%)  n% ș create_icon,0,`text ș create_icon,0,`text+36 ș create_icon,0,`text+72  `cur_menu = 4 : `state% = 0   area_menu ( n% 2 n%= `sub_men(0)+1 2 -1 <delete_icon(windows(1),n%) F n% Pș create_icon,0,`area Zș create_icon,0,`area+36 dș create_icon,0,`area+72 nș create_icon,0,`area+108 xș create_icon,0,`area+144 ș create_icon,0,`area+180 ș create_icon,0,`area+216 `cur_menu = 5 : `state% = 0   mode_flags(icon%) get_pointer_info Ȏ icon% 1 0 : `m_open = `m_fill : `m_fill = `m_fill 1 1 : `m_fill = `m_open : `m_open = `m_open  2 : `m_dots = `m_dots  3 : `m_xor= `m_xor /`m_xor `m_or=:`m_and=:`m_inv=:`style%=3  4 : `m_or = `m_or /`m_or `m_xor=:`m_and=:`m_inv=:`style%=1  5 : `m_and= `m_and /`m_and `m_xor=:`m_or=:`m_inv=:`style%=2 " 6 : `m_inv= `m_inv ,/`m_inv `m_xor=:`m_or=:`m_and=:`style%=4 6 @8 `m_xor= `m_or= `m_and= `m_inv= `style%=0 J=set_icon_state(windows(2),0,&303D,`if,icol(`m_fill),-1) T=set_icon_state(windows(2),1,&303D,`if,icol(`m_open),-1) ^=set_icon_state(windows(2),2,&303D,`if,icol(`m_dots),-1) h windows(5) =  t_wimp!28 <> -1 =  `x% < 166 =  `y% < 232 = =  do_line Ȏ `state%  1 : rubb_line  (`b% 1)=1 rubb_line `do_x0% = `x% !`do_y0% = `y% !  ! (`b% 4)=4 ! rubb_line !* 4,`do_x0%,`do_y0% !4 5,`x%,`y% !>`state% = 0:key_bounce !H !Rrubb_line !\ !f !p 0 : (`b% 4)=4 !z`do_x0% = `x% !`do_y0% = `y% !`state% = 1:key_bounce ! ! ! ! do_joined !Ȏ `state% ! 1 : rubb_line ! (`b% 1)=1 !rubb_line !`do_x0% = `x% !`do_y0% = `y% ! " (`b% 4)=4 "rubb_line " 4,`do_x0%,`do_y0% "$ 5,`x%,`y% ".`do_x0%=`x% "8`do_y0%=`y% "B "Lrubb_line "V "` "j 0 : (`b% 4)=4 "t`do_x0% = `x% "~`do_y0% = `y% "`state% = 1:key_bounce " " " " do_point " (`b% 4)=4 " 4,`x%-8,`y%+16 " 135:135 " 5,`brsh% " " " do_radii #Ȏ `state% #  1 : rubb_line # (`b% 1)=1 #rubb_line #(`do_x0% = `x% #2`do_y0% = `y% #< #F (`b% 4)=4 #Prubb_line #Z 4,`do_x0%,`do_y0% #d 5,`x%,`y% #n #xrubb_line # # # 0 : (`b% 4)=4 #`do_x0% = `x% #`do_y0% = `y% #`state% = 1:key_bounce # # # # do_rect #Ȏ `state% # 1 : rubb_rect # (`b% 1)=1 $rubb_rect $`do_x0% = `x% $`do_y0% = `y% $" $, (`b% 4)=4 $6rubb_rect $@draw_rect $J`state% = 0:key_bounce $T $^rubb_rect $h $r $| 0 : (`b% 4)=4 $`do_x0% = `x% $`do_y0% = `y% $`state% = 1:key_bounce $ $ $ $ do_square $Ȏ `state% $ 1 : rubb_sqre $ (`b% 1)=1 $rubb_rect $`do_x0% = `x% $`do_y0% = `y% % % (`b% 4)=4 %rubb_sqre %&draw_sqre %0`state% = 0:key_bounce %: %Drubb_sqre %N %X %b 0 : (`b% 4)=4 %l`do_x0% = `x% %v`do_y0% = `y% %`state% = 1:key_bounce % % % % do_para %Ȏ `state% % 0 : (`b% 4)=4 %`do_x0% = `x% %`do_y0% = `y% %`state% = 1:key_bounce % % 1 : rubb_line % (`b% 1)=1 &rubb_line & `do_x0% = `x% &`do_y0% = `y% &  &* (`b% 4)=4 &4rubb_line &>`do_x1% = `x% &H`do_y1% = `y% &R`state% = 2:key_bounce &\ &frubb_line &p &z & 2 : rubb_para & (`b% 1)=1 &rubb_para &`do_x0% = `x% &`do_y0% = `y% & & (`b% 4)=4 &rubb_para &draw_para &`state% = 0:key_bounce & &rubb_para & ' ' ' '$ do_tria '.Ȏ `state% '8 0 : (`b% 4)=4 'B`do_x0% = `x% 'L`do_y0% = `y% 'V`state% = 1:key_bounce '` 'j 1 : rubb_line 't (`b% 1)=1 '~rubb_line '`do_x0% = `x% '`do_y0% = `y% ' ' (`b% 4)=4 'rubb_line '`do_x1% = `x% '`do_y1% = `y% '`state% = 2:key_bounce ' 'rubb_line ' ' ( 2 : rubb_tria (  (`b% 1)=1 (rubb_tria (`do_x0% = `x% ((`do_y0% = `y% (2 (< (`b% 4)=4 (Frubb_tria (Pdraw_tria (Z`state% = 0:key_bounce (d (nrubb_tria (x ( ( ( ( do_circ (Ȏ `state% ( 0 : (`b% 4)=4 (`do_x0% = `x% (`do_y0% = `y% (`state% = 1:key_bounce ( ( 1 : rubb_circ ( (`b% 1)=1 (rubb_circ )`do_x0% = `x% )`do_y0% = `y% ) )" (`b% 4)=4 ),rubb_circ )6draw_circ )@`state% = 0:key_bounce )J )Trubb_circ )^ )h )r )| ) do_elip )Ȏ `state% ) 0 : (`b% 4)=4 )`do_x0% = `x% )`do_y0% = `y% )`state% = 1:key_bounce ) ) 1 : (`b% 1)=1 )`do_x0% = `x% )`do_y0% = `y% ) )rubb_line ) (`b% 4)=4 *rubb_line *`do_x1% = `x% *`do_y1% = `y% *&`state% = 2:key_bounce *0 *:rubb_line *D *N *X 2 : rubb_elip *b (`b% 1)=1 *lrubb_elip *v`do_x0% = `x% *`do_y0% = `y% * * (`b% 4)=4 *rubb_elip *draw_elip *`state% = 0:key_bounce * *rubb_elip * * * * * do_segm +Ȏ `state% +  0 : (`b% 4)=4 +`do_x0% = `x% + `do_y0% = `y% +*`state% = 1:key_bounce +4 +> 1 : rubb_line +H (`b% 1)=1 +Rrubb_line +\`do_x0% = `x% +f`do_y0% = `y% +p +z (`b% 4)=4 +rubb_line +`do_x1% = `x% +`do_y1% = `y% +`state% = 2:key_bounce + +rubb_line + + + 2 : rubb_segm + (`b% 1)=1 +rubb_segm +`do_x1%=`x% +`do_y1%=`y% , , (`b% 4)=4 ,rubb_segm ,$draw_segm ,.`state% = 0:key_bounce ,8 ,Brubb_segm ,L ,V ,` ,j ,t do_arc ,~Ȏ `state% , 0 : (`b% 4)=4 ,`do_x0% = `x% ,`do_y0% = `y% ,`state% = 1:key_bounce , , 1 : rubb_line , (`b% 1)=1 ,rubb_line ,`do_x0% = `x% ,`do_y0% = `y% , , (`b% 4)=4 -rubb_line - `do_x1% = `x% -`do_y1% = `y% -`state% = 2:key_bounce -( -2rubb_line -< -F -P 2 : rubb_arc -Z (`b% 1)=1 -d rubb_arc -n`do_x1%=`x% -x`do_y1%=`y% - - (`b% 4)=4 - rubb_arc - draw_arc -`state% = 0:key_bounce - - rubb_arc - - - - - do_sect -Ȏ `state% . 0 : (`b% 4)=4 .`do_x0% = `x% .`do_y0% = `y% ."`state% = 1:key_bounce ., .6 1 : rubb_line .@ (`b% 1)=1 .Jrubb_line .T`do_x0% = `x% .^`do_y0% = `y% .h .r (`b% 4)=4 .|rubb_line .`do_x1% = `x% .`do_y1% = `y% .`state% = 2:key_bounce . .rubb_line . . . 2 : rubb_sect . (`b% 1)=1 .rubb_sect .`do_x1%=`x% .`do_y1%=`y% . / (`b% 4)=4 /rubb_sect /draw_sect /&`state% = 0:key_bounce /0 /:rubb_sect /D /N /X /b /l do_copy /vȎ `state% / 0 : (`b% 4)=4 /`do_x0% = `x% /`do_y0% = `y% /`state% = 1:key_bounce /key_bounce / / 1 : rubb_rect / (`b% 1)=1 /rubb_rect /`do_x0% = `x% /`do_y0% = `y% / / (`b% 4)=4 0rubb_rect 0 `do_x1% = `x% 0`do_y1% = `y% 0  `do_x0%,`do_y0% 0* `do_x1%,`do_y1% 04 *sget 1 0H ș &2E,256+14,spt_area,"1",0 0R`state% = 2:key_bounce 0\key_bounce 0f 0prubb_rect 0z 0 0 2 : move_rect 0 (`b% 4)=4 0move_rect 0draw_copy 0 0 (`b% 1)=1 0move_rect 0`state% = 0:key_bounce 0key_bounce 0 0move_rect 0 1 1 1 1$ do_clear 1. (`b% 4)=4 18 135 1B 1L`dr_area=-1 1Vscrn_copy 1`%ș screen_redraw,-1,0,0,1279,1023 1j 1t 1~ do_move 1Ȏ `state% 1 0 : (`b% 4)=4 1`do_x0% = `x% 1`do_y0% = `y% 1`state% = 1:key_bounce 1key_bounce 1 1 1 : rubb_rect 1 (`b% 1)=1 1rubb_rect 1`do_x0% = `x% 1`do_y0% = `y% 2 2  (`b% 4)=4 2rubb_rect 2`do_x1% = `x% 2(`do_y1% = `y% 22`state% = 2:key_bounce 2<key_bounce 2F 2Prubb_rect 2Z 2d 2n 2 : move_rect 2x (`b% 4)=4 2move_rect 2draw_move 2`state% = 0:key_bounce 2 2move_rect 2 2 2 2 do_fill 2 (`b% 4)<>4 2a% = `x%,`y%) 2 128+a% 2 &85,`x%,`y% 3135 3 3 do_text 3"Ȏ `state% 3, 0 : (`b% 4)=4 36`do_x0%=`x% 3@`do_y0%=`y% 3J`state% = 1 : key_bounce 3T ș 6,15,1 3^ 3h 1 : Ȗ:rubb_curs:Ȗ 3r (`b% 1)=1 3|rubb_curs 3`do_x0%=`x% 3`do_y0%=`y% 3 3rubb_curs 3 a%=(0) 3 a%=13 3 `state%=0 3 3 a%<>-1 3 5 3 4,`do_x0%,`do_y0%+32 3 a% 3`do_x0%=`do_x0%+16 4 4 4 4& 40 4:C ************************************************************* 4D rubb_line 4N 4,`do_x0%,`do_y0% 4X 6,`x%,`y% 4b 4l rubb_rect 4v 4,`do_x0%,`do_y0% 4 6,`do_x0%,`y% 4 6,`x%,`y% 4 6,`x%,`do_y0% 4 6,`do_x0%,`do_y0% 4 4 rubb_sqre 4+ ((`do_x0%-`x%)) > ((`do_y0%-`y%)) 4 `do_y0% > `y% 4$`y% = `do_y0% - ((`do_x0%-`x%)) 4 4$`y% = `do_y0% + ((`do_x0%-`x%)) 4 4 5 `do_x0% > `x% 5 $`x% = `do_x0% - ((`do_y0%-`y%)) 5 5 $`x% = `do_x0% + ((`do_y0%-`y%)) 5* 54 5> 4,`do_x0%,`do_y0% 5H 6,`do_x0%,`y% 5R 6,`x%,`y% 5\ 6,`x%,`do_y0% 5f 6,`do_x0%,`do_y0% 5p 5z rubb_para 5 4,`do_x0%,`do_y0% 5 6,`do_x1%,`do_y1% 5 6,`x%,`y% 53 6,`do_x0%+(`x%-`do_x1%),`do_y0%+(`y%-`do_y1%) 5 6,`do_x0%,`do_y0% 5 5 rubb_tria 5 4,`do_x0%,`do_y0% 5 6,`do_x1%,`do_y1% 5 6,`x%,`y% 5 6,`do_x0%,`do_y0% 5 5 rubb_circ 6 4,`do_x0%,`do_y0% 6 &96,`x%,`y% 6 6$ rubb_elip 6. 4,`do_x0%,`do_y0% 68 4,`do_x1%,`do_y1% 6B &C6,`x%,`y% 6L 6V rubb_segm 6` 4,`do_x0%,`do_y0% 6j 4,`do_x1%,`do_y1% 6t &AE,`x%,`y% 6~ 6 rubb_arc 6 4,`do_x0%,`do_y0% 6 4,`do_x1%,`do_y1% 6 &A6,`x%,`y% 6 6 rubb_sect 6 4,`do_x0%,`do_y0% 6 4,`do_x1%,`do_y1% 6 &B6,`x%,`y% 6 6 rubb_curs 6 4,`do_x0%,`do_y0% 7 &62,16,32 7  7 move_rect 7 4,`x%,`y% 7(" 6,`x%,`y%+(`do_y0%-`do_y1%) 725 6,`x%+(`do_x1%-`do_x0%),`y%+(`do_y0%-`do_y1%) 7<" 6,`x%+(`do_x1%-`do_x0%),`y% 7F 6,`x%,`y% 7P 7ZC ************************************************************* 7d draw_rect 7n `m_fill 7x)ȓ Ȑ `x%,`y%,`do_x0%-`x%,`do_y0%-`y% 7 7&ȓ `x%,`y%,`do_x0%-`x%,`do_y0%-`y% 7 7 7 draw_sqre 7+ ((`do_x0%-`x%)) > ((`do_y0%-`y%)) 7 `do_y0% > `y% 7$`y% = `do_y0% - ((`do_x0%-`x%)) 7 7$`y% = `do_y0% + ((`do_x0%-`x%)) 7 7 7 `do_x0% > `x% 8$`x% = `do_x0% - ((`do_y0%-`y%)) 8 8$`x% = `do_x0% + ((`do_y0%-`y%)) 8" 8, 86 `m_open 8@&ȓ `x%,`y%,`do_x0%-`x%,`do_y0%-`y% 8J 8T)ȓ Ȑ `x%,`y%,`do_x0%-`x%,`do_y0%-`y% 8^ 8h 8r draw_para 8| `m_open 8 4,`do_x0%,`do_y0% 8 5,`do_x1%,`do_y1% 8 5,`x%,`y% 83 5,`do_x0%+(`x%-`do_x1%),`do_y0%+(`y%-`do_y1%) 8 5,`do_x0%,`do_y0% 8 8 4,`do_x0%,`do_y0% 8 4,`do_x1%,`do_y1% 8 &75,`x%,`y% 8 8 8 draw_tria 8 `m_open 9 4,`do_x0%,`do_y0% 9 5,`do_x1%,`do_y1% 9 5,`x%,`y% 9& 5,`do_x0%,`do_y0% 90 9: 4,`do_x0%,`do_y0% 9D 4,`do_x1%,`do_y1% 9N &55,`x%,`y% 9X 9b 9l draw_circ 9v 4,`do_x0%,`do_y0% 9 `m_open 9 &95,`x%,`y% 9 9 &9D,`x%,`y% 9 9 9 draw_elip 9 4,`do_x0%,`do_y0% 9 4,`do_x1%,`do_y1% 9 `m_open 9 &C5,`x%,`y% 9 9 &CD,`x%,`y% : :  : draw_segm :  4,`do_x0%,`do_y0% :* `m_open :4 4,`do_x1%,`do_y1% :> &AD,`x%,`y% :H :R 4,`do_x1%,`do_y1% :\ &AD,`x%,`y% :f :p :z draw_arc : 4,`do_x0%,`do_y0% : 4,`do_x1%,`do_y1% : &A5,`x%,`y% : : draw_sect : 4,`do_x0%,`do_y0% : `m_open : 4,`do_x1%,`do_y1% : &B5,`x%,`y% : : 4,`do_x1%,`do_y1% : &B5,`x%,`y% : ; ; draw_copy ; *SCHOOSE 1 ;$ `x%,`y% ;8ș &2E,256+28,spt_area,"1" ;B ;L draw_move ;V 135 ;` 4,`do_x0%,`do_y0% ;j 4,`do_x1%,`do_y1% ;t &BD,`x%,`y% ;~ ;( "WELCOME PAINT By H.Douglas-Smith" ;- "Help is not available on 512k machine" ; " " ; " " ; " " ; " " ; " " ; "" ; contain 28 icons (0-27) ; create_help ; a$,b$,a%,b%,c% ; n% = 0 <hp = `help <  < a% = 1 7 < a$ <( a$<44 <2 <<a$ = " "+a$+" " = 44  >`ptrn = icon%-16 >`col% = 17 >&ecf(`ptrn) >0 80,0 >:ȓ Ȑ 46,694,64,64 >N)ș &2E,16,0,"curcol",0,46,694,100,758 >X upd_ecf >b80+`style%,0 >l26 >v &85,84,740 >show_patt > > > * Palette Window Update * > pal_upd > 7 >ȏ Ȑ 500,500,150 >ȓ Ȑ 302,344,16,312 > 0 >ȏ 500,500,150 > 0 >ȏ 500,500,150 >ȓ 300,340,20,320 ? `col% > 15 ? rgb_hsv(`col%) ? 500,500 ? s1 = s*150 ?*v1 = v*300 ?4' (s1*((h)))+500,(s1*((h)))+500 ?> 302,350+v1 ?H 318,350+v1 ?R ?\ * PALETTE UPDATE* ?f palette ?p `col% > 15 ?z3rgb_hsv(`col%): convert colour palette to HSV ? 7 ?ȏ Ȑ 500,500,150 ?ȓ Ȑ 302,344,16,312 ? 0 ?ȏ 500,500,150 ?s1 = s*150 ?v1 = v*300 ? ?E *************************************************************** ?J `b% seems to not hold the correct button presses at this point since ?G the only way to trigger this is to press left and middle together ?E *************************************************************** ? @ (`b% 4)=4 @) ((`x%-500)^2+(`y%-500)^2) <= 150 @$s1 = ((`x%-500)^2+(`y%-500)^2) @$ `x% = 500 @. h = 0 @8 @B!h = (((`y%-500)/(`x%-500))) @L @V h < 0 @` `x% < 500 @jh = h + 180 @t @~h = h + 360 @ @ @ `y% < 500 @h = h + 180 @ @ @ h = 90 h = 91 @ h = 180 h = 181 @ h = 270 h = 271 @s = s1/150 : v = v1/300 @ hsv_rgb @=`r(`col%) = r*256 : `g(`col%) = g*256 : `b(`col%) = b*256 A"19,`col%,16,r*256,g*256,b*256 A  A5 `x% > 300 `x% < 320 `y% > 350 `y% < 650 Av1 = (`y%-350) A(s = s1/150 : v = v1/300 A2 hsv_rgb A<=`r(`col%) = r*256 : `g(`col%) = g*256 : `b(`col%) = b*256 AF"19,`col%,16,r*256,g*256,b*256 AP AZ Adrgb_hsv(`col%) Anv1 = v*300 : s1 = s*150 Ax 302,350+v1 A 318,350+v1 A 500,500 A' (s1*((h)))+500,(s1*((h)))+500 A A A * RGB TO HSV* A rgb_hsv(c) A max,min,r,g,b,rc,gc,bc Ar = (`r(c) 16)/16 Ag = (`g(c) 16)/16 Ab = (`b(c) 16)/16 Amax = 0 : min = 1 A max < r max = r B min > r min = r B max < g max = g B min > g min = g B" max < b max = b B, min > b min = b B6 v = max B@ max <> 0 BJs = (max-min)/max BT B^ s = 0 Bh Br s = 0 B| h = 0 B Brc = (max - r)/(max-min) Bgc = (max-g)/(max-min) Bbc = (max-b)/(max-min) B r = max B h = bc-gc B B g = max Bh = 2 + rc - bc B B b = max h = 4 + gc - rc B B Ch = h * 60 C h < 0 h = h + 360 C C& C0 * HSV TO RGB* C: hsv_rgb CD i%,f,p,q,t CN s = 0 CX r = v Cb g = v Cl b = v Cv C C h = 360 h = 0 C i% = h/60 C h= h/60 C f= h-i% Cp= v*(1-s) Cq= v*(1-(s*f)) Ct= v*(1-(s*(1-f))) C Ȏ i% C 0 : r = v : g = t : b = p C 1 : r = q : g = v : b = p C 2 : r = p : g = v : b = t C 3 : r = p : g = q : b = v D 4 : r = t : g = p : b = v D  5 : r = v : g = p : b = q D D  D* ecf(n%) D4 23,2,`p(n%,0)+`p(n%,1)*16,`p(n%,8)+`p(n%,9)*16,`p(n%,16)+`p(n%,17)*16,`p(n%,24)+`p(n%,25)*16,`p(n%,32)+`p(n%,33)*16,`p(n%,40)+`p(n%,41)*16,`p(n%,48)+`p(n%,49)*16,`p(n%,56)+`p(n%,57)*16 D> 23,3,`p(n%,2)+`p(n%,3)*16,`p(n%,10)+`p(n%,11)*16,`p(n%,18)+`p(n%,19)*16,`p(n%,26)+`p(n%,27)*16,`p(n%,34)+`p(n%,35)*16,`p(n%,42)+`p(n%,43)*16,`p(n%,50)+`p(n%,51)*16,`p(n%,58)+`p(n%,59)*16 DH 23,4,`p(n%,4)+`p(n%,5)*16,`p(n%,12)+`p(n%,13)*16,`p(n%,20)+`p(n%,21)*16,`p(n%,28)+`p(n%,29)*16,`p(n%,36)+`p(n%,37)*16,`p(n%,44)+`p(n%,45)*16,`p(n%,52)+`p(n%,53)*16,`p(n%,60)+`p(n%,61)*16 DR 23,5,`p(n%,6)+`p(n%,7)*16,`p(n%,14)+`p(n%,15)*16,`p(n%,22)+`p(n%,23)*16,`p(n%,30)+`p(n%,31)*16,`p(n%,38)+`p(n%,39)*16,`p(n%,46)+`p(n%,47)*16,`p(n%,54)+`p(n%,55)*16,`p(n%,62)+`p(n%,63)*16 D\ 80+`style%,0 Dfȓ Ȑ 46,694,64,64 Dp D Ȏ n% D- 0 : ș &2E,16,0,"ecf0",0,46,694,100,758 D- 1 : ș &2E,16,0,"ecf1",0,46,694,100,758 D- 2 : ș &2E,16,0,"ecf2",0,46,694,100,758 D- 3 : ș &2E,16,0,"ecf3",0,46,694,100,758 D D D show_patt D a% = 0 63 D>set_icon_state(windows(8),a%,&3029,8,`p(`ptrn,a%)+&80,-1) D a% D D patt_edit(icon%) E icon% = -1 E `col% = 17 E:set_icon_state(windows(8),icon%,&3029,8,`col%+&80,-1) E$`p(`ptrn,icon%)=`col% E. E8 scrn EB 135 EL EV E` update(handle%) Ej% handle% = windows(5) dr_copy Et% handle% = windows(7) pal_upd E~ E scrn_copy E `dr_area = -1 E3ș &2E,256+16,spt_area,"HDS",0,162,232,1274,972 E E E dr_copy E(ș &2E,256+34,spt_area,"HDS",162,232 E E select_brush(icon%) F icon%<0 icon%>12 F ;set_icon_state(windows(9),`brsh%-243,&303D,`if,`ib,-1) F`brsh% = icon%+243 F6set_icon_state(windows(9),icon%,&303D,`if,&88,-1) F( F2D ************************************************************** F< get_dir FF a% = `max_file% 0 -1 FPdelete_icon(windows(4),a%) FZ a% Fda%=0: ht%=0 Fn9ș &0C,10,"&.Apps.UserPics",par%,1,a%,255,"*" ,,,n% Fx n% = 0 F( on_top test_open(windows(4)) F F F ȕ n%=1 F entry F a%+=1 F; ș &0C,10,"&.Apps.UserPics",par%,1,a%,255,"*" ,,,n% F F& on_top test_open(windows(4)) F F entry F!wimp = windows(4) Fwimp!4= 10 : 0 Gwimp!8= ht% - 32 G wimp!12 = 120 : 100 Gwimp!16 = ht% G"wimp!20 = &3019 G,wimp?22 = `if G6wimp?23 = `ib G@ $(wimp+24) = strng(par%+20) GJș create_icon,0,wimp GTht%=ht%-32 G^ Gh strng(p%) Gr res$: res$="" G|"ȕ ?p%<>0 res$+=(?p%):p%+=1: G =res$ G load(icon%) G icon% = -1 G$get_icon_info(windows(4),icon%) Gclose_window(windows(4)) G dr_copy G24,162;232;1274;972; G/("SCREENLOAD &.Apps.UserPics."+$(wimp+28)) G`dr_area = -1 Gscrn_copy G26 G G save_name H) !wimp<> windows(10) wimp!4<>0 H wimp?24<> 13 Hclose_window(windows(10)) H& dr_copy H024,162;232;1274;972; H:+("SCREENSAVE &.Apps.UserPics."+$save%) HD26 HN HX upd_ecf Hb a% = 0 3 Hl6set_icon_state(windows(6),a%+16,&303E,`if,`ib,-1) Hv a% H H on_top H!t_wimp= windows(5) H ș get_window_state,0,t_wimp H t_wimp!28 <> -1 = H= H H report H4open_window(windows(11),100,50,1100,150,0,0,-1) Hȗ ȓ100,50,1000,136 H Hugo UserFonts UserFonts HugoHugoArc @kt(Arc @kt( UserPics UserPics Hugo,screendumpE @@p0 p0 00p p pppАpАqwwwwwwwwwwwwwwww""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'""""""""""""""""rwwwwwwwwww""""""""""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""wwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww""""wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'""""""""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwww'"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"""""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww'"""""""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwww""""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwww'""""""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwww"""""""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwww'"""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwww'""""""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwww"""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwww""""rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwww"""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwww""rwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwww"rwwwwwwwwwwwwqwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwrwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333wwwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww7333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww733333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwww73333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwwwwwwwwwwwwwwwwww33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwqwwwwwwwwwwwwwwww333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333swwwwwwwwwwwwHugoTUNE1 @G`~BpTUNE2 @@cxTUNE1 @G`~BpTUNE2 @@cx UserTunes UserTunes Hugo:Maestro  @N@b@d@j@0@@@@ \g                                8 @@I@9 @@p@h h@h@8 @@p@p p@q@P @@H x@@@ I@x@9 A@Q@9 A@I@h h@@P P@P@X @p@Q @a@H x@`@X X@X@aP P@P@P P@P@P X@a@a h@I@Y `@@y X@a@a `@`@i p@Q@P Q@I@Q Q@Q@P X@``a h@p@q p@i@y X@h@a `@@@ p@x@qa h@p@a h@I@x @@P P@P@ @i@h h@h@q P@Y@X X@X@a i@``a i@q@y @h@8 @@I@ `@``i h@``q P@``h H@Q@P ``q@ ``a@ ``@ ``@ ``Y@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXXXXXXXXXXXXXXXxxxxxxxxxxxxxxxxxMaestro @@@6@@@@@@ \"w7 qq  q       w7 qq qs  wyyppiqihqyphp`xhxxpphqyphbHqx`hpxhh`aJqhihbphphihphp`qHxh`hhhipyxhyxx`xahqhq`y`yxpyx`ypXpxhqy`y`YyXh`hhhxhxphxhyXyp`qXHyHhhhhphhhhhhh``Hhhh`hxhhhXhQ@HHugoCorpus @% Trinity @7( Corpus @% Trinity @7( Fonts Fonts HugoBHugoMedium @ & Medium @ & |Corpus Corpus HugoHugoIntMetrics@8s-4 x90y45 @y-2IntMetrics@8s-4 x90y45 @y-2Medium Medium HugoCorpus.Medium   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Yop=dcccim_ihihukwrh|O:3$002=`30& +.:.:J-= .$c[>0J0JV88fr+T ?:33cG5+ &3N JLO$ D`=DfD/Yn  ::835^^Q^'+......====$:8>>AAAA5JJJJfhfh0B:::::c:55533&3.B[EDDUDUujDDD??DDDGDGSh6D3P3 0CBP^&E2DDDxsu[xzzH)'"1 1@T>)()E*3TT.6mW\'61)3'O3"'3$")9R'9Jx6Jx$x|HJHJMMI7   0>))))))33336%''))))4=6"""""$)))'9.9H?RnCGmAATfpodWab}WeWfdffR;766D666E6666666H6H6D6666666nonNtnn|nnnfinii)A6nDW?CR67t6c3>kkj6=6q6ottiWttWttWnittiWttWtnWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW Z-u,a, Z-CO ZZ  -ll Z-u,y, Z-CO ZZ %ll@8 Z-(H`x 4H\p 0@Xp  4H\p  4Pl4H`t4H\t ( @ T d p    $ , 4 < D L T \ d l t |   ( 4 H \ p |   $ 4 H \ p , L l 0Lh$@Pl $<Tl,DXl $<Ld|QPU8VqY;  JiEcKGJRWGRg&Q avf2K0kQu!Qq@*@*@,0"bS%$Cx$5PMCD$!F J J2af![yjd*"Cw$ff{#U8QHqvc*"su"Ztt!"b'u+FAtT'wv(#!"afjf'SIqv2Z!""rf'h)"9 Urv!B:C|C: DaHPMQw1'Qy8b(CD$CD$c1(@lHbZDJ "T5a93d@Yu QX!X0QX@:B<@:aZ0xwai!rGg`Q+`0+HQXT *" [WQZTQX *" [WQZT0XddqY!ar``IAFITj4aV'CbHQ'@*@+bJ&AhT'I8IAj Q8F y(bFQPP%;R(AWv@,0>?@AtB\C DDEpF,GGHXI JJ`K0L MMN|OLPPXQ4RSSTU,VVW@XXYXZ[[H\\]4^^`__` aalb$ccdDeeLffgTh iij|k f>o,"     @@@@@   Hppq-ߢ--ߢ-abD -O`.0_ `0>oq-0^0^P .Op@? o" po@ IpJ2qO-`A &M_ _`41>?! !n\>-@-.)!lc& 9QAHq!FP__P"@ $oOO0 ~-0o" _oPnQ  >p@ >_2>`,` _@O@_0ү-P¿_Pa) .@-`_  0op >ҏ ooP>)N [_aIr)S     - "B$"    " ҟ>P0>c& -!""""" f>_@  o@_P> p- o,0_P! !"}>O Pρ. O O s--p-rJ -!"""pppppAp0lq1&q%"2,q!,qo0   )_(  e6{`m-0PQ-P@[">0N&!_O """_?ߪ)0OO>OPOO,OO OOO0OOq e5Am'Pq@1o`@(@@@@@fff60dfff6  "_0P1-- ݢ-oPNd+q*"0_N!or RP- - p-P.0qgff.$fffff !"@al+00,`O .><qڿ@@!PA><ql !"qa @0I!qo`A0-pGO@2__MïJ f>_@aoo,",oP, ob6ľ  < ,ԯa^@*o@*0*>  !"""""-"""""b  ¿a@* Mnaԯo M@)0Q d!pm@)s, PO D,6S_ ^Bff1f~gُ¯1p-"Saaq>_ 0-O@ --A@-`0O-@0Q9A,@+dV)aa-!&b$P._jff o"">p`-% cfcff&0,!_""s,0O`-OQϪOoOpO0uhfOneffff!"09aqLį@-a_`pP. @-8-q jaM1%"c_O>O0oOpOO>O¯0Ǐff0ffff&-!_"""-O-O-O-O AOpOfOOfOOpOAO -O-O-bǏfff--bffffff)?!_"OOOO OpOfOOfO OpO-O -O-O-bǏfff--bffffff!" aq:b@@OP r """`--1Za@J`o!;ppppp|ff;""ppppQ| &pQff ff&j1!"2%"OOOOOOefǏffefffff!"@qP<a>`pOpOOOOOQfvhF@-QffffFd?o!_"0'O>_@ O,,O,,O, vhb}r$fffbffJ!R#""@p@p@p@p@`o@@@@@@@cgFcfffFo-1$R#-h@-.@- z>@-o"A-p>ڲ_GMp_lOcf fV@@ -N"--`--0-->o--B-=->se~cfeffcVA)zM>P0OQ@r-@b-> -ҟQ(0!2%"OO%"}OOPOoeǏffeffff% M>A6A)zM>P0OQ@r-@b-> -ҟQ(!_" 9OO_O O_S,fv^OaOOOOPQǏffQffff&"][n>op102>Lzҏ _Oq@;O@ jB)a)"_"OOO O r-O r-O@rgvhf-"fffffff! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFE_0oPP_.`0O_p .sj6QvH@-cff6QffF$D_p Pmo-0O2qO`a__@ _- OOsh fH-cff ffF ao-1%r%00`,>NoͯP0:>P_¯O8Q}@ef6Qff!B$"    `>]0-_` `AGbOAffFbff'"",--q.,- q,` ,  ` hfv, odffff0fF!-~F!- - - - - - - - - $`o>P_0o, - `>P_AfF!?AvOOOOOOOOO"O A4`,,q(n  <` -OP^!  ^Q%_O OcOAhO0JbPM !@2}2oo@OO -Q߯OQOO`!""\n_Qc -!P0\0hQyR(  -ppP_,q < \0!"""<A-_ca߂-`0 m 0?!2%""OOOOeǏffeǏffo0@efVcf%01o O jOZ` O@-O@O  OAhacf)"? _2%OOOOOOO09B_M&OO ?""Jo "2%"dv dfVS Aff&cfv_ - - - - - - "fff-"ffff5@ i)@ja!OONNN4)On07O-0ffFOO`?""ja!"2%"OOOOOOOaO""?--1%!$ $O--  O--  O--  _>- 00;5o0fZ!Z)"? _2%OOOOOOO0t9B_MdV&""rK{o`, >A-p!>Ÿ!bIAfff6Ag6@@@!@q9@@_@@ @@@@@0@=A8c,Af6 fffF- fFp }r0 ;a_Ppp. 07cjxAbf)`!";""@@@=@,N QÏc@Qf6Q} [9:-oc>QHP:p`- *b-- Z!"% A@@@@@@@@cgffOcgff@@`p0@Pl *;.¯@@@@@@@Qb@pQfbf6a0ߏ`,>0_0oPpOske[OcffefVA PO`.0_noy- `-@ҟ. `gd\-cffdfF)? įa' 1 ٯ " , YpO ffbfVbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff`6""@pjffpbfffffb& p&_OOOOOO>>OOOOOOO0oJ!?OOOOOOOOOOd) AF A-OOO_ OOOOR Q`L\'@@@@@      "o_Q   \n_Qc -!P0\0h J`!R#""@@PJ@@-`9q00llo*q_`o p_`o@|N,`!a"N" ef~fVOeffV0i=>o-P >`0Gb-p4ffFbff!?OOO=SOOOOd)  ׮0pR -Q_*r-ğAM0*ROo0 , ' A%R>>A%R"ZmZ1Ͽ"l`,* zq>ӣ Lz”`,@=$!-0eS Zsk bffVqObffVb&!q>q 캯 f"Q @@oaq .qa@o@@JppppnPB"Zmgfe'K6l`,@Np,ӣ@n Lz”@N-@=0hf Zsk    .>M@Q !"""""-=OcfǏfF-cfǏfFOa) ߪN@NN>A A3q f ! }؟-2tPo 3 fA ,oA`-@olL@-aϣD $@@@@@@@@@5Q@J@Jpppppppp`pPpjj1fffff!aooa!eaH OA6 """-Avh T 0fff-0fff1f0M,Po }@o*-Qr' !0¯  +¿0,0, +¿¯ 0! Q  Afff&o """@Y@a cfV¯V N01GeAfff&o """@Y@a Q  Afff&o """ZP G-%0Lbjկh,0*@ a-f f0? ")aa-!&b$P._jff o"">p`-% cfcff&0'q )aa-!&b$P._jff o"">p`-% cfcff&@'M)aa-!&b$P._jff o"">p`-% cfcff&Q   )aa-!&b$P._jff o"">p`-% cfcff&2(`()aa-!&b$P._jff o"">p`-% cfcff&0yq9?0q!!)aa-!&b$P._jff o"">p`-% cfcf؏ί`>`>P-aMj!a-!"(BPp-.jf 4fzp`z,p40q> cf-cfffff" `N J@@n ,qO@0-@ _P< O`PqJrOAzB))O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffe`q)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffr@+- )O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffff!QN L)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffq9?-!j1!"2%"OOOOOOefǏffefffffA@ j1!"2%"OOOOOOefǏffefffff@'Mj1!"2%"OOOOOOefǏffefffffQ   j1!"2%"OOOOOOefǏffefffff o@ `~!("Spo-pp-@bߊ--`"op ff ffff6@@ -N"--`--0-->o--B-=->se~cfeff1I0-I#cVA)zM>P0OQ@r-@b-> -ҟQ(A@ cVA)zM>P0OQ@r-@b-> -ҟQ(@[¯cVA)zM>P0OQ@r-@b-> -ҟQ(Q   cVA)zM>P0OQ@r-@b-> -ҟQ(1I0-I$cVA)zM>P0OQ@r-@b-> -ҟQ( o@  rVaO `o¯ҟӏq-UP=1fg_O - pqo-,@r- `2qoo,o,f  @:0>! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFQq!! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFa;o! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFM ! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfF- !B$"    `>]0-_` `AGbOAffFbff 7@@0!2%"O&^>O O@O0eǏfF-efffF'-*!-!2ƿ----O-O--- -Q4-)-A----oPa;!"!  ^Q%_O OcOAhO0JbPM R>NN"!  ^Q%_O OcOAhO0JbPM Q0@@ !  ^Q%_O OcOAhO0JbPM B$!!  ^Q%_O OcOAhO0JbPM Te o@'a!  ^Q%_O OcOAhO0JbPM T E>0A%R!  ^Q%_O OcOAhO0JbPM e -QV)0D&",oq pO0>,r})eaH,JMP0OOO!o0qAQb&"<A-_ca߂-`0 m Q_""<A-_ca߂-`0 m C!"<A-_ca߂-`0 m A,"<A-_ca߂-`0 m  &Q`obUJo "2%"dv dfVC ,`Jo "2%"dv dfV4 !Jo "2%"dv dfVA`,Jo "2%"dv dfV &Uaa &UQyR(  -ppP_,q < \J1(0!"")"? _2%OOOOOOO0t9B_MdV&cGϟ 9A""rK{o`, >A-p!>Ÿ!bI%@q  ""rK{o`, >A-p!>Ÿ!bI M-"""rK{o`, >A-p!>Ÿ!bIA4`,,q(""rK{o`, >A-p!>Ÿ!bIQ`L\'""rK{o`, >A-p!>Ÿ!bIbUo` &Q "@` Afffff- """""0p0$;"  h _=qo_0P->pAO`10^q:,a+ q@Pl *;.¯@@@@@@@Qb@pQfbf64 @@Pl *;.¯@@@@@@@Qb@pQfbf6RPqq!@Pl *;.¯@@@@@@@Qb@pQfbf63 A@Pl *;.¯@@@@@@@Qb@pQfbf6bUo` &Qbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff%n?"cfffc~f - !- *Q P_ -@ -O`  , JSNMM - -bfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff &Q`obU@8 Z-(H`x 4H\p 0@Xp  4H\p  4Pl4H`t4H\t ( @ T d p    $ , 4 < D L T \ d l t |   ( 4 H \ p |   $ 4 H \ p , L l 0Lh$@Pl $<Tl,DXl $<Ld|QPU8VqY;  JiEcKGJRWGRg&Q avf2K0kQu!Qq@*@*@,0"bS%$Cx$5PMCD$!F J J2af![yjd*"Cw$ff{#U8QHqvc*"su"Ztt!"b'u+FAtT'wv(#!"afjf'SIqv2Z!""rf'h)"9 Urv!B:C|C: DaHPMQw1'Qy8b(CD$CD$c1(@lHbZDJ "T5a93d@Yu QX!X0QX@:B<@:aZ0xwai!rGg`Q+`0+HQXT *" [WQZTQX *" [WQZT0XddqY!ar``IAFITj4aV'CbHQ'@*@+bJ&AhT'I8IAj Q8F y(bFQPP%;R(AWv@,0>?@AtB\C DDEpF,GGHXI JJ`K0L MMN|OLPPXQ4RSSTU,VVW@XXYXZ[[H\\]4^^`__` aalb$ccdDeeLffgTh iij|k f>o,"     @@@@@   Hppq-ߢ--ߢ-abD -O`.0_ `0>oq-0^0^P .Op@? o" po@ IpJ2qO-`A &M_ _`41>?! !n\>-@-.)!lc& 9QAHq!FP__P"@ $oOO0 ~-0o" _oPnQ  >p@ >_2>`,` _@O@_0ү-P¿_Pa) .@-`_  0op >ҏ ooP>)N [_aIr)S     - "B$"    " ҟ>P0>c& -!""""" f>_@  o@_P> p- o,0_P! !"}>O Pρ. O O s--p-rJ -!"""pppppAp0lq1&q%"2,q!,qo0   )_(  e6{`m-0PQ-P@[">0N&!_O """_?ߪ)0OO>OPOO,OO OOO0OOq e5Am'Pq@1o`@(@@@@@fff60dfff6  "_0P1-- ݢ-oPNd+q*"0_N!or RP- - p-P.0qgff.$fffff !"@al+00,`O .><qڿ@@!PA><ql !"qa @0I!qo`A0-pGO@2__MïJ f>_@aoo,",oP, ob6ľ  < ,ԯa^@*o@*0*>  !"""""-"""""b  ¿a@* Mnaԯo M@)0Q d!pm@)s, PO D,6S_ ^Bff1f~gُ¯1p-"Saaq>_ 0-O@ --A@-`0O-@0Q9A,@+dV)aa-!&b$P._jff o"">p`-% cfcff&0,!_""s,0O`-OQϪOoOpO0uhfOneffff!"09aqLį@-a_`pP. @-8-q jaM1%"c_O>O0oOpOO>O¯0Ǐff0ffff&-!_"""-O-O-O-O AOpOfOOfOOpOAO -O-O-bǏfff--bffffff)?!_"OOOO OpOfOOfO OpO-O -O-O-bǏfff--bffffff!" aq:b@@OP r """`--1Za@J`o!;ppppp|ff;""ppppQ| &pQff ff&j1!"2%"OOOOOOefǏffefffff!"@qP<a>`pOpOOOOOQfvhF@-QffffFd?o!_"0'O>_@ O,,O,,O, vhb}r$fffbffJ!R#""@p@p@p@p@`o@@@@@@@cgFcfffFo-1$R#-h@-.@- z>@-o"A-p>ڲ_GMp_lOcf fV@@ -N"--`--0-->o--B-=->se~cfeffcVA)zM>P0OQ@r-@b-> -ҟQ(0!2%"OO%"}OOPOoeǏffeffff% M>A6A)zM>P0OQ@r-@b-> -ҟQ(!_" 9OO_O O_S,fv^OaOOOOPQǏffQffff&"][n>op102>Lzҏ _Oq@;O@ jB)a)"_"OOO O r-O r-O@rgvhf-"fffffff! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFE_0oPP_.`0O_p .sj6QvH@-cff6QffF$D_p Pmo-0O2qO`a__@ _- OOsh fH-cff ffF ao-1%r%00`,>NoͯP0:>P_¯O8Q}@ef6Qff!B$"    `>]0-_` `AGbOAffFbff'"",--q.,- q,` ,  ` hfv, odffff0fF!-~F!- - - - - - - - - $`o>P_0o, - `>P_AfF!?AvOOOOOOOOO"O A4`,,q(n  <` -OP^!  ^Q%_O OcOAhO0JbPM !@2}2oo@OO -Q߯OQOO`!""\n_Qc -!P0\0hQyR(  -ppP_,q < \0!"""<A-_ca߂-`0 m 0?!2%""OOOOeǏffeǏffo0@efVcf%01o O jOZ` O@-O@O  OAhacf)"? _2%OOOOOOO09B_M&OO ?""Jo "2%"dv dfVS Aff&cfv_ - - - - - - "fff-"ffff5@ i)@ja!OONNN4)On07O-0ffFOO`?""ja!"2%"OOOOOOOaO""?--1%!$ $O--  O--  O--  _>- 00;5o0fZ!Z)"? _2%OOOOOOO0t9B_MdV&""rK{o`, >A-p!>Ÿ!bIAfff6Ag6@@@!@q9@@_@@ @@@@@0@=A8c,Af6 fffF- fFp }r0 ;a_Ppp. 07cjxAbf)`!";""@@@=@,N QÏc@Qf6Q} [9:-oc>QHP:p`- *b-- Z!"% A@@@@@@@@cgffOcgff@@`p0@Pl *;.¯@@@@@@@Qb@pQfbf6a0ߏ`,>0_0oPpOske[OcffefVA PO`.0_noy- `-@ҟ. `gd\-cffdfF)? įa' 1 ٯ " , YpO ffbfVbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff`6""@pjffpbfffffb& p&_OOOOOO>>OOOOOOO0oJ!?OOOOOOOOOOd) AF A-OOO_ OOOOR Q`L\'@@@@@      "o_Q   \n_Qc -!P0\0h J`!R#""@@PJ@@-`9q00llo*q_`o p_`o@|N,`!a"N" ef~fVOeffV0i=>o-P >`0Gb-p4ffFbff!?OOO=SOOOOd)  ׮0pR -Q_*r-ğAM0*ROo0 , ' A%R>>A%R"ZmZ1Ͽ"l`,* zq>ӣ Lz”`,@=$!-0eS Zsk bffVqObffVb&!q>q 캯 f"Q @@oaq .qa@o@@JppppnPB"Zmgfe'K6l`,@Np,ӣ@n Lz”@N-@=0hf Zsk    .>M@Q !"""""-=OcfǏfF-cfǏfFOa) ߪN@NN>A A3q f ! }؟-2tPo 3 fA ,oA`-@olL@-aϣD $@@@@@@@@@5Q@J@Jpppppppp`pPpjj1fffff!aooa!eaH OA6 """-Avh T 0fff-0fff1f0M,Po }@o*-Qr' !0¯  +¿0,0, +¿¯ 0! Q  Afff&o """@Y@a cfV¯V N01GeAfff&o """@Y@a Q  Afff&o """ZP G-%0Lbjկh,0*@ a-f f0? ")aa-!&b$P._jff o"">p`-% cfcff&0'q )aa-!&b$P._jff o"">p`-% cfcff&@'M)aa-!&b$P._jff o"">p`-% cfcff&Q   )aa-!&b$P._jff o"">p`-% cfcff&2(`()aa-!&b$P._jff o"">p`-% cfcff&0yq9?0q!!)aa-!&b$P._jff o"">p`-% cfcf؏ί`>`>P-aMj!a-!"(BPp-.jf 4fzp`z,p40q> cf-cfffff" `N J@@n ,qO@0-@ _P< O`PqJrOAzB))O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffe`q)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffr@+- )O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffff!QN L)O!"""OpOpOpOp%0p@pfppfp@0p%OpOpOQfffOOQffffffq9?-!j1!"2%"OOOOOOefǏffefffffA@ j1!"2%"OOOOOOefǏffefffff@'Mj1!"2%"OOOOOOefǏffefffffQ   j1!"2%"OOOOOOefǏffefffff o@ `~!("Spo-pp-@bߊ--`"op ff ffff6@@ -N"--`--0-->o--B-=->se~cfeff1I0-I#cVA)zM>P0OQ@r-@b-> -ҟQ(A@ cVA)zM>P0OQ@r-@b-> -ҟQ(@[¯cVA)zM>P0OQ@r-@b-> -ҟQ(Q   cVA)zM>P0OQ@r-@b-> -ҟQ(1I0-I$cVA)zM>P0OQ@r-@b-> -ҟQ( o@  rVaO `o¯ҟӏq-UP=1fg_O - pqo-,@r- `2qoo,o,f  @:0>! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFQq!! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFa;o! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfFM ! 0 ;00o>OpOOpOOpOOpOOpOahcHA-QffcfF- !B$"    `>]0-_` `AGbOAffFbff 7@@0!2%"O&^>O O@O0eǏfF-efffF'-*!-!2ƿ----O-O--- -Q4-)-A----oPa;!"!  ^Q%_O OcOAhO0JbPM R>NN"!  ^Q%_O OcOAhO0JbPM Q0@@ !  ^Q%_O OcOAhO0JbPM B$!!  ^Q%_O OcOAhO0JbPM Te o@'a!  ^Q%_O OcOAhO0JbPM T E>0A%R!  ^Q%_O OcOAhO0JbPM e -QV)0D&",oq pO0>,r})eaH,JMP0OOO!o0qAQb&"<A-_ca߂-`0 m Q_""<A-_ca߂-`0 m C!"<A-_ca߂-`0 m A,"<A-_ca߂-`0 m  &Q`obUJo "2%"dv dfVC ,`Jo "2%"dv dfV4 !Jo "2%"dv dfVA`,Jo "2%"dv dfV &Uaa &UQyR(  -ppP_,q < \J1(0!"")"? _2%OOOOOOO0t9B_MdV&cGϟ 9A""rK{o`, >A-p!>Ÿ!bI%@q  ""rK{o`, >A-p!>Ÿ!bI M-"""rK{o`, >A-p!>Ÿ!bIA4`,,q(""rK{o`, >A-p!>Ÿ!bIQ`L\'""rK{o`, >A-p!>Ÿ!bIbUo` &Q "@` Afffff- """""0p0$;"  h _=qo_0P->pAO`10^q:,a+ q@Pl *;.¯@@@@@@@Qb@pQfbf64 @@Pl *;.¯@@@@@@@Qb@pQfbf6RPqq!@Pl *;.¯@@@@@@@Qb@pQfbf63 A@Pl *;.¯@@@@@@@Qb@pQfbf6bUo` &Qbfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff%n?"cfffc~f - !- *Q P_ -@ -O`  , JSNMM - -bfff6pbf}6 `_oP,, o`o`- ,  ֿ&0Ư$ff&0ff &Q`obUHugoMedium @( Medium @( |Trinity Trinity HugotHugoIntMetrics@#4 x90y45 @e٠IntMetrics@#4 x90y45 @e٠Medium Medium HugoTrinity.Medium j  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghiklmnopqrstuvwxyz{|}~y0;##**%!=!,t2D*H0.B2OBQJ/* #$%'%"'%''%%&#&'$ 5# 3%*!#1!&#, !By1#%0.V'/*%%#'1(&J..0.5 (###!''%!&&))) !!!%%(*(!*',,, 1%..1..##MM&\^ZUZZZNPZZOZZZVSZP# CD#Q;U,OZO^QiX}vgS2pBMH0p{oL9 %^`axa;_\O 9CilSX...,J# Jx}}}!}{~TWxxxxxxxxxxxxxxxxxxxxxxxxxxxxrx'{x{x'xx{X}Zxxxu}@@@@D=@@@D@@@Dx@@@@@D@@@D@xxxxx{xxx{xxx{xxxxx{xxx{x{H xHQ{H7?Qt%gO = e`.0*0H#b v;;,!m m{HHHH????,p Z-~1< Z-HmZZPN9/q@8 Z- (@\|$<Ld|0DXl $<` @X|<\x(DXl  , H d t  4 @ T ` h p x    ( 0 8 @ H P X ` h p   0 < P \ d    , @ X t Hp$Ddx0X0\ 8Ph,<L\p,@Xt@!02sSRA1 w$ & w("1! xw"QlECSV 3 V Rd&)tfWecAeD iuBA'hu"R5@9S0'#r0<{ la205bB0tHSQCDDDHAf`+B; U9ppQXR0) %0rh :1a  0EbD,A qh7!*qjd&QgifJq9REaC29Qf6QV"kQ$90fAf1W1*0fRBZ0(!AAX v 0DD0DDb vQ*AXB7$qAx vDd% Zwf#j2*dpMR4q-A1fEE hU*a[b1U4 YTxp-oq-1fEe% ZDv3pM2$Sq-R1fET ZpM2$Sq-A3fET% bhev* .;&!T5" ZZpM"-$"q-q-0f0fZp-q-0fx# e5 Zzp-rpp7q-QHcFe$ ZDp- p-p-q-cVs6 APnP#cP,fqac&d SHt  s gr rS e rgv'qM-0A{1U Zp="%q-!1fEV ! i wz@} >qKS5 cjY(@~5@N10eEV@xv'4R+l"+AK!U3 cj@N@N@N%@N STVT Qhe&`= (Pp-5acFAU 0 ڄcVAF6qPZV~Fq^@cFAf06 cIzMq80Q(RfAV  &@N 4A 71f&R5 XDa+ #~!"""5R5@@@@@c+@,@,@,@,@,SI" ADDDt)1@8$L 5v ahVzaK!5Aa QWiayaWRz2[av9(9`US%pjE3{%"; w((yR9pp00ppp00')7WRIp D htgQifQfx"kvP,@>\?(@@hABCDEFG IJJKLM NN4OOPQRSTUWpWTXYZ[]8^^_$``Taab$cc8dd@eeHffghggPhhijjLkkDllXmmnDopp *0=`o"-@I 12y Ji J +PRRْ?-!@y aj@,[0+`c|fhFj <"&"#"r:"&y ;p +`R4 0;B, *@YOa * *q , +@P0*_ҟ!*" P *y=䍜MQjf@)@,@\q,{pOpO`,OpaL ]@^-qqKj0p, K :aM!""pq=-0~Q 1yi +R?!& | _>-----.O0@] (T_0 -?oO-0`oq+ @5r+^oߪߙ+^o4a)@a * * *뫪j""BK"" * *a0y@A,aaJ!"""""01 vP= `- m0MP=% 'MA`oo`O@. - - >0O@pP_ z>        zgfv@y kP,-o1үq@+ G- & " }3 Gp_0 _ c@@<-"1)0qlSoq0Z   0fff6g}ff6  z0\ P,) 6 \w@kk`@o,,Iw0+>dff |+1>0> >pq-q>>@;Ϲ~,"P_,<1(  - 0~@nP_@(`N0Affff {@qMN0,@~!MKqҟ`N- ,P 4,QY 1L^N- `eF  -O@$OO@#-o  #01 QAa0y@A,aaa % x,qMPn@ @}`M,QJ!"""""J!""""" q @}`^N,qM@m T ! O!r XP+, 1-_pb9QZAz%Qzl~|QI,"! `m+> ؟  }0-`>.-oOOpOp0> [-c" P*0zI@>0i@Po#""r ffv>pg 0oQI>`, mqH15]OOP-O oOO oOP>O_"mϪO OOOpOOOb5dffff"0K%"c @#_O_00+@&!bʽI!j#~@O@O _@O@@-O@p-O@O-@P_Oa`nb'@fffff%52A\@@q@4@5@ߪO@("2G@@@ `Aff0ffffff6N@@@5@ߪO@("2G@ @bpqbfff@fffffff!"J' ~*@@0-@@@@@=QP0> <QaJRAazZ==@@@@@@@("""Rߪ@@@@@@PPB&B&@fffAfff ZM@@@@@@@PB&@fff !@Sn!Q'               0fff6z ALqqM *+q,,A&!7cffVQfffJ8"2үqү үүүүүүүүүүүүA;cfff @ q=.@@ @@R,@j@0-@@p@ L@2>AĒCIPm>bndfV0ffYq_@0@@@@d@@_`@`@ `@`@`@q>`@`@I_`@`@`B1df&bff&"AKK!q-0opppp0>qmBZ 1N`@-@-p1RdffffRH'* ,AKK!*q-0opppp0>qmBIPoүүүү0,үүo=ҿ#;үү`ү ?ү Oү@?үB9dffff !" %׽)=@,0ESP' o@q @n )1q .AoEQ1 I-------&--pcfffffff!"'P:BaM ,Ppp`p`p`p`p`p`p`p`p`p`p`!m1Qfffcff6r`>O #[Po|pp _`,0.pNAMcfff0ffF&0--p, L< -1,  ;70,0p_@=@op@N L1MbffFdff6efFq(Q(^ 0\-q+ ,P,Po0LqN  r90fff6dff@+@@@@@@] o0< -P,o! QfffAff&9"""s0> +60>0>0>0>  ) }0> ffveffffffA-@-@-@-@-@-@-@-@-@-@-@+bfV `- P= ], m`-@Jdf6 BAxq0~q>ϟdJ!""""""  E!_v( J J  )`}@2pQzAxA@p00:"a[  O@n O pOO OO` 0ү9A> t^O0( O O !M  @) Gҿ2o>--> @~>>ql2b8\(E|-@`-.@-@`-?@-  -D-@-Ps-s !; =a1offf6("R%>`Mq|ů J QIOOOOOOOOOOQF!_"OO`o 5N  b)$LP+`-qo `-j@x  pop  @3 7"z_@-@-@-@-,@I!'N 9 ~qIQ!Sjq(o< Q`,poppppppt c@) oqQ^O_ O ү ҏ; DLO0J  ZO6 ""O O bOR ----------------s-1,zZA)Q @ @ @ @ @ @ @ @ ,oAv>D,qbrJZ!)@@@@@@@@@qYoߓ,c"\5  ҏO>-O-O-?O@ atb(QQO O!" ǽ   OP >O O _` +0[c_DA( I@Z >p"p0 xpppPp6R 0+ ];o "RL< BoqrQKz2 "Ϙ@1-@-@-@-@-gAN"0P,q! &:_0!"""!Pҏp+O) `.G@@. )a!""""0h0O`l@^gqo *uP- qOtp)q M0'!""""!"qJZQ~_qҏ2w >Ÿq _X0'!""""ZM`x0}] f0_`f0>(b!"""" qJ#2- 'P1ҏ>00qŸ@gf_!"""" Aq `o,_p ms"L$L$L$L$L$L$L$L$L$L$L$LQ Rao@      q(<      00 z3) VQ( A!o?`,@  I0}@ KAz8I %OI0-I!0Iqq=$a|JN ֫(Ia",'Q&q+@<P^-p-p-p-@^M@Aٮq+@=@@@ 23S83#0m o0L -P<o! QfffAff&-ڢ-ڢ-ڢ-ڢ-"@ڢ-ڢ-ڢ-ڢ-ڢ-T A'qMQ<0`>PN  @>aqN@<*Z'\oP0<aK f QIq(0`YaHsL+++P<Q&z:A)- j`@pvqOP!< S@~qP+0Y l (axLdV "ϊMp-@Jq-Q-A-a<rY!!,>o,>  o ,>   l@,@,!"""""b+!""-!""YaHsL+++P0-Z !"J--r2x mr` d&Q(  >ƞ0܅ߖҏT O- O- O- O- O-" (  L@, L@, L@, L@, L@, L@, L@, L@,QO@,O@,O@,O@,O@,O@,O@,O@,O@-qǿQffff6APba >% ""@@@@@@@@Rg ;ezP-P= m0~`_P-,3A&!! {`0 `1`0 @@0]aڪm@*@aP-DK> l-, | -0]--`-@)Q0@ l I0M` KP,0M" ]!P,%q`-  *0*i \ "PZhp-P,@pO?!Q \AaiŞ0 rHD 1>OC_ 0@+q bL0L(QQ :pq >x"""0}ffvo9P`>g J,P>r. "(QQ :pq >x"""0}ffvo9P`>g J,P>rVQ , Z, , f&(QQ :pq >x"""0}ffvo9P`>g J,P>rVQ , Z, , f&(a < >"""P}ffo <`>yPK, > |#Ie (a < >"""P}ffo <`>yPK, >-  % %(QQ :pq >x"""0}ffvo9P`>g J,P>0(0l+ygdZ _K"B.q ;-c`-#"fv- 0+$"2-  l1P,--`00K1~ff fffffff&!ҿ -nA9J"RiTTq - O -_`N^%11͋C$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff&waf$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff&w@~ f$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff& 7sq~ q߆qAf$2؟oa+paOp%OpO'pϪ-p%"2O(pAOpO@zbff@ffffff& x@Yo>QR Q-------.1;!fff&_@f 1;bfffwp f  IQ---------------. fff6VQKA Z, f& 1;bfffq(>-ARq&m3mr;pp`,ppppppppp!$""p pq>pM!\Qfffff$H1qOpPf@O` fJ`ϓfI`fI`fI`fq,I`w=NIpo@ lb1nQfV0ffV@ j2* V1!"۞ )1  OA - o.P`Oq%!]@f!"۞ )1  OA - o.P`Oq%!]@cV!"۞ )1  OA - o.P`O¯a%!]h@,@z,@,0f&!"۞ )1  OA - o.P`Oq%!] |#Ie !"۞ )1  OA - o.P`Oq%!]_ E %QQ!, , , , , ,L, , , , ' "" |a9@~@o`~Om]@qNqNOoqM,o,,,@J>o,0KbQH"!"(R_,01L2nbfffdff&@O@Qf!"(R_,01L2nbfffdff&` Qf!"(R_,01L2nbfffdff&@9'ߗQf!"(R_,01L2nbfffdff&q(0 RAQpppppp,0N`+0_0 l?11bfffQff` QfQ-"--`-P>-ao9=d6.1; fff6@Z>_@1Q`@-@@Op@-@@@s0@-pon1Q )`}@2ҏ a{AxA@p00:  _ -@f )`}@2ҏ a{AxA@p00:0 ),Af )`}@2ҏ a{AxA@p00:Sb l`, Q6 )`}@2ҏ a{AxA@p00:zm2 6 )`}@2ҏ a{AxA@p00:A$--A$ )`}@2ҏ a{AxA@p00: 9Q@ * )0a]0q|Q=n"Ne0@0- |fff HP#".@P-~8N Iq( rb@=LPu> Opo _'QZ   ) np'"_?-~fff&_"".@n0k֏  _ -@f   ) np'"_?-~fff&_"".@n0k֏wp f  0) np'"_?-~fff&_"".@n0k֏Sb l`, Q6  0) np'"_>-~fff&_"".@n0l֯R %R %   O O O O O !c;O@f (QO O O O O bO2@cF   O O O O O !c;Sb!{`,oe QZ >pppppA"`">!X ! N`0O-->._OOO@,?d- P 709oa(1'0IrMqz pO pO pO pO> 9>q:dzzm2bA K$@0~_-----q_Pl&#@@e6 K$@0~_-----q_Pl&@e& K$@0~_-----q_Pl&aQ`, so,0V K$@0~_-----q_Pl&zm2 6 K$@0~_-----q_Pl&A$--A$ `0!J!"""""`PT D)q3`PM,> 0}. [߄,![ߗ9p@O`O O O O @bO""""  (   d6![ߗ9p@O`O O O O @bO""""!e }e![ߗ9p@O`O O O O @bO""""&5`,<, o0V![ߗ9p@O`O O O O @bO""""DA_PP_ADJN,J` Mk_PIP-I P !""""@@Qfp!p\ap`>p@p-@p-¯p8p,QppeJN,J` Mk_PIP-I P !""""0owHugoGameCode Lander @c8GameCode Lander @c8Game Game Hugo: fv|P$tHfv|P$tHC-D1 0CP@dB0@ 0`B1aB@@ @>@dBL@!1aB2 bB @ @ @>@dB@dH@ 0`B30cB0@0@ @>@dB@d4@@<8@ P0D@-0P0#B`BQ0#BaB-P0#2 * P1@  !:, Q1A  !:,%0a0044@@ 00044  0 l&" r!00cBPAPQ@@dB`A`QPPP`P`RZ&6FST1!@-p`@T1@D `!:kP0S10C P!:[%\&l0ReB1@R@fB PQ3r!@-00cBPAPQ@@dB`A`QPPP`P`RZ&6FRR!:p`@T1@D `!:kP0S10C P!:[%\&l0ReB1@R@fBpPS`!`1RP2`:+354Ep -`L|@T1@D `!:lP;+0S10C P!:[@Nn5^6n`0ReB1@R@fBpd@t@ @NN@-0 00d0`-8 t0`A-@@(8hB1aBPP P4PeB@(8hB2 bB ` ` `4`fB@(8hB30cB0p0p p4pgBd@4Oσ@-`.. .00,,,,----....////p! !v03p! !v03ppv! !v03pp@qAqj! !v03pCpp?q@qAq\! !v03pCppQ?-LB-h.稌X#p.B-h.稌X# .B-n ^ #.pp?.B-n ^ #.pp?.@@@@@@ĚxxxxxxĚ_-lP- !!!PZ_0O$$0qpZ- 0@P`p@Kˋ,,,, \^-? PQ3 R3S3 T3U3*@-Q*` `0Q*`@`PS*` @`0P ÌQo 0-Rb@@^@Y3*X a ` ^1 N `!:R`fBQTd@@^@Y3* q p ^1 N p!:TpgBQHIPV`p@P$%$Z][LYSP`@@^@Y3*L   ^1 N !:PkBC$R%R$R `L@I p\PY@P$%$Z0[LYjB^nB ^ `! p1SP`@@^@Y3* a ` ^1 N `!:T`fBCRb@@^@Y3*p q p ^1 N p!:TpgBCHXIYT!`!p!!@!P!QS#U#! P R# T#!@-Q` `0Q`@`PS` @`0PQ` 0-Rb@@^@Y3* a ` ^1 N `!:R`fBQTd@@^@Y3* q p ^1 N p!:TpgBQHIPV`peSP`@@^@Y3*`   ^1 N !:PlBCDRER DR `L@I p\PY?jB^nB ^ `! p1SP`@@^@Y3* a ` ^1 N `!:T`fBCRb@@^@Y3*h q p ^1 N p!:TpgBCHXIYT`p@P Y!@-@P[H[*- T ZUJT$Q$PCU%`0`"Z[KYhd`\XTPLHD@<840,($Z 0T5 [4[1: [4 [14 [14 "!U  There is not enough memory to run this game. Please *CONFIGURE your machine to free more memory.Ȱ@- 0RU 0R  Lander Demo/Practice (C) D.J.Braben 1987XLander Demo/Practice (C) D.J.Braben 1987$88$QQ8%# $(,4 0Hk@Tk[-U^5^  ()PUZ 4 U0<DTX 0 P 2  /TX'~ @\ _-!! ! ! ! !!  P7"02X`````RTRTDRTRTD%RTD%RTDRT%DRT%D%%D%%DL@@@@f5TkTkf5f5[2[2f5D |PP P 333gfUUUP@UUUPPD|EL*;5>@;5>(%@#P?xrA@#P?(@e6"$svOe6"$s. xDx 00ff&43@@@VUgf@Y*gf@shV @N%I,#Rm7(ȍ/qd󞲳~m643s00 @Y43S433$@gf`gff@43ff@0Y0=7N o @o^c]  eIb':t;!]AP-@Q ɭl @Lff&33+0VUL*VU*gfL$$`$$433m6ff&PC (@ @@@@@@fff@fff@x D D[2f5 Dx D.U[2@f5[2@[2.U gf&@gf&gf&ffgf&̌ff̌Yff̌ffff̌Y@gff@gffgffgff@@m͙E>m͙E> x U  x wx w   m͙4m͙4X@@@43xxx3fxUwX̌̌KJKJ3`YD`Y @E8E8E88Epppprrrr   g_kv Xg_kvg_g_X   &[*$&]4|GD[Ij 3 h 5 ]Ӌ S e+'Gr9nێvUDmf3<˽%2Gj OVzp a!Ť#"A"~#Wwg$] (%E%!&g'(&(Jq(ģ)a*4+nN+,:U-a .h.bR/`A0L0]J1Tn2&33O4VM56 6Eo7$881݌9-@::(;oV<=2=, h>I??s@X!AcAAzB5%CCOzDV$E5E'huFG.GdiHWI3IXJlJK?L3LbM!NN^OLeO]P3QmQmiRS*S|3TI T@`UѤU4VWUҰWSBXXddYYyZ5[S[ )\ \6R>]{]\P^|^ ^__lh`.8`joa>ahqbbqc2cYld%dceeakoa.8`lh`_ ^_|^]P^{]6R>] \ )\S[5[yZYddYXSBXVҰWW4VҤU@`UI T}3T*SSniRnQ3Q]PMeO^ON!NbM3L?LKlJXJ3IWIdiH/GG'huF5EV$EPzDC4%CAzBdAX!As@?I?, h>2==oV<(;:-@:2݌98$8Eo7 66VM5O43&3Tn2^J1L0`A0bR/h.a .:U-,oN+4+a*ģ)Kq('&(g'!&E%] (%Wwg$#A"Ť#"a!p {VOi 2G&˽<f3mDvUێo9Hr*'eS ^Ӌ 5 h 3 Ij [E}G4]&*$&[ y6m)٤BI&\c&g]oES<,tp$=xT_2-7P$qP{ W$&G4B_}͸}Ms0l5##`aL<[S݂wYܩۤJ{W bF׶|;\OԒ#GgŪҟ3ўxС8ϵ:ϣJ:?y !̱}i˫o)EɼaRln'"s0ҿJ ZĒE+>[GIi: f޾11>ڼe/2Eۺr2ڗ=<Kd㧵jqa =~ޱ]@hn3̮+1햭zd̫5/[ Xu⨫-O"t+i! g}2冷b6֣!K˭b8x(OtL3됞U 7뎜rBvp@."Gè~0)8FBW͗aY斖s^g6# 1Gۓp؝5ϑdViP|l>g܏|;4/a}Ӫ[P1<ܙ0J1b~7M,B2zZ P\qx&ՠ܈&!KyF̿{{`T8VQu`7T)e]4Iޜ4لcxmr:wփ¥$vHP1Ƃ;u u Os)ZgloƀbE;*>nMnހ ǀrɝxD1hMXNJk=1sx'8A4k 0ww0 kA48sx'1k=NJMXE1hxrɝ ǀMnހ>n;*EbƀnlZgr) O u;uƂO1H$v¥փwq:xmc4لޜ]4I)eS`7PuV`T8{{̿yF!K&Ԡ܈x&[qP 2zZB,}7M1b0Jۙ0OdViϑ5؝pۓ1G 6#^gsaYV͗EB)8~0Gè-"o@vAr6뎜T 됞4sLNv(b8ɭ!K5֣b1g}! iu+"-OVu.[ 5̫dz햭+1l3̮h\@ޱ<~ paie㧵K=<חq2Dۺ2e/>ڼ/1g޾ h:IZG,>EZK .ҿ"so'OlǻaE'ɪoʲ}ix !>;͢Jδ:Ϣ8ϝx3ѠŪFgӏ#Oz;\ֵF bzWKڡڨۃwYP;[bL`##5lOs0}͸_} 4BG!&Wz OQ$q7,3_Tx=o$,tS<Bog]`&\&I@(٤mw6U|QjE:9C S.8-)~!JNp9ag77 P_Zk>?:;*^x%C| Ga b [8 G  + w K N *4W |F  6h4 u} V( Ԁs}V#^A,rDVјƙU#`i%Ne8}$zcNzjPPd[uBĶIbLEfP~6Xp,"CڛR7RF.m4d!7k{Hun7i3u=.d^8-qV:IwBq,;X! B@0sZNSk߭'ͻ G ? 3OP , I9D t= luX}f~v4owTYu._ee.*hҭdEfn RT$\:XL̜IG):ri3!0lzHҐD+ d/39vE~=~~~?  ͽ  9!fw!`!!Q-"h""h"C#S#ւ#7##8$q$r$C$r/%t9>Z>.d{>">ϼ>Yl>>r?>?6_?~??߿???@?@j_@@9@S@D}@@%A@H H*H?HkHIF6I:RI$$nII֥II_InIҾJ^0JKJDgJJxJJ+IJCJe K6'KqBKi]KxKK>KKKKL5L¬PL~kLFLLչLeLL M^2&M@M7[MuMM{MM'MOoMN^-N6HNO8bNT|NkhN~sNuNoN2aN JOf*2OQLOeOOWO2O_OLbOOP"3PLP0%fP;P=P;lP>PMPpkPQ0Q#JQUQcQHw|Q|QQQQRQ-Rr+R(DRUs]RMvR1RR=R&iRR Sp#SGZ-UZ&kZyZdZZBZZSVZ [GT [6[?_T_5j_7____K_K__R`2*`?`/U`oj````{A`Tj``,`2a(a=aRaha }at aaKaxa*aca'bx$bYg9b>Nbcbywbbpb2b0bbg\b cMc_2cGcߡ[c!.z2>zۢOz9``zMqzԁzz>zzzMzzzH{{)({/9{I{#hZ{Rk{F{{-{{O{ݽ{i{U{z{{|!|1|A|7yR|Lb|2gs|ڃ|zL|ܻ|)|#||c|\|*}}='}@E8} H}X}zLi}y}S}@}}غ}!}eh}}}+0 ~n~ߪ,~<~9M~FS]~?m~%}~~~jB~ l~~~~~U:U/%o?WO_oΏ۟UU@33*$ qEUI8y 0 ! = { $ BPf>rU9}iVD2!ffUU$I@833.*b'$"" qaEBUzI8 y | 0 ` ! r = { O $ dB m`UULE@;6330--*k(f&$"d! qm{EU53ItW\}8 y =  c 0 UUIqff]UUN$IDD@<<85330.,*(b'%$O#""! AqAaEBUzRI[A@U۶8]tjvbm[UUPKKG^C@<.:7U533;1h/-#,*J)(&%$#"! 8yq;&EtUQ33m'vmff`ZZUUPL$IEB@p=;8643310.--+*)k(b'f&v%$#"""d! Xqm{.aUUff*3U؉wwpiicP^YUUtQMJGD^B@=;98M64331n0(/-,+*)('& &U%$###v"!/! p_`qUU$.Ixxqkffa] YUUQNK$IFDDB@><<:8Y7543310/.-,+*)(((b'&%<%$#O#"""!! @$I ft;Cy3smh,d`(\XUUIRrOLRJHECA@E><;91865]433210/.--N,x+*)$)k(' 'f&%)%$ UUm@qU۶8y]tMojffvb^m[FXUURPMKK$IG0E^CA@p><;.:87w6U5>43322;1M0h/.-,#,c+*)J)( 33UI`8$q5̌ozUupNlKhda]ZXUURuP8NLJ4HfFD C}A@>7=;:x9Q877'6!5%433I2g10/.).k-, ff۶UU33ENmIz'vqmiffc`]ZZWUUSPNLJ$IqGEDDB\A@>p=<<;987654433\210 UU@*mqL.U(fyEB{vrnZkhda_q\YWUU3S+Q=<m;b:a9h8w7654UU8ffE*3ӛU\؉{wwspliiffc`P^[YjWUUYStQOMALJ$IGFFDC^B)A@>=<;:98$]@b'IU۶8$i{x]tpmjg evb`]m[MYEWUUzSQP^NLKKIsHGED^C4BA@>=<UU33$I]tUU;$ .ףI=!|xxuqnkiffcaA_][ Y&WUUSQPPNHMKyJ$IGFlEDD%CBA@ffUm 3jN6"" <7Ub/mcW|xurol%jg5eb`^\ZX WUUSRP OMYLKIHXG1FE I@vb$I33 fmtYQ;|Cy'v3scpm)khff,d b` ^(\ZZXVUUSIRPrONLKRJ$I UU*۶`qf.U'vm[DD083z%"du|yvsqnli}gUeCcGa__][ZoXVUUSpRQOsN4M UUm8t؉mUU@--qy U۶)&I8`H|yw]tqMolj}hffddvb`^]m[YFXVUUSREQ @33UUffP<<* ] a3kULy؉f}.zwwtbrpmkiibgoeca`P^\[Y!XVUU UUff$q33U;Iww`KK8k(0 G$4q75ǐ]'}ozwUurpnnNlCjKhffdbau_]S\ZeY U$I8LEpZZG5f&a UvIDl-:"30х؂F}z)xuss;qo m k$iLgec"b`^u] mff.۶iiUU^C33$E! Nm1. ڕIc}zxx'vsqomki"hffdca UU@*I EUN$xxcP@0"B ' Us<۶DZka֔t8!+U}}{xv]tIrGpXnyljh9ge 33UU۶@]*mqP^L<.d!U= +(fWyʚEև}B{yvtrpnmZki ffm`3]t@kY$I.:, z XftK|Ϻ;̬B=j}m{Cy,w'u3sOq{omUU qUUb'8CyffUUE7*{ ,96˷3ԮIӛUI\؉>S}{}ywwusq @U$8fj;Iq3satQBU5($ w{Z8^[ðdzĎ{>}{ywu $IUU.N$5m]M@33b'qImUQ۶g8$i+}{yUU 33*mqtUvb6̌yh YJp=;1%m|iq||f][٨UJ:ӈD}  ffUUI833'v$I""(]t,dUUG;h/${B>g . L/ףI=؊K!! @۶ L؉m[33UfIMo`QD8-O#x_SP3 $whveqۖ5/̌}B"UU m@ffEUmDD 3yozj(\N^B6#,""> -J<kl71Ub9/Amc(# U`.;UU0EUuffXK@4*!)U_۶3N1{ݗU8$ 33$EIff@ ۶pvbUU$I=33J) EPNfmStYQ;4I%UU @ ff*$Iq3]UwwP--8 ӛzNl^IRF;1(CGE}UNp'h7$,OݝGƘY& UUm8]t*N۶`<<qf<.U'vKhm[rODD90&8o3D;-z%߰"yi' IUUf@$pKK*y 3m\qdFXLB8.%AU / l`I(#8fy(UU ۶qUUmZZ8t7؉B{maUURJ@M6--$qy #U5.۶ާ)) @ 33Um 8.jb'iiGk( YUףvi]RH>4+#5 f>,Q4 ^־m#J* ff@33t;xxUU5z8rffZPE<<33*" > ]m }a<3Ck+UU *$`LUNIc^Cf&0 ]Qb${ncXMC:1)!A3| .M6U(%˽wu, UU$Iffvb$qP33aU;/IiwwZk`UUKKA8n0k( 0 OG$4˲-@ mE'v6P^@$ m=sh]R$I@Y7(/b' I of[UtAڼι۶.UU 33 Iq.U؉$I8kL0E %{pdZZuPGE>5-f&8a USv0ID / ff U۶83Em[""qCyY<"! UG!xlaW8N0E<4,v%yt` br>0 mUU];m33ff$I.B۶c]tii_UUL^C;33+$E! rNkmEq1 1UU@ * qf]tUDD53sUU.:d! v"|pffq\SJA91*# U;KFR2 UU$@8*IUU aE,UN$axxmcYP4H@180)"qBW 9' Us,3 33 $I`@Nff0U(̌mtQ7 = 'I43)uj`WNfFp>6/(""r Va$ I<4UU ff m33.UU۶ww@y]B*z mkdW|qgP^UULD<5.'d!;U= + :M5@ UILtj$PfhMU5 D&xn e[3SJ C;]4-& \ BI"m]6 ۶ffb'm`--3I]t Y@(ukvbY+Q$I}A.:33, & z XXNfm7UU * mqU;p<<8 y,dJ33{ U1I|ri`jW71*$}{ ,99@ff $ UU3.vbIZZ*۶Eoz`G;1q$ ,f.-U`'vlcm[YSKDD7=w60)#R8O R36Z:UU $I@qEU'v$ii8y f jQ;%I:qL|3s%jaMYtQIB;U5/(##& $ }wh{; U m`8f]؉6xxG3<Uu(\Dh/mw9<7yHycpgA_EWOYH\A:>4.((v" i< I]t$IUUk(m.ӛffN8${t۶"5؉vm5e]UUMF@x933--b'!qEIy V=UU@33 * ۶U;m[c5 pX^B-{6K+DZ if|s)kb[zSALUE>Q822N,&/!= D>ff UU m33*m""q^CtUzvbK6O#|̌yqh` YQJCp=77;1x+% mt 2? L.@33Pf&7NlUU@#,BZk3]wnff^&WP$IB<<'6M0*<% [ d!  > &.Game.Lander  (c) Acorn Computers 1987  Version 1.1 (: 2 0 < 15 Fȗ ȓ 0,0,1279,1023 Pȗ 640,512 Z*RUN &.GAME.GAMECODE HugoMusic @N\DMusic @N\DIcons Icons Hugo0Tm ,, PUUUPUPUUUUUUPUUUTc ,, PUUUPUUUUUUUUUUUUUUUPUUU4dot1 ,, UUTsb,, UUUPUPUUUUUPUUPUUU`natural ,, PPPUUUUPUPUUUU\flat ,, UUPUUUPUPUU8rest,, UUUUUUUUUUUU\rest4 ,, PUPUUUUPPUPPPUUUPUPlrest8,, UPUUUUPPUUUUPPUUtreble,, UUPPPPUPUUUUUUUUPPUPUUPUUPUPUUUUUUPPUPUPUUPPPUPPUPPUPPPUPPPUUUPUUPPUUPUPUUsharp ,, PUUUUUPUUUUUbass,, PUUUPUUUUUUUUUUUUUUUPUPUUUPUPUPUUPUUUUPUUPPPalto,, UUUUPUUUPUUPPUUPUUPUUPUPUUPUUUUUUPUUUPUPUPUUPUUPPUUUPUUPUUUU@sharp2,, UPUUPUUUUPUUPUb,, UUUUUUPUUUUUUUUUUUUUUPUPUUUUUUUPUUUUUUUUUUUUUUbh,, 3333333033333333333333330303333333303333333333333333Tsbh,, 333D@0303DD3333D@033@0333@Tmh ,, 0333D@030DD33CD@333@0333@Tch ,, 0333D@03333DD33333CD@33333@0333@mu ,, PUUUPUPUUUUUPUUUmd ,, PUUUPUPUUUUUUUUUcu ,, PUUUPUUUUUUUUUUUUUUPUUUcd ,, PUUUPUUUUUUUUUUUUUUUUUUqu,, UUUPPPUUUPUUUUUUUUUUUUUUPUUUqd ,, PUUUPUUUUUUUUUUUUUUUUUUPPUUUsqu,, UUUUPUUPPUUUPUUUUUUUUUUUUUUPUUUsqd ,, PUUUPUUUUUUUUUUUUUUUUUUPUUUPUUUdsqu,, UUUUUUPUUUPPPUUUPUUUUUUUUUUUUUUPUUUdsqd ,, PUUUPUUUUUUUUUUUUUUUUUUPUUPUUUPUUUUsdsqu,, UUUUUUPUUUPUUUPPPUUUPUUUUUUUUUUUUUUPUUUsdsqd ,, PUUUPUUUUUUUUUUUUUUUUUUPUUPUUUPUUUPUUUUpbar,, DPDPDPDPDPDPDPDPDPDPDPDPDPDPDPDPD4dot2,, UPUUPU<dot3,, UPUUUPUU4ldg1,, DDDDDDDTldg2,, DDDDDDDDDDDDDDtldg3,, DDDDDDDDDDDDDDDDDDDDDldg4 ,, DDDDDDDDDDDDDDDDDDDDDDDDDDDDldg5,, DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDrest16 ,, UUPPUUUU@UPPUEUPPUUUUPPUUrest32,, UUPPUUUUUPUPPUUUU@UPPEUPPUUUUPPUUflat2 ,, PDPDPDPDPDUPPUDUUUPUUDUPPDPPDPPDUPPDUPnflat,, DDDUUDPUUUUDUPUDUUPDPUDUPUDUPUPPPnsharp ,, PPPUPUUPUPUUUPPUPUUPPPUPUUUPPUUUPPUPPPPPPPrest64,, UUPPUUUUUPUPPUUUUUPUPPUUUUUPPUPPUUUUPPUUkey,, UUUPPPPPUUUUUUUUUUUUUUPUUUUUU\time,, 33333333333330303030303030303333333333333030303030303030333333333333Ptie,, PUUUUUUUPUUUUHugoUseDeskTop@w?`hUseGame @h?`1lUseDeskTop@w?`hUseGame @h?`1lLibrary Library Hugo*|> &.Library.UseDeskTop *| *| This enables the user to use the DeskTop *| after playing Lander on a 512K machine *| *CONFIGURE SCREENSIZE 0 *CONFIGURE LANGUAGE 3 *RMREINIT FontManager *RMREINIT WindowManager *| *| Now press CTRL-BREAK to start up DeskTop *| *|> &.Library.UseGame *| *| This enables the user to play Lander on a 512K machine *| *CONFIGURE SCREENSIZE 20 *CONFIGURE LANGUAGE 0 *UNPLUG FontManager *UNPLUG WindowManager *| *| Now press CTRL-BREAK and then type */GAME.LANDER *| *| To reconfigure your machine to use the desktop, type */UseDeskTop *| Hugo65Arthur @N\lxFPEmulator\RAM_Basic @a#v4H65Arthur @N\lxFPEmulator\RAM_Basic @a#v4HModules Modules Hugo4T$4XBBC6502Emulator6502 Emulator 0.82 (01 Jun 1987)EmulateBBCxThe 6502 emulator attempts to run BBC machine code programs on Arthur Syntax : *EmulateBBC@- R |pDHL 0@$Run$Path_6502 @-pDHL"J뀀Q Q[O Ř\@->>>pX2WWBWX_ @-O_Failed to start 6502 emulatorpРTO @DHL". XF@- 0@P`pG\ @-0O* G0G    26@̠?@-) HPP\POOP@:6S$F?|T@P`l@-G>+;0C0SZ808#@-C\ X\G@-0@- @- z@- p\W>0`\G -ЍbjHR.( R 000 0\GTU3@0P0\G0@- p j0:j0_Bad command (Emulator)~@-~h0~Bpppps~Bp ("(> P 8#8> SX20_s~_~Emulator can't run this file@-G  G$.Library.@- P*A P3*@-@-@-``@-`` @-``@- P027"d`  !, R B", * Z J" I!!HHPH LL++  BASIC(C)1987 Acorn BASIC 4.31 HH +' L\ m + hh`.)!ᩎL' * !!2* d%    @A II : d # ʎOXL97 97 :+ *-*+** 9/ /@H*7  9*֘e**+`d=>=+=e== > ȱ=*`` -H ' h8E-7N 9 弢t=*Division by zero*iB9t=$ * !!2*`= @=>>??d@d?d>*  9=t90шA69&=&@>&?&@B=*=*=B>+> ?,?@-@A69T Q@PB @` ü d5-. -,d4*,d3,  +.2 0I4&3 &2*=3+2,2+3*4d2d1d.d0d/`. Φ.IJ*0d/1`10@ * !!2*'2345ˤ02H @324354d58h 05&4&   @3&2*00/1`d=11=0Ɂ=LȦɠLF1f2f3f4=),JJJI= d54 12=342312t1d5.84433,  2211`4 3: @21`ffjH Fjf Fjf Fjf Fjf NEhE `;.d/<0=1>2?3@4A5`18 * !!2*@0+  ?=>d=)H@F=f>f?f@fA:9I%<0)8845342312d1) I"H H@ F1f2f3f4f5:.E;+  0L&1=2> 3?4@ 5ALȦ$;.8A55@44?33>22= @1L5A54@43?32>21=LANDABSACSADVAL @! 1ASCASNATNAUT  @OBGETBPUTCOLOURCALLCHAIN CHR$CLEARCLOSECLGCLSCO @SCOUNTCOLORDATA DEGDEFDELETEDIVDIMDRAW@,@+2ENDPROCENDENVEL  OPEELSEEVALERLERROREOFEORE# @RREXPEXTEDITFORFALSEFNGOTOGEN T$GETGOSUBGCOLHIMEMCINPUTIFINKEY$INKEYI @! 1NTINSTR( @LISTLINELOADLOMEMCLOC ALLEFT$(LENLETLO @GLNMID$(MODEMODMOVENEXTNEWNOTOLDOND A@@R @OFFOROPENINOPENOUTOPENUPOS,  CLIPRINTPAGE CPTRCPIPLOTPOINT( PROC POSRETURNREPEATREPORTREADREM RUNRAD @! 1RESTORERIGHT$ @(RNDRENUMBERSTEPSAVESG   @NSINSQRSPCSTR$STRI NG$(SOUNDSTOPTANTHENTOTAB(TRACETIMECTRU01 EUNTILUSRVDUVALVPOSWIDTHPAGE,  PTRTIMELOMEMHIJ: @MEMMissing Ԫ)ѭ̪ N @g ի$~IYܪتRh쨥+  @! 1ȫ+  @=NXY(+  wߏb @2etۖq]LSò浦궭i@,@+2@o+  :˗(yF J%`ԶtdK89x! cs AAClrÒbB4r5 %%9AAAAJJ @LLLPPRSSS%AAAA > 0L2II% NRR )*00NNN> : XʈHh(@`8x:Zz0Pp 0@!AaF&f朜$L :(Lm :I]  E (Jxi?8 I7 l968* H @ _? : l8銨 . :  ȱ N : Ȁ :  _ ȱ : : LN @ ?Lz \Z c'  ՒN :d=:h d\`.   0*  &=&>E=ݦ :>!Lʛ)ɀɂɄ 0 ȱ )A0) @ H@79(A8<=:;(6")$9:@t q@pb @A<=`)< ϒ*@+,  :A0 :()Out of range0 *L0 9 & ϒ+ByteAc :(9 ϒ :) # ?) :)Yˀ, 1 :)Index ͒ ? # : 1 Y &LX )+66 :   0)A ͒ ? # 1݀ ȱ ލ46) )_8% ϒ+d)Z ?  1Še))z6<: 9 ϒ 9Б)LL>,  : 7 :( ϒL, H @ # # ϒ :), # 1 :)LDMN =I)HA! 9h ͒h7 ?Б :)7 # ϒh7 ? :> @)7й #+LSL ϒ*(* )BW D+  :SLʛ ϒ) zL+  0@L(H  h( Ւ & ))i)` :)X` :#` :,`7e79e8:ȱ97 `)=ȱ7 .)+ 4!`H>= &> 0 &>0e==e>=*0 he==Hh8` E798: -  97 @9=)? @9?=)JJ=JJIT9`{_[P A:0`.`7798` 7` 7 ' 4!`@&  AG" # 0" `: d;d<Ɏ ,* ;;d<. ,< ^7  ;  : ލϲ7 ލ AX碰9:94[!`ȱ90177. ȱ9ȱ90# : 9:8Șe99:7ªȱ9=J7 N $=P;i@ E=JJ;d 7@ , ۾d, 4!`  4!`  g   ۾ y d }> A } z   \    0  4!`@+ȱ *  ,(LzLp #  0 *[ɢ=^  :в ϐ | :ư   s @ , 4!  '7 ', 4V!`@ɤ L* ̠< H+H,H Lʛ No Type misNmatchNo room ü,ɀx*6R,-6iH+ @*r*Eq*E-+ 4!`@8*e+ # 0ih*-*,*6**-*,,6`  @ @ **` Z E= z' + *0 * ݢl Х6 Ƚ h Ld 9  a of :: ɋ _Lbdd :: ɋ, ~,; ڒǥHH hh *  86  o6 u6LX+ *H  h )  E)ݥ* _ *  _ ! `   'ɊL< @ɉ8` " : ڒ"ȱ " Ȅ" @! 1 u  Z E   m(zȥ*ȥ+ȥ,z ü dLgNLk J`dl*Lʛ   ?  *9+: ü ,e + ̾9*:+L叩  * ? +S*OLL;+<87` 9 ½ ӓ70.;@7;8e;;<< ڔ spaceSilly ۓ70:74 1@0" 979e*9e:): ڔ d  0g, *d, ,ɍ "*@E,,  U ӓ70L@7;+;*7=7 9 :  ڔ;i;<ǀZ ,   Failed at +ȱ * _ȱ7e *  @778` *H ü  A ü A , +պ yhHe**+LLg ki  ̾-,Z*e+eԥ*+@'  Ւ  ?6Lb? 弢F@f? e*e+*&+ ?@*, *+` Bad :e + @78? W($% ?7(LN@Ȇ д  ?HH  ϒ+),-Г ̾z*ȥ+P Z c ?)hڅ?d@ hhHe**++ *87e*+e+$+ P@h7e7d78788L[ space *+ *+   ̠< +Lg  y  ɇ ϒ *!+  :+"  ;  ȱ $ d.*L '&@@6 .  Q  ' 삥1-2, ̠< 3+4*`L 0L*    :  Lg *(**  ; " \,0 ի'  ?LbLd Not Bad ϒ*H   hF ϒ < ϒ  (  ,)ťп* d :  *LH  ϒ*H       h 㼥7 8 +  d NLg  _ + ::) %ɋ! ϒ ? ̠<;|ߩ Lb*l :7 7 :; ;@::::917@9`e :L` a$ !@ 2 @ ,! $I?8`H ,  :L6 + :,8`$ range   ȱ @[ *ȱ%+,ȱ(m,: ̠<e :eȅ787A0": :@ȱ7A 0: [_{, ;@,$W%,ȱ7(D !I? ``HȄ { !+H*H he**he++h ,` f,ȱ7( ,8` fArra,  :y ,H*H+H; @*k ի-  ,Ϣ9 h8z7ZH< 4-N@7?ȱ7@*e9*+e:+ h87-  h8h79 弤< 4+  ̠<9e**:e++ h8h+  :7 4h,+**,  ;&+*&+e**e++*&+*&+e**+7e**8e++`+),- *7ȥ+7`Sub \!1script70@ : +  Z!1_[`{` ɍȱ )Q * Q +Ȅ 8``     =.MistakeSyntax error \!1 No Escape /=`  Z!1حѤA 0@ ȱ : ɋЭe   $0`  : $ 0 +ȱ * e Č<   `LL  % *+,-Lm Z!1   'L ɋK; @ L*!+"[ u ] uLo ׻ ?N .E;.6-h,h+h* ';I;<0=1>2 ? \!13@4jE;* Z!1`L@0*H+A 0H,H-H 0hE-0@-h,h+h*`hE.I hhh` . Я667 @ 7 ȱ6 (ѩ`  ,  Z!1  Z!1@ '` ܝ ** ׼@ ܝ Y** @ `  9** ׼@ ?<`  Z!1>3 I*+,-@ A  0`= >  ڀ Ӫ= ŀ 𺀺String too long .@  fڲe6ݪH6ʈ h6 ß+,  Z!1-^`09+ H @ 0F,e**e++ȱe,,ȱe--iN@L ' ' $= 0 0>8**++ȱ,,ȱ- * $%=  * ׻ +  Z!1 q0+ A 0@+ ,ie- 0+8 ,iнe-й '= üF>f=e* [!1e+?e,?@e-@*&+&,&-=>+ 41`@ׄ=>*   */ $` ӻ ѥ Z8= u( ' Z$79  H h^` ӻ 0* e+e, [!1e-+ *0"ɇ*Ɂ& x41`2341J0.I*  0@* q Lq ` t?8*++*??7 7;  7? 0 q` %*H)?hJJJJ?4Z1`?? ii0 i`. -d. i0ɁG H7  8NMd6dH$00 *1ж7e0Li Ʉ1ɠ WH  [!1M87eH0; 41` d788IJ i  00(  ƃ0Ʉ F@1ɠ8A ȦdHM871H0 8)dHȘ#7 @ 0 i. i0H iM M, 41`. i841`760.Ȅ6H'E iH - i8H U7 H0 i`8 i H gh 0ڦ66`Lz`d1d2d3d4d5dGdHI.U 41`:/0ۅ5GHȱ:B   0/4BI5 e5 eBdI IBe5 HIGGE ReHH1@ @(20$-HG5*4+3,H8` *%0d., 4U1`@d/1 H0  ;   W 8` ]I8`ȱ-+Nȱ:"/Iȱ:/ ȅBI eI eB`I``.;0<1>=2>3?4@5A`1JJJJ g15&4&3 &2&11H2H3H+ 41`4H50B +  0@&4&3 &4&3 &4&3&2&1e55he44he33Vhe22h80i0/F1f2fUnknown opcode Unimplemented I> P: G* +,, G̠0 @ 0 d` P@@mPEU<0 0@P<-P@@P5&$0 02 -0@4@8@, 0 0#40#40#40- d` P@@mPU  B-P@@P 5z` t` znT@1TPhP'X0i G Exited to 6502 emulator RuP GLeaving 6502 emulator gDHL"DHL@-Op , ) A *% X +! Y , S 1 PC IA nNvVdDzZcC   1 P027" RZآ5  L 65* 7 L.~ EscapehH)lH8hXlX  L.3 `3 ;*e.EH ;O0Q).h8 0AhOO ) F`ȱ `lHkH`GOQUITHELPBASICOSPAGEv ; ;, `Bad PAGEé8` ; ;HH hh` Lee>ȱ(7ȱC0ȱ)))M@M) )H  hLMl I cannot run this code This is not a language`80! )   &&` L ; 8` Acorn 6502 TOS 0.40 (11 Jun 1987) `ɂɃɄ(Ʌ4Ɏ5ɣ````````L`#`3`C`S`,(ȱ  ;eiȩ`c`s````hh eeHH`7 Unsupported`*-3f4jʀɥ5eA54e@43e?32e>2=e11f1f2f3f4f50/`e0/0 ã ã4*3e552e441e331e221 F֥2*1e554 321`dAJ@J?J>J;J< >?@ =`vlJK0J.E1)E1J2ȑJ3ȑJ4ȑJ` lJKd5d/J4J3J2J.J0 234 1`LiLJK`l 0 d;=Ȅd?d@dAL i10 ⤊E.. l;$:IH ̥hJH ׻ k `10L̦L Q1 LȦ;E..82 ?3@4@4@?3?>2>18&;@&?&>*Ŧ;<мjF1411 (j(j(j5h3h2h10L G 0Vd4@3 1S > ۦ Too big**6LLLLLLLlllllll  ll l ll(Z Q1E.. , ƃ5 *%44 /d0d1d.d/d2d3d4d5`0e<&/0/.E;.ڢ9t9Adf?f@fAFuB4uA43u@32u?21u>10F0510L <1E.0Log range-ve root01ɵڄ0 0 n V0 hI Q @ L <1.00JiA01( Jf2f3f4f5d>d?h8鐰iPH1 A3&2&11= 2>3?3?32>21=1uA@UAAJ´@Z43 z5&4*3П=11@ 11L?0 h(f. ::Gi iL Υ ޤ J ѥv Z J G0 X ѥL <.H h i17 ѥ <.Hd.  8 ̥0m V(0 08 hL n nIFI a FI` n FI ̥L ⤥01fL ^.; n0 %I * J JA ۦ XL <ʀ IKJL <π < , n0 P lLk LȦ.0Exp rangeAccuracy lost < 0)0:H 0j l P ^0eI0h:` OdIڪʽ01` *+L pd.d/d50E 4E3E2E1La -0,+*:  ' ۦ % ̾' @`( p *+,-@` *I* *`  d*+,h-؀ԩ LH *h  @H V h d1 0` <66  .HHHȄ78 yd hhh'`L 6HHHdd /-+ / z / z ' 6.d. ( = _ G (@` 6L LL  *+,-@`1. 0ϥ-0,+*ܩ K *H+ ü-h,* .0 И, . Њ*) ,LX  **ʆ-e7e88-!6i+ 6 7*L *+78L 0$-0*d.`1E..` +08**++,,--@` /" ,ʆ6`ȱ ""L -"+ /Ɏư5L{? .&Q(B u L{ z`() @AqNo such variable)Bad Hex )` իHȱA7/ ʊh*0 h ))@` * !ȱPІ L 6*+d,d-@` ߲ ȱ$ * @` &  Д,A  ( *66`6**6* LX y, . *H*), h6Ȉ,68,****6W /~Z h7 85 0L K ü6**6*6`6`Lhh h No such / d  0ȱ  e Ȅ :e <=<79< ލŠ      LMBad call'e Ƚ'H H H He78 Y րLr* * Hd :(M HHH mhhhh ? G?h h h he'`HHH R hhh,H+H*H \ ?)-H /(# '-  E) hhLMLh h Arguments üh*h+h,0-م'7 '  ü  -к LťMHL[,7 { (07 uL,0S*-*,***+@`*Ld5d/*4*3*2*.*0 234 1`*6*8*767`*I 6` *LQ  dd 8d7 ( 78 0  78`( ~ d  }  d Lm`:" at line ";:: ϒ*H+H  *=+> ϒ *H  *D h77 ϒ *#LgL zh9h8h7Z9J' %*79+7,ȑ7-ȑ7`0 *07.E1)E17ȥ27ȥ37ȥ47`EDIT 12,2 yd;d< ի   ȫF+( ? ü  ? 1 : : ȱ Oж ϒ *L   ½ ü .= >  q$0  +ȱ **1+2$LdLdM $;d;$<d< 7"ELLL ;< 񀋅MåM 8 ; < dL " ELL" qȀLɍ ;<L Ȁ a &8=Lʛ&-*+,8&!Can't match No *+v*}*7*}*8ȱ*}*9ȱ*}*78!78"79#7$7]]$&' 'Lm8& ?8L iJK *7+8 ;&i!J Ӝ0Lb" variable#Too many s$No ۰ /ɸ&Ϙi&7(8)9*JT &*!+",#-$ /Ɉ  &*+,- 0& & 'Lm ?&i!JK /Ɉ ? &iJK ꤀ %  %0%Too many s&No %% Lg    => Lm  } :ɇ d  L :Ʌ ϒ vڥ+,-X*50R L:HɋD"E+++),(,,զ,*hH 'L Lh ɋ: ( range' syntax)No such line /  Ld Lȱ : `  ϒ+ .`LLʛ Ld L Ւ ?LH  ՒhL L '(' 6  ť'0  * l  hh 9Ɇ fLFLM ML(fL,; LHMH hMhL Ւ$LpM$L? =6LfL$Lpd ׬ E ȄM( B d' d=> : : ɋ =>Lg ?Lb  y  y  ׬' ei Ւd EXT EK 0ȱȱ .e*Out of +No -#,Too many sȄ` $ץ*+,-$LgL    /#а *`$   $Lmd789 :;Ȣ7 Lޛ d` .M=7>87e7787 870 8L87`(< 7 8d;d   ; e< ;; ;ȩ ;Ȅ?9: ὅ78 ½ y space97:8e9:=>+=ȥ*=ȥ?=8e==>ȱ;= ` q`d$d&d%d` ׻ ß' ?JiKi` ?8 0.E1)E1ȥ2ȥ3ȥ4`-0ԥ8 -,+*`z*H+H,HZ`6 66`9ɀ%8797:97L ȱ7 797ȱ7ȱ797Ș+6 8-,+*e`7܅ ` yL7ɀW89Zȱ87 Ș8e88980 qz`HJJJJ Th) ii0H# _hl I $0 LbHEh`% 0 * o`*+,-` d=7 d 0  㽀e` Bad program Ld786 `L L 9: ;<` ½ ?@CDGHdAEF=>B7 $  H Z z*h Lg * H  z* h7h8 l7ڢ* .* +,-` dd Ȅ` [LRoger Wilson, R.A.Sack, Tutu & BruceѥJ.^[تʘ"nIڢ!8;)1r_[f+wm7sQz# @Ԃx{5e.~{o-Y{wDDDfffe(3QFPEmulatorFPEmulator 2.40 (03 Sep 1987)FPEmulatorVersionO-ARM Floating Point Emulator 2 (V2.40, 03-Sep-87)  @  P*"* HŽ 'QO-O- PZ\@ @DP@@ }@MO<?J pz(t  u|  7>s :7   ('%$$#! 54,+10('BA43`_NMYXts/. wt |yPMro%"gdpmDAQ ji{ z    |{  ,   NKLI}\[ZY W T R'}.7 R 䉀 Ѝ Ѝ  X