Home » Archimedes archive » Archimedes World » AW-1995-03-Disc2.adf » Disk2Mar95 » !AWMar95/Goodies/Morph/!Morph/!RunImage
!AWMar95/Goodies/Morph/!Morph/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1995-03-Disc2.adf » Disk2Mar95 |
| Filename: | !AWMar95/Goodies/Morph/!Morph/!RunImage |
| Read OK: | ✔ |
| File size: | FBE8 bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
80ONERRORMODEMODE:PRINT"Fatal Error : ";REPORT$;" at Line ";ERL:END
90PROCUV:ONERRORPROCUW
120PROCUX:END
170DEFPROCUV:UY=4:UZ=2:Ua=1:Ub=-2:Uc$="Morph":Ud$="Morph":Ue=&FF9:Uf=&3E1:Ug=6*1024 :DIMUh Ug:Ui=6*1024 :DIMUj Ui:Uk=6*1024 :DIMUl Uk:Um=6*1024 :DIMUn Um:Uo=24*1024 :DIMUp Uo:Uq=6*1024 :DIMUr Uq:DIMUs 1024*2:DIMUt 1024:DIMUu 1024:DIMUv 1024:DIMUw 1024:DIMUx 10:PROCUy(Ux):DIMUz 10:PROCUy(Uz)
400VU=0:VV= NOTTRUE:VW=0:DIMVX 32:VY=FNction_InitialiseTask(2*100,Ud$):VZ=0:Va=0:PROCVb:PROCVc:PROCVd:PROCVe:PROCVf(0):PROCVg(0):PROCVf(2):PROCVg(2):Vh=FNction_IconbarSprite(Uj):Vi=FNction_InstallHelp:Vj= NOTTRUE:Vk=0:Vl=0:Vm= NOTTRUE:Vn= NOTTRUE:Vo=0:Vp=0:Vq= NOTTRUE:Vr= NOTTRUE:Vs=0:Vt=0:Vu= NOTTRUE:Vv%=0:Vw%=0
600Vx%=0:Vy%=0:Vz%=0:WU%=0:WV=0:WW=15:WX= NOTTRUE:WY= NOTTRUE:WZ=1:Wa=-1:Wb$="Morph-Data":Wc$="Frames":Wd=0:PROCWe:PROCWf(1):PROCWg(1):PROCWh("SOURCE",1,1):PROCWh("DEST",1,1):PROCWi(Uj,Wj,1,FNction_TagToString("srce")+FNction_TagToString("none"))
810PROCWi(Uj,Wj,3,FNction_TagToString("dest")+FNction_TagToString("none")):PROCWk(Uj,Wj,1,3):PROCWk(Uj,Wj,3,3):PROCWl:PROCWm:ENDPROC
910DEFPROCUX:PROCWn:REPEAT:Wo=FNction_PollWimp(Uh,VU):CASEWo OF
960WHEN0:IFVa=1 THENPROCWp
970IFVa=2 ORVa=3 THENPROCWq
980IFWY ANDWr THEN
990PROCWs:PROCWt
1010ENDIF:PROCWu
1030WHEN1:PROCWv(Uh)
1040WHEN2:PROCWw(Uh,Uj,-1,TRUE):CASE!Uh OF
1060WHENWx:PROCWy(Uj,Wx,Wz)
1070ENDCASE
1080WHEN3:PROCXU(Uj,Uh!0)
1090WHEN6:PROCXV(Uh)
1100WHEN7:PROCXW(Uh)
1110WHEN8:PROCXX(Uh)
1120WHEN9:PROCXY(Uh)
1130WHEN17:PROCXZ(Uh)
1140WHEN18:PROCXZ(Uh)
1150ENDCASE:UNTILVV:PROCXa(Vi):PROCXb(VY):ENDPROC
1250DEFFNction_IconbarSprite(Xc):Xc!0=-1:Xc!4=0:Xc!8=0:Xc!12=68:Xc!16=68:Xc!20=2^1+2^3+2^4+2^8+(3<<12):$VX=CHR$(ASC"a"+VW):Xc!24=VX:Xc!28=Up:Xc!32=2:SYS&400C2,,Xc TOXd:Xe=TIME:=Xd
1410DEFPROCWe:Uj!0=Ub:Uj!4=Vh:SYS&400CE,,Uj:$VX=CHR$(ASC"a"+VW):Uj!8=0:Uj!12=0:SYS&400CD,,Uj:ENDPROC
1510DEFPROCWs:Xf=TIME-Xe:IFXf>8 THEN
1540VW=(VW+1) MOD16:PROCWe:Xe=TIME
1570ENDIF:ENDPROC
1610DEFPROCXg:VW=0:PROCWe:ENDPROC
1670DEFPROCVd:PROCXh(Up,Uo):CASEFNction_SpritesType OF
1700WHEN1:PROCXi(Up,"<Morph$Dir>.Sprites")
1710WHEN2:PROCXi(Up,"<Morph$Dir>.Sprites22")
1720WHEN3:PROCXi(Up,"<Morph$Dir>.Sprites23")
1730ENDCASE:ENDPROC
1770DEFPROCXV(Xj):Xk=Xj!0:Xl=Xj!4:Xm=Xj!8:Xn=Xj!12:Xd=Xj!16:CASEXm OF
1860WHENUY:CASEXn OF
1870WHENXo:IFXd=3 THEN
1880PROCXU(Uj,Xn):PROCXp
1900ENDIF
1910WHENXq:IFXd=5 THEN
1920PROCXU(Uj,Xn):PROCXr(Uj)
1940ENDIF
1950WHENUb:IFXd=Vh THEN
1960IF NOTWY THEN
1970PROCXs(Uj,Wj)
1980ELSE:PROCXs(Uj,Xt)
2000ENDIF
2010ENDIF
2020WHENWj:CASEXd OF
2030WHEN0:IFVj THEN
2040IFINKEY(-2) THEN
2050Xu=FNction_LaunchObject(Xv$,Xu)
2060ELSE:PROCWw(Uh,Uj,Xw, NOTTRUE)
2080ENDIF
2090ENDIF
2100WHEN2:IFVn THEN
2110IFINKEY(-2) THEN
2120Xx=FNction_LaunchObject(Xy$,Xx)
2130ELSE:PROCWw(Uh,Uj,Xz, NOTTRUE)
2150ENDIF
2160ENDIF
2170WHEN7:PROCYU
2180WHEN8:PROCYV
2190WHEN9:PROCYW
2200ENDCASE
2210WHENYX:CASEXd OF
2220WHEN0:PROCYY(+1,0)
2230WHEN1:PROCYY(-1,0)
2240WHEN5:PROCYY(0,+1)
2250WHEN6:PROCYY(0,-1)
2260ENDCASE
2270WHENXw:CASEWX OF
2280WHENFALSE:PROCYZ(Xn,Xk,Xl,TRUE)
2290WHENTRUE:PROCYa(Xn,Xk,Xl, NOTTRUE,TRUE)
2300ENDCASE:IFINKEY(-2) THENXu=FNction_LaunchObject(Xv$,Xu)
2320WHENXz:CASEWX OF
2330WHENFALSE:PROCYZ(Xn,Xk,Xl,TRUE)
2340WHENTRUE:PROCYa(Xn,Xk,Xl, NOTTRUE,TRUE)
2350ENDCASE:IFINKEY(-2) THENXx=FNction_LaunchObject(Xy$,Xx)
2370WHENWz:CASEXd OF
2380WHEN9:PROCYb
2390WHEN5:PROCYc
2400WHEN4:PROCYd
2410WHEN3:PROCYe("All")
2420WHEN7:PROCYe("From")
2430ENDCASE
2440WHENWx:CASEXd OF
2450WHEN2:PROCYf:PROCXU(Uj,Xn):PROCXU(Uj,Wz)
2480WHEN1:PROCXU(Uj,Xn):PROCXU(Uj,Wz):PROCYg:PROCYd
2520WHEN0:PROCYh:PROCXU(Uj,Xn):PROCXU(Uj,Wz)
2550ENDCASE
2560WHENXt:IFXd=2 THEN
2570Yi$=FNction_TagToString("err11"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE):IFYj<>1 THENPROCYk
2600ENDIF
2610WHENYl:IFXd=2 THENPROCYm( NOTTRUE)
2620WHENYn:IFVr ANDINKEY(-2) THEN
2630Yo=FNction_LaunchObject(Yp$,Yo)
2640ENDIF
2650WHENYq:IFXd=0 THEN
2660PROCUy(Ux):PROCYr(Uj,Xn)
2680ELSE:PROCYs(Xn,Xk,Xl,Ux)
2700ENDIF
2710WHENYt:IFXd=0 THEN
2720PROCUy(Uz):PROCYr(Uj,Xn)
2740ELSE:PROCYs(Xn,Xk,Xl,Uz)
2760ENDIF
2770ENDCASE
2800WHENUZ:CASEXn OF
2810WHENUb:IFXd=Vh THEN
2820PROCYu(Xk)
2830ENDIF
2840WHENXw:PROCYv(Xk,Xl)
2850WHENXz:PROCYw(Xk,Xl)
2860WHENYn:PROCYx(Xk,Xl)
2870WHENWj:CASEXd OF
2880WHEN7:PROCYU
2890WHEN8:PROCYV
2900ENDCASE
2910ENDCASE
2940WHENUa:CASEXn OF
2950WHENWj:CASEXd OF
2960WHEN7:PROCYU
2970WHEN8:PROCYV
2980ENDCASE
2990WHENXw:CASEWX OF
3000WHENFALSE:PROCYZ(Xn,Xk,Xl, NOTTRUE)
3010WHENTRUE:PROCYa(Xn,Xk,Xl,TRUE, NOTTRUE)
3020ENDCASE
3030WHENXz:CASEWX OF
3040WHENFALSE:PROCYZ(Xn,Xk,Xl, NOTTRUE)
3050WHENTRUE:PROCYa(Xn,Xk,Xl,TRUE, NOTTRUE)
3060ENDCASE
3070WHENWx:CASEXd OF
3080WHEN2:PROCYf
3090WHEN1:PROCYg:PROCYd
3110WHEN0:PROCYh
3120ENDCASE
3130WHENWz:CASEXd OF
3140WHEN4:PROCYd
3150WHEN3:PROCYe("All")
3160WHEN7:PROCYe("From")
3170ENDCASE
3180WHENYl:IFXd=2 THENPROCYm(TRUE)
3190WHENYn:IFVr THENPROCYy(Xk,Xl)
3200ENDCASE
3230WHEN64:CASEXn OF
3240WHENXw:CASEWX OF
3250WHENFALSE:Va=2:PROCYz(Xn,Xk,Xl)
3260WHENTRUE:IFWV>0 THENVa=3:PROCZU(Xn,Xk,Xl)
3270ENDCASE
3280WHENXz:CASEWX OF
3290WHENFALSE:Va=2:PROCYz(Xn,Xk,Xl)
3300WHENTRUE:IFWV>0 THENVa=3:PROCZU(Xn,Xk,Xl)
3310ENDCASE
3320WHENYl:IFXd=Wa THEN
3330Va=4:Yj=FNction_BeginDrag(Uj,Xn,Xd)
3350ENDIF
3360ENDCASE
3390WHEN16:CASEXn OF
3410WHENXw:IFWV=0 THEN
3420Va=1:PROCZV(Xn,Xk,Xl)
3430ELSE:CASEWX OF
3450WHENFALSE:Va=2:PROCYz(Xn,Xk,Xl)
3460WHENTRUE:Va=3:PROCZU(Xn,Xk,Xl)
3470ENDCASE
3480ENDIF
3500WHENXz:IFWV=0 THEN
3510Va=1:PROCZV(Xn,Xk,Xl)
3520ELSE:CASEWX OF
3540WHENFALSE:Va=2:PROCYz(Xn,Xk,Xl)
3550WHENTRUE:Va=3:PROCZU(Xn,Xk,Xl)
3560ENDCASE
3570ENDIF
3590WHENYn:Va=1:PROCZV(Xn,Xk,Xl)
3600ENDCASE
3630ENDCASE:ENDPROC
3670DEFPROCXX(Xj):Xn=Xj!0:Xd=Xj!4:ZW=Xj!24:CASEXn OF
3720WHENYX:CASEXd OF
3730WHEN2:IFZW=13 THEN
3740ZX=VALFNction_ReadIconText(Uj,YX,2):ZY=VALFNction_ReadIconText(Uj,YX,4):IFVZ=5 THENZZ$="SOURCE"ELSEZZ$="DEST"
3770PROCWh(ZZ$,ZX,ZY):ZY$=FNction_ReadIconText(Uj,YX,4):PROCZa(YX,4,LENZY$)
3800ENDIF
3810WHEN4:IFZW=13 THEN
3820ZX=VALFNction_ReadIconText(Uj,YX,2):ZY=VALFNction_ReadIconText(Uj,YX,4):IFVZ=5 THENZZ$="SOURCE"ELSEZZ$="DEST"
3850PROCWh(ZZ$,ZX,ZY):PROCZb
3870ENDIF
3880ENDCASE
3890WHENWj:CASEXd OF
3900WHEN6:IFZW=13 THENPROCZb
3910ENDCASE
3920WHENYl:IFXd=0 ANDZW=13 THEN
3930PROCYm( NOTTRUE)
3940ENDIF
3950WHENXw:CASEZW OF
3960WHENASC"X"-64:PROCZc
3970ENDCASE
3980WHENXz:CASEZW OF
3990WHENASC"X"-64:PROCZc
4000ENDCASE
4010WHENWz:IFZW=13 THEN
4020CASEXd OF
4030WHEN11:Zd$=FNction_ReadIconText(Uj,Xn,8):PROCZa(Xn,8,LENZd$)
4050WHEN8:PROCYh:PROCXU(Uj,Xn):PROCXU(Uj,Wx)
4080WHEN13:Zd$=FNction_ReadIconText(Uj,Xn,14):PROCZa(Xn,14,LENZd$)
4100WHEN14:PROCYh:PROCXU(Uj,Xn):PROCXU(Uj,Wx)
4130ENDCASE
4140ENDIF
4150ENDCASE:PROCZe(ZW):ENDPROC
4200DEFPROCXZ(Xj):CASEXj!16 OF
4220WHEN0:IF NOTWY THEN
4230VV=TRUE
4240ELSE:Yi$=FNction_TagToString("err12"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE):VV= NOT(Yj=1)
4280ENDIF
4290WHEN2:PROCZf(Xj)
4300WHEN3:PROCZg(Xj)
4310WHEN5:IFXj!40=Uf THENPROCZg(Xj)
4320WHEN9:PROCZh:PROCZi
4340WHEN&502:PROCZj(Xj)
4350WHEN&400C1:PROCZh:PROCZi
4370ENDCASE:ENDPROC
4410DEFPROCWv(Xj):Xn=Xj!0:SYS&400C8,,Xj TOZk:Zl=Xj!4:Zm=Xj!12:Zn=Xj!16:Zo=Xj!8:Zp=Xj!20:Zq=Xj!24:WHILEZk:CASEXn OF
4490WHENWj:PROCZr
4500WHENXw:PROCZs
4510WHENXz:PROCZt
4520WHENYn:PROCZu
4530WHENYq:PROCZv(Ux)
4540WHENYt:PROCZv(Uz)
4550ENDCASE:SYS&400CA,,Xj TOZk:ENDWHILE:ENDPROC
4610DEFPROCXW(Xj):CASEVa OF
4630WHEN1
4640WHEN2:PROCZw
4650WHEN3:PROCZx
4660WHEN4:PROCZy(Xj)
4670WHEN5
4680ENDCASE:ENDPROC
4720DEFPROCZy(Xj):SYS&400CF,,Xj:Xk=Xj!0:Xl=Xj!4:Xn=Xj!12:Xd=Xj!16:Zz$=FNction_PathnameOnly(FNction_ReadIconText(Uj,Wj,14)):aU$=FNction_LeafnameOnly(FNction_ReadIconText(Uj,Wj,14)):Xj!0=44+((LENaU$ DIV4)*4)+4:Xj!4=0:Xj!8=0:Xj!12=0:Xj!16=1:Xj!20=Xn:Xj!24=Xd:Xj!28=Xk
4880Xj!32=Xl:Xj!36=64:Xj!40=&FFF:$(Xj+44)=aU$+CHR$0:SYS&400E7,17,Xj,Xn:ENDPROC
4960DEFPROCZf(Xj):aV=Xj!4:Xj!12=Xj!8:Xj!16=3:Zz$=FNction_ExtractString(Xj+44):SYS&400E7,17,Xj,aV:aW$=FNction_ReadIconText(Uj,Yl,0):aW$=FNction_LeafnameOnly(aW$):Zz$=Zz$+aW$:aX$=FNction_ReadIconText(Uj,Yl,Wa):CASEaX$ OF
5070WHEN"directory":PROCaY(Zz$)
5080OTHERWISE:PROCaZ(Zz$)
5100ENDCASE:SYS&400D4,,-1:ENDPROC
5150DEFFNction_BeginDrag(Xc,Xn,Xd):LOCALaa,ab,ac,ad:Xc!0=4:Xc!4=5:Xc!8=11:Xc!12=12:Xc!16=-1:SYS&31,Xc,Xc+32:aa=(Xc!40+1)* 2^( Xc!32 ):ab=(Xc!44+1)* 2^( Xc!36 ):Xc!0=Xn:SYS&400CC,,Xc:ac=Xc!4:ad=Xc!16:Xc!0=Xn:Xc!4=Xd:SYS&400CE,,Xc:Xc!8+=ac:Xc!12+=ad
5310Xc!16+=ac:Xc!20+=ad:Xc!0=0:Xc!4=5:Xc!24=0:Xc!28=0:Xc!32=aa:Xc!36=ab:SYS&400D0,,Xc:=0
5390DEFPROCVb:ae=Un:PROCaf(Uj,"<"+Uc$+"$Dir>.Templates"):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"information"):ag=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"source"):Xw=FNction_MakeTemplateAWindow(Ul)
5460ae=FNction_LoadTemplate(Ul,ae,Un+Um,"xfer_send"):Yl=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"dest"):Xz=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"main"):Wj=FNction_MakeTemplateAWindow(Ul)
5520ae=FNction_LoadTemplate(Ul,ae,Un+Um,"magnifier"):YX=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"pref_pane"):Wz=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"pref_main"):Wx=FNction_MakeTemplateAWindow(Ul)
5580ae=FNction_LoadTemplate(Ul,ae,Un+Um,"progress"):Xt=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"back"):Yn=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"xfer_send2"):ah=FNction_MakeTemplateAWindow(Ul)
5640ae=FNction_LoadTemplate(Ul,ae,Un+Um,"colr"):Yq=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"mvmt"):Yt=FNction_MakeTemplateAWindow(Ul):ae=FNction_LoadTemplate(Ul,ae,Un+Um,"share_1"):Xo=FNction_MakeTemplateAWindow(Ul)
5700ae=FNction_LoadTemplate(Ul,ae,Un+Um,"share_2"):Xq=FNction_MakeTemplateAWindow(Ul):PROCai:ENDPROC
5760DEFPROCaj(ak$,aa,ab):$(Ur+al)=ak$+CHR$0:?(Ur+al+12)=7:?(Ur+al+13)=2:?(Ur+al+14)=7:?(Ur+al+15)=0:!(Ur+al+16)=aa:!(Ur+al+20)=ab:!(Ur+al+24)=0:al+=28:ENDPROC
5890DEFPROCam(an$,ao,ap,aq):!(Ur+al+0)=ao:!(Ur+al+4)=ap:!(Ur+al+8)=&07000001+ABSaq*2^22:$(Ur+al+12)=an$+CHR$0:al+=24:ENDPROC
5980DEFPROCar(as$,ao,ap,aq):!(Ur+al+0)=ao:!(Ur+al+4)=ap:!(Ur+al+8)=&07000101+ABSaq*2^22:at=au+av:$at=as$+CHR$0:av+=LENas$+1:!(Ur+al+12)=at:!(Ur+al+16)=-1:!(Ur+al+20)=16:al+=24:ENDPROC
6120DEFPROCYu(Xk):VZ=1:al=0:PROCaj(Uc$,160,44):PROCam("Info",0,ag, NOTTRUE):PROCam("Prefs...",0,-1,WY):PROCam("Quit",128,-1, NOTTRUE):SYS&400D4,,Ur,Xk-80,228:ENDPROC
6230DEFPROCYU:VZ=2:al=0:au=Ur+1*1024:av=0:PROCaj("Quality",304,44):FORaw=1 TO5:aw$=FNction_TagToString("qual"+RIGHT$("00"+STR$aw,2)):PROCar(aw$,ABS(aw=!ax),-1,aw>1):NEXTaw:!(Ur+al+0-24)+=128:!Uj=Wj:SYS&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:SYS&400D4,,Ur,Zl+488,Zo+100:ENDPROC
6400DEFPROCYV:VZ=3:al=0:au=Ur+1*1024:av=0:ay$=FNction_ReadIconText(Uj,Wj,6):PROCaj("Frames",128,44):FORaz=1 TO5:az$=FNction_TagToString("frms"+RIGHT$("00"+STR$az,2)):PROCar(az$,ABS(ay$=az$),-1, NOTTRUE):NEXTaz:!(Ur+al+0-24)+=128:!Uj=Wj:SYS&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:SYS&400D4,,Ur,Zl+488,Zo+50
6550ENDPROC
6580DEFPROCYb:VZ=4:al=0:au=Ur+1*1024:av=0:PROCaj("Auto",128,44):FORbU=1 TO5:bU$=FNction_TagToString("auto"+RIGHT$("00"+STR$bU,2)):PROCar(bU$,0,-1, NOTTRUE):NEXTbU:!(Ur+al+0-24)=128:!Uj=Wz:SYS&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:SYS&400D4,,Ur,Zl+448+52,Zo+356-Uj!24:ENDPROC
6750DEFPROCYv(Xk,Xl):PROCbV("file_3e1"):PROCWi(Uj,Yl,0,Wb$):PROCWi(Uj,YX,2,STR$bW):PROCWi(Uj,YX,4,STR$bX):PROCbY(WW):VZ=5:al=0:au=Ur+1*1024:av=0:bZ=Ur+al:PROCaj("Select",128,44):PROCar(FNction_TagToString("delt"),0,-1,WV=0 ORWX):PROCar(FNction_TagToString("colr"),128,Us,(NOTWX) ORWV=0):ba=Ur+al
6900PROCaj("Edit",304,44):PROCar(FNction_TagToString("bgrd"),0,-1, NOTTRUE):PROCar(FNction_TagToString("colc"),0,-1, NOTTRUE):PROCar(FNction_TagToString("movc"),2,-1, NOTTRUE):PROCar(FNction_TagToString("rsrc"),0,-1, NOTVj):PROCar(FNction_TagToString("rdst"),0,-1, NOTVn)
6960PROCar(FNction_TagToString("rbck"),128,-1, NOTVr):bb=Ur+al:PROCaj("Misc",224,44):PROCar(FNction_TagToString("acpt"),0,-1,WX):PROCar(FNction_TagToString("cntr"),2,-1,(Vv%=0 ANDVw%=0)):PROCar(FNction_TagToString("rest"),128,-1, NOTTRUE):bc=Ur+al:PROCaj("Morph",128,44)
7040PROCar(FNction_TagToString("misc"),0,bb, NOTTRUE):PROCar(FNction_TagToString("save"),0,Yl, NOTTRUE):PROCar(FNction_TagToString("slct"),0,bZ, NOTTRUE):PROCar(FNction_TagToString("edit"),0,ba, NOTTRUE):PROCar(FNction_TagToString("zoom"),128,YX, NOTTRUE):SYS&400D4,,bc,Xk-64,Xl:ENDPROC
7130DEFPROCYw(Xk,Xl):PROCbV("file_3e1"):PROCWi(Uj,Yl,0,Wb$):PROCWi(Uj,YX,2,STR$bd):PROCWi(Uj,YX,4,STR$be):PROCbY(WW):VZ=6:al=0:au=Ur+1*1024:av=0:bZ=Ur+al:PROCaj("Select",128,44):PROCar(FNction_TagToString("delt"),0,-1,WV=0 ORWX):PROCar(FNction_TagToString("colr"),128,Us,(NOTWX) ORWV=0):ba=Ur+al
7280PROCaj("Edit",304,44):PROCar(FNction_TagToString("bgrd"),0,-1, NOTTRUE):PROCar(FNction_TagToString("colc"),0,-1, NOTTRUE):PROCar(FNction_TagToString("movc"),2,-1, NOTTRUE):PROCar(FNction_TagToString("rsrc"),0,-1, NOTVj):PROCar(FNction_TagToString("rdst"),0,-1, NOTVn)
7340PROCar(FNction_TagToString("rbck"),128,-1, NOTVr):bb=Ur+al:PROCaj("Misc",224,44):PROCar(FNction_TagToString("acpt"),0,-1,WX):PROCar(FNction_TagToString("cntr"),2,-1,(Vx%=0 ANDVy%=0)):PROCar(FNction_TagToString("rest"),128,-1, NOTTRUE):bc=Ur+al:PROCaj("Morph",128,44)
7420PROCar(FNction_TagToString("misc"),0,bb, NOTTRUE):PROCar(FNction_TagToString("save"),0,Yl, NOTTRUE):PROCar(FNction_TagToString("slct"),0,bZ, NOTTRUE):PROCar(FNction_TagToString("edit"),0,ba, NOTTRUE):PROCar(FNction_TagToString("zoom"),128,YX, NOTTRUE):SYS&400D4,,bc,Xk-64,Xl:ENDPROC
7510DEFPROCYx(Xk,Xl):VZ=8:al=0:au=Ur+1*1024:av=0:bf=Ur+al:PROCaj(FNction_TagToString("upper"),128,44):PROCar(FNction_TagToString("left"),0,-1, NOTVr):PROCar(FNction_TagToString("middle"),0,-1, NOTVr):PROCar(FNction_TagToString("right"),128,-1, NOTVr):bg=Ur+al
7620PROCaj(FNction_TagToString("middle"),128,44):PROCar(FNction_TagToString("left"),0,-1, NOTVr):PROCar(FNction_TagToString("middle"),0,-1, NOTVr):PROCar(FNction_TagToString("right"),128,-1, NOTVr):bh=Ur+al:PROCaj(FNction_TagToString("lower"),128,44)
7680PROCar(FNction_TagToString("left"),0,-1, NOTVr):PROCar(FNction_TagToString("middle"),0,-1, NOTVr):PROCar(FNction_TagToString("right"),128,-1, NOTVr):bc=Ur+al:PROCaj("Align",128,44):PROCar(FNction_TagToString("upper"),0,bf, NOTVr):PROCar(FNction_TagToString("middle"),0,bg, NOTVr)
7750PROCar(FNction_TagToString("lower"),128,bh, NOTVr):SYS&400D4,,bc,Xk-64,Xl:ENDPROC
7800DEFPROCYc:VZ=7:PROCbY(FNction_ColourOfIcon(Uj,Wz,19)):!Uj=Wz:SYS&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:SYS&400D4,,Us,Zl+448+52,Zo+268-Uj!24:ENDPROC
7890DEFPROCbY(bi):PROCbj("Colour",96,44):PROCbk(ABS(bi=&0),-1,&07000011," 0"):PROCbk(ABS(bi=&1),-1,&17000011," 1"):PROCbk(ABS(bi=&2),-1,&27000011," 2"):PROCbk(ABS(bi=&3),-1,&37000011," 3"):PROCbk(ABS(bi=&4),-1,&40000011," 4"):PROCbk(ABS(bi=&5),-1,&50000011," 5")
7970PROCbk(ABS(bi=&6),-1,&60000011," 6"):PROCbk(ABS(bi=&7),-1,&70000011," 7"):PROCbk(ABS(bi=&8),-1,&80000011," 8"):PROCbk(ABS(bi=&9),-1,&97000011," 9"):PROCbk(ABS(bi=&A),-1,&A0000011," A"):PROCbk(ABS(bi=&B),-1,&B0000011," B"):PROCbk(ABS(bi=&C),-1,&C7000011," C")
8040PROCbk(ABS(bi=&D),-1,&D0000011," D"):PROCbk(ABS(bi=&E),-1,&E7000011," E"):PROCbk(ABS(bi=&F)+128,-1,&F7000011," F"):ENDPROC
8100DEFPROCbj(ak$,aa,ab):bl=0:$(Us+bl)=ak$+CHR$0:?(Us+bl+12)=7:?(Us+bl+13)=2:?(Us+bl+14)=7:?(Us+bl+15)=0:!(Us+bl+16)=aa:!(Us+bl+20)=ab:!(Us+bl+24)=0:bl+=28:ENDPROC
8240DEFPROCbk(ao,ap,bm,bn$):?(Us+bl+0)=ao:?(Us+bl+1)=0:?(Us+bl+2)=0:?(Us+bl+3)=0:!(Us+bl+4)=ap:!(Us+bl+8)=bm:$(Us+bl+12)=bn$+CHR$0:bl+=24:ENDPROC
8360DEFPROCXY(Xj):bo=Xj!0:bp=Xj!4:bq=Xj!8:CASEVZ OF
8410WHEN1:CASEbo OF
8420WHEN1:PROCXs(Uj,Wx):PROCWy(Uj,Wx,Wz)
8440WHEN2:IF NOTWY THEN
8450VV=TRUE
8460ELSE:Yi$=FNction_TagToString("err12"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE):VV= NOT(Yj=1)
8500ENDIF
8510ENDCASE
8520WHEN2:PROCWf(bo+1):!ax=bo+1
8540WHEN3:PROCWg(bo+1)
8550WHEN4:br$=FNction_TagToString("auto"+RIGHT$("00"+STR$(bo+1),2)):PROCWi(Uj,Wz,11,br$):PROCWi(Uj,Wz,8,br$)
8590WHEN5:CASEbo OF
8600WHEN0:CASEbp OF
8610WHEN0:PROCbs(TRUE)
8620WHEN1:Vv%=0:!bt=0:Vw%=0:!bu=0:PROCYr(Uj,Xw)
8640WHEN2:PROCbv
8650ENDCASE
8660WHEN2:CASEbp OF
8670WHEN0:PROCZc
8680WHEN1:PROCbw(bq)
8690ENDCASE
8700WHEN3:CASEbp OF
8710WHEN0:PROCXs(Uj,Yn)
8720WHEN1:PROCWw(Uh,Uj,Yq, NOTTRUE)
8730WHEN2:PROCWw(Uh,Uj,Yt, NOTTRUE)
8740WHEN3:PROCbx("Source")
8750WHEN4:PROCbx("Dest")
8760WHEN5:PROCbx("Back")
8770ENDCASE
8780ENDCASE
8800WHEN6:CASEbo OF
8810WHEN0:CASEbp OF
8820WHEN0:PROCbs(TRUE)
8830WHEN1:Vx%=0:!by=0:Vy%=0:!bz=0:PROCYr(Uj,Xz)
8850WHEN2:PROCbv
8860ENDCASE
8870WHEN2:CASEbp OF
8880WHEN0:PROCZc
8890WHEN1:PROCbw(bq)
8900ENDCASE
8910WHEN3:CASEbp OF
8920WHEN0:PROCXs(Uj,Yn)
8930WHEN1:PROCWw(Uh,Uj,Yq, NOTTRUE)
8940WHEN2:PROCWw(Uh,Uj,Yt, NOTTRUE)
8950WHEN3:PROCbx("Source")
8960WHEN4:PROCbx("Dest")
8970WHEN5:PROCbx("Back")
8980ENDCASE
8990ENDCASE
9010WHEN7:PROCcU(Uj,Wz,19,bo)
9030WHEN8:CASEbo OF
9050WHEN0:CASEbp OF
9060WHEN0:PROCcV("T","L")
9070WHEN1:PROCcV("T","M")
9080WHEN2:PROCcV("T","R")
9090ENDCASE
9110WHEN1:CASEbp OF
9120WHEN0:PROCcV("M","L")
9130WHEN1:PROCcV("M","M")
9140WHEN2:PROCcV("M","R")
9150ENDCASE
9170WHEN2:CASEbp OF
9180WHEN0:PROCcV("B","L")
9190WHEN1:PROCcV("B","M")
9200WHEN2:PROCcV("B","R")
9210ENDCASE
9230ENDCASE
9250ENDCASE:SYS&400CF,,Xj:Xk=Xj!0:Xl=Xj!4:Xm=Xj!8:IFXm=Ua THEN
9310CASEVZ OF
9320WHEN1:PROCYu(Xk)
9330WHEN2:PROCYU
9340WHEN3:PROCYV
9350WHEN4:PROCYb
9360WHEN5:IFVj THENPROCYv(Xk,Xl)
9370WHEN6:IFVn THENPROCYw(Xk,Xl)
9380WHEN7:PROCYc
9390WHEN8:PROCYx(Xk,Xl)
9400ENDCASE
9410ELSE:IFVZ<>1 THEN
9430SYS&400D4,,-1:VZ=0
9450ENDIF
9460ENDIF:ENDPROC
9500DEFPROCZg(Xj):cW=Xj!40:Zz$=FNction_ExtractString(Xj+44):aV=Xj!4:Xj!16=4:Xj!12=Xj!8:SYS&400E7,17,Xj,aV:IFcW<>Ue ANDcW<>Uf THEN
9580Yi$=FNction_TagToString("err01"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
9600ELSE:CASEcW OF
9620WHENUe:PROCcX(Zz$)
9630WHENUf:PROCcY(Zz$)
9640ENDCASE
9650ENDIF:ENDPROC
9690DEFFNction_FileExists(Zz$):SYS&20008,13,Zz$ TOcZ:=(cZ<>0)
9740DEFFNction_SizeOfFile(Zz$):LOCALca:SYS&8,17,Zz$ TOcZ,cb,cc,cd,ce,cf:ca=ce:=ca
9810DEFFNction_TypeOfFile(Zz$):LOCALca:SYS&8,17,Zz$ TOcZ,cb,cc,cd,ce,cf:cg=((cc>>8) AND&FFF):=cg
9880DEFPROCZj(Xj):ch$="":aV=Xj!4:ci=Xj!32:bm=Xj!36:CASEci OF
9940WHENUb:IFbm=Vh THEN
9950IFWY ANDWr THEN
9960ch$="spin"
9970ELSE:ch$="icon"
9990ENDIF
10000ENDIF
10010WHENYq:IFbm=0 THENch$="colw00"ELSEch$="colw"
10020WHENYt:IFbm=0 THENch$="movw00"ELSEch$="movw"
10030WHENXw:ch$="sour"
10040WHENXz:ch$="dstn"
10050WHENYn:ch$="back"
10060WHENXt:CASEbm OF
10070WHEN1:ch$="prog01"
10080WHEN2:ch$="prog02"
10090WHEN3:ch$="prog03"
10100ENDCASE
10110WHENWj:CASEbm OF
10120WHEN0:ch$="main00"
10130WHEN2:ch$="main02"
10140WHEN4:ch$="main04"
10150WHEN6:ch$="main06"
10160WHEN7:ch$="main07"
10170WHEN8:ch$="main08"
10180WHEN9:ch$="main09"
10190OTHERWISE:ch$="main"
10210ENDCASE
10220WHENWx:CASEbm OF
10230WHEN0:ch$="pman00"
10240WHEN1:ch$="pman01"
10250WHEN2:ch$="pman02"
10260OTHERWISE:ch$="pref"
10280ENDCASE
10290WHENWz:CASEbm OF
10300WHEN3:ch$="ppne03"
10310WHEN4:ch$="ppne04"
10320WHEN5:ch$="ppne05"
10330WHEN7:ch$="ppne07"
10340WHEN8:ch$="ppne08"
10350WHEN9:ch$="ppne09"
10360WHEN11:ch$="ppne11"
10370WHEN12:ch$="ppne12"
10380WHEN13:ch$="ppne13"
10390WHEN14:ch$="ppne14"
10400WHEN19:ch$="ppne19"
10410OTHERWISE:ch$="pref"
10430ENDCASE
10440ENDCASE:IFch$<>"" THEN
10460cj$=FNction_TagToString(ch$):Xj!0=20+((LEN(cj$) DIV4)*4)+4:Xj!12=Xj!8:Xj!16=&503:$(Xj+20)=cj$+CHR$0:SYS&400E7,17,Xj,aV
10520ENDIF:ENDPROC
10560DEFPROCWf(ck):aw$=FNction_TagToString("qual"+RIGHT$("00"+STR$ck,2)):PROCWi(Uj,Wj,4,aw$):ENDPROC
10620DEFPROCWg(ck):az$=FNction_TagToString("frms"+RIGHT$("00"+STR$ck,2)):PROCWi(Uj,Wj,6,az$):ENDPROC
10680DEFPROCZV(ci,cl,cm):cn=ci:co=cl+1:cp=cm+0:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:SYS&400C8,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:SYS&400D0,,Uj:ENDPROC
10860DEFPROCWp:SYS&400CF,,Uj:cl=Uj!0:cm=Uj!4:cu=Uj!8:ci=cn:IFcu=1 THEN
10910IFcl<>co ORcm<>cp THEN
10920CASEci OF
10930WHENXw:cv=bW/bX
10940WHENXz:cv=bd/be
10950WHENYn:cv=1/1
10960ENDCASE:PROCcw(ci,(cl-co)/cv,(cm-cp)/cv):co=cl:cp=cm
11000ENDIF
11010ELSE:Va=0
11030ENDIF:ENDPROC
11070DEFPROCcw(ci,cx,cy):CASEci OF
11100WHENXw:Vv%+=((cx>>cz)/dU):Vw%+=((cy>>dV)/dW):!bt+=((cx>>cz)/dU):!bu+=((cy>>dV)/dW):PROCYr(Uj,ci)
11160WHENXz:Vx%+=((cx>>cz)/dX):Vy%+=((cy>>dV)/dY):!by+=((cx>>cz)/dX):!bz+=((cy>>dV)/dY):PROCYr(Uj,ci)
11220WHENYn:IFVr THEN
11230Vz%+=((cx>>cz)/dZ):WU%+=((cy>>dV)/da):!db+=((cx>>cz)/dZ):!dc+=((cy>>dV)/da):PROCYy(cl,cm)
11280ENDIF
11300ENDCASE:ENDPROC
11340DEFPROCdd(ci,cl,cm):CASEci OF
11360WHENXw:de=bW/bX:df=dU:dg=dW
11390WHENXz:de=bd/be:df=dX:dg=dY
11420ENDCASE:PROCdh(Uj,ci,cl,cm):di%=(dj>>(df*cz) ) / de:dk%=(dl>>(dg*dV) ) / de:ENDPROC
11490DEFPROCYz(ci,cl,cm):dm=ci:dn=cl:do=cm:co=cl:cp=cm:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:SYS&400CC,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:SYS&400D0,,Uj:IFWX THENPROCdpELSEPROCdq
11650ENDPROC
11680DEFPROCdp:dr=Uj:!dr=dm:SYS&400CC,,dr:dr!(0+4)=dr!(40+4):dr!(4+4)=dr!(44+4):dr!(8+4)=dr!(48+4):dr!(12+4)=dr!(52+4):SYS&400C9,,dr TOds:WHILEds:SYS&400E6,48+14:RECTANGLEFILLco-4,cp-4,8,8:SYS&400CA,,dr TOds:ENDWHILE:ENDPROC
11830DEFPROCdq:dr=Uj:!dr=dm:SYS&400CC,,dr:dr!(0+4)=dr!(40+4):dr!(4+4)=dr!(44+4):dr!(8+4)=dr!(48+4):dr!(12+4)=dr!(52+4):SYS&400C9,,dr TOds:WHILEds:SYS&400E6,48+14:LINEdn,do,co,cp:SYS&400CA,,dr TOds:ENDWHILE:ENDPROC
11980DEFPROCWq:SYS&400CF,,Uj:cl=Uj!0:cm=Uj!4:cu=Uj!8:ci=Uj!12:IFcu=4 ORcu=1 THEN
12030IFcl<>co ORcm<>cp THEN
12040IFWX THENPROCdpELSEPROCdq
12050co=cl:cp=cm:IFWX THENPROCdpELSEPROCdq
12080ENDIF
12090ELSE:Va=0
12110ENDIF:ENDPROC
12150DEFPROCZw:IFWX THENPROCdpELSEPROCdq
12170SYS&400CF,,Uj:ci=Uj!12:PROCdd(ci,dn,do):dt=ABS(cp-do):du=ABS(co-dn):IFdu>dt THEN
12230IF NOTFNction_GuideExists(dv,dk%) THEN
12240dw=FNction_Insert_HorV(dv,dk%):PROCdx(Xw,dw,dv):PROCdx(Xz,dw,dv)
12270ENDIF
12280ELSE:IF NOTFNction_GuideExists(dy,di%) THEN
12300dw=FNction_Insert_HorV(dy,di%):PROCdx(Xw,dw,dy):PROCdx(Xz,dw,dy)
12330ENDIF
12340ENDIF:ENDPROC
12380DEFFNction_Insert_HorV(dz,eU%):i=0:eV= NOTTRUE:WHILEi<=255 AND NOTeV:eW%=(dz!(i*4) AND&7FFFFFFF):IFeW%=0 THEN
12440eV=TRUE
12450ELSE:i+=1
12470ENDIF:ENDWHILE:IFi>255 THEN
12500Yi$=FNction_TagToString("err04"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
12520ELSE:dz!(i*4) = eU% + 1
12540ENDIF:=i
12580DEFFNction_GuideExists(dz,eU%):i=0:eV= NOTTRUE:WHILEi<=255 AND NOTeV:eW%=(dz!(i*4) AND&7FFFFFFF)-1:IFeW%=eU% THEN
12640eV=TRUE
12650ELSE:i+=1
12670ENDIF:ENDWHILE:=eV
12720DEFPROCYZ(ci,cl,cm,eX):IFeX THEN
12740eY=USReZ:ea=USReb:IFeY>0 THEN
12770IFeY>1 THEN
12780PROCYr(Uj,Xw):PROCYr(Uj,Xz)
12800ELSE:PROCdx(Xw,!ec,dv):PROCdx(Xz,!ec,dv)
12830ENDIF
12840ENDIF:IFea>0 THEN
12860IFea>1 THEN
12870PROCYr(Uj,Xw):PROCYr(Uj,Xz)
12890ELSE:PROCdx(Xw,!ed,dy):PROCdx(Xz,!ed,dy)
12920ENDIF
12930ENDIF:WV=0
12950ENDIF:PROCdd(ci,cl,cm):ee=FNction_ClosestGuide(dv,dk%):ef=FNction_ClosestGuide(dy,di%):IFee<>-1 THENPROCeg(dv,ee, NOTeX)
13000IFef<>-1 THENPROCeg(dy,ef, NOTeX)
13010ENDPROC
13040DEFFNction_ClosestGuide(dz,eU):i=0:eh=-1:ei=8:WHILEi<=255:eW%=(dz!(i*4) AND&7FFFFFFF)-1:ej=ABS(eW%-eU):IFej<ei ANDeW%<>-1 THEN
13120eh=i:ei=ej
13140ENDIF:i+=1:ENDWHILE:=eh
13200DEFPROCeg(dz,ck,ek):eW%=dz!(ck*4):el%=(eW% AND&80000000):eW%-=el%:em%=&80000000:IFek THEN
13260em%=el% EOR&80000000
13270ENDIF:IFem%<>0 THENWV+=1ELSEWV-=1
13290dz!(ck*4) = eW% + em%:IFFNction_WindowIsOpen(Uj,Xw) THENPROCdx(Xw,ck,dz)
13310IFFNction_WindowIsOpen(Uj,Xz) THENPROCdx(Xz,ck,dz)
13320ENDPROC
13350DEFPROCdx(ci,ck,dz):IFFNction_WindowIsOpen(Uj,ci) THEN
13370CASEci OF
13380WHENXw:en=dW* dV:de=bW/bX:a=dU
13410WHENXz:en=dY* dV:de=bd/be:a=dX
13440ENDCASE:!Uj=ci:SYS&400CC,,Uj:Zl=Uj!4:Zn=Uj!16:Zo=Uj!8:Zp=Uj!20:Zq=Uj!24:Zm=Uj!12:eo=Zl-Zp:ep=Zn-Zq:eU=dz!(ck*4):CASEdz OF
13540WHENdv:eq=Zl:er=Zm:es=ep+((eU<<en)* de ) - 24:et=es+48
13580WHENdy:es=Zo:et=Zn:eq=eo+((eU<<(cz*a)) * de ) - 24:er=eq+48
13630ENDCASE:SYS&400D1,-1,eq,es,er,et
13650ENDIF:ENDPROC
13690DEFPROCZc:eu=USRev:WV=0:IFeu>0 THEN
13730IFeu=1 THEN
13740!(!ew+(!ex*4) ) = !ey:PROCdx(Xw,!ex,!ew):PROCdx(Xz,!ex,!ew):!(!ew+(!ex*4) ) = 0
13780ELSE:IFFNction_WindowIsOpen(Uj,Xw) THENPROCYr(Uj,Xw)
13800IFFNction_WindowIsOpen(Uj,Xz) THENPROCYr(Uj,Xz)
13810ENDIF
13820ENDIF:ENDPROC
13860DEFPROCbs(ez):fU=!fV:fW=!fX:IFez THEN
13900Yj=FNction_Insert_HorV(dv,0):Yj=FNction_Insert_HorV(dv,fW-1):Yj=FNction_Insert_HorV(dy,0):Yj=FNction_Insert_HorV(dy,fU-1)
13940ENDIF:A%=dv:fY%=USRfZ:A%=dy:fa%=USRfZ:A%=dv:CALLfb:A%=dy:CALLfb:PROCfc:CALLfd:FORy=0 TOfY%-1:FORx=0 TOfa%-1:B%=((dv!(y*4)) AND&7FFFFFFF)-1:A%=((dy!(x*4)) AND&7FFFFFFF)-1:C%=WW:CALLfe:NEXTx:NEXTy:WX=TRUE:IFFNction_WindowIsOpen(Uj,Xw) THENPROCYr(Uj,Xw)
14110IFFNction_WindowIsOpen(Uj,Xz) THENPROCYr(Uj,Xz)
14120ENDPROC
14150DEFPROCfc:FORi=0 TOfY%-1:FORj=0 TOfY%-1:A%=dv!(j*4+0) :ff=(A% AND&7FFFFFFF):B%=dv!(j*4+4) :fg=(B% AND&7FFFFFFF):IFff<fg THENSWAPA%,B%
14220dv!(j*4+0) = A%:dv!(j*4+4) = B%:NEXTj:NEXTi:FORi=fa%-2 TO0STEP-1:FORj=fa%-2 TO0STEP-1:A%=dy!(j*4+0) :ff=(A% AND&7FFFFFFF):B%=dy!(j*4+4) :fg=(B% AND&7FFFFFFF):IFff>fg THENSWAPA%,B%
14320dy!(j*4+0) = A%:dy!(j*4+4) = B%:NEXTj:NEXTi:ENDPROC
14390DEFPROCYa(ci,cl,cm,ek,eX):IFeX THEN
14420fh=USRfi:WV=0:IFfh>0 THEN
14450IFfh=1 THEN
14460PROCfj(Xw,!fk):PROCfj(Xz,!fk)
14480ELSE:PROCYr(Uj,Xw):PROCYr(Uj,Xz)
14510ENDIF
14520ENDIF
14530ENDIF:PROCdd(ci,cl,cm):A%=di%:B%=dk%:CASEci OF
14610WHENXw:C%=0
14620WHENXz:C%=8
14630ENDCASE:fl=USRfm:IFfl<>-1 THEN
14670A%=fn!(fl*24+16):IFek THENA%=(A% EOR2)ELSEA%=(A% OR2)
14690IF(A% AND2)<>0 THENWV+=1ELSEWV-=1
14700fn!(fl*24+16) = A%:PROCfj(Xw,fl):PROCfj(Xz,fl)
14730ENDIF:ENDPROC
14780DEFPROCfj(ci,fl):IFFNction_WindowIsOpen(Uj,ci) THEN
14800CASEci OF
14810WHENXw:en=dW* dV:de=bW/bX:fo=0:a=dU
14850WHENXz:en=dY* dV:de=bd/be:fo=8:a=dX
14890ENDCASE:!Uj=ci:SYS&400CC,,Uj:Zl=Uj!4:Zn=Uj!16:Zo=Uj!8:Zp=Uj!20:Zq=Uj!24:Zm=Uj!12:eo=Zl-Zp:ep=Zn-Zq:fp=fn!(fl*24+fo ):fq=fn!(fl*24+fo+4):eq=eo+((fp<<(cz*a)) * de ) - 8:es=ep+((fq<<en)* de ) - 8:er=eq+16:et=es+16:SYS&400D1,-1,eq,es,er,et
15040ENDIF:ENDPROC
15080DEFPROCZU(ci,cl,cm):dm=ci:dn=cl:do=cm:co=cl:cp=cm:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:SYS&400CC,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:SYS&400D0,,Uj:IFWX THENPROCdpELSEPROCdq
15240ENDPROC
15270DEFPROCZx:IFWX THENPROCdpELSEPROCdq
15290PROCdd(dm,dn,do):fr=di%:fs=dk%:PROCdd(dm,co,cp):ft=di%:fu=dk%:A%=ft-fr:B%=fu-fs:CASEdm OF
15360WHENXw:C%=0
15370WHENXz:C%=8
15380ENDCASE:!fv=fY%:!fw=fa%:CALLfx:PROCYr(Uj,Xw):PROCYr(Uj,Xz):ENDPROC
15470DEFPROCbw(fy):WW=fy:A%=fy:fz=USRgU:IFfz>0 THEN
15520PROCYr(Uj,Xw):PROCYr(Uj,Xz)
15540ENDIF:ENDPROC
15580DEFPROCYW:IF NOTVj THEN
15600Yi$=FNction_TagToString("err06"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
15620ELSE:IF NOTVn THEN
15640Yi$=FNction_TagToString("err07"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
15660ELSE:IF NOTWX THEN
15680Yi$=FNction_TagToString("err05"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
15700ELSE:gV$=FNction_TagToString("war01"):gW$=FNction_ReadIconText(Uj,Wj,4):gX$=FNction_TagToString("war02"):Yj=FNction_ReportError(Uj,99,Uc$,gV$+gW$+gX$,TRUE,TRUE):IFYj=1 THEN
15760PROCbV("directory"):PROCWi(Uj,Yl,0,Wc$):SYS&400CF,,Uj:SYS&400D4,,Yl,Uj!0,Uj!4
15800ENDIF
15810ENDIF
15820ENDIF
15830ENDIF:ENDPROC
15870DEFPROCbV(gY$):IFWa<>-1 THEN
15890Uj!0=Yl:Uj!4=Wa:SYS&400C4,,Uj
15920ENDIF:!Uj=Yl:Uj!(4+0)=116:Uj!(4+4)=-94:Uj!(4+8)=116+76:Uj!(4+12)=-94+72:Uj!(4+16)=&601A:$(Uj+4+20)=gY$:SYS&400C2,,Uj TOWa:ENDPROC
16020DEFPROCcV(gZ$,ga$):CASEgZ$ OF
16040WHEN"T":WU%=!gb-!fX
16050WHEN"M":WU%=(!gb/2)-(!fX/2)
16060WHEN"B":WU%=0
16070ENDCASE:CASEga$ OF
16090WHEN"L":Vz%=0
16100WHEN"M":Vz%=(!gc/2)-(!fV/2)
16110WHEN"R":Vz%=!gc-!fV
16120ENDCASE:!db=Vz%:!dc=WU%:PROCYr(Uj,Yn):ENDPROC
16190DEFPROCaZ(Zz$):Wb$=Zz$:LOCALERROR:gd=-1:ONERRORLOCALPROCge:ENDPROC
16230gd=OPENOUTZz$:BPUT#gd,ASC"D":BPUT#gd,ASC"A":BPUT#gd,ASC"T":BPUT#gd,ASC"A":PRINT#gd,WX:PRINT#gd,WV:IFWX THEN
16310PRINT#gd,!gf:PRINT#gd,fY%:PRINT#gd,fa%:FORi=0 TO!gf-1:PRINT#gd,fn!(i*24+0):PRINT#gd,fn!(i*24+4):PRINT#gd,fn!(i*24+8):PRINT#gd,fn!(i*24+12):PRINT#gd,fn!(i*24+16):PRINT#gd,fn!(i*24+20):NEXTi
16420ELSE:A%=dv:fY%=USRfZ:A%=dy:fa%=USRfZ:A%=dv:CALLfb:A%=dy:CALLfb:PRINT#gd,fY%:PRINT#gd,fa%:FORi=0 TOfY%-1:PRINT#gd,dv!(i*4):NEXTi:FORi=0 TOfa%-1:PRINT#gd,dy!(i*4):NEXTi
16550ENDIF:FORi=0 TO10:BPUT#gd,Ux?i:BPUT#gd,Uz?i:NEXTi:CLOSE#gd:OSCLI"SetType "+Zz$+" Morph":RESTOREERROR:ENDPROC
16660DEFPROCcY(Zz$):LOCALERROR:gd=-1:ONERRORLOCALPROCge:ENDPROC
16690gd=OPENINZz$:gg=BGET#gd:gh=BGET#gd:gi=BGET#gd:gj=BGET#gd:IFgg=ASC"D" ANDgh=ASC"A" ANDgi=ASC"T" ANDgj=ASC"A" THEN
16730INPUT#gd,WX:INPUT#gd,WV:IFWX THEN
16760INPUT#gd,!gf:INPUT#gd,fY%:INPUT#gd,fa%:FORi=0 TO!gf-1:INPUT#gd,fn!(i*24+0):INPUT#gd,fn!(i*24+4):INPUT#gd,fn!(i*24+8):INPUT#gd,fn!(i*24+12):INPUT#gd,fn!(i*24+16):INPUT#gd,fn!(i*24+20):NEXTi
16870ELSE:INPUT#gd,fY%:INPUT#gd,fa%:FORi=0 TOfY%-1:INPUT#gd,dv!(i*4):NEXTi:FORi=0 TOfa%-1:INPUT#gd,dy!(i*4):NEXTi
16960ENDIF:FORi=0 TO10:Ux?i=BGET#gd:Uz?i=BGET#gd:NEXTi
17010ELSE:Yi$=FNction_TagToString("err01"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
17040ENDIF:CLOSE#gd:RESTOREERROR:IFFNction_WindowIsOpen(Uj,Xw) THENPROCYr(Uj,Xw)
17080IFFNction_WindowIsOpen(Uj,Xz) THENPROCYr(Uj,Xz)
17090IFFNction_WindowIsOpen(Uj,Yq) THENPROCYr(Uj,Yq)
17100IFFNction_WindowIsOpen(Uj,Yt) THENPROCYr(Uj,Yt)
17110ENDPROC
17140DEFPROCge:Yi$=FNction_TagToString("err13"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$+REPORT$+" ("+STR$ERL+")", NOTTRUE,TRUE):IFgd<>-1 THENCLOSE#gd:gd=-1
17180ENDPROC
17210DEFPROCYm(gk):Zz$=FNction_ReadIconText(Uj,Yl,0):gl$=FNction_ReadIconText(Uj,Yl,Wa):IFINSTR(Zz$,".")=0 THEN
17250Yi$=FNction_TagToString("err14"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
17270ELSE:CASEgl$ OF
17290WHEN"directory":PROCaY(Zz$):IF NOTgk THENVZ=0:SYS&400D4,,-1
17310OTHERWISE:PROCaZ(Zz$):IF NOTgk THENVZ=0:SYS&400D4,,-1
17340ENDCASE
17350ENDIF:ENDPROC
17390DEFPROCWu:SYS&90141 TOcZ:IFcZ=-1 THEN
17440SYS&90142 TOcZ:Zz$=FNction_ExtractString(cZ):IFVj THEN
17480IFZz$=FNction_RemoveFSPrefix(Xv$) THEN
17490PROCgm(Xv$):IFFNction_WindowIsOpen(Uj,Yn) THENPROCYr(Uj,Yn)
17510ENDIF
17520ENDIF:IFVn THEN
17550IFZz$=FNction_RemoveFSPrefix(Xy$) THEN
17560PROCgn(Xy$)
17570ENDIF
17580ENDIF:IFVr THEN
17610IFZz$=FNction_RemoveFSPrefix(Yp$) THEN
17620PROCgo(Yp$):IFVj THENPROCYr(Uj,Yn)
17640ENDIF
17650ENDIF
17670ENDIF:ENDPROC
17720DEFFNction_RemoveFSPrefix(gp$):gq= NOTTRUE:REPEAT:gr$=LEFT$(gp$,1):gq=gr$=":":gp$=MID$(gp$,2,LENgp$-1):UNTILgq:=gp$
17820DEFFNction_LaunchObject(gs$,gt):gu=gt:LOCALERROR:ONERRORLOCALPROCgv:= NOTTRUE
17860IF NOTgt THEN
17870Yi$=FNction_TagToString("err16"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
17890ENDIF:IFgt THENOSCLI"Filer_Run "+gs$
17910RESTOREERROR:=gu
17950DEFPROCgv:gu= NOTTRUE:Yi$=FNction_TagToString("err15"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE):ENDPROC
18020DEFPROCbv:Yi$=FNction_TagToString("err17"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE):IFYj=1 THEN
18060WV=0:WX= NOTTRUE:PROCWl:PROCYr(Uj,Xw):PROCYr(Uj,Xz)
18110ENDIF:ENDPROC
18150DEFPROCYe(gw$):PROCgx(Uj,Wz,3,gw$="All"):PROCgx(Uj,Wz,7,gw$<>"All"):PROCgy(Uj,Wz,13,gw$="All"):PROCgy(Uj,Wz,14,gw$="All"):IFFNction_WindowWithCaret(Uj)=Wz ANDgw$="All" THEN
18210PROCZb
18220ENDIF:ENDPROC
18260DEFPROCUy(gz):FORi=0 TO10:gz?i=i* 10:NEXTi:ENDPROC
18330DEFPROCZv(gz):SYS&400E6,7:MOVEZl,Zo:FORi=0 TO10:eU=gz?i:DRAWZl+(i*10)*4,Zo+eU*2:NEXTi:SYS&400E6,10:FORi=0 TO10:eU=gz?i:CIRCLEFILLZl+(i*10)*4,Zo+eU*2,6:NEXTi:ENDPROC
18480DEFPROCYs(ci,cl,cm,gz):PROCdh(Uj,ci,cl,cm):hU%=(hV%/400)* 100:hW%=((-hX%)/202)* 100:IFhU% MOD10<2 ORhU% MOD10>8 THEN
18530hU%=(hU%+1) DIV10:hY=gz?hU%:hZ=100-hW%:IFhZ<>hY ANDhU%>0 ANDhU%<10 THEN
18570gz?hU%=100-hW%:IFgz?hU%<0 THENgz?hU%=0
18590IFgz?hU%>100 THENgz?hU%=100
18600PROCYr(Uj,ci)
18610ENDIF
18620ENDIF:ENDPROC
18660DEFFNction_GetPercentage(ha,gz):IFha=100 THEN=100
18680hb=ha DIV10:hc=gz?hb:hd=hb+1:he=gz?hd:hf=(ha MOD10)/10:hg=hc* (1-hf):hh=he* hf:=(hg+hh)/100
18760DEFPROCUW:Yi$="Fatal Error : "+REPORT$+" ("+STR$ERL+")":IFWY THENYi$+=FNction_TagToString("err20")
18790Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE, NOTTRUE):IFWY THENPROCYk
18810ENDPROC
18870DEFPROCWn:PROCXs(Uj,Xo):PROChi(Uj,Xo):VDU7:ENDPROC
18940DEFPROCXp:PROCXs(Uj,Xq):PROChi(Uj,Xq):VDU7:ENDPROC
19110DEFPROCVe:hj=13:hk=14:hl=15:DIMhm 37*1024:FORhn=0 TO2STEP2:P%=hm:[OPT hn:.dv FNction_ReserveMemory(256 *4):.dy FNction_ReserveMemory(256 *4):.ho LDR r3,[r0],#4:STR r3,[r1],#4:SUBS r2,r2,#4:BNE ho:MOV PC,hk:.fZ STMFD (hj)!,{hk}:MOV r1,#256:MOV r2,#0
19640.hp LDR r3,[r0],#4:CMP r3,#0:ADDNE r2,r2,#1:SUBS r1,r1,#1:BNE hp:MOV r0,r2:LDMFD (hj)!,{PC}:.fb STMFD (hj)!,{hk}:MOV r1,r0:MOV r2,#256:.hq LDR r3,[r1],#4:STR r3,[r0]:CMP r3,#0:ADDNE r0,r0,#4:SUBS r2,r2,#1:BNE hq:LDMFD (hj)!,{PC}:.eZ STMFD (hj)!,{hk}
19990LDR r0,hr:MOV r2,#0:MOV r5,#0:.hs LDR r3,[r0]:MOVS r4,r3,LSR #31:STRNE r2,ec:ADDNE r5,r5,#1:MOV r3,r3,LSL #1:MOV r3,r3,LSR #1:STR r3,[r0],#4:ADD r2,r2,#1:CMP r2,#256:BNE hs:MOV r0,r5:LDMFD (hj)!,{PC}:.eb STMFD (hj)!,{hk}:LDR r0,ht:MOV r2,#0:MOV r5,#0
20200.hu LDR r3,[r0]:MOVS r4,r3,LSR #31:STRNE r2,ed:ADDNE r5,r5,#1:MOV r3,r3,LSL #1:MOV r3,r3,LSR #1:STR r3,[r0],#4:ADD r2,r2,#1:CMP r2,#256:BNE hu:MOV r0,r5:LDMFD (hj)!,{PC}:.hr DCD dv:.ht DCD dy:.ec DCD 0:.ed DCD 0:.ev STMFD (hj)!,{hk}:LDR r0,hv
20490LDR r1,hw:MOV r2,#0:MOV r6,#0:.hx LDR r3,[r0,r2,ASL #2]:LDR r4,[r1,r2,ASL #2]:MOVS r5,r3,LSR #31:STRNE r3,ey:ADDNE r6,r6,#1:STRNE r2,ex:MOVNE r7,r0:MOVNE r3,#0:MOVS r5,r4,LSR #31:STRNE r4,ey:ADDNE r6,r6,#1:STRNE r2,ex:MOVNE r7,r1:MOVNE r4,#0
20660STR r3,[r0,r2,ASL #2]:STR r4,[r1,r2,ASL #2]:ADD r2,r2,#1:CMP r2,#256:BNE hx:STR r7,ew:MOV r0,r6:LDMFD (hj)!,{PC}:.hv DCD dv:.hw DCD dy:.ex DCD 0:.ew DCD 0:.ey DCD 0:.hy STMFD (hj)!,{hk}:MOV r0,#99:STR r0,hz:LDR r12,iU:LDR r11,iV:LDR r10,iW:LDR r9,iX
20930LDR r8,iY:LDR r7,iZ:LDR r6,ia:LDR r5,ib:LDR r4,ic:MOV r3,#255:.id LDR r2,[r12],#4:MOVS r0,r2,LSR #31:LDREQ r0,ie:LDRNE r0,if:LDR r1,hz:STR r0,hz:CMP r0,r1:SWINE "Wimp_SetColour":BIC r2,r2,#&80000000:SUBS r2,r2,#1:BLT ig:MOV r1,r2,ASL r9:MUL r1,r8,r1
21120MOV r1,r1,ASR #8:MOV r0,r6,ASL r10:MUL r0,r8,r0:MOV r0,r0,ASR #8:BL ih:.ig LDR r2,[r11],#4:MOVS r0,r2,LSR #31:LDREQ r0,ie:LDRNE r0,if:LDR r1,hz:STR r0,hz:CMP r0,r1:SWINE "Wimp_SetColour":BIC r2,r2,#&80000000:SUBS r2,r2,#1:BLT ii:MOV r1,r2,ASL r10
21290MUL r1,r8,r1:MOV r1,r1,ASR #8:MOV r0,r7,ASL r9:MUL r0,r8,r0:MOV r0,r0,ASR #8:BL ij:.ii SUBS r3,r3,#1:BGE id:LDMFD (hj)!,{PC}:.ih STMFD (hj)!,{r3,hk}:STR r1,ik:STR r0,il:MOV r0,#4:LDR r1,ib:LDR r2,ic:LDR r3,ik:ADD r2,r2,r3:SWI "OS_Plot":MOV r0,#5
21500LDR r1,ib:LDR r3,il:ADD r1,r1,r3:SWI "OS_Plot":LDMFD (hj)!,{r3,PC}:.ij STMFD (hj)!,{r3,hk}:STR r1,im:STR r0,in:MOV r0,#4:LDR r1,ib:LDR r2,im:ADD r1,r1,r2:LDR r2,ic:SWI "OS_Plot":MOV r0,#5:LDR r2,io:SWI "OS_Plot":LDMFD (hj)!,{r3,PC}:.hz DCD 0:.ie DCD 0
21740.if DCD 0:.ik DCD 0:.il DCD 0:.im DCD 0:.in DCD 0:.iU DCD dv:.iV DCD dy:.iW DCD 0:.iX DCD 0:.iY DCD 0:.iZ DCD 0:.ia DCD 0:.ib DCD 0:.ic DCD 0:.ip DCD 0:.io DCD 0:.fm STMFD (hj)!,{hk}:LDR r3,iq:LDR r4,gf:MOV r5,#0:.ir LDR r6,[r3,#16]: ANDS r6, r6, #1
22160BEQ is:SUB r4,r4,#1:LDR r7,[r3,r2]: ADD r2,r2,#4:LDR r8,[r3,r2]: SUB r2,r2,#4:SUBS r9,r7,r0 : MVNLT r9,r9 : ADDLT r9,r9,#1:SUBS r10,r8,r1 : MVNLT r10,r10 : ADDLT r10,r10,#1:CMP r9,#1 : BGT is:CMP r10,#1 : BGT is:MOV r0,r5:LDMFD (hj)!,{PC}
22310.is ADD r3,r3,#24:ADD r5,r5,#1:CMP r4,#0:BNE ir:MVN r0,#0:LDMFD (hj)!,{PC}:.iq DCD fn:.fx STMFD (hj)!,{hk}:MOV r6,r2:LDR r2,it:LDR r3,gf:MOV r7,#1 : LDR r8,fw : ADD r8,r8,#1:MOV r9,#1 : LDR r10,fv:SUB r11,r8,#1:SUB r12,r10,#1:.iu LDR r4,[r2,#16]
22660 ANDS r5, r4, #1:SUBNE r3,r3,#1: ANDS r4, r4, #2:BEQ iv:LDR r4,[r2,r6]: ADD r6,r6,#4:LDR r5,[r2,r6]: SUB r6,r6,#4:ADD r4,r4,r0:ADD r5,r5,r1:CMP r7,#1 : CMPNE r7,r11 : SUBEQ r4,r4,r0:CMP r9,#1 : CMPNE r9,r10 : SUBEQ r5,r5,r1:STR r4,[r2,r6]: ADD r6,r6,#4
22790STR r5,[r2,r6]: SUB r6,r6,#4:.iv ADD r7,r7,#1:CMP r7,r8 : MOVGE r7,#1 : ADDGE r9,r9,#1:ADD r2,r2,#24:CMP r3,#0:BNE iu:LDMFD (hj)!,{PC}:.it DCD fn:.fv DCD 0:.fw DCD 0:.gU STMFD (hj)!,{hk}:LDR r1,iw:LDR r2,gf:MOV r3,r0:MOV r0,#0:.ix LDR r4,[r1,#16]
23110 AND r5, r4, #1:CMP r5,#1:BNE iy:SUB r2,r2,#1: AND r5, r4, #2:CMP r5,#2:BNE iy:ADD r0,r0,#1: AND r5, r4, #15:ADD r5,r5,r3,LSL #4:STR r5,[r1,#16]:.iy ADD r1,r1,#24:CMP r2,#0:BGT ix:LDMFD (hj)!,{PC}:.iw DCD fn:.fi STMFD (hj)!,{hk}:MOV r0,#0:LDR r1,iz
23410MOV r2,#32*1024:MOV r5,#0:.jU LDR r3,[r1,#16]: ANDS r4, r3, #2:SUBNE r3,r3,#2:STRNE r3,[r1,#16]:ADDNE r0,r0,#1:STRNE r5,fk:ADD r5,r5,#1:ADD r1,r1,#24:SUBS r2,r2,#24:BGT jU:LDMFD (hj)!,{PC}:.iz DCD fn:.fk DCD 0:.fe STMFD (hj)!,{hk}:MOV r5,r2:LDR r2,jV
23750MOV r4,#0:.jW LDR r3,[r2,#16]: ANDS r3, r3, #1:BEQ jX:ADD r2,r2,#24:ADD r4,r4,#1:B jW:.jX STR r0,[r2,#0]:STR r1,[r2,#4]:STR r0,[r2,#8]:STR r1,[r2,#12]:MOV r3,r5,LSL #4:ADD r3,r3,#1:STR r3,[r2,#16]:LDR r0,gf:ADD r0,r0,#1:STR r0,gf:MOV r0,r4
23930LDMFD (hj)!,{PC}:.jV DCD fn:.jY STMFD (hj)!,{hk}:MOV r0,#11:SWI "Wimp_SetColour":LDR r12,jZ:LDR r1,gf:LDR r2,ja:LDR r3,jb:LDR r4,jc:LDR r5,jd:LDR r6,je:LDR r10,jf:LDR r11,jg:.jh LDR r7,[r12,#16]: ANDS r8, r7, #1:BEQ ji:.jj LDR r0,jk:LDR r8,[r12,#16]
24240 AND r9, r8, #%11110000:MOV r9,r9,LSR #4: ANDS r8, r8, #%00000010:ADDNE r9,r9,#8: AND r9, r9, #15:STR r9,jl:LDR r8,[r12,r0]: ADD r0,r0,#4:LDR r9,[r12,r0]:MOV r8,r8,ASL r3:MOV r9,r9,ASL r4:MUL r8,r2,r8:MUL r9,r2,r9:MOV r8,r8,ASR #8:MOV r9,r9,ASR #8:BL jm
24420SUB r1,r1,#1:.ji ADD r12,r12,#24:CMP r1,#0:BNE jh:LDMFD (hj)!,{PC}:.jm STMFD (hj)!,{r0-r12,hk}:add r8,r8,r10:add r9,r9,r11:.jn MOV r0,r8,LSL #16:ADD r0,r0,r9:STR r0,[r12,#20]:sub r8,r8,r10:sub r9,r9,r11:.jo LDR r0,jl:ADR r1,jp:ADD r1,r1,r0,ASL #1
24620LDRB r0,[r1,#0]:SWI "Wimp_SetColour":MOV r0,#4:SUB r1,r8,#6:SUB r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":MOV r0,#96+5:ADD r1,r8,#6:ADD r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":.jq LDR r0,jl:ADR r1,jp:ADD r1,r1,r0,ASL #1
24780LDRB r0,[r1,#1]:SWI "Wimp_SetColour":MOV r0,#4:SUB r1,r8,#6:SUB r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":MOV r0,#5:ADD r1,r8,#6:SUB r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":MOV r0,#5:ADD r1,r8,#6:ADD r2,r9,#6
24930add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":MOV r0,#5:SUB r1,r8,#6:ADD r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":MOV r0,#5:SUB r1,r8,#6:SUB r2,r9,#6:add r1,r1,r10:add r2,r2,r11:SWI "OS_Plot":LDMFD (hj)!,{r0-r12,PC}:.jZ DCD fn:.ja DCD 0
25100.jb DCD 0:.jc DCD 0:.jd DCD 0:.je DCD 0:.jf DCD 0:.jg DCD 0:.jk DCD 0:.jl DCD 0:.jp DCB 0 : DCB 5:DCB 1 : DCB 6:DCB 2 : DCB 5:DCB 3 : DCB 6:DCB 4 : DCB 1:DCB 5 : DCB 2:DCB 6 : DCB 1:DCB 7 : DCB 2:DCB 8 : DCB 15:DCB 9 : DCB 11:DCB 10 : DCB 0
25330DCB 11 : DCB 14:DCB 12 : DCB 4:DCB 13 : DCB 10:DCB 14 : DCB 11:DCB 15 : DCB 8:.jr STMFD (hj)!,{hk}:LDR r0,js:SWI "Wimp_SetColour":LDR r12,jt:LDR r11,ju:LDR r10,jv:LDR r9,jw:LDR r6,jx:BL jy:LDR r12,jt:BL jz:LDMFD (hj)!,{PC}:.jy STMFD (hj)!,{hk}
25580MOV r7,r10:.kU SUB r8,r11,#1:.kV MOV r0,#4:LDR r1,[r12,#20]: MOV r1,r1,LSR #16:LDR r2,[r12,#20]: AND r2,r2,r9:SWI "OS_Plot":ADD r12,r12,#24:MOV r0,#5:LDR r1,[r12,#20]: MOV r1,r1,LSR #16:LDR r2,[r12,#20]: AND r2,r2,r9:SWI "OS_Plot":SUBS r8,r8,#1:BNE kV
25710ADD r12,r12,#24:SUBS r7,r7,#1:BNE kU:LDMFD (hj)!,{PC}:.jz STMFD (hj)!,{hk}:MOV r7,r11:.kW SUB r8,r10,#1:MOV r5,#0:.kX MOV r0,#4:LDR r1,[r12,#20]: MOV r1,r1,LSR #16:LDR r2,[r12,#20]: AND r2,r2,r9:SWI "OS_Plot":ADD r12,r12,r6:ADD r5,r5,r6:MOV r0,#5
25880LDR r1,[r12,#20]: MOV r1,r1,LSR #16:LDR r2,[r12,#20]: AND r2,r2,r9:SWI "OS_Plot":SUBS r8,r8,#1:BNE kX:SUB r12,r12,r5:ADD r12,r12,#24:SUBS r7,r7,#1:BNE kW:LDMFD (hj)!,{PC}:.jt DCD fn:.ju DCD 0:.jv DCD 0:.jw DCD &0000FFFF:.jx DCD 0:.js DCD 0
26110.fd STMFD (hj)!,{hk}:LDR r0,kY:MOV r1,#32 *1024:MOV r2,#0:.kZ STR r2,[r0,#16]:ADD r0,r0,#24:SUBS r1,r1,#24:BGT kZ:MOV r0,#0:STR r0,gf:LDMFD (hj)!,{PC}:.kY DCD fn:.ka STMFD (hj)!,{hk}:.kb CMP r2,#0:LDMEQFD (hj)!,{PC}:CMP r2,#4:BLT kc:.kd LDR r3,[r0],#4
26440STR r3,[r1],#4:SUB r2,r2,#4:B kb:.kc LDRB r3,[r0],#1:STRB r3,[r1],#1:SUB r2,r2,#1:B kb:.gf DCD 0:.ke DCD (32*1024)/24:.fn FNction_ReserveMemory(32*1024):]:NEXThn:ENDPROC
26800DEFFNction_ReserveMemory(kf):IFhn=0 THEN
26820P%+=kf
26830ELSE:FORi=0 TOkf-1STEP4:P%!i=0:NEXTi:P%+=kf
26880ENDIF:[OPT hn : ALIGN :]:=hn
27120DEFPROCVc:SYS&51 TOkg:kh=FNction_ReadSlotSize:ki=0:kj=HIMEM:ENDPROC
27200DEFFNction_AllocateMemory(kk):LOCALkl,km:LOCALkn,ko,kp:LOCALkq,kr:kl=(kk DIVkg)+1:km=kl* kg:IFFNction_ReadSizeOfFreePool>=kk THEN
27270kn=FNction_ReadSlotSize:ko=kn+kk:kp=FNction_SetSlotSize(ko):ki+=kk:kj+=kk:kr=TRUE
27330ELSE:kr= NOTTRUE
27350ENDIF:=kr
27390DEFFNction_AlignToPageSize(kk):kl=(kk DIVkg)+1:km=kl* kg:=km
27450DEFPROCks:kn=FNction_ReadSlotSize:IFkn>kh THEN
27480Yj=FNction_SetSlotSize(kh):ki=0
27500ENDIF:ENDPROC
27640DEFPROCVg(hn):hj=13:hk=14:hl=15:IFhn=0 THENDIMkt 8*1024
27670P%=kt:[OPT hn:.ku DCD ax:.kv STMFD (hj)!,{r12,hk}:LDR r12,ku:LDR r12,[r12]:CMP r12,#1 : BEQ kw:CMP r12,#2 : BEQ kx:CMP r12,#3 : BEQ kx:CMP r12,#4 : BEQ ky:CMP r12,#5 : BEQ kz:.kw BL lU : LDMFD (hj)!,{r12,PC}:.kx BL lV : LDMFD (hj)!,{r12,PC}
27880.ky BL lW : LDMFD (hj)!,{r12,PC}:.kz BL lX : LDMFD (hj)!,{r12,PC}:.lU STMFD (hj)!,{r1-r4,hk}:.lY ADD r3,r3,#7:MOV r3,r3,LSR #3:MOV r3,r3,LSL #2:.lZ MUL r4,r3,r1:ADD r2,r2,r4:.la ADD r2,r2,r0,ASR #1:LDRB r4,[r2]:.lb ANDS r0, r0, #1
28010 ANDEQ r0, r4, #%00001111: ANDNE r0, r4, #%11110000:MOVNE r0,r0,LSR #4:LDMFD (hj)!,{r1-r4,PC}:.lV STMFD (hj)!,{r1-r4,hk}:LDMFD (hj)!,{r1-r4,PC}:.lX STMFD (hj)!,{r1-r4,hk}:LDMFD (hj)!,{r1-r4,PC}:.lW STMFD (hj)!,{r1-r4,hk}:LDMFD (hj)!,{r1-r4,PC}
28240.lc STMFD (hj)!,{r12,hk}:LDR r12,ku:LDR r12,[r12]:CMP r12,#1 : BEQ ld:CMP r12,#2 : BEQ le:CMP r12,#3 : BEQ le:CMP r12,#4 : BEQ lf:CMP r12,#5 : BEQ lg:.ld BL lh : LDMFD (hj)!,{r12,PC}:.le BL li : LDMFD (hj)!,{r12,PC}:.lf BL lj : LDMFD (hj)!,{r12,PC}
28350.lg BL lk : LDMFD (hj)!,{r12,PC}:.lh STMFD (hj)!,{r0-r5,hk}:.ll ADD r3,r3,#7:MOV r3,r3,LSR #3:MOV r3,r3,LSL #2:.lm MUL r5,r3,r1:ADD r2,r2,r5:.ln ADD r2,r2,r0,ASR #1:LDRB r5,[r2]:.lo ANDS r0, r0, #1: ANDNE r5, r5, #%00001111:ADDNE r5,r5,r4,LSL #4
28490 ANDEQ r5, r5, #%11110000:ADDEQ r5,r5,r4:STRB r5,[r2]:LDMFD (hj)!,{r0-r5,PC}:.li STMFD (hj)!,{r0-r4,hk}:LDMFD (hj)!,{r0-r4,PC}:.lk STMFD (hj)!,{r0-r4,hk}:LDMFD (hj)!,{r0-r4,PC}:.lj STMFD (hj)!,{r0-r6,hk}:LDMFD (hj)!,{r0-r6,PC}:.lp DCD &0000FFFF
28750.lq STMFD (hj)!,{hk}:LDR r12,ku:LDR r12,[r12]:CMP r12,#1 : BEQ lr:CMP r12,#2 : BEQ ls:CMP r12,#3 : BEQ lt:CMP r12,#4 : BEQ lu:CMP r12,#5 : BEQ lv:.lr BL lw : LDMFD (hj)!,{PC}:.ls BL lx : LDMFD (hj)!,{PC}:.lt BL ly : LDMFD (hj)!,{PC}
28860.lv BL lz : LDMFD (hj)!,{PC}:.lu BL mU : LDMFD (hj)!,{PC}:.lw STMFD (hj)!,{hk}:BL mV:LDMFD (hj)!,{PC}:.ly STMFD (hj)!,{hk}:LDMFD (hj)!,{PC}:.lx STMFD (hj)!,{r1-r12,hk}:LDMFD (hj)!,{r1-r12,PC}:.mW FNction_Table_For_8bpp:.lz STMFD (hj)!,{r1-r12,hk}
29070LDMFD (hj)!,{r1-r12,PC}:.mU STMFD (hj)!,{r1-r12,hk}:LDMFD (hj)!,{r1-r12,PC}:.mV STMFD (hj)!,{r1-r3,hk}:LDR r2,mX:LDR r3,mY:SUB r3,r3,r2:MUL r3,r0,r3:MUL r2,r1,r2:ADD r0,r2,r3:MOV r0,r0,ASR #8:LDMFD (hj)!,{r1-r3,PC}:.mX DCD 0:.mY DCD (100/100)*256:]:ENDPROC
29380DEFFNction_Table_For_8bpp:=hn
29640DEFPROCcX(Zz$):SYS&400CF,,Uj:ci=Uj!12:bm=Uj!16:dw$="UNKNOWN":CASEci OF
29700WHENUb:IFbm=Vh THEN
29710IF NOTVj THEN
29720dw$="SOURCE"
29730ELSE:IF NOTVn THENdw$="DESTINATION"
29750ENDIF
29760ENDIF
29770WHENWj:IFbm=0 THENdw$="SOURCE"
29780IFbm=2 THENdw$="DESTINATION"
29790WHENXw:dw$="SOURCE"
29800WHENXz:dw$="DESTINATION"
29810WHENYn:dw$="BACKGROUND"
29820ENDCASE:IFdw$="UNKNOWN" THEN
29840Yi$=FNction_TagToString("err02"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
29860ELSE:CASEdw$ OF
29880WHEN"SOURCE":PROCgm(Zz$)
29890WHEN"DESTINATION":PROCgn(Zz$)
29900WHEN"BACKGROUND":PROCgo(Zz$)
29910ENDCASE
29920ENDIF:ENDPROC
29960DEFPROCZh:IFVj THENPROCmZ(Vk,Ut,Vm)
29980IFVn THENPROCmZ(Vo,Uu,Vu)
29990IFVr THENPROCmZ(Vs,Uv,Vq)
30000ENDPROC
30030DEFPROCmZ(ma,mb,mc):IF NOTmc THEN
30130md$=FNction_NameOfNthSprite(ma,1):me=FNction_ModeOfSprite(ma,md$, NOTTRUE):mf=FNction_SpriteHasPalette(ma,md$):mg=FNction_PointerToSpriteData(ma,md$):SYS&35,me,3 TO,,mh:mi=mg-mf:mj=(mi/8)-1:IFmf<>-1 THEN
30210mk=Uw:FOReW=0 TOmj:!(mk+(eW*4) ) = !( mf + (eW*8) ):NEXTeW
30250ELSE:IFmh=63 THEN
30270mk=0
30280ELSE:mk=Uw:SYS&400E5,,mk:FORi=0 TO15:mk!(i*4) = (mk!(i*4) AND&FFFFFF00):NEXTi
30340ENDIF
30350ENDIF:IFmj<>255 THEN
30370SYS&40740,me,mk,-1,-1,mb
30380ELSE:FOReW=0 TOmj:A%=!(mf+eW*8 ):SYS&40744,A% TOml:mb?eW=ml:NEXTeW
30440ENDIF
30450ELSE:md$=FNction_NameOfNthSprite(ma,1):me=FNction_ModeOfSprite(ma,md$, NOTTRUE):SYS&40740,me,Uw,-1,-1,mb
30570ENDIF:ENDPROC
30610DEFPROCZi:SYS&35,-1,4 TO,,cz:SYS&35,-1,5 TO,,dV:IFVj THEN
30670SYS&35,mm,4 TO,,mn:SYS&35,mm,5 TO,,mo:dU=cz:dU=mn:dW=mo/dV
30720ENDIF:IFVn THEN
30750SYS&35,mp,4 TO,,mn:SYS&35,mp,5 TO,,mo:dX=cz:dX=mn:dY=mo/dV
30800ENDIF:IFVr THEN
30830SYS&35,mq,4 TO,,mn:SYS&35,mq,5 TO,,mo:dZ=cz:dZ=mn:da=mo/dV
30880ENDIF:ENDPROC
30930DEFPROCZr:IFVj THEN
30950eo=Zl+12:ep=Zn-190:aa=142:ab=90:mr=Uj:mr!0=aa/cz:mr!4=ab/dV:mr!8=!fV:mr!12=!fX:SYS&2E,256+52,Vk,ms$,eo,ep,8,mr,Ut
31010ENDIF:IFVn THEN
31030eo=Zl+12+352:ep=Zn-190:aa=142:ab=90:mr=Uj:mr!0=aa/cz:mr!4=ab/dV:mr!8=!mt:mr!12=!mu:SYS&2E,256+52,Vo,mv$,eo,ep,8,mr,Uu
31090ENDIF:ENDPROC
31130DEFPROCZs:eo=Zl-Zp+((Vv%<<(dU))* (bW/bX) ):ep=Zn-Zq+((Vw%<<(dW*dV)) * (bW/bX) ):mr=Uj:mr!0=(!fV* bW) * dU :mr!4=(!fX* bW) * dW:mr!8=(!fV* bX) :mr!12=(!fX* bX):SYS&2E,256+52,Vk,ms$,eo,ep,8,mr,Ut:IF NOTWX THEN
31210PROCmw(Vk,bW,bX,!fV,!fX,mm)
31220ELSE:PROCmx(Vk,bW,bX,!fV,!fX,mm)
31240ENDIF:ENDPROC
31280DEFPROCZt:eo=Zl-Zp+((Vx%<<(dX))* (bd/be) ):ep=Zn-Zq+((Vy%<<(dY*dV)) * (bd/be) ):mr=Uj:mr!0=(!mt* bd) * dX :mr!4=(!mu* bd) * dY:mr!8=(!mt* be) :mr!12=(!mu* be):SYS&2E,256+52,Vo,mv$,eo,ep,8,mr,Uu:IF NOTWX THEN
31360PROCmw(Vo,bd,be,!mt,!mu,mp)
31370ELSE:PROCmx(Vo,bd,be,!mt,!mu,mp)
31390ENDIF:ENDPROC
31430DEFPROCWh(ZZ$,ZX,my):CASEZZ$ OF
31450WHEN"SOURCE":bW=ZX:bX=my:PROCmz(TRUE, NOTTRUE):PROCYr(Uj,Xw)
31490WHEN"DEST":bd=ZX:be=my:PROCmz( NOTTRUE,TRUE):PROCYr(Uj,Xz)
31530ENDCASE:ENDPROC
31570DEFPROCmz(nU,nV):IFVj ANDnU THEN
31590nW=bW/bX:SYS&35,mm,4 TO,,nX:SYS&35,mm,5 TO,,nY:PROCnZ(Uj,Xw,0,(!fV*nW)<<nX,0,(!fX*nW)<<nY):IFFNction_WindowIsOpen(Uj,Xw) THEN
31640!Uj=Xw:SYS&400CB,,Uj:SYS&400C6,,Uj:SYS&400C5,,Uj
31680ENDIF
31690ENDIF:IFVn ANDnV THEN
31710IFVj THEN
31720md$=ms$:aa=!fV:ab=!fX:na=mm
31740ELSE:md$=mv$:aa=!mt:ab=!mu:na=mp
31770ENDIF:nb=bd/be:SYS&35,na,4 TO,,nX:SYS&35,na,5 TO,,nY:PROCnZ(Uj,Xz,0,(aa*nb)<<nX,0,(ab*nb)<<nY):IFFNction_WindowIsOpen(Uj,Xz) THEN
31830!Uj=Xz:SYS&400CB,,Uj:SYS&400C6,,Uj:SYS&400C5,,Uj
31870ENDIF
31880ENDIF:ENDPROC
31920DEFPROCYY(nc,nd):ne=VALFNction_ReadIconText(Uj,YX,2):nf=VALFNction_ReadIconText(Uj,YX,4):ne+=nc:IFne<1 THENne=1
31970IFne>999 THENne=999
31980nf+=nd:IFnf<1 THENnf=1
32000IFnf>999 THENnf=999
32010PROCWi(Uj,YX,2,STR$ne):PROCWi(Uj,YX,4,STR$nf):CASEVZ OF
32040WHEN5:bW=ne:bX=nf
32060WHEN6:bd=ne:be=nf
32080ENDCASE:CASEVZ OF
32100WHEN5:PROCmz(TRUE, NOTTRUE)
32110WHEN6:PROCmz( NOTTRUE,TRUE)
32120ENDCASE:IFFNction_WindowWithCaret(Uj)=YX THEN
32140PROCZb
32150ENDIF:ENDPROC
32190DEFPROCWl:FORi=0 TO255:dv!(i*4) = 0:dy!(i*4) = 0:NEXTi:ENDPROC
32270DEFPROCmw(ng,nh,ni,aa,ab,na):eo=Zl-Zp:ep=Zn-Zq:SYS&35,-1,4 TO,,nj:SYS&35,-1,5 TO,,en:SYS&35,na,4 TO,,mn:SYS&35,na,5 TO,,mo:en=en-(en-mo):nj=cz* mn:CASEng OF
32370WHENVk:en=dW* dV
32380WHENVo:en=dY* dV
32390ENDCASE:SYS&400E6,14:!iW=nj:!iX=en:!iZ=ab:!ia=aa:!ib=eo:!ic=ep:!ip=Zm:!io=Zn:!iY=(nh/ni)* 256:!ie=?(jp+(nk*2)+0):!if=?(jp+(nk*2)+1):CALLhy:ENDPROC
32520DEFPROCmx(ng,nh,ni,aa,ab,na):SYS&35,na,4 TO,,mn:SYS&35,na,5 TO,,mo:eo=Zl-Zp:ep=Zn-Zq:nj=cz*mn:CASEng OF
32590WHENVk:en=dW* dV:!jk=0
32610WHENVo:en=dY* dV:!jk=8
32630ENDCASE:!ja=(nh/ni)* 256:!jb=nj:!jc=en:!jd=0:!je=0:!jf=eo:!jg=ep:CALLjY:!ju=fa%:!jv=fY%:!jx=fa%* 24 :!js=nk:CALLjr:ENDPROC
32750DEFPROCnl:nm=0:FORi=1 TOnn:no=FNction_Insert_HorV(dv,nm):nm+=((!fX)/(nn)):IFnm>!fX THENnm=!fX
32810NEXTi:np=0:FORi=1 TOnq:no=FNction_Insert_HorV(dy,np):np+=((!fV)/(nq)):IFnp>!fV THENnp=!fV
32870NEXTi:PROCbs( NOTTRUE):ENDPROC
32920DEFPROCZu:IFVr THEN
32940eo=Zl:ep=Zo:aa=Zm-Zl:ab=Zn-Zo:mr=Uj:mr!0=(nr/2)/(cz):mr!4=(ns/2)/(dV):mr!8=!gc:mr!12=!gb:SYS&2E,256+52,Vs,nt$,eo,ep,8,mr,Uv:PROCnu
33020ELSE:SYS&400E6,1+128:CLG
33040ENDIF:ENDPROC
33080DEFPROCgm(Zz$):IFVj THEN
33100nv=FNction_WindowIsOpen(Uj,Xw):PROCbx("Source"):IFnv THENPROCWw(Uh,Uj,Xw, NOTTRUE)
33130ENDIF:Vk=kj:nw=FNction_AlignToPageSize(FNction_SizeOfFile(Zz$)+128):kr=FNction_AllocateMemory(nw):IF NOTkr THEN
33180Yi$=FNction_TagToString("err03"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
33200ELSE:Vl=nw:Vj=TRUE:Xv$=Zz$:Xu=TRUE:PROCXh(Vk,Vl):PROCXi(Vk,Zz$):ms$=FNction_NameOfNthSprite(Vk,1):Vm=FNction_SpriteIsOfNewFormat(Vk,ms$):!fV=FNction_WidthOfSprite(Vk,ms$,Vm):!fX=FNction_HeightOfSprite(Vk,ms$,Vm):mm=FNction_ModeOfSprite(Vk,ms$,Vm)
33320as$=FNction_TagToString("srce"):PROCWi(Uj,Wj,1,as$+STR$!fV+"x"+STR$!fX):PROCWk(Uj,Wj,1,7):PROCZh:PROCZi:PROCYr(Uj,Wj):PROCYr(Uj,Yn):PROCmz(TRUE,TRUE):IF NOTVn THENVo=Vk:dY=dW
33410Yj=1:IFFNction_SpriteHasMask(Vk,ms$) THEN
33430Yi$=FNction_TagToString("err18"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE)
33450ENDIF:IFYj=1 THEN
33470PROCnx(Vk,ms$):IFny AND NOTWX THENPROCnl
33490IF NOTFNction_WindowIsOpen(Uj,Wj) THENPROCXs(Uj,Wj)
33500ELSE:PROCbx("Source")
33520ENDIF
33530ENDIF:ENDPROC
33570DEFPROCgn(Zz$):IFVn THEN
33590nv=FNction_WindowIsOpen(Uj,Xz):PROCbx("Dest"):IFnv THENPROCWw(Uh,Uj,Xz, NOTTRUE)
33620ENDIF:Vo=kj:nw=FNction_AlignToPageSize(FNction_SizeOfFile(Zz$)+128):kr=FNction_AllocateMemory(nw):IF NOTkr THEN
33670Yi$=FNction_TagToString("err03"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
33690ELSE:Vp=nw:Vn=TRUE:Xy$=Zz$:Xx=TRUE:PROCXh(Vo,Vp):PROCXi(Vo,Zz$):mv$=FNction_NameOfNthSprite(Vo,1):Vu=FNction_SpriteIsOfNewFormat(Vo,mv$):!mt=FNction_WidthOfSprite(Vo,mv$,Vu):!mu=FNction_HeightOfSprite(Vo,mv$,Vu):mp=FNction_ModeOfSprite(Vo,mv$,Vu)
33810as$=FNction_TagToString("dest"):PROCWi(Uj,Wj,3,as$+STR$!mt+"x"+STR$!mu):PROCWk(Uj,Wj,3,7):PROCZh:PROCZi:PROCYr(Uj,Wj):PROCmz( NOTTRUE,TRUE):IF NOTVj THENVk=Vo:dW=dY
33890Yj=1:IFFNction_SpriteHasMask(Vo,mv$) THEN
33910Yi$=FNction_TagToString("err18"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE)
33930ENDIF:IFYj=1 THEN
33950PROCnx(Vo,mv$):IF NOTFNction_WindowIsOpen(Uj,Wj) THENPROCXs(Uj,Wj)
33970ELSE:PROCbx("Dest")
33990ENDIF
34000ENDIF:ENDPROC
34040DEFPROCgo(Zz$):IFVr THEN
34060nv=FNction_WindowIsOpen(Uj,Yn):PROCbx("Back"):IFnv THENPROCWw(Uh,Uj,Yn, NOTTRUE)
34090ENDIF:Vs=kj:nw=FNction_AlignToPageSize(FNction_SizeOfFile(Zz$)+128):kr=FNction_AllocateMemory(nw):IF NOTkr THEN
34140Yi$=FNction_TagToString("err03"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
34160ELSE:Vt=nw:Vr=TRUE:Yp$=Zz$:Yo=TRUE:PROCXh(Vs,Vt):PROCXi(Vs,Zz$):nt$=FNction_NameOfNthSprite(Vs,1):Vq=FNction_SpriteIsOfNewFormat(Vs,nt$):!gc=FNction_WidthOfSprite(Vs,nt$,Vq):!gb=FNction_HeightOfSprite(Vs,nt$,Vq):mq=FNction_ModeOfSprite(Vs,nt$,Vq):IF!gc<!fV OR!gb<!fX THEN
34290Yi$=FNction_TagToString("err19"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE):PROCbx("Back")
34320ELSE:PROCZh:PROCZi:nr=((260/!gb)* !gc ) ::ns=(260):PROCnZ(Uj,Yn,0,nr,-ns,0):IFFNction_WindowIsOpen(Uj,Yn) THEN
34390PROCnz(Uj,Yn,nr,ns):PROCYr(Uj,Yn)
34410ENDIF:Yj=1:IFFNction_SpriteHasMask(Vs,nt$) THEN
34440Yi$=FNction_TagToString("err18"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$,TRUE,TRUE)
34460ENDIF:IFYj=1 THEN
34480PROCnx(Vs,nt$)
34490ELSE:PROCbx("Back")
34510ENDIF
34520ENDIF
34530ENDIF:ENDPROC
34570DEFPROCnu:IFVj THEN
34590oU=eo+((Vz%/!gc)* aa ):oV=ep+((WU%/!gb)* ab ):oW=(!fV/!gc)* aa:oX=(!fX/!gb)* ab:SYS&400E6,0:RECTANGLEFILLoU,oV,oW,oX:SYS&400E6,7:RECTANGLEoU,oV,oW,oX
34670ENDIF:ENDPROC
34710DEFPROCYy(Xk,Xl):PROCdh(Uj,Yn,Xk,Xl):oY%=(dj/nr)* !gc:oZ%=((dl+ns)/ns)* !gb:IFoY%<>Vz% ORoZ%<>WU% THEN
34760Vz%=oY%:!db=Vz%:WU%=oZ%:!dc=WU%:PROCYr(Uj,Yn)
34790ENDIF:ENDPROC
34830DEFPROCbx(oa$):CASEoa$ OF
34850WHEN"Source":ob=Vo:oc=Vp:od=Vn:oe=Vs:of=Vt:og=Vr:br=Vl:ng=Vk:PROCWk(Uj,Wj,1,3)
34890WHEN"Dest":ob=Vk:oc=Vl:od=Vj:oe=Vs:of=Vt:og=Vr:br=Vp:ng=Vo:PROCWk(Uj,Wj,3,3)
34930WHEN"Back":ob=Vk:oc=Vl:od=Vj:oe=Vo:of=Vp:og=Vn:br=Vt:ng=Vs
34960ENDCASE:oh=ob>oe:IFoh THEN
34990SWAPob,oe:SWAPoc,of:SWAPod,og
35020ENDIF:IFod ANDob>ng THEN
35040A%=ob:B%=ob-br:C%=oc:CALLho:ob-=br
35070ENDIF:IFog ANDoe>ng THEN
35090A%=oe:B%=oe-br:C%=of:CALLho:oe-=br
35120ENDIF:IFoh THEN
35140SWAPob,oe:SWAPoc,of:SWAPod,og
35170ENDIF:kr=FNction_AllocateMemory(-br):CASEoa$ OF
35200WHEN"Source":Vo=ob:Vs=oe:Vj= NOTTRUE:PROCYr(Uj,Wj):IFFNction_WindowIsOpen(Uj,Xw) THEN
35240PROCXU(Uj,Xw)
35250ENDIF:as$=FNction_TagToString("srce"):oi$=FNction_TagToString("none"):PROCWi(Uj,Wj,1,as$+oi$):PROCYr(Uj,Yn)
35300WHEN"Dest":Vk=ob:Vs=oe:Vn= NOTTRUE:PROCYr(Uj,Wj):IFFNction_WindowIsOpen(Uj,Xz) THEN
35340PROCXU(Uj,Xz)
35350ENDIF:as$=FNction_TagToString("dest"):oi$=FNction_TagToString("none"):PROCWi(Uj,Wj,3,as$+oi$)
35390WHEN"Back":Vk=ob:Vo=oe:Vr= NOTTRUE:Vz%=0:!db=0:WU%=0:!dc=0:IFFNction_WindowIsOpen(Uj,Yn) THEN
35440PROCYr(Uj,Yn)
35450ENDIF
35460ENDCASE:ENDPROC
35820DEFPROCWm:LOCALERROR:ONERRORLOCALPROCoj:ENDPROC
35850gd=OPENIN"<Morph$Dir>.Prefs":INPUT#gd,ny:INPUT#gd,nq,nn:INPUT#gd,nk:INPUT#gd,Wr:INPUT#gd,ok,ol,om:CLOSE#gd:PROCYg:PROCYd:RESTOREERROR:ENDPROC
35980DEFPROCoj:CLOSE#gd:PROCon:PROCYg:PROCYd:Yi$=FNction_TagToString("err09"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE):PROCYf:ENDPROC
36090DEFPROCYf:LOCALERROR:ONERRORLOCALPROCoo:ENDPROC
36120gd=OPENOUT"<Morph$Dir>.Prefs":PROCYh:PRINT#gd,ny:PRINT#gd,nq,nn:PRINT#gd,nk:PRINT#gd,Wr:PRINT#gd,ok,ol,om:CLOSE#gd:OSCLI"Stamp <Morph$Dir>.Prefs ":OSCLI"SetType <Morph$Dir>.Prefs Data":RESTOREERROR:ENDPROC
36260DEFPROCoo:CLOSE#gd:Yi$=FNction_TagToString("err10"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE):ENDPROC
36330DEFPROCon:ny= NOTTRUE:nq=10:nn=10:nk=14:Wr= NOTTRUE:ok=TRUE:ol=1:om=1:ENDPROC
36450DEFPROCYg:PROCgx(Uj,Wz,4,ny):PROCWi(Uj,Wz,11,STR$nq):PROCWi(Uj,Wz,8,STR$nn):PROCcU(Uj,Wz,19,nk):PROCgx(Uj,Wz,12,Wr):PROCWi(Uj,Wz,13,STR$ol):PROCWi(Uj,Wz,14,STR$om):IFok THEN
36540PROCYe("All")
36550ELSE:PROCYe("From")
36570ENDIF:ENDPROC
36610DEFPROCYh:ny= NOTFNction_IconIsToggled(Uj,Wz,4):nq=VALFNction_ReadIconText(Uj,Wz,11):nn=VALFNction_ReadIconText(Uj,Wz,8):nk=FNction_ColourOfIcon(Uj,Wz,19):Wr= NOTFNction_IconIsToggled(Uj,Wz,12):ok= NOTFNction_IconIsToggled(Uj,Wz,3):ol=VALFNction_ReadIconText(Uj,Wz,13)
36690om=VALFNction_ReadIconText(Uj,Wz,14):PROCYg:IFFNction_WindowIsOpen(Uj,Xw) THENPROCYr(Uj,Xw)
36720IFFNction_WindowIsOpen(Uj,Xz) THENPROCYr(Uj,Xz)
36730ENDPROC
36760DEFPROCYd:ek=FNction_IconIsToggled(Uj,Wz,4):PROCgy(Uj,Wz,11,ek):PROCgy(Uj,Wz,18,ek):PROCgy(Uj,Wz,8,ek):PROCgy(Uj,Wz,9,ek):ENDPROC
37320DEFFNction_WidthOfSprite(op,oq$,mc):IF NOTmc THEN
37340SYS&2E,256+40,op,oq$ TO,,,cd,ce,cf,or:os=cd
37360ELSE:ot=FNction_PointerToSpriteControlBlock(op,oq$):os=ot!(4*4) + 1:ou=ot!(10*4) ::ov=((ou>>27) AND%11111):IFov=5 THENos+=os
37420ENDIF:=os
37460DEFFNction_HeightOfSprite(op,oq$,mc):IF NOTmc THEN
37480SYS&2E,256+40,op,oq$ TO,,,cd,ce,cf,or:ow=ce
37500ELSE:ot=FNction_PointerToSpriteControlBlock(op,oq$):ow=ot!(5*4) + 1
37530ENDIF:=ow
37570DEFFNction_ModeOfSprite(op,oq$,mc):IF NOTmc THEN
37590SYS&2002E,256+40,op,oq$ TO,,,cd,ce,cf,or:ou=or
37610ELSE:ot=FNction_PointerToSpriteControlBlock(op,oq$):ou=ot!(10*4) :
37640ENDIF:=ou
37680DEFFNction_SpriteHasMask(op,oq$):ot=FNction_PointerToSpriteControlBlock(op,oq$):ox=ot!(8*4):oy=ot!(9*4):=oy<>ox
37750DEFFNction_SpriteHasPalette(op,oq$):oz=FNction_PointerToSpriteControlBlock(op,oq$):pU=oz!32:IFpU=11*4 THEN
37790pV=-1
37800ELSE:pV=oz+11*4
37820ENDIF:=pV
37860DEFFNction_NumberOfSpritesInArea(op):=op!4
37900DEFFNction_NameOfNthSprite(op,n):pW=op+op!8:pX=1:WHILEpX<n:pY=pW!0:pW+=pY:pX+=1:ENDWHILE:=LEFT$(FNction_ExtractString(pW+4),12)+CHR$0
38030DEFFNction_PointerToSpriteData(op,oq$):SYS&2E,256+24,op,oq$ TO,,cc:pZ=cc:pU=pZ!32:pa=pZ+pU:=pa
38110DEFFNction_PointerToMaskData(op,oq$):SYS&2E,256+24,op,oq$ TO,,cc:pZ=cc:pb=pZ!36:pc=pZ+pb:=pc
38190DEFFNction_PointerToSpriteControlBlock(op,oq$):SYS&2E,256+24,op,oq$ TO,,cc:pd=cc:=pd
38250DEFPROCpe(op,Zz$):SYS&2E,256+12,op,Zz$:ENDPROC
38300DEFPROCXi(op,Zz$):SYS&2E,256+10,op,Zz$:ENDPROC
38350DEFPROCXh(op,pf):op!0=pf:op!8=16:SYS&2E,256+9,op:ENDPROC
38420DEFFNction_ReadSpritePixel(op,oq$,x,y):LOCALpg,ph:SYS&2E,256+41,op,oq$,x,y TO,,,,,cf,or:pg=cf:ph=or:=pg
38500DEFPROCpi(op,oq$,x,y,pg,ph):SYS&2E,256+42,op,oq$,x,y,pg,ph:ENDPROC
38550DEFPROCpj(op,oq$,pk$):SYS&2E,256+26,op,oq$,pk$:ENDPROC
38600DEFFNction_SpritesType:pl=1:SYS&6,161,133 TO,,pm:pm=(pm>>2) AND3:IF(pm=2) THEN
38670pl=3
38680ELSE:SYS&35,-1,4 TO,,nX:SYS&35,-1,5 TO,,nY:IFnX=nY THEN
38720pl=2
38730ENDIF
38740ENDIF:=pl
38780DEFFNction_SpriteIsOfNewFormat(op,oq$):ot=FNction_PointerToSpriteControlBlock(op,oq$):na=ot!(10*4):=na>40
38840DEFPROCnx(op,oq$):SYS&2E,256+30,op,oq$:ENDPROC
38890DEFPROCpn(op,oq$,aa,ab,na,po):SYS&2E,256+15,op,oq$,ABSpo,aa,ab,na:ENDPROC
39050DEFPROCaY(Zz$):!pp=!bt:!pq=(!fX-!bu)-!fX:!pr=!by:!ps=(!mu-!bz)-!mu:!pt=!db:!pu=(!gb-!dc)-!fX:IFVr THEN
39150pv=Vs:pw=Vt:!px=!gc:!py=!gb
39190ELSE:pv=Vk:pw=Vl:!px=!fV:!py=!fX:!pt=0:!pu=0
39260ENDIF:Wc$=Zz$:pz=kj:kr=FNction_AllocateMemory(pw):IF NOTkr THEN
39340Yi$=FNction_TagToString("err08"):Yj=FNction_ReportError(Uj,99,Uc$,Yi$, NOTTRUE,TRUE)
39370ELSE:PROCqU:qV$=FNction_NameOfNthSprite(Vk,1):qW$=FNction_NameOfNthSprite(pz,1):qX$=FNction_NameOfNthSprite(Vo,1):!qY=FNction_PointerToSpriteData(Vk,qV$):!qZ=FNction_PointerToSpriteData(pz,qW$):!qa=FNction_PointerToSpriteData(Vo,qX$)
39490!qb=VALFNction_ReadIconText(Uj,Wj,6):IFok THEN
39510ol=2:om=!qb-1
39530ENDIF:IFol<1 THENol=1
39550IFol>!qb THENol=!qb
39560IFom<1 THENom=1
39570IFom>!qb THENom=!qb
39580PROCYg:qc=(om-ol)+1:OSCLI"CDir "+Zz$:PROCqd:IFqc>0 THEN
39650IF NOTWr THEN
39660PROCqe
39670ELSE:PROCqf
39690ENDIF
39700ENDIF
39720ENDIF:ENDPROC
39770DEFPROCqe:IFqc>0 THEN
39790SYS&406C0:PROCqf:REPEAT:qg%=((!qh-ol+1)/(om-ol+1))* 100:IFqg%>99 THENqg%=99
39840SYS&406C4,qg%:PROCWt:UNTIL NOTWY:SYS&406C1
39880ENDIF:ENDPROC
39920DEFPROCqf:PROCWi(Uj,Xt,3,""):WZ=FNction_SetIconWidth(Uj,Xt,WZ,1):PROCXU(Uj,Yq):PROCXU(Uj,Yt):PROCXU(Uj,Wj):PROCXU(Uj,Yl):PROCXU(Uj,Xw):PROCXU(Uj,Xz):PROCXU(Uj,Yn):PROCXs(Uj,Xt):!qh=ol:IF!qh=1 THEN!qh=2
40000qi=-1:qj=0:WY=TRUE:PROCqk:PROCql:ENDPROC
40080DEFPROCWt:IF NOTqm THEN
40100PROCqn(Wr)
40110ELSE:PROCqk:PROCqo
40140ENDIF:ENDPROC
40180DEFPROCqk:qi+=1:IFqi>fa%-2 THEN
40220qi=0:qj+=1:IFqj>fY%-2 THEN
40250PROCpe(pz,Wc$+".image"+RIGHT$("000"+STR$!qh,3)):qj=0:!qh+=1:PROCql:IF!qh>om THENWY= NOTTRUE
40300ENDIF
40310ENDIF:IFWY THEN
40340PROCqp(qi,qj):PROCqn(Wr)
40360ELSE:PROCXU(Uj,Xt):PROCqq:PROCXg
40400ENDIF:ENDPROC
40450DEFPROCql:qr$=FNction_TagToString("frme"):ZX$=" "+STR$(!qh-ol+1)+" ":qs$=FNction_TagToString("of"):ZY$=" "+STR$(om+1-ol):PROCWi(Uj,Xt,3,qr$+ZX$+qs$+ZY$):ENDPROC
40540DEFPROCqo:qt=(fa%-1)* (fY%-1):qu=1+qi+qj*(fa%-1):qv=qu/qt:WZ=FNction_SetIconWidth(Uj,Xt,WZ,464*qv):ENDPROC
40620DEFPROCqp(qw,qx):PROCqy(qw,qx,TRUE):!qz=rU%:!rV=rW%:!rX=rY%:!rZ=ra%:!rb=rc%:!rd=re%:!rf=rg%:!rh=ri%:PROCqy(qw,qx,NOTTRUE):!rj=rU%:!rk=rW%:!rl=rY%:!rm=ra%:!rn=rc%:!ro=re%:!rp=rg%:!rq=ri%:rr=!qh-1:az=!qb:ha=FNction_GetPercentage((!qh-1)/(!qb-1)*100,Uz)
40820!rs=!qz+((!rj-!qz)* ha ):!rt=!rX+((!rl-!rX)* ha ):!ru=!rb+((!rn-!rb)* ha ):!rv=!rf+((!rp-!rf)* ha ):!rw=!rV+((!rk-!rV)* ha ):!rx=!rZ+((!rm-!rZ)* ha ):!ry=!rd+((!ro-!rd)* ha ):!rz=!rh+((!rq-!rh)* ha ):!sU=FNction_Lowest_Quad_Y
40930!mX=FNction_GetPercentage(((!qh-1)/(!qb-1))*100,Ux)*256:ENDPROC
40980DEFPROCqy(x,y,qV):sV=fa%* 24:sW=fn+((y*sV) + ( x *24) ):sX=fn+((y*sV) + ((x+1)*24) ):sY=fn+(((y+1)*sV) + ( x *24) ):sZ=fn+(((y+1)*sV) + ((x+1)*24) ):fo=ABS((NOTqV)*8):rU%=sW!(fo+0):rW%=sW!(fo+4):rY%=sX!(fo+0):ra%=sX!(fo+4):rg%=sY!(fo+0):ri%=sY!(fo+4)
41080rc%=sZ!(fo+0):re%=sZ!(fo+4):ENDPROC
41120DEFFNction_Lowest_Quad_Y:sa=!rw:IF!rx<sa THENsa=!rx
41150IF!ry<sa THENsa=!ry
41160IF!rz<sa THENsa=!rz
41170=sa
41200DEFFNction_Highest_Quad_Y:sb=!rw:IF!rx>sb THENsb=!rx
41230IF!ry>sb THENsb=!ry
41240IF!rz>sb THENsb=!rz
41250=sb
41280DEFPROCqn(sc):!sd=FNction_Highest_Quad_Y:!se=FNction_Lowest_Quad_Y:IF NOTsc THEN
41320!sf=!sd-!se:CALLsg:qm=TRUE
41350ELSE:!sf=4:CALLsg:qm=!sU>!sd
41390ENDIF:ENDPROC
41430DEFPROCYk:WY= NOTTRUE:PROCXU(Uj,Xt):PROCqq:PROCXg:ENDPROC
41510DEFPROCqq:sh=FNction_AllocateMemory(-pw):ENDPROC
41560DEFPROCqd:PROCsi:PROCsj:ENDPROC
41620DEFPROCsi:IFok ORol=1 THEN
41640IF NOTVr THEN
41650A%=Vk:B%=pz:C%=Vl:CALLka:CALLsk:PROCpe(pz,Zz$+".image001"):PROCqU
41700ELSE:CALLsl:PROCpe(pz,Zz$+".image001")
41730ENDIF:qc-=1
41750ENDIF:IFol=1 THENol+=1
41770ENDPROC
41800DEFPROCsj:IFok ORom=!qb THEN
41820IF NOTVr THEN
41830A%=Vk:B%=pz:C%=Vl:CALLka:CALLsm:PROCpe(pz,Zz$+".image"+RIGHT$("000"+STR$!qb,3)):PROCqU
41880ELSE:CALLsn:PROCpe(pz,Zz$+".image"+RIGHT$("000"+STR$!qb,3))
41910ENDIF:qc-=1
41930ENDIF:IFom=!qb THENom-=1
41950ENDPROC
41980DEFPROCqU:A%=pv:B%=pz:C%=pw:CALLka:ENDPROC
42060DEFPROCVf(hn):hj=13:hk=14:hl=15:IFhn=0 THENDIMso 48*1024
42090P%=so:[OPT hn:.sp STMFD (hj)!,{hk}:LDR r10,fV:LDR r9,fX:LDR r8,mt:LDR r7,mu:MOV r12,#0:.sq MOV r11,#0:.sr MOV r0,r11:SUB r1,r9,r12:LDR r2,qY:MOV r3,r10:BL kv:MOV r6,r0:MOV r0,r11:SUB r1,r7,r12:LDR r2,qa:MOV r3,r8:BL kv:MOV r5,r0:MOV r0,r11
42320SUB r1,r9,r12:LDR r2,qY:MOV r3,r10:MOV r4,r5:BL lc:MOV r0,r11:SUB r1,r7,r12:LDR r2,qa:MOV r3,r8:MOV r4,r6:BL lc:ADD r11,r11,#1:CMP r11,r10:BNE sr:ADD r12,r12,#1:CMP r12,r9:BNE sq:LDMFD (hj)!,{PC}:.sl STMFD (hj)!,{hk}:LDR r7,fV:LDR r8,fX:LDR r9,px
42560LDR r10,py:MOV r5,#0:.ss MOV r6,#0:.st MOV r0,r5:SUB r1,r8,r6 : SUB r1,r1,#1:LDR r2,bt : SUB r0,r0,r2:LDR r2,bu : ADD r1,r1,r2:LDR r2,qY:MOV r3,r7:CMP r0,#0 : MOVLT r4,#0 : BLT su:CMP r1,#0 : MOVLT r4,#0 : BLT su:CMP r0,r7 : MOVGE r4,#0 : BGE su
42680CMP r1,r8 : MOVGE r4,#0 : BGE su:BL kv : MOV r4,r0 : .su:.sv MOV r0,r5:SUB r1,r10,r6 : sub r1,r1,#1:LDR r2,qZ:MOV r3,r9:LDR r11,db : ADD r0,r0,r11:LDR r11,dc : SUB r1,r1,r11:CMP r0,#0 : BLT sw:CMP r1,#0 : BLT sw:CMP r0,r9 : BGE sw:CMP r1,r10 : BGE sw
42800BL lc : .sw:.sx ADD r6,r6,#1:CMP r6,r8:BNE st:.sy ADD r5,r5,#1:CMP r5,r7:BNE ss:LDMFD (hj)!,{PC}:.sn STMFD (hj)!,{hk}:LDR r7,fV:LDR r8,fX:LDR r9,px:LDR r10,py:LDR r12,mt:MOV r5,#0:.sz MOV r6,#0:.tU MOV r0,r5:LDR r1,mu:SUB r1,r1,r6 : SUB r1,r1,#1
43010LDR r2,by : SUB r0,r0,r2:LDR r2,bz : ADD r1,r1,r2:LDR r2,qa:MOV r3,r12:CMP r0,#0 : MOVLT r4,#0 : BLT tV:CMP r1,#0 : MOVLT r4,#0 : BLT tV:CMP r0,r7 : MOVGE r4,#0 : BGE tV:LDR r4,mu:CMP r1,r4 : MOVGE r4,#0 : BGE tV:BL kv : MOV r4,r0 : .tV:.tW MOV r0,r5
43120SUB r1,r10,r6 : sub r1,r1,#1:LDR r2,qZ:MOV r3,r9:LDR r11,db : ADD r0,r0,r11:LDR r11,dc : SUB r1,r1,r11:CMP r0,#0 : BLT tX:CMP r1,#0 : BLT tX:CMP r0,r9 : BGE tX:CMP r1,r10 : BGE tX:BL lc : .tX:.tY ADD r6,r6,#1:CMP r6,r8:BNE tU:.tZ ADD r5,r5,#1
43260CMP r5,r7:BNE sz:LDMFD (hj)!,{PC}:.sm STMFD (hj)!,{hk}:LDR r12,fV:LDR r11,fX:MOV r10,#0:.ta MOV r9,#0:.tb MOV r0,r9:LDR r1,mu : SUB r1,r1,r10 : SUB r1,r1,#1:LDR r2,pr : SUB r0,r0,r2:LDR r3,ps : SUB r1,r1,r3:LDR r2,qa:LDR r3,mt
43420CMP r0,#0 : MOVLT r0,#0 : BLT tc:CMP r0,r3 : MOVGE r0,#0 : BGE tc:CMP r1,#0 : MOVLT r0,#0 : BLT tc:LDR r4,mu:CMP r1,r4 : MOVGE r0,#0 : BGE tc:BL kv : .tc:MOV r4,r0:MOV r0,r9:LDR r1,fX : SUB r1,r1,r10 : SUB r1,r1,#1:LDR r2,qZ:LDR r3,fV:BL lc
43540ADD r9,r9,#1:CMP r9,r12 : BNE tb:ADD r10,r10,#1:CMP r10,r11 : BNE ta:LDMFD (hj)!,{PC}:.sk STMFD (hj)!,{hk}:LDR r12,fV:LDR r11,fX:MOV r10,#0:.td MOV r9,#0:.te MOV r0,r9:LDR r1,fX : SUB r1,r1,r10 : SUB r1,r1,#1:LDR r2,pp : SUB r0,r0,r2
43720LDR r3,pq : SUB r1,r1,r3:LDR r2,qY:LDR r3,fV:CMP r0,#0 : MOVLT r0,#0 : BLT tf:CMP r0,r3 : MOVGE r0,#0 : BGE tf:CMP r1,#0 : MOVLT r0,#0 : BLT tf:LDR r4,fX:CMP r1,r4 : MOVGE r0,#0 : BGE tf:BL kv : .tf:MOV r4,r0:MOV r0,r9
43840LDR r1,fX : SUB r1,r1,r10 : SUB r1,r1,#1:LDR r2,qZ:LDR r3,fV:BL lc:ADD r9,r9,#1:CMP r9,r12 : BNE te:ADD r10,r10,#1:CMP r10,r11 : BNE td:LDMFD (hj)!,{PC}:.qY DCD 0:.qZ DCD 0:.qa DCD 0:.tg DCD 0:.sU DCD 0:.th DCD 0 : .ti DCD 0:.tj DCD 0 : .tk DCD 0
44100.tl DCD 0 : .tm DCD 0:.tn DCD 0 : .to DCD 0:.tp DCD 0 : .tq DCD 0:.tr DCD 0 : .ts DCD 0:.tt DCD 0 : .tu DCD 0:.tv DCD 0 : .tw DCD 0:.tx DCD 0 : .ty DCD 0:.tz DCD 0 : .uU DCD 0:.uV:.qz DCD 0 : .rV DCD 0:.rX DCD 0 : .rZ DCD 0:.rb DCD 0 : .rd DCD 0
44280.rf DCD 0 : .rh DCD 0:.uW:.rj DCD 0 : .rk DCD 0:.rl DCD 0 : .rm DCD 0:.rn DCD 0 : .ro DCD 0:.rp DCD 0 : .rq DCD 0:.uX:.rs DCD 0 : .rw DCD 0:.rt DCD 0 : .rx DCD 0:.ru DCD 0 : .ry DCD 0:.rv DCD 0 : .rz DCD 0:.qb DCD 0:.qh DCD 0:.sd DCD 0:.se DCD 0
44530.ax DCD 1:.sf DCD 0:.db DCD 0:.dc DCD 0:.bt DCD 0:.bu DCD 0:.by DCD 0:.bz DCD 0:.fV DCD 0 : .fX DCD 0:.mt DCD 0 : .mu DCD 0:.gc DCD 0 : .gb DCD 0:.px DCD 0 : .py DCD 0:.pp DCD 0:.pq DCD 0:.pr DCD 0:.ps DCD 0:.pt DCD 0:.pu DCD 0:.uY STMFD (hj)!,{hk}
44890MVN r0,#0:STR r0,tg:BL uZ:BL ua:LDR r0,rb : LDR r1,rf:SUB r0,r0,r1 : STR r0,th:LDR r0,rd : LDR r1,rh:SUB r0,r0,r1 : STR r0,ti:LDR r0,rX : LDR r1,qz:SUB r0,r0,r1 : STR r0,tl:LDR r0,rZ : LDR r1,rV:SUB r0,r0,r1 : STR r0,tm:LDR r0,rn : LDR r1,rp
45020SUB r0,r0,r1 : STR r0,tp:LDR r0,ro : LDR r1,rq:SUB r0,r0,r1 : STR r0,tq:LDR r0,rl : LDR r1,rj:SUB r0,r0,r1 : STR r0,tt:LDR r0,rm : LDR r1,rk:SUB r0,r0,r1 : STR r0,tu:LDMFD (hj)!,{PC}:.sg STMFD (hj)!,{hk}:.ub BL uY:LDR r0,uc:STR r0,tg
45220.ud BL ue : LDR r0,uf : CMP r0,#0 : BNE ug:BL uh : LDR r0,ui : CMP r0,#0 : BNE ug:.uj BL uk:LDR r0,tz : ADD r0,r0,#1:LDR r1,uU : ADD r1,r1,#2:LDR r2,fX:SUB r1,r2,r1:LDR r2,pp : SUB r0,r0,r2:LDR r3,pq : SUB r1,r1,r3:LDR r4,fV:LDR r5,fX
45330CMP r0,#0 : BLT ul:CMP r0,r4 : BGE ul:CMP r1,#0 : BLT ul:CMP r1,r5 : BGE ul:LDR r2,um:LDR r2,[r2]:LDR r3,fV:BL kv:STR r0,un:B uo:.ul MOV r0,#0:STR r0,un:.uo BL up:LDR r0,tz : ADD r0,r0,#1:LDR r1,uU : ADD r1,r1,#2:LDR r2,mu:SUB r1,r2,r1
45500LDR r2,pr : SUB r0,r0,r2:LDR r3,ps : SUB r1,r1,r3:LDR r4,mt:LDR r5,mu:CMP r0,#0 : BLT uq:CMP r0,r4 : BGE uq:CMP r1,#0 : BLT uq:CMP r1,r5 : BGE uq:LDR r2,ur:LDR r2,[r2]:LDR r3,mt:BL kv:STR r0,us:B ut:.uq MOV r0,#0:STR r0,us:.ut LDR r0,un:LDR r1,us
45690CMP r0,r1:BLNE lq:MOV r4,r0:LDR r0,tg:LDR r1,sU:LDR r2,fV:CMP r0,r2:BGE uu:LDR r2,py : SUB r1,r2,r1 : SUB r1,r1,#1:LDR r2,db : ADD r0,r0,r2:LDR r3,dc : SUB r1,r1,r3:LDR r5,px:LDR r6,py:CMP r0,#0 : BLT uu:CMP r0,r5 : BGE uu:CMP r1,#0 : BLT uu
45840CMP r1,r6 : BGE uu:LDR r2,uv:LDR r2,[r2]:LDR r3,px:BL lc:.uu:.ug LDR r0,tg:ADD r0,r0,#1:STR r0,tg:LDR r1,uw:CMP r0,r1:BLE ud:.ux LDR r0,sU:ADD r0,r0,#1:STR r0,sU:LDR r1,sd:CMP r0,r1:LDMGTFD (hj)!,{PC}:LDR r1,sf:SUBS r1,r1,#1:STR r1,sf:BNE ub
46110LDMFD (hj)!,{PC}:.um DCD qY:.uv DCD qZ:.ur DCD qa:.un DCD 0:.us DCD 0:.uc DCD 0:.uy DCD 0:.uZ STMFD (hj)!,{hk}:LDR r3,rs:LDR r4,rv:SUBS r5,r3,r4:STREQ r3,uc:LDMEQFD (hj)!,{PC}:LDR r0,rw:LDR r1,rz:SUB r0,r0,r1:MOV r1,r5:mov r0,r0,asl #8:BL uz:STR r0,uy
46440LDR r0,sU:LDR r1,rz:SUB r0,r0,r1:LDR r1,uy:mov r0,r0,asl #8:BL uz:LDR r1,rv:ADD r0,r0,r1:STR r0,uc:LDMFD (hj)!,{PC}:.uw DCD 0:.vU DCD 0:.ua STMFD (hj)!,{hk}:LDR r3,rt:LDR r4,ru:SUBS r5,r3,r4:STREQ r3,uw:LDMEQFD (hj)!,{PC}:LDR r0,rx:LDR r1,ry
46760SUB r0,r0,r1:MOV r1,r5:mov r0,r0,asl #8:BL uz:STR r0,vU:LDR r0,sU:LDR r1,ry:SUB r0,r0,r1:LDR r1,vU:mov r0,r0,asl #8:BL uz:LDR r1,ru:ADD r0,r0,r1:STR r0,uw:LDMFD (hj)!,{PC}:.vV DCD 0:.vW DCD 0:.uf DCD 0:.ue STMFD (hj)!,{hk}:LDR r3,rw:LDR r4,rx
47090SUBS r5,r3,r4:STREQ r3,vV:BEQ vX:MOV r0,r5:LDR r1,rs:LDR r2,rt:SUB r1,r1,r2:mov r0,r0,asl #11:BL uz:STR r0,vW:LDR r0,tg:LDR r1,rs:SUB r0,r0,r1:LDR r1,vW:MUL r0,r1,r0:mov r0,r0,asr #11:LDR r1,rw:ADD r0,r0,r1:STR r0,vV:.vX LDR r0,sU:LDR r1,vV:CMP r0,r1
47370MVNGE r0,#0:MOVLT r0,#0:STR r0,uf:LDMFD (hj)!,{PC}:.vY DCD 0:.vZ DCD 0:.ui DCD 0:.uh STMFD (hj)!,{hk}:LDR r3,rz:LDR r4,ry:SUBS r5,r3,r4:STREQ r3,vY:BEQ va:MOV r0,r5:LDR r1,rv:LDR r2,ru:SUB r1,r1,r2:mov r0,r0,asl #11:BL uz:STR r0,vZ:LDR r0,tg:LDR r1,rv
47700SUB r0,r0,r1:LDR r1,vZ:MUL r0,r1,r0:mov r0,r0,asr #11:LDR r1,rz:ADD r0,r0,r1:STR r0,vY:.va LDR r0,sU:LDR r1,vY:CMP r0,r1:MVNLT r0,#0:MOVGE r0,#0:STR r0,ui:LDMFD (hj)!,{PC}:.uk STMFD (hj)!,{hk}:LDR r0,tg:LDR r1,uc:SUB r0,r0,r1:LDR r1,uw:LDR r2,uc
48000SUB r1,r1,r2:mov r0,r0,asl #8:BL uz:STR r0,ac:LDR r0,sU:LDR r1,vY:SUB r0,r0,r1:LDR r1,vV:LDR r2,vY:SUB r1,r1,r2:mov r0,r0,asl #8:BL uz:STR r0,ad:LDR r0,rf:LDR r1,th:LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tj:LDR r0,rh:LDR r1,ti
48250LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tk:LDR r0,qz:LDR r1,tl:LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tn:LDR r0,rV:LDR r1,tm:LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,to:LDR r0,tn:LDR r1,tj
48490SUB r0,r0,r1:STR r0,tx:LDR r0,to:LDR r1,tk:SUB r0,r0,r1:STR r0,ty:LDR r0,tj:LDR r1,tx:LDR r2,ad:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tz:LDR r0,tk:LDR r1,ty:LDR r2,ad:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,uU:LDMFD (hj)!,{PC}
48800.up STMFD (hj)!,{hk}:LDR r0,tg:LDR r1,uc:SUB r0,r0,r1:LDR r1,uw:LDR r2,uc:SUB r1,r1,r2:mov r0,r0,asl #8:BL uz:STR r0,ac:LDR r0,sU:LDR r1,vY:SUB r0,r0,r1:LDR r1,vV:LDR r2,vY:SUB r1,r1,r2:mov r0,r0,asl #8:BL uz:STR r0,ad:LDR r0,rp:LDR r1,tp:LDR r2,ac
49050MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tr:LDR r0,rq:LDR r1,tq:LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,ts:LDR r0,rj:LDR r1,tt:LDR r2,ac:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tv:LDR r0,rk:LDR r1,tu:LDR r2,ac
49290MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tw:LDR r0,tv:LDR r1,tr:SUB r0,r0,r1:STR r0,tx:LDR r0,tw:LDR r1,ts:SUB r0,r0,r1:STR r0,ty:LDR r0,tr:LDR r1,tx:LDR r2,ad:MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,tz:LDR r0,ts:LDR r1,ty:LDR r2,ad
49550MUL r3,r1,r2:mov r3,r3,asr #8:ADD r0,r0,r3:STR r0,uU:LDMFD (hj)!,{PC}:.ac DCD 0:.ad DCD 0:.uz ADR r2,vb:cmp r1,#0:addgt r1,r1,#1:suble r1,r1,#1:CMP r1,#0:MVNLT r1,r1:ADDLT r1,r1,#1:LDR r2,[r2,r1,ASL #2]:MUL r0,r2,r0:MVNLT r0,r0:ADDLT r0,r0,#1
49900MOV r0,r0,ASR #16:MOV PC,hk:.vb DCD 1: FNction_Reciprocals:]:ENDPROC
50030DEFFNction_Reciprocals:IFhn<2 THEN
50050P%+=8192* 4
50060ELSE:FORi=1 TO8192:!P%=(1/i)* 2^16:P%+=4:NEXTi
50110ENDIF:=hn
50930DEFFNction_InitialiseTask(vc,vd$):LOCALcZ,cb:SYS&400C0,vc,&4B534154,vd$+CHR$0 TOcZ,cb:ve=cb:=ve
51000DEFPROCXb(ve):SYS&400DD,ve,"TASK":ENDPROC
51050DEFFNction_ReportError(Xc,vf,ak$,Yi$,vg,vh):LOCALao,cb,vi:$Xc=ak$+CHR$0:Xc!32=vf:$(Xc+36)=Yi$+CHR$0:ao=(ABSvg*2^0)+(ABSvh*2^1):SYS&400DF,Xc+32,ao,Xc TO,cb:vi=cb:=vi
51170DEFPROCWw(Xj,Xc,Xn,vj):IF NOTvj THEN
51190!Xc=Xn:SYS&400CB,,Xc:SYS&400C5,,Xc
51220ELSE:!Xc=!Xj:SYS&400CB,,Xc:vk=Xc!28:vl=Xj!28:IFvl=-1 THEN
51280CASE!Xj OF
51290WHENWx:!Xc=Wz:SYS&400CB,,Xc:IFXc!28=-1 THENXj!28=vk
51320ENDCASE
51330ENDIF:SYS&400C5,,Xj
51350ENDIF:ENDPROC
51390DEFPROCXU(Xc,Xn):Xc!0=Xn:SYS&400C6,,Xc:ENDPROC
51450DEFPROCXs(Xc,Xn):LOCALaa,ab,vm,vn,vo,vp:Xc!0=Xn:SYS&400CC,,Xc:aa=ABSXc!52:IFaa>1000 THENaa=1000
51500ab=ABSXc!48:IFab>512 THENab=512
51510Xc!0=4:Xc!4=5:Xc!8=11:Xc!12=12:Xc!16=-1:SYS&31,Xc,Xc+32:vm=Xc!32:vn=Xc!36:vo=Xc!40:vp=Xc!44:x=vo* 2^vm :y=vp* 2^vn:x=(x-aa) DIV2:y=(y-ab) DIV2:Xc!(0)=Xn:Xc!(4+0)=x:Xc!(4+4)=y:Xc!(4+8)=Xc!(4+0)+aa:Xc!(4+12)=Xc!(4+4)+ab:Xc!28=-1:SYS&400C5,,Xc:ENDPROC
51670DEFPROCnZ(Xc,Xn,vq,vr,vs,vt):Xc!0=vq:Xc!4=vs:Xc!8=vr:Xc!12=vt:SYS&400D7,Xn,Xc:ENDPROC
51760DEFFNction_WindowIsOpen(Xc,Xn):LOCALvu,vv:Xc!0=Xn:SYS&400CB,,Xc:vu=Xc!32:vv=(vu AND2^16)=2^16:=vv
51850DEFPROCYr(Xc,Xn):LOCALaa,ab,vw,vx:LOCALvy,vz,wU,wV:Xc!0=Xn:SYS&400CC,,Xc:aa=Xc!12-Uj!4:ab=Xc!16-Xc!8:vw=Xc!20:vx=Xc!24:vy=vw:wV=vx:wU=wV-ab:vz=vy+aa:SYS&400D1,Xn,vy,wU,vz,wV:ENDPROC
51980DEFPROCwW(Xc,Xn,Xd):Xc!0=Xn:Xc!4=Xd:Xc!8=0:Xc!12=0:SYS&400CD,,Xc:ENDPROC
52070DEFPROCZa(Xn,Xd,wX):SYS&400D2,Xn,Xd,0,0,-1,wX:ENDPROC
52120DEFPROCZb:SYS&400D2,-1,-1,-1,-1,-1,-1:ENDPROC
52170DEFFNction_ReadIconText(Xc,Xn,Xd):LOCALao,wY,as$:Xc!0=Xn:Xc!4=Xd:SYS&400CE,,Xc:ao=Xc!(8+16):wY=(ao AND2^8)=2^8:IFwY THEN
52250as$=FNction_ExtractString(Xc!(8+20))
52260ELSE:as$=FNction_ExtractString(Xc+8+20)
52280ENDIF:=as$
52320DEFPROCWi(Xc,Xn,Xd,wZ$):LOCALao,wY:Xc!0=Xn:Xc!4=Xd:SYS&400CE,,Xc:ao=Xc!(8+16):wY=(ao AND2^8)=2^8:IFwY THEN
52400$(Xc!(8+20))=wZ$
52410ELSE:$(Xc+8+20)=wZ$
52430ENDIF:Xc!0=Xn:Xc!4=Xd:Xc!8=0:Xc!12=0:SYS&400CD,,Xc:ENDPROC
52520DEFPROCZe(wa):SYS&400DC,wa:ENDPROC
52570DEFFNction_ExtractString(wb):wc$="":WHILE?wb>31:wc$+=CHR$?wb:wb+=1:ENDWHILE:=wc$
52660DEFPROCaf(Xc,Zz$):$Xc=Zz$+CHR$0:SYS&400D9,,Xc:ENDPROC
52720DEFFNction_LoadTemplate(wd,we,wf,wg$):LOCALcc,wh,wi,wj,wk:SYS&400DB,,wd,we,wf,-1,wg$,0 TO,,cc:wh=wd!84:wi=cc:=cc:wj=0:WHILEwj<wh:wk=wd+88+wj*32:IF(wk!16 AND&103)=&102 THENwk!24=Up
52840wj+=1:ENDWHILE:=wi
52890DEFFNction_MakeTemplateAWindow(wd):LOCALXn:SYS&400C1,,wd TOXn:=Xn
52950DEFPROCai:SYS&400DA:ENDPROC
53000DEFFNction_PollWimp(Xj,wl):LOCALcZ:SYS&400C7,wl,Xj TOcZ:wm=cZ:=wm
53070DEFFNction_PollWimpIdle(Xj,wl,wn):LOCALcZ:SYS&400E1,wl,Xj,wn TOcZ:wm=cZ:=wm
53140DEFFNction_SetSlotSize(wo):LOCALcZ,cb,cc,wp:SYS&400EC,wo,-1 TOcZ,cb,cc:wp=cZ:=wp
53210DEFFNction_ReadSlotSize:LOCALcZ,cb,cc,wp:SYS&400EC,-1,-1 TOcZ,cb,cc:wp=cZ:=wp
53280DEFFNction_ReadSizeOfFreePool:LOCALcZ,cb,cc,wq:SYS&400EC,-1,-1 TOcZ,cb,cc:wq=cc:=wq
53350DEFPROCXr(Xc):LOCALvm,vn,vo,vp:Xc!0=4:Xc!4=5:Xc!8=11:Xc!12=12:Xc!16=-1:SYS&31,Xc,Xc+32:vm=Xc!32:vn=Xc!36:vo=Xc!40:vp=Xc!44:MOUSERECTANGLE0,0,vo*2^vm,vp*2^vn:ENDPROC
53460DEFPROChi(Xc,Xn):LOCALaa,ab,vm,vn,vo,vp:!Xc=Xn:SYS&400CC,,Xc:aa=ABSXc!52:ab=ABSXc!48:Xc!0=4:Xc!4=5:Xc!8=11:Xc!12=12:Xc!16=-1:SYS&31,Xc,Xc+32:vm=Xc!32:vn=Xc!36:vo=Xc!40:vp=Xc!44:x=vo* 2^vm :y=vp* 2^vn:x=(x-aa)/2:y=(y-ab)/2:Xc!0=Xn:Xc!(0+4+0)=x:Xc!(0+4+4)=y
53610Xc!(0+4+8)=Xc!(0+4+0)+aa:Xc!(0+4+12)=Xc!(0+4+4)+ab:SYS&400C5,,Xc:x=((vo*2^vm)-aa ) / 2:y=((vp*2^vn)-ab) / 2:MOUSERECTANGLEx,y,aa,ab:ENDPROC
53700DEFPROCwr(Xc,Xn,Xd,ws,wt):!Xc=Xn:SYS&400CC,,Xc:wu=Xc!4:wv=Xc!8:ww=Xc!12:wx=Xc!16:Xc!0=Xn:Xc!4=Xd:SYS&400CE,,Xc:wy=Xc!8:wz=Xc!12:xU=Xc!16:xV=Xc!20:xW=xU-wy:xX=xV-wz:Zl=wu+wy:Zo=wx+wz:MOUSERECTANGLEZl+ws,Zo+wt,xW-ws*2,xX-wt*2:ENDPROC
53860DEFPROCdh(Xc,Xn,Xk,Xl):!Xc=Xn:SYS&400CC,,Xc:dj=Xc!4-Xc!20:dl=Xl-(Xc!16-Xc!24):dj=Xk-dj:hV%=dj:hX%=dl:ENDPROC
53970DEFPROCWy(Xc,Xn,xY):Xc!0=Xn:SYS&400CC,,Xc:xZ=Xc!4:ft=Xc!12:xa=Xc!8:fu=Xc!16:xb=Xc!28:Xc!0=xY:SYS&400CC,,Xc:Xc!4=xZ+8:Xc!12=ft-16:Xc!8=xa+8:Xc!16=Xc!8+424:Xc!20=0:Xc!28=xb:SYS&400C5,,Xc:ENDPROC
54100DEFFNction_WordAlign(eU):=((eU+3) AND(NOT3))
54140DEFFNction_InstallHelp:SYS&1E,6,,,16 TO,,cc:Vi=cc:SYS&41501,Vi,"<"+Uc$+"$Dir>.Messages",0:=Vi
54210DEFPROCXa(xc):SYS&41504,xc:SYS&1E,7,,xc:ENDPROC
54270DEFFNction_TagToString(ch$):SYS&41502,Vi,ch$,0,0,0,0,0,0 TO,,cc:=FNction_ExtractString(cc)
54320DEFPROCxd(xe,xf,xg):xh=xe:xi=xf:xj=xg:Va=4:PROCwr(Uj,xh,xj,16,0):SYS&1C TOcl,cm,cu:xk=cl-1:PROCxl:ENDPROC
54450DEFPROCxl:CASExh OF
54480WHENxm:CASExj OF
54490WHEN4:xn=FNction_DragABar(xn,6):s=INT(127*(xo/100)):PROCWi(Uj,xm,30,STR$s):SYS&90083,s
54530ENDCASE
54540ENDCASE:ENDPROC
54580DEFFNction_DragABar(xf,xg):SYS&1C TOcl,cm,cu:IFcu=0 THEN
54660Va=0:PROCXr(Uj)
54690ELSE:IFcl<>xk THEN
54740!Uj=xh:SYS&400CC,,Uj:wu=Uj!4:xp=cl-wu:Uj!0=xh:Uj!4=xf:SYS&400CE,,Uj:wy=Uj!(8+0):wz=Uj!(8+4):xU=Uj!(8+8):xV=Uj!(8+12):Uj!(100+0)=xh:Uj!(100+4)=xf:SYS&400C4,,Uj+100:SYS&400D1,xh,wy,wz,xU,xV:Uj!(8+8)=xp:Uj!4=xh:SYS&400C2,,Uj+4 TOxf:PROCwW(Uj,xh,xf):Uj!0=xh
55010Uj!4=xj:SYS&400CE,,Uj:xq=Uj!(8+8)-16:xk=cl:xo=INT((xp/xq)*100)
55080ENDIF
55100ENDIF:=xf
55150DEFPROCxr(Xc,Xn,xs$):LOCALao,wY:!Xc=Xn:SYS&400CC,,Xc:ao=Xc!(4+56):wY=(ao AND2^8)=2^8:IFwY THEN
55220dz=!(Xc+4+72):$!(Xc+4+72)=xs$+CHR$0
55240ELSE:$(Xc+4+72)=wZ$+CHR$0
55260ENDIF:ENDPROC
55300DEFPROCgx(Xc,Xn,Xd,xt):Xc!0=Xn:Xc!4=Xd:Xc!8=(ABSxt)<<21:Xc!12=1<<21:SYS&400CD,,Xc:ENDPROC
55390DEFPROCgy(Xc,Xn,Xd,xu):Xc!0=Xn:Xc!4=Xd:Xc!8=(ABSxu)<<22:Xc!12=1<<22:SYS&400CD,,Xc:ENDPROC
55480DEFFNction_IconIsToggled(Xc,Xn,Xd):Xc!0=Xn:Xc!4=Xd:SYS&400CE,,Xc:xv=(Xc!(8+16)) AND2^21:=NOT(xv=2^21)
55560DEFPROCxw(Xc,Xn,Xd):PROCgx(Xc,Xn,Xd,FNction_IconIsToggled(Xc,Xn,Xd)):ENDPROC
55610DEFFNction_WindowWithCaret(Xc):SYS&400D3,,Xc:=Xc!0
55660DEFFNction_IconWithCaret(Xc):SYS&400D3,,Xc:=Xc!4
55710DEFFNction_PathnameOnly(Zz$):IFZz$="" ORINSTR(Zz$,".")=0 THEN=""
55730LOCALi:i=LENZz$:WHILEMID$(Zz$,i,1)<>".":i-=1:ENDWHILE:=LEFT$(Zz$,i-1)
55810DEFFNction_LeafnameOnly(Zz$):IFZz$="" THEN=""
55830LOCALi:i=LENZz$:WHILEMID$(Zz$,i,1)<>"." ANDi>0:i-=1:ENDWHILE:=MID$(Zz$,i+1,LENZz$)
55910DEFPROCcU(Xc,ci,bm,pg):Xc!0=ci:Xc!4=bm:Xc!8=pg<<28:Xc!12=15<<28:SYS&400CD,,Xc:ENDPROC
56000DEFPROCWk(Xc,ci,bm,pg):Xc!0=ci:Xc!4=bm:Xc!8=pg<<24:Xc!12=15<<24:SYS&400CD,,Xc:ENDPROC
56090DEFFNction_ColourOfIcon(Xc,ci,bm):Xc!0=ci:Xc!4=bm:SYS&400CE,,Xc:pg=((Xc!(8+16)) AND(15<<28))>>28:=(pg AND15)
56170DEFFNction_SetIconWidth(Xc,ci,bm,xx):!Xc=ci:SYS&400CC,,Xc:wu=Xc!4:xp=wu+xx:Xc!0=ci:Xc!4=bm:SYS&400CE,,Xc:wy=Xc!(8+0):wz=Xc!(8+4):xU=Xc!(8+8):xV=Xc!(8+12):Xc!(100+0)=ci:Xc!(100+4)=bm:SYS&400C4,,Xc+100:IFwy+xx<xU THEN
56360SYS&400D1,ci,wy,wz,xU,xV
56370ENDIF:Xc!(8+8)=wy+xx:Xc!4=ci:SYS&400C2,,Xc+4 TOxf:SYS&400D1,ci,xU-4,wz,Xc!(8+8),xV:=xf
56490DEFFNction_IdentifyOS(Xc):OSCLI"Set Version NEW":OSCLI"RmEnsure UtilityModule 3.50 Set Version OLD":SYS&23,"Version",Xc,16,0,0 TOcZ,cb,cc,cd,ce:OSCLI"Unset Version":=LEFT$(FNction_ExtractString(Xc),3)
56570DEFPROCnz(Xc,ci,xy,xz):!Xc=ci:SYS&400CC,,Xc:Xc!12=Xc!4+xy:Xc!16=Xc!8+xz:SYS&400C5,,Xc:ENDPROC
P-���:�"Fatal Error : ";�$;" at Line ";�:�
Z
�UV:��UW
x �UX:�
����UV:UY=4:UZ=2:Ua=1:Ub=-2:Uc$="Morph":Ud$="Morph":Ue=&FF9:Uf=&3E1:Ug=6*1024 :�Uh Ug:Ui=6*1024 :�Uj Ui:Uk=6*1024 :�Ul Uk:Um=6*1024 :�Un Um:Uo=24*1024 :�Up Uo:Uq=6*1024 :�Ur Uq:�Us 1024*2:�Ut 1024:�Uu 1024:�Uv 1024:�Uw 1024:�Ux 10:�Uy(Ux):�Uz 10:�Uy(Uz)
��VU=0:VV= ��:VW=0:�VX 32:VY=�ction_InitialiseTask(2*100,Ud$):VZ=0:Va=0:�Vb:�Vc:�Vd:�Ve:�Vf(0):�Vg(0):�Vf(2):�Vg(2):Vh=�ction_IconbarSprite(Uj):Vi=�ction_InstallHelp:Vj= ��:Vk=0:Vl=0:Vm= ��:Vn= ��:Vo=0:Vp=0:Vq= ��:Vr= ��:Vs=0:Vt=0:Vu= ��:Vv%=0:Vw%=0
X�Vx%=0:Vy%=0:Vz%=0:WU%=0:WV=0:WW=15:WX= ��:WY= ��:WZ=1:Wa=-1:Wb$="Morph-Data":Wc$="Frames":Wd=0:�We:�Wf(1):�Wg(1):�Wh("SOURCE",1,1):�Wh("DEST",1,1):�Wi(Uj,Wj,1,�ction_TagToString("srce")+�ction_TagToString("none"))
*n�Wi(Uj,Wj,3,�ction_TagToString("dest")+�ction_TagToString("none")):�Wk(Uj,Wj,1,3):�Wk(Uj,Wj,3,3):�Wl:�Wm:�
�/��UX:�Wn:�:Wo=�ction_PollWimp(Uh,VU):ȎWo �
��0:�Va=1 ��Wp
��Va=2 �Va=3 ��Wq
�
�WY �Wr �
��Ws:�Wt
� �:�Wu
�1:�Wv(Uh)
�2:�Ww(Uh,Uj,-1,�):Ȏ!Uh �
$�Wx:�Wy(Uj,Wx,Wz)
.�
8�3:�XU(Uj,Uh!0)
B�6:�XV(Uh)
L�7:�XW(Uh)
V�8:�XX(Uh)
`�9:�XY(Uh)
j�17:�XZ(Uh)
t�18:�XZ(Uh)
~�:�VV:�Xa(Vi):�Xb(VY):�
�ݤction_IconbarSprite(Xc):Xc!0=-1:Xc!4=0:Xc!8=0:Xc!12=68:Xc!16=68:Xc!20=2^1+2^3+2^4+2^8+(3<<12):$VX=�(�"a"+VW):Xc!24=VX:Xc!28=Up:Xc!32=2:ș&400C2,,Xc �Xd:Xe=�:=Xd
�R��We:Uj!0=Ub:Uj!4=Vh:ș&400CE,,Uj:$VX=�(�"a"+VW):Uj!8=0:Uj!12=0:ș&400CD,,Uj:�
���Ws:Xf=�-Xe:�Xf>8 �
VW=(VW+1) �16:�We:Xe=�
"�:�
J��Xg:VW=0:�We:�
�*��Vd:�Xh(Up,Uo):Ȏ�ction_SpritesType �
�$�1:�Xi(Up,"<Morph$Dir>.Sprites")
�&�2:�Xi(Up,"<Morph$Dir>.Sprites22")
�&�3:�Xi(Up,"<Morph$Dir>.Sprites23")
��:�
�=��XV(Xj):Xk=Xj!0:Xl=Xj!4:Xm=Xj!8:Xn=Xj!12:Xd=Xj!16:ȎXm �
D�UY:ȎXn �
N�Xo:�Xd=3 �
X�XU(Uj,Xn):�Xp
l�
v�Xq:�Xd=5 �
��XU(Uj,Xn):�Xr(Uj)
��
��Ub:�Xd=Vh �
�� �WY �
��Xs(Uj,Wj)
��:�Xs(Uj,Xt)
��
��
��Wj:ȎXd �
��0:�Vj �
��(-2) �
"Xu=�ction_LaunchObject(Xv$,Xu)
�:�Ww(Uh,Uj,Xw, ��)
�
*�
4�2:�Vn �
>�(-2) �
H"Xx=�ction_LaunchObject(Xy$,Xx)
R�:�Ww(Uh,Uj,Xz, ��)
f�
p�
z
�7:�YU
�
�8:�YV
�
�9:�YW
��
��YX:ȎXd �
��0:�YY(+1,0)
��1:�YY(-1,0)
��5:�YY(0,+1)
��6:�YY(0,-1)
��
��Xw:ȎWX �
�ɣ:�YZ(Xn,Xk,Xl,�)
�ɹ:�Ya(Xn,Xk,Xl, ��,�)
�,�:�(-2) �Xu=�ction_LaunchObject(Xv$,Xu)
�Xz:ȎWX �
ɣ:�YZ(Xn,Xk,Xl,�)
$ɹ:�Ya(Xn,Xk,Xl, ��,�)
.,�:�(-2) �Xx=�ction_LaunchObject(Xy$,Xx)
B�Wz:ȎXd �
L
�9:�Yb
V
�5:�Yc
`
�4:�Yd
j�3:�Ye("All")
t�7:�Ye("From")
~�
��Wx:ȎXd �
� �2:�Yf:�XU(Uj,Xn):�XU(Uj,Wz)
�$�1:�XU(Uj,Xn):�XU(Uj,Wz):�Yg:�Yd
� �0:�Yh:�XU(Uj,Xn):�XU(Uj,Wz)
��
�Xt:�Xd=2 �
XYi$=�ction_TagToString("err11"):Yj=�ction_ReportError(Uj,99,Uc$,Yi$,�,�):�Yj<>1 ��Yk
(�
2�Yl:�Xd=2 ��Ym( ��)
<�Yn:�Vr ��(-2) �
F"Yo=�ction_LaunchObject(Yp$,Yo)
P�
Z�Yq:�Xd=0 �
d�Uy(Ux):�Yr(Uj,Xn)
x�:�Ys(Xn,Xk,Xl,Ux)
��
��Yt:�Xd=0 �
��Uy(Uz):�Yr(Uj,Xn)
��:�Ys(Xn,Xk,Xl,Uz)
��
��
��UZ:ȎXn �
��Ub:�Xd=Vh �
�Yu(Xk)
�
�Xw:�Yv(Xk,Xl)
"�Xz:�Yw(Xk,Xl)
,�Yn:�Yx(Xk,Xl)
6�Wj:ȎXd �
@
�7:�YU
J
�8:�YV
T�
^�
|�Ua:ȎXn �
��Wj:ȎXd �
�
�7:�YU
�
�8:�YV
��
��Xw:ȎWX �
�ɣ:�YZ(Xn,Xk,Xl, ��)
�ɹ:�Ya(Xn,Xk,Xl,�, ��)
��
��Xz:ȎWX �
�ɣ:�YZ(Xn,Xk,Xl, ��)
�ɹ:�Ya(Xn,Xk,Xl,�, ��)
��
��Wx:ȎXd �
�2:�Yf
�1:�Yg:�Yd
&
�0:�Yh
0�
:�Wz:ȎXd �
D
�4:�Yd
N�3:�Ye("All")
X�7:�Ye("From")
b�
l�Yl:�Xd=2 ��Ym(�)
v�Yn:�Vr ��Yy(Xk,Xl)
��
��64:ȎXn �
��Xw:ȎWX �
�ɣ:Va=2:�Yz(Xn,Xk,Xl)
� ɹ:�WV>0 �Va=3:�ZU(Xn,Xk,Xl)
��
��Xz:ȎWX �
�ɣ:Va=2:�Yz(Xn,Xk,Xl)
� ɹ:�WV>0 �Va=3:�ZU(Xn,Xk,Xl)
��
��Yl:�Xd=Wa �
&Va=4:Yj=�ction_BeginDrag(Uj,Xn,Xd)
�
�
>�16:ȎXn �
R�Xw:�WV=0 �
\Va=1:�ZV(Xn,Xk,Xl)
f�:ȎWX �
zɣ:Va=2:�Yz(Xn,Xk,Xl)
�ɹ:Va=3:�ZU(Xn,Xk,Xl)
��
��
��Xz:�WV=0 �
�Va=1:�ZV(Xn,Xk,Xl)
��:ȎWX �
�ɣ:Va=2:�Yz(Xn,Xk,Xl)
�ɹ:Va=3:�ZU(Xn,Xk,Xl)
��
��
�Yn:Va=1:�ZV(Xn,Xk,Xl)
�
.�:�
V,��XX(Xj):Xn=Xj!0:Xd=Xj!4:ZW=Xj!24:ȎXn �
��YX:ȎXd �
��2:�ZW=13 �
�dZX=��ction_ReadIconText(Uj,YX,2):ZY=��ction_ReadIconText(Uj,YX,4):�VZ=5 �ZZ$="SOURCE"�ZZ$="DEST"
�B�Wh(ZZ$,ZX,ZY):ZY$=�ction_ReadIconText(Uj,YX,4):�Za(YX,4,�ZY$)
��
��4:�ZW=13 �
�dZX=��ction_ReadIconText(Uj,YX,2):ZY=��ction_ReadIconText(Uj,YX,4):�VZ=5 �ZZ$="SOURCE"�ZZ$="DEST"
�Wh(ZZ$,ZX,ZY):�Zb
�
(�
2�Wj:ȎXd �
<�6:�ZW=13 ��Zb
F�
P�Yl:�Xd=0 �ZW=13 �
Z�Ym( ��)
d�
n�Xw:ȎZW �
xɗ"X"-64:�Zc
��
��Xz:ȎZW �
�ɗ"X"-64:�Zc
��
��Wz:�ZW=13 �
�
ȎXd �
�7�11:Zd$=�ction_ReadIconText(Uj,Xn,8):�Za(Xn,8,�Zd$)
� �8:�Yh:�XU(Uj,Xn):�XU(Uj,Wx)
�9�13:Zd$=�ction_ReadIconText(Uj,Xn,14):�Za(Xn,14,�Zd$)
!�14:�Yh:�XU(Uj,Xn):�XU(Uj,Wx)
"�
,�
6�:�Ze(ZW):�
h��XZ(Xj):ȎXj!16 �
|�0:� �WY �
�VV=�
�Z�:Yi$=�ction_TagToString("err12"):Yj=�ction_ReportError(Uj,99,Uc$,Yi$,�,�):VV= �(Yj=1)
��
��2:�Zf(Xj)
��3:�Zg(Xj)
��5:�Xj!40=Uf ��Zg(Xj)
��9:�Zh:�Zi
��&502:�Zj(Xj)
��&400C1:�Zh:�Zi
�:�
:e��Wv(Xj):Xn=Xj!0:ș&400C8,,Xj �Zk:Zl=Xj!4:Zm=Xj!12:Zn=Xj!16:Zo=Xj!8:Zp=Xj!20:Zq=Xj!24:ȕZk:ȎXn �
��Wj:�Zr
��Xw:�Zs
��Xz:�Zt
��Yn:�Zu
��Yq:�Zv(Ux)
��Yt:�Zv(Uz)
��:ș&400CA,,Xj �Zk:�:�
��XW(Xj):ȎVa �
�1
�2:�Zw
*
�3:�Zx
4�4:�Zy(Xj)
>�5
H�:�
p���Zy(Xj):ș&400CF,,Xj:Xk=Xj!0:Xl=Xj!4:Xn=Xj!12:Xd=Xj!16:Zz$=�ction_PathnameOnly(�ction_ReadIconText(Uj,Wj,14)):aU$=�ction_LeafnameOnly(�ction_ReadIconText(Uj,Wj,14)):Xj!0=44+((�aU$ �4)*4)+4:Xj!4=0:Xj!8=0:Xj!12=0:Xj!16=1:Xj!20=Xn:Xj!24=Xd:Xj!28=Xk
DXj!32=Xl:Xj!36=64:Xj!40=&FFF:$(Xj+44)=aU$+�0:ș&400E7,17,Xj,Xn:�
`���Zf(Xj):aV=Xj!4:Xj!12=Xj!8:Xj!16=3:Zz$=�ction_ExtractString(Xj+44):ș&400E7,17,Xj,aV:aW$=�ction_ReadIconText(Uj,Yl,0):aW$=�ction_LeafnameOnly(aW$):Zz$=Zz$+aW$:aX$=�ction_ReadIconText(Uj,Yl,Wa):ȎaX$ �
��"directory":�aY(Zz$)
�:�aZ(Zz$)
��:ș&400D4,,-1:�
�ݤction_BeginDrag(Xc,Xn,Xd):�aa,ab,ac,ad:Xc!0=4:Xc!4=5:Xc!8=11:Xc!12=12:Xc!16=-1:ș&31,Xc,Xc+32:aa=(Xc!40+1)* 2^( Xc!32 ):ab=(Xc!44+1)* 2^( Xc!36 ):Xc!0=Xn:ș&400CC,,Xc:ac=Xc!4:ad=Xc!16:Xc!0=Xn:Xc!4=Xd:ș&400CE,,Xc:Xc!8+=ac:Xc!12+=ad
�WXc!16+=ac:Xc!20+=ad:Xc!0=0:Xc!4=5:Xc!24=0:Xc!28=0:Xc!32=aa:Xc!36=ab:ș&400D0,,Xc:=0
���Vb:ae=Un:�af(Uj,"<"+Uc$+"$Dir>.Templates"):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"information"):ag=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"source"):Xw=�ction_MakeTemplateAWindow(Ul)
T�ae=�ction_LoadTemplate(Ul,ae,Un+Um,"xfer_send"):Yl=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"dest"):Xz=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"main"):Wj=�ction_MakeTemplateAWindow(Ul)
��ae=�ction_LoadTemplate(Ul,ae,Un+Um,"magnifier"):YX=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"pref_pane"):Wz=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"pref_main"):Wx=�ction_MakeTemplateAWindow(Ul)
��ae=�ction_LoadTemplate(Ul,ae,Un+Um,"progress"):Xt=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"back"):Yn=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"xfer_send2"):ah=�ction_MakeTemplateAWindow(Ul)
�ae=�ction_LoadTemplate(Ul,ae,Un+Um,"colr"):Yq=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"mvmt"):Yt=�ction_MakeTemplateAWindow(Ul):ae=�ction_LoadTemplate(Ul,ae,Un+Um,"share_1"):Xo=�ction_MakeTemplateAWindow(Ul)
DYae=�ction_LoadTemplate(Ul,ae,Un+Um,"share_2"):Xq=�ction_MakeTemplateAWindow(Ul):�ai:�
����aj(ak$,aa,ab):$(Ur+al)=ak$+�0:?(Ur+al+12)=7:?(Ur+al+13)=2:?(Ur+al+14)=7:?(Ur+al+15)=0:!(Ur+al+16)=aa:!(Ur+al+20)=ab:!(Ur+al+24)=0:al+=28:�
l��am(an$,ao,ap,aq):!(Ur+al+0)=ao:!(Ur+al+4)=ap:!(Ur+al+8)=&07000001+�aq*2^22:$(Ur+al+12)=an$+�0:al+=24:�
\���ar(as$,ao,ap,aq):!(Ur+al+0)=ao:!(Ur+al+4)=ap:!(Ur+al+8)=&07000101+�aq*2^22:at=au+av:$at=as$+�0:av+=�as$+1:!(Ur+al+12)=at:!(Ur+al+16)=-1:!(Ur+al+20)=16:al+=24:�
���Yu(Xk):VZ=1:al=0:�aj(Uc$,160,44):�am("Info",0,ag, ��):�am("Prefs...",0,-1,WY):�am("Quit",128,-1, ��):ș&400D4,,Ur,Xk-80,228:�
V���YU:VZ=2:al=0:au=Ur+1*1024:av=0:�aj("Quality",304,44):�aw=1 �5:aw$=�ction_TagToString("qual"+�"00"+�aw,2)):�ar(aw$,�(aw=!ax),-1,aw>1):�aw:!(Ur+al+0-24)+=128:!Uj=Wj:ș&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:ș&400D4,,Ur,Zl+488,Zo+100:�
���YV:VZ=3:al=0:au=Ur+1*1024:av=0:ay$=�ction_ReadIconText(Uj,Wj,6):�aj("Frames",128,44):�az=1 �5:az$=�ction_TagToString("frms"+�"00"+�az,2)):�ar(az$,�(ay$=az$),-1, ��):�az:!(Ur+al+0-24)+=128:!Uj=Wj:ș&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:ș&400D4,,Ur,Zl+488,Zo+50
��
����Yb:VZ=4:al=0:au=Ur+1*1024:av=0:�aj("Auto",128,44):�bU=1 �5:bU$=�ction_TagToString("auto"+�"00"+�bU,2)):�ar(bU$,0,-1, ��):�bU:!(Ur+al+0-24)=128:!Uj=Wz:ș&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:ș&400D4,,Ur,Zl+448+52,Zo+356-Uj!24:�
^���Yv(Xk,Xl):�bV("file_3e1"):�Wi(Uj,Yl,0,Wb$):�Wi(Uj,YX,2,�bW):�Wi(Uj,YX,4,�bX):�bY(WW):VZ=5:al=0:au=Ur+1*1024:av=0:bZ=Ur+al:�aj("Select",128,44):�ar(�ction_TagToString("delt"),0,-1,WV=0 �WX):�ar(�ction_TagToString("colr"),128,Us,(�WX) �WV=0):ba=Ur+al
���aj("Edit",304,44):�ar(�ction_TagToString("bgrd"),0,-1, ��):�ar(�ction_TagToString("colc"),0,-1, ��):�ar(�ction_TagToString("movc"),2,-1, ��):�ar(�ction_TagToString("rsrc"),0,-1, �Vj):�ar(�ction_TagToString("rdst"),0,-1, �Vn)
0��ar(�ction_TagToString("rbck"),128,-1, �Vr):bb=Ur+al:�aj("Misc",224,44):�ar(�ction_TagToString("acpt"),0,-1,WX):�ar(�ction_TagToString("cntr"),2,-1,(Vv%=0 �Vw%=0)):�ar(�ction_TagToString("rest"),128,-1, ��):bc=Ur+al:�aj("Morph",128,44)
���ar(�ction_TagToString("misc"),0,bb, ��):�ar(�ction_TagToString("save"),0,Yl, ��):�ar(�ction_TagToString("slct"),0,bZ, ��):�ar(�ction_TagToString("edit"),0,ba, ��):�ar(�ction_TagToString("zoom"),128,YX, ��):ș&400D4,,bc,Xk-64,Xl:�
���Yw(Xk,Xl):�bV("file_3e1"):�Wi(Uj,Yl,0,Wb$):�Wi(Uj,YX,2,�bd):�Wi(Uj,YX,4,�be):�bY(WW):VZ=6:al=0:au=Ur+1*1024:av=0:bZ=Ur+al:�aj("Select",128,44):�ar(�ction_TagToString("delt"),0,-1,WV=0 �WX):�ar(�ction_TagToString("colr"),128,Us,(�WX) �WV=0):ba=Ur+al
p��aj("Edit",304,44):�ar(�ction_TagToString("bgrd"),0,-1, ��):�ar(�ction_TagToString("colc"),0,-1, ��):�ar(�ction_TagToString("movc"),2,-1, ��):�ar(�ction_TagToString("rsrc"),0,-1, �Vj):�ar(�ction_TagToString("rdst"),0,-1, �Vn)
���ar(�ction_TagToString("rbck"),128,-1, �Vr):bb=Ur+al:�aj("Misc",224,44):�ar(�ction_TagToString("acpt"),0,-1,WX):�ar(�ction_TagToString("cntr"),2,-1,(Vx%=0 �Vy%=0)):�ar(�ction_TagToString("rest"),128,-1, ��):bc=Ur+al:�aj("Morph",128,44)
���ar(�ction_TagToString("misc"),0,bb, ��):�ar(�ction_TagToString("save"),0,Yl, ��):�ar(�ction_TagToString("slct"),0,bZ, ��):�ar(�ction_TagToString("edit"),0,ba, ��):�ar(�ction_TagToString("zoom"),128,YX, ��):ș&400D4,,bc,Xk-64,Xl:�
V���Yx(Xk,Xl):VZ=8:al=0:au=Ur+1*1024:av=0:bf=Ur+al:�aj(�ction_TagToString("upper"),128,44):�ar(�ction_TagToString("left"),0,-1, �Vr):�ar(�ction_TagToString("middle"),0,-1, �Vr):�ar(�ction_TagToString("right"),128,-1, �Vr):bg=Ur+al
���aj(�ction_TagToString("middle"),128,44):�ar(�ction_TagToString("left"),0,-1, �Vr):�ar(�ction_TagToString("middle"),0,-1, �Vr):�ar(�ction_TagToString("right"),128,-1, �Vr):bh=Ur+al:�aj(�ction_TagToString("lower"),128,44)
��ar(�ction_TagToString("left"),0,-1, �Vr):�ar(�ction_TagToString("middle"),0,-1, �Vr):�ar(�ction_TagToString("right"),128,-1, �Vr):bc=Ur+al:�aj("Align",128,44):�ar(�ction_TagToString("upper"),0,bf, �Vr):�ar(�ction_TagToString("middle"),0,bg, �Vr)
FH�ar(�ction_TagToString("lower"),128,bh, �Vr):ș&400D4,,bc,Xk-64,Xl:�
xz��Yc:VZ=7:�bY(�ction_ColourOfIcon(Uj,Wz,19)):!Uj=Wz:ș&400CC,,Uj:Zl=Uj!4:Zo=Uj!8:ș&400D4,,Us,Zl+448+52,Zo+268-Uj!24:�
����bY(bi):�bj("Colour",96,44):�bk(�(bi=&0),-1,&07000011," 0"):�bk(�(bi=&1),-1,&17000011," 1"):�bk(�(bi=&2),-1,&27000011," 2"):�bk(�(bi=&3),-1,&37000011," 3"):�bk(�(bi=&4),-1,&40000011," 4"):�bk(�(bi=&5),-1,&50000011," 5")
"��bk(�(bi=&6),-1,&60000011," 6"):�bk(�(bi=&7),-1,&70000011," 7"):�bk(�(bi=&8),-1,&80000011," 8"):�bk(�(bi=&9),-1,&97000011," 9"):�bk(�(bi=&A),-1,&A0000011," A"):�bk(�(bi=&B),-1,&B0000011," B"):�bk(�(bi=&C),-1,&C7000011," C")
hi�bk(�(bi=&D),-1,&D0000011," D"):�bk(�(bi=&E),-1,&E7000011," E"):�bk(�(bi=&F)+128,-1,&F7000011," F"):�
����bj(ak$,aa,ab):bl=0:$(Us+bl)=ak$+�0:?(Us+bl+12)=7:?(Us+bl+13)=2:?(Us+bl+14)=7:?(Us+bl+15)=0:!(Us+bl+16)=aa:!(Us+bl+20)=ab:!(Us+bl+24)=0:bl+=28:�
0���bk(ao,ap,bm,bn$):?(Us+bl+0)=ao:?(Us+bl+1)=0:?(Us+bl+2)=0:?(Us+bl+3)=0:!(Us+bl+4)=ap:!(Us+bl+8)=bm:$(Us+bl+12)=bn$+�0:bl+=24:�
�+��XY(Xj):bo=Xj!0:bp=Xj!4:bq=Xj!8:ȎVZ �
�
�1:Ȏbo �
��1:�Xs(Uj,Wx):�Wy(Uj,Wx,Wz)
��2:� �WY �
!VV=�
!Z�:Yi$=�ction_TagToString("err12"):Yj=�ction_ReportError(Uj,99,Uc$,Yi$,�,�):VV= �(Yj=1)
!4�
!>�
!H�2:�Wf(bo+1):!ax=bo+1
!\�3:�Wg(bo+1)
!fY�4:br$=�ction_TagToString("auto"+�"00"+�(bo+1),2)):�Wi(Uj,Wz,11,br$):�Wi(Uj,Wz,8,br$)
!�
�5:Ȏbo �
!�
�0:Ȏbp �
!�
�0:�bs(�)
!�)�1:Vv%=0:!bt=0:Vw%=0:!bu=0:�Yr(Uj,Xw)
!�
�2:�bv
!��
!�
�2:Ȏbp �
!�
�0:�Zc
!��1:�bw(bq)
!��
!�
�3:Ȏbp �
"�0:�Xs(Uj,Yn)
"�1:�Ww(Uh,Uj,Yq, ��)
"�2:�Ww(Uh,Uj,Yt, ��)
"$�3:�bx("Source")
".�4:�bx("Dest")
"8�5:�bx("Back")
"B�
"L�
"`
�6:Ȏbo �
"j
�0:Ȏbp �
"t
�0:�bs(�)
"~)�1:Vx%=0:!by=0:Vy%=0:!bz=0:�Yr(Uj,Xz)
"�
�2:�bv
"��
"�
�2:Ȏbp �
"�
�0:�Zc
"��1:�bw(bq)
"��
"�
�3:Ȏbp �
"��0:�Xs(Uj,Yn)
"��1:�Ww(Uh,Uj,Yq, ��)
"��2:�Ww(Uh,Uj,Yt, ��)
"��3:�bx("Source")
# �4:�bx("Dest")
#
�5:�bx("Back")
#�
#�
#2�7:�cU(Uj,Wz,19,bo)
#F
�8:Ȏbo �
#Z
�0:Ȏbp �
#d�0:�cV("T","L")
#n�1:�cV("T","M")
#x�2:�cV("T","R")
#��
#�
�1:Ȏbp �
#��0:�cV("M","L")
#��1:�cV("M","M")
#��2:�cV("M","R")
#��
#�
�2:Ȏbp �
#��0:�cV("B","L")
#��1:�cV("B","M")
#��2:�cV("B","R")
#��
$�
$"3�:ș&400CF,,Xj:Xk=Xj!0:Xl=Xj!4:Xm=Xj!8:�Xm=Ua �
$^
ȎVZ �
$h�1:�Yu(Xk)
$r
�2:�YU
$|
�3:�YV
$�
�4:�Yb
$��5:�Vj ��Yv(Xk,Xl)
$��6:�Vn ��Yw(Xk,Xl)
$�
�7:�Yc
$��8:�Yx(Xk,Xl)
$��
$��:�VZ<>1 �
$�ș&400D4,,-1:VZ=0
$��
$��:�
%t��Zg(Xj):cW=Xj!40:Zz$=�ction_ExtractString(Xj+44):aV=Xj!4:Xj!16=4:Xj!12=Xj!8:ș&400E7,17,Xj,aV:�cW<>Ue �cW<>Uf �
%lNYi$=�ction_TagToString("err01"):Yj=�ction_ReportError(Uj,99,Uc$,Yi$, ��,�)
%��:ȎcW �
%��Ue:�cX(Zz$)
%��Uf:�cY(Zz$)
%��
%��:�
%�8ݤction_FileExists(Zz$):ș&20008,13,Zz$ �cZ:=(cZ<>0)
&Hݤction_SizeOfFile(Zz$):�ca:ș&8,17,Zz$ �cZ,cb,cc,cd,ce,cf:ca=ce:=ca
&RUݤction_TypeOfFile(Zz$):�ca:ș&8,17,Zz$ �cZ,cb,cc,cd,ce,cf:cg=((cc>>8) �&FFF):=cg
&�4��Zj(Xj):ch$="":aV=Xj!4:ci=Xj!32:bm=Xj!36:Ȏci �
&��Ub:�bm=Vh �
&�
�WY �Wr �
&�ch$="spin"
&��:ch$="icon"
'�
'�
'&�Yq:�bm=0 �ch$="colw00"�ch$="colw"
'$&�Yt:�bm=0 �ch$="movw00"�ch$="movw"
'.�Xw:ch$="sour"
'8�Xz:ch$="dstn"
'B�Yn:ch$="back"
'L�Xt:Ȏbm �
'V�1:ch$="prog01"
'`�2:ch$="prog02"
'j�3:ch$="prog03"
't�
'~�Wj:Ȏbm �
'��0:ch$="main00"
'��2:ch$="main02"
'��4:ch$="main04"
'��6:ch$="main06"
'��7:ch$="main07"
'��8:ch$="main08"
'��9:ch$="main09"
'�:ch$="main"
'��
'��Wx:Ȏbm �
'��0:ch$="pman00"
( �1:ch$="pman01"
(
�2:ch$="pman02"
(:ch$="pref"
((�
(2�Wz:Ȏbm �
(<�3:ch$="ppne03"
(F�4:ch$="ppne04"
(P�5:ch$="ppne05"
(Z�7:ch$="ppne07"
(d�8:ch$="ppne08"
(n�9:ch$="ppne09"
(x�11:ch$="ppne11"
(��12:ch$="ppne12"
(��13:ch$="ppne13"
(��14:ch$="ppne14"
(��19:ch$="ppne19"
(�:ch$="pref"
(��
(��:�ch$<>"" �
(�qcj$=�ction_TagToString(ch$):Xj!0=20+((�(cj$) �4)*4)+4:Xj!12=Xj!8:Xj!16=&503:$(Xj+20)=cj$+�0:ș&400E7,17,Xj,aV
)�:�
)@K��Wf(ck):aw$=�ction_TagToString("qual"+�"00"+�ck,2)):�Wi(Uj,Wj,4,aw$):�
)|K��Wg(ck):az$=�ction_TagToString("frms"+�"00"+�ck,2)):�Wi(Uj,Wj,6,az$):�
)����ZV(ci,cl,cm):cn=ci:co=cl+1:cp=cm+0:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:ș&400C8,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:ș&400D0,,Uj:�
*l;��Wp:ș&400CF,,Uj:cl=Uj!0:cm=Uj!4:cu=Uj!8:ci=cn:�cu=1 �
*��cl<>co �cm<>cp �
*�
Ȏci �
*��Xw:cv=bW/bX
*��Xz:cv=bd/be
*��Yn:cv=1/1
*�/�:�cw(ci,(cl-co)/cv,(cm-cp)/cv):co=cl:cp=cm
*��
+
�:Va=0
+�:�
+>��cw(ci,cx,cy):Ȏci �
+\^�Xw:Vv%+=((cx>>cz)/dU):Vw%+=((cy>>dV)/dW):!bt+=((cx>>cz)/dU):!bu+=((cy>>dV)/dW):�Yr(Uj,ci)
+�^�Xz:Vx%+=((cx>>cz)/dX):Vy%+=((cy>>dV)/dY):!by+=((cx>>cz)/dX):!bz+=((cy>>dV)/dY):�Yr(Uj,ci)
+�
�Yn:�Vr �
+�ZVz%+=((cx>>cz)/dZ):WU%+=((cy>>dV)/da):!db+=((cx>>cz)/dZ):!dc+=((cy>>dV)/da):�Yy(cl,cm)
,�
,$�:�
,L��dd(ci,cl,cm):Ȏci �
,`�Xw:de=bW/bX:df=dU:dg=dW
,~�Xz:de=bd/be:df=dX:dg=dY
,�H�:�dh(Uj,ci,cl,cm):di%=(dj>>(df*cz) ) / de:dk%=(dl>>(dg*dV) ) / de:�
,����Yz(ci,cl,cm):dm=ci:dn=cl:do=cm:co=cl:cp=cm:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:ș&400CC,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:ș&400D0,,Uj:�WX ��dp��dq
-��
-����dp:dr=Uj:!dr=dm:ș&400CC,,dr:dr!(0+4)=dr!(40+4):dr!(4+4)=dr!(44+4):dr!(8+4)=dr!(48+4):dr!(12+4)=dr!(52+4):ș&400C9,,dr �ds:ȕds:ș&400E6,48+14:ȓȐco-4,cp-4,8,8:ș&400CA,,dr �ds:�:�
.6���dq:dr=Uj:!dr=dm:ș&400CC,,dr:dr!(0+4)=dr!(40+4):dr!(4+4)=dr!(44+4):dr!(8+4)=dr!(48+4):dr!(12+4)=dr!(52+4):ș&400C9,,dr �ds:ȕds:ș&400E6,48+14:�dn,do,co,cp:ș&400CA,,dr �ds:�:�
.�D��Wq:ș&400CF,,Uj:cl=Uj!0:cm=Uj!4:cu=Uj!8:ci=Uj!12:�cu=4 �cu=1 �
.��cl<>co �cm<>cp �
/�WX ��dp��dq
/co=cl:cp=cm:�WX ��dp��dq
/0�
/:
�:Va=0
/N�:�
/v��Zw:�WX ��dp��dq
/�Hș&400CF,,Uj:ci=Uj!12:�dd(ci,dn,do):dt=�(cp-do):du=�(co-dn):�du>dt �
/�#� ��ction_GuideExists(dv,dk%) �
/�=dw=�ction_Insert_HorV(dv,dk%):�dx(Xw,dw,dv):�dx(Xz,dw,dv)
/��
/�%�:� ��ction_GuideExists(dy,di%) �
0=dw=�ction_Insert_HorV(dy,di%):�dx(Xw,dw,dy):�dx(Xz,dw,dy)
0*�
04�:�
0\\ݤction_Insert_HorV(dz,eU%):i=0:eV= ��:ȕi<=255 � �eV:eW%=(dz!(i*4) �&7FFFFFFF):�eW%=0 �
0�eV=�
0�
�:i+=1
0��:�:�i>255 �
0�NYi$=�ction_TagToString("err04"):Yj=�ction_ReportError(Uj,99,Uc$,Yi$, ��,�)
0��:dz!(i*4) = eU% + 1
0��:=i
1$`ݤction_GuideExists(dz,eU%):i=0:eV= ��:ȕi<=255 � �eV:eW%=(dz!(i*4) �&7FFFFFFF)-1:�eW%=eU% �
1`eV=�
1j
�:i+=1
1~�:�:=eV
1���YZ(ci,cl,cm,eX):�eX �
1�eY=�eZ:ea=�eb:�eY>0 �
1��eY>1 �
1��Yr(Uj,Xw):�Yr(Uj,Xz)
2 #�:�dx(Xw,!ec,dv):�dx(Xz,!ec,dv)
2�
2(
�:�ea>0 �
2<�ea>1 �
2F�Yr(Uj,Xw):�Yr(Uj,Xz)
2Z#�:�dx(Xw,!ed,dy):�dx(Xz,!ed,dy)
2x�
2�
�:WV=0
2�j�:�dd(ci,cl,cm):ee=�ction_ClosestGuide(dv,dk%):ef=�ction_ClosestGuide(dy,di%):�ee<>-1 ��eg(dv,ee, �eX)
2��ef<>-1 ��eg(dy,ef, �eX)
2��
2�rݤction_ClosestGuide(dz,eU):i=0:eh=-1:ei=8:ȕi<=255:eW%=(dz!(i*4) �&7FFFFFFF)-1:ej=�(eW%-eU):�ej<ei �eW%<>-1 �
3@eh=i:ei=ej
3T�:i+=1:�:=eh
3�R��eg(dz,ck,ek):eW%=dz!(ck*4):el%=(eW% �&80000000):eW%-=el%:em%=&80000000:�ek �
3�em%=el% �&80000000
3��:�em%<>0 �WV+=1�WV-=1
3�Ddz!(ck*4) = eW% + em%:�ction_WindowIsOpen(Uj,Xw) ��dx(Xw,ck,dz)
3�.�ction_WindowIsOpen(Uj,Xz) ��dx(Xz,ck,dz)
4�
4&0��dx(ci,ck,dz):�ction_WindowIsOpen(Uj,ci) �
4:
Ȏci �
4D�Xw:en=dW* dV:de=bW/bX:a=dU
4b�Xz:en=dY* dV:de=bd/be:a=dX
4�s�:!Uj=ci:ș&400CC,,Uj:Zl=Uj!4:Zn=Uj!16:Zo=Uj!8:Zp=Uj!20:Zq=Uj!24:Zm=Uj!12:eo=Zl-Zp:ep=Zn-Zq:eU=dz!(ck*4):Ȏdz �
4�7�dv:eq=Zl:er=Zm:es=ep+((eU<<en)* de ) - 24:et=es+48
5<�dy:es=Zo:et=Zn:eq=eo+((eU<<(cz*a)) * de ) - 24:er=eq+48
5>�:ș&400D1,-1,eq,es,er,et
5R�:�
5z��Zc:eu=�ev:WV=0:�eu>0 �
5��eu=1 �
5�M!(!ew+(!ex*4) ) = !ey:�dx(Xw,!ex,!ew):�dx(Xz,!ex,!ew):!(!ew+(!ex*4) ) = 0
5�-�:�ction_WindowIsOpen(Uj,Xw) ��Yr(Uj,Xw)
5�+�ction_WindowIsOpen(Uj,Xz) ��Yr(Uj,Xz)
5��
5��:�
6$ ��bs(ez):fU=!fV:fW=!fX:�ez �
6LyYj=�ction_Insert_HorV(dv,0):Yj=�ction_Insert_HorV(dv,fW-1):Yj=�ction_Insert_HorV(dy,0):Yj=�ction_Insert_HorV(dy,fU-1)
6t��:A%=dv:fY%=�fZ:A%=dy:fa%=�fZ:A%=dv:�fb:A%=dy:�fb:�fc:�fd:�y=0 �fY%-1:�x=0 �fa%-1:B%=((dv!(y*4)) �&7FFFFFFF)-1:A%=((dy!(x*4)) �&7FFFFFFF)-1:C%=WW:�fe:�x:�y:WX=�:�ction_WindowIsOpen(Uj,Xw) ��Yr(Uj,Xw)
7+�ction_WindowIsOpen(Uj,Xz) ��Yr(Uj,Xz)
7(�
7Ft��fc:�i=0 �fY%-1:�j=0 �fY%-1:A%=dv!(j*4+0) :ff=(A% �&7FFFFFFF):B%=dv!(j*4+4) :fg=(B% �&7FFFFFFF):�ff<fg �ȔA%,B%
7��dv!(j*4+0) = A%:dv!(j*4+4) = B%:�j:�i:�i=fa%-2 �0�-1:�j=fa%-2 �0�-1:A%=dy!(j*4+0) :ff=(A% �&7FFFFFFF):B%=dy!(j*4+4) :fg=(B% �&7FFFFFFF):�ff>fg �ȔA%,B%
7�+dy!(j*4+0) = A%:dy!(j*4+4) = B%:�j:�i:�
86��Ya(ci,cl,cm,ek,eX):�eX �
8Tfh=�fi:WV=0:�fh>0 �
8r�fh=1 �
8|�fj(Xw,!fk):�fj(Xz,!fk)
8��:�Yr(Uj,Xw):�Yr(Uj,Xz)
8��
8��
8�(�:�dd(ci,cl,cm):A%=di%:B%=dk%:Ȏci �
9�Xw:C%=0
9�Xz:C%=8
9&�:fl=�fm:�fl<>-1 �
9N/A%=fn!(fl*24+16):�ek �A%=(A% �2)�A%=(A% �2)
9b�(A% �2)<>0 �WV+=1�WV-=1
9l,fn!(fl*24+16) = A%:�fj(Xw,fl):�fj(Xz,fl)
9��:�
9�-��fj(ci,fl):�ction_WindowIsOpen(Uj,ci) �
9�
Ȏci �
9�$�Xw:en=dW* dV:de=bW/bX:fo=0:a=dU
:$�Xz:en=dY* dV:de=bd/be:fo=8:a=dX
:*��:!Uj=ci:ș&400CC,,Uj:Zl=Uj!4:Zn=Uj!16:Zo=Uj!8:Zp=Uj!20:Zq=Uj!24:Zm=Uj!12:eo=Zl-Zp:ep=Zn-Zq:fp=fn!(fl*24+fo ):fq=fn!(fl*24+fo+4):eq=eo+((fp<<(cz*a)) * de ) - 8:es=ep+((fq<<en)* de ) - 8:er=eq+16:et=es+16:ș&400D1,-1,eq,es,er,et
:��:�
:����ZU(ci,cl,cm):dm=ci:dn=cl:do=cm:co=cl:cp=cm:Uj!0=ci:Uj!4=7:Uj!8=cl:Uj!12=cm:Uj!16=cl:Uj!20=cm:Uj!24=ci:ș&400CC,,Uj+24:cq=Uj!28:cr=Uj!36:cs=Uj!40:ct=Uj!32:Uj!24=cq:Uj!28=ct:Uj!32=cr:Uj!36=cs:ș&400D0,,Uj:�WX ��dp��dq
;��
;���Zx:�WX ��dp��dq
;�T�dd(dm,dn,do):fr=di%:fs=dk%:�dd(dm,co,cp):ft=di%:fu=dk%:A%=ft-fr:B%=fu-fs:Ȏdm �
<