home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Archive Magazine 1996
/
ARCHIVE_96.iso
/
discs
/
mag_discs
/
volume_9
/
issue_09
/
verbmaster
/
!VerbMast
/
ShellLibRT
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1996-02-18
|
149KB
|
4,599 lines
>EvntShell:ShellLibRT
Squished by Lofty's !Shrink vsn 3.01 on 18-Feb-96
shell_LibraryVersion:=2.10*&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(SE%,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(kC%,o$,mA$,eA$):
e%,h%,XB%:
shell_WindowLoaded(o$)
shell_MessageOneArg("SHELLMSG03",o$)
shell_HeapBlockFetch(&C):e%!0=
shell_HeapBlockFetch(
o$+1):h%=e%!0:$h%=o$:e%!4=
shell_HeapBlockFetch(
mA$+1):h%=e%!4:$h%=mA$:e%!8=
shell_HeapBlockFetch(
eA$+1):h%=e%!8:$h%=eA$:
&45BCE,kC%,e%:
&45BCC,,
shell_MessageNoArgs(M$):=
shell_MessageLookup(M$,"","")
shell_MessageOneArg(M$,w$):=
shell_MessageLookup(M$,w$,"")
shell_MessageTwoArgs(M$,w$,PA$):=
shell_MessageLookup(M$,w$,PA$)
shell_MessageLookup(M$,w$,PA$):
o%,L%,t$,jD%,sC%:
M$,8)="SHELLMSG"
jD%=_U%!284:sC%=_U%!280
jD%=_U%!64:sC%=_U%!68
&61502,sC%,M$,jD%,256,w$,PA$
,,,L%;o%:
jD%?L%=&D:t$=$(jD%)
shell_WimpInit(CC%,DA$):
KF%,yA%:
KF%4:!KF%=0:
shell_OSCheckVersion(3.1)
2CC%=310:
&400C0,CC%,&4B534154,DA$,KF%
CC%,yA%
CC%=&C8:
&400C0,CC%,&4B534154,DA$
CC%,yA%
_U%!&64
"WimpExt_Initialise",&E,yA%
:_U%!&94=yA%:=yA%
shell_WimpInit_I(CC%,DA$):
yA%:yA%=
shell_WimpInit(CC%,DA$):
&81682,yA%:=yA%
shell_WimpCloseDown_I(yA%):
shell_ExReg_FontLib_Loaded
shell_Fonts_LoseFonts
shell_ExReg_FontMenu_Loaded
shell_FontMenu_Deregister
_U%!&64
"WimpExt_Initialise",&E,yA%
&600DD,yA%,&4B534154:
&A1683,yA%:
_U%!&64
&628C5,_U%!&94
WimpCloseDown(yA%):
shell_ExReg_FontMenu_Loaded
shell_LoseFonts
shell_ExReg_FontMenu_Loaded
shell_FontMenu_Deregister
_U%!&64
"WimpExt_Initialise",&E,yA%
&600DD,yA%,&4B534154:
_U%!&64
&628C5,_U%!&94
("Unset "+_shell_AppName$+"$BasicFile"):
shell_FindFont(CB$,JI%):
iA%,lF%:lF%=_U%!&E8:
&40081,,CB$,JI%*16,d*16,0,0
iA%:lF%?iA%+=1:
lF%?iA%>=&FF
shell_OK(
shell_MessageNoArgs("SHELLMSG18"))
shell_Init:
KB%,s%,h%,NA$:
D$,G$,VE%:
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:VE%=&64:
shell_PollSetInterval(VE%):
shell_PollSetPrevInterval(VE%):
_POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=VE%:
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
NA$=$(_U%!324)
:=NA$
shell_GetAppDir:
h%:h%=_U%!&BC:=$h%
shell_GetAppDataDir:
h%:h%=_U%!&C0:=$h%
shell_GetAppName:
h%:h%=_U%!&C4:=$h%
shell_ResourcesInit:
GA$,h%,G$,D$,iE%:
gC%,rD%:G$=
shell_GetAppName:D$=
shell_GetAppDir:
shell_OSVarExists(G$+"Res$Path")
_U%!&64=_U%!&64
shell_OSVarExists(G$+"Data$Dir")
fGA$=
shell_OSVarGetVal(G$+"Data$Dir",1):_U%!&C0=
shell_HeapBlockFetch((
GA$)+1):h%=_U%!&C0:$h%=GA$
_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
,,gC%:
gC%=1
shell_FileExists(G$+"Res:Sprites22")
-4_U%!16=
shell_SpriteAreaLoad(G$+"Res:Sprites22")
shell_FileExists(G$+"Res:Sprites")
12_U%!16=
shell_SpriteAreaLoad(G$+"Res:Sprites")
_U%!16=1
:iE%=
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
,,gC%:
gC%=1
shell_FileExists(D$+".Sprites22")
O1_U%!16=
shell_SpriteAreaLoad(D$+".Sprites22")
shell_FileExists(D$+".Sprites")
R/_U%!16=
shell_SpriteAreaLoad(D$+".Sprites")
_U%!16=1
:iE%=
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(r$):
Q$,t$,TB%:Q$="":
r$,"\")>0:TB%=
r$,"\"):Q$+=
r$,TB%-1):t$=
r$,TB%+1,1):r$=
r$,TB%+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$+="\"+t$
:=Q$+r$
shell_MessageWindow(J$,rI%,QB$,BA$):
pE%,ND%:ND%=
shell_HeapBlockFetch(260):!ND%=0:$(ND%+4)=J$+
BA$=""
BA$="Message from "+QB$
&400DF,ND%,19,BA$
&400DF,ND%,17,BA$
shell_HeapBlockReturn(ND%):=pE%
shell_CreateWindow2(O,o%,pI%,MI%,eI%,NB%,sE%,lB%,jB%,GG%):
Q%:Q%=
shell_HeapBlockFetch(&BB8):Q%!0=sE%:Q%!4=lB%:Q%!8=jB%:Q%!&C=GG%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=o%:Q%?32=7:Q%?33=2:Q%?34=pI%:Q%?35=MI%: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,
wI%):
YA%,bA%:
lwaorigin(A,YA%,bA%):uA%=A!24-YA%:CB%=A!28-bA%:EI%=A!32-YA%:wI%=A!36-bA%:
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(HJ%):
e$,AA%,x$,WB$,PG%,dB%,uB%,JF%:
d%,t%,k%,_temp28%,_temp32%,_temp24%,_temp%,PI%:
eJ%,a%,qH%:
_EVENT_NULL:
_closedown%=
(qH%-_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:dB%=_Q%!0:uB%=_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:JF%=
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%,_I%):
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%,cD%,m%:cD%=
shell_HeapBlockFetch(&C+(
shell_WindowCountIcons(
Evnts_GetLastWindowClicked)*32)):
Evnts_GetLastWindowClicked>0
&400D6,
Evnts_GetLastWindowClicked,cD%,&F000,&B000:m%=0:
cD%!m%<>-1:
cD%!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(cD%):
shiftmenuclick(d%,t%):=
shell_RedrawWindow(n%):
BE%,e$,YA%,bA%,e%:
shell_HeapBlockFetch(&64):
shell_FatalError
e%!0=n%:
&400C8,,e%
BE%:YA%=e%!4-e%!20:bA%=e%!16-e%!24:
&81681,,e%:
shell_EvntHandle_Redraw(n%,e%,YA%,bA%):
&400CA,,e%
shell_HeapBlockReturn(e%):
shell_Receive(_Q%):
h%,k%,ZH%:
_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:ZH%=(_Q%!24
shell_ColourPickerSelection(_Q%!28,ZH%)
_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:T$=$(_Q%+20):
T$,30)="EvntShellLib:ShellDBug started"
_U%!&64
r_U%!&64=(_U%!&64
1<<4):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
shell_GetAppName)
T$,25)="EvntShellLib:TraceInitAck"
_U%!&64=(_U%!&64
1<<4)
T$,20)="EvntShellLib:TraceOn"
shell_TraceOn
T$,21)="EvntShellLib:TraceOff"
shell_TraceOff
T$,28)="EvntShellLib:ListClickSelect"
shell_ListClickSelect
T$,26)="EvntShellLib:ListClickMenu"
shell_ListClickMenu
T$,28)="EvntShellLib:ListClickAdjust"
shell_ListClickAdjust
T$,25)="EvntShellLib:ListHelpTags"
shell_ListHelpTags
T$,24)="EvntShellLib:ListBumpers"
shell_ListBumpers
T$,26)="EvntShellLib:ListPointerIn"
shell_ListPointerIn
T$,27)="EvntShellLib:ListPointerOut"
shell_ListPointerOut
T$,25)="EvntShellLib:ListDataLoad"
shell_ListDataLoad
T$,25)="EvntShellLib:ListDataSave"
shell_ListDataSave
shell_HandleUnknownMessage(_Q%):
shell_HandleUnknownMessage(_Q%):
shell_RAMFetch(_Q%):
fJ%,qE%,vE%:vE%=
_U%!&90>&8000
4_Q%!&C=_Q%!8:_Q%!16=7:qE%=_U%!&88:
_U%!&8C=&FF9
_U%!&90+=4
(qE%-_U%!&80)<_Q%!24
_Q%!24=qE%-_U%!&80:vE%=
&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%,kA$,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:kA$=
shell_GetString(h%+44):
shell_UserFNLoadFile(h%!40,_U%!&98,e%!8,kA$,_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(KJ%):
IA$,XC%,YE%,tB%:IA$=
shell_GetString(_Q%+44):XC%=
shell_FileLength(IA$):
XC%<0
shell_OK(
shell_MessageNoArgs("SHELLMSG16"))
%QtB%=
shell_HeapBlockFetch(XC%):
&20008,16,IA$,tB%,0
;YE%:
shell_VFlag(YE%)
shell_HeapBlockReturn(tB%)
:=tB%
shell_VFlag(YE%):=((YE%
1)=1)
shell_Exit:
sC%:sC%=_U%!68:
&61504,sC%:
&2001E,7,,sC%:
shell_TraceExit:
&606C2:
&600D0,,-1:
shell_WimpCloseDown_I(_U%!&94):
shell_DataSave(_Q%):
h%,a%,e%,s%:
_Q%!4<>_U%!&94
eCa%=
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
a%>-1
g2e%=_U%!96+a%:
shell_CheckType(_Q%!40,e%!8,
shell_TopBitLoadInProgress
tn_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
:=j%:
e%,LA%,bC%,a%,XC%,k%:bC%=
shell_HeapBlockFetch(30):
&400CF,,bC%:a%=
shell_GetEventListOffset(d%,t%,_U%+72,24,
a%=-1
a%=-2
shell_MessageWindow(
shell_MessageNoArgs("SHELLMSG13"),0,"",
shell_MessageNoArgs("warning"))
e%=(_U%!72)+a%:
e%!8>&8000
$XC%=
shell_HeapBlockInfo(e%!8)-4
XC%=e%!8
:LA%=_U%!76:LA%!0=256:LA%!&C=0:LA%!16=1:LA%!20=bC%!&C:LA%!24=bC%!16:LA%!28=bC%!0:LA%!32=bC%!4:LA%!36=XC%:LA%!40=e%!&C:$(LA%+44)=
shell_Leaf(
shell_IconGetData(d%,e%!16)):
&400E7,18,LA%,LA%!20,LA%!24:_U%!&78=_Q%!8:_U%!&88=XC%:_U%!&8C=e%!&C
;_U%!&90=e%!8:_U%!&9C=e%!4:_U%!&C8=LA%!20:_U%!&CC=LA%!24
shell_HeapBlockReturn(bC%):
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%):
qG%,h%:h%=_U%!&9C:
_Q%!&C<>_U%!&70
_U%!&80=0
&20023,"Wimp$Scrap",,-1,0,3
,,qG%:
qG%<>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(NA%,
j%,qA%,h%,a%,y%,HA%,xA%,m%:
fC%:fC%=0:qA%=_U%!&DC:a%=0:y%=
:K$="":fC%=0:
shell_HeapBlockExists(qA%)
:m%+=4:
qA%!m%=-1:HA%=m%:m%=0:
:h%=!(qA%+a%+0):
h%<>-1
h%=NA%
XFy%=
:xA%=qA%!(a%+4):K$=$xA%:fC%=qA%!(a%+8):xA%=qA%!(a%+&C):P$=$xA%
:a%+=16
a%=HA%
a%>=HA%
K$="":P$=""
fC%=0
shell_EventListMenuWarn(kC%,EH%,K$,P$):
h%,xA%,m%,qA%:
_U%!&DC=0
_U%!&DC=
shell_HeapBlockFetch(32):h%=_U%!&DC:h%!0=kC%:h%!4=
shell_HeapBlockFetch(
K$+1):$(h%!4)=K$:h%!8=EH%: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%=kC%:h%!(m%+4)=
shell_HeapBlockFetch(
K$+1):xA%=h%!(m%+4):$(xA%)=K$:h%!(m%+8)=EH%: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,
RA%):QA%=A!0-A!16:RA%=A!&C-A!20:
shell_WritableIconHandler(d%,t%,jA%):
sA%,PC%,BC%,m%:
kE%,FE%,BA%,cF%:cF%=
:sA%=
shell_WindowCountIcons(d%):BA%=
shell_HeapBlockFetch((sA%+1)*4):
&400D3,,BA%:
!BA%=-1
shell_HeapBlockReturn(BA%):cF%=
&400D6,d%,BA%,&40E000,&E000:PC%=!BA%:m%=0:
BA%!m%=t%
!kE%=BA%!(m%-4):FE%=BA%!(m%+4)
:m%+=4:
BA%!m%=-1:BC%=BA%!(m%-4):
shell_FakeMouseClick(d%,0,4)
398,394:
t%=BC%
&400D2,d%,PC%,-1,-1,-1,
shell_IconGetData(d%,PC%)):
shell_IconEnsureVisible(d%,PC%)
&400D2,d%,FE%,-1,-1,-1,
shell_IconGetData(d%,FE%)):
shell_IconEnsureVisible(d%,FE%)
399,410:
t%=PC%
&400D2,d%,BC%,-1,-1,-1,
shell_IconGetData(d%,BC%)):
shell_IconEnsureVisible(d%,BC%)
&400D2,d%,kE%,-1,-1,-1,
shell_IconGetData(d%,kE%)):
shell_IconEnsureVisible(d%,kE%)
&400D2,d%,PC%,-1,-1,-1,
shell_IconGetData(d%,PC%)):
shell_IconEnsureVisible(d%,PC%)
&400D2,d%,BC%,-1,-1,-1,
shell_IconGetData(d%,BC%)):
shell_IconEnsureVisible(d%,BC%)
shell_HeapBlockReturn(BA%)
shell_FakeMouseClick(d%,t%,SE%):
6,&F,1:_Q%!8=SE%:_Q%!&C=d%:_Q%!16=t%:
shell_Action(6):
shell_GetMinXY(o%,J$,p$):
YA%,bA%,uA%,CB%,dB%,uB%:cB%=0:NB%=0:
J$<>""
&40084,o%>>24
,,bA%,,CB%:
&40097,,
(o%>>24)+J$
,YA%,,uA%:
&40088,,YA%
,YA%:
&40088,,uA%
,uA%:cB%=uA%-YA%:NB%=CB%-bA%
cB%=6*UB%+16*
J$:NB%=32
4NB%+=2*VB%
p$<>""
&2002E,296,
shell_UserSpritesBase,p$
,,,dB%,uB%,,yG%;P%:
&20035,yG%,4
,,DI%:dB%=dB%<<DI%:
&20035,yG%,5
,,AI%:uB%=uB%<<AI%:
&800 dB%=dB%/2:uB%=uB%/2
539)=19dB%=cB%+dB%
dB%>cB%cB%=dB%
uB%>NB%NB%=uB%
shell_IconGetState(qC%,rC%):!_Q%=qC%:_Q%!4=rC%:
&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:e=M:f=M+c:g=N:h=N-R:
max(rA%,lB%):
rA%<lB%
shell_Leaf(H$):
H$,"."):H$=
H$,".")+1):
shell_Branch(XA$):
MA%,LA$,h%:
XA$,".")=0
LA$=""
h%=0:
:MA%=h%+1:h%=
XA$,".",MA%):
h%=0:LA$=
XA$,MA%-2)
:=LA$
gname(G):HA$="":
?G<>0
?G<>&D:HA$=HA$+
?G:G+=1:
:=HA$
shell_ScreenToWindowCoords(aG%,
fF%,GH%,QJ%,TH%,uG%,aC%:aC%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(aG%)*32)):fF%=aC%:!fF%=aG%:
&400CC,,fF%:GH%=aC%!4:DJ%=aC%!16:TH%=aC%!20:uG%=aC%!24:X%=X%+(TH%-GH%):Y%=Y%+(uG%-DJ%)
shell_HeapBlockReturn(aC%):
shell_WimpSlotReadEnd:
&400EC,-1,-1
yC%:=yC%
shell_WimpSlotClaimMemory(yC%,SB%):
&400EC,yC%+SB%,-1
wE%<yC%+SB%
shell_WimpSlotReleaseMemory:
&400EC,yC%,-1:
shell_MouseLimit(TA%):
shell_HeapBlockFetch(36):A!0=TA%:
&400CB,,A:
shell_MouseSetRectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
shell_HeapBlockReturn(A):
shell_MouseRemoveLimits:
("Pointer"):
shell_MouseSetRectangle(QA%,RA%,PE%,x%):
QA%,RA%,PE%,x%:cJ%=QA%:nJ%=RA%:RJ%=PE%:aJ%=x%:
InitialiseSpriteArea(S%,CI%):!S%=CI%: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(iA$,OD%,PD%,wD%,o$,d%,m$,n$):
qA%,a%,h%,xA%,jA%,mE%:mE%=
_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":jA%=385
"F2":jA%=386
"F3":jA%=387
"F4":jA%=388
"F5":jA%=389
"F6":jA%=390
"F7":jA%=391
"F8":jA%=392
"F9":jA%=393
"F10":jA%=458
"F11":jA%=459
jA%=(
iA$)-64:mE%=
jA%+=16
jA%+=32
:h%=qA%+a%:h%!0=jA%:h%?4=OD%:h%?5=PD%:h%?6=wD%:h%!8=
shell_HeapBlockFetch(
o$+1):xA%=h%!8:$xA%=o$:
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(jA%):
qA%,HA%,y%,f%,x%,CA$,m$,n$:
PD%,OD%,wD%,FB%,GB%,_D%,UJ%,a%:
j%,_%:qA%=_U%!60:HA%=_U%!&B4*24:y%=
:f%=0:
qA%!f%=jA%
f%+=24
f%>=HA%:
-h%=qA%+f%:CA$=$(h%!8):
(CA$<>""
h%!&C=0)
shell_CreateWindow(CA$,x%):_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
shell_HeapBlockReturn(_%)
:m$=$(h%!16):
m$<>""
h%!&C>0
1 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
J k%=
("FN"+n$+"("+
h%!&C+")")
("FN"+n$+"("+
x%+")")
CA$="":m$="":n$="":j%=
shell_OpenWindowStaticNewView(d%):
shell_OpenWindow(d%,
,-1):
shell_OpenWindowStatic(n%):
shell_IsWindowStatic(n%)=
shell_OpenWindow(n%,0,-1)
shell_InitHelpSystem(H$,lI%):
JA$,MA%,j$,LF%,TC%:_U%!&D4=0:
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
w@_U%!&D8=0:
shell_ScanForHelp:
JA$=" -DieWithTask"
JA$=""
_U%!&64
|WH$="":j$=
shell_OSVarGetVal(
shell_GetAppName+"Res$Path",-1):
:MA%=
j$,","):
MA%>0
shell_FileExists(
j$,MA%-1)+
shell_GetAppName)
j$,MA%-1)+
shell_GetAppName:
shell_StrongHlpChkFiles(H$)
j$,MA%+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$)
TC%=0
shell_StrongHlpMsg("Help_Install "+H$+JA$):_U%!&64=_U%!&64
shell_HelpWord(VA$):
MJ%,h%:
_U%!&D0=-1
shell_OSVarExists("StrongHelp$Dir")
&600DE,"<StrongHelp$Dir>":
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
<_U%!&D8=
shell_HeapBlockFetch(
VA$+1):h%=_U%!&D8:$h%=VA$
shell_OK(
shell_MessageNoArgs("SHELLMSG11"))
shell_StrongHlpMsg("Help_Word "+VA$)
shell_StrongHlpMsg(FA$):
shell_BroadcastMessage(&43B00,FA$):
shell_ScanForHelp:
pB%,HE%:pB%=
shell_HeapBlockFetch(256):
:pB%!&C=0:
&400E7,19,pB%,-2,_U%!&D4
,,HE%:_U%!&D4=_U%!&D4+1:
HE%<>-1
(_U%!&D4)>64:
HE%<>-1
@pB%!0=24:pB%!&C=0:pB%!16=&400C6:pB%!20=HE%:
&400E7,17,pB%,0
shell_HeapBlockReturn(pB%):
shell_MemFill(MD%,fG%,UD%):
I%,CE%,tE%:CE%=fG%
4:tE%=fG%
CE%>0
(CE%*4)
4:MD%!(I%-1)=UD%:
tE%>0
.MD%=MD%+(CE%*4):
tE%-1:MD%?I%=UD%:
shell_MenuUpdateHandle(rG%,dH%):
HA%,f%,r%,AA%:HA%=
shell_HeapBlockInfo(_U%!&C)-8:f%=0:y%=
:r%=_U%!&C:
:AA%=r%!(f%+8):
AA%=rG%
r%!(f%+8)=dH%
Nf%+=48:
(f%>=HA%):
shell_MenuLastHandle=rG%
_m_Menu_HandleLastOpened%=dH%
shell_CheckSelection(sI%):
h%,m%:h%=_U%!256:
shell_MenuLastHandle=_U%!&FC
sI%!m%<>h%!m%
m%+=4:
h%!m%=-1:=m%
shell_MenuGetItemAddress(AA%,OG%):
m%,iC%:
&45BC7,AA%
:iC%=AA%+28+((OG%!m%)*24):AA%=iC%!4:m%+=4:
OG%!m%=-1:=iC%
shell_GetLastMouseXPos:=
Evnts_GetLastMouseXPos
shell_GetLastMouseYPos:=
Evnts_GetLastMouseYPos
shell_UpdateWindowHandle(qB%,HB%):
HB%<>qB%
Evnts_GetLastWindowClicked=qB%
_EVNTS_LAST_WINDOWCLICKED%=HB%
!_Q%=qB%
!_Q%=HB%
shell_UpdateStaticWindowHandle(qB%,HB%):
shell_UpdateWindowHandleList(qB%,HB%)
shell_MessagesInit(N$,
nG%):
SB%,o%:
3,"Cannot open message file '"+N$+"'"
&41500,,N$
o%,,SB%:
nG%=0
shell_HeapBlockFetch(SB%)
30,6,,,17+
,,IE%:$(IE%+16)=N$:
&41501,IE%,IE%+16:
shell_WindowSetSpriteArea(x%,AF%):
e%,HB%,DF%,EF%:e%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(x%)*32)):!e%=x%:
&400CC,,e%:e%!68=AF%:
shell_IconSetSpriteArea(e%!60,e%+76,AF%):
(e%!88)>0
DF%=0
(e%!88)-1:EF%=e%+92+DF%*32:
shell_IconSetSpriteArea(EF%!16,EF%+20,AF%):
&400C3,,e%:
&400C1,,e%+4
HB%<>x%
shell_UpdateWindowHandle(x%,HB%):x%=HB%
shell_HeapBlockReturn(e%):=x%
shell_StrongHlpIsAvailable:
jB%,WA%:jB%=
_U%!&64
,jB%=
shell_OSVarExists("StrongHelp$Dir")
:=jB%
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$,HB$,u$,CJ%,JG%):
_pos%,LD%,_wp$,zD%,SJ%,zE%,VD%,NH%,y%,uE%,j%:JG%+=1:uE%=
:LD%=JG%:zD%=0:_pos%=LD%
2:VD%=CJ%-1:
VD%<0
VD%=0
:zE%=JG%:
:_wp$=
("FN"+HB$+"( _pos% )"):_E%=_pos%:
_search_term$=_wp$
("FN"+u$+"( _search_term$,_wp$ )")=
+zE%=_pos%:LD%=_pos%-VD%:_pos%=LD%
2+zD%
VD%=_pos%:zD%=_pos%:LD%=zE%-_pos%:_pos%=LD%
2+zD%
NH%=_E%
NH%=_E%:
j%=-1
j%=_E%
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%)")
'(k%=
("FN"+y$+"(_lo%,_hi%)"):_F%=
("FN"+u$+"(_hi%,_lo%)")
,(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(AE%,DE%):
rA$,pA$,ZG%,pG%:rA$=
shell_MenuGetItemText(_shell_MS_handle%,AE%):pA$=
shell_MenuGetItemText(_shell_MS_handle%,DE%):_shell_blk%!0=AE%:_shell_blk%!4=-1:ZG%=
shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%)
_shell_blk%!0=DE%:pG%=
shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%):
shell_MenuPutData(ZG%,pA$):
shell_MenuPutData(pG%,rA$):=0
_shell_MS_comp(AE%,DE%):
qA$,sA$,kA%:qA$=
shell_MenuGetItemText(_shell_MS_handle%,AE%):sA$=
shell_MenuGetItemText(_shell_MS_handle%,DE%):
qA$<sA$
N kA%=
:=kA%
shell_WindowSetTitleRightJust(
v%,LB%,n%,AC%:AC%=
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%,AC%:AC%=
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$):
TC%,j%:
shell_FileExists(H$+".HelpData")
<TC%=-1:
shell_MessageOneArg("SHELLMSG32","HelpData")
shell_FileExists(H$+".Index")
9TC%=-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$,
MA%,YC%,rB%:
WA%,X%,sB%,iI%:
m%,QE%,sF%,sA%,WD%,o%:MA%=0:IA%=0:YC%=0:rB%=0:j%=0:
shell_FileExists(N$)
j%=-1
shell_FileType(N$)<>&FEC
j%=-2
UWA%=
shell_HeapBlockFetch(&D):X%=
(N$):
#X%=16:
&C,4,X%,WA%,4:WB%=!WA%:
WB%>0
IA%+=1:EG%=0:
&C,4,X%,WA%,4:sB%=!WA%:
&C,4,X%,WA%,4:iI%=!WA%:
&C,4,X%,WA%,&C:sF%=
#X%=WB%+56:
&C,4,X%,WA%,4:o%=!WA%:
#X%=WB%+72:
&C,4,X%,WA%,&C:EG%+=
shell_IconIndirSize(WB%,o%,WA%,X%):
#X%=WB%+84:
&C,4,X%,WA%,4:sA%=!WA%:
sA%>0
WD%=0
sA%-1:
#X%=WB%+88+(WD%*32)+16:
&C,4,X%,WA%,4:o%=!WA%:
#X%=WB%+88+(WD%*32)+20:
&C,4,X%,WA%,&C:EG%+=
shell_IconIndirSize(WB%,o%,WA%,X%):
#X%=sF%:YC%+=EG%:
sB%>rB%
rB%=sB%
WB%=0:
shell_HeapBlockReturn(WA%):MB%=rB%+YC%
shell_TemplateFileInfo3(N$,
MA%,YC%,rB%,WB%:
m%,QE%,sF%,sA%,WD%,o%:MA%=0:IA%=0:YC%=0:rB%=0:WA%=
shell_HeapBlockFetch(&D):
&400D9,,N$:
:$WA%="*":
&400DB,,-1,,,,WA%,MA%
,MB%,gI%,,,,MA%:
MA%<>0
MB%>rB%
rB%=MB%
YC%+=gI%:IA%+=1
MA%=0:
&400DA:MB%=rB%+YC%:
shell_HeapBlockReturn(WA%):
RO3_Present:
e%,ZC%,R$,kA%:e%=
shell_HeapBlockFetch(256):
("Set RO3$Check Y"):
("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
35,"RO3$Check",e%,256,0,0
,,ZC%:e%?ZC%=&D:
("Unset RO3$Check"):R$=$e%:
shell_HeapBlockReturn(e%):
R$="N"
Q kA%=
:=kA%
_shell_icondrag(d%,t%):
shell_IconDragBox(d%,t%):=0
shell_MessageSendPrintSave(xF%,rH%):
rH%>1
_U%!336=rH%-1
_U%!336=0
shell_DoSendPrintSave(xF%):
shell_DoSendPrintSave(xF%):
LA%:LA%=
shell_HeapBlockFetch(256):LA%!0=256:LA%!&C=0:LA%!16=&80142:LA%!20=0:LA%!24=0:LA%!28=0:LA%!32=0:LA%!36=256:LA%!40=xF%:$(LA%+44)="PrintOut"+
&400E7,18,LA%,LA%!20,LA%!24:
shell_HeapBlockReturn(LA%):
shell_HandlePrintFile(_Q%):
shell_HandlePrintError(_Q%):
shell_HandlePrintTypeOdd(_Q%):
shell_HandleSetPrinter(_Q%):
shell_3DEnabled:
sH%,_3d%:
_U%!&64
(1<<&A)
6,&A1,&8C
,,sH%:
_3d%=
_3d%=
_3d%=
:=_3d%
shell_HandleAttachedDataSave(_Q%,d%,t%):
HG%,e%,HH%,_name$,h%,k%:
shell_DataSaveCheckName(d%,t%):HG%=
shell_GetEventListOffset(d%,-1,_U%+72,24,
HG%>=0
ie%=_U%!72+HG%:HH%=e%!16:_name$=
shell_IconGetData(d%,HH%):h%=e%!20:
$h%<>""
("FN"+$h%+"(_name$)")
shell_InstallLib(UB$):
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(MA%,fA$,J$,aA%,AA%,OD%,PD%,wD%):
n%,FA%,oE%,xE%:FA%=
shell_HeapBlockFetch(36):
oE%20:
xE%20:!FA%=MA%: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=oE%:FA%!28=xE%:$oE%=J$:$xE%=fA$:
&400C2,,FA%
shell_AttachMenu(-2,n%,AA%,OD%,PD%,wD%):
shell_HeapBlockReturn(FA%):=
shell_IconNewSprite(MA%,n%,fA$)
shell_IconbarSetText(b%,g%,_A$):
l%:l%=
shell_HeapBlockFetch(40):!l%=b%:l%!4=g%:
&400CE,,l%:$(l%!28)=_A$:
shell_IconRedraw(b%,g%):
shell_HeapBlockReturn(l%):
_shell_Files_Init:=0
shell_FileLength(d$):
tA%,cE%,dE%,aB%,tC%,C$:
8,5,d$
tA%,,cE%,dE%,aB%,tC%:=aB%
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%,cE%,dE%,aB%,tC%,C$:
8,5,d$
tA%,,cE%,dE%,aB%,tC%:
tA%=0
="Not Found"
tC%=51
C$+="WR "
tC%=&BB
C$+="LWR"
tC%=&88
C$+="DL "
C$+=" "+
shell_StringPadLeading(
~cE%,"0",8):C$+=" "+
shell_StringPadLeading(
~dE%,"0",8):C$+=" "+
shell_StringPadLeading(
~aB%,"0",8):=C$
shell_FileGetDateStamp(d$):
tA%,eH%,E:E=5:
8,E,d$
tA%,,,eH%:
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:=0
Evnts_GetEvntListOffset(A$,g%,i%,z%,xD%):
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:II%=-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%):bB%=!i%:bB%!0+=z%:bB%!4+=1:bB%+=a%:$(bB%)="":
s%=&C
(z%-4)
4:bB%!s%=-1:
:_m_Evnts_LastEvntOffset%=a%
Evnts_UpdateData(p%,DC%,
PA%,F$):
!p%=-1
Q!p%=PA%:!DC%=
shell_HeapBlockExtend(!DC%,
(F$)+1):$(!DC%+PA%)=F$:PA%+=
(F$)+1
s$=$(!DC%+!p%):
s$<>F$
(F$)<=
$(!DC%+!p%)=F$
!DC%=
shell_HeapBlockExtend(!DC%,
(F$)+1):$(!DC%+PA%)=F$:!p%=PA%:PA%+=
(F$)+1
Evnts_DebugListHeader(aB$,TB$):
shell_AttachClickSelect(b%,g%,B$):
a%,c%,p%,A$:A$=
shell_GetWindowIdentifier(b%):
A$="iconbar"
C 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
N<!_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%,OA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_CLICKSELECT_ANCHOR%:z%=_EVNTS_CLICKSELECT_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("ClickSelect","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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%,OA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_CLICKADJUST_ANCHOR%:z%=_EVNTS_CLICKADJUST_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("ClickAdjust","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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%,OD%,PD%,wD%):
a%,c%,A$,bF%:
shell_IsWindowStatic(b%)=
shell_OK(
shell_MessageNoArgs("SHELLMSG30"))
+YA$=
shell_GetWindowIdentifier(b%):V$=
shell_MenuList_GetIdentifier(q%):
A$="iconbar"
/ 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
: bF%=
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
F4!_EVNTS_CLICKMENU_DATA%=
shell_HeapBlockFetch(1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,V$):
MYp%=c%+20:
Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,"")
shell_AttachPopupMenu(d%,cC%,uC%,AA%,a$,W$):
cC%>=0
shell_IconSetButtonType(d%,cC%,_BUTTON_TYPE_CLICK)
shell_EvntAdd_PopUpMenu(
shell_GetWindowIdentifier(d%),cC%,uC%,AA%,a$,W$,_POPUP_TYPE_TEXT):
shell_EvntHandle_ClickMenu(_window_handle%,_icon_handle%):
A$,a%,i%,CH%,b$,rF%,k%:
vC%: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%:vC%=i%!16:CH%=i%!20:rF%=!_EVNTS_CLICKMENU_DATA%:q%=
shell_MenuList_GetSysHandle($(rF%+vC%)):b$=$(rF%+CH%):_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%,OA%,JB%,q%:
g%,s%,b$:r%=!_EVNTS_CLICKMENU_ANCHOR%:z%=_EVNTS_CLICKMENU_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("ClickMenu ","Window Icon Menu handle Maker FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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%,wC%,xC%,bE%:
o%,uF%,f%,nI%,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
shell_EvntHandle_AttachedHelp(a%)
shell_HeapBlockFetch(96):
&600F4,1,bE%,_window_handle%,_icon_handle%
o%<>1
_window_handle%<>
shell_GetDynamicWindowHandle
shell_WindowHandleKnown(_window_handle%)
&Y$=
shell_EvntHandle_MenuHelp(bE%)
shell_HeapBlockReturn(bE%)
shell_ListHelpTags:
HA%,r%,z%,f%,OA%,JB%,B$:
g%,GA%,s%:r%=!_EVNTS_HELPTAG_ANCHOR%:z%=_EVNTS_HELPTAG_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("HelpTag ","Window Icon Help tag"):
f%=_m_Evnts_HeaderSize%:
OA%: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(V$,nH%,M$):
a%,c%,p%:a%=
Evnts_GetEvntListOffset("menu",nH%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
):c%=!_EVNTS_MENUHELPTAG_ANCHOR%:c%+=a%:$c%="menu":c%!&C=nH%:
!_EVNTS_MENUHELPTAG_DATA%=0
c<!_EVNTS_MENUHELPTAG_DATA%=
shell_HeapBlockFetch(
(M$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_MENUHELPTAG_DATA%,_EVNTS_MENUHELPTAG_DATAOFFSET%,M$):
shell_AttachPane(b%,
hE%,o%,FB%,GB%):
a%,c%,gA%,A$,X$,kB%:A$=
shell_GetWindowIdentifier(b%):X$=
shell_GetWindowIdentifier(hE%):gA%=0:kB%=
shell_WindowGetFlags(hE%):
1<<5)=0
shell_WindowToggleFlags(hE%,1<<5)
1<<1)
shell_WindowToggleFlags(hE%,1<<1)
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:gA%+=1:
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
):c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:$c%=A$:c%!&C=gA%:c%!20=o%:c%!24=FB%
%c%!28=GB%:
!_EVNTS_PANES_DATA%=0
6!_EVNTS_PANES_DATA%=
shell_HeapBlockFetch(
(X$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%,X$):
shell_ListPanes:
HA%,r%,z%,f%,OA%,X$:
GA%,s%,FB$,KB$:r%=!_EVNTS_PANES_ANCHOR%:z%=_EVNTS_PANES_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("Pane ","Window Pane name X Pos Y Pos"):
f%=_m_Evnts_HeaderSize%:
OA%:A$=$(r%+f%):GA%=!_EVNTS_PANES_DATA%:
GA%>0
X$=$(GA%+r%!(f%+16))
:FB$=
shell_StringPadTrailing(
(r%!(f%+24))," ",8):KB$=
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%,FG%,XD%):
a%,vH%,YB%,VA%,aA%:
zC%,zG%,_G%:
A$,i%,JA%,w%:
B$,k%,gA%,dC%,kB%,_C%:
YD%,DA%,FC%:A$=
shell_GetWindowIdentifier(_window_handle%):YB%=_Q%!28
Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWOPEN_ANCHOR%,_EVNTS_WINDOWOPEN_REC_SIZE%,
a%>=0
pi%=!_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%
:dC%=
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
a%>=0
!_Q%!0=_window_handle%:
XD%>0
YB%=XD%
YB%=-1
YB%=_Q%!28
&400C5,,_Q%:
&400CB,,_Q%:
&400C6,,_Q%
:gA%=0:
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:eC%=i%!16:w%=!_EVNTS_PANES_DATA%:X$=$(w%+eC%):kB%=i%!20:_C%=i%!24:YD%=i%!28
&fDA%=
shell_GetWindowHandleList(X$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
vH%=0
vH%=_c_Evnts_PaneBlk%!0
*{zG%=_c_Evnts_PaneBlk%!0:
&400CB,,_c_Evnts_PaneBlk%:
_WINDOWS_GETPINFO_BLK%!16=-9
_WINDOWS_GETPINFO_BLK%!16>-5
0,1:VA%=_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+YD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-VA%
2:VA%=_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+YD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-VA%
3:VA%=_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+YD%
4:VA%=_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+VA%+YD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16+VA%
5:VA%=_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
gA%=0
_c_Evnts_PaneBlk%!28=YB%
_c_Evnts_PaneBlk%!28=_G%
&400C5,,_c_Evnts_PaneBlk%
:_G%=_c_Evnts_PaneBlk%!0:gA%+=1:
_Q%!28=zG%:
&400C5,,_Q%
_Q%!0=_window_handle%:
&400CB,,_Q%
YB%=-2
_Q%!28=-2
XD%=-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%,yE%:A$=
shell_GetWindowIdentifier(_window_handle%):a%=
Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
):yE%=
a%>=0
bi%=!_EVNTS_WINDOWCLOSE_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_WINDOWCLOSE_DATA%:B$=$(w%+JA%):
B$<>""
.yE%=
("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%,iA%:e%=
shell_HeapBlockFetch(36):!e%=b%:
&400CB,,e%:iA%=e%!32:
shell_HeapBlockReturn(e%):
shell_Tracef0("AttachUserRedraw:flag% = &"+
~iA%):
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
7!_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%,YA%,bA%):
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
Xi%=!_EVNTS_REDRAW_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_REDRAW_DATA%:B$=$(w%+JA%):
B$<>""
/k%=
("FN"+B$+"("+
e%+","+
YA%+","+
bA%+")")
shell_ListRedraw:
HA%,r%,z%,f%,OA%,B$,A$:
GA%,s%:r%=!_EVNTS_REDRAW_ANCHOR%:z%=_EVNTS_REDRAW_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("Redraw ","Window User FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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%):p%=c%+20:
Evnts_UpdateData(p%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%,k$):
shell_EvntHandle_IconWatch:
i%,z%,XA%,f%,s%,g%,A$,AH%:
DA%,b%,k$,hA$,B$,JA%:
w%,p%:i%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:XA%=i%!4:
f%=_m_Evnts_HeaderSize%:
XA%:A$=$(i%+f%):g%=i%!(f%+&C):JA%=i%!(f%+16):w%=!_EVNTS_ICONWATCH_DATA%:B$=$(w%+JA%):AH%=!(i%+f%+20):p%=i%+f%+20:hA$=$(w%+AH%):DA%=
shell_GetWindowHandleList(A$):b%=!DA%:
shell_WindowIsOpen(b%)=
shell_IconGetData(b%,g%):
B$<>""
k$<>hA$
("FN"+B$+"( "+
(34)+k$+
(34)+" )"):
Evnts_UpdateData(p%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%,k$)
:f%+=_EVNTS_ICONWATCH_REC_SIZE%:
shell_ListIconWatch:
HA%,r%,z%,f%,OA%,B$,A$:
GA%,s%:r%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("IconWatch ","Window User FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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:
zA%,A$,a%,i%,JA%,w%:
k%,B$,KA$,lA$,ZD%,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,,zA%:_m_evnts_MouseXCoord%=zA%!0:_m_evnts_MouseYCoord%=zA%!4:_m_evnts_DestWindowHandle%=zA%!&C:_m_evnts_DestIconHandle%=zA%!16:
shell_HeapBlockReturn(zA%):
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%)
) ZD%=
(_m_evnts_DestIconHandle%<>_m_evnts_DragIconStartIcon%)
/ gF%=
(ZD%=
(ZD%=
shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,lA$+KA$,
shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,KA$,
shell_EvntAdd_PopUpMenu(A$,GC%,SA%,q%,S$,W$,_D%):
a%,c%,V$: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=SA%:c%!24=_D%:
!_EVNTS_POPUPS_DATA%=0
d7!_EVNTS_POPUPS_DATA%=
shell_HeapBlockFetch(
(V$)+1)
S$<>""
hSp%=c%+16:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,S$)
c%!16=-1
shell_MenuList_GetIdentifier(q%):
V$<>""
qSp%=c%+28:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,V$)
W$<>""
!_EVNTS_POPUPS_DATA%=0
w7!_EVNTS_POPUPS_DATA%=
shell_HeapBlockFetch(
(W$)+1)
:p%=c%+32:
Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,W$)
c%!32=-1
shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
A$,a%,w%,PA%,i%,vB%,q%:
OJ%,S$,W$,k%,V$: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%:PA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:SA%=i%!20:vB%=i%!24:
vB%=_POPUP_TYPE_TEXT
PA%=i%!28:
PA%>=0
V$=$(w%+PA%)
shell_MenuList_GetSysHandle(V$)
V$="":q%=0
PA%>=0
S$=$(w%+PA%)
:PA%=i%!32:
PA%>=0
+W$=$(w%+PA%):
vB%=_POPUP_TYPE_FONTMENU
("FN"+W$+"("+
shell_FontMenu_GetHandle)+")")
("FN"+W$+"("+
(q%)+")")
_POPUP_TYPE_TEXT:
shell_HandleMenuOpen(_Q%,q%,_window_handle%,_icon_handle%,
_POPUP_TYPE_WIMPCOLOUR:
_m_WimpColMen_Handle%=-1
&45BCF,,"",S$
_m_WimpColMen_Handle%
shell_HandleMenuOpen(_Q%,_m_WimpColMen_Handle%,_window_handle%,_icon_handle%,
_POPUP_TYPE_COLOUR24:
shell_ColourPickerOpen(_window_handle%,SA%,GC%,S$,W$)
_POPUP_TYPE_FONTMENU:
shell_FontMenu_ShowMenu(_Q%,_window_handle%,_icon_handle%,
_POPUP_TYPE_FONTPICK:
shell_FontPickerOpen(_window_handle%,SA%,GC%,S$,W$)
_POPUP_TYPE_DATEPICK:
shell_DatePickerOpen(_window_handle%,SA%,GC%,S$)
99,"Unknown popup type detected!"
shell_EvntHandle_PopupMenuSelection(b%,g%,wB%):
_item_text$,A$,a%,i%,PA%,w%:
GC%,SA%,vB%,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%:PA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:SA%=i%!20:vB%=i%!24:q%=i%!28:
vB%=_POPUP_TYPE_FONTMENU
_item_text$=""
_item_text$=
shell_MenuGetItemText(q%,!wB%)
:j%=0:
PA%<>-1
?a$=$(w%+PA%):j%=
("FN"+a$+"("+
b%+","+
SA%+",_item_text$)")
j%<>0
PA%=-1
SA%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(b%,SA%,_item_text$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(b%,SA%,wB%)
99,"Unknown Popup type in EvntHandle_PopupMenuSelection (type was "+
vB%+")"
shell_ListPopUps:
HA%,r%,z%,f%,OA%,JB%:
g%,B$,GA%,s%:r%=!_EVNTS_POPUPS_ANCHOR%:z%=_EVNTS_POPUPS_REC_SIZE%:OA%=r%!4:
Evnts_DebugListHeader ("PopUps","Window Icon FN"):
f%=_m_Evnts_HeaderSize%:
OA%: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%,mI%):
shell_EvntHandle_ClickSelect(b%,g%):
shell_EvntAdjustButtonPressed(b%,g%):
shell_EvntHandle_ClickAdjust(b%,g%):
shell_EvntMenuButtonPressed(b%,g%,mI%):
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%,bD%,PA%):
c%,OB%,hA%:c%=!aD%:hA%=!bD%:!_c_Evnts_WorkBuffer%=PA%:
#u%,0
OB%=!c%:
#u%,1:
&C,2,u%,c%,OB%+_m_Evnts_HeaderSize%:
&C,2,u%,_c_Evnts_WorkBuffer%,4:
&C,2,u%,hA%,PA%
shell_EvntLoad_AllEvnts(c$):
u%: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%):
Evnts_LoadEvnt(u%,aD%,bD%,
PA%):
KH%,OB%,c%,OB%,sB%,hA%:
!aD%<>0
shell_HeapBlockReturn(!aD%)
!bD%<>0
shell_HeapBlockReturn(!bD%)
KH%=1
shell_HeapBlockFetch(_m_Evnts_HeaderSize%):
&C,4,u%,c%,_m_Evnts_HeaderSize%:OB%=!c%:c%=
shell_HeapBlockExtend(c%,OB%):
&C,4,u%,c%+_m_Evnts_HeaderSize%,OB%:!aD%=c%:
&C,4,u%,_c_Evnts_WorkBuffer%,4:sB%=!_c_Evnts_WorkBuffer%:
sB%>0
EhA%=
shell_HeapBlockFetch(sB%):
&C,4,u%,hA%,sB%:!bD%=hA%:PA%=sB%
shell_EvntHandle_MenuSelect(hC%):
wF%,o%:
shell_PointerGetMouseButton (_EVNTS_LAST_MOUSEBUTTON%):
shell_GetLastIconClicked>=0
shell_EvntHandle_PopupSelect(hC%)
&65BC4,_m_Menu_HandleLastOpened%,hC%
wF%,,_c_Evnts_WorkBuffer%;o%:
o%<>1
Evnts_CallMenuHandler(wF%,_c_Evnts_WorkBuffer%)
shell_GetLastMouseButton=_MSE_ADJUSTBUT
_EVNTS_LAST_MENUMAKER_FN$<>""
("FN"+_EVNTS_LAST_MENUMAKER_FN$+"( _U%!52, _U%!56 )")
shell_MenuOpenLast
shell_EvntHandle_PopupSelect(hC%):
A$,a%,i%,q$,q%,AD%:
hA%,EE%,j%,a$:
SA%,PI%,PG%,vC%:A$=
shell_GetWindowIdentifier(
shell_GetLastWindowClicked)
Evnts_GetEvntListOffset(A$,
shell_GetLastIconClicked,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
a%>=0
A$<>"iconbar"
}i%=!_EVNTS_POPUPS_ANCHOR%+a%:AD%=i%!24:hA%=!_EVNTS_POPUPS_DATA%:EE%=i%!16:SA%=i%!20:
hC%!4<>-1
AD%<>_POPUP_TYPE_FONTMENU
99,"Unable to handle popup with submenus!"
AD%=_POPUP_TYPE_TEXT
vC%=i%!28:
vC%>=0
V$=$(hA%+vC%)
shell_MenuList_GetSysHandle(V$)
AD%=_POPUP_TYPE_FONTMENU
shell_FontMenu_Decode(hC%)
shell_MenuGetItemText(q%,!hC%)
:j%=0:
EE%>-1
a$=$(hA%+EE%):
q$<>""
)Tj%=
("FN"+a$+"("+
shell_GetLastWindowClicked)+","+
SA%+","+
(34)+q$+
(34)+")")
j%<>0
EE%=-1
SA%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(
shell_GetLastWindowClicked,SA%,q$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(
shell_GetLastWindowClicked,SA%,!hC%)
_POPUP_TYPE_FONTMENU:
q$<>""
shell_IconPutData(
shell_GetLastWindowClicked,SA%,q$,
99,"Unknown Popup type in PROCshell_EvntHandle_PopupSelect (type was "+
AD%+")"
Evnts_CallMenuHandler(x%,ZI%):
("FN"+$x%+"("+
ZI%+")")
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%,HC%,hA%,z%,PA%,
uI%):
s$,p%,YB$,c%,a%:
BD%,CD%,DD%,IC%,f%,s%,XA%:
A$="IconBar"
g%=-1
Evnts_GetEvntListOffset(A$,g%,HC%,z%,
):c%=!HC%:XA%=c%!4:c%+=a%:p%=c%+PA%:BD%=!p%:!p%=-1:
BD%=-1
s$=$(!hA%+BD%):CD%=(!hA%+BD%)+
(s$)+1:DD%=!hA%+BD%:IC%=CD%-DD%:
&400F1,_U%!&94,CD%,_U%!&94,DD%,IC%:uI%-=IC%:!hA%=
shell_HeapBlockExtend(!hA%,-IC%):c%=!HC%:f%=_m_Evnts_HeaderSize%+PA%:
c%!f%>BD%
c%!f%-=IC%
:f%+=z%:
Evnts_DeleteEvnt(A$,g%,HC%,hA%,z%):
a%,c%,XA%,CD%,DD%,XA%:a%=
Evnts_GetEvntListOffset(A$,g%,HC%,z%,
):c%=!HC%:XA%=c%!4:
XA%>0
;c%!0-=z%:c%!4-=1:c%+=a%:CD%=c%+z%:DD%=c%:IC%=z%:
XA%>1
&400F1,_U%!&94,CD%,_U%!&94,DD%,IC%
:!HC%=
shell_HeapBlockExtend(!HC%,-IC%)
shell_EvntHandle_MenuHelp(lE%):
Y$,uF%,f%,NA%,a%:
xC%,wC%:uF%=
shell_MenuLastHandle:f%=0:
lE%!f%<>-1:nI%=lE%!f%:f%+=4:
:NA%=
shell_MenuGetItemHandle(uF%,lE%):
NA%<>0
Evnts_GetEvntListOffset("menu",NA%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
a%>=0
[i%=!_EVNTS_MENUHELPTAG_ANCHOR%+a%:xC%=i%!16:wC%=!_EVNTS_MENUHELPTAG_DATA%:Y$=$(wC%+xC%)
Y$=""
shell_EvntHandle_AttachedHelp(a%):
i%,xC%,wC%,Y$:i%=!_EVNTS_HELPTAG_ANCHOR%+a%:xC%=i%!16:wC%=!_EVNTS_HELPTAG_DATA%:Y$=$(wC%+xC%):=Y$
shell_Evnts_WritableDragInProgress:=_m_evnts_DragIconWritableDrag%
shell_Evnts_DragIconStartWindow:=_m_evnts_DragIconStartWindow%
shell_Evnts_DragIconStartIcon:=_m_evnts_DragIconStartIcon%
shell_Evnts_MonitorDragPtrPos:
ED%,b%,cA%,dA%:
JC%,KC%,LC%,MC%,UB%,VB%,FD%:
shell_PointerGetPosition(dA%,cA%):
shell_PointerGetWindow(b%)
shell_PointerGetMovementVector(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%,dA%,cA%,JC%,KC%,LC%,MC%,UB%,VB%):
UB%<>0
VB%<>0
6=_m_evnts_DragIconMouseX%=dA%:_m_evnts_DragIconMouseY%=cA%
shell_PointerGetLastMovementVector(JC%,KC%,LC%,MC%,UB%,VB%):
UB%<>0
VB%<>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)
:jC%=
shell_Window_GetBottomPaneDepth(
shell_Evnts_DragIconStartWindow):
cA%<(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+jC%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+
shell_Window_GetBottomPaneDepth(
shell_Evnts_DragIconStartWindow)))
:FD%=
shell_Window_GetTopPaneDepth(
shell_Evnts_DragIconStartWindow):
cA%>(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-FD%)
shell_WindowScrollBy(
shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-
shell_Window_GetTopPaneDepth(
shell_Evnts_DragIconStartWindow)))
Evnts_GetEvntListOffset3(A$,g%,vA%,i%,z%,xD%):
HA%,f%,y%,a%,BB%,JB%:
s%,GD%:
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%
sYBB%=!i%:HA%=!BB%:f%=_m_Evnts_HeaderSize%:y%=
:a%=-1:II%=-1:JB%=!i%:
($(JB%+f%)=A$)
7GD%=(JB%!(f%+16))
(1<<31):
JB%!(f%+&C)=g%
GD%=vA%
a%=f%:y%=
f%+=z%
f%+=z%
((f%>=(HA%+_m_Evnts_HeaderSize%))
(a%=-1
a%=HA%+_m_Evnts_HeaderSize%:!i%=
shell_HeapBlockExtend(!i%,z%):bB%=!i%:bB%!0+=z%:bB%!4+=1:bB%+=a%:$(bB%)="":
s%=&C
(z%-4)
4:bB%!s%=-1:
:_m_Evnts_LastEvntOffset%=a%
shell_AttachColourPopupMenu(d%,cC%,uC%,q%,a$,W$):
cC%>=0
shell_IconSetButtonType(d%,cC%,_BUTTON_TYPE_CLICK)
_m_WimpColMen_Handle%=q%:
shell_EvntAdd_PopUpMenu(
shell_GetWindowIdentifier(d%),cC%,uC%,q%,a$,W$,_POPUP_TYPE_WIMPCOLOUR):
_shell_Windows_Init:
_WINDOWS_GETSTATE_BLK%36:
_WINDOWS_GETWINFO_BLK%88:
_WINDOWS_GETPINFO_BLK%20:
_WINDOWS_SETEXTENT_BLK%20:gJ%=-1:iJ%=-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%,nE%,t%,FB%,GB%):
KA%,v%:KA%=
shell_HeapBlockFetch(50):v%=
shell_HeapBlockFetch(36):v%!20=0:
shell_OSCheckVersion(3)
nE%=-1
!v%=-2
!v%=nE%
&400CB,,v%
:KA%!0=nE%: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%,QA%,RA%):
OH%,QH%,a%,e%:e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:OH%=e%!&C-e%!4:QH%=e%!16-e%!8:e%!4=QA%:e%!8=RA%:e%!&C=QA%+OH%:e%!16=RA%+QH%:
&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%,_%,NJ%,gA%,eC%,A$:
i%,X$,DA%,FC%:A$=
shell_GetWindowIdentifier(b%):
gA%=0:
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:eC%=i%!16:w%=!_EVNTS_PANES_DATA%:X$=$(w%+eC%):DA%=
shell_GetWindowHandleList(X$):FC%=!DA%
s_c_Evnts_PaneBlk%!0=FC%:
&400C6,,_c_Evnts_PaneBlk%:gA%+=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%):
HD%,KD%,sA%:
(_U%!&64
1<<&A)
d%=-1
d%=-2
}HD%=
shell_HeapBlockFetch(88):!_WINDOWS_GETWINFO_BLK%=d%:
&400CC,,_WINDOWS_GETWINFO_BLK%+1:sA%=_WINDOWS_GETWINFO_BLK%!88
shell_HeapBlockFetch(6000):
$!HD%=d%:
&400CC,,HD%:sA%=HD%!88
shell_HeapBlockReturn(HD%)
:=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%,DB%):
e%,o%,GE%,n%:GE%=
shell_WindowIsOpen(d%):e%=
Windows_ClaimInfoBlock(d%):e%!0=d%:
&400CC,,e%:o%=e%!32:o%=(o%
DB%):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%,sE%,lB%,jB%,GG%):
e%:e%=
shell_HeapBlockFetch(e%):e%!0=n%:e%!4=sE%:e%!8=lB%:e%!&C=jB%:e%!16=GG%:
&400C9,,e%
&400CB,,e%:
shell_HeapBlockReturn(e%):
shell_OpenWindowDynamic2(d%,FB%,GB%):
k%,ED%:ED%=
shell_HeapBlockFetch(20):_U%!20=d%:
&400CF,,ED%:
&400D4,,d%,ED%!0+FB%,ED%!4+GB%:
shell_HeapBlockReturn(ED%):
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%,
HI%):
eA%,fA%,lA%,mA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):_H%=lA%-eA%:HI%=mA%-fA%:
shell_WindowGetCentre(b%,
QI%):
eA%,fA%,lA%,mA%:
shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):NI%=eA%+((lA%-eA%)/2):QI%=fA%+((mA%-fA%)/2):
shell_OpenWindowDynamic(JB$,wA$,xA$):
x%,FB%,GB%,rE%:rE%=
shell_GetDynamicWindowHandle:
rE%<>0
&400D4,,-1:k%=
shell_DeleteWindow(rE%)
shell_CreateWindow(JB$,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%:
wA$<>""
("FN"+wA$+"("+
x%+")")
shell_OpenWindowDynamic2(x%,FB%,GB%):
xA$<>""
("FN"+xA$+"("+
x%+")")
shell_CreateWindow(I$,
lC%:lC%=
shell_GetWB(I$):lC%!64=_U%!16:
&400C1,,lC%
shell_WindowListAddHandle(I$,b%):
Windows_ClaimInfoBlock(b%):=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32))
Windows_ReturnInfoBlock(FA%):
shell_HeapBlockReturn(FA%):
shell_WindowResize(TA%,TI%,UI%,oI%,qI%,GE%):
dD%:dD%=
Windows_ClaimInfoBlock(TA%):_WINDOWS_SETEXTENT_BLK%!0=TI%:_WINDOWS_SETEXTENT_BLK%!4=UI%:_WINDOWS_SETEXTENT_BLK%!8=oI%:_WINDOWS_SETEXTENT_BLK%!&C=qI%:
&400D7,TA%,_WINDOWS_SETEXTENT_BLK%:
)dD%!0=TA%:
&400CC,,dD%:
&400C5,,dD%
Windows_ReturnInfoBlock(dD%):
shell_WindowRetitle(
TA%,l$):
h%,_%,n%,dG%:_%=
Windows_ClaimInfoBlock(TA%):_%!0=TA%:
&400CC,,_%:
((_%!60)
256)=0
Ah%=_%+76:$h%=
l$,&B):
&400C3,,_%:
&400C1,,_%+4
n%<>TA%
shell_UpdateWindowHandle(TA%,n%):TA%=n%
dG%=_%!84:$(!(_%+76))=
l$,dG%-1):
((_%!32)
(1<<16))<>0
&400D1,-1,_%!4,_%!16,_%!&C,_%!16+44
Windows_ReturnInfoBlock(_%)
shell_WindowTitleIndirected(_D%):
(1<<8))=(1<<8)
shell_WindowMoveToPopUpPos(b%,g%,eG%):
mC%,PB%,gG%,hG%,kG%,lG%:
mG%:mC%=
shell_HeapBlockFetch(40):mC%!0=b%:mC%!4=g%:
&400CE,,mC%:gG%=mC%!16:hG%=mC%!20:PB%=
shell_HeapBlockFetch(40):PB%!0=b%:
&400CB,,PB%:kG%=PB%!4:lG%=PB%!16:PB%!0=eG%:
&400CB,,PB%
mG%=PB%!16-PB%!8:
shell_WindowMoveTo(eG%,kG%+gG%,lG%+hG%-(mG%/2)):
shell_HeapBlockReturn(mC%):
shell_HeapBlockReturn(PB%):
shell_WindowScrollTo(b%,NC%,OC%):
nA%:nA%=
shell_HeapBlockFetch(36):!nA%=b%:
&400CB,,nA%:nA%!20=NC%:nA%!24=OC%:
shell_WindowIsOpen(b%)
&400C5,,nA%
&400C5,,nA%:
&400C6,,nA%
shell_HeapBlockReturn(nA%):
shell_WindowScrollBy(b%,NC%,OC%):
nA%:nA%=
shell_HeapBlockFetch(36):!nA%=b%:
&400CB,,nA%:nA%!20+=NC%:nA%!24+=OC%:
shell_WindowIsOpen(b%)
&400C5,,nA%
&400C5,,nA%:
&400C6,,nA%
shell_HeapBlockReturn(nA%):
shell_WindowSetBackgroundColour(
x%,eB%):
v%,n%,tG%,YB%,sA%:sA%=
shell_WindowCountIcons(x%):tG%=
shell_WindowIsOpen(x%):v%=
shell_HeapBlockFetch(&64+(sA%*32)):v%!0=x%:
&400CC,,v%:v%?39=eB%:_shell_open_behind%=v%!28:YB%=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,YB%)
shell_HeapBlockReturn(v%):
shell_WindowSetForegroundColour(
x%,eB%):
v%,n%,AC%,YB%:AC%=
shell_WindowIsOpen(d%):v%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(x%)*32)):v%!0=x%:
&400CC,,v%:v%?38=eB%:_shell_open_behind%=v%!28:YB%=v%!28:
&400C3,,v%:
&400C1,,v%+4
x%<>n%
shell_UpdateWindowHandle(x%,n%):x%=n%
shell_OpenWindow(n%,0,YB%)
shell_HeapBlockReturn(v%):
shell_WindowMoveInStack(b%,CA%):
ZB%,ID%:
CA%<-2
CA%>-1
99,"Invalid action"
shell_HeapBlockFetch(256):ZB%!0=b%:
&400CB,,ZB%:ZB%!28=CA%:
&400E7,2,ZB%,b%
,,ID%:
&400C7,0,ZB%:
shell_HeapBlockReturn(ZB%):
ID%=_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%,AJ%):
A$,a%,gA%,dC%,JE%,X$:
DA%,eC%,i%,w%,FC%:
kB%:gA%=0:JE%=0:dC%=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
a%>=0
Evnts_GetEvntListOffset(A$,gA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
)>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:kB%=i%!20:
kB%=AJ%
eC%=i%!16:kB%=i%!20:w%=!_EVNTS_PANES_DATA%:X$=$(w%+eC%):DA%=
shell_GetWindowHandleList(X$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
&400CB,,_c_Evnts_PaneBlk%:
JE%=0
0JE%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8
:gA%+=1:
:=JE%
shell_WindowCentreOnPointer(x%):
v%,eD%,FB%,GB%:eD%=
shell_HeapBlockFetch(20):
&400CF,,eD%:_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
shell_WindowMoveTo(x%,eD%!0+FB%,eD%!4-GB%)
shell_HeapBlockReturn(_%):
shell_HeapBlockReturn(eD%):
shell_WindowCentreOnScreen(x%):
v%,KE%,LE%,aA%,VA%,rD%,gC%:
&20035,-1,4
,,rD%:
&20035,-1,5
,,gC%:
&20035,-1,&B
,,KE%:
&20035,-1,&C
,,LE%:KE%=KE%<<rD%:LE%=LE%<<gC%:_%=
shell_HeapBlockFetch(36):_%!0=x%:
&400CB,,_%:aA%=(_%!&C-_%!4)
eVA%=(_%!16-_%!8):
shell_WindowMoveTo(x%,(KE%/2)-(aA%/2),(LE%-VA%)/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%,eB%):
eB%<_c_Icons_MinWimpColour%
eB%>_c_Icons_MaxWimpColour%
shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetFGColour")
shell_IconSetState(b%,g%,eB%<<24,&F000000):
shell_IconSetBGColour(b%,g%,eB%):
eB%<_c_Icons_MinWimpColour%
eB%>_c_Icons_MaxWimpColour%
shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetBGColour")
shell_IconSetState(b%,g%,eB%<<28,&F0000000):
shell_IconUnselectable(b%,g%):
shell_IconSetUnselectable(b%,g%,1):
shell_IconSetState(b%,g%,BI%,FI%):_c_Icon_SetIconStateBlk%!0=b%:_c_Icon_SetIconStateBlk%!4=g%:_c_Icon_SetIconStateBlk%!8=BI%:_c_Icon_SetIconStateBlk%!&C=FI%:
&600CD,,_c_Icon_SetIconStateBlk%:
shell_IconSet(b%,g%,_A%):
_A%=0
shell_IconDeselect(b%,g%)
shell_IconSelect(b%,g%)
shell_IconSetSelected(d%,t%,_A%):
_A%=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(qC%,rC%):
shell_IconSetState(qC%,rC%,&200000,&200000):
shell_IconDeselect(qC%,rC%):
shell_IconSetState(qC%,rC%,0,&200000):
shell_IsIconSelected(qC%,rC%):
Icons_GetState(qC%,rC%):o%=_c_Icon_GetIconStateBlk%!24:h%=(o%
&200000):
shell_IconPutValidation(b%,g%,MA$):
o%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:
&$(_c_Icon_GetIconStateBlk%!32)=MA$
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(ME%,LB$):
I%,R$:
ME%<=0
7 R$=""
shell_StringUpperCase($ME%),";"+
shell_StringUpperCase(LB$)):
; R$=""
$(ME%+I%),
$(ME%+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%,DB%,kA%:DB%=(1<<&D)+(1<<&E):o%=
shell_IconGetFlags(b%,g%):j%=(o%
DB%):
j%=DB%
Z kA%=
:=kA%
shell_IconIsWritable(b%,g%):
o%,j%,DB%:DB%=1<<&F:o%=
shell_IconGetFlags(b%,g%):j%=(o%
DB%):
j%=DB%
shell_IconIsSprite(d%,t%):
o%,h%,kA%:o%=
shell_IconGetFlags(d%,t%):h%=(o%
1<<1):
h%=(1<<1)
{ kA%=
:=kA%
shell_IconHasCaret(b%,g%):
EB%,TA%,j%:
&400D3,,_c_Icon_GetCaretPositionBlk%:TA%=_c_Icon_GetCaretPositionBlk%!0:EB%=_c_Icon_GetCaretPositionBlk%!4:
(EB%=g%
TA%=b%)
shell_IconCreate(d%,cB%,NB%,PE%,x%,BF%,CF%,VI%,F$,XB%,ZC%,O$):
WI%,n%,QC%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=cB%:l%!8=NB%:l%!&C=cB%+PE%:l%!16=NB%+x%:l%!20=VI%
CF%<<28
BF%<<24:
l%!20
#WI%=
F$,","):l%!24=XB%:
O$<>""
6QC%=
shell_HeapBlockFetch(
O$+1):$QC%=O$:l%!28=QC%
l%!28=-1
:l%!32=ZC%
$(l%+24)=
F$,&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%,fI%):
YA%,bA%,uA%,CB%:_c_Icon_GetIconStateBlk%!0=d%:_c_Icon_GetIconStateBlk%!4=t%:
&400CE,,_c_Icon_GetIconStateBlk%:
&8168A,,_c_Icon_GetIconStateBlk%+8:YA%=_c_Icon_GetIconStateBlk%!8:bA%=_c_Icon_GetIconStateBlk%!&C
uA%=_c_Icon_GetIconStateBlk%!16:CB%=_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%,YA%,bA%,uA%,CB%
shell_IconRadioSelection(b%,RC%):
fH%,wB%,gH%,hH%:wB%=
shell_HeapBlockFetch(8):fH%=(RC%<<16)+(1<<21):hH%=(31<<16)+(1<<21):
&400D6,b%,wB%,hH%,fH%:gH%=!wB%:
shell_HeapBlockReturn(wB%):=gH%
shell_IconPutData(TA%,EB%,F$,U):
_U%!&64
"WimpExt_SetIconString",,,TA%,EB%,F$+
shell_IconGetData(TA%,EB%):
F$<>dA$
_c_Icon_GetIconStateBlk%!0=TA%:_c_Icon_GetIconStateBlk%!4=EB%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<8))<>0
F$>_c_Icon_GetIconStateBlk%!36
shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
:$(_c_Icon_GetIconStateBlk%!28)=F$
$(_c_Icon_GetIconStateBlk%+28)=
F$,&B)
shell_IconHasCaret(TA%,EB%)
shell_CaretSetRight(TA%,EB%)
a_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
&400CD,,_c_Icon_GetIconStateBlk%
shell_IconPutDataNow(TA%,EB%,F$):_c_Icon_GetIconStateBlk%!0=TA%:_c_Icon_GetIconStateBlk%!4=EB%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<8))<>0
(F$)>_c_Icon_GetIconStateBlk%!36
shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
+%$(_c_Icon_GetIconStateBlk%!28)=F$
$(_c_Icon_GetIconStateBlk%+28)=
F$,&B)
:_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
&400CD,,_c_Icon_GetIconStateBlk%:
shell_EnsurePoll:
shell_IconNewSprite(b%,g%,L$):
NE%,FF%,GF%,HF%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:
(_c_Icon_GetIconStateBlk%!24
(1<<1))
J FF%=
(_c_Icon_GetIconStateBlk%!24
O GF%=
(_c_Icon_GetIconStateBlk%!24
(1<<8))
T HF%=
_c_Icon_GetIconStateBlk%!24
^)$(_c_Icon_GetIconStateBlk%!32)="S"+L$
$(_c_Icon_GetIconStateBlk%!28)=L$:_c_Icon_GetIconStateBlk%!36=
:NE%=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)=L$:
&400C2,,_c_Icon_GetIconStateBlk%
shell_IconRedraw(b%,NE%):=NE%
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%,tH%,wH%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
&400CE,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!8+=tH%:_c_Icon_GetIconStateBlk%!16+=tH%:_c_Icon_GetIconStateBlk%!&C+=wH%
_c_Icon_GetIconStateBlk%!20+=wH%: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%,YA%,bA%,uA%,CB%):=
shell_IconMove(d%,t%,YA%,bA%,uA%,CB%)
shell_IconMove(d%,t%,YA%,bA%,uA%,CB%):
KA%,bJ%,XJ%,fB%,e%:
KG%,LG%,MG%,NG%: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:dI%=KA%!24:IF%=KA%+28
KG%=dI%:LG%=IF%!0:MG%=IF%!4:NG%=IF%!8:fB%=KA%!8-e%!8:
&400C4,,KA%:
&400D1,!KA%,KA%!8-fB%,KA%!&C-fB%,KA%!16+fB%,KA%!20+fB%:t%=
shell_CreateIcon2(d%,YA%,bA%,uA%,CB%,KG%,LG%,MG%,NG%,fB%):
shell_HeapBlockReturn(KA%):
shell_HeapBlockReturn(e%):=t%
shell_CreateIcon2(n%,YA%,bA%,uA%,CB%,o%,tI%,JJ%,LI%,fB%):
EC%,ZA%,J$,p$,cB%,NB%:ZA%=
shell_HeapBlockFetch(60):!ZA%=n%:ZA%!20=o%:ZA%!24=tI%:ZA%!28=JJ%:ZA%!32=LI%:J$="":p$="":
256J$=$(ZA%!24)
J$=$(ZA%+24)
shell_IconGetCommand(ZA%!28,"S")
p$=$(ZA%+24)
shell_GetMinXY(o%,J$,p$):
uA%-YA%<cB%
uA%=YA%+cB%
CB%-bA%<NB%
CB%=bA%+NB%
ZA%!4=YA%:ZA%!8=bA%:ZA%!&C=uA%:ZA%!16=CB%:
&400C2,,ZA%
&400D1,!ZA%,ZA%!4-fB%,ZA%!8-fB%,ZA%!&C+fB%,ZA%!16+fB%:
&400D3,,ZA%:
!ZA%=n%:
ZA%!4=EC%:
&400D2,n%,EC%,0,0,-1,0
shell_HeapBlockReturn(ZA%):=EC%
shell_IconSlab(SE%,d%,t%):
e%:e%=
shell_HeapBlockFetch(50):e%!8=SE%:e%!&C=d%:e%!16=t%:
&81680,,e%:e%!8=0:
&81680,,e%:
shell_HeapBlockReturn(e%):
shell_IconSetButtonType(d%,t%,SC%):
SC%=&C
SC%=&D
shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
SC%<0
SC%>&F
shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
shell_IconSetState(d%,t%,SC%<<&C,&F000):
shell_IconSetESG(d%,t%,RC%):
RC%<0
RC%>31
shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
shell_IconSetState(d%,t%,RC%<<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%,_A%):
_A%<>0
_A%=1<<22
shell_IconSetState(d%,t%,_A%,1<<22):
_A%<>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%,fD%,SI%):
3)=2)
256)<>0)
fD%!4=SI%
shell_IconGetSelectedIcons(d%,RC%,
KA%):
QG%:QG%=(RC%<<16)+(1<<21):
&400D6,d%,KA%,QG%,(RC%<<16)+(1<<21):
shell_IconIndirSize(WB%,o%,fD%,X%):
SB%,RG%,m%,QE%:
&800100)=256
"SB%=fD%!8:
(fD%!4<>-1)
ARG%=fD%!4:
#X%=WB%+RG%:m%=0:
:QE%=
#X%:m%+=1:
QE%<32:SB%+=+m%
SB%=0
:=SB%
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%:
SG%,l%,C,D,TG%,o%,QC%,UG%,iA%,OA$:l%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!l%=b%:
&400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:TG%=l%!68:l%!4=g%:
&400CE,,l%:l%!0=b%
l%!4=_c_Icons_IconDragType%:o%=l%!24:QC%=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
,,iA%:UG%=((iA%
2)=2)
I_m_DSave_DragASpriteInProgress%=
shell_DataSaveDragInProgress
iA%=o%:
&OA$=
shell_IconGetCommand(QC%,"s")
shell_OK(
shell_MessageNoArgs(_c_Icons_NotASpriteIconMess$))
OA$<>""
&42400,_c_Icons_DragFlags%,TG%,OA$,l%+8:_m_DSave_DragASpriteInProgress%=
&400D0,,l%
shell_HeapBlockReturn(l%):
shell_HandleSlider(b%,g%):
shell_IconDragBox2(b%,g%):
l%,C,D,o%,QC%: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:QC%=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%):
gD%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
&400CE,,l%:gD%=(l%!24>>28)
shell_HeapBlockReturn(l%):=gD%
shell_IconGetFGColour(d%,t%):
gD%,l%:l%=
shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
&400CE,,l%:gD%=(l%!24>>24)
shell_HeapBlockReturn(l%):=gD%
shell_IconGetButtonType(b%,g%):
SC%,l%:l%=
shell_HeapBlockFetch(40):l%!0=b%:l%!4=g%:
&400CE,,l%:SC%=(l%!24>>&C)
shell_HeapBlockReturn(l%):=SC%
shell_IconEnsureVisible(b%,g%):
mB%,xB%,VG%:
WG%,XG%,YG%:
MF%,NF%,OF%,PF%:
QF%,RF%:
bG%,cG%:
SF%,TF%:
UF%,VF%:
g%>=0
shell_HeapBlockFetch(36):xB%=
shell_HeapBlockFetch(40):!mB%=b%:
&400CB,,mB%:VG%=mB%!4:WG%=mB%!8:XG%=mB%!&C:YG%=mB%!16:QF%=mB%!20:RF%=mB%!24:cG%=XG%-VG%:bG%=YG%-WG%:xB%!0=b%:xB%!4=g%:
&400CE,,xB%:MF%=xB%!8:NF%=xB%!&C:OF%=xB%!16:PF%=xB%!20
SF%=QF%:VF%=RF%:UF%=QF%+cG%:TF%=RF%-bG%:jC%=
shell_Window_GetBottomPaneDepth(b%)+8:FD%=
shell_Window_GetTopPaneDepth(b%)+8:
NF%<(TF%+jC%)
shell_WindowScrollBy(b%,0,NF%-TF%-jC%)
PF%>(VF%-FD%-jC%)
shell_WindowScrollBy(b%,0,PF%-VF%+FD%+jC%+&C)
OF%>UF%
shell_WindowScrollBy(b%,OF%-UF%,0)
MF%<SF%
shell_WindowScrollBy(b%,MF%-SF%,0)
shell_HeapBlockReturn(mB%):
shell_HeapBlockReturn(xB%)
shell_Icon_SetFont(b%,g%,EJ%):
shell_IconSetUsesOutlineFont(b%,g%,
shell_IconSetState(b%,g%,EJ%<<24,-&1000000):
shell_IconClearAllWritables(b%):
shell_IconSetAllWritables(b%,""):
shell_IconSetAllWritables(b%,XB$):
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(E$):
shell_OSModuleCheckVersion("UtilityModule",3.5)
E$<>""
M,_m_ProgEvnts_DeskFontChangeHandlerFN$=E$
shell_ProgEvnts_DeskFontChanged(IJ%):
k%:_m_ProgEvnts_DeskFontHandle%=IJ%:
_m_ProgEvnts_DeskFontChangeHandlerFN$<>""
bZk%=
("FN"+_m_ProgEvnts_DeskFontChangeHandlerFN$+"("+
_m_ProgEvnts_DeskFontHandle%+")")
shell_AttachPaletteChangeHandler(E$):
E$<>""
{9_m_ProgEvnts_PaletteChangeHandlerFN$=E$:k%=
("FN"+E$)
shell_ProgEvnts_PaletteChanged:
_m_ProgEvnts_PaletteChangeHandlerFN$<>""
("FN"+_m_ProgEvnts_PaletteChangeHandlerFN$)
shell_AttachModeChangeHandler(E$):
E$<>""
6_m_ProgEvnts_ModeChangeHandlerFN$=E$:k%=
("FN"+E$)
shell_ProgEvnts_ModeChanged:
_m_ProgEvnts_ModeChangeHandlerFN$<>""
("FN"+_m_ProgEvnts_ModeChangeHandlerFN$)
shell_AttachSaveDesktopHandler(E$):
E$<>""
)_m_ProgEvnts_SaveDesktopHandlerFN$=E$
shell_ProgEvnts_SaveDesktop(u%):
_m_ProgEvnts_SaveDesktopHandlerFN$<>""
("FN"+_m_ProgEvnts_SaveDesktopHandlerFN$)+
(&A):
z$=""
$z$="Run "+
shell_GetAppDir+
&C,2,u%,z$,
shell_AttachTaskInitialiseHandler(E$):
E$<>""
,_m_ProgEvnts_TaskInitialiseHandlerFN$=E$
shell_ProgEvnts_TaskInitialise(WF%,BB$):
_m_ProgEvnts_TaskInitialiseHandlerFN$<>""
("FN"+_m_ProgEvnts_TaskInitialiseHandlerFN$+"("+
WF%+","+
(34)+BB$+
(34)+")")
shell_AttachTaskCloseDownHandler(E$):
E$<>""
!0+_m_ProgEvnts_TaskCloseDownHandlerFN$=E$
shell_ProgEvnts_TaskCloseDown(WF%):
_m_ProgEvnts_TaskCloseDownHandlerFN$<>""
!@@k%=
("FN"+_m_ProgEvnts_TaskCloseDownHandlerFN$+"("+
WF%+")")
shell_AttachShutdownHandler(E$):
E$<>""
!W&_m_ProgEvnts_ShutdownHandlerFN$=E$
shell_ProgEvnts_Shutdown:
_m_ProgEvnts_ShutdownHandlerFN$<>""
!f.k%=
("FN"+_m_ProgEvnts_ShutdownHandlerFN$)
shell_AttachPreQuitHandler(E$):
E$<>""
!~%_m_ProgEvnts_PreQuitHandlerFN$=E$
shell_ProgEvnts_PreQuit(AB%):
k%,e%,XF%,YF%,s%:
_m_ProgEvnts_PreQuitHandlerFN$<>""
shell_HeapBlockFetch(256):XF%=AB%!0:
4:e%!s%=_Q%!s%:
s%:YF%=e%!4:
XF%<24
ZF%=0
ZF%=e%!20
Me%!&C=e%!8:
&400E7,19,e%,YF%:
("FN"+_m_ProgEvnts_PreQuitHandlerFN$)<>0
_closedown%=
!e%=24:e%!24=508:
&400E7,8,e%,YF%:_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(_$):
iA%,G$,D$:
_$<>""
(_$):_U%!44=iA%
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
iA%=_U%!44:
#iA%,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(AB$,L):
ZC%,R$,j%:
("Set Module$Check Y"):
("RMEnsure "+AB$+" "+
L+" Set Module$Check N"):
35,"Module$Check",_m_OS_VAR_BUFFER%,256,0,0
,,ZC%:_m_OS_VAR_BUFFER%?ZC%=&D:
("Unset Module$Check"):R$=$_m_OS_VAR_BUFFER%:
R$="N"
shell_OSVarExists(QA$):
&20023,QA$,_m_OS_VAR_BUFFER%,-1,0,0
shell_OSVarGetVal(QA$,Y):
RA$,F,GI%,s%:
&20023,QA$,_m_OS_VAR_BUFFER%,_m_OS_VAR_BUFFER_SIZE%,0,-3*(Y=-1)
,,F,GI%:
F-1:RA$=RA$+
(_m_OS_VAR_BUFFER%?s%):
s%:=RA$
shell_OSReadCommandArg(Z):
aF%,g$,a%:g$="":a%=0:
aF%?a%<>0:g$+=
(aF%?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(QA%,RA%,q%):
shell_ExReg_FontMenu_Loaded
shell_FontMenu_GetHandle
&400D4,,q%,QA%-64,RA%
_Q%!0=QA%:_Q%!4=RA%:
&65BC5,q%,_Q%
_Q%!0=QA%:_Q%!4=RA%:
&65BC5,q%,_Q%
:_m_Menu_HandleLastOpened%=q%:iG%=QA%:jG%=RA%:_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%):
PG%,QA%,RA%,k%,_temp%,rA%,K$,iC%,e%:
P$:QA%=_Q%!24:RA%=_Q%!28:_U%!264=0:
_U%!20<>0
#N"k%=
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,QA%,RA%
shell_MenuGetItemAddress(_m_Menu_HandleLastOpened%,_Q%+32):
shell_HeapBlockExists(iC%!4)
shell_MenuWarnDBox(iC%,QA%,RA%)
shell_HeapBlockFetch(32):
&45BC4,_m_Menu_HandleLastOpened%,_Q%+32
,,e%:
shell_FindMenuWarnEvent(e%!8,K$,P$):
shell_HeapBlockReturn(e%):
shell_MenuWarnSubMenu(_Q%!20,QA%,RA%,K$,P$)
shell_MenuWarnDBox(XB%,QA%,RA%):
h%,x%,k%:
#z9h%=XB%!4:
shell_CreateWindow($h%!0,x%):
$h%!4<>""
("FN"+$h%!4+"("+
x%+")")
$h%!8<>""
("FN"+$h%!8+"("+
x%+")")
&400E8,,x%,QA%,RA%:_U%!20=x%:
shell_MenuWarnSubMenu(hD%,QA%,RA%,K$,P$):
k%,h%,iD%,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)")
hD%=_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
,iD%:_U%!264=1
iD%<>_U%!&FC
shell_FontMenuUpdatePtr(iD%):_U%!&FC=iD%:hD%=iD%
_U%!264=0
shell_ExReg_ColourMenu_Loaded
shell_WimpColMen_GetHandle
&400E8,,hD%,QA%,RA%:_m_Menu_SubLastOpened%=hD%:
shell_AttachSubMenu(kC%,fC%,K$):
&45BCE,kC%,fC%:
K$<>""
&45BCC,,
shell_EventListMenuWarn(kC%,fC%,K$,"")
shell_MenuNew(GB$,U$,dF%):
dF%<_c_Menu_MinMenuItems%
dF%=_c_Menu_MinMenuItems%
&45BC1,,GB$,dF%
shell_MenuList_AddMenu(q%,U$):=q%
shell_MenuAdd(n%,jA$,P$):
P$<>""
&45BC2,n%,jA$,P$
&45BC2,n%,jA$
:=NA%
shell_MenuTick(NA%,_A%):
&45BC9,NA%,_A%:
shell_MenuTickItem(NA%):
shell_MenuTick(NA%,1):
shell_MenuUnTickItem(NA%):
shell_MenuTick(NA%,0):
shell_MenuTickOnly1(q%,MA%):
&45BD1,q%,MA%:
shell_MenuTickOnly2(NA%):
&45BD1,NA%:
shell_MenuTickAllItems(q%):
shell_MenuTick(q%,
shell_MenuUntickAllItems(q%):
shell_MenuTick(q%,
shell_MenuShade(n%,_A%):
&45BCB,n%,_A%:
shell_MenuShadeAllItems(q%):
shell_MenuShade(q%,
shell_MenuUnshadeAllItems(q%):
shell_Menushade(q%,
shell_MenuDotted(NA%,_A%):
&45BCA,NA%,_A%:
shell_MenuColours(NA%,BF%,CF%):
&45BD0,NA%,BF%,CF%:
shell_MenuWritable(NA%,_A%,SB%,MA$):
&45BCD,NA%,_A%,SB%,MA$:
shell_MenuPutData(NA%,F$):
&45BC8,NA%,F$:
shell_MenuSortItems(AA%,SA$,OI%,MD%,eF%):
nC%:nC%=
shell_MenuGetNrItems(AA%)-1:_shell_MS_handle%=AA%:
eF%>nC%
eF%=nC%
SA$=""
SA$="_shell_MS_comp"
&406C0:
shell_QuickSort(SA$,"_shell_MS_swap",OI%,MD%,eF%):
&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%,hF%):
gB%,f%,TA$:gB%=
shell_HeapBlockFetch(8):gB%!0=hF%:gB%!4=-1:
&45BC4,q%,gB%
TA$=""
TA$=$(f%)
shell_HeapBlockReturn(gB%):=TA$
shell_MenuGetItemText(q%,hF%):
gB%,f%,J$:gB%=
shell_HeapBlockFetch(8):gB%!0=hF%:gB%!4=-1:
&45BC4,q%,gB%
,,f%:J$=$(f%!&C):
shell_HeapBlockReturn(gB%):=J$
shell_MenuGetItemHandle(q%,wB%):
f%,NA%,o%:f%=
shell_HeapBlockFetch(40):
&65BC4,q%,wB%
,,f%;o%:
NA%=0
NA%=f%!8
shell_HeapBlockReturn(f%):=NA%
shell_MenuGetItemHeight(q%):
&45BC7,q%
AA%:=AA%!20
shell_MenuCalculateHeight(q%):
VA%:VA%=
shell_MenuGetNrItems(q%)*
shell_MenuGetItemHeight(q%):=VA%+(
shell_MenuGetNrDotted(q%)*24)
shell_MenuDelete(q%,YI%):
f%,HA%,r%:
q%<>0
&65BC3,q%,YI%:
shell_MenuList_DeleteMenu(q%)
shell_MenuOpenLast:
&65BC5,_m_Menu_HandleLastOpened%:
shell_MenuCloseAll:
&400D4,,-1:
shell_MenuMakeFromFile(l$,U$,MB$,_$):
q%,X%,C$,k%,nC%:
shell_FileExists(_$)
%K1X%=
(_$):nC%=0:
C$<>""
C$,1)<>"#"
nC%+=1
#X%=0:q%=
shell_MenuNew(l$,U$,nC%):
C$<>""
C$,1)<>"#"
%[ k%=
shell_MenuAdd(q%,C$,MB$)
shell_AttachColourSubMenu(NA%,q%,OB$):
shell_AttachSubMenu(NA%,q%,OB$):
_shell_MenuList_Init:_c_MenuList_HeaderSize%=4:_c_MenuList_ListTerm%=-1:_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0:=0
shell_MenuList_GetSysHandle(U$):
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%)=U$
q%=!oA%
:f%+=4:
shell_MenuList_GetIdentifier(q%):
f%,U$,oA%:
_m_MenuList_DataBlk%<>-1
`f%=0:
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
oA%!0=q%
%U$=$(oA%+_c_MenuList_HeaderSize%)
:f%+=4:
shell_MenuList_AddMenu(q%,U$):
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%+
(U$)+1):oA%=_m_MenuList_DataBlk%!f%:oA%!0=q%:$(oA%+_c_MenuList_HeaderSize%)=U$:_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%
-$(oA%+_c_MenuList_HeaderSize%)="":oA%!0=0
:f%+=4:
shell_MenuList_SaveList(c$):
f%,U$,oA%,u%:
_m_MenuList_DataBlk%<>-1
f%=0:u%=
(c$):
_m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:U$=$(oA%+_c_MenuList_HeaderSize%):
#u%,U$: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:wA%=0:=0
shell_StaticWindowListAddHandle(n%):
a%,m%,h%:
wA%=0
&h2wA%=
shell_HeapBlockFetch(8):wA%!0=n%:wA%!4=-1
shell_SearchStatic(n%):
a%=-1
&t%a%=
shell_SearchStatic(0):
a%=-1
&xYm%=0:
wA%!m%<>-1:m%+=4:
:wA%=
shell_HeapBlockExtend(wA%,4):h%=wA%+m%:h%!0=n%:h%!4=-1
h%=wA%+a%:h%!0=n%
shell_RemoveStaticWindowFromList(b%):
a%,m%,y%:y%=
:m%=0:
wA%>0
wA%!m%=b%
:wA%!m%=0
:m%+=4:
wA%!m%<>-1
shell_UpdateStaticWindowHandle(qB%,HB%):
a%:a%=
shell_SearchStatic(qB%):wA%!a%=HB%:
shell_SearchStatic(n%):
y%,m%:y%=-1:m%=0:
wA%<>0
wA%!m%<>-1:
wA%!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$<>""
`_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%,vA%,e$,sG%):
c%,a%,A$,p%,XA%:
hJ%,m%,kJ%,lJ%,RE%:
b%=_IBAR_RIGHT%
b%=_IBAR_LEFT%
_c_DLoad_ICONBAR_ICON%=g%
vA%=vA%
1<<31
vA%=-1
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset3(A$,g%,vA%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
):c%=!_m_DLoad_Anchor%:XA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=vA%:
!_m_DLoad_DataBlk%=0
'35!_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
RE%=vA%
1<<31
RE%=vA%
_m_DLoad_CmdLineFileType%=RE%
shell_FileExists(_m_DLoad_CmdLineFileName$)
shell_MessageSendDataLoad(RE%,_m_DLoad_CmdLineFileName$):_m_DLoad_LoadPending%=
shell_EvntHandle_DataLoad(ZB%,JD%):_m_DLoad_FileType%=ZB%!40:_m_DLoad_DestWindowHandle%=ZB%!20:_m_DLoad_DestIconHandle%=ZB%!24:_m_DLoad_FileName$=
shell_GetString(ZB%+44):
DataLoad_OKToLoad(JD%)
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%,hI%,GD%,f%:c%=!_m_DLoad_Anchor%:hI%=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:
vA%,GD%:
a%>-1
Zc%=!_m_DLoad_Anchor%:c%+=a%:vA%=c%!16:GD%=vA%
(1<<31):
GD%=_m_DLoad_FileType%
vA%=-1
IkI%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
&400E7,18,_Q%,_Q%!4:
_U%!&64
tB%=-1:_U%!&64=_U%!&64
shell_LoadFile(kI%=_U%!&6C)
DataLoad_CallUserFN(tB%,_m_DLoad_FileType%,_Q%!36,c%):
_U%!&9C<>0
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
DataLoad_CheckType(TE%,JD%):
dJ%,m%,y%,h%,UE%,kA%:m%=0:y%=-1:UE%=
_U%!&64
_U%!&64=_U%!&64
TE%=-1
TE%!m%<>-1:h%=TE%!m%:
1<<31
h%=h%
1<<31:UE%=
h%=_m_DLoad_FileType%
y%=m%:
_U%!&64=_U%!&64
:m%+=4:
(_m_DLoad_FileType%>=4096)
y%=-1
y%<>-1
kA%=
:=kA%
DataLoad_CallUserFN(tB%,vA%,_file_size%,c%):
k%,iF%,UA$,hA%:iF%=c%!20:
iF%>-1
3hA%=!_m_DLoad_DataBlk%:UA$=$(hA%+iF%):
UA$<>""
("FN"+UA$+"("+
tB%+","+
_m_DLoad_FileType%+","+
34+_m_DLoad_FileName$+
34+","+
_file_size%+")")
DataLoad_OKToLoad(JD%):
j%,nA$,oA$:
shell_OSVarGetVal("Alias$@RunType_"+
~_m_DLoad_FileType%,1):oA$=
shell_Branch(nA$):
shell_Leaf(oA$)="!"+
shell_GetAppName
shell_ListDataLoad:
i%,f%,XA%,m%,TE%,jJ%:
g%,s%,h$,ZB$:i%=!_m_DLoad_Anchor%:XA%=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%,jF%,vA%,SG%,B$):
A$,a%,c%,XA%,p%:
shell_IconIsSprite(b%,g%)
shell_OK(
shell_MessageNoArgs(_c_DSave_NotSpriteMess$))
shell_IconSetButtonType(b%,g%,_c_DSave_ButtonTypeClick%):
jF%=0
jF%=_c_DSave_DataSize%
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
):c%=!_m_DSave_Anchor%:XA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=vA%:c%!20=SG%:c%!24=jF%:
!_m_DSave_DataBlk%=0
5!_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:
zA%,AB%,kF%:
_m_DSave_DragInProgress%
_m_DSave_DragASpriteInProgress%
&42401:_m_DSave_DragASpriteInProgress%=
:_m_DSave_DragInProgress%=
:zA%=
shell_HeapBlockFetch(30):
&400CF,,zA%:_m_DSave_DestTaskHandle%=zA%!4:_m_DSave_DestWindowHandle%=zA%!&C:_m_DSave_DestIconHandle%=zA%!16:_m_DSave_MouseXCoord%=zA%!0:_m_DSave_MouseYCoord%=zA%!4:
_m_DSave_DataAddress%>&8000
)-5kF%=
shell_HeapBlockInfo(_m_DSave_DataAddress%)-4
kF%=_m_DSave_DataAddress%
:AB%=
shell_HeapBlockFetch(60):AB%!0=60:AB%!&C=0:AB%!16=1:AB%!20=_m_DSave_DestWindowHandle%:AB%!24=_m_DSave_DestIconHandle%:AB%!28=_m_DSave_MouseXCoord%:AB%!32=_m_DSave_MouseXCoord%:AB%!36=kF%:AB%!40=_m_DSave_FileType%
$(AB%+44)=
shell_Leaf(_m_DSave_FileName$):
&400E7,18,AB%,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=AB%!8:
shell_HeapBlockReturn(zA%):
shell_HeapBlockReturn(AB%)
shell_DataSaveAck(FA%):
vG%,k%:vG%=FA%!&C:
vG%=_m_DSave_MessageMyRef%
)PJ_m_DSave_FullFileName$=
shell_GetString(FA%+44):
_m_DSave_UserFN$<>""
)RHk%=
("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(yB%,_value%):
c%,c%,wG%,xG%,SA%:
DA%,WA$,l%,PJ%,VJ%:
WJ%,YJ%,ZJ%,k%,WA$:
S$,hB%,oC%,mF%:
yB%<0
c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=yB%:wG%=c%!&C:xG%=c%!16:SA%=c%!20:oC%=c%!36:WA$=$c%:DA%=
shell_GetWindowHandleList(WA$):b%=!DA%:
b%<=0
b%=DA%!4
:_m_Sliders_IconBlk%!0=b%:_m_Sliders_IconBlk%!4=xG%:
&400CE,,_m_Sliders_IconBlk%:oF%=_m_Sliders_IconBlk%!16:WE%=_m_Sliders_IconBlk%!8:XE%=_m_Sliders_IconBlk%!&C:pF%=_m_Sliders_IconBlk%!20:mF%=
(XE%)-
(pF%):nF%=oF%-WE%:_m_Sliders_IconBlk%!4=wG%
&400CE,,_m_Sliders_IconBlk%:
&400C4,,_m_Sliders_IconBlk%:_m_Sliders_IconBlk%!4=b%:
_value%>&64
_value%=&64
_value%<=0
_value%=0:
nF%>mF%
*(0_m_Sliders_IconBlk%!16=_m_Sliders_IconBlk%!8
_m_Sliders_IconBlk%!20=_m_Sliders_IconBlk%!&C
nF%>mF%
*.F_m_Sliders_IconBlk%!16=WE%+(oF%*(_value%/&64))-(WE%*(_value%/&64))
_m_Sliders_IconBlk%!20=XE%+(pF%*(_value%/&64))-(XE%*(_value%/&64))
:c%!36=_value%:
&400C2,,_m_Sliders_IconBlk%+4:
&400D1,b%,WE%,XE%,oF%,pF%:hB%=!_EVNTS_SLIDERS_DATA%:
hB%>0
S$=$(hB%+c%!32)
S$<>""
*>"k%=
("FN"+S$+"("+
_value%+")")
SA%>=0
shell_IconPutData(b%,SA%,
(_value%),
shell_AttachSliderHandler(b%,BH%,kD%,uC%,qF%,DH%,a$):
TJ%,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%
*WNc%!16=BH%:c%!20=uC%:c%!24=qF%:c%!28=DH%: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%,BH%,"_Sliders_BackgroundClick"):
qF%>=0
shell_AttachBumpHandler(b%,uC%,qF%,DH%,0,&64,1,
,"_Sliders_Bump","")
_Sliders_Bump(UD%,pC%):
b%,g%,c%,QB%,OA%,OB%:
y%,yB%,A$,lD%,mD%:b%=
shell_GetLastWindowClicked:g%=
shell_GetLastIconClicked:A$=
shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:OB%=c%!0:OA%=c%!4:QB%=_m_Evnts_HeaderSize%:y%=
2lD%=c%!(QB%+24):mD%=c%!(QB%+28):
A$=$(c%+QB%)
lD%=g%
mD%=g%
:yB%=QB%
:QB%+=_EVNTS_SLIDERS_REC_SIZE%:
QB%>=OB%
shell_SliderSetValue(yB%,UD%)
(UD%)
shell_HandleSlider(b%,g%):
A$,c%,FH%,SA%:
QB%,S$,hB%,oC%,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
YQB%=c%+a%:FH%=!(QB%+16):SA%=!(QB%+20):oC%=!(QB%+36):hB%=!_EVNTS_SLIDERS_DATA%:
hB%>0
S$=$(hB%+QB%!32)
:_m_Sliders_DragBlk%!0=b%:_m_Sliders_DragBlk%!4=FH%:
&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%=SA%:_m_Slider_NotifyFN$=S$:_m_Slider_CurrentValue%=oC%:_m_Sliders_DragBlk%!0=b%:
&400CB,,_m_Sliders_DragBlk%:QA%=_m_Sliders_DragBlk%!4-_m_Sliders_DragBlk%!20:RA%=_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+=QA%:_m_Sliders_DragBlk%!&C+=RA%:_m_Sliders_DragBlk%!16+=QA%:_m_Sliders_DragBlk%!20+=RA%:_m_Sliders_DragBlk%!24=_m_Sliders_DragBlk%!8
__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%,QA%,e%,k%,ZE%,RA%:
&400CF,,_m_Sliders_MPtrBlk%:b%=_m_Sliders_MPtrBlk%!&C:nD%=!_m_Sliders_MPtrBlk%:ZE%=_m_Sliders_MPtrBlk%!4:
nD%<>_m_Sliders_LastXPos%
ZE%<>_m_Sliders_LastYPos%
_m_Sliders_LastXPos%=nD%:_m_Sliders_LastYPos%=ZE%:e%=_m_Sliders_WorkBlk%:!e%=b%:
&400CB,,e%:QA%=nD%-e%!4:RA%=ZE%-e%!16:e%!4=_m_Sliders_SliderIcon%:
&400CE,,e%:
&400C4,,e%:e%!4=b%:
_m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
e%!16=QA%:
&400C2,,e%+4:
&400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20:_value%=((QA%-e%!8)*&64)/_m_Sliders_MaxLength%:
shell_SliderSetValue(_m_Sliders_CurrentSliderHandle%,_value%)
e%!20=RA%:
&400C2,,e%+4:
&400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20+_m_Sliders_MaxHeight%:_value%=((RA%-e%!&C)*&64)/_m_Sliders_MaxHeight%
_m_Slider_NotifyFN$<>""
("FN"+_m_Slider_NotifyFN$+"("+
_value%+")")
:_m_Sliders_LastXPos%=nD%
shell_SliderGetValue(yB%):
c%,oC%:c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=yB%:oC%=c%!36:=oC%
_Sliders_BackgroundClick(b%,g%):
k%:k%=
_Sliders_Drag(b%,g%):=0
_Sliders_Drag(b%,g%):
c%,OA%,z%,f%,A$:
y%,OB%,yB%,SA%:c%=!_EVNTS_SLIDERS_ANCHOR%:z%=_EVNTS_SLIDERS_REC_SIZE%:OB%=c%!0:OA%=c%!4:f%=_m_Evnts_HeaderSize%:A$=
shell_GetWindowIdentifier(b%):y%=
$(c%+f%)=A$
c%!(f%+16)=g%
+>-y%=
:kD%=c%!(f%+&C):SA%=c%!(f%+20):yB%=f%
:f%+=z%:
f%>=OB%
shell_IconDragBox(b%,kD%):
SA%<>-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:
MA%,EA$:
&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 "+
+")")
$:MA%=
$,"in "+
34+"EvntShell:ShellLib"):
MA%>0
$,MA%-1)
=EA$+=" (Internal error code "+
+")":
shell_ErrorBox(EA$)
shell_DataSaveResetDragFlags:
shell_OK(DB$):
_ERRNR_NONFATAL,DB$
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$):
jB%:!_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(v$,
KI%):
oD%,tF%,IH%,MB%:
JH%,MA%,aE%,f$,IA%,LH%,j%:
MH%,pD%:aE%=
shell_HeapBlockFetch(&C):MA%=0:IA%=0:JH%=
shell_FileLength(v$):RI%=
shell_HeapBlockFetch(JH%):oD%=RI%:
shell_TemplateFileInfo(v$,MB%,IA%,j%):
shell_HeapBlockFetch(4+(20*IA%)):_U%!4=qD%:PH%=
shell_HeapBlockFetch(MB%):tF%=PH%:IH%=PH%+MB%:IA%=0:pD%=4:
&600D9,,v$
;LH%:
shell_MessageTwoArgs("SHELLMSG34","template",v$)
:$aE%="*":
&400DB,,oD%,tF%,IH%,_U%!&E8,aE%,MA%
,,tF%,,,f$,MA%:
MA%<>0
,J\qD%!pD%=oD%:$(qD%+pD%+4)=f$:qD%!(pD%+16)=-1:pD%+=20:MH%=(oD%!84)*32:oD%+=(88+MH%):IA%+=1
MA%=0:
&400DA:_U%!0=IA%
shell_MessageTwoArgs("SHELLMSG35","template",v$)
shell_MessageTwoArgs("SHELLMSG36",v$,"template")
shell_HeapBlockReturn(aE%):KI%=0:!qD%=IA%:
shell_WindowLoaded(I$):
a%,vF%:a%=
shell_GetWindowListOffset(I$):
a%>=0
shell_GetWindowListOffset(I$):
a%,IA%,RB%,m%:
(I$)>&B
shell_MessageOneArg("SHELLMSG02",I$)
,ziIA%=
shell_GetNrTemplatesLoaded:RB%=
shell_WindowListGetAddr+4:m%=0:a%=-1:
$(((RB%)+(20*m%))+4)=I$
a%=m%*20
:m%+=1:
a%<>-1
m%>(IA%-1):=a%
shell_GetWB(I$):
a%,PB%,RB%:a%=
shell_GetWindowListOffset(I$):
99,I$+":"+
*RB%=
shell_WindowListGetAddr+4:
a%>=0
PB%=RB%!a%
shell_MessageOneArg("SHELLMSG03",I$)
:=PB%
shell_GetWindowHandleList(I$):
a%,DA%,RB%:a%=
shell_GetWindowListOffset(I$):RB%=
shell_WindowListGetAddr+4:
a%>=0
DA%=!(RB%+a%+16)
shell_MessageOneArg("SHELLMSG03",I$)
:=DA%
shell_CreateWindowStatic(I$,
lC%:lC%=
shell_GetWB(I$):lC%!64=_U%!16:
&400C1,,lC%
shell_StaticWindowListAddHandle(b%):
shell_WindowListAddHandle(I$,b%):
shell_WindowListAddHandle(I$,b%):
RH%,EA%,f%,yF%:
I$=""
99,"Bad window name passed to WindowListAddHandle"
VRH%=
shell_GetWindowListOffset(I$)+16:EA%=
shell_WindowListGetAddr+4+RH%:
!EA%=-1
9!EA%=
shell_HeapBlockFetch(8):f%=!EA%:f%!0=b%:f%!4=-1
EA%!16<>-1
/DA%=!EA%:f%=0:yF%=
DA%!f%<>-1:
DA%!f%=0
DA%!f%=b%:yF%=
:f%+=4:
f!EA%=
shell_HeapBlockExtend(!EA%,4):RB%=!EA%:f%=0:
RB%!f%<>-1:f%+=4:
:RB%!(f%+0)=b%:RB%!(f%+4)=-1
shell_GetWindowIdentifier(n%):
EA%,IA%,f%,m%,AA$:IA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:AA$="":
-1,-2:AA$="iconbar"
EA%!16<>-1
8DA%=EA%!16:f%=0:
DA%!f%<>-1:
DA%!f%=n%
AA$=$(EA%+4)
f%+=4:
:m%+=1:EA%+=20:
AA$<>""
m%=IA%
:=AA$
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(qB%,HB%):
EA%,IA%,I%,f%:IA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:
EA%!16<>-1
-E7DA%=EA%!16:f%=0:
DA%!f%<>-1:
DA%!f%=qB%
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
-mYIA%=
shell_GetNrTemplatesLoaded:EA%=
shell_WindowListGetAddr+4:
EA%!16<>-1
-q2DA%=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(XI%):
"WriteN",XI%,0
C$:=C$
shell_GetString(SH%):
tA$,eE%:
((SH%?eE%)>31
eE%<&FF):tA$+=
(SH%?eE%):eE%+=1:
:=tA$
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$,aB%):
(C$)<aB%:C$=C$+
(C$),i$):
shell_StringPadLeading(C$,i$,aB%):
(C$)<aB%: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$)
.90TB%=
C$,YA$):C$=
C$,TB%-1)+IB$+
C$,TB%+
shell_StringArrayGetLongest(A$(),OE%):
s%,fE%:fE%=0:
(A$(s%))>fE%
(A$(s%))
s%:=fE%
mem_to_string(FA%,a%,aI%):
FA%?a%<>aI%: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(bI%,FA$):
UH%:UH%=(
(FA$)+30)
3:_MESSAGES_WORK_BLK%!&C=0:_MESSAGES_WORK_BLK%!16=bI%:$(_MESSAGES_WORK_BLK%+20)=FA$+
(0):_MESSAGES_WORK_BLK%!0=UH%:
&600E7,17,_MESSAGES_WORK_BLK%,0:
_shell_Memory_Init:=0
shell_HeapManagerInit(H$,cI%):
_heap_code%900:
("LOAD "+H$+"heapcode "+
~_heap_code%):
_heap_code%+0,cI%:
shell_HeapBlockExtend(VH%,zF%):
_heap_code%+&C,VH%,zF%:=VH%
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"
shell_HeapBlockInfo(XB%):
shell_HeapBlockInfo(rA%):
29,6,!(_heap_code%+28),rA%
,,,P:=P
shell_HeapBlockExtendMid(rA%,lB%,WH%):
XH%:XH%=
shell_HeapBlockInfo(rA%):
_heap_code%+&C,rA%,lB%:
&400F1,_U%!&94,rA%+WH%,_U%!&94,rA%+WH%+lB%,XH%-lB%:=rA%:B
_shell_Poll_Init:
YH%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(DB%,ID%):
_U%!&64
"WimpExt_PrePoll"
&400E1,DB%,YH%,_POLL_EARLIEST_TIME%
_U%!&64
"WimpExt_Action",_U%!&94,YH%,UC%
shell_PollSetInterval(_F%):_POLL_INTERVAL%=_F%:
shell_PollSetPrevInterval(_F%):_POLL_PREVINTERVAL%=_F%:
shell_PollReadInterval:=_POLL_INTERVAL%
shell_PollReadPrevInterval:=_POLL_PREVINTERVAL%
shell_Poll_I(DB%,ID%):
_U%!&64
"WimpExt_PrePoll"
&400C7,DB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,UC%
&81686,UC%,,ID%:=UC%
poll(DB%,ID%):
_U%!&64
"WimpExt_PrePoll"
&400C7,DB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,rA%
=rA%:B
_shell_IntHelp_Init:
LJ%60:_IntHelp_IsOn%=
shell_InteractiveHelp(_Q%):
M$,Z$,O$,zB%,AG%,VB$,o%:
shell_EvntHandle_HelpTags(_Q%!32,_Q%!36,M$):O$=
shell_IconGetValidation(_Q%!32,_Q%!36):
O$<>""
shell_StringUpperCase(
O$,1))="I"
O$,";"):
zB%=0
O$,2)
O$,2,zB%-2)
shell_StringUpperCase(O$),
shell_StringUpperCase(";i")):AG%=
shell_StringUpperCase(O$),
shell_StringUpperCase(";"),zB%+1):
zB%>0
AG%>0
O$,zB%+2,AG%-zB%-2)
O$,zB%+2)
M$<>""
_Q%!16=&503:_Q%!&C=_Q%!8:Z$=
shell_MessageLookup(M$,"",""):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%,aH%,bH%,nB%,oB%,jI%,cH%,uA$,vA$):
c%,a%,A$:A$=
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,aH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=aH%:c%!16=jI%
048c%!20=g%:c%!24=nB%:c%!28=oB%:
cH%=-1
c%!40=1
c%!40=0
!_EVNTS_BUMP_DATA%=0
0:/!_EVNTS_BUMP_DATA%=
shell_HeapBlockFetch(1)
:p%=c%+32:
uA$<>""
Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,uA$)
!p%=-1
:p%=c%+36:
vA$<>""
Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,vA$)
!p%=-1
Evnts_GetEvntListOffset(A$,bH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=bH%:
cH%=-1
c%!40=1
c%!40=0
c%!40=c%!40
(1<<2):
shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
A$,a%,i%,gE%:
iB%,QD%,nB%,oB%,pC%,BG%,CG%:
RD%,DG%,_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%,
):pC%=
shell_GetLastMouseButton:
a%>=0
0j8i%=!_EVNTS_BUMP_ANCHOR%+a%:
i%!40
(1<<2)
i%!40
(1<<0)
i%-=_EVNTS_BUMP_REC_SIZE%
0nIiB%=i%!16:QD%=i%!20:nB%=i%!24:oB%=i%!28:BG%=
(-1):CG%=
(-2):
0w*iB%=iB%*_c_Bumpers_ShiftCtrlKeyFactor%
iB%=iB%*_c_Bumpers_ShiftKeyFactor%
iB%=iB%*_c_Bumpers_CtrlKeyFactor%
:hB%=!_EVNTS_BUMP_DATA%:
hB%>0
i%!32>=0
ZA$=$(hB%+i%!32)
i%!36>=0
aA$=$(hB%+i%!36)
:bA$=
shell_IconGetData(_window_handle%,QD%):
aA$<>""
)RD%=
("FN"+aA$+"( "+
34+bA$+
34+" )")
(bA$)
pC%=_MSE_ADJUSTBUT
_new_val%=RD%+iB%
_new_val%=RD%-iB%
pC%=_MSE_ADJUSTBUT
_new_val%=RD%-iB%
_new_val%=RD%+iB%
_new_val%>oB%
_new_val%=oB%
_new_val%<nB%
_new_val%=nB%
_new_val%>oB%
_new_val%=nB%
_new_val%<nB%
_new_val%=oB%
ZA$<>""
0_new_val$=
("FN"+ZA$+"(_new_val%,"+
pC%+")")
_new_val$=
_new_val%
shell_IconPutData(_window_handle%,QD%,_new_val$,
shell_ListBumpers:
HA%,r%,z%,f%,OA%,JB%:
lD%,mD%,yA$,NB$,GA%,s%,h$:
iH%,QD%,nB%,oB%:r%=!_EVNTS_BUMP_ANCHOR%:z%=_EVNTS_BUMP_REC_SIZE%:OA%=(r%!4)/2:
Evnts_DebugListHeader ("Bump ","Window Inc Dec Disp Step Lower Upper Value Change FN"):
f%=_m_Evnts_HeaderSize%:
OA%:A$=$(r%+f%):lD%=r%!(f%+&C):mD%=r%!(f%+&C+_EVNTS_BUMP_REC_SIZE%):iH%=r%!(f%+16):QD%=r%!(f%+20):nB%=r%!(f%+24):oB%=r%!(f%+28):GA%=!_EVNTS_BUMP_DATA%:
GA%>0
/yA$=$(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(
iH%," ",4)
h$+=" "+
shell_StringPadLeading(
nB%," ",5):h$+=" "+
shell_StringPadLeading(
oB%," ",5):h$+=" "+yA$: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%,XA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
):c%=!_m_PointerIn_Anchor%:XA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!_m_PointerIn_DataBlk%=0
1L9!_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$<>""
1e[a%=
Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
a%>=0
1gti%=!_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%,XA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
):c%=!_m_PointerOut_Anchor%:XA%=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(zA$,jH%,mJ%):
&400E9,_m_Pointer_SetShape_Reason%,,zA$,_m_Pointer_SetShape_Ptr_Nr%,jH%,jH%:_m_Pointer_ShapeChanged%=
:_m_Pointer_CurrentShape$=zA$:
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(
pC%):
&400CF,,_m_Pointer_GetInfoBlk%:pC%=_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(kH%,lH%,dA%,cA%,
VB%):UB%=dA%-kH%:VB%=cA%-lH%:JC%=
:KC%=
:MC%=
:LC%=
(UB%)>
(VB%)
dA%>kH%
2z MC%=
cA%<lH%
KC%=
UB%<>0
VB%<>0
_m_evnts_DragIconLastScrollUp%=JC%:_m_evnts_DragIconLastScrollDown%=KC%:_m_evnts_DragIconLastScrollLeft%=LC%:_m_evnts_DragIconLastScrollRight%=MC%:_m_evnts_DragIconLastDX%=UB%:_m_evnts_DragIconLastDY%=VB%
shell_PointerGetLastMovementVector(
VB%):JC%=_m_evnts_DragIconLastScrollUp%:KC%=_m_evnts_DragIconLastScrollDown%:LC%=_m_evnts_DragIconLastScrollLeft%:MC%=_m_evnts_DragIconLastScrollRight%:UB%=_m_evnts_DragIconLastDX%
"VB%=_m_evnts_DragIconLastDY%:
shell_PointerLimit(b%):
shell_MouseLimit(b%):
shell_PointerRemoveLimits:
shell_MouseRemoveLimits:
_shell_CaretMove_Init:mH%=20:
sD%4:
tD%4:!sD%=0:!tD%=0:vI%=0:oH%=20:
uD%4:
vD%4:!uD%=0:!vD%=0:xI%=0:=0
shell_AttachCaretPreMoveHandler(b%,B$):
c%,a%,A$,p%,XA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,sD%,mH%,
):c%=!sD%:XA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!tD%=0
'!tD%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,tD%,vI%,B$)
shell_EvntHandle_CaretPreMove(_window_handle%,_icon_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
Evnts_GetEvntListOffset(A$,-1,sD%,mH%,
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%,XA%:
shell_GetWindowIdentifier(b%):a%=
Evnts_GetEvntListOffset(A$,-1,uD%,oH%,
):c%=!uD%:XA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
!vD%=0
3:'!vD%=
shell_HeapBlockFetch(
(B$)+1)
:p%=c%+16:
Evnts_UpdateData(p%,vD%,xI%,B$)
shell_EvntHandle_CaretPostMove(_window_handle%,_icon_handle%):
A$,a%,i%,JA%,w%,B$:
k%:A$=
shell_GetWindowIdentifier(_window_handle%):
A$<>""
3S8a%=
Evnts_GetEvntListOffset(A$,-1,uD%,oH%,
a%>=0
3U`i%=!uD%+a%:JA%=i%!16:w%=!vD%:B$=$(w%+JA%):k%=
("FN"+B$+"( _window_handle%, _icon_handle% )")
_shell_Caret_Init:=0
shell_CaretSetPosition(TA%,EB%,yI%,zI%,VA%,TB%):
&400D2,TA%,EB%,yI%,zI%,VA%,TB%:
shell_IconEnsureVisible(TA%,EB%):
shell_CaretReadPosition(
TB%):
BA%:BA%=
shell_HeapBlockFetch(24):
&400D3,,BA%:TA%=BA%!0:EB%=BA%!4:NC%=BA%!8:OC%=BA%!&C:TB%=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%,pH%,m%,f%,_B%:m%=0:f%=0:BA%=
shell_HeapBlockFetch(&800):
&400D3,,BA%:
BA%!4<>-1
?pH%=BA%!4:
&400D6,d%,BA%,&40E000,&E000:
BA%!m%=pH%
f%=m%
m%+=4:
BA%!m%=-1:
0:_B%=!BA%
1:_B%=BA%!(m%-4)
BA%!(f%+4)<>-1
_B%=BA%!(f%+4)
_B%=!BA%
_B%=BA%!(f%-4)
_B%=BA%!(m%-4)
&400D2,d%,_B%,-1,-1,-1,
shell_IconGetData(d%,_B%)):
shell_IconEnsureVisible(d%,_B%)
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$):
VC%,S%,T%:S%=
(N$):T%=
#S%+16:
#S%:VC%=
shell_HeapBlockFetch(T%):!VC%=T%:VC%!4=0:VC%!8=_c_Sprites_AreaHeaderSize%:VC%!&C=_c_Sprites_AreaHeaderSize%:
46,521,VC%:
46,522,VC%,N$:=VC%
shell_UserSpritesBase:=_U%!16
shell_SpriteGetPtr(SD%,f$):
jE%,f%:jE%=
shell_HeapBlockFetch(21):$jE%=f$:
46,280,SD%,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(SD%,RB$,SB$):
46,512+26,SD%,
shell_SpriteGetPtr(SD%,RB$),SB$:
shell_SpriteAreaSave(SD%,N$):
46,512+&C,SD%,N$:
shell_SpriteExists(UA%,L$):
UA%=1
IG%=40
IG%=256+40
46,IG%,UA%,
shell_StringLowerCase(L$):=
shell_SpriteExistsInUserArea(L$):=
shell_SpriteExists(
shell_UserSpritesBase,L$)
shell_SpriteExistsInWimpPool(L$):=
shell_SpriteExists(1,L$)
shell_SpriteAreaInit(UA%,BJ%):UA%!0=BJ%:UA%!8=_c_Sprites_AreaHeaderSize%:
46,_c_Sprites_ReasonInitArea%+256,UA%:
shell_SpriteLoad(UA%,c$):
46,_c_Sprites_ReasonLoad%+256,UA%,c$:
shell_SpriteRemoveLeftWastage(UA%,L$,WC%):
L$=""
WC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonRemoveLeftWastage%+512,UA%,WC%
46,_c_Sprites_ReasonRemoveLeftWastage%+256,UA%,L$
shell_SpriteGetSize(UA%,L$,WC%,
VA%):
L$=""
WC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonGetSize%+512,UA%,WC%
,,,aA%,VA%
46,_c_Sprites_ReasonGetSize%+256,UA%,L$
,,,aA%,VA%
shell_SpriteGetMode(UA%,L$,WC%,
TD%):
L$=""
WC%<=0
99,_c_Sprites_BadNameOrPtr$
46,_c_Sprites_ReasonGetSize%+512,UA%,WC%
,,,,,,TD%
46,_c_Sprites_ReasonGetSize%+256,UA%,L$
,,,,,,TD%
shell_SpriteLoadAsDraw(c$,uH%,NC%,OC%,
FJ%):
pA%,GJ%,UA%:
aA%,VA%,TD%,xH%,yH%:
shell_DrawCreateFile(yD%):
shell_DrawSpriteArea(yD%,uH%,UA%):FJ%=UA%-yD%:pA%=yD%+yD%!4:GJ%=48:
shell_SpriteLoad(UA%,c$)
shell_SpriteRemoveLeftWastage(UA%,"",UA%+_c_Sprites_AreaHeaderSize%):
shell_SpriteGetSize(UA%,"",UA%+_c_Sprites_AreaHeaderSize%,aA%,VA%):
shell_SpriteGetMode(UA%,"",UA%+_c_Sprites_AreaHeaderSize%,TD%):
53,TD%,4
,,xH%:
53,TD%,5
,,yH%:aA%=aA%<<xH%
VA%=VA%<<yH%:$pA%="Draw":pA%!4=&C9:pA%!8=0:$(pA%+&C)="SprToDraw":pA%!24=NC%*256:pA%!28=OC%*256:pA%!32=(pA%!24)+aA%*256:pA%!36=(pA%!28)+VA%*256:zH%=5:pA%!40=zH%:pA%!44=uH%+24:pA%!48=NC%*256:pA%!52=OC%*256:pA%!56=(pA%!48)+aA%*256:pA%!60=(pA%!52)+VA%*256