home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
education
/
monkeys
/
!Monkeys+
/
ShellLibRT
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1994-01-23
|
84KB
|
3,083 lines
>EvntShellSystem:ShellLib
Squished by Lofty's !Shrink vsn 3.01 on 23-Jan-94
shell_LibraryVersion:=1.29*&64
shell_Error:
CA%,MA$:
<>&D00
<>&903
&606C2:
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
shell_Exit:
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" Internal error code "+
$,"in "+
34+"EvntShellSystem:ShellLib"):
CA%>0
$,CA%-1)
shell_ErrorBox(MA$)
&606C2:
shell_OK(WA$):
&D00,WA$
shell_ErrorBox(ZA$):
vA%,kA%:kA%=_shell_blk%:!kA%=
:$(kA%+4)=ZA$+
=&D00
=&903
&600DF,kA%,17,"Message from "+
shell_GetAppName
&600DF,kA%,1,
shell_GetAppName
shell_GetLastSecureFileName:
c%:c%=_U%!80:
shell_GetString(zD%):
SA$,SC%:
((zD%?SC%)>31
SC%<&FF):SA$+=
(zD%?SC%):SC%+=1:
:=SA$
shell_GetEventHandler(b%,w%,iB%):
f%,i%,m%,q%,A$:
b%=-1
b%=-2
XNq%=
shell_HeapBlockInfo(_U%!&C)-8:f%=0:m%=
:i%=_U%!&C:A$="":
(i%!f%=b%)
i%!(f%+4)
i%!(f%+(&C+(iB%*4)))>&8000
f#A$=$(i%!(f%+(&C+(iB%*4)))):m%=
f%+=48
i%!(f%+4)=w%
i%!(f%+(&C+(iB%*4)))>&8000
s#A$=$(i%!(f%+(&C+(iB%*4)))):m%=
f%+=48
f%+=48
f%+=48
((f%>=q%)
m%):=A$
shell_GetEventMenu(RC%,b%,w%):
f%,i%,m%,q%,k%:
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:f%=0:m%=
:i%=_U%!&C:A$="":
(i%!f%=b%)
shell_Tracef0("GetEventMenu:window handle matched.."):
i%!(f%+4)=w%
"k%=i%!(f%+8):
k%=-2
k%=_U%!&FC
:f%+=48:
(f%>=q%
m%):=k%
shell_GetEventListOffset(b%,g%,i%,TC%,tD%):
q%,f%,m%,d%,KC%,c%:
(!i%=0
(!i%=0)
:!i%=
shell_HeapBlockFetch(TC%):c%=!i%:c%!0=0:c%!4=0:=0
shell_HeapBlockInfo(!i%)-8:f%=0:m%=
:d%=-1:KC%=-1:c%=!i%:
KC%<0
(c%!f%=0
c%!f%+4=0)
KC%=f%
(c%!f%=b%)
g%=-1
d%=f%:m%=
shell_Tracef0("GetEventListOffset:icon handle is not -1"):
c%!(f%+4)=g%
d%=f%:m%=
f%+=TC%
f%+=TC%
((f%>=q%)
(d%=-1
KC%<0
Id%=q%:!i%=
shell_HeapBlockExtend(!i%,TC%):c%=!i%:c%+=d%:c%!0=0:c%!4=0
d%=KC%
shell_AttachPane(b%,
XC%,j%,qA%,sA%):
a%,d%,c%,zA%,CD%:
shell_Tracef0("AttachPane:Attaching Pane Handler"):CD%=
shell_WindowGetFlags(XC%):
1<<5)=0
shell_Tracef0("AttachPane:'Pane' bit of pane window is not set, fixing.."):
shell_WindowToggleFlags(XC%,1<<5)
1<<1)
shell_Tracef0("AttachPane:'Moveable' bit of pane window is set, fixing.."):
shell_WindowToggleFlags(XC%,1<<1)
shell_GetEventListOffset(b%,-1,_U%+92,24,
shell_Tracef0("AttachPane:Creating pane event block"):d%=
shell_GetEventListOffset(b%,-1,_U%+92,24,
):a%=_U%!92+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(4):a%!&C=
shell_HeapBlockFetch(4):a%!16=
shell_HeapBlockFetch(4)
aa%!20=
shell_HeapBlockFetch(4):c%=a%!8:!c%=-1:c%=a%!&C:!c%=-1:c%=a%!16:!c%=-1:c%=a%!20:!c%=-1
:a%=_U%!92+d%:c%=a%!8:e%=0:zA%=0:
c%!e%<>-1:e%+=4:zA%+=1:
:a%!8=
shell_HeapBlockExtend(a%!8,4):c%=a%!8:c%!(zA%*4)=XC%:c%!((zA%+1)*4)=-1:a%!&C=
shell_HeapBlockExtend(a%!&C,4):c%=a%!&C:c%!(zA%*4)=j%:c%!((zA%+1)*4)=-1
a%!16=
shell_HeapBlockExtend(a%!16,4):c%=a%!16:c%!(zA%*4)=qA%:c%!((zA%+1)*4)=-1:a%!20=
shell_HeapBlockExtend(a%!20,4):c%=a%!20:c%!(zA%*4)=sA%:c%!((zA%+1)*4)=-1:
shell_AttachDataLoad(b%,g%,u%,A$,JF%):
a%,c%,d%,N$:
shell_Tracef0("AttachDataLoad:Attaching DataLoad Handler"):
b%=-1
b%=-2
u%=u%
1<<31
0Pd%=
shell_GetEventListOffset(b%,g%,_U%+96,16,
):a%=_U%!96+d%:
a%!0=0
a%!4=0
shell_Tracef0("AttachDataLoad:This is the first DataLoad Event..."):a%!0=b%:a%!4=g%:a%!8=
shell_HeapBlockFetch(8):c%=a%!8:c%!0=u%:c%!4=-1:a%!&C=
shell_HeapBlockFetch(8):c%=a%!&C:c%!0=
shell_HeapBlockFetch(
(A$)+1):c%!4=-1:c%=c%!0:$c%=A$
shell_Tracef0("AttachDataLoad:This is another DataLoad Event..."):a%!8=
shell_HeapBlockExtend(a%!8,4):a%!&C=
shell_HeapBlockExtend(a%!&C,4):e%=0:c%=a%!8:
c%!e%<>-1:e%+=4:
:c%!e%=u%:c%!(e%+4)=-1:c%=a%!&C:c%!e%=
shell_HeapBlockFetch(
A$+1)
c%=c%!e%:$c%=A$
shell_GetCmdLineArgs:
shell_Tracef0("AttachDataLoad:cmdline ="+N$):
shell_Tracef0("AttachDataLoad:flag bit ="+
((_U%!&64
1<<5))):
shell_Tracef0("AttachDataLoad:wh% ="+
~b%):
shell_Tracef0("AttachDataLoad:type% ="+
N$<>""
(_U%!&64
1<<5)
1<<31
c%=u%
1<<31
c%=u%
shell_FileType(N$)=c%
shell_Tracef0("AttachDataLoad:Loading file.."):
shell_MessageSendDataLoad(c%,N$):_U%!&64=_U%!&64
(1<<5)
shell_AttachDataSave(b%,g%,AB%,u%,OC%,A$):
a%,c%,d%:
shell_IconIsSprite(b%,g%)
shell_OK(
shell_MessageNoArgs("SHELLMSG29"))
shell_IconSetButtonType(b%,g%,6):
AB%=0
AB%=&64
shell_Tracef0("AttachDataSave:Attaching DataSave Handler to icon "+
g%+" in window &"+
~b%):
shell_Tracef0("AttachDataSave:Handler function is '"+A$+"'"):d%=
shell_GetEventListOffset(b%,g%,_U%+72,24,
):a%=_U%!72+d%:a%!0=b%:a%!4=g%:a%!8=AB%:a%!&C=u%
uHa%!16=OC%:a%!20=
shell_HeapBlockFetch(
(A$)+1):c%=a%!20:$c%=A$:
&FF9:
AB%>&8000
}'_U%!&88=
shell_HeapBlockInfo(AB%)-8
_U%!&88=AB%
AB%>&8000
'_U%!&88=
shell_HeapBlockInfo(AB%)-4
_U%!&88=AB%
:_U%!&8C=u%:_U%!&90=AB%:
shell_AttachMenu(b%,w%,k%,cB%,gB%,xB%):
w%>=0
shell_IconSetButtonType(b%,w%,3)
shell_Tracef0("AttachMenu:Attaching menu handle &"+
~k%+" to window handle &"+
~b%):
shell_EventAdd(b%,w%,0,k%,""):
shell_AttachMenuMaker(b%,w%,A$):
shell_Tracef0("AttachMenuMaker:Attaching menumaker function '"+A$+"'"):
shell_EventAdd(b%,w%,1,0,A$):
shell_AttachMenuDBox(wA%,L$,OA$,UA$):
a%,c%,nA%:
shell_WindowLoaded(L$)
shell_MessageOneArg("SHELLMSG03",L$)
shell_HeapBlockFetch(&C):a%!0=
shell_HeapBlockFetch(
L$+1):c%=a%!0:$c%=L$:a%!4=
shell_HeapBlockFetch(
OA$+1):c%=a%!4:$c%=OA$:a%!8=
shell_HeapBlockFetch(
UA$+1):c%=a%!8:$c%=UA$:
&45BCE,wA%,a%:
&45BCC,,
shell_AttachClickSelect(b%,w%,A$):
shell_EventAdd(b%,w%,2,0,A$):
shell_AttachClickAdjust(b%,w%,A$):
shell_EventAdd(b%,w%,3,0,A$):
shell_AttachUserRedraw(
b%,A$):
a%,HA%,SA%:a%=
shell_HeapBlockFetch(40):!a%=b%:
&400CB,,a%:HA%=a%!32:
shell_HeapBlockReturn(a%):
shell_Tracef0("AttachUserRedraw:flag%=&"+
~HA%):
1<<4)
shell_Tracef0("AttachUserRedraw:auto redraw set!!"):SA%=b%:
shell_WindowToggleFlags(b%,1<<4):
b%<>SA%
shell_UpdateWindowHandle(SA%,b%)
shell_EventAdd(b%,-1,4,0,A$):
shell_AttachDrag(b%,w%,nF%,A$):
shell_EventAdd(b%,w%,6,0,A$):
shell_AttachHelpTag(b%,w%,H$):
shell_EventAdd(b%,w%,8,0,H$):
shell_EventAdd(b%,w%,iB%,k%,A$):
f%,bB%,i%,q%,m%:
MC%:f%=0:m%=
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!f%=b%)
i%!(f%+4)=w%
f%+=48
f%+=48
(f%>=q%
%f%=0:
(i%!f%<>0):f%+=48:
f%>=q%
_U%!&C=
shell_HeapBlockExtend(_U%!&C,48):i%=_U%!&C:i%!(f%+0)=0:i%!(f%+4)=0:i%!(f%+8)=0:i%!(f%+&C)=0:i%!(f%+16)=0:i%!(f%+20)=0:i%!(f%+24)=0:i%!(f%+28)=0:i%!(f%+32)=0:i%!(f%+36)=0:i%!(f%+40)=0:i%!(f%+44)=0
:i%!(f%+0)=b%:i%!(f%+4)=w%:
k%<>0
i%!(f%+8)=k%
:MC%=f%+(&C+(iB%*4)):
i%!MC%<>0
shell_HeapBlockReturn(i%!MC%)
:bB%=
shell_HeapBlockFetch(
A$+1):$bB%=A$:i%!MC%=bB%:
shell_EventDeleteAll(b%):
f%,k%,m%,q%,i%,r%:f%=0:k%=0:m%=
b%=-1
b%=-2
.>q%=
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!f%=b%)
f%+=48
(f%>=q%
8Ci%!(f%+0)=0:i%!(f%+4)=0:i%!(f%+8)=0:
r%=&C
i%!(f%+r%)<>0
shell_HeapBlockReturn(i%!(f%+r%)):i%!(f%+r%)=0
shell_Tracef0("EventDeleteAll:wh%=&"+
~b%):
shell_DeleteEventDataSave(b%,-1):
shell_DeleteEventBump(b%,-1):
shell_DeleteEventBump(b%,g%):
d%,a%,q%,i%,c%:i%=_U%!&68:
shell_GetEventListOffset(b%,g%,_U%+&68,16,
shell_Tracef0("DeleteEventBump:offset%="+
d%>=0
g%=-1
shell_Tracef0("DeleteEventBump:Deleting Bump Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventBump:Deleting Bump Event (window handle was &"+
~b%+" icon handle was "+
g%+")")
shell_HeapBlockInfo(_U%!&68)-8:
d%=q%-16
FA%=i%!&C:c%=FA%!&C:
shell_HeapBlockReturn(c%!&C):
shell_HeapBlockReturn(c%!16):
shell_HeapBlockReturn(c%):
shell_HeapBlockReturn(_U%!&68):_U%!&68=0:
shell_Tracef0("DeleteEventDataSave:No Bump events now registered")
_U%!&68=
shell_HeapBlockExtend(_U%!&68,-16)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:FA%=a%!&C:
shell_HeapBlockReturn(FA%!&C):
shell_HeapBlockReturn(FA%!16):
shell_HeapBlockReturn(FA%)
d%<0:
shell_DeleteEventDataSave(b%,g%):
d%,a%,q%:
shell_GetEventListOffset(b%,g%,_U%+72,24,
d%>=0
g%=-1
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (window handle was &"+
~b%+" icon handle was "+
g%+")")
shell_HeapBlockInfo(_U%!72)-8:
d%=q%-24
shell_HeapBlockReturn(_U%!72):_U%!72=0:
shell_Tracef0("DeleteEventDataSave:No DataSave events now registered")
_U%!72=
shell_HeapBlockExtend(_U%!72,-24)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:a%!&C=0:a%!16=0:
shell_HeapBlockReturn(a%!20):a%!20=0
d%<0:
shell_MessageNoArgs(H$):=
shell_MessageLookup(H$,"","")
shell_MessageOneArg(H$,EA$):=
shell_MessageLookup(H$,EA$,"")
shell_MessageLookup(H$,EA$,iA$):
j%,L%,f$,oB%,UB%:
H$,8)="SHELLMSG"
oB%=_U%!284:UB%=_U%!280
oB%=_U%!64:UB%=_U%!68
&61502,UB%,H$,oB%,256,EA$,iA$
,,,L%;j%:
oB%?L%=&D:f$=$(oB%)
shell_WimpInit(HC%,t$):
&400C0,HC%,&4B534154,t$
HC%,YA%:
_U%!&64
"WimpExt_Initialise",&E,YA%
:_U%!&94=YA%:=YA%
shell_WimpInit_I(HC%,t$):
&400C0,HC%,&4B534154,t$
HC%,YA%:
_U%!&64
"WimpExt_Initialise",&E,YA%
:_U%!&94=YA%:
"Interface_Initialise",YA%:=YA%
shell_WimpCloseDown_I(YA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,YA%
&600DD,YA%,&4B534154:
"XInterface_CloseDown",YA%:
_U%!&64
"XImpulse_CloseDown",_U%!&94
WimpCloseDown(YA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,YA%
&600DD,YA%,&4B534154:
_U%!&64
"XImpulse_CloseDown",_U%!&94
("Unset "+_shell_AppName$+"$BasicFile"):
shell_LoseFonts:
r%,c%:c%=_U%!&E8:
c%?r%>0:
&40082,r%:c%?r%-=1:
shell_FindFont(b$,rE%):
HA%,BD%:BD%=_U%!&E8:
&40081,,b$,rE%*16,c*16,0,0
HA%:BD%?HA%+=1:
BD%?HA%>=&FF
shell_OK(
shell_MessageNoArgs("SHELLMSG18"))
shell_Init:
cA%,r%,c%,N$:
iA%,D$,E$:
_U%330,_shell_blk%260:_Q%=
shell_HeapBlockFetch(&BB8):cA%=
shell_HeapBlockFetch(48):cA%!0=0:cA%!4=0:cA%!8=0:cA%!&C=0:cA%!16=0:cA%!20=0:cA%!24=0:cA%!28=0:cA%!32=0:cA%!36=0:cA%!40=0:cA%!44=0:_U%!0=0:_U%!4=0:_U%!8=0
_U%!&C=cA%:_U%!16=1:_U%!20=0:_U%!24=0:_U%!28=0:_U%!32=0:_U%!36=0:_U%!40=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0:_U%!68=0:_U%!72=0:_U%!76=
shell_HeapBlockFetch(256):_U%!80=0:_U%!84=-1:_U%!88=0:_U%!92=0:_U%!96=0:_U%!&64=0:_U%!&68=0
_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0:_U%!&9C=0:_U%!&A0=0:_U%!&A4=0:_U%!&A8=0:_U%!&AC=0:_U%!&B0=0:_U%!&B4=0:_U%!&B8=0:_U%!&BC=0:_U%!&C0=0:_U%!&C4=0:_U%!&C8=0
_U%!&CC=0:_U%!&D0=-1:_U%!&D4=-1:_U%!&D8=0:_U%!&DC=0:_U%!&E0=0:_U%!&E4=0:_U%!&E8=
shell_HeapBlockFetch(256):_U%!&EC=
shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&F8=0:_U%!&FC=0:_U%!256=0:_U%!260=1:_U%!264=0:_U%!268=0:_U%!272=0:_U%!276=0
_U%!280=0:_U%!284=0:_U%!288=-1:_U%!292=-1:_U%!296=-1:_U%!300=0:_U%!304=0:_U%!308=0:_U%!312=0:_U%!316=0:_U%!320=0:_U%!324=0:
shell_MemFill(_U%!&E8,256,0):
shell_MemFill(_U%!&EC,256,0):iA%=
shell_HeapBlockFetch(256)
shell_OSVarGetVal(iA%,256,"Obey$Dir",1):
shell_HeapBlockReturn(iA%):E$=
shell_Leaf(D$),2):_U%!&BC=
shell_HeapBlockFetch((
D$)+1):_U%!&C4=
shell_HeapBlockFetch((
E$)+1):c%=_U%!&BC:$c%=D$:c%=_U%!&C4:$c%=E$:N$=
shell_OSReadCommandArg(1):
N$<>""
L_U%!&64=_U%!&64
1<<5:c%=
shell_HeapBlockFetch(
N$+1):$(c%)=N$:_U%!324=c%
shell_OSModuleCheckVersion("WimpExtension",1.98):
_U%!&64=_U%!&64
shell_GetCmdLineArgs:
_U%!324<>0
N$=$(_U%!324)
shell_Tracef0("GetCmdLineArgs:cmdline was "+N$):=N$
shell_FileType(Z$):
8,5,Z$
,,u%:u%=(u%
&FFF00)>>>8:=u%
shell_FileExists(Z$):
shell_CatInfoRead(Z$)="Not Found":=
shell_CatInfoRead(Z$):
u%,mC%,bC%,uA%,mB%,B$:
8,5,Z$
u%,,mC%,bC%,uA%,mB%:
="Not Found"
mB%=51
B$+="WR "
mB%=&BB
B$+="LWR"
mB%=&88
B$+="DL "
B$+=" "+
shell_StringPadLeading(
~mC%,"0",8):B$+=" "+
shell_StringPadLeading(
~bC%,"0",8):B$+=" "+
shell_StringPadLeading(
~uA%,"0",8):=B$
shell_GetAppDir:
c%:c%=_U%!&BC:=$c%
shell_GetAppDataDir:
c%:c%=_U%!&C0:=$c%
shell_GetAppName:
c%:c%=_U%!&C4:=$c%
shell_ResourcesInit:
z$,c%,E$,D$:
iA%,WB%,yB%:E$=
shell_GetAppName:D$=
shell_GetAppDir:iA%=
shell_HeapBlockFetch(256):
shell_OSVarExists(iA%,E$+"Res$Path")
_U%!&64=_U%!&64
shell_OSVarExists(iA%,E$+"Data$Dir")
shell_OSVarGetVal(iA%,256,E$+"Data$Dir",1):_U%!&C0=
shell_HeapBlockFetch((
z$)+1):c%=_U%!&C0:$c%=z$
_U%!&C0=
shell_HeapBlockFetch((
D$)+1):c%=_U%!&C0:$c%=D$
_U%!&64
shell_FileExists(E$+"Res:Messages")
shell_MessagesInit(E$+"Res:Messages",_U%!68,_U%!64)
shell_FileExists(E$+"Res:ShellMsgs")
shell_MessagesInit(E$+"Res:ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("ShellSysRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,yB%:
&20035,-1,5
,,WB%:
WB%=1
shell_FileExists(E$+"Res:Sprites22")
4_U%!16=
shell_SpriteAreaLoad(E$+"Res:Sprites22")
shell_FileExists(E$+"Res:Sprites")
2_U%!16=
shell_SpriteAreaLoad(E$+"Res:Sprites")
_U%!16=1
shell_FileExists(E$+"Res:Templates")
shell_TemplatesInit(E$+"Res:Templates")
shell_FileExists(D$+".Messages")
shell_MessagesInit(D$+".Messages",_U%!68,_U%!64)
shell_FileExists(D$+".ShellMsgs")
shell_MessagesInit(D$+".ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("ShellSysRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,yB%:
&20035,-1,5
,,WB%:
WB%=1
shell_FileExists(D$+".Sprites22")
%1_U%!16=
shell_SpriteAreaLoad(D$+".Sprites22")
shell_FileExists(D$+".Sprites")
(/_U%!16=
shell_SpriteAreaLoad(D$+".Sprites")
_U%!16=1
shell_FileExists(D$+".Templates")
shell_TemplatesInit(D$+".Templates")
&45BC0:
shell_HeapBlockReturn(_Q%):_Q%=
shell_HeapBlockFetch(&400):
shell_HeapBlockReturn(iA%):
shell_SpriteAreaLoad(M$):
BB%,S%,T%:S%=
(M$):T%=
#S%+16:
#S%:BB%=
shell_HeapBlockFetch(T%):!BB%=T%:BB%!4=0:BB%!8=16:BB%!&C=16:
46,521,BB%:
46,522,BB%,M$:
shell_Tracef0("SpriteLoad:Sprite file loaded at &"+
~BB%):=BB%
shell_UserSpritesBase:=_U%!16
shell_SpriteGetPtr(hB%,P$):
JB%,f%:JB%=
shell_HeapBlockFetch(21):$JB%=P$:
46,280,hB%,JB%
,,f%:
shell_HeapBlockReturn(JB%):=f%
shell_TemplatesInit(M$):
JC%,JD%,FE%,X%,f%:
sD%,CA%,qB%,P$,FB%:
dA%,SE%,bE%,VB%,CA$,AA%:
zB%,ZB%,nB%,PC%,rB%:
qB%20:
4):qB%+=1:
:CA%=0:FB%=0:nB%=0:rB%=0:sD%=
shell_FileLength(M$):AA%=
shell_HeapBlockFetch(&D):X%=
(M$):
#X%=16:
:CA$=""
&C,4,X%,AA%,4:dA%=!AA%:
shell_Tracef0("TemplatesInit:file offset% = "+
dA%):
dA%>0
FB%+=1:zB%=0:
&C,4,X%,AA%,4:SE%=!AA%:
shell_Tracef0("TemplatesInit:data_size% = "+
SE%):
&C,4,X%,AA%,4:bE%=!AA%:
&C,4,X%,AA%,&C:e%=0:
:VB%=AA%?e%:
VB%>31
CA$+=
e%+=1:
VB%<32:UF%=
#X%=dA%+56:
&C,4,X%,AA%,4:j%=!AA%:
#X%=dA%+72:
&C,4,X%,AA%,&C:zB%+=
shell_IconIndirSize(dA%,j%,AA%):
#X%=dA%+84:
&C,4,X%,AA%,4:ZB%=!AA%:
shell_Tracef0("TemplatesInit:nr icons = "+
ZB%):
ZB%>0
PC%=0
ZB%-1:
#X%=dA%+88+(PC%*32)+16:
&C,4,X%,AA%,4:j%=!AA%:
#X%=dA%+88+(PC%*32)+20:
&C,4,X%,AA%,&C:zB%+=
shell_IconIndirSize(dA%,j%,AA%):
#X%=UF%:
shell_Tracef0("TemplatesInit:entry_type% = "+
bE%):
shell_Tracef0("TemplatesInit:identifier$ = "+CA$):
shell_Tracef0("TemplatesInit:indirected size = "+
zB%):
shell_Tracef0(" "):nB%+=zB%:
(88+(ZB%*32))>rB%
rB%=(88+(ZB%*32))
dA%=0:
shell_HeapBlockReturn(AA%):
shell_Tracef0("TemplatesInit:total indirected= "+
nB%):EE%=
shell_HeapBlockFetch(sD%):JC%=EE%:_U%!4=
shell_HeapBlockFetch(20*FB%):QE%=
shell_HeapBlockFetch(rB%+nB%):JD%=QE%:FE%=QE%+(rB%+nB%):FB%=0
&400D9,,M$:
:$qB%="*":
&400DB,,JC%,JD%,FE%,_U%!&E8,qB%,CA%
,,JD%,,,P$,CA%:
CA%<>0
!((_U%!4)+(16*FB%))=JC%:$(((_U%!4)+(16*FB%))+4)=P$:
shell_Tracef0("TemplatesInit: Template Loaded: "+P$):JC%+=(88+(JC%!84)*32):FB%+=1
CA%=0:
&400DA:_U%!0=FB%:
shell_Tracef0("TemplatesInit:Templates resource file loaded at &"+
~EE%+" ("+
FB%+" templates)"):
shell_WindowLoaded(L$):
r%,m%:
(L$)>&C
shell_MessageOneArg("SHELLMSG02",L$)
(_U%!0)-1:
$(((_U%!4)+(16*r%))+4)=L$
:r%=(_U%!0)-1
r%:=m%
shell_GetWB(L$):
r%,m%:
(L$)>&C
shell_MessageOneArg("SHELLMSG02",L$)
5m%=-1:
(_U%!0)-1:
$(((_U%!4)+(16*r%))+4)=L$
m%=r%:r%=(_U%!0)-1
m%>-1
=!((_U%!4)+(16*m%))
shell_MessageOneArg("SHELLMSG03",L$)
shell_MessageExpand(d$):
K$,f$,pA%:K$="":
d$,"\")>0:pA%=
d$,"\"):K$+=
d$,pA%-1):f$=
d$,pA%+1,1):d$=
d$,pA%+2):
"A":K$+="Click ADJUST to"
"a":K$+="ADJUST"
"D":K$+="Drag with SELECT to"
"d":K$+="Drag with ADJUST to"
"G":K$+="This option is greyed out because"
"R":K$+="Move the pointer right"
"S":K$+="Click SELECT to"
"s":K$+="SELECT"
"T":K$+="This is the"
"W":K$+="This window is"
"w":K$+="window"
K$+="\"+f$
:=K$+d$
shell_OpenMenu(OA%,PA%,jA%):
A$:A$=
shell_GetEventHandler(_U%!28,_U%!32,1):
A$<>""
shell_Tracef0("OpenMenu:About to call "+"FN"+A$+"("+
_U%!28+","+
_U%!32+")"):o%=
("FN"+A$+"(_U%!28,_U%!32)")
shell_Tracef0("OpenMenu:no menumaker function registered")
jA%<>_U%!24
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256):_U%!256=0
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4):_U%!&F4=0
jA%=_U%!&FC
&400D4,,jA%,OA%-64,PA%:_U%!264=1
_Q%!0=OA%:_Q%!4=PA%:
&45BC5,jA%,_Q%:_U%!264=0
:_U%!24=jA%:_U%!36=OA%:_U%!40=PA%:_U%!52=_U%!28:_U%!56=_U%!32:
shell_MenuLastXPos:=_U%!36
shell_MenuLastYPos:=_U%!40
shell_MenuAttachDbox(a$):
"Menu_SetSubHandle",_U%!8,
shell_MenuString(a$),1:
shell_Tracef0("MenuAttachDbox:Dialog box ("+a$+") attached"):
shell_MessageWindow(G$,BF%,VA$,m$):
AD%,kA%:kA%=
shell_HeapBlockFetch(260):!kA%=0:$(kA%+4)=G$+
m$=""
m$="Message from "+VA$
&400DF,kA%,19,m$
&400DF,kA%,17,m$
shell_HeapBlockReturn(kA%):=AD%
shell_CreateWindow(BA$,
aB%:aB%=
shell_GetWB(BA$):aB%!64=_U%!16:
&400C1,,aB%
shell_CreateWindow2(N,j%,_E%,fE%,SF%,eA%,MD%,fA%,vA%,CB%):
Q%:Q%=
shell_HeapBlockFetch(&BB8):Q%!0=MD%:Q%!4=fA%:Q%!8=vA%:Q%!&C=CB%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=j%:Q%?32=7:Q%?33=2:Q%?34=_E%:Q%?35=fE%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=eA%
Q%!48=SF%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=N:Q%!76=-1:Q%!80=
$N:Q%!84=0:
&400C1,,Q%
shell_HeapBlockReturn(Q%):=h%
shell_WindowHasTitleBar(b%):=(
shell_WindowGetFlags(b%)
1<<26)
shell_WindowIsMoveable(b%):=(
shell_WindowGetFlags(b%)
1<<1)
shell_WindowIsAPane(b%):=(
shell_WindowGetFlags(b%)
1<<5)
shell_WindowIsNotBounded(b%):=(
shell_WindowGetFlags(b%)
1<<6)
shell_WindowTrapsHotKeys(b%):=(
shell_WindowGetFlags(b%)
1<<&C)
shell_WindowIsOpen(b%):=(
shell_WindowGetFlags(b%)
1<<16)
shell_WindowIsOnTop(b%):=(
shell_WindowGetFlags(b%)
1<<17)
shell_WindowHasBeenToggled(b%):=(
shell_WindowGetFlags(b%)
1<<18)
shell_WindowHasInputFocus(b%):=(
shell_WindowGetFlags(b%)
1<<20)
shell_WindowHasBackIcon(b%):=(
shell_WindowGetFlags(b%)
1<<24)
shell_WindowHasCloseIcon(b%):=(
shell_WindowGetFlags(b%)
1<<25)
shell_WindowHasToggleIcon(b%):=(
shell_WindowGetFlags(b%)
1<<27)
shell_WindowHasVScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<28)
shell_WindowHasAdjustSizeIcon(b%):=(
shell_WindowGetFlags(b%)
1<<29)
shell_WindowHasHScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<30)
shell_WindowGetFlags(b%):
j%,a%:a%=
shell_HeapBlockFetch(36):a%!0=b%:
&400CB,,a%:j%=a%!32:
shell_HeapBlockReturn(a%):=j%
shell_WindowGetTitleFlags(b%):
j%,a%:a%=
shell_HeapBlockFetch(6000):a%!0=b%:
&400CC,,a%:j%=a%!60:
shell_HeapBlockReturn(a%):=j%
shell_IconGetFlags(b%,g%):
j%,a%:a%=
shell_HeapBlockFetch(50):a%!0=b%:a%!4=g%:
&400CE,,a%:j%=a%!24:
shell_HeapBlockReturn(a%):=j%
shell_WindowTitleFlags(b%):
j%,a%:a%=
shell_HeapBlockFetch(&BB8):a%!0=b%:
&400CC,,a%:j%=a%!60:
shell_HeapBlockReturn(a%):=j%
shell_WindowTitleHasBorder(b%):=(
shell_WindowTitleFlags(b%)
1<<2)
shell_WindowTitleIsSprite(b%):=(
shell_WindowTitleFlags(b%)
1<<1)
shell_WindowTitleIsText(b%):=(
shell_WindowTitleFlags(b%)
1<<0)
shell_WindowTitleIsHCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<3)
shell_WindowTitleIsVCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<4)
shell_WindowTitleIsFilled(b%):=(
shell_WindowTitleFlags(b%)
1<<5)
shell_WindowTitleIsAAliased(b%):=(
shell_WindowTitleFlags(b%)
1<<6)
shell_WindowTitleIsIndirected(b%):=(
shell_WindowTitleFlags(b%)
1<<8)
shell_WindowGetTitle(b%):
R$,a%:a%=
shell_HeapBlockFetch(&BB8):a%!0=b%:
&400CC,,a%:
(a%!32
1<<26)
((a%!60)
256)=0
R$=$(a%+76)
R$=$(!(a%+76))
shell_HeapBlockReturn(a%):=R$
shell_WindowTitleBufferLength(b%):
GA%,a%:a%=
shell_HeapBlockFetch(&BB8):a%!0=b%:
&400CC,,a%:
((a%!60)
256)=0
GA%=&C
GA%=a%!84
shell_HeapBlockReturn(a%):=GA%
shell_WindowMoveToIcon(b%,HD%,g%,qA%,sA%):
n%,s%:n%=
shell_HeapBlockFetch(50):s%=
shell_HeapBlockFetch(36):s%!20=0:
shell_OSCheckVersion(3)
HD%=-1
!s%=-2
!s%=HD%
&400CB,,s%
:n%!0=HD%:n%!4=g%:
&400CE,,n%:
shell_WindowMoveTo(b%,n%!8+qA%-s%!20,n%!20+sA%):
shell_HeapBlockReturn(n%):
shell_HeapBlockReturn(s%):
shell_WindowMoveTo(b%,OA%,PA%):
YE%,cE%,d%,a%:a%=
shell_HeapBlockFetch(&BB8):a%!0=b%:
&400CC,,a%:YE%=a%!&C-a%!4:cE%=a%!16-a%!8:a%!4=OA%:a%!8=PA%:a%!&C=OA%+YE%:a%!16=PA%+cE%:
&400C5,,a%:
&400C6,,a%:d%=
shell_SearchStatic(_U%!&B8,b%):
d%>-1
shell_OpenWindowStatic(b%)
shell_OpenWindowDynamic(b%,0,0)
shell_HeapBlockReturn(a%):
shell_WindowBringToTop(b%):
MB%:MB%=
shell_HeapBlockFetch(256):MB%!0=b%:
&400CB,,MB%:MB%!28=-1:
&400E7,2,MB%,b%:
&400C7,0,MB%:
shell_HeapBlockReturn(MB%):
shell_UpdateWindow(h%,MD%,fA%,vA%,CB%):
a%:a%=
shell_HeapBlockFetch(a%):a%!0=h%:a%!4=MD%:a%!8=fA%:a%!&C=vA%:a%!16=CB%:
&400C9,,a%
&400CB,,a%:
shell_HeapBlockReturn(a%):
shell_OpenWindowDynamic(b%,qA%,sA%):
o%,BC%:BC%=
shell_HeapBlockFetch(20):_U%!20=b%:
&400CF,,BC%:
&400D4,,b%,BC%!0+qA%,BC%!4+sA%:
shell_HeapBlockReturn(BC%):
shell_ClaimKeypress:
_U%!20<>0
&400D4,,-1:o%=
shell_DeleteWindow(_U%!20):_U%!20=0
shell_OpenWindow(b%,KD%,yD%):
d%,a%,t%,e%,_D%,cC%,QA%,lA%:
vB%,wB%,CB%,XE%,mD%,CC%:d%=
shell_GetEventListOffset(b%,-1,_U%+304,&C,
d%>=0
ga%=_U%!304+d%:c%=a%!8:
shell_Tracef0("OpenWindow:About to call "+"FN"+$c%):CC%=
("FN"+$c%):
CC%=0
:wB%=
:CB%=
shell_HeapBlockFetch(&64):CB%!0=b%:
&400CB,,CB%:
(CB%!32
&80000)=&80000
shell_HeapBlockReturn(CB%):_Q%!0=b%:
&400CB,,_Q%
&400C5,,_Q%
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
Ya%=(_U%!92)+d%:dB%=a%!8:SD%=a%!&C:NB%=a%!16:eB%=a%!20:_Q%!0=b%:
cC%=-1
cC%=_Q%!28
&400C5,,_Q%:
&400CB,,_Q%:
&400C6,,_Q%
shell_HeapBlockFetch(&400):e%=0:
dB%!e%<>-1:t%!0=dB%!e%:
_D%=0
_D%=t%!0
+XE%=t%!0:
&400CB,,t%:vB%=SD%!e%:
0,1:QA%=t%!16-t%!8:lA%=t%!&C-t%!4:t%!4=_Q%!4+NB%!e%:t%!&C=t%!4+lA%:t%!16=_Q%!16+eB%!e%:t%!8=t%!16-QA%
2:QA%=t%!16-t%!8:lA%=_Q%!&C-_Q%!4:t%!4=_Q%!4+NB%!e%:t%!&C=_Q%!&C:t%!16=_Q%!16+eB%!e%:t%!8=t%!16-QA%
3:QA%=_Q%!16-_Q%!8:lA%=t%!&C-t%!4:t%!4=_Q%!4+NB%!e%:t%!&C=t%!4+lA%:t%!16=_Q%!16:t%!8=_Q%!8+eB%!e%
4:QA%=t%!16-t%!8:lA%=_Q%!&C-_Q%!4:t%!4=_Q%!4+NB%!e%:t%!&C=_Q%!&C:t%!16=_Q%!8+QA%+eB%!e%:t%!8=t%!16+QA%
5:QA%=_Q%!16-_Q%!8:lA%=t%!&C-t%!4:t%!4=_Q%!&C-lA%+NB%!e%:t%!&C=t%!4+lA%:t%!16=_Q%!16:t%!8=_Q%!8
t%!28=cC%
t%!28=mD%
&400C5,,t%:mD%=t%!0:e%+=4:
_Q%!28=XE%:
&400C5,,_Q%
shell_HeapBlockReturn(t%)
_Q%!0=b%:
&400CB,,_Q%
cC%=-2
_Q%!28=-2
yD%=-1
_Q%!28=-1
&400C5,,_Q%
shell_CloseWindow(b%):
d%,a%,dB%,SD%,NB%,eB%,p%,CC%:d%=
shell_GetEventListOffset(b%,-1,_U%+308,&C,
d%>=0
+ha%=_U%!308+d%:c%=a%!8:
shell_Tracef0("CloseWindow:About to call "+"FN"+$c%):CC%=
("FN"+$c%):
CC%=0
shell_HeapBlockFetch(60):
5;d%=
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
7la%=(_U%!92)+d%:SD%=a%!&C:NB%=a%!16:eB%=a%!20:e%=0:dB%=a%!8:
dB%!e%<>-1:p%!0=dB%!e%:
&400C6,,p%:e%+=4:
:p%!0=b%:
&400C6,,p%
shell_HeapBlockReturn(p%):
shell_DeleteWindow(h%):
p%:p%=
shell_HeapBlockFetch(20):
h%<>0
oktodeletew(h%)
shell_EventDeleteAll(h%):
h%=_U%!20
_U%!20=0
U.d%=
shell_SearchStatic(_U%!&B8,h%):
d%>-1
c%=_U%!&B8+d%:c%!0=0
:p%!0=h%:
&400C3,,p%:h%=0
shell_HeapBlockReturn(p%):=h%
oktodeletew(h%):=-1
oktoclosew(h%):=-1
cliprect(A,
NF%):
EA%,IA%:
lwaorigin(A,EA%,IA%):RA%=A!24-EA%:ZA%=A!28-IA%:MF%=A!32-EA%:NF%=A!36-IA%:
poll(pB%,nD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,pB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,BA%
shell_Poll_I(pB%,nD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,pB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,BA%
"Interface_Poll",BA%,,nD%:=BA%
shell_DoBackgroundTask:
shell_IconIsDraggable(b%,g%):
j%:j%=
shell_IconGetFlags(b%,g%):c%=(j%
&6000):
c%=&6000=
shell_IconIsSprite(b%,g%):
j%,c%:j%=
shell_IconGetFlags(b%,g%):c%=(j%
1<<1):
c%=(1<<1)
shell_IconDragBox(b%,g%):
a%,H,J,yC%,j%,HA%,kD%,lD%,fB%,_$:
OC%,P$:yC%=
shell_GetEventListOffset(b%,g%,_U%+72,24,
yC%>=0
na%=_U%!72+yC%:OC%=a%!16:P$=
shell_IconGetData(b%,OC%):
P$=""
shell_OK(
shell_MessageNoArgs("SHELLMSG28"))
shell_HeapBlockFetch(6000):!a%=b%:
&400CC,,a%:H=a%!4-a%!20:J=a%!16-a%!24:lD%=a%!68:a%!4=g%:
&400CE,,a%:!a%=b%:a%!4=5:j%=a%!24:fB%=a%!32:a%!8=a%!8+H:a%!&C=a%!&C+J:a%!16=a%!16+H:a%!20=a%!20+J:a%!24=0:a%!28=0:a%!32=&7FFFFFFF:a%!36=&7FFFFFFF
6,&A1,28
,,HA%:kD%=((HA%
2)=2):
HA%=j%:
shell_IconGetCommand(fB%,"s")
shell_OK(
shell_MessageNoArgs("SHELLMSG19"))
_$<>""
&42400,&85,lD%,_$,a%+8:_U%!&64=_U%!&64
&400D0,,a%
&400D0,,a%
shell_HeapBlockReturn(a%)
shell_Tracef0("IconDragBox:WARNING! no drag handler registered for this icon!")
shell_HandleAttachedMenu(_Q%,b%,g%):
g%<>-1
b%>-1
shell_GetEventMenu(_Q%!8,b%,g%):
k%<>0
shell_HandleMenuOpen(_Q%,k%,b%,g%,
shell_Action(lE%):
A$,k%,a$,kA$,DB%,mA%,xA%,WD%:
b%,g%,o%,_temp28%,_temp32%,_temp24%,_temp%,YD%:
sB%,d%:
shell_DoBackgroundTask
shell_RedrawWindow(_Q%!0)
shell_OpenWindow(_Q%!0,
shell_CloseWindow(_Q%!0)
shell_PointerLeavingWindow(_Q%)
shell_PointerEnteringWindow(_Q%)
6:_U%!28=_Q%!&C:_U%!32=_Q%!16:mA%=_Q%!0:xA%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_U%!320=_Q%!8:_temp28%=_Q%!&C:_temp32%=_Q%!16:g%=_Q%!16:
shell_Tracef0("Action:Mouse_Click event detected")
shell_Tracef0("Action:Window Handle was &"+
~_Q%!&C+" Icon Handle was "+
_Q%!16):
_Q%!&C=_U%!288
_Q%!16=_U%!292
shell_HandleBumpIcons(_U%!296,_Q%!&C,_Q%!16,_Q%!8)
_U%!288=-1:_U%!292=-1:_U%!296=-1:
_Q%!16>=0
shell_GetEventListOffset(_Q%!&C,_Q%!16,_U%+&68,16,0):
d%>=0
shell_HandleBumpIcons(d%,_Q%!&C,_Q%!16,_Q%!8)
(_Q%!8=64)
3GA%=
shell_IconIsDraggable(_Q%!&C,_Q%!16):
<V$="Icon is draggable":
shell_IconDragBox(_Q%!&C,_Q%!16)
V$="Icon is not draggable"
shell_Tracef0("Action:"+V$)
_Q%!8
shell_ActionSelectButton
shell_ActionMenuButton
shell_ActionAdjustButton
_U%!&64
&42401:_U%!&64=_U%!&64
:_U%!&80=0:A$=
shell_GetEventHandler(_U%!28,_U%!32,6):
A$<>""
shell_Tracef0("Action:Drag event detected - function is "+A$):o%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_Tracef0("Action:Drag event detected - no handler function"):
shell_SendDataSave(_U%!28,_U%!32)
shell_Tracef0("Action:keypress is="+
_Q%!24):
_Q%!24
&D,394,398,399,410:WD%=
shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
shell_HotKeyProcess(_Q%!24)
shell_Tracef0("Action:Keypress not claimed, passing it on"):
&400DC,_Q%!24
shell_Tracef0("Action:Keypress claimed by this application")
shell_ActionMenuSelect(_Q%)
17,18:
shell_Receive(_Q%)
shell_UserMessageAcknowledge(_Q%)
shell_ActionSelectButton:
shell_Tracef0("ActionSelectButton:Mouse Button was SELECT"):
shell_HandleAttachedMenu(_Q%,_U%!28,_U%!32):A$=
shell_GetEventHandler(_U%!28,_U%!32,2):
_U%!32=0
shell_DataSaveCheckName(_U%!28,_U%!32)
A$<>""
shell_IconSlab(4,_U%!28,_U%!32):
shell_Tracef0("ActionSelectButton:About to call "+"FN"+A$+"("+
_temp28%+","+
_temp32%+")"):o%=
("FN"+A$+"(_temp28%,_temp32%)")
_U%!32=0
_U%!28=_U%!20
&400D4,,-1
shell_ActionMenuButton:
c%,k%,tB%:tB%=
shell_Tracef0("ActionMenuButton:Mouse Button was MENU"):c%=
shiftmenuclick(_Q%!&C,_Q%!16)
shell_Tracef0("ActionMenuButton:Checking menu events.."):
shell_Tracef0("ActionMenuButton:button="+
_Q%!8+" _Q%!12="+
_Q%!&C+" _Q%!16="+
_Q%!16):k%=
shell_GetEventMenu(_Q%!8,_Q%!&C,_Q%!16):
(k%<>0
_Q%!&C>0
_Q%!16>=0)
r+k%=
shell_GetEventMenu(_Q%!8,_Q%!&C,-1)
shell_Tracef0("ActionMenuButton:Menu handle is:&"+
~k%):
k%<>0
shell_HandleMenuOpen(_Q%,k%,_Q%!&C,_Q%!16,tB%)
shell_HandleMenuOpen(_Q%,k%,b%,g%,tB%):
n%,s%:
shell_OpenMenu(_Q%!0,_Q%!4,k%)
shell_HeapBlockFetch(50):s%=
shell_HeapBlockFetch(36):n%!0=b%:n%!4=g%:
&400CE,,n%:s%!0=b%:
&400CB,,s%:
shell_OpenMenu(s%!4+n%!16+64,_Q%!4,k%):
s%!4+n%!16+64,_Q%!4:
shell_HeapBlockReturn(n%):
shell_HeapBlockReturn(s%)
shell_ActionMenuSelect(_Q%):
hD%,DB%,sB%,YD%,o%,qC%:qC%=
shell_HeapBlockFetch(256):
shell_Tracef0("ActionMenuSelect:Menu_Select event detected"):
&400CF,,_shell_blk%:DB%=
shell_HeapBlockFetch(256):
_U%!24=_U%!&FC
sB%=0:_U%!264=1
shell_CheckSelection(_Q%):
sB%>-1
_U%!264=1
_U%!264=0
_U%!264>0
"FontMenu_DecodeFontMenu",_Q%+sB%,DB%
YD%=1
shell_Tracef0("ActionMenuSelect:FontMenu selection ("+
shell_GetString(DB%)+")"):
shell_FontMenuSelectFont(
shell_GetString(DB%),_U%!260):
_shell_FontMenuSelFN$=""
&400D5,,_U%!24,_Q%,DB%:A$=
shell_GetEventHandler(_U%!52,_U%!56,0):_temp%=DB%:$_temp%=
shell_StringStripTrailing($_temp%," "):
A$<>""
("FN"+A$+"($_temp%)")
_shell_FontMenuSelFN$<>""
("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)")
shell_HeapBlockReturn(DB%):
_U%!264=0
&45BC4,_U%!24,_Q%
hD%,,qC%:
shell_MenuCallHandler(hD%,qC%)
_shell_blk%!8=1
shell_HeapBlockExists(_U%!&E0)
_temp%=_U%!&E0:
$_temp%<>""
("FN"+$_temp%+"(_U%!52,_U%!56)")
shell_OpenMenu(_U%!36,_U%!40,_U%!24)
_shell_FontMenuSelFN$=""
shell_HeapBlockReturn(qC%):
shell_ActionAdjustButton:
j%,A$,o%,uB%,e%:uB%=
shell_HeapBlockFetch(&64):
shell_Tracef0("Action:Mouse Button was ADJUST"):
&400D6,_U%!28,uB%,&F000,&B000:e%=0:
uB%!e%<>-1:
uB%!e%=_U%!32
shell_IconSet(_U%!28,_U%!32,1)
?e%+=4:
shell_GetEventHandler(_U%!28,_U%!32,3):
A$<>""
shell_IconSlab(1,_U%!28,_U%!32):o%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_HeapBlockReturn(uB%):
shiftmenuclick(b%,g%):=
shell_IconSlab(RC%,b%,g%):
a%:a%=
shell_HeapBlockFetch(50):a%!8=RC%:a%!&C=b%:a%!16=g%:
"Interface_SlabButton",,a%:a%!8=0:
"Interface_SlabButton",,a%:
shell_HeapBlockReturn(a%):
shell_PointerLeavingWindow(_Q%):
n%,o%:n%=
shell_HeapBlockFetch(&C):
&400D6,!_Q%,n%,&3F0000,&F<<16:
!n%<>-1
("FN"+
shell_IconGetData(!_Q%,!n%))
shell_HeapBlockReturn(n%):
shell_PointerEnteringWindow(_Q%):
n%,o%,b%:b%=_Q%!0:n%=
shell_HeapBlockFetch(&C):
&400D6,b%,n%,&3F0000,&E<<16:
!n%<>-1
("FN"+
shell_IconGetData(b%,!n%))
shell_HeapBlockReturn(n%):
shell_RedrawWindow(h%):
ZC%,A$,EA%,IA%,a%,n%:n%=
shell_HeapBlockFetch(&C):
&400D6,h%,n%,&3F0000,&D<<16:
!n%<>-1
+!A$=
shell_IconGetData(h%,!n%)
shell_HeapBlockReturn(n%):a%=
shell_HeapBlockFetch(&64):
A$=""
2&A$=
shell_GetEventHandler(h%,-1,4)
:a%!0=h%:
&400C8,,a%
ZC%:EA%=a%!4-a%!20:IA%=a%!16-a%!24:
"Interface_Render3dWindow",,a%:
A$<>""
("FN"+A$+"("+
a%+","+
EA%+","+
IA%+")")
&400CA,,a%
shell_HeapBlockReturn(a%):
shell_Receive(_Q%):
c%,o%:
_Q%!16
shell_Exit:
shell_DataSave(_Q%)
shell_DataSaveAck(_Q%)
shell_DataLoad(_Q%,
shell_DataLoadAck(_Q%)
shell_DataLoad(_Q%,
shell_RAMFetch(_Q%)
shell_RAMTransmit(_Q%)
shell_Message_PreQuit(_Q%)
_U%!&A4>0
shell_Tracef0("Receive:PaletteChange message received"):c%=_U%!&A4:o%=
("FN"+$c%)
shell_Message_SaveDesktop(_Q%)
shell_Message_Shutdown(_Q%)
&502:
shell_InteractiveHelp(_Q%)
&400C0:
shell_MenuWarning(_Q%)
&400C1:
shell_Message_ModeChange(_Q%)
&400C2:
_U%!&A8>0
shell_Tracef0("Receive:TaskInitialise message received"):c%=_U%!&A8:o%=
("FN"+$c%+"("+
(_Q%!4)+","+
shell_GetString(_Q%+28)+
34+")")
_U%!&D0=-1
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!4:
shell_StrongHlpMsg("Help_Install -DieWithTask "+
shell_GetAppDir+"."+
shell_GetAppName):c%=_U%!&D8:
$c%<>""
shell_HelpWord($c%):
shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
&400C3:
_U%!&AC>0
shell_Tracef0("Receive:TaskCloseDown message received"):c%=_U%!&AC:o%=
("FN"+$c%)
_Q%!4=_U%!&D0
_U%!&D0=-1
&400C7:
shell_Tracef0("Receive:TaskNameIs message received"):
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!20
shell_ScanForHelp
shell_HandleUnknownMessage2(_Q%)
shell_Message_ModeChange(_Q%):
d%,e%,OB%,s%:OB%=_U%!&B8:
_U%!&A0>0
shell_Tracef0("Message_ModeChange:ModeChange message received"):c%=_U%!&A0:o%=
("FN"+$c%)
shell_HeapBlockFetch(&64):
OB%<>0
shell_Tracef0("Message_ModeChange:Checking static window list for pane events"):
OB%!e%<>-1:d%=
shell_GetEventListOffset(OB%!e%,-1,_U%+92,24,
d%>-1
shell_Tracef0("Message_ModeChange:Static window handle found"):
shell_WindowIsOpen(OB%!e%)
shell_Tracef0("Message_ModeChange:Window is open.."):!s%=OB%!e%:
&400C6,,s%:
shell_OpenWindow(OB%!e%,0,-1)
:e%+=4:
shell_HeapBlockReturn(s%):
shell_Message_Shutdown(_Q%):
_U%!312>0
shell_Tracef0("Message_Shutdown:Shutdown message received"):c%=_U%!312:o%=
("FN"+$c%)
shell_HandleUnknownMessage2(_Q%):
_Q%!16
&43B00:W$=$(_Q%+20):
W$,30)="EvntShellLib:ShellDBug started"
_U%!&64
r_U%!&64=(_U%!&64
1<<4):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
shell_GetAppName)
W$,25)="EvntShellLib:TraceInitAck"
_U%!&64=(_U%!&64
1<<4)
W$,20)="EvntShellLib:TraceOn"
shell_TraceOn
W$,21)="EvntShellLib:TraceOff"
shell_TraceOff
W$,28)="EvntShellLib:ListClickSelect"
shell_ListClickSelect
W$,28)="EvntShellLib:ListClickAdjust"
shell_ListClickAdjust
W$,25)="EvntShellLib:ListHelpTags"
shell_ListHelpTags
shell_HandleUnknownMessage(_Q%):
shell_HandleUnknownMessage(_Q%):
shell_AttachPreQuitHandler(A$):
c%,o%:
_U%!300>0
shell_HeapBlockReturn(_U%!300)
<_U%!300=
shell_HeapBlockFetch(
A$+1):c%=_U%!300:$c%=A$:
shell_AttachShutdownHandler(A$):
c%,o%:
_U%!312>0
shell_HeapBlockReturn(_U%!312)
<_U%!312=
shell_HeapBlockFetch(
A$+1):c%=_U%!312:$c%=A$:
shell_AttachModeChangeHandler(A$):
c%,o%:
_U%!&A0>0
shell_HeapBlockReturn(_U%!&A0)
J_U%!&A0=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A0:$c%=A$:o%=
("FN"+A$):
shell_AttachPaletteChangeHandler(A$):
c%,o%:
_U%!&A4>0
shell_HeapBlockReturn(_U%!&A4)
J_U%!&A4=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A4:$c%=A$:o%=
("FN"+A$):
shell_AttachTaskInitialiseHandler(A$):
c%,o%:
_U%!&A8>0
shell_HeapBlockReturn(_U%!&A8)
<_U%!&A8=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A8:$c%=A$:
shell_AttachTaskCloseDownHandler(A$):
c%,o%:
_U%!&AC>0
shell_HeapBlockReturn(_U%!&AC)
!<_U%!&AC=
shell_HeapBlockFetch(
A$+1):c%=_U%!&AC:$c%=A$:
shell_RAMFetch(_Q%):
XF%,xC%,_C%:_C%=
_U%!&90>&8000
shell_Tracef0("RAMFetch:RAMFetch called.."):_Q%!&C=_Q%!8:_Q%!16=7:xC%=_U%!&88:
_U%!&8C=&FF9
_U%!&90+=4
(xC%-_U%!&80)<_Q%!24
_Q%!24=xC%-_U%!&80:_C%=
shell_Tracef0("RAMFetch:Sending block")
&400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24:
&400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24:
_U%!&80=0
shell_RAMTransmit(_Q%):
d%,a%,TA$,c%:
_Q%!&C=_U%!&70
W$_U%!&80+=_Q%!24:
_Q%!24<_U%!&84
shell_Tracef0("RAMTransmit:Last block received"):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+96,16,
):a%=_U%!96+d%:
shell_Tracef0("RAMTransmit:_U%!28="+
_U%!28):
shell_Tracef0("RAMTransmit:_U%!32="+
_U%!32)
shell_Tracef0("RAMTransmit:offset%="+
d%):c%=_U%!&9C:TA$=
shell_GetString(c%+44):
shell_UserFNLoadFile(c%!40,_U%!&98,a%!8,TA$,_U%!&84,a%)
shell_Tracef0("RAMTransmit:Block received"):
_U%!&80>_U%!&84
shell_Tracef0("RAMTransmit:Increasing buffer size.."):_U%!&98=
shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84)
:_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK(
shell_MessageNoArgs("SHELLMSG15"))
shell_LoadFile(mF%):
p$,KB%,NC%,yA%:p$=
shell_GetString(_Q%+44):KB%=
shell_FileLength(p$):
KB%<0
shell_OK(
shell_MessageNoArgs("SHELLMSG16"))
PyA%=
shell_HeapBlockFetch(KB%):
&20008,16,p$,yA%,0
;NC%:
shell_VFlag(NC%)
shell_HeapBlockReturn(yA%):
shell_OK(
shell_MessageNoArgs("SHELLMSG17"))
shell_Tracef0("LoadFile:File "+p$+" loaded ok at &"+
~yA%)
:=yA%
shell_VFlag(NC%):=((NC%
1)=1)
shell_CheckType(u%,PB%,QB%):
gF%,e%,m%,c%,QC%:e%=0:m%=-1:QC%=
_U%!&64
_U%!&64=_U%!&64
PB%!e%<>-1:c%=PB%!e%:
1<<31
c%=c%
1<<31:QC%=
c%=u%
m%=e%:
L_U%!&64=_U%!&64
1<<1:
shell_Tracef0("CheckType:Top Bit Load detected..")
:e%+=4:
(u%>=4096)
m%=-1
m%>-1
shell_Tracef0("CheckType:File type OK "+
~PB%!m%)
shell_Tracef0("CheckType:File type NOT ok "+
m%<>-1
shell_Exit:
UB%:UB%=_U%!68:
&61504,UB%:
&2001E,7,,UB%:
shell_Tracef0("Exit:Application closing down"):
shell_TraceExit:
&606C2:
&600D0,,-1:
shell_WimpCloseDown_I(_U%!&94):
shell_DataLoad(_Q%,QB%):
YF%,d%,a%,_temp%,PB%,u%,e$:
shell_DataOpenOKToLoad(QB%,_Q%!40)
du%=_Q%!40:e$=
shell_GetString(_Q%+44):
shell_Tracef0("DataLoad:DataLoad message received"):
_U%!96<>0
d%=-1
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%=-1
shell_GetEventListOffset(_Q%!20,-1,_U%+96,16,
d%>-1
4a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,QB%)
shell_Tracef0("DataLoad:File type recognised (&"+
~_Q%!40+")"):LF%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
&400E7,18,_Q%,_Q%!4:
_U%!&64
yA%=-1:_U%!&64=_U%!&64
shell_LoadFile(LF%=_U%!&6C)
shell_UserFNLoadFile(u%,yA%,a%!8,e$,_Q%!36,a%):
_U%!&9C<>0
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
shell_Tracef0("DataLoad:File type NOT recognised (&"+
~_Q%!40+")")
shell_DataOpenOKToLoad(QB%,u%):
GA%,ED%,r$,GA$:
+ZGA%=
shell_Tracef0("DataOpenOKToLoad:Message reason code was 3, normal drag load..")
shell_Tracef0("DataOpenOKToLoad:Message reason code was 5, double click load.."):ED%=
shell_HeapBlockFetch(256):r$=
shell_OSVarGetVal(ED%,256,"Alias$@RunType_"+
~u%,1):
shell_Tracef0("DataOpenOKToLoad:Alias$@RunType="+r$):
shell_HeapBlockReturn(ED%)
7zGA$=
shell_Branch(r$):
shell_Tracef0("DataOpenOKToLoad:dbug "+GA$):
shell_Leaf(GA$)="!"+
shell_GetAppName
:=GA%
shell_UserFNLoadFile(u%,yA%,PB%,_filename$,_file_size%,a%):
e%,m%,c%,o%:e%=0:m%=-1:
PB%!e%<>-1:c%=PB%!e%:
1<<31
c%=c%
1<<31
c%=u%
m%=e%
H[e%+=4:
:c%=a%!&C:o%=
("FN"+$(c%!m%)+"("+
yA%+","+
u%+",_filename$,"+
_file_size%+")"):
shell_DataSave(_Q%):
c%,d%,a%,r%:
shell_Tracef0("DataSave:DataSave message received"):
_Q%!4<>_U%!&94
\Cd%=
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%>-1
^2a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,
shell_Tracef0("DataSave:Filetype recognized (&"+
~_Q%!40+")"):
shell_TopBitLoadInProgress
shell_Tracef0("DataSave:'no load' flag set"):
shell_Tracef0("DataSave:Sending Message_DataSaveAck"):_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)=
shell_GetAppDir+".ScrapFile"+
&400E7,18,_Q%,_Q%!4
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=
shell_HeapBlockFetch((_Q%!0)+8):c%=_U%!&9C:
_Q%!0
4:c%!r%=_Q%!r%:
r%:_U%!28=_Q%!20:_U%!32=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
shell_HeapBlockFetch(_Q%!36):_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6
_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8:
shell_Tracef0("DataSave:Sending Message_RAMFetch")
shell_Tracef0("DataSave:Filetype NOT recognized")
shell_TopBitLoadInProgress:
_U%!&64
shell_SendDataSave(b%,g%):
a%,VA%,RB%,d%,KB%,o%:RB%=
shell_HeapBlockFetch(30):
&400CF,,RB%:d%=
shell_GetEventListOffset(b%,g%,_U%+72,24,
d%=-1
d%=-2
shell_MessageWindow(
shell_MessageNoArgs("SHELLMSG13"),0,"",
shell_MessageNoArgs("warning"))
a%=(_U%!72)+d%:
a%!8>&8000
$KB%=
shell_HeapBlockInfo(a%!8)-4
KB%=a%!8
:VA%=_U%!76:VA%!0=256:VA%!&C=0:VA%!16=1:VA%!20=RB%!&C:VA%!24=RB%!16:VA%!28=RB%!0:VA%!32=RB%!4:VA%!36=KB%:VA%!40=a%!&C:$(VA%+44)=
shell_Leaf(
shell_IconGetData(b%,a%!16)):
&400E7,18,VA%,VA%!20,VA%!24:_U%!&78=_Q%!8:_U%!&88=KB%:_U%!&8C=a%!&C
;_U%!&90=a%!8:_U%!&9C=a%!4:_U%!&C8=VA%!20:_U%!&CC=VA%!24
shell_HeapBlockReturn(RB%):
shell_DataSaveAck(_Q%):
_fullname$,BA%,fA%,a%,c%,o%:
shell_Tracef0("DataSaveAck:DataSaveAck message received"):BA%=0:fA%=_Q%?(44+BA%):
fA%<>0:_fullname$+=
(fA%):BA%+=1:fA%=_Q%?(44+BA%):
shell_Tracef0("DataSaveAck:Full save name is: "+_fullname$)
shell_Tracef0("DataSaveAck:task="+
_Q%!4):
shell_Tracef0("DataSaveAck:mytask="+
_U%!&94):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+72,24,
d%=-1
d%=-2
shell_MessageNoArgs("SHELLMSG05")
%a%=(_U%!72)+d%:c%=a%!20:
$c%<>""
("FN"+$c%+"(_fullname$)")
shell_HeapBlockExists(a%!8)
8,&A,_fullname$,a%!&C,,a%!8,a%!8+
shell_HeapBlockInfo(a%!8)+1
shell_MessageNoArgs("SHELLMSG21")
_Q%!36>-1
_U%!80<>0
shell_HeapBlockReturn(_U%!80)
H_U%!80=
shell_HeapBlockFetch(
_fullname$+1):c%=_U%!80:$c%=_fullname$
:_Q%!16=3:!_Q%=256:_Q%!20=_U%!&C8:_Q%!24=_U%!&CC:_Q%!40=_U%!&8C:_Q%!36=
shell_FileLength(_fullname$):_Q%!&C=_Q%!8:
shell_Tracef0("DataSaveAck:File length is "+
_Q%!36+" bytes"):$(_Q%+44)=_fullname$+
(0):_U%!84=_Q%!8
shell_Tracef0("DataSaveAck:Sending DataLoad Message"):
&400E7,18,_Q%,_Q%!20,_Q%!24:
_U%!28<>_U%!20
shell_CloseWindow(_U%!28)
&400D4,,-1:
shell_DataSaveCheckName(b%,g%):
d%,a%,q%:a%=_U%!72:d%=0:
a%<>0
shell_HeapBlockInfo(a%)-8:
!(a%+d%)=b%
shell_IconGetData(!a%,a%!16):
P$,".")=0
shell_OK(
shell_MessageNoArgs("SHELLMSG01"))
d%=q%
:d%+=24:
d%>=q%
shell_DataLoadAck(_Q%):
shell_Tracef0("DataLoadAck:DataLoadAck message received (file received ok)"):
shell_UserMessageAcknowledge(_Q%):
_Q%!16
shell_AckDataLoad(_Q%)
shell_AckRAMFetch(_Q%)
shell_AckDataLoad(_Q%):
_Q%!&C<>_U%!84
&20008,6,"<Wimp$Scrap>":
&FF,"Data Transfer failed: Receiver died"
shell_AckRAMFetch(_Q%):
uD%,c%:c%=_U%!&9C:
shell_Tracef0("AckRAMFetch:AckRAMFetch called...."):
_Q%!&C<>_U%!&70
_U%!&80=0
shell_Tracef0("AckRAMFetch:Receiver does not support RAM transfer"):
&20023,"Wimp$Scrap",,-1,0,3
,,uD%:
uD%<>0
$(c%+44)="<Wimp$Scrap>"+
(0):c%!0=(49+
shell_GetString(c%+44)))
3:c%!&C=c%!8:c%!16=2:c%!36=-1:
&400E7,18,c%,c%!4:_U%!&6C=c%!8
shell_OK(
shell_MessageNoArgs("SHELLMSG14"))
shell_Tracef0("AckRAMFetch:RAM transfer started, but not enough data sent. Sender died?"):
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK("SHELLMSG06")
shell_MenuWarning(_Q%):
A$,DB%,OA%,PA%,o%,_temp%,BA%,C$,SB%,a%:OA%=_Q%!24:PA%=_Q%!28:_U%!264=0:
_U%!20<>0
shell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+
~_U%!20+")"):o%=
shell_DeleteWindow(_U%!20):
shell_Tracef0("MenuWarning:Last dynamic dbox removed")
_Q%!20
_U%!&E4:
shell_WindowRetitle(_U%!&E4,
shell_MessageNoArgs("warning")):
shell_IconPutData(_U%!&E4,1,
shell_MessageNoArgs("SHELLMSG07"),0):
&400E8,,_U%!&E4,OA%,PA%
shell_MenuGetItemAddress(_U%!24,_Q%+32):
shell_HeapBlockExists(SB%!4)
shell_MenuWarnDBox(SB%,OA%,PA%)
shell_HeapBlockFetch(32):
&45BC4,_U%!24,_Q%+32
,,a%:
shell_FindMenuWarnEvent(a%!8,C$,I$):
shell_HeapBlockReturn(a%):
shell_MenuWarnSubMenu(_Q%!20,OA%,PA%,C$,I$)
shell_MenuWarnDBox(nA%,OA%,PA%):
c%,y%,o%:
c%=nA%!4:
shell_CreateWindow($c%!0,y%):
shell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+
~y%+")"):
$c%!4<>""
shell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$c%!4+"'"):o%=
("FN"+$c%!4+"("+
y%+")")
$c%!8<>""
shell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$c%!8+"'"):o%=
("FN"+$c%!8+"("+
y%+")")
&400E8,,y%,OA%,PA%:_U%!20=y%:
shell_FindMenuWarnEvent(gA%,
GA%,v%,c%,d%,m%,q%,z%,e%:
TB%:TB%=0:v%=_U%!&DC:d%=0:m%=
:C$="":TB%=0:
shell_HeapBlockExists(v%)
:e%+=4:
v%!e%=-1:q%=e%:e%=0:
shell_Tracef0("FindMenuWarnEvent:list_size%="+
:c%=!(v%+d%+0):
c%<>-1
c%=gA%
:z%=v%!(d%+4):C$=$z%:TB%=v%!(d%+8):z%=v%!(d%+&C):I$=$z%:
shell_Tracef0("FindMenuWarnEvent:submenu found")
:d%+=16
d%=q%
d%>=q%
C$="":I$=""
TB%=0
shell_Tracef0("FindMenuWarnEvent:warn fn not found..")
shell_MenuWarnSubMenu(RD%,OA%,PA%,C$,I$):
o%,c%,_A%,e%:_shell_FontMenuSelFN$=I$:
shell_HeapBlockExists(_U%!&E0)
shell_HeapBlockReturn(_U%!&E0)
C_U%!&E0=
shell_HeapBlockFetch(
C$+1):c%=_U%!&E0:$c%=C$:
C$<>""
("FN"+C$+"(_U%!52,_U%!56)"):
shell_Tracef0("MenuWarnSubMenu:Calling FN"+C$)
RD%=_U%!&FC
shell_Tracef0("MenuWarnSubMenu:FontMenu opening.."):
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256)
e%=0:
:e%+=4:
!(_Q%+32+e%)=-1:e%+=4:_U%!256=
shell_HeapBlockFetch(e%):c%=_U%!256:e%=0:
:c%!e%=!(_Q%+32+e%):e%+=4:
!(_Q%+32+e%)=-1:c%!e%=!(_Q%+32+e%):c%=_U%!256
shell_Tracef0("MenuWarnSubMenu:Selecting '"+
shell_FontMenuGetLastSelectedFont+"' in FontMenu.."):
"FontMenu_Select",
shell_FontMenuGetLastSelectedFont,_U%!260
,_A%:_U%!264=1:
_A%<>_U%!&FC
shell_FontMenuUpdatePtr(_A%):_U%!&FC=_A%:RD%=_A%
_U%!264=0
&400E8,,RD%,OA%,PA%:
shell_AttachSubMenu(wA%,TB%,C$):
&45BCE,wA%,TB%:
C$<>""
&45BCC,,
shell_EventListMenuWarn(wA%,TB%,C$,"")
shell_EventListMenuWarn(wA%,TE%,C$,I$):
c%,z%,e%,v%:
_U%!&DC=0
_U%!&DC=
shell_HeapBlockFetch(32):c%=_U%!&DC:c%!0=wA%:c%!4=
shell_HeapBlockFetch(
C$+1):$(c%!4)=C$:c%!8=TE%:c%!&C=
shell_HeapBlockFetch(
I$+1):$(c%!&C)=I$:c%!16=-1:c%!20=-1:c%!24=-1:c%!28=-1
shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=v%:e%=0:
:e%+=16:
v%!e%=-1:c%=_U%!&DC:c%!e%=wA%:c%!(e%+4)=
shell_HeapBlockFetch(
C$+1):z%=c%!(e%+4):$(z%)=C$:c%!(e%+8)=TE%:c%!(e%+&C)=
shell_HeapBlockFetch(
I$+1):z%=c%!(e%+&C):$(z%)=I$
;;c%!(e%+16)=-1:c%!(e%+20)=-1:c%!(e%+24)=-1:c%!(e%+28)=-1
shell_InteractiveHelp(_Q%):
H$,V$,J$,EB%,gD%,jA$,n%:n%=
shell_HeapBlockFetch(&C):
&400D6,_Q%!32,n%,&3F0000,&C<<16:
!n%<>-1
J%H$=
shell_IconGetData(_Q%!32,!n%)
shell_HeapBlockReturn(n%):
H$=""
shell_GetEventHandler(_Q%!32,_Q%!36,8)
O7J$=
shell_IconGetValidation(_Q%!32,_Q%!36):
J$<>""
shell_StringUpperCase(
J$,1))="I"
J$,";"):
EB%=0
J$,2)
J$,2,EB%-2)
shell_StringUpperCase(J$),
shell_StringUpperCase(";i")):gD%=
shell_StringUpperCase(J$),
shell_StringUpperCase(";"),EB%+1):
EB%>0
gD%>0
J$,EB%+2,gD%-EB%-2)
J$,EB%+2)
H$<>""
_Q%!16=&503:_Q%!&C=_Q%!8:V$=
shell_MessageLookup(H$,"",""):V$=
shell_MessageExpand(V$):$(_Q%+20)=V$:!_Q%=(
V$+25)
&400E7,17,_Q%,_Q%!4
shell_Message_PreQuit(_Q%):
c%,iD%,a%,r%,jD%:
_U%!300>0
shell_HeapBlockFetch(256):
_Q%!0
4:a%!r%=_Q%!r%:
shell_Tracef0("Message_PreQuit:PreQuit message received"):c%=_U%!300:iD%=a%!4:
!a%<24
jD%=0
jD%=a%!20
2a%!&C=a%!8:
&400E7,19,a%,iD%:
("FN"+$c%)<>0
_closedown%=
!a%=24:a%!24=508:
&400E7,8,a%,iD%:_closedown%=
shell_HeapBlockReturn(a%)
lwaorigin(A,
PA%):OA%=A!0-A!16:PA%=A!&C-A!20:
shell_Iconbar(CA%,q$,G$,tC%,k%,cB%,gB%,xB%):
G$=""
J!_Q%=CA%:_Q%!4=0:_Q%!8=0:_Q%!&C=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=q$
!_Q%=CA%:_Q%!4=0:_Q%!8=-16:_Q%!&C=tC%:_Q%!16=90:_Q%!20=&1700210B:
_Q%!24&C:
_Q%!28
(q$)+2:$(_Q%!24)=G$:$(_Q%!28)="S"+q$:_Q%!32=&C
&400C2,,_Q%
shell_AttachMenu(-2,h%,k%,cB%,gB%,xB%):=h%
shell_IconbarSetText(y%,hE%,K$):
l%,s%:l%=
shell_HeapBlockFetch(40):s%=
shell_HeapBlockFetch(36):s%!20=0:
shell_OSCheckVersion(3)
y%=-1
!s%=-2
!s%=y%
&400CB,,s%
:!l%=y%:l%!4=hE%:
&400CE,,l%:$(l%!28)=K$:
&400D1,-1,l%!8-&64-s%!20,l%!&C,l%!16+&64-s%!20,l%!20:
shell_HeapBlockReturn(l%):
shell_HeapBlockReturn(s%):
shell_WritableIconHandler(b%,g%,KA%):
ZB%,UC%,VC%,e%:
sC%,uC%,pA%,mA%,xA%,dF%,LA%:LA%=
shell_HeapBlockFetch(&400):
&400D3,,LA%:
LA%!0=-1
shell_HeapBlockReturn(LA%):=
&400D6,b%,LA%,&40E000,&E000:UC%=LA%!0:e%=0:
LA%!e%=g%
!sC%=LA%!(e%-4):uC%=LA%!(e%+4)
:e%+=4:
LA%!e%=-1:VC%=LA%!(e%-4):
shell_FakeMouseClick(b%,0,4)
398,394:
g%=VC%
&400D2,b%,UC%,-1,-1,-1,
shell_IconGetData(b%,UC%))
&400D2,b%,uC%,-1,-1,-1,
shell_IconGetData(b%,uC%))
399,410:
g%=UC%
&400D2,b%,VC%,-1,-1,-1,
shell_IconGetData(b%,VC%))
&400D2,b%,sC%,-1,-1,-1,
shell_IconGetData(b%,sC%))
shell_HeapBlockReturn(LA%):=
shell_FakeMouseClick(b%,g%,RC%):
6,&F,1:_Q%!8=RC%:_Q%!&C=b%:_Q%!16=g%:
shell_Action(6):
shell_IconCreate(b%,rA%,eA%,tC%,y%,vC%,wC%,mE%,O$,nA%,WC%,J$):
tE%,h%,fB%,l%:l%=
shell_HeapBlockFetch(40):l%!0=b%:l%!4=rA%:l%!8=eA%:l%!&C=rA%+tC%:l%!16=eA%+y%:l%!20=mE%
wC%<<28
vC%<<24:
l%!20
#tE%=
O$,","):l%!24=nA%:
J$<>""
6fB%=
shell_HeapBlockFetch(
J$+1):$fB%=J$:l%!28=fB%
l%!28=-1
:l%!32=WC%
$(l%+24)=
O$,&B)
&400C2,,l%
shell_HeapBlockReturn(l%):=h%
shell_IconDelete(b%,g%):
shell_DoIconDelete(b%,g%,
shell_IconDelete2(b%,g%):
shell_DoIconDelete(b%,g%,
shell_DoIconDelete(b%,g%,uE%):
a%,EA%,IA%,RA%,ZA%:a%=
shell_HeapBlockFetch(40):a%!0=b%:a%!4=g%:
&400CE,,a%:
"Interface_BoundingBox",,a%+8:EA%=a%!8:IA%=a%!&C:RA%=a%!16:ZA%=a%!20:
&400CE,,a%
shell_HeapBlockExists(a%!28)
shell_HeapBlockReturn(a%!28)
shell_HeapBlockExists(a%!32)
shell_HeapBlockReturn(a%!32)
&400C4,,a%:
&400D1,b%,EA%,IA%,RA%,ZA%
shell_HeapBlockReturn(a%):
shell_IconPutData(JA%,oA%,O$,I):
a%,QA$:QA$=
shell_IconGetData(JA%,oA%):
O$<>QA$
GSa%=
shell_HeapBlockFetch(40):a%!0=JA%:a%!4=oA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
a%!8=0:a%!&C=0:
&400CD,,a%
shell_HeapBlockReturn(a%)
shell_IconPutDataNow(JA%,oA%,O$):
a%:a%=
shell_HeapBlockFetch(50):a%!0=JA%:a%!4=oA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
:a%!8=0:a%!&C=0:
&400CD,,a%:
shell_EnsurePoll:
shell_HeapBlockReturn(a%):
shell_IconNewSprite(JA%,oA%,gA$,I):
l%:l%=
shell_HeapBlockFetch(40):l%!0=JA%:l%!4=oA%:
&400CE,,l%:
&400C4,,l%:l%!4=l%!8:l%!8=l%!&C:l%!&C=l%!16:l%!16=l%!20:l%!20=l%!24:$(l%+24)=gA$:
&400C2,,l%
&400D1,l%!0,l%!4,l%!8,l%!&C,l%!16
shell_HeapBlockReturn(l%):=oA%
shell_IconGetData(JA%,oA%):
Q$,l%:l%=
shell_HeapBlockFetch(40):l%!0=JA%:l%!4=oA%:
&400CE,,l%:
(l%!24
(1<<8))<>0
Q$=$(l%!28)
Q$=$(l%+28)
shell_HeapBlockReturn(l%):=Q$
shell_IconMove2(b%,g%,wD%,xD%):
x%:x%=
shell_HeapBlockFetch(40):!x%=b%:x%!4=g%:
&400CE,,x%:x%!8+=wD%:x%!16+=wD%:x%!&C+=xD%:x%!20+=xD%:g%=
shell_IconMove(b%,g%,x%!8,x%!&C,x%!16,x%!20):
shell_HeapBlockReturn(x%):=g%
shell_IconResize(b%,g%,EA%,IA%,RA%,ZA%):=
shell_IconMove(b%,g%,EA%,IA%,RA%,ZA%)
shell_IconMove(b%,g%,EA%,IA%,RA%,ZA%):
n%,lF%,bF%,tA%,a%:
GE%,IE%,PE%,RE%:n%=
shell_HeapBlockFetch(40):a%=
shell_HeapBlockFetch(40):!n%=b%:n%!4=g%:
&400CE,,n%:!a%=b%:a%!4=g%:
&400CE,,a%:
"Interface_BoundingBox",,a%+8:CF%=n%!24:zC%=n%+28
GE%=CF%:IE%=zC%!0:PE%=zC%!4:RE%=zC%!8:tA%=n%!8-a%!8:
&400C4,,n%:
&400D1,!n%,n%!8-tA%,n%!&C-tA%,n%!16+tA%,n%!20+tA%:g%=
shell_CreateIcon2(b%,EA%,IA%,RA%,ZA%,GE%,IE%,PE%,RE%,tA%):
shell_HeapBlockReturn(n%):
shell_HeapBlockReturn(a%):=g%
shell_CreateIcon2(h%,EA%,IA%,RA%,ZA%,j%,DF%,FF%,GF%,tA%):
w%,DA%,G$,c$,rA%,eA%:DA%=
shell_HeapBlockFetch(60):!DA%=h%:DA%!20=j%:DA%!24=DF%:DA%!28=FF%:DA%!32=GF%:G$="":c$="":
256G$=$(DA%!24)
G$=$(DA%+24)
shell_IconGetCommand(DA%!28,"S")
c$=$(DA%+24)
shell_GetMinXY(j%,G$,c$):
RA%-EA%<rA%
RA%=EA%+rA%
ZA%-IA%<eA%
ZA%=IA%+eA%
DA%!4=EA%:DA%!8=IA%:DA%!&C=RA%:DA%!16=ZA%:
&400C2,,DA%
&400D1,!DA%,DA%!4-tA%,DA%!8-tA%,DA%!&C+tA%,DA%!16+tA%:
&400D3,,DA%:
!DA%=h%:
DA%!4=w%:
&400D2,h%,w%,0,0,-1,0
shell_HeapBlockReturn(DA%):=w%
shell_GetMinXY(j%,G$,c$):
EA%,IA%,RA%,ZA%,mA%,xA%:rA%=0:eA%=0:
G$<>""
&40084,j%>>24
,,IA%,,ZA%:
&40097,,
(j%>>24)+G$
,EA%,,RA%:
&40088,,EA%
,EA%:
&40088,,RA%
,RA%:rA%=RA%-EA%:eA%=ZA%-IA%
rA%=6*jF%+16*
G$:eA%=32
4eA%+=2*kF%
c$<>""
&2002E,296,
shell_UserSpritesBase,c$
,,,mA%,xA%,,VE%;P%:
&20035,VE%,4
,,KF%:mA%=mA%<<KF%:
&20035,VE%,5
,,PF%:xA%=xA%<<PF%:
&800mA%=mA%/2:xA%=xA%/2
539)=19mA%=rA%+mA%
mA%>rA%rA%=mA%
xA%>eA%eA%=xA%
shell_IconGetCommand(YC%,eA$):
I%,Q$:
YC%<=0
Q$=""
shell_StringUpperCase($YC%),";"+
shell_StringUpperCase(eA$)):
Q$=""
$(YC%+I%),
$(YC%+I%)+";",";")-1)
shell_IconRedraw(b%,g%):
a%:a%=
shell_HeapBlockFetch(40):!a%=b%:a%!4=g%:
&400CE,,a%:
"Interface_BoundingBox",,a%+8:
&400D1,b%,a%!8,a%!&C,a%!16,a%!20:
shell_Action(
shell_Poll_I(0,_U%!&94)):
shell_HeapBlockReturn(a%):
shell_IconGetValidation(b%,g%):
a%,J$,j%:
g%=-1
VJ$="":a%=
shell_HeapBlockFetch(&64):a%!0=b%:a%!4=g%:
&400CE,,a%:j%=a%!24:
a%!32>0
J$=$(a%!32)
shell_HeapBlockReturn(a%):=J$
shell_IconPutValidation(b%,g%,s$):
a%,j%:a%=
shell_HeapBlockFetch(&64):a%!0=b%:a%!4=g%:
&400CE,,a%:j%=a%!24:
$(a%!32)=s$
shell_HeapBlockReturn(a%):
shell_IsIconSelected(GB%,HB%):
shell_IconGetState(GB%,HB%):j%=_Q%!24:c%=(j%
&200000):
shell_IconSelect(GB%,HB%):
shell_IconSetState(GB%,HB%,&200000,&200000):
shell_IconDeselect(GB%,HB%):
shell_IconSetState(GB%,HB%,0,&200000):
shell_IconGetState(GB%,HB%):!_Q%=GB%:_Q%!4=HB%:
&400CE,,_Q%:
shell_IconSetSelected(b%,g%,WA%):
WA%=0
shell_IconDeselect(b%,g%)
shell_IconSelect(b%,g%)
shell_IconSet(b%,g%,WA%):
WA%=0
shell_IconDeselect(b%,g%)
shell_IconSelect(b%,g%)
shell_IconSetState(GB%,HB%,WF%,gE%):
l%:l%=
shell_HeapBlockFetch(16):!l%=GB%:l%!4=HB%:l%!8=WF%:l%!&C=gE%:
&400CD,,l%:
shell_HeapBlockReturn(l%):
shell_IconUnselectable(h%,_B%):
shell_IconSetState(h%,_B%,&400000,&40000):
shell_IconSetBGColour(b%,g%,XB%):
XB%<0
XB%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetBGColour")
shell_IconSetState(b%,g%,XB%<<28,&F0000000):
shell_IconSetFGColour(b%,g%,XB%):
XB%<0
XB%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetFGColour")
shell_IconSetState(b%,g%,XB%<<24,&F000000):
shell_CaretSetPosition(JA%,oA%,iE%,RF%,QA%,pA%):
&400D2,JA%,oA%,iE%,RF%,QA%,pA%:
shell_IconSetButtonType(b%,g%,AC%):
AC%=&C
AC%=&D
shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
AC%<0
AC%>&F
shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
shell_IconSetState(b%,g%,AC%<<&C,&F000):
shell_IconSetESG(b%,g%,jB%):
jB%<0
jB%>31
shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
shell_IconSetState(b%,g%,jB%<<16,&1F0000):
shell_IconSetText(b%,g%,_%):
_%<>0
_%=1<<0
shell_IconSetState(b%,g%,_%,1<<0):
shell_IconSetSprite(b%,g%,_%):
_%<>0
_%=1<<1
shell_IconSetState(b%,g%,_%,1<<1):
shell_IconSetBorder(b%,g%,_%):
_%<>0
_%=1<<2
shell_IconSetState(b%,g%,_%,1<<2):
shell_IconSetHCentred(b%,g%,_%):
shell_IconSetState(b%,g%,0,1<<9):
_%<>0
_%=1<<3
shell_IconSetState(b%,g%,_%,1<<3):
shell_IconSetVCentred(b%,g%,_%):
_%<>0
_%=1<<4
shell_IconSetState(b%,g%,_%,1<<4):
shell_IconSetFilled(b%,g%,_%):
_%<>0
_%=1<<5
shell_IconSetState(b%,g%,_%,1<<5):
shell_IconSetRightJust(b%,g%,_%):
shell_IconSetHCentred(b%,g%,0):
_%<>0
_%=1<<9
shell_IconSetState(b%,g%,_%,1<<9):
shell_IconSetLeftJust(b%,g%):
shell_IconSetHCentred(b%,g%,0):
shell_IconSetRightJust(b%,g%,0):
shell_IconSetUnselectable(b%,g%,WA%):
WA%<>0
WA%=1<<22
shell_IconSetState(b%,g%,WA%,1<<22):
WA%<>0
BLA%=
shell_HeapBlockFetch(24):
&400D3,,LA%:
!LA%=b%
LA%!4=g%
&400D2,-1
shell_HeapBlockReturn(LA%)
shell_CaretSetRight(b%,g%):
&400D2,b%,g%,-1,-1,-1,
shell_IconGetData(b%,g%)):
print_text(F,G,G$):
in(F,G-32,F+16*
(G$),G)
in(A%,B%,C%,D%):
newvals:Y=_Q%!28:Q=_Q%!32:Z=_Q%!36:P=_Q%!40:T=_Q%!4:V=_Q%!8:U=_Q%!&C:O=_Q%!16:K=_Q%!20:L=_Q%!24:R=U-T:S=O-V:d=K:e=K+R:f=L:b=L-S:
max(BA%,fA%):
BA%<fA%
shell_Leaf(F$):
F$,"."):F$=
F$,".")+1):
shell_Branch(e$):
CA%,u$,c%:
e$,".")=0
% u$=""
c%=0:
:CA%=c%+1:c%=
e$,".",CA%):
c%=0:u$=
e$,CA%-2)
gname(C):v$="":
?C<>0
?C<>&D:v$=v$+
?C:C+=1:
shell_WindowResize(JA%,jE%,oE%,xE%,zE%,aC%):!_Q%=jE%:_Q%!4=oE%:_Q%!8=xE%:_Q%!&C=zE%:
&400D7,JA%,_Q%:
?)_Q%!0=JA%:
&400CC,,_Q%:
&400C5,,_Q%
shell_WindowRetitle(
JA%,R$):
c%,p%,h%,oD%:p%=
shell_HeapBlockFetch(6000):p%!0=JA%:
&400CC,,p%:
((p%!60)
256)=0
OAc%=p%+76:$c%=
R$,&B):
&400C3,,p%:
&400C1,,p%+4
h%<>JA%
shell_UpdateWindowHandle(JA%,h%):JA%=h%
oD%=p%!84:$(!(p%+76))=
R$,oD%-1):
((p%!32)
(1<<16))<>0
&400D1,-1,p%!4,p%!16,p%!&C,p%!16+44
shell_HeapBlockReturn(p%)
shell_WindowTitleIndirected(vB%):
(1<<8))=(1<<8)
shell_ScreenToWindowCoords(TF%,
DD%,pD%,ZF%,qD%,rD%,YB%:YB%=
shell_HeapBlockFetch(600):DD%=YB%:!DD%=TF%:
&400CC,,DD%:pD%=YB%!4:kE%=YB%!16:qD%=YB%!20:rD%=YB%!24:X%=X%+(qD%-pD%):Y%=Y%+(rD%-kE%):
shell_HeapBlockReturn(YB%):
shell_WimpSlotReadEnd:
&400EC,-1,-1
kB%:=kB%
shell_WimpSlotClaimMemory(kB%,aA%):
&400EC,kB%+aA%,-1
FD%<kB%+aA%
shell_WimpSlotReleaseMemory:
&400EC,kB%,-1:
shell_MouseLimit(A,JA%):A!0=JA%:
&400CB,,A:
mouse_rectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
shell_NameOfFirstSprite(hA$):
X%,N%,w$:X%=
(hA$):
#X%=4:N%=
#X%:N%+=
#X%*256:N%+=
#X%*65536:N%+=
#X%*&1000000:
#X%=N%:w$="":
&B:w$+=
#X%):
#X%:=w$
InitialiseSpriteArea(S%,pE%):!S%=pE%:S%!8=16:
46,9+256,S%:
shell_ListEvents(b%,w%):
k%,a$:
b%=-1
b%=-2
shell_Tracef0("MenuSelection="+
shell_GetEventHandler(b%,w%,0)):
shell_Tracef0("MenuMaker ="+
shell_GetEventHandler(b%,w%,1)):
shell_Tracef0("ClickSelect ="+
shell_GetEventHandler(b%,w%,2))
shell_Tracef0("ClickAdjust ="+
shell_GetEventHandler(b%,w%,3)):
shell_Tracef0("Redraw ="+
shell_GetEventHandler(b%,w%,4)):
shell_Tracef0("Keypress ="+
shell_GetEventHandler(b%,w%,5))
shell_Tracef0("Drag ="+
shell_GetEventHandler(b%,w%,6)):
shell_Tracef0("Menu Warning ="+
shell_GetEventHandler(b%,w%,7)):
shell_Tracef0("HelpTag ="+
shell_GetEventHandler(b%,w%,8)):k%=
shell_GetEventMenu(2,b%,w%):
a$="None"
shell_Tracef0("Menu handle =&"+a$):
shell_HeapManagerInit(F$,qE%):
lB%900:
("LOAD "+F$+"heapcode "+
~lB%):
lB%+0,qE%:
shell_HeapBlockExists(nA%):
nA%<&8000
99,"No heapblock defined at this address"
shell_HeapBlockInfo(nA%):
shell_HeapBlockExtend(BA%,fA%):
lB%+&C,BA%,fA%:=BA%
shell_HeapBlockFetch(BA%):
lB%+4,nA%,BA%:=nA%
shell_HeapBlockReturn(
BA%):
shell_HeapBlockExists(BA%)
lB%+8,BA%
BA%=0:
shell_HeapBlockInfo(BA%):
29,6,!(lB%+28),BA%
,,,M:=M
shell_OSVarExists(JB%,x$):
&20023,x$,JB%,-1,0,0
shell_OSVarGetVal(JB%,aA%,x$,W):
y$,B,sE%:
&20023,x$,JB%,aA%,0,-3*(W=
,,B,sE%,u%:
B-1:y$=y$+
(JB%?r%):
r%:=y$
shell_OSReadCommandArg(X):
GD%,T$,d%:T$="":d%=0:
GD%?d%<>0:T$+=
(GD%?d%):d%+=1:
1:T$=
34)+1):T$=
34)+2)
shell_StringStripTrailing(B$,U$):
B$,1)=U$:B$=
(B$)-1):
shell_StringStripLeading(B$,U$):
B$,1)=U$:B$=
B$,2):
shell_StringStripAll(B$,U$):
D,E:D=
B$,U$):
B$,E-1)+
B$,E+1)
D:=B$
shell_StringPadTrailing(B$,U$,uA%):
(B$)<uA%:B$=B$+
(B$),U$):
shell_StringPadLeading(B$,U$,uA%):
(B$)<uA%:B$=
(B$),U$)+B$:
shell_StringUpperCase(B$):
(B$)>0
(B$):
B$,r%,1)>="a"
B$,r%,1)<="z"
B$,r%,1)=
B$,r%,1))
shell_StringExchange(B$,AA$,XA$):
B$,AA$)
y0pA%=
B$,AA$):B$=
B$,pA%-1)+XA$+
B$,pA%+
shell_StringArrayGetLongest(A$(),dC%):
r%,eC%:eC%=0:
(A$(r%))>eC%
(A$(r%))
r%:=eC%
mem_to_string(vD%,d%,AF%):
vD%?d%<>AF%:B$+=
(vD%?d%):d%+=1:
shell_FileLength(Z$):
u%,mC%,bC%,uA%,mB%,B$:
8,5,Z$
u%,,mC%,bC%,uA%,mB%:=uA%
shell_TraceOn:_U%!48=
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
shell_TraceOff:_U%!48=
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
shell_TraceInit(h$):
HA%,a%,E$,D$:
h$<>""
(h$):_U%!44=HA%
shell_HeapBlockFetch(256):D$=
shell_OSVarGetVal(a%,256,"Obey$Dir",1):E$=
shell_Leaf(D$),2):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+E$):
shell_HeapBlockReturn(a%):
_U%!&64
_U%!&64=(_U%!&64
1<<4)
shell_TraceIsOn:=_U%!48
shell_Tracef0(NA$):
shell_TraceIsOn)
_U%!44<>-1
HA%=_U%!44:
#HA%,NA$
_U%!&94>0
shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+NA$)
shell_Tracef2(nA%):
("MEDIT "+
~nA%):
shell_TraceExit:
_U%!44<>-1
#(_U%!44):_U%!44=-1
shell_AttachHotKey(LA$,cB%,gB%,xB%,L$,b%,S$,X$):
v%,d%,c%,z%,KA%,ID%:ID%=
_U%!60=0
3_U%!60=
shell_HeapBlockFetch(24):d%=0:_U%!&B4=1
d%=_U%!&B4*24:_U%!60=
shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
:v%=_U%!60:
"F1":KA%=385
"F2":KA%=386
"F3":KA%=387
"F4":KA%=388
"F5":KA%=389
"F6":KA%=390
"F7":KA%=391
"F8":KA%=392
"F9":KA%=393
"F10":KA%=458
"F11":KA%=459
KA%=(
LA$)-64:ID%=
KA%+=16
KA%+=32
:c%=v%+d%:c%!0=KA%:c%?4=cB%:c%?5=gB%:c%?6=xB%:c%!8=
shell_HeapBlockFetch(
L$+1):z%=c%!8:$z%=L$:
shell_SearchStatic(_U%!&B8,b%):
d%=-1
shell_MessageNoArgs("SHELLMSG09")
:c%!&C=b%:c%!16=
shell_HeapBlockFetch(
S$+1):z%=c%!16:$z%=S$:c%!20=
shell_HeapBlockFetch(
X$+1):z%=c%!20:$z%=X$:
shell_HotKeyProcess(KA%):
v%,q%,m%,f%,y%,i$,S$,X$:
gB%,cB%,xB%,qA%,sA%,vB%,fF%,d%:
GA%,p%:v%=_U%!60:q%=_U%!&B4*24:m%=
:f%=0:
v%!f%=KA%
f%+=24
f%>=q%:
.dc%=v%+f%:i$=$(c%!8):
shell_Tracef0("HotKeyProcess:Template name is '"+i$+"'"):
(i$<>""
c%!&C=0)
shell_CreateWindow(i$,y%):
shell_Tracef0("HotKeyProcess:Creating new dynamic window (handle is &"+
~y%+")"):p%=
shell_HeapBlockFetch(36):p%!0=y%:
&400CB,,p%:qA%=(p%!4-p%!&C)/2:sA%=(p%!16-p%!8)/2:
shell_HeapBlockReturn(p%)
:S$=$(c%!16):
S$<>""
shell_Tracef0("HotKeyProcess:Calling Pre-Open FN '"+S$+"'"):
c%!&C>0
G o%=
("FN"+S$+"("+
c%!&C+")")
("FN"+S$+"("+
y%+")")
shell_Tracef0("HotKeyProcess:No Pre-Open FN registered")
shell_SearchStatic(_U%!&B8,c%!&C):
d%>-1
shell_OpenWindowStatic(c%!&C)
c%!&C>0
shell_MessageNoArgs("SHELLMSG09")
shell_OpenWindowDynamic(y%,qA%,sA%)
:X$=$(c%!20):
X$<>""
shell_Tracef0("HotKeyProcess:Calling Post-Open FN '"+X$+"'"):
c%!&C>0
c o%=
("FN"+S$+"("+
c%!&C+")")
("FN"+X$+"("+
y%+")")
shell_Tracef0("HotKeyProcess:No Post-Open FN registered")
:GA%=
i$="":S$="":X$="":GA%=
:=GA%
shell_WindowCentreOnPointer(y%):
s%,DC%,qA%,sA%:DC%=
shell_HeapBlockFetch(20):
&400CF,,DC%:p%=
shell_HeapBlockFetch(36):p%!0=y%:
&400CB,,p%:qA%=(p%!4-p%!&C)/2:sA%=(p%!16-p%!8)/2:
shell_WindowMoveTo(y%,DC%!0+qA%,DC%!4-sA%)
shell_HeapBlockReturn(p%):
shell_HeapBlockReturn(DC%):
shell_WindowCentreOnScreen(y%):
s%,fC%,gC%,lA%,QA%,yB%,WB%:
&20035,-1,4
,,yB%:
&20035,-1,5
,,WB%:
&20035,-1,&B
,,fC%:
&20035,-1,&C
,,gC%:fC%=fC%<<yB%:gC%=gC%<<WB%:p%=
shell_HeapBlockFetch(36):p%!0=y%:
&400CB,,p%:lA%=(p%!&C-p%!4)
eQA%=(p%!16-p%!8):
shell_WindowMoveTo(y%,(fC%/2)-(lA%/2),(gC%-QA%)/2):
shell_HeapBlockReturn(p%):
shell_OpenWindowStaticNewView(b%):
shell_OpenWindow(b%,
,-1):
shell_OpenWindowStatic(h%):
shell_SearchStatic(_U%!&B8,h%)>-1
shell_OpenWindow(h%,0,-1)
shell_SearchStatic(bA%,h%):
m%,e%:m%=-1:e%=0:
bA%<>0
bA%!e%<>-1:
bA%!e%=h%
m%=e%:=m%
:e%+=4:
shell_CreateWindowStatic(BA$,
aB%,bA%,c%,d%:aB%=
shell_GetWB(BA$):aB%!64=_U%!16:
&400C1,,aB%
h%:bA%=_U%!&B8:
bA%=0
shell_Tracef0("CreateWindowStatic:Empty List"):_U%!&B8=
shell_HeapBlockFetch(8):bA%=_U%!&B8:bA%!0=h%:bA%!4=-1
shell_Tracef0("CreateWindowStatic:Searching for window handle"):d%=
shell_SearchStatic(_U%!&B8,h%):
d%=-1
shell_Tracef0("CreateWindowStatic:Not found - adding window handle to list"):d%=
shell_SearchStatic(_U%!&B8,0):
d%=-1
shell_Tracef0("CreateWindowStatic:Extending window handle list"):e%=0:
bA%!e%<>-1:e%+=4:
:_U%!&B8=
shell_HeapBlockExtend(_U%!&B8,4):bA%=_U%!&B8
shell_Tracef0("CreateWindowStatic:Found unused space in list"):e%=d%
:c%=bA%+e%:c%!0=h%:c%!4=-1
shell_InitHelpSystem(F$,QF%):
DA$,CA%,iA%,Y$,LD%,LB%:_U%!&D4=0:
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
@_U%!&D8=0:
shell_ScanForHelp:
DA$=" -DieWithTask"
DA$=""
_U%!&64
F$="":iA%=
shell_HeapBlockFetch(256):Y$=
shell_OSVarGetVal(iA%,256,
shell_GetAppName+"Res$Path",-1):
shell_HeapBlockReturn(iA%):
:CA%=
Y$,","):
CA%>0
shell_FileExists(
Y$,CA%-1)+
shell_GetAppName)
Y$,CA%-1)+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
Y$,CA%+1)
shell_FileExists(Y$+
shell_GetAppName)
?F$=Y$+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
shell_OK(
shell_MessageOneArg("SHELLMSG26",
shell_GetAppName))
F$<>""
shell_FileExists(F$)
shell_StrongHlpChkFiles(F$)
shell_MessageOneArg("SHELLMSG33",F$)
LB%=0
shell_StrongHlpMsg("Help_Install "+F$+DA$):_U%!&64=_U%!&64
shell_HelpWord(FA$):
hF%,c%,AA%:AA%=
shell_HeapBlockFetch(512):
_U%!&D0=-1
shell_OSVarExists(AA%,"StrongHelp$Dir")
&600DE,"<StrongHelp$Dir>":
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
/<_U%!&D8=
shell_HeapBlockFetch(
FA$+1):c%=_U%!&D8:$c%=FA$
shell_HeapBlockReturn(AA%):
shell_OK(
shell_MessageNoArgs("SHELLMSG11"))
shell_StrongHlpMsg("Help_Word "+FA$)
shell_HeapBlockReturn(AA%):
shell_StrongHlpMsg(n$):
shell_BroadcastMessage(&43B00,n$):
shell_ScanForHelp:
IB%,hC%:IB%=
shell_HeapBlockFetch(256):
:IB%!&C=0:
&400E7,19,IB%,-2,_U%!&D4
,,hC%:_U%!&D4=_U%!&D4+1:
hC%<>-1
(_U%!&D4)>64:
hC%<>-1
[@IB%!0=24:IB%!&C=0:IB%!16=&400C6:IB%!20=hC%:
&400E7,17,IB%,0
shell_HeapBlockReturn(IB%):
shell_BroadcastMessage(VF%,n$):
x%,ND%:ND%=(
n$+30)
3:x%=
shell_HeapBlockFetch(ND%):x%!&C=0:x%!16=VF%:$(x%+20)=n$+
(0):x%!0=ND%:
&600E7,17,x%,0:
shell_HeapBlockReturn(x%):
shell_WindowToggleBackIcon(
shell_WindowToggleFlags(b%,1<<24):
shell_WindowToggleCloseIcon(
shell_WindowToggleFlags(b%,1<<25):
shell_WindowToggleTitleBar(
shell_WindowToggleFlags(b%,1<<26):
shell_WindowToggleToggleIcon(
shell_WindowToggleFlags(b%,1<<27):
shell_WindowToggleHScrollBar(
shell_WindowToggleFlags(b%,1<<30):
shell_WindowToggleAdjustSizeIcon(
shell_WindowToggleFlags(b%,1<<29):
shell_WindowToggleVScrollBar(
shell_WindowToggleFlags(b%,1<<28):
shell_WindowToggleFlags(
b%,pB%):
a%,j%,aC%,h%:
shell_Tracef0("WindowToggleFlags:wh%=&"+
~b%):aC%=
shell_WindowIsOpen(b%):a%=
shell_HeapBlockFetch(6000):a%!0=b%:
&400CC,,a%:j%=a%!32:j%=(j%
pB%):a%!32=j%:
&400C3,,a%:
&400C1,,a%+4
h%:!a%=h%:
&400C5,,a%
shell_HeapBlockReturn(a%):
h%<>b%
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_ListClickSelect:
v%,f%,q%,c%,z%:v%=_U%!&C:q%=
shell_HeapBlockInfo(v%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickSelect events:"):f%=0:
:c%=v%!(f%+20):z%=v%+f%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0("&"+
shell_StringPadTrailing(
~z%!0," ",8)+" &"+
shell_StringPadTrailing(
~z%!4," ",8)+" "+$c%)
:f%+=48:
(f%>=q%):
shell_Tracef0(" "):
shell_ListClickAdjust:
v%,f%,q%,c%,z%:v%=_U%!&C:q%=
shell_HeapBlockInfo(v%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickAdjust events:"):f%=0:
:c%=v%!(f%+24):z%=v%+f%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0("&"+
shell_StringPadTrailing(
~z%!0," ",8)+" &"+
shell_StringPadTrailing(
~z%!4," ",8)+" "+$c%)
:f%+=48:
(f%>=q%):
shell_Tracef0(" "):
shell_ListHelpTags:
v%,f%,q%,c%,z%:v%=_U%!&C:q%=
shell_HeapBlockInfo(v%):
shell_Tracef0(" "):
shell_Tracef0("List of attached help tags:"):f%=0:
:c%=v%!(f%+44):z%=v%+f%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0("&"+
shell_StringPadTrailing(
~z%!0," ",8)+" &"+
shell_StringPadTrailing(
~z%!4," ",8)+" "+$c%)
:f%+=48:
(f%>=q%):
shell_Tracef0(" "):
shell_MemFill(EC%,AE%,BE%):
I%,iC%,OD%:iC%=AE%
4:OD%=AE%
iC%>0
(iC%*4)
4:EC%!(I%-1)=BE%:
OD%>0
.EC%=EC%+(iC%*4):
OD%-1:EC%?I%=BE%:
shell_AttachFontMenu(b%,g%,I$,PA$):
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
,k%:_U%!&FC=k%:
shell_EventAdd(b%,g%,0,-2,I$):
shell_Tracef0("AttachFontMenu:Attaching font menu"):
PA$<>""
shell_AttachMenuMaker(b%,g%,PA$)
shell_AttachFontSubMenu(wA%,C$,I$):
cF%,k%,c%,e%:
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
&45BCE,wA%,k%:
&45BCC,,
:_U%!&FC=k%:
shell_EventListMenuWarn(wA%,k%,C$,I$):
shell_Tracef0("AttachFontSubMenu:Attaching font menu &"+
~k%):
shell_FontMenuInit:
("RMEnsure FontMenu 1.16 RMLoad <EvntShellSystem$Path>FontMenu"):
("RMEnsure FontMenu 1.16 Error Couldn't load FontMenu module"):
_U%!&F0=-1
"FontMenu_Create"
_U%!&F0
shell_FontMenuSelectFont("",
shell_FontMenuSelectFont(o$,PD%):
c%,_A%:
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4)
YH_U%!&F4=
shell_HeapBlockFetch(
o$+1):c%=_U%!&F4:$c%=o$:
PD%<>0
PD%=1
\B_U%!260=PD%:
"FontMenu_Select",o$,_U%!260
,_A%:
_A%<>_U%!&FC
shell_FontMenuUpdatePtr(_A%):_U%!&FC=_A%
shell_Tracef0("FontMenuSelectFont:Font is '"+o$+"'"):
shell_FontMenuGetLastSelectedFont:
shell_HeapBlockExists(_U%!&F4)
c%=_U%!&F4:=$c%
shell_FontMenuUpdatePtr(f%):
v%,e%:
shell_Tracef0("FontMenuUpdatePtr:Started.."):
shell_HeapBlockExists(_U%!&DC)
shell_Tracef0("FontMenuUpdatePtr:HeapBlock found.."):v%=_U%!&DC:e%=0:
shell_Tracef0("FontMenuUpdatePtr:Substituting ptr.."):v%!(e%+8)=f%:e%+=&C:
v%!e%=-1
shell_MenuUpdateHandle(CE%,DE%):
q%,f%,i%,k%:q%=
shell_HeapBlockInfo(_U%!&C)-8:f%=0:m%=
:i%=_U%!&C:
:k%=i%!(f%+8):
k%=CE%
i%!(f%+8)=DE%
+f%+=48:
(f%>=q%):
_U%!24=CE%
_U%!24=DE%
shell_FindFont(
b$,jC%,kC%,
QD%):
shell_FontIsAvailable(b$,jC%,kC%)
b$="Trinity.Medium"
&40081,,b$,jC%*16,kC%*16,0,0
shell_FontIsAvailable(b$,jC%,kC%):
&40081,0,b$,jC%*16,kC%*16,0,0
&40082,QD%:=
shell_CheckSelection(nE%):
c%,e%:c%=_U%!256:
_U%!24=_U%!&FC
nE%!e%<>c%!e%
e%+=4:
c%!e%=-1:=e%
shell_MenuGetItemAddress(k%,HE%):
e%,SB%:
&45BC7,k%
:SB%=k%+28+((HE%!e%)*24):k%=SB%!4:e%+=4:
HE%!e%=-1:=SB%
shell_GetLastMouseXPos:=_U%!272
shell_GetLastMouseYPos:=_U%!276
shell_UpdateWindowHandle(SA%,MA%):
shell_Tracef0("UpdateWindowHandle:Updating stored window handles"):
shell_Tracef0("UpdateWindowHandle:old handle=&"+
~SA%):
shell_Tracef0("UpdateWindowHandle:new handle=&"+
~MA%):
MA%<>SA%
_U%!28=SA%
_U%!28=MA%
shell_FixEventBlock(SA%,MA%,_U%!&C,48):
shell_FixEventBlock(SA%,MA%,_U%!96,16):
shell_FixEventBlock(SA%,MA%,_U%!72,24):
shell_FixEventBlock(SA%,MA%,_U%!92,24):
shell_FixEventBlock(SA%,MA%,_U%!&68,16):
shell_UpdateStaticWindows(SA%,MA%)
shell_UpdateStaticWindows(SA%,MA%):
d%,bA%:
shell_Tracef0("UpdateStaticWindows:Correcting static window list.."):bA%=_U%!&B8:d%=
shell_SearchStatic(_U%!&B8,SA%):bA%!d%=MA%:
shell_FixEventBlock(SA%,MA%,i%,d%):
f%,q%:
shell_HeapBlockExists(i%)
shell_HeapBlockInfo(i%)-8:
(i%!f%=SA%)
i%!f%=MA%
:f%+=d%:
(f%>=q%)
shell_IconSelectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=1<<21:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,0<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_IconDeselectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=0:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,1<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_Message_SaveDesktop(Q%):
HA$:HA$="Run "+
shell_GetAppDir+
&C,2,Q%!20,HA$,
shell_MessagesInit(M$,
JE%):
aA%,j%:
3,"Cannot open message file '"+M$+"'"
&41500,,M$
j%,,aA%:
JE%=0
shell_HeapBlockFetch(aA%)
30,6,,,17+
,,lC%:$(lC%+16)=M$:
&41501,lC%,lC%+16:
shell_Tracef0("MessagesInit:Message resource file '"+M$+"' loaded"):
shell_PrinterOnLine:
KE%,LE%:KE%=
(-4):
2,1,0,1,0,1,0:
>30:LE%=
(-4)<KE%):*FX21,3
3:=LE%
shell_AttachBumpHandler(b%,g%,ME%,NE%,vE%,wE%,OE%,yE%,IA$,JA$):
XA%,d%,c%,z%,hA%:d%=
shell_GetEventListOffset(b%,ME%,_U%+&68,16,
):XA%=_U%!&68+d%:XA%!0=b%:XA%!4=ME%:XA%!8=OE%:XA%!&C=
shell_HeapBlockFetch(24):hA%=XA%!&C:hA%!0=g%:hA%!4=vE%:hA%!8=wE%
IA$>0
j<hA%!&C=
shell_HeapBlockFetch((
IA$)+1):z%=hA%!&C:$z%=IA$
hA%!&C=0
JA$>0
p<hA%!16=
shell_HeapBlockFetch((
JA$)+1):z%=hA%!16:$z%=JA$
hA%!16=0
yE%=-1
hA%!20=1
hA%!20=0
wsd%=
shell_GetEventListOffset(b%,NE%,_U%+&68,16,
):XA%=_U%!&68+d%:XA%!0=b%:XA%!4=NE%:XA%!8=OE%*(-1):XA%!&C=hA%:
shell_HandleBumpIcons(d%,b%,g%,_button%):
aF%,FA%,XA%,FC%,_temp$,TD%:
eF%,bB%:
_button%<>2
RXA%=_U%!&68+d%:_U%!288=b%:_U%!292=g%:_U%!296=d%:FA%=XA%!&C:TD%=FA%!16:
TD%<>0
C_temp$=
shell_IconGetData(b%,FA%!0):FC%=
("FN"+$TD%+"(_temp$)")
shell_IconGetData(b%,FA%!0))
_button%=1
_new_val%=FC%+((XA%!8)*(-1))
_new_val%=FC%+XA%!8
FA%!20=0
_new_val%>FA%!8
_new_val%=FA%!8
_new_val%<FA%!4
_new_val%=FA%!4
_new_val%>FA%!8
_new_val%=FA%!4
_new_val%<FA%!4
_new_val%=FA%!8
:bB%=FA%!&C:
bB%<>0
1_new_val$=
("FN"+$bB%+"(_new_val%,_button%)")
_new_val$=
_new_val%
_new_val%<>FC%
shell_IconPutData(b%,FA%!0,_new_val$,-1)
shell_WindowSetSpriteArea(y%,UD%):
a%,MA%,_B%,VD%:a%=
shell_HeapBlockFetch(6000):!a%=y%:
&400CC,,a%:a%!68=UD%:
shell_IconSetSpriteArea(a%!60,a%+76,UD%):
(a%!88)>0
_B%=0
(a%!88)-1:VD%=a%+92+_B%*32:
shell_IconSetSpriteArea(VD%!16,VD%+20,UD%):
&400C3,,a%:
&400C1,,a%+4
MA%<>y%
shell_UpdateWindowHandle(y%,MA%):y%=MA%
shell_HeapBlockReturn(a%):=y%
shell_IconSetSpriteArea(j%,GC%,EF%):
3)=2)
256)<>0)
GC%!4=EF%
shell_StrongHlpIsAvailable:
vA%,AA%:vA%=
_U%!&64
kAA%=
shell_HeapBlockFetch(256):vA%=
shell_OSVarExists(AA%,"StrongHelp$Dir"):
shell_HeapBlockReturn(AA%)
:=vA%
shell_MenuNew(R$):
&45BC1,,R$
h%:=h%
shell_MenuAdd(h%,RA$,I$):
I$<>""
&45BC2,h%,RA$,I$
&45BC2,h%,RA$
:=XD%
shell_MenuTick(gA%,WA%):
&45BC9,gA%,WA%:
shell_MenuTickOnly1(TA%,CA%):
&45BD1,TA%,CA%:
shell_MenuTickOnly2(gA%):
&45BD1,gA%:
shell_MenuShade(h%,WA%):
&45BCB,h%,WA%:
shell_MenuDotted(gA%,WA%):
&45BCA,gA%,WA%:
shell_MenuColours(gA%,vC%,wC%):
&45BD0,gA%,vC%,wC%:
shell_MenuWritable(gA%,WA%,aA%,s$):
&45BCD,gA%,WA%,aA%,s$:
shell_MenuPutData(gA%,O$):
&45BC8,gA%,O$:
shell_MenuCallHandler(y%,_h_blk%):
("FN"+$y%+"(_h_blk%)")
shell_AttachOpenWindow(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachOpenWindow:Attaching OpenWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
shell_GetEventListOffset(b%,-1,_U%+304,&C,
):a%=_U%!304+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_AttachCloseWindowHandler(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachCloseWindowHandler:Attaching CloseWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachCloseWindow")
shell_GetEventListOffset(b%,-1,_U%+308,&C,
):a%=_U%!308+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_SpriteRename(hB%,YA$,aA$):
46,512+26,hB%,
shell_SpriteGetPtr(hB%,YA$),aA$:
shell_SpriteAreaSave(hB%,M$):
46,512+&C,hB%,M$:
shell_EnsurePoll:
shell_Poll_I(0,_U%!&94):
shell_Action(_%):
_%=0:
shell_WimpGetVersion:=_U%!316
shell_OSCheckVersion(HF%):=
shell_OSModuleCheckVersion("UtilityModule",HF%)
shell_OSModuleCheckVersion(bA$,a):
a%,WC%,Q$:a%=
shell_HeapBlockFetch(256):
("Set AppName$RISCOS Y"):
("RMEnsure "+bA$+" "+
a+" Set AppName$RISCOS N"):
&20023,"AppName$RISCOS",a%,256,0,0
,,WC%:a%?WC%=&D:
("Unset AppName$RISCOS"):Q$=$a%
shell_HeapBlockReturn(a%):
Q$="N"
shell_MessageSendDataLoad(u%,P$):
x%:x%=
shell_HeapBlockFetch(256):x%!0=256:x%!4=0:x%!16=5:x%!20=0:x%!28=0:x%!32=0:x%!36=0:x%!40=u%:$(x%+44)=P$+
&400E7,17,x%,0:
shell_HeapBlockReturn(x%):
shell_MenuMakeFromFile(R$,cA$,h$):
h%,X%,B$,o%:
shell_FileExists(h$)
shell_MenuNew(R$):X%=
(h$):
#X%:o%=
shell_MenuAdd(h%,B$,cA$):
shell_BinarySearch(_search_term$,dA$,g$,IF%,ZD%):
_pos%,jA%,_wp$,nC%,iF%,aD%,bD%,UE%,m%,cD%:ZD%+=1:cD%=
:jA%=ZD%:nC%=0:_pos%=jA%
2:bD%=IF%-1:aD%=ZD%:
:_wp$=
("FN"+dA$+"(_pos%)"):dD%=_pos%:
_search_term$=_wp$
("FN"+g$+"(_search_term$,_wp$)")
+aD%=_pos%:jA%=_pos%-bD%:_pos%=jA%
2+nC%
bD%=_pos%:nC%=_pos%:jA%=aD%-_pos%:_pos%=jA%
2+nC%
UE%=dD%
!UE%=dD%:
shell_IconLastClicked:=_U%!32
shell_MenuGetNrItems(TA%):
k%,GA%,WE%:
&45BC7,TA%
k%:k%+=28:
:GA%=(k%?0
&80):WE%+=1:k%+=24:
GA%:=WE%
shell_MenuGetNrDotted(TA%):
k%,GA%,dC%:
&45BC7,TA%
k%:k%+=28:
:GA%=(k%?0
&80):
(k%?0
dC%+=1
k%+=24:
GA%=-1:=dC%
shell_MenuGetItemHandler(TA%,IC%):
UA%,f%,KA$:UA%=
shell_HeapBlockFetch(8):UA%!0=IC%:UA%!4=-1:
&45BC4,TA%,UA%
KA$=""
KA$=$(f%)
shell_HeapBlockReturn(UA%):=KA$
shell_MenuGetItemText(TA%,IC%):
UA%,f%,G$:UA%=
shell_HeapBlockFetch(8):UA%!0=IC%:UA%!4=-1:
&45BC4,TA%,UA%
,,f%:G$=$(f%!&C):
shell_HeapBlockReturn(UA%):=G$
shell_MenuGetItemHandle(TA%,IC%):
UA%,f%,h%:UA%=
shell_HeapBlockFetch(8):UA%!0=IC%:UA%!4=-1:
&45BC4,TA%,UA%
,,f%:h%=f%!8:
shell_HeapBlockReturn(UA%):=h%
shell_MenuGetItemHeight(TA%):
&45BC7,TA%
k%:=k%!20
shell_MenuCalculateHeight(TA%):
QA%:QA%=
shell_MenuGetNrItems(TA%)*
shell_MenuGetItemHeight(TA%):=QA%+(
shell_MenuGetNrDotted(TA%)*24)
shell_MenuSortItems(k%,fA$,OF%,EC%,eD%):
fD%:fD%=
shell_MenuGetNrItems(k%)-1:_shell_MS_handle%=k%:
eD%>fD%
eD%=fD%
&406C0:
shell_QuickSort(fA$,"_shell_MS_swap",OF%,0,eD%):
&406C1:
shell_QuickSort(g$,j$,_asc%,_start%,_end%):
_lo%,_h%,_F%,_temp%,o%:_lo%=_start%:_hi%=_end%:_F%=
:_temp%=_lo%-1+
(_hi%+1-_lo%):o%=
("FN"+j$+"(_lo%,_temp%)"):
_asc%=0
("FN"+g$+"(_lo%,_hi%)")
J(o%=
("FN"+j$+"(_lo%,_hi%)"):_F%=
("FN"+g$+"(_hi%,_lo%)")
O(o%=
("FN"+j$+"(_hi%,_lo%)"):_F%=
_hi%=_hi%-1
_lo%=_lo%+1
_lo%=_hi%:
_start%<_lo%-1
shell_QuickSort(g$,j$,_asc%,_start%,_lo%-1)
_hi%+1<_end%
shell_QuickSort(g$,j$,_asc%,_hi%+1,_end%)
_shell_MS_swap(oC%,pC%):
k$,l$,ZE%,aE%:k$=
shell_MenuGetItemText(_shell_MS_handle%,oC%):l$=
shell_MenuGetItemText(_shell_MS_handle%,pC%):ZE%=
shell_MenuGetItemHandle(_shell_MS_handle%,oC%):aE%=
shell_MenuGetItemHandle(_shell_MS_handle%,pC%)
shell_MenuPutData(ZE%,l$):
shell_MenuPutData(aE%,k$):=0
_shell_MS_comp(oC%,pC%):
k$,l$:k$=
shell_MenuGetItemText(_shell_MS_handle%,oC%):l$=
shell_MenuGetItemText(_shell_MS_handle%,pC%):
shell_WindowSetTitleRightJust(
s%,NA%,h%,LC%:LC%=
shell_WindowIsOpen(b%):s%=
shell_HeapBlockFetch(6000):!s%=b%:
&400CC,,s%:NA%=s%!60:
(1<<3))
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~NA%):
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit set.."):
shell_Tracef0("WindowSetTitleRightJust:Unsetting horizontally centred bit.."):NA%=NA%
(1<<3)
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~NA%)
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit NOT set..")
shell_Tracef0("WindowSetTitleRightJust:Setting right justified bit.."):NA%=NA%
(1<<9):s%!60=NA%:
&400C3,,s%:
&400C1,,s%+4
b%<>h%
shell_Tracef0("WindowSetTitleRightJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(s%):
shell_WindowSetTitleCentreJust(
s%,NA%,h%,LC%:LC%=
shell_WindowIsOpen(b%):s%=
shell_HeapBlockFetch(6000):!s%=b%:
&400CC,,s%:NA%=s%!60:
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~NA%)
shell_Tracef0("WindowSetTitleCentreJust:t_flags% AND (1 << 3) = "+
~(NA%
(1<<3))):
(1<<3))=0
shell_Tracef0("WindowSetTitleCentreJust:Horizontally centred bit not set.."):
shell_Tracef0("WindowSetTitleCentreJust:Setting horizontally centred bit.."):NA%=NA%
(1<<3):
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~NA%):s%!60=NA%
&400C3,,s%:
&400C1,,s%+4
b%<>h%
shell_Tracef0("WindowSetTitleCentreJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(s%):
shell_IconGetSelectedIcons(b%,jB%,
dE%:dE%=(jB%<<16)+(1<<21):
&400D6,b%,n%,dE%,(jB%<<16)+(1<<21):
shell_GetLastMouseButton:=_U%!320
shell_GetLastWindowClicked:=_U%!28
shell_GetLastIconClicked:=_U%!32
shell_IconIndirSize(dA%,j%,GC%):
aA%,eE%,rC%,e%,VB%:
&800100)=256
"aA%=GC%!8:
(GC%!4<>-1)
eE%=GC%!4:rC%=
shell_HeapBlockFetch(256):
#X%=dA%+eE%:
&C,4,X%,rC%,512:e%=0:
:VB%=rC%?e%:e%+=1:
VB%<32:aA%=aA%+e%:
shell_HeapBlockReturn(rC%)
aA%=0
:=aA%
shell_StrongHlpChkFiles(F$):
shell_FileExists(F$+".HelpData")
<LB%=-1:
shell_MessageOneArg("SHELLMSG32","HelpData")
shell_FileExists(F$+".Index")
9LB%=-1:
shell_MessageOneArg("SHELLMSG32","Index")