home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
utilities
/
utilst
/
tapedeck
/
!TapeDeck
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1995-08-02
|
32KB
|
1,226 lines
Tape Deck
by JJF
July 1994
(c) JJF 1994
"<Tape$Dir>.Lib"
ft%=&BBB
monitor%=
blk% &100,dat% &100,menu% &400,menu2% &200,menu3% &200,menuind% &100
ind% &2800,info% &200,index% &2800,fileinfo% &400,tuneinfo% &400
control% &800,save% &400
"Wimp_Initialise",200,&4B534154,"Tape Deck"
assemble
#*IconSprites <Tape$Dir>.Sprites
"Wimp_OpenTemplate",,"<Tape$Dir>.Templates"
"Wimp_LoadTemplate",,info%,ind%,ind%+&FF,-1,"Info"
"Wimp_CreateWindow",,info%
infoh%
"Wimp_LoadTemplate",,index%,ind%+&100,ind%+&1FFF,-1,"Index"
"Wimp_CreateWindow",,index%
indexh%
"Wimp_LoadTemplate",,fileinfo%,ind%+&2000,ind%+&20FF,-1,"FileInfo"
"Wimp_CreateWindow",,fileinfo%
fileinfoh%
"Wimp_LoadTemplate",,tuneinfo%,ind%+&2100,ind%+&21FF,-1,"TuneInfo"
"Wimp_CreateWindow",,tuneinfo%
tuneinfoh%
"Wimp_LoadTemplate",,control%,ind%+&2200,ind%+&23FF,-1,"Control"
"Wimp_CreateWindow",,control%
controlh%
"Wimp_LoadTemplate",,save%,ind%+&2400,ind%+&24FF,-1,"Save"
"Wimp_CreateWindow",,save%
saveh%
"Wimp_CloseTemplate"
drag_init
settext(infoh%,1,"Tape Deck (unregistered)")
pos%=4
loop=1
settext(indexh%,pos%,
(loop))
pos%+=5
,Lblk%!0=-1:blk%!4=0:blk%!8=0:blk%!12=68:blk%!16=68:blk%!20=(3<<12)+%11010
$(blk%+24)="!TapeDeck"
"Wimp_CreateIcon",,blk%
iconbarh%
settext(controlh%,7,"stopp")
dummy%=
type$(5)
5?type$()="","Symphony","Coco","Tracker","Krisalis","Tracker"
nolists%=8
name$(nolists%,50),author$(nolists%,50),type%(nolists%,50),path$(nolists%,50),list$(nolists%),entries%(nolists%)
loop=1
nolists%:list$(loop)="List no "+
(loop):entries%(loop)=0:
curlist%=1
curmenu%=0
seltune%=0
file$="IndexFile"
loadedtune%=0
loadedlist%=0
status%=0:status2%=0
tunelen$="0000":tunepos%=0
tunefin%=
:maxsofar%=0
vol%=64:
changevolume(0)
arcfs%=
checkload
error
a GOTO points to here - don't change the line numbers!
"Wimp_Poll",0,blk%
reason%
reason%
"Wimp_OpenWindow",,blk%
"Wimp_CloseWindow",,blk%
click
draggedbox
select
17,18:
message
status%=3
update
status%=3
status2%>0
tunefin%=
cycle
message
blk%!16
cleartune:
"Wimp_CloseDown":
savedata
3,5:
recieve:
"Hourglass_Off"
1282:
click
mx%=!blk%:my%=blk%!4
blk%!8=2
blk%!12=-2
iconbarmenu:
blk%!8=4
blk%!12=-2
openindex:
opencontrol:
blk%!8=1
blk%!12=-2
status%=3
monitor:
blk%!8=2
blk%!12=indexh%
indexmenu:
blk%!8=4
blk%!12=indexh%
endcycle:
seltune(curlist%,((blk%!16)+1)
error%=
loadtune:
playtune:
blk%!8=1
blk%!12=indexh%
endcycle:
seltune(curlist%,((blk%!16)+1)
error%=
loadtune:
monitor:
(blk%!8=4
blk%!8=1)
blk%!12=controlh%
clickcontrol
blk%!12=saveh%
blk%!16
savedata2
select
curmenu%
blk%!0
openindex
opencontrol
monitor
blk%!4<>-1
arcfs%=
arcfs%=
blk%!4<>-1 arcfs%=
cleartune:
"Wimp_CloseDown":
blk%!0
blk%!4
blk%!8>-1 name$(curlist%,seltune%)=
ctrlstring(menuind%+15):
settext(indexh%,((seltune%-1)*5)+5,name$(curlist%,seltune%)):
loadedlist%=curlist%
loadedtune%=seltune%
settext(controlh%,0,name$(curlist%,seltune%))
blk%!8>-1 author$(curlist%,seltune%)=
ctrlstring(menuind%+50):
settext(indexh%,((seltune%-1)*5)+6,author$(curlist%,seltune%))
blk%!8>-1
delete
opendir
blk%!4>-1 oldlist%=curlist%:curlist%=(blk%!4)+1:
entries%(curlist%)>entries%(oldlist%)
entries%(curlist%)=entries%(oldlist%)
indexdata(curlist%,entries%(curlist%))
indexdata(curlist%,entries%(oldlist%))
blk%!4=0 list$(curlist%)=
ctrlstring(menuind%)
blk%!4
namesort
authorsort
fnamesort
blk%!0
saveh%:
blk%!24=13
savedata2
"Wimp_ProcessKey",blk%!24
iconbarmenu
setmenublock(menu%,"Tape Deck",170)
addmenuitem(menu%+28,0,infoh%,((7<<24)+%10001),"Info")
addmenuitem(menu%+52,0,-1,((7<<24)+%10001),"Tune List")
addmenuitem(menu%+76,0,-1,((7<<24)+%10001),"Control")
checkmenuitem2(menu%+100,0,-1,((7<<24)+%10001),&7000021-(
<<22),"Monitor",status%=3)
addmenuitem(menu%+124,0,menu%+172,((7<<24)+%10001),"Config")
addmenuitem(menu%+148,128,-1,((7<<24)+%10001),"Quit")
setmenublock(menu%+172,"Config",116)
checkmenuitem1(menu%+200,128,129,-1,((7<<24)+%10001),"ArcFS",arcfs%=
"Wimp_CreateMenu",,menu%,mx%-64,336
curmenu%=1
openindex
blk%!0=indexh%
"Wimp_GetWindowState",,blk%
blk%!28=-1
"Wimp_OpenWindow",,blk%
recieve
filetype%,filename$
"Hourglass_On"
filetype%=blk%!40
type%=0
filetype%=&10B type%=1
filetype%=&365 type%=2
filetype%=&000
filetype%=&001
filetype%=&002
filetype%=&CB6 type%=3
filetype%=&CC5 type%=0:
Strangely, Krisalis music modules won't work...
blk%!16=5
type%=0
filetype%<>ft%
type%=type%(loadedlist%,loadedtune%)
status%>0
stoptune:
cleartune
filetype%=blk%!40
"filename$=
ctrlstring(blk%+44)
blk%!12=blk%!8
blk%!16=4
"Wimp_SendMessage",17,blk%,blk%!4
filetype%=ft%
loaddata(filename$):
entries%(curlist%)=50
whinge("No room in this list!"):
type%=0
whinge("I don't know what this is, but I can't do anything with it!"):
(type%=3
type%=4)
status%=3
(type%(loadedlist%,loadedtune%)=3
type%(loadedlist%,loadedtune%)=4)
whinge("Sorry - I can't index this whilst the current tune is playing!"):
entries%(curlist%)+=1
type%
1:name$(curlist%,entries%(curlist%))=
tracktext(filename$,&80):author$(curlist%,entries%(curlist%))="unknown"
2:name$(curlist%,entries%(curlist%))=
gettext(filename$,1,10):author$(curlist%,entries%(curlist%))="unknown"
3,4:
"XQTM_Load",filename$,0
;flags%:
(flags%
1)=1
type%=5
"Tracker_Load",filename$
"Tracker_TuneInfo"
,,,name%,author%
<name$(curlist%,entries%(curlist%))=
gettext2(name%,0,29)
author%=0
author$(curlist%,entries%(curlist%))="unknown"
author$(curlist%,entries%(curlist%))=
gettext2(author%,0,29)
"Tracker_Stop"
"QTM_Info"
name%,author%,,chan%:
"QTM_Clear":name$(curlist%,entries%(curlist%))=
gettext2(name%,0,20)
author%=0 author$(curlist%,entries%(curlist%))="unknown"
author$(curlist%,entries%(curlist%))=
gettext2(author%,0,22)
,type%(curlist%,entries%(curlist%))=type%
0path$(curlist%,entries%(curlist%))=filename$
settext(indexh%,entries%(curlist%)*5,name$(curlist%,entries%(curlist%)))
settext(indexh%,(entries%(curlist%)*5)+1,author$(curlist%,entries%(curlist%)))
settext(indexh%,(entries%(curlist%)*5)+2,type$(type%(curlist%,entries%(curlist%))))
indexdata(list%,upto%)
loop
"Hourglass_On"
y!dat%=indexh%:
"Wimp_GetWindowState",,dat%:!blk%=indexh%:
"Wimp_GetWindowState",,blk%:
"Wimp_CloseWindow",,dat%
loop=1
upto%
settext(indexh%,(loop*5),name$(list%,loop))
settext(indexh%,(loop*5)+1,author$(list%,loop))
settext(indexh%,(loop*5)+2,type$(type%(list%,loop)))
front=dat%!28
"Wimp_OpenWindow",,blk%
"Hourglass_Off"
indexmenu
loop,tot%
curmenu%=2
seltune%=((blk%!16)+1)
5tot%=0:
loop=1
nolists%:tot%+=entries%(loop):
Main Menu
setmenublock(menu%,"Tune List",200)
addmenuitem(menu%+28,0,menu%+240,((7<<24)+%10001),"Misc")
checkmenuitem2(menu%+52,0,saveh%,((7<<24)+%10001),&7000021-(
<<22),"Save",tot%>0
checkmenuitem2(menu%+76,0,menu%+320,((7<<24)+%10001),&7000021-(
<<22),"Tune",seltune%<(entries%(curlist%)+1)
seltune%>0)
addmenuitem(menu%+100,0,menu2%,((7<<24)+%10001),"View Lists")
addmenuitem(menu%+124,0,menu%+180,((7<<24)+%10001),"Rename List")
checkmenuitem2(menu%+148,128,menu%+600,((7<<24)+%10001),&7000021-(
<<22),"Sort Tunes",entries%(curlist%)>1
status2%=0)
Sub Menues
setmenublock(menu%+180,"Name:",170)
addindirectmenuitem(menu%+208,132,-1,&7000119,list$(curlist%),menuind%,10)
setmenublock(menu%+240,"Misc",100)
addmenuitem(menu%+268,0,infoh%,((7<<24)+%10001),"Info")
addmenuitem(menu%+292,128,fileinfoh%,((7<<24)+%10001),"File")
setmenublock(menu%+320,"Tune",190)
addmenuitem(menu%+348,0,tuneinfoh%,((7<<24)+%10001),"Info")
addmenuitem(menu%+372,0,menu%+496,((7<<24)+%10001),"Edit Name")
addmenuitem(menu%+396,2,menu%+548,((7<<24)+%10001),"Edit Author")
addmenuitem(menu%+420,0,menu3%,((7<<24)+%10001),"Move Tune")
addmenuitem(menu%+444,0,-1,((7<<24)+%10001),"Remove Tune")
addmenuitem(menu%+468,128,-1,((7<<24)+%10001),"Open Dir")
setmenublock(menu%+496,"Name:",200)
addindirectmenuitem(menu%+524,132,-1,&7000119,name$(curlist%,seltune%),menuind%+15,24)
setmenublock(menu%+548,"Author:",200)
addindirectmenuitem(menu%+576,132,-1,&7000119,author$(curlist%,seltune%),menuind%+50,24)
setmenublock(menu%+600,"Sort by",145)
addmenuitem(menu%+628,0,-1,((7<<24)+%10001),"Name")
addmenuitem(men