home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / s / symphony / !SymPlayer / !RunImage < prev    next >
Encoding:
Text File  |  1995-08-26  |  9.0 KB  |  359 lines

  1.    10REM > !RunImage for !SymPlayer v.4.67
  2.    20REM © 1995 Charles Thomson
  3.    30ON ERROR ERROR EXT ERR,(REPORT$+" at line "+STR$(ERL))
  4.    40PROCinit
  5.    50PROCsettempatevalues
  6.    60
  7.    70ON ERROR PROCerror
  8.    80
  9.    90REPEAT
  10.   100SYS "WimpExt_PrePoll"
  11.   110SYS "Wimp_Poll",0,q% TO reason%
  12.   120SYS "WimpExt_Action",taskid%,q%,reason% TO reason%
  13.   130
  14.   140
  15.   150CASE reason% OF
  16.   160  WHEN 1:PROCautoredraw
  17.   170  WHEN 2:SYS "WimpExt_OpenLinked",,q%
  18.   180  WHEN 3:SYS "WimpExt_CloseLinked",,q%
  19.   190  WHEN 6:PROCmouseclick
  20.   200  WHEN 8:PROCkeypress
  21.   210  WHEN 9:PROCmenuselect
  22.   220  WHEN 17,18:PROCmessage
  23.   230ENDCASE
  24.   240
  25.   250UNTIL quit%
  26.   260
  27.   270PROCStop
  28.   280SYS "WimpExt_CloseDown",taskid%
  29.   290SYS "Wimp_CloseDown"
  30.   300END
  31.   310
  32.   320DEF PROCinit
  33.   330DIM q% &400,iconbuf% &400,iconspbuf% &8000
  34.   340DIM ibarmenu% 76,playmenu% 52
  35.   350DIM immediatebuf% 32
  36.   360SYS "Wimp_Initialise",200,&4B534154,"Symphony Player" TO ,taskid%
  37.   370SYS "WimpExt_Initialise",16,taskid%,146 TO wimpextversion%,,wimpextspritepool%
  38.   380quit%=FALSE
  39.   390playing%=FALSE
  40.   400paused%=FALSE
  41.   410maxpos%=0
  42.   420!q%=5
  43.   430q%!4=5
  44.   440q%!8=5
  45.   450PROCloadsprites
  46.   460SYS "WimpExt_LoadTemplates",q%,q%+12,iconbuf%,iconbuf%+&400,-1,"<SymPlayer$Dir>.Resources.Templates",iconspbuf%
  47.   470playwindow%=!q%
  48.   480infowindow%=q%!4
  49.   490volumewindow%=q%!8
  50.   500PROCinitmenus
  51.   510SYS "WimpExt_IconBarSprite",,,-1,"!SymPlayer",,3
  52.   520ENDPROC
  53.   530
  54.   540DEF PROCsettempatevalues
  55.   550PROCseticonstring(infowindow%,2,"© Charles Thomson, 1995")
  56.   560PROCseticonstring(infowindow%,3,"4.67 (15 July 1995)")
  57.   570ENDPROC
  58.   580
  59.   590DEF PROCinitmenus
  60.   600PROCiconmenuinit
  61.   610PROCplaymenuinit
  62.   620ENDPROC
  63.   630
  64.   640DEF PROCiconmenuinit
  65.   650$ibarmenu%="Sym Player"
  66.   660ibarmenu%!12=&70207
  67.   670ibarmenu%!20=44
  68.   680ibarmenu%!24=0
  69.   690ibarmenu%!28=0
  70.   700ibarmenu%!32=infowindow%
  71.   710ibarmenu%!36=&7000021
  72.   720$(ibarmenu%+40)="Info"
  73.   730ibarmenu%!52=&80
  74.   740ibarmenu%!56=-1
  75.   750ibarmenu%!60=&7000021
  76.   760$(ibarmenu%+64)="Quit"
  77.   770SYS "WimpExt_MenuWidth",,ibarmenu%
  78.   780ENDPROC
  79.   790
  80.   800DEF PROCplaymenuinit
  81.   810$playmenu%="Sym Player"
  82.   820playmenu%!12=&70207
  83.   830playmenu%!20=44
  84.   840playmenu%!24=0
  85.   850playmenu%!28=&80
  86.   860playmenu%!32=-1
  87.   870playmenu%!36=&7000021
  88.   880$(playmenu%+40)="Volume..."
  89.   890SYS "WimpExt_MenuWidth",,playmenu%
  90.   900ENDPROC
  91.   910
  92.   920DEF PROCloadsprites
  93.   930LOCAL yeig%,sprite$
  94.   940SYS "OS_ReadModeVariable",-1,5 TO ,,yeig%
  95.   950IF yeig%<2 THEN sprite$="Sprites22" ELSE sprite$="Sprites"
  96.   960!iconspbuf%=&8000:iconspbuf%!4=16
  97.   970SYS "OS_SpriteOp",&109,iconspbuf%
  98.   980SYS "OS_SpriteOp",&10A,iconspbuf%,("<SymPlayer$Dir>.Resources."+sprite$)
  99.   990ENDPROC
  100.  1000
  101.  1010DEF PROCmouseclick
  102.  1020CASE q%!12 OF
  103.  1030  WHEN -2:PROCiconbarclick
  104.  1040  WHEN playwindow%:PROCplaywindclick
  105.  1050  WHEN volumewindow%:PROCvolwindowclick
  106.  1060ENDCASE
  107.  1070ENDPROC
  108.  1080
  109.  1090DEF PROCiconbarclick
  110.  1100CASE q%!8 OF
  111.  1110  WHEN 1:PROCopendialoguebox(volumewindow%,64,0)
  112.  1120    PROCplacecaret(volumewindow%,0)
  113.  1130  WHEN 2:PROCopenmenu(ibarmenu%,!q%-64,184)
  114.  1140  WHEN 4:IF FNwindowisopen(playwindow%) THEN
  115.  1150    PROCclosewindow(playwindow%)
  116.  1160  ELSE
  117.  1170    PROCopenwindow(playwindow%)
  118.  1180  ENDIF
  119.  1190ENDCASE
  120.  1200ENDPROC
  121.  1210
  122.  1220DEF PROCplaywindclick
  123.  1230CASE q%!8 OF
  124.  1240  WHEN 1:CASE q%!16 OF
  125.  1250    WHEN 0:PROCMove(1)
  126.  1260    WHEN 4:PROCMove(-1)
  127.  1270  ENDCASE
  128.  1280  WHEN 2:PROCopenmenu(playmenu%,!q%-64,q%!4+32)
  129.  1290  WHEN 4:CASE q%!16 OF
  130.  1300    WHEN 0:PROCMove(-1)
  131.  1310    WHEN 1:PROCStop
  132.  1320    WHEN 2:PROCPause
  133.  1330    WHEN 3:PROCUnPause
  134.  1340    WHEN 4:PROCMove(1)
  135.  1350  ENDCASE
  136.  1360ENDCASE
  137.  1370ENDPROC
  138.  1380
  139.  1390DEF PROCvolwindowclick
  140.  1400CASE q%!16 OF
  141.  1410  WHEN 1,2:CASE q%!8 OF
  142.  1420    WHEN 1,4:PROCsetvolume
  143.  1430  ENDCASE
  144.  1440  WHEN 3:CASE q%!8 OF
  145.  1450    WHEN 1:PROCsetvolume
  146.  1460    WHEN 4:PROCsetvolume:PROCclosewindow(volumewindow%)
  147.  1470  ENDCASE
  148.  1480ENDCASE
  149.  1490ENDPROC
  150.  1500
  151.  1510DEF PROCsetvolume
  152.  1520LOCAL iconval%
  153.  1530SYS "WimpExt_GetNumberIcon",10,,volumewindow%,0 TO iconval%
  154.  1540PROCsetsymvolume(iconval%)
  155.  1550ENDPROC
  156.  1560
  157.  1570DEF PROCLoad(fname$)
  158.  1580LOCAL flags%
  159.  1590SYS "DSym_Load",-1
  160.  1600SYS "XDSym_Load",fname$,,0,,0 TO ;flags%
  161.  1610IF flags% AND 1 THEN
  162.  1620  REM Didn’t load tune
  163.  1630  PROCrequester("Warning from Symphony Player","Could not load tune","OK","","","",0)
  164.  1640ELSE
  165.  1650  maxpos%=FNmaxpos
  166.  1660  SYS "DSym_RestartSong"
  167.  1670  playing%=TRUE
  168.  1680  paused%=FALSE
  169.  1690ENDIF
  170.  1700ENDPROC
  171.  1710
  172.  1720DEF PROCPause
  173.  1730IF NOT paused% THEN SYS "DSym_Pause"
  174.  1740paused%=TRUE
  175.  1750ENDPROC
  176.  1760
  177.  1770DEF PROCUnPause
  178.  1780IF paused% THEN SYS "DSym_TuneControl",1
  179.  1790paused%=FALSE
  180.  1800ENDPROC
  181.  1810
  182.  1820DEF PROCStop
  183.  1830SYS "DSym_Load",-1
  184.  1840SYS "DSym_TuneControl",0
  185.  1850SYS "DSym_FlushOutput"
  186.  1860playing%=FALSE
  187.  1870paused%=FALSE
  188.  1880maxpos%=0
  189.  1890ENDPROC
  190.  1900
  191.  1910DEF PROCMove(direction%)
  192.  1920LOCAL currpos%,newpos%
  193.  1930SYS "DSym_SongPos",-1 TO currpos%
  194.  1940newpos%=currpos% + direction%
  195.  1950IF newpos%<0 THEN newpos%=0
  196.  1960IF newpos%>maxpos% THEN newpos%=maxpos%
  197.  1970IF newpos%<>currpos% THEN SYS "DSym_SongPos",newpos%
  198.  1980ENDPROC
  199.  1990
  200.  2000DEF FNmaxpos
  201.  2010LOCAL maxpos%
  202.  2020SYS"DSym_TuneInfo",0,0 TO maxpos%
  203.  2030=maxpos%-1
  204.  2040
  205.  2050DEF FNcurrpos
  206.  2060LOCAL pos%
  207.  2070SYS"DSym_SongPos",-1 TO pos%
  208.  2080=pos%
  209.  2090
  210.  2100DEF PROCsetsymvolume(volume%)
  211.  2110IF volume%>64 THEN volume%=64
  212.  2120IF volume%<0  THEN volume%=0
  213.  2130SYS "DSym_Vol",volume%
  214.  2140ENDPROC
  215.  2150
  216.  2160DEF PROCopenmenu(menu%,mx%,my%)
  217.  2170lastopenedmenu%=menu%
  218.  2180SYS "WimpExt_CreateMenu",,menu%,mx%,my%
  219.  2190ENDPROC
  220.  2200
  221.  2210DEF PROCmenuselect
  222.  2220CASE lastopenedmenu% OF
  223.  2230  WHEN ibarmenu%:CASE !q% OF
  224.  2240    WHEN 1:quit%=TRUE
  225.  2250  ENDCASE
  226.  2260  WHEN playmenu%:PROCopendialoguebox(volumewindow%,64,92):PROCplacecaret(volumewindow%,0)
  227.  2270ENDCASE
  228.  2280ENDPROC
  229.  2290
  230.  2300DEF PROCkeypress
  231.  2310CASE !q% OF
  232.  2320  WHEN volumewindow%:CASE q%!24 OF
  233.  2330    WHEN 13:
  234.  2340      PROCsetvolume
  235.  2350      PROCslabbutton(volumewindow%,3)
  236.  2360      PROCclosewindow(volumewindow%)
  237.  2370    OTHERWISE:SYS "Wimp_ProcessKey",q%!24
  238.  2380  OTHERWISE:SYS "Wimp_ProcessKey",q%!24
  239.  2390ENDCASE
  240.  2400ENDPROC
  241.  2410
  242.  2420DEF PROCmessage
  243.  2430    LOCAL fname$
  244.  2440CASE q%!16 OF
  245.  2450  WHEN 0:quit%=TRUE
  246.  2460  WHEN 3:PROCtrytoload
  247.  2470  WHEN 5:IF q%!40=&10B THEN
  248.  2480    fname$=FNstr0(q%+44)
  249.  2490    PROCackdataopen
  250.  2500    $(q%+44)=(fname$+CHR$(0))
  251.  2510    q%!40=&10B
  252.  2520    PROCtrytoload
  253.  2530  ENDIF
  254.  2540ENDCASE
  255.  2550ENDPROC
  256.  2560
  257.  2570DEF PROCtrytoload
  258.  2580LOCAL fname$,filetype%
  259.  2590fname$=FNstr0(q%+44)
  260.  2600filetype%=q%!40
  261.  2610IF filetype%=&10B THEN
  262.  2620  PROCLoad(fname$)
  263.  2630ENDIF
  264.  2640ENDPROC
  265.  2650
  266.  2660DEF FNstr0(pointer%)
  267.  2670LOCAL string$
  268.  2680string$=""
  269.  2690WHILE ?pointer%
  270.  2700 string$+=CHR$?pointer%
  271.  2710 pointer%+=1
  272.  2720ENDWHILE
  273.  2730=string$
  274.  2740
  275.  2750DEF PROCrequester(title$,message$,but1$,but2$,but3$,but4$,escbut%)
  276.  2760PROCbuildbuttonblock(but1$,but2$,but3$,but4$)
  277.  2770SYS "WimpExt_OpenRequester",,,title$,message$,immediatebuf%,escbut%
  278.  2780ENDPROC
  279.  2790
  280.  2800DEF PROCerror
  281.  2810LOCAL err_ok%
  282.  2820err_ok%=FALSE
  283.  2830PROCbuildbuttonblock("OK","Quit","","")
  284.  2840SYS "WimpExt_ControlImmediate",,2,"Error from Symphony Player",(REPORT$+" at line "+STR$(ERL)),immediatebuf%,1 TO quit%
  285.  2850
  286.  2860IF quit% THEN
  287.  2870  SYS "WimpExt_CloseDown",taskid%
  288.  2880  SYS "Wimp_CloseDown"
  289.  2890  END
  290.  2900ENDIF
  291.  2910
  292.  2920ENDPROC
  293.  2930
  294.  2940DEF PROCclosewindow(handle%)
  295.  2950!q%=handle%
  296.  2960SYS "WimpExt_CloseLinked",,q%
  297.  2970ENDPROC
  298.  2980
  299.  2990DEF PROCopenwindow(handle%)
  300.  3000!q%=handle%
  301.  3010SYS "Wimp_GetWindowState",,q%
  302.  3020SYS "WimpExt_CentreWindow",,q%+4
  303.  3030SYS "WimpExt_CentreWindowV",,q%+4
  304.  3040q%!28=-1
  305.  3050SYS "WimpExt_OpenLinked",,q%
  306.  3060ENDPROC
  307.  3070
  308.  3080DEF PROCautoredraw
  309.  3090SYS "WimpExt_AutoRedraw",,q%
  310.  3100ENDPROC
  311.  3110
  312.  3120DEF PROCbuildbuttonblock(but1$,but2$,but3$,but4$)
  313.  3130LOCAL bufptr%
  314.  3140$(immediatebuf%+bufptr%)=(LEFT$(but1$,7)+CHR$0)
  315.  3150bufptr%+=LEN($(immediatebuf%+bufptr%))
  316.  3160$(immediatebuf%+bufptr%)=(LEFT$(but2$,7)+CHR$0)
  317.  3170bufptr%+=LEN($(immediatebuf%+bufptr%))
  318.  3180$(immediatebuf%+bufptr%)=(LEFT$(but3$,7)+CHR$0)
  319.  3190bufptr%+=LEN($(immediatebuf%+bufptr%))
  320.  3200$(immediatebuf%+bufptr%)=(LEFT$(but4$,7)+CHR$0)
  321.  3210ENDPROC
  322.  3220
  323.  3230DEF PROCackdataopen
  324.  3240q%!12=q%!8
  325.  3250q%!16=4
  326.  3260SYS "Wimp_SendMessage",19,q%,q%!4
  327.  3270ENDPROC
  328.  3280
  329.  3290DEF PROCslabbutton(window%,icon%)
  330.  3300SYS "WimpExt_SlabIcon",,,window%,icon%
  331.  3310ENDPROC
  332.  3320
  333.  3330DEF FNgetvolume
  334.  3340LOCAL volume%
  335.  3350SYS "DSym_Vol",-1 TO volume%
  336.  3360=volume%
  337.  3370
  338.  3380DEF PROCplacecaret(winhandle%,ichandle%)
  339.  3390SYS "WimpExt_PutCaretIcon",,,winhandle%,ichandle%
  340.  3400ENDPROC
  341.  3410
  342.  3420DEF PROCopendialoguebox(winhandle%,xoff%,yoff%)
  343.  3430LOCAL vol%
  344.  3440IF winhandle%=volumewindow% THEN
  345.  3450  vol%=FNgetvolume
  346.  3460  SYS "WimpExt_SetNumberIcon",10,,volumewindow%,0,vol%
  347.  3470ENDIF
  348.  3480SYS "WimpExt_OpenDialogue",,,winhandle%,xoff%,yoff%
  349.  3490ENDPROC
  350.  3500
  351.  3510DEF FNwindowisopen(winhand%)
  352.  3520LOCAL open%
  353.  3530SYS "WimpExt_CheckWindowOpen",winhand% TO open%
  354.  3540=open%
  355.  3550
  356.  3560DEF PROCseticonstring(winhand%,ichand%,string$)
  357.  3570SYS "WimpExt_SetIconString",,,winhand%,ichand%,string$
  358.  3580ENDPROC
  359.