home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RISC DISC 2
/
RISC_DISC_2.iso
/
pd_share
/
utilities
/
disc
/
qwikcd
/
!QwikCD
/
!RunImage
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
RISC OS BBC BASIC V Source
|
1994-12-29
|
23.2 KB
|
1,095 lines
> !RunImage for !QwikCD
1994 Chris Jackson
A quick audio CD player!
$+" at line "+
*task%=
Wimp_Initialise("QwikCD",&1000)
CDFSControl% 16,block% 8,Tracks$(100),Pos%(100)
Quit%=
polls%=0
time%=0
Diddle%=
Repeat%=
Pause%=
Playing%=
col%=6
step%=-1
"Version$="V1.00 (29 Dec 1994)"
LoadSprs("<QwikCD$Dir>.Sprites")
Fonts% 255
i%=0
Fonts%?i%=0
%icon%=
Wimp_CreateIcon("!QwikCD")
LoadMessages("<QwikCD$Dir>.Messages")
LoadScrolly("<QwikCD$Dir>.!RunZTxt")
Wimp_OpenTemplate("<QwikCD$Dir>.Templates")
1Info%=
Wimp_TempToWin("Info",sprites%,Fonts%)
5Player%=
Wimp_TempToWin("Player",sprites%,Fonts%)
5Author%=
Wimp_TempToWin("Author",sprites%,fonts%)
5Config%=
Wimp_TempToWin("Config",sprites%,Fonts%)
6NewCD%=
Wimp_TempToWin("NEwCDEh?",sprites%,Fonts%)
<CDDetails%=
Wimp_TempToWin("YerDetails",sprites%,Fonts%)
!7Scrolly%=
Wimp_TempToWin("Scrolly",sprites%,Fonts%)
Wimp_CloseTemplate
Wimp_PutIconText(Info%,7,Version$)
GatherConfig
LoadConfig
FillInConfig
SetUpMenus
InitCD(Device%)
CheckOutDisc
OpenControl%
OpenPlayer
Status(s%)
s%<>0
AutoPlay%
"Wimp_Poll",,b%
1 :
"Wimp_RedrawWindow",,b%
2 :
OpenWin
3 :
CloseWin
6 :
Mouse(b%!12,b%!16,b%!8)
9 :
17,18 :
Diddle%<>
FillInfoVers
Quit%=
User_CloseDown
CloseWin
b%!0=Scrolly%
Diddle%=
InfoAt%=InfoSpuff%
"Wimp_CloseWindow",,b%
OpenWin
b%!0=NewCD%
MoOpInWin(CDDetails%,NewCD%,1,b%!28)
"Wimp_OpenWindow",,b%
stat%
Status(stat%)
stat%
0 :
UpdateClock
1 :
Pause(3)
3 :
Repeat%
Playing%
Play(First%)
polls%+=1
polls%>50
HowBigIsCD(len%)
len%<>CurrentCDlen%
CheckOutDisc
polls%=0
UpdateClock
Pause%=
Pause%=
SetPauseIcon
Playing%=
Playing%=
"XCD_EnquireAddress",1,,,,,,,CDFSControl%
part%;S%
Wimp_PutIconText(Player%,11,"00:00")
Wimp_PutIconText(Player%,11,
MinsAndSecs(part%))
WhichTrack
WhichTrack
time%
"XCD_EnquireAddress",0,,,,,,,CDFSControl%
time%;S%
Track(time%)
Tr%<>OldTrack%
Wimp_PutIconText(Player%,8,
(Tr%))
Wimp_PutIconText(Player%,7,Tracks$(Tr%))
OldTrack%=Tr%
Track(time%)
(i=100)
(Pos%(i)>time%)
(Pos%(i)=-1)
i>Last% i=Last%
i<First% i=First%
MinsAndSecs(from%)
mins$,secs$
mins$=
Mins(from%))
secs$=
Secs(from%))
(mins$)<2 mins$="0"+mins$
(secs$)<2 secs$="0"+secs$
=mins$+":"+secs$
Mins(this%)
=(this%
16711681)>>16
Secs(this%)
=((this%
65535)>>8)
Frames(this%)
=(this%
255)
SMins(this%)
SSecs(this%)
User_CloseDown
i%=0
Fonts%?i%>0
"Font_LoseFont",i%
Fonts%?i%-=1
"XMessageTrans_CloseFile",u%
"XOS_Module",7,,u%
"Wimp_CloseDown"
b%!16
0 : Quit%=
&502 :
HelpRequest(b%!32,b%!36)
HelpRequest(win%,ic%)
begin$,ic$,Help$,type%
win%
Player% : begin$="Player":type%=0
Info% : begin$="Info":type%=0
Author% : begin$="Author":type%=0
-2 : begin$="Bar":ic%=-1:type%=0
type%=0
(ic%)
ic%=-1 ic$=""
%Help$=
LookupMsg(begin$+ic$)+"|M"
Help$=""
Help$<>""
b%!0=(24+
(Help$)+1)
b%!12=b%!8
b%!16=&503
$(b%+20)=Help$+
"Wimp_SendMessage",17,b%,b%!4
pass$,sdot%,a$,b$,c$,entry%
entry%=b%!4
Wimp_MenuSelection(b%,m$,but%)
sdot%=
m$,".",
m$,".")+1)
sdot%<>0
pass$=
(m$)-sdot%)
m$,sdot%-1)
LookupMsg("MIconbar")+"."+
LookupMsg("MIconbar1") :
OpenPlayer
LookupMsg("MIconbar")+"."+
LookupMsg("MIconbar2") :
OpenConfig
LookupMsg("MPlayer")+"."+
LookupMsg("MPlayer0") :
PlayTrack(pass$)
(m$)-
m$,"."))
LookupMsg("MPlayer1") :
Rewind
LookupMsg("MPlayer2") :
LookupMsg("MPlayer3") :
Pause(1)
LookupMsg("MPlayer4") :
Play(First%)
LookupMsg("MPlayer5") :
(pass$)<>0
entry%<>TICKentry%
TICKentry%<>-1
Wimp_TickMenuEntry(mb%,TICKentry%)
Wimp_TickMenuEntry(mb%,entry%)
TICKentry%=entry%
but%=1
"Wimp_CreateMenu",,M%,x%,y%
PlayTrack(name$)
name$=
name$,
(name$)-1)
i=First%-1
(i=Last%)
(Tracks$(i)=name$)
Tracks$(i)=name$
Play(i):i=1
Rewind
toplay%
"XCD_EnquireAddress",0,,,,,,,CDFSControl%
part%;S%
toplay%=
Track(part%)
part%<Pos%(toplay%)+100 toplay%-=1
toplay%<First% toplay%=Last%
Play(toplay%)
toplay%
"XCD_EnquireAddress",0,,,,,,,CDFSControl%
part%;S%
toplay%=
Track(part%)+1
toplay%>Last% toplay%=First%
Play(toplay%)
Mouse(win%,ic%,but%)
win%
-2 :
but%
1,4 :
OpenPlayer
2 :
IconMenu
Player% :
but%
1,4 :
ic%
15 :
CheckOutDisc
Wimp_SetButtonState(Player%,15,
13 :
Rewind
Wimp_SetButtonState(Player%,13,
2 :
Wimp_SetButtonState(Player%,2,
4 :
Pause(2)
Wimp_SetButtonState(Player%,4,
3 :
Play(First%)
Wimp_SetButtonState(Player%,3,
1 :
Wimp_SetButtonState(Player%,1,
2 :
PlayerMenu(b%!0,b%!4,
Wimp_GetIconText(Player%,7))
Info% :
ic%
2 :
RunHelp
7 :
(but%
16)
diddle
9 :
OpenAuthor
Config% :
ic%
7 :
FillInConfig:
Wimp_CloseWindow(Config%)
6 :
GatherConfig:
SaveConfig:
Wimp_CloseWindow(Config%)
NewCD% :
ic%
0 :
SaveNewCD
2 :
CloseNewCD
diddle
Diddle%=
Wimp_PutIconText(Scrolly%,1,
52," "))
InfoAt%=InfoSpuff%
CentreWin(Scrolly%,
FillInfoVers
Diddle%=-2
Wimp_PutIconText(Scrolly%,1,
Wimp_GetIconText(Scrolly%,1),51)+
NextChr)
Diddle%=-1
Diddle%=-2
NextChr
((?InfoAt%)
InfoAt%+=1
((?InfoAt%)
&71)=255 InfoAt%=InfoSpuff%
CloseNewCD
i%,z%
z%=((Last%-First%)*2)+4
!b%=CDDetails%
b%!4=i%
"Wimp_DeleteIcon",,b%
M i%+=1
i%=z%
Wimp_CloseWindow(CDDetails%)
Wimp_CloseWindow(NewCD%)
CopyAllRest(cept$)
from%,to%,out%,s$
out%=
V!from%=
("<QwikCD$Dir>.MyCDs")
W to%=
("<QwikCD$Dir>.MyCDsX")
#from%
s$,4)="{CD=" out%=
s$=cept$ out%=
out%=
#to%,s$
#from%
#from%
"XWimp_StartTask","Delete <QwikCD$Dir>.MyCDs"
"XWimp_StartTask","Rename <QwikCD$Dir>.MyCDsX <QwikCD$Dir>.MyCDs"
"XWimp_StartTask","SetType <QwikCD$Dir>.MyCDs Text"
SaveNewCD
file%,t%,z%,len%
HowBigIsCD(len%)
CopyAllRest("{CD="+
(len%)+"}")
i!file%=
("<QwikCD$Dir>.MyCDs")
#file%=
#file%
#file%,"{CD="+
(len%)+"}"
#file%,
Wimp_GetIconText(CDDetails%,1)
t%=First%
Last%
#file%,
Wimp_GetIconText(CDDetails%,3+(z%*2))
p z%+=1
#file%
CloseNewCD
CheckOutDisc
SetUpCDDetails
last%,tx%,tr%,len%
!b%=CDDetails%
"Wimp_GetWindowInfo",,b%
56 per track
|"len%=62+((Last%-First%)*56)+60
len%<290 len%=290
b%!0=b%!44
b%!4=-len%
b%!8=b%!52
b%!12=b%!56
"Wimp_SetExtent",CDDetails%,b%
last%=2
Wimp_PutIconText(CDDetails%,1,Tracks$(0))
First%<>Last%
t%=First%+1
Last%
,tr%=
Wimp_CopyIconDown(CDDetails%,last%)
.tx%=
Wimp_CopyIconDown(CDDetails%,last%+1)
last%=tr%
Wimp_PutIconText(CDDetails%,tr%,
(t%)+":")
Wimp_PutIconText(CDDetails%,tx%,Tracks$(t%))
Wimp_PutIconText(CDDetails%,2,
(First%)+":")
Wimp_PutIconText(CDDetails%,3,Tracks$(First%))
OpenNewCD
SetUpCDDetails
CentreWin(NewCD%,
MoOpInWin(CDDetails%,NewCD%,1,-1)
MoOpInWin(win%,in%,ic%,beh%)
x,y,xx,yy,X,XX,Y,YY
X=b%!4
Y=b%!8
XX=b%!12
YY=b%!16
!b%=in%
b%!4=ic%
"Wimp_GetIconState",,b%
x=X+b%!8+6
y=YY+b%!12+6
xx=X+b%!16
yy=YY+b%!20-6
b%!0=win%
"Wimp_GetWindowInfo",,b%
!b%=win%
b%!4=x
b%!8=y
b%!12=xx
b%!16=yy
b%!28=beh%
"Wimp_OpenWindow",,b%
!b%=in%
b%!4=X
b%!8=Y
b%!12=XX
b%!16=YY
b%!20=0
b%!24=0
b%!28=win%
"Wimp_OpenWindow",,b%
PlayerMenu(b%!0,b%!4,tick$)
Tplaylist%=
MenuOfArray(1,Tracks$(),100,1,
LookupMsg("Tracks"),tick$,b%!0,b%!4,
Wimp_CreateMenuMsg(1,MPlayer$(),1000,1,MPlayer$(0),">playlist%#","","","")
RunHelp
("Filer_Run <QwikCD$Dir>.!Help")
IconMenu
Wimp_CreateMenuMsg(0,MIconbar$(),1000,1,MIconbar$(0),">Info%","","","")
OpenAuthor
CentreWin(Author%,
OpenConfig
CentreWin(Config%,
OpenPlayer
CentreWin(Player%,
CentreWin(win%,disp%)
x,y,xs,ys
b%!0=win%
"Wimp_GetWindowInfo",,b%
x=(b%!52-b%!44)/2
y=(b%!56-b%!48)/2
"OS_ReadModeVariable",-1,11
,,xs
"OS_ReadModeVariable",-1,12
,,ys
xs+=1
ys+=1
b%!4=xs-x
b%!8=ys-y
b%!12=xs+x
b%!16=ys+y
b%!28=-1
disp%=
"Wimp_OpenWindow",,b%
InitCD(drive%)
"CDFS_ConvertDriveToDevice",drive%
,physical%
#CDFSControl%!0 =(physical%
*CDFSControl%!4 =(physical%
&18) >> 3
*CDFSControl%!8 =(physical%
&e0) >> 5
,CDFSControl%!12=(physical%
&ff00) >> 8
1CDFSControl%!16=(physical%
&ffff0000) >> 16
CheckOutDisc
i,len$,dcount%
HowBigIsCD(CurrentCDlen%)
EnquireDisc(First%,Last%)
LoadDetails(
(CurrentCDlen%),First%,Last%)
PutInitData
Wimp_PutIconText(Player%,6,"")
OpenNewCD
Wimp_PutIconText(Player%,14,"/"+
MinsAndSecs(CurrentCDlen%))
old%=0
dcount%=0
i=First%
Last%
EnquireTrack(i,Pos%(i),type%,chans%)
type%=-1
dcount%+=1
"Tracks$(i)="Data #"+
(dcount%)
Last%<100 Tracks$(Last%+1)=""
OldTrack%=0
WhichTrack
PutInitData
Wimp_PutIconText(Player%,6,Tracks$(0))
Wimp_PutIconText(Player%,11,"00:00")
Wimp_PutIconText(Player%,7,Tracks$(First%))
Wimp_PutIconText(Player%,8,
(First%))
LoadDetails(disc$,First%,Last%)
i,line$,outcome%
!file%=
("<QwikCD$Dir>.MyCDs")
line$=
#file%
(line$="{CD="+disc$+"}")
#file%)
line$="{CD="+disc$+"}"
Tracks$(0)=
#file%
i=First%
Last%
Tracks$(i)=
#file%
outcome%=
Tracks$(0)="?"
i=First%
Last%
Tracks$(i)=""
outcome%=
#file%
=outcome%
Play(track%)
Pause%=
Pause(0):
"XCD_PlayTrack",track%,255,,,,,,CDFSControl%
1) Playing%=
Pause(do%)
Pause%=
do%=2 do%=0
Pause%=
do%=2 do%=1
Pause%=
do%=1
do%=1
do%=0
"XCD_AudioPause",do%,,,,,,,CDFSControl%
do%=3 do%=1
Pause%=
do%=0 Pause%=
Pause%=
do%=1 Pause%=
SetPauseIcon
SetPauseIcon
Pause%=
col%=col%+step%
col%<1
col%>5 step%=-step%
Wimp_IconColour(Player%,12,6,col%)
Wimp_IconColour(Player%,12,6,6)
EnquireTrack(track%,
block%!0,
data%,
channels%)
"XCD_EnquireTrack",track%,block%,,,,,,CDFSControl%
data%=0-(block%?4
E channels%=2+2*(block%?4
data%=0
channels%=2
EnquireDisc(
first%,
last%)
"XCD_EnquireTrack",0,block%,,,,,,CDFSControl%
first%=block%?0
last%=block%?1
Playing%=
Pause%=
Pause%=
SetPauseIcon
"XCD_StopDisc",,,,,,,,CDFSControl%
PutInitData
HowBigIsCD(
length%)
"XCD_DiscUsed",1,block%,,,,,,CDFSControl%
length%=block%!0
Status(
status%)
"XCD_AudioStatus",,,,,,,,CDFSControl%
status%;S%
status%=5 status%=3
OpenDrawer
"XCD_OpenDrawer",,,,,,,,CDFSControl%
MenuOfArray(type%,array$(),top%,st%,menut$,tick$,x%,y%,l%)
i%,j%,m%,w%,s$,entries%,entry$
entries%=0
off%=mind%
menufree%+28>menuend%
0,"Can't fit all the entries into the menu."
menutitle$=menut$
menuptr%=menufree%
menut$=
LookupMsg(menut$)
$menuptr%=menut$
menuptr%?12=7
menuptr%?13=2
menuptr%?14=7
menuptr%?15=0
menuptr%!20=44
menuptr%!24=0
menuptr%+=28
i%=st%-1
TICKentry%=-1
} i%+=1
!entry$=
LookupMsg(array$(i%))
array$(i%)="" entry$=""
entry$=array$(i%)
(entry$<>"")
(entry$<>"** DEL **")
!menuptr%=0
menuptr%!4=-1
- menuptr%!8=%111000000000000000000100001
entry$,1)="~"
menuptr%!8+=(1<<22)
# entry$=
entry$,
(entry$)-1)
entry$=tick$
'
tick$<>"" TICKentry%=entries%
entry$+=" "
(entry$)<13
$(menuptr%+12)=entry$
I%=off%
off%+=
(entry$)+1
$I%=entry$
menuptr%!12=I%
menuptr%!16=-1
menuptr%!20=
(entry$)+1
menuptr%!8+=&100
(entry$)>w% w%=
(entry$)
entries%+=1
menuptr%+=24
(i%=top%)
(array$(i%)="")
%menuptr%!-24=(menuptr%!-24)
m%=menufree%
m%!16=(w%*8+6)*2
TICKentry%<>-1
Wimp_TickMenuEntry(m%,TICKentry%)
entries%<>0
type%=0
x%=x%-64
y%=y%+44
"Wimp_CreateMenu",,m%,x%,y%
menutop%=m%
menufree%=mb%
menufree%=menuptr%
entries%=0 =1
LoadMessages(f$)
"MessageTrans_FileInfo",,f$
G%256
"OS_Module",6,,,17+
$(u%+16)=f$
"MessageTrans_OpenFile",u%,u%+16
LookupMsg(i$)
LookupMsgParams(i$,"","","","")
LookupMsgParams(i$,p0$,p1$,p2$,p3$)
F%,L%,v$
"XMessageTrans_Lookup",u%,i$,G%,256,p0$,p1$,p2$,p3$
,,v$,L%;F%
G%?L%=0
Misc_GetZero(G%)
LoadSprs(from$)
add$,file%
"Wimp_ReadSysInfo",2
add$=
(s%?0)+
(s%?1)
file%=
(from$+add$)
file%
#file%:from$+=add$
"OS_File",5,from$
there%,,,,size%
there%=1
size%+=16
sprites% size%
sprites%!0=size%
"OS_SpriteOp",&10A,sprites%,from$
sprites%=-1
LoadScrolly(from$)
"OS_File",5,from$
there%,,,,size%
size%+=1
there%=1
InfoSpuff% size%
"OS_File",16,from$,InfoSpuff%,0
,,,,size%
InfoSpuff%
Oops)+1
$(InfoSpuff%)=
Oops+"
P="....,;: Aaaaaaaaaaaaaaaaarrrrrrrrrrrrrrrrrgggggggggggggghhhhhhhhh :;,...."
LoadConfig
from$,from%,line$
from$="<QwikCD$Dir>.!Config"
from%=
(from$)
from%<1
SaveConfig(from$):from%=
(from$)
line$=
#from%
ProcessConfig(line$)
#from%
#from%
ProcessConfig(line$)
before$,after$
before$=
line$,
line$,":"))
&after$=
line$,
(line$)-
(before$))
before$
"Device" : Device%=
(after$)
"AutoPlay" : AutoPlay%=(after$="Y")
"Error on data play" : DataPlay%=(after$="Y")
"Open control" : OpenControl%=(after$="Y")
GatherConfig
+Device%=
Wimp_GetIconText(Config%,2))
*AutoPlay%=
Wimp_ButtonState(Config%,4)
*DataPlay%=
Wimp_ButtonState(Config%,3)
-OpenControl%=
Wimp_ButtonState(Config%,5)
FillInConfig
Wimp_PutIconText(Config%,2,
(Device%))
Wimp_SetButtonState(Config%,4,AutoPlay%)
Wimp_SetButtonState(Config%,3,DataPlay%)
Wimp_SetButtonState(Config%,5,OpenControl%)
SaveConfig
to$,to%
to$="<QwikCD$Dir>.!Config"
(to$)
#to%,"; QwikCD Configuration file,
1994 Chris Jackson"
#to%,"; Written on "+
#to%,"Device:"+
(Device%)
#to%,"Error on data play:"+
YN(DataPlay%)
#to%,"AutoPlay:"+
YN(AutoPlay%)
#to%,"Open control:"+
YN(OpenControl%)
#from%
YN(i)
"NY",
(i)+1,1)
SetUpMenus
MPlayer$(7),MIconbar$(6)
SetupMenuArray(MPlayer$(),"MPlayer")
SetupMenuArray(MIconbar$(),"MIconbar")
SetupMenuArray(array$(),b$)
array$(0)=b$
array$(i)=b$+
(i-1)
LookupMsg(array$(i))="-"
array$(i)=""
Wimp_Initialise(name$,space%)
"Wimp_Initialise",200,&4B534154,name$+
,task%
b% space%,mb% &900,mind% 1000
menufree%=mb%
menuend%=mb%+&900
task$=name$
=task%
Wimp_CreateMenuMsg(type%,array$(),stop%,start%,title$,a$,b$,c$,d$)
menufree%+28>menuend%
0,"Menu area full."
h%,z%,m%,w%,y%,item$
8/title$=
LookupMsgParams(title$,a$,b$,c$,d$)
(title$)-2
menutitle$=title$
; h%=48
menuptr%=menufree%
$menuptr%=title$
menuptr%?12=7
menuptr%?13=2
menuptr%?14=7
menuptr%?15=0
menuptr%!20=44
menuptr%!24=0
menuptr%+=28
z%=start%
menuitem(
LookupMsgParams(array$(z%),a$,b$,c$,d$))
h%+=44
I z%+=1
(array$(z%)="")
(array$(z%)="-")
(z%=stop%)
K%menuptr%!-24=(menuptr%!-24)
m%=menufree%
m%!16=(w%*8+6)*2
h%-=44
type%>=0
type%=0 y%=h%+92
y%=b%!4+8
"Wimp_CreateMenu",,m%,!b%-64,y%
menutop%=m%
menufree%=mb%
menufree%=menuptr%
Wimp_CreateMenu(type%,menustr$,title$)
menufree%+28>menuend%
0,"Menu area full."
h%,i%,m%,w%,y%,item$
title$-2
menutitle$=title$
menuptr%=menufree%
$menuptr%=title$
menuptr%?12=7
menuptr%?13=2
menuptr%?14=7
menuptr%?15=0
menuptr%!20=44
menuptr%!24=0
menuptr%+=28
h'item$=
String_GetNext(menustr$,",")
menuitem(item$)
h%+=44
item$=""
m%=menufree%
m%!16=(w%*8+6)*2
h%-=44
type%>=0
type%=0 y%=h%+92
y%=b%!4+8
+(h%/2)
"Wimp_CreateMenu",,m%,!b%-64,y%
menutop%=m%
menufree%=mb%
menufree%=menuptr%
menuitem(item$)
item$=""
menuptr%!-24=(menuptr%!-24)
&80:
menuptr%+24>menuend%
0,"Menu area full"
i%,i1%,flg%,subptr%,L%,I%
flg%=&00
item$,">")
item$,1)="#"
item$=
item$,
(item$)-1)
flg%+=&02
h%+=26
i%>0
subptr%=
item$,i%+1))
item$=
item$,i%-1)
subptr%=-1
menuptr%!0=flg%
menuptr%!4=subptr%
menuptr%!8=&07000021
item$,1)="$"
!menuptr%=&04
menuptr%!8=&108
i%=
item$,"(")
i%>0
L%=
item$,i%+1)
item$=
item$,i%-1)
L%=12
menuptr%!12=
item$,2)
menuptr%!16=-1
menuptr%!20=L%
item$=
L%," ")
item$,1)="!"
item$=
item$,
(item$)-1)
!menuptr%+=&08
item$,1)="+"
item$=
item$,
(item$)-1)
!menuptr%+=&01
(item$)<=12
$(menuptr%+12)=item$
* I%=
Internal_Workspace(
(item$)+1)
$I%=item$
menuptr%!12=I%
menuptr%!16=-1
menuptr%!20=
(item$)+1
$ menuptr%!8=menuptr%!8
&100
(item$)>w%
(item$)
menuptr%+=24
Internal_Workspace(L%)
L% L%
String_GetNext(str$,sep$)
i1%=i%+1
str$+sep$,sep$,i1%)
str$,i1%,i%-i1%)
Wimp_TickMenuEntry(b%,n%)
%b%!(28+24*n%)=b%!(28+24*n%)
Wimp_MenuSelection(menus%,
but%)
"Wimp_GetPointerInfo",,b%+64
but%=b%!72
"Wimp_DecodeMenu",,menutop%,menus%,
200," ")
,,,m$
m$=""
m$="Quit" Quit%=
User_CloseDown:
m$=menutitle$+"."+m$
Wimp_ReportMessage(message$,type%)
!b%=0
$(b%+4)=message$+
"Wimp_ReportError",b%,type%,task$
Wimp_CloseWindow(handle%)
!b%=handle%
"Wimp_CloseWindow",,b%
Wimp_OpenTemplate(file$)
"Wimp_OpenTemplate",,file$
Wimp_CloseTemplate
"Wimp_CloseTemplate"
Wimp_TempToWin(name$,spr%,fonts%)
size1%,size2%,total%
"Wimp_LoadTemplate",,0,,,,name$,0
,size1%,size2%
total%=size1%+size2%
buffer% total%
"Wimp_LoadTemplate",,b%,buffer%,buffer%+total%,fonts%,name$,0
,,,,,,total%
total%=0
Wimp_CloseTemplate:
0,"Template `"+name$+"` not found":
Wimp_CloseDown:
b%!64=spr%
Wimp_CreateWindow(b%)
Wimp_CreateWindow(b%)
"Wimp_CreateWindow",,b%
Misc_GetZero(addr%)
?addr%
(?addr%)
addr%+=1
Wimp_CopyIconDown(win%,ic%)
x0%,y0%,x1%,y1%,flags%
!b%=win%
b%!4=ic%
"Wimp_GetIconState",,b%
x0%=b%!8
y0%=b%!12
x1%=b%!16
y1%=b%!20
flags%=b%!24
flags%
text$=$(b%!28)
valid%=b%!32
# B%=
Internal_Workspace(b%!36)
$B%=text$
b%!28=B%
b%!32>0
+ B%=
Internal_Workspace(
$(b%!32)+1)
$B%=$(b%!32)
b%!32=B%
i%=b%?40
b%?40=13
text$=$(b%+28)
b%?40=i%
valid%=-1
(flags%
&103)=&103
sprite$=
getcommand(valid%,"S",2))
sprite$=text$
si%=y0%-y1%
y0%+=si%
y1%+=si%
!b%=win%
b%!20=flags%
b%!24=b%!28
b%!28=b%!32
b%!32=b%!36
(text$=
Wimp_Iconstring(flags%,b%+24)
flags%
&100 v%=b%!28
v%=-1
b%!4=x0%
b%!8=y0%
b%!12=x1%
b%!16=y1%
"Wimp_CreateIcon",,b%
"Wimp_ForceRedraw",!b%,b%!4,b%!8,b%!12,b%!16
Wimp_Iconstring(flg%,p%)
i%,i$
flg%
&100
i$=$!p%
i%=p%?12:p%?12=13:i$=$p%:p%?12=i%
getcommand(v%,c$)
v%<=0
+$I%=
";"+$v%,";"+c$):
I%=0
$(v%+I%-1),
$(v%+I%-1)+";",";")-1)
Wimp_PutIconText(win%,icon%,text$)
b%!0=win%
b%!4=icon%
"Wimp_GetIconState",,b%
$(b%!28)=text$
((b%!24)
&100)=0
0,"Icon "+
icon%+" is not indirected."
$(b%!28)=text$
b%!8=0
b%!12=0
"Wimp_SetIconState",,b%
Wimp_GetIconText(win%,ic%)
b%!0=win%
b%!4=ic%
"Wimp_GetIconState",,b%
=$(b%!28)
Misc_ConvertToUpper(s$)
s$="" =s$
I=1
char%=
s$,I))
char%>96
char%<123 char%-=32
(char%)
Misc_ConvertToLower(s$)
s$="" =s$
I=1
char%=
s$,I))
char%>64
char%<91 char%+=32
(char%)
Wimp_CreateIcon(n$)
!b%=-1
b%!4=0
b%!8=0
b%!12=17*4
b%!16=34*4
b%!20=&3102
iconname% 13
$iconname%=n$
b%!24=iconname%
b%!28=-1
b%!32=13
"Wimp_CreateIcon",,b%
Wimp_IconColour(win%,ic%,back%,fore%)
!b%=win%
b%!4=ic%
g b%!8=(back%<<28)+(fore%<<24)
b%!12=&FF000000
"Wimp_SetIconState",,b%
Wimp_SetButtonState(win%,ic%,state%)
m(!b%=win%:b%!4=ic%:b%!8=
(state%)<<21
b%!12=1<<21
"Wimp_SetIconState",,b%
Wimp_ButtonState(win%,i%)
!b%=win%:b%!4=i%
"Wimp_GetIconState",,b%
(b%!(8+16)
1<<21)
Wimp_DeleteIcon(win%,ic%,state%)
!b%=win%:b%!4=ic%:
state%=
b%!8=%100000000000010000000000
state%=
b%!8=%000000000000010000000000
b%!12=b%!8
"Wimp_SetIconState",,b%