Home » Archimedes archive » Archimedes World » AW-1995-04-Disc2.adf » Disk2Apr95 » !AWApr95/Goodies/HQ-Tracker/!HQTracker/!RunImage
!AWApr95/Goodies/HQ-Tracker/!HQTracker/!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-04-Disc2.adf » Disk2Apr95 |
| Filename: | !AWApr95/Goodies/HQ-Tracker/!HQTracker/!RunImage |
| Read OK: | ✔ |
| File size: | FCAD bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
60UV=-1:ONERRORMODEMODE:PRINT"Fatal Error : ";REPORT$;" at Line ";ERL:END
100PROCUW:ONERRORPROCUX
130PROCUY:END
180DEFPROCUW:UZ=4:Ua=2:Ub=1:Uc=-2:Ud$="HQTracker":Ue$="HQTracker":Uf=&2000:Ug=&3E0:Uh=4*1024 :DIMUi Uh:Uj=4*1024 :DIMUk Uj:Ul=11*1024 :DIMUm Ul:Un=7*1024 :DIMUo Un:Up=5*1024 :DIMUq Up:Ur=8*1024 :DIMUs Ur:Ut=4*1024 :DIMUu Ut:Uv=8*1024 :DIMUw Uv:Ux=32*1024 :DIMUy Ux:DIMUz 32*1024
450VU=12:DIMVV$(VU):DIMVW(VU):VX=32:DIMVY$(VX):DIMVZ(VX):Va= NOTTRUE:Vb=0:Vc= NOTTRUE:Vd=FNction_InitialiseTask(2*100,Ue$):Ve=0:PROCVf:PROCVg:PROCVh:PROCVi:Vj=FNction_IconbarSprite(Uk):Vk=FNction_InstallHelp:PROCVl:Vm=!Vn:PROCVo:Vp=0:VV$()="":VW()= NOTTRUE:Vq=0:VY$()="":VZ()=0:PROCVr("<None!>"):PROCVs
740IF NOTVc THEN
750PROCVt:IF NOTVc THEN
770PROCVu:IF NOTVc THEN
790Vv= NOTTRUE:Vw=1:Vx=1:PROCVy:Vz= NOTTRUE:WU= NOTTRUE:WV=0
860ENDIF
870ENDIF
880ENDIF:ENDPROC
930DEFPROCUY:PROCWW:REPEAT:WX=FNction_PollWimp(Ui,Vb):CASEWX OF
980WHEN0:IFVz THENPROCWY
990IFWU THENPROCWZ
1000IFWV=3 THENPROCWa
1010WHEN1:PROCWb(Ui)
1020WHEN2:PROCWc(Ui,Uk,-1,TRUE):CASE!Ui OF
1040WHENWd:PROCWe(Uk,Wd,Wf,0,0)
1050WHENWg:PROCWe(Uk,Wg,Wh,8,8)
1060WHENWi:PROCWe(Uk,Wi,Wj,8,8)
1070WHENWk:PROCWe(Uk,Wk,Wl,8,164+8)
1080WHENWm:PROCWe(Uk,Wm,Wn,8,4)
1090ENDCASE
1100WHEN3:PROCWo(Uk,Ui!0):CASE!Ui OF
1120WHENWd:PROCWo(Uk,Wf)
1130WHENWg:PROCWo(Uk,Wh)
1140WHENWi:PROCWo(Uk,Wj)
1150WHENWk:PROCWo(Uk,Wl)
1160WHENWm:PROCWo(Uk,Wn)
1170ENDCASE
1180WHEN6:PROCWp(Ui)
1190WHEN7:PROCWq(Ui)
1200WHEN8:PROCWr(Ui)
1210WHEN9:PROCWs(Ui)
1220WHEN17:PROCWt(Ui)
1230WHEN18:PROCWt(Ui)
1240ENDCASE:UNTILVc:PROCWu(Vk):PROCWv(Vd):SYS&900C6,UV:SYS&2002A,1,-4096*1024:ENDPROC
1330DEFPROCVs:Ww= NOTTRUE:SYS&900C1,32+1+1 TOWx,UV:CASEWx OF
1370WHEN0:Ww=TRUE:Wy$="err29"
1390WHEN1:Ww=TRUE:Wy$="err30"
1410ENDCASE:IFWw THEN
1430Ww$=FNction_TagToString(Vk,Wy$):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Vc=TRUE:UV=-1
1470ENDIF:ENDPROC
1540DEFFNction_IconbarSprite(XU):XU!0=-1:XU!4=0:XU!8=0:XU!12=68:XU!16=68:XU!20=&3002:$(XU+24)="!"+Ud$+CHR$0:SYS&400C2,,XU TOXV:=XV
1660DEFPROCWp(XW):XX=XW!0:XY=XW!4:XZ=XW!8:Xa=XW!12:XV=XW!16:CASEXZ OF
1730WHENUZ:CASEXa OF
1740WHENXb:IFXV=3 THEN
1750PROCWo(Uk,Xa):PROCXc
1770ENDIF
1780WHENXd:IFXV=5 THEN
1790PROCWo(Uk,Xa):PROCXe(Uk)
1810ENDIF
1820WHENUc:IFXV=Vj THEN
1830PROCXf(Uk,Wd):PROCWe(Uk,Wd,Wf,0,0):PROCXg(Wd,-1,0)
1860ENDIF
1870WHENWg:CASEXV OF
1880WHEN0:PROCXh
1890WHEN1:PROCWo(Uk,Wg):PROCWo(Uk,Wh):PROCXi
1920WHEN2:PROCWo(Uk,Wg):PROCWo(Uk,Wh):PROCXj
1950ENDCASE
1960WHENWh:CASEXV OF
1970WHEN2,5,3,4:PROCXk(Uk,Wh,XV)
1980WHEN10,11,12,13:PROCXl(XX,XY,XV-7)
1990WHEN26:PROCXm(XX,XY,7)
2000WHEN30:PROCXn(Uk,Wh,17,+1,1,15)
2010WHEN31:PROCXn(Uk,Wh,17,-1,1,15)
2020WHEN20:PROCXn(Uk,Wh,18,+1,1,127)
2030WHEN21:PROCXn(Uk,Wh,18,-1,1,127)
2040WHEN33:PROCXn(Uk,Wh,32,+1,1,256)
2050WHEN34:PROCXn(Uk,Wh,32,-1,1,256)
2060ENDCASE
2080WHENWf:CASEXV OF
2090WHEN2:PROCXo(XX,XY)
2100WHEN6:PROCXp(XX,XY)
2110WHEN8:PROCXq(XX,XY)
2120OTHERWISE:Vv= NOTTRUE:PROCXr
2150ENDCASE
2170WHENWi:CASEXV OF
2180WHEN0:PROCXs
2190WHEN1:PROCWo(Uk,Wi):PROCWo(Uk,Wj)
2210ENDCASE
2220WHENWj:PROCXt(Ui,TRUE)
2240WHENWd:IF NOTWU AND NOTWU THEN
2250Vv=TRUE:PROCXr:PROCXu(Ui)
2280ENDIF
2300WHENXv:IFXV=2 THENPROCXw(FNction_ReadIconText(Uk,Xv,1), NOTTRUE)
2310WHENXx:IFXV=2 THENPROCXy(FNction_ReadIconText(Uk,Xx,1), NOTTRUE)
2320WHENXz:IFXV=2 THENPROCYU(FNction_ReadIconText(Uk,Xz,1), NOTTRUE)
2330WHENWk:CASEXV OF
2340WHEN2:PROCXp(XX,XY):Ve=11
2360WHEN3:PROCYV(0)
2370WHEN4:PROCYV(-1)
2380WHEN5:PROCYW
2390WHEN6:Ww$=FNction_TagToString(Vk,"war06"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE):IFWz=1 THEN
2420PROCYX:PROCYY:PROCYZ(Uk,Wl)
2450ENDIF
2460ENDCASE
2470WHENWl:PROCYa(Ui)
2500WHENYb:CASEXV OF
2510WHEN0:PROCXk(Uk,Xa,XV):PROCYc
2530WHEN6:PROCXk(Uk,Xa,XV):PROCYc
2550WHEN12:PROCXk(Uk,Xa,XV):PROCYc
2570WHEN2:PROCXo(XX,XY):Ve=12
2590WHEN5:PROCXo(XX,XY):Ve=13
2610WHEN8:PROCYd(XX,XY,14)
2620WHEN11:PROCYd(XX,XY,15)
2630WHEN14:PROCYe(XX,XY,16)
2640WHEN17:PROCYe(XX,XY,17)
2650WHEN18:PROCYf(TRUE)
2660ENDCASE
2680WHENYg:CASEXV OF
2690WHEN0:PROCXk(Uk,Xa,XV):PROCYh
2710WHEN6:PROCXk(Uk,Xa,XV):PROCYh
2730WHEN14:PROCXk(Uk,Xa,XV):PROCYh
2750WHEN23:PROCXk(Uk,Xa,XV):PROCYh
2770WHEN2:PROCXl(XX,XY,18)
2780WHEN5:PROCXl(XX,XY,19)
2790WHEN8:PROCXn(Uk,Xa,7,+1,0,127)
2800WHEN9:PROCXn(Uk,Xa,7,-1,0,127)
2810WHEN12:PROCXn(Uk,Xa,11,+1,0,127)
2820WHEN13:PROCXn(Uk,Xa,11,-1,0,127)
2830WHEN16:PROCXn(Uk,Xa,15,+1,1,15)
2840WHEN17:PROCXn(Uk,Xa,15,-1,1,15)
2850WHEN20:PROCXn(Uk,Xa,19,+1,1,15)
2860WHEN21:PROCXn(Uk,Xa,19,-1,1,15)
2870WHEN22:PROCYi(TRUE)
2890WHEN27:PROCXn(Uk,Xa,24,+1,-999,+999)
2900WHEN28:PROCXn(Uk,Xa,24,-1,-999,+999)
2920WHEN29:PROCXn(Uk,Xa,26,+1,-999,+999)
2930WHEN30:PROCXn(Uk,Xa,26,-1,-999,+999)
2950ENDCASE
2970WHENYj:CASEXV OF
2980WHEN1:PROCXk(Uk,Xa,XV)
2990WHEN8:PROCYk
3000WHEN9:PROCYl
3010ENDCASE
3030WHENWm:CASEXV OF
3040WHEN2:PROCYm(+1)
3050WHEN3:PROCYm(-1)
3060WHEN4:PROCYn(+1)
3070WHEN5:PROCYn(-1)
3080WHEN10:PROCYo(+1)
3090WHEN11:PROCYo(-1)
3100WHEN12:PROCWo(Uk,Wm):PROCWo(Uk,Wn)
3120WHEN14:PROCYp
3130ENDCASE
3150WHENYq:CASEXV OF
3170WHEN0:PROCYr("C ",+0)
3180WHEN1:PROCYr("D ",+0)
3190WHEN2:PROCYr("E ",+0)
3200WHEN3:PROCYr("F ",+0)
3210WHEN4:PROCYr("G ",+0)
3220WHEN5:PROCYr("A ",+0)
3230WHEN6:PROCYr("B ",+0)
3240WHEN14:PROCYr("C#",+0)
3250WHEN15:PROCYr("D#",+0)
3260WHEN16:PROCYr("F#",+0)
3270WHEN17:PROCYr("G#",+0)
3280WHEN18:PROCYr("A#",+0)
3300WHEN7:PROCYr("C ",+1)
3310WHEN8:PROCYr("D ",+1)
3320WHEN9:PROCYr("E ",+1)
3330WHEN10:PROCYr("F ",+1)
3340WHEN11:PROCYr("G ",+1)
3350WHEN12:PROCYr("A ",+1)
3360WHEN13:PROCYr("B ",+1)
3380WHEN19:PROCYr("C#",+1)
3390WHEN20:PROCYr("D#",+1)
3400WHEN21:PROCYr("F#",+1)
3410WHEN22:PROCYr("G#",+1)
3420WHEN23:PROCYr("A#",+1)
3440ENDCASE
3460ENDCASE
3470WHENUa:CASEXa OF
3480WHENUc:IFXV=Vj THENPROCYs(XX)
3490WHENWd:PROCYt(XX,XY)
3500ENDCASE
3510WHENUb:CASEXa OF
3520WHENWg:CASEXV OF
3530WHEN0:PROCXh
3540WHEN1:PROCWo(Uk,Wg):PROCWo(Uk,Wh):PROCXi
3570WHEN2:PROCXj
3580ENDCASE
3590WHENWh:CASEXV OF
3600WHEN2,5,3,4:PROCXk(Uk,Wh,XV)
3610ENDCASE
3620WHENWf:CASEXV OF
3630WHEN4:PROCXk(Uk,Xa,XV):Vv= NOTVv:PROCXr
3660ENDCASE
3670WHENWj:PROCXt(Ui, NOTTRUE)
3680WHENXv:IFXV=2 THENPROCXw(FNction_ReadIconText(Uk,Xv,1),TRUE)
3690WHENXx:IFXV=2 THENPROCXy(FNction_ReadIconText(Uk,Xx,1),TRUE)
3700WHENXz:IFXV=2 THENPROCYU(FNction_ReadIconText(Uk,Xz,1),TRUE)
3710WHENWm:CASEXV OF
3720WHEN2:PROCYm(+20)
3730WHEN3:PROCYm(-20)
3740WHEN4:PROCYn(+20)
3750WHEN5:PROCYn(-20)
3760WHEN10:PROCYo(+5)
3770WHEN11:PROCYo(-5)
3780ENDCASE
3790WHENYb:CASEXV OF
3800WHEN18:PROCYf( NOTTRUE)
3810ENDCASE
3830WHENYg:CASEXV OF
3840WHEN22:PROCYi( NOTTRUE)
3850ENDCASE
3860ENDCASE
3870WHEN64,16:CASEXa OF
3880WHENXv:IFXV=0 THENWV=1:Wz=FNction_BeginDrag(Uk,Xa,XV)
3890WHENXx:IFXV=0 THENWV=1:Wz=FNction_BeginDrag(Uk,Xa,XV)
3900WHENXz:IFXV=0 THENWV=1:Wz=FNction_BeginDrag(Uk,Xa,XV)
3910WHENWd:IF NOTWU THENPROCYu(XX,XY):WV=2
3920WHENWn:PROCYv(XX,XY):WV=3
3930ENDCASE
3940ENDCASE:ENDPROC
3980DEFPROCYu(Yw,Yx):Yy=FNction_RowClickedOn(Yw,Yx):Yz=FNction_ColumnClickedOn(Yw,Yx):Uk!0=Wd:Uk!4=6:Uk!8=Yw:Uk!12=Yx:Uk!16=Yw:Uk!20=Yx:Uk!24=Wd:SYS&400CC,,Uk+24:ZU=Uk!44:ZV=Uk!48:Uk!24=Uk!28:Uk!28=Uk!32:Uk!32=Uk!36:Uk!36=Uk!40-56:ZW=Uk!24:ZX=Uk!32
4120ZY=Uk!28:ZZ=Uk!36:SYS&400D0,,Uk:Za=Yw:Zb=Yw:Zc=Yx:Zd=Yx:PROCZe(Za,Zc,Zb,Zd):ENDPROC
4200DEFPROCZf(Yw,Yx):Zg=Yy:Zh=Yz:Zi=FNction_RowClickedOn(Yw,Yx):Zj=FNction_ColumnClickedOn(Yw,Yx):Zk=2:Zl=Zm:IFZg>Zi THENSWAPZg,Zi
4280IFZh>Zj THENSWAPZh,Zj
4290PROCYZ(Uk,Wd):ENDPROC
4330DEFPROCZe(Zn,Zo,Zp,Zq):Uk!256=Wd:SYS&400CB,,Uk+256:Zr=Uk!(256+4):Zs=Uk!(256+8):Zt=Uk!(256+12):Zu=Uk!(256+16)-56:VDU24,Zr;Zs;Zt;Zu;:SYS&400E6,48+15:RECTANGLEZn,Zo,Zp-Zn,Zq-Zo:ENDPROC
4460DEFPROCWr(XW):Xa=XW!0:XV=XW!4:Zv=XW!24:CASEXa OF
4530WHENWh:IFXV=32 THEN
4540PROCWo(Uk,Wg):PROCWo(Uk,Wh):PROCXj
4570ENDIF
4590WHENYg:IFZv=13 THEN
4600PROCYi(TRUE)
4610ENDIF
4630WHENZw:IFXV=3 THEN
4640SYS&400D4,,-1:Ve=0
4650ENDIF
4670WHENXv:IFXV=1 ANDZv=13 THEN
4680PROCXw(FNction_ReadIconText(Uk,Xv,1)):SYS&400D4,,-1:Ve=0
4700ENDIF
4720WHENXx:IFXV=1 ANDZv=13 THEN
4730PROCXy(FNction_ReadIconText(Uk,Xx,1)):SYS&400D4,,-1:Ve=0
4750ENDIF
4770WHENXz:IFXV=1 ANDZv=13 THEN
4780PROCYU(FNction_ReadIconText(Uk,Xz,1)):SYS&400D4,,-1:Ve=0
4800ENDIF
4820WHENWf:IFXV=1 ANDZv=13 THEN
4840Zx$=FNction_PathnameOnly(VY$(Zy)):Zz$=FNction_ReadIconText(Uk,Wf,1):IFZz$<>"" THEN
4880IFFNction_InstrumentAlreadyLoaded(Zx$+"."+Zz$) THEN
4890Ww$=FNction_TagToString(Vk,"err27"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
4910ELSE:VY$(Zy)=Zx$+"."+Zz$
4930ENDIF
4940ENDIF:PROCaU(Uk,Wf,1,FNction_LeafnameOnly(VY$(Zy))):PROCaV
4990ENDIF
5010WHENWd:CASEZv OF
5030WHENASC"C"-64:IF NOTWU ANDZk<>0 THENPROCaW
5040WHENASC"V"-64:IF NOTWU ANDZk<>0 THENPROCaX
5050WHENASC"X"-64:IF NOTWU ANDZk<>0 THENPROCaY
5060WHENASC"M"-64:IF NOTWU ANDZk<>0 THENPROCaZ
5070WHENASC"Z"-64:IF NOTWU THENPROCVy
5080WHENASC"I"-64:IF NOTWU ANDVp>0 THENPROCaa
5090WHENASC"R"-64:IF NOTWU ANDVq>0 THEN
5100PROCab(FNction_ReadIconText(Uk,Wf,1)):IFVe=9 THEN
5120SYS&400D4,,-1
5130ENDIF
5140ENDIF
5150WHENASC"P"-64:IF NOTWU THEN
5160Wx=FNction_Insert_Pattern:IF NOTWx THEN
5180Ww$=FNction_TagToString(Vk,"err06"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
5200ENDIF
5210ENDIF
5220WHENASC"K"-64:IF NOTWU THENPROCac
5230WHENASC"J"-64:IF NOTWU THEN
5240IFVv THEN
5250PROCaU(Uk,ad,1,"1"):PROCWc(Ui,Uk,ad, NOTTRUE):PROCXg(ad,1,1)
5280ENDIF
5290ENDIF
5310WHEN&183:PROCae(Xz)
5320WHEN&193:IFVq>0 THENPROCae(Xv)
5330WHEN&1A3:PROCae(Xx)
5340WHEN&1A1:PROCaf:PROCae(Zw)
5370WHENASC"Z",ASC"z":PROCYr("C ",+0)
5380WHENASC"S",ASC"s":PROCYr("C#",+0)
5390WHENASC"X",ASC"x":PROCYr("D ",+0)
5400WHENASC"D",ASC"d":PROCYr("D#",+0)
5410WHENASC"C",ASC"c":PROCYr("E ",+0)
5420WHENASC"V",ASC"v":PROCYr("F ",+0)
5430WHENASC"G",ASC"g":PROCYr("F#",+0)
5440WHENASC"B",ASC"b":PROCYr("G ",+0)
5450WHENASC"H",ASC"h":PROCYr("G#",+0)
5460WHENASC"N",ASC"n":PROCYr("A ",+0)
5470WHENASC"J",ASC"j":PROCYr("A#",+0)
5480WHENASC"M",ASC"m":PROCYr("B ",+0)
5500WHENASC"Q",ASC"q":PROCYr("C ",+1)
5510WHENASC"2",ASC"2":PROCYr("C#",+1)
5520WHENASC"W",ASC"w":PROCYr("D ",+1)
5530WHENASC"3",ASC"3":PROCYr("D#",+1)
5540WHENASC"E",ASC"e":PROCYr("E ",+1)
5550WHENASC"R",ASC"r":PROCYr("F ",+1)
5560WHENASC"5",ASC"5":PROCYr("F#",+1)
5570WHENASC"T",ASC"t":PROCYr("G ",+1)
5580WHENASC"6",ASC"6":PROCYr("G#",+1)
5590WHENASC"Y",ASC"y":PROCYr("A ",+1)
5600WHENASC"7",ASC"7":PROCYr("A#",+1)
5610WHENASC"U",ASC"u":PROCYr("B ",+1)
5630WHENASC" ":PROCag
5640WHENASC"=":ah=VALFNction_ReadIconText(Uk,Wf,7):ah+=-1* (ah<7):PROCaU(Uk,Wf,7,STR$ah)
5670WHENASC"-":ah=VALFNction_ReadIconText(Uk,Wf,7):ah-=-1* (ah>1):PROCaU(Uk,Wf,7,STR$ah)
5710WHEN20
5730WHEN&186:IF NOTWU THENPROCai
5740WHEN&18C:PROCaj(-1,0)
5750WHEN&18D:PROCaj(+1,0)
5760WHEN&18F:PROCaj(0,-1)
5770WHEN&18E:PROCaj(0,+1)
5780WHEN&1B:Vv= NOTTRUE:PROCXr
5810ENDCASE
5830WHENad:IFXV=1 ANDZv=13 THEN
5840PROCak
5850ENDIF
5870ENDCASE:PROCal(Zv):ENDPROC
5940DEFPROCae(Xa):SYS&400CF,,Uk+1024:SYS&400D4,,Xa,Uk!(1024+0),Uk!(1024+4):ENDPROC
6000DEFPROCWt(XW):CASEXW!16 OF
6020WHEN0:IFVa THEN
6030Ww$=FNction_TagToString(Vk,"war07"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE):Vc=Wz=1
6060ELSE:IF NOTWU AND NOTVz THEN
6080Vc=TRUE
6090ENDIF
6100ENDIF
6110WHEN2:PROCam(XW)
6120WHEN3:PROCan(XW)
6130WHEN5:PROCao(XW)
6140WHEN&502:PROCap(XW)
6150ENDCASE:ENDPROC
6190DEFPROCWb(XW):SYS&400C8,,XW TOaq:ar=XW!4:as=XW!16:at=XW!8:au=XW!20:av=XW!24:WHILEaq:CASE!XW OF
6280WHENWj:PROCaw
6290WHENWd:PROCax
6300WHENWl:PROCay
6310WHENWn:PROCaz
6320ENDCASE:SYS&400CA,,XW TOaq:ENDWHILE:ENDPROC
6380DEFPROCWq(XW):CASEWV OF
6400WHEN1:PROCbU(XW)
6410WHEN2:SYS&400CF,,Uk:PROCZf(Uk!0,Uk!4)
6430WHEN3:PROCbV(XW)
6440ENDCASE:WV=0:ENDPROC
6490DEFPROCbU(XW):SYS&400CF,,XW:XX=XW!0:XY=XW!4:Xa=XW!12:XV=XW!16:CASEbW$ OF
6560WHEN"Instrument":bX$=FNction_ReadIconText(Uk,Xv,1)
6570WHEN"Music Data":bX$=FNction_ReadIconText(Uk,Xx,1)
6580WHEN"Music App":bX$=FNction_ReadIconText(Uk,Xz,1)
6590ENDCASE:bY$=FNction_LeafnameOnly(bX$):XW!0=44+((LENbY$ DIV4)*4)+4:XW!4=0:XW!8=0:XW!12=0:XW!16=1:XW!20=Xa:XW!24=XV:XW!28=XX:XW!32=XY:XW!36=64:XW!40=&FFF:$(XW+44)=bY$+CHR$0:SYS&400E7,17,XW,Xa:ENDPROC
6770DEFPROCam(XW):bZ=XW!4:XW!12=XW!8:XW!16=3:bX$=FNction_ExtractString(XW+44):SYS&400E7,17,XW,bZ:CASEbW$ OF
6840WHEN"Instrument":PROCXw(bX$, NOTTRUE)
6850WHEN"Music Data":PROCXy(bX$, NOTTRUE)
6860WHEN"Music App":PROCYU(bX$, NOTTRUE)
6870ENDCASE:SYS&400D4,,-1:ENDPROC
6920DEFFNction_BeginDrag(XU,Xa,XV):CASEXa OF
6950WHENXv:bW$="Instrument"
6960WHENXx:bW$="Music Data"
6970WHENXz:bW$="Music App"
6980ENDCASE:LOCALba,bb,bc,bd:XU!0=4:XU!4=5:XU!8=11:XU!12=12:XU!16=-1:SYS&31,XU,XU+32:ba=(XU!40+1)* 2^( XU!32 ):bb=(XU!44+1)* 2^( XU!36 ):XU!0=Xa:SYS&400CC,,XU:bc=XU!4:bd=XU!16:XU!0=Xa:XU!4=XV:SYS&400CE,,XU:XU!8+=bc:XU!12+=bd:XU!16+=bc:XU!20+=bd:XU!0=0:XU!4=5
7170XU!24=0:XU!28=0:XU!32=ba:XU!36=bb:SYS&400D0,,XU:=0
7230DEFPROCVf:PROCbe(Uq,Up):PROCbf(Uq,"<"+Ud$+"$Dir>.Sprites"):PROCbe(Us,Ur):PROCbf(Us,"<"+Ud$+"$Dir>.Sprites22"):PROCbe(Uu,Ut):PROCbf(Uu,"<"+Ud$+"$Dir>.Sprites23"):CASEFNction_SpritesType OF
7310WHEN1:PROCbe(Uw,Uv):PROCbf(Uw,"<"+Ud$+"$Dir>.Sprites")
7330WHEN2:PROCbe(Uw,Uv):PROCbf(Uw,"<"+Ud$+"$Dir>.Sprites22")
7350WHEN3:PROCbe(Uw,Uv):PROCbf(Uw,"<"+Ud$+"$Dir>.Sprites23")
7370ENDCASE:PROCbg(Uq,"hqtracker"):PROCbg(Uq,"pushup"):PROCbg(Uq,"pushdown"):PROCbg(Us,"hqtracker"):PROCbg(Us,"pushup"):PROCbg(Us,"pushdown"):PROCbg(Uu,"hqtracker"):PROCbg(Uu,"pushup"):PROCbg(Uu,"pushdown"):bh=Uw:ENDPROC
7480DEFPROCVg:bi=Uo:PROCbj(Uk,"<"+Ud$+"$Dir>.Templates"):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"information",bh):bk=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"prf_win",bh):Wg=FNction_MakeTemplateAWindow(Um)
7550bi=FNction_LoadTemplate(Um,bi,Uo+Un,"prf_pane",bh):Wh=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"xfer_inst",bh):Xv=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"xfer_data",bh)
7600Xx=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"xfer_app",bh):Xz=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"main",bh):Wd=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"lib_win",bh)
7660Wi=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"lib_pane",bh):Wj=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"main_pane",bh):Wf=FNction_MakeTemplateAWindow(Um)
7710bi=FNction_LoadTemplate(Um,bi,Uo+Un,"music_info",bh):Zw=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"seq_main",bh):Wk=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"seq_pane",bh)
7760Wl=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"chng_note",bh):Yb=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"chng_fx",bh):Yg=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"play",bh)
7820Yj=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"jump",bh):ad=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"inst_main",bh):Wm=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"inst_pane",bh)
7880Wn=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"piano",bh):Yq=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"share_1",bh):Xb=FNction_MakeTemplateAWindow(Um):bi=FNction_LoadTemplate(Um,bi,Uo+Un,"share_2",bh)
7940Xd=FNction_MakeTemplateAWindow(Um):PROCbl:ENDPROC
7990DEFPROCYs(XX):Ve=1:bm=0:PROCbn(Ud$,160,44):PROCbo("Info",0,bk, NOTTRUE):PROCbo("Prefs...",0,-1,WU):PROCbo("Quit",128,-1,WU):SYS&400D4,,Uy,XX-80,228:ENDPROC
8100DEFPROCYt(XX,XY):Ve=2:bm=0:bp=Uy+2*1024:bq=0:PROCaf:Zx$=FNction_PathnameOnly(FNction_ReadIconText(Uk,Xv,1)):IFZx$<>"" THENZx$+="."
8190PROCaU(Uk,Xv,1,Zx$+FNction_ReadIconText(Uk,Wf,1)):br=Uy+bm:PROCbn("Select",176,44):PROCbo("Copy ^C",0,-1,Zk=0):PROCbo("Move ^V",0,-1,Zk=0):PROCbo("Delete ^X",0,-1,Zk=0):PROCbo("Clear ^Z",0,-1,Zk=0):PROCbo("Merge ^M",128,-1,Zk=0):bs=Uy+bm:PROCbn("Edit",224,44)
8310PROCbo("Alter note",0,-1,Zk=0):PROCbo("Alter effects",2,-1,Zk=0):PROCbt("Sequence list",0,-1, NOTTRUE):PROCbo("Libraries",128,-1,Vp=0):bu=Uy+bm:PROCbn("Misc",336,44):PROCbt("Info... ^F1",0,Zw, NOTTRUE):PROCbo("Play Music",0,-1,WU):PROCbt("Show Keyboard",2,-1,WU)
8410PROCbt("Save Application F3",0,Xz, NOTTRUE):PROCbt("Save Instrument �F3",0,Xv,Vq=0):PROCbt("Save Music Data ^F3",2,Xx, NOTTRUE):PROCbo("Restart",128,-1,WU):bv=Uy+bm:PROCbn("Instrument",176,44):PROCbt("Remove ^R",0,-1,Vq=0):PROCbt("Install ^I",2,-1,Vp=0):PROCbt("Edit",128,-1,Vq=0)
8520bw=Uy+bm:PROCbn("Pattern",176,44):PROCbo("Insert ^P",0,-1,bx=Vm):PROCbo("Clone ",0,-1, NOTTRUE):PROCbo("Clear ",2,-1, NOTTRUE):PROCbo("Remove ^K",0,-1,bx=1):PROCbo("Jump ^J",128,-1, NOTVv):by=Uy+bm:PROCbn("HQTracker",176,44):PROCbo("Misc",2,bu, NOTTRUE):PROCbo("Select",0,br,WU)
8640PROCbo("Edit",2,bs,WU):PROCbo("Instrument",0,bv,WU):PROCbo("Pattern",128,bw,WU):SYS&400D4,,by,XX,XY:ENDPROC
8730DEFPROCXl(XX,XY,bz):Ve=bz:bm=0:bp=Uy+1* 1024:bq=0:PROCbn("Stereo",208,44):PROCbt(FNction_TagToString(Vk,"ster01"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"ster02"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"ster03"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"ster04"),0,-1, NOTTRUE)
8830PROCbt(FNction_TagToString(Vk,"ster05"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"ster06"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"ster07"),128,-1, NOTTRUE):SYS&400D4,,Uy,XX,XY:ENDPROC
8900DEFPROCXq(XX,XY):Ve=20:bm=0:PROCbn("Octaves",96,44):FORcU=1 TO7:aq=2* ABS(cU=3 ORcU=4):PROCbo(STR$cU,aq,-1, NOTTRUE):NEXTcU:!(Uy+bm-24)=128:SYS&400D4,,Uy,XX,XY:ENDPROC
9030DEFPROCXm(XX,XY,bz):Ve=bz:bm=0:bp=Uy+1* 1024:bq=0:PROCbn("Quality",176,44):PROCbt(FNction_TagToString(Vk,"qual01"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"qual02"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"qual03"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"qual04"),0,-1, NOTTRUE)
9130PROCbt(FNction_TagToString(Vk,"qual05"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"qual06"),0,-1, NOTTRUE):PROCbt(FNction_TagToString(Vk,"qual07"),128,-1, NOTTRUE):SYS&400D4,,Uy,XX,XY:ENDPROC
9200DEFPROCYd(XX,XY,bz):Ve=bz:bm=0:PROCbn("Note",64,44):PROCbo("C ",0,-1, NOTTRUE):PROCbo("C#",0,-1, NOTTRUE):PROCbo("D ",0,-1, NOTTRUE):PROCbo("D#",0,-1, NOTTRUE):PROCbo("E ",0,-1, NOTTRUE):PROCbo("F ",0,-1, NOTTRUE):PROCbo("F#",0,-1, NOTTRUE):PROCbo("G ",0,-1, NOTTRUE):PROCbo("G#",0,-1, NOTTRUE):PROCbo("A ",0,-1, NOTTRUE)
9340PROCbo("A#",0,-1, NOTTRUE):PROCbo("B ",128,-1, NOTTRUE):SYS&400D4,,Uy,XX,XY:ENDPROC
9400DEFPROCYe(XX,XY,bz):Ve=bz:bm=0:PROCbn("Octaves",96,44):PROCbo("0",2,-1, NOTTRUE):FORcU=1 TO7:PROCbo(STR$cU,0,-1, NOTTRUE):NEXTcU:!(Uy+bm-24)=128:SYS&400D4,,Uy,XX,XY:ENDPROC
9530DEFPROCbn(cV$,ba,bb):$(Uy+bm)=cV$+CHR$0:?(Uy+bm+12)=7:?(Uy+bm+13)=2:?(Uy+bm+14)=7:?(Uy+bm+15)=0:!(Uy+bm+16)=ba:!(Uy+bm+20)=bb:!(Uy+bm+24)=0:bm+=28:ENDPROC
9660DEFPROCbo(cW$,cX,cY,cZ):!(Uy+bm+0)=cX:!(Uy+bm+4)=cY:!(Uy+bm+8)=&07000001+ABScZ*2^22:$(Uy+bm+12)=cW$+CHR$0:bm+=24:ENDPROC
9750DEFPROCbt(ca$,cX,cY,cZ):!(Uy+bm+0)=cX:!(Uy+bm+4)=cY:!(Uy+bm+8)=&07000101+ABScZ*2^22:cb=bp+bq:$cb=ca$+CHR$0:bq+=LENca$+1:!(Uy+bm+12)=cb:!(Uy+bm+16)=bp:!(Uy+bm+20)=16:bm+=24:ENDPROC
9870DEFPROCWs(XW):cc=XW!0:cd=XW!4:ce=TRUE:CASEVe OF
9920WHEN1:CASEcc OF
9930WHEN1:PROCXf(Uk,Wg):PROCWe(Uk,Wg,Wh,8,8)
9950WHEN2:IFVa THEN
9960Ww$=FNction_TagToString(Vk,"war07"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE):Vc=Wz=1
9990ELSE:Vc=TRUE
10010ENDIF
10020ENDCASE
10030WHEN2:CASEcc OF
10040WHEN0:CASEcd OF
10050WHEN1:PROCaU(Uk,Yj,5,"-"):PROCaU(Uk,Yj,3,"-"):PROCaU(Uk,Yj,7,"-"):PROCcf(Uk,Yj,10,WU):PROCcf(Uk,Yj,11, NOTWU):PROCXf(Uk,Yj)
10110WHEN2:PROCWc(Ui,Uk,Yq, NOTTRUE)
10120WHEN6:PROCcg
10130ENDCASE
10140WHEN1:CASEcd OF
10150WHEN0:PROCaW
10160WHEN1:PROCaX
10170WHEN2:PROCaY
10180WHEN3:PROCVy
10190WHEN4:PROCaZ
10200ENDCASE
10210WHEN2:CASEcd OF
10220WHEN0:PROCch
10230WHEN1:PROCci
10250WHEN2:PROCcj:ck=cl:PROCaU(Uk,Wk,1,STR$Zm):PROCWc(Ui,Uk,Wk, NOTTRUE):PROCWe(Uk,Wk,Wl,8,164+8)
10310WHEN3:PROCWc(Ui,Uk,Wi, NOTTRUE):PROCWe(Uk,Wi,Wj,8,8)
10330ENDCASE
10340WHEN3:CASEcd OF
10350WHEN0:PROCab(FNction_ReadIconText(Uk,Wf,1))
10360WHEN1:PROCaa:ce= NOTTRUE
10380WHEN2:PROCcm
10390ENDCASE
10400WHEN4:CASEcd OF
10410WHEN0:Wx=FNction_Insert_Pattern:IF NOTWx THEN
10430Ww$=FNction_TagToString(Vk,"err06"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
10450ENDIF
10460WHEN1:PROCcn
10470WHEN2:PROCco
10480WHEN3:PROCac
10490WHEN4:PROCaU(Uk,ad,1,"1"):PROCWc(Ui,Uk,ad, NOTTRUE):PROCXg(ad,1,1)
10520ENDCASE
10530ENDCASE
10540WHEN3:PROCaU(Uk,Wh,6,FNction_TagToString(Vk,"ster0"+STR$(cc+1)))
10550WHEN4:PROCaU(Uk,Wh,7,FNction_TagToString(Vk,"ster0"+STR$(cc+1)))
10560WHEN5:PROCaU(Uk,Wh,8,FNction_TagToString(Vk,"ster0"+STR$(cc+1)))
10570WHEN6:PROCaU(Uk,Wh,9,FNction_TagToString(Vk,"ster0"+STR$(cc+1)))
10580WHEN7:PROCaU(Uk,Wh,25,FNction_TagToString(Vk,"qual0"+STR$(cc+1)))
10590WHEN8:ah$=FNction_DecodeMenuIntoText(cp,XW,Uk+3*1024):ah$=FNction_LeafnameOnly(ah$):cq=INSTR(ah$,":"):cr=VALLEFT$(ah$,cq-1):cs$=MID$(ah$,cq+1,LENah$-cq):PROCct(VV$(cr)+".HQ_Library."+cs$,-1)
10650WHEN9:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCVr(MID$(ah$,4,LENah$))
10670WHEN10:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCcu(VALah$)
10690WHEN11:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Wk,1,ah$)
10710WHEN12:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,1,MID$(ah$,4,LENah$))
10730WHEN13:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,4,MID$(ah$,4,LENah$))
10750WHEN14:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,7,ah$)
10770WHEN15:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,10,ah$)
10790WHEN16:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,13,ah$)
10810WHEN17:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yb,16,ah$)
10830WHEN18:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yg,1,ah$)
10850WHEN19:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Yg,4,ah$)
10870WHEN20:ah$=FNction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):PROCaU(Uk,Wf,7,ah$)
10890ENDCASE:SYS&400CF,,XW:XX=XW!0:XY=XW!4:XZ=XW!8:IFce THEN
10950IFXZ=Ub THEN
10960CASEVe OF
10970WHEN1:PROCYs(XX)
10980WHEN2:PROCYt(XX,XY)
10990WHEN3:PROCXl(XX,XY,3)
11000WHEN4:PROCXl(XX,XY,4)
11010WHEN5:PROCXl(XX,XY,5)
11020WHEN6:PROCXl(XX,XY,6)
11030WHEN7:PROCXm(XX,XY,7)
11040WHEN8:SYS&400D4,,cp,XX,XY
11050WHEN9:PROCXo(XX,XY)
11060WHEN10:PROCXp(XX,XY)
11070WHEN20:PROCXq(XX,XY)
11080ENDCASE
11090ELSE:SYS&400D4,,-1:Ve=0
11120ENDIF
11130ENDIF:ENDPROC
11170DEFPROCan(XW):cv=XW!40:bX$=FNction_ExtractString(XW+44):bZ=XW!4:XW!16=4:XW!12=XW!8:IF NOTWU THEN
11240CASEcv OF
11250WHENUf:IFFNction_DoesFileExist(bX$+".HQ_Library") THEN
11260SYS&400E7,17,XW,bZ:PROCcw(bX$)
11280ELSE:IFFNction_DoesFileExist(bX$+".MusicData") THEN
11300SYS&400E7,17,XW,bZ:PROCcx(bX$,TRUE)
11320ELSE:Ww$=FNction_TagToString(Vk,"err03"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
11350ENDIF
11360ENDIF
11370WHENUg:IFFNction_FileIsInstrument(bX$) THEN
11380PROCct(bX$,-1):SYS&400E7,17,XW,bZ
11400ELSE:PROCcx(bX$, NOTTRUE):SYS&400E7,17,XW,bZ
11430ENDIF
11440ENDCASE
11450ENDIF:ENDPROC
11490DEFPROCao(XW):cv=XW!40:bX$=FNction_ExtractString(XW+44):bZ=XW!4:XW!16=4:XW!12=XW!8:IF NOTWU THEN
11560CASEcv OF
11570WHENUf:IFFNction_DoesFileExist(bX$+".HQ_Library") THEN
11580SYS&400E7,17,XW,bZ:PROCcw(bX$)
11600ELSE:IFFNction_DoesFileExist(bX$+".MusicData") THEN
11620SYS&400E7,17,XW,bZ:PROCcx(bX$,TRUE)
11640ENDIF
11650ENDIF
11660WHENUg:IFFNction_FileIsInstrument(bX$) THEN
11670PROCct(bX$,-1):SYS&400E7,17,XW,bZ
11690ELSE:PROCcx(bX$, NOTTRUE):SYS&400E7,17,XW,bZ
11720ENDIF
11730ENDCASE
11740ENDIF:ENDPROC
11780DEFFNction_SizeOfFile(bX$):LOCALcy,cz,dU,dV,dW,dX:LOCALdY:SYS&8,17,bX$ TOcy,cz,dU,dV,dW,dX:dY=dW:=dY
11860DEFFNction_DoesFileExist(bX$):LOCALcy,cz,dU,dV,dW,dX:SYS&8,17,bX$ TOcy,cz,dU,dV,dW,dX:=cy<>0
11920DEFFNction_TypeOfFile(bX$):LOCALcy,cz,dU,dV,dW,dX:LOCALdY:SYS&8,17,bX$ TOcy,cz,dU,dV,dW,dX:dZ=((dU>>8) AND&FFF):=dZ
12000DEFPROCaf:PROCaU(Uk,Zw,9,STR$cl):da=0:db=0:FORi=1 TOVX:IFVY$(i)<>"" THEN
12060SYS&900C5,VZ(i),UV TOdc:db+=1:da+=(dc!(64+4)) DIV1024
12090ENDIF:NEXT:PROCaU(Uk,Zw,7,STR$db):PROCaU(Uk,Zw,10,STR$da+" KB"):PROCaU(Uk,Zw,8,STR$bx):PROCaU(Uk,Zw,11,STR$bx+" KB"):ENDPROC
12180DEFPROCXr:PROCdd(Vw,Vx):ENDPROC
12230DEFPROCXu(XW):IFVv THEN
12250XX=XW!0:XY=XW!4:de=FNction_ColumnClickedOn(XX,XY):df=FNction_RowClickedOn(XX,XY):IFde<1 THENde=1
12300IFde>4 THENde=4
12310IFdf<1 THENdf=1
12320IFdf>64 THENdf=64
12330PROCdd(Vw,Vx):Vw=df:Vx=de:PROCdd(Vw,Vx)
12370ENDIF:ENDPROC
12410DEFFNction_RowClickedOn(XX,XY):Uk!0=Wd:SYS&400CC,,Uk:as=Uk!(12+4):dg=as-XY:av=Uk!(20+4):dg-=av:dh=dg-56:df=(dh DIV44)+1:=df
12500DEFFNction_ColumnClickedOn(XX,XY):Uk!0=Wd:SYS&400CC,,Uk:di=XX-(Uk!4-Uk!20):de=((di-6*16) DIV(18*16))+1:=de
12570DEFPROCdd(dj,dk):Uk!0=Wd:SYS&400CC,,Uk:as=Uk!(12+4):av=Uk!(20+4):ar=Uk!(0+4):Zs=as-56-dj*44 - av:Zr=ar+6*16 + (dk-1)*18*16:SYS&400D1,-1,Zr,Zs-8,Zr+13*16,Zs+44+8:ENDPROC
12680DEFPROCai:CASEZk OF
12700WHEN0:Zg=Vw:Zh=Vx:Zi=Vw:Zj=Vx:Zk=1:Zl=Zm
12740WHEN1,2:Zi=Vw:Zj=Vx:IFZg>Zi THENSWAPZg,Zi
12760IFZh>Zj THENSWAPZh,Zj
12770Zk=2
12780ENDCASE:PROCYZ(Uk,Wd):ENDPROC
12830DEFPROCVy:Zk=0:Zg=1:Zh=1:Zi=1:Zj=1:Zl=Zm:PROCYZ(Uk,Wd):ENDPROC
12920DEFPROCYr(dl$,dm):cU=VALFNction_ReadIconText(Uk,Wf,7)+dm:cU$=STR$cU:dn=FNction_FindInstrument(FNction_ReadIconText(Uk,Wf,1)):dn$=RIGHT$(" "+STR$dn,2):IFdn<>-1 THEN
13010SYS&900C5,VZ(Zy),UV TOdo:dp=do!(76+4):dp$=RIGHT$(" "+STR$dp,3):SYS&900C5,dq,UV TOdc:dc+=(Zm-1)* 1024:A%=!(dc+(Vw-1)*16 + (Vx-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):IFLEFT$(ds$,1)<>"J" THEN
13130MID$(ds$,1,2)=dl$:MID$(ds$,3,1)=STR$cU:MID$(ds$,5,2)=dn$:MID$(ds$,9,3)=dp$
13170ENDIF:SYS&90094,ds$ TOA%:IFVv THEN
13220!(dc+(Vw-1)*16 + (Vx-1)*4) = A%:dt=Vw:du=Vx:Vw+=1:IFVw>64 THENVw=64
13260PROCdd(dt,du):PROCdd(Vw,Vx)
13280ENDIF:Wx=FNction_Playout(dl$,STR$cU,TRUE):IFVv THEN
13320IFFNction_NoteIsBelowWindow THENPROCdv(Uk,Wd,0,-44*4)
13330IFFNction_NoteIsAboveWindow THENPROCdv(Uk,Wd,0,+44*4)
13340ENDIF
13360ENDIF:ENDPROC
13410DEFPROCag:SYS&900C5,dq,UV TOdc:dc+=(Zm-1)* 1024:!(dc+(Vw-1)*16 + (Vx-1)*4) = 0:dt=Vw:du=Vx:Vw+=1:IFVw>64 THENVw=64
13480PROCdd(dt,du):PROCdd(Vw,Vx):IFFNction_NoteIsBelowWindow THENPROCdv(Uk,Wd,0,-44*4)
13510IFFNction_NoteIsAboveWindow THENPROCdv(Uk,Wd,0,+44*4)
13520ENDPROC
13550DEFFNction_Playout(ds$,cU$,dw):SYS&9008B TOdx:IFdx=0 AND NOTVz THEN
13610Wx= NOTTRUE
13630ELSE:Wx=TRUE:IF NOTdw THENSYS&9008C
13680cU=VALcU$:ds=(INSTR("C C#D D#E F F#G G#A A#B ",ds$)+1)/2:dy=FNction_FindInstrument(FNction_ReadIconText(Uk,Wf,1)):IFdy<>-1 THEN
13740SYS&900C5,VZ(dy),UV TOdc:dz=dc!(76+4):eU=dc!(64+4):eV=dc!(68+4):eW=dc!(72+4):eV=0:eW=0:eX=dc+80+4:eY=eX:eZ=eX+eU-132:Uk!(2048+0)=eX:Uk!(2048+4)=eX+eU-132:Uk!(2048+8)=eV:Uk!(2048+12)=eW:Uk!(2048+16)=dz:Uk!(2048+20)=-1:Uk!(2048+24)=-1:Uk!(2048+28)=-1
13930SYS&9008D,1,Uk+2048:IF NOTVz THEN
13960SYS&9008A,!ea:SYS&90084,ABS(!eb),ABS(!ec),ABS(!ed),ABS(!ee):SYS&90083,!ef:SYS&9008B:SYS&90085,!eg,!eh,!ei,!ej
14010ENDIF:Uk!(2048+0)=1:Uk!(2048+4)=1:Uk!(2048+8)=cU:Uk!(2048+12)=ds:Uk!(2048+16)=2:Uk!(2048+20)=1:Uk!(2048+24)=cU:Uk!(2048+28)=ds:Uk!(2048+32)=3:Uk!(2048+36)=1:Uk!(2048+40)=cU:Uk!(2048+44)=ds:Uk!(2048+48)=4:Uk!(2048+52)=1:Uk!(2048+56)=cU:Uk!(2048+60)=ds
14080SYS&90090,(Uk+2048):SYS&90090,(Uk+2048+16):SYS&90090,(Uk+2048+32):SYS&90090,(Uk+2048+48):Vz=TRUE
14120ENDIF
14140ENDIF:=Wx
14190DEFPROCWY:SYS&90081,1 TOek:cY=ek!0:IFcY<eY ORcY>eZ THEN
14230SYS&9008C:SYS&9008E,1:Vz= NOTTRUE
14260ENDIF:ENDPROC
14300DEFPROCaj(el,em):IFVv THEN
14320dt=Vw:du=Vx:Vx+=el:Vw+=em:IFVw<1 THENVw=1
14370IFVw>64 THENVw=64
14380IFVx<1 THENVx=1
14390IFVx>4 THENVx=4
14400IFdt<>Vw ORdu<>Vx THEN
14410PROCdd(dt,du):PROCdd(Vw,Vx)
14430ENDIF:IFFNction_NoteIsBelowWindow THENPROCdv(Uk,Wd,0,-44*4)
14450IFFNction_NoteIsAboveWindow THENPROCdv(Uk,Wd,0,+44*4)
14460ENDIF:ENDPROC
14500DEFFNction_NoteIsBelowWindow:Uk!0=Wd:SYS&400CB,,Uk:ar=Uk!4:at=Uk!8:en=Uk!12:as=Uk!16:au=Uk!20:av=Uk!24:eo=as-56-Vw*44 - av:=eo<at
14600DEFFNction_NoteIsAboveWindow:Uk!0=Wd:SYS&400CB,,Uk:ar=Uk!4:at=Uk!8:en=Uk!12:as=Uk!16:au=Uk!20:av=Uk!24:eo=as-56-Vw*44 - av:=eo>as-56-22
14700DEFPROCcg:IFVq>0 ORcl>1 ORbx>1 ORVa THEN
14720Ww$=FNction_TagToString(Vk,"err23"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
14740ELSE:Wz=1
14760ENDIF:IFWz=1 THEN
14780FORep=1 TOVX:IFVY$(ep)<>"" THEN
14800PROCab(FNction_LeafnameOnly(VY$(ep)))
14810ENDIF:NEXTep:PROCYX:SYS&900C5,dq,UV TOdc:A%=dc:B%=dc+!Vn*1024:C%=0:CALLeq:er()= NOTTRUE:er(1)=TRUE:bx=1:PROCcu(1):PROCaU(Uk,Zw,2,""):PROCaU(Uk,Zw,3,""):PROCaU(Uk,Xz,1,"MusicApp"):PROCaU(Uk,Xv,1,"Instrument"):PROCaU(Uk,Xx,1,"MusicData "):PROCes(Uk,Wd,"<Untitled>"):Uk!0=Wd:SYS&400CB,,Uk
14990SYS&400C6,,Uk:SYS&400C5,,Uk:PROCXg(Wd,-1,0):PROCWe(Uk,Wd,Wf,0,0):Va= NOTTRUE:PROCWo(Uk,Wm):PROCWo(Uk,Wn)
15080ENDIF:ENDPROC
15120DEFPROCch:PROCaU(Uk,Yb,1,FNction_ReadIconText(Uk,Wf,1)):PROCaU(Uk,Yb,4,FNction_ReadIconText(Uk,Wf,1)):PROCaU(Uk,Yb,7,"C "):PROCaU(Uk,Yb,10,"C "):PROCaU(Uk,Yb,13,"1"):PROCaU(Uk,Yb,16,"1"):PROCYc:PROCWc(Ui,Uk,Yb, NOTTRUE):ENDPROC
15240DEFPROCYc:FORdj=1 TO3:et=FNction_IconIsToggled(Uk,Yb,(dj-1)*6):FORi=(dj*6-6)+1 TO(dj*6-6)+5:PROCcf(Uk,Yb,i, NOTet):NEXTi:NEXTdj:ENDPROC
15340DEFPROCYf(eu):IFFNction_IconIsToggled(Uk,Yb,0) THENPROCev
15360IFFNction_IconIsToggled(Uk,Yb,6) THENPROCew
15370IFFNction_IconIsToggled(Uk,Yb,12) THENPROCex
15380IFeu THENPROCWo(Uk,Yb)
15390PROCYZ(Uk,Wd):ENDPROC
15430DEFPROCci:PROCaU(Uk,Yg,1,FNction_TagToString(Vk,"ster01")):PROCaU(Uk,Yg,4,FNction_TagToString(Vk,"ster01")):PROCaU(Uk,Yg,7,"127"):PROCaU(Uk,Yg,11,"127"):PROCaU(Uk,Yg,15,"15"):PROCaU(Uk,Yg,19,"15"):PROCaU(Uk,Yg,24,"0"):PROCaU(Uk,Yg,26,"0"):PROCaU(Uk,Yg,25,"0"):PROCYh:PROCWc(Ui,Uk,Yg, NOTTRUE):ENDPROC
15580DEFPROCYh:et=FNction_IconIsToggled(Uk,Yg,0):FORi=1 TO5:PROCcf(Uk,Yg,i, NOTet):NEXTi:et=FNction_IconIsToggled(Uk,Yg,6):FORi=7 TO13:PROCcf(Uk,Yg,i, NOTet):NEXTi:et=FNction_IconIsToggled(Uk,Yg,14):FORi=15 TO21:PROCcf(Uk,Yg,i, NOTet):NEXTi:et=FNction_IconIsToggled(Uk,Yg,23):FORi=24 TO30
15730PROCcf(Uk,Yg,i, NOTet):NEXTi:ENDPROC
15780DEFPROCYi(eu):IFFNction_IconIsToggled(Uk,Yg,0) THENPROCey
15800IFFNction_IconIsToggled(Uk,Yg,6) THENPROCez
15810IFFNction_IconIsToggled(Uk,Yg,14) THENPROCfU
15820IFFNction_IconIsToggled(Uk,Yg,23) THENPROCfV
15830IFeu THENPROCWo(Uk,Yg)
15840PROCYZ(Uk,Wd):ENDPROC
15880DEFPROCYk:SYS&9008B TOdx:IFdx=-1 THEN
15930SYS&9008C:fW=FNction_IconIsToggled(Uk,Yj,1):SYS&900C5,dq,UV TOdc:SYS&900C5,fX,UV TOfY:SYS&90086,dc:SYS&90087,fY:SYS&90088,cl:IF NOTfW THEN
16040SYS&90089,ck,1
16050ELSE:SYS&90089,1,1
16070ENDIF:SYS&9008A,!ea:FORi=1 TOVX:IFVY$(i)<>"" THEN
16130Wy=VZ(i):SYS&900C5,Wy,UV TOdc:Uk!0=dc+80+4:Uk!4=dc+80+4+dc!(64+4)-132:Uk!8=dc!(68+4):Uk!12=dc!(72+4):Uk!16=dc!(76+4):SYS&9008D,i,Uk
16210ENDIF:NEXTi:SYS&90084,ABS(!eb),ABS(!ec),ABS(!ed),ABS(!ee):SYS&90082,!fZ:SYS&90083,!ef:SYS&9008B:SYS&90085,!eg,!eh,!ei,!ej:SYS&90091:WU=TRUE:PROCcf(Uk,Yj,8,WU):PROCcf(Uk,Yj,9, NOTWU):PROCaU(Uk,Yj,5,"1"):fa=1:PROCaU(Uk,Yj,3,STR$((?fY)+1)):fb=(?fY)+1:PROCaU(Uk,Yj,7,"1"):fc=1:PROCWo(Uk,Wk):PROCWo(Uk,Wl)
16410PROCWo(Uk,Yb):PROCWo(Uk,Yg):PROCWo(Uk,Wi):PROCWo(Uk,Wj):PROCWo(Uk,Wg):PROCWo(Uk,Wh):PROCWo(Uk,Wm):PROCWo(Uk,Wn):PROCWo(Uk,Yq):PROCaV:IFVv THEN
16490Vv= NOTTRUE:PROCYZ(Uk,Wd)
16510ENDIF
16570ENDIF:ENDPROC
16620DEFPROCYl:SYS&90092:SYS&9008C:SYS&9008E,-1:WU= NOTTRUE:PROCcf(Uk,Yj,8,WU):PROCcf(Uk,Yj,9, NOTWU):SYS&900C5,fX,UV TOdc:ENDPROC
16730DEFPROCWZ:SYS&90089,-1,-1 TOfd,fe:SYS&900C5,fX,UV TOdc:ff=dc?(fd-1):IFfd<>fa THENPROCaU(Uk,Yj,5,STR$fd):fa=fd
16780IFff<>fb THENPROCaU(Uk,Yj,3,STR$(ff+1)):fb=ff
16790IFfe<>fc THENPROCaU(Uk,Yj,7,STR$fe):fc=fe
16800ENDPROC
16830DEFPROCYY:IF NOTVa THEN
16850cV$=FNction_GetWindowTitle(Uk,Wd):cV$+=" *":PROCes(Uk,Wd,cV$):!Uk=Wd:SYS&400CC,,Uk:SYS&400C6,,Uk:SYS&400C5,,Uk:PROCWe(Uk,Wd,Wf,0,0):Va=TRUE:PROCXg(Wd,-1,0)
16950ENDIF:ENDPROC
16990DEFPROCap(XW):Wy$="":bZ=XW!4:fg=XW!32:fh=XW!36:CASEfg OF
17070WHENUc:IFfh=Vj THENWy$="ibar"
17090WHENWi:CASEfh OF
17100WHEN0:Wy$="lwin00"
17110WHEN1:Wy$="lwin01"
17120ENDCASE
17140WHENWg:CASEfh OF
17150WHEN0:Wy$="pwin00"
17160WHEN1:Wy$="pwin01"
17170WHEN2:Wy$="pwin02"
17180ENDCASE
17200WHENWh:CASEfh OF
17210WHEN2:Wy$="ppne02"
17220WHEN5:Wy$="ppne05"
17230WHEN3:Wy$="ppne03"
17240WHEN4:Wy$="ppne04"
17250WHEN6:Wy$="ppne06"
17260WHEN7:Wy$="ppne07"
17270WHEN8:Wy$="ppne08"
17280WHEN9:Wy$="ppne09"
17290WHEN10:Wy$="ppne10"
17300WHEN11:Wy$="ppne11"
17310WHEN12:Wy$="ppne12"
17320WHEN13:Wy$="ppne13"
17330WHEN17:Wy$="ppne17"
17340WHEN30:Wy$="ppne30"
17350WHEN31:Wy$="ppne31"
17360WHEN18:Wy$="ppne18"
17370WHEN20:Wy$="ppne20"
17380WHEN21:Wy$="ppne21"
17390WHEN25:Wy$="ppne25"
17400WHEN26:Wy$="ppne26"
17410WHEN32:Wy$="ppne32"
17420WHEN33:Wy$="ppne33"
17430WHEN34:Wy$="ppne34"
17440ENDCASE
17460WHENWj:Wy$="lpne"
17480WHENZw:CASEfh OF
17490WHEN2:Wy$="minf02"
17500WHEN3:Wy$="minf03"
17510WHEN7:Wy$="minf07"
17520WHEN8:Wy$="minf08"
17530WHEN9:Wy$="minf09"
17540WHEN10:Wy$="minf10"
17550WHEN11:Wy$="minf11"
17560ENDCASE
17570WHENWk:CASEfh OF
17580WHEN1:Wy$="sman01"
17590WHEN2:Wy$="sman02"
17600WHEN3:Wy$="sman03"
17610WHEN4:Wy$="sman04"
17620WHEN5:Wy$="sman05"
17630WHEN6:Wy$="sman06"
17640ENDCASE
17660WHENYb:CASEfh OF
17670WHEN0:Wy$="cnot00"
17680WHEN6:Wy$="cnot06"
17690WHEN12:Wy$="cnot12"
17700WHEN1:Wy$="cnot01"
17710WHEN4:Wy$="cnot04"
17720WHEN2:Wy$="cnot02"
17730WHEN5:Wy$="cnot05"
17740WHEN7:Wy$="cnot07"
17750WHEN10:Wy$="cnot10"
17760WHEN8:Wy$="cnot08"
17770WHEN11:Wy$="cnot11"
17780WHEN13:Wy$="cnot13"
17790WHEN16:Wy$="cnot16"
17800WHEN14:Wy$="cnot14"
17810WHEN17:Wy$="cnot17"
17820WHEN18:Wy$="cnot18"
17830ENDCASE
17850WHENYg:CASEfh OF
17860WHEN0:Wy$="chfx00"
17870WHEN6:Wy$="chfx06"
17880WHEN14:Wy$="chfx14"
17890WHEN23:Wy$="chfx23"
17900WHEN1:Wy$="chfx01"
17910WHEN4:Wy$="chfx04"
17920WHEN2:Wy$="chfx02"
17930WHEN5:Wy$="chfx05"
17940WHEN7:Wy$="chfx07"
17950WHEN11:Wy$="chfx11"
17960WHEN8:Wy$="chfx08"
17970WHEN12:Wy$="chfx12"
17980WHEN9:Wy$="chfx09"
17990WHEN13:Wy$="chfx13"
18000WHEN15:Wy$="chfx15"
18010WHEN19:Wy$="chfx19"
18020WHEN16:Wy$="chfx16"
18030WHEN20:Wy$="chfx20"
18040WHEN17:Wy$="chfx17"
18050WHEN21:Wy$="chfx21"
18060WHEN25:Wy$="chfx25"
18070WHEN27:Wy$="chfx27"
18080WHEN28:Wy$="chfx28"
18090WHEN22:Wy$="chfx22"
18100ENDCASE
18120WHENYj:CASEfh OF
18130WHEN1:Wy$="play01"
18140WHEN3:Wy$="play03"
18150WHEN5:Wy$="play05"
18160WHEN7:Wy$="play07"
18170WHEN8:Wy$="play08"
18180WHEN9:Wy$="play09"
18190ENDCASE
18210WHENad:CASEfh OF
18220WHEN1:Wy$="jump01"
18230ENDCASE
18250WHENWn:Wy$="ipne"
18270WHENWf:CASEfh OF
18280WHEN1:Wy$="mpne01"
18290WHEN2:Wy$="mpne02"
18300WHEN5:Wy$="mpne05"
18310WHEN6:Wy$="mpne06"
18320WHEN7:Wy$="mpne07"
18330WHEN8:Wy$="mpne08"
18340ENDCASE
18360WHENWd:Wy$="main"
18380WHENWl:Wy$="spne"
18400WHENWm:CASEfh OF
18410WHEN13:Wy$="iman13"
18420WHEN1:Wy$="iman01"
18430WHEN6:Wy$="iman06"
18440WHEN2:Wy$="iman02"
18450WHEN3:Wy$="iman03"
18460WHEN4:Wy$="iman04"
18470WHEN5:Wy$="iman05"
18480WHEN9:Wy$="iman09"
18490WHEN10:Wy$="iman10"
18500WHEN11:Wy$="iman11"
18510WHEN14:Wy$="iman14"
18520WHEN12:Wy$="iman12"
18530ENDCASE
18550ENDCASE:IFWy$<>"" THEN
18580fi$=FNction_TagToString(Vk,Wy$):XW!0=20+((LEN(fi$) DIV4)*4)+4:XW!12=XW!8:XW!16=&503:$(XW+20)=fi$+CHR$0:SYS&400E7,17,XW,bZ
18640ENDIF:ENDPROC
18680DEFFNction_FileIsInstrument(fj$):fk=OPENINfj$:fl=BGET#fk:fm=BGET#fk:fn=BGET#fk:fo=BGET#fk:CLOSE#fk:=((fl=ASC"I") AND(fm=ASC"N") AND(fn=ASC"S") AND(fo=ASC"T"))
18760DEFPROCUX:Ww$="Fatal Error : "+REPORT$+" ("+STR$ERL+")":Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE, NOTTRUE):ENDPROC
18850DEFPROCWW:PROCXf(Uk,Xb):PROCfp(Uk,Xb):VDU7:ENDPROC
18920DEFPROCXc:PROCXf(Uk,Xd):PROCfp(Uk,Xd):VDU7:ENDPROC
19090DEFPROCVi:fq=13:fr=14:fs=15:DIMft 5*1024:FORfu=0 TO2STEP2:P%=ft:[OPT fu:.fv STMFD (fq)!,{r0-r12,fr}:MOV r12,#13:MOV r11,#0:MOV r10,#0:LDR r9,fw:LDR r8,fx:LDR r6,fy:LDR r5,fz:LDR r4,gU:LDR r3,gV:LDR fr,gW:.gX:CMP r10,r4 : BLT gY:CMP r10,r3 : BGT gY:.gZ CMP r12,#11
19390MOVNE r0,#11:SWINE "Wimp_SetColour":MOVNE r12,#11:B ga:.gY CMP r12,#7:MOVNE r0,#7:SWINE "Wimp_SetColour":MOVNE r12,#7:.ga LDRB r7,[r9]:MOV r7,r7,ASR #1:CMP r11,#0:MVNNE r7,r7:ADDNE r7,r7,#1:.gb MOV r0,#5:ADD r1,r5,r10,ASL #1:ADD r2,r6,r7
19580ADD r2,r2,#128:CMP r10,#0:MOVEQ r0,#4:SWI "OS_Plot":.gc MVN r11,r11:ADD r9,r9,r8:CMP r9,fr:MOVGT r9,fr:ADD r10,r10,#2:CMP r10,#800:BNE gX:LDMFD (fq)!,{r0-r12,PC}:.fx DCD 0:.fy DCD 0:.fz DCD 0:.gU DCD 0:.gV DCD 0:.fw DCD 0:.gW DCD 0:.eq STR r2,[r0],#4
19940CMP r0,r1:BNE eq:MOV PC,fr:.gd STMFD (fq)!,{r0-r12,fr}:.ge MOV r0,#5:SWI "OS_WriteC":.gf LDR r0,gg:LDR r1,gh:LDR r2,gi:.gj CMP r0,r1:ADDGT r2,r2,#1:SUBGT r0,r0,#44:BGT gj:STR r0,gg:STR r2,gi:.gk LDR r0,gi:CMP r0,#64:BGT gl:LDR r0,gg:LDR r1,gm
20290CMP r0,r1:BLT gl:LDR r0,gg:ADD r0,r0,#32:STR r0,gn:.go MOV r0,#8 : SWI "Wimp_SetColour":LDR r0,gi:ADR r1,gp:SUB r0,r0,#1:ADD r1,r1,r0,ASL #1:LDRB r2,[r1,#0]: STRB r2,gq+0:LDRB r2,[r1,#1]: STRB r2,gq+1:BL gr:ADR r0,gq : BL gs
20460.gt MOV r0,#1 : STR r0,gu : BL gv:.gw MOV r0,#2 : STR r0,gu : BL gv:.gx MOV r0,#3 : STR r0,gu : BL gv:.gy MOV r0,#4 : STR r0,gu : BL gv:.gz LDR r0,gi:ADD r0,r0,#1:STR r0,gi:LDR r0,gg:SUB r0,r0,#44:STR r0,gg:B gk:.gl:.hU MOV r0,#4:SWI "OS_WriteC"
20640LDMFD (fq)!,{r0-r12,PC}:.gv STMFD (fq)!,{fr}:LDR r0,gu:CMP r0,#1 : LDREQ r1,eb:CMP r0,#2 : LDREQ r1,ec:CMP r0,#3 : LDREQ r1,ed:CMP r0,#4 : LDREQ r1,ee: ANDS r1, r1, #1:MOVEQ r0,#2:MOVNE r0,#7 : SWI "Wimp_SetColour":BL hV:LDR r0,hW:CMP r0,#0:BEQ hX
20840.hY MOV r0,#7:SWI "Wimp_SetColour":BL hZ:MOV r0,#1:SWI "Wimp_SetColour":.hX BL ha:LDR r0,hb:CMP r0,#0:BEQ hc:.hd MOV r0,#8:SWI "Wimp_SetColour":BL hZ:MOV r0,#9:SWI "Wimp_SetColour":B he:.hc:.he LDR r0,hf:LDR r1,gi:SUB r1,r1,#1:ADD r0,r0,r1,ASL #4
21090LDR r1,gu:SUB r1,r1,#1:ADD r0,r0,r1,ASL #2:LDR r0,[r0]:SWI "PlayModule_NoteToString":STR r0,hg:LDR r0,hh:STR r0,hi:ADD r0,r0,#6*16:MOV r1,#18*16:LDR r2,gu:SUB r2,r2,#1:MLA r0,r1,r2,r0:STR r0,hh:BL gr:LDR r0,hg:MOV r1,#0:STRB r1,[r0,#11]
21310.hj LDRB r2,[r0,#0]:CMP r2,#ASC"J":MOVEQ r12,r0:MOVEQ r0,#11:SWIEQ "Wimp_SetColour":MOVEQ r0,r12:BEQ hk:LDRB r2,[r0,#8]:LDRB r3,[r0,#9]:LDRB r4,[r0,#10]:CMP r2,#ASC" ":CMPEQ r3,#ASC" ":CMPEQ r4,#ASC"0":ADREQ r0,hl:BEQ hk:LDRB r4,[r0,#2]:CMP r4,#ASC"0":ADREQ r0,hl
21520.hk BL gs:LDR r0,hi:STR r0,hh:LDMFD (fq)!,{PC}:.gq EQUS "xx :": EQUB 0 : ALIGN:.hl EQUS " - ": EQUB 0 : ALIGN:.gp EQUS "01020304050607080910111213141516":EQUS "17181920212223242526272829303132":EQUS "33343536373839404142434445464748"
21650EQUS "49505152535455565758596061626364":.hi DCD 0:.hg DCD 0:.hh DCD 0:.gn DCD 0:.hf DCD 0:.gg DCD 0:.hm DCD 0:.gh DCD 0:.gm DCD 0:.gi DCD 0:.hn DCD 0:.ho DCD 0:.hp DCD 0:.gu DCD 0:.hW DCD 0:.hq DCD 0:.hr DCD 0:.hs DCD 0:.ht DCD 0:.hb DCD 0:.hu DCD 0
21890.hv DCD 0:.hw DCD 0:.hV MOV r0,#0:STR r0,hW:LDR r1,hq : LDR r2,hr:LDR r3,hs : LDR r4,ht:LDR r5,gi : LDR r6,gu:CMP r5,r1 : MOVLT PC,fr:CMP r5,r3 : MOVGT PC,fr:CMP r6,r2 : MOVLT PC,fr:CMP r6,r4 : MOVGT PC,fr:LDR r0,hv:LDR r1,hw:CMP r0,r1 : MOVNE PC,fr
22110LDR r0,hu:CMP r0,#0 :MOVEQ PC,fr:MOV r0,#1:STR r0,hW:MOV PC,fr:.ha MOV r0,#0:STR r0,hb:LDR r0,gi : LDR r1,ho:LDR r2,gu : LDR r3,hp:LDR r4,hn:CMP r0,r1 : MOVNE PC,fr:CMP r2,r3 : MOVNE PC,fr:CMP r4,#0 :MOVEQ PC,fr:MOV r0,#1:STR r0,hb:MOV PC,fr:.gr MOV r0,#4
22380LDR r1,hh:LDR r2,gn:SWI "OS_Plot":MOV PC,fr:.gs SWI "OS_Write0":MOV PC,fr:.hZ LDR r3,hh:ADD r3,r3,#6*16:LDR r0,gu:SUB r0,r0,#1:MOV r1,#18*16:MLA r3,r0,r1,r3:LDR r4,gn:SUB r4,r4,#2*16:SUB r4,r4,#8:MOV r5,#11*16:MOV r6,#2*16 : ADD r6,r6,#12:MOV r0,#4
22640MOV r1,r3:MOV r2,r4 : SWI "OS_Plot":MOV r0,#96+5:ADD r1,r3,r5:ADD r2,r4,r6 : SWI "OS_Plot":MOV PC,fr:.eb DCD 0:.ec DCD 0:.ed DCD 0:.ee DCD 0:.eg DCD 0:.eh DCD 0:.ei DCD 0:.ej DCD 0:.fZ DCD 0:.ef DCD 0:.ea DCD 0:.Vn DCD 0:]:NEXTfu:ENDPROC
23270DEFPROCev:hx=FNction_FindInstrument(FNction_ReadIconText(Uk,Yb,1)):hy=FNction_FindInstrument(FNction_ReadIconText(Uk,Yb,4)):hy$=RIGHT$(" "+STR$hy,2):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:FORdj=Zg TOZi:FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr
23420ds$=FNction_ExtractString(dr):IFLEFT$(ds$,1)<>"J" THEN
23450IFVALMID$(ds$,5,2)=hx THEN
23460MID$(ds$,5,2)=hy$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%
23490ENDIF
23500ENDIF:NEXTdk:NEXTdj:PROCYY:ENDPROC
23630DEFPROCew:hx$=FNction_ReadIconText(Uk,Yb,7):hy$=FNction_ReadIconText(Uk,Yb,10):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:FORdj=Zg TOZi:FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):IFLEFT$(ds$,1)<>"J" THEN
23800IFMID$(ds$,1,2)=hx$ THEN
23810MID$(ds$,1,2)=hy$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%
23840ENDIF
23850ENDIF:NEXTdk:NEXTdj:PROCYY:ENDPROC
23980DEFPROCex:hx$=FNction_ReadIconText(Uk,Yb,13):hy$=FNction_ReadIconText(Uk,Yb,16):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:FORdj=Zg TOZi:FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):IFLEFT$(ds$,1)<>"J" THEN
24150IFMID$(ds$,3,1)=hx$ THEN
24160MID$(ds$,3,1)=hy$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%
24190ENDIF
24200ENDIF:NEXTdk:NEXTdj:PROCYY:ENDPROC
24330DEFPROCez:hx=VALFNction_ReadIconText(Uk,Yg,7):hy=VALFNction_ReadIconText(Uk,Yg,11):IFhx>127 THENhx=127
24380IFhy>127 THENhy=127
24400SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:hz=(Zi-Zg)+1:IFhz=0 THENhz=1
24460iU=(hy-hx)/hz:iV=hx:FORdj=Zg TOZi:IFdj=Zi THENiV=hy
24510FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):iW$=RIGHT$(" "+STR$(INTiV),3):MID$(ds$,9,3)=iW$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%:NEXTdk:iV+=iU:NEXTdj:PROCYY:ENDPROC
24740DEFPROCey:hx=FNction_MessageIndex(FNction_ReadIconText(Uk,Yg,1),"ster0"):hy=FNction_MessageIndex(FNction_ReadIconText(Uk,Yg,4),"ster0"):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:hz=(Zi-Zg)+1:IFhz=0 THENhz=1
24850iU=(hy-hx)/hz:iV=hx:FORdj=Zg TOZi:IFdj=Zi THENiV=hy
24900FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):iX$=STR$(INTiV):MID$(ds$,16,1)=iX$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%:NEXTdk:iV+=iU:NEXTdj:PROCYY:ENDPROC
25130DEFPROCfU:hx=VALFNction_ReadIconText(Uk,Yg,15):hy=VALFNction_ReadIconText(Uk,Yg,19):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:hz=(Zi-Zg)+1:IFhz=0 THENhz=1
25240iU=(hy-hx)/hz:iV=hx:FORdj=Zg TOZi:IFdj=Zi THENiV=hy
25290FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):iY$=RIGHT$(" "+STR$(INTiV),2):MID$(ds$,13,2)=iY$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%:NEXTdk:iV+=iU:NEXTdj:PROCYY:ENDPROC
25520DEFPROCfV:iZ=VALFNction_ReadIconText(Uk,Yg,24):SYS&900C5,dq,UV TOdc:dc+=4:dc+=(Zl-1)* 1024:hz=(Zi-Zg)+1:IFhz=0 THENhz=1
25630ia=INT(iZ/hz):ib=(iZ/hz)-ia:ic=0:id= NOTTRUE:FORdj=Zg TOZi:FORdk=Zh-1 TOZj-1:A%=!(dc+(dj-1)*16 + (dk-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):ic+=ib:IFic>=1 THEN
25790ie=ia+(INTic):ic-=1
25810ELSE:ie=ia
25830ENDIF:IFie>15 THEN
25860ie=15:id=TRUE
25880ENDIF:if$=RIGHT$("00"+STR$(ABSie),2):IFiZ<0 THENig$="-"
25920IFiZ>=0 THENig$="+"
25940MID$(ds$,18,1)=ig$:MID$(ds$,19,2)=if$:SYS&90094,ds$ TOA%:!(dc+(dj-1)*16 + (dk-1)*4) = A%:NEXTdk:NEXTdj:PROCYY:IFid THEN
26050Ww$=FNction_TagToString(Vk,"war09"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE, NOTTRUE)
26070ENDIF:ENDPROC
26160DEFPROCaW:SYS&900C5,dq,UV TOdc:ih=Zg:ii=Vw:WHILEih<=Zi ANDii<=64:ij=Zh:ik=Vx:WHILEij<=Zj ANDik<=4:il=dc+((Zl-1)*1024) + ((ih-1)*16) + ((ij-1)*4):im=dc+((Zm-1)*1024) + ((ii -1)*16) + ((ik -1)*4):!im=!il:ij+=1:ik+=1:ENDWHILE:ih+=1:ii+=1:ENDWHILE:PROCYZ(Uk,Wd):PROCYY:ENDPROC
26410DEFPROCaX:SYS&900C5,dq,UV TOdc:ih=Zg:ii=Vw:WHILEih<=Zi ANDii<=64:ij=Zh:ik=Vx:WHILEij<=Zj ANDik<=4:il=dc+((Zl-1)*1024) + ((ih-1)*16) + ((ij-1)*4):im=dc+((Zm-1)*1024) + ((ii -1)*16) + ((ik -1)*4):!im=!il:!il=0:ij+=1:ik+=1:ENDWHILE:ih+=1:ii+=1:ENDWHILE:PROCYZ(Uk,Wd):PROCYY:ENDPROC
26670DEFPROCaY:SYS&900C5,dq,UV TOdc:dc+=(Zl-1)* 1024:FORdj=Zg TOZi:FORdk=Zh TOZj:!(dc+(dj-1)*16 + (dk-1)*4) = 0:NEXTdk:NEXTdj:PROCYZ(Uk,Wd):PROCYY:ENDPROC
26890DEFPROCaZ:SYS&900C5,dq,UV TOdc:ih=Zg:ii=Vw:WHILEih<=Zi ANDii<=64:ij=Zh:ik=Vx:WHILEij<=Zj ANDik<=4:il=dc+((Zl-1)*1024) + ((ih-1)*16) + ((ij-1)*4):im=dc+((Zm-1)*1024) + ((ii -1)*16) + ((ik -1)*4):IF!il<>0 THEN!im=!il
27070ij+=1:ik+=1:ENDWHILE:ih+=1:ii+=1:ENDWHILE:PROCYZ(Uk,Wd):PROCYY:ENDPROC
27460DEFPROCVr(cs$):IFVq=0 THEN
27500PROCin(TRUE):PROCaU(Uk,Wf,1,"")
27530ELSE:i=FNction_FindInstrument(cs$):Zy=i:PROCaU(Uk,Wf,1,cs$):IFFNction_WindowIsOpen(Uk,Wn) THEN
27610PROCWo(Uk,Wm):PROCWo(Uk,Wn):PROCcm
27640ENDIF
27660ENDIF:ENDPROC
27740DEFPROCct(bX$,io):IFFNction_InstrumentAlreadyLoaded(bX$) THEN
27780Ww$=FNction_TagToString(Vk,"err26"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
27810ELSE:IFVq=VX THEN
27850Ww$=FNction_TagToString(Vk,"err05"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
27880ELSE:Vq+=1:IFio=-1 THEN
27930ip=1:WHILEVY$(ip)<>"":ip+=1:ENDWHILE
27970ELSE:ip=io
27990ENDIF:iq= NOTTRUE:VY$(ip)=bX$:SYS&900C2,bX$,UV TOWx,Wy:CASEWx OF
28060WHEN0:iq=TRUE:Ww$=FNction_TagToString(Vk,"err35")+FNction_LeafnameOnly(bX$)+CHR$34
28080WHEN1:iq=TRUE:Ww$=FNction_TagToString(Vk,"err36")
28100WHEN2:iq=TRUE:Ww$=FNction_TagToString(Vk,"err37")+FNction_LeafnameOnly(bX$)+CHR$34
28120ENDCASE:IFiq THEN
28160Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):VY$(ip)="":Vq-=1:PROCVr(FNction_LeafnameOnly(VY$(Zy)))
28210ELSE:SYS&900C5,Wy,UV TOdc:VZ(ip)=Wy:IFVq=1 THEN
28270PROCin( NOTTRUE)
28280ENDIF:ir=dc!(12+4):IFir<>!ea THEN
28320is$=FNction_TagToString(Vk,"war04"):it$=FNction_TagToString(Vk,"qual0"+STR$ir):iu$=FNction_TagToString(Vk,"war10"):Wz=FNction_ReportError(Uk,99,Ud$,is$+it$+iu$,TRUE,TRUE):IFWz=1 THEN
28370!ea=ir:PROCXi:IFFNction_WindowIsOpen(Uk,Wh) THEN
28400PROCYZ(Uk,Wh)
28410ENDIF
28420ENDIF
28430ENDIF:IF NOTFNction_WindowIsOpen(Uk,Wd) THEN
28460PROCXf(Uk,Wd):PROCWe(Uk,Wd,Wf,0,0):PROCXg(Wd,-1,0)
28490ENDIF:PROCVr(FNction_LeafnameOnly(VY$(Vq))):PROCYY
28540ENDIF
28560ENDIF
28580ENDIF:ENDPROC
28660DEFFNction_InstrumentAlreadyLoaded(bX$):LOCALZz$,i,iv:iv= NOTTRUE:i=1:WHILEi<=VX AND NOTiv:Zz$=FNction_LeafnameOnly(VY$(i)):IFZz$=FNction_LeafnameOnly(bX$) THEN
28730iv=TRUE
28740ELSE:i+=1
28760ENDIF:ENDWHILE:=iv
28840DEFPROCin(iw):PROCcf(Uk,Wf,1,iw):PROCcf(Uk,Wf,2,iw):ENDPROC
28950DEFPROCXo(XX,XY):IFVq>0 THEN
28980Ve=9:bm=0:bp=Uy+16*1024:bq=0:PROCbn("Instruments",224,44):FORi=1 TO32:IFVY$(i)<>"" THEN
29080PROCbt(RIGHT$(" "+STR$i,2)+":"+FNction_LeafnameOnly(VY$(i)),0,-1, NOTTRUE)
29090ENDIF:NEXTi:!(Uy+bm-24)=128:SYS&400D4,,Uy,XX,XY
29150ENDIF:ENDPROC
29230DEFPROCab(cs$):i=1:WHILEFNction_LeafnameOnly(VY$(i))<>cs$:i+=1:ENDWHILE:Wy=VZ(i):SYS&900C4,Wy,UV TOWx:VY$(i)="":VZ(i)=0:i=1:REPEAT:ix$=FNction_LeafnameOnly(VY$(i)):i+=1:UNTILix$<>"" ORi>VX:Vq-=1:PROCVr(ix$):PROCYY:PROCWo(Uk,Wn):PROCWo(Uk,Wm):IFFNction_WindowIsOpen(Uk,Yb) THEN
29500PROCch
29510ENDIF:ENDPROC
29590DEFPROCYo(iy):SYS&900C5,VZ(Zy),UV TOdc:iz=dc!(76+4):iW=iz+iy:IFiW<0 THENiW=0
29640IFiW>127 THENiW=127
29650dc!(76+4)=iW:PROCaU(Uk,Wm,9,STR$iW):PROCYY:ENDPROC
29750DEFPROCYm(iy):SYS&900C5,VZ(Zy),UV TOdc:jU=dc!(68+4):jV=dc!(72+4):jW=jU+iy:IFjW<0 THENjW=0
29810IFjW>jX THENjW=jX
29820IFjW+jV>jX THENjW=jU
29830dc!(68+4)=jW:PROCaU(Uk,Wm,1,STR$jW):PROCYZ(Uk,Wn):PROCYY:ENDPROC
29930DEFPROCYn(iy):SYS&900C5,VZ(Zy),UV TOdc:jU=dc!(68+4):jV=dc!(72+4):jY=jV+iy:IFjY<0 THENjY=0
29990IFjY>jX THENjY=jX
30000IFjY+jU>jX THENjY=jV
30010dc!(72+4)=jY:PROCaU(Uk,Wm,6,STR$jY):PROCYZ(Uk,Wn):PROCYY:ENDPROC
30110DEFFNction_FindInstrument(cs$):LOCALi:i=1:iv= NOTTRUE:IFcs$="" THENi=VX+1
30160WHILE(NOTiv) ANDi<=VX:IFFNction_LeafnameOnly(VY$(i))=cs$ THEN
30180iv=TRUE
30190ELSE:i+=1
30210ENDIF:ENDWHILE:IFi>VX THENi=-1
30240=i
30300DEFPROCaz:SYS&900C5,VZ(Zy),UV TOdc:jZ=dc!(76+4):jX=dc!(64+4):ja=dc!(68+4):jb=dc!(72+4):!fx=(jX/800)*4:!fy=at:!fz=ar:!fw=dc+80+4:!gW=dc+80+4+jX-1:!gU=((ja/jX)* 800/2 ) + 2:!gV=!gU+((jb/jX)* 800/2 ):jc=ar+(ja/jX*800):ba=(jb/jX*800):SYS&400E6,15:RECTANGLEFILLjc,at,ba,256
30500CALLfv:ENDPROC
30580DEFPROCYv(Yw,Yx):PROCjd(Uk,Wn,Yw,Yx):SYS&900C5,VZ(Zy),UV TOdc:jX=dc!(64+4):je=(jf%/800)*jX:jg=0:IFje<0 THENje=0
30670dc!(68+4)=je:dc!(72+4)=jg:Uk!0=Wn:Uk!4=7:Uk!8=Yw:Uk!12=Yx:Uk!16=Yw:Uk!20=Yx:Uk!24=Wn:SYS&400CC,,Uk+24:Uk!24=Uk!28:Uk!28=Uk!32:Uk!32=Uk!36:Uk!36=Uk!40:SYS&400D0,,Uk:PROCaU(Uk,Wm,1,STR$(INTje)):PROCaU(Uk,Wm,6,STR$(INTjg)):ENDPROC
30900DEFPROCbV(XW):SYS&900C5,VZ(Zy),UV TOdc:dc!(68+4)=je:dc!(72+4)=jg:PROCaU(Uk,Wm,1,STR$(INTje)):PROCaU(Uk,Wm,6,STR$(INTjg)):PROCYZ(Uk,Wn):ENDPROC
31030DEFPROCWa:SYS&400CF,,Uk:PROCjd(Uk,Wn,Uk!0,Uk!4):SYS&900C5,VZ(Zy),UV TOdc:jX=dc!(64+4):jg=(jf%/800)*jX:jg-=je:IFjg<0 THENjg=0
31150jh=dc!(72+4):dc!(72+4)=jg:IF(INTjg)<>(INTjh) THEN
31190PROCaU(Uk,Wm,1,STR$(INTje)):PROCaU(Uk,Wm,6,STR$(INTjg)):PROCYZ(Uk,Wn)
31220ENDIF:ENDPROC
31300DEFPROCcm:SYS&900C5,VZ(Zy),UV TOdc:PROCaU(Uk,Wm,13,LEFT$(FNction_ExtractString(dc+16+4),32)):ir=dc!(12+4):ji=dc!(68+4):jj=dc!(72+4):dp=dc!(76+4):ir$=FNction_TagToString(Vk,"qual0"+STR$ir):PROCes(Uk,Wm,FNction_ReadIconText(Uk,Wf,1)+" ("+ir$+")"):PROCaU(Uk,Wm,1,STR$ji)
31400PROCaU(Uk,Wm,6,STR$jj):PROCaU(Uk,Wm,9,STR$dp):PROCWc(Ui,Uk,Wm, NOTTRUE):PROCWe(Uk,Wm,Wn,8,4):ENDPROC
31500DEFPROCYp:SYS&9008B TOdx:IFdx=-1 THEN
31550IF NOTWU AND NOTVz THEN
31570SYS&9008C:PROCfp(Uk,Wm):SYS&406C0:SYS&900C5,VZ(Zy),UV TOdc:ir=dc!(12+4):dz=dc!(76+4):eU=dc!(64+4):eV=dc!(68+4):eW=dc!(72+4):eX=dc+(80+4):eY=eX:eZ=eX+eU-132:Uk!(2048+0)=eX:Uk!(2048+4)=eX+eU-132:Uk!(2048+8)=eV:Uk!(2048+12)=eW:Uk!(2048+16)=dz:Uk!(2048+20)=-1
31780Uk!(2048+24)=-1:Uk!(2048+28)=-1:SYS&9008D,1,Uk+2048:SYS&9008A,ir:SYS&90084,ABS(!eb),ABS(!ec),ABS(!ed),ABS(!ee):SYS&90083,!ef:SYS&9008B:SYS&90085,!eg,!eh,!ei,!ej:Uk!(2048+0)=1:Uk!(2048+4)=1:Uk!(2048+8)=4:Uk!(2048+12)=1
31890Uk!(2048+16)=2:Uk!(2048+20)=1:Uk!(2048+24)=4:Uk!(2048+28)=1:Uk!(2048+32)=3:Uk!(2048+36)=1:Uk!(2048+40)=4:Uk!(2048+44)=1:Uk!(2048+48)=4:Uk!(2048+52)=1:Uk!(2048+56)=4:Uk!(2048+60)=1:SYS&90090,(Uk+2048):SYS&90090,(Uk+2048+16)
31940SYS&90090,(Uk+2048+32):SYS&90090,(Uk+2048+48):REPEAT:SYS&90081,1 TOek:cY=ek!0:UNTILINKEY(-113) OR((cY<eY ORcY>eZ) ANDeW=0):REPEAT:UNTIL NOTINKEY(-113):SYS&406C1:SYS&9008C:SYS&9008E,1:PROCXe(Uk+2048)
32080ENDIF
32100ENDIF:ENDPROC
32450DEFPROCcw(bX$):IFVp=VU THEN
32490Ww$=FNction_TagToString(Vk,"err04"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
32520ELSE:i=1:a$="":b$=FNction_LeafnameOnly(bX$):WHILEi<=Vp ANDa$<>b$:a$=FNction_LeafnameOnly(VV$(i)):i+=1:ENDWHILE:IFa$=b$ THEN
32630Ww$=FNction_TagToString(Vk,"war01"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
32660ELSE:Wz=1
32700ENDIF:IFWz=1 THEN
32740SYS&406C0:Vp+=1:jk=1:WHILEVV$(jk)<>"":jk+=1:ENDWHILE:VV$(jk)=bX$:bX$+=".HQ_Library":SYS&29,28,bX$,0,0 TO,,,jl:FORdW=0 TOjl-1:SYS&406C4,(dW/jl)*100:cy=9:dU=Uk:dV=1:dX=1*1024:SYS&C,cy,bX$,dU,dV,dW,dX,"" TOcy,cz,dU,dV,,dX,jm:jn$=FNction_ExtractString(Uk)
33010IFFNction_TypeOfFile(bX$+"."+jn$)=Ug THEN
33020SYS&D,&40,bX$+"."+jn$,0 TOjo:SYS&C,3,jo,Uk,16:jp=Uk!(8+4):SYS&D,0,jo:Wx=FNction_AddToLinkedList(jn$,jp,jk)
33070ENDIF:NEXTdW:SYS&406C2:IFFNction_WindowIsOpen(Uk,Wj) THEN
33140PROCYZ(Uk,Wj)
33150ENDIF
33170ENDIF
33190ENDIF:ENDPROC
33270DEFPROCaa:Ve=8:bm=0:bp=Uy+16*1024:bq=0:FORjq=1 TO13:!(Uk+jq*8+0) = Uy + bm:cV$=FNction_TagToString(Vk,"inst"+RIGHT$("00"+STR$jq,2)):PROCbn(MID$(cV$,1,2),208,44):jr=FNction_NumberOfElementsInList:PROCjs:i=1:jt=0:WHILEi<jr:jp=FNction_ClassOfThisInstrument:IFjp=jq THEN
33490ju$=FNction_NameOfThisInstrument:jv=FNction_InstrumentsLibraryLink:jt+=1:PROCbt(STR$jv+":"+ju$,0,-1, NOTTRUE)
33530ENDIF:PROCjw:i+=1:ENDWHILE:!(Uk+jq*8+4) = (jt = 0):IFjt>0 THEN!(Uy+bm-24)=128
33610NEXTjq:cp=Uy+bm:PROCbn("Instruments",288,44):FORjq=1 TO13:cV$=FNction_TagToString(Vk,"inst"+RIGHT$("00"+STR$jq,2)):IFjq=13 THENjx=128ELSEjx=0
33690PROCbt(MID$(cV$,5,LENcV$-5),jx,!(Uk+jq*8+0),!(Uk+jq*8+4)):NEXTjq:SYS&1C TOXX,XY,jy:SYS&400D4,,cp,XX,XY:ENDPROC
33850DEFPROCVo:A%=Uz:B%=Uz+32*1024:C%=0:CALLeq:Uz!0=0:Uz?15=0:Uz!16=0:jz=1:kU=0:ENDPROC
33990DEFFNction_AddToLinkedList(ju$,jp,cr):IFjz<1632 THEN
34030cY=Uz+kU:kV=1:iv= NOTTRUE:kW=FNction_FirstFreeRecord:REPEAT:kX$=FNction_ExtractInstrumentName(cY+5):IFju$<kX$ ORjz=1 THEN
34140iv=TRUE:PROCkY(kV)
34170ELSE:kZ=cY!16:cY+=kZ:kV+=1
34230ENDIF:UNTILiv ORkV>jz:IFkV>jz THEN
34280PROCkY(kV)
34290ENDIF:Wx=TRUE
34330ELSE:Wx= NOTTRUE
34370ENDIF:=Wx
34420DEFPROCkY(ka):IFka=1 THEN
34460IFjz>1 THEN
34470cY!0=kW-cY
34480ENDIF:kW!0=0:kW?4=jp:$(kW+5)=ju$:kW?15=cr:kW!16=kU-(kW-Uz):kU=kW-Uz
34580ELSE:IFka>jz THEN
34620cY!16=kW-cY:kW!0=cY-kW:kW?4=jp:$(kW+5)=ju$:kW?15=cr:kW!16=0
34710ELSE:kb=cY+cY!0:kb!16=kW-kb:kW!0=kb-kW:kW?4=jp:$(kW+5)=ju$:kW?15=cr:kW!16=cY-kW:cY!0=kW-cY
34840ENDIF
34860ENDIF:jz+=1:ENDPROC
34960DEFPROCkc(cr):REPEAT:cY=Uz+kU:kV=1:iv= NOTTRUE:REPEAT:kd=cY?15:IFkd=cr THEN
35100cY?15=0:jz-=1:IFkV=1 THEN
35150kU+=cY!16:!(Uz+kU)=0
35180ELSE:IFkV=jz THEN
35220ke=cY+cY!0:ke!16=0
35250ELSE:kb=cY+cY!0:kf=cY+cY!16:kb!16=kf-kb:kf!0=kb-kf
35320ENDIF
35340ENDIF:iv=TRUE
35380ENDIF:kZ=cY!16:cY+=kZ:kV+=1:UNTILiv ORkV>jz:UNTIL NOTiv ORjz=1:IFjz=1 THENPROCVo
35500ENDPROC
35560DEFFNction_NumberOfElementsInList:=jz
35630DEFPROCjs:kg=Uz+kU:ENDPROC
35680DEFFNction_NameOfThisInstrument:ju$=FNction_ExtractInstrumentName(kg+5):=ju$
35730DEFFNction_ClassOfThisInstrument:=kg?4
35770DEFFNction_InstrumentsLibraryLink:=kg?15
35810DEFPROCjw:kg+=kg!16:ENDPROC
35890DEFFNction_ExtractInstrumentName(cY):LOCALkh$:kh$="":WHILE?cY>31 AND?cY<>255 ANDLENkh$<10:kh$+=CHR$?cY:cY+=1:ENDWHILE:=kh$
35990DEFFNction_FirstFreeRecord:dc=Uz:WHILEdc?15<>0:dc+=20:ENDWHILE:=dc
36100DEFPROCaw:ki=as-av:kj=at+av:i=1:ki-=i*48:VDU5:WHILE(i<=VU):IFVV$(i)="" THEN
36210Zx$=" - FREE - ":kk=2
36230ELSE:Zx$=RIGHT$(VV$(i),10):kk=7+ABS(VW(i)*4)
36260ENDIF:x=ar:y=ki+32:SYS&400E6,kk:ca$=RIGHT$(" "+STR$(i),3)+" : ..."+Zx$:MOVEx,y:PRINTca$:i+=1:ki-=48:ENDWHILE:VDU4:ENDPROC
36430DEFPROCXt(XW,kl):XX=XW!0:XY=XW!4:Uk!0=Wj:SYS&400CC,,Uk:as=Uk!(12+4):av=Uk!(20+4):km=ABS(((XY-as)+av)):kn=((km) DIV48)+1:IFkn<=VU ANDVV$(kn)<>"" THEN
36570IFkl THENVW()= NOTTRUE
36590VW(kn)= NOTVW(kn):PROCYZ(Uk,Wj)
36630ENDIF:ENDPROC
36710DEFPROCXs:ko=1:WHILEko<=VU:IFVW(ko) THEN
36790PROCkc(ko):VV$(ko)="":Vp-=1
36830ENDIF:ko+=1:ENDWHILE:VW()= NOTTRUE:PROCYZ(Uk,Wj):ENDPROC
37050DEFPROCcx(bX$,kp):IFVa THEN
37090Ww$=FNction_TagToString(Vk,"war08"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
37120ELSE:Wz=1
37160ENDIF:IFWz=1 THEN
37200LOCALERROR:kq=-1:ONERRORLOCALPROCkr:ENDPROC
37230SYS&406C0:Zx$=FNction_PathnameOnly(bX$):Zz$=FNction_LeafnameOnly(bX$):IFkp THEN
37280FORep=1 TOVX:IFVY$(ep)<>"" THEN
37300PROCab(FNction_LeafnameOnly(VY$(ep)))
37310ENDIF:NEXTep
37330ENDIF:IFkp THEN
37360ks=FNction_SizeOfFile(bX$+".MusicData")
37370ELSE:ks=FNction_SizeOfFile(bX$)
37390ENDIF:IF NOTFNction_AllocateMemory(ks+16) THEN
37430Ww$=FNction_TagToString(Vk,"err12"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
37460ELSE:kt=HIMEM:jx=kt+ks:IFkp THEN
37510OSCLI"Load "+bX$+".MusicData "+STR$~kt
37520ELSE:OSCLI"Load "+bX$+" "+STR$~kt
37540ENDIF:jx!4=1*1024:Ww= NOTTRUE:IF NOTWw THENPROCku
37590IF NOTWw THENPROCkv
37600IF NOTWw THENPROCkw
37610IF NOTWw THENPROCkx
37620IF NOTWw THENPROCky
37630IF NOTWw THENPROCkz
37640IF NOTWw THENPROClU
37650IF NOTWw THENPROClV
37660IF NOTWw THENPROClW
37680PROCXi:IF NOTWw ANDkp THENPROClX
37710IF NOTWw THENPROClY
37730IFkp THENPROCes(Uk,Wd,FNction_LeafnameOnly(bX$))
37740IFkp THENPROCaU(Uk,Xz,1,bX$)
37750PROClZ
37770ENDIF:IF NOTFNction_WindowIsOpen(Uk,Wd) THEN
37800PROCXf(Uk,Wd):PROCWe(Uk,Wd,Wf,0,0):PROCXg(Wd,-1,0)
37830ELSE:Uk!0=Wd:SYS&400CB,,Uk:SYS&400C6,,Uk:SYS&400C5,,Uk:PROCWe(Uk,Wd,Wf,0,0):PROCXg(Wd,-1,0)
37900ENDIF:Va= NOTTRUE:SYS&406C1:RESTOREERROR
37970ENDIF:ENDPROC
38050DEFPROCkr:SYS&406C2:Ww$=FNction_TagToString(Vk,"err11"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$+REPORT$+" ("+STR$ERL+")", NOTTRUE,TRUE):IFkq<>-1 THENCLOSE#kq
38100ENDPROC
38160DEFFNction_FindIFF(la,lb,lc$):ld$=MID$(lc$,1,1):ld=(ASCld$):le$=MID$(lc$,2,1):le=(ASCle$)<<8:lf$=MID$(lc$,3,1):lf=(ASClf$)<<16:lg$=MID$(lc$,4,1):lg=(ASClg$)<<24:A%=ld+le+lf+lg:iv= NOTTRUE:REPEAT:lh%=!la:IFlh%=A% THEN
38260iv=TRUE
38270ELSE:la+=4:la+=!la:la+=4
38310ENDIF:UNTILiv OR(la>=lb):IF NOTiv THENla=-1
38340=la
38370DEFFNction_NumberOfIFFs(li,lj,lc$):db=0:REPEAT:kh=FNction_FindIFF(li,lj,lc$):IFkh<>-1 THEN
38420db+=1:lk=kh!4:li=kh+8+lk
38450ENDIF:UNTILkh=-1:=db
38500DEFFNction_PointerToNthIFF(li,lj,lc$,ll):kV=0:REPEAT:li=FNction_FindIFF(li,lj,lc$):kV+=1:IFkV<ll THEN
38560lk=li!4:li=li+8+lk
38580ENDIF:UNTILkV=ll:=li
38660DEFPROCku:lm=FNction_FindIFF(kt+4,jx-4,"Frmt"):IFlm=-1 THEN
38690Ww$=FNction_TagToString(Vk,"err13"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Ww=TRUE
38720ELSE:IFlm!8<>1.00*100 THEN
38740Ww$=FNction_TagToString(Vk,"err14"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
38760ENDIF
38770ENDIF:ENDPROC
38810DEFPROCkv:ln=FNction_FindIFF(kt+4,jx-4,"PMod"):IFln=-1 THEN
38840Ww$=FNction_TagToString(Vk,"err15"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Ww=TRUE
38870ELSE:IFln!8<>1.00*100 THEN
38890Ww$=FNction_TagToString(Vk,"err16"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
38910ENDIF
38920ENDIF:ENDPROC
38960DEFPROCkw:lo=FNction_FindIFF(kt+4,jx-4,"Titl"):IFlo=-1 THEN
38990Ww$=FNction_TagToString(Vk,"err17"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):lo$="<unknown>"
39020ELSE:lo$=LEFT$(FNction_ExtractString(lo+8),lo!4)
39040ENDIF:PROCaU(Uk,Zw,2,lo$):ENDPROC
39090DEFPROCkx:lp=FNction_FindIFF(kt+4,jx-4,"Auth"):IFlp=-1 THEN
39120Ww$=FNction_TagToString(Vk,"err18"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):lp$="<unknown>"
39150ELSE:lp$=LEFT$(FNction_ExtractString(lp+8),lp!4)
39170ENDIF:PROCaU(Uk,Zw,3,lp$):ENDPROC
39220DEFPROCky:lq=FNction_FindIFF(kt+4,jx-4,"Rate"):IFlq=-1 THEN
39250Ww$=FNction_TagToString(Vk,"err19"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
39270ELSE:!ea=lq!8
39290ENDIF:ENDPROC
39330DEFPROCkz:lr=FNction_FindIFF(kt+4,jx-4,"Sped"):IFlr=-1 THEN
39360Ww$=FNction_TagToString(Vk,"err20"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
39380ELSE:!fZ=lr!8
39400ENDIF:ENDPROC
39440DEFPROClU:ls=FNction_FindIFF(kt+4,jx-4,"Ster"):IFls=-1 THEN
39470Ww$=FNction_TagToString(Vk,"err21"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
39490ELSE:!eg=ls?8:!eh=ls?9:!ei=ls?10:!ej=ls?11
39520ENDIF:ENDPROC
39560DEFPROClV:lt=FNction_FindIFF(kt+4,jx-4,"Lnth"):IFlt=-1 THEN
39590Ww$=FNction_TagToString(Vk,"err22"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Ww=TRUE
39620ELSE:cl=lt!8
39640ENDIF:ENDPROC
39680DEFPROClW:lu=FNction_FindIFF(kt+4,jx-4,"Sqnc"):IFlu=-1 THEN
39710Ww$=FNction_TagToString(Vk,"err23"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Ww=TRUE
39740ELSE:SYS&900C5,fX,UV TOdc:FORi=1 TO256:dc?(i-1)=lu?(8+i-1):NEXTi
39790ENDIF:ENDPROC
39830DEFPROClX:lv=FNction_NumberOfIFFs(kt+4,jx-4,"Inst"):lw=1:WHILElw<=lv:dc=FNction_PointerToNthIFF(kt+4,jx-4,"Inst",lw):cs$=FNction_ExtractString(dc+9):lx=dc?8:IFFNction_DoesFileExist(bX$+".Instr'mnts."+cs$) THEN
39910PROCct(bX$+".Instr'mnts."+cs$,lx):PROCVr(FNction_LeafnameOnly(VY$(lx)))
39930ELSE:Ww$=FNction_TagToString(Vk,"err38")+cs$+CHR$34:Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
39960ENDIF:lw+=1:ENDWHILE:ENDPROC
40020DEFPROClY:SYS&900C5,dq,UV TOly:lz=FNction_NumberOfIFFs(kt+4,jx-4,"Ptrn"):IFlz>Vm THEN
40100Ww$=FNction_TagToString(Vk,"err25"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
40130ELSE:lw=1:bx=lz:er()= NOTTRUE:WHILElw<=lz:dc=FNction_PointerToNthIFF(kt+4,jx-4,"Ptrn",lw):dy=dc!8:mU=ly+(dy-1)* 1024:FORmV=1 TO1024-1STEP4:mU!(mV-1)=dc!(12+mV-1):NEXTmV:er(lw)=TRUE:lw+=1:ENDWHILE:PROCcu(1)
40360ENDIF:ENDPROC
40600DEFPROCVh:SYS&51 TOmW:mX=FNction_ReadSlotSize:mY=0:mZ=HIMEM:ENDPROC
40680DEFFNction_AllocateMemory(ma):LOCALmb,mc:LOCALmd,me,mf:LOCALmg,Wx:mb=(ma DIVmW)+1:mc=mb* mW:IFFNction_ReadSizeOfFreePool>=ma THEN
40750md=FNction_ReadSlotSize:me=md+ma:mf=FNction_SetSlotSize(me):mY+=ma:mg=HIMEM:Wx=TRUE
40810ELSE:Wx= NOTTRUE
40830ENDIF:=Wx
40870DEFFNction_AlignToPageSize(ma):mb=(ma DIVmW)+1:mc=mb* mW:=mc
40930DEFPROClZ:md=FNction_ReadSlotSize:IFmd>mX THEN
40960Wz=FNction_SetSlotSize(mX):mY=0
40980ENDIF:ENDPROC
41200DEFPROCcu(mh):Zm=mh:PROCaU(Uk,Wf,5,STR$Zm):IFFNction_WindowIsOpen(Uk,Wd) THEN
41260PROCYZ(Uk,Wd)
41270ENDIF:ENDPROC
41350DEFPROCXp(XX,XY):Ve=10:bm=0:PROCbn("Patterns",96,44):FORi=1 TO!Vn:IFer(i) THEN
41450PROCbo(STR$i,0,-1, NOTTRUE)
41460ENDIF:NEXTi:!(Uy+bm-24)=128:SYS&400D4,,Uy,XX,XY:ENDPROC
41600DEFPROCax:SYS&900C5,dq,UV TOdc:ki=as-av:kj=at+av:i=1:ki-=i*44 + 56:!gg=ki:!hm=kj:!gh=as:!gm=at-48:!gi=1:!hf=dc+(Zm-1)* 1024:!ho=Vw:!hp=Vx:!hn=Vv:!hh=ar+1*16:!hq=Zg:!hr=Zh:!hs=Zi:!ht=Zj:!hu=Zk:!hv=Zl:!hw=Zm:CALLgd:ENDPROC
41950DEFFNction_Insert_Pattern:IFbx=Vm THEN
41990Wx= NOTTRUE
42010ELSE:i=1:WHILEer(i):i+=1:ENDWHILE:er(i)=TRUE:bx+=1:PROCcu(i):Wx=TRUE:PROCYY
42150ENDIF:=Wx
42230DEFPROCco:Ww$=FNction_TagToString(Vk,"war02"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE):IFWz=1 THEN
42300SYS&900C5,dq,UV TOdc:dc=dc+(Zm-1)* 1024:A%=dc:B%=dc+1*1024:C%=0:CALLeq:PROCYZ(Uk,Wd):PROCYY
42390ENDIF:ENDPROC
42470DEFPROCcn:SYS&900C5,dq,UV TOmi:mj=mi+(Zm-1)* 1024:Wx=FNction_Insert_Pattern:IF NOTWx THEN
42560Ww$=FNction_TagToString(Vk,"err06"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
42590ELSE:mk=mi+(Zm-1)* 1024:FORi=0 TO1024-1STEP4:mk!i=mj!i:NEXTi:PROCYZ(Uk,Wd):PROCYY
42700ENDIF:ENDPROC
42780DEFPROCac:IFbx=1 THEN
42820Ww$=FNction_TagToString(Vk,"err24"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
42850ELSE:Ww$=FNction_TagToString(Vk,"war05"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE):IFWz=1 THEN
42920SYS&900C5,dq,UV TOdc:kt=dc+(Zm-1)* 1024:jx=dc+(bx)* 1024:WHILEkt<jx-1024:!kt=kt!1024:kt+=4:ENDWHILE:SYS&900C5,fX,UV TOdc:ml=1:mm=1:WHILEml<=cl:ff=(dc?(ml-1))+1:IFff>=Zm THENff-=1
43060dc?(mm-1)=ff-1:IFff<>Zm-1 THEN
43080mm+=1
43090ENDIF:ml+=1:ENDWHILE:cl=mm-1:IFcl=0 THENcl=1
43150i=Zm:WHILEi<bx:er(i)=er(i+1):i+=1:ENDWHILE:er(bx)= NOTTRUE:bx-=1:PROCcu(1):PROCYa(1):PROCYZ(Uk,Wd):PROCYY
43310ENDIF
43330ENDIF:ENDPROC
43410DEFPROCak:mn=VALFNction_ReadIconText(Uk,ad,1):IFmn<1 ORmn>cl THEN
43470Ww$=FNction_TagToString(Vk,"err28"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
43500ELSE:SYS&900C5,dq,UV TOdc:dc+=(Zm-1)* 1024:A%=!(dc+(Vw-1)*16 + (Vx-1)*4):SYS&90093,A% TOdr:ds$=FNction_ExtractString(dr):MID$(ds$,1,1)="J":MID$(ds$,2,3)=RIGHT$(" "+STR$mn,3):MID$(ds$,5,3)="T00":SYS&90094,ds$ TOA%:!(dc+(Vw-1)*16 + (Vx-1)*4) = A%:PROCYY
43680ENDIF:PROCWo(Uk,ad):PROCYZ(Uk,Wd):PROCXg(Wd,-1,0):ENDPROC
43800DEFPROCVt:Ww= NOTTRUE:DIMer(!Vn):er()= NOTTRUE:er(1)=TRUE:SYS&900C3,!Vn*1024,UV TOWx,dq:CASEWx OF
43890WHEN0:Ww=TRUE:Wy$="err31"
43910WHEN1:Ww=TRUE:Wy$="err32"
43930ENDCASE:IFWw THEN
43970Ww$=FNction_TagToString(Vk,Wy$):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Vc=TRUE
44010ELSE:SYS&900C5,dq,UV TOdc:A%=dc:B%=dc+!Vn*1024:C%=0:CALLeq:bx=1:PROCcu(1)
44090ENDIF:ENDPROC
44460DEFPROCVl:kq=-1:LOCALERROR:ONERRORLOCALPROCmo:ENDPROC
44500kq=OPENIN"<HQTracker$Dir>.Prefs":INPUT#kq,!eb,!eg:INPUT#kq,!ec,!eh:INPUT#kq,!ed,!ei:INPUT#kq,!ee,!ej:INPUT#kq,!fZ,!ef:INPUT#kq,!ea,!Vn:CLOSE#kq:PROCXi:RESTOREERROR:ENDPROC
44630DEFPROCmo:IFkq<>-1 THENCLOSE#kq
44650PROCmp:PROCXi:Ww$=FNction_TagToString(Vk,"err01"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):ENDPROC
44720DEFPROCXh:kq=-1:PROCWo(Uk,Wg):PROCWo(Uk,Wh):LOCALERROR:ONERRORLOCALPROCmq:ENDPROC
44780kq=OPENOUT"<HQTracker$Dir>.Prefs":PROCXj:PRINT#kq,!eb,!eg:PRINT#kq,!ec,!eh:PRINT#kq,!ed,!ei:PRINT#kq,!ee,!ej:PRINT#kq,!fZ,!ef:PRINT#kq,!ea,!Vn:CLOSE#kq:OSCLI"Stamp <HQTracker$Dir>.Prefs ":OSCLI"SetType <HQTracker$Dir>.Prefs Data":RESTOREERROR:ENDPROC
44930DEFPROCmq:IFkq<>-1 THENCLOSE#kq
44950Ww$=FNction_TagToString(Vk,"err02"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):ENDPROC
45000DEFPROCmp:LOCALmr,ms:mr=TRUE:ms= NOTmr:!eb=mr:!eg=4:!ec=mr:!eh=4:!ed=mr:!ei=4:!ee=mr:!ej=4:!fZ=6:!ef=127:!ea=2:!Vn=64:ENDPROC
45130DEFPROCXi:PROCmt(Uk,Wh,2,!eb):PROCmt(Uk,Wh,5,!ec):PROCmt(Uk,Wh,3,!ed):PROCmt(Uk,Wh,4,!ee):mu$=FNction_TagToString(Vk,"ster0"+STR$!eg):PROCaU(Uk,Wh,6,mu$):mu$=FNction_TagToString(Vk,"ster0"+STR$!eh):PROCaU(Uk,Wh,7,mu$):mu$=FNction_TagToString(Vk,"ster0"+STR$!ei):PROCaU(Uk,Wh,8,mu$)
45260mu$=FNction_TagToString(Vk,"ster0"+STR$!ej):PROCaU(Uk,Wh,9,mu$):PROCaU(Uk,Wh,17,STR$!fZ):PROCaU(Uk,Wh,18,STR$!ef):ir$=FNction_TagToString(Vk,"qual0"+STR$!ea):PROCaU(Uk,Wh,25,ir$):PROCaU(Uk,Wh,32,STR$!Vn):IFFNction_WindowIsOpen(Uk,Wd) THEN
45380PROCYZ(Uk,Wd)
45390ENDIF:ENDPROC
45440DEFPROCXj:!eb=FNction_IconIsToggled(Uk,Wh,2):!ec=FNction_IconIsToggled(Uk,Wh,5):!ed=FNction_IconIsToggled(Uk,Wh,3):!ee=FNction_IconIsToggled(Uk,Wh,4):!eg=FNction_MessageIndex(FNction_ReadIconText(Uk,Wh,6),"ster0")
45520!eh=FNction_MessageIndex(FNction_ReadIconText(Uk,Wh,7),"ster0"):!ei=FNction_MessageIndex(FNction_ReadIconText(Uk,Wh,8),"ster0"):!ej=FNction_MessageIndex(FNction_ReadIconText(Uk,Wh,9),"ster0"):!fZ=VALFNction_ReadIconText(Uk,Wh,17):IF!fZ<1 THEN!fZ=1
45580IF!fZ>15 THEN!fZ=15
45600!ef=VALFNction_ReadIconText(Uk,Wh,18):IF!ef<1 THEN!ef=1
45620IF!ef>127 THEN!ef=127
45640!ea=FNction_MessageIndex(FNction_ReadIconText(Uk,Wh,25),"qual0"):!Vn=VALFNction_ReadIconText(Uk,Wh,32):IF!Vn<1 THEN!Vn=1
45680IF!Vn>256 THEN!Vn=256
45700PROCXi:ENDPROC
45750DEFFNction_MessageIndex(mv$,mw$):LOCALdy,mx:dy=1:mx= NOTTRUE:REPEAT:Wy$=FNction_TagToString(Vk,mw$+STR$dy):mx=mv$=Wy$:IF NOTmx THENdy+=1
45830UNTILmx:=dy
45990DEFPROCXw(bX$,my):LOCALERROR:kq=-1:ONERRORLOCALPROCmz:ENDPROC
46020Zx$=FNction_PathnameOnly(bX$):Zz$=FNction_LeafnameOnly(bX$):IFZx$="" ORZz$="" THEN
46050Ww$=FNction_TagToString(Vk,"err08"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
46070ELSE:SYS&20008,13,bX$ TOcy:Wz=1:IFcy<>0 THEN
46100Ww$=FNction_TagToString(Vk,"war03"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
46120ENDIF:IFWz=1 THEN
46140PROCnU(bX$):PROCaU(Uk,Xv,1,bX$):IF NOTmy THENSYS&400D4,,-1:Ve=0
46170ENDIF
46180ENDIF:RESTOREERROR:ENDPROC
46230DEFPROCnU(bX$):dy=FNction_FindInstrument(FNction_ReadIconText(Uk,Wf,1)):SYS&900C5,VZ(dy),UV TOdc:eU=dc!(64+4):kt=dc:jx=kt+80+4+eU:OSCLI"Save "+bX$+" "+STR$~kt+" "+STR$~jx:OSCLI"Stamp "+bX$:OSCLI"SetType "+bX$+" HQ-Data":ENDPROC
46380DEFPROCmz:Ww$=FNction_TagToString(Vk,"err07"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$+REPORT$+" ("+STR$ERL+")", NOTTRUE,TRUE):IFkq<>-1 THENCLOSE#kq:kq=-1
46420ENDPROC
46480DEFPROCXy(bX$,my):LOCALERROR:kq=-1:ONERRORLOCALPROCmz:ENDPROC
46530Zx$=FNction_PathnameOnly(bX$):Zz$=FNction_LeafnameOnly(bX$):IFZx$="" ORZz$="" THEN
46580Ww$=FNction_TagToString(Vk,"err08"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
46610ELSE:SYS&20008,13,bX$ TOcy:Wz=1:IFcy<>0 THEN
46670Ww$=FNction_TagToString(Vk,"war03"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
46700ENDIF:IFWz=1 THEN
46740PROCnV(bX$):PROCaU(Uk,Xx,1,bX$):IF NOTmy THENSYS&400D4,,-1:Ve=0
46780ENDIF
46800ENDIF:RESTOREERROR:ENDPROC
46870DEFPROCnV(bX$):kq=OPENOUTbX$:PROCnW("DATA"):PROCnW("Frmt"):PROCnX(4):PROCnX(1.00*100):PROCnW("PMod"):PROCnX(4):PROCnX(1.00*100):PROCnW("Titl"):PROCnX(32):PROCnW(LEFT$(FNction_ReadIconText(Uk,Zw,2)+STRING$(32,CHR$0),32)):PROCnW("Auth"):PROCnX(32):PROCnW(LEFT$(FNction_ReadIconText(Uk,Zw,3)+STRING$(32,CHR$0),32)):PROCnW("Rate"):PROCnX(4)
47060PROCnX(!ea):PROCnW("Sped"):PROCnX(4):PROCnX(!fZ):PROCnW("Ster"):PROCnX(4):PROCnY(!eg):PROCnY(!eh):PROCnY(!ei):PROCnY(!ej):PROCnW("Lnth"):PROCnX(4):PROCnX(cl):PROCnW("Sqnc"):PROCnX(256):SYS&900C5,fX,UV TOfY:FORi=1 TO256:PROCnY(fY?(i-1)):NEXTi:FORi=1 TOVX:IFVY$(i)<>"" THEN
47260PROCnW("Inst"):PROCnX(12):PROCnY(i):PROCnW(LEFT$(FNction_LeafnameOnly(VY$(i))+STRING$(11,CHR$0),11))
47290ENDIF:NEXTi:SYS&900C5,dq,UV TOnZ:FORi=1 TObx:IFer(i) THEN
47370PROCnW("Ptrn"):PROCnX(1028):PROCnX(i):na=nZ+(i-1)*1024:FORnb=1 TO1024:PROCnY(na?(nb-1)):NEXTnb
47450ENDIF:NEXTi:kt=dc:jx=kt+(bx*1024):CLOSE#kq:OSCLI"Stamp "+bX$:OSCLI"SetType "+bX$+" HQ-Data":ENDPROC
47620DEFPROCYU(bX$,my):LOCALERROR:kq=-1:ONERRORLOCALSYS&406C2:PROCmz:ENDPROC
47670SYS&406C0:Zx$=FNction_PathnameOnly(bX$):Zz$=FNction_LeafnameOnly(bX$):IFZx$="" ORZz$="" THEN
47730Ww$=FNction_TagToString(Vk,"err08"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
47760ELSE:IFLEFT$(Zz$,1)<>"!" THENZz$="!"+LEFT$(Zz$,9)
47790nc$=Zx$+"."+Zz$:SYS&20008,13,bX$ TOcy:Wz=1:IFcy<>0 THEN
47850Ww$=FNction_TagToString(Vk,"war03"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$,TRUE,TRUE)
47880ENDIF:IFWz=1 THEN
47920nd$=FNction_ReadIconText(Uk,Xv,1):ne$=FNction_ReadIconText(Uk,Xx,1):OSCLI"CDir "+nc$:OSCLI"CDir "+nc$+".Instr'mnts":PROCnf:PROCng:PROCnh:PROCnV(nc$+".MusicData"):ni$=FNction_ReadIconText(Uk,Wf,1):FORnj=1 TOVX:IFVY$(nj)<>"" THEN
48080dn$=FNction_LeafnameOnly(VY$(nj)):PROCVr(dn$):PROCnU(nc$+".Instr'mnts."+dn$)
48110ENDIF:NEXTnj:PROCVr(ni$):PROCaU(Uk,Xz,1,nc$):PROCaU(Uk,Xv,1,nd$):PROCaU(Uk,Xx,1,ne$):PROCes(Uk,Wd,FNction_LeafnameOnly(nc$)):Uk!0=Wd:SYS&400CB,,Uk:SYS&400C6,,Uk:SYS&400C5,,Uk:PROCWe(Uk,Wd,Wf,0,0):PROCXg(Wd,-1,0):Va= NOTTRUE:IF NOTmy THENSYS&400D4,,-1:Ve=0
48310ENDIF
48330ENDIF:SYS&406C1:RESTOREERROR:ENDPROC
48440DEFPROCnf:kq=OPENOUT(nc$+"."+"!Help"):PROCnk("!Help"):PROCnk("====="):PROCnk(""):PROCnk("Application : "+Zz$):PROCnk("Purpose : HQ-Tracker music application"):PROCnk(""):PROCnk("� 1994 Mycroft Software"):CLOSE#kq:kq=-1:OSCLI"SetType "+nc$+"."+"!Help Text":OSCLI"Stamp "+nc$+"."+"!Help":ENDPROC
48590DEFPROCng:nl$=MID$(TIME$,5,2):nm$=MID$(TIME$,8,3):nn$=MID$(TIME$,12,4):no$=nl$+"-"+nm$+"-"+nn$:kq=OPENOUT(nc$+"."+"!Run"):PROCnk("| !Run"):PROCnk("| For "+Zz$):PROCnk("|"):PROCnk("| � 1994 Mycroft Software ("+no$+")"):PROCnk("|"):CLOSE#kq:kq=-1:OSCLI"SetType "+nc$+"."+"!Run Obey"
48710OSCLI"Stamp "+nc$+"."+"!Run":ENDPROC
48760DEFPROCnh:PROCnp(Uq,"!",Zz$):PROCnp(Uq,"sm!","sm"+Zz$):PROCnq(Uq,nc$+"."+"!Sprites"):PROCnp(Uq,Zz$,"!"):PROCnp(Uq,"sm"+Zz$,"sm!"):PROCnp(Us,"!",Zz$):PROCnp(Us,"sm!","sm"+Zz$):PROCnq(Us,nc$+"."+"!Sprites22"):PROCnp(Us,Zz$,"!"):PROCnp(Us,"sm"+Zz$,"sm!"):PROCnp(Uu,"!",Zz$)
48910PROCnp(Uu,"sm!","sm"+Zz$):PROCnq(Uu,nc$+"."+"!Sprites23"):PROCnp(Uu,Zz$,"!"):PROCnp(Uu,"sm"+Zz$,"sm!"):ENDPROC
49020DEFPROCnk(ca$):LOCALi:i=1:WHILEi<=LENca$:BPUT#kq,ASCMID$(ca$,i,1):i+=1:ENDWHILE:BPUT#kq,10:ENDPROC
49130DEFPROCnW(ca$):LOCALi:i=1:WHILEi<=LENca$:BPUT#kq,ASCMID$(ca$,i,1):i+=1:ENDWHILE:ENDPROC
49230DEFPROCnX(nr%):BPUT#kq,((nr%) AND&FF):BPUT#kq,((nr%>>8) AND&FF):BPUT#kq,((nr%>>16) AND&FF):BPUT#kq,((nr%>>24) AND&FF):ENDPROC
49310DEFPROCnY(ns%):BPUT#kq,ns%:ENDPROC
49520DEFPROCYX:SYS&900C5,fX,UV TOdc:A%=dc:B%=dc+256:C%=0:CALLeq:cl=1:IFFNction_WindowIsOpen(Uk,Wl) THEN
49610ck=1:PROCcj:PROCYZ(Uk,Wl)
49640ENDIF:ENDPROC
49720DEFPROCay:ki=as-av:kj=at+av:i=1:VDU5:SYS&900C5,fX,UV TOdc:WHILE(i<=cl):x=ar+32-au:y=ki+48:IFi=ck THEN
49870SYS&400E6,11
49880ELSE:SYS&400E6,7
49900ENDIF:nt=dc?(i-1)+1:ca$=STR$nt:MOVEx-(LENca$*16),y:PRINTca$:i+=1:ar+=64:ENDWHILE:VDU4:ENDPROC
50080DEFPROCYa(XW):XX=XW!0:XY=XW!4:Uk!0=Wl:SYS&400CC,,Uk:ar=Uk!(0+4):as=Uk!(12+4):av=Uk!(20+4):nu=ABS(((XX-ar)+au)):nv=((nu) DIV64)+1:IFnv<=cl THEN
50230ck=nv:PROCYZ(Uk,Wl)
50270ENDIF:ENDPROC
50350DEFPROCYV(iy):IFcl=256 THEN
50390Ww$=FNction_TagToString(Vk,"err09"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
50420ELSE:SYS&900C5,fX,UV TOdc:nw=VAL(FNction_ReadIconText(Uk,Wk,1))-1:FORnx=cl TOckSTEP-1:dc?nx=dc?(nx-1):NEXTnx:dc?(ck+iy)=nw:cl+=1:PROCcj:PROCYZ(Uk,Wl):PROCYY
50590ENDIF:ENDPROC
50670DEFPROCcj:ba=cl* 64:IFba<332 THENba=332
50700PROCny(Uk,Wl,0,ba,0,96):ENDPROC
50770DEFPROCYW:IFcl=1 THEN
50810Ww$=FNction_TagToString(Vk,"err10"):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE)
50840ELSE:SYS&900C5,fX,UV TOdc:nz=ck:WHILEnz<cl:dc?(nz-1)=dc?nz:nz+=1:ENDWHILE:cl-=1:PROCcj:PROCYZ(Uk,Wl):PROCYY
51000ENDIF:ENDPROC
51080DEFPROCVu:Ww= NOTTRUE:SYS&900C3,256,UV TOWx,fX:CASEWx OF
51140WHEN0:Ww=TRUE:Wy$="err33"
51160WHEN1:Ww=TRUE:Wy$="err34"
51180ENDCASE:IFWw THEN
51220Ww$=FNction_TagToString(Vk,Wy$):Wz=FNction_ReportError(Uk,99,Ud$,Ww$, NOTTRUE,TRUE):Vc=TRUE
51260ELSE:PROCYX:ck=1
51310ENDIF:ENDPROC
51770DEFFNction_WidthOfSprite(oU,oV$):SYS&2E,256+40,oU,oV$ TO,,,dV,dW,dX,jm:oW=dV:=oW
51830DEFFNction_HeightOfSprite(oU,oV$):SYS&2E,256+40,oU,oV$ TO,,,dV,dW,dX,jm:oX=dW:=oX
51890DEFFNction_ModeOfSprite(oU,oV$):SYS&2E,256+40,oU,oV$ TO,,,dV,dW,dX,jm:oY=jm:=oY
51950DEFFNction_SpriteHasMask(oU,oV$):SYS&2E,256+40,oU,oV$ TO,,,dV,dW,dX,jm:oZ=-dX:=oY
52010DEFFNction_SpriteHasPalette(oU,oV$):oa=FNction_PointerToSpriteControlBlock(oU,oV$):ob=oa!32:IFob=11*4 THEN
52050oc= NOTTRUE
52060ELSE:oc=oa+11*4
52080ENDIF:=oc
52120DEFFNction_NumberOfSpritesInArea(oU):=oU!4
52160DEFFNction_NameOfNthSprite(oU,n):od=oU+oU!8:oe=1:WHILEoe<n:of=od!0:od+=of:oe+=1:ENDWHILE:=LEFT$(FNction_ExtractString(od+4),12)+CHR$0
52290DEFFNction_PointerToSpriteData(oU,oV$):SYS&2E,256+24,oU,oV$ TO,,dU:og=dU:ob=og!32:oh=og+ob:=oh
52370DEFFNction_PointerToMaskData(oU,oV$):SYS&2E,256+24,oU,oV$ TO,,dU:og=dU:oi=og!36:oj=og+oi:=oj
52450DEFFNction_PointerToSpriteControlBlock(oU,oV$):SYS&2E,256+24,oU,oV$ TO,,dU:ok=dU:=ok
52510DEFPROCnq(oU,bX$):SYS&2E,256+12,oU,bX$:ENDPROC
52560DEFPROCbf(oU,bX$):SYS&2E,256+10,oU,bX$:ENDPROC
52610DEFPROCbe(oU,ol):oU!0=ol:oU!8=16:SYS&2E,256+9,oU:ENDPROC
52680DEFFNction_ReadSpritePixel(oU,oV$,x,y):LOCALom,on:SYS&2E,256+41,oU,oV$,x,y TO,,,,,dX,jm:om=dX:on=jm:=om
52760DEFPROCoo(oU,oV$,x,y,om,on):SYS&2E,256+42,oU,oV$,x,y,om,on:ENDPROC
52810DEFPROCnp(oU,oV$,op$):SYS&2E,256+26,oU,oV$,op$:ENDPROC
52860DEFPROCbg(oU,oV$):SYS&2E,256+25,oU,oV$:ENDPROC
52910DEFFNction_SpritesType:oq=1:SYS&6,161,133 TO,,or:or=(or>>2) AND3:IF(or=2) THEN
52980oq=3
52990ELSE:SYS&35,-1,4 TO,,os:SYS&35,-1,5 TO,,ot:IFos=ot THEN
53030oq=2
53040ENDIF
53050ENDIF:=oq
53090DEFPROCou(oU,oV$,bX$):LOCALov,ow,i,ox:ov=OPENOUTbX$:ow=FNction_PointerToSpriteControlBlock(oU,oV$):iy=ow!0:ox=(3*4) + iy:BPUT#ov,1:BPUT#ov,0:BPUT#ov,0:BPUT#ov,0:BPUT#ov,16:BPUT#ov,0:BPUT#ov,0:BPUT#ov,0:BPUT#ov,((ox) AND&FF):BPUT#ov,((ox>>8) AND&FF):BPUT#ov,((ox>>16) AND&FF):BPUT#ov,((ox>>24) AND&FF)
53210FORi=0 TOiy-1STEP4:BPUT#ov,(((ow!i)) AND&FF):BPUT#ov,(((ow!i)>>8) AND&FF):BPUT#ov,(((ow!i)>>16) AND&FF):BPUT#ov,(((ow!i)>>24) AND&FF):NEXTi:CLOSE#ov:OSCLI"SetType "+bX$+" Sprite":ENDPROC
54070DEFFNction_InitialiseTask(oy,oz$):LOCALcy,cz:SYS&400C0,oy,&4B534154,oz$+CHR$0 TOcy,cz:pU=cz:=pU
54140DEFPROCWv(pU):SYS&400DD,pU,"TASK":ENDPROC
54190DEFFNction_ReportError(XU,pV,cV$,Ww$,pW,pX):LOCALcX,cz,pY:XU+=1024:$XU=cV$+CHR$0:XU!32=pV:$(XU+36)=Ww$+CHR$0:cX=(ABSpW*2^0)+(ABSpX*2^1):SYS&400DF,XU+32,cX,XU TO,cz:pY=cz:=pY
54320DEFPROCWc(XW,XU,Xa,pZ):IFpZ= NOTTRUE ORXa=Wf THEN
54360XU!0=Xa:SYS&400CB,,XU:IFXa=Yq THENXU!28=-1
54410SYS&400C5,,XU
54430ELSE:SYS&400CB,,XU:pa=XU!28:pb=XW!0:IFXW!28=-1 ANDpa=-1 THEN
54510CASEpb OF
54520WHENWd:XW!28=Wf
54530WHENWm:XW!28=Wn
54540WHENWi:XW!28=Wj
54550WHENWk:XW!28=Wl
54560WHENWg:XW!28=Wh
54570ENDCASE
54580ENDIF:SYS&400C5,,XW
54620ENDIF:ENDPROC
54670DEFPROCWo(XU,Xa):SYS&400CF,,XU:pc=XU!8:IF(Xa=Wd ORXa=Wf) ANDpc=1 THEN
54700pd$=FNction_PathnameOnly(FNction_ReadIconText(Uk,Xz,1)):IFpd$<>"" THEN
54720OSCLI"Filer_OpenDir "+pd$
54730ENDIF:IF NOTINKEY(-1) THEN
54750XU!0=Xa:SYS&400C6,,XU
54770ENDIF
54780ELSE:IF NOT(Xa=Yj ANDWU) THEN
54800XU!0=Xa:SYS&400C6,,XU
54820ENDIF
54830ENDIF:ENDPROC
54870DEFPROCXf(XU,Xa):LOCALba,bb,pe,pf,pg,ph:XU!0=Xa:SYS&400CC,,XU:ba=ABSXU!52:IFba>1280 THENba=1280
54920bb=ABSXU!48:IFbb>476 THENbb=476
54930XU!0=4:XU!4=5:XU!8=11:XU!12=12:XU!16=-1:SYS&31,XU,XU+32:pe=XU!32:pf=XU!36:pg=XU!40:ph=XU!44:x=pg* 2^pe :y=ph* 2^pf:x=(x-ba) DIV2:y=(y-bb) DIV2:XU!(0)=Xa:XU!(4+0)=x:XU!(4+4)=y:XU!(4+8)=XU!(4+0)+ba:XU!(4+12)=XU!(4+4)+bb:XU!28=-1:SYS&400C5,,XU:ENDPROC
55090DEFPROCny(XU,Xa,pi,pj,pk,pl):XU!0=pi:XU!4=pk:XU!8=pj:XU!12=pl:SYS&400D7,Xa,XU:ENDPROC
55180DEFFNction_WindowIsOpen(XU,Xa):LOCALpm,pn:XU!0=Xa:SYS&400CB,,XU:pm=XU!32:pn=(pm AND2^16)=2^16:=pn
55270DEFPROCYZ(XU,Xa):LOCALba,bb,po,pp:LOCALpq,pr,ps,pt:XU!0=Xa:SYS&400CC,,XU:ba=XU!12-Uk!4:bb=XU!16-XU!8:po=XU!20:pp=XU!24:pq=po:pt=pp:ps=pt-bb:pr=pq+ba:SYS&400D1,Xa,pq,ps,pr,pt:ENDPROC
55400DEFPROCpu(XU,Xa,XV):XU!0=Xa:XU!4=XV:XU!8=0:XU!12=0:SYS&400CD,,XU:ENDPROC
55490DEFPROCXg(Xa,XV,pv):SYS&400D2,Xa,XV,0,0,-1,pv:ENDPROC
55540DEFPROCaV:SYS&400D2,-1,-1,-1,-1,-1,-1:ENDPROC
55590DEFFNction_ReadIconText(XU,Xa,XV):LOCALcX,pw,ca$:XU!0=Xa:XU!4=XV:SYS&400CE,,XU:cX=XU!(8+16):pw=(cX AND2^8)=2^8:IFpw THEN
55670ca$=FNction_ExtractString(XU!(8+20))
55680ELSE:ca$=FNction_ExtractString(XU+8+20)
55700ENDIF:=ca$
55740DEFPROCaU(XU,Xa,XV,px$):LOCALcX,pw:XU!0=Xa:XU!4=XV:SYS&400CE,,XU:cX=XU!(8+16):pw=(cX AND2^8)=2^8:IFpw THEN
55820$(XU!(8+20))=px$
55830ELSE:$(XU+8+20)=px$
55850ENDIF:XU!0=Xa:XU!4=XV:XU!8=0:XU!12=0:SYS&400CD,,XU:ENDPROC
55940DEFPROCal(py):SYS&400DC,py:ENDPROC
55990DEFFNction_ExtractString(cY):LOCALkh$:kh$="":WHILE?cY>31:kh$+=CHR$?cY:cY+=1:ENDWHILE:=kh$
56090DEFPROCbj(XU,bX$):$XU=bX$+CHR$0:SYS&400D9,,XU:ENDPROC
56150DEFFNction_LoadTemplate(pz,qU,qV,qW$,qX):LOCALdU,qY,qZ,qa,qb:SYS&400DB,,pz,qU,qV,-1,qW$,0 TO,,dU:qY=pz!84:qZ=dU:qa=0:WHILEqa<qY:qb=pz+88+qa*32:IF(qb!16 AND&103)=&102 THENqb!24=qX
56260qa+=1:ENDWHILE:=qZ
56310DEFFNction_MakeTemplateAWindow(pz):LOCALXa:SYS&400C1,,pz TOXa:=Xa
56370DEFPROCbl:SYS&400DA:ENDPROC
56420DEFFNction_PollWimp(XW,qc):LOCALcy:SYS&400C7,qc,XW TOcy:qd=cy:=qd
56490DEFFNction_SetSlotSize(qe):LOCALcy,cz,dU,qf:SYS&400EC,qe,-1 TOcy,cz,dU:qf=cy:=qf
56560DEFFNction_ReadSlotSize:LOCALcy,cz,dU,qf:SYS&400EC,-1,-1 TOcy,cz,dU:qf=cy:=qf
56630DEFFNction_ReadSizeOfFreePool:LOCALcy,cz,dU,qg:SYS&400EC,-1,-1 TOcy,cz,dU:qg=dU:=qg
56700DEFPROCXe(XU):LOCALpe,pf,pg,ph:XU!0=4:XU!4=5:XU!8=11:XU!12=12:XU!16=-1:SYS&31,XU,XU+32:pe=XU!32:pf=XU!36:pg=XU!40:ph=XU!44:MOUSERECTANGLE0,0,pg*2^pe,ph*2^pf:ENDPROC
56810DEFPROCfp(XU,Xa):LOCALba,bb,pe,pf,pg,ph:!XU=Xa:SYS&400CC,,XU:Zr=XU!4:Zs=XU!8:ba=ABSXU!52:bb=ABSXU!48:MOUSERECTANGLEZr,Zs,ba,bb:ENDPROC
56920DEFPROCqh(XU,Xa,XV,qi,qj):!XU=Xa:SYS&400CC,,XU:qk=XU!4:ql=XU!8:qm=XU!12:qn=XU!16:XU!0=Xa:XU!4=XV:SYS&400CE,,XU:qo=XU!8:qp=XU!12:qq=XU!16:qr=XU!20:qs=qq-qo:qt=qr-qp:ar=qk+qo:at=qn+qp:MOUSERECTANGLEar+qi,at+qj,qs-qi*2,qt-qj*2:ENDPROC
57080DEFPROCjd(XU,Xa,XX,XY):!XU=Xa:SYS&400CC,,XU:qu=XU!4-XU!20:qv=XU!16-XU!24:qu=XX-qu:qv=qv-XY:jf%=qu:qw%=qv:ENDPROC
57200DEFPROCWe(XU,Xa,qx,qi,qj):XU!0=Xa:SYS&400CC,,XU:qy=XU!4:Zp=XU!12:qz=XU!8:Zq=XU!16:rU=XU!28:XU!0=qx:SYS&400CC,,XU:bb=ABS(XU!16-XU!8):XU!4=qy+qi:XU!12=Zp-qi:XU!16=Zq-qj:XU!8=XU!16-bb:XU!28=rU:SYS&400C5,,XU:ENDPROC
57340DEFFNction_DepthOfWindow(XU,Xa):XU!0=Xa:SYS&400CC,,XU:=XU!28
57400DEFFNction_WordAlign(rV):=((rV+3) AND(NOT3))
57440DEFFNction_InstallHelp:SYS&1E,6,,,16 TO,,dU:Vk=dU:SYS&41501,Vk,"<"+Ud$+"$Dir>.Messages",0:=Vk
57510DEFPROCWu(rW):SYS&41504,rW:SYS&1E,7,,rW:ENDPROC
57570DEFFNction_TagToString(rW,Wy$):SYS&41502,rW,Wy$,0,0,0,0,0,0 TO,,dU:dr=dU:rX$=FNction_ExtractString(dr):=rX$
57640DEFPROCrY(rZ,ra,rb):rc=rZ:rd=ra:re=rb:WV=4:PROCqh(Uk,rc,re,16,0):SYS&1C TOYw,Yx,rf:rg=Yw-1:PROCrh:ENDPROC
57770DEFPROCrh:CASErc OF
57800WHENri:CASEre OF
57810WHEN2:rj=FNction_DragABar(rj,2):PROCrk(INT(64*(rl/100)))
57830ENDCASE
57840ENDCASE:ENDPROC
57880DEFFNction_DragABar(ra,rb):SYS&1C TOYw,Yx,rf:IFrf=0 THEN
57960WV=0:PROCXe(Uk)
57990ELSE:IFYw<>rg THEN
58040!Uk=rc:SYS&400CC,,Uk:qk=Uk!4:rm=Yw-qk:Uk!0=rc:Uk!4=ra:SYS&400CE,,Uk:qo=Uk!(8+0):qp=Uk!(8+4):qq=Uk!(8+8):qr=Uk!(8+12):Uk!(100+0)=rc:Uk!(100+4)=ra:SYS&400C4,,Uk+100:SYS&400D1,rc,qo,qp,qq,qr:Uk!(8+8)=rm:Uk!4=rc:SYS&400C2,,Uk+4 TOra:PROCpu(Uk,rc,ra):Uk!0=rc
58310Uk!4=re:SYS&400CE,,Uk:rn=Uk!(8+8)-16:rg=Yw:rl=INT((rm/rn)*100)
58380ENDIF
58400ENDIF:=ra
58450DEFFNction_GetWindowTitle(XU,Xa):LOCALcX:!XU=Xa:SYS&400CC,,XU:=FNction_ExtractString(!(XU+4+72))
58520DEFPROCes(XU,Xa,ro$):LOCALcX,pw:!XU=Xa:SYS&400CC,,XU:cX=XU!(4+56):pw=(cX AND2^8)=2^8:IFpw THEN
58590dc=!(XU+4+72):$!(XU+4+72)=ro$+CHR$0
58610ELSE:$(XU+4+72)=px$+CHR$0
58630ENDIF:ENDPROC
58670DEFPROCmt(XU,Xa,XV,iw):XU!0=Xa:XU!4=XV:XU!8=(ABS NOTiw)<<21:XU!12=1<<21:SYS&400CD,,XU:ENDPROC
58760DEFPROCcf(XU,Xa,XV,rp):XU!0=Xa:XU!4=XV:XU!8=(ABSrp)<<22:XU!12=1<<22:SYS&400CD,,XU:ENDPROC
58850DEFFNction_IconIsToggled(XU,Xa,XV):XU!0=Xa:XU!4=XV:SYS&400CE,,XU:rq=(XU!(8+16)) AND2^21:=NOT(rq=2^21)
58930DEFPROCXk(XU,Xa,XV):PROCmt(XU,Xa,XV, NOTFNction_IconIsToggled(XU,Xa,XV)):ENDPROC
58980DEFFNction_WindowWithCaret(XU):SYS&400D3,,XU:=XU!0
59030DEFFNction_IconWithCaret(XU):SYS&400D3,,XU:=XU!4
59080DEFPROCXn(XU,Xa,XV,iy,rr,rs):iV=VALFNction_ReadIconText(XU,Xa,XV):rt=iV+iy:IFrt<rr THENrt=rr
59120IFrt>rs THENrt=rs
59130IFrt<>iV THENPROCaU(XU,Xa,XV,STR$rt)
59140ENDPROC
59170DEFFNction_PathnameOnly(bX$):IFbX$="" ORINSTR(bX$,".")=0 THEN=""
59190LOCALi:i=LENbX$:WHILEMID$(bX$,i,1)<>".":i-=1:ENDWHILE:=LEFT$(bX$,i-1)
59270DEFFNction_LeafnameOnly(bX$):IFbX$="" THEN=""
59290LOCALi:i=LENbX$:WHILEMID$(bX$,i,1)<>"." ANDi>0:i-=1:ENDWHILE:=MID$(bX$,i+1,LENbX$)
59370DEFFNction_DecodeMenuIntoText(ru,rv,rw):SYS&400D5,,ru,rv,rw:=FNction_ExtractString(rw)
59420DEFPROCdv(XU,Xa,nu,km):XU!0=Xa:SYS&400CB,,XU:XU!20+=nu:XU!24+=km:SYS&400C5,,XU:ENDPROC
<3UV=-1:���:�"Fatal Error : ";�$;" at Line ";�:�
d
�UW:��UX
� �UY:�
����UW:UZ=4:Ua=2:Ub=1:Uc=-2:Ud$="HQTracker":Ue$="HQTracker":Uf=&2000:Ug=&3E0:Uh=4*1024 :�Ui Uh:Uj=4*1024 :�Uk Uj:Ul=11*1024 :�Um Ul:Un=7*1024 :�Uo Un:Up=5*1024 :�Uq Up:Ur=8*1024 :�Us Ur:Ut=4*1024 :�Uu Ut:Uv=8*1024 :�Uw Uv:Ux=32*1024 :�Uy Ux:�Uz 32*1024
�VU=12:�VV$(VU):�VW(VU):VX=32:�VY$(VX):�VZ(VX):Va= ��:Vb=0:Vc= ��:Vd=�ction_InitialiseTask(2*100,Ue$):Ve=0:�Vf:�Vg:�Vh:�Vi:Vj=�ction_IconbarSprite(Uk):Vk=�ction_InstallHelp:�Vl:Vm=!Vn:�Vo:Vp=0:VV$()="":VW()= ��:Vq=0:VY$()="":VZ()=0:�Vr("<None!>"):�Vs
�� �Vc �
��Vt:� �Vc �
�Vu:� �Vc �
+Vv= ��:Vw=1:Vx=1:�Vy:Vz= ��:WU= ��:WV=0
\�
f�
p�:�
�/��UY:�WW:�:WX=�ction_PollWimp(Ui,Vb):ȎWX �
��0:�Vz ��WY
��WU ��WZ
��WV=3 ��Wa
��1:�Wb(Ui)
��2:�Wc(Ui,Uk,-1,�):Ȏ!Ui �
�Wd:�We(Uk,Wd,Wf,0,0)
�Wg:�We(Uk,Wg,Wh,8,8)
$�Wi:�We(Uk,Wi,Wj,8,8)
.�Wk:�We(Uk,Wk,Wl,8,164+8)
8�Wm:�We(Uk,Wm,Wn,8,4)
B�
L�3:�Wo(Uk,Ui!0):Ȏ!Ui �
`�Wd:�Wo(Uk,Wf)
j�Wg:�Wo(Uk,Wh)
t�Wi:�Wo(Uk,Wj)
~�Wk:�Wo(Uk,Wl)
��Wm:�Wo(Uk,Wn)
��
��6:�Wp(Ui)
��7:�Wq(Ui)
��8:�Wr(Ui)
��9:�Ws(Ui)
��17:�Wt(Ui)
��18:�Wt(Ui)
�=�:�Vc:�Wu(Vk):�Wv(Vd):ș&900C6,UV:ș&2002A,1,-4096*1024:�
2-��Vs:Ww= ��:ș&900C1,32+1+1 �Wx,UV:ȎWx �
Z�0:Ww=�:Wy$="err29"
n�1:Ww=�:Wy$="err30"
��:�Ww �
�XWw$=�ction_TagToString(Vk,Wy$):Wz=�ction_ReportError(Uk,99,Ud$,Ww$, ��,�):Vc=�:UV=-1
��:�
zݤction_IconbarSprite(XU):XU!0=-1:XU!4=0:XU!8=0:XU!12=68:XU!16=68:XU!20=&3002:$(XU+24)="!"+Ud$+�0:ș&400C2,,XU �XV:=XV
|=��Wp(XW):XX=XW!0:XY=XW!4:XZ=XW!8:Xa=XW!12:XV=XW!16:ȎXZ �
��UZ:ȎXa �
��Xb:�XV=3 �
��Wo(Uk,Xa):�Xc
��
��Xd:�XV=5 �
��Wo(Uk,Xa):�Xe(Uk)
�
�Uc:�XV=Vj �
&-�Xf(Uk,Wd):�We(Uk,Wd,Wf,0,0):�Xg(Wd,-1,0)
D�
N�Wg:ȎXV �
X
�0:�Xh
b �1:�Wo(Uk,Wg):�Wo(Uk,Wh):�Xi
� �2:�Wo(Uk,Wg):�Wo(Uk,Wh):�Xj
��
��Wh:ȎXV �
��2,5,3,4:�Xk(Uk,Wh,XV)
� �10,11,12,13:�Xl(XX,XY,XV-7)
��26:�Xm(XX,XY,7)
��30:�Xn(Uk,Wh,17,+1,1,15)
��31:�Xn(Uk,Wh,17,-1,1,15)
��20:�Xn(Uk,Wh,18,+1,1,127)
��21:�Xn(Uk,Wh,18,-1,1,127)
��33:�Xn(Uk,Wh,32,+1,1,256)
�34:�Xn(Uk,Wh,32,-1,1,256)
�
�Wf:ȎXV �
*�2:�Xo(XX,XY)
4�6:�Xp(XX,XY)
>�8:�Xq(XX,XY)
H:Vv= ��:�Xr
f�
z�Wi:ȎXV �
�
�0:�Xs
��1:�Wo(Uk,Wi):�Wo(Uk,Wj)
��
��Wj:�Xt(Ui,�)
��Wd:� �WU � �WU �
�Vv=�:�Xr:�Xu(Ui)
��
�4�Xv:�XV=2 ��Xw(�ction_ReadIconText(Uk,Xv,1), ��)
4�Xx:�XV=2 ��Xy(�ction_ReadIconText(Uk,Xx,1), ��)
4�Xz:�XV=2 ��YU(�ction_ReadIconText(Uk,Xz,1), ��)
�Wk:ȎXV �
$�2:�Xp(XX,XY):Ve=11
8
�3:�YV(0)
B�4:�YV(-1)
L
�5:�YW
VZ�6:Ww$=�ction_TagToString(Vk,"war06"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$,�,�):�Wz=1 �
t�YX:�YY:�YZ(Uk,Wl)
��
��
��Wl:�Ya(Ui)
��Yb:ȎXV �
��0:�Xk(Uk,Xa,XV):�Yc
��6:�Xk(Uk,Xa,XV):�Yc
��12:�Xk(Uk,Xa,XV):�Yc
�2:�Xo(XX,XY):Ve=12
�5:�Xo(XX,XY):Ve=13
2�8:�Yd(XX,XY,14)
<�11:�Yd(XX,XY,15)
F�14:�Ye(XX,XY,16)
P�17:�Ye(XX,XY,17)
Z�18:�Yf(�)
d�
x�Yg:ȎXV �
��0:�Xk(Uk,Xa,XV):�Yh
��6:�Xk(Uk,Xa,XV):�Yh
��14:�Xk(Uk,Xa,XV):�Yh
��23:�Xk(Uk,Xa,XV):�Yh
��2:�Xl(XX,XY,18)
��5:�Xl(XX,XY,19)
��8:�Xn(Uk,Xa,7,+1,0,127)
��9:�Xn(Uk,Xa,7,-1,0,127)
��12:�Xn(Uk,Xa,11,+1,0,127)
�13:�Xn(Uk,Xa,11,-1,0,127)
�16:�Xn(Uk,Xa,15,+1,1,15)
�17:�Xn(Uk,Xa,15,-1,1,15)
"�20:�Xn(Uk,Xa,19,+1,1,15)
,�21:�Xn(Uk,Xa,19,-1,1,15)
6�22:�Yi(�)
J"�27:�Xn(Uk,Xa,24,+1,-999,+999)
T"�28:�Xn(Uk,Xa,24,-1,-999,+999)
h"�29:�Xn(Uk,Xa,26,+1,-999,+999)
r"�30:�Xn(Uk,Xa,26,-1,-999,+999)
��
��Yj:ȎXV �
��1:�Xk(Uk,Xa,XV)
�
�8:�Yk
�
�9:�Yl
��
��Wm:ȎXV �
��2:�Ym(+1)
��3:�Ym(-1)
��4:�Yn(+1)
��5:�Yn(-1)
�10:�Yo(+1)
�11:�Yo(-1)
�12:�Wo(Uk,Wm):�Wo(Uk,Wn)
0�14:�Yp
:�
N�Yq:ȎXV �
b�0:�Yr("C ",+0)
l�1:�Yr("D ",+0)
v�2:�Yr("E ",+0)
��3:�Yr("F ",+0)
��4:�Yr("G ",+0)
��5:�Yr("A ",+0)
��6:�Yr("B ",+0)
��14:�Yr("C#",+0)
��15:�Yr("D#",+0)
��16:�Yr("F#",+0)
��17:�Yr("G#",+0)
��18:�Yr("A#",+0)
��7:�Yr("C ",+1)
��8:�Yr("D ",+1)
��9:�Yr("E ",+1)
�10:�Yr("F ",+1)
�11:�Yr("G ",+1)
�12:�Yr("A ",+1)
�13:�Yr("B ",+1)
4�19:�Yr("C#",+1)
>�20:�Yr("D#",+1)
H�21:�Yr("F#",+1)
R�22:�Yr("G#",+1)
\�23:�Yr("A#",+1)
p�
��
��Ua:ȎXa �
��Uc:�XV=Vj ��Ys(XX)
��Wd:�Yt(XX,XY)
��
��Ub:ȎXa �
��Wg:ȎXV �
�
�0:�Xh
� �1:�Wo(Uk,Wg):�Wo(Uk,Wh):�Xi
�
�2:�Xj
��
�Wh:ȎXV �
�2,5,3,4:�Xk(Uk,Wh,XV)
�
$�Wf:ȎXV �
. �4:�Xk(Uk,Xa,XV):Vv= �Vv:�Xr
L�
V�Wj:�Xt(Ui, ��)
`2�Xv:�XV=2 ��Xw(�ction_ReadIconText(Uk,Xv,1),�)
j2�Xx:�XV=2 ��Xy(�ction_ReadIconText(Uk,Xx,1),�)
t2�Xz:�XV=2 ��YU(�ction_ReadIconText(Uk,Xz,1),�)
~�Wm:ȎXV �
��2:�Ym(+20)
��3:�Ym(-20)
��4:�Yn(+20)
��5:�Yn(-20)
��10:�Yo(+5)
��11:�Yo(-5)
��
��Yb:ȎXV �
��18:�Yf( ��)
��
��Yg:ȎXV �
�22:�Yi( ��)
�
�
�64,16:ȎXa �
(1�Xv:�XV=0 �WV=1:Wz=�ction_BeginDrag(Uk,Xa,XV)
21�Xx:�XV=0 �WV=1:Wz=�ction_BeginDrag(Uk,Xa,XV)
<1�Xz:�XV=0 �WV=1:Wz=�ction_BeginDrag(Uk,Xa,XV)
F�Wd:� �WU ��Yu(XX,XY):WV=2
P�Wn:�Yv(XX,XY):WV=3
Z�
d�:�
����Yu(Yw,Yx):Yy=�ction_RowClickedOn(Yw,Yx):Yz=�ction_ColumnClickedOn(Yw,Yx):Uk!0=Wd:Uk!4=6:Uk!8=Yw:Uk!12=Yx:Uk!16=Yw:Uk!20=Yx:Uk!24=Wd:ș&400CC,,Uk+24:ZU=Uk!44:ZV=Uk!48:Uk!24=Uk!28:Uk!28=Uk!32:Uk!32=Uk!36:Uk!36=Uk!40-56:ZW=Uk!24:ZX=Uk!32
MZY=Uk!28:ZZ=Uk!36:ș&400D0,,Uk:Za=Yw:Zb=Yw:Zc=Yx:Zd=Yx:�Ze(Za,Zc,Zb,Zd):�
hu��Zf(Yw,Yx):Zg=Yy:Zh=Yz:Zi=�ction_RowClickedOn(Yw,Yx):Zj=�ction_ColumnClickedOn(Yw,Yx):Zk=2:Zl=Zm:�Zg>Zi �ȔZg,Zi
��Zh>Zj �ȔZh,Zj
��YZ(Uk,Wd):�
���Ze(Zn,Zo,Zp,Zq):Uk!256=Wd:ș&400CB,,Uk+256:Zr=Uk!(256+4):Zs=Uk!(256+8):Zt=Uk!(256+12):Zu=Uk!(256+16)-56:�24,Zr;Zs;Zt;Zu;:ș&400E6,48+15:ȓZn,Zo,Zp-Zn,Zq-Zo:�
l,��Wr(XW):Xa=XW!0:XV=XW!4:Zv=XW!24:ȎXa �
��Wh:�XV=32 �
��Wo(Uk,Wg):�Wo(Uk,Wh):�Xj
��
��Yg:�Zv=13 �
�
�Yi(�)
�
�Zw:�XV=3 �
ș&400D4,,-1:Ve=0
*�
>�Xv:�XV=1 �Zv=13 �
H7�Xw(�ction_ReadIconText(Uk,Xv,1)):ș&400D4,,-1:Ve=0
\�
p�Xx:�XV=1 �Zv=13 �
z7�Xy(�ction_ReadIconText(Uk,Xx,1)):ș&400D4,,-1:Ve=0
��
��Xz:�XV=1 �Zv=13 �
�7�YU(�ction_ReadIconText(Uk,Xz,1)):ș&400D4,,-1:Ve=0
��
��Wf:�XV=1 �Zv=13 �
�PZx$=�ction_PathnameOnly(VY$(Zy)):Zz$=�ction_ReadIconText(Uk,Wf,1):�Zz$<>"" �
2�ction_InstrumentAlreadyLoaded(Zx$+"."+Zz$) �
QWw$=�ction_TagToString(Vk,"err27"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$, ��,�)
.�:VY$(Zy)=Zx$+"."+Zz$
B�
L3�:�aU(Uk,Wf,1,�ction_LeafnameOnly(VY$(Zy))):�aV
~�
��Wd:ȎZv �
�ɗ"C"-64:� �WU �Zk<>0 ��aW
�ɗ"V"-64:� �WU �Zk<>0 ��aX
�ɗ"X"-64:� �WU �Zk<>0 ��aY
�ɗ"M"-64:� �WU �Zk<>0 ��aZ
�ɗ"Z"-64:� �WU ��Vy
�ɗ"I"-64:� �WU �Vp>0 ��aa
�ɗ"R"-64:� �WU �Vq>0 �
�-�ab(�ction_ReadIconText(Uk,Wf,1)):�Ve=9 �
ș&400D4,,-1
�
�
ɗ"P"-64:� �WU �
($Wx=�ction_Insert_Pattern:� �Wx �
<QWw$=�ction_TagToString(Vk,"err06"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$, ��,�)
P�
Z�
dɗ"K"-64:� �WU ��ac
nɗ"J"-64:� �WU �
x �Vv �
�2�aU(Uk,ad,1,"1"):�Wc(Ui,Uk,ad, ��):�Xg(ad,1,1)
��
��
��&183:�ae(Xz)
��&193:�Vq>0 ��ae(Xv)
��&1A3:�ae(Xx)
��&1A1:�af:�ae(Zw)
�ɗ"Z",�"z":�Yr("C ",+0)
ɗ"S",�"s":�Yr("C#",+0)
ɗ"X",�"x":�Yr("D ",+0)
ɗ"D",�"d":�Yr("D#",+0)
"ɗ"C",�"c":�Yr("E ",+0)
,ɗ"V",�"v":�Yr("F ",+0)
6ɗ"G",�"g":�Yr("F#",+0)
@ɗ"B",�"b":�Yr("G ",+0)
Jɗ"H",�"h":�Yr("G#",+0)
Tɗ"N",�"n":�Yr("A ",+0)
^ɗ"J",�"j":�Yr("A#",+0)
hɗ"M",�"m":�Yr("B ",+0)
|ɗ"Q",�"q":�Yr("C ",+1)
�ɗ"2",�"2":�Yr("C#",+1)
�ɗ"W",�"w":�Yr("D ",+1)
�ɗ"3",�"3":�Yr("D#",+1)
�ɗ"E",�"e":�Yr("E ",+1)
�ɗ"R",�"r":�Yr("F ",+1)
�ɗ"5",�"5":�Yr("F#",+1)
�ɗ"T",�"t":�Yr("G ",+1)
�ɗ"6",�"6":�Yr("G#",+1)
�ɗ"Y",�"y":�Yr("A ",+1)
�ɗ"7",�"7":�Yr("A#",+1)
�ɗ"U",�"u":�Yr("B ",+1)
�
ɗ" ":�ag
Jɗ"=":ah=��ction_ReadIconText(Uk,Wf,7):ah+=-1* (ah<7):�aU(Uk,Wf,7,�ah)
&Jɗ"-":ah=��ction_ReadIconText(Uk,Wf,7):ah-=-1* (ah>1):�aU(Uk,Wf,7,�ah)
N�20
b�&186:� �WU ��ai
l�&18C:�aj(-1,0)
v�&18D:�aj(+1,0)
��&18F:�aj(0,-1)
��&18E:�aj(0,+1)
��&1B:Vv= ��:�Xr
��
��ad:�XV=1 �Zv=13 �
��ak
��
��:�al(Zv):�
4E��ae(Xa):ș&400CF,,Uk+1024:ș&400D4,,Xa,Uk!(1024+0),Uk!(1024+4):�
p��Wt(XW):ȎXW!16 �
��0:�Va �
�WWw$=�ction_TagToString(Vk,"war07"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$,�,�):Vc=Wz=1
��:� �WU � �Vz �
�Vc=�
��
��
��2:�am(XW)
��3:�an(XW)
��5:�ao(XW)
��&502:�ap(XW)
�:�
.U��Wb(XW):ș&400C8,,XW �aq:ar=XW!4:as=XW!16:at=XW!8:au=XW!20:av=XW!24:ȕaq:Ȏ!XW �
��Wj:�aw
��Wd:�ax
��Wl:�ay
��Wn:�az
��:ș&400CA,,XW �aq:�:�
���Wq(XW):ȎWV �
�1:�bU(XW)
"�2:ș&400CF,,Uk:�Zf(Uk!0,Uk!4)
�3:�bV(XW)
(�:WV=0:�
ZC��bU(XW):ș&400CF,,XW:XX=XW!0:XY=XW!4:Xa=XW!12:XV=XW!16:ȎbW$ �
�2�"Instrument":bX$=�ction_ReadIconText(Uk,Xv,1)
�2�"Music Data":bX$=�ction_ReadIconText(Uk,Xx,1)
�1�"Music App":bX$=�ction_ReadIconText(Uk,Xz,1)
���:bY$=�ction_LeafnameOnly(bX$):XW!0=44+((�bY$ �4)*4)+4:XW!4=0:XW!8=0:XW!12=0:XW!16=1:XW!20=Xa:XW!24=XV:XW!28=XX:XW!32=XY:XW!36=64:XW!40=&FFF:$(XW+44)=bY$+�0:ș&400E7,17,XW,Xa:�
ra��am(XW):bZ=XW!4:XW!12=XW!8:XW!16=3:bX$=�ction_ExtractString(XW+44):ș&400E7,17,XW,bZ:ȎbW$ �
��"Instrument":�Xw(bX$, ��)
��"Music Data":�Xy(bX$, ��)
��"Music App":�YU(bX$, ��)
��:ș&400D4,,-1:�
&ݤction_BeginDrag(XU,Xa,XV):ȎXa �
&�Xv:bW$="Instrument"
0�Xx:bW$="Music Data"
:�Xz:bW$="Music App"
D��:�ba,bb,bc,bd:XU!0=4:XU!4=5:XU!8=11:XU!12=12:XU!16=-1:ș&31,XU,XU+32:ba=(XU!40+1)* 2^( XU!32 ):bb=(XU!44+1)* 2^( XU!36 ):XU!0=Xa:ș&400CC,,XU:bc=XU!4:bd=XU!16:XU!0=Xa:XU!4=XV:ș&400CE,,XU:XU!8+=bc:XU!12+=bd:XU!16+=bc:XU!20+=bd:XU!0=0:XU!4=5
5XU!24=0:XU!28=0:XU!32=ba:XU!36=bb:ș&400D0,,XU:=0
>���Vf:�be(Uq,Up):�bf(Uq,"<"+Ud$+"$Dir>.Sprites"):�be(Us,Ur):�bf(Us,"<"+Ud$+"$Dir>.Sprites22"):�be(Uu,Ut):�bf(Uu,"<"+Ud$+"$Dir>.Sprites23"):Ȏ�ction_SpritesType �
�1�1:�be(Uw,Uv):�bf(Uw,"<"+Ud$+"$Dir>.Sprites")
�3�2:�be(Uw,Uv):�bf(Uw,"<"+Ud$+"$Dir>.Sprites22")
�3�3:�be(Uw,Uv):�bf(Uw,"<"+Ud$+"$Dir>.Sprites23")
ʵ�:�bg(Uq,"hqtracker"):�bg(Uq,"pushup"):�bg(Uq,"pushdown"):�bg(Us,"hqtracker"):�bg(Us,"pushup"):�bg(Us,"pushdown"):�bg(Uu,"hqtracker"):�bg(Uu,"pushup"):�bg(Uu,"pushdown"):bh=Uw:�
8���Vg:bi=Uo:�bj(Uk,"<"+Ud$+"$Dir>.Templates"):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"information",bh):bk=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"prf_win",bh):Wg=�ction_MakeTemplateAWindow(Um)
~�bi=�ction_LoadTemplate(Um,bi,Uo+Un,"prf_pane",bh):Wh=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"xfer_inst",bh):Xv=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"xfer_data",bh)
��Xx=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"xfer_app",bh):Xz=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"main",bh):Wd=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"lib_win",bh)
��Wi=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"lib_pane",bh):Wj=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"main_pane",bh):Wf=�ction_MakeTemplateAWindow(Um)
�bi=�ction_LoadTemplate(Um,bi,Uo+Un,"music_info",bh):Zw=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"seq_main",bh):Wk=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"seq_pane",bh)
P�Wl=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"chng_note",bh):Yb=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"chng_fx",bh):Yg=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"play",bh)
��Yj=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"jump",bh):ad=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"inst_main",bh):Wm=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"inst_pane",bh)
�Wn=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"piano",bh):Yq=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"share_1",bh):Xb=�ction_MakeTemplateAWindow(Um):bi=�ction_LoadTemplate(Um,bi,Uo+Un,"share_2",bh)
+Xd=�ction_MakeTemplateAWindow(Um):�bl:�
6���Ys(XX):Ve=1:bm=0:�bn(Ud$,160,44):�bo("Info",0,bk, ��):�bo("Prefs...",0,-1,WU):�bo("Quit",128,-1,WU):ș&400D4,,Uy,XX-80,228:�
�x��Yt(XX,XY):Ve=2:bm=0:bp=Uy+2*1024:bq=0:�af:Zx$=�ction_PathnameOnly(�ction_ReadIconText(Uk,Xv,1)):�Zx$<>"" �Zx$+="."
���aU(Uk,Xv,1,Zx$+�ction_ReadIconText(Uk,Wf,1)):br=Uy+bm:�bn("Select",176,44):�bo("Copy ^C",0,-1,Zk=0):�bo("Move ^V",0,-1,Zk=0):�bo("Delete ^X",0,-1,Zk=0):�bo("Clear ^Z",0,-1,Zk=0):�bo("Merge ^M",128,-1,Zk=0):bs=Uy+bm:�bn("Edit",224,44)
v��bo("Alter note",0,-1,Zk=0):�bo("Alter effects",2,-1,Zk=0):�bt("Sequence list",0,-1, ��):�bo("Libraries",128,-1,Vp=0):bu=Uy+bm:�bn("Misc",336,44):�bt("Info... ^F1",0,Zw, ��):�bo("Play Music",0,-1,WU):�bt("Show Keyboard",2,-1,WU)
��bt("Save Application F3",0,Xz, ��):�bt("Save Instrument �F3",0,Xv,Vq=0):�bt("Save Music Data ^F3",2,Xx, ��):�bo("Restart",128,-1,WU):bv=Uy+bm:�bn("Instrument",176,44):�bt("Remove ^R",0,-1,Vq=0):�bt("Install ^I",2,-1,Vp=0):�bt("Edit",128,-1,Vq=0)
!H�bw=Uy+bm:�bn("Pattern",176,44):�bo("Insert ^P",0,-1,bx=Vm):�bo("Clone ",0,-1, ��):�bo("Clear ",2,-1, ��):�bo("Remove ^K",0,-1,bx=1):�bo("Jump ^J",128,-1, �Vv):by=Uy+bm:�bn("HQTracker",176,44):�bo("Misc",2,bu, ��):�bo("Select",0,br,WU)
!�_�bo("Edit",2,bs,WU):�bo("Instrument",0,bv,WU):�bo("Pattern",128,bw,WU):ș&400D4,,by,XX,XY:�
"���Xl(XX,XY,bz):Ve=bz:bm=0:bp=Uy+1* 1024:bq=0:�bn("Stereo",208,44):�bt(�ction_TagToString(Vk,"ster01"),0,-1, ��):�bt(�ction_TagToString(Vk,"ster02"),0,-1, ��):�bt(�ction_TagToString(Vk,"ster03"),0,-1, ��):�bt(�ction_TagToString(Vk,"ster04"),0,-1, ��)
"~��bt(�ction_TagToString(Vk,"ster05"),0,-1, ��):�bt(�ction_TagToString(Vk,"ster06"),0,-1, ��):�bt(�ction_TagToString(Vk,"ster07"),128,-1, ��):ș&400D4,,Uy,XX,XY:�
"Ĉ��Xq(XX,XY):Ve=20:bm=0:�bn("Octaves",96,44):�cU=1 �7:aq=2* �(cU=3 �cU=4):�bo(�cU,aq,-1, ��):�cU:!(Uy+bm-24)=128:ș&400D4,,Uy,XX,XY:�
#F���Xm(XX,XY,bz):Ve=bz:bm=0:bp=Uy+1* 1024:bq=0:�bn("Quality",176,44):�bt(�ction_TagToString(Vk,"qual01"),0,-1, ��):�bt(�ction_TagToString(Vk,"qual02"),0,-1, ��):�bt(�ction_TagToString(Vk,"qual03"),0,-1, ��):�bt(�ction_TagToString(Vk,"qual04"),0,-1, ��)
#���bt(�ction_TagToString(Vk,"qual05"),0,-1, ��):�bt(�ction_TagToString(Vk,"qual06"),0,-1, ��):�bt(�ction_TagToString(Vk,"qual07"),128,-1, ��):ș&400D4,,Uy,XX,XY:�
#����Yd(XX,XY,bz):Ve=bz:bm=0:�bn("Note",64,44):�bo("C ",0,-1, ��):�bo("C#",0,-1, ��):�bo("D ",0,-1, ��):�bo("D#",0,-1, ��):�bo("E ",0,-1, ��):�bo("F ",0,-1, ��):�bo("F#",0,-1, ��):�bo("G ",0,-1, ��):�bo("G#",0,-1, ��):�bo("A ",0,-1, ��)
$|@�bo("A#",0,-1, ��):�bo("B ",128,-1, ��):ș&400D4,,Uy,XX,XY:�
$����Ye(XX,XY,bz):Ve=bz:bm=0:�bn("Octaves",96,44):�bo("0",2,-1, ��):�cU=1 �7:�bo(�cU,0,-1, ��):�cU:!(Uy+bm-24)=128:ș&400D4,,Uy,XX,XY:�
%:���bn(cV$,ba,bb):$(Uy+bm)=cV$+�0:?(Uy+bm+12)=7:?(Uy+bm+13)=2:?(Uy+bm+14)=7:?(Uy+bm+15)=0:!(Uy+bm+16)=ba:!(Uy+bm+20)=bb:!(Uy+bm+24)=0:bm+=28:�
%�l��bo(cW$,cX,cY,cZ):!(Uy+bm+0)=cX:!(Uy+bm+4)=cY:!(Uy+bm+8)=&07000001+�cZ*2^22:$(Uy+bm+12)=cW$+�0:bm+=24:�
&���bt(ca$,cX,cY,cZ):!(Uy+bm+0)=cX:!(Uy+bm+4)=cY:!(Uy+bm+8)=&07000101+�cZ*2^22:cb=bp+bq:$cb=ca$+�0:bq+=�ca$+1:!(Uy+bm+12)=cb:!(Uy+bm+16)=bp:!(Uy+bm+20)=16:bm+=24:�
&�(��Ws(XW):cc=XW!0:cd=XW!4:ce=�:ȎVe �
&�
�1:Ȏcc �
&�#�1:�Xf(Uk,Wg):�We(Uk,Wg,Wh,8,8)
&��2:�Va �
&�WWw$=�ction_TagToString(Vk,"war07"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$,�,�):Vc=Wz=1
'
�:Vc=�
'�
'$�
'.
�2:Ȏcc �
'8
�0:Ȏcd �
'Bh�1:�aU(Uk,Yj,5,"-"):�aU(Uk,Yj,3,"-"):�aU(Uk,Yj,7,"-"):�cf(Uk,Yj,10,WU):�cf(Uk,Yj,11, �WU):�Xf(Uk,Yj)
'~�2:�Wc(Ui,Uk,Yq, ��)
'�
�6:�cg
'��
'�
�1:Ȏcd �
'�
�0:�aW
'�
�1:�aX
'�
�2:�aY
'�
�3:�Vy
'�
�4:�aZ
'��
'�
�2:Ȏcd �
'�
�0:�ch
'�
�1:�ci
(
I�2:�cj:ck=cl:�aU(Uk,Wk,1,�Zm):�Wc(Ui,Uk,Wk, ��):�We(Uk,Wk,Wl,8,164+8)
(F*�3:�Wc(Ui,Uk,Wi, ��):�We(Uk,Wi,Wj,8,8)
(Z�
(d
�3:Ȏcd �
(n(�0:�ab(�ction_ReadIconText(Uk,Wf,1))
(x�1:�aa:ce= ��
(�
�2:�cm
(��
(�
�4:Ȏcd �
(�'�0:Wx=�ction_Insert_Pattern:� �Wx �
(�QWw$=�ction_TagToString(Vk,"err06"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$, ��,�)
(��
(�
�1:�cn
(�
�2:�co
(�
�3:�ac
(�5�4:�aU(Uk,ad,1,"1"):�Wc(Ui,Uk,ad, ��):�Xg(ad,1,1)
)�
)"�
),:�3:�aU(Uk,Wh,6,�ction_TagToString(Vk,"ster0"+�(cc+1)))
)6:�4:�aU(Uk,Wh,7,�ction_TagToString(Vk,"ster0"+�(cc+1)))
)@:�5:�aU(Uk,Wh,8,�ction_TagToString(Vk,"ster0"+�(cc+1)))
)J:�6:�aU(Uk,Wh,9,�ction_TagToString(Vk,"ster0"+�(cc+1)))
)T;�7:�aU(Uk,Wh,25,�ction_TagToString(Vk,"qual0"+�(cc+1)))
)^��8:ah$=�ction_DecodeMenuIntoText(cp,XW,Uk+3*1024):ah$=�ction_LeafnameOnly(ah$):cq=�ah$,":"):cr=��ah$,cq-1):cs$=�ah$,cq+1,�ah$-cq):�ct(VV$(cr)+".HQ_Library."+cs$,-1)
)�G�9:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�Vr(�ah$,4,�ah$))
)�@�10:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�cu(�ah$)
)�G�11:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Wk,1,ah$)
)�P�12:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,1,�ah$,4,�ah$))
)�P�13:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,4,�ah$,4,�ah$))
)�G�14:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,7,ah$)
*H�15:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,10,ah$)
*&H�16:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,13,ah$)
*:H�17:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yb,16,ah$)
*NG�18:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yg,1,ah$)
*bG�19:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Yg,4,ah$)
*vG�20:ah$=�ction_DecodeMenuIntoText(Uy,XW,Uk+3*1024):�aU(Uk,Wf,7,ah$)
*�0�:ș&400CF,,XW:XX=XW!0:XY=XW!4:XZ=XW!8:�ce �
*��XZ=Ub �
*�
ȎVe �
*��1:�Ys(XX)
*��2:�Yt(XX,XY)
*��3:�Xl(XX,XY,3)
*��4:�Xl(XX,XY,4)
+�5:�Xl(XX,XY,5)
+�6:�Xl(XX,XY,6)
+�7:�Xm(XX,XY,7)
+ �8:ș&400D4,,cp,XX,XY
+*�9:�Xo(XX,XY)
+4�10:�Xp(XX,XY)
+>�20:�Xq(XX,XY)
+H�
+R�:ș&400D4,,-1:Ve=0
+p�
+z�:�
+�X��an(XW):cv=XW!40:bX$=�ction_ExtractString(XW+44):bZ=XW!4:XW!16=4:XW!12=XW!8:� �WU �
+�
Ȏcv �
+�2�Uf:�ction_DoesFileExist(bX$+".HQ_Library") �
+�ș&400E7,17,XW,bZ:�cw(bX$)
,/�:�ction_DoesFileExist(bX$+".MusicData") �
,$ ș&400E7,17,XW,bZ:�cx(bX$,�)
,8S�:Ww$=�ction_TagToString(Vk,"err03"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$, ��,�)
,V�
,`�
,j'�Ug:�ction_FileIsInstrument(bX$) �
,t!�ct(bX$,-1):ș&400E7,17,XW,bZ
,�$�:�cx(bX$, ��):ș&400E7,17,XW,bZ
,��
,��
,��:�
,�X��ao(XW):cv=XW!40:bX$=�ction_ExtractString(XW+44):bZ=XW!4:XW!16=4:XW!12=XW!8:� �WU �
-(
Ȏcv �
-22�Uf:�ction_DoesFileExist(bX$+".HQ_Library") �
-<ș&400E7,17,XW,bZ:�cw(bX$)
-P/�:�ction_DoesFileExist(bX$+".MusicData") �
-d ș&400E7,17,XW,bZ:�cx(bX$,�)
-x�
-��
-�'�Ug:�ction_FileIsInstrument(bX$) �
-�!�ct(bX$,-1):ș&400E7,17,XW,bZ
-�$�:�cx(bX$, ��):ș&400E7,17,XW,bZ
-��
-��
-��:�
.[ݤction_SizeOfFile(bX$):�cy,cz,dU,dV,dW,dX:�dY:ș&8,17,bX$ �cy,cz,dU,dV,dW,dX:dY=dW:=dY
.TWݤction_DoesFileExist(bX$):�cy,cz,dU,dV,dW,dX:ș&8,17,bX$ �cy,cz,dU,dV,dW,dX:=cy<>0
.�hݤction_TypeOfFile(bX$):�cy,cz,dU,dV,dW,dX:�dY:ș&8,17,bX$ �cy,cz,dU,dV,dW,dX:dZ=((dU>>8) �&FFF):=dZ
.�:��af:�aU(Uk,Zw,9,�cl):da=0:db=0:�i=1 �VX:�VY$(i)<>"" �
/5ș&900C5,VZ(i),UV �dc:db+=1:da+=(dc!(64+4)) �1024
/:[�:�:�aU(Uk,Zw,7,�db):�aU(Uk,Zw,10,�da+" KB"):�aU(Uk,Zw,8,�bx):�aU(Uk,Zw,11,�bx+" KB"):�
/���Xr:�dd(Vw,Vx):�
/���Xu(XW):�Vv �
/�^XX=XW!0:XY=XW!4:de=�ction_ColumnClickedOn(XX,XY):df=�ction_RowClickedOn(XX,XY):�de<1 �de=1
0�de>4 �de=4
0�df<1 �df=1
0 �df>64 �df=64
0*%�dd(Vw,Vx):Vw=df:Vx=de:�dd(Vw,Vx)
0R�:�
0zyݤction_RowClickedOn(XX,XY):Uk!0=Wd:ș&400CC,,Uk:as=Uk!(12+4):dg=as-XY:av=Uk!(20+4):dg-=av:dh=dg-56:df=(dh �44)+1:=df
0�hݤction_ColumnClickedOn(XX,XY):Uk!0=Wd:ș&400CC,,Uk:di=XX-(Uk!4-Uk!20):de=((di-6*16) �(18*16))+1:=de
1���dd(dj,dk):Uk!0=Wd:ș&400CC,,Uk:as=Uk!(12+4):av=Uk!(20+4):ar=Uk!(0+4):Zs=as-56-dj*44 - av:Zr=ar+6*16 + (dk-1)*18*16:ș&400D1,-1,Zr,Zs-8,Zr+13*16,Zs+44+8:�
1���ai:ȎZk �
1�)�0:Zg=Vw:Zh=Vx:Zi=Vw:Zj=Vx:Zk=1:Zl=Zm
1�$�1,2:Zi=Vw:Zj=Vx:�Zg>Zi �ȔZg,Zi
1��Zh>Zj �ȔZh,Zj
1�Zk=2
1��:�YZ(Uk,Wd):�
24��Vy:Zk=0:Zg=1:Zh=1:Zi=1:Zj=1:Zl=Zm:�YZ(Uk,Wd):�
2x���Yr(dl$,dm):cU=��ction_ReadIconText(Uk,Wf,7)+dm:cU$=�cU:dn=�ction_FindInstrument(�ction_ReadIconText(Uk,Wf,1)):dn$=�" "+�dn,2):�dn<>-1 �
2Ҹș&900C5,VZ(Zy),UV �do:dp=do!(76+4):dp$=�" "+�dp,3):ș&900C5,dq,UV �dc:dc+=(Zm-1)* 1024:A%=!(dc+(Vw-1)*16 + (Vx-1)*4):ș&90093,A% �dr:ds$=�ction_ExtractString(dr):�ds$,1)<>"J" �
3J;�ds$,1,2)=dl$:�ds$,3,1)=�cU:�ds$,5,2)=dn$:�ds$,9,3)=dp$
3r�:ș&90094,ds$ �A%:�Vv �
3�C!(dc+(Vw-1)*16 + (Vx-1)*4) = A%:dt=Vw:du=Vx:Vw+=1:�Vw>64 �Vw=64
3��dd(dt,du):�dd(Vw,Vx)
3�(�:Wx=�ction_Playout(dl$,�cU,�):�Vv �
41�ction_NoteIsBelowWindow ��dv(Uk,Wd,0,-44*4)
41�ction_NoteIsAboveWindow ��dv(Uk,Wd,0,+44*4)
4�
40�:�
4bk��ag:ș&900C5,dq,UV �dc:dc+=(Zm-1)* 1024:!(dc+(Vw-1)*16 + (Vx-1)*4) = 0:dt=Vw:du=Vx:Vw+=1:�Vw>64 �Vw=64
4�G�dd(dt,du):�dd(Vw,Vx):�ction_NoteIsBelowWindow ��dv(Uk,Wd,0,-44*4)
4�1�ction_NoteIsAboveWindow ��dv(Uk,Wd,0,+44*4)
4��
4�:ݤction_Playout(ds$,cU$,dw):ș&9008B �dx:�dx=0 � �Vz �
5*
Wx= ��
5>�:Wx=�:� �dw �ș&9008C
5pvcU=�cU$:ds=(�"C C#D D#E F F#G G#A A#B ",ds$)+1)/2:dy=�ction_FindInstrument(�ction_ReadIconText(Uk,Wf,1)):�dy<>-1 �
5��ș&900C5,VZ(dy),UV �dc:dz=dc!(76+4):eU=dc!(64+4):eV=dc!(68+4):eW=dc!(72+4):eV=0:eW=0:eX=dc+80+4:eY=eX:eZ=eX+eU-132:Uk!(2048+0)=eX:Uk!(2048+4)=eX+eU-132:Uk!(2048+8)=eV:Uk!(2048+12)=eW:Uk!(2048+16)=dz:Uk!(2048+20)=-1:Uk!(2048+24)=-1:Uk!(2048+28)=-1
6jș&9008D,1,Uk+2048:� �Vz �
6�dș&9008A,!ea:ș&90084,�(!eb),�(!ec),�(!ed),�(!ee):ș&90083,!ef:ș&9008B:ș&90085,!eg,!eh,!ei,!ej
6���:Uk!(2048+0)=1:Uk!(2048+4)=1:Uk!(2048+8)=cU:Uk!(2048+12)=ds:Uk!(2048+16)=2:Uk!(2048+20)=1:Uk!(2048+24)=cU:Uk!(2048+28)=ds:Uk!(2048+32)=3:Uk!(2048+36)=1:Uk!(2048+40)=cU:Uk!(2048+44)=ds:Uk!(2048+48)=4:Uk!(2048+52)=1:Uk!(2048+56)=cU:Uk!(2048+60)=ds
7 ]ș&90090,(Uk+2048):ș&90090,(Uk+2048+16):ș&90090,(Uk+2048+32):ș&90090,(Uk+2048+48):Vz=�
7(�
7< �:=Wx
7n/��WY:ș&90081,1 �ek:cY=ek!0:�cY<eY �cY>eZ �
7�ș&9008C:ș&9008E,1:Vz= ��
7��:�
7���aj(el,em):�Vv �
7�)dt=Vw:du=Vx:Vx+=el:Vw+=em:�Vw<1 �Vw=1
8"�Vw>64 �Vw=64
8,�Vx<1 �Vx=1
86�Vx>4 �Vx=4
8@�dt<>Vw �du<>Vx �
8J�dd(dt,du):�dd(Vw,Vx)
8^3�:�ction_NoteIsBelowWindow ��dv(Uk,Wd,0,-44*4)
8r1�ction_NoteIsAboveWindow ��dv(Uk,Wd,0,+44*4)
8|�:�
8��ݤction_NoteIsBelowWindow:Uk!0=Wd:ș&400CB,,Uk:ar=Uk!4:at=Uk!8:en=Uk!12:as=Uk!16:au=Uk!20:av=Uk!24:eo=as-56-Vw*44 - av:=eo<at
9�ݤction_NoteIsAboveWindow:Uk!0=Wd:ș&400CB,,Uk:ar=Uk!4:at=Uk!8:en=Uk!12:as=Uk!16:au=Uk!20:av=Uk!24:eo=as-56-Vw*44 - av:=eo>as-56-22
9l ��cg:�Vq>0 �cl>1 �bx>1 �Va �
9�OWw$=�ction_TagToString(Vk,"err23"):Wz=�ction_ReportError(Uk,99,Ud$,Ww$,�,�)
9�
�:Wz=1
9�
�:�Wz=1 �
9��ep=1 �VX:�VY$(ep)<>"" �
9�%�ab(�ction_LeafnameOnly(VY$(ep)))
9���:�ep:�YX:ș&900C5,dq,UV �dc:A%=dc:B%=dc+!Vn*1024:C%=0:�eq:er()= ��:er(1)=�:bx=1:�cu(1):�aU(Uk,Zw,2,""):�aU(Uk,Zw,3,""):�aU(Uk,Xz,1,"MusicApp"):�aU(Uk,Xv,1,"Instrument"):�aU(Uk,Xx,1,"MusicData "):�es(Uk,Wd,"<Untitled>"):Uk!0=Wd:ș&400CB,,Uk
:�Yș&400C6,,Uk:ș&400C5,,Uk:�Xg(Wd,-1,0):�We(Uk,Wd,Wf,0,0):Va= ��:�Wo(Uk,Wm):�Wo(Uk,Wn)
:��:�
;���ch:�aU(Uk,Yb,1,�ction_ReadIconText(Uk,Wf,1)):�aU(Uk,Yb,4,�ction_ReadIconText(Uk,Wf,1)):�aU(Uk,Yb,7,"C "):�aU(Uk,Yb,10,"C "):�aU(Uk,Yb,13,"1"):�aU(Uk,Yb,16,"1"):�Yc:�Wc(Ui,Uk,Yb, ��):�
;�n��Yc:�dj=1 �3:et=�ction_IconIsToggled(Uk,Yb,(dj-1)*6):�i=(dj*6-6)+1 �(dj*6-6)+5:�cf(Uk,Yb,i, �et):�i:�dj:�
;�0��Yf(eu):�ction_IconIsToggled(Uk,Yb,0) ��ev
<