>EvntShell:ShellLib Squished by Lofty's !Shrink vsn 3.01 on 03-Dec-94 shell_LibraryVersion:=1.38*&64 shell_DefineConstants:G=&D00:M=&903:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:t=0:r=1:w=2:x=3:Z=0:a=1:b=2:c=3:d=4:e=6:W=7:Y=8:n=9:o=&A:s=&E:X=&502:R=&400C0:S=&400C1:T=&400C2:U=&400C3:V=&400C7:_POPUP_TYPE_TEXT=0:_POPUP_TYPE_WIMPCOLOUR=1 AJ_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_COLOUR24=8: shell_Error: FA%,EA$: &606C2: 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 "+ +")") $:FA%= $,"in "+ 34+"EvntShell:ShellLib"): FA%>0 $,FA%-1) shell_ErrorBox(EA$) shell_OK(fA$): G,fA$ 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(rA$): TB%,_A%:_A%=_shell_blk%:!_A%= :$(_A%+4)=rA$+ &600DF,_A%,17,"XMessage from "+ shell_GetAppName &600DF,_A%,1, shell_GetAppName shell_GetLastSecureFileName: c%:c%=_U%!80: shell_GetString(HF%): aA$,yC%: ((HF%?yC%)>31 yC%<&FF):aA$+= (HF%?yC%):yC%+=1: :=aA$ shell_GetEventHandler(b%,_%,UC%): e%,i%,m%,q%,A$: b%=-1 b%=-2 shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%= :i%=_U%!&C:A$="": (i%!e%=b%) i%!(e%+4) i%!(e%+(&C+(UC%*4)))>&8000 #A$=$(i%!(e%+(&C+(UC%*4)))):m%= e%+=48 i%!(e%+4)=_% i%!(e%+(&C+(UC%*4)))>&8000 #A$=$(i%!(e%+(&C+(UC%*4)))):m%= e%+=48 e%+=48 e%+=48 ((e%>=q%) m%):=A$ shell_GetEventMenu(lB%,b%,_%): e%,i%,m%,q%,n%: b%=-1 b%=-2 shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%= :i%=_U%!&C:A$="": (i%!e%=b%) shell_Tracef0("GetEventMenu:window handle matched.."): i%!(e%+4)=_% "n%=i%!(e%+8): n%=-2 n%=_U%!&FC :e%+=48: (e%>=q% m%):=n% shell_GetEventListOffset(b%,f%,i%,GB%,bC%): q%,e%,m%,d%,JB%,c%: (!i%=0 (!i%=0) @:!i%= shell_HeapBlockFetch(GB%):c%=!i%:c%!0=0:c%!4=0:=0 shell_HeapBlockInfo(!i%)-8:e%=0:m%= :d%=-1:JB%=-1:c%=!i%: JB%<0 (c%!e%=0 c%!e%+4=0) JB%=e% (c%!e%=b%) f%=-1 d%=e%:m%= shell_Tracef0("GetEventListOffset:icon handle is not -1"): c%!(e%+4)=f% d%=e%:m%= e%+=GB% e%+=GB% ((e%>=q%) (d%=-1 JB%<0 qId%=q%:!i%= shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%+=d%:c%!0=0:c%!4=0 d%=JB% shell_AttachPane(b%, cD%,l%,mA%,pA%): a%,d%,c%,RB%,gD%: shell_Tracef0("AttachPane:Attaching Pane Handler"):gD%= shell_WindowGetFlags(cD%): 1<<5)=0 shell_Tracef0("AttachPane:'Pane' bit of pane window is not set, fixing.."): shell_WindowToggleFlags(cD%,1<<5) 1<<1) shell_Tracef0("AttachPane:'Moveable' bit of pane window is set, fixing.."): shell_WindowToggleFlags(cD%,1<<1) shell_GetEventListOffset(b%,-1,_U%+92,24, shell_Tracef0("AttachPane:Creating pane event block"):d%= shell_GetEventListOffset(b%,-1,_U%+92,24, ):a%=_U%!92+d%:a%!0=b%:a%!4=-1:a%!8= shell_HeapBlockFetch(4):a%!&C= shell_HeapBlockFetch(4):a%!16= shell_HeapBlockFetch(4) aa%!20= shell_HeapBlockFetch(4):c%=a%!8:!c%=-1:c%=a%!&C:!c%=-1:c%=a%!16:!c%=-1:c%=a%!20:!c%=-1 :a%=_U%!92+d%:c%=a%!8:g%=0:RB%=0: c%!g%<>-1:g%+=4:RB%+=1: :a%!8= shell_HeapBlockExtend(a%!8,4):c%=a%!8:c%!(RB%*4)=cD%:c%!((RB%+1)*4)=-1:a%!&C= shell_HeapBlockExtend(a%!&C,4):c%=a%!&C:c%!(RB%*4)=l%:c%!((RB%+1)*4)=-1 a%!16= shell_HeapBlockExtend(a%!16,4):c%=a%!16:c%!(RB%*4)=mA%:c%!((RB%+1)*4)=-1:a%!20= shell_HeapBlockExtend(a%!20,4):c%=a%!20:c%!(RB%*4)=pA%:c%!((RB%+1)*4)=-1: shell_AttachDataLoad(b%,f%,x%,A$,lG%): a%,c%,d%,P$: shell_Tracef0("AttachDataLoad:Attaching DataLoad Handler"): b%=-1 b%=-2 x%=x% 1<<31 shell_GetEventListOffset(b%,f%,_U%+96,16, ):a%=_U%!96+d%: a%!0=0 a%!4=0 shell_Tracef0("AttachDataLoad:This is the first DataLoad Event..."):a%!0=b%:a%!4=f%:a%!8= shell_HeapBlockFetch(8):c%=a%!8:c%!0=x%:c%!4=-1:a%!&C= shell_HeapBlockFetch(8):c%=a%!&C:c%!0= shell_HeapBlockFetch( (A$)+1):c%!4=-1:c%=c%!0:$c%=A$ shell_Tracef0("AttachDataLoad:This is another DataLoad Event..."):a%!8= shell_HeapBlockExtend(a%!8,4):a%!&C= shell_HeapBlockExtend(a%!&C,4):g%=0:c%=a%!8: c%!g%<>-1:g%+=4: :c%!g%=x%:c%!(g%+4)=-1:c%=a%!&C:c%!g%= shell_HeapBlockFetch( A$+1) c%=c%!g%:$c%=A$ shell_GetCmdLineArgs: shell_Tracef0("AttachDataLoad:cmdline ="+P$): shell_Tracef0("AttachDataLoad:flag bit ="+ ((_U%!&64 1<<5))): shell_Tracef0("AttachDataLoad:wh% ="+ ~b%): shell_Tracef0("AttachDataLoad:type% ="+ P$<>"" (_U%!&64 1<<5) 1<<31 c%=x% 1<<31 c%=x% shell_FileType(P$)=c% shell_Tracef0("AttachDataLoad:Loading file.."): shell_MessageSendDataLoad(c%,P$):_U%!&64=_U%!&64 (1<<5) shell_AttachDataSave(b%,f%,UB%,x%,CC%,A$): a%,c%,d%: shell_IconIsSprite(b%,f%) shell_OK( shell_MessageNoArgs("SHELLMSG29")) shell_IconSetButtonType(b%,f%,6): UB%=0 UB%=&64 shell_Tracef0("AttachDataSave:Attaching DataSave Handler to icon "+ f%+" in window &"+ ~b%): shell_Tracef0("AttachDataSave:Handler function is '"+A$+"'"):d%= shell_GetEventListOffset(b%,f%,_U%+72,24, ):a%=_U%!72+d%:a%!0=b%:a%!4=f%:a%!8=UB%:a%!&C=x% Ha%!16=CC%:a%!20= shell_HeapBlockFetch( (A$)+1):c%=a%!20:$c%=A$: &FF9: UB%>&8000 '_U%!&88= shell_HeapBlockInfo(UB%)-8 _U%!&88=UB% UB%>&8000 '_U%!&88= shell_HeapBlockInfo(UB%)-4 _U%!&88=UB% :_U%!&8C=x%:_U%!&90=UB%: shell_AttachMenu(b%,_%,n%,QC%,LC%,oC%): _%>=0 shell_IconSetButtonType(b%,_%,3) shell_IsWindowStatic(b%)= shell_OK( shell_MessageNoArgs("SHELLMSG30")) shell_Tracef0("AttachMenu:Attaching menu handle &"+ ~n%+" to window handle &"+ ~b%): shell_EventAdd(b%,_%,0,n%,""): shell_AttachMenuMaker(b%,_%,A$): shell_Tracef0("AttachMenuMaker:Attaching menumaker function '"+A$+"'"): shell_EventAdd(b%,_%,1,0,A$): shell_AttachMenuDBox(VB%,d$,bA$,YA$): a%,c%,DB%: shell_WindowLoaded(d$) shell_MessageOneArg("SHELLMSG03",d$) shell_HeapBlockFetch(&C):a%!0= shell_HeapBlockFetch( d$+1):c%=a%!0:$c%=d$:a%!4= shell_HeapBlockFetch( bA$+1):c%=a%!4:$c%=bA$:a%!8= shell_HeapBlockFetch( YA$+1):c%=a%!8:$c%=YA$: &45BCE,VB%,a%: &45BCC,, shell_AttachClickSelect(b%,_%,A$): shell_EventAdd(b%,_%,2,0,A$): shell_AttachClickAdjust(b%,_%,A$): shell_EventAdd(b%,_%,3,0,A$): shell_AttachUserRedraw( b%,A$): a%,YA%:a%= shell_HeapBlockFetch(40):!a%=b%: &400CB,,a%:YA%=a%!32: shell_HeapBlockReturn(a%): 1<<4) shell_Tracef0("AttachUserRedraw:auto redraw set!!"): shell_WindowToggleFlags(b%,1<<4) shell_EventAdd(b%,-1,4,0,A$): shell_AttachDrag(b%,_%,JH%,A$): shell_EventAdd(b%,_%,6,0,A$): shell_AttachHelpTag(b%,_%,G$): shell_EventAdd(b%,_%,8,0,G$): shell_EventAdd(b%,_%,UC%,n%,A$): e%,DC%,i%,q%,m%: zC%:e%=0:m%= b%=-1 b%=-2 x>q%= shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C: (i%!e%=b%) i%!(e%+4)=_% e%+=48 e%+=48 (e%>=q% %e%=0: (i%!e%<>0):e%+=48: e%>=q% _U%!&C= shell_HeapBlockExtend(_U%!&C,48):i%=_U%!&C:i%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0:i%!(e%+&C)=0:i%!(e%+16)=0:i%!(e%+20)=0:i%!(e%+24)=0:i%!(e%+28)=0:i%!(e%+32)=0:i%!(e%+36)=0:i%!(e%+40)=0:i%!(e%+44)=0 :i%!(e%+0)=b%:i%!(e%+4)=_%: n%<>0 i%!(e%+8)=n% :zC%=e%+(&C+(UC%*4)): i%!zC%<>0 shell_HeapBlockReturn(i%!zC%) :DC%= shell_HeapBlockFetch( A$+1):$DC%=A$:i%!zC%=DC%: shell_EventDeleteAll(b%): e%,n%,m%,q%,i%,y%:e%=0:n%=0:m%= b%=-1 b%=-2 shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C: (i%!e%=b%) e%+=48 (e%>=q% Ci%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0: y%=&C i%!(e%+y%)<>0 shell_HeapBlockReturn(i%!(e%+y%)):i%!(e%+y%)=0 shell_Tracef0("EventDeleteAll:wh%=&"+ ~b%): shell_DeleteEventDataSave(b%,-1): shell_DeleteEventBump(b%,-1): shell_DeleteEventSlider(b%,-1): shell_DeleteEventBump(b%,f%): d%,a%,q%,i%,c%:i%=_U%!&68: shell_GetEventListOffset(b%,f%,_U%+&68,16, shell_Tracef0("DeleteEventBump:offset%="+ d%>=0 f%=-1 shell_Tracef0("DeleteEventBump:Deleting Bump Event (all events for window handle &"+ ~b%+")") shell_Tracef0("DeleteEventBump:Deleting Bump Event (window handle was &"+ ~b%+" icon handle was "+ f%+")") shell_HeapBlockInfo(_U%!&68)-8: d%=q%-16 SA%=i%!&C:c%=SA%!&C: shell_HeapBlockReturn(c%!&C): shell_HeapBlockReturn(c%!16): shell_HeapBlockReturn(c%): shell_HeapBlockReturn(_U%!&68):_U%!&68=0: shell_Tracef0("DeleteEventBump:No Bump events now registered") _U%!&68= shell_HeapBlockExtend(_U%!&68,-16) a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:SA%=a%!&C: shell_HeapBlockReturn(SA%!&C): shell_HeapBlockReturn(SA%!16): shell_HeapBlockReturn(SA%) d%<0: shell_DeleteEventDataSave(b%,f%): d%,a%,q%: shell_GetEventListOffset(b%,f%,_U%+72,24, d%>=0 f%=-1 shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (all events for window handle &"+ ~b%+")") shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (window handle was &"+ ~b%+" icon handle was "+ f%+")") shell_HeapBlockInfo(_U%!72)-8: d%=q%-24 shell_HeapBlockReturn(_U%!72):_U%!72=0: shell_Tracef0("DeleteEventDataSave:No DataSave events now registered") _U%!72= shell_HeapBlockExtend(_U%!72,-24) a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:a%!&C=0:a%!16=0: shell_HeapBlockReturn(a%!20):a%!20=0 d%<0: shell_MessageNoArgs(G$):= shell_MessageLookup(G$,"","") shell_MessageOneArg(G$,n$):= shell_MessageLookup(G$,n$,"") shell_MessageTwoArgs(G$,n$,CA$):= shell_MessageLookup(G$,n$,CA$) shell_MessageLookup(G$,n$,CA$): l%,L%,j$,rC%,xB%: G$,8)="SHELLMSG" rC%=_U%!284:xB%=_U%!280 rC%=_U%!64:xB%=_U%!68 &61502,xB%,G$,rC%,256,n$,CA$ ,,,L%;l%: rC%?L%=&D:j$=$(rC%) shell_WimpInit(aC%,SA$): &400C0,aC%,&4B534154,SA$ aC%,hA%: _U%!&64 "WimpExt_Initialise",&E,hA% :_U%!&94=hA%:=hA% shell_WimpInit_I(aC%,SA$): &400C0,aC%,&4B534154,SA$ aC%,hA%: _U%!&64 "WimpExt_Initialise",&E,hA% :_U%!&94=hA%: &81682,hA%:=hA% shell_WimpCloseDown_I(hA%): shell_LoseFonts: _U%!&F0<>-1 "XFontMenu_Release" _U%!&64 "WimpExt_Initialise",&E,hA% &600DD,hA%,&4B534154: &A1683,hA%: _U%!&64 "XImpulse_CloseDown",_U%!&94 WimpCloseDown(hA%): shell_LoseFonts: _U%!&F0<>-1 "XFontMenu_Release" _U%!&64 "WimpExt_Initialise",&E,hA% &600DD,hA%,&4B534154: _U%!&64 "XImpulse_CloseDown",_U%!&94 ("Unset "+_shell_AppName$+"$BasicFile"): shell_LoseFonts: y%,c%:c%=_U%!&E8: c%?y%>0: &40082,y%:c%?y%-=1: shell_FindFont(e$,OG%): YA%,yD%:yD%=_U%!&E8: &40081,,e$,OG%*16,_*16,0,0 YA%:yD%?YA%+=1: yD%?YA%>=&FF shell_OK( shell_MessageNoArgs("SHELLMSG18")) shell_Init: nA%,y%,c%,P$: wA%,C$,D$,TD%: shell_DefineConstants: _U%360,_shell_blk%260:_Q%= shell_HeapBlockFetch(&BB8):nA%= shell_HeapBlockFetch(48):nA%!0=0:nA%!4=0:nA%!8=0:nA%!&C=0:nA%!16=0:nA%!20=0:nA%!24=0:nA%!28=0:nA%!32=0:nA%!36=0:nA%!40=0 nA%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=nA%:_U%!16=1:_U%!20=0:_U%!24=0:_U%!28=0:_U%!32=-1:_U%!36=0:_U%!40=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0:_U%!68=0:_U%!72=0:_U%!76= shell_HeapBlockFetch(256):_U%!80=0:_U%!84=-1:_U%!88=0:_U%!92=0 _U%!96=0:_U%!&64=0:_U%!&68=0:_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0:_U%!&9C=0:_U%!&A0=0:_U%!&A4=0:_U%!&A8=0:_U%!&AC=0:_U%!&B0=0:_U%!&B4=0:_U%!&B8=0:_U%!&BC=0 _U%!&C0=0:_U%!&C4=0:_U%!&C8=0:_U%!&CC=0:_U%!&D0=-1:_U%!&D4=-1:_U%!&D8=0:_U%!&DC=0:_U%!&E0=0:_U%!&E4=0:_U%!&E8= shell_HeapBlockFetch(256):_U%!&EC= shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&F8=0:_U%!&FC=0:_U%!256=0:_U%!260=1:_U%!264=0 _U%!268=0:_U%!272=0:_U%!276=0:_U%!280=0:_U%!284=0:_U%!288=-1:_U%!292=-1:_U%!296=-1:_U%!300=0:_U%!304=0:_U%!308=0:_U%!312=0:_U%!316=0:_U%!320=0:_U%!324=0:_U%!328=0:_U%!332=0:_U%!336=0:_U%!340=0:_U%!344=0: shell_MemFill(_U%!&E8,256,0) shell_MemFill(_U%!&EC,256,0):wA%= shell_HeapBlockFetch(256):C$= shell_OSVarGetVal(wA%,256,"Obey$Dir",1): shell_HeapBlockReturn(wA%):D$= shell_Leaf(C$),2):_U%!&BC= shell_HeapBlockFetch(( C$)+1):_U%!&C4= shell_HeapBlockFetch(( D$)+1):c%=_U%!&BC:$c%=C$ B"" FL_U%!&64=_U%!&64 1<<5:c%= shell_HeapBlockFetch( P$+1):$(c%)=P$:_U%!324=c% shell_OSModuleCheckVersion("WimpExtension",1.98): _U%!&64=_U%!&64 P/c%= RO3_Present: _U%!&64=_U%!&64 1<<&A _U%!&64=_U%!&64 1<<&C:TD%=&64: shell_PollSetInterval(TD%): shell_PollSetPrevInterval(TD%): ZD%:ZD%+=TD%: shell_InitModules: shell_InitModules: k%:k%= _shell_StaticList_Init: shell_GetCmdLineArgs: _U%!324<>0 P$=$(_U%!324) shell_Tracef0("GetCmdLineArgs:cmdline was "+P$):=P$ shell_FileType(W$): 8,5,W$ ,,x%:x%=(x% &FFF00)>>>8:=x% shell_FileExists(W$): x%,B:B=5: 8,B,W$ shell_CatInfoRead(W$): x%,YD%,CD%,KB%,TC%,B$: 8,5,W$ x%,,YD%,CD%,KB%,TC%: ="Not Found" TC%=51 B$+="WR " TC%=&BB B$+="LWR" TC%=&88 B$+="DL " B$+=" "+ shell_StringPadLeading( ~YD%,"0",8):B$+=" "+ shell_StringPadLeading( ~CD%,"0",8):B$+=" "+ shell_StringPadLeading( ~KB%,"0",8):=B$ shell_FileGetDateStamp(W$): x%,eF%,B:B=5: 8,B,W$ x%,,,eF%: shell_GetAppDir: c%:c%=_U%!&BC:=$c% shell_GetAppDataDir: c%:c%=_U%!&C0:=$c% shell_GetAppName: c%:c%=_U%!&C4:=$c% shell_ResourcesInit: FA$,c%,D$,C$,dD%: wA%,JC%,cC%:D$= shell_GetAppName:C$= shell_GetAppDir:wA%= shell_HeapBlockFetch(256): shell_OSVarExists(wA%,D$+"Res$Path") _U%!&64=_U%!&64 shell_OSVarExists(wA%,D$+"Data$Dir") nFA$= shell_OSVarGetVal(wA%,256,D$+"Data$Dir",1):_U%!&C0= shell_HeapBlockFetch(( FA$)+1):c%=_U%!&C0:$c%=FA$ _U%!&C0= shell_HeapBlockFetch(( C$)+1):c%=_U%!&C0:$c%=C$ _U%!&64 shell_FileExists(D$+"Res:Messages") shell_MessagesInit(D$+"Res:Messages",_U%!68,_U%!64) shell_FileExists(D$+"Res:ShellMsgs") shell_MessagesInit(D$+"Res:ShellMsgs",_U%!280,_U%!284) shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284) &20035,-1,4 ,,cC%: &20035,-1,5 ,,JC%: JC%=1 shell_FileExists(D$+"Res:Sprites22") 4_U%!16= shell_SpriteAreaLoad(D$+"Res:Sprites22") shell_FileExists(D$+"Res:Sprites") 2_U%!16= shell_SpriteAreaLoad(D$+"Res:Sprites") _U%!16=1 :dD%= shell_3DEnabled: shell_FileExists(D$+"Res:Templates3") shell_TemplatesInit(D$+"Res:Templates3",k%) shell_FileExists(D$+"Res:Templates") shell_TemplatesInit(D$+"Res:Templates",k%) shell_FileExists(C$+".Messages") shell_MessagesInit(C$+".Messages",_U%!68,_U%!64) shell_FileExists(C$+".ShellMsgs") shell_MessagesInit(C$+".ShellMsgs",_U%!280,_U%!284) shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284) &20035,-1,4 ,,cC%: &20035,-1,5 ,,JC%: JC%=1 shell_FileExists(C$+".Sprites22") 1_U%!16= shell_SpriteAreaLoad(C$+".Sprites22") shell_FileExists(C$+".Sprites") /_U%!16= shell_SpriteAreaLoad(C$+".Sprites") _U%!16=1 :dD%= shell_3DEnabled: shell_FileExists(C$+".Templates3") shell_TemplatesInit(C$+".Templates3",k%) shell_FileExists(C$+".Templates") shell_TemplatesInit(C$+".Templates",k%) &45BC0: shell_HeapBlockReturn(_Q%):_Q%= shell_HeapBlockFetch(&400): shell_HeapBlockReturn(wA%): shell_SpriteAreaLoad(H$): gB%,S%,T%:S%= (H$):T%= #S%+16: #S%:gB%= shell_HeapBlockFetch(T%):!gB%=T%:gB%!4=0:gB%!8=16:gB%!&C=16: 46,521,gB%: 46,522,gB%,H$: shell_Tracef0("SpriteLoad:Sprite file loaded at &"+ ~gB%):=gB% shell_UserSpritesBase:=_U%!16 shell_SpriteGetPtr(XC%,R$): WB%,e%:WB%= shell_HeapBlockFetch(21):$WB%=R$: 46,280,XC%,WB% ,,e%: shell_HeapBlockReturn(WB%):=e% shell_MessageExpand(g$): L$,j$,sA%:L$="": g$,"\")>0:sA%= g$,"\"):L$+= g$,sA%-1):j$= g$,sA%+1,1):g$= g$,sA%+2): "A":L$+="Click ADJUST to" "a":L$+="ADJUST" "D":L$+="Drag with SELECT to" "d":L$+="Drag with ADJUST to" "G":L$+="This option is greyed out because" "R":L$+="Move the pointer right" "S":L$+="Click SELECT to" "s":L$+="SELECT" "T":L$+="This is the" "W":L$+="This window is" "w":L$+="window" L$+="\"+j$ :=L$+g$ shell_OpenMenu(LA%,RA%,CB%): A$:A$= shell_GetEventHandler(_U%!28,_U%!32,1): A$<>"" shell_Tracef0("OpenMenu:About to call "+"FN"+A$+"("+ _U%!28+","+ _U%!32+")"):k%= ("FN"+A$+"(_U%!28,_U%!32)") shell_Tracef0("OpenMenu:no menumaker function registered") CB%<>_U%!24 shell_HeapBlockExists(_U%!256) shell_HeapBlockReturn(_U%!256):_U%!256=0 shell_HeapBlockExists(_U%!&F4) shell_HeapBlockReturn(_U%!&F4):_U%!&F4=0 CB%=_U%!&FC &400D4,,CB%,LA%-64,RA%:_U%!264=1 _Q%!0=LA%:_Q%!4=RA%: &45BC5,CB%,_Q%:_U%!264=0 :_U%!24=CB%:_U%!36=LA%:_U%!40=RA%:_U%!52=_U%!28:_U%!56=_U%!32: shell_MenuLastXPos:=_U%!36 shell_MenuLastYPos:=_U%!40 shell_MenuAttachDbox(h$): "Menu_SetSubHandle",_U%!8, shell_MenuString(h$),1: shell_Tracef0("MenuAttachDbox:Dialog box ("+h$+") attached"): shell_MessageWindow(I$,XG%,mA$,w$): NE%,_A%:_A%= shell_HeapBlockFetch(260):!_A%=0:$(_A%+4)=I$+ w$="" w$="Message from "+mA$ &400DF,_A%,19,w$ &400DF,_A%,17,w$ shell_HeapBlockReturn(_A%):=NE% shell_CreateWindow(nA$, HC%:HC%= shell_GetWB(nA$):HC%!64=_U%!16: &400C1,,HC% shell_CreateWindow2(N,l%,LG%,jG%,IG%,rA%,fE%,kA%,TB%,ZB%): Q%:Q%= shell_HeapBlockFetch(&BB8):Q%!0=fE%:Q%!4=kA%:Q%!8=TB%:Q%!&C=ZB%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=l%:Q%?32=7:Q%?33=2:Q%?34=LG%:Q%?35=jG%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=rA% Q%!48=IG%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=N:Q%!76=-1:Q%!80= $N:Q%!84=0: &400C1,,Q% shell_HeapBlockReturn(Q%):=h% shell_WindowHasTitleBar(b%):=( shell_WindowGetFlags(b%) 1<<26) shell_WindowIsMoveable(b%):=( shell_WindowGetFlags(b%) 1<<1) shell_WindowIsAPane(b%):=( shell_WindowGetFlags(b%) 1<<5) shell_WindowIsNotBounded(b%):=( shell_WindowGetFlags(b%) 1<<6) shell_WindowTrapsHotKeys(b%):=( shell_WindowGetFlags(b%) 1<<&C) shell_WindowIsOpen(b%):=( shell_WindowGetFlags(b%) 1<<16) shell_WindowIsOnTop(b%):=( shell_WindowGetFlags(b%) 1<<17) shell_WindowHasBeenToggled(b%):=( shell_WindowGetFlags(b%) 1<<18) shell_WindowHasInputFocus(b%):=( shell_WindowGetFlags(b%) 1<<20) shell_WindowHasBackIcon(b%):=( shell_WindowGetFlags(b%) 1<<24) shell_WindowHasCloseIcon(b%):=( shell_WindowGetFlags(b%) 1<<25) shell_WindowHasToggleIcon(b%):=( shell_WindowGetFlags(b%) 1<<27) shell_WindowHasVScrollBar(b%):=( shell_WindowGetFlags(b%) 1<<28) shell_WindowHasAdjustSizeIcon(b%):=( shell_WindowGetFlags(b%) 1<<29) shell_WindowHasHScrollBar(b%):=( shell_WindowGetFlags(b%) 1<<30) shell_WindowGetFlags(b%): l%,a%:a%= shell_HeapBlockFetch(36):a%!0=b%: &400CB,,a%:l%=a%!32: shell_HeapBlockReturn(a%):=l% shell_WindowGetTitleFlags(b%): l%,a%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%:l%=a%!60: shell_HeapBlockReturn(a%):=l% shell_IconGetFlags(b%,f%): l%,a%:a%= shell_HeapBlockFetch(50):a%!0=b%:a%!4=f%: &400CE,,a%:l%=a%!24: shell_HeapBlockReturn(a%):=l% shell_WindowTitleFlags(b%): l%,a%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%:l%=a%!60: shell_HeapBlockReturn(a%):=l% shell_WindowTitleHasBorder(b%):=( shell_WindowTitleFlags(b%) 1<<2) shell_WindowTitleIsSprite(b%):=( shell_WindowTitleFlags(b%) 1<<1) shell_WindowTitleIsText(b%):=( shell_WindowTitleFlags(b%) 1<<0) shell_WindowTitleIsHCentred(b%):=( shell_WindowTitleFlags(b%) 1<<3) shell_WindowTitleIsVCentred(b%):=( shell_WindowTitleFlags(b%) 1<<4) shell_WindowTitleIsFilled(b%):=( shell_WindowTitleFlags(b%) 1<<5) shell_WindowTitleIsAAliased(b%):=( shell_WindowTitleFlags(b%) 1<<6) shell_WindowTitleIsIndirected(b%):=( shell_WindowTitleFlags(b%) 1<<8) shell_WindowGetTitle(b%): T$,a%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%: (a%!32 1<<26) ((a%!60) 256)=0 T$=$(a%+76) T$=$(!(a%+76)) shell_HeapBlockReturn(a%):=T$ shell_WindowTitleBufferLength(b%): w%,a%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%: ((a%!60) 256)=0 w%=&C w%=a%!84 shell_HeapBlockReturn(a%):=w% shell_WindowMoveToIcon(b%,nD%,f%,mA%,pA%): s%,p%:s%= shell_HeapBlockFetch(50):p%= shell_HeapBlockFetch(36):p%!20=0: shell_OSCheckVersion(3) nD%=-1 !p%=-2 !p%=nD% &400CB,,p% :s%!0=nD%:s%!4=f%: &400CE,,s%: shell_WindowMoveTo(b%,s%!8+mA%-p%!20,s%!20+pA%): shell_HeapBlockReturn(s%): shell_HeapBlockReturn(p%): shell_WindowMoveTo(b%,LA%,RA%): PF%,dF%,d%,a%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%:PF%=a%!&C-a%!4:dF%=a%!16-a%!8:a%!4=LA%:a%!8=RA%:a%!&C=LA%+PF%:a%!16=RA%+dF%: &400C5,,a%: &400C6,,a% shell_IsWindowStatic(b%) shell_OpenWindowStatic(b%) shell_OpenWindowDynamic2(b%,0,0) shell_HeapBlockReturn(a%): shell_WindowBringToTop(b%): zB%:zB%= shell_HeapBlockFetch(256):zB%!0=b%: &400CB,,zB%:zB%!28=-1: &400E7,2,zB%,b%: &400C7,0,zB%: shell_HeapBlockReturn(zB%): shell_UpdateWindow(h%,fE%,kA%,TB%,ZB%): a%:a%= shell_HeapBlockFetch(a%):a%!0=h%:a%!4=fE%:a%!8=kA%:a%!&C=TB%:a%!16=ZB%: &400C9,,a% &400CB,,a%: shell_HeapBlockReturn(a%): shell_OpenWindowDynamic2(b%,mA%,pA%): k%,FB%:FB%= shell_HeapBlockFetch(20):_U%!20=b%: &400CF,,FB%: &400D4,,b%,FB%!0+mA%,FB%!4+pA%: shell_HeapBlockReturn(FB%): shell_ClaimKeypress: _U%!20<>0 &400D4,,-1:k%= shell_DeleteWindow(_U%!20):_U%!20=0 shell_OpenWindow(b%,kE%,YC%): d%,a%,v%,g%,IF%,HB%,bA%,AB%: qB%,MC%,ZB%,lF%,tE%,hC%,xC%:d%= shell_GetEventListOffset(b%,-1,_U%+304,&C, d%>=0 (ga%=_U%!304+d%:c%=a%!8: shell_Tracef0("OpenWindow:About to call "+"FN"+$c%):hC%= ("FN"+$c%): hC%=0 :MC%= :ZB%= shell_HeapBlockFetch(40):ZB%!0=b%: &400CB,,ZB%: (ZB%!32 &80000)=&80000 shell_HeapBlockReturn(ZB%):xC%= shell_HeapBlockFetch(20): &400CF,,xC%:_Q%!0=b%: &400CB,,_Q% &400C5,,_Q% shell_GetEventListOffset(b%,-1,_U%+92,24, d%>-1 BJa%=(_U%!92)+d%:SC%=a%!8:XE%=a%!&C:wB%=a%!16:PC%=a%!20:_Q%!0=b%: YC%>0 HB%=YC% HB%=-1 HB%=_Q%!28 &400C5,,_Q%: &400CB,,_Q%: &400C6,,_Q% shell_HeapBlockFetch(40):g%=0: SC%!g%<>-1:v%!0=SC%!g%: IF%=0 IF%=v%!0 \7lF%=v%!0: &400CB,,v%: xC%!16=-9 xC%!16>-5 qB%=XE%!g%: 0,1:bA%=v%!16-v%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16+PC%!g%:v%!8=v%!16-bA% 2:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+wB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!16+PC%!g%:v%!8=v%!16-bA% 3:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8+PC%!g% 4:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+wB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!8+bA%+PC%!g%:v%!8=v%!16+bA% 5:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!&C-AB%+wB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8 v%!28=HB% v%!28=tE% &400C5,,v% :tE%=v%!0:g%+=4: _Q%!28=lF%: &400C5,,_Q% shell_HeapBlockReturn(v%) _Q%!0=b%: &400CB,,_Q% HB%=-2 _Q%!28=-2 YC%=-1 _Q%!28=-1 &400C5,,_Q% shell_HeapBlockReturn(xC%): shell_CloseWindow(b%): d%,a%,SC%,XE%,wB%,PC%,r%,hC%:d%= shell_GetEventListOffset(b%,-1,_U%+308,&C, d%>=0 ha%=_U%!308+d%:c%=a%!8: shell_Tracef0("CloseWindow:About to call "+"FN"+$c%):hC%= ("FN"+$c%): hC%=0 shell_HeapBlockFetch(60): shell_GetEventListOffset(b%,-1,_U%+92,24, d%>-1 la%=(_U%!92)+d%:XE%=a%!&C:wB%=a%!16:PC%=a%!20:g%=0:SC%=a%!8: SC%!g%<>-1:r%!0=SC%!g%: &400C6,,r%:g%+=4: :r%!0=b%: &400C6,,r% shell_HeapBlockReturn(r%): shell_GetDynamicWindowHandle:=_U%!20 shell_DeleteWindow(h%): r%:r%= shell_HeapBlockFetch(20): h%<>0 oktodeletew(h%) shell_EventDeleteAll(h%): shell_RemoveHandleFromWindowList(h%): h%=_U%!20 _U%!20=0 shell_RemoveStaticWindowFromList(h%) :r%!0=h%: &400C3,,r%:h%=0 shell_HeapBlockReturn(r%):=h% oktodeletew(h%):=-1 oktoclosew(h%):=-1 cliprect(A, JG%): QA%,TA%: lwaorigin(A,QA%,TA%):cA%=A!24-QA%:lA%=A!28-TA%:mG%=A!32-QA%:JG%=A!36-TA%: poll(BC%,OE%): _U%!&64 "WimpExt_PrePoll" &400C7,BC%,_Q% _U%!&64 "WimpExt_Action",_U%!&94,_Q%,PA% shell_Poll_I(BC%,OE%): _U%!&64 "WimpExt_PrePoll" &400C7,BC%,_Q% _U%!&64 "WimpExt_Action",_U%!&94,_Q%,hB% &81686,hB%,,OE%:=hB% shell_PollIdle(BC%,OE%): _U%!&64 "WimpExt_PrePoll" &400E1,BC%,_Q%,ZD% _U%!&64 "WimpExt_Action",_U%!&94,_Q%,hB% shell_PollSetInterval(zD%):NF%=zD%: shell_PollSetPrevInterval(zD%):rG%=zD%: shell_PollReadInterval:=NF% shell_PollReadPrevInterval:=rG% shell_DoBackgroundTask: shell_IconIsDraggable(b%,f%): l%:l%= shell_IconGetFlags(b%,f%):c%=(l% &6000): c%=&6000= shell_IconIsSprite(b%,f%): l%,c%:l%= shell_IconGetFlags(b%,f%):c%=(l% 1<<1): c%=(1<<1) shell_IconDragBox(b%,f%): a%,H,I,tA%,l%,YA%,fF%,VF%,KC%,IA$: CC%,R$:tA%= shell_GetEventListOffset(b%,f%,_U%+72,24, tA%>=0 qna%=_U%!72+tA%:CC%=a%!16:R$= shell_IconGetData(b%,CC%): R$="" shell_OK( shell_MessageNoArgs("SHELLMSG28")) shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):!a%=b%: &400CC,,a%:H=a%!4-a%!20:I=a%!16-a%!24:VF%=a%!68:a%!4=f%: &400CE,,a%:!a%=b%:a%!4=5:l%=a%!24:KC%=a%!32:a%!8=a%!8+H:a%!&C=a%!&C+I:a%!16=a%!16+H:a%!20=a%!20+I:a%!24=0:a%!28=0 Ja%!32=&7FFFFFFF:a%!36=&7FFFFFFF: 6,&A1,28 ,,YA%:fF%=((YA% 2)=2): YA%=l%: &IA$= shell_IconGetCommand(KC%,"s") shell_OK( shell_MessageNoArgs("SHELLMSG19")) IA$<>"" &42400,&85,VF%,IA$,a%+8:_U%!&64=_U%!&64 &400D0,,a% &400D0,,a% shell_HeapBlockReturn(a%) shell_Tracef0("IconDragBox:WARNING! no user drag handler registered for this icon!"): shell_Tracef0("IconDragBox:now checking for a slider drag event.."):tA%= shell_GetEventListOffset2(b%,f%,_U%+332,32, shell_Tracef0("IconDragBox:event offset is "+ tA%): tA%>=0 shell_HandleSlider(b%,f%,tA%) shell_HandleAttachedMenu(_Q%,b%,f%): f%<>-1 b%>-1 shell_GetEventMenu(_Q%!8,b%,f%): n%<>0 shell_HandleMenuOpen(_Q%,n%,b%,f%, shell_Action(tG%): A$,n%,h$,tA$,XB%,BB%,PB%,iD%: b%,f%,k%,_temp28%,_temp32%,_temp24%,_temp%,PE%: ZC%,d%,kF%: (kF%-ZD%)>0:ZD%+=NF%: shell_DoBackgroundTask: (_U%!&64 1<<&B) shell_Slider shell_RedrawWindow(_Q%!0) shell_OpenWindow(_Q%!0, shell_CloseWindow(_Q%!0) shell_PointerLeavingWindow(_Q%) shell_PointerEnteringWindow(_Q%) 6:_U%!28=_Q%!&C:_U%!32=_Q%!16:BB%=_Q%!0:PB%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_U%!320=_Q%!8:_temp28%=_Q%!&C:_temp32%=_Q%!16:f%=_Q%!16: shell_Tracef0("Action:Mouse_Click event detected") shell_Tracef0("Action:Window Handle was &"+ ~_Q%!&C+" Icon Handle was "+ _Q%!16): _Q%!&C=_U%!288 _Q%!16=_U%!292 shell_HandleBumpIcons(_U%!296,_Q%!&C,_Q%!16,_Q%!8) _U%!288=-1:_U%!292=-1:_U%!296=-1: _Q%!16>=0 shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+&68,16,0): shell_Tracef0("DEBUG::bump event offset is "+ d%>=0 shell_HandleBumpIcons(d%,_Q%!&C,_Q%!16,_Q%!8) (_Q%!8=64) shell_IconIsDraggable(_Q%!&C,_Q%!16): "" shell_Tracef0("Action:Drag event detected - function is "+A$):k%= ("FN"+A$+"(_temp28%,_temp32%)") shell_Tracef0("Action:Drag event detected - no handler function"): shell_SendDataSave(_U%!28,_U%!32) _U%!&64=_U%!&64 1<<&B shell_Tracef0("Action:keypress is="+ _Q%!24): _Q%!24 &D,394,398,399,410,430,431:iD%= shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24) shell_HotKeyProcess(_Q%!24) shell_Tracef0("Action:Keypress not claimed, passing it on"): &400DC,_Q%!24 shell_Tracef0("Action:Keypress claimed by this application") shell_ActionMenuSelect(_Q%) 17,18: shell_Receive(_Q%) shell_UserMessageAcknowledge(_Q%) shell_ActionSelectButton: d%,NA%,S$,EF%: shell_Tracef0("ActionSelectButton:Mouse Button was SELECT"): _U%!32>=0 (=d%= shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24, d%=-1 d%>=0 EF%=!(_U%!340+d%+16): _POPUP_TYPE_DATEPICK:NA%=_U%!340+d%: NA%!&C=-1 S$="" S$=$(NA%!&C) shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$) _POPUP_TYPE_FONTPICK:NA%=_U%!340+d%: NA%!&C=-1 S$="" S$=$(NA%!&C) shell_FontPickerOpen(NA%!0,NA%!8,NA%!4,S$) _POPUP_TYPE_COLOUR24:NA%=_U%!340+d%: NA%!&C=-1 S$="" S$=$(NA%!&C) shell_ColourPickerOpen(NA%!0,NA%!8,NA%!4,S$) _POPUP_TYPE_TEXT: shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16, _POPUP_TYPE_WIMPCOLOUR: shell_MenuTickOnly1(!(_U%!340+d%+20), shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8))) 99,"Unknown popup type detected" shell_HandleAttachedMenu(_Q%,_U%!28,_U%!32): _U%!32=0 shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32) T7A$= shell_GetEventHandler(_U%!28,_U%!32,2): A$<>"" shell_IconSlab(4,_U%!28,_U%!32): shell_Tracef0("ActionSelectButton:About to call "+"FN"+A$+"(&"+ ~_temp28%+","+ _temp32%+")"):k%= ("FN"+A$+"(_temp28%,_temp32%)") _U%!32=0 _U%!28=_U%!20 &400D4,,-1 shell_ActionMenuButton: c%,n%,jC%,d%:jC%= shell_Tracef0("ActionMenuButton:Mouse Button was MENU"): _Q%!16>=0 m=d%= shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24, !(_U%!340+d%+16)=1 shell_MenuTickOnly1(!(_U%!340+d%+20), shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8))) !(_U%!340+d%+16)=2 z0NA%=_U%!340+d%: NA%!&C=-1 S$="" S$=$(NA%!&C) shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$) shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16, shiftmenuclick(_Q%!&C,_Q%!16) shell_Tracef0("ActionMenuButton:Checking menu events.."): shell_Tracef0("ActionMenuButton:button="+ _Q%!8+" _Q%!12="+ _Q%!&C+" _Q%!16="+ _Q%!16): _Q%!16>=0 shell_GetEventMenu(_Q%!8,_Q%!&C,_Q%!16) (n%<>0 _Q%!&C>0 _Q%!16>=0) shell_GetEventMenu(_Q%!8,_Q%!&C,-1) shell_Tracef0("ActionMenuButton:Menu handle is:&"+ ~n%): n%<>0 shell_HandleMenuOpen(_Q%,n%,_Q%!&C,_Q%!16,jC%) shell_HandleMenuOpen(_Q%,n%,b%,f%,jC%): s%,p%: shell_OpenMenu(_Q%!0,_Q%!4,n%) shell_HeapBlockFetch(50):p%= shell_HeapBlockFetch(36):s%!0=b%:s%!4=f%: &400CE,,s%:p%!0=b%: &400CB,,p%: shell_OpenMenu(p%!4+s%!16+64,_Q%!4,n%): p%!4+s%!16+64,_Q%!4: shell_HeapBlockReturn(s%): shell_HeapBlockReturn(p%) shell_ActionMenuSelect(_Q%): sD%,XB%,ZC%,PE%,k%,ND%,d%:d%= shell_GetEventListOffset2(_U%!28,_U%!32,_U%+340,24, d%>=0 shell_DoPopupSelect(_Q%,d%) shell_HeapBlockFetch(256): shell_Tracef0("ActionMenuSelect:Menu_Select event detected"): &400CF,,_shell_blk%:XB%= shell_HeapBlockFetch(256): _U%!24=_U%!&FC ZC%=0:_U%!264=1 shell_CheckSelection(_Q%): ZC%>-1 _U%!264=1 _U%!264=0 _U%!264>0 "FontMenu_DecodeFontMenu",_Q%+ZC%,XB% PE%=1 shell_Tracef0("ActionMenuSelect:FontMenu selection ("+ shell_GetString(XB%)+")"): shell_FontMenuSelectFont( shell_GetString(XB%),_U%!260): _shell_FontMenuSelFN$="" &400D5,,_U%!24,_Q%,XB%:A$= shell_GetEventHandler(_U%!52,_U%!56,0):_temp%=XB%:$_temp%= shell_StringStripTrailing($_temp%," "): A$<>"" ("FN"+A$+"($_temp%)") _shell_FontMenuSelFN$<>"" ("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)") shell_HeapBlockReturn(XB%): _U%!264=0 &45BC4,_U%!24,_Q% sD%,,ND%: shell_MenuCallHandler(sD%,ND%) _shell_blk%!8=1 shell_HeapBlockExists(_U%!&E0) _temp%=_U%!&E0: $_temp%<>"" ("FN"+$_temp%+"(_U%!52,_U%!56)") shell_OpenMenu(_U%!36,_U%!40,_U%!24) _shell_FontMenuSelFN$="" shell_HeapBlockReturn(ND%): shell_ActionAdjustButton: l%,A$,k%,pC%,g%:pC%= shell_HeapBlockFetch(&C+( shell_WindowCountIcons(_U%!28)*32)): shell_Tracef0("Action:Mouse Button was ADJUST"): _U%!28>0 &400D6,_U%!28,pC%,&F000,&B000:g%=0: pC%!g%<>-1: pC%!g%=_U%!32 shell_IconSet(_U%!28,_U%!32,1) g%+=4: _U%!32=0 shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32) shell_GetEventHandler(_U%!28,_U%!32,3): A$<>"" shell_IconSlab(1,_U%!28,_U%!32):k%= ("FN"+A$+"(_temp28%,_temp32%)") shell_HeapBlockReturn(pC%): shiftmenuclick(b%,f%):= shell_IconSlab(lB%,b%,f%): a%:a%= shell_HeapBlockFetch(50):a%!8=lB%:a%!&C=b%:a%!16=f%: &81680,,a%:a%!8=0: &81680,,a%: shell_HeapBlockReturn(a%): shell_PointerLeavingWindow(_Q%): s%,k%,IB%:s%= shell_HeapBlockFetch(&C): &600D6,!_Q%,s%,&3F0000,&F<<16 ;IB%: IB%=0 !s%<>-1 3+k%= ("FN"+ shell_IconGetData(!_Q%,!s%)) shell_HeapBlockReturn(s%): shell_PointerEnteringWindow(_Q%): s%,k%,b%:b%=_Q%!0:s%= shell_HeapBlockFetch(&C): &400D6,b%,s%,&3F0000,&E<<16: !s%<>-1 D)k%= ("FN"+ shell_IconGetData(b%,!s%)) shell_HeapBlockReturn(s%): shell_RedrawWindow(h%): VD%,A$,QA%,TA%,a%,s%: shell_HeapBlockFetch(&C): &400D6,h%,s%,&3F0000,&D<<16: !s%<>-1 V!A$= shell_IconGetData(h%,!s%) shell_HeapBlockReturn(s%):a%= shell_HeapBlockFetch(&64): A$="" ]&A$= shell_GetEventHandler(h%,-1,4) shell_FatalError `Wa%!0=h%: &400C8,,a% VD%:QA%=a%!4-a%!20:TA%=a%!16-a%!24: &81681,,a%: A$<>"" f/k%= ("FN"+A$+"("+ a%+","+ QA%+","+ TA%+")") &400CA,,a% shell_HeapBlockReturn(a%): shell_Receive(_Q%): c%,k%: _Q%!16 shell_Exit: shell_DataSave(_Q%) shell_DataSaveAck(_Q%) shell_DataLoad(_Q%, shell_DataLoadAck(_Q%) shell_DataLoad(_Q%, shell_RAMFetch(_Q%) shell_RAMTransmit(_Q%) shell_Message_PreQuit(_Q%) _U%!&A4>0 shell_Tracef0("Receive:PaletteChange message received"):c%=_U%!&A4:k%= ("FN"+$c%) shell_Message_SaveDesktop(_Q%) shell_Message_Shutdown(_Q%) shell_InteractiveHelp(_Q%) shell_MenuWarning(_Q%) shell_Message_ModeChange(_Q%) _U%!&A8>0 shell_Tracef0("Receive:TaskInitialise message received"):c%=_U%!&A8:k%= ("FN"+$c%+"("+ (_Q%!4)+","+ shell_GetString(_Q%+28)+ 34+")") _U%!&D0=-1 shell_GetString(_Q%+28)="StrongHelp" _U%!&D0=_Q%!4: shell_StrongHlpMsg("Help_Install -DieWithTask "+ shell_GetAppDir+"."+ shell_GetAppName):c%=_U%!&D8: $c%<>"" shell_HelpWord($c%): shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0 _U%!&AC>0 shell_Tracef0("Receive:TaskCloseDown message received"):c%=_U%!&AC:k%= ("FN"+$c%) _Q%!4=_U%!&D0 _U%!&D0=-1 shell_Tracef0("Receive:TaskNameIs message received"): 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_Message_ModeChange(_Q%): d%,g%,pB%,p%:pB%=_U%!&B8: _U%!&A0>0 shell_Tracef0("Message_ModeChange:ModeChange message received"):c%=_U%!&A0:k%= ("FN"+$c%) shell_HeapBlockFetch(&64): pB%<>0 shell_Tracef0("Message_ModeChange:Checking static window list for pane events"): pB%!g%<>-1:d%= shell_GetEventListOffset(pB%!g%,-1,_U%+92,24, d%>-1 shell_Tracef0("Message_ModeChange:Static window handle found"): shell_WindowIsOpen(pB%!g%) shell_Tracef0("Message_ModeChange:Window is open.."):!p%=pB%!g%: &400C6,,p%: shell_OpenWindow(pB%!g%,0,-1) :g%+=4: shell_HeapBlockReturn(p%): shell_Message_Shutdown(_Q%): _U%!312>0 shell_Tracef0("Message_Shutdown:Shutdown message received"):c%=_U%!312:k%= ("FN"+$c%) shell_HandleUnknownMessage2(_Q%): _Q%!16 &43B00:b$=$(_Q%+20): b$,30)="EvntShellLib:ShellDBug started" _U%!&64 "r_U%!&64=(_U%!&64 1<<4): shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+ shell_GetAppName) b$,25)="EvntShellLib:TraceInitAck" _U%!&64=(_U%!&64 1<<4) b$,20)="EvntShellLib:TraceOn" shell_TraceOn b$,21)="EvntShellLib:TraceOff" shell_TraceOff b$,28)="EvntShellLib:ListClickSelect" shell_ListClickSelect b$,28)="EvntShellLib:ListClickAdjust" shell_ListClickAdjust b$,25)="EvntShellLib:ListHelpTags" shell_ListHelpTags shell_HandleUnknownMessage(_Q%): shell_HandleUnknownMessage(_Q%): shell_AttachPreQuitHandler(A$): c%,k%: _U%!300>0 shell_HeapBlockReturn(_U%!300) N<_U%!300= shell_HeapBlockFetch( A$+1):c%=_U%!300:$c%=A$: shell_AttachShutdownHandler(A$): c%,k%: _U%!312>0 shell_HeapBlockReturn(_U%!312) Z<_U%!312= shell_HeapBlockFetch( A$+1):c%=_U%!312:$c%=A$: shell_AttachModeChangeHandler(A$): c%,k%: _U%!&A0>0 shell_HeapBlockReturn(_U%!&A0) fJ_U%!&A0= shell_HeapBlockFetch( A$+1):c%=_U%!&A0:$c%=A$:k%= ("FN"+A$): shell_AttachPaletteChangeHandler(A$): c%,k%: _U%!&A4>0 shell_HeapBlockReturn(_U%!&A4) sJ_U%!&A4= shell_HeapBlockFetch( A$+1):c%=_U%!&A4:$c%=A$:k%= ("FN"+A$): shell_AttachTaskInitialiseHandler(A$): c%,k%: _U%!&A8>0 shell_HeapBlockReturn(_U%!&A8) <_U%!&A8= shell_HeapBlockFetch( A$+1):c%=_U%!&A8:$c%=A$: shell_AttachTaskCloseDownHandler(A$): c%,k%: _U%!&AC>0 shell_HeapBlockReturn(_U%!&AC) <_U%!&AC= shell_HeapBlockFetch( A$+1):c%=_U%!&AC:$c%=A$: shell_RAMFetch(_Q%): GH%,eE%,jE%:jE%= _U%!&90>&8000 shell_Tracef0("RAMFetch:RAMFetch called.."):_Q%!&C=_Q%!8:_Q%!16=7:eE%=_U%!&88: _U%!&8C=&FF9 _U%!&90+=4 (eE%-_U%!&80)<_Q%!24 _Q%!24=eE%-_U%!&80:jE%= shell_Tracef0("RAMFetch:Sending block") &400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24: &400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24: _U%!&80=0 shell_RAMTransmit(_Q%): d%,a%,cA$,c%: _Q%!&C=_U%!&70 $_U%!&80+=_Q%!24: _Q%!24<_U%!&84 shell_Tracef0("RAMTransmit:Last block received"):d%= shell_GetEventListOffset(_U%!28,_U%!32,_U%+96,16, ):a%=_U%!96+d%: shell_Tracef0("RAMTransmit:_U%!28="+ _U%!28): shell_Tracef0("RAMTransmit:_U%!32="+ _U%!32) shell_Tracef0("RAMTransmit:offset%="+ d%):c%=_U%!&9C:cA$= shell_GetString(c%+44): shell_UserFNLoadFile(c%!40,_U%!&98,a%!8,cA$,_U%!&84,a%) shell_Tracef0("RAMTransmit:Block received"): _U%!&80>_U%!&84 shell_Tracef0("RAMTransmit:Increasing buffer size.."):_U%!&98= shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84) :_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84: &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8 shell_HeapBlockReturn(_U%!&98):_U%!&98=0: shell_OK( shell_MessageNoArgs("SHELLMSG15")) shell_LoadFile(HH%): v$,iB%,BD%,QB%:v$= shell_GetString(_Q%+44):iB%= shell_FileLength(v$): iB%<0 shell_OK( shell_MessageNoArgs("SHELLMSG16")) PQB%= shell_HeapBlockFetch(iB%): &20008,16,v$,QB%,0 ;BD%: shell_VFlag(BD%) shell_HeapBlockReturn(QB%): shell_OK( shell_MessageNoArgs("SHELLMSG17")) shell_Tracef0("LoadFile:File "+v$+" loaded ok at &"+ ~QB%) :=QB% shell_VFlag(BD%):=((BD% 1)=1) shell_CheckType(x%,rB%,sB%): NH%,g%,m%,c%,ED%:g%=0:m%=-1:ED%= _U%!&64 _U%!&64=_U%!&64 rB%!g%<>-1:c%=rB%!g%: 1<<31 c%=c% 1<<31:ED%= c%=x% m%=g%: (L_U%!&64=_U%!&64 1<<1: shell_Tracef0("CheckType:Top Bit Load detected..") :g%+=4: (x%>=4096) m%=-1 m%>-1 shell_Tracef0("CheckType:File type OK "+ ~rB%!m%) shell_Tracef0("CheckType:File type NOT ok "+ m%<>-1 shell_Exit: xB%:xB%=_U%!68: &61504,xB%: &2001E,7,,xB%: shell_Tracef0("Exit:Application closing down"): shell_TraceExit: &606C2: &600D0,,-1: shell_WimpCloseDown_I(_U%!&94): shell_DataLoad(_Q%,sB%): KH%,d%,a%,_temp%,rB%,x%,i$: shell_DataOpenOKToLoad(sB%,_Q%!40) Qdx%=_Q%!40:i$= shell_GetString(_Q%+44): shell_Tracef0("DataLoad:DataLoad message received"): _U%!96<>0 d%=-1 shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16, d%=-1 f7d%= shell_GetEventListOffset(_Q%!20,-1,_U%+96,16, d%>-1 k4a%=_U%!96+d%: shell_CheckType(_Q%!40,a%!8,sB%) shell_Tracef0("DataLoad:File type recognised (&"+ ~_Q%!40+")"):bG%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4: &400E7,18,_Q%,_Q%!4: _U%!&64 QB%=-1:_U%!&64=_U%!&64 shell_LoadFile(bG%=_U%!&6C) shell_UserFNLoadFile(x%,QB%,a%!8,i$,_Q%!36,a%): _U%!&9C<>0 shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0 shell_Tracef0("DataLoad:File type NOT recognised (&"+ ~_Q%!40+")") shell_DataOpenOKToLoad(sB%,x%): w%,ME%,TA$,OA$: shell_Tracef0("DataOpenOKToLoad:Message reason code was 3, normal drag load..") shell_Tracef0("DataOpenOKToLoad:Message reason code was 5, double click load.."):ME%= shell_HeapBlockFetch(256):TA$= shell_OSVarGetVal(ME%,256,"Alias$@RunType_"+ ~x%,1): shell_Tracef0("DataOpenOKToLoad:Alias$@RunType="+TA$) shell_HeapBlockReturn(ME%):OA$= shell_Branch(TA$): shell_Tracef0("DataOpenOKToLoad:dbug "+OA$): shell_Leaf(OA$)="!"+ shell_GetAppName shell_UserFNLoadFile(x%,QB%,rB%,_filename$,_file_size%,a%): g%,m%,c%,k%:g%=0:m%=-1: rB%!g%<>-1:c%=rB%!g%: 1<<31 c%=c% 1<<31 c%=x% m%=g% [g%+=4: :c%=a%!&C:k%= ("FN"+$(c%!m%)+"("+ QB%+","+ x%+",_filename$,"+ _file_size%+")"): shell_DataSave(_Q%): c%,d%,a%,y%: shell_Tracef0("DataSave:DataSave message received"): _Q%!4<>_U%!&94 shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16, d%>-1 2a%=_U%!96+d%: shell_CheckType(_Q%!40,a%!8, shell_Tracef0("DataSave:Filetype recognized (&"+ ~_Q%!40+")"): shell_TopBitLoadInProgress shell_Tracef0("DataSave:'no load' flag set"): shell_Tracef0("DataSave:Sending Message_DataSaveAck"):_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)= shell_GetAppDir+".ScrapFile"+ &400E7,18,_Q%,_Q%!4 shell_HeapBlockReturn(_U%!&9C):_U%!&9C= shell_HeapBlockFetch((_Q%!0)+8):c%=_U%!&9C: _Q%!0 4:c%!y%=_Q%!y%: y%:_U%!28=_Q%!20:_U%!32=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98= shell_HeapBlockFetch(_Q%!36):_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6 _Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84: &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8: shell_Tracef0("DataSave:Sending Message_RAMFetch") shell_Tracef0("DataSave:Filetype NOT recognized") shell_TopBitLoadInProgress: _U%!&64 shell_SendDataSave(b%,f%): a%,GA%,tB%,d%,iB%,k%:tB%= shell_HeapBlockFetch(30): &400CF,,tB%:d%= shell_GetEventListOffset(b%,f%,_U%+72,24, d%=-1 d%=-2 shell_MessageWindow( shell_MessageNoArgs("SHELLMSG13"),0,"", shell_MessageNoArgs("warning")) a%=(_U%!72)+d%: a%!8>&8000 $iB%= shell_HeapBlockInfo(a%!8)-4 iB%=a%!8 :GA%=_U%!76:GA%!0=256:GA%!&C=0:GA%!16=1:GA%!20=tB%!&C:GA%!24=tB%!16:GA%!28=tB%!0:GA%!32=tB%!4:GA%!36=iB%:GA%!40=a%!&C:$(GA%+44)= shell_Leaf( shell_IconGetData(b%,a%!16)): &400E7,18,GA%,GA%!20,GA%!24:_U%!&78=_Q%!8:_U%!&88=iB%:_U%!&8C=a%!&C -;_U%!&90=a%!8:_U%!&9C=a%!4:_U%!&C8=GA%!20:_U%!&CC=GA%!24 shell_HeapBlockReturn(tB%): shell_DataSaveAck(_Q%): _fullname$,PA%,kA%,a%,c%,k%: shell_Tracef0("DataSaveAck:DataSaveAck message received"):PA%=0:kA%=_Q%?(44+PA%): kA%<>0:_fullname$+= (kA%):PA%+=1:kA%=_Q%?(44+PA%): shell_Tracef0("DataSaveAck:Full save name is: "+_fullname$) shell_Tracef0("DataSaveAck:task = &"+ _Q%!4): shell_Tracef0("DataSaveAck:mytask = &"+ _U%!&94):d%= shell_GetEventListOffset(_U%!28,_U%!32,_U%+72,24, shell_Tracef0("DataSaveAck:offset% = "+ d%>=0 L%a%=(_U%!72)+d%:c%=a%!20: $c%<>"" P!k%= ("FN"+$c%+"(_fullname$)") shell_HeapBlockExists(a%!8) 8,&A,_fullname$,a%!&C,,a%!8,a%!8+ shell_HeapBlockInfo(a%!8)+1 shell_MessageNoArgs("SHELLMSG21") _Q%!36>-1 _U%!80<>0 shell_HeapBlockReturn(_U%!80) _H_U%!80= shell_HeapBlockFetch( _fullname$+1):c%=_U%!80:$c%=_fullname$ :_Q%!16=3:!_Q%=256:_Q%!20=_U%!&C8:_Q%!24=_U%!&CC:_Q%!40=_U%!&8C:_Q%!36= shell_FileLength(_fullname$):_Q%!&C=_Q%!8: shell_Tracef0("DataSaveAck:File length is "+ _Q%!36+" bytes"):$(_Q%+44)=_fullname$+ (0):_U%!84=_Q%!8 shell_Tracef0("DataSaveAck:Sending DataLoad Message"): &400E7,18,_Q%,_Q%!20,_Q%!24: _U%!28<>_U%!20 shell_CloseWindow(_U%!28) &400D4,,-1 shell_PrintSave(_fullname$,_Q%!20,_Q%!24,_Q%!8,_Q%!40): shell_Tracef0("DEBUG:: copies = "+ (_U%!336)): _U%!336>0 z+_U%!336-=1: shell_DoSendPrintSave(&FFF) shell_DataSaveCheckName(b%,f%): d%,a%,q%:a%=_U%!72:d%=0: a%<>0 shell_HeapBlockInfo(a%)-8: !(a%+d%)=b% shell_IconGetData(!a%,a%!16): R$,".")=0 shell_OK( shell_MessageNoArgs("SHELLMSG01")) d%=q% :d%+=24: d%>=q% shell_DataLoadAck(_Q%): shell_Tracef0("DataLoadAck:DataLoadAck message received (file received ok)"): shell_UserMessageAcknowledge(_Q%): _Q%!16 shell_AckDataLoad(_Q%) shell_AckRAMFetch(_Q%) shell_AckDataLoad(_Q%): _Q%!&C<>_U%!84 &20008,6,"": &FF,"Data Transfer failed: Receiver died" shell_AckRAMFetch(_Q%): _F%,c%:c%=_U%!&9C: shell_Tracef0("AckRAMFetch:AckRAMFetch called...."): _Q%!&C<>_U%!&70 _U%!&80=0 shell_Tracef0("AckRAMFetch:Receiver does not support RAM transfer"): &20023,"Wimp$Scrap",,-1,0,3 ,,_F%: _F%<>0 $(c%+44)=""+ (0):c%!0=(49+ shell_GetString(c%+44))) 3:c%!&C=c%!8:c%!16=2:c%!36=-1: &400E7,18,c%,c%!4:_U%!&6C=c%!8 shell_OK( shell_MessageNoArgs("SHELLMSG14")) shell_Tracef0("AckRAMFetch:RAM transfer started, but not enough data sent. Sender died?"): shell_HeapBlockReturn(_U%!&98):_U%!&98=0: shell_OK("SHELLMSG06") shell_MenuWarning(_Q%): A$,XB%,LA%,RA%,k%,_temp%,PA%,E$,uB%,a%:LA%=_Q%!24:RA%=_Q%!28:_U%!264=0: _U%!20<>0 shell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+ ~_U%!20+")"):k%= shell_DeleteWindow(_U%!20): shell_Tracef0("MenuWarning:Last dynamic dbox removed") _Q%!20 _U%!&E4: shell_WindowRetitle(_U%!&E4, shell_MessageNoArgs("warning")): shell_IconPutData(_U%!&E4,1, shell_MessageNoArgs("SHELLMSG07"),0): &400E8,,_U%!&E4,LA%,RA% shell_MenuGetItemAddress(_U%!24,_Q%+32): shell_HeapBlockExists(uB%!4) shell_MenuWarnDBox(uB%,LA%,RA%) shell_HeapBlockFetch(32): &45BC4,_U%!24,_Q%+32 ,,a%: shell_FindMenuWarnEvent(a%!8,E$,J$): shell_HeapBlockReturn(a%): shell_MenuWarnSubMenu(_Q%!20,LA%,RA%,E$,J$) shell_MenuWarnDBox(DB%,LA%,RA%): c%,t%,k%: c%=DB%!4: shell_CreateWindow($c%!0,t%): shell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+ ~t%+")"): $c%!4<>"" shell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$c%!4+"'"):k%= ("FN"+$c%!4+"("+ t%+")") $c%!8<>"" shell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$c%!8+"'"):k%= ("FN"+$c%!8+"("+ t%+")") &400E8,,t%,LA%,RA%:_U%!20=t%: shell_FindMenuWarnEvent(dA%, w%,z%,c%,d%,m%,q%,CA%,g%: vB%:vB%=0:z%=_U%!&DC:d%=0:m%= :E$="":vB%=0: shell_HeapBlockExists(z%) :g%+=4: z%!g%=-1:q%=g%:g%=0: shell_Tracef0("FindMenuWarnEvent:list_size%="+ :c%=!(z%+d%+0): c%<>-1 c%=dA% Bum%= :CA%=z%!(d%+4):E$=$CA%:vB%=z%!(d%+8):CA%=z%!(d%+&C):J$=$CA%: shell_Tracef0("FindMenuWarnEvent:submenu found") :d%+=16 d%=q% d%>=q% E$="":J$="" vB%=0 shell_Tracef0("FindMenuWarnEvent:warn fn not found..") shell_MenuWarnSubMenu(hD%,LA%,RA%,E$,J$): k%,c%,SB%,g%:_shell_FontMenuSelFN$=J$: shell_HeapBlockExists(_U%!&E0) shell_HeapBlockReturn(_U%!&E0) ^C_U%!&E0= shell_HeapBlockFetch( E$+1):c%=_U%!&E0:$c%=E$: E$<>"" aSk%= ("FN"+E$+"(_U%!52,_U%!56)"): shell_Tracef0("MenuWarnSubMenu:Calling FN"+E$) hD%=_U%!&FC shell_Tracef0("MenuWarnSubMenu:FontMenu opening.."): shell_HeapBlockExists(_U%!256) shell_HeapBlockReturn(_U%!256) g%=0: :g%+=4: !(_Q%+32+g%)=-1:g%+=4:_U%!256= shell_HeapBlockFetch(g%):c%=_U%!256:g%=0: :c%!g%=!(_Q%+32+g%):g%+=4: !(_Q%+32+g%)=-1:c%!g%=!(_Q%+32+g%):c%=_U%!256 shell_Tracef0("MenuWarnSubMenu:Selecting '"+ shell_FontMenuGetLastSelectedFont+"' in FontMenu.."): "FontMenu_Select", shell_FontMenuGetLastSelectedFont,_U%!260 ,SB%:_U%!264=1: SB%<>_U%!&FC shell_FontMenuUpdatePtr(SB%):_U%!&FC=SB%:hD%=SB% _U%!264=0 &400E8,,hD%,LA%,RA%: shell_AttachSubMenu(VB%,vB%,E$): &45BCE,VB%,vB%: E$<>"" &45BCC,, shell_EventListMenuWarn(VB%,vB%,E$,"") shell_EventListMenuWarn(VB%,oF%,E$,J$): c%,CA%,g%,z%: _U%!&DC=0 _U%!&DC= shell_HeapBlockFetch(32):c%=_U%!&DC:c%!0=VB%:c%!4= shell_HeapBlockFetch( E$+1):$(c%!4)=E$:c%!8=oF%:c%!&C= shell_HeapBlockFetch( J$+1):$(c%!&C)=J$:c%!16=-1:c%!20=-1:c%!24=-1:c%!28=-1 shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=z%:g%=0: :g%+=16: z%!g%=-1:c%=_U%!&DC:c%!g%=VB%:c%!(g%+4)= shell_HeapBlockFetch( E$+1):CA%=c%!(g%+4):$(CA%)=E$:c%!(g%+8)=oF%:c%!(g%+&C)= shell_HeapBlockFetch( J$+1):CA%=c%!(g%+&C):$(CA%)=J$ ;c%!(g%+16)=-1:c%!(g%+20)=-1:c%!(g%+24)=-1:c%!(g%+28)=-1 shell_InteractiveHelp(_Q%): G$,a$,K$,YB%,pD%,sA$,s%,l%:s%= shell_HeapBlockFetch(&C): &600D6,_Q%!32,s%,&3F0000,&C<<16 !s%<>-1 shell_IconGetData(_Q%!32,!s%) shell_HeapBlockReturn(s%): G$="" shell_GetEventHandler(_Q%!32,_Q%!36,8) shell_IconGetValidation(_Q%!32,_Q%!36): K$<>"" shell_StringUpperCase( K$,1))="I" K$,";"): YB%=0 K$,2) K$,2,YB%-2) shell_StringUpperCase(K$), shell_StringUpperCase(";i")):pD%= shell_StringUpperCase(K$), shell_StringUpperCase(";"),YB%+1): YB%>0 pD%>0 K$,YB%+2,pD%-YB%-2) K$,YB%+2) G$<>"" _Q%!16=&503:_Q%!&C=_Q%!8:a$= shell_MessageLookup(G$,"",""):a$= shell_MessageExpand(a$):$(_Q%+20)=a$:!_Q%=( a$+25) &400E7,17,_Q%,_Q%!4 shell_Message_PreQuit(_Q%): c%,rD%,a%,y%,uD%: _U%!300>0 shell_HeapBlockFetch(256): _Q%!0 4:a%!y%=_Q%!y%: shell_Tracef0("Message_PreQuit:PreQuit message received"):c%=_U%!300:rD%=a%!4: !a%<24 uD%=0 uD%=a%!20 2a%!&C=a%!8: &400E7,19,a%,rD%: ("FN"+$c%)<>0 _closedown%= !a%=24:a%!24=508: &400E7,8,a%,rD%:_closedown%= shell_HeapBlockReturn(a%) lwaorigin(A, RA%):LA%=A!0-A!16:RA%=A!&C-A!20: shell_Iconbar(FA%,PA$,I$,_D%,n%,QC%,LC%,oC%): I$="" &K!_Q%=FA%:_Q%!4=0:_Q%!8=0:_Q%!&C=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=PA$ !_Q%=FA%:_Q%!4=0:_Q%!8=-16:_Q%!&C=_D%:_Q%!16=90:_Q%!20=&1700210B: _Q%!24&C: _Q%!28 (PA$)+2:$(_Q%!24)=I$:$(_Q%!28)="S"+PA$:_Q%!32=&C &400C2,,_Q% shell_AttachMenu(-2,h%,n%,QC%,LC%,oC%):=h% shell_IconbarSetText(t%,yG%,L$): j%,p%:j%= shell_HeapBlockFetch(40):p%= shell_HeapBlockFetch(36):p%!20=0: shell_OSCheckVersion(3) t%=-1 !p%=-2 !p%=t% &400CB,,p% :!j%=t%:j%!4=yG%: &400CE,,j%:$(j%!28)=L$: &400D1,-1,j%!8-&64-p%!20,j%!&C,j%!16+&64-p%!20,j%!20: shell_HeapBlockReturn(j%): shell_HeapBlockReturn(p%): shell_WritableIconHandler(b%,f%,WA%): oA%,NC%,OC%,g%: TE%,aE%,sA%,BB%,PB%,zG%,u%:u%= shell_HeapBlockFetch(&400): &400D3,,u%: !u%=-1 shell_HeapBlockReturn(u%):= &400D6,b%,u%,&40E000,&E000:NC%=!u%:g%=0: u%!g%=f% TE%=u%!(g%-4):aE%=u%!(g%+4) :g%+=4: u%!g%=-1:OC%=u%!(g%-4): shell_FakeMouseClick(b%,0,4) 398,394: f%=OC% &400D2,b%,NC%,-1,-1,-1, shell_IconGetData(b%,NC%)) &400D2,b%,aE%,-1,-1,-1, shell_IconGetData(b%,aE%)) 399,410: f%=NC% &400D2,b%,OC%,-1,-1,-1, shell_IconGetData(b%,OC%)) &400D2,b%,TE%,-1,-1,-1, shell_IconGetData(b%,TE%)) &400D2,b%,NC%,-1,-1,-1, shell_IconGetData(b%,NC%)) &400D2,b%,OC%,-1,-1,-1, shell_IconGetData(b%,OC%)) shell_HeapBlockReturn(u%):= shell_FakeMouseClick(b%,f%,lB%): 6,&F,1:_Q%!8=lB%:_Q%!&C=b%:_Q%!16=f%: shell_Action(6): shell_IconHasCaret(BA%,yB%): u%,UA%,JA%:u%= shell_HeapBlockFetch(24): &400D3,,u%:JA%=u%!0:UA%=u%!4: shell_HeapBlockReturn(u%): (UA%=yB% JA%=BA%) shell_IconCreate(b%,LB%,rA%,_D%,t%,eD%,fD%,wG%,O$,DB%,_B%,K$): SG%,h%,KC%,j%:j%= shell_HeapBlockFetch(40):j%!0=b%:j%!4=LB%:j%!8=rA%:j%!&C=LB%+_D%:j%!16=rA%+t%:j%!20=wG% fD%<<28 eD%<<24: j%!20 #SG%= O$,","):j%!24=DB%: K$<>"" 6KC%= shell_HeapBlockFetch( K$+1):$KC%=K$:j%!28=KC% j%!28=-1 :j%!32=_B% $(j%+24)= O$,&B) &400C2,,j% shell_HeapBlockReturn(j%):=h% shell_IconDelete(b%,f%): shell_DoIconDelete(b%,f%, shell_IconDelete2(b%,f%): shell_DoIconDelete(b%,f%, shell_DoIconDelete(b%,f%,GG%): a%,QA%,TA%,cA%,lA%:a%= shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%: &400CE,,a%: &8168A,,a%+8:QA%=a%!8:TA%=a%!&C:cA%=a%!16:lA%=a%!20: &400CE,,a%: shell_HeapBlockExists(a%!28) shell_HeapBlockReturn(a%!28) shell_HeapBlockExists(a%!32) shell_HeapBlockReturn(a%!32) &400C4,,a%: &400D1,b%,QA%,TA%,cA%,lA% shell_HeapBlockReturn(a%): shell_IconRadioSelection(BA%,jB%): hF%,_C%,vF%,mE%:_C%= shell_HeapBlockFetch(8):hF%=(jB%<<16)+(1<<21):mE%=(31<<16)+(1<<21): &400D6,BA%,_C%,mE%,hF%:vF%=!_C%: shell_HeapBlockReturn(_C%):=vF% shell_IconPutData(JA%,UA%,O$,J): a%,UA$: _U%!&64 "WimpExt_SetIconString",,,JA%,UA%,O$+ shell_IconGetData(JA%,UA%): O$<>UA$ shell_HeapBlockFetch(40):a%!0=JA%:a%!4=UA%: &400CE,,a%: (a%!24 (1<<8))<>0 O$>a%!36 shell_MessageNoArgs("SHELLMSG12") $(a%!28)=O$ $(a%+28)= O$,&B) a%!8=0:a%!&C=0: &400CD,,a% shell_HeapBlockReturn(a%) shell_IconPutDataNow(JA%,UA%,O$): a%:a%= shell_HeapBlockFetch(50):a%!0=JA%:a%!4=UA%: &400CE,,a%: (a%!24 (1<<8))<>0 O$>a%!36 shell_MessageNoArgs("SHELLMSG12") $(a%!28)=O$ $(a%+28)= O$,&B) :a%!8=0:a%!&C=0: &400CD,,a%: shell_EnsurePoll: shell_HeapBlockReturn(a%): shell_IconNewSprite(JA%,UA%,eA$,J): j%:j%= shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%: &400CE,,j%: &400C4,,j%:j%!4=j%!8:j%!8=j%!&C:j%!&C=j%!16:j%!16=j%!20:j%!20=j%!24:$(j%+24)=eA$: &400C2,,j% &400D1,j%!0,j%!4,j%!8,j%!&C,j%!16 shell_HeapBlockReturn(j%):=UA% shell_IconGetData(JA%,UA%): M$,j%: UA%<0 JA%<-2 _U%!&64 "WimpExt_GetIcon",,,JA%,UA% ,,,M$ shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%: &400CE,,j%: (j%!24 (1<<8))<>0 M$=$(j%!28) M$=$(j%+28) shell_HeapBlockReturn(j%) shell_IconMove2(b%,f%,qE%,rE%): AA%:AA%= shell_HeapBlockFetch(40):!AA%=b%:AA%!4=f%: &400CE,,AA%:AA%!8+=qE%:AA%!16+=qE%:AA%!&C+=rE%:AA%!20+=rE%:f%= shell_IconMove(b%,f%,AA%!8,AA%!&C,AA%!16,AA%!20): shell_HeapBlockReturn(AA%):=f% shell_IconResize(b%,f%,QA%,TA%,cA%,lA%):= shell_IconMove(b%,f%,QA%,TA%,cA%,lA%) shell_IconMove(b%,f%,QA%,TA%,cA%,lA%): s%,OH%,BH%,MB%,a%: JF%,RF%,WF%,XF%:s%= shell_HeapBlockFetch(40):a%= shell_HeapBlockFetch(40):!s%=b%:s%!4=f%: &400CE,,s%:!a%=b%:a%!4=f%: &400CE,,a%: &8168A,,a%+8:MG%=s%!24:WE%=s%+28 JF%=MG%:RF%=WE%!0:WF%=WE%!4:XF%=WE%!8:MB%=s%!8-a%!8: &400C4,,s%: &400D1,!s%,s%!8-MB%,s%!&C-MB%,s%!16+MB%,s%!20+MB%:f%= shell_CreateIcon2(b%,QA%,TA%,cA%,lA%,JF%,RF%,WF%,XF%,MB%): shell_HeapBlockReturn(s%): shell_HeapBlockReturn(a%):=f% shell_CreateIcon2(h%,QA%,TA%,cA%,lA%,l%,TG%,VG%,nG%,MB%): _%,OA%,I$,f$,LB%,rA%:OA%= shell_HeapBlockFetch(60):!OA%=h%:OA%!20=l%:OA%!24=TG%:OA%!28=VG%:OA%!32=nG%:I$="":f$="": 256I$=$(OA%!24) I$=$(OA%+24) shell_IconGetCommand(OA%!28,"S") f$=$(OA%+24) shell_GetMinXY(l%,I$,f$): cA%-QA%"" &40084,l%>>24 ,,TA%,,lA%: &40097,, (l%>>24)+I$ ,QA%,,cA%: &40088,,QA% ,QA%: &40088,,cA% ,cA%:LB%=cA%-QA%:rA%=lA%-TA% LB%=6*CH%+16* I$:rA%=32 4rA%+=2*EH% f$<>"" &2002E,296, shell_UserSpritesBase,f$ ,,,BB%,PB%,,BG%;P%: &20035,BG%,4 ,,EG%:BB%=BB%<LB%LB%=BB% PB%>rA%rA%=PB% shell_IconGetCommand(AD%,iA$): I%,M$: AD%<=0 M$="" shell_StringUpperCase($AD%),";"+ shell_StringUpperCase(iA$)): M$="" $(AD%+I%), $(AD%+I%)+";",";")-1) shell_IconRedraw(b%,f%): a%:a%= shell_HeapBlockFetch(40):!a%=b%:a%!4=f%: &400CE,,a%: &8168A,,a%+8: &400D1,b%,a%!8,a%!&C,a%!16,a%!20: shell_Action( shell_Poll_I(0,_U%!&94)): shell_HeapBlockReturn(a%): shell_IconGetValidation(b%,f%): a%,K$,l%: f%=-1 UK$="":a%= shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%: &400CE,,a%:l%=a%!24: a%!32>0 K$=$(a%!32) shell_HeapBlockReturn(a%):=K$ shell_IconPutValidation(b%,f%,x$): a%,l%:a%= shell_HeapBlockFetch(&64):a%!0=b%:a%!4=f%: &400CE,,a%:l%=a%!24: $(a%!32)=x$ shell_HeapBlockReturn(a%): shell_IsIconSelected(aB%,bB%): shell_IconGetState(aB%,bB%):l%=_Q%!24:c%=(l% &200000): shell_IconSelect(aB%,bB%): shell_IconSetState(aB%,bB%,&200000,&200000): shell_IconDeselect(aB%,bB%): shell_IconSetState(aB%,bB%,0,&200000): shell_IconGetState(aB%,bB%):!_Q%=aB%:_Q%!4=bB%: &400CE,,_Q%: shell_IconSetSelected(b%,f%,iA%): iA%=0 shell_IconDeselect(b%,f%) shell_IconSelect(b%,f%) shell_IconSet(b%,f%,iA%): iA%=0 shell_IconDeselect(b%,f%) shell_IconSelect(b%,f%) shell_IconSetState(aB%,bB%,YG%,uG%): j%:j%= shell_HeapBlockFetch(16):!j%=aB%:j%!4=bB%:j%!8=YG%:j%!&C=uG%: &400CD,,j%: shell_HeapBlockReturn(j%): shell_IconUnselectable(h%,dC%): shell_IconSetState(h%,dC%,&400000,&40000): shell_IconSetBGColour(b%,f%,uA%): uA%<0 uA%>&F shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetBGColour") shell_IconSetState(b%,f%,uA%<<28,&F0000000): shell_IconSetFGColour(b%,f%,uA%): uA%<0 uA%>&F shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetFGColour") shell_IconSetState(b%,f%,uA%<<24,&F000000): shell_CaretSetPosition(JA%,UA%,QG%,UG%,bA%,sA%): &400D2,JA%,UA%,QG%,UG%,bA%,sA%: shell_CaretReadPosition( sA%): u%:u%= shell_HeapBlockFetch(24): &400D3,,u%:JA%=u%!0:UA%=u%!4:eC%=u%!8:fC%=u%!&C:sA%=u%!20: shell_HeapBlockReturn(u%): shell_IconSetButtonType(b%,f%,gC%): gC%=&C gC%=&D shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType") gC%<0 gC%>&F shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType") shell_IconSetState(b%,f%,gC%<<&C,&F000): shell_IconSetESG(b%,f%,jB%): jB%<0 jB%>31 shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG") shell_IconSetState(b%,f%,jB%<<16,&1F0000): shell_IconSetText(b%,f%,DA%): DA%<>0 DA%=1<<0 shell_IconSetState(b%,f%,DA%,1<<0): shell_IconSetSprite(BA%,yB%,DA%): DA%<>0 DA%=1<<1 shell_IconSetState(BA%,yB%,DA%,1<<1): shell_IconSetBorder(BA%,yB%,DA%): DA%<>0 DA%=1<<2 shell_IconSetState(BA%,yB%,DA%,1<<2): shell_IconSetHCentred(b%,f%,DA%): shell_IconSetState(b%,f%,0,1<<9): DA%<>0 DA%=1<<3 shell_IconSetState(b%,f%,DA%,1<<3): shell_IconSetVCentred(b%,f%,DA%): DA%<>0 DA%=1<<4 shell_IconSetState(b%,f%,DA%,1<<4): shell_IconSetFilled(b%,f%,DA%): DA%<>0 DA%=1<<5 shell_IconSetState(b%,f%,DA%,1<<5): shell_IconSetRightJust(b%,f%,DA%): shell_IconSetHCentred(b%,f%,0): DA%<>0 DA%=1<<9 shell_IconSetState(b%,f%,DA%,1<<9): shell_IconSetLeftJust(b%,f%): shell_IconSetHCentred(b%,f%,0): shell_IconSetRightJust(b%,f%,0): shell_IconSetUnselectable(b%,f%,iA%): iA%<>0 iA%=1<<22 shell_IconSetState(b%,f%,iA%,1<<22): iA%<>0 shell_HeapBlockFetch(24): &400D3,,u%: !u%=b% u%!4=f% &400D2,-1 shell_HeapBlockReturn(u%) shell_CaretSetRight(b%,f%): &400D2,b%,f%,-1,-1,-1, shell_IconGetData(b%,f%)): print_text(K,L,I$): in(K,L-32,K+16* (I$),L) in(A%,B%,C%,D%): newvals:f=_Q%!28:i=_Q%!32:g=_Q%!36:h=_Q%!40:j=_Q%!4:k=_Q%!8:l=_Q%!&C:m=_Q%!16:O=_Q%!20:P=_Q%!24:p=l-j:q=m-k:AA=O:BA=O+p:CA=P:z=P-q: max(PA%,kA%): PA%0 ?D<>&D:z$=z$+ ?D:D+=1: shell_WindowResize(JA%,xG%,kG%,aG%,oG%,DD%):!_Q%=xG%:_Q%!4=kG%:_Q%!8=aG%:_Q%!&C=oG%: &400D7,JA%,_Q%: Q)_Q%!0=JA%: &400CC,,_Q%: &400C5,,_Q% shell_WindowRetitle( JA%,T$): c%,r%,h%,_E%:r%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(JA%)*32)):r%!0=JA%: &400CC,,r%: ((r%!60) 256)=0 aAc%=r%+76:$c%= T$,&B): &400C3,,r%: &400C1,,r%+4 h%<>JA% shell_UpdateWindowHandle(JA%,h%):JA%=h% _E%=r%!84:$(!(r%+76))= T$,_E%-1): ((r%!32) (1<<16))<>0 &400D1,-1,r%!4,r%!16,r%!&C,r%!16+44 shell_HeapBlockReturn(r%) shell_WindowTitleIndirected(qB%): (1<<8))=(1<<8) shell_ScreenToWindowCoords(AF%, jD%,BF%,_G%,CF%,DF%,AC%:AC%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(AF%)*32)):jD%=AC%:!jD%=AF%: &400CC,,jD%:BF%=AC%!4:RG%=AC%!16:CF%=AC%!20:DF%=AC%!24:X%=X%+(CF%-BF%):Y%=Y%+(DF%-RG%) shell_HeapBlockReturn(AC%): shell_WimpSlotReadEnd: &400EC,-1,-1 RC%:=RC% shell_WimpSlotClaimMemory(RC%,qA%): &400EC,RC%+qA%,-1 kD%0:V$+= (mD%?d%):d%+=1: 1:V$= 34)+1):V$= 34)+2) shell_StringStripTrailing(B$,X$): B$,1)=X$:B$= (B$)-1): shell_StringStripLeading(B$,X$): B$,1)=X$:B$= B$,2): shell_StringStripAll(B$,X$): E,F:E= B$,X$): B$,F-1)+ B$,F+1) E:=B$ shell_StringPadTrailing(B$,X$,KB%): (B$)0 (B$): B$,y%,1)>="a" B$,y%,1)<="z" B$,y%,1)= B$,y%,1)) shell_StringExchange(B$,DA$,hA$): B$,DA$) 0sA%= B$,DA$):B$= B$,sA%-1)+hA$+ B$,sA%+ shell_StringArrayGetLongest(A$(),FD%): y%,GD%:GD%=0: (A$(y%))>GD% (A$(y%)) y%:=GD% mem_to_string(ZF%,d%,PG%): ZF%?d%<>PG%:B$+= (ZF%?d%):d%+=1: shell_FileLength(W$): x%,YD%,CD%,KB%,TC%,B$: 8,5,W$ x%,,YD%,CD%,KB%,TC%:=KB% 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(o$): YA%,a%,D$,C$: o$<>"" (o$):_U%!44=YA% shell_HeapBlockFetch(256):C$= shell_OSVarGetVal(a%,256,"Obey$Dir",1):D$= shell_Leaf(C$),2): shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+D$): shell_HeapBlockReturn(a%): _U%!&64 _U%!&64=(_U%!&64 1<<4) shell_TraceIsOn: _U%!&64 (1<<9) shell_Tracef0(VA$): shell_TraceIsOn) _U%!44<>-1 YA%=_U%!44: #YA%,VA$ _U%!&94>0 shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+VA$) shell_Tracef2(DB%): ("MEDIT "+ ~DB%): shell_TraceExit: _U%!44<>-1 #(_U%!44):_U%!44=-1 shell_AttachHotKey(XA$,QC%,LC%,oC%,d$,b%,Y$,Z$): z%,d%,c%,CA%,WA%,oD%:oD%= _U%!60=0 23_U%!60= shell_HeapBlockFetch(24):d%=0:_U%!&B4=1 d%=_U%!&B4*24:_U%!60= shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1 :z%=_U%!60: "F1":WA%=385 "F2":WA%=386 "F3":WA%=387 "F4":WA%=388 "F5":WA%=389 "F6":WA%=390 "F7":WA%=391 "F8":WA%=392 "F9":WA%=393 "F10":WA%=458 "F11":WA%=459 WA%=( XA$)-64:oD%= WA%+=16 WA%+=32 :c%=z%+d%:c%!0=WA%:c%?4=QC%:c%?5=LC%:c%?6=oC%:c%!8= shell_HeapBlockFetch( d$+1):CA%=c%!8:$CA%=d$: shell_IsWindowStatic(b%)= shell_MessageNoArgs("SHELLMSG09") :c%!&C=b%:c%!16= shell_HeapBlockFetch( Y$+1):CA%=c%!16:$CA%=Y$:c%!20= shell_HeapBlockFetch( Z$+1):CA%=c%!20:$CA%=Z$: shell_HotKeyProcess(WA%): z%,q%,m%,e%,t%,p$,Y$,Z$: LC%,QC%,oC%,mA%,pA%,qB%,IH%,d%: w%,r%:z%=_U%!60:q%=_U%!&B4*24:m%= :e%=0: z%!e%=WA% e%+=24 e%>=q%: qdc%=z%+e%:p$=$(c%!8): shell_Tracef0("HotKeyProcess:Template name is '"+p$+"'"): (p$<>"" c%!&C=0) shell_CreateWindow(p$,t%): shell_Tracef0("HotKeyProcess:Creating new dynamic window (handle is &"+ ~t%+")"):r%= shell_HeapBlockFetch(36):r%!0=t%: &400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2: shell_HeapBlockReturn(r%) :Y$=$(c%!16): Y$<>"" shell_Tracef0("HotKeyProcess:Calling Pre-Open FN '"+Y$+"'"): c%!&C>0 ("FN"+Y$+"("+ c%!&C+")") ("FN"+Y$+"("+ t%+")") shell_Tracef0("HotKeyProcess:No Pre-Open FN registered") shell_IsWindowStatic(c%!&C) shell_OpenWindowStatic(c%!&C) c%!&C>0 shell_MessageNoArgs("SHELLMSG09") shell_OpenWindowDynamic2(t%,mA%,pA%) :Z$=$(c%!20): Z$<>"" shell_Tracef0("HotKeyProcess:Calling Post-Open FN '"+Z$+"'"): c%!&C>0 ("FN"+Z$+"("+ c%!&C+")") ("FN"+Z$+"("+ t%+")") shell_Tracef0("HotKeyProcess:No Post-Open FN registered") p$="":Y$="":Z$="":w%= shell_WindowCentreOnPointer(t%): p%,iC%,mA%,pA%:iC%= shell_HeapBlockFetch(20): &400CF,,iC%:r%= shell_HeapBlockFetch(36):r%!0=t%: &400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2: shell_WindowMoveTo(t%,iC%!0+mA%,iC%!4-pA%) shell_HeapBlockReturn(r%): shell_HeapBlockReturn(iC%): shell_WindowCentreOnScreen(t%): p%,HD%,ID%,AB%,bA%,cC%,JC%: &20035,-1,4 ,,cC%: &20035,-1,5 ,,JC%: &20035,-1,&B ,,HD%: &20035,-1,&C ,,ID%:HD%=HD%<0 shell_HeapBlockReturn(_U%!&D8) @_U%!&D8=0: shell_ScanForHelp: GA$=" -DieWithTask" GA$="" _U%!&64 F$="":wA%= shell_HeapBlockFetch(256):c$= shell_OSVarGetVal(wA%,256, shell_GetAppName+"Res$Path",-1): shell_HeapBlockReturn(wA%): :FA%= c$,","): FA%>0 shell_FileExists( c$,FA%-1)+ shell_GetAppName) c$,FA%-1)+ shell_GetAppName: shell_StrongHlpChkFiles(F$) c$,FA%+1) shell_FileExists(c$+ shell_GetAppName) ?F$=c$+ shell_GetAppName: shell_StrongHlpChkFiles(F$) shell_OK( shell_MessageOneArg("SHELLMSG26", shell_GetAppName)) F$<>"" shell_FileExists(F$) shell_StrongHlpChkFiles(F$) shell_MessageOneArg("SHELLMSG33",F$) kB%=0 shell_StrongHlpMsg("Help_Install "+F$+GA$):_U%!&64=_U%!&64 shell_HelpWord(HA$): MH%,c%,EA%:EA%= shell_HeapBlockFetch(512): _U%!&D0=-1 shell_OSVarExists(EA%,"StrongHelp$Dir") &600DE,"": _U%!&D8<>0 shell_HeapBlockReturn(_U%!&D8) &<_U%!&D8= shell_HeapBlockFetch( HA$+1):c%=_U%!&D8:$c%=HA$ shell_HeapBlockReturn(EA%): shell_OK( shell_MessageNoArgs("SHELLMSG11")) shell_StrongHlpMsg("Help_Word "+HA$) shell_HeapBlockReturn(EA%): shell_StrongHlpMsg(t$): shell_BroadcastMessage(&43B00,t$): shell_ScanForHelp: cB%,JD%:cB%= shell_HeapBlockFetch(256): :cB%!&C=0: &400E7,19,cB%,-2,_U%!&D4 ,,JD%:_U%!&D4=_U%!&D4+1: JD%<>-1 (_U%!&D4)>64: JD%<>-1 R@cB%!0=24:cB%!&C=0:cB%!16=&400C6:cB%!20=JD%: &400E7,17,cB%,0 shell_HeapBlockReturn(cB%): shell_BroadcastMessage(vG%,t$): AA%,tD%:tD%=( t$+30) 3:AA%= shell_HeapBlockFetch(tD%):AA%!&C=0:AA%!16=vG%:$(AA%+20)=t$+ (0):AA%!0=tD%: &600E7,17,AA%,0: shell_HeapBlockReturn(AA%): shell_WindowToggleBackIcon( shell_WindowToggleFlags(b%,1<<24): shell_WindowToggleCloseIcon( shell_WindowToggleFlags(b%,1<<25): shell_WindowToggleTitleBar( shell_WindowToggleFlags(b%,1<<26): shell_WindowToggleToggleIcon( shell_WindowToggleFlags(b%,1<<27): shell_WindowToggleHScrollBar( shell_WindowToggleFlags(b%,1<<30): shell_WindowToggleAdjustSizeIcon( shell_WindowToggleFlags(b%,1<<29): shell_WindowToggleVScrollBar( shell_WindowToggleFlags(b%,1<<28): shell_WindowToggleFlags( b%,BC%): a%,l%,DD%,h%: shell_Tracef0("WindowToggleFlags:wh%=&"+ ~b%):DD%= shell_WindowIsOpen(b%):a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):a%!0=b%: &400CC,,a%:l%=a%!32:l%=(l% BC%):a%!32=l%: &400C3,,a% &400C1,,a%+4 h%:!a%=h%: &400C5,,a% shell_HeapBlockReturn(a%): h%<>b% shell_UpdateWindowHandle(b%,h%):b%=h% shell_ListClickSelect: z%,e%,q%,c%,CA%:z%=_U%!&C:q%= shell_HeapBlockInfo(z%): shell_Tracef0(" "): shell_Tracef0("List of ClickSelect events:"): shell_Tracef0(" "): shell_Tracef0("Window Icon FN") shell_Tracef0("-----------------------------------------------------------"):e%=0: :c%=z%!(e%+20):CA%=z%+e%: shell_HeapBlockExists(c%) $c%<>"" shell_Tracef0( shell_StringPadTrailing( shell_GetWindowIdentifier(CA%!0),".",&C)+" "+ shell_StringPadLeading( CA%!4," ",6)+" "+$c%) :e%+=48: (e%>=q%): shell_Tracef0(" "): shell_ListClickAdjust: z%,e%,q%,c%,CA%:z%=_U%!&C:q%= shell_HeapBlockInfo(z%): shell_Tracef0(" "): shell_Tracef0("List of ClickAdjust events:"): shell_Tracef0(" "): shell_Tracef0("Window Icon FN") shell_Tracef0("-----------------------------------------------------------"):e%=0: :c%=z%!(e%+24):CA%=z%+e%: shell_HeapBlockExists(c%) $c%<>"" shell_Tracef0( shell_StringPadTrailing( shell_GetWindowIdentifier(CA%!0),".",&C)+" "+ shell_StringPadLeading( CA%!4," ",6)+" "+$c%) :e%+=48: (e%>=q%): shell_Tracef0(" "): shell_ListHelpTags: z%,e%,q%,c%,CA%:z%=_U%!&C:q%= shell_HeapBlockInfo(z%): shell_Tracef0(" "): shell_Tracef0("List of attached help tags:"): shell_Tracef0(" "): shell_Tracef0("Window Icon Tag") shell_Tracef0("-----------------------------------------------------------"):e%=0: :c%=z%!(e%+44):CA%=z%+e%: shell_HeapBlockExists(c%) $c%<>"" shell_Tracef0( shell_StringPadTrailing( shell_GetWindowIdentifier(CA%!0),".",&C)+" "+ shell_StringPadLeading( CA%!4," ",6)+" "+$c%) :e%+=48: (e%>=q%): shell_Tracef0(" "): shell_MemFill(kC%,oE%,lE%): I%,KD%,vD%:KD%=oE% 4:vD%=oE% KD%>0 (KD%*4) 4:kC%!(I%-1)=lE%: vD%>0 .kC%=kC%+(KD%*4): vD%-1:kC%?I%=lE%: shell_AttachFontMenu(b%,f%,J$,WA$): shell_FontMenuInit: "FontMenu_Select",""+ 0,_U%!260 ,n%:_U%!&FC=n%: shell_EventAdd(b%,f%,0,-2,J$): shell_Tracef0("AttachFontMenu:Attaching font menu"): WA$<>"" shell_AttachMenuMaker(b%,f%,WA$) shell_AttachFontSubMenu(VB%,E$,J$): LH%,n%,c%,g%: shell_FontMenuInit: "FontMenu_Select",""+ 0,_U%!260 &45BCE,VB%,n%: &45BCC,, :_U%!&FC=n%: shell_EventListMenuWarn(VB%,n%,E$,J$): shell_Tracef0("AttachFontSubMenu:Attaching font menu &"+ ~n%): shell_FontMenuInit: ("RMEnsure FontMenu 1.16 RMLoad FontMenu"): ("RMEnsure FontMenu 1.16 Error Couldn't load FontMenu module"): _U%!&F0=-1 "FontMenu_Create" _U%!&F0 shell_FontMenuSelectFont("", shell_FontMenuSelectFont(u$,wD%): c%,SB%: shell_HeapBlockExists(_U%!&F4) shell_HeapBlockReturn(_U%!&F4) WH_U%!&F4= shell_HeapBlockFetch( u$+1):c%=_U%!&F4:$c%=u$: wD%<>0 wD%=1 ZB_U%!260=wD%: "FontMenu_Select",u$,_U%!260 ,SB%: SB%<>_U%!&FC shell_FontMenuUpdatePtr(SB%):_U%!&FC=SB% shell_Tracef0("FontMenuSelectFont:Font is '"+u$+"'"): shell_FontMenuGetLastSelectedFont: shell_HeapBlockExists(_U%!&F4) c%=_U%!&F4:=$c% shell_FontMenuUpdatePtr(e%): z%,g%: shell_Tracef0("FontMenuUpdatePtr:Started.."): shell_HeapBlockExists(_U%!&DC) shell_Tracef0("FontMenuUpdatePtr:HeapBlock found.."):z%=_U%!&DC:g%=0: shell_Tracef0("FontMenuUpdatePtr:Substituting ptr.."):z%!(g%+8)=e%:g%+=&C: z%!g%=-1 shell_MenuUpdateHandle(nE%,pE%): q%,e%,i%,n%:q%= shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%= :i%=_U%!&C: :n%=i%!(e%+8): n%=nE% i%!(e%+8)=pE% +e%+=48: (e%>=q%): _U%!24=nE% _U%!24=pE% shell_FindFont( e$,LD%,MD%, xD%): shell_FontIsAvailable(e$,LD%,MD%) e$="Trinity.Medium" &40081,,e$,LD%*16,MD%*16,0,0 shell_FontIsAvailable(e$,LD%,MD%): &40081,0,e$,LD%*16,MD%*16,0,0 &40082,xD%:= shell_CheckSelection(qG%): c%,g%:c%=_U%!256: _U%!24=_U%!&FC qG%!g%<>c%!g% g%+=4: c%!g%=-1:=g% shell_MenuGetItemAddress(n%,sE%): g%,uB%: &45BC7,n% :uB%=n%+28+((sE%!g%)*24):n%=uB%!4:g%+=4: sE%!g%=-1:=uB% shell_GetLastMouseXPos:=_U%!272 shell_GetLastMouseYPos:=_U%!276 shell_UpdateWindowHandle(VA%,MA%): shell_Tracef0("UpdateWindowHandle:Updating stored window handles"): shell_Tracef0("UpdateWindowHandle:old handle=&"+ ~VA%): shell_Tracef0("UpdateWindowHandle:new handle=&"+ ~MA%): MA%<>VA% _U%!28=VA% _U%!28=MA% !_Q%=VA% !_Q%=MA% shell_FixEventBlock(VA%,MA%,_U%!&C,48): shell_FixEventBlock(VA%,MA%,_U%!96,16): shell_FixEventBlock(VA%,MA%,_U%!72,24): shell_FixEventBlock(VA%,MA%,_U%!92,24): shell_FixEventBlock2(VA%,MA%,_U%!&68,16): shell_FixEventBlock2(VA%,MA%,_U%!332,32) shell_UpdateStaticWindowHandle(VA%,MA%): shell_UpdateWindowHandleList(VA%,MA%) shell_FixEventBlock(VA%,MA%,i%,d%): e%,q%: shell_HeapBlockExists(i%) shell_HeapBlockInfo(i%)-8: (i%!e%=VA%) i%!e%=MA% :e%+=d%: (e%>=q%) shell_FixEventBlock2(VA%,MA%,i%,d%): e%,q%:e%=4: shell_HeapBlockExists(i%) q%=!i%: (i%!e%=VA%) i%!e%=MA% :e%+=d%: (e%>=q%) shell_IconSelectAll(b%): a%,I%:a%= shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=1<<21:a%!&C=1<<21: &400D6,!a%,I%,5<<21,0<<21: !I%>-1:a%!4=!I%: &400CD,,a%:I%+=4: shell_HeapBlockReturn(a%): shell_IconDeselectAll(b%): a%,I%:a%= shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=0:a%!&C=1<<21: &400D6,!a%,I%,5<<21,1<<21: !I%>-1:a%!4=!I%: &400CD,,a%:I%+=4: shell_HeapBlockReturn(a%): shell_Message_SaveDesktop(Q%): JA$:JA$="Run "+ shell_GetAppDir+ &C,2,Q%!20,JA$, shell_MessagesInit(H$, uE%): qA%,l%: 3,"Cannot open message file '"+H$+"'" &41500,,H$ l%,,qA%: uE%=0 shell_HeapBlockFetch(qA%) 30,6,,,17+ ,,OD%:$(OD%+16)=H$: &41501,OD%,OD%+16: shell_Tracef0("MessagesInit:Message resource file '"+H$+"' loaded"): shell_PrinterOnLine: vE%,wE%:vE%= (-4): 2,1,0,1,0,1,0: >30:wE%= (-4)0 q>vA%!&C= shell_HeapBlockFetch(( KA$)+1):CA%=vA%!&C:$CA%=KA$ vA%!&C=0 LA$>0 w>vA%!16= shell_HeapBlockFetch(( LA$)+1):CA%=vA%!16:$CA%=LA$ vA%!16=0 iG%=-1 vA%!20=1 vA%!20=0 ~od%= shell_GetEventListOffset2(b%,yE%,_U%+&68,16, ):o%=_U%!&68+d%:o%!0=b%:o%!4=yE%:o%!8=zE%*(-1):o%!&C=vA%: shell_HandleBumpIcons(d%,b%,f%,_button%): DH%,SA%,o%,lC%,_temp$,AE%: dB%,BE%,CE%: AH%,DC%: _button%<>2 Yo%=_U%!&68+d%:_U%!288=b%:_U%!292=f%:_U%!296=d%:dB%=o%!8:BE%= (-1):CE%= (-2): dB%=dB%*8 dB%=dB%*2 dB%=dB%*4 :SA%=o%!&C:AE%=SA%!16: AE%<>0 C_temp$= shell_IconGetData(b%,SA%!0):lC%= ("FN"+$AE%+"(_temp$)") shell_IconGetData(b%,SA%!0)) _button%=1 _new_val%=lC%+((dB%)*(-1)) _new_val%=lC%+dB% SA%!20=0 _new_val%>SA%!8 _new_val%=SA%!8 _new_val%SA%!8 _new_val%=SA%!4 _new_val%0 1_new_val$= ("FN"+$DC%+"(_new_val%,_button%)") _new_val$= _new_val% _new_val%<>lC% shell_IconPutData(b%,SA%!0,_new_val$,-1) shell_WindowSetSpriteArea(t%,DE%): a%,MA%,dC%,EE%:a%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(t%)*32)):!a%=t%: &400CC,,a%:a%!68=DE%: shell_IconSetSpriteArea(a%!60,a%+76,DE%): (a%!88)>0 dC%=0 (a%!88)-1:EE%=a%+92+dC%*32: shell_IconSetSpriteArea(EE%!16,EE%+20,DE%): &400C3,,a%: &400C1,,a%+4 MA%<>t% shell_UpdateWindowHandle(t%,MA%):t%=MA% shell_HeapBlockReturn(a%):=t% shell_IconSetSpriteArea(l%,mC%,FG%): 3)=2) 256)<>0) mC%!4=FG% shell_StrongHlpIsAvailable: TB%,EA%:TB%= _U%!&64 kEA%= shell_HeapBlockFetch(256):TB%= shell_OSVarExists(EA%,"StrongHelp$Dir"): shell_HeapBlockReturn(EA%) :=TB% shell_MenuNew(T$): shell_Tracef0("MenuNew:Creating new menu (title is '"+T$+"')"): &45BC1,,T$ h%:=h% shell_MenuAdd(h%,MA$,J$): shell_Tracef0("MenuAdd:Adding item ("+MA$+")"): J$<>"" &45BC2,h%,MA$,J$ &45BC2,h%,MA$ :=dA% shell_MenuTick(dA%,iA%): &45BC9,dA%,iA%: shell_MenuTickOnly1(XA%,FA%): &45BD1,XA%,FA%: shell_MenuTickOnly2(dA%): &45BD1,dA%: shell_MenuShade(h%,iA%): &45BCB,h%,iA%: shell_MenuDotted(dA%,iA%): &45BCA,dA%,iA%: shell_MenuColours(dA%,eD%,fD%): &45BD0,dA%,eD%,fD%: shell_MenuWritable(dA%,iA%,qA%,x$): &45BCD,dA%,iA%,qA%,x$: shell_MenuPutData(dA%,O$): &45BC8,dA%,O$: shell_MenuCallHandler(t%,_h_blk%): ("FN"+$t%+"(_h_blk%)") shell_AttachOpenWindow(b%,A$): a%,c%,d%: shell_Tracef0("AttachOpenWindow:Attaching OpenWindow Handler"): shell_MessageOneArg("SHELLMSG27","AttachOpenWindow") shell_GetEventListOffset(b%,-1,_U%+304,&C, ):a%=_U%!304+d%:a%!0=b%:a%!4=-1:a%!8= shell_HeapBlockFetch( (A$)+1):c%=a%!8:$c%=A$: shell_AttachCloseWindowHandler(b%,A$): a%,c%,d%: shell_Tracef0("AttachCloseWindowHandler:Attaching CloseWindow Handler"): shell_MessageOneArg("SHELLMSG27","AttachCloseWindow") shell_GetEventListOffset(b%,-1,_U%+308,&C, ):a%=_U%!308+d%:a%!0=b%:a%!4=-1:a%!8= shell_HeapBlockFetch( (A$)+1):c%=a%!8:$c%=A$: shell_SpriteRename(XC%,kA$,oA$): 46,512+26,XC%, shell_SpriteGetPtr(XC%,kA$),oA$: shell_SpriteAreaSave(XC%,H$): 46,512+&C,XC%,H$: shell_EnsurePoll: :DA%= shell_Poll_I(0,_U%!&94): shell_Action(DA%): DA%=0: shell_WimpGetVersion:=_U%!316 shell_OSCheckVersion(KG%):= shell_OSModuleCheckVersion("UtilityModule",KG%) shell_OSModuleCheckVersion(pA$,y): a%,_B%,M$:a%= shell_HeapBlockFetch(256): ("Set Module$Check Y"): ("RMEnsure "+pA$+" "+ y+" Set Module$Check N"): 35,"Module$Check",a%,256,0,0 ,,_B%:a%?_B%=&D: ("Unset Module$Check"):M$=$a% shell_HeapBlockReturn(a%): M$="N" shell_MessageSendDataLoad(x%,R$): AA%:AA%= shell_HeapBlockFetch(256):AA%!0=256:AA%!4=0:AA%!&C=0:AA%!16=5:AA%!20=0:AA%!28=0:AA%!32=0:AA%!36=0:AA%!40=x%:$(AA%+44)=R$+ &400E7,17,AA%,0: shell_HeapBlockReturn(AA%): shell_MenuMakeFromFile(T$,jA$,o$): h%,X%,B$,k%: shell_FileExists(o$) shell_MenuNew(T$):X%= (o$): #X%:k%= shell_MenuAdd(h%,B$,jA$): shell_BinarySearch(_search_term$,dA$,k$,NG%,FE%): _pos%,CB%,_wp$,PD%,FH%,GE%,HE%,FF%,m%,IE%:FE%+=1:IE%= :CB%=FE%:PD%=0:_pos%=CB% 2:HE%=NG%-1:GE%=FE%: :_wp$= ("FN"+dA$+"(_pos%)"):JE%=_pos%: _search_term$=_wp$ ("FN"+k$+"(_search_term$,_wp$)") +GE%=_pos%:CB%=_pos%-HE%:_pos%=CB% 2+PD% HE%=_pos%:PD%=_pos%:CB%=GE%-_pos%:_pos%=CB% 2+PD% FF%=JE% !FF%=JE%: shell_IconLastClicked:=_U%!32 shell_MenuGetNrItems(XA%): n%,w%,GF%: &45BC7,XA% n%:n%+=28: :w%=(n%?0 &80):GF%+=1:n%+=24: w%:=GF% shell_MenuGetNrDotted(XA%): n%,w%,FD%: &45BC7,XA% n%:n%+=28: :w%=(n%?0 &80): (n%?0 FD%+=1 n%+=24: w%=-1:=FD% shell_MenuGetItemHandler(XA%,nC%): eA%,e%,NA$:eA%= shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1: &45BC4,XA%,eA% NA$="" NA$=$(e%) shell_HeapBlockReturn(eA%):=NA$ shell_MenuGetItemText(XA%,nC%): eA%,e%,I$:eA%= shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1: &45BC4,XA%,eA% ,,e%:I$=$(e%!&C): shell_HeapBlockReturn(eA%):=I$ shell_MenuGetItemHandle(XA%,nC%): eA%,e%,h%:eA%= shell_HeapBlockFetch(8):eA%!0=nC%:eA%!4=-1: &45BC4,XA%,eA% ,,e%:h%=e%!8: shell_HeapBlockReturn(eA%):=h% shell_MenuGetItemHeight(XA%): &45BC7,XA% n%:=n%!20 shell_MenuCalculateHeight(XA%): bA%:bA%= shell_MenuGetNrItems(XA%)* shell_MenuGetItemHeight(XA%):=bA%+( shell_MenuGetNrDotted(XA%)*24) shell_MenuSortItems(n%,gA$,cG%,kC%,KE%): LE%:LE%= shell_MenuGetNrItems(n%)-1:_shell_MS_handle%=n%: KE%>LE% KE%=LE% &406C0: shell_QuickSort(gA$,"_shell_MS_swap",cG%,0,KE%): &406C1: shell_QuickSort(k$,q$,_asc%,_start%,_end%): _lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%= :_temp%=_lo%-1+ (_hi%+1-_lo%):k%= ("FN"+q$+"(_lo%,_temp%)"): _asc%=0 ("FN"+k$+"(_lo%,_hi%)") Z(k%= ("FN"+q$+"(_lo%,_hi%)"):_F%= ("FN"+k$+"(_hi%,_lo%)") _(k%= ("FN"+q$+"(_hi%,_lo%)"):_F%= _hi%=_hi%-1 _lo%=_lo%+1 _lo%=_hi%: _start%<_lo%-1 shell_QuickSort(k$,q$,_asc%,_start%,_lo%-1) _hi%+1<_end% shell_QuickSort(k$,q$,_asc%,_hi%+1,_end%) _shell_MS_swap(QD%,RD%): r$,s$,KF%,LF%:r$= shell_MenuGetItemText(_shell_MS_handle%,QD%):s$= shell_MenuGetItemText(_shell_MS_handle%,RD%):KF%= shell_MenuGetItemHandle(_shell_MS_handle%,QD%):LF%= shell_MenuGetItemHandle(_shell_MS_handle%,RD%) shell_MenuPutData(KF%,s$): shell_MenuPutData(LF%,r$):=0 _shell_MS_comp(QD%,RD%): r$,s$:r$= shell_MenuGetItemText(_shell_MS_handle%,QD%):s$= shell_MenuGetItemText(_shell_MS_handle%,RD%): shell_WindowSetTitleRightJust( p%,aA%,h%,mB%:mB%= shell_WindowIsOpen(b%):p%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):!p%=b%: &400CC,,p%:aA%=p%!60: (1<<3)) shell_Tracef0("WindowSetTitleRightJust:title flags = &"+ ~aA%): shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit set.."): shell_Tracef0("WindowSetTitleRightJust:Unsetting horizontally centred bit.."):aA%=aA% (1<<3) shell_Tracef0("WindowSetTitleRightJust:title flags = &"+ ~aA%) shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit NOT set..") shell_Tracef0("WindowSetTitleRightJust:Setting right justified bit.."):aA%=aA% (1<<9):p%!60=aA%: &400C3,,p%: &400C1,,p%+4 b%<>h% shell_Tracef0("WindowSetTitleRightJust:Updating window handle..."): shell_UpdateWindowHandle(b%,h%):b%=h% shell_OpenWindow(h%,0,0) shell_HeapBlockReturn(p%): shell_WindowSetTitleCentreJust( p%,aA%,h%,mB%:mB%= shell_WindowIsOpen(b%):p%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(b%)*32)):!p%=b%: &400CC,,p%:aA%=p%!60: shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+ ~aA%) shell_Tracef0("WindowSetTitleCentreJust:t_flags% AND (1 << 3) = "+ ~(aA% (1<<3))): (1<<3))=0 shell_Tracef0("WindowSetTitleCentreJust:Horizontally centred bit not set.."): shell_Tracef0("WindowSetTitleCentreJust:Setting horizontally centred bit.."):aA%=aA% (1<<3): shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+ ~aA%):p%!60=aA% &400C3,,p%: &400C1,,p%+4 b%<>h% shell_Tracef0("WindowSetTitleCentreJust:Updating window handle..."): shell_UpdateWindowHandle(b%,h%):b%=h% shell_OpenWindow(h%,0,0) shell_HeapBlockReturn(p%): shell_IconGetSelectedIcons(b%,jB%, OF%:OF%=(jB%<<16)+(1<<21): &400D6,b%,s%,OF%,(jB%<<16)+(1<<21): shell_GetLastMouseButton:=_U%!320 shell_GetLastWindowClicked:=_U%!28 shell_GetLastIconClicked:=_U%!32 shell_IconIndirSize(EB%,l%,mC%,X%): qA%,QF%,g%,SD%: &800100)=256 "qA%=mC%!8: (mC%!4<>-1) AQF%=mC%!4: #X%=EB%+QF%:g%=0: :SD%= #X%:g%+=1: SD%<32:qA%+=+g% qA%=0 :=qA% shell_StrongHlpChkFiles(F$): shell_FileExists(F$+".HelpData") -1 -1 nB%=u%!(e%+4) nB%=!u% nB%=u%!(e%-4) nB%=u%!(g%-4) &400D2,b%,nB%,-1,-1,-1, shell_IconGetData(b%,nB%)) shell_HeapBlockReturn(u%): shell_CaretPutFirstIcon(b%): shell_CaretMoveCaret(b%,0): shell_CaretPutLastIcon(b%): shell_CaretMoveCaret(b%,1): shell_CaretPutNextIcon(b%): shell_CaretMoveCaret(b%,2): shell_CaretPutPrevIcon(b%): shell_CaretMoveCaret(b%,3): shell_TemplateFileInfo(H$, VC%:VC%= RO3_Present: shell_TemplateFileInfo3(H$,xA%,HA%,w%) shell_TemplateFileInfo2(H$,xA%,HA%,w%) shell_TemplateFileInfo2(H$, FA%,EC%,eB%: EA%,X%,QE%,DG%: g%,SD%,RE%,oA%,qC%,l%:FA%=0:HA%=0:EC%=0:eB%=0:w%=0: shell_FileExists(H$) w%=-1 shell_FileType(H$)<>&FEC w%=-2 {UEA%= shell_HeapBlockFetch(&D):X%= (H$): #X%=16: &C,4,X%,EA%,4:EB%=!EA%: EB%>0 HA%+=1:SE%=0: &C,4,X%,EA%,4:QE%=!EA%: &C,4,X%,EA%,4:DG%=!EA%: &C,4,X%,EA%,&C:RE%= #X%=EB%+56: &C,4,X%,EA%,4:l%=!EA%: #X%=EB%+72: &C,4,X%,EA%,&C:SE%+= shell_IconIndirSize(EB%,l%,EA%,X%): #X%=EB%+84: &C,4,X%,EA%,4:oA%=!EA%: oA%>0 qC%=0 oA%-1: #X%=EB%+88+(qC%*32)+16: &C,4,X%,EA%,4:l%=!EA%: #X%=EB%+88+(qC%*32)+20: &C,4,X%,EA%,&C:SE%+= shell_IconIndirSize(EB%,l%,EA%,X%): #X%=RE%:EC%+=SE%: QE%>eB% eB%=QE% EB%=0: shell_HeapBlockReturn(EA%):xA%=eB%+EC% shell_TemplateFileInfo3(H$, FA%,EC%,eB%,EB%: g%,SD%,RE%,oA%,qC%,l%:FA%=0:HA%=0:EC%=0:eB%=0:EA%= shell_HeapBlockFetch(&D): &400D9,,H$: :$EA%="*": &400DB,,-1,,,,EA%,FA% ,xA%,HG%,,,,FA%: FA%<>0 xA%>eB% eB%=xA% EC%+=HG%:HA%+=1 FA%=0: &400DA:xA%=eB%+EC%: shell_HeapBlockReturn(EA%): RO3_Present: a%,_B%,M$:a%= shell_HeapBlockFetch(256): ("Set RO3$Check Y"): ("RMEnsure UtilityModule 3.00 Set RO3$Check N"): 35,"RO3$Check",a%,256,0,0 ,,_B%:a%?_B%=&D: ("Unset RO3$Check"):M$=$a%: shell_HeapBlockReturn(a%): M$="N" shell_WindowCountIcons(b%): fB%,VC%,oA%: (_U%!&64 1<<&A) shell_Tracef0("WindowCountIcons:RISC OS 3 detected.."): b%=-1 b%=-2 yfB%= shell_HeapBlockFetch(88):!fB%=b%: &400CC,,fB%+1:oA%=fB%!88: shell_Tracef0("WindowCountIcons:nr_icons% = "+ shell_Tracef0("WindowCountIcons:RISC OS 3 NOT found.."):fB%= shell_HeapBlockFetch(6000): $!fB%=b%: &400CC,,fB%:oA%=fB%!88 shell_Tracef0("WindowCountIcons:nr_icons% = "+ shell_HeapBlockReturn(fB%):=oA% shell_SliderGetValue(h%):=(_U%!332+h%)!28 shell_HandleSlider(b%,f%,tA%): KA%,LA%,RA%,a%,o%: shell_Tracef0("HandleSlider:slider drag event found.."):o%=_U%!332+tA%:KA%= shell_HeapBlockFetch(50):KA%!0=b%:KA%!4=o%!8: &400CE,,KA%:a%=_U%!328:a%!0=0:a%!4=KA%!16-KA%!8:a%!8=f%:a%!&C=o%!&C:a%!16=o% a%!24=o%!24:KA%!0=b%: &400CB,,KA%:LA%=KA%!4-KA%!20:RA%=KA%!16-KA%!24:KA%!4=f%: &400CE,,KA%:KA%!4=7:KA%!8+=LA%:KA%!&C+=RA%:KA%!16+=LA%:KA%!20+=RA%:KA%!24=KA%!8:KA%!28=KA%!&C:KA%!32=KA%!24+a%!4:KA%!36=KA%!20: &400D0,,KA%: shell_HeapBlockReturn(KA%) _U%!&64=_U%!&64 1<<&B: shell_Slider: FB%,a%,UD%,sC%,b%,LA%,ZA$,NB%,_value%,k%:FB%= shell_HeapBlockFetch(20):NB%=_U%!328: &400CF,,FB%:b%=FB%!&C:sC%=NB%!8:UD%=!FB%: UD%<>!NB% shell_HeapBlockFetch(50):!a%=b%: &400CB,,a%:LA%=UD%-a%!4:a%!4=sC%: &400CE,,a%: &400C4,,a%:a%!4=b%:a%!16=LA%: &400C2,,a%+4: &400D1,b%,a%!8,a%!&C,a%!8+NB%!4,a%!20:_value%= (((LA%-a%!8)*&64)/NB%!4):c%=NB%!16:c%!28=_value%: NB%!24<>-1 I$k%= ("FN"+$(NB%!24)+"(_value%)") NB%!&C>=0 L7ZA$= (_value%): shell_IconPutData(b%,NB%!&C,ZA$,-1) :!NB%=UD%: shell_HeapBlockReturn(a%) shell_HeapBlockReturn(FB%): shell_GetEventListOffset2(b%,f%,i%,GB%,bC%): q%,e%,m%,d%,JB%,c%: (!i%=0 (!i%=0) bE!i%= shell_HeapBlockFetch(GB%+4):c%=!i%:c%!0=GB%:c%!4=0:c%!8=0:=4 :c%=!i%:q%=!c%: shell_Tracef0("GetEventListOffset2:list size is "+ q%):e%=4:m%= :d%=-1:JB%=-1:c%=!i%: shell_Tracef0("GetEventListOffset2:window handle=&"+ ~c%!e%): JB%<0 (c%!e%=0 c%!e%+4=0) JB%=e% (c%!e%=b%) f%=-1 d%=e%:m%= c%!(e%+4)=f% d%=e%:m%= e%+=GB% e%+=GB% ((e%>=(q%+4)) (d%=-1 JB%<0 Ud%=q%+4:!i%= shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%!0+=GB%:c%+=d%:c%!4=0:c%!8=0 d%=JB% shell_SliderSetValue(h%,_value%): o%,sC%,a%,YF%,UE%,VE%,WD%: aF%,bF%:o%=_U%!332+h%:sC%=o%!4:b%=o%!0:YF%=o%!8:VE%=o%!&C:a%= shell_HeapBlockFetch(50):a%!0=b%:a%!4=YF%: &400CE,,a%:UE%=a%!16:WD%=a%!8:aF%=a%!&C:bF%=a%!20:a%!4=sC%: &400CE,,a% &400C4,,a%:a%!4=b%: _value%>&64 _value%=&64 _value%<=0 _value%=0:a%!16=a%!8 a%!16=WD%+(UE%*(_value%/&64))-(WD%*(_value%/&64)) :o%!28=_value%: &400C2,,a%+4: &400D1,b%,WD%,aF%,UE%,bF%: o%!24<>-1 ("FN"+$(o%!24)+"(_value%)") VE%>=0 shell_IconPutData(b%,VE%, _value%, shell_HeapBlockReturn(a%): shell_AttachSliderHandler(b%,cF%,WC%,FC%,XD%,YE%,Q$): o%,d%:d%= shell_GetEventListOffset2(b%,WC%,_U%+332,32, ):o%=_U%!332+d%:o%!0=b%:o%!4=WC%:o%!8=cF%:o%!&C=FC%:o%!16=XD%:o%!20=YE%: Q$<>"" 2o%!24= shell_HeapBlockFetch( Q$+1):$(o%!24)=Q$ o%!24=-1 :o%!28=0: _U%!328=0 _U%!328= shell_HeapBlockFetch(24) shell_AttachClickSelect(b%,WC%,"_shell_icondrag"): shell_AttachClickSelect(b%,cF%,"_shell_icondrag2"): XD%>=0 shell_AttachClickSelect(b%,XD%,"_shell_sliderbumpupS"): shell_AttachClickSelect(b%,YE%,"_shell_sliderbumpdownS"): shell_AttachClickAdjust(b%,XD%,"_shell_sliderbumpdownA"): shell_AttachClickAdjust(b%,YE%,"_shell_sliderbumpupA") _shell_icondrag(b%,f%): shell_IconDragBox(b%,f%):=0 _shell_icondrag2(b%,f%): OB%,o%,fA%,m%,WC%:o%=_U%!332:OB%=!o%:fA%=4: shell_Tracef0("Event block size is "+ OB%): o%!(fA%+8)=f% :WC%=o%!(fA%+4) :fA%+=32: fA%>=OB% shell_IconDragBox(b%,WC%):=0 _shell_sliderbumpupS(b%,f%): k%:k%= _shell_sliderbumpup(b%,f%,4):=0 _shell_sliderbumpupA(b%,f%): k%:k%= _shell_sliderbumpup(b%,f%,1):=0 _shell_sliderbumpdownS(b%,f%): k%:k%= _shell_sliderbumpdown(b%,f%,4):=0 _shell_sliderbumpdownA(b%,f%): k%:k%= _shell_sliderbumpdown(b%,f%,1):=0 _shell_sliderbumpup(b%,f%,lB%): OB%,o%,fA%,m%,e%,_value%,GC%: shell_Tracef0("In sliderbumpup routine"):o%=_U%!332:OB%=!o%:fA%=4: shell_Tracef0("Event block size is "+ OB%): lB%=4 GC%=16 GC%=20 o%!(fA%+GC%)=f% :e%=fA%:_value%=o%!(e%+28): shell_Tracef0("Current slider value = "+ _value%): shell_Tracef0("Slider handle is = "+ :fA%+=32: fA%>=OB% shell_SliderSetValue(e%,_value%+1) _shell_sliderbumpdown(b%,f%,lB%): OB%,o%,fA%,m%,e%,_value%,GC%: shell_Tracef0("In sliderbumpdown routine"):o%=_U%!332:OB%=!o%:fA%=4: shell_Tracef0("Event block size is "+ OB%): lB%=4 GC%=20 GC%=16 o%!(fA%+GC%)=f% :e%=fA%:_value%=o%!(e%+28): shell_Tracef0("Current slider value = "+ _value%): shell_Tracef0("Slider handle is = "+ :fA%+=32: fA%>=OB% shell_SliderSetValue(e%,_value%-1) shell_DeleteEventSlider(b%,f%): d%,a%,q%,i%,c%,gF%:i%=_U%!332: shell_GetEventListOffset2(b%,f%,_U%+332,32, shell_Tracef0("DeleteEventSlider:offset% = "+ d%>=0 f%=-1 shell_Tracef0("DeleteEventSlider:Deleting Slider Event (all events for window handle &"+ ~b%+")") shell_Tracef0("DeleteEventSlider:Deleting Slider Event (window handle was &"+ ~b%+" icon handle was "+ f%+")") :q%=!i%: d%=q%-32 shell_HeapBlockReturn(i%+d%+24): shell_HeapBlockReturn(_U%!332):_U%!332=0: shell_Tracef0("DeleteEventSlider:No Slider events now registered") _U%!332= shell_HeapBlockExtend(_U%!332,-32):i%=_U%!332:!i%-=32 a%=i%+d%:a%!0=0:a%!4=0:gF%=a%+24: shell_HeapBlockReturn(gF%) d%<0: shell_OpenWindowDynamic(lA$,QA$,RA$): t%,mA%,pA%,r%: shell_CreateWindow(lA$,t%): shell_Tracef0("OpenWindowDynamic:Creating new dynamic window (handle is &"+ ~t%+")"):r%= shell_HeapBlockFetch(36):r%!0=t%: &400CB,,r%:mA%=(r%!4-r%!&C)/2 =pA%=(r%!16-r%!8)/2: shell_HeapBlockReturn(r%): _U%!20<>0 &400D4,,-1:k%= shell_DeleteWindow(_U%!20) :_U%!20=b%: QA$<>"" shell_Tracef0("OpenWindowDynamic:Calling Pre-Open FN '"+QA$+"'"):k%= ("FN"+QA$+"("+ t%+")") shell_Tracef0("OpenWindowDynamic:No Pre-Open FN") shell_OpenWindowDynamic2(t%,mA%,pA%): RA$<>"" shell_Tracef0("OpenWindowDynamic:Calling Post-Open FN '"+RA$+"'"):k%= ("FN"+RA$+"("+ t%+")") shell_Tracef0("OpenWindowDynamic:No Post-Open FN") shell_InteractiveHelpOn: (_U%!&64 1<<&C)<>0 _U%!&64=_U%!&64 1<<&C shell_InteractiveHelpOff: (_U%!&64 1<<&C)<>0 _U%!&64=_U%!&64 1<<&C shell_MessageSendPrintSave(ZE%,iF%): iF%>1 _U%!336=iF%-1 _U%!336=0 shell_DoSendPrintSave(ZE%): shell_DoSendPrintSave(ZE%): GA%:GA%= shell_HeapBlockFetch(256):GA%!0=256:GA%!&C=0:GA%!16=&80142:GA%!20=0:GA%!24=0:GA%!28=0:GA%!32=0:GA%!36=256:GA%!40=ZE%:$(GA%+44)="PrintOut"+ shell_Tracef0("MessageSendPrintSave:Sending PrintSave message..") &400E7,18,GA%,GA%!20,GA%!24: shell_HeapBlockReturn(GA%): shell_HandlePrintFile(_Q%): shell_Tracef0("HandlePrintFile:Message_PrintFile received"): shell_HandlePrintError(_Q%): shell_Tracef0("HandlePrintError:Message_PrintError received"): shell_HandlePrintTypeOdd(_Q%): shell_Tracef0("HandlePrintTypeOdd:Message_PrintTypeOdd received"): shell_HandleSetPrinter(_Q%): shell_Tracef0("HandleSetPrinter:Message_SetPrinter received"): shell_PrinterDriverLoaded: "XPDriver_Info" ;IB%: shell_PrinterDriverGetName: IB%,jF%: "XPDriver_Info" ,,,,jF%;IB%: shell_GetString(jF%) shell_IconGetBGColour(b%,f%): uA%,j%:j%= shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%: &400CE,,j%:uA%=(j%!24>>28) shell_HeapBlockReturn(j%):=uA% shell_IconGetFGColour(b%,f%): uA%,j%:j%= shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%: &400CE,,j%:uA%=(j%!24>>24) shell_HeapBlockReturn(j%):=uA% shell_AttachPopupMenu(b%,oB%,FC%,n%,Q$): shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,0): shell_AttachColourPopupMenu(b%,oB%,FC%,n%,Q$): shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,1): shell_DoAttachPopupHandler(b%,oB%,FC%,n%,Q$,qB%): o%,d%:d%= shell_GetEventListOffset2(b%,oB%,_U%+340,24, ):o%=_U%!340+d%:o%!0=b%:o%!4=oB%:o%!8=FC%: Q$<>"" 2o%!&C= shell_HeapBlockFetch( Q$+1):$(o%!&C)=Q$ o%!&C=-1 :o%!16=qB%:o%!20=n%: oB%>=0 shell_IconSetButtonType(b%,oB%,3) shell_DoPopupSelect(_Q%,d%): o%,Q$,_item_text$,w%,tC%: BA%,bE%,cE%:o%=_U%!340+d%:BA%=!o%:tC%=o%!8:dE%=o%!&C:bE%=o%!16:XA%=o%!20:cE%=!_Q%:_item_text$= shell_MenuGetItemText(XA%,cE%):w%=0: dE%<>-1 =Q$=$(dE%):w%= ("FN"+Q$+"("+ BA%+","+ tC%+",_item_text$)") w%<>0 dE%=-1 tC%>=0 _POPUP_TYPE_TEXT: shell_IconPutData(BA%,tC%,_item_text$, _POPUP_TYPE_WIMPCOLOUR: shell_IconSetBGColour(BA%,tC%,cE%) 99,"Unknown Popup type in DoPopupSelect (type was "+ bE%+")" shell_3DEnabled: mF%,_3d%: _U%!&64 (1<<&A) 6,&A1,&8C ,,mF%: _3d%= _3d%= _3d%= :=_3d% shell_MenuDelete(h%,hG%): e%,q%,i%: h%<>0 &65BC3,h%,hG%:q%= shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C: (i%!(e%+8)=h%) i%!(e%+8)=0 e%+=48 (e%>=q%) shell_HandleAttachedDataSave(_Q%,b%,f%): tA%,a%,CC%,_name$,c%,k%: shell_DataSaveCheckName(b%,f%):tA%= shell_GetEventListOffset(b%,-1,_U%+72,24, tA%>=0 ia%=_U%!72+tA%:CC%=a%!16:_name$= shell_IconGetData(b%,CC%):c%=a%!20: $c%<>"" ("FN"+$c%+"(_name$)") shell_WindowMoveToPopUpPos(BA%,yB%,nF%): IC%,yA%,pF%,qF%,rF%,sF%: tF%:IC%= shell_HeapBlockFetch(40):IC%!0=BA%:IC%!4=yB%: &400CE,,IC%:pF%=IC%!16:qF%=IC%!20:yA%= shell_HeapBlockFetch(40):yA%!0=BA%: &400CB,,yA%:rF%=yA%!4:sF%=yA%!16:yA%!0=nF% &400CB,,yA%:tF%=yA%!16-yA%!8: shell_WindowMoveTo(nF%,rF%+pF%,sF%+qF%-(tF%/2)): shell_HeapBlockReturn(IC%): shell_HeapBlockReturn(yA%): shell_WindowScrollTo(BA%,eC%,fC%): ZA%:ZA%= shell_HeapBlockFetch(36):!ZA%=BA%: &400CB,,ZA%:ZA%!20=eC%:ZA%!24=fC%: shell_WindowIsOpen(BA%) &400C5,,ZA% &400C5,,ZA%: &400C6,,ZA% shell_HeapBlockReturn(ZA%): shell_WindowScrollBy(BA%,eC%,fC%): ZA%:ZA%= shell_HeapBlockFetch(36):!ZA%=BA%: &400CB,,ZA%:ZA%!20+=eC%:ZA%!24+=fC%: shell_WindowIsOpen(BA%) &400C5,,ZA% &400C5,,ZA%: &400C6,,ZA% shell_HeapBlockReturn(ZA%): shell_WindowSetBackgroundColour( t%,gE%): p%,h%,uF%,HB%,oA%:oA%= shell_WindowCountIcons(t%):uF%= shell_WindowIsOpen(t%):p%= shell_HeapBlockFetch(&64+(oA%*32)):p%!0=t%: &400CC,,p%:p%?39=gE%:_shell_open_behind%=p%!28:HB%=p%!28: &400C3,,p% &400C1,,p%+4 h%:p%!0=h%: &400CC,,p%: t%<>h% shell_UpdateWindowHandle(t%,h%):t%=h% shell_OpenWindow(h%,0,HB%) shell_HeapBlockReturn(p%): shell_WindowSetForegroundColour( t%,gE%): p%,h%,mB%,HB%:mB%= shell_WindowIsOpen(b%):p%= shell_HeapBlockFetch(&64+( shell_WindowCountIcons(t%)*32)):p%!0=t%: &400CC,,p%:p%?38=gE%:_shell_open_behind%=p%!28:HB%=p%!28: &400C3,,p%: &400C1,,p%+4 t%<>h% shell_Tracef0("WindowSetForegroundColour:Updating window handle..."): shell_UpdateWindowHandle(t%,h%):t%=h% shell_OpenWindow(h%,0,HB%) shell_HeapBlockReturn(p%): shell_InstallLib(U$): aD%:aD%= (U$): aD%=0 #aD%: 1,"Unable to install "+U$ #aD%: U$:U$= U$,&A): U$,"."):U$= U$,".")+1): ("FN_shell_"+U$+"Init") shell_TemplatesInit(l$, pG%): uC%,hE%,wF%,xA%: xF%,FA%,bD%,R$,HA%,IB%,w%: yF%,vC%:bD%= shell_HeapBlockFetch(&C):FA%=0:HA%=0:xF%= shell_FileLength(l$):sG%= shell_HeapBlockFetch(xF%):uC%=sG%: shell_TemplateFileInfo(l$,xA%,HA%,w%): shell_HeapBlockFetch(4+(20*HA%)):_U%!4=wC%:zF%= shell_HeapBlockFetch(xA%):hE%=zF%:wF%=zF%+xA%:HA%=0:vC%=4: &600D9,,l$ ;IB%: shell_MessageTwoArgs("SHELLMSG34","template",l$) :$bD%="*": &400DB,,uC%,hE%,wF%,_U%!&E8,bD%,FA% ,,hE%,,,R$,FA%: FA%<>0 wC%!vC%=uC%:$(wC%+vC%+4)=R$:wC%!(vC%+16)=-1:vC%+=20: shell_Tracef0("TemplatesInit: Template Loaded: "+R$):yF%=(uC%!84)*32:uC%+=(88+yF%):HA%+=1 FA%=0: &400DA:_U%!0=HA% shell_MessageTwoArgs("SHELLMSG35","template",l$) shell_MessageTwoArgs("SHELLMSG36",l$,"template") shell_HeapBlockReturn(bD%):pG%=0:!wC%=HA%: shell_WindowLoaded(N$): d%,iE%:d%= shell_GetWindowListOffset(N$): d%>=0 shell_GetWindowListOffset(N$): d%,HA%,zA%,g%: (N$)>&B shell_MessageOneArg("SHELLMSG02",N$) iHA%= shell_GetNrTemplatesLoaded:zA%= shell_WindowListGetAddr+4:g%=0:d%=-1: $(((zA%)+(20*g%))+4)=N$ d%=g%*20 :g%+=1: d%<>-1 g%>(HA%-1):=d% shell_GetWB(N$): d%,yA%,zA%:d%= shell_GetWindowListOffset(N$):zA%= shell_WindowListGetAddr+4: d%>=0 yA%=zA%!d% shell_MessageOneArg("SHELLMSG03",N$) :=yA% shell_GetWindowHandleList(N$): d%,jA%,zA%:d%= shell_GetWindowListOffset(N$):zA%= shell_WindowListGetAddr+4: d%>=0 jA%=!(zA%+d%+16) shell_MessageOneArg("SHELLMSG03",N$) :=jA% shell_CreateWindowStatic(N$, BA%): HC%:HC%= shell_GetWB(N$):HC%!64=_U%!16: &400C1,,HC% shell_StaticWindowListAddHandle(BA%): shell_WindowListAddHandle(BA%): shell_WindowListAddHandle(BA%): AG%,IA%,e%: zA%:AG%= shell_GetWindowListOffset(N$)+16:IA%= shell_WindowListGetAddr+4+AG%: !IA%=-1 f:!IA%= shell_HeapBlockFetch(8):e%=!IA%:e%!0=BA%:e%!4=-1 shell_Tracef0("DEBUG::Extending window handle list for window '"+N$+"'"): shell_Tracef0("DEBUG::Window handle is &"+ BA%):!IA%= shell_HeapBlockExtend(!IA%,4):zA%=!IA%:e%=0: zA%!e%<>-1:e%+=4: :zA%!(e%+0)=BA%:zA%!(e%+4)=-1 shell_GetWindowIdentifier(h%): IA%,HA%,e%,g%,m$:HA%= shell_GetNrTemplatesLoaded:IA%= shell_WindowListGetAddr+4:m$="": -1,-2:m$="iconbar" IA%!16<>-1 7jA%=IA%!16:e%=0: jA%!e%<>-1: jA%!e%=h% m$=$(IA%+4) e%+=4: :g%+=1:IA%+=20: m$<>"" g%=HA% m$="" shell_MessageOneArg("SHELLMSG38", shell_RemoveHandleFromWindowList(h%): IA%,HA%,I%,e%:HA%= shell_GetNrTemplatesLoaded:IA%= shell_WindowListGetAddr+4: IA%!16<>-1 4jA%=IA%!16:e%=0: jA%!e%<>-1: jA%!e%=h% jA%!e%=0 e%+=4: :IA%+=20: shell_UpdateWindowHandleList(VA%,MA%): IA%,HA%,I%,e%:HA%= shell_GetNrTemplatesLoaded:IA%= shell_WindowListGetAddr+4: IA%!16<>-1 7jA%=IA%!16:e%=0: jA%!e%<>-1: jA%!e%=VA% jA%!e%=MA% e%+=4: :IA%+=20: shell_GetNrTemplatesLoaded: IA%:IA%= shell_WindowListGetAddr:=!IA% shell_WindowListGetAddr:=_U%!4 shell_WindowListPrint: IA%,HA%,I%,e%:HA%= shell_GetNrTemplatesLoaded: shell_TraceOn:IA%= shell_WindowListGetAddr+4: shell_Tracef0(""): shell_Tracef0("Current Window List ("+ (HA%)+" templates)") shell_Tracef0("-----------------------------------------"): shell_Tracef0($(IA%+4)+":"): IA%!16=-1 shell_Tracef0("No windows defined for this identifier") jA%=IA%!16:e%=0: jA%!e%<>-1: shell_Tracef0(" window handle &"+ ~(jA%!e%)):e%+=4: :IA%+=20: shell_Tracef0(""): shell_TraceOff: _shell_StaticList_Init:gA%=0:=0 shell_StaticWindowListAddHandle(h%): d%,g%,c%: gA%=0 shell_Tracef0("StaticWindowListAddHandle:Creating new list"): shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+ ~h%):gA%= shell_HeapBlockFetch(8):gA%!0=h%:gA%!4=-1 shell_Tracef0("StaticWindowListAddHandle:Searching for window handle &"+ ~h%):d%= shell_SearchStatic(h%): d%=-1 shell_Tracef0("StaticWindowListAddHandle:Not found - adding window handle to list"): shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+ ~h%):d%= shell_SearchStatic(0): d%=-1 shell_Tracef0("StaticWindowListAddHandle:Extending window handle list"):g%=0: gA%!g%<>-1:g%+=4: :gA%= shell_HeapBlockExtend(gA%,4):c%=gA%+g%:c%!0=h%:c%!4=-1 shell_Tracef0("StaticWindowListAddHandle:Found unused space in list"):c%=gA%+d%:c%!0=h% shell_RemoveStaticWindowFromList(BA%): d%,g%,m%:m%= :g%=0: gA%>0 gA%!g%=BA% :gA%!g%=0 :g%+=4: gA%!g%<>-1 shell_UpdateStaticWindowHandle(VA%,MA%): shell_Tracef0("UpdateStaticWindowHandle:Correcting static window list.."):d%= shell_SearchStatic(VA%):gA%!d%=MA%: shell_SearchStatic(h%): m%,g%:m%=-1:g%=0: gA%<>0 gA%!g%<>-1: gA%!g%=h% m%=g%:=m% :g%+=4: shell_IsWindowStatic(BA%): -1,-2:w%= _U%!20:w%= shell_SearchStatic(BA%)>-1