home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / education / a / distgb / !DistGB / ShellLibRT (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1996-10-14  |  162KB  |  4,893 lines

  1.  >EvntShell:ShellLibRT 
  2.  Squished by Lofty's !Shrink vsn 3.01 on 14-Oct-96 
  3. shell_LibraryVersion:=2.23*&64
  4. shell_DefineConstants:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:_EVENT_NULL=0:_EVENT_REDRAWWIN=1:_EVENT_OPENWIN=2:_EVENT_CLOSEWIN=3:_EVENT_PTRLEAVING=4:_EVENT_PTRENTERING=5:_EVNT_MSECLICK=6:_EVNT_DRAGEND=7:_POPUP_TYPE_TEXT=0
  5. _POPUP_TYPE_WIMPCOLOUR=1:_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_CALCULATOR=3:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_LINEFONT=5:_POPUP_TYPE_FONTMENU=6:_POPUP_TYPE_TIMEPICK=7:_POPUP_TYPE_COLOUR24=8:_IBAR_RIGHT%=-1:_IBAR_LEFT%=-2:_BUTTON_TYPE_NEVER=0
  6. E._BUTTON_TYPE_CLICK=3:_BUTTON_TYPE_MENU=9:
  7. shell_GetLastSecureFileName:
  8. h%:h%=_U%!80:
  9. shell_GetEventMenu(IE%,d%,LC%):
  10. f%,r%,x%,KA%,AA%:
  11. d%=-1
  12. d%=-2
  13. \OKA%=
  14. shell_HeapBlockInfo(_U%!&C)-8:f%=0:x%=
  15. :r%=_U%!&C:f$="":
  16. (r%!f%=d%)
  17. r%!(f%+4)=LC%
  18. j%AA%=r%!(f%+8):
  19. AA%=-2
  20. AA%=_U%!&FC
  21. :f%+=48:
  22. (f%>=KA%
  23. x%):=AA%
  24. shell_AttachMenuDBox(dC%,o$,jA$,uA$):
  25. e%,h%,DB%:
  26. shell_WindowLoaded(o$)
  27. shell_MessageOneArg("SHELLMSG03",o$)
  28. shell_HeapBlockFetch(&C):e%!0=
  29. shell_HeapBlockFetch(
  30. o$+1):h%=e%!0:$h%=o$:e%!4=
  31. shell_HeapBlockFetch(
  32. jA$+1):h%=e%!4:$h%=jA$:e%!8=
  33. shell_HeapBlockFetch(
  34. uA$+1):h%=e%!8:$h%=uA$:
  35. &45BCE,dC%,e%:
  36. &45BCC,,
  37. shell_MessageNoArgs(J$):=
  38. shell_MessageLookup(J$,"","")
  39. shell_MessageOneArg(J$,_$):=
  40. shell_MessageLookup(J$,_$,"")
  41. shell_MessageTwoArgs(J$,_$,SA$):=
  42. shell_MessageLookup(J$,_$,SA$)
  43. shell_MessageLookup(J$,_$,SA$):
  44. n%,L%,w$,dD%,gC%:
  45. J$,8)="SHELLMSG"
  46. dD%=_U%!284:gC%=_U%!280
  47. dD%=_U%!64:gC%=_U%!68
  48. &61502,gC%,J$,dD%,256,_$,SA$
  49. ,,,L%;n%:
  50. dD%?L%=&D:w$=$(dD%)
  51. shell_WimpInit(JC%,DA$):
  52. VF%,wA%:
  53. VF%4:!VF%=0:
  54. shell_OSCheckVersion(3.1)
  55. 2JC%=310:
  56. &400C0,JC%,&4B534154,DA$,VF%
  57. JC%,wA%
  58. JC%=&C8:
  59. &400C0,JC%,&4B534154,DA$
  60. JC%,wA%
  61. _U%!&64
  62. "WimpExt_Initialise",&E,wA%
  63. :_U%!&94=wA%:=wA%
  64. shell_WimpInit_I(JC%,DA$):
  65. wA%:wA%=
  66. shell_WimpInit(JC%,DA$):
  67. &81682,wA%:=wA%
  68. shell_WimpCloseDown_I(wA%):
  69. shell_ExReg_FontLib_Loaded
  70. shell_Fonts_LoseFonts
  71. shell_ExReg_FontMenu_Loaded
  72. shell_FontMenu_Deregister
  73. _U%!&64
  74. "WimpExt_Initialise",&E,wA%
  75. &600DD,wA%,&4B534154:
  76. &A1683,wA%:
  77. _U%!&64
  78. "XImpulse_CloseDown",_U%!&94
  79. WimpCloseDown(wA%):
  80. shell_ExReg_FontMenu_Loaded
  81. shell_LoseFonts
  82. shell_ExReg_FontMenu_Loaded
  83. shell_FontMenu_Deregister
  84. _U%!&64
  85. "WimpExt_Initialise",&E,wA%
  86. &600DD,wA%,&4B534154:
  87. _U%!&64
  88. "XImpulse_CloseDown",_U%!&94
  89. ("Unset "+_shell_AppName$+"$BasicFile"):
  90. shell_FindFont(IB$,UJ%):
  91. mA%,SF%:SF%=_U%!&E8:
  92. &40081,,IB$,UJ%*16,d*16,0,0
  93. mA%:SF%?mA%+=1:
  94. SF%?mA%>=&FF
  95. shell_OK(
  96. shell_MessageNoArgs("SHELLMSG18"))
  97. shell_Init:
  98. LB%,s%,h%,q$:
  99. D$,G$,LE%:
  100. shell_InitModules:_poll_called%=0:
  101. shell_DefineConstants:_SHELL_SENDDATALOAD_MY_REF%=0:_SHELL_SENDDATALOAD_FILE$="":
  102. _U%360,_shell_blk%260:_Q%=
  103. shell_HeapBlockFetch(&BB8):LB%=
  104. shell_HeapBlockFetch(48):LB%!0=0
  105. LB%!4=0:LB%!8=0:LB%!&C=0:LB%!16=0:LB%!20=0:LB%!24=0:LB%!28=0:LB%!32=0:LB%!36=0:LB%!40=0:LB%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=LB%:_U%!16=1:_U%!20=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0:_U%!68=0:_U%!72=0
  106. _U%!76=
  107. shell_HeapBlockFetch(256):_U%!80=0:_U%!84=-1:_U%!88=0:_U%!92=0:_U%!96=0:_U%!&64=0:_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0:_U%!&9C=0:_U%!&B0=0:_U%!&B4=0
  108. _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=
  109. shell_HeapBlockFetch(256):_U%!&EC=
  110. shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&FC=0:_U%!256=0:_U%!260=1
  111. _U%!264=0:_U%!268=0:_U%!272=0:_U%!276=0:_U%!280=0:_U%!284=0:_U%!304=0:_U%!308=0:_U%!316=0:_U%!324=0:_U%!336=0:_U%!340=0:_U%!344=0:
  112. shell_MemFill(_U%!&E8,256,0):
  113. shell_MemFill(_U%!&EC,256,0):D$=
  114. shell_OSVarGetVal("Obey$Dir",1):G$=
  115. shell_Leaf(D$),2)
  116. _U%!&BC=
  117. shell_HeapBlockFetch((
  118. D$)+1):_U%!&C4=
  119. shell_HeapBlockFetch((
  120. G$)+1):h%=_U%!&BC:$h%=D$:h%=_U%!&C4:$h%=G$:h%=
  121. shell_OSModuleCheckVersion("WimpExtension",1.98):
  122. _U%!&64=_U%!&64
  123. RO3_Present:
  124. _U%!&64=_U%!&64
  125. 1<<&A
  126. shell_InteractiveHelpOn:LE%=&64:
  127. shell_PollSetInterval(LE%):
  128. shell_PollSetPrevInterval(LE%):
  129. _POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=LE%:q$=
  130. shell_OSReadCommandArg(1):
  131. q$<>""
  132. L_U%!&64=_U%!&64
  133. 1<<5:h%=
  134. shell_HeapBlockFetch(
  135. q$+1):$(h%)=q$:_U%!324=h%
  136. shell_InitModules:
  137. k%:k%=
  138. shell_Errors_Init:k%=
  139. shell_Bumpers_Init:k%=
  140. shell_CaretMove_Init:k%=
  141. shell_Caret_Init:k%=
  142. shell_DataLoad_Init:k%=
  143. shell_DataSave_Init:k%=
  144. shell_Debug_Init:k%=
  145. _shell_Evnts_Init:k%=
  146. shell_ExReg_Init:k%=
  147. _shell_Files_Init
  148. _shell_Iconbar_Init:k%=
  149. shell_Icons_Init:k%=
  150. _shell_IntHelp_Init:k%=
  151. _shell_Memory_Init:k%=
  152. _shell_Menus_Init:k%=
  153. _shell_MenuList_Init:k%=
  154. _shell_Messages_Init:k%=
  155. _shell_OS_Init:k%=
  156. _shell_Pointer_Init:k%=
  157. _shell_Poll_Init:k%=
  158. _shell_PopUps_Init
  159. _shell_ProgEvnts_Init:k%=
  160. _shell_Sliders_Init:k%=
  161. _shell_Sprites_Init:k%=
  162. _shell_Strings_Init:k%=
  163. _shell_StaticList_Init:k%=
  164. _shell_WindowList_Init:k%=
  165. _shell_Windows_Init:
  166. shell_GetCmdLineArgs:
  167. _U%!324<>0
  168. q$=$(_U%!324)
  169. shell_GetAppDir:
  170. h%:h%=_U%!&BC:=$h%
  171. shell_GetAppDataDir:
  172. h%:h%=_U%!&C0:=$h%
  173. shell_GetAppName:
  174. h%:h%=_U%!&C4:=$h%
  175. shell_ResourcesInit:
  176. IA$,h%,G$,D$,iE%:
  177. rC%,eD%,PD%:G$=
  178. shell_GetAppName:D$=
  179. shell_GetAppDir:
  180. shell_OSVarExists(G$+"Res$Path")
  181. _U%!&64=_U%!&64
  182. shell_OSVarExists(G$+"Data$Dir")
  183. *fIA$=
  184. shell_OSVarGetVal(G$+"Data$Dir",1):_U%!&C0=
  185. shell_HeapBlockFetch((
  186. IA$)+1):h%=_U%!&C0:$h%=IA$
  187. _U%!&C0=
  188. shell_HeapBlockFetch((
  189. D$)+1):h%=_U%!&C0:$h%=D$
  190. :PD%=
  191. _U%!&64
  192. shell_FileExists(G$+"Res:Messages")
  193. shell_MessagesInit(G$+"Res:Messages",_U%!68,_U%!64)
  194. shell_FileExists(G$+"Res:ShellMsgs")
  195. shell_MessagesInit(G$+"Res:ShellMsgs",_U%!280,_U%!284)
  196. shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
  197. &20035,-1,4
  198. ,,eD%:
  199. &20035,-1,5
  200. ,,rC%:
  201. rC%=1
  202. shell_FileExists(G$+"Res:Sprites22")
  203. A4_U%!16=
  204. shell_SpriteAreaLoad(G$+"Res:Sprites22")
  205. shell_FileExists(G$+"Res:Sprites")
  206. E2_U%!16=
  207. shell_SpriteAreaLoad(G$+"Res:Sprites")
  208. _U%!16=1
  209. :iE%=
  210. shell_3DEnabled:
  211. shell_FileExists(G$+"Res:Templates3")
  212. shell_TemplatesInit(G$+"Res:Templates3",k%):PD%=
  213. shell_FileExists(G$+"Res:Templates")
  214. shell_TemplatesInit(G$+"Res:Templates",k%):PD%=
  215. shell_FileExists(D$+".Messages")
  216. shell_MessagesInit(D$+".Messages",_U%!68,_U%!64)
  217. shell_FileExists(D$+".ShellMsgs")
  218. shell_MessagesInit(D$+".ShellMsgs",_U%!280,_U%!284)
  219. shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
  220. &20035,-1,4
  221. ,,eD%:
  222. &20035,-1,5
  223. ,,rC%:
  224. rC%=1
  225. shell_FileExists(D$+".Sprites22")
  226. e1_U%!16=
  227. shell_SpriteAreaLoad(D$+".Sprites22")
  228. shell_FileExists(D$+".Sprites")
  229. h/_U%!16=
  230. shell_SpriteAreaLoad(D$+".Sprites")
  231. _U%!16=1
  232. :iE%=
  233. shell_3DEnabled:
  234. shell_FileExists(D$+".Templates3")
  235. shell_TemplatesInit(D$+".Templates3",k%):PD%=
  236. shell_FileExists(D$+".Templates")
  237. shell_TemplatesInit(D$+".Templates",k%):PD%=
  238. 99,"Unable to find templates file.."
  239. &45BC0:
  240. shell_HeapBlockReturn(_Q%):_Q%=
  241. shell_HeapBlockFetch(&400):
  242. shell_FileExists(D$+".EvntData")
  243. shell_EvntLoad_AllEvnts(D$+".EvntData")
  244. shell_ExReg_ShareBan_Loaded
  245. shell_ShareBan_ShowBanner
  246. DataLoad_LoadIsPending=
  247. Handle_PendingFileLoad:
  248. DataLoad_ClearLoadIsPendingFlag
  249. shell_MessageExpand(s$):
  250. Q$,w$,MB%:Q$="":
  251. s$,"\")>0:MB%=
  252. s$,"\"):Q$+=
  253. s$,MB%-1):w$=
  254. s$,MB%+1,1):s$=
  255. s$,MB%+2):
  256. "A":Q$+="Click ADJUST to"
  257. "a":Q$+="ADJUST"
  258. "D":Q$+="Drag with SELECT to"
  259. "d":Q$+="Drag with ADJUST to"
  260. "G":Q$+="This option is greyed out because"
  261. "R":Q$+="Move the pointer right"
  262. "S":Q$+="Click SELECT to"
  263. "s":Q$+="SELECT"
  264. "T":Q$+="This is the"
  265. "W":Q$+="This window is"
  266. "w":Q$+="window"
  267. Q$+="\"+w$
  268. :=Q$+s$
  269. shell_MessageWindow(K$,BJ%,dA$,EA$):
  270. BG%,xC%:xC%=
  271. shell_HeapBlockFetch(260):!xC%=_m_ERRNR_NONFATAL%:$(xC%+4)=K$+
  272. dA$=""
  273. shell_GetAppName
  274. EA$=""
  275. EA$="Message from "+dA$
  276. &400DF,xC%,19,EA$
  277. &400DF,xC%,17,EA$
  278. shell_HeapBlockReturn(xC%):=BG%
  279. shell_CreateWindow2(O,n%,bI%,vI%,SJ%,OB%,uE%,rB%,tB%,RF%):
  280. Q%:Q%=
  281. shell_HeapBlockFetch(&BB8):Q%!0=uE%:Q%!4=rB%:Q%!8=tB%:Q%!&C=RF%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=n%:Q%?32=7:Q%?33=2:Q%?34=bI%:Q%?35=vI%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=OB%
  282. Q%!48=SJ%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=O:Q%!76=-1:Q%!80=
  283. $O:Q%!84=0:
  284. &400C1,,Q%
  285. shell_HeapBlockReturn(Q%):=o%
  286. shell_ClaimKeypress:
  287. _U%!20<>0
  288. &400D4,,-1:k%=
  289. shell_DeleteWindow(_U%!20):_U%!20=0
  290. oktodeletew(o%):=-1
  291. oktoclosew(o%):=-1
  292. cliprect(A,
  293. ZI%):
  294. eA%,lA%:
  295. lwaorigin(A,eA%,lA%):uA%=A!24-eA%:_A%=A!28-lA%:zI%=A!32-eA%:ZI%=A!36-lA%:
  296. shell_DoBackgroundTask:
  297. shell_HandleAttachedMenu(_Q%,d%,t%):
  298. t%<>-1
  299. d%>-1
  300. :1AA%=
  301. shell_GetEventMenu(_Q%!8,d%,t%):
  302. AA%<>0
  303. shell_HandleMenuOpen(_Q%,AA%,d%,t%,
  304. Handle_PendingFileLoad:
  305. a%,c%,iA%,bB%,LF%:LF%=
  306. DataLoad_GetAnchor:a%=
  307. Evnts_GetEvntListOffset("iconbar",
  308. DataLoad_GetIconBarIconNr,LF%,
  309. DataLoad_GetRecSize,
  310. a%>-1
  311. DataLoad_SetFileName(
  312. shell_GetCmdLineArgs):
  313. DataLoad_GetFileName<>""
  314. PZc%=!LF%:c%+=a%:iA%=c%!16:bB%=iA%
  315. (1<<31):
  316. shell_FileType(
  317. DataLoad_GetFileName)=bB%
  318. shell_MessageSendDataLoad(bB%,
  319. DataLoad_GetFileName)
  320. shell_Action(dI%):
  321. f$,AA%,y$,YB$,NI%,WB%,cB%,aF%:
  322. d%,t%,k%,_temp28%,_temp32%,_temp24%,_temp%,_I%:
  323. kJ%,a%,lG%:
  324. _EVENT_NULL:
  325. _closedown%=
  326. (lG%-_POLL_EARLIEST_TIME%)>0:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%:
  327. shell_ExReg_OLELib_Loaded=
  328. shell_DoOLEHandling
  329. shell_DoBackgroundTask:
  330. shell_SliderDragInProgress
  331. shell_Slider
  332. shell_EvntHandle_IconWatch
  333. shell_Evnts_WritableDragInProgress
  334. shell_Evnts_MonitorDragPtrPos
  335. _EVENT_REDRAWWIN:
  336. shell_ExReg_ColourPick_Loaded
  337. _Q%!0<>_m_ColourPick_AcornDBoxHandle%
  338. shell_RedrawWindow(_Q%!0)
  339. shell_RedrawWindow(_Q%!0)
  340. _EVENT_OPENWIN:
  341. shell_OpenWindow(_Q%!0,
  342. _EVENT_CLOSEWIN:
  343. shell_EvntHandle_WindowClose(_Q%!0)
  344. _EVENT_PTRLEAVING:
  345. shell_EvntHandle_PointerLeavingWindow(!_Q%)
  346. _EVENT_PTRENTERING:
  347. shell_EvntHandle_PointerEnteringWindow(!_Q%)
  348. _EVNT_MSECLICK:WB%=_Q%!0:cB%=_Q%!4:_EVNTS_LAST_MOUSEXPOS%=WB%:_EVNTS_LAST_MOUSEYPOS%=cB%:_U%!272=_Q%!0:_U%!276=_Q%!4:
  349. _Q%!8>4
  350. _Q%!8<256
  351. shell_EvntHandle_ClickDrag(_Q%!&C,_Q%!16,_Q%!8,_EVNTS_LAST_MOUSEBUTTON%)
  352. :_EVNTS_LAST_MOUSEBUTTON%=_Q%!8:_EVNTS_LAST_WINDOWCLICKED%=_Q%!&C:_EVNTS_LAST_ICONCLICKED%=_Q%!16:
  353. _Q%!8
  354. 4,&400:
  355. shell_EvntHandle_ClickSelect(
  356. Evnts_GetLastWindowClicked,
  357. Evnts_GetLastIconClicked)
  358. 2,512:
  359. shell_EvntHandle_ClickMenu(
  360. Evnts_GetLastWindowClicked,
  361. Evnts_GetLastIconClicked)
  362. 1,256:
  363. shell_EvntHandle_ClickAdjust(
  364. Evnts_GetLastWindowClicked,
  365. Evnts_GetLastIconClicked)
  366. 7:_U%!&80=0:
  367. shell_SliderDragInProgress=
  368. shell_EvntHandle_UserDragEnd:
  369. shell_EvntHandle_DataSaveEndDrag
  370. shell_SliderDragEnd
  371. shell_Evnts_UserDragInProgress=
  372. shell_Evnts_UserDragEnd(_Q%!0,_Q%!4,_Q%!8,_Q%!&C)
  373. _Q%!24
  374. &D,394,398,399,410,430,431:aF%=
  375. shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
  376. shell_HotKeyProcess(_Q%!24)
  377. &400DC,_Q%!24
  378. shell_EvntHandle_MenuSelect(_Q%)
  379. 17,18:
  380. shell_Receive(_Q%)
  381. shell_UserMessageAcknowledge(_Q%)
  382. shell_HandleMenuOpen(_Q%,AA%,d%,t%,dJ%):
  383. LA%,_%:
  384. shell_OpenMenu(_Q%!0,_Q%!4,AA%)
  385. shell_HeapBlockFetch(50):_%=
  386. shell_HeapBlockFetch(36):LA%!0=d%:LA%!4=t%:
  387. &400CE,,LA%:_%!0=d%:
  388. &400CB,,_%:
  389. shell_OpenMenu(_%!4+LA%!16+64,_Q%!4,AA%):
  390. shell_MenuPointerMovesOnPopup=
  391. _%!4+LA%!16+64,_Q%!4
  392. shell_HeapBlockReturn(LA%):
  393. shell_HeapBlockReturn(_%)
  394. shell_ActionAdjustButton:
  395. n%,f$,k%,aD%,m%:aD%=
  396. shell_HeapBlockFetch(&C+(
  397. shell_WindowCountIcons(
  398. Evnts_GetLastWindowClicked)*32)):
  399. Evnts_GetLastWindowClicked>0
  400. &400D6,
  401. Evnts_GetLastWindowClicked,aD%,&F000,&B000:m%=0:
  402. aD%!m%<>-1:
  403. aD%!m%=
  404. Evnts_GetLastIconClicked
  405. shell_IconSet(
  406. Evnts_GetLastWindowClicked,
  407. Evnts_GetLastIconClicked,1)
  408. m%+=4:
  409. Evnts_GetLastIconClicked=0
  410. shell_HandleAttachedDataSave(_Q%,
  411. Evnts_GetLastWindowClicked,
  412. Evnts_GetLastIconClicked)
  413. shell_EvntHandle_ClickAdjust(
  414. Evnts_GetLastWindowClicked,
  415. Evnts_GetLastIconClicked):
  416. shell_HeapBlockReturn(aD%):
  417. shiftmenuclick(d%,t%):=
  418. shell_RedrawWindow(o%):
  419. SE%,f$,eA%,lA%,e%:
  420. shell_FatalError
  421. o%<>-1
  422. shell_HeapBlockFetch(&64):e%!0=o%:
  423. &400C8,,e%
  424. SE%:eA%=e%!4-e%!20:lA%=e%!16-e%!24:
  425. &81681,,e%:
  426. shell_EvntHandle_Redraw(o%,e%,eA%,lA%):
  427. &400CA,,e%
  428. shell_HeapBlockReturn(e%)
  429. shell_Receive(_Q%):
  430. h%,k%,gH%:
  431. _Q%!16
  432. _MESSAGE_QUIT:
  433. shell_Exit:
  434. _MESSAGE_DATASAVE:
  435. shell_DataSave(_Q%)
  436. _MESSAGE_DATASAVEACK:
  437. shell_DataSaveAck(_Q%)
  438. _MESSAGE_DATALOAD:
  439. shell_EvntHandle_DataLoad(_Q%,
  440. _MESSAGE_DATALOADACK:
  441. shell_DataLoadAck(_Q%)
  442. shell_EvntHandle_DataLoad(_Q%,
  443. _MESSAGE_RAMFETCH:
  444. shell_RAMFetch(_Q%)
  445. _MESSAGE_RAMTRANSMIT:
  446. shell_RAMTransmit(_Q%)
  447. _MESSAGE_PREQUIT:
  448. shell_ProgEvnts_PreQuit(_Q%)
  449. _MESSAGE_PALETTECHANGE:
  450. shell_ProgEvnts_PaletteChanged
  451. _MESSAGE_SAVEDESKTOP:
  452. shell_ProgEvnts_SaveDesktop(_Q%!20)
  453. _MESSAGE_SHUTDOWN:
  454. shell_ProgEvnts_Shutdown
  455. _MESSAGE_HELP:
  456. shell_InteractiveHelp(_Q%)
  457. _MESSAGE_MENUWARNING:
  458. shell_MenuWarning(_Q%)
  459. _MESSAGE_MODECHANGE:
  460. shell_ProgEvnts_ModeChanged
  461. _MESSAGE_COLOURPICKERCOLOURCHOICE:gH%=(_Q%!24
  462. shell_ColourPickerSelection(_Q%!28,gH%)
  463. _MESSAGE_DESKFONT_CHANGED:
  464. shell_ProgEvnts_DeskFontChanged(_Q%!20):
  465. shell_ExReg_Fonts_Loaded
  466. shell_Fonts_DeskTopFont_Selected(_Q%!20)
  467. _MESSAGE_TASKINIT:
  468. shell_ProgEvnts_TaskInitialise(_Q%!4,
  469. shell_GetString(_Q%+28)):
  470. _U%!&D0=-1
  471. shell_GetString(_Q%+28)="StrongHelp"
  472. _U%!&D0=_Q%!4:
  473. shell_StrongHlpMsg("Help_Install -DieWithTask "+
  474. shell_GetAppDir+"."+
  475. shell_GetAppName):h%=_U%!&D8:
  476. $h%<>""
  477. shell_HelpWord($h%):
  478. shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
  479. _MESSAGE_TASKCLOSEDOWN:
  480. shell_ProgEvnts_TaskCloseDown(_Q%!4):
  481. _Q%!4=_U%!&D0
  482. _U%!&D0=-1
  483. _MESSAGE_TASKNAMEIS:
  484. shell_GetString(_Q%+28)="StrongHelp"
  485. _U%!&D0=_Q%!20
  486. shell_ScanForHelp
  487. &80140:
  488. shell_HandlePrintFile(_Q%)
  489. &80143:
  490. shell_HandlePrintError(_Q%)
  491. &80145:
  492. shell_HandlePrintTypeOdd(_Q%)
  493. &80147:
  494. shell_HandleSetPrinter(_Q%)
  495. &47700,&47702:
  496. shell_Tracef0("PROCshell_Receive: resetting acorn colour dbox handle to -1.."):_m_ColourPick_AcornDBoxHandle%=-1
  497. shell_HandleUnknownMessage2(_Q%)
  498. shell_HandleUnknownMessage2(_Q%):
  499. _Q%!16
  500. &43B00:U$=$(_Q%+20):
  501. U$,30)="EvntShellLib:ShellDBug started"
  502. _U%!&64
  503. r_U%!&64=(_U%!&64
  504. 1<<4):
  505. shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
  506. shell_GetAppName)
  507. U$,25)="EvntShellLib:TraceInitAck"
  508. _U%!&64=(_U%!&64
  509. 1<<4)
  510. U$,20)="EvntShellLib:TraceOn"
  511. shell_TraceOn
  512. U$,21)="EvntShellLib:TraceOff"
  513. shell_TraceOff
  514. U$,28)="EvntShellLib:ListClickSelect"
  515. shell_ListClickSelect
  516. U$,26)="EvntShellLib:ListClickMenu"
  517. shell_ListClickMenu
  518. U$,28)="EvntShellLib:ListClickAdjust"
  519. shell_ListClickAdjust
  520. U$,25)="EvntShellLib:ListHelpTags"
  521. shell_ListHelpTags
  522. U$,24)="EvntShellLib:ListBumpers"
  523. shell_ListBumpers
  524. U$,26)="EvntShellLib:ListPointerIn"
  525. shell_ListPointerIn
  526. U$,27)="EvntShellLib:ListPointerOut"
  527. shell_ListPointerOut
  528. U$,25)="EvntShellLib:ListDataLoad"
  529. shell_ListDataLoad
  530. U$,25)="EvntShellLib:ListDataSave"
  531. shell_ListDataSave
  532. shell_HandleUnknownMessage(_Q%):
  533. shell_HandleUnknownMessage(_Q%):
  534. shell_RAMFetch(_Q%):
  535. CK%,MG%,QF%:QF%=
  536. _U%!&90>&8000
  537. 14_Q%!&C=_Q%!8:_Q%!16=7:MG%=_U%!&88:
  538. _U%!&8C=&FF9
  539. _U%!&90+=4
  540. (MG%-_U%!&80)<_Q%!24
  541. _Q%!24=MG%-_U%!&80:QF%=
  542. &400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24:
  543. &400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24:
  544. _U%!&80=0
  545. shell_RAMTransmit(_Q%):
  546. a%,e%,pA$,h%:
  547. _Q%!&C=_U%!&70
  548. S$_U%!&80+=_Q%!24:
  549. _Q%!24<_U%!&84
  550. shell_GetEvntListOffset(
  551. shell_GetWindowIdentifier(
  552. Evnts_GetLastWindowClicked),
  553. Evnts_GetLastIconClicked,_U%+96,16,
  554. ):e%=_U%!96+a%:h%=_U%!&9C:pA$=
  555. shell_GetString(h%+44):
  556. shell_UserFNLoadFile(h%!40,_U%!&98,e%!8,pA$,_U%!&84,e%)
  557. _U%!&80>_U%!&84
  558. p;_U%!&98=
  559. shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84)
  560. :_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
  561. &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
  562. shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
  563. shell_OK(
  564. shell_MessageNoArgs("SHELLMSG15"))
  565. shell_LoadFile(DK%):
  566. LA$,eF%,CE%,yB%:LA$=
  567. shell_GetString(_Q%+44):eF%=
  568. shell_FileLength(LA$):
  569. eF%<0
  570. shell_OK(
  571. shell_MessageNoArgs("SHELLMSG16"))
  572. QyB%=
  573. shell_HeapBlockFetch(eF%):
  574. &20008,16,LA$,yB%,0
  575. ;CE%:
  576. shell_VFlag(CE%)
  577. shell_HeapBlockReturn(yB%)
  578. :=yB%
  579. shell_VFlag(CE%):=((CE%
  580. 1)=1)
  581. shell_Exit:
  582. gC%:gC%=_U%!68:
  583. &61504,gC%:
  584. &2001E,7,,gC%:
  585. shell_TraceExit:
  586. &606C2:
  587. &600D0,,-1:
  588. shell_WimpCloseDown_I(_U%!&94):
  589. shell_DataSave(_Q%):
  590. h%,a%,e%,s%:
  591. _Q%!4<>_U%!&94
  592. shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
  593. a%>-1
  594. 2e%=_U%!96+a%:
  595. shell_CheckType(_Q%!40,e%!8,
  596. shell_TopBitLoadInProgress
  597. n_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)=
  598. shell_GetAppDir+".ScrapFile"+
  599. &400E7,18,_Q%,_Q%!4
  600. shell_HeapBlockReturn(_U%!&9C):_U%!&9C=
  601. shell_HeapBlockFetch((_Q%!0)+8):h%=_U%!&9C:
  602. _Q%!0
  603. 4:h%!s%=_Q%!s%:
  604. s%:_EVNTS_LAST_WINDOWCLICKED%=_Q%!20:_EVNTS_LAST_ICONCLICKED%=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
  605. shell_HeapBlockFetch(_Q%!36)
  606. l_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
  607. &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
  608. shell_TopBitLoadInProgress:
  609. _U%!&64
  610. shell_DataSaveCheckName(d%,t%):
  611. a%,e%,KA%:e%=_U%!72:a%=0:
  612. e%<>0
  613. L2KA%=
  614. shell_HeapBlockInfo(e%)-8:
  615. !(e%+a%)=d%
  616. Ree%+=a%:b$=
  617. shell_IconGetData(!e%,e%!16):
  618. b$,".")=0
  619. shell_OK(
  620. shell_MessageNoArgs("SHELLMSG01"))
  621. a%=KA%
  622. :a%+=24:
  623. a%>=KA%
  624. shell_DataLoadAck(_Q%):
  625. shell_UserMessageAcknowledge(_Q%):
  626. _Q%!16
  627. shell_AckDataLoad(_Q%)
  628. shell_AckRAMFetch(_Q%)
  629. _Q%!8=_SHELL_SENDDATALOAD_MY_REF%
  630. RO3_Present
  631. ("Filer_Run "+_SHELL_SENDDATALOAD_FILE$)
  632. ("Run "+_SHELL_SENDDATALOAD_FILE$)
  633. shell_AckRAMFetch(_Q%):
  634. BH%,h%:h%=_U%!&9C:
  635. _Q%!&C<>_U%!&70
  636. _U%!&80=0
  637. &20023,"Wimp$Scrap",,-1,0,3
  638. ,,BH%:
  639. BH%<>0
  640. $(h%+44)="<Wimp$Scrap>"+
  641. (0):h%!0=(49+
  642. shell_GetString(h%+44)))
  643. 3:h%!&C=h%!8:h%!16=2:h%!36=-1:
  644. &400E7,18,h%,h%!4:_U%!&6C=h%!8
  645. shell_OK(
  646. shell_MessageNoArgs("SHELLMSG14"))
  647. shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
  648. shell_OK("SHELLMSG06")
  649. shell_FindMenuWarnEvent(NA%,
  650. i%,sA%,h%,a%,x%,KA%,vA%,m%:
  651. fC%:fC%=0:sA%=_U%!&DC:a%=0:x%=
  652. :L$="":fC%=0:
  653. shell_HeapBlockExists(sA%)
  654. :m%+=4:
  655. sA%!m%=-1:KA%=m%:m%=0:
  656. :h%=!(sA%+a%+0):
  657. h%<>-1
  658. h%=NA%
  659. :vA%=sA%!(a%+4):L$=$vA%:fC%=sA%!(a%+8):vA%=sA%!(a%+&C):P$=$vA%
  660. :a%+=16
  661. a%=KA%
  662. a%>=KA%
  663. L$="":P$=""
  664. fC%=0
  665. shell_EventListMenuWarn(dC%,iG%,L$,P$):
  666. h%,vA%,m%,sA%:
  667. _U%!&DC=0
  668. _U%!&DC=
  669. shell_HeapBlockFetch(32):h%=_U%!&DC:h%!0=dC%:h%!4=
  670. shell_HeapBlockFetch(
  671. L$+1):$(h%!4)=L$:h%!8=iG%:h%!&C=
  672. shell_HeapBlockFetch(
  673. P$+1):$(h%!&C)=P$:h%!16=-1:h%!20=-1:h%!24=-1:h%!28=-1
  674. shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=sA%:m%=0:
  675. :m%+=16:
  676. sA%!m%=-1:h%=_U%!&DC:h%!m%=dC%:h%!(m%+4)=
  677. shell_HeapBlockFetch(
  678. L$+1):vA%=h%!(m%+4):$(vA%)=L$:h%!(m%+8)=iG%:h%!(m%+&C)=
  679. shell_HeapBlockFetch(
  680. P$+1):vA%=h%!(m%+&C):$(vA%)=P$
  681. ;h%!(m%+16)=-1:h%!(m%+20)=-1:h%!(m%+24)=-1:h%!(m%+28)=-1
  682. lwaorigin(A,
  683. RA%):QA%=A!0-A!16:RA%=A!&C-A!20:
  684. shell_WritableIconHandler(d%,t%,oA%):
  685. gA%,EC%,FC%,m%:
  686. UE%,ZE%,GA%,rE%:rE%=
  687. :gA%=
  688. shell_WindowCountIcons(d%):GA%=
  689. shell_HeapBlockFetch((gA%+1)*4):
  690. &400D3,,GA%:
  691. !GA%=-1
  692. shell_HeapBlockReturn(GA%):rE%=
  693. &400D6,d%,GA%,&40E000,&E000:EC%=!GA%:m%=0:
  694. GA%!m%=t%
  695.  !UE%=GA%!(m%-4):ZE%=GA%!(m%+4)
  696. :m%+=4:
  697. GA%!m%=-1:FC%=GA%!(m%-4):
  698. shell_FakeMouseClick(d%,0,4)
  699. 398,394:
  700. t%=FC%
  701. &400D2,d%,EC%,-1,-1,-1,
  702. shell_IconGetData(d%,EC%)):
  703. shell_IconEnsureVisible(d%,EC%)
  704. &400D2,d%,ZE%,-1,-1,-1,
  705. shell_IconGetData(d%,ZE%)):
  706. shell_IconEnsureVisible(d%,ZE%)
  707. 399,410:
  708. t%=EC%
  709. &400D2,d%,FC%,-1,-1,-1,
  710. shell_IconGetData(d%,FC%)):
  711. shell_IconEnsureVisible(d%,FC%)
  712. &400D2,d%,UE%,-1,-1,-1,
  713. shell_IconGetData(d%,UE%)):
  714. shell_IconEnsureVisible(d%,UE%)
  715. &400D2,d%,EC%,-1,-1,-1,
  716. shell_IconGetData(d%,EC%)):
  717. shell_IconEnsureVisible(d%,EC%)
  718. &400D2,d%,FC%,-1,-1,-1,
  719. shell_IconGetData(d%,FC%)):
  720. shell_IconEnsureVisible(d%,FC%)
  721. shell_HeapBlockReturn(GA%)
  722. shell_FakeMouseClick(d%,t%,IE%):
  723. 6,&F,1:_Q%!8=IE%:_Q%!&C=d%:_Q%!16=t%:
  724. shell_Action(6):
  725. shell_GetMinXY(n%,K$,p$):
  726. eA%,lA%,uA%,_A%,WB%,cB%:dB%=0:OB%=0:
  727. K$<>""
  728. &40084,n%>>24
  729. ,,lA%,,_A%:
  730. &40097,,
  731. (n%>>24)+K$
  732. ,eA%,,uA%:
  733. &40088,,eA%
  734. ,eA%:
  735. &40088,,uA%
  736. ,uA%:dB%=uA%-eA%:OB%=_A%-lA%
  737. dB%=6*WB%+16*
  738. K$:OB%=32
  739. 4OB%+=2*cB%
  740. p$<>""
  741. &2002E,296,
  742. shell_UserSpritesBase,p$
  743. ,,,WB%,cB%,,ZH%;P%:
  744. &20035,ZH%,4
  745. ,,aJ%:WB%=WB%<<aJ%:
  746. &20035,ZH%,5
  747. ,,WJ%:cB%=cB%<<WJ%:
  748. &800WB%=WB%/2:cB%=cB%/2
  749. 539)=19WB%=dB%+WB%
  750. WB%>dB%dB%=WB%
  751. cB%>OB%OB%=cB%
  752. shell_IconGetState(lC%,pC%):!_Q%=lC%:_Q%!4=pC%:
  753. &400CE,,_Q%:
  754. print_text(L,K,K$):
  755. in(L,K-32,L+16*
  756. (K$),K)
  757. in(A%,B%,C%,D%):
  758. newvals:Y=_Q%!28:b=_Q%!32:Q=_Q%!36:W=_Q%!40:c=_Q%!4:T=_Q%!8:V=_Q%!&C:X=_Q%!16:P=_Q%!20:N=_Q%!24:S=V-c:R=X-T:e=P:f=P+S:g=N:h=N-R:
  759. max(pA%,rB%):
  760. pA%<rB%
  761. shell_Leaf(I$):
  762. I$,"."):I$=
  763. I$,".")+1):
  764. shell_Branch(UA$):
  765. MA%,PA$,h%:
  766. UA$,".")=0
  767. PA$=""
  768. h%=0:
  769. :MA%=h%+1:h%=
  770. UA$,".",MA%):
  771. h%=0:PA$=
  772. UA$,MA%-2)
  773. :=PA$
  774. gname(G):ZA$="":
  775. ?G<>0
  776. ?G<>&D:ZA$=ZA$+
  777. ?G:G+=1:
  778. :=ZA$
  779. shell_ScreenToWindowCoords(zH%,
  780. WG%,YH%,pJ%,GI%,iH%,nC%:nC%=
  781. shell_HeapBlockFetch(&64+(
  782. shell_WindowCountIcons(zH%)*32)):WG%=nC%:!WG%=zH%:
  783. &400CC,,WG%:YH%=nC%!4:cI%=nC%!16:GI%=nC%!20:iH%=nC%!24:X%=X%+(GI%-YH%):Y%=Y%+(iH%-cI%)
  784. shell_HeapBlockReturn(nC%):
  785. shell_WimpSlotReadEnd:
  786. &400EC,-1,-1
  787. ND%:=ND%
  788. shell_WimpSlotClaimMemory(ND%,XB%):
  789. &400EC,ND%+XB%,-1
  790. GF%<ND%+XB%
  791. shell_WimpSlotReleaseMemory:
  792. &400EC,ND%,-1:
  793. shell_MouseLimit(TA%):
  794. shell_HeapBlockFetch(36):A!0=TA%:
  795. &400CB,,A:
  796. shell_MouseSetRectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
  797. shell_HeapBlockReturn(A):
  798. shell_MouseRemoveLimits:
  799. ("Pointer"):
  800. shell_MouseSetRectangle(QA%,RA%,ME%,w%):
  801. QA%,RA%,ME%,w%:tJ%=QA%:_J%=RA%:nJ%=ME%:jJ%=w%:
  802. InitialiseSpriteArea(S%,yI%):!S%=yI%:S%!8=16:
  803. 46,9+256,S%:
  804. shell_ListEvents(d%,LC%):
  805. AA%,y$:
  806. d%=-1
  807. d%=-2
  808. .-AA%=
  809. shell_GetEventMenu(2,d%,LC%):
  810. AA%=0
  811. y$="None"
  812. shell_AttachHotKey(xA$,tC%,wC%,bD%,o$,d%,m$,n$):
  813. sA%,a%,h%,vA%,oA%,dF%:dF%=
  814. _U%!60=0
  815. ?3_U%!60=
  816. shell_HeapBlockFetch(24):a%=0:_U%!&B4=1
  817. a%=_U%!&B4*24:_U%!60=
  818. shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
  819. :sA%=_U%!60:
  820. "F1":oA%=385
  821. "F2":oA%=386
  822. "F3":oA%=387
  823. "F4":oA%=388
  824. "F5":oA%=389
  825. "F6":oA%=390
  826. "F7":oA%=391
  827. "F8":oA%=392
  828. "F9":oA%=393
  829. "F10":oA%=458
  830. "F11":oA%=459
  831. oA%=(
  832. xA$)-64:dF%=
  833. oA%+=16
  834. oA%+=32
  835. :h%=sA%+a%:h%!0=oA%:h%?4=tC%:h%?5=wC%:h%?6=bD%:h%!8=
  836. shell_HeapBlockFetch(
  837. o$+1):vA%=h%!8:$vA%=o$:
  838. shell_IsWindowStatic(d%)=
  839. shell_MessageNoArgs("SHELLMSG09")
  840. :h%!&C=d%:h%!16=
  841. shell_HeapBlockFetch(
  842. m$+1):vA%=h%!16:$vA%=m$:h%!20=
  843. shell_HeapBlockFetch(
  844. n$+1):vA%=h%!20:$vA%=n$:
  845. shell_HotKeyProcess(oA%):
  846. sA%,KA%,x%,f%,w%,GA$,m$,n$:
  847. wC%,tC%,bD%,FB%,GB%,HE%,uJ%,a%:
  848. i%,z%:sA%=_U%!60:KA%=_U%!&B4*24:x%=
  849. :f%=0:
  850. sA%!f%=oA%
  851. f%+=24
  852. f%>=KA%:
  853. ~-h%=sA%+f%:GA$=$(h%!8):
  854. (GA$<>""
  855. h%!&C=0)
  856. shell_CreateWindow(GA$,w%):z%=
  857. shell_HeapBlockFetch(36):z%!0=w%:
  858. &400CB,,z%:FB%=(z%!4-z%!&C)/2:GB%=(z%!16-z%!8)/2:
  859. shell_HeapBlockReturn(z%)
  860. :m$=$(h%!16):
  861. m$<>""
  862. h%!&C>0
  863. ("FN"+m$+"("+
  864. h%!&C+")")
  865. ("FN"+m$+"("+
  866. w%+")")
  867. shell_IsWindowStatic(h%!&C)
  868. shell_OpenWindowStatic(h%!&C)
  869. h%!&C>0
  870. shell_MessageNoArgs("SHELLMSG09")
  871. shell_OpenWindowDynamic2(w%,FB%,GB%)
  872. :n$=$(h%!20):
  873. n$<>""
  874. h%!&C>0
  875. ("FN"+n$+"("+
  876. h%!&C+")")
  877. ("FN"+n$+"("+
  878. w%+")")
  879. GA$="":m$="":n$="":i%=
  880. shell_OpenWindowStaticNewView(d%):
  881. shell_OpenWindow(d%,
  882. ,-1):
  883. shell_OpenWindowStatic(o%):
  884. shell_IsWindowStatic(o%)=
  885. shell_OpenWindow(o%,0,-1)
  886. shell_InitHelpSystem(I$,VJ%):
  887. NA$,MA%,k$,DF%,HC%:_U%!&D4=0:
  888. _U%!&D8<>0
  889. shell_HeapBlockReturn(_U%!&D8)
  890. @_U%!&D8=0:
  891. shell_ScanForHelp:
  892. NA$=" -DieWithTask"
  893. NA$=""
  894. _U%!&64
  895. WI$="":k$=
  896. shell_OSVarGetVal(
  897. shell_GetAppName+"Res$Path",-1):
  898. :MA%=
  899. k$,","):
  900. MA%>0
  901. shell_FileExists(
  902. k$,MA%-1)+
  903. shell_GetAppName)
  904. k$,MA%-1)+
  905. shell_GetAppName:
  906. shell_StrongHlpChkFiles(I$)
  907. k$,MA%+1)
  908. shell_FileExists(k$+
  909. shell_GetAppName)
  910. ?I$=k$+
  911. shell_GetAppName:
  912. shell_StrongHlpChkFiles(I$)
  913. shell_OK(
  914. shell_MessageOneArg("SHELLMSG26",
  915. shell_GetAppName))
  916. I$<>""
  917. shell_FileExists(I$)
  918. shell_StrongHlpChkFiles(I$)
  919. shell_MessageOneArg("SHELLMSG33",I$)
  920. HC%=0
  921. shell_StrongHlpMsg("Help_Install "+I$+NA$):_U%!&64=_U%!&64
  922. shell_HelpWord(QA$):
  923. xJ%,h%:
  924. _U%!&D0=-1
  925. shell_OSVarExists("StrongHelp$Dir")
  926. &600DE,"<StrongHelp$Dir>":
  927. _U%!&D8<>0
  928. shell_HeapBlockReturn(_U%!&D8)
  929. <_U%!&D8=
  930. shell_HeapBlockFetch(
  931. QA$+1):h%=_U%!&D8:$h%=QA$
  932. shell_OK(
  933. shell_MessageNoArgs("SHELLMSG11"))
  934. shell_StrongHlpMsg("Help_Word "+QA$)
  935. shell_StrongHlpMsg(FA$):
  936. shell_BroadcastMessage(&43B00,FA$):
  937. shell_ScanForHelp:
  938. uB%,TE%:uB%=
  939. shell_HeapBlockFetch(256):
  940. :uB%!&C=0:
  941. &400E7,19,uB%,-2,_U%!&D4
  942. ,,TE%:_U%!&D4=_U%!&D4+1:
  943. TE%<>-1
  944. (_U%!&D4)>64:
  945. TE%<>-1
  946.     9@uB%!0=24:uB%!&C=0:uB%!16=&400C6:uB%!20=TE%:
  947. &400E7,17,uB%,0
  948. shell_HeapBlockReturn(uB%):
  949. shell_MemFill(QD%,RH%,kD%):
  950. I%,RE%,cF%:RE%=RH%
  951. 4:cF%=RH%
  952. RE%>0
  953. (RE%*4)
  954. 4:QD%!(I%-1)=kD%:
  955. cF%>0
  956.     Q.QD%=QD%+(RE%*4):
  957. cF%-1:QD%?I%=kD%:
  958. shell_MenuUpdateHandle(GH%,JH%):
  959. KA%,f%,r%,AA%:KA%=
  960. shell_HeapBlockInfo(_U%!&C)-8:f%=0:x%=
  961. :r%=_U%!&C:
  962. :AA%=r%!(f%+8):
  963. AA%=GH%
  964. r%!(f%+8)=JH%
  965.     sNf%+=48:
  966. (f%>=KA%):
  967. shell_MenuLastHandle=GH%
  968. _m_Menu_HandleLastOpened%=JH%
  969. shell_CheckSelection(oI%):
  970. h%,m%:h%=_U%!256:
  971. shell_MenuLastHandle=_U%!&FC
  972. oI%!m%<>h%!m%
  973. m%+=4:
  974. h%!m%=-1:=m%
  975. shell_MenuGetItemAddress(AA%,jH%):
  976. m%,kC%:
  977. &45BC7,AA%
  978. :kC%=AA%+28+((jH%!m%)*24):AA%=kC%!4:m%+=4:
  979. jH%!m%=-1:=kC%
  980. shell_GetLastMouseXPos:=
  981. Evnts_GetLastMouseXPos
  982. shell_GetLastMouseYPos:=
  983. Evnts_GetLastMouseYPos
  984. shell_UpdateWindowHandle(vB%,HB%):
  985. HB%<>vB%
  986. Evnts_GetLastWindowClicked=vB%
  987. _EVNTS_LAST_WINDOWCLICKED%=HB%
  988. !_Q%=vB%
  989. !_Q%=HB%
  990. shell_UpdateStaticWindowHandle(vB%,HB%):
  991. shell_UpdateWindowHandleList(vB%,HB%)
  992. shell_MessagesInit(N$,
  993. IH%):
  994. XB%,n%:
  995. 3,"Cannot open message file '"+N$+"'"
  996. &41500,,N$
  997. n%,,XB%:
  998. IH%=0
  999. shell_HeapBlockFetch(XB%)
  1000. 30,6,,,17+
  1001. ,,KE%:$(KE%+16)=N$:
  1002. &41501,KE%,KE%+16:
  1003. shell_WindowSetSpriteArea(w%,IF%):
  1004. e%,HB%,JF%,KF%:e%=
  1005. shell_HeapBlockFetch(&64+(
  1006. shell_WindowCountIcons(w%)*32)):!e%=w%:
  1007. &400CC,,e%:e%!68=IF%:
  1008. shell_IconSetSpriteArea(e%!60,e%+76,IF%):
  1009. (e%!88)>0
  1010. JF%=0
  1011. (e%!88)-1:KF%=e%+92+JF%*32:
  1012. shell_IconSetSpriteArea(KF%!16,KF%+20,IF%):
  1013. &400C3,,e%:
  1014. &400C1,,e%+4
  1015. HB%<>w%
  1016. shell_UpdateWindowHandle(w%,HB%):w%=HB%
  1017. shell_HeapBlockReturn(e%):=w%
  1018. shell_StrongHlpIsAvailable:
  1019. tB%,aA%:tB%=
  1020. _U%!&64
  1021. ,tB%=
  1022. shell_OSVarExists("StrongHelp$Dir")
  1023. :=tB%
  1024. shell_AttachOpenWindow(d%,f$):
  1025. e%,h%,a%:
  1026. shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
  1027. shell_GetEventListOffset(d%,-1,_U%+304,&C,
  1028. ):e%=_U%!304+a%:e%!0=d%:e%!4=-1:e%!8=
  1029. shell_HeapBlockFetch(
  1030. (f$)+1):h%=e%!8:$h%=f$:
  1031. shell_EnsurePoll:
  1032. :BA%=
  1033. shell_Poll_I(0,_U%!&94):
  1034. shell_Action(BA%):
  1035. BA%=0:
  1036. shell_WimpGetVersion:=_U%!316
  1037. shell_MessageSendDataLoad(tA%,b$):
  1038. IB%:IB%=
  1039. shell_HeapBlockFetch(256):IB%!0=256:IB%!4=0:IB%!&C=0:IB%!16=5:IB%!20=0:IB%!28=0:IB%!32=0:IB%!36=0:IB%!40=tA%:$(IB%+44)=b$+
  1040. &400E7,18,IB%,0:_SHELL_SENDDATALOAD_MY_REF%=IB%!8
  1041. ->_SHELL_SENDDATALOAD_FILE$=b$:
  1042. shell_HeapBlockReturn(IB%):
  1043. shell_BinarySearch(_search_term$,HB$,u$,VI%,JG%):
  1044. _pos%,UD%,_wp$,fE%,iJ%,NG%,nD%,kH%,x%,qE%,i%:JG%+=1:qE%=
  1045. :UD%=JG%:fE%=0:_pos%=UD%
  1046. 2:nD%=VI%-1:
  1047. nD%<0
  1048. C    nD%=0
  1049. :NG%=JG%:
  1050. :_wp$=
  1051. ("FN"+HB$+"( _pos% )"):CF%=_pos%:
  1052. _search_term$=_wp$
  1053. ("FN"+u$+"( _search_term$,_wp$ )")=
  1054. `+NG%=_pos%:UD%=_pos%-nD%:_pos%=UD%
  1055. 2+fE%
  1056. nD%=_pos%:fE%=_pos%:UD%=NG%-_pos%:_pos%=UD%
  1057. 2+fE%
  1058. kH%=CF%
  1059. kH%=CF%:
  1060. p    i%=-1
  1061. i%=CF%
  1062. shell_IconLastClicked:=
  1063. Evnts_GetLastIconClicked
  1064. shell_QuickSort(u$,z$,_asc%,_start%,_end%):
  1065. _lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%=
  1066. :_temp%=_lo%-1+
  1067. (_hi%+1-_lo%):k%=
  1068. ("FN"+z$+"(_lo%,_temp%)"):
  1069. _asc%=0
  1070. ("FN"+u$+"(_lo%,_hi%)")
  1071. ("FN"+z$+"(_lo%,_hi%)"):_F%=
  1072. ("FN"+u$+"(_hi%,_lo%)")
  1073. ("FN"+z$+"(_hi%,_lo%)"):_F%=
  1074. _hi%=_hi%-1
  1075. _lo%=_lo%+1
  1076. _lo%=_hi%:
  1077. _start%<_lo%-1
  1078. shell_QuickSort(u$,z$,_asc%,_start%,_lo%-1)
  1079. _hi%+1<_end%
  1080. shell_QuickSort(u$,z$,_asc%,_hi%+1,_end%)
  1081. _shell_MS_swap(_D%,DE%):
  1082. lA$,nA$,mG%,QH%:lA$=
  1083. shell_MenuGetItemText(_shell_MS_handle%,_D%):nA$=
  1084. shell_MenuGetItemText(_shell_MS_handle%,DE%):_shell_blk%!0=_D%:_shell_blk%!4=-1:mG%=
  1085. shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%)
  1086. _shell_blk%!0=DE%:QH%=
  1087. shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%):
  1088. shell_MenuPutData(mG%,nA$):
  1089. shell_MenuPutData(QH%,lA$):=0
  1090. _shell_MS_comp(_D%,DE%):
  1091. qA$,yA$,HA%:qA$=
  1092. shell_MenuGetItemText(_shell_MS_handle%,_D%):yA$=
  1093. shell_MenuGetItemText(_shell_MS_handle%,DE%):
  1094. qA$<yA$
  1095.     HA%=
  1096. :=HA%
  1097. shell_WindowSetTitleRightJust(
  1098. _%,NB%,o%,GC%:GC%=
  1099. shell_WindowIsOpen(d%):_%=
  1100. shell_HeapBlockFetch(&64+(
  1101. shell_WindowCountIcons(d%)*32)):!_%=d%:
  1102. &400CC,,_%:NB%=_%!60:
  1103. (1<<3))
  1104. NB%=NB%
  1105. (1<<3)
  1106. :NB%=NB%
  1107. (1<<9):_%!60=NB%:
  1108. &400C3,,_%:
  1109. &400C1,,_%+4
  1110. d%<>o%
  1111. shell_UpdateWindowHandle(d%,o%):d%=o%
  1112. shell_OpenWindow(o%,0,0)
  1113. shell_HeapBlockReturn(_%):
  1114. shell_WindowSetTitleCentreJust(
  1115. _%,NB%,o%,GC%:GC%=
  1116. shell_WindowIsOpen(d%):_%=
  1117. shell_HeapBlockFetch(&64+(
  1118. shell_WindowCountIcons(d%)*32)):!_%=d%:
  1119. &400CC,,_%:NB%=_%!60:
  1120. (1<<3))=0
  1121. DNB%=NB%
  1122. (1<<3):_%!60=NB%:
  1123. &400C3,,_%:
  1124. &400C1,,_%+4
  1125. d%<>o%
  1126. shell_UpdateWindowHandle(d%,o%):d%=o%
  1127. shell_OpenWindow(o%,0,0)
  1128. shell_HeapBlockReturn(_%):
  1129. shell_GetLastMouseButton:=
  1130. Evnts_GetLastMouseButton
  1131. shell_GetLastWindowClicked:=
  1132. Evnts_GetLastWindowClicked
  1133. shell_GetLastIconClicked:=
  1134. Evnts_GetLastIconClicked
  1135. shell_StrongHlpChkFiles(I$):
  1136. HC%,i%:
  1137. shell_FileExists(I$+".HelpData")
  1138. %<HC%=-1:
  1139. shell_MessageOneArg("SHELLMSG32","HelpData")
  1140. shell_FileExists(I$+".Index")
  1141. *9HC%=-1:
  1142. shell_MessageOneArg("SHELLMSG32","Index")
  1143. shell_TemplateFileInfo(N$,
  1144. SD%:SD%=
  1145. RO3_Present:
  1146. shell_TemplateFileInfo3(N$,JB%,EA%,i%)
  1147. shell_TemplateFileInfo2(N$,JB%,EA%,i%)
  1148. shell_TemplateFileInfo2(N$,
  1149. MA%,bC%,wB%:
  1150. aA%,X%,xB%,eI%:
  1151. m%,nE%,bF%,gA%,cD%,n%:MA%=0:EA%=0:bC%=0:wB%=0:i%=0:
  1152. shell_FileExists(N$)
  1153. i%=-1
  1154. shell_FileType(N$)<>&FEC
  1155. i%=-2
  1156. WUaA%=
  1157. shell_HeapBlockFetch(&D):X%=
  1158. (N$):
  1159. #X%=16:
  1160. &C,4,X%,aA%,4:YB%=!aA%:
  1161. YB%>0
  1162. EA%+=1:FG%=0:
  1163. &C,4,X%,aA%,4:xB%=!aA%:
  1164. &C,4,X%,aA%,4:eI%=!aA%:
  1165. &C,4,X%,aA%,&C:bF%=
  1166. #X%=YB%+56:
  1167. &C,4,X%,aA%,4:n%=!aA%:
  1168. #X%=YB%+72:
  1169. &C,4,X%,aA%,&C:FG%+=
  1170. shell_IconIndirSize(YB%,n%,aA%,X%):
  1171. #X%=YB%+84:
  1172. &C,4,X%,aA%,4:gA%=!aA%:
  1173. gA%>0
  1174. cD%=0
  1175. gA%-1:
  1176. #X%=YB%+88+(cD%*32)+16:
  1177. &C,4,X%,aA%,4:n%=!aA%:
  1178. #X%=YB%+88+(cD%*32)+20:
  1179. &C,4,X%,aA%,&C:FG%+=
  1180. shell_IconIndirSize(YB%,n%,aA%,X%):
  1181. #X%=bF%:bC%+=FG%:
  1182. xB%>wB%
  1183. wB%=xB%
  1184. YB%=0:
  1185. shell_HeapBlockReturn(aA%):JB%=wB%+bC%
  1186. shell_TemplateFileInfo3(N$,
  1187. MA%,bC%,wB%,YB%:
  1188. m%,nE%,bF%,gA%,cD%,n%:MA%=0:EA%=0:bC%=0:wB%=0:aA%=
  1189. shell_HeapBlockFetch(&D):
  1190. &400D9,,N$:
  1191. :$aA%="*":
  1192. &400DB,,-1,,,,aA%,MA%
  1193. ,JB%,fI%,,,,MA%:
  1194. MA%<>0
  1195. JB%>wB%
  1196. wB%=JB%
  1197. bC%+=fI%:EA%+=1
  1198. MA%=0:
  1199. &400DA:JB%=wB%+bC%:
  1200. shell_HeapBlockReturn(aA%):
  1201. RO3_Present:
  1202. e%,cC%,R$,HA%:e%=
  1203. shell_HeapBlockFetch(256):
  1204. ("Set RO3$Check Y"):
  1205. ("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
  1206. 35,"RO3$Check",e%,256,0,0
  1207. ,,cC%:e%?cC%=&D:
  1208. ("Unset RO3$Check"):R$=$e%:
  1209. shell_HeapBlockReturn(e%):
  1210. R$="N"
  1211.     HA%=
  1212. :=HA%
  1213. _shell_icondrag(d%,t%):
  1214. shell_IconDragBox(d%,t%):=0
  1215. shell_MessageSendPrintSave(OG%,PI%):
  1216. PI%>1
  1217. _U%!336=PI%-1
  1218. _U%!336=0
  1219. shell_DoSendPrintSave(OG%):
  1220. shell_DoSendPrintSave(OG%):
  1221. AB%:AB%=
  1222. shell_HeapBlockFetch(256):AB%!0=256:AB%!&C=0:AB%!16=&80142:AB%!20=0:AB%!24=0:AB%!28=0:AB%!32=0:AB%!36=256:AB%!40=OG%:$(AB%+44)="PrintOut"+
  1223. &400E7,18,AB%,AB%!20,AB%!24:
  1224. shell_HeapBlockReturn(AB%):
  1225. shell_HandlePrintFile(_Q%):
  1226. shell_HandlePrintError(_Q%):
  1227. shell_HandlePrintTypeOdd(_Q%):
  1228. shell_HandleSetPrinter(_Q%):
  1229. shell_3DEnabled:
  1230. wG%,_3d%:
  1231. _U%!&64
  1232. (1<<&A)
  1233. 6,&A1,&8C
  1234. ,,wG%:
  1235. _3d%=
  1236. _3d%=
  1237. _3d%=
  1238. :=_3d%
  1239. shell_HandleAttachedDataSave(_Q%,d%,t%):
  1240. pE%,e%,pG%,_name$,h%,k%:
  1241. shell_DataSaveCheckName(d%,t%):pE%=
  1242. shell_GetEventListOffset(d%,-1,_U%+72,24,
  1243. pE%>=0
  1244. &ie%=_U%!72+pE%:pG%=e%!16:_name$=
  1245. shell_IconGetData(d%,pG%):h%=e%!20:
  1246. $h%<>""
  1247. ("FN"+$h%+"(_name$)")
  1248. shell_InstallLib(WB$):
  1249. k%,e$:e$="The library routine 'FNshell_InstallLib' is no longer supported. Please load the library with the LIBRARY command and call the initialise routine with 'void% = FN_shell_<libname>_init'"
  1250. 6Gk%=
  1251. shell_MessageWindow(e$,
  1252. shell_GetAppName,""):_closedown%=
  1253. shell_Bumpers_Init:_c_Bumpers_ShiftKeyFactor%=2:_c_Bumpers_CtrlKeyFactor%=4:_c_Bumpers_ShiftCtrlKeyFactor%=8:=0
  1254. shell_AttachBumpHandler(b%,g%,DH%,HH%,nB%,oB%,eJ%,bH%,hA$,tA$):
  1255. c%,a%,A$,q%:A$=
  1256. shell_GetWindowIdentifier(b%):a%=
  1257. Evnts_GetEvntListOffset(A$,DH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  1258. ):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=DH%:c%!16=eJ%
  1259. 8c%!20=g%:c%!24=nB%:c%!28=oB%:
  1260. bH%=-1
  1261. c%!40=1
  1262. c%!40=0
  1263. !_EVNTS_BUMP_DATA%=0
  1264. /!_EVNTS_BUMP_DATA%=
  1265. shell_HeapBlockFetch(1)
  1266. :q%=c%+32:
  1267. hA$<>""
  1268. Evnts_UpdateData(q%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,hA$)
  1269. !q%=-1
  1270. :q%=c%+36:
  1271. tA$<>""
  1272. Evnts_UpdateData(q%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,tA$)
  1273. !q%=-1
  1274. Evnts_GetEvntListOffset(A$,HH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  1275. ):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=HH%:
  1276. bH%=-1
  1277. c%!40=1
  1278. c%!40=0
  1279. c%!40=c%!40
  1280. (1<<2):
  1281. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
  1282. A$,a%,j%,WE%:
  1283. eB%,uC%,nB%,oB%,eC%,LG%,UG%:
  1284. vC%,xE%,_new_val$,_new_val%,q%,eA$,KA$:
  1285. MA$:A$=
  1286. shell_GetWindowIdentifier(_window_handle%)
  1287. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  1288. ):eC%=
  1289. shell_GetLastMouseButton:
  1290. a%>=0
  1291. 8j%=!_EVNTS_BUMP_ANCHOR%+a%:
  1292. j%!40
  1293. (1<<2)
  1294. j%!40
  1295. (1<<0)
  1296. j%-=_EVNTS_BUMP_REC_SIZE%
  1297. IeB%=j%!16:uC%=j%!20:nB%=j%!24:oB%=j%!28:LG%=
  1298. (-1):UG%=
  1299. (-2):
  1300. *eB%=eB%*_c_Bumpers_ShiftCtrlKeyFactor%
  1301. eB%=eB%*_c_Bumpers_ShiftKeyFactor%
  1302. eB%=eB%*_c_Bumpers_CtrlKeyFactor%
  1303. :fB%=!_EVNTS_BUMP_DATA%:
  1304. fB%>0
  1305. j%!32>=0
  1306. eA$=$(fB%+j%!32)
  1307. j%!36>=0
  1308. KA$=$(fB%+j%!36)
  1309. :MA$=
  1310. shell_IconGetData(_window_handle%,uC%):
  1311. KA$<>""
  1312. )vC%=
  1313. ("FN"+KA$+"( "+
  1314. 34+MA$+
  1315. 34+" )")
  1316. (MA$)
  1317. eC%=_MSE_ADJUSTBUT
  1318. _new_val%=vC%+eB%
  1319. _new_val%=vC%-eB%
  1320. eC%=_MSE_ADJUSTBUT
  1321. _new_val%=vC%-eB%
  1322. _new_val%=vC%+eB%
  1323. _new_val%>oB%
  1324. _new_val%=oB%
  1325. _new_val%<nB%
  1326. _new_val%=nB%
  1327. _new_val%>oB%
  1328. _new_val%=nB%
  1329. _new_val%<nB%
  1330. _new_val%=oB%
  1331. eA$<>""
  1332. 0_new_val$=
  1333. ("FN"+eA$+"(_new_val%,"+
  1334. eC%+")")
  1335. _new_val$=
  1336. _new_val%
  1337. shell_IconPutData(_window_handle%,uC%,_new_val$,
  1338. shell_ListBumpers:
  1339. KA%,r%,y%,f%,PA%,KB%:
  1340. YD%,ZD%,vA$,GB$,IA%,s%,g$:
  1341. VH%,uC%,nB%,oB%:r%=!_EVNTS_BUMP_ANCHOR%:y%=_EVNTS_BUMP_REC_SIZE%:PA%=(r%!4)/2:
  1342. Evnts_DebugListHeader ("Bump ","Window       Inc Dec Disp Step Lower Upper Value Change FN"):
  1343. Evnts_GetHeaderSize:
  1344. PA%:A$=$(r%+f%):YD%=r%!(f%+&C):ZD%=r%!(f%+&C+_EVNTS_BUMP_REC_SIZE%):VH%=r%!(f%+16):uC%=r%!(f%+20):nB%=r%!(f%+24):oB%=r%!(f%+28):IA%=!_EVNTS_BUMP_DATA%:
  1345. IA%>0
  1346. */vA$=$(IA%+r%!(f%+32)):GB$=$(IA%+r%!(f%+36))
  1347. shell_StringPadTrailing(A$,".",&C):g$+=" "+
  1348. shell_StringPadLeading(
  1349. YD%," ",3):g$+=" "+
  1350. shell_StringPadLeading(
  1351. ZD%," ",3):g$+=" "+
  1352. shell_StringPadLeading(
  1353. uC%," ",4):g$+=" "+
  1354. shell_StringPadLeading(
  1355. VH%," ",4)
  1356. g$+=" "+
  1357. shell_StringPadLeading(
  1358. nB%," ",5):g$+=" "+
  1359. shell_StringPadLeading(
  1360. oB%," ",5):g$+="   "+vA$:f%+=_EVNTS_BUMP_REC_SIZE%*2:
  1361. shell_Caret_Init:
  1362. _c_Caret_GetCaretPositionBlk%24:=0
  1363. shell_CaretSetPosition(TA%,BB%,EJ%,qI%,VA%,MB%):
  1364. &400D2,TA%,BB%,EJ%,qI%,VA%,MB%:
  1365. shell_IconEnsureVisible(TA%,BB%):
  1366. shell_CaretReadPosition(
  1367. MB%):
  1368. &400D3,,_c_Caret_GetCaretPositionBlk%:TA%=_c_Caret_GetCaretPositionBlk%!0:BB%=_c_Caret_GetCaretPositionBlk%!4:pB%=_c_Caret_GetCaretPositionBlk%!8:qB%=_c_Caret_GetCaretPositionBlk%!&C
  1369. ~*MB%=_c_Caret_GetCaretPositionBlk%!20:
  1370. shell_CaretSetRight(d%,t%):
  1371. &400D2,d%,t%,-1,-1,-1,
  1372. shell_IconGetData(d%,t%)):
  1373. shell_CaretPutFirstIcon(d%):
  1374. GA%,gA%:gA%=
  1375. shell_WindowCountIcons(d%):GA%=
  1376. shell_HeapBlockFetch((gA%+1)*4):
  1377. &400D6,d%,GA%,&40E000,&E000:
  1378. !GA%<>-1
  1379. shell_CaretSetRight(d%,!GA%):
  1380. shell_IconEnsureVisible(d%,!GA%)
  1381. shell_HeapBlockReturn(GA%):
  1382. shell_CaretPutLastIcon(d%):
  1383. shell_CaretMoveCaret(d%,1):
  1384. shell_CaretPutNextIcon(d%):
  1385. shell_CaretMoveCaret(d%,2):
  1386. shell_CaretPutPrevIcon(d%):
  1387. shell_CaretMoveCaret(d%,3):
  1388. shell_CaretMoveCaret(d%,BA%):
  1389. GA%,AH%,m%,f%,zB%:
  1390. gA%:m%=0:f%=0:gA%=
  1391. shell_WindowCountIcons(b%):GA%=
  1392. shell_HeapBlockFetch((gA%+1)*4):
  1393. &400D3,,GA%:
  1394. GA%!4<>-1
  1395. ?AH%=GA%!4:
  1396. &400D6,d%,GA%,&40E000,&E000:
  1397. GA%!m%=AH%
  1398. f%=m%
  1399. m%+=4:
  1400. GA%!m%=-1:
  1401. 0:zB%=!GA%
  1402. 1:zB%=GA%!(m%-4)
  1403. GA%!(f%+4)<>-1
  1404. zB%=GA%!(f%+4)
  1405. zB%=!GA%
  1406. zB%=GA%!(f%-4)
  1407. zB%=GA%!(m%-4)
  1408. &400D2,d%,zB%,-1,-1,-1,
  1409. shell_IconGetData(d%,zB%)):
  1410. shell_IconEnsureVisible(d%,zB%)
  1411. shell_HeapBlockReturn(GA%):
  1412. shell_CaretMove_Init:_c_CaretPreMove_RecSize%=20:
  1413. _m_CaretPreMove_Anchor%4:
  1414. _m_CaretPreMove_DataBlk%4:!_m_CaretPreMove_Anchor%=0:!_m_CaretPreMove_DataBlk%=0:_m_CaretPreMove_DataOffset%=0:_c_CaretPostMove_RecSize%=20:
  1415. _m_CaretPostMove_Anchor%4
  1416. _m_CaretPostMove_DataBlk%4:!_m_CaretPostMove_Anchor%=0:!_m_CaretPostMove_DataBlk%=0:_m_CaretPostMove_DataOffset%=0:=0
  1417. shell_AttachCaretPreMoveHandler(b%,B$):
  1418. c%,a%,A$,q%,bA%:
  1419. shell_GetWindowIdentifier(b%):a%=
  1420. Evnts_GetEvntListOffset(A$,-1,_m_CaretPreMove_Anchor%,_c_CaretPreMove_RecSize%,
  1421. ):c%=!_m_CaretPreMove_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  1422. !_m_CaretPreMove_DataBlk%=0
  1423. E<!_m_CaretPreMove_DataBlk%=
  1424. shell_HeapBlockFetch(
  1425. (B$)+1)
  1426. :q%=c%+16:
  1427. Evnts_UpdateData(q%,_m_CaretPreMove_DataBlk%,_m_CaretPreMove_DataOffset%,B$)
  1428. shell_EvntHandle_CaretPreMove(_window_handle%,_icon_handle%):
  1429. A$,a%,j%,FA%,v%,B$:
  1430. k%:A$=
  1431. shell_GetWindowIdentifier(_window_handle%):
  1432. A$<>""
  1433. ]aa%=
  1434. Evnts_GetEvntListOffset(A$,-1,_m_CaretPreMove_Anchor%,_c_CaretPreMove_RecSize%,
  1435. a%>=0
  1436. j%=!_m_CaretPreMove_Anchor%+a%:FA%=j%!16:v%=!_m_CaretPreMove_DataBlk%:B$=$(v%+FA%):k%=
  1437. ("FN"+B$+"( _window_handle%, _icon_handle% )")
  1438. shell_AttachCaretPostMoveHandler(b%,B$):
  1439. c%,a%,A$,q%,bA%:
  1440. shell_GetWindowIdentifier(b%):a%=
  1441. Evnts_GetEvntListOffset(A$,-1,_m_CaretPostMove_Anchor%,_c_CaretPostMove_RecSize%,
  1442. ):c%=!_m_CaretPostMove_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  1443. !_m_CaretPostMove_DataBlk%=0
  1444. =!_m_CaretPostMove_DataBlk%=
  1445. shell_HeapBlockFetch(
  1446. (B$)+1)
  1447. :q%=c%+16:
  1448. Evnts_UpdateData(q%,_m_CaretPostMove_DataBlk%,_m_CaretPostMove_DataOffset%,B$)
  1449. shell_EvntHandle_CaretPostMove(_window_handle%,_icon_handle%):
  1450. A$,a%,j%,FA%,v%,B$:
  1451. k%:A$=
  1452. shell_GetWindowIdentifier(_window_handle%):
  1453. A$<>""
  1454. Evnts_GetEvntListOffset(A$,-1,_m_CaretPostMove_Anchor%,_c_CaretPostMove_RecSize%,
  1455. a%>=0
  1456. j%=!_m_CaretPostMove_Anchor%+a%:FA%=j%!16:v%=!_m_CaretPostMove_DataBlk%:B$=$(v%+FA%):k%=
  1457. ("FN"+B$+"( _window_handle%, _icon_handle% )")
  1458. shell_DataLoad_Init:_c_DLoad_ICONBAR_ICON%=-1:_c_DLoad_RecSize%=24:_m_DLoad_FileType%=-1:_m_DLoad_FileName$="":_m_DLoad_DestIconHandle%=-1:_m_DLoad_DestWindowHandle%=-1:_m_DLoad_WindowName$="":_m_DLoad_CmdLineFileName$=
  1459. shell_OSReadCommandArg(1)
  1460. _m_DLoad_CmdLineFileName$<>""
  1461. `_m_DLoad_LoadPending%=
  1462. :_m_DLoad_CmdLineFileType%=
  1463. shell_FileType(_m_DLoad_CmdLineFileName$)
  1464. _m_DLoad_LoadPending%=
  1465. :_m_DLoad_CmdLineFileType%=-1
  1466. _m_DLoad_Anchor%4:
  1467. _m_DLoad_DataBlk%4:!_m_DLoad_Anchor%=0:!_m_DLoad_DataBlk%=0:_EVNTS_DATALOAD_DATAOFFSET%=0:
  1468. _m_DLoad_WORKBUFFER%4:=0
  1469. DataLoad_LoadIsPending:=_m_DLoad_LoadPending%
  1470. DataLoad_ClearLoadIsPendingFlag:_m_DLoad_LoadPending%=
  1471. DataLoad_GetIconBarIconNr:=_c_DLoad_ICONBAR_ICON%
  1472. DataLoad_GetAnchor:=_m_DLoad_Anchor%
  1473. DataLoad_GetDataBlk:=_m_DLoad_DataBlk%
  1474. DataLoad_GetDataOffset:=_EVNTS_DATALOAD_DATAOFFSET%
  1475. DataLoad_GetRecSize:=_c_DLoad_RecSize%
  1476. DataLoad_SetFileName(Y$):_m_DLoad_FileName$=Y$:
  1477. DataLoad_GetFileName:=_m_DLoad_FileName$
  1478. shell_AttachDataLoad(b%,g%,iA%,f$,mH%):
  1479. c%,a%,A$,q%,bA%:
  1480. qJ%,m%,HK%,JK%,hE%:
  1481. b%=_IBAR_RIGHT%
  1482. b%=_IBAR_LEFT%
  1483. _c_DLoad_ICONBAR_ICON%=g%
  1484. iA%=iA%
  1485. 1<<31
  1486. iA%=-1
  1487. shell_GetWindowIdentifier(b%):a%=
  1488. Evnts_GetEvntListOffset(A$,g%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1489. ):c%=!_m_DLoad_Anchor%:bA%=c%!4:
  1490. a%>=0
  1491. c%+=a%:OI%=c%!16:
  1492. OI%<>-1
  1493. 99,"More than one dataload event attached to this window/icon pair"
  1494. Evnts_GetEvntListOffset3(A$,g%,iA%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1495. ):c%=!_m_DLoad_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=iA%:
  1496. !_m_DLoad_DataBlk%=0
  1497. S5!_m_DLoad_DataBlk%=
  1498. shell_HeapBlockFetch(
  1499. (f$)+1)
  1500. :q%=c%+20:
  1501. Evnts_UpdateData(q%,_m_DLoad_DataBlk%,_EVNTS_DATALOAD_DATAOFFSET%,f$):
  1502. _m_DLoad_CmdLineFileName$<>""
  1503. _m_DLoad_LoadPending%
  1504. 1<<31
  1505. hE%=iA%
  1506. 1<<31
  1507. hE%=iA%
  1508. _m_DLoad_CmdLineFileType%=hE%
  1509. shell_FileExists(_m_DLoad_CmdLineFileName$)
  1510. shell_MessageSendDataLoad(hE%,_m_DLoad_CmdLineFileName$):_m_DLoad_LoadPending%=
  1511. shell_EvntHandle_DataLoad(ZB%,yC%):_m_DLoad_FileType%=ZB%!40:_m_DLoad_DestWindowHandle%=ZB%!20:_m_DLoad_DestIconHandle%=ZB%!24:_m_DLoad_FileName$=
  1512. shell_GetString(ZB%+44):
  1513. shell_Tracef0("EvntHandle_DataLoad:filename is : "+_m_DLoad_FileName$)
  1514. shell_Tracef0("EvntHandle_DataLoad:filetype is : &"+
  1515. ~(_m_DLoad_FileType%)):
  1516. DataLoad_OKToLoad(yC%)
  1517. shell_Tracef0("EvntHandle_DataLoad:DataLoad message received"):
  1518. shell_Tracef0("EvntHandle_DataLoad:Double click load type.."):
  1519. DataLoad_ProcessDClickLoad
  1520. _m_DLoad_WindowName$=
  1521. shell_GetWindowIdentifier(_m_DLoad_DestWindowHandle%):
  1522. shell_Tracef0("EvntHandle_DataLoad:Drag load type.."):
  1523. shell_Tracef0("EvntHandle_DataLoad:Load to window '"+_m_DLoad_WindowName$+"'"):
  1524. DataLoad_ProcessDragLoad
  1525. DataLoad_ProcessDClickLoad:
  1526. a%:a%=
  1527. Evnts_GetEvntListOffset("iconbar",_c_DLoad_ICONBAR_ICON%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1528. DataLoad_ProcessLoadRequest(a%):
  1529. DataLoad_ProcessDragLoad:
  1530. a%,WI%,bB%,f%:c%=!_m_DLoad_Anchor%:WI%=c%!0:a%=
  1531. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1532. a%=-1
  1533. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1
  1534. (1<<31),_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1535. a%=-1
  1536. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,-1,-1,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1537. a%=-1
  1538. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,-1,-1
  1539. (1<<31),_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1540. a%=-1
  1541. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1542. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,-1,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  1543. ):c%=!_m_DLoad_Anchor%
  1544. a%>-1
  1545. DataLoad_ProcessLoadRequest(a%)
  1546. DataLoad_ProcessLoadRequest(a%):
  1547. iA%,bB%:
  1548. a%>-1
  1549. zc%=!_m_DLoad_Anchor%:c%+=a%:iA%=c%!16:
  1550. shell_Tracef0("DataLoad_ProcessLoadRequest:file_type% = &"+
  1551. ~(iA%)):
  1552. 1<<31
  1553. _U%!&64=_U%!&64
  1554. :bB%=iA%
  1555. (1<<31):
  1556. shell_Tracef0("DataLoad_ProcessLoadRequest:converted_file_type% = &"+
  1557. ~(bB%)):
  1558. bB%=_m_DLoad_FileType%
  1559. iA%=-1
  1560. shell_Tracef0("DataLoad_ProcessLoadRequest:File type recognised (&"+
  1561. ~_Q%!40+")"):xI%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
  1562. &400E7,18,_Q%,_Q%!4:
  1563. shell_TopBitLoadInProgress
  1564. shell_Tracef0("DataLoad_ProcessLoadRequest:top bit type load.. ")
  1565. shell_Tracef0("DataLoad_ProcessLoadRequest:not a top bit type load..")
  1566. shell_TopBitLoadInProgress
  1567. yB%=-1:_U%!&64=_U%!&64
  1568. shell_Tracef0("DataLoad_ProcessLoadRequest:autoloading file.."):yB%=
  1569. shell_LoadFile(xI%=_U%!&6C)
  1570. shell_Tracef0("DataLoad_ProcessLoadRequest:calling user file load routine.."):
  1571. DataLoad_CallUserFN(yB%,_m_DLoad_FileType%,_Q%!36,c%):
  1572. _U%!&9C<>0
  1573. shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
  1574. shell_Tracef0("DataLoad_ProcessLoadRequest:File type NOT recognised (&"+
  1575. ~_Q%!40+")")
  1576. DataLoad_CheckType(yD%,yC%):
  1577. BK%,m%,x%,h%,zD%,HA%:m%=0:x%=-1:zD%=
  1578. _U%!&64
  1579. _U%!&64=_U%!&64
  1580. yD%=-1
  1581. yD%!m%<>-1:h%=yD%!m%:
  1582. 1<<31
  1583. h%=h%
  1584. 1<<31:zD%=
  1585. h%=_m_DLoad_FileType%
  1586. x%=m%:
  1587. _U%!&64=_U%!&64
  1588. :m%+=4:
  1589. (_m_DLoad_FileType%>=4096)
  1590. x%=-1
  1591. x%<>-1
  1592.     HA%=
  1593. :=HA%
  1594. DataLoad_CallUserFN(yB%,iA%,_file_size%,c%):
  1595. k%,wE%,HA$,nA%:wE%=c%!20:
  1596. wE%>-1
  1597. ,3nA%=!_m_DLoad_DataBlk%:HA$=$(nA%+wE%):
  1598. HA$<>""
  1599. 2gk%=
  1600. ("FN"+HA$+"("+
  1601. yB%+","+
  1602. _m_DLoad_FileType%+","+
  1603. 34+_m_DLoad_FileName$+
  1604. 34+","+
  1605. _file_size%+")")
  1606. DataLoad_OKToLoad(yC%):
  1607. i%,JA$,rA$:
  1608. shell_Tracef0("DataLoad_OKToLoad:Message reason code was 3, normal drag load.."):i%=
  1609. shell_Tracef0("DataOpenOKToLoad:Message reason code was 5, double click load.."):JA$=
  1610. shell_OSVarGetVal("Alias$@RunType_"+
  1611. ~_m_DLoad_FileType%,1):
  1612. shell_Tracef0("DataLoad_OKToLoad:Alias$@RunType="+JA$):rA$=
  1613. shell_Branch(JA$)
  1614. shell_Leaf(rA$)="!"+
  1615. shell_GetAppName
  1616. shell_ListDataLoad:
  1617. j%,f%,bA%,m%,yD%,hJ%:
  1618. g%,s%,g$,aB$:j%=!_m_DLoad_Anchor%:bA%=j%!4:
  1619. Evnts_DebugListHeader ("DataLoad ","Window       Icon  Filetype NL LoadFN"):
  1620. shell_Tracef0(" "):
  1621. shell_DataSave_Init:
  1622. _m_DSave_Anchor%4:
  1623. _m_DSave_DataBlk%4:!_m_DSave_Anchor%=0:!_m_DSave_DataBlk%=0:_m_DSave_DataOffset%=0:_m_DSave_WindowName$="":_m_DSave_EvntOffset%=-1:_m_DSave_EvntList%=-1:_m_DSave_FileName$="":_m_DSave_FullFileName$=""
  1624. _m_DSave_NameIcon%=-1:_m_DSave_FileType%=-1:_m_DSave_DataAddress%=-1:_m_DSave_UserFN$="":_m_DSave_DestTaskHandle%=-1:_m_DSave_DestWindowHandle%=-1:_m_DSave_DestIconHandle%=-1:_m_DSave_MouseXCoord%=-1:_m_DSave_MouseYCoord%=-1:_m_DSave_MessageMyRef%=-1
  1625. _m_DSave_DragASpriteInProgress%=
  1626. :_m_DSave_DragInProgress%=
  1627. :_c_DSave_NotSpriteMess$="SHELLMSG29":_c_DSave_NoFileNameMess$="SHELLMSG28":_c_DSave_NotASpriteIcon$="SHELLMSG19":_c_DSave_NotAHeapBlockMess$="SHELLMSG21":_c_DSave_RecDiedMess$="SHELLMSG39"
  1628. N_c_DSave_ButtonTypeClick%=6:_c_DSave_DataSize%=&64:_c_DSave_RecSize%=32:=0
  1629. DataSave_GetAnchor:=_m_DSave_Anchor%
  1630. DataSave_GetDataBlk:=_m_DSave_DataBlk%
  1631. DataSave_GetDataOffset:=_m_DSave_DataOffset%
  1632. DataSave_SetDataOffset(OA%):_m_DSave_DataOffset%=OA%:
  1633. shell_DataSaveResetDragFlags:_m_DSave_DragASpriteInProgress%=
  1634. :_m_DSave_DragInProgress%=
  1635. shell_DataSaveResetDragInProgressFlag:_m_DSave_DragInProgress%=
  1636. shell_DataSaveSetDragInProgressFlag:_m_DSave_DragInProgress%=
  1637. shell_DataSaveResetDragASpriteInProgressFlag:_m_DSave_DragASpriteInProgress%=
  1638. shell_DataSaveSetDragASpriteInProgressFlag:_m_DSave_DragASpriteInProgress%=
  1639. shell_AttachDataSave(b%,g%,FF%,iA%,_G%,B$):
  1640. A$,a%,c%,bA%,q%:
  1641. shell_IconIsSprite(b%,g%)
  1642. shell_OK(
  1643. shell_MessageNoArgs(_c_DSave_NotSpriteMess$))
  1644. shell_IconSetButtonType(b%,g%,_c_DSave_ButtonTypeClick%):
  1645. FF%=0
  1646. FF%=_c_DSave_DataSize%
  1647. shell_GetWindowIdentifier(b%):a%=
  1648. Evnts_GetEvntListOffset(A$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
  1649. ):c%=!_m_DSave_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=iA%:c%!20=_G%:c%!24=FF%:
  1650. !_m_DSave_DataBlk%=0
  1651. G5!_m_DSave_DataBlk%=
  1652. shell_HeapBlockFetch(
  1653. (B$)+1)
  1654. :q%=c%+28:
  1655. Evnts_UpdateData(q%,_m_DSave_DataBlk%,_m_DSave_DataOffset%,B$):
  1656. shell_EvntHandle_DataSaveStartDrag(b%,g%):
  1657. FA%,v%:_m_DSave_DragInProgress%=
  1658. :_m_DSave_WindowName$=
  1659. shell_GetWindowIdentifier(b%):_m_DSave_EvntOffset%=
  1660. Evnts_GetEvntListOffset(_m_DSave_WindowName$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
  1661. _m_DSave_EvntOffset%>=0
  1662. _m_DSave_EvntList%=!_m_DSave_Anchor%+_m_DSave_EvntOffset%:_m_DSave_FileType%=_m_DSave_EvntList%!16:_m_DSave_NameIcon%=_m_DSave_EvntList%!20:_m_DSave_DataAddress%=_m_DSave_EvntList%!24:v%=!_m_DSave_DataBlk%:FA%=_m_DSave_EvntList%!28
  1663. bs_m_DSave_UserFN$=$(v%+FA%):_m_DSave_FileName$=
  1664. shell_IconGetData(b%,_m_DSave_NameIcon%):
  1665. _m_DSave_FileName$=""
  1666. shell_OK(
  1667. shell_MessageNoArgs(_c_DSave_NoFileNameMess$))
  1668. :_m_DSave_DragInProgress%=
  1669. shell_IconDragBox(b%,g%)
  1670. shell_EvntHandle_DataSaveEndDrag:
  1671. xA%,yA%,MF%:
  1672. _m_DSave_DragInProgress%
  1673. _m_DSave_DragASpriteInProgress%
  1674. &42401:_m_DSave_DragASpriteInProgress%=
  1675. :_m_DSave_DragInProgress%=
  1676. :xA%=
  1677. shell_HeapBlockFetch(30):
  1678. &400CF,,xA%:_m_DSave_DestTaskHandle%=xA%!4:_m_DSave_DestWindowHandle%=xA%!&C:_m_DSave_DestIconHandle%=xA%!16:_m_DSave_MouseXCoord%=xA%!0:_m_DSave_MouseYCoord%=xA%!4:
  1679. _m_DSave_DataAddress%>&8000
  1680. 5MF%=
  1681. shell_HeapBlockInfo(_m_DSave_DataAddress%)-4
  1682. MF%=_m_DSave_DataAddress%
  1683. :yA%=
  1684. shell_HeapBlockFetch(60):yA%!0=60:yA%!&C=0:yA%!16=1:yA%!20=_m_DSave_DestWindowHandle%:yA%!24=_m_DSave_DestIconHandle%:yA%!28=_m_DSave_MouseXCoord%:yA%!32=_m_DSave_MouseXCoord%:yA%!36=MF%:yA%!40=_m_DSave_FileType%
  1685. $(yA%+44)=
  1686. shell_Leaf(_m_DSave_FileName$):
  1687. &400E7,18,yA%,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=yA%!8:
  1688. shell_HeapBlockReturn(xA%):
  1689. shell_HeapBlockReturn(yA%)
  1690. shell_DataSaveAck(JA%):
  1691. NF%,k%:NF%=JA%!&C:
  1692. shell_Tracef0("PROCshell_DataSaveAck: your_ref% is "+
  1693. (NF%)):
  1694. NF%=_m_DSave_MessageMyRef%
  1695. shell_Tracef0("PROCshell_DataSaveAck: Our DataSave Message from the last fileicon drag has been acknowledged"):
  1696. shell_Tracef0("PROCshell_DataSaveAck: so we can go ahead and save the file.."):_m_DSave_FullFileName$=
  1697. shell_GetString(JA%+44)
  1698. shell_Tracef0("PROCshell_DataSaveAck: full filename is : "+_m_DSave_FullFileName$):
  1699. _m_DSave_UserFN$<>""
  1700. ("FN"+_m_DSave_UserFN$+"( "+
  1701. 34+_m_DSave_FullFileName$+
  1702. 34+" )")
  1703. shell_Tracef0("PROCshell_DataSaveAck: no file saving routine specified for this event, so check if data is in a heapblock.."):
  1704. shell_HeapBlockExists(_m_DSave_DataAddress%)
  1705. 8,&A,_m_DSave_FullFileName$,_m_DSave_FileType%,,_m_DSave_DataAddress%,_m_DSave_DataAddress%+
  1706. shell_HeapBlockInfo(_m_DSave_DataAddress%)+1
  1707. shell_MessageNoArgs(_c_DSave_NotAHeapBlockMess$)
  1708. shell_Tracef0("PROCshell_DataSaveAck: file is 'secure'"):JA%!16=3:JA%!0=256:JA%!20=_m_DSave_DestWindowHandle%:JA%!24=_m_DSave_DestIconHandle%:JA%!40=_m_DSave_FileType%:JA%!36=
  1709. shell_FileLength(_m_DSave_FullFileName$):JA%!&C=JA%!8
  1710. $(JA%+44)=_m_DSave_FullFileName$+
  1711. &400E7,18,JA%,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=JA%!8:
  1712. _U%!80<>0
  1713. shell_HeapBlockReturn(_U%!80)
  1714. _U%!80=
  1715. shell_HeapBlockFetch(
  1716. _m_DSave_FullFileName$+1):$(_U%!80)=_m_DSave_FullFileName$:
  1717. Evnts_GetLastWindowClicked<>
  1718. shell_GetDynamicWindowHandle
  1719. shell_MenuCloseAll
  1720. shell_ListDataSave:
  1721. DataSave_SaveEvnts(u%):
  1722. shell_AckDataLoad(_Q%):
  1723. _Q%!&C<>_m_DSave_MessageMyRef%
  1724. shell_DataSaveDragInProgress:=_m_DSave_DragInProgress%:B
  1725. shell_Debug_Init:=0
  1726. shell_TraceOn:_U%!&64=_U%!&64
  1727. 1<<9:
  1728. shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
  1729. shell_TraceOff:
  1730. (_U%!&64
  1731. (1<<9))
  1732. _U%!&64=_U%!&64
  1733. (1<<9)
  1734. shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
  1735. shell_TraceInit(x$):
  1736. mA%,G$,D$:
  1737. x$<>""
  1738. (x$):_U%!44=mA%
  1739. shell_OSVarGetVal("Obey$Dir",1):G$=
  1740. shell_Leaf(D$),2):
  1741. shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+G$):
  1742. _U%!&64
  1743. _U%!&64=(_U%!&64
  1744. 1<<4)
  1745. shell_TraceIsOn:
  1746. _U%!&64
  1747. (1<<9)
  1748. shell_Tracef0(fA$):
  1749. shell_TraceIsOn=
  1750. _U%!44<>-1
  1751. mA%=_U%!44:
  1752. #mA%,fA$
  1753. _U%!&94>0
  1754. shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+fA$)
  1755. shell_Tracef2(DB%):
  1756. ("MEDIT "+
  1757. ~DB%):
  1758. shell_TraceExit:
  1759. _U%!44<>-1
  1760. #(_U%!44):_U%!44=-1
  1761. shell_Errors_Init:_m_ERRNR_NONFATAL%=&D00:_m_ERRNR_CLAIMMEM%=&903:
  1762. _m_ERRORS_ERR_BLK%256:=0
  1763. shell_Error:
  1764. MA%,CA$:
  1765. &606C2:
  1766. <>_m_ERRNR_NONFATAL%
  1767. <>_m_ERRNR_CLAIMMEM%
  1768. 1<<31)
  1769. shell_FatalError
  1770. shell_OSCheckVersion(3)
  1771. shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
  1772. ("Set Basic$File <"+
  1773. shell_GetAppName+"$BasicFile>"):
  1774. "Edit:ThrowBack"
  1775. shell_ErrorBox("Unexpected error:- "+
  1776. $+" (Internal error code "+
  1777. +")")
  1778. $:MA%=
  1779. $,"in "+
  1780. 34+"EvntShell:ShellLib"):
  1781. MA%>0
  1782. $,MA%-1)
  1783. =CA$+=" (Internal error code "+
  1784. +")":
  1785. shell_ErrorBox(CA$)
  1786. shell_OK(EB$):
  1787. _m_ERRNR_NONFATAL%,EB$
  1788. shell_FatalError:
  1789. &606C2:
  1790. shell_OSCheckVersion(3)
  1791. shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
  1792. 1<<31)
  1793. shell_Exit
  1794. ("Set Basic$File <"+
  1795. shell_GetAppName+"$BasicFile>"):
  1796. "Edit:ThrowBack"
  1797. shell_ErrorBox("Unexpected error:- "+
  1798. $+" Internal error code "+
  1799. shell_ErrorBox(AB$):
  1800. tB%:!_m_ERRORS_ERR_BLK%=
  1801. :$(_m_ERRORS_ERR_BLK%+4)=AB$+
  1802. =_m_ERRNR_NONFATAL%
  1803. =_m_ERRNR_CLAIMMEM%
  1804. &600DF,_m_ERRORS_ERR_BLK%,17,"XMessage from "+
  1805. shell_GetAppName
  1806. &600DF,_m_ERRORS_ERR_BLK%,1,
  1807. shell_GetAppName
  1808. _shell_Evnts_Init:_m_Evnts_HeaderSize%=8:_m_Evnts_LastEvntOffset%=-1:
  1809. _c_Evnts_WorkBuffer%256:
  1810. _c_Evnts_PaneBlk%&BB8:
  1811. _EVNTS_CLICKSELECT_ANCHOR%4:
  1812. _EVNTS_CLICKADJUST_ANCHOR%4:
  1813. _EVNTS_CLICKMENU_ANCHOR%4:
  1814. _EVNTS_HELPTAG_ANCHOR%4
  1815. _EVNTS_POPUPS_ANCHOR%4:
  1816. _EVNTS_PANES_ANCHOR%4:
  1817. _EVNTS_SLIDERS_ANCHOR%4:
  1818. _EVNTS_POINTERIN_ANCHOR%4:
  1819. _EVNTS_POINTEROUT_ANCHOR%4:
  1820. _EVNTS_DATASAVE_ANCHOR%4:
  1821. _EVNTS_REDRAW_ANCHOR%4:
  1822. _EVNTS_DRAG_ANCHOR%4:
  1823. _EVNTS_BUMP_ANCHOR%4:
  1824. _EVNTS_WINDOWOPEN_ANCHOR%4
  1825. _EVNTS_WINDOWCLOSE_ANCHOR%4:
  1826. _EVNTS_ICONWATCH_ANCHOR%4:
  1827. _EVNTS_MENUHELPTAG_ANCHOR%4:!_EVNTS_CLICKSELECT_ANCHOR%=0:!_EVNTS_CLICKADJUST_ANCHOR%=0:!_EVNTS_CLICKMENU_ANCHOR%=0:!_EVNTS_HELPTAG_ANCHOR%=0:!_EVNTS_POPUPS_ANCHOR%=0:!_EVNTS_SLIDERS_ANCHOR%=0
  1828. !_EVNTS_PANES_ANCHOR%=0:!_EVNTS_POINTERIN_ANCHOR%=0:!_EVNTS_POINTEROUT_ANCHOR%=0:!_EVNTS_DATASAVE_ANCHOR%=0:!_EVNTS_REDRAW_ANCHOR%=0:!_EVNTS_DRAG_ANCHOR%=0:!_EVNTS_BUMP_ANCHOR%=0:!_EVNTS_WINDOWOPEN_ANCHOR%=0:!_EVNTS_WINDOWCLOSE_ANCHOR%=0
  1829. !_EVNTS_ICONWATCH_ANCHOR%=0:!_EVNTS_MENUHELPTAG_ANCHOR%=0:
  1830. _EVNTS_CLICKSELECT_DATA%4:
  1831. _EVNTS_CLICKADJUST_DATA%4:
  1832. _EVNTS_CLICKMENU_DATA%4:
  1833. _EVNTS_HELPTAG_DATA%4:
  1834. _EVNTS_POPUPS_DATA%4:
  1835. _EVNTS_PANES_DATA%4:
  1836. _EVNTS_SLIDERS_DATA%4:
  1837. _EVNTS_POINTERIN_DATA%4
  1838. _EVNTS_POINTEROUT_DATA%4:
  1839. _EVNTS_DATASAVE_DATA%4:
  1840. _EVNTS_REDRAW_DATA%4:
  1841. _EVNTS_DRAG_DATA%4:
  1842. _EVNTS_BUMP_DATA%4:
  1843. _EVNTS_WINDOWOPEN_DATA%4:
  1844. _EVNTS_WINDOWCLOSE_DATA%4:
  1845. _EVNTS_ICONWATCH_DATA%4:
  1846. _EVNTS_MENUHELPTAG_DATA%4:!_EVNTS_CLICKSELECT_DATA%=0
  1847. !_EVNTS_CLICKADJUST_DATA%=0:!_EVNTS_CLICKMENU_DATA%=0:!_EVNTS_HELPTAG_DATA%=0:!_EVNTS_POPUPS_DATA%=0:!_EVNTS_PANES_DATA%=0:!_EVNTS_POINTERIN_DATA%=0:!_EVNTS_POINTEROUT_DATA%=0:!_EVNTS_DATASAVE_DATA%=0:!_EVNTS_REDRAW_DATA%=0:!_EVNTS_DRAG_DATA%=0
  1848. !_EVNTS_BUMP_DATA%=0:!_EVNTS_WINDOWOPEN_DATA%=0:!_EVNTS_WINDOWCLOSE_DATA%=0:!_EVNTS_SLIDERS_DATA%=0:!_EVNTS_ICONWATCH_DATA%=0:!_EVNTS_MENUHELPTAG_DATA%=0:_EVNTS_CLICKSELECT_REC_SIZE%=20:_EVNTS_CLICKADJUST_REC_SIZE%=20:_EVNTS_CLICKMENU_REC_SIZE%=24
  1849. _EVNTS_HELPTAG_REC_SIZE%=20:_EVNTS_POPUPS_REC_SIZE%=36:_EVNTS_PANES_REC_SIZE%=32:_EVNTS_POINTERIN_REC_SIZE%=20:_EVNTS_POINTEROUT_REC_SIZE%=20:_EVNTS_DATASAVE_REC_SIZE%=20:_EVNTS_REDRAW_REC_SIZE%=20:_EVNTS_DRAG_REC_SIZE%=28:_EVNTS_BUMP_REC_SIZE%=44
  1850. _EVNTS_SLIDERS_REC_SIZE%=40:_EVNTS_WINDOWOPEN_REC_SIZE%=20:_EVNTS_WINDOWCLOSE_REC_SIZE%=20:_EVNTS_ICONWATCH_REC_SIZE%=24:_EVNTS_MENUHELPTAG_REC_SIZE%=20:_EVNTS_CLICKSELECT_DATAOFFSET%=0:_EVNTS_CLICKADJUST_DATAOFFSET%=0:_EVNTS_CLICKMENU_DATAOFFSET%=0
  1851. _EVNTS_HELPTAG_DATAOFFSET%=0:_EVNTS_POPUPS_DATAOFFSET%=0:_EVNTS_PANES_DATAOFFSET%=0:_EVNTS_POINTERIN_DATAOFFSET%=0:_EVNTS_POINTEROUT_DATAOFFSET%=0:_EVNTS_DATASAVE_DATAOFFSET%=0:_EVNTS_REDRAW_DATAOFFSET%=0:_EVNTS_DRAG_DATAOFFSET%=0
  1852. _EVNTS_BUMP_DATAOFFSET%=0:_EVNTS_SLIDERS_DATAOFFSET%=0:_EVNTS_WINDOWOPEN_DATAOFFSET%=0:_EVNTS_WINDOWCLOSE_DATAOFFSET%=0:_EVNTS_ICONWATCH_DATAOFFSET%=0:_EVNTS_MENUHELPTAG_DATAOFFSET%=0:_EVNTS_LAST_MOUSEBUTTON%=0:_EVNTS_LAST_MOUSEXPOS%=0
  1853. _EVNTS_LAST_MOUSEYPOS%=0:_EVNTS_LAST_ICONCLICKED%=-1:_EVNTS_LAST_WINDOWCLICKED%=-1:_EVNTS_LAST_MENUMAKER_FN$="":_m_evnts_DestTaskHandle%=-1:_m_evnts_DestWindowHandle%=-1:_m_evnts_DestIconHandle%=-1:_m_evnts_MouseXCoord%=-1:_m_evnts_MouseYCoord%=-1
  1854. _m_evnts_DragIconStartWindow%=-1:_m_evnts_DragIconStartIcon%=-1:_m_evnts_DragIconWritableDrag%=
  1855. :_m_evnts_DragIconWinXMin%=0:_m_evnts_DragIconWinYMin%=0:_m_evnts_DragIconWinXMax%=0:_m_evnts_DragIconWinYMax%=0:_m_evnts_DragIconMouseX%=0
  1856. _m_evnts_DragIconMouseY%=0:_m_evnts_DragIconLastScrollUp%=0:_m_evnts_DragIconLastScrollDown%=0:_m_evnts_DragIconLastScrollLeft%=0:_m_evnts_DragIconLastScrollRight%=0:_m_evnts_DragIconLastDX%=0:_m_evnts_DragIconLastDY%=0:_m_evnts_DragIconMargin%=32
  1857. _m_evnts_UserDragInProgress%=
  1858. :_m_evnts_PopupMenuItemNr%=-1:_c_evnts_MaxIconWatchEvnts%=&64:
  1859. _c_evnts_CurrentContents$(_c_evnts_MaxIconWatchEvnts%-1):_c_evnts_CurrentContents$()="":=0
  1860. Evnts_GetPopMenuItemNr:=_m_evnts_PopupMenuItemNr%
  1861. Evnts_GetEvntListOffset(A$,g%,j%,y%,fD%):
  1862. KA%,f%,x%,a%,CB%,KB%:
  1863. A$="IconBar"
  1864. g%=-1:A$="iconbar"
  1865. :a%=0:
  1866. (!j%=0
  1867. @    a%=-2
  1868. A$=""
  1869. C    a%=-1
  1870. (!j%=0)
  1871. shell_HeapBlockFetch(y%+_m_Evnts_HeaderSize%):CB%=!j%:CB%!0=y%:CB%!4=1:$(CB%+_m_Evnts_HeaderSize%)="":
  1872. s%=&C
  1873. (y%-4)
  1874. 4:CB%!(s%+_m_Evnts_HeaderSize%)=-1:
  1875. s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
  1876. a%<>_m_Evnts_HeaderSize%
  1877. WYCB%=!j%:KA%=!CB%:f%=_m_Evnts_HeaderSize%:x%=
  1878. :a%=-1:aI%=-1:KB%=!j%:
  1879. ($(KB%+f%)=A$)
  1880. KB%!(f%+&C)=g%
  1881. a%=f%:x%=
  1882. f%+=y%
  1883. f%+=y%
  1884. ((f%>=(KA%+_m_Evnts_HeaderSize%))
  1885. (a%=-1
  1886. a%=KA%+_m_Evnts_HeaderSize%:!j%=
  1887. shell_HeapBlockExtend(!j%,y%):gB%=!j%:gB%!0+=y%:gB%!4+=1:gB%+=a%:$(gB%)="":
  1888. s%=&C
  1889. (y%-4)
  1890. 4:gB%!s%=-1:
  1891. :_m_Evnts_LastEvntOffset%=a%
  1892. Evnts_UpdateData(q%,IC%,
  1893. OA%,E$):
  1894. !q%=-1
  1895. Q!q%=OA%:!IC%=
  1896. shell_HeapBlockExtend(!IC%,
  1897. (E$)+1):$(!IC%+OA%)=E$:OA%+=
  1898. (E$)+1
  1899. t$=$(!IC%+!q%):
  1900. t$<>E$
  1901. (E$)<=
  1902. $(!IC%+!q%)=E$
  1903. !IC%=
  1904. shell_HeapBlockExtend(!IC%,
  1905. (E$)+1):$(!IC%+OA%)=E$:!q%=OA%:OA%+=
  1906. (E$)+1
  1907. Evnts_DebugListHeader(ZB$,UB$):
  1908. shell_AttachClickSelect(b%,g%,B$):
  1909. a%,c%,q%,A$:A$=
  1910. shell_GetWindowIdentifier(b%):
  1911. A$="iconbar"
  1912.     g%=-1
  1913. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1914. ):c%=!_EVNTS_CLICKSELECT_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1915. !_EVNTS_CLICKSELECT_DATA%=0
  1916. <!_EVNTS_CLICKSELECT_DATA%=
  1917. shell_HeapBlockFetch(
  1918. (B$)+1)
  1919. :q%=c%+16:
  1920. Evnts_UpdateData(q%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%,B$):
  1921. shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
  1922. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
  1923. shell_EvntHandle_ClickSelect(_window_handle%,_icon_handle%):
  1924. A$,a%,B$,j%,v%,i%,e$:A$=
  1925. shell_GetWindowIdentifier(_window_handle%):
  1926. A$="iconbar"
  1927. _icon_handle%=-1
  1928. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1929. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1930. a%>=0
  1931. j%=!_EVNTS_CLICKSELECT_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_CLICKSELECT_DATA%:B$=$(v%+FA%):k%=
  1932. ("FN"+B$+"( _window_handle%, _icon_handle% )"):
  1933. _icon_handle%=0
  1934. _window_handle%=_U%!20
  1935. shell_CloseWindow(_window_handle%)
  1936. _icon_handle%>=0
  1937. A$<>"iconbar"
  1938. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
  1939. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%)
  1940. shell_ListClickSelect:
  1941. KA%,r%,y%,f%,PA%,KB%:
  1942. g%,B$,IA%,s%:r%=!_EVNTS_CLICKSELECT_ANCHOR%:y%=_EVNTS_CLICKSELECT_REC_SIZE%:PA%=r%!4:
  1943. Evnts_DebugListHeader ("ClickSelect","Window         Icon   FN"):
  1944. f%=_m_Evnts_HeaderSize%:
  1945. PA%:A$=$(r%+f%):g%=r%!(f%+&C):IA%=!_EVNTS_CLICKSELECT_DATA%:
  1946. IA%>0
  1947. B$=$(IA%+r%!(f%+16))
  1948. :f%+=_EVNTS_CLICKSELECT_REC_SIZE%:
  1949. shell_AttachClickAdjust(b%,g%,B$):
  1950. a%,c%,A$:A$=
  1951. shell_GetWindowIdentifier(b%):
  1952. A$="iconbar"
  1953. >    g%=-1
  1954. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1955. ):c%=!_EVNTS_CLICKADJUST_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1956. !_EVNTS_CLICKADJUST_DATA%=0
  1957. I<!_EVNTS_CLICKADJUST_DATA%=
  1958. shell_HeapBlockFetch(
  1959. (B$)+1)
  1960. :q%=c%+16:
  1961. Evnts_UpdateData(q%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%,B$):
  1962. shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
  1963. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
  1964. shell_EvntHandle_ClickAdjust(_window_handle%,_icon_handle%):
  1965. A$,a%,B$,j%,v%:A$=
  1966. shell_GetWindowIdentifier(_window_handle%):
  1967. A$="iconbar"
  1968. _icon_handle%=-1
  1969. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1970. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1971. a%>=0
  1972. j%=!_EVNTS_CLICKADJUST_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_CLICKADJUST_DATA%:B$=$(v%+FA%):k%=
  1973. ("FN"+B$+"(_window_handle%,_icon_handle%)")
  1974. _window_handle%>0
  1975. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%)
  1976. shell_ListClickAdjust:
  1977. KA%,r%,y%,f%,PA%,KB%:
  1978. g%,B$,IA%,s%:r%=!_EVNTS_CLICKADJUST_ANCHOR%:y%=_EVNTS_CLICKADJUST_REC_SIZE%:PA%=r%!4:
  1979. Evnts_DebugListHeader ("ClickAdjust","Window         Icon   FN"):
  1980. f%=_m_Evnts_HeaderSize%:
  1981. PA%:A$=$(r%+f%):g%=r%!(f%+&C):IA%=!_EVNTS_CLICKADJUST_DATA%:
  1982. IA%>0
  1983. B$=$(IA%+r%!(f%+16))
  1984. :f%+=_EVNTS_CLICKADJUST_REC_SIZE%:
  1985. shell_AttachMenu(b%,g%,p%,tC%,wC%,bD%):
  1986. a%,c%,A$,wF%:
  1987. shell_IsWindowStatic(b%)=
  1988. shell_OK(
  1989. shell_MessageNoArgs("SHELLMSG30"))
  1990. shell_GetWindowIdentifier(b%):W$=
  1991. shell_MenuList_GetIdentifier(p%):
  1992. A$="iconbar"
  1993.     g%=-1
  1994. g%>=0
  1995. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK):
  1996. shell_EvntAdd_PopUpMenu(A$,g%,-1,p%,"","",_POPUP_TYPE_TEXT)
  1997. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1998. a%>=0
  1999.     wF%=
  2000. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  2001. ):c%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  2002. !_EVNTS_CLICKMENU_DATA%=0
  2003. 4!_EVNTS_CLICKMENU_DATA%=
  2004. shell_HeapBlockFetch(1)
  2005. :q%=c%+16:
  2006. Evnts_UpdateData(q%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,W$):
  2007. Yq%=c%+20:
  2008. Evnts_UpdateData(q%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,"")
  2009. shell_AttachPopupMenu(d%,hC%,zC%,AA%,a$,X$):
  2010. hC%>=0
  2011. shell_IconSetButtonType(d%,hC%,_BUTTON_TYPE_CLICK)
  2012. shell_EvntAdd_PopUpMenu(
  2013. shell_GetWindowIdentifier(d%),hC%,zC%,AA%,a$,X$,_POPUP_TYPE_TEXT):
  2014. shell_EvntHandle_ClickMenu(_window_handle%,_icon_handle%):
  2015. A$,a%,j%,dH%,c$,IG%,k%:
  2016. _C%:A$=
  2017. shell_GetWindowIdentifier(_window_handle%):
  2018. A$="iconbar"
  2019. _icon_handle%=-1
  2020. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  2021. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  2022. a%>=0
  2023. j%=!_EVNTS_CLICKMENU_ANCHOR%+a%:_C%=j%!16:dH%=j%!20:IG%=!_EVNTS_CLICKMENU_DATA%:p%=
  2024. shell_MenuList_GetSysHandle($(IG%+_C%)):c$=$(IG%+dH%):_EVNTS_LAST_MENUMAKER_FN$=c$:
  2025. c$<>""
  2026. ("FN"+c$+"( "+
  2027. _window_handle%+", "+
  2028. _icon_handle%+" )")
  2029. shell_OpenMenu(_Q%!0,_Q%!4,p%)
  2030. _window_handle%>0
  2031. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%)
  2032. shell_ListClickMenu:
  2033. KA%,r%,y%,f%,PA%,KB%,p%:
  2034. g%,s%,c$:r%=!_EVNTS_CLICKMENU_ANCHOR%:y%=_EVNTS_CLICKMENU_REC_SIZE%:PA%=r%!4:
  2035. Evnts_DebugListHeader ("ClickMenu  ","Window         Icon   Menu handle  Maker FN"):
  2036. f%=_m_Evnts_HeaderSize%:
  2037. PA%:A$=$(r%+f%):g%=r%!(f%+&C):p%=r%!(f%+16):IA%=!_EVNTS_CLICKMENU_DATA%:
  2038. IA%>0
  2039. c$=$(IA%+r%!(f%+20))
  2040. c$="None"
  2041. :f%+=_EVNTS_CLICKMENU_REC_SIZE%:
  2042. shell_AttachMenuMaker(b%,g%,p%,c$):
  2043. a%,c%,A$,q%:
  2044. shell_AttachMenu(b%,g%,p%,0,0,0):A$=
  2045. shell_GetWindowIdentifier(b%):
  2046. A$="iconbar"
  2047. @    g%=-1
  2048. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  2049. a%=-1
  2050. 99,"MenuMaker offset not found.."
  2051. HCc%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:
  2052. !_EVNTS_CLICKMENU_DATA%=0
  2053. L:!_EVNTS_CLICKMENU_DATA%=
  2054. shell_HeapBlockFetch(
  2055. (c$)+1)
  2056. :q%=c%+20:
  2057. Evnts_UpdateData(q%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,c$):
  2058. shell_AttachHelpTag(b%,g%,Z$):
  2059. a%,c%,A$:A$=
  2060. shell_GetWindowIdentifier(b%):
  2061. A$="iconbar"
  2062. g    g%=-1
  2063. Evnts_GetEvntListOffset(A$,g%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
  2064. ):c%=!_EVNTS_HELPTAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  2065. !_EVNTS_HELPTAG_DATA%=0
  2066. q8!_EVNTS_HELPTAG_DATA%=
  2067. shell_HeapBlockFetch(
  2068. (Z$)+1)
  2069. :q%=c%+16:
  2070. Evnts_UpdateData(q%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%,Z$):
  2071. shell_EvntHandle_HelpTags(_window_handle%,_icon_handle%,
  2072. A$,a%,j%,AD%,BD%,AE%:
  2073. n%,RG%,f%,GJ%,c%:A$=
  2074. shell_GetWindowIdentifier(_window_handle%):
  2075. A$="iconbar"
  2076. _icon_handle%=-1
  2077. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
  2078. a%>=0
  2079. shell_EvntHandle_AttachedHelp(a%)
  2080. shell_HeapBlockFetch(96):
  2081. &600F4,1,AE%,_window_handle%,_icon_handle%
  2082. n%<>1
  2083. _window_handle%<>
  2084. shell_GetDynamicWindowHandle
  2085. shell_WindowHandleKnown(_window_handle%)
  2086. shell_EvntHandle_MenuHelp(AE%)
  2087. shell_HeapBlockReturn(AE%)
  2088. shell_ListHelpTags:
  2089. KA%,r%,y%,f%,PA%,KB%,B$:
  2090. g%,IA%,s%:r%=!_EVNTS_HELPTAG_ANCHOR%:y%=_EVNTS_HELPTAG_REC_SIZE%:PA%=r%!4:
  2091. Evnts_DebugListHeader ("HelpTag ","Window         Icon   Help tag"):
  2092. f%=_m_Evnts_HeaderSize%:
  2093. PA%:A$=$(r%+f%):g%=r%!(f%+&C):IA%=!_EVNTS_HELPTAG_DATA%:
  2094. IA%>0
  2095. B$=$(IA%+r%!(f%+16))
  2096. :f%+=_EVNTS_HELPTAG_REC_SIZE%:
  2097. shell_AttachMenuHelpTag(W$,DI%,J$):
  2098. a%,c%,q%:a%=
  2099. Evnts_GetEvntListOffset("menu",DI%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
  2100. ):c%=!_EVNTS_MENUHELPTAG_ANCHOR%:c%+=a%:$c%="menu":c%!&C=DI%:
  2101. !_EVNTS_MENUHELPTAG_DATA%=0
  2102. <!_EVNTS_MENUHELPTAG_DATA%=
  2103. shell_HeapBlockFetch(
  2104. (J$)+1)
  2105. :q%=c%+16:
  2106. Evnts_UpdateData(q%,_EVNTS_MENUHELPTAG_DATA%,_EVNTS_MENUHELPTAG_DATAOFFSET%,J$):
  2107. shell_AttachPane(b%,
  2108. BE%,n%,FB%,GB%):
  2109. a%,c%,cA%,A$,S$,PB%:A$=
  2110. shell_GetWindowIdentifier(b%):S$=
  2111. shell_GetWindowIdentifier(BE%):cA%=0:PB%=
  2112. shell_WindowGetFlags(BE%):
  2113. 1<<5)=0
  2114. shell_WindowToggleFlags(BE%,1<<5)
  2115. 1<<1)
  2116. shell_WindowToggleFlags(BE%,1<<1)
  2117. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2118. )>-1:cA%+=1:
  2119. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2120. ):c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:$c%=A$:c%!&C=cA%:c%!20=n%:c%!24=FB%
  2121. %c%!28=GB%:
  2122. !_EVNTS_PANES_DATA%=0
  2123. 6!_EVNTS_PANES_DATA%=
  2124. shell_HeapBlockFetch(
  2125. (S$)+1)
  2126. :q%=c%+16:
  2127. Evnts_UpdateData(q%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%,S$):
  2128. shell_PaneSetVisibility(CD%,DD%,bJ%):
  2129. A$,S$,cA%,a%:A$=
  2130. shell_GetWindowIdentifier(CD%):S$=
  2131. shell_GetWindowIdentifier(DD%):cA%=0:
  2132. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2133. )=-1:cA%+=1:
  2134. &]a%=
  2135. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2136. a%>=0
  2137. (+c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:
  2138. c%!20=c%!20
  2139. (1<<8)
  2140. c%!20=c%!20
  2141. (1<<8)
  2142. shell_HidePane(CD%,DD%):
  2143. shell_PaneSetVisibility(CD%,DD%,
  2144. shell_CloseWindow(DD%):
  2145. shell_ShowPane(CD%,DD%):
  2146. shell_PaneSetVisibility(CD%,DD%,
  2147. shell_OpenWindow(CD%,0,
  2148. shell_ListPanes:
  2149. KA%,r%,y%,f%,PA%,S$:
  2150. IA%,s%,NB$,QB$:r%=!_EVNTS_PANES_ANCHOR%:y%=_EVNTS_PANES_REC_SIZE%:PA%=r%!4:
  2151. Evnts_DebugListHeader ("Pane ","Window         Pane name   X Pos   Y Pos"):
  2152. f%=_m_Evnts_HeaderSize%:
  2153. PA%:A$=$(r%+f%):IA%=!_EVNTS_PANES_DATA%:
  2154. IA%>0
  2155. S$=$(IA%+r%!(f%+16))
  2156. :NB$=
  2157. shell_StringPadTrailing(
  2158. (r%!(f%+24))," ",8):QB$=
  2159. shell_StringPadTrailing(
  2160. (r%!(f%+28))," ",6):f%+=_EVNTS_PANES_REC_SIZE%:
  2161. shell_EvntAdd_WindowOpen(A$,B$):
  2162. a%,c%:a%=
  2163. Evnts_GetEvntListOffset(A$,-1,"WINDOWOPEN",
  2164. ):c%=!_EVNTS_WINDOWOPEN_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
  2165. !_EVNTS_WINDOWOPEN_DATA%=0
  2166. |;!_EVNTS_WINDOWOPEN_DATA%=
  2167. shell_HeapBlockFetch(
  2168. (B$)+1)
  2169. :q%=c%+16:
  2170. Evnts_UpdateData(q%,_EVNTS_WINDOWOPEN_DATA%,_EVNTS_WINDOWOPEN_DATAOFFSET%,B$):
  2171. shell_OpenWindow(_window_handle%,XG%,gD%):
  2172. a%,aH%,aB%,VA%,hA%:
  2173. ED%,LH%,UH%:
  2174. A$,j%,FA%,v%:
  2175. B$,k%,cA%,iC%,PB%,FD%:
  2176. hD%,CA%,KC%,sE%:
  2177. aG%:A$=
  2178. shell_GetWindowIdentifier(_window_handle%):aB%=_Q%!28
  2179. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWOPEN_ANCHOR%,_EVNTS_WINDOWOPEN_REC_SIZE%,
  2180. a%>=0
  2181. pj%=!_EVNTS_WINDOWOPEN_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_WINDOWOPEN_DATA%:B$=$(v%+FA%):k%=
  2182. ("FN"+B$+"("+A$+")")
  2183. :ED%=
  2184. :_c_WindowsGetStateBlk%!0=_window_handle%:
  2185. &400CB,,_c_WindowsGetStateBlk%:
  2186. (_c_WindowsGetStateBlk%!32
  2187. &80000)=&80000
  2188. &400CF,,_c_WindowsGetPInfoBlk%:_Q%!0=_window_handle%:
  2189. &400CB,,_Q%
  2190. &400C5,,_Q%
  2191. :iC%=
  2192. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2193. a%>=0
  2194. !_Q%!0=_window_handle%:
  2195. gD%>0
  2196. aB%=gD%
  2197. aB%=-1
  2198. aB%=_Q%!28
  2199. &400C5,,_Q%:
  2200. &400CB,,_Q%:
  2201. &400C6,,_Q%
  2202. :cA%=0:
  2203. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2204. )>-1:a%=_m_Evnts_LastEvntOffset%:j%=!_EVNTS_PANES_ANCHOR%+a%:jC%=j%!16:v%=!_EVNTS_PANES_DATA%:S$=$(v%+jC%):PB%=j%!20:sE%=
  2205. :FD%=j%!24:hD%=j%!28:
  2206. (1<<8)
  2207. :PB%=PB%
  2208. (1<<8)
  2209. :CA%=
  2210. shell_GetWindowHandleList(S$):KC%=!CA%:_c_Evnts_PaneBlk%!0=KC%:
  2211. aH%=0
  2212. aH%=_c_Evnts_PaneBlk%!0
  2213. {LH%=_c_Evnts_PaneBlk%!0:
  2214. &400CB,,_c_Evnts_PaneBlk%:
  2215. _c_WindowsGetPInfoBlk%!16=-9
  2216. _c_WindowsGetPInfoBlk%!16>-5
  2217. 0,1:VA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:hA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+FD%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+hA%:_c_Evnts_PaneBlk%!16=_Q%!16+hD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-VA%
  2218. 2:VA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:hA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+FD%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!16+hD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-VA%
  2219. 3:VA%=_Q%!16-_Q%!8:hA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+FD%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+hA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8+hD%
  2220. 4:VA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:hA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+FD%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!8+VA%+hD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16+VA%
  2221. 5:VA%=_Q%!16-_Q%!8:hA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!&C-hA%+FD%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+hA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8
  2222. :aG%=_c_Evnts_PaneBlk%!28:
  2223. cA%=0
  2224. _c_Evnts_PaneBlk%!28=aB%
  2225. _c_Evnts_PaneBlk%!28=UH%
  2226. &400C5,,_c_Evnts_PaneBlk%
  2227. _c_Evnts_PaneBlk%!0=aG%
  2228. :UH%=_c_Evnts_PaneBlk%!0:cA%+=1:
  2229. _Q%!28=LH%:
  2230. &400C5,,_Q%
  2231. _Q%!0=_window_handle%:
  2232. &400CB,,_Q%
  2233. aB%=-2
  2234. _Q%!28=-2
  2235. gD%=-1
  2236. _Q%!28=-1
  2237. &400C5,,_Q%
  2238. shell_AttachCloseWindowHandler(b%,B$):
  2239. a%,c%,A$:A$=
  2240. shell_GetWindowIdentifier(b%):a%=
  2241. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
  2242. ):c%=!_EVNTS_WINDOWCLOSE_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1
  2243. !_EVNTS_WINDOWCLOSE_DATA%=0
  2244. =<!_EVNTS_WINDOWCLOSE_DATA%=
  2245. shell_HeapBlockFetch(
  2246. (B$)+1)
  2247. :q%=c%+16:
  2248. Evnts_UpdateData(q%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%,B$):
  2249. shell_EvntHandle_WindowClose(_window_handle%):
  2250. A$,a%,B$,j%,v%,tE%:A$=
  2251. shell_GetWindowIdentifier(_window_handle%):a%=
  2252. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
  2253. ):tE%=
  2254. a%>=0
  2255. Rbj%=!_EVNTS_WINDOWCLOSE_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_WINDOWCLOSE_DATA%:B$=$(v%+FA%):
  2256. B$<>""
  2257. Y.tE%=
  2258. ("FN"+B$+"("+
  2259. (_window_handle%)+" )")
  2260. shell_CloseWindow(_window_handle%)
  2261. shell_AttachDrag(b%,g%,B$):
  2262. a%,c%,q%,A$:A$=
  2263. shell_GetWindowIdentifier(b%):a%=
  2264. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  2265. ):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  2266. !_EVNTS_DRAG_DATA%=0
  2267. 5!_EVNTS_DRAG_DATA%=
  2268. shell_HeapBlockFetch(
  2269. (B$)+1)
  2270. :q%=c%+16:
  2271. Evnts_UpdateData(q%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
  2272. shell_AttachUserRedraw(
  2273. b%,B$):
  2274. a%,c%,q%,e%,mA%:e%=
  2275. shell_HeapBlockFetch(36):!e%=b%:
  2276. &400CB,,e%:mA%=e%!32:
  2277. shell_HeapBlockReturn(e%):
  2278. shell_Tracef0("AttachUserRedraw:flag% = &"+
  2279. ~mA%):
  2280. 1<<4)
  2281. shell_Tracef0("AttachUserRedraw:auto redraw set!!"):
  2282. shell_WindowToggleFlags(b%,1<<4)
  2283. shell_GetWindowIdentifier(b%):
  2284. shell_Tracef0("AttachUserRedraw:window name is : "+A$):a%=
  2285. Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
  2286. ):c%=!_EVNTS_REDRAW_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
  2287. !_EVNTS_REDRAW_DATA%=0
  2288. 7!_EVNTS_REDRAW_DATA%=
  2289. shell_HeapBlockFetch(
  2290. (B$)+1)
  2291. :q%=c%+16:
  2292. Evnts_UpdateData(q%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%,B$):
  2293. shell_EvntHandle_Redraw(_window_handle%,e%,eA%,lA%):
  2294. A$,a%,B$,j%,v%,k%:A$=
  2295. shell_GetWindowIdentifier(_window_handle%):a%=
  2296. Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
  2297. a%>=0
  2298. Xj%=!_EVNTS_REDRAW_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_REDRAW_DATA%:B$=$(v%+FA%):
  2299. B$<>""
  2300. ("FN"+B$+"("+
  2301. e%+","+
  2302. eA%+","+
  2303. lA%+")")
  2304. shell_ListRedraw:
  2305. KA%,r%,y%,f%,PA%,B$,A$:
  2306. IA%,s%:r%=!_EVNTS_REDRAW_ANCHOR%:y%=_EVNTS_REDRAW_REC_SIZE%:PA%=r%!4:
  2307. Evnts_DebugListHeader ("Redraw ","Window       User FN"):
  2308. f%=_m_Evnts_HeaderSize%:
  2309. PA%:A$=$(r%+f%):IA%=!_EVNTS_REDRAW_DATA%:
  2310. IA%>0
  2311. B$=$(IA%+r%!(f%+16))
  2312. :f%+=_EVNTS_REDRAW_REC_SIZE%:
  2313. shell_AttachIconWatch(b%,g%,B$):
  2314. a%,c%,q%,A$,l$:A$=
  2315. shell_GetWindowIdentifier(b%):a%=
  2316. Evnts_GetEvntListOffset(A$,g%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_REC_SIZE%,
  2317. ):c%=!_EVNTS_ICONWATCH_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%
  2318. !_EVNTS_ICONWATCH_DATA%=0
  2319. :!_EVNTS_ICONWATCH_DATA%=
  2320. shell_HeapBlockFetch(
  2321. (B$)+1)
  2322. :q%=c%+16:
  2323. Evnts_UpdateData(q%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%,B$):l$=
  2324. shell_IconGetData(b%,g%):xG%=(a%-
  2325. Evnts_GetHeaderSize)
  2326. _EVNTS_ICONWATCH_REC_SIZE%:
  2327. xG%>_c_evnts_MaxIconWatchEvnts%
  2328. 99,"Sorry, too many IconWatch events attached (max "+
  2329. (_c_evnts_MaxIconWatchEvnts%)+")"
  2330. _c_evnts_CurrentContents$(xG%)=l$
  2331. shell_EvntHandle_IconWatch:
  2332. j%,y%,bA%,f%,s%,g%,A$,mJ%:
  2333. CA%,b%,l$,iA$,B$,FA%:
  2334. v%,q%:j%=!_EVNTS_ICONWATCH_ANCHOR%:y%=_EVNTS_ICONWATCH_REC_SIZE%:bA%=j%!4:
  2335. f%=_m_Evnts_HeaderSize%:
  2336. bA%:A$=$(j%+f%):g%=j%!(f%+&C):FA%=j%!(f%+16):v%=!_EVNTS_ICONWATCH_DATA%:B$=$(v%+FA%):iA$=_c_evnts_CurrentContents$( (f%-
  2337. Evnts_GetHeaderSize)
  2338. _EVNTS_ICONWATCH_REC_SIZE%):CA%=
  2339. shell_GetWindowHandleList(A$):
  2340. CA%<>-1
  2341. =0m%=0:
  2342. :b%=CA%!m%:
  2343. shell_WindowIsOpen(b%)=
  2344. A1l$=
  2345. shell_IconGetData(b%,g%):
  2346. B$<>""
  2347. l$<>iA$
  2348. F~k%=
  2349. ("FN"+B$+"( "+
  2350. (34)+l$+
  2351. (34)+" )"):_c_evnts_CurrentContents$( (f%-
  2352. Evnts_GetHeaderSize)
  2353. _EVNTS_ICONWATCH_REC_SIZE%)=l$
  2354. :m%+=4:
  2355. CA%!m%=-1
  2356. :f%+=_EVNTS_ICONWATCH_REC_SIZE%:
  2357. shell_ListIconWatch:
  2358. KA%,r%,y%,f%,PA%,B$,A$:
  2359. IA%,s%:r%=!_EVNTS_ICONWATCH_ANCHOR%:y%=_EVNTS_ICONWATCH_REC_SIZE%:PA%=r%!4:
  2360. Evnts_DebugListHeader ("IconWatch ","Window       User FN"):
  2361. f%=_m_Evnts_HeaderSize%:
  2362. PA%:A$=$(r%+f%):IA%=!_EVNTS_ICONWATCH_DATA%:
  2363. IA%>0
  2364. B$=$(IA%+r%!(f%+16))
  2365. :f%+=_EVNTS_ICONWATCH_REC_SIZE%:
  2366. shell_AttachUserDrag(b%,g%,B$):
  2367. a%,c%,q%,A$,l$:A$=
  2368. shell_GetWindowIdentifier(b%):a%=
  2369. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  2370. ):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  2371. !_EVNTS_DRAG_DATA%=0
  2372. 5!_EVNTS_DRAG_DATA%=
  2373. shell_HeapBlockFetch(
  2374. (B$)+1)
  2375. :q%=c%+16:
  2376. Evnts_UpdateData(q%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
  2377. shell_EvntHandle_UserDrag(b%):
  2378. a%,g%,j%,FA%,v%:
  2379. QB%,WA%,XA%,A$,vJ%:
  2380. vE%:vE%=
  2381. :g%=-1:A$=
  2382. shell_GetWindowIdentifier(b%):a%=
  2383. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  2384. a%>=0
  2385. j%=!_EVNTS_DRAG_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_DRAG_DATA%:_m_Drag_CurrentFN$=$(v%+FA%):_m_Drag_CurrentWindow$=A$:_m_Drag_CurrentWindowHandle%=b%:QB%=
  2386. shell_HeapBlockFetch(40):QB%!0=b%:QB%!4=6:
  2387. shell_PointerGetPosition(WA%,XA%):QB%!8=WA%:QB%!&C=XA%
  2388. QB%!16=WA%:QB%!20=XA%:
  2389. shell_WindowGetPosition(b%,_m_evnts_UserDrag_win_xmin%,_m_evnts_UserDrag_win_ymin%,_m_evnts_UserDrag_win_xmax%,_m_evnts_UserDrag_win_ymax%):QB%!24=_m_evnts_UserDrag_win_xmin%:QB%!28=_m_evnts_UserDrag_win_ymin%
  2390. QB%!32=_m_evnts_UserDrag_win_xmax%:QB%!36=_m_evnts_UserDrag_win_ymax%:
  2391. &400D0,,QB%:_m_evnts_UserDragInProgress%=
  2392. shell_HeapBlockReturn(QB%):vE%=
  2393. :=vE%
  2394. shell_Evnts_UserDragEnd(EE%,FE%,yE%,zE%):
  2395. _E%,AF%,rH%,sH%:
  2396. k%:_m_evnts_UserDragInProgress%=
  2397. yE%<EE%
  2398. yE%,EE%
  2399. zE%<FE%
  2400. zE%,FE%
  2401. :_E%=EE%-_m_evnts_UserDrag_win_xmin%:AF%=FE%-_m_evnts_UserDrag_win_ymax%:rH%=_E%+(yE%-EE%):sH%=AF%+(zE%-FE%):k%=
  2402. ("FN"+_m_Drag_CurrentFN$+"("+
  2403. (_m_Drag_CurrentWindowHandle%)+","+
  2404. (_E%)+","+
  2405. (AF%)+","+
  2406. (rH%)+","+
  2407. (sH%)+","+
  2408. (_m_Drag_AdjustUsed%)+")")
  2409. shell_EvntHandle_ClickDrag(b%,g%,lJ%,CJ%):
  2410. GE%,i%:GE%=
  2411. shell_IconIsDraggable(
  2412. Evnts_GetLastWindowClicked,
  2413. Evnts_GetLastIconClicked):
  2414. shell_EvntHandle_UserDragStartDrag(
  2415. Evnts_GetLastWindowClicked,
  2416. Evnts_GetLastIconClicked):
  2417. shell_EvntHandle_DataSaveStartDrag(
  2418. Evnts_GetLastWindowClicked,
  2419. Evnts_GetLastIconClicked)
  2420. shell_HandleSlider(
  2421. Evnts_GetLastWindowClicked,
  2422. Evnts_GetLastIconClicked):GE%=
  2423. CJ%=_MSE_ADJUSTBUT
  2424. _m_Drag_AdjustUsed%=
  2425. _m_Drag_AdjustUsed%=
  2426. :GE%=
  2427. shell_EvntHandle_UserDrag(b%)
  2428. shell_EvntHandle_UserDragStartDrag(b%,g%):
  2429. FA%,v%,A$,a%:A$=
  2430. shell_GetWindowIdentifier(b%):a%=
  2431. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  2432. a%>=0
  2433. shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%
  2434. shell_IconWritableDragStatus=
  2435. shell_IconIsWritable(b%,g%)
  2436. shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%:_m_evnts_DragIconWritableDrag%=
  2437. shell_WindowGetPosition(b%,_m_evnts_DragIconWinXMin%,_m_evnts_DragIconWinYMin%,_m_evnts_DragIconWinXMax%,_m_evnts_DragIconWinYMax%):
  2438. shell_PointerGetPosition(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%)
  2439. shell_EvntHandle_UserDragEnd:
  2440. xA%,A$,a%,j%,FA%,v%:
  2441. k%,B$,OA$,gA$,iD%,BF%:A$=
  2442. shell_GetWindowIdentifier(_m_evnts_DragIconStartWindow%):a%=
  2443. Evnts_GetEvntListOffset(A$,_m_evnts_DragIconStartIcon%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  2444. shell_HeapBlockFetch(30):
  2445. &400CF,,xA%:_m_evnts_MouseXCoord%=xA%!0:_m_evnts_MouseYCoord%=xA%!4:_m_evnts_DestWindowHandle%=xA%!&C:_m_evnts_DestIconHandle%=xA%!16:
  2446. shell_HeapBlockReturn(xA%):
  2447. a%>=0
  2448. j%=!_EVNTS_DRAG_ANCHOR%+a%:FA%=j%!16:v%=!_EVNTS_DRAG_DATA%:B$=$(v%+FA%):k%=
  2449. ("FN"+B$+"("+
  2450. _m_evnts_DestTaskHandle%+","+
  2451. _m_evnts_DestWindowHandle%+","+
  2452. _m_evnts_DestIconHandle%+","+
  2453. _m_evnts_MouseXCoord%+","+
  2454. _m_evnts_MouseYCoord%+")")
  2455. _m_evnts_DragIconWritableDrag%=
  2456. _m_evnts_DragIconWritableDrag%=
  2457. shell_IconIsWritable(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%)
  2458. shell_WindowHandleKnown(_m_evnts_DestWindowHandle%)
  2459. shell_IconGetData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%):gA$=
  2460. shell_IconGetData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%):
  2461. shell_IconPutData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%,"",
  2462. (_m_evnts_DestWindowHandle%<>_m_evnts_DragIconStartWindow%)
  2463. L    iD%=
  2464. (_m_evnts_DestIconHandle%<>_m_evnts_DragIconStartIcon%)
  2465. R    BF%=
  2466. (iD%=
  2467. (iD%=
  2468. shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,gA$+OA$,
  2469. shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,OA$,
  2470. shell_EvntAdd_PopUpMenu(A$,MC%,SA%,p%,T$,X$,HE%):
  2471. a%,c%,W$:a%=
  2472. Evnts_GetEvntListOffset(A$,MC%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  2473. ):c%=!_EVNTS_POPUPS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=MC%:c%!20=SA%:c%!24=HE%:
  2474. !_EVNTS_POPUPS_DATA%=0
  2475. 7!_EVNTS_POPUPS_DATA%=
  2476. shell_HeapBlockFetch(
  2477. (W$)+1)
  2478. T$<>""
  2479. Sq%=c%+16:
  2480. Evnts_UpdateData(q%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,T$)
  2481. c%!16=-1
  2482. shell_MenuList_GetIdentifier(p%):
  2483. W$<>""
  2484. Sq%=c%+28:
  2485. Evnts_UpdateData(q%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,W$)
  2486. X$<>""
  2487. !_EVNTS_POPUPS_DATA%=0
  2488. 7!_EVNTS_POPUPS_DATA%=
  2489. shell_HeapBlockFetch(
  2490. (X$)+1)
  2491. :q%=c%+32:
  2492. Evnts_UpdateData(q%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,X$)
  2493. c%!32=-1
  2494. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
  2495. A$,a%,v%,OA%,j%,_B%,p%:
  2496. KK%,T$,X$,k%,W$:A$=
  2497. shell_GetWindowIdentifier(_window_handle%):a%=
  2498. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  2499. a%>=0
  2500. wj%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=j%!16:v%=!_EVNTS_POPUPS_DATA%:MC%=j%!&C:SA%=j%!20:_B%=j%!24:
  2501. _B%=_POPUP_TYPE_TEXT
  2502. OA%=j%!28:
  2503. OA%>=0
  2504. W$=$(v%+OA%)
  2505. shell_MenuList_GetSysHandle(W$)
  2506. W$="":p%=0
  2507. OA%>=0
  2508. T$=$(v%+OA%)
  2509. :OA%=j%!32:
  2510. OA%>=0
  2511. +X$=$(v%+OA%):
  2512. _B%=_POPUP_TYPE_FONTMENU
  2513. ("FN"+X$+"("+
  2514. shell_FontMenu_GetHandle)+")")
  2515. ("FN"+X$+"("+
  2516. (p%)+")")
  2517. _POPUP_TYPE_TEXT:
  2518. shell_HandleMenuOpen(_Q%,p%,_window_handle%,_icon_handle%,
  2519. _POPUP_TYPE_WIMPCOLOUR:
  2520. _m_WimpColMen_Handle%=-1
  2521. &45BCF,,"",T$
  2522. _m_WimpColMen_Handle%
  2523. shell_HandleMenuOpen(_Q%,_m_WimpColMen_Handle%,_window_handle%,_icon_handle%,
  2524. _POPUP_TYPE_COLOUR24:
  2525. shell_ColourPickerOpen(_window_handle%,SA%,MC%,T$,X$)
  2526. _POPUP_TYPE_FONTMENU:
  2527. shell_FontMenu_ShowMenu(_Q%,_window_handle%,_icon_handle%,
  2528. _POPUP_TYPE_FONTPICK:
  2529. shell_FontPickerOpen(_window_handle%,SA%,MC%,T$,X$)
  2530. _POPUP_TYPE_DATEPICK:
  2531. shell_DatePickerOpen(_window_handle%,SA%,MC%,T$)
  2532. 99,"Unknown popup type detected!"
  2533. shell_EvntHandle_PopupMenuSelection(b%,g%,AC%):
  2534. _item_text$,A$,a%,j%,OA%,v%:
  2535. MC%,SA%,_B%,p%,i%,a$:A$=
  2536. shell_GetWindowIdentifier(b%):a%=
  2537. Evnts_GetEvntListOffset(A$,g%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  2538. a%>=0
  2539. j%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=j%!16:v%=!_EVNTS_POPUPS_DATA%:MC%=j%!&C:SA%=j%!20:_B%=j%!24:p%=j%!28:
  2540. _B%=_POPUP_TYPE_FONTMENU
  2541. _item_text$=""
  2542. _item_text$=
  2543. shell_MenuGetItemText(p%,!AC%)
  2544. :i%=0:
  2545. OA%<>-1
  2546. ?a$=$(v%+OA%):i%=
  2547. ("FN"+a$+"("+
  2548. b%+","+
  2549. SA%+",_item_text$)")
  2550. i%<>0
  2551. OA%=-1
  2552. SA%>=0
  2553. _POPUP_TYPE_TEXT:
  2554. shell_IconPutData(b%,SA%,_item_text$,
  2555. _POPUP_TYPE_WIMPCOLOUR:
  2556. shell_IconSetBGColour(b%,SA%,AC%)
  2557. 99,"Unknown Popup type in EvntHandle_PopupMenuSelection (type was "+
  2558. _B%+")"
  2559. shell_ListPopUps:
  2560. KA%,r%,y%,f%,PA%,KB%:
  2561. g%,B$,IA%,s%:r%=!_EVNTS_POPUPS_ANCHOR%:y%=_EVNTS_POPUPS_REC_SIZE%:PA%=r%!4:
  2562. Evnts_DebugListHeader ("PopUps","Window         Icon   FN"):
  2563. f%=_m_Evnts_HeaderSize%:
  2564. PA%:A$=$(r%+f%):g%=r%!(f%+&C):IA%=!_EVNTS_POPUPS_DATA%:
  2565. IA%>0
  2566. B$=$(IA%+r%!(f%+16))
  2567. :f%+=_EVNTS_POPUPS_REC_SIZE%:
  2568. shell_EvntSelectButtonPressed(b%,g%,gJ%):
  2569. shell_EvntHandle_ClickSelect(b%,g%):
  2570. shell_EvntAdjustButtonPressed(b%,g%):
  2571. shell_EvntHandle_ClickAdjust(b%,g%):
  2572. shell_EvntMenuButtonPressed(b%,g%,gJ%):
  2573. shell_EvntHandle_ClickMenu(b%,g%):
  2574. shell_EvntSave_AllEvnts(Y$):
  2575. u%:u%=
  2576. (Y$):
  2577. Evnts_SaveEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%):
  2578. Evnts_SaveEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%)
  2579. Evnts_SaveEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%):
  2580. Evnts_SaveEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
  2581. shell_PointerSaveEvnts(u%)
  2582. Evnts_SaveEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%):
  2583. Evnts_SaveEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%)
  2584. Evnts_SaveEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%):
  2585. Evnts_SaveEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%)
  2586. Evnts_SaveEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%):
  2587. Evnts_SaveEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%)
  2588. Evnts_SaveEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
  2589. Evnts_SaveEvnt(u%,
  2590. DataSave_GetAnchor,
  2591. DataSave_GetDataBlk,
  2592. DataSave_GetDataOffset)
  2593. Evnts_SaveEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
  2594. Evnts_SaveEvnt(u%,
  2595. DataLoad_GetAnchor,
  2596. DataLoad_GetDataBlk,_EVNTS_DATALOAD_DATAOFFSET%):
  2597. Evnts_SaveEvnt(u%,GD%,jD%,OA%):
  2598. c%,RB%,nA%:c%=!GD%:nA%=!jD%:!_c_Evnts_WorkBuffer%=OA%:
  2599. #u%,0
  2600. RB%=!c%:
  2601. #u%,1:
  2602. &C,2,u%,c%,RB%+_m_Evnts_HeaderSize%:
  2603. &C,2,u%,_c_Evnts_WorkBuffer%,4:
  2604. &C,2,u%,nA%,OA%
  2605. shell_EvntLoad_AllEvnts(Y$):
  2606. u%,c%,iA%,bB%,uG%:u%=
  2607. (Y$):
  2608. Evnts_LoadEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%)
  2609. Evnts_LoadEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%):
  2610. Evnts_LoadEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%)
  2611. Evnts_LoadEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
  2612. shell_PointerLoadEvnts(u%):
  2613. Evnts_LoadEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%)
  2614. Evnts_LoadEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%):
  2615. Evnts_LoadEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%)
  2616. Evnts_LoadEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%):
  2617. Evnts_LoadEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%)
  2618. Evnts_LoadEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%):
  2619. Evnts_LoadEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
  2620. Evnts_LoadEvnt(u%,
  2621. DataSave_GetAnchor,
  2622. DataSave_GetDataBlk,uG%)
  2623. DataSave_SetDataOffset(uG%):
  2624. Evnts_LoadEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
  2625. Evnts_LoadEvnt(u%,
  2626. DataLoad_GetAnchor,
  2627. DataLoad_GetDataBlk,_EVNTS_DATALOAD_DATAOFFSET%):
  2628. Evnts_LoadEvnt(u%,GD%,jD%,
  2629. OA%):
  2630. vG%,RB%,c%,RB%,xB%,nA%:
  2631. !GD%<>0
  2632. shell_HeapBlockReturn(!GD%)
  2633. !jD%<>0
  2634. shell_HeapBlockReturn(!jD%)
  2635. vG%=1
  2636. shell_HeapBlockFetch(_m_Evnts_HeaderSize%):
  2637. &C,4,u%,c%,_m_Evnts_HeaderSize%:RB%=!c%:c%=
  2638. shell_HeapBlockExtend(c%,RB%):
  2639. &C,4,u%,c%+_m_Evnts_HeaderSize%,RB%:!GD%=c%:
  2640. &C,4,u%,_c_Evnts_WorkBuffer%,4:xB%=!_c_Evnts_WorkBuffer%:
  2641. xB%>0
  2642. EnA%=
  2643. shell_HeapBlockFetch(xB%):
  2644. &C,4,u%,nA%,xB%:!jD%=nA%:OA%=xB%
  2645. !GD%=0
  2646. shell_EvntHandle_MenuSelect(NC%):
  2647. EF%,n%:
  2648. shell_PointerGetMouseButton (_EVNTS_LAST_MOUSEBUTTON%):_m_evnts_PopupMenuItemNr%=!NC%:
  2649. shell_GetLastIconClicked>=0
  2650. shell_EvntHandle_PopupSelect(NC%)
  2651. &65BC4,_m_Menu_HandleLastOpened%,NC%
  2652. EF%,,_c_Evnts_WorkBuffer%;n%:
  2653. n%<>1
  2654. Evnts_CallMenuHandler(EF%,_c_Evnts_WorkBuffer%)
  2655. shell_GetLastMouseButton=_MSE_ADJUSTBUT
  2656. _EVNTS_LAST_MENUMAKER_FN$<>""
  2657. +=k%=
  2658. ("FN"+_EVNTS_LAST_MENUMAKER_FN$+"( _U%!52, _U%!56 )")
  2659. shell_MenuOpenLast
  2660. shell_EvntHandle_PopupSelect(NC%):
  2661. A$,a%,j%,r$,p%,HD%:
  2662. nA%,JE%,i%,a$:
  2663. SA%,_I%,NI%,_C%:A$=
  2664. shell_GetWindowIdentifier(
  2665. shell_GetLastWindowClicked)
  2666. Evnts_GetEvntListOffset(A$,
  2667. shell_GetLastIconClicked,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  2668. a%>=0
  2669. A$<>"iconbar"
  2670. A}j%=!_EVNTS_POPUPS_ANCHOR%+a%:HD%=j%!24:nA%=!_EVNTS_POPUPS_DATA%:JE%=j%!16:SA%=j%!20:
  2671. NC%!4<>-1
  2672. HD%<>_POPUP_TYPE_FONTMENU
  2673. 99,"Unable to handle popup with submenus!"
  2674. HD%=_POPUP_TYPE_TEXT
  2675. _C%=j%!28:
  2676. _C%>=0
  2677. W$=$(nA%+_C%)
  2678. shell_MenuList_GetSysHandle(W$)
  2679. HD%=_POPUP_TYPE_FONTMENU
  2680. T"r$=
  2681. shell_FontMenu_Decode(NC%)
  2682. shell_MenuGetItemText(p%,!NC%)
  2683. :i%=0:
  2684. JE%>-1
  2685. a$=$(nA%+JE%):
  2686. r$<>""
  2687. _Ti%=
  2688. ("FN"+a$+"("+
  2689. shell_GetLastWindowClicked)+","+
  2690. SA%+","+
  2691. (34)+r$+
  2692. (34)+")")
  2693. i%<>0
  2694. JE%=-1
  2695. SA%>=0
  2696. _POPUP_TYPE_TEXT:
  2697. shell_IconPutData(
  2698. shell_GetLastWindowClicked,SA%,r$,
  2699. _POPUP_TYPE_WIMPCOLOUR:
  2700. shell_IconSetBGColour(
  2701. shell_GetLastWindowClicked,SA%,!NC%)
  2702. _POPUP_TYPE_FONTMENU:
  2703. r$<>""
  2704. shell_IconPutData(
  2705. shell_GetLastWindowClicked,SA%,r$,
  2706. 99,"Unknown Popup type in PROCshell_EvntHandle_PopupSelect (type was "+
  2707. HD%+")"
  2708. Evnts_CallMenuHandler(w%,TJ%):
  2709. ("FN"+$w%+"("+
  2710. TJ%+")")
  2711. Evnts_GetHeaderSize:=_m_Evnts_HeaderSize%
  2712. Evnts_GetLastMouseButton:=_EVNTS_LAST_MOUSEBUTTON%
  2713. Evnts_GetLastIconClicked:=_EVNTS_LAST_ICONCLICKED%
  2714. Evnts_GetLastWindowClicked:=_EVNTS_LAST_WINDOWCLICKED%
  2715. Evnts_GetLastMouseXPos:=_EVNTS_LAST_MOUSEXPOS%
  2716. Evnts_GetLastMouseYPos:=_EVNTS_LAST_MOUSEYPOS%
  2717. Evnts_DeleteData(A$,g%,OC%,nA%,y%,OA%,
  2718. fJ%):
  2719. t$,q%,VB$,c%,a%:
  2720. ID%,JD%,KD%,PC%,f%,s%,bA%:
  2721. A$="IconBar"
  2722.     g%=-1
  2723. Evnts_GetEvntListOffset(A$,g%,OC%,y%,
  2724. ):c%=!OC%:bA%=c%!4:c%+=a%:q%=c%+OA%:ID%=!q%:!q%=-1:
  2725. ID%=-1
  2726. t$=$(!nA%+ID%):JD%=(!nA%+ID%)+
  2727. (t$)+1:KD%=!nA%+ID%:PC%=JD%-KD%:
  2728. &400F1,_U%!&94,JD%,_U%!&94,KD%,PC%:fJ%-=PC%:!nA%=
  2729. shell_HeapBlockExtend(!nA%,-PC%):c%=!OC%:f%=_m_Evnts_HeaderSize%+OA%:
  2730. c%!f%>ID%
  2731. c%!f%-=PC%
  2732. :f%+=y%:
  2733. Evnts_DeleteEvnt(A$,g%,OC%,nA%,y%):
  2734. a%,c%,bA%,JD%,KD%,bA%:a%=
  2735. Evnts_GetEvntListOffset(A$,g%,OC%,y%,
  2736. ):c%=!OC%:bA%=c%!4:
  2737. bA%>0
  2738. ;c%!0-=y%:c%!4-=1:c%+=a%:JD%=c%+y%:KD%=c%:PC%=y%:
  2739. bA%>1
  2740. &400F1,_U%!&94,JD%,_U%!&94,KD%,PC%
  2741. :!OC%=
  2742. shell_HeapBlockExtend(!OC%,-PC%)
  2743. shell_EvntHandle_MenuHelp(HF%):
  2744. Z$,RG%,f%,NA%,a%:
  2745. BD%,AD%:RG%=
  2746. shell_MenuLastHandle:f%=0:
  2747. HF%!f%<>-1:GJ%=HF%!f%:f%+=4:
  2748. :NA%=
  2749. shell_MenuGetItemHandle(RG%,HF%):
  2750. NA%<>0
  2751. $ma%=
  2752. Evnts_GetEvntListOffset("menu",NA%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
  2753. a%>=0
  2754. &[j%=!_EVNTS_MENUHELPTAG_ANCHOR%+a%:BD%=j%!16:AD%=!_EVNTS_MENUHELPTAG_DATA%:Z$=$(AD%+BD%)
  2755. Z$=""
  2756. shell_EvntHandle_AttachedHelp(a%):
  2757. j%,BD%,AD%,Z$:j%=!_EVNTS_HELPTAG_ANCHOR%+a%:BD%=j%!16:AD%=!_EVNTS_HELPTAG_DATA%:Z$=$(AD%+BD%):=Z$
  2758. shell_Evnts_WritableDragInProgress:=_m_evnts_DragIconWritableDrag%
  2759. shell_Evnts_DragIconStartWindow:=_m_evnts_DragIconStartWindow%
  2760. shell_Evnts_DragIconStartIcon:=_m_evnts_DragIconStartIcon%
  2761. shell_Evnts_MonitorDragPtrPos:
  2762. LD%,b%,XA%,WA%:
  2763. QC%,RC%,SC%,TC%,hB%,iB%,MD%:
  2764. shell_PointerGetPosition(WA%,XA%):
  2765. shell_PointerGetWindow(b%)
  2766. shell_PointerGetMovementVector(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%,WA%,XA%,QC%,RC%,SC%,TC%,hB%,iB%):
  2767. hB%<>0
  2768. iB%<>0
  2769. l=_m_evnts_DragIconMouseX%=WA%:_m_evnts_DragIconMouseY%=XA%
  2770. shell_PointerGetLastMovementVector(QC%,RC%,SC%,TC%,hB%,iB%):
  2771. hB%<>0
  2772. iB%<>0
  2773. WA%>(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%)
  2774. shell_WindowScrollBy(
  2775. shell_Evnts_DragIconStartWindow,WA%-(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%),0)
  2776. WA%<(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%)
  2777. shell_WindowScrollBy(
  2778. shell_Evnts_DragIconStartWindow,WA%-(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%),0)
  2779. :mC%=
  2780. shell_Window_GetBottomPaneDepth(
  2781. shell_Evnts_DragIconStartWindow):
  2782. XA%<(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+mC%)
  2783. shell_WindowScrollBy(
  2784. shell_Evnts_DragIconStartWindow,0,XA%-(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+
  2785. shell_Window_GetBottomPaneDepth(
  2786. shell_Evnts_DragIconStartWindow)))
  2787. :MD%=
  2788. shell_Window_GetTopPaneDepth(
  2789. shell_Evnts_DragIconStartWindow):
  2790. XA%>(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-MD%)
  2791. shell_WindowScrollBy(
  2792. shell_Evnts_DragIconStartWindow,0,XA%-(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-
  2793. shell_Window_GetTopPaneDepth(
  2794. shell_Evnts_DragIconStartWindow)))
  2795. Evnts_GetEvntListOffset3(A$,g%,iA%,j%,y%,fD%):
  2796. KA%,f%,x%,a%,CB%,KB%:
  2797. s%,bB%:
  2798. A$="IconBar"
  2799. g%=-1:A$="iconbar"
  2800. (!j%=0
  2801. A$=""
  2802. (!j%=0)
  2803. shell_HeapBlockFetch(y%+_m_Evnts_HeaderSize%):CB%=!j%:CB%!0=y%:CB%!4=1:$(CB%+_m_Evnts_HeaderSize%)="":
  2804. s%=&C
  2805. (y%-4)
  2806. 4:CB%!(s%+_m_Evnts_HeaderSize%)=-1:
  2807. s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
  2808. a%<>_m_Evnts_HeaderSize%
  2809. YCB%=!j%:KA%=!CB%:f%=_m_Evnts_HeaderSize%:x%=
  2810. :a%=-1:aI%=-1:KB%=!j%:
  2811. ($(KB%+f%)=A$)
  2812. 7bB%=(KB%!(f%+16))
  2813. (1<<31):
  2814. KB%!(f%+&C)=g%
  2815. bB%=iA%
  2816. a%=f%:x%=
  2817. f%+=y%
  2818. f%+=y%
  2819. ((f%>=(KA%+_m_Evnts_HeaderSize%))
  2820. (a%=-1
  2821. a%=KA%+_m_Evnts_HeaderSize%:!j%=
  2822. shell_HeapBlockExtend(!j%,y%):gB%=!j%:gB%!0+=y%:gB%!4+=1:gB%+=a%:$(gB%)="":
  2823. s%=&C
  2824. (y%-4)
  2825. 4:gB%!s%=-1:
  2826. :_m_Evnts_LastEvntOffset%=a%
  2827. shell_AttachColourPopupMenu(d%,hC%,zC%,p%,a$,X$):
  2828. hC%>=0
  2829. shell_IconSetButtonType(d%,hC%,_BUTTON_TYPE_CLICK)
  2830. _m_WimpColMen_Handle%=p%:
  2831. shell_EvntAdd_PopUpMenu(
  2832. shell_GetWindowIdentifier(d%),hC%,zC%,p%,a$,X$,_POPUP_TYPE_WIMPCOLOUR):
  2833. shell_Evnts_UserDragInProgress:=_m_evnts_UserDragInProgress%
  2834. shell_ExReg_Init:_m_ExReg_FontMenu_Loaded%=
  2835. :_m_ExReg_Fonts_Loaded%=
  2836. :_m_ExReg_DrawLib_Loaded%=
  2837. :_m_ExReg_OLELib_Loaded%=
  2838. :_m_ExReg_FontLib_Loaded%=
  2839. :_m_ExReg_FontPickLib_Loaded%=
  2840. :_m_ExReg_ShareBan_Loaded%=
  2841. :_m_ExReg_ColourMenu_Loaded%=
  2842. /$_m_ExReg_ColourPick_Loaded%=
  2843. shell_ExReg_FontMenu_Loaded:=_m_ExReg_FontMenu_Loaded%
  2844. shell_ExReg_FontMenu_Loaded:_m_ExReg_FontMenu_Loaded%=
  2845. shell_ExReg_ShareBan_Loaded:=_m_ExReg_ShareBan_Loaded%
  2846. shell_ExReg_ShareBan_Loaded:_m_ExReg_ShareBan_Loaded%=
  2847. shell_ExReg_Fonts_Loaded:=_m_ExReg_Fonts_Loaded%
  2848. shell_ExReg_Fonts_Loaded:_m_ExReg_Fonts_Loaded%=
  2849. shell_ExReg_DrawLib_Loaded:=_m_ExReg_DrawLib_Loaded%
  2850. shell_ExReg_DrawLib_Loaded:_m_ExReg_DrawLib_Loaded%=
  2851. shell_ExReg_OLELib_Loaded:=_m_ExReg_OLELib_Loaded%
  2852. shell_ExReg_OLELib_Loaded:_m_ExReg_OLELib_Loaded%=
  2853. shell_ExReg_FontLib_Loaded:=_m_ExReg_FontLib_Loaded%
  2854. shell_ExReg_FontLib_Loaded:_m_ExReg_FontLib_Loaded%=
  2855. shell_ExReg_ColourMenu_Loaded:=_m_ExReg_ColourMenu_Loaded%
  2856. shell_ExReg_ColourMenu_Loaded:_m_ExReg_ColourMenu_Loaded%=
  2857. shell_ExReg_ColourPick_Loaded:=_m_ExReg_ColourPick_Loaded%
  2858. shell_ExReg_ColourPick_Loaded:_m_ExReg_ColourPick_Loaded%=
  2859. _shell_Files_Init:=0
  2860. shell_FileLength(h$):
  2861. tA%,NE%,OE%,jB%,OD%:
  2862. 8,5,h$
  2863. tA%,,NE%,OE%,jB%,OD%:=jB%
  2864. shell_FileType(h$):
  2865. 8,5,h$
  2866. ,,tA%:tA%=(tA%
  2867. &FFF00)>>>8:=tA%
  2868. shell_FileExists(h$):
  2869. tA%,E,i%:E=5:
  2870. 8,E,h$
  2871. tA%=0
  2872. shell_CatInfoRead(h$):
  2873. tA%,NE%,OE%,jB%,OD%,C$:
  2874. 8,5,h$
  2875. tA%,,NE%,OE%,jB%,OD%:
  2876. tA%=0
  2877. ="Not Found"
  2878. OD%=51
  2879. C$+="WR "
  2880. OD%=&BB
  2881. C$+="LWR"
  2882. OD%=&88
  2883. C$+="DL "
  2884. C$+=" "+
  2885. shell_StringPadLeading(
  2886. ~NE%,"0",8):C$+=" "+
  2887. shell_StringPadLeading(
  2888. ~OE%,"0",8):C$+=" "+
  2889. shell_StringPadLeading(
  2890. ~jB%,"0",8):=C$
  2891. shell_FileGetDateStamp(h$):
  2892. tA%,eH%,E:E=5:
  2893. 8,E,h$
  2894. tA%,,,eH%:
  2895. tA%=0
  2896. _shell_Iconbar_Init:=0
  2897. shell_Iconbar(MA%,kA$,K$,hA%,AA%,tC%,wC%,bD%):
  2898. o%,JA%,OF%,PF%:JA%=
  2899. shell_HeapBlockFetch(36):
  2900. OF%20:
  2901. PF%20:!JA%=MA%:JA%!4=0:JA%!&C=96:
  2902. K$<>""
  2903. P/JA%!&C=hA%:JA%!8=-16:JA%!16=92:JA%!32=
  2904. JA%!8=0:JA%!16=70:JA%!32=&C
  2905. :JA%!20=&1700310B:JA%!24=OF%:JA%!28=PF%:$OF%=K$:$PF%=kA$:
  2906. &400C2,,JA%
  2907. shell_AttachMenu(-2,o%,AA%,tC%,wC%,bD%):
  2908. shell_HeapBlockReturn(JA%):=
  2909. shell_IconNewSprite(MA%,o%,kA$)
  2910. shell_IconbarSetText(b%,g%,SB$):
  2911. l%:l%=
  2912. shell_HeapBlockFetch(40):!l%=b%:l%!4=g%:
  2913. &400CE,,l%:$(l%!28)=SB$:
  2914. shell_IconRedraw(b%,g%):
  2915. shell_HeapBlockReturn(l%):
  2916. shell_Icons_Init:_c_Icons_IconDragType%=5:_c_Icons_DragBBoxXMin%=0:_c_Icons_DragBBoxYMin%=0:_c_Icons_DragBBoxXMax%=&7FFFFFFF:_c_Icons_DragBBoxYMax%=&7FFFFFFF:_c_Icons_DragFlags%=&85:_c_Icons_IconOverFlowMess$="SHELLMSG12"
  2917. _c_Icons_NotASpriteIconMess$="SHELLMSG19":_c_Icons_WimpColourRangeMess$="SHELLMSG24":_c_Icons_MinWimpColour%=0:_c_Icons_MaxWimpColour%=&F:
  2918. _c_Icon_SetIconStateBlk%16:
  2919. _c_Icon_GetIconStateBlk%40:
  2920. _c_Icon_GetCaretPositionBlk%24
  2921. %_m_Icons_AllowWritableDrags%=
  2922. shell_IconSetFGColour(b%,g%,kB%):
  2923. kB%<_c_Icons_MinWimpColour%
  2924. kB%>_c_Icons_MaxWimpColour%
  2925. shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetFGColour")
  2926. shell_IconSetState(b%,g%,kB%<<24,&F000000):
  2927. shell_IconSetBGColour(b%,g%,kB%):
  2928. kB%<_c_Icons_MinWimpColour%
  2929. kB%>_c_Icons_MaxWimpColour%
  2930. shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetBGColour")
  2931. shell_IconSetState(b%,g%,kB%<<28,&F0000000):
  2932. shell_IconUnselectable(b%,g%):
  2933. shell_IconSetUnselectable(b%,g%,1):
  2934. shell_IconSetState(b%,g%,lI%,rI%):_c_Icon_SetIconStateBlk%!0=b%:_c_Icon_SetIconStateBlk%!4=g%:_c_Icon_SetIconStateBlk%!8=lI%:_c_Icon_SetIconStateBlk%!&C=rI%:
  2935. &600CD,,_c_Icon_SetIconStateBlk%:
  2936. shell_IconSet(b%,g%,zA%):
  2937. zA%=0
  2938. shell_IconDeselect(b%,g%)
  2939. shell_IconSelect(b%,g%)
  2940. shell_IconSetSelected(d%,t%,zA%):
  2941. zA%=0
  2942. shell_IconDeselect(d%,t%)
  2943. shell_IconSelect(d%,t%)
  2944. Icons_GetState(b%,g%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2945. &400CE,,_c_Icon_GetIconStateBlk%:
  2946. shell_IconSelect(lC%,pC%):
  2947. shell_IconSetState(lC%,pC%,&200000,&200000):
  2948. shell_IconDeselect(lC%,pC%):
  2949. shell_IconSetState(lC%,pC%,0,&200000):
  2950. shell_IsIconSelected(lC%,pC%):
  2951. Icons_GetState(lC%,pC%):n%=_c_Icon_GetIconStateBlk%!24:h%=(n%
  2952. &200000):
  2953.  U    HA%=
  2954. :=HA%
  2955. shell_IconPutValidation(b%,g%,RA$):
  2956. n%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2957. &400CE,,_c_Icon_GetIconStateBlk%:n%=_c_Icon_GetIconStateBlk%!24:
  2958.  g&$(_c_Icon_GetIconStateBlk%!32)=RA$
  2959. shell_IconGetValidation(b%,g%):
  2960. O$,n%:
  2961. g%=-1
  2962. O$="":_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2963. &400CE,,_c_Icon_GetIconStateBlk%:n%=_c_Icon_GetIconStateBlk%!24:
  2964. _c_Icon_GetIconStateBlk%!32>0
  2965. O$=$(_c_Icon_GetIconStateBlk%!32)
  2966. shell_IconRedraw(b%,g%):
  2967. shell_IconSetState(b%,g%,0,0):
  2968. shell_IconGetCommand(PE%,FB$):
  2969. I%,R$:
  2970. PE%<=0
  2971.     R$=""
  2972. shell_StringUpperCase($PE%),";"+
  2973. shell_StringUpperCase(FB$)):
  2974.     R$=""
  2975. $(PE%+I%),
  2976. $(PE%+I%)+";",";")-1)
  2977. shell_IconGetFlags(b%,g%):
  2978. n%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2979. &400CE,,_c_Icon_GetIconStateBlk%:n%=_c_Icon_GetIconStateBlk%!24:=n%
  2980. shell_IconIsDraggable(b%,g%):
  2981. n%,i%,EB%,HA%:
  2982. shell_WindowHandleKnown(b%)=
  2983. JEB%=(1<<&D)+(1<<&E):n%=
  2984. shell_IconGetFlags(b%,g%):i%=(n%
  2985. EB%):
  2986. i%=EB%
  2987.     HA%=
  2988. :=HA%
  2989. shell_IconIsWritable(b%,g%):
  2990. n%,i%,EB%:
  2991. shell_WindowHandleKnown(b%)=
  2992. @EB%=1<<&F:n%=
  2993. shell_IconGetFlags(b%,g%):i%=(n%
  2994. EB%):
  2995. i%=EB%
  2996. shell_IconIsSprite(d%,t%):
  2997. n%,h%,HA%:n%=
  2998. shell_IconGetFlags(d%,t%):h%=(n%
  2999. 1<<1):
  3000. h%=(1<<1)
  3001.     HA%=
  3002. :=HA%
  3003. shell_IconHasCaret(b%,g%):
  3004. BB%,TA%,i%,pB%,qB%,MB%:
  3005. shell_CaretReadPosition(TA%,BB%,pB%,qB%,MB%):
  3006. (BB%=g%
  3007. TA%=b%)
  3008. shell_IconCreate(d%,dB%,OB%,ME%,w%,TF%,UF%,DJ%,E$,DB%,cC%,O$):
  3009. FJ%,o%,UC%,l%:l%=
  3010. shell_HeapBlockFetch(40):l%!0=d%:l%!4=dB%:l%!8=OB%:l%!&C=dB%+ME%:l%!16=OB%+w%:l%!20=DJ%
  3011. UF%<<28
  3012. TF%<<24:
  3013. l%!20
  3014. #FJ%=
  3015. E$,","):l%!24=DB%:
  3016. O$<>""
  3017. 6UC%=
  3018. shell_HeapBlockFetch(
  3019. O$+1):$UC%=O$:l%!28=UC%
  3020. l%!28=-1
  3021. :l%!32=cC%
  3022. $(l%+24)=
  3023. E$,&B)
  3024. &400C2,,l%
  3025. shell_HeapBlockReturn(l%):=o%
  3026. shell_IconDelete(d%,t%):
  3027. shell_DoIconDelete(d%,t%,
  3028. shell_IconDelete2(d%,t%):
  3029. shell_DoIconDelete(d%,t%,
  3030. shell_DoIconDelete(d%,t%,YJ%):
  3031. eA%,lA%,uA%,_A%:_c_Icon_GetIconStateBlk%!0=d%:_c_Icon_GetIconStateBlk%!4=t%:
  3032. &400CE,,_c_Icon_GetIconStateBlk%:
  3033. &8168A,,_c_Icon_GetIconStateBlk%+8:eA%=_c_Icon_GetIconStateBlk%!8:lA%=_c_Icon_GetIconStateBlk%!&C
  3034. uA%=_c_Icon_GetIconStateBlk%!16:_A%=_c_Icon_GetIconStateBlk%!20:
  3035. &400CE,,_c_Icon_GetIconStateBlk%:
  3036. shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!28)
  3037. shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!28)
  3038. shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!32)
  3039. shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!32)
  3040. &400C4,,_c_Icon_GetIconStateBlk%:
  3041. &400D1,d%,eA%,lA%,uA%,_A%
  3042. shell_IconRadioSelection(b%,VC%):
  3043. QI%,AC%,RI%,bG%:AC%=
  3044. shell_HeapBlockFetch(8):QI%=(VC%<<16)+(1<<21):bG%=(31<<16)+(1<<21):
  3045. &400D6,b%,AC%,bG%,QI%:RI%=!AC%:
  3046. shell_HeapBlockReturn(AC%):=RI%
  3047. shell_IconPutData(TA%,BB%,E$,U):
  3048. _U%!&64
  3049. "WimpExt_SetIconString",,,TA%,BB%,E$+
  3050. shell_IconGetData(TA%,BB%):
  3051. E$<>mA$
  3052. _c_Icon_GetIconStateBlk%!0=TA%:_c_Icon_GetIconStateBlk%!4=BB%:
  3053. &400CE,,_c_Icon_GetIconStateBlk%:
  3054. (_c_Icon_GetIconStateBlk%!24
  3055. (1<<8))<>0
  3056. E$>_c_Icon_GetIconStateBlk%!36
  3057. shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
  3058. :$(_c_Icon_GetIconStateBlk%!28)=E$
  3059. $(_c_Icon_GetIconStateBlk%+28)=
  3060. E$,&B)
  3061. shell_IconHasCaret(TA%,BB%)
  3062. shell_CaretSetPosition(TA%,BB%,-1,-1,-1,
  3063. (E$))
  3064. !ia_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
  3065. &400CD,,_c_Icon_GetIconStateBlk%
  3066. shell_IconPutDataNow(TA%,BB%,E$):_c_Icon_GetIconStateBlk%!0=TA%:_c_Icon_GetIconStateBlk%!4=BB%:
  3067. &400CE,,_c_Icon_GetIconStateBlk%:
  3068. (_c_Icon_GetIconStateBlk%!24
  3069. (1<<8))<>0
  3070. (E$)>_c_Icon_GetIconStateBlk%!36
  3071. shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
  3072. !}%$(_c_Icon_GetIconStateBlk%!28)=E$
  3073. $(_c_Icon_GetIconStateBlk%+28)=
  3074. E$,&B)
  3075. :_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
  3076. &400CD,,_c_Icon_GetIconStateBlk%:
  3077. shell_EnsurePoll:
  3078. shell_IconNewSprite(b%,g%,M$):
  3079. QE%,WF%,XF%,YF%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  3080. &400CE,,_c_Icon_GetIconStateBlk%:
  3081. (_c_Icon_GetIconStateBlk%!24
  3082. (1<<1))
  3083.     WF%=
  3084. (_c_Icon_GetIconStateBlk%!24
  3085.     XF%=
  3086. (_c_Icon_GetIconStateBlk%!24
  3087. (1<<8))
  3088.     YF%=
  3089. _c_Icon_GetIconStateBlk%!24
  3090. )$(_c_Icon_GetIconStateBlk%!32)="S"+M$
  3091. $(_c_Icon_GetIconStateBlk%!28)=M$:_c_Icon_GetIconStateBlk%!36=
  3092. :QE%=g%
  3093. &400C4,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!4=_c_Icon_GetIconStateBlk%!8:_c_Icon_GetIconStateBlk%!8=_c_Icon_GetIconStateBlk%!&C:_c_Icon_GetIconStateBlk%!&C=_c_Icon_GetIconStateBlk%!16
  3094. _c_Icon_GetIconStateBlk%!16=_c_Icon_GetIconStateBlk%!20:_c_Icon_GetIconStateBlk%!20=_c_Icon_GetIconStateBlk%!24:$(_c_Icon_GetIconStateBlk%+24)=M$:
  3095. &400C2,,_c_Icon_GetIconStateBlk%
  3096. shell_IconRedraw(b%,QE%):=QE%
  3097. shell_IconGetData(b%,g%):
  3098. b%<-2
  3099. _U%!&64
  3100. "WimpExt_GetIcon",,,b%,g%
  3101. ,,,R$
  3102. _c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  3103. &400CE,,_c_Icon_GetIconStateBlk%:
  3104. (_c_Icon_GetIconStateBlk%!24
  3105. (1<<8))<>0
  3106. %R$=$(_c_Icon_GetIconStateBlk%!28)
  3107. R$=$(_c_Icon_GetIconStateBlk%+28)
  3108. shell_IconMove2(b%,g%,cG%,dG%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  3109. &400CE,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!8+=cG%:_c_Icon_GetIconStateBlk%!16+=cG%:_c_Icon_GetIconStateBlk%!&C+=dG%
  3110. _c_Icon_GetIconStateBlk%!20+=dG%:g%=
  3111. shell_IconMove(b%,g%,_c_Icon_GetIconStateBlk%!8,_c_Icon_GetIconStateBlk%!&C,_c_Icon_GetIconStateBlk%!16,_c_Icon_GetIconStateBlk%!20):=g%
  3112. shell_IconResize(d%,t%,eA%,lA%,uA%,_A%):=
  3113. shell_IconMove(d%,t%,eA%,lA%,uA%,_A%)
  3114. shell_IconMove(d%,t%,eA%,lA%,uA%,_A%):
  3115. LA%,FK%,GK%,lB%,e%:
  3116. eG%,fG%,gG%,hG%:LA%=
  3117. shell_HeapBlockFetch(40):e%=
  3118. shell_HeapBlockFetch(40):!LA%=d%:LA%!4=t%:
  3119. &400CE,,LA%:!e%=d%:e%!4=t%:
  3120. &400CE,,e%:
  3121. &8168A,,e%+8:YI%=LA%!24:ZF%=LA%+28
  3122. eG%=YI%:fG%=ZF%!0:gG%=ZF%!4:hG%=ZF%!8:lB%=LA%!8-e%!8:
  3123. &400C4,,LA%:
  3124. &400D1,!LA%,LA%!8-lB%,LA%!&C-lB%,LA%!16+lB%,LA%!20+lB%:t%=
  3125. shell_CreateIcon2(d%,eA%,lA%,uA%,_A%,eG%,fG%,gG%,hG%,lB%):
  3126. shell_HeapBlockReturn(LA%):
  3127. shell_HeapBlockReturn(e%):=t%
  3128. shell_CreateIcon2(o%,eA%,lA%,uA%,_A%,n%,hI%,jI%,nI%,lB%):
  3129. LC%,fA%,K$,p$,dB%,OB%:fA%=
  3130. shell_HeapBlockFetch(60):!fA%=o%:fA%!20=n%:fA%!24=hI%:fA%!28=jI%:fA%!32=nI%:K$="":p$="":
  3131. 256K$=$(fA%!24)
  3132. K$=$(fA%+24)
  3133. shell_IconGetCommand(fA%!28,"S")
  3134. p$=$(fA%+24)
  3135. shell_GetMinXY(n%,K$,p$):
  3136. uA%-eA%<dB%
  3137. uA%=eA%+dB%
  3138. _A%-lA%<OB%
  3139. _A%=lA%+OB%
  3140. fA%!4=eA%:fA%!8=lA%:fA%!&C=uA%:fA%!16=_A%:
  3141. &400C2,,fA%
  3142. &400D1,!fA%,fA%!4-lB%,fA%!8-lB%,fA%!&C+lB%,fA%!16+lB%:
  3143. &400D3,,fA%:
  3144. !fA%=o%:
  3145. fA%!4=LC%:
  3146. &400D2,o%,LC%,0,0,-1,0
  3147. shell_HeapBlockReturn(fA%):=LC%
  3148. shell_IconSlab(IE%,d%,t%):
  3149. e%:e%=
  3150. shell_HeapBlockFetch(50):e%!8=IE%:e%!&C=d%:e%!16=t%:
  3151. &81680,,e%:e%!8=0:
  3152. &81680,,e%:
  3153. shell_HeapBlockReturn(e%):
  3154. shell_IconSetButtonType(d%,t%,WC%):
  3155. WC%=&C
  3156. WC%=&D
  3157. shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
  3158. WC%<0
  3159. WC%>&F
  3160. shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
  3161. shell_IconSetState(d%,t%,WC%<<&C,&F000):
  3162. shell_IconSetESG(d%,t%,VC%):
  3163. VC%<0
  3164. VC%>31
  3165. shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
  3166. shell_IconSetState(d%,t%,VC%<<16,&1F0000):
  3167. shell_IconSetText(d%,t%,BA%):
  3168. BA%<>0
  3169. BA%=1<<0
  3170. shell_IconSetState(d%,t%,BA%,1<<0):
  3171. shell_IconSetSprite(b%,g%,BA%):
  3172. BA%<>0
  3173. BA%=1<<1
  3174. shell_IconSetState(b%,g%,BA%,1<<1):
  3175. shell_IconSetBorder(b%,g%,BA%):
  3176. BA%<>0
  3177. BA%=1<<2
  3178. shell_IconSetState(b%,g%,BA%,1<<2):
  3179. shell_IconSetHCentred(d%,t%,BA%):
  3180. shell_IconSetState(d%,t%,0,1<<9):
  3181. BA%<>0
  3182. BA%=1<<3
  3183. shell_IconSetState(d%,t%,BA%,1<<3):
  3184. shell_IconSetVCentred(d%,t%,BA%):
  3185. BA%<>0
  3186. BA%=1<<4
  3187. shell_IconSetState(d%,t%,BA%,1<<4):
  3188. shell_IconSetFilled(d%,t%,BA%):
  3189. BA%<>0
  3190. BA%=1<<5
  3191. shell_IconSetState(d%,t%,BA%,1<<5):
  3192. shell_IconSetUsesOutlineFont(d%,t%,BA%):
  3193. BA%<>0
  3194. BA%=1<<6
  3195. shell_IconSetState(d%,t%,BA%,1<<6):
  3196. shell_IconSetRightJust(d%,t%,BA%):
  3197. shell_IconSetHCentred(d%,t%,0):
  3198. BA%<>0
  3199. BA%=1<<9
  3200. shell_IconSetState(d%,t%,BA%,1<<9):
  3201. shell_IconSetLeftJust(d%,t%):
  3202. shell_IconSetHCentred(d%,t%,0):
  3203. shell_IconSetRightJust(d%,t%,0):
  3204. shell_IconSetUnselectable(d%,t%,zA%):
  3205. zA%<>0
  3206. zA%=1<<22
  3207. shell_IconSetState(d%,t%,zA%,1<<22):
  3208. zA%<>0
  3209. shell_IconHasCaret(d%,t%)
  3210. &400D2,-1
  3211. shell_IconSelectAll(d%):
  3212. e%,I%:e%=
  3213. shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=1<<21:e%!&C=1<<21:
  3214. &400D6,!e%,I%,5<<21,0<<21:
  3215. !I%>-1:e%!4=!I%:
  3216. &400CD,,e%:I%+=4:
  3217. shell_HeapBlockReturn(e%):
  3218. shell_IconDeselectAll(d%):
  3219. e%,I%:e%=
  3220. shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=0:e%!&C=1<<21:
  3221. &400D6,!e%,I%,5<<21,1<<21:
  3222. !I%>-1:e%!4=!I%:
  3223. &400CD,,e%:I%+=4:
  3224. shell_HeapBlockReturn(e%):
  3225. shell_IconSetSpriteArea(n%,lD%,AJ%):
  3226. 3)=2)
  3227. 256)<>0)
  3228. lD%!4=AJ%
  3229. shell_IconGetSelectedIcons(d%,VC%,
  3230. LA%):
  3231. jG%:jG%=(VC%<<16)+(1<<21):
  3232. &400D6,d%,LA%,jG%,(VC%<<16)+(1<<21):
  3233. shell_IconIndirSize(YB%,n%,lD%,X%):
  3234. XB%,kG%,m%,nE%:
  3235. &800100)=256
  3236. "XB%=lD%!8:
  3237. (lD%!4<>-1)
  3238. AkG%=lD%!4:
  3239. #X%=YB%+kG%:m%=0:
  3240. :nE%=
  3241. #X%:m%+=1:
  3242. nE%<32:XB%+=+m%
  3243. XB%=0
  3244. :=XB%
  3245. shell_IconGetBoundingBox(b%,g%,
  3246. kA%):
  3247. Icons_GetState(b%,g%):YA%=_c_Icon_GetIconStateBlk%!8:ZA%=_c_Icon_GetIconStateBlk%!&C:jA%=_c_Icon_GetIconStateBlk%!16:kA%=_c_Icon_GetIconStateBlk%!20:
  3248. shell_IconDragBox(b%,g%):
  3249. A$,a%,j%,FA%,v%,B$,k%:
  3250. _G%,l%,C,D,nG%,n%,UC%,oG%,mA%,TA$:l%=
  3251. shell_HeapBlockFetch(&64+(
  3252. shell_WindowCountIcons(b%)*32)):!l%=b%:
  3253. &400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:nG%=l%!68:l%!4=g%:
  3254. &400CE,,l%:l%!0=b%
  3255. l%!4=_c_Icons_IconDragType%:n%=l%!24:UC%=l%!32:l%!8=l%!8+C:l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
  3256. 6,&A1,28
  3257. ,,mA%:oG%=((mA%
  3258. 2)=2)
  3259. shell_DataSaveResetDragASpriteInProgressFlag:
  3260. shell_DataSaveDragInProgress
  3261. mA%=n%:
  3262. #H&TA$=
  3263. shell_IconGetCommand(UC%,"s")
  3264. shell_OK(
  3265. shell_MessageNoArgs(_c_Icons_NotASpriteIconMess$))
  3266. TA$<>""
  3267. &42400,_c_Icons_DragFlags%,nG%,TA$,l%+8:
  3268. shell_DataSaveSetDragASpriteInProgressFlag
  3269. &400D0,,l%
  3270. &400D0,,l%
  3271. shell_HeapBlockReturn(l%):
  3272. shell_HandleSlider(b%,g%):
  3273. shell_IconDragBox2(b%,g%):
  3274. l%,C,D,n%,UC%:l%=
  3275. shell_HeapBlockFetch(&64+(
  3276. shell_WindowCountIcons(b%)*32)):!l%=b%:
  3277. &400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:l%!4=g%:
  3278. &400CE,,l%:l%!0=b%:l%!4=_c_Icons_IconDragType%:n%=l%!24:UC%=l%!32:l%!8=l%!8+C
  3279. l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
  3280. &400D0,,l%:
  3281. shell_HeapBlockReturn(l%):
  3282. shell_IconGetBGColour(d%,t%):
  3283. mD%,l%:l%=
  3284. shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
  3285. &400CE,,l%:mD%=(l%!24>>28)
  3286. shell_HeapBlockReturn(l%):=mD%
  3287. shell_IconGetFGColour(d%,t%):
  3288. mD%,l%:l%=
  3289. shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
  3290. &400CE,,l%:mD%=(l%!24>>24)
  3291. shell_HeapBlockReturn(l%):=mD%
  3292. shell_IconGetButtonType(b%,g%):
  3293. WC%,l%:l%=
  3294. shell_HeapBlockFetch(40):l%!0=b%:l%!4=g%:
  3295. &400CE,,l%:WC%=(l%!24>>&C)
  3296. shell_HeapBlockReturn(l%):=WC%
  3297. shell_IconEnsureVisible(b%,g%):
  3298. sB%,BC%,qG%:
  3299. rG%,sG%,tG%:
  3300. fF%,gF%,hF%,iF%:
  3301. jF%,kF%:
  3302. yG%,zG%:
  3303. lF%,mF%:
  3304. nF%,oF%:
  3305. g%>=0
  3306. shell_HeapBlockFetch(36):BC%=
  3307. shell_HeapBlockFetch(40):!sB%=b%:
  3308. &400CB,,sB%:qG%=sB%!4:rG%=sB%!8:sG%=sB%!&C:tG%=sB%!16:jF%=sB%!20:kF%=sB%!24:zG%=sG%-qG%:yG%=tG%-rG%:BC%!0=b%:BC%!4=g%:
  3309. &400CE,,BC%:fF%=BC%!8:gF%=BC%!&C:hF%=BC%!16:iF%=BC%!20
  3310. lF%=jF%:oF%=kF%:nF%=jF%+zG%:mF%=kF%-yG%:mC%=
  3311. shell_Window_GetBottomPaneDepth(b%)+8:MD%=
  3312. shell_Window_GetTopPaneDepth(b%)+8:
  3313. gF%<(mF%+mC%)
  3314. shell_WindowScrollBy(b%,0,gF%-mF%-mC%)
  3315. iF%>(oF%-MD%-mC%)
  3316. shell_WindowScrollBy(b%,0,iF%-oF%+MD%+mC%+&C)
  3317. hF%>nF%
  3318. shell_WindowScrollBy(b%,hF%-nF%,0)
  3319. fF%<lF%
  3320. shell_WindowScrollBy(b%,fF%-lF%,0)
  3321. shell_HeapBlockReturn(sB%):
  3322. shell_HeapBlockReturn(BC%)
  3323. shell_Icon_SetFont(b%,g%,XJ%):
  3324. shell_IconSetUsesOutlineFont(b%,g%,
  3325. shell_IconSetState(b%,g%,XJ%<<24,-&1000000):
  3326. shell_IconClearAllWritables(b%):
  3327. shell_IconSetAllWritables(b%,""):
  3328. shell_IconSetAllWritables(b%,bB$):
  3329. l%,f%,gA%:gA%=
  3330. shell_WindowCountIcons(b%):l%=
  3331. shell_HeapBlockFetch((gA%+1)*4):
  3332. &400D6,b%,l%,&40E000,&E000:f%=0:
  3333. l%!f%<>-1:
  3334. shell_IconPutData(b%,l%!f%,"",
  3335. ):f%+=4:
  3336. shell_HeapBlockReturn(l%):
  3337. shell_IconDisallowWritableDrags:_m_Icons_AllowWritableDrags%=
  3338. shell_IconAllowWritableDrags:_m_Icons_AllowWritableDrags%=
  3339. shell_IconWritableDragStatus:=_m_Icons_AllowWritableDrags%
  3340. _shell_IntHelp_Init:_c_IntHelp_Bubble_Control%=&83400:_c_IntHelp_HelpBubble_Off%=0:_c_IntHelp_HelpBubble_On%=1:_c_IntHelp_HelpBubble_Toggle%=2:_m_IntHelp_IsOn%=
  3341. shell_InteractiveHelp(_Q%):
  3342. J$,e$,O$,CC%,pF%,XB$,n%:
  3343. shell_EvntHandle_HelpTags(_Q%!32,_Q%!36,J$):O$=
  3344. shell_IconGetValidation(_Q%!32,_Q%!36):
  3345. O$<>""
  3346. shell_StringUpperCase(
  3347. O$,1))="I"
  3348. O$,";"):
  3349. CC%=0
  3350. O$,2)
  3351. O$,2,CC%-2)
  3352. shell_StringUpperCase(O$),
  3353. shell_StringUpperCase(";i")):pF%=
  3354. shell_StringUpperCase(O$),
  3355. shell_StringUpperCase(";"),CC%+1):
  3356. CC%>0
  3357. pF%>0
  3358. O$,CC%+2,pF%-CC%-2)
  3359. O$,CC%+2)
  3360. J$=""
  3361. shell_EvntHandle_HelpTags(_Q%!32,-1,J$)
  3362. J$<>""
  3363. _Q%!16=&503:_Q%!&C=_Q%!8:e$=
  3364. shell_MessageLookup(J$,"",""):e$=
  3365. shell_MessageExpand(e$):$(_Q%+20)=e$:!_Q%=(
  3366. e$+25)
  3367. &400E7,17,_Q%,_Q%!4
  3368. shell_InteractiveHelpOn:_m_IntHelp_IsOn%=
  3369. shell_InteractiveHelpOff:_m_IntHelp_IsOn%=
  3370. shell_InteractiveHelpStartApp:
  3371. shell_InteractiveHelpBubbleHelpIsRunning
  3372. shell_OSVarExists("Help$Dir")
  3373. shell_OSVarExists("Help$Start")
  3374. &400DE,"<Help$Start>"
  3375. &400DE,"Resources:$.Apps.!Help"
  3376. shell_InteractiveHelpBubbleHelpOn:
  3377. shell_InteractiveHelpBubbleHelpIsRunning:
  3378. shell_OSVarExists("BubbleHelp$Running")
  3379.     HA%=
  3380. :=HA%
  3381. shell_InteractiveHelpBubbleHelpOn:
  3382. shell_InteractiveHelp_SendBubbleHelpMessage(_c_IntHelp_HelpBubble_On%):
  3383. shell_InteractiveHelpBubbleHelpOff:
  3384. shell_InteractiveHelp_SendBubbleHelpMessage(_c_IntHelp_HelpBubble_Off%):
  3385. shell_InteractiveHelpBubbleHelpToggle:
  3386. shell_InteractiveHelp_SendBubbleHelpMessage(_c_IntHelp_HelpBubble_Toggle%):
  3387. shell_InteractiveHelp_SendBubbleHelpMessage(qF%):
  3388. XC%:XC%=
  3389. shell_HeapBlockFetch(256):XC%!0=28:XC%!&C=0:XC%!16=_c_IntHelp_Bubble_Control%:XC%!20=qF%:XC%!24=0:
  3390. &400E7,18,XC%,0:
  3391. shell_HeapBlockReturn(XC%):
  3392. _shell_Memory_Init:_m_MemLib_HeapBase%=0:_m_MemLib_HeapEnd%=0:_m_MemLib_MemClaimed%=0:_m_MemLib_NrBlocks%=0:=0
  3393. shell_HeapManagerInit(I$,XI%):
  3394. _heap_code%900:
  3395. ("LOAD "+I$+"heapcode "+
  3396. ~_heap_code%):
  3397. _heap_code%+0,XI%:
  3398. shell_HeapBlockExtend(CH%,rF%):
  3399. _heap_code%+&C,CH%,rF%:=CH%
  3400. shell_HeapBlockFetch(rF%):
  3401. _heap_code%+4,DB%,rF%:=DB%
  3402. shell_HeapBlockReturn(
  3403. pA%):
  3404. shell_HeapBlockExists(pA%)
  3405. _heap_code%+8,pA%
  3406. pA%=0:
  3407. shell_HeapBlockExists(DB%):
  3408. DB%<&8000
  3409. 99,"No heapblock defined at this address"
  3410. %]&k%=
  3411. shell_HeapBlockInfo(DB%):
  3412. shell_HeapBlockExists2(DB%):
  3413. n%,HA%,H:
  3414. DB%<&8000
  3415. %g    HA%=
  3416. &2001D,6,!(_heap_code%+28),DB%
  3417. ,,,H;n%:
  3418. %k    HA%=
  3419. :=HA%
  3420. shell_HeapBlockInfo(pA%):
  3421. 29,6,!(_heap_code%+28),pA%
  3422. ,,,H:=H
  3423. shell_HeapBlockExtendMid(pA%,rB%,EH%):
  3424. FH%:FH%=
  3425. shell_HeapBlockInfo(pA%):
  3426. _heap_code%+&C,pA%,rB%:
  3427. &400F1,_U%!&94,pA%+EH%,_U%!&94,pA%+EH%+rB%,FH%-rB%:=pA%
  3428. _shell_MenuList_Init:_c_MenuList_HeaderSize%=4:_c_MenuList_ListTerm%=-1:_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0:=0
  3429. shell_MenuList_GetSysHandle(V$):
  3430. f%,p%,qA%:
  3431. _m_MenuList_DataBlk%<>-1
  3432. yf%=0:
  3433. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:qA%=_m_MenuList_DataBlk%!f%:
  3434. $(qA%+_c_MenuList_HeaderSize%)=V$
  3435. p%=!qA%
  3436. :f%+=4:
  3437. shell_MenuList_GetIdentifier(p%):
  3438. f%,V$,qA%:
  3439. _m_MenuList_DataBlk%<>-1
  3440. `f%=0:
  3441. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:qA%=_m_MenuList_DataBlk%!f%:
  3442. qA%!0=p%
  3443. %V$=$(qA%+_c_MenuList_HeaderSize%)
  3444. :f%+=4:
  3445. shell_MenuList_AddMenu(p%,V$):
  3446. f%,qA%:
  3447. _m_MenuList_DataBlk%=-1
  3448. shell_MenuList_CreateNewList
  3449. _m_MenuList_DataBlk%=
  3450. shell_HeapBlockExtend(_m_MenuList_DataBlk%,4)
  3451. :f%=_m_MenuList_NrMenus%*4:_m_MenuList_DataBlk%!f%=
  3452. shell_HeapBlockFetch(_c_MenuList_HeaderSize%+
  3453. (V$)+1):qA%=_m_MenuList_DataBlk%!f%:qA%!0=p%:$(qA%+_c_MenuList_HeaderSize%)=V$:_m_MenuList_NrMenus%+=1
  3454. I_m_MenuList_DataBlk%!(_m_MenuList_NrMenus%*4)=_c_MenuList_ListTerm%:
  3455. shell_MenuList_DeleteMenu(p%):
  3456. f%,qA%:
  3457. _m_MenuList_NrMenus%>0
  3458. _m_MenuList_NrMenus%=1
  3459. shell_MenuList_DestroyList
  3460. f%=0:
  3461. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:qA%=_m_MenuList_DataBlk%!f%:
  3462. qA%!0=p%
  3463. -$(qA%+_c_MenuList_HeaderSize%)="":qA%!0=0
  3464. :f%+=4:
  3465. shell_MenuList_SaveList(Y$):
  3466. f%,V$,qA%,u%:
  3467. _m_MenuList_DataBlk%<>-1
  3468. f%=0:u%=
  3469. (Y$):
  3470. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:qA%=_m_MenuList_DataBlk%!f%:V$=$(qA%+_c_MenuList_HeaderSize%):
  3471. #u%,V$:f%+=4:
  3472. #u%,"":
  3473. ("SetType "+Y$+" FFF")
  3474. shell_MenuList_CreateNewList:
  3475. shell_MenuList_DestroyList:_m_MenuList_DataBlk%=
  3476. shell_HeapBlockFetch(8):_m_MenuList_DataBlk%!4=_c_MenuList_ListTerm%:
  3477. shell_MenuList_DestroyList:
  3478. _m_MenuList_DataBlk%<>-1
  3479. shell_HeapBlockReturn(_m_MenuList_DataBlk%):_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0
  3480. _shell_Menus_Init:_c_Menu_MinMenuItems%=&A:_m_Menu_HandleLastOpened%=-1:_m_Menu_SubLastOpened%=-1:_m_Menu_LastXPos%=0:_m_Menu_LastYPos%=0:_m_Menu_MovePointerOnPopup%=
  3481. :_m_WimpColMen_Handle%=-1:=0
  3482. shell_OpenMenu(QA%,RA%,p%):
  3483. shell_ExReg_FontMenu_Loaded
  3484. shell_FontMenu_GetHandle
  3485. &400D4,,p%,QA%-64,RA%
  3486. _Q%!0=QA%:_Q%!4=RA%:
  3487. &65BC5,p%,_Q%
  3488. _Q%!0=QA%:_Q%!4=RA%:
  3489. &65BC5,p%,_Q%
  3490. :_m_Menu_HandleLastOpened%=p%:_m_Menu_LastXPos%=QA%:_m_Menu_LastYPos%=RA%:_U%!52=_U%!28:_U%!56=_U%!32:
  3491. shell_MenuLastXPos:=_m_Menu_LastXPos%
  3492. shell_MenuLastYPos:=_m_Menu_LastYPos%
  3493. shell_MenuLastHandle:=_m_Menu_HandleLastOpened%
  3494. shell_MenuSubLastHandle:=_m_Menu_SubLastOpened%
  3495. shell_MenuAttachDbox(y$):
  3496. "Menu_SetSubHandle",_U%!8,
  3497. shell_MenuString(y$),1:
  3498. shell_MenuWarning(_Q%):
  3499. NI%,QA%,RA%,k%,_temp%,pA%,L$,kC%,e%:
  3500. P$:QA%=_Q%!24:RA%=_Q%!28:_U%!264=0:
  3501. _U%!20<>0
  3502. shell_DeleteWindow(_U%!20)
  3503. _Q%!20
  3504. _U%!&E4:
  3505. shell_WindowRetitle(_U%!&E4,
  3506. shell_MessageNoArgs("warning")):
  3507. shell_IconPutData(_U%!&E4,1,
  3508. shell_MessageNoArgs("SHELLMSG07"),0):
  3509. &400E8,,_U%!&E4,QA%,RA%
  3510. shell_MenuGetItemAddress(_m_Menu_HandleLastOpened%,_Q%+32):
  3511. shell_HeapBlockExists(kC%!4)
  3512. shell_MenuWarnDBox(kC%,QA%,RA%)
  3513. shell_HeapBlockFetch(32):
  3514. &45BC4,_m_Menu_HandleLastOpened%,_Q%+32
  3515. ,,e%:
  3516. shell_FindMenuWarnEvent(e%!8,L$,P$):
  3517. shell_HeapBlockReturn(e%):
  3518. shell_MenuWarnSubMenu(_Q%!20,QA%,RA%,L$,P$)
  3519. shell_MenuWarnDBox(DB%,QA%,RA%):
  3520. h%,w%,k%:
  3521. '69h%=DB%!4:
  3522. shell_CreateWindow($h%!0,w%):
  3523. $h%!4<>""
  3524. '@ k%=
  3525. ("FN"+$h%!4+"("+
  3526. w%+")")
  3527. $h%!8<>""
  3528. 'F k%=
  3529. ("FN"+$h%!8+"("+
  3530. w%+")")
  3531. &400E8,,w%,QA%,RA%:_U%!20=w%:
  3532. shell_MenuWarnSubMenu(oD%,QA%,RA%,L$,P$):
  3533. k%,h%,pD%,m%:_shell_FontMenuSelFN$=P$:
  3534. shell_HeapBlockExists(_U%!&E0)
  3535. shell_HeapBlockReturn(_U%!&E0)
  3536. 'VC_U%!&E0=
  3537. shell_HeapBlockFetch(
  3538. L$+1):h%=_U%!&E0:$h%=L$:
  3539. L$<>""
  3540. 'Z#k%=
  3541. ("FN"+L$+"(_U%!52,_U%!56)")
  3542. oD%=_U%!&FC
  3543. shell_HeapBlockExists(_U%!256)
  3544. shell_HeapBlockReturn(_U%!256)
  3545. m%=0:
  3546. :m%+=4:
  3547. !(_Q%+32+m%)=-1:m%+=4:_U%!256=
  3548. shell_HeapBlockFetch(m%):h%=_U%!256:m%=0:
  3549. :h%!m%=!(_Q%+32+m%):m%+=4:
  3550. !(_Q%+32+m%)=-1:h%!m%=!(_Q%+32+m%):h%=_U%!256:
  3551. "FontMenu_Select",
  3552. shell_FontMenuGetLastSelectedFont,_U%!260
  3553. ,pD%:_U%!264=1
  3554. pD%<>_U%!&FC
  3555. shell_FontMenuUpdatePtr(pD%):_U%!&FC=pD%:oD%=pD%
  3556. _U%!264=0
  3557. shell_ExReg_ColourMenu_Loaded
  3558. shell_WimpColMen_GetHandle
  3559. &400E8,,oD%,QA%,RA%:_m_Menu_SubLastOpened%=oD%:
  3560. shell_WimpColMen_GetHandle:=_m_WimpColMen_Handle%
  3561. shell_AttachSubMenu(dC%,fC%,L$):
  3562. &45BCE,dC%,fC%:
  3563. L$<>""
  3564. &45BCC,,
  3565. shell_EventListMenuWarn(dC%,fC%,L$,"")
  3566. shell_MenuNew(PB$,V$,sF%):
  3567. sF%<_c_Menu_MinMenuItems%
  3568. sF%=_c_Menu_MinMenuItems%
  3569. &45BC1,,PB$,sF%
  3570. shell_MenuList_AddMenu(p%,V$):=p%
  3571. shell_MenuAdd(o%,oA$,P$):
  3572. P$<>""
  3573. &45BC2,o%,oA$,P$
  3574. &45BC2,o%,oA$
  3575. :=NA%
  3576. shell_MenuTick(NA%,zA%):
  3577. &45BC9,NA%,zA%:
  3578. shell_MenuTickItem(NA%):
  3579. shell_MenuTick(NA%,1):
  3580. shell_MenuUnTickItem(NA%):
  3581. shell_MenuTick(NA%,0):
  3582. shell_MenuTickOnly1(p%,MA%):
  3583. &45BD1,p%,MA%:
  3584. shell_MenuTickOnly2(NA%):
  3585. &45BD1,NA%:
  3586. shell_MenuTickAllItems(p%):
  3587. shell_MenuTick(p%,
  3588. shell_MenuUntickAllItems(p%):
  3589. shell_MenuTick(p%,
  3590. shell_MenuShade(o%,zA%):
  3591. &45BCB,o%,zA%:
  3592. shell_MenuShadeAllItems(p%):
  3593. shell_MenuShade(p%,
  3594. shell_MenuUnshadeAllItems(p%):
  3595. shell_MenuShade(p%,
  3596. shell_MenuDotted(NA%,zA%):
  3597. &45BCA,NA%,zA%:
  3598. shell_MenuColours(NA%,TF%,UF%):
  3599. &45BD0,NA%,TF%,UF%:
  3600. shell_MenuWritable(NA%,zA%,XB%,RA$):
  3601. &45BCD,NA%,zA%,XB%,RA$:
  3602. shell_MenuPutData(NA%,E$):
  3603. &45BC8,NA%,E$:
  3604. shell_MenuPutTitle(p%,d$):
  3605. shell_MenuPutData(p%,d$):
  3606. shell_MenuSortItems(AA%,VA$,iI%,QD%,tF%):
  3607. oC%:oC%=
  3608. shell_MenuGetNrItems(AA%)-1:_shell_MS_handle%=AA%:
  3609. tF%>oC%
  3610. tF%=oC%
  3611. VA$=""
  3612. VA$="_shell_MS_comp"
  3613. &406C0:
  3614. shell_QuickSort(VA$,"_shell_MS_swap",iI%,QD%,tF%):
  3615. &406C1:
  3616. shell_MenuGetNrItems(p%):
  3617. AA%,i%,KH%:
  3618. &45BC7,p%
  3619. AA%:AA%+=28:
  3620. :i%=(AA%?0
  3621. &80):KH%+=1:AA%+=24:
  3622. i%:=KH%
  3623. shell_MenuGetNrDotted(p%):
  3624. AA%,i%,VE%:
  3625. &45BC7,p%
  3626. AA%:AA%+=28:
  3627. :i%=(AA%?0
  3628. &80):
  3629. (AA%?0
  3630. VE%+=1
  3631. AA%+=24:
  3632. i%=-1:=VE%
  3633. shell_MenuGetItemHandler(p%,uF%):
  3634. mB%,f%,WA$:mB%=
  3635. shell_HeapBlockFetch(8):mB%!0=uF%:mB%!4=-1:
  3636. &45BC4,p%,mB%
  3637. WA$=""
  3638. WA$=$(f%)
  3639. shell_HeapBlockReturn(mB%):=WA$
  3640. shell_MenuGetItemText(p%,uF%):
  3641. mB%,f%,K$:mB%=
  3642. shell_HeapBlockFetch(8):mB%!0=uF%:mB%!4=-1:
  3643. &45BC4,p%,mB%
  3644. ,,f%:K$=$(f%!&C):
  3645. shell_HeapBlockReturn(mB%):=K$
  3646. shell_MenuGetItemHandle(p%,AC%):
  3647. f%,NA%,n%:f%=
  3648. shell_HeapBlockFetch(40):
  3649. &65BC4,p%,AC%
  3650. ,,f%;n%:
  3651.     NA%=0
  3652. NA%=f%!8
  3653. shell_HeapBlockReturn(f%):=NA%
  3654. shell_MenuGetItemHeight(p%):
  3655. &45BC7,p%
  3656. AA%:=AA%!20
  3657. shell_MenuCalculateHeight(p%):
  3658. VA%:VA%=
  3659. shell_MenuGetNrItems(p%)*
  3660. shell_MenuGetItemHeight(p%):=VA%+(
  3661. shell_MenuGetNrDotted(p%)*24)
  3662. shell_MenuDelete(p%,uI%):
  3663. f%,KA%,r%:
  3664. p%<>0
  3665. &65BC3,p%,uI%:
  3666. shell_MenuList_DeleteMenu(p%)
  3667. shell_MenuOpenLast:
  3668. &65BC5,_m_Menu_HandleLastOpened%:
  3669. shell_MenuCloseAll:
  3670. &400D4,,-1:
  3671. shell_MenuMakeFromFile(d$,V$,BB$,x$):
  3672. p%,X%,C$,k%,oC%:
  3673. shell_FileExists(x$)
  3674. (x$):oC%=0:
  3675. C$<>""
  3676. C$,1)<>"#"
  3677. oC%+=1
  3678. #X%=0:p%=
  3679. shell_MenuNew(d$,V$,oC%):
  3680. C$<>""
  3681. C$,1)<>"#"
  3682. shell_MenuAdd(p%,C$,BB$)
  3683. shell_AttachColourSubMenu(NA%,p%,CB$):
  3684. shell_AttachSubMenu(NA%,p%,CB$):
  3685. shell_MenuMovePointerOnPopup(BA%):
  3686. )0!_m_Menu_MovePointerOnPopup%=
  3687. _m_Menu_MovePointerOnPopup%=
  3688. shell_MenuPointerMovesOnPopup:=_m_Menu_MovePointerOnPopup%
  3689. _shell_Messages_Init:
  3690. _MESSAGES_WORK_BLK%256:_MESSAGE_QUIT=0:_MESSAGE_DATASAVE=1:_MESSAGE_DATASAVEACK=2:_MESSAGE_DATALOAD=3:_MESSAGE_DATALOADACK=4:_MESSAGE_RAMFETCH=6:_MESSAGE_RAMTRANSMIT=7:_MESSAGE_PREQUIT=8:_MESSAGE_PALETTECHANGE=9
  3691. _MESSAGE_SAVEDESKTOP=&A:_MESSAGE_SHUTDOWN=&E:_MESSAGE_HELP=&502:_MESSAGE_MENUWARNING=&400C0:_MESSAGE_MODECHANGE=&400C1:_MESSAGE_TASKINIT=&400C2:_MESSAGE_TASKCLOSEDOWN=&400C3:_MESSAGE_TASKNAMEIS=&400C7:_MESSAGE_DESKFONT_CHANGED=&400CF
  3692. )f`_MESSAGE_COLOURPICKERCOLOURCHOICE=&47700:_MESSAGE_COLOURPICKERCLOSEDIALOGUEREQUEST=&47702:=0
  3693. shell_BroadcastMessage(qF%,FA$):
  3694. MH%:MH%=(
  3695. (FA$)+30)
  3696. 3:_MESSAGES_WORK_BLK%!&C=0:_MESSAGES_WORK_BLK%!16=qF%:$(_MESSAGES_WORK_BLK%+20)=FA$+
  3697. (0):_MESSAGES_WORK_BLK%!0=MH%:
  3698. &600E7,17,_MESSAGES_WORK_BLK%,0:
  3699. _shell_OS_Init:_m_OS_VAR_BUFFER_SIZE%=256:
  3700. _m_OS_VAR_BUFFER%_m_OS_VAR_BUFFER_SIZE%:_m_OS_RiscOS_3_Found%=
  3701. shell_OSModuleCheckVersion("UtilityModule",3.1):=0
  3702. shell_RO3_Available:=_m_OS_RiscOS_3_Found%
  3703. shell_OSCheckVersion(M):
  3704. HA%:HA%=
  3705. shell_OSModuleCheckVersion("UtilityModule",M):=HA%
  3706. shell_OSModuleCheckVersion(DB$,M):
  3707. cC%,R$,i%:
  3708. ("Set Module$Check Y"):
  3709. ("RMEnsure "+DB$+" "+
  3710. M+" Set Module$Check N"):
  3711. 35,"Module$Check",_m_OS_VAR_BUFFER%,256,0,0
  3712. ,,cC%:_m_OS_VAR_BUFFER%?cC%=&D:
  3713. ("Unset Module$Check"):R$=$_m_OS_VAR_BUFFER%:
  3714. R$="N"
  3715. shell_OSVarExists(XA$):
  3716. &20023,XA$,_m_OS_VAR_BUFFER%,-1,0,0
  3717. shell_OSVarGetVal(XA$,Z):
  3718. YA$,F,wI%,s%:
  3719. &20023,XA$,_m_OS_VAR_BUFFER%,_m_OS_VAR_BUFFER_SIZE%,0,-3*(Z=
  3720. ,,F,wI%:
  3721. F-1:YA$=YA$+
  3722. (_m_OS_VAR_BUFFER%?s%):
  3723. s%:=YA$
  3724. shell_OSReadCommandArg(a):
  3725. vF%,i$,a%:i$="":a%=0:
  3726. vF%?a%<>0:i$+=
  3727. (vF%?a%):a%+=1:
  3728. 1:i$=
  3729. 34)+1):i$=
  3730. 34)+2)
  3731. _shell_Pointer_Init:_c_PointerIn_RecSize%=20:
  3732. _m_PointerIn_Anchor%4:
  3733. _m_PointerIn_DataBlk%4:!_m_PointerIn_Anchor%=0:!_m_PointerIn_DataBlk%=0:_m_PointerIn_DataOffset%=0:_c_PointerOut_RecSize%=20:
  3734. _m_PointerOut_Anchor%4:
  3735. _m_PointerOut_DataBlk%4
  3736. !_m_PointerOut_Anchor%=0:!_m_PointerOut_DataBlk%=0:_m_PointerOut_DataOffset%=0:_m_Pointer_SetShape_Reason%=36:_m_Pointer_SetShape_Ptr_Nr%=2:_m_Pointer_ShapeChanged%=
  3737. :_m_Pointer_CurrentShape$="":
  3738. _m_Pointer_WorkBuffer%4:
  3739. _m_Pointer_GetInfoBlk%20:=0
  3740. shell_AttachPointerEnteringWindowHandler(b%,B$):
  3741. c%,a%,A$,q%,bA%:
  3742. shell_GetWindowIdentifier(b%):a%=
  3743. Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
  3744. ):c%=!_m_PointerIn_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  3745. !_m_PointerIn_DataBlk%=0
  3746. *Q9!_m_PointerIn_DataBlk%=
  3747. shell_HeapBlockFetch(
  3748. (B$)+1)
  3749. :q%=c%+16:
  3750. Evnts_UpdateData(q%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%,B$)
  3751. shell_EvntHandle_PointerEnteringWindow(_window_handle%):
  3752. A$,a%,j%,FA%,v%,B$:
  3753. k%:A$=
  3754. shell_GetWindowIdentifier(_window_handle%):
  3755. A$<>""
  3756. *j[a%=
  3757. Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
  3758. a%>=0
  3759. *ltj%=!_m_PointerIn_Anchor%+a%:FA%=j%!16:v%=!_m_PointerIn_DataBlk%:B$=$(v%+FA%):k%=
  3760. ("FN"+B$+"( _window_handle% )")
  3761. shell_AttachPointerLeavingWindowHandler(b%,B$):
  3762. c%,a%,A$,q%,bA%:
  3763. shell_GetWindowIdentifier(b%):a%=
  3764. Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
  3765. ):c%=!_m_PointerOut_Anchor%:bA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  3766. !_m_PointerOut_DataBlk%=0
  3767. :!_m_PointerOut_DataBlk%=
  3768. shell_HeapBlockFetch(
  3769. (B$)+1)
  3770. :q%=c%+16:
  3771. Evnts_UpdateData(q%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%,B$)
  3772. shell_EvntHandle_PointerLeavingWindow(_window_handle%):
  3773. A$,a%,j%,FA%,v%,B$:
  3774. k%:A$=
  3775. shell_GetWindowIdentifier(_window_handle%):
  3776. A$<>""
  3777. Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
  3778. a%>=0
  3779. vj%=!_m_PointerOut_Anchor%+a%:FA%=j%!16:v%=!_m_PointerOut_DataBlk%:B$=$(v%+FA%):k%=
  3780. ("FN"+B$+"( _window_handle% )")
  3781. shell_PointerResetShape:
  3782. shell_PointerChangeShape(sA$,NH%,IK%):
  3783. &400E9,_m_Pointer_SetShape_Reason%,,sA$,_m_Pointer_SetShape_Ptr_Nr%,NH%,NH%:_m_Pointer_ShapeChanged%=
  3784. :_m_Pointer_CurrentShape$=sA$:
  3785. shell_PointerResetShape:
  3786. _m_Pointer_ShapeChanged%=
  3787. ("Pointer"):_m_Pointer_ShapeChanged%=
  3788. :_m_Pointer_CurrentShape$=""
  3789. shell_PointerGetCurrentShape:=_m_Pointer_CurrentShape$
  3790. shell_PointerIsChanged:=_m_Pointer_ShapeChanged%
  3791. shell_PointerGetPosition(
  3792. XA%):
  3793. &400CF,,_m_Pointer_GetInfoBlk%:WA%=_m_Pointer_GetInfoBlk%!0:XA%=_m_Pointer_GetInfoBlk%!4:
  3794. shell_PointerGetWindow(
  3795. &400CF,,_m_Pointer_GetInfoBlk%:b%=_m_Pointer_GetInfoBlk%!&C:
  3796. shell_PointerGetIcon(
  3797. &400CF,,_m_Pointer_GetInfoBlk%:g%=_m_Pointer_GetInfoBlk%!16:
  3798. shell_PointerGetMouseButton(
  3799. eC%):
  3800. &400CF,,_m_Pointer_GetInfoBlk%:eC%=_m_Pointer_GetInfoBlk%!8:
  3801. shell_PointerIsBelowWindowCentre(b%):
  3802. i%,YA%,ZA%,jA%,kA%,WA%,XA%:
  3803. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):
  3804. shell_PointerGetPosition(WA%,XA%):
  3805. XA%<(ZA%+(kA%-ZA%)/2)
  3806. shell_PointerIsAboveWindowCentre(b%):
  3807. i%,YA%,ZA%,jA%,kA%,WA%,XA%:
  3808. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):
  3809. shell_PointerGetPosition(WA%,XA%):
  3810. XA%>=(ZA%+(kA%-ZA%)/2)
  3811. shell_PointerIsRightOfWindowCentre(b%):
  3812. i%,YA%,ZA%,jA%,kA%,WA%,XA%:
  3813. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):
  3814. shell_PointerGetPosition(WA%,XA%):
  3815. WA%>=(YA%+(jA%-YA%)/2)
  3816. shell_PointerIsLeftOfWindowCentre(b%):
  3817. i%,YA%,ZA%,jA%,kA%,WA%,XA%:
  3818. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):
  3819. shell_PointerGetPosition(WA%,XA%):
  3820. WA%<(YA%+(jA%-YA%)/2)
  3821. shell_PointerSaveEvnts(u%):
  3822. Evnts_SaveEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
  3823. Evnts_SaveEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
  3824. shell_PointerLoadEvnts(u%):
  3825. Evnts_LoadEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
  3826. Evnts_LoadEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
  3827. shell_PointerGetMovementVector(OH%,PH%,WA%,XA%,
  3828. iB%):hB%=WA%-OH%:iB%=XA%-PH%:QC%=
  3829. :RC%=
  3830. :TC%=
  3831. :SC%=
  3832. (hB%)>
  3833. (iB%)
  3834. WA%>OH%
  3835.     TC%=
  3836. XA%<PH%
  3837.     RC%=
  3838. hB%<>0
  3839. iB%<>0
  3840. _m_evnts_DragIconLastScrollUp%=QC%:_m_evnts_DragIconLastScrollDown%=RC%:_m_evnts_DragIconLastScrollLeft%=SC%:_m_evnts_DragIconLastScrollRight%=TC%:_m_evnts_DragIconLastDX%=hB%:_m_evnts_DragIconLastDY%=iB%
  3841. shell_PointerGetLastMovementVector(
  3842. iB%):QC%=_m_evnts_DragIconLastScrollUp%:RC%=_m_evnts_DragIconLastScrollDown%:SC%=_m_evnts_DragIconLastScrollLeft%:TC%=_m_evnts_DragIconLastScrollRight%:hB%=_m_evnts_DragIconLastDX%
  3843. "iB%=_m_evnts_DragIconLastDY%:
  3844. shell_PointerLimit(b%):
  3845. shell_MouseLimit(b%):
  3846. shell_PointerRemoveLimits:
  3847. shell_MouseRemoveLimits:
  3848. _shell_Poll_Init:
  3849. _c_POLL_BLK%256:_POLL_EARLIEST_TIME%=0:_POLL_INTERVAL%=&64:_POLL_PREVINTERVAL%=0:
  3850. shell_PollSetInterval(_POLL_INTERVAL%):
  3851. shell_PollSetPrevInterval(_POLL_INTERVAL%):
  3852. _POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%
  3853. ?_c_poll_mask_unset%=-1:_m_poll_mask%=_c_poll_mask_unset%:=0
  3854. shell_PollIdle(EB%,RD%):
  3855. _U%!&64
  3856. "XWimpExt_PrePoll"
  3857. &400E1,EB%,_c_POLL_BLK%,_POLL_EARLIEST_TIME%
  3858. _U%!&64
  3859. "XWimpExt_Action",_U%!&94,_c_POLL_BLK%,DC%
  3860. shell_PollSetInterval(xF%):_POLL_INTERVAL%=xF%:
  3861. shell_PollSetPrevInterval(xF%):_POLL_PREVINTERVAL%=xF%:
  3862. shell_PollReadInterval:=_POLL_INTERVAL%
  3863. shell_PollReadPrevInterval:=_POLL_PREVINTERVAL%
  3864. shell_Poll_I(EB%,RD%):
  3865. _U%!&64
  3866. "XWimpExt_PrePoll"
  3867. _m_poll_mask%<>_c_poll_mask_unset%
  3868. &400C7,_m_poll_mask%,_Q%
  3869. &400C7,EB%,_Q%
  3870. _U%!&64
  3871. "XWimpExt_Action",_U%!&94,_Q%,DC%
  3872. &A1686,DC%,,RD%:=DC%
  3873. poll(EB%,RD%):
  3874. _U%!&64
  3875. "XWimpExt_PrePoll"
  3876. _m_poll_mask%<>_c_poll_mask_unset%
  3877. &400C7,_m_poll_mask%,_Q%
  3878. &400C7,EB%,_Q%
  3879. _U%!&64
  3880. "XWimpExt_Action",_U%!&94,_Q%,pA%
  3881. shell_PollAllowNullEvents:
  3882. _m_poll_mask%=_c_poll_mask_unset%
  3883. ,61_m_poll_mask%=0:_m_poll_mask%=_m_poll_mask%
  3884. shell_PollDisallowNullEvents:
  3885. _m_poll_mask%=_c_poll_mask_unset%
  3886. ,A2_m_poll_mask%=0:_m_poll_mask%=_m_poll_mask%
  3887. _shell_PopUps_Init:=0
  3888. _shell_Printers_Init:=0
  3889. shell_PrinterOnLine:
  3890. SH%,TH%:SH%=
  3891. (-4):
  3892. 2,1,0,1,0,1,0:
  3893. >30:TH%=
  3894. (-4)<SH%):*FX21,3
  3895. 3:=TH%:B
  3896. _shell_ProgEvnts_Init:_m_ProgEvnts_DeskFontHandle%=-1:_m_ProgEvnts_DeskFontChangeHandlerFN$="":_m_ProgEvnts_PaletteChangeHandlerFN$="":_m_ProgEvnts_ModeChangeHandlerFN$="":_m_ProgEvnts_SaveDesktopHandlerFN$=""
  3897. _m_ProgEvnts_TaskInitialiseHandlerFN$="":_m_ProgEvnts_TaskCloseDownHandlerFN$="":_m_ProgEvnts_ShutdownHandlerFN$="":_m_ProgEvnts_PreQuitHandlerFN$="":=0
  3898. shell_AttachDeskFontChangeHandler(F$):
  3899. shell_OSModuleCheckVersion("UtilityModule",3.5)
  3900. F$<>""
  3901. ,_m_ProgEvnts_DeskFontChangeHandlerFN$=F$
  3902. shell_ProgEvnts_DeskFontChanged(RJ%):
  3903. k%:_m_ProgEvnts_DeskFontHandle%=RJ%:
  3904. _m_ProgEvnts_DeskFontChangeHandlerFN$<>""
  3905. ("FN"+_m_ProgEvnts_DeskFontChangeHandlerFN$+"("+
  3906. _m_ProgEvnts_DeskFontHandle%+")")
  3907. shell_AttachPaletteChangeHandler(F$):
  3908. F$<>""
  3909. 9_m_ProgEvnts_PaletteChangeHandlerFN$=F$:k%=
  3910. ("FN"+F$)
  3911. shell_ProgEvnts_PaletteChanged:
  3912. _m_ProgEvnts_PaletteChangeHandlerFN$<>""
  3913. ("FN"+_m_ProgEvnts_PaletteChangeHandlerFN$)
  3914. shell_AttachModeChangeHandler(F$):
  3915. F$<>""
  3916. -*6_m_ProgEvnts_ModeChangeHandlerFN$=F$:k%=
  3917. ("FN"+F$)
  3918. shell_ProgEvnts_ModeChanged:
  3919. _m_ProgEvnts_ModeChangeHandlerFN$<>""
  3920. -<0k%=
  3921. ("FN"+_m_ProgEvnts_ModeChangeHandlerFN$)
  3922. shell_AttachSaveDesktopHandler(F$):
  3923. F$<>""
  3924. -T)_m_ProgEvnts_SaveDesktopHandlerFN$=F$
  3925. shell_ProgEvnts_SaveDesktop(u%):
  3926. _m_ProgEvnts_SaveDesktopHandlerFN$<>""
  3927. -hAAA$=
  3928. ("FN"+_m_ProgEvnts_SaveDesktopHandlerFN$)+
  3929. (&A):
  3930. AA$=""
  3931. -n%AA$="Run "+
  3932. shell_GetAppDir+
  3933. &C,2,u%,AA$,
  3934. (AA$)
  3935. shell_AttachTaskInitialiseHandler(F$):
  3936. F$<>""
  3937. ,_m_ProgEvnts_TaskInitialiseHandlerFN$=F$
  3938. shell_ProgEvnts_TaskInitialise(yF%,JB$):
  3939. _m_ProgEvnts_TaskInitialiseHandlerFN$<>""
  3940. ("FN"+_m_ProgEvnts_TaskInitialiseHandlerFN$+"("+
  3941. yF%+","+
  3942. (34)+JB$+
  3943. (34)+")")
  3944. shell_AttachTaskCloseDownHandler(F$):
  3945. F$<>""
  3946. +_m_ProgEvnts_TaskCloseDownHandlerFN$=F$
  3947. shell_ProgEvnts_TaskCloseDown(yF%):
  3948. _m_ProgEvnts_TaskCloseDownHandlerFN$<>""
  3949. ("FN"+_m_ProgEvnts_TaskCloseDownHandlerFN$+"("+
  3950. yF%+")")
  3951. shell_AttachShutdownHandler(F$):
  3952. F$<>""
  3953. &_m_ProgEvnts_ShutdownHandlerFN$=F$
  3954. shell_ProgEvnts_Shutdown:
  3955. _m_ProgEvnts_ShutdownHandlerFN$<>""
  3956. ("FN"+_m_ProgEvnts_ShutdownHandlerFN$)
  3957. shell_AttachPreQuitHandler(F$):
  3958. F$<>""
  3959. %_m_ProgEvnts_PreQuitHandlerFN$=F$
  3960. shell_ProgEvnts_PreQuit(yA%):
  3961. k%,e%,zF%,_F%,s%:
  3962. _m_ProgEvnts_PreQuitHandlerFN$<>""
  3963. shell_HeapBlockFetch(256):zF%=yA%!0:
  3964. 4:e%!s%=_Q%!s%:
  3965. s%:_F%=e%!4:
  3966. zF%<24
  3967. AG%=0
  3968. AG%=e%!20
  3969. Me%!&C=e%!8:
  3970. &400E7,19,e%,_F%:
  3971. ("FN"+_m_ProgEvnts_PreQuitHandlerFN$)<>0
  3972. _closedown%=
  3973. !e%=24:e%!24=508:
  3974. &400E7,8,e%,_F%:_closedown%=
  3975. shell_HeapBlockReturn(e%)
  3976. _shell_Sliders_Init:_m_Sliders_CurrentSliderHandle%=-1:_m_Sliders_DragInProgess%=
  3977. :_m_Sliders_LastXPos%=-1:_m_Sliders_LastYPos%=-1:_m_Sliders_SliderIcon%=-1:_m_Sliders_MaxLength%=-1:_m_Sliders_MaxHeight%=-1:_m_Slider_NotifyFN$=""
  3978. .d}_m_Slider_CurrentValue%=-1:
  3979. _m_Sliders_IconBlk%50:
  3980. _m_Sliders_DragBlk%50:
  3981. _m_Sliders_MPtrBlk%20:
  3982. _m_Sliders_WorkBlk%50:=0
  3983. shell_SliderSetValue(SB%,_value%):
  3984. c%,c%,WH%,XH%,SA%:
  3985. CA%,aA$,l%,wJ%,yJ%:
  3986. zJ%,AK%,EK%,k%,aA$:
  3987. T$,fB%,qC%,CG%:
  3988. SB%<0
  3989. c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=SB%:WH%=c%!&C:XH%=c%!16:SA%=c%!20:qC%=c%!36:aA$=$c%:CA%=
  3990. shell_GetWindowHandleList(aA$):b%=!CA%:
  3991. b%<=0
  3992. b%=CA%!4
  3993. :_m_Sliders_IconBlk%!0=b%:_m_Sliders_IconBlk%!4=XH%:
  3994. &400CE,,_m_Sliders_IconBlk%:EG%=_m_Sliders_IconBlk%!16:XE%=_m_Sliders_IconBlk%!8:YE%=_m_Sliders_IconBlk%!&C:GG%=_m_Sliders_IconBlk%!20:CG%=
  3995. (YE%)-
  3996. (GG%):DG%=EG%-XE%:_m_Sliders_IconBlk%!4=WH%
  3997. &400CE,,_m_Sliders_IconBlk%:
  3998. &400C4,,_m_Sliders_IconBlk%:_m_Sliders_IconBlk%!4=b%:
  3999. _value%>&64
  4000. _value%=&64
  4001. _value%<=0
  4002. _value%=0:
  4003. DG%>CG%
  4004. 0_m_Sliders_IconBlk%!16=_m_Sliders_IconBlk%!8
  4005. _m_Sliders_IconBlk%!20=_m_Sliders_IconBlk%!&C
  4006. DG%>CG%
  4007. F_m_Sliders_IconBlk%!16=XE%+(EG%*(_value%/&64))-(XE%*(_value%/&64))
  4008. _m_Sliders_IconBlk%!20=YE%+(GG%*(_value%/&64))-(YE%*(_value%/&64))
  4009. :c%!36=_value%:
  4010. &400C2,,_m_Sliders_IconBlk%+4:
  4011. &400D1,b%,XE%,YE%,EG%,GG%:fB%=!_EVNTS_SLIDERS_DATA%:
  4012. fB%>0
  4013. T$=$(fB%+c%!32)
  4014. T$<>""
  4015. ("FN"+T$+"("+
  4016. _value%+")")
  4017. SA%>=0
  4018. shell_IconPutData(b%,SA%,
  4019. (_value%),
  4020. shell_SliderGetHandle(b%,g%):
  4021. A$,c%,a%,SB%:A$=
  4022. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
  4023. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  4024. SB%=-1
  4025. SB%=a%
  4026. :=SB%
  4027. shell_AttachSliderHandler(b%,cH%,qD%,zC%,HG%,fH%,a$):
  4028. oJ%,a%,A$,c%,q%:A$=
  4029. shell_GetWindowIdentifier(b%):a%=
  4030. Evnts_GetEvntListOffset(A$,qD%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  4031. ):c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=qD%
  4032. Nc%!16=cH%:c%!20=zC%:c%!24=HG%:c%!28=fH%:c%!36=-1:
  4033. !_EVNTS_SLIDERS_DATA%=0
  4034. 2!_EVNTS_SLIDERS_DATA%=
  4035. shell_HeapBlockFetch(1)
  4036. :q%=c%+32:
  4037. Evnts_UpdateData(q%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%,a$):
  4038. shell_AttachClickSelect(b%,qD%,"_Sliders_BarClick"):
  4039. shell_AttachClickSelect(b%,cH%,"_Sliders_BackgroundClick"):
  4040. HG%>=0
  4041. shell_AttachBumpHandler(b%,zC%,HG%,fH%,0,&64,1,
  4042. ,"_Sliders_Bump","")
  4043. _Sliders_Bump(kD%,eC%):
  4044. b%,g%,c%,TB%,PA%,RB%:
  4045. x%,SB%,A$,YD%,ZD%:b%=
  4046. shell_GetLastWindowClicked:g%=
  4047. shell_GetLastIconClicked:A$=
  4048. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:RB%=c%!0:PA%=c%!4:TB%=_m_Evnts_HeaderSize%:x%=
  4049. 2YD%=c%!(TB%+24):ZD%=c%!(TB%+28):
  4050. A$=$(c%+TB%)
  4051. YD%=g%
  4052. ZD%=g%
  4053. :SB%=TB%
  4054. :TB%+=_EVNTS_SLIDERS_REC_SIZE%:
  4055. TB%>=RB%
  4056. shell_SliderSetValue(SB%,kD%)
  4057. (kD%)
  4058. shell_HandleSlider(b%,g%):
  4059. A$,c%,hH%,SA%:
  4060. TB%,T$,fB%,qC%,a%:A$=
  4061. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
  4062. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  4063. a%=-1
  4064. /7^g%+=1:a%=
  4065. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  4066. :_m_Sliders_CurrentSliderHandle%=a%:
  4067. a%>-1
  4068. /=YTB%=c%+a%:hH%=!(TB%+16):SA%=!(TB%+20):qC%=!(TB%+36):fB%=!_EVNTS_SLIDERS_DATA%:
  4069. fB%>0
  4070. T$=$(fB%+TB%!32)
  4071. :_m_Sliders_DragBlk%!0=b%:_m_Sliders_DragBlk%!4=hH%:
  4072. &400CE,,_m_Sliders_DragBlk%:_m_Sliders_MaxLength%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!8:_m_Sliders_MaxHeight%=_m_Sliders_DragBlk%!20-_m_Sliders_DragBlk%!&C:_m_Sliders_SliderIcon%=g%
  4073. _m_Sliders_DisplayIcon%=SA%:_m_Slider_NotifyFN$=T$:_m_Slider_CurrentValue%=qC%:_m_Sliders_DragBlk%!0=b%:
  4074. &400CB,,_m_Sliders_DragBlk%:QA%=_m_Sliders_DragBlk%!4-_m_Sliders_DragBlk%!20:RA%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!24
  4075. _m_Sliders_DragBlk%!4=g%:
  4076. &400CE,,_m_Sliders_DragBlk%:_m_Sliders_DragBlk%!4=7:_m_Sliders_DragBlk%!8+=QA%:_m_Sliders_DragBlk%!&C+=RA%:_m_Sliders_DragBlk%!16+=QA%:_m_Sliders_DragBlk%!20+=RA%:_m_Sliders_DragBlk%!24=_m_Sliders_DragBlk%!8
  4077. /^__m_Sliders_DragBlk%!28=_m_Sliders_DragBlk%!&C:
  4078. _m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
  4079. /au_m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!20
  4080. _m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!28+_m_Sliders_MaxHeight%
  4081. &400D0,,_m_Sliders_DragBlk%:_m_Sliders_DragInProgess%=
  4082. shell_Slider:
  4083. b%,rD%,QA%,e%,k%,aE%,RA%:
  4084. &400CF,,_m_Sliders_MPtrBlk%:b%=_m_Sliders_MPtrBlk%!&C:rD%=!_m_Sliders_MPtrBlk%:aE%=_m_Sliders_MPtrBlk%!4:
  4085. rD%<>_m_Sliders_LastXPos%
  4086. aE%<>_m_Sliders_LastYPos%
  4087. _m_Sliders_LastXPos%=rD%:_m_Sliders_LastYPos%=aE%:e%=_m_Sliders_WorkBlk%:!e%=b%:
  4088. &400CB,,e%:QA%=rD%-e%!4:RA%=aE%-e%!16:e%!4=_m_Sliders_SliderIcon%:
  4089. &400CE,,e%:
  4090. &400C4,,e%:e%!4=b%:
  4091. _m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
  4092. e%!16=QA%:
  4093. &400C2,,e%+4:
  4094. &400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20:_value%=((QA%-e%!8)*&64)/_m_Sliders_MaxLength%:
  4095. shell_SliderSetValue(_m_Sliders_CurrentSliderHandle%,_value%)
  4096. e%!20=RA%:
  4097. &400C2,,e%+4:
  4098. &400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20+_m_Sliders_MaxHeight%:_value%=((RA%-e%!&C)*&64)/_m_Sliders_MaxHeight%
  4099. _m_Slider_NotifyFN$<>""
  4100. ("FN"+_m_Slider_NotifyFN$+"("+
  4101. _value%+")")
  4102. :_m_Sliders_LastXPos%=rD%
  4103. shell_SliderGetValue(SB%):
  4104. c%,qC%:c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=SB%:qC%=c%!36:=qC%
  4105. _Sliders_BackgroundClick(b%,g%):
  4106. k%:k%=
  4107. _Sliders_Drag(b%,g%):=0
  4108. _Sliders_Drag(b%,g%):
  4109. c%,PA%,y%,f%,A$:
  4110. x%,RB%,SB%,SA%:c%=!_EVNTS_SLIDERS_ANCHOR%:y%=_EVNTS_SLIDERS_REC_SIZE%:RB%=c%!0:PA%=c%!4:f%=_m_Evnts_HeaderSize%:A$=
  4111. shell_GetWindowIdentifier(b%):x%=
  4112. $(c%+f%)=A$
  4113. c%!(f%+16)=g%
  4114. :qD%=c%!(f%+&C):SA%=c%!(f%+20):SB%=f%
  4115. :f%+=y%:
  4116. f%>=RB%
  4117. shell_IconDragBox(b%,qD%):
  4118. SA%<>-1
  4119. shell_Slider
  4120. shell_SliderDragInProgress:=_m_Sliders_DragInProgess%
  4121. shell_SliderDragEnd:_m_Sliders_DragInProgess%=
  4122. _Sliders_BarClick(d%,t%):
  4123. shell_IconDragBox(d%,t%):=0
  4124. _shell_Sprites_Init:_c_Sprites_AreaHeaderSize%=16:_c_Sprites_ReasonInitArea%=9:_c_Sprites_ReasonLoad%=&A:_c_Sprites_ReasonGetSize%=40:_c_Sprites_ReasonRemoveLeftWastage%=54
  4125. 0%]_c_Sprites_BadNameOrPtr$="Either a sprite name or a pointer to a sprite must be given":=0
  4126. shell_SpritesGetHeaderSize:=_c_Sprites_AreaHeaderSize%
  4127. shell_SpriteAreaLoad(N$):
  4128. YC%,S%,T%:S%=
  4129. (N$):T%=
  4130. #S%+16:
  4131. #S%:YC%=
  4132. shell_HeapBlockFetch(T%):!YC%=T%:YC%!4=0:YC%!8=_c_Sprites_AreaHeaderSize%:YC%!&C=_c_Sprites_AreaHeaderSize%:
  4133. 46,521,YC%:
  4134. 46,522,YC%,N$:=YC%
  4135. shell_UserSpritesBase:=_U%!16
  4136. shell_SpriteGetPtr(TD%,b$):
  4137. bE%,f%:bE%=
  4138. shell_HeapBlockFetch(21):$bE%=b$:
  4139. 46,280,TD%,bE%
  4140. ,,f%:
  4141. shell_HeapBlockReturn(bE%):=f%
  4142. shell_NameOfFirstSprite(KB$):
  4143. X%,N%,bA$:X%=
  4144. (KB$):
  4145. #X%=4:N%=
  4146. #X%:N%+=
  4147. #X%*256:N%+=
  4148. #X%*65536:N%+=
  4149. #X%*&1000000:
  4150. #X%=N%:bA$="":
  4151. &B:bA$+=
  4152. #X%):
  4153. #X%:=bA$
  4154. shell_SpriteRename(TD%,LB$,MB$):
  4155. 46,512+26,TD%,
  4156. shell_SpriteGetPtr(TD%,LB$),MB$:
  4157. shell_SpriteAreaSave(TD%,N$):
  4158. 46,512+&C,TD%,N$:
  4159. shell_SpriteExists(UA%,M$):
  4160. UA%=1
  4161. KG%=40
  4162. KG%=256+40
  4163. 46,KG%,UA%,
  4164. shell_StringUpperCase(M$):=
  4165. shell_SpriteExistsInUserArea(M$):=
  4166. shell_SpriteExists(
  4167. shell_UserSpritesBase,M$)
  4168. shell_SpriteExistsInWimpPool(M$):=
  4169. shell_SpriteExists(1,M$)
  4170. shell_SpriteAreaInit(UA%,gI%):UA%!0=gI%:UA%!8=_c_Sprites_AreaHeaderSize%:
  4171. 46,_c_Sprites_ReasonInitArea%+256,UA%:
  4172. shell_SpriteLoad(UA%,Y$):
  4173. 46,_c_Sprites_ReasonLoad%+256,UA%,Y$:
  4174. shell_SpriteRemoveLeftWastage(UA%,M$,ZC%):
  4175. M$=""
  4176. ZC%<=0
  4177. 99,_c_Sprites_BadNameOrPtr$
  4178. 46,_c_Sprites_ReasonRemoveLeftWastage%+512,UA%,ZC%
  4179. 46,_c_Sprites_ReasonRemoveLeftWastage%+256,UA%,M$
  4180. shell_SpriteGetSize(UA%,M$,ZC%,
  4181. VA%):
  4182. M$=""
  4183. ZC%<=0
  4184. 99,_c_Sprites_BadNameOrPtr$
  4185. 46,_c_Sprites_ReasonGetSize%+512,UA%,ZC%
  4186. ,,,hA%,VA%
  4187. 46,_c_Sprites_ReasonGetSize%+256,UA%,M$
  4188. ,,,hA%,VA%
  4189. shell_SpriteGetMode(UA%,M$,ZC%,
  4190. VD%):
  4191. M$=""
  4192. ZC%<=0
  4193. 99,_c_Sprites_BadNameOrPtr$
  4194. 46,_c_Sprites_ReasonGetSize%+512,UA%,ZC%
  4195. ,,,,,,VD%
  4196. 46,_c_Sprites_ReasonGetSize%+256,UA%,M$
  4197. ,,,,,,VD%
  4198. shell_SpriteLoadAsDraw(Y$,lH%,pB%,qB%,
  4199. kI%):
  4200. rA%,mI%,UA%:
  4201. hA%,VA%,VD%,nH%,oH%:
  4202. shell_DrawCreateFile(sD%):
  4203. shell_DrawSpriteArea(sD%,lH%,UA%):kI%=UA%-sD%:rA%=sD%+sD%!4:mI%=48:
  4204. shell_SpriteLoad(UA%,Y$)
  4205. shell_SpriteRemoveLeftWastage(UA%,"",UA%+_c_Sprites_AreaHeaderSize%):
  4206. shell_SpriteGetSize(UA%,"",UA%+_c_Sprites_AreaHeaderSize%,hA%,VA%):
  4207. shell_SpriteGetMode(UA%,"",UA%+_c_Sprites_AreaHeaderSize%,VD%):
  4208. 53,VD%,4
  4209. ,,nH%:
  4210. 53,VD%,5
  4211. ,,oH%:hA%=hA%<<nH%
  4212. VA%=VA%<<oH%:$rA%="Draw":rA%!4=&C9:rA%!8=0:$(rA%+&C)="SprToDraw":rA%!24=pB%*256:rA%!28=qB%*256:rA%!32=(rA%!24)+hA%*256:rA%!36=(rA%!28)+VA%*256:pH%=5:rA%!40=pH%:rA%!44=lH%+24:rA%!48=pB%*256:rA%!52=qB%*256:rA%!56=(rA%!48)+hA%*256:rA%!60=(rA%!52)+VA%*256
  4213. _shell_StaticList_Init:_m_StaticList_WList%=0:=0
  4214. shell_StaticWindowListAddHandle(o%):
  4215. a%,m%,h%:
  4216. _m_StaticList_WList%=0
  4217. 1be_m_StaticList_WList%=
  4218. shell_HeapBlockFetch(8):_m_StaticList_WList%!0=o%:_m_StaticList_WList%!4=-1
  4219. shell_SearchStatic(o%):
  4220. a%=-1
  4221. 1n%a%=
  4222. shell_SearchStatic(0):
  4223. a%=-1
  4224. m%=0:
  4225. _m_StaticList_WList%!m%<>-1:m%+=4:
  4226. :_m_StaticList_WList%=
  4227. shell_HeapBlockExtend(_m_StaticList_WList%,4):h%=_m_StaticList_WList%+m%:h%!0=o%:h%!4=-1
  4228. h%=_m_StaticList_WList%+a%:h%!0=o%
  4229. shell_RemoveStaticWindowFromList(b%):
  4230. a%,m%,x%:x%=
  4231. :m%=0:
  4232. _m_StaticList_WList%>0
  4233. _m_StaticList_WList%!m%=b%
  4234. :_m_StaticList_WList%!m%=0
  4235. :m%+=4:
  4236. _m_StaticList_WList%!m%<>-1
  4237. shell_UpdateStaticWindowHandle(vB%,HB%):
  4238. a%:a%=
  4239. shell_SearchStatic(vB%):_m_StaticList_WList%!a%=HB%:
  4240. shell_SearchStatic(o%):
  4241. x%,m%:x%=-1:m%=0:
  4242. _m_StaticList_WList%<>0
  4243. _m_StaticList_WList%!m%<>-1:
  4244. _m_StaticList_WList%!m%=o%
  4245.     x%=m%
  4246. :m%+=4:
  4247. shell_IsWindowStatic(b%):
  4248. -1,-2:i%=
  4249. _U%!20:i%=
  4250. shell_SearchStatic(b%)>-1
  4251. :=i%:B
  4252. _shell_Strings_Init:=0
  4253. shell_GetZeroTerminatedString(pI%):
  4254. "WriteN",pI%,0
  4255. C$:=C$
  4256. shell_GetString(qH%):
  4257. wA$,cE%:
  4258. ((qH%?cE%)>31
  4259. cE%<&FF):wA$+=
  4260. (qH%?cE%):cE%+=1:
  4261. :=wA$
  4262. shell_StringStripTrailing(C$,j$):
  4263. C$,1)=j$:C$=
  4264. (C$)-1):
  4265. shell_StringStripLeading(C$,j$):
  4266. C$,1)=j$:C$=
  4267. C$,2):
  4268. shell_StringStripAll(C$,j$):
  4269. I,J:I=
  4270. C$,j$):
  4271. C$,J-1)+
  4272. C$,J+1)
  4273. I:=C$
  4274. shell_StringPadTrailing(C$,j$,jB%):
  4275. (C$)<jB%:C$=C$+
  4276. (C$),j$):
  4277. shell_StringPadLeading(C$,j$,jB%):
  4278. (C$)<jB%:C$=
  4279. (C$),j$)+C$:
  4280. shell_StringUpperCase(C$):
  4281. (C$)>0
  4282. (C$):
  4283. C$,s%,1)>="a"
  4284. C$,s%,1)<="z"
  4285. C$,s%,1)=
  4286. C$,s%,1))
  4287. shell_StringExchange(C$,cA$,OB$):
  4288. C$,cA$)
  4289. 2^0MB%=
  4290. C$,cA$):C$=
  4291. C$,MB%-1)+OB$+
  4292. C$,MB%+
  4293. shell_StringArrayGetLongest(A$(),VE%):
  4294. s%,dE%:dE%=0:
  4295. (A$(s%))>dE%
  4296. (A$(s%))
  4297. s%:=dE%
  4298. mem_to_string(JA%,a%,sI%):
  4299. JA%?a%<>sI%:C$+=
  4300. (JA%?a%):a%+=1:
  4301. _shell_WindowList_Init:=0
  4302. shell_TemplatesInit(v$,
  4303. tI%):
  4304. tD%,PG%,tH%,JB%:
  4305. uH%,MA%,eE%,b$,EA%,vH%,i%:
  4306. wH%,uD%:eE%=
  4307. shell_HeapBlockFetch(&C):MA%=0:EA%=0:uH%=
  4308. shell_FileLength(v$):xH%=
  4309. shell_HeapBlockFetch(uH%):tD%=xH%:
  4310. shell_TemplateFileInfo(v$,JB%,EA%,i%):
  4311. shell_HeapBlockFetch(4+(20*EA%)):_U%!4=vD%:yH%=
  4312. shell_HeapBlockFetch(JB%):PG%=yH%:tH%=yH%+JB%:EA%=0:uD%=4:
  4313. &600D9,,v$
  4314. ;vH%:
  4315. shell_MessageTwoArgs("SHELLMSG34","template",v$)
  4316. :$eE%="*":
  4317. &400DB,,tD%,PG%,tH%,_U%!&E8,eE%,MA%
  4318. ,,PG%,,,b$,MA%:
  4319. MA%<>0
  4320. vD%!uD%=tD%:$(vD%+uD%+4)=b$:vD%!(uD%+16)=-1:uD%+=20:
  4321. shell_Tracef0("TemplatesInit:  Template Loaded: "+b$):wH%=(tD%!84)*32:tD%+=(88+wH%):EA%+=1
  4322. MA%=0:
  4323. &400DA:_U%!0=EA%:
  4324. shell_Tracef0("TemplatesInit:Templates resource file loaded at       &"+
  4325. ~xH%+" ("+
  4326. EA%+" templates)"):
  4327. shell_Tracef0("TemplatesInit:Indirected buffer size used for loading &"+
  4328. ~JB%)
  4329. shell_MessageTwoArgs("SHELLMSG35","template",v$)
  4330. shell_MessageTwoArgs("SHELLMSG36",v$,"template")
  4331. shell_HeapBlockReturn(eE%):tI%=0:!vD%=EA%:
  4332. shell_WindowLoaded(H$):
  4333. a%,QG%:a%=
  4334. shell_GetWindowListOffset(H$):
  4335. a%>=0
  4336. shell_GetWindowListOffset(H$):
  4337. a%,EA%,UB%,m%:
  4338. (H$)>&B
  4339. shell_MessageOneArg("SHELLMSG02",H$)
  4340. iEA%=
  4341. shell_GetNrTemplatesLoaded:UB%=
  4342. shell_WindowListGetAddr+4:m%=0:a%=-1:
  4343. $(((UB%)+(20*m%))+4)=H$
  4344. a%=m%*20
  4345. :m%+=1:
  4346. a%<>-1
  4347. m%>(EA%-1):=a%
  4348. shell_GetWB(H$):
  4349. a%,VB%,UB%:a%=
  4350. shell_GetWindowListOffset(H$):
  4351. 99,H$+":"+
  4352. *UB%=
  4353. shell_WindowListGetAddr+4:
  4354. a%>=0
  4355. VB%=UB%!a%
  4356. shell_MessageOneArg("SHELLMSG03",H$)
  4357. :=VB%
  4358. shell_GetWindowHandleList(H$):
  4359. a%,CA%,UB%:a%=
  4360. shell_GetWindowListOffset(H$):UB%=
  4361. shell_WindowListGetAddr+4:
  4362. a%>=0
  4363. CA%=!(UB%+a%+16)
  4364. shell_MessageOneArg("SHELLMSG03",H$)
  4365. :=CA%
  4366. shell_CreateWindowStatic(H$,
  4367. aC%:aC%=
  4368. shell_GetWB(H$):
  4369. shell_Tracef0("DEBUG::"+
  4370. aC%):aC%!64=_U%!16:
  4371. &400C1,,aC%
  4372. shell_Tracef0("DEBUG::"+
  4373. shell_StaticWindowListAddHandle(b%):
  4374. shell_WindowListAddHandle(H$,b%):
  4375. shell_WindowListAddHandle(H$,b%):
  4376. _H%,DA%,f%,SG%:
  4377. H$=""
  4378. 99,"Bad window name passed to WindowListAddHandle"
  4379. 3CV_H%=
  4380. shell_GetWindowListOffset(H$)+16:DA%=
  4381. shell_WindowListGetAddr+4+_H%:
  4382. !DA%=-1
  4383. shell_Tracef0("DEBUG::Creating window handle list for window '"+H$+"'"):
  4384. shell_Tracef0("DEBUG::Window handle is &"+
  4385. ~b%):!DA%=
  4386. shell_HeapBlockFetch(8):f%=!DA%:f%!0=b%:f%!4=-1
  4387. DA%!16<>-1
  4388. 3Z/CA%=!DA%:f%=0:SG%=
  4389. CA%!f%<>-1:
  4390. CA%!f%=0
  4391. CA%!f%=b%:SG%=
  4392. :f%+=4:
  4393. shell_Tracef0("DEBUG::Extending window handle list for window '"+H$+"'"):
  4394. shell_Tracef0("DEBUG::Window handle is &"+
  4395. b%):!DA%=
  4396. shell_HeapBlockExtend(!DA%,4):UB%=!DA%:f%=0:
  4397. UB%!f%<>-1:f%+=4:
  4398. :UB%!(f%+0)=b%:UB%!(f%+4)=-1
  4399. shell_GetWindowIdentifier(o%):
  4400. DA%,EA%,f%,m%,BA$:EA%=
  4401. shell_GetNrTemplatesLoaded:DA%=
  4402. shell_WindowListGetAddr+4:BA$="":
  4403. -1,-2:BA$="iconbar"
  4404. DA%!16<>-1
  4405. 8CA%=DA%!16:f%=0:
  4406. CA%!f%<>-1:
  4407. CA%!f%=o%
  4408. BA$=$(DA%+4)
  4409. f%+=4:
  4410. :m%+=1:DA%+=20:
  4411. BA$<>""
  4412. m%=EA%
  4413. :=BA$
  4414. shell_RemoveHandleFromWindowList(o%):
  4415. DA%,EA%,I%,f%:EA%=
  4416. shell_GetNrTemplatesLoaded:DA%=
  4417. shell_WindowListGetAddr+4:
  4418. DA%!16<>-1
  4419. ,CA%=DA%!16:f%=0:
  4420. CA%!f%<>-1:
  4421. CA%!f%=o%
  4422. CA%!f%=0
  4423. :f%+=4:
  4424. :DA%+=20:
  4425. shell_UpdateWindowHandleList(vB%,HB%):
  4426. DA%,EA%,I%,f%:EA%=
  4427. shell_GetNrTemplatesLoaded:DA%=
  4428. shell_WindowListGetAddr+4:
  4429. DA%!16<>-1
  4430. 7CA%=DA%!16:f%=0:
  4431. CA%!f%<>-1:
  4432. CA%!f%=vB%
  4433. CA%!f%=HB%
  4434. f%+=4:
  4435. :DA%+=20:
  4436. shell_GetNrTemplatesLoaded:
  4437. DA%:DA%=
  4438. shell_WindowListGetAddr:=!DA%
  4439. shell_WindowListGetAddr:=_U%!4
  4440. shell_WindowHandleKnown(b%):
  4441. i%,DA%,x%,I%,EA%,o%:
  4442. shell_GetDynamicWindowHandle
  4443. YEA%=
  4444. shell_GetNrTemplatesLoaded:DA%=
  4445. shell_WindowListGetAddr+4:
  4446. DA%!16<>-1
  4447. 2CA%=DA%!16:f%=0:
  4448. CA%!f%<>-1:o%=CA%!f%:
  4449. o%=b%
  4450. :f%+=4:
  4451. :DA%+=20:
  4452. shell_WindowListPrint:
  4453. DA%,EA%,I%,f%:EA%=
  4454. shell_GetNrTemplatesLoaded:
  4455. shell_TraceOn:DA%=
  4456. shell_WindowListGetAddr+4:
  4457. shell_Tracef0(""):
  4458. shell_Tracef0("Current Window List ("+
  4459. (EA%)+" templates)")
  4460. shell_Tracef0("-----------------------------------------"):
  4461. shell_Tracef0($(DA%+4)+":"):
  4462. DA%!16=-1
  4463. shell_Tracef0("No windows defined for this identifier")
  4464. CA%=DA%!16:f%=0:
  4465. CA%!f%<>-1:
  4466. shell_Tracef0("  window handle &"+
  4467. ~(CA%!f%)):f%+=4:
  4468. :DA%+=20:
  4469. _shell_Windows_Init:
  4470. _c_WindowsGetStateBlk%36:
  4471. _c_WindowsGetWInfoBlk%88:
  4472. _c_WindowsGetPInfoBlk%20:
  4473. _c_WindowsSetExtentBlk%20:
  4474. _c_WindowsRedrawBlk%52:rJ%=-1:sJ%=-1:=0
  4475. shell_WindowHasTitleBar(d%):=(
  4476. shell_WindowGetFlags(d%)
  4477. 1<<26)
  4478. shell_WindowIsMoveable(d%):=(
  4479. shell_WindowGetFlags(d%)
  4480. 1<<1)
  4481. shell_WindowIsAPane(d%):=(
  4482. shell_WindowGetFlags(d%)
  4483. 1<<5)
  4484. shell_WindowIsNotBounded(d%):=(
  4485. shell_WindowGetFlags(d%)
  4486. 1<<6)
  4487. shell_WindowTrapsHotKeys(d%):=(
  4488. shell_WindowGetFlags(d%)
  4489. 1<<&C)
  4490. shell_WindowIsOpen(b%):
  4491. i%:i%=
  4492. shell_WindowGetFlags(b%)
  4493. 1<<16)
  4494. b%=-1
  4495. b%=-2
  4496. shell_WindowIsOnTop(d%):=(
  4497. shell_WindowGetFlags(d%)
  4498. 1<<17)
  4499. shell_WindowHasBeenToggled(d%):=(
  4500. shell_WindowGetFlags(d%)
  4501. 1<<18)
  4502. shell_WindowHasInputFocus(d%):=(
  4503. shell_WindowGetFlags(d%)
  4504. 1<<20)
  4505. shell_WindowHasBackIcon(d%):=(
  4506. shell_WindowGetFlags(d%)
  4507. 1<<24)
  4508. shell_WindowHasCloseIcon(d%):=(
  4509. shell_WindowGetFlags(d%)
  4510. 1<<25)
  4511. shell_WindowHasToggleIcon(d%):=(
  4512. shell_WindowGetFlags(d%)
  4513. 1<<27)
  4514. shell_WindowHasVScrollBar(d%):=(
  4515. shell_WindowGetFlags(d%)
  4516. 1<<28)
  4517. shell_WindowHasAdjustSizeIcon(d%):=(
  4518. shell_WindowGetFlags(d%)
  4519. 1<<29)
  4520. shell_WindowHasHScrollBar(d%):=(
  4521. shell_WindowGetFlags(d%)
  4522. 1<<30)
  4523. shell_WindowGetFlags(b%):
  4524. n%:_c_WindowsGetStateBlk%!0=b%:
  4525. &400CB,,_c_WindowsGetStateBlk%:n%=_c_WindowsGetStateBlk%!32:=n%
  4526. shell_WindowGetWorkAreaSize(d%,
  4527. kA%):
  4528. e%:e%=
  4529. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4530. &400CC,,e%:YA%=e%!44:ZA%=e%!48:jA%=e%!52:kA%=e%!56:
  4531. Windows_ReturnInfoBlock(e%):
  4532. shell_WindowGetTitleFlags(d%):
  4533. n%,e%:e%=
  4534. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4535. &400CC,,e%:n%=e%!60:
  4536. Windows_ReturnInfoBlock(e%):=n%
  4537. shell_WindowTitleFlags(d%):
  4538. n%,e%:e%=
  4539. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4540. &400CC,,e%:n%=e%!60:
  4541. Windows_ReturnInfoBlock(e%):=n%
  4542. shell_WindowTitleHasBorder(d%):=(
  4543. shell_WindowTitleFlags(d%)
  4544. 1<<2)
  4545. shell_WindowTitleIsSprite(d%):=(
  4546. shell_WindowTitleFlags(d%)
  4547. 1<<1)
  4548. shell_WindowTitleIsText(d%):=(
  4549. shell_WindowTitleFlags(d%)
  4550. 1<<0)
  4551. shell_WindowTitleIsHCentred(d%):=(
  4552. shell_WindowTitleFlags(d%)
  4553. 1<<3)
  4554. shell_WindowTitleIsVCentred(d%):=(
  4555. shell_WindowTitleFlags(d%)
  4556. 1<<4)
  4557. shell_WindowTitleIsFilled(d%):=(
  4558. shell_WindowTitleFlags(d%)
  4559. 1<<5)
  4560. shell_WindowTitleIsAAliased(d%):=(
  4561. shell_WindowTitleFlags(d%)
  4562. 1<<6)
  4563. shell_WindowTitleIsIndirected(d%):=(
  4564. shell_WindowTitleFlags(d%)
  4565. 1<<8)
  4566. shell_WindowGetTitle(d%):
  4567. d$,e%:e%=
  4568. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4569. &400CC,,e%:
  4570. (e%!32
  4571. 1<<26)
  4572. ((e%!60)
  4573. 256)=0
  4574. d$=$(e%+76)
  4575. d$=$(!(e%+76))
  4576. Windows_ReturnInfoBlock(e%):=d$
  4577. shell_WindowTitleBufferLength(d%):
  4578. i%,e%:e%=
  4579. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4580. &400CC,,e%:
  4581. ((e%!60)
  4582. 256)=0
  4583. 5z    i%=&C
  4584. i%=e%!84
  4585. Windows_ReturnInfoBlock(e%):=i%
  4586. shell_WindowMoveToIcon(d%,TG%,t%,FB%,GB%):
  4587. LA%:LA%=
  4588. shell_HeapBlockFetch(50):_c_WindowsGetStateBlk%!20=0:
  4589. shell_OSCheckVersion(3)
  4590. TG%=-1
  4591. !_c_WindowsGetStateBlk%=-2
  4592. !_c_WindowsGetStateBlk%=TG%
  4593. &400CB,,_c_WindowsGetStateBlk%
  4594. :LA%!0=TG%:LA%!4=t%:
  4595. &400CE,,LA%:
  4596. shell_WindowMoveTo(d%,LA%!8+FB%-_c_WindowsGetStateBlk%!20,LA%!20+GB%):
  4597. shell_HeapBlockReturn(LA%):
  4598. shell_WindowMoveTo(d%,QA%,RA%):
  4599. AI%,BI%,e%:e%=
  4600. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4601. &400CC,,e%:AI%=e%!&C-e%!4:BI%=e%!16-e%!8:e%!4=QA%:e%!8=RA%:e%!&C=QA%+AI%:e%!16=RA%+BI%:
  4602. &400C5,,e%:
  4603. &400C6,,e%:
  4604. shell_IsWindowStatic(d%)
  4605. shell_OpenWindowStatic(d%)
  4606. shell_OpenWindowDynamic2(d%,0,0)
  4607. Windows_ReturnInfoBlock(e%):
  4608. shell_WindowBringToTop(b%):
  4609. shell_WindowMoveInStack(b%,-1):
  4610. shell_WindowSendToBack(b%):
  4611. shell_WindowMoveInStack(b%,-2):
  4612. shell_WindowIconise(b%):
  4613. shell_WindowMoveInStack(b%,-3):
  4614. shell_CloseWindow(b%):
  4615. a%,cA%,jC%,A$:
  4616. j%,S$,CA%,KC%:
  4617. CI%:A$=
  4618. shell_GetWindowIdentifier(b%):
  4619. cA%=0:
  4620. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  4621. )>-1:a%=_m_Evnts_LastEvntOffset%:j%=!_EVNTS_PANES_ANCHOR%+a%:jC%=j%!16:CI%=!_EVNTS_PANES_DATA%:S$=$(CI%+jC%):CA%=
  4622. shell_GetWindowHandleList(S$):
  4623. CA%<>-1
  4624. @KC%=!CA%:_c_Evnts_PaneBlk%!0=KC%:
  4625. &400C6,,_c_Evnts_PaneBlk%
  4626. :cA%+=1:
  4627. :_c_Evnts_PaneBlk%!0=b%:
  4628. &400C6,,_c_Evnts_PaneBlk%
  4629. shell_GetDynamicWindowHandle:=_U%!20
  4630. shell_DeleteWindow(o%):
  4631. z%:z%=
  4632. shell_HeapBlockFetch(20):
  4633. oktodeletew(o%)
  4634. shell_RemoveHandleFromWindowList(o%):
  4635. o%=_U%!20
  4636. _U%!20=0
  4637. shell_RemoveStaticWindowFromList(o%)
  4638. :z%!0=o%:
  4639. &600C3,,z%:o%=0
  4640. shell_HeapBlockReturn(z%):=o%
  4641. shell_WindowCountIcons(d%):
  4642. WD%,SD%,gA%:
  4643. (_U%!&64
  4644. 1<<&A)
  4645. d%=-1
  4646. d%=-2
  4647. }WD%=
  4648. shell_HeapBlockFetch(88):!_c_WindowsGetWInfoBlk%=d%:
  4649. &400CC,,_c_WindowsGetWInfoBlk%+1:gA%=_c_WindowsGetWInfoBlk%!88
  4650. shell_HeapBlockFetch(6000):
  4651. 6!$!WD%=d%:
  4652. &400CC,,WD%:gA%=WD%!88
  4653. shell_HeapBlockReturn(WD%)
  4654. :=gA%
  4655. shell_WindowToggleBackIcon(
  4656. shell_WindowToggleFlags(d%,1<<24):
  4657. shell_WindowToggleCloseIcon(
  4658. shell_WindowToggleFlags(d%,1<<25):
  4659. shell_WindowToggleTitleBar(
  4660. shell_WindowToggleFlags(d%,1<<26):
  4661. shell_WindowToggleToggleIcon(
  4662. shell_WindowToggleFlags(d%,1<<27):
  4663. shell_WindowToggleHScrollBar(
  4664. shell_WindowToggleFlags(d%,1<<30):
  4665. shell_WindowToggleAdjustSizeIcon(
  4666. shell_WindowToggleFlags(d%,1<<29):
  4667. shell_WindowToggleVScrollBar(
  4668. shell_WindowToggleFlags(d%,1<<28):
  4669. shell_WindowToggleFlags(
  4670. d%,EB%):
  4671. e%,n%,gE%,o%:gE%=
  4672. shell_WindowIsOpen(d%):e%=
  4673. Windows_ClaimInfoBlock(d%):e%!0=d%:
  4674. &400CC,,e%:n%=e%!32:n%=(n%
  4675. EB%):e%!32=n%:
  4676. &400C3,,e%:
  4677. &400C1,,e%+4
  4678. o%:!e%=o%:
  4679. &400C5,,e%
  4680. Windows_ReturnInfoBlock(e%):
  4681. o%<>d%
  4682. shell_UpdateWindowHandle(d%,o%):
  4683. shell_UpdateWindowHandleList(d%,o%):d%=o%
  4684. shell_UpdateWindow(o%,uE%,rB%,tB%,RF%):
  4685. e%:e%=
  4686. shell_HeapBlockFetch(20):e%!0=o%:e%!4=uE%:e%!8=rB%:e%!&C=tB%:e%!16=RF%:
  4687. &400C9,,e%
  4688. &400CB,,e%:
  4689. shell_HeapBlockReturn(e%):
  4690. shell_OpenWindowDynamic2(d%,FB%,GB%):
  4691. k%,LD%:LD%=
  4692. shell_HeapBlockFetch(20):_U%!20=d%:
  4693. &400CF,,LD%:
  4694. &400D4,,d%,LD%!0+FB%,LD%!4+GB%:
  4695. shell_HeapBlockReturn(LD%):
  4696. shell_WindowGetPosition(b%,
  4697. kA%):!_c_WindowsGetStateBlk%=b%:
  4698. &400CB,,_c_WindowsGetStateBlk%:YA%=_c_WindowsGetStateBlk%!4:ZA%=_c_WindowsGetStateBlk%!8:jA%=_c_WindowsGetStateBlk%!&C:kA%=_c_WindowsGetStateBlk%!16:
  4699. shell_WindowGetScrollPos(b%,
  4700. IJ%):!_c_WindowsGetStateBlk%=b%:
  4701. &400CB,,_c_WindowsGetStateBlk%:HJ%=_c_WindowsGetStateBlk%!20:IJ%=_c_WindowsGetStateBlk%!24:
  4702. shell_WindowGetSize(b%,
  4703. KJ%):
  4704. YA%,ZA%,jA%,kA%:
  4705. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):JJ%=jA%-YA%:KJ%=kA%-ZA%:
  4706. shell_WindowGetCentre(b%,
  4707. MJ%):
  4708. YA%,ZA%,jA%,kA%:
  4709. shell_WindowGetPosition(b%,YA%,ZA%,jA%,kA%):LJ%=YA%+((jA%-YA%)/2):MJ%=ZA%+((kA%-ZA%)/2):
  4710. shell_OpenWindowDynamic(RB$,zA$,_A$):
  4711. w%,FB%,GB%,VG%,k%:VG%=
  4712. shell_GetDynamicWindowHandle:
  4713. VG%<>0
  4714. &400D4,,-1:k%=
  4715. shell_DeleteWindow(VG%)
  4716. shell_CreateWindow(RB$,w%):_c_WindowsGetStateBlk%!0=w%:
  4717. &400CB,,_c_WindowsGetStateBlk%:FB%=(_c_WindowsGetStateBlk%!4-_c_WindowsGetStateBlk%!&C)/2:GB%=(_c_WindowsGetStateBlk%!16-_c_WindowsGetStateBlk%!8)/2:_U%!20=w%:
  4718. zA$<>""
  4719. ("FN"+zA$+"("+
  4720. w%+")")
  4721. shell_OpenWindowDynamic2(w%,FB%,GB%):
  4722. _A$<>""
  4723. ("FN"+_A$+"("+
  4724. w%+")")
  4725. shell_CreateWindow(H$,
  4726. aC%:aC%=
  4727. shell_GetWB(H$):aC%!64=_U%!16:
  4728. &400C1,,aC%
  4729. shell_WindowListAddHandle(H$,b%):
  4730. Windows_ClaimInfoBlock(b%):=
  4731. shell_HeapBlockFetch(&64+(
  4732. shell_WindowCountIcons(b%)*32))
  4733. Windows_ReturnInfoBlock(JA%):
  4734. shell_HeapBlockReturn(JA%):
  4735. shell_WindowResize(TA%,NJ%,OJ%,PJ%,QJ%,gE%):
  4736. wD%:wD%=
  4737. Windows_ClaimInfoBlock(TA%):_c_WindowsSetExtentBlk%!0=NJ%:_c_WindowsSetExtentBlk%!4=OJ%:_c_WindowsSetExtentBlk%!8=PJ%:_c_WindowsSetExtentBlk%!&C=QJ%:
  4738. &400D7,TA%,_c_WindowsSetExtentBlk%:
  4739. 7")wD%!0=TA%:
  4740. &400CC,,wD%:
  4741. &400C5,,wD%
  4742. Windows_ReturnInfoBlock(wD%):
  4743. shell_WindowRetitle(
  4744. TA%,d$):
  4745. h%,z%,o%,EI%:z%=
  4746. Windows_ClaimInfoBlock(TA%):z%!0=TA%:
  4747. &400CC,,z%:
  4748. ((z%!60)
  4749. 256)=0
  4750. 76Ah%=z%+76:$h%=
  4751. d$,&B):
  4752. &400C3,,z%:
  4753. &400C1,,z%+4
  4754. o%<>TA%
  4755. shell_UpdateWindowHandle(TA%,o%):TA%=o%
  4756. EI%=z%!84:$(!(z%+76))=
  4757. d$,EI%-1):
  4758. ((z%!32)
  4759. (1<<16))<>0
  4760. &400D1,-1,z%!4,z%!16,z%!&C,z%!16+44
  4761. Windows_ReturnInfoBlock(z%):
  4762. shell_WindowTitleIndirected(HE%):
  4763. (1<<8))=(1<<8)
  4764. shell_WindowMoveToPopUpPos(b%,g%,FI%):
  4765. sC%,VB%,HI%,II%,JI%,KI%:
  4766. LI%:sC%=
  4767. shell_HeapBlockFetch(40):sC%!0=b%:sC%!4=g%:
  4768. &400CE,,sC%:HI%=sC%!16:II%=sC%!20:VB%=
  4769. shell_HeapBlockFetch(40):VB%!0=b%:
  4770. &400CB,,VB%:JI%=VB%!4:KI%=VB%!16:VB%!0=FI%:
  4771. &400CB,,VB%
  4772. LI%=VB%!16-VB%!8:
  4773. shell_WindowMoveTo(FI%,JI%+HI%,KI%+II%-(LI%/2)):
  4774. shell_HeapBlockReturn(sC%):
  4775. shell_HeapBlockReturn(VB%):
  4776. shell_WindowScrollTo(b%,pB%,qB%):
  4777. dA%:dA%=
  4778. shell_HeapBlockFetch(36):!dA%=b%:
  4779. &400CB,,dA%:dA%!20=pB%:dA%!24=qB%:
  4780. shell_WindowIsOpen(b%)
  4781. &400C5,,dA%
  4782. &400C5,,dA%:
  4783. &400C6,,dA%
  4784. shell_HeapBlockReturn(dA%):
  4785. shell_WindowScrollBy(b%,pB%,qB%):
  4786. dA%:dA%=
  4787. shell_HeapBlockFetch(36):!dA%=b%:
  4788. &400CB,,dA%:dA%!20+=pB%:dA%!24+=qB%:
  4789. shell_WindowIsOpen(b%)
  4790. &400C5,,dA%
  4791. &400C5,,dA%:
  4792. &400C6,,dA%
  4793. shell_HeapBlockReturn(dA%):
  4794. shell_WindowSetBackgroundColour(
  4795. w%,kB%):
  4796. _%,o%,MI%,aB%,gA%:gA%=
  4797. shell_WindowCountIcons(w%):MI%=
  4798. shell_WindowIsOpen(w%):_%=
  4799. shell_HeapBlockFetch(&64+(gA%*32)):_%!0=w%:
  4800. &400CC,,_%:_%?39=kB%:_shell_open_behind%=_%!28:aB%=_%!28:
  4801. &400C3,,_%
  4802. &400C1,,_%+4
  4803. o%:_%!0=o%:
  4804. &400CC,,_%:
  4805. w%<>o%
  4806. shell_UpdateWindowHandle(w%,o%):w%=o%
  4807. shell_OpenWindow(o%,0,aB%)
  4808. shell_HeapBlockReturn(_%):
  4809. shell_WindowSetForegroundColour(
  4810. w%,kB%):
  4811. _%,o%,GC%,aB%:GC%=
  4812. shell_WindowIsOpen(d%):_%=
  4813. shell_HeapBlockFetch(&64+(
  4814. shell_WindowCountIcons(w%)*32)):_%!0=w%:
  4815. &400CC,,_%:_%?38=kB%:_shell_open_behind%=_%!28:aB%=_%!28:
  4816. &400C3,,_%:
  4817. &400C1,,_%+4
  4818. w%<>o%
  4819. shell_UpdateWindowHandle(w%,o%):w%=o%
  4820. shell_OpenWindow(o%,0,aB%)
  4821. shell_HeapBlockReturn(_%):
  4822. shell_WindowMoveInStack(b%,BA%):
  4823. ZB%,RD%:
  4824. BA%<-2
  4825. BA%>-1
  4826. 99,"Invalid action"
  4827. shell_HeapBlockFetch(256):ZB%!0=b%:
  4828. &400CB,,ZB%:ZB%!28=BA%:
  4829. &400E7,2,ZB%,b%
  4830. ,,RD%:
  4831. &400C7,0,ZB%:
  4832. shell_HeapBlockReturn(ZB%):
  4833. RD%=_U%!&94
  4834. *_Q%!28=BA%:
  4835. shell_OpenWindow(b%,0,BA%)
  4836. shell_Window_GetTopPaneDepth(b%):=
  4837. shell_Window_GetPaneDepth(b%,2)
  4838. shell_Window_GetBottomPaneDepth(b%):=
  4839. shell_Window_GetPaneDepth(b%,4)
  4840. shell_Window_GetPaneDepth(b%,ZJ%):
  4841. A$,a%,cA%,iC%,jE%,S$:
  4842. CA%,jC%,j%,v%,KC%:
  4843. PB%:cA%=0:jE%=0:iC%=
  4844. shell_GetWindowIdentifier(b%):a%=
  4845. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  4846. a%>=0
  4847. Evnts_GetEvntListOffset(A$,cA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  4848. )>-1:a%=_m_Evnts_LastEvntOffset%:j%=!_EVNTS_PANES_ANCHOR%+a%:PB%=j%!20:
  4849. PB%=ZJ%
  4850. jC%=j%!16:PB%=j%!20:v%=!_EVNTS_PANES_DATA%:S$=$(v%+jC%):CA%=
  4851. shell_GetWindowHandleList(S$):KC%=!CA%:_c_Evnts_PaneBlk%!0=KC%:
  4852. &400CB,,_c_Evnts_PaneBlk%:
  4853. jE%=0
  4854. 890jE%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8
  4855. :cA%+=1:
  4856. :=jE%
  4857. shell_WindowSetDefaultPosition(TB$,YA%,ZA%,jA%,kA%):
  4858. dA%:dA%=
  4859. shell_GetWB(TB$):dA%!0=YA%:dA%!4=ZA%:dA%!8=jA%:dA%!&C=kA%:
  4860. shell_WindowCentreOnPointer(w%):
  4861. z%,xD%,FB%,GB%:xD%=
  4862. shell_HeapBlockFetch(20):
  4863. &400CF,,xD%:z%=
  4864. shell_HeapBlockFetch(36):z%!0=w%:
  4865. &400CB,,z%:FB%=(z%!4-z%!&C)/2:GB%=(z%!16-z%!8)/2:
  4866. shell_WindowMoveTo(w%,xD%!0+FB%,xD%!4-GB%)
  4867. shell_HeapBlockReturn(z%):
  4868. shell_HeapBlockReturn(xD%):
  4869. shell_WindowCentreOnScreen(w%):
  4870. z%,kE%,lE%,hA%,VA%,eD%,rC%:
  4871. &20035,-1,4
  4872. ,,eD%:
  4873. &20035,-1,5
  4874. ,,rC%:
  4875. &20035,-1,&B
  4876. ,,kE%:
  4877. &20035,-1,&C
  4878. ,,lE%:kE%=kE%<<eD%:lE%=lE%<<rC%:z%=
  4879. shell_HeapBlockFetch(36):z%!0=w%:
  4880. &400CB,,z%:hA%=(z%!&C-z%!4)
  4881. 8reVA%=(z%!16-z%!8):
  4882. shell_WindowMoveTo(w%,(kE%/2)-(hA%/2),(lE%-VA%)/2):
  4883. shell_HeapBlockReturn(z%):
  4884. shell_WindowUserRedrawGetLines(mE%,XD%,oE%,
  4885. cJ%):
  4886. ZG%,SI%,TI%:ZG%=mE%!16-mE%!24-oE%:SI%=ZG%-mE%!40:TI%=ZG%-mE%!32:YG%=SI%
  4887. XD%-1:
  4888. YG%<0
  4889. YG%=0
  4890. cJ%=TI%
  4891. shell_WindowRedrawLine(b%,XD%,UI%,oE%):
  4892. &400D1,b%,0,-(oE%+((UI%+1)*XD%)+0),&FFFFF,-(oE%+((UI%+1)*XD%)-XD%-8):
  4893.