Home » Archimedes archive » Acorn User » AU 1998-02 A.adf » PDScheme » ArtToSpr/WavePlayer/!WavePlay/!RunImage
ArtToSpr/WavePlayer/!WavePlay/!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 1998-02 A.adf » PDScheme |
| Filename: | ArtToSpr/WavePlayer/!WavePlay/!RunImage |
| Read OK: | ✔ |
| File size: | 7DDE bytes |
| Load address: | 0000 |
| Exec address: | 0000 |
File contents
10REM >WavePlayer:!RunImage
11REM LEN 1997, Matthew Wilson of Paradise
40ONERRORERROREXTERR,"Error whilst initialising - "+REPORT$+" @ "+STR$(ERL)
60SYS&400C0,200,&4B534154,"Wave Player"TO,task%
80quit%=FALSE:pollfast%=0:quit_finish%=FALSE
90script_file%=0:script_adding%=FALSE:script_np%=0
100vidc_tv=1000000
110vidc_vga=1000000*25175/24000
120vidc_ms=1500000
140ispc%=4*1024
150DIMw_warn%(2)
160DIMsicon%64,caret%64
170DIMq%256,temp1%8*1024,temp2%8*1024,icons%ispc%
180!caret%=0
200PROCinit_iconbar
210PROCinit_sprites
220PROCinit_windows
230PROCinit_slider
240PROCinit_volume
250PROCinit_code
260PROCinit_menus
270PROCinit_vidc
290SYS&10TOenv$
300I%=INSTR(env$,"-file")
310IFI%=0THENI%=INSTR(env$,"-auto")
320IFI%>0THEN
330SYS&8,5,MID$(env$,I%+6)TOtype%,,load%
340IFtype%=2THEN
350q%!40=&1000
360ELSE
370q%!40=(load%AND&FFF00)>>8
380ENDIF
390PROCwimp_message_load(MID$(env$,I%+6))
400ENDIF
420PROCwind_opencentre(wind_info%)
430SYS&400D4,,wind_info%,temp1%!4,temp1%!16
440SYS&42TOinfo_c%
450info_c%+=1000
470SYS&406C2
490*Set WavePlayer$Running yes
510ONERRORPROCerror
530REPEAT
540IFpollfast%>0THEN
550pollfast%-=1
560SYS&400C7,,q%TOR%
570ELSE
580IFcode_status%=0THENdelay%=5ELSEdelay%=1000
590SYS&42TOtime%
600IFtime%>info_c%AND info_c%>0THENinfo_c%=-1:PROCwind_close(wind_info%)
610SYS&400E1,,q%,time%+delay%TOR%
620ENDIF
630IFslider_np%>0THEN
640slider_np%-=1
650IFslider_np%=0THENPROCcode_action(-1)
660ENDIF
670IFsetbuff_np%>0THEN
680setbuff_np%-=1:pollfast%+=1
690IFsetbuff_np%=0THEN
700A%=code_buffsize%:CALLcode_setbuff%
710CALLcode_final%
720CALLcode_init%
730ENDIF
740ENDIF
750IFscript_np%>0THEN
760script_np%-=1:pollfast%+=1
770IFscript_np%=0THEN
780PROCmisc_close(script_file%)
790script_adding%=FALSE
800REPEATUNTILNOTINKEY(-1)
810*Filer_Run <Wimp$ScrapDir>.WPScript
820ENDIF
830ENDIF
850CASER%OF
860WHEN0
870IFcode_status%=0AND slider_np%=0ANDNOTslider_d%ANDNOTvol_d%THEN
880opx%=slider_px%DIV2
890pos%=USR(code_readpos%)+code_counterpos%
900slider_px%=pos%/slider_s
910npx%=slider_px%DIV2
920IFopx%<>npx%THENPROCicon_update(wind_cont%,12)
930IFslider_px%>slider_sx%THEN
940IFquit_finish%THENquit%=TRUEELSEPROCcode_action(3)
950ENDIF
960ENDIF
970IFvol_d%AND(time%AND 3)=0THENPROCvolume_dragset(TRUE)
990WHEN1:PROCwimp_redraw(!q%)
1000WHEN2:SYS&400C5,,q%
1010WHEN3
1020SYS&400C6,,q%
1030IF!q%=wind_buff%OR!q%=wind_form%THENPROCcode_action(99)
1040IF!q%=wind_vol%OR!q%=wind_cont%THEN
1050PROCicon_select(wind_cont%,14,0)
1060PROCwind_close(wind_vol%)
1070ENDIF
1080IF!q%=wind_vidc%THENPROCicon_restorecaret
1100WHEN4:IF!q%=wind_info%THENSYS&400C6,,q%
1110WHEN6
1120IFq%!8=2THEN
1130PROCwimp_makemenu(q%!12,q%!16)
1140ELSE
1150PROCwimp_click(q%!12,q%!16,q%!8)
1160ENDIF
1180WHEN7:PROCwimp_enddrag
1190WHEN8
1200IF!q%=wind_vidc%AND q%!4=7THEN
1210wind%=wind_vidc%
1220PROCwimp_clickvidc(-1,4)
1230ENDIF
1240WHEN9:PROCwimp_menureply
1250WHEN17,18:PROCwimp_message(q%!16)
1260ENDCASE
1270UNTILquit%
1290skip%=FALSE
1300ONERRORskip%=TRUE
1320IFNOTskip%THEN
1330PROCcode_action(5)
1340CALLcode_final%
1350SYS&1E,7,,code%
1360PROCmisc_close(script_file%)
1370IFquit_finish%=-2THEN
1380SYS&42682
1390ENDIF
1400F%=OPENOUT("WavePlayer:!Options")
1410PRINT#F%,vidc
1420CLOSE#F%
1430ENDIF
1450*Unset WavePlayer$Running
1470END
1530DEFPROCinit_iconbar
1540temp1%!0=-1
1550temp1%!4=0
1560temp1%!8=0
1570temp1%!12=34*2
1580temp1%!16=17*4
1590temp1%!20=(&17<<24)OR(3<<12)OR%11010
1600$(temp1%+24)="!waveplay"+CHR$(0)
1610SYS&400C2,,temp1%TOibar1%
1630temp1%!0=-1
1640temp1%!4=0
1650temp1%!8=0
1660temp1%!12=18*2
1670temp1%!16=17*4
1680temp1%!20=(&17<<24)OR(3<<12)OR%11010
1690$(temp1%+24)="volume!"+CHR$(0)
1700SYS&400C2,,temp1%TOibar2%
1710ENDPROC
1750DEFPROCinit_sprites
1760LOCALlen%
1770SYS&8,5,"WavePlayer:Sprites"TO,,,,len%
1780DIMsprs%len%+16
1790sprs%!0=len%+16
1800sprs%!8=16
1810SYS&2E,&10A,sprs%,"WavePlayer:Sprites"
1820ENDPROC
1860DEFPROCinit_loadwindow(name$,RETURNwinhan%,sprs%)
1870SYS&400DB,,temp1%,free%,end%,-1,name$TO,,free%
1880temp1%!64=sprs%
1890SYS&400C1,,temp1%TOwinhan%
1900ENDPROC
1940DEFPROCinit_windows
1950LOCALN%
1960SYS&400D9,,"WavePlayer:Templates"
1970free%=icons%:end%=free%+ispc%
1980PROCinit_loadwindow("controls",wind_cont%,sprs%)
1990PROCinit_loadwindow("opts_buffer",wind_buff%,sprs%)
2000PROCinit_loadwindow("opts_format",wind_form%,sprs%)
2010PROCinit_loadwindow("info",wind_info%,sprs%)
2020PROCinit_loadwindow("volume",wind_vol%,sprs%)
2030PROCinit_loadwindow("vidcspeed",wind_vidc%,sprs%)
2050PROCinit_loadwindow("warn_1",w_warn%(0),sprs%)
2060PROCinit_loadwindow("warn_2",w_warn%(1),sprs%)
2070PROCinit_loadwindow("warn_3",w_warn%(2),sprs%)
2090SYS&400DA
2100ENDPROC
2140DEFPROCinit_menus
2150LOCALlen%
2160SYS&8,5,"WavePlayer:Menus"TO,,,,len%
2170DIMmenus%len%
2180IFmenus%<=0THEN
2190ERROREXTERR,"Not enough memory to start up (menus)"
2200ENDIF
2210SYS&8,&FF,"WavePlayer:Menus",menus%
2220menu_ib%=menus%+0
2230menu_bits%=menus%+256
2240menu_type%=menus%+512
2250ENDPROC
2290DEFPROCinit_slider
2300sicon%!0=wind_cont%:sicon%!4=12
2310SYS&400CE,,sicon%
2320slider_x%=sicon%!8
2330slider_y%=sicon%!20-32
2340slider_sx%=sicon%!16-slider_x%-64
2350slider_px%=0
2360slider_d%=FALSE
2370slider_s=1
2380slider_np%=0
2400temp1%!0=wind_cont%:temp1%!4=7
2410SYS&400C4,,temp1%
2420ENDPROC
2460DEFPROCinit_volume
2470LOCALV%
2480temp1%!0=wind_vol%:temp1%!4=2
2490SYS&400CE,,temp1%
2500vol_x%=temp1%!8
2510vol_y%=temp1%!12
2520vol_size%=temp1%!20-vol_y%-48
2530vol_d%=FALSE
2550temp1%!0=wind_vol%:temp1%!4=1
2560SYS&400C4,,temp1%
2570ENDPROC
2610DEFPROCinit_code
2620LOCALlen%
2630SYS&8,5,"WavePlayer:Code"TO,,,,len%
2640SYS&1E,6,,,len%TO,,code%
2650SYS&8,&FF,"WavePlayer:Code",code%
2660code_init%=code%+0
2670code_final%=code%+4
2680code_open%=code%+8
2690code_close%=code%+12
2700code_restart%=code%+16
2710code_pause%=code%+20
2720code_unpause%=code%+24
2730code_setbuff%=code%+28
2740code_readpos%=code%+32
2760code_status%=-1
2770code_loaded%=FALSE
2780code_file%=0
2790code_buffsize%=63*1024
2800setbuff_np%=0
2810PROCcode_action(5)
2820A%=code_buffsize%:CALLcode_setbuff%
2830CALLcode_init%
2840ENDPROC
2880DEFPROCinit_vidc
2890LOCALF%
2900F%=OPENIN("WavePlayer:!Options")
2910IFF%=0THEN
2920F%=OPENOUT("WavePlayer:!Options")
2930vidc=1000000
2940PRINT#F%,vidc
2950ELSE
2960INPUT#F%,vidc
2970ENDIF
2980CLOSE#F%
2990CASEvidcOF
3000WHENvidc_tv:PROCicon_select(wind_vidc%,2,1)
3010WHENvidc_vga:PROCicon_select(wind_vidc%,3,1)
3020WHENvidc_ms:PROCicon_select(wind_vidc%,4,1)
3030OTHERWISE
3040PROCicon_select(wind_vidc%,5,1)
3050PROCicon_text(wind_vidc%,7,STR$(INT(.5+24000*vidc/1E6)))
3060ENDCASE
3070ENDPROC
3130DEFFNmisc_findfile(dir$,RETURNN%)
3140LOCALR%
3150SYS&2000C,10,dir$,temp1%,1,N%,256,"*"TO,,,R%,N%
3160IFR%<>1THEN=""
3170IFtemp1%!16<>1THEN=FNmisc_findfile(dir$,N%)
3180=FNmisc_str(temp1%+20)
3220DEFPROCmisc_poll(RETURNR%)
3230LOCALmore%
3240SYS&400C7,,temp2%TOR%
3250CASER%OF
3260WHEN1
3270SYS&400C8,,temp2%TOmore%
3280WHILEmore%
3290SYS&400CA,,temp2%TOmore%
3300ENDWHILE
3310WHEN17,18:IFtemp2%!16=0THENquit%=TRUE
3320ENDCASE
3330ENDPROC
3370DEFFNmisc_str(adr%)
3380LOCALstr$
3390SYS256,adr%TOstr$
3400=str$
3440DEFFNmisc_leaf(fn$)
3450LOCALI%
3460WHILEINSTR(fn$,".")>0ORINSTR(fn$,":")>0
3470I%=INSTR(fn$,"."):IFI%>0THENfn$=MID$(fn$,I%+1)
3480I%=INSTR(fn$,":"):IFI%>0THENfn$=MID$(fn$,I%+1)
3490ENDWHILE
3500I%=INSTR(fn$," -")
3510IFI%>0THENfn$=LEFT$(fn$,I%)
3520=fn$
3560DEFFNmisc_numstr(num)
3570LOCALstr$,I%
3580str$=STR$(num):I%=INSTR(str$,".")
3590IFI%THENMID$(str$,I%,1)="�"
3600=str$
3640DEFPROCmisc_close(RETURNhandle%)
3650IFhandle%<>0THENSYS&2000D,0,handle%
3660handle%=0
3670ENDPROC
3710DEFFNmisc_realpath(path$)
3720LOCALF%,npath$
3730?temp1%=0
3740SYS&29,&25,path$,temp1%,,,255TO,,npath$;F%
3750IFF%AND 1THENnpath$=path$
3760=npath$
3800DEFFNmisc_path(fn$)
3810LOCALI%,F$
3820F$=fn$
3830REPEAT
3840I%=INSTR(fn$,".")
3850IFI%>0THENfn$=MID$(fn$,I%+1)
3860UNTILI%=0
3870=LEFT$(F$,LEN(F$)-LEN(fn$)-1)
3930DEFPROCwind_opentop(winhan%)
3940!temp1%=winhan%
3950SYS&400CB,,temp1%
3960temp1%!28=-1
3970SYS&400C5,,temp1%
3980ENDPROC
4020DEFPROCwind_opencentre(winhan%)
4030LOCALx%,a%,y%,b%,sx%,sy%
4040SYS&35,MODE,4TO,,a%
4050SYS&35,MODE,5TO,,b%
4060SYS&35,MODE,11TO,,x%
4070SYS&35,MODE,12TO,,y%
4080x%=x%<<a%:y%=y%<<b%
4090!temp1%=winhan%
4100SYS&400CB,,temp1%
4110sx%=temp1%!12-temp1%!4
4120sy%=temp1%!16-temp1%!8
4130temp1%!4=(x%-sx%)/2:temp1%!8=(y%-sy%)/2
4140temp1%!12=(x%+sx%)/2:temp1%!16=(y%+sy%)/2
4150temp1%!28=-1
4160SYS&400C5,,temp1%
4170ENDPROC
4210DEFPROCwind_openhere(winhan%)
4220LOCALx%,y%,b%,sx%,sy%
4230MOUSEx%,y%,b%
4240!temp1%=winhan%
4250SYS&400CB,,temp1%
4260sx%=(temp1%!12-temp1%!4)
4270sy%=(temp1%!16-temp1%!8)
4280temp1%!4=x%-sx%/2
4290temp1%!8=y%-sy%*2/3
4300temp1%!12=x%+sx%/2
4310temp1%!16=y%+sy%/3
4320temp1%!28=-1
4330SYS&400C5,,temp1%
4340ENDPROC
4380DEFPROCwind_openover(old%,new%)
4390!temp1%=old%
4400SYS&400CB,,temp1%
4410SYS&400C6,,temp1%
4420!temp1%=new%
4430SYS&400C5,,temp1%
4440ENDPROC
4480DEFPROCwind_close(winhan%)
4490!temp1%=winhan%
4500SYS&400C6,,temp1%
4510ENDPROC
4570DEFPROCicon_select(win%,icon%,state%)
4580LOCALeor%,bic%
4590bic%=1
4600eor%=-(state%<>0)
4610IFstate%=2THENbic%=0:eor%=1
4620temp1%!0=win%
4630temp1%!4=icon%
4640temp1%!8=eor%<<21
4650temp1%!12=bic%<<21
4660SYS&400CD,,temp1%
4670ENDPROC
4710DEFFNicon_select(win%,icon%)
4720LOCALstate%
4730temp1%!0=win%
4740temp1%!4=icon%
4750SYS&400CE,,temp1%
4760=(temp1%!24AND(1<<21))>>21
4800DEFPROCicon_text(win%,icon%,text$)
4810temp1%!0=win%
4820temp1%!4=icon%
4830SYS&400CE,,temp1%
4840IF(temp1%!24AND(1<<8))=0THENENDPROC
4850$(temp1%!28)=LEFT$(text$,temp1%!36-1)
4870temp1%!0=win%
4880temp1%!4=icon%
4890temp1%!8=0
4900temp1%!12=0
4910SYS&400CD,,temp1%
4920ENDPROC
4960DEFFNicon_text(win%,icon%)
4970temp1%!0=win%
4980temp1%!4=icon%
4990SYS&400CE,,temp1%
5000=FNmisc_str(temp1%!28)
5040DEFFNicon_eval(win%,icon%)
5050LOCALstr$,num
5060temp1%!0=win%
5070temp1%!4=icon%
5080SYS&400CE,,temp1%
5090str$=FNmisc_str(temp1%!28)
5100LOCALERROR
5110ONERRORLOCALRESTOREERROR:=0
5120num=EVAL(str$)
5130RESTOREERROR
5140=num
5180DEFPROCicon_val(win%,icon%,val$,update%)
5190temp1%!0=win%
5200temp1%!4=icon%
5210SYS&400CE,,temp1%
5220IF(temp1%!24AND(1<<8))=0THENENDPROC
5230$(temp1%!32)=val$
5240IFupdate%=0THENENDPROC
5260temp1%!0=win%
5270temp1%!4=icon%
5280temp1%!8=0
5290temp1%!12=0
5300SYS&400CD,,temp1%
5310ENDPROC
5350DEFPROCicon_update(win%,icon%)
5360temp1%!0=win%
5370temp1%!4=icon%
5380temp1%!8=0
5390temp1%!12=0
5400SYS&400CD,,temp1%
5410ENDPROC
5450DEFPROCicon_clearall(win%)
5460LOCALN%
5470SYS&400D6,win%,temp2%,1<<21,1<<21
5480N%=temp2%
5490WHILE!N%>-1
5500PROCicon_select(win%,!N%,0)
5510N%+=4
5520ENDWHILE
5530ENDPROC
5570DEFPROCicon_selectall(win%)
5580LOCALN%
5590SYS&400D6,win%,temp2%,1<<21,0<<21
5600N%=temp2%
5610WHILE!N%>-1
5620PROCicon_select(win%,!N%,1)
5630N%+=4
5640ENDWHILE
5650ENDPROC
5690DEFFNicon_nextsel(win%)
5700SYS&400D6,win%,temp2%,1<<21,1<<21
5710=!temp2%
5750DEFPROCicon_pos(win%,icon%,RETURNminx%,RETURNminy%,RETURNmaxx%,RETURNmaxy%,loc%)
5760LOCALx%,y%
5770IFloc%=0THEN
5780loc%=temp1%:loc%!0=win%
5790SYS&400CB,,loc%
5800ENDIF
5810x%=loc%!4-loc%!20:y%=loc%!16-loc%!24
5820temp1%!0=win%
5830temp1%!4=icon%
5840SYS&400CE,,temp1%
5850temp1%!8+=x%:temp1%!16+=x%
5860temp1%!12+=y%:temp1%!20+=y%
5870minx%=temp1%!8:miny%=temp1%!12
5880maxx%=temp1%!16:maxy%=temp1%!20
5890ENDPROC
5930DEFPROCicon_setcaret(win%,icon%,pos%)
5940IFpos%<0THEN
5950temp1%!0=win%:temp1%!4=icon%
5960SYS&400CE,,temp1%
5970pos%=LEN(FNmisc_str(temp1%!28))
5980ENDIF
5990SYS&400D2,win%,icon%,-1,-1,-1,pos%
6000ENDPROC
6040DEFPROCicon_storecaret(win%,icon%,pos%)
6050IFpos%<0THEN
6060temp1%!0=win%:temp1%!4=icon%
6070SYS&400CE,,temp1%
6080pos%=LEN(FNmisc_str(temp1%!28))
6090ENDIF
6100SYS&400D3,,caret%
6110SYS&400D2,win%,icon%,-1,-1,-1,pos%
6120ENDPROC
6160DEFPROCicon_restorecaret
6170IFcaret%!0<>0THENSYS&600D2,caret%!0,caret%!4,caret%!8,caret%!12,caret%!16,caret%!20
6180caret%!0=0
6190ENDPROC
6250DEFFNwarn_message(messcode%)
6260LOCALtype%,s1%,s2%,s3%,s1$,s2$,s3$,mess$,ret%,esc%
6270CASEmesscode%OF
6280WHEN0
6290mess$="Drag a sample file or a script file to the Wave Player icon to begin playing"
6300s1$="OK":s1%=ASC"O"
6310type%=1:ret%=1:esc%=1
6330WHEN1
6340mess$="There is a sample still playing - are you sure you want to quit, or do you want to wait until the sample has finished?"
6350s1$="Continue":s1%=ASC"C"
6360s2$="Wait":s2%=ASC"W"
6370s3$="Quit":s3%=ASC"Q"
6380type%=3:ret%=1:esc%=2
6400WHEN2
6410mess$="This storage media is very slow, and so playing the sample could halt the whole machine. Hold down Control and Escape if this happens"
6420s1$="Stop":s1%=ASC"S"
6430s2$="Play":s2%=ASC"P"
6440type%=2:ret%=1:esc%=1
6460WHEN3
6470mess$="StrongHelp has been located, but the help files have not been installed, or have been deleted. Run the help file installation program provided in the 'Help' directory."
6480s1$="OK":s1%=ASC"O"
6490type%=1:ret%=1:esc%=1
6510WHEN4
6520mess$="StrongHelp cannot be located, but the help files have been installed. Try opening the filer window containing the application '!StrongHlp'."
6530s1$="OK":s1%=ASC"O"
6540type%=1:ret%=1:esc%=1
6560WHEN5
6570mess$="The installation of the StrongHelp help files has been reported to have failed or aborted. Try re-running 'Install' provided in the 'Help' directory."
6580s1$="OK":s1%=ASC"O"
6590type%=1:ret%=1:esc%=1
6610WHEN6
6620mess$="The installation of the StrongHelp help files has previously failed. However, the help files seem to be present - do you want to try to start StrongHelp?"
6630s1$="Start":s1%=ASC"S"
6640s2$="Cancel":s2%=ASC"C"
6650type%=2:ret%=1:esc%=2
6670WHEN7
6680mess$="This storage media may be too slow, and so playing the sample could halt the whole machine, or make it very slow. Hold down Control and Escape if this happens"
6690s1$="Stop":s1%=ASC"S"
6700s2$="Play":s2%=ASC"P"
6710type%=2:ret%=1:esc%=1
6730WHEN8
6740mess$="To access the help, please look in the directory 'Help.TextHelp'"
6750s1$="OK":s1%=ASC"O"
6760type%=1:ret%=1:esc%=1
6780WHEN9
6790mess$="This sample does not appear to be "+type$+" file."
6800s1$="OK":s1%=ASC"O"
6810type%=1:ret%=1:esc%=1
6830WHEN254
6840mess$="External error - "+REPORT$+" @ "+STR$(ERL)
6850s1$="Continue":s1%=ASC"C":s2$="Quit":s2%=ASC"Q"
6860type%=2:ret%=1:esc%=2
6870WHEN255
6880mess$="Program error - "+REPORT$+" @ "+STR$(ERL)
6890s1$="Continue":s1%=ASC"C":s2$="Quit":s2%=ASC"Q"
6900type%=2:ret%=1:esc%=2
6910ENDCASE
6920CASEtype%OF
6930WHEN1:=FNwarn_1(mess$,s1$,s1%,ret%,esc%)
6940WHEN2:=FNwarn_2(mess$,s1$,s1%,s2$,s2%,ret%,esc%)
6950WHEN3:=FNwarn_3(mess$,s1$,s1%,s2$,s2%,s3$,s3%,ret%,esc%)
6960ENDCASE
6970=0
7010DEFFNwarn_1(str$,s1$,s1%,ret%,esc%)
7020LOCALW%,R%,S%
7030W%=w_warn%(0)
7040PROCicon_text(W%,0,str$)
7050PROCicon_text(W%,1,s1$)
7060FORS%=15TO1STEP-1
7070PROCmisc_poll(R%)
7080NEXT
7090PROCwind_opencentre(W%)
7100SYS&400D3,,temp1%
7110SYS&400D2,W%,-1,20,20,-1,-1
7120REPEAT
7130PROCmisc_poll(R%)
7140IF(R%=6AND temp2%!12=W%AND temp2%!8<>2)THENS%=temp2%!16
7150IF(R%=8AND(temp2%!24AND 223)=s1%)THENS%=1
7160IF(R%=8AND temp2%!24=&0D)THENS%=ret%
7170IF(R%=8AND temp2%!24=&1B)THENS%=esc%
7180IFS%<0THENS%=0
7190IFS%=0AND(R%=2ORR%=3ORR%=6ORR%=8)THENVDU7
7200UNTILS%ORquit%
7210IFquit%THEN=0
7220SYS&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
7230IFR%<>6THENPROCicon_select(W%,S%,1)
7240PROCwind_close(W%)
7250PROCicon_select(W%,S%,0)
7260=S%
7300DEFFNwarn_2(str$,s1$,s1%,s2$,s2%,ret%,esc%)
7310LOCALW%,R%,S%
7320W%=w_warn%(1)
7330PROCicon_text(W%,0,str$)
7340PROCicon_text(W%,1,s1$)
7350PROCicon_text(W%,2,s2$)
7360FORS%=15TO1STEP-1
7370PROCmisc_poll(R%)
7380NEXT
7390PROCwind_opencentre(W%)
7400SYS&400D3,,temp1%
7410SYS&400D2,W%,-1,20,20,-1,-1
7420REPEAT
7430PROCmisc_poll(R%)
7440IF(R%=6AND temp2%!12=W%AND temp2%!8<>2)THENS%=temp2%!16
7450IF(R%=8AND(temp2%!24AND 223)=s1%)THENS%=1
7460IF(R%=8AND(temp2%!24AND 223)=s2%)THENS%=2
7470IF(R%=8AND temp2%!24=&0D)THENS%=ret%
7480IF(R%=8AND temp2%!24=&1B)THENS%=esc%
7490IFS%<0THENS%=0
7500IFS%=0AND(R%=2ORR%=3ORR%=6ORR%=8)THENVDU7
7510IFINKEY(-99)ANDINKEY(-2)THENEND
7520UNTILS%ORquit%
7530IFquit%THEN=0
7540SYS&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
7550IFR%<>6THENPROCicon_select(W%,S%,1)
7560PROCwind_close(W%)
7570PROCicon_select(W%,S%,0)
7580=S%
7620DEFFNwarn_3(str$,s1$,s1%,s2$,s2%,s3$,s3%,ret%,esc%)
7630LOCALW%,R%,S%
7640W%=w_warn%(2)
7650PROCicon_text(W%,0,str$)
7660PROCicon_text(W%,1,s1$)
7670PROCicon_text(W%,2,s2$)
7680PROCicon_text(W%,3,s3$)
7690FORS%=15TO1STEP-1
7700PROCmisc_poll(R%)
7710NEXT
7720PROCwind_opencentre(W%)
7730SYS&400D3,,temp1%
7740SYS&400D2,W%,-1,20,20,-1,-1
7750REPEAT
7760PROCmisc_poll(R%)
7770IF(R%=6AND temp2%!12=W%AND temp2%!8<>2)THENS%=temp2%!16
7780IF(R%=8AND(temp2%!24AND 223)=s1%)THENS%=1
7790IF(R%=8AND(temp2%!24AND 223)=s2%)THENS%=2
7800IF(R%=8AND(temp2%!24AND 223)=s3%)THENS%=3
7810IF(R%=8AND temp2%!24=&0D)THENS%=ret%
7820IF(R%=8AND temp2%!24=&1B)THENS%=esc%
7830IFS%<0THENS%=0
7840IFS%=0AND(R%=2ORR%=3ORR%=6ORR%=8)THENVDU7
7850UNTILS%ORquit%
7860IFquit%THEN=0
7870SYS&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
7880IFR%<>6THENPROCicon_select(W%,S%,1)
7890PROCwind_close(W%)
7900PROCicon_select(W%,S%,0)
7910=S%
7970DEFPROCdrag_solid(win%,icon%,sprite$,sprs%)
7980LOCALx%,y%
8000temp1%!0=win%
8010SYS&400CB,,temp1%
8020x%=temp1%!4-temp1%!20:y%=temp1%!16-temp1%!24
8030temp1%!4=icon%
8040SYS&400CE,,temp1%
8050temp1%!8+=x%:temp1%!16+=x%
8060temp1%!12+=y%:temp1%!20+=y%
8070temp1%!24=0:temp1%!28=0
8080temp1%!32=&7FFFFFFF:temp1%!36=&7FFFFFFF
8090SYS&6,1,1
8100SYS&42400,&01,sprs%,sprite$,temp1%+8,temp1%+24
8110ENDPROC
8150DEFPROCdrag_slider(win%,parent%,cx%,cy%,csx%,csy%,sprite$,sprs%)
8160LOCALx%,y%,px1%,py1%,px2%,py2%
8180temp1%!0=win%
8190SYS&400CB,,temp1%
8200x%=temp1%!4-temp1%!20:y%=temp1%!16-temp1%!24
8220temp1%!4=parent%
8230SYS&400CE,,temp1%
8240px1%=temp1%!8+x%+4:py1%=temp1%!12+y%+4
8250px2%=temp1%!16+x%-4:py2%=temp1%!20+y%-4
8270temp1%!8=x%+cx%:temp1%!16=x%+cx%+csx%
8280temp1%!12=y%+cy%:temp1%!20=y%+cy%+csy%
8290temp1%!24=px1%:temp1%!28=py1%
8300temp1%!32=px2%:temp1%!36=py2%
8320SYS&6,1,1
8330SYS&42400,&20,sprs%,sprite$,temp1%+8,temp1%+24
8340ENDPROC
8400DEFPROCwimp_redraw(wind%)
8410LOCALmore%,draw%
8430SYS&400C8,,q%TOmore%
8450IFwind%=wind_cont%THEN
8460draw%=NOTslider_d%
8470temp1%!0=slider_px%+slider_x%
8480temp1%!4=slider_y%
8490temp1%!8=temp1%!0+64
8500temp1%!12=temp1%!4+32
8510temp1%!16=&102
8520temp1%!20=temp1%+64
8530temp1%!24=sprs%
8540temp1%!28=12
8550$(temp1%+64)="slider"+CHR$(0)
8560ENDIF
8570IFwind%=wind_vol%THEN
8580draw%=NOTvol_d%
8590temp1%!0=vol_x%
8600temp1%!4=vol_y%+vol_pos
8610temp1%!8=vol_x%+32
8620temp1%!12=vol_y%+vol_pos+48
8630temp1%!16=&102
8640temp1%!20=temp1%+64
8650temp1%!24=sprs%
8660temp1%!28=12
8670$(temp1%+64)="vslider"+CHR$(0)
8680ENDIF
8700WHILEmore%
8710IFdraw%THENSYS&400E2,,temp1%
8720SYS&400CA,,q%TOmore%
8730ENDWHILE
8740ENDPROC
8780DEFPROCwimp_click(wind%,icon%,butt%)
8790CASEwind%OF
8800WHEN-2:PROCwimp_clickibar(icon%)
8810WHENwind_cont%:PROCwimp_clickcont(icon%,butt%)
8820WHENwind_buff%:PROCwimp_clickbuff(icon%,butt%)
8830WHENwind_form%:PROCwimp_clickform(icon%,butt%)
8840WHENwind_info%:PROCwind_close(wind%)
8850WHENwind_vol%:PROCwimp_clickvol(icon%,butt%)
8860WHENwind_vidc%:PROCwimp_clickvidc(icon%,butt%)
8870ENDCASE
8880ENDPROC
8920DEFPROCwimp_clickibar(icon%)
8930LOCALx%,y%
8940CASEicon%OF
8950WHENibar1%
8960IFcode_loaded%THEN
8970PROCwind_opentop(wind_cont%)
8980ELSE
8990W%=FNwarn_message(0)
9000ENDIF
9010WHENibar2%
9020PROCvolume_getstate
9030!temp1%=wind_vol%:SYS&400CB,,temp1%
9040x%=q%!0-(temp1%!12-temp1%!4)/2
9050y%=96+(temp1%!16-temp1%!8)
9060SYS&400D4,,wind_vol%,x%,y%
9070ENDCASE
9080ENDPROC
9120DEFPROCwimp_clickcont(icon%,butt%)
9130LOCALx%,sx%,sy%,old%
9140PROCwind_opentop(wind%)
9150CASEicon%OF
9160WHEN0,3,4,5:PROCcode_action(icon%)
9180WHEN1
9190IFslider_px%>=8THENslider_px%-=8ELSEslider_px%=0
9200PROCicon_update(wind%,12)
9210slider_np%=10
9230WHEN2
9240IFslider_px%<=slider_sx%-8THEN
9250slider_px%+=8
9260ELSE
9270slider_px%=slider_sx%
9280ENDIF
9290PROCicon_update(wind%,12)
9300slider_np%=10
9320WHEN6,12
9330IFcode_status%=4THEN
9340old%=slider_px%
9350PROCcode_action(3)
9360slider_px%=old%
9370ENDIF
9380temp1%!0=wind%
9390SYS&400CB,,temp1%
9400x%=q%!0-temp1%!4-slider_px%-slider_x%
9410IFx%<0ORx%>=64THEN
9420slider_px%+=x%-32
9430IFslider_px%<0THENslider_px%=0
9440IFslider_px%>slider_sx%THENslider_px%=slider_sx%
9450ENDIF
9460PROCicon_update(wind%,12)
9470PROCdrag_slider(wind%,6,slider_x%+slider_px%,slider_y%,64,32,"pslider",sprs%)
9480slider_d%=TRUE
9490slider_dx%=q%!0
9510WHEN14
9520IFFNicon_select(wind%,14)THEN
9530PROCwind_close(wind_vol%)
9540PROCicon_select(wind%,14,0)
9550ELSE
9560!temp1%=wind_vol%:SYS&400CB,,temp1%
9570!temp2%=wind%:SYS&400CB,,temp2%
9580sx%=temp1%!12-temp1%!4:sy%=temp1%!16-temp1%!8
9590temp1%!4=temp2%!12+2:temp1%!8=temp2%!16-sy%
9600temp1%!12=temp1%!4+sx%:temp1%!16=temp2%!16
9610temp1%!28=-1
9620SYS&400C5,,temp1%
9630PROCicon_select(wind%,14,1)
9640ENDIF
9650ENDCASE
9660ENDPROC
9700DEFPROCwimp_clickbuff(icon%,butt%)
9710LOCAL@%,step%,time%,himem%,nt%,speed,x%,y%,z%
9720CASEicon%OF
9730WHEN6
9740step%=-1+7*INKEY(-1)
9750code_buffsize%=1024*(step%+code_buffsize%DIV1024)
9760IFcode_buffsize%<8*1024THENcode_buffsize%=8*1024
9770@%="+f10.3"
9780PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
9790setbuff_np%=2
9810WHEN7
9820step%=1-7*INKEY(-1)
9830code_buffsize%=1024*(step%+code_buffsize%DIV1024)
9840@%="+f10.3"
9850PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
9860setbuff_np%=2
9880WHEN8
9890code_buffsize%=vidc/D%
9900IFC%AND%1000THENcode_buffsize%+=code_buffsize%
9910IFC%AND%0001THENcode_buffsize%+=code_buffsize%
9920@%="+f10.3"
9930PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
9940setbuff_np%=2
9960WHEN9
9970code_buffsize%=2*vidc/D%
9980IFC%AND%1000THENcode_buffsize%+=code_buffsize%
9990IFC%AND%0001THENcode_buffsize%+=code_buffsize%
10000@%="+f10.3"
10010PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
10020setbuff_np%=2
10040WHEN10,11
10050IFicon%=10THENtime%=10ELSEtime%=50
10060himem%=HIMEM
10070END=himem%+130*1024
10080TIME=0
10090SYS&C,3,code_file%,himem%,128*1024,0TO,,,nt%
10100IFTIME=0THENTIME=1
10110speed=TIME/(128*1024-nt%)
10120END=himem%
10130code_buffsize%=256*((time%/speed)DIV256)
10140@%="+f10.3"
10150PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
10160setbuff_np%=2
10180WHEN16:PROCwind_openover(wind_buff%,wind_form%)
10190WHEN17
10200PROCwind_close(wind_form%)
10210PROCwind_close(wind_buff%)
10220PROCcode_action(99)
10230WHEN18:PROCcode_beginplay(TRUE)
10240WHEN19:PROCcode_beginplay(FALSE)
10260WHEN20
10270PROCicon_pos(wind%,20,z%,z%,x%,y%,0)
10280SYS&400D4,,menu_type%,x%,y%
10290menu_c%=menu_type%
10310ENDCASE
10320ENDPROC
10360DEFPROCwimp_clickform(icon%,butt%)
10370LOCALx%,y%,z%,step%
10380CASEicon%OF
10390WHEN6
10400PROCicon_pos(wind%,6,z%,z%,x%,y%,0)
10410SYS&400D4,,menu_bits%,x%,y%
10420menu_c%=menu_bits%
10440WHEN8,9
10450step%=1-7*INKEY(-1)
10460D%-=(icon%*2-17)*step%
10470IFD%<10THEND%=10
10480IFD%>200THEND%=200
10490@%="+g10.9"
10500PROCicon_text(wind%,7,STR$(vidcDIVD%)+" Hz")
10520WHEN10,11
10530C%=(C%AND%1011)OR((icon%-10)<<2)
10540PROCicon_select(wind%,10,(icon%=10)AND 1)
10550PROCicon_select(wind%,11,(icon%=11)AND 1)
10570WHEN12,13
10580C%=(C%AND%1101)OR((icon%-12)<<1)
10590PROCicon_select(wind%,12,(icon%=12)AND 1)
10600PROCicon_select(wind%,13,(icon%=13)AND 1)
10620WHEN14,15
10630C%=(C%AND%1110)OR((icon%-14)<<0)
10640PROCicon_select(wind%,14,(icon%=14)AND 1)
10650PROCicon_select(wind%,15,(icon%=15)AND 1)
10670WHEN16:PROCwind_openover(wind_form%,wind_buff%)
10680WHEN17
10690PROCwind_close(wind_form%)
10700PROCwind_close(wind_buff%)
10710PROCcode_action(99)
10720WHEN18:PROCcode_beginplay(TRUE)
10730WHEN19:PROCcode_beginplay(FALSE)
10750WHEN20
10760PROCicon_pos(wind%,20,z%,z%,x%,y%,0)
10770SYS&400D4,,menu_type%,x%,y%
10780menu_c%=menu_type%
10800ENDCASE
10810ENDPROC
10850DEFPROCwimp_clickvol(icon%,but%)
10860CASEicon%OF
10870WHEN9
10880IFFNicon_select(wind%,9)THEN
10890PROCvolume_set
10900ELSE
10910SYS&40180,1
10920ENDIF
10940WHEN10:SYS&40143,FNicon_select(wind%,10)+1
10950ENDCASE
10970IFicon%<>2THENENDPROC
10990LOCALy%
11000temp1%!0=wind%
11010SYS&400CB,,temp1%
11020y%=q%!4-temp1%!16-vol_y%-vol_pos
11030IFy%<0ORy%>=48THEN
11040vol_pos+=y%-24
11050IFvol_pos<0THENvol_pos=0
11060IFvol_pos>vol_size%THENvol_pos=vol_size%
11070ENDIF
11080PROCicon_update(wind%,2)
11090PROCdrag_slider(wind%,0,vol_x%,vol_y%+vol_pos,32,48,"pvslider",sprs%)
11100vol_d%=TRUE
11110vol_dy%=q%!4
11120ENDPROC
11160DEFPROCwimp_clickvidc(icon%,butt%)
11170CASEicon%OF
11180WHEN2:vidc=vidc_tv:PROCicon_restorecaret
11190WHEN3:vidc=vidc_vga:PROCicon_restorecaret
11200WHEN4:vidc=vidc_ms:PROCicon_restorecaret
11210WHEN5
11220vidc=FNicon_eval(wind%,7)/0.024
11230PROCicon_storecaret(wind%,7,-1)
11240WHEN-1
11250vidc=FNicon_eval(wind%,7)/0.024
11260PROCicon_restorecaret
11270icon%=5
11280ENDCASE
11290PROCicon_clearall(wind%)
11300PROCicon_select(wind%,icon%,1)
11310ENDPROC
11350DEFPROCwimp_makemenu(wind%,icon%)
11360CASEwind%OF
11370WHEN-2
11380SYS&400D4,,menu_ib%,q%!0-64,274
11390menu_c%=menu_ib%
11400WHENwind_cont%
11410WHENwind_buff%
11420WHENwind_form%
11430ENDCASE
11440ENDPROC
11480DEFPROCwimp_enddrag
11490LOCALV%
11500IFslider_d%THEN
11510slider_d%=FALSE
11520SYS&400CF,,temp1%
11530slider_px%+=temp1%!0-slider_dx%
11540PROCicon_update(wind_cont%,12)
11550slider_np%=2
11560ENDIF
11580IFvol_d%THEN
11590vol_d%=FALSE
11600PROCvolume_dragset(FALSE)
11610ENDIF
11620ENDPROC
11660DEFPROCwimp_menureply
11670CASEmenu_c%OF
11680WHENmenu_ib%:PROCwimp_menureply_ib
11690WHENmenu_bits%:PROCwimp_menureply_bits
11700WHENmenu_type%:PROCwimp_menureply_type
11710ENDCASE
11720ENDPROC
11760DEFPROCwimp_menureply_ib
11770CASE!q%OF
11780WHEN0:PROCwind_opencentre(wind_info%)
11790WHEN1:PROChelp
11800WHEN2:PROCwind_opencentre(wind_vidc%)
11810WHEN3:quit%=FNwimp_prequit
11820ENDCASE
11830ENDPROC
11870DEFPROCwimp_menureply_bits
11880IF!q%=1THEN
11890C%=C%OR%1000
11900PROCicon_text(wind_form%,5,"16 bits")
11910ELSE
11920C%=C%AND%0111
11930PROCicon_text(wind_form%,5,"8 bits")
11940ENDIF
11950ENDPROC
11990DEFPROCwimp_menureply_type
12000LOCALtype$
12010CASE!q%OF
12020WHEN0:W%=FNcode_type_D3C:type$="an Armadeus"
12030WHEN1:W%=FNcode_type_ED0:type$="a DS Edit"
12040WHEN2:W%=FNcode_type_CB5:type$="a Desktop Tracker or Tracker"
12050WHEN3:W%=FNcode_type_FB1:type$="an MS WAV"
12060WHEN4:W%=FNcode_type_38D:type$="a SuperSonic"
12070ENDCASE
12080IFW%=TRUETHENPROCcode_fillinfoELSEW%=FNwarn_message(9)
12090ENDPROC
12130DEFPROCwimp_message(mc%)
12140LOCALshutdown%
12150CASEmc%OF
12160WHEN0:quit%=TRUE
12170WHEN3:PROCwimp_message_load(FNmisc_str(q%+44))
12180WHEN5
12190IFq%!40=&FB1ORq%!40=&D3CORq%!40=&CB5ORq%!40=&38DTHEN
12200q%!12=q%!8
12210SYS&400E7,17,q%,q%!4
12220PROCcode_load(FNmisc_str(q%+44))
12230ENDIF
12240IFq%!40=&0F0THEN
12250q%!12=q%!8
12260SYS&400E7,17,q%,q%!4
12270PROCwimp_message_load(FNmisc_str(q%+44))
12280ENDIF
12300WHEN8
12310shutdown%=q%!20
12320q%!12=q%!8
12330SYS&400E7,17,q%,q%!4
12340IFFNwimp_prequitTHEN
12350quit%=TRUE
12360IFshutdown%=0THENSYS&42682
12370ENDIF
12380IFquit_finish%AND shutdown%=0THENquit_finish%=-2
12390ENDCASE
12400ENDPROC
12440DEFPROCwimp_message_load(fn$)
12450LOCALt$,N%
12460CASEq%!40OF
12470WHEN&0F0
12480PROCmisc_close(script_file%)
12490script_file%=OPENIN(fn$)
12500script_fn$=fn$
12510IFEXT#script_file%>0THEN
12520PROCcode_load(GET$#script_file%)
12530ELSE
12540PROCmisc_close(script_file%)
12550ENDIF
12570WHEN&1000
12580PROCmisc_close(script_file%)
12590SYS&406C3,1
12600script_fn$="<Wimp$ScrapDir>.WPScript"
12610script_file%=OPENOUT(script_fn$)
12620N%=0
12630REPEAT
12640t$=FNmisc_findfile(fn$,N%)
12650IFt$<>""THENBPUT#script_file%,fn$+"."+t$
12660UNTILt$=""
12670PROCmisc_close(script_file%)
12680q%!40=&0F0
12690PROCwimp_message_load(script_fn$)
12700SYS&406C2
12720OTHERWISE
12730IFscript_adding%ORINKEY(-1)THEN
12740IFscript_adding%THEN
12750BPUT#script_file%,fn$
12760script_np%=2:pollfast%=1
12770ELSE
12780PROCmisc_close(script_file%)
12790script_fn$="<Wimp$ScrapDir>.WPScript"
12800script_file%=OPENOUT(script_fn$)
12810SYS&8,&12,script_fn$,&0F0
12820BPUT#script_file%,fn$
12830script_adding%=TRUE
12840script_np%=2:pollfast%=1
12850ENDIF
12860ELSE
12870PROCmisc_close(script_file%)
12880PROCcode_load(fn$)
12890ENDIF
12900ENDCASE
12910ENDPROC
12950DEFFNwimp_prequit
12960IFcode_loaded%AND code_status%=0THEN
12970W%=FNwarn_message(1)
12980IFW%=2THENquit_finish%=TRUE
12990=(W%=3)
13000ELSE
13010=TRUE
13020ENDIF
13080DEFPROCcode_action(act%)
13090LOCALos%,ptr%
13100IFact%=99THEN
13110act%=5
13120ELSE
13130IFNOTcode_loaded%THENact%=5
13140IFcode_status%=act%THENENDPROC
13150IFcode_status%=3AND act%=4THENENDPROC
13160ENDIF
13180os%=code_status%
13190IFact%>=0THEN
13200PROCicon_select(wind_cont%,code_status%,0)
13210PROCicon_select(wind_cont%,act%,1)
13220code_status%=act%
13230ENDIF
13250CASEact%OF
13260WHEN0
13270IFos%=4THENCALLcode_unpause%ELSECALLcode_restart%
13290WHEN3
13300CALLcode_pause%
13310PTR#code_file%=code_header%
13320code_counterpos%=0
13330slider_px%=0
13340PROCicon_update(wind_cont%,12)
13350IFscript_file%>0AND paused%=0THEN
13370IFEOF#script_file%THEN
13380PROCmisc_close(script_file%)
13390SYS&20008,6,"<Wimp$ScrapDir>.WPScript"
13400ELSE
13410PROCcode_load(GET$#script_file%)
13420ENDIF
13430ENDIF
13450WHEN4:CALLcode_pause%
13470WHEN5
13480CALLcode_close%
13490PROCmisc_close(code_file%):code_file%=0
13500code_loaded%=FALSE
13510IFscript_file%=0ORR%=6THEN
13520PROCwind_close(wind_cont%)
13530PROCwind_close(wind_form%)
13540PROCwind_close(wind_buff%)
13550ENDIF
13570WHEN-1
13580ptr%=4*(slider_s*slider_px%DIV4)
13590IF(code_header%+ptr%)>EXT#code_file%THEN
13600ptr%=EXT#code_file%-code_header%-4
13610ENDIF
13620IFptr%<code_header%THENptr%=code_header%
13630PTR#code_file%=code_header%+ptr%
13640code_counterpos%=ptr%
13650IFos%=0THENCALLcode_restart%
13660ENDCASE
13670ENDPROC
13710DEFPROCcode_load(fn$)
13720LOCALtype%,play%,unk%,@%,t$,obj%,I%,pause%
13740SYS&406C0
13750script_adding%=FALSE
13760PROCcode_action(5)
13780IFLEFT$(fn$,1)="."AND script_file%<>0THENfn$=FNmisc_path(script_fn$)+fn$
13800I%=INSTR(fn$,"-buffersize=")
13810IFI%>0THEN
13820t$=MID$(fn$,I%+12)
13830I%=INSTR(t$," -")
13840IFI%>0THENt$=LEFT$(t$,I%)
13850code_buffsize%=1024*INT(EVAL(t$))
13860A%=code_buffsize%:CALLcode_setbuff%
13870CALLcode_final%
13880CALLcode_init%
13890ENDIF
13910I%=INSTR(fn$,"-pause")
13920IFI%>0THENpause%=TRUEELSEpause%=INKEY(-3)
13940I%=INSTR(fn$,"-volume=")
13950IFI%>0THEN
13960t$=MID$(fn$,I%+8)
13970I%=INSTR(t$," -")
13980IFI%>0THENt$=LEFT$(t$,I%)
13990vol_pos=EVAL(t$)*2.56
14000PROCvolume_set
14010ENDIF
14030SYS&8,5,fn$TOobj%,,type%
14040IFobj%<>1THENSYS&406C2:ENDPROC
14060type%=type%>>8
14070IF(type%AND&FFF000)=&FFF000THEN
14080type%=type%AND&FFF
14090ELSE
14100type%=0
14110ENDIF
14130code_file%=OPENIN(fn$)
14140IFcode_file%=0THENSYS&406C2:ENDPROC
14160unk%=FALSE:play%=TRUE
14170LOCALERROR
14180ONERRORLOCALRESTOREERROR:unk%=TRUE
14190IFNOTunk%THEN
14200code_name$=FNmisc_leaf(fn$)
14210code_loaded%=EVAL("FNcode_type_"+RIGHT$("00"+STR$~(type%),3))
14220IFcode_loaded%=FALSETHEN;;
14230RESTOREERROR
14240play%=(NOTINKEY(-2))AND play%
14250ELSE
14260play%=FALSE
14270code_type$="unknown"
14280B%=EXT#code_file%
14290C%=%0000
14300D%=48*vidc/1000000
14310code_header%=0
14320ENDIF
14340IFplay%THEN
14350PROCcode_beginplay(pause%)
14360ELSE
14370PROCcode_fillinfo
14390PROCwind_close(wind_cont%)
14400PROCwind_opencentre(wind_form%)
14410code_loaded%=FALSE
14420slider_px%=0
14430ENDIF
14440SYS&406C1
14450ENDPROC
14490DEFPROCcode_fillinfo
14500LOCAL@%
14510PROCicon_text(wind_form%,2,code_type$)
14520IFC%AND%1000THENt$="16 bits"ELSEt$="8 bits"
14530PROCicon_text(wind_form%,5,t$)
14540@%="+g10.9"
14550PROCicon_text(wind_form%,7,STR$(vidcDIVD%)+" Hz")
14560PROCicon_select(wind_form%,10,((C%>>2)AND 1)EOR 1)
14570PROCicon_select(wind_form%,11,((C%>>2)AND 1))
14580PROCicon_select(wind_form%,12,((C%>>1)AND 1)EOR 1)
14590PROCicon_select(wind_form%,13,((C%>>1)AND 1))
14600PROCicon_select(wind_form%,14,(C%AND 1)EOR 1)
14610PROCicon_select(wind_form%,15,(C%AND 1))
14630PROCicon_text(wind_buff%,2,code_type$)
14640@%="+f10.3"
14650PROCicon_text(wind_buff%,5,STR$(code_buffsize%/1024)+" Kb")
14660ENDPROC
14700DEFFNcode_type_FB1
14710LOCALchannels%,bits%,freq%,nt%
14730SYS&C,3,code_file%,temp1%,64,0
14740IFtemp1%!0<>&46464952ORtemp1%!8<>&45564157THEN=FALSE
14750channels%=(temp1%!20)>>16
14760freq%=temp1%!24
14770bits%=(temp1%!32)>>16
14790IFchannels%=2THENC%=%0001ELSEC%=%0000
14800IFbits%=8THENC%=C%OR%0010ELSEC%=C%OR%1000
14810D%=vidc/freq%
14830PTR#code_file%=16+3
14840temp1%?4=13
14850REPEAT
14860PTR#code_file%=PTR#code_file%-3
14870SYS&C,4,code_file%,temp1%,4
14880UNTIL$temp1%="data"
14890SYS&C,4,code_file%,temp1%,4
14900code_header%=PTR#code_file%
14910B%=!temp1%+PTR#code_file%
14920code_total=B%/freq%
14930code_type$="MS WAV"
14950PTR#code_file%=B%
14960temp1%?4=13
14970REPEAT
14980PTR#code_file%=PTR#code_file%-3
14990SYS&C,4,code_file%,temp1%,4TO,,,nt%
15000IF$temp1%="DISP"THEN
15010SYS&C,4,code_file%,temp1%,4
15020PTR#code_file%=PTR#code_file%+!temp1%
15030ENDIF
15040UNTIL$temp1%="ISBJ"ORnt%>0
15050IF$temp1%="ISBJ"THEN
15060SYS&C,4,code_file%,temp1%,4
15070SYS&C,4,code_file%,temp1%+4,!temp1%
15080?(temp1%+4+!temp1%)=13
15090code_name$=$(temp1%+4)
15100ENDIF
15120PTR#code_file%=code_header%
15130=TRUE
15170DEFFNcode_type_D3C
15171PTR#code_file%=0
15180B%=EXT#code_file%
15190C%=%0000
15200D%=(vidc*BGET#code_file%)/1000000
15210code_header%=1
15220code_type$="Armadeus"
15230code_total=B%*D%/vidc
15240=TRUE
15280DEFFNcode_type_38D
15290SYS&C,3,code_file%,temp1%,4,0
15300IFtemp1%!0<>&53505553THEN=FALSE
15310PTR#code_file%=4
15320C%=%0000
15330IFBGET#code_file%=0THENC%=C%OR%0100
15340IFBGET#code_file%=&80THENC%=C%OR%0010
15350IFBGET#code_file%=1THENC%=C%OR%0001
15360D%=(vidc*BGET#code_file%)/1000000
15370SYS&C,3,code_file%,temp1%,56,8
15380code_name$=FNmisc_str(temp1%)
15390code_type$="SuperSonic"
15400B%=EXT#code_file%-64
15410code_header%=64
15420=TRUE
15460DEFFNcode_type_CB5
15470LOCALt$
15480SYS&C,3,code_file%,temp1%,4,0
15490temp1%?4=13
15500IF$temp1%="SAMP"THEN
15510SYS&C,3,code_file%,temp1%,16,&10
15530SYS&C,3,code_file%,temp1%,4,&38
15540B%=!temp1%+&60
15550code_header%=&60
15560PTR#code_file%=&60
15570C%=%0100
15580D%=100
15590D%=(vidc*50)/1000000
15600code_type$="Tracker"
15610=TRUE
15620ENDIF
15630IF$temp1%="DskS"OR$temp1%="DSMP"OR$temp1%="DSmp"THEN
15640SYS&C,3,code_file%,temp1%,64,0
15650t$=FNmisc_str(temp1%+&20)
15660IFt$<>"<Undefined>"THENcode_name$=t$
15670B%=temp1%!&1C+&40
15680code_header%=&40
15690PTR#code_file%=&40
15700C%=%0100
15710D%=(temp1%!&8/&4000)*vidc/1000000
15720code_type$="Desktop Tracker"
15730=TRUE
15740ENDIF
15750=FALSE
15790DEFFNcode_type_ED0
15800code_header%=0
15810PTR#code_file%=0
15820B%=EXT#code_file%
15830C%=%0010
15840D%=48*vidc/1000000
15850code_type$="DS Edit"
15860play%=FALSE
15870=TRUE
15910DEFPROCcode_beginplay(paused%)
15920LOCALt1%,t2%,tp%,tl%,op%
15940A%=code_file%
15950CALLcode_open%
15970op%=PTR#code_file%
15980SYS&42TOt1%
15990SYS&C,3,code_file%,temp1%,4*1024,code_header%
16000SYS&42TOt2%
16010tl%=t2%-t1%
16020PTR#code_file%=op%
16040slider_s=B%/slider_sx%
16050PTR#code_file%=code_header%
16060code_counterpos%=0
16080IFC%AND%0001THEN
16090VOICES2
16100STEREO1,-127
16110STEREO2,+127
16120ELSE
16130VOICES1
16140STEREO1,0
16150ENDIF
16170@%="+f10.2"
16180code_total=(B%-code_header%)*D%/vidc
16190IFC%AND%1000THENcode_total=code_total/2
16200IFC%AND%0001THENcode_total=code_total/2
16210PROCicon_text(wind_cont%,9,FNmisc_numstr(code_total/3))
16220PROCicon_text(wind_cont%,10,FNmisc_numstr(2*code_total/3))
16230PROCicon_text(wind_cont%,11,FNmisc_numstr(code_total))
16240PROCicon_text(wind_cont%,13,LEFT$(code_name$,63))
16260tp%=(4*1024/B%)*code_total*100
16270IFtl%>tp%THEN
16280SYS&406C2
16290IF(tl%/tp%)>1.3THENW%=FNwarn_message(2)ELSEW%=FNwarn_message(7)
16300IFW%=1THEN
16310PROCcode_action(99)
16320PROCwind_close(wind_form%)
16330PROCwind_close(wind_buff%)
16340PROCwind_close(wind_cont%)
16341PROCmisc_close(script_file%)
16350ENDPROC
16360ENDIF
16370paused%=TRUE
16380ENDIF
16400IFpaused%THENPROCcode_action(3)ELSEPROCcode_action(0)
16410IFscript_file%=0ORR%=6ORpaused%THEN
16420PROCwind_opentop(wind_cont%)
16430ENDIF
16440PROCwind_close(wind_form%)
16450PROCwind_close(wind_buff%)
16460code_loaded%=TRUE
16470ENDPROC
16530DEFPROCvolume_dragset(temp%)
16540LOCALoldpos%
16550IFtemp%THENoldpos%=vol_pos
16560SYS&400CF,,temp1%
16570vol_pos+=temp1%!4-vol_dy%
16580IFNOTtemp%THENPROCicon_update(wind_vol%,2)
16600DEFPROCvolume_set
16610LOCALV%,S%
16620temp%=temp%
16630IFvol_pos<0THENvol_pos=0
16640IFvol_pos>256THENvol_pos=256
16650V%=127*SQR(vol_pos/256)
16660IFV%<1THENV%=1
16670IFV%>127THENV%=127
16680SYS&40180,V%
16690IFtemp%THENvol_pos=oldpos%
16700IFFNicon_select(wind_vol%,9)=0THENPROCicon_select(wind_vol%,9,1)
16710ENDPROC
16750DEFPROCvolume_getstate
16760LOCALV%,S%
16770SYS&40180,0TOV%
16780IFFNicon_select(wind_vol%,9)THENvol_pos=256*((V%/127)^2)+2
16790PROCicon_update(wind_vol%,2)
16800SYS&40143TOS%
16810PROCicon_select(wind_vol%,10,S%-1)
16820ENDPROC
16930DEFPROChelp
16940LOCALshs%,shf%,E%,F%,path$,helpdir$
16960SYS&20023,"StrongHelp$Dir",,-1TO,,shs%
16990SYS&20008,5,"WavePlayer:!SHFlag"TOE%,,,,shf%;F%
17000IF(F%AND 1)ORE%<>1THENshf%=-1
17010IFshf%>1THEN
17030shf%=+1
17040F%=OPENIN("WavePlayer:!SHFlag")
17050path$=GET$#F%
17060CLOSE#F%
17070IFshs%=0THENOSCLI"Set StrongHelp$Dir "+path$:shs%=TRUE
17080ENDIF
17110helpdir$="<StrongHelp$Dir>.HelpData.WavePlayer"
17120IFshs%<>0THEN
17130shs%=TRUE
17140SYS&20008,5,"<StrongHelp$Dir>.HelpData.WavePlayer"TOE%;F%
17150IFF%AND 1THENE%=0
17160IFE%=0THEN
17170SYS&20008,5,"<StrongHelp$Dir>.Manuals.WavePlayer"TOE%;F%
17180IFF%AND 1THENE%=0
17190IFE%<>0THENhelpdir$="<StrongHelp$Dir>.Manuals.WavePlayer"
17200ELSE
17210ENDIF
17220hpp%=(E%<>0)
17230ELSE
17240hpp%=FALSE
17250ENDIF
17330IFshs%=0AND shf%=+1THENW%=FNwarn_message(4):ENDPROC
17340IFshf%=0AND hpp%=0THENW%=FNwarn_message(5):ENDPROC
17350IFshs%AND hpp%=0THENW%=FNwarn_message(3):ENDPROC
17360IFshs%AND shf%=0AND hpp%THEN
17370W%=FNwarn_message(6)
17380IFW%=2THENENDPROC
17390shf%=+1
17400SYS&8,&A,"WavePlayer:!SHFlag",&FFD,,PAGE,PAGE+1
17410ENDIF
17440IFshs%AND shf%=+1AND hpp%THEN
17450SYS&20005,"RMEnsure StrongHelp 0 Filer_Run <StrongHelp$Dir>.!Run"
17460path$=FNmisc_realpath(helpdir$)
17470SYS&20005,"Filer_Run "+path$
17480SYS&20008,5,"WavePlayer:!SHFlag"TO,,,,E%
17490IFE%<=1THEN
17500F%=OPENOUT("WavePlayer:!SHFlag")
17510BPUT#F%,FNmisc_realpath("<StrongHelp$Dir>")
17520CLOSE#F%
17530ENDIF
17540ENDIF
17550IFshs%=0THEN
17560W%=FNwarn_message(8)
17570ENDIF
17580ENDPROC
17640DEFPROCerror
17650LOCALERROR
17660ONERRORLOCALERROREXTERR,"Error in error trap - "+REPORT$+" @ "+STR$(ERL)+" - original error - "+oldrep$
17670oldrep$=REPORT$+" @ "+STR$(ERL)
17690IFFNwarn_message(255)=1THEN
17700RESTOREERROR
17710ENDPROC
17720ENDIF
17730quit%=TRUE
17740ENDPROC
� >WavePlayer:!RunImage
(� � 1997, Matthew Wilson of Paradise
(6��,"Error whilst initialising - "+�$+" @ "+�(�)
</ș&400C0,200,&4B534154,"Wave Player"�,task%
P&quit%=�:pollfast%=0:quit_finish%=�
Z0script_file%=0:script_adding%=�:script_np%=0
dvidc_tv=1000000
n vidc_vga=1000000*25175/24000
xvidc_ms=1500000
�ispc%=4*1024
��w_warn%(2)
��sicon%64,caret%64
�0�q%256,temp1%8*1024,temp2%8*1024,icons%ispc%
�
!caret%=0
��init_iconbar
��init_sprites
��init_windows
��init_slider
��init_volume
��init_code
�init_menus
�init_vidc
"ș&10�env$
,I%=�env$,"-file")
6�I%=0�I%=�env$,"-auto")
@
�I%>0�
J#ș&8,5,�env$,I%+6)�type%,,load%
T
�type%=2�
^q%!40=&1000
h�
rq%!40=(load%�&FFF00)>>8
|�
�#�wimp_message_load(�env$,I%+6))
��
� �wind_opencentre(wind_info%)
�+ș&400D4,,wind_info%,temp1%!4,temp1%!16
�ș&42�info_c%
�info_c%+=1000
�ș&406C2
�*Set WavePlayer$Running yes
���error
�
�pollfast%>0�
&pollfast%-=1
0ș&400C7,,q%�R%
:�
D(�code_status%=0�delay%=5�delay%=1000
Nș&42�time%
X@�time%>info_c%� info_c%>0�info_c%=-1:�wind_close(wind_info%)
b ș&400E1,,q%,time%+delay%�R%
l�
v�slider_np%>0�
�slider_np%-=1
�"�slider_np%=0��code_action(-1)
��
��setbuff_np%>0�
�setbuff_np%-=1:pollfast%+=1
��setbuff_np%=0�
�$A%=code_buffsize%:�code_setbuff%
��code_final%
��code_init%
��
��
��script_np%>0�
�script_np%-=1:pollfast%+=1
�script_np%=0�
�misc_close(script_file%)
script_adding%=�
����(-1)
*'*Filer_Run <Wimp$ScrapDir>.WPScript
4�
>�
R ȎR%�
\�0
f5�code_status%=0� slider_np%=0��slider_d%��vol_d%�
popx%=slider_px%�2
z*pos%=�(code_readpos%)+code_counterpos%
�slider_px%=pos%/slider_s
�npx%=slider_px%�2
�+�opx%<>npx%��icon_update(wind_cont%,12)
��slider_px%>slider_sx%�
�)�quit_finish%�quit%=���code_action(3)
��
��
�+�vol_d%�(time%� 3)=0��volume_dragset(�)
��1:�wimp_redraw(!q%)
��2:ș&400C5,,q%
��3
�ș&400C6,,q%
3�!q%=wind_buff%�!q%=wind_form%��code_action(99)
"�!q%=wind_vol%�!q%=wind_cont%�
!�icon_select(wind_cont%,14,0)
$�wind_close(wind_vol%)
.�
8&�!q%=wind_vidc%��icon_restorecaret
L#�4:�!q%=wind_info%�ș&400C6,,q%
V�6
`�q%!8=2�
j�wimp_makemenu(q%!12,q%!16)
t�
~!�wimp_click(q%!12,q%!16,q%!8)
��
��7:�wimp_enddrag
��8
��!q%=wind_vidc%� q%!4=7�
�wind%=wind_vidc%
��wimp_clickvidc(-1,4)
��
��9:�wimp_menureply
��17,18:�wimp_message(q%!16)
��
�
�quit%
skip%=�
�skip%=�
(�skip%�
2�code_action(5)
<�code_final%
Fș&1E,7,,code%
P�misc_close(script_file%)
Z�quit_finish%=-2�
dș&42682
n�
xF%=�("WavePlayer:!Options")
�
�#F%,vidc
��#F%
��
�*Unset WavePlayer$Running
��
���init_iconbar
temp1%!0=-1
temp1%!4=0
temp1%!8=0
"temp1%!12=34*2
,temp1%!16=17*4
6&temp1%!20=(&17<<24)�(3<<12)�%11010
@!$(temp1%+24)="!waveplay"+�(0)
Jș&400C2,,temp1%�ibar1%
^temp1%!0=-1
htemp1%!4=0
rtemp1%!8=0
|temp1%!12=18*2
�temp1%!16=17*4
�&temp1%!20=(&17<<24)�(3<<12)�%11010
�$(temp1%+24)="volume!"+�(0)
�ș&400C2,,temp1%�ibar2%
��
���init_sprites
� �len%
�(ș&8,5,"WavePlayer:Sprites"�,,,,len%
��sprs%len%+16
�sprs%!0=len%+16
sprs%!8=16
)ș&2E,&10A,sprs%,"WavePlayer:Sprites"
�
D+��init_loadwindow(name$,�winhan%,sprs%)
N0ș&400DB,,temp1%,free%,end%,-1,name$�,,free%
Xtemp1%!64=sprs%
bș&400C1,,temp1%�winhan%
l�
���init_windows
��N%
�$ș&400D9,,"WavePlayer:Templates"
�!free%=icons%:end%=free%+ispc%
�1�init_loadwindow("controls",wind_cont%,sprs%)
�4�init_loadwindow("opts_buffer",wind_buff%,sprs%)
�4�init_loadwindow("opts_format",wind_form%,sprs%)
�-�init_loadwindow("info",wind_info%,sprs%)
�.�init_loadwindow("volume",wind_vol%,sprs%)
�2�init_loadwindow("vidcspeed",wind_vidc%,sprs%)
/�init_loadwindow("warn_1",w_warn%(0),sprs%)
/�init_loadwindow("warn_2",w_warn%(1),sprs%)
/�init_loadwindow("warn_3",w_warn%(2),sprs%)
*ș&400DA
4�
\��init_menus
f �len%
p&ș&8,5,"WavePlayer:Menus"�,,,,len%
z�menus%len%
��menus%<=0�
�/���,"Not enough memory to start up (menus)"
��
�&ș&8,&FF,"WavePlayer:Menus",menus%
�menu_ib%=menus%+0
�menu_bits%=menus%+256
�menu_type%=menus%+512
��
���init_slider
�#sicon%!0=wind_cont%:sicon%!4=12
ș&400CE,,sicon%
slider_x%=sicon%!8
slider_y%=sicon%!20-32
$%slider_sx%=sicon%!16-slider_x%-64
.slider_px%=0
8slider_d%=�
Bslider_s=1
Lslider_np%=0
`"temp1%!0=wind_cont%:temp1%!4=7
jș&400C4,,temp1%
t�
���init_volume
��V%
�!temp1%!0=wind_vol%:temp1%!4=2
�ș&400CE,,temp1%
�vol_x%=temp1%!8
�vol_y%=temp1%!12
�!vol_size%=temp1%!20-vol_y%-48
�vol_d%=�
�!temp1%!0=wind_vol%:temp1%!4=1
ș&400C4,,temp1%
�
2��init_code
< �len%
F%ș&8,5,"WavePlayer:Code"�,,,,len%
Pș&1E,6,,,len%�,,code%
Z$ș&8,&FF,"WavePlayer:Code",code%
dcode_init%=code%+0
ncode_final%=code%+4
xcode_open%=code%+8
�code_close%=code%+12
�code_restart%=code%+16
�code_pause%=code%+20
�code_unpause%=code%+24
�code_setbuff%=code%+28
�code_readpos%=code%+32
�code_status%=-1
�code_loaded%=�
�code_file%=0
�code_buffsize%=63*1024
�setbuff_np%=0
��code_action(5)
$A%=code_buffsize%:�code_setbuff%
�code_init%
�
@��init_vidc
J�F%
TF%=�("WavePlayer:!Options")
^
�F%=0�
hF%=�("WavePlayer:!Options")
rvidc=1000000
|
�#F%,vidc
��
�
�#F%,vidc
��
��#F%
�Ȏvidc�
�)�vidc_tv:�icon_select(wind_vidc%,2,1)
�*�vidc_vga:�icon_select(wind_vidc%,3,1)
�)�vidc_ms:�icon_select(wind_vidc%,4,1)
�
� �icon_select(wind_vidc%,5,1)
�4�icon_text(wind_vidc%,7,�(�(.5+24000*vidc/1E6)))
��
��
:ݤmisc_findfile(dir$,�N%)
D�R%
N1ș&2000C,10,dir$,temp1%,1,N%,256,"*"�,,,R%,N%
X�R%<>1�=""
b*�temp1%!16<>1�=�misc_findfile(dir$,N%)
l=�misc_str(temp1%+20)
���misc_poll(�R%)
�
�more%
�ș&400C7,,temp2%�R%
� ȎR%�
��1
�ș&400C8,,temp2%�more%
�ȕmore%
�ș&400CA,,temp2%�more%
��
��17,18:�temp2%!16=0�quit%=�
��
�
*ݤmisc_str(adr%)
4 �str$
>ș256,adr%�str$
H =str$
pݤmisc_leaf(fn$)
z�I%
�ȕ�fn$,".")>0��fn$,":")>0
�%I%=�fn$,"."):�I%>0�fn$=�fn$,I%+1)
�%I%=�fn$,":"):�I%>0�fn$=�fn$,I%+1)
��
�I%=�fn$," -")
��I%>0�fn$=�fn$,I%)
�=fn$
�ݤmisc_numstr(num)
��str$,I%
�str$=�(num):I%=�str$,".")
�I%��str$,I%,1)="�"
=str$
8��misc_close(�handle%)
B"�handle%<>0�ș&2000D,0,handle%
L
handle%=0
V�
~ݤmisc_realpath(path$)
��F%,npath$
�
?temp1%=0
�,ș&29,&25,path$,temp1%,,,255�,,npath$;F%
��F%� 1�npath$=path$
�=npath$
�ݤmisc_path(fn$)
�
�I%,F$
�
F$=fn$
��
I%=�fn$,".")
�I%>0�fn$=�fn$,I%+1)
�I%=0
=�F$,�(F$)-�(fn$)-1)
Z��wind_opentop(winhan%)
d!temp1%=winhan%
nș&400CB,,temp1%
xtemp1%!28=-1
�ș&400C5,,temp1%
��
���wind_opencentre(winhan%)
��x%,a%,y%,b%,sx%,sy%
�ș&35,�,4�,,a%
�ș&35,�,5�,,b%
�ș&35,�,11�,,x%
�ș&35,�,12�,,y%
�x%=x%<<a%:y%=y%<<b%
�!temp1%=winhan%
ș&400CB,,temp1%
sx%=temp1%!12-temp1%!4
sy%=temp1%!16-temp1%!8
"+temp1%!4=(x%-sx%)/2:temp1%!8=(y%-sy%)/2
,-temp1%!12=(x%+sx%)/2:temp1%!16=(y%+sy%)/2
6temp1%!28=-1
@ș&400C5,,temp1%
J�
r��wind_openhere(winhan%)
|�x%,y%,b%,sx%,sy%
�ȗx%,y%,b%
�!temp1%=winhan%
�ș&400CB,,temp1%
�sx%=(temp1%!12-temp1%!4)
�sy%=(temp1%!16-temp1%!8)
�temp1%!4=x%-sx%/2
�temp1%!8=y%-sy%*2/3
�temp1%!12=x%+sx%/2
�temp1%!16=y%+sy%/3
�temp1%!28=-1
�ș&400C5,,temp1%
��
��wind_openover(old%,new%)
&!temp1%=old%
0ș&400CB,,temp1%
:ș&400C6,,temp1%
D!temp1%=new%
Nș&400C5,,temp1%
X�
���wind_close(winhan%)
�!temp1%=winhan%
�ș&400C6,,temp1%
��
�$��icon_select(win%,icon%,state%)
��eor%,bic%
�
bic%=1
�eor%=-(state%<>0)
�state%=2�bic%=0:eor%=1
temp1%!0=win%
temp1%!4=icon%
temp1%!8=eor%<<21
*temp1%!12=bic%<<21
4ș&400CD,,temp1%
>�
fݤicon_select(win%,icon%)
p�state%
ztemp1%!0=win%
�temp1%!4=icon%
�ș&400CE,,temp1%
�=(temp1%!24�(1<<21))>>21
�!��icon_text(win%,icon%,text$)
�temp1%!0=win%
�temp1%!4=icon%
�ș&400CE,,temp1%
��(temp1%!24�(1<<8))=0��
�$$(temp1%!28)=�text$,temp1%!36-1)
temp1%!0=win%
temp1%!4=icon%
temp1%!8=0
$temp1%!12=0
.ș&400CD,,temp1%
8�
`ݤicon_text(win%,icon%)
jtemp1%!0=win%
ttemp1%!4=icon%
~ș&400CE,,temp1%
�=�misc_str(temp1%!28)
�ݤicon_eval(win%,icon%)
�
�str$,num
�temp1%!0=win%
�temp1%!4=icon%
�ș&400CE,,temp1%
�str$=�misc_str(temp1%!28)
��
���:=0
num=�(str$)
��
=num
<'��icon_val(win%,icon%,val$,update%)
Ftemp1%!0=win%
Ptemp1%!4=icon%
Zș&400CE,,temp1%
d�(temp1%!24�(1<<8))=0��
n$(temp1%!32)=val$
x�update%=0��
�temp1%!0=win%
�temp1%!4=icon%
�temp1%!8=0
�temp1%!12=0
�ș&400CD,,temp1%
��
���icon_update(win%,icon%)
�temp1%!0=win%
�temp1%!4=icon%
temp1%!8=0
temp1%!12=0
ș&400CD,,temp1%
"�
J��icon_clearall(win%)
T�N%
^$ș&400D6,win%,temp2%,1<<21,1<<21
h
N%=temp2%
rȕ!N%>-1
|�icon_select(win%,!N%,0)
� N%+=4
��
��
���icon_selectall(win%)
��N%
�$ș&400D6,win%,temp2%,1<<21,0<<21
�
N%=temp2%
�ȕ!N%>-1
��icon_select(win%,!N%,1)
� N%+=4
�
�
:ݤicon_nextsel(win%)
D$ș&400D6,win%,temp2%,1<<21,1<<21
N=!temp2%
v;��icon_pos(win%,icon%,�minx%,�miny%,�maxx%,�maxy%,loc%)
�
�x%,y%
��loc%=0�
�loc%=temp1%:loc%!0=win%
�ș&400CB,,loc%
��
�(x%=loc%!4-loc%!20:y%=loc%!16-loc%!24
�temp1%!0=win%
�temp1%!4=icon%
�ș&400CE,,temp1%
�temp1%!8+=x%:temp1%!16+=x%
�temp1%!12+=y%:temp1%!20+=y%
�"minx%=temp1%!8:miny%=temp1%!12
�#maxx%=temp1%!16:maxy%=temp1%!20
�
*$��icon_setcaret(win%,icon%,pos%)
4�pos%<0�
> temp1%!0=win%:temp1%!4=icon%
Hș&400CE,,temp1%
R pos%=�(�misc_str(temp1%!28))
\�
f%ș&400D2,win%,icon%,-1,-1,-1,pos%
p�
�&��icon_storecaret(win%,icon%,pos%)
��pos%<0�
� temp1%!0=win%:temp1%!4=icon%
�ș&400CE,,temp1%
� pos%=�(�misc_str(temp1%!28))
��
�ș&400D3,,caret%
�%ș&400D2,win%,icon%,-1,-1,-1,pos%
��
��icon_restorecaret
R�caret%!0<>0�ș&600D2,caret%!0,caret%!4,caret%!8,caret%!12,caret%!16,caret%!20
$caret%!0=0
.�
jݤwarn_message(messcode%)
t2�type%,s1%,s2%,s3%,s1$,s2$,s3$,mess$,ret%,esc%
~Ȏmesscode%�
��0
�Xmess$="Drag a sample file or a script file to the Wave Player icon to begin playing"
�s1$="OK":s1%=�"O"
�type%=1:ret%=1:esc%=1
��1
Ămess$="There is a sample still playing - are you sure you want to quit, or do you want to wait until the sample has finished?"
�s1$="Continue":s1%=�"C"
�s2$="Wait":s2%=�"W"
�s3$="Quit":s3%=�"Q"
�type%=3:ret%=1:esc%=2
�2
�mess$="This storage media is very slow, and so playing the sample could halt the whole machine. Hold down Control and Escape if this happens"
s1$="Stop":s1%=�"S"
s2$="Play":s2%=�"P"
(type%=2:ret%=1:esc%=1
<�3
F�mess$="StrongHelp has been located, but the help files have not been installed, or have been deleted. Run the help file installation program provided in the 'Help' directory."
Ps1$="OK":s1%=�"O"
Ztype%=1:ret%=1:esc%=1
n�4
x�mess$="StrongHelp cannot be located, but the help files have been installed. Try opening the filer window containing the application '!StrongHlp'."
�s1$="OK":s1%=�"O"
�type%=1:ret%=1:esc%=1
��5
��mess$="The installation of the StrongHelp help files has been reported to have failed or aborted. Try re-running 'Install' provided in the 'Help' directory."
�s1$="OK":s1%=�"O"
�type%=1:ret%=1:esc%=1
��6
ܥmess$="The installation of the StrongHelp help files has previously failed. However, the help files seem to be present - do you want to try to start StrongHelp?"
�s1$="Start":s1%=�"S"
�s2$="Cancel":s2%=�"C"
�type%=2:ret%=1:esc%=2
�7
�mess$="This storage media may be too slow, and so playing the sample could halt the whole machine, or make it very slow. Hold down Control and Escape if this happens"
"s1$="Stop":s1%=�"S"
,s2$="Play":s2%=�"P"
6type%=2:ret%=1:esc%=1
J�8
TLmess$="To access the help, please look in the directory 'Help.TextHelp'"
^s1$="OK":s1%=�"O"
htype%=1:ret%=1:esc%=1
|�9
�=mess$="This sample does not appear to be "+type$+" file."
�s1$="OK":s1%=�"O"
�type%=1:ret%=1:esc%=1
��254
�+mess$="External error - "+�$+" @ "+�(�)
�/s1$="Continue":s1%=�"C":s2$="Quit":s2%=�"Q"
�type%=2:ret%=1:esc%=2
��255
�*mess$="Program error - "+�$+" @ "+�(�)
�/s1$="Continue":s1%=�"C":s2$="Quit":s2%=�"Q"
�type%=2:ret%=1:esc%=2
��
Ȏtype%�
(�1:=�warn_1(mess$,s1$,s1%,ret%,esc%)
0�2:=�warn_2(mess$,s1$,s1%,s2$,s2%,ret%,esc%)
&8�3:=�warn_3(mess$,s1$,s1%,s2$,s2%,s3$,s3%,ret%,esc%)
0�
:=0
b$ݤwarn_1(str$,s1$,s1%,ret%,esc%)
l
�W%,R%,S%
vW%=w_warn%(0)
��icon_text(W%,0,str$)
��icon_text(W%,1,s1$)
��S%=15�1�-1
��misc_poll(R%)
��
��wind_opencentre(W%)
�ș&400D3,,temp1%
�ș&400D2,W%,-1,20,20,-1,-1
��
��misc_poll(R%)
�3�(R%=6� temp2%!12=W%� temp2%!8<>2)�S%=temp2%!16
�%�(R%=8�(temp2%!24� 223)=s1%)�S%=1
�"�(R%=8� temp2%!24=&0D)�S%=ret%
"�(R%=8� temp2%!24=&1B)�S%=esc%
�S%<0�S%=0
"�S%=0�(R%=2�R%=3�R%=6�R%=8)��7
�S%�quit%
*
�quit%�=0
4Eș&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
> �R%<>6��icon_select(W%,S%,1)
H�wind_close(W%)
R�icon_select(W%,S%,0)
\=S%
�,ݤwarn_2(str$,s1$,s1%,s2$,s2%,ret%,esc%)
�
�W%,R%,S%
�W%=w_warn%(1)
��icon_text(W%,0,str$)
��icon_text(W%,1,s1$)
��icon_text(W%,2,s2$)
��S%=15�1�-1
��misc_poll(R%)
��
��wind_opencentre(W%)
�ș&400D3,,temp1%
�ș&400D2,W%,-1,20,20,-1,-1
��
�misc_poll(R%)
3�(R%=6� temp2%!12=W%� temp2%!8<>2)�S%=temp2%!16
%�(R%=8�(temp2%!24� 223)=s1%)�S%=1
$%�(R%=8�(temp2%!24� 223)=s2%)�S%=2
."�(R%=8� temp2%!24=&0D)�S%=ret%
8"�(R%=8� temp2%!24=&1B)�S%=esc%
B�S%<0�S%=0
L"�S%=0�(R%=2�R%=3�R%=6�R%=8)��7
V�(-99)��(-2)��
`
�S%�quit%
j
�quit%�=0
tEș&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
~ �R%<>6��icon_select(W%,S%,1)
��wind_close(W%)
��icon_select(W%,S%,0)
�=S%
�4ݤwarn_3(str$,s1$,s1%,s2$,s2%,s3$,s3%,ret%,esc%)
�
�W%,R%,S%
�W%=w_warn%(2)
��icon_text(W%,0,str$)
��icon_text(W%,1,s1$)
��icon_text(W%,2,s2$)
�icon_text(W%,3,s3$)
�S%=15�1�-1
�misc_poll(R%)
�
(�wind_opencentre(W%)
2ș&400D3,,temp1%
<ș&400D2,W%,-1,20,20,-1,-1
F�
P�misc_poll(R%)
Z3�(R%=6� temp2%!12=W%� temp2%!8<>2)�S%=temp2%!16
d%�(R%=8�(temp2%!24� 223)=s1%)�S%=1
n%�(R%=8�(temp2%!24� 223)=s2%)�S%=2
x%�(R%=8�(temp2%!24� 223)=s3%)�S%=3
�"�(R%=8� temp2%!24=&0D)�S%=ret%
�"�(R%=8� temp2%!24=&1B)�S%=esc%
��S%<0�S%=0
�"�S%=0�(R%=2�R%=3�R%=6�R%=8)��7
�
�S%�quit%
�
�quit%�=0
�Eș&400D2,temp1%!0,temp1%!4,temp1%!8,temp1%!12,temp1%!16,temp1%!20
� �R%<>6��icon_select(W%,S%,1)
��wind_close(W%)
��icon_select(W%,S%,0)
�=S%
"*��drag_solid(win%,icon%,sprite$,sprs%)
,
�x%,y%
@temp1%!0=win%
Jș&400CB,,temp1%
T0x%=temp1%!4-temp1%!20:y%=temp1%!16-temp1%!24
^temp1%!4=icon%
hș&400CE,,temp1%
rtemp1%!8+=x%:temp1%!16+=x%
|temp1%!12+=y%:temp1%!20+=y%
�temp1%!24=0:temp1%!28=0
�+temp1%!32=&7FFFFFFF:temp1%!36=&7FFFFFFF
�ș&6,1,1
�1ș&42400,&01,sprs%,sprite$,temp1%+8,temp1%+24
��
�?��drag_slider(win%,parent%,cx%,cy%,csx%,csy%,sprite$,sprs%)
��x%,y%,px1%,py1%,px2%,py2%
�temp1%!0=win%
�ș&400CB,,temp1%
0x%=temp1%!4-temp1%!20:y%=temp1%!16-temp1%!24
temp1%!4=parent%
&ș&400CE,,temp1%
0*px1%=temp1%!8+x%+4:py1%=temp1%!12+y%+4
:+px2%=temp1%!16+x%-4:py2%=temp1%!20+y%-4
N)temp1%!8=x%+cx%:temp1%!16=x%+cx%+csx%
X*temp1%!12=y%+cy%:temp1%!20=y%+cy%+csy%
b!temp1%!24=px1%:temp1%!28=py1%
l!temp1%!32=px2%:temp1%!36=py2%
�ș&6,1,1
�1ș&42400,&20,sprs%,sprite$,temp1%+8,temp1%+24
��
���wimp_redraw(wind%)
��more%,draw%
�ș&400C8,,q%�more%
!�wind%=wind_cont%�
!draw%=�slider_d%
!!temp1%!0=slider_px%+slider_x%
! temp1%!4=slider_y%
!*temp1%!8=temp1%!0+64
!4temp1%!12=temp1%!4+32
!>temp1%!16=&102
!Htemp1%!20=temp1%+64
!Rtemp1%!24=sprs%
!\temp1%!28=12
!f$(temp1%+64)="slider"+�(0)
!p�
!z�wind%=wind_vol%�
!�draw%=�vol_d%
!�temp1%!0=vol_x%
!�temp1%!4=vol_y%+vol_pos
!�temp1%!8=vol_x%+32
!�temp1%!12=vol_y%+vol_pos+48
!�temp1%!16=&102
!�temp1%!20=temp1%+64
!�temp1%!24=sprs%
!�temp1%!28=12
!�$(temp1%+64)="vslider"+�(0)
!��
!�ȕmore%
"�draw%�ș&400E2,,temp1%
"ș&400CA,,q%�more%
"�
"$�
"L#��wimp_click(wind%,icon%,butt%)
"VȎwind%�
"`�-2:�wimp_clickibar(icon%)
"j,�wind_cont%:�wimp_clickcont(icon%,butt%)
"t,�wind_buff%:�wimp_clickbuff(icon%,butt%)
"~,�wind_form%:�wimp_clickform(icon%,butt%)
"�"�wind_info%:�wind_close(wind%)
"�*�wind_vol%:�wimp_clickvol(icon%,butt%)
"�,�wind_vidc%:�wimp_clickvidc(icon%,butt%)
"��
"��
"���wimp_clickibar(icon%)
"�
�x%,y%
"�Ȏicon%�
"��ibar1%
# �code_loaded%�
#
�wind_opentop(wind_cont%)
#�
#W%=�warn_message(0)
#(�
#2�ibar2%
#<�volume_getstate
#F&!temp1%=wind_vol%:ș&400CB,,temp1%
#P"x%=q%!0-(temp1%!12-temp1%!4)/2
#Zy%=96+(temp1%!16-temp1%!8)
#dș&400D4,,wind_vol%,x%,y%
#n�
#x�
#�!��wimp_clickcont(icon%,butt%)
#��x%,sx%,sy%,old%
#��wind_opentop(wind%)
#�Ȏicon%�
#� �0,3,4,5:�code_action(icon%)
#��1
#�-�slider_px%>=8�slider_px%-=8�slider_px%=0
#��icon_update(wind%,12)
#�slider_np%=10
$�2
$�slider_px%<=slider_sx%-8�
$"slider_px%+=8
$,�
$6slider_px%=slider_sx%
$@�
$J�icon_update(wind%,12)
$Tslider_np%=10
$h �6,12
$r�code_status%=4�
$|old%=slider_px%
$��code_action(3)
$�slider_px%=old%
$��
$�temp1%!0=wind%
$�ș&400CB,,temp1%
$�)x%=q%!0-temp1%!4-slider_px%-slider_x%
$��x%<0�x%>=64�
$�slider_px%+=x%-32
$��slider_px%<0�slider_px%=0
$�0�slider_px%>slider_sx%�slider_px%=slider_sx%
$��
$��icon_update(wind%,12)
$�N�drag_slider(wind%,6,slider_x%+slider_px%,slider_y%,64,32,"pslider",sprs%)
%slider_d%=�
%slider_dx%=q%!0
%&�14
%0�icon_select(wind%,14)�
%:�wind_close(wind_vol%)
%D�icon_select(wind%,14,0)
%N�
%X&!temp1%=wind_vol%:ș&400CB,,temp1%
%b"!temp2%=wind%:ș&400CB,,temp2%
%l1sx%=temp1%!12-temp1%!4:sy%=temp1%!16-temp1%!8
%v/temp1%!4=temp2%!12+2:temp1%!8=temp2%!16-sy%
%�.temp1%!12=temp1%!4+sx%:temp1%!16=temp2%!16
%�temp1%!28=-1
%�ș&400C5,,temp1%
%��icon_select(wind%,14,1)
%��
%��
%��
%�!��wimp_clickbuff(icon%,butt%)
%�-�@%,step%,time%,himem%,nt%,speed,x%,y%,z%
%�Ȏicon%�
&�6
&step%=-1+7*�(-1)
&3code_buffsize%=1024*(step%+code_buffsize%�1024)
& 0�code_buffsize%<8*1024�code_buffsize%=8*1024
&*@%="+f10.3"
&49�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
&>setbuff_np%=2
&R�7
&\step%=1-7*�(-1)
&f3code_buffsize%=1024*(step%+code_buffsize%�1024)
&p@%="+f10.3"
&z9�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
&�setbuff_np%=2
&��8
&�code_buffsize%=vidc/D%
&�,�C%�%1000�code_buffsize%+=code_buffsize%
&�,�C%�%0001�code_buffsize%+=code_buffsize%
&�@%="+f10.3"
&�9�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
&�setbuff_np%=2
&��9
&�code_buffsize%=2*vidc/D%
&�,�C%�%1000�code_buffsize%+=code_buffsize%
',�C%�%0001�code_buffsize%+=code_buffsize%
'@%="+f10.3"
'9�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
'$setbuff_np%=2
'8
�10,11
'B�icon%=10�time%=10�time%=50
'Lhimem%=�
'V�=himem%+130*1024
'`�=0
'j.ș&C,3,code_file%,himem%,128*1024,0�,,,nt%
't�=0��=1
'~speed=�/(128*1024-nt%)
'��=himem%
'�*code_buffsize%=256*((time%/speed)�256)
'�@%="+f10.3"
'�9�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
'�setbuff_np%=2
'�-�16:�wind_openover(wind_buff%,wind_form%)
'��17
'��wind_close(wind_form%)
'��wind_close(wind_buff%)
'��code_action(99)
'��18:�code_beginplay(�)
( �19:�code_beginplay(�)
(�20
(%�icon_pos(wind%,20,z%,z%,x%,y%,0)
((ș&400D4,,menu_type%,x%,y%
(2menu_c%=menu_type%
(F�
(P�
(x!��wimp_clickform(icon%,butt%)
(��x%,y%,z%,step%
(�Ȏicon%�
(��6
(�$�icon_pos(wind%,6,z%,z%,x%,y%,0)
(�ș&400D4,,menu_bits%,x%,y%
(�menu_c%=menu_bits%
(��8,9
(�step%=1-7*�(-1)
(�D%-=(icon%*2-17)*step%
(��D%<10�D%=10
(��D%>200�D%=200
(�@%="+g10.9"
)(�icon_text(wind%,7,�(vidc�D%)+" Hz")
)
�10,11
)"!C%=(C%�%1011)�((icon%-10)<<2)
),(�icon_select(wind%,10,(icon%=10)� 1)
)6(�icon_select(wind%,11,(icon%=11)� 1)
)J
�12,13
)T!C%=(C%�%1101)�((icon%-12)<<1)
)^(�icon_select(wind%,12,(icon%=12)� 1)
)h(�icon_select(wind%,13,(icon%=13)� 1)
)|
�14,15
)�!C%=(C%�%1110)�((icon%-14)<<0)
)�(�icon_select(wind%,14,(icon%=14)� 1)
)�(�icon_select(wind%,15,(icon%=15)� 1)
)�-�16:�wind_openover(wind_form%,wind_buff%)
)��17
)��wind_close(wind_form%)
)��wind_close(wind_buff%)
)��code_action(99)
)��18:�code_beginplay(�)
)��19:�code_beginplay(�)
)��20
*%�icon_pos(wind%,20,z%,z%,x%,y%,0)
*ș&400D4,,menu_type%,x%,y%
*menu_c%=menu_type%
*0�
*:�
*b��wimp_clickvol(icon%,but%)
*lȎicon%�
*v�9
*��icon_select(wind%,9)�
*��volume_set
*��
*�ș&40180,1
*��
*�)�10:ș&40143,�icon_select(wind%,10)+1
*��
*��icon%<>2��
*��y%
*�temp1%!0=wind%
+ș&400CB,,temp1%
+$y%=q%!4-temp1%!16-vol_y%-vol_pos
+�y%<0�y%>=48�
+ vol_pos+=y%-24
+*�vol_pos<0�vol_pos=0
+4(�vol_pos>vol_size%�vol_pos=vol_size%
+>�
+H�icon_update(wind%,2)
+RF�drag_slider(wind%,0,vol_x%,vol_y%+vol_pos,32,48,"pvslider",sprs%)
+\vol_d%=�
+fvol_dy%=q%!4
+p�
+�!��wimp_clickvidc(icon%,butt%)
+�Ȏicon%�
+�&�2:vidc=vidc_tv:�icon_restorecaret
+�'�3:vidc=vidc_vga:�icon_restorecaret
+�&�4:vidc=vidc_ms:�icon_restorecaret
+��5
+�"vidc=�icon_eval(wind%,7)/0.024
+� �icon_storecaret(wind%,7,-1)
+��-1
+�"vidc=�icon_eval(wind%,7)/0.024
+��icon_restorecaret
,icon%=5
,�
,�icon_clearall(wind%)
,$�icon_select(wind%,icon%,1)
,.�
,V ��wimp_makemenu(wind%,icon%)
,`Ȏwind%�
,j�-2
,t"ș&400D4,,menu_ib%,q%!0-64,274
,~menu_c%=menu_ib%
,��wind_cont%
,��wind_buff%
,��wind_form%
,��
,��
,���wimp_enddrag
,��V%
,��slider_d%�
,�slider_d%=�
- ș&400CF,,temp1%
-
#slider_px%+=temp1%!0-slider_dx%
-�icon_update(wind_cont%,12)
-slider_np%=2
-(�
-<�vol_d%�
-Fvol_d%=�
-P�volume_dragset(�)
-Z�
-d�
-���wimp_menureply
-�Ȏmenu_c%�
-� �menu_ib%:�wimp_menureply_ib
-�$�menu_bits%:�wimp_menureply_bits
-�$�menu_type%:�wimp_menureply_type
-��
-��
-���wimp_menureply_ib
-�
Ȏ!q%�
.#�0:�wind_opencentre(wind_info%)
.�1:�help
.#�2:�wind_opencentre(wind_vidc%)
."�3:quit%=�wimp_prequit
.,�
.6�
.^��wimp_menureply_bits
.h�!q%=1�
.rC%=C%�%1000
.|&�icon_text(wind_form%,5,"16 bits")
.��
.�C%=C%�%0111
.�%�icon_text(wind_form%,5,"8 bits")
.��
.��
.���wimp_menureply_type
.�
�type$
.�
Ȏ!q%�
.�,�0:W%=�code_type_D3C:type$="an Armadeus"
.�*�1:W%=�code_type_ED0:type$="a DS Edit"
/=�2:W%=�code_type_CB5:type$="a Desktop Tracker or Tracker"
/*�3:W%=�code_type_FB1:type$="an MS WAV"
/-�4:W%=�code_type_38D:type$="a SuperSonic"
/&�
/0,�W%=���code_fillinfo�W%=�warn_message(9)
/:�
/b��wimp_message(mc%)
/l�shutdown%
/v
Ȏmc%�
/��0:quit%=�
/�+�3:�wimp_message_load(�misc_str(q%+44))
/��5
/�1�q%!40=&FB1�q%!40=&D3C�q%!40=&CB5�q%!40=&38D�
/�q%!12=q%!8
/�ș&400E7,17,q%,q%!4
/� �code_load(�misc_str(q%+44))
/��
/��q%!40=&0F0�
/�q%!12=q%!8
/�ș&400E7,17,q%,q%!4
/�(�wimp_message_load(�misc_str(q%+44))
/��
0�8
0shutdown%=q%!20
0 q%!12=q%!8
0*ș&400E7,17,q%,q%!4
04�wimp_prequit�
0>quit%=�
0H�shutdown%=0�ș&42682
0R�
0\.�quit_finish%� shutdown%=0�quit_finish%=-2
0f�
0p�
0���wimp_message_load(fn$)
0�
�t$,N%
0�Ȏq%!40�
0� �&0F0
0��misc_close(script_file%)
0�script_file%=�(fn$)
0�script_fn$=fn$
0��#script_file%>0�
0��code_load(�#script_file%)
0��
0��misc_close(script_file%)
1�
1
�&1000
1$�misc_close(script_file%)
1.ș&406C3,1
18)script_fn$="<Wimp$ScrapDir>.WPScript"
1Bscript_file%=�(script_fn$)
1LN%=0
1V�
1`t$=�misc_findfile(fn$,N%)
1j%�t$<>""��#script_file%,fn$+"."+t$
1t
�t$=""
1~�misc_close(script_file%)
1�q%!40=&0F0
1�"�wimp_message_load(script_fn$)
1�ș&406C2
1�
1��script_adding%��(-1)�
1��script_adding%�
1��#script_file%,fn$
1�script_np%=2:pollfast%=1
1��
1��misc_close(script_file%)
1�)script_fn$="<Wimp$ScrapDir>.WPScript"
2 script_file%=�(script_fn$)
2
ș&8,&12,script_fn$,&0F0
2�#script_file%,fn$
2script_adding%=�
2(script_np%=2:pollfast%=1
22�
2<�
2F�misc_close(script_file%)
2P�code_load(fn$)
2Z�
2d�
2n�
2�ݤwimp_prequit
2�"�code_loaded%� code_status%=0�
2�W%=�warn_message(1)
2��W%=2�quit_finish%=�
2�=(W%=3)
2��
2�=�
2��
3��code_action(act%)
3"
�os%,ptr%
3,
�act%=99�
36
act%=5
3@�
3J�code_loaded%�act%=5
3T�code_status%=act%��
3^�code_status%=3� act%=4��
3h�
3|os%=code_status%
3�
�act%>=0�
3�+�icon_select(wind_cont%,code_status%,0)
3�#�icon_select(wind_cont%,act%,1)
3�code_status%=act%
3��
3�Ȏact%�
3��0
3�(�os%=4��code_unpause%��code_restart%
3��3
3��code_pause%
3��#code_file%=code_header%
4code_counterpos%=0
4slider_px%=0
4�icon_update(wind_cont%,12)
4&�script_file%>0� paused%=0�
4:��#script_file%�
4D�misc_close(script_file%)
4N)ș&20008,6,"<Wimp$ScrapDir>.WPScript"
4X�
4b�code_load(�#script_file%)
4l�
4v�
4��4:�code_pause%
4��5
4��code_close%
4�(�misc_close(code_file%):code_file%=0
4�code_loaded%=�
4��script_file%=0�R%=6�
4��wind_close(wind_cont%)
4��wind_close(wind_form%)
4��wind_close(wind_buff%)
4��
5�-1
5"ptr%=4*(slider_s*slider_px%�4)
5&�(code_header%+ptr%)>�#code_file%�
5 $ptr%=�#code_file%-code_header%-4
5*�
54(�ptr%<code_header%�ptr%=code_header%
5>"�#code_file%=code_header%+ptr%
5Hcode_counterpos%=ptr%
5R�os%=0��code_restart%
5\�
5f�
5���code_load(fn$)
5�*�type%,play%,unk%,@%,t$,obj%,I%,pause%
5�ș&406C0
5�script_adding%=�
5��code_action(5)
5�@�fn$,1)="."� script_file%<>0�fn$=�misc_path(script_fn$)+fn$
5�I%=�fn$,"-buffersize=")
5�
�I%>0�
5�t$=�fn$,I%+12)
6I%=�t$," -")
6�I%>0�t$=�t$,I%)
6 code_buffsize%=1024*�(�(t$))
6$$A%=code_buffsize%:�code_setbuff%
6.�code_final%
68�code_init%
6B�
6VI%=�fn$,"-pause")
6`�I%>0�pause%=��pause%=�(-3)
6tI%=�fn$,"-volume=")
6~
�I%>0�
6�t$=�fn$,I%+8)
6�I%=�t$," -")
6��I%>0�t$=�t$,I%)
6�vol_pos=�(t$)*2.56
6��volume_set
6��
6�ș&8,5,fn$�obj%,,type%
6��obj%<>1�ș&406C2:�
6�type%=type%>>8
6��(type%�&FFF000)=&FFF000�
7 type%=type%�&FFF
7
�
7type%=0
7�
72code_file%=�(fn$)
7<�code_file%=0�ș&406C2:�
7Punk%=�:play%=�
7Z�
7d��:unk%=�
7n�unk%�
7xcode_name$=�misc_leaf(fn$)
7�5code_loaded%=�("FNcode_type_"+�"00"+�~(type%),3))
7��code_loaded%=��;;
7���
7�play%=(��(-2))� play%
7��
7�play%=�
7�code_type$="unknown"
7�B%=�#code_file%
7�C%=%0000
7�D%=48*vidc/1000000
7�code_header%=0
7��
8�play%�
8�code_beginplay(pause%)
8�
8"�code_fillinfo
86�wind_close(wind_cont%)
8@ �wind_opencentre(wind_form%)
8Jcode_loaded%=�
8Tslider_px%=0
8^�
8hș&406C1
8r�
8���code_fillinfo
8��@%
8�'�icon_text(wind_form%,2,code_type$)
8�&�C%�%1000�t$="16 bits"�t$="8 bits"
8��icon_text(wind_form%,5,t$)
8�@%="+g10.9"
8�-�icon_text(wind_form%,7,�(vidc�D%)+" Hz")
8�/�icon_select(wind_form%,10,((C%>>2)� 1)� 1)
8�,�icon_select(wind_form%,11,((C%>>2)� 1))
8�/�icon_select(wind_form%,12,((C%>>1)� 1)� 1)
8�,�icon_select(wind_form%,13,((C%>>1)� 1))
9*�icon_select(wind_form%,14,(C%� 1)� 1)
9'�icon_select(wind_form%,15,(C%� 1))
9&'�icon_text(wind_buff%,2,code_type$)
90@%="+f10.3"
9:9�icon_text(wind_buff%,5,�(code_buffsize%/1024)+" Kb")
9D�
9lݤcode_type_FB1
9v�channels%,bits%,freq%,nt%
9�!ș&C,3,code_file%,temp1%,64,0
9�/�temp1%!0<>&46464952�temp1%!8<>&45564157�=�
9�channels%=(temp1%!20)>>16
9�freq%=temp1%!24
9�bits%=(temp1%!32)>>16
9�"�channels%=2�C%=%0001�C%=%0000
9�$�bits%=8�C%=C%�%0010�C%=C%�%1000
9�D%=vidc/freq%
9��#code_file%=16+3
9�temp1%?4=13
:�
:�#code_file%=�#code_file%-3
:ș&C,4,code_file%,temp1%,4
: �$temp1%="data"
:*ș&C,4,code_file%,temp1%,4
:4code_header%=�#code_file%
:>B%=!temp1%+�#code_file%
:Hcode_total=B%/freq%
:Rcode_type$="MS WAV"
:f�#code_file%=B%
:ptemp1%?4=13
:z�
:��#code_file%=�#code_file%-3
:�%ș&C,4,code_file%,temp1%,4�,,,nt%
:��$temp1%="DISP"�
:�ș&C,4,code_file%,temp1%,4
:�%�#code_file%=�#code_file%+!temp1%
:��
:��$temp1%="ISBJ"�nt%>0
:��$temp1%="ISBJ"�
:�ș&C,4,code_file%,temp1%,4
:�&ș&C,4,code_file%,temp1%+4,!temp1%
:�?(temp1%+4+!temp1%)=13
:�code_name$=$(temp1%+4)
:��
;�#code_file%=code_header%
;=�
;Bݤcode_type_D3C
;C�#code_file%=0
;LB%=�#code_file%
;VC%=%0000
;`"D%=(vidc*�#code_file%)/1000000
;jcode_header%=1
;tcode_type$="Armadeus"
;~code_total=B%*D%/vidc
;�=�
;�ݤcode_type_38D
;� ș&C,3,code_file%,temp1%,4,0
;��temp1%!0<>&53505553�=�
;��#code_file%=4
;�C%=%0000
;��#code_file%=0�C%=C%�%0100
;�!�#code_file%=&80�C%=C%�%0010
;��#code_file%=1�C%=C%�%0001
<