home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
APDL Public Domain 1
/
APDL_PD1A.iso
/
program
/
basic
/
eventshell
/
!EvntShell
/
ShellLibRT
(
.txt
)
< prev
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
|
1996-04-18
|
146.7 KB
|
4,643 lines
>EvntShell:ShellLibRT
Squished by Lofty's !Shrink vsn 3.01 on 18-Apr-96
shell_LibraryVersion:=2.15*&64
shell_DefineConstants:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:_EVENT_NULL=0:_EVENT_REDRAWWIN=1:_EVENT_OPENWIN=2:_EVENT_CLOSEWIN=3:_EVENT_PTRLEAVING=4:_EVENT_PTRENTERING=5:_EVNT_MSECLICK=6:_EVNT_DRAGEND=7:_POPUP_TYPE_TEXT=0
_POPUP_TYPE_WIMPCOLOUR=1:_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_CALCULATOR=3:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_LINEFONT=5:_POPUP_TYPE_FONTMENU=6:_POPUP_TYPE_TIMEPICK=7:_POPUP_TYPE_COLOUR24=8:_IBAR_RIGHT%=-1:_IBAR_LEFT%=-2:_BUTTON_TYPE_NEVER=0
<._BUTTON_TYPE_CLICK=3:_BUTTON_TYPE_MENU=9:
shell_GetLastSecureFileName:
h%:h%=_U%!80:
shell_GetEventMenu(AE%,d%,EC%):
f%,r%,y%,HA%,AA%:
d%=-1
d%=-2
SOHA%=
shell_HeapBlockInfo(_U%!&C)-8:f%=0:y%=
:r%=_U%!&C:e$="":
(r%!f%=d%)
r%!(f%+4)=EC%
a%AA%=r%!(f%+8):
AA%=-2
AA%=_U%!&FC
:f%+=48:
(f%>=HA%
y%):=AA%
shell_AttachMenuDBox(cC%,p$,qA$,sA$):
e%,h%,XB%:
shell_WindowLoaded(p$)
shell_MessageOneArg("SHELLMSG03",p$)
shell_HeapBlockFetch(&C):e%!0=
shell_HeapBlockFetch(
p$+1):h%=e%!0:$h%=p$:e%!4=
shell_HeapBlockFetch(
qA$+1):h%=e%!4:$h%=qA$:e%!8=
shell_HeapBlockFetch(
sA$+1):h%=e%!8:$h%=sA$:
&45BCE,cC%,e%:
&45BCC,,
shell_MessageNoArgs(L$):=
shell_MessageLookup(L$,"","")
shell_MessageOneArg(L$,z$):=
shell_MessageLookup(L$,z$,"")
shell_MessageTwoArgs(L$,z$,OA$):=
shell_MessageLookup(L$,z$,OA$)
shell_MessageLookup(L$,z$,OA$):
o%,L%,v$,VD%,jC%:
L$,8)="SHELLMSG"
VD%=_U%!284:jC%=_U%!280
VD%=_U%!64:jC%=_U%!68
&61502,jC%,L$,VD%,256,z$,OA$
,,,L%;o%:
VD%?L%=&D:v$=$(VD%)
shell_WimpInit(CC%,EA$):
zE%,wA%:
zE%4:!zE%=0:
shell_OSCheckVersion(3.1)
2CC%=310:
&400C0,CC%,&4B534154,EA$,zE%
CC%,wA%
CC%=&C8:
&400C0,CC%,&4B534154,EA$
CC%,wA%
_U%!&64
"WimpExt_Initialise",&E,wA%
:_U%!&94=wA%:=wA%
shell_WimpInit_I(CC%,EA$):
wA%:wA%=
shell_WimpInit(CC%,EA$):
&81682,wA%:=wA%
shell_WimpCloseDown_I(wA%):
shell_ExReg_FontLib_Loaded
shell_Fonts_LoseFonts
shell_ExReg_FontMenu_Loaded
shell_FontMenu_Deregister
_U%!&64
"WimpExt_Initialise",&E,wA%
&600DD,wA%,&4B534154:
&A1683,wA%:
_U%!&64
"XImpulse_CloseDown",_U%!&94
WimpCloseDown(wA%):
shell_ExReg_FontMenu_Loaded
shell_LoseFonts
shell_ExReg_FontMenu_Loaded
shell_FontMenu_Deregister
_U%!&64
"WimpExt_Initialise",&E,wA%
&600DD,wA%,&4B534154:
_U%!&64
"XImpulse_CloseDown",_U%!&94
("Unset "+_shell_AppName$+"$BasicFile"):
shell_FindFont(AB$,xI%):
hA%,wF%:wF%=_U%!&E8:
&40081,,AB$,xI%*16,f*16,0,0
hA%:wF%?hA%+=1:
wF%?hA%>=&FF
shell_OK(
shell_MessageNoArgs("SHELLMSG18"))
shell_Init:
KB%,s%,h%,o$:
D$,G$,WE%:
shell_InitModules:
shell_DefineConstants:_SHELL_SENDDATALOAD_MY_REF%=0:_SHELL_SENDDATALOAD_FILE$="":
_U%360,_shell_blk%260:_Q%=
shell_HeapBlockFetch(&BB8):KB%=
shell_HeapBlockFetch(48):KB%!0=0:KB%!4=0:KB%!8=0
KB%!&C=0:KB%!16=0:KB%!20=0:KB%!24=0:KB%!28=0:KB%!32=0:KB%!36=0:KB%!40=0:KB%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=KB%:_U%!16=1:_U%!20=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%!&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%!&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%!&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%!304=0:_U%!308=0:_U%!316=0:_U%!324=0:_U%!336=0:_U%!340=0:_U%!344=0:
shell_MemFill(_U%!&E8,256,0):
shell_MemFill(_U%!&EC,256,0):D$=
shell_OSVarGetVal("Obey$Dir",1):G$=
shell_Leaf(D$),2):_U%!&BC=
shell_HeapBlockFetch((
D$)+1)
_U%!&C4=
shell_HeapBlockFetch((
G$)+1):h%=_U%!&BC:$h%=D$:h%=_U%!&C4:$h%=G$:h%=
shell_OSModuleCheckVersion("WimpExtension",1.98):
_U%!&64=_U%!&64
RO3_Present:
_U%!&64=_U%!&64
1<<&A
shell_InteractiveHelpOn:WE%=&64:
shell_PollSetInterval(WE%):
shell_PollSetPrevInterval(WE%):
_POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=WE%:o$=
shell_OSReadCommandArg(1):
o$<>""
L_U%!&64=_U%!&64
1<<5:h%=
shell_HeapBlockFetch(
o$+1):$(h%)=o$:_U%!324=h%
shell_InitModules:
k%:k%=
_shell_Bumpers_Init:k%=
_shell_CaretMove_Init:k%=
_shell_DataLoad_Init:k%=
_shell_DataSave_Init:k%=
_shell_Debug_Init:k%=
_shell_Errors_Init:k%=
_shell_Evnts_Init:k%=
_shell_ExReg_Init:k%=
_shell_Files_Init
_shell_Iconbar_Init:k%=
_shell_Icons_Init:k%=
_shell_IntHelp_Init:k%=
_shell_Memory_Init:k%=
_shell_Menus_Init:k%=
_shell_MenuList_Init:k%=
_shell_Messages_Init:k%=
_shell_OS_Init:k%=
_shell_Pointer_Init:k%=
_shell_Poll_Init:k%=
_shell_PopUps_Init
_shell_ProgEvnts_Init:k%=
_shell_Sliders_Init:k%=
_shell_Sprites_Init:k%=
_shell_Strings_Init:k%=
_shell_StaticList_Init:k%=
_shell_WindowList_Init:k%=
_shell_Windows_Init:
shell_GetCmdLineArgs:
_U%!324<>0
o$=$(_U%!324)
shell_GetAppDir:
h%:h%=_U%!&BC:=$h%
shell_GetAppDataDir:
h%:h%=_U%!&C0:=$h%
shell_GetAppName:
h%:h%=_U%!&C4:=$h%
shell_ResourcesInit:
MA$,h%,G$,D$,fE%:
ZC%,rD%:G$=
shell_GetAppName:D$=
shell_GetAppDir:
shell_OSVarExists(G$+"Res$Path")
_U%!&64=_U%!&64
shell_OSVarExists(G$+"Data$Dir")
fMA$=
shell_OSVarGetVal(G$+"Data$Dir",1):_U%!&C0=
shell_HeapBlockFetch((
MA$)+1):h%=_U%!&C0:$h%=MA$
_U%!&C0=
shell_HeapBlockFetch((
D$)+1):h%=_U%!&C0:$h%=D$
_U%!&64
shell_FileExists(G$+"Res:Messages")
shell_MessagesInit(G$+"Res:Messages",_U%!68,_U%!64)
shell_FileExists(G$+"Res:ShellMsgs")
shell_MessagesInit(G$+"Res:ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,rD%:
&20035,-1,5
,,ZC%:
ZC%=1
shell_FileExists(G$+"Res:Sprites22")
64_U%!16=
shell_SpriteAreaLoad(G$+"Res:Sprites22")
shell_FileExists(G$+"Res:Sprites")
:2_U%!16=
shell_SpriteAreaLoad(G$+"Res:Sprites")
_U%!16=1
:fE%=
shell_3DEnabled:
shell_FileExists(G$+"Res:Templates3")
shell_TemplatesInit(G$+"Res:Templates3",k%)
shell_FileExists(G$+"Res:Templates")
shell_TemplatesInit(G$+"Res:Templates",k%)
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("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,rD%:
&20035,-1,5
,,ZC%:
ZC%=1
shell_FileExists(D$+".Sprites22")
X1_U%!16=
shell_SpriteAreaLoad(D$+".Sprites22")
shell_FileExists(D$+".Sprites")
[/_U%!16=
shell_SpriteAreaLoad(D$+".Sprites")
_U%!16=1
:fE%=
shell_3DEnabled:
shell_FileExists(D$+".Templates3")
shell_TemplatesInit(D$+".Templates3",k%)
shell_FileExists(D$+".Templates")
shell_TemplatesInit(D$+".Templates",k%)
&45BC0:
shell_HeapBlockReturn(_Q%):_Q%=
shell_HeapBlockFetch(&400):
shell_FileExists(D$+".EvntData")
shell_EvntLoad_AllEvnts(D$+".EvntData")
shell_ExReg_ShareBan_Loaded
shell_ShareBan_ShowBanner
shell_MessageExpand(s$):
Q$,v$,VB%:Q$="":
s$,"\")>0:VB%=
s$,"\"):Q$+=
s$,VB%-1):v$=
s$,VB%+1,1):s$=
s$,VB%+2):
"A":Q$+="Click ADJUST to"
"a":Q$+="ADJUST"
"D":Q$+="Drag with SELECT to"
"d":Q$+="Drag with ADJUST to"
"G":Q$+="This option is greyed out because"
"R":Q$+="Move the pointer right"
"S":Q$+="Click SELECT to"
"s":Q$+="SELECT"
"T":Q$+="This is the"
"W":Q$+="This window is"
"w":Q$+="window"
Q$+="\"+v$
:=Q$+s$
shell_MessageWindow(J$,cI%,FB$,CA$):
_E%,OD%:OD%=
shell_HeapBlockFetch(260):!OD%=0:$(OD%+4)=J$+
CA$=""
CA$="Message from "+FB$
&400DF,OD%,19,CA$
&400DF,OD%,17,CA$
shell_HeapBlockReturn(OD%):=_E%
shell_CreateWindow2(O,o%,JJ%,RI%,EI%,NB%,yF%,mB%,oB%,tE%):
Q%:Q%=
shell_HeapBlockFetch(&BB8):Q%!0=yF%:Q%!4=mB%:Q%!8=oB%:Q%!&C=tE%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=o%:Q%?32=7:Q%?33=2:Q%?34=JJ%:Q%?35=RI%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=NB%
Q%!48=EI%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=O:Q%!76=-1:Q%!80=
$O:Q%!84=0:
&400C1,,Q%
shell_HeapBlockReturn(Q%):=n%
shell_ClaimKeypress:
_U%!20<>0
&400D4,,-1:k%=
shell_DeleteWindow(_U%!20):_U%!20=0
oktodeletew(n%):=-1
oktoclosew(n%):=-1
cliprect(A,
DI%):
XA%,gA%:
lwaorigin(A,XA%,gA%):uA%=A!24-XA%:DB%=A!28-gA%:LI%=A!32-XA%:DI%=A!36-gA%:
shell_DoBackgroundTask:
shell_HandleAttachedMenu(_Q%,d%,t%):
t%<>-1
d%>-1
#1AA%=
shell_GetEventMenu(_Q%!8,d%,t%):
AA%<>0
shell_HandleMenuOpen(_Q%,AA%,d%,t%,
shell_Action(CJ%):
e$,AA%,x$,XB$,pH%,cB%,vB%,IF%:
d%,t%,k%,_temp28%,_temp32%,_temp24%,_temp%,nI%:
WJ%,a%,nG%:
_EVENT_NULL:
_closedown%=
(nG%-_POLL_EARLIEST_TIME%)>0:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%:
shell_ExReg_OLELib_Loaded
shell_DoOLEHandling
shell_DoBackgroundTask:
shell_SliderDragInProgress
shell_Slider
shell_EvntHandle_IconWatch
shell_Evnts_WritableDragInProgress
shell_Evnts_MonitorDragPtrPos
_EVENT_REDRAWWIN:
shell_RedrawWindow(_Q%!0)
_EVENT_OPENWIN:
shell_OpenWindow(_Q%!0,
_EVENT_CLOSEWIN:
shell_EvntHandle_WindowClose(_Q%!0)
_EVENT_PTRLEAVING:
shell_EvntHandle_PointerLeavingWindow(!_Q%)
_EVENT_PTRENTERING:
shell_EvntHandle_PointerEnteringWindow(!_Q%)
_EVNT_MSECLICK:cB%=_Q%!0:vB%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_EVNTS_LAST_MOUSEBUTTON%=_Q%!8:_EVNTS_LAST_WINDOWCLICKED%=_Q%!&C:_EVNTS_LAST_ICONCLICKED%=_Q%!16:
_Q%!8
shell_EvntHandle_ClickSelect(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
shell_EvntHandle_ClickMenu(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
shell_EvntHandle_ClickAdjust(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
7:_U%!&80=0:
shell_SliderDragInProgress=
shell_EvntHandle_UserDragEnd:
shell_EvntHandle_DataSaveEndDrag
shell_SliderDragEnd
_Q%!24
&D,394,398,399,410,430,431:IF%=
shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
shell_HotKeyProcess(_Q%!24)
&400DC,_Q%!24
shell_EvntHandle_MenuSelect(_Q%)
17,18:
shell_Receive(_Q%)
shell_UserMessageAcknowledge(_Q%)
shell_HandleMenuOpen(_Q%,AA%,d%,t%,mI%):
KA%,v%:
shell_OpenMenu(_Q%!0,_Q%!4,AA%)
shell_HeapBlockFetch(50):v%=
shell_HeapBlockFetch(36):KA%!0=d%:KA%!4=t%:
&400CE,,KA%:v%!0=d%:
&400CB,,v%:
shell_OpenMenu(v%!4+KA%!16+64,_Q%!4,AA%):
v%!4+KA%!16+64,_Q%!4:
shell_HeapBlockReturn(KA%):
shell_HeapBlockReturn(v%)
shell_ActionAdjustButton:
o%,e$,k%,ZD%,m%:ZD%=
shell_HeapBlockFetch(&C+(
shell_WindowCountIcons(
Evnts_GetLastWindowClicked)*32)):
Evnts_GetLastWindowClicked>0
&400D6,
Evnts_GetLastWindowClicked,ZD%,&F000,&B000:m%=0:
ZD%!m%<>-1:
ZD%!m%=
Evnts_GetLastIconClicked
shell_IconSet(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked,1)
m%+=4:
Evnts_GetLastIconClicked=0
shell_HandleAttachedDataSave(_Q%,
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
shell_EvntHandle_ClickAdjust(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked):
shell_HeapBlockReturn(ZD%):
shiftmenuclick(d%,t%):=
shell_RedrawWindow(n%):
yD%,e$,XA%,gA%,e%:
shell_HeapBlockFetch(&64):
shell_FatalError
e%!0=n%:
&400C8,,e%
yD%:XA%=e%!4-e%!20:gA%=e%!16-e%!24:
&81681,,e%:
shell_EvntHandle_Redraw(n%,e%,XA%,gA%):
&400CA,,e%
shell_HeapBlockReturn(e%):
shell_Receive(_Q%):
h%,k%,UH%:
_Q%!16
_MESSAGE_QUIT:
shell_Exit:
_MESSAGE_DATASAVE:
shell_DataSave(_Q%)
_MESSAGE_DATASAVEACK:
shell_DataSaveAck(_Q%)
_MESSAGE_DATALOAD:
shell_EvntHandle_DataLoad(_Q%,
_MESSAGE_DATALOADACK:
shell_DataLoadAck(_Q%)
shell_EvntHandle_DataLoad(_Q%,
_MESSAGE_RAMFETCH:
shell_RAMFetch(_Q%)
_MESSAGE_RAMTRANSMIT:
shell_RAMTransmit(_Q%)
_MESSAGE_PREQUIT:
shell_ProgEvnts_PreQuit(_Q%)
_MESSAGE_PALETTECHANGE:
shell_ProgEvnts_PaletteChanged
_MESSAGE_SAVEDESKTOP:
shell_ProgEvnts_SaveDesktop(_Q%!20)
_MESSAGE_SHUTDOWN:
shell_ProgEvnts_Shutdown
_MESSAGE_HELP:
shell_InteractiveHelp(_Q%)
_MESSAGE_MENUWARNING:
shell_MenuWarning(_Q%)
_MESSAGE_MODECHANGE:
shell_ProgEvnts_ModeChanged
_MESSAGE_COLOURPICKERCOLOURCHOICE:UH%=(_Q%!24
shell_ColourPickerSelection(_Q%!28,UH%)
_MESSAGE_DESKFONT_CHANGED:
shell_ProgEvnts_DeskFontChanged(_Q%!20):
shell_ExReg_Fonts_Loaded
shell_Fonts_DeskTopFont_Selected(_Q%!20)
_MESSAGE_TASKINIT:
shell_ProgEvnts_TaskInitialise(_Q%!4,
shell_GetString(_Q%+28)):
_U%!&D0=-1
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!4:
shell_StrongHlpMsg("Help_Install -DieWithTask "+
shell_GetAppDir+"."+
shell_GetAppName):h%=_U%!&D8:
$h%<>""
shell_HelpWord($h%):
shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
_MESSAGE_TASKCLOSEDOWN:
shell_ProgEvnts_TaskCloseDown(_Q%!4):
_Q%!4=_U%!&D0
_U%!&D0=-1
_MESSAGE_TASKNAMEIS:
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!20
shell_ScanForHelp
&80140:
shell_HandlePrintFile(_Q%)
&80143:
shell_HandlePrintError(_Q%)
&80145:
shell_HandlePrintTypeOdd(_Q%)
&80147:
shell_HandleSetPrinter(_Q%)
shell_HandleUnknownMessage2(_Q%)
shell_HandleUnknownMessage2(_Q%):
_Q%!16
&43B00:U$=$(_Q%+20):
U$,30)="EvntShellLib:ShellDBug started"
_U%!&64
r_U%!&64=(_U%!&64
1<<4):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
shell_GetAppName)
U$,25)="EvntShellLib:TraceInitAck"
_U%!&64=(_U%!&64
1<<4)
U$,20)="EvntShellLib:TraceOn"
shell_TraceOn
U$,21)="EvntShellLib:TraceOff"
shell_TraceOff
U$,28)="EvntShellLib:ListClickSelect"
shell_ListClickSelect
U$,26)="EvntShellLib:ListClickMenu"
shell_ListClickMenu
U$,28)="EvntShellLib:ListClickAdjust"
shell_ListClickAdjust
U$,25)="EvntShellLib:ListHelpTags"
shell_ListHelpTags
U$,24)="EvntShellLib:ListBumpers"
shell_ListBumpers
U$,26)="EvntShellLib:ListPointerIn"
shell_ListPointerIn
U$,27)="EvntShellLib:ListPointerOut"
shell_ListPointerOut
U$,25)="EvntShellLib:ListDataLoad"
shell_ListDataLoad
U$,25)="EvntShellLib:ListDataSave"
shell_ListDataSave
shell_HandleUnknownMessage(_Q%):
shell_HandleUnknownMessage(_Q%):
shell_RAMFetch(_Q%):
PJ%,uE%,yE%:yE%=
_U%!&90>&8000
4_Q%!&C=_Q%!8:_Q%!16=7:uE%=_U%!&88:
_U%!&8C=&FF9
_U%!&90+=4
(uE%-_U%!&80)<_Q%!24
_Q%!24=uE%-_U%!&80:yE%=
&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%):
a%,e%,pA$,h%:
_Q%!&C=_U%!&70
$_U%!&80+=_Q%!24:
_Q%!24<_U%!&84
shell_GetEventListOffset(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked,_U%+96,16,
):e%=_U%!96+a%:h%=_U%!&9C:pA$=
shell_GetString(h%+44):
shell_UserFNLoadFile(h%!40,_U%!&98,e%!8,pA$,_U%!&84,e%)
_U%!&80>_U%!&84
;_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(iJ%):
HA$,LG%,PE%,yB%:HA$=
shell_GetString(_Q%+44):LG%=
shell_FileLength(HA$):
LG%<0
shell_OK(
shell_MessageNoArgs("SHELLMSG16"))
.QyB%=
shell_HeapBlockFetch(LG%):
&20008,16,HA$,yB%,0
;PE%:
shell_VFlag(PE%)
shell_HeapBlockReturn(yB%)
:=yB%
shell_VFlag(PE%):=((PE%
1)=1)
shell_Exit:
jC%:jC%=_U%!68:
&61504,jC%:
&2001E,7,,jC%:
shell_TraceExit:
&606C2:
&600D0,,-1:
shell_WimpCloseDown_I(_U%!&94):
shell_DataSave(_Q%):
h%,a%,e%,s%:
_Q%!4<>_U%!&94
nCa%=
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
a%>-1
p2e%=_U%!96+a%:
shell_CheckType(_Q%!40,e%!8,
shell_TopBitLoadInProgress
}n_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):h%=_U%!&9C:
_Q%!0
4:h%!s%=_Q%!s%:
s%:_EVNTS_LAST_WINDOWCLICKED%=_Q%!20:_EVNTS_LAST_ICONCLICKED%=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
shell_HeapBlockFetch(_Q%!36)
l_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_TopBitLoadInProgress:
_U%!&64
shell_DataSaveCheckName(d%,t%):
a%,e%,HA%:e%=_U%!72:a%=0:
e%<>0
2HA%=
shell_HeapBlockInfo(e%)-8:
!(e%+a%)=d%
ee%+=a%:f$=
shell_IconGetData(!e%,e%!16):
f$,".")=0
shell_OK(
shell_MessageNoArgs("SHELLMSG01"))
a%=HA%
:a%+=24:
a%>=HA%
shell_DataLoadAck(_Q%):
shell_UserMessageAcknowledge(_Q%):
_Q%!16
shell_AckDataLoad(_Q%)
shell_AckRAMFetch(_Q%)
_Q%!8=_SHELL_SENDDATALOAD_MY_REF%
RO3_Present
("Filer_Run "+_SHELL_SENDDATALOAD_FILE$)
("Run "+_SHELL_SENDDATALOAD_FILE$)
shell_AckRAMFetch(_Q%):
iH%,h%:h%=_U%!&9C:
_Q%!&C<>_U%!&70
_U%!&80=0
&20023,"Wimp$Scrap",,-1,0,3
,,iH%:
iH%<>0
$(h%+44)="<Wimp$Scrap>"+
(0):h%!0=(49+
shell_GetString(h%+44)))
3:h%!&C=h%!8:h%!16=2:h%!36=-1:
&400E7,18,h%,h%!4:_U%!&6C=h%!8
shell_OK(
shell_MessageNoArgs("SHELLMSG14"))
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK("SHELLMSG06")
shell_FindMenuWarnEvent(MA%,
j%,qA%,h%,a%,y%,HA%,xA%,m%:
bC%:bC%=0:qA%=_U%!&DC:a%=0:y%=
:K$="":bC%=0:
shell_HeapBlockExists(qA%)
:m%+=4:
qA%!m%=-1:HA%=m%:m%=0:
:h%=!(qA%+a%+0):
h%<>-1
h%=MA%
aFy%=
:xA%=qA%!(a%+4):K$=$xA%:bC%=qA%!(a%+8):xA%=qA%!(a%+&C):P$=$xA%
:a%+=16
a%=HA%
a%>=HA%
K$="":P$=""
bC%=0
shell_EventListMenuWarn(cC%,tG%,K$,P$):
h%,xA%,m%,qA%:
_U%!&DC=0
_U%!&DC=
shell_HeapBlockFetch(32):h%=_U%!&DC:h%!0=cC%:h%!4=
shell_HeapBlockFetch(
K$+1):$(h%!4)=K$:h%!8=tG%:h%!&C=
shell_HeapBlockFetch(
P$+1):$(h%!&C)=P$:h%!16=-1:h%!20=-1:h%!24=-1:h%!28=-1
shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=qA%:m%=0:
:m%+=16:
qA%!m%=-1:h%=_U%!&DC:h%!m%=cC%:h%!(m%+4)=
shell_HeapBlockFetch(
K$+1):xA%=h%!(m%+4):$(xA%)=K$:h%!(m%+8)=tG%:h%!(m%+&C)=
shell_HeapBlockFetch(
P$+1):xA%=h%!(m%+&C):$(xA%)=P$
;h%!(m%+16)=-1:h%!(m%+20)=-1:h%!(m%+24)=-1:h%!(m%+28)=-1
lwaorigin(A,
QA%):PA%=A!0-A!16:QA%=A!&C-A!20:
shell_WritableIconHandler(d%,t%,kA%):
sA%,OC%,RC%,m%:
JE%,dE%,BA%,oE%:oE%=
:sA%=
shell_WindowCountIcons(d%):BA%=
shell_HeapBlockFetch((sA%+1)*4):
&400D3,,BA%:
!BA%=-1
shell_HeapBlockReturn(BA%):oE%=
&400D6,d%,BA%,&40E000,&E000:OC%=!BA%:m%=0:
BA%!m%=t%
!JE%=BA%!(m%-4):dE%=BA%!(m%+4)
:m%+=4:
BA%!m%=-1:RC%=BA%!(m%-4):
shell_FakeMouseClick(d%,0,4)
398,394:
t%=RC%
&400D2,d%,OC%,-1,-1,-1,
shell_IconGetData(d%,OC%)):
shell_IconEnsureVisible(d%,OC%)
&400D2,d%,dE%,-1,-1,-1,
shell_IconGetData(d%,dE%)):
shell_IconEnsureVisible(d%,dE%)
399,410:
t%=OC%
&400D2,d%,RC%,-1,-1,-1,
shell_IconGetData(d%,RC%)):
shell_IconEnsureVisible(d%,RC%)
&400D2,d%,JE%,-1,-1,-1,
shell_IconGetData(d%,JE%)):
shell_IconEnsureVisible(d%,JE%)
&400D2,d%,OC%,-1,-1,-1,
shell_IconGetData(d%,OC%)):
shell_IconEnsureVisible(d%,OC%)
&400D2,d%,RC%,-1,-1,-1,
shell_IconGetData(d%,RC%)):
shell_IconEnsureVisible(d%,RC%)
shell_HeapBlockReturn(BA%)
shell_FakeMouseClick(d%,t%,AE%):
6,&F,1:_Q%!8=AE%:_Q%!&C=d%:_Q%!16=t%:
shell_Action(6):
shell_GetMinXY(o%,J$,q$):
XA%,gA%,uA%,DB%,cB%,vB%:dB%=0:NB%=0:
J$<>""
&40084,o%>>24
,,gA%,,DB%:
&40097,,
(o%>>24)+J$
,XA%,,uA%:
&40088,,XA%
,XA%:
&40088,,uA%
,uA%:dB%=uA%-XA%:NB%=DB%-gA%
dB%=6*YB%+16*
J$:NB%=32
4NB%+=2*bB%
q$<>""
&2002E,296,
shell_UserSpritesBase,q$
,,,cB%,vB%,,gH%;P%:
&20035,gH%,4
,,yI%:cB%=cB%<<yI%:
&20035,gH%,5
,,oI%:vB%=vB%<<oI%:
&800 cB%=cB%/2:vB%=vB%/2
539)=19cB%=dB%+cB%
cB%>dB%dB%=cB%
vB%>NB%NB%=vB%
shell_IconGetState(fC%,iC%):!_Q%=fC%:_Q%!4=iC%:
&400CE,,_Q%:
print_text(K,J,J$):
in(K,J-32,K+16*
(J$),J)
in(A%,B%,C%,D%):
newvals:X=_Q%!28:b=_Q%!32:Q=_Q%!36:a=_Q%!40:T=_Q%!4:V=_Q%!8:W=_Q%!&C:S=_Q%!16:M=_Q%!20:N=_Q%!24:c=W-T:R=S-V:g=M:h=M+c:i=N:e=N-R:
max(rA%,mB%):
rA%<mB%
shell_Leaf(H$):
H$,"."):H$=
H$,".")+1):
shell_Branch(QA$):
LA%,JA$,h%:
QA$,".")=0
JA$=""
h%=0:
:LA%=h%+1:h%=
QA$,".",LA%):
h%=0:JA$=
QA$,LA%-2)
:=JA$
gname(G):IA$="":
?G<>0
?G<>&D:IA$=IA$+
?G:G+=1:
:=IA$
shell_ScreenToWindowCoords(FH%,
vF%,wH%,XJ%,HH%,hG%,dC%:dC%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(FH%)*32)):vF%=dC%:!vF%=FH%:
&400CC,,vF%:wH%=dC%!4:gI%=dC%!16:HH%=dC%!20:hG%=dC%!24:X%=X%+(HH%-wH%):Y%=Y%+(hG%-gI%)
shell_HeapBlockReturn(dC%):
shell_WimpSlotReadEnd:
&400EC,-1,-1
LD%:=LD%
shell_WimpSlotClaimMemory(LD%,UB%):
&400EC,LD%+UB%,-1
CF%<LD%+UB%
shell_WimpSlotReleaseMemory:
&400EC,LD%,-1:
shell_MouseLimit(SA%):
shell_HeapBlockFetch(36):A!0=SA%:
&400CB,,A:
shell_MouseSetRectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
shell_HeapBlockReturn(A):
shell_MouseRemoveLimits:
("Pointer"):
shell_MouseSetRectangle(PA%,QA%,RE%,x%):
PA%,QA%,RE%,x%:sJ%=PA%:cJ%=QA%:aJ%=RE%:oJ%=x%:
InitialiseSpriteArea(S%,sI%):!S%=sI%:S%!8=16:
46,9+256,S%:
shell_ListEvents(d%,EC%):
AA%,x$:
d%=-1
d%=-2
-AA%=
shell_GetEventMenu(2,d%,EC%):
AA%=0
x$="None"
shell_AttachHotKey(jA$,BD%,JD%,iD%,p$,d%,m$,n$):
qA%,a%,h%,xA%,kA%,kF%:kF%=
_U%!60=0
3_U%!60=
shell_HeapBlockFetch(24):a%=0:_U%!&B4=1
a%=_U%!&B4*24:_U%!60=
shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
:qA%=_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%=(
jA$)-64:kF%=
kA%+=16
kA%+=32
:h%=qA%+a%:h%!0=kA%:h%?4=BD%:h%?5=JD%:h%?6=iD%:h%!8=
shell_HeapBlockFetch(
p$+1):xA%=h%!8:$xA%=p$:
shell_IsWindowStatic(d%)=
shell_MessageNoArgs("SHELLMSG09")
:h%!&C=d%:h%!16=
shell_HeapBlockFetch(
m$+1):xA%=h%!16:$xA%=m$:h%!20=
shell_HeapBlockFetch(
n$+1):xA%=h%!20:$xA%=n$:
shell_HotKeyProcess(kA%):
qA%,HA%,y%,f%,x%,DA$,m$,n$:
JD%,BD%,iD%,FB%,GB%,CE%,kJ%,a%:
j%,_%:qA%=_U%!60:HA%=_U%!&B4*24:y%=
:f%=0:
qA%!f%=kA%
f%+=24
f%>=HA%:
$-h%=qA%+f%:DA$=$(h%!8):
(DA$<>""
h%!&C=0)
shell_CreateWindow(DA$,x%):_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
shell_HeapBlockReturn(_%)
:m$=$(h%!16):
m$<>""
h%!&C>0
; k%=
("FN"+m$+"("+
h%!&C+")")
("FN"+m$+"("+
x%+")")
shell_IsWindowStatic(h%!&C)
shell_OpenWindowStatic(h%!&C)
h%!&C>0
shell_MessageNoArgs("SHELLMSG09")
shell_OpenWindowDynamic2(x%,FB%,GB%)
:n$=$(h%!20):
n$<>""
h%!&C>0
T k%=
("FN"+n$+"("+
h%!&C+")")
("FN"+n$+"("+
x%+")")
DA$="":m$="":n$="":j%=
shell_OpenWindowStaticNewView(d%):
shell_OpenWindow(d%,
,-1):
shell_OpenWindowStatic(n%):
shell_IsWindowStatic(n%)=
shell_OpenWindow(n%,0,-1)
shell_InitHelpSystem(H$,NJ%):
KA$,LA%,j$,fF%,HC%:_U%!&D4=0:
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
@_U%!&D8=0:
shell_ScanForHelp:
KA$=" -DieWithTask"
KA$=""
_U%!&64
WH$="":j$=
shell_OSVarGetVal(
shell_GetAppName+"Res$Path",-1):
:LA%=
j$,","):
LA%>0
shell_FileExists(
j$,LA%-1)+
shell_GetAppName)
j$,LA%-1)+
shell_GetAppName:
shell_StrongHlpChkFiles(H$)
j$,LA%+1)
shell_FileExists(j$+
shell_GetAppName)
?H$=j$+
shell_GetAppName:
shell_StrongHlpChkFiles(H$)
shell_OK(
shell_MessageOneArg("SHELLMSG26",
shell_GetAppName))
H$<>""
shell_FileExists(H$)
shell_StrongHlpChkFiles(H$)
shell_MessageOneArg("SHELLMSG33",H$)
HC%=0
shell_StrongHlpMsg("Help_Install "+H$+KA$):_U%!&64=_U%!&64
shell_HelpWord(WA$):
qJ%,h%:
_U%!&D0=-1
shell_OSVarExists("StrongHelp$Dir")
&600DE,"<StrongHelp$Dir>":
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
<_U%!&D8=
shell_HeapBlockFetch(
WA$+1):h%=_U%!&D8:$h%=WA$
shell_OK(
shell_MessageNoArgs("SHELLMSG11"))
shell_StrongHlpMsg("Help_Word "+WA$)
shell_StrongHlpMsg(GA$):
shell_BroadcastMessage(&43B00,GA$):
shell_ScanForHelp:
rB%,ME%:rB%=
shell_HeapBlockFetch(256):
:rB%!&C=0:
&400E7,19,rB%,-2,_U%!&D4
,,ME%:_U%!&D4=_U%!&D4+1:
ME%<>-1
(_U%!&D4)>64:
ME%<>-1
@rB%!0=24:rB%!&C=0:rB%!16=&400C6:rB%!20=ME%:
&400E7,17,rB%,0
shell_HeapBlockReturn(rB%):
shell_MemFill(PD%,tH%,dD%):
I%,iE%,mE%:iE%=tH%
4:mE%=tH%
iE%>0
(iE%*4)
4:PD%!(I%-1)=dD%:
mE%>0
.PD%=PD%+(iE%*4):
mE%-1:PD%?I%=dD%:
shell_MenuUpdateHandle(RH%,YH%):
HA%,f%,r%,AA%:HA%=
shell_HeapBlockInfo(_U%!&C)-8:f%=0:y%=
:r%=_U%!&C:
:AA%=r%!(f%+8):
AA%=RH%
r%!(f%+8)=YH%
Nf%+=48:
(f%>=HA%):
shell_MenuLastHandle=RH%
_m_Menu_HandleLastOpened%=YH%
shell_CheckSelection(CI%):
h%,m%:h%=_U%!256:
shell_MenuLastHandle=_U%!&FC
CI%!m%<>h%!m%
m%+=4:
h%!m%=-1:=m%
shell_MenuGetItemAddress(AA%,GH%):
m%,lC%:
&45BC7,AA%
:lC%=AA%+28+((GH%!m%)*24):AA%=lC%!4:m%+=4:
GH%!m%=-1:=lC%
shell_GetLastMouseXPos:=
Evnts_GetLastMouseXPos
shell_GetLastMouseYPos:=
Evnts_GetLastMouseYPos
shell_UpdateWindowHandle(sB%,HB%):
HB%<>sB%
Evnts_GetLastWindowClicked=sB%
_EVNTS_LAST_WINDOWCLICKED%=HB%
!_Q%=sB%
!_Q%=HB%
shell_UpdateStaticWindowHandle(sB%,HB%):
shell_UpdateWindowHandleList(sB%,HB%)
shell_MessagesInit(N$,
KH%):
UB%,o%:
3,"Cannot open message file '"+N$+"'"
&41500,,N$
o%,,UB%:
KH%=0
shell_HeapBlockFetch(UB%)
30,6,,,17+
,,_D%:$(_D%+16)=N$:
&41501,_D%,_D%+16:
shell_WindowSetSpriteArea(x%,pE%):
e%,HB%,sE%,xE%:e%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(x%)*32)):!e%=x%:
&400CC,,e%:e%!68=pE%:
shell_IconSetSpriteArea(e%!60,e%+76,pE%):
(e%!88)>0
sE%=0
(e%!88)-1:xE%=e%+92+sE%*32:
shell_IconSetSpriteArea(xE%!16,xE%+20,pE%):
&400C3,,e%:
&400C1,,e%+4
HB%<>x%
shell_UpdateWindowHandle(x%,HB%):x%=HB%
shell_HeapBlockReturn(e%):=x%
shell_StrongHlpIsAvailable:
oB%,VA%:oB%=
_U%!&64
,oB%=
shell_OSVarExists("StrongHelp$Dir")
:=oB%
shell_AttachOpenWindow(d%,e$):
e%,h%,a%:
shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
shell_GetEventListOffset(d%,-1,_U%+304,&C,
):e%=_U%!304+a%:e%!0=d%:e%!4=-1:e%!8=
shell_HeapBlockFetch(
(e$)+1):h%=e%!8:$h%=e$:
shell_EnsurePoll:
:CA%=
shell_Poll_I(0,_U%!&94):
shell_Action(CA%):
CA%=0:
shell_WimpGetVersion:=_U%!316
shell_MessageSendDataLoad(tA%,f$):
IB%:IB%=
shell_HeapBlockFetch(256):IB%!0=256:IB%!4=0:IB%!&C=0:IB%!16=5:IB%!20=0:IB%!28=0:IB%!32=0:IB%!36=0:IB%!40=tA%:$(IB%+44)=f$+
&400E7,18,IB%,0:_SHELL_SENDDATALOAD_MY_REF%=IB%!8
>_SHELL_SENDDATALOAD_FILE$=f$:
shell_HeapBlockReturn(IB%):
shell_BinarySearch(_search_term$,_A$,u$,jI%,_F%):
_pos%,SD%,_wp$,kE%,mJ%,dF%,XD%,eG%,y%,GG%,j%:_F%+=1:GG%=
:SD%=_F%:kE%=0:_pos%=SD%
2:XD%=jI%-1:
XD%<0
XD%=0
:dF%=_F%:
:_wp$=
("FN"+_A$+"( _pos% )"):KG%=_pos%:
_search_term$=_wp$
("FN"+u$+"( _search_term$,_wp$ )")=
+dF%=_pos%:SD%=_pos%-XD%:_pos%=SD%
2+kE%
XD%=_pos%:kE%=_pos%:SD%=dF%-_pos%:_pos%=SD%
2+kE%
eG%=KG%
eG%=KG%:
j%=-1
j%=KG%
shell_IconLastClicked:=
Evnts_GetLastIconClicked
shell_QuickSort(u$,y$,_asc%,_start%,_end%):
_lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%=
:_temp%=_lo%-1+
(_hi%+1-_lo%):k%=
("FN"+y$+"(_lo%,_temp%)"):
_asc%=0
("FN"+u$+"(_lo%,_hi%)")
1(k%=
("FN"+y$+"(_lo%,_hi%)"):_F%=
("FN"+u$+"(_hi%,_lo%)")
6(k%=
("FN"+y$+"(_hi%,_lo%)"):_F%=
_hi%=_hi%-1
_lo%=_lo%+1
_lo%=_hi%:
_start%<_lo%-1
shell_QuickSort(u$,y$,_asc%,_start%,_lo%-1)
_hi%+1<_end%
shell_QuickSort(u$,y$,_asc%,_hi%+1,_end%)
_shell_MS_swap(LE%,hE%):
dA$,zA$,JH%,ZG%:dA$=
shell_MenuGetItemText(_shell_MS_handle%,LE%):zA$=
shell_MenuGetItemText(_shell_MS_handle%,hE%):_shell_blk%!0=LE%:_shell_blk%!4=-1:JH%=
shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%)
_shell_blk%!0=hE%:ZG%=
shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%):
shell_MenuPutData(JH%,zA$):
shell_MenuPutData(ZG%,dA$):=0
_shell_MS_comp(LE%,hE%):
iA$,mA$,bA%:iA$=
shell_MenuGetItemText(_shell_MS_handle%,LE%):mA$=
shell_MenuGetItemText(_shell_MS_handle%,hE%):
iA$<mA$
X bA%=
:=bA%
shell_WindowSetTitleRightJust(
v%,LB%,n%,BC%:BC%=
shell_WindowIsOpen(d%):v%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(d%)*32)):!v%=d%:
&400CC,,v%:LB%=v%!60:
(1<<3))
LB%=LB%
(1<<3)
:LB%=LB%
(1<<9):v%!60=LB%:
&400C3,,v%:
&400C1,,v%+4
d%<>n%
shell_UpdateWindowHandle(d%,n%):d%=n%
shell_OpenWindow(n%,0,0)
shell_HeapBlockReturn(v%):
shell_WindowSetTitleCentreJust(
v%,LB%,n%,BC%:BC%=
shell_WindowIsOpen(d%):v%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(d%)*32)):!v%=d%:
&400CC,,v%:LB%=v%!60:
(1<<3))=0
DLB%=LB%
(1<<3):v%!60=LB%:
&400C3,,v%:
&400C1,,v%+4
d%<>n%
shell_UpdateWindowHandle(d%,n%):d%=n%
shell_OpenWindow(n%,0,0)
shell_HeapBlockReturn(v%):
shell_GetLastMouseButton:=
Evnts_GetLastMouseButton
shell_GetLastWindowClicked:=
Evnts_GetLastWindowClicked
shell_GetLastIconClicked:=
Evnts_GetLastIconClicked
shell_StrongHlpChkFiles(H$):
HC%,j%:
shell_FileExists(H$+".HelpData")
<HC%=-1:
shell_MessageOneArg("SHELLMSG32","HelpData")
shell_FileExists(H$+".Index")
9HC%=-1:
shell_MessageOneArg("SHELLMSG32","Index")
shell_TemplateFileInfo(N$,
KD%:KD%=
RO3_Present:
shell_TemplateFileInfo3(N$,MB%,IA%,j%)
shell_TemplateFileInfo2(N$,MB%,IA%,j%)
shell_TemplateFileInfo2(N$,
LA%,YC%,tB%:
VA%,X%,uB%,JI%:
m%,aE%,KF%,sA%,WD%,o%:LA%=0:IA%=0:YC%=0:tB%=0:j%=0:
shell_FileExists(N$)
j%=-1
shell_FileType(N$)<>&FEC
j%=-2
UVA%=
shell_HeapBlockFetch(&D):X%=
(N$):
#X%=16:
&C,4,X%,VA%,4:WB%=!VA%:
WB%>0
IA%+=1:rF%=0:
&C,4,X%,VA%,4:uB%=!VA%:
&C,4,X%,VA%,4:JI%=!VA%:
&C,4,X%,VA%,&C:KF%=
#X%=WB%+56:
&C,4,X%,VA%,4:o%=!VA%:
#X%=WB%+72:
&C,4,X%,VA%,&C:rF%+=
shell_IconIndirSize(WB%,o%,VA%,X%):
#X%=WB%+84:
&C,4,X%,VA%,4:sA%=!VA%:
sA%>0
WD%=0
sA%-1:
#X%=WB%+88+(WD%*32)+16:
&C,4,X%,VA%,4:o%=!VA%:
#X%=WB%+88+(WD%*32)+20:
&C,4,X%,VA%,&C:rF%+=
shell_IconIndirSize(WB%,o%,VA%,X%):
#X%=KF%:YC%+=rF%:
uB%>tB%
tB%=uB%
WB%=0:
shell_HeapBlockReturn(VA%):MB%=tB%+YC%
shell_TemplateFileInfo3(N$,
LA%,YC%,tB%,WB%:
m%,aE%,KF%,sA%,WD%,o%:LA%=0:IA%=0:YC%=0:tB%=0:VA%=
shell_HeapBlockFetch(&D):
&400D9,,N$:
:$VA%="*":
&400DB,,-1,,,,VA%,LA%
,MB%,DJ%,,,,LA%:
LA%<>0
MB%>tB%
tB%=MB%
YC%+=DJ%:IA%+=1
LA%=0:
&400DA:MB%=tB%+YC%:
shell_HeapBlockReturn(VA%):
RO3_Present:
e%,aC%,R$,bA%:e%=
shell_HeapBlockFetch(256):
("Set RO3$Check Y"):
("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
35,"RO3$Check",e%,256,0,0
,,aC%:e%?aC%=&D:
("Unset RO3$Check"):R$=$e%:
shell_HeapBlockReturn(e%):
R$="N"
[ bA%=
:=bA%
_shell_icondrag(d%,t%):
shell_IconDragBox(d%,t%):=0
shell_MessageSendPrintSave(wE%,PH%):
PH%>1
_U%!336=PH%-1
_U%!336=0
shell_DoSendPrintSave(wE%):
shell_DoSendPrintSave(wE%):
AB%:AB%=
shell_HeapBlockFetch(256):AB%!0=256:AB%!&C=0:AB%!16=&80142:AB%!20=0:AB%!24=0:AB%!28=0:AB%!32=0:AB%!36=256:AB%!40=wE%:$(AB%+44)="PrintOut"+
&400E7,18,AB%,AB%!20,AB%!24:
shell_HeapBlockReturn(AB%):
shell_HandlePrintFile(_Q%):
shell_HandlePrintError(_Q%):
shell_HandlePrintTypeOdd(_Q%):
shell_HandleSetPrinter(_Q%):
shell_3DEnabled:
oH%,_3d%:
_U%!&64
(1<<&A)
6,&A1,&8C
,,oH%:
_3d%=
_3d%=
_3d%=
:=_3d%
shell_HandleAttachedDataSave(_Q%,d%,t%):
JG%,e%,VH%,_name$,h%,k%:
shell_DataSaveCheckName(d%,t%):JG%=
shell_GetEventListOffset(d%,-1,_U%+72,24,
JG%>=0
ie%=_U%!72+JG%:VH%=e%!16:_name$=
shell_IconGetData(d%,VH%):h%=e%!20:
$h%<>""
("FN"+$h%+"(_name$)")
shell_InstallLib(TB$):
k%,Z$:Z$="The library routine 'FNshell_InstallLib' is no longer supported. Please load the library with the LIBRARY command and call the initialise routine with 'void% = FN_shell_<libname>_init'"
shell_MessageWindow(Z$,
shell_GetAppName,""):_closedown%=
_shell_Iconbar_Init:=0
shell_Iconbar(LA%,fA$,J$,aA%,AA%,BD%,JD%,iD%):
n%,FA%,nE%,qE%:FA%=
shell_HeapBlockFetch(36):
nE%20:
qE%20:!FA%=LA%:FA%!4=0:FA%!&C=96:
J$<>""
"/FA%!&C=aA%:FA%!8=-16:FA%!16=92:FA%!32=
FA%!8=0:FA%!16=70:FA%!32=&C
:FA%!20=&1700310B:FA%!24=nE%:FA%!28=qE%:$nE%=J$:$qE%=fA$:
&400C2,,FA%
shell_AttachMenu(-2,n%,AA%,BD%,JD%,iD%):
shell_HeapBlockReturn(FA%):=
shell_IconNewSprite(LA%,n%,fA$)
shell_IconbarSetText(b%,g%,MB$):
l%:l%=
shell_HeapBlockFetch(40):!l%=b%:l%!4=g%:
&400CE,,l%:$(l%!28)=MB$:
shell_IconRedraw(b%,g%):
shell_HeapBlockReturn(l%):
_shell_Files_Init:=0
shell_FileLength(d$):
tA%,DE%,EE%,eB%,sC%,C$:
8,5,d$
tA%,,DE%,EE%,eB%,sC%:=eB%
shell_FileType(d$):
8,5,d$
,,tA%:tA%=(tA%
&FFF00)>>>8:=tA%
shell_FileExists(d$):
tA%,E,j%:E=5:
8,E,d$
tA%=0
shell_CatInfoRead(d$):
tA%,DE%,EE%,eB%,sC%,C$:
8,5,d$
tA%,,DE%,EE%,eB%,sC%:
tA%=0
="Not Found"
sC%=51
C$+="WR "
sC%=&BB
C$+="LWR"
sC%=&88
C$+="DL "
C$+=" "+
shell_StringPadLeading(
~DE%,"0",8):C$+=" "+
shell_StringPadLeading(
~EE%,"0",8):C$+=" "+
shell_StringPadLeading(
~eB%,"0",8):=C$
shell_FileGetDateStamp(d$):
tA%,cH%,E:E=5:
8,E,d$
tA%,,,cH%:
tA%=0
_shell_Evnts_Init:_m_Evnts_HeaderSize%=8:_m_Evnts_LastEvntOffset%=-1:
_c_Evnts_WorkBuffer%256:
_c_Evnts_PaneBlk%&BB8:
_EVNTS_CLICKSELECT_ANCHOR%4:
_EVNTS_CLICKADJUST_ANCHOR%4:
_EVNTS_CLICKMENU_ANCHOR%4:
_EVNTS_HELPTAG_ANCHOR%4
_EVNTS_POPUPS_ANCHOR%4:
_EVNTS_PANES_ANCHOR%4:
_EVNTS_SLIDERS_ANCHOR%4:
_EVNTS_POINTERIN_ANCHOR%4:
_EVNTS_POINTEROUT_ANCHOR%4:
_EVNTS_DATASAVE_ANCHOR%4:
_EVNTS_REDRAW_ANCHOR%4:
_EVNTS_DRAG_ANCHOR%4:
_EVNTS_BUMP_ANCHOR%4:
_EVNTS_WINDOWOPEN_ANCHOR%4
_EVNTS_WINDOWCLOSE_ANCHOR%4:
_EVNTS_ICONWATCH_ANCHOR%4:
_EVNTS_MENUHELPTAG_ANCHOR%4:!_EVNTS_CLICKSELECT_ANCHOR%=0:!_EVNTS_CLICKADJUST_ANCHOR%=0:!_EVNTS_CLICKMENU_ANCHOR%=0:!_EVNTS_HELPTAG_ANCHOR%=0:!_EVNTS_POPUPS_ANCHOR%=0:!_EVNTS_SLIDERS_ANCHOR%=0
!_EVNTS_PANES_ANCHOR%=0:!_EVNTS_POINTERIN_ANCHOR%=0:!_EVNTS_POINTEROUT_ANCHOR%=0:!_EVNTS_DATASAVE_ANCHOR%=0:!_EVNTS_REDRAW_ANCHOR%=0:!_EVNTS_DRAG_ANCHOR%=0:!_EVNTS_BUMP_ANCHOR%=0:!_EVNTS_WINDOWOPEN_ANCHOR%=0:!_EVNTS_WINDOWCLOSE_ANCHOR%=0
!_EVNTS_ICONWATCH_ANCHOR%=0:!_EVNTS_MENUHELPTAG_ANCHOR%=0:
_EVNTS_CLICKSELECT_DATA%4:
_EVNTS_CLICKADJUST_DATA%4:
_EVNTS_CLICKMENU_DATA%4:
_EVNTS_HELPTAG_DATA%4:
_EVNTS_POPUPS_DATA%4:
_EVNTS_PANES_DATA%4:
_EVNTS_SLIDERS_DATA%4:
_EVNTS_POINTERIN_DATA%4
_EVNTS_POINTEROUT_DATA%4:
_EVNTS_DATASAVE_DATA%4:
_EVNTS_REDRAW_DATA%4:
_EVNTS_DRAG_DATA%4:
_EVNTS_BUMP_DATA%4:
_EVNTS_WINDOWOPEN_DATA%4:
_EVNTS_WINDOWCLOSE_DATA%4:
_EVNTS_ICONWATCH_DATA%4:
_EVNTS_MENUHELPTAG_DATA%4:!_EVNTS_CLICKSELECT_DATA%=0
!_EVNTS_CLICKADJUST_DATA%=0:!_EVNTS_CLICKMENU_DATA%=0:!_EVNTS_HELPTAG_DATA%=0:!_EVNTS_POPUPS_DATA%=0:!_EVNTS_PANES_DATA%=0:!_EVNTS_POINTERIN_DATA%=0:!_EVNTS_POINTEROUT_DATA%=0:!_EVNTS_DATASAVE_DATA%=0:!_EVNTS_REDRAW_DATA%=0:!_EVNTS_DRAG_DATA%=0
!_EVNTS_BUMP_DATA%=0:!_EVNTS_WINDOWOPEN_DATA%=0:!_EVNTS_WINDOWCLOSE_DATA%=0:!_EVNTS_SLIDERS_DATA%=0:!_EVNTS_ICONWATCH_DATA%=0:!_EVNTS_MENUHELPTAG_DATA%=0:_EVNTS_CLICKSELECT_REC_SIZE%=20:_EVNTS_CLICKADJUST_REC_SIZE%=20:_EVNTS_CLICKMENU_REC_SIZE%=24
_EVNTS_HELPTAG_REC_SIZE%=20:_EVNTS_POPUPS_REC_SIZE%=36:_EVNTS_PANES_REC_SIZE%=32:_EVNTS_POINTERIN_REC_SIZE%=20:_EVNTS_POINTEROUT_REC_SIZE%=20:_EVNTS_DATASAVE_REC_SIZE%=20:_EVNTS_REDRAW_REC_SIZE%=20:_EVNTS_DRAG_REC_SIZE%=28:_EVNTS_BUMP_REC_SIZE%=44
_EVNTS_SLIDERS_REC_SIZE%=40:_EVNTS_WINDOWOPEN_REC_SIZE%=20:_EVNTS_WINDOWCLOSE_REC_SIZE%=20:_EVNTS_ICONWATCH_REC_SIZE%=24:_EVNTS_MENUHELPTAG_REC_SIZE%=20:_EVNTS_CLICKSELECT_DATAOFFSET%=0:_EVNTS_CLICKADJUST_DATAOFFSET%=0:_EVNTS_CLICKMENU_DATAOFFSET%=0
_EVNTS_HELPTAG_DATAOFFSET%=0:_EVNTS_POPUPS_DATAOFFSET%=0:_EVNTS_PANES_DATAOFFSET%=0:_EVNTS_POINTERIN_DATAOFFSET%=0:_EVNTS_POINTEROUT_DATAOFFSET%=0:_EVNTS_DATASAVE_DATAOFFSET%=0:_EVNTS_REDRAW_DATAOFFSET%=0:_EVNTS_DRAG_DATAOFFSET%=0
_EVNTS_BUMP_DATAOFFSET%=0:_EVNTS_SLIDERS_DATAOFFSET%=0:_EVNTS_WINDOWOPEN_DATAOFFSET%=0:_EVNTS_WINDOWCLOSE_DATAOFFSET%=0:_EVNTS_ICONWATCH_DATAOFFSET%=0:_EVNTS_MENUHELPTAG_DATAOFFSET%=0:_EVNTS_LAST_MOUSEBUTTON%=0:_EVNTS_LAST_MOUSEXPOS%=0
_EVNTS_LAST_MOUSEYPOS%=0:_EVNTS_LAST_ICONCLICKED%=-1:_EVNTS_LAST_WINDOWCLICKED%=-1:_EVNTS_LAST_MENUMAKER_FN$="":_m_evnts_DestTaskHandle%=-1:_m_evnts_DestWindowHandle%=-1:_m_evnts_DestIconHandle%=-1:_m_evnts_MouseXCoord%=-1:_m_evnts_MouseYCoord%=-1
_m_evnts_DragIconStartWindow%=-1:_m_evnts_DragIconStartIcon%=-1:_m_evnts_DragIconWritableDrag%=
:_m_evnts_DragIconWinXMin%=0:_m_evnts_DragIconWinYMin%=0:_m_evnts_DragIconWinXMax%=0:_m_evnts_DragIconWinYMax%=0:_m_evnts_DragIconMouseX%=0
_m_evnts_DragIconMouseY%=0:_m_evnts_DragIconLastScrollUp%=0:_m_evnts_DragIconLastScrollDown%=0:_m_evnts_DragIconLastScrollLeft%=0:_m_evnts_DragIconLastScrollRight%=0:_m_evnts_DragIconLastDX%=0:_m_evnts_DragIconLastDY%=0:_m_evnts_DragIconMargin%=32
_c_evnts_MaxIconWatchEvnts%=&64:
_c_evnts_CurrentContents$(_c_evnts_MaxIconWatchEvnts%-1):_c_evnts_CurrentContents$()="":=0
Evnts_GetEvntListOffset(A$,g%,i%,z%,wD%):
HA%,f%,y%,a%,BB%,JB%:
A$="IconBar"
g%=-1:A$="iconbar"
(!i%=0
A$=""
(!i%=0)
shell_HeapBlockFetch(z%+_m_Evnts_HeaderSize%):BB%=!i%:BB%!0=z%:BB%!4=1:$(BB%+_m_Evnts_HeaderSize%)="":
s%=&C
(z%-4)
4:BB%!(s%+_m_Evnts_HeaderSize%)=-1:
s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
a%<>_m_Evnts_HeaderSize%
YBB%=!i%:HA%=!BB%:f%=_m_Evnts_HeaderSize%:y%=
:a%=-1:HJ%=-1:JB%=!i%:
($(JB%+f%)=A$)
JB%!(f%+&C)=g%
a%=f%:y%=
f%+=z%
f%+=z%
((f%>=(HA%+_m_Evnts_HeaderSize%))
(a%=-1
a%=HA%+_m_Evnts_HeaderSize%:!i%=
shell_HeapBlockExtend(!i%,z%):fB%=!i%:fB%!0+=z%:fB%!4+=1:fB%+=a%:$(fB%)="":
s%=&C
(z%-4)
4:fB%!s%=-1:
:_m_Evnts_LastEvntOffset%=a%
Evnts_UpdateData(p%,DC%,
OA%,E$):
!p%=-1
!Q!p%=OA%:!DC%=
shell_HeapBlockExtend(!DC%,
(E$)+1):$(!DC%+OA%)=E$:OA%+=
(E$)+1
t$=$(!DC%+!p%):
t$<>E$
(E$)<=
$(!DC%+!p%)=E$
!DC%=
shell_HeapBlockExtend(!DC%,
(E$)+1):$(!DC%+OA%)=E$:!p%=OA%:OA%+=
(E$)+1
Evnts_DebugListHeader(UB$,ZB$):
shell_AttachClickSelect(b%,g%,B$):
a%,c%,p%,A$:A$=
shell_GetWindowIdentifier(b%):
A$="iconbar"
U g%=-1
Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
):c%=!_EVNTS_CLICKSELECT_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_CLICKSELECT_DATA%=0
`<!_EVNTS_CLICKSELECT_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%,B$):
shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
shell_EvntHandle_ClickSelect(_window_handle%,_icon_handle%):
A$,a%,B$,i%,w%,j%,Z$:A$=
shell_GetWindowIdentifier(_window_handle%):
A$="iconbar"
_icon_handle%=-1
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
a%>=0
i%=!_EVNTS_CLICKSELECT_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_CLICKSELECT_DATA%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle%, _icon_handle% )"):
_icon_handle%=0
_window_handle%=_U%!20
shell_CloseWindow(_window_handle%)
_window_handle%>0
A$<>""
shell_IconIsDraggable(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked):
Z$="Icon is draggable":
shell_EvntHandle_UserDragStartDrag(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked):
shell_EvntHandle_DataSaveStartDrag(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
shell_HandleSlider(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
Z$="Icon is not draggable"
shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
shell_HandleSlider(
Evnts_GetLastWindowClicked,
Evnts_GetLastIconClicked)
shell_ListClickSelect:
HA%,r%,z%,f%,NA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_CLICKSELECT_ANCHOR%:z%=_EVNTS_CLICKSELECT_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("ClickSelect","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_CLICKSELECT_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_CLICKSELECT_REC_SIZE%:
shell_AttachClickAdjust(b%,g%,B$):
a%,c%,A$:A$=
shell_GetWindowIdentifier(b%):
A$="iconbar"
g%=-1
Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
):c%=!_EVNTS_CLICKADJUST_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_CLICKADJUST_DATA%=0
<!_EVNTS_CLICKADJUST_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%,B$):
shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
shell_EvntHandle_ClickAdjust(_window_handle%,_icon_handle%):
A$,a%,B$,i%,w%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$="iconbar"
_icon_handle%=-1
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
a%>=0
i%=!_EVNTS_CLICKADJUST_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_CLICKADJUST_DATA%:B$=$(w%+JA%):k%=
("FN"+B$+"(_window_handle%,_icon_handle%)")
_window_handle%>0
shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%)
shell_ListClickAdjust:
HA%,r%,z%,f%,NA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_CLICKADJUST_ANCHOR%:z%=_EVNTS_CLICKADJUST_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("ClickAdjust","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_CLICKADJUST_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_CLICKADJUST_REC_SIZE%:
shell_AttachMenu(b%,g%,q%,BD%,JD%,iD%):
a%,c%,A$,JF%:
shell_IsWindowStatic(b%)=
shell_OK(
shell_MessageNoArgs("SHELLMSG30"))
=YA$=
shell_GetWindowIdentifier(b%):W$=
shell_MenuList_GetIdentifier(q%):
A$="iconbar"
A g%=-1
g%>=0
shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK):
shell_EvntAdd_PopUpMenu(A$,g%,-1,q%,"","",_POPUP_TYPE_TEXT)
Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
a%>=0
L JF%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
):c%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_CLICKMENU_DATA%=0
X4!_EVNTS_CLICKMENU_DATA%=
shell_HeapBlockFetch(1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,W$):
_Yp%=c%+20:
Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,"")
shell_AttachPopupMenu(d%,eC%,tC%,AA%,a$,X$):
eC%>=0
shell_IconSetButtonType(d%,eC%,_BUTTON_TYPE_CLICK)
shell_EvntAdd_PopUpMenu(
shell_GetWindowIdentifier(d%),eC%,tC%,AA%,a$,X$,_POPUP_TYPE_TEXT):
shell_EvntHandle_ClickMenu(_window_handle%,_icon_handle%):
A$,a%,i%,lG%,b$,pF%,k%:
uC%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$="iconbar"
_icon_handle%=-1
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
a%>=0
i%=!_EVNTS_CLICKMENU_ANCHOR%+a%:uC%=i%!16:lG%=i%!20:pF%=!_EVNTS_CLICKMENU_DATA%:q%=
shell_MenuList_GetSysHandle($(pF%+uC%)):b$=$(pF%+lG%):_EVNTS_LAST_MENUMAKER_FN$=b$:
b$<>""
("FN"+b$+"( "+
_window_handle%+", "+
_icon_handle%+" )")
shell_OpenMenu(_Q%!0,_Q%!4,q%)
_window_handle%>0
shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%)
shell_ListClickMenu:
HA%,r%,z%,f%,NA%,JB%,q%:
g%,s%,b$:r%=!_EVNTS_CLICKMENU_ANCHOR%:z%=_EVNTS_CLICKMENU_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("ClickMenu ","Window Icon Menu handle Maker FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):g%=r%!(f%+&C):q%=r%!(f%+16):GA%=!_EVNTS_CLICKMENU_DATA%:
GA%>0
b$=$(GA%+r%!(f%+20))
b$="None"
:f%+=_EVNTS_CLICKMENU_REC_SIZE%:
shell_AttachMenuMaker(b%,g%,q%,b$):
a%,c%,A$,p%:
shell_AttachMenu(b%,g%,q%,0,0,0):A$=
shell_GetWindowIdentifier(b%):
A$="iconbar"
g%=-1
Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
a%=-1
99,"MenuMaker offset not found.."
Cc%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:
!_EVNTS_CLICKMENU_DATA%=0
:!_EVNTS_CLICKMENU_DATA%=
shell_HeapBlockFetch(
(b$)+1)
:p%=c%+20:
Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,b$):
shell_AttachHelpTag(b%,g%,Y$):
a%,c%,A$:A$=
shell_GetWindowIdentifier(b%):
A$="iconbar"
g%=-1
Evnts_GetEvntListOffset(A$,g%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
):c%=!_EVNTS_HELPTAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_HELPTAG_DATA%=0
8!_EVNTS_HELPTAG_DATA%=
shell_HeapBlockFetch(
(Y$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%,Y$):
shell_EvntHandle_HelpTags(_window_handle%,_icon_handle%,
A$,a%,i%,vC%,wC%,YE%:
o%,tF%,f%,XI%,c%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$="iconbar"
_icon_handle%=-1
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
a%>=0
%)Y$=
shell_EvntHandle_AttachedHelp(a%)
shell_HeapBlockFetch(96):
&600F4,1,YE%,_window_handle%,_icon_handle%
o%<>1
_window_handle%<>
shell_GetDynamicWindowHandle
shell_WindowHandleKnown(_window_handle%)
2&Y$=
shell_EvntHandle_MenuHelp(YE%)
shell_HeapBlockReturn(YE%)
shell_ListHelpTags:
HA%,r%,z%,f%,NA%,JB%,B$:
g%,GA%,s%:r%=!_EVNTS_HELPTAG_ANCHOR%:z%=_EVNTS_HELPTAG_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("HelpTag ","Window Icon Help tag"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_HELPTAG_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_HELPTAG_REC_SIZE%:
shell_AttachMenuHelpTag(W$,hH%,L$):
a%,c%,p%:a%=
Evnts_GetEvntListOffset("menu",hH%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
):c%=!_EVNTS_MENUHELPTAG_ANCHOR%:c%+=a%:$c%="menu":c%!&C=hH%:
!_EVNTS_MENUHELPTAG_DATA%=0
u<!_EVNTS_MENUHELPTAG_DATA%=
shell_HeapBlockFetch(
(L$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_MENUHELPTAG_DATA%,_EVNTS_MENUHELPTAG_DATAOFFSET%,L$):
shell_AttachPane(b%,
gE%,o%,FB%,GB%):
a%,c%,WA%,A$,S$,OB%:A$=
shell_GetWindowIdentifier(b%):S$=
shell_GetWindowIdentifier(gE%):WA%=0:OB%=
shell_WindowGetFlags(gE%):
1<<5)=0
shell_WindowToggleFlags(gE%,1<<5)
1<<1)
shell_WindowToggleFlags(gE%,1<<1)
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:WA%+=1:
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
):c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:$c%=A$:c%!&C=WA%:c%!20=o%:c%!24=FB%
%c%!28=GB%:
!_EVNTS_PANES_DATA%=0
6!_EVNTS_PANES_DATA%=
shell_HeapBlockFetch(
(S$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%,S$):
shell_PaneSetVisibility(xC%,yC%,KJ%):
A$,S$,WA%,a%:A$=
shell_GetWindowIdentifier(xC%):S$=
shell_GetWindowIdentifier(yC%):WA%=0:
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)=-1:WA%+=1:
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
a%>=0
+c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:
c%!20=c%!20
(1<<8)
c%!20=c%!20
(1<<8)
shell_HidePane(xC%,yC%):
shell_PaneSetVisibility(xC%,yC%,
shell_CloseWindow(yC%):
shell_ShowPane(xC%,yC%):
shell_PaneSetVisibility(xC%,yC%,
shell_OpenWindow(xC%,0,
shell_ListPanes:
HA%,r%,z%,f%,NA%,S$:
GA%,s%,GB$,HB$:r%=!_EVNTS_PANES_ANCHOR%:z%=_EVNTS_PANES_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("Pane ","Window Pane name X Pos Y Pos"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):GA%=!_EVNTS_PANES_DATA%:
GA%>0
S$=$(GA%+r%!(f%+16))
:GB$=
shell_StringPadTrailing(
(r%!(f%+24))," ",8):HB$=
shell_StringPadTrailing(
(r%!(f%+28))," ",6):f%+=_EVNTS_PANES_REC_SIZE%:
shell_EvntAdd_WindowOpen(A$,B$):
a%,c%:a%=
Evnts_GetEvntListOffset(A$,-1,"WINDOWOPEN",
):c%=!_EVNTS_WINDOWOPEN_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
!_EVNTS_WINDOWOPEN_DATA%=0
;!_EVNTS_WINDOWOPEN_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_WINDOWOPEN_DATA%,_EVNTS_WINDOWOPEN_DATAOFFSET%,B$):
shell_OpenWindow(_window_handle%,EG%,YD%):
a%,_G%,ZB%,UA%,aA%:
zC%,BH%,DH%:
A$,i%,JA%,w%:
B$,k%,WA%,gC%,OB%,_C%:
aD%,DA%,FC%,DF%:
YG%:A$=
shell_GetWindowIdentifier(_window_handle%):ZB%=_Q%!28
.fa%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWOPEN_ANCHOR%,_EVNTS_WINDOWOPEN_REC_SIZE%,
a%>=0
1pi%=!_EVNTS_WINDOWOPEN_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_WINDOWOPEN_DATA%:B$=$(w%+JA%):k%=
("FN"+B$+"("+A$+")")
:zC%=
:_WINDOWS_GETSTATE_BLK%!0=_window_handle%:
&400CB,,_WINDOWS_GETSTATE_BLK%:
(_WINDOWS_GETSTATE_BLK%!32
&80000)=&80000
&400CF,,_WINDOWS_GETPINFO_BLK%:_Q%!0=_window_handle%:
&400CB,,_Q%
&400C5,,_Q%
:gC%=
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
a%>=0
L!_Q%!0=_window_handle%:
YD%>0
ZB%=YD%
ZB%=-1
ZB%=_Q%!28
&400C5,,_Q%:
&400CB,,_Q%:
&400C6,,_Q%
:WA%=0:
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:hC%=i%!16:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):OB%=i%!20:DF%=
:_C%=i%!24:aD%=i%!28:
(1<<8)
:OB%=OB%
(1<<8)
:DA%=
shell_GetWindowHandleList(S$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
_G%=0
_G%=_c_Evnts_PaneBlk%!0
o{BH%=_c_Evnts_PaneBlk%!0:
&400CB,,_c_Evnts_PaneBlk%:
_WINDOWS_GETPINFO_BLK%!16=-9
_WINDOWS_GETPINFO_BLK%!16>-5
0,1:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-UA%
2:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!16+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-UA%
3:UA%=_Q%!16-_Q%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8+aD%
4:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!8+UA%+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16+UA%
5:UA%=_Q%!16-_Q%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!&C-aA%+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8
:YG%=_c_Evnts_PaneBlk%!28:
WA%=0
_c_Evnts_PaneBlk%!28=ZB%
_c_Evnts_PaneBlk%!28=DH%
&400C5,,_c_Evnts_PaneBlk%
_c_Evnts_PaneBlk%!0=YG%
:DH%=_c_Evnts_PaneBlk%!0:WA%+=1:
_Q%!28=BH%:
&400C5,,_Q%
_Q%!0=_window_handle%:
&400CB,,_Q%
ZB%=-2
_Q%!28=-2
YD%=-1
_Q%!28=-1
&400C5,,_Q%
shell_AttachCloseWindowHandler(b%,B$):
a%,c%,A$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
):c%=!_EVNTS_WINDOWCLOSE_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1
!_EVNTS_WINDOWCLOSE_DATA%=0
<!_EVNTS_WINDOWCLOSE_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%,B$):
shell_EvntHandle_WindowClose(_window_handle%):
A$,a%,B$,i%,w%,aF%:A$=
shell_GetWindowIdentifier(_window_handle%):a%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
):aF%=
a%>=0
bi%=!_EVNTS_WINDOWCLOSE_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_WINDOWCLOSE_DATA%:B$=$(w%+JA%):
B$<>""
.aF%=
("FN"+B$+"("+
(_window_handle%)+" )")
shell_CloseWindow(_window_handle%)
shell_AttachDrag(b%,g%,B$):
a%,c%,p%,A$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,"DRAG",
):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_DRAG_DATA%=0
$5!_EVNTS_DRAG_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
shell_AttachUserRedraw(
b%,B$):
a%,c%,p%,e%,hA%:e%=
shell_HeapBlockFetch(36):!e%=b%:
&400CB,,e%:hA%=e%!32:
shell_HeapBlockReturn(e%):
shell_Tracef0("AttachUserRedraw:flag% = &"+
~hA%):
1<<4)
shell_Tracef0("AttachUserRedraw:auto redraw set!!"):
shell_WindowToggleFlags(b%,1<<4)
shell_GetWindowIdentifier(b%):
shell_Tracef0("AttachUserRedraw:window name is : "+A$):a%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
):c%=!_EVNTS_REDRAW_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
!_EVNTS_REDRAW_DATA%=0
O7!_EVNTS_REDRAW_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%,B$):
shell_EvntHandle_Redraw(_window_handle%,e%,XA%,gA%):
A$,a%,B$,i%,w%,k%:A$=
shell_GetWindowIdentifier(_window_handle%):a%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
a%>=0
bXi%=!_EVNTS_REDRAW_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_REDRAW_DATA%:B$=$(w%+JA%):
B$<>""
i/k%=
("FN"+B$+"("+
e%+","+
XA%+","+
gA%+")")
shell_ListRedraw:
HA%,r%,z%,f%,NA%,B$,A$:
GA%,s%:r%=!_EVNTS_REDRAW_ANCHOR%:z%=_EVNTS_REDRAW_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("Redraw ","Window User FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):GA%=!_EVNTS_REDRAW_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_REDRAW_REC_SIZE%:
shell_AttachIconWatch(b%,g%,B$):
a%,c%,p%,A$,k$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_REC_SIZE%,
):c%=!_EVNTS_ICONWATCH_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%
!_EVNTS_ICONWATCH_DATA%=0
:!_EVNTS_ICONWATCH_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%,B$):k$=
shell_IconGetData(b%,g%):pG%=(a%-
Evnts_GetHeaderSize)
_EVNTS_ICONWATCH_REC_SIZE%:
pG%>_c_evnts_MaxIconWatchEvnts%
99,"Sorry, too many IconWatch events attached (max "+
(_c_evnts_MaxIconWatchEvnts%)+")"
_c_evnts_CurrentContents$(pG%)=k$
shell_EvntHandle_IconWatch:
i%,z%,YA%,f%,s%,g%,A$,ZJ%:
DA%,b%,k$,hA$,B$,JA%:
w%,p%:i%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:YA%=i%!4:
f%=_m_Evnts_HeaderSize%:
YA%:A$=$(i%+f%):g%=i%!(f%+&C):JA%=i%!(f%+16):w%=!_EVNTS_ICONWATCH_DATA%:B$=$(w%+JA%):hA$=_c_evnts_CurrentContents$( (f%-
Evnts_GetHeaderSize)
_EVNTS_ICONWATCH_REC_SIZE%):DA%=
shell_GetWindowHandleList(A$):
DA%<>-1
0m%=0:
:b%=DA%!m%:
shell_WindowIsOpen(b%)=
shell_IconGetData(b%,g%):
B$<>""
k$<>hA$
("FN"+B$+"( "+
(34)+k$+
(34)+" )"):_c_evnts_CurrentContents$( (f%-
Evnts_GetHeaderSize)
_EVNTS_ICONWATCH_REC_SIZE%)=k$
:m%+=4:
DA%!m%=-1
:f%+=_EVNTS_ICONWATCH_REC_SIZE%:
shell_ListIconWatch:
HA%,r%,z%,f%,NA%,B$,A$:
GA%,s%:r%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("IconWatch ","Window User FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):GA%=!_EVNTS_ICONWATCH_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_ICONWATCH_REC_SIZE%:
shell_AttachUserDrag(b%,g%,B$):
a%,c%,p%,A$,k$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
!_EVNTS_DRAG_DATA%=0
&5!_EVNTS_DRAG_DATA%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
shell_EvntHandle_UserDragStartDrag(b%,g%):
JA%,w%,A$,a%:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
a%>=0
shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%
shell_IconWritableDragStatus=
shell_IconIsWritable(b%,g%)
shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%:_m_evnts_DragIconWritableDrag%=
shell_WindowGetPosition(b%,_m_evnts_DragIconWinXMin%,_m_evnts_DragIconWinYMin%,_m_evnts_DragIconWinXMax%,_m_evnts_DragIconWinYMax%):
shell_PointerGetPosition(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%)
shell_EvntHandle_UserDragEnd:
yA%,A$,a%,i%,JA%,w%:
k%,B$,LA$,lA$,bD%,gF%:A$=
shell_GetWindowIdentifier(_m_evnts_DragIconStartWindow%):a%=
Evnts_GetEvntListOffset(A$,_m_evnts_DragIconStartIcon%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
shell_HeapBlockFetch(30):
&400CF,,yA%:_m_evnts_MouseXCoord%=yA%!0:_m_evnts_MouseYCoord%=yA%!4:_m_evnts_DestWindowHandle%=yA%!&C:_m_evnts_DestIconHandle%=yA%!16:
shell_HeapBlockReturn(yA%):
a%>=0
i%=!_EVNTS_DRAG_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_DRAG_DATA%:B$=$(w%+JA%):k%=
("FN"+B$+"("+
_m_evnts_DestTaskHandle%+","+
_m_evnts_DestWindowHandle%+","+
_m_evnts_DestIconHandle%+","+
_m_evnts_MouseXCoord%+","+
_m_evnts_MouseYCoord%+")")
_m_evnts_DragIconWritableDrag%=
_m_evnts_DragIconWritableDrag%=
shell_IconIsWritable(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%)
shell_WindowHandleKnown(_m_evnts_DestWindowHandle%)
shell_IconGetData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%):lA$=
shell_IconGetData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%):
shell_IconPutData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%,"",
(_m_evnts_DestWindowHandle%<>_m_evnts_DragIconStartWindow%)
bD%=
(_m_evnts_DestIconHandle%<>_m_evnts_DragIconStartIcon%)
gF%=
(bD%=
(bD%=
shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,lA$+LA$,
shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,LA$,
shell_EvntAdd_PopUpMenu(A$,GC%,RA%,q%,T$,X$,CE%):
a%,c%,W$:a%=
Evnts_GetEvntListOffset(A$,GC%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
):c%=!_EVNTS_POPUPS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=GC%:c%!20=RA%:c%!24=CE%:
!_EVNTS_POPUPS_DATA%=0
7!_EVNTS_POPUPS_DATA%=
shell_HeapBlockFetch(
(W$)+1)
T$<>""
Sp%=c%+16:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,T$)
c%!16=-1
shell_MenuList_GetIdentifier(q%):
W$<>""
Sp%=c%+28:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,W$)
X$<>""
!_EVNTS_POPUPS_DATA%=0
7!_EVNTS_POPUPS_DATA%=
shell_HeapBlockFetch(
(X$)+1)
:p%=c%+32:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,X$)
c%!32=-1
shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
A$,a%,w%,OA%,i%,wB%,q%:
dJ%,T$,X$,k%,W$:A$=
shell_GetWindowIdentifier(_window_handle%):a%=
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
a%>=0
wi%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:RA%=i%!20:wB%=i%!24:
wB%=_POPUP_TYPE_TEXT
OA%=i%!28:
OA%>=0
W$=$(w%+OA%)
shell_MenuList_GetSysHandle(W$)
W$="":q%=0
OA%>=0
T$=$(w%+OA%)
:OA%=i%!32:
OA%>=0
+X$=$(w%+OA%):
wB%=_POPUP_TYPE_FONTMENU
("FN"+X$+"("+
shell_FontMenu_GetHandle)+")")
("FN"+X$+"("+
(q%)+")")
_POPUP_TYPE_TEXT:
shell_HandleMenuOpen(_Q%,q%,_window_handle%,_icon_handle%,
_POPUP_TYPE_WIMPCOLOUR:
_m_WimpColMen_Handle%=-1
&45BCF,,"",T$
_m_WimpColMen_Handle%
shell_HandleMenuOpen(_Q%,_m_WimpColMen_Handle%,_window_handle%,_icon_handle%,
_POPUP_TYPE_COLOUR24:
shell_ColourPickerOpen(_window_handle%,RA%,GC%,T$,X$)
_POPUP_TYPE_FONTMENU:
shell_FontMenu_ShowMenu(_Q%,_window_handle%,_icon_handle%,
_POPUP_TYPE_FONTPICK:
shell_FontPickerOpen(_window_handle%,RA%,GC%,T$,X$)
_POPUP_TYPE_DATEPICK:
shell_DatePickerOpen(_window_handle%,RA%,GC%,T$)
99,"Unknown popup type detected!"
shell_EvntHandle_PopupMenuSelection(b%,g%,xB%):
_item_text$,A$,a%,i%,OA%,w%:
GC%,RA%,wB%,q%,j%,a$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
a%>=0
i%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:RA%=i%!20:wB%=i%!24:q%=i%!28:
wB%=_POPUP_TYPE_FONTMENU
_item_text$=""
_item_text$=
shell_MenuGetItemText(q%,!xB%)
:j%=0:
OA%<>-1
P?a$=$(w%+OA%):j%=
("FN"+a$+"("+
b%+","+
RA%+",_item_text$)")
j%<>0
OA%=-1
RA%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(b%,RA%,_item_text$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(b%,RA%,xB%)
99,"Unknown Popup type in EvntHandle_PopupMenuSelection (type was "+
wB%+")"
shell_ListPopUps:
HA%,r%,z%,f%,NA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_POPUPS_ANCHOR%:z%=_EVNTS_POPUPS_REC_SIZE%:NA%=r%!4:
Evnts_DebugListHeader ("PopUps","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_POPUPS_DATA%:
GA%>0
B$=$(GA%+r%!(f%+16))
:f%+=_EVNTS_POPUPS_REC_SIZE%:
shell_EvntSelectButtonPressed(b%,g%,TI%):
shell_EvntHandle_ClickSelect(b%,g%):
shell_EvntAdjustButtonPressed(b%,g%):
shell_EvntHandle_ClickAdjust(b%,g%):
shell_EvntMenuButtonPressed(b%,g%,TI%):
shell_EvntHandle_ClickMenu(b%,g%):
shell_EvntSave_AllEvnts(c$):
u%:u%=
(c$):
Evnts_SaveEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%):
Evnts_SaveEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%)
Evnts_SaveEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%):
Evnts_SaveEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
shell_PointerSaveEvnts(u%)
Evnts_SaveEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%):
Evnts_SaveEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%)
Evnts_SaveEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%):
Evnts_SaveEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%)
Evnts_SaveEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%):
Evnts_SaveEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%)
Evnts_SaveEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
Evnts_SaveEvnt(u%,_m_DSave_Anchor%,_m_DSave_DataBlk%,_m_DSave_DataOffset%)
Evnts_SaveEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
Evnts_SaveEvnt(u%,_m_DLoad_Anchor%,_m_DLoad_DataBlk%,_EVNTS_DATALOAD_DATAOFFSET%):
Evnts_SaveEvnt(u%,AD%,cD%,OA%):
c%,PB%,iA%:c%=!AD%:iA%=!cD%:!_c_Evnts_WorkBuffer%=OA%:
#u%,0
PB%=!c%:
#u%,1:
&C,2,u%,c%,PB%+_m_Evnts_HeaderSize%:
&C,2,u%,_c_Evnts_WorkBuffer%,4:
&C,2,u%,iA%,OA%
shell_EvntLoad_AllEvnts(c$):
u%,c%,jA%,lB%:u%=
(c$):
Evnts_LoadEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%)
Evnts_LoadEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%):
Evnts_LoadEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%)
Evnts_LoadEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
shell_PointerLoadEvnts(u%):
Evnts_LoadEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%)
Evnts_LoadEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%):
Evnts_LoadEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%)
Evnts_LoadEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%):
Evnts_LoadEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%)
Evnts_LoadEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%):
Evnts_LoadEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
Evnts_LoadEvnt(u%,_m_DSave_Anchor%,_m_DSave_DataBlk%,_m_DSave_DataOffset%)
Evnts_LoadEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
Evnts_LoadEvnt(u%,_m_DLoad_Anchor%,_m_DLoad_DataBlk%,_m_DLoad_DataOffset%):
na%=
Evnts_GetEvntListOffset("iconbar",_c_DLoad_ICONBAR_ICON%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
a%>-1
E_m_DLoad_FileName$=
shell_GetCmdLineArgs:
_m_DLoad_FileName$<>""
dc%=!_m_DLoad_Anchor%:c%+=a%:jA%=c%!16:lB%=jA%
(1<<31):
shell_FileType(_m_DLoad_FileName$)=lB%
DataLoad_CallUserFN(-1,lB%,
shell_FileLength(_m_DLoad_FileName$),c%)
Evnts_LoadEvnt(u%,AD%,cD%,
OA%):
rH%,PB%,c%,PB%,uB%,iA%:
!AD%<>0
shell_HeapBlockReturn(!AD%)
!cD%<>0
shell_HeapBlockReturn(!cD%)
rH%=1
shell_HeapBlockFetch(_m_Evnts_HeaderSize%):
&C,4,u%,c%,_m_Evnts_HeaderSize%:PB%=!c%:c%=
shell_HeapBlockExtend(c%,PB%):
&C,4,u%,c%+_m_Evnts_HeaderSize%,PB%:!AD%=c%:
&C,4,u%,_c_Evnts_WorkBuffer%,4:uB%=!_c_Evnts_WorkBuffer%:
uB%>0
.EiA%=
shell_HeapBlockFetch(uB%):
&C,4,u%,iA%,uB%:!cD%=iA%:OA%=uB%
!AD%=0
shell_EvntHandle_MenuSelect(kC%):
HG%,o%:
shell_PointerGetMouseButton (_EVNTS_LAST_MOUSEBUTTON%):
shell_GetLastIconClicked>=0
shell_EvntHandle_PopupSelect(kC%)
&65BC4,_m_Menu_HandleLastOpened%,kC%
HG%,,_c_Evnts_WorkBuffer%;o%:
o%<>1
Evnts_CallMenuHandler(HG%,_c_Evnts_WorkBuffer%)
shell_GetLastMouseButton=_MSE_ADJUSTBUT
_EVNTS_LAST_MENUMAKER_FN$<>""
Z=k%=
("FN"+_EVNTS_LAST_MENUMAKER_FN$+"( _U%!52, _U%!56 )")
shell_MenuOpenLast
shell_EvntHandle_PopupSelect(kC%):
A$,a%,i%,r$,q%,CD%:
iA%,zD%,j%,a$:
RA%,nI%,pH%,uC%:A$=
shell_GetWindowIdentifier(
shell_GetLastWindowClicked)
Evnts_GetEvntListOffset(A$,
shell_GetLastIconClicked,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
a%>=0
A$<>"iconbar"
p}i%=!_EVNTS_POPUPS_ANCHOR%+a%:CD%=i%!24:iA%=!_EVNTS_POPUPS_DATA%:zD%=i%!16:RA%=i%!20:
kC%!4<>-1
CD%<>_POPUP_TYPE_FONTMENU
99,"Unable to handle popup with submenus!"
CD%=_POPUP_TYPE_TEXT
uC%=i%!28:
uC%>=0
W$=$(iA%+uC%)
shell_MenuList_GetSysHandle(W$)
CD%=_POPUP_TYPE_FONTMENU
shell_FontMenu_Decode(kC%)
shell_MenuGetItemText(q%,!kC%)
:j%=0:
zD%>-1
a$=$(iA%+zD%):
r$<>""
("FN"+a$+"("+
shell_GetLastWindowClicked)+","+
RA%+","+
(34)+r$+
(34)+")")
j%<>0
zD%=-1
RA%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(
shell_GetLastWindowClicked,RA%,r$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(
shell_GetLastWindowClicked,RA%,!kC%)
_POPUP_TYPE_FONTMENU:
r$<>""
shell_IconPutData(
shell_GetLastWindowClicked,RA%,r$,
99,"Unknown Popup type in PROCshell_EvntHandle_PopupSelect (type was "+
CD%+")"
Evnts_CallMenuHandler(x%,YI%):
("FN"+$x%+"("+
YI%+")")
Evnts_GetHeaderSize:=_m_Evnts_HeaderSize%
Evnts_GetLastMouseButton:=_EVNTS_LAST_MOUSEBUTTON%
Evnts_GetLastIconClicked:=_EVNTS_LAST_ICONCLICKED%
Evnts_GetLastWindowClicked:=_EVNTS_LAST_WINDOWCLICKED%
Evnts_GetLastMouseXPos:=_EVNTS_LAST_MOUSEXPOS%
Evnts_GetLastMouseYPos:=_EVNTS_LAST_MOUSEYPOS%
Evnts_DeleteData(A$,g%,IC%,iA%,z%,OA%,
_I%):
t$,p%,YB$,c%,a%:
DD%,ED%,FD%,JC%,f%,s%,YA%:
A$="IconBar"
g%=-1
Evnts_GetEvntListOffset(A$,g%,IC%,z%,
):c%=!IC%:YA%=c%!4:c%+=a%:p%=c%+OA%:DD%=!p%:!p%=-1:
DD%=-1
t$=$(!iA%+DD%):ED%=(!iA%+DD%)+
(t$)+1:FD%=!iA%+DD%:JC%=ED%-FD%:
&400F1,_U%!&94,ED%,_U%!&94,FD%,JC%:_I%-=JC%:!iA%=
shell_HeapBlockExtend(!iA%,-JC%):c%=!IC%:f%=_m_Evnts_HeaderSize%+OA%:
c%!f%>DD%
c%!f%-=JC%
:f%+=z%:
Evnts_DeleteEvnt(A$,g%,IC%,iA%,z%):
a%,c%,YA%,ED%,FD%,YA%:a%=
Evnts_GetEvntListOffset(A$,g%,IC%,z%,
):c%=!IC%:YA%=c%!4:
YA%>0
*;c%!0-=z%:c%!4-=1:c%+=a%:ED%=c%+z%:FD%=c%:JC%=z%:
YA%>1
&400F1,_U%!&94,ED%,_U%!&94,FD%,JC%
:!IC%=
shell_HeapBlockExtend(!IC%,-JC%)
shell_EvntHandle_MenuHelp(lE%):
Y$,tF%,f%,MA%,a%:
wC%,vC%:tF%=
shell_MenuLastHandle:f%=0:
lE%!f%<>-1:XI%=lE%!f%:f%+=4:
:MA%=
shell_MenuGetItemHandle(tF%,lE%):
MA%<>0
Sma%=
Evnts_GetEvntListOffset("menu",MA%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
a%>=0
U[i%=!_EVNTS_MENUHELPTAG_ANCHOR%+a%:wC%=i%!16:vC%=!_EVNTS_MENUHELPTAG_DATA%:Y$=$(vC%+wC%)
Y$=""
shell_EvntHandle_AttachedHelp(a%):
i%,wC%,vC%,Y$:i%=!_EVNTS_HELPTAG_ANCHOR%+a%:wC%=i%!16:vC%=!_EVNTS_HELPTAG_DATA%:Y$=$(vC%+wC%):=Y$
shell_Evnts_WritableDragInProgress:=_m_evnts_DragIconWritableDrag%
shell_Evnts_DragIconStartWindow:=_m_evnts_DragIconStartWindow%
shell_Evnts_DragIconStartIcon:=_m_evnts_DragIconStartIcon%
shell_Evnts_MonitorDragPtrPos:
GD%,b%,cA%,dA%:
KC%,LC%,MC%,NC%,YB%,bB%,HD%:
shell_PointerGetPosition(dA%,cA%):
shell_PointerGetWindow(b%)
shell_PointerGetMovementVector(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%,dA%,cA%,KC%,LC%,MC%,NC%,YB%,bB%):
YB%<>0
bB%<>0
=_m_evnts_DragIconMouseX%=dA%:_m_evnts_DragIconMouseY%=cA%
shell_PointerGetLastMovementVector(KC%,LC%,MC%,NC%,YB%,bB%):
YB%<>0
bB%<>0
dA%>(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,dA%-(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%),0)
dA%<(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,dA%-(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%),0)
:mC%=
shell_Window_GetBottomPaneDepth(
shell_Evnts_DragIconStartWindow):
cA%<(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+mC%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+
shell_Window_GetBottomPaneDepth(
shell_Evnts_DragIconStartWindow)))
:HD%=
shell_Window_GetTopPaneDepth(
shell_Evnts_DragIconStartWindow):
cA%>(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-HD%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-
shell_Window_GetTopPaneDepth(
shell_Evnts_DragIconStartWindow)))
Evnts_GetEvntListOffset3(A$,g%,jA%,i%,z%,wD%):
HA%,f%,y%,a%,BB%,JB%:
s%,lB%:
A$="IconBar"
g%=-1:A$="iconbar"
(!i%=0
A$=""
(!i%=0)
shell_HeapBlockFetch(z%+_m_Evnts_HeaderSize%):BB%=!i%:BB%!0=z%:BB%!4=1:$(BB%+_m_Evnts_HeaderSize%)="":
s%=&C
(z%-4)
4:BB%!(s%+_m_Evnts_HeaderSize%)=-1:
s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
a%<>_m_Evnts_HeaderSize%
YBB%=!i%:HA%=!BB%:f%=_m_Evnts_HeaderSize%:y%=
:a%=-1:HJ%=-1:JB%=!i%:
($(JB%+f%)=A$)
7lB%=(JB%!(f%+16))
(1<<31):
JB%!(f%+&C)=g%
lB%=jA%
a%=f%:y%=
f%+=z%
f%+=z%
((f%>=(HA%+_m_Evnts_HeaderSize%))
(a%=-1
a%=HA%+_m_Evnts_HeaderSize%:!i%=
shell_HeapBlockExtend(!i%,z%):fB%=!i%:fB%!0+=z%:fB%!4+=1:fB%+=a%:$(fB%)="":
s%=&C
(z%-4)
4:fB%!s%=-1:
:_m_Evnts_LastEvntOffset%=a%
shell_AttachColourPopupMenu(d%,eC%,tC%,q%,a$,X$):
eC%>=0
shell_IconSetButtonType(d%,eC%,_BUTTON_TYPE_CLICK)
_m_WimpColMen_Handle%=q%:
shell_EvntAdd_PopUpMenu(
shell_GetWindowIdentifier(d%),eC%,tC%,q%,a$,X$,_POPUP_TYPE_WIMPCOLOUR):
_shell_Windows_Init:
_WINDOWS_GETSTATE_BLK%36:
_WINDOWS_GETWINFO_BLK%88:
_WINDOWS_GETPINFO_BLK%20:
_WINDOWS_SETEXTENT_BLK%20:pJ%=-1:jJ%=-1:=0
shell_WindowHasTitleBar(d%):=(
shell_WindowGetFlags(d%)
1<<26)
shell_WindowIsMoveable(d%):=(
shell_WindowGetFlags(d%)
1<<1)
shell_WindowIsAPane(d%):=(
shell_WindowGetFlags(d%)
1<<5)
shell_WindowIsNotBounded(d%):=(
shell_WindowGetFlags(d%)
1<<6)
shell_WindowTrapsHotKeys(d%):=(
shell_WindowGetFlags(d%)
1<<&C)
shell_WindowIsOpen(b%):
j%:j%=
shell_WindowGetFlags(b%)
1<<16)
b%=-1
b%=-2
shell_WindowIsOnTop(d%):=(
shell_WindowGetFlags(d%)
1<<17)
shell_WindowHasBeenToggled(d%):=(
shell_WindowGetFlags(d%)
1<<18)
shell_WindowHasInputFocus(d%):=(
shell_WindowGetFlags(d%)
1<<20)
shell_WindowHasBackIcon(d%):=(
shell_WindowGetFlags(d%)
1<<24)
shell_WindowHasCloseIcon(d%):=(
shell_WindowGetFlags(d%)
1<<25)
shell_WindowHasToggleIcon(d%):=(
shell_WindowGetFlags(d%)
1<<27)
shell_WindowHasVScrollBar(d%):=(
shell_WindowGetFlags(d%)
1<<28)
shell_WindowHasAdjustSizeIcon(d%):=(
shell_WindowGetFlags(d%)
1<<29)
shell_WindowHasHScrollBar(d%):=(
shell_WindowGetFlags(d%)
1<<30)
shell_WindowGetFlags(b%):
o%:_WINDOWS_GETSTATE_BLK%!0=b%:
&400CB,,_WINDOWS_GETSTATE_BLK%:o%=_WINDOWS_GETSTATE_BLK%!32:=o%
shell_WindowGetTitleFlags(d%):
o%,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:o%=e%!60:
Windows_ReturnInfoBlock(e%):=o%
shell_WindowTitleFlags(d%):
o%,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:o%=e%!60:
Windows_ReturnInfoBlock(e%):=o%
shell_WindowTitleHasBorder(d%):=(
shell_WindowTitleFlags(d%)
1<<2)
shell_WindowTitleIsSprite(d%):=(
shell_WindowTitleFlags(d%)
1<<1)
shell_WindowTitleIsText(d%):=(
shell_WindowTitleFlags(d%)
1<<0)
shell_WindowTitleIsHCentred(d%):=(
shell_WindowTitleFlags(d%)
1<<3)
shell_WindowTitleIsVCentred(d%):=(
shell_WindowTitleFlags(d%)
1<<4)
shell_WindowTitleIsFilled(d%):=(
shell_WindowTitleFlags(d%)
1<<5)
shell_WindowTitleIsAAliased(d%):=(
shell_WindowTitleFlags(d%)
1<<6)
shell_WindowTitleIsIndirected(d%):=(
shell_WindowTitleFlags(d%)
1<<8)
shell_WindowGetTitle(d%):
l$,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:
(e%!32
1<<26)
((e%!60)
256)=0
l$=$(e%+76)
l$=$(!(e%+76))
Windows_ReturnInfoBlock(e%):=l$
shell_WindowTitleBufferLength(d%):
j%,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:
((e%!60)
256)=0
j%=&C
j%=e%!84
Windows_ReturnInfoBlock(e%):=j%
shell_WindowMoveToIcon(d%,rE%,t%,FB%,GB%):
KA%,v%:KA%=
shell_HeapBlockFetch(50):v%=
shell_HeapBlockFetch(36):v%!20=0:
shell_OSCheckVersion(3)
rE%=-1
!v%=-2
!v%=rE%
&400CB,,v%
:KA%!0=rE%:KA%!4=t%:
&400CE,,KA%:
shell_WindowMoveTo(d%,KA%!8+FB%-v%!20,KA%!20+GB%):
shell_HeapBlockReturn(KA%):
shell_HeapBlockReturn(v%):
shell_WindowMoveTo(d%,PA%,QA%):
zH%,PG%,a%,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:zH%=e%!&C-e%!4:PG%=e%!16-e%!8:e%!4=PA%:e%!8=QA%:e%!&C=PA%+zH%:e%!16=QA%+PG%:
&400C5,,e%:
&400C6,,e%:
shell_IsWindowStatic(d%)
shell_OpenWindowStatic(d%)
shell_OpenWindowDynamic2(d%,0,0)
Windows_ReturnInfoBlock(e%):
shell_WindowBringToTop(b%):
shell_WindowMoveInStack(b%,-1):
shell_WindowSendToBack(b%):
shell_WindowMoveInStack(b%,-2):
shell_WindowIconise(b%):
shell_WindowMoveInStack(b%,-3):
shell_CloseWindow(b%):
a%,_%,TJ%,WA%,hC%,A$:
i%,S$,DA%,FC%:A$=
shell_GetWindowIdentifier(b%):
WA%=0:
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:hC%=i%!16:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):DA%=
shell_GetWindowHandleList(S$):FC%=!DA%
s_c_Evnts_PaneBlk%!0=FC%:
&400C6,,_c_Evnts_PaneBlk%:WA%+=1:
:_c_Evnts_PaneBlk%!0=b%:
&400C6,,_c_Evnts_PaneBlk%
shell_GetDynamicWindowHandle:=_U%!20
shell_DeleteWindow(n%):
_%:_%=
shell_HeapBlockFetch(20):
oktodeletew(n%)
shell_RemoveHandleFromWindowList(n%):
n%=_U%!20
_U%!20=0
shell_RemoveStaticWindowFromList(n%)
:_%!0=n%:
&600C3,,_%:n%=0
shell_HeapBlockReturn(_%):=n%
shell_WindowCountIcons(d%):
ID%,KD%,sA%:
(_U%!&64
1<<&A)
d%=-1
d%=-2
*}ID%=
shell_HeapBlockFetch(88):!_WINDOWS_GETWINFO_BLK%=d%:
&400CC,,_WINDOWS_GETWINFO_BLK%+1:sA%=_WINDOWS_GETWINFO_BLK%!88
shell_HeapBlockFetch(6000):
3$!ID%=d%:
&400CC,,ID%:sA%=ID%!88
shell_HeapBlockReturn(ID%)
:=sA%
shell_WindowToggleBackIcon(
shell_WindowToggleFlags(d%,1<<24):
shell_WindowToggleCloseIcon(
shell_WindowToggleFlags(d%,1<<25):
shell_WindowToggleTitleBar(
shell_WindowToggleFlags(d%,1<<26):
shell_WindowToggleToggleIcon(
shell_WindowToggleFlags(d%,1<<27):
shell_WindowToggleHScrollBar(
shell_WindowToggleFlags(d%,1<<30):
shell_WindowToggleAdjustSizeIcon(
shell_WindowToggleFlags(d%,1<<29):
shell_WindowToggleVScrollBar(
shell_WindowToggleFlags(d%,1<<28):
shell_WindowToggleFlags(
d%,CB%):
e%,o%,BE%,n%:BE%=
shell_WindowIsOpen(d%):e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:o%=e%!32:o%=(o%
CB%):e%!32=o%:
&400C3,,e%:
&400C1,,e%+4
n%:!e%=n%:
&400C5,,e%
Windows_ReturnInfoBlock(e%):
n%<>d%
shell_UpdateWindowHandle(d%,n%):
shell_UpdateWindowHandleList(d%,n%):d%=n%
shell_UpdateWindow(n%,yF%,mB%,oB%,tE%):
e%:e%=
shell_HeapBlockFetch(e%):e%!0=n%:e%!4=yF%:e%!8=mB%:e%!&C=oB%:e%!16=tE%:
&400C9,,e%
&400CB,,e%:
shell_HeapBlockReturn(e%):
shell_OpenWindowDynamic2(d%,FB%,GB%):
k%,GD%:GD%=
shell_HeapBlockFetch(20):_U%!20=d%:
&400CF,,GD%:
&400D4,,d%,GD%!0+FB%,GD%!4+GB%:
shell_HeapBlockReturn(GD%):
shell_WindowGetPosition(b%,
mA%):!_WINDOWS_GETSTATE_BLK%=b%:
&400CB,,_WINDOWS_GETSTATE_BLK%:eA%=_WINDOWS_GETSTATE_BLK%!4:fA%=_WINDOWS_GETSTATE_BLK%!8:lA%=_WINDOWS_GETSTATE_BLK%!&C:mA%=_WINDOWS_GETSTATE_BLK%!16:
shell_WindowGetSize(b%,
BJ%):
eA%,fA%,lA%,mA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):zI%=lA%-eA%:BJ%=mA%-fA%:
shell_WindowGetCentre(b%,
GI%):
eA%,fA%,lA%,mA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):OJ%=eA%+((lA%-eA%)/2):GI%=fA%+((mA%-fA%)/2):
shell_OpenWindowDynamic(KB$,vA$,wA$):
x%,FB%,GB%,vE%:vE%=
shell_GetDynamicWindowHandle:
vE%<>0
&400D4,,-1:k%=
shell_DeleteWindow(vE%)
shell_CreateWindow(KB$,x%):_WINDOWS_GETSTATE_BLK%!0=x%:
&400CB,,_WINDOWS_GETSTATE_BLK%:FB%=(_WINDOWS_GETSTATE_BLK%!4-_WINDOWS_GETSTATE_BLK%!&C)/2:GB%=(_WINDOWS_GETSTATE_BLK%!16-_WINDOWS_GETSTATE_BLK%!8)/2:_U%!20=x%:
vA$<>""
("FN"+vA$+"("+
x%+")")
shell_OpenWindowDynamic2(x%,FB%,GB%):
wA$<>""
("FN"+wA$+"("+
x%+")")
shell_CreateWindow(I$,
nC%:nC%=
shell_GetWB(I$):nC%!64=_U%!16:
&400C1,,nC%
shell_WindowListAddHandle(I$,b%):
Windows_ClaimInfoBlock(b%):=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32))
Windows_ReturnInfoBlock(FA%):
shell_HeapBlockReturn(FA%):
shell_WindowResize(SA%,KI%,MI%,NI%,OI%,BE%):
eD%:eD%=
Windows_ClaimInfoBlock(SA%):_WINDOWS_SETEXTENT_BLK%!0=KI%:_WINDOWS_SETEXTENT_BLK%!4=MI%:_WINDOWS_SETEXTENT_BLK%!8=NI%:_WINDOWS_SETEXTENT_BLK%!&C=OI%:
&400D7,SA%,_WINDOWS_SETEXTENT_BLK%:
7)eD%!0=SA%:
&400CC,,eD%:
&400C5,,eD%
Windows_ReturnInfoBlock(eD%):
shell_WindowRetitle(
SA%,l$):
h%,_%,n%,kG%:_%=
Windows_ClaimInfoBlock(SA%):_%!0=SA%:
&400CC,,_%:
((_%!60)
256)=0
KAh%=_%+76:$h%=
l$,&B):
&400C3,,_%:
&400C1,,_%+4
n%<>SA%
shell_UpdateWindowHandle(SA%,n%):SA%=n%
kG%=_%!84:$(!(_%+76))=
l$,kG%-1):
((_%!32)
(1<<16))<>0
&400D1,-1,_%!4,_%!16,_%!&C,_%!16+44
Windows_ReturnInfoBlock(_%)
shell_WindowTitleIndirected(CE%):
(1<<8))=(1<<8)
shell_WindowMoveToPopUpPos(b%,g%,mG%):
oC%,QB%,qG%,rG%,uG%,vG%:
wG%:oC%=
shell_HeapBlockFetch(40):oC%!0=b%:oC%!4=g%:
&400CE,,oC%:qG%=oC%!16:rG%=oC%!20:QB%=
shell_HeapBlockFetch(40):QB%!0=b%:
&400CB,,QB%:uG%=QB%!4:vG%=QB%!16:QB%!0=mG%:
&400CB,,QB%
wG%=QB%!16-QB%!8:
shell_WindowMoveTo(mG%,uG%+qG%,vG%+rG%-(wG%/2)):
shell_HeapBlockReturn(oC%):
shell_HeapBlockReturn(QB%):
shell_WindowScrollTo(b%,PC%,QC%):
nA%:nA%=
shell_HeapBlockFetch(36):!nA%=b%:
&400CB,,nA%:nA%!20=PC%:nA%!24=QC%:
shell_WindowIsOpen(b%)
&400C5,,nA%
&400C5,,nA%:
&400C6,,nA%
shell_HeapBlockReturn(nA%):
shell_WindowScrollBy(b%,PC%,QC%):
nA%:nA%=
shell_HeapBlockFetch(36):!nA%=b%:
&400CB,,nA%:nA%!20+=PC%:nA%!24+=QC%:
shell_WindowIsOpen(b%)
&400C5,,nA%
&400C5,,nA%:
&400C6,,nA%
shell_HeapBlockReturn(nA%):
shell_WindowSetBackgroundColour(
x%,gB%):
v%,n%,AH%,ZB%,sA%:sA%=
shell_WindowCountIcons(x%):AH%=
shell_WindowIsOpen(x%):v%=
shell_HeapBlockFetch(&64+(sA%*32)):v%!0=x%:
&400CC,,v%:v%?39=gB%:_shell_open_behind%=v%!28:ZB%=v%!28:
&400C3,,v%
&400C1,,v%+4
n%:v%!0=n%:
&400CC,,v%:
x%<>n%
shell_UpdateWindowHandle(x%,n%):x%=n%
shell_OpenWindow(n%,0,ZB%)
shell_HeapBlockReturn(v%):
shell_WindowSetForegroundColour(
x%,gB%):
v%,n%,BC%,ZB%:BC%=
shell_WindowIsOpen(d%):v%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(x%)*32)):v%!0=x%:
&400CC,,v%:v%?38=gB%:_shell_open_behind%=v%!28:ZB%=v%!28:
&400C3,,v%:
&400C1,,v%+4
x%<>n%
shell_UpdateWindowHandle(x%,n%):x%=n%
shell_OpenWindow(n%,0,ZB%)
shell_HeapBlockReturn(v%):
shell_WindowMoveInStack(b%,CA%):
aB%,MD%:
CA%<-2
CA%>-1
99,"Invalid action"
shell_HeapBlockFetch(256):aB%!0=b%:
&400CB,,aB%:aB%!28=CA%:
&400E7,2,aB%,b%
,,MD%:
&400C7,0,aB%:
shell_HeapBlockReturn(aB%):
MD%=_U%!&94
*_Q%!28=CA%:
shell_OpenWindow(b%,0,CA%)
shell_Window_GetTopPaneDepth(b%):=
shell_Window_GetPaneDepth(b%,2)
shell_Window_GetBottomPaneDepth(b%):=
shell_Window_GetPaneDepth(b%,4)
shell_Window_GetPaneDepth(b%,HI%):
A$,a%,WA%,gC%,FE%,S$:
DA%,hC%,i%,w%,FC%:
OB%:WA%=0:FE%=0:gC%=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
a%>=0
Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:OB%=i%!20:
OB%=HI%
hC%=i%!16:OB%=i%!20:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):DA%=
shell_GetWindowHandleList(S$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
&400CB,,_c_Evnts_PaneBlk%:
FE%=0
P0FE%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8
:WA%+=1:
:=FE%
shell_WindowCentreOnPointer(x%):
v%,fD%,FB%,GB%:fD%=
shell_HeapBlockFetch(20):
&400CF,,fD%:_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
shell_WindowMoveTo(x%,fD%!0+FB%,fD%!4-GB%)
shell_HeapBlockReturn(_%):
shell_HeapBlockReturn(fD%):
shell_WindowCentreOnScreen(x%):
v%,GE%,HE%,aA%,UA%,rD%,ZC%:
&20035,-1,4
,,rD%:
&20035,-1,5
,,ZC%:
&20035,-1,&B
,,GE%:
&20035,-1,&C
,,HE%:GE%=GE%<<rD%:HE%=HE%<<ZC%:_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:aA%=(_%!&C-_%!4)
}eUA%=(_%!16-_%!8):
shell_WindowMoveTo(x%,(GE%/2)-(aA%/2),(HE%-UA%)/2):
shell_HeapBlockReturn(_%):
_shell_Icons_Init:_c_Icons_IconDragType%=5:_c_Icons_DragBBoxXMin%=0:_c_Icons_DragBBoxYMin%=0:_c_Icons_DragBBoxXMax%=&7FFFFFFF:_c_Icons_DragBBoxYMax%=&7FFFFFFF:_c_Icons_DragFlags%=&85:_c_Icons_IconOverFlowMess$="SHELLMSG12"
_c_Icons_NotASpriteIconMess$="SHELLMSG19":_c_Icons_WimpColourRangeMess$="SHELLMSG24":_c_Icons_MinWimpColour%=0:_c_Icons_MaxWimpColour%=&F:
_c_Icon_SetIconStateBlk%16:
_c_Icon_GetIconStateBlk%40:
_c_Icon_GetCaretPositionBlk%24
%_m_Icons_AllowWritableDrags%=
shell_IconSetFGColour(b%,g%,gB%):
gB%<_c_Icons_MinWimpColour%
gB%>_c_Icons_MaxWimpColour%
shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetFGColour")
shell_IconSetState(b%,g%,gB%<<24,&F000000):
shell_IconSetBGColour(b%,g%,gB%):
gB%<_c_Icons_MinWimpColour%
gB%>_c_Icons_MaxWimpColour%
shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetBGColour")
shell_IconSetState(b%,g%,gB%<<28,&F0000000):
shell_IconUnselectable(b%,g%):
shell_IconSetUnselectable(b%,g%,1):
shell_IconSetState(b%,g%,aI%,bI%):_c_Icon_SetIconStateBlk%!0=b%:_c_Icon_SetIconStateBlk%!4=g%:_c_Icon_SetIconStateBlk%!8=aI%:_c_Icon_SetIconStateBlk%!&C=bI%:
&600CD,,_c_Icon_SetIconStateBlk%:
shell_IconSet(b%,g%,zA%):
zA%=0
shell_IconDeselect(b%,g%)
shell_IconSelect(b%,g%)
shell_IconSetSelected(d%,t%,zA%):
zA%=0
shell_IconDeselect(d%,t%)
shell_IconSelect(d%,t%)
Icons_GetState(b%,g%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:
shell_IconSelect(fC%,iC%):
shell_IconSetState(fC%,iC%,&200000,&200000):
shell_IconDeselect(fC%,iC%):
shell_IconSetState(fC%,iC%,0,&200000):
shell_IsIconSelected(fC%,iC%):
Icons_GetState(fC%,iC%):o%=_c_Icon_GetIconStateBlk%!24:h%=(o%
&200000):
e bA%=
:=bA%
shell_IconPutValidation(b%,g%,NA$):
o%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:
w&$(_c_Icon_GetIconStateBlk%!32)=NA$
shell_IconGetValidation(b%,g%):
O$,o%:
g%=-1
O$="":_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:
_c_Icon_GetIconStateBlk%!32>0
O$=$(_c_Icon_GetIconStateBlk%!32)
shell_IconRedraw(b%,g%):
shell_IconSetState(b%,g%,0,0):
shell_IconGetCommand(IE%,LB$):
I%,R$:
IE%<=0
R$=""
shell_StringUpperCase($IE%),";"+
shell_StringUpperCase(LB$)):
R$=""
$(IE%+I%),
$(IE%+I%)+";",";")-1)
shell_IconGetFlags(b%,g%):
o%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:=o%
shell_IconIsDraggable(b%,g%):
o%,j%,CB%,bA%:CB%=(1<<&D)+(1<<&E):o%=
shell_IconGetFlags(b%,g%):j%=(o%
CB%):
j%=CB%
bA%=
:=bA%
shell_IconIsWritable(b%,g%):
o%,j%,CB%:CB%=1<<&F:o%=
shell_IconGetFlags(b%,g%):j%=(o%
CB%):
j%=CB%
shell_IconIsSprite(d%,t%):
o%,h%,bA%:o%=
shell_IconGetFlags(d%,t%):h%=(o%
1<<1):
h%=(1<<1)
bA%=
:=bA%
shell_IconHasCaret(b%,g%):
EB%,SA%,j%:
&400D3,,_c_Icon_GetCaretPositionBlk%:SA%=_c_Icon_GetCaretPositionBlk%!0:EB%=_c_Icon_GetCaretPositionBlk%!4:
(EB%=g%
SA%=b%)
shell_IconCreate(d%,dB%,NB%,RE%,x%,AF%,BF%,pI%,E$,XB%,aC%,O$):
uI%,n%,SC%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=dB%:l%!8=NB%:l%!&C=dB%+RE%:l%!16=NB%+x%:l%!20=pI%
BF%<<28
AF%<<24:
l%!20
#uI%=
E$,","):l%!24=XB%:
O$<>""
6SC%=
shell_HeapBlockFetch(
O$+1):$SC%=O$:l%!28=SC%
l%!28=-1
:l%!32=aC%
$(l%+24)=
E$,&B)
&400C2,,l%
shell_HeapBlockReturn(l%):=n%
shell_IconDelete(d%,t%):
shell_DoIconDelete(d%,t%,
shell_IconDelete2(d%,t%):
shell_DoIconDelete(d%,t%,
shell_DoIconDelete(d%,t%,wI%):
XA%,gA%,uA%,DB%:_c_Icon_GetIconStateBlk%!0=d%:_c_Icon_GetIconStateBlk%!4=t%:
&400CE,,_c_Icon_GetIconStateBlk%:
&8168A,,_c_Icon_GetIconStateBlk%+8:XA%=_c_Icon_GetIconStateBlk%!8:gA%=_c_Icon_GetIconStateBlk%!&C
uA%=_c_Icon_GetIconStateBlk%!16:DB%=_c_Icon_GetIconStateBlk%!20:
&400CE,,_c_Icon_GetIconStateBlk%:
shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!28)
shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!28)
shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!32)
shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!32)
&400C4,,_c_Icon_GetIconStateBlk%:
&400D1,d%,XA%,gA%,uA%,DB%
shell_IconRadioSelection(b%,TC%):
uH%,xB%,vH%,xH%:xB%=
shell_HeapBlockFetch(8):uH%=(TC%<<16)+(1<<21):xH%=(31<<16)+(1<<21):
&400D6,b%,xB%,xH%,uH%:vH%=!xB%:
shell_HeapBlockReturn(xB%):=vH%:|d
shell_IconPutData
shell_IconPutData(SA%,EB%,E$,U):
_U%!&64
"WimpExt_SetIconString",,,SA%,EB%,E$+
shell_IconGetData(SA%,EB%):
E$<>eA$
_c_Icon_GetIconStateBlk%!0=SA%:_c_Icon_GetIconStateBlk%!4=EB%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<8))<>0
E$>_c_Icon_GetIconStateBlk%!36
shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
:$(_c_Icon_GetIconStateBlk%!28)=E$
$(_c_Icon_GetIconStateBlk%+28)=
E$,&B)
shell_IconHasCaret(SA%,EB%)
shell_CaretSetPosition(SA%,EB%,-1,-1,-1,
(E$))
pa_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
&400CD,,_c_Icon_GetIconStateBlk%
shell_IconPutDataNow(SA%,EB%,E$):_c_Icon_GetIconStateBlk%!0=SA%:_c_Icon_GetIconStateBlk%!4=EB%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<8))<>0
(E$)>_c_Icon_GetIconStateBlk%!36
shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
%$(_c_Icon_GetIconStateBlk%!28)=E$
$(_c_Icon_GetIconStateBlk%+28)=
E$,&B)
:_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
&400CD,,_c_Icon_GetIconStateBlk%:
shell_EnsurePoll:
shell_IconNewSprite(b%,g%,M$):
KE%,EF%,FF%,GF%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<1))
EF%=
(_c_Icon_GetIconStateBlk%!24
FF%=
(_c_Icon_GetIconStateBlk%!24
(1<<8))
GF%=
_c_Icon_GetIconStateBlk%!24
)$(_c_Icon_GetIconStateBlk%!32)="S"+M$
$(_c_Icon_GetIconStateBlk%!28)=M$:_c_Icon_GetIconStateBlk%!36=
:KE%=g%
&400C4,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!4=_c_Icon_GetIconStateBlk%!8:_c_Icon_GetIconStateBlk%!8=_c_Icon_GetIconStateBlk%!&C:_c_Icon_GetIconStateBlk%!&C=_c_Icon_GetIconStateBlk%!16
_c_Icon_GetIconStateBlk%!16=_c_Icon_GetIconStateBlk%!20:_c_Icon_GetIconStateBlk%!20=_c_Icon_GetIconStateBlk%!24:$(_c_Icon_GetIconStateBlk%+24)=M$:
&400C2,,_c_Icon_GetIconStateBlk%
shell_IconRedraw(b%,KE%):=KE%
shell_IconGetData(b%,g%):
b%<-2
_U%!&64
"WimpExt_GetIcon",,,b%,g%
,,,R$
_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<8))<>0
%R$=$(_c_Icon_GetIconStateBlk%!28)
R$=$(_c_Icon_GetIconStateBlk%+28)
shell_IconMove2(b%,g%,MG%,NG%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!8+=MG%:_c_Icon_GetIconStateBlk%!16+=MG%:_c_Icon_GetIconStateBlk%!&C+=NG%
_c_Icon_GetIconStateBlk%!20+=NG%:g%=
shell_IconMove(b%,g%,_c_Icon_GetIconStateBlk%!8,_c_Icon_GetIconStateBlk%!&C,_c_Icon_GetIconStateBlk%!16,_c_Icon_GetIconStateBlk%!20):=g%
shell_IconResize(d%,t%,XA%,gA%,uA%,DB%):=
shell_IconMove(d%,t%,XA%,gA%,uA%,DB%)
shell_IconMove(d%,t%,XA%,gA%,uA%,DB%):
KA%,nJ%,bJ%,hB%,e%:
OG%,QG%,RG%,SG%:KA%=
shell_HeapBlockFetch(40):e%=
shell_HeapBlockFetch(40):!KA%=d%:KA%!4=t%:
&400CE,,KA%:!e%=d%:e%!4=t%:
&400CE,,e%:
&8168A,,e%+8:SI%=KA%!24:HF%=KA%+28
OG%=SI%:QG%=HF%!0:RG%=HF%!4:SG%=HF%!8:hB%=KA%!8-e%!8:
&400C4,,KA%:
&400D1,!KA%,KA%!8-hB%,KA%!&C-hB%,KA%!16+hB%,KA%!20+hB%:t%=
shell_CreateIcon2(d%,XA%,gA%,uA%,DB%,OG%,QG%,RG%,SG%,hB%):
shell_HeapBlockReturn(KA%):
shell_HeapBlockReturn(e%):=t%
shell_CreateIcon2(n%,XA%,gA%,uA%,DB%,o%,VI%,eI%,fI%,hB%):
EC%,ZA%,J$,q$,dB%,NB%:ZA%=
shell_HeapBlockFetch(60):!ZA%=n%:ZA%!20=o%:ZA%!24=VI%:ZA%!28=eI%:ZA%!32=fI%:J$="":q$="":
256J$=$(ZA%!24)
J$=$(ZA%+24)
%(q$=
shell_IconGetCommand(ZA%!28,"S")
q$=$(ZA%+24)
shell_GetMinXY(o%,J$,q$):
uA%-XA%<dB%
uA%=XA%+dB%
DB%-gA%<NB%
DB%=gA%+NB%
ZA%!4=XA%:ZA%!8=gA%:ZA%!&C=uA%:ZA%!16=DB%:
&400C2,,ZA%
&400D1,!ZA%,ZA%!4-hB%,ZA%!8-hB%,ZA%!&C+hB%,ZA%!16+hB%:
&400D3,,ZA%:
!ZA%=n%:
ZA%!4=EC%:
&400D2,n%,EC%,0,0,-1,0
shell_HeapBlockReturn(ZA%):=EC%
shell_IconSlab(AE%,d%,t%):
e%:e%=
shell_HeapBlockFetch(50):e%!8=AE%:e%!&C=d%:e%!16=t%:
&81680,,e%:e%!8=0:
&81680,,e%:
shell_HeapBlockReturn(e%):
shell_IconSetButtonType(d%,t%,UC%):
UC%=&C
UC%=&D
shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
UC%<0
UC%>&F
shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
shell_IconSetState(d%,t%,UC%<<&C,&F000):
shell_IconSetESG(d%,t%,TC%):
TC%<0
TC%>31
shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
shell_IconSetState(d%,t%,TC%<<16,&1F0000):
shell_IconSetText(d%,t%,CA%):
CA%<>0
CA%=1<<0
shell_IconSetState(d%,t%,CA%,1<<0):
shell_IconSetSprite(b%,g%,CA%):
CA%<>0
CA%=1<<1
shell_IconSetState(b%,g%,CA%,1<<1):
shell_IconSetBorder(b%,g%,CA%):
CA%<>0
CA%=1<<2
shell_IconSetState(b%,g%,CA%,1<<2):
shell_IconSetHCentred(d%,t%,CA%):
shell_IconSetState(d%,t%,0,1<<9):
CA%<>0
CA%=1<<3
shell_IconSetState(d%,t%,CA%,1<<3):
shell_IconSetVCentred(d%,t%,CA%):
CA%<>0
CA%=1<<4
shell_IconSetState(d%,t%,CA%,1<<4):
shell_IconSetFilled(d%,t%,CA%):
CA%<>0
CA%=1<<5
shell_IconSetState(d%,t%,CA%,1<<5):
shell_IconSetUsesOutlineFont(d%,t%,CA%):
CA%<>0
CA%=1<<6
shell_IconSetState(d%,t%,CA%,1<<6):
shell_IconSetRightJust(d%,t%,CA%):
shell_IconSetHCentred(d%,t%,0):
CA%<>0
CA%=1<<9
shell_IconSetState(d%,t%,CA%,1<<9):
shell_IconSetLeftJust(d%,t%):
shell_IconSetHCentred(d%,t%,0):
shell_IconSetRightJust(d%,t%,0):
shell_IconSetUnselectable(d%,t%,zA%):
zA%<>0
zA%=1<<22
shell_IconSetState(d%,t%,zA%,1<<22):
zA%<>0
shell_IconHasCaret(d%,t%)
&400D2,-1
shell_IconSelectAll(d%):
e%,I%:e%=
shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=1<<21:e%!&C=1<<21:
&400D6,!e%,I%,5<<21,0<<21:
!I%>-1:e%!4=!I%:
&400CD,,e%:I%+=4:
shell_HeapBlockReturn(e%):
shell_IconDeselectAll(d%):
e%,I%:e%=
shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=0:e%!&C=1<<21:
&400D6,!e%,I%,5<<21,1<<21:
!I%>-1:e%!4=!I%:
&400CD,,e%:I%+=4:
shell_HeapBlockReturn(e%):
shell_IconSetSpriteArea(o%,gD%,rI%):
3)=2)
256)<>0)
gD%!4=rI%
shell_IconGetSelectedIcons(d%,TC%,
KA%):
TG%:TG%=(TC%<<16)+(1<<21):
&400D6,d%,KA%,TG%,(TC%<<16)+(1<<21):
shell_IconIndirSize(WB%,o%,gD%,X%):
UB%,UG%,m%,aE%:
&800100)=256
"UB%=gD%!8:
(gD%!4<>-1)
AUG%=gD%!4:
#X%=WB%+UG%:m%=0:
:aE%=
#X%:m%+=1:
aE%<32:UB%+=+m%
UB%=0
:=UB%
shell_IconGetBoundingBox(b%,g%,
mA%):
Icons_GetState(b%,g%):eA%=_c_Icon_GetIconStateBlk%!8:fA%=_c_Icon_GetIconStateBlk%!&C:lA%=_c_Icon_GetIconStateBlk%!16:mA%=_c_Icon_GetIconStateBlk%!20:
shell_IconDragBox(b%,g%):
A$,a%,i%,JA%,w%,B$,k%:
VG%,l%,C,D,WG%,o%,SC%,XG%,hA%,PA$:l%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!l%=b%:
&400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:WG%=l%!68:l%!4=g%:
&400CE,,l%:l%!0=b%
l%!4=_c_Icons_IconDragType%:o%=l%!24:SC%=l%!32:l%!8=l%!8+C:l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
6,&A1,28
,,hA%:XG%=((hA%
2)=2)
M-UI%=
shell_DataSaveDragInProgress
hA%=o%:
R&PA$=
shell_IconGetCommand(SC%,"s")
shell_OK(
shell_MessageNoArgs(_c_Icons_NotASpriteIconMess$))
PA$<>""
&42400,_c_Icons_DragFlags%,WG%,PA$,l%+8:UI%=
&400D0,,l%
shell_HeapBlockReturn(l%):
shell_HandleSlider(b%,g%):
shell_IconDragBox2(b%,g%):
l%,C,D,o%,SC%:l%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!l%=b%:
&400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:l%!4=g%:
&400CE,,l%:l%!0=b%:l%!4=_c_Icons_IconDragType%:o%=l%!24:SC%=l%!32:l%!8=l%!8+C
l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
&400D0,,l%:
shell_HeapBlockReturn(l%):
shell_IconGetBGColour(d%,t%):
hD%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
&400CE,,l%:hD%=(l%!24>>28)
shell_HeapBlockReturn(l%):=hD%
shell_IconGetFGColour(d%,t%):
hD%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
&400CE,,l%:hD%=(l%!24>>24)
shell_HeapBlockReturn(l%):=hD%
shell_IconGetButtonType(b%,g%):
UC%,l%:l%=
shell_HeapBlockFetch(40):l%!0=b%:l%!4=g%:
&400CE,,l%:UC%=(l%!24>>&C)
shell_HeapBlockReturn(l%):=UC%
shell_IconEnsureVisible(b%,g%):
nB%,zB%,aG%:
bG%,cG%,dG%:
LF%,MF%,NF%,OF%:
PF%,QF%:
fG%,gG%:
RF%,SF%:
TF%,UF%:
g%>=0
shell_HeapBlockFetch(36):zB%=
shell_HeapBlockFetch(40):!nB%=b%:
&400CB,,nB%:aG%=nB%!4:bG%=nB%!8:cG%=nB%!&C:dG%=nB%!16:PF%=nB%!20:QF%=nB%!24:gG%=cG%-aG%:fG%=dG%-bG%:zB%!0=b%:zB%!4=g%:
&400CE,,zB%:LF%=zB%!8:MF%=zB%!&C:NF%=zB%!16:OF%=zB%!20
RF%=PF%:UF%=QF%:TF%=PF%+gG%:SF%=QF%-fG%:mC%=
shell_Window_GetBottomPaneDepth(b%)+8:HD%=
shell_Window_GetTopPaneDepth(b%)+8:
MF%<(SF%+mC%)
shell_WindowScrollBy(b%,0,MF%-SF%-mC%)
OF%>(UF%-HD%-mC%)
shell_WindowScrollBy(b%,0,OF%-UF%+HD%+mC%+&C)
NF%>TF%
shell_WindowScrollBy(b%,NF%-TF%,0)
LF%<RF%
shell_WindowScrollBy(b%,LF%-RF%,0)
shell_HeapBlockReturn(nB%):
shell_HeapBlockReturn(zB%)
shell_Icon_SetFont(b%,g%,FI%):
shell_IconSetUsesOutlineFont(b%,g%,
shell_IconSetState(b%,g%,FI%<<24,-&1000000):
shell_IconClearAllWritables(b%):
shell_IconSetAllWritables(b%,""):
shell_IconSetAllWritables(b%,aB$):
l%,f%,sA%:sA%=
shell_WindowCountIcons(b%):l%=
shell_HeapBlockFetch((sA%+1)*4):
&400D6,b%,l%,&40E000,&E000:f%=0:
l%!f%<>-1:
shell_IconPutData(b%,l%!f%,"",
):f%+=4:
shell_HeapBlockReturn(l%):
shell_IconDisallowWritableDrags:_m_Icons_AllowWritableDrags%=
shell_IconAllowWritableDrags:_m_Icons_AllowWritableDrags%=
shell_IconWritableDragStatus:=_m_Icons_AllowWritableDrags%:B
_shell_ProgEvnts_Init:_m_ProgEvnts_DeskFontHandle%=-1:_m_ProgEvnts_DeskFontChangeHandlerFN$="":_m_ProgEvnts_PaletteChangeHandlerFN$="":_m_ProgEvnts_ModeChangeHandlerFN$="":_m_ProgEvnts_SaveDesktopHandlerFN$=""
_m_ProgEvnts_TaskInitialiseHandlerFN$="":_m_ProgEvnts_TaskCloseDownHandlerFN$="":_m_ProgEvnts_ShutdownHandlerFN$="":_m_ProgEvnts_PreQuitHandlerFN$="":=0
shell_AttachDeskFontChangeHandler(F$):
shell_OSModuleCheckVersion("UtilityModule",3.5)
F$<>""
,_m_ProgEvnts_DeskFontChangeHandlerFN$=F$
shell_ProgEvnts_DeskFontChanged(II%):
k%:_m_ProgEvnts_DeskFontHandle%=II%:
_m_ProgEvnts_DeskFontChangeHandlerFN$<>""
("FN"+_m_ProgEvnts_DeskFontChangeHandlerFN$+"("+
_m_ProgEvnts_DeskFontHandle%+")")
shell_AttachPaletteChangeHandler(F$):
F$<>""
9_m_ProgEvnts_PaletteChangeHandlerFN$=F$:k%=
("FN"+F$)
shell_ProgEvnts_PaletteChanged:
_m_ProgEvnts_PaletteChangeHandlerFN$<>""
("FN"+_m_ProgEvnts_PaletteChangeHandlerFN$)
shell_AttachModeChangeHandler(F$):
F$<>""
6_m_ProgEvnts_ModeChangeHandlerFN$=F$:k%=
("FN"+F$)
shell_ProgEvnts_ModeChanged:
_m_ProgEvnts_ModeChangeHandlerFN$<>""
("FN"+_m_ProgEvnts_ModeChangeHandlerFN$)
shell_AttachSaveDesktopHandler(F$):
F$<>""
!))_m_ProgEvnts_SaveDesktopHandlerFN$=F$
shell_ProgEvnts_SaveDesktop(u%):
_m_ProgEvnts_SaveDesktopHandlerFN$<>""
!=?_$=
("FN"+_m_ProgEvnts_SaveDesktopHandlerFN$)+
(&A):
_$=""
!C$_$="Run "+
shell_GetAppDir+
&C,2,u%,_$,
shell_AttachTaskInitialiseHandler(F$):
F$<>""
!`,_m_ProgEvnts_TaskInitialiseHandlerFN$=F$
shell_ProgEvnts_TaskInitialise(VF%,DB$):
_m_ProgEvnts_TaskInitialiseHandlerFN$<>""
!qUk%=
("FN"+_m_ProgEvnts_TaskInitialiseHandlerFN$+"("+
VF%+","+
(34)+DB$+
(34)+")")
shell_AttachTaskCloseDownHandler(F$):
F$<>""
+_m_ProgEvnts_TaskCloseDownHandlerFN$=F$
shell_ProgEvnts_TaskCloseDown(VF%):
_m_ProgEvnts_TaskCloseDownHandlerFN$<>""
("FN"+_m_ProgEvnts_TaskCloseDownHandlerFN$+"("+
VF%+")")
shell_AttachShutdownHandler(F$):
F$<>""
&_m_ProgEvnts_ShutdownHandlerFN$=F$
shell_ProgEvnts_Shutdown:
_m_ProgEvnts_ShutdownHandlerFN$<>""
("FN"+_m_ProgEvnts_ShutdownHandlerFN$)
shell_AttachPreQuitHandler(F$):
F$<>""
%_m_ProgEvnts_PreQuitHandlerFN$=F$
shell_ProgEvnts_PreQuit(_A%):
k%,e%,WF%,XF%,s%:
_m_ProgEvnts_PreQuitHandlerFN$<>""
shell_HeapBlockFetch(256):WF%=_A%!0:
4:e%!s%=_Q%!s%:
s%:XF%=e%!4:
WF%<24
YF%=0
YF%=e%!20
Me%!&C=e%!8:
&400E7,19,e%,XF%:
("FN"+_m_ProgEvnts_PreQuitHandlerFN$)<>0
_closedown%=
!e%=24:e%!24=508:
&400E7,8,e%,XF%:_closedown%=
shell_HeapBlockReturn(e%)
_shell_Debug_Init:=0
shell_TraceOn:_U%!&64=_U%!&64
1<<9:
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
shell_TraceOff:
(_U%!&64
(1<<9))
_U%!&64=_U%!&64
(1<<9)
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
shell_TraceInit(AA$):
hA%,G$,D$:
AA$<>""
(AA$):_U%!44=hA%
shell_OSVarGetVal("Obey$Dir",1):G$=
shell_Leaf(D$),2):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+G$):
_U%!&64
_U%!&64=(_U%!&64
1<<4)
shell_TraceIsOn:
_U%!&64
(1<<9)
shell_Tracef0(gA$):
shell_TraceIsOn=
_U%!44<>-1
hA%=_U%!44:
#hA%,gA$
_U%!&94>0
shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+gA$)
shell_Tracef2(XB%):
("MEDIT "+
~XB%):
shell_TraceExit:
_U%!44<>-1
#(_U%!44):_U%!44=-1
_shell_OS_Init:_m_OS_VAR_BUFFER_SIZE%=256:
_m_OS_VAR_BUFFER%_m_OS_VAR_BUFFER_SIZE%:_m_OS_RiscOS_3_Found%=
shell_OSModuleCheckVersion("UtilityModule",3.1):=0
shell_RO3_Available:=_m_OS_RiscOS_3_Found%
shell_OSCheckVersion(L):=
shell_OSModuleCheckVersion("UtilityModule",L)
shell_OSModuleCheckVersion(BB$,L):
aC%,R$,j%:
("Set Module$Check Y"):
("RMEnsure "+BB$+" "+
L+" Set Module$Check N"):
35,"Module$Check",_m_OS_VAR_BUFFER%,256,0,0
,,aC%:_m_OS_VAR_BUFFER%?aC%=&D:
("Unset Module$Check"):R$=$_m_OS_VAR_BUFFER%:
R$="N"
shell_OSVarExists(RA$):
&20023,RA$,_m_OS_VAR_BUFFER%,-1,0,0
shell_OSVarGetVal(RA$,Y):
SA$,F,QI%,s%:
&20023,RA$,_m_OS_VAR_BUFFER%,_m_OS_VAR_BUFFER_SIZE%,0,-3*(Y=-1)
,,F,QI%:
F-1:SA$=SA$+
(_m_OS_VAR_BUFFER%?s%):
s%:=SA$
shell_OSReadCommandArg(Z):
ZF%,g$,a%:g$="":a%=0:
ZF%?a%<>0:g$+=
(ZF%?a%):a%+=1:
1:g$=
34)+1):g$=
34)+2)
:=g$:B
_shell_Menus_Init:_c_Menu_MinMenuItems%=&A:_m_Menu_HandleLastOpened%=-1:_m_Menu_SubLastOpened%=-1:iG%=0:jG%=0:_m_WimpColMen_Handle%=-1:=0
shell_OpenMenu(PA%,QA%,q%):
shell_ExReg_FontMenu_Loaded
shell_FontMenu_GetHandle
&400D4,,q%,PA%-64,QA%
_Q%!0=PA%:_Q%!4=QA%:
&65BC5,q%,_Q%
_Q%!0=PA%:_Q%!4=QA%:
&65BC5,q%,_Q%
:_m_Menu_HandleLastOpened%=q%:iG%=PA%:jG%=QA%:_U%!52=_U%!28:_U%!56=_U%!32:
shell_MenuLastXPos:=iG%
shell_MenuLastYPos:=jG%
shell_MenuLastHandle:=_m_Menu_HandleLastOpened%
shell_MenuSubLastHandle:=_m_Menu_SubLastOpened%
shell_MenuAttachDbox(x$):
"Menu_SetSubHandle",_U%!8,
shell_MenuString(x$),1:
shell_MenuWarning(_Q%):
pH%,PA%,QA%,k%,_temp%,rA%,K$,lC%,e%:
P$:PA%=_Q%!24:QA%=_Q%!28:_U%!264=0:
_U%!20<>0
shell_DeleteWindow(_U%!20)
_Q%!20
_U%!&E4:
shell_WindowRetitle(_U%!&E4,
shell_MessageNoArgs("warning")):
shell_IconPutData(_U%!&E4,1,
shell_MessageNoArgs("SHELLMSG07"),0):
&400E8,,_U%!&E4,PA%,QA%
shell_MenuGetItemAddress(_m_Menu_HandleLastOpened%,_Q%+32):
shell_HeapBlockExists(lC%!4)
shell_MenuWarnDBox(lC%,PA%,QA%)
shell_HeapBlockFetch(32):
&45BC4,_m_Menu_HandleLastOpened%,_Q%+32
,,e%:
shell_FindMenuWarnEvent(e%!8,K$,P$):
shell_HeapBlockReturn(e%):
shell_MenuWarnSubMenu(_Q%!20,PA%,QA%,K$,P$)
shell_MenuWarnDBox(XB%,PA%,QA%):
h%,x%,k%:
9h%=XB%!4:
shell_CreateWindow($h%!0,x%):
$h%!4<>""
("FN"+$h%!4+"("+
x%+")")
$h%!8<>""
("FN"+$h%!8+"("+
x%+")")
&400E8,,x%,PA%,QA%:_U%!20=x%:
shell_MenuWarnSubMenu(NE%,PA%,QA%,K$,P$):
k%,h%,jD%,m%:_shell_FontMenuSelFN$=P$:
shell_HeapBlockExists(_U%!&E0)
shell_HeapBlockReturn(_U%!&E0)
C_U%!&E0=
shell_HeapBlockFetch(
K$+1):h%=_U%!&E0:$h%=K$:
K$<>""
("FN"+K$+"(_U%!52,_U%!56)")
NE%=_U%!&FC
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256)
m%=0:
:m%+=4:
!(_Q%+32+m%)=-1:m%+=4:_U%!256=
shell_HeapBlockFetch(m%):h%=_U%!256:m%=0:
:h%!m%=!(_Q%+32+m%):m%+=4:
!(_Q%+32+m%)=-1:h%!m%=!(_Q%+32+m%):h%=_U%!256:
"FontMenu_Select",
shell_FontMenuGetLastSelectedFont,_U%!260
,jD%:_U%!264=1
jD%<>_U%!&FC
shell_FontMenuUpdatePtr(jD%):_U%!&FC=jD%:NE%=jD%
_U%!264=0
&400E8,,NE%,PA%,QA%:_m_Menu_SubLastOpened%=NE%:
shell_AttachSubMenu(cC%,bC%,K$):
&45BCE,cC%,bC%:
K$<>""
&45BCC,,
shell_EventListMenuWarn(cC%,bC%,K$,"")
shell_MenuNew(JB$,V$,bF%):
bF%<_c_Menu_MinMenuItems%
bF%=_c_Menu_MinMenuItems%
&45BC1,,JB$,bF%
shell_MenuList_AddMenu(q%,V$):=q%
shell_MenuAdd(n%,kA$,P$):
P$<>""
&45BC2,n%,kA$,P$
&45BC2,n%,kA$
:=MA%
shell_MenuTick(MA%,zA%):
&45BC9,MA%,zA%:
shell_MenuTickItem(MA%):
shell_MenuTick(MA%,1):
shell_MenuUnTickItem(MA%):
shell_MenuTick(MA%,0):
shell_MenuTickOnly1(q%,LA%):
&45BD1,q%,LA%:
shell_MenuTickOnly2(MA%):
&45BD1,MA%:
shell_MenuTickAllItems(q%):
shell_MenuTick(q%,
shell_MenuUntickAllItems(q%):
shell_MenuTick(q%,
shell_MenuShade(n%,zA%):
&45BCB,n%,zA%:
shell_MenuShadeAllItems(q%):
shell_MenuShade(q%,
shell_MenuUnshadeAllItems(q%):
shell_MenuShade(q%,
shell_MenuDotted(MA%,zA%):
&45BCA,MA%,zA%:
shell_MenuColours(MA%,AF%,BF%):
&45BD0,MA%,AF%,BF%:
shell_MenuWritable(MA%,zA%,UB%,NA$):
&45BCD,MA%,zA%,UB%,NA$:
shell_MenuPutData(MA%,E$):
&45BC8,MA%,E$:
shell_MenuSortItems(AA%,TA$,ZI%,PD%,cF%):
pC%:pC%=
shell_MenuGetNrItems(AA%)-1:_shell_MS_handle%=AA%:
cF%>pC%
cF%=pC%
TA$=""
TA$="_shell_MS_comp"
&406C0:
shell_QuickSort(TA$,"_shell_MS_swap",ZI%,PD%,cF%):
&406C1:
shell_MenuGetNrItems(q%):
AA%,j%,oG%:
&45BC7,q%
AA%:AA%+=28:
:j%=(AA%?0
&80):oG%+=1:AA%+=24:
j%:=oG%
shell_MenuGetNrDotted(q%):
AA%,j%,OE%:
&45BC7,q%
AA%:AA%+=28:
:j%=(AA%?0
&80):
(AA%?0
OE%+=1
AA%+=24:
j%=-1:=OE%
shell_MenuGetItemHandler(q%,eF%):
iB%,f%,UA$:iB%=
shell_HeapBlockFetch(8):iB%!0=eF%:iB%!4=-1:
&45BC4,q%,iB%
UA$=""
UA$=$(f%)
shell_HeapBlockReturn(iB%):=UA$
shell_MenuGetItemText(q%,eF%):
iB%,f%,J$:iB%=
shell_HeapBlockFetch(8):iB%!0=eF%:iB%!4=-1:
&45BC4,q%,iB%
,,f%:J$=$(f%!&C):
shell_HeapBlockReturn(iB%):=J$
shell_MenuGetItemHandle(q%,xB%):
f%,MA%,o%:f%=
shell_HeapBlockFetch(40):
&65BC4,q%,xB%
,,f%;o%:
%@ MA%=0
MA%=f%!8
shell_HeapBlockReturn(f%):=MA%
shell_MenuGetItemHeight(q%):
&45BC7,q%
AA%:=AA%!20
shell_MenuCalculateHeight(q%):
UA%:UA%=
shell_MenuGetNrItems(q%)*
shell_MenuGetItemHeight(q%):=UA%+(
shell_MenuGetNrDotted(q%)*24)
shell_MenuDelete(q%,lI%):
f%,HA%,r%:
q%<>0
&65BC3,q%,lI%:
shell_MenuList_DeleteMenu(q%)
shell_MenuOpenLast:
&65BC5,_m_Menu_HandleLastOpened%:
shell_MenuCloseAll:
&400D4,,-1:
shell_MenuMakeFromFile(l$,V$,OB$,AA$):
q%,X%,C$,k%,pC%:
shell_FileExists(AA$)
(AA$):pC%=0:
C$<>""
C$,1)<>"#"
pC%+=1
#X%=0:q%=
shell_MenuNew(l$,V$,pC%):
C$<>""
C$,1)<>"#"
shell_MenuAdd(q%,C$,OB$)
shell_AttachColourSubMenu(MA%,q%,QB$):
shell_AttachSubMenu(MA%,q%,QB$):
_shell_MenuList_Init:_c_MenuList_HeaderSize%=4:_c_MenuList_ListTerm%=-1:_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0:=0
shell_MenuList_GetSysHandle(V$):
f%,q%,oA%:
_m_MenuList_DataBlk%<>-1
yf%=0:
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
$(oA%+_c_MenuList_HeaderSize%)=V$
q%=!oA%
:f%+=4:
shell_MenuList_GetIdentifier(q%):
f%,V$,oA%:
_m_MenuList_DataBlk%<>-1
`f%=0:
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
oA%!0=q%
%V$=$(oA%+_c_MenuList_HeaderSize%)
:f%+=4:
shell_MenuList_AddMenu(q%,V$):
f%,oA%:
_m_MenuList_DataBlk%=-1
shell_MenuList_CreateNewList
_m_MenuList_DataBlk%=
shell_HeapBlockExtend(_m_MenuList_DataBlk%,4)
:f%=_m_MenuList_NrMenus%*4:_m_MenuList_DataBlk%!f%=
shell_HeapBlockFetch(_c_MenuList_HeaderSize%+
(V$)+1):oA%=_m_MenuList_DataBlk%!f%:oA%!0=q%:$(oA%+_c_MenuList_HeaderSize%)=V$:_m_MenuList_NrMenus%+=1
&:I_m_MenuList_DataBlk%!(_m_MenuList_NrMenus%*4)=_c_MenuList_ListTerm%:
shell_MenuList_DeleteMenu(q%):
f%,oA%:
_m_MenuList_NrMenus%>0
_m_MenuList_NrMenus%=1
shell_MenuList_DestroyList
f%=0:
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
oA%!0=q%
&P-$(oA%+_c_MenuList_HeaderSize%)="":oA%!0=0
:f%+=4:
shell_MenuList_SaveList(c$):
f%,V$,oA%,u%:
_m_MenuList_DataBlk%<>-1
f%=0:u%=
(c$):
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:V$=$(oA%+_c_MenuList_HeaderSize%):
#u%,V$:f%+=4:
#u%,"":
("SetType "+c$+" FFF")
shell_MenuList_CreateNewList:
shell_MenuList_DestroyList:_m_MenuList_DataBlk%=
shell_HeapBlockFetch(8):_m_MenuList_DataBlk%!4=_c_MenuList_ListTerm%:
shell_MenuList_DestroyList:
_m_MenuList_DataBlk%<>-1
shell_HeapBlockReturn(_m_MenuList_DataBlk%):_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0
_shell_StaticList_Init:vA%=0:=0
shell_StaticWindowListAddHandle(n%):
a%,m%,h%:
vA%=0
2vA%=
shell_HeapBlockFetch(8):vA%!0=n%:vA%!4=-1
shell_SearchStatic(n%):
a%=-1
shell_SearchStatic(0):
a%=-1
Ym%=0:
vA%!m%<>-1:m%+=4:
:vA%=
shell_HeapBlockExtend(vA%,4):h%=vA%+m%:h%!0=n%:h%!4=-1
h%=vA%+a%:h%!0=n%
shell_RemoveStaticWindowFromList(b%):
a%,m%,y%:y%=
:m%=0:
vA%>0
vA%!m%=b%
:vA%!m%=0
:m%+=4:
vA%!m%<>-1
shell_UpdateStaticWindowHandle(sB%,HB%):
a%:a%=
shell_SearchStatic(sB%):vA%!a%=HB%:
shell_SearchStatic(n%):
y%,m%:y%=-1:m%=0:
vA%<>0
vA%!m%<>-1:
vA%!m%=n%
y%=m%
:m%+=4:
shell_IsWindowStatic(b%):
-1,-2:j%=
_U%!20:j%=
shell_SearchStatic(b%)>-1
_shell_DataLoad_Init:_c_DLoad_ICONBAR_ICON%=-1:_c_DLoad_RecSize%=24:_m_DLoad_FileType%=-1:_m_DLoad_FileName$="":_m_DLoad_DestIconHandle%=-1:_m_DLoad_DestWindowHandle%=-1:_m_DLoad_WindowName$="":_m_DLoad_CmdLineFileName$=
shell_OSReadCommandArg(1)
_m_DLoad_CmdLineFileName$<>""
'Z`_m_DLoad_LoadPending%=
:_m_DLoad_CmdLineFileType%=
shell_FileType(_m_DLoad_CmdLineFileName$)
_m_DLoad_LoadPending%=
:_m_DLoad_CmdLineFileType%=-1
_m_DLoad_Anchor%4:
_m_DLoad_DataBlk%4:!_m_DLoad_Anchor%=0:!_m_DLoad_DataBlk%=0:_EVNTS_DATALOAD_DATAOFFSET%=0:
_m_DLoad_WORKBUFFER%4:=0
DataLoad_GetAnchor:=_m_DLoad_Anchor%
shell_AttachDataLoad(b%,g%,jA%,e$,sG%):
c%,a%,A$,p%,YA%:
SJ%,m%,UJ%,VJ%,QE%:
b%=_IBAR_RIGHT%
b%=_IBAR_LEFT%
_c_DLoad_ICONBAR_ICON%=g%
jA%=jA%
1<<31
jA%=-1
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset3(A$,g%,jA%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
):c%=!_m_DLoad_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=jA%:
!_m_DLoad_DataBlk%=0
5!_m_DLoad_DataBlk%=
shell_HeapBlockFetch(
(e$)+1)
:p%=c%+20:
Evnts_UpdateData(p%,_m_DLoad_DataBlk%,_m_DLoad_DataOffset%,e$):
_m_DLoad_CmdLineFileName$<>""
_m_DLoad_LoadPending%
1<<31
QE%=jA%
1<<31
QE%=jA%
_m_DLoad_CmdLineFileType%=QE%
shell_FileExists(_m_DLoad_CmdLineFileName$)
shell_MessageSendDataLoad(QE%,_m_DLoad_CmdLineFileName$):_m_DLoad_LoadPending%=
shell_EvntHandle_DataLoad(aB%,ND%):_m_DLoad_FileType%=aB%!40:_m_DLoad_DestWindowHandle%=aB%!20:_m_DLoad_DestIconHandle%=aB%!24:_m_DLoad_FileName$=
shell_GetString(aB%+44):
DataLoad_OKToLoad(ND%)
DataLoad_ProcessDClickLoad
_m_DLoad_WindowName$=
shell_GetWindowIdentifier(_m_DLoad_DestWindowHandle%):
DataLoad_ProcessDragLoad
DataLoad_ProcessDClickLoad:
a%:a%=
Evnts_GetEvntListOffset("iconbar",_c_DLoad_ICONBAR_ICON%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
DataLoad_ProcessLoadRequest:
DataLoad_ProcessDragLoad:
a%,tI%,lB%,f%:c%=!_m_DLoad_Anchor%:tI%=c%!0:a%=
Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
a%=-1
Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1
(1<<31),_m_DLoad_Anchor%,_c_DLoad_RecSize%,
a%=-1
Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,-1,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
):c%=!_m_DLoad_Anchor%
a%>-1
DataLoad_ProcessLoadRequest
DataLoad_ProcessLoadRequest:
jA%,lB%:
a%>-1
Zc%=!_m_DLoad_Anchor%:c%+=a%:jA%=c%!16:lB%=jA%
(1<<31):
lB%=_m_DLoad_FileType%
jA%=-1
IvI%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
&400E7,18,_Q%,_Q%!4:
_U%!&64
yB%=-1:_U%!&64=_U%!&64
shell_LoadFile(vI%=_U%!&6C)
DataLoad_CallUserFN(yB%,_m_DLoad_FileType%,_Q%!36,c%):
_U%!&9C<>0
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
DataLoad_CheckType(SE%,ND%):
rJ%,m%,y%,h%,TE%,bA%:m%=0:y%=-1:TE%=
_U%!&64
_U%!&64=_U%!&64
SE%=-1
SE%!m%<>-1:h%=SE%!m%:
1<<31
h%=h%
1<<31:TE%=
h%=_m_DLoad_FileType%
y%=m%:
_U%!&64=_U%!&64
:m%+=4:
(_m_DLoad_FileType%>=4096)
y%=-1
y%<>-1
(S bA%=
:=bA%
DataLoad_CallUserFN(yB%,jA%,_file_size%,c%):
k%,hF%,VA$,iA%:hF%=c%!20:
hF%>-1
(g3iA%=!_m_DLoad_DataBlk%:VA$=$(iA%+hF%):
VA$<>""
(mgk%=
("FN"+VA$+"("+
yB%+","+
_m_DLoad_FileType%+","+
34+_m_DLoad_FileName$+
34+","+
_file_size%+")")
DataLoad_OKToLoad(ND%):
j%,nA$,oA$:
shell_OSVarGetVal("Alias$@RunType_"+
~_m_DLoad_FileType%,1):oA$=
shell_Branch(nA$):
shell_Leaf(oA$)="!"+
shell_GetAppName
shell_ListDataLoad:
i%,f%,YA%,m%,SE%,RJ%:
g%,s%,h$,WB$:i%=!_m_DLoad_Anchor%:YA%=i%!4:
Evnts_DebugListHeader ("DataLoad ","Window Icon Filetype NL LoadFN"):
_shell_DataSave_Init:
_m_DSave_Anchor%4:
_m_DSave_DataBlk%4:!_m_DSave_Anchor%=0:!_m_DSave_DataBlk%=0:_m_DSave_DataOffset%=0:_m_DSave_WindowName$="":_m_DSave_EvntOffset%=-1:_m_DSave_EvntList%=-1:_m_DSave_FileName$="":_m_DSave_FullFileName$=""
_m_DSave_NameIcon%=-1:_m_DSave_FileType%=-1:_m_DSave_DataAddress%=-1:_m_DSave_UserFN$="":_m_DSave_DestTaskHandle%=-1:_m_DSave_DestWindowHandle%=-1:_m_DSave_DestIconHandle%=-1:_m_DSave_MouseXCoord%=-1:_m_DSave_MouseYCoord%=-1:_m_DSave_MessageMyRef%=-1
_m_DSave_DragASpriteInProgress%=
:_m_DSave_DragInProgress%=
:_c_DSave_NotSpriteMess$="SHELLMSG29":_c_DSave_NoFileNameMess$="SHELLMSG28":_c_DSave_NotASpriteIcon$="SHELLMSG19":_c_DSave_NotAHeapBlockMess$="SHELLMSG21":_c_DSave_RecDiedMess$="SHELLMSG39"
N_c_DSave_ButtonTypeClick%=6:_c_DSave_DataSize%=&64:_c_DSave_RecSize%=32:=0
shell_DataSaveResetDragFlags:_m_DSave_DragASpriteInProgress%=
:_m_DSave_DragInProgress%=
shell_AttachDataSave(b%,g%,iF%,jA%,VG%,B$):
A$,a%,c%,YA%,p%:
shell_IconIsSprite(b%,g%)
shell_OK(
shell_MessageNoArgs(_c_DSave_NotSpriteMess$))
shell_IconSetButtonType(b%,g%,_c_DSave_ButtonTypeClick%):
iF%=0
iF%=_c_DSave_DataSize%
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
):c%=!_m_DSave_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=jA%:c%!20=VG%:c%!24=iF%:
!_m_DSave_DataBlk%=0
)D5!_m_DSave_DataBlk%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+28:
Evnts_UpdateData(p%,_m_DSave_DataBlk%,_m_DSave_DataOffset%,B$):
shell_EvntHandle_DataSaveStartDrag(b%,g%):
JA%,w%:_m_DSave_DragInProgress%=
:_m_DSave_WindowName$=
shell_GetWindowIdentifier(b%):_m_DSave_EvntOffset%=
Evnts_GetEvntListOffset(_m_DSave_WindowName$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
_m_DSave_EvntOffset%>=0
_m_DSave_EvntList%=!_m_DSave_Anchor%+_m_DSave_EvntOffset%:_m_DSave_FileType%=_m_DSave_EvntList%!16:_m_DSave_NameIcon%=_m_DSave_EvntList%!20:_m_DSave_DataAddress%=_m_DSave_EvntList%!24:w%=!_m_DSave_DataBlk%:JA%=_m_DSave_EvntList%!28
)_s_m_DSave_UserFN$=$(w%+JA%):_m_DSave_FileName$=
shell_IconGetData(b%,_m_DSave_NameIcon%):
_m_DSave_FileName$=""
shell_OK(
shell_MessageNoArgs(_c_DSave_NoFileNameMess$))
:_m_DSave_DragInProgress%=
shell_IconDragBox(b%,g%)
shell_EvntHandle_DataSaveEndDrag:
yA%,_A%,jF%:
_m_DSave_DragInProgress%
_m_DSave_DragASpriteInProgress%
&42401:_m_DSave_DragASpriteInProgress%=
:_m_DSave_DragInProgress%=
:yA%=
shell_HeapBlockFetch(30):
&400CF,,yA%:_m_DSave_DestTaskHandle%=yA%!4:_m_DSave_DestWindowHandle%=yA%!&C:_m_DSave_DestIconHandle%=yA%!16:_m_DSave_MouseXCoord%=yA%!0:_m_DSave_MouseYCoord%=yA%!4:
_m_DSave_DataAddress%>&8000
5jF%=
shell_HeapBlockInfo(_m_DSave_DataAddress%)-4
jF%=_m_DSave_DataAddress%
:_A%=
shell_HeapBlockFetch(60):_A%!0=60:_A%!&C=0:_A%!16=1:_A%!20=_m_DSave_DestWindowHandle%:_A%!24=_m_DSave_DestIconHandle%:_A%!28=_m_DSave_MouseXCoord%:_A%!32=_m_DSave_MouseXCoord%:_A%!36=jF%:_A%!40=_m_DSave_FileType%
$(_A%+44)=
shell_Leaf(_m_DSave_FileName$):
&400E7,18,_A%,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=_A%!8:
shell_HeapBlockReturn(yA%):
shell_HeapBlockReturn(_A%)
shell_DataSaveAck(FA%):
xG%,k%:xG%=FA%!&C:
xG%=_m_DSave_MessageMyRef%
J_m_DSave_FullFileName$=
shell_GetString(FA%+44):
_m_DSave_UserFN$<>""
("FN"+_m_DSave_UserFN$+"( "+
34+_m_DSave_FullFileName$+
34+" )")
shell_HeapBlockExists(_m_DSave_DataAddress%)
8,&A,_m_DSave_FullFileName$,_m_DSave_FileType%,,_m_DSave_DataAddress%,_m_DSave_DataAddress%+
shell_HeapBlockInfo(_m_DSave_DataAddress%)+1
shell_MessageNoArgs(_c_DSave_NotAHeapBlockMess$)
FA%!36>-1
FA%!16=3:FA%!0=256:FA%!20=_m_DSave_DestWindowHandle%:FA%!24=_m_DSave_DestIconHandle%:FA%!40=_m_DSave_FileType%:FA%!36=
shell_FileLength(_m_DSave_FullFileName$):FA%!&C=FA%!8:$(FA%+44)=_m_DSave_FullFileName$+
&600E7,18,FA%,_m_DSave_DestIconHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=FA%!8:
Evnts_GetLastWindowClicked<>
shell_GetDynamicWindowHandle
shell_MenuCloseAll
shell_PrintSave(_m_DSave_FullFileName$,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%,FA%!8,_m_DSave_FileType%):
_U%!336>0
+_U%!336-=1:
shell_DoSendPrintSave(&FFF)
shell_ListDataSave:
DataSave_SaveEvnts(u%):
shell_AckDataLoad(_Q%):
_Q%!&C<>_m_DSave_MessageMyRef%
shell_DataSaveDragInProgress:=_m_DSave_DragInProgress%
_shell_Sliders_Init:_m_Sliders_CurrentSliderHandle%=-1:_m_Sliders_DragInProgess%=
:_m_Sliders_LastXPos%=-1:_m_Sliders_LastYPos%=-1:_m_Sliders_SliderIcon%=-1:_m_Sliders_MaxLength%=-1:_m_Sliders_MaxHeight%=-1:_m_Slider_NotifyFN$=""
*?}_m_Slider_CurrentValue%=-1:
_m_Sliders_IconBlk%50:
_m_Sliders_DragBlk%50:
_m_Sliders_MPtrBlk%20:
_m_Sliders_WorkBlk%50:=0
shell_SliderSetValue(RB%,_value%):
c%,c%,yG%,zG%,RA%:
DA%,XA$,l%,eJ%,fJ%:
gJ%,hJ%,lJ%,k%,XA$:
T$,jB%,qC%,lF%:
RB%<0
c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=RB%:yG%=c%!&C:zG%=c%!16:RA%=c%!20:qC%=c%!36:XA$=$c%:DA%=
shell_GetWindowHandleList(XA$):b%=!DA%:
b%<=0
b%=DA%!4
:_m_Sliders_IconBlk%!0=b%:_m_Sliders_IconBlk%!4=zG%:
&400CE,,_m_Sliders_IconBlk%:nF%=_m_Sliders_IconBlk%!16:UE%=_m_Sliders_IconBlk%!8:VE%=_m_Sliders_IconBlk%!&C:oF%=_m_Sliders_IconBlk%!20:lF%=
(VE%)-
(oF%):mF%=nF%-UE%:_m_Sliders_IconBlk%!4=yG%
&400CE,,_m_Sliders_IconBlk%:
&400C4,,_m_Sliders_IconBlk%:_m_Sliders_IconBlk%!4=b%:
_value%>&64
_value%=&64
_value%<=0
_value%=0:
mF%>lF%
0_m_Sliders_IconBlk%!16=_m_Sliders_IconBlk%!8
_m_Sliders_IconBlk%!20=_m_Sliders_IconBlk%!&C
mF%>lF%
F_m_Sliders_IconBlk%!16=UE%+(nF%*(_value%/&64))-(UE%*(_value%/&64))
_m_Sliders_IconBlk%!20=VE%+(oF%*(_value%/&64))-(VE%*(_value%/&64))
:c%!36=_value%:
&400C2,,_m_Sliders_IconBlk%+4:
&400D1,b%,UE%,VE%,nF%,oF%:jB%=!_EVNTS_SLIDERS_DATA%:
jB%>0
T$=$(jB%+c%!32)
T$<>""
("FN"+T$+"("+
_value%+")")
RA%>=0
shell_IconPutData(b%,RA%,
(_value%),
shell_SliderGetHandle(b%,g%):
A$,c%,a%,RB%:A$=
shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
RB%=-1
RB%=a%
:=RB%
shell_AttachSliderHandler(b%,CH%,kD%,tC%,qF%,EH%,a$):
YJ%,a%,A$,c%,p%:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,kD%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
):c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=kD%
Nc%!16=CH%:c%!20=tC%:c%!24=qF%:c%!28=EH%:c%!36=-1:
!_EVNTS_SLIDERS_DATA%=0
2!_EVNTS_SLIDERS_DATA%=
shell_HeapBlockFetch(1)
:p%=c%+32:
Evnts_UpdateData(p%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%,a$):
shell_AttachClickSelect(b%,kD%,"_Sliders_BarClick"):
shell_AttachClickSelect(b%,CH%,"_Sliders_BackgroundClick"):
qF%>=0
shell_AttachBumpHandler(b%,tC%,qF%,EH%,0,&64,1,
,"_Sliders_Bump","")
_Sliders_Bump(dD%,rC%):
b%,g%,c%,SB%,NA%,PB%:
y%,RB%,A$,lD%,mD%:b%=
shell_GetLastWindowClicked:g%=
shell_GetLastIconClicked:A$=
shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:PB%=c%!0:NA%=c%!4:SB%=_m_Evnts_HeaderSize%:y%=
2lD%=c%!(SB%+24):mD%=c%!(SB%+28):
A$=$(c%+SB%)
lD%=g%
mD%=g%
:RB%=SB%
:SB%+=_EVNTS_SLIDERS_REC_SIZE%:
SB%>=PB%
shell_SliderSetValue(RB%,dD%)
(dD%)
shell_HandleSlider(b%,g%):
A$,c%,IH%,RA%:
SB%,T$,jB%,qC%,a%:A$=
shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
a%=-1
^g%+=1:a%=
Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
:_m_Sliders_CurrentSliderHandle%=a%:
a%>-1
YSB%=c%+a%:IH%=!(SB%+16):RA%=!(SB%+20):qC%=!(SB%+36):jB%=!_EVNTS_SLIDERS_DATA%:
jB%>0
T$=$(jB%+SB%!32)
:_m_Sliders_DragBlk%!0=b%:_m_Sliders_DragBlk%!4=IH%:
&400CE,,_m_Sliders_DragBlk%:_m_Sliders_MaxLength%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!8:_m_Sliders_MaxHeight%=_m_Sliders_DragBlk%!20-_m_Sliders_DragBlk%!&C:_m_Sliders_SliderIcon%=g%
_m_Sliders_DisplayIcon%=RA%:_m_Slider_NotifyFN$=T$:_m_Slider_CurrentValue%=qC%:_m_Sliders_DragBlk%!0=b%:
&400CB,,_m_Sliders_DragBlk%:PA%=_m_Sliders_DragBlk%!4-_m_Sliders_DragBlk%!20:QA%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!24
_m_Sliders_DragBlk%!4=g%:
&400CE,,_m_Sliders_DragBlk%:_m_Sliders_DragBlk%!4=7:_m_Sliders_DragBlk%!8+=PA%:_m_Sliders_DragBlk%!&C+=QA%:_m_Sliders_DragBlk%!16+=PA%:_m_Sliders_DragBlk%!20+=QA%:_m_Sliders_DragBlk%!24=_m_Sliders_DragBlk%!8
+9__m_Sliders_DragBlk%!28=_m_Sliders_DragBlk%!&C:
_m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
+<u_m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!20
_m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!28+_m_Sliders_MaxHeight%
&400D0,,_m_Sliders_DragBlk%:_m_Sliders_DragInProgess%=
shell_Slider:
b%,nD%,PA%,e%,k%,XE%,QA%:
&400CF,,_m_Sliders_MPtrBlk%:b%=_m_Sliders_MPtrBlk%!&C:nD%=!_m_Sliders_MPtrBlk%:XE%=_m_Sliders_MPtrBlk%!4:
nD%<>_m_Sliders_LastXPos%
XE%<>_m_Sliders_LastYPos%
_m_Sliders_LastXPos%=nD%:_m_Sliders_LastYPos%=XE%:e%=_m_Sliders_WorkBlk%:!e%=b%:
&400CB,,e%:PA%=nD%-e%!4:QA%=XE%-e%!16:e%!4=_m_Sliders_SliderIcon%:
&400CE,,e%:
&400C4,,e%:e%!4=b%:
_m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
e%!16=PA%:
&400C2,,e%+4:
&400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20:_value%=((PA%-e%!8)*&64)/_m_Sliders_MaxLength%:
shell_SliderSetValue(_m_Sliders_CurrentSliderHandle%,_value%)
e%!20=QA%:
&400C2,,e%+4:
&400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20+_m_Sliders_MaxHeight%:_value%=((QA%-e%!&C)*&64)/_m_Sliders_MaxHeight%
_m_Slider_NotifyFN$<>""
+s3k%=
("FN"+_m_Slider_NotifyFN$+"("+
_value%+")")
:_m_Sliders_LastXPos%=nD%
shell_SliderGetValue(RB%):
c%,qC%:c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=RB%:qC%=c%!36:=qC%
_Sliders_BackgroundClick(b%,g%):
k%:k%=
_Sliders_Drag(b%,g%):=0
_Sliders_Drag(b%,g%):
c%,NA%,z%,f%,A$:
y%,PB%,RB%,RA%:c%=!_EVNTS_SLIDERS_ANCHOR%:z%=_EVNTS_SLIDERS_REC_SIZE%:PB%=c%!0:NA%=c%!4:f%=_m_Evnts_HeaderSize%:A$=
shell_GetWindowIdentifier(b%):y%=
$(c%+f%)=A$
c%!(f%+16)=g%
:kD%=c%!(f%+&C):RA%=c%!(f%+20):RB%=f%
:f%+=z%:
f%>=PB%
shell_IconDragBox(b%,kD%):
RA%<>-1
shell_Slider
shell_SliderDragInProgress:=_m_Sliders_DragInProgess%
shell_SliderDragEnd:_m_Sliders_DragInProgess%=
_Sliders_BarClick(d%,t%):
shell_IconDragBox(d%,t%):=0:B
_shell_Errors_Init:_ERRNR_NONFATAL=&D00:_ERRNR_CLAIMMEM=&903:
_ERRORS_ERR_BLK%256:=0
shell_Error:
LA%,FA$:
&606C2:
<>_ERRNR_NONFATAL
<>_ERRNR_CLAIMMEM
1<<31)
shell_FatalError
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" (Internal error code "+
+")")
$:LA%=
$,"in "+
34+"EvntShell:ShellLib"):
LA%>0
$,LA%-1)
=FA$+=" (Internal error code "+
+")":
shell_ErrorBox(FA$)
shell_DataSaveResetDragFlags:
shell_OK(CB$):
_ERRNR_NONFATAL,CB$
shell_FatalError:
&606C2:
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
1<<31)
shell_Exit
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" Internal error code "+
shell_ErrorBox(EB$):
oB%:!_ERRORS_ERR_BLK%=
:$(_ERRORS_ERR_BLK%+4)=EB$+
=_ERRNR_NONFATAL
=_ERRNR_CLAIMMEM
&600DF,_ERRORS_ERR_BLK%,17,"Message from "+
shell_GetAppName
&600DF,_ERRORS_ERR_BLK%,1,
shell_GetAppName
_shell_WindowList_Init:=0
shell_TemplatesInit(w$,
PI%):
oD%,sF%,LH%,MB%:
MH%,LA%,ZE%,f$,IA%,NH%,j%:
OH%,pD%:ZE%=
shell_HeapBlockFetch(&C):LA%=0:IA%=0:MH%=
shell_FileLength(w$):WI%=
shell_HeapBlockFetch(MH%):oD%=WI%:
shell_TemplateFileInfo(w$,MB%,IA%,j%):
shell_HeapBlockFetch(4+(20*IA%)):_U%!4=qD%:QH%=
shell_HeapBlockFetch(MB%):sF%=QH%:LH%=QH%+MB%:IA%=0:pD%=4:
&600D9,,w$
;NH%:
shell_MessageTwoArgs("SHELLMSG34","template",w$)
:$ZE%="*":
&400DB,,oD%,sF%,LH%,_U%!&E8,ZE%,LA%
,,sF%,,,f$,LA%:
LA%<>0
\qD%!pD%=oD%:$(qD%+pD%+4)=f$:qD%!(pD%+16)=-1:pD%+=20:OH%=(oD%!84)*32:oD%+=(88+OH%):IA%+=1
LA%=0:
&400DA:_U%!0=IA%
shell_MessageTwoArgs("SHELLMSG35","template",w$)
shell_MessageTwoArgs("SHELLMSG36",w$,"template")
shell_HeapBlockReturn(ZE%):PI%=0:!qD%=IA%:
shell_WindowLoaded(I$):
a%,uF%:a%=
shell_GetWindowListOffset(I$):
a%>=0
shell_GetWindowListOffset(I$):
a%,IA%,TB%,m%:
(I$)>&B
shell_MessageOneArg("SHELLMSG02",I$)
iIA%=
shell_GetNrTemplatesLoaded:TB%=
shell_WindowListGetAddr+4:m%=0:a%=-1:
$(((TB%)+(20*m%))+4)=I$
a%=m%*20
:m%+=1:
a%<>-1
m%>(IA%-1):=a%
shell_GetWB(I$):
a%,QB%,TB%:a%=
shell_GetWindowListOffset(I$):
99,I$+":"+
*TB%=
shell_WindowListGetAddr+4:
a%>=0
QB%=TB%!a%
shell_MessageOneArg("SHELLMSG03",I$)
:=QB%
shell_GetWindowHandleList(I$):
a%,DA%,TB%:a%=
shell_GetWindowListOffset(I$):TB%=
shell_WindowListGetAddr+4:
a%>=0
DA%=!(TB%+a%+16)
shell_MessageOneArg("SHELLMSG03",I$)
:=DA%
shell_CreateWindowStatic(I$,
nC%:nC%=
shell_GetWB(I$):nC%!64=_U%!16:
&400C1,,nC%
shell_StaticWindowListAddHandle(b%):
shell_WindowListAddHandle(I$,b%):
shell_WindowListAddHandle(I$,b%):
SH%,EA%,f%,xF%:
I$=""
99,"Bad window name passed to WindowListAddHandle"
-1VSH%=
shell_GetWindowListOffset(I$)+16:EA%=
shell_WindowListGetAddr+4+SH%:
!EA%=-1
-99!EA%=
shell_HeapBlockFetch(8):f%=!EA%:f%!0=b%:f%!4=-1
EA%!16<>-1
-H/DA%=!EA%:f%=0:xF%=
DA%!f%<>-1:
DA%!f%=0
DA%!f%=b%:xF%=
:f%+=4:
-^f!EA%=
shell_HeapBlockExtend(!EA%,4):TB%=!EA%:f%=0:
TB%!f%<>-1:f%+=4:
:TB%!(f%+0)=b%:TB%!(f%+4)=-1
shell_GetWindowIdentifier(n%):
EA%,IA%,f%,m%,BA$:IA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:BA$="":
-1,-2:BA$="iconbar"
EA%!16<>-1
-|8DA%=EA%!16:f%=0:
DA%!f%<>-1:
DA%!f%=n%
BA$=$(EA%+4)
f%+=4:
:m%+=1:EA%+=20:
BA$<>""
m%=IA%
:=BA$
shell_RemoveHandleFromWindowList(n%):
EA%,IA%,I%,f%:IA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:
EA%!16<>-1
,DA%=EA%!16:f%=0:
DA%!f%<>-1:
DA%!f%=n%
DA%!f%=0
:f%+=4:
:EA%+=20:
shell_UpdateWindowHandleList(sB%,HB%):
EA%,IA%,I%,f%:IA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:
EA%!16<>-1
7DA%=EA%!16:f%=0:
DA%!f%<>-1:
DA%!f%=sB%
DA%!f%=HB%
f%+=4:
:EA%+=20:
shell_GetNrTemplatesLoaded:
EA%:EA%=
shell_WindowListGetAddr:=!EA%
shell_WindowListGetAddr:=_U%!4
shell_WindowHandleKnown(b%):
j%,EA%,y%,I%,IA%,n%:
shell_GetDynamicWindowHandle
YIA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:
EA%!16<>-1
2DA%=EA%!16:f%=0:
DA%!f%<>-1:n%=DA%!f%:
n%=b%
:f%+=4:
:EA%+=20:
shell_WindowListPrint:
EA%,IA%,I%,f%:IA%=
shell_GetNrTemplatesLoaded:
shell_TraceOn:EA%=
shell_WindowListGetAddr+4:
EA%!16=-1
DA%=EA%!16:f%=0:
DA%!f%<>-1:f%+=4:
:EA%+=20:
_shell_Strings_Init:=0
shell_GetZeroTerminatedString(dI%):
"WriteN",dI%,0
C$:=C$
shell_GetString(TH%):
rA$,bE%:
((TH%?bE%)>31
bE%<&FF):rA$+=
(TH%?bE%):bE%+=1:
:=rA$
shell_StringStripTrailing(C$,i$):
C$,1)=i$:C$=
(C$)-1):
shell_StringStripLeading(C$,i$):
C$,1)=i$:C$=
C$,2):
shell_StringStripAll(C$,i$):
H,I:H=
C$,i$):
C$,I-1)+
C$,I+1)
H:=C$
shell_StringPadTrailing(C$,i$,eB%):
(C$)<eB%:C$=C$+
(C$),i$):
shell_StringPadLeading(C$,i$,eB%):
(C$)<eB%:C$=
(C$),i$)+C$:
shell_StringUpperCase(C$):
(C$)>0
(C$):
C$,s%,1)>="a"
C$,s%,1)<="z"
C$,s%,1)=
C$,s%,1))
shell_StringExchange(C$,YA$,IB$):
C$,YA$)
0VB%=
C$,YA$):C$=
C$,VB%-1)+IB$+
C$,VB%+
shell_StringArrayGetLongest(A$(),OE%):
s%,cE%:cE%=0:
(A$(s%))>cE%
(A$(s%))
s%:=cE%
mem_to_string(FA%,a%,hI%):
FA%?a%<>hI%:C$+=
(FA%?a%):a%+=1:
_shell_Messages_Init:
_MESSAGES_WORK_BLK%256:_MESSAGE_QUIT=0:_MESSAGE_DATASAVE=1:_MESSAGE_DATASAVEACK=2:_MESSAGE_DATALOAD=3:_MESSAGE_DATALOADACK=4:_MESSAGE_RAMFETCH=6:_MESSAGE_RAMTRANSMIT=7:_MESSAGE_PREQUIT=8:_MESSAGE_PALETTECHANGE=9
_MESSAGE_SAVEDESKTOP=&A:_MESSAGE_SHUTDOWN=&E:_MESSAGE_HELP=&502:_MESSAGE_MENUWARNING=&400C0:_MESSAGE_MODECHANGE=&400C1:_MESSAGE_TASKINIT=&400C2:_MESSAGE_TASKCLOSEDOWN=&400C3:_MESSAGE_TASKNAMEIS=&400C7:_MESSAGE_DESKFONT_CHANGED=&400CF
`_MESSAGE_COLOURPICKERCOLOURCHOICE=&47700:_MESSAGE_COLOURPICKERCLOSEDIALOGUEREQUEST=&47702:=0
shell_BroadcastMessage(iI%,GA$):
WH%:WH%=(
(GA$)+30)
3:_MESSAGES_WORK_BLK%!&C=0:_MESSAGES_WORK_BLK%!16=iI%:$(_MESSAGES_WORK_BLK%+20)=GA$+
(0):_MESSAGES_WORK_BLK%!0=WH%:
&600E7,17,_MESSAGES_WORK_BLK%,0:
_shell_Memory_Init:=0
shell_HeapManagerInit(H$,kI%):
_heap_code%900:
("LOAD "+H$+"heapcode "+
~_heap_code%):
_heap_code%+0,kI%:
shell_HeapBlockExtend(XH%,zF%):
_heap_code%+&C,XH%,zF%:=XH%
shell_HeapBlockFetch(zF%):
_heap_code%+4,XB%,zF%:=XB%
shell_HeapBlockReturn(
rA%):
shell_HeapBlockExists(rA%)
_heap_code%+8,rA%
rA%=0:
shell_HeapBlockExists(XB%):
XB%<&8000
99,"No heapblock defined at this address"
/O&k%=
shell_HeapBlockInfo(XB%):
shell_HeapBlockInfo(rA%):
29,6,!(_heap_code%+28),rA%
,,,P:=P
shell_HeapBlockExtendMid(rA%,mB%,ZH%):
aH%:aH%=
shell_HeapBlockInfo(rA%):
_heap_code%+&C,rA%,mB%:
&400F1,_U%!&94,rA%+ZH%,_U%!&94,rA%+ZH%+mB%,aH%-mB%:=rA%:B
_shell_Poll_Init:
bH%256:_POLL_EARLIEST_TIME%=0:_POLL_INTERVAL%=&64:_POLL_PREVINTERVAL%=0:
shell_PollSetInterval(_POLL_INTERVAL%):
shell_PollSetPrevInterval(_POLL_INTERVAL%):
_POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%:=0
shell_PollIdle(CB%,MD%):
_U%!&64
"WimpExt_PrePoll"
&400E1,CB%,bH%,_POLL_EARLIEST_TIME%
_U%!&64
"WimpExt_Action",_U%!&94,bH%,VC%
shell_PollSetInterval(AG%):_POLL_INTERVAL%=AG%:
shell_PollSetPrevInterval(AG%):_POLL_PREVINTERVAL%=AG%:
shell_PollReadInterval:=_POLL_INTERVAL%
shell_PollReadPrevInterval:=_POLL_PREVINTERVAL%
shell_Poll_I(CB%,MD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,CB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,VC%
&81686,VC%,,MD%:=VC%
poll(CB%,MD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,CB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,rA%
=rA%:B
_shell_IntHelp_Init:
QJ%60:_IntHelp_IsOn%=
shell_InteractiveHelp(_Q%):
L$,Z$,O$,_B%,BG%,VB$,o%:
shell_EvntHandle_HelpTags(_Q%!32,_Q%!36,L$):O$=
shell_IconGetValidation(_Q%!32,_Q%!36):
O$<>""
shell_StringUpperCase(
O$,1))="I"
O$,";"):
_B%=0
O$,2)
O$,2,_B%-2)
shell_StringUpperCase(O$),
shell_StringUpperCase(";i")):BG%=
shell_StringUpperCase(O$),
shell_StringUpperCase(";"),_B%+1):
_B%>0
BG%>0
O$,_B%+2,BG%-_B%-2)
O$,_B%+2)
L$<>""
_Q%!16=&503:_Q%!&C=_Q%!8:Z$=
shell_MessageLookup(L$,"",""):Z$=
shell_MessageExpand(Z$):$(_Q%+20)=Z$:!_Q%=(
Z$+25)
&400E7,17,_Q%,_Q%!4
shell_InteractiveHelpOn:_IntHelp_IsOn%=
shell_InteractiveHelpOff:_IntHelp_IsOn%=
_shell_PopUps_Init:=0
_shell_Bumpers_Init:_c_Bumpers_ShiftKeyFactor%=2:_c_Bumpers_CtrlKeyFactor%=4:_c_Bumpers_ShiftCtrlKeyFactor%=8:=0
shell_AttachBumpHandler(b%,g%,dH%,eH%,pB%,qB%,qI%,fH%,tA$,uA$):
c%,a%,A$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,dH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=dH%:c%!16=qI%
8c%!20=g%:c%!24=pB%:c%!28=qB%:
fH%=-1
c%!40=1
c%!40=0
!_EVNTS_BUMP_DATA%=0
/!_EVNTS_BUMP_DATA%=
shell_HeapBlockFetch(1)
:p%=c%+32:
tA$<>""
Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,tA$)
!p%=-1
:p%=c%+36:
uA$<>""
Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,uA$)
!p%=-1
Evnts_GetEvntListOffset(A$,eH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=eH%:
fH%=-1
c%!40=1
c%!40=0
c%!40=c%!40
(1<<2):
shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
A$,a%,i%,eE%:
kB%,QD%,pB%,qB%,rC%,CG%,DG%:
RD%,FG%,_new_val$,_new_val%,p%,ZA$,aA$:
bA$:A$=
shell_GetWindowIdentifier(_window_handle%)
Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
):rC%=
shell_GetLastMouseButton:
a%>=0
8i%=!_EVNTS_BUMP_ANCHOR%+a%:
i%!40
(1<<2)
i%!40
(1<<0)
i%-=_EVNTS_BUMP_REC_SIZE%
IkB%=i%!16:QD%=i%!20:pB%=i%!24:qB%=i%!28:CG%=
(-1):DG%=
(-2):
*kB%=kB%*_c_Bumpers_ShiftCtrlKeyFactor%
kB%=kB%*_c_Bumpers_ShiftKeyFactor%
kB%=kB%*_c_Bumpers_CtrlKeyFactor%
:jB%=!_EVNTS_BUMP_DATA%:
jB%>0
i%!32>=0
ZA$=$(jB%+i%!32)
i%!36>=0
aA$=$(jB%+i%!36)
:bA$=
shell_IconGetData(_window_handle%,QD%):
aA$<>""
)RD%=
("FN"+aA$+"( "+
34+bA$+
34+" )")
(bA$)
rC%=_MSE_ADJUSTBUT
_new_val%=RD%+kB%
_new_val%=RD%-kB%
rC%=_MSE_ADJUSTBUT
_new_val%=RD%-kB%
_new_val%=RD%+kB%
_new_val%>qB%
_new_val%=qB%
_new_val%<pB%
_new_val%=pB%
_new_val%>qB%
_new_val%=pB%
_new_val%<pB%
_new_val%=qB%
ZA$<>""
0_new_val$=
("FN"+ZA$+"(_new_val%,"+
rC%+")")
_new_val$=
_new_val%
shell_IconPutData(_window_handle%,QD%,_new_val$,
shell_ListBumpers:
HA%,r%,z%,f%,NA%,JB%:
lD%,mD%,xA$,NB$,GA%,s%,h$:
jH%,QD%,pB%,qB%:r%=!_EVNTS_BUMP_ANCHOR%:z%=_EVNTS_BUMP_REC_SIZE%:NA%=(r%!4)/2:
Evnts_DebugListHeader ("Bump ","Window Inc Dec Disp Step Lower Upper Value Change FN"):
f%=_m_Evnts_HeaderSize%:
NA%:A$=$(r%+f%):lD%=r%!(f%+&C):mD%=r%!(f%+&C+_EVNTS_BUMP_REC_SIZE%):jH%=r%!(f%+16):QD%=r%!(f%+20):pB%=r%!(f%+24):qB%=r%!(f%+28):GA%=!_EVNTS_BUMP_DATA%:
GA%>0
1</xA$=$(GA%+r%!(f%+32)):NB$=$(GA%+r%!(f%+36))
shell_StringPadTrailing(A$,".",&C):h$+=" "+
shell_StringPadLeading(
lD%," ",3):h$+=" "+
shell_StringPadLeading(
mD%," ",3):h$+=" "+
shell_StringPadLeading(
QD%," ",4):h$+=" "+
shell_StringPadLeading(
jH%," ",4)
h$+=" "+
shell_StringPadLeading(
pB%," ",5):h$+=" "+
shell_StringPadLeading(
qB%," ",5):h$+=" "+xA$:f%+=_EVNTS_BUMP_REC_SIZE%*2:
_shell_Pointer_Init:_c_PointerIn_RecSize%=20:
_m_PointerIn_Anchor%4:
_m_PointerIn_DataBlk%4:!_m_PointerIn_Anchor%=0:!_m_PointerIn_DataBlk%=0:_m_PointerIn_DataOffset%=0:_c_PointerOut_RecSize%=20:
_m_PointerOut_Anchor%4:
_m_PointerOut_DataBlk%4
!_m_PointerOut_Anchor%=0:!_m_PointerOut_DataBlk%=0:_m_PointerOut_DataOffset%=0:_m_Pointer_SetShape_Reason%=36:_m_Pointer_SetShape_Ptr_Nr%=2:_m_Pointer_ShapeChanged%=
:_m_Pointer_CurrentShape$="":
_m_Pointer_WorkBuffer%4:
_m_Pointer_GetInfoBlk%20:=0
shell_AttachPointerEnteringWindowHandler(b%,B$):
c%,a%,A$,p%,YA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
):c%=!_m_PointerIn_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!_m_PointerIn_DataBlk%=0
9!_m_PointerIn_DataBlk%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%,B$)
shell_EvntHandle_PointerEnteringWindow(_window_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
a%>=0
ti%=!_m_PointerIn_Anchor%+a%:JA%=i%!16:w%=!_m_PointerIn_DataBlk%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle% )")
shell_AttachPointerLeavingWindowHandler(b%,B$):
c%,a%,A$,p%,YA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
):c%=!_m_PointerOut_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!_m_PointerOut_DataBlk%=0
:!_m_PointerOut_DataBlk%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%,B$)
shell_EvntHandle_PointerLeavingWindow(_window_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
a%>=0
vi%=!_m_PointerOut_Anchor%+a%:JA%=i%!16:w%=!_m_PointerOut_DataBlk%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle% )")
shell_PointerResetShape:
shell_PointerChangeShape(yA$,kH%,tJ%):
&400E9,_m_Pointer_SetShape_Reason%,,yA$,_m_Pointer_SetShape_Ptr_Nr%,kH%,kH%:_m_Pointer_ShapeChanged%=
:_m_Pointer_CurrentShape$=yA$:
shell_PointerResetShape:
_m_Pointer_ShapeChanged%=
("Pointer"):_m_Pointer_ShapeChanged%=
:_m_Pointer_CurrentShape$=""
shell_PointerGetCurrentShape:=_m_Pointer_CurrentShape$
shell_PointerIsChanged:=_m_Pointer_ShapeChanged%
shell_PointerGetPosition(
cA%):
&400CF,,_m_Pointer_GetInfoBlk%:dA%=_m_Pointer_GetInfoBlk%!0:cA%=_m_Pointer_GetInfoBlk%!4:
shell_PointerGetWindow(
&400CF,,_m_Pointer_GetInfoBlk%:b%=_m_Pointer_GetInfoBlk%!&C:
shell_PointerGetIcon(
&400CF,,_m_Pointer_GetInfoBlk%:g%=_m_Pointer_GetInfoBlk%!16:
shell_PointerGetMouseButton(
rC%):
&400CF,,_m_Pointer_GetInfoBlk%:rC%=_m_Pointer_GetInfoBlk%!8:
shell_PointerIsBelowWindowCentre(b%):
j%,eA%,fA%,lA%,mA%,dA%,cA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
shell_PointerGetPosition(dA%,cA%):
cA%<(fA%+(mA%-fA%)/2)
shell_PointerIsAboveWindowCentre(b%):
j%,eA%,fA%,lA%,mA%,dA%,cA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
shell_PointerGetPosition(dA%,cA%):
cA%>=(fA%+(mA%-fA%)/2)
shell_PointerIsRightOfWindowCentre(b%):
j%,eA%,fA%,lA%,mA%,dA%,cA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
shell_PointerGetPosition(dA%,cA%):
dA%>=(eA%+(lA%-eA%)/2)
shell_PointerIsLeftOfWindowCentre(b%):
j%,eA%,fA%,lA%,mA%,dA%,cA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
shell_PointerGetPosition(dA%,cA%):
dA%<(eA%+(lA%-eA%)/2)
shell_PointerSaveEvnts(u%):
Evnts_SaveEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
Evnts_SaveEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
shell_PointerLoadEvnts(u%):
Evnts_LoadEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
Evnts_LoadEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
shell_PointerGetMovementVector(lH%,mH%,dA%,cA%,
bB%):YB%=dA%-lH%:bB%=cA%-mH%:KC%=
:LC%=
:NC%=
:MC%=
(YB%)>
(bB%)
dA%>lH%
NC%=
cA%<mH%
LC%=
YB%<>0
bB%<>0
_m_evnts_DragIconLastScrollUp%=KC%:_m_evnts_DragIconLastScrollDown%=LC%:_m_evnts_DragIconLastScrollLeft%=MC%:_m_evnts_DragIconLastScrollRight%=NC%:_m_evnts_DragIconLastDX%=YB%:_m_evnts_DragIconLastDY%=bB%
shell_PointerGetLastMovementVector(
bB%):KC%=_m_evnts_DragIconLastScrollUp%:LC%=_m_evnts_DragIconLastScrollDown%:MC%=_m_evnts_DragIconLastScrollLeft%:NC%=_m_evnts_DragIconLastScrollRight%:YB%=_m_evnts_DragIconLastDX%
"bB%=_m_evnts_DragIconLastDY%:
shell_PointerLimit(b%):
shell_MouseLimit(b%):
shell_PointerRemoveLimits:
shell_MouseRemoveLimits:
_shell_CaretMove_Init:nH%=20:
sD%4:
tD%4:!sD%=0:!tD%=0:AJ%=0:qH%=20:
uD%4:
vD%4:!uD%=0:!vD%=0:EJ%=0:=0
shell_AttachCaretPreMoveHandler(b%,B$):
c%,a%,A$,p%,YA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,sD%,nH%,
):c%=!sD%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!tD%=0
3e'!tD%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,tD%,AJ%,B$)
shell_EvntHandle_CaretPreMove(_window_handle%,_icon_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
3~8a%=
Evnts_GetEvntListOffset(A$,-1,sD%,nH%,
a%>=0
`i%=!sD%+a%:JA%=i%!16:w%=!tD%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle%, _icon_handle% )")
shell_AttachCaretPostMoveHandler(b%,B$):
c%,a%,A$,p%,YA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,uD%,qH%,
):c%=!uD%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!vD%=0
'!vD%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,vD%,EJ%,B$)
shell_EvntHandle_CaretPostMove(_window_handle%,_icon_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
Evnts_GetEvntListOffset(A$,-1,uD%,qH%,
a%>=0
`i%=!uD%+a%:JA%=i%!16:w%=!vD%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle%, _icon_handle% )")
_shell_Caret_Init:=0
shell_CaretSetPosition(SA%,EB%,FJ%,GJ%,UA%,VB%):
&400D2,SA%,EB%,FJ%,GJ%,UA%,VB%:
shell_IconEnsureVisible(SA%,EB%):
shell_CaretReadPosition(
VB%):
BA%:BA%=
shell_HeapBlockFetch(24):
&400D3,,BA%:SA%=BA%!0:EB%=BA%!4:PC%=BA%!8:QC%=BA%!&C:VB%=BA%!20:
shell_HeapBlockReturn(BA%):
shell_CaretSetRight(d%,t%):
&400D2,d%,t%,-1,-1,-1,
shell_IconGetData(d%,t%)):
shell_CaretPutFirstIcon(d%):
BA%:BA%=
shell_HeapBlockFetch(&800):
&400D6,d%,BA%,&40E000,&E000:
!BA%<>-1
shell_CaretSetRight(d%,!BA%):
shell_IconEnsureVisible(d%,!BA%)
shell_HeapBlockReturn(BA%):
shell_CaretPutLastIcon(d%):
shell_CaretMoveCaret(d%,1):
shell_CaretPutNextIcon(d%):
shell_CaretMoveCaret(d%,2):
shell_CaretPutPrevIcon(d%):
shell_CaretMoveCaret(d%,3):
shell_CaretMoveCaret(d%,CA%):
BA%,sH%,m%,f%,AC%:m%=0:f%=0:BA%=
shell_HeapBlockFetch(&800):
&400D3,,BA%:
BA%!4<>-1
4f?sH%=BA%!4:
&400D6,d%,BA%,&40E000,&E000:
BA%!m%=sH%
f%=m%
m%+=4:
BA%!m%=-1:
0:AC%=!BA%
1:AC%=BA%!(m%-4)
BA%!(f%+4)<>-1
AC%=BA%!(f%+4)
AC%=!BA%
AC%=BA%!(f%-4)
AC%=BA%!(m%-4)
&400D2,d%,AC%,-1,-1,-1,
shell_IconGetData(d%,AC%)):
shell_IconEnsureVisible(d%,AC%)
shell_HeapBlockReturn(BA%):
_shell_ExReg_Init:_m_ExReg_FontMenu_Loaded%=
:_m_ExReg_Fonts_Loaded%=
:_m_ExReg_DrawLib_Loaded%=
:_m_ExReg_OLELib_Loaded%=
:_m_ExReg_FontLib_Loaded%=
:_m_ExReg_FontPickLib_Loaded%=
:_m_ExReg_ShareBan_Loaded%=
:_m_ExReg_ColourMenu_Loaded%=
shell_ExReg_FontMenu_Loaded:=_m_ExReg_FontMenu_Loaded%
shell_ExReg_FontMenu_Loaded:_m_ExReg_FontMenu_Loaded%=
shell_ExReg_ShareBan_Loaded:=_m_ExReg_ShareBan_Loaded%
shell_ExReg_ShareBan_Loaded:_m_ExReg_ShareBan_Loaded%=
shell_ExReg_Fonts_Loaded:=_m_ExReg_Fonts_Loaded%
shell_ExReg_Fonts_Loaded:_m_ExReg_Fonts_Loaded%=
shell_ExReg_DrawLib_Loaded:=_m_ExReg_DrawLib_Loaded%
shell_ExReg_DrawLib_Loaded:_m_ExReg_DrawLib_Loaded%=
shell_ExReg_OLELib_Loaded:=_m_ExReg_OLELib_Loaded%
shell_ExReg_OLELib_Loaded:_m_ExReg_OLELib_Loaded%=
shell_ExReg_FontLib_Loaded:=_m_ExReg_FontLib_Loaded%
shell_ExReg_FontLib_Loaded:_m_ExReg_FontLib_Loaded%=
shell_ExReg_ColourMenu_Loaded:=_m_ExReg_ColourMenu_Loaded%
shell_ExReg_ColourMenu_Loaded:_m_ExReg_ColourMenu_Loaded%=
_shell_Sprites_Init:_c_Sprites_AreaHeaderSize%=16:_c_Sprites_ReasonInitArea%=9:_c_Sprites_ReasonLoad%=&A:_c_Sprites_ReasonGetSize%=40:_c_Sprites_ReasonRemoveLeftWastage%=54
]_c_Sprites_BadNameOrPtr$="Either a sprite name or a pointer to a sprite must be given":=0
shell_SpritesGetHeaderSize:=_c_Sprites_AreaHeaderSize%
shell_SpriteAreaLoad(N$):
WC%,S%,T%:S%=
(N$):T%=
#S%+16:
#S%:WC%=
shell_HeapBlockFetch(T%):!WC%=T%:WC%!4=0:WC%!8=_c_Sprites_AreaHeaderSize%:WC%!&C=_c_Sprites_AreaHeaderSize%:
46,521,WC%:
46,522,WC%,N$:=WC%
shell_UserSpritesBase:=_U%!16
shell_SpriteGetPtr(TD%,f$):
jE%,f%:jE%=
shell_HeapBlockFetch(21):$jE%=f$:
46,280,TD%,jE%
,,f%:
shell_HeapBlockReturn(jE%):=f%
shell_NameOfFirstSprite(PB$):
X%,N%,cA$:X%=
(PB$):
#X%=4:N%=
#X%:N%+=
#X%*256:N%+=
#X%*65536:N%+=
#X%*&1000000:
#X%=N%:cA$="":
&B:cA$+=
#X%):
#X%:=cA$
shell_SpriteRename(TD%,RB$,SB$):
46,512+26,TD%,
shell_SpriteGetPtr(TD%,RB$),SB$:
shell_SpriteAreaSave(TD%,N$):
46,512+&C,TD%,N$:
shell_SpriteExists(TA%,M$):
TA%=1
IG%=40
IG%=256+40
46,IG%,TA%,
shell_StringLowerCase(M$):=
shell_SpriteExistsInUserArea(M$):=
shell_SpriteExists(
shell_UserSpritesBase,M$)
shell_SpriteExistsInWimpPool(M$):=
shell_SpriteExists(1,M$)
shell_SpriteAreaInit(TA%,IJ%):TA%!0=IJ%:TA%!8=_c_Sprites_AreaHeaderSize%:
46,_c_Sprites_ReasonInitArea%+256,TA%:
shell_SpriteLoad(TA%,c$):
46,_c_Sprites_ReasonLoad%+256,TA%,c$:
shell_SpriteRemoveLeftWastage(TA%,M$,XC%):
M$=""
XC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonRemoveLeftWastage%+512,TA%,XC%
46,_c_Sprites_ReasonRemoveLeftWastage%+256,TA%,M$
shell_SpriteGetSize(TA%,M$,XC%,
UA%):
M$=""
XC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonGetSize%+512,TA%,XC%
,,,aA%,UA%
46,_c_Sprites_ReasonGetSize%+256,TA%,M$
,,,aA%,UA%
shell_SpriteGetMode(TA%,M$,XC%,
UD%):
M$=""
XC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonGetSize%+512,TA%,XC%
,,,,,,UD%
46,_c_Sprites_ReasonGetSize%+256,TA%,M$
,,,,,,UD%
shell_SpriteLoadAsDraw(c$,yH%,PC%,QC%,
LJ%):
pA%,MJ%,TA%:
aA%,UA%,UD%,_H%,AI%:
shell_DrawCreateFile(xD%):
shell_DrawSpriteArea(xD%,yH%,TA%):LJ%=TA%-xD%:pA%=xD%+xD%!4:MJ%=48:
shell_SpriteLoad(TA%,c$)
shell_SpriteRemoveLeftWastage(TA%,"",TA%+_c_Sprites_AreaHeaderSize%):
shell_SpriteGetSize(TA%,"",TA%+_c_Sprites_AreaHeaderSize%,aA%,UA%):
shell_SpriteGetMode(TA%,"",TA%+_c_Sprites_AreaHeaderSize%,UD%):
53,UD%,4
,,_H%:
53,UD%,5
,,AI%:aA%=aA%<<_H%
UA%=UA%<<AI%:$pA%="Draw":pA%!4=&C9:pA%!8=0:$(pA%+&C)="SprToDraw":pA%!24=PC%*256:pA%!28=QC%*256:pA%!32=(pA%!24)+aA%*256:pA%!36=(pA%!28)+UA%*256:BI%=5:pA%!40=BI%:pA%!44=yH%+24:pA%!48=PC%*256:pA%!52=QC%*256:pA%!56=(pA%!48)+aA%*256:pA%!60=(pA%!52)+UA%*256