Home » Archimedes archive » Acorn User » AU 1993-06.adf » !Tracker_Tracker » !APTracker/!RunImage
!APTracker/!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 » Acorn User » AU 1993-06.adf » !Tracker_Tracker |
Filename: | !APTracker/!RunImage |
Read OK: | ✔ |
File size: | AE50 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >!RunImage 20: 30menuspace%=4000 40sprsize%=FNfilelen("<Obey$Dir>.Sprites") 50codesize%=FNfilelen("<Obey$Dir>.TrackCode") 60: 70DIM q% 256,q2% 128 80DIM code% 160 90DIM temp% 300 100DIM block% 1000 110DIM spname% 20 120DIM menuaddr% menuspace% 130DIM copied% 8*64*4+8 140DIM mainsprites% sprsize%+16 150DIM trackercode% codesize% 160: 170tuneloaded%=FALSE 180saveheader%=TRUE 190trackertune%=HIMEM 200justloaded%=TRUE 210delvoice%=1 220delpat%=1 230savepat%=1 240copypat%=1 250copiedlen%=0 260patlen%=64 270update%=4 280muscounter%=0 290oldpos%=-1:oldevent%=-1 300freemem%=0 310playing%=FALSE 320: 330DIM sampaddr%(36),sample$(36) 340DIM slen%(36),svoladdr%(36) 350DIM pattaddr%(64) 360DIM onoff%(8),event%(8) 370DIM stereovals%(7) 380stereovals%()=0,-126,-70,-40,0,40,70,127 390notes$="---C-1C#1D-1D#1E-1F-1F#1G-1G#1A-1A#1B-1C-2C#2D-2D#2E-2F-2F#2G-2G#2A-2A#2B-2C-3C#3D-3D#3E-3F-3F#3G-3G#3A-3A#3B-3" 400sample$()=STRING$(20," ") 410defvoices%=4 420: 430wbcol=0:mbcol=2:wfcol=7:tfcol=7 440: 450ON ERROR PROCerror 460: 470$q%="TASK" 480prefix$="<APTracker$Dir>" 490SYS "Wimp_Initialise",200,!q%,"AP Tracker" TO version%,task% 500PROCloadsprites(prefix$+".Sprites",mainsprites%,sprsize%+16) 510PROCloadwithpathvariable(prefix$,"TrackCode",trackercode%) 520PROCloadwindows 530PROCsetstereoESGs 540PROCassemble 550iconh%=FNiconbar("!aptracker") 560SYS "XWimp_SlotSize",-1,-1 TO appsize% 570PROCmain 580PROCshutdown 590END 600: 610DEFPROCshutdown 620abort%=FALSE 630IF tuneloaded% THEN 640errorexit%=FNerrorbox(17,"Data will be lost - are you sure ?") 650IF errorexit%=2 THEN abort%=TRUE 660ENDIF 670IF abort% THEN ENDPROC 680PROCstoptune 690$q%="TASK" 700SYS "Wimp_CloseDown",task%,!q% 710ENDPROC 720: 730DEFFNiconbar(sprite$) 740$spname%=sprite$ 750block%!0=-1 760block%!4=0 770block%!8=0 780block%!12=80 790block%!16=64 800block%!20=&2102 810block%!24=spname% 820block%!28=mainsprites% 830block%!32=LEN($spname%) 840SYS "Wimp_CreateIcon",,block% TO icon% 850=icon% 860: 870DEFPROCloadsprites(file$,addr%,size%) 880!addr%=size% 890addr%!4=0 900addr%!8=16 910addr%!12=0 920SYS "OS_SpriteOp",256+10,addr%,file$ 930ENDPROC 940: 950DEFPROCloadwindows 960DIM T% 5000 970maxws%=5000 980DIM indir% maxws% 990ind%=indir% 1000spr%=mainsprites% 1010SYS "Wimp_OpenTemplate",,prefix$+".Templates" 1020info%=FNgetwindow("info",spr%) 1030savetune%=FNgetwindow("savetune",spr%) 1040tuneinfo%=FNgetwindow("tuneinfo",spr%) 1050samples%=FNgetwindow("samples",spr%) 1060savesample%=FNgetwindow("savesample",spr%) 1070newtrack%=FNgetwindow("newtrack",spr%) 1080stereo%=FNgetwindow("stereo",spr%) 1090savepattern%=FNgetwindow("savepattern",spr%) 1100savepatterns%=FNgetwindow("savepattns",spr%) 1110copypattern%=FNgetwindow("copypattern",spr%) 1120savehelp%=FNgetwindow("savehelp",spr%) 1130setvolume%=FNgetwindow("setvolume",spr%) 1140player%=FNgetwindow("player",spr%) 1150settings%=FNgetwindow("settings",spr%) 1160savedump%=FNgetwindow("savedump",spr%) 1170amendtrack%=FNgetwindow("amendtrack",spr%) 1180SYS "Wimp_CloseTemplate" 1190PROCseticontext(info%,11,FNicontext(info%,11)+" #1") 1200ENDPROC 1210: 1220DEFFNgetwindow(wtitle$,spr%) 1230SYS "Wimp_LoadTemplate",,T%,ind%,indir%+maxws%-1,-1,wtitle$,0 TO ,,ind% 1240T%!64=spr% 1250SYS "Wimp_CreateWindow",,T% TO handle% 1260=handle% 1270: 1280DEFPROCmain 1290quit%=FALSE 1300REPEAT 1310SYS "Wimp_Poll",0,q% TO reason% 1320CASE reason% OF 1330WHEN 0:PROCshowmusicpos 1340WHEN 2:PROCopenwindow(q%!0,q%) 1350WHEN 3:PROCclosewindow(q%!0) 1360WHEN 6:PROCcheckmouse(q%!0,q%!4,q%!8,q%!12,q%!16) 1370WHEN 7:PROCdragfile 1380WHEN 8:SYS "Wimp_ProcessKey",q%!24 1390WHEN 9:PROCmenuselect(q%) 1400WHEN 17,18:PROCmessage 1410ENDCASE 1420UNTIL quit% 1430ENDPROC 1440: 1450DEFPROCcheckmouse(mx%,my%,b%,where%,icon%) 1460IF b%=1 THEN mredo%=TRUE ELSE mredo%=FALSE 1470CASE where% OF 1480WHEN -2: 1490CASE b% OF 1500WHEN 1:PROCedittracker 1510WHEN 4: 1520IF tuneloaded% THEN 1530PROCpanelstatus 1540PROCopenwindow(player%,0) 1550ENDIF 1560WHEN 2: 1570PROCmainmenu 1580PROCopenmenu(101,mainmenu%,mx%-86,376) 1590ENDCASE 1600WHEN savetune%: 1610IF icon%=0 THEN PROCinitiatedrag(savetune%,0,1) 1620IF icon%=4 THEN PROCquicksave 1630WHEN savesample%:IF icon%=0 THEN PROCinitiatedrag(savesample%,0,2) 1640WHEN savehelp%:IF icon%=0 THEN PROCinitiatedrag(savehelp%,0,4) 1650WHEN savepatterns%:IF icon%=0 THEN PROCinitiatedrag(savepatterns%,0,5) 1660WHEN savepattern%: 1670CASE icon% OF 1680WHEN 0:PROCinitiatedrag(savepattern%,0,3) 1690WHEN 1:PROCincsavepat 1700WHEN 4:PROCdecsavepat 1710WHEN 7:PROCstorepattern 1720ENDCASE 1730WHEN tuneinfo%:IF icon%=6 THEN PROCnewpattern 1740WHEN samples%: 1750IF b%=2 THEN 1760PROCmakesamplemenu(icon% MOD 36) 1770IF slen%((icon% MOD 36)+1)>0 THEN PROCopenmenu(106,mainmenu%,mx%-86,my%+24) 1780ENDIF 1790WHEN newtrack%: 1800CASE icon% OF 1810WHEN 2:PROCcreatetune(defvoices%) 1820WHEN 3:PROCincdefvoices 1830WHEN 4:PROCdecdefvoices 1840ENDCASE 1850WHEN copypattern%: 1860CASE icon% OF 1870WHEN 3:PROCinccopypat 1880WHEN 4:PROCdeccopypat 1890WHEN 2:PROCcopypattern 1900ENDCASE 1910WHEN setvolume%: 1920CASE icon% OF 1930WHEN 2:PROCincvolume(sampleno%) 1940WHEN 3:PROCdecvolume(sampleno%) 1950ENDCASE 1960WHEN player%: 1970IF icon%>0 AND icon%<(!mvoxaddr%+1) THEN PROCtogglevoice(icon%) 1980CASE icon% OF 1990WHEN 16:PROCplaytune 2000WHEN 17:PROCstoptune 2010WHEN 21:PROCrewind 2020WHEN 22:PROCfastforward 2030ENDCASE 2040WHEN settings%: 2050CASE icon% OF 2060WHEN 3:PROCincpatlength 2070WHEN 4:PROCdecpatlength 2080WHEN 6,7,8:PROCmakeselected(settings%,icon%) 2090ENDCASE 2100WHEN savedump%:IF icon%=0 THEN PROCinitiatedrag(savedump%,0,6) 2110WHEN amendtrack%: 2120CASE icon% OF 2130WHEN 3:PROCincdelpat 2140WHEN 4:PROCdecdelpat 2150WHEN 5:PROCdeletepattern 2160WHEN 8:PROCincdelvoice 2170WHEN 9:PROCdecdelvoice 2180WHEN 11:PROCamendvoice 2190WHEN 14,15:PROCmakeselected(amendtrack%,icon%) 2200ENDCASE 2210WHEN stereo%:PROCalterstereo(icon%) 2220ENDCASE 2230ENDPROC 2240: 2250DEFPROCopenwindow(handle%,pos%) 2260LOCAL b% 2270IF pos%=0 THEN 2280b%=block%:block%!0=handle% 2290SYS "Wimp_GetWindowState",,b% 2300ELSE 2310b%=pos% 2320ENDIF 2330block%!28=-1 2340SYS "Wimp_OpenWindow",,b% 2350ENDPROC 2360: 2370DEFPROCclosewindow(handle%) 2380IF handle%=tuneinfo% THEN 2390mname$=FNicontext(tuneinfo%,7) 2400aname$=FNicontext(tuneinfo%,8) 2410ENDIF 2420block%!0=handle% 2430SYS "Wimp_CloseWindow",,block% 2440ENDPROC 2450: 2460DEFPROCinitiatedrag(window%,icon%,myref%) 2470savehandle%=window% 2480globalref%=myref% 2490!q%=window% 2500SYS "Wimp_GetWindowState",,q% 2510z%=q%!16-q%!8 2520x%=q%!4:y%=q%!8:q%!4=icon% 2530SYS "Wimp_GetIconState",,q% 2540q%!8+=x%:q%!12+=y%+z% 2550q%!16+=x%:q%!20+=y%+z% 2560q%!24=0:q%!28=0 2570q%!32=1279:q%!36=1023 2580!q%=0:q%!4=5 2590SYS "Wimp_DragBox",,q% 2600ENDPROC 2610: 2620DEFPROCmessage 2630yourref%=q%!8 2640CASE q%!16 OF 2650WHEN 0:quit%=TRUE 2660WHEN 2:PROCsavefile 2670WHEN 3:PROCloadfile 2680ENDCASE 2690ENDPROC 2700: 2710DEFPROCdragfile 2720!q%=0 2730SYS "Wimp_GetPointerInfo",,q% 2740q%!32=4 2750q%!28=!q% 2760q%!24=q%!16 2770q%!20=q%!12 2780q%!16=1 2790q%!12=0 2800q%!36=100 2810q%!40=&C00 2820$(q%+44)=CHR$(0) 2830!q%=60 2840SYS "Wimp_SendMessage",18,q%,q%!20,q%!24 2850ENDPROC 2860: 2870DEFFNstringfrommemory(addr%) 2880LOCAL byte%,temp$,out$ 2890byte%=0 2900temp$="" 2910out$="" 2920REPEAT 2930temp$=CHR$(addr%?byte%) 2940IF ASC(temp$)>31 THEN out$=out$+temp$ 2950byte%+=1 2960UNTIL ASC(temp$)=0 2970=out$ 2980: 2990DEFFNstringwithlimit(addr%,maxlen%) 3000LOCAL byte%,temp$,out$ 3010byte%=0 3020temp$="" 3030out$="" 3040REPEAT 3050temp$=CHR$(addr%?byte%) 3060IF ASC(temp$)>31 THEN out$=out$+temp$ 3070byte%+=1 3080UNTIL ASC(temp$)=0 OR byte%>=maxlen% 3090=out$ 3100: 3110DEFFNicontext(wh%,iconnumber%) 3120!temp%=wh% 3130temp%!4=iconnumber% 3140SYS "Wimp_GetIconState",,temp% 3150it$="" 3160byte%=0 3170WHILE ?((temp%!28)+byte%)>31 3180it$=it$+CHR$(?((temp%!28)+byte%)) 3190byte%+=1 3200ENDWHILE 3210=it$ 3220: 3230DEFFNiconval(wh%,iconnumber%) 3240=VAL(FNicontext(wh%,iconnumber%)) 3250: 3260DEFPROCerror 3270SYS "Hourglass_Off" 3280CLOSE #0 3290SYS "Wimp_DragBox",,-1 3300SYS "Wimp_CreateMenu",,-1 3310!block%=ERR 3320$(block%+4)=REPORT$+CHR$(0) 3330SYS "Wimp_ReportError",block%,1,"AP Tracker" 3340PROCmain 3350ENDPROC 3360: 3370DEFPROCseticontext(wh%,iconnumber%,text$) 3380!temp%=wh% 3390temp%!4=iconnumber% 3400SYS "Wimp_GetIconState",,temp% 3410$temp%!28=LEFT$(text$,temp%!36-1) 3420temp%!8=0 3430temp%!12=0 3440SYS "Wimp_SetIconState",,temp% 3450ENDPROC 3460: 3470DEFPROCmakesamplemenu(samp%) 3480sampleno%=samp%+1 3490menuptr%=menuaddr% 3500menend%=menuaddr%+menuspace%-1 3510LOCAL i$,m$ 3520inst%=samp%+1 3530IF slen%(inst%)=0 THEN ENDPROC 3540mtitle$=FNleafname(sample$(inst%)) 3550IF mtitle$="" THEN mtitle$="Sample" 3560mtitle$=LEFT$(mtitle$,12) 3570PROCseticontext(savesample%,3,mtitle$) 3580mainmenu%=FNmakemen("|winssSave,|winsvVolume,Delete,"+FNtic(saveheader%)+"Header",mtitle$) 3590IF menuptr%>menend% THEN ERROR 17,"Not enough menu space" 3600PROCseticontext(setvolume%,1,STR$(!svoladdr%(sampleno%))) 3610ENDPROC 3620: 3630DEFPROCmainmenu 3640menuptr%=menuaddr% 3650menend%=menuaddr%+menuspace%-1 3660LOCAL i$,m$ 3670savemenu%=FNmakemen("|winsa"+FNlit(tuneloaded%)+"Tune,|winsp"+FNlit(tuneloaded%)+"Pattern,|winap"+FNlit(tuneloaded%)+"Patterns,|winsd"+FNlit(tuneloaded%)+"Text Dump,|winshHelp","Save") 3680tunemenu%=FNmakemen("Info,Samples,Stereo,Copy,Amend","Tune") 3690mainmenu%=FNmakemen("|wininInfo,|winsmSave,Settings,Create,"+FNlit(tuneloaded%)+"Clear,|wintn"+FNlit(tuneloaded%)+"Tune,Quit","AP Tracker") 3700IF menuptr%>menend% THEN ERROR 17,"Not enough menu space" 3710PROCseticontext(newtrack%,5,STR$(defvoices%)) 3720PROCseticontext(savepattern%,6,STR$(savepat%)) 3730ENDPROC 3740: 3750DEFFNlit(test%) 3760IF test% THEN ="|lit1" ELSE ="|lit0" 3770: 3780DEFFNtic(test%) 3790IF test% THEN ="|tic1" ELSE ="|tic0" 3800: 3810DEFPROCmenuitem(text$) 3820LOCAL menuflags%,iconflags%,submenu% 3830ii%=FALSE 3840submenu%=-1 3850IF text$="" THEN ENDPROC 3860menuflags%=0 3870iconflags%=&07000021 3880WHILE LEFT$(text$,1)="|" 3890CASE MID$(text$,2,3) OF 3900WHEN "lit": 3910iconflags%+=(1<<22)*(1-VAL(MID$(text$,5,1))) 3920text$=MID$(text$,6) 3930WHEN "tic": 3940menuflags%+=VAL(MID$(text$,5,1)) 3950text$=MID$(text$,6) 3960WHEN "win": 3970CASE MID$(text$,5,2) OF 3980WHEN "in":submenu%=info% 3990WHEN "tn":submenu%=tunemenu% 4000WHEN "nt":submenu%=newtrack% 4010WHEN "sa":submenu%=savetune% 4020WHEN "sm":submenu%=savemenu% 4030WHEN "sp":submenu%=savepattern% 4040WHEN "ap":submenu%=savepatterns% 4050WHEN "sh":submenu%=savehelp% 4060WHEN "ss":submenu%=savesample% 4070WHEN "sv":submenu%=setvolume% 4080WHEN "sd":submenu%=savedump% 4090ENDCASE 4100text$=MID$(text$,7) 4110ENDCASE 4120ENDWHILE 4130IF LEN(text$)>menumax% menumax%=LEN(text$) 4140menuptr%!0=menuflags% 4150menuptr%!4=submenu% 4160menuptr%!8=iconflags% 4170IF LEN(text$)<12 THEN 4180$(menuptr%+12)=text$ 4190ELSE 4200menend%-=(LEN(text$)+1) 4210menuptr%!8=(menuptr%!8) OR %100000000 4220menuptr%!12=menend% 4230menuptr%!16=-1 4240menuptr%!20=LEN(text$) 4250$menend%=text$ 4260ENDIF 4270menuptr%+=24 4280ENDPROC 4290: 4300DEFFNpar(sep$) 4310i1%=i%+1:i%=INSTR(menu$+sep$,sep$,i1%) 4320=MID$(menu$,i1%,i%-i1%) 4330: 4340DEFFNmakemen(menu$,menutitle$) 4350LOCAL menumax%,wasptr% 4360wasptr%=menuptr% 4370menumax%=10 4380i%=0 4390menuptr%!20=40 4400$menuptr%=menutitle$ 4410menuptr%?12=tfcol 4420menuptr%?13=mbcol 4430menuptr%?14=wfcol 4440menuptr%?15=wbcol 4450maxaddr%=menuptr%+16 4460menuptr%!24=0 4470menuptr%+=28 4480REPEAT 4490item$=FNpar(",") 4500PROCmenuitem(item$) 4510UNTIL item$="" 4520menuptr%!-24=(menuptr%!-24) OR &80 4530!maxaddr%=menumax%*16+32 4540=wasptr% 4550: 4560DEFPROCopenmenu(our%,m%,x%,y%) 4570menuhandle%=our% 4580menux%=x% 4590menuy%=y% 4600SYS "Wimp_CreateMenu",,m%,x%,y% 4610ENDPROC 4620: 4630DEFPROCmenuselect(menus%) 4640LOCAL redo% 4650SYS "Wimp_GetPointerInfo",,q2% 4660redo%=(((q2%!8) AND 1)>0) 4670CASE menuhandle% OF 4680WHEN 101: 4690CASE !menus% OF 4700WHEN 2: 4710PROCseticontext(settings%,5,STR$(patlen%)) 4720PROCopenwindow(settings%,0) 4730WHEN 3:PROCopenwindow(newtrack%,0) 4740WHEN 4: 4750PROCcleardata 4760WHEN 5: 4770CASE menus%!4 OF 4780WHEN 0:PROCgetnames:PROCtuneinfo:PROCopenwindow(tuneinfo%,0) 4790WHEN 1:PROCsamples 4800WHEN 2:PROCstereo 4810WHEN 3:PROCopenwindow(copypattern%,0) 4820WHEN 4: 4830PROCseticontext(amendtrack%,2,STR$(delpat%)) 4840PROCseticontext(amendtrack%,10,STR$(delvoice%)) 4850PROCopenwindow(amendtrack%,0) 4860ENDCASE 4870WHEN 6:PROCshutdown:redo%=FALSE 4880ENDCASE 4890IF redo% PROCmainmenu 4900WHEN 106: 4910CASE !menus% OF 4920WHEN 2: 4930PROCdeletesample(sampleno%) 4940WHEN 3: 4950saveheader%=NOT(saveheader%) 4960PROCmakesamplemenu(sampleno%-1) 4970ENDCASE 4980ENDCASE 4990IF redo% THEN PROCopenmenu(menuhandle%,mainmenu%,menux%,menuy%) 5000ENDPROC 5010: 5020DEFPROCseticontype(window%,icon%,type%) 5030q2%!0=window% 5040q2%!4=icon% 5050SYS "Wimp_GetIconState",,q2% 5060iconblock%=q2%+8 5070iconflags%=iconblock%!16 5080eorword%=type%<<12 5090clearword%=15<<12 5100q2%!0=window% 5110q2%!4=icon% 5120q2%!8=eorword% 5130q2%!12=clearword% 5140SYS "Wimp_SetIconState",,q2% 5150ENDPROC 5160: 5170DEFPROCwriteable(window%,icon%) 5180PROCseticontype(window%,icon%,15) 5190ENDPROC 5200: 5210DEFPROCunwriteable(window%,icon%) 5220PROCseticontype(window%,icon%,0) 5230ENDPROC 5240: 5250DEFPROCmakeselected(window%,icon%) 5260q2%!0=window% 5270q2%!4=icon% 5280q2%!8=2^21 5290q2%!12=2^21 5300SYS "Wimp_SetIconState",,q2% 5310ENDPROC 5320: 5330DEFPROCmakeunselected(window%,icon%) 5340q2%!0=window% 5350q2%!4=icon% 5360q2%!8=0 5370q2%!12=2^21 5380SYS "Wimp_SetIconState",,q2% 5390ENDPROC 5400: 5410DEFFNisitselected(window%,icon%) 5420q2%!0=window% 5430q2%!4=icon% 5440SYS "Wimp_GetIconState",,q2% 5450iconblock%=q2%+8 5460iconflags%=iconblock%!16 5470IF (iconflags% AND 2^21)=0 THEN =0 ELSE =1 5480: 5490DEFPROCmovecaret(window%,icon%) 5500p%=(LEN(FNicontext(window%,icon%))+1) DIV 2 5510SYS "Wimp_SetCaretPosition",window%,icon%,,,-1,p% 5520ENDPROC 5530: 5540DEFFNfilelen(file$) 5550C%=OPENUP(file$) 5560len%=EXT#C% 5570CLOSE #C% 5580=len% 5590: 5600DEFPROCsavefile 5610pathname$=FNstringfrommemory(q%+44) 5620leafname$=FNicontext(savehandle%,3) 5630IF leafname$="" THEN ENDPROC 5640fullname$=pathname$+leafname$ 5650CASE globalref% OF 5660WHEN 1:PROCsavetune 5670WHEN 2:PROCsavesample(sampleno%) 5680WHEN 3:PROCsavepattern(savepat%) 5690WHEN 4:PROCsavehelp(fullname$) 5700WHEN 5:PROCsavepatterns(leafname$) 5710WHEN 6:PROCsavedump(fullname$) 5720ENDCASE 5730ENDPROC 5740: 5750DEFPROCloadwithpathvariable(variable$,filename$,addr%) 5760OSCLI("LOAD "+variable$+"."+filename$+" "+STR$~addr%) 5770ENDPROC 5780: 5790DEFPROCsavewithpathstring(filename$,path$,addr%,bytes%) 5800path2$=path$+"."+filename$ 5810SYS "OS_File",0,path2$,0,0,addr%,addr%+bytes% 5820ENDPROC 5830: 5840DEFFNdigit(d$) 5850IF d$>="0" AND d$<="9" THEN =TRUE ELSE =FALSE 5860: 5870DEFPROCsettitle(block%,title$) 5880addr%=block%+72 5890len%=LEN(title$) 5900c%=0 5910WHILE len%>0 5920addr%?c%=ASC(MID$(title$,c%+1,1)) 5930c%+=1 5940len%-=1 5950ENDWHILE 5960addr%?c%=0 5970ENDPROC 5980: 5990DEFFNreadstring 6000LOCAL out$,byte% 6010abort$=CHR$(0) 6020IF EOF#handle% THEN =abort$ 6030out$="" 6040REPEAT 6050byte%=BGET#handle% 6060IF byte%>31 AND NOT(EOF#handle%) THEN out$=out$+CHR$(byte%) 6070UNTIL byte%<32 OR EOF#handle% 6080=out$ 6090: 6100DEFPROCwritestring(write$) 6110FOR char%=1 TO LEN(write$) 6120BPUT#handle%,ASC(MID$(write$,char%,1)) 6130NEXT 6140BPUT#handle%,13 6150ENDPROC 6160: 6170DEFPROCsetfiletype(fname$,newtype%) 6180SYS "OS_File",18,fname$,newtype% 6190ENDPROC 6200: 6210DEFPROCwritestringtofile(ch%,str$) 6220IF str$="" THEN ENDPROC 6230FOR l%=1 TO LEN(str$) 6240BPUT#ch%,ASC(MID$(str$,l%,1)) 6250NEXT 6260ENDPROC 6270: 6280DEFPROCloadfile 6290filename$=FNstringfrommemory(q%+44) 6300loaded$=filename$ 6310filelen%=FNfilelen(filename$) 6320CASE q%!40 OF 6330WHEN &001:PROCloadtracker(filename$,2) 6340WHEN &364:PROCloadcocotrack(filename$) 6350WHEN &365:PROCloadcocotrack(filename$) 6360WHEN &701:PROCloadprotracker(filename$) 6370WHEN &CB6:PROCloadtracker(filename$,0) 6380WHEN &CB5:PROCloadsample(filename$,0) 6390WHEN &CC5:PROCloadtracker(filename$,2) 6400WHEN &D3C:PROCloadsample(filename$,2) 6410WHEN &DF9:PROCloadsample(filename$,6) 6420WHEN &ED0:PROCloadsample(filename$,1) 6430WHEN &FFA:PROCloadmodule(filename$) 6440WHEN &FFD:PROCloadpatdata(filename$) 6450ENDCASE 6460ENDPROC 6470: 6480DEFPROCloadmodule(module$) 6490C%=OPENIN(module$) 6500PTR#C%=&88 6510a$="" 6520FOR byte%=1 TO 8 6530a$+=CHR$(BGET#C%) 6540NEXT 6550CLOSE #C% 6560IF a$="SampConv" THEN PROCloadsample(module$,8) ELSE PROCloadsample(module$,7) 6570ENDPROC 6580: 6590DEFPROCloadtracker(tracker$,modtype%) 6600modtype2%=modtype% 6610IF modtype%=0 THEN 6620C%=OPENIN(tracker$) 6630read$="" 6640FOR char%=1 TO 4 6650read$+=CHR$(BGET#C%) 6660NEXT 6670CLOSE #C% 6680ENDIF 6690: 6700abort%=FALSE 6710IF tuneloaded% THEN 6720errorexit%=FNerrorbox(17,"Existing tune will be lost - are you sure?") 6730IF errorexit%=1 THEN PROCreturnmemory ELSE abort%=TRUE 6740ENDIF 6750IF abort% THEN ENDPROC 6760: 6770IF modtype%=0 THEN 6780IF read$="FTMN" THEN ERROR 17,"Sorry, can't load 'Face the Music' files" 6790IF read$="MED"+CHR$(4) THEN ERROR 17,"Sorry, can't load MED3 files" 6800IF read$="MUSX" THEN modtype%=1 ELSE modtype%=2 6810IF read$="OKTA" THEN modtype%=3 6820ENDIF 6830PROCstoptune 6840aborted%=FALSE 6850CASE modtype% OF 6860WHEN 2: 6870IF modtype2%=0 THEN 6880errorexit%=FNerrorbox(17,"Convert from Sound Tracker?") 6890IF errorexit%<>1 THEN aborted%=TRUE 6900ENDIF 6910: 6920IF NOT(aborted%) THEN 6930freemem%=0 6940gotit%=FNgrabmem(filelen%*2+10*1024) 6950IF gotit%=FALSE THEN PROCnotenoughtoload 6960tempload%=trackertune%+filelen%+10*1024 6970tempload%=(tempload%-4) AND &FFFFFFFC 6980OSCLI("LOAD "+tracker$+" "+STR$~tempload%) 6990A%=1 7000B%=tempload% 7010C%=trackertune% 7020D%=filelen% 7030SYS "Hourglass_On" 7040CALL trackercode% 7050SYS "Hourglass_Off" 7060PROCminimise 7070ENDIF 7080: 7090WHEN 1: 7100freemem%=0 7110gotit%=FNgrabmem(filelen%) 7120IF gotit%=FALSE THEN PROCnotenoughtoload 7130OSCLI("LOAD "+tracker$+" "+STR$~trackertune%) 7140: 7150WHEN 3: 7160errorexit%=FNerrorbox(17,"Convert from Octalyser?") 7170IF errorexit%<>1 THEN aborted%=TRUE 7180: 7190IF NOT(aborted%) THEN 7200freemem%=0 7210gotit%=FNgrabmem(filelen%*2+10*1024) 7220IF gotit%=FALSE THEN PROCnotenoughtoload 7230tempload%=trackertune%+filelen%+10*1024 7240tempload%=(tempload%-4) AND &FFFFFFFC 7250OSCLI("LOAD "+tracker$+" "+STR$~tempload%) 7260A%=8 7270B%=tempload% 7280C%=trackertune% 7290D%=filelen% 7300SYS "Hourglass_On" 7310CALL trackercode% 7320SYS "Hourglass_Off" 7330PROCminimise 7340ENDIF 7350: 7360ENDCASE 7370: 7380IF NOT(aborted%) THEN PROCjustloaded 7390IF aborted% THEN PROCcloseall 7400ENDPROC 7410: 7420DEFPROCjustloaded 7430tuneloaded%=TRUE 7440playing%=FALSE 7450oldpos%=-1:oldevent%=-1 7460PROCseticontext(savetune%,3,loaded$) 7470PROCgetmusicinfo 7480PROCtuneinfo 7490PROCupdatestereo 7500PROCwritesamplenames 7510PROCinitialisevoices 7520justloaded%=TRUE 7530delvoice%=1 7540delpat%=1 7550savepat%=1 7560copypat%=1 7570PROCseticontext(copypattern%,5,STR$(copypat%)) 7580PROCseticontext(amendtrack%,2,STR$(delpat%)) 7590PROCseticontext(amendtrack%,10,STR$(delvoice%)) 7600PROCredocaret 7610ENDPROC 7620: 7630DEFPROCredocaret 7640SYS "Wimp_GetCaretPosition",,q% 7650cw%=q%!0:ci%=q%!4 7660IF cw%=tuneinfo% THEN 7670IF ci%=7 OR ci%=8 PROCmovecaret(cw%,ci%) 7680ENDIF 7690ENDPROC 7700: 7710DEFPROCloadsample(sampfile$,samptype%) 7720withheader%=FALSE 7730window%=q%!20 7740icon%=q%!24 7750IF window%<>samples% THEN ENDPROC 7760IF icon%<0 THEN ENDPROC 7770SYS "Hourglass_On" 7780samppos%=(icon% MOD 36)+1 7790sampfilelen%=FNfilelen(sampfile$) 7800actualsamplelen%=sampfilelen% 7810IF samptype%=2 THEN sampfilelen%-=1 7820IF samptype%=6 THEN sampfilelen%-=712 7830IF samptype%=7 THEN sampfilelen%-=1408 7840IF samptype%=8 THEN sampfilelen%-=660 7850sampfilelen%=(sampfilelen%+3) AND &FFFFFFFC 7860IF samptype%=0 THEN withheader%=FNheadered(sampfile$) 7870IF withheader% THEN 7880PROCloadheadered(sampfile$,samppos%) 7890ELSE 7900PROCloadunheadered(sampfile$,samppos%,samptype%) 7910ENDIF 7920SYS "Hourglass_Off" 7930PROCupdatesize 7940PROCminimise 7950ENDPROC 7960: 7970DEFFNheadered(samp$) 7980C%=OPENIN(samp$) 7990read$="" 8000FOR char%=1 TO 4 8010read$+=CHR$(BGET#C%) 8020NEXT 8030CLOSE #C% 8040IF read$="SAMP" THEN =TRUE 8050=FALSE 8060: 8070DEFPROCloadheadered(what$,where%) 8080abort%=FALSE 8090IF sampfilelen%>(slen%(where%)+92) THEN 8100toinsert%=sampfilelen%-(slen%(where%)+92) 8110at%=sampaddr%(where%) 8120IF NOT(FNinsertbytes(at%,toinsert%)) THEN abort%=TRUE 8130ENDIF 8140IF sampfilelen%<(slen%(where%)+92) THEN 8150todelete%=slen%(where%)+92-sampfilelen% 8160at%=sampaddr%(where%) 8170IF NOT(FNdeletebytes(at%,todelete%)) THEN abort%=TRUE 8180ENDIF 8190IF abort%=TRUE THEN VDU 7:ENDPROC 8200OSCLI("LOAD "+what$+" "+STR$~sampaddr%(where%)) 8210PROCreadsamples 8220PROCwritesamplenames 8230ENDPROC 8240: 8250DEFPROCloadunheadered(what$,where%,stype%) 8260abort%=FALSE 8270IF sampfilelen%>slen%(where%) THEN 8280toinsert%=sampfilelen%-slen%(where%) 8290at%=sampaddr%(where%)+92 8300IF NOT(FNinsertbytes(at%,toinsert%)) THEN abort%=TRUE 8310ENDIF 8320IF sampfilelen%<slen%(where%) THEN 8330todelete%=slen%(where%)-sampfilelen% 8340at%=sampaddr%(where%)+92 8350IF NOT(FNdeletebytes(at%,todelete%)) THEN abort%=TRUE 8360ENDIF 8370IF abort%=TRUE THEN VDU 7:ENDPROC 8380CASE stype% OF 8390WHEN 2: 8400C%=OPENIN(what$) 8410SYS "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-1,1 8420CLOSE #C% 8430WHEN 6: 8440C%=OPENIN(what$) 8450SYS "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-712,544 8460CLOSE #C% 8470WHEN 7: 8480C%=OPENIN(what$) 8490SYS "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-1408,1408 8500CLOSE #C% 8510WHEN 8: 8520C%=OPENIN(what$) 8530SYS "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-660,660 8540CLOSE #C% 8550WHEN 0,1,3,4,5: 8560OSCLI("LOAD "+what$+" "+STR$~(sampaddr%(where%)+92)) 8570ENDCASE 8580sname$=FNleafname(what$) 8590sname$=LEFT$(sname$,20) 8600rlen%=2 8610rofs%=0 8620at%=sampaddr%(where%) 8630at%!4=sampfilelen%+84 8640PROCwritewithzeros(sname$,at%+16,20) 8650at%!80=rlen% 8660at%!68=rofs% 8670at%!56=sampfilelen% 8680at%!88=sampfilelen% 8690CASE stype% OF 8700WHEN 1: 8710A%=5 8720B%=at%+92 8730C%=sampfilelen% 8740D%=0 8750CALL trackercode% 8760WHEN 2,6,7: 8770A%=5 8780B%=at%+92 8790C%=sampfilelen% 8800D%=1 8810CALL trackercode% 8820WHEN 3,4,5: 8830A%=5 8840B%=at%+92 8850C%=sampfilelen% 8860D%=stype%-1 8870CALL trackercode% 8880ENDCASE 8890PROCreadsamples 8900PROCwritesamplenames 8910ENDPROC 8920: 8930DEFPROCwritewithzeros(w$,a%,l%) 8940FOR c%=1 TO l% 8950b%=0 8960IF c%<=LEN(w$) THEN b%=ASC(MID$(w$,c%,1)) 8970a%?(c%-1)=b% 8980NEXT 8990ENDPROC 9000: 9010DEFPROCedittracker 9020IF tuneloaded%=FALSE THEN ENDPROC 9030PROCstoptune 9040oldmode%=MODE 9050PROCrewritestereo 9060MODE 15 9070A%=trackertune% 9080B%=0 9090IF justloaded% THEN B%=1 9100CALL trackercode%+4 9110*FX 15,0 9120SYS "Wimp_SetMode",oldmode% 9130PROCreadmusicdata 9140PROCreadsamples 9150PROCwritesamplenames 9160PROCtuneinfo 9170justloaded%=FALSE 9180SYS "OS_Byte",4,2,0 9190ENDPROC 9200: 9210DEFPROCnotenoughtoload 9220PROCreturnmemory 9230PROCcloseall 9240ERROR 17,"Insufficient Memory Available" 9250ENDPROC 9260: 9270DEFPROCreturnmemory 9280SYS "XWimp_SlotSize",appsize%,-1 9290tuneloaded%=FALSE 9300ENDPROC 9310: 9320DEFFNgrabmem(amount%) 9330oldamount%=amount% 9340IF amount%<freemem% THEN freemem%-=amount%:=TRUE 9350REPEAT 9360grabable%=FNgrabmem2(32*1024) 9370IF grabable% THEN 9380freemem%+=32*1024 9390amount%-=32*1024 9400ENDIF 9410UNTIL amount%<0 OR NOT(grabable%) 9420IF amount%<0 THEN freemem%-=oldamount% 9430=grabable% 9440: 9450DEFFNgrabmem2(amount%) 9460SYS "XWimp_SlotSize",-1,-1 TO size% 9470SYS "XWimp_SlotSize",size%+amount%,-1 9480SYS "XWimp_SlotSize",-1,-1 TO size2% 9490IF size2%<size%+amount% THEN 9500SYS "XWimp_SlotSize",size%,-1 9510ENDIF 9520IF size2%<size%+amount% THEN =FALSE ELSE =TRUE 9530: 9540DEFPROCgetmusicinfo 9550PROCreadmusicdata 9560PROCreadsamples 9570PROCreadpatterns 9580ENDPROC 9590: 9600DEFPROCtuneinfo 9610PROCseticontext(tuneinfo%,7,mname$) 9620PROCseticontext(tuneinfo%,8,aname$) 9630PROCseticontext(tuneinfo%,9,STR$(patterns%)) 9640PROCseticontext(tuneinfo%,14,STR$(voices%)) 9650PROCseticontext(tuneinfo%,15,STR$(seqlen%)) 9660PROCupdatesize 9670ENDPROC 9680: 9690DEFPROCgetnames 9700mname$=FNicontext(tuneinfo%,7) 9710aname$=FNicontext(tuneinfo%,8) 9720ENDPROC 9730: 9740DEFPROCsamples 9750PROCopenwindow(samples%,0) 9760ENDPROC 9770: 9780DEFPROCwritesamplenames 9790FOR sample%=1 TO 36 9800icon%=sample%+107 9810sname$=sample$(sample%) 9820slen%=slen%(sample%) 9830slen$=STR$(slen%) 9840IF slen%=0 THEN slen$="" 9850slen$=STRING$(5-LEN(slen$)," ")+slen$ 9860sname$=sname$+STRING$(22-LEN(sname$)," ") 9870PROCseticontext(samples%,icon%,sname$+" "+slen$) 9880NEXT 9890ENDPROC 9900: 9910DEFFNfindword(start%,end%,word%) 9920A%=start% 9930B%=end% 9940REPEAT 9950C%=!A% 9960D%=A%!4 9970A%+=8 9980IF C%<>word% THEN A%+=D% 9990UNTIL A%>B% OR C%=word% 10000IF C%=word% THEN =A% 10010=FALSE 10020: 10030DEFFNword(word$) 10040word%=0 10050FOR byte%=1 TO 4 10060asc%=ASC(MID$(word$,5-byte%,1)) 10070word%=(word%<<8)+asc% 10080NEXT 10090=word% 10100: 10110DEFPROCreadmusicdata 10120absstart%=trackertune% 10130absend%=trackertune%+(trackertune%!4)+8 10140absstart%+=8 10150mlen%=FNword("MLEN") 10160mvox%=FNword("MVOX") 10170pnum%=FNword("PNUM") 10180mnam%=FNword("MNAM") 10190anam%=FNword("ANAM") 10200plen%=FNword("PLEN") 10210ster%=FNword("STER") 10220sequ%=FNword("SEQU") 10230mlenaddr%=FNfindword(absstart%,absend%,mlen%) 10240seqlen%=!mlenaddr% 10250mvoxaddr%=FNfindword(absstart%,absend%,mvox%) 10260voices%=!mvoxaddr% 10270steraddr%=FNfindword(absstart%,absend%,ster%) 10280pnumaddr%=FNfindword(absstart%,absend%,pnum%) 10290patterns%=!pnumaddr% 10300mnamaddr%=FNfindword(absstart%,absend%,mnam%) 10310anamaddr%=FNfindword(absstart%,absend%,anam%) 10320aname$=FNstringwithlimit(anamaddr%,32) 10330mname$=FNstringwithlimit(mnamaddr%,32) 10340pattlen%=FNfindword(absstart%,absend%,plen%) 10350seqaddr%=FNfindword(absstart%,absend%,sequ%) 10360ENDPROC 10370: 10380DEFPROCreadsamples 10390absstart%=trackertune% 10400absend%=trackertune%+(trackertune%!4)+8 10410absstart%+=8 10420samp%=FNword("SAMP") 10430snam%=FNword("SNAM") 10440slen%=FNword("SLEN") 10450svol%=FNword("SVOL") 10460start%=absstart% 10470FOR inst%=1 TO 36 10480sampleaddr%=FNfindword(start%,absend%,samp%) 10490sampaddr%(inst%)=sampleaddr%-8 10500searchaddr%=sampleaddr% 10510snamaddr%=FNfindword(searchaddr%,absend%,snam%) 10520sample$(inst%)=FNstringwithlimit(snamaddr%,20) 10530slenaddr%=FNfindword(searchaddr%,absend%,slen%) 10540slen%(inst%)=4*((!slenaddr%+3) DIV 4) 10550!slenaddr%=slen%(inst%) 10560svoladdr%(inst%)=FNfindword(searchaddr%,absend%,svol%) 10570start%=sampleaddr%+!(sampleaddr%-4) 10580NEXT 10590ENDPROC 10600: 10610DEFPROCreadpatterns 10620LOCAL start%,pattern% 10630absstart%=trackertune% 10640absend%=trackertune%+(trackertune%!4)+8 10650absstart%+=8 10660start%=absstart% 10670patt%=FNword("PATT") 10680FOR pattern%=1 TO patterns% 10690pattaddr%(pattern%)=FNfindword(start%,absend%,patt%) 10700start%=pattaddr%(pattern%)+!(pattaddr%(pattern%)-4) 10710NEXT 10720ENDPROC 10730: 10740DEFPROCnewpattern 10750IF patterns%=64 THEN ENDPROC 10760PROCmakeselected(tuneinfo%,6) 10770eachpat%=4*patlen%*voices% 10780start%=pattaddr%(patterns%)+(4*voices%*pattlen%?(patterns%-1)) 10790IF FNinsertbytes(start%,eachpat%+8) THEN 10800start%!0=FNword("PATT") 10810start%!4=eachpat% 10820start%+=8 10830FOR word%=0 TO (eachpat%/4)-1 10840start%!(word%*4)=0 10850NEXT 10860pattlen%?patterns%=patlen% 10870patterns%+=1 10880!pnumaddr%=patterns% 10890PROCgetmusicinfo 10900ENDIF 10910PROCmakeunselected(tuneinfo%,6) 10920PROCtuneinfo 10930ENDPROC 10940: 10950DEFFNinsertbytes(where%,howmany%) 10960IF NOT(FNgrabmem(howmany%)) THEN =FALSE 10970from%=trackertune%+trackertune%!4+8-1 10980to%=from%+howmany% 10990copy%=from%-where% 11000A%=from% 11010B%=to% 11020C%=copy%+1 11030IF C%>0 CALL insertbytes 11040trackertune%!4+=howmany% 11050=TRUE 11060: 11070DEFFNdeletebytes(where%,howmany%) 11080A%=where%+howmany% 11090B%=where% 11100endaddr%=trackertune%+trackertune%!4+8 11110C%=endaddr%-A% 11120IF C%>0 CALL deletebytes 11130freemem%+=howmany% 11140trackertune%!4-=howmany% 11150=TRUE 11160: 11170DEFPROCassemble 11180fromreg%=0 11190toreg%=1 11200countreg%=2 11210link=14:pc=15 11220FOR pass=0 TO 2 STEP 2 11230P%=code% 11240[OPT pass 11250.insertbytes 11260LDRB R11,[fromreg%],#-1 11270STRB R11,[toreg%],#-1 11280SUBS countreg%,countreg%,#1 11290BNE insertbytes 11300MOV pc,link 11310.deletebytes 11320LDRB R11,[fromreg%],#1 11330STRB R11,[toreg%],#1 11340SUBS countreg%,countreg%,#1 11350BNE deletebytes 11360MOV pc,link 11370.claimRma 11380MOV R3,R0 11390MOV R0,#6 11400SWI "XOS_Module" 11410MOVVS R2,#0 11420MOV R0,R2 11430MOV pc,link 11440.copybytes 11450ADD R11,R2,#3 11460MOV R11,R11,ASR #2 11470.copybytesloop 11480LDR R10,[R0],#4 11490STR R10,[R1],#4 11500SUBS R11,R11,#1 11510BNE copybytesloop 11520MOV pc,link 11530] 11540NEXT 11550ENDPROC 11560: 11570DEFPROCsavesample(sample%) 11580leaf$=FNicontext(savesample%,3) 11590path$=FNstringfrommemory(q%+44) 11600path$=LEFT$(path$,LEN(path$)-1) 11610IF saveheader% THEN 11620start%=sampaddr%(sample%) 11630length%=!(sampaddr%(sample%)+4)+8 11640ELSE 11650start%=sampaddr%(sample%)+92 11660length%=slen%(sample%) 11670ENDIF 11680PROCsavewithpathstring(leaf$,path$,start%,length%) 11690PROCsetfiletype(path$+"."+leaf$,&CB5) 11700SYS "Wimp_CreateMenu",,-1 11710ENDPROC 11720: 11730DEFPROCsavetune 11740PROCwritewithzeros(FNicontext(tuneinfo%,7),mnamaddr%,32) 11750PROCwritewithzeros(FNicontext(tuneinfo%,8),anamaddr%,32) 11760PROCrewritestereo 11770leaf$=FNicontext(savetune%,3) 11780leaf$=FNleafname(leaf$) 11790path$=FNstringfrommemory(q%+44) 11800path$=LEFT$(path$,LEN(path$)-1) 11810PROCsavewithpathstring(leaf$,path$,trackertune%,trackertune%!4+8) 11820PROCsetfiletype(path$+"."+leaf$,&CB6) 11830PROCseticontext(savetune%,3,path$+"."+leaf$) 11840SYS "Wimp_CreateMenu",,-1 11850ENDPROC 11860: 11870DEFPROCdeletesample(samppos%) 11880at%=sampaddr%(samppos%)+92 11890todelete%=slen%(samppos%) 11900dummy%=FNdeletebytes(at%,todelete%) 11910at%=sampaddr%(samppos%) 11920PROCwritewithzeros("",at%+16,20) 11930at%!4=84 11940at%!56=0 11950at%!68=0 11960at%!80=2 11970at%!88=0 11980PROCreadsamples 11990PROCwritesamplenames 12000PROCminimise 12010PROCtuneinfo 12020ENDPROC 12030: 12040DEFPROCupdatesize 12050size%=trackertune%!4+8 12060ksize%=INT((size%+512) DIV 1024) 12070PROCseticontext(tuneinfo%,19,STR$(ksize%)+"K") 12080PROCseticontext(tuneinfo%,20,STR$(size%)+" bytes") 12090ENDPROC 12100: 12110DEFPROCquicksave 12120save$=FNicontext(savetune%,3) 12130PROCmakeselected(savetune%,4) 12140IF INSTR(save$,".")=0 THEN PROCmakeunselected(savetune%,4):ENDPROC 12150PROCwritewithzeros(FNicontext(tuneinfo%,7),mnamaddr%,32) 12160PROCwritewithzeros(FNicontext(tuneinfo%,8),anamaddr%,32) 12170PROCrewritestereo 12180start%=trackertune% 12190length%=trackertune%!4+8 12200OSCLI("SAVE "+save$+" "+STR$~start%+" +"+STR$~length%) 12210PROCsetfiletype(save$,&CB6) 12220PROCmakeunselected(savetune%,4) 12230SYS "Wimp_CreateMenu",,-1 12240ENDPROC 12250: 12260DEFPROCincdefvoices 12270IF defvoices%<8 THEN defvoices%+=1 12280PROCseticontext(newtrack%,5,STR$(defvoices%)) 12290ENDPROC 12300: 12310DEFPROCdecdefvoices 12320IF defvoices%>1 THEN defvoices%-=1 12330PROCseticontext(newtrack%,5,STR$(defvoices%)) 12340ENDPROC 12350: 12360DEFPROCcleardata 12370abort%=FALSE 12380IF tuneloaded% THEN 12390errorexit%=FNerrorbox(17,"Data will be lost - are you sure ?") 12400IF errorexit%=2 THEN abort%=TRUE 12410ENDIF 12420IF abort% THEN ENDPROC 12430PROCreturnmemory 12440PROCstoptune 12450PROCcloseall 12460tuneloaded%=FALSE 12470ENDPROC 12480: 12490DEFPROCcloseall 12500PROCclosewindow(tuneinfo%) 12510PROCclosewindow(samples%) 12520PROCclosewindow(stereo%) 12530PROCclosewindow(copypattern%) 12540PROCclosewindow(player%) 12550PROCclosewindow(amendtrack%) 12560ENDPROC 12570: 12580DEFPROCcreatetune(v%) 12590abort%=FALSE 12600IF tuneloaded% THEN 12610errorexit%=FNerrorbox(17,"Existing tune will be lost - are you sure?") 12620IF errorexit%=2 THEN abort%=TRUE 12630IF abort%=FALSE PROCreturnmemory 12640ENDIF 12650IF abort% THEN PROCclosewindow(newtrack%):ENDPROC 12660PROCstoptune 12670PROCmakeselected(newtrack%,2) 12680memneeded%=368+36*92 12690memneeded%+=v%*64*4 12700freemem%=0 12710IF FNgrabmem(memneeded%) THEN 12720o%=0 12730t%=trackertune% 12740t%!o%=FNword("MUSX") : o%+=4 12750t%!o%=memneeded%-8 : o%+=4 12760t%!o%=FNword("TINF") : o%+=4 12770t%!o%=4 : o%+=4 12780t%!o%=0 : o%+=4 12790t%!o%=FNword("MVOX") : o%+=4 12800t%!o%=4 : o%+=4 12810t%!o%=v% : o%+=4 12820t%!o%=FNword("STER") : o%+=4 12830t%!o%=8 : o%+=4 12840t%!o%=&03050503 : o%+=4 12850t%!o%=&03050503 : o%+=4 12860t%!o%=FNword("MNAM") : o%+=4 12870t%!o%=32 : o%+=4 12880PROCwritewithzeros("<Untitled>",t%+o%,32) 12890o%+=32 12900t%!o%=FNword("ANAM") : o%+=4 12910t%!o%=32 : o%+=4 12920PROCwritewithzeros("<You>",t%+o%,32) 12930o%+=32 12940t%!o%=FNword("MLEN") : o%+=4 12950t%!o%=4 : o%+=4 12960t%!o%=1 : o%+=4 12970t%!o%=FNword("PNUM") : o%+=4 12980t%!o%=4 : o%+=4 12990t%!o%=1 : o%+=4 13000t%!o%=FNword("PLEN") : o%+=4 13010t%!o%=64 : o%+=4 13020FOR i%=1 TO 64 13030t%?o%=64 13040o%+=1 13050NEXT 13060t%!o%=FNword("SEQU") : o%+=4 13070t%!o%=128 : o%+=4 13080FOR i%=1 TO 128 13090t%?o%=0 13100o%+=1 13110NEXT 13120t%!o%=FNword("PATT") : o%+=4 13130t%!o%=v%*64*4 : o%+=4 13140FOR i%=1 TO v%*64*4 13150t%?o%=0 13160o%+=1 13170NEXT 13180FOR sample%=1 TO 36 13190t%!o%=FNword("SAMP") : o%+=4 13200t%!o%=84 : o%+=4 13210t%!o%=FNword("SNAM") : o%+=4 13220t%!o%=20 : o%+=4 13230PROCwritewithzeros("",t%+o%,20) 13240o%+=20 13250t%!o%=FNword("SVOL") : o%+=4 13260t%!o%=4 : o%+=4 13270t%!o%=255 : o%+=4 13280t%!o%=FNword("SLEN") : o%+=4 13290t%!o%=4 : o%+=4 13300t%!o%=0 : o%+=4 13310t%!o%=FNword("ROFS") : o%+=4 13320t%!o%=4 : o%+=4 13330t%!o%=0 : o%+=4 13340t%!o%=FNword("RLEN") : o%+=4 13350t%!o%=4 : o%+=4 13360t%!o%=2 : o%+=4 13370t%!o%=FNword("SDAT") : o%+=4 13380t%!o%=0 : o%+=4 13390NEXT 13400tuneloaded%=TRUE 13410playing%=FALSE 13420PROCseticontext(savetune%,3,"Tracker") 13430PROCgetmusicinfo 13440PROCtuneinfo 13450PROCupdatestereo 13460PROCwritesamplenames 13470PROCinitialisevoices 13480PROCclosewindow(newtrack%) 13490PROCminimise 13500ELSE 13510tuneloaded%=FALSE 13520PROCcloseall 13530ENDIF 13540PROCmakeunselected(newtrack%,2) 13550justloaded%=TRUE 13560delvoice%=1 13570delpat%=1 13580savepat%=1 13590copypat%=1 13600PROCseticontext(copypattern%,5,STR$(copypat%)) 13610PROCseticontext(amendtrack%,2,STR$(delpat%)) 13620PROCseticontext(amendtrack%,10,STR$(delvoice%)) 13630PROCredocaret 13640ENDPROC 13650: 13660DEFFNerrorbox(err%,err$) 13670q%!0=err%+(task%<<8) 13680$(q%+4)=err$+CHR$(0) 13690SYS "Wimp_ReportError",q%,%1011,"AP Tracker" TO ,exit% 13700=exit% 13710: 13720DEFFNleafname(fullpath$) 13730IF fullpath$="" THEN ="" 13740LOCAL output$,chpos%,ch$ 13750output$="" 13760chpos%=LEN(fullpath$) 13770REPEAT 13780ch$=MID$(fullpath$,chpos%,1) 13790IF INSTR(".: ",ch$)=0 THEN output$=ch$+output$ 13800chpos%-=1 13810UNTIL chpos%=0 OR INSTR(".: ",ch$)>0 13820=output$ 13830: 13840DEFPROCstereo 13850PROCopenwindow(stereo%,0) 13860ENDPROC 13870: 13880DEFPROCsetstereoESGs 13890FOR voice%=1 TO 8 13900baseicon%=voice%*8-7 13910esg%=voice% 13920FOR eachicon%=0 TO 6 13930PROCsetESG(stereo%,baseicon%+eachicon%,esg%) 13940NEXT 13950NEXT 13960ENDPROC 13970: 13980DEFPROCupdatestereo 13990FOR voice%=1 TO 8 14000s%=steraddr%+voice%-1 14010IF ?s%=0 OR ?s%>7 THEN ?s%=4 14020baseicon%=voice%*8-7 14030FOR eachicon%=0 TO 6 14040PROCmakeunselected(stereo%,baseicon%+eachicon%) 14050NEXT 14060PROCmakeselected(stereo%,baseicon%+(steraddr%?(voice%-1)-1)) 14070NEXT 14080ENDPROC 14090: 14100DEFPROCsetESG(window%,icon%,set%) 14110q%!0=window% 14120q%!4=icon% 14130q%!8=set%<<16 14140q%!12=%1111<<16 14150SYS "Wimp_SetIconState",,q% 14160ENDPROC 14170: 14180DEFPROCrewritestereo 14190FOR voice%=1 TO 8 14200w%=steraddr%+voice%-1 14210baseicon%=voice%*8-7 14220s%=1 14230FOR eachicon%=0 TO 6 14240IF FNisitselected(stereo%,baseicon%+eachicon%) THEN s%=eachicon%+1 14250NEXT 14260?w%=s% 14270NEXT 14280ENDPROC 14290: 14300DEFPROCincsavepat 14310IF savepat%<patterns% THEN savepat%+=1 14320PROCseticontext(savepattern%,6,STR$(savepat%)) 14330ENDPROC 14340: 14350DEFPROCdecsavepat 14360IF savepat%>1 THEN savepat%-=1 14370PROCseticontext(savepattern%,6,STR$(savepat%)) 14380ENDPROC 14390: 14400DEFFNpatternaddr(patno%) 14410=pattaddr%(patno%) 14420: 14430DEFPROCsavepattern(whichpat%) 14440startpat%=FNpatternaddr(whichpat%)-8 14450length%=!(startpat%+4)+8 14460pathname$=LEFT$(pathname$,LEN(pathname$)-1) 14470PROCsavewithpathstring(leafname$,pathname$,startpat%,length%) 14480PROCsetfiletype(pathname$+"."+leafname$,&FFD) 14490SYS "Wimp_CreateMenu",,-1 14500ENDPROC 14510: 14520DEFPROCsavepatterns(root$) 14530pathname$=LEFT$(pathname$,LEN(pathname$)-1) 14540SYS "Hourglass_On" 14550FOR patsave%=1 TO patterns% 14560leafname$=root$+RIGHT$("00"+STR$(patsave%),2) 14570startpat%=FNpatternaddr(patsave%)-8 14580length%=!(startpat%+4)+8 14590PROCsavewithpathstring(leafname$,pathname$,startpat%,length%) 14600PROCsetfiletype(pathname$+"."+leafname$,&FFD) 14610NEXT 14620SYS "Hourglass_Off" 14630SYS "Wimp_CreateMenu",,-1 14640ENDPROC 14650: 14660DEFPROCloadpatdata(filename$) 14670IF q%!20=samples% THEN PROCloadsample(filename$,FNwhichsampletype):ENDPROC 14680C%=OPENIN(filename$) 14690read$="" 14700FOR byte%=1 TO 4 14710read$+=CHR$(BGET#C%) 14720NEXT 14730CLOSE #C% 14740abort%=FALSE 14750IF read$<>"PATT" THEN abort%=TRUE 14760IF filelen%<(4+8) THEN abort%=TRUE 14770IF filelen%>(8*64*4+8) THEN abort%=TRUE 14780IF (filelen% AND 3)>0 THEN abort%=TRUE 14790IF abort% THEN ERROR 17,"Not a pattern file" 14800OSCLI("LOAD "+filename$+" "+STR$~copied%) 14810copiedlen%=filelen% 14820PROCopenwindow(copypattern%,0) 14830ENDPROC 14840: 14850DEFPROCinccopypat 14860IF copypat%<patterns% THEN copypat%+=1 14870PROCseticontext(copypattern%,5,STR$(copypat%)) 14880ENDPROC 14890: 14900DEFPROCdeccopypat 14910IF copypat%>1 THEN copypat%-=1 14920PROCseticontext(copypattern%,5,STR$(copypat%)) 14930ENDPROC 14940: 14950DEFPROCcopypattern 14960IF copiedlen%=0 THEN ERROR 17,"No pattern loaded" 14970copyto%=FNpatternaddr(copypat%)-8 14980copytolen%=!(copyto%+4)+8 14990IF copytolen%<>copiedlen% THEN ERROR 17,"Pattern sizes don't match" 15000PROCmakeselected(copypattern%,2) 15010FOR byte%=0 TO copiedlen%-1 15020copyto%?byte%=copied%?byte% 15030NEXT 15040PROCmakeunselected(copypattern%,2) 15050IF NOT(mredo%) THEN PROCclosewindow(copypattern%) 15060ENDPROC 15070: 15080DEFPROCstorepattern 15090PROCmakeselected(savepattern%,7) 15100startpat%=FNpatternaddr(savepat%)-8 15110length%=!(startpat%+4)+8 15120FOR byte%=0 TO length%-1 15130copied%?byte%=startpat%?byte% 15140NEXT 15150copiedlen%=length% 15160PROCmakeunselected(savepattern%,7) 15170IF NOT(mredo%) THEN SYS "Wimp_CreateMenu",,-1 15180PROCopenwindow(copypattern%,0) 15190ENDPROC 15200: 15210DEFPROCsavehelp(savehelp$) 15220A%=0 15230blkaddr%=USR(trackercode%) 15240helpaddr%=blkaddr%!0 15250helplines%=blkaddr%!4 15260C%=OPENOUT(savehelp$) 15270SYS "Hourglass_On" 15280FOR line%=1 TO helplines% 15290SYS "Hourglass_Percentage",100*(line%/helplines%) 15300FOR char%=0 TO 75 15310BPUT#C%,helpaddr%?char% 15320NEXT 15330helpaddr%+=76 15340BPUT#C%,10 15350NEXT 15360SYS "Hourglass_Off" 15370CLOSE #C% 15380PROCsetfiletype(savehelp$,&FFF) 15390SYS "Wimp_CreateMenu",,-1 15400ENDPROC 15410: 15420DEFPROCincvolume(whichvol%) 15430vol%=!svoladdr%(whichvol%) 15440vol%+=FNbuttonval(b%) 15450IF vol%>255 THEN vol%=255 15460!svoladdr%(whichvol%)=vol% 15470PROCseticontext(setvolume%,1,STR$(vol%)) 15480ENDPROC 15490: 15500DEFPROCdecvolume(whichvol%) 15510vol%=!svoladdr%(whichvol%) 15520vol%-=FNbuttonval(b%) 15530IF vol%<0 THEN vol%=0 15540!svoladdr%(whichvol%)=vol% 15550PROCseticontext(setvolume%,1,STR$(vol%)) 15560ENDPROC 15570: 15580DEFFNbuttonval(test%) 15590IF test%=1 THEN =10 15600IF test%=2 THEN =5 15610=1 15620: 15630DEFPROCloadcocotrack(cocotrack$) 15640abort%=FALSE 15650IF tuneloaded% THEN 15660errorexit%=FNerrorbox(17,"Existing tune will be lost - are you sure?") 15670IF errorexit%=1 THEN PROCreturnmemory ELSE abort%=TRUE 15680ENDIF 15690IF abort% THEN ENDPROC 15700: 15710PROCstoptune 15720aborted%=FALSE 15730freemem%=0 15740gotit%=FNgrabmem(filelen%*2+10*1024) 15750IF gotit%=FALSE THEN PROCnotenoughtoload 15760tempload%=trackertune%+filelen%+10*1024 15770tempload%=(tempload%-4) AND &FFFFFFFC 15780OSCLI("LOAD "+cocotrack$+" "+STR$~tempload%) 15790A%=2 15800B%=tempload% 15810C%=trackertune% 15820SYS "Hourglass_On" 15830CALL trackercode% 15840SYS "Hourglass_Off" 15850newsize%=trackertune%!4+8 15860newsize%=(newsize%+32*1024-1) AND &FFFF8000 15870SYS "XWimp_SlotSize",newsize%+appsize%,-1 15880freemem%=newsize%-(trackertune%!4+8) 15890PROCjustloaded 15900ENDPROC 15910: 15920DEFPROCloadprotracker(protrack$) 15930abort%=FALSE 15940IF tuneloaded% THEN 15950errorexit%=FNerrorbox(17,"Existing tune will be lost - are you sure?") 15960IF errorexit%=1 THEN PROCreturnmemory ELSE abort%=TRUE 15970ENDIF 15980IF abort% THEN ENDPROC 15990: 16000PROCstoptune 16010freemem%=0 16020gotit%=FNgrabmem(filelen%*2+10*1024) 16030IF gotit%=FALSE THEN PROCnotenoughtoload 16040tempload%=trackertune%+filelen%+10*1024 16050tempload%=(tempload%-4) AND &FFFFFFFC 16060OSCLI("LOAD "+protrack$+" "+STR$~tempload%) 16070A%=1 16080B%=tempload% 16090C%=trackertune% 16100D%=filelen% 16110SYS "Hourglass_On" 16120CALL trackercode% 16130OSCLI("LOAD "+protrack$+" "+STR$~tempload%) 16140A%=3 16150B%=tempload% 16160C%=trackertune% 16170CALL trackercode% 16180SYS "Hourglass_Off" 16190newsize%=trackertune%!4+8 16200newsize%=(newsize%+32*1024-1) AND &FFFF8000 16210SYS "XWimp_SlotSize",newsize%+appsize%,-1 16220freemem%=newsize%-(trackertune%!4+8) 16230PROCjustloaded 16240ENDPROC 16250: 16260DEFPROCplaytune 16270IF NOT(tuneloaded%) THEN ENDPROC 16280IF playing% THEN ENDPROC 16290bytes%=trackertune%!4+8 16300A%=bytes% 16310REM rmaspace%=USR(claimRma) 16320SYS "OS_Module",6,0,0,bytes% TO ,,rmaspace% 16330IF rmaspace%=0 THEN ERROR 17,"Insufficient Memory Available" 16340PROCsetupvoices 16350PROCrewritestereo 16360rmaclaimed%=bytes% 16370A%=trackertune% 16380B%=rmaspace% 16390C%=bytes% 16400CALL copybytes 16410SYS "Tracker_MemoryLoad",rmaspace%,trackertune%!4+8 16420SYS "Tracker_Play" 16430playing%=TRUE 16440PROCpanelstatus 16450ENDPROC 16460: 16470DEFPROCstoptune 16480IF NOT(playing%) THEN ENDPROC 16490SYS "Tracker_Stop" 16500SYS "XOS_Module",7,0,rmaspace% 16510SYS "XOS_ChangeDynamicArea",1,-rmaclaimed% 16520playing%=FALSE 16530oldpos%=-1:oldevent%=-1 16540PROCpanelstatus 16550ENDPROC 16560: 16570DEFPROCshade(window%,icon%) 16580q2%!0=window% 16590q2%!4=icon% 16600q2%!8=2^22 16610q2%!12=2^22 16620SYS "Wimp_SetIconState",,q2% 16630ENDPROC 16640: 16650DEFPROCunshade(window%,icon%) 16660q2%!0=window% 16670q2%!4=icon% 16680q2%!8=0 16690q2%!12=2^22 16700SYS "Wimp_SetIconState",,q2% 16710ENDPROC 16720: 16730DEFPROCpanelstatus 16740IF playing% THEN 16750PROCshade(player%,16) 16760PROCunshade(player%,17) 16770ELSE 16780PROCshade(player%,17) 16790PROCunshade(player%,16) 16800PROCseticontext(player%,10,"-") 16810PROCseticontext(player%,18,"") 16820ENDIF 16830ENDPROC 16840: 16850DEFPROCshowmusicpos 16860IF NOT(playing%) THEN ENDPROC 16870muscounter%=(muscounter%+1) MOD update% 16880IF muscounter%=0 THEN 16890SYS "Tracker_ReadPos" TO pos%,event%,max% 16900IF pos%<>oldpos% THEN 16910PROCseticontext(player%,10,STR$(pos%+1)+":"+STR$(max%+1)) 16920ENDIF 16930IF event%<>oldevent% THEN PROCseticontext(player%,18,STR$(event%)) 16940oldpos%=pos%:oldevent%=event% 16950ENDIF 16960ENDPROC 16970: 16980DEFPROCrewind 16990IF NOT(playing%) THEN ENDPROC 17000SYS "Tracker_ReadPos" TO pos%,event% 17010IF pos%>0 THEN SYS "Tracker_SetPos",pos%-1,0 17020ENDPROC 17030: 17040DEFPROCfastforward 17050IF NOT(playing%) THEN ENDPROC 17060SYS "Tracker_ReadPos" TO pos%,event%,max% 17070IF pos%<max% THEN SYS "Tracker_SetPos",pos%+1,0 17080ENDPROC 17090: 17100DEFPROCinitialisevoices 17110FOR v%=1 TO voices% 17120PROCmakeselected(player%,v%) 17130PROCunshade(player%,v%) 17140SYS "Tracker_RestoreChannel",v% 17150NEXT 17160IF voices%<8 THEN 17170FOR v%=voices%+1 TO 8 17180PROCmakeunselected(player%,v%) 17190PROCshade(player%,v%) 17200NEXT 17210ENDIF 17220ENDPROC 17230: 17240DEFPROCsetupvoices 17250FOR v%=1 TO voices% 17260IF FNisitselected(player%,v%) THEN 17270SYS "Tracker_RestoreChannel",v% 17280ELSE 17290SYS "Tracker_MuteChannel",v% 17300ENDIF 17310NEXT 17320ENDPROC 17330: 17340DEFPROCtogglevoice(v%) 17350IF NOT(tuneloaded%) THEN ENDPROC 17360IF FNisitselected(player%,v%) THEN 17370PROCmakeunselected(player%,v%) 17380SYS "Tracker_MuteChannel",v% 17390ELSE 17400PROCmakeselected(player%,v%) 17410SYS "Tracker_RestoreChannel",v% 17420ENDIF 17430ENDPROC 17440: 17450DEFPROCalterstereo(icon%) 17460IF icon%<0 OR icon%>=8*8 THEN ENDPROC 17470IF (icon% MOD 8)=0 THEN ENDPROC 17480IF b%=1 THEN PROCmakeselected(stereo%,icon%) 17490IF icon%>=voices%*8 THEN ENDPROC 17500v%=(icon% DIV 8)+1 17510steraddr%?(v%-1)=(icon% MOD 8) 17520IF playing% THEN SYS "Sound_Stereo",v%,stereovals%(icon% MOD 8) 17530ENDPROC 17540: 17550DEFPROCincpatlength 17560IF patlen%<64 THEN patlen%+=1 17570PROCseticontext(settings%,5,STR$(patlen%)) 17580ENDPROC 17590: 17600DEFPROCdecpatlength 17610IF patlen%>1 THEN patlen%-=1 17620PROCseticontext(settings%,5,STR$(patlen%)) 17630ENDPROC 17640: 17650DEFFNwhichsampletype 17660IF FNisitselected(settings%,6) THEN =3 17670IF FNisitselected(settings%,7) THEN =4 17680=5 17690: 17700DEFFNpad(str$,len%) 17710=LEFT$(str$+STRING$(len%," "),len%) 17720: 17730DEFFNpadright(str$,len%) 17740=RIGHT$(STRING$(len%," ")+str$,len%) 17750: 17760DEFFNbase36(num%) 17770IF num%=0 THEN ="-" 17780IF num%<11 THEN =STR$(num%-1) 17790=CHR$(num%+54) 17800: 17810DEFPROCsavedump(dumpname$) 17820PROCgetnames 17830SYS "Hourglass_On" 17840A%=OPENIN(dumpname$) 17850IF A%>0 THEN CLOSE #A% 17860IF A%>0 THEN 17870C%=OPENUP(dumpname$) 17880PTR#C%=EXT#C% 17890ELSE 17900C%=OPENOUT(dumpname$) 17910ENDIF 17920PROCsetfiletype(dumpname$,&FFF) 17930: 17940IF FNisitselected(savedump%,4) THEN 17950BPUT#C%,"Tune Name :"+mname$ 17960BPUT#C%,"Author :"+aname$ 17970BPUT#C%,"Voices :"+STR$(voices%) 17980BPUT#C%,"Patterns :"+STR$(patterns%) 17990BPUT#C%,"Length :"+STR$(seqlen%) 18000BPUT#C%,"Size :"+STR$(INT((trackertune%!4+8+512) DIV 1024))+"K ("+STR$(trackertune%!4+8)+" bytes)" 18010BPUT#C%,"" 18020ENDIF 18030: 18040IF FNisitselected(savedump%,5) THEN 18050BPUT #C%,"Sequence:" 18060seqpos%=0 18070FOR row%=1 TO (seqlen%+15) DIV 16 18080row$="" 18090FOR col%=1 TO 16 18100IF seqpos%>=seqlen% THEN add$=" " ELSE add$=RIGHT$(" "+STR$(seqaddr%?seqpos%+1),4) 18110row$+=add$ 18120seqpos%+=1 18130NEXT 18140BPUT#C%,row$ 18150NEXT 18160BPUT#C%,"" 18170ENDIF 18180: 18190IF FNisitselected(savedump%,6) THEN 18200BPUT #C%,"Instruments:" 18210FOR sample%=1 TO 36 18220IF slen%(sample%)>0 THEN 18230sample$="Sample "+FNbase36(sample%)+" "+FNpad(sample$(sample%),20) 18240sample$+=" Length:"+FNpad(STR$(slen%(sample%)),5) 18250BPUT#C%,sample$ 18260ENDIF 18270NEXT 18280BPUT#C%,"" 18290ENDIF 18300: 18310IF FNisitselected(savedump%,10) THEN 18320squashed%=FALSE 18330BPUT#C%,"Patterns:" 18340BPUT#C%,"" 18350FOR pattern%=1 TO patterns% 18360SYS "Hourglass_Percentage",100*(pattern%/patterns%) 18370addr%=pattaddr%(pattern%) 18380BPUT#C%,"Pattern:"+FNpad(STR$(pattern%),2)+" (length:"+STR$(pattlen%?(pattern%-1))+")" 18390FOR row%=1 TO pattlen%?(pattern%-1) 18400row$="" 18410FOR voice%=1 TO voices% 18420event%=!addr% 18430SYS "Tracker_DecodeNote",event% TO ,note%,inst%,comm%,val% 18440event$=MID$(notes$,3*note%+1,3)+" "+FNbase36(inst%)+" "+FNbase36(comm%+1) 18450event$+=RIGHT$("00"+STR$~val%,2) 18460IF voice%>1 THEN row$+=" " 18470row$+=event$ 18480addr%+=4 18490NEXT 18500BPUT#C%,row$ 18510NEXT 18520BPUT#C%,"" 18530NEXT 18540ENDIF 18550: 18560IF FNisitselected(savedump%,12) THEN 18570BPUT#C%,"Used in tune:" 18580BPUT#C%,"" 18590A%=6 18600B%=trackertune% 18610used%=USR(trackercode%) 18620A%=7 18630comm%=USR(trackercode%) 18640FOR row%=1 TO 36 18650row$=MID$(notes$,3*row%+1,3) 18660row$+=" "+FNpadright(STR$(used%!(row%*4-4)),5)+" " 18670IF slen%(row%)>0 THEN row$+="*" ELSE row$+=" " 18680samp$=sample$(row%) 18690row$+=FNbase36(row%)+" "+FNpad(samp$,21) 18700row$+=FNpadright(STR$(used%!(row%*4-4+36*4)),5)+" " 18710row$+=FNbase36(row%)+" " 18720row$+=FNpad(FNarrows(FNstringwithlimit(comm%+row%*14-14,14)),15) 18730row$+=FNpadright(STR$(used%!(row%*4-4+72*4)),5) 18740BPUT#C%,row$ 18750NEXT 18760BPUT#C%,"" 18770ENDIF 18780: 18790SYS "Hourglass_Off" 18800CLOSE #C% 18810SYS "Wimp_CreateMenu",,-1 18820ENDPROC 18830: 18840DEFFNarrows(str$) 18850IF str$="" THEN ="" 18860LOCAL new$,b%,ch% 18870new$="" 18880FOR ch%=1 TO LEN(str$) 18890b%=ASC(MID$(str$,ch%,1)) 18900IF b%>126 THEN b%+=9 18910new$+=CHR$(b%) 18920NEXT 18930=new$ 18940: 18950DEFPROCminimise 18960tunesize%=trackertune%!4+8 18970tunesize%=(tunesize%+32*1024-1) 18980tunesize%=32*1024*(tunesize% DIV (32*1024)) 18990SYS "XWimp_SlotSize",tunesize%+appsize%,-1 19000SYS "XWimp_SlotSize",-1,-1 TO tunesize% 19010freemem%=(tunesize%-appsize%)-(trackertune%!4+8) 19020ENDPROC 19030: 19040DEFPROCdecdelpat 19050IF delpat%>1 THEN delpat%-=1 19060PROCseticontext(amendtrack%,2,STR$(delpat%)) 19070ENDPROC 19080: 19090DEFPROCincdelpat 19100IF delpat%<patterns% THEN delpat%+=1 19110PROCseticontext(amendtrack%,2,STR$(delpat%)) 19120ENDPROC 19130: 19140DEFPROCdecdelvoice 19150IF delvoice%>1 THEN delvoice%-=1 19160PROCseticontext(amendtrack%,10,STR$(delvoice%)) 19170ENDPROC 19180: 19190DEFPROCincdelvoice 19200IF delvoice%<voices% THEN delvoice%+=1 19210PROCseticontext(amendtrack%,10,STR$(delvoice%)) 19220ENDPROC 19230: 19240DEFPROCdeletepattern 19250IF patterns%=1 THEN ERROR 17,"Only one pattern!" 19260flag%=FALSE 19270FOR pos%=0 TO seqlen%-1 19280IF seqaddr%?pos%=(delpat%-1) THEN flag%=TRUE 19290NEXT 19300IF flag% THEN ERROR 17,"Pattern occurs in sequence" 19310PROCmakeselected(amendtrack%,5) 19320at%=pattaddr%(delpat%)-8 19330todelete%=at%!4+8 19340flag%=FNdeletebytes(at%,todelete%) 19350FOR pos%=0 TO seqlen%-1 19360IF seqaddr%?pos%>=delpat% THEN seqaddr%?pos%-=1 19370NEXT 19380FOR pos%=(delpat%-1) TO (patterns%-2) 19390pattlen%?(pos%)=pattlen%?(pos%+1) 19400NEXT 19410!pnumaddr%-=1 19420PROCgetmusicinfo 19430PROCminimise 19440PROCtuneinfo 19450IF delpat%>patterns% THEN delpat%=patterns% 19460PROCseticontext(amendtrack%,2,STR$(delpat%)) 19470PROCmakeunselected(amendtrack%,5) 19480ENDPROC 19490: 19500DEFPROCamendvoice 19510IF FNisitselected(amendtrack%,14) THEN PROCdeletevoice(delvoice%) ELSE PROCinsertvoice(delvoice%) 19520IF delvoice%>voices% THEN delvoice%=voices% 19530PROCseticontext(amendtrack%,10,STR$(delvoice%)) 19540ENDPROC 19550: 19560DEFFNtotalpatlength 19570total%=0 19580FOR pattern%=1 TO patterns% 19590total%+=pattlen%?(pattern%-1) 19600NEXT 19610=total% 19620: 19630DEFPROCdeletevoice(v%) 19640IF voices%=1 THEN ERROR 17,"Only one voice present!" 19650PROCmakeselected(amendtrack%,11) 19660SYS "Hourglass_On" 19670FOR pattern%=1 TO patterns% 19680SYS "Hourglass_Percentage",((pattern%-1)/patterns%)*100 19690rows%=pattlen%?(pattern%-1) 19700start%=pattaddr%(pattern%) 19710p1%=start%:p2%=p1% 19720FOR row%=1 TO rows% 19730FOR voice%=1 TO voices% 19740IF voice%<>v% THEN 19750!p1%=!p2% 19760p1%+=4 19770ENDIF 19780p2%+=4 19790NEXT 19800NEXT 19810!(start%-4)=!(start%-4)-rows%*4 19820todelete%=rows%*4 19830flag%=FNdeletebytes(p1%,todelete%) 19840PROCreadpatterns 19850NEXT 19860!mvoxaddr%-=1 19870PROCminimise 19880PROCmakeunselected(amendtrack%,11) 19890SYS "Hourglass_Off" 19900PROCgetmusicinfo 19910PROCtuneinfo 19920PROCinitialisevoices 19930justloaded%=TRUE 19940ENDPROC 19950: 19960DEFPROCinsertvoice(v%) 19970IF voices%=8 THEN ERROR 17,"Already 8 voices!" 19980grab%=FNtotalpatlength*4 19990IF NOT(FNgrabmem(grab%)) THEN ERROR 17,"Insufficient Memory Available" 20000freemem%+=grab% 20010PROCmakeselected(amendtrack%,11) 20020SYS "Hourglass_On" 20030FOR pattern%=1 TO patterns% 20040SYS "Hourglass_Percentage",((pattern%-1)/patterns%)*100 20050rows%=pattlen%?(pattern%-1) 20060start%=pattaddr%(pattern%) 20070at%=start%+rows%*voices%*4 20080toinsert%=rows%*4 20090flag%=FNinsertbytes(at%,toinsert%) 20100FOR row%=rows% TO 1 STEP -1 20110p1%=start%+(row%-1)*voices%*4 20120p2%=start%+(row%-1)*(voices%+1)*4 20130FOR voice%=1 TO voices% 20140event%(voice%)=p1%!((voice%-1)*4) 20150NEXT 20160FOR voice%=1 TO voices% 20170!p2%=event%(voice%) 20180IF voice%=v% THEN 20190p2%+=4 20200!p2%=0 20210ENDIF 20220p2%+=4 20230NEXT 20240NEXT 20250!(start%-4)=!(start%-4)+(rows%*4) 20260PROCreadpatterns 20270NEXT 20280!mvoxaddr%+=1 20290PROCminimise 20300PROCmakeunselected(amendtrack%,11) 20310SYS "Hourglass_Off" 20320PROCgetmusicinfo 20330PROCtuneinfo 20340PROCinitialisevoices 20350justloaded%=TRUE 20360ENDPROC
� >!RunImage : menuspace%=4000 (+sprsize%=�filelen("<Obey$Dir>.Sprites") 2.codesize%=�filelen("<Obey$Dir>.TrackCode") <: F� q% 256,q2% 128 P� code% 160 Z� temp% 300 d� block% 1000 n� spname% 20 x� menuaddr% menuspace% �� copied% 8*64*4+8 �� mainsprites% sprsize%+16 �� trackercode% codesize% �: �tuneloaded%=� �saveheader%=� �trackertune%=� �justloaded%=� �delvoice%=1 � delpat%=1 �savepat%=1 �copypat%=1 �copiedlen%=0 patlen%=64 update%=4 muscounter%=0 "oldpos%=-1:oldevent%=-1 ,freemem%=0 6playing%=� @: J� sampaddr%(36),sample$(36) T� slen%(36),svoladdr%(36) ^� pattaddr%(64) h� onoff%(8),event%(8) r� stereovals%(7) |,stereovals%()=0,-126,-70,-40,0,40,70,127 �|notes$="---C-1C#1D-1D#1E-1F-1F#1G-1G#1A-1A#1B-1C-2C#2D-2D#2E-2F-2F#2G-2G#2A-2A#2B-2C-3C#3D-3D#3E-3F-3F#3G-3G#3A-3A#3B-3" �sample$()=�20," ") �defvoices%=4 �: �#wbcol=0:mbcol=2:wfcol=7:tfcol=7 �: �� � �error �: �$q%="TASK" �prefix$="<APTracker$Dir>" �>ș "Wimp_Initialise",200,!q%,"AP Tracker" � version%,task% �=�loadsprites(prefix$+".Sprites",mainsprites%,sprsize%+16) �;�loadwithpathvariable(prefix$,"TrackCode",trackercode%) �loadwindows �setstereoESGs �assemble &!iconh%=�iconbar("!aptracker") 0(ș "XWimp_SlotSize",-1,-1 � appsize% : �main D �shutdown N� X: b��shutdown labort%=� v� tuneloaded% � �Aerrorexit%=�errorbox(17,"Data will be lost - are you sure ?") �� errorexit%=2 � abort%=� �� �� abort% � � � �stoptune �$q%="TASK" �!ș "Wimp_CloseDown",task%,!q% �� �: �ݤiconbar(sprite$) �$spname%=sprite$ �block%!0=-1 �block%!4=0 block%!8=0 block%!12=80 block%!16=64 block%!20=&2102 *block%!24=spname% 4block%!28=mainsprites% >block%!32=�($spname%) H(ș "Wimp_CreateIcon",,block% � icon% R =icon% \: f$��loadsprites(file$,addr%,size%) p!addr%=size% z addr%!4=0 �addr%!8=16 �addr%!12=0 �'ș "OS_SpriteOp",256+10,addr%,file$ �� �: ���loadwindows � � T% 5000 �maxws%=5000 �� indir% maxws% �ind%=indir% �spr%=mainsprites% �0ș "Wimp_OpenTemplate",,prefix$+".Templates" �!info%=�getwindow("info",spr%) )savetune%=�getwindow("savetune",spr%) )tuneinfo%=�getwindow("tuneinfo",spr%) 'samples%=�getwindow("samples",spr%) $-savesample%=�getwindow("savesample",spr%) .)newtrack%=�getwindow("newtrack",spr%) 8%stereo%=�getwindow("stereo",spr%) B/savepattern%=�getwindow("savepattern",spr%) L/savepatterns%=�getwindow("savepattns",spr%) V/copypattern%=�getwindow("copypattern",spr%) `)savehelp%=�getwindow("savehelp",spr%) j+setvolume%=�getwindow("setvolume",spr%) t%player%=�getwindow("player",spr%) ~)settings%=�getwindow("settings",spr%) �)savedump%=�getwindow("savedump",spr%) �-amendtrack%=�getwindow("amendtrack",spr%) �ș "Wimp_CloseTemplate" �5�seticontext(info%,11,�icontext(info%,11)+" #1") �� �: �ݤgetwindow(wtitle$,spr%) �Iș "Wimp_LoadTemplate",,T%,ind%,indir%+maxws%-1,-1,wtitle$,0 � ,,ind% �T%!64=spr% �(ș "Wimp_CreateWindow",,T% � handle% �=handle% �: ��main quit%=� � !ș "Wimp_Poll",0,q% � reason% (Ȏ reason% � 2� 0:�showmusicpos <� 2:�openwindow(q%!0,q%) F� 3:�closewindow(q%!0) P/� 6:�checkmouse(q%!0,q%!4,q%!8,q%!12,q%!16) Z� 7:�dragfile d"� 8:ș "Wimp_ProcessKey",q%!24 n� 9:�menuselect(q%) x� 17,18:�message �� �� quit% �� �: �)��checkmouse(mx%,my%,b%,where%,icon%) � � b%=1 � mredo%=� � mredo%=� �Ȏ where% � � � -2: �Ȏ b% � �� 1:�edittracker �� 4: �� tuneloaded% � ��panelstatus �openwindow(player%,0) � � 2: " �mainmenu ,'�openmenu(101,mainmenu%,mx%-86,376) 6� @� savetune%: J,� icon%=0 � �initiatedrag(savetune%,0,1) T� icon%=4 � �quicksave ^<� savesample%:� icon%=0 � �initiatedrag(savesample%,0,2) h8� savehelp%:� icon%=0 � �initiatedrag(savehelp%,0,4) r@� savepatterns%:� icon%=0 � �initiatedrag(savepatterns%,0,5) |� savepattern%: �Ȏ icon% � �'� 0:�initiatedrag(savepattern%,0,3) �� 1:�incsavepat �� 4:�decsavepat �� 7:�storepattern �� �'� tuneinfo%:� icon%=6 � �newpattern �� samples%: �� b%=2 � ��makesamplemenu(icon% � 36) �F� slen%((icon% � 36)+1)>0 � �openmenu(106,mainmenu%,mx%-86,my%+24) �� �� newtrack%: Ȏ icon% � � 2:�createtune(defvoices%) � 3:�incdefvoices &� 4:�decdefvoices 0� :� copypattern%: DȎ icon% � N� 3:�inccopypat X� 4:�deccopypat b� 2:�copypattern l� v� setvolume%: �Ȏ icon% � �� 2:�incvolume(sampleno%) �� 3:�decvolume(sampleno%) �� �� player%: �:� icon%>0 � icon%<(!mvoxaddr%+1) � �togglevoice(icon%) �Ȏ icon% � �� 16:�playtune �� 17:�stoptune �� 21:�rewind �� 22:�fastforward �� �� settings%: Ȏ icon% � � 3:�incpatlength � 4:�decpatlength *� 6,7,8:�makeselected(settings%,icon%) *� 48� savedump%:� icon%=0 � �initiatedrag(savedump%,0,6) >� amendtrack%: HȎ icon% � R� 3:�incdelpat \� 4:�decdelpat f� 5:�deletepattern p� 8:�incdelvoice z� 9:�decdelvoice �� 11:�amendvoice �,� 14,15:�makeselected(amendtrack%,icon%) �� �!� stereo%:�alterstereo(icon%) �� �� �: ���openwindow(handle%,pos%) �� b% �� pos%=0 � �b%=block%:block%!0=handle% � ș "Wimp_GetWindowState",,b% �� b%=pos% � block%!28=-1 $ș "Wimp_OpenWindow",,b% .� 8: B��closewindow(handle%) L� handle%=tuneinfo% � V!mname$=�icontext(tuneinfo%,7) `!aname$=�icontext(tuneinfo%,8) j� tblock%!0=handle% ~!ș "Wimp_CloseWindow",,block% �� �: �(��initiatedrag(window%,icon%,myref%) �savehandle%=window% �globalref%=myref% �!q%=window% � ș "Wimp_GetWindowState",,q% �z%=q%!16-q%!8 �x%=q%!4:y%=q%!8:q%!4=icon% �ș "Wimp_GetIconState",,q% �q%!8+=x%:q%!12+=y%+z% �q%!16+=x%:q%!20+=y%+z% q%!24=0:q%!28=0 q%!32=1279:q%!36=1023 !q%=0:q%!4=5 ș "Wimp_DragBox",,q% (� 2: < ��message Fyourref%=q%!8 PȎ q%!16 � Z� 0:quit%=� d� 2:�savefile n� 3:�loadfile x� �� �: ���dragfile � !q%=0 � ș "Wimp_GetPointerInfo",,q% �q%!32=4 � q%!28=!q% �q%!24=q%!16 �q%!20=q%!12 �q%!16=1 �q%!12=0 � q%!36=100 �q%!40=&C00 $(q%+44)=�(0) !q%=60 +ș "Wimp_SendMessage",18,q%,q%!20,q%!24 "� ,: 6ݤstringfrommemory(addr%) @� byte%,temp$,out$ Jbyte%=0 Ttemp$="" ^out$="" h� rtemp$=�(addr%?byte%) |#� �(temp$)>31 � out$=out$+temp$ �byte%+=1 �� �(temp$)=0 � =out$ �: �$ݤstringwithlimit(addr%,maxlen%) �� byte%,temp$,out$ �byte%=0 �temp$="" �out$="" �� �temp$=�(addr%?byte%) �#� �(temp$)>31 � out$=out$+temp$ �byte%+=1 !� �(temp$)=0 � byte%>=maxlen% =out$ : &ݤicontext(wh%,iconnumber%) 0!temp%=wh% :temp%!4=iconnumber% D!ș "Wimp_GetIconState",,temp% N it$="" Xbyte%=0 bȕ ?((temp%!28)+byte%)>31 l"it$=it$+�(?((temp%!28)+byte%)) vbyte%+=1 �� �=it$ �: �ݤiconval(wh%,iconnumber%) �"=�(�icontext(wh%,iconnumber%)) �: ���error �ș "Hourglass_Off" �� #0 �ș "Wimp_DragBox",,-1 �ș "Wimp_CreateMenu",,-1 � !block%=� �$(block%+4)=�$+�(0) /ș "Wimp_ReportError",block%,1,"AP Tracker" �main � : *(��seticontext(wh%,iconnumber%,text$) 4!temp%=wh% >temp%!4=iconnumber% H!ș "Wimp_GetIconState",,temp% R $temp%!28=�text$,temp%!36-1) \ temp%!8=0 ftemp%!12=0 p!ș "Wimp_SetIconState",,temp% z� �: ���makesamplemenu(samp%) �sampleno%=samp%+1 �menuptr%=menuaddr% �"menend%=menuaddr%+menuspace%-1 �� i$,m$ �inst%=samp%+1 �� slen%(inst%)=0 � � �%mtitle$=�leafname(sample$(inst%)) �#� mtitle$="" � mtitle$="Sample" �mtitle$=�mtitle$,12) �'�seticontext(savesample%,3,mtitle$) �\mainmenu%=�makemen("|winssSave,|winsvVolume,Delete,"+�tic(saveheader%)+"Header",mtitle$) 5� menuptr%>menend% � � 17,"Not enough menu space" 7�seticontext(setvolume%,1,�(!svoladdr%(sampleno%))) � $: .��mainmenu 8menuptr%=menuaddr% B"menend%=menuaddr%+menuspace%-1 L� i$,m$ V�savemenu%=�makemen("|winsa"+�lit(tuneloaded%)+"Tune,|winsp"+�lit(tuneloaded%)+"Pattern,|winap"+�lit(tuneloaded%)+"Patterns,|winsd"+�lit(tuneloaded%)+"Text Dump,|winshHelp","Save") `?tunemenu%=�makemen("Info,Samples,Stereo,Copy,Amend","Tune") j�mainmenu%=�makemen("|wininInfo,|winsmSave,Settings,Create,"+�lit(tuneloaded%)+"Clear,|wintn"+�lit(tuneloaded%)+"Tune,Quit","AP Tracker") t5� menuptr%>menend% � � 17,"Not enough menu space" ~+�seticontext(newtrack%,5,�(defvoices%)) �,�seticontext(savepattern%,6,�(savepat%)) �� �: �ݤlit(test%) �!� test% � ="|lit1" � ="|lit0" �: �ݤtic(test%) �!� test% � ="|tic1" � ="|tic0" �: ���menuitem(text$) �$� menuflags%,iconflags%,submenu% � ii%=� submenu%=-1 � text$="" � � menuflags%=0 iconflags%=&07000021 (ȕ �text$,1)="|" 2Ȏ �text$,2,3) � <� "lit": F*iconflags%+=(1<<22)*(1-�(�text$,5,1))) Ptext$=�text$,6) Z� "tic": dmenuflags%+=�(�text$,5,1)) ntext$=�text$,6) x� "win": �Ȏ �text$,5,2) � �� "in":submenu%=info% �� "tn":submenu%=tunemenu% �� "nt":submenu%=newtrack% �� "sa":submenu%=savetune% �� "sm":submenu%=savemenu% � � "sp":submenu%=savepattern% �!� "ap":submenu%=savepatterns% �� "sh":submenu%=savehelp% �� "ss":submenu%=savesample% �� "sv":submenu%=setvolume% �� "sd":submenu%=savedump% �� text$=�text$,7) � � ")� �(text$)>menumax% menumax%=�(text$) ,menuptr%!0=menuflags% 6menuptr%!4=submenu% @menuptr%!8=iconflags% J� �(text$)<12 � T$(menuptr%+12)=text$ ^� hmenend%-=(�(text$)+1) r(menuptr%!8=(menuptr%!8) � %100000000 |menuptr%!12=menend% �menuptr%!16=-1 �menuptr%!20=�(text$) �$menend%=text$ �� �menuptr%+=24 �� �: �ݤpar(sep$) �%i1%=i%+1:i%=�menu$+sep$,sep$,i1%) �=�menu$,i1%,i%-i1%) �: �ݤmakemen(menu$,menutitle$) �� menumax%,wasptr% wasptr%=menuptr% menumax%=10 i%=0 &menuptr%!20=40 0$menuptr%=menutitle$ :menuptr%?12=tfcol Dmenuptr%?13=mbcol Nmenuptr%?14=wfcol Xmenuptr%?15=wbcol bmaxaddr%=menuptr%+16 lmenuptr%!24=0 vmenuptr%+=28 �� �item$=�par(",") ��menuitem(item$) �� item$="" �%menuptr%!-24=(menuptr%!-24) � &80 �!maxaddr%=menumax%*16+32 �=wasptr% �: ���openmenu(our%,m%,x%,y%) �menuhandle%=our% � menux%=x% � menuy%=y% �"ș "Wimp_CreateMenu",,m%,x%,y% � : ��menuselect(menus%) � redo% *!ș "Wimp_GetPointerInfo",,q2% 4redo%=(((q2%!8) � 1)>0) >Ȏ menuhandle% � H � 101: RȎ !menus% � \� 2: f(�seticontext(settings%,5,�(patlen%)) p�openwindow(settings%,0) z � 3:�openwindow(newtrack%,0) �� 4: ��cleardata �� 5: �Ȏ menus%!4 � �4� 0:�getnames:�tuneinfo:�openwindow(tuneinfo%,0) �� 1:�samples �� 2:�stereo �#� 3:�openwindow(copypattern%,0) �� 4: �*�seticontext(amendtrack%,2,�(delpat%)) �-�seticontext(amendtrack%,10,�(delvoice%)) ��openwindow(amendtrack%,0) �� � 6:�shutdown:redo%=� � � redo% �mainmenu $ � 106: .Ȏ !menus% � 8� 2: B�deletesample(sampleno%) L� 3: Vsaveheader%=�(saveheader%) ` �makesamplemenu(sampleno%-1) j� t� ~<� redo% � �openmenu(menuhandle%,mainmenu%,menux%,menuy%) �� �: �&��seticontype(window%,icon%,type%) �q2%!0=window% �q2%!4=icon% �ș "Wimp_GetIconState",,q2% �iconblock%=q2%+8 �iconflags%=iconblock%!16 �eorword%=type%<<12 �clearword%=15<<12 �q2%!0=window% �q2%!4=icon% q2%!8=eorword% q2%!12=clearword% ș "Wimp_SetIconState",,q2% � (: 2��writeable(window%,icon%) <"�seticontype(window%,icon%,15) F� P: Z ��unwriteable(window%,icon%) d!�seticontype(window%,icon%,0) n� x: �!��makeselected(window%,icon%) �q2%!0=window% �q2%!4=icon% �q2%!8=2^21 �q2%!12=2^21 �ș "Wimp_SetIconState",,q2% �� �: �#��makeunselected(window%,icon%) �q2%!0=window% �q2%!4=icon% �q2%!8=0 �q2%!12=2^21 ș "Wimp_SetIconState",,q2% � : "!ݤisitselected(window%,icon%) ,q2%!0=window% 6q2%!4=icon% @ș "Wimp_GetIconState",,q2% Jiconblock%=q2%+8 Ticonflags%=iconblock%!16 ^%� (iconflags% � 2^21)=0 � =0 � =1 h: r��movecaret(window%,icon%) |*p%=(�(�icontext(window%,icon%))+1) � 2 �4ș "Wimp_SetCaretPosition",window%,icon%,,,-1,p% �� �: �ݤfilelen(file$) �C%=�(file$) � len%=�#C% � � #C% � =len% �: ���savefile �&pathname$=�stringfrommemory(q%+44) �&leafname$=�icontext(savehandle%,3) �� leafname$="" � � !fullname$=pathname$+leafname$ Ȏ globalref% � � 1:�savetune &� 2:�savesample(sampleno%) 0� 3:�savepattern(savepat%) :� 4:�savehelp(fullname$) D � 5:�savepatterns(leafname$) N� 6:�savedump(fullname$) X� b� l: v5��loadwithpathvariable(variable$,filename$,addr%) �2�("LOAD "+variable$+"."+filename$+" "+�~addr%) �� �: �6��savewithpathstring(filename$,path$,addr%,bytes%) �path2$=path$+"."+filename$ �0ș "OS_File",0,path2$,0,0,addr%,addr%+bytes% �� �: �ݤdigit(d$) �!� d$>="0" � d$<="9" � =� � =� �: ���settitle(block%,title$) �addr%=block%+72 len%=�(title$) c%=0 ȕ len%>0 addr%?c%=�(�title$,c%+1,1)) * c%+=1 4len%-=1 >� Haddr%?c%=0 R� \: fݤreadstring p� out$,byte% zabort$=�(0) �� �#handle% � =abort$ �out$="" �� �byte%=�#handle% �2� byte%>31 � �(�#handle%) � out$=out$+�(byte%) �� byte%<32 � �#handle% � =out$ �: ���writestring(write$) �� char%=1 � �(write$) �!�#handle%,�(�write$,char%,1)) �� ��#handle%,13 � : "��setfiletype(fname$,newtype%) $#ș "OS_File",18,fname$,newtype% .� 8: B!��writestringtofile(ch%,str$) L� str$="" � � V� l%=1 � �(str$) `�#ch%,�(�str$,l%,1)) j� t� ~: ���loadfile �&filename$=�stringfrommemory(q%+44) �loaded$=filename$ � filelen%=�filelen(filename$) �Ȏ q%!40 � �$� &001:�loadtracker(filename$,2) �$� &364:�loadcocotrack(filename$) �$� &365:�loadcocotrack(filename$) �%� &701:�loadprotracker(filename$) �$� &CB6:�loadtracker(filename$,0) �#� &CB5:�loadsample(filename$,0) �$� &CC5:�loadtracker(filename$,2) #� &D3C:�loadsample(filename$,2) #� &DF9:�loadsample(filename$,6) #� &ED0:�loadsample(filename$,1) !� &FFA:�loadmodule(filename$) ("� &FFD:�loadpatdata(filename$) 2� <� F: P��loadmodule(module$) ZC%=�(module$) d�#C%=&88 n a$="" x� byte%=1 � 8 �a$+=�(�#C%) �� � � #C% �E� a$="SampConv" � �loadsample(module$,8) � �loadsample(module$,7) �� �: �$��loadtracker(tracker$,modtype%) �modtype2%=modtype% �� modtype%=0 � �C%=�(tracker$) �read$="" �� char%=1 � 4 �read$+=�(�#C%) � � #C% � ": ,abort%=� 6� tuneloaded% � @Ierrorexit%=�errorbox(17,"Existing tune will be lost - are you sure?") J-� errorexit%=1 � �returnmemory � abort%=� T� ^� abort% � � h: r� modtype%=0 � |D� read$="FTMN" � � 17,"Sorry, can't load 'Face the Music' files" �<� read$="MED"+�(4) � � 17,"Sorry, can't load MED3 files" �,� read$="MUSX" � modtype%=1 � modtype%=2 �� read$="OKTA" � modtype%=3 �� � �stoptune �aborted%=� �Ȏ modtype% � �� 2: �� modtype2%=0 � �:errorexit%=�errorbox(17,"Convert from Sound Tracker?") � � errorexit%<>1 � aborted%=� �� �: � �(aborted%) � freemem%=0 'gotit%=�grabmem(filelen%*2+10*1024) &!� gotit%=� � �notenoughtoload 0+tempload%=trackertune%+filelen%+10*1024 :'tempload%=(tempload%-4) � &FFFFFFFC D'�("LOAD "+tracker$+" "+�~tempload%) NA%=1 XB%=tempload% bC%=trackertune% lD%=filelen% vș "Hourglass_On" �� trackercode% �ș "Hourglass_Off" � �minimise �� �: �� 1: �freemem%=0 �gotit%=�grabmem(filelen%) �!� gotit%=� � �notenoughtoload �*�("LOAD "+tracker$+" "+�~trackertune%) �: �� 3: �6errorexit%=�errorbox(17,"Convert from Octalyser?") � errorexit%<>1 � aborted%=� : � �(aborted%) � freemem%=0 *'gotit%=�grabmem(filelen%*2+10*1024) 4!� gotit%=� � �notenoughtoload >+tempload%=trackertune%+filelen%+10*1024 H'tempload%=(tempload%-4) � &FFFFFFFC R'�("LOAD "+tracker$+" "+�~tempload%) \A%=8 fB%=tempload% pC%=trackertune% zD%=filelen% �ș "Hourglass_On" �� trackercode% �ș "Hourglass_Off" � �minimise �� �: �� �: �� �(aborted%) � �justloaded �� aborted% � �closeall �� �: ���justloaded tuneloaded%=� playing%=� oldpos%=-1:oldevent%=-1 $%�seticontext(savetune%,3,loaded$) .�getmusicinfo 8 �tuneinfo B�updatestereo L�writesamplenames V�initialisevoices `justloaded%=� jdelvoice%=1 t delpat%=1 ~savepat%=1 �copypat%=1 �,�seticontext(copypattern%,5,�(copypat%)) �*�seticontext(amendtrack%,2,�(delpat%)) �-�seticontext(amendtrack%,10,�(delvoice%)) ��redocaret �� �: ���redocaret �"ș "Wimp_GetCaretPosition",,q% �cw%=q%!0:ci%=q%!4 �� cw%=tuneinfo% � �'� ci%=7 � ci%=8 �movecaret(cw%,ci%) � � : %��loadsample(sampfile$,samptype%) (withheader%=� 2window%=q%!20 <icon%=q%!24 F� window%<>samples% � � P� icon%<0 � � Zș "Hourglass_On" dsamppos%=(icon% � 36)+1 n$sampfilelen%=�filelen(sampfile$) x!actualsamplelen%=sampfilelen% �#� samptype%=2 � sampfilelen%-=1 �%� samptype%=6 � sampfilelen%-=712 �&� samptype%=7 � sampfilelen%-=1408 �%� samptype%=8 � sampfilelen%-=660 �-sampfilelen%=(sampfilelen%+3) � &FFFFFFFC �4� samptype%=0 � withheader%=�headered(sampfile$) �� withheader% � �%�loadheadered(sampfile$,samppos%) �� �1�loadunheadered(sampfile$,samppos%,samptype%) �� �ș "Hourglass_Off" ��updatesize �minimise � : "ݤheadered(samp$) ,C%=�(samp$) 6read$="" @� char%=1 � 4 Jread$+=�(�#C%) T� ^ � #C% h� read$="SAMP" � =� r=� |: � ��loadheadered(what$,where%) �abort%=� �'� sampfilelen%>(slen%(where%)+92) � �-toinsert%=sampfilelen%-(slen%(where%)+92) �at%=sampaddr%(where%) �/� �(�insertbytes(at%,toinsert%)) � abort%=� �� �'� sampfilelen%<(slen%(where%)+92) � �+todelete%=slen%(where%)+92-sampfilelen% �at%=sampaddr%(where%) �/� �(�deletebytes(at%,todelete%)) � abort%=� �� �� abort%=� � � 7:� ,�("LOAD "+what$+" "+�~sampaddr%(where%)) �readsamples �writesamplenames &� 0: :)��loadunheadered(what$,where%,stype%) Dabort%=� N"� sampfilelen%>slen%(where%) � X(toinsert%=sampfilelen%-slen%(where%) bat%=sampaddr%(where%)+92 l/� �(�insertbytes(at%,toinsert%)) � abort%=� v� �"� sampfilelen%<slen%(where%) � �(todelete%=slen%(where%)-sampfilelen% �at%=sampaddr%(where%)+92 �/� �(�deletebytes(at%,todelete%)) � abort%=� �� �� abort%=� � � 7:� �Ȏ stype% � �� 2: �C%=�(what$) �?ș "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-1,1 � � #C% �� 6: �C%=�(what$) !Cș "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-712,544 ! � #C% !� 7: ! C%=�(what$) !*Eș "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-1408,1408 !4 � #C% !>� 8: !HC%=�(what$) !RCș "OS_GBPB",3,C%,sampaddr%(where%)+92,actualsamplelen%-660,660 !\ � #C% !f� 0,1,3,4,5: !p1�("LOAD "+what$+" "+�~(sampaddr%(where%)+92)) !z� !�sname$=�leafname(what$) !�sname$=�sname$,20) !�rlen%=2 !�rofs%=0 !�at%=sampaddr%(where%) !�at%!4=sampfilelen%+84 !�%�writewithzeros(sname$,at%+16,20) !�at%!80=rlen% !�at%!68=rofs% !�at%!56=sampfilelen% !�at%!88=sampfilelen% !�Ȏ stype% � !�� 1: "A%=5 " B%=at%+92 "C%=sampfilelen% "$D%=0 ".� trackercode% "8� 2,6,7: "BA%=5 "L B%=at%+92 "VC%=sampfilelen% "`D%=1 "j� trackercode% "t� 3,4,5: "~A%=5 "� B%=at%+92 "�C%=sampfilelen% "�D%=stype%-1 "�� trackercode% "�� "��readsamples "��writesamplenames "�� "�: "���writewithzeros(w$,a%,l%) "�� c%=1 � l% "�b%=0 #!� c%<=�(w$) � b%=�(�w$,c%,1)) # a%?(c%-1)=b% #� #� #(: #2��edittracker #<� tuneloaded%=� � � #F �stoptune #Poldmode%=� #Z�rewritestereo #d� 15 #nA%=trackertune% #xB%=0 #�� justloaded% � B%=1 #�� trackercode%+4 #�*FX 15,0 #�ș "Wimp_SetMode",oldmode% #��readmusicdata #��readsamples #��writesamplenames #� �tuneinfo #�justloaded%=� #�ș "OS_Byte",4,2,0 #�� #�: #���notenoughtoload $�returnmemory $ �closeall $(� 17,"Insufficient Memory Available" $"� $,: $6��returnmemory $@#ș "XWimp_SlotSize",appsize%,-1 $Jtuneloaded%=� $T� $^: $hݤgrabmem(amount%) $roldamount%=amount% $|-� amount%<freemem% � freemem%-=amount%:=� $�� $� grabable%=�grabmem2(32*1024) $�� grabable% � $�freemem%+=32*1024 $�amount%-=32*1024 $�� $�� amount%<0 � �(grabable%) $�&� amount%<0 � freemem%-=oldamount% $�=grabable% $�: $�ݤgrabmem2(amount%) $�%ș "XWimp_SlotSize",-1,-1 � size% $�(ș "XWimp_SlotSize",size%+amount%,-1 %&ș "XWimp_SlotSize",-1,-1 � size2% %� size2%<size%+amount% � % ș "XWimp_SlotSize",size%,-1 %&� %0$� size2%<size%+amount% � =� � =� %:: %D��getmusicinfo %N�readmusicdata %X�readsamples %b�readpatterns %l� %v: %���tuneinfo %�$�seticontext(tuneinfo%,7,mname$) %�$�seticontext(tuneinfo%,8,aname$) %�*�seticontext(tuneinfo%,9,�(patterns%)) %�)�seticontext(tuneinfo%,14,�(voices%)) %�)�seticontext(tuneinfo%,15,�(seqlen%)) %��updatesize %�� %�: %���getnames %�!mname$=�icontext(tuneinfo%,7) %�!aname$=�icontext(tuneinfo%,8) %�� &: & ��samples &�openwindow(samples%,0) & � &*: &4��writesamplenames &>� sample%=1 � 36 &Hicon%=sample%+107 &Rsname$=sample$(sample%) &\slen%=slen%(sample%) &fslen$=�(slen%) &p� slen%=0 � slen$="" &z slen$=�5-�(slen$)," ")+slen$ &�$sname$=sname$+�22-�(sname$)," ") &�1�seticontext(samples%,icon%,sname$+" "+slen$) &�� &�� &�: &�!ݤfindword(start%,end%,word%) &� A%=start% &�B%=end% &�� &� C%=!A% &�D%=A%!4 &� A%+=8 &�� C%<>word% � A%+=D% '� A%>B% � C%=word% '� C%=word% � =A% '=� '$: '.ݤword(word$) '8word%=0 'B� byte%=1 � 4 'Lasc%=�(�word$,5-byte%,1)) 'Vword%=(word%<<8)+asc% '`� 'j =word% 't: '~��readmusicdata '�absstart%=trackertune% '�+absend%=trackertune%+(trackertune%!4)+8 '�absstart%+=8 '�mlen%=�word("MLEN") '�mvox%=�word("MVOX") '�pnum%=�word("PNUM") '�mnam%=�word("MNAM") '�anam%=�word("ANAM") '�plen%=�word("PLEN") '�ster%=�word("STER") '�sequ%=�word("SEQU") '�0mlenaddr%=�findword(absstart%,absend%,mlen%) (seqlen%=!mlenaddr% ( 0mvoxaddr%=�findword(absstart%,absend%,mvox%) (voices%=!mvoxaddr% (0steraddr%=�findword(absstart%,absend%,ster%) ((0pnumaddr%=�findword(absstart%,absend%,pnum%) (2patterns%=!pnumaddr% (<0mnamaddr%=�findword(absstart%,absend%,mnam%) (F0anamaddr%=�findword(absstart%,absend%,anam%) (P)aname$=�stringwithlimit(anamaddr%,32) (Z)mname$=�stringwithlimit(mnamaddr%,32) (d/pattlen%=�findword(absstart%,absend%,plen%) (n/seqaddr%=�findword(absstart%,absend%,sequ%) (x� (�: (���readsamples (�absstart%=trackertune% (�+absend%=trackertune%+(trackertune%!4)+8 (�absstart%+=8 (�samp%=�word("SAMP") (�snam%=�word("SNAM") (�slen%=�word("SLEN") (�svol%=�word("SVOL") (�start%=absstart% (�� inst%=1 � 36 (�/sampleaddr%=�findword(start%,absend%,samp%) (�"sampaddr%(inst%)=sampleaddr%-8 )searchaddr%=sampleaddr% )2snamaddr%=�findword(searchaddr%,absend%,snam%) )1sample$(inst%)=�stringwithlimit(snamaddr%,20) )"2slenaddr%=�findword(searchaddr%,absend%,slen%) ),'slen%(inst%)=4*((!slenaddr%+3) � 4) )6!slenaddr%=slen%(inst%) )@9svoladdr%(inst%)=�findword(searchaddr%,absend%,svol%) )J'start%=sampleaddr%+!(sampleaddr%-4) )T� )^� )h: )r��readpatterns )|� start%,pattern% )�absstart%=trackertune% )�+absend%=trackertune%+(trackertune%!4)+8 )�absstart%+=8 )�start%=absstart% )�patt%=�word("PATT") )�� pattern%=1 � patterns% )�7pattaddr%(pattern%)=�findword(start%,absend%,patt%) )�7start%=pattaddr%(pattern%)+!(pattaddr%(pattern%)-4) )�� )�� )�: )���newpattern )�� patterns%=64 � � *�makeselected(tuneinfo%,6) *eachpat%=4*patlen%*voices% *Bstart%=pattaddr%(patterns%)+(4*voices%*pattlen%?(patterns%-1)) *&'� �insertbytes(start%,eachpat%+8) � *0start%!0=�word("PATT") *:start%!4=eachpat% *D start%+=8 *N� word%=0 � (eachpat%/4)-1 *Xstart%!(word%*4)=0 *b� *lpattlen%?patterns%=patlen% *vpatterns%+=1 *�!pnumaddr%=patterns% *��getmusicinfo *�� *� �makeunselected(tuneinfo%,6) *� �tuneinfo *�� *�: *�"ݤinsertbytes(where%,howmany%) *� � �(�grabmem(howmany%)) � =� *�)from%=trackertune%+trackertune%!4+8-1 *�to%=from%+howmany% *�copy%=from%-where% *�A%=from% + B%=to% +C%=copy%+1 +� C%>0 � insertbytes + trackertune%!4+=howmany% +*=� +4: +>"ݤdeletebytes(where%,howmany%) +HA%=where%+howmany% +R B%=where% +\*endaddr%=trackertune%+trackertune%!4+8 +fC%=endaddr%-A% +p� C%>0 � deletebytes +zfreemem%+=howmany% +�trackertune%!4-=howmany% +�=� +�: +���assemble +�fromreg%=0 +�toreg%=1 +�countreg%=2 +�link=14:pc=15 +�� pass=0 � 2 � 2 +�P%=code% +� [OPT pass +�.insertbytes +�LDRB R11,[fromreg%],#-1 ,STRB R11,[toreg%],#-1 ,SUBS countreg%,countreg%,#1 ,BNE insertbytes ,$MOV pc,link ,..deletebytes ,8LDRB R11,[fromreg%],#1 ,BSTRB R11,[toreg%],#1 ,LSUBS countreg%,countreg%,#1 ,VBNE deletebytes ,`MOV pc,link ,j .claimRma ,t MOV R3,R0 ,~ MOV R0,#6 ,�SWI "XOS_Module" ,�MOVVS R2,#0 ,� MOV R0,R2 ,�MOV pc,link ,�.copybytes ,�ADD R11,R2,#3 ,�MOV R11,R11,ASR #2 ,�.copybytesloop ,�LDR R10,[R0],#4 ,�STR R10,[R1],#4 ,�SUBS R11,R11,#1 ,�BNE copybytesloop -MOV pc,link - ] -� -� -(: -2��savesample(sample%) -<"leaf$=�icontext(savesample%,3) -F"path$=�stringfrommemory(q%+44) -Ppath$=�path$,�(path$)-1) -Z� saveheader% � -dstart%=sampaddr%(sample%) -n%length%=!(sampaddr%(sample%)+4)+8 -x� -� start%=sampaddr%(sample%)+92 -�length%=slen%(sample%) -�� -�3�savewithpathstring(leaf$,path$,start%,length%) -�&�setfiletype(path$+"."+leaf$,&CB5) -�ș "Wimp_CreateMenu",,-1 -�� -�: -���savetune -�8�writewithzeros(�icontext(tuneinfo%,7),mnamaddr%,32) -�8�writewithzeros(�icontext(tuneinfo%,8),anamaddr%,32) -��rewritestereo -� leaf$=�icontext(savetune%,3) .leaf$=�leafname(leaf$) ."path$=�stringfrommemory(q%+44) .path$=�path$,�(path$)-1) ."B�savewithpathstring(leaf$,path$,trackertune%,trackertune%!4+8) .,&�setfiletype(path$+"."+leaf$,&CB6) .6-�seticontext(savetune%,3,path$+"."+leaf$) .@ș "Wimp_CreateMenu",,-1 .J� .T: .^��deletesample(samppos%) .hat%=sampaddr%(samppos%)+92 .rtodelete%=slen%(samppos%) .|&dummy%=�deletebytes(at%,todelete%) .�at%=sampaddr%(samppos%) .�!�writewithzeros("",at%+16,20) .�at%!4=84 .�at%!56=0 .�at%!68=0 .�at%!80=2 .�at%!88=0 .��readsamples .��writesamplenames .� �minimise .� �tuneinfo .�� .�: /��updatesize /size%=trackertune%!4+8 / ksize%=�((size%+512) � 1024) /&,�seticontext(tuneinfo%,19,�(ksize%)+"K") /00�seticontext(tuneinfo%,20,�(size%)+" bytes") /:� /D: /N��quicksave /X save$=�icontext(savetune%,3) /b�makeselected(savetune%,4) /l4� �save$,".")=0 � �makeunselected(savetune%,4):� /v8�writewithzeros(�icontext(tuneinfo%,7),mnamaddr%,32) /�8�writewithzeros(�icontext(tuneinfo%,8),anamaddr%,32) /��rewritestereo /�start%=trackertune% /�length%=trackertune%!4+8 /�0�("SAVE "+save$+" "+�~start%+" +"+�~length%) /��setfiletype(save$,&CB6) /� �makeunselected(savetune%,4) /�ș "Wimp_CreateMenu",,-1 /�� /�: /���incdefvoices /�"� defvoices%<8 � defvoices%+=1 /�+�seticontext(newtrack%,5,�(defvoices%)) 0� 0: 0��decdefvoices 0 "� defvoices%>1 � defvoices%-=1 0*+�seticontext(newtrack%,5,�(defvoices%)) 04� 0>: 0H��cleardata 0Rabort%=� 0\� tuneloaded% � 0fAerrorexit%=�errorbox(17,"Data will be lost - are you sure ?") 0p� errorexit%=2 � abort%=� 0z� 0�� abort% � � 0��returnmemory 0� �stoptune 0� �closeall 0�tuneloaded%=� 0�� 0�: 0���closeall 0��closewindow(tuneinfo%) 0��closewindow(samples%) 0��closewindow(stereo%) 0��closewindow(copypattern%) 0��closewindow(player%) 1�closewindow(amendtrack%) 1� 1: 1$��createtune(v%) 1.abort%=� 18� tuneloaded% � 1BIerrorexit%=�errorbox(17,"Existing tune will be lost - are you sure?") 1L� errorexit%=2 � abort%=� 1V� abort%=� �returnmemory 1`� 1j(� abort% � �closewindow(newtrack%):� 1t �stoptune 1~�makeselected(newtrack%,2) 1�memneeded%=368+36*92 1�memneeded%+=v%*64*4 1�freemem%=0 1�� �grabmem(memneeded%) � 1�o%=0 1�t%=trackertune% 1�t%!o%=�word("MUSX") : o%+=4 1� t%!o%=memneeded%-8 : o%+=4 1�t%!o%=�word("TINF") : o%+=4 1� t%!o%=4 : o%+=4 1� t%!o%=0 : o%+=4 1�t%!o%=�word("MVOX") : o%+=4 2 t%!o%=4 : o%+=4 2 t%!o%=v% : o%+=4 2t%!o%=�word("STER") : o%+=4 2 t%!o%=8 : o%+=4 2( t%!o%=&03050503 : o%+=4 22 t%!o%=&03050503 : o%+=4 2<t%!o%=�word("MNAM") : o%+=4 2F t%!o%=32 : o%+=4 2P*�writewithzeros("<Untitled>",t%+o%,32) 2Z o%+=32 2dt%!o%=�word("ANAM") : o%+=4 2n t%!o%=32 : o%+=4 2x%�writewithzeros("<You>",t%+o%,32) 2� o%+=32 2�t%!o%=�word("MLEN") : o%+=4 2� t%!o%=4 : o%+=4 2� t%!o%=1 : o%+=4 2�t%!o%=�word("PNUM") : o%+=4 2� t%!o%=4 : o%+=4 2� t%!o%=1 : o%+=4 2�t%!o%=�word("PLEN") : o%+=4 2� t%!o%=64 : o%+=4 2�� i%=1 � 64 2�t%?o%=64 2� o%+=1 2�� 3t%!o%=�word("SEQU") : o%+=4 3 t%!o%=128 : o%+=4 3� i%=1 � 128 3"t%?o%=0 3, o%+=1 36� 3@t%!o%=�word("PATT") : o%+=4 3J t%!o%=v%*64*4 : o%+=4 3T� i%=1 � v%*64*4 3^t%?o%=0 3h o%+=1 3r� 3|� sample%=1 � 36 3�t%!o%=�word("SAMP") : o%+=4 3� t%!o%=84 : o%+=4 3�t%!o%=�word("SNAM") : o%+=4 3� t%!o%=20 : o%+=4 3� �writewithzeros("",t%+o%,20) 3� o%+=20 3�t%!o%=�word("SVOL") : o%+=4 3� t%!o%=4 : o%+=4 3� t%!o%=255 : o%+=4 3�t%!o%=�word("SLEN") : o%+=4 3� t%!o%=4 : o%+=4 3� t%!o%=0 : o%+=4 3�t%!o%=�word("ROFS") : o%+=4 4 t%!o%=4 : o%+=4 4 t%!o%=0 : o%+=4 4t%!o%=�word("RLEN") : o%+=4 4& t%!o%=4 : o%+=4 40 t%!o%=2 : o%+=4 4:t%!o%=�word("SDAT") : o%+=4 4D t%!o%=0 : o%+=4 4N� 4Xtuneloaded%=� 4bplaying%=� 4l'�seticontext(savetune%,3,"Tracker") 4v�getmusicinfo 4� �tuneinfo 4��updatestereo 4��writesamplenames 4��initialisevoices 4��closewindow(newtrack%) 4� �minimise 4�� 4�tuneloaded%=� 4� �closeall 4�� 4� �makeunselected(newtrack%,2) 4�justloaded%=� 4�delvoice%=1 5 delpat%=1 5savepat%=1 5copypat%=1 5 ,�seticontext(copypattern%,5,�(copypat%)) 5**�seticontext(amendtrack%,2,�(delpat%)) 54-�seticontext(amendtrack%,10,�(delvoice%)) 5>�redocaret 5H� 5R: 5\ݤerrorbox(err%,err$) 5fq%!0=err%+(task%<<8) 5p$(q%+4)=err$+�(0) 5z8ș "Wimp_ReportError",q%,%1011,"AP Tracker" � ,exit% 5� =exit% 5�: 5�ݤleafname(fullpath$) 5�� fullpath$="" � ="" 5�� output$,chpos%,ch$ 5�output$="" 5�chpos%=�(fullpath$) 5�� 5�ch$=�fullpath$,chpos%,1) 5�)� �".: ",ch$)=0 � output$=ch$+output$ 5� chpos%-=1 5�� chpos%=0 � �".: ",ch$)>0 5�=output$ 6: 6��stereo 6�openwindow(stereo%,0) 6$� 6.: 68��setstereoESGs 6B� voice%=1 � 8 6Lbaseicon%=voice%*8-7 6Vesg%=voice% 6`� eachicon%=0 � 6 6j-�setESG(stereo%,baseicon%+eachicon%,esg%) 6t� 6~� 6�� 6�: 6���updatestereo 6�� voice%=1 � 8 6�s%=steraddr%+voice%-1 6�� ?s%=0 � ?s%>7 � ?s%=4 6�baseicon%=voice%*8-7 6�� eachicon%=0 � 6 6�0�makeunselected(stereo%,baseicon%+eachicon%) 6�� 6�=�makeselected(stereo%,baseicon%+(steraddr%?(voice%-1)-1)) 6�� 7� 7 : 7 ��setESG(window%,icon%,set%) 7q%!0=window% 7(q%!4=icon% 72q%!8=set%<<16 7<q%!12=%1111<<16 7Fș "Wimp_SetIconState",,q% 7P� 7Z: 7d��rewritestereo 7n� voice%=1 � 8 7xw%=steraddr%+voice%-1 7�baseicon%=voice%*8-7 7�s%=1 7�� eachicon%=0 � 6 7�A� �isitselected(stereo%,baseicon%+eachicon%) � s%=eachicon%+1 7�� 7� ?w%=s% 7�� 7�� 7�: 7���incsavepat 7�&� savepat%<patterns% � savepat%+=1 7�,�seticontext(savepattern%,6,�(savepat%)) 7�� 8: 8��decsavepat 8� savepat%>1 � savepat%-=1 8",�seticontext(savepattern%,6,�(savepat%)) 8,� 86: 8@ݤpatternaddr(patno%) 8J=pattaddr%(patno%) 8T: 8^��savepattern(whichpat%) 8h'startpat%=�patternaddr(whichpat%)-8 8rlength%=!(startpat%+4)+8 8|(pathname$=�pathname$,�(pathname$)-1) 8�>�savewithpathstring(leafname$,pathname$,startpat%,length%) 8�.�setfiletype(pathname$+"."+leafname$,&FFD) 8�ș "Wimp_CreateMenu",,-1 8�� 8�: 8���savepatterns(root$) 8�(pathname$=�pathname$,�(pathname$)-1) 8�ș "Hourglass_On" 8�� patsave%=1 � patterns% 8�(leafname$=root$+�"00"+�(patsave%),2) 8�&startpat%=�patternaddr(patsave%)-8 8�length%=!(startpat%+4)+8 8�>�savewithpathstring(leafname$,pathname$,startpat%,length%) 9.�setfiletype(pathname$+"."+leafname$,&FFD) 9� 9ș "Hourglass_Off" 9&ș "Wimp_CreateMenu",,-1 90� 9:: 9D��loadpatdata(filename$) 9N@� q%!20=samples% � �loadsample(filename$,�whichsampletype):� 9XC%=�(filename$) 9bread$="" 9l� byte%=1 � 4 9vread$+=�(�#C%) 9�� 9� � #C% 9�abort%=� 9�� read$<>"PATT" � abort%=� 9�� filelen%<(4+8) � abort%=� 9�$� filelen%>(8*64*4+8) � abort%=� 9�!� (filelen% � 3)>0 � abort%=� 9�(� abort% � � 17,"Not a pattern file" 9�&�("LOAD "+filename$+" "+�~copied%) 9�copiedlen%=filelen% 9��openwindow(copypattern%,0) 9�� 9�: :��inccopypat :&� copypat%<patterns% � copypat%+=1 :,�seticontext(copypattern%,5,�(copypat%)) : � :*: :4��deccopypat :>� copypat%>1 � copypat%-=1 :H,�seticontext(copypattern%,5,�(copypat%)) :R� :\: :f��copypattern :p-� copiedlen%=0 � � 17,"No pattern loaded" :z$copyto%=�patternaddr(copypat%)-8 :�copytolen%=!(copyto%+4)+8 :�?� copytolen%<>copiedlen% � � 17,"Pattern sizes don't match" :�!�makeselected(copypattern%,2) :�� byte%=0 � copiedlen%-1 :�copyto%?byte%=copied%?byte% :�� :�#�makeunselected(copypattern%,2) :�,� �(mredo%) � �closewindow(copypattern%) :�� :�: :���storepattern :�!�makeselected(savepattern%,7) :�&startpat%=�patternaddr(savepat%)-8 ;length%=!(startpat%+4)+8 ;� byte%=0 � length%-1 ;!copied%?byte%=startpat%?byte% ;$� ;.copiedlen%=length% ;8#�makeunselected(savepattern%,7) ;B*� �(mredo%) � ș "Wimp_CreateMenu",,-1 ;L�openwindow(copypattern%,0) ;V� ;`: ;j��savehelp(savehelp$) ;tA%=0 ;~blkaddr%=�(trackercode%) ;�helpaddr%=blkaddr%!0 ;�helplines%=blkaddr%!4 ;�C%=�(savehelp$) ;�ș "Hourglass_On" ;�� line%=1 � helplines% ;�4ș "Hourglass_Percentage",100*(line%/helplines%) ;�� char%=0 � 75 ;��#C%,helpaddr%?char% ;�� ;�helpaddr%+=76 ;��#C%,10 ;�� <ș "Hourglass_Off" < � #C% < �setfiletype(savehelp$,&FFF) <ș "Wimp_CreateMenu",,-1 <(� <2: <<��incvolume(whichvol%) <Fvol%=!svoladdr%(whichvol%) <Pvol%+=�buttonval(b%) <Z� vol%>255 � vol%=255 <d!svoladdr%(whichvol%)=vol% <n&�seticontext(setvolume%,1,�(vol%)) <x� <�: <���decvolume(whichvol%) <�vol%=!svoladdr%(whichvol%) <�vol%-=�buttonval(b%) <�� vol%<0 � vol%=0 <�!svoladdr%(whichvol%)=vol% <�&�seticontext(setvolume%,1,�(vol%)) <�� <�: <�ݤbuttonval(test%) <�� test%=1 � =10 <�� test%=2 � =5 <�=1 =: =��loadcocotrack(cocotrack$) =abort%=� ="� tuneloaded% � =,Ierrorexit%=�errorbox(17,"Existing tune will be lost - are you sure?") =6-� errorexit%=1 � �returnmemory � abort%=� =@� =J� abort% � � =T: =^ �stoptune =haborted%=� =rfreemem%=0 =|'gotit%=�grabmem(filelen%*2+10*1024) =�!� gotit%=� � �notenoughtoload =�+tempload%=trackertune%+filelen%+10*1024 =�'tempload%=(tempload%-4) � &FFFFFFFC =�)�("LOAD "+cocotrack$+" "+�~tempload%) =�A%=2 =�B%=tempload% =�C%=trackertune% =�ș "Hourglass_On" =�� trackercode% =�ș "Hourglass_Off" =�newsize%=trackertune%!4+8 =�-newsize%=(newsize%+32*1024-1) � &FFFF8000 =�,ș "XWimp_SlotSize",newsize%+appsize%,-1 >(freemem%=newsize%-(trackertune%!4+8) >�justloaded >� >&: >0��loadprotracker(protrack$) >:abort%=� >D� tuneloaded% � >NIerrorexit%=�errorbox(17,"Existing tune will be lost - are you sure?") >X-� errorexit%=1 � �returnmemory � abort%=� >b� >l� abort% � � >v: >� �stoptune >�freemem%=0 >�'gotit%=�grabmem(filelen%*2+10*1024) >�!� gotit%=� � �notenoughtoload >�+tempload%=trackertune%+filelen%+10*1024 >�'tempload%=(tempload%-4) � &FFFFFFFC >�(�("LOAD "+protrack$+" "+�~tempload%) >�A%=1 >�B%=tempload% >�C%=trackertune% >�D%=filelen% >�ș "Hourglass_On" >�� trackercode% ?(�("LOAD "+protrack$+" "+�~tempload%) ?A%=3 ?B%=tempload% ? C%=trackertune% ?*� trackercode% ?4ș "Hourglass_Off" ?>newsize%=trackertune%!4+8 ?H-newsize%=(newsize%+32*1024-1) � &FFFF8000 ?R,ș "XWimp_SlotSize",newsize%+appsize%,-1 ?\(freemem%=newsize%-(trackertune%!4+8) ?f�justloaded ?p� ?z: ?���playtune ?�� �(tuneloaded%) � � ?�� playing% � � ?�bytes%=trackertune%!4+8 ?� A%=bytes% ?�� rmaspace%=USR(claimRma) ?�-ș "OS_Module",6,0,0,bytes% � ,,rmaspace% ?�8� rmaspace%=0 � � 17,"Insufficient Memory Available" ?��setupvoices ?��rewritestereo ?�rmaclaimed%=bytes% ?�A%=trackertune% ?�B%=rmaspace% @ C%=bytes% @� copybytes @6ș "Tracker_MemoryLoad",rmaspace%,trackertune%!4+8 @$ș "Tracker_Play" @.playing%=� @8�panelstatus @B� @L: @V��stoptune @`� �(playing%) � � @jș "Tracker_Stop" @t!ș "XOS_Module",7,0,rmaspace% @~-ș "XOS_ChangeDynamicArea",1,-rmaclaimed% @�playing%=� @�oldpos%=-1:oldevent%=-1 @��panelstatus @�� @�: @���shade(window%,icon%) @�q2%!0=window% @�q2%!4=icon% @�q2%!8=2^22 @�q2%!12=2^22 @�ș "Wimp_SetIconState",,q2% @�� A: A ��unshade(window%,icon%) Aq2%!0=window% Aq2%!4=icon% A(q2%!8=0 A2q2%!12=2^22 A<ș "Wimp_SetIconState",,q2% AF� AP: AZ��panelstatus Ad� playing% � An�shade(player%,16) Ax�unshade(player%,17) A�� A��shade(player%,17) A��unshade(player%,16) A� �seticontext(player%,10,"-") A��seticontext(player%,18,"") A�� A�� A�: A���showmusicpos A�� �(playing%) � � A�)muscounter%=(muscounter%+1) � update% A�� muscounter%=0 � A�+ș "Tracker_ReadPos" � pos%,event%,max% B� pos%<>oldpos% � B4�seticontext(player%,10,�(pos%+1)+":"+�(max%+1)) B� B"<� event%<>oldevent% � �seticontext(player%,18,�(event%)) B,!oldpos%=pos%:oldevent%=event% B6� B@� BJ: BT��rewind B^� �(playing%) � � Bh&ș "Tracker_ReadPos" � pos%,event% Br+� pos%>0 � ș "Tracker_SetPos",pos%-1,0 B|� B�: B���fastforward B�� �(playing%) � � B�+ș "Tracker_ReadPos" � pos%,event%,max% B�.� pos%<max% � ș "Tracker_SetPos",pos%+1,0 B�� B�: B���initialisevoices B�� v%=1 � voices% B��makeselected(player%,v%) B��unshade(player%,v%) B�"ș "Tracker_RestoreChannel",v% B�� C� voices%<8 � C� v%=voices%+1 � 8 C�makeunselected(player%,v%) C&�shade(player%,v%) C0� C:� CD� CN: CX��setupvoices Cb� v%=1 � voices% Cl!� �isitselected(player%,v%) � Cv"ș "Tracker_RestoreChannel",v% C�� C�ș "Tracker_MuteChannel",v% C�� C�� C�� C�: C���togglevoice(v%) C�� �(tuneloaded%) � � C�!� �isitselected(player%,v%) � C��makeunselected(player%,v%) C�ș "Tracker_MuteChannel",v% C�� C��makeselected(player%,v%) D"ș "Tracker_RestoreChannel",v% D� D� D : D*��alterstereo(icon%) D4� icon%<0 � icon%>=8*8 � � D>� (icon% � 8)=0 � � DH)� b%=1 � �makeselected(stereo%,icon%) DR� icon%>=voices%*8 � � D\v%=(icon% � 8)+1 Df steraddr%?(v%-1)=(icon% � 8) Dp<� playing% � ș "Sound_Stereo",v%,stereovals%(icon% � 8) Dz� D�: D���incpatlength D�� patlen%<64 � patlen%+=1 D�(�seticontext(settings%,5,�(patlen%)) D�� D�: D���decpatlength D�� patlen%>1 � patlen%-=1 D�(�seticontext(settings%,5,�(patlen%)) D�� D�: D�ݤwhichsampletype D�%� �isitselected(settings%,6) � =3 E%� �isitselected(settings%,7) � =4 E=5 E: E$ݤpad(str$,len%) E.=�str$+�len%," "),len%) E8: EBݤpadright(str$,len%) EL=��len%," ")+str$,len%) EV: E`ݤbase36(num%) Ej� num%=0 � ="-" Et� num%<11 � =�(num%-1) E~=�(num%+54) E�: E���savedump(dumpname$) E� �getnames E�ș "Hourglass_On" E�A%=�(dumpname$) E�� A%>0 � � #A% E�� A%>0 � E�C%=�(dumpname$) E� �#C%=�#C% E�� E�C%=�(dumpname$) E�� F �setfiletype(dumpname$,&FFF) F : F"� �isitselected(savedump%,4) � F�#C%,"Tune Name :"+mname$ F(�#C%,"Author :"+aname$ F2"�#C%,"Voices :"+�(voices%) F<$�#C%,"Patterns :"+�(patterns%) FF"�#C%,"Length :"+�(seqlen%) FPc�#C%,"Size :"+�(�((trackertune%!4+8+512) � 1024))+"K ("+�(trackertune%!4+8)+" bytes)" FZ�#C%,"" Fd� Fn: Fx"� �isitselected(savedump%,5) � F�� #C%,"Sequence:" F� seqpos%=0 F� � row%=1 � (seqlen%+15) � 16 F�row$="" F�� col%=1 � 16 F�L� seqpos%>=seqlen% � add$=" " � add$=�" "+�(seqaddr%?seqpos%+1),4) F�row$+=add$ F�seqpos%+=1 F�� F� �#C%,row$ F�� F��#C%,"" F�� G: G"� �isitselected(savedump%,6) � G� #C%,"Instruments:" G"� sample%=1 � 36 G,� slen%(sample%)>0 � G6Esample$="Sample "+�base36(sample%)+" "+�pad(sample$(sample%),20) G@2sample$+=" Length:"+�pad(�(slen%(sample%)),5) GJ�#C%,sample$ GT� G^� Gh�#C%,"" Gr� G|: G�#� �isitselected(savedump%,10) � G�squashed%=� G��#C%,"Patterns:" G��#C%,"" G�� pattern%=1 � patterns% G�6ș "Hourglass_Percentage",100*(pattern%/patterns%) G�addr%=pattaddr%(pattern%) G�S�#C%,"Pattern:"+�pad(�(pattern%),2)+" (length:"+�(pattlen%?(pattern%-1))+")" G�$� row%=1 � pattlen%?(pattern%-1) G�row$="" G�� voice%=1 � voices% G�event%=!addr% G�<ș "Tracker_DecodeNote",event% � ,note%,inst%,comm%,val% HGevent$=�notes$,3*note%+1,3)+" "+�base36(inst%)+" "+�base36(comm%+1) Hevent$+=�"00"+�~val%,2) H� voice%>1 � row$+=" " H&row$+=event$ H0addr%+=4 H:� HD �#C%,row$ HN� HX�#C%,"" Hb� Hl� Hv: H�#� �isitselected(savedump%,12) � H��#C%,"Used in tune:" H��#C%,"" H�A%=6 H�B%=trackertune% H�used%=�(trackercode%) H�A%=7 H�comm%=�(trackercode%) H�� row%=1 � 36 H�row$=�notes$,3*row%+1,3) H�7row$+=" "+�padright(�(used%!(row%*4-4)),5)+" " H�+� slen%(row%)>0 � row$+="*" � row$+=" " H�samp$=sample$(row%) I*row$+=�base36(row%)+" "+�pad(samp$,21) I8row$+=�padright(�(used%!(row%*4-4+36*4)),5)+" " Irow$+=�base36(row%)+" " I Arow$+=�pad(�arrows(�stringwithlimit(comm%+row%*14-14,14)),15) I*/row$+=�padright(�(used%!(row%*4-4+72*4)),5) I4 �#C%,row$ I>� IH�#C%,"" IR� I\: Ifș "Hourglass_Off" Ip � #C% Izș "Wimp_CreateMenu",,-1 I�� I�: I�ݤarrows(str$) I�� str$="" � ="" I�� new$,b%,ch% I�new$="" I�� ch%=1 � �(str$) I�b%=�(�str$,ch%,1)) I�� b%>126 � b%+=9 I�new$+=�(b%) I�� I� =new$ I�: J��minimise Jtunesize%=trackertune%!4+8 J#tunesize%=(tunesize%+32*1024-1) J$-tunesize%=32*1024*(tunesize% � (32*1024)) J.-ș "XWimp_SlotSize",tunesize%+appsize%,-1 J8)ș "XWimp_SlotSize",-1,-1 � tunesize% JB4freemem%=(tunesize%-appsize%)-(trackertune%!4+8) JL� JV: J`��decdelpat Jj� delpat%>1 � delpat%-=1 Jt*�seticontext(amendtrack%,2,�(delpat%)) J~� J�: J���incdelpat J�$� delpat%<patterns% � delpat%+=1 J�*�seticontext(amendtrack%,2,�(delpat%)) J�� J�: J���decdelvoice J� � delvoice%>1 � delvoice%-=1 J�-�seticontext(amendtrack%,10,�(delvoice%)) J�� J�: J���incdelvoice K&� delvoice%<voices% � delvoice%+=1 K -�seticontext(amendtrack%,10,�(delvoice%)) K� K: K(��deletepattern K2,� patterns%=1 � � 17,"Only one pattern!" K<flag%=� KF� pos%=0 � seqlen%-1 KP)� seqaddr%?pos%=(delpat%-1) � flag%=� KZ� Kd/� flag% � � 17,"Pattern occurs in sequence" Kn �makeselected(amendtrack%,5) Kxat%=pattaddr%(delpat%)-8 K�todelete%=at%!4+8 K�%flag%=�deletebytes(at%,todelete%) K�� pos%=0 � seqlen%-1 K�/� seqaddr%?pos%>=delpat% � seqaddr%?pos%-=1 K�� K�&� pos%=(delpat%-1) � (patterns%-2) K�%pattlen%?(pos%)=pattlen%?(pos%+1) K�� K�!pnumaddr%-=1 K��getmusicinfo K� �minimise K� �tuneinfo K�+� delpat%>patterns% � delpat%=patterns% L*�seticontext(amendtrack%,2,�(delpat%)) L"�makeunselected(amendtrack%,5) L� L": L,��amendvoice L6W� �isitselected(amendtrack%,14) � �deletevoice(delvoice%) � �insertvoice(delvoice%) L@+� delvoice%>voices% � delvoice%=voices% LJ-�seticontext(amendtrack%,10,�(delvoice%)) LT� L^: Lhݤtotalpatlength Lrtotal%=0 L|� pattern%=1 � patterns% L�!total%+=pattlen%?(pattern%-1) L�� L�=total% L�: L���deletevoice(v%) L�0� voices%=1 � � 17,"Only one voice present!" L�!�makeselected(amendtrack%,11) L�ș "Hourglass_On" L�� pattern%=1 � patterns% L�:ș "Hourglass_Percentage",((pattern%-1)/patterns%)*100 L�rows%=pattlen%?(pattern%-1) L�start%=pattaddr%(pattern%) L�p1%=start%:p2%=p1% M� row%=1 � rows% M� voice%=1 � voices% M� voice%<>v% � M& !p1%=!p2% M0 p1%+=4 M:� MD p2%+=4 MN� MX� Mb#!(start%-4)=!(start%-4)-rows%*4 Mltodelete%=rows%*4 Mv%flag%=�deletebytes(p1%,todelete%) M��readpatterns M�� M�!mvoxaddr%-=1 M� �minimise M�#�makeunselected(amendtrack%,11) M�ș "Hourglass_Off" M��getmusicinfo M� �tuneinfo M��initialisevoices M�justloaded%=� M�� M�: M���insertvoice(v%) N*� voices%=8 � � 17,"Already 8 voices!" Ngrab%=�totalpatlength*4 N?� �(�grabmem(grab%)) � � 17,"Insufficient Memory Available" N freemem%+=grab% N*!�makeselected(amendtrack%,11) N4ș "Hourglass_On" N>� pattern%=1 � patterns% NH:ș "Hourglass_Percentage",((pattern%-1)/patterns%)*100 NRrows%=pattlen%?(pattern%-1) N\start%=pattaddr%(pattern%) Nfat%=start%+rows%*voices%*4 Nptoinsert%=rows%*4 Nz%flag%=�insertbytes(at%,toinsert%) N�� row%=rows% � 1 � -1 N�!p1%=start%+(row%-1)*voices%*4 N�%p2%=start%+(row%-1)*(voices%+1)*4 N�� voice%=1 � voices% N�%event%(voice%)=p1%!((voice%-1)*4) N�� N�� voice%=1 � voices% N�!p2%=event%(voice%) N�� voice%=v% � N� p2%+=4 N� !p2%=0 N�� N� p2%+=4 O� O� O%!(start%-4)=!(start%-4)+(rows%*4) O$�readpatterns O.� O8!mvoxaddr%+=1 OB �minimise OL#�makeunselected(amendtrack%,11) OVș "Hourglass_Off" O`�getmusicinfo Oj �tuneinfo Ot�initialisevoices O~justloaded%=� O�� �
00000000 0d 00 0a 10 f4 20 3e 21 52 75 6e 49 6d 61 67 65 |..... >!RunImage| 00000010 0d 00 14 05 3a 0d 00 1e 13 6d 65 6e 75 73 70 61 |....:....menuspa| 00000020 63 65 25 3d 34 30 30 30 0d 00 28 2b 73 70 72 73 |ce%=4000..(+sprs| 00000030 69 7a 65 25 3d a4 66 69 6c 65 6c 65 6e 28 22 3c |ize%=.filelen("<| 00000040 4f 62 65 79 24 44 69 72 3e 2e 53 70 72 69 74 65 |Obey$Dir>.Sprite| 00000050 73 22 29 0d 00 32 2e 63 6f 64 65 73 69 7a 65 25 |s")..2.codesize%| 00000060 3d a4 66 69 6c 65 6c 65 6e 28 22 3c 4f 62 65 79 |=.filelen("<Obey| 00000070 24 44 69 72 3e 2e 54 72 61 63 6b 43 6f 64 65 22 |$Dir>.TrackCode"| 00000080 29 0d 00 3c 05 3a 0d 00 46 14 de 20 71 25 20 32 |)..<.:..F.. q% 2| 00000090 35 36 2c 71 32 25 20 31 32 38 0d 00 50 0f de 20 |56,q2% 128..P.. | 000000a0 63 6f 64 65 25 20 31 36 30 0d 00 5a 0f de 20 74 |code% 160..Z.. t| 000000b0 65 6d 70 25 20 33 30 30 0d 00 64 11 de 20 62 6c |emp% 300..d.. bl| 000000c0 6f 63 6b 25 20 31 30 30 30 0d 00 6e 10 de 20 73 |ock% 1000..n.. s| 000000d0 70 6e 61 6d 65 25 20 32 30 0d 00 78 1a de 20 6d |pname% 20..x.. m| 000000e0 65 6e 75 61 64 64 72 25 20 6d 65 6e 75 73 70 61 |enuaddr% menuspa| 000000f0 63 65 25 0d 00 82 16 de 20 63 6f 70 69 65 64 25 |ce%..... copied%| 00000100 20 38 2a 36 34 2a 34 2b 38 0d 00 8c 1e de 20 6d | 8*64*4+8..... m| 00000110 61 69 6e 73 70 72 69 74 65 73 25 20 73 70 72 73 |ainsprites% sprs| 00000120 69 7a 65 25 2b 31 36 0d 00 96 1c de 20 74 72 61 |ize%+16..... tra| 00000130 63 6b 65 72 63 6f 64 65 25 20 63 6f 64 65 73 69 |ckercode% codesi| 00000140 7a 65 25 0d 00 a0 05 3a 0d 00 aa 11 74 75 6e 65 |ze%....:....tune| 00000150 6c 6f 61 64 65 64 25 3d a3 0d 00 b4 11 73 61 76 |loaded%=.....sav| 00000160 65 68 65 61 64 65 72 25 3d b9 0d 00 be 12 74 72 |eheader%=.....tr| 00000170 61 63 6b 65 72 74 75 6e 65 25 3d 93 0d 00 c8 11 |ackertune%=.....| 00000180 6a 75 73 74 6c 6f 61 64 65 64 25 3d b9 0d 00 d2 |justloaded%=....| 00000190 0f 64 65 6c 76 6f 69 63 65 25 3d 31 0d 00 dc 0d |.delvoice%=1....| 000001a0 64 65 6c 70 61 74 25 3d 31 0d 00 e6 0e 73 61 76 |delpat%=1....sav| 000001b0 65 70 61 74 25 3d 31 0d 00 f0 0e 63 6f 70 79 70 |epat%=1....copyp| 000001c0 61 74 25 3d 31 0d 00 fa 10 63 6f 70 69 65 64 6c |at%=1....copiedl| 000001d0 65 6e 25 3d 30 0d 01 04 0e 70 61 74 6c 65 6e 25 |en%=0....patlen%| 000001e0 3d 36 34 0d 01 0e 0d 75 70 64 61 74 65 25 3d 34 |=64....update%=4| 000001f0 0d 01 18 11 6d 75 73 63 6f 75 6e 74 65 72 25 3d |....muscounter%=| 00000200 30 0d 01 22 1b 6f 6c 64 70 6f 73 25 3d 2d 31 3a |0..".oldpos%=-1:| 00000210 6f 6c 64 65 76 65 6e 74 25 3d 2d 31 0d 01 2c 0e |oldevent%=-1..,.| 00000220 66 72 65 65 6d 65 6d 25 3d 30 0d 01 36 0e 70 6c |freemem%=0..6.pl| 00000230 61 79 69 6e 67 25 3d a3 0d 01 40 05 3a 0d 01 4a |aying%=...@.:..J| 00000240 1f de 20 73 61 6d 70 61 64 64 72 25 28 33 36 29 |.. sampaddr%(36)| 00000250 2c 73 61 6d 70 6c 65 24 28 33 36 29 0d 01 54 1d |,sample$(36)..T.| 00000260 de 20 73 6c 65 6e 25 28 33 36 29 2c 73 76 6f 6c |. slen%(36),svol| 00000270 61 64 64 72 25 28 33 36 29 0d 01 5e 13 de 20 70 |addr%(36)..^.. p| 00000280 61 74 74 61 64 64 72 25 28 36 34 29 0d 01 68 19 |attaddr%(64)..h.| 00000290 de 20 6f 6e 6f 66 66 25 28 38 29 2c 65 76 65 6e |. onoff%(8),even| 000002a0 74 25 28 38 29 0d 01 72 14 de 20 73 74 65 72 65 |t%(8)..r.. stere| 000002b0 6f 76 61 6c 73 25 28 37 29 0d 01 7c 2c 73 74 65 |ovals%(7)..|,ste| 000002c0 72 65 6f 76 61 6c 73 25 28 29 3d 30 2c 2d 31 32 |reovals%()=0,-12| 000002d0 36 2c 2d 37 30 2c 2d 34 30 2c 30 2c 34 30 2c 37 |6,-70,-40,0,40,7| 000002e0 30 2c 31 32 37 0d 01 86 7c 6e 6f 74 65 73 24 3d |0,127...|notes$=| 000002f0 22 2d 2d 2d 43 2d 31 43 23 31 44 2d 31 44 23 31 |"---C-1C#1D-1D#1| 00000300 45 2d 31 46 2d 31 46 23 31 47 2d 31 47 23 31 41 |E-1F-1F#1G-1G#1A| 00000310 2d 31 41 23 31 42 2d 31 43 2d 32 43 23 32 44 2d |-1A#1B-1C-2C#2D-| 00000320 32 44 23 32 45 2d 32 46 2d 32 46 23 32 47 2d 32 |2D#2E-2F-2F#2G-2| 00000330 47 23 32 41 2d 32 41 23 32 42 2d 32 43 2d 33 43 |G#2A-2A#2B-2C-3C| 00000340 23 33 44 2d 33 44 23 33 45 2d 33 46 2d 33 46 23 |#3D-3D#3E-3F-3F#| 00000350 33 47 2d 33 47 23 33 41 2d 33 41 23 33 42 2d 33 |3G-3G#3A-3A#3B-3| 00000360 22 0d 01 90 16 73 61 6d 70 6c 65 24 28 29 3d c4 |"....sample$()=.| 00000370 32 30 2c 22 20 22 29 0d 01 9a 10 64 65 66 76 6f |20," ")....defvo| 00000380 69 63 65 73 25 3d 34 0d 01 a4 05 3a 0d 01 ae 23 |ices%=4....:...#| 00000390 77 62 63 6f 6c 3d 30 3a 6d 62 63 6f 6c 3d 32 3a |wbcol=0:mbcol=2:| 000003a0 77 66 63 6f 6c 3d 37 3a 74 66 63 6f 6c 3d 37 0d |wfcol=7:tfcol=7.| 000003b0 01 b8 05 3a 0d 01 c2 0e ee 20 85 20 f2 65 72 72 |...:..... . .err| 000003c0 6f 72 0d 01 cc 05 3a 0d 01 d6 0e 24 71 25 3d 22 |or....:....$q%="| 000003d0 54 41 53 4b 22 0d 01 e0 1d 70 72 65 66 69 78 24 |TASK"....prefix$| 000003e0 3d 22 3c 41 50 54 72 61 63 6b 65 72 24 44 69 72 |="<APTracker$Dir| 000003f0 3e 22 0d 01 ea 3e c8 99 20 22 57 69 6d 70 5f 49 |>"...>.. "Wimp_I| 00000400 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 30 2c 21 |nitialise",200,!| 00000410 71 25 2c 22 41 50 20 54 72 61 63 6b 65 72 22 20 |q%,"AP Tracker" | 00000420 b8 20 76 65 72 73 69 6f 6e 25 2c 74 61 73 6b 25 |. version%,task%| 00000430 0d 01 f4 3d f2 6c 6f 61 64 73 70 72 69 74 65 73 |...=.loadsprites| 00000440 28 70 72 65 66 69 78 24 2b 22 2e 53 70 72 69 74 |(prefix$+".Sprit| 00000450 65 73 22 2c 6d 61 69 6e 73 70 72 69 74 65 73 25 |es",mainsprites%| 00000460 2c 73 70 72 73 69 7a 65 25 2b 31 36 29 0d 01 fe |,sprsize%+16)...| 00000470 3b f2 6c 6f 61 64 77 69 74 68 70 61 74 68 76 61 |;.loadwithpathva| 00000480 72 69 61 62 6c 65 28 70 72 65 66 69 78 24 2c 22 |riable(prefix$,"| 00000490 54 72 61 63 6b 43 6f 64 65 22 2c 74 72 61 63 6b |TrackCode",track| 000004a0 65 72 63 6f 64 65 25 29 0d 02 08 10 f2 6c 6f 61 |ercode%).....loa| 000004b0 64 77 69 6e 64 6f 77 73 0d 02 12 12 f2 73 65 74 |dwindows.....set| 000004c0 73 74 65 72 65 6f 45 53 47 73 0d 02 1c 0d f2 61 |stereoESGs.....a| 000004d0 73 73 65 6d 62 6c 65 0d 02 26 21 69 63 6f 6e 68 |ssemble..&!iconh| 000004e0 25 3d a4 69 63 6f 6e 62 61 72 28 22 21 61 70 74 |%=.iconbar("!apt| 000004f0 72 61 63 6b 65 72 22 29 0d 02 30 28 c8 99 20 22 |racker")..0(.. "| 00000500 58 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c |XWimp_SlotSize",| 00000510 2d 31 2c 2d 31 20 b8 20 61 70 70 73 69 7a 65 25 |-1,-1 . appsize%| 00000520 0d 02 3a 09 f2 6d 61 69 6e 0d 02 44 0d f2 73 68 |..:..main..D..sh| 00000530 75 74 64 6f 77 6e 0d 02 4e 05 e0 0d 02 58 05 3a |utdown..N....X.:| 00000540 0d 02 62 0e dd f2 73 68 75 74 64 6f 77 6e 0d 02 |..b...shutdown..| 00000550 6c 0c 61 62 6f 72 74 25 3d a3 0d 02 76 13 e7 20 |l.abort%=...v.. | 00000560 74 75 6e 65 6c 6f 61 64 65 64 25 20 8c 0d 02 80 |tuneloaded% ....| 00000570 41 65 72 72 6f 72 65 78 69 74 25 3d a4 65 72 72 |Aerrorexit%=.err| 00000580 6f 72 62 6f 78 28 31 37 2c 22 44 61 74 61 20 77 |orbox(17,"Data w| 00000590 69 6c 6c 20 62 65 20 6c 6f 73 74 20 2d 20 61 72 |ill be lost - ar| 000005a0 65 20 79 6f 75 20 73 75 72 65 20 3f 22 29 0d 02 |e you sure ?")..| 000005b0 8a 1d e7 20 65 72 72 6f 72 65 78 69 74 25 3d 32 |... errorexit%=2| 000005c0 20 8c 20 61 62 6f 72 74 25 3d b9 0d 02 94 05 cd | . abort%=......| 000005d0 0d 02 9e 10 e7 20 61 62 6f 72 74 25 20 8c 20 e1 |..... abort% . .| 000005e0 0d 02 a8 0d f2 73 74 6f 70 74 75 6e 65 0d 02 b2 |.....stoptune...| 000005f0 0e 24 71 25 3d 22 54 41 53 4b 22 0d 02 bc 21 c8 |.$q%="TASK"...!.| 00000600 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 44 6f 77 |. "Wimp_CloseDow| 00000610 6e 22 2c 74 61 73 6b 25 2c 21 71 25 0d 02 c6 05 |n",task%,!q%....| 00000620 e1 0d 02 d0 05 3a 0d 02 da 16 dd a4 69 63 6f 6e |.....:......icon| 00000630 62 61 72 28 73 70 72 69 74 65 24 29 0d 02 e4 14 |bar(sprite$)....| 00000640 24 73 70 6e 61 6d 65 25 3d 73 70 72 69 74 65 24 |$spname%=sprite$| 00000650 0d 02 ee 0f 62 6c 6f 63 6b 25 21 30 3d 2d 31 0d |....block%!0=-1.| 00000660 02 f8 0e 62 6c 6f 63 6b 25 21 34 3d 30 0d 03 02 |...block%!4=0...| 00000670 0e 62 6c 6f 63 6b 25 21 38 3d 30 0d 03 0c 10 62 |.block%!8=0....b| 00000680 6c 6f 63 6b 25 21 31 32 3d 38 30 0d 03 16 10 62 |lock%!12=80....b| 00000690 6c 6f 63 6b 25 21 31 36 3d 36 34 0d 03 20 13 62 |lock%!16=64.. .b| 000006a0 6c 6f 63 6b 25 21 32 30 3d 26 32 31 30 32 0d 03 |lock%!20=&2102..| 000006b0 2a 15 62 6c 6f 63 6b 25 21 32 34 3d 73 70 6e 61 |*.block%!24=spna| 000006c0 6d 65 25 0d 03 34 1a 62 6c 6f 63 6b 25 21 32 38 |me%..4.block%!28| 000006d0 3d 6d 61 69 6e 73 70 72 69 74 65 73 25 0d 03 3e |=mainsprites%..>| 000006e0 19 62 6c 6f 63 6b 25 21 33 32 3d a9 28 24 73 70 |.block%!32=.($sp| 000006f0 6e 61 6d 65 25 29 0d 03 48 28 c8 99 20 22 57 69 |name%)..H(.. "Wi| 00000700 6d 70 5f 43 72 65 61 74 65 49 63 6f 6e 22 2c 2c |mp_CreateIcon",,| 00000710 62 6c 6f 63 6b 25 20 b8 20 69 63 6f 6e 25 0d 03 |block% . icon%..| 00000720 52 0a 3d 69 63 6f 6e 25 0d 03 5c 05 3a 0d 03 66 |R.=icon%..\.:..f| 00000730 24 dd f2 6c 6f 61 64 73 70 72 69 74 65 73 28 66 |$..loadsprites(f| 00000740 69 6c 65 24 2c 61 64 64 72 25 2c 73 69 7a 65 25 |ile$,addr%,size%| 00000750 29 0d 03 70 10 21 61 64 64 72 25 3d 73 69 7a 65 |)..p.!addr%=size| 00000760 25 0d 03 7a 0d 61 64 64 72 25 21 34 3d 30 0d 03 |%..z.addr%!4=0..| 00000770 84 0e 61 64 64 72 25 21 38 3d 31 36 0d 03 8e 0e |..addr%!8=16....| 00000780 61 64 64 72 25 21 31 32 3d 30 0d 03 98 27 c8 99 |addr%!12=0...'..| 00000790 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 32 | "OS_SpriteOp",2| 000007a0 35 36 2b 31 30 2c 61 64 64 72 25 2c 66 69 6c 65 |56+10,addr%,file| 000007b0 24 0d 03 a2 05 e1 0d 03 ac 05 3a 0d 03 b6 11 dd |$.........:.....| 000007c0 f2 6c 6f 61 64 77 69 6e 64 6f 77 73 0d 03 c0 0d |.loadwindows....| 000007d0 de 20 54 25 20 35 30 30 30 0d 03 ca 0f 6d 61 78 |. T% 5000....max| 000007e0 77 73 25 3d 35 30 30 30 0d 03 d4 13 de 20 69 6e |ws%=5000..... in| 000007f0 64 69 72 25 20 6d 61 78 77 73 25 0d 03 de 0f 69 |dir% maxws%....i| 00000800 6e 64 25 3d 69 6e 64 69 72 25 0d 03 e8 15 73 70 |nd%=indir%....sp| 00000810 72 25 3d 6d 61 69 6e 73 70 72 69 74 65 73 25 0d |r%=mainsprites%.| 00000820 03 f2 30 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e |..0.. "Wimp_Open| 00000830 54 65 6d 70 6c 61 74 65 22 2c 2c 70 72 65 66 69 |Template",,prefi| 00000840 78 24 2b 22 2e 54 65 6d 70 6c 61 74 65 73 22 0d |x$+".Templates".| 00000850 03 fc 21 69 6e 66 6f 25 3d a4 67 65 74 77 69 6e |..!info%=.getwin| 00000860 64 6f 77 28 22 69 6e 66 6f 22 2c 73 70 72 25 29 |dow("info",spr%)| 00000870 0d 04 06 29 73 61 76 65 74 75 6e 65 25 3d a4 67 |...)savetune%=.g| 00000880 65 74 77 69 6e 64 6f 77 28 22 73 61 76 65 74 75 |etwindow("savetu| 00000890 6e 65 22 2c 73 70 72 25 29 0d 04 10 29 74 75 6e |ne",spr%)...)tun| 000008a0 65 69 6e 66 6f 25 3d a4 67 65 74 77 69 6e 64 6f |einfo%=.getwindo| 000008b0 77 28 22 74 75 6e 65 69 6e 66 6f 22 2c 73 70 72 |w("tuneinfo",spr| 000008c0 25 29 0d 04 1a 27 73 61 6d 70 6c 65 73 25 3d a4 |%)...'samples%=.| 000008d0 67 65 74 77 69 6e 64 6f 77 28 22 73 61 6d 70 6c |getwindow("sampl| 000008e0 65 73 22 2c 73 70 72 25 29 0d 04 24 2d 73 61 76 |es",spr%)..$-sav| 000008f0 65 73 61 6d 70 6c 65 25 3d a4 67 65 74 77 69 6e |esample%=.getwin| 00000900 64 6f 77 28 22 73 61 76 65 73 61 6d 70 6c 65 22 |dow("savesample"| 00000910 2c 73 70 72 25 29 0d 04 2e 29 6e 65 77 74 72 61 |,spr%)...)newtra| 00000920 63 6b 25 3d a4 67 65 74 77 69 6e 64 6f 77 28 22 |ck%=.getwindow("| 00000930 6e 65 77 74 72 61 63 6b 22 2c 73 70 72 25 29 0d |newtrack",spr%).| 00000940 04 38 25 73 74 65 72 65 6f 25 3d a4 67 65 74 77 |.8%stereo%=.getw| 00000950 69 6e 64 6f 77 28 22 73 74 65 72 65 6f 22 2c 73 |indow("stereo",s| 00000960 70 72 25 29 0d 04 42 2f 73 61 76 65 70 61 74 74 |pr%)..B/savepatt| 00000970 65 72 6e 25 3d a4 67 65 74 77 69 6e 64 6f 77 28 |ern%=.getwindow(| 00000980 22 73 61 76 65 70 61 74 74 65 72 6e 22 2c 73 70 |"savepattern",sp| 00000990 72 25 29 0d 04 4c 2f 73 61 76 65 70 61 74 74 65 |r%)..L/savepatte| 000009a0 72 6e 73 25 3d a4 67 65 74 77 69 6e 64 6f 77 28 |rns%=.getwindow(| 000009b0 22 73 61 76 65 70 61 74 74 6e 73 22 2c 73 70 72 |"savepattns",spr| 000009c0 25 29 0d 04 56 2f 63 6f 70 79 70 61 74 74 65 72 |%)..V/copypatter| 000009d0 6e 25 3d a4 67 65 74 77 69 6e 64 6f 77 28 22 63 |n%=.getwindow("c| 000009e0 6f 70 79 70 61 74 74 65 72 6e 22 2c 73 70 72 25 |opypattern",spr%| 000009f0 29 0d 04 60 29 73 61 76 65 68 65 6c 70 25 3d a4 |)..`)savehelp%=.| 00000a00 67 65 74 77 69 6e 64 6f 77 28 22 73 61 76 65 68 |getwindow("saveh| 00000a10 65 6c 70 22 2c 73 70 72 25 29 0d 04 6a 2b 73 65 |elp",spr%)..j+se| 00000a20 74 76 6f 6c 75 6d 65 25 3d a4 67 65 74 77 69 6e |tvolume%=.getwin| 00000a30 64 6f 77 28 22 73 65 74 76 6f 6c 75 6d 65 22 2c |dow("setvolume",| 00000a40 73 70 72 25 29 0d 04 74 25 70 6c 61 79 65 72 25 |spr%)..t%player%| 00000a50 3d a4 67 65 74 77 69 6e 64 6f 77 28 22 70 6c 61 |=.getwindow("pla| 00000a60 79 65 72 22 2c 73 70 72 25 29 0d 04 7e 29 73 65 |yer",spr%)..~)se| 00000a70 74 74 69 6e 67 73 25 3d a4 67 65 74 77 69 6e 64 |ttings%=.getwind| 00000a80 6f 77 28 22 73 65 74 74 69 6e 67 73 22 2c 73 70 |ow("settings",sp| 00000a90 72 25 29 0d 04 88 29 73 61 76 65 64 75 6d 70 25 |r%)...)savedump%| 00000aa0 3d a4 67 65 74 77 69 6e 64 6f 77 28 22 73 61 76 |=.getwindow("sav| 00000ab0 65 64 75 6d 70 22 2c 73 70 72 25 29 0d 04 92 2d |edump",spr%)...-| 00000ac0 61 6d 65 6e 64 74 72 61 63 6b 25 3d a4 67 65 74 |amendtrack%=.get| 00000ad0 77 69 6e 64 6f 77 28 22 61 6d 65 6e 64 74 72 61 |window("amendtra| 00000ae0 63 6b 22 2c 73 70 72 25 29 0d 04 9c 1b c8 99 20 |ck",spr%)...... | 00000af0 22 57 69 6d 70 5f 43 6c 6f 73 65 54 65 6d 70 6c |"Wimp_CloseTempl| 00000b00 61 74 65 22 0d 04 a6 35 f2 73 65 74 69 63 6f 6e |ate"...5.seticon| 00000b10 74 65 78 74 28 69 6e 66 6f 25 2c 31 31 2c a4 69 |text(info%,11,.i| 00000b20 63 6f 6e 74 65 78 74 28 69 6e 66 6f 25 2c 31 31 |context(info%,11| 00000b30 29 2b 22 20 20 23 31 22 29 0d 04 b0 05 e1 0d 04 |)+" #1").......| 00000b40 ba 05 3a 0d 04 c4 1d dd a4 67 65 74 77 69 6e 64 |..:......getwind| 00000b50 6f 77 28 77 74 69 74 6c 65 24 2c 73 70 72 25 29 |ow(wtitle$,spr%)| 00000b60 0d 04 ce 49 c8 99 20 22 57 69 6d 70 5f 4c 6f 61 |...I.. "Wimp_Loa| 00000b70 64 54 65 6d 70 6c 61 74 65 22 2c 2c 54 25 2c 69 |dTemplate",,T%,i| 00000b80 6e 64 25 2c 69 6e 64 69 72 25 2b 6d 61 78 77 73 |nd%,indir%+maxws| 00000b90 25 2d 31 2c 2d 31 2c 77 74 69 74 6c 65 24 2c 30 |%-1,-1,wtitle$,0| 00000ba0 20 b8 20 2c 2c 69 6e 64 25 0d 04 d8 0e 54 25 21 | . ,,ind%....T%!| 00000bb0 36 34 3d 73 70 72 25 0d 04 e2 28 c8 99 20 22 57 |64=spr%...(.. "W| 00000bc0 69 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 |imp_CreateWindow| 00000bd0 22 2c 2c 54 25 20 b8 20 68 61 6e 64 6c 65 25 0d |",,T% . handle%.| 00000be0 04 ec 0c 3d 68 61 6e 64 6c 65 25 0d 04 f6 05 3a |...=handle%....:| 00000bf0 0d 05 00 0a dd f2 6d 61 69 6e 0d 05 0a 0b 71 75 |......main....qu| 00000c00 69 74 25 3d a3 0d 05 14 05 f5 0d 05 1e 21 c8 99 |it%=.........!..| 00000c10 20 22 57 69 6d 70 5f 50 6f 6c 6c 22 2c 30 2c 71 | "Wimp_Poll",0,q| 00000c20 25 20 b8 20 72 65 61 73 6f 6e 25 0d 05 28 10 c8 |% . reason%..(..| 00000c30 8e 20 72 65 61 73 6f 6e 25 20 ca 0d 05 32 15 c9 |. reason% ...2..| 00000c40 20 30 3a f2 73 68 6f 77 6d 75 73 69 63 70 6f 73 | 0:.showmusicpos| 00000c50 0d 05 3c 1c c9 20 32 3a f2 6f 70 65 6e 77 69 6e |..<.. 2:.openwin| 00000c60 64 6f 77 28 71 25 21 30 2c 71 25 29 0d 05 46 1a |dow(q%!0,q%)..F.| 00000c70 c9 20 33 3a f2 63 6c 6f 73 65 77 69 6e 64 6f 77 |. 3:.closewindow| 00000c80 28 71 25 21 30 29 0d 05 50 2f c9 20 36 3a f2 63 |(q%!0)..P/. 6:.c| 00000c90 68 65 63 6b 6d 6f 75 73 65 28 71 25 21 30 2c 71 |heckmouse(q%!0,q| 00000ca0 25 21 34 2c 71 25 21 38 2c 71 25 21 31 32 2c 71 |%!4,q%!8,q%!12,q| 00000cb0 25 21 31 36 29 0d 05 5a 11 c9 20 37 3a f2 64 72 |%!16)..Z.. 7:.dr| 00000cc0 61 67 66 69 6c 65 0d 05 64 22 c9 20 38 3a c8 99 |agfile..d". 8:..| 00000cd0 20 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 4b 65 | "Wimp_ProcessKe| 00000ce0 79 22 2c 71 25 21 32 34 0d 05 6e 17 c9 20 39 3a |y",q%!24..n.. 9:| 00000cf0 f2 6d 65 6e 75 73 65 6c 65 63 74 28 71 25 29 0d |.menuselect(q%).| 00000d00 05 78 14 c9 20 31 37 2c 31 38 3a f2 6d 65 73 73 |.x.. 17,18:.mess| 00000d10 61 67 65 0d 05 82 05 cb 0d 05 8c 0b fd 20 71 75 |age.......... qu| 00000d20 69 74 25 0d 05 96 05 e1 0d 05 a0 05 3a 0d 05 aa |it%.........:...| 00000d30 29 dd f2 63 68 65 63 6b 6d 6f 75 73 65 28 6d 78 |)..checkmouse(mx| 00000d40 25 2c 6d 79 25 2c 62 25 2c 77 68 65 72 65 25 2c |%,my%,b%,where%,| 00000d50 69 63 6f 6e 25 29 0d 05 b4 20 e7 20 62 25 3d 31 |icon%)... . b%=1| 00000d60 20 8c 20 6d 72 65 64 6f 25 3d b9 20 8b 20 6d 72 | . mredo%=. . mr| 00000d70 65 64 6f 25 3d a3 0d 05 be 0f c8 8e 20 77 68 65 |edo%=....... whe| 00000d80 72 65 25 20 ca 0d 05 c8 09 c9 20 2d 32 3a 0d 05 |re% ...... -2:..| 00000d90 d2 0b c8 8e 20 62 25 20 ca 0d 05 dc 14 c9 20 31 |.... b% ...... 1| 00000da0 3a f2 65 64 69 74 74 72 61 63 6b 65 72 0d 05 e6 |:.edittracker...| 00000db0 08 c9 20 34 3a 0d 05 f0 13 e7 20 74 75 6e 65 6c |.. 4:..... tunel| 00000dc0 6f 61 64 65 64 25 20 8c 0d 05 fa 10 f2 70 61 6e |oaded% ......pan| 00000dd0 65 6c 73 74 61 74 75 73 0d 06 04 1a f2 6f 70 65 |elstatus.....ope| 00000de0 6e 77 69 6e 64 6f 77 28 70 6c 61 79 65 72 25 2c |nwindow(player%,| 00000df0 30 29 0d 06 0e 05 cd 0d 06 18 08 c9 20 32 3a 0d |0).......... 2:.| 00000e00 06 22 0d f2 6d 61 69 6e 6d 65 6e 75 0d 06 2c 27 |."..mainmenu..,'| 00000e10 f2 6f 70 65 6e 6d 65 6e 75 28 31 30 31 2c 6d 61 |.openmenu(101,ma| 00000e20 69 6e 6d 65 6e 75 25 2c 6d 78 25 2d 38 36 2c 33 |inmenu%,mx%-86,3| 00000e30 37 36 29 0d 06 36 05 cb 0d 06 40 10 c9 20 73 61 |76)..6....@.. sa| 00000e40 76 65 74 75 6e 65 25 3a 0d 06 4a 2c e7 20 69 63 |vetune%:..J,. ic| 00000e50 6f 6e 25 3d 30 20 8c 20 f2 69 6e 69 74 69 61 74 |on%=0 . .initiat| 00000e60 65 64 72 61 67 28 73 61 76 65 74 75 6e 65 25 2c |edrag(savetune%,| 00000e70 30 2c 31 29 0d 06 54 1a e7 20 69 63 6f 6e 25 3d |0,1)..T.. icon%=| 00000e80 34 20 8c 20 f2 71 75 69 63 6b 73 61 76 65 0d 06 |4 . .quicksave..| 00000e90 5e 3c c9 20 73 61 76 65 73 61 6d 70 6c 65 25 3a |^<. savesample%:| 00000ea0 e7 20 69 63 6f 6e 25 3d 30 20 8c 20 f2 69 6e 69 |. icon%=0 . .ini| 00000eb0 74 69 61 74 65 64 72 61 67 28 73 61 76 65 73 61 |tiatedrag(savesa| 00000ec0 6d 70 6c 65 25 2c 30 2c 32 29 0d 06 68 38 c9 20 |mple%,0,2)..h8. | 00000ed0 73 61 76 65 68 65 6c 70 25 3a e7 20 69 63 6f 6e |savehelp%:. icon| 00000ee0 25 3d 30 20 8c 20 f2 69 6e 69 74 69 61 74 65 64 |%=0 . .initiated| 00000ef0 72 61 67 28 73 61 76 65 68 65 6c 70 25 2c 30 2c |rag(savehelp%,0,| 00000f00 34 29 0d 06 72 40 c9 20 73 61 76 65 70 61 74 74 |4)..r@. savepatt| 00000f10 65 72 6e 73 25 3a e7 20 69 63 6f 6e 25 3d 30 20 |erns%:. icon%=0 | 00000f20 8c 20 f2 69 6e 69 74 69 61 74 65 64 72 61 67 28 |. .initiatedrag(| 00000f30 73 61 76 65 70 61 74 74 65 72 6e 73 25 2c 30 2c |savepatterns%,0,| 00000f40 35 29 0d 06 7c 13 c9 20 73 61 76 65 70 61 74 74 |5)..|.. savepatt| 00000f50 65 72 6e 25 3a 0d 06 86 0e c8 8e 20 69 63 6f 6e |ern%:...... icon| 00000f60 25 20 ca 0d 06 90 27 c9 20 30 3a f2 69 6e 69 74 |% ....'. 0:.init| 00000f70 69 61 74 65 64 72 61 67 28 73 61 76 65 70 61 74 |iatedrag(savepat| 00000f80 74 65 72 6e 25 2c 30 2c 33 29 0d 06 9a 13 c9 20 |tern%,0,3)..... | 00000f90 31 3a f2 69 6e 63 73 61 76 65 70 61 74 0d 06 a4 |1:.incsavepat...| 00000fa0 13 c9 20 34 3a f2 64 65 63 73 61 76 65 70 61 74 |.. 4:.decsavepat| 00000fb0 0d 06 ae 15 c9 20 37 3a f2 73 74 6f 72 65 70 61 |..... 7:.storepa| 00000fc0 74 74 65 72 6e 0d 06 b8 05 cb 0d 06 c2 27 c9 20 |ttern........'. | 00000fd0 74 75 6e 65 69 6e 66 6f 25 3a e7 20 69 63 6f 6e |tuneinfo%:. icon| 00000fe0 25 3d 36 20 8c 20 f2 6e 65 77 70 61 74 74 65 72 |%=6 . .newpatter| 00000ff0 6e 0d 06 cc 0f c9 20 73 61 6d 70 6c 65 73 25 3a |n..... samples%:| 00001000 0d 06 d6 0c e7 20 62 25 3d 32 20 8c 0d 06 e0 1f |..... b%=2 .....| 00001010 f2 6d 61 6b 65 73 61 6d 70 6c 65 6d 65 6e 75 28 |.makesamplemenu(| 00001020 69 63 6f 6e 25 20 83 20 33 36 29 0d 06 ea 46 e7 |icon% . 36)...F.| 00001030 20 73 6c 65 6e 25 28 28 69 63 6f 6e 25 20 83 20 | slen%((icon% . | 00001040 33 36 29 2b 31 29 3e 30 20 8c 20 f2 6f 70 65 6e |36)+1)>0 . .open| 00001050 6d 65 6e 75 28 31 30 36 2c 6d 61 69 6e 6d 65 6e |menu(106,mainmen| 00001060 75 25 2c 6d 78 25 2d 38 36 2c 6d 79 25 2b 32 34 |u%,mx%-86,my%+24| 00001070 29 0d 06 f4 05 cd 0d 06 fe 10 c9 20 6e 65 77 74 |).......... newt| 00001080 72 61 63 6b 25 3a 0d 07 08 0e c8 8e 20 69 63 6f |rack%:...... ico| 00001090 6e 25 20 ca 0d 07 12 1f c9 20 32 3a f2 63 72 65 |n% ...... 2:.cre| 000010a0 61 74 65 74 75 6e 65 28 64 65 66 76 6f 69 63 65 |atetune(defvoice| 000010b0 73 25 29 0d 07 1c 15 c9 20 33 3a f2 69 6e 63 64 |s%)..... 3:.incd| 000010c0 65 66 76 6f 69 63 65 73 0d 07 26 15 c9 20 34 3a |efvoices..&.. 4:| 000010d0 f2 64 65 63 64 65 66 76 6f 69 63 65 73 0d 07 30 |.decdefvoices..0| 000010e0 05 cb 0d 07 3a 13 c9 20 63 6f 70 79 70 61 74 74 |....:.. copypatt| 000010f0 65 72 6e 25 3a 0d 07 44 0e c8 8e 20 69 63 6f 6e |ern%:..D... icon| 00001100 25 20 ca 0d 07 4e 13 c9 20 33 3a f2 69 6e 63 63 |% ...N.. 3:.incc| 00001110 6f 70 79 70 61 74 0d 07 58 13 c9 20 34 3a f2 64 |opypat..X.. 4:.d| 00001120 65 63 63 6f 70 79 70 61 74 0d 07 62 14 c9 20 32 |eccopypat..b.. 2| 00001130 3a f2 63 6f 70 79 70 61 74 74 65 72 6e 0d 07 6c |:.copypattern..l| 00001140 05 cb 0d 07 76 11 c9 20 73 65 74 76 6f 6c 75 6d |....v.. setvolum| 00001150 65 25 3a 0d 07 80 0e c8 8e 20 69 63 6f 6e 25 20 |e%:...... icon% | 00001160 ca 0d 07 8a 1d c9 20 32 3a f2 69 6e 63 76 6f 6c |...... 2:.incvol| 00001170 75 6d 65 28 73 61 6d 70 6c 65 6e 6f 25 29 0d 07 |ume(sampleno%)..| 00001180 94 1d c9 20 33 3a f2 64 65 63 76 6f 6c 75 6d 65 |... 3:.decvolume| 00001190 28 73 61 6d 70 6c 65 6e 6f 25 29 0d 07 9e 05 cb |(sampleno%).....| 000011a0 0d 07 a8 0e c9 20 70 6c 61 79 65 72 25 3a 0d 07 |..... player%:..| 000011b0 b2 3a e7 20 69 63 6f 6e 25 3e 30 20 80 20 69 63 |.:. icon%>0 . ic| 000011c0 6f 6e 25 3c 28 21 6d 76 6f 78 61 64 64 72 25 2b |on%<(!mvoxaddr%+| 000011d0 31 29 20 8c 20 f2 74 6f 67 67 6c 65 76 6f 69 63 |1) . .togglevoic| 000011e0 65 28 69 63 6f 6e 25 29 0d 07 bc 0e c8 8e 20 69 |e(icon%)...... i| 000011f0 63 6f 6e 25 20 ca 0d 07 c6 12 c9 20 31 36 3a f2 |con% ...... 16:.| 00001200 70 6c 61 79 74 75 6e 65 0d 07 d0 12 c9 20 31 37 |playtune..... 17| 00001210 3a f2 73 74 6f 70 74 75 6e 65 0d 07 da 10 c9 20 |:.stoptune..... | 00001220 32 31 3a f2 72 65 77 69 6e 64 0d 07 e4 15 c9 20 |21:.rewind..... | 00001230 32 32 3a f2 66 61 73 74 66 6f 72 77 61 72 64 0d |22:.fastforward.| 00001240 07 ee 05 cb 0d 07 f8 10 c9 20 73 65 74 74 69 6e |......... settin| 00001250 67 73 25 3a 0d 08 02 0e c8 8e 20 69 63 6f 6e 25 |gs%:...... icon%| 00001260 20 ca 0d 08 0c 15 c9 20 33 3a f2 69 6e 63 70 61 | ...... 3:.incpa| 00001270 74 6c 65 6e 67 74 68 0d 08 16 15 c9 20 34 3a f2 |tlength..... 4:.| 00001280 64 65 63 70 61 74 6c 65 6e 67 74 68 0d 08 20 2a |decpatlength.. *| 00001290 c9 20 36 2c 37 2c 38 3a f2 6d 61 6b 65 73 65 6c |. 6,7,8:.makesel| 000012a0 65 63 74 65 64 28 73 65 74 74 69 6e 67 73 25 2c |ected(settings%,| 000012b0 69 63 6f 6e 25 29 0d 08 2a 05 cb 0d 08 34 38 c9 |icon%)..*....48.| 000012c0 20 73 61 76 65 64 75 6d 70 25 3a e7 20 69 63 6f | savedump%:. ico| 000012d0 6e 25 3d 30 20 8c 20 f2 69 6e 69 74 69 61 74 65 |n%=0 . .initiate| 000012e0 64 72 61 67 28 73 61 76 65 64 75 6d 70 25 2c 30 |drag(savedump%,0| 000012f0 2c 36 29 0d 08 3e 12 c9 20 61 6d 65 6e 64 74 72 |,6)..>.. amendtr| 00001300 61 63 6b 25 3a 0d 08 48 0e c8 8e 20 69 63 6f 6e |ack%:..H... icon| 00001310 25 20 ca 0d 08 52 12 c9 20 33 3a f2 69 6e 63 64 |% ...R.. 3:.incd| 00001320 65 6c 70 61 74 0d 08 5c 12 c9 20 34 3a f2 64 65 |elpat..\.. 4:.de| 00001330 63 64 65 6c 70 61 74 0d 08 66 16 c9 20 35 3a f2 |cdelpat..f.. 5:.| 00001340 64 65 6c 65 74 65 70 61 74 74 65 72 6e 0d 08 70 |deletepattern..p| 00001350 14 c9 20 38 3a f2 69 6e 63 64 65 6c 76 6f 69 63 |.. 8:.incdelvoic| 00001360 65 0d 08 7a 14 c9 20 39 3a f2 64 65 63 64 65 6c |e..z.. 9:.decdel| 00001370 76 6f 69 63 65 0d 08 84 14 c9 20 31 31 3a f2 61 |voice..... 11:.a| 00001380 6d 65 6e 64 76 6f 69 63 65 0d 08 8e 2c c9 20 31 |mendvoice...,. 1| 00001390 34 2c 31 35 3a f2 6d 61 6b 65 73 65 6c 65 63 74 |4,15:.makeselect| 000013a0 65 64 28 61 6d 65 6e 64 74 72 61 63 6b 25 2c 69 |ed(amendtrack%,i| 000013b0 63 6f 6e 25 29 0d 08 98 05 cb 0d 08 a2 21 c9 20 |con%)........!. | 000013c0 73 74 65 72 65 6f 25 3a f2 61 6c 74 65 72 73 74 |stereo%:.alterst| 000013d0 65 72 65 6f 28 69 63 6f 6e 25 29 0d 08 ac 05 cb |ereo(icon%).....| 000013e0 0d 08 b6 05 e1 0d 08 c0 05 3a 0d 08 ca 1e dd f2 |.........:......| 000013f0 6f 70 65 6e 77 69 6e 64 6f 77 28 68 61 6e 64 6c |openwindow(handl| 00001400 65 25 2c 70 6f 73 25 29 0d 08 d4 08 ea 20 62 25 |e%,pos%)..... b%| 00001410 0d 08 de 0e e7 20 70 6f 73 25 3d 30 20 8c 0d 08 |..... pos%=0 ...| 00001420 e8 1e 62 25 3d 62 6c 6f 63 6b 25 3a 62 6c 6f 63 |..b%=block%:bloc| 00001430 6b 25 21 30 3d 68 61 6e 64 6c 65 25 0d 08 f2 20 |k%!0=handle%... | 00001440 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 |.. "Wimp_GetWind| 00001450 6f 77 53 74 61 74 65 22 2c 2c 62 25 0d 08 fc 05 |owState",,b%....| 00001460 cc 0d 09 06 0b 62 25 3d 70 6f 73 25 0d 09 10 05 |.....b%=pos%....| 00001470 cd 0d 09 1a 10 62 6c 6f 63 6b 25 21 32 38 3d 2d |.....block%!28=-| 00001480 31 0d 09 24 1c c8 99 20 22 57 69 6d 70 5f 4f 70 |1..$... "Wimp_Op| 00001490 65 6e 57 69 6e 64 6f 77 22 2c 2c 62 25 0d 09 2e |enWindow",,b%...| 000014a0 05 e1 0d 09 38 05 3a 0d 09 42 1a dd f2 63 6c 6f |....8.:..B...clo| 000014b0 73 65 77 69 6e 64 6f 77 28 68 61 6e 64 6c 65 25 |sewindow(handle%| 000014c0 29 0d 09 4c 19 e7 20 68 61 6e 64 6c 65 25 3d 74 |)..L.. handle%=t| 000014d0 75 6e 65 69 6e 66 6f 25 20 8c 0d 09 56 21 6d 6e |uneinfo% ...V!mn| 000014e0 61 6d 65 24 3d a4 69 63 6f 6e 74 65 78 74 28 74 |ame$=.icontext(t| 000014f0 75 6e 65 69 6e 66 6f 25 2c 37 29 0d 09 60 21 61 |uneinfo%,7)..`!a| 00001500 6e 61 6d 65 24 3d a4 69 63 6f 6e 74 65 78 74 28 |name$=.icontext(| 00001510 74 75 6e 65 69 6e 66 6f 25 2c 38 29 0d 09 6a 05 |tuneinfo%,8)..j.| 00001520 cd 0d 09 74 14 62 6c 6f 63 6b 25 21 30 3d 68 61 |...t.block%!0=ha| 00001530 6e 64 6c 65 25 0d 09 7e 21 c8 99 20 22 57 69 6d |ndle%..~!.. "Wim| 00001540 70 5f 43 6c 6f 73 65 57 69 6e 64 6f 77 22 2c 2c |p_CloseWindow",,| 00001550 62 6c 6f 63 6b 25 0d 09 88 05 e1 0d 09 92 05 3a |block%.........:| 00001560 0d 09 9c 28 dd f2 69 6e 69 74 69 61 74 65 64 72 |...(..initiatedr| 00001570 61 67 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 |ag(window%,icon%| 00001580 2c 6d 79 72 65 66 25 29 0d 09 a6 17 73 61 76 65 |,myref%)....save| 00001590 68 61 6e 64 6c 65 25 3d 77 69 6e 64 6f 77 25 0d |handle%=window%.| 000015a0 09 b0 15 67 6c 6f 62 61 6c 72 65 66 25 3d 6d 79 |...globalref%=my| 000015b0 72 65 66 25 0d 09 ba 0f 21 71 25 3d 77 69 6e 64 |ref%....!q%=wind| 000015c0 6f 77 25 0d 09 c4 20 c8 99 20 22 57 69 6d 70 5f |ow%... .. "Wimp_| 000015d0 47 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c |GetWindowState",| 000015e0 2c 71 25 0d 09 ce 11 7a 25 3d 71 25 21 31 36 2d |,q%....z%=q%!16-| 000015f0 71 25 21 38 0d 09 d8 1e 78 25 3d 71 25 21 34 3a |q%!8....x%=q%!4:| 00001600 79 25 3d 71 25 21 38 3a 71 25 21 34 3d 69 63 6f |y%=q%!8:q%!4=ico| 00001610 6e 25 0d 09 e2 1e c8 99 20 22 57 69 6d 70 5f 47 |n%...... "Wimp_G| 00001620 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 25 |etIconState",,q%| 00001630 0d 09 ec 19 71 25 21 38 2b 3d 78 25 3a 71 25 21 |....q%!8+=x%:q%!| 00001640 31 32 2b 3d 79 25 2b 7a 25 0d 09 f6 1a 71 25 21 |12+=y%+z%....q%!| 00001650 31 36 2b 3d 78 25 3a 71 25 21 32 30 2b 3d 79 25 |16+=x%:q%!20+=y%| 00001660 2b 7a 25 0d 0a 00 13 71 25 21 32 34 3d 30 3a 71 |+z%....q%!24=0:q| 00001670 25 21 32 38 3d 30 0d 0a 0a 19 71 25 21 33 32 3d |%!28=0....q%!32=| 00001680 31 32 37 39 3a 71 25 21 33 36 3d 31 30 32 33 0d |1279:q%!36=1023.| 00001690 0a 14 10 21 71 25 3d 30 3a 71 25 21 34 3d 35 0d |...!q%=0:q%!4=5.| 000016a0 0a 1e 19 c8 99 20 22 57 69 6d 70 5f 44 72 61 67 |..... "Wimp_Drag| 000016b0 42 6f 78 22 2c 2c 71 25 0d 0a 28 05 e1 0d 0a 32 |Box",,q%..(....2| 000016c0 05 3a 0d 0a 3c 0d dd f2 6d 65 73 73 61 67 65 0d |.:..<...message.| 000016d0 0a 46 11 79 6f 75 72 72 65 66 25 3d 71 25 21 38 |.F.yourref%=q%!8| 000016e0 0d 0a 50 0e c8 8e 20 71 25 21 31 36 20 ca 0d 0a |..P... q%!16 ...| 000016f0 5a 0f c9 20 30 3a 71 75 69 74 25 3d b9 0d 0a 64 |Z.. 0:quit%=...d| 00001700 11 c9 20 32 3a f2 73 61 76 65 66 69 6c 65 0d 0a |.. 2:.savefile..| 00001710 6e 11 c9 20 33 3a f2 6c 6f 61 64 66 69 6c 65 0d |n.. 3:.loadfile.| 00001720 0a 78 05 cb 0d 0a 82 05 e1 0d 0a 8c 05 3a 0d 0a |.x...........:..| 00001730 96 0e dd f2 64 72 61 67 66 69 6c 65 0d 0a a0 09 |....dragfile....| 00001740 21 71 25 3d 30 0d 0a aa 20 c8 99 20 22 57 69 6d |!q%=0... .. "Wim| 00001750 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f |p_GetPointerInfo| 00001760 22 2c 2c 71 25 0d 0a b4 0b 71 25 21 33 32 3d 34 |",,q%....q%!32=4| 00001770 0d 0a be 0d 71 25 21 32 38 3d 21 71 25 0d 0a c8 |....q%!28=!q%...| 00001780 0f 71 25 21 32 34 3d 71 25 21 31 36 0d 0a d2 0f |.q%!24=q%!16....| 00001790 71 25 21 32 30 3d 71 25 21 31 32 0d 0a dc 0b 71 |q%!20=q%!12....q| 000017a0 25 21 31 36 3d 31 0d 0a e6 0b 71 25 21 31 32 3d |%!16=1....q%!12=| 000017b0 30 0d 0a f0 0d 71 25 21 33 36 3d 31 30 30 0d 0a |0....q%!36=100..| 000017c0 fa 0e 71 25 21 34 30 3d 26 43 30 30 0d 0b 04 11 |..q%!40=&C00....| 000017d0 24 28 71 25 2b 34 34 29 3d bd 28 30 29 0d 0b 0e |$(q%+44)=.(0)...| 000017e0 0a 21 71 25 3d 36 30 0d 0b 18 2b c8 99 20 22 57 |.!q%=60...+.. "W| 000017f0 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 |imp_SendMessage"| 00001800 2c 31 38 2c 71 25 2c 71 25 21 32 30 2c 71 25 21 |,18,q%,q%!20,q%!| 00001810 32 34 0d 0b 22 05 e1 0d 0b 2c 05 3a 0d 0b 36 1d |24.."....,.:..6.| 00001820 dd a4 73 74 72 69 6e 67 66 72 6f 6d 6d 65 6d 6f |..stringfrommemo| 00001830 72 79 28 61 64 64 72 25 29 0d 0b 40 16 ea 20 62 |ry(addr%)..@.. b| 00001840 79 74 65 25 2c 74 65 6d 70 24 2c 6f 75 74 24 0d |yte%,temp$,out$.| 00001850 0b 4a 0b 62 79 74 65 25 3d 30 0d 0b 54 0c 74 65 |.J.byte%=0..T.te| 00001860 6d 70 24 3d 22 22 0d 0b 5e 0b 6f 75 74 24 3d 22 |mp$=""..^.out$="| 00001870 22 0d 0b 68 05 f5 0d 0b 72 18 74 65 6d 70 24 3d |"..h....r.temp$=| 00001880 bd 28 61 64 64 72 25 3f 62 79 74 65 25 29 0d 0b |.(addr%?byte%)..| 00001890 7c 23 e7 20 97 28 74 65 6d 70 24 29 3e 33 31 20 ||#. .(temp$)>31 | 000018a0 8c 20 6f 75 74 24 3d 6f 75 74 24 2b 74 65 6d 70 |. out$=out$+temp| 000018b0 24 0d 0b 86 0c 62 79 74 65 25 2b 3d 31 0d 0b 90 |$....byte%+=1...| 000018c0 10 fd 20 97 28 74 65 6d 70 24 29 3d 30 0d 0b 9a |.. .(temp$)=0...| 000018d0 09 3d 6f 75 74 24 0d 0b a4 05 3a 0d 0b ae 24 dd |.=out$....:...$.| 000018e0 a4 73 74 72 69 6e 67 77 69 74 68 6c 69 6d 69 74 |.stringwithlimit| 000018f0 28 61 64 64 72 25 2c 6d 61 78 6c 65 6e 25 29 0d |(addr%,maxlen%).| 00001900 0b b8 16 ea 20 62 79 74 65 25 2c 74 65 6d 70 24 |.... byte%,temp$| 00001910 2c 6f 75 74 24 0d 0b c2 0b 62 79 74 65 25 3d 30 |,out$....byte%=0| 00001920 0d 0b cc 0c 74 65 6d 70 24 3d 22 22 0d 0b d6 0b |....temp$=""....| 00001930 6f 75 74 24 3d 22 22 0d 0b e0 05 f5 0d 0b ea 18 |out$="".........| 00001940 74 65 6d 70 24 3d bd 28 61 64 64 72 25 3f 62 79 |temp$=.(addr%?by| 00001950 74 65 25 29 0d 0b f4 23 e7 20 97 28 74 65 6d 70 |te%)...#. .(temp| 00001960 24 29 3e 33 31 20 8c 20 6f 75 74 24 3d 6f 75 74 |$)>31 . out$=out| 00001970 24 2b 74 65 6d 70 24 0d 0b fe 0c 62 79 74 65 25 |$+temp$....byte%| 00001980 2b 3d 31 0d 0c 08 21 fd 20 97 28 74 65 6d 70 24 |+=1...!. .(temp$| 00001990 29 3d 30 20 84 20 62 79 74 65 25 3e 3d 6d 61 78 |)=0 . byte%>=max| 000019a0 6c 65 6e 25 0d 0c 12 09 3d 6f 75 74 24 0d 0c 1c |len%....=out$...| 000019b0 05 3a 0d 0c 26 1f dd a4 69 63 6f 6e 74 65 78 74 |.:..&...icontext| 000019c0 28 77 68 25 2c 69 63 6f 6e 6e 75 6d 62 65 72 25 |(wh%,iconnumber%| 000019d0 29 0d 0c 30 0e 21 74 65 6d 70 25 3d 77 68 25 0d |)..0.!temp%=wh%.| 000019e0 0c 3a 17 74 65 6d 70 25 21 34 3d 69 63 6f 6e 6e |.:.temp%!4=iconn| 000019f0 75 6d 62 65 72 25 0d 0c 44 21 c8 99 20 22 57 69 |umber%..D!.. "Wi| 00001a00 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_GetIconState"| 00001a10 2c 2c 74 65 6d 70 25 0d 0c 4e 0a 69 74 24 3d 22 |,,temp%..N.it$="| 00001a20 22 0d 0c 58 0b 62 79 74 65 25 3d 30 0d 0c 62 1d |"..X.byte%=0..b.| 00001a30 c8 95 20 3f 28 28 74 65 6d 70 25 21 32 38 29 2b |.. ?((temp%!28)+| 00001a40 62 79 74 65 25 29 3e 33 31 0d 0c 6c 22 69 74 24 |byte%)>31..l"it$| 00001a50 3d 69 74 24 2b bd 28 3f 28 28 74 65 6d 70 25 21 |=it$+.(?((temp%!| 00001a60 32 38 29 2b 62 79 74 65 25 29 29 0d 0c 76 0c 62 |28)+byte%))..v.b| 00001a70 79 74 65 25 2b 3d 31 0d 0c 80 05 ce 0d 0c 8a 08 |yte%+=1.........| 00001a80 3d 69 74 24 0d 0c 94 05 3a 0d 0c 9e 1e dd a4 69 |=it$....:......i| 00001a90 63 6f 6e 76 61 6c 28 77 68 25 2c 69 63 6f 6e 6e |conval(wh%,iconn| 00001aa0 75 6d 62 65 72 25 29 0d 0c a8 22 3d bb 28 a4 69 |umber%)..."=.(.i| 00001ab0 63 6f 6e 74 65 78 74 28 77 68 25 2c 69 63 6f 6e |context(wh%,icon| 00001ac0 6e 75 6d 62 65 72 25 29 29 0d 0c b2 05 3a 0d 0c |number%))....:..| 00001ad0 bc 0b dd f2 65 72 72 6f 72 0d 0c c6 16 c8 99 20 |....error...... | 00001ae0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 00001af0 0c d0 08 d9 20 23 30 0d 0c da 19 c8 99 20 22 57 |.... #0...... "W| 00001b00 69 6d 70 5f 44 72 61 67 42 6f 78 22 2c 2c 2d 31 |imp_DragBox",,-1| 00001b10 0d 0c e4 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 |...... "Wimp_Cre| 00001b20 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 0c ee 0d |ateMenu",,-1....| 00001b30 21 62 6c 6f 63 6b 25 3d 9f 0d 0c f8 17 24 28 62 |!block%=.....$(b| 00001b40 6c 6f 63 6b 25 2b 34 29 3d f6 24 2b bd 28 30 29 |lock%+4)=.$+.(0)| 00001b50 0d 0d 02 2f c8 99 20 22 57 69 6d 70 5f 52 65 70 |.../.. "Wimp_Rep| 00001b60 6f 72 74 45 72 72 6f 72 22 2c 62 6c 6f 63 6b 25 |ortError",block%| 00001b70 2c 31 2c 22 41 50 20 54 72 61 63 6b 65 72 22 0d |,1,"AP Tracker".| 00001b80 0d 0c 09 f2 6d 61 69 6e 0d 0d 16 05 e1 0d 0d 20 |....main....... | 00001b90 05 3a 0d 0d 2a 28 dd f2 73 65 74 69 63 6f 6e 74 |.:..*(..seticont| 00001ba0 65 78 74 28 77 68 25 2c 69 63 6f 6e 6e 75 6d 62 |ext(wh%,iconnumb| 00001bb0 65 72 25 2c 74 65 78 74 24 29 0d 0d 34 0e 21 74 |er%,text$)..4.!t| 00001bc0 65 6d 70 25 3d 77 68 25 0d 0d 3e 17 74 65 6d 70 |emp%=wh%..>.temp| 00001bd0 25 21 34 3d 69 63 6f 6e 6e 75 6d 62 65 72 25 0d |%!4=iconnumber%.| 00001be0 0d 48 21 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |.H!.. "Wimp_GetI| 00001bf0 63 6f 6e 53 74 61 74 65 22 2c 2c 74 65 6d 70 25 |conState",,temp%| 00001c00 0d 0d 52 20 24 74 65 6d 70 25 21 32 38 3d c0 74 |..R $temp%!28=.t| 00001c10 65 78 74 24 2c 74 65 6d 70 25 21 33 36 2d 31 29 |ext$,temp%!36-1)| 00001c20 0d 0d 5c 0d 74 65 6d 70 25 21 38 3d 30 0d 0d 66 |..\.temp%!8=0..f| 00001c30 0e 74 65 6d 70 25 21 31 32 3d 30 0d 0d 70 21 c8 |.temp%!12=0..p!.| 00001c40 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 |. "Wimp_SetIconS| 00001c50 74 61 74 65 22 2c 2c 74 65 6d 70 25 0d 0d 7a 05 |tate",,temp%..z.| 00001c60 e1 0d 0d 84 05 3a 0d 0d 8e 1b dd f2 6d 61 6b 65 |.....:......make| 00001c70 73 61 6d 70 6c 65 6d 65 6e 75 28 73 61 6d 70 25 |samplemenu(samp%| 00001c80 29 0d 0d 98 15 73 61 6d 70 6c 65 6e 6f 25 3d 73 |)....sampleno%=s| 00001c90 61 6d 70 25 2b 31 0d 0d a2 16 6d 65 6e 75 70 74 |amp%+1....menupt| 00001ca0 72 25 3d 6d 65 6e 75 61 64 64 72 25 0d 0d ac 22 |r%=menuaddr%..."| 00001cb0 6d 65 6e 65 6e 64 25 3d 6d 65 6e 75 61 64 64 72 |menend%=menuaddr| 00001cc0 25 2b 6d 65 6e 75 73 70 61 63 65 25 2d 31 0d 0d |%+menuspace%-1..| 00001cd0 b6 0b ea 20 69 24 2c 6d 24 0d 0d c0 11 69 6e 73 |... i$,m$....ins| 00001ce0 74 25 3d 73 61 6d 70 25 2b 31 0d 0d ca 18 e7 20 |t%=samp%+1..... | 00001cf0 73 6c 65 6e 25 28 69 6e 73 74 25 29 3d 30 20 8c |slen%(inst%)=0 .| 00001d00 20 e1 0d 0d d4 25 6d 74 69 74 6c 65 24 3d a4 6c | ....%mtitle$=.l| 00001d10 65 61 66 6e 61 6d 65 28 73 61 6d 70 6c 65 24 28 |eafname(sample$(| 00001d20 69 6e 73 74 25 29 29 0d 0d de 23 e7 20 6d 74 69 |inst%))...#. mti| 00001d30 74 6c 65 24 3d 22 22 20 8c 20 6d 74 69 74 6c 65 |tle$="" . mtitle| 00001d40 24 3d 22 53 61 6d 70 6c 65 22 0d 0d e8 18 6d 74 |$="Sample"....mt| 00001d50 69 74 6c 65 24 3d c0 6d 74 69 74 6c 65 24 2c 31 |itle$=.mtitle$,1| 00001d60 32 29 0d 0d f2 27 f2 73 65 74 69 63 6f 6e 74 65 |2)...'.seticonte| 00001d70 78 74 28 73 61 76 65 73 61 6d 70 6c 65 25 2c 33 |xt(savesample%,3| 00001d80 2c 6d 74 69 74 6c 65 24 29 0d 0d fc 5c 6d 61 69 |,mtitle$)...\mai| 00001d90 6e 6d 65 6e 75 25 3d a4 6d 61 6b 65 6d 65 6e 28 |nmenu%=.makemen(| 00001da0 22 7c 77 69 6e 73 73 53 61 76 65 2c 7c 77 69 6e |"|winssSave,|win| 00001db0 73 76 56 6f 6c 75 6d 65 2c 44 65 6c 65 74 65 2c |svVolume,Delete,| 00001dc0 22 2b a4 74 69 63 28 73 61 76 65 68 65 61 64 65 |"+.tic(saveheade| 00001dd0 72 25 29 2b 22 48 65 61 64 65 72 22 2c 6d 74 69 |r%)+"Header",mti| 00001de0 74 6c 65 24 29 0d 0e 06 35 e7 20 6d 65 6e 75 70 |tle$)...5. menup| 00001df0 74 72 25 3e 6d 65 6e 65 6e 64 25 20 8c 20 85 20 |tr%>menend% . . | 00001e00 31 37 2c 22 4e 6f 74 20 65 6e 6f 75 67 68 20 6d |17,"Not enough m| 00001e10 65 6e 75 20 73 70 61 63 65 22 0d 0e 10 37 f2 73 |enu space"...7.s| 00001e20 65 74 69 63 6f 6e 74 65 78 74 28 73 65 74 76 6f |eticontext(setvo| 00001e30 6c 75 6d 65 25 2c 31 2c c3 28 21 73 76 6f 6c 61 |lume%,1,.(!svola| 00001e40 64 64 72 25 28 73 61 6d 70 6c 65 6e 6f 25 29 29 |ddr%(sampleno%))| 00001e50 29 0d 0e 1a 05 e1 0d 0e 24 05 3a 0d 0e 2e 0e dd |).......$.:.....| 00001e60 f2 6d 61 69 6e 6d 65 6e 75 0d 0e 38 16 6d 65 6e |.mainmenu..8.men| 00001e70 75 70 74 72 25 3d 6d 65 6e 75 61 64 64 72 25 0d |uptr%=menuaddr%.| 00001e80 0e 42 22 6d 65 6e 65 6e 64 25 3d 6d 65 6e 75 61 |.B"menend%=menua| 00001e90 64 64 72 25 2b 6d 65 6e 75 73 70 61 63 65 25 2d |ddr%+menuspace%-| 00001ea0 31 0d 0e 4c 0b ea 20 69 24 2c 6d 24 0d 0e 56 b7 |1..L.. i$,m$..V.| 00001eb0 73 61 76 65 6d 65 6e 75 25 3d a4 6d 61 6b 65 6d |savemenu%=.makem| 00001ec0 65 6e 28 22 7c 77 69 6e 73 61 22 2b a4 6c 69 74 |en("|winsa"+.lit| 00001ed0 28 74 75 6e 65 6c 6f 61 64 65 64 25 29 2b 22 54 |(tuneloaded%)+"T| 00001ee0 75 6e 65 2c 7c 77 69 6e 73 70 22 2b a4 6c 69 74 |une,|winsp"+.lit| 00001ef0 28 74 75 6e 65 6c 6f 61 64 65 64 25 29 2b 22 50 |(tuneloaded%)+"P| 00001f00 61 74 74 65 72 6e 2c 7c 77 69 6e 61 70 22 2b a4 |attern,|winap"+.| 00001f10 6c 69 74 28 74 75 6e 65 6c 6f 61 64 65 64 25 29 |lit(tuneloaded%)| 00001f20 2b 22 50 61 74 74 65 72 6e 73 2c 7c 77 69 6e 73 |+"Patterns,|wins| 00001f30 64 22 2b a4 6c 69 74 28 74 75 6e 65 6c 6f 61 64 |d"+.lit(tuneload| 00001f40 65 64 25 29 2b 22 54 65 78 74 20 44 75 6d 70 2c |ed%)+"Text Dump,| 00001f50 7c 77 69 6e 73 68 48 65 6c 70 22 2c 22 53 61 76 ||winshHelp","Sav| 00001f60 65 22 29 0d 0e 60 3f 74 75 6e 65 6d 65 6e 75 25 |e")..`?tunemenu%| 00001f70 3d a4 6d 61 6b 65 6d 65 6e 28 22 49 6e 66 6f 2c |=.makemen("Info,| 00001f80 53 61 6d 70 6c 65 73 2c 53 74 65 72 65 6f 2c 43 |Samples,Stereo,C| 00001f90 6f 70 79 2c 41 6d 65 6e 64 22 2c 22 54 75 6e 65 |opy,Amend","Tune| 00001fa0 22 29 0d 0e 6a 8c 6d 61 69 6e 6d 65 6e 75 25 3d |")..j.mainmenu%=| 00001fb0 a4 6d 61 6b 65 6d 65 6e 28 22 7c 77 69 6e 69 6e |.makemen("|winin| 00001fc0 49 6e 66 6f 2c 7c 77 69 6e 73 6d 53 61 76 65 2c |Info,|winsmSave,| 00001fd0 53 65 74 74 69 6e 67 73 2c 43 72 65 61 74 65 2c |Settings,Create,| 00001fe0 22 2b a4 6c 69 74 28 74 75 6e 65 6c 6f 61 64 65 |"+.lit(tuneloade| 00001ff0 64 25 29 2b 22 43 6c 65 61 72 2c 7c 77 69 6e 74 |d%)+"Clear,|wint| 00002000 6e 22 2b a4 6c 69 74 28 74 75 6e 65 6c 6f 61 64 |n"+.lit(tuneload| 00002010 65 64 25 29 2b 22 54 75 6e 65 2c 51 75 69 74 22 |ed%)+"Tune,Quit"| 00002020 2c 22 41 50 20 54 72 61 63 6b 65 72 22 29 0d 0e |,"AP Tracker")..| 00002030 74 35 e7 20 6d 65 6e 75 70 74 72 25 3e 6d 65 6e |t5. menuptr%>men| 00002040 65 6e 64 25 20 8c 20 85 20 31 37 2c 22 4e 6f 74 |end% . . 17,"Not| 00002050 20 65 6e 6f 75 67 68 20 6d 65 6e 75 20 73 70 61 | enough menu spa| 00002060 63 65 22 0d 0e 7e 2b f2 73 65 74 69 63 6f 6e 74 |ce"..~+.seticont| 00002070 65 78 74 28 6e 65 77 74 72 61 63 6b 25 2c 35 2c |ext(newtrack%,5,| 00002080 c3 28 64 65 66 76 6f 69 63 65 73 25 29 29 0d 0e |.(defvoices%))..| 00002090 88 2c f2 73 65 74 69 63 6f 6e 74 65 78 74 28 73 |.,.seticontext(s| 000020a0 61 76 65 70 61 74 74 65 72 6e 25 2c 36 2c c3 28 |avepattern%,6,.(| 000020b0 73 61 76 65 70 61 74 25 29 29 0d 0e 92 05 e1 0d |savepat%))......| 000020c0 0e 9c 05 3a 0d 0e a6 10 dd a4 6c 69 74 28 74 65 |...:......lit(te| 000020d0 73 74 25 29 0d 0e b0 21 e7 20 74 65 73 74 25 20 |st%)...!. test% | 000020e0 8c 20 3d 22 7c 6c 69 74 31 22 20 8b 20 3d 22 7c |. ="|lit1" . ="|| 000020f0 6c 69 74 30 22 0d 0e ba 05 3a 0d 0e c4 10 dd a4 |lit0"....:......| 00002100 74 69 63 28 74 65 73 74 25 29 0d 0e ce 21 e7 20 |tic(test%)...!. | 00002110 74 65 73 74 25 20 8c 20 3d 22 7c 74 69 63 31 22 |test% . ="|tic1"| 00002120 20 8b 20 3d 22 7c 74 69 63 30 22 0d 0e d8 05 3a | . ="|tic0"....:| 00002130 0d 0e e2 15 dd f2 6d 65 6e 75 69 74 65 6d 28 74 |......menuitem(t| 00002140 65 78 74 24 29 0d 0e ec 24 ea 20 6d 65 6e 75 66 |ext$)...$. menuf| 00002150 6c 61 67 73 25 2c 69 63 6f 6e 66 6c 61 67 73 25 |lags%,iconflags%| 00002160 2c 73 75 62 6d 65 6e 75 25 0d 0e f6 09 69 69 25 |,submenu%....ii%| 00002170 3d a3 0d 0f 00 0f 73 75 62 6d 65 6e 75 25 3d 2d |=.....submenu%=-| 00002180 31 0d 0f 0a 12 e7 20 74 65 78 74 24 3d 22 22 20 |1..... text$="" | 00002190 8c 20 e1 0d 0f 14 10 6d 65 6e 75 66 6c 61 67 73 |. .....menuflags| 000021a0 25 3d 30 0d 0f 1e 18 69 63 6f 6e 66 6c 61 67 73 |%=0....iconflags| 000021b0 25 3d 26 30 37 30 30 30 30 32 31 0d 0f 28 14 c8 |%=&07000021..(..| 000021c0 95 20 c0 74 65 78 74 24 2c 31 29 3d 22 7c 22 0d |. .text$,1)="|".| 000021d0 0f 32 14 c8 8e 20 c1 74 65 78 74 24 2c 32 2c 33 |.2... .text$,2,3| 000021e0 29 20 ca 0d 0f 3c 0c c9 20 22 6c 69 74 22 3a 0d |) ...<.. "lit":.| 000021f0 0f 46 2a 69 63 6f 6e 66 6c 61 67 73 25 2b 3d 28 |.F*iconflags%+=(| 00002200 31 3c 3c 32 32 29 2a 28 31 2d bb 28 c1 74 65 78 |1<<22)*(1-.(.tex| 00002210 74 24 2c 35 2c 31 29 29 29 0d 0f 50 13 74 65 78 |t$,5,1)))..P.tex| 00002220 74 24 3d c1 74 65 78 74 24 2c 36 29 0d 0f 5a 0c |t$=.text$,6)..Z.| 00002230 c9 20 22 74 69 63 22 3a 0d 0f 64 1e 6d 65 6e 75 |. "tic":..d.menu| 00002240 66 6c 61 67 73 25 2b 3d bb 28 c1 74 65 78 74 24 |flags%+=.(.text$| 00002250 2c 35 2c 31 29 29 0d 0f 6e 13 74 65 78 74 24 3d |,5,1))..n.text$=| 00002260 c1 74 65 78 74 24 2c 36 29 0d 0f 78 0c c9 20 22 |.text$,6)..x.. "| 00002270 77 69 6e 22 3a 0d 0f 82 14 c8 8e 20 c1 74 65 78 |win":...... .tex| 00002280 74 24 2c 35 2c 32 29 20 ca 0d 0f 8c 19 c9 20 22 |t$,5,2) ...... "| 00002290 69 6e 22 3a 73 75 62 6d 65 6e 75 25 3d 69 6e 66 |in":submenu%=inf| 000022a0 6f 25 0d 0f 96 1d c9 20 22 74 6e 22 3a 73 75 62 |o%..... "tn":sub| 000022b0 6d 65 6e 75 25 3d 74 75 6e 65 6d 65 6e 75 25 0d |menu%=tunemenu%.| 000022c0 0f a0 1d c9 20 22 6e 74 22 3a 73 75 62 6d 65 6e |.... "nt":submen| 000022d0 75 25 3d 6e 65 77 74 72 61 63 6b 25 0d 0f aa 1d |u%=newtrack%....| 000022e0 c9 20 22 73 61 22 3a 73 75 62 6d 65 6e 75 25 3d |. "sa":submenu%=| 000022f0 73 61 76 65 74 75 6e 65 25 0d 0f b4 1d c9 20 22 |savetune%..... "| 00002300 73 6d 22 3a 73 75 62 6d 65 6e 75 25 3d 73 61 76 |sm":submenu%=sav| 00002310 65 6d 65 6e 75 25 0d 0f be 20 c9 20 22 73 70 22 |emenu%... . "sp"| 00002320 3a 73 75 62 6d 65 6e 75 25 3d 73 61 76 65 70 61 |:submenu%=savepa| 00002330 74 74 65 72 6e 25 0d 0f c8 21 c9 20 22 61 70 22 |ttern%...!. "ap"| 00002340 3a 73 75 62 6d 65 6e 75 25 3d 73 61 76 65 70 61 |:submenu%=savepa| 00002350 74 74 65 72 6e 73 25 0d 0f d2 1d c9 20 22 73 68 |tterns%..... "sh| 00002360 22 3a 73 75 62 6d 65 6e 75 25 3d 73 61 76 65 68 |":submenu%=saveh| 00002370 65 6c 70 25 0d 0f dc 1f c9 20 22 73 73 22 3a 73 |elp%..... "ss":s| 00002380 75 62 6d 65 6e 75 25 3d 73 61 76 65 73 61 6d 70 |ubmenu%=savesamp| 00002390 6c 65 25 0d 0f e6 1e c9 20 22 73 76 22 3a 73 75 |le%..... "sv":su| 000023a0 62 6d 65 6e 75 25 3d 73 65 74 76 6f 6c 75 6d 65 |bmenu%=setvolume| 000023b0 25 0d 0f f0 1d c9 20 22 73 64 22 3a 73 75 62 6d |%..... "sd":subm| 000023c0 65 6e 75 25 3d 73 61 76 65 64 75 6d 70 25 0d 0f |enu%=savedump%..| 000023d0 fa 05 cb 0d 10 04 13 74 65 78 74 24 3d c1 74 65 |.......text$=.te| 000023e0 78 74 24 2c 37 29 0d 10 0e 05 cb 0d 10 18 05 ce |xt$,7)..........| 000023f0 0d 10 22 29 e7 20 a9 28 74 65 78 74 24 29 3e 6d |.."). .(text$)>m| 00002400 65 6e 75 6d 61 78 25 20 6d 65 6e 75 6d 61 78 25 |enumax% menumax%| 00002410 3d a9 28 74 65 78 74 24 29 0d 10 2c 19 6d 65 6e |=.(text$)..,.men| 00002420 75 70 74 72 25 21 30 3d 6d 65 6e 75 66 6c 61 67 |uptr%!0=menuflag| 00002430 73 25 0d 10 36 17 6d 65 6e 75 70 74 72 25 21 34 |s%..6.menuptr%!4| 00002440 3d 73 75 62 6d 65 6e 75 25 0d 10 40 19 6d 65 6e |=submenu%..@.men| 00002450 75 70 74 72 25 21 38 3d 69 63 6f 6e 66 6c 61 67 |uptr%!8=iconflag| 00002460 73 25 0d 10 4a 13 e7 20 a9 28 74 65 78 74 24 29 |s%..J.. .(text$)| 00002470 3c 31 32 20 8c 0d 10 54 18 24 28 6d 65 6e 75 70 |<12 ...T.$(menup| 00002480 74 72 25 2b 31 32 29 3d 74 65 78 74 24 0d 10 5e |tr%+12)=text$..^| 00002490 05 cc 0d 10 68 19 6d 65 6e 65 6e 64 25 2d 3d 28 |....h.menend%-=(| 000024a0 a9 28 74 65 78 74 24 29 2b 31 29 0d 10 72 28 6d |.(text$)+1)..r(m| 000024b0 65 6e 75 70 74 72 25 21 38 3d 28 6d 65 6e 75 70 |enuptr%!8=(menup| 000024c0 74 72 25 21 38 29 20 84 20 25 31 30 30 30 30 30 |tr%!8) . %100000| 000024d0 30 30 30 0d 10 7c 17 6d 65 6e 75 70 74 72 25 21 |000..|.menuptr%!| 000024e0 31 32 3d 6d 65 6e 65 6e 64 25 0d 10 86 12 6d 65 |12=menend%....me| 000024f0 6e 75 70 74 72 25 21 31 36 3d 2d 31 0d 10 90 18 |nuptr%!16=-1....| 00002500 6d 65 6e 75 70 74 72 25 21 32 30 3d a9 28 74 65 |menuptr%!20=.(te| 00002510 78 74 24 29 0d 10 9a 12 24 6d 65 6e 65 6e 64 25 |xt$)....$menend%| 00002520 3d 74 65 78 74 24 0d 10 a4 05 cd 0d 10 ae 10 6d |=text$.........m| 00002530 65 6e 75 70 74 72 25 2b 3d 32 34 0d 10 b8 05 e1 |enuptr%+=24.....| 00002540 0d 10 c2 05 3a 0d 10 cc 0f dd a4 70 61 72 28 73 |....:......par(s| 00002550 65 70 24 29 0d 10 d6 25 69 31 25 3d 69 25 2b 31 |ep$)...%i1%=i%+1| 00002560 3a 69 25 3d a7 6d 65 6e 75 24 2b 73 65 70 24 2c |:i%=.menu$+sep$,| 00002570 73 65 70 24 2c 69 31 25 29 0d 10 e0 17 3d c1 6d |sep$,i1%)....=.m| 00002580 65 6e 75 24 2c 69 31 25 2c 69 25 2d 69 31 25 29 |enu$,i1%,i%-i1%)| 00002590 0d 10 ea 05 3a 0d 10 f4 1f dd a4 6d 61 6b 65 6d |....:......makem| 000025a0 65 6e 28 6d 65 6e 75 24 2c 6d 65 6e 75 74 69 74 |en(menu$,menutit| 000025b0 6c 65 24 29 0d 10 fe 16 ea 20 6d 65 6e 75 6d 61 |le$)..... menuma| 000025c0 78 25 2c 77 61 73 70 74 72 25 0d 11 08 14 77 61 |x%,wasptr%....wa| 000025d0 73 70 74 72 25 3d 6d 65 6e 75 70 74 72 25 0d 11 |sptr%=menuptr%..| 000025e0 12 0f 6d 65 6e 75 6d 61 78 25 3d 31 30 0d 11 1c |..menumax%=10...| 000025f0 08 69 25 3d 30 0d 11 26 12 6d 65 6e 75 70 74 72 |.i%=0..&.menuptr| 00002600 25 21 32 30 3d 34 30 0d 11 30 18 24 6d 65 6e 75 |%!20=40..0.$menu| 00002610 70 74 72 25 3d 6d 65 6e 75 74 69 74 6c 65 24 0d |ptr%=menutitle$.| 00002620 11 3a 15 6d 65 6e 75 70 74 72 25 3f 31 32 3d 74 |.:.menuptr%?12=t| 00002630 66 63 6f 6c 0d 11 44 15 6d 65 6e 75 70 74 72 25 |fcol..D.menuptr%| 00002640 3f 31 33 3d 6d 62 63 6f 6c 0d 11 4e 15 6d 65 6e |?13=mbcol..N.men| 00002650 75 70 74 72 25 3f 31 34 3d 77 66 63 6f 6c 0d 11 |uptr%?14=wfcol..| 00002660 58 15 6d 65 6e 75 70 74 72 25 3f 31 35 3d 77 62 |X.menuptr%?15=wb| 00002670 63 6f 6c 0d 11 62 18 6d 61 78 61 64 64 72 25 3d |col..b.maxaddr%=| 00002680 6d 65 6e 75 70 74 72 25 2b 31 36 0d 11 6c 11 6d |menuptr%+16..l.m| 00002690 65 6e 75 70 74 72 25 21 32 34 3d 30 0d 11 76 10 |enuptr%!24=0..v.| 000026a0 6d 65 6e 75 70 74 72 25 2b 3d 32 38 0d 11 80 05 |menuptr%+=28....| 000026b0 f5 0d 11 8a 13 69 74 65 6d 24 3d a4 70 61 72 28 |.....item$=.par(| 000026c0 22 2c 22 29 0d 11 94 14 f2 6d 65 6e 75 69 74 65 |",").....menuite| 000026d0 6d 28 69 74 65 6d 24 29 0d 11 9e 0e fd 20 69 74 |m(item$)..... it| 000026e0 65 6d 24 3d 22 22 0d 11 a8 25 6d 65 6e 75 70 74 |em$=""...%menupt| 000026f0 72 25 21 2d 32 34 3d 28 6d 65 6e 75 70 74 72 25 |r%!-24=(menuptr%| 00002700 21 2d 32 34 29 20 84 20 26 38 30 0d 11 b2 1c 21 |!-24) . &80....!| 00002710 6d 61 78 61 64 64 72 25 3d 6d 65 6e 75 6d 61 78 |maxaddr%=menumax| 00002720 25 2a 31 36 2b 33 32 0d 11 bc 0c 3d 77 61 73 70 |%*16+32....=wasp| 00002730 74 72 25 0d 11 c6 05 3a 0d 11 d0 1d dd f2 6f 70 |tr%....:......op| 00002740 65 6e 6d 65 6e 75 28 6f 75 72 25 2c 6d 25 2c 78 |enmenu(our%,m%,x| 00002750 25 2c 79 25 29 0d 11 da 14 6d 65 6e 75 68 61 6e |%,y%)....menuhan| 00002760 64 6c 65 25 3d 6f 75 72 25 0d 11 e4 0d 6d 65 6e |dle%=our%....men| 00002770 75 78 25 3d 78 25 0d 11 ee 0d 6d 65 6e 75 79 25 |ux%=x%....menuy%| 00002780 3d 79 25 0d 11 f8 22 c8 99 20 22 57 69 6d 70 5f |=y%...".. "Wimp_| 00002790 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 25 2c |CreateMenu",,m%,| 000027a0 78 25 2c 79 25 0d 12 02 05 e1 0d 12 0c 05 3a 0d |x%,y%.........:.| 000027b0 12 16 18 dd f2 6d 65 6e 75 73 65 6c 65 63 74 28 |.....menuselect(| 000027c0 6d 65 6e 75 73 25 29 0d 12 20 0b ea 20 72 65 64 |menus%).. .. red| 000027d0 6f 25 0d 12 2a 21 c8 99 20 22 57 69 6d 70 5f 47 |o%..*!.. "Wimp_G| 000027e0 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c |etPointerInfo",,| 000027f0 71 32 25 0d 12 34 1b 72 65 64 6f 25 3d 28 28 28 |q2%..4.redo%=(((| 00002800 71 32 25 21 38 29 20 80 20 31 29 3e 30 29 0d 12 |q2%!8) . 1)>0)..| 00002810 3e 14 c8 8e 20 6d 65 6e 75 68 61 6e 64 6c 65 25 |>... menuhandle%| 00002820 20 ca 0d 12 48 0a c9 20 31 30 31 3a 0d 12 52 10 | ...H.. 101:..R.| 00002830 c8 8e 20 21 6d 65 6e 75 73 25 20 ca 0d 12 5c 08 |.. !menus% ...\.| 00002840 c9 20 32 3a 0d 12 66 28 f2 73 65 74 69 63 6f 6e |. 2:..f(.seticon| 00002850 74 65 78 74 28 73 65 74 74 69 6e 67 73 25 2c 35 |text(settings%,5| 00002860 2c c3 28 70 61 74 6c 65 6e 25 29 29 0d 12 70 1c |,.(patlen%))..p.| 00002870 f2 6f 70 65 6e 77 69 6e 64 6f 77 28 73 65 74 74 |.openwindow(sett| 00002880 69 6e 67 73 25 2c 30 29 0d 12 7a 20 c9 20 33 3a |ings%,0)..z . 3:| 00002890 f2 6f 70 65 6e 77 69 6e 64 6f 77 28 6e 65 77 74 |.openwindow(newt| 000028a0 72 61 63 6b 25 2c 30 29 0d 12 84 08 c9 20 34 3a |rack%,0)..... 4:| 000028b0 0d 12 8e 0e f2 63 6c 65 61 72 64 61 74 61 0d 12 |.....cleardata..| 000028c0 98 08 c9 20 35 3a 0d 12 a2 11 c8 8e 20 6d 65 6e |... 5:...... men| 000028d0 75 73 25 21 34 20 ca 0d 12 ac 34 c9 20 30 3a f2 |us%!4 ....4. 0:.| 000028e0 67 65 74 6e 61 6d 65 73 3a f2 74 75 6e 65 69 6e |getnames:.tunein| 000028f0 66 6f 3a f2 6f 70 65 6e 77 69 6e 64 6f 77 28 74 |fo:.openwindow(t| 00002900 75 6e 65 69 6e 66 6f 25 2c 30 29 0d 12 b6 10 c9 |uneinfo%,0).....| 00002910 20 31 3a f2 73 61 6d 70 6c 65 73 0d 12 c0 0f c9 | 1:.samples.....| 00002920 20 32 3a f2 73 74 65 72 65 6f 0d 12 ca 23 c9 20 | 2:.stereo...#. | 00002930 33 3a f2 6f 70 65 6e 77 69 6e 64 6f 77 28 63 6f |3:.openwindow(co| 00002940 70 79 70 61 74 74 65 72 6e 25 2c 30 29 0d 12 d4 |pypattern%,0)...| 00002950 08 c9 20 34 3a 0d 12 de 2a f2 73 65 74 69 63 6f |.. 4:...*.setico| 00002960 6e 74 65 78 74 28 61 6d 65 6e 64 74 72 61 63 6b |ntext(amendtrack| 00002970 25 2c 32 2c c3 28 64 65 6c 70 61 74 25 29 29 0d |%,2,.(delpat%)).| 00002980 12 e8 2d f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |..-.seticontext(| 00002990 61 6d 65 6e 64 74 72 61 63 6b 25 2c 31 30 2c c3 |amendtrack%,10,.| 000029a0 28 64 65 6c 76 6f 69 63 65 25 29 29 0d 12 f2 1e |(delvoice%))....| 000029b0 f2 6f 70 65 6e 77 69 6e 64 6f 77 28 61 6d 65 6e |.openwindow(amen| 000029c0 64 74 72 61 63 6b 25 2c 30 29 0d 12 fc 05 cb 0d |dtrack%,0)......| 000029d0 13 06 19 c9 20 36 3a f2 73 68 75 74 64 6f 77 6e |.... 6:.shutdown| 000029e0 3a 72 65 64 6f 25 3d a3 0d 13 10 05 cb 0d 13 1a |:redo%=.........| 000029f0 15 e7 20 72 65 64 6f 25 20 f2 6d 61 69 6e 6d 65 |.. redo% .mainme| 00002a00 6e 75 0d 13 24 0a c9 20 31 30 36 3a 0d 13 2e 10 |nu..$.. 106:....| 00002a10 c8 8e 20 21 6d 65 6e 75 73 25 20 ca 0d 13 38 08 |.. !menus% ...8.| 00002a20 c9 20 32 3a 0d 13 42 1c f2 64 65 6c 65 74 65 73 |. 2:..B..deletes| 00002a30 61 6d 70 6c 65 28 73 61 6d 70 6c 65 6e 6f 25 29 |ample(sampleno%)| 00002a40 0d 13 4c 08 c9 20 33 3a 0d 13 56 1e 73 61 76 65 |..L.. 3:..V.save| 00002a50 68 65 61 64 65 72 25 3d ac 28 73 61 76 65 68 65 |header%=.(savehe| 00002a60 61 64 65 72 25 29 0d 13 60 20 f2 6d 61 6b 65 73 |ader%)..` .makes| 00002a70 61 6d 70 6c 65 6d 65 6e 75 28 73 61 6d 70 6c 65 |amplemenu(sample| 00002a80 6e 6f 25 2d 31 29 0d 13 6a 05 cb 0d 13 74 05 cb |no%-1)..j....t..| 00002a90 0d 13 7e 3c e7 20 72 65 64 6f 25 20 8c 20 f2 6f |..~<. redo% . .o| 00002aa0 70 65 6e 6d 65 6e 75 28 6d 65 6e 75 68 61 6e 64 |penmenu(menuhand| 00002ab0 6c 65 25 2c 6d 61 69 6e 6d 65 6e 75 25 2c 6d 65 |le%,mainmenu%,me| 00002ac0 6e 75 78 25 2c 6d 65 6e 75 79 25 29 0d 13 88 05 |nux%,menuy%)....| 00002ad0 e1 0d 13 92 05 3a 0d 13 9c 26 dd f2 73 65 74 69 |.....:...&..seti| 00002ae0 63 6f 6e 74 79 70 65 28 77 69 6e 64 6f 77 25 2c |contype(window%,| 00002af0 69 63 6f 6e 25 2c 74 79 70 65 25 29 0d 13 a6 11 |icon%,type%)....| 00002b00 71 32 25 21 30 3d 77 69 6e 64 6f 77 25 0d 13 b0 |q2%!0=window%...| 00002b10 0f 71 32 25 21 34 3d 69 63 6f 6e 25 0d 13 ba 1f |.q2%!4=icon%....| 00002b20 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 00002b30 53 74 61 74 65 22 2c 2c 71 32 25 0d 13 c4 14 69 |State",,q2%....i| 00002b40 63 6f 6e 62 6c 6f 63 6b 25 3d 71 32 25 2b 38 0d |conblock%=q2%+8.| 00002b50 13 ce 1c 69 63 6f 6e 66 6c 61 67 73 25 3d 69 63 |...iconflags%=ic| 00002b60 6f 6e 62 6c 6f 63 6b 25 21 31 36 0d 13 d8 16 65 |onblock%!16....e| 00002b70 6f 72 77 6f 72 64 25 3d 74 79 70 65 25 3c 3c 31 |orword%=type%<<1| 00002b80 32 0d 13 e2 15 63 6c 65 61 72 77 6f 72 64 25 3d |2....clearword%=| 00002b90 31 35 3c 3c 31 32 0d 13 ec 11 71 32 25 21 30 3d |15<<12....q2%!0=| 00002ba0 77 69 6e 64 6f 77 25 0d 13 f6 0f 71 32 25 21 34 |window%....q2%!4| 00002bb0 3d 69 63 6f 6e 25 0d 14 00 12 71 32 25 21 38 3d |=icon%....q2%!8=| 00002bc0 65 6f 72 77 6f 72 64 25 0d 14 0a 15 71 32 25 21 |eorword%....q2%!| 00002bd0 31 32 3d 63 6c 65 61 72 77 6f 72 64 25 0d 14 14 |12=clearword%...| 00002be0 1f c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 6f |... "Wimp_SetIco| 00002bf0 6e 53 74 61 74 65 22 2c 2c 71 32 25 0d 14 1e 05 |nState",,q2%....| 00002c00 e1 0d 14 28 05 3a 0d 14 32 1e dd f2 77 72 69 74 |...(.:..2...writ| 00002c10 65 61 62 6c 65 28 77 69 6e 64 6f 77 25 2c 69 63 |eable(window%,ic| 00002c20 6f 6e 25 29 0d 14 3c 22 f2 73 65 74 69 63 6f 6e |on%)..<".seticon| 00002c30 74 79 70 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f |type(window%,ico| 00002c40 6e 25 2c 31 35 29 0d 14 46 05 e1 0d 14 50 05 3a |n%,15)..F....P.:| 00002c50 0d 14 5a 20 dd f2 75 6e 77 72 69 74 65 61 62 6c |..Z ..unwriteabl| 00002c60 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 |e(window%,icon%)| 00002c70 0d 14 64 21 f2 73 65 74 69 63 6f 6e 74 79 70 65 |..d!.seticontype| 00002c80 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 30 |(window%,icon%,0| 00002c90 29 0d 14 6e 05 e1 0d 14 78 05 3a 0d 14 82 21 dd |)..n....x.:...!.| 00002ca0 f2 6d 61 6b 65 73 65 6c 65 63 74 65 64 28 77 69 |.makeselected(wi| 00002cb0 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 0d 14 8c 11 |ndow%,icon%)....| 00002cc0 71 32 25 21 30 3d 77 69 6e 64 6f 77 25 0d 14 96 |q2%!0=window%...| 00002cd0 0f 71 32 25 21 34 3d 69 63 6f 6e 25 0d 14 a0 0e |.q2%!4=icon%....| 00002ce0 71 32 25 21 38 3d 32 5e 32 31 0d 14 aa 0f 71 32 |q2%!8=2^21....q2| 00002cf0 25 21 31 32 3d 32 5e 32 31 0d 14 b4 1f c8 99 20 |%!12=2^21...... | 00002d00 22 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 |"Wimp_SetIconSta| 00002d10 74 65 22 2c 2c 71 32 25 0d 14 be 05 e1 0d 14 c8 |te",,q2%........| 00002d20 05 3a 0d 14 d2 23 dd f2 6d 61 6b 65 75 6e 73 65 |.:...#..makeunse| 00002d30 6c 65 63 74 65 64 28 77 69 6e 64 6f 77 25 2c 69 |lected(window%,i| 00002d40 63 6f 6e 25 29 0d 14 dc 11 71 32 25 21 30 3d 77 |con%)....q2%!0=w| 00002d50 69 6e 64 6f 77 25 0d 14 e6 0f 71 32 25 21 34 3d |indow%....q2%!4=| 00002d60 69 63 6f 6e 25 0d 14 f0 0b 71 32 25 21 38 3d 30 |icon%....q2%!8=0| 00002d70 0d 14 fa 0f 71 32 25 21 31 32 3d 32 5e 32 31 0d |....q2%!12=2^21.| 00002d80 15 04 1f c8 99 20 22 57 69 6d 70 5f 53 65 74 49 |..... "Wimp_SetI| 00002d90 63 6f 6e 53 74 61 74 65 22 2c 2c 71 32 25 0d 15 |conState",,q2%..| 00002da0 0e 05 e1 0d 15 18 05 3a 0d 15 22 21 dd a4 69 73 |.......:.."!..is| 00002db0 69 74 73 65 6c 65 63 74 65 64 28 77 69 6e 64 6f |itselected(windo| 00002dc0 77 25 2c 69 63 6f 6e 25 29 0d 15 2c 11 71 32 25 |w%,icon%)..,.q2%| 00002dd0 21 30 3d 77 69 6e 64 6f 77 25 0d 15 36 0f 71 32 |!0=window%..6.q2| 00002de0 25 21 34 3d 69 63 6f 6e 25 0d 15 40 1f c8 99 20 |%!4=icon%..@... | 00002df0 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 00002e00 74 65 22 2c 2c 71 32 25 0d 15 4a 14 69 63 6f 6e |te",,q2%..J.icon| 00002e10 62 6c 6f 63 6b 25 3d 71 32 25 2b 38 0d 15 54 1c |block%=q2%+8..T.| 00002e20 69 63 6f 6e 66 6c 61 67 73 25 3d 69 63 6f 6e 62 |iconflags%=iconb| 00002e30 6c 6f 63 6b 25 21 31 36 0d 15 5e 25 e7 20 28 69 |lock%!16..^%. (i| 00002e40 63 6f 6e 66 6c 61 67 73 25 20 80 20 32 5e 32 31 |conflags% . 2^21| 00002e50 29 3d 30 20 8c 20 3d 30 20 8b 20 3d 31 0d 15 68 |)=0 . =0 . =1..h| 00002e60 05 3a 0d 15 72 1e dd f2 6d 6f 76 65 63 61 72 65 |.:..r...movecare| 00002e70 74 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 29 |t(window%,icon%)| 00002e80 0d 15 7c 2a 70 25 3d 28 a9 28 a4 69 63 6f 6e 74 |..|*p%=(.(.icont| 00002e90 65 78 74 28 77 69 6e 64 6f 77 25 2c 69 63 6f 6e |ext(window%,icon| 00002ea0 25 29 29 2b 31 29 20 81 20 32 0d 15 86 34 c8 99 |%))+1) . 2...4..| 00002eb0 20 22 57 69 6d 70 5f 53 65 74 43 61 72 65 74 50 | "Wimp_SetCaretP| 00002ec0 6f 73 69 74 69 6f 6e 22 2c 77 69 6e 64 6f 77 25 |osition",window%| 00002ed0 2c 69 63 6f 6e 25 2c 2c 2c 2d 31 2c 70 25 0d 15 |,icon%,,,-1,p%..| 00002ee0 90 05 e1 0d 15 9a 05 3a 0d 15 a4 14 dd a4 66 69 |.......:......fi| 00002ef0 6c 65 6c 65 6e 28 66 69 6c 65 24 29 0d 15 ae 0f |lelen(file$)....| 00002f00 43 25 3d ad 28 66 69 6c 65 24 29 0d 15 b8 0d 6c |C%=.(file$)....l| 00002f10 65 6e 25 3d a2 23 43 25 0d 15 c2 09 d9 20 23 43 |en%=.#C%..... #C| 00002f20 25 0d 15 cc 09 3d 6c 65 6e 25 0d 15 d6 05 3a 0d |%....=len%....:.| 00002f30 15 e0 0e dd f2 73 61 76 65 66 69 6c 65 0d 15 ea |.....savefile...| 00002f40 26 70 61 74 68 6e 61 6d 65 24 3d a4 73 74 72 69 |&pathname$=.stri| 00002f50 6e 67 66 72 6f 6d 6d 65 6d 6f 72 79 28 71 25 2b |ngfrommemory(q%+| 00002f60 34 34 29 0d 15 f4 26 6c 65 61 66 6e 61 6d 65 24 |44)...&leafname$| 00002f70 3d a4 69 63 6f 6e 74 65 78 74 28 73 61 76 65 68 |=.icontext(saveh| 00002f80 61 6e 64 6c 65 25 2c 33 29 0d 15 fe 16 e7 20 6c |andle%,3)..... l| 00002f90 65 61 66 6e 61 6d 65 24 3d 22 22 20 8c 20 e1 0d |eafname$="" . ..| 00002fa0 16 08 21 66 75 6c 6c 6e 61 6d 65 24 3d 70 61 74 |..!fullname$=pat| 00002fb0 68 6e 61 6d 65 24 2b 6c 65 61 66 6e 61 6d 65 24 |hname$+leafname$| 00002fc0 0d 16 12 13 c8 8e 20 67 6c 6f 62 61 6c 72 65 66 |...... globalref| 00002fd0 25 20 ca 0d 16 1c 11 c9 20 31 3a f2 73 61 76 65 |% ...... 1:.save| 00002fe0 74 75 6e 65 0d 16 26 1e c9 20 32 3a f2 73 61 76 |tune..&.. 2:.sav| 00002ff0 65 73 61 6d 70 6c 65 28 73 61 6d 70 6c 65 6e 6f |esample(sampleno| 00003000 25 29 0d 16 30 1e c9 20 33 3a f2 73 61 76 65 70 |%)..0.. 3:.savep| 00003010 61 74 74 65 72 6e 28 73 61 76 65 70 61 74 25 29 |attern(savepat%)| 00003020 0d 16 3a 1c c9 20 34 3a f2 73 61 76 65 68 65 6c |..:.. 4:.savehel| 00003030 70 28 66 75 6c 6c 6e 61 6d 65 24 29 0d 16 44 20 |p(fullname$)..D | 00003040 c9 20 35 3a f2 73 61 76 65 70 61 74 74 65 72 6e |. 5:.savepattern| 00003050 73 28 6c 65 61 66 6e 61 6d 65 24 29 0d 16 4e 1c |s(leafname$)..N.| 00003060 c9 20 36 3a f2 73 61 76 65 64 75 6d 70 28 66 75 |. 6:.savedump(fu| 00003070 6c 6c 6e 61 6d 65 24 29 0d 16 58 05 cb 0d 16 62 |llname$)..X....b| 00003080 05 e1 0d 16 6c 05 3a 0d 16 76 35 dd f2 6c 6f 61 |....l.:..v5..loa| 00003090 64 77 69 74 68 70 61 74 68 76 61 72 69 61 62 6c |dwithpathvariabl| 000030a0 65 28 76 61 72 69 61 62 6c 65 24 2c 66 69 6c 65 |e(variable$,file| 000030b0 6e 61 6d 65 24 2c 61 64 64 72 25 29 0d 16 80 32 |name$,addr%)...2| 000030c0 ff 28 22 4c 4f 41 44 20 22 2b 76 61 72 69 61 62 |.("LOAD "+variab| 000030d0 6c 65 24 2b 22 2e 22 2b 66 69 6c 65 6e 61 6d 65 |le$+"."+filename| 000030e0 24 2b 22 20 22 2b c3 7e 61 64 64 72 25 29 0d 16 |$+" "+.~addr%)..| 000030f0 8a 05 e1 0d 16 94 05 3a 0d 16 9e 36 dd f2 73 61 |.......:...6..sa| 00003100 76 65 77 69 74 68 70 61 74 68 73 74 72 69 6e 67 |vewithpathstring| 00003110 28 66 69 6c 65 6e 61 6d 65 24 2c 70 61 74 68 24 |(filename$,path$| 00003120 2c 61 64 64 72 25 2c 62 79 74 65 73 25 29 0d 16 |,addr%,bytes%)..| 00003130 a8 1e 70 61 74 68 32 24 3d 70 61 74 68 24 2b 22 |..path2$=path$+"| 00003140 2e 22 2b 66 69 6c 65 6e 61 6d 65 24 0d 16 b2 30 |."+filename$...0| 00003150 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 30 2c 70 |.. "OS_File",0,p| 00003160 61 74 68 32 24 2c 30 2c 30 2c 61 64 64 72 25 2c |ath2$,0,0,addr%,| 00003170 61 64 64 72 25 2b 62 79 74 65 73 25 0d 16 bc 05 |addr%+bytes%....| 00003180 e1 0d 16 c6 05 3a 0d 16 d0 0f dd a4 64 69 67 69 |.....:......digi| 00003190 74 28 64 24 29 0d 16 da 21 e7 20 64 24 3e 3d 22 |t(d$)...!. d$>="| 000031a0 30 22 20 80 20 64 24 3c 3d 22 39 22 20 8c 20 3d |0" . d$<="9" . =| 000031b0 b9 20 8b 20 3d a3 0d 16 e4 05 3a 0d 16 ee 1d dd |. . =.....:.....| 000031c0 f2 73 65 74 74 69 74 6c 65 28 62 6c 6f 63 6b 25 |.settitle(block%| 000031d0 2c 74 69 74 6c 65 24 29 0d 16 f8 13 61 64 64 72 |,title$)....addr| 000031e0 25 3d 62 6c 6f 63 6b 25 2b 37 32 0d 17 02 12 6c |%=block%+72....l| 000031f0 65 6e 25 3d a9 28 74 69 74 6c 65 24 29 0d 17 0c |en%=.(title$)...| 00003200 08 63 25 3d 30 0d 17 16 0d c8 95 20 6c 65 6e 25 |.c%=0...... len%| 00003210 3e 30 0d 17 20 1f 61 64 64 72 25 3f 63 25 3d 97 |>0.. .addr%?c%=.| 00003220 28 c1 74 69 74 6c 65 24 2c 63 25 2b 31 2c 31 29 |(.title$,c%+1,1)| 00003230 29 0d 17 2a 09 63 25 2b 3d 31 0d 17 34 0b 6c 65 |)..*.c%+=1..4.le| 00003240 6e 25 2d 3d 31 0d 17 3e 05 ce 0d 17 48 0e 61 64 |n%-=1..>....H.ad| 00003250 64 72 25 3f 63 25 3d 30 0d 17 52 05 e1 0d 17 5c |dr%?c%=0..R....\| 00003260 05 3a 0d 17 66 10 dd a4 72 65 61 64 73 74 72 69 |.:..f...readstri| 00003270 6e 67 0d 17 70 10 ea 20 6f 75 74 24 2c 62 79 74 |ng..p.. out$,byt| 00003280 65 25 0d 17 7a 0f 61 62 6f 72 74 24 3d bd 28 30 |e%..z.abort$=.(0| 00003290 29 0d 17 84 19 e7 20 c5 23 68 61 6e 64 6c 65 25 |)..... .#handle%| 000032a0 20 8c 20 3d 61 62 6f 72 74 24 0d 17 8e 0b 6f 75 | . =abort$....ou| 000032b0 74 24 3d 22 22 0d 17 98 05 f5 0d 17 a2 13 62 79 |t$="".........by| 000032c0 74 65 25 3d 9a 23 68 61 6e 64 6c 65 25 0d 17 ac |te%=.#handle%...| 000032d0 32 e7 20 62 79 74 65 25 3e 33 31 20 80 20 ac 28 |2. byte%>31 . .(| 000032e0 c5 23 68 61 6e 64 6c 65 25 29 20 8c 20 6f 75 74 |.#handle%) . out| 000032f0 24 3d 6f 75 74 24 2b bd 28 62 79 74 65 25 29 0d |$=out$+.(byte%).| 00003300 17 b6 1a fd 20 62 79 74 65 25 3c 33 32 20 84 20 |.... byte%<32 . | 00003310 c5 23 68 61 6e 64 6c 65 25 0d 17 c0 09 3d 6f 75 |.#handle%....=ou| 00003320 74 24 0d 17 ca 05 3a 0d 17 d4 19 dd f2 77 72 69 |t$....:......wri| 00003330 74 65 73 74 72 69 6e 67 28 77 72 69 74 65 24 29 |testring(write$)| 00003340 0d 17 de 19 e3 20 63 68 61 72 25 3d 31 20 b8 20 |..... char%=1 . | 00003350 a9 28 77 72 69 74 65 24 29 0d 17 e8 21 d5 23 68 |.(write$)...!.#h| 00003360 61 6e 64 6c 65 25 2c 97 28 c1 77 72 69 74 65 24 |andle%,.(.write$| 00003370 2c 63 68 61 72 25 2c 31 29 29 0d 17 f2 05 ed 0d |,char%,1))......| 00003380 17 fc 10 d5 23 68 61 6e 64 6c 65 25 2c 31 33 0d |....#handle%,13.| 00003390 18 06 05 e1 0d 18 10 05 3a 0d 18 1a 22 dd f2 73 |........:..."..s| 000033a0 65 74 66 69 6c 65 74 79 70 65 28 66 6e 61 6d 65 |etfiletype(fname| 000033b0 24 2c 6e 65 77 74 79 70 65 25 29 0d 18 24 23 c8 |$,newtype%)..$#.| 000033c0 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 38 2c 66 |. "OS_File",18,f| 000033d0 6e 61 6d 65 24 2c 6e 65 77 74 79 70 65 25 0d 18 |name$,newtype%..| 000033e0 2e 05 e1 0d 18 38 05 3a 0d 18 42 21 dd f2 77 72 |.....8.:..B!..wr| 000033f0 69 74 65 73 74 72 69 6e 67 74 6f 66 69 6c 65 28 |itestringtofile(| 00003400 63 68 25 2c 73 74 72 24 29 0d 18 4c 11 e7 20 73 |ch%,str$)..L.. s| 00003410 74 72 24 3d 22 22 20 8c 20 e1 0d 18 56 14 e3 20 |tr$="" . ...V.. | 00003420 6c 25 3d 31 20 b8 20 a9 28 73 74 72 24 29 0d 18 |l%=1 . .(str$)..| 00003430 60 18 d5 23 63 68 25 2c 97 28 c1 73 74 72 24 2c |`..#ch%,.(.str$,| 00003440 6c 25 2c 31 29 29 0d 18 6a 05 ed 0d 18 74 05 e1 |l%,1))..j....t..| 00003450 0d 18 7e 05 3a 0d 18 88 0e dd f2 6c 6f 61 64 66 |..~.:......loadf| 00003460 69 6c 65 0d 18 92 26 66 69 6c 65 6e 61 6d 65 24 |ile...&filename$| 00003470 3d a4 73 74 72 69 6e 67 66 72 6f 6d 6d 65 6d 6f |=.stringfrommemo| 00003480 72 79 28 71 25 2b 34 34 29 0d 18 9c 15 6c 6f 61 |ry(q%+44)....loa| 00003490 64 65 64 24 3d 66 69 6c 65 6e 61 6d 65 24 0d 18 |ded$=filename$..| 000034a0 a6 20 66 69 6c 65 6c 65 6e 25 3d a4 66 69 6c 65 |. filelen%=.file| 000034b0 6c 65 6e 28 66 69 6c 65 6e 61 6d 65 24 29 0d 18 |len(filename$)..| 000034c0 b0 0e c8 8e 20 71 25 21 34 30 20 ca 0d 18 ba 24 |.... q%!40 ....$| 000034d0 c9 20 26 30 30 31 3a f2 6c 6f 61 64 74 72 61 63 |. &001:.loadtrac| 000034e0 6b 65 72 28 66 69 6c 65 6e 61 6d 65 24 2c 32 29 |ker(filename$,2)| 000034f0 0d 18 c4 24 c9 20 26 33 36 34 3a f2 6c 6f 61 64 |...$. &364:.load| 00003500 63 6f 63 6f 74 72 61 63 6b 28 66 69 6c 65 6e 61 |cocotrack(filena| 00003510 6d 65 24 29 0d 18 ce 24 c9 20 26 33 36 35 3a f2 |me$)...$. &365:.| 00003520 6c 6f 61 64 63 6f 63 6f 74 72 61 63 6b 28 66 69 |loadcocotrack(fi| 00003530 6c 65 6e 61 6d 65 24 29 0d 18 d8 25 c9 20 26 37 |lename$)...%. &7| 00003540 30 31 3a f2 6c 6f 61 64 70 72 6f 74 72 61 63 6b |01:.loadprotrack| 00003550 65 72 28 66 69 6c 65 6e 61 6d 65 24 29 0d 18 e2 |er(filename$)...| 00003560 24 c9 20 26 43 42 36 3a f2 6c 6f 61 64 74 72 61 |$. &CB6:.loadtra| 00003570 63 6b 65 72 28 66 69 6c 65 6e 61 6d 65 24 2c 30 |cker(filename$,0| 00003580 29 0d 18 ec 23 c9 20 26 43 42 35 3a f2 6c 6f 61 |)...#. &CB5:.loa| 00003590 64 73 61 6d 70 6c 65 28 66 69 6c 65 6e 61 6d 65 |dsample(filename| 000035a0 24 2c 30 29 0d 18 f6 24 c9 20 26 43 43 35 3a f2 |$,0)...$. &CC5:.| 000035b0 6c 6f 61 64 74 72 61 63 6b 65 72 28 66 69 6c 65 |loadtracker(file| 000035c0 6e 61 6d 65 24 2c 32 29 0d 19 00 23 c9 20 26 44 |name$,2)...#. &D| 000035d0 33 43 3a f2 6c 6f 61 64 73 61 6d 70 6c 65 28 66 |3C:.loadsample(f| 000035e0 69 6c 65 6e 61 6d 65 24 2c 32 29 0d 19 0a 23 c9 |ilename$,2)...#.| 000035f0 20 26 44 46 39 3a f2 6c 6f 61 64 73 61 6d 70 6c | &DF9:.loadsampl| 00003600 65 28 66 69 6c 65 6e 61 6d 65 24 2c 36 29 0d 19 |e(filename$,6)..| 00003610 14 23 c9 20 26 45 44 30 3a f2 6c 6f 61 64 73 61 |.#. &ED0:.loadsa| 00003620 6d 70 6c 65 28 66 69 6c 65 6e 61 6d 65 24 2c 31 |mple(filename$,1| 00003630 29 0d 19 1e 21 c9 20 26 46 46 41 3a f2 6c 6f 61 |)...!. &FFA:.loa| 00003640 64 6d 6f 64 75 6c 65 28 66 69 6c 65 6e 61 6d 65 |dmodule(filename| 00003650 24 29 0d 19 28 22 c9 20 26 46 46 44 3a f2 6c 6f |$)..(". &FFD:.lo| 00003660 61 64 70 61 74 64 61 74 61 28 66 69 6c 65 6e 61 |adpatdata(filena| 00003670 6d 65 24 29 0d 19 32 05 cb 0d 19 3c 05 e1 0d 19 |me$)..2....<....| 00003680 46 05 3a 0d 19 50 19 dd f2 6c 6f 61 64 6d 6f 64 |F.:..P...loadmod| 00003690 75 6c 65 28 6d 6f 64 75 6c 65 24 29 0d 19 5a 11 |ule(module$)..Z.| 000036a0 43 25 3d 8e 28 6d 6f 64 75 6c 65 24 29 0d 19 64 |C%=.(module$)..d| 000036b0 0c cf 23 43 25 3d 26 38 38 0d 19 6e 09 61 24 3d |..#C%=&88..n.a$=| 000036c0 22 22 0d 19 78 11 e3 20 62 79 74 65 25 3d 31 20 |""..x.. byte%=1 | 000036d0 b8 20 38 0d 19 82 0f 61 24 2b 3d bd 28 9a 23 43 |. 8....a$+=.(.#C| 000036e0 25 29 0d 19 8c 05 ed 0d 19 96 09 d9 20 23 43 25 |%).......... #C%| 000036f0 0d 19 a0 45 e7 20 61 24 3d 22 53 61 6d 70 43 6f |...E. a$="SampCo| 00003700 6e 76 22 20 8c 20 f2 6c 6f 61 64 73 61 6d 70 6c |nv" . .loadsampl| 00003710 65 28 6d 6f 64 75 6c 65 24 2c 38 29 20 8b 20 f2 |e(module$,8) . .| 00003720 6c 6f 61 64 73 61 6d 70 6c 65 28 6d 6f 64 75 6c |loadsample(modul| 00003730 65 24 2c 37 29 0d 19 aa 05 e1 0d 19 b4 05 3a 0d |e$,7).........:.| 00003740 19 be 24 dd f2 6c 6f 61 64 74 72 61 63 6b 65 72 |..$..loadtracker| 00003750 28 74 72 61 63 6b 65 72 24 2c 6d 6f 64 74 79 70 |(tracker$,modtyp| 00003760 65 25 29 0d 19 c8 16 6d 6f 64 74 79 70 65 32 25 |e%)....modtype2%| 00003770 3d 6d 6f 64 74 79 70 65 25 0d 19 d2 12 e7 20 6d |=modtype%..... m| 00003780 6f 64 74 79 70 65 25 3d 30 20 8c 0d 19 dc 12 43 |odtype%=0 .....C| 00003790 25 3d 8e 28 74 72 61 63 6b 65 72 24 29 0d 19 e6 |%=.(tracker$)...| 000037a0 0c 72 65 61 64 24 3d 22 22 0d 19 f0 11 e3 20 63 |.read$=""..... c| 000037b0 68 61 72 25 3d 31 20 b8 20 34 0d 19 fa 12 72 65 |har%=1 . 4....re| 000037c0 61 64 24 2b 3d bd 28 9a 23 43 25 29 0d 1a 04 05 |ad$+=.(.#C%)....| 000037d0 ed 0d 1a 0e 09 d9 20 23 43 25 0d 1a 18 05 cd 0d |...... #C%......| 000037e0 1a 22 05 3a 0d 1a 2c 0c 61 62 6f 72 74 25 3d a3 |.".:..,.abort%=.| 000037f0 0d 1a 36 13 e7 20 74 75 6e 65 6c 6f 61 64 65 64 |..6.. tuneloaded| 00003800 25 20 8c 0d 1a 40 49 65 72 72 6f 72 65 78 69 74 |% ...@Ierrorexit| 00003810 25 3d a4 65 72 72 6f 72 62 6f 78 28 31 37 2c 22 |%=.errorbox(17,"| 00003820 45 78 69 73 74 69 6e 67 20 74 75 6e 65 20 77 69 |Existing tune wi| 00003830 6c 6c 20 62 65 20 6c 6f 73 74 20 2d 20 61 72 65 |ll be lost - are| 00003840 20 79 6f 75 20 73 75 72 65 3f 22 29 0d 1a 4a 2d | you sure?")..J-| 00003850 e7 20 65 72 72 6f 72 65 78 69 74 25 3d 31 20 8c |. errorexit%=1 .| 00003860 20 f2 72 65 74 75 72 6e 6d 65 6d 6f 72 79 20 8b | .returnmemory .| 00003870 20 61 62 6f 72 74 25 3d b9 0d 1a 54 05 cd 0d 1a | abort%=...T....| 00003880 5e 10 e7 20 61 62 6f 72 74 25 20 8c 20 e1 0d 1a |^.. abort% . ...| 00003890 68 05 3a 0d 1a 72 12 e7 20 6d 6f 64 74 79 70 65 |h.:..r.. modtype| 000038a0 25 3d 30 20 8c 0d 1a 7c 44 e7 20 72 65 61 64 24 |%=0 ...|D. read$| 000038b0 3d 22 46 54 4d 4e 22 20 8c 20 85 20 31 37 2c 22 |="FTMN" . . 17,"| 000038c0 53 6f 72 72 79 2c 20 63 61 6e 27 74 20 6c 6f 61 |Sorry, can't loa| 000038d0 64 20 27 46 61 63 65 20 74 68 65 20 4d 75 73 69 |d 'Face the Musi| 000038e0 63 27 20 66 69 6c 65 73 22 0d 1a 86 3c e7 20 72 |c' files"...<. r| 000038f0 65 61 64 24 3d 22 4d 45 44 22 2b bd 28 34 29 20 |ead$="MED"+.(4) | 00003900 8c 20 85 20 31 37 2c 22 53 6f 72 72 79 2c 20 63 |. . 17,"Sorry, c| 00003910 61 6e 27 74 20 6c 6f 61 64 20 4d 45 44 33 20 66 |an't load MED3 f| 00003920 69 6c 65 73 22 0d 1a 90 2c e7 20 72 65 61 64 24 |iles"...,. read$| 00003930 3d 22 4d 55 53 58 22 20 8c 20 6d 6f 64 74 79 70 |="MUSX" . modtyp| 00003940 65 25 3d 31 20 8b 20 6d 6f 64 74 79 70 65 25 3d |e%=1 . modtype%=| 00003950 32 0d 1a 9a 1f e7 20 72 65 61 64 24 3d 22 4f 4b |2..... read$="OK| 00003960 54 41 22 20 8c 20 6d 6f 64 74 79 70 65 25 3d 33 |TA" . modtype%=3| 00003970 0d 1a a4 05 cd 0d 1a ae 0d f2 73 74 6f 70 74 75 |..........stoptu| 00003980 6e 65 0d 1a b8 0e 61 62 6f 72 74 65 64 25 3d a3 |ne....aborted%=.| 00003990 0d 1a c2 11 c8 8e 20 6d 6f 64 74 79 70 65 25 20 |...... modtype% | 000039a0 ca 0d 1a cc 08 c9 20 32 3a 0d 1a d6 13 e7 20 6d |...... 2:..... m| 000039b0 6f 64 74 79 70 65 32 25 3d 30 20 8c 0d 1a e0 3a |odtype2%=0 ....:| 000039c0 65 72 72 6f 72 65 78 69 74 25 3d a4 65 72 72 6f |errorexit%=.erro| 000039d0 72 62 6f 78 28 31 37 2c 22 43 6f 6e 76 65 72 74 |rbox(17,"Convert| 000039e0 20 66 72 6f 6d 20 53 6f 75 6e 64 20 54 72 61 63 | from Sound Trac| 000039f0 6b 65 72 3f 22 29 0d 1a ea 20 e7 20 65 72 72 6f |ker?")... . erro| 00003a00 72 65 78 69 74 25 3c 3e 31 20 8c 20 61 62 6f 72 |rexit%<>1 . abor| 00003a10 74 65 64 25 3d b9 0d 1a f4 05 cd 0d 1a fe 05 3a |ted%=..........:| 00003a20 0d 1b 08 13 e7 20 ac 28 61 62 6f 72 74 65 64 25 |..... .(aborted%| 00003a30 29 20 8c 0d 1b 12 0e 66 72 65 65 6d 65 6d 25 3d |) .....freemem%=| 00003a40 30 0d 1b 1c 27 67 6f 74 69 74 25 3d a4 67 72 61 |0...'gotit%=.gra| 00003a50 62 6d 65 6d 28 66 69 6c 65 6c 65 6e 25 2a 32 2b |bmem(filelen%*2+| 00003a60 31 30 2a 31 30 32 34 29 0d 1b 26 21 e7 20 67 6f |10*1024)..&!. go| 00003a70 74 69 74 25 3d a3 20 8c 20 f2 6e 6f 74 65 6e 6f |tit%=. . .noteno| 00003a80 75 67 68 74 6f 6c 6f 61 64 0d 1b 30 2b 74 65 6d |ughtoload..0+tem| 00003a90 70 6c 6f 61 64 25 3d 74 72 61 63 6b 65 72 74 75 |pload%=trackertu| 00003aa0 6e 65 25 2b 66 69 6c 65 6c 65 6e 25 2b 31 30 2a |ne%+filelen%+10*| 00003ab0 31 30 32 34 0d 1b 3a 27 74 65 6d 70 6c 6f 61 64 |1024..:'tempload| 00003ac0 25 3d 28 74 65 6d 70 6c 6f 61 64 25 2d 34 29 20 |%=(tempload%-4) | 00003ad0 80 20 26 46 46 46 46 46 46 46 43 0d 1b 44 27 ff |. &FFFFFFFC..D'.| 00003ae0 28 22 4c 4f 41 44 20 22 2b 74 72 61 63 6b 65 72 |("LOAD "+tracker| 00003af0 24 2b 22 20 22 2b c3 7e 74 65 6d 70 6c 6f 61 64 |$+" "+.~tempload| 00003b00 25 29 0d 1b 4e 08 41 25 3d 31 0d 1b 58 10 42 25 |%)..N.A%=1..X.B%| 00003b10 3d 74 65 6d 70 6c 6f 61 64 25 0d 1b 62 13 43 25 |=tempload%..b.C%| 00003b20 3d 74 72 61 63 6b 65 72 74 75 6e 65 25 0d 1b 6c |=trackertune%..l| 00003b30 0f 44 25 3d 66 69 6c 65 6c 65 6e 25 0d 1b 76 15 |.D%=filelen%..v.| 00003b40 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e |.. "Hourglass_On| 00003b50 22 0d 1b 80 12 d6 20 74 72 61 63 6b 65 72 63 6f |"..... trackerco| 00003b60 64 65 25 0d 1b 8a 16 c8 99 20 22 48 6f 75 72 67 |de%...... "Hourg| 00003b70 6c 61 73 73 5f 4f 66 66 22 0d 1b 94 0d f2 6d 69 |lass_Off".....mi| 00003b80 6e 69 6d 69 73 65 0d 1b 9e 05 cd 0d 1b a8 05 3a |nimise.........:| 00003b90 0d 1b b2 08 c9 20 31 3a 0d 1b bc 0e 66 72 65 65 |..... 1:....free| 00003ba0 6d 65 6d 25 3d 30 0d 1b c6 1d 67 6f 74 69 74 25 |mem%=0....gotit%| 00003bb0 3d a4 67 72 61 62 6d 65 6d 28 66 69 6c 65 6c 65 |=.grabmem(filele| 00003bc0 6e 25 29 0d 1b d0 21 e7 20 67 6f 74 69 74 25 3d |n%)...!. gotit%=| 00003bd0 a3 20 8c 20 f2 6e 6f 74 65 6e 6f 75 67 68 74 6f |. . .notenoughto| 00003be0 6c 6f 61 64 0d 1b da 2a ff 28 22 4c 4f 41 44 20 |load...*.("LOAD | 00003bf0 22 2b 74 72 61 63 6b 65 72 24 2b 22 20 22 2b c3 |"+tracker$+" "+.| 00003c00 7e 74 72 61 63 6b 65 72 74 75 6e 65 25 29 0d 1b |~trackertune%)..| 00003c10 e4 05 3a 0d 1b ee 08 c9 20 33 3a 0d 1b f8 36 65 |..:..... 3:...6e| 00003c20 72 72 6f 72 65 78 69 74 25 3d a4 65 72 72 6f 72 |rrorexit%=.error| 00003c30 62 6f 78 28 31 37 2c 22 43 6f 6e 76 65 72 74 20 |box(17,"Convert | 00003c40 66 72 6f 6d 20 4f 63 74 61 6c 79 73 65 72 3f 22 |from Octalyser?"| 00003c50 29 0d 1c 02 20 e7 20 65 72 72 6f 72 65 78 69 74 |)... . errorexit| 00003c60 25 3c 3e 31 20 8c 20 61 62 6f 72 74 65 64 25 3d |%<>1 . aborted%=| 00003c70 b9 0d 1c 0c 05 3a 0d 1c 16 13 e7 20 ac 28 61 62 |.....:..... .(ab| 00003c80 6f 72 74 65 64 25 29 20 8c 0d 1c 20 0e 66 72 65 |orted%) ... .fre| 00003c90 65 6d 65 6d 25 3d 30 0d 1c 2a 27 67 6f 74 69 74 |emem%=0..*'gotit| 00003ca0 25 3d a4 67 72 61 62 6d 65 6d 28 66 69 6c 65 6c |%=.grabmem(filel| 00003cb0 65 6e 25 2a 32 2b 31 30 2a 31 30 32 34 29 0d 1c |en%*2+10*1024)..| 00003cc0 34 21 e7 20 67 6f 74 69 74 25 3d a3 20 8c 20 f2 |4!. gotit%=. . .| 00003cd0 6e 6f 74 65 6e 6f 75 67 68 74 6f 6c 6f 61 64 0d |notenoughtoload.| 00003ce0 1c 3e 2b 74 65 6d 70 6c 6f 61 64 25 3d 74 72 61 |.>+tempload%=tra| 00003cf0 63 6b 65 72 74 75 6e 65 25 2b 66 69 6c 65 6c 65 |ckertune%+filele| 00003d00 6e 25 2b 31 30 2a 31 30 32 34 0d 1c 48 27 74 65 |n%+10*1024..H'te| 00003d10 6d 70 6c 6f 61 64 25 3d 28 74 65 6d 70 6c 6f 61 |mpload%=(temploa| 00003d20 64 25 2d 34 29 20 80 20 26 46 46 46 46 46 46 46 |d%-4) . &FFFFFFF| 00003d30 43 0d 1c 52 27 ff 28 22 4c 4f 41 44 20 22 2b 74 |C..R'.("LOAD "+t| 00003d40 72 61 63 6b 65 72 24 2b 22 20 22 2b c3 7e 74 65 |racker$+" "+.~te| 00003d50 6d 70 6c 6f 61 64 25 29 0d 1c 5c 08 41 25 3d 38 |mpload%)..\.A%=8| 00003d60 0d 1c 66 10 42 25 3d 74 65 6d 70 6c 6f 61 64 25 |..f.B%=tempload%| 00003d70 0d 1c 70 13 43 25 3d 74 72 61 63 6b 65 72 74 75 |..p.C%=trackertu| 00003d80 6e 65 25 0d 1c 7a 0f 44 25 3d 66 69 6c 65 6c 65 |ne%..z.D%=filele| 00003d90 6e 25 0d 1c 84 15 c8 99 20 22 48 6f 75 72 67 6c |n%...... "Hourgl| 00003da0 61 73 73 5f 4f 6e 22 0d 1c 8e 12 d6 20 74 72 61 |ass_On"..... tra| 00003db0 63 6b 65 72 63 6f 64 65 25 0d 1c 98 16 c8 99 20 |ckercode%...... | 00003dc0 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 00003dd0 1c a2 0d f2 6d 69 6e 69 6d 69 73 65 0d 1c ac 05 |....minimise....| 00003de0 cd 0d 1c b6 05 3a 0d 1c c0 05 cb 0d 1c ca 05 3a |.....:.........:| 00003df0 0d 1c d4 1f e7 20 ac 28 61 62 6f 72 74 65 64 25 |..... .(aborted%| 00003e00 29 20 8c 20 f2 6a 75 73 74 6c 6f 61 64 65 64 0d |) . .justloaded.| 00003e10 1c de 1a e7 20 61 62 6f 72 74 65 64 25 20 8c 20 |.... aborted% . | 00003e20 f2 63 6c 6f 73 65 61 6c 6c 0d 1c e8 05 e1 0d 1c |.closeall.......| 00003e30 f2 05 3a 0d 1c fc 10 dd f2 6a 75 73 74 6c 6f 61 |..:......justloa| 00003e40 64 65 64 0d 1d 06 11 74 75 6e 65 6c 6f 61 64 65 |ded....tuneloade| 00003e50 64 25 3d b9 0d 1d 10 0e 70 6c 61 79 69 6e 67 25 |d%=.....playing%| 00003e60 3d a3 0d 1d 1a 1b 6f 6c 64 70 6f 73 25 3d 2d 31 |=.....oldpos%=-1| 00003e70 3a 6f 6c 64 65 76 65 6e 74 25 3d 2d 31 0d 1d 24 |:oldevent%=-1..$| 00003e80 25 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 73 61 |%.seticontext(sa| 00003e90 76 65 74 75 6e 65 25 2c 33 2c 6c 6f 61 64 65 64 |vetune%,3,loaded| 00003ea0 24 29 0d 1d 2e 11 f2 67 65 74 6d 75 73 69 63 69 |$).....getmusici| 00003eb0 6e 66 6f 0d 1d 38 0d f2 74 75 6e 65 69 6e 66 6f |nfo..8..tuneinfo| 00003ec0 0d 1d 42 11 f2 75 70 64 61 74 65 73 74 65 72 65 |..B..updatestere| 00003ed0 6f 0d 1d 4c 15 f2 77 72 69 74 65 73 61 6d 70 6c |o..L..writesampl| 00003ee0 65 6e 61 6d 65 73 0d 1d 56 15 f2 69 6e 69 74 69 |enames..V..initi| 00003ef0 61 6c 69 73 65 76 6f 69 63 65 73 0d 1d 60 11 6a |alisevoices..`.j| 00003f00 75 73 74 6c 6f 61 64 65 64 25 3d b9 0d 1d 6a 0f |ustloaded%=...j.| 00003f10 64 65 6c 76 6f 69 63 65 25 3d 31 0d 1d 74 0d 64 |delvoice%=1..t.d| 00003f20 65 6c 70 61 74 25 3d 31 0d 1d 7e 0e 73 61 76 65 |elpat%=1..~.save| 00003f30 70 61 74 25 3d 31 0d 1d 88 0e 63 6f 70 79 70 61 |pat%=1....copypa| 00003f40 74 25 3d 31 0d 1d 92 2c f2 73 65 74 69 63 6f 6e |t%=1...,.seticon| 00003f50 74 65 78 74 28 63 6f 70 79 70 61 74 74 65 72 6e |text(copypattern| 00003f60 25 2c 35 2c c3 28 63 6f 70 79 70 61 74 25 29 29 |%,5,.(copypat%))| 00003f70 0d 1d 9c 2a f2 73 65 74 69 63 6f 6e 74 65 78 74 |...*.seticontext| 00003f80 28 61 6d 65 6e 64 74 72 61 63 6b 25 2c 32 2c c3 |(amendtrack%,2,.| 00003f90 28 64 65 6c 70 61 74 25 29 29 0d 1d a6 2d f2 73 |(delpat%))...-.s| 00003fa0 65 74 69 63 6f 6e 74 65 78 74 28 61 6d 65 6e 64 |eticontext(amend| 00003fb0 74 72 61 63 6b 25 2c 31 30 2c c3 28 64 65 6c 76 |track%,10,.(delv| 00003fc0 6f 69 63 65 25 29 29 0d 1d b0 0e f2 72 65 64 6f |oice%)).....redo| 00003fd0 63 61 72 65 74 0d 1d ba 05 e1 0d 1d c4 05 3a 0d |caret.........:.| 00003fe0 1d ce 0f dd f2 72 65 64 6f 63 61 72 65 74 0d 1d |.....redocaret..| 00003ff0 d8 22 c8 99 20 22 57 69 6d 70 5f 47 65 74 43 61 |.".. "Wimp_GetCa| 00004000 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c 2c 71 25 |retPosition",,q%| 00004010 0d 1d e2 15 63 77 25 3d 71 25 21 30 3a 63 69 25 |....cw%=q%!0:ci%| 00004020 3d 71 25 21 34 0d 1d ec 15 e7 20 63 77 25 3d 74 |=q%!4..... cw%=t| 00004030 75 6e 65 69 6e 66 6f 25 20 8c 0d 1d f6 27 e7 20 |uneinfo% ....'. | 00004040 63 69 25 3d 37 20 84 20 63 69 25 3d 38 20 f2 6d |ci%=7 . ci%=8 .m| 00004050 6f 76 65 63 61 72 65 74 28 63 77 25 2c 63 69 25 |ovecaret(cw%,ci%| 00004060 29 0d 1e 00 05 cd 0d 1e 0a 05 e1 0d 1e 14 05 3a |)..............:| 00004070 0d 1e 1e 25 dd f2 6c 6f 61 64 73 61 6d 70 6c 65 |...%..loadsample| 00004080 28 73 61 6d 70 66 69 6c 65 24 2c 73 61 6d 70 74 |(sampfile$,sampt| 00004090 79 70 65 25 29 0d 1e 28 11 77 69 74 68 68 65 61 |ype%)..(.withhea| 000040a0 64 65 72 25 3d a3 0d 1e 32 11 77 69 6e 64 6f 77 |der%=...2.window| 000040b0 25 3d 71 25 21 32 30 0d 1e 3c 0f 69 63 6f 6e 25 |%=q%!20..<.icon%| 000040c0 3d 71 25 21 32 34 0d 1e 46 1b e7 20 77 69 6e 64 |=q%!24..F.. wind| 000040d0 6f 77 25 3c 3e 73 61 6d 70 6c 65 73 25 20 8c 20 |ow%<>samples% . | 000040e0 e1 0d 1e 50 11 e7 20 69 63 6f 6e 25 3c 30 20 8c |...P.. icon%<0 .| 000040f0 20 e1 0d 1e 5a 15 c8 99 20 22 48 6f 75 72 67 6c | ...Z... "Hourgl| 00004100 61 73 73 5f 4f 6e 22 0d 1e 64 1b 73 61 6d 70 70 |ass_On"..d.sampp| 00004110 6f 73 25 3d 28 69 63 6f 6e 25 20 83 20 33 36 29 |os%=(icon% . 36)| 00004120 2b 31 0d 1e 6e 24 73 61 6d 70 66 69 6c 65 6c 65 |+1..n$sampfilele| 00004130 6e 25 3d a4 66 69 6c 65 6c 65 6e 28 73 61 6d 70 |n%=.filelen(samp| 00004140 66 69 6c 65 24 29 0d 1e 78 21 61 63 74 75 61 6c |file$)..x!actual| 00004150 73 61 6d 70 6c 65 6c 65 6e 25 3d 73 61 6d 70 66 |samplelen%=sampf| 00004160 69 6c 65 6c 65 6e 25 0d 1e 82 23 e7 20 73 61 6d |ilelen%...#. sam| 00004170 70 74 79 70 65 25 3d 32 20 8c 20 73 61 6d 70 66 |ptype%=2 . sampf| 00004180 69 6c 65 6c 65 6e 25 2d 3d 31 0d 1e 8c 25 e7 20 |ilelen%-=1...%. | 00004190 73 61 6d 70 74 79 70 65 25 3d 36 20 8c 20 73 61 |samptype%=6 . sa| 000041a0 6d 70 66 69 6c 65 6c 65 6e 25 2d 3d 37 31 32 0d |mpfilelen%-=712.| 000041b0 1e 96 26 e7 20 73 61 6d 70 74 79 70 65 25 3d 37 |..&. samptype%=7| 000041c0 20 8c 20 73 61 6d 70 66 69 6c 65 6c 65 6e 25 2d | . sampfilelen%-| 000041d0 3d 31 34 30 38 0d 1e a0 25 e7 20 73 61 6d 70 74 |=1408...%. sampt| 000041e0 79 70 65 25 3d 38 20 8c 20 73 61 6d 70 66 69 6c |ype%=8 . sampfil| 000041f0 65 6c 65 6e 25 2d 3d 36 36 30 0d 1e aa 2d 73 61 |elen%-=660...-sa| 00004200 6d 70 66 69 6c 65 6c 65 6e 25 3d 28 73 61 6d 70 |mpfilelen%=(samp| 00004210 66 69 6c 65 6c 65 6e 25 2b 33 29 20 80 20 26 46 |filelen%+3) . &F| 00004220 46 46 46 46 46 46 43 0d 1e b4 34 e7 20 73 61 6d |FFFFFFC...4. sam| 00004230 70 74 79 70 65 25 3d 30 20 8c 20 77 69 74 68 68 |ptype%=0 . withh| 00004240 65 61 64 65 72 25 3d a4 68 65 61 64 65 72 65 64 |eader%=.headered| 00004250 28 73 61 6d 70 66 69 6c 65 24 29 0d 1e be 13 e7 |(sampfile$).....| 00004260 20 77 69 74 68 68 65 61 64 65 72 25 20 8c 0d 1e | withheader% ...| 00004270 c8 25 f2 6c 6f 61 64 68 65 61 64 65 72 65 64 28 |.%.loadheadered(| 00004280 73 61 6d 70 66 69 6c 65 24 2c 73 61 6d 70 70 6f |sampfile$,samppo| 00004290 73 25 29 0d 1e d2 05 cc 0d 1e dc 31 f2 6c 6f 61 |s%)........1.loa| 000042a0 64 75 6e 68 65 61 64 65 72 65 64 28 73 61 6d 70 |dunheadered(samp| 000042b0 66 69 6c 65 24 2c 73 61 6d 70 70 6f 73 25 2c 73 |file$,samppos%,s| 000042c0 61 6d 70 74 79 70 65 25 29 0d 1e e6 05 cd 0d 1e |amptype%).......| 000042d0 f0 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f |.... "Hourglass_| 000042e0 4f 66 66 22 0d 1e fa 0f f2 75 70 64 61 74 65 73 |Off".....updates| 000042f0 69 7a 65 0d 1f 04 0d f2 6d 69 6e 69 6d 69 73 65 |ize.....minimise| 00004300 0d 1f 0e 05 e1 0d 1f 18 05 3a 0d 1f 22 15 dd a4 |.........:.."...| 00004310 68 65 61 64 65 72 65 64 28 73 61 6d 70 24 29 0d |headered(samp$).| 00004320 1f 2c 0f 43 25 3d 8e 28 73 61 6d 70 24 29 0d 1f |.,.C%=.(samp$)..| 00004330 36 0c 72 65 61 64 24 3d 22 22 0d 1f 40 11 e3 20 |6.read$=""..@.. | 00004340 63 68 61 72 25 3d 31 20 b8 20 34 0d 1f 4a 12 72 |char%=1 . 4..J.r| 00004350 65 61 64 24 2b 3d bd 28 9a 23 43 25 29 0d 1f 54 |ead$+=.(.#C%)..T| 00004360 05 ed 0d 1f 5e 09 d9 20 23 43 25 0d 1f 68 17 e7 |....^.. #C%..h..| 00004370 20 72 65 61 64 24 3d 22 53 41 4d 50 22 20 8c 20 | read$="SAMP" . | 00004380 3d b9 0d 1f 72 06 3d a3 0d 1f 7c 05 3a 0d 1f 86 |=...r.=...|.:...| 00004390 20 dd f2 6c 6f 61 64 68 65 61 64 65 72 65 64 28 | ..loadheadered(| 000043a0 77 68 61 74 24 2c 77 68 65 72 65 25 29 0d 1f 90 |what$,where%)...| 000043b0 0c 61 62 6f 72 74 25 3d a3 0d 1f 9a 27 e7 20 73 |.abort%=....'. s| 000043c0 61 6d 70 66 69 6c 65 6c 65 6e 25 3e 28 73 6c 65 |ampfilelen%>(sle| 000043d0 6e 25 28 77 68 65 72 65 25 29 2b 39 32 29 20 8c |n%(where%)+92) .| 000043e0 0d 1f a4 2d 74 6f 69 6e 73 65 72 74 25 3d 73 61 |...-toinsert%=sa| 000043f0 6d 70 66 69 6c 65 6c 65 6e 25 2d 28 73 6c 65 6e |mpfilelen%-(slen| 00004400 25 28 77 68 65 72 65 25 29 2b 39 32 29 0d 1f ae |%(where%)+92)...| 00004410 19 61 74 25 3d 73 61 6d 70 61 64 64 72 25 28 77 |.at%=sampaddr%(w| 00004420 68 65 72 65 25 29 0d 1f b8 2f e7 20 ac 28 a4 69 |here%).../. .(.i| 00004430 6e 73 65 72 74 62 79 74 65 73 28 61 74 25 2c 74 |nsertbytes(at%,t| 00004440 6f 69 6e 73 65 72 74 25 29 29 20 8c 20 61 62 6f |oinsert%)) . abo| 00004450 72 74 25 3d b9 0d 1f c2 05 cd 0d 1f cc 27 e7 20 |rt%=.........'. | 00004460 73 61 6d 70 66 69 6c 65 6c 65 6e 25 3c 28 73 6c |sampfilelen%<(sl| 00004470 65 6e 25 28 77 68 65 72 65 25 29 2b 39 32 29 20 |en%(where%)+92) | 00004480 8c 0d 1f d6 2b 74 6f 64 65 6c 65 74 65 25 3d 73 |....+todelete%=s| 00004490 6c 65 6e 25 28 77 68 65 72 65 25 29 2b 39 32 2d |len%(where%)+92-| 000044a0 73 61 6d 70 66 69 6c 65 6c 65 6e 25 0d 1f e0 19 |sampfilelen%....| 000044b0 61 74 25 3d 73 61 6d 70 61 64 64 72 25 28 77 68 |at%=sampaddr%(wh| 000044c0 65 72 65 25 29 0d 1f ea 2f e7 20 ac 28 a4 64 65 |ere%).../. .(.de| 000044d0 6c 65 74 65 62 79 74 65 73 28 61 74 25 2c 74 6f |letebytes(at%,to| 000044e0 64 65 6c 65 74 65 25 29 29 20 8c 20 61 62 6f 72 |delete%)) . abor| 000044f0 74 25 3d b9 0d 1f f4 05 cd 0d 1f fe 16 e7 20 61 |t%=........... a| 00004500 62 6f 72 74 25 3d b9 20 8c 20 ef 20 37 3a e1 0d |bort%=. . . 7:..| 00004510 20 08 2c ff 28 22 4c 4f 41 44 20 22 2b 77 68 61 | .,.("LOAD "+wha| 00004520 74 24 2b 22 20 22 2b c3 7e 73 61 6d 70 61 64 64 |t$+" "+.~sampadd| 00004530 72 25 28 77 68 65 72 65 25 29 29 0d 20 12 10 f2 |r%(where%)). ...| 00004540 72 65 61 64 73 61 6d 70 6c 65 73 0d 20 1c 15 f2 |readsamples. ...| 00004550 77 72 69 74 65 73 61 6d 70 6c 65 6e 61 6d 65 73 |writesamplenames| 00004560 0d 20 26 05 e1 0d 20 30 05 3a 0d 20 3a 29 dd f2 |. &... 0.:. :)..| 00004570 6c 6f 61 64 75 6e 68 65 61 64 65 72 65 64 28 77 |loadunheadered(w| 00004580 68 61 74 24 2c 77 68 65 72 65 25 2c 73 74 79 70 |hat$,where%,styp| 00004590 65 25 29 0d 20 44 0c 61 62 6f 72 74 25 3d a3 0d |e%). D.abort%=..| 000045a0 20 4e 22 e7 20 73 61 6d 70 66 69 6c 65 6c 65 6e | N". sampfilelen| 000045b0 25 3e 73 6c 65 6e 25 28 77 68 65 72 65 25 29 20 |%>slen%(where%) | 000045c0 8c 0d 20 58 28 74 6f 69 6e 73 65 72 74 25 3d 73 |.. X(toinsert%=s| 000045d0 61 6d 70 66 69 6c 65 6c 65 6e 25 2d 73 6c 65 6e |ampfilelen%-slen| 000045e0 25 28 77 68 65 72 65 25 29 0d 20 62 1c 61 74 25 |%(where%). b.at%| 000045f0 3d 73 61 6d 70 61 64 64 72 25 28 77 68 65 72 65 |=sampaddr%(where| 00004600 25 29 2b 39 32 0d 20 6c 2f e7 20 ac 28 a4 69 6e |%)+92. l/. .(.in| 00004610 73 65 72 74 62 79 74 65 73 28 61 74 25 2c 74 6f |sertbytes(at%,to| 00004620 69 6e 73 65 72 74 25 29 29 20 8c 20 61 62 6f 72 |insert%)) . abor| 00004630 74 25 3d b9 0d 20 76 05 cd 0d 20 80 22 e7 20 73 |t%=.. v... .". s| 00004640 61 6d 70 66 69 6c 65 6c 65 6e 25 3c 73 6c 65 6e |ampfilelen%<slen| 00004650 25 28 77 68 65 72 65 25 29 20 8c 0d 20 8a 28 74 |%(where%) .. .(t| 00004660 6f 64 65 6c 65 74 65 25 3d 73 6c 65 6e 25 28 77 |odelete%=slen%(w| 00004670 68 65 72 65 25 29 2d 73 61 6d 70 66 69 6c 65 6c |here%)-sampfilel| 00004680 65 6e 25 0d 20 94 1c 61 74 25 3d 73 61 6d 70 61 |en%. ..at%=sampa| 00004690 64 64 72 25 28 77 68 65 72 65 25 29 2b 39 32 0d |ddr%(where%)+92.| 000046a0 20 9e 2f e7 20 ac 28 a4 64 65 6c 65 74 65 62 79 | ./. .(.deleteby| 000046b0 74 65 73 28 61 74 25 2c 74 6f 64 65 6c 65 74 65 |tes(at%,todelete| 000046c0 25 29 29 20 8c 20 61 62 6f 72 74 25 3d b9 0d 20 |%)) . abort%=.. | 000046d0 a8 05 cd 0d 20 b2 16 e7 20 61 62 6f 72 74 25 3d |.... ... abort%=| 000046e0 b9 20 8c 20 ef 20 37 3a e1 0d 20 bc 0f c8 8e 20 |. . . 7:.. .... | 000046f0 73 74 79 70 65 25 20 ca 0d 20 c6 08 c9 20 32 3a |stype% .. ... 2:| 00004700 0d 20 d0 0f 43 25 3d 8e 28 77 68 61 74 24 29 0d |. ..C%=.(what$).| 00004710 20 da 3f c8 99 20 22 4f 53 5f 47 42 50 42 22 2c | .?.. "OS_GBPB",| 00004720 33 2c 43 25 2c 73 61 6d 70 61 64 64 72 25 28 77 |3,C%,sampaddr%(w| 00004730 68 65 72 65 25 29 2b 39 32 2c 61 63 74 75 61 6c |here%)+92,actual| 00004740 73 61 6d 70 6c 65 6c 65 6e 25 2d 31 2c 31 0d 20 |samplelen%-1,1. | 00004750 e4 09 d9 20 23 43 25 0d 20 ee 08 c9 20 36 3a 0d |... #C%. ... 6:.| 00004760 20 f8 0f 43 25 3d 8e 28 77 68 61 74 24 29 0d 21 | ..C%=.(what$).!| 00004770 02 43 c8 99 20 22 4f 53 5f 47 42 50 42 22 2c 33 |.C.. "OS_GBPB",3| 00004780 2c 43 25 2c 73 61 6d 70 61 64 64 72 25 28 77 68 |,C%,sampaddr%(wh| 00004790 65 72 65 25 29 2b 39 32 2c 61 63 74 75 61 6c 73 |ere%)+92,actuals| 000047a0 61 6d 70 6c 65 6c 65 6e 25 2d 37 31 32 2c 35 34 |amplelen%-712,54| 000047b0 34 0d 21 0c 09 d9 20 23 43 25 0d 21 16 08 c9 20 |4.!... #C%.!... | 000047c0 37 3a 0d 21 20 0f 43 25 3d 8e 28 77 68 61 74 24 |7:.! .C%=.(what$| 000047d0 29 0d 21 2a 45 c8 99 20 22 4f 53 5f 47 42 50 42 |).!*E.. "OS_GBPB| 000047e0 22 2c 33 2c 43 25 2c 73 61 6d 70 61 64 64 72 25 |",3,C%,sampaddr%| 000047f0 28 77 68 65 72 65 25 29 2b 39 32 2c 61 63 74 75 |(where%)+92,actu| 00004800 61 6c 73 61 6d 70 6c 65 6c 65 6e 25 2d 31 34 30 |alsamplelen%-140| 00004810 38 2c 31 34 30 38 0d 21 34 09 d9 20 23 43 25 0d |8,1408.!4.. #C%.| 00004820 21 3e 08 c9 20 38 3a 0d 21 48 0f 43 25 3d 8e 28 |!>.. 8:.!H.C%=.(| 00004830 77 68 61 74 24 29 0d 21 52 43 c8 99 20 22 4f 53 |what$).!RC.. "OS| 00004840 5f 47 42 50 42 22 2c 33 2c 43 25 2c 73 61 6d 70 |_GBPB",3,C%,samp| 00004850 61 64 64 72 25 28 77 68 65 72 65 25 29 2b 39 32 |addr%(where%)+92| 00004860 2c 61 63 74 75 61 6c 73 61 6d 70 6c 65 6c 65 6e |,actualsamplelen| 00004870 25 2d 36 36 30 2c 36 36 30 0d 21 5c 09 d9 20 23 |%-660,660.!\.. #| 00004880 43 25 0d 21 66 10 c9 20 30 2c 31 2c 33 2c 34 2c |C%.!f.. 0,1,3,4,| 00004890 35 3a 0d 21 70 31 ff 28 22 4c 4f 41 44 20 22 2b |5:.!p1.("LOAD "+| 000048a0 77 68 61 74 24 2b 22 20 22 2b c3 7e 28 73 61 6d |what$+" "+.~(sam| 000048b0 70 61 64 64 72 25 28 77 68 65 72 65 25 29 2b 39 |paddr%(where%)+9| 000048c0 32 29 29 0d 21 7a 05 cb 0d 21 84 1b 73 6e 61 6d |2)).!z...!..snam| 000048d0 65 24 3d a4 6c 65 61 66 6e 61 6d 65 28 77 68 61 |e$=.leafname(wha| 000048e0 74 24 29 0d 21 8e 16 73 6e 61 6d 65 24 3d c0 73 |t$).!..sname$=.s| 000048f0 6e 61 6d 65 24 2c 32 30 29 0d 21 98 0b 72 6c 65 |name$,20).!..rle| 00004900 6e 25 3d 32 0d 21 a2 0b 72 6f 66 73 25 3d 30 0d |n%=2.!..rofs%=0.| 00004910 21 ac 19 61 74 25 3d 73 61 6d 70 61 64 64 72 25 |!..at%=sampaddr%| 00004920 28 77 68 65 72 65 25 29 0d 21 b6 19 61 74 25 21 |(where%).!..at%!| 00004930 34 3d 73 61 6d 70 66 69 6c 65 6c 65 6e 25 2b 38 |4=sampfilelen%+8| 00004940 34 0d 21 c0 25 f2 77 72 69 74 65 77 69 74 68 7a |4.!.%.writewithz| 00004950 65 72 6f 73 28 73 6e 61 6d 65 24 2c 61 74 25 2b |eros(sname$,at%+| 00004960 31 36 2c 32 30 29 0d 21 ca 10 61 74 25 21 38 30 |16,20).!..at%!80| 00004970 3d 72 6c 65 6e 25 0d 21 d4 10 61 74 25 21 36 38 |=rlen%.!..at%!68| 00004980 3d 72 6f 66 73 25 0d 21 de 17 61 74 25 21 35 36 |=rofs%.!..at%!56| 00004990 3d 73 61 6d 70 66 69 6c 65 6c 65 6e 25 0d 21 e8 |=sampfilelen%.!.| 000049a0 17 61 74 25 21 38 38 3d 73 61 6d 70 66 69 6c 65 |.at%!88=sampfile| 000049b0 6c 65 6e 25 0d 21 f2 0f c8 8e 20 73 74 79 70 65 |len%.!.... stype| 000049c0 25 20 ca 0d 21 fc 08 c9 20 31 3a 0d 22 06 08 41 |% ..!... 1:."..A| 000049d0 25 3d 35 0d 22 10 0d 42 25 3d 61 74 25 2b 39 32 |%=5."..B%=at%+92| 000049e0 0d 22 1a 13 43 25 3d 73 61 6d 70 66 69 6c 65 6c |."..C%=sampfilel| 000049f0 65 6e 25 0d 22 24 08 44 25 3d 30 0d 22 2e 12 d6 |en%."$.D%=0."...| 00004a00 20 74 72 61 63 6b 65 72 63 6f 64 65 25 0d 22 38 | trackercode%."8| 00004a10 0c c9 20 32 2c 36 2c 37 3a 0d 22 42 08 41 25 3d |.. 2,6,7:."B.A%=| 00004a20 35 0d 22 4c 0d 42 25 3d 61 74 25 2b 39 32 0d 22 |5."L.B%=at%+92."| 00004a30 56 13 43 25 3d 73 61 6d 70 66 69 6c 65 6c 65 6e |V.C%=sampfilelen| 00004a40 25 0d 22 60 08 44 25 3d 31 0d 22 6a 12 d6 20 74 |%."`.D%=1."j.. t| 00004a50 72 61 63 6b 65 72 63 6f 64 65 25 0d 22 74 0c c9 |rackercode%."t..| 00004a60 20 33 2c 34 2c 35 3a 0d 22 7e 08 41 25 3d 35 0d | 3,4,5:."~.A%=5.| 00004a70 22 88 0d 42 25 3d 61 74 25 2b 39 32 0d 22 92 13 |"..B%=at%+92."..| 00004a80 43 25 3d 73 61 6d 70 66 69 6c 65 6c 65 6e 25 0d |C%=sampfilelen%.| 00004a90 22 9c 0f 44 25 3d 73 74 79 70 65 25 2d 31 0d 22 |"..D%=stype%-1."| 00004aa0 a6 12 d6 20 74 72 61 63 6b 65 72 63 6f 64 65 25 |... trackercode%| 00004ab0 0d 22 b0 05 cb 0d 22 ba 10 f2 72 65 61 64 73 61 |."...."...readsa| 00004ac0 6d 70 6c 65 73 0d 22 c4 15 f2 77 72 69 74 65 73 |mples."...writes| 00004ad0 61 6d 70 6c 65 6e 61 6d 65 73 0d 22 ce 05 e1 0d |amplenames."....| 00004ae0 22 d8 05 3a 0d 22 e2 1e dd f2 77 72 69 74 65 77 |"..:."....writew| 00004af0 69 74 68 7a 65 72 6f 73 28 77 24 2c 61 25 2c 6c |ithzeros(w$,a%,l| 00004b00 25 29 0d 22 ec 0f e3 20 63 25 3d 31 20 b8 20 6c |%)."... c%=1 . l| 00004b10 25 0d 22 f6 08 62 25 3d 30 0d 23 00 21 e7 20 63 |%."..b%=0.#.!. c| 00004b20 25 3c 3d a9 28 77 24 29 20 8c 20 62 25 3d 97 28 |%<=.(w$) . b%=.(| 00004b30 c1 77 24 2c 63 25 2c 31 29 29 0d 23 0a 10 61 25 |.w$,c%,1)).#..a%| 00004b40 3f 28 63 25 2d 31 29 3d 62 25 0d 23 14 05 ed 0d |?(c%-1)=b%.#....| 00004b50 23 1e 05 e1 0d 23 28 05 3a 0d 23 32 11 dd f2 65 |#....#(.:.#2...e| 00004b60 64 69 74 74 72 61 63 6b 65 72 0d 23 3c 17 e7 20 |dittracker.#<.. | 00004b70 74 75 6e 65 6c 6f 61 64 65 64 25 3d a3 20 8c 20 |tuneloaded%=. . | 00004b80 e1 0d 23 46 0d f2 73 74 6f 70 74 75 6e 65 0d 23 |..#F..stoptune.#| 00004b90 50 0e 6f 6c 64 6d 6f 64 65 25 3d eb 0d 23 5a 12 |P.oldmode%=..#Z.| 00004ba0 f2 72 65 77 72 69 74 65 73 74 65 72 65 6f 0d 23 |.rewritestereo.#| 00004bb0 64 08 eb 20 31 35 0d 23 6e 13 41 25 3d 74 72 61 |d.. 15.#n.A%=tra| 00004bc0 63 6b 65 72 74 75 6e 65 25 0d 23 78 08 42 25 3d |ckertune%.#x.B%=| 00004bd0 30 0d 23 82 18 e7 20 6a 75 73 74 6c 6f 61 64 65 |0.#... justloade| 00004be0 64 25 20 8c 20 42 25 3d 31 0d 23 8c 14 d6 20 74 |d% . B%=1.#... t| 00004bf0 72 61 63 6b 65 72 63 6f 64 65 25 2b 34 0d 23 96 |rackercode%+4.#.| 00004c00 0c 2a 46 58 20 31 35 2c 30 0d 23 a0 1e c8 99 20 |.*FX 15,0.#.... | 00004c10 22 57 69 6d 70 5f 53 65 74 4d 6f 64 65 22 2c 6f |"Wimp_SetMode",o| 00004c20 6c 64 6d 6f 64 65 25 0d 23 aa 12 f2 72 65 61 64 |ldmode%.#...read| 00004c30 6d 75 73 69 63 64 61 74 61 0d 23 b4 10 f2 72 65 |musicdata.#...re| 00004c40 61 64 73 61 6d 70 6c 65 73 0d 23 be 15 f2 77 72 |adsamples.#...wr| 00004c50 69 74 65 73 61 6d 70 6c 65 6e 61 6d 65 73 0d 23 |itesamplenames.#| 00004c60 c8 0d f2 74 75 6e 65 69 6e 66 6f 0d 23 d2 11 6a |...tuneinfo.#..j| 00004c70 75 73 74 6c 6f 61 64 65 64 25 3d a3 0d 23 dc 16 |ustloaded%=..#..| 00004c80 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 34 2c 32 |.. "OS_Byte",4,2| 00004c90 2c 30 0d 23 e6 05 e1 0d 23 f0 05 3a 0d 23 fa 15 |,0.#....#..:.#..| 00004ca0 dd f2 6e 6f 74 65 6e 6f 75 67 68 74 6f 6c 6f 61 |..notenoughtoloa| 00004cb0 64 0d 24 04 11 f2 72 65 74 75 72 6e 6d 65 6d 6f |d.$...returnmemo| 00004cc0 72 79 0d 24 0e 0d f2 63 6c 6f 73 65 61 6c 6c 0d |ry.$...closeall.| 00004cd0 24 18 28 85 20 31 37 2c 22 49 6e 73 75 66 66 69 |$.(. 17,"Insuffi| 00004ce0 63 69 65 6e 74 20 4d 65 6d 6f 72 79 20 41 76 61 |cient Memory Ava| 00004cf0 69 6c 61 62 6c 65 22 0d 24 22 05 e1 0d 24 2c 05 |ilable".$"...$,.| 00004d00 3a 0d 24 36 12 dd f2 72 65 74 75 72 6e 6d 65 6d |:.$6...returnmem| 00004d10 6f 72 79 0d 24 40 23 c8 99 20 22 58 57 69 6d 70 |ory.$@#.. "XWimp| 00004d20 5f 53 6c 6f 74 53 69 7a 65 22 2c 61 70 70 73 69 |_SlotSize",appsi| 00004d30 7a 65 25 2c 2d 31 0d 24 4a 11 74 75 6e 65 6c 6f |ze%,-1.$J.tunelo| 00004d40 61 64 65 64 25 3d a3 0d 24 54 05 e1 0d 24 5e 05 |aded%=..$T...$^.| 00004d50 3a 0d 24 68 16 dd a4 67 72 61 62 6d 65 6d 28 61 |:.$h...grabmem(a| 00004d60 6d 6f 75 6e 74 25 29 0d 24 72 16 6f 6c 64 61 6d |mount%).$r.oldam| 00004d70 6f 75 6e 74 25 3d 61 6d 6f 75 6e 74 25 0d 24 7c |ount%=amount%.$|| 00004d80 2d e7 20 61 6d 6f 75 6e 74 25 3c 66 72 65 65 6d |-. amount%<freem| 00004d90 65 6d 25 20 8c 20 66 72 65 65 6d 65 6d 25 2d 3d |em% . freemem%-=| 00004da0 61 6d 6f 75 6e 74 25 3a 3d b9 0d 24 86 05 f5 0d |amount%:=..$....| 00004db0 24 90 20 67 72 61 62 61 62 6c 65 25 3d a4 67 72 |$. grabable%=.gr| 00004dc0 61 62 6d 65 6d 32 28 33 32 2a 31 30 32 34 29 0d |abmem2(32*1024).| 00004dd0 24 9a 11 e7 20 67 72 61 62 61 62 6c 65 25 20 8c |$... grabable% .| 00004de0 0d 24 a4 15 66 72 65 65 6d 65 6d 25 2b 3d 33 32 |.$..freemem%+=32| 00004df0 2a 31 30 32 34 0d 24 ae 14 61 6d 6f 75 6e 74 25 |*1024.$..amount%| 00004e00 2d 3d 33 32 2a 31 30 32 34 0d 24 b8 05 cd 0d 24 |-=32*1024.$....$| 00004e10 c2 1e fd 20 61 6d 6f 75 6e 74 25 3c 30 20 84 20 |... amount%<0 . | 00004e20 ac 28 67 72 61 62 61 62 6c 65 25 29 0d 24 cc 26 |.(grabable%).$.&| 00004e30 e7 20 61 6d 6f 75 6e 74 25 3c 30 20 8c 20 66 72 |. amount%<0 . fr| 00004e40 65 65 6d 65 6d 25 2d 3d 6f 6c 64 61 6d 6f 75 6e |eemem%-=oldamoun| 00004e50 74 25 0d 24 d6 0e 3d 67 72 61 62 61 62 6c 65 25 |t%.$..=grabable%| 00004e60 0d 24 e0 05 3a 0d 24 ea 17 dd a4 67 72 61 62 6d |.$..:.$....grabm| 00004e70 65 6d 32 28 61 6d 6f 75 6e 74 25 29 0d 24 f4 25 |em2(amount%).$.%| 00004e80 c8 99 20 22 58 57 69 6d 70 5f 53 6c 6f 74 53 69 |.. "XWimp_SlotSi| 00004e90 7a 65 22 2c 2d 31 2c 2d 31 20 b8 20 73 69 7a 65 |ze",-1,-1 . size| 00004ea0 25 0d 24 fe 28 c8 99 20 22 58 57 69 6d 70 5f 53 |%.$.(.. "XWimp_S| 00004eb0 6c 6f 74 53 69 7a 65 22 2c 73 69 7a 65 25 2b 61 |lotSize",size%+a| 00004ec0 6d 6f 75 6e 74 25 2c 2d 31 0d 25 08 26 c8 99 20 |mount%,-1.%.&.. | 00004ed0 22 58 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 |"XWimp_SlotSize"| 00004ee0 2c 2d 31 2c 2d 31 20 b8 20 73 69 7a 65 32 25 0d |,-1,-1 . size2%.| 00004ef0 25 12 1c e7 20 73 69 7a 65 32 25 3c 73 69 7a 65 |%... size2%<size| 00004f00 25 2b 61 6d 6f 75 6e 74 25 20 8c 0d 25 1c 20 c8 |%+amount% ..%. .| 00004f10 99 20 22 58 57 69 6d 70 5f 53 6c 6f 74 53 69 7a |. "XWimp_SlotSiz| 00004f20 65 22 2c 73 69 7a 65 25 2c 2d 31 0d 25 26 05 cd |e",size%,-1.%&..| 00004f30 0d 25 30 24 e7 20 73 69 7a 65 32 25 3c 73 69 7a |.%0$. size2%<siz| 00004f40 65 25 2b 61 6d 6f 75 6e 74 25 20 8c 20 3d a3 20 |e%+amount% . =. | 00004f50 8b 20 3d b9 0d 25 3a 05 3a 0d 25 44 12 dd f2 67 |. =..%:.:.%D...g| 00004f60 65 74 6d 75 73 69 63 69 6e 66 6f 0d 25 4e 12 f2 |etmusicinfo.%N..| 00004f70 72 65 61 64 6d 75 73 69 63 64 61 74 61 0d 25 58 |readmusicdata.%X| 00004f80 10 f2 72 65 61 64 73 61 6d 70 6c 65 73 0d 25 62 |..readsamples.%b| 00004f90 11 f2 72 65 61 64 70 61 74 74 65 72 6e 73 0d 25 |..readpatterns.%| 00004fa0 6c 05 e1 0d 25 76 05 3a 0d 25 80 0e dd f2 74 75 |l...%v.:.%....tu| 00004fb0 6e 65 69 6e 66 6f 0d 25 8a 24 f2 73 65 74 69 63 |neinfo.%.$.setic| 00004fc0 6f 6e 74 65 78 74 28 74 75 6e 65 69 6e 66 6f 25 |ontext(tuneinfo%| 00004fd0 2c 37 2c 6d 6e 61 6d 65 24 29 0d 25 94 24 f2 73 |,7,mname$).%.$.s| 00004fe0 65 74 69 63 6f 6e 74 65 78 74 28 74 75 6e 65 69 |eticontext(tunei| 00004ff0 6e 66 6f 25 2c 38 2c 61 6e 61 6d 65 24 29 0d 25 |nfo%,8,aname$).%| 00005000 9e 2a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 74 |.*.seticontext(t| 00005010 75 6e 65 69 6e 66 6f 25 2c 39 2c c3 28 70 61 74 |uneinfo%,9,.(pat| 00005020 74 65 72 6e 73 25 29 29 0d 25 a8 29 f2 73 65 74 |terns%)).%.).set| 00005030 69 63 6f 6e 74 65 78 74 28 74 75 6e 65 69 6e 66 |icontext(tuneinf| 00005040 6f 25 2c 31 34 2c c3 28 76 6f 69 63 65 73 25 29 |o%,14,.(voices%)| 00005050 29 0d 25 b2 29 f2 73 65 74 69 63 6f 6e 74 65 78 |).%.).seticontex| 00005060 74 28 74 75 6e 65 69 6e 66 6f 25 2c 31 35 2c c3 |t(tuneinfo%,15,.| 00005070 28 73 65 71 6c 65 6e 25 29 29 0d 25 bc 0f f2 75 |(seqlen%)).%...u| 00005080 70 64 61 74 65 73 69 7a 65 0d 25 c6 05 e1 0d 25 |pdatesize.%....%| 00005090 d0 05 3a 0d 25 da 0e dd f2 67 65 74 6e 61 6d 65 |..:.%....getname| 000050a0 73 0d 25 e4 21 6d 6e 61 6d 65 24 3d a4 69 63 6f |s.%.!mname$=.ico| 000050b0 6e 74 65 78 74 28 74 75 6e 65 69 6e 66 6f 25 2c |ntext(tuneinfo%,| 000050c0 37 29 0d 25 ee 21 61 6e 61 6d 65 24 3d a4 69 63 |7).%.!aname$=.ic| 000050d0 6f 6e 74 65 78 74 28 74 75 6e 65 69 6e 66 6f 25 |ontext(tuneinfo%| 000050e0 2c 38 29 0d 25 f8 05 e1 0d 26 02 05 3a 0d 26 0c |,8).%....&..:.&.| 000050f0 0d dd f2 73 61 6d 70 6c 65 73 0d 26 16 1b f2 6f |...samples.&...o| 00005100 70 65 6e 77 69 6e 64 6f 77 28 73 61 6d 70 6c 65 |penwindow(sample| 00005110 73 25 2c 30 29 0d 26 20 05 e1 0d 26 2a 05 3a 0d |s%,0).& ...&*.:.| 00005120 26 34 16 dd f2 77 72 69 74 65 73 61 6d 70 6c 65 |&4...writesample| 00005130 6e 61 6d 65 73 0d 26 3e 14 e3 20 73 61 6d 70 6c |names.&>.. sampl| 00005140 65 25 3d 31 20 b8 20 33 36 0d 26 48 15 69 63 6f |e%=1 . 36.&H.ico| 00005150 6e 25 3d 73 61 6d 70 6c 65 25 2b 31 30 37 0d 26 |n%=sample%+107.&| 00005160 52 1b 73 6e 61 6d 65 24 3d 73 61 6d 70 6c 65 24 |R.sname$=sample$| 00005170 28 73 61 6d 70 6c 65 25 29 0d 26 5c 18 73 6c 65 |(sample%).&\.sle| 00005180 6e 25 3d 73 6c 65 6e 25 28 73 61 6d 70 6c 65 25 |n%=slen%(sample%| 00005190 29 0d 26 66 12 73 6c 65 6e 24 3d c3 28 73 6c 65 |).&f.slen$=.(sle| 000051a0 6e 25 29 0d 26 70 18 e7 20 73 6c 65 6e 25 3d 30 |n%).&p.. slen%=0| 000051b0 20 8c 20 73 6c 65 6e 24 3d 22 22 0d 26 7a 20 73 | . slen$="".&z s| 000051c0 6c 65 6e 24 3d c4 35 2d a9 28 73 6c 65 6e 24 29 |len$=.5-.(slen$)| 000051d0 2c 22 20 22 29 2b 73 6c 65 6e 24 0d 26 84 24 73 |," ")+slen$.&.$s| 000051e0 6e 61 6d 65 24 3d 73 6e 61 6d 65 24 2b c4 32 32 |name$=sname$+.22| 000051f0 2d a9 28 73 6e 61 6d 65 24 29 2c 22 20 22 29 0d |-.(sname$)," ").| 00005200 26 8e 31 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 |&.1.seticontext(| 00005210 73 61 6d 70 6c 65 73 25 2c 69 63 6f 6e 25 2c 73 |samples%,icon%,s| 00005220 6e 61 6d 65 24 2b 22 20 22 2b 73 6c 65 6e 24 29 |name$+" "+slen$)| 00005230 0d 26 98 05 ed 0d 26 a2 05 e1 0d 26 ac 05 3a 0d |.&....&....&..:.| 00005240 26 b6 21 dd a4 66 69 6e 64 77 6f 72 64 28 73 74 |&.!..findword(st| 00005250 61 72 74 25 2c 65 6e 64 25 2c 77 6f 72 64 25 29 |art%,end%,word%)| 00005260 0d 26 c0 0d 41 25 3d 73 74 61 72 74 25 0d 26 ca |.&..A%=start%.&.| 00005270 0b 42 25 3d 65 6e 64 25 0d 26 d4 05 f5 0d 26 de |.B%=end%.&....&.| 00005280 0a 43 25 3d 21 41 25 0d 26 e8 0b 44 25 3d 41 25 |.C%=!A%.&..D%=A%| 00005290 21 34 0d 26 f2 09 41 25 2b 3d 38 0d 26 fc 18 e7 |!4.&..A%+=8.&...| 000052a0 20 43 25 3c 3e 77 6f 72 64 25 20 8c 20 41 25 2b | C%<>word% . A%+| 000052b0 3d 44 25 0d 27 06 16 fd 20 41 25 3e 42 25 20 84 |=D%.'... A%>B% .| 000052c0 20 43 25 3d 77 6f 72 64 25 0d 27 10 14 e7 20 43 | C%=word%.'... C| 000052d0 25 3d 77 6f 72 64 25 20 8c 20 3d 41 25 0d 27 1a |%=word% . =A%.'.| 000052e0 06 3d a3 0d 27 24 05 3a 0d 27 2e 11 dd a4 77 6f |.=..'$.:.'....wo| 000052f0 72 64 28 77 6f 72 64 24 29 0d 27 38 0b 77 6f 72 |rd(word$).'8.wor| 00005300 64 25 3d 30 0d 27 42 11 e3 20 62 79 74 65 25 3d |d%=0.'B.. byte%=| 00005310 31 20 b8 20 34 0d 27 4c 1d 61 73 63 25 3d 97 28 |1 . 4.'L.asc%=.(| 00005320 c1 77 6f 72 64 24 2c 35 2d 62 79 74 65 25 2c 31 |.word$,5-byte%,1| 00005330 29 29 0d 27 56 19 77 6f 72 64 25 3d 28 77 6f 72 |)).'V.word%=(wor| 00005340 64 25 3c 3c 38 29 2b 61 73 63 25 0d 27 60 05 ed |d%<<8)+asc%.'`..| 00005350 0d 27 6a 0a 3d 77 6f 72 64 25 0d 27 74 05 3a 0d |.'j.=word%.'t.:.| 00005360 27 7e 13 dd f2 72 65 61 64 6d 75 73 69 63 64 61 |'~...readmusicda| 00005370 74 61 0d 27 88 1a 61 62 73 73 74 61 72 74 25 3d |ta.'..absstart%=| 00005380 74 72 61 63 6b 65 72 74 75 6e 65 25 0d 27 92 2b |trackertune%.'.+| 00005390 61 62 73 65 6e 64 25 3d 74 72 61 63 6b 65 72 74 |absend%=trackert| 000053a0 75 6e 65 25 2b 28 74 72 61 63 6b 65 72 74 75 6e |une%+(trackertun| 000053b0 65 25 21 34 29 2b 38 0d 27 9c 10 61 62 73 73 74 |e%!4)+8.'..absst| 000053c0 61 72 74 25 2b 3d 38 0d 27 a6 17 6d 6c 65 6e 25 |art%+=8.'..mlen%| 000053d0 3d a4 77 6f 72 64 28 22 4d 4c 45 4e 22 29 0d 27 |=.word("MLEN").'| 000053e0 b0 17 6d 76 6f 78 25 3d a4 77 6f 72 64 28 22 4d |..mvox%=.word("M| 000053f0 56 4f 58 22 29 0d 27 ba 17 70 6e 75 6d 25 3d a4 |VOX").'..pnum%=.| 00005400 77 6f 72 64 28 22 50 4e 55 4d 22 29 0d 27 c4 17 |word("PNUM").'..| 00005410 6d 6e 61 6d 25 3d a4 77 6f 72 64 28 22 4d 4e 41 |mnam%=.word("MNA| 00005420 4d 22 29 0d 27 ce 17 61 6e 61 6d 25 3d a4 77 6f |M").'..anam%=.wo| 00005430 72 64 28 22 41 4e 41 4d 22 29 0d 27 d8 17 70 6c |rd("ANAM").'..pl| 00005440 65 6e 25 3d a4 77 6f 72 64 28 22 50 4c 45 4e 22 |en%=.word("PLEN"| 00005450 29 0d 27 e2 17 73 74 65 72 25 3d a4 77 6f 72 64 |).'..ster%=.word| 00005460 28 22 53 54 45 52 22 29 0d 27 ec 17 73 65 71 75 |("STER").'..sequ| 00005470 25 3d a4 77 6f 72 64 28 22 53 45 51 55 22 29 0d |%=.word("SEQU").| 00005480 27 f6 30 6d 6c 65 6e 61 64 64 72 25 3d a4 66 69 |'.0mlenaddr%=.fi| 00005490 6e 64 77 6f 72 64 28 61 62 73 73 74 61 72 74 25 |ndword(absstart%| 000054a0 2c 61 62 73 65 6e 64 25 2c 6d 6c 65 6e 25 29 0d |,absend%,mlen%).| 000054b0 28 00 16 73 65 71 6c 65 6e 25 3d 21 6d 6c 65 6e |(..seqlen%=!mlen| 000054c0 61 64 64 72 25 0d 28 0a 30 6d 76 6f 78 61 64 64 |addr%.(.0mvoxadd| 000054d0 72 25 3d a4 66 69 6e 64 77 6f 72 64 28 61 62 73 |r%=.findword(abs| 000054e0 73 74 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 6d |start%,absend%,m| 000054f0 76 6f 78 25 29 0d 28 14 16 76 6f 69 63 65 73 25 |vox%).(..voices%| 00005500 3d 21 6d 76 6f 78 61 64 64 72 25 0d 28 1e 30 73 |=!mvoxaddr%.(.0s| 00005510 74 65 72 61 64 64 72 25 3d a4 66 69 6e 64 77 6f |teraddr%=.findwo| 00005520 72 64 28 61 62 73 73 74 61 72 74 25 2c 61 62 73 |rd(absstart%,abs| 00005530 65 6e 64 25 2c 73 74 65 72 25 29 0d 28 28 30 70 |end%,ster%).((0p| 00005540 6e 75 6d 61 64 64 72 25 3d a4 66 69 6e 64 77 6f |numaddr%=.findwo| 00005550 72 64 28 61 62 73 73 74 61 72 74 25 2c 61 62 73 |rd(absstart%,abs| 00005560 65 6e 64 25 2c 70 6e 75 6d 25 29 0d 28 32 18 70 |end%,pnum%).(2.p| 00005570 61 74 74 65 72 6e 73 25 3d 21 70 6e 75 6d 61 64 |atterns%=!pnumad| 00005580 64 72 25 0d 28 3c 30 6d 6e 61 6d 61 64 64 72 25 |dr%.(<0mnamaddr%| 00005590 3d a4 66 69 6e 64 77 6f 72 64 28 61 62 73 73 74 |=.findword(absst| 000055a0 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 6d 6e 61 |art%,absend%,mna| 000055b0 6d 25 29 0d 28 46 30 61 6e 61 6d 61 64 64 72 25 |m%).(F0anamaddr%| 000055c0 3d a4 66 69 6e 64 77 6f 72 64 28 61 62 73 73 74 |=.findword(absst| 000055d0 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 61 6e 61 |art%,absend%,ana| 000055e0 6d 25 29 0d 28 50 29 61 6e 61 6d 65 24 3d a4 73 |m%).(P)aname$=.s| 000055f0 74 72 69 6e 67 77 69 74 68 6c 69 6d 69 74 28 61 |tringwithlimit(a| 00005600 6e 61 6d 61 64 64 72 25 2c 33 32 29 0d 28 5a 29 |namaddr%,32).(Z)| 00005610 6d 6e 61 6d 65 24 3d a4 73 74 72 69 6e 67 77 69 |mname$=.stringwi| 00005620 74 68 6c 69 6d 69 74 28 6d 6e 61 6d 61 64 64 72 |thlimit(mnamaddr| 00005630 25 2c 33 32 29 0d 28 64 2f 70 61 74 74 6c 65 6e |%,32).(d/pattlen| 00005640 25 3d a4 66 69 6e 64 77 6f 72 64 28 61 62 73 73 |%=.findword(abss| 00005650 74 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 70 6c |tart%,absend%,pl| 00005660 65 6e 25 29 0d 28 6e 2f 73 65 71 61 64 64 72 25 |en%).(n/seqaddr%| 00005670 3d a4 66 69 6e 64 77 6f 72 64 28 61 62 73 73 74 |=.findword(absst| 00005680 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 73 65 71 |art%,absend%,seq| 00005690 75 25 29 0d 28 78 05 e1 0d 28 82 05 3a 0d 28 8c |u%).(x...(..:.(.| 000056a0 11 dd f2 72 65 61 64 73 61 6d 70 6c 65 73 0d 28 |...readsamples.(| 000056b0 96 1a 61 62 73 73 74 61 72 74 25 3d 74 72 61 63 |..absstart%=trac| 000056c0 6b 65 72 74 75 6e 65 25 0d 28 a0 2b 61 62 73 65 |kertune%.(.+abse| 000056d0 6e 64 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 25 |nd%=trackertune%| 000056e0 2b 28 74 72 61 63 6b 65 72 74 75 6e 65 25 21 34 |+(trackertune%!4| 000056f0 29 2b 38 0d 28 aa 10 61 62 73 73 74 61 72 74 25 |)+8.(..absstart%| 00005700 2b 3d 38 0d 28 b4 17 73 61 6d 70 25 3d a4 77 6f |+=8.(..samp%=.wo| 00005710 72 64 28 22 53 41 4d 50 22 29 0d 28 be 17 73 6e |rd("SAMP").(..sn| 00005720 61 6d 25 3d a4 77 6f 72 64 28 22 53 4e 41 4d 22 |am%=.word("SNAM"| 00005730 29 0d 28 c8 17 73 6c 65 6e 25 3d a4 77 6f 72 64 |).(..slen%=.word| 00005740 28 22 53 4c 45 4e 22 29 0d 28 d2 17 73 76 6f 6c |("SLEN").(..svol| 00005750 25 3d a4 77 6f 72 64 28 22 53 56 4f 4c 22 29 0d |%=.word("SVOL").| 00005760 28 dc 14 73 74 61 72 74 25 3d 61 62 73 73 74 61 |(..start%=abssta| 00005770 72 74 25 0d 28 e6 12 e3 20 69 6e 73 74 25 3d 31 |rt%.(... inst%=1| 00005780 20 b8 20 33 36 0d 28 f0 2f 73 61 6d 70 6c 65 61 | . 36.(./samplea| 00005790 64 64 72 25 3d a4 66 69 6e 64 77 6f 72 64 28 73 |ddr%=.findword(s| 000057a0 74 61 72 74 25 2c 61 62 73 65 6e 64 25 2c 73 61 |tart%,absend%,sa| 000057b0 6d 70 25 29 0d 28 fa 22 73 61 6d 70 61 64 64 72 |mp%).(."sampaddr| 000057c0 25 28 69 6e 73 74 25 29 3d 73 61 6d 70 6c 65 61 |%(inst%)=samplea| 000057d0 64 64 72 25 2d 38 0d 29 04 1b 73 65 61 72 63 68 |ddr%-8.)..search| 000057e0 61 64 64 72 25 3d 73 61 6d 70 6c 65 61 64 64 72 |addr%=sampleaddr| 000057f0 25 0d 29 0e 32 73 6e 61 6d 61 64 64 72 25 3d a4 |%.).2snamaddr%=.| 00005800 66 69 6e 64 77 6f 72 64 28 73 65 61 72 63 68 61 |findword(searcha| 00005810 64 64 72 25 2c 61 62 73 65 6e 64 25 2c 73 6e 61 |ddr%,absend%,sna| 00005820 6d 25 29 0d 29 18 31 73 61 6d 70 6c 65 24 28 69 |m%).).1sample$(i| 00005830 6e 73 74 25 29 3d a4 73 74 72 69 6e 67 77 69 74 |nst%)=.stringwit| 00005840 68 6c 69 6d 69 74 28 73 6e 61 6d 61 64 64 72 25 |hlimit(snamaddr%| 00005850 2c 32 30 29 0d 29 22 32 73 6c 65 6e 61 64 64 72 |,20).)"2slenaddr| 00005860 25 3d a4 66 69 6e 64 77 6f 72 64 28 73 65 61 72 |%=.findword(sear| 00005870 63 68 61 64 64 72 25 2c 61 62 73 65 6e 64 25 2c |chaddr%,absend%,| 00005880 73 6c 65 6e 25 29 0d 29 2c 27 73 6c 65 6e 25 28 |slen%).),'slen%(| 00005890 69 6e 73 74 25 29 3d 34 2a 28 28 21 73 6c 65 6e |inst%)=4*((!slen| 000058a0 61 64 64 72 25 2b 33 29 20 81 20 34 29 0d 29 36 |addr%+3) . 4).)6| 000058b0 1b 21 73 6c 65 6e 61 64 64 72 25 3d 73 6c 65 6e |.!slenaddr%=slen| 000058c0 25 28 69 6e 73 74 25 29 0d 29 40 39 73 76 6f 6c |%(inst%).)@9svol| 000058d0 61 64 64 72 25 28 69 6e 73 74 25 29 3d a4 66 69 |addr%(inst%)=.fi| 000058e0 6e 64 77 6f 72 64 28 73 65 61 72 63 68 61 64 64 |ndword(searchadd| 000058f0 72 25 2c 61 62 73 65 6e 64 25 2c 73 76 6f 6c 25 |r%,absend%,svol%| 00005900 29 0d 29 4a 27 73 74 61 72 74 25 3d 73 61 6d 70 |).)J'start%=samp| 00005910 6c 65 61 64 64 72 25 2b 21 28 73 61 6d 70 6c 65 |leaddr%+!(sample| 00005920 61 64 64 72 25 2d 34 29 0d 29 54 05 ed 0d 29 5e |addr%-4).)T...)^| 00005930 05 e1 0d 29 68 05 3a 0d 29 72 12 dd f2 72 65 61 |...)h.:.)r...rea| 00005940 64 70 61 74 74 65 72 6e 73 0d 29 7c 15 ea 20 73 |dpatterns.)|.. s| 00005950 74 61 72 74 25 2c 70 61 74 74 65 72 6e 25 0d 29 |tart%,pattern%.)| 00005960 86 1a 61 62 73 73 74 61 72 74 25 3d 74 72 61 63 |..absstart%=trac| 00005970 6b 65 72 74 75 6e 65 25 0d 29 90 2b 61 62 73 65 |kertune%.).+abse| 00005980 6e 64 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 25 |nd%=trackertune%| 00005990 2b 28 74 72 61 63 6b 65 72 74 75 6e 65 25 21 34 |+(trackertune%!4| 000059a0 29 2b 38 0d 29 9a 10 61 62 73 73 74 61 72 74 25 |)+8.)..absstart%| 000059b0 2b 3d 38 0d 29 a4 14 73 74 61 72 74 25 3d 61 62 |+=8.)..start%=ab| 000059c0 73 73 74 61 72 74 25 0d 29 ae 17 70 61 74 74 25 |sstart%.)..patt%| 000059d0 3d a4 77 6f 72 64 28 22 50 41 54 54 22 29 0d 29 |=.word("PATT").)| 000059e0 b8 1c e3 20 70 61 74 74 65 72 6e 25 3d 31 20 b8 |... pattern%=1 .| 000059f0 20 70 61 74 74 65 72 6e 73 25 0d 29 c2 37 70 61 | patterns%.).7pa| 00005a00 74 74 61 64 64 72 25 28 70 61 74 74 65 72 6e 25 |ttaddr%(pattern%| 00005a10 29 3d a4 66 69 6e 64 77 6f 72 64 28 73 74 61 72 |)=.findword(star| 00005a20 74 25 2c 61 62 73 65 6e 64 25 2c 70 61 74 74 25 |t%,absend%,patt%| 00005a30 29 0d 29 cc 37 73 74 61 72 74 25 3d 70 61 74 74 |).).7start%=patt| 00005a40 61 64 64 72 25 28 70 61 74 74 65 72 6e 25 29 2b |addr%(pattern%)+| 00005a50 21 28 70 61 74 74 61 64 64 72 25 28 70 61 74 74 |!(pattaddr%(patt| 00005a60 65 72 6e 25 29 2d 34 29 0d 29 d6 05 ed 0d 29 e0 |ern%)-4).)....).| 00005a70 05 e1 0d 29 ea 05 3a 0d 29 f4 10 dd f2 6e 65 77 |...)..:.)....new| 00005a80 70 61 74 74 65 72 6e 0d 29 fe 16 e7 20 70 61 74 |pattern.)... pat| 00005a90 74 65 72 6e 73 25 3d 36 34 20 8c 20 e1 0d 2a 08 |terns%=64 . ..*.| 00005aa0 1e f2 6d 61 6b 65 73 65 6c 65 63 74 65 64 28 74 |..makeselected(t| 00005ab0 75 6e 65 69 6e 66 6f 25 2c 36 29 0d 2a 12 1e 65 |uneinfo%,6).*..e| 00005ac0 61 63 68 70 61 74 25 3d 34 2a 70 61 74 6c 65 6e |achpat%=4*patlen| 00005ad0 25 2a 76 6f 69 63 65 73 25 0d 2a 1c 42 73 74 61 |%*voices%.*.Bsta| 00005ae0 72 74 25 3d 70 61 74 74 61 64 64 72 25 28 70 61 |rt%=pattaddr%(pa| 00005af0 74 74 65 72 6e 73 25 29 2b 28 34 2a 76 6f 69 63 |tterns%)+(4*voic| 00005b00 65 73 25 2a 70 61 74 74 6c 65 6e 25 3f 28 70 61 |es%*pattlen%?(pa| 00005b10 74 74 65 72 6e 73 25 2d 31 29 29 0d 2a 26 27 e7 |tterns%-1)).*&'.| 00005b20 20 a4 69 6e 73 65 72 74 62 79 74 65 73 28 73 74 | .insertbytes(st| 00005b30 61 72 74 25 2c 65 61 63 68 70 61 74 25 2b 38 29 |art%,eachpat%+8)| 00005b40 20 8c 0d 2a 30 1a 73 74 61 72 74 25 21 30 3d a4 | ..*0.start%!0=.| 00005b50 77 6f 72 64 28 22 50 41 54 54 22 29 0d 2a 3a 15 |word("PATT").*:.| 00005b60 73 74 61 72 74 25 21 34 3d 65 61 63 68 70 61 74 |start%!4=eachpat| 00005b70 25 0d 2a 44 0d 73 74 61 72 74 25 2b 3d 38 0d 2a |%.*D.start%+=8.*| 00005b80 4e 1e e3 20 77 6f 72 64 25 3d 30 20 b8 20 28 65 |N.. word%=0 . (e| 00005b90 61 63 68 70 61 74 25 2f 34 29 2d 31 0d 2a 58 16 |achpat%/4)-1.*X.| 00005ba0 73 74 61 72 74 25 21 28 77 6f 72 64 25 2a 34 29 |start%!(word%*4)| 00005bb0 3d 30 0d 2a 62 05 ed 0d 2a 6c 1e 70 61 74 74 6c |=0.*b...*l.pattl| 00005bc0 65 6e 25 3f 70 61 74 74 65 72 6e 73 25 3d 70 61 |en%?patterns%=pa| 00005bd0 74 6c 65 6e 25 0d 2a 76 10 70 61 74 74 65 72 6e |tlen%.*v.pattern| 00005be0 73 25 2b 3d 31 0d 2a 80 18 21 70 6e 75 6d 61 64 |s%+=1.*..!pnumad| 00005bf0 64 72 25 3d 70 61 74 74 65 72 6e 73 25 0d 2a 8a |dr%=patterns%.*.| 00005c00 11 f2 67 65 74 6d 75 73 69 63 69 6e 66 6f 0d 2a |..getmusicinfo.*| 00005c10 94 05 cd 0d 2a 9e 20 f2 6d 61 6b 65 75 6e 73 65 |....*. .makeunse| 00005c20 6c 65 63 74 65 64 28 74 75 6e 65 69 6e 66 6f 25 |lected(tuneinfo%| 00005c30 2c 36 29 0d 2a a8 0d f2 74 75 6e 65 69 6e 66 6f |,6).*...tuneinfo| 00005c40 0d 2a b2 05 e1 0d 2a bc 05 3a 0d 2a c6 22 dd a4 |.*....*..:.*."..| 00005c50 69 6e 73 65 72 74 62 79 74 65 73 28 77 68 65 72 |insertbytes(wher| 00005c60 65 25 2c 68 6f 77 6d 61 6e 79 25 29 0d 2a d0 20 |e%,howmany%).*. | 00005c70 e7 20 ac 28 a4 67 72 61 62 6d 65 6d 28 68 6f 77 |. .(.grabmem(how| 00005c80 6d 61 6e 79 25 29 29 20 8c 20 3d a3 0d 2a da 29 |many%)) . =..*.)| 00005c90 66 72 6f 6d 25 3d 74 72 61 63 6b 65 72 74 75 6e |from%=trackertun| 00005ca0 65 25 2b 74 72 61 63 6b 65 72 74 75 6e 65 25 21 |e%+trackertune%!| 00005cb0 34 2b 38 2d 31 0d 2a e4 16 74 6f 25 3d 66 72 6f |4+8-1.*..to%=fro| 00005cc0 6d 25 2b 68 6f 77 6d 61 6e 79 25 0d 2a ee 16 63 |m%+howmany%.*..c| 00005cd0 6f 70 79 25 3d 66 72 6f 6d 25 2d 77 68 65 72 65 |opy%=from%-where| 00005ce0 25 0d 2a f8 0c 41 25 3d 66 72 6f 6d 25 0d 2b 02 |%.*..A%=from%.+.| 00005cf0 0a 42 25 3d 74 6f 25 0d 2b 0c 0e 43 25 3d 63 6f |.B%=to%.+..C%=co| 00005d00 70 79 25 2b 31 0d 2b 16 18 e7 20 43 25 3e 30 20 |py%+1.+... C%>0 | 00005d10 d6 20 69 6e 73 65 72 74 62 79 74 65 73 0d 2b 20 |. insertbytes.+ | 00005d20 1c 74 72 61 63 6b 65 72 74 75 6e 65 25 21 34 2b |.trackertune%!4+| 00005d30 3d 68 6f 77 6d 61 6e 79 25 0d 2b 2a 06 3d b9 0d |=howmany%.+*.=..| 00005d40 2b 34 05 3a 0d 2b 3e 22 dd a4 64 65 6c 65 74 65 |+4.:.+>"..delete| 00005d50 62 79 74 65 73 28 77 68 65 72 65 25 2c 68 6f 77 |bytes(where%,how| 00005d60 6d 61 6e 79 25 29 0d 2b 48 16 41 25 3d 77 68 65 |many%).+H.A%=whe| 00005d70 72 65 25 2b 68 6f 77 6d 61 6e 79 25 0d 2b 52 0d |re%+howmany%.+R.| 00005d80 42 25 3d 77 68 65 72 65 25 0d 2b 5c 2a 65 6e 64 |B%=where%.+\*end| 00005d90 61 64 64 72 25 3d 74 72 61 63 6b 65 72 74 75 6e |addr%=trackertun| 00005da0 65 25 2b 74 72 61 63 6b 65 72 74 75 6e 65 25 21 |e%+trackertune%!| 00005db0 34 2b 38 0d 2b 66 12 43 25 3d 65 6e 64 61 64 64 |4+8.+f.C%=endadd| 00005dc0 72 25 2d 41 25 0d 2b 70 18 e7 20 43 25 3e 30 20 |r%-A%.+p.. C%>0 | 00005dd0 d6 20 64 65 6c 65 74 65 62 79 74 65 73 0d 2b 7a |. deletebytes.+z| 00005de0 16 66 72 65 65 6d 65 6d 25 2b 3d 68 6f 77 6d 61 |.freemem%+=howma| 00005df0 6e 79 25 0d 2b 84 1c 74 72 61 63 6b 65 72 74 75 |ny%.+..trackertu| 00005e00 6e 65 25 21 34 2d 3d 68 6f 77 6d 61 6e 79 25 0d |ne%!4-=howmany%.| 00005e10 2b 8e 06 3d b9 0d 2b 98 05 3a 0d 2b a2 0e dd f2 |+..=..+..:.+....| 00005e20 61 73 73 65 6d 62 6c 65 0d 2b ac 0e 66 72 6f 6d |assemble.+..from| 00005e30 72 65 67 25 3d 30 0d 2b b6 0c 74 6f 72 65 67 25 |reg%=0.+..toreg%| 00005e40 3d 31 0d 2b c0 0f 63 6f 75 6e 74 72 65 67 25 3d |=1.+..countreg%=| 00005e50 32 0d 2b ca 11 6c 69 6e 6b 3d 31 34 3a 70 63 3d |2.+..link=14:pc=| 00005e60 31 35 0d 2b d4 14 e3 20 70 61 73 73 3d 30 20 b8 |15.+... pass=0 .| 00005e70 20 32 20 88 20 32 0d 2b de 0c 50 25 3d 63 6f 64 | 2 . 2.+..P%=cod| 00005e80 65 25 0d 2b e8 0d 5b 4f 50 54 20 70 61 73 73 0d |e%.+..[OPT pass.| 00005e90 2b f2 10 2e 69 6e 73 65 72 74 62 79 74 65 73 0d |+...insertbytes.| 00005ea0 2b fc 1b 4c 44 52 42 20 52 31 31 2c 5b 66 72 6f |+..LDRB R11,[fro| 00005eb0 6d 72 65 67 25 5d 2c 23 2d 31 0d 2c 06 19 53 54 |mreg%],#-1.,..ST| 00005ec0 52 42 20 52 31 31 2c 5b 74 6f 72 65 67 25 5d 2c |RB R11,[toreg%],| 00005ed0 23 2d 31 0d 2c 10 1f 53 55 42 53 20 63 6f 75 6e |#-1.,..SUBS coun| 00005ee0 74 72 65 67 25 2c 63 6f 75 6e 74 72 65 67 25 2c |treg%,countreg%,| 00005ef0 23 31 0d 2c 1a 13 42 4e 45 20 69 6e 73 65 72 74 |#1.,..BNE insert| 00005f00 62 79 74 65 73 0d 2c 24 0f 4d 4f 56 20 70 63 2c |bytes.,$.MOV pc,| 00005f10 6c 69 6e 6b 0d 2c 2e 10 2e 64 65 6c 65 74 65 62 |link.,...deleteb| 00005f20 79 74 65 73 0d 2c 38 1a 4c 44 52 42 20 52 31 31 |ytes.,8.LDRB R11| 00005f30 2c 5b 66 72 6f 6d 72 65 67 25 5d 2c 23 31 0d 2c |,[fromreg%],#1.,| 00005f40 42 18 53 54 52 42 20 52 31 31 2c 5b 74 6f 72 65 |B.STRB R11,[tore| 00005f50 67 25 5d 2c 23 31 0d 2c 4c 1f 53 55 42 53 20 63 |g%],#1.,L.SUBS c| 00005f60 6f 75 6e 74 72 65 67 25 2c 63 6f 75 6e 74 72 65 |ountreg%,countre| 00005f70 67 25 2c 23 31 0d 2c 56 13 42 4e 45 20 64 65 6c |g%,#1.,V.BNE del| 00005f80 65 74 65 62 79 74 65 73 0d 2c 60 0f 4d 4f 56 20 |etebytes.,`.MOV | 00005f90 70 63 2c 6c 69 6e 6b 0d 2c 6a 0d 2e 63 6c 61 69 |pc,link.,j..clai| 00005fa0 6d 52 6d 61 0d 2c 74 0d 4d 4f 56 20 52 33 2c 52 |mRma.,t.MOV R3,R| 00005fb0 30 0d 2c 7e 0d 4d 4f 56 20 52 30 2c 23 36 0d 2c |0.,~.MOV R0,#6.,| 00005fc0 88 14 53 57 49 20 22 58 4f 53 5f 4d 6f 64 75 6c |..SWI "XOS_Modul| 00005fd0 65 22 0d 2c 92 0f 4d 4f 56 56 53 20 52 32 2c 23 |e".,..MOVVS R2,#| 00005fe0 30 0d 2c 9c 0d 4d 4f 56 20 52 30 2c 52 32 0d 2c |0.,..MOV R0,R2.,| 00005ff0 a6 0f 4d 4f 56 20 70 63 2c 6c 69 6e 6b 0d 2c b0 |..MOV pc,link.,.| 00006000 0e 2e 63 6f 70 79 62 79 74 65 73 0d 2c ba 11 41 |..copybytes.,..A| 00006010 44 44 20 52 31 31 2c 52 32 2c 23 33 0d 2c c4 16 |DD R11,R2,#3.,..| 00006020 4d 4f 56 20 52 31 31 2c 52 31 31 2c 41 53 52 20 |MOV R11,R11,ASR | 00006030 23 32 0d 2c ce 12 2e 63 6f 70 79 62 79 74 65 73 |#2.,...copybytes| 00006040 6c 6f 6f 70 0d 2c d8 13 4c 44 52 20 52 31 30 2c |loop.,..LDR R10,| 00006050 5b 52 30 5d 2c 23 34 0d 2c e2 13 53 54 52 20 52 |[R0],#4.,..STR R| 00006060 31 30 2c 5b 52 31 5d 2c 23 34 0d 2c ec 13 53 55 |10,[R1],#4.,..SU| 00006070 42 53 20 52 31 31 2c 52 31 31 2c 23 31 0d 2c f6 |BS R11,R11,#1.,.| 00006080 15 42 4e 45 20 63 6f 70 79 62 79 74 65 73 6c 6f |.BNE copybyteslo| 00006090 6f 70 0d 2d 00 0f 4d 4f 56 20 70 63 2c 6c 69 6e |op.-..MOV pc,lin| 000060a0 6b 0d 2d 0a 05 5d 0d 2d 14 05 ed 0d 2d 1e 05 e1 |k.-..].-....-...| 000060b0 0d 2d 28 05 3a 0d 2d 32 19 dd f2 73 61 76 65 73 |.-(.:.-2...saves| 000060c0 61 6d 70 6c 65 28 73 61 6d 70 6c 65 25 29 0d 2d |ample(sample%).-| 000060d0 3c 22 6c 65 61 66 24 3d a4 69 63 6f 6e 74 65 78 |<"leaf$=.icontex| 000060e0 74 28 73 61 76 65 73 61 6d 70 6c 65 25 2c 33 29 |t(savesample%,3)| 000060f0 0d 2d 46 22 70 61 74 68 24 3d a4 73 74 72 69 6e |.-F"path$=.strin| 00006100 67 66 72 6f 6d 6d 65 6d 6f 72 79 28 71 25 2b 34 |gfrommemory(q%+4| 00006110 34 29 0d 2d 50 1c 70 61 74 68 24 3d c0 70 61 74 |4).-P.path$=.pat| 00006120 68 24 2c a9 28 70 61 74 68 24 29 2d 31 29 0d 2d |h$,.(path$)-1).-| 00006130 5a 13 e7 20 73 61 76 65 68 65 61 64 65 72 25 20 |Z.. saveheader% | 00006140 8c 0d 2d 64 1d 73 74 61 72 74 25 3d 73 61 6d 70 |..-d.start%=samp| 00006150 61 64 64 72 25 28 73 61 6d 70 6c 65 25 29 0d 2d |addr%(sample%).-| 00006160 6e 25 6c 65 6e 67 74 68 25 3d 21 28 73 61 6d 70 |n%length%=!(samp| 00006170 61 64 64 72 25 28 73 61 6d 70 6c 65 25 29 2b 34 |addr%(sample%)+4| 00006180 29 2b 38 0d 2d 78 05 cc 0d 2d 82 20 73 74 61 72 |)+8.-x...-. star| 00006190 74 25 3d 73 61 6d 70 61 64 64 72 25 28 73 61 6d |t%=sampaddr%(sam| 000061a0 70 6c 65 25 29 2b 39 32 0d 2d 8c 1a 6c 65 6e 67 |ple%)+92.-..leng| 000061b0 74 68 25 3d 73 6c 65 6e 25 28 73 61 6d 70 6c 65 |th%=slen%(sample| 000061c0 25 29 0d 2d 96 05 cd 0d 2d a0 33 f2 73 61 76 65 |%).-....-.3.save| 000061d0 77 69 74 68 70 61 74 68 73 74 72 69 6e 67 28 6c |withpathstring(l| 000061e0 65 61 66 24 2c 70 61 74 68 24 2c 73 74 61 72 74 |eaf$,path$,start| 000061f0 25 2c 6c 65 6e 67 74 68 25 29 0d 2d aa 26 f2 73 |%,length%).-.&.s| 00006200 65 74 66 69 6c 65 74 79 70 65 28 70 61 74 68 24 |etfiletype(path$| 00006210 2b 22 2e 22 2b 6c 65 61 66 24 2c 26 43 42 35 29 |+"."+leaf$,&CB5)| 00006220 0d 2d b4 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 |.-.... "Wimp_Cre| 00006230 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 2d be 05 |ateMenu",,-1.-..| 00006240 e1 0d 2d c8 05 3a 0d 2d d2 0e dd f2 73 61 76 65 |..-..:.-....save| 00006250 74 75 6e 65 0d 2d dc 38 f2 77 72 69 74 65 77 69 |tune.-.8.writewi| 00006260 74 68 7a 65 72 6f 73 28 a4 69 63 6f 6e 74 65 78 |thzeros(.icontex| 00006270 74 28 74 75 6e 65 69 6e 66 6f 25 2c 37 29 2c 6d |t(tuneinfo%,7),m| 00006280 6e 61 6d 61 64 64 72 25 2c 33 32 29 0d 2d e6 38 |namaddr%,32).-.8| 00006290 f2 77 72 69 74 65 77 69 74 68 7a 65 72 6f 73 28 |.writewithzeros(| 000062a0 a4 69 63 6f 6e 74 65 78 74 28 74 75 6e 65 69 6e |.icontext(tunein| 000062b0 66 6f 25 2c 38 29 2c 61 6e 61 6d 61 64 64 72 25 |fo%,8),anamaddr%| 000062c0 2c 33 32 29 0d 2d f0 12 f2 72 65 77 72 69 74 65 |,32).-...rewrite| 000062d0 73 74 65 72 65 6f 0d 2d fa 20 6c 65 61 66 24 3d |stereo.-. leaf$=| 000062e0 a4 69 63 6f 6e 74 65 78 74 28 73 61 76 65 74 75 |.icontext(savetu| 000062f0 6e 65 25 2c 33 29 0d 2e 04 1a 6c 65 61 66 24 3d |ne%,3)....leaf$=| 00006300 a4 6c 65 61 66 6e 61 6d 65 28 6c 65 61 66 24 29 |.leafname(leaf$)| 00006310 0d 2e 0e 22 70 61 74 68 24 3d a4 73 74 72 69 6e |..."path$=.strin| 00006320 67 66 72 6f 6d 6d 65 6d 6f 72 79 28 71 25 2b 34 |gfrommemory(q%+4| 00006330 34 29 0d 2e 18 1c 70 61 74 68 24 3d c0 70 61 74 |4)....path$=.pat| 00006340 68 24 2c a9 28 70 61 74 68 24 29 2d 31 29 0d 2e |h$,.(path$)-1)..| 00006350 22 42 f2 73 61 76 65 77 69 74 68 70 61 74 68 73 |"B.savewithpaths| 00006360 74 72 69 6e 67 28 6c 65 61 66 24 2c 70 61 74 68 |tring(leaf$,path| 00006370 24 2c 74 72 61 63 6b 65 72 74 75 6e 65 25 2c 74 |$,trackertune%,t| 00006380 72 61 63 6b 65 72 74 75 6e 65 25 21 34 2b 38 29 |rackertune%!4+8)| 00006390 0d 2e 2c 26 f2 73 65 74 66 69 6c 65 74 79 70 65 |..,&.setfiletype| 000063a0 28 70 61 74 68 24 2b 22 2e 22 2b 6c 65 61 66 24 |(path$+"."+leaf$| 000063b0 2c 26 43 42 36 29 0d 2e 36 2d f2 73 65 74 69 63 |,&CB6)..6-.setic| 000063c0 6f 6e 74 65 78 74 28 73 61 76 65 74 75 6e 65 25 |ontext(savetune%| 000063d0 2c 33 2c 70 61 74 68 24 2b 22 2e 22 2b 6c 65 61 |,3,path$+"."+lea| 000063e0 66 24 29 0d 2e 40 1c c8 99 20 22 57 69 6d 70 5f |f$)..@... "Wimp_| 000063f0 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d |CreateMenu",,-1.| 00006400 2e 4a 05 e1 0d 2e 54 05 3a 0d 2e 5e 1c dd f2 64 |.J....T.:..^...d| 00006410 65 6c 65 74 65 73 61 6d 70 6c 65 28 73 61 6d 70 |eletesample(samp| 00006420 70 6f 73 25 29 0d 2e 68 1e 61 74 25 3d 73 61 6d |pos%)..h.at%=sam| 00006430 70 61 64 64 72 25 28 73 61 6d 70 70 6f 73 25 29 |paddr%(samppos%)| 00006440 2b 39 32 0d 2e 72 1d 74 6f 64 65 6c 65 74 65 25 |+92..r.todelete%| 00006450 3d 73 6c 65 6e 25 28 73 61 6d 70 70 6f 73 25 29 |=slen%(samppos%)| 00006460 0d 2e 7c 26 64 75 6d 6d 79 25 3d a4 64 65 6c 65 |..|&dummy%=.dele| 00006470 74 65 62 79 74 65 73 28 61 74 25 2c 74 6f 64 65 |tebytes(at%,tode| 00006480 6c 65 74 65 25 29 0d 2e 86 1b 61 74 25 3d 73 61 |lete%)....at%=sa| 00006490 6d 70 61 64 64 72 25 28 73 61 6d 70 70 6f 73 25 |mpaddr%(samppos%| 000064a0 29 0d 2e 90 21 f2 77 72 69 74 65 77 69 74 68 7a |)...!.writewithz| 000064b0 65 72 6f 73 28 22 22 2c 61 74 25 2b 31 36 2c 32 |eros("",at%+16,2| 000064c0 30 29 0d 2e 9a 0c 61 74 25 21 34 3d 38 34 0d 2e |0)....at%!4=84..| 000064d0 a4 0c 61 74 25 21 35 36 3d 30 0d 2e ae 0c 61 74 |..at%!56=0....at| 000064e0 25 21 36 38 3d 30 0d 2e b8 0c 61 74 25 21 38 30 |%!68=0....at%!80| 000064f0 3d 32 0d 2e c2 0c 61 74 25 21 38 38 3d 30 0d 2e |=2....at%!88=0..| 00006500 cc 10 f2 72 65 61 64 73 61 6d 70 6c 65 73 0d 2e |...readsamples..| 00006510 d6 15 f2 77 72 69 74 65 73 61 6d 70 6c 65 6e 61 |...writesamplena| 00006520 6d 65 73 0d 2e e0 0d f2 6d 69 6e 69 6d 69 73 65 |mes.....minimise| 00006530 0d 2e ea 0d f2 74 75 6e 65 69 6e 66 6f 0d 2e f4 |.....tuneinfo...| 00006540 05 e1 0d 2e fe 05 3a 0d 2f 08 10 dd f2 75 70 64 |......:./....upd| 00006550 61 74 65 73 69 7a 65 0d 2f 12 1a 73 69 7a 65 25 |atesize./..size%| 00006560 3d 74 72 61 63 6b 65 72 74 75 6e 65 25 21 34 2b |=trackertune%!4+| 00006570 38 0d 2f 1c 20 6b 73 69 7a 65 25 3d a8 28 28 73 |8./. ksize%=.((s| 00006580 69 7a 65 25 2b 35 31 32 29 20 81 20 31 30 32 34 |ize%+512) . 1024| 00006590 29 0d 2f 26 2c f2 73 65 74 69 63 6f 6e 74 65 78 |)./&,.seticontex| 000065a0 74 28 74 75 6e 65 69 6e 66 6f 25 2c 31 39 2c c3 |t(tuneinfo%,19,.| 000065b0 28 6b 73 69 7a 65 25 29 2b 22 4b 22 29 0d 2f 30 |(ksize%)+"K")./0| 000065c0 30 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 74 75 |0.seticontext(tu| 000065d0 6e 65 69 6e 66 6f 25 2c 32 30 2c c3 28 73 69 7a |neinfo%,20,.(siz| 000065e0 65 25 29 2b 22 20 62 79 74 65 73 22 29 0d 2f 3a |e%)+" bytes")./:| 000065f0 05 e1 0d 2f 44 05 3a 0d 2f 4e 0f dd f2 71 75 69 |.../D.:./N...qui| 00006600 63 6b 73 61 76 65 0d 2f 58 20 73 61 76 65 24 3d |cksave./X save$=| 00006610 a4 69 63 6f 6e 74 65 78 74 28 73 61 76 65 74 75 |.icontext(savetu| 00006620 6e 65 25 2c 33 29 0d 2f 62 1e f2 6d 61 6b 65 73 |ne%,3)./b..makes| 00006630 65 6c 65 63 74 65 64 28 73 61 76 65 74 75 6e 65 |elected(savetune| 00006640 25 2c 34 29 0d 2f 6c 34 e7 20 a7 73 61 76 65 24 |%,4)./l4. .save$| 00006650 2c 22 2e 22 29 3d 30 20 8c 20 f2 6d 61 6b 65 75 |,".")=0 . .makeu| 00006660 6e 73 65 6c 65 63 74 65 64 28 73 61 76 65 74 75 |nselected(savetu| 00006670 6e 65 25 2c 34 29 3a e1 0d 2f 76 38 f2 77 72 69 |ne%,4):../v8.wri| 00006680 74 65 77 69 74 68 7a 65 72 6f 73 28 a4 69 63 6f |tewithzeros(.ico| 00006690 6e 74 65 78 74 28 74 75 6e 65 69 6e 66 6f 25 2c |ntext(tuneinfo%,| 000066a0 37 29 2c 6d 6e 61 6d 61 64 64 72 25 2c 33 32 29 |7),mnamaddr%,32)| 000066b0 0d 2f 80 38 f2 77 72 69 74 65 77 69 74 68 7a 65 |./.8.writewithze| 000066c0 72 6f 73 28 a4 69 63 6f 6e 74 65 78 74 28 74 75 |ros(.icontext(tu| 000066d0 6e 65 69 6e 66 6f 25 2c 38 29 2c 61 6e 61 6d 61 |neinfo%,8),anama| 000066e0 64 64 72 25 2c 33 32 29 0d 2f 8a 12 f2 72 65 77 |ddr%,32)./...rew| 000066f0 72 69 74 65 73 74 65 72 65 6f 0d 2f 94 17 73 74 |ritestereo./..st| 00006700 61 72 74 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 |art%=trackertune| 00006710 25 0d 2f 9e 1c 6c 65 6e 67 74 68 25 3d 74 72 61 |%./..length%=tra| 00006720 63 6b 65 72 74 75 6e 65 25 21 34 2b 38 0d 2f a8 |ckertune%!4+8./.| 00006730 30 ff 28 22 53 41 56 45 20 22 2b 73 61 76 65 24 |0.("SAVE "+save$| 00006740 2b 22 20 22 2b c3 7e 73 74 61 72 74 25 2b 22 20 |+" "+.~start%+" | 00006750 2b 22 2b c3 7e 6c 65 6e 67 74 68 25 29 0d 2f b2 |+"+.~length%)./.| 00006760 1c f2 73 65 74 66 69 6c 65 74 79 70 65 28 73 61 |..setfiletype(sa| 00006770 76 65 24 2c 26 43 42 36 29 0d 2f bc 20 f2 6d 61 |ve$,&CB6)./. .ma| 00006780 6b 65 75 6e 73 65 6c 65 63 74 65 64 28 73 61 76 |keunselected(sav| 00006790 65 74 75 6e 65 25 2c 34 29 0d 2f c6 1c c8 99 20 |etune%,4)./.... | 000067a0 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 |"Wimp_CreateMenu| 000067b0 22 2c 2c 2d 31 0d 2f d0 05 e1 0d 2f da 05 3a 0d |",,-1./..../..:.| 000067c0 2f e4 12 dd f2 69 6e 63 64 65 66 76 6f 69 63 65 |/....incdefvoice| 000067d0 73 0d 2f ee 22 e7 20 64 65 66 76 6f 69 63 65 73 |s./.". defvoices| 000067e0 25 3c 38 20 8c 20 64 65 66 76 6f 69 63 65 73 25 |%<8 . defvoices%| 000067f0 2b 3d 31 0d 2f f8 2b f2 73 65 74 69 63 6f 6e 74 |+=1./.+.seticont| 00006800 65 78 74 28 6e 65 77 74 72 61 63 6b 25 2c 35 2c |ext(newtrack%,5,| 00006810 c3 28 64 65 66 76 6f 69 63 65 73 25 29 29 0d 30 |.(defvoices%)).0| 00006820 02 05 e1 0d 30 0c 05 3a 0d 30 16 12 dd f2 64 65 |....0..:.0....de| 00006830 63 64 65 66 76 6f 69 63 65 73 0d 30 20 22 e7 20 |cdefvoices.0 ". | 00006840 64 65 66 76 6f 69 63 65 73 25 3e 31 20 8c 20 64 |defvoices%>1 . d| 00006850 65 66 76 6f 69 63 65 73 25 2d 3d 31 0d 30 2a 2b |efvoices%-=1.0*+| 00006860 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 6e 65 77 |.seticontext(new| 00006870 74 72 61 63 6b 25 2c 35 2c c3 28 64 65 66 76 6f |track%,5,.(defvo| 00006880 69 63 65 73 25 29 29 0d 30 34 05 e1 0d 30 3e 05 |ices%)).04...0>.| 00006890 3a 0d 30 48 0f dd f2 63 6c 65 61 72 64 61 74 61 |:.0H...cleardata| 000068a0 0d 30 52 0c 61 62 6f 72 74 25 3d a3 0d 30 5c 13 |.0R.abort%=..0\.| 000068b0 e7 20 74 75 6e 65 6c 6f 61 64 65 64 25 20 8c 0d |. tuneloaded% ..| 000068c0 30 66 41 65 72 72 6f 72 65 78 69 74 25 3d a4 65 |0fAerrorexit%=.e| 000068d0 72 72 6f 72 62 6f 78 28 31 37 2c 22 44 61 74 61 |rrorbox(17,"Data| 000068e0 20 77 69 6c 6c 20 62 65 20 6c 6f 73 74 20 2d 20 | will be lost - | 000068f0 61 72 65 20 79 6f 75 20 73 75 72 65 20 3f 22 29 |are you sure ?")| 00006900 0d 30 70 1d e7 20 65 72 72 6f 72 65 78 69 74 25 |.0p.. errorexit%| 00006910 3d 32 20 8c 20 61 62 6f 72 74 25 3d b9 0d 30 7a |=2 . abort%=..0z| 00006920 05 cd 0d 30 84 10 e7 20 61 62 6f 72 74 25 20 8c |...0... abort% .| 00006930 20 e1 0d 30 8e 11 f2 72 65 74 75 72 6e 6d 65 6d | ..0...returnmem| 00006940 6f 72 79 0d 30 98 0d f2 73 74 6f 70 74 75 6e 65 |ory.0...stoptune| 00006950 0d 30 a2 0d f2 63 6c 6f 73 65 61 6c 6c 0d 30 ac |.0...closeall.0.| 00006960 11 74 75 6e 65 6c 6f 61 64 65 64 25 3d a3 0d 30 |.tuneloaded%=..0| 00006970 b6 05 e1 0d 30 c0 05 3a 0d 30 ca 0e dd f2 63 6c |....0..:.0....cl| 00006980 6f 73 65 61 6c 6c 0d 30 d4 1b f2 63 6c 6f 73 65 |oseall.0...close| 00006990 77 69 6e 64 6f 77 28 74 75 6e 65 69 6e 66 6f 25 |window(tuneinfo%| 000069a0 29 0d 30 de 1a f2 63 6c 6f 73 65 77 69 6e 64 6f |).0...closewindo| 000069b0 77 28 73 61 6d 70 6c 65 73 25 29 0d 30 e8 19 f2 |w(samples%).0...| 000069c0 63 6c 6f 73 65 77 69 6e 64 6f 77 28 73 74 65 72 |closewindow(ster| 000069d0 65 6f 25 29 0d 30 f2 1e f2 63 6c 6f 73 65 77 69 |eo%).0...closewi| 000069e0 6e 64 6f 77 28 63 6f 70 79 70 61 74 74 65 72 6e |ndow(copypattern| 000069f0 25 29 0d 30 fc 19 f2 63 6c 6f 73 65 77 69 6e 64 |%).0...closewind| 00006a00 6f 77 28 70 6c 61 79 65 72 25 29 0d 31 06 1d f2 |ow(player%).1...| 00006a10 63 6c 6f 73 65 77 69 6e 64 6f 77 28 61 6d 65 6e |closewindow(amen| 00006a20 64 74 72 61 63 6b 25 29 0d 31 10 05 e1 0d 31 1a |dtrack%).1....1.| 00006a30 05 3a 0d 31 24 14 dd f2 63 72 65 61 74 65 74 75 |.:.1$...createtu| 00006a40 6e 65 28 76 25 29 0d 31 2e 0c 61 62 6f 72 74 25 |ne(v%).1..abort%| 00006a50 3d a3 0d 31 38 13 e7 20 74 75 6e 65 6c 6f 61 64 |=..18.. tuneload| 00006a60 65 64 25 20 8c 0d 31 42 49 65 72 72 6f 72 65 78 |ed% ..1BIerrorex| 00006a70 69 74 25 3d a4 65 72 72 6f 72 62 6f 78 28 31 37 |it%=.errorbox(17| 00006a80 2c 22 45 78 69 73 74 69 6e 67 20 74 75 6e 65 20 |,"Existing tune | 00006a90 77 69 6c 6c 20 62 65 20 6c 6f 73 74 20 2d 20 61 |will be lost - a| 00006aa0 72 65 20 79 6f 75 20 73 75 72 65 3f 22 29 0d 31 |re you sure?").1| 00006ab0 4c 1d e7 20 65 72 72 6f 72 65 78 69 74 25 3d 32 |L.. errorexit%=2| 00006ac0 20 8c 20 61 62 6f 72 74 25 3d b9 0d 31 56 1c e7 | . abort%=..1V..| 00006ad0 20 61 62 6f 72 74 25 3d a3 20 f2 72 65 74 75 72 | abort%=. .retur| 00006ae0 6e 6d 65 6d 6f 72 79 0d 31 60 05 cd 0d 31 6a 28 |nmemory.1`...1j(| 00006af0 e7 20 61 62 6f 72 74 25 20 8c 20 f2 63 6c 6f 73 |. abort% . .clos| 00006b00 65 77 69 6e 64 6f 77 28 6e 65 77 74 72 61 63 6b |ewindow(newtrack| 00006b10 25 29 3a e1 0d 31 74 0d f2 73 74 6f 70 74 75 6e |%):..1t..stoptun| 00006b20 65 0d 31 7e 1e f2 6d 61 6b 65 73 65 6c 65 63 74 |e.1~..makeselect| 00006b30 65 64 28 6e 65 77 74 72 61 63 6b 25 2c 32 29 0d |ed(newtrack%,2).| 00006b40 31 88 18 6d 65 6d 6e 65 65 64 65 64 25 3d 33 36 |1..memneeded%=36| 00006b50 38 2b 33 36 2a 39 32 0d 31 92 17 6d 65 6d 6e 65 |8+36*92.1..memne| 00006b60 65 64 65 64 25 2b 3d 76 25 2a 36 34 2a 34 0d 31 |eded%+=v%*64*4.1| 00006b70 9c 0e 66 72 65 65 6d 65 6d 25 3d 30 0d 31 a6 1c |..freemem%=0.1..| 00006b80 e7 20 a4 67 72 61 62 6d 65 6d 28 6d 65 6d 6e 65 |. .grabmem(memne| 00006b90 65 64 65 64 25 29 20 8c 0d 31 b0 08 6f 25 3d 30 |eded%) ..1..o%=0| 00006ba0 0d 31 ba 13 74 25 3d 74 72 61 63 6b 65 72 74 75 |.1..t%=trackertu| 00006bb0 6e 65 25 0d 31 c4 1f 74 25 21 6f 25 3d a4 77 6f |ne%.1..t%!o%=.wo| 00006bc0 72 64 28 22 4d 55 53 58 22 29 20 3a 20 6f 25 2b |rd("MUSX") : o%+| 00006bd0 3d 34 0d 31 ce 20 74 25 21 6f 25 3d 6d 65 6d 6e |=4.1. t%!o%=memn| 00006be0 65 65 64 65 64 25 2d 38 20 20 20 3a 20 6f 25 2b |eeded%-8 : o%+| 00006bf0 3d 34 0d 31 d8 1f 74 25 21 6f 25 3d a4 77 6f 72 |=4.1..t%!o%=.wor| 00006c00 64 28 22 54 49 4e 46 22 29 20 3a 20 6f 25 2b 3d |d("TINF") : o%+=| 00006c10 34 0d 31 e2 20 74 25 21 6f 25 3d 34 20 20 20 20 |4.1. t%!o%=4 | 00006c20 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d | : o%+=| 00006c30 34 0d 31 ec 20 74 25 21 6f 25 3d 30 20 20 20 20 |4.1. t%!o%=0 | 00006c40 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d | : o%+=| 00006c50 34 0d 31 f6 1f 74 25 21 6f 25 3d a4 77 6f 72 64 |4.1..t%!o%=.word| 00006c60 28 22 4d 56 4f 58 22 29 20 3a 20 6f 25 2b 3d 34 |("MVOX") : o%+=4| 00006c70 0d 32 00 20 74 25 21 6f 25 3d 34 20 20 20 20 20 |.2. t%!o%=4 | 00006c80 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 | : o%+=4| 00006c90 0d 32 0a 20 74 25 21 6f 25 3d 76 25 20 20 20 20 |.2. t%!o%=v% | 00006ca0 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 | : o%+=4| 00006cb0 0d 32 14 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 |.2..t%!o%=.word(| 00006cc0 22 53 54 45 52 22 29 20 3a 20 6f 25 2b 3d 34 0d |"STER") : o%+=4.| 00006cd0 32 1e 20 74 25 21 6f 25 3d 38 20 20 20 20 20 20 |2. t%!o%=8 | 00006ce0 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d | : o%+=4.| 00006cf0 32 28 20 74 25 21 6f 25 3d 26 30 33 30 35 30 35 |2( t%!o%=&030505| 00006d00 30 33 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d |03 : o%+=4.| 00006d10 32 32 20 74 25 21 6f 25 3d 26 30 33 30 35 30 35 |22 t%!o%=&030505| 00006d20 30 33 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d |03 : o%+=4.| 00006d30 32 3c 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 |2<.t%!o%=.word("| 00006d40 4d 4e 41 4d 22 29 20 3a 20 6f 25 2b 3d 34 0d 32 |MNAM") : o%+=4.2| 00006d50 46 20 74 25 21 6f 25 3d 33 32 20 20 20 20 20 20 |F t%!o%=32 | 00006d60 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 32 | : o%+=4.2| 00006d70 50 2a f2 77 72 69 74 65 77 69 74 68 7a 65 72 6f |P*.writewithzero| 00006d80 73 28 22 3c 55 6e 74 69 74 6c 65 64 3e 22 2c 74 |s("<Untitled>",t| 00006d90 25 2b 6f 25 2c 33 32 29 0d 32 5a 0a 6f 25 2b 3d |%+o%,32).2Z.o%+=| 00006da0 33 32 0d 32 64 1f 74 25 21 6f 25 3d a4 77 6f 72 |32.2d.t%!o%=.wor| 00006db0 64 28 22 41 4e 41 4d 22 29 20 3a 20 6f 25 2b 3d |d("ANAM") : o%+=| 00006dc0 34 0d 32 6e 20 74 25 21 6f 25 3d 33 32 20 20 20 |4.2n t%!o%=32 | 00006dd0 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d | : o%+=| 00006de0 34 0d 32 78 25 f2 77 72 69 74 65 77 69 74 68 7a |4.2x%.writewithz| 00006df0 65 72 6f 73 28 22 3c 59 6f 75 3e 22 2c 74 25 2b |eros("<You>",t%+| 00006e00 6f 25 2c 33 32 29 0d 32 82 0a 6f 25 2b 3d 33 32 |o%,32).2..o%+=32| 00006e10 0d 32 8c 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 |.2..t%!o%=.word(| 00006e20 22 4d 4c 45 4e 22 29 20 3a 20 6f 25 2b 3d 34 0d |"MLEN") : o%+=4.| 00006e30 32 96 20 74 25 21 6f 25 3d 34 20 20 20 20 20 20 |2. t%!o%=4 | 00006e40 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d | : o%+=4.| 00006e50 32 a0 20 74 25 21 6f 25 3d 31 20 20 20 20 20 20 |2. t%!o%=1 | 00006e60 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d | : o%+=4.| 00006e70 32 aa 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 |2..t%!o%=.word("| 00006e80 50 4e 55 4d 22 29 20 3a 20 6f 25 2b 3d 34 0d 32 |PNUM") : o%+=4.2| 00006e90 b4 20 74 25 21 6f 25 3d 34 20 20 20 20 20 20 20 |. t%!o%=4 | 00006ea0 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 32 | : o%+=4.2| 00006eb0 be 20 74 25 21 6f 25 3d 31 20 20 20 20 20 20 20 |. t%!o%=1 | 00006ec0 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 32 | : o%+=4.2| 00006ed0 c8 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 50 |..t%!o%=.word("P| 00006ee0 4c 45 4e 22 29 20 3a 20 6f 25 2b 3d 34 0d 32 d2 |LEN") : o%+=4.2.| 00006ef0 20 74 25 21 6f 25 3d 36 34 20 20 20 20 20 20 20 | t%!o%=64 | 00006f00 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 32 dc | : o%+=4.2.| 00006f10 0f e3 20 69 25 3d 31 20 b8 20 36 34 0d 32 e6 0c |.. i%=1 . 64.2..| 00006f20 74 25 3f 6f 25 3d 36 34 0d 32 f0 09 6f 25 2b 3d |t%?o%=64.2..o%+=| 00006f30 31 0d 32 fa 05 ed 0d 33 04 1f 74 25 21 6f 25 3d |1.2....3..t%!o%=| 00006f40 a4 77 6f 72 64 28 22 53 45 51 55 22 29 20 3a 20 |.word("SEQU") : | 00006f50 6f 25 2b 3d 34 0d 33 0e 20 74 25 21 6f 25 3d 31 |o%+=4.3. t%!o%=1| 00006f60 32 38 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 |28 : | 00006f70 6f 25 2b 3d 34 0d 33 18 10 e3 20 69 25 3d 31 20 |o%+=4.3... i%=1 | 00006f80 b8 20 31 32 38 0d 33 22 0b 74 25 3f 6f 25 3d 30 |. 128.3".t%?o%=0| 00006f90 0d 33 2c 09 6f 25 2b 3d 31 0d 33 36 05 ed 0d 33 |.3,.o%+=1.36...3| 00006fa0 40 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 50 |@.t%!o%=.word("P| 00006fb0 41 54 54 22 29 20 3a 20 6f 25 2b 3d 34 0d 33 4a |ATT") : o%+=4.3J| 00006fc0 20 74 25 21 6f 25 3d 76 25 2a 36 34 2a 34 20 20 | t%!o%=v%*64*4 | 00006fd0 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 33 54 | : o%+=4.3T| 00006fe0 14 e3 20 69 25 3d 31 20 b8 20 76 25 2a 36 34 2a |.. i%=1 . v%*64*| 00006ff0 34 0d 33 5e 0b 74 25 3f 6f 25 3d 30 0d 33 68 09 |4.3^.t%?o%=0.3h.| 00007000 6f 25 2b 3d 31 0d 33 72 05 ed 0d 33 7c 14 e3 20 |o%+=1.3r...3|.. | 00007010 73 61 6d 70 6c 65 25 3d 31 20 b8 20 33 36 0d 33 |sample%=1 . 36.3| 00007020 86 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 53 |..t%!o%=.word("S| 00007030 41 4d 50 22 29 20 3a 20 6f 25 2b 3d 34 0d 33 90 |AMP") : o%+=4.3.| 00007040 20 74 25 21 6f 25 3d 38 34 20 20 20 20 20 20 20 | t%!o%=84 | 00007050 20 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 33 9a | : o%+=4.3.| 00007060 1f 74 25 21 6f 25 3d a4 77 6f 72 64 28 22 53 4e |.t%!o%=.word("SN| 00007070 41 4d 22 29 20 3a 20 6f 25 2b 3d 34 0d 33 a4 20 |AM") : o%+=4.3. | 00007080 74 25 21 6f 25 3d 32 30 20 20 20 20 20 20 20 20 |t%!o%=20 | 00007090 20 20 20 20 20 3a 20 6f 25 2b 3d 34 0d 33 ae 20 | : o%+=4.3. | 000070a0 f2 77 72 69 74 65 77 69 74 68 7a 65 72 6f 73 28 |.writewithzeros(| 000070b0 22 22 2c 74 25 2b 6f 25 2c 32 30 29 0d 33 b8 0a |"",t%+o%,20).3..| 000070c0 6f 25 2b 3d 32 30 0d 33 c2 1f 74 25 21 6f 25 3d |o%+=20.3..t%!o%=| 000070d0 a4 77 6f 72 64 28 22 53 56 4f 4c 22 29 20 3a 20 |.word("SVOL") : | 000070e0 6f 25 2b 3d 34 0d 33 cc 20 74 25 21 6f 25 3d 34 |o%+=4.3. t%!o%=4| 000070f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 | : | 00007100 6f 25 2b 3d 34 0d 33 d6 20 74 25 21 6f 25 3d 32 |o%+=4.3. t%!o%=2| 00007110 35 35 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 |55 : | 00007120 6f 25 2b 3d 34 0d 33 e0 1f 74 25 21 6f 25 3d a4 |o%+=4.3..t%!o%=.| 00007130 77 6f 72 64 28 22 53 4c 45 4e 22 29 20 3a 20 6f |word("SLEN") : o| 00007140 25 2b 3d 34 0d 33 ea 20 74 25 21 6f 25 3d 34 20 |%+=4.3. t%!o%=4 | 00007150 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f | : o| 00007160 25 2b 3d 34 0d 33 f4 20 74 25 21 6f 25 3d 30 20 |%+=4.3. t%!o%=0 | 00007170 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f | : o| 00007180 25 2b 3d 34 0d 33 fe 1f 74 25 21 6f 25 3d a4 77 |%+=4.3..t%!o%=.w| 00007190 6f 72 64 28 22 52 4f 46 53 22 29 20 3a 20 6f 25 |ord("ROFS") : o%| 000071a0 2b 3d 34 0d 34 08 20 74 25 21 6f 25 3d 34 20 20 |+=4.4. t%!o%=4 | 000071b0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 | : o%| 000071c0 2b 3d 34 0d 34 12 20 74 25 21 6f 25 3d 30 20 20 |+=4.4. t%!o%=0 | 000071d0 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 | : o%| 000071e0 2b 3d 34 0d 34 1c 1f 74 25 21 6f 25 3d a4 77 6f |+=4.4..t%!o%=.wo| 000071f0 72 64 28 22 52 4c 45 4e 22 29 20 3a 20 6f 25 2b |rd("RLEN") : o%+| 00007200 3d 34 0d 34 26 20 74 25 21 6f 25 3d 34 20 20 20 |=4.4& t%!o%=4 | 00007210 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b | : o%+| 00007220 3d 34 0d 34 30 20 74 25 21 6f 25 3d 32 20 20 20 |=4.40 t%!o%=2 | 00007230 20 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b | : o%+| 00007240 3d 34 0d 34 3a 1f 74 25 21 6f 25 3d a4 77 6f 72 |=4.4:.t%!o%=.wor| 00007250 64 28 22 53 44 41 54 22 29 20 3a 20 6f 25 2b 3d |d("SDAT") : o%+=| 00007260 34 0d 34 44 20 74 25 21 6f 25 3d 30 20 20 20 20 |4.4D t%!o%=0 | 00007270 20 20 20 20 20 20 20 20 20 20 3a 20 6f 25 2b 3d | : o%+=| 00007280 34 0d 34 4e 05 ed 0d 34 58 11 74 75 6e 65 6c 6f |4.4N...4X.tunelo| 00007290 61 64 65 64 25 3d b9 0d 34 62 0e 70 6c 61 79 69 |aded%=..4b.playi| 000072a0 6e 67 25 3d a3 0d 34 6c 27 f2 73 65 74 69 63 6f |ng%=..4l'.setico| 000072b0 6e 74 65 78 74 28 73 61 76 65 74 75 6e 65 25 2c |ntext(savetune%,| 000072c0 33 2c 22 54 72 61 63 6b 65 72 22 29 0d 34 76 11 |3,"Tracker").4v.| 000072d0 f2 67 65 74 6d 75 73 69 63 69 6e 66 6f 0d 34 80 |.getmusicinfo.4.| 000072e0 0d f2 74 75 6e 65 69 6e 66 6f 0d 34 8a 11 f2 75 |..tuneinfo.4...u| 000072f0 70 64 61 74 65 73 74 65 72 65 6f 0d 34 94 15 f2 |pdatestereo.4...| 00007300 77 72 69 74 65 73 61 6d 70 6c 65 6e 61 6d 65 73 |writesamplenames| 00007310 0d 34 9e 15 f2 69 6e 69 74 69 61 6c 69 73 65 76 |.4...initialisev| 00007320 6f 69 63 65 73 0d 34 a8 1b f2 63 6c 6f 73 65 77 |oices.4...closew| 00007330 69 6e 64 6f 77 28 6e 65 77 74 72 61 63 6b 25 29 |indow(newtrack%)| 00007340 0d 34 b2 0d f2 6d 69 6e 69 6d 69 73 65 0d 34 bc |.4...minimise.4.| 00007350 05 cc 0d 34 c6 11 74 75 6e 65 6c 6f 61 64 65 64 |...4..tuneloaded| 00007360 25 3d a3 0d 34 d0 0d f2 63 6c 6f 73 65 61 6c 6c |%=..4...closeall| 00007370 0d 34 da 05 cd 0d 34 e4 20 f2 6d 61 6b 65 75 6e |.4....4. .makeun| 00007380 73 65 6c 65 63 74 65 64 28 6e 65 77 74 72 61 63 |selected(newtrac| 00007390 6b 25 2c 32 29 0d 34 ee 11 6a 75 73 74 6c 6f 61 |k%,2).4..justloa| 000073a0 64 65 64 25 3d b9 0d 34 f8 0f 64 65 6c 76 6f 69 |ded%=..4..delvoi| 000073b0 63 65 25 3d 31 0d 35 02 0d 64 65 6c 70 61 74 25 |ce%=1.5..delpat%| 000073c0 3d 31 0d 35 0c 0e 73 61 76 65 70 61 74 25 3d 31 |=1.5..savepat%=1| 000073d0 0d 35 16 0e 63 6f 70 79 70 61 74 25 3d 31 0d 35 |.5..copypat%=1.5| 000073e0 20 2c f2 73 65 74 69 63 6f 6e 74 65 78 74 28 63 | ,.seticontext(c| 000073f0 6f 70 79 70 61 74 74 65 72 6e 25 2c 35 2c c3 28 |opypattern%,5,.(| 00007400 63 6f 70 79 70 61 74 25 29 29 0d 35 2a 2a f2 73 |copypat%)).5**.s| 00007410 65 74 69 63 6f 6e 74 65 78 74 28 61 6d 65 6e 64 |eticontext(amend| 00007420 74 72 61 63 6b 25 2c 32 2c c3 28 64 65 6c 70 61 |track%,2,.(delpa| 00007430 74 25 29 29 0d 35 34 2d f2 73 65 74 69 63 6f 6e |t%)).54-.seticon| 00007440 74 65 78 74 28 61 6d 65 6e 64 74 72 61 63 6b 25 |text(amendtrack%| 00007450 2c 31 30 2c c3 28 64 65 6c 76 6f 69 63 65 25 29 |,10,.(delvoice%)| 00007460 29 0d 35 3e 0e f2 72 65 64 6f 63 61 72 65 74 0d |).5>..redocaret.| 00007470 35 48 05 e1 0d 35 52 05 3a 0d 35 5c 19 dd a4 65 |5H...5R.:.5\...e| 00007480 72 72 6f 72 62 6f 78 28 65 72 72 25 2c 65 72 72 |rrorbox(err%,err| 00007490 24 29 0d 35 66 18 71 25 21 30 3d 65 72 72 25 2b |$).5f.q%!0=err%+| 000074a0 28 74 61 73 6b 25 3c 3c 38 29 0d 35 70 15 24 28 |(task%<<8).5p.$(| 000074b0 71 25 2b 34 29 3d 65 72 72 24 2b bd 28 30 29 0d |q%+4)=err$+.(0).| 000074c0 35 7a 38 c8 99 20 22 57 69 6d 70 5f 52 65 70 6f |5z8.. "Wimp_Repo| 000074d0 72 74 45 72 72 6f 72 22 2c 71 25 2c 25 31 30 31 |rtError",q%,%101| 000074e0 31 2c 22 41 50 20 54 72 61 63 6b 65 72 22 20 b8 |1,"AP Tracker" .| 000074f0 20 2c 65 78 69 74 25 0d 35 84 0a 3d 65 78 69 74 | ,exit%.5..=exit| 00007500 25 0d 35 8e 05 3a 0d 35 98 19 dd a4 6c 65 61 66 |%.5..:.5....leaf| 00007510 6e 61 6d 65 28 66 75 6c 6c 70 61 74 68 24 29 0d |name(fullpath$).| 00007520 35 a2 18 e7 20 66 75 6c 6c 70 61 74 68 24 3d 22 |5... fullpath$="| 00007530 22 20 8c 20 3d 22 22 0d 35 ac 18 ea 20 6f 75 74 |" . ="".5... out| 00007540 70 75 74 24 2c 63 68 70 6f 73 25 2c 63 68 24 0d |put$,chpos%,ch$.| 00007550 35 b6 0e 6f 75 74 70 75 74 24 3d 22 22 0d 35 c0 |5..output$="".5.| 00007560 17 63 68 70 6f 73 25 3d a9 28 66 75 6c 6c 70 61 |.chpos%=.(fullpa| 00007570 74 68 24 29 0d 35 ca 05 f5 0d 35 d4 1c 63 68 24 |th$).5....5..ch$| 00007580 3d c1 66 75 6c 6c 70 61 74 68 24 2c 63 68 70 6f |=.fullpath$,chpo| 00007590 73 25 2c 31 29 0d 35 de 29 e7 20 a7 22 2e 3a 20 |s%,1).5.). .".: | 000075a0 22 2c 63 68 24 29 3d 30 20 8c 20 6f 75 74 70 75 |",ch$)=0 . outpu| 000075b0 74 24 3d 63 68 24 2b 6f 75 74 70 75 74 24 0d 35 |t$=ch$+output$.5| 000075c0 e8 0d 63 68 70 6f 73 25 2d 3d 31 0d 35 f2 1e fd |..chpos%-=1.5...| 000075d0 20 63 68 70 6f 73 25 3d 30 20 84 20 a7 22 2e 3a | chpos%=0 . .".:| 000075e0 20 22 2c 63 68 24 29 3e 30 0d 35 fc 0c 3d 6f 75 | ",ch$)>0.5..=ou| 000075f0 74 70 75 74 24 0d 36 06 05 3a 0d 36 10 0c dd f2 |tput$.6..:.6....| 00007600 73 74 65 72 65 6f 0d 36 1a 1a f2 6f 70 65 6e 77 |stereo.6...openw| 00007610 69 6e 64 6f 77 28 73 74 65 72 65 6f 25 2c 30 29 |indow(stereo%,0)| 00007620 0d 36 24 05 e1 0d 36 2e 05 3a 0d 36 38 13 dd f2 |.6$...6..:.68...| 00007630 73 65 74 73 74 65 72 65 6f 45 53 47 73 0d 36 42 |setstereoESGs.6B| 00007640 12 e3 20 76 6f 69 63 65 25 3d 31 20 b8 20 38 0d |.. voice%=1 . 8.| 00007650 36 4c 18 62 61 73 65 69 63 6f 6e 25 3d 76 6f 69 |6L.baseicon%=voi| 00007660 63 65 25 2a 38 2d 37 0d 36 56 0f 65 73 67 25 3d |ce%*8-7.6V.esg%=| 00007670 76 6f 69 63 65 25 0d 36 60 15 e3 20 65 61 63 68 |voice%.6`.. each| 00007680 69 63 6f 6e 25 3d 30 20 b8 20 36 0d 36 6a 2d f2 |icon%=0 . 6.6j-.| 00007690 73 65 74 45 53 47 28 73 74 65 72 65 6f 25 2c 62 |setESG(stereo%,b| 000076a0 61 73 65 69 63 6f 6e 25 2b 65 61 63 68 69 63 6f |aseicon%+eachico| 000076b0 6e 25 2c 65 73 67 25 29 0d 36 74 05 ed 0d 36 7e |n%,esg%).6t...6~| 000076c0 05 ed 0d 36 88 05 e1 0d 36 92 05 3a 0d 36 9c 12 |...6....6..:.6..| 000076d0 dd f2 75 70 64 61 74 65 73 74 65 72 65 6f 0d 36 |..updatestereo.6| 000076e0 a6 12 e3 20 76 6f 69 63 65 25 3d 31 20 b8 20 38 |... voice%=1 . 8| 000076f0 0d 36 b0 19 73 25 3d 73 74 65 72 61 64 64 72 25 |.6..s%=steraddr%| 00007700 2b 76 6f 69 63 65 25 2d 31 0d 36 ba 1b e7 20 3f |+voice%-1.6... ?| 00007710 73 25 3d 30 20 84 20 3f 73 25 3e 37 20 8c 20 3f |s%=0 . ?s%>7 . ?| 00007720 73 25 3d 34 0d 36 c4 18 62 61 73 65 69 63 6f 6e |s%=4.6..baseicon| 00007730 25 3d 76 6f 69 63 65 25 2a 38 2d 37 0d 36 ce 15 |%=voice%*8-7.6..| 00007740 e3 20 65 61 63 68 69 63 6f 6e 25 3d 30 20 b8 20 |. eachicon%=0 . | 00007750 36 0d 36 d8 30 f2 6d 61 6b 65 75 6e 73 65 6c 65 |6.6.0.makeunsele| 00007760 63 74 65 64 28 73 74 65 72 65 6f 25 2c 62 61 73 |cted(stereo%,bas| 00007770 65 69 63 6f 6e 25 2b 65 61 63 68 69 63 6f 6e 25 |eicon%+eachicon%| 00007780 29 0d 36 e2 05 ed 0d 36 ec 3d f2 6d 61 6b 65 73 |).6....6.=.makes| 00007790 65 6c 65 63 74 65 64 28 73 74 65 72 65 6f 25 2c |elected(stereo%,| 000077a0 62 61 73 65 69 63 6f 6e 25 2b 28 73 74 65 72 61 |baseicon%+(stera| 000077b0 64 64 72 25 3f 28 76 6f 69 63 65 25 2d 31 29 2d |ddr%?(voice%-1)-| 000077c0 31 29 29 0d 36 f6 05 ed 0d 37 00 05 e1 0d 37 0a |1)).6....7....7.| 000077d0 05 3a 0d 37 14 20 dd f2 73 65 74 45 53 47 28 77 |.:.7. ..setESG(w| 000077e0 69 6e 64 6f 77 25 2c 69 63 6f 6e 25 2c 73 65 74 |indow%,icon%,set| 000077f0 25 29 0d 37 1e 10 71 25 21 30 3d 77 69 6e 64 6f |%).7..q%!0=windo| 00007800 77 25 0d 37 28 0e 71 25 21 34 3d 69 63 6f 6e 25 |w%.7(.q%!4=icon%| 00007810 0d 37 32 11 71 25 21 38 3d 73 65 74 25 3c 3c 31 |.72.q%!8=set%<<1| 00007820 36 0d 37 3c 13 71 25 21 31 32 3d 25 31 31 31 31 |6.7<.q%!12=%1111| 00007830 3c 3c 31 36 0d 37 46 1e c8 99 20 22 57 69 6d 70 |<<16.7F... "Wimp| 00007840 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_SetIconState",,| 00007850 71 25 0d 37 50 05 e1 0d 37 5a 05 3a 0d 37 64 13 |q%.7P...7Z.:.7d.| 00007860 dd f2 72 65 77 72 69 74 65 73 74 65 72 65 6f 0d |..rewritestereo.| 00007870 37 6e 12 e3 20 76 6f 69 63 65 25 3d 31 20 b8 20 |7n.. voice%=1 . | 00007880 38 0d 37 78 19 77 25 3d 73 74 65 72 61 64 64 72 |8.7x.w%=steraddr| 00007890 25 2b 76 6f 69 63 65 25 2d 31 0d 37 82 18 62 61 |%+voice%-1.7..ba| 000078a0 73 65 69 63 6f 6e 25 3d 76 6f 69 63 65 25 2a 38 |seicon%=voice%*8| 000078b0 2d 37 0d 37 8c 08 73 25 3d 31 0d 37 96 15 e3 20 |-7.7..s%=1.7... | 000078c0 65 61 63 68 69 63 6f 6e 25 3d 30 20 b8 20 36 0d |eachicon%=0 . 6.| 000078d0 37 a0 41 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 |7.A. .isitselect| 000078e0 65 64 28 73 74 65 72 65 6f 25 2c 62 61 73 65 69 |ed(stereo%,basei| 000078f0 63 6f 6e 25 2b 65 61 63 68 69 63 6f 6e 25 29 20 |con%+eachicon%) | 00007900 8c 20 73 25 3d 65 61 63 68 69 63 6f 6e 25 2b 31 |. s%=eachicon%+1| 00007910 0d 37 aa 05 ed 0d 37 b4 0a 3f 77 25 3d 73 25 0d |.7....7..?w%=s%.| 00007920 37 be 05 ed 0d 37 c8 05 e1 0d 37 d2 05 3a 0d 37 |7....7....7..:.7| 00007930 dc 10 dd f2 69 6e 63 73 61 76 65 70 61 74 0d 37 |....incsavepat.7| 00007940 e6 26 e7 20 73 61 76 65 70 61 74 25 3c 70 61 74 |.&. savepat%<pat| 00007950 74 65 72 6e 73 25 20 8c 20 73 61 76 65 70 61 74 |terns% . savepat| 00007960 25 2b 3d 31 0d 37 f0 2c f2 73 65 74 69 63 6f 6e |%+=1.7.,.seticon| 00007970 74 65 78 74 28 73 61 76 65 70 61 74 74 65 72 6e |text(savepattern| 00007980 25 2c 36 2c c3 28 73 61 76 65 70 61 74 25 29 29 |%,6,.(savepat%))| 00007990 0d 37 fa 05 e1 0d 38 04 05 3a 0d 38 0e 10 dd f2 |.7....8..:.8....| 000079a0 64 65 63 73 61 76 65 70 61 74 0d 38 18 1e e7 20 |decsavepat.8... | 000079b0 73 61 76 65 70 61 74 25 3e 31 20 8c 20 73 61 76 |savepat%>1 . sav| 000079c0 65 70 61 74 25 2d 3d 31 0d 38 22 2c f2 73 65 74 |epat%-=1.8",.set| 000079d0 69 63 6f 6e 74 65 78 74 28 73 61 76 65 70 61 74 |icontext(savepat| 000079e0 74 65 72 6e 25 2c 36 2c c3 28 73 61 76 65 70 61 |tern%,6,.(savepa| 000079f0 74 25 29 29 0d 38 2c 05 e1 0d 38 36 05 3a 0d 38 |t%)).8,...86.:.8| 00007a00 40 19 dd a4 70 61 74 74 65 72 6e 61 64 64 72 28 |@...patternaddr(| 00007a10 70 61 74 6e 6f 25 29 0d 38 4a 16 3d 70 61 74 74 |patno%).8J.=patt| 00007a20 61 64 64 72 25 28 70 61 74 6e 6f 25 29 0d 38 54 |addr%(patno%).8T| 00007a30 05 3a 0d 38 5e 1c dd f2 73 61 76 65 70 61 74 74 |.:.8^...savepatt| 00007a40 65 72 6e 28 77 68 69 63 68 70 61 74 25 29 0d 38 |ern(whichpat%).8| 00007a50 68 27 73 74 61 72 74 70 61 74 25 3d a4 70 61 74 |h'startpat%=.pat| 00007a60 74 65 72 6e 61 64 64 72 28 77 68 69 63 68 70 61 |ternaddr(whichpa| 00007a70 74 25 29 2d 38 0d 38 72 1c 6c 65 6e 67 74 68 25 |t%)-8.8r.length%| 00007a80 3d 21 28 73 74 61 72 74 70 61 74 25 2b 34 29 2b |=!(startpat%+4)+| 00007a90 38 0d 38 7c 28 70 61 74 68 6e 61 6d 65 24 3d c0 |8.8|(pathname$=.| 00007aa0 70 61 74 68 6e 61 6d 65 24 2c a9 28 70 61 74 68 |pathname$,.(path| 00007ab0 6e 61 6d 65 24 29 2d 31 29 0d 38 86 3e f2 73 61 |name$)-1).8.>.sa| 00007ac0 76 65 77 69 74 68 70 61 74 68 73 74 72 69 6e 67 |vewithpathstring| 00007ad0 28 6c 65 61 66 6e 61 6d 65 24 2c 70 61 74 68 6e |(leafname$,pathn| 00007ae0 61 6d 65 24 2c 73 74 61 72 74 70 61 74 25 2c 6c |ame$,startpat%,l| 00007af0 65 6e 67 74 68 25 29 0d 38 90 2e f2 73 65 74 66 |ength%).8...setf| 00007b00 69 6c 65 74 79 70 65 28 70 61 74 68 6e 61 6d 65 |iletype(pathname| 00007b10 24 2b 22 2e 22 2b 6c 65 61 66 6e 61 6d 65 24 2c |$+"."+leafname$,| 00007b20 26 46 46 44 29 0d 38 9a 1c c8 99 20 22 57 69 6d |&FFD).8.... "Wim| 00007b30 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 2d |p_CreateMenu",,-| 00007b40 31 0d 38 a4 05 e1 0d 38 ae 05 3a 0d 38 b8 19 dd |1.8....8..:.8...| 00007b50 f2 73 61 76 65 70 61 74 74 65 72 6e 73 28 72 6f |.savepatterns(ro| 00007b60 6f 74 24 29 0d 38 c2 28 70 61 74 68 6e 61 6d 65 |ot$).8.(pathname| 00007b70 24 3d c0 70 61 74 68 6e 61 6d 65 24 2c a9 28 70 |$=.pathname$,.(p| 00007b80 61 74 68 6e 61 6d 65 24 29 2d 31 29 0d 38 cc 15 |athname$)-1).8..| 00007b90 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e |.. "Hourglass_On| 00007ba0 22 0d 38 d6 1c e3 20 70 61 74 73 61 76 65 25 3d |".8... patsave%=| 00007bb0 31 20 b8 20 70 61 74 74 65 72 6e 73 25 0d 38 e0 |1 . patterns%.8.| 00007bc0 28 6c 65 61 66 6e 61 6d 65 24 3d 72 6f 6f 74 24 |(leafname$=root$| 00007bd0 2b c2 22 30 30 22 2b c3 28 70 61 74 73 61 76 65 |+."00"+.(patsave| 00007be0 25 29 2c 32 29 0d 38 ea 26 73 74 61 72 74 70 61 |%),2).8.&startpa| 00007bf0 74 25 3d a4 70 61 74 74 65 72 6e 61 64 64 72 28 |t%=.patternaddr(| 00007c00 70 61 74 73 61 76 65 25 29 2d 38 0d 38 f4 1c 6c |patsave%)-8.8..l| 00007c10 65 6e 67 74 68 25 3d 21 28 73 74 61 72 74 70 61 |ength%=!(startpa| 00007c20 74 25 2b 34 29 2b 38 0d 38 fe 3e f2 73 61 76 65 |t%+4)+8.8.>.save| 00007c30 77 69 74 68 70 61 74 68 73 74 72 69 6e 67 28 6c |withpathstring(l| 00007c40 65 61 66 6e 61 6d 65 24 2c 70 61 74 68 6e 61 6d |eafname$,pathnam| 00007c50 65 24 2c 73 74 61 72 74 70 61 74 25 2c 6c 65 6e |e$,startpat%,len| 00007c60 67 74 68 25 29 0d 39 08 2e f2 73 65 74 66 69 6c |gth%).9...setfil| 00007c70 65 74 79 70 65 28 70 61 74 68 6e 61 6d 65 24 2b |etype(pathname$+| 00007c80 22 2e 22 2b 6c 65 61 66 6e 61 6d 65 24 2c 26 46 |"."+leafname$,&F| 00007c90 46 44 29 0d 39 12 05 ed 0d 39 1c 16 c8 99 20 22 |FD).9....9.... "| 00007ca0 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 39 |Hourglass_Off".9| 00007cb0 26 1c c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 |&... "Wimp_Creat| 00007cc0 65 4d 65 6e 75 22 2c 2c 2d 31 0d 39 30 05 e1 0d |eMenu",,-1.90...| 00007cd0 39 3a 05 3a 0d 39 44 1c dd f2 6c 6f 61 64 70 61 |9:.:.9D...loadpa| 00007ce0 74 64 61 74 61 28 66 69 6c 65 6e 61 6d 65 24 29 |tdata(filename$)| 00007cf0 0d 39 4e 40 e7 20 71 25 21 32 30 3d 73 61 6d 70 |.9N@. q%!20=samp| 00007d00 6c 65 73 25 20 8c 20 f2 6c 6f 61 64 73 61 6d 70 |les% . .loadsamp| 00007d10 6c 65 28 66 69 6c 65 6e 61 6d 65 24 2c a4 77 68 |le(filename$,.wh| 00007d20 69 63 68 73 61 6d 70 6c 65 74 79 70 65 29 3a e1 |ichsampletype):.| 00007d30 0d 39 58 13 43 25 3d 8e 28 66 69 6c 65 6e 61 6d |.9X.C%=.(filenam| 00007d40 65 24 29 0d 39 62 0c 72 65 61 64 24 3d 22 22 0d |e$).9b.read$="".| 00007d50 39 6c 11 e3 20 62 79 74 65 25 3d 31 20 b8 20 34 |9l.. byte%=1 . 4| 00007d60 0d 39 76 12 72 65 61 64 24 2b 3d bd 28 9a 23 43 |.9v.read$+=.(.#C| 00007d70 25 29 0d 39 80 05 ed 0d 39 8a 09 d9 20 23 43 25 |%).9....9... #C%| 00007d80 0d 39 94 0c 61 62 6f 72 74 25 3d a3 0d 39 9e 1e |.9..abort%=..9..| 00007d90 e7 20 72 65 61 64 24 3c 3e 22 50 41 54 54 22 20 |. read$<>"PATT" | 00007da0 8c 20 61 62 6f 72 74 25 3d b9 0d 39 a8 1f e7 20 |. abort%=..9... | 00007db0 66 69 6c 65 6c 65 6e 25 3c 28 34 2b 38 29 20 8c |filelen%<(4+8) .| 00007dc0 20 61 62 6f 72 74 25 3d b9 0d 39 b2 24 e7 20 66 | abort%=..9.$. f| 00007dd0 69 6c 65 6c 65 6e 25 3e 28 38 2a 36 34 2a 34 2b |ilelen%>(8*64*4+| 00007de0 38 29 20 8c 20 61 62 6f 72 74 25 3d b9 0d 39 bc |8) . abort%=..9.| 00007df0 21 e7 20 28 66 69 6c 65 6c 65 6e 25 20 80 20 33 |!. (filelen% . 3| 00007e00 29 3e 30 20 8c 20 61 62 6f 72 74 25 3d b9 0d 39 |)>0 . abort%=..9| 00007e10 c6 28 e7 20 61 62 6f 72 74 25 20 8c 20 85 20 31 |.(. abort% . . 1| 00007e20 37 2c 22 4e 6f 74 20 61 20 70 61 74 74 65 72 6e |7,"Not a pattern| 00007e30 20 66 69 6c 65 22 0d 39 d0 26 ff 28 22 4c 4f 41 | file".9.&.("LOA| 00007e40 44 20 22 2b 66 69 6c 65 6e 61 6d 65 24 2b 22 20 |D "+filename$+" | 00007e50 22 2b c3 7e 63 6f 70 69 65 64 25 29 0d 39 da 17 |"+.~copied%).9..| 00007e60 63 6f 70 69 65 64 6c 65 6e 25 3d 66 69 6c 65 6c |copiedlen%=filel| 00007e70 65 6e 25 0d 39 e4 1f f2 6f 70 65 6e 77 69 6e 64 |en%.9...openwind| 00007e80 6f 77 28 63 6f 70 79 70 61 74 74 65 72 6e 25 2c |ow(copypattern%,| 00007e90 30 29 0d 39 ee 05 e1 0d 39 f8 05 3a 0d 3a 02 10 |0).9....9..:.:..| 00007ea0 dd f2 69 6e 63 63 6f 70 79 70 61 74 0d 3a 0c 26 |..inccopypat.:.&| 00007eb0 e7 20 63 6f 70 79 70 61 74 25 3c 70 61 74 74 65 |. copypat%<patte| 00007ec0 72 6e 73 25 20 8c 20 63 6f 70 79 70 61 74 25 2b |rns% . copypat%+| 00007ed0 3d 31 0d 3a 16 2c f2 73 65 74 69 63 6f 6e 74 65 |=1.:.,.seticonte| 00007ee0 78 74 28 63 6f 70 79 70 61 74 74 65 72 6e 25 2c |xt(copypattern%,| 00007ef0 35 2c c3 28 63 6f 70 79 70 61 74 25 29 29 0d 3a |5,.(copypat%)).:| 00007f00 20 05 e1 0d 3a 2a 05 3a 0d 3a 34 10 dd f2 64 65 | ...:*.:.:4...de| 00007f10 63 63 6f 70 79 70 61 74 0d 3a 3e 1e e7 20 63 6f |ccopypat.:>.. co| 00007f20 70 79 70 61 74 25 3e 31 20 8c 20 63 6f 70 79 70 |pypat%>1 . copyp| 00007f30 61 74 25 2d 3d 31 0d 3a 48 2c f2 73 65 74 69 63 |at%-=1.:H,.setic| 00007f40 6f 6e 74 65 78 74 28 63 6f 70 79 70 61 74 74 65 |ontext(copypatte| 00007f50 72 6e 25 2c 35 2c c3 28 63 6f 70 79 70 61 74 25 |rn%,5,.(copypat%| 00007f60 29 29 0d 3a 52 05 e1 0d 3a 5c 05 3a 0d 3a 66 11 |)).:R...:\.:.:f.| 00007f70 dd f2 63 6f 70 79 70 61 74 74 65 72 6e 0d 3a 70 |..copypattern.:p| 00007f80 2d e7 20 63 6f 70 69 65 64 6c 65 6e 25 3d 30 20 |-. copiedlen%=0 | 00007f90 8c 20 85 20 31 37 2c 22 4e 6f 20 70 61 74 74 65 |. . 17,"No patte| 00007fa0 72 6e 20 6c 6f 61 64 65 64 22 0d 3a 7a 24 63 6f |rn loaded".:z$co| 00007fb0 70 79 74 6f 25 3d a4 70 61 74 74 65 72 6e 61 64 |pyto%=.patternad| 00007fc0 64 72 28 63 6f 70 79 70 61 74 25 29 2d 38 0d 3a |dr(copypat%)-8.:| 00007fd0 84 1d 63 6f 70 79 74 6f 6c 65 6e 25 3d 21 28 63 |..copytolen%=!(c| 00007fe0 6f 70 79 74 6f 25 2b 34 29 2b 38 0d 3a 8e 3f e7 |opyto%+4)+8.:.?.| 00007ff0 20 63 6f 70 79 74 6f 6c 65 6e 25 3c 3e 63 6f 70 | copytolen%<>cop| 00008000 69 65 64 6c 65 6e 25 20 8c 20 85 20 31 37 2c 22 |iedlen% . . 17,"| 00008010 50 61 74 74 65 72 6e 20 73 69 7a 65 73 20 64 6f |Pattern sizes do| 00008020 6e 27 74 20 6d 61 74 63 68 22 0d 3a 98 21 f2 6d |n't match".:.!.m| 00008030 61 6b 65 73 65 6c 65 63 74 65 64 28 63 6f 70 79 |akeselected(copy| 00008040 70 61 74 74 65 72 6e 25 2c 32 29 0d 3a a2 1c e3 |pattern%,2).:...| 00008050 20 62 79 74 65 25 3d 30 20 b8 20 63 6f 70 69 65 | byte%=0 . copie| 00008060 64 6c 65 6e 25 2d 31 0d 3a ac 1f 63 6f 70 79 74 |dlen%-1.:..copyt| 00008070 6f 25 3f 62 79 74 65 25 3d 63 6f 70 69 65 64 25 |o%?byte%=copied%| 00008080 3f 62 79 74 65 25 0d 3a b6 05 ed 0d 3a c0 23 f2 |?byte%.:....:.#.| 00008090 6d 61 6b 65 75 6e 73 65 6c 65 63 74 65 64 28 63 |makeunselected(c| 000080a0 6f 70 79 70 61 74 74 65 72 6e 25 2c 32 29 0d 3a |opypattern%,2).:| 000080b0 ca 2c e7 20 ac 28 6d 72 65 64 6f 25 29 20 8c 20 |.,. .(mredo%) . | 000080c0 f2 63 6c 6f 73 65 77 69 6e 64 6f 77 28 63 6f 70 |.closewindow(cop| 000080d0 79 70 61 74 74 65 72 6e 25 29 0d 3a d4 05 e1 0d |ypattern%).:....| 000080e0 3a de 05 3a 0d 3a e8 12 dd f2 73 74 6f 72 65 70 |:..:.:....storep| 000080f0 61 74 74 65 72 6e 0d 3a f2 21 f2 6d 61 6b 65 73 |attern.:.!.makes| 00008100 65 6c 65 63 74 65 64 28 73 61 76 65 70 61 74 74 |elected(savepatt| 00008110 65 72 6e 25 2c 37 29 0d 3a fc 26 73 74 61 72 74 |ern%,7).:.&start| 00008120 70 61 74 25 3d a4 70 61 74 74 65 72 6e 61 64 64 |pat%=.patternadd| 00008130 72 28 73 61 76 65 70 61 74 25 29 2d 38 0d 3b 06 |r(savepat%)-8.;.| 00008140 1c 6c 65 6e 67 74 68 25 3d 21 28 73 74 61 72 74 |.length%=!(start| 00008150 70 61 74 25 2b 34 29 2b 38 0d 3b 10 19 e3 20 62 |pat%+4)+8.;... b| 00008160 79 74 65 25 3d 30 20 b8 20 6c 65 6e 67 74 68 25 |yte%=0 . length%| 00008170 2d 31 0d 3b 1a 21 63 6f 70 69 65 64 25 3f 62 79 |-1.;.!copied%?by| 00008180 74 65 25 3d 73 74 61 72 74 70 61 74 25 3f 62 79 |te%=startpat%?by| 00008190 74 65 25 0d 3b 24 05 ed 0d 3b 2e 16 63 6f 70 69 |te%.;$...;..copi| 000081a0 65 64 6c 65 6e 25 3d 6c 65 6e 67 74 68 25 0d 3b |edlen%=length%.;| 000081b0 38 23 f2 6d 61 6b 65 75 6e 73 65 6c 65 63 74 65 |8#.makeunselecte| 000081c0 64 28 73 61 76 65 70 61 74 74 65 72 6e 25 2c 37 |d(savepattern%,7| 000081d0 29 0d 3b 42 2a e7 20 ac 28 6d 72 65 64 6f 25 29 |).;B*. .(mredo%)| 000081e0 20 8c 20 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 | . .. "Wimp_Crea| 000081f0 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 3b 4c 1f f2 |teMenu",,-1.;L..| 00008200 6f 70 65 6e 77 69 6e 64 6f 77 28 63 6f 70 79 70 |openwindow(copyp| 00008210 61 74 74 65 72 6e 25 2c 30 29 0d 3b 56 05 e1 0d |attern%,0).;V...| 00008220 3b 60 05 3a 0d 3b 6a 19 dd f2 73 61 76 65 68 65 |;`.:.;j...savehe| 00008230 6c 70 28 73 61 76 65 68 65 6c 70 24 29 0d 3b 74 |lp(savehelp$).;t| 00008240 08 41 25 3d 30 0d 3b 7e 1c 62 6c 6b 61 64 64 72 |.A%=0.;~.blkaddr| 00008250 25 3d ba 28 74 72 61 63 6b 65 72 63 6f 64 65 25 |%=.(trackercode%| 00008260 29 0d 3b 88 18 68 65 6c 70 61 64 64 72 25 3d 62 |).;..helpaddr%=b| 00008270 6c 6b 61 64 64 72 25 21 30 0d 3b 92 19 68 65 6c |lkaddr%!0.;..hel| 00008280 70 6c 69 6e 65 73 25 3d 62 6c 6b 61 64 64 72 25 |plines%=blkaddr%| 00008290 21 34 0d 3b 9c 13 43 25 3d ae 28 73 61 76 65 68 |!4.;..C%=.(saveh| 000082a0 65 6c 70 24 29 0d 3b a6 15 c8 99 20 22 48 6f 75 |elp$).;.... "Hou| 000082b0 72 67 6c 61 73 73 5f 4f 6e 22 0d 3b b0 1a e3 20 |rglass_On".;... | 000082c0 6c 69 6e 65 25 3d 31 20 b8 20 68 65 6c 70 6c 69 |line%=1 . helpli| 000082d0 6e 65 73 25 0d 3b ba 34 c8 99 20 22 48 6f 75 72 |nes%.;.4.. "Hour| 000082e0 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 65 |glass_Percentage| 000082f0 22 2c 31 30 30 2a 28 6c 69 6e 65 25 2f 68 65 6c |",100*(line%/hel| 00008300 70 6c 69 6e 65 73 25 29 0d 3b c4 12 e3 20 63 68 |plines%).;... ch| 00008310 61 72 25 3d 30 20 b8 20 37 35 0d 3b ce 18 d5 23 |ar%=0 . 75.;...#| 00008320 43 25 2c 68 65 6c 70 61 64 64 72 25 3f 63 68 61 |C%,helpaddr%?cha| 00008330 72 25 0d 3b d8 05 ed 0d 3b e2 11 68 65 6c 70 61 |r%.;....;..helpa| 00008340 64 64 72 25 2b 3d 37 36 0d 3b ec 0b d5 23 43 25 |ddr%+=76.;...#C%| 00008350 2c 31 30 0d 3b f6 05 ed 0d 3c 00 16 c8 99 20 22 |,10.;....<.... "| 00008360 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 3c |Hourglass_Off".<| 00008370 0a 09 d9 20 23 43 25 0d 3c 14 20 f2 73 65 74 66 |... #C%.<. .setf| 00008380 69 6c 65 74 79 70 65 28 73 61 76 65 68 65 6c 70 |iletype(savehelp| 00008390 24 2c 26 46 46 46 29 0d 3c 1e 1c c8 99 20 22 57 |$,&FFF).<.... "W| 000083a0 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c |imp_CreateMenu",| 000083b0 2c 2d 31 0d 3c 28 05 e1 0d 3c 32 05 3a 0d 3c 3c |,-1.<(...<2.:.<<| 000083c0 1a dd f2 69 6e 63 76 6f 6c 75 6d 65 28 77 68 69 |...incvolume(whi| 000083d0 63 68 76 6f 6c 25 29 0d 3c 46 1e 76 6f 6c 25 3d |chvol%).<F.vol%=| 000083e0 21 73 76 6f 6c 61 64 64 72 25 28 77 68 69 63 68 |!svoladdr%(which| 000083f0 76 6f 6c 25 29 0d 3c 50 18 76 6f 6c 25 2b 3d a4 |vol%).<P.vol%+=.| 00008400 62 75 74 74 6f 6e 76 61 6c 28 62 25 29 0d 3c 5a |buttonval(b%).<Z| 00008410 19 e7 20 76 6f 6c 25 3e 32 35 35 20 8c 20 76 6f |.. vol%>255 . vo| 00008420 6c 25 3d 32 35 35 0d 3c 64 1e 21 73 76 6f 6c 61 |l%=255.<d.!svola| 00008430 64 64 72 25 28 77 68 69 63 68 76 6f 6c 25 29 3d |ddr%(whichvol%)=| 00008440 76 6f 6c 25 0d 3c 6e 26 f2 73 65 74 69 63 6f 6e |vol%.<n&.seticon| 00008450 74 65 78 74 28 73 65 74 76 6f 6c 75 6d 65 25 2c |text(setvolume%,| 00008460 31 2c c3 28 76 6f 6c 25 29 29 0d 3c 78 05 e1 0d |1,.(vol%)).<x...| 00008470 3c 82 05 3a 0d 3c 8c 1a dd f2 64 65 63 76 6f 6c |<..:.<....decvol| 00008480 75 6d 65 28 77 68 69 63 68 76 6f 6c 25 29 0d 3c |ume(whichvol%).<| 00008490 96 1e 76 6f 6c 25 3d 21 73 76 6f 6c 61 64 64 72 |..vol%=!svoladdr| 000084a0 25 28 77 68 69 63 68 76 6f 6c 25 29 0d 3c a0 18 |%(whichvol%).<..| 000084b0 76 6f 6c 25 2d 3d a4 62 75 74 74 6f 6e 76 61 6c |vol%-=.buttonval| 000084c0 28 62 25 29 0d 3c aa 15 e7 20 76 6f 6c 25 3c 30 |(b%).<... vol%<0| 000084d0 20 8c 20 76 6f 6c 25 3d 30 0d 3c b4 1e 21 73 76 | . vol%=0.<..!sv| 000084e0 6f 6c 61 64 64 72 25 28 77 68 69 63 68 76 6f 6c |oladdr%(whichvol| 000084f0 25 29 3d 76 6f 6c 25 0d 3c be 26 f2 73 65 74 69 |%)=vol%.<.&.seti| 00008500 63 6f 6e 74 65 78 74 28 73 65 74 76 6f 6c 75 6d |context(setvolum| 00008510 65 25 2c 31 2c c3 28 76 6f 6c 25 29 29 0d 3c c8 |e%,1,.(vol%)).<.| 00008520 05 e1 0d 3c d2 05 3a 0d 3c dc 16 dd a4 62 75 74 |...<..:.<....but| 00008530 74 6f 6e 76 61 6c 28 74 65 73 74 25 29 0d 3c e6 |tonval(test%).<.| 00008540 13 e7 20 74 65 73 74 25 3d 31 20 8c 20 3d 31 30 |.. test%=1 . =10| 00008550 0d 3c f0 12 e7 20 74 65 73 74 25 3d 32 20 8c 20 |.<... test%=2 . | 00008560 3d 35 0d 3c fa 06 3d 31 0d 3d 04 05 3a 0d 3d 0e |=5.<..=1.=..:.=.| 00008570 1f dd f2 6c 6f 61 64 63 6f 63 6f 74 72 61 63 6b |...loadcocotrack| 00008580 28 63 6f 63 6f 74 72 61 63 6b 24 29 0d 3d 18 0c |(cocotrack$).=..| 00008590 61 62 6f 72 74 25 3d a3 0d 3d 22 13 e7 20 74 75 |abort%=..=".. tu| 000085a0 6e 65 6c 6f 61 64 65 64 25 20 8c 0d 3d 2c 49 65 |neloaded% ..=,Ie| 000085b0 72 72 6f 72 65 78 69 74 25 3d a4 65 72 72 6f 72 |rrorexit%=.error| 000085c0 62 6f 78 28 31 37 2c 22 45 78 69 73 74 69 6e 67 |box(17,"Existing| 000085d0 20 74 75 6e 65 20 77 69 6c 6c 20 62 65 20 6c 6f | tune will be lo| 000085e0 73 74 20 2d 20 61 72 65 20 79 6f 75 20 73 75 72 |st - are you sur| 000085f0 65 3f 22 29 0d 3d 36 2d e7 20 65 72 72 6f 72 65 |e?").=6-. errore| 00008600 78 69 74 25 3d 31 20 8c 20 f2 72 65 74 75 72 6e |xit%=1 . .return| 00008610 6d 65 6d 6f 72 79 20 8b 20 61 62 6f 72 74 25 3d |memory . abort%=| 00008620 b9 0d 3d 40 05 cd 0d 3d 4a 10 e7 20 61 62 6f 72 |..=@...=J.. abor| 00008630 74 25 20 8c 20 e1 0d 3d 54 05 3a 0d 3d 5e 0d f2 |t% . ..=T.:.=^..| 00008640 73 74 6f 70 74 75 6e 65 0d 3d 68 0e 61 62 6f 72 |stoptune.=h.abor| 00008650 74 65 64 25 3d a3 0d 3d 72 0e 66 72 65 65 6d 65 |ted%=..=r.freeme| 00008660 6d 25 3d 30 0d 3d 7c 27 67 6f 74 69 74 25 3d a4 |m%=0.=|'gotit%=.| 00008670 67 72 61 62 6d 65 6d 28 66 69 6c 65 6c 65 6e 25 |grabmem(filelen%| 00008680 2a 32 2b 31 30 2a 31 30 32 34 29 0d 3d 86 21 e7 |*2+10*1024).=.!.| 00008690 20 67 6f 74 69 74 25 3d a3 20 8c 20 f2 6e 6f 74 | gotit%=. . .not| 000086a0 65 6e 6f 75 67 68 74 6f 6c 6f 61 64 0d 3d 90 2b |enoughtoload.=.+| 000086b0 74 65 6d 70 6c 6f 61 64 25 3d 74 72 61 63 6b 65 |tempload%=tracke| 000086c0 72 74 75 6e 65 25 2b 66 69 6c 65 6c 65 6e 25 2b |rtune%+filelen%+| 000086d0 31 30 2a 31 30 32 34 0d 3d 9a 27 74 65 6d 70 6c |10*1024.=.'templ| 000086e0 6f 61 64 25 3d 28 74 65 6d 70 6c 6f 61 64 25 2d |oad%=(tempload%-| 000086f0 34 29 20 80 20 26 46 46 46 46 46 46 46 43 0d 3d |4) . &FFFFFFFC.=| 00008700 a4 29 ff 28 22 4c 4f 41 44 20 22 2b 63 6f 63 6f |.).("LOAD "+coco| 00008710 74 72 61 63 6b 24 2b 22 20 22 2b c3 7e 74 65 6d |track$+" "+.~tem| 00008720 70 6c 6f 61 64 25 29 0d 3d ae 08 41 25 3d 32 0d |pload%).=..A%=2.| 00008730 3d b8 10 42 25 3d 74 65 6d 70 6c 6f 61 64 25 0d |=..B%=tempload%.| 00008740 3d c2 13 43 25 3d 74 72 61 63 6b 65 72 74 75 6e |=..C%=trackertun| 00008750 65 25 0d 3d cc 15 c8 99 20 22 48 6f 75 72 67 6c |e%.=.... "Hourgl| 00008760 61 73 73 5f 4f 6e 22 0d 3d d6 12 d6 20 74 72 61 |ass_On".=... tra| 00008770 63 6b 65 72 63 6f 64 65 25 0d 3d e0 16 c8 99 20 |ckercode%.=.... | 00008780 22 48 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d |"Hourglass_Off".| 00008790 3d ea 1d 6e 65 77 73 69 7a 65 25 3d 74 72 61 63 |=..newsize%=trac| 000087a0 6b 65 72 74 75 6e 65 25 21 34 2b 38 0d 3d f4 2d |kertune%!4+8.=.-| 000087b0 6e 65 77 73 69 7a 65 25 3d 28 6e 65 77 73 69 7a |newsize%=(newsiz| 000087c0 65 25 2b 33 32 2a 31 30 32 34 2d 31 29 20 80 20 |e%+32*1024-1) . | 000087d0 26 46 46 46 46 38 30 30 30 0d 3d fe 2c c8 99 20 |&FFFF8000.=.,.. | 000087e0 22 58 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 |"XWimp_SlotSize"| 000087f0 2c 6e 65 77 73 69 7a 65 25 2b 61 70 70 73 69 7a |,newsize%+appsiz| 00008800 65 25 2c 2d 31 0d 3e 08 28 66 72 65 65 6d 65 6d |e%,-1.>.(freemem| 00008810 25 3d 6e 65 77 73 69 7a 65 25 2d 28 74 72 61 63 |%=newsize%-(trac| 00008820 6b 65 72 74 75 6e 65 25 21 34 2b 38 29 0d 3e 12 |kertune%!4+8).>.| 00008830 0f f2 6a 75 73 74 6c 6f 61 64 65 64 0d 3e 1c 05 |..justloaded.>..| 00008840 e1 0d 3e 26 05 3a 0d 3e 30 1f dd f2 6c 6f 61 64 |..>&.:.>0...load| 00008850 70 72 6f 74 72 61 63 6b 65 72 28 70 72 6f 74 72 |protracker(protr| 00008860 61 63 6b 24 29 0d 3e 3a 0c 61 62 6f 72 74 25 3d |ack$).>:.abort%=| 00008870 a3 0d 3e 44 13 e7 20 74 75 6e 65 6c 6f 61 64 65 |..>D.. tuneloade| 00008880 64 25 20 8c 0d 3e 4e 49 65 72 72 6f 72 65 78 69 |d% ..>NIerrorexi| 00008890 74 25 3d a4 65 72 72 6f 72 62 6f 78 28 31 37 2c |t%=.errorbox(17,| 000088a0 22 45 78 69 73 74 69 6e 67 20 74 75 6e 65 20 77 |"Existing tune w| 000088b0 69 6c 6c 20 62 65 20 6c 6f 73 74 20 2d 20 61 72 |ill be lost - ar| 000088c0 65 20 79 6f 75 20 73 75 72 65 3f 22 29 0d 3e 58 |e you sure?").>X| 000088d0 2d e7 20 65 72 72 6f 72 65 78 69 74 25 3d 31 20 |-. errorexit%=1 | 000088e0 8c 20 f2 72 65 74 75 72 6e 6d 65 6d 6f 72 79 20 |. .returnmemory | 000088f0 8b 20 61 62 6f 72 74 25 3d b9 0d 3e 62 05 cd 0d |. abort%=..>b...| 00008900 3e 6c 10 e7 20 61 62 6f 72 74 25 20 8c 20 e1 0d |>l.. abort% . ..| 00008910 3e 76 05 3a 0d 3e 80 0d f2 73 74 6f 70 74 75 6e |>v.:.>...stoptun| 00008920 65 0d 3e 8a 0e 66 72 65 65 6d 65 6d 25 3d 30 0d |e.>..freemem%=0.| 00008930 3e 94 27 67 6f 74 69 74 25 3d a4 67 72 61 62 6d |>.'gotit%=.grabm| 00008940 65 6d 28 66 69 6c 65 6c 65 6e 25 2a 32 2b 31 30 |em(filelen%*2+10| 00008950 2a 31 30 32 34 29 0d 3e 9e 21 e7 20 67 6f 74 69 |*1024).>.!. goti| 00008960 74 25 3d a3 20 8c 20 f2 6e 6f 74 65 6e 6f 75 67 |t%=. . .notenoug| 00008970 68 74 6f 6c 6f 61 64 0d 3e a8 2b 74 65 6d 70 6c |htoload.>.+templ| 00008980 6f 61 64 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 |oad%=trackertune| 00008990 25 2b 66 69 6c 65 6c 65 6e 25 2b 31 30 2a 31 30 |%+filelen%+10*10| 000089a0 32 34 0d 3e b2 27 74 65 6d 70 6c 6f 61 64 25 3d |24.>.'tempload%=| 000089b0 28 74 65 6d 70 6c 6f 61 64 25 2d 34 29 20 80 20 |(tempload%-4) . | 000089c0 26 46 46 46 46 46 46 46 43 0d 3e bc 28 ff 28 22 |&FFFFFFFC.>.(.("| 000089d0 4c 4f 41 44 20 22 2b 70 72 6f 74 72 61 63 6b 24 |LOAD "+protrack$| 000089e0 2b 22 20 22 2b c3 7e 74 65 6d 70 6c 6f 61 64 25 |+" "+.~tempload%| 000089f0 29 0d 3e c6 08 41 25 3d 31 0d 3e d0 10 42 25 3d |).>..A%=1.>..B%=| 00008a00 74 65 6d 70 6c 6f 61 64 25 0d 3e da 13 43 25 3d |tempload%.>..C%=| 00008a10 74 72 61 63 6b 65 72 74 75 6e 65 25 0d 3e e4 0f |trackertune%.>..| 00008a20 44 25 3d 66 69 6c 65 6c 65 6e 25 0d 3e ee 15 c8 |D%=filelen%.>...| 00008a30 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 |. "Hourglass_On"| 00008a40 0d 3e f8 12 d6 20 74 72 61 63 6b 65 72 63 6f 64 |.>... trackercod| 00008a50 65 25 0d 3f 02 28 ff 28 22 4c 4f 41 44 20 22 2b |e%.?.(.("LOAD "+| 00008a60 70 72 6f 74 72 61 63 6b 24 2b 22 20 22 2b c3 7e |protrack$+" "+.~| 00008a70 74 65 6d 70 6c 6f 61 64 25 29 0d 3f 0c 08 41 25 |tempload%).?..A%| 00008a80 3d 33 0d 3f 16 10 42 25 3d 74 65 6d 70 6c 6f 61 |=3.?..B%=temploa| 00008a90 64 25 0d 3f 20 13 43 25 3d 74 72 61 63 6b 65 72 |d%.? .C%=tracker| 00008aa0 74 75 6e 65 25 0d 3f 2a 12 d6 20 74 72 61 63 6b |tune%.?*.. track| 00008ab0 65 72 63 6f 64 65 25 0d 3f 34 16 c8 99 20 22 48 |ercode%.?4... "H| 00008ac0 6f 75 72 67 6c 61 73 73 5f 4f 66 66 22 0d 3f 3e |ourglass_Off".?>| 00008ad0 1d 6e 65 77 73 69 7a 65 25 3d 74 72 61 63 6b 65 |.newsize%=tracke| 00008ae0 72 74 75 6e 65 25 21 34 2b 38 0d 3f 48 2d 6e 65 |rtune%!4+8.?H-ne| 00008af0 77 73 69 7a 65 25 3d 28 6e 65 77 73 69 7a 65 25 |wsize%=(newsize%| 00008b00 2b 33 32 2a 31 30 32 34 2d 31 29 20 80 20 26 46 |+32*1024-1) . &F| 00008b10 46 46 46 38 30 30 30 0d 3f 52 2c c8 99 20 22 58 |FFF8000.?R,.. "X| 00008b20 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 6e |Wimp_SlotSize",n| 00008b30 65 77 73 69 7a 65 25 2b 61 70 70 73 69 7a 65 25 |ewsize%+appsize%| 00008b40 2c 2d 31 0d 3f 5c 28 66 72 65 65 6d 65 6d 25 3d |,-1.?\(freemem%=| 00008b50 6e 65 77 73 69 7a 65 25 2d 28 74 72 61 63 6b 65 |newsize%-(tracke| 00008b60 72 74 75 6e 65 25 21 34 2b 38 29 0d 3f 66 0f f2 |rtune%!4+8).?f..| 00008b70 6a 75 73 74 6c 6f 61 64 65 64 0d 3f 70 05 e1 0d |justloaded.?p...| 00008b80 3f 7a 05 3a 0d 3f 84 0e dd f2 70 6c 61 79 74 75 |?z.:.?....playtu| 00008b90 6e 65 0d 3f 8e 18 e7 20 ac 28 74 75 6e 65 6c 6f |ne.?... .(tunelo| 00008ba0 61 64 65 64 25 29 20 8c 20 e1 0d 3f 98 12 e7 20 |aded%) . ..?... | 00008bb0 70 6c 61 79 69 6e 67 25 20 8c 20 e1 0d 3f a2 1b |playing% . ..?..| 00008bc0 62 79 74 65 73 25 3d 74 72 61 63 6b 65 72 74 75 |bytes%=trackertu| 00008bd0 6e 65 25 21 34 2b 38 0d 3f ac 0d 41 25 3d 62 79 |ne%!4+8.?..A%=by| 00008be0 74 65 73 25 0d 3f b6 1d f4 20 72 6d 61 73 70 61 |tes%.?... rmaspa| 00008bf0 63 65 25 3d 55 53 52 28 63 6c 61 69 6d 52 6d 61 |ce%=USR(claimRma| 00008c00 29 0d 3f c0 2d c8 99 20 22 4f 53 5f 4d 6f 64 75 |).?.-.. "OS_Modu| 00008c10 6c 65 22 2c 36 2c 30 2c 30 2c 62 79 74 65 73 25 |le",6,0,0,bytes%| 00008c20 20 b8 20 2c 2c 72 6d 61 73 70 61 63 65 25 0d 3f | . ,,rmaspace%.?| 00008c30 ca 38 e7 20 72 6d 61 73 70 61 63 65 25 3d 30 20 |.8. rmaspace%=0 | 00008c40 8c 20 85 20 31 37 2c 22 49 6e 73 75 66 66 69 63 |. . 17,"Insuffic| 00008c50 69 65 6e 74 20 4d 65 6d 6f 72 79 20 41 76 61 69 |ient Memory Avai| 00008c60 6c 61 62 6c 65 22 0d 3f d4 10 f2 73 65 74 75 70 |lable".?...setup| 00008c70 76 6f 69 63 65 73 0d 3f de 12 f2 72 65 77 72 69 |voices.?...rewri| 00008c80 74 65 73 74 65 72 65 6f 0d 3f e8 16 72 6d 61 63 |testereo.?..rmac| 00008c90 6c 61 69 6d 65 64 25 3d 62 79 74 65 73 25 0d 3f |laimed%=bytes%.?| 00008ca0 f2 13 41 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 |..A%=trackertune| 00008cb0 25 0d 3f fc 10 42 25 3d 72 6d 61 73 70 61 63 65 |%.?..B%=rmaspace| 00008cc0 25 0d 40 06 0d 43 25 3d 62 79 74 65 73 25 0d 40 |%.@..C%=bytes%.@| 00008cd0 10 0f d6 20 63 6f 70 79 62 79 74 65 73 0d 40 1a |... copybytes.@.| 00008ce0 36 c8 99 20 22 54 72 61 63 6b 65 72 5f 4d 65 6d |6.. "Tracker_Mem| 00008cf0 6f 72 79 4c 6f 61 64 22 2c 72 6d 61 73 70 61 63 |oryLoad",rmaspac| 00008d00 65 25 2c 74 72 61 63 6b 65 72 74 75 6e 65 25 21 |e%,trackertune%!| 00008d10 34 2b 38 0d 40 24 15 c8 99 20 22 54 72 61 63 6b |4+8.@$... "Track| 00008d20 65 72 5f 50 6c 61 79 22 0d 40 2e 0e 70 6c 61 79 |er_Play".@..play| 00008d30 69 6e 67 25 3d b9 0d 40 38 10 f2 70 61 6e 65 6c |ing%=..@8..panel| 00008d40 73 74 61 74 75 73 0d 40 42 05 e1 0d 40 4c 05 3a |status.@B...@L.:| 00008d50 0d 40 56 0e dd f2 73 74 6f 70 74 75 6e 65 0d 40 |.@V...stoptune.@| 00008d60 60 15 e7 20 ac 28 70 6c 61 79 69 6e 67 25 29 20 |`.. .(playing%) | 00008d70 8c 20 e1 0d 40 6a 15 c8 99 20 22 54 72 61 63 6b |. ..@j... "Track| 00008d80 65 72 5f 53 74 6f 70 22 0d 40 74 21 c8 99 20 22 |er_Stop".@t!.. "| 00008d90 58 4f 53 5f 4d 6f 64 75 6c 65 22 2c 37 2c 30 2c |XOS_Module",7,0,| 00008da0 72 6d 61 73 70 61 63 65 25 0d 40 7e 2d c8 99 20 |rmaspace%.@~-.. | 00008db0 22 58 4f 53 5f 43 68 61 6e 67 65 44 79 6e 61 6d |"XOS_ChangeDynam| 00008dc0 69 63 41 72 65 61 22 2c 31 2c 2d 72 6d 61 63 6c |icArea",1,-rmacl| 00008dd0 61 69 6d 65 64 25 0d 40 88 0e 70 6c 61 79 69 6e |aimed%.@..playin| 00008de0 67 25 3d a3 0d 40 92 1b 6f 6c 64 70 6f 73 25 3d |g%=..@..oldpos%=| 00008df0 2d 31 3a 6f 6c 64 65 76 65 6e 74 25 3d 2d 31 0d |-1:oldevent%=-1.| 00008e00 40 9c 10 f2 70 61 6e 65 6c 73 74 61 74 75 73 0d |@...panelstatus.| 00008e10 40 a6 05 e1 0d 40 b0 05 3a 0d 40 ba 1a dd f2 73 |@....@..:.@....s| 00008e20 68 61 64 65 28 77 69 6e 64 6f 77 25 2c 69 63 6f |hade(window%,ico| 00008e30 6e 25 29 0d 40 c4 11 71 32 25 21 30 3d 77 69 6e |n%).@..q2%!0=win| 00008e40 64 6f 77 25 0d 40 ce 0f 71 32 25 21 34 3d 69 63 |dow%.@..q2%!4=ic| 00008e50 6f 6e 25 0d 40 d8 0e 71 32 25 21 38 3d 32 5e 32 |on%.@..q2%!8=2^2| 00008e60 32 0d 40 e2 0f 71 32 25 21 31 32 3d 32 5e 32 32 |2.@..q2%!12=2^22| 00008e70 0d 40 ec 1f c8 99 20 22 57 69 6d 70 5f 53 65 74 |.@.... "Wimp_Set| 00008e80 49 63 6f 6e 53 74 61 74 65 22 2c 2c 71 32 25 0d |IconState",,q2%.| 00008e90 40 f6 05 e1 0d 41 00 05 3a 0d 41 0a 1c dd f2 75 |@....A..:.A....u| 00008ea0 6e 73 68 61 64 65 28 77 69 6e 64 6f 77 25 2c 69 |nshade(window%,i| 00008eb0 63 6f 6e 25 29 0d 41 14 11 71 32 25 21 30 3d 77 |con%).A..q2%!0=w| 00008ec0 69 6e 64 6f 77 25 0d 41 1e 0f 71 32 25 21 34 3d |indow%.A..q2%!4=| 00008ed0 69 63 6f 6e 25 0d 41 28 0b 71 32 25 21 38 3d 30 |icon%.A(.q2%!8=0| 00008ee0 0d 41 32 0f 71 32 25 21 31 32 3d 32 5e 32 32 0d |.A2.q2%!12=2^22.| 00008ef0 41 3c 1f c8 99 20 22 57 69 6d 70 5f 53 65 74 49 |A<... "Wimp_SetI| 00008f00 63 6f 6e 53 74 61 74 65 22 2c 2c 71 32 25 0d 41 |conState",,q2%.A| 00008f10 46 05 e1 0d 41 50 05 3a 0d 41 5a 11 dd f2 70 61 |F...AP.:.AZ...pa| 00008f20 6e 65 6c 73 74 61 74 75 73 0d 41 64 10 e7 20 70 |nelstatus.Ad.. p| 00008f30 6c 61 79 69 6e 67 25 20 8c 0d 41 6e 16 f2 73 68 |laying% ..An..sh| 00008f40 61 64 65 28 70 6c 61 79 65 72 25 2c 31 36 29 0d |ade(player%,16).| 00008f50 41 78 18 f2 75 6e 73 68 61 64 65 28 70 6c 61 79 |Ax..unshade(play| 00008f60 65 72 25 2c 31 37 29 0d 41 82 05 cc 0d 41 8c 16 |er%,17).A....A..| 00008f70 f2 73 68 61 64 65 28 70 6c 61 79 65 72 25 2c 31 |.shade(player%,1| 00008f80 37 29 0d 41 96 18 f2 75 6e 73 68 61 64 65 28 70 |7).A...unshade(p| 00008f90 6c 61 79 65 72 25 2c 31 36 29 0d 41 a0 20 f2 73 |layer%,16).A. .s| 00008fa0 65 74 69 63 6f 6e 74 65 78 74 28 70 6c 61 79 65 |eticontext(playe| 00008fb0 72 25 2c 31 30 2c 22 2d 22 29 0d 41 aa 1f f2 73 |r%,10,"-").A...s| 00008fc0 65 74 69 63 6f 6e 74 65 78 74 28 70 6c 61 79 65 |eticontext(playe| 00008fd0 72 25 2c 31 38 2c 22 22 29 0d 41 b4 05 cd 0d 41 |r%,18,"").A....A| 00008fe0 be 05 e1 0d 41 c8 05 3a 0d 41 d2 12 dd f2 73 68 |....A..:.A....sh| 00008ff0 6f 77 6d 75 73 69 63 70 6f 73 0d 41 dc 15 e7 20 |owmusicpos.A... | 00009000 ac 28 70 6c 61 79 69 6e 67 25 29 20 8c 20 e1 0d |.(playing%) . ..| 00009010 41 e6 29 6d 75 73 63 6f 75 6e 74 65 72 25 3d 28 |A.)muscounter%=(| 00009020 6d 75 73 63 6f 75 6e 74 65 72 25 2b 31 29 20 83 |muscounter%+1) .| 00009030 20 75 70 64 61 74 65 25 0d 41 f0 15 e7 20 6d 75 | update%.A... mu| 00009040 73 63 6f 75 6e 74 65 72 25 3d 30 20 8c 0d 41 fa |scounter%=0 ..A.| 00009050 2b c8 99 20 22 54 72 61 63 6b 65 72 5f 52 65 61 |+.. "Tracker_Rea| 00009060 64 50 6f 73 22 20 b8 20 70 6f 73 25 2c 65 76 65 |dPos" . pos%,eve| 00009070 6e 74 25 2c 6d 61 78 25 0d 42 04 15 e7 20 70 6f |nt%,max%.B... po| 00009080 73 25 3c 3e 6f 6c 64 70 6f 73 25 20 8c 0d 42 0e |s%<>oldpos% ..B.| 00009090 34 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 70 6c |4.seticontext(pl| 000090a0 61 79 65 72 25 2c 31 30 2c c3 28 70 6f 73 25 2b |ayer%,10,.(pos%+| 000090b0 31 29 2b 22 3a 22 2b c3 28 6d 61 78 25 2b 31 29 |1)+":"+.(max%+1)| 000090c0 29 0d 42 18 05 cd 0d 42 22 3c e7 20 65 76 65 6e |).B....B"<. even| 000090d0 74 25 3c 3e 6f 6c 64 65 76 65 6e 74 25 20 8c 20 |t%<>oldevent% . | 000090e0 f2 73 65 74 69 63 6f 6e 74 65 78 74 28 70 6c 61 |.seticontext(pla| 000090f0 79 65 72 25 2c 31 38 2c c3 28 65 76 65 6e 74 25 |yer%,18,.(event%| 00009100 29 29 0d 42 2c 21 6f 6c 64 70 6f 73 25 3d 70 6f |)).B,!oldpos%=po| 00009110 73 25 3a 6f 6c 64 65 76 65 6e 74 25 3d 65 76 65 |s%:oldevent%=eve| 00009120 6e 74 25 0d 42 36 05 cd 0d 42 40 05 e1 0d 42 4a |nt%.B6...B@...BJ| 00009130 05 3a 0d 42 54 0c dd f2 72 65 77 69 6e 64 0d 42 |.:.BT...rewind.B| 00009140 5e 15 e7 20 ac 28 70 6c 61 79 69 6e 67 25 29 20 |^.. .(playing%) | 00009150 8c 20 e1 0d 42 68 26 c8 99 20 22 54 72 61 63 6b |. ..Bh&.. "Track| 00009160 65 72 5f 52 65 61 64 50 6f 73 22 20 b8 20 70 6f |er_ReadPos" . po| 00009170 73 25 2c 65 76 65 6e 74 25 0d 42 72 2b e7 20 70 |s%,event%.Br+. p| 00009180 6f 73 25 3e 30 20 8c 20 c8 99 20 22 54 72 61 63 |os%>0 . .. "Trac| 00009190 6b 65 72 5f 53 65 74 50 6f 73 22 2c 70 6f 73 25 |ker_SetPos",pos%| 000091a0 2d 31 2c 30 0d 42 7c 05 e1 0d 42 86 05 3a 0d 42 |-1,0.B|...B..:.B| 000091b0 90 11 dd f2 66 61 73 74 66 6f 72 77 61 72 64 0d |....fastforward.| 000091c0 42 9a 15 e7 20 ac 28 70 6c 61 79 69 6e 67 25 29 |B... .(playing%)| 000091d0 20 8c 20 e1 0d 42 a4 2b c8 99 20 22 54 72 61 63 | . ..B.+.. "Trac| 000091e0 6b 65 72 5f 52 65 61 64 50 6f 73 22 20 b8 20 70 |ker_ReadPos" . p| 000091f0 6f 73 25 2c 65 76 65 6e 74 25 2c 6d 61 78 25 0d |os%,event%,max%.| 00009200 42 ae 2e e7 20 70 6f 73 25 3c 6d 61 78 25 20 8c |B... pos%<max% .| 00009210 20 c8 99 20 22 54 72 61 63 6b 65 72 5f 53 65 74 | .. "Tracker_Set| 00009220 50 6f 73 22 2c 70 6f 73 25 2b 31 2c 30 0d 42 b8 |Pos",pos%+1,0.B.| 00009230 05 e1 0d 42 c2 05 3a 0d 42 cc 16 dd f2 69 6e 69 |...B..:.B....ini| 00009240 74 69 61 6c 69 73 65 76 6f 69 63 65 73 0d 42 d6 |tialisevoices.B.| 00009250 14 e3 20 76 25 3d 31 20 b8 20 76 6f 69 63 65 73 |.. v%=1 . voices| 00009260 25 0d 42 e0 1d f2 6d 61 6b 65 73 65 6c 65 63 74 |%.B...makeselect| 00009270 65 64 28 70 6c 61 79 65 72 25 2c 76 25 29 0d 42 |ed(player%,v%).B| 00009280 ea 18 f2 75 6e 73 68 61 64 65 28 70 6c 61 79 65 |...unshade(playe| 00009290 72 25 2c 76 25 29 0d 42 f4 22 c8 99 20 22 54 72 |r%,v%).B.".. "Tr| 000092a0 61 63 6b 65 72 5f 52 65 73 74 6f 72 65 43 68 61 |acker_RestoreCha| 000092b0 6e 6e 65 6c 22 2c 76 25 0d 42 fe 05 ed 0d 43 08 |nnel",v%.B....C.| 000092c0 11 e7 20 76 6f 69 63 65 73 25 3c 38 20 8c 0d 43 |.. voices%<8 ..C| 000092d0 12 16 e3 20 76 25 3d 76 6f 69 63 65 73 25 2b 31 |... v%=voices%+1| 000092e0 20 b8 20 38 0d 43 1c 1f f2 6d 61 6b 65 75 6e 73 | . 8.C...makeuns| 000092f0 65 6c 65 63 74 65 64 28 70 6c 61 79 65 72 25 2c |elected(player%,| 00009300 76 25 29 0d 43 26 16 f2 73 68 61 64 65 28 70 6c |v%).C&..shade(pl| 00009310 61 79 65 72 25 2c 76 25 29 0d 43 30 05 ed 0d 43 |ayer%,v%).C0...C| 00009320 3a 05 cd 0d 43 44 05 e1 0d 43 4e 05 3a 0d 43 58 |:...CD...CN.:.CX| 00009330 11 dd f2 73 65 74 75 70 76 6f 69 63 65 73 0d 43 |...setupvoices.C| 00009340 62 14 e3 20 76 25 3d 31 20 b8 20 76 6f 69 63 65 |b.. v%=1 . voice| 00009350 73 25 0d 43 6c 21 e7 20 a4 69 73 69 74 73 65 6c |s%.Cl!. .isitsel| 00009360 65 63 74 65 64 28 70 6c 61 79 65 72 25 2c 76 25 |ected(player%,v%| 00009370 29 20 8c 0d 43 76 22 c8 99 20 22 54 72 61 63 6b |) ..Cv".. "Track| 00009380 65 72 5f 52 65 73 74 6f 72 65 43 68 61 6e 6e 65 |er_RestoreChanne| 00009390 6c 22 2c 76 25 0d 43 80 05 cc 0d 43 8a 1f c8 99 |l",v%.C....C....| 000093a0 20 22 54 72 61 63 6b 65 72 5f 4d 75 74 65 43 68 | "Tracker_MuteCh| 000093b0 61 6e 6e 65 6c 22 2c 76 25 0d 43 94 05 cd 0d 43 |annel",v%.C....C| 000093c0 9e 05 ed 0d 43 a8 05 e1 0d 43 b2 05 3a 0d 43 bc |....C....C..:.C.| 000093d0 15 dd f2 74 6f 67 67 6c 65 76 6f 69 63 65 28 76 |...togglevoice(v| 000093e0 25 29 0d 43 c6 18 e7 20 ac 28 74 75 6e 65 6c 6f |%).C... .(tunelo| 000093f0 61 64 65 64 25 29 20 8c 20 e1 0d 43 d0 21 e7 20 |aded%) . ..C.!. | 00009400 a4 69 73 69 74 73 65 6c 65 63 74 65 64 28 70 6c |.isitselected(pl| 00009410 61 79 65 72 25 2c 76 25 29 20 8c 0d 43 da 1f f2 |ayer%,v%) ..C...| 00009420 6d 61 6b 65 75 6e 73 65 6c 65 63 74 65 64 28 70 |makeunselected(p| 00009430 6c 61 79 65 72 25 2c 76 25 29 0d 43 e4 1f c8 99 |layer%,v%).C....| 00009440 20 22 54 72 61 63 6b 65 72 5f 4d 75 74 65 43 68 | "Tracker_MuteCh| 00009450 61 6e 6e 65 6c 22 2c 76 25 0d 43 ee 05 cc 0d 43 |annel",v%.C....C| 00009460 f8 1d f2 6d 61 6b 65 73 65 6c 65 63 74 65 64 28 |...makeselected(| 00009470 70 6c 61 79 65 72 25 2c 76 25 29 0d 44 02 22 c8 |player%,v%).D.".| 00009480 99 20 22 54 72 61 63 6b 65 72 5f 52 65 73 74 6f |. "Tracker_Resto| 00009490 72 65 43 68 61 6e 6e 65 6c 22 2c 76 25 0d 44 0c |reChannel",v%.D.| 000094a0 05 cd 0d 44 16 05 e1 0d 44 20 05 3a 0d 44 2a 18 |...D....D .:.D*.| 000094b0 dd f2 61 6c 74 65 72 73 74 65 72 65 6f 28 69 63 |..alterstereo(ic| 000094c0 6f 6e 25 29 0d 44 34 1e e7 20 69 63 6f 6e 25 3c |on%).D4.. icon%<| 000094d0 30 20 84 20 69 63 6f 6e 25 3e 3d 38 2a 38 20 8c |0 . icon%>=8*8 .| 000094e0 20 e1 0d 44 3e 17 e7 20 28 69 63 6f 6e 25 20 83 | ..D>.. (icon% .| 000094f0 20 38 29 3d 30 20 8c 20 e1 0d 44 48 29 e7 20 62 | 8)=0 . ..DH). b| 00009500 25 3d 31 20 8c 20 f2 6d 61 6b 65 73 65 6c 65 63 |%=1 . .makeselec| 00009510 74 65 64 28 73 74 65 72 65 6f 25 2c 69 63 6f 6e |ted(stereo%,icon| 00009520 25 29 0d 44 52 1a e7 20 69 63 6f 6e 25 3e 3d 76 |%).DR.. icon%>=v| 00009530 6f 69 63 65 73 25 2a 38 20 8c 20 e1 0d 44 5c 14 |oices%*8 . ..D\.| 00009540 76 25 3d 28 69 63 6f 6e 25 20 81 20 38 29 2b 31 |v%=(icon% . 8)+1| 00009550 0d 44 66 20 73 74 65 72 61 64 64 72 25 3f 28 76 |.Df steraddr%?(v| 00009560 25 2d 31 29 3d 28 69 63 6f 6e 25 20 83 20 38 29 |%-1)=(icon% . 8)| 00009570 0d 44 70 3c e7 20 70 6c 61 79 69 6e 67 25 20 8c |.Dp<. playing% .| 00009580 20 c8 99 20 22 53 6f 75 6e 64 5f 53 74 65 72 65 | .. "Sound_Stere| 00009590 6f 22 2c 76 25 2c 73 74 65 72 65 6f 76 61 6c 73 |o",v%,stereovals| 000095a0 25 28 69 63 6f 6e 25 20 83 20 38 29 0d 44 7a 05 |%(icon% . 8).Dz.| 000095b0 e1 0d 44 84 05 3a 0d 44 8e 12 dd f2 69 6e 63 70 |..D..:.D....incp| 000095c0 61 74 6c 65 6e 67 74 68 0d 44 98 1d e7 20 70 61 |atlength.D... pa| 000095d0 74 6c 65 6e 25 3c 36 34 20 8c 20 70 61 74 6c 65 |tlen%<64 . patle| 000095e0 6e 25 2b 3d 31 0d 44 a2 28 f2 73 65 74 69 63 6f |n%+=1.D.(.setico| 000095f0 6e 74 65 78 74 28 73 65 74 74 69 6e 67 73 25 2c |ntext(settings%,| 00009600 35 2c c3 28 70 61 74 6c 65 6e 25 29 29 0d 44 ac |5,.(patlen%)).D.| 00009610 05 e1 0d 44 b6 05 3a 0d 44 c0 12 dd f2 64 65 63 |...D..:.D....dec| 00009620 70 61 74 6c 65 6e 67 74 68 0d 44 ca 1c e7 20 70 |patlength.D... p| 00009630 61 74 6c 65 6e 25 3e 31 20 8c 20 70 61 74 6c 65 |atlen%>1 . patle| 00009640 6e 25 2d 3d 31 0d 44 d4 28 f2 73 65 74 69 63 6f |n%-=1.D.(.setico| 00009650 6e 74 65 78 74 28 73 65 74 74 69 6e 67 73 25 2c |ntext(settings%,| 00009660 35 2c c3 28 70 61 74 6c 65 6e 25 29 29 0d 44 de |5,.(patlen%)).D.| 00009670 05 e1 0d 44 e8 05 3a 0d 44 f2 15 dd a4 77 68 69 |...D..:.D....whi| 00009680 63 68 73 61 6d 70 6c 65 74 79 70 65 0d 44 fc 25 |chsampletype.D.%| 00009690 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 65 64 28 |. .isitselected(| 000096a0 73 65 74 74 69 6e 67 73 25 2c 36 29 20 8c 20 3d |settings%,6) . =| 000096b0 33 0d 45 06 25 e7 20 a4 69 73 69 74 73 65 6c 65 |3.E.%. .isitsele| 000096c0 63 74 65 64 28 73 65 74 74 69 6e 67 73 25 2c 37 |cted(settings%,7| 000096d0 29 20 8c 20 3d 34 0d 45 10 06 3d 35 0d 45 1a 05 |) . =4.E..=5.E..| 000096e0 3a 0d 45 24 14 dd a4 70 61 64 28 73 74 72 24 2c |:.E$...pad(str$,| 000096f0 6c 65 6e 25 29 0d 45 2e 1b 3d c0 73 74 72 24 2b |len%).E..=.str$+| 00009700 c4 6c 65 6e 25 2c 22 20 22 29 2c 6c 65 6e 25 29 |.len%," "),len%)| 00009710 0d 45 38 05 3a 0d 45 42 19 dd a4 70 61 64 72 69 |.E8.:.EB...padri| 00009720 67 68 74 28 73 74 72 24 2c 6c 65 6e 25 29 0d 45 |ght(str$,len%).E| 00009730 4c 1b 3d c2 c4 6c 65 6e 25 2c 22 20 22 29 2b 73 |L.=..len%," ")+s| 00009740 74 72 24 2c 6c 65 6e 25 29 0d 45 56 05 3a 0d 45 |tr$,len%).EV.:.E| 00009750 60 12 dd a4 62 61 73 65 33 36 28 6e 75 6d 25 29 |`...base36(num%)| 00009760 0d 45 6a 13 e7 20 6e 75 6d 25 3d 30 20 8c 20 3d |.Ej.. num%=0 . =| 00009770 22 2d 22 0d 45 74 1a e7 20 6e 75 6d 25 3c 31 31 |"-".Et.. num%<11| 00009780 20 8c 20 3d c3 28 6e 75 6d 25 2d 31 29 0d 45 7e | . =.(num%-1).E~| 00009790 0f 3d bd 28 6e 75 6d 25 2b 35 34 29 0d 45 88 05 |.=.(num%+54).E..| 000097a0 3a 0d 45 92 19 dd f2 73 61 76 65 64 75 6d 70 28 |:.E....savedump(| 000097b0 64 75 6d 70 6e 61 6d 65 24 29 0d 45 9c 0d f2 67 |dumpname$).E...g| 000097c0 65 74 6e 61 6d 65 73 0d 45 a6 15 c8 99 20 22 48 |etnames.E.... "H| 000097d0 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 45 b0 13 |ourglass_On".E..| 000097e0 41 25 3d 8e 28 64 75 6d 70 6e 61 6d 65 24 29 0d |A%=.(dumpname$).| 000097f0 45 ba 12 e7 20 41 25 3e 30 20 8c 20 d9 20 23 41 |E... A%>0 . . #A| 00009800 25 0d 45 c4 0c e7 20 41 25 3e 30 20 8c 0d 45 ce |%.E... A%>0 ..E.| 00009810 13 43 25 3d ad 28 64 75 6d 70 6e 61 6d 65 24 29 |.C%=.(dumpname$)| 00009820 0d 45 d8 0d cf 23 43 25 3d a2 23 43 25 0d 45 e2 |.E...#C%=.#C%.E.| 00009830 05 cc 0d 45 ec 13 43 25 3d ae 28 64 75 6d 70 6e |...E..C%=.(dumpn| 00009840 61 6d 65 24 29 0d 45 f6 05 cd 0d 46 00 20 f2 73 |ame$).E....F. .s| 00009850 65 74 66 69 6c 65 74 79 70 65 28 64 75 6d 70 6e |etfiletype(dumpn| 00009860 61 6d 65 24 2c 26 46 46 46 29 0d 46 0a 05 3a 0d |ame$,&FFF).F..:.| 00009870 46 14 22 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 |F.". .isitselect| 00009880 65 64 28 73 61 76 65 64 75 6d 70 25 2c 34 29 20 |ed(savedump%,4) | 00009890 8c 0d 46 1e 1e d5 23 43 25 2c 22 54 75 6e 65 20 |..F...#C%,"Tune | 000098a0 4e 61 6d 65 20 20 3a 22 2b 6d 6e 61 6d 65 24 0d |Name :"+mname$.| 000098b0 46 28 1e d5 23 43 25 2c 22 41 75 74 68 6f 72 20 |F(..#C%,"Author | 000098c0 20 20 20 20 3a 22 2b 61 6e 61 6d 65 24 0d 46 32 | :"+aname$.F2| 000098d0 22 d5 23 43 25 2c 22 56 6f 69 63 65 73 20 20 20 |".#C%,"Voices | 000098e0 20 20 3a 22 2b c3 28 76 6f 69 63 65 73 25 29 0d | :"+.(voices%).| 000098f0 46 3c 24 d5 23 43 25 2c 22 50 61 74 74 65 72 6e |F<$.#C%,"Pattern| 00009900 73 20 20 20 3a 22 2b c3 28 70 61 74 74 65 72 6e |s :"+.(pattern| 00009910 73 25 29 0d 46 46 22 d5 23 43 25 2c 22 4c 65 6e |s%).FF".#C%,"Len| 00009920 67 74 68 20 20 20 20 20 3a 22 2b c3 28 73 65 71 |gth :"+.(seq| 00009930 6c 65 6e 25 29 0d 46 50 63 d5 23 43 25 2c 22 53 |len%).FPc.#C%,"S| 00009940 69 7a 65 20 20 20 20 20 20 20 3a 22 2b c3 28 a8 |ize :"+.(.| 00009950 28 28 74 72 61 63 6b 65 72 74 75 6e 65 25 21 34 |((trackertune%!4| 00009960 2b 38 2b 35 31 32 29 20 81 20 31 30 32 34 29 29 |+8+512) . 1024))| 00009970 2b 22 4b 20 20 20 20 20 28 22 2b c3 28 74 72 61 |+"K ("+.(tra| 00009980 63 6b 65 72 74 75 6e 65 25 21 34 2b 38 29 2b 22 |ckertune%!4+8)+"| 00009990 20 62 79 74 65 73 29 22 0d 46 5a 0b d5 23 43 25 | bytes)".FZ..#C%| 000099a0 2c 22 22 0d 46 64 05 cd 0d 46 6e 05 3a 0d 46 78 |,"".Fd...Fn.:.Fx| 000099b0 22 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 65 64 |". .isitselected| 000099c0 28 73 61 76 65 64 75 6d 70 25 2c 35 29 20 8c 0d |(savedump%,5) ..| 000099d0 46 82 15 d5 20 23 43 25 2c 22 53 65 71 75 65 6e |F... #C%,"Sequen| 000099e0 63 65 3a 22 0d 46 8c 0d 73 65 71 70 6f 73 25 3d |ce:".F..seqpos%=| 000099f0 30 0d 46 96 20 e3 20 72 6f 77 25 3d 31 20 b8 20 |0.F. . row%=1 . | 00009a00 28 73 65 71 6c 65 6e 25 2b 31 35 29 20 81 20 31 |(seqlen%+15) . 1| 00009a10 36 0d 46 a0 0b 72 6f 77 24 3d 22 22 0d 46 aa 11 |6.F..row$="".F..| 00009a20 e3 20 63 6f 6c 25 3d 31 20 b8 20 31 36 0d 46 b4 |. col%=1 . 16.F.| 00009a30 4c e7 20 73 65 71 70 6f 73 25 3e 3d 73 65 71 6c |L. seqpos%>=seql| 00009a40 65 6e 25 20 8c 20 61 64 64 24 3d 22 20 20 20 20 |en% . add$=" | 00009a50 22 20 8b 20 61 64 64 24 3d c2 22 20 20 20 20 22 |" . add$=." "| 00009a60 2b c3 28 73 65 71 61 64 64 72 25 3f 73 65 71 70 |+.(seqaddr%?seqp| 00009a70 6f 73 25 2b 31 29 2c 34 29 0d 46 be 0e 72 6f 77 |os%+1),4).F..row| 00009a80 24 2b 3d 61 64 64 24 0d 46 c8 0e 73 65 71 70 6f |$+=add$.F..seqpo| 00009a90 73 25 2b 3d 31 0d 46 d2 05 ed 0d 46 dc 0d d5 23 |s%+=1.F....F...#| 00009aa0 43 25 2c 72 6f 77 24 0d 46 e6 05 ed 0d 46 f0 0b |C%,row$.F....F..| 00009ab0 d5 23 43 25 2c 22 22 0d 46 fa 05 cd 0d 47 04 05 |.#C%,"".F....G..| 00009ac0 3a 0d 47 0e 22 e7 20 a4 69 73 69 74 73 65 6c 65 |:.G.". .isitsele| 00009ad0 63 74 65 64 28 73 61 76 65 64 75 6d 70 25 2c 36 |cted(savedump%,6| 00009ae0 29 20 8c 0d 47 18 18 d5 20 23 43 25 2c 22 49 6e |) ..G... #C%,"In| 00009af0 73 74 72 75 6d 65 6e 74 73 3a 22 0d 47 22 14 e3 |struments:".G"..| 00009b00 20 73 61 6d 70 6c 65 25 3d 31 20 b8 20 33 36 0d | sample%=1 . 36.| 00009b10 47 2c 18 e7 20 73 6c 65 6e 25 28 73 61 6d 70 6c |G,.. slen%(sampl| 00009b20 65 25 29 3e 30 20 8c 0d 47 36 45 73 61 6d 70 6c |e%)>0 ..G6Esampl| 00009b30 65 24 3d 22 53 61 6d 70 6c 65 20 22 2b a4 62 61 |e$="Sample "+.ba| 00009b40 73 65 33 36 28 73 61 6d 70 6c 65 25 29 2b 22 20 |se36(sample%)+" | 00009b50 20 22 2b a4 70 61 64 28 73 61 6d 70 6c 65 24 28 | "+.pad(sample$(| 00009b60 73 61 6d 70 6c 65 25 29 2c 32 30 29 0d 47 40 32 |sample%),20).G@2| 00009b70 73 61 6d 70 6c 65 24 2b 3d 22 20 20 4c 65 6e 67 |sample$+=" Leng| 00009b80 74 68 3a 22 2b a4 70 61 64 28 c3 28 73 6c 65 6e |th:"+.pad(.(slen| 00009b90 25 28 73 61 6d 70 6c 65 25 29 29 2c 35 29 0d 47 |%(sample%)),5).G| 00009ba0 4a 10 d5 23 43 25 2c 73 61 6d 70 6c 65 24 0d 47 |J..#C%,sample$.G| 00009bb0 54 05 cd 0d 47 5e 05 ed 0d 47 68 0b d5 23 43 25 |T...G^...Gh..#C%| 00009bc0 2c 22 22 0d 47 72 05 cd 0d 47 7c 05 3a 0d 47 86 |,"".Gr...G|.:.G.| 00009bd0 23 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 65 64 |#. .isitselected| 00009be0 28 73 61 76 65 64 75 6d 70 25 2c 31 30 29 20 8c |(savedump%,10) .| 00009bf0 0d 47 90 0f 73 71 75 61 73 68 65 64 25 3d a3 0d |.G..squashed%=..| 00009c00 47 9a 14 d5 23 43 25 2c 22 50 61 74 74 65 72 6e |G...#C%,"Pattern| 00009c10 73 3a 22 0d 47 a4 0b d5 23 43 25 2c 22 22 0d 47 |s:".G...#C%,"".G| 00009c20 ae 1c e3 20 70 61 74 74 65 72 6e 25 3d 31 20 b8 |... pattern%=1 .| 00009c30 20 70 61 74 74 65 72 6e 73 25 0d 47 b8 36 c8 99 | patterns%.G.6..| 00009c40 20 22 48 6f 75 72 67 6c 61 73 73 5f 50 65 72 63 | "Hourglass_Perc| 00009c50 65 6e 74 61 67 65 22 2c 31 30 30 2a 28 70 61 74 |entage",100*(pat| 00009c60 74 65 72 6e 25 2f 70 61 74 74 65 72 6e 73 25 29 |tern%/patterns%)| 00009c70 0d 47 c2 1d 61 64 64 72 25 3d 70 61 74 74 61 64 |.G..addr%=pattad| 00009c80 64 72 25 28 70 61 74 74 65 72 6e 25 29 0d 47 cc |dr%(pattern%).G.| 00009c90 53 d5 23 43 25 2c 22 50 61 74 74 65 72 6e 3a 22 |S.#C%,"Pattern:"| 00009ca0 2b a4 70 61 64 28 c3 28 70 61 74 74 65 72 6e 25 |+.pad(.(pattern%| 00009cb0 29 2c 32 29 2b 22 20 20 20 20 28 6c 65 6e 67 74 |),2)+" (lengt| 00009cc0 68 3a 22 2b c3 28 70 61 74 74 6c 65 6e 25 3f 28 |h:"+.(pattlen%?(| 00009cd0 70 61 74 74 65 72 6e 25 2d 31 29 29 2b 22 29 22 |pattern%-1))+")"| 00009ce0 0d 47 d6 24 e3 20 72 6f 77 25 3d 31 20 b8 20 70 |.G.$. row%=1 . p| 00009cf0 61 74 74 6c 65 6e 25 3f 28 70 61 74 74 65 72 6e |attlen%?(pattern| 00009d00 25 2d 31 29 0d 47 e0 0b 72 6f 77 24 3d 22 22 0d |%-1).G..row$="".| 00009d10 47 ea 18 e3 20 76 6f 69 63 65 25 3d 31 20 b8 20 |G... voice%=1 . | 00009d20 76 6f 69 63 65 73 25 0d 47 f4 11 65 76 65 6e 74 |voices%.G..event| 00009d30 25 3d 21 61 64 64 72 25 0d 47 fe 3c c8 99 20 22 |%=!addr%.G.<.. "| 00009d40 54 72 61 63 6b 65 72 5f 44 65 63 6f 64 65 4e 6f |Tracker_DecodeNo| 00009d50 74 65 22 2c 65 76 65 6e 74 25 20 b8 20 2c 6e 6f |te",event% . ,no| 00009d60 74 65 25 2c 69 6e 73 74 25 2c 63 6f 6d 6d 25 2c |te%,inst%,comm%,| 00009d70 76 61 6c 25 0d 48 08 47 65 76 65 6e 74 24 3d c1 |val%.H.Gevent$=.| 00009d80 6e 6f 74 65 73 24 2c 33 2a 6e 6f 74 65 25 2b 31 |notes$,3*note%+1| 00009d90 2c 33 29 2b 22 20 22 2b a4 62 61 73 65 33 36 28 |,3)+" "+.base36(| 00009da0 69 6e 73 74 25 29 2b 22 20 22 2b a4 62 61 73 65 |inst%)+" "+.base| 00009db0 33 36 28 63 6f 6d 6d 25 2b 31 29 0d 48 12 1b 65 |36(comm%+1).H..e| 00009dc0 76 65 6e 74 24 2b 3d c2 22 30 30 22 2b c3 7e 76 |vent$+=."00"+.~v| 00009dd0 61 6c 25 2c 32 29 0d 48 1c 1a e7 20 76 6f 69 63 |al%,2).H... voic| 00009de0 65 25 3e 31 20 8c 20 72 6f 77 24 2b 3d 22 20 22 |e%>1 . row$+=" "| 00009df0 0d 48 26 10 72 6f 77 24 2b 3d 65 76 65 6e 74 24 |.H&.row$+=event$| 00009e00 0d 48 30 0c 61 64 64 72 25 2b 3d 34 0d 48 3a 05 |.H0.addr%+=4.H:.| 00009e10 ed 0d 48 44 0d d5 23 43 25 2c 72 6f 77 24 0d 48 |..HD..#C%,row$.H| 00009e20 4e 05 ed 0d 48 58 0b d5 23 43 25 2c 22 22 0d 48 |N...HX..#C%,"".H| 00009e30 62 05 ed 0d 48 6c 05 cd 0d 48 76 05 3a 0d 48 80 |b...Hl...Hv.:.H.| 00009e40 23 e7 20 a4 69 73 69 74 73 65 6c 65 63 74 65 64 |#. .isitselected| 00009e50 28 73 61 76 65 64 75 6d 70 25 2c 31 32 29 20 8c |(savedump%,12) .| 00009e60 0d 48 8a 18 d5 23 43 25 2c 22 55 73 65 64 20 69 |.H...#C%,"Used i| 00009e70 6e 20 74 75 6e 65 3a 22 0d 48 94 0b d5 23 43 25 |n tune:".H...#C%| 00009e80 2c 22 22 0d 48 9e 08 41 25 3d 36 0d 48 a8 13 42 |,"".H..A%=6.H..B| 00009e90 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 25 0d 48 |%=trackertune%.H| 00009ea0 b2 19 75 73 65 64 25 3d ba 28 74 72 61 63 6b 65 |..used%=.(tracke| 00009eb0 72 63 6f 64 65 25 29 0d 48 bc 08 41 25 3d 37 0d |rcode%).H..A%=7.| 00009ec0 48 c6 19 63 6f 6d 6d 25 3d ba 28 74 72 61 63 6b |H..comm%=.(track| 00009ed0 65 72 63 6f 64 65 25 29 0d 48 d0 11 e3 20 72 6f |ercode%).H... ro| 00009ee0 77 25 3d 31 20 b8 20 33 36 0d 48 da 1c 72 6f 77 |w%=1 . 36.H..row| 00009ef0 24 3d c1 6e 6f 74 65 73 24 2c 33 2a 72 6f 77 25 |$=.notes$,3*row%| 00009f00 2b 31 2c 33 29 0d 48 e4 37 72 6f 77 24 2b 3d 22 |+1,3).H.7row$+="| 00009f10 20 22 2b a4 70 61 64 72 69 67 68 74 28 c3 28 75 | "+.padright(.(u| 00009f20 73 65 64 25 21 28 72 6f 77 25 2a 34 2d 34 29 29 |sed%!(row%*4-4))| 00009f30 2c 35 29 2b 22 20 20 20 20 20 20 22 0d 48 ee 2b |,5)+" ".H.+| 00009f40 e7 20 73 6c 65 6e 25 28 72 6f 77 25 29 3e 30 20 |. slen%(row%)>0 | 00009f50 8c 20 72 6f 77 24 2b 3d 22 2a 22 20 8b 20 72 6f |. row$+="*" . ro| 00009f60 77 24 2b 3d 22 20 22 0d 48 f8 17 73 61 6d 70 24 |w$+=" ".H..samp$| 00009f70 3d 73 61 6d 70 6c 65 24 28 72 6f 77 25 29 0d 49 |=sample$(row%).I| 00009f80 02 2a 72 6f 77 24 2b 3d a4 62 61 73 65 33 36 28 |.*row$+=.base36(| 00009f90 72 6f 77 25 29 2b 22 20 22 2b a4 70 61 64 28 73 |row%)+" "+.pad(s| 00009fa0 61 6d 70 24 2c 32 31 29 0d 49 0c 38 72 6f 77 24 |amp$,21).I.8row$| 00009fb0 2b 3d a4 70 61 64 72 69 67 68 74 28 c3 28 75 73 |+=.padright(.(us| 00009fc0 65 64 25 21 28 72 6f 77 25 2a 34 2d 34 2b 33 36 |ed%!(row%*4-4+36| 00009fd0 2a 34 29 29 2c 35 29 2b 22 20 20 20 20 20 20 22 |*4)),5)+" "| 00009fe0 0d 49 16 1b 72 6f 77 24 2b 3d a4 62 61 73 65 33 |.I..row$+=.base3| 00009ff0 36 28 72 6f 77 25 29 2b 22 20 22 0d 49 20 41 72 |6(row%)+" ".I Ar| 0000a000 6f 77 24 2b 3d a4 70 61 64 28 a4 61 72 72 6f 77 |ow$+=.pad(.arrow| 0000a010 73 28 a4 73 74 72 69 6e 67 77 69 74 68 6c 69 6d |s(.stringwithlim| 0000a020 69 74 28 63 6f 6d 6d 25 2b 72 6f 77 25 2a 31 34 |it(comm%+row%*14| 0000a030 2d 31 34 2c 31 34 29 29 2c 31 35 29 0d 49 2a 2f |-14,14)),15).I*/| 0000a040 72 6f 77 24 2b 3d a4 70 61 64 72 69 67 68 74 28 |row$+=.padright(| 0000a050 c3 28 75 73 65 64 25 21 28 72 6f 77 25 2a 34 2d |.(used%!(row%*4-| 0000a060 34 2b 37 32 2a 34 29 29 2c 35 29 0d 49 34 0d d5 |4+72*4)),5).I4..| 0000a070 23 43 25 2c 72 6f 77 24 0d 49 3e 05 ed 0d 49 48 |#C%,row$.I>...IH| 0000a080 0b d5 23 43 25 2c 22 22 0d 49 52 05 cd 0d 49 5c |..#C%,"".IR...I\| 0000a090 05 3a 0d 49 66 16 c8 99 20 22 48 6f 75 72 67 6c |.:.If... "Hourgl| 0000a0a0 61 73 73 5f 4f 66 66 22 0d 49 70 09 d9 20 23 43 |ass_Off".Ip.. #C| 0000a0b0 25 0d 49 7a 1c c8 99 20 22 57 69 6d 70 5f 43 72 |%.Iz... "Wimp_Cr| 0000a0c0 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 49 84 |eateMenu",,-1.I.| 0000a0d0 05 e1 0d 49 8e 05 3a 0d 49 98 12 dd a4 61 72 72 |...I..:.I....arr| 0000a0e0 6f 77 73 28 73 74 72 24 29 0d 49 a2 13 e7 20 73 |ows(str$).I... s| 0000a0f0 74 72 24 3d 22 22 20 8c 20 3d 22 22 0d 49 ac 11 |tr$="" . ="".I..| 0000a100 ea 20 6e 65 77 24 2c 62 25 2c 63 68 25 0d 49 b6 |. new$,b%,ch%.I.| 0000a110 0b 6e 65 77 24 3d 22 22 0d 49 c0 15 e3 20 63 68 |.new$="".I... ch| 0000a120 25 3d 31 20 b8 20 a9 28 73 74 72 24 29 0d 49 ca |%=1 . .(str$).I.| 0000a130 16 62 25 3d 97 28 c1 73 74 72 24 2c 63 68 25 2c |.b%=.(.str$,ch%,| 0000a140 31 29 29 0d 49 d4 14 e7 20 62 25 3e 31 32 36 20 |1)).I... b%>126 | 0000a150 8c 20 62 25 2b 3d 39 0d 49 de 0f 6e 65 77 24 2b |. b%+=9.I..new$+| 0000a160 3d bd 28 62 25 29 0d 49 e8 05 ed 0d 49 f2 09 3d |=.(b%).I....I..=| 0000a170 6e 65 77 24 0d 49 fc 05 3a 0d 4a 06 0e dd f2 6d |new$.I..:.J....m| 0000a180 69 6e 69 6d 69 73 65 0d 4a 10 1e 74 75 6e 65 73 |inimise.J..tunes| 0000a190 69 7a 65 25 3d 74 72 61 63 6b 65 72 74 75 6e 65 |ize%=trackertune| 0000a1a0 25 21 34 2b 38 0d 4a 1a 23 74 75 6e 65 73 69 7a |%!4+8.J.#tunesiz| 0000a1b0 65 25 3d 28 74 75 6e 65 73 69 7a 65 25 2b 33 32 |e%=(tunesize%+32| 0000a1c0 2a 31 30 32 34 2d 31 29 0d 4a 24 2d 74 75 6e 65 |*1024-1).J$-tune| 0000a1d0 73 69 7a 65 25 3d 33 32 2a 31 30 32 34 2a 28 74 |size%=32*1024*(t| 0000a1e0 75 6e 65 73 69 7a 65 25 20 81 20 28 33 32 2a 31 |unesize% . (32*1| 0000a1f0 30 32 34 29 29 0d 4a 2e 2d c8 99 20 22 58 57 69 |024)).J.-.. "XWi| 0000a200 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 74 75 6e |mp_SlotSize",tun| 0000a210 65 73 69 7a 65 25 2b 61 70 70 73 69 7a 65 25 2c |esize%+appsize%,| 0000a220 2d 31 0d 4a 38 29 c8 99 20 22 58 57 69 6d 70 5f |-1.J8).. "XWimp_| 0000a230 53 6c 6f 74 53 69 7a 65 22 2c 2d 31 2c 2d 31 20 |SlotSize",-1,-1 | 0000a240 b8 20 74 75 6e 65 73 69 7a 65 25 0d 4a 42 34 66 |. tunesize%.JB4f| 0000a250 72 65 65 6d 65 6d 25 3d 28 74 75 6e 65 73 69 7a |reemem%=(tunesiz| 0000a260 65 25 2d 61 70 70 73 69 7a 65 25 29 2d 28 74 72 |e%-appsize%)-(tr| 0000a270 61 63 6b 65 72 74 75 6e 65 25 21 34 2b 38 29 0d |ackertune%!4+8).| 0000a280 4a 4c 05 e1 0d 4a 56 05 3a 0d 4a 60 0f dd f2 64 |JL...JV.:.J`...d| 0000a290 65 63 64 65 6c 70 61 74 0d 4a 6a 1c e7 20 64 65 |ecdelpat.Jj.. de| 0000a2a0 6c 70 61 74 25 3e 31 20 8c 20 64 65 6c 70 61 74 |lpat%>1 . delpat| 0000a2b0 25 2d 3d 31 0d 4a 74 2a f2 73 65 74 69 63 6f 6e |%-=1.Jt*.seticon| 0000a2c0 74 65 78 74 28 61 6d 65 6e 64 74 72 61 63 6b 25 |text(amendtrack%| 0000a2d0 2c 32 2c c3 28 64 65 6c 70 61 74 25 29 29 0d 4a |,2,.(delpat%)).J| 0000a2e0 7e 05 e1 0d 4a 88 05 3a 0d 4a 92 0f dd f2 69 6e |~...J..:.J....in| 0000a2f0 63 64 65 6c 70 61 74 0d 4a 9c 24 e7 20 64 65 6c |cdelpat.J.$. del| 0000a300 70 61 74 25 3c 70 61 74 74 65 72 6e 73 25 20 8c |pat%<patterns% .| 0000a310 20 64 65 6c 70 61 74 25 2b 3d 31 0d 4a a6 2a f2 | delpat%+=1.J.*.| 0000a320 73 65 74 69 63 6f 6e 74 65 78 74 28 61 6d 65 6e |seticontext(amen| 0000a330 64 74 72 61 63 6b 25 2c 32 2c c3 28 64 65 6c 70 |dtrack%,2,.(delp| 0000a340 61 74 25 29 29 0d 4a b0 05 e1 0d 4a ba 05 3a 0d |at%)).J....J..:.| 0000a350 4a c4 11 dd f2 64 65 63 64 65 6c 76 6f 69 63 65 |J....decdelvoice| 0000a360 0d 4a ce 20 e7 20 64 65 6c 76 6f 69 63 65 25 3e |.J. . delvoice%>| 0000a370 31 20 8c 20 64 65 6c 76 6f 69 63 65 25 2d 3d 31 |1 . delvoice%-=1| 0000a380 0d 4a d8 2d f2 73 65 74 69 63 6f 6e 74 65 78 74 |.J.-.seticontext| 0000a390 28 61 6d 65 6e 64 74 72 61 63 6b 25 2c 31 30 2c |(amendtrack%,10,| 0000a3a0 c3 28 64 65 6c 76 6f 69 63 65 25 29 29 0d 4a e2 |.(delvoice%)).J.| 0000a3b0 05 e1 0d 4a ec 05 3a 0d 4a f6 11 dd f2 69 6e 63 |...J..:.J....inc| 0000a3c0 64 65 6c 76 6f 69 63 65 0d 4b 00 26 e7 20 64 65 |delvoice.K.&. de| 0000a3d0 6c 76 6f 69 63 65 25 3c 76 6f 69 63 65 73 25 20 |lvoice%<voices% | 0000a3e0 8c 20 64 65 6c 76 6f 69 63 65 25 2b 3d 31 0d 4b |. delvoice%+=1.K| 0000a3f0 0a 2d f2 73 65 74 69 63 6f 6e 74 65 78 74 28 61 |.-.seticontext(a| 0000a400 6d 65 6e 64 74 72 61 63 6b 25 2c 31 30 2c c3 28 |mendtrack%,10,.(| 0000a410 64 65 6c 76 6f 69 63 65 25 29 29 0d 4b 14 05 e1 |delvoice%)).K...| 0000a420 0d 4b 1e 05 3a 0d 4b 28 13 dd f2 64 65 6c 65 74 |.K..:.K(...delet| 0000a430 65 70 61 74 74 65 72 6e 0d 4b 32 2c e7 20 70 61 |epattern.K2,. pa| 0000a440 74 74 65 72 6e 73 25 3d 31 20 8c 20 85 20 31 37 |tterns%=1 . . 17| 0000a450 2c 22 4f 6e 6c 79 20 6f 6e 65 20 70 61 74 74 65 |,"Only one patte| 0000a460 72 6e 21 22 0d 4b 3c 0b 66 6c 61 67 25 3d a3 0d |rn!".K<.flag%=..| 0000a470 4b 46 18 e3 20 70 6f 73 25 3d 30 20 b8 20 73 65 |KF.. pos%=0 . se| 0000a480 71 6c 65 6e 25 2d 31 0d 4b 50 29 e7 20 73 65 71 |qlen%-1.KP). seq| 0000a490 61 64 64 72 25 3f 70 6f 73 25 3d 28 64 65 6c 70 |addr%?pos%=(delp| 0000a4a0 61 74 25 2d 31 29 20 8c 20 66 6c 61 67 25 3d b9 |at%-1) . flag%=.| 0000a4b0 0d 4b 5a 05 ed 0d 4b 64 2f e7 20 66 6c 61 67 25 |.KZ...Kd/. flag%| 0000a4c0 20 8c 20 85 20 31 37 2c 22 50 61 74 74 65 72 6e | . . 17,"Pattern| 0000a4d0 20 6f 63 63 75 72 73 20 69 6e 20 73 65 71 75 65 | occurs in seque| 0000a4e0 6e 63 65 22 0d 4b 6e 20 f2 6d 61 6b 65 73 65 6c |nce".Kn .makesel| 0000a4f0 65 63 74 65 64 28 61 6d 65 6e 64 74 72 61 63 6b |ected(amendtrack| 0000a500 25 2c 35 29 0d 4b 78 1c 61 74 25 3d 70 61 74 74 |%,5).Kx.at%=patt| 0000a510 61 64 64 72 25 28 64 65 6c 70 61 74 25 29 2d 38 |addr%(delpat%)-8| 0000a520 0d 4b 82 15 74 6f 64 65 6c 65 74 65 25 3d 61 74 |.K..todelete%=at| 0000a530 25 21 34 2b 38 0d 4b 8c 25 66 6c 61 67 25 3d a4 |%!4+8.K.%flag%=.| 0000a540 64 65 6c 65 74 65 62 79 74 65 73 28 61 74 25 2c |deletebytes(at%,| 0000a550 74 6f 64 65 6c 65 74 65 25 29 0d 4b 96 18 e3 20 |todelete%).K... | 0000a560 70 6f 73 25 3d 30 20 b8 20 73 65 71 6c 65 6e 25 |pos%=0 . seqlen%| 0000a570 2d 31 0d 4b a0 2f e7 20 73 65 71 61 64 64 72 25 |-1.K./. seqaddr%| 0000a580 3f 70 6f 73 25 3e 3d 64 65 6c 70 61 74 25 20 8c |?pos%>=delpat% .| 0000a590 20 73 65 71 61 64 64 72 25 3f 70 6f 73 25 2d 3d | seqaddr%?pos%-=| 0000a5a0 31 0d 4b aa 05 ed 0d 4b b4 26 e3 20 70 6f 73 25 |1.K....K.&. pos%| 0000a5b0 3d 28 64 65 6c 70 61 74 25 2d 31 29 20 b8 20 28 |=(delpat%-1) . (| 0000a5c0 70 61 74 74 65 72 6e 73 25 2d 32 29 0d 4b be 25 |patterns%-2).K.%| 0000a5d0 70 61 74 74 6c 65 6e 25 3f 28 70 6f 73 25 29 3d |pattlen%?(pos%)=| 0000a5e0 70 61 74 74 6c 65 6e 25 3f 28 70 6f 73 25 2b 31 |pattlen%?(pos%+1| 0000a5f0 29 0d 4b c8 05 ed 0d 4b d2 11 21 70 6e 75 6d 61 |).K....K..!pnuma| 0000a600 64 64 72 25 2d 3d 31 0d 4b dc 11 f2 67 65 74 6d |ddr%-=1.K...getm| 0000a610 75 73 69 63 69 6e 66 6f 0d 4b e6 0d f2 6d 69 6e |usicinfo.K...min| 0000a620 69 6d 69 73 65 0d 4b f0 0d f2 74 75 6e 65 69 6e |imise.K...tunein| 0000a630 66 6f 0d 4b fa 2b e7 20 64 65 6c 70 61 74 25 3e |fo.K.+. delpat%>| 0000a640 70 61 74 74 65 72 6e 73 25 20 8c 20 64 65 6c 70 |patterns% . delp| 0000a650 61 74 25 3d 70 61 74 74 65 72 6e 73 25 0d 4c 04 |at%=patterns%.L.| 0000a660 2a f2 73 65 74 69 63 6f 6e 74 65 78 74 28 61 6d |*.seticontext(am| 0000a670 65 6e 64 74 72 61 63 6b 25 2c 32 2c c3 28 64 65 |endtrack%,2,.(de| 0000a680 6c 70 61 74 25 29 29 0d 4c 0e 22 f2 6d 61 6b 65 |lpat%)).L.".make| 0000a690 75 6e 73 65 6c 65 63 74 65 64 28 61 6d 65 6e 64 |unselected(amend| 0000a6a0 74 72 61 63 6b 25 2c 35 29 0d 4c 18 05 e1 0d 4c |track%,5).L....L| 0000a6b0 22 05 3a 0d 4c 2c 10 dd f2 61 6d 65 6e 64 76 6f |".:.L,...amendvo| 0000a6c0 69 63 65 0d 4c 36 57 e7 20 a4 69 73 69 74 73 65 |ice.L6W. .isitse| 0000a6d0 6c 65 63 74 65 64 28 61 6d 65 6e 64 74 72 61 63 |lected(amendtrac| 0000a6e0 6b 25 2c 31 34 29 20 8c 20 f2 64 65 6c 65 74 65 |k%,14) . .delete| 0000a6f0 76 6f 69 63 65 28 64 65 6c 76 6f 69 63 65 25 29 |voice(delvoice%)| 0000a700 20 8b 20 f2 69 6e 73 65 72 74 76 6f 69 63 65 28 | . .insertvoice(| 0000a710 64 65 6c 76 6f 69 63 65 25 29 0d 4c 40 2b e7 20 |delvoice%).L@+. | 0000a720 64 65 6c 76 6f 69 63 65 25 3e 76 6f 69 63 65 73 |delvoice%>voices| 0000a730 25 20 8c 20 64 65 6c 76 6f 69 63 65 25 3d 76 6f |% . delvoice%=vo| 0000a740 69 63 65 73 25 0d 4c 4a 2d f2 73 65 74 69 63 6f |ices%.LJ-.setico| 0000a750 6e 74 65 78 74 28 61 6d 65 6e 64 74 72 61 63 6b |ntext(amendtrack| 0000a760 25 2c 31 30 2c c3 28 64 65 6c 76 6f 69 63 65 25 |%,10,.(delvoice%| 0000a770 29 29 0d 4c 54 05 e1 0d 4c 5e 05 3a 0d 4c 68 14 |)).LT...L^.:.Lh.| 0000a780 dd a4 74 6f 74 61 6c 70 61 74 6c 65 6e 67 74 68 |..totalpatlength| 0000a790 0d 4c 72 0c 74 6f 74 61 6c 25 3d 30 0d 4c 7c 1c |.Lr.total%=0.L|.| 0000a7a0 e3 20 70 61 74 74 65 72 6e 25 3d 31 20 b8 20 70 |. pattern%=1 . p| 0000a7b0 61 74 74 65 72 6e 73 25 0d 4c 86 21 74 6f 74 61 |atterns%.L.!tota| 0000a7c0 6c 25 2b 3d 70 61 74 74 6c 65 6e 25 3f 28 70 61 |l%+=pattlen%?(pa| 0000a7d0 74 74 65 72 6e 25 2d 31 29 0d 4c 90 05 ed 0d 4c |ttern%-1).L....L| 0000a7e0 9a 0b 3d 74 6f 74 61 6c 25 0d 4c a4 05 3a 0d 4c |..=total%.L..:.L| 0000a7f0 ae 15 dd f2 64 65 6c 65 74 65 76 6f 69 63 65 28 |....deletevoice(| 0000a800 76 25 29 0d 4c b8 30 e7 20 76 6f 69 63 65 73 25 |v%).L.0. voices%| 0000a810 3d 31 20 8c 20 85 20 31 37 2c 22 4f 6e 6c 79 20 |=1 . . 17,"Only | 0000a820 6f 6e 65 20 76 6f 69 63 65 20 70 72 65 73 65 6e |one voice presen| 0000a830 74 21 22 0d 4c c2 21 f2 6d 61 6b 65 73 65 6c 65 |t!".L.!.makesele| 0000a840 63 74 65 64 28 61 6d 65 6e 64 74 72 61 63 6b 25 |cted(amendtrack%| 0000a850 2c 31 31 29 0d 4c cc 15 c8 99 20 22 48 6f 75 72 |,11).L.... "Hour| 0000a860 67 6c 61 73 73 5f 4f 6e 22 0d 4c d6 1c e3 20 70 |glass_On".L... p| 0000a870 61 74 74 65 72 6e 25 3d 31 20 b8 20 70 61 74 74 |attern%=1 . patt| 0000a880 65 72 6e 73 25 0d 4c e0 3a c8 99 20 22 48 6f 75 |erns%.L.:.. "Hou| 0000a890 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 67 |rglass_Percentag| 0000a8a0 65 22 2c 28 28 70 61 74 74 65 72 6e 25 2d 31 29 |e",((pattern%-1)| 0000a8b0 2f 70 61 74 74 65 72 6e 73 25 29 2a 31 30 30 0d |/patterns%)*100.| 0000a8c0 4c ea 1f 72 6f 77 73 25 3d 70 61 74 74 6c 65 6e |L..rows%=pattlen| 0000a8d0 25 3f 28 70 61 74 74 65 72 6e 25 2d 31 29 0d 4c |%?(pattern%-1).L| 0000a8e0 f4 1e 73 74 61 72 74 25 3d 70 61 74 74 61 64 64 |..start%=pattadd| 0000a8f0 72 25 28 70 61 74 74 65 72 6e 25 29 0d 4c fe 16 |r%(pattern%).L..| 0000a900 70 31 25 3d 73 74 61 72 74 25 3a 70 32 25 3d 70 |p1%=start%:p2%=p| 0000a910 31 25 0d 4d 08 14 e3 20 72 6f 77 25 3d 31 20 b8 |1%.M... row%=1 .| 0000a920 20 72 6f 77 73 25 0d 4d 12 18 e3 20 76 6f 69 63 | rows%.M... voic| 0000a930 65 25 3d 31 20 b8 20 76 6f 69 63 65 73 25 0d 4d |e%=1 . voices%.M| 0000a940 1c 12 e7 20 76 6f 69 63 65 25 3c 3e 76 25 20 8c |... voice%<>v% .| 0000a950 0d 4d 26 0d 21 70 31 25 3d 21 70 32 25 0d 4d 30 |.M&.!p1%=!p2%.M0| 0000a960 0a 70 31 25 2b 3d 34 0d 4d 3a 05 cd 0d 4d 44 0a |.p1%+=4.M:...MD.| 0000a970 70 32 25 2b 3d 34 0d 4d 4e 05 ed 0d 4d 58 05 ed |p2%+=4.MN...MX..| 0000a980 0d 4d 62 23 21 28 73 74 61 72 74 25 2d 34 29 3d |.Mb#!(start%-4)=| 0000a990 21 28 73 74 61 72 74 25 2d 34 29 2d 72 6f 77 73 |!(start%-4)-rows| 0000a9a0 25 2a 34 0d 4d 6c 15 74 6f 64 65 6c 65 74 65 25 |%*4.Ml.todelete%| 0000a9b0 3d 72 6f 77 73 25 2a 34 0d 4d 76 25 66 6c 61 67 |=rows%*4.Mv%flag| 0000a9c0 25 3d a4 64 65 6c 65 74 65 62 79 74 65 73 28 70 |%=.deletebytes(p| 0000a9d0 31 25 2c 74 6f 64 65 6c 65 74 65 25 29 0d 4d 80 |1%,todelete%).M.| 0000a9e0 11 f2 72 65 61 64 70 61 74 74 65 72 6e 73 0d 4d |..readpatterns.M| 0000a9f0 8a 05 ed 0d 4d 94 11 21 6d 76 6f 78 61 64 64 72 |....M..!mvoxaddr| 0000aa00 25 2d 3d 31 0d 4d 9e 0d f2 6d 69 6e 69 6d 69 73 |%-=1.M...minimis| 0000aa10 65 0d 4d a8 23 f2 6d 61 6b 65 75 6e 73 65 6c 65 |e.M.#.makeunsele| 0000aa20 63 74 65 64 28 61 6d 65 6e 64 74 72 61 63 6b 25 |cted(amendtrack%| 0000aa30 2c 31 31 29 0d 4d b2 16 c8 99 20 22 48 6f 75 72 |,11).M.... "Hour| 0000aa40 67 6c 61 73 73 5f 4f 66 66 22 0d 4d bc 11 f2 67 |glass_Off".M...g| 0000aa50 65 74 6d 75 73 69 63 69 6e 66 6f 0d 4d c6 0d f2 |etmusicinfo.M...| 0000aa60 74 75 6e 65 69 6e 66 6f 0d 4d d0 15 f2 69 6e 69 |tuneinfo.M...ini| 0000aa70 74 69 61 6c 69 73 65 76 6f 69 63 65 73 0d 4d da |tialisevoices.M.| 0000aa80 11 6a 75 73 74 6c 6f 61 64 65 64 25 3d b9 0d 4d |.justloaded%=..M| 0000aa90 e4 05 e1 0d 4d ee 05 3a 0d 4d f8 15 dd f2 69 6e |....M..:.M....in| 0000aaa0 73 65 72 74 76 6f 69 63 65 28 76 25 29 0d 4e 02 |sertvoice(v%).N.| 0000aab0 2a e7 20 76 6f 69 63 65 73 25 3d 38 20 8c 20 85 |*. voices%=8 . .| 0000aac0 20 31 37 2c 22 41 6c 72 65 61 64 79 20 38 20 76 | 17,"Already 8 v| 0000aad0 6f 69 63 65 73 21 22 0d 4e 0c 1b 67 72 61 62 25 |oices!".N..grab%| 0000aae0 3d a4 74 6f 74 61 6c 70 61 74 6c 65 6e 67 74 68 |=.totalpatlength| 0000aaf0 2a 34 0d 4e 16 3f e7 20 ac 28 a4 67 72 61 62 6d |*4.N.?. .(.grabm| 0000ab00 65 6d 28 67 72 61 62 25 29 29 20 8c 20 85 20 31 |em(grab%)) . . 1| 0000ab10 37 2c 22 49 6e 73 75 66 66 69 63 69 65 6e 74 20 |7,"Insufficient | 0000ab20 4d 65 6d 6f 72 79 20 41 76 61 69 6c 61 62 6c 65 |Memory Available| 0000ab30 22 0d 4e 20 13 66 72 65 65 6d 65 6d 25 2b 3d 67 |".N .freemem%+=g| 0000ab40 72 61 62 25 0d 4e 2a 21 f2 6d 61 6b 65 73 65 6c |rab%.N*!.makesel| 0000ab50 65 63 74 65 64 28 61 6d 65 6e 64 74 72 61 63 6b |ected(amendtrack| 0000ab60 25 2c 31 31 29 0d 4e 34 15 c8 99 20 22 48 6f 75 |%,11).N4... "Hou| 0000ab70 72 67 6c 61 73 73 5f 4f 6e 22 0d 4e 3e 1c e3 20 |rglass_On".N>.. | 0000ab80 70 61 74 74 65 72 6e 25 3d 31 20 b8 20 70 61 74 |pattern%=1 . pat| 0000ab90 74 65 72 6e 73 25 0d 4e 48 3a c8 99 20 22 48 6f |terns%.NH:.. "Ho| 0000aba0 75 72 67 6c 61 73 73 5f 50 65 72 63 65 6e 74 61 |urglass_Percenta| 0000abb0 67 65 22 2c 28 28 70 61 74 74 65 72 6e 25 2d 31 |ge",((pattern%-1| 0000abc0 29 2f 70 61 74 74 65 72 6e 73 25 29 2a 31 30 30 |)/patterns%)*100| 0000abd0 0d 4e 52 1f 72 6f 77 73 25 3d 70 61 74 74 6c 65 |.NR.rows%=pattle| 0000abe0 6e 25 3f 28 70 61 74 74 65 72 6e 25 2d 31 29 0d |n%?(pattern%-1).| 0000abf0 4e 5c 1e 73 74 61 72 74 25 3d 70 61 74 74 61 64 |N\.start%=pattad| 0000ac00 64 72 25 28 70 61 74 74 65 72 6e 25 29 0d 4e 66 |dr%(pattern%).Nf| 0000ac10 1e 61 74 25 3d 73 74 61 72 74 25 2b 72 6f 77 73 |.at%=start%+rows| 0000ac20 25 2a 76 6f 69 63 65 73 25 2a 34 0d 4e 70 15 74 |%*voices%*4.Np.t| 0000ac30 6f 69 6e 73 65 72 74 25 3d 72 6f 77 73 25 2a 34 |oinsert%=rows%*4| 0000ac40 0d 4e 7a 25 66 6c 61 67 25 3d a4 69 6e 73 65 72 |.Nz%flag%=.inser| 0000ac50 74 62 79 74 65 73 28 61 74 25 2c 74 6f 69 6e 73 |tbytes(at%,toins| 0000ac60 65 72 74 25 29 0d 4e 84 19 e3 20 72 6f 77 25 3d |ert%).N... row%=| 0000ac70 72 6f 77 73 25 20 b8 20 31 20 88 20 2d 31 0d 4e |rows% . 1 . -1.N| 0000ac80 8e 21 70 31 25 3d 73 74 61 72 74 25 2b 28 72 6f |.!p1%=start%+(ro| 0000ac90 77 25 2d 31 29 2a 76 6f 69 63 65 73 25 2a 34 0d |w%-1)*voices%*4.| 0000aca0 4e 98 25 70 32 25 3d 73 74 61 72 74 25 2b 28 72 |N.%p2%=start%+(r| 0000acb0 6f 77 25 2d 31 29 2a 28 76 6f 69 63 65 73 25 2b |ow%-1)*(voices%+| 0000acc0 31 29 2a 34 0d 4e a2 18 e3 20 76 6f 69 63 65 25 |1)*4.N... voice%| 0000acd0 3d 31 20 b8 20 76 6f 69 63 65 73 25 0d 4e ac 25 |=1 . voices%.N.%| 0000ace0 65 76 65 6e 74 25 28 76 6f 69 63 65 25 29 3d 70 |event%(voice%)=p| 0000acf0 31 25 21 28 28 76 6f 69 63 65 25 2d 31 29 2a 34 |1%!((voice%-1)*4| 0000ad00 29 0d 4e b6 05 ed 0d 4e c0 18 e3 20 76 6f 69 63 |).N....N... voic| 0000ad10 65 25 3d 31 20 b8 20 76 6f 69 63 65 73 25 0d 4e |e%=1 . voices%.N| 0000ad20 ca 17 21 70 32 25 3d 65 76 65 6e 74 25 28 76 6f |..!p2%=event%(vo| 0000ad30 69 63 65 25 29 0d 4e d4 11 e7 20 76 6f 69 63 65 |ice%).N... voice| 0000ad40 25 3d 76 25 20 8c 0d 4e de 0a 70 32 25 2b 3d 34 |%=v% ..N..p2%+=4| 0000ad50 0d 4e e8 0a 21 70 32 25 3d 30 0d 4e f2 05 cd 0d |.N..!p2%=0.N....| 0000ad60 4e fc 0a 70 32 25 2b 3d 34 0d 4f 06 05 ed 0d 4f |N..p2%+=4.O....O| 0000ad70 10 05 ed 0d 4f 1a 25 21 28 73 74 61 72 74 25 2d |....O.%!(start%-| 0000ad80 34 29 3d 21 28 73 74 61 72 74 25 2d 34 29 2b 28 |4)=!(start%-4)+(| 0000ad90 72 6f 77 73 25 2a 34 29 0d 4f 24 11 f2 72 65 61 |rows%*4).O$..rea| 0000ada0 64 70 61 74 74 65 72 6e 73 0d 4f 2e 05 ed 0d 4f |dpatterns.O....O| 0000adb0 38 11 21 6d 76 6f 78 61 64 64 72 25 2b 3d 31 0d |8.!mvoxaddr%+=1.| 0000adc0 4f 42 0d f2 6d 69 6e 69 6d 69 73 65 0d 4f 4c 23 |OB..minimise.OL#| 0000add0 f2 6d 61 6b 65 75 6e 73 65 6c 65 63 74 65 64 28 |.makeunselected(| 0000ade0 61 6d 65 6e 64 74 72 61 63 6b 25 2c 31 31 29 0d |amendtrack%,11).| 0000adf0 4f 56 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 |OV... "Hourglass| 0000ae00 5f 4f 66 66 22 0d 4f 60 11 f2 67 65 74 6d 75 73 |_Off".O`..getmus| 0000ae10 69 63 69 6e 66 6f 0d 4f 6a 0d f2 74 75 6e 65 69 |icinfo.Oj..tunei| 0000ae20 6e 66 6f 0d 4f 74 15 f2 69 6e 69 74 69 61 6c 69 |nfo.Ot..initiali| 0000ae30 73 65 76 6f 69 63 65 73 0d 4f 7e 11 6a 75 73 74 |sevoices.O~.just| 0000ae40 6c 6f 61 64 65 64 25 3d b9 0d 4f 88 05 e1 0d ff |loaded%=..O.....| 0000ae50