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