Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s » Shareware/Event/Documents/Examples/!Redraw/Redraw
Shareware/Event/Documents/Examples/!Redraw/Redraw
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s |
Filename: | Shareware/Event/Documents/Examples/!Redraw/Redraw |
Read OK: | ✔ |
File size: | 4EF7 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1REM > <Redraw$Dir>.Redraw 2: 3debugging%=FALSE 4REM Copyright Paul Hobbs 1993 5REM Rheinpfalzstrasse 2 6REM 85049 Ingolstadt 7REM Germany 8: 9REM This program and parts thereof may be freely distributed 10: 11ON ERROR MODE12:SYS"Hourglass_Smash":REPORT:PRINT" at line: ";ERL:END 12: 13LIBRARY "<EvntShellSystem$Path>ShellLibRT" 14: 15SYS "Hourglass_On" 16: 17SYS "Wimp_SlotSize",-1,-1 TO progsize% 18pagesize%=1<<10 19freespace%=&8000+progsize% 20END=freespace%+pagesize% 21HIMEM=freespace% 22: 23PROCshell_HeapManagerInit("<EvntShellSystem$Path>",freespace%) 24PROCshell_Init 25task%=FNshell_WimpInit_I(200,"Redraw Demo") 26PROCshell_TraceInit("") 27REM PROCshell_TraceOn 28PROCshell_ResourcesInit 29PROCapp_init 30: 31REM -------------------- Initialise Variables ---------------------------- 32: 33_closedown% =FALSE :REM Set this to TRUE when you want the program to 34 :REM end 35changed% =FALSE :REM Used to keep track of whether the data has 36 :REM been changed. Call PROCfile_changed() when it 37 :REM has. But if the program does not use data 38 :REM files just ignore this variable but do not 39 :REM delete it as the program checks it before 40 :REM exiting! 41: 42REM -------------------- Miscelleanous Initialisation -------------------- 43: 44: 45error_flag% =3 46ON ERROR PROCshell_Error 47: 48SYS "Hourglass_Off" 49REPEAT 50 PROCshell_Action(FNshell_Poll_I(0,task%)) 51UNTIL _closedown% 52: 53PROCshell_Exit:END 54: 55REM ====================================================================== 56: 57DEF PROCapp_init 58my_font$="Trinity.Medium" 59PROCSetUp_Menus 60sicon=FNshell_Iconbar(-1,"!"+FNshell_GetAppName,"",120,MenuHandle_IconBar%,0,0,0) 61PROCshell_AttachHelpTag(-1,sicon,"iconbar") 62PROCshell_AttachClickSelect(-1,sicon,"_ClickSelect_IconBar") 63 64PROCshell_CreateWindowStatic("mainw",mainw%) 65PROCshell_AttachUserRedraw(mainw%,"_redraw") 66PROCshell_AttachFontMenu(mainw%,-1,"_MenuSelect_Fonts","_MenuMaker_Fonts") 67 68PROCshell_FindFont(my_font$,24,24,font_handle%) 69SYS "Font_SetFont",font_handle% 70_shell_FontMenuSelFN$="" 71ENDPROC 72: 73 74REM ===== Menu_Setup routines ====================================== 75 76DEF PROCSetUp_Menus 77LOCAL void% 78SYS "MenuUtil_Initialise" 79 80MenuHandle_IconBar%=FNshell_MenuNew("Redraw") 81MenuItem_Info% =FNshell_MenuAdd(0,"Info","") 82MenuItem_Fonts% =FNshell_MenuAdd(0,"Fonts","") 83void% =FNshell_MenuAdd(0,"Quit","_MenuSelect_Quit") 84PROCshell_AttachMenuDBox(MenuItem_Info%,"progInfo","_PreOpenInfo","") 85PROCshell_AttachFontSubMenu(MenuItem_Fonts%,"_warn_FontMenu","_MenuSelect_Fonts") 86 87ENDPROC 88: 89 90REM ===== Click_Select routines ==================================== 91 92DEF FN_ClickSelect_IconBar(wh%,icon%) 93PROCshell_OpenWindowStatic(mainw%) 94=0 95: 96 97REM ===== Menu_Select routines ===================================== 98 99DEF FN_MenuSelect_Fonts(fontname$) 100IF fontname$<>"" THEN PROCselect_new_font(fontname$) 101=0 102: 103DEF FN_MenuSelect_Quit(blk%) 104_closedown%=TRUE 105SYS "Font_LoseFont",font_handle% 106=0 107: 108 109REM ===== Menu_Maker routines ====================================== 110 111DEF FN_MenuMaker_Fonts(wh%,ih%) 112REM Tick the current font in the FontMenu.. 113PROCshell_FontMenuSelectFont(my_font$,1) 114=0 115: 116 117REM ===== Menu_Warn routines ======================================= 118 119DEF FN_warn_FontMenu(wh%,ih%) 120REM Tick the current font in the FontMenu.. 121PROCshell_FontMenuSelectFont(my_font$,1) 122=0 123: 124DEF PROCselect_new_font(font$) 125REM A font has been selected in the FontMenu.. 126my_font$=font$ 127SYS "Font_LoseFont",font_handle% 128PROCshell_FindFont(my_font$,24,24,font_handle%) 129SYS "Font_SetFont",font_handle% 130SYS "Wimp_ForceRedraw",mainw%,0,-2000,2000,0 131ENDPROC 132: 133DEF FN_redraw(blk%,x0%,y0%) 134SYS "Wimp_SetColour",11 135CIRCLE FILL x0%+200,y0%-200,120 136SYS "Wimp_SetColour",8 137MOVE x0%+80,y0%-340:PRINT "This is an example of" 138MOVE x0%+40,y0%-380:PRINT "user drawn text and graphics" 139MOVE x0%+95,y0%-420:PRINT "in a desktop window" 140SYS "ColourTrans_SetFontColours",font_handle%,&FFFFFF00,&00000000,14 141SYS "Font_Paint",0,"And Outline Fonts..",1<<4,x0%+10,y0%-70 142=0 143: 144DEF FN_ClickSelect_IconBar(wh%,icon%) 145PROCshell_OpenWindowStatic(mainw%) 146=0 147: 148 149REM ===== Dialog_PreOpen routines ================================== 150 151DEF FN_PreOpenInfo(wh%) 152PROCshell_IconPutData(wh%,0,FNshell_MessageNoArgs("progInfo0"),0) 153PROCshell_IconPutData(wh%,1,FNshell_MessageNoArgs("progInfo1"),0) 154PROCshell_IconPutData(wh%,2,FNshell_MessageNoArgs("progInfo2"),0) 155PROCshell_IconPutData(wh%,3,FNshell_MessageNoArgs("progInfo3"),0) 156=0 157: 158 159REM =================== Routines to go in the library ================== 160: 161DEF PROCshell_EventAdd(wh%,ic%,e_type%,menu$,fn$) 162LOCAL ptr%,fn%,event_list%,list_size%,found% 163LOCAL fn_addr%,menu% 164menu%=VALmenu$ 165ptr%=0:found%=FALSE 166IF wh%=-1 THEN wh%=-2 167list_size%=FNshell_HeapBlockInfo(_U%!12)-8 168event_list%=_U%!12 169REPEAT 170 IF (event_list%!ptr%=wh%) THEN 171 CASE event_list%!(ptr%+4) OF 172 WHEN -1 173 found%=TRUE 174 OTHERWISE 175 IF event_list%!(ptr%+4)=ic% THEN 176 found%=TRUE 177 ELSE 178 ptr%+=48 179 ENDIF 180 ENDCASE 181 ELSE 182 ptr%+=48 183 ENDIF 184UNTIL (ptr%>=list_size% OR found%) 185IF found%=FALSE THEN 186 ptr%=0 187 WHILE (event_list%!ptr%<>0 ) 188 ptr%+=48 189 IF ptr%>=list_size% THEN 190 _U%!12=FNshell_HeapBlockExtend(_U%!12,48) 191 event_list%=_U%!12 192 event_list%!(ptr%+0)=0 193 event_list%!(ptr%+4)=0 194 event_list%!(ptr%+8)=0 195 event_list%!(ptr%+12)=0 196 event_list%!(ptr%+16)=0 197 event_list%!(ptr%+20)=0 198 event_list%!(ptr%+24)=0 199 event_list%!(ptr%+28)=0 200 event_list%!(ptr%+32)=0 201 event_list%!(ptr%+36)=0 202 event_list%!(ptr%+40)=0 203 event_list%!(ptr%+44)=0 204 ENDIF 205 ENDWHILE 206ENDIF 207event_list%!(ptr%+0)=wh% 208event_list%!(ptr%+4)=ic% 209IF menu%<>0 THEN 210 event_list%!(ptr%+8)=menu% 211ENDIF 212fn_addr%=ptr%+(12+(e_type%*4)) 213IF event_list%!fn_addr%<>0 THEN 214 PROCshell_HeapBlockReturn(event_list%!fn_addr%) 215ENDIF 216fn%=FNshell_HeapBlockFetch(LENfn$+1) 217$fn%=fn$ 218event_list%!fn_addr%=fn% 219ENDPROC 220: 221DEF FNshell_Iconbar(pos%,sname$,text$,w%,menu%,shift%,ctrl%,alt%) 222LOCAL handle% 223IF text$="" THEN 224 !_Q%=pos%:_Q%!4=0:_Q%!8=0:_Q%!12=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=sname$ 225ELSE 226 !_Q%=pos%:_Q%!4=0:_Q%!8=-16:_Q%!12=w%:_Q%!16=90:_Q%!20=&1700210B 227 DIM _Q%!24 12 228 DIM _Q%!28 LEN(sname$)+2 229 $(_Q%!24)=text$ 230 $(_Q%!28)="S"+sname$ 231 _Q%!32=12 232ENDIF 233SYS "Wimp_CreateIcon",,_Q% TO handle% 234PROCshell_AttachMenu(-2,handle%,menu%,shift%,ctrl%,alt%) 235=handle% 236: 237DEF PROCshell_AttachMenu(wh%,ic%,menu%,shift%,ctrl%,alt%) 238PROCshell_EventAdd(wh%,ic%,0,STR$menu%,"") 239ENDPROC 240: 241DEF PROCshell_ActionMenuButton 242LOCAL temp%,menu% 243*|ifdef PROCshell_TraceInit 244PROCshell_Tracef0("ActionMenuButton:Mouse Button was MENU") 245*|endif 246temp%=TRUE 247IF INKEY(-1) THEN temp%=FNshiftmenuclick(_Q%!12,_Q%!16) 248IF temp% THEN 249 PROCshell_Tracef0("ActionMenuButton:Checking menu events..") 250 menu%=FNshell_GetEventMenu(_Q%!8,_Q%!12,_Q%!16) 251 PROCshell_Tracef0("ActionMenuButton:Menu handle is:"+STR$menu%) 252 IF menu%<>0 THEN 253 PROCshell_OpenMenu(_Q%!0,_Q%!4,menu%) 254 _U%!24=menu% 255 _U%!36=_Q%!00:REM store menu x position 256 _U%!40=_Q%!04:REM store menu y position 257 _U%!52=_U%!28:REM store window 258 _U%!56=_U%!32:REM store icon 259 ENDIF 260ENDIF 261ENDPROC 262: 263 264DEF PROCshell_AttachMenuDBox(item%,window$,preopenfn$,postopenfn$) 265REM Check current submenu handle. We should release any memory 266REM allocated by previous calls (when I work out how to do it) 267LOCAL blk%,temp%,addr% 268IF NOT FNshell_WindowLoaded(window$) THEN ERROR 99,FNshell_MessageOneArg("SHELLMSG03",window$) 269blk%=FNshell_HeapBlockFetch(12) 270blk%!0=FNshell_HeapBlockFetch(LENwindow$+1) 271temp%=blk%!0:$temp%=window$ 272blk%!4=FNshell_HeapBlockFetch(LENpreopenfn$+1) 273temp%=blk%!4:$temp%=preopenfn$ 274blk%!8=FNshell_HeapBlockFetch(LENpostopenfn$+1) 275temp%=blk%!8:$temp%=postopenfn$ 276REM Store address of heapblock in submenu pointer word of 277REM menu item definition. Cunning huh........ 278SYS "MenuUtil_SubMenu",item%,blk% 279SYS "MenuUtil_Warning",,TRUE 280ENDPROC 281: 282DEF PROCshell_MenuWarning(_Q%) 283LOCAL fn$,menu_buffer%,x%,y%,void%,_temp%,a%,warn_fn$,item_addr%,blk% 284x%=_Q%!24:y%=_Q%!28:_U%!264=0 285IF _U%!20<>0 THEN 286 *|ifdef PROCshell_TraceInit 287 PROCshell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+STR$~_U%!20+")") 288 *|endif 289 void%=FNshell_DeleteWindow(_U%!20) 290 *|ifdef PROCshell_TraceInit 291 PROCshell_Tracef0("MenuWarning:Last dynamic dbox removed") 292 *|endif 293ENDIF 294REM Check submenu pointer and create window found there 295REM Then call pre and post open FNs 296REM If submenu pointer is the warning window, open it to remind the user 297REM that no dbox has been attached to this menu entry.. 298CASE _Q%!20 OF 299WHEN _U%!228:REM handle of warning dbox.. 300 REM won't need to do this if title/icon messages are substituted 301 REM when loading the templates 302 PROCshell_WindowRetitle(_U%!228,FNshell_MessageNoArgs("warning")) 303 REM still need to set up the message though... 304 PROCshell_IconPutData(_U%!228,1,FNshell_MessageNoArgs("SHELLMSG07"),0) 305 VDU7 306 SYS "Wimp_CreateSubMenu",,_U%!228,x%,y% 307OTHERWISE 308 REM Sub menu is either a dialog box, or a menu!! 309 item_addr%=FNshell_MenuGetItemAddress(_U%!24,_Q%+32) 310 IF FNshell_HeapBlockExists(item_addr%!4) THEN 311 REM DBox is attached.. 312 PROCshell_MenuWarnDBox(item_addr%,x%,y%) 313 ELSE 314 REM Submenu attached.. 315 blk%=FNshell_HeapBlockFetch(32) 316 SYS "MenuUtil_Decode",_U%!24,_Q%+32 TO ,,blk% 317 PROCshell_FindMenuWarnEvent(blk%!8,warn_fn$,sel_fn$) 318 PROCshell_HeapBlockReturn(blk%) 319 PROCshell_MenuWarnSubMenu(_Q%!20,x%,y%,warn_fn$,sel_fn$) 320 ENDIF 321ENDCASE 322ENDPROC 323: 324DEF PROCshell_FindMenuWarnEvent(item_handle%,RETURN warn_fn$,RETURN sel_fn$) 325LOCAL result%,e_list%,temp%,offset%,found%,list_size%,temp2%,ctr% 326LOCAL submenu% 327submenu%=0:REM If still 0 on return then no event found.. 328e_list%=_U%!220:offset%=0:found%=FALSE:warn_fn$="":submenu%=0 329IF FNshell_HeapBlockExists(e_list%) THEN 330 REPEAT 331 ctr%+=4 332 UNTIL e_list%!ctr%=-1 333 list_size%=ctr%:ctr%=0 334 *|ifdef PROCshell_TraceInit 335 PROCshell_Tracef0("FindMenuWarnEvent:list_size%="+STR$list_size%) 336 *|endif 337 REPEAT 338 temp%=!(e_list%+offset%+0) 339 IF temp%<>-1 THEN 340 IF temp%=item_handle% THEN 341 found%=TRUE 342 temp2%=e_list%!(offset%+4):warn_fn$=$temp2% 343 submenu%=e_list%!(offset%+8) 344 temp2%=e_list%!(offset%+12):sel_fn$=$temp2% 345 *|ifdef PROCshell_TraceInit 346 PROCshell_Tracef0("FindMenuWarnEvent:submenu found") 347 *|endif 348 ENDIF 349 offset%+=16 350 ELSE 351 offset%=list_size% 352 ENDIF 353 UNTIL found% OR offset%>=list_size% 354ELSE 355 warn_fn$="":sel_fn$="" 356ENDIF 357*|ifdef PROCshell_TraceInit 358IF submenu%=0 THEN PROCshell_Tracef0("FindMenuWarnEvent:warn fn not found..") 359*|endif 360ENDPROC 361: 362DEF FNshell_MenuGetItemAddress(menu%,selection%) 363LOCAL ctr%,item_addr% 364SYS "MenuUtil_Info",menu% TO menu% 365REPEAT 366 item_addr%=menu%+28+((selection%!ctr%)*24) 367 menu%=item_addr%!4:REM address of submenu.. 368 ctr%+=4 369UNTIL selection%!ctr%=-1 370=item_addr% 371: 372DEF PROCshell_AttachSubMenu(item%,submenu%,warn_fn$) 373SYS "MenuUtil_SubMenu",item%,submenu% 374IF warn_fn$<>"" THEN 375 SYS "MenuUtil_Warning",,TRUE 376 PROCshell_EventListMenuWarn(item%,submenu%,warn_fn$,"") 377ENDIF 378ENDPROC 379: 380DEF PROCshell_EventListMenuWarn(item%,submenu_ptr%,warn_fn$,sel_fn$) 381LOCAL temp%,temp2%,ctr%,e_list% 382IF _U%!220=0 THEN 383 REM Create event list.. 384 _U%!220=FNshell_HeapBlockFetch(32) 385 temp%=_U%!220 386 temp%!0=item% 387 temp%!4=FNshell_HeapBlockFetch(LENwarn_fn$+1) 388 $(temp%!4)=warn_fn$ 389 temp%!8=submenu_ptr% 390 temp%!12=FNshell_HeapBlockFetch(LENsel_fn$+1) 391 $(temp%!12)=sel_fn$ 392 temp%!16=-1:temp%!20=-1:temp%!24=-1:temp%!28=-1 393ELSE 394 REM Extend existing event list.. 395 e_list%=FNshell_HeapBlockExtend(_U%!220,32) 396 _U%!220=e_list%:ctr%=0 397 REPEAT 398 ctr%+=16 399 UNTIL e_list%!ctr%=-1 400 temp%=_U%!220 401 temp%!ctr%=item% 402 temp%!(ctr%+4)=FNshell_HeapBlockFetch(LENwarn_fn$+1) 403 temp2%=temp%!(ctr%+4):$(temp2%)=warn_fn$ 404 temp%!(ctr%+8)=submenu_ptr% 405 temp%!(ctr%+12)=FNshell_HeapBlockFetch(LENsel_fn$+1) 406 temp2%=temp%!(ctr%+12):$(temp2%)=sel_fn$ 407 temp%!(ctr%+16)=-1:temp%!(ctr%+20)=-1:temp%!(ctr%+24)=-1 408 temp%!(ctr%+28)=-1 409ENDIF 410ENDPROC 411: 412DEF PROCshell_MenuWarnSubMenu(s_menu%,x%,y%,warn_fn$,sel_fn$) 413LOCAL void%,temp%,f_menu%,ctr% 414_shell_FontMenuSelFN$=sel_fn$ 415IF FNshell_HeapBlockExists(_U%!224) THEN PROCshell_HeapBlockReturn(_U%!224) 416_U%!224=FNshell_HeapBlockFetch(LENwarn_fn$+1) 417temp%=_U%!224:$temp%=warn_fn$ 418IF warn_fn$<>"" THEN 419 void%=EVAL("FN"+warn_fn$+"(_U%!52,_U%!56)") 420 *|ifdef PROCshell_TraceInit 421 PROCshell_Tracef0("MenuWarnSubMenu:Calling FN"+warn_fn$) 422 *|endif 423ENDIF 424*|ifdef Using_FontMenu 425IF s_menu%=_U%!252 THEN 426 REM Submenu is FontMenu menu.. 427 *|ifdef PROCshell_TraceInit 428 PROCshell_Tracef0("MenuWarnSubMenu:FontMenu opening..") 429 *|endif 430 IF FNshell_HeapBlockExists(_U%!256) THEN PROCshell_HeapBlockReturn(_U%!256) 431 REM Store current menu selection for testing later.. 432 REM First work out how many levels are in the selection.. 433 ctr%=0:REPEAT:ctr%+=4:UNTIL !(_Q%+32+ctr%)=-1:ctr%+=4 434 _U%!256=FNshell_HeapBlockFetch(ctr%):temp%=_U%!256 435 ctr%=0 436 REPEAT 437 temp%!ctr%=!(_Q%+32+ctr%) 438 ctr%+=4 439 UNTIL !(_Q%+32+ctr%)=-1 440 temp%!ctr%=!(_Q%+32+ctr%) 441 temp%=_U%!256 442 *|ifdef PROCshell_TraceInit 443 PROCshell_Tracef0("MenuWarnSubMenu:Selecting '"+FNshell_FontMenuGetLastSelectedFont+"' in FontMenu..") 444 *|endif 445 SYS "FontMenu_Select",FNshell_FontMenuGetLastSelectedFont,_U%!260 TO ,f_menu% 446 _U%!264=1:REM Set 'FontMenuOpen' flag.. 447 IF f_menu%<>_U%!252 THEN 448 REM FontMenu ptr has changed.. 449 PROCshell_FontMenuUpdatePtr(f_menu%) 450 _U%!252=f_menu%:s_menu%=f_menu% 451 ENDIF 452ELSE 453 _U%!264=0:REM Clear 'FontMenuOpen' flag.. 454ENDIF 455*|endif 456SYS "Wimp_CreateSubMenu",,s_menu%,x%,y% 457ENDPROC 458: 459DEF PROCshell_AttachFontSubMenu(item%,warn_fn$,sel_fn$) 460LOCAL itemstart%,menu%,temp%,ctr% 461PROCshell_FontMenuInit 462SYS "FontMenu_Select",""+CHR$0,_U%!260 TO ,menu% 463SYS "MenuUtil_SubMenu",item%,menu% 464SYS "MenuUtil_Warning",,TRUE 465REM Store menu ptr in shell memory.. 466_U%!252=menu% 467PROCshell_EventListMenuWarn(item%,menu%,warn_fn$,sel_fn$) 468*|ifdef PROCshell_TraceInit 469PROCshell_Tracef0("AttachFontSubMenu:Attaching font menu &"+STR$~menu%) 470*|endif 471ENDPROC 472: 473DEF FNshell_CheckSelection(sel%) 474LOCAL temp%,ctr% 475temp%=_U%!256 476IF temp%=0 THEN =-1 477IF _U%!24=_U%!252 THEN =0 478REPEAT 479 IF sel%!ctr%<>temp%!ctr% THEN =-1 480 ctr%+=4 481UNTIL temp%!ctr%=-1 482=ctr% 483: 484DEF PROCshell_ActionMenuSelect(_Q%) 485LOCAL handler%,menu_buffer%,CheckSelect%,fontmenuflag%,void%,h_blk% 486h_blk%=FNshell_HeapBlockFetch(256) 487*|ifdef PROCshell_TraceInit 488PROCshell_Tracef0("ActionMenuSelect:Menu_Select event detected") 489*|endif 490SYS "Wimp_GetPointerInfo",,_shell_blk% 491*|ifdef Using_FontMenu 492menu_buffer%=FNshell_HeapBlockFetch(256) 493IF _U%!24=_U%!252 THEN 494 REM Current menu is FontMenu.. 495 CheckSelect%=0:_U%!264=1 496ELSE 497 CheckSelect%=FNshell_CheckSelection(_Q%) 498 IF CheckSelect%>-1 THEN _U%!264=1 ELSE _U%!264=0 499ENDIF 500IF _U%!264>0 THEN 501 SYS "FontMenu_DecodeFontMenu",_Q%+CheckSelect%,menu_buffer% TO fontmenuflag% 502 IF fontmenuflag%=1 THEN 503 REM 'sensible' selection made.. 504 *|ifdef PROCshell_TraceInit 505 PROCshell_Tracef0("ActionMenuSelect:FontMenu selection ("+FNshell_GetString(menu_buffer%)+")") 506 *|endif 507 PROCshell_FontMenuSelectFont(FNshell_GetString(menu_buffer%),_U%!260) 508 IF _shell_FontMenuSelFN$="" THEN 509 SYS "Wimp_DecodeMenu",,_U%!24,_Q%,menu_buffer% 510 fn$=FNshell_GetEventHandler(_U%!52,_U%!56,0) 511 _temp%=menu_buffer% 512 $_temp%=FNshell_StringStripTrailing($_temp%," ") 513 IF fn$<>"" THEN void%=EVAL("FN"+fn$+"($_temp%)") 514 ELSE 515 IF _shell_FontMenuSelFN$<>"" THEN 516 void%=EVAL("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)") 517 ENDIF 518 ENDIF 519 ENDIF 520ENDIF 521PROCshell_HeapBlockReturn(menu_buffer%) 522*|endif 523IF _U%!264=0 THEN 524 SYS "MenuUtil_Decode",_U%!24,_Q% TO handler%,,h_blk% 525 IF handler% THEN PROCshell_MenuCallHandler(handler%,h_blk%) 526ENDIF 527IF _shell_blk%!8=1 THEN 528 PROCshell_Tracef0("HILKE::Adjust button") 529 IF FNshell_HeapBlockExists(_U%!224) THEN 530 PROCshell_Tracef0("HILKE::Stored warn_fn exists") 531 _temp%=_U%!224 532 IF $_temp%<>"" THEN 533 REM Call last menuwarning fn 534 PROCshell_Tracef0("HILKE::Calling last warn_fn ("+$_temp%+")") 535 void%=EVAL("FN"+$_temp%+"(_U%!52,_U%!56)") 536 ENDIF 537 ENDIF 538 PROCshell_OpenMenu(_U%!36,_U%!40,_U%!24) 539ELSE 540 _shell_FontMenuSelFN$="" 541ENDIF 542PROCshell_HeapBlockReturn(h_blk%) 543ENDPROC 544: 545DEF PROCshell_AttachFontMenu(wh%,ih%,sel_fn$,maker_fn$) 546LOCAL menu% 547PROCshell_FontMenuInit 548SYS "FontMenu_Select",""+CHR$0,_U%!260 TO ,menu% 549REM Store menu ptr in shell memory.. 550_U%!252=menu% 551PROCshell_EventAdd(wh%,ih%,0,"-2",sel_fn$) 552*|ifdef PROCshell_TraceInit 553PROCshell_Tracef0("AttachFontMenu:Attaching font menu") 554*|endif 555IF maker_fn$<>"" THEN PROCshell_AttachMenuMaker(wh%,ih%,maker_fn$) 556ENDPROC 557: 558DEF FNshell_GetEventMenu(button%,wh%,ic%) 559LOCAL ptr%,event_list%,found%,list_size%,menu% 560IF wh%=-1 THEN wh%=-2 561list_size%=FNshell_HeapBlockInfo(_U%!12)-8 562ptr%=0 563found%=FALSE 564event_list%=_U%!12 565fn$="" 566REPEAT 567 IF (event_list%!ptr%=wh%) THEN 568 IF event_list%!(ptr%+4) = ic% THEN 569 menu%=event_list%!(ptr%+8) 570 IF menu%=-2 THEN menu%=_U%!252 571 found%=TRUE 572 ELSE 573 IF event_list%!(ptr%+4) = -1 THEN 574 IF button%=2 THEN 575 menu%=event_list%!(ptr%+8) 576 IF menu%=-2 THEN menu%=_U%!252 577 found%=TRUE 578 ELSE 579 ptr%+=48 580 ENDIF 581 ELSE 582 ptr%+=48 583 ENDIF 584 ENDIF 585 ELSE 586 ptr%+=48 587 ENDIF 588UNTIL (ptr%>=list_size% OR found%) 589=menu% 590: 591DEF PROCshell_HandleAttachedMenu(_Q%,wh%,ih%) 592LOCAL menu% 593IF ih%<>-1 AND wh%>-1 THEN 594 menu%=FNshell_GetEventMenu(_Q%!8,wh%,ih%) 595 IF menu%<>0 THEN 596 PROCshell_OpenMenu(_Q%!0-64,_Q%!4,menu%) 597 ENDIF 598ENDIF 599ENDPROC 600: 601DEF PROCshell_OpenMenu(x%,y%,m%) 602LOCAL fn$ 603fn$=FNshell_GetEventHandler(_U%!28,_U%!32,1) 604IF fn$<>"" THEN 605 PROCshell_Tracef0("OpenMenu:menumaker function is "+fn$) 606 void%=EVAL("FN"+fn$+"(_U%!28,_U%!32)"):REM call menumaker 607ELSE 608 PROCshell_Tracef0("OpenMenu:no menumaker function registered") 609ENDIF 610IF m%<>_U%!24 THEN 611 REM If menu is not being re-opened by an adjust click, discard stored 612 REM 'SelectionSoFar' string used by FontMenu routines.. 613 IF FNshell_HeapBlockExists(_U%!256) THEN 614 PROCshell_HeapBlockReturn(_U%!256):_U%!256=0 615 ENDIF 616 REM And the name of the currently selected font in this menu.. 617 IF FNshell_HeapBlockExists(_U%!244 ) THEN 618 PROCshell_HeapBlockReturn(_U%!244):_U%!244=0 619 ENDIF 620ENDIF 621IF m%=_U%!252 THEN 622 SYS "Wimp_CreateMenu",,m%,x%,y% 623 _U%!264=1 624ELSE 625 SYS "MenuUtil_Show",m%,_Q% 626 _U%!264=0 627ENDIF 628_U%!24=m%:REM store address of currently open menu 629_U%!36=x%:REM store menu x position 630_U%!40=y%:REM store menu y position 631_U%!52=_U%!28:REM store window 632_U%!56=_U%!32:REM store icon 633ENDPROC 634: 635DEF FNshell_MenuNew(title$) 636LOCAL handle% 637SYS "MenuUtil_New",,title$ TO handle% 638=handle% 639: 640DEF FNshell_MenuAdd(handle%,item$,sel_fn$) 641LOCAL ret_handle% 642IF sel_fn$<>"" THEN 643 SYS "MenuUtil_Add",handle%,item$,sel_fn$ TO ret_handle% 644ELSE 645 SYS "MenuUtil_Add",handle%,item$ TO ret_handle% 646ENDIF 647=ret_handle% 648: 649DEF PROCshell_MenuTick(item_handle%,state%) 650SYS "MenuUtil_Tick",item_handle%,state% 651ENDPROC 652: 653DEF PROCshell_MenuTickOnly1(menu_handle%,pos%) 654SYS "MenuUtil_TickOnly",menu_handle%,pos% 655ENDPROC 656: 657DEF PROCshell_MenuTickOnly2(item_handle%) 658SYS "MenuUtil_TickOnly",item_handle% 659ENDPROC 660: 661DEF PROCshell_MenuShade(handle%,state%) 662SYS "MenuUtil_Fade",handle%,state% 663ENDPROC 664: 665DEF PROCshell_MenuDotted(item_handle%,state%) 666SYS "MenuUtil_Dots",item_handle%,state% 667ENDPROC 668: 669DEF PROCshell_MenuColours(item_handle%,fg%,bg%) 670SYS "MenuUtil_Colours",item_handle%,fg%,bg% 671ENDPROC 672: 673DEF PROCshell_MenuWritable(item_handle%,state%,size%,valid$) 674SYS "MenuUtil_Writable",item_handle%,state%,size%,valid$ 675ENDPROC 676: 677DEF PROCshell_MenuPutData(item_handle%,data$) 678SYS "MenuUtil_Text",item_handle%,data$ 679ENDPROC 680: 681DEF PROCshell_MenuCallHandler(h%,h_blk%) 682LOCAL ERROR 683ON ERROR LOCAL:RESTORE ERROR:ENDPROC 684IF EVAL("FN"+$h%+"(h_blk%)") 685ENDPROC 686:
� > <Redraw$Dir>.Redraw : debugging%=� � Copyright Paul Hobbs 1993 � Rheinpfalzstrasse 2 � 85049 Ingolstadt � Germany : >� This program and parts thereof may be freely distributed : 3� � �12:ș"Hourglass_Smash":�:�" at line: ";�:� : )ț "<EvntShellSystem$Path>ShellLibRT" : ș "Hourglass_On" : (ș "Wimp_SlotSize",-1,-1 � progsize% pagesize%=1<<10 freespace%=&8000+progsize% �=freespace%+pagesize% �=freespace% : ?�shell_HeapManagerInit("<EvntShellSystem$Path>",freespace%) �shell_Init .task%=�shell_WimpInit_I(200,"Redraw Demo") �shell_TraceInit("") � PROCshell_TraceOn �shell_ResourcesInit �app_init : L� -------------------- Initialise Variables ---------------------------- : !G_closedown% =� :� Set this to TRUE when you want the program to "! :� end #Dchanged% =� :� Used to keep track of whether the data has $K :� been changed. Call PROCfile_changed() when it %G :� has. But if the program does not use data &H :� files just ignore this variable but do not 'G :� delete it as the program checks it before (& :� exiting! ): *L� -------------------- Miscelleanous Initialisation -------------------- +: ,: -error_flag% =3 .� � �shell_Error /: 0ș "Hourglass_Off" 1� 2+ �shell_Action(�shell_Poll_I(0,task%)) 3� _closedown% 4: 5�shell_Exit:� 6: 7L� ====================================================================== 8: 9� �app_init :my_font$="Trinity.Medium" ;�SetUp_Menus <Ssicon=�shell_Iconbar(-1,"!"+�shell_GetAppName,"",120,MenuHandle_IconBar%,0,0,0) =,�shell_AttachHelpTag(-1,sicon,"iconbar") >=�shell_AttachClickSelect(-1,sicon,"_ClickSelect_IconBar") ? @-�shell_CreateWindowStatic("mainw",mainw%) A-�shell_AttachUserRedraw(mainw%,"_redraw") BK�shell_AttachFontMenu(mainw%,-1,"_MenuSelect_Fonts","_MenuMaker_Fonts") C D0�shell_FindFont(my_font$,24,24,font_handle%) E"ș "Font_SetFont",font_handle% F_shell_FontMenuSelFN$="" G� H: I JF� ===== Menu_Setup routines ====================================== K L� �SetUp_Menus M� void% Nș "MenuUtil_Initialise" O P0MenuHandle_IconBar%=�shell_MenuNew("Redraw") Q3MenuItem_Info% =�shell_MenuAdd(0,"Info","") R4MenuItem_Fonts% =�shell_MenuAdd(0,"Fonts","") SCvoid% =�shell_MenuAdd(0,"Quit","_MenuSelect_Quit") TF�shell_AttachMenuDBox(MenuItem_Info%,"progInfo","_PreOpenInfo","") UR�shell_AttachFontSubMenu(MenuItem_Fonts%,"_warn_FontMenu","_MenuSelect_Fonts") V W� X: Y ZF� ===== Click_Select routines ==================================== [ \&� �_ClickSelect_IconBar(wh%,icon%) ]#�shell_OpenWindowStatic(mainw%) ^=0 _: ` aF� ===== Menu_Select routines ===================================== b c#� �_MenuSelect_Fonts(fontname$) d3� fontname$<>"" � �select_new_font(fontname$) e=0 f: g� �_MenuSelect_Quit(blk%) h_closedown%=� i#ș "Font_LoseFont",font_handle% j=0 k: l mF� ===== Menu_Maker routines ====================================== n o � �_MenuMaker_Fonts(wh%,ih%) p-� Tick the current font in the FontMenu.. q)�shell_FontMenuSelectFont(my_font$,1) r=0 s: t uF� ===== Menu_Warn routines ======================================= v w� �_warn_FontMenu(wh%,ih%) x-� Tick the current font in the FontMenu.. y)�shell_FontMenuSelectFont(my_font$,1) z=0 {: |� �select_new_font(font$) }0� A font has been selected in the FontMenu.. ~my_font$=font$ #ș "Font_LoseFont",font_handle% �0�shell_FindFont(my_font$,24,24,font_handle%) �"ș "Font_SetFont",font_handle% �/ș "Wimp_ForceRedraw",mainw%,0,-2000,2000,0 �� �: �� �_redraw(blk%,x0%,y0%) �ș "Wimp_SetColour",11 �ȏ Ȑ x0%+200,y0%-200,120 �ș "Wimp_SetColour",8 �.� x0%+80,y0%-340:� "This is an example of" �5� x0%+40,y0%-380:� "user drawn text and graphics" �,� x0%+95,y0%-420:� "in a desktop window" �Gș "ColourTrans_SetFontColours",font_handle%,&FFFFFF00,&00000000,14 �>ș "Font_Paint",0,"And Outline Fonts..",1<<4,x0%+10,y0%-70 �=0 �: �&� �_ClickSelect_IconBar(wh%,icon%) �#�shell_OpenWindowStatic(mainw%) �=0 �: � �F� ===== Dialog_PreOpen routines ================================== � �� �_PreOpenInfo(wh%) �A�shell_IconPutData(wh%,0,�shell_MessageNoArgs("progInfo0"),0) �A�shell_IconPutData(wh%,1,�shell_MessageNoArgs("progInfo1"),0) �A�shell_IconPutData(wh%,2,�shell_MessageNoArgs("progInfo2"),0) �A�shell_IconPutData(wh%,3,�shell_MessageNoArgs("progInfo3"),0) �=0 �: � �J� =================== Routines to go in the library ================== �: �0� �shell_EventAdd(wh%,ic%,e_type%,menu$,fn$) �,� ptr%,fn%,event_list%,list_size%,found% �� fn_addr%,menu% �menu%=�menu$ �ptr%=0:found%=� �� wh%=-1 � wh%=-2 �-list_size%=�shell_HeapBlockInfo(_U%!12)-8 �event_list%=_U%!12 �� � � (event_list%!ptr%=wh%) � �! Ȏ event_list%!(ptr%+4) � � � -1 � found%=� � �& � event_list%!(ptr%+4)=ic% � � found%=� � � � ptr%+=48 � � � � � � � ptr%+=48 � � �!� (ptr%>=list_size% � found%) �� found%=� � � ptr%=0 � ȕ (event_list%!ptr%<>0 ) � ptr%+=48 � � ptr%>=list_size% � �1 _U%!12=�shell_HeapBlockExtend(_U%!12,48) � event_list%=_U%!12 � event_list%!(ptr%+0)=0 � event_list%!(ptr%+4)=0 � event_list%!(ptr%+8)=0 � event_list%!(ptr%+12)=0 � event_list%!(ptr%+16)=0 � event_list%!(ptr%+20)=0 � event_list%!(ptr%+24)=0 � event_list%!(ptr%+28)=0 � event_list%!(ptr%+32)=0 � event_list%!(ptr%+36)=0 � event_list%!(ptr%+40)=0 � event_list%!(ptr%+44)=0 � � � � �� �event_list%!(ptr%+0)=wh% �event_list%!(ptr%+4)=ic% �� menu%<>0 � � event_list%!(ptr%+8)=menu% �� �"fn_addr%=ptr%+(12+(e_type%*4)) �� event_list%!fn_addr%<>0 � �2 �shell_HeapBlockReturn(event_list%!fn_addr%) �� �%fn%=�shell_HeapBlockFetch(�fn$+1) �$fn%=fn$ �event_list%!fn_addr%=fn% �� �: �B� �shell_Iconbar(pos%,sname$,text$,w%,menu%,shift%,ctrl%,alt%) � � handle% �� text$="" � �Q !_Q%=pos%:_Q%!4=0:_Q%!8=0:_Q%!12=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=sname$ �� �F !_Q%=pos%:_Q%!4=0:_Q%!8=-16:_Q%!12=w%:_Q%!16=90:_Q%!20=&1700210B � � _Q%!24 12 � � _Q%!28 �(sname$)+2 � $(_Q%!24)=text$ � $(_Q%!28)="S"+sname$ � _Q%!32=12 �� �'ș "Wimp_CreateIcon",,_Q% � handle% �9�shell_AttachMenu(-2,handle%,menu%,shift%,ctrl%,alt%) �=handle% �: �8� �shell_AttachMenu(wh%,ic%,menu%,shift%,ctrl%,alt%) �(�shell_EventAdd(wh%,ic%,0,�menu%,"") �� �: �� �shell_ActionMenuButton �� temp%,menu% �*|ifdef PROCshell_TraceInit �<�shell_Tracef0("ActionMenuButton:Mouse Button was MENU") �*|endif �temp%=� �2� �(-1) � temp%=�shiftmenuclick(_Q%!12,_Q%!16) � � temp% � �? �shell_Tracef0("ActionMenuButton:Checking menu events..") �4 menu%=�shell_GetEventMenu(_Q%!8,_Q%!12,_Q%!16) �? �shell_Tracef0("ActionMenuButton:Menu handle is:"+�menu%) � � menu%<>0 � �* �shell_OpenMenu(_Q%!0,_Q%!4,menu%) � _U%!24=menu% �- _U%!36=_Q%!00:� store menu x position - _U%!40=_Q%!04:� store menu y position $ _U%!52=_U%!28:� store window " _U%!56=_U%!32:� store icon � � � : A� �shell_AttachMenuDBox(item%,window$,preopenfn$,postopenfn$) @� Check current submenu handle. We should release any memory @� allocated by previous calls (when I work out how to do it) � blk%,temp%,addr% V� � �shell_WindowLoaded(window$) � � 99,�shell_MessageOneArg("SHELLMSG03",window$) "blk%=�shell_HeapBlockFetch(12) ,blk%!0=�shell_HeapBlockFetch(�window$+1) temp%=blk%!0:$temp%=window$ /blk%!4=�shell_HeapBlockFetch(�preopenfn$+1) "temp%=blk%!4:$temp%=preopenfn$ 0blk%!8=�shell_HeapBlockFetch(�postopenfn$+1) #temp%=blk%!8:$temp%=postopenfn$ ;� Store address of heapblock in submenu pointer word of /� menu item definition. Cunning huh........ $ș "MenuUtil_SubMenu",item%,blk% ș "MenuUtil_Warning",,� � : � �shell_MenuWarning(_Q%) E� fn$,menu_buffer%,x%,y%,void%,_temp%,a%,warn_fn$,item_addr%,blk% !x%=_Q%!24:y%=_Q%!28:_U%!264=0 � _U%!20<>0 � ! *|ifdef PROCshell_TraceInit U �shell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+�~_U%!20+")") *|endif !' void%=�shell_DeleteWindow(_U%!20) "! *|ifdef PROCshell_TraceInit #= �shell_Tracef0("MenuWarning:Last dynamic dbox removed") $ *|endif %� &9� Check submenu pointer and create window found there '%� Then call pre and post open FNs (J� If submenu pointer is the warning window, open it to remind the user )9� that no dbox has been attached to this menu entry.. *Ȏ _Q%!20 � +(� _U%!228:� handle of warning dbox.. ,D � won't need to do this if title/icon messages are substituted -" � when loading the templates .C �shell_WindowRetitle(_U%!228,�shell_MessageNoArgs("warning")) /2 � still need to set up the message though... 0H �shell_IconPutData(_U%!228,1,�shell_MessageNoArgs("SHELLMSG07"),0) 1 �7 2, ș "Wimp_CreateSubMenu",,_U%!228,x%,y% 3 44 � Sub menu is either a dialog box, or a menu!! 59 item_addr%=�shell_MenuGetItemAddress(_U%!24,_Q%+32) 6. � �shell_HeapBlockExists(item_addr%!4) � 7 � DBox is attached.. 8- �shell_MenuWarnDBox(item_addr%,x%,y%) 9 � : � Submenu attached.. ;& blk%=�shell_HeapBlockFetch(32) <3 ș "MenuUtil_Decode",_U%!24,_Q%+32 � ,,blk% =9 �shell_FindMenuWarnEvent(blk%!8,warn_fn$,sel_fn$) >$ �shell_HeapBlockReturn(blk%) ?= �shell_MenuWarnSubMenu(_Q%!20,x%,y%,warn_fn$,sel_fn$) @ � A� B� C: DA� �shell_FindMenuWarnEvent(item_handle%,� warn_fn$,� sel_fn$) EA� result%,e_list%,temp%,offset%,found%,list_size%,temp2%,ctr% F� submenu% G;submenu%=0:� If still 0 on return then no event found.. H=e_list%=_U%!220:offset%=0:found%=�:warn_fn$="":submenu%=0 I'� �shell_HeapBlockExists(e_list%) � J � K ctr%+=4 L � e_list%!ctr%=-1 M list_size%=ctr%:ctr%=0 N! *|ifdef PROCshell_TraceInit OA �shell_Tracef0("FindMenuWarnEvent:list_size%="+�list_size%) P *|endif Q � R" temp%=!(e_list%+offset%+0) S � temp%<>-1 � T � temp%=item_handle% � U found%=� V7 temp2%=e_list%!(offset%+4):warn_fn$=$temp2% W( submenu%=e_list%!(offset%+8) X7 temp2%=e_list%!(offset%+12):sel_fn$=$temp2% Y! *|ifdef PROCshell_TraceInit Z7 �shell_Tracef0("FindMenuWarnEvent:submenu found") [ *|endif \ � ] offset%+=16 ^ � _ offset%=list_size% ` � a$ � found% � offset%>=list_size% b� c warn_fn$="":sel_fn$="" d� e*|ifdef PROCshell_TraceInit fJ� submenu%=0 � �shell_Tracef0("FindMenuWarnEvent:warn fn not found..") g*|endif h� i: j1� �shell_MenuGetItemAddress(menu%,selection%) k� ctr%,item_addr% l$ș "MenuUtil_Info",menu% � menu% m� n0 item_addr%=menu%+28+((selection%!ctr%)*24) o/ menu%=item_addr%!4:� address of submenu.. p ctr%+=4 q� selection%!ctr%=-1 r=item_addr% s: t3� �shell_AttachSubMenu(item%,submenu%,warn_fn$) u(ș "MenuUtil_SubMenu",item%,submenu% v� warn_fn$<>"" � w ș "MenuUtil_Warning",,� x: �shell_EventListMenuWarn(item%,submenu%,warn_fn$,"") y� z� {: |C� �shell_EventListMenuWarn(item%,submenu_ptr%,warn_fn$,sel_fn$) }� temp%,temp2%,ctr%,e_list% ~� _U%!220=0 � � Create event list.. �' _U%!220=�shell_HeapBlockFetch(32) � temp%=_U%!220 � temp%!0=item% �0 temp%!4=�shell_HeapBlockFetch(�warn_fn$+1) � $(temp%!4)=warn_fn$ � temp%!8=submenu_ptr% �0 temp%!12=�shell_HeapBlockFetch(�sel_fn$+1) � $(temp%!12)=sel_fn$ �5 temp%!16=-1:temp%!20=-1:temp%!24=-1:temp%!28=-1 �� �$ � Extend existing event list.. �0 e_list%=�shell_HeapBlockExtend(_U%!220,32) � _U%!220=e_list%:ctr%=0 � � � ctr%+=16 � � e_list%!ctr%=-1 � temp%=_U%!220 � temp%!ctr%=item% �7 temp%!(ctr%+4)=�shell_HeapBlockFetch(�warn_fn$+1) �. temp2%=temp%!(ctr%+4):$(temp2%)=warn_fn$ �! temp%!(ctr%+8)=submenu_ptr% �7 temp%!(ctr%+12)=�shell_HeapBlockFetch(�sel_fn$+1) �. temp2%=temp%!(ctr%+12):$(temp2%)=sel_fn$ �> temp%!(ctr%+16)=-1:temp%!(ctr%+20)=-1:temp%!(ctr%+24)=-1 � temp%!(ctr%+28)=-1 �� �� �: �<� �shell_MenuWarnSubMenu(s_menu%,x%,y%,warn_fn$,sel_fn$) �� void%,temp%,f_menu%,ctr% �!_shell_FontMenuSelFN$=sel_fn$ �G� �shell_HeapBlockExists(_U%!224) � �shell_HeapBlockReturn(_U%!224) �._U%!224=�shell_HeapBlockFetch(�warn_fn$+1) �!temp%=_U%!224:$temp%=warn_fn$ �� warn_fn$<>"" � �. void%=�("FN"+warn_fn$+"(_U%!52,_U%!56)") �! *|ifdef PROCshell_TraceInit �; �shell_Tracef0("MenuWarnSubMenu:Calling FN"+warn_fn$) � *|endif �� �*|ifdef Using_FontMenu �� s_menu%=_U%!252 � �" � Submenu is FontMenu menu.. �! *|ifdef PROCshell_TraceInit �: �shell_Tracef0("MenuWarnSubMenu:FontMenu opening..") � *|endif �I � �shell_HeapBlockExists(_U%!256) � �shell_HeapBlockReturn(_U%!256) �8 � Store current menu selection for testing later.. �= � First work out how many levels are in the selection.. �2 ctr%=0:�:ctr%+=4:� !(_Q%+32+ctr%)=-1:ctr%+=4 �7 _U%!256=�shell_HeapBlockFetch(ctr%):temp%=_U%!256 � ctr%=0 � � �! temp%!ctr%=!(_Q%+32+ctr%) � ctr%+=4 � � !(_Q%+32+ctr%)=-1 � temp%!ctr%=!(_Q%+32+ctr%) � temp%=_U%!256 �! *|ifdef PROCshell_TraceInit �h �shell_Tracef0("MenuWarnSubMenu:Selecting '"+�shell_FontMenuGetLastSelectedFont+"' in FontMenu..") � *|endif �P ș "FontMenu_Select",�shell_FontMenuGetLastSelectedFont,_U%!260 � ,f_menu% �+ _U%!264=1:� Set 'FontMenuOpen' flag.. � � f_menu%<>_U%!252 � �$ � FontMenu ptr has changed.. �) �shell_FontMenuUpdatePtr(f_menu%) �' _U%!252=f_menu%:s_menu%=f_menu% � � �� �- _U%!264=0:� Clear 'FontMenuOpen' flag.. �� �*|endif �*ș "Wimp_CreateSubMenu",,s_menu%,x%,y% �� �: �6� �shell_AttachFontSubMenu(item%,warn_fn$,sel_fn$) �!� itemstart%,menu%,temp%,ctr% ��shell_FontMenuInit �/ș "FontMenu_Select",""+�0,_U%!260 � ,menu% �%ș "MenuUtil_SubMenu",item%,menu% �ș "MenuUtil_Warning",,� �&� Store menu ptr in shell memory.. �_U%!252=menu% �:�shell_EventListMenuWarn(item%,menu%,warn_fn$,sel_fn$) �*|ifdef PROCshell_TraceInit �E�shell_Tracef0("AttachFontSubMenu:Attaching font menu &"+�~menu%) �*|endif �� �: �!� �shell_CheckSelection(sel%) �� temp%,ctr% �temp%=_U%!256 �� temp%=0 � =-1 �� _U%!24=_U%!252 � =0 �� �# � sel%!ctr%<>temp%!ctr% � =-1 � ctr%+=4 �� temp%!ctr%=-1 � =ctr% �: �"� �shell_ActionMenuSelect(_Q%) �C� handler%,menu_buffer%,CheckSelect%,fontmenuflag%,void%,h_blk% �%h_blk%=�shell_HeapBlockFetch(256) �*|ifdef PROCshell_TraceInit �A�shell_Tracef0("ActionMenuSelect:Menu_Select event detected") �*|endif �)ș "Wimp_GetPointerInfo",,_shell_blk% �*|ifdef Using_FontMenu �+menu_buffer%=�shell_HeapBlockFetch(256) �� _U%!24=_U%!252 � �" � Current menu is FontMenu.. � CheckSelect%=0:_U%!264=1 �� �- CheckSelect%=�shell_CheckSelection(_Q%) �/ � CheckSelect%>-1 � _U%!264=1 � _U%!264=0 �� �� _U%!264>0 � �P ș "FontMenu_DecodeFontMenu",_Q%+CheckSelect%,menu_buffer% � fontmenuflag% � � fontmenuflag%=1 � �% � 'sensible' selection made.. �# *|ifdef PROCshell_TraceInit �b �shell_Tracef0("ActionMenuSelect:FontMenu selection ("+�shell_GetString(menu_buffer%)+")") � *|endif �I �shell_FontMenuSelectFont(�shell_GetString(menu_buffer%),_U%!260) �$ � _shell_FontMenuSelFN$="" � �7 ș "Wimp_DecodeMenu",,_U%!24,_Q%,menu_buffer% �5 fn$=�shell_GetEventHandler(_U%!52,_U%!56,0) � _temp%=menu_buffer% 9 $_temp%=�shell_StringStripTrailing($_temp%," ") 3 � fn$<>"" � void%=�("FN"+fn$+"($_temp%)") � ' � _shell_FontMenuSelFN$<>"" � W void%=�("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)") � � � � (�shell_HeapBlockReturn(menu_buffer%) *|endif � _U%!264=0 � 8 ș "MenuUtil_Decode",_U%!24,_Q% � handler%,,h_blk% : � handler% � �shell_MenuCallHandler(handler%,h_blk%) � � _shell_blk%!8=1 � , �shell_Tracef0("HILKE::Adjust button") ) � �shell_HeapBlockExists(_U%!224) � 6 �shell_Tracef0("HILKE::Stored warn_fn exists") _temp%=_U%!224 � $_temp%<>"" � $ � Call last menuwarning fn E �shell_Tracef0("HILKE::Calling last warn_fn ("+$_temp%+")") 1 void%=�("FN"+$_temp%+"(_U%!52,_U%!56)") � � + �shell_OpenMenu(_U%!36,_U%!40,_U%!24) � _shell_FontMenuSelFN$="" � "�shell_HeapBlockReturn(h_blk%) � : !6� �shell_AttachFontMenu(wh%,ih%,sel_fn$,maker_fn$) "� menu% #�shell_FontMenuInit $/ș "FontMenu_Select",""+�0,_U%!260 � ,menu% %&� Store menu ptr in shell memory.. &_U%!252=menu% '+�shell_EventAdd(wh%,ih%,0,"-2",sel_fn$) (*|ifdef PROCshell_TraceInit )8�shell_Tracef0("AttachFontMenu:Attaching font menu") **|endif +?� maker_fn$<>"" � �shell_AttachMenuMaker(wh%,ih%,maker_fn$) ,� -: .*� �shell_GetEventMenu(button%,wh%,ic%) /.� ptr%,event_list%,found%,list_size%,menu% 0� wh%=-1 � wh%=-2 1-list_size%=�shell_HeapBlockInfo(_U%!12)-8 2 ptr%=0 3found%=� 4event_list%=_U%!12 5 fn$="" 6� 7 � (event_list%!ptr%=wh%) � 8& � event_list%!(ptr%+4) = ic% � 9$ menu%=event_list%!(ptr%+8) :$ � menu%=-2 � menu%=_U%!252 ; found%=� < � =' � event_list%!(ptr%+4) = -1 � > � button%=2 � ?( menu%=event_list%!(ptr%+8) @( � menu%=-2 � menu%=_U%!252 A found%=� B � C ptr%+=48 D � E � F ptr%+=48 G � H � I � J ptr%+=48 K � L!� (ptr%>=list_size% � found%) M =menu% N: O,� �shell_HandleAttachedMenu(_Q%,wh%,ih%) P� menu% Q� ih%<>-1 � wh%>-1 � R. menu%=�shell_GetEventMenu(_Q%!8,wh%,ih%) S � menu%<>0 � T- �shell_OpenMenu(_Q%!0-64,_Q%!4,menu%) U � V� W� X: Y� �shell_OpenMenu(x%,y%,m%) Z � fn$ [/fn$=�shell_GetEventHandler(_U%!28,_U%!32,1) \� fn$<>"" � ]; �shell_Tracef0("OpenMenu:menumaker function is "+fn$) ^: void%=�("FN"+fn$+"(_U%!28,_U%!32)"):� call menumaker _� `A �shell_Tracef0("OpenMenu:no menumaker function registered") a� b� m%<>_U%!24 � cI � If menu is not being re-opened by an adjust click, discard stored d; � 'SelectionSoFar' string used by FontMenu routines.. e) � �shell_HeapBlockExists(_U%!256) � f1 �shell_HeapBlockReturn(_U%!256):_U%!256=0 g � hB � And the name of the currently selected font in this menu.. i* � �shell_HeapBlockExists(_U%!244 ) � j1 �shell_HeapBlockReturn(_U%!244):_U%!244=0 k � l� m� m%=_U%!252 � n$ ș "Wimp_CreateMenu",,m%,x%,y% o _U%!264=1 p� q ș "MenuUtil_Show",m%,_Q% r _U%!264=0 s� t4_U%!24=m%:� store address of currently open menu u%_U%!36=x%:� store menu x position v%_U%!40=y%:� store menu y position w _U%!52=_U%!28:� store window x_U%!56=_U%!32:� store icon y� z: {� �shell_MenuNew(title$) | � handle% }'ș "MenuUtil_New",,title$ � handle% ~=handle% : �+� �shell_MenuAdd(handle%,item$,sel_fn$) �� ret_handle% �� sel_fn$<>"" � �; ș "MenuUtil_Add",handle%,item$,sel_fn$ � ret_handle% �� �3 ș "MenuUtil_Add",handle%,item$ � ret_handle% �� �=ret_handle% �: �*� �shell_MenuTick(item_handle%,state%) �*ș "MenuUtil_Tick",item_handle%,state% �� �: �-� �shell_MenuTickOnly1(menu_handle%,pos%) �,ș "MenuUtil_TickOnly",menu_handle%,pos% �� �: �(� �shell_MenuTickOnly2(item_handle%) �'ș "MenuUtil_TickOnly",item_handle% �� �: �&� �shell_MenuShade(handle%,state%) �%ș "MenuUtil_Fade",handle%,state% �� �: �,� �shell_MenuDotted(item_handle%,state%) �*ș "MenuUtil_Dots",item_handle%,state% �� �: �.� �shell_MenuColours(item_handle%,fg%,bg%) �.ș "MenuUtil_Colours",item_handle%,fg%,bg% �� �: �;� �shell_MenuWritable(item_handle%,state%,size%,valid$) �;ș "MenuUtil_Writable",item_handle%,state%,size%,valid$ �� �: �,� �shell_MenuPutData(item_handle%,data$) �)ș "MenuUtil_Text",item_handle%,data$ �� �: �'� �shell_MenuCallHandler(h%,h_blk%) �� � �� � �:� �:� �� �("FN"+$h%+"(h_blk%)") �� �: �
00000000 0d 00 01 1b f4 20 3e 20 3c 52 65 64 72 61 77 24 |..... > <Redraw$| 00000010 44 69 72 3e 2e 52 65 64 72 61 77 0d 00 02 05 3a |Dir>.Redraw....:| 00000020 0d 00 03 10 64 65 62 75 67 67 69 6e 67 25 3d a3 |....debugging%=.| 00000030 0d 00 04 1f f4 20 43 6f 70 79 72 69 67 68 74 20 |..... Copyright | 00000040 50 61 75 6c 20 48 6f 62 62 73 20 31 39 39 33 0d |Paul Hobbs 1993.| 00000050 00 05 19 f4 20 52 68 65 69 6e 70 66 61 6c 7a 73 |.... Rheinpfalzs| 00000060 74 72 61 73 73 65 20 32 0d 00 06 19 f4 20 20 20 |trasse 2..... | 00000070 20 38 35 30 34 39 20 49 6e 67 6f 6c 73 74 61 64 | 85049 Ingolstad| 00000080 74 0d 00 07 19 f4 20 20 20 20 20 20 20 20 20 20 |t..... | 00000090 20 20 20 47 65 72 6d 61 6e 79 0d 00 08 05 3a 0d | Germany....:.| 000000a0 00 09 3e f4 20 54 68 69 73 20 70 72 6f 67 72 61 |..>. This progra| 000000b0 6d 20 61 6e 64 20 70 61 72 74 73 20 74 68 65 72 |m and parts ther| 000000c0 65 6f 66 20 6d 61 79 20 62 65 20 66 72 65 65 6c |eof may be freel| 000000d0 79 20 64 69 73 74 72 69 62 75 74 65 64 0d 00 0a |y distributed...| 000000e0 05 3a 0d 00 0b 33 ee 20 85 20 eb 31 32 3a c8 99 |.:...3. . .12:..| 000000f0 22 48 6f 75 72 67 6c 61 73 73 5f 53 6d 61 73 68 |"Hourglass_Smash| 00000100 22 3a f6 3a f1 22 20 61 74 20 6c 69 6e 65 3a 20 |":.:." at line: | 00000110 22 3b 9e 3a e0 0d 00 0c 05 3a 0d 00 0d 29 c8 9b |";.:.....:...)..| 00000120 20 22 3c 45 76 6e 74 53 68 65 6c 6c 53 79 73 74 | "<EvntShellSyst| 00000130 65 6d 24 50 61 74 68 3e 53 68 65 6c 6c 4c 69 62 |em$Path>ShellLib| 00000140 52 54 22 0d 00 0e 05 3a 0d 00 0f 15 c8 99 20 22 |RT"....:...... "| 00000150 48 6f 75 72 67 6c 61 73 73 5f 4f 6e 22 0d 00 10 |Hourglass_On"...| 00000160 05 3a 0d 00 11 28 c8 99 20 22 57 69 6d 70 5f 53 |.:...(.. "Wimp_S| 00000170 6c 6f 74 53 69 7a 65 22 2c 2d 31 2c 2d 31 20 b8 |lotSize",-1,-1 .| 00000180 20 70 72 6f 67 73 69 7a 65 25 0d 00 12 13 70 61 | progsize%....pa| 00000190 67 65 73 69 7a 65 25 3d 31 3c 3c 31 30 0d 00 13 |gesize%=1<<10...| 000001a0 1e 66 72 65 65 73 70 61 63 65 25 3d 26 38 30 30 |.freespace%=&800| 000001b0 30 2b 70 72 6f 67 73 69 7a 65 25 0d 00 14 1a e0 |0+progsize%.....| 000001c0 3d 66 72 65 65 73 70 61 63 65 25 2b 70 61 67 65 |=freespace%+page| 000001d0 73 69 7a 65 25 0d 00 15 10 d3 3d 66 72 65 65 73 |size%.....=frees| 000001e0 70 61 63 65 25 0d 00 16 05 3a 0d 00 17 3f f2 73 |pace%....:...?.s| 000001f0 68 65 6c 6c 5f 48 65 61 70 4d 61 6e 61 67 65 72 |hell_HeapManager| 00000200 49 6e 69 74 28 22 3c 45 76 6e 74 53 68 65 6c 6c |Init("<EvntShell| 00000210 53 79 73 74 65 6d 24 50 61 74 68 3e 22 2c 66 72 |System$Path>",fr| 00000220 65 65 73 70 61 63 65 25 29 0d 00 18 0f f2 73 68 |eespace%).....sh| 00000230 65 6c 6c 5f 49 6e 69 74 0d 00 19 2e 74 61 73 6b |ell_Init....task| 00000240 25 3d a4 73 68 65 6c 6c 5f 57 69 6d 70 49 6e 69 |%=.shell_WimpIni| 00000250 74 5f 49 28 32 30 30 2c 22 52 65 64 72 61 77 20 |t_I(200,"Redraw | 00000260 44 65 6d 6f 22 29 0d 00 1a 18 f2 73 68 65 6c 6c |Demo").....shell| 00000270 5f 54 72 61 63 65 49 6e 69 74 28 22 22 29 0d 00 |_TraceInit("")..| 00000280 1b 17 f4 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 |... PROCshell_Tr| 00000290 61 63 65 4f 6e 0d 00 1c 18 f2 73 68 65 6c 6c 5f |aceOn.....shell_| 000002a0 52 65 73 6f 75 72 63 65 73 49 6e 69 74 0d 00 1d |ResourcesInit...| 000002b0 0d f2 61 70 70 5f 69 6e 69 74 0d 00 1e 05 3a 0d |..app_init....:.| 000002c0 00 1f 4c f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..L. -----------| 000002d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 20 49 6e 69 74 69 61 |--------- Initia| 000002e0 6c 69 73 65 20 56 61 72 69 61 62 6c 65 73 20 2d |lise Variables -| 000002f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000300 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 00 20 05 3a |-----------.. .:| 00000310 0d 00 21 47 5f 63 6c 6f 73 65 64 6f 77 6e 25 20 |..!G_closedown% | 00000320 20 20 20 20 3d a3 20 3a f4 20 53 65 74 20 74 68 | =. :. Set th| 00000330 69 73 20 74 6f 20 54 52 55 45 20 77 68 65 6e 20 |is to TRUE when | 00000340 79 6f 75 20 77 61 6e 74 20 74 68 65 20 70 72 6f |you want the pro| 00000350 67 72 61 6d 20 74 6f 0d 00 22 21 20 20 20 20 20 |gram to.."! | 00000360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000370 20 20 3a f4 20 65 6e 64 0d 00 23 44 63 68 61 6e | :. end..#Dchan| 00000380 67 65 64 25 20 20 20 20 20 20 20 20 3d a3 20 3a |ged% =. :| 00000390 f4 20 55 73 65 64 20 74 6f 20 6b 65 65 70 20 74 |. Used to keep t| 000003a0 72 61 63 6b 20 6f 66 20 77 68 65 74 68 65 72 20 |rack of whether | 000003b0 74 68 65 20 64 61 74 61 20 68 61 73 0d 00 24 4b |the data has..$K| 000003c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000003d0 20 20 20 20 20 20 20 3a f4 20 62 65 65 6e 20 63 | :. been c| 000003e0 68 61 6e 67 65 64 2e 20 43 61 6c 6c 20 50 52 4f |hanged. Call PRO| 000003f0 43 66 69 6c 65 5f 63 68 61 6e 67 65 64 28 29 20 |Cfile_changed() | 00000400 77 68 65 6e 20 69 74 0d 00 25 47 20 20 20 20 20 |when it..%G | 00000410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000420 20 20 3a f4 20 68 61 73 2e 20 42 75 74 20 69 66 | :. has. But if| 00000430 20 74 68 65 20 70 72 6f 67 72 61 6d 20 64 6f 65 | the program doe| 00000440 73 20 6e 6f 74 20 75 73 65 20 64 61 74 61 0d 00 |s not use data..| 00000450 26 48 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |&H | 00000460 20 20 20 20 20 20 20 20 20 3a f4 20 66 69 6c 65 | :. file| 00000470 73 20 6a 75 73 74 20 69 67 6e 6f 72 65 20 74 68 |s just ignore th| 00000480 69 73 20 76 61 72 69 61 62 6c 65 20 62 75 74 20 |is variable but | 00000490 64 6f 20 6e 6f 74 0d 00 27 47 20 20 20 20 20 20 |do not..'G | 000004a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000004b0 20 3a f4 20 64 65 6c 65 74 65 20 69 74 20 61 73 | :. delete it as| 000004c0 20 74 68 65 20 70 72 6f 67 72 61 6d 20 63 68 65 | the program che| 000004d0 63 6b 73 20 69 74 20 62 65 66 6f 72 65 0d 00 28 |cks it before..(| 000004e0 26 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |& | 000004f0 20 20 20 20 20 20 20 20 3a f4 20 65 78 69 74 69 | :. exiti| 00000500 6e 67 21 0d 00 29 05 3a 0d 00 2a 4c f4 20 2d 2d |ng!..).:..*L. --| 00000510 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000520 2d 2d 20 4d 69 73 63 65 6c 6c 65 61 6e 6f 75 73 |-- Miscelleanous| 00000530 20 49 6e 69 74 69 61 6c 69 73 61 74 69 6f 6e 20 | Initialisation | 00000540 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| 00000550 2d 2d 2d 2d 0d 00 2b 05 3a 0d 00 2c 05 3a 0d 00 |----..+.:..,.:..| 00000560 2d 16 65 72 72 6f 72 5f 66 6c 61 67 25 20 20 20 |-.error_flag% | 00000570 20 20 3d 33 0d 00 2e 14 ee 20 85 20 f2 73 68 65 | =3..... . .she| 00000580 6c 6c 5f 45 72 72 6f 72 0d 00 2f 05 3a 0d 00 30 |ll_Error../.:..0| 00000590 16 c8 99 20 22 48 6f 75 72 67 6c 61 73 73 5f 4f |... "Hourglass_O| 000005a0 66 66 22 0d 00 31 05 f5 0d 00 32 2b 20 20 f2 73 |ff"..1....2+ .s| 000005b0 68 65 6c 6c 5f 41 63 74 69 6f 6e 28 a4 73 68 65 |hell_Action(.she| 000005c0 6c 6c 5f 50 6f 6c 6c 5f 49 28 30 2c 74 61 73 6b |ll_Poll_I(0,task| 000005d0 25 29 29 0d 00 33 11 fd 20 5f 63 6c 6f 73 65 64 |%))..3.. _closed| 000005e0 6f 77 6e 25 0d 00 34 05 3a 0d 00 35 11 f2 73 68 |own%..4.:..5..sh| 000005f0 65 6c 6c 5f 45 78 69 74 3a e0 0d 00 36 05 3a 0d |ell_Exit:...6.:.| 00000600 00 37 4c f4 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |.7L. ===========| 00000610 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| * 00000640 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 00 38 05 3a |===========..8.:| 00000650 0d 00 39 0f dd 20 f2 61 70 70 5f 69 6e 69 74 0d |..9.. .app_init.| 00000660 00 3a 1d 6d 79 5f 66 6f 6e 74 24 3d 22 54 72 69 |.:.my_font$="Tri| 00000670 6e 69 74 79 2e 4d 65 64 69 75 6d 22 0d 00 3b 10 |nity.Medium"..;.| 00000680 f2 53 65 74 55 70 5f 4d 65 6e 75 73 0d 00 3c 53 |.SetUp_Menus..<S| 00000690 73 69 63 6f 6e 3d a4 73 68 65 6c 6c 5f 49 63 6f |sicon=.shell_Ico| 000006a0 6e 62 61 72 28 2d 31 2c 22 21 22 2b a4 73 68 65 |nbar(-1,"!"+.she| 000006b0 6c 6c 5f 47 65 74 41 70 70 4e 61 6d 65 2c 22 22 |ll_GetAppName,""| 000006c0 2c 31 32 30 2c 4d 65 6e 75 48 61 6e 64 6c 65 5f |,120,MenuHandle_| 000006d0 49 63 6f 6e 42 61 72 25 2c 30 2c 30 2c 30 29 0d |IconBar%,0,0,0).| 000006e0 00 3d 2c f2 73 68 65 6c 6c 5f 41 74 74 61 63 68 |.=,.shell_Attach| 000006f0 48 65 6c 70 54 61 67 28 2d 31 2c 73 69 63 6f 6e |HelpTag(-1,sicon| 00000700 2c 22 69 63 6f 6e 62 61 72 22 29 0d 00 3e 3d f2 |,"iconbar")..>=.| 00000710 73 68 65 6c 6c 5f 41 74 74 61 63 68 43 6c 69 63 |shell_AttachClic| 00000720 6b 53 65 6c 65 63 74 28 2d 31 2c 73 69 63 6f 6e |kSelect(-1,sicon| 00000730 2c 22 5f 43 6c 69 63 6b 53 65 6c 65 63 74 5f 49 |,"_ClickSelect_I| 00000740 63 6f 6e 42 61 72 22 29 0d 00 3f 04 0d 00 40 2d |conBar")..?...@-| 00000750 f2 73 68 65 6c 6c 5f 43 72 65 61 74 65 57 69 6e |.shell_CreateWin| 00000760 64 6f 77 53 74 61 74 69 63 28 22 6d 61 69 6e 77 |dowStatic("mainw| 00000770 22 2c 6d 61 69 6e 77 25 29 0d 00 41 2d f2 73 68 |",mainw%)..A-.sh| 00000780 65 6c 6c 5f 41 74 74 61 63 68 55 73 65 72 52 65 |ell_AttachUserRe| 00000790 64 72 61 77 28 6d 61 69 6e 77 25 2c 22 5f 72 65 |draw(mainw%,"_re| 000007a0 64 72 61 77 22 29 0d 00 42 4b f2 73 68 65 6c 6c |draw")..BK.shell| 000007b0 5f 41 74 74 61 63 68 46 6f 6e 74 4d 65 6e 75 28 |_AttachFontMenu(| 000007c0 6d 61 69 6e 77 25 2c 2d 31 2c 22 5f 4d 65 6e 75 |mainw%,-1,"_Menu| 000007d0 53 65 6c 65 63 74 5f 46 6f 6e 74 73 22 2c 22 5f |Select_Fonts","_| 000007e0 4d 65 6e 75 4d 61 6b 65 72 5f 46 6f 6e 74 73 22 |MenuMaker_Fonts"| 000007f0 29 0d 00 43 04 0d 00 44 30 f2 73 68 65 6c 6c 5f |)..C...D0.shell_| 00000800 46 69 6e 64 46 6f 6e 74 28 6d 79 5f 66 6f 6e 74 |FindFont(my_font| 00000810 24 2c 32 34 2c 32 34 2c 66 6f 6e 74 5f 68 61 6e |$,24,24,font_han| 00000820 64 6c 65 25 29 0d 00 45 22 c8 99 20 22 46 6f 6e |dle%)..E".. "Fon| 00000830 74 5f 53 65 74 46 6f 6e 74 22 2c 66 6f 6e 74 5f |t_SetFont",font_| 00000840 68 61 6e 64 6c 65 25 0d 00 46 1c 5f 73 68 65 6c |handle%..F._shel| 00000850 6c 5f 46 6f 6e 74 4d 65 6e 75 53 65 6c 46 4e 24 |l_FontMenuSelFN$| 00000860 3d 22 22 0d 00 47 05 e1 0d 00 48 05 3a 0d 00 49 |=""..G....H.:..I| 00000870 04 0d 00 4a 46 f4 20 3d 3d 3d 3d 3d 20 4d 65 6e |...JF. ===== Men| 00000880 75 5f 53 65 74 75 70 20 72 6f 75 74 69 6e 65 73 |u_Setup routines| 00000890 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d | ===============| 000008a0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 000008b0 3d 3d 3d 3d 3d 3d 3d 0d 00 4b 04 0d 00 4c 12 dd |=======..K...L..| 000008c0 20 f2 53 65 74 55 70 5f 4d 65 6e 75 73 0d 00 4d | .SetUp_Menus..M| 000008d0 0b ea 20 76 6f 69 64 25 0d 00 4e 1c c8 99 20 22 |.. void%..N... "| 000008e0 4d 65 6e 75 55 74 69 6c 5f 49 6e 69 74 69 61 6c |MenuUtil_Initial| 000008f0 69 73 65 22 0d 00 4f 04 0d 00 50 30 4d 65 6e 75 |ise"..O...P0Menu| 00000900 48 61 6e 64 6c 65 5f 49 63 6f 6e 42 61 72 25 3d |Handle_IconBar%=| 00000910 a4 73 68 65 6c 6c 5f 4d 65 6e 75 4e 65 77 28 22 |.shell_MenuNew("| 00000920 52 65 64 72 61 77 22 29 0d 00 51 33 4d 65 6e 75 |Redraw")..Q3Menu| 00000930 49 74 65 6d 5f 49 6e 66 6f 25 20 20 20 20 20 3d |Item_Info% =| 00000940 a4 73 68 65 6c 6c 5f 4d 65 6e 75 41 64 64 28 30 |.shell_MenuAdd(0| 00000950 2c 22 49 6e 66 6f 22 2c 22 22 29 0d 00 52 34 4d |,"Info","")..R4M| 00000960 65 6e 75 49 74 65 6d 5f 46 6f 6e 74 73 25 20 20 |enuItem_Fonts% | 00000970 20 20 3d a4 73 68 65 6c 6c 5f 4d 65 6e 75 41 64 | =.shell_MenuAd| 00000980 64 28 30 2c 22 46 6f 6e 74 73 22 2c 22 22 29 0d |d(0,"Fonts","").| 00000990 00 53 43 76 6f 69 64 25 20 20 20 20 20 20 20 20 |.SCvoid% | 000009a0 20 20 20 20 20 20 3d a4 73 68 65 6c 6c 5f 4d 65 | =.shell_Me| 000009b0 6e 75 41 64 64 28 30 2c 22 51 75 69 74 22 2c 22 |nuAdd(0,"Quit","| 000009c0 5f 4d 65 6e 75 53 65 6c 65 63 74 5f 51 75 69 74 |_MenuSelect_Quit| 000009d0 22 29 0d 00 54 46 f2 73 68 65 6c 6c 5f 41 74 74 |")..TF.shell_Att| 000009e0 61 63 68 4d 65 6e 75 44 42 6f 78 28 4d 65 6e 75 |achMenuDBox(Menu| 000009f0 49 74 65 6d 5f 49 6e 66 6f 25 2c 22 70 72 6f 67 |Item_Info%,"prog| 00000a00 49 6e 66 6f 22 2c 22 5f 50 72 65 4f 70 65 6e 49 |Info","_PreOpenI| 00000a10 6e 66 6f 22 2c 22 22 29 0d 00 55 52 f2 73 68 65 |nfo","")..UR.she| 00000a20 6c 6c 5f 41 74 74 61 63 68 46 6f 6e 74 53 75 62 |ll_AttachFontSub| 00000a30 4d 65 6e 75 28 4d 65 6e 75 49 74 65 6d 5f 46 6f |Menu(MenuItem_Fo| 00000a40 6e 74 73 25 2c 22 5f 77 61 72 6e 5f 46 6f 6e 74 |nts%,"_warn_Font| 00000a50 4d 65 6e 75 22 2c 22 5f 4d 65 6e 75 53 65 6c 65 |Menu","_MenuSele| 00000a60 63 74 5f 46 6f 6e 74 73 22 29 0d 00 56 04 0d 00 |ct_Fonts")..V...| 00000a70 57 05 e1 0d 00 58 05 3a 0d 00 59 04 0d 00 5a 46 |W....X.:..Y...ZF| 00000a80 f4 20 3d 3d 3d 3d 3d 20 43 6c 69 63 6b 5f 53 65 |. ===== Click_Se| 00000a90 6c 65 63 74 20 72 6f 75 74 69 6e 65 73 20 3d 3d |lect routines ==| 00000aa0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| * 00000ac0 3d 3d 0d 00 5b 04 0d 00 5c 26 dd 20 a4 5f 43 6c |==..[...\&. ._Cl| 00000ad0 69 63 6b 53 65 6c 65 63 74 5f 49 63 6f 6e 42 61 |ickSelect_IconBa| 00000ae0 72 28 77 68 25 2c 69 63 6f 6e 25 29 0d 00 5d 23 |r(wh%,icon%)..]#| 00000af0 f2 73 68 65 6c 6c 5f 4f 70 65 6e 57 69 6e 64 6f |.shell_OpenWindo| 00000b00 77 53 74 61 74 69 63 28 6d 61 69 6e 77 25 29 0d |wStatic(mainw%).| 00000b10 00 5e 06 3d 30 0d 00 5f 05 3a 0d 00 60 04 0d 00 |.^.=0.._.:..`...| 00000b20 61 46 f4 20 3d 3d 3d 3d 3d 20 4d 65 6e 75 5f 53 |aF. ===== Menu_S| 00000b30 65 6c 65 63 74 20 72 6f 75 74 69 6e 65 73 20 3d |elect routines =| 00000b40 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| * 00000b60 3d 3d 3d 3d 0d 00 62 04 0d 00 63 23 dd 20 a4 5f |====..b...c#. ._| 00000b70 4d 65 6e 75 53 65 6c 65 63 74 5f 46 6f 6e 74 73 |MenuSelect_Fonts| 00000b80 28 66 6f 6e 74 6e 61 6d 65 24 29 0d 00 64 33 e7 |(fontname$)..d3.| 00000b90 20 66 6f 6e 74 6e 61 6d 65 24 3c 3e 22 22 20 8c | fontname$<>"" .| 00000ba0 20 f2 73 65 6c 65 63 74 5f 6e 65 77 5f 66 6f 6e | .select_new_fon| 00000bb0 74 28 66 6f 6e 74 6e 61 6d 65 24 29 20 20 0d 00 |t(fontname$) ..| 00000bc0 65 06 3d 30 0d 00 66 05 3a 0d 00 67 1d dd 20 a4 |e.=0..f.:..g.. .| 00000bd0 5f 4d 65 6e 75 53 65 6c 65 63 74 5f 51 75 69 74 |_MenuSelect_Quit| 00000be0 28 62 6c 6b 25 29 0d 00 68 11 5f 63 6c 6f 73 65 |(blk%)..h._close| 00000bf0 64 6f 77 6e 25 3d b9 0d 00 69 23 c8 99 20 22 46 |down%=...i#.. "F| 00000c00 6f 6e 74 5f 4c 6f 73 65 46 6f 6e 74 22 2c 66 6f |ont_LoseFont",fo| 00000c10 6e 74 5f 68 61 6e 64 6c 65 25 0d 00 6a 06 3d 30 |nt_handle%..j.=0| 00000c20 0d 00 6b 05 3a 0d 00 6c 04 0d 00 6d 46 f4 20 3d |..k.:..l...mF. =| 00000c30 3d 3d 3d 3d 20 4d 65 6e 75 5f 4d 61 6b 65 72 20 |==== Menu_Maker | 00000c40 72 6f 75 74 69 6e 65 73 20 3d 3d 3d 3d 3d 3d 3d |routines =======| 00000c50 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 00000c60 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d |===============.| 00000c70 00 6e 04 0d 00 6f 20 dd 20 a4 5f 4d 65 6e 75 4d |.n...o . ._MenuM| 00000c80 61 6b 65 72 5f 46 6f 6e 74 73 28 77 68 25 2c 69 |aker_Fonts(wh%,i| 00000c90 68 25 29 0d 00 70 2d f4 20 54 69 63 6b 20 74 68 |h%)..p-. Tick th| 00000ca0 65 20 63 75 72 72 65 6e 74 20 66 6f 6e 74 20 69 |e current font i| 00000cb0 6e 20 74 68 65 20 46 6f 6e 74 4d 65 6e 75 2e 2e |n the FontMenu..| 00000cc0 0d 00 71 29 f2 73 68 65 6c 6c 5f 46 6f 6e 74 4d |..q).shell_FontM| 00000cd0 65 6e 75 53 65 6c 65 63 74 46 6f 6e 74 28 6d 79 |enuSelectFont(my| 00000ce0 5f 66 6f 6e 74 24 2c 31 29 0d 00 72 06 3d 30 0d |_font$,1)..r.=0.| 00000cf0 00 73 05 3a 0d 00 74 04 0d 00 75 46 f4 20 3d 3d |.s.:..t...uF. ==| 00000d00 3d 3d 3d 20 4d 65 6e 75 5f 57 61 72 6e 20 72 6f |=== Menu_Warn ro| 00000d10 75 74 69 6e 65 73 20 3d 3d 3d 3d 3d 3d 3d 3d 3d |utines =========| 00000d20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 00000d30 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 00 |==============..| 00000d40 76 04 0d 00 77 1e dd 20 a4 5f 77 61 72 6e 5f 46 |v...w.. ._warn_F| 00000d50 6f 6e 74 4d 65 6e 75 28 77 68 25 2c 69 68 25 29 |ontMenu(wh%,ih%)| 00000d60 0d 00 78 2d f4 20 54 69 63 6b 20 74 68 65 20 63 |..x-. Tick the c| 00000d70 75 72 72 65 6e 74 20 66 6f 6e 74 20 69 6e 20 74 |urrent font in t| 00000d80 68 65 20 46 6f 6e 74 4d 65 6e 75 2e 2e 0d 00 79 |he FontMenu....y| 00000d90 29 f2 73 68 65 6c 6c 5f 46 6f 6e 74 4d 65 6e 75 |).shell_FontMenu| 00000da0 53 65 6c 65 63 74 46 6f 6e 74 28 6d 79 5f 66 6f |SelectFont(my_fo| 00000db0 6e 74 24 2c 31 29 0d 00 7a 06 3d 30 0d 00 7b 05 |nt$,1)..z.=0..{.| 00000dc0 3a 0d 00 7c 1d dd 20 f2 73 65 6c 65 63 74 5f 6e |:..|.. .select_n| 00000dd0 65 77 5f 66 6f 6e 74 28 66 6f 6e 74 24 29 0d 00 |ew_font(font$)..| 00000de0 7d 30 f4 20 41 20 66 6f 6e 74 20 68 61 73 20 62 |}0. A font has b| 00000df0 65 65 6e 20 73 65 6c 65 63 74 65 64 20 69 6e 20 |een selected in | 00000e00 74 68 65 20 46 6f 6e 74 4d 65 6e 75 2e 2e 0d 00 |the FontMenu....| 00000e10 7e 12 6d 79 5f 66 6f 6e 74 24 3d 66 6f 6e 74 24 |~.my_font$=font$| 00000e20 0d 00 7f 23 c8 99 20 22 46 6f 6e 74 5f 4c 6f 73 |...#.. "Font_Los| 00000e30 65 46 6f 6e 74 22 2c 66 6f 6e 74 5f 68 61 6e 64 |eFont",font_hand| 00000e40 6c 65 25 0d 00 80 30 f2 73 68 65 6c 6c 5f 46 69 |le%...0.shell_Fi| 00000e50 6e 64 46 6f 6e 74 28 6d 79 5f 66 6f 6e 74 24 2c |ndFont(my_font$,| 00000e60 32 34 2c 32 34 2c 66 6f 6e 74 5f 68 61 6e 64 6c |24,24,font_handl| 00000e70 65 25 29 0d 00 81 22 c8 99 20 22 46 6f 6e 74 5f |e%)...".. "Font_| 00000e80 53 65 74 46 6f 6e 74 22 2c 66 6f 6e 74 5f 68 61 |SetFont",font_ha| 00000e90 6e 64 6c 65 25 0d 00 82 2f c8 99 20 22 57 69 6d |ndle%.../.. "Wim| 00000ea0 70 5f 46 6f 72 63 65 52 65 64 72 61 77 22 2c 6d |p_ForceRedraw",m| 00000eb0 61 69 6e 77 25 2c 30 2c 2d 32 30 30 30 2c 32 30 |ainw%,0,-2000,20| 00000ec0 30 30 2c 30 0d 00 83 05 e1 0d 00 84 05 3a 0d 00 |00,0.........:..| 00000ed0 85 1c dd 20 a4 5f 72 65 64 72 61 77 28 62 6c 6b |... ._redraw(blk| 00000ee0 25 2c 78 30 25 2c 79 30 25 29 0d 00 86 1a c8 99 |%,x0%,y0%)......| 00000ef0 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c 6f 75 72 | "Wimp_SetColour| 00000f00 22 2c 31 31 0d 00 87 1d c8 8f 20 c8 90 20 78 30 |",11...... .. x0| 00000f10 25 2b 32 30 30 2c 79 30 25 2d 32 30 30 2c 31 32 |%+200,y0%-200,12| 00000f20 30 0d 00 88 19 c8 99 20 22 57 69 6d 70 5f 53 65 |0...... "Wimp_Se| 00000f30 74 43 6f 6c 6f 75 72 22 2c 38 0d 00 89 2e ec 20 |tColour",8..... | 00000f40 78 30 25 2b 38 30 2c 79 30 25 2d 33 34 30 3a f1 |x0%+80,y0%-340:.| 00000f50 20 22 54 68 69 73 20 69 73 20 61 6e 20 65 78 61 | "This is an exa| 00000f60 6d 70 6c 65 20 6f 66 22 0d 00 8a 35 ec 20 78 30 |mple of"...5. x0| 00000f70 25 2b 34 30 2c 79 30 25 2d 33 38 30 3a f1 20 22 |%+40,y0%-380:. "| 00000f80 75 73 65 72 20 64 72 61 77 6e 20 74 65 78 74 20 |user drawn text | 00000f90 61 6e 64 20 67 72 61 70 68 69 63 73 22 0d 00 8b |and graphics"...| 00000fa0 2c ec 20 78 30 25 2b 39 35 2c 79 30 25 2d 34 32 |,. x0%+95,y0%-42| 00000fb0 30 3a f1 20 22 69 6e 20 61 20 64 65 73 6b 74 6f |0:. "in a deskto| 00000fc0 70 20 77 69 6e 64 6f 77 22 0d 00 8c 47 c8 99 20 |p window"...G.. | 00000fd0 22 43 6f 6c 6f 75 72 54 72 61 6e 73 5f 53 65 74 |"ColourTrans_Set| 00000fe0 46 6f 6e 74 43 6f 6c 6f 75 72 73 22 2c 66 6f 6e |FontColours",fon| 00000ff0 74 5f 68 61 6e 64 6c 65 25 2c 26 46 46 46 46 46 |t_handle%,&FFFFF| 00001000 46 30 30 2c 26 30 30 30 30 30 30 30 30 2c 31 34 |F00,&00000000,14| 00001010 0d 00 8d 3e c8 99 20 22 46 6f 6e 74 5f 50 61 69 |...>.. "Font_Pai| 00001020 6e 74 22 2c 30 2c 22 41 6e 64 20 4f 75 74 6c 69 |nt",0,"And Outli| 00001030 6e 65 20 46 6f 6e 74 73 2e 2e 22 2c 31 3c 3c 34 |ne Fonts..",1<<4| 00001040 2c 78 30 25 2b 31 30 2c 79 30 25 2d 37 30 0d 00 |,x0%+10,y0%-70..| 00001050 8e 06 3d 30 0d 00 8f 05 3a 0d 00 90 26 dd 20 a4 |..=0....:...&. .| 00001060 5f 43 6c 69 63 6b 53 65 6c 65 63 74 5f 49 63 6f |_ClickSelect_Ico| 00001070 6e 42 61 72 28 77 68 25 2c 69 63 6f 6e 25 29 0d |nBar(wh%,icon%).| 00001080 00 91 23 f2 73 68 65 6c 6c 5f 4f 70 65 6e 57 69 |..#.shell_OpenWi| 00001090 6e 64 6f 77 53 74 61 74 69 63 28 6d 61 69 6e 77 |ndowStatic(mainw| 000010a0 25 29 0d 00 92 06 3d 30 0d 00 93 05 3a 0d 00 94 |%)....=0....:...| 000010b0 04 0d 00 95 46 f4 20 3d 3d 3d 3d 3d 20 44 69 61 |....F. ===== Dia| 000010c0 6c 6f 67 5f 50 72 65 4f 70 65 6e 20 72 6f 75 74 |log_PreOpen rout| 000010d0 69 6e 65 73 20 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |ines ===========| 000010e0 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 000010f0 3d 3d 3d 3d 3d 3d 3d 0d 00 96 04 0d 00 97 18 dd |=======.........| 00001100 20 a4 5f 50 72 65 4f 70 65 6e 49 6e 66 6f 28 77 | ._PreOpenInfo(w| 00001110 68 25 29 0d 00 98 41 f2 73 68 65 6c 6c 5f 49 63 |h%)...A.shell_Ic| 00001120 6f 6e 50 75 74 44 61 74 61 28 77 68 25 2c 30 2c |onPutData(wh%,0,| 00001130 a4 73 68 65 6c 6c 5f 4d 65 73 73 61 67 65 4e 6f |.shell_MessageNo| 00001140 41 72 67 73 28 22 70 72 6f 67 49 6e 66 6f 30 22 |Args("progInfo0"| 00001150 29 2c 30 29 0d 00 99 41 f2 73 68 65 6c 6c 5f 49 |),0)...A.shell_I| 00001160 63 6f 6e 50 75 74 44 61 74 61 28 77 68 25 2c 31 |conPutData(wh%,1| 00001170 2c a4 73 68 65 6c 6c 5f 4d 65 73 73 61 67 65 4e |,.shell_MessageN| 00001180 6f 41 72 67 73 28 22 70 72 6f 67 49 6e 66 6f 31 |oArgs("progInfo1| 00001190 22 29 2c 30 29 0d 00 9a 41 f2 73 68 65 6c 6c 5f |"),0)...A.shell_| 000011a0 49 63 6f 6e 50 75 74 44 61 74 61 28 77 68 25 2c |IconPutData(wh%,| 000011b0 32 2c a4 73 68 65 6c 6c 5f 4d 65 73 73 61 67 65 |2,.shell_Message| 000011c0 4e 6f 41 72 67 73 28 22 70 72 6f 67 49 6e 66 6f |NoArgs("progInfo| 000011d0 32 22 29 2c 30 29 0d 00 9b 41 f2 73 68 65 6c 6c |2"),0)...A.shell| 000011e0 5f 49 63 6f 6e 50 75 74 44 61 74 61 28 77 68 25 |_IconPutData(wh%| 000011f0 2c 33 2c a4 73 68 65 6c 6c 5f 4d 65 73 73 61 67 |,3,.shell_Messag| 00001200 65 4e 6f 41 72 67 73 28 22 70 72 6f 67 49 6e 66 |eNoArgs("progInf| 00001210 6f 33 22 29 2c 30 29 0d 00 9c 06 3d 30 0d 00 9d |o3"),0)....=0...| 00001220 05 3a 0d 00 9e 04 0d 00 9f 4a f4 20 3d 3d 3d 3d |.:.......J. ====| 00001230 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 20 |=============== | 00001240 52 6f 75 74 69 6e 65 73 20 74 6f 20 67 6f 20 69 |Routines to go i| 00001250 6e 20 74 68 65 20 6c 69 62 72 61 72 79 20 3d 3d |n the library ==| 00001260 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d |================| 00001270 0d 00 a0 05 3a 0d 00 a1 30 dd 20 f2 73 68 65 6c |....:...0. .shel| 00001280 6c 5f 45 76 65 6e 74 41 64 64 28 77 68 25 2c 69 |l_EventAdd(wh%,i| 00001290 63 25 2c 65 5f 74 79 70 65 25 2c 6d 65 6e 75 24 |c%,e_type%,menu$| 000012a0 2c 66 6e 24 29 0d 00 a2 2c ea 20 70 74 72 25 2c |,fn$)...,. ptr%,| 000012b0 66 6e 25 2c 65 76 65 6e 74 5f 6c 69 73 74 25 2c |fn%,event_list%,| 000012c0 6c 69 73 74 5f 73 69 7a 65 25 2c 66 6f 75 6e 64 |list_size%,found| 000012d0 25 0d 00 a3 14 ea 20 66 6e 5f 61 64 64 72 25 2c |%..... fn_addr%,| 000012e0 6d 65 6e 75 25 0d 00 a4 10 6d 65 6e 75 25 3d bb |menu%....menu%=.| 000012f0 6d 65 6e 75 24 0d 00 a5 13 70 74 72 25 3d 30 3a |menu$....ptr%=0:| 00001300 66 6f 75 6e 64 25 3d a3 0d 00 a6 15 e7 20 77 68 |found%=...... wh| 00001310 25 3d 2d 31 20 8c 20 77 68 25 3d 2d 32 0d 00 a7 |%=-1 . wh%=-2...| 00001320 2d 6c 69 73 74 5f 73 69 7a 65 25 3d a4 73 68 65 |-list_size%=.she| 00001330 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 49 6e 66 6f |ll_HeapBlockInfo| 00001340 28 5f 55 25 21 31 32 29 2d 38 0d 00 a8 16 65 76 |(_U%!12)-8....ev| 00001350 65 6e 74 5f 6c 69 73 74 25 3d 5f 55 25 21 31 32 |ent_list%=_U%!12| 00001360 0d 00 a9 05 f5 0d 00 aa 20 20 20 e7 20 28 65 76 |........ . (ev| 00001370 65 6e 74 5f 6c 69 73 74 25 21 70 74 72 25 3d 77 |ent_list%!ptr%=w| 00001380 68 25 29 20 8c 0d 00 ab 21 20 20 20 20 c8 8e 20 |h%) ....! .. | 00001390 65 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 |event_list%!(ptr| 000013a0 25 2b 34 29 20 ca 0d 00 ac 0c 20 20 20 20 c9 20 |%+4) ..... . | 000013b0 2d 31 0d 00 ad 12 20 20 20 20 20 20 66 6f 75 6e |-1.... foun| 000013c0 64 25 3d b9 0d 00 ae 09 20 20 20 20 7f 0d 00 af |d%=..... ....| 000013d0 26 20 20 20 20 20 20 e7 20 65 76 65 6e 74 5f 6c |& . event_l| 000013e0 69 73 74 25 21 28 70 74 72 25 2b 34 29 3d 69 63 |ist%!(ptr%+4)=ic| 000013f0 25 20 8c 0d 00 b0 14 20 20 20 20 20 20 20 20 66 |% ..... f| 00001400 6f 75 6e 64 25 3d b9 0d 00 b1 0b 20 20 20 20 20 |ound%=..... | 00001410 20 cc 0d 00 b2 14 20 20 20 20 20 20 20 20 70 74 | ..... pt| 00001420 72 25 2b 3d 34 38 0d 00 b3 0b 20 20 20 20 20 20 |r%+=48.... | 00001430 cd 0d 00 b4 09 20 20 20 20 cb 0d 00 b5 07 20 20 |..... ..... | 00001440 cc 0d 00 b6 10 20 20 20 20 70 74 72 25 2b 3d 34 |..... ptr%+=4| 00001450 38 0d 00 b7 07 20 20 cd 0d 00 b8 21 fd 20 28 70 |8.... ....!. (p| 00001460 74 72 25 3e 3d 6c 69 73 74 5f 73 69 7a 65 25 20 |tr%>=list_size% | 00001470 84 20 66 6f 75 6e 64 25 29 0d 00 b9 10 e7 20 66 |. found%)..... f| 00001480 6f 75 6e 64 25 3d a3 20 8c 0d 00 ba 0b 20 70 74 |ound%=. ..... pt| 00001490 72 25 3d 30 0d 00 bb 1e 20 c8 95 20 28 65 76 65 |r%=0.... .. (eve| 000014a0 6e 74 5f 6c 69 73 74 25 21 70 74 72 25 3c 3e 30 |nt_list%!ptr%<>0| 000014b0 20 29 0d 00 bc 0f 20 20 20 70 74 72 25 2b 3d 34 | ).... ptr%+=4| 000014c0 38 0d 00 bd 1b 20 20 20 e7 20 70 74 72 25 3e 3d |8.... . ptr%>=| 000014d0 6c 69 73 74 5f 73 69 7a 65 25 20 8c 0d 00 be 31 |list_size% ....1| 000014e0 20 20 20 20 20 5f 55 25 21 31 32 3d a4 73 68 65 | _U%!12=.she| 000014f0 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 45 78 74 65 |ll_HeapBlockExte| 00001500 6e 64 28 5f 55 25 21 31 32 2c 34 38 29 0d 00 bf |nd(_U%!12,48)...| 00001510 1b 20 20 20 20 20 65 76 65 6e 74 5f 6c 69 73 74 |. event_list| 00001520 25 3d 5f 55 25 21 31 32 0d 00 c0 1f 20 20 20 20 |%=_U%!12.... | 00001530 20 65 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 | event_list%!(pt| 00001540 72 25 2b 30 29 3d 30 0d 00 c1 1f 20 20 20 20 20 |r%+0)=0.... | 00001550 65 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 |event_list%!(ptr| 00001560 25 2b 34 29 3d 30 0d 00 c2 1f 20 20 20 20 20 65 |%+4)=0.... e| 00001570 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 |vent_list%!(ptr%| 00001580 2b 38 29 3d 30 0d 00 c3 20 20 20 20 20 20 65 76 |+8)=0... ev| 00001590 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 000015a0 31 32 29 3d 30 0d 00 c4 20 20 20 20 20 20 65 76 |12)=0... ev| 000015b0 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 000015c0 31 36 29 3d 30 0d 00 c5 20 20 20 20 20 20 65 76 |16)=0... ev| 000015d0 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 000015e0 32 30 29 3d 30 0d 00 c6 20 20 20 20 20 20 65 76 |20)=0... ev| 000015f0 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 00001600 32 34 29 3d 30 0d 00 c7 20 20 20 20 20 20 65 76 |24)=0... ev| 00001610 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 00001620 32 38 29 3d 30 0d 00 c8 20 20 20 20 20 20 65 76 |28)=0... ev| 00001630 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 00001640 33 32 29 3d 30 0d 00 c9 20 20 20 20 20 20 65 76 |32)=0... ev| 00001650 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 00001660 33 36 29 3d 30 0d 00 ca 20 20 20 20 20 20 65 76 |36)=0... ev| 00001670 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 00001680 34 30 29 3d 30 0d 00 cb 20 20 20 20 20 20 65 76 |40)=0... ev| 00001690 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b |ent_list%!(ptr%+| 000016a0 34 34 29 3d 30 0d 00 cc 08 20 20 20 cd 0d 00 cd |44)=0.... ....| 000016b0 06 20 ce 0d 00 ce 05 cd 0d 00 cf 1c 65 76 65 6e |. ..........even| 000016c0 74 5f 6c 69 73 74 25 21 28 70 74 72 25 2b 30 29 |t_list%!(ptr%+0)| 000016d0 3d 77 68 25 0d 00 d0 1c 65 76 65 6e 74 5f 6c 69 |=wh%....event_li| 000016e0 73 74 25 21 28 70 74 72 25 2b 34 29 3d 69 63 25 |st%!(ptr%+4)=ic%| 000016f0 0d 00 d1 10 e7 20 6d 65 6e 75 25 3c 3e 30 20 8c |..... menu%<>0 .| 00001700 0d 00 d2 20 20 20 65 76 65 6e 74 5f 6c 69 73 74 |... event_list| 00001710 25 21 28 70 74 72 25 2b 38 29 3d 6d 65 6e 75 25 |%!(ptr%+8)=menu%| 00001720 0d 00 d3 05 cd 0d 00 d4 22 66 6e 5f 61 64 64 72 |........"fn_addr| 00001730 25 3d 70 74 72 25 2b 28 31 32 2b 28 65 5f 74 79 |%=ptr%+(12+(e_ty| 00001740 70 65 25 2a 34 29 29 0d 00 d5 1f e7 20 65 76 65 |pe%*4))..... eve| 00001750 6e 74 5f 6c 69 73 74 25 21 66 6e 5f 61 64 64 72 |nt_list%!fn_addr| 00001760 25 3c 3e 30 20 8c 0d 00 d6 32 20 20 f2 73 68 65 |%<>0 ....2 .she| 00001770 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 52 65 74 75 |ll_HeapBlockRetu| 00001780 72 6e 28 65 76 65 6e 74 5f 6c 69 73 74 25 21 66 |rn(event_list%!f| 00001790 6e 5f 61 64 64 72 25 29 0d 00 d7 05 cd 0d 00 d8 |n_addr%)........| 000017a0 25 66 6e 25 3d a4 73 68 65 6c 6c 5f 48 65 61 70 |%fn%=.shell_Heap| 000017b0 42 6c 6f 63 6b 46 65 74 63 68 28 a9 66 6e 24 2b |BlockFetch(.fn$+| 000017c0 31 29 0d 00 d9 0c 24 66 6e 25 3d 66 6e 24 0d 00 |1)....$fn%=fn$..| 000017d0 da 1c 65 76 65 6e 74 5f 6c 69 73 74 25 21 66 6e |..event_list%!fn| 000017e0 5f 61 64 64 72 25 3d 66 6e 25 0d 00 db 05 e1 0d |_addr%=fn%......| 000017f0 00 dc 05 3a 0d 00 dd 42 dd 20 a4 73 68 65 6c 6c |...:...B. .shell| 00001800 5f 49 63 6f 6e 62 61 72 28 70 6f 73 25 2c 73 6e |_Iconbar(pos%,sn| 00001810 61 6d 65 24 2c 74 65 78 74 24 2c 77 25 2c 6d 65 |ame$,text$,w%,me| 00001820 6e 75 25 2c 73 68 69 66 74 25 2c 63 74 72 6c 25 |nu%,shift%,ctrl%| 00001830 2c 61 6c 74 25 29 0d 00 de 0d ea 20 68 61 6e 64 |,alt%)..... hand| 00001840 6c 65 25 0d 00 df 10 e7 20 74 65 78 74 24 3d 22 |le%..... text$="| 00001850 22 20 8c 0d 00 e0 51 20 20 21 5f 51 25 3d 70 6f |" ....Q !_Q%=po| 00001860 73 25 3a 5f 51 25 21 34 3d 30 3a 5f 51 25 21 38 |s%:_Q%!4=0:_Q%!8| 00001870 3d 30 3a 5f 51 25 21 31 32 3d 37 30 3a 5f 51 25 |=0:_Q%!12=70:_Q%| 00001880 21 31 36 3d 37 30 3a 5f 51 25 21 32 30 3d 26 33 |!16=70:_Q%!20=&3| 00001890 30 31 41 3a 24 28 5f 51 25 2b 32 34 29 3d 73 6e |01A:$(_Q%+24)=sn| 000018a0 61 6d 65 24 0d 00 e1 05 cc 0d 00 e2 46 20 20 21 |ame$........F !| 000018b0 5f 51 25 3d 70 6f 73 25 3a 5f 51 25 21 34 3d 30 |_Q%=pos%:_Q%!4=0| 000018c0 3a 5f 51 25 21 38 3d 2d 31 36 3a 5f 51 25 21 31 |:_Q%!8=-16:_Q%!1| 000018d0 32 3d 77 25 3a 5f 51 25 21 31 36 3d 39 30 3a 5f |2=w%:_Q%!16=90:_| 000018e0 51 25 21 32 30 3d 26 31 37 30 30 32 31 30 42 0d |Q%!20=&1700210B.| 000018f0 00 e3 11 20 20 de 20 5f 51 25 21 32 34 20 31 32 |... . _Q%!24 12| 00001900 0d 00 e4 1a 20 20 de 20 5f 51 25 21 32 38 20 a9 |.... . _Q%!28 .| 00001910 28 73 6e 61 6d 65 24 29 2b 32 0d 00 e5 15 20 20 |(sname$)+2.... | 00001920 24 28 5f 51 25 21 32 34 29 3d 74 65 78 74 24 0d |$(_Q%!24)=text$.| 00001930 00 e6 1a 20 20 24 28 5f 51 25 21 32 38 29 3d 22 |... $(_Q%!28)="| 00001940 53 22 2b 73 6e 61 6d 65 24 0d 00 e7 0f 20 20 5f |S"+sname$.... _| 00001950 51 25 21 33 32 3d 31 32 0d 00 e8 05 cd 0d 00 e9 |Q%!32=12........| 00001960 27 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 |'.. "Wimp_Create| 00001970 49 63 6f 6e 22 2c 2c 5f 51 25 20 b8 20 68 61 6e |Icon",,_Q% . han| 00001980 64 6c 65 25 0d 00 ea 39 f2 73 68 65 6c 6c 5f 41 |dle%...9.shell_A| 00001990 74 74 61 63 68 4d 65 6e 75 28 2d 32 2c 68 61 6e |ttachMenu(-2,han| 000019a0 64 6c 65 25 2c 6d 65 6e 75 25 2c 73 68 69 66 74 |dle%,menu%,shift| 000019b0 25 2c 63 74 72 6c 25 2c 61 6c 74 25 29 0d 00 eb |%,ctrl%,alt%)...| 000019c0 0c 3d 68 61 6e 64 6c 65 25 0d 00 ec 05 3a 0d 00 |.=handle%....:..| 000019d0 ed 38 dd 20 f2 73 68 65 6c 6c 5f 41 74 74 61 63 |.8. .shell_Attac| 000019e0 68 4d 65 6e 75 28 77 68 25 2c 69 63 25 2c 6d 65 |hMenu(wh%,ic%,me| 000019f0 6e 75 25 2c 73 68 69 66 74 25 2c 63 74 72 6c 25 |nu%,shift%,ctrl%| 00001a00 2c 61 6c 74 25 29 0d 00 ee 28 f2 73 68 65 6c 6c |,alt%)...(.shell| 00001a10 5f 45 76 65 6e 74 41 64 64 28 77 68 25 2c 69 63 |_EventAdd(wh%,ic| 00001a20 25 2c 30 2c c3 6d 65 6e 75 25 2c 22 22 29 0d 00 |%,0,.menu%,"")..| 00001a30 ef 05 e1 0d 00 f0 05 3a 0d 00 f1 1d dd 20 f2 73 |.......:..... .s| 00001a40 68 65 6c 6c 5f 41 63 74 69 6f 6e 4d 65 6e 75 42 |hell_ActionMenuB| 00001a50 75 74 74 6f 6e 0d 00 f2 11 ea 20 74 65 6d 70 25 |utton..... temp%| 00001a60 2c 6d 65 6e 75 25 0d 00 f3 1f 2a 7c 69 66 64 65 |,menu%....*|ifde| 00001a70 66 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 61 63 |f PROCshell_Trac| 00001a80 65 49 6e 69 74 0d 00 f4 3c f2 73 68 65 6c 6c 5f |eInit...<.shell_| 00001a90 54 72 61 63 65 66 30 28 22 41 63 74 69 6f 6e 4d |Tracef0("ActionM| 00001aa0 65 6e 75 42 75 74 74 6f 6e 3a 4d 6f 75 73 65 20 |enuButton:Mouse | 00001ab0 42 75 74 74 6f 6e 20 77 61 73 20 4d 45 4e 55 22 |Button was MENU"| 00001ac0 29 0d 00 f5 0b 2a 7c 65 6e 64 69 66 0d 00 f6 0b |)....*|endif....| 00001ad0 74 65 6d 70 25 3d b9 0d 00 f7 32 e7 20 a6 28 2d |temp%=....2. .(-| 00001ae0 31 29 20 8c 20 74 65 6d 70 25 3d a4 73 68 69 66 |1) . temp%=.shif| 00001af0 74 6d 65 6e 75 63 6c 69 63 6b 28 5f 51 25 21 31 |tmenuclick(_Q%!1| 00001b00 32 2c 5f 51 25 21 31 36 29 0d 00 f8 0d e7 20 74 |2,_Q%!16)..... t| 00001b10 65 6d 70 25 20 8c 0d 00 f9 3f 20 20 f2 73 68 65 |emp% ....? .she| 00001b20 6c 6c 5f 54 72 61 63 65 66 30 28 22 41 63 74 69 |ll_Tracef0("Acti| 00001b30 6f 6e 4d 65 6e 75 42 75 74 74 6f 6e 3a 43 68 65 |onMenuButton:Che| 00001b40 63 6b 69 6e 67 20 6d 65 6e 75 20 65 76 65 6e 74 |cking menu event| 00001b50 73 2e 2e 22 29 0d 00 fa 34 20 20 6d 65 6e 75 25 |s..")...4 menu%| 00001b60 3d a4 73 68 65 6c 6c 5f 47 65 74 45 76 65 6e 74 |=.shell_GetEvent| 00001b70 4d 65 6e 75 28 5f 51 25 21 38 2c 5f 51 25 21 31 |Menu(_Q%!8,_Q%!1| 00001b80 32 2c 5f 51 25 21 31 36 29 0d 00 fb 3f 20 20 f2 |2,_Q%!16)...? .| 00001b90 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 41 |shell_Tracef0("A| 00001ba0 63 74 69 6f 6e 4d 65 6e 75 42 75 74 74 6f 6e 3a |ctionMenuButton:| 00001bb0 4d 65 6e 75 20 68 61 6e 64 6c 65 20 69 73 3a 22 |Menu handle is:"| 00001bc0 2b c3 6d 65 6e 75 25 29 0d 00 fc 12 20 20 e7 20 |+.menu%).... . | 00001bd0 6d 65 6e 75 25 3c 3e 30 20 8c 0d 00 fd 2a 20 20 |menu%<>0 ....* | 00001be0 20 20 f2 73 68 65 6c 6c 5f 4f 70 65 6e 4d 65 6e | .shell_OpenMen| 00001bf0 75 28 5f 51 25 21 30 2c 5f 51 25 21 34 2c 6d 65 |u(_Q%!0,_Q%!4,me| 00001c00 6e 75 25 29 0d 00 fe 14 20 20 20 20 5f 55 25 21 |nu%).... _U%!| 00001c10 32 34 3d 6d 65 6e 75 25 0d 00 ff 2d 20 20 20 20 |24=menu%...- | 00001c20 5f 55 25 21 33 36 3d 5f 51 25 21 30 30 3a f4 20 |_U%!36=_Q%!00:. | 00001c30 73 74 6f 72 65 20 6d 65 6e 75 20 78 20 70 6f 73 |store menu x pos| 00001c40 69 74 69 6f 6e 0d 01 00 2d 20 20 20 20 5f 55 25 |ition...- _U%| 00001c50 21 34 30 3d 5f 51 25 21 30 34 3a f4 20 73 74 6f |!40=_Q%!04:. sto| 00001c60 72 65 20 6d 65 6e 75 20 79 20 70 6f 73 69 74 69 |re menu y positi| 00001c70 6f 6e 0d 01 01 24 20 20 20 20 5f 55 25 21 35 32 |on...$ _U%!52| 00001c80 3d 5f 55 25 21 32 38 3a f4 20 73 74 6f 72 65 20 |=_U%!28:. store | 00001c90 77 69 6e 64 6f 77 0d 01 02 22 20 20 20 20 5f 55 |window..." _U| 00001ca0 25 21 35 36 3d 5f 55 25 21 33 32 3a f4 20 73 74 |%!56=_U%!32:. st| 00001cb0 6f 72 65 20 69 63 6f 6e 0d 01 03 07 20 20 cd 0d |ore icon.... ..| 00001cc0 01 04 05 cd 0d 01 05 05 e1 0d 01 06 05 3a 0d 01 |.............:..| 00001cd0 07 04 0d 01 08 41 dd 20 f2 73 68 65 6c 6c 5f 41 |.....A. .shell_A| 00001ce0 74 74 61 63 68 4d 65 6e 75 44 42 6f 78 28 69 74 |ttachMenuDBox(it| 00001cf0 65 6d 25 2c 77 69 6e 64 6f 77 24 2c 70 72 65 6f |em%,window$,preo| 00001d00 70 65 6e 66 6e 24 2c 70 6f 73 74 6f 70 65 6e 66 |penfn$,postopenf| 00001d10 6e 24 29 0d 01 09 40 f4 20 43 68 65 63 6b 20 63 |n$)...@. Check c| 00001d20 75 72 72 65 6e 74 20 73 75 62 6d 65 6e 75 20 68 |urrent submenu h| 00001d30 61 6e 64 6c 65 2e 20 57 65 20 73 68 6f 75 6c 64 |andle. We should| 00001d40 20 72 65 6c 65 61 73 65 20 61 6e 79 20 6d 65 6d | release any mem| 00001d50 6f 72 79 0d 01 0a 40 f4 20 61 6c 6c 6f 63 61 74 |ory...@. allocat| 00001d60 65 64 20 62 79 20 70 72 65 76 69 6f 75 73 20 63 |ed by previous c| 00001d70 61 6c 6c 73 20 28 77 68 65 6e 20 49 20 77 6f 72 |alls (when I wor| 00001d80 6b 20 6f 75 74 20 68 6f 77 20 74 6f 20 64 6f 20 |k out how to do | 00001d90 69 74 29 0d 01 0b 16 ea 20 62 6c 6b 25 2c 74 65 |it)..... blk%,te| 00001da0 6d 70 25 2c 61 64 64 72 25 0d 01 0c 56 e7 20 ac |mp%,addr%...V. .| 00001db0 20 a4 73 68 65 6c 6c 5f 57 69 6e 64 6f 77 4c 6f | .shell_WindowLo| 00001dc0 61 64 65 64 28 77 69 6e 64 6f 77 24 29 20 8c 20 |aded(window$) . | 00001dd0 85 20 39 39 2c a4 73 68 65 6c 6c 5f 4d 65 73 73 |. 99,.shell_Mess| 00001de0 61 67 65 4f 6e 65 41 72 67 28 22 53 48 45 4c 4c |ageOneArg("SHELL| 00001df0 4d 53 47 30 33 22 2c 77 69 6e 64 6f 77 24 29 0d |MSG03",window$).| 00001e00 01 0d 22 62 6c 6b 25 3d a4 73 68 65 6c 6c 5f 48 |.."blk%=.shell_H| 00001e10 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 31 32 |eapBlockFetch(12| 00001e20 29 0d 01 0e 2c 62 6c 6b 25 21 30 3d a4 73 68 65 |)...,blk%!0=.she| 00001e30 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 46 65 74 63 |ll_HeapBlockFetc| 00001e40 68 28 a9 77 69 6e 64 6f 77 24 2b 31 29 0d 01 0f |h(.window$+1)...| 00001e50 1f 74 65 6d 70 25 3d 62 6c 6b 25 21 30 3a 24 74 |.temp%=blk%!0:$t| 00001e60 65 6d 70 25 3d 77 69 6e 64 6f 77 24 0d 01 10 2f |emp%=window$.../| 00001e70 62 6c 6b 25 21 34 3d a4 73 68 65 6c 6c 5f 48 65 |blk%!4=.shell_He| 00001e80 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 a9 70 72 |apBlockFetch(.pr| 00001e90 65 6f 70 65 6e 66 6e 24 2b 31 29 0d 01 11 22 74 |eopenfn$+1)..."t| 00001ea0 65 6d 70 25 3d 62 6c 6b 25 21 34 3a 24 74 65 6d |emp%=blk%!4:$tem| 00001eb0 70 25 3d 70 72 65 6f 70 65 6e 66 6e 24 0d 01 12 |p%=preopenfn$...| 00001ec0 30 62 6c 6b 25 21 38 3d a4 73 68 65 6c 6c 5f 48 |0blk%!8=.shell_H| 00001ed0 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 a9 70 |eapBlockFetch(.p| 00001ee0 6f 73 74 6f 70 65 6e 66 6e 24 2b 31 29 0d 01 13 |ostopenfn$+1)...| 00001ef0 23 74 65 6d 70 25 3d 62 6c 6b 25 21 38 3a 24 74 |#temp%=blk%!8:$t| 00001f00 65 6d 70 25 3d 70 6f 73 74 6f 70 65 6e 66 6e 24 |emp%=postopenfn$| 00001f10 0d 01 14 3b f4 20 53 74 6f 72 65 20 61 64 64 72 |...;. Store addr| 00001f20 65 73 73 20 6f 66 20 68 65 61 70 62 6c 6f 63 6b |ess of heapblock| 00001f30 20 69 6e 20 73 75 62 6d 65 6e 75 20 70 6f 69 6e | in submenu poin| 00001f40 74 65 72 20 77 6f 72 64 20 6f 66 0d 01 15 2f f4 |ter word of.../.| 00001f50 20 6d 65 6e 75 20 69 74 65 6d 20 64 65 66 69 6e | menu item defin| 00001f60 69 74 69 6f 6e 2e 20 43 75 6e 6e 69 6e 67 20 68 |ition. Cunning h| 00001f70 75 68 2e 2e 2e 2e 2e 2e 2e 2e 0d 01 16 24 c8 99 |uh...........$..| 00001f80 20 22 4d 65 6e 75 55 74 69 6c 5f 53 75 62 4d 65 | "MenuUtil_SubMe| 00001f90 6e 75 22 2c 69 74 65 6d 25 2c 62 6c 6b 25 0d 01 |nu",item%,blk%..| 00001fa0 17 1c c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f 57 |.... "MenuUtil_W| 00001fb0 61 72 6e 69 6e 67 22 2c 2c b9 0d 01 18 05 e1 0d |arning",,.......| 00001fc0 01 19 05 3a 0d 01 1a 1d dd 20 f2 73 68 65 6c 6c |...:..... .shell| 00001fd0 5f 4d 65 6e 75 57 61 72 6e 69 6e 67 28 5f 51 25 |_MenuWarning(_Q%| 00001fe0 29 0d 01 1b 45 ea 20 66 6e 24 2c 6d 65 6e 75 5f |)...E. fn$,menu_| 00001ff0 62 75 66 66 65 72 25 2c 78 25 2c 79 25 2c 76 6f |buffer%,x%,y%,vo| 00002000 69 64 25 2c 5f 74 65 6d 70 25 2c 61 25 2c 77 61 |id%,_temp%,a%,wa| 00002010 72 6e 5f 66 6e 24 2c 69 74 65 6d 5f 61 64 64 72 |rn_fn$,item_addr| 00002020 25 2c 62 6c 6b 25 0d 01 1c 21 78 25 3d 5f 51 25 |%,blk%...!x%=_Q%| 00002030 21 32 34 3a 79 25 3d 5f 51 25 21 32 38 3a 5f 55 |!24:y%=_Q%!28:_U| 00002040 25 21 32 36 34 3d 30 0d 01 1d 11 e7 20 5f 55 25 |%!264=0..... _U%| 00002050 21 32 30 3c 3e 30 20 8c 0d 01 1e 21 20 20 2a 7c |!20<>0 ....! *|| 00002060 69 66 64 65 66 20 50 52 4f 43 73 68 65 6c 6c 5f |ifdef PROCshell_| 00002070 54 72 61 63 65 49 6e 69 74 0d 01 1f 55 20 20 f2 |TraceInit...U .| 00002080 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 4d |shell_Tracef0("M| 00002090 65 6e 75 57 61 72 6e 69 6e 67 3a 52 65 6d 6f 76 |enuWarning:Remov| 000020a0 69 6e 67 20 6c 61 73 74 20 64 79 6e 61 6d 69 63 |ing last dynamic| 000020b0 20 64 62 6f 78 20 28 68 61 6e 64 6c 65 3d 26 22 | dbox (handle=&"| 000020c0 2b c3 7e 5f 55 25 21 32 30 2b 22 29 22 29 0d 01 |+.~_U%!20+")")..| 000020d0 20 0d 20 20 2a 7c 65 6e 64 69 66 0d 01 21 27 20 | . *|endif..!' | 000020e0 20 76 6f 69 64 25 3d a4 73 68 65 6c 6c 5f 44 65 | void%=.shell_De| 000020f0 6c 65 74 65 57 69 6e 64 6f 77 28 5f 55 25 21 32 |leteWindow(_U%!2| 00002100 30 29 0d 01 22 21 20 20 2a 7c 69 66 64 65 66 20 |0).."! *|ifdef | 00002110 50 52 4f 43 73 68 65 6c 6c 5f 54 72 61 63 65 49 |PROCshell_TraceI| 00002120 6e 69 74 0d 01 23 3d 20 20 f2 73 68 65 6c 6c 5f |nit..#= .shell_| 00002130 54 72 61 63 65 66 30 28 22 4d 65 6e 75 57 61 72 |Tracef0("MenuWar| 00002140 6e 69 6e 67 3a 4c 61 73 74 20 64 79 6e 61 6d 69 |ning:Last dynami| 00002150 63 20 64 62 6f 78 20 72 65 6d 6f 76 65 64 22 29 |c dbox removed")| 00002160 0d 01 24 0d 20 20 2a 7c 65 6e 64 69 66 0d 01 25 |..$. *|endif..%| 00002170 05 cd 0d 01 26 39 f4 20 43 68 65 63 6b 20 73 75 |....&9. Check su| 00002180 62 6d 65 6e 75 20 70 6f 69 6e 74 65 72 20 61 6e |bmenu pointer an| 00002190 64 20 63 72 65 61 74 65 20 77 69 6e 64 6f 77 20 |d create window | 000021a0 66 6f 75 6e 64 20 74 68 65 72 65 0d 01 27 25 f4 |found there..'%.| 000021b0 20 54 68 65 6e 20 63 61 6c 6c 20 70 72 65 20 61 | Then call pre a| 000021c0 6e 64 20 70 6f 73 74 20 6f 70 65 6e 20 46 4e 73 |nd post open FNs| 000021d0 0d 01 28 4a f4 20 49 66 20 73 75 62 6d 65 6e 75 |..(J. If submenu| 000021e0 20 70 6f 69 6e 74 65 72 20 69 73 20 74 68 65 20 | pointer is the | 000021f0 77 61 72 6e 69 6e 67 20 77 69 6e 64 6f 77 2c 20 |warning window, | 00002200 6f 70 65 6e 20 69 74 20 74 6f 20 72 65 6d 69 6e |open it to remin| 00002210 64 20 74 68 65 20 75 73 65 72 0d 01 29 39 f4 20 |d the user..)9. | 00002220 74 68 61 74 20 6e 6f 20 64 62 6f 78 20 68 61 73 |that no dbox has| 00002230 20 62 65 65 6e 20 61 74 74 61 63 68 65 64 20 74 | been attached t| 00002240 6f 20 74 68 69 73 20 6d 65 6e 75 20 65 6e 74 72 |o this menu entr| 00002250 79 2e 2e 0d 01 2a 0f c8 8e 20 5f 51 25 21 32 30 |y....*... _Q%!20| 00002260 20 ca 0d 01 2b 28 c9 20 5f 55 25 21 32 32 38 3a | ...+(. _U%!228:| 00002270 f4 20 68 61 6e 64 6c 65 20 6f 66 20 77 61 72 6e |. handle of warn| 00002280 69 6e 67 20 64 62 6f 78 2e 2e 0d 01 2c 44 20 20 |ing dbox....,D | 00002290 f4 20 77 6f 6e 27 74 20 6e 65 65 64 20 74 6f 20 |. won't need to | 000022a0 64 6f 20 74 68 69 73 20 69 66 20 74 69 74 6c 65 |do this if title| 000022b0 2f 69 63 6f 6e 20 6d 65 73 73 61 67 65 73 20 61 |/icon messages a| 000022c0 72 65 20 73 75 62 73 74 69 74 75 74 65 64 0d 01 |re substituted..| 000022d0 2d 22 20 20 f4 20 77 68 65 6e 20 6c 6f 61 64 69 |-" . when loadi| 000022e0 6e 67 20 74 68 65 20 74 65 6d 70 6c 61 74 65 73 |ng the templates| 000022f0 0d 01 2e 43 20 20 f2 73 68 65 6c 6c 5f 57 69 6e |...C .shell_Win| 00002300 64 6f 77 52 65 74 69 74 6c 65 28 5f 55 25 21 32 |dowRetitle(_U%!2| 00002310 32 38 2c a4 73 68 65 6c 6c 5f 4d 65 73 73 61 67 |28,.shell_Messag| 00002320 65 4e 6f 41 72 67 73 28 22 77 61 72 6e 69 6e 67 |eNoArgs("warning| 00002330 22 29 29 0d 01 2f 32 20 20 f4 20 73 74 69 6c 6c |"))../2 . still| 00002340 20 6e 65 65 64 20 74 6f 20 73 65 74 20 75 70 20 | need to set up | 00002350 74 68 65 20 6d 65 73 73 61 67 65 20 74 68 6f 75 |the message thou| 00002360 67 68 2e 2e 2e 0d 01 30 48 20 20 f2 73 68 65 6c |gh.....0H .shel| 00002370 6c 5f 49 63 6f 6e 50 75 74 44 61 74 61 28 5f 55 |l_IconPutData(_U| 00002380 25 21 32 32 38 2c 31 2c a4 73 68 65 6c 6c 5f 4d |%!228,1,.shell_M| 00002390 65 73 73 61 67 65 4e 6f 41 72 67 73 28 22 53 48 |essageNoArgs("SH| 000023a0 45 4c 4c 4d 53 47 30 37 22 29 2c 30 29 0d 01 31 |ELLMSG07"),0)..1| 000023b0 08 20 20 ef 37 0d 01 32 2c 20 20 c8 99 20 22 57 |. .7..2, .. "W| 000023c0 69 6d 70 5f 43 72 65 61 74 65 53 75 62 4d 65 6e |imp_CreateSubMen| 000023d0 75 22 2c 2c 5f 55 25 21 32 32 38 2c 78 25 2c 79 |u",,_U%!228,x%,y| 000023e0 25 0d 01 33 05 7f 0d 01 34 34 20 20 f4 20 53 75 |%..3....44 . Su| 000023f0 62 20 6d 65 6e 75 20 69 73 20 65 69 74 68 65 72 |b menu is either| 00002400 20 61 20 64 69 61 6c 6f 67 20 62 6f 78 2c 20 6f | a dialog box, o| 00002410 72 20 61 20 6d 65 6e 75 21 21 0d 01 35 39 20 20 |r a menu!!..59 | 00002420 69 74 65 6d 5f 61 64 64 72 25 3d a4 73 68 65 6c |item_addr%=.shel| 00002430 6c 5f 4d 65 6e 75 47 65 74 49 74 65 6d 41 64 64 |l_MenuGetItemAdd| 00002440 72 65 73 73 28 5f 55 25 21 32 34 2c 5f 51 25 2b |ress(_U%!24,_Q%+| 00002450 33 32 29 0d 01 36 2e 20 20 e7 20 a4 73 68 65 6c |32)..6. . .shel| 00002460 6c 5f 48 65 61 70 42 6c 6f 63 6b 45 78 69 73 74 |l_HeapBlockExist| 00002470 73 28 69 74 65 6d 5f 61 64 64 72 25 21 34 29 20 |s(item_addr%!4) | 00002480 8c 0d 01 37 1c 20 20 20 20 f4 20 44 42 6f 78 20 |...7. . DBox | 00002490 69 73 20 61 74 74 61 63 68 65 64 2e 2e 0d 01 38 |is attached....8| 000024a0 2d 20 20 20 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 |- .shell_Menu| 000024b0 57 61 72 6e 44 42 6f 78 28 69 74 65 6d 5f 61 64 |WarnDBox(item_ad| 000024c0 64 72 25 2c 78 25 2c 79 25 29 0d 01 39 07 20 20 |dr%,x%,y%)..9. | 000024d0 cc 0d 01 3a 1c 20 20 20 20 f4 20 53 75 62 6d 65 |...:. . Subme| 000024e0 6e 75 20 61 74 74 61 63 68 65 64 2e 2e 0d 01 3b |nu attached....;| 000024f0 26 20 20 20 20 62 6c 6b 25 3d a4 73 68 65 6c 6c |& blk%=.shell| 00002500 5f 48 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 |_HeapBlockFetch(| 00002510 33 32 29 0d 01 3c 33 20 20 20 20 c8 99 20 22 4d |32)..<3 .. "M| 00002520 65 6e 75 55 74 69 6c 5f 44 65 63 6f 64 65 22 2c |enuUtil_Decode",| 00002530 5f 55 25 21 32 34 2c 5f 51 25 2b 33 32 20 b8 20 |_U%!24,_Q%+32 . | 00002540 2c 2c 62 6c 6b 25 0d 01 3d 39 20 20 20 20 f2 73 |,,blk%..=9 .s| 00002550 68 65 6c 6c 5f 46 69 6e 64 4d 65 6e 75 57 61 72 |hell_FindMenuWar| 00002560 6e 45 76 65 6e 74 28 62 6c 6b 25 21 38 2c 77 61 |nEvent(blk%!8,wa| 00002570 72 6e 5f 66 6e 24 2c 73 65 6c 5f 66 6e 24 29 0d |rn_fn$,sel_fn$).| 00002580 01 3e 24 20 20 20 20 f2 73 68 65 6c 6c 5f 48 65 |.>$ .shell_He| 00002590 61 70 42 6c 6f 63 6b 52 65 74 75 72 6e 28 62 6c |apBlockReturn(bl| 000025a0 6b 25 29 0d 01 3f 3d 20 20 20 20 f2 73 68 65 6c |k%)..?= .shel| 000025b0 6c 5f 4d 65 6e 75 57 61 72 6e 53 75 62 4d 65 6e |l_MenuWarnSubMen| 000025c0 75 28 5f 51 25 21 32 30 2c 78 25 2c 79 25 2c 77 |u(_Q%!20,x%,y%,w| 000025d0 61 72 6e 5f 66 6e 24 2c 73 65 6c 5f 66 6e 24 29 |arn_fn$,sel_fn$)| 000025e0 0d 01 40 07 20 20 cd 0d 01 41 05 cb 0d 01 42 05 |..@. ...A....B.| 000025f0 e1 0d 01 43 05 3a 0d 01 44 41 dd 20 f2 73 68 65 |...C.:..DA. .she| 00002600 6c 6c 5f 46 69 6e 64 4d 65 6e 75 57 61 72 6e 45 |ll_FindMenuWarnE| 00002610 76 65 6e 74 28 69 74 65 6d 5f 68 61 6e 64 6c 65 |vent(item_handle| 00002620 25 2c f8 20 77 61 72 6e 5f 66 6e 24 2c f8 20 73 |%,. warn_fn$,. s| 00002630 65 6c 5f 66 6e 24 29 0d 01 45 41 ea 20 72 65 73 |el_fn$)..EA. res| 00002640 75 6c 74 25 2c 65 5f 6c 69 73 74 25 2c 74 65 6d |ult%,e_list%,tem| 00002650 70 25 2c 6f 66 66 73 65 74 25 2c 66 6f 75 6e 64 |p%,offset%,found| 00002660 25 2c 6c 69 73 74 5f 73 69 7a 65 25 2c 74 65 6d |%,list_size%,tem| 00002670 70 32 25 2c 63 74 72 25 0d 01 46 0e ea 20 73 75 |p2%,ctr%..F.. su| 00002680 62 6d 65 6e 75 25 0d 01 47 3b 73 75 62 6d 65 6e |bmenu%..G;submen| 00002690 75 25 3d 30 3a f4 20 49 66 20 73 74 69 6c 6c 20 |u%=0:. If still | 000026a0 30 20 6f 6e 20 72 65 74 75 72 6e 20 74 68 65 6e |0 on return then| 000026b0 20 6e 6f 20 65 76 65 6e 74 20 66 6f 75 6e 64 2e | no event found.| 000026c0 2e 0d 01 48 3d 65 5f 6c 69 73 74 25 3d 5f 55 25 |...H=e_list%=_U%| 000026d0 21 32 32 30 3a 6f 66 66 73 65 74 25 3d 30 3a 66 |!220:offset%=0:f| 000026e0 6f 75 6e 64 25 3d a3 3a 77 61 72 6e 5f 66 6e 24 |ound%=.:warn_fn$| 000026f0 3d 22 22 3a 73 75 62 6d 65 6e 75 25 3d 30 0d 01 |="":submenu%=0..| 00002700 49 27 e7 20 a4 73 68 65 6c 6c 5f 48 65 61 70 42 |I'. .shell_HeapB| 00002710 6c 6f 63 6b 45 78 69 73 74 73 28 65 5f 6c 69 73 |lockExists(e_lis| 00002720 74 25 29 20 8c 0d 01 4a 07 20 20 f5 0d 01 4b 0f |t%) ...J. ...K.| 00002730 20 20 20 20 63 74 72 25 2b 3d 34 0d 01 4c 17 20 | ctr%+=4..L. | 00002740 20 fd 20 65 5f 6c 69 73 74 25 21 63 74 72 25 3d | . e_list%!ctr%=| 00002750 2d 31 0d 01 4d 1c 20 20 6c 69 73 74 5f 73 69 7a |-1..M. list_siz| 00002760 65 25 3d 63 74 72 25 3a 63 74 72 25 3d 30 0d 01 |e%=ctr%:ctr%=0..| 00002770 4e 21 20 20 2a 7c 69 66 64 65 66 20 50 52 4f 43 |N! *|ifdef PROC| 00002780 73 68 65 6c 6c 5f 54 72 61 63 65 49 6e 69 74 0d |shell_TraceInit.| 00002790 01 4f 41 20 20 f2 73 68 65 6c 6c 5f 54 72 61 63 |.OA .shell_Trac| 000027a0 65 66 30 28 22 46 69 6e 64 4d 65 6e 75 57 61 72 |ef0("FindMenuWar| 000027b0 6e 45 76 65 6e 74 3a 6c 69 73 74 5f 73 69 7a 65 |nEvent:list_size| 000027c0 25 3d 22 2b c3 6c 69 73 74 5f 73 69 7a 65 25 29 |%="+.list_size%)| 000027d0 0d 01 50 0d 20 20 2a 7c 65 6e 64 69 66 0d 01 51 |..P. *|endif..Q| 000027e0 07 20 20 f5 0d 01 52 22 20 20 20 20 74 65 6d 70 |. ...R" temp| 000027f0 25 3d 21 28 65 5f 6c 69 73 74 25 2b 6f 66 66 73 |%=!(e_list%+offs| 00002800 65 74 25 2b 30 29 0d 01 53 15 20 20 20 20 e7 20 |et%+0)..S. . | 00002810 74 65 6d 70 25 3c 3e 2d 31 20 8c 0d 01 54 20 20 |temp%<>-1 ...T | 00002820 20 20 20 20 20 e7 20 74 65 6d 70 25 3d 69 74 65 | . temp%=ite| 00002830 6d 5f 68 61 6e 64 6c 65 25 20 8c 0d 01 55 14 20 |m_handle% ...U. | 00002840 20 20 20 20 20 20 20 66 6f 75 6e 64 25 3d b9 0d | found%=..| 00002850 01 56 37 20 20 20 20 20 20 20 20 74 65 6d 70 32 |.V7 temp2| 00002860 25 3d 65 5f 6c 69 73 74 25 21 28 6f 66 66 73 65 |%=e_list%!(offse| 00002870 74 25 2b 34 29 3a 77 61 72 6e 5f 66 6e 24 3d 24 |t%+4):warn_fn$=$| 00002880 74 65 6d 70 32 25 0d 01 57 28 20 20 20 20 20 20 |temp2%..W( | 00002890 20 20 73 75 62 6d 65 6e 75 25 3d 65 5f 6c 69 73 | submenu%=e_lis| 000028a0 74 25 21 28 6f 66 66 73 65 74 25 2b 38 29 0d 01 |t%!(offset%+8)..| 000028b0 58 37 20 20 20 20 20 20 20 20 74 65 6d 70 32 25 |X7 temp2%| 000028c0 3d 65 5f 6c 69 73 74 25 21 28 6f 66 66 73 65 74 |=e_list%!(offset| 000028d0 25 2b 31 32 29 3a 73 65 6c 5f 66 6e 24 3d 24 74 |%+12):sel_fn$=$t| 000028e0 65 6d 70 32 25 0d 01 59 21 20 20 2a 7c 69 66 64 |emp2%..Y! *|ifd| 000028f0 65 66 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 61 |ef PROCshell_Tra| 00002900 63 65 49 6e 69 74 0d 01 5a 37 20 20 f2 73 68 65 |ceInit..Z7 .she| 00002910 6c 6c 5f 54 72 61 63 65 66 30 28 22 46 69 6e 64 |ll_Tracef0("Find| 00002920 4d 65 6e 75 57 61 72 6e 45 76 65 6e 74 3a 73 75 |MenuWarnEvent:su| 00002930 62 6d 65 6e 75 20 66 6f 75 6e 64 22 29 0d 01 5b |bmenu found")..[| 00002940 0d 20 20 2a 7c 65 6e 64 69 66 0d 01 5c 0b 20 20 |. *|endif..\. | 00002950 20 20 20 20 cd 0d 01 5d 15 20 20 20 20 20 20 6f | ...]. o| 00002960 66 66 73 65 74 25 2b 3d 31 36 0d 01 5e 09 20 20 |ffset%+=16..^. | 00002970 20 20 cc 0d 01 5f 1c 20 20 20 20 20 20 6f 66 66 | ..._. off| 00002980 73 65 74 25 3d 6c 69 73 74 5f 73 69 7a 65 25 0d |set%=list_size%.| 00002990 01 60 09 20 20 20 20 cd 0d 01 61 24 20 20 fd 20 |.`. ...a$ . | 000029a0 66 6f 75 6e 64 25 20 84 20 6f 66 66 73 65 74 25 |found% . offset%| 000029b0 3e 3d 6c 69 73 74 5f 73 69 7a 65 25 0d 01 62 05 |>=list_size%..b.| 000029c0 cc 0d 01 63 1c 20 20 77 61 72 6e 5f 66 6e 24 3d |...c. warn_fn$=| 000029d0 22 22 3a 73 65 6c 5f 66 6e 24 3d 22 22 0d 01 64 |"":sel_fn$=""..d| 000029e0 05 cd 0d 01 65 1f 2a 7c 69 66 64 65 66 20 50 52 |....e.*|ifdef PR| 000029f0 4f 43 73 68 65 6c 6c 5f 54 72 61 63 65 49 6e 69 |OCshell_TraceIni| 00002a00 74 0d 01 66 4a e7 20 73 75 62 6d 65 6e 75 25 3d |t..fJ. submenu%=| 00002a10 30 20 8c 20 f2 73 68 65 6c 6c 5f 54 72 61 63 65 |0 . .shell_Trace| 00002a20 66 30 28 22 46 69 6e 64 4d 65 6e 75 57 61 72 6e |f0("FindMenuWarn| 00002a30 45 76 65 6e 74 3a 77 61 72 6e 20 66 6e 20 6e 6f |Event:warn fn no| 00002a40 74 20 66 6f 75 6e 64 2e 2e 22 29 0d 01 67 0b 2a |t found..")..g.*| 00002a50 7c 65 6e 64 69 66 0d 01 68 05 e1 0d 01 69 05 3a ||endif..h....i.:| 00002a60 0d 01 6a 31 dd 20 a4 73 68 65 6c 6c 5f 4d 65 6e |..j1. .shell_Men| 00002a70 75 47 65 74 49 74 65 6d 41 64 64 72 65 73 73 28 |uGetItemAddress(| 00002a80 6d 65 6e 75 25 2c 73 65 6c 65 63 74 69 6f 6e 25 |menu%,selection%| 00002a90 29 0d 01 6b 15 ea 20 63 74 72 25 2c 69 74 65 6d |)..k.. ctr%,item| 00002aa0 5f 61 64 64 72 25 0d 01 6c 24 c8 99 20 22 4d 65 |_addr%..l$.. "Me| 00002ab0 6e 75 55 74 69 6c 5f 49 6e 66 6f 22 2c 6d 65 6e |nuUtil_Info",men| 00002ac0 75 25 20 b8 20 6d 65 6e 75 25 0d 01 6d 05 f5 0d |u% . menu%..m...| 00002ad0 01 6e 30 20 20 69 74 65 6d 5f 61 64 64 72 25 3d |.n0 item_addr%=| 00002ae0 6d 65 6e 75 25 2b 32 38 2b 28 28 73 65 6c 65 63 |menu%+28+((selec| 00002af0 74 69 6f 6e 25 21 63 74 72 25 29 2a 32 34 29 0d |tion%!ctr%)*24).| 00002b00 01 6f 2f 20 20 6d 65 6e 75 25 3d 69 74 65 6d 5f |.o/ menu%=item_| 00002b10 61 64 64 72 25 21 34 3a f4 20 61 64 64 72 65 73 |addr%!4:. addres| 00002b20 73 20 6f 66 20 73 75 62 6d 65 6e 75 2e 2e 0d 01 |s of submenu....| 00002b30 70 0d 20 20 63 74 72 25 2b 3d 34 0d 01 71 18 fd |p. ctr%+=4..q..| 00002b40 20 73 65 6c 65 63 74 69 6f 6e 25 21 63 74 72 25 | selection%!ctr%| 00002b50 3d 2d 31 0d 01 72 0f 3d 69 74 65 6d 5f 61 64 64 |=-1..r.=item_add| 00002b60 72 25 0d 01 73 05 3a 0d 01 74 33 dd 20 f2 73 68 |r%..s.:..t3. .sh| 00002b70 65 6c 6c 5f 41 74 74 61 63 68 53 75 62 4d 65 6e |ell_AttachSubMen| 00002b80 75 28 69 74 65 6d 25 2c 73 75 62 6d 65 6e 75 25 |u(item%,submenu%| 00002b90 2c 77 61 72 6e 5f 66 6e 24 29 0d 01 75 28 c8 99 |,warn_fn$)..u(..| 00002ba0 20 22 4d 65 6e 75 55 74 69 6c 5f 53 75 62 4d 65 | "MenuUtil_SubMe| 00002bb0 6e 75 22 2c 69 74 65 6d 25 2c 73 75 62 6d 65 6e |nu",item%,submen| 00002bc0 75 25 0d 01 76 14 e7 20 77 61 72 6e 5f 66 6e 24 |u%..v.. warn_fn$| 00002bd0 3c 3e 22 22 20 8c 0d 01 77 1e 20 20 c8 99 20 22 |<>"" ...w. .. "| 00002be0 4d 65 6e 75 55 74 69 6c 5f 57 61 72 6e 69 6e 67 |MenuUtil_Warning| 00002bf0 22 2c 2c b9 0d 01 78 3a 20 20 f2 73 68 65 6c 6c |",,...x: .shell| 00002c00 5f 45 76 65 6e 74 4c 69 73 74 4d 65 6e 75 57 61 |_EventListMenuWa| 00002c10 72 6e 28 69 74 65 6d 25 2c 73 75 62 6d 65 6e 75 |rn(item%,submenu| 00002c20 25 2c 77 61 72 6e 5f 66 6e 24 2c 22 22 29 0d 01 |%,warn_fn$,"")..| 00002c30 79 05 cd 0d 01 7a 05 e1 0d 01 7b 05 3a 0d 01 7c |y....z....{.:..|| 00002c40 43 dd 20 f2 73 68 65 6c 6c 5f 45 76 65 6e 74 4c |C. .shell_EventL| 00002c50 69 73 74 4d 65 6e 75 57 61 72 6e 28 69 74 65 6d |istMenuWarn(item| 00002c60 25 2c 73 75 62 6d 65 6e 75 5f 70 74 72 25 2c 77 |%,submenu_ptr%,w| 00002c70 61 72 6e 5f 66 6e 24 2c 73 65 6c 5f 66 6e 24 29 |arn_fn$,sel_fn$)| 00002c80 0d 01 7d 1f ea 20 74 65 6d 70 25 2c 74 65 6d 70 |..}.. temp%,temp| 00002c90 32 25 2c 63 74 72 25 2c 65 5f 6c 69 73 74 25 0d |2%,ctr%,e_list%.| 00002ca0 01 7e 11 e7 20 5f 55 25 21 32 32 30 3d 30 20 8c |.~.. _U%!220=0 .| 00002cb0 0d 01 7f 1b 20 20 f4 20 43 72 65 61 74 65 20 65 |.... . Create e| 00002cc0 76 65 6e 74 20 6c 69 73 74 2e 2e 0d 01 80 27 20 |vent list.....' | 00002cd0 20 5f 55 25 21 32 32 30 3d a4 73 68 65 6c 6c 5f | _U%!220=.shell_| 00002ce0 48 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 33 |HeapBlockFetch(3| 00002cf0 32 29 0d 01 81 13 20 20 74 65 6d 70 25 3d 5f 55 |2).... temp%=_U| 00002d00 25 21 32 32 30 0d 01 82 13 20 20 74 65 6d 70 25 |%!220.... temp%| 00002d10 21 30 3d 69 74 65 6d 25 0d 01 83 30 20 20 74 65 |!0=item%...0 te| 00002d20 6d 70 25 21 34 3d a4 73 68 65 6c 6c 5f 48 65 61 |mp%!4=.shell_Hea| 00002d30 70 42 6c 6f 63 6b 46 65 74 63 68 28 a9 77 61 72 |pBlockFetch(.war| 00002d40 6e 5f 66 6e 24 2b 31 29 0d 01 84 19 20 20 24 28 |n_fn$+1).... $(| 00002d50 74 65 6d 70 25 21 34 29 3d 77 61 72 6e 5f 66 6e |temp%!4)=warn_fn| 00002d60 24 0d 01 85 1a 20 20 74 65 6d 70 25 21 38 3d 73 |$.... temp%!8=s| 00002d70 75 62 6d 65 6e 75 5f 70 74 72 25 0d 01 86 30 20 |ubmenu_ptr%...0 | 00002d80 20 74 65 6d 70 25 21 31 32 3d a4 73 68 65 6c 6c | temp%!12=.shell| 00002d90 5f 48 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 |_HeapBlockFetch(| 00002da0 a9 73 65 6c 5f 66 6e 24 2b 31 29 0d 01 87 19 20 |.sel_fn$+1).... | 00002db0 20 24 28 74 65 6d 70 25 21 31 32 29 3d 73 65 6c | $(temp%!12)=sel| 00002dc0 5f 66 6e 24 0d 01 88 35 20 20 74 65 6d 70 25 21 |_fn$...5 temp%!| 00002dd0 31 36 3d 2d 31 3a 74 65 6d 70 25 21 32 30 3d 2d |16=-1:temp%!20=-| 00002de0 31 3a 74 65 6d 70 25 21 32 34 3d 2d 31 3a 74 65 |1:temp%!24=-1:te| 00002df0 6d 70 25 21 32 38 3d 2d 31 0d 01 89 05 cc 0d 01 |mp%!28=-1.......| 00002e00 8a 24 20 20 f4 20 45 78 74 65 6e 64 20 65 78 69 |.$ . Extend exi| 00002e10 73 74 69 6e 67 20 65 76 65 6e 74 20 6c 69 73 74 |sting event list| 00002e20 2e 2e 0d 01 8b 30 20 20 65 5f 6c 69 73 74 25 3d |.....0 e_list%=| 00002e30 a4 73 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b |.shell_HeapBlock| 00002e40 45 78 74 65 6e 64 28 5f 55 25 21 32 32 30 2c 33 |Extend(_U%!220,3| 00002e50 32 29 0d 01 8c 1c 20 20 5f 55 25 21 32 32 30 3d |2).... _U%!220=| 00002e60 65 5f 6c 69 73 74 25 3a 63 74 72 25 3d 30 0d 01 |e_list%:ctr%=0..| 00002e70 8d 07 20 20 f5 0d 01 8e 10 20 20 20 20 63 74 72 |.. ..... ctr| 00002e80 25 2b 3d 31 36 0d 01 8f 17 20 20 fd 20 65 5f 6c |%+=16.... . e_l| 00002e90 69 73 74 25 21 63 74 72 25 3d 2d 31 0d 01 90 13 |ist%!ctr%=-1....| 00002ea0 20 20 74 65 6d 70 25 3d 5f 55 25 21 32 32 30 0d | temp%=_U%!220.| 00002eb0 01 91 16 20 20 74 65 6d 70 25 21 63 74 72 25 3d |... temp%!ctr%=| 00002ec0 69 74 65 6d 25 0d 01 92 37 20 20 74 65 6d 70 25 |item%...7 temp%| 00002ed0 21 28 63 74 72 25 2b 34 29 3d a4 73 68 65 6c 6c |!(ctr%+4)=.shell| 00002ee0 5f 48 65 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 |_HeapBlockFetch(| 00002ef0 a9 77 61 72 6e 5f 66 6e 24 2b 31 29 0d 01 93 2e |.warn_fn$+1)....| 00002f00 20 20 74 65 6d 70 32 25 3d 74 65 6d 70 25 21 28 | temp2%=temp%!(| 00002f10 63 74 72 25 2b 34 29 3a 24 28 74 65 6d 70 32 25 |ctr%+4):$(temp2%| 00002f20 29 3d 77 61 72 6e 5f 66 6e 24 0d 01 94 21 20 20 |)=warn_fn$...! | 00002f30 74 65 6d 70 25 21 28 63 74 72 25 2b 38 29 3d 73 |temp%!(ctr%+8)=s| 00002f40 75 62 6d 65 6e 75 5f 70 74 72 25 0d 01 95 37 20 |ubmenu_ptr%...7 | 00002f50 20 74 65 6d 70 25 21 28 63 74 72 25 2b 31 32 29 | temp%!(ctr%+12)| 00002f60 3d a4 73 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 |=.shell_HeapBloc| 00002f70 6b 46 65 74 63 68 28 a9 73 65 6c 5f 66 6e 24 2b |kFetch(.sel_fn$+| 00002f80 31 29 0d 01 96 2e 20 20 74 65 6d 70 32 25 3d 74 |1).... temp2%=t| 00002f90 65 6d 70 25 21 28 63 74 72 25 2b 31 32 29 3a 24 |emp%!(ctr%+12):$| 00002fa0 28 74 65 6d 70 32 25 29 3d 73 65 6c 5f 66 6e 24 |(temp2%)=sel_fn$| 00002fb0 0d 01 97 3e 20 20 74 65 6d 70 25 21 28 63 74 72 |...> temp%!(ctr| 00002fc0 25 2b 31 36 29 3d 2d 31 3a 74 65 6d 70 25 21 28 |%+16)=-1:temp%!(| 00002fd0 63 74 72 25 2b 32 30 29 3d 2d 31 3a 74 65 6d 70 |ctr%+20)=-1:temp| 00002fe0 25 21 28 63 74 72 25 2b 32 34 29 3d 2d 31 0d 01 |%!(ctr%+24)=-1..| 00002ff0 98 18 20 20 74 65 6d 70 25 21 28 63 74 72 25 2b |.. temp%!(ctr%+| 00003000 32 38 29 3d 2d 31 0d 01 99 05 cd 0d 01 9a 05 e1 |28)=-1..........| 00003010 0d 01 9b 05 3a 0d 01 9c 3c dd 20 f2 73 68 65 6c |....:...<. .shel| 00003020 6c 5f 4d 65 6e 75 57 61 72 6e 53 75 62 4d 65 6e |l_MenuWarnSubMen| 00003030 75 28 73 5f 6d 65 6e 75 25 2c 78 25 2c 79 25 2c |u(s_menu%,x%,y%,| 00003040 77 61 72 6e 5f 66 6e 24 2c 73 65 6c 5f 66 6e 24 |warn_fn$,sel_fn$| 00003050 29 0d 01 9d 1e ea 20 76 6f 69 64 25 2c 74 65 6d |)..... void%,tem| 00003060 70 25 2c 66 5f 6d 65 6e 75 25 2c 63 74 72 25 0d |p%,f_menu%,ctr%.| 00003070 01 9e 21 5f 73 68 65 6c 6c 5f 46 6f 6e 74 4d 65 |..!_shell_FontMe| 00003080 6e 75 53 65 6c 46 4e 24 3d 73 65 6c 5f 66 6e 24 |nuSelFN$=sel_fn$| 00003090 0d 01 9f 47 e7 20 a4 73 68 65 6c 6c 5f 48 65 61 |...G. .shell_Hea| 000030a0 70 42 6c 6f 63 6b 45 78 69 73 74 73 28 5f 55 25 |pBlockExists(_U%| 000030b0 21 32 32 34 29 20 8c 20 f2 73 68 65 6c 6c 5f 48 |!224) . .shell_H| 000030c0 65 61 70 42 6c 6f 63 6b 52 65 74 75 72 6e 28 5f |eapBlockReturn(_| 000030d0 55 25 21 32 32 34 29 0d 01 a0 2e 5f 55 25 21 32 |U%!224)...._U%!2| 000030e0 32 34 3d a4 73 68 65 6c 6c 5f 48 65 61 70 42 6c |24=.shell_HeapBl| 000030f0 6f 63 6b 46 65 74 63 68 28 a9 77 61 72 6e 5f 66 |ockFetch(.warn_f| 00003100 6e 24 2b 31 29 0d 01 a1 21 74 65 6d 70 25 3d 5f |n$+1)...!temp%=_| 00003110 55 25 21 32 32 34 3a 24 74 65 6d 70 25 3d 77 61 |U%!224:$temp%=wa| 00003120 72 6e 5f 66 6e 24 0d 01 a2 14 e7 20 77 61 72 6e |rn_fn$..... warn| 00003130 5f 66 6e 24 3c 3e 22 22 20 8c 0d 01 a3 2e 20 20 |_fn$<>"" ..... | 00003140 76 6f 69 64 25 3d a0 28 22 46 4e 22 2b 77 61 72 |void%=.("FN"+war| 00003150 6e 5f 66 6e 24 2b 22 28 5f 55 25 21 35 32 2c 5f |n_fn$+"(_U%!52,_| 00003160 55 25 21 35 36 29 22 29 0d 01 a4 21 20 20 2a 7c |U%!56)")...! *|| 00003170 69 66 64 65 66 20 50 52 4f 43 73 68 65 6c 6c 5f |ifdef PROCshell_| 00003180 54 72 61 63 65 49 6e 69 74 0d 01 a5 3b 20 20 f2 |TraceInit...; .| 00003190 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 4d |shell_Tracef0("M| 000031a0 65 6e 75 57 61 72 6e 53 75 62 4d 65 6e 75 3a 43 |enuWarnSubMenu:C| 000031b0 61 6c 6c 69 6e 67 20 46 4e 22 2b 77 61 72 6e 5f |alling FN"+warn_| 000031c0 66 6e 24 29 0d 01 a6 0d 20 20 2a 7c 65 6e 64 69 |fn$).... *|endi| 000031d0 66 0d 01 a7 05 cd 0d 01 a8 1a 2a 7c 69 66 64 65 |f.........*|ifde| 000031e0 66 20 55 73 69 6e 67 5f 46 6f 6e 74 4d 65 6e 75 |f Using_FontMenu| 000031f0 0d 01 a9 17 e7 20 73 5f 6d 65 6e 75 25 3d 5f 55 |..... s_menu%=_U| 00003200 25 21 32 35 32 20 8c 0d 01 aa 22 20 20 f4 20 53 |%!252 ...." . S| 00003210 75 62 6d 65 6e 75 20 69 73 20 46 6f 6e 74 4d 65 |ubmenu is FontMe| 00003220 6e 75 20 6d 65 6e 75 2e 2e 0d 01 ab 21 20 20 2a |nu menu.....! *| 00003230 7c 69 66 64 65 66 20 50 52 4f 43 73 68 65 6c 6c ||ifdef PROCshell| 00003240 5f 54 72 61 63 65 49 6e 69 74 0d 01 ac 3a 20 20 |_TraceInit...: | 00003250 f2 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 |.shell_Tracef0("| 00003260 4d 65 6e 75 57 61 72 6e 53 75 62 4d 65 6e 75 3a |MenuWarnSubMenu:| 00003270 46 6f 6e 74 4d 65 6e 75 20 6f 70 65 6e 69 6e 67 |FontMenu opening| 00003280 2e 2e 22 29 0d 01 ad 0d 20 20 2a 7c 65 6e 64 69 |..").... *|endi| 00003290 66 0d 01 ae 49 20 20 e7 20 a4 73 68 65 6c 6c 5f |f...I . .shell_| 000032a0 48 65 61 70 42 6c 6f 63 6b 45 78 69 73 74 73 28 |HeapBlockExists(| 000032b0 5f 55 25 21 32 35 36 29 20 8c 20 f2 73 68 65 6c |_U%!256) . .shel| 000032c0 6c 5f 48 65 61 70 42 6c 6f 63 6b 52 65 74 75 72 |l_HeapBlockRetur| 000032d0 6e 28 5f 55 25 21 32 35 36 29 0d 01 af 38 20 20 |n(_U%!256)...8 | 000032e0 f4 20 53 74 6f 72 65 20 63 75 72 72 65 6e 74 20 |. Store current | 000032f0 6d 65 6e 75 20 73 65 6c 65 63 74 69 6f 6e 20 66 |menu selection f| 00003300 6f 72 20 74 65 73 74 69 6e 67 20 6c 61 74 65 72 |or testing later| 00003310 2e 2e 0d 01 b0 3d 20 20 f4 20 46 69 72 73 74 20 |.....= . First | 00003320 77 6f 72 6b 20 6f 75 74 20 68 6f 77 20 6d 61 6e |work out how man| 00003330 79 20 6c 65 76 65 6c 73 20 61 72 65 20 69 6e 20 |y levels are in | 00003340 74 68 65 20 73 65 6c 65 63 74 69 6f 6e 2e 2e 0d |the selection...| 00003350 01 b1 32 20 20 63 74 72 25 3d 30 3a f5 3a 63 74 |..2 ctr%=0:.:ct| 00003360 72 25 2b 3d 34 3a fd 20 21 28 5f 51 25 2b 33 32 |r%+=4:. !(_Q%+32| 00003370 2b 63 74 72 25 29 3d 2d 31 3a 63 74 72 25 2b 3d |+ctr%)=-1:ctr%+=| 00003380 34 0d 01 b2 37 20 20 5f 55 25 21 32 35 36 3d a4 |4...7 _U%!256=.| 00003390 73 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 46 |shell_HeapBlockF| 000033a0 65 74 63 68 28 63 74 72 25 29 3a 74 65 6d 70 25 |etch(ctr%):temp%| 000033b0 3d 5f 55 25 21 32 35 36 0d 01 b3 0c 20 20 63 74 |=_U%!256.... ct| 000033c0 72 25 3d 30 0d 01 b4 07 20 20 f5 0d 01 b5 21 20 |r%=0.... ....! | 000033d0 20 20 20 74 65 6d 70 25 21 63 74 72 25 3d 21 28 | temp%!ctr%=!(| 000033e0 5f 51 25 2b 33 32 2b 63 74 72 25 29 0d 01 b6 0f |_Q%+32+ctr%)....| 000033f0 20 20 20 20 63 74 72 25 2b 3d 34 0d 01 b7 19 20 | ctr%+=4.... | 00003400 20 fd 20 21 28 5f 51 25 2b 33 32 2b 63 74 72 25 | . !(_Q%+32+ctr%| 00003410 29 3d 2d 31 0d 01 b8 1f 20 20 74 65 6d 70 25 21 |)=-1.... temp%!| 00003420 63 74 72 25 3d 21 28 5f 51 25 2b 33 32 2b 63 74 |ctr%=!(_Q%+32+ct| 00003430 72 25 29 0d 01 b9 13 20 20 74 65 6d 70 25 3d 5f |r%).... temp%=_| 00003440 55 25 21 32 35 36 0d 01 ba 21 20 20 2a 7c 69 66 |U%!256...! *|if| 00003450 64 65 66 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 |def PROCshell_Tr| 00003460 61 63 65 49 6e 69 74 0d 01 bb 68 20 20 f2 73 68 |aceInit...h .sh| 00003470 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 4d 65 6e |ell_Tracef0("Men| 00003480 75 57 61 72 6e 53 75 62 4d 65 6e 75 3a 53 65 6c |uWarnSubMenu:Sel| 00003490 65 63 74 69 6e 67 20 27 22 2b a4 73 68 65 6c 6c |ecting '"+.shell| 000034a0 5f 46 6f 6e 74 4d 65 6e 75 47 65 74 4c 61 73 74 |_FontMenuGetLast| 000034b0 53 65 6c 65 63 74 65 64 46 6f 6e 74 2b 22 27 20 |SelectedFont+"' | 000034c0 69 6e 20 46 6f 6e 74 4d 65 6e 75 2e 2e 22 29 0d |in FontMenu..").| 000034d0 01 bc 0d 20 20 2a 7c 65 6e 64 69 66 0d 01 bd 50 |... *|endif...P| 000034e0 20 20 c8 99 20 22 46 6f 6e 74 4d 65 6e 75 5f 53 | .. "FontMenu_S| 000034f0 65 6c 65 63 74 22 2c a4 73 68 65 6c 6c 5f 46 6f |elect",.shell_Fo| 00003500 6e 74 4d 65 6e 75 47 65 74 4c 61 73 74 53 65 6c |ntMenuGetLastSel| 00003510 65 63 74 65 64 46 6f 6e 74 2c 5f 55 25 21 32 36 |ectedFont,_U%!26| 00003520 30 20 b8 20 2c 66 5f 6d 65 6e 75 25 0d 01 be 2b |0 . ,f_menu%...+| 00003530 20 20 5f 55 25 21 32 36 34 3d 31 3a f4 20 53 65 | _U%!264=1:. Se| 00003540 74 20 27 46 6f 6e 74 4d 65 6e 75 4f 70 65 6e 27 |t 'FontMenuOpen'| 00003550 20 66 6c 61 67 2e 2e 0d 01 bf 1a 20 20 e7 20 66 | flag...... . f| 00003560 5f 6d 65 6e 75 25 3c 3e 5f 55 25 21 32 35 32 20 |_menu%<>_U%!252 | 00003570 8c 0d 01 c0 24 20 20 20 20 f4 20 46 6f 6e 74 4d |....$ . FontM| 00003580 65 6e 75 20 70 74 72 20 68 61 73 20 63 68 61 6e |enu ptr has chan| 00003590 67 65 64 2e 2e 0d 01 c1 29 20 20 20 20 f2 73 68 |ged.....) .sh| 000035a0 65 6c 6c 5f 46 6f 6e 74 4d 65 6e 75 55 70 64 61 |ell_FontMenuUpda| 000035b0 74 65 50 74 72 28 66 5f 6d 65 6e 75 25 29 0d 01 |tePtr(f_menu%)..| 000035c0 c2 27 20 20 20 20 5f 55 25 21 32 35 32 3d 66 5f |.' _U%!252=f_| 000035d0 6d 65 6e 75 25 3a 73 5f 6d 65 6e 75 25 3d 66 5f |menu%:s_menu%=f_| 000035e0 6d 65 6e 75 25 0d 01 c3 07 20 20 cd 0d 01 c4 05 |menu%.... .....| 000035f0 cc 0d 01 c5 2d 20 20 5f 55 25 21 32 36 34 3d 30 |....- _U%!264=0| 00003600 3a f4 20 43 6c 65 61 72 20 27 46 6f 6e 74 4d 65 |:. Clear 'FontMe| 00003610 6e 75 4f 70 65 6e 27 20 66 6c 61 67 2e 2e 0d 01 |nuOpen' flag....| 00003620 c6 05 cd 0d 01 c7 0b 2a 7c 65 6e 64 69 66 0d 01 |.......*|endif..| 00003630 c8 2a c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 |.*.. "Wimp_Creat| 00003640 65 53 75 62 4d 65 6e 75 22 2c 2c 73 5f 6d 65 6e |eSubMenu",,s_men| 00003650 75 25 2c 78 25 2c 79 25 0d 01 c9 05 e1 0d 01 ca |u%,x%,y%........| 00003660 05 3a 0d 01 cb 36 dd 20 f2 73 68 65 6c 6c 5f 41 |.:...6. .shell_A| 00003670 74 74 61 63 68 46 6f 6e 74 53 75 62 4d 65 6e 75 |ttachFontSubMenu| 00003680 28 69 74 65 6d 25 2c 77 61 72 6e 5f 66 6e 24 2c |(item%,warn_fn$,| 00003690 73 65 6c 5f 66 6e 24 29 0d 01 cc 21 ea 20 69 74 |sel_fn$)...!. it| 000036a0 65 6d 73 74 61 72 74 25 2c 6d 65 6e 75 25 2c 74 |emstart%,menu%,t| 000036b0 65 6d 70 25 2c 63 74 72 25 0d 01 cd 17 f2 73 68 |emp%,ctr%.....sh| 000036c0 65 6c 6c 5f 46 6f 6e 74 4d 65 6e 75 49 6e 69 74 |ell_FontMenuInit| 000036d0 0d 01 ce 2f c8 99 20 22 46 6f 6e 74 4d 65 6e 75 |.../.. "FontMenu| 000036e0 5f 53 65 6c 65 63 74 22 2c 22 22 2b bd 30 2c 5f |_Select",""+.0,_| 000036f0 55 25 21 32 36 30 20 b8 20 2c 6d 65 6e 75 25 0d |U%!260 . ,menu%.| 00003700 01 cf 25 c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f |..%.. "MenuUtil_| 00003710 53 75 62 4d 65 6e 75 22 2c 69 74 65 6d 25 2c 6d |SubMenu",item%,m| 00003720 65 6e 75 25 0d 01 d0 1c c8 99 20 22 4d 65 6e 75 |enu%...... "Menu| 00003730 55 74 69 6c 5f 57 61 72 6e 69 6e 67 22 2c 2c b9 |Util_Warning",,.| 00003740 0d 01 d1 26 f4 20 53 74 6f 72 65 20 6d 65 6e 75 |...&. Store menu| 00003750 20 70 74 72 20 69 6e 20 73 68 65 6c 6c 20 6d 65 | ptr in shell me| 00003760 6d 6f 72 79 2e 2e 0d 01 d2 11 5f 55 25 21 32 35 |mory......_U%!25| 00003770 32 3d 6d 65 6e 75 25 0d 01 d3 3a f2 73 68 65 6c |2=menu%...:.shel| 00003780 6c 5f 45 76 65 6e 74 4c 69 73 74 4d 65 6e 75 57 |l_EventListMenuW| 00003790 61 72 6e 28 69 74 65 6d 25 2c 6d 65 6e 75 25 2c |arn(item%,menu%,| 000037a0 77 61 72 6e 5f 66 6e 24 2c 73 65 6c 5f 66 6e 24 |warn_fn$,sel_fn$| 000037b0 29 0d 01 d4 1f 2a 7c 69 66 64 65 66 20 50 52 4f |)....*|ifdef PRO| 000037c0 43 73 68 65 6c 6c 5f 54 72 61 63 65 49 6e 69 74 |Cshell_TraceInit| 000037d0 0d 01 d5 45 f2 73 68 65 6c 6c 5f 54 72 61 63 65 |...E.shell_Trace| 000037e0 66 30 28 22 41 74 74 61 63 68 46 6f 6e 74 53 75 |f0("AttachFontSu| 000037f0 62 4d 65 6e 75 3a 41 74 74 61 63 68 69 6e 67 20 |bMenu:Attaching | 00003800 66 6f 6e 74 20 6d 65 6e 75 20 26 22 2b c3 7e 6d |font menu &"+.~m| 00003810 65 6e 75 25 29 0d 01 d6 0b 2a 7c 65 6e 64 69 66 |enu%)....*|endif| 00003820 0d 01 d7 05 e1 0d 01 d8 05 3a 0d 01 d9 21 dd 20 |.........:...!. | 00003830 a4 73 68 65 6c 6c 5f 43 68 65 63 6b 53 65 6c 65 |.shell_CheckSele| 00003840 63 74 69 6f 6e 28 73 65 6c 25 29 0d 01 da 10 ea |ction(sel%).....| 00003850 20 74 65 6d 70 25 2c 63 74 72 25 0d 01 db 11 74 | temp%,ctr%....t| 00003860 65 6d 70 25 3d 5f 55 25 21 32 35 36 0d 01 dc 13 |emp%=_U%!256....| 00003870 e7 20 74 65 6d 70 25 3d 30 20 8c 20 3d 2d 31 0d |. temp%=0 . =-1.| 00003880 01 dd 19 e7 20 5f 55 25 21 32 34 3d 5f 55 25 21 |.... _U%!24=_U%!| 00003890 32 35 32 20 8c 20 3d 30 0d 01 de 05 f5 0d 01 df |252 . =0........| 000038a0 23 20 20 e7 20 73 65 6c 25 21 63 74 72 25 3c 3e |# . sel%!ctr%<>| 000038b0 74 65 6d 70 25 21 63 74 72 25 20 8c 20 3d 2d 31 |temp%!ctr% . =-1| 000038c0 0d 01 e0 0d 20 20 63 74 72 25 2b 3d 34 0d 01 e1 |.... ctr%+=4...| 000038d0 13 fd 20 74 65 6d 70 25 21 63 74 72 25 3d 2d 31 |.. temp%!ctr%=-1| 000038e0 0d 01 e2 09 3d 63 74 72 25 0d 01 e3 05 3a 0d 01 |....=ctr%....:..| 000038f0 e4 22 dd 20 f2 73 68 65 6c 6c 5f 41 63 74 69 6f |.". .shell_Actio| 00003900 6e 4d 65 6e 75 53 65 6c 65 63 74 28 5f 51 25 29 |nMenuSelect(_Q%)| 00003910 0d 01 e5 43 ea 20 68 61 6e 64 6c 65 72 25 2c 6d |...C. handler%,m| 00003920 65 6e 75 5f 62 75 66 66 65 72 25 2c 43 68 65 63 |enu_buffer%,Chec| 00003930 6b 53 65 6c 65 63 74 25 2c 66 6f 6e 74 6d 65 6e |kSelect%,fontmen| 00003940 75 66 6c 61 67 25 2c 76 6f 69 64 25 2c 68 5f 62 |uflag%,void%,h_b| 00003950 6c 6b 25 0d 01 e6 25 68 5f 62 6c 6b 25 3d a4 73 |lk%...%h_blk%=.s| 00003960 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 46 65 |hell_HeapBlockFe| 00003970 74 63 68 28 32 35 36 29 0d 01 e7 1f 2a 7c 69 66 |tch(256)....*|if| 00003980 64 65 66 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 |def PROCshell_Tr| 00003990 61 63 65 49 6e 69 74 0d 01 e8 41 f2 73 68 65 6c |aceInit...A.shel| 000039a0 6c 5f 54 72 61 63 65 66 30 28 22 41 63 74 69 6f |l_Tracef0("Actio| 000039b0 6e 4d 65 6e 75 53 65 6c 65 63 74 3a 4d 65 6e 75 |nMenuSelect:Menu| 000039c0 5f 53 65 6c 65 63 74 20 65 76 65 6e 74 20 64 65 |_Select event de| 000039d0 74 65 63 74 65 64 22 29 0d 01 e9 0b 2a 7c 65 6e |tected")....*|en| 000039e0 64 69 66 0d 01 ea 29 c8 99 20 22 57 69 6d 70 5f |dif...).. "Wimp_| 000039f0 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c |GetPointerInfo",| 00003a00 2c 5f 73 68 65 6c 6c 5f 62 6c 6b 25 0d 01 eb 1a |,_shell_blk%....| 00003a10 2a 7c 69 66 64 65 66 20 55 73 69 6e 67 5f 46 6f |*|ifdef Using_Fo| 00003a20 6e 74 4d 65 6e 75 0d 01 ec 2b 6d 65 6e 75 5f 62 |ntMenu...+menu_b| 00003a30 75 66 66 65 72 25 3d a4 73 68 65 6c 6c 5f 48 65 |uffer%=.shell_He| 00003a40 61 70 42 6c 6f 63 6b 46 65 74 63 68 28 32 35 36 |apBlockFetch(256| 00003a50 29 0d 01 ed 16 e7 20 5f 55 25 21 32 34 3d 5f 55 |)..... _U%!24=_U| 00003a60 25 21 32 35 32 20 8c 0d 01 ee 22 20 20 f4 20 43 |%!252 ...." . C| 00003a70 75 72 72 65 6e 74 20 6d 65 6e 75 20 69 73 20 46 |urrent menu is F| 00003a80 6f 6e 74 4d 65 6e 75 2e 2e 0d 01 ef 1e 20 20 43 |ontMenu...... C| 00003a90 68 65 63 6b 53 65 6c 65 63 74 25 3d 30 3a 5f 55 |heckSelect%=0:_U| 00003aa0 25 21 32 36 34 3d 31 0d 01 f0 05 cc 0d 01 f1 2d |%!264=1........-| 00003ab0 20 20 43 68 65 63 6b 53 65 6c 65 63 74 25 3d a4 | CheckSelect%=.| 00003ac0 73 68 65 6c 6c 5f 43 68 65 63 6b 53 65 6c 65 63 |shell_CheckSelec| 00003ad0 74 69 6f 6e 28 5f 51 25 29 0d 01 f2 2f 20 20 e7 |tion(_Q%).../ .| 00003ae0 20 43 68 65 63 6b 53 65 6c 65 63 74 25 3e 2d 31 | CheckSelect%>-1| 00003af0 20 8c 20 5f 55 25 21 32 36 34 3d 31 20 8b 20 5f | . _U%!264=1 . _| 00003b00 55 25 21 32 36 34 3d 30 0d 01 f3 05 cd 0d 01 f4 |U%!264=0........| 00003b10 11 e7 20 5f 55 25 21 32 36 34 3e 30 20 8c 0d 01 |.. _U%!264>0 ...| 00003b20 f5 50 20 20 c8 99 20 22 46 6f 6e 74 4d 65 6e 75 |.P .. "FontMenu| 00003b30 5f 44 65 63 6f 64 65 46 6f 6e 74 4d 65 6e 75 22 |_DecodeFontMenu"| 00003b40 2c 5f 51 25 2b 43 68 65 63 6b 53 65 6c 65 63 74 |,_Q%+CheckSelect| 00003b50 25 2c 6d 65 6e 75 5f 62 75 66 66 65 72 25 20 b8 |%,menu_buffer% .| 00003b60 20 66 6f 6e 74 6d 65 6e 75 66 6c 61 67 25 0d 01 | fontmenuflag%..| 00003b70 f6 19 20 20 e7 20 66 6f 6e 74 6d 65 6e 75 66 6c |.. . fontmenufl| 00003b80 61 67 25 3d 31 20 8c 0d 01 f7 25 20 20 20 20 f4 |ag%=1 ....% .| 00003b90 20 27 73 65 6e 73 69 62 6c 65 27 20 73 65 6c 65 | 'sensible' sele| 00003ba0 63 74 69 6f 6e 20 6d 61 64 65 2e 2e 0d 01 f8 23 |ction made.....#| 00003bb0 20 20 20 20 2a 7c 69 66 64 65 66 20 50 52 4f 43 | *|ifdef PROC| 00003bc0 73 68 65 6c 6c 5f 54 72 61 63 65 49 6e 69 74 0d |shell_TraceInit.| 00003bd0 01 f9 62 20 20 20 20 f2 73 68 65 6c 6c 5f 54 72 |..b .shell_Tr| 00003be0 61 63 65 66 30 28 22 41 63 74 69 6f 6e 4d 65 6e |acef0("ActionMen| 00003bf0 75 53 65 6c 65 63 74 3a 46 6f 6e 74 4d 65 6e 75 |uSelect:FontMenu| 00003c00 20 73 65 6c 65 63 74 69 6f 6e 20 28 22 2b a4 73 | selection ("+.s| 00003c10 68 65 6c 6c 5f 47 65 74 53 74 72 69 6e 67 28 6d |hell_GetString(m| 00003c20 65 6e 75 5f 62 75 66 66 65 72 25 29 2b 22 29 22 |enu_buffer%)+")"| 00003c30 29 0d 01 fa 0f 20 20 20 20 2a 7c 65 6e 64 69 66 |).... *|endif| 00003c40 0d 01 fb 49 20 20 20 20 f2 73 68 65 6c 6c 5f 46 |...I .shell_F| 00003c50 6f 6e 74 4d 65 6e 75 53 65 6c 65 63 74 46 6f 6e |ontMenuSelectFon| 00003c60 74 28 a4 73 68 65 6c 6c 5f 47 65 74 53 74 72 69 |t(.shell_GetStri| 00003c70 6e 67 28 6d 65 6e 75 5f 62 75 66 66 65 72 25 29 |ng(menu_buffer%)| 00003c80 2c 5f 55 25 21 32 36 30 29 0d 01 fc 24 20 20 20 |,_U%!260)...$ | 00003c90 20 e7 20 5f 73 68 65 6c 6c 5f 46 6f 6e 74 4d 65 | . _shell_FontMe| 00003ca0 6e 75 53 65 6c 46 4e 24 3d 22 22 20 8c 0d 01 fd |nuSelFN$="" ....| 00003cb0 37 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f |7 .. "Wimp_| 00003cc0 44 65 63 6f 64 65 4d 65 6e 75 22 2c 2c 5f 55 25 |DecodeMenu",,_U%| 00003cd0 21 32 34 2c 5f 51 25 2c 6d 65 6e 75 5f 62 75 66 |!24,_Q%,menu_buf| 00003ce0 66 65 72 25 0d 01 fe 35 20 20 20 20 20 20 66 6e |fer%...5 fn| 00003cf0 24 3d a4 73 68 65 6c 6c 5f 47 65 74 45 76 65 6e |$=.shell_GetEven| 00003d00 74 48 61 6e 64 6c 65 72 28 5f 55 25 21 35 32 2c |tHandler(_U%!52,| 00003d10 5f 55 25 21 35 36 2c 30 29 0d 01 ff 1d 20 20 20 |_U%!56,0).... | 00003d20 20 20 20 5f 74 65 6d 70 25 3d 6d 65 6e 75 5f 62 | _temp%=menu_b| 00003d30 75 66 66 65 72 25 0d 02 00 39 20 20 20 20 20 20 |uffer%...9 | 00003d40 24 5f 74 65 6d 70 25 3d a4 73 68 65 6c 6c 5f 53 |$_temp%=.shell_S| 00003d50 74 72 69 6e 67 53 74 72 69 70 54 72 61 69 6c 69 |tringStripTraili| 00003d60 6e 67 28 24 5f 74 65 6d 70 25 2c 22 20 22 29 0d |ng($_temp%," ").| 00003d70 02 01 33 20 20 20 20 20 20 e7 20 66 6e 24 3c 3e |..3 . fn$<>| 00003d80 22 22 20 8c 20 76 6f 69 64 25 3d a0 28 22 46 4e |"" . void%=.("FN| 00003d90 22 2b 66 6e 24 2b 22 28 24 5f 74 65 6d 70 25 29 |"+fn$+"($_temp%)| 00003da0 22 29 0d 02 02 09 20 20 20 20 cc 0d 02 03 27 20 |").... ....' | 00003db0 20 20 20 20 20 e7 20 5f 73 68 65 6c 6c 5f 46 6f | . _shell_Fo| 00003dc0 6e 74 4d 65 6e 75 53 65 6c 46 4e 24 3c 3e 22 22 |ntMenuSelFN$<>""| 00003dd0 20 8c 0d 02 04 57 20 20 20 20 20 20 20 20 76 6f | ....W vo| 00003de0 69 64 25 3d a0 28 22 46 4e 22 2b 5f 73 68 65 6c |id%=.("FN"+_shel| 00003df0 6c 5f 46 6f 6e 74 4d 65 6e 75 53 65 6c 46 4e 24 |l_FontMenuSelFN$| 00003e00 2b 22 28 46 4e 73 68 65 6c 6c 5f 46 6f 6e 74 4d |+"(FNshell_FontM| 00003e10 65 6e 75 47 65 74 4c 61 73 74 53 65 6c 65 63 74 |enuGetLastSelect| 00003e20 65 64 46 6f 6e 74 29 22 29 0d 02 05 0b 20 20 20 |edFont)").... | 00003e30 20 20 20 cd 0d 02 06 09 20 20 20 20 cd 0d 02 07 | ..... ....| 00003e40 07 20 20 cd 0d 02 08 05 cd 0d 02 09 28 f2 73 68 |. .........(.sh| 00003e50 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 52 65 74 |ell_HeapBlockRet| 00003e60 75 72 6e 28 6d 65 6e 75 5f 62 75 66 66 65 72 25 |urn(menu_buffer%| 00003e70 29 0d 02 0a 0b 2a 7c 65 6e 64 69 66 0d 02 0b 11 |)....*|endif....| 00003e80 e7 20 5f 55 25 21 32 36 34 3d 30 20 8c 0d 02 0c |. _U%!264=0 ....| 00003e90 38 20 20 c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f |8 .. "MenuUtil_| 00003ea0 44 65 63 6f 64 65 22 2c 5f 55 25 21 32 34 2c 5f |Decode",_U%!24,_| 00003eb0 51 25 20 b8 20 68 61 6e 64 6c 65 72 25 2c 2c 68 |Q% . handler%,,h| 00003ec0 5f 62 6c 6b 25 0d 02 0d 3a 20 20 e7 20 68 61 6e |_blk%...: . han| 00003ed0 64 6c 65 72 25 20 8c 20 f2 73 68 65 6c 6c 5f 4d |dler% . .shell_M| 00003ee0 65 6e 75 43 61 6c 6c 48 61 6e 64 6c 65 72 28 68 |enuCallHandler(h| 00003ef0 61 6e 64 6c 65 72 25 2c 68 5f 62 6c 6b 25 29 0d |andler%,h_blk%).| 00003f00 02 0e 05 cd 0d 02 0f 17 e7 20 5f 73 68 65 6c 6c |......... _shell| 00003f10 5f 62 6c 6b 25 21 38 3d 31 20 8c 0d 02 10 2c 20 |_blk%!8=1 ...., | 00003f20 20 f2 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 | .shell_Tracef0(| 00003f30 22 48 49 4c 4b 45 3a 3a 41 64 6a 75 73 74 20 62 |"HILKE::Adjust b| 00003f40 75 74 74 6f 6e 22 29 0d 02 11 29 20 20 e7 20 a4 |utton")...) . .| 00003f50 73 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 45 |shell_HeapBlockE| 00003f60 78 69 73 74 73 28 5f 55 25 21 32 32 34 29 20 8c |xists(_U%!224) .| 00003f70 0d 02 12 36 20 20 20 20 f2 73 68 65 6c 6c 5f 54 |...6 .shell_T| 00003f80 72 61 63 65 66 30 28 22 48 49 4c 4b 45 3a 3a 53 |racef0("HILKE::S| 00003f90 74 6f 72 65 64 20 77 61 72 6e 5f 66 6e 20 65 78 |tored warn_fn ex| 00003fa0 69 73 74 73 22 29 0d 02 13 16 20 20 20 20 5f 74 |ists").... _t| 00003fb0 65 6d 70 25 3d 5f 55 25 21 32 32 34 0d 02 14 17 |emp%=_U%!224....| 00003fc0 20 20 20 20 e7 20 24 5f 74 65 6d 70 25 3c 3e 22 | . $_temp%<>"| 00003fd0 22 20 8c 0d 02 15 24 20 20 20 20 20 20 f4 20 43 |" ....$ . C| 00003fe0 61 6c 6c 20 6c 61 73 74 20 6d 65 6e 75 77 61 72 |all last menuwar| 00003ff0 6e 69 6e 67 20 66 6e 0d 02 16 45 20 20 20 20 20 |ning fn...E | 00004000 20 f2 73 68 65 6c 6c 5f 54 72 61 63 65 66 30 28 | .shell_Tracef0(| 00004010 22 48 49 4c 4b 45 3a 3a 43 61 6c 6c 69 6e 67 20 |"HILKE::Calling | 00004020 6c 61 73 74 20 77 61 72 6e 5f 66 6e 20 28 22 2b |last warn_fn ("+| 00004030 24 5f 74 65 6d 70 25 2b 22 29 22 29 0d 02 17 31 |$_temp%+")")...1| 00004040 20 20 20 20 20 20 76 6f 69 64 25 3d a0 28 22 46 | void%=.("F| 00004050 4e 22 2b 24 5f 74 65 6d 70 25 2b 22 28 5f 55 25 |N"+$_temp%+"(_U%| 00004060 21 35 32 2c 5f 55 25 21 35 36 29 22 29 0d 02 18 |!52,_U%!56)")...| 00004070 09 20 20 20 20 cd 0d 02 19 07 20 20 cd 0d 02 1a |. ..... ....| 00004080 2b 20 20 f2 73 68 65 6c 6c 5f 4f 70 65 6e 4d 65 |+ .shell_OpenMe| 00004090 6e 75 28 5f 55 25 21 33 36 2c 5f 55 25 21 34 30 |nu(_U%!36,_U%!40| 000040a0 2c 5f 55 25 21 32 34 29 0d 02 1b 05 cc 0d 02 1c |,_U%!24)........| 000040b0 1e 20 20 5f 73 68 65 6c 6c 5f 46 6f 6e 74 4d 65 |. _shell_FontMe| 000040c0 6e 75 53 65 6c 46 4e 24 3d 22 22 0d 02 1d 05 cd |nuSelFN$="".....| 000040d0 0d 02 1e 22 f2 73 68 65 6c 6c 5f 48 65 61 70 42 |...".shell_HeapB| 000040e0 6c 6f 63 6b 52 65 74 75 72 6e 28 68 5f 62 6c 6b |lockReturn(h_blk| 000040f0 25 29 0d 02 1f 05 e1 0d 02 20 05 3a 0d 02 21 36 |%)....... .:..!6| 00004100 dd 20 f2 73 68 65 6c 6c 5f 41 74 74 61 63 68 46 |. .shell_AttachF| 00004110 6f 6e 74 4d 65 6e 75 28 77 68 25 2c 69 68 25 2c |ontMenu(wh%,ih%,| 00004120 73 65 6c 5f 66 6e 24 2c 6d 61 6b 65 72 5f 66 6e |sel_fn$,maker_fn| 00004130 24 29 0d 02 22 0b ea 20 6d 65 6e 75 25 0d 02 23 |$)..".. menu%..#| 00004140 17 f2 73 68 65 6c 6c 5f 46 6f 6e 74 4d 65 6e 75 |..shell_FontMenu| 00004150 49 6e 69 74 0d 02 24 2f c8 99 20 22 46 6f 6e 74 |Init..$/.. "Font| 00004160 4d 65 6e 75 5f 53 65 6c 65 63 74 22 2c 22 22 2b |Menu_Select",""+| 00004170 bd 30 2c 5f 55 25 21 32 36 30 20 b8 20 2c 6d 65 |.0,_U%!260 . ,me| 00004180 6e 75 25 0d 02 25 26 f4 20 53 74 6f 72 65 20 6d |nu%..%&. Store m| 00004190 65 6e 75 20 70 74 72 20 69 6e 20 73 68 65 6c 6c |enu ptr in shell| 000041a0 20 6d 65 6d 6f 72 79 2e 2e 0d 02 26 11 5f 55 25 | memory....&._U%| 000041b0 21 32 35 32 3d 6d 65 6e 75 25 0d 02 27 2b f2 73 |!252=menu%..'+.s| 000041c0 68 65 6c 6c 5f 45 76 65 6e 74 41 64 64 28 77 68 |hell_EventAdd(wh| 000041d0 25 2c 69 68 25 2c 30 2c 22 2d 32 22 2c 73 65 6c |%,ih%,0,"-2",sel| 000041e0 5f 66 6e 24 29 0d 02 28 1f 2a 7c 69 66 64 65 66 |_fn$)..(.*|ifdef| 000041f0 20 50 52 4f 43 73 68 65 6c 6c 5f 54 72 61 63 65 | PROCshell_Trace| 00004200 49 6e 69 74 0d 02 29 38 f2 73 68 65 6c 6c 5f 54 |Init..)8.shell_T| 00004210 72 61 63 65 66 30 28 22 41 74 74 61 63 68 46 6f |racef0("AttachFo| 00004220 6e 74 4d 65 6e 75 3a 41 74 74 61 63 68 69 6e 67 |ntMenu:Attaching| 00004230 20 66 6f 6e 74 20 6d 65 6e 75 22 29 0d 02 2a 0b | font menu")..*.| 00004240 2a 7c 65 6e 64 69 66 0d 02 2b 3f e7 20 6d 61 6b |*|endif..+?. mak| 00004250 65 72 5f 66 6e 24 3c 3e 22 22 20 8c 20 f2 73 68 |er_fn$<>"" . .sh| 00004260 65 6c 6c 5f 41 74 74 61 63 68 4d 65 6e 75 4d 61 |ell_AttachMenuMa| 00004270 6b 65 72 28 77 68 25 2c 69 68 25 2c 6d 61 6b 65 |ker(wh%,ih%,make| 00004280 72 5f 66 6e 24 29 0d 02 2c 05 e1 0d 02 2d 05 3a |r_fn$)..,....-.:| 00004290 0d 02 2e 2a dd 20 a4 73 68 65 6c 6c 5f 47 65 74 |...*. .shell_Get| 000042a0 45 76 65 6e 74 4d 65 6e 75 28 62 75 74 74 6f 6e |EventMenu(button| 000042b0 25 2c 77 68 25 2c 69 63 25 29 0d 02 2f 2e ea 20 |%,wh%,ic%)../.. | 000042c0 70 74 72 25 2c 65 76 65 6e 74 5f 6c 69 73 74 25 |ptr%,event_list%| 000042d0 2c 66 6f 75 6e 64 25 2c 6c 69 73 74 5f 73 69 7a |,found%,list_siz| 000042e0 65 25 2c 6d 65 6e 75 25 0d 02 30 15 e7 20 77 68 |e%,menu%..0.. wh| 000042f0 25 3d 2d 31 20 8c 20 77 68 25 3d 2d 32 0d 02 31 |%=-1 . wh%=-2..1| 00004300 2d 6c 69 73 74 5f 73 69 7a 65 25 3d a4 73 68 65 |-list_size%=.she| 00004310 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 49 6e 66 6f |ll_HeapBlockInfo| 00004320 28 5f 55 25 21 31 32 29 2d 38 0d 02 32 0a 70 74 |(_U%!12)-8..2.pt| 00004330 72 25 3d 30 0d 02 33 0c 66 6f 75 6e 64 25 3d a3 |r%=0..3.found%=.| 00004340 0d 02 34 16 65 76 65 6e 74 5f 6c 69 73 74 25 3d |..4.event_list%=| 00004350 5f 55 25 21 31 32 0d 02 35 0a 66 6e 24 3d 22 22 |_U%!12..5.fn$=""| 00004360 0d 02 36 05 f5 0d 02 37 20 20 20 e7 20 28 65 76 |..6....7 . (ev| 00004370 65 6e 74 5f 6c 69 73 74 25 21 70 74 72 25 3d 77 |ent_list%!ptr%=w| 00004380 68 25 29 20 8c 0d 02 38 26 20 20 20 20 e7 20 65 |h%) ...8& . e| 00004390 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 74 72 25 |vent_list%!(ptr%| 000043a0 2b 34 29 20 3d 20 69 63 25 20 8c 0d 02 39 24 20 |+4) = ic% ...9$ | 000043b0 20 20 20 20 20 6d 65 6e 75 25 3d 65 76 65 6e 74 | menu%=event| 000043c0 5f 6c 69 73 74 25 21 28 70 74 72 25 2b 38 29 0d |_list%!(ptr%+8).| 000043d0 02 3a 24 20 20 20 20 20 20 e7 20 6d 65 6e 75 25 |.:$ . menu%| 000043e0 3d 2d 32 20 8c 20 6d 65 6e 75 25 3d 5f 55 25 21 |=-2 . menu%=_U%!| 000043f0 32 35 32 0d 02 3b 12 20 20 20 20 20 20 66 6f 75 |252..;. fou| 00004400 6e 64 25 3d b9 0d 02 3c 09 20 20 20 20 cc 0d 02 |nd%=...<. ...| 00004410 3d 27 20 20 20 20 20 20 e7 20 65 76 65 6e 74 5f |=' . event_| 00004420 6c 69 73 74 25 21 28 70 74 72 25 2b 34 29 20 3d |list%!(ptr%+4) =| 00004430 20 2d 31 20 8c 0d 02 3e 19 20 20 20 20 20 20 20 | -1 ...>. | 00004440 20 e7 20 62 75 74 74 6f 6e 25 3d 32 20 8c 0d 02 | . button%=2 ...| 00004450 3f 28 20 20 20 20 20 20 20 20 20 20 6d 65 6e 75 |?( menu| 00004460 25 3d 65 76 65 6e 74 5f 6c 69 73 74 25 21 28 70 |%=event_list%!(p| 00004470 74 72 25 2b 38 29 0d 02 40 28 20 20 20 20 20 20 |tr%+8)..@( | 00004480 20 20 20 20 e7 20 6d 65 6e 75 25 3d 2d 32 20 8c | . menu%=-2 .| 00004490 20 6d 65 6e 75 25 3d 5f 55 25 21 32 35 32 0d 02 | menu%=_U%!252..| 000044a0 41 16 20 20 20 20 20 20 20 20 20 20 66 6f 75 6e |A. foun| 000044b0 64 25 3d b9 0d 02 42 0d 20 20 20 20 20 20 20 20 |d%=...B. | 000044c0 cc 0d 02 43 16 20 20 20 20 20 20 20 20 20 20 70 |...C. p| 000044d0 74 72 25 2b 3d 34 38 0d 02 44 0d 20 20 20 20 20 |tr%+=48..D. | 000044e0 20 20 20 cd 0d 02 45 0b 20 20 20 20 20 20 cc 0d | ...E. ..| 000044f0 02 46 14 20 20 20 20 20 20 20 20 70 74 72 25 2b |.F. ptr%+| 00004500 3d 34 38 0d 02 47 0b 20 20 20 20 20 20 cd 0d 02 |=48..G. ...| 00004510 48 09 20 20 20 20 cd 0d 02 49 07 20 20 cc 0d 02 |H. ...I. ...| 00004520 4a 10 20 20 20 20 70 74 72 25 2b 3d 34 38 0d 02 |J. ptr%+=48..| 00004530 4b 07 20 20 cd 0d 02 4c 21 fd 20 28 70 74 72 25 |K. ...L!. (ptr%| 00004540 3e 3d 6c 69 73 74 5f 73 69 7a 65 25 20 84 20 66 |>=list_size% . f| 00004550 6f 75 6e 64 25 29 0d 02 4d 0a 3d 6d 65 6e 75 25 |ound%)..M.=menu%| 00004560 0d 02 4e 05 3a 0d 02 4f 2c dd 20 f2 73 68 65 6c |..N.:..O,. .shel| 00004570 6c 5f 48 61 6e 64 6c 65 41 74 74 61 63 68 65 64 |l_HandleAttached| 00004580 4d 65 6e 75 28 5f 51 25 2c 77 68 25 2c 69 68 25 |Menu(_Q%,wh%,ih%| 00004590 29 0d 02 50 0b ea 20 6d 65 6e 75 25 0d 02 51 18 |)..P.. menu%..Q.| 000045a0 e7 20 69 68 25 3c 3e 2d 31 20 80 20 77 68 25 3e |. ih%<>-1 . wh%>| 000045b0 2d 31 20 8c 0d 02 52 2e 20 20 6d 65 6e 75 25 3d |-1 ...R. menu%=| 000045c0 a4 73 68 65 6c 6c 5f 47 65 74 45 76 65 6e 74 4d |.shell_GetEventM| 000045d0 65 6e 75 28 5f 51 25 21 38 2c 77 68 25 2c 69 68 |enu(_Q%!8,wh%,ih| 000045e0 25 29 0d 02 53 12 20 20 e7 20 6d 65 6e 75 25 3c |%)..S. . menu%<| 000045f0 3e 30 20 8c 0d 02 54 2d 20 20 20 20 f2 73 68 65 |>0 ...T- .she| 00004600 6c 6c 5f 4f 70 65 6e 4d 65 6e 75 28 5f 51 25 21 |ll_OpenMenu(_Q%!| 00004610 30 2d 36 34 2c 5f 51 25 21 34 2c 6d 65 6e 75 25 |0-64,_Q%!4,menu%| 00004620 29 0d 02 55 07 20 20 cd 0d 02 56 05 cd 0d 02 57 |)..U. ...V....W| 00004630 05 e1 0d 02 58 05 3a 0d 02 59 1f dd 20 f2 73 68 |....X.:..Y.. .sh| 00004640 65 6c 6c 5f 4f 70 65 6e 4d 65 6e 75 28 78 25 2c |ell_OpenMenu(x%,| 00004650 79 25 2c 6d 25 29 0d 02 5a 09 ea 20 66 6e 24 0d |y%,m%)..Z.. fn$.| 00004660 02 5b 2f 66 6e 24 3d a4 73 68 65 6c 6c 5f 47 65 |.[/fn$=.shell_Ge| 00004670 74 45 76 65 6e 74 48 61 6e 64 6c 65 72 28 5f 55 |tEventHandler(_U| 00004680 25 21 32 38 2c 5f 55 25 21 33 32 2c 31 29 0d 02 |%!28,_U%!32,1)..| 00004690 5c 0f e7 20 66 6e 24 3c 3e 22 22 20 8c 0d 02 5d |\.. fn$<>"" ...]| 000046a0 3b 20 20 f2 73 68 65 6c 6c 5f 54 72 61 63 65 66 |; .shell_Tracef| 000046b0 30 28 22 4f 70 65 6e 4d 65 6e 75 3a 6d 65 6e 75 |0("OpenMenu:menu| 000046c0 6d 61 6b 65 72 20 66 75 6e 63 74 69 6f 6e 20 69 |maker function i| 000046d0 73 20 22 2b 66 6e 24 29 0d 02 5e 3a 20 20 76 6f |s "+fn$)..^: vo| 000046e0 69 64 25 3d a0 28 22 46 4e 22 2b 66 6e 24 2b 22 |id%=.("FN"+fn$+"| 000046f0 28 5f 55 25 21 32 38 2c 5f 55 25 21 33 32 29 22 |(_U%!28,_U%!32)"| 00004700 29 3a f4 20 63 61 6c 6c 20 6d 65 6e 75 6d 61 6b |):. call menumak| 00004710 65 72 0d 02 5f 05 cc 0d 02 60 41 20 20 f2 73 68 |er.._....`A .sh| 00004720 65 6c 6c 5f 54 72 61 63 65 66 30 28 22 4f 70 65 |ell_Tracef0("Ope| 00004730 6e 4d 65 6e 75 3a 6e 6f 20 6d 65 6e 75 6d 61 6b |nMenu:no menumak| 00004740 65 72 20 66 75 6e 63 74 69 6f 6e 20 72 65 67 69 |er function regi| 00004750 73 74 65 72 65 64 22 29 0d 02 61 05 cd 0d 02 62 |stered")..a....b| 00004760 12 e7 20 6d 25 3c 3e 5f 55 25 21 32 34 20 8c 0d |.. m%<>_U%!24 ..| 00004770 02 63 49 20 20 f4 20 49 66 20 6d 65 6e 75 20 69 |.cI . If menu i| 00004780 73 20 6e 6f 74 20 62 65 69 6e 67 20 72 65 2d 6f |s not being re-o| 00004790 70 65 6e 65 64 20 62 79 20 61 6e 20 61 64 6a 75 |pened by an adju| 000047a0 73 74 20 63 6c 69 63 6b 2c 20 64 69 73 63 61 72 |st click, discar| 000047b0 64 20 73 74 6f 72 65 64 0d 02 64 3b 20 20 f4 20 |d stored..d; . | 000047c0 27 53 65 6c 65 63 74 69 6f 6e 53 6f 46 61 72 27 |'SelectionSoFar'| 000047d0 20 73 74 72 69 6e 67 20 75 73 65 64 20 62 79 20 | string used by | 000047e0 46 6f 6e 74 4d 65 6e 75 20 72 6f 75 74 69 6e 65 |FontMenu routine| 000047f0 73 2e 2e 0d 02 65 29 20 20 e7 20 a4 73 68 65 6c |s....e) . .shel| 00004800 6c 5f 48 65 61 70 42 6c 6f 63 6b 45 78 69 73 74 |l_HeapBlockExist| 00004810 73 28 5f 55 25 21 32 35 36 29 20 8c 0d 02 66 31 |s(_U%!256) ...f1| 00004820 20 20 20 20 f2 73 68 65 6c 6c 5f 48 65 61 70 42 | .shell_HeapB| 00004830 6c 6f 63 6b 52 65 74 75 72 6e 28 5f 55 25 21 32 |lockReturn(_U%!2| 00004840 35 36 29 3a 5f 55 25 21 32 35 36 3d 30 0d 02 67 |56):_U%!256=0..g| 00004850 07 20 20 cd 0d 02 68 42 20 20 f4 20 41 6e 64 20 |. ...hB . And | 00004860 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 |the name of the | 00004870 63 75 72 72 65 6e 74 6c 79 20 73 65 6c 65 63 74 |currently select| 00004880 65 64 20 66 6f 6e 74 20 69 6e 20 74 68 69 73 20 |ed font in this | 00004890 6d 65 6e 75 2e 2e 0d 02 69 2a 20 20 e7 20 a4 73 |menu....i* . .s| 000048a0 68 65 6c 6c 5f 48 65 61 70 42 6c 6f 63 6b 45 78 |hell_HeapBlockEx| 000048b0 69 73 74 73 28 5f 55 25 21 32 34 34 20 29 20 8c |ists(_U%!244 ) .| 000048c0 0d 02 6a 31 20 20 20 20 f2 73 68 65 6c 6c 5f 48 |..j1 .shell_H| 000048d0 65 61 70 42 6c 6f 63 6b 52 65 74 75 72 6e 28 5f |eapBlockReturn(_| 000048e0 55 25 21 32 34 34 29 3a 5f 55 25 21 32 34 34 3d |U%!244):_U%!244=| 000048f0 30 0d 02 6b 07 20 20 cd 0d 02 6c 05 cd 0d 02 6d |0..k. ...l....m| 00004900 12 e7 20 6d 25 3d 5f 55 25 21 32 35 32 20 8c 0d |.. m%=_U%!252 ..| 00004910 02 6e 24 20 20 c8 99 20 22 57 69 6d 70 5f 43 72 |.n$ .. "Wimp_Cr| 00004920 65 61 74 65 4d 65 6e 75 22 2c 2c 6d 25 2c 78 25 |eateMenu",,m%,x%| 00004930 2c 79 25 0d 02 6f 0f 20 20 5f 55 25 21 32 36 34 |,y%..o. _U%!264| 00004940 3d 31 0d 02 70 05 cc 0d 02 71 1f 20 20 c8 99 20 |=1..p....q. .. | 00004950 22 4d 65 6e 75 55 74 69 6c 5f 53 68 6f 77 22 2c |"MenuUtil_Show",| 00004960 6d 25 2c 5f 51 25 0d 02 72 0f 20 20 5f 55 25 21 |m%,_Q%..r. _U%!| 00004970 32 36 34 3d 30 0d 02 73 05 cd 0d 02 74 34 5f 55 |264=0..s....t4_U| 00004980 25 21 32 34 3d 6d 25 3a f4 20 73 74 6f 72 65 20 |%!24=m%:. store | 00004990 61 64 64 72 65 73 73 20 6f 66 20 63 75 72 72 65 |address of curre| 000049a0 6e 74 6c 79 20 6f 70 65 6e 20 6d 65 6e 75 0d 02 |ntly open menu..| 000049b0 75 25 5f 55 25 21 33 36 3d 78 25 3a f4 20 73 74 |u%_U%!36=x%:. st| 000049c0 6f 72 65 20 6d 65 6e 75 20 78 20 70 6f 73 69 74 |ore menu x posit| 000049d0 69 6f 6e 0d 02 76 25 5f 55 25 21 34 30 3d 79 25 |ion..v%_U%!40=y%| 000049e0 3a f4 20 73 74 6f 72 65 20 6d 65 6e 75 20 79 20 |:. store menu y | 000049f0 70 6f 73 69 74 69 6f 6e 0d 02 77 20 5f 55 25 21 |position..w _U%!| 00004a00 35 32 3d 5f 55 25 21 32 38 3a f4 20 73 74 6f 72 |52=_U%!28:. stor| 00004a10 65 20 77 69 6e 64 6f 77 0d 02 78 1e 5f 55 25 21 |e window..x._U%!| 00004a20 35 36 3d 5f 55 25 21 33 32 3a f4 20 73 74 6f 72 |56=_U%!32:. stor| 00004a30 65 20 69 63 6f 6e 0d 02 79 05 e1 0d 02 7a 05 3a |e icon..y....z.:| 00004a40 0d 02 7b 1c dd 20 a4 73 68 65 6c 6c 5f 4d 65 6e |..{.. .shell_Men| 00004a50 75 4e 65 77 28 74 69 74 6c 65 24 29 0d 02 7c 0d |uNew(title$)..|.| 00004a60 ea 20 68 61 6e 64 6c 65 25 0d 02 7d 27 c8 99 20 |. handle%..}'.. | 00004a70 22 4d 65 6e 75 55 74 69 6c 5f 4e 65 77 22 2c 2c |"MenuUtil_New",,| 00004a80 74 69 74 6c 65 24 20 b8 20 68 61 6e 64 6c 65 25 |title$ . handle%| 00004a90 0d 02 7e 0c 3d 68 61 6e 64 6c 65 25 0d 02 7f 05 |..~.=handle%....| 00004aa0 3a 0d 02 80 2b dd 20 a4 73 68 65 6c 6c 5f 4d 65 |:...+. .shell_Me| 00004ab0 6e 75 41 64 64 28 68 61 6e 64 6c 65 25 2c 69 74 |nuAdd(handle%,it| 00004ac0 65 6d 24 2c 73 65 6c 5f 66 6e 24 29 0d 02 81 11 |em$,sel_fn$)....| 00004ad0 ea 20 72 65 74 5f 68 61 6e 64 6c 65 25 0d 02 82 |. ret_handle%...| 00004ae0 14 e7 20 73 65 6c 5f 66 6e 24 3c 3e 22 22 20 8c |.. sel_fn$<>"" .| 00004af0 20 0d 02 83 3b 20 20 c8 99 20 22 4d 65 6e 75 55 | ...; .. "MenuU| 00004b00 74 69 6c 5f 41 64 64 22 2c 68 61 6e 64 6c 65 25 |til_Add",handle%| 00004b10 2c 69 74 65 6d 24 2c 73 65 6c 5f 66 6e 24 20 b8 |,item$,sel_fn$ .| 00004b20 20 72 65 74 5f 68 61 6e 64 6c 65 25 0d 02 84 05 | ret_handle%....| 00004b30 cc 0d 02 85 33 20 20 c8 99 20 22 4d 65 6e 75 55 |....3 .. "MenuU| 00004b40 74 69 6c 5f 41 64 64 22 2c 68 61 6e 64 6c 65 25 |til_Add",handle%| 00004b50 2c 69 74 65 6d 24 20 b8 20 72 65 74 5f 68 61 6e |,item$ . ret_han| 00004b60 64 6c 65 25 0d 02 86 05 cd 0d 02 87 10 3d 72 65 |dle%.........=re| 00004b70 74 5f 68 61 6e 64 6c 65 25 0d 02 88 05 3a 0d 02 |t_handle%....:..| 00004b80 89 2a dd 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 54 |.*. .shell_MenuT| 00004b90 69 63 6b 28 69 74 65 6d 5f 68 61 6e 64 6c 65 25 |ick(item_handle%| 00004ba0 2c 73 74 61 74 65 25 29 0d 02 8a 2a c8 99 20 22 |,state%)...*.. "| 00004bb0 4d 65 6e 75 55 74 69 6c 5f 54 69 63 6b 22 2c 69 |MenuUtil_Tick",i| 00004bc0 74 65 6d 5f 68 61 6e 64 6c 65 25 2c 73 74 61 74 |tem_handle%,stat| 00004bd0 65 25 0d 02 8b 05 e1 0d 02 8c 05 3a 0d 02 8d 2d |e%.........:...-| 00004be0 dd 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 54 69 63 |. .shell_MenuTic| 00004bf0 6b 4f 6e 6c 79 31 28 6d 65 6e 75 5f 68 61 6e 64 |kOnly1(menu_hand| 00004c00 6c 65 25 2c 70 6f 73 25 29 0d 02 8e 2c c8 99 20 |le%,pos%)...,.. | 00004c10 22 4d 65 6e 75 55 74 69 6c 5f 54 69 63 6b 4f 6e |"MenuUtil_TickOn| 00004c20 6c 79 22 2c 6d 65 6e 75 5f 68 61 6e 64 6c 65 25 |ly",menu_handle%| 00004c30 2c 70 6f 73 25 0d 02 8f 05 e1 0d 02 90 05 3a 0d |,pos%.........:.| 00004c40 02 91 28 dd 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 |..(. .shell_Menu| 00004c50 54 69 63 6b 4f 6e 6c 79 32 28 69 74 65 6d 5f 68 |TickOnly2(item_h| 00004c60 61 6e 64 6c 65 25 29 0d 02 92 27 c8 99 20 22 4d |andle%)...'.. "M| 00004c70 65 6e 75 55 74 69 6c 5f 54 69 63 6b 4f 6e 6c 79 |enuUtil_TickOnly| 00004c80 22 2c 69 74 65 6d 5f 68 61 6e 64 6c 65 25 0d 02 |",item_handle%..| 00004c90 93 05 e1 0d 02 94 05 3a 0d 02 95 26 dd 20 f2 73 |.......:...&. .s| 00004ca0 68 65 6c 6c 5f 4d 65 6e 75 53 68 61 64 65 28 68 |hell_MenuShade(h| 00004cb0 61 6e 64 6c 65 25 2c 73 74 61 74 65 25 29 0d 02 |andle%,state%)..| 00004cc0 96 25 c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f 46 |.%.. "MenuUtil_F| 00004cd0 61 64 65 22 2c 68 61 6e 64 6c 65 25 2c 73 74 61 |ade",handle%,sta| 00004ce0 74 65 25 0d 02 97 05 e1 0d 02 98 05 3a 0d 02 99 |te%.........:...| 00004cf0 2c dd 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 44 6f |,. .shell_MenuDo| 00004d00 74 74 65 64 28 69 74 65 6d 5f 68 61 6e 64 6c 65 |tted(item_handle| 00004d10 25 2c 73 74 61 74 65 25 29 0d 02 9a 2a c8 99 20 |%,state%)...*.. | 00004d20 22 4d 65 6e 75 55 74 69 6c 5f 44 6f 74 73 22 2c |"MenuUtil_Dots",| 00004d30 69 74 65 6d 5f 68 61 6e 64 6c 65 25 2c 73 74 61 |item_handle%,sta| 00004d40 74 65 25 0d 02 9b 05 e1 0d 02 9c 05 3a 0d 02 9d |te%.........:...| 00004d50 2e dd 20 f2 73 68 65 6c 6c 5f 4d 65 6e 75 43 6f |.. .shell_MenuCo| 00004d60 6c 6f 75 72 73 28 69 74 65 6d 5f 68 61 6e 64 6c |lours(item_handl| 00004d70 65 25 2c 66 67 25 2c 62 67 25 29 0d 02 9e 2e c8 |e%,fg%,bg%).....| 00004d80 99 20 22 4d 65 6e 75 55 74 69 6c 5f 43 6f 6c 6f |. "MenuUtil_Colo| 00004d90 75 72 73 22 2c 69 74 65 6d 5f 68 61 6e 64 6c 65 |urs",item_handle| 00004da0 25 2c 66 67 25 2c 62 67 25 0d 02 9f 05 e1 0d 02 |%,fg%,bg%.......| 00004db0 a0 05 3a 0d 02 a1 3b dd 20 f2 73 68 65 6c 6c 5f |..:...;. .shell_| 00004dc0 4d 65 6e 75 57 72 69 74 61 62 6c 65 28 69 74 65 |MenuWritable(ite| 00004dd0 6d 5f 68 61 6e 64 6c 65 25 2c 73 74 61 74 65 25 |m_handle%,state%| 00004de0 2c 73 69 7a 65 25 2c 76 61 6c 69 64 24 29 0d 02 |,size%,valid$)..| 00004df0 a2 3b c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f 57 |.;.. "MenuUtil_W| 00004e00 72 69 74 61 62 6c 65 22 2c 69 74 65 6d 5f 68 61 |ritable",item_ha| 00004e10 6e 64 6c 65 25 2c 73 74 61 74 65 25 2c 73 69 7a |ndle%,state%,siz| 00004e20 65 25 2c 76 61 6c 69 64 24 0d 02 a3 05 e1 0d 02 |e%,valid$.......| 00004e30 a4 05 3a 0d 02 a5 2c dd 20 f2 73 68 65 6c 6c 5f |..:...,. .shell_| 00004e40 4d 65 6e 75 50 75 74 44 61 74 61 28 69 74 65 6d |MenuPutData(item| 00004e50 5f 68 61 6e 64 6c 65 25 2c 64 61 74 61 24 29 0d |_handle%,data$).| 00004e60 02 a6 29 c8 99 20 22 4d 65 6e 75 55 74 69 6c 5f |..).. "MenuUtil_| 00004e70 54 65 78 74 22 2c 69 74 65 6d 5f 68 61 6e 64 6c |Text",item_handl| 00004e80 65 25 2c 64 61 74 61 24 0d 02 a7 05 e1 0d 02 a8 |e%,data$........| 00004e90 05 3a 0d 02 a9 27 dd 20 f2 73 68 65 6c 6c 5f 4d |.:...'. .shell_M| 00004ea0 65 6e 75 43 61 6c 6c 48 61 6e 64 6c 65 72 28 68 |enuCallHandler(h| 00004eb0 25 2c 68 5f 62 6c 6b 25 29 0d 02 aa 07 ea 20 85 |%,h_blk%)..... .| 00004ec0 0d 02 ab 0f ee 20 85 20 ea 3a f7 20 85 3a e1 0d |..... . .:. .:..| 00004ed0 02 ac 1c e7 20 a0 28 22 46 4e 22 2b 24 68 25 2b |.... .("FN"+$h%+| 00004ee0 22 28 68 5f 62 6c 6b 25 29 22 29 0d 02 ad 05 e1 |"(h_blk%)").....| 00004ef0 0d 02 ae 05 3a 0d ff |....:..| 00004ef7