home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilst / tapedeck / !TapeDeck / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1995-08-02  |  32KB  |  1,226 lines

  1.  Tape Deck
  2.  by JJF
  3.  July 1994
  4.  (c) JJF 1994
  5.  "<Tape$Dir>.Lib"
  6. ft%=&BBB
  7. monitor%=
  8.  blk% &100,dat% &100,menu% &400,menu2% &200,menu3% &200,menuind% &100
  9.  ind% &2800,info% &200,index% &2800,fileinfo% &400,tuneinfo% &400
  10.  control% &800,save% &400
  11.  "Wimp_Initialise",200,&4B534154,"Tape Deck"
  12. assemble
  13. #*IconSprites <Tape$Dir>.Sprites
  14.  "Wimp_OpenTemplate",,"<Tape$Dir>.Templates"
  15.  "Wimp_LoadTemplate",,info%,ind%,ind%+&FF,-1,"Info"
  16.  "Wimp_CreateWindow",,info% 
  17.  infoh%
  18.  "Wimp_LoadTemplate",,index%,ind%+&100,ind%+&1FFF,-1,"Index"
  19.  "Wimp_CreateWindow",,index% 
  20.  indexh%
  21.  "Wimp_LoadTemplate",,fileinfo%,ind%+&2000,ind%+&20FF,-1,"FileInfo"
  22.  "Wimp_CreateWindow",,fileinfo% 
  23.  fileinfoh%
  24.  "Wimp_LoadTemplate",,tuneinfo%,ind%+&2100,ind%+&21FF,-1,"TuneInfo"
  25.  "Wimp_CreateWindow",,tuneinfo% 
  26.  tuneinfoh%
  27.  "Wimp_LoadTemplate",,control%,ind%+&2200,ind%+&23FF,-1,"Control"
  28.  "Wimp_CreateWindow",,control% 
  29.  controlh%
  30.  "Wimp_LoadTemplate",,save%,ind%+&2400,ind%+&24FF,-1,"Save"
  31.  "Wimp_CreateWindow",,save% 
  32.  saveh%
  33.  "Wimp_CloseTemplate"
  34. drag_init
  35. settext(infoh%,1,"Tape Deck (unregistered)")
  36. pos%=4
  37.  loop=1 
  38. settext(indexh%,pos%,
  39. (loop))
  40. pos%+=5
  41. ,Lblk%!0=-1:blk%!4=0:blk%!8=0:blk%!12=68:blk%!16=68:blk%!20=(3<<12)+%11010
  42. $(blk%+24)="!TapeDeck"
  43.  "Wimp_CreateIcon",,blk% 
  44.  iconbarh%
  45. settext(controlh%,7,"stopp")
  46. dummy%=
  47.  type$(5)
  48. 5?type$()="","Symphony","Coco","Tracker","Krisalis","Tracker"
  49. nolists%=8
  50.  name$(nolists%,50),author$(nolists%,50),type%(nolists%,50),path$(nolists%,50),list$(nolists%),entries%(nolists%)
  51.  loop=1 
  52.  nolists%:list$(loop)="List no "+
  53. (loop):entries%(loop)=0:
  54. curlist%=1
  55. curmenu%=0
  56. seltune%=0
  57. file$="IndexFile"
  58. loadedtune%=0
  59. loadedlist%=0
  60. status%=0:status2%=0
  61. tunelen$="0000":tunepos%=0
  62. tunefin%=
  63. :maxsofar%=0
  64. vol%=64:
  65. changevolume(0)
  66. arcfs%=
  67. checkload
  68. error
  69.  a GOTO points to here - don't change the line numbers!
  70.  "Wimp_Poll",0,blk% 
  71.  reason%
  72.  reason% 
  73.  "Wimp_OpenWindow",,blk%
  74.  "Wimp_CloseWindow",,blk%
  75. click
  76. draggedbox
  77. select
  78.  17,18:
  79. message
  80.  status%=3 
  81. update
  82.  status%=3 
  83.  status2%>0 
  84.  tunefin%=
  85. cycle
  86. message
  87.  blk%!16 
  88. cleartune:
  89.  "Wimp_CloseDown":
  90. savedata
  91.  3,5:
  92. recieve:
  93.  "Hourglass_Off"
  94.  1282:
  95. click
  96. mx%=!blk%:my%=blk%!4
  97.  blk%!8=2 
  98.  blk%!12=-2 
  99. iconbarmenu:
  100.  blk%!8=4 
  101.  blk%!12=-2 
  102. openindex:
  103. opencontrol:
  104.  blk%!8=1 
  105.  blk%!12=-2 
  106.  status%=3 
  107. monitor:
  108.  blk%!8=2 
  109.  blk%!12=indexh% 
  110. indexmenu:
  111.  blk%!8=4 
  112.  blk%!12=indexh% 
  113. endcycle:
  114. seltune(curlist%,((blk%!16)+1)
  115.  error%=
  116. loadtune:
  117. playtune:
  118.  blk%!8=1 
  119.  blk%!12=indexh% 
  120. endcycle:
  121. seltune(curlist%,((blk%!16)+1)
  122.  error%=
  123. loadtune:
  124. monitor:
  125.  (blk%!8=4 
  126.  blk%!8=1) 
  127.  blk%!12=controlh% 
  128. clickcontrol
  129.  blk%!12=saveh% 
  130.  blk%!16 
  131. savedata2
  132. select
  133.  curmenu% 
  134.  blk%!0 
  135. openindex
  136. opencontrol
  137. monitor
  138.  blk%!4<>-1 
  139.  arcfs%=
  140.  arcfs%=
  141.  blk%!4<>-1 arcfs%=
  142. cleartune:
  143.  "Wimp_CloseDown":
  144.  blk%!0 
  145.  blk%!4 
  146.  blk%!8>-1 name$(curlist%,seltune%)=
  147. ctrlstring(menuind%+15):
  148. settext(indexh%,((seltune%-1)*5)+5,name$(curlist%,seltune%)):
  149.  loadedlist%=curlist% 
  150.  loadedtune%=seltune% 
  151. settext(controlh%,0,name$(curlist%,seltune%))
  152.  blk%!8>-1 author$(curlist%,seltune%)=
  153. ctrlstring(menuind%+50):
  154. settext(indexh%,((seltune%-1)*5)+6,author$(curlist%,seltune%))
  155.  blk%!8>-1 
  156. delete
  157. opendir
  158.  blk%!4>-1 oldlist%=curlist%:curlist%=(blk%!4)+1:
  159.  entries%(curlist%)>entries%(oldlist%) 
  160.  entries%(curlist%)=entries%(oldlist%) 
  161. indexdata(curlist%,entries%(curlist%)) 
  162. indexdata(curlist%,entries%(oldlist%))
  163.  blk%!4=0 list$(curlist%)=
  164. ctrlstring(menuind%)
  165.  blk%!4 
  166. namesort
  167. authorsort
  168. fnamesort
  169.  blk%!0 
  170.  saveh%:
  171.  blk%!24=13 
  172. savedata2
  173.  "Wimp_ProcessKey",blk%!24
  174. iconbarmenu
  175. setmenublock(menu%,"Tape Deck",170)
  176. addmenuitem(menu%+28,0,infoh%,((7<<24)+%10001),"Info")
  177. addmenuitem(menu%+52,0,-1,((7<<24)+%10001),"Tune List")
  178. addmenuitem(menu%+76,0,-1,((7<<24)+%10001),"Control")
  179. checkmenuitem2(menu%+100,0,-1,((7<<24)+%10001),&7000021-(
  180. <<22),"Monitor",status%=3)
  181. addmenuitem(menu%+124,0,menu%+172,((7<<24)+%10001),"Config")
  182. addmenuitem(menu%+148,128,-1,((7<<24)+%10001),"Quit")
  183. setmenublock(menu%+172,"Config",116)
  184. checkmenuitem1(menu%+200,128,129,-1,((7<<24)+%10001),"ArcFS",arcfs%=
  185.  "Wimp_CreateMenu",,menu%,mx%-64,336
  186. curmenu%=1
  187. openindex
  188. blk%!0=indexh%
  189.  "Wimp_GetWindowState",,blk%
  190. blk%!28=-1
  191.  "Wimp_OpenWindow",,blk%
  192. recieve
  193.  filetype%,filename$
  194.  "Hourglass_On"
  195. filetype%=blk%!40
  196. type%=0
  197.  filetype%=&10B type%=1
  198.  filetype%=&365 type%=2
  199.  filetype%=&000 
  200.  filetype%=&001 
  201.  filetype%=&002 
  202.  filetype%=&CB6 type%=3
  203.  filetype%=&CC5 type%=0:
  204.  Strangely, Krisalis music modules won't work...
  205.  blk%!16=5 
  206.  type%=0 
  207.  filetype%<>ft% 
  208.  type%=type%(loadedlist%,loadedtune%) 
  209.  status%>0 
  210. stoptune:
  211. cleartune
  212. filetype%=blk%!40
  213. "filename$=
  214. ctrlstring(blk%+44)
  215. blk%!12=blk%!8
  216. blk%!16=4
  217.  "Wimp_SendMessage",17,blk%,blk%!4
  218.  filetype%=ft% 
  219. loaddata(filename$):
  220.  entries%(curlist%)=50 
  221. whinge("No room in this list!"):
  222.  type%=0 
  223. whinge("I don't know what this is, but I can't do anything with it!"):
  224.  (type%=3 
  225.  type%=4) 
  226.  status%=3 
  227.  (type%(loadedlist%,loadedtune%)=3 
  228.  type%(loadedlist%,loadedtune%)=4) 
  229. whinge("Sorry - I can't index this whilst the current tune is playing!"):
  230. entries%(curlist%)+=1
  231.  type% 
  232.  1:name$(curlist%,entries%(curlist%))=
  233. tracktext(filename$,&80):author$(curlist%,entries%(curlist%))="unknown"
  234.  2:name$(curlist%,entries%(curlist%))=
  235. gettext(filename$,1,10):author$(curlist%,entries%(curlist%))="unknown"
  236.  3,4:
  237.  "XQTM_Load",filename$,0 
  238.  ;flags%:
  239.  (flags% 
  240.  1)=1 
  241. type%=5
  242.  "Tracker_Load",filename$
  243.  "Tracker_TuneInfo" 
  244.  ,,,name%,author%
  245. <name$(curlist%,entries%(curlist%))=
  246. gettext2(name%,0,29)
  247.  author%=0 
  248.  author$(curlist%,entries%(curlist%))="unknown" 
  249.  author$(curlist%,entries%(curlist%))=
  250. gettext2(author%,0,29)
  251.  "Tracker_Stop"
  252.  "QTM_Info" 
  253.  name%,author%,,chan%:
  254.  "QTM_Clear":name$(curlist%,entries%(curlist%))=
  255. gettext2(name%,0,20)
  256.  author%=0 author$(curlist%,entries%(curlist%))="unknown" 
  257.  author$(curlist%,entries%(curlist%))=
  258. gettext2(author%,0,22)
  259. ,type%(curlist%,entries%(curlist%))=type%
  260. 0path$(curlist%,entries%(curlist%))=filename$
  261. settext(indexh%,entries%(curlist%)*5,name$(curlist%,entries%(curlist%)))
  262. settext(indexh%,(entries%(curlist%)*5)+1,author$(curlist%,entries%(curlist%)))
  263. settext(indexh%,(entries%(curlist%)*5)+2,type$(type%(curlist%,entries%(curlist%))))
  264. indexdata(list%,upto%)
  265.  loop
  266.  "Hourglass_On"
  267. y!dat%=indexh%:
  268.  "Wimp_GetWindowState",,dat%:!blk%=indexh%:
  269.  "Wimp_GetWindowState",,blk%:
  270.  "Wimp_CloseWindow",,dat%
  271.  loop=1 
  272.  upto%
  273. settext(indexh%,(loop*5),name$(list%,loop))
  274. settext(indexh%,(loop*5)+1,author$(list%,loop))
  275. settext(indexh%,(loop*5)+2,type$(type%(list%,loop)))
  276. front=dat%!28
  277.  "Wimp_OpenWindow",,blk%
  278.  "Hourglass_Off"
  279. indexmenu
  280.  loop,tot%
  281. curmenu%=2
  282. seltune%=((blk%!16)+1)
  283. 5tot%=0:
  284.  loop=1 
  285.  nolists%:tot%+=entries%(loop):
  286.  Main Menu
  287. setmenublock(menu%,"Tune List",200)
  288. addmenuitem(menu%+28,0,menu%+240,((7<<24)+%10001),"Misc")
  289. checkmenuitem2(menu%+52,0,saveh%,((7<<24)+%10001),&7000021-(
  290. <<22),"Save",tot%>0 
  291. checkmenuitem2(menu%+76,0,menu%+320,((7<<24)+%10001),&7000021-(
  292. <<22),"Tune",seltune%<(entries%(curlist%)+1) 
  293.  seltune%>0)
  294. addmenuitem(menu%+100,0,menu2%,((7<<24)+%10001),"View Lists")
  295. addmenuitem(menu%+124,0,menu%+180,((7<<24)+%10001),"Rename List")
  296. checkmenuitem2(menu%+148,128,menu%+600,((7<<24)+%10001),&7000021-(
  297. <<22),"Sort Tunes",entries%(curlist%)>1 
  298.  status2%=0)
  299.  Sub Menues
  300. setmenublock(menu%+180,"Name:",170)
  301. addindirectmenuitem(menu%+208,132,-1,&7000119,list$(curlist%),menuind%,10)
  302. setmenublock(menu%+240,"Misc",100)
  303. addmenuitem(menu%+268,0,infoh%,((7<<24)+%10001),"Info")
  304. addmenuitem(menu%+292,128,fileinfoh%,((7<<24)+%10001),"File")
  305. setmenublock(menu%+320,"Tune",190)
  306. addmenuitem(menu%+348,0,tuneinfoh%,((7<<24)+%10001),"Info")
  307. addmenuitem(menu%+372,0,menu%+496,((7<<24)+%10001),"Edit Name")
  308. addmenuitem(menu%+396,2,menu%+548,((7<<24)+%10001),"Edit Author")
  309. addmenuitem(menu%+420,0,menu3%,((7<<24)+%10001),"Move Tune")
  310. addmenuitem(menu%+444,0,-1,((7<<24)+%10001),"Remove Tune")
  311. addmenuitem(menu%+468,128,-1,((7<<24)+%10001),"Open Dir")
  312. setmenublock(menu%+496,"Name:",200)
  313. addindirectmenuitem(menu%+524,132,-1,&7000119,name$(curlist%,seltune%),menuind%+15,24)
  314. setmenublock(menu%+548,"Author:",200)
  315. addindirectmenuitem(menu%+576,132,-1,&7000119,author$(curlist%,seltune%),menuind%+50,24)
  316. setmenublock(menu%+600,"Sort by",145)
  317. addmenuitem(menu%+628,0,-1,((7<<24)+%10001),"Name")
  318. addmenuitem(men