home *** CD-ROM | disk | FTP | other *** search
- 10REM > !RunImage for !SymPlayer v.4.67
- 20REM © 1995 Charles Thomson
- 30ON ERROR ERROR EXT ERR,(REPORT$+" at line "+STR$(ERL))
- 40PROCinit
- 50PROCsettempatevalues
- 60
- 70ON ERROR PROCerror
- 80
- 90REPEAT
- 100SYS "WimpExt_PrePoll"
- 110SYS "Wimp_Poll",0,q% TO reason%
- 120SYS "WimpExt_Action",taskid%,q%,reason% TO reason%
- 130
- 140
- 150CASE reason% OF
- 160 WHEN 1:PROCautoredraw
- 170 WHEN 2:SYS "WimpExt_OpenLinked",,q%
- 180 WHEN 3:SYS "WimpExt_CloseLinked",,q%
- 190 WHEN 6:PROCmouseclick
- 200 WHEN 8:PROCkeypress
- 210 WHEN 9:PROCmenuselect
- 220 WHEN 17,18:PROCmessage
- 230ENDCASE
- 240
- 250UNTIL quit%
- 260
- 270PROCStop
- 280SYS "WimpExt_CloseDown",taskid%
- 290SYS "Wimp_CloseDown"
- 300END
- 310
- 320DEF PROCinit
- 330DIM q% &400,iconbuf% &400,iconspbuf% &8000
- 340DIM ibarmenu% 76,playmenu% 52
- 350DIM immediatebuf% 32
- 360SYS "Wimp_Initialise",200,&4B534154,"Symphony Player" TO ,taskid%
- 370SYS "WimpExt_Initialise",16,taskid%,146 TO wimpextversion%,,wimpextspritepool%
- 380quit%=FALSE
- 390playing%=FALSE
- 400paused%=FALSE
- 410maxpos%=0
- 420!q%=5
- 430q%!4=5
- 440q%!8=5
- 450PROCloadsprites
- 460SYS "WimpExt_LoadTemplates",q%,q%+12,iconbuf%,iconbuf%+&400,-1,"<SymPlayer$Dir>.Resources.Templates",iconspbuf%
- 470playwindow%=!q%
- 480infowindow%=q%!4
- 490volumewindow%=q%!8
- 500PROCinitmenus
- 510SYS "WimpExt_IconBarSprite",,,-1,"!SymPlayer",,3
- 520ENDPROC
- 530
- 540DEF PROCsettempatevalues
- 550PROCseticonstring(infowindow%,2,"© Charles Thomson, 1995")
- 560PROCseticonstring(infowindow%,3,"4.67 (15 July 1995)")
- 570ENDPROC
- 580
- 590DEF PROCinitmenus
- 600PROCiconmenuinit
- 610PROCplaymenuinit
- 620ENDPROC
- 630
- 640DEF PROCiconmenuinit
- 650$ibarmenu%="Sym Player"
- 660ibarmenu%!12=&70207
- 670ibarmenu%!20=44
- 680ibarmenu%!24=0
- 690ibarmenu%!28=0
- 700ibarmenu%!32=infowindow%
- 710ibarmenu%!36=&7000021
- 720$(ibarmenu%+40)="Info"
- 730ibarmenu%!52=&80
- 740ibarmenu%!56=-1
- 750ibarmenu%!60=&7000021
- 760$(ibarmenu%+64)="Quit"
- 770SYS "WimpExt_MenuWidth",,ibarmenu%
- 780ENDPROC
- 790
- 800DEF PROCplaymenuinit
- 810$playmenu%="Sym Player"
- 820playmenu%!12=&70207
- 830playmenu%!20=44
- 840playmenu%!24=0
- 850playmenu%!28=&80
- 860playmenu%!32=-1
- 870playmenu%!36=&7000021
- 880$(playmenu%+40)="Volume..."
- 890SYS "WimpExt_MenuWidth",,playmenu%
- 900ENDPROC
- 910
- 920DEF PROCloadsprites
- 930LOCAL yeig%,sprite$
- 940SYS "OS_ReadModeVariable",-1,5 TO ,,yeig%
- 950IF yeig%<2 THEN sprite$="Sprites22" ELSE sprite$="Sprites"
- 960!iconspbuf%=&8000:iconspbuf%!4=16
- 970SYS "OS_SpriteOp",&109,iconspbuf%
- 980SYS "OS_SpriteOp",&10A,iconspbuf%,("<SymPlayer$Dir>.Resources."+sprite$)
- 990ENDPROC
- 1000
- 1010DEF PROCmouseclick
- 1020CASE q%!12 OF
- 1030 WHEN -2:PROCiconbarclick
- 1040 WHEN playwindow%:PROCplaywindclick
- 1050 WHEN volumewindow%:PROCvolwindowclick
- 1060ENDCASE
- 1070ENDPROC
- 1080
- 1090DEF PROCiconbarclick
- 1100CASE q%!8 OF
- 1110 WHEN 1:PROCopendialoguebox(volumewindow%,64,0)
- 1120 PROCplacecaret(volumewindow%,0)
- 1130 WHEN 2:PROCopenmenu(ibarmenu%,!q%-64,184)
- 1140 WHEN 4:IF FNwindowisopen(playwindow%) THEN
- 1150 PROCclosewindow(playwindow%)
- 1160 ELSE
- 1170 PROCopenwindow(playwindow%)
- 1180 ENDIF
- 1190ENDCASE
- 1200ENDPROC
- 1210
- 1220DEF PROCplaywindclick
- 1230CASE q%!8 OF
- 1240 WHEN 1:CASE q%!16 OF
- 1250 WHEN 0:PROCMove(1)
- 1260 WHEN 4:PROCMove(-1)
- 1270 ENDCASE
- 1280 WHEN 2:PROCopenmenu(playmenu%,!q%-64,q%!4+32)
- 1290 WHEN 4:CASE q%!16 OF
- 1300 WHEN 0:PROCMove(-1)
- 1310 WHEN 1:PROCStop
- 1320 WHEN 2:PROCPause
- 1330 WHEN 3:PROCUnPause
- 1340 WHEN 4:PROCMove(1)
- 1350 ENDCASE
- 1360ENDCASE
- 1370ENDPROC
- 1380
- 1390DEF PROCvolwindowclick
- 1400CASE q%!16 OF
- 1410 WHEN 1,2:CASE q%!8 OF
- 1420 WHEN 1,4:PROCsetvolume
- 1430 ENDCASE
- 1440 WHEN 3:CASE q%!8 OF
- 1450 WHEN 1:PROCsetvolume
- 1460 WHEN 4:PROCsetvolume:PROCclosewindow(volumewindow%)
- 1470 ENDCASE
- 1480ENDCASE
- 1490ENDPROC
- 1500
- 1510DEF PROCsetvolume
- 1520LOCAL iconval%
- 1530SYS "WimpExt_GetNumberIcon",10,,volumewindow%,0 TO iconval%
- 1540PROCsetsymvolume(iconval%)
- 1550ENDPROC
- 1560
- 1570DEF PROCLoad(fname$)
- 1580LOCAL flags%
- 1590SYS "DSym_Load",-1
- 1600SYS "XDSym_Load",fname$,,0,,0 TO ;flags%
- 1610IF flags% AND 1 THEN
- 1620 REM Didn’t load tune
- 1630 PROCrequester("Warning from Symphony Player","Could not load tune","OK","","","",0)
- 1640ELSE
- 1650 maxpos%=FNmaxpos
- 1660 SYS "DSym_RestartSong"
- 1670 playing%=TRUE
- 1680 paused%=FALSE
- 1690ENDIF
- 1700ENDPROC
- 1710
- 1720DEF PROCPause
- 1730IF NOT paused% THEN SYS "DSym_Pause"
- 1740paused%=TRUE
- 1750ENDPROC
- 1760
- 1770DEF PROCUnPause
- 1780IF paused% THEN SYS "DSym_TuneControl",1
- 1790paused%=FALSE
- 1800ENDPROC
- 1810
- 1820DEF PROCStop
- 1830SYS "DSym_Load",-1
- 1840SYS "DSym_TuneControl",0
- 1850SYS "DSym_FlushOutput"
- 1860playing%=FALSE
- 1870paused%=FALSE
- 1880maxpos%=0
- 1890ENDPROC
- 1900
- 1910DEF PROCMove(direction%)
- 1920LOCAL currpos%,newpos%
- 1930SYS "DSym_SongPos",-1 TO currpos%
- 1940newpos%=currpos% + direction%
- 1950IF newpos%<0 THEN newpos%=0
- 1960IF newpos%>maxpos% THEN newpos%=maxpos%
- 1970IF newpos%<>currpos% THEN SYS "DSym_SongPos",newpos%
- 1980ENDPROC
- 1990
- 2000DEF FNmaxpos
- 2010LOCAL maxpos%
- 2020SYS"DSym_TuneInfo",0,0 TO maxpos%
- 2030=maxpos%-1
- 2040
- 2050DEF FNcurrpos
- 2060LOCAL pos%
- 2070SYS"DSym_SongPos",-1 TO pos%
- 2080=pos%
- 2090
- 2100DEF PROCsetsymvolume(volume%)
- 2110IF volume%>64 THEN volume%=64
- 2120IF volume%<0 THEN volume%=0
- 2130SYS "DSym_Vol",volume%
- 2140ENDPROC
- 2150
- 2160DEF PROCopenmenu(menu%,mx%,my%)
- 2170lastopenedmenu%=menu%
- 2180SYS "WimpExt_CreateMenu",,menu%,mx%,my%
- 2190ENDPROC
- 2200
- 2210DEF PROCmenuselect
- 2220CASE lastopenedmenu% OF
- 2230 WHEN ibarmenu%:CASE !q% OF
- 2240 WHEN 1:quit%=TRUE
- 2250 ENDCASE
- 2260 WHEN playmenu%:PROCopendialoguebox(volumewindow%,64,92):PROCplacecaret(volumewindow%,0)
- 2270ENDCASE
- 2280ENDPROC
- 2290
- 2300DEF PROCkeypress
- 2310CASE !q% OF
- 2320 WHEN volumewindow%:CASE q%!24 OF
- 2330 WHEN 13:
- 2340 PROCsetvolume
- 2350 PROCslabbutton(volumewindow%,3)
- 2360 PROCclosewindow(volumewindow%)
- 2370 OTHERWISE:SYS "Wimp_ProcessKey",q%!24
- 2380 OTHERWISE:SYS "Wimp_ProcessKey",q%!24
- 2390ENDCASE
- 2400ENDPROC
- 2410
- 2420DEF PROCmessage
- 2430 LOCAL fname$
- 2440CASE q%!16 OF
- 2450 WHEN 0:quit%=TRUE
- 2460 WHEN 3:PROCtrytoload
- 2470 WHEN 5:IF q%!40=&10B THEN
- 2480 fname$=FNstr0(q%+44)
- 2490 PROCackdataopen
- 2500 $(q%+44)=(fname$+CHR$(0))
- 2510 q%!40=&10B
- 2520 PROCtrytoload
- 2530 ENDIF
- 2540ENDCASE
- 2550ENDPROC
- 2560
- 2570DEF PROCtrytoload
- 2580LOCAL fname$,filetype%
- 2590fname$=FNstr0(q%+44)
- 2600filetype%=q%!40
- 2610IF filetype%=&10B THEN
- 2620 PROCLoad(fname$)
- 2630ENDIF
- 2640ENDPROC
- 2650
- 2660DEF FNstr0(pointer%)
- 2670LOCAL string$
- 2680string$=""
- 2690WHILE ?pointer%
- 2700 string$+=CHR$?pointer%
- 2710 pointer%+=1
- 2720ENDWHILE
- 2730=string$
- 2740
- 2750DEF PROCrequester(title$,message$,but1$,but2$,but3$,but4$,escbut%)
- 2760PROCbuildbuttonblock(but1$,but2$,but3$,but4$)
- 2770SYS "WimpExt_OpenRequester",,,title$,message$,immediatebuf%,escbut%
- 2780ENDPROC
- 2790
- 2800DEF PROCerror
- 2810LOCAL err_ok%
- 2820err_ok%=FALSE
- 2830PROCbuildbuttonblock("OK","Quit","","")
- 2840SYS "WimpExt_ControlImmediate",,2,"Error from Symphony Player",(REPORT$+" at line "+STR$(ERL)),immediatebuf%,1 TO quit%
- 2850
- 2860IF quit% THEN
- 2870 SYS "WimpExt_CloseDown",taskid%
- 2880 SYS "Wimp_CloseDown"
- 2890 END
- 2900ENDIF
- 2910
- 2920ENDPROC
- 2930
- 2940DEF PROCclosewindow(handle%)
- 2950!q%=handle%
- 2960SYS "WimpExt_CloseLinked",,q%
- 2970ENDPROC
- 2980
- 2990DEF PROCopenwindow(handle%)
- 3000!q%=handle%
- 3010SYS "Wimp_GetWindowState",,q%
- 3020SYS "WimpExt_CentreWindow",,q%+4
- 3030SYS "WimpExt_CentreWindowV",,q%+4
- 3040q%!28=-1
- 3050SYS "WimpExt_OpenLinked",,q%
- 3060ENDPROC
- 3070
- 3080DEF PROCautoredraw
- 3090SYS "WimpExt_AutoRedraw",,q%
- 3100ENDPROC
- 3110
- 3120DEF PROCbuildbuttonblock(but1$,but2$,but3$,but4$)
- 3130LOCAL bufptr%
- 3140$(immediatebuf%+bufptr%)=(LEFT$(but1$,7)+CHR$0)
- 3150bufptr%+=LEN($(immediatebuf%+bufptr%))
- 3160$(immediatebuf%+bufptr%)=(LEFT$(but2$,7)+CHR$0)
- 3170bufptr%+=LEN($(immediatebuf%+bufptr%))
- 3180$(immediatebuf%+bufptr%)=(LEFT$(but3$,7)+CHR$0)
- 3190bufptr%+=LEN($(immediatebuf%+bufptr%))
- 3200$(immediatebuf%+bufptr%)=(LEFT$(but4$,7)+CHR$0)
- 3210ENDPROC
- 3220
- 3230DEF PROCackdataopen
- 3240q%!12=q%!8
- 3250q%!16=4
- 3260SYS "Wimp_SendMessage",19,q%,q%!4
- 3270ENDPROC
- 3280
- 3290DEF PROCslabbutton(window%,icon%)
- 3300SYS "WimpExt_SlabIcon",,,window%,icon%
- 3310ENDPROC
- 3320
- 3330DEF FNgetvolume
- 3340LOCAL volume%
- 3350SYS "DSym_Vol",-1 TO volume%
- 3360=volume%
- 3370
- 3380DEF PROCplacecaret(winhandle%,ichandle%)
- 3390SYS "WimpExt_PutCaretIcon",,,winhandle%,ichandle%
- 3400ENDPROC
- 3410
- 3420DEF PROCopendialoguebox(winhandle%,xoff%,yoff%)
- 3430LOCAL vol%
- 3440IF winhandle%=volumewindow% THEN
- 3450 vol%=FNgetvolume
- 3460 SYS "WimpExt_SetNumberIcon",10,,volumewindow%,0,vol%
- 3470ENDIF
- 3480SYS "WimpExt_OpenDialogue",,,winhandle%,xoff%,yoff%
- 3490ENDPROC
- 3500
- 3510DEF FNwindowisopen(winhand%)
- 3520LOCAL open%
- 3530SYS "WimpExt_CheckWindowOpen",winhand% TO open%
- 3540=open%
- 3550
- 3560DEF PROCseticonstring(winhand%,ichand%,string$)
- 3570SYS "WimpExt_SetIconString",,,winhand%,ichand%,string$
- 3580ENDPROC
-