home *** CD-ROM | disk | FTP | other *** search
/ Archive Magazine 1996 / ARCHIVE_96.iso / discs / mag_discs / volume_9 / issue_09 / verbmaster / !VerbMast / ShellLibRT (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1996-02-18  |  149KB  |  4,599 lines

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