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<