Home » Archimedes archive » Acorn User » AU 1993-11.adf » !OmniDesk_OmniDesk » !OmniDesk/!RunImage
!OmniDesk/!RunImage
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 User » AU 1993-11.adf » !OmniDesk_OmniDesk |
Filename: | !OmniDesk/!RunImage |
Read OK: | ✔ |
File size: | DD4A bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Acorn User » AU 1993-10.adf » !OmniDesk_OmniDesk » !OmniDesk/!RunImage
- Archimedes archive » Acorn User » AU 1993-11.adf » !OmniDesk_OmniDesk » !OmniDesk/!RunImage
File contents
10REM >!RunImage for OmniDesk 20: 30VersionNumber$="1�07 (31 July 1993)" 40Done=FALSE:DoModeChange=FALSE:UtilitiesKnown=0 50: 60REM Read size of sprite file and load it. We need to DIM 16 bytes more than the file's size. 70SYS "OS_FSControl",28,"<OmniDesk$Dir>.Resources.Sprites" TO ,,len 80DIM Sprites len+16:!Sprites=len+16:Sprites!4=0:Sprites!8=16:Sprites!12=16:SYS "OS_SpriteOp",256+10,Sprites,"<OmniDesk$Dir>.Resources.Sprites" 90: 100DIM Block 256,MenuHelp 16,Caret 24 110: 120REM Messages used by the OmniDesk suite: 130UtilDeclare=&825C0:UtilOpen=&825C1:UtilQuitting=&825C2:UtilReside=&825C3:UtilAckLoad=&825C4 140REM These are official Acorn allocations. 150: 160MaxUtils=FNReadMaxUtils 170: 180IndMenuMax=512:DIM IndirectMenuText IndMenuMax 190DIM Templates 1760,InfoInd 274,PrefsInd 640,DropInd 103,LoadingInd 79 200DIM IBMenu 124 210DIM UtilsMenu 28+(3*24)+(MaxUtils*24),UtilListBuffer 11*MaxUtils,ExtraPrefsInd 20*MaxUtils,ExtraPrefsVal 68*MaxUtils 220: 230ON ERROR Block!0=ERR:$(Block+4)=REPORT$+" (internal error code "+STR$(ERL)+")"+CHR$0:SYS "Wimp_ReportError",Block,1,"OmniDesk":END 240: 250*Set OmniDesk$RISCOS 3 260*RMEnsure UtilityModule 3.00 Set OmniDesk$RISCOS 2 270SYS "XOS_ReadVarVal","OmniDesk$RISCOS",Block,256,0,0 TO ,,len:Block?len=13:wimp$=$Block 280IF wimp$<>"3" THEN wimp$="2" 290*Unset OmniDesk$RISCOS 300SYS "XOS_ReadVarVal","OmniDesk$Dir",Block,256,0,0 TO ,,len:Block?len=13:OurFileName$=$Block 310N=-1:REPEAT:N+=1:UNTIL MID$(OurFileName$,LEN(OurFileName$)-N,1)="." 320OurPathName$=LEFT$(OurFileName$,LEN(OurFileName$)-N):OurFileName$=RIGHT$(OurFileName$,N) 330: 340IF wimp$="3" THEN 350 DIM messagelist% 36 360 messagelist%!0=UtilQuitting:messagelist%!4=UtilDeclare 370 messagelist%!8=UtilAckLoad:messagelist%!12=&400C1:messagelist%!16=&502 380 messagelist%!20=10:messagelist%!24=3:messagelist%!28=1:messagelist%!32=0 390 SYS "Wimp_Initialise",300,&4B534154,"OmniDesk",messagelist% TO wimp,Task 400ELSE 410 SYS "Wimp_Initialise",200,&4B534154,"OmniDesk" TO wimp,Task 420ENDIF 430: 440SYS "Interface_Initialise",Task 450: 460SYS "Wimp_OpenTemplate",,"<OmniDesk$Dir>.Resources.Templates" 470SYS "Wimp_LoadTemplate",,Templates,InfoInd,InfoInd+274,-1,"Info",0:Templates!64=Sprites 480SYS "Wimp_CreateWindow",,Templates TO Info 490SYS "Wimp_LoadTemplate",,Templates,DropInd,DropInd+104,-1,"Drop",0:Templates!64=Sprites 500SYS "Wimp_CreateWindow",,Templates TO Drop 510SYS "Wimp_LoadTemplate",,Templates,PrefsInd,PrefsInd+642,-1,"Prefs",0:Templates!64=Sprites 520SYS "Wimp_CreateWindow",,Templates TO Prefs 530SYS "Wimp_LoadTemplate",,Templates,LoadingInd,LoadingInd+79,-1,"Loading",0:Templates!64=Sprites 540SYS "Wimp_CreateWindow",,Templates TO Loading 550SYS "Wimp_CloseTemplate" 560: 570REM Make sure none of the radio icons are selected: 580FOR N=23 TO 33 STEP 5 590 FOR M=0 TO 2 600 PROCUpdateSelectedFlag(Prefs,N+M,FALSE) 610 NEXT 620NEXT 630: 640PROCOpenLoadingWindow("Loading ...") 650: 660SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 670SELECTUtil$="":ADJUSTUtil$="":DRAGUtil$="" 680SELECTHelp$="":ADJUSTHelp$="":DRAGHelp$="" 690ReadError=NOT FNFindIBClickUtils 700REM We need to load these details before the rest of the contents of the Settings file. 710REM Therefore there is another call to read the settings later. 720: 730PROCScanUtils 740: 750PROCInitVars 760PROCBuildMenus 770HotKeys=FNCreateWindow(0,0,0,0,0,0,-2,%10000000000000000001000001010000,&FF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"") 780PROCOpen(HotKeys,FALSE,0,0) 790: 800PROCInitialise 810: 820ReadError=NOT(FNLoadSettings) 830: 840ON ERROR PROCError 850IF ReadError THEN ReadError=FALSE:PROCDefaultSettings:ERROR 9999,"An error occurred whilst reading the settings file. Default settings will therefore be used." 860OSCLI("Set OmniDesk$Running Yes") 870SYS "OS_ReadMonotonicTime" TO polltime% 880: 890REM Main program loop 900REPEAT 910 SYS "Wimp_PollIdle",%1100000110000,Block,polltime% TO Reason 920 SYS "Interface_Poll",Reason,,Task 930 SYS "Interface_PreProcessKey",Reason,Block,Task 940 CASE Reason OF 950 WHEN 0 : PROCTaskIdle 960 WHEN 1 : PROCRedraw 970 WHEN 2 : SYS "Wimp_OpenWindow",,Block 980 WHEN 3 : SYS "Wimp_CloseWindow",,Block 990 IF Block!0=Drop THEN DropWindowUtil=-1 1000 WHEN 6 : PROCMouseButton 1010 WHEN 8 : PROCKeyPressed 1020 WHEN 9 : PROCDecodeMenu 1030 WHEN 17,18,19 : PROCRecieveMessage 1040 ENDCASE 1050UNTIL Done 1060Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task 1070SYS "Wimp_SendMessage",17,Block,0:REM Broadcast Quit to any loaded utilities. 1080SYS "Interface_CloseDown",Task 1090SYS "Wimp_CloseDown",Task,&4B534154 1100OSCLI("UnSet OmniDesk$Running") 1110END 1120: 1130DEF PROCError 1140Click=0:Block!0=ERR:CASE ERR OF 1150 WHEN 9999:REM Custom error 1160 $(Block+4)=REPORT$+CHR$0 1170 SYS "Wimp_ReportError",Block,17,"Notice from OmniDesk" 1180 OTHERWISE 1190 $(Block+4)=REPORT$+" (internal error code "+STR$ERL+"). Click on OK to continue, or Cancel to terminate the program."+CHR$0 1200 SYS "Wimp_ReportError",Block,3,"OmniDesk" TO ,Click 1210ENDCASE 1220IF Click=2 THEN Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task:SYS "Wimp_SendMessage",17,Block,0 1230IF Click=2 THEN SYS "Interface_CloseDown",Task:SYS "Wimp_CloseDown",Task,&4B534154:OSCLI("UnSet OmniDesk$Running"):END 1240ENDPROC 1250: 1260DEF PROCOpen(WindowHandle,TopOfStack,across,up) 1270Block!0=WindowHandle 1280SYS "Wimp_GetWindowState",,Block 1290IF (across<>-1) AND (across<>-1) THEN PROCDecideWindowPosition(Block,across,up) 1300IF TopOfStack THEN Block!28=-1 1310SYS "Wimp_OpenWindow",,Block 1320ENDPROC 1330: 1340DEF PROCClose(WindowHandle) 1350Block!0=WindowHandle 1360SYS "Wimp_GetWindowState",,Block 1370SYS "Wimp_CloseWindow",,Block 1380ENDPROC 1390: 1400DEF PROCDecideWindowPosition(Block,across,up) 1410REM Use of this procedure lets you open windows on an invisible grid which 1420REM automatically fits itself to the screen mode in use. There are five 1430REM positions across (left, mid-left, centre, mid-right, right) and five 1440REM positions up (bottom of screen, above icon-bar, centre of screen, 1450REM centre top of screen, top of screen). 1460 : 1470Xpixels=FNModeInfo("XPixels",-1):Ypixels=FNModeInfo("YPixels",-1) 1480XEigFactor=FNModeInfo("XEigFactor",-1):YEigFactor=FNModeInfo("YEigFactor",-1) 1490 : 1500top=Block!16:right=Block!12:bot=Block!8:left=Block!4 1510SYS "Wimp_OpenWindow",,Block:SYS "Wimp_GetWindowOutline",,Block 1520TB=((Block!16)-top)/(2^YEigFactor) 1530VS=((Block!12)-right)/(2^XEigFactor) 1540HS=(bot-(Block!8))/(2^YEigFactor) 1550LP=(left-(Block!4))/(2^XEigFactor) 1560REM LP is Left Pixel: normally present, but not if window is transparent. 1570width=(right-left)/(2^XEigFactor) 1580height=(top-bot)/(2^YEigFactor) 1590CASE across OF 1600 WHEN 0:x=LP 1610 WHEN 1:x=LP+((Xpixels+1)-(width+LP+VS))/4 1620 WHEN 2:x=LP+((Xpixels+1)-(width+LP+VS))/2 1630 WHEN 3:x=LP+(3*(((Xpixels+1)-(width+LP+VS))/4)) 1640 WHEN 4:x=(Xpixels+1)-(width+VS) 1650ENDCASE 1660CASE up OF 1670 WHEN 0:y=HS 1680 WHEN 1:y=HS+(132/(2^YEigFactor)) 1690 WHEN 2:y=HS+((Ypixels+1)-(height+TB+HS))/2 1700 WHEN 3:y=HS+(3*(((Ypixels+1)-(height+TB+HS))/4)) 1710 WHEN 4:y=(Ypixels+1)-(height+TB) 1720ENDCASE 1730REM Above coordinates position window. 1740REM Now convert to screen coordinates: 1750x=x*(2^XEigFactor):y=y*(2^YEigFactor) 1760width=width*(2^XEigFactor):height=height*(2^YEigFactor) 1770Block!12=x+width:Block!4=x 1780Block!16=y+height:Block!8=y 1790ENDPROC 1800: 1810REM ------------------------------------------------------------------------- 1820REM Wimp poll routines 1830REM ------------------------------------------------------------------------- 1840: 1850DEF PROCTaskIdle 1860IF DoModeChange THEN IF FNOpenState(Prefs) THEN PROCOpen(Prefs,FALSE,XPosition,YPosition) 1870SYS "OS_ReadMonotonicTime" TO polltime% 1880IF Zooming THEN Zooming=FALSE:PROCZoomPointer 1890IF Flashing THEN PROCFlashCaret 1900IF StartingUp THEN PROCStartUpTask 1910IF ProcessingPrefs THEN PROCStartOrQuitPrefsTask 1920IF WaitToCloseLoadingWindow>0 THEN WaitToCloseLoadingWindow-=1:IF WaitToCloseLoadingWindow=0 THEN PROCClose(Loading) 1930IF (NOT Flashing) AND (NOT StartingUp) AND (NOT ProcessingPrefs) THEN polltime%+=100:REM Do a Wimp_Poll approximately once a second 1940ENDPROC 1950: 1960DEF PROCRedraw 1970IF DoModeChange THEN 1980 REM Re-opening windows need an extra wimp_poll to happen after the mode change in order to work: 1990 IF FNOpenState(Prefs) THEN PROCOpen(Prefs,FALSE,4,1) 2000 IF FNOpenState(Loading) THEN PROCOpen(Loading,TRUE,2,2) 2010 DoModeChange=FALSE 2020ENDIF 2030SYS "Wimp_RedrawWindow",,Block TO flag 2040WHILE flag 2050 SYS "Interface_Render3dWindow",,Block 2060 SYS "Wimp_GetRectangle",,Block TO flag 2070ENDWHILE 2080ENDPROC 2090: 2100DEF PROCRecieveMessage 2110CASE Block!16 OF 2120 WHEN 0 : Done=TRUE 2130 WHEN 1 : REM A task is trying to save into OmniDesk by RAM Transfer or 2140 REM <Wimp$Scrap>. We must tell it to use <Wimp$Scrap> so that a 2150 REM utility can pick up the file, but only if a utility (or the 2160 REM drop window) is ready to receive it. 2170 IF (DropWindowUtil<>-1) OR (DRAGUtil<>-1) THEN 2180 Block!0=60:Block!12=Block!8:Block!16=2 2190 Block!36=-1:$(Block+44)="<Wimp$Scrap>"+CHR$0 2200 SYS "Wimp_SendMessage",17,Block,Block!4 2210 ENDIF 2220 WHEN 3 : REM File dragged into application 2230 FileName$="":N=44:WHILE ((Block?N)>=32) AND (N<256):FileName$+=CHR$(Block?N):N+=1:ENDWHILE 2240 FileType=Block!40:FileSize=Block!36 2250 my_ref=Block!8:SenderTask=Block!4 2260 : 2270 IF Block!20=Drop THEN 2280 REM File dropped into Drop window. 2290 PROCDragToIconBar(DropWindowUtil,FileSize,FileType,FileName$) 2300 ELSE 2310 IF Block!20=-2 AND Block!24=IconBar THEN 2320 REM File dropped onto icon-bar icon. 2330 PROCDragToIconBar(DRAGUtil,FileSize,FileType,FileName$) 2340 ENDIF 2350 ENDIF 2360 DropWindowUtil=-1:PROCClose(Drop) 2370 WHEN 10: REM The desktop state is being saved 2380 PROCSaveDesktop(Block!20) 2390 WHEN &502 : PROCHelp 2400 WHEN &400C1 : PROCModeChange 2410 WHEN UtilDeclare : PROCStoreUtilDetails 2420 WHEN UtilQuitting : PROCUtilityQuitting 2430 WHEN UtilAckLoad : REM A utility has acknowledged that it has dealt with our drag message 2440 Block!12=my_ref:Block!16=4 2450 Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+CHR$0 2460 SYS "Wimp_SendMessage",19,Block,SenderTask 2470 IF FileName$="<Wimp$Scrap>" THEN PROCDeleteWimpScrap 2480ENDCASE 2490ENDPROC 2500: 2510DEF PROCDeleteWimpScrap 2520LOCAL ERROR 2530ON ERROR LOCAL RESTORE ERROR:ENDPROC 2540REM We may receive try to delete a non-existant Wimp$Scrap 2550REM file if the receiving task did not recognise the filetype. 2560OSCLI("Delete <Wimp$Scrap>") 2570ENDPROC 2580: 2590DEF PROCMouseButton 2600MouseX=Block!0:MouseY=Block!4:Buttons=Block!8 2610Window=Block!12:Icon=Block!16 2620CASE Window OF 2630 WHEN -2:REM Icon bar icon clicked 2640 CASE Buttons OF 2650 WHEN 1 : REM Adjust 2660 PROCCallUtility(ADJUSTUtil) 2670 WHEN 2 : REM Menu 2680 M%=IBMenu:MenuX=MouseX:MenuY=MouseY:PROCMakeMenu 2690 WHEN 4 : REM Select 2700 PROCCallUtility(SELECTUtil) 2710 ENDCASE 2720 WHEN Info 2730 IF Icon=9 THEN ERROR 9999,"OmniDesk supports interactive help via Acorn's Help or Spy applications" 2740 WHEN Prefs 2750 CASE TRUE OF 2760 WHEN (Icon=10) AND (Buttons<16) AND (Buttons<>2):REM OK 2770 IF NOT ProcessingPrefs THEN 2780 SYS "Interface_SlabButton",,Block 2790 PROCDoPrefsOKClick 2800 IF Buttons<>1 THEN PROCClose(Prefs) 2810 Block!8=0:Block!12=Prefs:Block!16=10:SYS "Interface_SlabButton",,Block 2820 ENDIF 2830 WHEN (Icon=11) AND (Buttons<16) AND (Buttons<>2):REM OK: Save settings 2840 IF NOT ProcessingPrefs THEN 2850 SYS "Interface_SlabButton",,Block 2860 PROCDoPrefsOKClick 2870 SaveError=NOT FNSaveSettings 2880 IF Buttons<>1 THEN PROCClose(Prefs) 2890 Block!8=0:Block!12=Prefs:Block!16=11:SYS "Interface_SlabButton",,Block 2900 IF SaveError THEN ERROR 9999,"An error occurred whilst writing the settings file." 2910 ENDIF 2920 WHEN (Icon>35) AND (Buttons<16) AND (Buttons<>2):REM One of the expandable area of buttons 2930 IF ((Icon-36) MOD 5)=1 THEN 2940 REM One of the utility titles has been clicked: 2950 REM toggle the switch next to it 2960 PROCUpdateSelectedFlag(Prefs,Icon-1,NOT(FNSelectedState(Prefs,Icon-1))) 2970 ENDIF 2980 ENDCASE 2990ENDCASE 3000ENDPROC 3010: 3020DEF PROCKeyPressed 3030Window=Block!0:Icon=Block!4:Character=Block!24 3040Xpixels=FNModeInfo("XPixels",-1):Ypixels=FNModeInfo("YPixels",-1) 3050XEigFactor=FNModeInfo("XEigFactor",-1):YEigFactor=FNModeInfo("YEigFactor",-1) 3060CASE Window OF 3070 WHEN Prefs: 3080 CASE Character OF 3090 WHEN &18E,&19E,&1AE,&1BE,&18F,&19F,&1AF,&1BF,13:REM Down,Up,Return 3100 IF Character=13 AND Icon=9 THEN 3110 REM If Return is pressed on second icon, set up Block 3120 REM as appropriate for a SELECT-click, and choose OK: 3130 Block!8=4:Block!12=Prefs:Block!16=10 3140 PROCMouseButton 3150 ELSE 3160 REM Set caret to end of current icon: 3170 IF Icon=8 THEN Icon=9 ELSE Icon=8 3180 IF Icon=8 THEN SYS "Wimp_SetCaretPosition",Prefs,Icon,,,-1,LEN(FNReadIconStr(Prefs,8)) ELSE SYS "Wimp_SetCaretPosition",Prefs,Icon,,,-1,LEN(FNReadIconStr(Prefs,9)) 3190 ENDIF 3200 OTHERWISE 3210 SYS "Wimp_ProcessKey",Block!24 3220 ENDCASE 3230 OTHERWISE 3240 CASE Character OF 3250 WHEN &18C,&19C,&1AC,&1BC:REM Left 3260 SYS "Wimp_GetPointerInfo",,Block 3270 X=Block!0:Y=Block!4:X-=(Block!24-&18C)/1.6*2^XEigFactor+(2^XEigFactor AND Block!24=&18C):IF X<0 THEN X=0 3280 Block?0=3:Block?1=X MOD 256:Block?2=X DIV 256:Block?3=Y MOD 256:Block?4=Y DIV 256 3290 SYS "OS_Word",21,Block 3300 WHEN &18D,&19D,&1AD,&1BD:REM Right 3310 SYS "Wimp_GetPointerInfo",,Block 3320 X=Block!0:Y=Block!4:X+=(Block!24-&18D)/1.6*2^XEigFactor+(2^XEigFactor AND Block!24=&18D):IF X>(Xpixels*(2^XEigFactor)) THEN X=(Xpixels*(2^XEigFactor)) 3330 Block?0=3:Block?1=X MOD 256:Block?2=X DIV 256:Block?3=Y MOD 256:Block?4=Y DIV 256 3340 SYS "OS_Word",21,Block 3350 WHEN &18E,&19E,&1AE,&1BE:REM Down 3360 SYS "Wimp_GetPointerInfo",,Block 3370 X=Block!0:Y=Block!4:Y-=(Block!24-&18E)/1.6*2^YEigFactor+(2^YEigFactor AND Block!24=&18E):IF Y<0 THEN Y=0 3380 Block?0=3:Block?1=X MOD 256:Block?2=X DIV 256:Block?3=Y MOD 256:Block?4=Y DIV 256 3390 SYS "OS_Word",21,Block 3400 WHEN &18F,&19F,&1AF,&1BF:REM Up 3410 SYS "Wimp_GetPointerInfo",,Block 3420 X=Block!0:Y=Block!4:Y+=(Block!24-&18F)/1.6*2^YEigFactor+(2^YEigFactor AND Block!24=&18F):IF Y>(Ypixels*(2^YEigFactor)) THEN Y=(Ypixels*(2^YEigFactor)) 3430 Block?0=3:Block?1=X MOD 256:Block?2=X DIV 256:Block?3=Y MOD 256:Block?4=Y DIV 256 3440 SYS "OS_Word",21,Block 3450 OTHERWISE 3460 SYS "Wimp_ProcessKey",Block!24 3470 ENDCASE 3480ENDCASE 3490ENDPROC 3500: 3510DEF PROCDecodeMenu 3520Sub0=Block!0:Sub1=Block!4 3530CloseMenu=FALSE 3540CASE Sub0 OF 3550 WHEN 0 3560 SYS "Wimp_GetPointerInfo",,Block 3570 SYS "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 3580 CloseMenu=TRUE 3590 WHEN 1 3600 IF Sub1>=0 THEN PROCDecodeUtilitiesMenu 3610 WHEN 2 3620 PROCUpdatePrefsWindowBeforeOpening 3630 PROCOpen(Prefs,TRUE,4,1) 3640 WHEN 3 3650 Done=TRUE 3660ENDCASE 3670SYS "Wimp_GetPointerInfo",,Block 3680IF ((Block!8 AND 1)=1) AND (NOT CloseMenu) THEN PROCMakeMenu 3690ENDPROC 3700: 3710DEF PROCDecodeUtilitiesMenu 3720CASE Sub1 OF 3730 WHEN 0,1,2:PROCCallUtility(Sub1) 3740 OTHERWISE 3750 U%=SlotEnd+(188*(Sub1-3)) 3760 PROCCallUtility(Sub1) 3770ENDCASE 3780ENDPROC 3790: 3800REM ------------------------------------------------------------------------- 3810REM Menu routines 3820REM ------------------------------------------------------------------------- 3830: 3840DEF PROCBuildMenus 3850REM This procedure should only be visited once, since it contains DIMs. 3860 : 3870REM In the menu title strings below, if a "|" character is present it will be 3880REM replaced by a space under RISC OS 3.1 (or greater), or will terminate the 3890REM string under earlier versions of the wimp. This allows the new indirected 3900REM menu titles to be used (which were introduced with RISC OS 3.1). 3910 : 3920IndirectMenuTextOffsetPointer=0 3930REM This points to a pool to be used by all menus for their indirected text. 3940 : 3950Title$="OmniDesk|Suite":DIM IBMenuTitle LEN(Title$)+1:$IBMenuTitle=Title$+CHR$13 3960M%=IBMenu 3970PROCMenuInit(IBMenuTitle) 3980PROCMenuItem("Info",2,Info) 3990PROCMenuItem("Utilities",0,UtilsMenu) 4000PROCMenuItem("Preferences ...",2,-1) 4010PROCMenuItem("Quit",128,-1) 4020 : 4030M%=UtilsMenu 4040Title$="Utilities":DIM UtilsMenuTitle LEN(Title$)+1:$UtilsMenuTitle=Title$+CHR$13 4050PROCMenuInit(UtilsMenuTitle) 4060PROCBuildUtilitiesMenu 4070ENDPROC 4080: 4090DEF PROCBuildUtilitiesMenu 4100P%=UtilsMenu+28 4110PROCMenuItem("Locate caret",0,-1) 4120PROCMenuItem("Turn caret off",0,-1) 4130PROCMenuItem("Display sprite",128,-1) 4140IF UtilitiesKnown=0 THEN ENDPROC 4150FOR N=0 TO UtilitiesKnown-1 4160 P%!-24=0 4170 U%=SlotEnd+(188*N) 4180 PROCMenuItem($(U%+4),128,-1) 4190NEXT 4200ENDPROC 4210: 4220DEF PROCMakeMenu 4230IF MenuX<0 THEN MenuX=0 4240IF MenuY<320 THEN MenuY=320:REM for icon bar 4250SYS "Wimp_CreateMenu",,M%,MenuX-((36+M%!16)/2),MenuY 4260ENDPROC 4270: 4280DEF PROCMenuInit(MenuTitle) 4290IF wimp>=310 THEN 4300 A=INSTR($MenuTitle,"|"):IF A<>0 THEN ?(MenuTitle+(A-1))=32 4310 MenuMax=LEN($MenuTitle) 4320 M%!0=MenuTitle 4330ELSE 4340 A=INSTR($MenuTitle,"|"):IF A<>0 THEN ?(MenuTitle+(A-1))=13 4350 MenuMax=LEN(LEFT$($MenuTitle,12)) 4360 $M%=LEFT$($MenuTitle,12) 4370ENDIF 4380M%?12=7:M%?13=2:M%?14=11:M%?15=0 4390M%!16=MenuMax*16 4400M%!20=44:M%!24=0 4410P%=M%+28 4420ENDPROC 4430: 4440DEF PROCMenuItem(Text$,Flags,Link) 4450REM Flags: 1-ticked, 2-dashed line, 4-writeable, 8-message, 128-last item 4460REM Link: menu or window handle for sub-pointer 4470P%!0=Flags:P%!4=Link 4480IF LEN(Text$)<=12 THEN 4490 P%!8=&07003021:REM Not indirected 4500 $(P%+12)=Text$ 4510ELSE 4520 P%!8=&07003121:REM Indirected 4530 P%!12=IndirectMenuText+IndirectMenuTextOffsetPointer 4540 P%!16=0:P%!20=0 4550 $(IndirectMenuText+IndirectMenuTextOffsetPointer)=Text$+CHR$13 4560 IndirectMenuTextOffsetPointer+=LEN(Text$)+1 4570 IF IndirectMenuTextOffsetPointer>IndMenuMax THEN ERROR 0,"The indirect menu text buffer has overflowed. Please allocate more space." 4580ENDIF 4590P%+=24 4600IF MenuMax<LEN(Text$) THEN MenuMax=LEN(Text$):M%!16=(MenuMax+1)*16 4610IF (Flags=128) AND (wimp>=310) THEN M%!28=(((M%!28) AND NOT 256) EOR 256) 4620 REM Indirected menu titles for RISC OS 3.1 upwards. 4630ENDPROC 4640: 4650REM ------------------------------------------------------------------------- 4660REM Responses to incoming wimp messages 4670REM ------------------------------------------------------------------------- 4680: 4690DEF PROCSaveDesktop(File) 4700LOCAL ERROR 4710ON ERROR LOCAL Block!12=Block!8:SYS "Wimp_SendMessage",19,Block,Block!4:RESTORE ERROR:ENDPROC 4720REM The above line acknowledges the message if an error occurs, thereby 4730REM aborting the desktop save. 4740BPUT#File,"Run "+OurPathName$+OurFileName$ 4750ENDPROC 4760: 4770DEF PROCHelp 4780Block!12=Block!8:Block!16=&503:HelpInfo=Block+20 4790 : 4800Window=Block!32:Icon=Block!36 4810 : 4820CASE Window OF 4830 WHEN -2:PROCSend("This is the OmniDesk icon.") 4840 IF SELECTHelp$=ADJUSTHelp$ THEN 4850 IF SELECTHelp$<>"" THEN PROCSend("Click SELECT or ADJUST to "+SELECTHelp$) 4860 ELSE 4870 IF SELECTHelp$<>"" THEN PROCSend("Click SELECT to "+SELECTHelp$) 4880 IF ADJUSTHelp$<>"" THEN PROCSend("Click ADJUST to "+ADJUSTHelp$) 4890 ENDIF 4900 PROCSend(DRAGHelp$) 4910 WHEN Info:IF Icon=0 THEN 4920 PROCSend("Isn't this pretty? It was created in ArtWorks.") 4930 IF FNModeInfo("NCol",-1)<63 THEN PROCSend("It looks even nicer in a full-colour mode.") 4940 ELSE 4950 PROCSend("This window displays information about OmniDesk.") 4960 ENDIF 4970 WHEN Drop:PROCSend("Drag a file into this window.") 4980 WHEN Loading:PROCSend("OmniDesk is loading.") 4990 PROCSend("The utilities known to OmniDesk are shown in the lowest box.") 5000 WHEN Prefs:CASE TRUE OF 5010 WHEN Icon=-1:PROCSend("This is the OmniDesk Configuration window.") 5020 PROCSend("Use it to set up the action of the mouse buttons and drag operations on the icon-bar icon, which utilities to load permanently, and the caret blinking statistics.") 5030 WHEN (Icon>=0) AND (Icon<=7):PROCSend("This area lets you set up whether, and how fast, the text insertion caret blinks.") 5040 WHEN Icon=8:PROCSend("Enter here the length of time the caret blinks on (in tenths of a second).") 5050 WHEN Icon=9:PROCSend("Enter here the length of time the caret blinks off (in tenths of a second).") 5060 WHEN Icon=10:PROCSend("Click here to implement any changes you have made in this window.") 5070 PROCSend("Clicking with SELECT will close the window; clicking with ADJUST will keep it open.") 5080 WHEN Icon=11:PROCSend("Click here to implement any changes you have made in this window and save them for the next time you use OmniDesk.") 5090 PROCSend("Clicking with SELECT will close the window; clicking with ADJUST will keep it open.") 5100 WHEN (Icon=12) OR (Icon=13):PROCSend("This area lets you decide which utilities are permanently loaded and which are activated when you click on, or drag a file to, the icon-bar icon.") 5110 WHEN Icon=16:PROCSend("These columns let you set the action of clicks on, or drags to, the icon-bar icon.") 5120 WHEN (Icon=21) OR (Icon=26) OR (Icon=31):PROCSend("This utility is provided by OmniDesk itself, so the switch is always selected: you cannot turn it off.") 5130 WHEN (Icon=14) OR (Icon=15) OR (Icon=20) OR ((Icon>=21) AND (((Icon-21) MOD 5)<2)):PROCSend("Click in this column to toggle the Load switch on and off.") 5140 PROCSend("If the switch is on, the utility will be permanently resident.") 5150 PROCSend("If the switch is off, the utility will only be loaded when needed.") 5160 WHEN (Icon=17) OR ((Icon>=21) AND (((Icon-21) MOD 5)=2)):PROCSend("Click in this column to choose which utility will be activated when you click SELECT on the icon-bar icon.") 5170 PROCSend("You can click ADJUST on the current option to turn it off, assigning no effect to the icon-bar icon.") 5180 WHEN (Icon=18) OR ((Icon>=21) AND (((Icon-21) MOD 5)=3)):PROCSend("Click in this column to choose which utility will be activated when you drag a file to the icon-bar icon.") 5190 PROCSend("You can only choose a utility which will accept files dragged to it.") 5200 WHEN (Icon=19) OR ((Icon>=21) AND (((Icon-21) MOD 5)=4)):PROCSend("Click in this column to choose which utility will be activated when you click ADJUST on the icon-bar icon.") 5210 PROCSend("You can click ADJUST on the current option to turn it off, assigning no effect to the icon-bar icon.") 5220 ENDCASE 5230OTHERWISE 5240 IF wimp>=217 THEN 5250 MenuHelp!0=-1:MenuHelp!4=-1:MenuHelp!8=-1 5260 SYS "Wimp_GetMenuState",1,MenuHelp,Block!32,Block!36 5270 CASE M% OF 5280 WHEN IBMenu: 5290 IF MenuHelp!4=-1 THEN 5300 CASE MenuHelp!0 OF 5310 WHEN 0:PROCSend("Move the pointer right to see information about OmniDesk.") 5320 WHEN 1:PROCSend("Move the pointer right to choose an OmniDesk utility.") 5330 WHEN 2:PROCSend("Click SELECT to edit the OmniDesk configuration.") 5340 WHEN 3:PROCSend("Click SELECT to quit OmniDesk.") 5350 OTHERWISE PROCSend("This is the OmniDesk main menu.") 5360 ENDCASE 5370 ELSE 5380 REM Utilities menu 5390 CASE MenuHelp!4 OF 5400 WHEN 0:PROCSend("Click SELECT to locate the caret.") 5410 WHEN 1:PROCSend("Click SELECT to turn the caret off.") 5420 WHEN 2:PROCSend("Click SELECT to open a window into which you can drag a sprite to view it on the screen.") 5430 OTHERWISE 5440 U%=SlotEnd+(188*((MenuHelp!4)-3)) 5450 PROCSend("Click SELECT to "+$(U%+35)) 5460 ENDCASE 5470 ENDIF 5480 ENDCASE 5490 ENDIF 5500ENDCASE 5510 : 5520?HelpInfo=0 5530Block!0=(HelpInfo+4-Block) AND NOT 3 5540SYS "Wimp_SendMessage",17,Block,Block!4 5550ENDPROC 5560: 5570DEF PROCSend(Text$) 5580$HelpInfo=Text$+"|M" 5590HelpInfo+=LEN(Text$)+2 5600ENDPROC 5610: 5620DEF PROCModeChange 5630InfoSprite$="Sinfo" 5640IF FNModeInfo("YEigFactor",-1)<=1 THEN InfoSprite$+="22" ELSE InfoSprite$+="24" 5650IF FNModeInfo("NCol",-1)<=15 THEN InfoSprite$+="16" ELSE InfoSprite$+="64" 5660InfoSprite$+=";Z4":Block!0=Info:Block!4=0:SYS "Wimp_GetIconState",,Block 5670$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 5680SYS "Wimp_SetIconState",,Block 5690Block!0=Loading:Block!4=2:SYS "Wimp_GetIconState",,Block 5700$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 5710SYS "Wimp_SetIconState",,Block 5720DoModeChange=TRUE 5730IF NOT StartingUp THEN PROCUpdateIconForMode("!OmniDesk",-2,IconBar) 5740ENDPROC 5750: 5760DEF PROCStoreUtilDetails 5770IF NOT FNUpdateUtilDetails THEN 5780 IF FNAllocateMemory(188+AppSize)=0 THEN StartingUp=FALSE:PROCInstallIBIcon:PROCBuildUtilitiesMenu:ERROR 9999,"Out of memory: unable to store details of any more utilities. No more will be recorded." 5790 U%=SlotEnd+(188*UtilitiesKnown) 5800 U%!0=Block!20: REM Task handle 5810 $(U%+4)=$(Block+24): REM Task name 5820 $(U%+24)=$(Block+44): REM Leafname of utility 5830 $(U%+35)=$(Block+55): REM SELECT help message 5840 $(U%+112)=$(Block+132):REM DRAG help message 5850 UtilitiesKnown+=1 5860 PROCUpdateIcon(Loading,4,$(U%+4)) 5870 PROCOpen(Loading,TRUE,2,2) 5880 PROCAddLineToPrefs($(U%+4)) 5890 PROCBuildUtilitiesMenu 5900ENDIF 5910ENDPROC 5920: 5930DEF FNUpdateUtilDetails 5940REM A utility is starting or restarting. 5950REM If we know it, then update its task handle and return TRUE. 5960REM If we don't know it, then return FALSE and let the calling 5970REM procedure install it in the Prefs window and Utilities menu. 5980IF UtilitiesKnown=0 THEN =FALSE 5990N=0:REPEAT 6000 U%=SlotEnd+(188*N) 6010 N+=1 6020UNTIL (N=UtilitiesKnown) OR ($(U%+4)=$(Block+24)) 6030IF ($(U%+4)=$(Block+24)) THEN U%!0=Block!20:=TRUE 6040=FALSE 6050: 6060DEF PROCUtilityQuitting 6070REM Must replace task handle with -1 to indicate 'not running' 6080IF UtilitiesKnown=0 THEN ENDPROC 6090N=0:REPEAT 6100 U%=SlotEnd+(188*N) 6110 N+=1 6120UNTIL (N=UtilitiesKnown) OR (U%!0=Block!20) 6130IF U%!0=Block!20 THEN U%!0=-1 6140ENDPROC 6150: 6160REM ------------------------------------------------------------------------- 6170REM General non-specific useful routines (mostly wimp) 6180REM ------------------------------------------------------------------------- 6190: 6200DEF PROCUpdateIcon(Wndw,Icn,Txt$) 6210Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6220IF LEN(Txt$)>(Block!36)-1 THEN 6230 IF ((Block!24) AND (1<<9))=(1<<9) THEN 6240 REM Right-justified 6250 Txt$="�"+RIGHT$(Txt$,(Block!36)-2) 6260 ELSE 6270 REM Left-justified or centred 6280 Txt$=LEFT$(Txt$,(Block!36)-1):RIGHT$(Txt$)="�" 6290 ENDIF 6300ENDIF 6310REM ^ Ensures the text can't overflow the maximum space in the icon. 6320IF $(Block!28)<>Txt$ THEN 6330 $(Block!28)=Txt$:Block!8=0:Block!12=0 6340 SYS "Wimp_SetIconState",,Block 6350ENDIF 6360SYS "Wimp_GetCaretPosition",,Block 6370IF Block!0=Wndw AND Block!4=Icn THEN 6380 REM If this icon owns the caret, then put it at the end. 6390 SYS "Wimp_SetCaretPosition",Wndw,Icn,0,0,-1,LEN(Txt$) 6400ENDIF 6410ENDPROC 6420: 6430DEF PROCUpdateIconColour(Wndw,Icn,FCol,BCol) 6440REM Change an icon's colours 6450Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6460IF (((Block?27)>>4)=BCol) AND (((Block?27) MOD 16)=FCol) THEN ENDPROC 6470 REM ^ Same colour, so don't change. 6480Block!12=(%11111111<<24):Block!8=(BCol<<28)+(FCol<<24) 6490SYS "Wimp_SetIconState",,Block 6500ENDPROC 6510: 6520DEF PROCUpdateSelectedFlag(Wndw,Icn,State) 6530REM Use State=TRUE to make icon become selected 6540Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6550IF ((Block!24) AND (1<<21))=((-State)<<21) THEN ENDPROC 6560Block!12=(1<<21):IF State THEN Block!8=(1<<21) ELSE Block!8=(0<<21) 6570SYS "Wimp_SetIconState",,Block 6580ENDPROC 6590: 6600DEF PROCUpdateShadedFlag(Wndw,Icn,State) 6610REM Use State=TRUE to make icon become shaded 6620Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6630IF ((Block!24) AND (1<<22))=((-State)<<22) THEN ENDPROC 6640Block!12=(1<<22):IF State THEN Block!8=(1<<22) ELSE Block!8=(0<<22) 6650SYS "Wimp_SetIconState",,Block 6660ENDPROC 6670: 6680DEF FNSelectedState(Wndw,Icn) 6690Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6700IF ((Block!24) AND (1<<21))=(1<<21) THEN =TRUE 6710=FALSE 6720: 6730DEF FNShadedState(Wndw,Icn) 6740Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6750IF ((Block!24) AND (1<<22))=(1<<22) THEN =TRUE 6760=FALSE 6770: 6780DEF FNOpenState(Wndw) 6790REM Returns TRUE if window is open; false otherwise 6800Block!0=Wndw:SYS "Wimp_GetWindowState",,Block 6810IF ((Block!32) AND (1<<16))=(1<<16) THEN =TRUE 6820=FALSE 6830: 6840DEF PROCShadeMenu(Menu,Item,State) 6850!(Menu+28+(24*Item)+8)=(!(Menu+28+(24*Item)+8) AND NOT (1<<22)) EOR ((-State)<<22) 6860ENDPROC 6870: 6880DEF PROCTickMenu(Menu,Item,State) 6890!(Menu+28+(24*Item))=(!(Menu+28+(24*Item)) AND NOT 1) EOR (-State) 6900ENDPROC 6910: 6920DEF FNMenuShaded(Menu,Item) 6930IF (!(Menu+28+(24*Item)+8) AND (1<<22))=(1<<22) THEN =TRUE 6940=FALSE 6950: 6960DEF FNMenuTicked(Menu,Item) 6970IF (!(Menu+28+(24*Item)) AND 1)=1 THEN =TRUE 6980=FALSE 6990: 7000DEF FNReadIcon(Wndw,Icn) 7010REM Read numeric value of icon 7020Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 7030=VAL($(Block!28)) 7040: 7050DEF FNReadIconStr(Wndw,Icn) 7060REM Read string value of icon 7070Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 7080=$(Block!28) 7090: 7100DEF FNModeInfo(var$,mode) 7110REM Use mode=-1 for current screen mode 7120CASE var$ OF 7130 WHEN "XPixels":SYS "OS_ReadModeVariable",mode,11 TO ,,var 7140 WHEN "YPixels":SYS "OS_ReadModeVariable",mode,12 TO ,,var 7150 WHEN "NCol":SYS "OS_ReadModeVariable",mode,3 TO ,,var 7160 WHEN "XEigFactor":SYS "OS_ReadModeVariable",mode,4 TO ,,var 7170 WHEN "YEigFactor":SYS "OS_ReadModeVariable",mode,5 TO ,,var 7180 WHEN "BPP":SYS "OS_ReadModeVariable",mode,9 TO ,,var:var=2^var 7190 OTHERWISE var=-1:REM Fall-through for a faulty input value 7200ENDCASE 7210=var 7220: 7230DEF PROCUpdateIconForMode(Appname$,Wndw,Icn) 7240REM This procedure requires that ALL the icon sprites are defined in mode 20 7250REM or mode 27 (which is equivalent) with a mask but no palette. They should 7260REM still appear to have the expected resolutions and number of colours, i.e 7270REM !Sprites23: two colours, high resolution, !Sprites (actually !Sprites24) 7280REM at mode 12 resolution (double height pixels) in 16 colours, and normal 7290REM mode 20 resolution, 16 colours for the !Sprites22 icon. If this is not 7300REM adhered to, then memory shortage errors may occur on a mode change. 7310Extension$="24" 7320IF FNModeInfo("YEigFactor",-1)<2 THEN 7330 IF FNModeInfo("NCol",-1)>2 THEN 7340 Extension$="22" 7350 ELSE 7360 Extension$="23" 7370 ENDIF 7380ENDIF 7390SYS "Wimp_BaseOfSprites" TO ,iconsprite% 7400SYS "OS_SpriteOp",256+25,iconsprite%,Appname$:REM Delete icon sprite 7410REM The following three lines assume a mask but no palette: 7420SYS "OS_SpriteOp",256+40,Sprites,Appname$+Extension$ TO ,,,w,h,,mode:REM Get info about new sprite 7430SYS "OS_SpriteOp",256+15,iconsprite%,Appname$,0,w,h,mode:REM Create replacement icon sprite 7440SYS "OS_SpriteOp",256+29,iconsprite%,Appname$:REM Create mask 7450 : 7460REM Paint sprite mask into iconsprite mask: 7470SYS "OS_SpriteOp",256+61,iconsprite%,Appname$,0 TO r0,r1,r2,r3:REM Output to mask 7480SYS "OS_SpriteOp",256+49,Sprites,Appname$+Extension$,0,0:REM Paint mask from Sprites 7490GCOL 4,128:CLG:REM Invert to make mask the right way round 7500SYS "OS_SpriteOp",r0,r1,r2,r3:REM Reset screen output 7510 : 7520REM Paint sprite into iconsprite: 7530SYS "OS_SpriteOp",256+60,iconsprite%,Appname$,0 TO r0,r1,r2,r3:REM Output to new icon sprite 7540SYS "OS_SpriteOp",256+34,Sprites,Appname$+Extension$,0,0,8:REM Paint copy from Sprites 7550SYS "OS_SpriteOp",r0,r1,r2,r3:REM Reset screen output 7560Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 7570Block!8=0:Block!12=0:SYS "Wimp_SetIconState",,Block:REM Re-plot icon 7580ENDPROC 7590: 7600DEF FNCreateWindow(minX,minY,maxX,maxY,Xoffset,Yoffset,Handle,Flags,TitleCol,TitleBackCol,WorkCol,WorkBackCol,ScrollCol,SliderCol,InputCol,WminX,WminY,WmaxX,WmaxY,TitleFlags,Wbutton,SpritePoint,MinW,MinH,TitleData$) 7610Block!0=minX:Block!4=minY:Block!8=maxX:Block!12=maxY:Block!16=Xoffset:Block!20=Yoffset 7620Block!24=Handle:Block!28=Flags 7630Block?32=TitleCol:Block?33=TitleBackCol:Block?34=WorkCol:Block?35=WorkBackCol 7640Block?36=ScrollCol:Block?37=SliderCol:Block?38=InputCol:Block?39=0 7650Block!40=WminX:Block!44=WminY:Block!48=WmaxX:Block!52=WmaxY 7660Block!56=TitleFlags:Block!60=Wbutton:Block!64=SpritePoint 7670Block!68=(MinH<<15)+MinW :::::::::::: REM 0,0 sets the minimum window with to the title width 7680$(Block+72)=TitleData$:Block!84=0 ::: REM No icons initially 7690SYS "Wimp_CreateWindow",,Block TO WindowHandle 7700=WindowHandle 7710: 7720DEF PROCInitialise 7730AppSize=HIMEM-&8000:MinSize=AppSize:SlotEnd=HIMEM 7740ENDPROC 7750: 7760DEF FNAllocateMemory(Required) 7770SlotSize=FNSlotSize(-1) 7780IF SlotSize<Required THEN 7790 NewSize=FNSlotSize(Required) 7800 IF NewSize<Required THEN SlotSize=FNSlotSize(AppSize) 7810ENDIF 7820IF NewSize<Required THEN =0:REM Returns, indicating memory not claimed 7830IF SlotSize>Required THEN SlotSize=FNSlotSize(Required) 7840=SlotSize:REM Returns with bytes claimed 7850: 7860DEF FNSlotSize(Bytes) 7870SYS "Wimp_SlotSize",Bytes,-1 TO Bytes 7880=Bytes 7890: 7900DEF PROCMinimiseWimpSlot 7910dummy=FNAllocateMemory(MinSize) 7920ENDPROC 7930: 7940DEF PROCCloseFileIfPoss(FileHandle) 7950LOCAL ERROR 7960ON ERROR LOCAL RESTORE ERROR:ENDPROC:REM Unable to close file 7970CLOSE#FileHandle 7980ENDPROC 7990: 8000DEF FNFindFileSize(FileName$) 8010IF FileName$="<Wimp$Scrap>" THEN 8020 SYS "OS_File",15,FileName$,,,FileName$ TO ,,,,FileSize 8030ELSE 8040 N=-1:REPEAT:N+=1:UNTIL MID$(FileName$,LEN(FileName$)-N,1)="." 8050 PathName$=LEFT$(FileName$,LEN(FileName$)-N):LeafName$=RIGHT$(FileName$,N) 8060 SYS "OS_File",13,LeafName$,,,PathName$ TO ,,,,FileSize 8070ENDIF 8080=FileSize 8090: 8100DEF FNNextEntry 8110REM Gets next entry (created by BPUT#Data,A$) from a file as a string. 8120REM Use as A$=FNNextEntry. 8130LOCAL ERROR 8140ON ERROR LOCAL RESTORE ERROR:="":REM Error reading file 8150NE$=GET$#Data 8160WHILE LEFT$(NE$,1)="|" 8170 NE$=GET$#Data 8180ENDWHILE 8190=NE$ 8200: 8210REM ------------------------------------------------------------------------- 8220REM Routines common to the OmniDesk utilities 8230REM ------------------------------------------------------------------------- 8240: 8250DEF FNReadWindowLocation(Axis$) 8260REM Reads which radio icon (if any) is selected in the Window Position 8270REM selector window and returns the axis coordinate (two calls needed) 8280REM or -1 for no position selected. 8290Icon=5:REPEAT:Icon+=1:UNTIL (FNSelectedState(Loc,Icon)=TRUE) OR (Icon=31) 8300IF Icon=31 THEN =-1:REM All icons deselected 8310Location=-1:Icon-=6:REM Bring icon into range 0-14 8320CASE Axis$ OF 8330 WHEN "X","x":Location=Icon DIV 5 8340 WHEN "Y","y":Location=4-(Icon MOD 5) 8350ENDCASE 8360=Location 8370: 8380DEF PROCCleanUpLocWindow 8390REM Makes sure that none of the 'window' icons in the Loc window is selected. 8400N=5:REPEAT 8410N+=1:UNTIL N=30 OR FNSelectedState(Loc,N) 8420PROCUpdateSelectedFlag(Loc,N,FALSE) 8430ENDPROC 8440: 8450REM ------------------------------------------------------------------------- 8460REM Special routines for this program only 8470REM ------------------------------------------------------------------------- 8480: 8490DEF PROCInstallIBIcon 8500REM Put Icon on the icon-bar 8510Block!0=-8 8520Block!4=0:Block!8=0:Block!12=76:Block!16=68 8530Block!20=&17003002:$(Block+24)="!OmniDesk"+CHR$13 8540SYS "Wimp_CreateIcon",&1E000000,Block TO IconBar 8550 : 8560PROCUpdateIcon(Info,3,VersionNumber$) 8570WaitToCloseLoadingWindow=3:REM Allows extra wimp polls so that there is 8580 REM time for the last utility to appear in the 8590 REM Loading window. 8600PROCModeChange:REM To update sprite in info box and icon-bar icon 8610ENDPROC 8620: 8630DEF PROCOpenLoadingWindow(Message$) 8640InfoSprite$="Sinfo" 8650IF FNModeInfo("YEigFactor",-1)<=1 THEN InfoSprite$+="22" ELSE InfoSprite$+="24" 8660IF FNModeInfo("NCol",-1)<=15 THEN InfoSprite$+="16" ELSE InfoSprite$+="64" 8670InfoSprite$+=";Z4":Block!0=Loading:Block!4=2:SYS "Wimp_GetIconState",,Block 8680$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 8690SYS "Wimp_SetIconState",,Block 8700PROCUpdateIcon(Loading,3,"Version "+LEFT$(VersionNumber$,INSTR(VersionNumber$," ")-1)) 8710PROCUpdateIcon(Loading,4,Message$) 8720PROCOpen(Loading,TRUE,2,2) 8730PROCOpen(Loading,TRUE,2,2) 8740WaitToCloseLoadingWindow=0 8750ENDPROC 8760: 8770DEF PROCDragToIconBar(Utility,FileSize,FileType,FileName$) 8780CASE Utility OF 8790 WHEN -1:REM None: Acknowledge message and return 8800 Block!12=my_ref:Block!16=4 8810 Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+CHR$0 8820 SYS "Wimp_SendMessage",19,Block,SenderTask 8830 IF FileName$="<Wimp$Scrap>" THEN PROCDeleteWimpScrap 8840 WHEN 0:REM Locate caret - no action 8850 WHEN 1:REM Turn caret off - no action 8860 WHEN 2:REM Display sprite 8870 ScreenloadError=FNScreenload(FileType,FileName$) 8880 Block!12=my_ref:Block!16=4 8890 Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+CHR$0 8900 SYS "Wimp_SendMessage",19,Block,SenderTask 8910 IF FileName$="<Wimp$Scrap>" THEN PROCDeleteWimpScrap 8920 CASE ScreenloadError OF 8930 WHEN 1:ERROR 9999,"The Xarc module must be loaded before this file type can be handled by the Display sprite utility." 8940 WHEN 2:ERROR 9999,"The Display sprite utility can only handle Sprite or Xarc files." 8950 OTHERWISE REM Handled OK. 8960 ENDCASE 8970 OTHERWISE 8980 IF UtilitiesKnown<>0 THEN 8990 U%=SlotEnd+(188*(Utility-3)) 9000 IF U%!0=-1 THEN 9010 REM Task not running permanently, so start it up temporarily 9020 REM and broadcast a message: 9030 SYS "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -Exit-OmniDesk"+STR$(Task) 9040 Block!0=256:Block!12=0:Block!16=UtilOpen 9050 Block!20=2:$(Block+24)=$(U%+4) 9060 Block!44=FileSize:Block!48=FileType:$(Block+52)=FileName$ 9070 SYS "Wimp_SendMessage",18,Block,0 9080 ELSE 9090 REM Task is running, so send it a message: 9100 Block!0=256:Block!12=0:Block!16=UtilOpen 9110 Block!20=2:$(Block+24)=$(U%+4) 9120 Block!44=FileSize:Block!48=FileType:$(Block+52)=FileName$ 9130 SYS "Wimp_SendMessage",18,Block,U%!0 9140 ENDIF 9150 ENDIF 9160 ENDCASE 9170ENDPROC 9180: 9190DEF PROCCallUtility(Utility) 9200IF ProcessingPrefs THEN BufferedStartup=Utility:ENDPROC 9210CASE Utility OF 9220 WHEN -1:REM Off 9230 WHEN 0:PROCLocateCaret 9240 WHEN 1:SYS "Wimp_SetCaretPosition",-1 9250 WHEN 2:PROCUpdateIcon(Drop,2,"Drag a sprite here to load it to the screen.") 9260 PROCOpen(Drop,TRUE,2,1):DropWindowUtil=2 9270 OTHERWISE 9280 IF UtilitiesKnown<>0 THEN 9290 U%=SlotEnd+(188*(Utility-3)) 9300 IF $(U%+35)="" THEN 9310 REM No SELECT-action help supplied. 9320 REM This implies that the utility only accepts dragged files, and has 9330 REM no SELECT-action. Therefore, we must open a drag-window for it. 9340 PROCUpdateIcon(Drop,2,$(U%+112)) 9350 PROCOpen(Drop,TRUE,2,1):DropWindowUtil=Utility 9360 ELSE 9370 IF U%!0=-1 THEN 9380 REM Task not running permanently, so start it up temporarily 9390 REM and broadcast a message: 9400 SYS "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -Exit-OmniDesk"+STR$(Task) 9410 Block!0=44:Block!12=0:Block!16=UtilOpen 9420 Block!20=4:$(Block+24)=$(U%+4) 9430 SYS "Wimp_SendMessage",17,Block,0 9440 ELSE 9450 REM Task is running, so send it a message: 9460 Block!0=44:Block!12=0:Block!16=UtilOpen 9470 Block!20=4:$(Block+24)=$(U%+4) 9480 SYS "Wimp_SendMessage",17,Block,U%!0 9490 ENDIF 9500 ENDIF 9510 ENDIF 9520ENDCASE 9530ENDPROC 9540: 9550DEF FNScreenload(FileType,FileName$) 9560ScreenloadError=0 9570IF FileType=&FF9 THEN 9580 SYS "OS_Byte",135 TO ,,mode 9590 OSCLI("Screenload "+FileName$):OFF 9600 REPEAT 9610 SYS "OS_Byte",121,0 TO ,A 9620 UNTIL A<>&FF 9630 SYS "Wimp_SetMode",mode 9640 OSCLI("FX 15,0") 9650ELSE 9660 IF FileType=&DE2 THEN 9670 IF FNEnsureXarc THEN 9680 SYS "OS_Byte",135 TO ,,mode 9690 OSCLI("XarcLoad "+FileName$):OFF 9700 REPEAT 9710 SYS "OS_Byte",121,0 TO ,A 9720 UNTIL A<>&FF 9730 SYS "Wimp_SetMode",mode 9740 OSCLI("FX 15,0") 9750 ELSE 9760 ScreenloadError=1 9770 ENDIF 9780 ELSE 9790 ScreenloadError=2 9800 ENDIF 9810ENDIF 9820=ScreenloadError 9830: 9840DEF FNEnsureXarc 9850*Set Xarc$Present 1 9860*RMEnsure Xarc 0 Set Xarc$Present 0 9870SYS "OS_ReadVarVal","Xarc$Present",Block,256 9880*UnSet Xarc$Present 9890IF Block?0=ASC("1") THEN =TRUE 9900=FALSE 9910: 9920DEF PROCLocateCaret 9930REM Is caret active? (i.e. an input focus) 9940SYS "Wimp_GetCaretPosition",,Caret 9950IF Caret!0<0 THEN VDU 7:ENDPROC 9960REM Yes, so open its window at the front. 9970Block!0=Caret!0 9980SYS "Wimp_GetWindowState",,Block 9990ScrollH=0:ScrollV=0 10000REM Calculate if we need to send a scroll request: 10010IF Caret!8>((Block!12-Block!4)+Block!20) THEN 10020 ScrollH=1+((Caret!8-((Block!12-Block!4)+Block!20)) DIV (Block!12-Block!4)) 10030ELSE 10040 IF Caret!8<Block!20 THEN ScrollH=-1-((Block!20-Caret!8) DIV (Block!12-Block!4)) 10050ENDIF 10060IF (Caret!12)+((Caret?16+256*Caret?17)/2)<((Block!8-Block!16)+Block!24) THEN 10070 ScrollV=-1-((((Caret!12)+((Caret?16+256*Caret?17)/2))-((Block!8-Block!16)+Block!24)) DIV (Block!8-Block!16)) 10080ELSE 10090 IF (Caret!12)+((Caret?16+256*Caret?17)/2)>Block!24 THEN ScrollV=1+((Block!24-((Caret!12)+((Caret?16+256*Caret?17)/2))) DIV (Block!8-Block!16)) 10100ENDIF 10110Block!28=-1:REM Window to top 10120IF ScrollH<>0 THEN Block!20=Block!20+(ScrollH*(Block!12-Block!4)) 10130IF ScrollV<>0 THEN Block!24=Block!24+(ScrollV*(Block!16-Block!8)) 10140SYS "Wimp_SendMessage",2,Block,Block!0 10150SYS "Wimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 10160REM The set caret line above is included in case it helps the task to update 10170REM its window correctly (e.g. for tasks with compound windows). 10180REM Is caret present in input focus window? :- 10190IF (Caret!4=-1 AND Caret!8=0 AND Caret!12=0) THEN Zooming=FALSE:ELSE Zooming=TRUE:polltime%=0:REM Don't pause 10200ENDPROC 10210: 10220DEF PROCZoomPointer 10230REM Read caret and pointer positions, then unlink pointer: 10240Xpixels=FNModeInfo("XPixels",-1):Ypixels=FNModeInfo("YPixels",-1) 10250XEigFactor=FNModeInfo("XEigFactor",-1):YEigFactor=FNModeInfo("YEigFactor",-1) 10260SYS "Wimp_GetCaretPosition",,Caret 10270Block!0=Caret!0 10280SYS "Wimp_GetWindowState",,Block 10290CX=(Block!4+(Caret!8-Block!20))+(2*2^XEigFactor) 10300CY=(Block!16+(Caret!12-Block!24))+((Caret?16+256*Caret?17)/2) 10310IF CX<0 THEN CX=0 10320IF CX<Block!4 THEN CX=Block!4 10330IF CX>(Xpixels-1)*(2^XEigFactor) THEN CX=Xpixels*(2^XEigFactor) 10340IF CX>Block!12 THEN CX=Block!12 10350IF CY<0 THEN CY=0 10360IF CY<Block!8 THEN CY=Block!8 10370IF CY>(Ypixels-1)*(2^YEigFactor) THEN CY=Ypixels*(2^YEigFactor) 10380IF CY>Block!16 THEN CY=Block!16 10390Block!0=6 10400SYS "OS_Word",21,Block 10410MX=Block?1+256*Block?2 10420MY=Block?3+256*Block?4 10430SYS "OS_Byte",106,&81 10440REM Move the pointer to the caret position (centre right of the stem): 10450IF ABS(MX-CX)>ABS(MY-CY) THEN 10460 X=1 10470 T=ABS(MX-CX) 10480 IF (MX-CX)=0 THEN T=ABS(MY-CY):X=0:Y=T:ELSE Y=ABS(MY-CY)/T 10490ELSE 10500 Y=1 10510 T=ABS(MY-CY) 10520 IF (MY-CY)=0 THEN T=ABS(MX-CX):Y=0:X=T:ELSE X=ABS(MX-CX)/T 10530ENDIF 10540IF MX-CX<0 THEN X=-X 10550IF MY-CY<0 THEN Y=-Y 10560Block?0=5 10570FOR N=1 TO T 10580 MX-=X:MY-=Y 10590 IF MX<0 THEN MX=0:X=0 10600 IF MX>(Xpixels-1)*(2^XEigFactor) THEN MX=Xpixels*(2^XEigFactor):X=0 10610 IF MY<0 THEN MY=0:Y=0 10620 IF MY>(Ypixels-1)*(2^YEigFactor) THEN MY=Ypixels*(2^YEigFactor):Y=0 10630 Block?2=MX DIV 256:Block?1=MX MOD 256 10640 Block?4=MY DIV 256:Block?3=MY MOD 256 10650 SYS "OS_Word",21,Block 10660NEXT 10670Block?2=CX DIV 256:Block?1=CX MOD 256 10680Block?4=CY DIV 256:Block?3=CY MOD 256 10690SYS "OS_Word",21,Block 10700Block?0=3:SYS "OS_Word",21,Block 10710REM Rejoin mouse and pointer 10720SYS "OS_Byte",106,1 10730Zoom=FALSE 10740ENDPROC 10750: 10760DEF PROCFlashCaret 10770SYS "Wimp_GetCaretPosition",,Caret 10780FlashState=NOT FlashState 10790Caret!16=(Caret!16 AND NOT (1<<25)) EOR ((-FlashState)<<25) 10800SYS "XWimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 10810REM The X in the line above is important. 10820polltime%+=FlashPeriod(-FlashState)*10 10830ENDPROC 10840: 10850DEF FNReadMaxUtils 10851LOCAL ERROR 10852ON ERROR LOCAL RESTORE ERROR:=0:REM In case 'Utilities' doesn't exist. 10860REM This procedure finds out how many applications there are in the Utilities 10861REM directory. 10870Offset=0:Counter=0 10880REPEAT 10890 Block!16=0:REM Clear this manually since OS_GBPB doesn't, and we may get a wrong result 10900 SYS "OS_GBPB",10,"<OmniDesk$Dir>.Utilities",Block,1,Offset,256,"*" TO ,,,,Offset 10910 IF (Block!16=2) AND (Block?20=ASC"!") THEN Counter+=1:REM Application directory found 10920UNTIL Offset=-1 10930=Counter 10940: 10950DEF PROCScanUtils 10960LOCAL ERROR 10970ON ERROR LOCAL RESTORE ERROR:ENDPROC:REM In case 'Utilities' doesn't exist. 10980REM This procedure catalogues the utilities into a buffer ready for 10981REM auto-starting. 10990REM Unfortunately, we can't leave all the work to OS_GBPB, since it won't 11000REM distinguish between application directories and files beginning with "!". 11010Offset=0:BufferOffset=0 11020REPEAT 11030 Block!16=0:REM Clear this manually since OS_GBPB doesn't, and we may get a wrong result 11040 SYS "OS_GBPB",10,"<OmniDesk$Dir>.Utilities",Block,1,Offset,256,"*" TO ,,,,Offset 11050 IF (Block!16=2) AND (Block?20=ASC"!") THEN 11060 REM Application directory found 11070 N=20:WHILE Block?N>=32:N+=1:ENDWHILE:Block?N=13 11080 $(UtilListBuffer+BufferOffset)=$(Block+20):BufferOffset+=LEN($(Block+20))+1 11090 ENDIF 11100UNTIL Offset=-1 11110ENDPROC 11120: 11130DEF PROCAddLineToPrefs(Title$) 11140REM Amend work area size and size of bounding icons within Prefs: 11150Block!0=0:Block!4=-616-(48*UtilitiesKnown):Block!8=812:Block!12=0 11160SYS "Wimp_SetExtent",Prefs,Block 11170FOR N=13 TO 20 STEP 7 11180 Block!0=Prefs:Block!4=N:SYS "Wimp_GetIconState",,Block 11190 Block!12-=48:SYS "Wimp_DeleteIcon",,Block 11200 Block!4=Prefs:SYS "Wimp_CreateIcon",,Block+4 11210NEXT 11220REM Now create extra rows of icons in Prefs. 11230REM We just copy the icons from the row above, using new indirected space. 11240REM The first extra icon created will have a handle of 36. 11250FOR N=0 TO 4 11260 Block!0=Prefs:Block!4=(5*(UtilitiesKnown-1))+N+31:SYS "Wimp_GetIconState",,Block 11270 Block!12-=48:Block!20-=48:REM Copy icon down one row 11280 CASE N OF 11290 WHEN 0:$(ExtraPrefsVal+PrefsValPointer)=$(Block!32) 11300 Block!32=ExtraPrefsVal+PrefsValPointer 11310 PrefsValPointer+=14 11320 WHEN 1:$(ExtraPrefsInd+PrefsIndPointer)=Title$+CHR$13 11330 Block!28=ExtraPrefsInd+PrefsIndPointer 11340 PrefsIndPointer+=20 11350 OTHERWISE $(ExtraPrefsVal+PrefsValPointer)=$(Block!32) 11360 Block!32=ExtraPrefsVal+PrefsValPointer 11370 Block!24=((Block!24) AND NOT (1<<21)) EOR (0<<21):REM Unselected 11380 PrefsValPointer+=18 11390 ENDCASE 11400 Block!4=Prefs:SYS "Wimp_CreateIcon",,Block+4 11410NEXT 11420U%=SlotEnd+(188*(UtilitiesKnown-1)) 11430 : 11440IF FNFoundInSettings($(U%+24)) THEN PROCUpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36,TRUE):SelectedLoadSwitches$+="Y":ELSE PROCUpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36,FALSE):SelectedLoadSwitches$+="N" 11450REM The above line turns on the option switch according to whether the utility was found in the Settings file. 11460 : 11470IF $(U%+112)="" THEN PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+39,TRUE):ELSE PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+39,FALSE) 11480REM The above line shades out the dragging radio icon if no dragging help text is supplied. Lack of help text implies that there is no dragging action. 11490 : 11500IF ($(U%+35)="") AND ($(U%+112)="") THEN 11510 PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+38,TRUE):PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+40,TRUE) 11520ELSE 11530 PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+38,FALSE):PROCUpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+40,FALSE) 11540ENDIF 11550REM The above lines shade out the Select and Adjust radio icons if (a) no SELECT help text is supplied and (b) no dragging help text is supplied. This renders the utility useless, since it does not respond to either action. 11560 : 11570IF Title$=SELECTUtil$ THEN 11580 SELECTUtil=UtilitiesKnown+2:PROCUpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+2,TRUE) 11590 SELECTUtil$=$(U%+4):SELECTHelp$=$(U%+35) 11600ENDIF 11610IF Title$=DRAGUtil$ THEN 11620 DRAGUtil=UtilitiesKnown+2:PROCUpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+3,TRUE) 11630 DRAGUtil$=$(U%+4):DRAGHelp$=$(U%+112) 11640ENDIF 11650IF Title$=ADJUSTUtil$ THEN 11660 ADJUSTUtil=UtilitiesKnown+2:PROCUpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+4,TRUE) 11670 ADJUSTUtil$=$(U%+4):ADJUSTHelp$=$(U%+35) 11680ENDIF 11690 : 11700IF UtilitiesKnown=1 THEN 11710 FOR N=21 TO 31 STEP 5 11720 PROCUpdateSelectedFlag(Prefs,N,TRUE) 11730 Block!0=Prefs:Block!4=N:SYS "Wimp_GetIconState",,Block 11740 Block!8=0:Block!12=(15<<12):SYS "Wimp_SetIconState",,Block 11750 REM Change button type to Never and fix these buttons ON, since 11760 REM the first three utilities are provided by OmniDesk itself. 11770 NEXT 11780 REM Grey out the inappropriate dragging radio icons 11790 PROCUpdateShadedFlag(Prefs,24,TRUE) 11800 PROCUpdateShadedFlag(Prefs,29,TRUE) 11810ENDIF 11820ENDPROC 11830: 11840DEF PROCStartUpTask 11850IF MaxUtils=0 THEN StartingUp=FALSE:PROCInstallIBIcon:ENDPROC 11860FileName$=$(UtilListBuffer+UtilListPointer) 11870UtilListPointer+=LEN(FileName$)+1 11880StartUpCounter+=1 11890IF FNFoundInSettings(FileName$) THEN 11900 SYS "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+FileName$+" -OmniDesk"+STR$(Task) 11910ELSE 11920 SYS "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+FileName$+" -Startup-OmniDesk"+STR$(Task) 11930ENDIF 11940IF StartUpCounter=MaxUtils THEN StartingUp=FALSE:PROCInstallIBIcon 11950ENDPROC 11960: 11970DEF FNFoundInSettings(F$) 11980LOCAL ERROR 11990ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM Error reading file 12000Data=OPENIN ("<OmniDesk$Dir>.Settings") 12010FOR N=1 TO 6:Dummy$=FNNextEntry:NEXT:REM Bypass first six entries 12020REPEAT 12030 A$=FNNextEntry 12040UNTIL (A$=F$) OR EOF#Data 12050CLOSE#Data 12060IF A$<>F$ THEN =FALSE 12070=TRUE 12080: 12090DEF PROCStartOrQuitPrefsTask 12100IF ProcessingPrefsCounter=UtilitiesKnown THEN PROCFinishProcessingPrefs:ENDPROC 12110U%=SlotEnd+(188*(ProcessingPrefsCounter)) 12120PROCUpdateIcon(Loading,4,$(U%+4)) 12130IF FNSelectedState(Prefs,(5*ProcessingPrefsCounter)+36) THEN 12140 REM Turned ON in Prefs 12150 IF U%!0=-1 THEN 12160 REM Not loaded already 12170 REM Load it permanently. 12180 SYS "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -OmniDesk"+STR$(Task) 12190 ELSE 12200 REM Loaded already 12210 REM Tell it to be permanent in case it's currently transient. 12220 Block!0=20:Block!12=0:Block!16=UtilReside:REM Make permanent 12230 SYS "Wimp_SendMessage",17,Block,U%!0 12240 ENDIF 12250ELSE 12260 REM Turned OFF in Prefs 12270 IF U%!0=-1 THEN 12280 REM Not loaded already 12290 REM Don't need to do anything. 12300 ELSE 12310 REM Loaded already 12320 REM Make it quit. 12330 Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task 12340 SYS "Wimp_SendMessage",17,Block,U%!0 12350 U%!0=-1:REM Record it as quit 12360 ENDIF 12370ENDIF 12380ProcessingPrefsCounter+=1 12390ENDPROC 12400: 12410DEF PROCFinishProcessingPrefs 12420ProcessingPrefs=FALSE 12430PROCUpdateShadedFlag(-2,IconBar,FALSE) 12440PROCUpdateIconColour(Prefs,10,7,1) 12450PROCUpdateIconColour(Prefs,11,7,1) 12460IF BufferedStartup>-1 THEN PROCCallUtility(BufferedStartup) 12470BufferedStartup=-1 12480WaitToCloseLoadingWindow=1 12490ENDPROC 12500: 12510DEF PROCDoPrefsOKClick 12520Flashing=FNSelectedState(Prefs,7) 12530FlashPeriod(0)=FNReadIcon(Prefs,8) 12540FlashPeriod(1)=FNReadIcon(Prefs,9) 12550IF NOT Flashing THEN 12560 SYS "Wimp_GetCaretPosition",,Caret 12570 Caret!16=(Caret!16 AND NOT (1<<25)) EOR (0<<25) 12580 SYS "Wimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 12590ENDIF 12600SelectedLoadSwitches$="YYY" 12610IF UtilitiesKnown>0 THEN 12620 FOR N=1 TO UtilitiesKnown 12630 IF FNSelectedState(Prefs,31+(5*N)) THEN SelectedLoadSwitches$+="Y":ELSE SelectedLoadSwitches$+="N" 12640 NEXT 12650ENDIF 12660PROCWorkOutRadioPrefs 12670ProcessingPrefs=TRUE:ProcessingPrefsCounter=0 12680REM This starts up the multi-tasking switching on/off 12690REM of tasks as specified by the Prefs option buttons. 12700 : 12710PROCUpdateShadedFlag(-2,IconBar,TRUE) 12720PROCUpdateIconColour(Prefs,10,3,1) 12730PROCUpdateIconColour(Prefs,11,3,1) 12740PROCOpenLoadingWindow("Scanning ...") 12750 : 12760REM If OmniDesk is flashing the caret whilst processing the preferences, the 12770REM processing takes a very significantly longer time than if the caret were 12780REM not being flashed (as OmniDesk can only deal with one utility per caret 12790REM flash). Therefore, under those circumstances we need to shade the icon- 12800REM bar icon so that the user can't upset the process. Actually, the code is 12810REM built into the program so that if the icon is NOT shaded, clicks (other 12820REM than MENU) will be ignored until processing has finished, whereupon the 12830REM last click will be honoured. However, this is a bit sluggish in practice, 12840REM so I have made the icon grey out whenever OK is clicked in Prefs. 12850ENDPROC 12860: 12870DEF PROCUpdatePrefsWindowBeforeOpening 12880PROCUpdateSelectedFlag(Prefs,7,Flashing) 12890PROCUpdateIcon(Prefs,8,STR$(FlashPeriod(0))) 12900PROCUpdateIcon(Prefs,9,STR$(FlashPeriod(1))) 12910FOR N=1 TO LEN(SelectedLoadSwitches$) 12920 PROCUpdateSelectedFlag(Prefs,21+(5*(N-1)),FALSE) 12930 IF MID$(SelectedLoadSwitches$,N,1)="Y" THEN PROCUpdateSelectedFlag(Prefs,21+(5*(N-1)),TRUE) 12940NEXT 12950FOR N=0 TO (UtilitiesKnown+3) 12960 IF N=SELECTUtil THEN PROCUpdateSelectedFlag(Prefs,21+(5*N)+2,TRUE) ELSE PROCUpdateSelectedFlag(Prefs,21+(5*N)+2,FALSE) 12970 IF N=DRAGUtil THEN PROCUpdateSelectedFlag(Prefs,21+(5*N)+3,TRUE) ELSE PROCUpdateSelectedFlag(Prefs,21+(5*N)+3,FALSE) 12980 IF N=ADJUSTUtil THEN PROCUpdateSelectedFlag(Prefs,21+(5*N)+4,TRUE) ELSE PROCUpdateSelectedFlag(Prefs,21+(5*N)+4,FALSE) 12990NEXT 13000ENDPROC 13010: 13020DEF PROCWorkOutRadioPrefs 13030N=0:SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 13040REPEAT 13050 IF FNSelectedState(Prefs,(5*N)+21+2) THEN SELECTUtil=N 13060 IF FNSelectedState(Prefs,(5*N)+21+3) THEN DRAGUtil=N 13070 IF FNSelectedState(Prefs,(5*N)+21+4) THEN ADJUSTUtil=N 13080 N+=1 13090UNTIL N=(UtilitiesKnown+3) 13100CASE SELECTUtil OF 13110 WHEN -1:SELECTUtil$="":SELECTHelp$="":REM Off 13120 WHEN 0:SELECTUtil$="Locate caret":SELECTHelp$="locate the caret." 13130 WHEN 1:SELECTUtil$="Turn caret off":SELECTHelp$="turn the caret off." 13140 WHEN 2:SELECTUtil$="Display sprite":SELECTHelp$="open a window to accept a sprite file for display." 13150 OTHERWISE 13160 U%=SlotEnd+(188*(SELECTUtil-3)) 13170 SELECTUtil$=$(U%+4):SELECTHelp$=$(U%+35) 13180 IF SELECTHelp$="" THEN SELECTHelp$="open a window to accept a dragged file." 13190ENDCASE 13200CASE ADJUSTUtil OF 13210 WHEN -1:ADJUSTUtil$="":ADJUSTHelp$="":REM Off 13220 WHEN 0:ADJUSTUtil$="Locate caret":ADJUSTHelp$="locate the caret." 13230 WHEN 1:ADJUSTUtil$="Turn caret off":ADJUSTHelp$="turn the caret off." 13240 WHEN 2:ADJUSTUtil$="Display sprite":ADJUSTHelp$="open a window to accept a sprite file for display." 13250 OTHERWISE 13260 U%=SlotEnd+(188*(ADJUSTUtil-3)) 13270 ADJUSTUtil$=$(U%+4):ADJUSTHelp$=$(U%+35) 13280 IF ADJUSTHelp$="" THEN ADJUSTHelp$="open a window to accept a dragged file." 13290ENDCASE 13300CASE DRAGUtil OF 13310 WHEN -1,0,1:DRAGUtil$="":DRAGHelp$="":REM Off 13320 WHEN 2:DRAGUtil$="Display sprite":DRAGHelp$="Drag a sprite here to display it on the screen." 13330 OTHERWISE 13340 U%=SlotEnd+(188*(DRAGUtil-3)) 13350 DRAGUtil$=$(U%+4):DRAGHelp$=$(U%+112) 13360ENDCASE 13370ENDPROC 13380: 13390DEF FNSaveSettings 13400LOCAL ERROR 13410ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM Error writing file 13420 : 13430 Data=OPENOUT ("<OmniDesk$Dir>.Settings") 13440 BPUT#Data,"| Flashing caret (-1 for TRUE, 0 for FALSE):" 13450 BPUT#Data,STR$(FNSelectedState(Prefs,7)) 13460 BPUT#Data,"| Caret flash on and off periods (in 10ths of a second):" 13470 BPUT#Data,FNReadIconStr(Prefs,8) 13480 BPUT#Data,FNReadIconStr(Prefs,9) 13490 BPUT#Data,"| Utility to activate with SELECT click on icon-bar icon:" 13500 BPUT#Data,SELECTUtil$ 13510 BPUT#Data,"| Utility to activate with ADJUST click on icon-bar icon:" 13520 BPUT#Data,ADJUSTUtil$ 13530 BPUT#Data,"| Utility to activate when file dragged to icon-bar icon:" 13540 BPUT#Data,DRAGUtil$ 13550 BPUT#Data,"| Utilities to auto-load:" 13560 IF UtilitiesKnown<>0 THEN 13570 N=0:REPEAT 13580 U%=SlotEnd+(188*N) 13590 N+=1 13600 IF FNSelectedState(Prefs,(5*N)+31) THEN BPUT#Data,$(U%+24) 13610 UNTIL N=UtilitiesKnown 13620 ENDIF 13630 CLOSE#Data 13640 OSCLI("Settype <OmniDesk$Dir>.Settings Text") 13650 : 13660=TRUE 13670: 13680DEF FNLoadSettings 13690LOCAL ERROR 13700ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM 'Settings' file is damaged or missing 13710 : 13720 Data=OPENIN "<OmniDesk$Dir>.Settings" 13730 PROCUpdateSelectedFlag(Prefs,7,VAL(FNNextEntry)) 13740 PROCUpdateIcon(Prefs,8,FNNextEntry) 13750 PROCUpdateIcon(Prefs,9,FNNextEntry) 13760 CLOSE#Data 13770 : 13780 Flashing=FNSelectedState(Prefs,7) 13790 FlashPeriod(0)=FNReadIcon(Prefs,8) 13800 FlashPeriod(1)=FNReadIcon(Prefs,9) 13810 : 13820=TRUE 13830: 13840DEF FNFindIBClickUtils 13850LOCAL ERROR 13860ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM 'Settings' file is damaged or missing 13870 : 13880 Data=OPENIN "<OmniDesk$Dir>.Settings" 13890 FOR N=1 TO 3:A$=FNNextEntry:NEXT:REM Ignore first three entries 13900 SELECTUtil$=FNNextEntry 13910 ADJUSTUtil$=FNNextEntry 13920 DRAGUtil$=FNNextEntry 13930 CLOSE#Data 13940 : 13950 REM These are the in-built options; the rest 13960 REM will be catered for as the tasks start up: 13970 CASE SELECTUtil$ OF 13980 WHEN "Locate caret":SELECTUtil=0:PROCUpdateSelectedFlag(Prefs,23,TRUE):SELECTHelp$="locate the caret." 13990 WHEN "Turn caret off":SELECTUtil=1:PROCUpdateSelectedFlag(Prefs,28,TRUE):SELECTHelp$="turn the caret off." 14000 WHEN "Display sprite":SELECTUtil=2:PROCUpdateSelectedFlag(Prefs,33,TRUE):SELECTHelp$="open a window to accept a sprite file for display." 14010 ENDCASE 14020 CASE ADJUSTUtil$ OF 14030 WHEN "Locate caret":ADJUSTUtil=0:PROCUpdateSelectedFlag(Prefs,25,TRUE):ADJUSTHelp$="locate the caret." 14040 WHEN "Turn caret off":ADJUSTUtil=1:PROCUpdateSelectedFlag(Prefs,30,TRUE):ADJUSTHelp$="turn the caret off." 14050 WHEN "Display sprite":ADJUSTUtil=2:PROCUpdateSelectedFlag(Prefs,35,TRUE):ADJUSTHelp$="open a window to accept a sprite file for display." 14060 ENDCASE 14070 IF DRAGUtil$="Display sprite" THEN DRAGUtil=2:PROCUpdateSelectedFlag(Prefs,34,TRUE):DRAGHelp$="Drag a sprite here to display it on the screen." 14080 : 14090=TRUE 14100: 14110DEF PROCDefaultSettings 14120SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 14130SELECTUtil$="":ADJUSTUtil$="":DRAGUtil$="" 14140SELECTHelp$="":ADJUSTHelp$="":DRAGHelp$="" 14150Flashing=FALSE:FlashPeriod(0)=6:FlashPeriod(1)=3 14160PROCUpdateSelectedFlag(Prefs,7,Flashing) 14170PROCUpdateIcon(Prefs,8,STR$(FlashPeriod(0))) 14180PROCUpdateIcon(Prefs,9,STR$(FlashPeriod(1))) 14190ENDPROC 14200: 14210DEF PROCInitVars 14220Zooming=FALSE:FlashState=TRUE:SaveError=FALSE:ReadError=FALSE 14230DIM FlashPeriod(1) 14240UtilitiesKnown=0:UtilListPointer=0 14250PrefsValPointer=0:PrefsIndPointer=0 14260StartingUp=TRUE:StartUpCounter=0 14270 : 14280ProcessingPrefs=FALSE:ProcessingPrefsCounter=0 14290BufferedStartup=-1 14300REM If the user clicks the OmniDesk icon or chooses a utility from the menu 14310REM whilst the starting-up or quitting of tasks due to an OK click in the 14320REM Prefs window is taking place, we need to ignore the click until this 14330REM processing has finished. BufferedStartup records which utility is wanted. 14340 : 14350DropWindowUtil=-1 14360 : 14370SelectedLoadSwitches$="YYY":REM The first three utilities always on. 14380REM We keep a string record of which switches are on in order to update them 14390REM when the Prefs window is opened. 14400 : 14410IF MaxUtils=0 THEN 14420 REM Must update the Prefs window 14430 FOR N=21 TO 31 STEP 5 14440 PROCUpdateSelectedFlag(Prefs,N,TRUE) 14450 Block!0=Prefs:Block!4=N:SYS "Wimp_GetIconState",,Block 14460 Block!8=0:Block!12=(15<<12):SYS "Wimp_SetIconState",,Block 14470 REM Change button type to Never and fix these buttons ON, since 14480 REM the first three utilities are provided by OmniDesk itself. 14490 NEXT 14500 REM Grey out the inappropriate dragging radio icons 14510 PROCUpdateShadedFlag(Prefs,24,TRUE) 14520 PROCUpdateShadedFlag(Prefs,29,TRUE) 14530ENDIF 14540ENDPROC
� >!RunImage for OmniDesk : (VersionNumber$="1�07 (31 July 1993)" (*Done=�:DoModeChange=�:UtilitiesKnown=0 2: <^� Read size of sprite file and load it. We need to DIM 16 bytes more than the file's size. FCș "OS_FSControl",28,"<OmniDesk$Dir>.Resources.Sprites" � ,,len P�� Sprites len+16:!Sprites=len+16:Sprites!4=0:Sprites!8=16:Sprites!12=16:ș "OS_SpriteOp",256+10,Sprites,"<OmniDesk$Dir>.Resources.Sprites" Z: d$� Block 256,MenuHelp 16,Caret 24 n: x*� Messages used by the OmniDesk suite: �_UtilDeclare=&825C0:UtilOpen=&825C1:UtilQuitting=&825C2:UtilReside=&825C3:UtilAckLoad=&825C4 �+� These are official Acorn allocations. �: �MaxUtils=�ReadMaxUtils �: �0IndMenuMax=512:� IndirectMenuText IndMenuMax �G� Templates 1760,InfoInd 274,PrefsInd 640,DropInd 103,LoadingInd 79 �� IBMenu 124 �v� UtilsMenu 28+(3*24)+(MaxUtils*24),UtilListBuffer 11*MaxUtils,ExtraPrefsInd 20*MaxUtils,ExtraPrefsVal 68*MaxUtils �: �o� � Block!0=�:$(Block+4)=�$+" (internal error code "+�(�)+")"+�0:ș "Wimp_ReportError",Block,1,"OmniDesk":� �: �*Set OmniDesk$RISCOS 3 6*RMEnsure UtilityModule 3.00 Set OmniDesk$RISCOS 2 Yș "XOS_ReadVarVal","OmniDesk$RISCOS",Block,256,0,0 � ,,len:Block?len=13:wimp$=$Block � wimp$<>"3" � wimp$="2" "*Unset OmniDesk$RISCOS ,]ș "XOS_ReadVarVal","OmniDesk$Dir",Block,256,0,0 � ,,len:Block?len=13:OurFileName$=$Block 68N=-1:�:N+=1:� �OurFileName$,�(OurFileName$)-N,1)="." @OOurPathName$=�OurFileName$,�(OurFileName$)-N):OurFileName$=�OurFileName$,N) J: T� wimp$="3" � ^ � messagelist% 36 h< messagelist%!0=UtilQuitting:messagelist%!4=UtilDeclare rL messagelist%!8=UtilAckLoad:messagelist%!12=&400C1:messagelist%!16=&502 |N messagelist%!20=10:messagelist%!24=3:messagelist%!28=1:messagelist%!32=0 �L ș "Wimp_Initialise",300,&4B534154,"OmniDesk",messagelist% � wimp,Task �� �? ș "Wimp_Initialise",200,&4B534154,"OmniDesk" � wimp,Task �� �: �"ș "Interface_Initialise",Task �: �@ș "Wimp_OpenTemplate",,"<OmniDesk$Dir>.Resources.Templates" �Zș "Wimp_LoadTemplate",,Templates,InfoInd,InfoInd+274,-1,"Info",0:Templates!64=Sprites �,ș "Wimp_CreateWindow",,Templates � Info �Zș "Wimp_LoadTemplate",,Templates,DropInd,DropInd+104,-1,"Drop",0:Templates!64=Sprites �,ș "Wimp_CreateWindow",,Templates � Drop �]ș "Wimp_LoadTemplate",,Templates,PrefsInd,PrefsInd+642,-1,"Prefs",0:Templates!64=Sprites -ș "Wimp_CreateWindow",,Templates � Prefs bș "Wimp_LoadTemplate",,Templates,LoadingInd,LoadingInd+79,-1,"Loading",0:Templates!64=Sprites /ș "Wimp_CreateWindow",,Templates � Loading &ș "Wimp_CloseTemplate" 0: :5� Make sure none of the radio icons are selected: D� N=23 � 33 � 5 N � M=0 � 2 X( �UpdateSelectedFlag(Prefs,N+M,�) b � l� v: �%�OpenLoadingWindow("Loading ...") �: �+SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 �.SELECTUtil$="":ADJUSTUtil$="":DRAGUtil$="" �.SELECTHelp$="":ADJUSTHelp$="":DRAGHelp$="" �!ReadError=� �FindIBClickUtils �Y� We need to load these details before the rest of the contents of the Settings file. �A� Therefore there is another call to read the settings later. �: ��ScanUtils �: � �InitVars ��BuildMenus pHotKeys=�CreateWindow(0,0,0,0,0,0,-2,%10000000000000000001000001010000,&FF,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"") �Open(HotKeys,�,0,0) : �Initialise *: 4ReadError=�(�LoadSettings) >: H� � �Error R�� ReadError � ReadError=�:�DefaultSettings:� 9999,"An error occurred whilst reading the settings file. Default settings will therefore be used." \!�("Set OmniDesk$Running Yes") f)ș "OS_ReadMonotonicTime" � polltime% p: z� Main program loop �� �@ ș "Wimp_PollIdle",%1100000110000,Block,polltime% � Reason �& ș "Interface_Poll",Reason,,Task �4 ș "Interface_PreProcessKey",Reason,Block,Task � Ȏ Reason � � � 0 : �TaskIdle � � 1 : �Redraw �) � 2 : ș "Wimp_OpenWindow",,Block �* � 3 : ș "Wimp_CloseWindow",,Block �3 � Block!0=Drop � DropWindowUtil=-1 � � 6 : �MouseButton � � 8 : �KeyPressed � � 9 : �DecodeMenu $ � 17,18,19 : �RecieveMessage � � Done $=Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task .Nș "Wimp_SendMessage",17,Block,0:� Broadcast Quit to any loaded utilities. 8!ș "Interface_CloseDown",Task B&ș "Wimp_CloseDown",Task,&4B534154 L�("UnSet OmniDesk$Running") V� `: j� �Error tClick=0:Block!0=�:Ȏ � � ~ � 9999:� Custom error � $(Block+4)=�$+�0 �= ș "Wimp_ReportError",Block,17,"Notice from OmniDesk" � �v $(Block+4)=�$+" (internal error code "+Þ+"). Click on OK to continue, or Cancel to terminate the program."+�0 �9 ș "Wimp_ReportError",Block,3,"OmniDesk" � ,Click �� �j� Click=2 � Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task:ș "Wimp_SendMessage",17,Block,0 �n� Click=2 � ș "Interface_CloseDown",Task:ș "Wimp_CloseDown",Task,&4B534154:�("UnSet OmniDesk$Running"):� �� �: �.� �Open(WindowHandle,TopOfStack,across,up) �Block!0=WindowHandle #ș "Wimp_GetWindowState",,Block J� (across<>-1) � (across<>-1) � �DecideWindowPosition(Block,across,up) � TopOfStack � Block!28=-1 ș "Wimp_OpenWindow",,Block (� 2: <� �Close(WindowHandle) FBlock!0=WindowHandle P#ș "Wimp_GetWindowState",,Block Z ș "Wimp_CloseWindow",,Block d� n: x,� �DecideWindowPosition(Block,across,up) �L� Use of this procedure lets you open windows on an invisible grid which �I� automatically fits itself to the screen mode in use. There are five �J� positions across (left, mid-left, centre, mid-right, right) and five �G� positions up (bottom of screen, above icon-bar, centre of screen, �+� centre top of screen, top of screen). � : �CXpixels=�ModeInfo("XPixels",-1):Ypixels=�ModeInfo("YPixels",-1) �OXEigFactor=�ModeInfo("XEigFactor",-1):YEigFactor=�ModeInfo("YEigFactor",-1) � : �8top=Block!16:right=Block!12:bot=Block!8:left=Block!4 �Aș "Wimp_OpenWindow",,Block:ș "Wimp_GetWindowOutline",,Block �&TB=((Block!16)-top)/(2^YEigFactor) �(VS=((Block!12)-right)/(2^XEigFactor) %HS=(bot-(Block!8))/(2^YEigFactor) &LP=(left-(Block!4))/(2^XEigFactor) K� LP is Left Pixel: normally present, but not if window is transparent. "%width=(right-left)/(2^XEigFactor) ,#height=(top-bot)/(2^YEigFactor) 6Ȏ across � @ � 0:x=LP J, � 1:x=LP+((Xpixels+1)-(width+LP+VS))/4 T, � 2:x=LP+((Xpixels+1)-(width+LP+VS))/2 ^2 � 3:x=LP+(3*(((Xpixels+1)-(width+LP+VS))/4)) h" � 4:x=(Xpixels+1)-(width+VS) r� |Ȏ up � � � 0:y=HS �# � 1:y=HS+(132/(2^YEigFactor)) �- � 2:y=HS+((Ypixels+1)-(height+TB+HS))/2 �3 � 3:y=HS+(3*(((Ypixels+1)-(height+TB+HS))/4)) �# � 4:y=(Ypixels+1)-(height+TB) �� �(� Above coordinates position window. �(� Now convert to screen coordinates: �)x=x*(2^XEigFactor):y=y*(2^YEigFactor) �;width=width*(2^XEigFactor):height=height*(2^YEigFactor) �Block!12=x+width:Block!4=x �Block!16=y+height:Block!8=y �� : O� ------------------------------------------------------------------------- � Wimp poll routines &O� ------------------------------------------------------------------------- 0: :� �TaskIdle DM� DoModeChange � � �OpenState(Prefs) � �Open(Prefs,�,XPosition,YPosition) N)ș "OS_ReadMonotonicTime" � polltime% X&� Zooming � Zooming=�:�ZoomPointer b� Flashing � �FlashCaret l� StartingUp � �StartUpTask v-� ProcessingPrefs � �StartOrQuitPrefsTask �m� WaitToCloseLoadingWindow>0 � WaitToCloseLoadingWindow-=1:� WaitToCloseLoadingWindow=0 � �Close(Loading) �w� (� Flashing) � (� StartingUp) � (� ProcessingPrefs) � polltime%+=100:� Do a Wimp_Poll approximately once a second �� �: � � �Redraw �� DoModeChange � �d � Re-opening windows need an extra wimp_poll to happen after the mode change in order to work: �. � �OpenState(Prefs) � �Open(Prefs,�,4,1) �2 � �OpenState(Loading) � �Open(Loading,�,2,2) � DoModeChange=� �� �(ș "Wimp_RedrawWindow",,Block � flag �ȕ flag * ș "Interface_Render3dWindow",,Block * ș "Wimp_GetRectangle",,Block � flag � � *: 4� �RecieveMessage >Ȏ Block!16 � H � 0 : Done=� RG � 1 : � A task is trying to save into OmniDesk by RAM Transfer or \L � <Wimp$Scrap>. We must tell it to use <Wimp$Scrap> so that a fL � utility can pick up the file, but only if a utility (or the p5 � drop window) is ready to receive it. z8 � (DropWindowUtil<>-1) � (DRAGUtil<>-1) � �7 Block!0=60:Block!12=Block!8:Block!16=2 �: Block!36=-1:$(Block+44)="<Wimp$Scrap>"+�0 �7 ș "Wimp_SendMessage",17,Block,Block!4 � � �+ � 3 : � File dragged into application �Z FileName$="":N=44:ȕ ((Block?N)>=32) � (N<256):FileName$+=�(Block?N):N+=1:� �2 FileType=Block!40:FileSize=Block!36 �0 my_ref=Block!8:SenderTask=Block!4 � : � � Block!20=Drop � �1 � File dropped into Drop window. �K �DragToIconBar(DropWindowUtil,FileSize,FileType,FileName$) � � 3 � Block!20=-2 � Block!24=IconBar � 5 � File dropped onto icon-bar icon. G �DragToIconBar(DRAGUtil,FileSize,FileType,FileName$) $ � . � 8- DropWindowUtil=-1:�Close(Drop) B. � 10: � The desktop state is being saved L% �SaveDesktop(Block!20) V � &502 : �Help ` � &400C1 : �ModeChange j' � UtilDeclare : �StoreUtilDetails t' � UtilQuitting : �UtilityQuitting ~Z � UtilAckLoad : � A utility has acknowledged that it has dealt with our drag message �3 Block!12=my_ref:Block!16=4 �U Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+�0 �B ș "Wimp_SendMessage",19,Block,SenderTask �F � FileName$="<Wimp$Scrap>" � �DeleteWimpScrap �� �� �: �� �DeleteWimpScrap �� � �� � � � �:� �<� We may receive try to delete a non-existant Wimp$Scrap �@� file if the receiving task did not recognise the filetype. �("Delete <Wimp$Scrap>") � : � �MouseButton (1MouseX=Block!0:MouseY=Block!4:Buttons=Block!8 2!Window=Block!12:Icon=Block!16 <Ȏ Window � F" � -2:� Icon bar icon clicked P Ȏ Buttons � Z � 1 : � Adjust d$ �CallUtility(ADJUSTUtil) n � 2 : � Menu x9 M%=IBMenu:MenuX=MouseX:MenuY=MouseY:�MakeMenu � � 4 : � Select �$ �CallUtility(SELECTUtil) � � � � Info �c � Icon=9 � � 9999,"OmniDesk supports interactive help via Acorn's Help or Spy applications" � � Prefs � Ȏ � � �8 � (Icon=10) � (Buttons<16) � (Buttons<>2):� OK �! � � ProcessingPrefs � �. ș "Interface_SlabButton",,Block � �DoPrefsOKClick �* � Buttons<>1 � �Close(Prefs) �S Block!8=0:Block!12=Prefs:Block!16=10:ș "Interface_SlabButton",,Block � G � (Icon=11) � (Buttons<16) � (Buttons<>2):� OK: Save settings ! � � ProcessingPrefs � ". ș "Interface_SlabButton",,Block , �DoPrefsOKClick 6' SaveError=� �SaveSettings @* � Buttons<>1 � �Close(Prefs) JS Block!8=0:Block!12=Prefs:Block!16=11:ș "Interface_SlabButton",,Block TX � SaveError � � 9999,"An error occurred whilst writing the settings file." ^ � h[ � (Icon>35) � (Buttons<16) � (Buttons<>2):� One of the expandable area of buttons r! � ((Icon-36) � 5)=1 � |; � One of the utility titles has been clicked: �, � toggle the switch next to it �O �UpdateSelectedFlag(Prefs,Icon-1,�(�SelectedState(Prefs,Icon-1))) � � � � �� �� �: �� �KeyPressed �2Window=Block!0:Icon=Block!4:Character=Block!24 �CXpixels=�ModeInfo("XPixels",-1):Ypixels=�ModeInfo("YPixels",-1) �OXEigFactor=�ModeInfo("XEigFactor",-1):YEigFactor=�ModeInfo("YEigFactor",-1) �Ȏ Window � � � Prefs: Ȏ Character � G � &18E,&19E,&1AE,&1BE,&18F,&19F,&1AF,&1BF,13:� Down,Up,Return % � Character=13 � Icon=9 � &A � If Return is pressed on second icon, set up Block 0A � as appropriate for a SELECT-click, and choose OK: :2 Block!8=4:Block!12=Prefs:Block!16=10 D �MouseButton N � X1 � Set caret to end of current icon: b( � Icon=8 � Icon=9 � Icon=8 l� � Icon=8 � ș "Wimp_SetCaretPosition",Prefs,Icon,,,-1,�(�ReadIconStr(Prefs,8)) � ș "Wimp_SetCaretPosition",Prefs,Icon,,,-1,�(�ReadIconStr(Prefs,9)) v � � �) ș "Wimp_ProcessKey",Block!24 � � � � Ȏ Character � �& � &18C,&19C,&1AC,&1BC:� Left �+ ș "Wimp_GetPointerInfo",,Block �n X=Block!0:Y=Block!4:X-=(Block!24-&18C)/1.6*2^XEigFactor+(2^XEigFactor � Block!24=&18C):� X<0 � X=0 �U Block?0=3:Block?1=X � 256:Block?2=X � 256:Block?3=Y � 256:Block?4=Y � 256 �! ș "OS_Word",21,Block �' � &18D,&19D,&1AD,&1BD:� Right �+ ș "Wimp_GetPointerInfo",,Block �� X=Block!0:Y=Block!4:X+=(Block!24-&18D)/1.6*2^XEigFactor+(2^XEigFactor � Block!24=&18D):� X>(Xpixels*(2^XEigFactor)) � X=(Xpixels*(2^XEigFactor)) U Block?0=3:Block?1=X � 256:Block?2=X � 256:Block?3=Y � 256:Block?4=Y � 256 ! ș "OS_Word",21,Block & � &18E,&19E,&1AE,&1BE:� Down + ș "Wimp_GetPointerInfo",,Block *n X=Block!0:Y=Block!4:Y-=(Block!24-&18E)/1.6*2^YEigFactor+(2^YEigFactor � Block!24=&18E):� Y<0 � Y=0 4U Block?0=3:Block?1=X � 256:Block?2=X � 256:Block?3=Y � 256:Block?4=Y � 256 >! ș "OS_Word",21,Block H$ � &18F,&19F,&1AF,&1BF:� Up R+ ș "Wimp_GetPointerInfo",,Block \� X=Block!0:Y=Block!4:Y+=(Block!24-&18F)/1.6*2^YEigFactor+(2^YEigFactor � Block!24=&18F):� Y>(Ypixels*(2^YEigFactor)) � Y=(Ypixels*(2^YEigFactor)) fU Block?0=3:Block?1=X � 256:Block?2=X � 256:Block?3=Y � 256:Block?4=Y � 256 p! ș "OS_Word",21,Block z �) ș "Wimp_ProcessKey",Block!24 � � �� �� �: �� �DecodeMenu �Sub0=Block!0:Sub1=Block!4 �CloseMenu=� � Ȏ Sub0 � � � 0 �' ș "Wimp_GetPointerInfo",,Block �8 ș "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 � CloseMenu=� � 1 ( � Sub1>=0 � �DecodeUtilitiesMenu � 2 $' �UpdatePrefsWindowBeforeOpening . �Open(Prefs,�,4,1) 8 � 3 B Done=� L� V#ș "Wimp_GetPointerInfo",,Block `3� ((Block!8 � 1)=1) � (� CloseMenu) � �MakeMenu j� t: ~� �DecodeUtilitiesMenu � Ȏ Sub1 � � � 0,1,2:�CallUtility(Sub1) � �! U%=SlotEnd+(188*(Sub1-3)) � �CallUtility(Sub1) �� �� �: �O� ------------------------------------------------------------------------- �� Menu routines �O� ------------------------------------------------------------------------- �: � �BuildMenus I� This procedure should only be visited once, since it contains DIMs. : O� In the menu title strings below, if a "|" character is present it will be (O� replaced by a space under RISC OS 3.1 (or greater), or will terminate the 2O� string under earlier versions of the wimp. This allows the new indirected <F� menu titles to be used (which were introduced with RISC OS 3.1). F : P#IndirectMenuTextOffsetPointer=0 ZN� This points to a pool to be used by all menus for their indirected text. d : nMTitle$="OmniDesk|Suite":� IBMenuTitle �(Title$)+1:$IBMenuTitle=Title$+�13 x M%=IBMenu ��MenuInit(IBMenuTitle) ��MenuItem("Info",2,Info) �&�MenuItem("Utilities",0,UtilsMenu) �%�MenuItem("Preferences ...",2,-1) ��MenuItem("Quit",128,-1) � : �M%=UtilsMenu �NTitle$="Utilities":� UtilsMenuTitle �(Title$)+1:$UtilsMenuTitle=Title$+�13 ��MenuInit(UtilsMenuTitle) ��BuildUtilitiesMenu �� �: �� �BuildUtilitiesMenu P%=UtilsMenu+28 "�MenuItem("Locate caret",0,-1) $�MenuItem("Turn caret off",0,-1) "&�MenuItem("Display sprite",128,-1) ,� UtilitiesKnown=0 � � 6� N=0 � UtilitiesKnown-1 @ P%!-24=0 J U%=SlotEnd+(188*N) T �MenuItem($(U%+4),128,-1) ^� h� r: |� �MakeMenu �� MenuX<0 � MenuX=0 �*� MenuY<320 � MenuY=320:� for icon bar �7ș "Wimp_CreateMenu",,M%,MenuX-((36+M%!16)/2),MenuY �� �: �� �MenuInit(MenuTitle) �� wimp>=310 � �7 A=�$MenuTitle,"|"):� A<>0 � ?(MenuTitle+(A-1))=32 � MenuMax=�($MenuTitle) � M%!0=MenuTitle �� �7 A=�$MenuTitle,"|"):� A<>0 � ?(MenuTitle+(A-1))=13 � MenuMax=�(�$MenuTitle,12)) $M%=�$MenuTitle,12) � $M%?12=7:M%?13=2:M%?14=11:M%?15=0 &M%!16=MenuMax*16 0M%!20=44:M%!24=0 :P%=M%+28 D� N: X!� �MenuItem(Text$,Flags,Link) bK� Flags: 1-ticked, 2-dashed line, 4-writeable, 8-message, 128-last item l1� Link: menu or window handle for sub-pointer vP%!0=Flags:P%!4=Link �� �(Text$)<=12 � �% P%!8=&07003021:� Not indirected � $(P%+12)=Text$ �� �! P%!8=&07003121:� Indirected �: P%!12=IndirectMenuText+IndirectMenuTextOffsetPointer � P%!16=0:P%!20=0 �A $(IndirectMenuText+IndirectMenuTextOffsetPointer)=Text$+�13 �/ IndirectMenuTextOffsetPointer+=�(Text$)+1 ڂ � IndirectMenuTextOffsetPointer>IndMenuMax � � 0,"The indirect menu text buffer has overflowed. Please allocate more space." �� � P%+=24 �>� MenuMax<�(Text$) � MenuMax=�(Text$):M%!16=(MenuMax+1)*16 A� (Flags=128) � (wimp>=310) � M%!28=(((M%!28) � � 256) � 256) 7 � Indirected menu titles for RISC OS 3.1 upwards. � : *O� ------------------------------------------------------------------------- 4)� Responses to incoming wimp messages >O� ------------------------------------------------------------------------- H: R� �SaveDesktop(File) \� � fG� � � Block!12=Block!8:ș "Wimp_SendMessage",19,Block,Block!4:� �:� pI� The above line acknowledges the message if an error occurs, thereby z � aborting the desktop save. �+�#File,"Run "+OurPathName$+OurFileName$ �� �: �� �Help �4Block!12=Block!8:Block!16=&503:HelpInfo=Block+20 � : �!Window=Block!32:Icon=Block!36 � : �Ȏ Window � �. � -2:�Send("This is the OmniDesk icon.") �) � SELECTHelp$=ADJUSTHelp$ � �S � SELECTHelp$<>"" � �Send("Click SELECT or ADJUST to "+SELECTHelp$) � � I � SELECTHelp$<>"" � �Send("Click SELECT to "+SELECTHelp$) I � ADJUSTHelp$<>"" � �Send("Click ADJUST to "+ADJUSTHelp$) � $ �Send(DRAGHelp$) . � Info:� Icon=0 � 8I �Send("Isn't this pretty? It was created in ArtWorks.") Ba � �ModeInfo("NCol",-1)<63 � �Send("It looks even nicer in a full-colour mode.") L � VK �Send("This window displays information about OmniDesk.") ` � j3 � Drop:�Send("Drag a file into this window.") t- � Loading:�Send("OmniDesk is loading.") ~X �Send("The utilities known to OmniDesk are shown in the lowest box.") � � Prefs:Ȏ � � �P � Icon=-1:�Send("This is the OmniDesk Configuration window.") �� �Send("Use it to set up the action of the mouse buttons and drag operations on the icon-bar icon, which utilities to load permanently, and the caret blinking statistics.") �� � (Icon>=0) � (Icon<=7):�Send("This area lets you set up whether, and how fast, the text insertion caret blinks.") �o � Icon=8:�Send("Enter here the length of time the caret blinks on (in tenths of a second).") �p � Icon=9:�Send("Enter here the length of time the caret blinks off (in tenths of a second).") �g � Icon=10:�Send("Click here to implement any changes you have made in this window.") �| �Send("Clicking with SELECT will close the window; clicking with ADJUST will keep it open.") ؘ � Icon=11:�Send("Click here to implement any changes you have made in this window and save them for the next time you use OmniDesk.") �| �Send("Clicking with SELECT will close the window; clicking with ADJUST will keep it open.") �� � (Icon=12) � (Icon=13):�Send("This area lets you decide which utilities are permanently loaded and which are activated when you click on, or drag a file to, the icon-bar icon.") �x � Icon=16:�Send("These columns let you set the action of clicks on, or drags to, the icon-bar icon.") � � (Icon=21) � (Icon=26) � (Icon=31):�Send("This utility is provided by OmniDesk itself, so the switch is always selected: you cannot turn it off.") � � (Icon=14) � (Icon=15) � (Icon=20) � ((Icon>=21) � (((Icon-21) � 5)<2)):�Send("Click in this column to toggle the Load switch on and off.") _ �Send("If the switch is on, the utility will be permanently resident.") c �Send("If the switch is off, the utility will only be loaded when needed.") (� � (Icon=17) � ((Icon>=21) � (((Icon-21) � 5)=2)):�Send("Click in this column to choose which utility will be activated when you click SELECT on the icon-bar icon.") 2� �Send("You can click ADJUST on the current option to turn it off, assigning no effect to the icon-bar icon.") <� � (Icon=18) � ((Icon>=21) � (((Icon-21) � 5)=3)):�Send("Click in this column to choose which utility will be activated when you drag a file to the icon-bar icon.") Fe �Send("You can only choose a utility which will accept files dragged to it.") P� � (Icon=19) � ((Icon>=21) � (((Icon-21) � 5)=4)):�Send("Click in this column to choose which utility will be activated when you click ADJUST on the icon-bar icon.") Z� �Send("You can click ADJUST on the current option to turn it off, assigning no effect to the icon-bar icon.") d � n x � wimp>=217 � �1 MenuHelp!0=-1:MenuHelp!4=-1:MenuHelp!8=-1 �; ș "Wimp_GetMenuState",1,MenuHelp,Block!32,Block!36 � Ȏ M% � � � IBMenu: � � MenuHelp!4=-1 � � Ȏ MenuHelp!0 � �V � 0:�Send("Move the pointer right to see information about OmniDesk.") �R � 1:�Send("Move the pointer right to choose an OmniDesk utility.") �M � 2:�Send("Click SELECT to edit the OmniDesk configuration.") �; � 3:�Send("Click SELECT to quit OmniDesk.") �: �Send("This is the OmniDesk main menu.") � � � � � Utilities menu Ȏ MenuHelp!4 � > � 0:�Send("Click SELECT to locate the caret.") "@ � 1:�Send("Click SELECT to turn the caret off.") ,u � 2:�Send("Click SELECT to open a window into which you can drag a sprite to view it on the screen.") 6 @3 U%=SlotEnd+(188*((MenuHelp!4)-3)) J4 �Send("Click SELECT to "+$(U%+35)) T � ^ � h � r � |� � : �?HelpInfo=0 �$Block!0=(HelpInfo+4-Block) � � 3 �*ș "Wimp_SendMessage",17,Block,Block!4 �� �: �� �Send(Text$) �$HelpInfo=Text$+"|M" �HelpInfo+=�(Text$)+2 �� �: �� �ModeChange �InfoSprite$="Sinfo" K� �ModeInfo("YEigFactor",-1)<=1 � InfoSprite$+="22" � InfoSprite$+="24" F� �ModeInfo("NCol",-1)<=15 � InfoSprite$+="16" � InfoSprite$+="64" KInfoSprite$+=";Z4":Block!0=Info:Block!4=0:ș "Wimp_GetIconState",,Block &0$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 0!ș "Wimp_SetIconState",,Block :;Block!0=Loading:Block!4=2:ș "Wimp_GetIconState",,Block D0$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 N!ș "Wimp_SetIconState",,Block XDoModeChange=� b?� � StartingUp � �UpdateIconForMode("!OmniDesk",-2,IconBar) l� v: �� �StoreUtilDetails �� � �UpdateUtilDetails � �� � �AllocateMemory(188+AppSize)=0 � StartingUp=�:�InstallIBIcon:�BuildUtilitiesMenu:� 9999,"Out of memory: unable to store details of any more utilities. No more will be recorded." �% U%=SlotEnd+(188*UtilitiesKnown) �* U%!0=Block!20: � Task handle �( $(U%+4)=$(Block+24): � Task name �2 $(U%+24)=$(Block+44): � Leafname of utility �2 $(U%+35)=$(Block+55): � SELECT help message �0 $(U%+112)=$(Block+132):� DRAG help message � UtilitiesKnown+=1 �$ �UpdateIcon(Loading,4,$(U%+4)) � �Open(Loading,�,2,2) � �AddLineToPrefs($(U%+4)) �BuildUtilitiesMenu � � : *� �UpdateUtilDetails 4*� A utility is starting or restarting. >A� If we know it, then update its task handle and return TRUE. H@� If we don't know it, then return FALSE and let the calling RB� procedure install it in the Prefs window and Utilities menu. \� UtilitiesKnown=0 � =� f N=0:� p U%=SlotEnd+(188*N) z N+=1 �0� (N=UtilitiesKnown) � ($(U%+4)=$(Block+24)) �.� ($(U%+4)=$(Block+24)) � U%!0=Block!20:=� �=� �: �� �UtilityQuitting �@� Must replace task handle with -1 to indicate 'not running' �� UtilitiesKnown=0 � � � N=0:� � U%=SlotEnd+(188*N) � N+=1 �*� (N=UtilitiesKnown) � (U%!0=Block!20) �� U%!0=Block!20 � U%!0=-1 �� : O� ------------------------------------------------------------------------- 8� General non-specific useful routines (mostly wimp) $O� ------------------------------------------------------------------------- .: 8 � �UpdateIcon(Wndw,Icn,Txt$) B:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block L� �(Txt$)>(Block!36)-1 � V& � ((Block!24) � (1<<9))=(1<<9) � ` � Right-justified j$ Txt$="�"+�Txt$,(Block!36)-2) t � ~# � Left-justified or centred �+ Txt$=�Txt$,(Block!36)-1):�Txt$)="�" � � �� �F� ^ Ensures the text can't overflow the maximum space in the icon. �� $(Block!28)<>Txt$ � �+ $(Block!28)=Txt$:Block!8=0:Block!12=0 �# ș "Wimp_SetIconState",,Block �� �%ș "Wimp_GetCaretPosition",,Block �"� Block!0=Wndw � Block!4=Icn � �< � If this icon owns the caret, then put it at the end. �8 ș "Wimp_SetCaretPosition",Wndw,Icn,0,0,-1,�(Txt$) � � : +� �UpdateIconColour(Wndw,Icn,FCol,BCol) (� Change an icon's colours 2:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block <;� (((Block?27)>>4)=BCol) � (((Block?27) � 16)=FCol) � � F' � ^ Same colour, so don't change. P:Block!12=(%11111111<<24):Block!8=(BCol<<28)+(FCol<<24) Z!ș "Wimp_SetIconState",,Block d� n: x)� �UpdateSelectedFlag(Wndw,Icn,State) �1� Use State=TRUE to make icon become selected �:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block �/� ((Block!24) � (1<<21))=((-State)<<21) � � �@Block!12=(1<<21):� State � Block!8=(1<<21) � Block!8=(0<<21) �!ș "Wimp_SetIconState",,Block �� �: �'� �UpdateShadedFlag(Wndw,Icn,State) �/� Use State=TRUE to make icon become shaded �:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block �/� ((Block!24) � (1<<22))=((-State)<<22) � � �@Block!12=(1<<22):� State � Block!8=(1<<22) � Block!8=(0<<22) �!ș "Wimp_SetIconState",,Block � : � �SelectedState(Wndw,Icn) ":Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block ,)� ((Block!24) � (1<<21))=(1<<21) � =� 6=� @: J� �ShadedState(Wndw,Icn) T:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block ^)� ((Block!24) � (1<<22))=(1<<22) � =� h=� r: |� �OpenState(Wndw) �5� Returns TRUE if window is open; false otherwise �0Block!0=Wndw:ș "Wimp_GetWindowState",,Block �)� ((Block!32) � (1<<16))=(1<<16) � =� �=� �: �!� �ShadeMenu(Menu,Item,State) �P!(Menu+28+(24*Item)+8)=(!(Menu+28+(24*Item)+8) � � (1<<22)) � ((-State)<<22) �� �: � � �TickMenu(Menu,Item,State) �@!(Menu+28+(24*Item))=(!(Menu+28+(24*Item)) � � 1) � (-State) �� �: � �MenuShaded(Menu,Item) 5� (!(Menu+28+(24*Item)+8) � (1<<22))=(1<<22) � =� =� &: 0� �MenuTicked(Menu,Item) :'� (!(Menu+28+(24*Item)) � 1)=1 � =� D=� N: X� �ReadIcon(Wndw,Icn) b � Read numeric value of icon l:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block v=�($(Block!28)) �: �� �ReadIconStr(Wndw,Icn) �� Read string value of icon �:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block �=$(Block!28) �: �� �ModeInfo(var$,mode) �)� Use mode=-1 for current screen mode � Ȏ var$ � �: � "XPixels":ș "OS_ReadModeVariable",mode,11 � ,,var �: � "YPixels":ș "OS_ReadModeVariable",mode,12 � ,,var �6 � "NCol":ș "OS_ReadModeVariable",mode,3 � ,,var �< � "XEigFactor":ș "OS_ReadModeVariable",mode,4 � ,,var < � "YEigFactor":ș "OS_ReadModeVariable",mode,5 � ,,var ? � "BPP":ș "OS_ReadModeVariable",mode,9 � ,,var:var=2^var 6 var=-1:� Fall-through for a faulty input value � *=var 4: >+� �UpdateIconForMode(Appname$,Wndw,Icn) HN� This procedure requires that ALL the icon sprites are defined in mode 20 RN� or mode 27 (which is equivalent) with a mask but no palette. They should \N� still appear to have the expected resolutions and number of colours, i.e fN� !Sprites23: two colours, high resolution, !Sprites (actually !Sprites24) pL� at mode 12 resolution (double height pixels) in 16 colours, and normal zL� mode 20 resolution, 16 colours for the !Sprites22 icon. If this is not �I� adhered to, then memory shortage errors may occur on a mode change. �Extension$="24" �$� �ModeInfo("YEigFactor",-1)<2 � � � �ModeInfo("NCol",-1)>2 � � Extension$="22" � � � Extension$="23" � � �� �*ș "Wimp_BaseOfSprites" � ,iconsprite% �Eș "OS_SpriteOp",256+25,iconsprite%,Appname$:� Delete icon sprite �=� The following three lines assume a mask but no palette: �bș "OS_SpriteOp",256+40,Sprites,Appname$+Extension$ � ,,,w,h,,mode:� Get info about new sprite \ș "OS_SpriteOp",256+15,iconsprite%,Appname$,0,w,h,mode:� Create replacement icon sprite >ș "OS_SpriteOp",256+29,iconsprite%,Appname$:� Create mask : $-� Paint sprite mask into iconsprite mask: .Qș "OS_SpriteOp",256+61,iconsprite%,Appname$,0 � r0,r1,r2,r3:� Output to mask 8Uș "OS_SpriteOp",256+49,Sprites,Appname$+Extension$,0,0:� Paint mask from Sprites B7� 4,128:�:� Invert to make mask the right way round L6ș "OS_SpriteOp",r0,r1,r2,r3:� Reset screen output V : `#� Paint sprite into iconsprite: j\ș "OS_SpriteOp",256+60,iconsprite%,Appname$,0 � r0,r1,r2,r3:� Output to new icon sprite tWș "OS_SpriteOp",256+34,Sprites,Appname$+Extension$,0,0,8:� Paint copy from Sprites ~6ș "OS_SpriteOp",r0,r1,r2,r3:� Reset screen output �:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block �EBlock!8=0:Block!12=0:ș "Wimp_SetIconState",,Block:� Re-plot icon �� �: ��� �CreateWindow(minX,minY,maxX,maxY,Xoffset,Yoffset,Handle,Flags,TitleCol,TitleBackCol,WorkCol,WorkBackCol,ScrollCol,SliderCol,InputCol,WminX,WminY,WmaxX,WmaxY,TitleFlags,Wbutton,SpritePoint,MinW,MinH,TitleData$) �ZBlock!0=minX:Block!4=minY:Block!8=maxX:Block!12=maxY:Block!16=Xoffset:Block!20=Yoffset �"Block!24=Handle:Block!28=Flags �QBlock?32=TitleCol:Block?33=TitleBackCol:Block?34=WorkCol:Block?35=WorkBackCol �FBlock?36=ScrollCol:Block?37=SliderCol:Block?38=InputCol:Block?39=0 �?Block!40=WminX:Block!44=WminY:Block!48=WmaxX:Block!52=WmaxY �=Block!56=TitleFlags:Block!60=Wbutton:Block!64=SpritePoint �_Block!68=(MinH<<15)+MinW :::::::::::: � 0,0 sets the minimum window with to the title width >$(Block+72)=TitleData$:Block!84=0 ::: � No icons initially 0ș "Wimp_CreateWindow",,Block � WindowHandle =WindowHandle : (� �Initialise 2-AppSize=�-&8000:MinSize=AppSize:SlotEnd=� <� F: P� �AllocateMemory(Required) ZSlotSize=�SlotSize(-1) d� SlotSize<Required � n! NewSize=�SlotSize(Required) x6 � NewSize<Required � SlotSize=�SlotSize(AppSize) �� �D� NewSize<Required � =0:� Returns, indicating memory not claimed �6� SlotSize>Required � SlotSize=�SlotSize(Required) �*=SlotSize:� Returns with bytes claimed �: �� �SlotSize(Bytes) �'ș "Wimp_SlotSize",Bytes,-1 � Bytes � =Bytes �: �� �MinimiseWimpSlot �"dummy=�AllocateMemory(MinSize) �� �: "� �CloseFileIfPoss(FileHandle) � � &� � � � �:�:� Unable to close file "�#FileHandle ,� 6: @� �FindFileSize(FileName$) J � FileName$="<Wimp$Scrap>" � T: ș "OS_File",15,FileName$,,,FileName$ � ,,,,FileSize ^� h4 N=-1:�:N+=1:� �FileName$,�(FileName$)-N,1)="." rB PathName$=�FileName$,�(FileName$)-N):LeafName$=�FileName$,N) |: ș "OS_File",13,LeafName$,,,PathName$ � ,,,,FileSize �� � =FileSize �: �� �NextEntry �H� Gets next entry (created by BPUT#Data,A$) from a file as a string. �� Use as A$=FNNextEntry. �� � �&� � � � �:="":� Error reading file �NE$=�#Data �ȕ �NE$,1)="|" � NE$=�#Data �� �=NE$ : O� ------------------------------------------------------------------------- /� Routines common to the OmniDesk utilities &O� ------------------------------------------------------------------------- 0: : � �ReadWindowLocation(Axis$) DH� Reads which radio icon (if any) is selected in the Window Position NH� selector window and returns the axis coordinate (two calls needed) X%� or -1 for no position selected. b?Icon=5:�:Icon+=1:� (�SelectedState(Loc,Icon)=�) � (Icon=31) l*� Icon=31 � =-1:� All icons deselected v4Location=-1:Icon-=6:� Bring icon into range 0-14 �Ȏ Axis$ � �! � "X","x":Location=Icon � 5 �% � "Y","y":Location=4-(Icon � 5) �� � =Location �: �� �CleanUpLocWindow �O� Makes sure that none of the 'window' icons in the Loc window is selected. � N=5:� �'N+=1:� N=30 � �SelectedState(Loc,N) � �UpdateSelectedFlag(Loc,N,�) �� �: !O� ------------------------------------------------------------------------- !,� Special routines for this program only !O� ------------------------------------------------------------------------- ! : !*� �InstallIBIcon !4� Put Icon on the icon-bar !>Block!0=-8 !H/Block!4=0:Block!8=0:Block!12=76:Block!16=68 !R2Block!20=&17003002:$(Block+24)="!OmniDesk"+�13 !\2ș "Wimp_CreateIcon",&1E000000,Block � IconBar !f : !p&�UpdateIcon(Info,3,VersionNumber$) !zIWaitToCloseLoadingWindow=3:� Allows extra wimp polls so that there is !�K � time for the last utility to appear in the !�0 � Loading window. !�@�ModeChange:� To update sprite in info box and icon-bar icon !�� !�: !�"� �OpenLoadingWindow(Message$) !�InfoSprite$="Sinfo" !�K� �ModeInfo("YEigFactor",-1)<=1 � InfoSprite$+="22" � InfoSprite$+="24" !�F� �ModeInfo("NCol",-1)<=15 � InfoSprite$+="16" � InfoSprite$+="64" !�NInfoSprite$+=";Z4":Block!0=Loading:Block!4=2:ș "Wimp_GetIconState",,Block !�0$(Block!32)=InfoSprite$:Block!8=0:Block!12=0 !�!ș "Wimp_SetIconState",,Block !�M�UpdateIcon(Loading,3,"Version "+�VersionNumber$,�VersionNumber$," ")-1)) "#�UpdateIcon(Loading,4,Message$) "�Open(Loading,�,2,2) "�Open(Loading,�,2,2) "$WaitToCloseLoadingWindow=0 ".� "8: "B9� �DragToIconBar(Utility,FileSize,FileType,FileName$) "LȎ Utility � "V1 � -1:� None: Acknowledge message and return "`( Block!12=my_ref:Block!16=4 "jJ Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+�0 "t7 ș "Wimp_SendMessage",19,Block,SenderTask "~; � FileName$="<Wimp$Scrap>" � �DeleteWimpScrap "�$ � 0:� Locate caret - no action "�& � 1:� Turn caret off - no action "� � 2:� Display sprite "�7 ScreenloadError=�Screenload(FileType,FileName$) "�" Block!12=my_ref:Block!16=4 "�D Block!36=FileSize:Block!40=FileType:$(Block+44)=FileName$+�0 "�1 ș "Wimp_SendMessage",19,Block,SenderTask "�5 � FileName$="<Wimp$Scrap>" � �DeleteWimpScrap "� Ȏ ScreenloadError � "�y � 1:� 9999,"The Xarc module must be loaded before this file type can be handled by the Display sprite utility." "�W � 2:� 9999,"The Display sprite utility can only handle Sprite or Xarc files." "� � Handled OK. # � # # � UtilitiesKnown<>0 � #& U%=SlotEnd+(188*(Utility-3)) #( � U%!0=-1 � #2F � Task not running permanently, so start it up temporarily #<& � and broadcast a message: #Fb ș "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -Exit-OmniDesk"+�(Task) #P4 Block!0=256:Block!12=0:Block!16=UtilOpen #Z* Block!20=2:$(Block+24)=$(U%+4) #dE Block!44=FileSize:Block!48=FileType:$(Block+52)=FileName$ #n, ș "Wimp_SendMessage",18,Block,0 #x � #�4 � Task is running, so send it a message: #�4 Block!0=256:Block!12=0:Block!16=UtilOpen #�* Block!20=2:$(Block+24)=$(U%+4) #�E Block!44=FileSize:Block!48=FileType:$(Block+52)=FileName$ #�/ ș "Wimp_SendMessage",18,Block,U%!0 #� � #� � #� � #�� #�: #�� �CallUtility(Utility) #�1� ProcessingPrefs � BufferedStartup=Utility:� #�Ȏ Utility � $ � -1:� Off $ � 0:�LocateCaret $' � 1:ș "Wimp_SetCaretPosition",-1 $"L � 2:�UpdateIcon(Drop,2,"Drag a sprite here to load it to the screen.") $,/ �Open(Drop,�,2,1):DropWindowUtil=2 $6 $@ � UtilitiesKnown<>0 � $J& U%=SlotEnd+(188*(Utility-3)) $T � $(U%+35)="" � $^- � No SELECT-action help supplied. $hO � This implies that the utility only accepts dragged files, and has $rM � no SELECT-action. Therefore, we must open a drag-window for it. $|) �UpdateIcon(Drop,2,$(U%+112)) $�4 �Open(Drop,�,2,1):DropWindowUtil=Utility $� � $� � U%!0=-1 � $�H � Task not running permanently, so start it up temporarily $�( � and broadcast a message: $�d ș "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -Exit-OmniDesk"+�(Task) $�5 Block!0=44:Block!12=0:Block!16=UtilOpen $�, Block!20=4:$(Block+24)=$(U%+4) $�. ș "Wimp_SendMessage",17,Block,0 $� � $�6 � Task is running, so send it a message: $�5 Block!0=44:Block!12=0:Block!16=UtilOpen $�, Block!20=4:$(Block+24)=$(U%+4) %1 ș "Wimp_SendMessage",17,Block,U%!0 % � % � %& � %0� %:� %D: %N%� �Screenload(FileType,FileName$) %XScreenloadError=0 %b� FileType=&FF9 � %l ș "OS_Byte",135 � ,,mode %v" �("Screenload "+FileName$):� %� � %� ș "OS_Byte",121,0 � ,A %� � A<>&FF %� ș "Wimp_SetMode",mode %� �("FX 15,0") %�� %� � FileType=&DE2 � %� � �EnsureXarc � %�# ș "OS_Byte",135 � ,,mode %�$ �("XarcLoad "+FileName$):� %� � %�# ș "OS_Byte",121,0 � ,A %� � A<>&FF & ș "Wimp_SetMode",mode & �("FX 15,0") & � & ScreenloadError=1 &* � &4 � &> ScreenloadError=2 &H � &R� &\=ScreenloadError &f: &p� �EnsureXarc &z*Set Xarc$Present 1 &�'*RMEnsure Xarc 0 Set Xarc$Present 0 &�/ș "OS_ReadVarVal","Xarc$Present",Block,256 &�*UnSet Xarc$Present &�� Block?0=�("1") � =� &�=� &�: &�� �LocateCaret &�,� Is caret active? (i.e. an input focus) &�%ș "Wimp_GetCaretPosition",,Caret &�� Caret!0<0 � � 7:� &�+� Yes, so open its window at the front. &�Block!0=Caret!0 &�#ș "Wimp_GetWindowState",,Block 'ScrollH=0:ScrollV=0 '4� Calculate if we need to send a scroll request: '-� Caret!8>((Block!12-Block!4)+Block!20) � '$N ScrollH=1+((Caret!8-((Block!12-Block!4)+Block!20)) � (Block!12-Block!4)) '.� '8O � Caret!8<Block!20 � ScrollH=-1-((Block!20-Caret!8) � (Block!12-Block!4)) 'B� 'LL� (Caret!12)+((Caret?16+256*Caret?17)/2)<((Block!8-Block!16)+Block!24) � 'Vp ScrollV=-1-((((Caret!12)+((Caret?16+256*Caret?17)/2))-((Block!8-Block!16)+Block!24)) � (Block!8-Block!16)) '`� 'j� � (Caret!12)+((Caret?16+256*Caret?17)/2)>Block!24 � ScrollV=1+((Block!24-((Caret!12)+((Caret?16+256*Caret?17)/2))) � (Block!8-Block!16)) 't� '~Block!28=-1:� Window to top '�A� ScrollH<>0 � Block!20=Block!20+(ScrollH*(Block!12-Block!4)) '�A� ScrollV<>0 � Block!24=Block!24+(ScrollV*(Block!16-Block!8)) '�)ș "Wimp_SendMessage",2,Block,Block!0 '�Qș "Wimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 '�N� The set caret line above is included in case it helps the task to update '�B� its window correctly (e.g. for tasks with compound windows). '�0� Is caret present in input focus window? :- '�]� (Caret!4=-1 � Caret!8=0 � Caret!12=0) � Zooming=�:� Zooming=�:polltime%=0:� Don't pause '�� '�: '�� �ZoomPointer '�<� Read caret and pointer positions, then unlink pointer: ( CXpixels=�ModeInfo("XPixels",-1):Ypixels=�ModeInfo("YPixels",-1) ( OXEigFactor=�ModeInfo("XEigFactor",-1):YEigFactor=�ModeInfo("YEigFactor",-1) (%ș "Wimp_GetCaretPosition",,Caret (Block!0=Caret!0 ((#ș "Wimp_GetWindowState",,Block (24CX=(Block!4+(Caret!8-Block!20))+(2*2^XEigFactor) (<ACY=(Block!16+(Caret!12-Block!24))+((Caret?16+256*Caret?17)/2) (F� CX<0 � CX=0 (P� CX<Block!4 � CX=Block!4 (Z?� CX>(Xpixels-1)*(2^XEigFactor) � CX=Xpixels*(2^XEigFactor) (d� CX>Block!12 � CX=Block!12 (n� CY<0 � CY=0 (x� CY<Block!8 � CY=Block!8 (�?� CY>(Ypixels-1)*(2^YEigFactor) � CY=Ypixels*(2^YEigFactor) (�� CY>Block!16 � CY=Block!16 (� Block!0=6 (�ș "OS_Word",21,Block (�MX=Block?1+256*Block?2 (�MY=Block?3+256*Block?4 (�ș "OS_Byte",106,&81 (�H� Move the pointer to the caret position (centre right of the stem): (�� �(MX-CX)>�(MY-CY) � (� X=1 (� T=�(MX-CX) (�5 � (MX-CX)=0 � T=�(MY-CY):X=0:Y=T:� Y=�(MY-CY)/T (�� ) Y=1 ) T=�(MY-CY) )5 � (MY-CY)=0 � T=�(MX-CX):Y=0:X=T:� X=�(MX-CX)/T )"� ),� MX-CX<0 � X=-X )6� MY-CY<0 � Y=-Y )@ Block?0=5 )J � N=1 � T )T MX-=X:MY-=Y )^ � MX<0 � MX=0:X=0 )hE � MX>(Xpixels-1)*(2^XEigFactor) � MX=Xpixels*(2^XEigFactor):X=0 )r � MY<0 � MY=0:Y=0 )|E � MY>(Ypixels-1)*(2^YEigFactor) � MY=Ypixels*(2^YEigFactor):Y=0 )�' Block?2=MX � 256:Block?1=MX � 256 )�' Block?4=MY � 256:Block?3=MY � 256 )� ș "OS_Word",21,Block )�� )�%Block?2=CX � 256:Block?1=CX � 256 )�%Block?4=CY � 256:Block?3=CY � 256 )�ș "OS_Word",21,Block )�#Block?0=3:ș "OS_Word",21,Block )�� Rejoin mouse and pointer )�ș "OS_Byte",106,1 )� Zoom=� )�� )�: *� �FlashCaret *%ș "Wimp_GetCaretPosition",,Caret *FlashState=� FlashState *&9Caret!16=(Caret!16 � � (1<<25)) � ((-FlashState)<<25) *0Rș "XWimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 *:+� The X in the line above is important. *D*polltime%+=FlashPeriod(-FlashState)*10 *N� *X: *b� �ReadMaxUtils *c� � *d5� � � � �:=0:� In case 'Utilities' doesn't exist. *lO� This procedure finds out how many applications there are in the Utilities *m� directory. *vOffset=0:Counter=0 *�� *�[ Block!16=0:� Clear this manually since OS_GBPB doesn't, and we may get a wrong result *�T ș "OS_GBPB",10,"<OmniDesk$Dir>.Utilities",Block,1,Offset,256,"*" � ,,,,Offset *�Q � (Block!16=2) � (Block?20=�"!") � Counter+=1:� Application directory found *�� Offset=-1 *�=Counter *�: *�� �ScanUtils *�� � *�4� � � � �:�:� In case 'Utilities' doesn't exist. *�E� This procedure catalogues the utilities into a buffer ready for *�� auto-starting. *�K� Unfortunately, we can't leave all the work to OS_GBPB, since it won't *�O� distinguish between application directories and files beginning with "!". +Offset=0:BufferOffset=0 +� +[ Block!16=0:� Clear this manually since OS_GBPB doesn't, and we may get a wrong result + T ș "OS_GBPB",10,"<OmniDesk$Dir>.Utilities",Block,1,Offset,256,"*" � ,,,,Offset +*( � (Block!16=2) � (Block?20=�"!") � +4% � Application directory found +>- N=20:ȕ Block?N>=32:N+=1:�:Block?N=13 +HQ $(UtilListBuffer+BufferOffset)=$(Block+20):BufferOffset+=�($(Block+20))+1 +R � +\� Offset=-1 +f� +p: +z� �AddLineToPrefs(Title$) +�C� Amend work area size and size of bounding icons within Prefs: +�EBlock!0=0:Block!4=-616-(48*UtilitiesKnown):Block!8=812:Block!12=0 +�#ș "Wimp_SetExtent",Prefs,Block +�� N=13 � 20 � 7 +�; Block!0=Prefs:Block!4=N:ș "Wimp_GetIconState",,Block +�. Block!12-=48:ș "Wimp_DeleteIcon",,Block +�1 Block!4=Prefs:ș "Wimp_CreateIcon",,Block+4 +�� +�.� Now create extra rows of icons in Prefs. +�L� We just copy the icons from the row above, using new indirected space. +�<� The first extra icon created will have a handle of 36. +� � N=0 � 4 +�U Block!0=Prefs:Block!4=(5*(UtilitiesKnown-1))+N+31:ș "Wimp_GetIconState",,Block ,8 Block!12-=48:Block!20-=48:� Copy icon down one row , Ȏ N � ,8 � 0:$(ExtraPrefsVal+PrefsValPointer)=$(Block!32) ,$5 Block!32=ExtraPrefsVal+PrefsValPointer ,." PrefsValPointer+=14 ,87 � 1:$(ExtraPrefsInd+PrefsIndPointer)=Title$+�13 ,B5 Block!28=ExtraPrefsInd+PrefsIndPointer ,L" PrefsIndPointer+=20 ,V6 $(ExtraPrefsVal+PrefsValPointer)=$(Block!32) ,`8 Block!32=ExtraPrefsVal+PrefsValPointer ,jJ Block!24=((Block!24) � � (1<<21)) � (0<<21):� Unselected ,t% PrefsValPointer+=18 ,~ � ,�1 Block!4=Prefs:ș "Wimp_CreateIcon",,Block+4 ,�� ,�'U%=SlotEnd+(188*(UtilitiesKnown-1)) ,� : ,��� �FoundInSettings($(U%+24)) � �UpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36,�):SelectedLoadSwitches$+="Y":� �UpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36,�):SelectedLoadSwitches$+="N" ,�p� The above line turns on the option switch according to whether the utility was found in the Settings file. ,� : ,� $(U%+112)="" � �UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+39,�):� �UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+39,�) ,ؙ� The above line shades out the dragging radio icon if no dragging help text is supplied. Lack of help text implies that there is no dragging action. ,� : ,�&� ($(U%+35)="") � ($(U%+112)="") � ,�o �UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+38,�):�UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+40,�) - � - o �UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+38,�):�UpdateShadedFlag(Prefs,(5*(UtilitiesKnown-1))+40,�) -� -�� The above lines shade out the Select and Adjust radio icons if (a) no SELECT help text is supplied and (b) no dragging help text is supplied. This renders the utility useless, since it does not respond to either action. -( : -2� Title$=SELECTUtil$ � -<Z SELECTUtil=UtilitiesKnown+2:�UpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+2,�) -F. SELECTUtil$=$(U%+4):SELECTHelp$=$(U%+35) -P� -Z� Title$=DRAGUtil$ � -dX DRAGUtil=UtilitiesKnown+2:�UpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+3,�) -n+ DRAGUtil$=$(U%+4):DRAGHelp$=$(U%+112) -x� -�� Title$=ADJUSTUtil$ � -�Z ADJUSTUtil=UtilitiesKnown+2:�UpdateSelectedFlag(Prefs,(5*(UtilitiesKnown-1))+36+4,�) -�. ADJUSTUtil$=$(U%+4):ADJUSTHelp$=$(U%+35) -�� -� : -�� UtilitiesKnown=1 � -� � N=21 � 31 � 5 -�& �UpdateSelectedFlag(Prefs,N,�) -�= Block!0=Prefs:Block!4=N:ș "Wimp_GetIconState",,Block -�A Block!8=0:Block!12=(15<<12):ș "Wimp_SetIconState",,Block -�E � Change button type to Never and fix these buttons ON, since -�D � the first three utilities are provided by OmniDesk itself. -� � .7 � Grey out the inappropriate dragging radio icons .# �UpdateShadedFlag(Prefs,24,�) .# �UpdateShadedFlag(Prefs,29,�) ."� .,� .6: .@� �StartUpTask .J0� MaxUtils=0 � StartingUp=�:�InstallIBIcon:� .T/FileName$=$(UtilListBuffer+UtilListPointer) .^#UtilListPointer+=�(FileName$)+1 .hStartUpCounter+=1 .r#� �FoundInSettings(FileName$) � .|X ș "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+FileName$+" -OmniDesk"+�(Task) .�� .�` ș "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+FileName$+" -Startup-OmniDesk"+�(Task) .�� .�;� StartUpCounter=MaxUtils � StartingUp=�:�InstallIBIcon .�� .�: .�� �FoundInSettings(F$) .�� � .�<� � � � �:�CloseFileIfPoss(Data):=�:� Error reading file .�&Data=� ("<OmniDesk$Dir>.Settings") .�<� N=1 � 6:Dummy$=�NextEntry:�:� Bypass first six entries .�� .� A$=�NextEntry /� (A$=F$) � �#Data / �#Data /� A$<>F$ � =� /&=� /0: /:� �StartOrQuitPrefsTask /DF� ProcessingPrefsCounter=UtilitiesKnown � �FinishProcessingPrefs:� /N-U%=SlotEnd+(188*(ProcessingPrefsCounter)) /X"�UpdateIcon(Loading,4,$(U%+4)) /b;� �SelectedState(Prefs,(5*ProcessingPrefsCounter)+36) � /l � Turned ON in Prefs /v � U%!0=-1 � /� � Not loaded already /� � Load it permanently. /�Y ș "Wimp_StartTask","Run <OmniDesk$Dir>.Utilities."+$(U%+24)+" -OmniDesk"+�(Task) /� � /� � Loaded already /�C � Tell it to be permanent in case it's currently transient. /�B Block!0=20:Block!12=0:Block!16=UtilReside:� Make permanent /�+ ș "Wimp_SendMessage",17,Block,U%!0 /� � /�� /� � Turned OFF in Prefs /� � U%!0=-1 � /� � Not loaded already 0$ � Don't need to do anything. 0 � 0 � Loaded already 0 � Make it quit. 0*A Block!0=24:Block!12=0:Block!16=UtilQuitting:Block!20=Task 04+ ș "Wimp_SendMessage",17,Block,U%!0 0># U%!0=-1:� Record it as quit 0H � 0R� 0\ProcessingPrefsCounter+=1 0f� 0p: 0z� �FinishProcessingPrefs 0�ProcessingPrefs=� 0�#�UpdateShadedFlag(-2,IconBar,�) 0�#�UpdateIconColour(Prefs,10,7,1) 0�#�UpdateIconColour(Prefs,11,7,1) 0�8� BufferedStartup>-1 � �CallUtility(BufferedStartup) 0�BufferedStartup=-1 0�WaitToCloseLoadingWindow=1 0�� 0�: 0�� �DoPrefsOKClick 0�$Flashing=�SelectedState(Prefs,7) 0�%FlashPeriod(0)=�ReadIcon(Prefs,8) 0�%FlashPeriod(1)=�ReadIcon(Prefs,9) 1� � Flashing � 1' ș "Wimp_GetCaretPosition",,Caret 1/ Caret!16=(Caret!16 � � (1<<25)) � (0<<25) 1$S ș "Wimp_SetCaretPosition",Caret!0,Caret!4,Caret!8,Caret!12,Caret!16,Caret!20 1.� 18SelectedLoadSwitches$="YYY" 1B� UtilitiesKnown>0 � 1L � N=1 � UtilitiesKnown 1Vb � �SelectedState(Prefs,31+(5*N)) � SelectedLoadSwitches$+="Y":� SelectedLoadSwitches$+="N" 1` � 1j� 1t�WorkOutRadioPrefs 1~.ProcessingPrefs=�:ProcessingPrefsCounter=0 1�7� This starts up the multi-tasking switching on/off 1�8� of tasks as specified by the Prefs option buttons. 1� : 1�#�UpdateShadedFlag(-2,IconBar,�) 1�#�UpdateIconColour(Prefs,10,3,1) 1�#�UpdateIconColour(Prefs,11,3,1) 1�&�OpenLoadingWindow("Scanning ...") 1� : 1�N� If OmniDesk is flashing the caret whilst processing the preferences, the 1�N� processing takes a very significantly longer time than if the caret were 1�M� not being flashed (as OmniDesk can only deal with one utility per caret 1�M� flash). Therefore, under those circumstances we need to shade the icon- 2 N� bar icon so that the user can't upset the process. Actually, the code is 2 M� built into the program so that if the icon is NOT shaded, clicks (other 2M� than MENU) will be ignored until processing has finished, whereupon the 2O� last click will be honoured. However, this is a bit sluggish in practice, 2(G� so I have made the icon grey out whenever OK is clicked in Prefs. 22� 2<: 2F%� �UpdatePrefsWindowBeforeOpening 2P)�UpdateSelectedFlag(Prefs,7,Flashing) 2Z*�UpdateIcon(Prefs,8,�(FlashPeriod(0))) 2d*�UpdateIcon(Prefs,9,�(FlashPeriod(1))) 2n$� N=1 � �(SelectedLoadSwitches$) 2x/ �UpdateSelectedFlag(Prefs,21+(5*(N-1)),�) 2�S � �SelectedLoadSwitches$,N,1)="Y" � �UpdateSelectedFlag(Prefs,21+(5*(N-1)),�) 2�� 2�� N=0 � (UtilitiesKnown+3) 2�h � N=SELECTUtil � �UpdateSelectedFlag(Prefs,21+(5*N)+2,�) � �UpdateSelectedFlag(Prefs,21+(5*N)+2,�) 2�h � N=DRAGUtil � �UpdateSelectedFlag(Prefs,21+(5*N)+3,�) � �UpdateSelectedFlag(Prefs,21+(5*N)+3,�) 2�h � N=ADJUSTUtil � �UpdateSelectedFlag(Prefs,21+(5*N)+4,�) � �UpdateSelectedFlag(Prefs,21+(5*N)+4,�) 2�� 2�� 2�: 2�� �WorkOutRadioPrefs 2�/N=0:SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 2�� 2�7 � �SelectedState(Prefs,(5*N)+21+2) � SELECTUtil=N 37 � �SelectedState(Prefs,(5*N)+21+3) � DRAGUtil=N 37 � �SelectedState(Prefs,(5*N)+21+4) � ADJUSTUtil=N 3 N+=1 3"� N=(UtilitiesKnown+3) 3,Ȏ SELECTUtil � 36. � -1:SELECTUtil$="":SELECTHelp$="":� Off 3@D � 0:SELECTUtil$="Locate caret":SELECTHelp$="locate the caret." 3JH � 1:SELECTUtil$="Turn caret off":SELECTHelp$="turn the caret off." 3Tg � 2:SELECTUtil$="Display sprite":SELECTHelp$="open a window to accept a sprite file for display." 3^ 3h' U%=SlotEnd+(188*(SELECTUtil-3)) 3r0 SELECTUtil$=$(U%+4):SELECTHelp$=$(U%+35) 3|P � SELECTHelp$="" � SELECTHelp$="open a window to accept a dragged file." 3�� 3�Ȏ ADJUSTUtil � 3�. � -1:ADJUSTUtil$="":ADJUSTHelp$="":� Off 3�D � 0:ADJUSTUtil$="Locate caret":ADJUSTHelp$="locate the caret." 3�H � 1:ADJUSTUtil$="Turn caret off":ADJUSTHelp$="turn the caret off." 3�g � 2:ADJUSTUtil$="Display sprite":ADJUSTHelp$="open a window to accept a sprite file for display." 3� 3�' U%=SlotEnd+(188*(ADJUSTUtil-3)) 3�0 ADJUSTUtil$=$(U%+4):ADJUSTHelp$=$(U%+35) 3�P � ADJUSTHelp$="" � ADJUSTHelp$="open a window to accept a dragged file." 3�� 3�Ȏ DRAGUtil � 3�. � -1,0,1:DRAGUtil$="":DRAGHelp$="":� Off 4` � 2:DRAGUtil$="Display sprite":DRAGHelp$="Drag a sprite here to display it on the screen." 4 4% U%=SlotEnd+(188*(DRAGUtil-3)) 4&- DRAGUtil$=$(U%+4):DRAGHelp$=$(U%+112) 40� 4:� 4D: 4N� �SaveSettings 4X� � 4b<� � � � �:�CloseFileIfPoss(Data):=�:� Error writing file 4l : 4v( Data=� ("<OmniDesk$Dir>.Settings") 4�; �#Data,"| Flashing caret (-1 for TRUE, 0 for FALSE):" 4�' �#Data,�(�SelectedState(Prefs,7)) 4�G �#Data,"| Caret flash on and off periods (in 10ths of a second):" 4�" �#Data,�ReadIconStr(Prefs,8) 4�" �#Data,�ReadIconStr(Prefs,9) 4�H �#Data,"| Utility to activate with SELECT click on icon-bar icon:" 4� �#Data,SELECTUtil$ 4�H �#Data,"| Utility to activate with ADJUST click on icon-bar icon:" 4� �#Data,ADJUSTUtil$ 4�H �#Data,"| Utility to activate when file dragged to icon-bar icon:" 4� �#Data,DRAGUtil$ 4�( �#Data,"| Utilities to auto-load:" 4� � UtilitiesKnown<>0 � 5 N=0:� 5 U%=SlotEnd+(188*N) 5 N+=1 5 < � �SelectedState(Prefs,(5*N)+31) � �#Data,$(U%+24) 5* � N=UtilitiesKnown 54 � 5> �#Data 5H/ �("Settype <OmniDesk$Dir>.Settings Text") 5R : 5\=� 5f: 5p� �LoadSettings 5z� � 5�O� � � � �:�CloseFileIfPoss(Data):=�:� 'Settings' file is damaged or missing 5� : 5�& Data=� "<OmniDesk$Dir>.Settings" 5�0 �UpdateSelectedFlag(Prefs,7,�(�NextEntry)) 5�% �UpdateIcon(Prefs,8,�NextEntry) 5�% �UpdateIcon(Prefs,9,�NextEntry) 5� �#Data 5� : 5�& Flashing=�SelectedState(Prefs,7) 5�' FlashPeriod(0)=�ReadIcon(Prefs,8) 5�' FlashPeriod(1)=�ReadIcon(Prefs,9) 5� : 5�=� 6: 6� �FindIBClickUtils 6� � 6$O� � � � �:�CloseFileIfPoss(Data):=�:� 'Settings' file is damaged or missing 6. : 68& Data=� "<OmniDesk$Dir>.Settings" 6B< � N=1 � 3:A$=�NextEntry:�:� Ignore first three entries 6L SELECTUtil$=�NextEntry 6V ADJUSTUtil$=�NextEntry 6` DRAGUtil$=�NextEntry 6j �#Data 6t : 6~0 � These are the in-built options; the rest 6�2 � will be catered for as the tasks start up: 6� Ȏ SELECTUtil$ � 6�e � "Locate caret":SELECTUtil=0:�UpdateSelectedFlag(Prefs,23,�):SELECTHelp$="locate the caret." 6�i � "Turn caret off":SELECTUtil=1:�UpdateSelectedFlag(Prefs,28,�):SELECTHelp$="turn the caret off." 6�� � "Display sprite":SELECTUtil=2:�UpdateSelectedFlag(Prefs,33,�):SELECTHelp$="open a window to accept a sprite file for display." 6� � 6� Ȏ ADJUSTUtil$ � 6�e � "Locate caret":ADJUSTUtil=0:�UpdateSelectedFlag(Prefs,25,�):ADJUSTHelp$="locate the caret." 6�i � "Turn caret off":ADJUSTUtil=1:�UpdateSelectedFlag(Prefs,30,�):ADJUSTHelp$="turn the caret off." 6� � "Display sprite":ADJUSTUtil=2:�UpdateSelectedFlag(Prefs,35,�):ADJUSTHelp$="open a window to accept a sprite file for display." 6� � 6�� � DRAGUtil$="Display sprite" � DRAGUtil=2:�UpdateSelectedFlag(Prefs,34,�):DRAGHelp$="Drag a sprite here to display it on the screen." 7 : 7 =� 7: 7� �DefaultSettings 7(+SELECTUtil=-1:ADJUSTUtil=-1:DRAGUtil=-1 72.SELECTUtil$="":ADJUSTUtil$="":DRAGUtil$="" 7<.SELECTHelp$="":ADJUSTHelp$="":DRAGHelp$="" 7F0Flashing=�:FlashPeriod(0)=6:FlashPeriod(1)=3 7P)�UpdateSelectedFlag(Prefs,7,Flashing) 7Z*�UpdateIcon(Prefs,8,�(FlashPeriod(0))) 7d*�UpdateIcon(Prefs,9,�(FlashPeriod(1))) 7n� 7x: 7�� �InitVars 7�2Zooming=�:FlashState=�:SaveError=�:ReadError=� 7�� FlashPeriod(1) 7�&UtilitiesKnown=0:UtilListPointer=0 7�'PrefsValPointer=0:PrefsIndPointer=0 7�!StartingUp=�:StartUpCounter=0 7� : 7�.ProcessingPrefs=�:ProcessingPrefsCounter=0 7�BufferedStartup=-1 7�M� If the user clicks the OmniDesk icon or chooses a utility from the menu 7�K� whilst the starting-up or quitting of tasks due to an OK click in the 7�J� Prefs window is taking place, we need to ignore the click until this 7�O� processing has finished. BufferedStartup records which utility is wanted. 8 : 8DropWindowUtil=-1 8 : 8"FSelectedLoadSwitches$="YYY":� The first three utilities always on. 8,N� We keep a string record of which switches are on in order to update them 86&� when the Prefs window is opened. 8@ : 8J� MaxUtils=0 � 8T$ � Must update the Prefs window 8^ � N=21 � 31 � 5 8h& �UpdateSelectedFlag(Prefs,N,�) 8r= Block!0=Prefs:Block!4=N:ș "Wimp_GetIconState",,Block 8|A Block!8=0:Block!12=(15<<12):ș "Wimp_SetIconState",,Block 8�E � Change button type to Never and fix these buttons ON, since 8�D � the first three utilities are provided by OmniDesk itself. 8� � 8�7 � Grey out the inappropriate dragging radio icons 8�# �UpdateShadedFlag(Prefs,24,�) 8�# �UpdateShadedFlag(Prefs,29,�) 8�� 8�� �
00000000 0d 00 0a 1d f4 20 3e 21 52 75 6e 49 6d 61 67 65 |..... >!RunImage| 00000010 20 66 6f 72 20 4f 6d 6e 69 44 65 73 6b 0d 00 14 | for OmniDesk...| 00000020 05 3a 0d 00 1e 28 56 65 72 73 69 6f 6e 4e 75 6d |.:...(VersionNum| 00000030 62 65 72 24 3d 22 31 b7 30 37 20 28 33 31 20 4a |ber$="1.07 (31 J| 00000040 75 6c 79 20 31 39 39 33 29 22 0d 00 28 2a 44 6f |uly 1993)"..(*Do| 00000050 6e 65 3d a3 3a 44 6f 4d 6f 64 65 43 68 61 6e 67 |ne=.:DoModeChang| 00000060 65 3d a3 3a 55 74 69 6c 69 74 69 65 73 4b 6e 6f |e=.:UtilitiesKno| 00000070 77 6e 3d 30 0d 00 32 05 3a 0d 00 3c 5e f4 20 52 |wn=0..2.:..<^. R| 00000080 65 61 64 20 73 69 7a 65 20 6f 66 20 73 70 72 69 |ead size of spri| 00000090 74 65 20 66 69 6c 65 20 61 6e 64 20 6c 6f 61 64 |te file and load| 000000a0 20 69 74 2e 20 57 65 20 6e 65 65 64 20 74 6f 20 | it. We need to | 000000b0 44 49 4d 20 31 36 20 62 79 74 65 73 20 6d 6f 72 |DIM 16 bytes mor| 000000c0 65 20 74 68 61 6e 20 74 68 65 20 66 69 6c 65 27 |e than the file'| 000000d0 73 20 73 69 7a 65 2e 0d 00 46 43 c8 99 20 22 4f |s size...FC.. "O| 000000e0 53 5f 46 53 43 6f 6e 74 72 6f 6c 22 2c 32 38 2c |S_FSControl",28,| 000000f0 22 3c 4f 6d 6e 69 44 65 73 6b 24 44 69 72 3e 2e |"<OmniDesk$Dir>.| 00000100 52 65 73 6f 75 72 63 65 73 2e 53 70 72 69 74 65 |Resources.Sprite| 00000110 73 22 20 b8 20 2c 2c 6c 65 6e 0d 00 50 8e de 20 |s" . ,,len..P.. | 00000120 53 70 72 69 74 65 73 20 6c 65 6e 2b 31 36 3a 21 |Sprites len+16:!| 00000130 53 70 72 69 74 65 73 3d 6c 65 6e 2b 31 36 3a 53 |Sprites=len+16:S| 00000140 70 72 69 74 65 73 21 34 3d 30 3a 53 70 72 69 74 |prites!4=0:Sprit| 00000150 65 73 21 38 3d 31 36 3a 53 70 72 69 74 65 73 21 |es!8=16:Sprites!| 00000160 31 32 3d 31 36 3a c8 99 20 22 4f 53 5f 53 70 72 |12=16:.. "OS_Spr| 00000170 69 74 65 4f 70 22 2c 32 35 36 2b 31 30 2c 53 70 |iteOp",256+10,Sp| 00000180 72 69 74 65 73 2c 22 3c 4f 6d 6e 69 44 65 73 6b |rites,"<OmniDesk| 00000190 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 2e |$Dir>.Resources.| 000001a0 53 70 72 69 74 65 73 22 0d 00 5a 05 3a 0d 00 64 |Sprites"..Z.:..d| 000001b0 24 de 20 42 6c 6f 63 6b 20 32 35 36 2c 4d 65 6e |$. Block 256,Men| 000001c0 75 48 65 6c 70 20 31 36 2c 43 61 72 65 74 20 32 |uHelp 16,Caret 2| 000001d0 34 0d 00 6e 05 3a 0d 00 78 2a f4 20 4d 65 73 73 |4..n.:..x*. Mess| 000001e0 61 67 65 73 20 75 73 65 64 20 62 79 20 74 68 65 |ages used by the| 000001f0 20 4f 6d 6e 69 44 65 73 6b 20 73 75 69 74 65 3a | OmniDesk suite:| 00000200 0d 00 82 5f 55 74 69 6c 44 65 63 6c 61 72 65 3d |..._UtilDeclare=| 00000210 26 38 32 35 43 30 3a 55 74 69 6c 4f 70 65 6e 3d |&825C0:UtilOpen=| 00000220 26 38 32 35 43 31 3a 55 74 69 6c 51 75 69 74 74 |&825C1:UtilQuitt| 00000230 69 6e 67 3d 26 38 32 35 43 32 3a 55 74 69 6c 52 |ing=&825C2:UtilR| 00000240 65 73 69 64 65 3d 26 38 32 35 43 33 3a 55 74 69 |eside=&825C3:Uti| 00000250 6c 41 63 6b 4c 6f 61 64 3d 26 38 32 35 43 34 0d |lAckLoad=&825C4.| 00000260 00 8c 2b f4 20 54 68 65 73 65 20 61 72 65 20 6f |..+. These are o| 00000270 66 66 69 63 69 61 6c 20 41 63 6f 72 6e 20 61 6c |fficial Acorn al| 00000280 6c 6f 63 61 74 69 6f 6e 73 2e 0d 00 96 05 3a 0d |locations.....:.| 00000290 00 a0 1a 4d 61 78 55 74 69 6c 73 3d a4 52 65 61 |...MaxUtils=.Rea| 000002a0 64 4d 61 78 55 74 69 6c 73 0d 00 aa 05 3a 0d 00 |dMaxUtils....:..| 000002b0 b4 30 49 6e 64 4d 65 6e 75 4d 61 78 3d 35 31 32 |.0IndMenuMax=512| 000002c0 3a de 20 49 6e 64 69 72 65 63 74 4d 65 6e 75 54 |:. IndirectMenuT| 000002d0 65 78 74 20 49 6e 64 4d 65 6e 75 4d 61 78 0d 00 |ext IndMenuMax..| 000002e0 be 47 de 20 54 65 6d 70 6c 61 74 65 73 20 31 37 |.G. Templates 17| 000002f0 36 30 2c 49 6e 66 6f 49 6e 64 20 32 37 34 2c 50 |60,InfoInd 274,P| 00000300 72 65 66 73 49 6e 64 20 36 34 30 2c 44 72 6f 70 |refsInd 640,Drop| 00000310 49 6e 64 20 31 30 33 2c 4c 6f 61 64 69 6e 67 49 |Ind 103,LoadingI| 00000320 6e 64 20 37 39 0d 00 c8 10 de 20 49 42 4d 65 6e |nd 79..... IBMen| 00000330 75 20 31 32 34 0d 00 d2 76 de 20 55 74 69 6c 73 |u 124...v. Utils| 00000340 4d 65 6e 75 20 32 38 2b 28 33 2a 32 34 29 2b 28 |Menu 28+(3*24)+(| 00000350 4d 61 78 55 74 69 6c 73 2a 32 34 29 2c 55 74 69 |MaxUtils*24),Uti| 00000360 6c 4c 69 73 74 42 75 66 66 65 72 20 31 31 2a 4d |lListBuffer 11*M| 00000370 61 78 55 74 69 6c 73 2c 45 78 74 72 61 50 72 65 |axUtils,ExtraPre| 00000380 66 73 49 6e 64 20 32 30 2a 4d 61 78 55 74 69 6c |fsInd 20*MaxUtil| 00000390 73 2c 45 78 74 72 61 50 72 65 66 73 56 61 6c 20 |s,ExtraPrefsVal | 000003a0 36 38 2a 4d 61 78 55 74 69 6c 73 0d 00 dc 05 3a |68*MaxUtils....:| 000003b0 0d 00 e6 6f ee 20 85 20 42 6c 6f 63 6b 21 30 3d |...o. . Block!0=| 000003c0 9f 3a 24 28 42 6c 6f 63 6b 2b 34 29 3d f6 24 2b |.:$(Block+4)=.$+| 000003d0 22 20 28 69 6e 74 65 72 6e 61 6c 20 65 72 72 6f |" (internal erro| 000003e0 72 20 63 6f 64 65 20 22 2b c3 28 9e 29 2b 22 29 |r code "+.(.)+")| 000003f0 22 2b bd 30 3a c8 99 20 22 57 69 6d 70 5f 52 65 |"+.0:.. "Wimp_Re| 00000400 70 6f 72 74 45 72 72 6f 72 22 2c 42 6c 6f 63 6b |portError",Block| 00000410 2c 31 2c 22 4f 6d 6e 69 44 65 73 6b 22 3a e0 0d |,1,"OmniDesk":..| 00000420 00 f0 05 3a 0d 00 fa 1a 2a 53 65 74 20 4f 6d 6e |...:....*Set Omn| 00000430 69 44 65 73 6b 24 52 49 53 43 4f 53 20 33 0d 01 |iDesk$RISCOS 3..| 00000440 04 36 2a 52 4d 45 6e 73 75 72 65 20 55 74 69 6c |.6*RMEnsure Util| 00000450 69 74 79 4d 6f 64 75 6c 65 20 33 2e 30 30 20 53 |ityModule 3.00 S| 00000460 65 74 20 4f 6d 6e 69 44 65 73 6b 24 52 49 53 43 |et OmniDesk$RISC| 00000470 4f 53 20 32 0d 01 0e 59 c8 99 20 22 58 4f 53 5f |OS 2...Y.. "XOS_| 00000480 52 65 61 64 56 61 72 56 61 6c 22 2c 22 4f 6d 6e |ReadVarVal","Omn| 00000490 69 44 65 73 6b 24 52 49 53 43 4f 53 22 2c 42 6c |iDesk$RISCOS",Bl| 000004a0 6f 63 6b 2c 32 35 36 2c 30 2c 30 20 b8 20 2c 2c |ock,256,0,0 . ,,| 000004b0 6c 65 6e 3a 42 6c 6f 63 6b 3f 6c 65 6e 3d 31 33 |len:Block?len=13| 000004c0 3a 77 69 6d 70 24 3d 24 42 6c 6f 63 6b 0d 01 18 |:wimp$=$Block...| 000004d0 1c e7 20 77 69 6d 70 24 3c 3e 22 33 22 20 8c 20 |.. wimp$<>"3" . | 000004e0 77 69 6d 70 24 3d 22 32 22 0d 01 22 1a 2a 55 6e |wimp$="2"..".*Un| 000004f0 73 65 74 20 4f 6d 6e 69 44 65 73 6b 24 52 49 53 |set OmniDesk$RIS| 00000500 43 4f 53 0d 01 2c 5d c8 99 20 22 58 4f 53 5f 52 |COS..,].. "XOS_R| 00000510 65 61 64 56 61 72 56 61 6c 22 2c 22 4f 6d 6e 69 |eadVarVal","Omni| 00000520 44 65 73 6b 24 44 69 72 22 2c 42 6c 6f 63 6b 2c |Desk$Dir",Block,| 00000530 32 35 36 2c 30 2c 30 20 b8 20 2c 2c 6c 65 6e 3a |256,0,0 . ,,len:| 00000540 42 6c 6f 63 6b 3f 6c 65 6e 3d 31 33 3a 4f 75 72 |Block?len=13:Our| 00000550 46 69 6c 65 4e 61 6d 65 24 3d 24 42 6c 6f 63 6b |FileName$=$Block| 00000560 0d 01 36 38 4e 3d 2d 31 3a f5 3a 4e 2b 3d 31 3a |..68N=-1:.:N+=1:| 00000570 fd 20 c1 4f 75 72 46 69 6c 65 4e 61 6d 65 24 2c |. .OurFileName$,| 00000580 a9 28 4f 75 72 46 69 6c 65 4e 61 6d 65 24 29 2d |.(OurFileName$)-| 00000590 4e 2c 31 29 3d 22 2e 22 0d 01 40 4f 4f 75 72 50 |N,1)="."..@OOurP| 000005a0 61 74 68 4e 61 6d 65 24 3d c0 4f 75 72 46 69 6c |athName$=.OurFil| 000005b0 65 4e 61 6d 65 24 2c a9 28 4f 75 72 46 69 6c 65 |eName$,.(OurFile| 000005c0 4e 61 6d 65 24 29 2d 4e 29 3a 4f 75 72 46 69 6c |Name$)-N):OurFil| 000005d0 65 4e 61 6d 65 24 3d c2 4f 75 72 46 69 6c 65 4e |eName$=.OurFileN| 000005e0 61 6d 65 24 2c 4e 29 0d 01 4a 05 3a 0d 01 54 11 |ame$,N)..J.:..T.| 000005f0 e7 20 77 69 6d 70 24 3d 22 33 22 20 8c 0d 01 5e |. wimp$="3" ...^| 00000600 17 20 20 de 20 6d 65 73 73 61 67 65 6c 69 73 74 |. . messagelist| 00000610 25 20 33 36 0d 01 68 3c 20 20 6d 65 73 73 61 67 |% 36..h< messag| 00000620 65 6c 69 73 74 25 21 30 3d 55 74 69 6c 51 75 69 |elist%!0=UtilQui| 00000630 74 74 69 6e 67 3a 6d 65 73 73 61 67 65 6c 69 73 |tting:messagelis| 00000640 74 25 21 34 3d 55 74 69 6c 44 65 63 6c 61 72 65 |t%!4=UtilDeclare| 00000650 0d 01 72 4c 20 20 6d 65 73 73 61 67 65 6c 69 73 |..rL messagelis| 00000660 74 25 21 38 3d 55 74 69 6c 41 63 6b 4c 6f 61 64 |t%!8=UtilAckLoad| 00000670 3a 6d 65 73 73 61 67 65 6c 69 73 74 25 21 31 32 |:messagelist%!12| 00000680 3d 26 34 30 30 43 31 3a 6d 65 73 73 61 67 65 6c |=&400C1:messagel| 00000690 69 73 74 25 21 31 36 3d 26 35 30 32 0d 01 7c 4e |ist%!16=&502..|N| 000006a0 20 20 6d 65 73 73 61 67 65 6c 69 73 74 25 21 32 | messagelist%!2| 000006b0 30 3d 31 30 3a 6d 65 73 73 61 67 65 6c 69 73 74 |0=10:messagelist| 000006c0 25 21 32 34 3d 33 3a 6d 65 73 73 61 67 65 6c 69 |%!24=3:messageli| 000006d0 73 74 25 21 32 38 3d 31 3a 6d 65 73 73 61 67 65 |st%!28=1:message| 000006e0 6c 69 73 74 25 21 33 32 3d 30 0d 01 86 4c 20 20 |list%!32=0...L | 000006f0 c8 99 20 22 57 69 6d 70 5f 49 6e 69 74 69 61 6c |.. "Wimp_Initial| 00000700 69 73 65 22 2c 33 30 30 2c 26 34 42 35 33 34 31 |ise",300,&4B5341| 00000710 35 34 2c 22 4f 6d 6e 69 44 65 73 6b 22 2c 6d 65 |54,"OmniDesk",me| 00000720 73 73 61 67 65 6c 69 73 74 25 20 b8 20 77 69 6d |ssagelist% . wim| 00000730 70 2c 54 61 73 6b 0d 01 90 05 cc 0d 01 9a 3f 20 |p,Task........? | 00000740 20 c8 99 20 22 57 69 6d 70 5f 49 6e 69 74 69 61 | .. "Wimp_Initia| 00000750 6c 69 73 65 22 2c 32 30 30 2c 26 34 42 35 33 34 |lise",200,&4B534| 00000760 31 35 34 2c 22 4f 6d 6e 69 44 65 73 6b 22 20 b8 |154,"OmniDesk" .| 00000770 20 77 69 6d 70 2c 54 61 73 6b 0d 01 a4 05 cd 0d | wimp,Task......| 00000780 01 ae 05 3a 0d 01 b8 22 c8 99 20 22 49 6e 74 65 |...:...".. "Inte| 00000790 72 66 61 63 65 5f 49 6e 69 74 69 61 6c 69 73 65 |rface_Initialise| 000007a0 22 2c 54 61 73 6b 0d 01 c2 05 3a 0d 01 cc 40 c8 |",Task....:...@.| 000007b0 99 20 22 57 69 6d 70 5f 4f 70 65 6e 54 65 6d 70 |. "Wimp_OpenTemp| 000007c0 6c 61 74 65 22 2c 2c 22 3c 4f 6d 6e 69 44 65 73 |late",,"<OmniDes| 000007d0 6b 24 44 69 72 3e 2e 52 65 73 6f 75 72 63 65 73 |k$Dir>.Resources| 000007e0 2e 54 65 6d 70 6c 61 74 65 73 22 0d 01 d6 5a c8 |.Templates"...Z.| 000007f0 99 20 22 57 69 6d 70 5f 4c 6f 61 64 54 65 6d 70 |. "Wimp_LoadTemp| 00000800 6c 61 74 65 22 2c 2c 54 65 6d 70 6c 61 74 65 73 |late",,Templates| 00000810 2c 49 6e 66 6f 49 6e 64 2c 49 6e 66 6f 49 6e 64 |,InfoInd,InfoInd| 00000820 2b 32 37 34 2c 2d 31 2c 22 49 6e 66 6f 22 2c 30 |+274,-1,"Info",0| 00000830 3a 54 65 6d 70 6c 61 74 65 73 21 36 34 3d 53 70 |:Templates!64=Sp| 00000840 72 69 74 65 73 0d 01 e0 2c c8 99 20 22 57 69 6d |rites...,.. "Wim| 00000850 70 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c |p_CreateWindow",| 00000860 2c 54 65 6d 70 6c 61 74 65 73 20 b8 20 49 6e 66 |,Templates . Inf| 00000870 6f 0d 01 ea 5a c8 99 20 22 57 69 6d 70 5f 4c 6f |o...Z.. "Wimp_Lo| 00000880 61 64 54 65 6d 70 6c 61 74 65 22 2c 2c 54 65 6d |adTemplate",,Tem| 00000890 70 6c 61 74 65 73 2c 44 72 6f 70 49 6e 64 2c 44 |plates,DropInd,D| 000008a0 72 6f 70 49 6e 64 2b 31 30 34 2c 2d 31 2c 22 44 |ropInd+104,-1,"D| 000008b0 72 6f 70 22 2c 30 3a 54 65 6d 70 6c 61 74 65 73 |rop",0:Templates| 000008c0 21 36 34 3d 53 70 72 69 74 65 73 0d 01 f4 2c c8 |!64=Sprites...,.| 000008d0 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 |. "Wimp_CreateWi| 000008e0 6e 64 6f 77 22 2c 2c 54 65 6d 70 6c 61 74 65 73 |ndow",,Templates| 000008f0 20 b8 20 44 72 6f 70 0d 01 fe 5d c8 99 20 22 57 | . Drop...].. "W| 00000900 69 6d 70 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 |imp_LoadTemplate| 00000910 22 2c 2c 54 65 6d 70 6c 61 74 65 73 2c 50 72 65 |",,Templates,Pre| 00000920 66 73 49 6e 64 2c 50 72 65 66 73 49 6e 64 2b 36 |fsInd,PrefsInd+6| 00000930 34 32 2c 2d 31 2c 22 50 72 65 66 73 22 2c 30 3a |42,-1,"Prefs",0:| 00000940 54 65 6d 70 6c 61 74 65 73 21 36 34 3d 53 70 72 |Templates!64=Spr| 00000950 69 74 65 73 0d 02 08 2d c8 99 20 22 57 69 6d 70 |ites...-.. "Wimp| 00000960 5f 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c |_CreateWindow",,| 00000970 54 65 6d 70 6c 61 74 65 73 20 b8 20 50 72 65 66 |Templates . Pref| 00000980 73 0d 02 12 62 c8 99 20 22 57 69 6d 70 5f 4c 6f |s...b.. "Wimp_Lo| 00000990 61 64 54 65 6d 70 6c 61 74 65 22 2c 2c 54 65 6d |adTemplate",,Tem| 000009a0 70 6c 61 74 65 73 2c 4c 6f 61 64 69 6e 67 49 6e |plates,LoadingIn| 000009b0 64 2c 4c 6f 61 64 69 6e 67 49 6e 64 2b 37 39 2c |d,LoadingInd+79,| 000009c0 2d 31 2c 22 4c 6f 61 64 69 6e 67 22 2c 30 3a 54 |-1,"Loading",0:T| 000009d0 65 6d 70 6c 61 74 65 73 21 36 34 3d 53 70 72 69 |emplates!64=Spri| 000009e0 74 65 73 0d 02 1c 2f c8 99 20 22 57 69 6d 70 5f |tes.../.. "Wimp_| 000009f0 43 72 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c 54 |CreateWindow",,T| 00000a00 65 6d 70 6c 61 74 65 73 20 b8 20 4c 6f 61 64 69 |emplates . Loadi| 00000a10 6e 67 0d 02 26 1b c8 99 20 22 57 69 6d 70 5f 43 |ng..&... "Wimp_C| 00000a20 6c 6f 73 65 54 65 6d 70 6c 61 74 65 22 0d 02 30 |loseTemplate"..0| 00000a30 05 3a 0d 02 3a 35 f4 20 4d 61 6b 65 20 73 75 72 |.:..:5. Make sur| 00000a40 65 20 6e 6f 6e 65 20 6f 66 20 74 68 65 20 72 61 |e none of the ra| 00000a50 64 69 6f 20 69 63 6f 6e 73 20 61 72 65 20 73 65 |dio icons are se| 00000a60 6c 65 63 74 65 64 3a 0d 02 44 13 e3 20 4e 3d 32 |lected:..D.. N=2| 00000a70 33 20 b8 20 33 33 20 88 20 35 0d 02 4e 0f 20 20 |3 . 33 . 5..N. | 00000a80 e3 20 4d 3d 30 20 b8 20 32 0d 02 58 28 20 20 20 |. M=0 . 2..X( | 00000a90 20 f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 | .UpdateSelected| 00000aa0 46 6c 61 67 28 50 72 65 66 73 2c 4e 2b 4d 2c a3 |Flag(Prefs,N+M,.| 00000ab0 29 0d 02 62 07 20 20 ed 0d 02 6c 05 ed 0d 02 76 |)..b. ...l....v| 00000ac0 05 3a 0d 02 80 25 f2 4f 70 65 6e 4c 6f 61 64 69 |.:...%.OpenLoadi| 00000ad0 6e 67 57 69 6e 64 6f 77 28 22 4c 6f 61 64 69 6e |ngWindow("Loadin| 00000ae0 67 20 2e 2e 2e 22 29 0d 02 8a 05 3a 0d 02 94 2b |g ...")....:...+| 00000af0 53 45 4c 45 43 54 55 74 69 6c 3d 2d 31 3a 41 44 |SELECTUtil=-1:AD| 00000b00 4a 55 53 54 55 74 69 6c 3d 2d 31 3a 44 52 41 47 |JUSTUtil=-1:DRAG| 00000b10 55 74 69 6c 3d 2d 31 0d 02 9e 2e 53 45 4c 45 43 |Util=-1....SELEC| 00000b20 54 55 74 69 6c 24 3d 22 22 3a 41 44 4a 55 53 54 |TUtil$="":ADJUST| 00000b30 55 74 69 6c 24 3d 22 22 3a 44 52 41 47 55 74 69 |Util$="":DRAGUti| 00000b40 6c 24 3d 22 22 0d 02 a8 2e 53 45 4c 45 43 54 48 |l$=""....SELECTH| 00000b50 65 6c 70 24 3d 22 22 3a 41 44 4a 55 53 54 48 65 |elp$="":ADJUSTHe| 00000b60 6c 70 24 3d 22 22 3a 44 52 41 47 48 65 6c 70 24 |lp$="":DRAGHelp$| 00000b70 3d 22 22 0d 02 b2 21 52 65 61 64 45 72 72 6f 72 |=""...!ReadError| 00000b80 3d ac 20 a4 46 69 6e 64 49 42 43 6c 69 63 6b 55 |=. .FindIBClickU| 00000b90 74 69 6c 73 0d 02 bc 59 f4 20 57 65 20 6e 65 65 |tils...Y. We nee| 00000ba0 64 20 74 6f 20 6c 6f 61 64 20 74 68 65 73 65 20 |d to load these | 00000bb0 64 65 74 61 69 6c 73 20 62 65 66 6f 72 65 20 74 |details before t| 00000bc0 68 65 20 72 65 73 74 20 6f 66 20 74 68 65 20 63 |he rest of the c| 00000bd0 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65 20 53 |ontents of the S| 00000be0 65 74 74 69 6e 67 73 20 66 69 6c 65 2e 0d 02 c6 |ettings file....| 00000bf0 41 f4 20 54 68 65 72 65 66 6f 72 65 20 74 68 65 |A. Therefore the| 00000c00 72 65 20 69 73 20 61 6e 6f 74 68 65 72 20 63 61 |re is another ca| 00000c10 6c 6c 20 74 6f 20 72 65 61 64 20 74 68 65 20 73 |ll to read the s| 00000c20 65 74 74 69 6e 67 73 20 6c 61 74 65 72 2e 0d 02 |ettings later...| 00000c30 d0 05 3a 0d 02 da 0e f2 53 63 61 6e 55 74 69 6c |..:.....ScanUtil| 00000c40 73 0d 02 e4 05 3a 0d 02 ee 0d f2 49 6e 69 74 56 |s....:.....InitV| 00000c50 61 72 73 0d 02 f8 0f f2 42 75 69 6c 64 4d 65 6e |ars.....BuildMen| 00000c60 75 73 0d 03 02 70 48 6f 74 4b 65 79 73 3d a4 43 |us...pHotKeys=.C| 00000c70 72 65 61 74 65 57 69 6e 64 6f 77 28 30 2c 30 2c |reateWindow(0,0,| 00000c80 30 2c 30 2c 30 2c 30 2c 2d 32 2c 25 31 30 30 30 |0,0,0,0,-2,%1000| 00000c90 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 31 |0000000000000001| 00000ca0 30 30 30 30 30 31 30 31 30 30 30 30 2c 26 46 46 |000001010000,&FF| 00000cb0 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 |,0,0,0,0,0,0,0,0| 00000cc0 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 22 |,0,0,0,0,0,0,0,"| 00000cd0 22 29 0d 03 0c 18 f2 4f 70 65 6e 28 48 6f 74 4b |").....Open(HotK| 00000ce0 65 79 73 2c a3 2c 30 2c 30 29 0d 03 16 05 3a 0d |eys,.,0,0)....:.| 00000cf0 03 20 0f f2 49 6e 69 74 69 61 6c 69 73 65 0d 03 |. ..Initialise..| 00000d00 2a 05 3a 0d 03 34 1e 52 65 61 64 45 72 72 6f 72 |*.:..4.ReadError| 00000d10 3d ac 28 a4 4c 6f 61 64 53 65 74 74 69 6e 67 73 |=.(.LoadSettings| 00000d20 29 0d 03 3e 05 3a 0d 03 48 0e ee 20 85 20 f2 45 |)..>.:..H.. . .E| 00000d30 72 72 6f 72 0d 03 52 94 e7 20 52 65 61 64 45 72 |rror..R.. ReadEr| 00000d40 72 6f 72 20 8c 20 52 65 61 64 45 72 72 6f 72 3d |ror . ReadError=| 00000d50 a3 3a f2 44 65 66 61 75 6c 74 53 65 74 74 69 6e |.:.DefaultSettin| 00000d60 67 73 3a 85 20 39 39 39 39 2c 22 41 6e 20 65 72 |gs:. 9999,"An er| 00000d70 72 6f 72 20 6f 63 63 75 72 72 65 64 20 77 68 69 |ror occurred whi| 00000d80 6c 73 74 20 72 65 61 64 69 6e 67 20 74 68 65 20 |lst reading the | 00000d90 73 65 74 74 69 6e 67 73 20 66 69 6c 65 2e 20 44 |settings file. D| 00000da0 65 66 61 75 6c 74 20 73 65 74 74 69 6e 67 73 20 |efault settings | 00000db0 77 69 6c 6c 20 74 68 65 72 65 66 6f 72 65 20 62 |will therefore b| 00000dc0 65 20 75 73 65 64 2e 22 0d 03 5c 21 ff 28 22 53 |e used."..\!.("S| 00000dd0 65 74 20 4f 6d 6e 69 44 65 73 6b 24 52 75 6e 6e |et OmniDesk$Runn| 00000de0 69 6e 67 20 59 65 73 22 29 0d 03 66 29 c8 99 20 |ing Yes")..f).. | 00000df0 22 4f 53 5f 52 65 61 64 4d 6f 6e 6f 74 6f 6e 69 |"OS_ReadMonotoni| 00000e00 63 54 69 6d 65 22 20 b8 20 70 6f 6c 6c 74 69 6d |cTime" . polltim| 00000e10 65 25 0d 03 70 05 3a 0d 03 7a 17 f4 20 4d 61 69 |e%..p.:..z.. Mai| 00000e20 6e 20 70 72 6f 67 72 61 6d 20 6c 6f 6f 70 0d 03 |n program loop..| 00000e30 84 05 f5 0d 03 8e 40 20 20 c8 99 20 22 57 69 6d |......@ .. "Wim| 00000e40 70 5f 50 6f 6c 6c 49 64 6c 65 22 2c 25 31 31 30 |p_PollIdle",%110| 00000e50 30 30 30 30 31 31 30 30 30 30 2c 42 6c 6f 63 6b |0000110000,Block| 00000e60 2c 70 6f 6c 6c 74 69 6d 65 25 20 b8 20 52 65 61 |,polltime% . Rea| 00000e70 73 6f 6e 0d 03 98 26 20 20 c8 99 20 22 49 6e 74 |son...& .. "Int| 00000e80 65 72 66 61 63 65 5f 50 6f 6c 6c 22 2c 52 65 61 |erface_Poll",Rea| 00000e90 73 6f 6e 2c 2c 54 61 73 6b 0d 03 a2 34 20 20 c8 |son,,Task...4 .| 00000ea0 99 20 22 49 6e 74 65 72 66 61 63 65 5f 50 72 65 |. "Interface_Pre| 00000eb0 50 72 6f 63 65 73 73 4b 65 79 22 2c 52 65 61 73 |ProcessKey",Reas| 00000ec0 6f 6e 2c 42 6c 6f 63 6b 2c 54 61 73 6b 0d 03 ac |on,Block,Task...| 00000ed0 11 20 20 c8 8e 20 52 65 61 73 6f 6e 20 ca 0d 03 |. .. Reason ...| 00000ee0 b6 17 20 20 20 20 c9 20 30 20 3a 20 f2 54 61 73 |.. . 0 : .Tas| 00000ef0 6b 49 64 6c 65 0d 03 c0 15 20 20 20 20 c9 20 31 |kIdle.... . 1| 00000f00 20 3a 20 f2 52 65 64 72 61 77 0d 03 ca 29 20 20 | : .Redraw...) | 00000f10 20 20 c9 20 32 20 3a 20 c8 99 20 22 57 69 6d 70 | . 2 : .. "Wimp| 00000f20 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 42 6c |_OpenWindow",,Bl| 00000f30 6f 63 6b 0d 03 d4 2a 20 20 20 20 c9 20 33 20 3a |ock...* . 3 :| 00000f40 20 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 | .. "Wimp_CloseW| 00000f50 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 0d 03 de |indow",,Block...| 00000f60 33 20 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 |3 . | 00000f70 42 6c 6f 63 6b 21 30 3d 44 72 6f 70 20 8c 20 44 |Block!0=Drop . D| 00000f80 72 6f 70 57 69 6e 64 6f 77 55 74 69 6c 3d 2d 31 |ropWindowUtil=-1| 00000f90 0d 03 e8 1a 20 20 20 20 c9 20 36 20 3a 20 f2 4d |.... . 6 : .M| 00000fa0 6f 75 73 65 42 75 74 74 6f 6e 0d 03 f2 19 20 20 |ouseButton.... | 00000fb0 20 20 c9 20 38 20 3a 20 f2 4b 65 79 50 72 65 73 | . 8 : .KeyPres| 00000fc0 73 65 64 0d 03 fc 19 20 20 20 20 c9 20 39 20 3a |sed.... . 9 :| 00000fd0 20 f2 44 65 63 6f 64 65 4d 65 6e 75 0d 04 06 24 | .DecodeMenu...$| 00000fe0 20 20 20 20 c9 20 31 37 2c 31 38 2c 31 39 20 3a | . 17,18,19 :| 00000ff0 20 f2 52 65 63 69 65 76 65 4d 65 73 73 61 67 65 | .RecieveMessage| 00001000 0d 04 10 07 20 20 cb 0d 04 1a 0a fd 20 44 6f 6e |.... ...... Don| 00001010 65 0d 04 24 3d 42 6c 6f 63 6b 21 30 3d 32 34 3a |e..$=Block!0=24:| 00001020 42 6c 6f 63 6b 21 31 32 3d 30 3a 42 6c 6f 63 6b |Block!12=0:Block| 00001030 21 31 36 3d 55 74 69 6c 51 75 69 74 74 69 6e 67 |!16=UtilQuitting| 00001040 3a 42 6c 6f 63 6b 21 32 30 3d 54 61 73 6b 0d 04 |:Block!20=Task..| 00001050 2e 4e c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d |.N.. "Wimp_SendM| 00001060 65 73 73 61 67 65 22 2c 31 37 2c 42 6c 6f 63 6b |essage",17,Block| 00001070 2c 30 3a f4 20 42 72 6f 61 64 63 61 73 74 20 51 |,0:. Broadcast Q| 00001080 75 69 74 20 74 6f 20 61 6e 79 20 6c 6f 61 64 65 |uit to any loade| 00001090 64 20 75 74 69 6c 69 74 69 65 73 2e 0d 04 38 21 |d utilities...8!| 000010a0 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f 43 6c |.. "Interface_Cl| 000010b0 6f 73 65 44 6f 77 6e 22 2c 54 61 73 6b 0d 04 42 |oseDown",Task..B| 000010c0 26 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 44 |&.. "Wimp_CloseD| 000010d0 6f 77 6e 22 2c 54 61 73 6b 2c 26 34 42 35 33 34 |own",Task,&4B534| 000010e0 31 35 34 0d 04 4c 1f ff 28 22 55 6e 53 65 74 20 |154..L..("UnSet | 000010f0 4f 6d 6e 69 44 65 73 6b 24 52 75 6e 6e 69 6e 67 |OmniDesk$Running| 00001100 22 29 0d 04 56 05 e0 0d 04 60 05 3a 0d 04 6a 0c |")..V....`.:..j.| 00001110 dd 20 f2 45 72 72 6f 72 0d 04 74 1c 43 6c 69 63 |. .Error..t.Clic| 00001120 6b 3d 30 3a 42 6c 6f 63 6b 21 30 3d 9f 3a c8 8e |k=0:Block!0=.:..| 00001130 20 9f 20 ca 0d 04 7e 1b 20 20 c9 20 39 39 39 39 | . ...~. . 9999| 00001140 3a f4 20 43 75 73 74 6f 6d 20 65 72 72 6f 72 0d |:. Custom error.| 00001150 04 88 18 20 20 20 20 24 28 42 6c 6f 63 6b 2b 34 |... $(Block+4| 00001160 29 3d f6 24 2b bd 30 0d 04 92 3d 20 20 20 20 c8 |)=.$+.0...= .| 00001170 99 20 22 57 69 6d 70 5f 52 65 70 6f 72 74 45 72 |. "Wimp_ReportEr| 00001180 72 6f 72 22 2c 42 6c 6f 63 6b 2c 31 37 2c 22 4e |ror",Block,17,"N| 00001190 6f 74 69 63 65 20 66 72 6f 6d 20 4f 6d 6e 69 44 |otice from OmniD| 000011a0 65 73 6b 22 0d 04 9c 07 20 20 7f 0d 04 a6 76 20 |esk".... ....v | 000011b0 20 20 20 24 28 42 6c 6f 63 6b 2b 34 29 3d f6 24 | $(Block+4)=.$| 000011c0 2b 22 20 28 69 6e 74 65 72 6e 61 6c 20 65 72 72 |+" (internal err| 000011d0 6f 72 20 63 6f 64 65 20 22 2b c3 9e 2b 22 29 2e |or code "+..+").| 000011e0 20 43 6c 69 63 6b 20 6f 6e 20 4f 4b 20 74 6f 20 | Click on OK to | 000011f0 63 6f 6e 74 69 6e 75 65 2c 20 6f 72 20 43 61 6e |continue, or Can| 00001200 63 65 6c 20 74 6f 20 74 65 72 6d 69 6e 61 74 65 |cel to terminate| 00001210 20 74 68 65 20 70 72 6f 67 72 61 6d 2e 22 2b bd | the program."+.| 00001220 30 0d 04 b0 39 20 20 20 20 c8 99 20 22 57 69 6d |0...9 .. "Wim| 00001230 70 5f 52 65 70 6f 72 74 45 72 72 6f 72 22 2c 42 |p_ReportError",B| 00001240 6c 6f 63 6b 2c 33 2c 22 4f 6d 6e 69 44 65 73 6b |lock,3,"OmniDesk| 00001250 22 20 b8 20 2c 43 6c 69 63 6b 0d 04 ba 05 cb 0d |" . ,Click......| 00001260 04 c4 6a e7 20 43 6c 69 63 6b 3d 32 20 8c 20 42 |..j. Click=2 . B| 00001270 6c 6f 63 6b 21 30 3d 32 34 3a 42 6c 6f 63 6b 21 |lock!0=24:Block!| 00001280 31 32 3d 30 3a 42 6c 6f 63 6b 21 31 36 3d 55 74 |12=0:Block!16=Ut| 00001290 69 6c 51 75 69 74 74 69 6e 67 3a 42 6c 6f 63 6b |ilQuitting:Block| 000012a0 21 32 30 3d 54 61 73 6b 3a c8 99 20 22 57 69 6d |!20=Task:.. "Wim| 000012b0 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 |p_SendMessage",1| 000012c0 37 2c 42 6c 6f 63 6b 2c 30 0d 04 ce 6e e7 20 43 |7,Block,0...n. C| 000012d0 6c 69 63 6b 3d 32 20 8c 20 c8 99 20 22 49 6e 74 |lick=2 . .. "Int| 000012e0 65 72 66 61 63 65 5f 43 6c 6f 73 65 44 6f 77 6e |erface_CloseDown| 000012f0 22 2c 54 61 73 6b 3a c8 99 20 22 57 69 6d 70 5f |",Task:.. "Wimp_| 00001300 43 6c 6f 73 65 44 6f 77 6e 22 2c 54 61 73 6b 2c |CloseDown",Task,| 00001310 26 34 42 35 33 34 31 35 34 3a ff 28 22 55 6e 53 |&4B534154:.("UnS| 00001320 65 74 20 4f 6d 6e 69 44 65 73 6b 24 52 75 6e 6e |et OmniDesk$Runn| 00001330 69 6e 67 22 29 3a e0 0d 04 d8 05 e1 0d 04 e2 05 |ing"):..........| 00001340 3a 0d 04 ec 2e dd 20 f2 4f 70 65 6e 28 57 69 6e |:..... .Open(Win| 00001350 64 6f 77 48 61 6e 64 6c 65 2c 54 6f 70 4f 66 53 |dowHandle,TopOfS| 00001360 74 61 63 6b 2c 61 63 72 6f 73 73 2c 75 70 29 0d |tack,across,up).| 00001370 04 f6 18 42 6c 6f 63 6b 21 30 3d 57 69 6e 64 6f |...Block!0=Windo| 00001380 77 48 61 6e 64 6c 65 0d 05 00 23 c8 99 20 22 57 |wHandle...#.. "W| 00001390 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 61 |imp_GetWindowSta| 000013a0 74 65 22 2c 2c 42 6c 6f 63 6b 0d 05 0a 4a e7 20 |te",,Block...J. | 000013b0 28 61 63 72 6f 73 73 3c 3e 2d 31 29 20 80 20 28 |(across<>-1) . (| 000013c0 61 63 72 6f 73 73 3c 3e 2d 31 29 20 8c 20 f2 44 |across<>-1) . .D| 000013d0 65 63 69 64 65 57 69 6e 64 6f 77 50 6f 73 69 74 |ecideWindowPosit| 000013e0 69 6f 6e 28 42 6c 6f 63 6b 2c 61 63 72 6f 73 73 |ion(Block,across| 000013f0 2c 75 70 29 0d 05 14 1e e7 20 54 6f 70 4f 66 53 |,up)..... TopOfS| 00001400 74 61 63 6b 20 8c 20 42 6c 6f 63 6b 21 32 38 3d |tack . Block!28=| 00001410 2d 31 0d 05 1e 1f c8 99 20 22 57 69 6d 70 5f 4f |-1...... "Wimp_O| 00001420 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 |penWindow",,Bloc| 00001430 6b 0d 05 28 05 e1 0d 05 32 05 3a 0d 05 3c 1a dd |k..(....2.:..<..| 00001440 20 f2 43 6c 6f 73 65 28 57 69 6e 64 6f 77 48 61 | .Close(WindowHa| 00001450 6e 64 6c 65 29 0d 05 46 18 42 6c 6f 63 6b 21 30 |ndle)..F.Block!0| 00001460 3d 57 69 6e 64 6f 77 48 61 6e 64 6c 65 0d 05 50 |=WindowHandle..P| 00001470 23 c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e |#.. "Wimp_GetWin| 00001480 64 6f 77 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b |dowState",,Block| 00001490 0d 05 5a 20 c8 99 20 22 57 69 6d 70 5f 43 6c 6f |..Z .. "Wimp_Clo| 000014a0 73 65 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b |seWindow",,Block| 000014b0 0d 05 64 05 e1 0d 05 6e 05 3a 0d 05 78 2c dd 20 |..d....n.:..x,. | 000014c0 f2 44 65 63 69 64 65 57 69 6e 64 6f 77 50 6f 73 |.DecideWindowPos| 000014d0 69 74 69 6f 6e 28 42 6c 6f 63 6b 2c 61 63 72 6f |ition(Block,acro| 000014e0 73 73 2c 75 70 29 0d 05 82 4c f4 20 55 73 65 20 |ss,up)...L. Use | 000014f0 6f 66 20 74 68 69 73 20 70 72 6f 63 65 64 75 72 |of this procedur| 00001500 65 20 6c 65 74 73 20 79 6f 75 20 6f 70 65 6e 20 |e lets you open | 00001510 77 69 6e 64 6f 77 73 20 6f 6e 20 61 6e 20 69 6e |windows on an in| 00001520 76 69 73 69 62 6c 65 20 67 72 69 64 20 77 68 69 |visible grid whi| 00001530 63 68 0d 05 8c 49 f4 20 61 75 74 6f 6d 61 74 69 |ch...I. automati| 00001540 63 61 6c 6c 79 20 66 69 74 73 20 69 74 73 65 6c |cally fits itsel| 00001550 66 20 74 6f 20 74 68 65 20 73 63 72 65 65 6e 20 |f to the screen | 00001560 6d 6f 64 65 20 69 6e 20 75 73 65 2e 20 54 68 65 |mode in use. The| 00001570 72 65 20 61 72 65 20 66 69 76 65 0d 05 96 4a f4 |re are five...J.| 00001580 20 70 6f 73 69 74 69 6f 6e 73 20 61 63 72 6f 73 | positions acros| 00001590 73 20 28 6c 65 66 74 2c 20 6d 69 64 2d 6c 65 66 |s (left, mid-lef| 000015a0 74 2c 20 63 65 6e 74 72 65 2c 20 6d 69 64 2d 72 |t, centre, mid-r| 000015b0 69 67 68 74 2c 20 72 69 67 68 74 29 20 61 6e 64 |ight, right) and| 000015c0 20 66 69 76 65 0d 05 a0 47 f4 20 70 6f 73 69 74 | five...G. posit| 000015d0 69 6f 6e 73 20 75 70 20 28 62 6f 74 74 6f 6d 20 |ions up (bottom | 000015e0 6f 66 20 73 63 72 65 65 6e 2c 20 61 62 6f 76 65 |of screen, above| 000015f0 20 69 63 6f 6e 2d 62 61 72 2c 20 63 65 6e 74 72 | icon-bar, centr| 00001600 65 20 6f 66 20 73 63 72 65 65 6e 2c 0d 05 aa 2b |e of screen,...+| 00001610 f4 20 63 65 6e 74 72 65 20 74 6f 70 20 6f 66 20 |. centre top of | 00001620 73 63 72 65 65 6e 2c 20 74 6f 70 20 6f 66 20 73 |screen, top of s| 00001630 63 72 65 65 6e 29 2e 0d 05 b4 07 20 20 3a 0d 05 |creen)..... :..| 00001640 be 43 58 70 69 78 65 6c 73 3d a4 4d 6f 64 65 49 |.CXpixels=.ModeI| 00001650 6e 66 6f 28 22 58 50 69 78 65 6c 73 22 2c 2d 31 |nfo("XPixels",-1| 00001660 29 3a 59 70 69 78 65 6c 73 3d a4 4d 6f 64 65 49 |):Ypixels=.ModeI| 00001670 6e 66 6f 28 22 59 50 69 78 65 6c 73 22 2c 2d 31 |nfo("YPixels",-1| 00001680 29 0d 05 c8 4f 58 45 69 67 46 61 63 74 6f 72 3d |)...OXEigFactor=| 00001690 a4 4d 6f 64 65 49 6e 66 6f 28 22 58 45 69 67 46 |.ModeInfo("XEigF| 000016a0 61 63 74 6f 72 22 2c 2d 31 29 3a 59 45 69 67 46 |actor",-1):YEigF| 000016b0 61 63 74 6f 72 3d a4 4d 6f 64 65 49 6e 66 6f 28 |actor=.ModeInfo(| 000016c0 22 59 45 69 67 46 61 63 74 6f 72 22 2c 2d 31 29 |"YEigFactor",-1)| 000016d0 0d 05 d2 07 20 20 3a 0d 05 dc 38 74 6f 70 3d 42 |.... :...8top=B| 000016e0 6c 6f 63 6b 21 31 36 3a 72 69 67 68 74 3d 42 6c |lock!16:right=Bl| 000016f0 6f 63 6b 21 31 32 3a 62 6f 74 3d 42 6c 6f 63 6b |ock!12:bot=Block| 00001700 21 38 3a 6c 65 66 74 3d 42 6c 6f 63 6b 21 34 0d |!8:left=Block!4.| 00001710 05 e6 41 c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e |..A.. "Wimp_Open| 00001720 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 3a c8 |Window",,Block:.| 00001730 99 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f |. "Wimp_GetWindo| 00001740 77 4f 75 74 6c 69 6e 65 22 2c 2c 42 6c 6f 63 6b |wOutline",,Block| 00001750 0d 05 f0 26 54 42 3d 28 28 42 6c 6f 63 6b 21 31 |...&TB=((Block!1| 00001760 36 29 2d 74 6f 70 29 2f 28 32 5e 59 45 69 67 46 |6)-top)/(2^YEigF| 00001770 61 63 74 6f 72 29 0d 05 fa 28 56 53 3d 28 28 42 |actor)...(VS=((B| 00001780 6c 6f 63 6b 21 31 32 29 2d 72 69 67 68 74 29 2f |lock!12)-right)/| 00001790 28 32 5e 58 45 69 67 46 61 63 74 6f 72 29 0d 06 |(2^XEigFactor)..| 000017a0 04 25 48 53 3d 28 62 6f 74 2d 28 42 6c 6f 63 6b |.%HS=(bot-(Block| 000017b0 21 38 29 29 2f 28 32 5e 59 45 69 67 46 61 63 74 |!8))/(2^YEigFact| 000017c0 6f 72 29 0d 06 0e 26 4c 50 3d 28 6c 65 66 74 2d |or)...&LP=(left-| 000017d0 28 42 6c 6f 63 6b 21 34 29 29 2f 28 32 5e 58 45 |(Block!4))/(2^XE| 000017e0 69 67 46 61 63 74 6f 72 29 0d 06 18 4b f4 20 4c |igFactor)...K. L| 000017f0 50 20 69 73 20 4c 65 66 74 20 50 69 78 65 6c 3a |P is Left Pixel:| 00001800 20 6e 6f 72 6d 61 6c 6c 79 20 70 72 65 73 65 6e | normally presen| 00001810 74 2c 20 62 75 74 20 6e 6f 74 20 69 66 20 77 69 |t, but not if wi| 00001820 6e 64 6f 77 20 69 73 20 74 72 61 6e 73 70 61 72 |ndow is transpar| 00001830 65 6e 74 2e 0d 06 22 25 77 69 64 74 68 3d 28 72 |ent..."%width=(r| 00001840 69 67 68 74 2d 6c 65 66 74 29 2f 28 32 5e 58 45 |ight-left)/(2^XE| 00001850 69 67 46 61 63 74 6f 72 29 0d 06 2c 23 68 65 69 |igFactor)..,#hei| 00001860 67 68 74 3d 28 74 6f 70 2d 62 6f 74 29 2f 28 32 |ght=(top-bot)/(2| 00001870 5e 59 45 69 67 46 61 63 74 6f 72 29 0d 06 36 0f |^YEigFactor)..6.| 00001880 c8 8e 20 61 63 72 6f 73 73 20 ca 0d 06 40 0e 20 |.. across ...@. | 00001890 20 c9 20 30 3a 78 3d 4c 50 0d 06 4a 2c 20 20 c9 | . 0:x=LP..J, .| 000018a0 20 31 3a 78 3d 4c 50 2b 28 28 58 70 69 78 65 6c | 1:x=LP+((Xpixel| 000018b0 73 2b 31 29 2d 28 77 69 64 74 68 2b 4c 50 2b 56 |s+1)-(width+LP+V| 000018c0 53 29 29 2f 34 0d 06 54 2c 20 20 c9 20 32 3a 78 |S))/4..T, . 2:x| 000018d0 3d 4c 50 2b 28 28 58 70 69 78 65 6c 73 2b 31 29 |=LP+((Xpixels+1)| 000018e0 2d 28 77 69 64 74 68 2b 4c 50 2b 56 53 29 29 2f |-(width+LP+VS))/| 000018f0 32 0d 06 5e 32 20 20 c9 20 33 3a 78 3d 4c 50 2b |2..^2 . 3:x=LP+| 00001900 28 33 2a 28 28 28 58 70 69 78 65 6c 73 2b 31 29 |(3*(((Xpixels+1)| 00001910 2d 28 77 69 64 74 68 2b 4c 50 2b 56 53 29 29 2f |-(width+LP+VS))/| 00001920 34 29 29 0d 06 68 22 20 20 c9 20 34 3a 78 3d 28 |4))..h" . 4:x=(| 00001930 58 70 69 78 65 6c 73 2b 31 29 2d 28 77 69 64 74 |Xpixels+1)-(widt| 00001940 68 2b 56 53 29 0d 06 72 05 cb 0d 06 7c 0b c8 8e |h+VS)..r....|...| 00001950 20 75 70 20 ca 0d 06 86 0e 20 20 c9 20 30 3a 79 | up ..... . 0:y| 00001960 3d 48 53 0d 06 90 23 20 20 c9 20 31 3a 79 3d 48 |=HS...# . 1:y=H| 00001970 53 2b 28 31 33 32 2f 28 32 5e 59 45 69 67 46 61 |S+(132/(2^YEigFa| 00001980 63 74 6f 72 29 29 0d 06 9a 2d 20 20 c9 20 32 3a |ctor))...- . 2:| 00001990 79 3d 48 53 2b 28 28 59 70 69 78 65 6c 73 2b 31 |y=HS+((Ypixels+1| 000019a0 29 2d 28 68 65 69 67 68 74 2b 54 42 2b 48 53 29 |)-(height+TB+HS)| 000019b0 29 2f 32 0d 06 a4 33 20 20 c9 20 33 3a 79 3d 48 |)/2...3 . 3:y=H| 000019c0 53 2b 28 33 2a 28 28 28 59 70 69 78 65 6c 73 2b |S+(3*(((Ypixels+| 000019d0 31 29 2d 28 68 65 69 67 68 74 2b 54 42 2b 48 53 |1)-(height+TB+HS| 000019e0 29 29 2f 34 29 29 0d 06 ae 23 20 20 c9 20 34 3a |))/4))...# . 4:| 000019f0 79 3d 28 59 70 69 78 65 6c 73 2b 31 29 2d 28 68 |y=(Ypixels+1)-(h| 00001a00 65 69 67 68 74 2b 54 42 29 0d 06 b8 05 cb 0d 06 |eight+TB).......| 00001a10 c2 28 f4 20 41 62 6f 76 65 20 63 6f 6f 72 64 69 |.(. Above coordi| 00001a20 6e 61 74 65 73 20 70 6f 73 69 74 69 6f 6e 20 77 |nates position w| 00001a30 69 6e 64 6f 77 2e 0d 06 cc 28 f4 20 4e 6f 77 20 |indow....(. Now | 00001a40 63 6f 6e 76 65 72 74 20 74 6f 20 73 63 72 65 65 |convert to scree| 00001a50 6e 20 63 6f 6f 72 64 69 6e 61 74 65 73 3a 0d 06 |n coordinates:..| 00001a60 d6 29 78 3d 78 2a 28 32 5e 58 45 69 67 46 61 63 |.)x=x*(2^XEigFac| 00001a70 74 6f 72 29 3a 79 3d 79 2a 28 32 5e 59 45 69 67 |tor):y=y*(2^YEig| 00001a80 46 61 63 74 6f 72 29 0d 06 e0 3b 77 69 64 74 68 |Factor)...;width| 00001a90 3d 77 69 64 74 68 2a 28 32 5e 58 45 69 67 46 61 |=width*(2^XEigFa| 00001aa0 63 74 6f 72 29 3a 68 65 69 67 68 74 3d 68 65 69 |ctor):height=hei| 00001ab0 67 68 74 2a 28 32 5e 59 45 69 67 46 61 63 74 6f |ght*(2^YEigFacto| 00001ac0 72 29 0d 06 ea 1e 42 6c 6f 63 6b 21 31 32 3d 78 |r)....Block!12=x| 00001ad0 2b 77 69 64 74 68 3a 42 6c 6f 63 6b 21 34 3d 78 |+width:Block!4=x| 00001ae0 0d 06 f4 1f 42 6c 6f 63 6b 21 31 36 3d 79 2b 68 |....Block!16=y+h| 00001af0 65 69 67 68 74 3a 42 6c 6f 63 6b 21 38 3d 79 0d |eight:Block!8=y.| 00001b00 06 fe 05 e1 0d 07 08 05 3a 0d 07 12 4f f4 20 2d |........:...O. -| 00001b10 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001b50 2d 2d 2d 2d 2d 2d 2d 2d 0d 07 1c 18 f4 20 57 69 |--------..... Wi| 00001b60 6d 70 20 70 6f 6c 6c 20 72 6f 75 74 69 6e 65 73 |mp poll routines| 00001b70 0d 07 26 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..&O. ----------| 00001b80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001bb0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00001bc0 07 30 05 3a 0d 07 3a 0f dd 20 f2 54 61 73 6b 49 |.0.:..:.. .TaskI| 00001bd0 64 6c 65 0d 07 44 4d e7 20 44 6f 4d 6f 64 65 43 |dle..DM. DoModeC| 00001be0 68 61 6e 67 65 20 8c 20 e7 20 a4 4f 70 65 6e 53 |hange . . .OpenS| 00001bf0 74 61 74 65 28 50 72 65 66 73 29 20 8c 20 f2 4f |tate(Prefs) . .O| 00001c00 70 65 6e 28 50 72 65 66 73 2c a3 2c 58 50 6f 73 |pen(Prefs,.,XPos| 00001c10 69 74 69 6f 6e 2c 59 50 6f 73 69 74 69 6f 6e 29 |ition,YPosition)| 00001c20 0d 07 4e 29 c8 99 20 22 4f 53 5f 52 65 61 64 4d |..N).. "OS_ReadM| 00001c30 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 b8 20 |onotonicTime" . | 00001c40 70 6f 6c 6c 74 69 6d 65 25 0d 07 58 26 e7 20 5a |polltime%..X&. Z| 00001c50 6f 6f 6d 69 6e 67 20 8c 20 5a 6f 6f 6d 69 6e 67 |ooming . Zooming| 00001c60 3d a3 3a f2 5a 6f 6f 6d 50 6f 69 6e 74 65 72 0d |=.:.ZoomPointer.| 00001c70 07 62 1c e7 20 46 6c 61 73 68 69 6e 67 20 8c 20 |.b.. Flashing . | 00001c80 f2 46 6c 61 73 68 43 61 72 65 74 0d 07 6c 1f e7 |.FlashCaret..l..| 00001c90 20 53 74 61 72 74 69 6e 67 55 70 20 8c 20 f2 53 | StartingUp . .S| 00001ca0 74 61 72 74 55 70 54 61 73 6b 0d 07 76 2d e7 20 |tartUpTask..v-. | 00001cb0 50 72 6f 63 65 73 73 69 6e 67 50 72 65 66 73 20 |ProcessingPrefs | 00001cc0 8c 20 f2 53 74 61 72 74 4f 72 51 75 69 74 50 72 |. .StartOrQuitPr| 00001cd0 65 66 73 54 61 73 6b 0d 07 80 6d e7 20 57 61 69 |efsTask...m. Wai| 00001ce0 74 54 6f 43 6c 6f 73 65 4c 6f 61 64 69 6e 67 57 |tToCloseLoadingW| 00001cf0 69 6e 64 6f 77 3e 30 20 8c 20 57 61 69 74 54 6f |indow>0 . WaitTo| 00001d00 43 6c 6f 73 65 4c 6f 61 64 69 6e 67 57 69 6e 64 |CloseLoadingWind| 00001d10 6f 77 2d 3d 31 3a e7 20 57 61 69 74 54 6f 43 6c |ow-=1:. WaitToCl| 00001d20 6f 73 65 4c 6f 61 64 69 6e 67 57 69 6e 64 6f 77 |oseLoadingWindow| 00001d30 3d 30 20 8c 20 f2 43 6c 6f 73 65 28 4c 6f 61 64 |=0 . .Close(Load| 00001d40 69 6e 67 29 0d 07 8a 77 e7 20 28 ac 20 46 6c 61 |ing)...w. (. Fla| 00001d50 73 68 69 6e 67 29 20 80 20 28 ac 20 53 74 61 72 |shing) . (. Star| 00001d60 74 69 6e 67 55 70 29 20 80 20 28 ac 20 50 72 6f |tingUp) . (. Pro| 00001d70 63 65 73 73 69 6e 67 50 72 65 66 73 29 20 8c 20 |cessingPrefs) . | 00001d80 70 6f 6c 6c 74 69 6d 65 25 2b 3d 31 30 30 3a f4 |polltime%+=100:.| 00001d90 20 44 6f 20 61 20 57 69 6d 70 5f 50 6f 6c 6c 20 | Do a Wimp_Poll | 00001da0 61 70 70 72 6f 78 69 6d 61 74 65 6c 79 20 6f 6e |approximately on| 00001db0 63 65 20 61 20 73 65 63 6f 6e 64 0d 07 94 05 e1 |ce a second.....| 00001dc0 0d 07 9e 05 3a 0d 07 a8 0d dd 20 f2 52 65 64 72 |....:..... .Redr| 00001dd0 61 77 0d 07 b2 14 e7 20 44 6f 4d 6f 64 65 43 68 |aw..... DoModeCh| 00001de0 61 6e 67 65 20 8c 0d 07 bc 64 20 20 f4 20 52 65 |ange ....d . Re| 00001df0 2d 6f 70 65 6e 69 6e 67 20 77 69 6e 64 6f 77 73 |-opening windows| 00001e00 20 6e 65 65 64 20 61 6e 20 65 78 74 72 61 20 77 | need an extra w| 00001e10 69 6d 70 5f 70 6f 6c 6c 20 74 6f 20 68 61 70 70 |imp_poll to happ| 00001e20 65 6e 20 61 66 74 65 72 20 74 68 65 20 6d 6f 64 |en after the mod| 00001e30 65 20 63 68 61 6e 67 65 20 69 6e 20 6f 72 64 65 |e change in orde| 00001e40 72 20 74 6f 20 77 6f 72 6b 3a 0d 07 c6 2e 20 20 |r to work:.... | 00001e50 e7 20 a4 4f 70 65 6e 53 74 61 74 65 28 50 72 65 |. .OpenState(Pre| 00001e60 66 73 29 20 8c 20 f2 4f 70 65 6e 28 50 72 65 66 |fs) . .Open(Pref| 00001e70 73 2c a3 2c 34 2c 31 29 0d 07 d0 32 20 20 e7 20 |s,.,4,1)...2 . | 00001e80 a4 4f 70 65 6e 53 74 61 74 65 28 4c 6f 61 64 69 |.OpenState(Loadi| 00001e90 6e 67 29 20 8c 20 f2 4f 70 65 6e 28 4c 6f 61 64 |ng) . .Open(Load| 00001ea0 69 6e 67 2c b9 2c 32 2c 32 29 0d 07 da 14 20 20 |ing,.,2,2).... | 00001eb0 44 6f 4d 6f 64 65 43 68 61 6e 67 65 3d a3 0d 07 |DoModeChange=...| 00001ec0 e4 05 cd 0d 07 ee 28 c8 99 20 22 57 69 6d 70 5f |......(.. "Wimp_| 00001ed0 52 65 64 72 61 77 57 69 6e 64 6f 77 22 2c 2c 42 |RedrawWindow",,B| 00001ee0 6c 6f 63 6b 20 b8 20 66 6c 61 67 0d 07 f8 0b c8 |lock . flag.....| 00001ef0 95 20 66 6c 61 67 0d 08 02 2a 20 20 c8 99 20 22 |. flag...* .. "| 00001f00 49 6e 74 65 72 66 61 63 65 5f 52 65 6e 64 65 72 |Interface_Render| 00001f10 33 64 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b |3dWindow",,Block| 00001f20 0d 08 0c 2a 20 20 c8 99 20 22 57 69 6d 70 5f 47 |...* .. "Wimp_G| 00001f30 65 74 52 65 63 74 61 6e 67 6c 65 22 2c 2c 42 6c |etRectangle",,Bl| 00001f40 6f 63 6b 20 b8 20 66 6c 61 67 0d 08 16 05 ce 0d |ock . flag......| 00001f50 08 20 05 e1 0d 08 2a 05 3a 0d 08 34 15 dd 20 f2 |. ....*.:..4.. .| 00001f60 52 65 63 69 65 76 65 4d 65 73 73 61 67 65 0d 08 |RecieveMessage..| 00001f70 3e 11 c8 8e 20 42 6c 6f 63 6b 21 31 36 20 ca 0d |>... Block!16 ..| 00001f80 08 48 12 20 20 c9 20 30 20 3a 20 44 6f 6e 65 3d |.H. . 0 : Done=| 00001f90 b9 0d 08 52 47 20 20 c9 20 31 20 3a 20 f4 20 41 |...RG . 1 : . A| 00001fa0 20 74 61 73 6b 20 69 73 20 74 72 79 69 6e 67 20 | task is trying | 00001fb0 74 6f 20 73 61 76 65 20 69 6e 74 6f 20 4f 6d 6e |to save into Omn| 00001fc0 69 44 65 73 6b 20 62 79 20 52 41 4d 20 54 72 61 |iDesk by RAM Tra| 00001fd0 6e 73 66 65 72 20 6f 72 0d 08 5c 4c 20 20 20 20 |nsfer or..\L | 00001fe0 20 20 20 20 20 20 20 f4 20 3c 57 69 6d 70 24 53 | . <Wimp$S| 00001ff0 63 72 61 70 3e 2e 20 57 65 20 6d 75 73 74 20 74 |crap>. We must t| 00002000 65 6c 6c 20 69 74 20 74 6f 20 75 73 65 20 3c 57 |ell it to use <W| 00002010 69 6d 70 24 53 63 72 61 70 3e 20 73 6f 20 74 68 |imp$Scrap> so th| 00002020 61 74 20 61 0d 08 66 4c 20 20 20 20 20 20 20 20 |at a..fL | 00002030 20 20 20 f4 20 75 74 69 6c 69 74 79 20 63 61 6e | . utility can| 00002040 20 70 69 63 6b 20 75 70 20 74 68 65 20 66 69 6c | pick up the fil| 00002050 65 2c 20 62 75 74 20 6f 6e 6c 79 20 69 66 20 61 |e, but only if a| 00002060 20 75 74 69 6c 69 74 79 20 28 6f 72 20 74 68 65 | utility (or the| 00002070 0d 08 70 35 20 20 20 20 20 20 20 20 20 20 20 f4 |..p5 .| 00002080 20 64 72 6f 70 20 77 69 6e 64 6f 77 29 20 69 73 | drop window) is| 00002090 20 72 65 61 64 79 20 74 6f 20 72 65 63 65 69 76 | ready to receiv| 000020a0 65 20 69 74 2e 0d 08 7a 38 20 20 20 20 20 20 20 |e it...z8 | 000020b0 20 20 20 20 e7 20 28 44 72 6f 70 57 69 6e 64 6f | . (DropWindo| 000020c0 77 55 74 69 6c 3c 3e 2d 31 29 20 84 20 28 44 52 |wUtil<>-1) . (DR| 000020d0 41 47 55 74 69 6c 3c 3e 2d 31 29 20 8c 0d 08 84 |AGUtil<>-1) ....| 000020e0 37 20 20 20 20 20 20 20 20 20 20 20 20 20 42 6c |7 Bl| 000020f0 6f 63 6b 21 30 3d 36 30 3a 42 6c 6f 63 6b 21 31 |ock!0=60:Block!1| 00002100 32 3d 42 6c 6f 63 6b 21 38 3a 42 6c 6f 63 6b 21 |2=Block!8:Block!| 00002110 31 36 3d 32 0d 08 8e 3a 20 20 20 20 20 20 20 20 |16=2...: | 00002120 20 20 20 20 20 42 6c 6f 63 6b 21 33 36 3d 2d 31 | Block!36=-1| 00002130 3a 24 28 42 6c 6f 63 6b 2b 34 34 29 3d 22 3c 57 |:$(Block+44)="<W| 00002140 69 6d 70 24 53 63 72 61 70 3e 22 2b bd 30 0d 08 |imp$Scrap>"+.0..| 00002150 98 37 20 20 20 20 20 20 20 20 20 20 20 20 20 c8 |.7 .| 00002160 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 |. "Wimp_SendMess| 00002170 61 67 65 22 2c 31 37 2c 42 6c 6f 63 6b 2c 42 6c |age",17,Block,Bl| 00002180 6f 63 6b 21 34 0d 08 a2 10 20 20 20 20 20 20 20 |ock!4.... | 00002190 20 20 20 20 cd 0d 08 ac 2b 20 20 c9 20 33 20 3a | ....+ . 3 :| 000021a0 20 f4 20 46 69 6c 65 20 64 72 61 67 67 65 64 20 | . File dragged | 000021b0 69 6e 74 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e |into application| 000021c0 0d 08 b6 5a 20 20 20 20 20 20 20 20 20 20 20 46 |...Z F| 000021d0 69 6c 65 4e 61 6d 65 24 3d 22 22 3a 4e 3d 34 34 |ileName$="":N=44| 000021e0 3a c8 95 20 28 28 42 6c 6f 63 6b 3f 4e 29 3e 3d |:.. ((Block?N)>=| 000021f0 33 32 29 20 80 20 28 4e 3c 32 35 36 29 3a 46 69 |32) . (N<256):Fi| 00002200 6c 65 4e 61 6d 65 24 2b 3d bd 28 42 6c 6f 63 6b |leName$+=.(Block| 00002210 3f 4e 29 3a 4e 2b 3d 31 3a ce 0d 08 c0 32 20 20 |?N):N+=1:....2 | 00002220 20 20 20 20 20 20 20 20 20 46 69 6c 65 54 79 70 | FileTyp| 00002230 65 3d 42 6c 6f 63 6b 21 34 30 3a 46 69 6c 65 53 |e=Block!40:FileS| 00002240 69 7a 65 3d 42 6c 6f 63 6b 21 33 36 0d 08 ca 30 |ize=Block!36...0| 00002250 20 20 20 20 20 20 20 20 20 20 20 6d 79 5f 72 65 | my_re| 00002260 66 3d 42 6c 6f 63 6b 21 38 3a 53 65 6e 64 65 72 |f=Block!8:Sender| 00002270 54 61 73 6b 3d 42 6c 6f 63 6b 21 34 0d 08 d4 12 |Task=Block!4....| 00002280 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 0d 08 | :..| 00002290 de 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 42 |. . B| 000022a0 6c 6f 63 6b 21 32 30 3d 44 72 6f 70 20 8c 0d 08 |lock!20=Drop ...| 000022b0 e8 31 20 20 20 20 20 20 20 20 20 20 20 20 20 f4 |.1 .| 000022c0 20 46 69 6c 65 20 64 72 6f 70 70 65 64 20 69 6e | File dropped in| 000022d0 74 6f 20 44 72 6f 70 20 77 69 6e 64 6f 77 2e 0d |to Drop window..| 000022e0 08 f2 4b 20 20 20 20 20 20 20 20 20 20 20 20 20 |..K | 000022f0 f2 44 72 61 67 54 6f 49 63 6f 6e 42 61 72 28 44 |.DragToIconBar(D| 00002300 72 6f 70 57 69 6e 64 6f 77 55 74 69 6c 2c 46 69 |ropWindowUtil,Fi| 00002310 6c 65 53 69 7a 65 2c 46 69 6c 65 54 79 70 65 2c |leSize,FileType,| 00002320 46 69 6c 65 4e 61 6d 65 24 29 0d 08 fc 10 20 20 |FileName$).... | 00002330 20 20 20 20 20 20 20 20 20 cc 0d 09 06 33 20 20 | ....3 | 00002340 20 20 20 20 20 20 20 20 20 20 20 e7 20 42 6c 6f | . Blo| 00002350 63 6b 21 32 30 3d 2d 32 20 80 20 42 6c 6f 63 6b |ck!20=-2 . Block| 00002360 21 32 34 3d 49 63 6f 6e 42 61 72 20 8c 0d 09 10 |!24=IconBar ....| 00002370 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |5 | 00002380 f4 20 46 69 6c 65 20 64 72 6f 70 70 65 64 20 6f |. File dropped o| 00002390 6e 74 6f 20 69 63 6f 6e 2d 62 61 72 20 69 63 6f |nto icon-bar ico| 000023a0 6e 2e 0d 09 1a 47 20 20 20 20 20 20 20 20 20 20 |n....G | 000023b0 20 20 20 20 20 f2 44 72 61 67 54 6f 49 63 6f 6e | .DragToIcon| 000023c0 42 61 72 28 44 52 41 47 55 74 69 6c 2c 46 69 6c |Bar(DRAGUtil,Fil| 000023d0 65 53 69 7a 65 2c 46 69 6c 65 54 79 70 65 2c 46 |eSize,FileType,F| 000023e0 69 6c 65 4e 61 6d 65 24 29 0d 09 24 12 20 20 20 |ileName$)..$. | 000023f0 20 20 20 20 20 20 20 20 20 20 cd 0d 09 2e 10 20 | ..... | 00002400 20 20 20 20 20 20 20 20 20 20 cd 0d 09 38 2d 20 | ...8- | 00002410 20 20 20 20 20 20 20 20 20 20 44 72 6f 70 57 69 | DropWi| 00002420 6e 64 6f 77 55 74 69 6c 3d 2d 31 3a f2 43 6c 6f |ndowUtil=-1:.Clo| 00002430 73 65 28 44 72 6f 70 29 0d 09 42 2e 20 20 c9 20 |se(Drop)..B. . | 00002440 31 30 3a 20 f4 20 54 68 65 20 64 65 73 6b 74 6f |10: . The deskto| 00002450 70 20 73 74 61 74 65 20 69 73 20 62 65 69 6e 67 |p state is being| 00002460 20 73 61 76 65 64 0d 09 4c 25 20 20 20 20 20 20 | saved..L% | 00002470 20 20 20 20 20 f2 53 61 76 65 44 65 73 6b 74 6f | .SaveDeskto| 00002480 70 28 42 6c 6f 63 6b 21 32 30 29 0d 09 56 14 20 |p(Block!20)..V. | 00002490 20 c9 20 26 35 30 32 20 3a 20 f2 48 65 6c 70 0d | . &502 : .Help.| 000024a0 09 60 1c 20 20 c9 20 26 34 30 30 43 31 20 3a 20 |.`. . &400C1 : | 000024b0 f2 4d 6f 64 65 43 68 61 6e 67 65 0d 09 6a 27 20 |.ModeChange..j' | 000024c0 20 c9 20 55 74 69 6c 44 65 63 6c 61 72 65 20 3a | . UtilDeclare :| 000024d0 20 f2 53 74 6f 72 65 55 74 69 6c 44 65 74 61 69 | .StoreUtilDetai| 000024e0 6c 73 0d 09 74 27 20 20 c9 20 55 74 69 6c 51 75 |ls..t' . UtilQu| 000024f0 69 74 74 69 6e 67 20 3a 20 f2 55 74 69 6c 69 74 |itting : .Utilit| 00002500 79 51 75 69 74 74 69 6e 67 0d 09 7e 5a 20 20 c9 |yQuitting..~Z .| 00002510 20 55 74 69 6c 41 63 6b 4c 6f 61 64 20 3a 20 f4 | UtilAckLoad : .| 00002520 20 41 20 75 74 69 6c 69 74 79 20 68 61 73 20 61 | A utility has a| 00002530 63 6b 6e 6f 77 6c 65 64 67 65 64 20 74 68 61 74 |cknowledged that| 00002540 20 69 74 20 68 61 73 20 64 65 61 6c 74 20 77 69 | it has dealt wi| 00002550 74 68 20 6f 75 72 20 64 72 61 67 20 6d 65 73 73 |th our drag mess| 00002560 61 67 65 0d 09 88 33 20 20 20 20 20 20 20 20 20 |age...3 | 00002570 20 20 20 20 20 20 20 20 20 20 20 20 42 6c 6f 63 | Bloc| 00002580 6b 21 31 32 3d 6d 79 5f 72 65 66 3a 42 6c 6f 63 |k!12=my_ref:Bloc| 00002590 6b 21 31 36 3d 34 0d 09 92 55 20 20 20 20 20 20 |k!16=4...U | 000025a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 | B| 000025b0 6c 6f 63 6b 21 33 36 3d 46 69 6c 65 53 69 7a 65 |lock!36=FileSize| 000025c0 3a 42 6c 6f 63 6b 21 34 30 3d 46 69 6c 65 54 79 |:Block!40=FileTy| 000025d0 70 65 3a 24 28 42 6c 6f 63 6b 2b 34 34 29 3d 46 |pe:$(Block+44)=F| 000025e0 69 6c 65 4e 61 6d 65 24 2b bd 30 0d 09 9c 42 20 |ileName$+.0...B | 000025f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00002600 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 6e | .. "Wimp_Sen| 00002610 64 4d 65 73 73 61 67 65 22 2c 31 39 2c 42 6c 6f |dMessage",19,Blo| 00002620 63 6b 2c 53 65 6e 64 65 72 54 61 73 6b 0d 09 a6 |ck,SenderTask...| 00002630 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |F | 00002640 20 20 20 20 20 20 e7 20 46 69 6c 65 4e 61 6d 65 | . FileName| 00002650 24 3d 22 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 |$="<Wimp$Scrap>"| 00002660 20 8c 20 f2 44 65 6c 65 74 65 57 69 6d 70 53 63 | . .DeleteWimpSc| 00002670 72 61 70 0d 09 b0 05 cb 0d 09 ba 05 e1 0d 09 c4 |rap.............| 00002680 05 3a 0d 09 ce 16 dd 20 f2 44 65 6c 65 74 65 57 |.:..... .DeleteW| 00002690 69 6d 70 53 63 72 61 70 0d 09 d8 07 ea 20 85 0d |impScrap..... ..| 000026a0 09 e2 0f ee 20 85 20 ea 20 f7 20 85 3a e1 0d 09 |.... . . . .:...| 000026b0 ec 3c f4 20 57 65 20 6d 61 79 20 72 65 63 65 69 |.<. We may recei| 000026c0 76 65 20 74 72 79 20 74 6f 20 64 65 6c 65 74 65 |ve try to delete| 000026d0 20 61 20 6e 6f 6e 2d 65 78 69 73 74 61 6e 74 20 | a non-existant | 000026e0 57 69 6d 70 24 53 63 72 61 70 0d 09 f6 40 f4 20 |Wimp$Scrap...@. | 000026f0 66 69 6c 65 20 69 66 20 74 68 65 20 72 65 63 65 |file if the rece| 00002700 69 76 69 6e 67 20 74 61 73 6b 20 64 69 64 20 6e |iving task did n| 00002710 6f 74 20 72 65 63 6f 67 6e 69 73 65 20 74 68 65 |ot recognise the| 00002720 20 66 69 6c 65 74 79 70 65 2e 0d 0a 00 1c ff 28 | filetype......(| 00002730 22 44 65 6c 65 74 65 20 3c 57 69 6d 70 24 53 63 |"Delete <Wimp$Sc| 00002740 72 61 70 3e 22 29 0d 0a 0a 05 e1 0d 0a 14 05 3a |rap>").........:| 00002750 0d 0a 1e 12 dd 20 f2 4d 6f 75 73 65 42 75 74 74 |..... .MouseButt| 00002760 6f 6e 0d 0a 28 31 4d 6f 75 73 65 58 3d 42 6c 6f |on..(1MouseX=Blo| 00002770 63 6b 21 30 3a 4d 6f 75 73 65 59 3d 42 6c 6f 63 |ck!0:MouseY=Bloc| 00002780 6b 21 34 3a 42 75 74 74 6f 6e 73 3d 42 6c 6f 63 |k!4:Buttons=Bloc| 00002790 6b 21 38 0d 0a 32 21 57 69 6e 64 6f 77 3d 42 6c |k!8..2!Window=Bl| 000027a0 6f 63 6b 21 31 32 3a 49 63 6f 6e 3d 42 6c 6f 63 |ock!12:Icon=Bloc| 000027b0 6b 21 31 36 0d 0a 3c 0f c8 8e 20 57 69 6e 64 6f |k!16..<... Windo| 000027c0 77 20 ca 0d 0a 46 22 20 20 c9 20 2d 32 3a f4 20 |w ...F" . -2:. | 000027d0 49 63 6f 6e 20 62 61 72 20 69 63 6f 6e 20 63 6c |Icon bar icon cl| 000027e0 69 63 6b 65 64 0d 0a 50 14 20 20 20 20 c8 8e 20 |icked..P. .. | 000027f0 42 75 74 74 6f 6e 73 20 ca 0d 0a 5a 18 20 20 20 |Buttons ...Z. | 00002800 20 20 20 c9 20 31 20 3a 20 f4 20 41 64 6a 75 73 | . 1 : . Adjus| 00002810 74 0d 0a 64 24 20 20 20 20 20 20 20 20 f2 43 61 |t..d$ .Ca| 00002820 6c 6c 55 74 69 6c 69 74 79 28 41 44 4a 55 53 54 |llUtility(ADJUST| 00002830 55 74 69 6c 29 0d 0a 6e 16 20 20 20 20 20 20 c9 |Util)..n. .| 00002840 20 32 20 3a 20 f4 20 4d 65 6e 75 0d 0a 78 39 20 | 2 : . Menu..x9 | 00002850 20 20 20 20 20 20 20 4d 25 3d 49 42 4d 65 6e 75 | M%=IBMenu| 00002860 3a 4d 65 6e 75 58 3d 4d 6f 75 73 65 58 3a 4d 65 |:MenuX=MouseX:Me| 00002870 6e 75 59 3d 4d 6f 75 73 65 59 3a f2 4d 61 6b 65 |nuY=MouseY:.Make| 00002880 4d 65 6e 75 0d 0a 82 18 20 20 20 20 20 20 c9 20 |Menu.... . | 00002890 34 20 3a 20 f4 20 53 65 6c 65 63 74 0d 0a 8c 24 |4 : . Select...$| 000028a0 20 20 20 20 20 20 20 20 f2 43 61 6c 6c 55 74 69 | .CallUti| 000028b0 6c 69 74 79 28 53 45 4c 45 43 54 55 74 69 6c 29 |lity(SELECTUtil)| 000028c0 0d 0a 96 09 20 20 20 20 cb 0d 0a a0 0c 20 20 c9 |.... ..... .| 000028d0 20 49 6e 66 6f 0d 0a aa 63 20 20 20 20 e7 20 49 | Info...c . I| 000028e0 63 6f 6e 3d 39 20 8c 20 85 20 39 39 39 39 2c 22 |con=9 . . 9999,"| 000028f0 4f 6d 6e 69 44 65 73 6b 20 73 75 70 70 6f 72 74 |OmniDesk support| 00002900 73 20 69 6e 74 65 72 61 63 74 69 76 65 20 68 65 |s interactive he| 00002910 6c 70 20 76 69 61 20 41 63 6f 72 6e 27 73 20 48 |lp via Acorn's H| 00002920 65 6c 70 20 6f 72 20 53 70 79 20 61 70 70 6c 69 |elp or Spy appli| 00002930 63 61 74 69 6f 6e 73 22 0d 0a b4 0d 20 20 c9 20 |cations".... . | 00002940 50 72 65 66 73 0d 0a be 0e 20 20 20 20 c8 8e 20 |Prefs.... .. | 00002950 b9 20 ca 0d 0a c8 38 20 20 20 20 20 20 c9 20 28 |. ....8 . (| 00002960 49 63 6f 6e 3d 31 30 29 20 80 20 28 42 75 74 74 |Icon=10) . (Butt| 00002970 6f 6e 73 3c 31 36 29 20 80 20 28 42 75 74 74 6f |ons<16) . (Butto| 00002980 6e 73 3c 3e 32 29 3a f4 20 4f 4b 0d 0a d2 21 20 |ns<>2):. OK...! | 00002990 20 20 20 20 20 20 20 e7 20 ac 20 50 72 6f 63 65 | . . Proce| 000029a0 73 73 69 6e 67 50 72 65 66 73 20 8c 0d 0a dc 2e |ssingPrefs .....| 000029b0 20 20 20 20 20 20 20 20 20 20 c8 99 20 22 49 6e | .. "In| 000029c0 74 65 72 66 61 63 65 5f 53 6c 61 62 42 75 74 74 |terface_SlabButt| 000029d0 6f 6e 22 2c 2c 42 6c 6f 63 6b 0d 0a e6 1d 20 20 |on",,Block.... | 000029e0 20 20 20 20 20 20 20 20 f2 44 6f 50 72 65 66 73 | .DoPrefs| 000029f0 4f 4b 43 6c 69 63 6b 0d 0a f0 2a 20 20 20 20 20 |OKClick...* | 00002a00 20 20 20 20 20 e7 20 42 75 74 74 6f 6e 73 3c 3e | . Buttons<>| 00002a10 31 20 8c 20 f2 43 6c 6f 73 65 28 50 72 65 66 73 |1 . .Close(Prefs| 00002a20 29 0d 0a fa 53 20 20 20 20 20 20 20 20 20 20 42 |)...S B| 00002a30 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b 21 31 |lock!8=0:Block!1| 00002a40 32 3d 50 72 65 66 73 3a 42 6c 6f 63 6b 21 31 36 |2=Prefs:Block!16| 00002a50 3d 31 30 3a c8 99 20 22 49 6e 74 65 72 66 61 63 |=10:.. "Interfac| 00002a60 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 2c 2c 42 |e_SlabButton",,B| 00002a70 6c 6f 63 6b 0d 0b 04 0d 20 20 20 20 20 20 20 20 |lock.... | 00002a80 cd 0d 0b 0e 47 20 20 20 20 20 20 c9 20 28 49 63 |....G . (Ic| 00002a90 6f 6e 3d 31 31 29 20 80 20 28 42 75 74 74 6f 6e |on=11) . (Button| 00002aa0 73 3c 31 36 29 20 80 20 28 42 75 74 74 6f 6e 73 |s<16) . (Buttons| 00002ab0 3c 3e 32 29 3a f4 20 4f 4b 3a 20 53 61 76 65 20 |<>2):. OK: Save | 00002ac0 73 65 74 74 69 6e 67 73 0d 0b 18 21 20 20 20 20 |settings...! | 00002ad0 20 20 20 20 e7 20 ac 20 50 72 6f 63 65 73 73 69 | . . Processi| 00002ae0 6e 67 50 72 65 66 73 20 8c 0d 0b 22 2e 20 20 20 |ngPrefs ...". | 00002af0 20 20 20 20 20 20 20 c8 99 20 22 49 6e 74 65 72 | .. "Inter| 00002b00 66 61 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e 22 |face_SlabButton"| 00002b10 2c 2c 42 6c 6f 63 6b 0d 0b 2c 1d 20 20 20 20 20 |,,Block..,. | 00002b20 20 20 20 20 20 f2 44 6f 50 72 65 66 73 4f 4b 43 | .DoPrefsOKC| 00002b30 6c 69 63 6b 0d 0b 36 27 20 20 20 20 20 20 20 20 |lick..6' | 00002b40 20 20 53 61 76 65 45 72 72 6f 72 3d ac 20 a4 53 | SaveError=. .S| 00002b50 61 76 65 53 65 74 74 69 6e 67 73 0d 0b 40 2a 20 |aveSettings..@* | 00002b60 20 20 20 20 20 20 20 20 20 e7 20 42 75 74 74 6f | . Butto| 00002b70 6e 73 3c 3e 31 20 8c 20 f2 43 6c 6f 73 65 28 50 |ns<>1 . .Close(P| 00002b80 72 65 66 73 29 0d 0b 4a 53 20 20 20 20 20 20 20 |refs)..JS | 00002b90 20 20 20 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f | Block!8=0:Blo| 00002ba0 63 6b 21 31 32 3d 50 72 65 66 73 3a 42 6c 6f 63 |ck!12=Prefs:Bloc| 00002bb0 6b 21 31 36 3d 31 31 3a c8 99 20 22 49 6e 74 65 |k!16=11:.. "Inte| 00002bc0 72 66 61 63 65 5f 53 6c 61 62 42 75 74 74 6f 6e |rface_SlabButton| 00002bd0 22 2c 2c 42 6c 6f 63 6b 0d 0b 54 58 20 20 20 20 |",,Block..TX | 00002be0 20 20 20 20 20 20 e7 20 53 61 76 65 45 72 72 6f | . SaveErro| 00002bf0 72 20 8c 20 85 20 39 39 39 39 2c 22 41 6e 20 65 |r . . 9999,"An e| 00002c00 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20 77 68 |rror occurred wh| 00002c10 69 6c 73 74 20 77 72 69 74 69 6e 67 20 74 68 65 |ilst writing the| 00002c20 20 73 65 74 74 69 6e 67 73 20 66 69 6c 65 2e 22 | settings file."| 00002c30 0d 0b 5e 0d 20 20 20 20 20 20 20 20 cd 0d 0b 68 |..^. ...h| 00002c40 5b 20 20 20 20 20 20 c9 20 28 49 63 6f 6e 3e 33 |[ . (Icon>3| 00002c50 35 29 20 80 20 28 42 75 74 74 6f 6e 73 3c 31 36 |5) . (Buttons<16| 00002c60 29 20 80 20 28 42 75 74 74 6f 6e 73 3c 3e 32 29 |) . (Buttons<>2)| 00002c70 3a f4 20 4f 6e 65 20 6f 66 20 74 68 65 20 65 78 |:. One of the ex| 00002c80 70 61 6e 64 61 62 6c 65 20 61 72 65 61 20 6f 66 |pandable area of| 00002c90 20 62 75 74 74 6f 6e 73 0d 0b 72 21 20 20 20 20 | buttons..r! | 00002ca0 20 20 20 20 e7 20 28 28 49 63 6f 6e 2d 33 36 29 | . ((Icon-36)| 00002cb0 20 83 20 35 29 3d 31 20 8c 0d 0b 7c 3b 20 20 20 | . 5)=1 ...|; | 00002cc0 20 20 20 20 20 20 20 f4 20 4f 6e 65 20 6f 66 20 | . One of | 00002cd0 74 68 65 20 75 74 69 6c 69 74 79 20 74 69 74 6c |the utility titl| 00002ce0 65 73 20 68 61 73 20 62 65 65 6e 20 63 6c 69 63 |es has been clic| 00002cf0 6b 65 64 3a 0d 0b 86 2c 20 20 20 20 20 20 20 20 |ked:..., | 00002d00 20 20 f4 20 74 6f 67 67 6c 65 20 74 68 65 20 73 | . toggle the s| 00002d10 77 69 74 63 68 20 6e 65 78 74 20 74 6f 20 69 74 |witch next to it| 00002d20 0d 0b 90 4f 20 20 20 20 20 20 20 20 20 20 f2 55 |...O .U| 00002d30 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 00002d40 67 28 50 72 65 66 73 2c 49 63 6f 6e 2d 31 2c ac |g(Prefs,Icon-1,.| 00002d50 28 a4 53 65 6c 65 63 74 65 64 53 74 61 74 65 28 |(.SelectedState(| 00002d60 50 72 65 66 73 2c 49 63 6f 6e 2d 31 29 29 29 0d |Prefs,Icon-1))).| 00002d70 0b 9a 0d 20 20 20 20 20 20 20 20 cd 0d 0b a4 09 |... .....| 00002d80 20 20 20 20 cb 0d 0b ae 05 cb 0d 0b b8 05 e1 0d | ............| 00002d90 0b c2 05 3a 0d 0b cc 11 dd 20 f2 4b 65 79 50 72 |...:..... .KeyPr| 00002da0 65 73 73 65 64 0d 0b d6 32 57 69 6e 64 6f 77 3d |essed...2Window=| 00002db0 42 6c 6f 63 6b 21 30 3a 49 63 6f 6e 3d 42 6c 6f |Block!0:Icon=Blo| 00002dc0 63 6b 21 34 3a 43 68 61 72 61 63 74 65 72 3d 42 |ck!4:Character=B| 00002dd0 6c 6f 63 6b 21 32 34 0d 0b e0 43 58 70 69 78 65 |lock!24...CXpixe| 00002de0 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 58 50 |ls=.ModeInfo("XP| 00002df0 69 78 65 6c 73 22 2c 2d 31 29 3a 59 70 69 78 65 |ixels",-1):Ypixe| 00002e00 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 59 50 |ls=.ModeInfo("YP| 00002e10 69 78 65 6c 73 22 2c 2d 31 29 0d 0b ea 4f 58 45 |ixels",-1)...OXE| 00002e20 69 67 46 61 63 74 6f 72 3d a4 4d 6f 64 65 49 6e |igFactor=.ModeIn| 00002e30 66 6f 28 22 58 45 69 67 46 61 63 74 6f 72 22 2c |fo("XEigFactor",| 00002e40 2d 31 29 3a 59 45 69 67 46 61 63 74 6f 72 3d a4 |-1):YEigFactor=.| 00002e50 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 46 61 |ModeInfo("YEigFa| 00002e60 63 74 6f 72 22 2c 2d 31 29 0d 0b f4 0f c8 8e 20 |ctor",-1)...... | 00002e70 57 69 6e 64 6f 77 20 ca 0d 0b fe 0e 20 20 c9 20 |Window ..... . | 00002e80 50 72 65 66 73 3a 0d 0c 08 16 20 20 20 20 c8 8e |Prefs:.... ..| 00002e90 20 43 68 61 72 61 63 74 65 72 20 ca 0d 0c 12 47 | Character ....G| 00002ea0 20 20 20 20 20 20 c9 20 26 31 38 45 2c 26 31 39 | . &18E,&19| 00002eb0 45 2c 26 31 41 45 2c 26 31 42 45 2c 26 31 38 46 |E,&1AE,&1BE,&18F| 00002ec0 2c 26 31 39 46 2c 26 31 41 46 2c 26 31 42 46 2c |,&19F,&1AF,&1BF,| 00002ed0 31 33 3a f4 20 44 6f 77 6e 2c 55 70 2c 52 65 74 |13:. Down,Up,Ret| 00002ee0 75 72 6e 0d 0c 1c 25 20 20 20 20 20 20 20 20 e7 |urn...% .| 00002ef0 20 43 68 61 72 61 63 74 65 72 3d 31 33 20 80 20 | Character=13 . | 00002f00 49 63 6f 6e 3d 39 20 8c 0d 0c 26 41 20 20 20 20 |Icon=9 ...&A | 00002f10 20 20 20 20 20 20 f4 20 49 66 20 52 65 74 75 72 | . If Retur| 00002f20 6e 20 69 73 20 70 72 65 73 73 65 64 20 6f 6e 20 |n is pressed on | 00002f30 73 65 63 6f 6e 64 20 69 63 6f 6e 2c 20 73 65 74 |second icon, set| 00002f40 20 75 70 20 42 6c 6f 63 6b 0d 0c 30 41 20 20 20 | up Block..0A | 00002f50 20 20 20 20 20 20 20 f4 20 61 73 20 61 70 70 72 | . as appr| 00002f60 6f 70 72 69 61 74 65 20 66 6f 72 20 61 20 53 45 |opriate for a SE| 00002f70 4c 45 43 54 2d 63 6c 69 63 6b 2c 20 61 6e 64 20 |LECT-click, and | 00002f80 63 68 6f 6f 73 65 20 4f 4b 3a 0d 0c 3a 32 20 20 |choose OK:..:2 | 00002f90 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 38 3d | Block!8=| 00002fa0 34 3a 42 6c 6f 63 6b 21 31 32 3d 50 72 65 66 73 |4:Block!12=Prefs| 00002fb0 3a 42 6c 6f 63 6b 21 31 36 3d 31 30 0d 0c 44 1a |:Block!16=10..D.| 00002fc0 20 20 20 20 20 20 20 20 20 20 f2 4d 6f 75 73 65 | .Mouse| 00002fd0 42 75 74 74 6f 6e 0d 0c 4e 0d 20 20 20 20 20 20 |Button..N. | 00002fe0 20 20 cc 0d 0c 58 31 20 20 20 20 20 20 20 20 20 | ...X1 | 00002ff0 20 f4 20 53 65 74 20 63 61 72 65 74 20 74 6f 20 | . Set caret to | 00003000 65 6e 64 20 6f 66 20 63 75 72 72 65 6e 74 20 69 |end of current i| 00003010 63 6f 6e 3a 0d 0c 62 28 20 20 20 20 20 20 20 20 |con:..b( | 00003020 20 20 e7 20 49 63 6f 6e 3d 38 20 8c 20 49 63 6f | . Icon=8 . Ico| 00003030 6e 3d 39 20 8b 20 49 63 6f 6e 3d 38 0d 0c 6c a2 |n=9 . Icon=8..l.| 00003040 20 20 20 20 20 20 20 20 20 20 e7 20 49 63 6f 6e | . Icon| 00003050 3d 38 20 8c 20 c8 99 20 22 57 69 6d 70 5f 53 65 |=8 . .. "Wimp_Se| 00003060 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c |tCaretPosition",| 00003070 50 72 65 66 73 2c 49 63 6f 6e 2c 2c 2c 2d 31 2c |Prefs,Icon,,,-1,| 00003080 a9 28 a4 52 65 61 64 49 63 6f 6e 53 74 72 28 50 |.(.ReadIconStr(P| 00003090 72 65 66 73 2c 38 29 29 20 8b 20 c8 99 20 22 57 |refs,8)) . .. "W| 000030a0 69 6d 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 |imp_SetCaretPosi| 000030b0 74 69 6f 6e 22 2c 50 72 65 66 73 2c 49 63 6f 6e |tion",Prefs,Icon| 000030c0 2c 2c 2c 2d 31 2c a9 28 a4 52 65 61 64 49 63 6f |,,,-1,.(.ReadIco| 000030d0 6e 53 74 72 28 50 72 65 66 73 2c 39 29 29 0d 0c |nStr(Prefs,9))..| 000030e0 76 0d 20 20 20 20 20 20 20 20 cd 0d 0c 80 0b 20 |v. ..... | 000030f0 20 20 20 20 20 7f 0d 0c 8a 29 20 20 20 20 20 20 | ....) | 00003100 20 20 c8 99 20 22 57 69 6d 70 5f 50 72 6f 63 65 | .. "Wimp_Proce| 00003110 73 73 4b 65 79 22 2c 42 6c 6f 63 6b 21 32 34 0d |ssKey",Block!24.| 00003120 0c 94 09 20 20 20 20 cb 0d 0c 9e 07 20 20 7f 0d |... ..... ..| 00003130 0c a8 16 20 20 20 20 c8 8e 20 43 68 61 72 61 63 |... .. Charac| 00003140 74 65 72 20 ca 0d 0c b2 26 20 20 20 20 20 20 c9 |ter ....& .| 00003150 20 26 31 38 43 2c 26 31 39 43 2c 26 31 41 43 2c | &18C,&19C,&1AC,| 00003160 26 31 42 43 3a f4 20 4c 65 66 74 0d 0c bc 2b 20 |&1BC:. Left...+ | 00003170 20 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 5f | .. "Wimp_| 00003180 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c |GetPointerInfo",| 00003190 2c 42 6c 6f 63 6b 0d 0c c6 6e 20 20 20 20 20 20 |,Block...n | 000031a0 20 20 58 3d 42 6c 6f 63 6b 21 30 3a 59 3d 42 6c | X=Block!0:Y=Bl| 000031b0 6f 63 6b 21 34 3a 58 2d 3d 28 42 6c 6f 63 6b 21 |ock!4:X-=(Block!| 000031c0 32 34 2d 26 31 38 43 29 2f 31 2e 36 2a 32 5e 58 |24-&18C)/1.6*2^X| 000031d0 45 69 67 46 61 63 74 6f 72 2b 28 32 5e 58 45 69 |EigFactor+(2^XEi| 000031e0 67 46 61 63 74 6f 72 20 80 20 42 6c 6f 63 6b 21 |gFactor . Block!| 000031f0 32 34 3d 26 31 38 43 29 3a e7 20 58 3c 30 20 8c |24=&18C):. X<0 .| 00003200 20 58 3d 30 0d 0c d0 55 20 20 20 20 20 20 20 20 | X=0...U | 00003210 42 6c 6f 63 6b 3f 30 3d 33 3a 42 6c 6f 63 6b 3f |Block?0=3:Block?| 00003220 31 3d 58 20 83 20 32 35 36 3a 42 6c 6f 63 6b 3f |1=X . 256:Block?| 00003230 32 3d 58 20 81 20 32 35 36 3a 42 6c 6f 63 6b 3f |2=X . 256:Block?| 00003240 33 3d 59 20 83 20 32 35 36 3a 42 6c 6f 63 6b 3f |3=Y . 256:Block?| 00003250 34 3d 59 20 81 20 32 35 36 0d 0c da 21 20 20 20 |4=Y . 256...! | 00003260 20 20 20 20 20 c8 99 20 22 4f 53 5f 57 6f 72 64 | .. "OS_Word| 00003270 22 2c 32 31 2c 42 6c 6f 63 6b 0d 0c e4 27 20 20 |",21,Block...' | 00003280 20 20 20 20 c9 20 26 31 38 44 2c 26 31 39 44 2c | . &18D,&19D,| 00003290 26 31 41 44 2c 26 31 42 44 3a f4 20 52 69 67 68 |&1AD,&1BD:. Righ| 000032a0 74 0d 0c ee 2b 20 20 20 20 20 20 20 20 c8 99 20 |t...+ .. | 000032b0 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 |"Wimp_GetPointer| 000032c0 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b 0d 0c f8 9c |Info",,Block....| 000032d0 20 20 20 20 20 20 20 20 58 3d 42 6c 6f 63 6b 21 | X=Block!| 000032e0 30 3a 59 3d 42 6c 6f 63 6b 21 34 3a 58 2b 3d 28 |0:Y=Block!4:X+=(| 000032f0 42 6c 6f 63 6b 21 32 34 2d 26 31 38 44 29 2f 31 |Block!24-&18D)/1| 00003300 2e 36 2a 32 5e 58 45 69 67 46 61 63 74 6f 72 2b |.6*2^XEigFactor+| 00003310 28 32 5e 58 45 69 67 46 61 63 74 6f 72 20 80 20 |(2^XEigFactor . | 00003320 42 6c 6f 63 6b 21 32 34 3d 26 31 38 44 29 3a e7 |Block!24=&18D):.| 00003330 20 58 3e 28 58 70 69 78 65 6c 73 2a 28 32 5e 58 | X>(Xpixels*(2^X| 00003340 45 69 67 46 61 63 74 6f 72 29 29 20 8c 20 58 3d |EigFactor)) . X=| 00003350 28 58 70 69 78 65 6c 73 2a 28 32 5e 58 45 69 67 |(Xpixels*(2^XEig| 00003360 46 61 63 74 6f 72 29 29 0d 0d 02 55 20 20 20 20 |Factor))...U | 00003370 20 20 20 20 42 6c 6f 63 6b 3f 30 3d 33 3a 42 6c | Block?0=3:Bl| 00003380 6f 63 6b 3f 31 3d 58 20 83 20 32 35 36 3a 42 6c |ock?1=X . 256:Bl| 00003390 6f 63 6b 3f 32 3d 58 20 81 20 32 35 36 3a 42 6c |ock?2=X . 256:Bl| 000033a0 6f 63 6b 3f 33 3d 59 20 83 20 32 35 36 3a 42 6c |ock?3=Y . 256:Bl| 000033b0 6f 63 6b 3f 34 3d 59 20 81 20 32 35 36 0d 0d 0c |ock?4=Y . 256...| 000033c0 21 20 20 20 20 20 20 20 20 c8 99 20 22 4f 53 5f |! .. "OS_| 000033d0 57 6f 72 64 22 2c 32 31 2c 42 6c 6f 63 6b 0d 0d |Word",21,Block..| 000033e0 16 26 20 20 20 20 20 20 c9 20 26 31 38 45 2c 26 |.& . &18E,&| 000033f0 31 39 45 2c 26 31 41 45 2c 26 31 42 45 3a f4 20 |19E,&1AE,&1BE:. | 00003400 44 6f 77 6e 0d 0d 20 2b 20 20 20 20 20 20 20 20 |Down.. + | 00003410 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e |.. "Wimp_GetPoin| 00003420 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b 0d |terInfo",,Block.| 00003430 0d 2a 6e 20 20 20 20 20 20 20 20 58 3d 42 6c 6f |.*n X=Blo| 00003440 63 6b 21 30 3a 59 3d 42 6c 6f 63 6b 21 34 3a 59 |ck!0:Y=Block!4:Y| 00003450 2d 3d 28 42 6c 6f 63 6b 21 32 34 2d 26 31 38 45 |-=(Block!24-&18E| 00003460 29 2f 31 2e 36 2a 32 5e 59 45 69 67 46 61 63 74 |)/1.6*2^YEigFact| 00003470 6f 72 2b 28 32 5e 59 45 69 67 46 61 63 74 6f 72 |or+(2^YEigFactor| 00003480 20 80 20 42 6c 6f 63 6b 21 32 34 3d 26 31 38 45 | . Block!24=&18E| 00003490 29 3a e7 20 59 3c 30 20 8c 20 59 3d 30 0d 0d 34 |):. Y<0 . Y=0..4| 000034a0 55 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 3f 30 |U Block?0| 000034b0 3d 33 3a 42 6c 6f 63 6b 3f 31 3d 58 20 83 20 32 |=3:Block?1=X . 2| 000034c0 35 36 3a 42 6c 6f 63 6b 3f 32 3d 58 20 81 20 32 |56:Block?2=X . 2| 000034d0 35 36 3a 42 6c 6f 63 6b 3f 33 3d 59 20 83 20 32 |56:Block?3=Y . 2| 000034e0 35 36 3a 42 6c 6f 63 6b 3f 34 3d 59 20 81 20 32 |56:Block?4=Y . 2| 000034f0 35 36 0d 0d 3e 21 20 20 20 20 20 20 20 20 c8 99 |56..>! ..| 00003500 20 22 4f 53 5f 57 6f 72 64 22 2c 32 31 2c 42 6c | "OS_Word",21,Bl| 00003510 6f 63 6b 0d 0d 48 24 20 20 20 20 20 20 c9 20 26 |ock..H$ . &| 00003520 31 38 46 2c 26 31 39 46 2c 26 31 41 46 2c 26 31 |18F,&19F,&1AF,&1| 00003530 42 46 3a f4 20 55 70 0d 0d 52 2b 20 20 20 20 20 |BF:. Up..R+ | 00003540 20 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 | .. "Wimp_GetP| 00003550 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f |ointerInfo",,Blo| 00003560 63 6b 0d 0d 5c 9c 20 20 20 20 20 20 20 20 58 3d |ck..\. X=| 00003570 42 6c 6f 63 6b 21 30 3a 59 3d 42 6c 6f 63 6b 21 |Block!0:Y=Block!| 00003580 34 3a 59 2b 3d 28 42 6c 6f 63 6b 21 32 34 2d 26 |4:Y+=(Block!24-&| 00003590 31 38 46 29 2f 31 2e 36 2a 32 5e 59 45 69 67 46 |18F)/1.6*2^YEigF| 000035a0 61 63 74 6f 72 2b 28 32 5e 59 45 69 67 46 61 63 |actor+(2^YEigFac| 000035b0 74 6f 72 20 80 20 42 6c 6f 63 6b 21 32 34 3d 26 |tor . Block!24=&| 000035c0 31 38 46 29 3a e7 20 59 3e 28 59 70 69 78 65 6c |18F):. Y>(Ypixel| 000035d0 73 2a 28 32 5e 59 45 69 67 46 61 63 74 6f 72 29 |s*(2^YEigFactor)| 000035e0 29 20 8c 20 59 3d 28 59 70 69 78 65 6c 73 2a 28 |) . Y=(Ypixels*(| 000035f0 32 5e 59 45 69 67 46 61 63 74 6f 72 29 29 0d 0d |2^YEigFactor))..| 00003600 66 55 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 3f |fU Block?| 00003610 30 3d 33 3a 42 6c 6f 63 6b 3f 31 3d 58 20 83 20 |0=3:Block?1=X . | 00003620 32 35 36 3a 42 6c 6f 63 6b 3f 32 3d 58 20 81 20 |256:Block?2=X . | 00003630 32 35 36 3a 42 6c 6f 63 6b 3f 33 3d 59 20 83 20 |256:Block?3=Y . | 00003640 32 35 36 3a 42 6c 6f 63 6b 3f 34 3d 59 20 81 20 |256:Block?4=Y . | 00003650 32 35 36 0d 0d 70 21 20 20 20 20 20 20 20 20 c8 |256..p! .| 00003660 99 20 22 4f 53 5f 57 6f 72 64 22 2c 32 31 2c 42 |. "OS_Word",21,B| 00003670 6c 6f 63 6b 0d 0d 7a 0b 20 20 20 20 20 20 7f 0d |lock..z. ..| 00003680 0d 84 29 20 20 20 20 20 20 20 20 c8 99 20 22 57 |..) .. "W| 00003690 69 6d 70 5f 50 72 6f 63 65 73 73 4b 65 79 22 2c |imp_ProcessKey",| 000036a0 42 6c 6f 63 6b 21 32 34 0d 0d 8e 07 20 20 cb 0d |Block!24.... ..| 000036b0 0d 98 05 cb 0d 0d a2 05 e1 0d 0d ac 05 3a 0d 0d |.............:..| 000036c0 b6 11 dd 20 f2 44 65 63 6f 64 65 4d 65 6e 75 0d |... .DecodeMenu.| 000036d0 0d c0 1d 53 75 62 30 3d 42 6c 6f 63 6b 21 30 3a |...Sub0=Block!0:| 000036e0 53 75 62 31 3d 42 6c 6f 63 6b 21 34 0d 0d ca 0f |Sub1=Block!4....| 000036f0 43 6c 6f 73 65 4d 65 6e 75 3d a3 0d 0d d4 0d c8 |CloseMenu=......| 00003700 8e 20 53 75 62 30 20 ca 0d 0d de 09 20 20 c9 20 |. Sub0 ..... . | 00003710 30 0d 0d e8 27 20 20 20 20 c8 99 20 22 57 69 6d |0...' .. "Wim| 00003720 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f |p_GetPointerInfo| 00003730 22 2c 2c 42 6c 6f 63 6b 0d 0d f2 38 20 20 20 20 |",,Block...8 | 00003740 c8 99 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d |.. "Wimp_CreateM| 00003750 65 6e 75 22 2c 2c 49 6e 66 6f 2c 42 6c 6f 63 6b |enu",,Info,Block| 00003760 21 30 2d 32 34 2c 42 6c 6f 63 6b 21 34 2b 32 34 |!0-24,Block!4+24| 00003770 0d 0d fc 13 20 20 20 20 43 6c 6f 73 65 4d 65 6e |.... CloseMen| 00003780 75 3d b9 0d 0e 06 09 20 20 c9 20 31 0d 0e 10 28 |u=..... . 1...(| 00003790 20 20 20 20 e7 20 53 75 62 31 3e 3d 30 20 8c 20 | . Sub1>=0 . | 000037a0 f2 44 65 63 6f 64 65 55 74 69 6c 69 74 69 65 73 |.DecodeUtilities| 000037b0 4d 65 6e 75 0d 0e 1a 09 20 20 c9 20 32 0d 0e 24 |Menu.... . 2..$| 000037c0 27 20 20 20 20 f2 55 70 64 61 74 65 50 72 65 66 |' .UpdatePref| 000037d0 73 57 69 6e 64 6f 77 42 65 66 6f 72 65 4f 70 65 |sWindowBeforeOpe| 000037e0 6e 69 6e 67 0d 0e 2e 1a 20 20 20 20 f2 4f 70 65 |ning.... .Ope| 000037f0 6e 28 50 72 65 66 73 2c b9 2c 34 2c 31 29 0d 0e |n(Prefs,.,4,1)..| 00003800 38 09 20 20 c9 20 33 0d 0e 42 0e 20 20 20 20 44 |8. . 3..B. D| 00003810 6f 6e 65 3d b9 0d 0e 4c 05 cb 0d 0e 56 23 c8 99 |one=...L....V#..| 00003820 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 | "Wimp_GetPointe| 00003830 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b 0d 0e 60 |rInfo",,Block..`| 00003840 33 e7 20 28 28 42 6c 6f 63 6b 21 38 20 80 20 31 |3. ((Block!8 . 1| 00003850 29 3d 31 29 20 80 20 28 ac 20 43 6c 6f 73 65 4d |)=1) . (. CloseM| 00003860 65 6e 75 29 20 8c 20 f2 4d 61 6b 65 4d 65 6e 75 |enu) . .MakeMenu| 00003870 0d 0e 6a 05 e1 0d 0e 74 05 3a 0d 0e 7e 1a dd 20 |..j....t.:..~.. | 00003880 f2 44 65 63 6f 64 65 55 74 69 6c 69 74 69 65 73 |.DecodeUtilities| 00003890 4d 65 6e 75 0d 0e 88 0d c8 8e 20 53 75 62 31 20 |Menu...... Sub1 | 000038a0 ca 0d 0e 92 20 20 20 c9 20 30 2c 31 2c 32 3a f2 |.... . 0,1,2:.| 000038b0 43 61 6c 6c 55 74 69 6c 69 74 79 28 53 75 62 31 |CallUtility(Sub1| 000038c0 29 0d 0e 9c 07 20 20 7f 0d 0e a6 21 20 20 20 20 |).... ....! | 000038d0 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 38 2a |U%=SlotEnd+(188*| 000038e0 28 53 75 62 31 2d 33 29 29 0d 0e b0 1a 20 20 20 |(Sub1-3)).... | 000038f0 20 f2 43 61 6c 6c 55 74 69 6c 69 74 79 28 53 75 | .CallUtility(Su| 00003900 62 31 29 0d 0e ba 05 cb 0d 0e c4 05 e1 0d 0e ce |b1).............| 00003910 05 3a 0d 0e d8 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d |.:...O. --------| 00003920 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00003960 2d 0d 0e e2 13 f4 20 4d 65 6e 75 20 72 6f 75 74 |-..... Menu rout| 00003970 69 6e 65 73 0d 0e ec 4f f4 20 2d 2d 2d 2d 2d 2d |ines...O. ------| 00003980 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000039c0 2d 2d 2d 0d 0e f6 05 3a 0d 0f 00 11 dd 20 f2 42 |---....:..... .B| 000039d0 75 69 6c 64 4d 65 6e 75 73 0d 0f 0a 49 f4 20 54 |uildMenus...I. T| 000039e0 68 69 73 20 70 72 6f 63 65 64 75 72 65 20 73 68 |his procedure sh| 000039f0 6f 75 6c 64 20 6f 6e 6c 79 20 62 65 20 76 69 73 |ould only be vis| 00003a00 69 74 65 64 20 6f 6e 63 65 2c 20 73 69 6e 63 65 |ited once, since| 00003a10 20 69 74 20 63 6f 6e 74 61 69 6e 73 20 44 49 4d | it contains DIM| 00003a20 73 2e 0d 0f 14 07 20 20 3a 0d 0f 1e 4f f4 20 49 |s..... :...O. I| 00003a30 6e 20 74 68 65 20 6d 65 6e 75 20 74 69 74 6c 65 |n the menu title| 00003a40 20 73 74 72 69 6e 67 73 20 62 65 6c 6f 77 2c 20 | strings below, | 00003a50 69 66 20 61 20 22 7c 22 20 63 68 61 72 61 63 74 |if a "|" charact| 00003a60 65 72 20 69 73 20 70 72 65 73 65 6e 74 20 69 74 |er is present it| 00003a70 20 77 69 6c 6c 20 62 65 0d 0f 28 4f f4 20 72 65 | will be..(O. re| 00003a80 70 6c 61 63 65 64 20 62 79 20 61 20 73 70 61 63 |placed by a spac| 00003a90 65 20 75 6e 64 65 72 20 52 49 53 43 20 4f 53 20 |e under RISC OS | 00003aa0 33 2e 31 20 28 6f 72 20 67 72 65 61 74 65 72 29 |3.1 (or greater)| 00003ab0 2c 20 6f 72 20 77 69 6c 6c 20 74 65 72 6d 69 6e |, or will termin| 00003ac0 61 74 65 20 74 68 65 0d 0f 32 4f f4 20 73 74 72 |ate the..2O. str| 00003ad0 69 6e 67 20 75 6e 64 65 72 20 65 61 72 6c 69 65 |ing under earlie| 00003ae0 72 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 74 68 |r versions of th| 00003af0 65 20 77 69 6d 70 2e 20 54 68 69 73 20 61 6c 6c |e wimp. This all| 00003b00 6f 77 73 20 74 68 65 20 6e 65 77 20 69 6e 64 69 |ows the new indi| 00003b10 72 65 63 74 65 64 0d 0f 3c 46 f4 20 6d 65 6e 75 |rected..<F. menu| 00003b20 20 74 69 74 6c 65 73 20 74 6f 20 62 65 20 75 73 | titles to be us| 00003b30 65 64 20 28 77 68 69 63 68 20 77 65 72 65 20 69 |ed (which were i| 00003b40 6e 74 72 6f 64 75 63 65 64 20 77 69 74 68 20 52 |ntroduced with R| 00003b50 49 53 43 20 4f 53 20 33 2e 31 29 2e 0d 0f 46 07 |ISC OS 3.1)...F.| 00003b60 20 20 3a 0d 0f 50 23 49 6e 64 69 72 65 63 74 4d | :..P#IndirectM| 00003b70 65 6e 75 54 65 78 74 4f 66 66 73 65 74 50 6f 69 |enuTextOffsetPoi| 00003b80 6e 74 65 72 3d 30 0d 0f 5a 4e f4 20 54 68 69 73 |nter=0..ZN. This| 00003b90 20 70 6f 69 6e 74 73 20 74 6f 20 61 20 70 6f 6f | points to a poo| 00003ba0 6c 20 74 6f 20 62 65 20 75 73 65 64 20 62 79 20 |l to be used by | 00003bb0 61 6c 6c 20 6d 65 6e 75 73 20 66 6f 72 20 74 68 |all menus for th| 00003bc0 65 69 72 20 69 6e 64 69 72 65 63 74 65 64 20 74 |eir indirected t| 00003bd0 65 78 74 2e 0d 0f 64 07 20 20 3a 0d 0f 6e 4d 54 |ext...d. :..nMT| 00003be0 69 74 6c 65 24 3d 22 4f 6d 6e 69 44 65 73 6b 7c |itle$="OmniDesk|| 00003bf0 53 75 69 74 65 22 3a de 20 49 42 4d 65 6e 75 54 |Suite":. IBMenuT| 00003c00 69 74 6c 65 20 a9 28 54 69 74 6c 65 24 29 2b 31 |itle .(Title$)+1| 00003c10 3a 24 49 42 4d 65 6e 75 54 69 74 6c 65 3d 54 69 |:$IBMenuTitle=Ti| 00003c20 74 6c 65 24 2b bd 31 33 0d 0f 78 0d 4d 25 3d 49 |tle$+.13..x.M%=I| 00003c30 42 4d 65 6e 75 0d 0f 82 1a f2 4d 65 6e 75 49 6e |BMenu.....MenuIn| 00003c40 69 74 28 49 42 4d 65 6e 75 54 69 74 6c 65 29 0d |it(IBMenuTitle).| 00003c50 0f 8c 1c f2 4d 65 6e 75 49 74 65 6d 28 22 49 6e |....MenuItem("In| 00003c60 66 6f 22 2c 32 2c 49 6e 66 6f 29 0d 0f 96 26 f2 |fo",2,Info)...&.| 00003c70 4d 65 6e 75 49 74 65 6d 28 22 55 74 69 6c 69 74 |MenuItem("Utilit| 00003c80 69 65 73 22 2c 30 2c 55 74 69 6c 73 4d 65 6e 75 |ies",0,UtilsMenu| 00003c90 29 0d 0f a0 25 f2 4d 65 6e 75 49 74 65 6d 28 22 |)...%.MenuItem("| 00003ca0 50 72 65 66 65 72 65 6e 63 65 73 20 2e 2e 2e 22 |Preferences ..."| 00003cb0 2c 32 2c 2d 31 29 0d 0f aa 1c f2 4d 65 6e 75 49 |,2,-1).....MenuI| 00003cc0 74 65 6d 28 22 51 75 69 74 22 2c 31 32 38 2c 2d |tem("Quit",128,-| 00003cd0 31 29 0d 0f b4 07 20 20 3a 0d 0f be 10 4d 25 3d |1).... :....M%=| 00003ce0 55 74 69 6c 73 4d 65 6e 75 0d 0f c8 4e 54 69 74 |UtilsMenu...NTit| 00003cf0 6c 65 24 3d 22 55 74 69 6c 69 74 69 65 73 22 3a |le$="Utilities":| 00003d00 de 20 55 74 69 6c 73 4d 65 6e 75 54 69 74 6c 65 |. UtilsMenuTitle| 00003d10 20 a9 28 54 69 74 6c 65 24 29 2b 31 3a 24 55 74 | .(Title$)+1:$Ut| 00003d20 69 6c 73 4d 65 6e 75 54 69 74 6c 65 3d 54 69 74 |ilsMenuTitle=Tit| 00003d30 6c 65 24 2b bd 31 33 0d 0f d2 1d f2 4d 65 6e 75 |le$+.13.....Menu| 00003d40 49 6e 69 74 28 55 74 69 6c 73 4d 65 6e 75 54 69 |Init(UtilsMenuTi| 00003d50 74 6c 65 29 0d 0f dc 17 f2 42 75 69 6c 64 55 74 |tle).....BuildUt| 00003d60 69 6c 69 74 69 65 73 4d 65 6e 75 0d 0f e6 05 e1 |ilitiesMenu.....| 00003d70 0d 0f f0 05 3a 0d 0f fa 19 dd 20 f2 42 75 69 6c |....:..... .Buil| 00003d80 64 55 74 69 6c 69 74 69 65 73 4d 65 6e 75 0d 10 |dUtilitiesMenu..| 00003d90 04 13 50 25 3d 55 74 69 6c 73 4d 65 6e 75 2b 32 |..P%=UtilsMenu+2| 00003da0 38 0d 10 0e 22 f2 4d 65 6e 75 49 74 65 6d 28 22 |8...".MenuItem("| 00003db0 4c 6f 63 61 74 65 20 63 61 72 65 74 22 2c 30 2c |Locate caret",0,| 00003dc0 2d 31 29 0d 10 18 24 f2 4d 65 6e 75 49 74 65 6d |-1)...$.MenuItem| 00003dd0 28 22 54 75 72 6e 20 63 61 72 65 74 20 6f 66 66 |("Turn caret off| 00003de0 22 2c 30 2c 2d 31 29 0d 10 22 26 f2 4d 65 6e 75 |",0,-1).."&.Menu| 00003df0 49 74 65 6d 28 22 44 69 73 70 6c 61 79 20 73 70 |Item("Display sp| 00003e00 72 69 74 65 22 2c 31 32 38 2c 2d 31 29 0d 10 2c |rite",128,-1)..,| 00003e10 1a e7 20 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 |.. UtilitiesKnow| 00003e20 6e 3d 30 20 8c 20 e1 0d 10 36 1c e3 20 4e 3d 30 |n=0 . ...6.. N=0| 00003e30 20 b8 20 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 | . UtilitiesKnow| 00003e40 6e 2d 31 0d 10 40 0e 20 20 50 25 21 2d 32 34 3d |n-1..@. P%!-24=| 00003e50 30 0d 10 4a 18 20 20 55 25 3d 53 6c 6f 74 45 6e |0..J. U%=SlotEn| 00003e60 64 2b 28 31 38 38 2a 4e 29 0d 10 54 1f 20 20 f2 |d+(188*N)..T. .| 00003e70 4d 65 6e 75 49 74 65 6d 28 24 28 55 25 2b 34 29 |MenuItem($(U%+4)| 00003e80 2c 31 32 38 2c 2d 31 29 0d 10 5e 05 ed 0d 10 68 |,128,-1)..^....h| 00003e90 05 e1 0d 10 72 05 3a 0d 10 7c 0f dd 20 f2 4d 61 |....r.:..|.. .Ma| 00003ea0 6b 65 4d 65 6e 75 0d 10 86 17 e7 20 4d 65 6e 75 |keMenu..... Menu| 00003eb0 58 3c 30 20 8c 20 4d 65 6e 75 58 3d 30 0d 10 90 |X<0 . MenuX=0...| 00003ec0 2a e7 20 4d 65 6e 75 59 3c 33 32 30 20 8c 20 4d |*. MenuY<320 . M| 00003ed0 65 6e 75 59 3d 33 32 30 3a f4 20 66 6f 72 20 69 |enuY=320:. for i| 00003ee0 63 6f 6e 20 62 61 72 0d 10 9a 37 c8 99 20 22 57 |con bar...7.. "W| 00003ef0 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c |imp_CreateMenu",| 00003f00 2c 4d 25 2c 4d 65 6e 75 58 2d 28 28 33 36 2b 4d |,M%,MenuX-((36+M| 00003f10 25 21 31 36 29 2f 32 29 2c 4d 65 6e 75 59 0d 10 |%!16)/2),MenuY..| 00003f20 a4 05 e1 0d 10 ae 05 3a 0d 10 b8 1a dd 20 f2 4d |.......:..... .M| 00003f30 65 6e 75 49 6e 69 74 28 4d 65 6e 75 54 69 74 6c |enuInit(MenuTitl| 00003f40 65 29 0d 10 c2 11 e7 20 77 69 6d 70 3e 3d 33 31 |e)..... wimp>=31| 00003f50 30 20 8c 0d 10 cc 37 20 20 41 3d a7 24 4d 65 6e |0 ....7 A=.$Men| 00003f60 75 54 69 74 6c 65 2c 22 7c 22 29 3a e7 20 41 3c |uTitle,"|"):. A<| 00003f70 3e 30 20 8c 20 3f 28 4d 65 6e 75 54 69 74 6c 65 |>0 . ?(MenuTitle| 00003f80 2b 28 41 2d 31 29 29 3d 33 32 0d 10 d6 1b 20 20 |+(A-1))=32.... | 00003f90 4d 65 6e 75 4d 61 78 3d a9 28 24 4d 65 6e 75 54 |MenuMax=.($MenuT| 00003fa0 69 74 6c 65 29 0d 10 e0 14 20 20 4d 25 21 30 3d |itle).... M%!0=| 00003fb0 4d 65 6e 75 54 69 74 6c 65 0d 10 ea 05 cc 0d 10 |MenuTitle.......| 00003fc0 f4 37 20 20 41 3d a7 24 4d 65 6e 75 54 69 74 6c |.7 A=.$MenuTitl| 00003fd0 65 2c 22 7c 22 29 3a e7 20 41 3c 3e 30 20 8c 20 |e,"|"):. A<>0 . | 00003fe0 3f 28 4d 65 6e 75 54 69 74 6c 65 2b 28 41 2d 31 |?(MenuTitle+(A-1| 00003ff0 29 29 3d 31 33 0d 10 fe 20 20 20 4d 65 6e 75 4d |))=13... MenuM| 00004000 61 78 3d a9 28 c0 24 4d 65 6e 75 54 69 74 6c 65 |ax=.(.$MenuTitle| 00004010 2c 31 32 29 29 0d 11 08 19 20 20 24 4d 25 3d c0 |,12)).... $M%=.| 00004020 24 4d 65 6e 75 54 69 74 6c 65 2c 31 32 29 0d 11 |$MenuTitle,12)..| 00004030 12 05 cd 0d 11 1c 24 4d 25 3f 31 32 3d 37 3a 4d |......$M%?12=7:M| 00004040 25 3f 31 33 3d 32 3a 4d 25 3f 31 34 3d 31 31 3a |%?13=2:M%?14=11:| 00004050 4d 25 3f 31 35 3d 30 0d 11 26 14 4d 25 21 31 36 |M%?15=0..&.M%!16| 00004060 3d 4d 65 6e 75 4d 61 78 2a 31 36 0d 11 30 14 4d |=MenuMax*16..0.M| 00004070 25 21 32 30 3d 34 34 3a 4d 25 21 32 34 3d 30 0d |%!20=44:M%!24=0.| 00004080 11 3a 0c 50 25 3d 4d 25 2b 32 38 0d 11 44 05 e1 |.:.P%=M%+28..D..| 00004090 0d 11 4e 05 3a 0d 11 58 21 dd 20 f2 4d 65 6e 75 |..N.:..X!. .Menu| 000040a0 49 74 65 6d 28 54 65 78 74 24 2c 46 6c 61 67 73 |Item(Text$,Flags| 000040b0 2c 4c 69 6e 6b 29 0d 11 62 4b f4 20 46 6c 61 67 |,Link)..bK. Flag| 000040c0 73 3a 20 31 2d 74 69 63 6b 65 64 2c 20 32 2d 64 |s: 1-ticked, 2-d| 000040d0 61 73 68 65 64 20 6c 69 6e 65 2c 20 34 2d 77 72 |ashed line, 4-wr| 000040e0 69 74 65 61 62 6c 65 2c 20 38 2d 6d 65 73 73 61 |iteable, 8-messa| 000040f0 67 65 2c 20 31 32 38 2d 6c 61 73 74 20 69 74 65 |ge, 128-last ite| 00004100 6d 0d 11 6c 31 f4 20 4c 69 6e 6b 3a 20 6d 65 6e |m..l1. Link: men| 00004110 75 20 6f 72 20 77 69 6e 64 6f 77 20 68 61 6e 64 |u or window hand| 00004120 6c 65 20 66 6f 72 20 73 75 62 2d 70 6f 69 6e 74 |le for sub-point| 00004130 65 72 0d 11 76 18 50 25 21 30 3d 46 6c 61 67 73 |er..v.P%!0=Flags| 00004140 3a 50 25 21 34 3d 4c 69 6e 6b 0d 11 80 14 e7 20 |:P%!4=Link..... | 00004150 a9 28 54 65 78 74 24 29 3c 3d 31 32 20 8c 0d 11 |.(Text$)<=12 ...| 00004160 8a 25 20 20 50 25 21 38 3d 26 30 37 30 30 33 30 |.% P%!8=&070030| 00004170 32 31 3a f4 20 4e 6f 74 20 69 6e 64 69 72 65 63 |21:. Not indirec| 00004180 74 65 64 0d 11 94 14 20 20 24 28 50 25 2b 31 32 |ted.... $(P%+12| 00004190 29 3d 54 65 78 74 24 0d 11 9e 05 cc 0d 11 a8 21 |)=Text$........!| 000041a0 20 20 50 25 21 38 3d 26 30 37 30 30 33 31 32 31 | P%!8=&07003121| 000041b0 3a f4 20 49 6e 64 69 72 65 63 74 65 64 0d 11 b2 |:. Indirected...| 000041c0 3a 20 20 50 25 21 31 32 3d 49 6e 64 69 72 65 63 |: P%!12=Indirec| 000041d0 74 4d 65 6e 75 54 65 78 74 2b 49 6e 64 69 72 65 |tMenuText+Indire| 000041e0 63 74 4d 65 6e 75 54 65 78 74 4f 66 66 73 65 74 |ctMenuTextOffset| 000041f0 50 6f 69 6e 74 65 72 0d 11 bc 15 20 20 50 25 21 |Pointer.... P%!| 00004200 31 36 3d 30 3a 50 25 21 32 30 3d 30 0d 11 c6 41 |16=0:P%!20=0...A| 00004210 20 20 24 28 49 6e 64 69 72 65 63 74 4d 65 6e 75 | $(IndirectMenu| 00004220 54 65 78 74 2b 49 6e 64 69 72 65 63 74 4d 65 6e |Text+IndirectMen| 00004230 75 54 65 78 74 4f 66 66 73 65 74 50 6f 69 6e 74 |uTextOffsetPoint| 00004240 65 72 29 3d 54 65 78 74 24 2b bd 31 33 0d 11 d0 |er)=Text$+.13...| 00004250 2f 20 20 49 6e 64 69 72 65 63 74 4d 65 6e 75 54 |/ IndirectMenuT| 00004260 65 78 74 4f 66 66 73 65 74 50 6f 69 6e 74 65 72 |extOffsetPointer| 00004270 2b 3d a9 28 54 65 78 74 24 29 2b 31 0d 11 da 82 |+=.(Text$)+1....| 00004280 20 20 e7 20 49 6e 64 69 72 65 63 74 4d 65 6e 75 | . IndirectMenu| 00004290 54 65 78 74 4f 66 66 73 65 74 50 6f 69 6e 74 65 |TextOffsetPointe| 000042a0 72 3e 49 6e 64 4d 65 6e 75 4d 61 78 20 8c 20 85 |r>IndMenuMax . .| 000042b0 20 30 2c 22 54 68 65 20 69 6e 64 69 72 65 63 74 | 0,"The indirect| 000042c0 20 6d 65 6e 75 20 74 65 78 74 20 62 75 66 66 65 | menu text buffe| 000042d0 72 20 68 61 73 20 6f 76 65 72 66 6c 6f 77 65 64 |r has overflowed| 000042e0 2e 20 50 6c 65 61 73 65 20 61 6c 6c 6f 63 61 74 |. Please allocat| 000042f0 65 20 6d 6f 72 65 20 73 70 61 63 65 2e 22 0d 11 |e more space."..| 00004300 e4 05 cd 0d 11 ee 0a 50 25 2b 3d 32 34 0d 11 f8 |.......P%+=24...| 00004310 3e e7 20 4d 65 6e 75 4d 61 78 3c a9 28 54 65 78 |>. MenuMax<.(Tex| 00004320 74 24 29 20 8c 20 4d 65 6e 75 4d 61 78 3d a9 28 |t$) . MenuMax=.(| 00004330 54 65 78 74 24 29 3a 4d 25 21 31 36 3d 28 4d 65 |Text$):M%!16=(Me| 00004340 6e 75 4d 61 78 2b 31 29 2a 31 36 0d 12 02 41 e7 |nuMax+1)*16...A.| 00004350 20 28 46 6c 61 67 73 3d 31 32 38 29 20 80 20 28 | (Flags=128) . (| 00004360 77 69 6d 70 3e 3d 33 31 30 29 20 8c 20 4d 25 21 |wimp>=310) . M%!| 00004370 32 38 3d 28 28 28 4d 25 21 32 38 29 20 80 20 ac |28=(((M%!28) . .| 00004380 20 32 35 36 29 20 82 20 32 35 36 29 0d 12 0c 37 | 256) . 256)...7| 00004390 20 20 f4 20 49 6e 64 69 72 65 63 74 65 64 20 6d | . Indirected m| 000043a0 65 6e 75 20 74 69 74 6c 65 73 20 66 6f 72 20 52 |enu titles for R| 000043b0 49 53 43 20 4f 53 20 33 2e 31 20 75 70 77 61 72 |ISC OS 3.1 upwar| 000043c0 64 73 2e 0d 12 16 05 e1 0d 12 20 05 3a 0d 12 2a |ds........ .:..*| 000043d0 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |O. -------------| 000043e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00004410 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 12 34 29 |------------..4)| 00004420 f4 20 52 65 73 70 6f 6e 73 65 73 20 74 6f 20 69 |. Responses to i| 00004430 6e 63 6f 6d 69 6e 67 20 77 69 6d 70 20 6d 65 73 |ncoming wimp mes| 00004440 73 61 67 65 73 0d 12 3e 4f f4 20 2d 2d 2d 2d 2d |sages..>O. -----| 00004450 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00004490 2d 2d 2d 2d 0d 12 48 05 3a 0d 12 52 18 dd 20 f2 |----..H.:..R.. .| 000044a0 53 61 76 65 44 65 73 6b 74 6f 70 28 46 69 6c 65 |SaveDesktop(File| 000044b0 29 0d 12 5c 07 ea 20 85 0d 12 66 47 ee 20 85 20 |)..\.. ...fG. . | 000044c0 ea 20 42 6c 6f 63 6b 21 31 32 3d 42 6c 6f 63 6b |. Block!12=Block| 000044d0 21 38 3a c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 |!8:.. "Wimp_Send| 000044e0 4d 65 73 73 61 67 65 22 2c 31 39 2c 42 6c 6f 63 |Message",19,Bloc| 000044f0 6b 2c 42 6c 6f 63 6b 21 34 3a f7 20 85 3a e1 0d |k,Block!4:. .:..| 00004500 12 70 49 f4 20 54 68 65 20 61 62 6f 76 65 20 6c |.pI. The above l| 00004510 69 6e 65 20 61 63 6b 6e 6f 77 6c 65 64 67 65 73 |ine acknowledges| 00004520 20 74 68 65 20 6d 65 73 73 61 67 65 20 69 66 20 | the message if | 00004530 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 73 2c |an error occurs,| 00004540 20 74 68 65 72 65 62 79 0d 12 7a 20 f4 20 61 62 | thereby..z . ab| 00004550 6f 72 74 69 6e 67 20 74 68 65 20 64 65 73 6b 74 |orting the deskt| 00004560 6f 70 20 73 61 76 65 2e 0d 12 84 2b d5 23 46 69 |op save....+.#Fi| 00004570 6c 65 2c 22 52 75 6e 20 22 2b 4f 75 72 50 61 74 |le,"Run "+OurPat| 00004580 68 4e 61 6d 65 24 2b 4f 75 72 46 69 6c 65 4e 61 |hName$+OurFileNa| 00004590 6d 65 24 0d 12 8e 05 e1 0d 12 98 05 3a 0d 12 a2 |me$.........:...| 000045a0 0b dd 20 f2 48 65 6c 70 0d 12 ac 34 42 6c 6f 63 |.. .Help...4Bloc| 000045b0 6b 21 31 32 3d 42 6c 6f 63 6b 21 38 3a 42 6c 6f |k!12=Block!8:Blo| 000045c0 63 6b 21 31 36 3d 26 35 30 33 3a 48 65 6c 70 49 |ck!16=&503:HelpI| 000045d0 6e 66 6f 3d 42 6c 6f 63 6b 2b 32 30 0d 12 b6 07 |nfo=Block+20....| 000045e0 20 20 3a 0d 12 c0 21 57 69 6e 64 6f 77 3d 42 6c | :...!Window=Bl| 000045f0 6f 63 6b 21 33 32 3a 49 63 6f 6e 3d 42 6c 6f 63 |ock!32:Icon=Bloc| 00004600 6b 21 33 36 0d 12 ca 07 20 20 3a 0d 12 d4 0f c8 |k!36.... :.....| 00004610 8e 20 57 69 6e 64 6f 77 20 ca 0d 12 de 2e 20 20 |. Window ..... | 00004620 c9 20 2d 32 3a f2 53 65 6e 64 28 22 54 68 69 73 |. -2:.Send("This| 00004630 20 69 73 20 74 68 65 20 4f 6d 6e 69 44 65 73 6b | is the OmniDesk| 00004640 20 69 63 6f 6e 2e 22 29 0d 12 e8 29 20 20 20 20 | icon.")...) | 00004650 20 20 20 20 20 20 e7 20 53 45 4c 45 43 54 48 65 | . SELECTHe| 00004660 6c 70 24 3d 41 44 4a 55 53 54 48 65 6c 70 24 20 |lp$=ADJUSTHelp$ | 00004670 8c 0d 12 f2 53 20 20 20 20 20 20 20 20 20 20 20 |....S | 00004680 20 e7 20 53 45 4c 45 43 54 48 65 6c 70 24 3c 3e | . SELECTHelp$<>| 00004690 22 22 20 8c 20 f2 53 65 6e 64 28 22 43 6c 69 63 |"" . .Send("Clic| 000046a0 6b 20 53 45 4c 45 43 54 20 6f 72 20 41 44 4a 55 |k SELECT or ADJU| 000046b0 53 54 20 74 6f 20 22 2b 53 45 4c 45 43 54 48 65 |ST to "+SELECTHe| 000046c0 6c 70 24 29 0d 12 fc 0f 20 20 20 20 20 20 20 20 |lp$).... | 000046d0 20 20 cc 0d 13 06 49 20 20 20 20 20 20 20 20 20 | ....I | 000046e0 20 20 20 e7 20 53 45 4c 45 43 54 48 65 6c 70 24 | . SELECTHelp$| 000046f0 3c 3e 22 22 20 8c 20 f2 53 65 6e 64 28 22 43 6c |<>"" . .Send("Cl| 00004700 69 63 6b 20 53 45 4c 45 43 54 20 74 6f 20 22 2b |ick SELECT to "+| 00004710 53 45 4c 45 43 54 48 65 6c 70 24 29 0d 13 10 49 |SELECTHelp$)...I| 00004720 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 41 44 | . AD| 00004730 4a 55 53 54 48 65 6c 70 24 3c 3e 22 22 20 8c 20 |JUSTHelp$<>"" . | 00004740 f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 41 44 4a |.Send("Click ADJ| 00004750 55 53 54 20 74 6f 20 22 2b 41 44 4a 55 53 54 48 |UST to "+ADJUSTH| 00004760 65 6c 70 24 29 0d 13 1a 0f 20 20 20 20 20 20 20 |elp$).... | 00004770 20 20 20 cd 0d 13 24 1e 20 20 20 20 20 20 20 20 | ...$. | 00004780 20 20 f2 53 65 6e 64 28 44 52 41 47 48 65 6c 70 | .Send(DRAGHelp| 00004790 24 29 0d 13 2e 17 20 20 c9 20 49 6e 66 6f 3a e7 |$).... . Info:.| 000047a0 20 49 63 6f 6e 3d 30 20 8c 0d 13 38 49 20 20 20 | Icon=0 ...8I | 000047b0 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e 64 | .Send| 000047c0 28 22 49 73 6e 27 74 20 74 68 69 73 20 70 72 65 |("Isn't this pre| 000047d0 74 74 79 3f 20 49 74 20 77 61 73 20 63 72 65 61 |tty? It was crea| 000047e0 74 65 64 20 69 6e 20 41 72 74 57 6f 72 6b 73 2e |ted in ArtWorks.| 000047f0 22 29 0d 13 42 61 20 20 20 20 20 20 20 20 20 20 |")..Ba | 00004800 20 20 20 20 e7 20 a4 4d 6f 64 65 49 6e 66 6f 28 | . .ModeInfo(| 00004810 22 4e 43 6f 6c 22 2c 2d 31 29 3c 36 33 20 8c 20 |"NCol",-1)<63 . | 00004820 f2 53 65 6e 64 28 22 49 74 20 6c 6f 6f 6b 73 20 |.Send("It looks | 00004830 65 76 65 6e 20 6e 69 63 65 72 20 69 6e 20 61 20 |even nicer in a | 00004840 66 75 6c 6c 2d 63 6f 6c 6f 75 72 20 6d 6f 64 65 |full-colour mode| 00004850 2e 22 29 0d 13 4c 11 20 20 20 20 20 20 20 20 20 |.")..L. | 00004860 20 20 20 cc 0d 13 56 4b 20 20 20 20 20 20 20 20 | ...VK | 00004870 20 20 20 20 20 20 f2 53 65 6e 64 28 22 54 68 69 | .Send("Thi| 00004880 73 20 77 69 6e 64 6f 77 20 64 69 73 70 6c 61 79 |s window display| 00004890 73 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 |s information ab| 000048a0 6f 75 74 20 4f 6d 6e 69 44 65 73 6b 2e 22 29 0d |out OmniDesk.").| 000048b0 13 60 11 20 20 20 20 20 20 20 20 20 20 20 20 cd |.`. .| 000048c0 0d 13 6a 33 20 20 c9 20 44 72 6f 70 3a f2 53 65 |..j3 . Drop:.Se| 000048d0 6e 64 28 22 44 72 61 67 20 61 20 66 69 6c 65 20 |nd("Drag a file | 000048e0 69 6e 74 6f 20 74 68 69 73 20 77 69 6e 64 6f 77 |into this window| 000048f0 2e 22 29 0d 13 74 2d 20 20 c9 20 4c 6f 61 64 69 |.")..t- . Loadi| 00004900 6e 67 3a f2 53 65 6e 64 28 22 4f 6d 6e 69 44 65 |ng:.Send("OmniDe| 00004910 73 6b 20 69 73 20 6c 6f 61 64 69 6e 67 2e 22 29 |sk is loading.")| 00004920 0d 13 7e 58 20 20 20 20 20 20 20 20 20 20 20 20 |..~X | 00004930 20 20 20 f2 53 65 6e 64 28 22 54 68 65 20 75 74 | .Send("The ut| 00004940 69 6c 69 74 69 65 73 20 6b 6e 6f 77 6e 20 74 6f |ilities known to| 00004950 20 4f 6d 6e 69 44 65 73 6b 20 61 72 65 20 73 68 | OmniDesk are sh| 00004960 6f 77 6e 20 69 6e 20 74 68 65 20 6c 6f 77 65 73 |own in the lowes| 00004970 74 20 62 6f 78 2e 22 29 0d 13 88 14 20 20 c9 20 |t box.").... . | 00004980 50 72 65 66 73 3a c8 8e 20 b9 20 ca 0d 13 92 50 |Prefs:.. . ....P| 00004990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c9 | .| 000049a0 20 49 63 6f 6e 3d 2d 31 3a f2 53 65 6e 64 28 22 | Icon=-1:.Send("| 000049b0 54 68 69 73 20 69 73 20 74 68 65 20 4f 6d 6e 69 |This is the Omni| 000049c0 44 65 73 6b 20 43 6f 6e 66 69 67 75 72 61 74 69 |Desk Configurati| 000049d0 6f 6e 20 77 69 6e 64 6f 77 2e 22 29 0d 13 9c cb |on window.")....| 000049e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000049f0 20 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e | .Sen| 00004a00 64 28 22 55 73 65 20 69 74 20 74 6f 20 73 65 74 |d("Use it to set| 00004a10 20 75 70 20 74 68 65 20 61 63 74 69 6f 6e 20 6f | up the action o| 00004a20 66 20 74 68 65 20 6d 6f 75 73 65 20 62 75 74 74 |f the mouse butt| 00004a30 6f 6e 73 20 61 6e 64 20 64 72 61 67 20 6f 70 65 |ons and drag ope| 00004a40 72 61 74 69 6f 6e 73 20 6f 6e 20 74 68 65 20 69 |rations on the i| 00004a50 63 6f 6e 2d 62 61 72 20 69 63 6f 6e 2c 20 77 68 |con-bar icon, wh| 00004a60 69 63 68 20 75 74 69 6c 69 74 69 65 73 20 74 6f |ich utilities to| 00004a70 20 6c 6f 61 64 20 70 65 72 6d 61 6e 65 6e 74 6c | load permanentl| 00004a80 79 2c 20 61 6e 64 20 74 68 65 20 63 61 72 65 74 |y, and the caret| 00004a90 20 62 6c 69 6e 6b 69 6e 67 20 73 74 61 74 69 73 | blinking statis| 00004aa0 74 69 63 73 2e 22 29 0d 13 a6 85 20 20 20 20 20 |tics.").... | 00004ab0 20 20 20 20 20 20 20 20 20 20 c9 20 28 49 63 6f | . (Ico| 00004ac0 6e 3e 3d 30 29 20 80 20 28 49 63 6f 6e 3c 3d 37 |n>=0) . (Icon<=7| 00004ad0 29 3a f2 53 65 6e 64 28 22 54 68 69 73 20 61 72 |):.Send("This ar| 00004ae0 65 61 20 6c 65 74 73 20 79 6f 75 20 73 65 74 20 |ea lets you set | 00004af0 75 70 20 77 68 65 74 68 65 72 2c 20 61 6e 64 20 |up whether, and | 00004b00 68 6f 77 20 66 61 73 74 2c 20 74 68 65 20 74 65 |how fast, the te| 00004b10 78 74 20 69 6e 73 65 72 74 69 6f 6e 20 63 61 72 |xt insertion car| 00004b20 65 74 20 62 6c 69 6e 6b 73 2e 22 29 0d 13 b0 6f |et blinks.")...o| 00004b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c9 | .| 00004b40 20 49 63 6f 6e 3d 38 3a f2 53 65 6e 64 28 22 45 | Icon=8:.Send("E| 00004b50 6e 74 65 72 20 68 65 72 65 20 74 68 65 20 6c 65 |nter here the le| 00004b60 6e 67 74 68 20 6f 66 20 74 69 6d 65 20 74 68 65 |ngth of time the| 00004b70 20 63 61 72 65 74 20 62 6c 69 6e 6b 73 20 6f 6e | caret blinks on| 00004b80 20 28 69 6e 20 74 65 6e 74 68 73 20 6f 66 20 61 | (in tenths of a| 00004b90 20 73 65 63 6f 6e 64 29 2e 22 29 0d 13 ba 70 20 | second).")...p | 00004ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c9 20 | . | 00004bb0 49 63 6f 6e 3d 39 3a f2 53 65 6e 64 28 22 45 6e |Icon=9:.Send("En| 00004bc0 74 65 72 20 68 65 72 65 20 74 68 65 20 6c 65 6e |ter here the len| 00004bd0 67 74 68 20 6f 66 20 74 69 6d 65 20 74 68 65 20 |gth of time the | 00004be0 63 61 72 65 74 20 62 6c 69 6e 6b 73 20 6f 66 66 |caret blinks off| 00004bf0 20 28 69 6e 20 74 65 6e 74 68 73 20 6f 66 20 61 | (in tenths of a| 00004c00 20 73 65 63 6f 6e 64 29 2e 22 29 0d 13 c4 67 20 | second).")...g | 00004c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 c9 20 | . | 00004c20 49 63 6f 6e 3d 31 30 3a f2 53 65 6e 64 28 22 43 |Icon=10:.Send("C| 00004c30 6c 69 63 6b 20 68 65 72 65 20 74 6f 20 69 6d 70 |lick here to imp| 00004c40 6c 65 6d 65 6e 74 20 61 6e 79 20 63 68 61 6e 67 |lement any chang| 00004c50 65 73 20 79 6f 75 20 68 61 76 65 20 6d 61 64 65 |es you have made| 00004c60 20 69 6e 20 74 68 69 73 20 77 69 6e 64 6f 77 2e | in this window.| 00004c70 22 29 0d 13 ce 7c 20 20 20 20 20 20 20 20 20 20 |")...| | 00004c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004c90 20 20 f2 53 65 6e 64 28 22 43 6c 69 63 6b 69 6e | .Send("Clickin| 00004ca0 67 20 77 69 74 68 20 53 45 4c 45 43 54 20 77 69 |g with SELECT wi| 00004cb0 6c 6c 20 63 6c 6f 73 65 20 74 68 65 20 77 69 6e |ll close the win| 00004cc0 64 6f 77 3b 20 63 6c 69 63 6b 69 6e 67 20 77 69 |dow; clicking wi| 00004cd0 74 68 20 41 44 4a 55 53 54 20 77 69 6c 6c 20 6b |th ADJUST will k| 00004ce0 65 65 70 20 69 74 20 6f 70 65 6e 2e 22 29 0d 13 |eep it open.")..| 00004cf0 d8 98 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.. | 00004d00 20 c9 20 49 63 6f 6e 3d 31 31 3a f2 53 65 6e 64 | . Icon=11:.Send| 00004d10 28 22 43 6c 69 63 6b 20 68 65 72 65 20 74 6f 20 |("Click here to | 00004d20 69 6d 70 6c 65 6d 65 6e 74 20 61 6e 79 20 63 68 |implement any ch| 00004d30 61 6e 67 65 73 20 79 6f 75 20 68 61 76 65 20 6d |anges you have m| 00004d40 61 64 65 20 69 6e 20 74 68 69 73 20 77 69 6e 64 |ade in this wind| 00004d50 6f 77 20 61 6e 64 20 73 61 76 65 20 74 68 65 6d |ow and save them| 00004d60 20 66 6f 72 20 74 68 65 20 6e 65 78 74 20 74 69 | for the next ti| 00004d70 6d 65 20 79 6f 75 20 75 73 65 20 4f 6d 6e 69 44 |me you use OmniD| 00004d80 65 73 6b 2e 22 29 0d 13 e2 7c 20 20 20 20 20 20 |esk.")...| | 00004d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004da0 20 20 20 20 20 20 f2 53 65 6e 64 28 22 43 6c 69 | .Send("Cli| 00004db0 63 6b 69 6e 67 20 77 69 74 68 20 53 45 4c 45 43 |cking with SELEC| 00004dc0 54 20 77 69 6c 6c 20 63 6c 6f 73 65 20 74 68 65 |T will close the| 00004dd0 20 77 69 6e 64 6f 77 3b 20 63 6c 69 63 6b 69 6e | window; clickin| 00004de0 67 20 77 69 74 68 20 41 44 4a 55 53 54 20 77 69 |g with ADJUST wi| 00004df0 6c 6c 20 6b 65 65 70 20 69 74 20 6f 70 65 6e 2e |ll keep it open.| 00004e00 22 29 0d 13 ec c5 20 20 20 20 20 20 20 20 20 20 |").... | 00004e10 20 20 20 20 20 c9 20 28 49 63 6f 6e 3d 31 32 29 | . (Icon=12)| 00004e20 20 84 20 28 49 63 6f 6e 3d 31 33 29 3a f2 53 65 | . (Icon=13):.Se| 00004e30 6e 64 28 22 54 68 69 73 20 61 72 65 61 20 6c 65 |nd("This area le| 00004e40 74 73 20 79 6f 75 20 64 65 63 69 64 65 20 77 68 |ts you decide wh| 00004e50 69 63 68 20 75 74 69 6c 69 74 69 65 73 20 61 72 |ich utilities ar| 00004e60 65 20 70 65 72 6d 61 6e 65 6e 74 6c 79 20 6c 6f |e permanently lo| 00004e70 61 64 65 64 20 61 6e 64 20 77 68 69 63 68 20 61 |aded and which a| 00004e80 72 65 20 61 63 74 69 76 61 74 65 64 20 77 68 65 |re activated whe| 00004e90 6e 20 79 6f 75 20 63 6c 69 63 6b 20 6f 6e 2c 20 |n you click on, | 00004ea0 6f 72 20 64 72 61 67 20 61 20 66 69 6c 65 20 74 |or drag a file t| 00004eb0 6f 2c 20 74 68 65 20 69 63 6f 6e 2d 62 61 72 20 |o, the icon-bar | 00004ec0 69 63 6f 6e 2e 22 29 0d 13 f6 78 20 20 20 20 20 |icon.")...x | 00004ed0 20 20 20 20 20 20 20 20 20 20 c9 20 49 63 6f 6e | . Icon| 00004ee0 3d 31 36 3a f2 53 65 6e 64 28 22 54 68 65 73 65 |=16:.Send("These| 00004ef0 20 63 6f 6c 75 6d 6e 73 20 6c 65 74 20 79 6f 75 | columns let you| 00004f00 20 73 65 74 20 74 68 65 20 61 63 74 69 6f 6e 20 | set the action | 00004f10 6f 66 20 63 6c 69 63 6b 73 20 6f 6e 2c 20 6f 72 |of clicks on, or| 00004f20 20 64 72 61 67 73 20 74 6f 2c 20 74 68 65 20 69 | drags to, the i| 00004f30 63 6f 6e 2d 62 61 72 20 69 63 6f 6e 2e 22 29 0d |con-bar icon.").| 00004f40 14 00 a6 20 20 20 20 20 20 20 20 20 20 20 20 20 |... | 00004f50 20 20 c9 20 28 49 63 6f 6e 3d 32 31 29 20 84 20 | . (Icon=21) . | 00004f60 28 49 63 6f 6e 3d 32 36 29 20 84 20 28 49 63 6f |(Icon=26) . (Ico| 00004f70 6e 3d 33 31 29 3a f2 53 65 6e 64 28 22 54 68 69 |n=31):.Send("Thi| 00004f80 73 20 75 74 69 6c 69 74 79 20 69 73 20 70 72 6f |s utility is pro| 00004f90 76 69 64 65 64 20 62 79 20 4f 6d 6e 69 44 65 73 |vided by OmniDes| 00004fa0 6b 20 69 74 73 65 6c 66 2c 20 73 6f 20 74 68 65 |k itself, so the| 00004fb0 20 73 77 69 74 63 68 20 69 73 20 61 6c 77 61 79 | switch is alway| 00004fc0 73 20 73 65 6c 65 63 74 65 64 3a 20 79 6f 75 20 |s selected: you | 00004fd0 63 61 6e 6e 6f 74 20 74 75 72 6e 20 69 74 20 6f |cannot turn it o| 00004fe0 66 66 2e 22 29 0d 14 0a 9f 20 20 20 20 20 20 20 |ff.").... | 00004ff0 20 20 20 20 20 20 20 20 c9 20 28 49 63 6f 6e 3d | . (Icon=| 00005000 31 34 29 20 84 20 28 49 63 6f 6e 3d 31 35 29 20 |14) . (Icon=15) | 00005010 84 20 28 49 63 6f 6e 3d 32 30 29 20 84 20 28 28 |. (Icon=20) . ((| 00005020 49 63 6f 6e 3e 3d 32 31 29 20 80 20 28 28 28 49 |Icon>=21) . (((I| 00005030 63 6f 6e 2d 32 31 29 20 83 20 35 29 3c 32 29 29 |con-21) . 5)<2))| 00005040 3a f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 69 6e |:.Send("Click in| 00005050 20 74 68 69 73 20 63 6f 6c 75 6d 6e 20 74 6f 20 | this column to | 00005060 74 6f 67 67 6c 65 20 74 68 65 20 4c 6f 61 64 20 |toggle the Load | 00005070 73 77 69 74 63 68 20 6f 6e 20 61 6e 64 20 6f 66 |switch on and of| 00005080 66 2e 22 29 0d 14 14 5f 20 20 20 20 20 20 20 20 |f.")..._ | 00005090 20 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e | .Sen| 000050a0 64 28 22 49 66 20 74 68 65 20 73 77 69 74 63 68 |d("If the switch| 000050b0 20 69 73 20 6f 6e 2c 20 74 68 65 20 75 74 69 6c | is on, the util| 000050c0 69 74 79 20 77 69 6c 6c 20 62 65 20 70 65 72 6d |ity will be perm| 000050d0 61 6e 65 6e 74 6c 79 20 72 65 73 69 64 65 6e 74 |anently resident| 000050e0 2e 22 29 0d 14 1e 63 20 20 20 20 20 20 20 20 20 |.")...c | 000050f0 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e 64 | .Send| 00005100 28 22 49 66 20 74 68 65 20 73 77 69 74 63 68 20 |("If the switch | 00005110 69 73 20 6f 66 66 2c 20 74 68 65 20 75 74 69 6c |is off, the util| 00005120 69 74 79 20 77 69 6c 6c 20 6f 6e 6c 79 20 62 65 |ity will only be| 00005130 20 6c 6f 61 64 65 64 20 77 68 65 6e 20 6e 65 65 | loaded when nee| 00005140 64 65 64 2e 22 29 0d 14 28 b7 20 20 20 20 20 20 |ded.")..(. | 00005150 20 20 20 20 20 20 20 20 20 c9 20 28 49 63 6f 6e | . (Icon| 00005160 3d 31 37 29 20 84 20 28 28 49 63 6f 6e 3e 3d 32 |=17) . ((Icon>=2| 00005170 31 29 20 80 20 28 28 28 49 63 6f 6e 2d 32 31 29 |1) . (((Icon-21)| 00005180 20 83 20 35 29 3d 32 29 29 3a f2 53 65 6e 64 28 | . 5)=2)):.Send(| 00005190 22 43 6c 69 63 6b 20 69 6e 20 74 68 69 73 20 63 |"Click in this c| 000051a0 6f 6c 75 6d 6e 20 74 6f 20 63 68 6f 6f 73 65 20 |olumn to choose | 000051b0 77 68 69 63 68 20 75 74 69 6c 69 74 79 20 77 69 |which utility wi| 000051c0 6c 6c 20 62 65 20 61 63 74 69 76 61 74 65 64 20 |ll be activated | 000051d0 77 68 65 6e 20 79 6f 75 20 63 6c 69 63 6b 20 53 |when you click S| 000051e0 45 4c 45 43 54 20 6f 6e 20 74 68 65 20 69 63 6f |ELECT on the ico| 000051f0 6e 2d 62 61 72 20 69 63 6f 6e 2e 22 29 0d 14 32 |n-bar icon.")..2| 00005200 85 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 00005210 20 20 20 20 20 f2 53 65 6e 64 28 22 59 6f 75 20 | .Send("You | 00005220 63 61 6e 20 63 6c 69 63 6b 20 41 44 4a 55 53 54 |can click ADJUST| 00005230 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 | on the current | 00005240 6f 70 74 69 6f 6e 20 74 6f 20 74 75 72 6e 20 69 |option to turn i| 00005250 74 20 6f 66 66 2c 20 61 73 73 69 67 6e 69 6e 67 |t off, assigning| 00005260 20 6e 6f 20 65 66 66 65 63 74 20 74 6f 20 74 68 | no effect to th| 00005270 65 20 69 63 6f 6e 2d 62 61 72 20 69 63 6f 6e 2e |e icon-bar icon.| 00005280 22 29 0d 14 3c b6 20 20 20 20 20 20 20 20 20 20 |")..<. | 00005290 20 20 20 20 20 c9 20 28 49 63 6f 6e 3d 31 38 29 | . (Icon=18)| 000052a0 20 84 20 28 28 49 63 6f 6e 3e 3d 32 31 29 20 80 | . ((Icon>=21) .| 000052b0 20 28 28 28 49 63 6f 6e 2d 32 31 29 20 83 20 35 | (((Icon-21) . 5| 000052c0 29 3d 33 29 29 3a f2 53 65 6e 64 28 22 43 6c 69 |)=3)):.Send("Cli| 000052d0 63 6b 20 69 6e 20 74 68 69 73 20 63 6f 6c 75 6d |ck in this colum| 000052e0 6e 20 74 6f 20 63 68 6f 6f 73 65 20 77 68 69 63 |n to choose whic| 000052f0 68 20 75 74 69 6c 69 74 79 20 77 69 6c 6c 20 62 |h utility will b| 00005300 65 20 61 63 74 69 76 61 74 65 64 20 77 68 65 6e |e activated when| 00005310 20 79 6f 75 20 64 72 61 67 20 61 20 66 69 6c 65 | you drag a file| 00005320 20 74 6f 20 74 68 65 20 69 63 6f 6e 2d 62 61 72 | to the icon-bar| 00005330 20 69 63 6f 6e 2e 22 29 0d 14 46 65 20 20 20 20 | icon.")..Fe | 00005340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005350 f2 53 65 6e 64 28 22 59 6f 75 20 63 61 6e 20 6f |.Send("You can o| 00005360 6e 6c 79 20 63 68 6f 6f 73 65 20 61 20 75 74 69 |nly choose a uti| 00005370 6c 69 74 79 20 77 68 69 63 68 20 77 69 6c 6c 20 |lity which will | 00005380 61 63 63 65 70 74 20 66 69 6c 65 73 20 64 72 61 |accept files dra| 00005390 67 67 65 64 20 74 6f 20 69 74 2e 22 29 0d 14 50 |gged to it.")..P| 000053a0 b7 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |. | 000053b0 c9 20 28 49 63 6f 6e 3d 31 39 29 20 84 20 28 28 |. (Icon=19) . ((| 000053c0 49 63 6f 6e 3e 3d 32 31 29 20 80 20 28 28 28 49 |Icon>=21) . (((I| 000053d0 63 6f 6e 2d 32 31 29 20 83 20 35 29 3d 34 29 29 |con-21) . 5)=4))| 000053e0 3a f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 69 6e |:.Send("Click in| 000053f0 20 74 68 69 73 20 63 6f 6c 75 6d 6e 20 74 6f 20 | this column to | 00005400 63 68 6f 6f 73 65 20 77 68 69 63 68 20 75 74 69 |choose which uti| 00005410 6c 69 74 79 20 77 69 6c 6c 20 62 65 20 61 63 74 |lity will be act| 00005420 69 76 61 74 65 64 20 77 68 65 6e 20 79 6f 75 20 |ivated when you | 00005430 63 6c 69 63 6b 20 41 44 4a 55 53 54 20 6f 6e 20 |click ADJUST on | 00005440 74 68 65 20 69 63 6f 6e 2d 62 61 72 20 69 63 6f |the icon-bar ico| 00005450 6e 2e 22 29 0d 14 5a 85 20 20 20 20 20 20 20 20 |n.")..Z. | 00005460 20 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e | .Sen| 00005470 64 28 22 59 6f 75 20 63 61 6e 20 63 6c 69 63 6b |d("You can click| 00005480 20 41 44 4a 55 53 54 20 6f 6e 20 74 68 65 20 63 | ADJUST on the c| 00005490 75 72 72 65 6e 74 20 6f 70 74 69 6f 6e 20 74 6f |urrent option to| 000054a0 20 74 75 72 6e 20 69 74 20 6f 66 66 2c 20 61 73 | turn it off, as| 000054b0 73 69 67 6e 69 6e 67 20 6e 6f 20 65 66 66 65 63 |signing no effec| 000054c0 74 20 74 6f 20 74 68 65 20 69 63 6f 6e 2d 62 61 |t to the icon-ba| 000054d0 72 20 69 63 6f 6e 2e 22 29 0d 14 64 12 20 20 20 |r icon.")..d. | 000054e0 20 20 20 20 20 20 20 20 20 20 cb 0d 14 6e 05 7f | ...n..| 000054f0 0d 14 78 13 20 20 e7 20 77 69 6d 70 3e 3d 32 31 |..x. . wimp>=21| 00005500 37 20 8c 0d 14 82 31 20 20 20 20 4d 65 6e 75 48 |7 ....1 MenuH| 00005510 65 6c 70 21 30 3d 2d 31 3a 4d 65 6e 75 48 65 6c |elp!0=-1:MenuHel| 00005520 70 21 34 3d 2d 31 3a 4d 65 6e 75 48 65 6c 70 21 |p!4=-1:MenuHelp!| 00005530 38 3d 2d 31 0d 14 8c 3b 20 20 20 20 c8 99 20 22 |8=-1...; .. "| 00005540 57 69 6d 70 5f 47 65 74 4d 65 6e 75 53 74 61 74 |Wimp_GetMenuStat| 00005550 65 22 2c 31 2c 4d 65 6e 75 48 65 6c 70 2c 42 6c |e",1,MenuHelp,Bl| 00005560 6f 63 6b 21 33 32 2c 42 6c 6f 63 6b 21 33 36 0d |ock!32,Block!36.| 00005570 14 96 0f 20 20 20 20 c8 8e 20 4d 25 20 ca 0d 14 |... .. M% ...| 00005580 a0 13 20 20 20 20 20 20 c9 20 49 42 4d 65 6e 75 |.. . IBMenu| 00005590 3a 0d 14 aa 1d 20 20 20 20 20 20 20 20 e7 20 4d |:.... . M| 000055a0 65 6e 75 48 65 6c 70 21 34 3d 2d 31 20 8c 0d 14 |enuHelp!4=-1 ...| 000055b0 b4 1d 20 20 20 20 20 20 20 20 20 20 c8 8e 20 4d |.. .. M| 000055c0 65 6e 75 48 65 6c 70 21 30 20 ca 0d 14 be 56 20 |enuHelp!0 ....V | 000055d0 20 20 20 20 20 20 20 20 20 20 20 c9 20 30 3a f2 | . 0:.| 000055e0 53 65 6e 64 28 22 4d 6f 76 65 20 74 68 65 20 70 |Send("Move the p| 000055f0 6f 69 6e 74 65 72 20 72 69 67 68 74 20 74 6f 20 |ointer right to | 00005600 73 65 65 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 |see information | 00005610 61 62 6f 75 74 20 4f 6d 6e 69 44 65 73 6b 2e 22 |about OmniDesk."| 00005620 29 0d 14 c8 52 20 20 20 20 20 20 20 20 20 20 20 |)...R | 00005630 20 c9 20 31 3a f2 53 65 6e 64 28 22 4d 6f 76 65 | . 1:.Send("Move| 00005640 20 74 68 65 20 70 6f 69 6e 74 65 72 20 72 69 67 | the pointer rig| 00005650 68 74 20 74 6f 20 63 68 6f 6f 73 65 20 61 6e 20 |ht to choose an | 00005660 4f 6d 6e 69 44 65 73 6b 20 75 74 69 6c 69 74 79 |OmniDesk utility| 00005670 2e 22 29 0d 14 d2 4d 20 20 20 20 20 20 20 20 20 |.")...M | 00005680 20 20 20 c9 20 32 3a f2 53 65 6e 64 28 22 43 6c | . 2:.Send("Cl| 00005690 69 63 6b 20 53 45 4c 45 43 54 20 74 6f 20 65 64 |ick SELECT to ed| 000056a0 69 74 20 74 68 65 20 4f 6d 6e 69 44 65 73 6b 20 |it the OmniDesk | 000056b0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22 29 |configuration.")| 000056c0 0d 14 dc 3b 20 20 20 20 20 20 20 20 20 20 20 20 |...; | 000056d0 c9 20 33 3a f2 53 65 6e 64 28 22 43 6c 69 63 6b |. 3:.Send("Click| 000056e0 20 53 45 4c 45 43 54 20 74 6f 20 71 75 69 74 20 | SELECT to quit | 000056f0 4f 6d 6e 69 44 65 73 6b 2e 22 29 0d 14 e6 3a 20 |OmniDesk.")...: | 00005700 20 20 20 20 20 20 20 20 20 20 20 7f 20 f2 53 65 | . .Se| 00005710 6e 64 28 22 54 68 69 73 20 69 73 20 74 68 65 20 |nd("This is the | 00005720 4f 6d 6e 69 44 65 73 6b 20 6d 61 69 6e 20 6d 65 |OmniDesk main me| 00005730 6e 75 2e 22 29 0d 14 f0 0f 20 20 20 20 20 20 20 |nu.").... | 00005740 20 20 20 cb 0d 14 fa 0d 20 20 20 20 20 20 20 20 | ..... | 00005750 cc 0d 15 04 1e 20 20 20 20 20 20 20 20 20 20 f4 |..... .| 00005760 20 55 74 69 6c 69 74 69 65 73 20 6d 65 6e 75 0d | Utilities menu.| 00005770 15 0e 1d 20 20 20 20 20 20 20 20 20 20 c8 8e 20 |... .. | 00005780 4d 65 6e 75 48 65 6c 70 21 34 20 ca 0d 15 18 3e |MenuHelp!4 ....>| 00005790 20 20 20 20 20 20 20 20 20 20 20 20 c9 20 30 3a | . 0:| 000057a0 f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 53 45 4c |.Send("Click SEL| 000057b0 45 43 54 20 74 6f 20 6c 6f 63 61 74 65 20 74 68 |ECT to locate th| 000057c0 65 20 63 61 72 65 74 2e 22 29 0d 15 22 40 20 20 |e caret.").."@ | 000057d0 20 20 20 20 20 20 20 20 20 20 c9 20 31 3a f2 53 | . 1:.S| 000057e0 65 6e 64 28 22 43 6c 69 63 6b 20 53 45 4c 45 43 |end("Click SELEC| 000057f0 54 20 74 6f 20 74 75 72 6e 20 74 68 65 20 63 61 |T to turn the ca| 00005800 72 65 74 20 6f 66 66 2e 22 29 0d 15 2c 75 20 20 |ret off.")..,u | 00005810 20 20 20 20 20 20 20 20 20 20 c9 20 32 3a f2 53 | . 2:.S| 00005820 65 6e 64 28 22 43 6c 69 63 6b 20 53 45 4c 45 43 |end("Click SELEC| 00005830 54 20 74 6f 20 6f 70 65 6e 20 61 20 77 69 6e 64 |T to open a wind| 00005840 6f 77 20 69 6e 74 6f 20 77 68 69 63 68 20 79 6f |ow into which yo| 00005850 75 20 63 61 6e 20 64 72 61 67 20 61 20 73 70 72 |u can drag a spr| 00005860 69 74 65 20 74 6f 20 76 69 65 77 20 69 74 20 6f |ite to view it o| 00005870 6e 20 74 68 65 20 73 63 72 65 65 6e 2e 22 29 0d |n the screen.").| 00005880 15 36 11 20 20 20 20 20 20 20 20 20 20 20 20 7f |.6. .| 00005890 0d 15 40 33 20 20 20 20 20 20 20 20 20 20 20 20 |..@3 | 000058a0 20 20 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 | U%=SlotEnd+(18| 000058b0 38 2a 28 28 4d 65 6e 75 48 65 6c 70 21 34 29 2d |8*((MenuHelp!4)-| 000058c0 33 29 29 0d 15 4a 34 20 20 20 20 20 20 20 20 20 |3))..J4 | 000058d0 20 20 20 20 20 f2 53 65 6e 64 28 22 43 6c 69 63 | .Send("Clic| 000058e0 6b 20 53 45 4c 45 43 54 20 74 6f 20 22 2b 24 28 |k SELECT to "+$(| 000058f0 55 25 2b 33 35 29 29 0d 15 54 0f 20 20 20 20 20 |U%+35))..T. | 00005900 20 20 20 20 20 cb 0d 15 5e 0d 20 20 20 20 20 20 | ...^. | 00005910 20 20 cd 0d 15 68 09 20 20 20 20 cb 0d 15 72 07 | ...h. ...r.| 00005920 20 20 cd 0d 15 7c 05 cb 0d 15 86 07 20 20 3a 0d | ...|...... :.| 00005930 15 90 0f 3f 48 65 6c 70 49 6e 66 6f 3d 30 0d 15 |...?HelpInfo=0..| 00005940 9a 24 42 6c 6f 63 6b 21 30 3d 28 48 65 6c 70 49 |.$Block!0=(HelpI| 00005950 6e 66 6f 2b 34 2d 42 6c 6f 63 6b 29 20 80 20 ac |nfo+4-Block) . .| 00005960 20 33 0d 15 a4 2a c8 99 20 22 57 69 6d 70 5f 53 | 3...*.. "Wimp_S| 00005970 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 42 |endMessage",17,B| 00005980 6c 6f 63 6b 2c 42 6c 6f 63 6b 21 34 0d 15 ae 05 |lock,Block!4....| 00005990 e1 0d 15 b8 05 3a 0d 15 c2 12 dd 20 f2 53 65 6e |.....:..... .Sen| 000059a0 64 28 54 65 78 74 24 29 0d 15 cc 18 24 48 65 6c |d(Text$)....$Hel| 000059b0 70 49 6e 66 6f 3d 54 65 78 74 24 2b 22 7c 4d 22 |pInfo=Text$+"|M"| 000059c0 0d 15 d6 18 48 65 6c 70 49 6e 66 6f 2b 3d a9 28 |....HelpInfo+=.(| 000059d0 54 65 78 74 24 29 2b 32 0d 15 e0 05 e1 0d 15 ea |Text$)+2........| 000059e0 05 3a 0d 15 f4 11 dd 20 f2 4d 6f 64 65 43 68 61 |.:..... .ModeCha| 000059f0 6e 67 65 0d 15 fe 17 49 6e 66 6f 53 70 72 69 74 |nge....InfoSprit| 00005a00 65 24 3d 22 53 69 6e 66 6f 22 0d 16 08 4b e7 20 |e$="Sinfo"...K. | 00005a10 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 46 |.ModeInfo("YEigF| 00005a20 61 63 74 6f 72 22 2c 2d 31 29 3c 3d 31 20 8c 20 |actor",-1)<=1 . | 00005a30 49 6e 66 6f 53 70 72 69 74 65 24 2b 3d 22 32 32 |InfoSprite$+="22| 00005a40 22 20 8b 20 49 6e 66 6f 53 70 72 69 74 65 24 2b |" . InfoSprite$+| 00005a50 3d 22 32 34 22 0d 16 12 46 e7 20 a4 4d 6f 64 65 |="24"...F. .Mode| 00005a60 49 6e 66 6f 28 22 4e 43 6f 6c 22 2c 2d 31 29 3c |Info("NCol",-1)<| 00005a70 3d 31 35 20 8c 20 49 6e 66 6f 53 70 72 69 74 65 |=15 . InfoSprite| 00005a80 24 2b 3d 22 31 36 22 20 8b 20 49 6e 66 6f 53 70 |$+="16" . InfoSp| 00005a90 72 69 74 65 24 2b 3d 22 36 34 22 0d 16 1c 4b 49 |rite$+="64"...KI| 00005aa0 6e 66 6f 53 70 72 69 74 65 24 2b 3d 22 3b 5a 34 |nfoSprite$+=";Z4| 00005ab0 22 3a 42 6c 6f 63 6b 21 30 3d 49 6e 66 6f 3a 42 |":Block!0=Info:B| 00005ac0 6c 6f 63 6b 21 34 3d 30 3a c8 99 20 22 57 69 6d |lock!4=0:.. "Wim| 00005ad0 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_GetIconState",| 00005ae0 2c 42 6c 6f 63 6b 0d 16 26 30 24 28 42 6c 6f 63 |,Block..&0$(Bloc| 00005af0 6b 21 33 32 29 3d 49 6e 66 6f 53 70 72 69 74 65 |k!32)=InfoSprite| 00005b00 24 3a 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 |$:Block!8=0:Bloc| 00005b10 6b 21 31 32 3d 30 0d 16 30 21 c8 99 20 22 57 69 |k!12=0..0!.. "Wi| 00005b20 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_SetIconState"| 00005b30 2c 2c 42 6c 6f 63 6b 0d 16 3a 3b 42 6c 6f 63 6b |,,Block..:;Block| 00005b40 21 30 3d 4c 6f 61 64 69 6e 67 3a 42 6c 6f 63 6b |!0=Loading:Block| 00005b50 21 34 3d 32 3a c8 99 20 22 57 69 6d 70 5f 47 65 |!4=2:.. "Wimp_Ge| 00005b60 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f |tIconState",,Blo| 00005b70 63 6b 0d 16 44 30 24 28 42 6c 6f 63 6b 21 33 32 |ck..D0$(Block!32| 00005b80 29 3d 49 6e 66 6f 53 70 72 69 74 65 24 3a 42 6c |)=InfoSprite$:Bl| 00005b90 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b 21 31 32 |ock!8=0:Block!12| 00005ba0 3d 30 0d 16 4e 21 c8 99 20 22 57 69 6d 70 5f 53 |=0..N!.. "Wimp_S| 00005bb0 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c |etIconState",,Bl| 00005bc0 6f 63 6b 0d 16 58 12 44 6f 4d 6f 64 65 43 68 61 |ock..X.DoModeCha| 00005bd0 6e 67 65 3d b9 0d 16 62 3f e7 20 ac 20 53 74 61 |nge=...b?. . Sta| 00005be0 72 74 69 6e 67 55 70 20 8c 20 f2 55 70 64 61 74 |rtingUp . .Updat| 00005bf0 65 49 63 6f 6e 46 6f 72 4d 6f 64 65 28 22 21 4f |eIconForMode("!O| 00005c00 6d 6e 69 44 65 73 6b 22 2c 2d 32 2c 49 63 6f 6e |mniDesk",-2,Icon| 00005c10 42 61 72 29 0d 16 6c 05 e1 0d 16 76 05 3a 0d 16 |Bar)..l....v.:..| 00005c20 80 17 dd 20 f2 53 74 6f 72 65 55 74 69 6c 44 65 |... .StoreUtilDe| 00005c30 74 61 69 6c 73 0d 16 8a 1c e7 20 ac 20 a4 55 70 |tails..... . .Up| 00005c40 64 61 74 65 55 74 69 6c 44 65 74 61 69 6c 73 20 |dateUtilDetails | 00005c50 8c 0d 16 94 b9 20 20 e7 20 a4 41 6c 6c 6f 63 61 |..... . .Alloca| 00005c60 74 65 4d 65 6d 6f 72 79 28 31 38 38 2b 41 70 70 |teMemory(188+App| 00005c70 53 69 7a 65 29 3d 30 20 8c 20 53 74 61 72 74 69 |Size)=0 . Starti| 00005c80 6e 67 55 70 3d a3 3a f2 49 6e 73 74 61 6c 6c 49 |ngUp=.:.InstallI| 00005c90 42 49 63 6f 6e 3a f2 42 75 69 6c 64 55 74 69 6c |BIcon:.BuildUtil| 00005ca0 69 74 69 65 73 4d 65 6e 75 3a 85 20 39 39 39 39 |itiesMenu:. 9999| 00005cb0 2c 22 4f 75 74 20 6f 66 20 6d 65 6d 6f 72 79 3a |,"Out of memory:| 00005cc0 20 75 6e 61 62 6c 65 20 74 6f 20 73 74 6f 72 65 | unable to store| 00005cd0 20 64 65 74 61 69 6c 73 20 6f 66 20 61 6e 79 20 | details of any | 00005ce0 6d 6f 72 65 20 75 74 69 6c 69 74 69 65 73 2e 20 |more utilities. | 00005cf0 4e 6f 20 6d 6f 72 65 20 77 69 6c 6c 20 62 65 20 |No more will be | 00005d00 72 65 63 6f 72 64 65 64 2e 22 0d 16 9e 25 20 20 |recorded."...% | 00005d10 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 38 2a |U%=SlotEnd+(188*| 00005d20 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 29 0d |UtilitiesKnown).| 00005d30 16 a8 2a 20 20 55 25 21 30 3d 42 6c 6f 63 6b 21 |..* U%!0=Block!| 00005d40 32 30 3a 20 20 20 20 20 20 20 20 20 f4 20 54 61 |20: . Ta| 00005d50 73 6b 20 68 61 6e 64 6c 65 0d 16 b2 28 20 20 24 |sk handle...( $| 00005d60 28 55 25 2b 34 29 3d 24 28 42 6c 6f 63 6b 2b 32 |(U%+4)=$(Block+2| 00005d70 34 29 3a 20 20 20 f4 20 54 61 73 6b 20 6e 61 6d |4): . Task nam| 00005d80 65 0d 16 bc 32 20 20 24 28 55 25 2b 32 34 29 3d |e...2 $(U%+24)=| 00005d90 24 28 42 6c 6f 63 6b 2b 34 34 29 3a 20 20 f4 20 |$(Block+44): . | 00005da0 4c 65 61 66 6e 61 6d 65 20 6f 66 20 75 74 69 6c |Leafname of util| 00005db0 69 74 79 0d 16 c6 32 20 20 24 28 55 25 2b 33 35 |ity...2 $(U%+35| 00005dc0 29 3d 24 28 42 6c 6f 63 6b 2b 35 35 29 3a 20 20 |)=$(Block+55): | 00005dd0 f4 20 53 45 4c 45 43 54 20 68 65 6c 70 20 6d 65 |. SELECT help me| 00005de0 73 73 61 67 65 0d 16 d0 30 20 20 24 28 55 25 2b |ssage...0 $(U%+| 00005df0 31 31 32 29 3d 24 28 42 6c 6f 63 6b 2b 31 33 32 |112)=$(Block+132| 00005e00 29 3a f4 20 44 52 41 47 20 68 65 6c 70 20 6d 65 |):. DRAG help me| 00005e10 73 73 61 67 65 0d 16 da 17 20 20 55 74 69 6c 69 |ssage.... Utili| 00005e20 74 69 65 73 4b 6e 6f 77 6e 2b 3d 31 0d 16 e4 24 |tiesKnown+=1...$| 00005e30 20 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 4c 6f | .UpdateIcon(Lo| 00005e40 61 64 69 6e 67 2c 34 2c 24 28 55 25 2b 34 29 29 |ading,4,$(U%+4))| 00005e50 0d 16 ee 1a 20 20 f2 4f 70 65 6e 28 4c 6f 61 64 |.... .Open(Load| 00005e60 69 6e 67 2c b9 2c 32 2c 32 29 0d 16 f8 1e 20 20 |ing,.,2,2).... | 00005e70 f2 41 64 64 4c 69 6e 65 54 6f 50 72 65 66 73 28 |.AddLineToPrefs(| 00005e80 24 28 55 25 2b 34 29 29 0d 17 02 19 20 20 f2 42 |$(U%+4)).... .B| 00005e90 75 69 6c 64 55 74 69 6c 69 74 69 65 73 4d 65 6e |uildUtilitiesMen| 00005ea0 75 0d 17 0c 05 cd 0d 17 16 05 e1 0d 17 20 05 3a |u............ .:| 00005eb0 0d 17 2a 18 dd 20 a4 55 70 64 61 74 65 55 74 69 |..*.. .UpdateUti| 00005ec0 6c 44 65 74 61 69 6c 73 0d 17 34 2a f4 20 41 20 |lDetails..4*. A | 00005ed0 75 74 69 6c 69 74 79 20 69 73 20 73 74 61 72 74 |utility is start| 00005ee0 69 6e 67 20 6f 72 20 72 65 73 74 61 72 74 69 6e |ing or restartin| 00005ef0 67 2e 0d 17 3e 41 f4 20 49 66 20 77 65 20 6b 6e |g...>A. If we kn| 00005f00 6f 77 20 69 74 2c 20 74 68 65 6e 20 75 70 64 61 |ow it, then upda| 00005f10 74 65 20 69 74 73 20 74 61 73 6b 20 68 61 6e 64 |te its task hand| 00005f20 6c 65 20 61 6e 64 20 72 65 74 75 72 6e 20 54 52 |le and return TR| 00005f30 55 45 2e 0d 17 48 40 f4 20 49 66 20 77 65 20 64 |UE...H@. If we d| 00005f40 6f 6e 27 74 20 6b 6e 6f 77 20 69 74 2c 20 74 68 |on't know it, th| 00005f50 65 6e 20 72 65 74 75 72 6e 20 46 41 4c 53 45 20 |en return FALSE | 00005f60 61 6e 64 20 6c 65 74 20 74 68 65 20 63 61 6c 6c |and let the call| 00005f70 69 6e 67 0d 17 52 42 f4 20 70 72 6f 63 65 64 75 |ing..RB. procedu| 00005f80 72 65 20 69 6e 73 74 61 6c 6c 20 69 74 20 69 6e |re install it in| 00005f90 20 74 68 65 20 50 72 65 66 73 20 77 69 6e 64 6f | the Prefs windo| 00005fa0 77 20 61 6e 64 20 55 74 69 6c 69 74 69 65 73 20 |w and Utilities | 00005fb0 6d 65 6e 75 2e 0d 17 5c 1b e7 20 55 74 69 6c 69 |menu...\.. Utili| 00005fc0 74 69 65 73 4b 6e 6f 77 6e 3d 30 20 8c 20 3d a3 |tiesKnown=0 . =.| 00005fd0 0d 17 66 09 4e 3d 30 3a f5 0d 17 70 18 20 20 55 |..f.N=0:...p. U| 00005fe0 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 38 2a 4e |%=SlotEnd+(188*N| 00005ff0 29 0d 17 7a 0a 20 20 4e 2b 3d 31 0d 17 84 30 fd |)..z. N+=1...0.| 00006000 20 28 4e 3d 55 74 69 6c 69 74 69 65 73 4b 6e 6f | (N=UtilitiesKno| 00006010 77 6e 29 20 84 20 28 24 28 55 25 2b 34 29 3d 24 |wn) . ($(U%+4)=$| 00006020 28 42 6c 6f 63 6b 2b 32 34 29 29 0d 17 8e 2e e7 |(Block+24)).....| 00006030 20 28 24 28 55 25 2b 34 29 3d 24 28 42 6c 6f 63 | ($(U%+4)=$(Bloc| 00006040 6b 2b 32 34 29 29 20 8c 20 55 25 21 30 3d 42 6c |k+24)) . U%!0=Bl| 00006050 6f 63 6b 21 32 30 3a 3d b9 0d 17 98 06 3d a3 0d |ock!20:=.....=..| 00006060 17 a2 05 3a 0d 17 ac 16 dd 20 f2 55 74 69 6c 69 |...:..... .Utili| 00006070 74 79 51 75 69 74 74 69 6e 67 0d 17 b6 40 f4 20 |tyQuitting...@. | 00006080 4d 75 73 74 20 72 65 70 6c 61 63 65 20 74 61 73 |Must replace tas| 00006090 6b 20 68 61 6e 64 6c 65 20 77 69 74 68 20 2d 31 |k handle with -1| 000060a0 20 74 6f 20 69 6e 64 69 63 61 74 65 20 27 6e 6f | to indicate 'no| 000060b0 74 20 72 75 6e 6e 69 6e 67 27 0d 17 c0 1a e7 20 |t running'..... | 000060c0 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 3d 30 |UtilitiesKnown=0| 000060d0 20 8c 20 e1 0d 17 ca 09 4e 3d 30 3a f5 0d 17 d4 | . .....N=0:....| 000060e0 18 20 20 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 |. U%=SlotEnd+(1| 000060f0 38 38 2a 4e 29 0d 17 de 0a 20 20 4e 2b 3d 31 0d |88*N).... N+=1.| 00006100 17 e8 2a fd 20 28 4e 3d 55 74 69 6c 69 74 69 65 |..*. (N=Utilitie| 00006110 73 4b 6e 6f 77 6e 29 20 84 20 28 55 25 21 30 3d |sKnown) . (U%!0=| 00006120 42 6c 6f 63 6b 21 32 30 29 0d 17 f2 1d e7 20 55 |Block!20)..... U| 00006130 25 21 30 3d 42 6c 6f 63 6b 21 32 30 20 8c 20 55 |%!0=Block!20 . U| 00006140 25 21 30 3d 2d 31 0d 17 fc 05 e1 0d 18 06 05 3a |%!0=-1.........:| 00006150 0d 18 10 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |...O. ----------| 00006160 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006190 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 000061a0 18 1a 38 f4 20 47 65 6e 65 72 61 6c 20 6e 6f 6e |..8. General non| 000061b0 2d 73 70 65 63 69 66 69 63 20 75 73 65 66 75 6c |-specific useful| 000061c0 20 72 6f 75 74 69 6e 65 73 20 28 6d 6f 73 74 6c | routines (mostl| 000061d0 79 20 77 69 6d 70 29 0d 18 24 4f f4 20 2d 2d 2d |y wimp)..$O. ---| 000061e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006220 2d 2d 2d 2d 2d 2d 0d 18 2e 05 3a 0d 18 38 20 dd |------....:..8 .| 00006230 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 57 6e 64 | .UpdateIcon(Wnd| 00006240 77 2c 49 63 6e 2c 54 78 74 24 29 0d 18 42 3a 42 |w,Icn,Txt$)..B:B| 00006250 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 |lock!0=Wndw:Bloc| 00006260 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 |k!4=Icn:.. "Wimp| 00006270 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 00006280 42 6c 6f 63 6b 0d 18 4c 1c e7 20 a9 28 54 78 74 |Block..L.. .(Txt| 00006290 24 29 3e 28 42 6c 6f 63 6b 21 33 36 29 2d 31 20 |$)>(Block!36)-1 | 000062a0 8c 0d 18 56 26 20 20 e7 20 28 28 42 6c 6f 63 6b |...V& . ((Block| 000062b0 21 32 34 29 20 80 20 28 31 3c 3c 39 29 29 3d 28 |!24) . (1<<9))=(| 000062c0 31 3c 3c 39 29 20 8c 0d 18 60 19 20 20 20 20 f4 |1<<9) ...`. .| 000062d0 20 52 69 67 68 74 2d 6a 75 73 74 69 66 69 65 64 | Right-justified| 000062e0 0d 18 6a 24 20 20 20 20 54 78 74 24 3d 22 88 22 |..j$ Txt$="."| 000062f0 2b c2 54 78 74 24 2c 28 42 6c 6f 63 6b 21 33 36 |+.Txt$,(Block!36| 00006300 29 2d 32 29 0d 18 74 07 20 20 cc 0d 18 7e 23 20 |)-2)..t. ...~# | 00006310 20 20 20 f4 20 4c 65 66 74 2d 6a 75 73 74 69 66 | . Left-justif| 00006320 69 65 64 20 6f 72 20 63 65 6e 74 72 65 64 0d 18 |ied or centred..| 00006330 88 2b 20 20 20 20 54 78 74 24 3d c0 54 78 74 24 |.+ Txt$=.Txt$| 00006340 2c 28 42 6c 6f 63 6b 21 33 36 29 2d 31 29 3a c2 |,(Block!36)-1):.| 00006350 54 78 74 24 29 3d 22 89 22 0d 18 92 07 20 20 cd |Txt$)=".".... .| 00006360 0d 18 9c 05 cd 0d 18 a6 46 f4 20 5e 20 45 6e 73 |........F. ^ Ens| 00006370 75 72 65 73 20 74 68 65 20 74 65 78 74 20 63 61 |ures the text ca| 00006380 6e 27 74 20 6f 76 65 72 66 6c 6f 77 20 74 68 65 |n't overflow the| 00006390 20 6d 61 78 69 6d 75 6d 20 73 70 61 63 65 20 69 | maximum space i| 000063a0 6e 20 74 68 65 20 69 63 6f 6e 2e 0d 18 b0 19 e7 |n the icon......| 000063b0 20 24 28 42 6c 6f 63 6b 21 32 38 29 3c 3e 54 78 | $(Block!28)<>Tx| 000063c0 74 24 20 8c 0d 18 ba 2b 20 20 24 28 42 6c 6f 63 |t$ ....+ $(Bloc| 000063d0 6b 21 32 38 29 3d 54 78 74 24 3a 42 6c 6f 63 6b |k!28)=Txt$:Block| 000063e0 21 38 3d 30 3a 42 6c 6f 63 6b 21 31 32 3d 30 0d |!8=0:Block!12=0.| 000063f0 18 c4 23 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 |..# .. "Wimp_Se| 00006400 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f |tIconState",,Blo| 00006410 63 6b 0d 18 ce 05 cd 0d 18 d8 25 c8 99 20 22 57 |ck........%.. "W| 00006420 69 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 |imp_GetCaretPosi| 00006430 74 69 6f 6e 22 2c 2c 42 6c 6f 63 6b 0d 18 e2 22 |tion",,Block..."| 00006440 e7 20 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 20 80 |. Block!0=Wndw .| 00006450 20 42 6c 6f 63 6b 21 34 3d 49 63 6e 20 8c 0d 18 | Block!4=Icn ...| 00006460 ec 3c 20 20 f4 20 49 66 20 74 68 69 73 20 69 63 |.< . If this ic| 00006470 6f 6e 20 6f 77 6e 73 20 74 68 65 20 63 61 72 65 |on owns the care| 00006480 74 2c 20 74 68 65 6e 20 70 75 74 20 69 74 20 61 |t, then put it a| 00006490 74 20 74 68 65 20 65 6e 64 2e 0d 18 f6 38 20 20 |t the end....8 | 000064a0 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 65 |.. "Wimp_SetCare| 000064b0 74 50 6f 73 69 74 69 6f 6e 22 2c 57 6e 64 77 2c |tPosition",Wndw,| 000064c0 49 63 6e 2c 30 2c 30 2c 2d 31 2c a9 28 54 78 74 |Icn,0,0,-1,.(Txt| 000064d0 24 29 0d 19 00 05 cd 0d 19 0a 05 e1 0d 19 14 05 |$)..............| 000064e0 3a 0d 19 1e 2b dd 20 f2 55 70 64 61 74 65 49 63 |:...+. .UpdateIc| 000064f0 6f 6e 43 6f 6c 6f 75 72 28 57 6e 64 77 2c 49 63 |onColour(Wndw,Ic| 00006500 6e 2c 46 43 6f 6c 2c 42 43 6f 6c 29 0d 19 28 1e |n,FCol,BCol)..(.| 00006510 f4 20 43 68 61 6e 67 65 20 61 6e 20 69 63 6f 6e |. Change an icon| 00006520 27 73 20 63 6f 6c 6f 75 72 73 0d 19 32 3a 42 6c |'s colours..2:Bl| 00006530 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 6b |ock!0=Wndw:Block| 00006540 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 5f |!4=Icn:.. "Wimp_| 00006550 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 |GetIconState",,B| 00006560 6c 6f 63 6b 0d 19 3c 3b e7 20 28 28 28 42 6c 6f |lock..<;. (((Blo| 00006570 63 6b 3f 32 37 29 3e 3e 34 29 3d 42 43 6f 6c 29 |ck?27)>>4)=BCol)| 00006580 20 80 20 28 28 28 42 6c 6f 63 6b 3f 32 37 29 20 | . (((Block?27) | 00006590 83 20 31 36 29 3d 46 43 6f 6c 29 20 8c 20 e1 0d |. 16)=FCol) . ..| 000065a0 19 46 27 20 20 f4 20 5e 20 53 61 6d 65 20 63 6f |.F' . ^ Same co| 000065b0 6c 6f 75 72 2c 20 73 6f 20 64 6f 6e 27 74 20 63 |lour, so don't c| 000065c0 68 61 6e 67 65 2e 0d 19 50 3a 42 6c 6f 63 6b 21 |hange...P:Block!| 000065d0 31 32 3d 28 25 31 31 31 31 31 31 31 31 3c 3c 32 |12=(%11111111<<2| 000065e0 34 29 3a 42 6c 6f 63 6b 21 38 3d 28 42 43 6f 6c |4):Block!8=(BCol| 000065f0 3c 3c 32 38 29 2b 28 46 43 6f 6c 3c 3c 32 34 29 |<<28)+(FCol<<24)| 00006600 0d 19 5a 21 c8 99 20 22 57 69 6d 70 5f 53 65 74 |..Z!.. "Wimp_Set| 00006610 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 |IconState",,Bloc| 00006620 6b 0d 19 64 05 e1 0d 19 6e 05 3a 0d 19 78 29 dd |k..d....n.:..x).| 00006630 20 f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 | .UpdateSelected| 00006640 46 6c 61 67 28 57 6e 64 77 2c 49 63 6e 2c 53 74 |Flag(Wndw,Icn,St| 00006650 61 74 65 29 0d 19 82 31 f4 20 55 73 65 20 53 74 |ate)...1. Use St| 00006660 61 74 65 3d 54 52 55 45 20 74 6f 20 6d 61 6b 65 |ate=TRUE to make| 00006670 20 69 63 6f 6e 20 62 65 63 6f 6d 65 20 73 65 6c | icon become sel| 00006680 65 63 74 65 64 0d 19 8c 3a 42 6c 6f 63 6b 21 30 |ected...:Block!0| 00006690 3d 57 6e 64 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 |=Wndw:Block!4=Ic| 000066a0 6e 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |n:.. "Wimp_GetIc| 000066b0 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d |onState",,Block.| 000066c0 19 96 2f e7 20 28 28 42 6c 6f 63 6b 21 32 34 29 |../. ((Block!24)| 000066d0 20 80 20 28 31 3c 3c 32 31 29 29 3d 28 28 2d 53 | . (1<<21))=((-S| 000066e0 74 61 74 65 29 3c 3c 32 31 29 20 8c 20 e1 0d 19 |tate)<<21) . ...| 000066f0 a0 40 42 6c 6f 63 6b 21 31 32 3d 28 31 3c 3c 32 |.@Block!12=(1<<2| 00006700 31 29 3a e7 20 53 74 61 74 65 20 8c 20 42 6c 6f |1):. State . Blo| 00006710 63 6b 21 38 3d 28 31 3c 3c 32 31 29 20 8b 20 42 |ck!8=(1<<21) . B| 00006720 6c 6f 63 6b 21 38 3d 28 30 3c 3c 32 31 29 0d 19 |lock!8=(0<<21)..| 00006730 aa 21 c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 |.!.. "Wimp_SetIc| 00006740 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d |onState",,Block.| 00006750 19 b4 05 e1 0d 19 be 05 3a 0d 19 c8 27 dd 20 f2 |........:...'. .| 00006760 55 70 64 61 74 65 53 68 61 64 65 64 46 6c 61 67 |UpdateShadedFlag| 00006770 28 57 6e 64 77 2c 49 63 6e 2c 53 74 61 74 65 29 |(Wndw,Icn,State)| 00006780 0d 19 d2 2f f4 20 55 73 65 20 53 74 61 74 65 3d |.../. Use State=| 00006790 54 52 55 45 20 74 6f 20 6d 61 6b 65 20 69 63 6f |TRUE to make ico| 000067a0 6e 20 62 65 63 6f 6d 65 20 73 68 61 64 65 64 0d |n become shaded.| 000067b0 19 dc 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a |..:Block!0=Wndw:| 000067c0 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 22 |Block!4=Icn:.. "| 000067d0 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 |Wimp_GetIconStat| 000067e0 65 22 2c 2c 42 6c 6f 63 6b 0d 19 e6 2f e7 20 28 |e",,Block.../. (| 000067f0 28 42 6c 6f 63 6b 21 32 34 29 20 80 20 28 31 3c |(Block!24) . (1<| 00006800 3c 32 32 29 29 3d 28 28 2d 53 74 61 74 65 29 3c |<22))=((-State)<| 00006810 3c 32 32 29 20 8c 20 e1 0d 19 f0 40 42 6c 6f 63 |<22) . ....@Bloc| 00006820 6b 21 31 32 3d 28 31 3c 3c 32 32 29 3a e7 20 53 |k!12=(1<<22):. S| 00006830 74 61 74 65 20 8c 20 42 6c 6f 63 6b 21 38 3d 28 |tate . Block!8=(| 00006840 31 3c 3c 32 32 29 20 8b 20 42 6c 6f 63 6b 21 38 |1<<22) . Block!8| 00006850 3d 28 30 3c 3c 32 32 29 0d 19 fa 21 c8 99 20 22 |=(0<<22)...!.. "| 00006860 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 |Wimp_SetIconStat| 00006870 65 22 2c 2c 42 6c 6f 63 6b 0d 1a 04 05 e1 0d 1a |e",,Block.......| 00006880 0e 05 3a 0d 1a 18 1e dd 20 a4 53 65 6c 65 63 74 |..:..... .Select| 00006890 65 64 53 74 61 74 65 28 57 6e 64 77 2c 49 63 6e |edState(Wndw,Icn| 000068a0 29 0d 1a 22 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 |)..":Block!0=Wnd| 000068b0 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 |w:Block!4=Icn:..| 000068c0 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 000068d0 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 1a 2c 29 e7 |ate",,Block..,).| 000068e0 20 28 28 42 6c 6f 63 6b 21 32 34 29 20 80 20 28 | ((Block!24) . (| 000068f0 31 3c 3c 32 31 29 29 3d 28 31 3c 3c 32 31 29 20 |1<<21))=(1<<21) | 00006900 8c 20 3d b9 0d 1a 36 06 3d a3 0d 1a 40 05 3a 0d |. =...6.=...@.:.| 00006910 1a 4a 1c dd 20 a4 53 68 61 64 65 64 53 74 61 74 |.J.. .ShadedStat| 00006920 65 28 57 6e 64 77 2c 49 63 6e 29 0d 1a 54 3a 42 |e(Wndw,Icn)..T:B| 00006930 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 |lock!0=Wndw:Bloc| 00006940 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 |k!4=Icn:.. "Wimp| 00006950 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 00006960 42 6c 6f 63 6b 0d 1a 5e 29 e7 20 28 28 42 6c 6f |Block..^). ((Blo| 00006970 63 6b 21 32 34 29 20 80 20 28 31 3c 3c 32 32 29 |ck!24) . (1<<22)| 00006980 29 3d 28 31 3c 3c 32 32 29 20 8c 20 3d b9 0d 1a |)=(1<<22) . =...| 00006990 68 06 3d a3 0d 1a 72 05 3a 0d 1a 7c 16 dd 20 a4 |h.=...r.:..|.. .| 000069a0 4f 70 65 6e 53 74 61 74 65 28 57 6e 64 77 29 0d |OpenState(Wndw).| 000069b0 1a 86 35 f4 20 52 65 74 75 72 6e 73 20 54 52 55 |..5. Returns TRU| 000069c0 45 20 69 66 20 77 69 6e 64 6f 77 20 69 73 20 6f |E if window is o| 000069d0 70 65 6e 3b 20 66 61 6c 73 65 20 6f 74 68 65 72 |pen; false other| 000069e0 77 69 73 65 0d 1a 90 30 42 6c 6f 63 6b 21 30 3d |wise...0Block!0=| 000069f0 57 6e 64 77 3a c8 99 20 22 57 69 6d 70 5f 47 65 |Wndw:.. "Wimp_Ge| 00006a00 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 42 |tWindowState",,B| 00006a10 6c 6f 63 6b 0d 1a 9a 29 e7 20 28 28 42 6c 6f 63 |lock...). ((Bloc| 00006a20 6b 21 33 32 29 20 80 20 28 31 3c 3c 31 36 29 29 |k!32) . (1<<16))| 00006a30 3d 28 31 3c 3c 31 36 29 20 8c 20 3d b9 0d 1a a4 |=(1<<16) . =....| 00006a40 06 3d a3 0d 1a ae 05 3a 0d 1a b8 21 dd 20 f2 53 |.=.....:...!. .S| 00006a50 68 61 64 65 4d 65 6e 75 28 4d 65 6e 75 2c 49 74 |hadeMenu(Menu,It| 00006a60 65 6d 2c 53 74 61 74 65 29 0d 1a c2 50 21 28 4d |em,State)...P!(M| 00006a70 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 |enu+28+(24*Item)| 00006a80 2b 38 29 3d 28 21 28 4d 65 6e 75 2b 32 38 2b 28 |+8)=(!(Menu+28+(| 00006a90 32 34 2a 49 74 65 6d 29 2b 38 29 20 80 20 ac 20 |24*Item)+8) . . | 00006aa0 28 31 3c 3c 32 32 29 29 20 82 20 28 28 2d 53 74 |(1<<22)) . ((-St| 00006ab0 61 74 65 29 3c 3c 32 32 29 0d 1a cc 05 e1 0d 1a |ate)<<22).......| 00006ac0 d6 05 3a 0d 1a e0 20 dd 20 f2 54 69 63 6b 4d 65 |..:... . .TickMe| 00006ad0 6e 75 28 4d 65 6e 75 2c 49 74 65 6d 2c 53 74 61 |nu(Menu,Item,Sta| 00006ae0 74 65 29 0d 1a ea 40 21 28 4d 65 6e 75 2b 32 38 |te)...@!(Menu+28| 00006af0 2b 28 32 34 2a 49 74 65 6d 29 29 3d 28 21 28 4d |+(24*Item))=(!(M| 00006b00 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 |enu+28+(24*Item)| 00006b10 29 20 80 20 ac 20 31 29 20 82 20 28 2d 53 74 61 |) . . 1) . (-Sta| 00006b20 74 65 29 0d 1a f4 05 e1 0d 1a fe 05 3a 0d 1b 08 |te).........:...| 00006b30 1c dd 20 a4 4d 65 6e 75 53 68 61 64 65 64 28 4d |.. .MenuShaded(M| 00006b40 65 6e 75 2c 49 74 65 6d 29 0d 1b 12 35 e7 20 28 |enu,Item)...5. (| 00006b50 21 28 4d 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 |!(Menu+28+(24*It| 00006b60 65 6d 29 2b 38 29 20 80 20 28 31 3c 3c 32 32 29 |em)+8) . (1<<22)| 00006b70 29 3d 28 31 3c 3c 32 32 29 20 8c 20 3d b9 0d 1b |)=(1<<22) . =...| 00006b80 1c 06 3d a3 0d 1b 26 05 3a 0d 1b 30 1c dd 20 a4 |..=...&.:..0.. .| 00006b90 4d 65 6e 75 54 69 63 6b 65 64 28 4d 65 6e 75 2c |MenuTicked(Menu,| 00006ba0 49 74 65 6d 29 0d 1b 3a 27 e7 20 28 21 28 4d 65 |Item)..:'. (!(Me| 00006bb0 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 29 |nu+28+(24*Item))| 00006bc0 20 80 20 31 29 3d 31 20 8c 20 3d b9 0d 1b 44 06 | . 1)=1 . =...D.| 00006bd0 3d a3 0d 1b 4e 05 3a 0d 1b 58 19 dd 20 a4 52 65 |=...N.:..X.. .Re| 00006be0 61 64 49 63 6f 6e 28 57 6e 64 77 2c 49 63 6e 29 |adIcon(Wndw,Icn)| 00006bf0 0d 1b 62 20 f4 20 52 65 61 64 20 6e 75 6d 65 72 |..b . Read numer| 00006c00 69 63 20 76 61 6c 75 65 20 6f 66 20 69 63 6f 6e |ic value of icon| 00006c10 0d 1b 6c 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 |..l:Block!0=Wndw| 00006c20 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 |:Block!4=Icn:.. | 00006c30 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 00006c40 74 65 22 2c 2c 42 6c 6f 63 6b 0d 1b 76 13 3d bb |te",,Block..v.=.| 00006c50 28 24 28 42 6c 6f 63 6b 21 32 38 29 29 0d 1b 80 |($(Block!28))...| 00006c60 05 3a 0d 1b 8a 1c dd 20 a4 52 65 61 64 49 63 6f |.:..... .ReadIco| 00006c70 6e 53 74 72 28 57 6e 64 77 2c 49 63 6e 29 0d 1b |nStr(Wndw,Icn)..| 00006c80 94 1f f4 20 52 65 61 64 20 73 74 72 69 6e 67 20 |... Read string | 00006c90 76 61 6c 75 65 20 6f 66 20 69 63 6f 6e 0d 1b 9e |value of icon...| 00006ca0 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c |:Block!0=Wndw:Bl| 00006cb0 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 |ock!4=Icn:.. "Wi| 00006cc0 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_GetIconState"| 00006cd0 2c 2c 42 6c 6f 63 6b 0d 1b a8 10 3d 24 28 42 6c |,,Block....=$(Bl| 00006ce0 6f 63 6b 21 32 38 29 0d 1b b2 05 3a 0d 1b bc 1a |ock!28)....:....| 00006cf0 dd 20 a4 4d 6f 64 65 49 6e 66 6f 28 76 61 72 24 |. .ModeInfo(var$| 00006d00 2c 6d 6f 64 65 29 0d 1b c6 29 f4 20 55 73 65 20 |,mode)...). Use | 00006d10 6d 6f 64 65 3d 2d 31 20 66 6f 72 20 63 75 72 72 |mode=-1 for curr| 00006d20 65 6e 74 20 73 63 72 65 65 6e 20 6d 6f 64 65 0d |ent screen mode.| 00006d30 1b d0 0d c8 8e 20 76 61 72 24 20 ca 0d 1b da 3a |..... var$ ....:| 00006d40 20 20 c9 20 22 58 50 69 78 65 6c 73 22 3a c8 99 | . "XPixels":..| 00006d50 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 | "OS_ReadModeVar| 00006d60 69 61 62 6c 65 22 2c 6d 6f 64 65 2c 31 31 20 b8 |iable",mode,11 .| 00006d70 20 2c 2c 76 61 72 0d 1b e4 3a 20 20 c9 20 22 59 | ,,var...: . "Y| 00006d80 50 69 78 65 6c 73 22 3a c8 99 20 22 4f 53 5f 52 |Pixels":.. "OS_R| 00006d90 65 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 |eadModeVariable"| 00006da0 2c 6d 6f 64 65 2c 31 32 20 b8 20 2c 2c 76 61 72 |,mode,12 . ,,var| 00006db0 0d 1b ee 36 20 20 c9 20 22 4e 43 6f 6c 22 3a c8 |...6 . "NCol":.| 00006dc0 99 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 |. "OS_ReadModeVa| 00006dd0 72 69 61 62 6c 65 22 2c 6d 6f 64 65 2c 33 20 b8 |riable",mode,3 .| 00006de0 20 2c 2c 76 61 72 0d 1b f8 3c 20 20 c9 20 22 58 | ,,var...< . "X| 00006df0 45 69 67 46 61 63 74 6f 72 22 3a c8 99 20 22 4f |EigFactor":.. "O| 00006e00 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 |S_ReadModeVariab| 00006e10 6c 65 22 2c 6d 6f 64 65 2c 34 20 b8 20 2c 2c 76 |le",mode,4 . ,,v| 00006e20 61 72 0d 1c 02 3c 20 20 c9 20 22 59 45 69 67 46 |ar...< . "YEigF| 00006e30 61 63 74 6f 72 22 3a c8 99 20 22 4f 53 5f 52 65 |actor":.. "OS_Re| 00006e40 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 2c |adModeVariable",| 00006e50 6d 6f 64 65 2c 35 20 b8 20 2c 2c 76 61 72 0d 1c |mode,5 . ,,var..| 00006e60 0c 3f 20 20 c9 20 22 42 50 50 22 3a c8 99 20 22 |.? . "BPP":.. "| 00006e70 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 |OS_ReadModeVaria| 00006e80 62 6c 65 22 2c 6d 6f 64 65 2c 39 20 b8 20 2c 2c |ble",mode,9 . ,,| 00006e90 76 61 72 3a 76 61 72 3d 32 5e 76 61 72 0d 1c 16 |var:var=2^var...| 00006ea0 36 20 20 7f 20 76 61 72 3d 2d 31 3a f4 20 46 61 |6 . var=-1:. Fa| 00006eb0 6c 6c 2d 74 68 72 6f 75 67 68 20 66 6f 72 20 61 |ll-through for a| 00006ec0 20 66 61 75 6c 74 79 20 69 6e 70 75 74 20 76 61 | faulty input va| 00006ed0 6c 75 65 0d 1c 20 05 cb 0d 1c 2a 08 3d 76 61 72 |lue.. ....*.=var| 00006ee0 0d 1c 34 05 3a 0d 1c 3e 2b dd 20 f2 55 70 64 61 |..4.:..>+. .Upda| 00006ef0 74 65 49 63 6f 6e 46 6f 72 4d 6f 64 65 28 41 70 |teIconForMode(Ap| 00006f00 70 6e 61 6d 65 24 2c 57 6e 64 77 2c 49 63 6e 29 |pname$,Wndw,Icn)| 00006f10 0d 1c 48 4e f4 20 54 68 69 73 20 70 72 6f 63 65 |..HN. This proce| 00006f20 64 75 72 65 20 72 65 71 75 69 72 65 73 20 74 68 |dure requires th| 00006f30 61 74 20 41 4c 4c 20 74 68 65 20 69 63 6f 6e 20 |at ALL the icon | 00006f40 73 70 72 69 74 65 73 20 61 72 65 20 64 65 66 69 |sprites are defi| 00006f50 6e 65 64 20 69 6e 20 6d 6f 64 65 20 32 30 0d 1c |ned in mode 20..| 00006f60 52 4e f4 20 6f 72 20 6d 6f 64 65 20 32 37 20 28 |RN. or mode 27 (| 00006f70 77 68 69 63 68 20 69 73 20 65 71 75 69 76 61 6c |which is equival| 00006f80 65 6e 74 29 20 77 69 74 68 20 61 20 6d 61 73 6b |ent) with a mask| 00006f90 20 62 75 74 20 6e 6f 20 70 61 6c 65 74 74 65 2e | but no palette.| 00006fa0 20 54 68 65 79 20 73 68 6f 75 6c 64 0d 1c 5c 4e | They should..\N| 00006fb0 f4 20 73 74 69 6c 6c 20 61 70 70 65 61 72 20 74 |. still appear t| 00006fc0 6f 20 68 61 76 65 20 74 68 65 20 65 78 70 65 63 |o have the expec| 00006fd0 74 65 64 20 72 65 73 6f 6c 75 74 69 6f 6e 73 20 |ted resolutions | 00006fe0 61 6e 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f |and number of co| 00006ff0 6c 6f 75 72 73 2c 20 69 2e 65 0d 1c 66 4e f4 20 |lours, i.e..fN. | 00007000 21 53 70 72 69 74 65 73 32 33 3a 20 74 77 6f 20 |!Sprites23: two | 00007010 63 6f 6c 6f 75 72 73 2c 20 68 69 67 68 20 72 65 |colours, high re| 00007020 73 6f 6c 75 74 69 6f 6e 2c 20 21 53 70 72 69 74 |solution, !Sprit| 00007030 65 73 20 28 61 63 74 75 61 6c 6c 79 20 21 53 70 |es (actually !Sp| 00007040 72 69 74 65 73 32 34 29 0d 1c 70 4c f4 20 61 74 |rites24)..pL. at| 00007050 20 6d 6f 64 65 20 31 32 20 72 65 73 6f 6c 75 74 | mode 12 resolut| 00007060 69 6f 6e 20 28 64 6f 75 62 6c 65 20 68 65 69 67 |ion (double heig| 00007070 68 74 20 70 69 78 65 6c 73 29 20 69 6e 20 31 36 |ht pixels) in 16| 00007080 20 63 6f 6c 6f 75 72 73 2c 20 61 6e 64 20 6e 6f | colours, and no| 00007090 72 6d 61 6c 0d 1c 7a 4c f4 20 6d 6f 64 65 20 32 |rmal..zL. mode 2| 000070a0 30 20 72 65 73 6f 6c 75 74 69 6f 6e 2c 20 31 36 |0 resolution, 16| 000070b0 20 63 6f 6c 6f 75 72 73 20 66 6f 72 20 74 68 65 | colours for the| 000070c0 20 21 53 70 72 69 74 65 73 32 32 20 69 63 6f 6e | !Sprites22 icon| 000070d0 2e 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 |. If this is not| 000070e0 0d 1c 84 49 f4 20 61 64 68 65 72 65 64 20 74 6f |...I. adhered to| 000070f0 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20 73 68 |, then memory sh| 00007100 6f 72 74 61 67 65 20 65 72 72 6f 72 73 20 6d 61 |ortage errors ma| 00007110 79 20 6f 63 63 75 72 20 6f 6e 20 61 20 6d 6f 64 |y occur on a mod| 00007120 65 20 63 68 61 6e 67 65 2e 0d 1c 8e 13 45 78 74 |e change.....Ext| 00007130 65 6e 73 69 6f 6e 24 3d 22 32 34 22 0d 1c 98 24 |ension$="24"...$| 00007140 e7 20 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 |. .ModeInfo("YEi| 00007150 67 46 61 63 74 6f 72 22 2c 2d 31 29 3c 32 20 8c |gFactor",-1)<2 .| 00007160 0d 1c a2 20 20 20 e7 20 a4 4d 6f 64 65 49 6e 66 |... . .ModeInf| 00007170 6f 28 22 4e 43 6f 6c 22 2c 2d 31 29 3e 32 20 8c |o("NCol",-1)>2 .| 00007180 0d 1c ac 17 20 20 20 20 45 78 74 65 6e 73 69 6f |.... Extensio| 00007190 6e 24 3d 22 32 32 22 0d 1c b6 07 20 20 cc 0d 1c |n$="22".... ...| 000071a0 c0 17 20 20 20 20 45 78 74 65 6e 73 69 6f 6e 24 |.. Extension$| 000071b0 3d 22 32 33 22 0d 1c ca 07 20 20 cd 0d 1c d4 05 |="23".... .....| 000071c0 cd 0d 1c de 2a c8 99 20 22 57 69 6d 70 5f 42 61 |....*.. "Wimp_Ba| 000071d0 73 65 4f 66 53 70 72 69 74 65 73 22 20 b8 20 2c |seOfSprites" . ,| 000071e0 69 63 6f 6e 73 70 72 69 74 65 25 0d 1c e8 45 c8 |iconsprite%...E.| 000071f0 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 00007200 32 35 36 2b 32 35 2c 69 63 6f 6e 73 70 72 69 74 |256+25,iconsprit| 00007210 65 25 2c 41 70 70 6e 61 6d 65 24 3a f4 20 44 65 |e%,Appname$:. De| 00007220 6c 65 74 65 20 69 63 6f 6e 20 73 70 72 69 74 65 |lete icon sprite| 00007230 0d 1c f2 3d f4 20 54 68 65 20 66 6f 6c 6c 6f 77 |...=. The follow| 00007240 69 6e 67 20 74 68 72 65 65 20 6c 69 6e 65 73 20 |ing three lines | 00007250 61 73 73 75 6d 65 20 61 20 6d 61 73 6b 20 62 75 |assume a mask bu| 00007260 74 20 6e 6f 20 70 61 6c 65 74 74 65 3a 0d 1c fc |t no palette:...| 00007270 62 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |b.. "OS_SpriteOp| 00007280 22 2c 32 35 36 2b 34 30 2c 53 70 72 69 74 65 73 |",256+40,Sprites| 00007290 2c 41 70 70 6e 61 6d 65 24 2b 45 78 74 65 6e 73 |,Appname$+Extens| 000072a0 69 6f 6e 24 20 b8 20 2c 2c 2c 77 2c 68 2c 2c 6d |ion$ . ,,,w,h,,m| 000072b0 6f 64 65 3a f4 20 47 65 74 20 69 6e 66 6f 20 61 |ode:. Get info a| 000072c0 62 6f 75 74 20 6e 65 77 20 73 70 72 69 74 65 0d |bout new sprite.| 000072d0 1d 06 5c c8 99 20 22 4f 53 5f 53 70 72 69 74 65 |..\.. "OS_Sprite| 000072e0 4f 70 22 2c 32 35 36 2b 31 35 2c 69 63 6f 6e 73 |Op",256+15,icons| 000072f0 70 72 69 74 65 25 2c 41 70 70 6e 61 6d 65 24 2c |prite%,Appname$,| 00007300 30 2c 77 2c 68 2c 6d 6f 64 65 3a f4 20 43 72 65 |0,w,h,mode:. Cre| 00007310 61 74 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 |ate replacement | 00007320 69 63 6f 6e 20 73 70 72 69 74 65 0d 1d 10 3e c8 |icon sprite...>.| 00007330 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 00007340 32 35 36 2b 32 39 2c 69 63 6f 6e 73 70 72 69 74 |256+29,iconsprit| 00007350 65 25 2c 41 70 70 6e 61 6d 65 24 3a f4 20 43 72 |e%,Appname$:. Cr| 00007360 65 61 74 65 20 6d 61 73 6b 0d 1d 1a 07 20 20 3a |eate mask.... :| 00007370 0d 1d 24 2d f4 20 50 61 69 6e 74 20 73 70 72 69 |..$-. Paint spri| 00007380 74 65 20 6d 61 73 6b 20 69 6e 74 6f 20 69 63 6f |te mask into ico| 00007390 6e 73 70 72 69 74 65 20 6d 61 73 6b 3a 0d 1d 2e |nsprite mask:...| 000073a0 51 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |Q.. "OS_SpriteOp| 000073b0 22 2c 32 35 36 2b 36 31 2c 69 63 6f 6e 73 70 72 |",256+61,iconspr| 000073c0 69 74 65 25 2c 41 70 70 6e 61 6d 65 24 2c 30 20 |ite%,Appname$,0 | 000073d0 b8 20 72 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 |. r0,r1,r2,r3:. | 000073e0 4f 75 74 70 75 74 20 74 6f 20 6d 61 73 6b 0d 1d |Output to mask..| 000073f0 38 55 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f |8U.. "OS_SpriteO| 00007400 70 22 2c 32 35 36 2b 34 39 2c 53 70 72 69 74 65 |p",256+49,Sprite| 00007410 73 2c 41 70 70 6e 61 6d 65 24 2b 45 78 74 65 6e |s,Appname$+Exten| 00007420 73 69 6f 6e 24 2c 30 2c 30 3a f4 20 50 61 69 6e |sion$,0,0:. Pain| 00007430 74 20 6d 61 73 6b 20 66 72 6f 6d 20 53 70 72 69 |t mask from Spri| 00007440 74 65 73 0d 1d 42 37 e6 20 34 2c 31 32 38 3a da |tes..B7. 4,128:.| 00007450 3a f4 20 49 6e 76 65 72 74 20 74 6f 20 6d 61 6b |:. Invert to mak| 00007460 65 20 6d 61 73 6b 20 74 68 65 20 72 69 67 68 74 |e mask the right| 00007470 20 77 61 79 20 72 6f 75 6e 64 0d 1d 4c 36 c8 99 | way round..L6..| 00007480 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 72 | "OS_SpriteOp",r| 00007490 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 52 65 73 |0,r1,r2,r3:. Res| 000074a0 65 74 20 73 63 72 65 65 6e 20 6f 75 74 70 75 74 |et screen output| 000074b0 0d 1d 56 07 20 20 3a 0d 1d 60 23 f4 20 50 61 69 |..V. :..`#. Pai| 000074c0 6e 74 20 73 70 72 69 74 65 20 69 6e 74 6f 20 69 |nt sprite into i| 000074d0 63 6f 6e 73 70 72 69 74 65 3a 0d 1d 6a 5c c8 99 |consprite:..j\..| 000074e0 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 32 | "OS_SpriteOp",2| 000074f0 35 36 2b 36 30 2c 69 63 6f 6e 73 70 72 69 74 65 |56+60,iconsprite| 00007500 25 2c 41 70 70 6e 61 6d 65 24 2c 30 20 b8 20 72 |%,Appname$,0 . r| 00007510 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 4f 75 74 |0,r1,r2,r3:. Out| 00007520 70 75 74 20 74 6f 20 6e 65 77 20 69 63 6f 6e 20 |put to new icon | 00007530 73 70 72 69 74 65 0d 1d 74 57 c8 99 20 22 4f 53 |sprite..tW.. "OS| 00007540 5f 53 70 72 69 74 65 4f 70 22 2c 32 35 36 2b 33 |_SpriteOp",256+3| 00007550 34 2c 53 70 72 69 74 65 73 2c 41 70 70 6e 61 6d |4,Sprites,Appnam| 00007560 65 24 2b 45 78 74 65 6e 73 69 6f 6e 24 2c 30 2c |e$+Extension$,0,| 00007570 30 2c 38 3a f4 20 50 61 69 6e 74 20 63 6f 70 79 |0,8:. Paint copy| 00007580 20 66 72 6f 6d 20 53 70 72 69 74 65 73 0d 1d 7e | from Sprites..~| 00007590 36 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |6.. "OS_SpriteOp| 000075a0 22 2c 72 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 |",r0,r1,r2,r3:. | 000075b0 52 65 73 65 74 20 73 63 72 65 65 6e 20 6f 75 74 |Reset screen out| 000075c0 70 75 74 0d 1d 88 3a 42 6c 6f 63 6b 21 30 3d 57 |put...:Block!0=W| 000075d0 6e 64 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a |ndw:Block!4=Icn:| 000075e0 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 000075f0 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 1d 92 |State",,Block...| 00007600 45 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b |EBlock!8=0:Block| 00007610 21 31 32 3d 30 3a c8 99 20 22 57 69 6d 70 5f 53 |!12=0:.. "Wimp_S| 00007620 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c |etIconState",,Bl| 00007630 6f 63 6b 3a f4 20 52 65 2d 70 6c 6f 74 20 69 63 |ock:. Re-plot ic| 00007640 6f 6e 0d 1d 9c 05 e1 0d 1d a6 05 3a 0d 1d b0 d8 |on.........:....| 00007650 dd 20 a4 43 72 65 61 74 65 57 69 6e 64 6f 77 28 |. .CreateWindow(| 00007660 6d 69 6e 58 2c 6d 69 6e 59 2c 6d 61 78 58 2c 6d |minX,minY,maxX,m| 00007670 61 78 59 2c 58 6f 66 66 73 65 74 2c 59 6f 66 66 |axY,Xoffset,Yoff| 00007680 73 65 74 2c 48 61 6e 64 6c 65 2c 46 6c 61 67 73 |set,Handle,Flags| 00007690 2c 54 69 74 6c 65 43 6f 6c 2c 54 69 74 6c 65 42 |,TitleCol,TitleB| 000076a0 61 63 6b 43 6f 6c 2c 57 6f 72 6b 43 6f 6c 2c 57 |ackCol,WorkCol,W| 000076b0 6f 72 6b 42 61 63 6b 43 6f 6c 2c 53 63 72 6f 6c |orkBackCol,Scrol| 000076c0 6c 43 6f 6c 2c 53 6c 69 64 65 72 43 6f 6c 2c 49 |lCol,SliderCol,I| 000076d0 6e 70 75 74 43 6f 6c 2c 57 6d 69 6e 58 2c 57 6d |nputCol,WminX,Wm| 000076e0 69 6e 59 2c 57 6d 61 78 58 2c 57 6d 61 78 59 2c |inY,WmaxX,WmaxY,| 000076f0 54 69 74 6c 65 46 6c 61 67 73 2c 57 62 75 74 74 |TitleFlags,Wbutt| 00007700 6f 6e 2c 53 70 72 69 74 65 50 6f 69 6e 74 2c 4d |on,SpritePoint,M| 00007710 69 6e 57 2c 4d 69 6e 48 2c 54 69 74 6c 65 44 61 |inW,MinH,TitleDa| 00007720 74 61 24 29 0d 1d ba 5a 42 6c 6f 63 6b 21 30 3d |ta$)...ZBlock!0=| 00007730 6d 69 6e 58 3a 42 6c 6f 63 6b 21 34 3d 6d 69 6e |minX:Block!4=min| 00007740 59 3a 42 6c 6f 63 6b 21 38 3d 6d 61 78 58 3a 42 |Y:Block!8=maxX:B| 00007750 6c 6f 63 6b 21 31 32 3d 6d 61 78 59 3a 42 6c 6f |lock!12=maxY:Blo| 00007760 63 6b 21 31 36 3d 58 6f 66 66 73 65 74 3a 42 6c |ck!16=Xoffset:Bl| 00007770 6f 63 6b 21 32 30 3d 59 6f 66 66 73 65 74 0d 1d |ock!20=Yoffset..| 00007780 c4 22 42 6c 6f 63 6b 21 32 34 3d 48 61 6e 64 6c |."Block!24=Handl| 00007790 65 3a 42 6c 6f 63 6b 21 32 38 3d 46 6c 61 67 73 |e:Block!28=Flags| 000077a0 0d 1d ce 51 42 6c 6f 63 6b 3f 33 32 3d 54 69 74 |...QBlock?32=Tit| 000077b0 6c 65 43 6f 6c 3a 42 6c 6f 63 6b 3f 33 33 3d 54 |leCol:Block?33=T| 000077c0 69 74 6c 65 42 61 63 6b 43 6f 6c 3a 42 6c 6f 63 |itleBackCol:Bloc| 000077d0 6b 3f 33 34 3d 57 6f 72 6b 43 6f 6c 3a 42 6c 6f |k?34=WorkCol:Blo| 000077e0 63 6b 3f 33 35 3d 57 6f 72 6b 42 61 63 6b 43 6f |ck?35=WorkBackCo| 000077f0 6c 0d 1d d8 46 42 6c 6f 63 6b 3f 33 36 3d 53 63 |l...FBlock?36=Sc| 00007800 72 6f 6c 6c 43 6f 6c 3a 42 6c 6f 63 6b 3f 33 37 |rollCol:Block?37| 00007810 3d 53 6c 69 64 65 72 43 6f 6c 3a 42 6c 6f 63 6b |=SliderCol:Block| 00007820 3f 33 38 3d 49 6e 70 75 74 43 6f 6c 3a 42 6c 6f |?38=InputCol:Blo| 00007830 63 6b 3f 33 39 3d 30 0d 1d e2 3f 42 6c 6f 63 6b |ck?39=0...?Block| 00007840 21 34 30 3d 57 6d 69 6e 58 3a 42 6c 6f 63 6b 21 |!40=WminX:Block!| 00007850 34 34 3d 57 6d 69 6e 59 3a 42 6c 6f 63 6b 21 34 |44=WminY:Block!4| 00007860 38 3d 57 6d 61 78 58 3a 42 6c 6f 63 6b 21 35 32 |8=WmaxX:Block!52| 00007870 3d 57 6d 61 78 59 0d 1d ec 3d 42 6c 6f 63 6b 21 |=WmaxY...=Block!| 00007880 35 36 3d 54 69 74 6c 65 46 6c 61 67 73 3a 42 6c |56=TitleFlags:Bl| 00007890 6f 63 6b 21 36 30 3d 57 62 75 74 74 6f 6e 3a 42 |ock!60=Wbutton:B| 000078a0 6c 6f 63 6b 21 36 34 3d 53 70 72 69 74 65 50 6f |lock!64=SpritePo| 000078b0 69 6e 74 0d 1d f6 5f 42 6c 6f 63 6b 21 36 38 3d |int..._Block!68=| 000078c0 28 4d 69 6e 48 3c 3c 31 35 29 2b 4d 69 6e 57 20 |(MinH<<15)+MinW | 000078d0 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 20 f4 20 30 |:::::::::::: . 0| 000078e0 2c 30 20 73 65 74 73 20 74 68 65 20 6d 69 6e 69 |,0 sets the mini| 000078f0 6d 75 6d 20 77 69 6e 64 6f 77 20 77 69 74 68 20 |mum window with | 00007900 74 6f 20 74 68 65 20 74 69 74 6c 65 20 77 69 64 |to the title wid| 00007910 74 68 0d 1e 00 3e 24 28 42 6c 6f 63 6b 2b 37 32 |th...>$(Block+72| 00007920 29 3d 54 69 74 6c 65 44 61 74 61 24 3a 42 6c 6f |)=TitleData$:Blo| 00007930 63 6b 21 38 34 3d 30 20 3a 3a 3a 20 f4 20 4e 6f |ck!84=0 ::: . No| 00007940 20 69 63 6f 6e 73 20 69 6e 69 74 69 61 6c 6c 79 | icons initially| 00007950 0d 1e 0a 30 c8 99 20 22 57 69 6d 70 5f 43 72 65 |...0.. "Wimp_Cre| 00007960 61 74 65 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 |ateWindow",,Bloc| 00007970 6b 20 b8 20 57 69 6e 64 6f 77 48 61 6e 64 6c 65 |k . WindowHandle| 00007980 0d 1e 14 11 3d 57 69 6e 64 6f 77 48 61 6e 64 6c |....=WindowHandl| 00007990 65 0d 1e 1e 05 3a 0d 1e 28 11 dd 20 f2 49 6e 69 |e....:..(.. .Ini| 000079a0 74 69 61 6c 69 73 65 0d 1e 32 2d 41 70 70 53 69 |tialise..2-AppSi| 000079b0 7a 65 3d 93 2d 26 38 30 30 30 3a 4d 69 6e 53 69 |ze=.-&8000:MinSi| 000079c0 7a 65 3d 41 70 70 53 69 7a 65 3a 53 6c 6f 74 45 |ze=AppSize:SlotE| 000079d0 6e 64 3d 93 0d 1e 3c 05 e1 0d 1e 46 05 3a 0d 1e |nd=...<....F.:..| 000079e0 50 1f dd 20 a4 41 6c 6c 6f 63 61 74 65 4d 65 6d |P.. .AllocateMem| 000079f0 6f 72 79 28 52 65 71 75 69 72 65 64 29 0d 1e 5a |ory(Required)..Z| 00007a00 1a 53 6c 6f 74 53 69 7a 65 3d a4 53 6c 6f 74 53 |.SlotSize=.SlotS| 00007a10 69 7a 65 28 2d 31 29 0d 1e 64 19 e7 20 53 6c 6f |ize(-1)..d.. Slo| 00007a20 74 53 69 7a 65 3c 52 65 71 75 69 72 65 64 20 8c |tSize<Required .| 00007a30 0d 1e 6e 21 20 20 4e 65 77 53 69 7a 65 3d a4 53 |..n! NewSize=.S| 00007a40 6c 6f 74 53 69 7a 65 28 52 65 71 75 69 72 65 64 |lotSize(Required| 00007a50 29 0d 1e 78 36 20 20 e7 20 4e 65 77 53 69 7a 65 |)..x6 . NewSize| 00007a60 3c 52 65 71 75 69 72 65 64 20 8c 20 53 6c 6f 74 |<Required . Slot| 00007a70 53 69 7a 65 3d a4 53 6c 6f 74 53 69 7a 65 28 41 |Size=.SlotSize(A| 00007a80 70 70 53 69 7a 65 29 0d 1e 82 05 cd 0d 1e 8c 44 |ppSize)........D| 00007a90 e7 20 4e 65 77 53 69 7a 65 3c 52 65 71 75 69 72 |. NewSize<Requir| 00007aa0 65 64 20 8c 20 3d 30 3a f4 20 52 65 74 75 72 6e |ed . =0:. Return| 00007ab0 73 2c 20 69 6e 64 69 63 61 74 69 6e 67 20 6d 65 |s, indicating me| 00007ac0 6d 6f 72 79 20 6e 6f 74 20 63 6c 61 69 6d 65 64 |mory not claimed| 00007ad0 0d 1e 96 36 e7 20 53 6c 6f 74 53 69 7a 65 3e 52 |...6. SlotSize>R| 00007ae0 65 71 75 69 72 65 64 20 8c 20 53 6c 6f 74 53 69 |equired . SlotSi| 00007af0 7a 65 3d a4 53 6c 6f 74 53 69 7a 65 28 52 65 71 |ze=.SlotSize(Req| 00007b00 75 69 72 65 64 29 0d 1e a0 2a 3d 53 6c 6f 74 53 |uired)...*=SlotS| 00007b10 69 7a 65 3a f4 20 52 65 74 75 72 6e 73 20 77 69 |ize:. Returns wi| 00007b20 74 68 20 62 79 74 65 73 20 63 6c 61 69 6d 65 64 |th bytes claimed| 00007b30 0d 1e aa 05 3a 0d 1e b4 16 dd 20 a4 53 6c 6f 74 |....:..... .Slot| 00007b40 53 69 7a 65 28 42 79 74 65 73 29 0d 1e be 27 c8 |Size(Bytes)...'.| 00007b50 99 20 22 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 |. "Wimp_SlotSize| 00007b60 22 2c 42 79 74 65 73 2c 2d 31 20 b8 20 42 79 74 |",Bytes,-1 . Byt| 00007b70 65 73 0d 1e c8 0a 3d 42 79 74 65 73 0d 1e d2 05 |es....=Bytes....| 00007b80 3a 0d 1e dc 17 dd 20 f2 4d 69 6e 69 6d 69 73 65 |:..... .Minimise| 00007b90 57 69 6d 70 53 6c 6f 74 0d 1e e6 22 64 75 6d 6d |WimpSlot..."dumm| 00007ba0 79 3d a4 41 6c 6c 6f 63 61 74 65 4d 65 6d 6f 72 |y=.AllocateMemor| 00007bb0 79 28 4d 69 6e 53 69 7a 65 29 0d 1e f0 05 e1 0d |y(MinSize)......| 00007bc0 1e fa 05 3a 0d 1f 04 22 dd 20 f2 43 6c 6f 73 65 |...:...". .Close| 00007bd0 46 69 6c 65 49 66 50 6f 73 73 28 46 69 6c 65 48 |FileIfPoss(FileH| 00007be0 61 6e 64 6c 65 29 0d 1f 0e 07 ea 20 85 0d 1f 18 |andle)..... ....| 00007bf0 26 ee 20 85 20 ea 20 f7 20 85 3a e1 3a f4 20 55 |&. . . . .:.:. U| 00007c00 6e 61 62 6c 65 20 74 6f 20 63 6c 6f 73 65 20 66 |nable to close f| 00007c10 69 6c 65 0d 1f 22 10 d9 23 46 69 6c 65 48 61 6e |ile.."..#FileHan| 00007c20 64 6c 65 0d 1f 2c 05 e1 0d 1f 36 05 3a 0d 1f 40 |dle..,....6.:..@| 00007c30 1e dd 20 a4 46 69 6e 64 46 69 6c 65 53 69 7a 65 |.. .FindFileSize| 00007c40 28 46 69 6c 65 4e 61 6d 65 24 29 0d 1f 4a 20 e7 |(FileName$)..J .| 00007c50 20 46 69 6c 65 4e 61 6d 65 24 3d 22 3c 57 69 6d | FileName$="<Wim| 00007c60 70 24 53 63 72 61 70 3e 22 20 8c 0d 1f 54 3a 20 |p$Scrap>" ...T: | 00007c70 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 35 | .. "OS_File",15| 00007c80 2c 46 69 6c 65 4e 61 6d 65 24 2c 2c 2c 46 69 6c |,FileName$,,,Fil| 00007c90 65 4e 61 6d 65 24 20 b8 20 2c 2c 2c 2c 46 69 6c |eName$ . ,,,,Fil| 00007ca0 65 53 69 7a 65 0d 1f 5e 05 cc 0d 1f 68 34 20 20 |eSize..^....h4 | 00007cb0 4e 3d 2d 31 3a f5 3a 4e 2b 3d 31 3a fd 20 c1 46 |N=-1:.:N+=1:. .F| 00007cc0 69 6c 65 4e 61 6d 65 24 2c a9 28 46 69 6c 65 4e |ileName$,.(FileN| 00007cd0 61 6d 65 24 29 2d 4e 2c 31 29 3d 22 2e 22 0d 1f |ame$)-N,1)="."..| 00007ce0 72 42 20 20 50 61 74 68 4e 61 6d 65 24 3d c0 46 |rB PathName$=.F| 00007cf0 69 6c 65 4e 61 6d 65 24 2c a9 28 46 69 6c 65 4e |ileName$,.(FileN| 00007d00 61 6d 65 24 29 2d 4e 29 3a 4c 65 61 66 4e 61 6d |ame$)-N):LeafNam| 00007d10 65 24 3d c2 46 69 6c 65 4e 61 6d 65 24 2c 4e 29 |e$=.FileName$,N)| 00007d20 0d 1f 7c 3a 20 20 c8 99 20 22 4f 53 5f 46 69 6c |..|: .. "OS_Fil| 00007d30 65 22 2c 31 33 2c 4c 65 61 66 4e 61 6d 65 24 2c |e",13,LeafName$,| 00007d40 2c 2c 50 61 74 68 4e 61 6d 65 24 20 b8 20 2c 2c |,,PathName$ . ,,| 00007d50 2c 2c 46 69 6c 65 53 69 7a 65 0d 1f 86 05 cd 0d |,,FileSize......| 00007d60 1f 90 0d 3d 46 69 6c 65 53 69 7a 65 0d 1f 9a 05 |...=FileSize....| 00007d70 3a 0d 1f a4 10 dd 20 a4 4e 65 78 74 45 6e 74 72 |:..... .NextEntr| 00007d80 79 0d 1f ae 48 f4 20 47 65 74 73 20 6e 65 78 74 |y...H. Gets next| 00007d90 20 65 6e 74 72 79 20 28 63 72 65 61 74 65 64 20 | entry (created | 00007da0 62 79 20 42 50 55 54 23 44 61 74 61 2c 41 24 29 |by BPUT#Data,A$)| 00007db0 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 61 73 20 | from a file as | 00007dc0 61 20 73 74 72 69 6e 67 2e 0d 1f b8 1c f4 20 55 |a string...... U| 00007dd0 73 65 20 61 73 20 41 24 3d 46 4e 4e 65 78 74 45 |se as A$=FNNextE| 00007de0 6e 74 72 79 2e 0d 1f c2 07 ea 20 85 0d 1f cc 26 |ntry...... ....&| 00007df0 ee 20 85 20 ea 20 f7 20 85 3a 3d 22 22 3a f4 20 |. . . . .:="":. | 00007e00 45 72 72 6f 72 20 72 65 61 64 69 6e 67 20 66 69 |Error reading fi| 00007e10 6c 65 0d 1f d6 0e 4e 45 24 3d be 23 44 61 74 61 |le....NE$=.#Data| 00007e20 0d 1f e0 12 c8 95 20 c0 4e 45 24 2c 31 29 3d 22 |...... .NE$,1)="| 00007e30 7c 22 0d 1f ea 10 20 20 4e 45 24 3d be 23 44 61 ||".... NE$=.#Da| 00007e40 74 61 0d 1f f4 05 ce 0d 1f fe 08 3d 4e 45 24 0d |ta.........=NE$.| 00007e50 20 08 05 3a 0d 20 12 4f f4 20 2d 2d 2d 2d 2d 2d | ..:. .O. ------| 00007e60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007ea0 2d 2d 2d 0d 20 1c 2f f4 20 52 6f 75 74 69 6e 65 |---. ./. Routine| 00007eb0 73 20 63 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 20 |s common to the | 00007ec0 4f 6d 6e 69 44 65 73 6b 20 75 74 69 6c 69 74 69 |OmniDesk utiliti| 00007ed0 65 73 0d 20 26 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d |es. &O. --------| 00007ee0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007f20 2d 0d 20 30 05 3a 0d 20 3a 20 dd 20 a4 52 65 61 |-. 0.:. : . .Rea| 00007f30 64 57 69 6e 64 6f 77 4c 6f 63 61 74 69 6f 6e 28 |dWindowLocation(| 00007f40 41 78 69 73 24 29 0d 20 44 48 f4 20 52 65 61 64 |Axis$). DH. Read| 00007f50 73 20 77 68 69 63 68 20 72 61 64 69 6f 20 69 63 |s which radio ic| 00007f60 6f 6e 20 28 69 66 20 61 6e 79 29 20 69 73 20 73 |on (if any) is s| 00007f70 65 6c 65 63 74 65 64 20 69 6e 20 74 68 65 20 57 |elected in the W| 00007f80 69 6e 64 6f 77 20 50 6f 73 69 74 69 6f 6e 0d 20 |indow Position. | 00007f90 4e 48 f4 20 73 65 6c 65 63 74 6f 72 20 77 69 6e |NH. selector win| 00007fa0 64 6f 77 20 61 6e 64 20 72 65 74 75 72 6e 73 20 |dow and returns | 00007fb0 74 68 65 20 61 78 69 73 20 63 6f 6f 72 64 69 6e |the axis coordin| 00007fc0 61 74 65 20 28 74 77 6f 20 63 61 6c 6c 73 20 6e |ate (two calls n| 00007fd0 65 65 64 65 64 29 0d 20 58 25 f4 20 6f 72 20 2d |eeded). X%. or -| 00007fe0 31 20 66 6f 72 20 6e 6f 20 70 6f 73 69 74 69 6f |1 for no positio| 00007ff0 6e 20 73 65 6c 65 63 74 65 64 2e 0d 20 62 3f 49 |n selected.. b?I| 00008000 63 6f 6e 3d 35 3a f5 3a 49 63 6f 6e 2b 3d 31 3a |con=5:.:Icon+=1:| 00008010 fd 20 28 a4 53 65 6c 65 63 74 65 64 53 74 61 74 |. (.SelectedStat| 00008020 65 28 4c 6f 63 2c 49 63 6f 6e 29 3d b9 29 20 84 |e(Loc,Icon)=.) .| 00008030 20 28 49 63 6f 6e 3d 33 31 29 0d 20 6c 2a e7 20 | (Icon=31). l*. | 00008040 49 63 6f 6e 3d 33 31 20 8c 20 3d 2d 31 3a f4 20 |Icon=31 . =-1:. | 00008050 41 6c 6c 20 69 63 6f 6e 73 20 64 65 73 65 6c 65 |All icons desele| 00008060 63 74 65 64 0d 20 76 34 4c 6f 63 61 74 69 6f 6e |cted. v4Location| 00008070 3d 2d 31 3a 49 63 6f 6e 2d 3d 36 3a f4 20 42 72 |=-1:Icon-=6:. Br| 00008080 69 6e 67 20 69 63 6f 6e 20 69 6e 74 6f 20 72 61 |ing icon into ra| 00008090 6e 67 65 20 30 2d 31 34 0d 20 80 0e c8 8e 20 41 |nge 0-14. .... A| 000080a0 78 69 73 24 20 ca 0d 20 8a 21 20 20 c9 20 22 58 |xis$ .. .! . "X| 000080b0 22 2c 22 78 22 3a 4c 6f 63 61 74 69 6f 6e 3d 49 |","x":Location=I| 000080c0 63 6f 6e 20 81 20 35 0d 20 94 25 20 20 c9 20 22 |con . 5. .% . "| 000080d0 59 22 2c 22 79 22 3a 4c 6f 63 61 74 69 6f 6e 3d |Y","y":Location=| 000080e0 34 2d 28 49 63 6f 6e 20 83 20 35 29 0d 20 9e 05 |4-(Icon . 5). ..| 000080f0 cb 0d 20 a8 0d 3d 4c 6f 63 61 74 69 6f 6e 0d 20 |.. ..=Location. | 00008100 b2 05 3a 0d 20 bc 17 dd 20 f2 43 6c 65 61 6e 55 |..:. ... .CleanU| 00008110 70 4c 6f 63 57 69 6e 64 6f 77 0d 20 c6 4f f4 20 |pLocWindow. .O. | 00008120 4d 61 6b 65 73 20 73 75 72 65 20 74 68 61 74 20 |Makes sure that | 00008130 6e 6f 6e 65 20 6f 66 20 74 68 65 20 27 77 69 6e |none of the 'win| 00008140 64 6f 77 27 20 69 63 6f 6e 73 20 69 6e 20 74 68 |dow' icons in th| 00008150 65 20 4c 6f 63 20 77 69 6e 64 6f 77 20 69 73 20 |e Loc window is | 00008160 73 65 6c 65 63 74 65 64 2e 0d 20 d0 09 4e 3d 35 |selected.. ..N=5| 00008170 3a f5 0d 20 da 27 4e 2b 3d 31 3a fd 20 4e 3d 33 |:.. .'N+=1:. N=3| 00008180 30 20 84 20 a4 53 65 6c 65 63 74 65 64 53 74 61 |0 . .SelectedSta| 00008190 74 65 28 4c 6f 63 2c 4e 29 0d 20 e4 20 f2 55 70 |te(Loc,N). . .Up| 000081a0 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 |dateSelectedFlag| 000081b0 28 4c 6f 63 2c 4e 2c a3 29 0d 20 ee 05 e1 0d 20 |(Loc,N,.). .... | 000081c0 f8 05 3a 0d 21 02 4f f4 20 2d 2d 2d 2d 2d 2d 2d |..:.!.O. -------| 000081d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00008210 2d 2d 0d 21 0c 2c f4 20 53 70 65 63 69 61 6c 20 |--.!.,. Special | 00008220 72 6f 75 74 69 6e 65 73 20 66 6f 72 20 74 68 69 |routines for thi| 00008230 73 20 70 72 6f 67 72 61 6d 20 6f 6e 6c 79 0d 21 |s program only.!| 00008240 16 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.O. ------------| 00008250 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00008280 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 21 20 |-------------.! | 00008290 05 3a 0d 21 2a 14 dd 20 f2 49 6e 73 74 61 6c 6c |.:.!*.. .Install| 000082a0 49 42 49 63 6f 6e 0d 21 34 1e f4 20 50 75 74 20 |IBIcon.!4.. Put | 000082b0 49 63 6f 6e 20 6f 6e 20 74 68 65 20 69 63 6f 6e |Icon on the icon| 000082c0 2d 62 61 72 0d 21 3e 0e 42 6c 6f 63 6b 21 30 3d |-bar.!>.Block!0=| 000082d0 2d 38 0d 21 48 2f 42 6c 6f 63 6b 21 34 3d 30 3a |-8.!H/Block!4=0:| 000082e0 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b 21 |Block!8=0:Block!| 000082f0 31 32 3d 37 36 3a 42 6c 6f 63 6b 21 31 36 3d 36 |12=76:Block!16=6| 00008300 38 0d 21 52 32 42 6c 6f 63 6b 21 32 30 3d 26 31 |8.!R2Block!20=&1| 00008310 37 30 30 33 30 30 32 3a 24 28 42 6c 6f 63 6b 2b |7003002:$(Block+| 00008320 32 34 29 3d 22 21 4f 6d 6e 69 44 65 73 6b 22 2b |24)="!OmniDesk"+| 00008330 bd 31 33 0d 21 5c 32 c8 99 20 22 57 69 6d 70 5f |.13.!\2.. "Wimp_| 00008340 43 72 65 61 74 65 49 63 6f 6e 22 2c 26 31 45 30 |CreateIcon",&1E0| 00008350 30 30 30 30 30 2c 42 6c 6f 63 6b 20 b8 20 49 63 |00000,Block . Ic| 00008360 6f 6e 42 61 72 0d 21 66 07 20 20 3a 0d 21 70 26 |onBar.!f. :.!p&| 00008370 f2 55 70 64 61 74 65 49 63 6f 6e 28 49 6e 66 6f |.UpdateIcon(Info| 00008380 2c 33 2c 56 65 72 73 69 6f 6e 4e 75 6d 62 65 72 |,3,VersionNumber| 00008390 24 29 0d 21 7a 49 57 61 69 74 54 6f 43 6c 6f 73 |$).!zIWaitToClos| 000083a0 65 4c 6f 61 64 69 6e 67 57 69 6e 64 6f 77 3d 33 |eLoadingWindow=3| 000083b0 3a f4 20 41 6c 6c 6f 77 73 20 65 78 74 72 61 20 |:. Allows extra | 000083c0 77 69 6d 70 20 70 6f 6c 6c 73 20 73 6f 20 74 68 |wimp polls so th| 000083d0 61 74 20 74 68 65 72 65 20 69 73 0d 21 84 4b 20 |at there is.!.K | 000083e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000083f0 20 20 20 20 20 20 20 20 20 20 f4 20 74 69 6d 65 | . time| 00008400 20 66 6f 72 20 74 68 65 20 6c 61 73 74 20 75 74 | for the last ut| 00008410 69 6c 69 74 79 20 74 6f 20 61 70 70 65 61 72 20 |ility to appear | 00008420 69 6e 20 74 68 65 0d 21 8e 30 20 20 20 20 20 20 |in the.!.0 | 00008430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00008440 20 20 20 20 20 f4 20 4c 6f 61 64 69 6e 67 20 77 | . Loading w| 00008450 69 6e 64 6f 77 2e 0d 21 98 40 f2 4d 6f 64 65 43 |indow..!.@.ModeC| 00008460 68 61 6e 67 65 3a f4 20 54 6f 20 75 70 64 61 74 |hange:. To updat| 00008470 65 20 73 70 72 69 74 65 20 69 6e 20 69 6e 66 6f |e sprite in info| 00008480 20 62 6f 78 20 61 6e 64 20 69 63 6f 6e 2d 62 61 | box and icon-ba| 00008490 72 20 69 63 6f 6e 0d 21 a2 05 e1 0d 21 ac 05 3a |r icon.!....!..:| 000084a0 0d 21 b6 22 dd 20 f2 4f 70 65 6e 4c 6f 61 64 69 |.!.". .OpenLoadi| 000084b0 6e 67 57 69 6e 64 6f 77 28 4d 65 73 73 61 67 65 |ngWindow(Message| 000084c0 24 29 0d 21 c0 17 49 6e 66 6f 53 70 72 69 74 65 |$).!..InfoSprite| 000084d0 24 3d 22 53 69 6e 66 6f 22 0d 21 ca 4b e7 20 a4 |$="Sinfo".!.K. .| 000084e0 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 46 61 |ModeInfo("YEigFa| 000084f0 63 74 6f 72 22 2c 2d 31 29 3c 3d 31 20 8c 20 49 |ctor",-1)<=1 . I| 00008500 6e 66 6f 53 70 72 69 74 65 24 2b 3d 22 32 32 22 |nfoSprite$+="22"| 00008510 20 8b 20 49 6e 66 6f 53 70 72 69 74 65 24 2b 3d | . InfoSprite$+=| 00008520 22 32 34 22 0d 21 d4 46 e7 20 a4 4d 6f 64 65 49 |"24".!.F. .ModeI| 00008530 6e 66 6f 28 22 4e 43 6f 6c 22 2c 2d 31 29 3c 3d |nfo("NCol",-1)<=| 00008540 31 35 20 8c 20 49 6e 66 6f 53 70 72 69 74 65 24 |15 . InfoSprite$| 00008550 2b 3d 22 31 36 22 20 8b 20 49 6e 66 6f 53 70 72 |+="16" . InfoSpr| 00008560 69 74 65 24 2b 3d 22 36 34 22 0d 21 de 4e 49 6e |ite$+="64".!.NIn| 00008570 66 6f 53 70 72 69 74 65 24 2b 3d 22 3b 5a 34 22 |foSprite$+=";Z4"| 00008580 3a 42 6c 6f 63 6b 21 30 3d 4c 6f 61 64 69 6e 67 |:Block!0=Loading| 00008590 3a 42 6c 6f 63 6b 21 34 3d 32 3a c8 99 20 22 57 |:Block!4=2:.. "W| 000085a0 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 |imp_GetIconState| 000085b0 22 2c 2c 42 6c 6f 63 6b 0d 21 e8 30 24 28 42 6c |",,Block.!.0$(Bl| 000085c0 6f 63 6b 21 33 32 29 3d 49 6e 66 6f 53 70 72 69 |ock!32)=InfoSpri| 000085d0 74 65 24 3a 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c |te$:Block!8=0:Bl| 000085e0 6f 63 6b 21 31 32 3d 30 0d 21 f2 21 c8 99 20 22 |ock!12=0.!.!.. "| 000085f0 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 |Wimp_SetIconStat| 00008600 65 22 2c 2c 42 6c 6f 63 6b 0d 21 fc 4d f2 55 70 |e",,Block.!.M.Up| 00008610 64 61 74 65 49 63 6f 6e 28 4c 6f 61 64 69 6e 67 |dateIcon(Loading| 00008620 2c 33 2c 22 56 65 72 73 69 6f 6e 20 22 2b c0 56 |,3,"Version "+.V| 00008630 65 72 73 69 6f 6e 4e 75 6d 62 65 72 24 2c a7 56 |ersionNumber$,.V| 00008640 65 72 73 69 6f 6e 4e 75 6d 62 65 72 24 2c 22 20 |ersionNumber$," | 00008650 22 29 2d 31 29 29 0d 22 06 23 f2 55 70 64 61 74 |")-1)).".#.Updat| 00008660 65 49 63 6f 6e 28 4c 6f 61 64 69 6e 67 2c 34 2c |eIcon(Loading,4,| 00008670 4d 65 73 73 61 67 65 24 29 0d 22 10 18 f2 4f 70 |Message$)."...Op| 00008680 65 6e 28 4c 6f 61 64 69 6e 67 2c b9 2c 32 2c 32 |en(Loading,.,2,2| 00008690 29 0d 22 1a 18 f2 4f 70 65 6e 28 4c 6f 61 64 69 |)."...Open(Loadi| 000086a0 6e 67 2c b9 2c 32 2c 32 29 0d 22 24 1e 57 61 69 |ng,.,2,2)."$.Wai| 000086b0 74 54 6f 43 6c 6f 73 65 4c 6f 61 64 69 6e 67 57 |tToCloseLoadingW| 000086c0 69 6e 64 6f 77 3d 30 0d 22 2e 05 e1 0d 22 38 05 |indow=0."...."8.| 000086d0 3a 0d 22 42 39 dd 20 f2 44 72 61 67 54 6f 49 63 |:."B9. .DragToIc| 000086e0 6f 6e 42 61 72 28 55 74 69 6c 69 74 79 2c 46 69 |onBar(Utility,Fi| 000086f0 6c 65 53 69 7a 65 2c 46 69 6c 65 54 79 70 65 2c |leSize,FileType,| 00008700 46 69 6c 65 4e 61 6d 65 24 29 0d 22 4c 10 c8 8e |FileName$)."L...| 00008710 20 55 74 69 6c 69 74 79 20 ca 0d 22 56 31 20 20 | Utility .."V1 | 00008720 c9 20 2d 31 3a f4 20 4e 6f 6e 65 3a 20 41 63 6b |. -1:. None: Ack| 00008730 6e 6f 77 6c 65 64 67 65 20 6d 65 73 73 61 67 65 |nowledge message| 00008740 20 61 6e 64 20 72 65 74 75 72 6e 0d 22 60 28 20 | and return."`( | 00008750 20 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 31 | Block!1| 00008760 32 3d 6d 79 5f 72 65 66 3a 42 6c 6f 63 6b 21 31 |2=my_ref:Block!1| 00008770 36 3d 34 0d 22 6a 4a 20 20 20 20 20 20 20 20 20 |6=4."jJ | 00008780 20 42 6c 6f 63 6b 21 33 36 3d 46 69 6c 65 53 69 | Block!36=FileSi| 00008790 7a 65 3a 42 6c 6f 63 6b 21 34 30 3d 46 69 6c 65 |ze:Block!40=File| 000087a0 54 79 70 65 3a 24 28 42 6c 6f 63 6b 2b 34 34 29 |Type:$(Block+44)| 000087b0 3d 46 69 6c 65 4e 61 6d 65 24 2b bd 30 0d 22 74 |=FileName$+.0."t| 000087c0 37 20 20 20 20 20 20 20 20 20 20 c8 99 20 22 57 |7 .. "W| 000087d0 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 |imp_SendMessage"| 000087e0 2c 31 39 2c 42 6c 6f 63 6b 2c 53 65 6e 64 65 72 |,19,Block,Sender| 000087f0 54 61 73 6b 0d 22 7e 3b 20 20 20 20 20 20 20 20 |Task."~; | 00008800 20 20 e7 20 46 69 6c 65 4e 61 6d 65 24 3d 22 3c | . FileName$="<| 00008810 57 69 6d 70 24 53 63 72 61 70 3e 22 20 8c 20 f2 |Wimp$Scrap>" . .| 00008820 44 65 6c 65 74 65 57 69 6d 70 53 63 72 61 70 0d |DeleteWimpScrap.| 00008830 22 88 24 20 20 c9 20 30 3a f4 20 4c 6f 63 61 74 |".$ . 0:. Locat| 00008840 65 20 63 61 72 65 74 20 2d 20 6e 6f 20 61 63 74 |e caret - no act| 00008850 69 6f 6e 0d 22 92 26 20 20 c9 20 31 3a f4 20 54 |ion.".& . 1:. T| 00008860 75 72 6e 20 63 61 72 65 74 20 6f 66 66 20 2d 20 |urn caret off - | 00008870 6e 6f 20 61 63 74 69 6f 6e 0d 22 9c 1a 20 20 c9 |no action.".. .| 00008880 20 32 3a f4 20 44 69 73 70 6c 61 79 20 73 70 72 | 2:. Display spr| 00008890 69 74 65 0d 22 a6 37 20 20 20 20 53 63 72 65 65 |ite.".7 Scree| 000088a0 6e 6c 6f 61 64 45 72 72 6f 72 3d a4 53 63 72 65 |nloadError=.Scre| 000088b0 65 6e 6c 6f 61 64 28 46 69 6c 65 54 79 70 65 2c |enload(FileType,| 000088c0 46 69 6c 65 4e 61 6d 65 24 29 0d 22 b0 22 20 20 |FileName$)."." | 000088d0 20 20 42 6c 6f 63 6b 21 31 32 3d 6d 79 5f 72 65 | Block!12=my_re| 000088e0 66 3a 42 6c 6f 63 6b 21 31 36 3d 34 0d 22 ba 44 |f:Block!16=4.".D| 000088f0 20 20 20 20 42 6c 6f 63 6b 21 33 36 3d 46 69 6c | Block!36=Fil| 00008900 65 53 69 7a 65 3a 42 6c 6f 63 6b 21 34 30 3d 46 |eSize:Block!40=F| 00008910 69 6c 65 54 79 70 65 3a 24 28 42 6c 6f 63 6b 2b |ileType:$(Block+| 00008920 34 34 29 3d 46 69 6c 65 4e 61 6d 65 24 2b bd 30 |44)=FileName$+.0| 00008930 0d 22 c4 31 20 20 20 20 c8 99 20 22 57 69 6d 70 |.".1 .. "Wimp| 00008940 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 39 |_SendMessage",19| 00008950 2c 42 6c 6f 63 6b 2c 53 65 6e 64 65 72 54 61 73 |,Block,SenderTas| 00008960 6b 0d 22 ce 35 20 20 20 20 e7 20 46 69 6c 65 4e |k.".5 . FileN| 00008970 61 6d 65 24 3d 22 3c 57 69 6d 70 24 53 63 72 61 |ame$="<Wimp$Scra| 00008980 70 3e 22 20 8c 20 f2 44 65 6c 65 74 65 57 69 6d |p>" . .DeleteWim| 00008990 70 53 63 72 61 70 0d 22 d8 1c 20 20 20 20 c8 8e |pScrap.".. ..| 000089a0 20 53 63 72 65 65 6e 6c 6f 61 64 45 72 72 6f 72 | ScreenloadError| 000089b0 20 ca 0d 22 e2 79 20 20 20 20 20 20 c9 20 31 3a | ..".y . 1:| 000089c0 85 20 39 39 39 39 2c 22 54 68 65 20 58 61 72 63 |. 9999,"The Xarc| 000089d0 20 6d 6f 64 75 6c 65 20 6d 75 73 74 20 62 65 20 | module must be | 000089e0 6c 6f 61 64 65 64 20 62 65 66 6f 72 65 20 74 68 |loaded before th| 000089f0 69 73 20 66 69 6c 65 20 74 79 70 65 20 63 61 6e |is file type can| 00008a00 20 62 65 20 68 61 6e 64 6c 65 64 20 62 79 20 74 | be handled by t| 00008a10 68 65 20 44 69 73 70 6c 61 79 20 73 70 72 69 74 |he Display sprit| 00008a20 65 20 75 74 69 6c 69 74 79 2e 22 0d 22 ec 57 20 |e utility.".".W | 00008a30 20 20 20 20 20 c9 20 32 3a 85 20 39 39 39 39 2c | . 2:. 9999,| 00008a40 22 54 68 65 20 44 69 73 70 6c 61 79 20 73 70 72 |"The Display spr| 00008a50 69 74 65 20 75 74 69 6c 69 74 79 20 63 61 6e 20 |ite utility can | 00008a60 6f 6e 6c 79 20 68 61 6e 64 6c 65 20 53 70 72 69 |only handle Spri| 00008a70 74 65 20 6f 72 20 58 61 72 63 20 66 69 6c 65 73 |te or Xarc files| 00008a80 2e 22 0d 22 f6 19 20 20 20 20 20 20 7f 20 f4 20 |.".".. . . | 00008a90 48 61 6e 64 6c 65 64 20 4f 4b 2e 0d 23 00 09 20 |Handled OK..#.. | 00008aa0 20 20 20 cb 0d 23 0a 07 20 20 7f 0d 23 14 1d 20 | ..#.. ..#.. | 00008ab0 20 20 20 e7 20 55 74 69 6c 69 74 69 65 73 4b 6e | . UtilitiesKn| 00008ac0 6f 77 6e 3c 3e 30 20 8c 0d 23 1e 26 20 20 20 20 |own<>0 ..#.& | 00008ad0 20 20 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 | U%=SlotEnd+(18| 00008ae0 38 2a 28 55 74 69 6c 69 74 79 2d 33 29 29 0d 23 |8*(Utility-3)).#| 00008af0 28 15 20 20 20 20 20 20 e7 20 55 25 21 30 3d 2d |(. . U%!0=-| 00008b00 31 20 8c 0d 23 32 46 20 20 20 20 20 20 20 20 f4 |1 ..#2F .| 00008b10 20 54 61 73 6b 20 6e 6f 74 20 72 75 6e 6e 69 6e | Task not runnin| 00008b20 67 20 70 65 72 6d 61 6e 65 6e 74 6c 79 2c 20 73 |g permanently, s| 00008b30 6f 20 73 74 61 72 74 20 69 74 20 75 70 20 74 65 |o start it up te| 00008b40 6d 70 6f 72 61 72 69 6c 79 0d 23 3c 26 20 20 20 |mporarily.#<& | 00008b50 20 20 20 20 20 f4 20 61 6e 64 20 62 72 6f 61 64 | . and broad| 00008b60 63 61 73 74 20 61 20 6d 65 73 73 61 67 65 3a 0d |cast a message:.| 00008b70 23 46 62 20 20 20 20 20 20 20 20 c8 99 20 22 57 |#Fb .. "W| 00008b80 69 6d 70 5f 53 74 61 72 74 54 61 73 6b 22 2c 22 |imp_StartTask","| 00008b90 52 75 6e 20 3c 4f 6d 6e 69 44 65 73 6b 24 44 69 |Run <OmniDesk$Di| 00008ba0 72 3e 2e 55 74 69 6c 69 74 69 65 73 2e 22 2b 24 |r>.Utilities."+$| 00008bb0 28 55 25 2b 32 34 29 2b 22 20 2d 45 78 69 74 2d |(U%+24)+" -Exit-| 00008bc0 4f 6d 6e 69 44 65 73 6b 22 2b c3 28 54 61 73 6b |OmniDesk"+.(Task| 00008bd0 29 0d 23 50 34 20 20 20 20 20 20 20 20 42 6c 6f |).#P4 Blo| 00008be0 63 6b 21 30 3d 32 35 36 3a 42 6c 6f 63 6b 21 31 |ck!0=256:Block!1| 00008bf0 32 3d 30 3a 42 6c 6f 63 6b 21 31 36 3d 55 74 69 |2=0:Block!16=Uti| 00008c00 6c 4f 70 65 6e 0d 23 5a 2a 20 20 20 20 20 20 20 |lOpen.#Z* | 00008c10 20 42 6c 6f 63 6b 21 32 30 3d 32 3a 24 28 42 6c | Block!20=2:$(Bl| 00008c20 6f 63 6b 2b 32 34 29 3d 24 28 55 25 2b 34 29 0d |ock+24)=$(U%+4).| 00008c30 23 64 45 20 20 20 20 20 20 20 20 42 6c 6f 63 6b |#dE Block| 00008c40 21 34 34 3d 46 69 6c 65 53 69 7a 65 3a 42 6c 6f |!44=FileSize:Blo| 00008c50 63 6b 21 34 38 3d 46 69 6c 65 54 79 70 65 3a 24 |ck!48=FileType:$| 00008c60 28 42 6c 6f 63 6b 2b 35 32 29 3d 46 69 6c 65 4e |(Block+52)=FileN| 00008c70 61 6d 65 24 0d 23 6e 2c 20 20 20 20 20 20 20 20 |ame$.#n, | 00008c80 c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 |.. "Wimp_SendMes| 00008c90 73 61 67 65 22 2c 31 38 2c 42 6c 6f 63 6b 2c 30 |sage",18,Block,0| 00008ca0 0d 23 78 0b 20 20 20 20 20 20 cc 0d 23 82 34 20 |.#x. ..#.4 | 00008cb0 20 20 20 20 20 20 20 f4 20 54 61 73 6b 20 69 73 | . Task is| 00008cc0 20 72 75 6e 6e 69 6e 67 2c 20 73 6f 20 73 65 6e | running, so sen| 00008cd0 64 20 69 74 20 61 20 6d 65 73 73 61 67 65 3a 0d |d it a message:.| 00008ce0 23 8c 34 20 20 20 20 20 20 20 20 42 6c 6f 63 6b |#.4 Block| 00008cf0 21 30 3d 32 35 36 3a 42 6c 6f 63 6b 21 31 32 3d |!0=256:Block!12=| 00008d00 30 3a 42 6c 6f 63 6b 21 31 36 3d 55 74 69 6c 4f |0:Block!16=UtilO| 00008d10 70 65 6e 0d 23 96 2a 20 20 20 20 20 20 20 20 42 |pen.#.* B| 00008d20 6c 6f 63 6b 21 32 30 3d 32 3a 24 28 42 6c 6f 63 |lock!20=2:$(Bloc| 00008d30 6b 2b 32 34 29 3d 24 28 55 25 2b 34 29 0d 23 a0 |k+24)=$(U%+4).#.| 00008d40 45 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 34 |E Block!4| 00008d50 34 3d 46 69 6c 65 53 69 7a 65 3a 42 6c 6f 63 6b |4=FileSize:Block| 00008d60 21 34 38 3d 46 69 6c 65 54 79 70 65 3a 24 28 42 |!48=FileType:$(B| 00008d70 6c 6f 63 6b 2b 35 32 29 3d 46 69 6c 65 4e 61 6d |lock+52)=FileNam| 00008d80 65 24 0d 23 aa 2f 20 20 20 20 20 20 20 20 c8 99 |e$.#./ ..| 00008d90 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 | "Wimp_SendMessa| 00008da0 67 65 22 2c 31 38 2c 42 6c 6f 63 6b 2c 55 25 21 |ge",18,Block,U%!| 00008db0 30 0d 23 b4 0b 20 20 20 20 20 20 cd 0d 23 be 09 |0.#.. ..#..| 00008dc0 20 20 20 20 cd 0d 23 c8 07 20 20 cb 0d 23 d2 05 | ..#.. ..#..| 00008dd0 e1 0d 23 dc 05 3a 0d 23 e6 1b dd 20 f2 43 61 6c |..#..:.#... .Cal| 00008de0 6c 55 74 69 6c 69 74 79 28 55 74 69 6c 69 74 79 |lUtility(Utility| 00008df0 29 0d 23 f0 31 e7 20 50 72 6f 63 65 73 73 69 6e |).#.1. Processin| 00008e00 67 50 72 65 66 73 20 8c 20 42 75 66 66 65 72 65 |gPrefs . Buffere| 00008e10 64 53 74 61 72 74 75 70 3d 55 74 69 6c 69 74 79 |dStartup=Utility| 00008e20 3a e1 0d 23 fa 10 c8 8e 20 55 74 69 6c 69 74 79 |:..#.... Utility| 00008e30 20 ca 0d 24 04 10 20 20 c9 20 2d 31 3a f4 20 4f | ..$.. . -1:. O| 00008e40 66 66 0d 24 0e 16 20 20 c9 20 30 3a f2 4c 6f 63 |ff.$.. . 0:.Loc| 00008e50 61 74 65 43 61 72 65 74 0d 24 18 27 20 20 c9 20 |ateCaret.$.' . | 00008e60 31 3a c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 |1:.. "Wimp_SetCa| 00008e70 72 65 74 50 6f 73 69 74 69 6f 6e 22 2c 2d 31 0d |retPosition",-1.| 00008e80 24 22 4c 20 20 c9 20 32 3a f2 55 70 64 61 74 65 |$"L . 2:.Update| 00008e90 49 63 6f 6e 28 44 72 6f 70 2c 32 2c 22 44 72 61 |Icon(Drop,2,"Dra| 00008ea0 67 20 61 20 73 70 72 69 74 65 20 68 65 72 65 20 |g a sprite here | 00008eb0 74 6f 20 6c 6f 61 64 20 69 74 20 74 6f 20 74 68 |to load it to th| 00008ec0 65 20 73 63 72 65 65 6e 2e 22 29 0d 24 2c 2f 20 |e screen.").$,/ | 00008ed0 20 20 20 20 20 20 20 20 f2 4f 70 65 6e 28 44 72 | .Open(Dr| 00008ee0 6f 70 2c b9 2c 32 2c 31 29 3a 44 72 6f 70 57 69 |op,.,2,1):DropWi| 00008ef0 6e 64 6f 77 55 74 69 6c 3d 32 0d 24 36 07 20 20 |ndowUtil=2.$6. | 00008f00 7f 0d 24 40 1d 20 20 20 20 e7 20 55 74 69 6c 69 |..$@. . Utili| 00008f10 74 69 65 73 4b 6e 6f 77 6e 3c 3e 30 20 8c 0d 24 |tiesKnown<>0 ..$| 00008f20 4a 26 20 20 20 20 20 20 55 25 3d 53 6c 6f 74 45 |J& U%=SlotE| 00008f30 6e 64 2b 28 31 38 38 2a 28 55 74 69 6c 69 74 79 |nd+(188*(Utility| 00008f40 2d 33 29 29 0d 24 54 19 20 20 20 20 20 20 e7 20 |-3)).$T. . | 00008f50 24 28 55 25 2b 33 35 29 3d 22 22 20 8c 0d 24 5e |$(U%+35)="" ..$^| 00008f60 2d 20 20 20 20 20 20 20 20 f4 20 4e 6f 20 53 45 |- . No SE| 00008f70 4c 45 43 54 2d 61 63 74 69 6f 6e 20 68 65 6c 70 |LECT-action help| 00008f80 20 73 75 70 70 6c 69 65 64 2e 0d 24 68 4f 20 20 | supplied..$hO | 00008f90 20 20 20 20 20 20 f4 20 54 68 69 73 20 69 6d 70 | . This imp| 00008fa0 6c 69 65 73 20 74 68 61 74 20 74 68 65 20 75 74 |lies that the ut| 00008fb0 69 6c 69 74 79 20 6f 6e 6c 79 20 61 63 63 65 70 |ility only accep| 00008fc0 74 73 20 64 72 61 67 67 65 64 20 66 69 6c 65 73 |ts dragged files| 00008fd0 2c 20 61 6e 64 20 68 61 73 0d 24 72 4d 20 20 20 |, and has.$rM | 00008fe0 20 20 20 20 20 f4 20 6e 6f 20 53 45 4c 45 43 54 | . no SELECT| 00008ff0 2d 61 63 74 69 6f 6e 2e 20 54 68 65 72 65 66 6f |-action. Therefo| 00009000 72 65 2c 20 77 65 20 6d 75 73 74 20 6f 70 65 6e |re, we must open| 00009010 20 61 20 64 72 61 67 2d 77 69 6e 64 6f 77 20 66 | a drag-window f| 00009020 6f 72 20 69 74 2e 0d 24 7c 29 20 20 20 20 20 20 |or it..$|) | 00009030 20 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 44 72 | .UpdateIcon(Dr| 00009040 6f 70 2c 32 2c 24 28 55 25 2b 31 31 32 29 29 0d |op,2,$(U%+112)).| 00009050 24 86 34 20 20 20 20 20 20 20 20 f2 4f 70 65 6e |$.4 .Open| 00009060 28 44 72 6f 70 2c b9 2c 32 2c 31 29 3a 44 72 6f |(Drop,.,2,1):Dro| 00009070 70 57 69 6e 64 6f 77 55 74 69 6c 3d 55 74 69 6c |pWindowUtil=Util| 00009080 69 74 79 0d 24 90 0b 20 20 20 20 20 20 cc 0d 24 |ity.$.. ..$| 00009090 9a 17 20 20 20 20 20 20 20 20 e7 20 55 25 21 30 |.. . U%!0| 000090a0 3d 2d 31 20 8c 0d 24 a4 48 20 20 20 20 20 20 20 |=-1 ..$.H | 000090b0 20 20 20 f4 20 54 61 73 6b 20 6e 6f 74 20 72 75 | . Task not ru| 000090c0 6e 6e 69 6e 67 20 70 65 72 6d 61 6e 65 6e 74 6c |nning permanentl| 000090d0 79 2c 20 73 6f 20 73 74 61 72 74 20 69 74 20 75 |y, so start it u| 000090e0 70 20 74 65 6d 70 6f 72 61 72 69 6c 79 0d 24 ae |p temporarily.$.| 000090f0 28 20 20 20 20 20 20 20 20 20 20 f4 20 61 6e 64 |( . and| 00009100 20 62 72 6f 61 64 63 61 73 74 20 61 20 6d 65 73 | broadcast a mes| 00009110 73 61 67 65 3a 0d 24 b8 64 20 20 20 20 20 20 20 |sage:.$.d | 00009120 20 20 20 c8 99 20 22 57 69 6d 70 5f 53 74 61 72 | .. "Wimp_Star| 00009130 74 54 61 73 6b 22 2c 22 52 75 6e 20 3c 4f 6d 6e |tTask","Run <Omn| 00009140 69 44 65 73 6b 24 44 69 72 3e 2e 55 74 69 6c 69 |iDesk$Dir>.Utili| 00009150 74 69 65 73 2e 22 2b 24 28 55 25 2b 32 34 29 2b |ties."+$(U%+24)+| 00009160 22 20 2d 45 78 69 74 2d 4f 6d 6e 69 44 65 73 6b |" -Exit-OmniDesk| 00009170 22 2b c3 28 54 61 73 6b 29 0d 24 c2 35 20 20 20 |"+.(Task).$.5 | 00009180 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 30 3d 34 | Block!0=4| 00009190 34 3a 42 6c 6f 63 6b 21 31 32 3d 30 3a 42 6c 6f |4:Block!12=0:Blo| 000091a0 63 6b 21 31 36 3d 55 74 69 6c 4f 70 65 6e 0d 24 |ck!16=UtilOpen.$| 000091b0 cc 2c 20 20 20 20 20 20 20 20 20 20 42 6c 6f 63 |., Bloc| 000091c0 6b 21 32 30 3d 34 3a 24 28 42 6c 6f 63 6b 2b 32 |k!20=4:$(Block+2| 000091d0 34 29 3d 24 28 55 25 2b 34 29 0d 24 d6 2e 20 20 |4)=$(U%+4).$.. | 000091e0 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 | .. "Wimp| 000091f0 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 |_SendMessage",17| 00009200 2c 42 6c 6f 63 6b 2c 30 0d 24 e0 0d 20 20 20 20 |,Block,0.$.. | 00009210 20 20 20 20 cc 0d 24 ea 36 20 20 20 20 20 20 20 | ..$.6 | 00009220 20 20 20 f4 20 54 61 73 6b 20 69 73 20 72 75 6e | . Task is run| 00009230 6e 69 6e 67 2c 20 73 6f 20 73 65 6e 64 20 69 74 |ning, so send it| 00009240 20 61 20 6d 65 73 73 61 67 65 3a 0d 24 f4 35 20 | a message:.$.5 | 00009250 20 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 30 | Block!0| 00009260 3d 34 34 3a 42 6c 6f 63 6b 21 31 32 3d 30 3a 42 |=44:Block!12=0:B| 00009270 6c 6f 63 6b 21 31 36 3d 55 74 69 6c 4f 70 65 6e |lock!16=UtilOpen| 00009280 0d 24 fe 2c 20 20 20 20 20 20 20 20 20 20 42 6c |.$., Bl| 00009290 6f 63 6b 21 32 30 3d 34 3a 24 28 42 6c 6f 63 6b |ock!20=4:$(Block| 000092a0 2b 32 34 29 3d 24 28 55 25 2b 34 29 0d 25 08 31 |+24)=$(U%+4).%.1| 000092b0 20 20 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 | .. "Wi| 000092c0 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c |mp_SendMessage",| 000092d0 31 37 2c 42 6c 6f 63 6b 2c 55 25 21 30 0d 25 12 |17,Block,U%!0.%.| 000092e0 0d 20 20 20 20 20 20 20 20 cd 0d 25 1c 0b 20 20 |. ..%.. | 000092f0 20 20 20 20 cd 0d 25 26 09 20 20 20 20 cd 0d 25 | ..%&. ..%| 00009300 30 05 cb 0d 25 3a 05 e1 0d 25 44 05 3a 0d 25 4e |0...%:...%D.:.%N| 00009310 25 dd 20 a4 53 63 72 65 65 6e 6c 6f 61 64 28 46 |%. .Screenload(F| 00009320 69 6c 65 54 79 70 65 2c 46 69 6c 65 4e 61 6d 65 |ileType,FileName| 00009330 24 29 0d 25 58 15 53 63 72 65 65 6e 6c 6f 61 64 |$).%X.Screenload| 00009340 45 72 72 6f 72 3d 30 0d 25 62 15 e7 20 46 69 6c |Error=0.%b.. Fil| 00009350 65 54 79 70 65 3d 26 46 46 39 20 8c 0d 25 6c 1f |eType=&FF9 ..%l.| 00009360 20 20 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 31 | .. "OS_Byte",1| 00009370 33 35 20 b8 20 2c 2c 6d 6f 64 65 0d 25 76 22 20 |35 . ,,mode.%v" | 00009380 20 ff 28 22 53 63 72 65 65 6e 6c 6f 61 64 20 22 | .("Screenload "| 00009390 2b 46 69 6c 65 4e 61 6d 65 24 29 3a 87 0d 25 80 |+FileName$):..%.| 000093a0 07 20 20 f5 0d 25 8a 1f 20 20 20 20 c8 99 20 22 |. ..%.. .. "| 000093b0 4f 53 5f 42 79 74 65 22 2c 31 32 31 2c 30 20 b8 |OS_Byte",121,0 .| 000093c0 20 2c 41 0d 25 94 0e 20 20 fd 20 41 3c 3e 26 46 | ,A.%.. . A<>&F| 000093d0 46 0d 25 9e 1c 20 20 c8 99 20 22 57 69 6d 70 5f |F.%.. .. "Wimp_| 000093e0 53 65 74 4d 6f 64 65 22 2c 6d 6f 64 65 0d 25 a8 |SetMode",mode.%.| 000093f0 12 20 20 ff 28 22 46 58 20 31 35 2c 30 22 29 0d |. .("FX 15,0").| 00009400 25 b2 05 cc 0d 25 bc 17 20 20 e7 20 46 69 6c 65 |%....%.. . File| 00009410 54 79 70 65 3d 26 44 45 32 20 8c 0d 25 c6 17 20 |Type=&DE2 ..%.. | 00009420 20 20 20 e7 20 a4 45 6e 73 75 72 65 58 61 72 63 | . .EnsureXarc| 00009430 20 8c 0d 25 d0 23 20 20 20 20 20 20 c8 99 20 22 | ..%.# .. "| 00009440 4f 53 5f 42 79 74 65 22 2c 31 33 35 20 b8 20 2c |OS_Byte",135 . ,| 00009450 2c 6d 6f 64 65 0d 25 da 24 20 20 20 20 20 20 ff |,mode.%.$ .| 00009460 28 22 58 61 72 63 4c 6f 61 64 20 22 2b 46 69 6c |("XarcLoad "+Fil| 00009470 65 4e 61 6d 65 24 29 3a 87 0d 25 e4 0b 20 20 20 |eName$):..%.. | 00009480 20 20 20 f5 0d 25 ee 23 20 20 20 20 20 20 20 20 | ..%.# | 00009490 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 31 32 31 |.. "OS_Byte",121| 000094a0 2c 30 20 b8 20 2c 41 0d 25 f8 12 20 20 20 20 20 |,0 . ,A.%.. | 000094b0 20 fd 20 41 3c 3e 26 46 46 0d 26 02 20 20 20 20 | . A<>&FF.&. | 000094c0 20 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 4d | .. "Wimp_SetM| 000094d0 6f 64 65 22 2c 6d 6f 64 65 0d 26 0c 16 20 20 20 |ode",mode.&.. | 000094e0 20 20 20 ff 28 22 46 58 20 31 35 2c 30 22 29 0d | .("FX 15,0").| 000094f0 26 16 09 20 20 20 20 cc 0d 26 20 1b 20 20 20 20 |&.. ..& . | 00009500 20 20 53 63 72 65 65 6e 6c 6f 61 64 45 72 72 6f | ScreenloadErro| 00009510 72 3d 31 0d 26 2a 09 20 20 20 20 cd 0d 26 34 07 |r=1.&*. ..&4.| 00009520 20 20 cc 0d 26 3e 19 20 20 20 20 53 63 72 65 65 | ..&>. Scree| 00009530 6e 6c 6f 61 64 45 72 72 6f 72 3d 32 0d 26 48 07 |nloadError=2.&H.| 00009540 20 20 cd 0d 26 52 05 cd 0d 26 5c 14 3d 53 63 72 | ..&R...&\.=Scr| 00009550 65 65 6e 6c 6f 61 64 45 72 72 6f 72 0d 26 66 05 |eenloadError.&f.| 00009560 3a 0d 26 70 11 dd 20 a4 45 6e 73 75 72 65 58 61 |:.&p.. .EnsureXa| 00009570 72 63 0d 26 7a 17 2a 53 65 74 20 58 61 72 63 24 |rc.&z.*Set Xarc$| 00009580 50 72 65 73 65 6e 74 20 31 0d 26 84 27 2a 52 4d |Present 1.&.'*RM| 00009590 45 6e 73 75 72 65 20 58 61 72 63 20 30 20 53 65 |Ensure Xarc 0 Se| 000095a0 74 20 58 61 72 63 24 50 72 65 73 65 6e 74 20 30 |t Xarc$Present 0| 000095b0 0d 26 8e 2f c8 99 20 22 4f 53 5f 52 65 61 64 56 |.&./.. "OS_ReadV| 000095c0 61 72 56 61 6c 22 2c 22 58 61 72 63 24 50 72 65 |arVal","Xarc$Pre| 000095d0 73 65 6e 74 22 2c 42 6c 6f 63 6b 2c 32 35 36 0d |sent",Block,256.| 000095e0 26 98 17 2a 55 6e 53 65 74 20 58 61 72 63 24 50 |&..*UnSet Xarc$P| 000095f0 72 65 73 65 6e 74 0d 26 a2 19 e7 20 42 6c 6f 63 |resent.&... Bloc| 00009600 6b 3f 30 3d 97 28 22 31 22 29 20 8c 20 3d b9 0d |k?0=.("1") . =..| 00009610 26 ac 06 3d a3 0d 26 b6 05 3a 0d 26 c0 12 dd 20 |&..=..&..:.&... | 00009620 f2 4c 6f 63 61 74 65 43 61 72 65 74 0d 26 ca 2c |.LocateCaret.&.,| 00009630 f4 20 49 73 20 63 61 72 65 74 20 61 63 74 69 76 |. Is caret activ| 00009640 65 3f 20 28 69 2e 65 2e 20 61 6e 20 69 6e 70 75 |e? (i.e. an inpu| 00009650 74 20 66 6f 63 75 73 29 0d 26 d4 25 c8 99 20 22 |t focus).&.%.. "| 00009660 57 69 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 |Wimp_GetCaretPos| 00009670 69 74 69 6f 6e 22 2c 2c 43 61 72 65 74 0d 26 de |ition",,Caret.&.| 00009680 17 e7 20 43 61 72 65 74 21 30 3c 30 20 8c 20 ef |.. Caret!0<0 . .| 00009690 20 37 3a e1 0d 26 e8 2b f4 20 59 65 73 2c 20 73 | 7:..&.+. Yes, s| 000096a0 6f 20 6f 70 65 6e 20 69 74 73 20 77 69 6e 64 6f |o open its windo| 000096b0 77 20 61 74 20 74 68 65 20 66 72 6f 6e 74 2e 0d |w at the front..| 000096c0 26 f2 13 42 6c 6f 63 6b 21 30 3d 43 61 72 65 74 |&..Block!0=Caret| 000096d0 21 30 0d 26 fc 23 c8 99 20 22 57 69 6d 70 5f 47 |!0.&.#.. "Wimp_G| 000096e0 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 000096f0 42 6c 6f 63 6b 0d 27 06 17 53 63 72 6f 6c 6c 48 |Block.'..ScrollH| 00009700 3d 30 3a 53 63 72 6f 6c 6c 56 3d 30 0d 27 10 34 |=0:ScrollV=0.'.4| 00009710 f4 20 43 61 6c 63 75 6c 61 74 65 20 69 66 20 77 |. Calculate if w| 00009720 65 20 6e 65 65 64 20 74 6f 20 73 65 6e 64 20 61 |e need to send a| 00009730 20 73 63 72 6f 6c 6c 20 72 65 71 75 65 73 74 3a | scroll request:| 00009740 0d 27 1a 2d e7 20 43 61 72 65 74 21 38 3e 28 28 |.'.-. Caret!8>((| 00009750 42 6c 6f 63 6b 21 31 32 2d 42 6c 6f 63 6b 21 34 |Block!12-Block!4| 00009760 29 2b 42 6c 6f 63 6b 21 32 30 29 20 8c 0d 27 24 |)+Block!20) ..'$| 00009770 4e 20 20 53 63 72 6f 6c 6c 48 3d 31 2b 28 28 43 |N ScrollH=1+((C| 00009780 61 72 65 74 21 38 2d 28 28 42 6c 6f 63 6b 21 31 |aret!8-((Block!1| 00009790 32 2d 42 6c 6f 63 6b 21 34 29 2b 42 6c 6f 63 6b |2-Block!4)+Block| 000097a0 21 32 30 29 29 20 81 20 28 42 6c 6f 63 6b 21 31 |!20)) . (Block!1| 000097b0 32 2d 42 6c 6f 63 6b 21 34 29 29 0d 27 2e 05 cc |2-Block!4)).'...| 000097c0 0d 27 38 4f 20 20 e7 20 43 61 72 65 74 21 38 3c |.'8O . Caret!8<| 000097d0 42 6c 6f 63 6b 21 32 30 20 8c 20 53 63 72 6f 6c |Block!20 . Scrol| 000097e0 6c 48 3d 2d 31 2d 28 28 42 6c 6f 63 6b 21 32 30 |lH=-1-((Block!20| 000097f0 2d 43 61 72 65 74 21 38 29 20 81 20 28 42 6c 6f |-Caret!8) . (Blo| 00009800 63 6b 21 31 32 2d 42 6c 6f 63 6b 21 34 29 29 0d |ck!12-Block!4)).| 00009810 27 42 05 cd 0d 27 4c 4c e7 20 28 43 61 72 65 74 |'B...'LL. (Caret| 00009820 21 31 32 29 2b 28 28 43 61 72 65 74 3f 31 36 2b |!12)+((Caret?16+| 00009830 32 35 36 2a 43 61 72 65 74 3f 31 37 29 2f 32 29 |256*Caret?17)/2)| 00009840 3c 28 28 42 6c 6f 63 6b 21 38 2d 42 6c 6f 63 6b |<((Block!8-Block| 00009850 21 31 36 29 2b 42 6c 6f 63 6b 21 32 34 29 20 8c |!16)+Block!24) .| 00009860 0d 27 56 70 20 20 53 63 72 6f 6c 6c 56 3d 2d 31 |.'Vp ScrollV=-1| 00009870 2d 28 28 28 28 43 61 72 65 74 21 31 32 29 2b 28 |-((((Caret!12)+(| 00009880 28 43 61 72 65 74 3f 31 36 2b 32 35 36 2a 43 61 |(Caret?16+256*Ca| 00009890 72 65 74 3f 31 37 29 2f 32 29 29 2d 28 28 42 6c |ret?17)/2))-((Bl| 000098a0 6f 63 6b 21 38 2d 42 6c 6f 63 6b 21 31 36 29 2b |ock!8-Block!16)+| 000098b0 42 6c 6f 63 6b 21 32 34 29 29 20 81 20 28 42 6c |Block!24)) . (Bl| 000098c0 6f 63 6b 21 38 2d 42 6c 6f 63 6b 21 31 36 29 29 |ock!8-Block!16))| 000098d0 0d 27 60 05 cc 0d 27 6a 8e 20 20 e7 20 28 43 61 |.'`...'j. . (Ca| 000098e0 72 65 74 21 31 32 29 2b 28 28 43 61 72 65 74 3f |ret!12)+((Caret?| 000098f0 31 36 2b 32 35 36 2a 43 61 72 65 74 3f 31 37 29 |16+256*Caret?17)| 00009900 2f 32 29 3e 42 6c 6f 63 6b 21 32 34 20 8c 20 53 |/2)>Block!24 . S| 00009910 63 72 6f 6c 6c 56 3d 31 2b 28 28 42 6c 6f 63 6b |crollV=1+((Block| 00009920 21 32 34 2d 28 28 43 61 72 65 74 21 31 32 29 2b |!24-((Caret!12)+| 00009930 28 28 43 61 72 65 74 3f 31 36 2b 32 35 36 2a 43 |((Caret?16+256*C| 00009940 61 72 65 74 3f 31 37 29 2f 32 29 29 29 20 81 20 |aret?17)/2))) . | 00009950 28 42 6c 6f 63 6b 21 38 2d 42 6c 6f 63 6b 21 31 |(Block!8-Block!1| 00009960 36 29 29 0d 27 74 05 cd 0d 27 7e 1f 42 6c 6f 63 |6)).'t...'~.Bloc| 00009970 6b 21 32 38 3d 2d 31 3a f4 20 57 69 6e 64 6f 77 |k!28=-1:. Window| 00009980 20 74 6f 20 74 6f 70 0d 27 88 41 e7 20 53 63 72 | to top.'.A. Scr| 00009990 6f 6c 6c 48 3c 3e 30 20 8c 20 42 6c 6f 63 6b 21 |ollH<>0 . Block!| 000099a0 32 30 3d 42 6c 6f 63 6b 21 32 30 2b 28 53 63 72 |20=Block!20+(Scr| 000099b0 6f 6c 6c 48 2a 28 42 6c 6f 63 6b 21 31 32 2d 42 |ollH*(Block!12-B| 000099c0 6c 6f 63 6b 21 34 29 29 0d 27 92 41 e7 20 53 63 |lock!4)).'.A. Sc| 000099d0 72 6f 6c 6c 56 3c 3e 30 20 8c 20 42 6c 6f 63 6b |rollV<>0 . Block| 000099e0 21 32 34 3d 42 6c 6f 63 6b 21 32 34 2b 28 53 63 |!24=Block!24+(Sc| 000099f0 72 6f 6c 6c 56 2a 28 42 6c 6f 63 6b 21 31 36 2d |rollV*(Block!16-| 00009a00 42 6c 6f 63 6b 21 38 29 29 0d 27 9c 29 c8 99 20 |Block!8)).'.).. | 00009a10 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 |"Wimp_SendMessag| 00009a20 65 22 2c 32 2c 42 6c 6f 63 6b 2c 42 6c 6f 63 6b |e",2,Block,Block| 00009a30 21 30 0d 27 a6 51 c8 99 20 22 57 69 6d 70 5f 53 |!0.'.Q.. "Wimp_S| 00009a40 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e 22 |etCaretPosition"| 00009a50 2c 43 61 72 65 74 21 30 2c 43 61 72 65 74 21 34 |,Caret!0,Caret!4| 00009a60 2c 43 61 72 65 74 21 38 2c 43 61 72 65 74 21 31 |,Caret!8,Caret!1| 00009a70 32 2c 43 61 72 65 74 21 31 36 2c 43 61 72 65 74 |2,Caret!16,Caret| 00009a80 21 32 30 0d 27 b0 4e f4 20 54 68 65 20 73 65 74 |!20.'.N. The set| 00009a90 20 63 61 72 65 74 20 6c 69 6e 65 20 61 62 6f 76 | caret line abov| 00009aa0 65 20 69 73 20 69 6e 63 6c 75 64 65 64 20 69 6e |e is included in| 00009ab0 20 63 61 73 65 20 69 74 20 68 65 6c 70 73 20 74 | case it helps t| 00009ac0 68 65 20 74 61 73 6b 20 74 6f 20 75 70 64 61 74 |he task to updat| 00009ad0 65 0d 27 ba 42 f4 20 69 74 73 20 77 69 6e 64 6f |e.'.B. its windo| 00009ae0 77 20 63 6f 72 72 65 63 74 6c 79 20 28 65 2e 67 |w correctly (e.g| 00009af0 2e 20 66 6f 72 20 74 61 73 6b 73 20 77 69 74 68 |. for tasks with| 00009b00 20 63 6f 6d 70 6f 75 6e 64 20 77 69 6e 64 6f 77 | compound window| 00009b10 73 29 2e 0d 27 c4 30 f4 20 49 73 20 63 61 72 65 |s)..'.0. Is care| 00009b20 74 20 70 72 65 73 65 6e 74 20 69 6e 20 69 6e 70 |t present in inp| 00009b30 75 74 20 66 6f 63 75 73 20 77 69 6e 64 6f 77 3f |ut focus window?| 00009b40 20 3a 2d 0d 27 ce 5d e7 20 28 43 61 72 65 74 21 | :-.'.]. (Caret!| 00009b50 34 3d 2d 31 20 80 20 43 61 72 65 74 21 38 3d 30 |4=-1 . Caret!8=0| 00009b60 20 80 20 43 61 72 65 74 21 31 32 3d 30 29 20 8c | . Caret!12=0) .| 00009b70 20 5a 6f 6f 6d 69 6e 67 3d a3 3a 8b 20 5a 6f 6f | Zooming=.:. Zoo| 00009b80 6d 69 6e 67 3d b9 3a 70 6f 6c 6c 74 69 6d 65 25 |ming=.:polltime%| 00009b90 3d 30 3a f4 20 44 6f 6e 27 74 20 70 61 75 73 65 |=0:. Don't pause| 00009ba0 0d 27 d8 05 e1 0d 27 e2 05 3a 0d 27 ec 12 dd 20 |.'....'..:.'... | 00009bb0 f2 5a 6f 6f 6d 50 6f 69 6e 74 65 72 0d 27 f6 3c |.ZoomPointer.'.<| 00009bc0 f4 20 52 65 61 64 20 63 61 72 65 74 20 61 6e 64 |. Read caret and| 00009bd0 20 70 6f 69 6e 74 65 72 20 70 6f 73 69 74 69 6f | pointer positio| 00009be0 6e 73 2c 20 74 68 65 6e 20 75 6e 6c 69 6e 6b 20 |ns, then unlink | 00009bf0 70 6f 69 6e 74 65 72 3a 0d 28 00 43 58 70 69 78 |pointer:.(.CXpix| 00009c00 65 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 58 |els=.ModeInfo("X| 00009c10 50 69 78 65 6c 73 22 2c 2d 31 29 3a 59 70 69 78 |Pixels",-1):Ypix| 00009c20 65 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 59 |els=.ModeInfo("Y| 00009c30 50 69 78 65 6c 73 22 2c 2d 31 29 0d 28 0a 4f 58 |Pixels",-1).(.OX| 00009c40 45 69 67 46 61 63 74 6f 72 3d a4 4d 6f 64 65 49 |EigFactor=.ModeI| 00009c50 6e 66 6f 28 22 58 45 69 67 46 61 63 74 6f 72 22 |nfo("XEigFactor"| 00009c60 2c 2d 31 29 3a 59 45 69 67 46 61 63 74 6f 72 3d |,-1):YEigFactor=| 00009c70 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 46 |.ModeInfo("YEigF| 00009c80 61 63 74 6f 72 22 2c 2d 31 29 0d 28 14 25 c8 99 |actor",-1).(.%..| 00009c90 20 22 57 69 6d 70 5f 47 65 74 43 61 72 65 74 50 | "Wimp_GetCaretP| 00009ca0 6f 73 69 74 69 6f 6e 22 2c 2c 43 61 72 65 74 0d |osition",,Caret.| 00009cb0 28 1e 13 42 6c 6f 63 6b 21 30 3d 43 61 72 65 74 |(..Block!0=Caret| 00009cc0 21 30 0d 28 28 23 c8 99 20 22 57 69 6d 70 5f 47 |!0.((#.. "Wimp_G| 00009cd0 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 00009ce0 42 6c 6f 63 6b 0d 28 32 34 43 58 3d 28 42 6c 6f |Block.(24CX=(Blo| 00009cf0 63 6b 21 34 2b 28 43 61 72 65 74 21 38 2d 42 6c |ck!4+(Caret!8-Bl| 00009d00 6f 63 6b 21 32 30 29 29 2b 28 32 2a 32 5e 58 45 |ock!20))+(2*2^XE| 00009d10 69 67 46 61 63 74 6f 72 29 0d 28 3c 41 43 59 3d |igFactor).(<ACY=| 00009d20 28 42 6c 6f 63 6b 21 31 36 2b 28 43 61 72 65 74 |(Block!16+(Caret| 00009d30 21 31 32 2d 42 6c 6f 63 6b 21 32 34 29 29 2b 28 |!12-Block!24))+(| 00009d40 28 43 61 72 65 74 3f 31 36 2b 32 35 36 2a 43 61 |(Caret?16+256*Ca| 00009d50 72 65 74 3f 31 37 29 2f 32 29 0d 28 46 11 e7 20 |ret?17)/2).(F.. | 00009d60 43 58 3c 30 20 8c 20 43 58 3d 30 0d 28 50 1d e7 |CX<0 . CX=0.(P..| 00009d70 20 43 58 3c 42 6c 6f 63 6b 21 34 20 8c 20 43 58 | CX<Block!4 . CX| 00009d80 3d 42 6c 6f 63 6b 21 34 0d 28 5a 3f e7 20 43 58 |=Block!4.(Z?. CX| 00009d90 3e 28 58 70 69 78 65 6c 73 2d 31 29 2a 28 32 5e |>(Xpixels-1)*(2^| 00009da0 58 45 69 67 46 61 63 74 6f 72 29 20 8c 20 43 58 |XEigFactor) . CX| 00009db0 3d 58 70 69 78 65 6c 73 2a 28 32 5e 58 45 69 67 |=Xpixels*(2^XEig| 00009dc0 46 61 63 74 6f 72 29 0d 28 64 1f e7 20 43 58 3e |Factor).(d.. CX>| 00009dd0 42 6c 6f 63 6b 21 31 32 20 8c 20 43 58 3d 42 6c |Block!12 . CX=Bl| 00009de0 6f 63 6b 21 31 32 0d 28 6e 11 e7 20 43 59 3c 30 |ock!12.(n.. CY<0| 00009df0 20 8c 20 43 59 3d 30 0d 28 78 1d e7 20 43 59 3c | . CY=0.(x.. CY<| 00009e00 42 6c 6f 63 6b 21 38 20 8c 20 43 59 3d 42 6c 6f |Block!8 . CY=Blo| 00009e10 63 6b 21 38 0d 28 82 3f e7 20 43 59 3e 28 59 70 |ck!8.(.?. CY>(Yp| 00009e20 69 78 65 6c 73 2d 31 29 2a 28 32 5e 59 45 69 67 |ixels-1)*(2^YEig| 00009e30 46 61 63 74 6f 72 29 20 8c 20 43 59 3d 59 70 69 |Factor) . CY=Ypi| 00009e40 78 65 6c 73 2a 28 32 5e 59 45 69 67 46 61 63 74 |xels*(2^YEigFact| 00009e50 6f 72 29 0d 28 8c 1f e7 20 43 59 3e 42 6c 6f 63 |or).(... CY>Bloc| 00009e60 6b 21 31 36 20 8c 20 43 59 3d 42 6c 6f 63 6b 21 |k!16 . CY=Block!| 00009e70 31 36 0d 28 96 0d 42 6c 6f 63 6b 21 30 3d 36 0d |16.(..Block!0=6.| 00009e80 28 a0 19 c8 99 20 22 4f 53 5f 57 6f 72 64 22 2c |(.... "OS_Word",| 00009e90 32 31 2c 42 6c 6f 63 6b 0d 28 aa 1a 4d 58 3d 42 |21,Block.(..MX=B| 00009ea0 6c 6f 63 6b 3f 31 2b 32 35 36 2a 42 6c 6f 63 6b |lock?1+256*Block| 00009eb0 3f 32 0d 28 b4 1a 4d 59 3d 42 6c 6f 63 6b 3f 33 |?2.(..MY=Block?3| 00009ec0 2b 32 35 36 2a 42 6c 6f 63 6b 3f 34 0d 28 be 18 |+256*Block?4.(..| 00009ed0 c8 99 20 22 4f 53 5f 42 79 74 65 22 2c 31 30 36 |.. "OS_Byte",106| 00009ee0 2c 26 38 31 0d 28 c8 48 f4 20 4d 6f 76 65 20 74 |,&81.(.H. Move t| 00009ef0 68 65 20 70 6f 69 6e 74 65 72 20 74 6f 20 74 68 |he pointer to th| 00009f00 65 20 63 61 72 65 74 20 70 6f 73 69 74 69 6f 6e |e caret position| 00009f10 20 28 63 65 6e 74 72 65 20 72 69 67 68 74 20 6f | (centre right o| 00009f20 66 20 74 68 65 20 73 74 65 6d 29 3a 0d 28 d2 19 |f the stem):.(..| 00009f30 e7 20 94 28 4d 58 2d 43 58 29 3e 94 28 4d 59 2d |. .(MX-CX)>.(MY-| 00009f40 43 59 29 20 8c 0d 28 dc 09 20 20 58 3d 31 0d 28 |CY) ..(.. X=1.(| 00009f50 e6 10 20 20 54 3d 94 28 4d 58 2d 43 58 29 0d 28 |.. T=.(MX-CX).(| 00009f60 f0 35 20 20 e7 20 28 4d 58 2d 43 58 29 3d 30 20 |.5 . (MX-CX)=0 | 00009f70 8c 20 54 3d 94 28 4d 59 2d 43 59 29 3a 58 3d 30 |. T=.(MY-CY):X=0| 00009f80 3a 59 3d 54 3a 8b 20 59 3d 94 28 4d 59 2d 43 59 |:Y=T:. Y=.(MY-CY| 00009f90 29 2f 54 0d 28 fa 05 cc 0d 29 04 09 20 20 59 3d |)/T.(....).. Y=| 00009fa0 31 0d 29 0e 10 20 20 54 3d 94 28 4d 59 2d 43 59 |1.).. T=.(MY-CY| 00009fb0 29 0d 29 18 35 20 20 e7 20 28 4d 59 2d 43 59 29 |).).5 . (MY-CY)| 00009fc0 3d 30 20 8c 20 54 3d 94 28 4d 58 2d 43 58 29 3a |=0 . T=.(MX-CX):| 00009fd0 59 3d 30 3a 58 3d 54 3a 8b 20 58 3d 94 28 4d 58 |Y=0:X=T:. X=.(MX| 00009fe0 2d 43 58 29 2f 54 0d 29 22 05 cd 0d 29 2c 14 e7 |-CX)/T.)"...),..| 00009ff0 20 4d 58 2d 43 58 3c 30 20 8c 20 58 3d 2d 58 0d | MX-CX<0 . X=-X.| 0000a000 29 36 14 e7 20 4d 59 2d 43 59 3c 30 20 8c 20 59 |)6.. MY-CY<0 . Y| 0000a010 3d 2d 59 0d 29 40 0d 42 6c 6f 63 6b 3f 30 3d 35 |=-Y.)@.Block?0=5| 0000a020 0d 29 4a 0d e3 20 4e 3d 31 20 b8 20 54 0d 29 54 |.)J.. N=1 . T.)T| 0000a030 11 20 20 4d 58 2d 3d 58 3a 4d 59 2d 3d 59 0d 29 |. MX-=X:MY-=Y.)| 0000a040 5e 17 20 20 e7 20 4d 58 3c 30 20 8c 20 4d 58 3d |^. . MX<0 . MX=| 0000a050 30 3a 58 3d 30 0d 29 68 45 20 20 e7 20 4d 58 3e |0:X=0.)hE . MX>| 0000a060 28 58 70 69 78 65 6c 73 2d 31 29 2a 28 32 5e 58 |(Xpixels-1)*(2^X| 0000a070 45 69 67 46 61 63 74 6f 72 29 20 8c 20 4d 58 3d |EigFactor) . MX=| 0000a080 58 70 69 78 65 6c 73 2a 28 32 5e 58 45 69 67 46 |Xpixels*(2^XEigF| 0000a090 61 63 74 6f 72 29 3a 58 3d 30 0d 29 72 17 20 20 |actor):X=0.)r. | 0000a0a0 e7 20 4d 59 3c 30 20 8c 20 4d 59 3d 30 3a 59 3d |. MY<0 . MY=0:Y=| 0000a0b0 30 0d 29 7c 45 20 20 e7 20 4d 59 3e 28 59 70 69 |0.)|E . MY>(Ypi| 0000a0c0 78 65 6c 73 2d 31 29 2a 28 32 5e 59 45 69 67 46 |xels-1)*(2^YEigF| 0000a0d0 61 63 74 6f 72 29 20 8c 20 4d 59 3d 59 70 69 78 |actor) . MY=Ypix| 0000a0e0 65 6c 73 2a 28 32 5e 59 45 69 67 46 61 63 74 6f |els*(2^YEigFacto| 0000a0f0 72 29 3a 59 3d 30 0d 29 86 27 20 20 42 6c 6f 63 |r):Y=0.).' Bloc| 0000a100 6b 3f 32 3d 4d 58 20 81 20 32 35 36 3a 42 6c 6f |k?2=MX . 256:Blo| 0000a110 63 6b 3f 31 3d 4d 58 20 83 20 32 35 36 0d 29 90 |ck?1=MX . 256.).| 0000a120 27 20 20 42 6c 6f 63 6b 3f 34 3d 4d 59 20 81 20 |' Block?4=MY . | 0000a130 32 35 36 3a 42 6c 6f 63 6b 3f 33 3d 4d 59 20 83 |256:Block?3=MY .| 0000a140 20 32 35 36 0d 29 9a 1b 20 20 c8 99 20 22 4f 53 | 256.).. .. "OS| 0000a150 5f 57 6f 72 64 22 2c 32 31 2c 42 6c 6f 63 6b 0d |_Word",21,Block.| 0000a160 29 a4 05 ed 0d 29 ae 25 42 6c 6f 63 6b 3f 32 3d |)....).%Block?2=| 0000a170 43 58 20 81 20 32 35 36 3a 42 6c 6f 63 6b 3f 31 |CX . 256:Block?1| 0000a180 3d 43 58 20 83 20 32 35 36 0d 29 b8 25 42 6c 6f |=CX . 256.).%Blo| 0000a190 63 6b 3f 34 3d 43 59 20 81 20 32 35 36 3a 42 6c |ck?4=CY . 256:Bl| 0000a1a0 6f 63 6b 3f 33 3d 43 59 20 83 20 32 35 36 0d 29 |ock?3=CY . 256.)| 0000a1b0 c2 19 c8 99 20 22 4f 53 5f 57 6f 72 64 22 2c 32 |.... "OS_Word",2| 0000a1c0 31 2c 42 6c 6f 63 6b 0d 29 cc 23 42 6c 6f 63 6b |1,Block.).#Block| 0000a1d0 3f 30 3d 33 3a c8 99 20 22 4f 53 5f 57 6f 72 64 |?0=3:.. "OS_Word| 0000a1e0 22 2c 32 31 2c 42 6c 6f 63 6b 0d 29 d6 1e f4 20 |",21,Block.)... | 0000a1f0 52 65 6a 6f 69 6e 20 6d 6f 75 73 65 20 61 6e 64 |Rejoin mouse and| 0000a200 20 70 6f 69 6e 74 65 72 0d 29 e0 16 c8 99 20 22 | pointer.).... "| 0000a210 4f 53 5f 42 79 74 65 22 2c 31 30 36 2c 31 0d 29 |OS_Byte",106,1.)| 0000a220 ea 0a 5a 6f 6f 6d 3d a3 0d 29 f4 05 e1 0d 29 fe |..Zoom=..)....).| 0000a230 05 3a 0d 2a 08 11 dd 20 f2 46 6c 61 73 68 43 61 |.:.*... .FlashCa| 0000a240 72 65 74 0d 2a 12 25 c8 99 20 22 57 69 6d 70 5f |ret.*.%.. "Wimp_| 0000a250 47 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e |GetCaretPosition| 0000a260 22 2c 2c 43 61 72 65 74 0d 2a 1c 1b 46 6c 61 73 |",,Caret.*..Flas| 0000a270 68 53 74 61 74 65 3d ac 20 46 6c 61 73 68 53 74 |hState=. FlashSt| 0000a280 61 74 65 0d 2a 26 39 43 61 72 65 74 21 31 36 3d |ate.*&9Caret!16=| 0000a290 28 43 61 72 65 74 21 31 36 20 80 20 ac 20 28 31 |(Caret!16 . . (1| 0000a2a0 3c 3c 32 35 29 29 20 82 20 28 28 2d 46 6c 61 73 |<<25)) . ((-Flas| 0000a2b0 68 53 74 61 74 65 29 3c 3c 32 35 29 0d 2a 30 52 |hState)<<25).*0R| 0000a2c0 c8 99 20 22 58 57 69 6d 70 5f 53 65 74 43 61 72 |.. "XWimp_SetCar| 0000a2d0 65 74 50 6f 73 69 74 69 6f 6e 22 2c 43 61 72 65 |etPosition",Care| 0000a2e0 74 21 30 2c 43 61 72 65 74 21 34 2c 43 61 72 65 |t!0,Caret!4,Care| 0000a2f0 74 21 38 2c 43 61 72 65 74 21 31 32 2c 43 61 72 |t!8,Caret!12,Car| 0000a300 65 74 21 31 36 2c 43 61 72 65 74 21 32 30 0d 2a |et!16,Caret!20.*| 0000a310 3a 2b f4 20 54 68 65 20 58 20 69 6e 20 74 68 65 |:+. The X in the| 0000a320 20 6c 69 6e 65 20 61 62 6f 76 65 20 69 73 20 69 | line above is i| 0000a330 6d 70 6f 72 74 61 6e 74 2e 0d 2a 44 2a 70 6f 6c |mportant..*D*pol| 0000a340 6c 74 69 6d 65 25 2b 3d 46 6c 61 73 68 50 65 72 |ltime%+=FlashPer| 0000a350 69 6f 64 28 2d 46 6c 61 73 68 53 74 61 74 65 29 |iod(-FlashState)| 0000a360 2a 31 30 0d 2a 4e 05 e1 0d 2a 58 05 3a 0d 2a 62 |*10.*N...*X.:.*b| 0000a370 13 dd 20 a4 52 65 61 64 4d 61 78 55 74 69 6c 73 |.. .ReadMaxUtils| 0000a380 0d 2a 63 07 ea 20 85 0d 2a 64 35 ee 20 85 20 ea |.*c.. ..*d5. . .| 0000a390 20 f7 20 85 3a 3d 30 3a f4 20 49 6e 20 63 61 73 | . .:=0:. In cas| 0000a3a0 65 20 27 55 74 69 6c 69 74 69 65 73 27 20 64 6f |e 'Utilities' do| 0000a3b0 65 73 6e 27 74 20 65 78 69 73 74 2e 0d 2a 6c 4f |esn't exist..*lO| 0000a3c0 f4 20 54 68 69 73 20 70 72 6f 63 65 64 75 72 65 |. This procedure| 0000a3d0 20 66 69 6e 64 73 20 6f 75 74 20 68 6f 77 20 6d | finds out how m| 0000a3e0 61 6e 79 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 |any applications| 0000a3f0 20 74 68 65 72 65 20 61 72 65 20 69 6e 20 74 68 | there are in th| 0000a400 65 20 55 74 69 6c 69 74 69 65 73 0d 2a 6d 10 f4 |e Utilities.*m..| 0000a410 20 64 69 72 65 63 74 6f 72 79 2e 0d 2a 76 16 4f | directory..*v.O| 0000a420 66 66 73 65 74 3d 30 3a 43 6f 75 6e 74 65 72 3d |ffset=0:Counter=| 0000a430 30 0d 2a 80 05 f5 0d 2a 8a 5b 20 20 42 6c 6f 63 |0.*....*.[ Bloc| 0000a440 6b 21 31 36 3d 30 3a f4 20 43 6c 65 61 72 20 74 |k!16=0:. Clear t| 0000a450 68 69 73 20 6d 61 6e 75 61 6c 6c 79 20 73 69 6e |his manually sin| 0000a460 63 65 20 4f 53 5f 47 42 50 42 20 64 6f 65 73 6e |ce OS_GBPB doesn| 0000a470 27 74 2c 20 61 6e 64 20 77 65 20 6d 61 79 20 67 |'t, and we may g| 0000a480 65 74 20 61 20 77 72 6f 6e 67 20 72 65 73 75 6c |et a wrong resul| 0000a490 74 0d 2a 94 54 20 20 c8 99 20 22 4f 53 5f 47 42 |t.*.T .. "OS_GB| 0000a4a0 50 42 22 2c 31 30 2c 22 3c 4f 6d 6e 69 44 65 73 |PB",10,"<OmniDes| 0000a4b0 6b 24 44 69 72 3e 2e 55 74 69 6c 69 74 69 65 73 |k$Dir>.Utilities| 0000a4c0 22 2c 42 6c 6f 63 6b 2c 31 2c 4f 66 66 73 65 74 |",Block,1,Offset| 0000a4d0 2c 32 35 36 2c 22 2a 22 20 b8 20 2c 2c 2c 2c 4f |,256,"*" . ,,,,O| 0000a4e0 66 66 73 65 74 0d 2a 9e 51 20 20 e7 20 28 42 6c |ffset.*.Q . (Bl| 0000a4f0 6f 63 6b 21 31 36 3d 32 29 20 80 20 28 42 6c 6f |ock!16=2) . (Blo| 0000a500 63 6b 3f 32 30 3d 97 22 21 22 29 20 8c 20 43 6f |ck?20=."!") . Co| 0000a510 75 6e 74 65 72 2b 3d 31 3a f4 20 41 70 70 6c 69 |unter+=1:. Appli| 0000a520 63 61 74 69 6f 6e 20 64 69 72 65 63 74 6f 72 79 |cation directory| 0000a530 20 66 6f 75 6e 64 0d 2a a8 0f fd 20 4f 66 66 73 | found.*... Offs| 0000a540 65 74 3d 2d 31 0d 2a b2 0c 3d 43 6f 75 6e 74 65 |et=-1.*..=Counte| 0000a550 72 0d 2a bc 05 3a 0d 2a c6 10 dd 20 f2 53 63 61 |r.*..:.*... .Sca| 0000a560 6e 55 74 69 6c 73 0d 2a d0 07 ea 20 85 0d 2a da |nUtils.*... ..*.| 0000a570 34 ee 20 85 20 ea 20 f7 20 85 3a e1 3a f4 20 49 |4. . . . .:.:. I| 0000a580 6e 20 63 61 73 65 20 27 55 74 69 6c 69 74 69 65 |n case 'Utilitie| 0000a590 73 27 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 |s' doesn't exist| 0000a5a0 2e 0d 2a e4 45 f4 20 54 68 69 73 20 70 72 6f 63 |..*.E. This proc| 0000a5b0 65 64 75 72 65 20 63 61 74 61 6c 6f 67 75 65 73 |edure catalogues| 0000a5c0 20 74 68 65 20 75 74 69 6c 69 74 69 65 73 20 69 | the utilities i| 0000a5d0 6e 74 6f 20 61 20 62 75 66 66 65 72 20 72 65 61 |nto a buffer rea| 0000a5e0 64 79 20 66 6f 72 0d 2a e5 14 f4 20 61 75 74 6f |dy for.*... auto| 0000a5f0 2d 73 74 61 72 74 69 6e 67 2e 0d 2a ee 4b f4 20 |-starting..*.K. | 0000a600 55 6e 66 6f 72 74 75 6e 61 74 65 6c 79 2c 20 77 |Unfortunately, w| 0000a610 65 20 63 61 6e 27 74 20 6c 65 61 76 65 20 61 6c |e can't leave al| 0000a620 6c 20 74 68 65 20 77 6f 72 6b 20 74 6f 20 4f 53 |l the work to OS| 0000a630 5f 47 42 50 42 2c 20 73 69 6e 63 65 20 69 74 20 |_GBPB, since it | 0000a640 77 6f 6e 27 74 0d 2a f8 4f f4 20 64 69 73 74 69 |won't.*.O. disti| 0000a650 6e 67 75 69 73 68 20 62 65 74 77 65 65 6e 20 61 |nguish between a| 0000a660 70 70 6c 69 63 61 74 69 6f 6e 20 64 69 72 65 63 |pplication direc| 0000a670 74 6f 72 69 65 73 20 61 6e 64 20 66 69 6c 65 73 |tories and files| 0000a680 20 62 65 67 69 6e 6e 69 6e 67 20 77 69 74 68 20 | beginning with | 0000a690 22 21 22 2e 0d 2b 02 1b 4f 66 66 73 65 74 3d 30 |"!"..+..Offset=0| 0000a6a0 3a 42 75 66 66 65 72 4f 66 66 73 65 74 3d 30 0d |:BufferOffset=0.| 0000a6b0 2b 0c 05 f5 0d 2b 16 5b 20 20 42 6c 6f 63 6b 21 |+....+.[ Block!| 0000a6c0 31 36 3d 30 3a f4 20 43 6c 65 61 72 20 74 68 69 |16=0:. Clear thi| 0000a6d0 73 20 6d 61 6e 75 61 6c 6c 79 20 73 69 6e 63 65 |s manually since| 0000a6e0 20 4f 53 5f 47 42 50 42 20 64 6f 65 73 6e 27 74 | OS_GBPB doesn't| 0000a6f0 2c 20 61 6e 64 20 77 65 20 6d 61 79 20 67 65 74 |, and we may get| 0000a700 20 61 20 77 72 6f 6e 67 20 72 65 73 75 6c 74 0d | a wrong result.| 0000a710 2b 20 54 20 20 c8 99 20 22 4f 53 5f 47 42 50 42 |+ T .. "OS_GBPB| 0000a720 22 2c 31 30 2c 22 3c 4f 6d 6e 69 44 65 73 6b 24 |",10,"<OmniDesk$| 0000a730 44 69 72 3e 2e 55 74 69 6c 69 74 69 65 73 22 2c |Dir>.Utilities",| 0000a740 42 6c 6f 63 6b 2c 31 2c 4f 66 66 73 65 74 2c 32 |Block,1,Offset,2| 0000a750 35 36 2c 22 2a 22 20 b8 20 2c 2c 2c 2c 4f 66 66 |56,"*" . ,,,,Off| 0000a760 73 65 74 0d 2b 2a 28 20 20 e7 20 28 42 6c 6f 63 |set.+*( . (Bloc| 0000a770 6b 21 31 36 3d 32 29 20 80 20 28 42 6c 6f 63 6b |k!16=2) . (Block| 0000a780 3f 32 30 3d 97 22 21 22 29 20 8c 0d 2b 34 25 20 |?20=."!") ..+4% | 0000a790 20 20 20 f4 20 41 70 70 6c 69 63 61 74 69 6f 6e | . Application| 0000a7a0 20 64 69 72 65 63 74 6f 72 79 20 66 6f 75 6e 64 | directory found| 0000a7b0 0d 2b 3e 2d 20 20 20 20 4e 3d 32 30 3a c8 95 20 |.+>- N=20:.. | 0000a7c0 42 6c 6f 63 6b 3f 4e 3e 3d 33 32 3a 4e 2b 3d 31 |Block?N>=32:N+=1| 0000a7d0 3a ce 3a 42 6c 6f 63 6b 3f 4e 3d 31 33 0d 2b 48 |:.:Block?N=13.+H| 0000a7e0 51 20 20 20 20 24 28 55 74 69 6c 4c 69 73 74 42 |Q $(UtilListB| 0000a7f0 75 66 66 65 72 2b 42 75 66 66 65 72 4f 66 66 73 |uffer+BufferOffs| 0000a800 65 74 29 3d 24 28 42 6c 6f 63 6b 2b 32 30 29 3a |et)=$(Block+20):| 0000a810 42 75 66 66 65 72 4f 66 66 73 65 74 2b 3d a9 28 |BufferOffset+=.(| 0000a820 24 28 42 6c 6f 63 6b 2b 32 30 29 29 2b 31 0d 2b |$(Block+20))+1.+| 0000a830 52 07 20 20 cd 0d 2b 5c 0f fd 20 4f 66 66 73 65 |R. ..+\.. Offse| 0000a840 74 3d 2d 31 0d 2b 66 05 e1 0d 2b 70 05 3a 0d 2b |t=-1.+f...+p.:.+| 0000a850 7a 1d dd 20 f2 41 64 64 4c 69 6e 65 54 6f 50 72 |z.. .AddLineToPr| 0000a860 65 66 73 28 54 69 74 6c 65 24 29 0d 2b 84 43 f4 |efs(Title$).+.C.| 0000a870 20 41 6d 65 6e 64 20 77 6f 72 6b 20 61 72 65 61 | Amend work area| 0000a880 20 73 69 7a 65 20 61 6e 64 20 73 69 7a 65 20 6f | size and size o| 0000a890 66 20 62 6f 75 6e 64 69 6e 67 20 69 63 6f 6e 73 |f bounding icons| 0000a8a0 20 77 69 74 68 69 6e 20 50 72 65 66 73 3a 0d 2b | within Prefs:.+| 0000a8b0 8e 45 42 6c 6f 63 6b 21 30 3d 30 3a 42 6c 6f 63 |.EBlock!0=0:Bloc| 0000a8c0 6b 21 34 3d 2d 36 31 36 2d 28 34 38 2a 55 74 69 |k!4=-616-(48*Uti| 0000a8d0 6c 69 74 69 65 73 4b 6e 6f 77 6e 29 3a 42 6c 6f |litiesKnown):Blo| 0000a8e0 63 6b 21 38 3d 38 31 32 3a 42 6c 6f 63 6b 21 31 |ck!8=812:Block!1| 0000a8f0 32 3d 30 0d 2b 98 23 c8 99 20 22 57 69 6d 70 5f |2=0.+.#.. "Wimp_| 0000a900 53 65 74 45 78 74 65 6e 74 22 2c 50 72 65 66 73 |SetExtent",Prefs| 0000a910 2c 42 6c 6f 63 6b 0d 2b a2 13 e3 20 4e 3d 31 33 |,Block.+... N=13| 0000a920 20 b8 20 32 30 20 88 20 37 0d 2b ac 3b 20 20 42 | . 20 . 7.+.; B| 0000a930 6c 6f 63 6b 21 30 3d 50 72 65 66 73 3a 42 6c 6f |lock!0=Prefs:Blo| 0000a940 63 6b 21 34 3d 4e 3a c8 99 20 22 57 69 6d 70 5f |ck!4=N:.. "Wimp_| 0000a950 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 |GetIconState",,B| 0000a960 6c 6f 63 6b 0d 2b b6 2e 20 20 42 6c 6f 63 6b 21 |lock.+.. Block!| 0000a970 31 32 2d 3d 34 38 3a c8 99 20 22 57 69 6d 70 5f |12-=48:.. "Wimp_| 0000a980 44 65 6c 65 74 65 49 63 6f 6e 22 2c 2c 42 6c 6f |DeleteIcon",,Blo| 0000a990 63 6b 0d 2b c0 31 20 20 42 6c 6f 63 6b 21 34 3d |ck.+.1 Block!4=| 0000a9a0 50 72 65 66 73 3a c8 99 20 22 57 69 6d 70 5f 43 |Prefs:.. "Wimp_C| 0000a9b0 72 65 61 74 65 49 63 6f 6e 22 2c 2c 42 6c 6f 63 |reateIcon",,Bloc| 0000a9c0 6b 2b 34 0d 2b ca 05 ed 0d 2b d4 2e f4 20 4e 6f |k+4.+....+... No| 0000a9d0 77 20 63 72 65 61 74 65 20 65 78 74 72 61 20 72 |w create extra r| 0000a9e0 6f 77 73 20 6f 66 20 69 63 6f 6e 73 20 69 6e 20 |ows of icons in | 0000a9f0 50 72 65 66 73 2e 0d 2b de 4c f4 20 57 65 20 6a |Prefs..+.L. We j| 0000aa00 75 73 74 20 63 6f 70 79 20 74 68 65 20 69 63 6f |ust copy the ico| 0000aa10 6e 73 20 66 72 6f 6d 20 74 68 65 20 72 6f 77 20 |ns from the row | 0000aa20 61 62 6f 76 65 2c 20 75 73 69 6e 67 20 6e 65 77 |above, using new| 0000aa30 20 69 6e 64 69 72 65 63 74 65 64 20 73 70 61 63 | indirected spac| 0000aa40 65 2e 0d 2b e8 3c f4 20 54 68 65 20 66 69 72 73 |e..+.<. The firs| 0000aa50 74 20 65 78 74 72 61 20 69 63 6f 6e 20 63 72 65 |t extra icon cre| 0000aa60 61 74 65 64 20 77 69 6c 6c 20 68 61 76 65 20 61 |ated will have a| 0000aa70 20 68 61 6e 64 6c 65 20 6f 66 20 33 36 2e 0d 2b | handle of 36..+| 0000aa80 f2 0d e3 20 4e 3d 30 20 b8 20 34 0d 2b fc 55 20 |... N=0 . 4.+.U | 0000aa90 20 42 6c 6f 63 6b 21 30 3d 50 72 65 66 73 3a 42 | Block!0=Prefs:B| 0000aaa0 6c 6f 63 6b 21 34 3d 28 35 2a 28 55 74 69 6c 69 |lock!4=(5*(Utili| 0000aab0 74 69 65 73 4b 6e 6f 77 6e 2d 31 29 29 2b 4e 2b |tiesKnown-1))+N+| 0000aac0 33 31 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |31:.. "Wimp_GetI| 0000aad0 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b |conState",,Block| 0000aae0 0d 2c 06 38 20 20 42 6c 6f 63 6b 21 31 32 2d 3d |.,.8 Block!12-=| 0000aaf0 34 38 3a 42 6c 6f 63 6b 21 32 30 2d 3d 34 38 3a |48:Block!20-=48:| 0000ab00 f4 20 43 6f 70 79 20 69 63 6f 6e 20 64 6f 77 6e |. Copy icon down| 0000ab10 20 6f 6e 65 20 72 6f 77 0d 2c 10 0c 20 20 c8 8e | one row.,.. ..| 0000ab20 20 4e 20 ca 0d 2c 1a 38 20 20 20 20 c9 20 30 3a | N ..,.8 . 0:| 0000ab30 24 28 45 78 74 72 61 50 72 65 66 73 56 61 6c 2b |$(ExtraPrefsVal+| 0000ab40 50 72 65 66 73 56 61 6c 50 6f 69 6e 74 65 72 29 |PrefsValPointer)| 0000ab50 3d 24 28 42 6c 6f 63 6b 21 33 32 29 0d 2c 24 35 |=$(Block!32).,$5| 0000ab60 20 20 20 20 20 20 20 20 20 20 20 42 6c 6f 63 6b | Block| 0000ab70 21 33 32 3d 45 78 74 72 61 50 72 65 66 73 56 61 |!32=ExtraPrefsVa| 0000ab80 6c 2b 50 72 65 66 73 56 61 6c 50 6f 69 6e 74 65 |l+PrefsValPointe| 0000ab90 72 0d 2c 2e 22 20 20 20 20 20 20 20 20 20 20 20 |r.,." | 0000aba0 50 72 65 66 73 56 61 6c 50 6f 69 6e 74 65 72 2b |PrefsValPointer+| 0000abb0 3d 31 34 0d 2c 38 37 20 20 20 20 c9 20 31 3a 24 |=14.,87 . 1:$| 0000abc0 28 45 78 74 72 61 50 72 65 66 73 49 6e 64 2b 50 |(ExtraPrefsInd+P| 0000abd0 72 65 66 73 49 6e 64 50 6f 69 6e 74 65 72 29 3d |refsIndPointer)=| 0000abe0 54 69 74 6c 65 24 2b bd 31 33 0d 2c 42 35 20 20 |Title$+.13.,B5 | 0000abf0 20 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 32 | Block!2| 0000ac00 38 3d 45 78 74 72 61 50 72 65 66 73 49 6e 64 2b |8=ExtraPrefsInd+| 0000ac10 50 72 65 66 73 49 6e 64 50 6f 69 6e 74 65 72 0d |PrefsIndPointer.| 0000ac20 2c 4c 22 20 20 20 20 20 20 20 20 20 20 20 50 72 |,L" Pr| 0000ac30 65 66 73 49 6e 64 50 6f 69 6e 74 65 72 2b 3d 32 |efsIndPointer+=2| 0000ac40 30 0d 2c 56 36 20 20 20 20 7f 20 24 28 45 78 74 |0.,V6 . $(Ext| 0000ac50 72 61 50 72 65 66 73 56 61 6c 2b 50 72 65 66 73 |raPrefsVal+Prefs| 0000ac60 56 61 6c 50 6f 69 6e 74 65 72 29 3d 24 28 42 6c |ValPointer)=$(Bl| 0000ac70 6f 63 6b 21 33 32 29 0d 2c 60 38 20 20 20 20 20 |ock!32).,`8 | 0000ac80 20 20 20 20 20 20 20 20 20 42 6c 6f 63 6b 21 33 | Block!3| 0000ac90 32 3d 45 78 74 72 61 50 72 65 66 73 56 61 6c 2b |2=ExtraPrefsVal+| 0000aca0 50 72 65 66 73 56 61 6c 50 6f 69 6e 74 65 72 0d |PrefsValPointer.| 0000acb0 2c 6a 4a 20 20 20 20 20 20 20 20 20 20 20 20 20 |,jJ | 0000acc0 20 42 6c 6f 63 6b 21 32 34 3d 28 28 42 6c 6f 63 | Block!24=((Bloc| 0000acd0 6b 21 32 34 29 20 80 20 ac 20 28 31 3c 3c 32 31 |k!24) . . (1<<21| 0000ace0 29 29 20 82 20 28 30 3c 3c 32 31 29 3a f4 20 55 |)) . (0<<21):. U| 0000acf0 6e 73 65 6c 65 63 74 65 64 0d 2c 74 25 20 20 20 |nselected.,t% | 0000ad00 20 20 20 20 20 20 20 20 20 20 20 50 72 65 66 73 | Prefs| 0000ad10 56 61 6c 50 6f 69 6e 74 65 72 2b 3d 31 38 0d 2c |ValPointer+=18.,| 0000ad20 7e 07 20 20 cb 0d 2c 88 31 20 20 42 6c 6f 63 6b |~. ..,.1 Block| 0000ad30 21 34 3d 50 72 65 66 73 3a c8 99 20 22 57 69 6d |!4=Prefs:.. "Wim| 0000ad40 70 5f 43 72 65 61 74 65 49 63 6f 6e 22 2c 2c 42 |p_CreateIcon",,B| 0000ad50 6c 6f 63 6b 2b 34 0d 2c 92 05 ed 0d 2c 9c 27 55 |lock+4.,....,.'U| 0000ad60 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 38 38 2a 28 |%=SlotEnd+(188*(| 0000ad70 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d 31 |UtilitiesKnown-1| 0000ad80 29 29 0d 2c a6 07 20 20 3a 0d 2c b0 c8 e7 20 a4 |)).,.. :.,... .| 0000ad90 46 6f 75 6e 64 49 6e 53 65 74 74 69 6e 67 73 28 |FoundInSettings(| 0000ada0 24 28 55 25 2b 32 34 29 29 20 8c 20 f2 55 70 64 |$(U%+24)) . .Upd| 0000adb0 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 |ateSelectedFlag(| 0000adc0 50 72 65 66 73 2c 28 35 2a 28 55 74 69 6c 69 74 |Prefs,(5*(Utilit| 0000add0 69 65 73 4b 6e 6f 77 6e 2d 31 29 29 2b 33 36 2c |iesKnown-1))+36,| 0000ade0 b9 29 3a 53 65 6c 65 63 74 65 64 4c 6f 61 64 53 |.):SelectedLoadS| 0000adf0 77 69 74 63 68 65 73 24 2b 3d 22 59 22 3a 8b 20 |witches$+="Y":. | 0000ae00 f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 |.UpdateSelectedF| 0000ae10 6c 61 67 28 50 72 65 66 73 2c 28 35 2a 28 55 74 |lag(Prefs,(5*(Ut| 0000ae20 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d 31 29 29 |ilitiesKnown-1))| 0000ae30 2b 33 36 2c a3 29 3a 53 65 6c 65 63 74 65 64 4c |+36,.):SelectedL| 0000ae40 6f 61 64 53 77 69 74 63 68 65 73 24 2b 3d 22 4e |oadSwitches$+="N| 0000ae50 22 0d 2c ba 70 f4 20 54 68 65 20 61 62 6f 76 65 |".,.p. The above| 0000ae60 20 6c 69 6e 65 20 74 75 72 6e 73 20 6f 6e 20 74 | line turns on t| 0000ae70 68 65 20 6f 70 74 69 6f 6e 20 73 77 69 74 63 68 |he option switch| 0000ae80 20 61 63 63 6f 72 64 69 6e 67 20 74 6f 20 77 68 | according to wh| 0000ae90 65 74 68 65 72 20 74 68 65 20 75 74 69 6c 69 74 |ether the utilit| 0000aea0 79 20 77 61 73 20 66 6f 75 6e 64 20 69 6e 20 74 |y was found in t| 0000aeb0 68 65 20 53 65 74 74 69 6e 67 73 20 66 69 6c 65 |he Settings file| 0000aec0 2e 0d 2c c4 07 20 20 3a 0d 2c ce 80 e7 20 24 28 |..,.. :.,... $(| 0000aed0 55 25 2b 31 31 32 29 3d 22 22 20 8c 20 f2 55 70 |U%+112)="" . .Up| 0000aee0 64 61 74 65 53 68 61 64 65 64 46 6c 61 67 28 50 |dateShadedFlag(P| 0000aef0 72 65 66 73 2c 28 35 2a 28 55 74 69 6c 69 74 69 |refs,(5*(Utiliti| 0000af00 65 73 4b 6e 6f 77 6e 2d 31 29 29 2b 33 39 2c b9 |esKnown-1))+39,.| 0000af10 29 3a 8b 20 f2 55 70 64 61 74 65 53 68 61 64 65 |):. .UpdateShade| 0000af20 64 46 6c 61 67 28 50 72 65 66 73 2c 28 35 2a 28 |dFlag(Prefs,(5*(| 0000af30 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d 31 |UtilitiesKnown-1| 0000af40 29 29 2b 33 39 2c a3 29 0d 2c d8 99 f4 20 54 68 |))+39,.).,... Th| 0000af50 65 20 61 62 6f 76 65 20 6c 69 6e 65 20 73 68 61 |e above line sha| 0000af60 64 65 73 20 6f 75 74 20 74 68 65 20 64 72 61 67 |des out the drag| 0000af70 67 69 6e 67 20 72 61 64 69 6f 20 69 63 6f 6e 20 |ging radio icon | 0000af80 69 66 20 6e 6f 20 64 72 61 67 67 69 6e 67 20 68 |if no dragging h| 0000af90 65 6c 70 20 74 65 78 74 20 69 73 20 73 75 70 70 |elp text is supp| 0000afa0 6c 69 65 64 2e 20 4c 61 63 6b 20 6f 66 20 68 65 |lied. Lack of he| 0000afb0 6c 70 20 74 65 78 74 20 69 6d 70 6c 69 65 73 20 |lp text implies | 0000afc0 74 68 61 74 20 74 68 65 72 65 20 69 73 20 6e 6f |that there is no| 0000afd0 20 64 72 61 67 67 69 6e 67 20 61 63 74 69 6f 6e | dragging action| 0000afe0 2e 0d 2c e2 07 20 20 3a 0d 2c ec 26 e7 20 28 24 |..,.. :.,.&. ($| 0000aff0 28 55 25 2b 33 35 29 3d 22 22 29 20 80 20 28 24 |(U%+35)="") . ($| 0000b000 28 55 25 2b 31 31 32 29 3d 22 22 29 20 8c 0d 2c |(U%+112)="") ..,| 0000b010 f6 6f 20 20 f2 55 70 64 61 74 65 53 68 61 64 65 |.o .UpdateShade| 0000b020 64 46 6c 61 67 28 50 72 65 66 73 2c 28 35 2a 28 |dFlag(Prefs,(5*(| 0000b030 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d 31 |UtilitiesKnown-1| 0000b040 29 29 2b 33 38 2c b9 29 3a f2 55 70 64 61 74 65 |))+38,.):.Update| 0000b050 53 68 61 64 65 64 46 6c 61 67 28 50 72 65 66 73 |ShadedFlag(Prefs| 0000b060 2c 28 35 2a 28 55 74 69 6c 69 74 69 65 73 4b 6e |,(5*(UtilitiesKn| 0000b070 6f 77 6e 2d 31 29 29 2b 34 30 2c b9 29 0d 2d 00 |own-1))+40,.).-.| 0000b080 05 cc 0d 2d 0a 6f 20 20 f2 55 70 64 61 74 65 53 |...-.o .UpdateS| 0000b090 68 61 64 65 64 46 6c 61 67 28 50 72 65 66 73 2c |hadedFlag(Prefs,| 0000b0a0 28 35 2a 28 55 74 69 6c 69 74 69 65 73 4b 6e 6f |(5*(UtilitiesKno| 0000b0b0 77 6e 2d 31 29 29 2b 33 38 2c a3 29 3a f2 55 70 |wn-1))+38,.):.Up| 0000b0c0 64 61 74 65 53 68 61 64 65 64 46 6c 61 67 28 50 |dateShadedFlag(P| 0000b0d0 72 65 66 73 2c 28 35 2a 28 55 74 69 6c 69 74 69 |refs,(5*(Utiliti| 0000b0e0 65 73 4b 6e 6f 77 6e 2d 31 29 29 2b 34 30 2c a3 |esKnown-1))+40,.| 0000b0f0 29 0d 2d 14 05 cd 0d 2d 1e e1 f4 20 54 68 65 20 |).-....-... The | 0000b100 61 62 6f 76 65 20 6c 69 6e 65 73 20 73 68 61 64 |above lines shad| 0000b110 65 20 6f 75 74 20 74 68 65 20 53 65 6c 65 63 74 |e out the Select| 0000b120 20 61 6e 64 20 41 64 6a 75 73 74 20 72 61 64 69 | and Adjust radi| 0000b130 6f 20 69 63 6f 6e 73 20 69 66 20 28 61 29 20 6e |o icons if (a) n| 0000b140 6f 20 53 45 4c 45 43 54 20 68 65 6c 70 20 74 65 |o SELECT help te| 0000b150 78 74 20 69 73 20 73 75 70 70 6c 69 65 64 20 61 |xt is supplied a| 0000b160 6e 64 20 28 62 29 20 6e 6f 20 64 72 61 67 67 69 |nd (b) no draggi| 0000b170 6e 67 20 68 65 6c 70 20 74 65 78 74 20 69 73 20 |ng help text is | 0000b180 73 75 70 70 6c 69 65 64 2e 20 54 68 69 73 20 72 |supplied. This r| 0000b190 65 6e 64 65 72 73 20 74 68 65 20 75 74 69 6c 69 |enders the utili| 0000b1a0 74 79 20 75 73 65 6c 65 73 73 2c 20 73 69 6e 63 |ty useless, sinc| 0000b1b0 65 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 72 65 |e it does not re| 0000b1c0 73 70 6f 6e 64 20 74 6f 20 65 69 74 68 65 72 20 |spond to either | 0000b1d0 61 63 74 69 6f 6e 2e 0d 2d 28 07 20 20 3a 0d 2d |action..-(. :.-| 0000b1e0 32 1a e7 20 54 69 74 6c 65 24 3d 53 45 4c 45 43 |2.. Title$=SELEC| 0000b1f0 54 55 74 69 6c 24 20 8c 0d 2d 3c 5a 20 20 53 45 |TUtil$ ..-<Z SE| 0000b200 4c 45 43 54 55 74 69 6c 3d 55 74 69 6c 69 74 69 |LECTUtil=Utiliti| 0000b210 65 73 4b 6e 6f 77 6e 2b 32 3a f2 55 70 64 61 74 |esKnown+2:.Updat| 0000b220 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 50 72 |eSelectedFlag(Pr| 0000b230 65 66 73 2c 28 35 2a 28 55 74 69 6c 69 74 69 65 |efs,(5*(Utilitie| 0000b240 73 4b 6e 6f 77 6e 2d 31 29 29 2b 33 36 2b 32 2c |sKnown-1))+36+2,| 0000b250 b9 29 0d 2d 46 2e 20 20 53 45 4c 45 43 54 55 74 |.).-F. SELECTUt| 0000b260 69 6c 24 3d 24 28 55 25 2b 34 29 3a 53 45 4c 45 |il$=$(U%+4):SELE| 0000b270 43 54 48 65 6c 70 24 3d 24 28 55 25 2b 33 35 29 |CTHelp$=$(U%+35)| 0000b280 0d 2d 50 05 cd 0d 2d 5a 1a e7 20 54 69 74 6c 65 |.-P...-Z.. Title| 0000b290 24 3d 44 52 41 47 55 74 69 6c 24 20 20 20 8c 0d |$=DRAGUtil$ ..| 0000b2a0 2d 64 58 20 20 44 52 41 47 55 74 69 6c 3d 55 74 |-dX DRAGUtil=Ut| 0000b2b0 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2b 32 3a f2 |ilitiesKnown+2:.| 0000b2c0 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c |UpdateSelectedFl| 0000b2d0 61 67 28 50 72 65 66 73 2c 28 35 2a 28 55 74 69 |ag(Prefs,(5*(Uti| 0000b2e0 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d 31 29 29 2b |litiesKnown-1))+| 0000b2f0 33 36 2b 33 2c b9 29 0d 2d 6e 2b 20 20 44 52 41 |36+3,.).-n+ DRA| 0000b300 47 55 74 69 6c 24 3d 24 28 55 25 2b 34 29 3a 44 |GUtil$=$(U%+4):D| 0000b310 52 41 47 48 65 6c 70 24 3d 24 28 55 25 2b 31 31 |RAGHelp$=$(U%+11| 0000b320 32 29 0d 2d 78 05 cd 0d 2d 82 1a e7 20 54 69 74 |2).-x...-... Tit| 0000b330 6c 65 24 3d 41 44 4a 55 53 54 55 74 69 6c 24 20 |le$=ADJUSTUtil$ | 0000b340 8c 0d 2d 8c 5a 20 20 41 44 4a 55 53 54 55 74 69 |..-.Z ADJUSTUti| 0000b350 6c 3d 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e |l=UtilitiesKnown| 0000b360 2b 32 3a f2 55 70 64 61 74 65 53 65 6c 65 63 74 |+2:.UpdateSelect| 0000b370 65 64 46 6c 61 67 28 50 72 65 66 73 2c 28 35 2a |edFlag(Prefs,(5*| 0000b380 28 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 2d |(UtilitiesKnown-| 0000b390 31 29 29 2b 33 36 2b 34 2c b9 29 0d 2d 96 2e 20 |1))+36+4,.).-.. | 0000b3a0 20 41 44 4a 55 53 54 55 74 69 6c 24 3d 24 28 55 | ADJUSTUtil$=$(U| 0000b3b0 25 2b 34 29 3a 41 44 4a 55 53 54 48 65 6c 70 24 |%+4):ADJUSTHelp$| 0000b3c0 3d 24 28 55 25 2b 33 35 29 0d 2d a0 05 cd 0d 2d |=$(U%+35).-....-| 0000b3d0 aa 07 20 20 3a 0d 2d b4 18 e7 20 55 74 69 6c 69 |.. :.-... Utili| 0000b3e0 74 69 65 73 4b 6e 6f 77 6e 3d 31 20 8c 0d 2d be |tiesKnown=1 ..-.| 0000b3f0 15 20 20 e3 20 4e 3d 32 31 20 b8 20 33 31 20 88 |. . N=21 . 31 .| 0000b400 20 35 0d 2d c8 26 20 20 20 20 f2 55 70 64 61 74 | 5.-.& .Updat| 0000b410 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 50 72 |eSelectedFlag(Pr| 0000b420 65 66 73 2c 4e 2c b9 29 0d 2d d2 3d 20 20 20 20 |efs,N,.).-.= | 0000b430 42 6c 6f 63 6b 21 30 3d 50 72 65 66 73 3a 42 6c |Block!0=Prefs:Bl| 0000b440 6f 63 6b 21 34 3d 4e 3a c8 99 20 22 57 69 6d 70 |ock!4=N:.. "Wimp| 0000b450 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 0000b460 42 6c 6f 63 6b 0d 2d dc 41 20 20 20 20 42 6c 6f |Block.-.A Blo| 0000b470 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b 21 31 32 3d |ck!8=0:Block!12=| 0000b480 28 31 35 3c 3c 31 32 29 3a c8 99 20 22 57 69 6d |(15<<12):.. "Wim| 0000b490 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 0000b4a0 2c 42 6c 6f 63 6b 0d 2d e6 45 20 20 20 20 f4 20 |,Block.-.E . | 0000b4b0 43 68 61 6e 67 65 20 62 75 74 74 6f 6e 20 74 79 |Change button ty| 0000b4c0 70 65 20 74 6f 20 4e 65 76 65 72 20 61 6e 64 20 |pe to Never and | 0000b4d0 66 69 78 20 74 68 65 73 65 20 62 75 74 74 6f 6e |fix these button| 0000b4e0 73 20 4f 4e 2c 20 73 69 6e 63 65 0d 2d f0 44 20 |s ON, since.-.D | 0000b4f0 20 20 20 f4 20 74 68 65 20 66 69 72 73 74 20 74 | . the first t| 0000b500 68 72 65 65 20 75 74 69 6c 69 74 69 65 73 20 61 |hree utilities a| 0000b510 72 65 20 70 72 6f 76 69 64 65 64 20 62 79 20 4f |re provided by O| 0000b520 6d 6e 69 44 65 73 6b 20 69 74 73 65 6c 66 2e 0d |mniDesk itself..| 0000b530 2d fa 07 20 20 ed 0d 2e 04 37 20 20 f4 20 47 72 |-.. ....7 . Gr| 0000b540 65 79 20 6f 75 74 20 74 68 65 20 69 6e 61 70 70 |ey out the inapp| 0000b550 72 6f 70 72 69 61 74 65 20 64 72 61 67 67 69 6e |ropriate draggin| 0000b560 67 20 72 61 64 69 6f 20 69 63 6f 6e 73 0d 2e 0e |g radio icons...| 0000b570 23 20 20 f2 55 70 64 61 74 65 53 68 61 64 65 64 |# .UpdateShaded| 0000b580 46 6c 61 67 28 50 72 65 66 73 2c 32 34 2c b9 29 |Flag(Prefs,24,.)| 0000b590 0d 2e 18 23 20 20 f2 55 70 64 61 74 65 53 68 61 |...# .UpdateSha| 0000b5a0 64 65 64 46 6c 61 67 28 50 72 65 66 73 2c 32 39 |dedFlag(Prefs,29| 0000b5b0 2c b9 29 0d 2e 22 05 cd 0d 2e 2c 05 e1 0d 2e 36 |,.).."....,....6| 0000b5c0 05 3a 0d 2e 40 12 dd 20 f2 53 74 61 72 74 55 70 |.:..@.. .StartUp| 0000b5d0 54 61 73 6b 0d 2e 4a 30 e7 20 4d 61 78 55 74 69 |Task..J0. MaxUti| 0000b5e0 6c 73 3d 30 20 8c 20 53 74 61 72 74 69 6e 67 55 |ls=0 . StartingU| 0000b5f0 70 3d a3 3a f2 49 6e 73 74 61 6c 6c 49 42 49 63 |p=.:.InstallIBIc| 0000b600 6f 6e 3a e1 0d 2e 54 2f 46 69 6c 65 4e 61 6d 65 |on:...T/FileName| 0000b610 24 3d 24 28 55 74 69 6c 4c 69 73 74 42 75 66 66 |$=$(UtilListBuff| 0000b620 65 72 2b 55 74 69 6c 4c 69 73 74 50 6f 69 6e 74 |er+UtilListPoint| 0000b630 65 72 29 0d 2e 5e 23 55 74 69 6c 4c 69 73 74 50 |er)..^#UtilListP| 0000b640 6f 69 6e 74 65 72 2b 3d a9 28 46 69 6c 65 4e 61 |ointer+=.(FileNa| 0000b650 6d 65 24 29 2b 31 0d 2e 68 15 53 74 61 72 74 55 |me$)+1..h.StartU| 0000b660 70 43 6f 75 6e 74 65 72 2b 3d 31 0d 2e 72 23 e7 |pCounter+=1..r#.| 0000b670 20 a4 46 6f 75 6e 64 49 6e 53 65 74 74 69 6e 67 | .FoundInSetting| 0000b680 73 28 46 69 6c 65 4e 61 6d 65 24 29 20 8c 0d 2e |s(FileName$) ...| 0000b690 7c 58 20 20 c8 99 20 22 57 69 6d 70 5f 53 74 61 ||X .. "Wimp_Sta| 0000b6a0 72 74 54 61 73 6b 22 2c 22 52 75 6e 20 3c 4f 6d |rtTask","Run <Om| 0000b6b0 6e 69 44 65 73 6b 24 44 69 72 3e 2e 55 74 69 6c |niDesk$Dir>.Util| 0000b6c0 69 74 69 65 73 2e 22 2b 46 69 6c 65 4e 61 6d 65 |ities."+FileName| 0000b6d0 24 2b 22 20 2d 4f 6d 6e 69 44 65 73 6b 22 2b c3 |$+" -OmniDesk"+.| 0000b6e0 28 54 61 73 6b 29 0d 2e 86 05 cc 0d 2e 90 60 20 |(Task)........` | 0000b6f0 20 c8 99 20 22 57 69 6d 70 5f 53 74 61 72 74 54 | .. "Wimp_StartT| 0000b700 61 73 6b 22 2c 22 52 75 6e 20 3c 4f 6d 6e 69 44 |ask","Run <OmniD| 0000b710 65 73 6b 24 44 69 72 3e 2e 55 74 69 6c 69 74 69 |esk$Dir>.Utiliti| 0000b720 65 73 2e 22 2b 46 69 6c 65 4e 61 6d 65 24 2b 22 |es."+FileName$+"| 0000b730 20 2d 53 74 61 72 74 75 70 2d 4f 6d 6e 69 44 65 | -Startup-OmniDe| 0000b740 73 6b 22 2b c3 28 54 61 73 6b 29 0d 2e 9a 05 cd |sk"+.(Task).....| 0000b750 0d 2e a4 3b e7 20 53 74 61 72 74 55 70 43 6f 75 |...;. StartUpCou| 0000b760 6e 74 65 72 3d 4d 61 78 55 74 69 6c 73 20 8c 20 |nter=MaxUtils . | 0000b770 53 74 61 72 74 69 6e 67 55 70 3d a3 3a f2 49 6e |StartingUp=.:.In| 0000b780 73 74 61 6c 6c 49 42 49 63 6f 6e 0d 2e ae 05 e1 |stallIBIcon.....| 0000b790 0d 2e b8 05 3a 0d 2e c2 1a dd 20 a4 46 6f 75 6e |....:..... .Foun| 0000b7a0 64 49 6e 53 65 74 74 69 6e 67 73 28 46 24 29 0d |dInSettings(F$).| 0000b7b0 2e cc 07 ea 20 85 0d 2e d6 3c ee 20 85 20 ea 20 |.... ....<. . . | 0000b7c0 f7 20 85 3a f2 43 6c 6f 73 65 46 69 6c 65 49 66 |. .:.CloseFileIf| 0000b7d0 50 6f 73 73 28 44 61 74 61 29 3a 3d a3 3a f4 20 |Poss(Data):=.:. | 0000b7e0 45 72 72 6f 72 20 72 65 61 64 69 6e 67 20 66 69 |Error reading fi| 0000b7f0 6c 65 0d 2e e0 26 44 61 74 61 3d 8e 20 28 22 3c |le...&Data=. ("<| 0000b800 4f 6d 6e 69 44 65 73 6b 24 44 69 72 3e 2e 53 65 |OmniDesk$Dir>.Se| 0000b810 74 74 69 6e 67 73 22 29 0d 2e ea 3c e3 20 4e 3d |ttings")...<. N=| 0000b820 31 20 b8 20 36 3a 44 75 6d 6d 79 24 3d a4 4e 65 |1 . 6:Dummy$=.Ne| 0000b830 78 74 45 6e 74 72 79 3a ed 3a f4 20 42 79 70 61 |xtEntry:.:. Bypa| 0000b840 73 73 20 66 69 72 73 74 20 73 69 78 20 65 6e 74 |ss first six ent| 0000b850 72 69 65 73 0d 2e f4 05 f5 0d 2e fe 13 20 20 41 |ries......... A| 0000b860 24 3d a4 4e 65 78 74 45 6e 74 72 79 0d 2f 08 16 |$=.NextEntry./..| 0000b870 fd 20 28 41 24 3d 46 24 29 20 84 20 c5 23 44 61 |. (A$=F$) . .#Da| 0000b880 74 61 0d 2f 12 0a d9 23 44 61 74 61 0d 2f 1c 11 |ta./...#Data./..| 0000b890 e7 20 41 24 3c 3e 46 24 20 8c 20 3d a3 0d 2f 26 |. A$<>F$ . =../&| 0000b8a0 06 3d b9 0d 2f 30 05 3a 0d 2f 3a 1b dd 20 f2 53 |.=../0.:./:.. .S| 0000b8b0 74 61 72 74 4f 72 51 75 69 74 50 72 65 66 73 54 |tartOrQuitPrefsT| 0000b8c0 61 73 6b 0d 2f 44 46 e7 20 50 72 6f 63 65 73 73 |ask./DF. Process| 0000b8d0 69 6e 67 50 72 65 66 73 43 6f 75 6e 74 65 72 3d |ingPrefsCounter=| 0000b8e0 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 20 8c |UtilitiesKnown .| 0000b8f0 20 f2 46 69 6e 69 73 68 50 72 6f 63 65 73 73 69 | .FinishProcessi| 0000b900 6e 67 50 72 65 66 73 3a e1 0d 2f 4e 2d 55 25 3d |ngPrefs:../N-U%=| 0000b910 53 6c 6f 74 45 6e 64 2b 28 31 38 38 2a 28 50 72 |SlotEnd+(188*(Pr| 0000b920 6f 63 65 73 73 69 6e 67 50 72 65 66 73 43 6f 75 |ocessingPrefsCou| 0000b930 6e 74 65 72 29 29 0d 2f 58 22 f2 55 70 64 61 74 |nter))./X".Updat| 0000b940 65 49 63 6f 6e 28 4c 6f 61 64 69 6e 67 2c 34 2c |eIcon(Loading,4,| 0000b950 24 28 55 25 2b 34 29 29 0d 2f 62 3b e7 20 a4 53 |$(U%+4))./b;. .S| 0000b960 65 6c 65 63 74 65 64 53 74 61 74 65 28 50 72 65 |electedState(Pre| 0000b970 66 73 2c 28 35 2a 50 72 6f 63 65 73 73 69 6e 67 |fs,(5*Processing| 0000b980 50 72 65 66 73 43 6f 75 6e 74 65 72 29 2b 33 36 |PrefsCounter)+36| 0000b990 29 20 8c 0d 2f 6c 1a 20 20 f4 20 54 75 72 6e 65 |) ../l. . Turne| 0000b9a0 64 20 4f 4e 20 69 6e 20 50 72 65 66 73 0d 2f 76 |d ON in Prefs./v| 0000b9b0 11 20 20 e7 20 55 25 21 30 3d 2d 31 20 8c 0d 2f |. . U%!0=-1 ../| 0000b9c0 80 1c 20 20 20 20 f4 20 4e 6f 74 20 6c 6f 61 64 |.. . Not load| 0000b9d0 65 64 20 61 6c 72 65 61 64 79 0d 2f 8a 1e 20 20 |ed already./.. | 0000b9e0 20 20 f4 20 4c 6f 61 64 20 69 74 20 70 65 72 6d | . Load it perm| 0000b9f0 61 6e 65 6e 74 6c 79 2e 0d 2f 94 59 20 20 20 20 |anently../.Y | 0000ba00 c8 99 20 22 57 69 6d 70 5f 53 74 61 72 74 54 61 |.. "Wimp_StartTa| 0000ba10 73 6b 22 2c 22 52 75 6e 20 3c 4f 6d 6e 69 44 65 |sk","Run <OmniDe| 0000ba20 73 6b 24 44 69 72 3e 2e 55 74 69 6c 69 74 69 65 |sk$Dir>.Utilitie| 0000ba30 73 2e 22 2b 24 28 55 25 2b 32 34 29 2b 22 20 2d |s."+$(U%+24)+" -| 0000ba40 4f 6d 6e 69 44 65 73 6b 22 2b c3 28 54 61 73 6b |OmniDesk"+.(Task| 0000ba50 29 0d 2f 9e 07 20 20 cc 0d 2f a8 18 20 20 20 20 |)./.. ../.. | 0000ba60 f4 20 4c 6f 61 64 65 64 20 61 6c 72 65 61 64 79 |. Loaded already| 0000ba70 0d 2f b2 43 20 20 20 20 f4 20 54 65 6c 6c 20 69 |./.C . Tell i| 0000ba80 74 20 74 6f 20 62 65 20 70 65 72 6d 61 6e 65 6e |t to be permanen| 0000ba90 74 20 69 6e 20 63 61 73 65 20 69 74 27 73 20 63 |t in case it's c| 0000baa0 75 72 72 65 6e 74 6c 79 20 74 72 61 6e 73 69 65 |urrently transie| 0000bab0 6e 74 2e 0d 2f bc 42 20 20 20 20 42 6c 6f 63 6b |nt../.B Block| 0000bac0 21 30 3d 32 30 3a 42 6c 6f 63 6b 21 31 32 3d 30 |!0=20:Block!12=0| 0000bad0 3a 42 6c 6f 63 6b 21 31 36 3d 55 74 69 6c 52 65 |:Block!16=UtilRe| 0000bae0 73 69 64 65 3a f4 20 4d 61 6b 65 20 70 65 72 6d |side:. Make perm| 0000baf0 61 6e 65 6e 74 0d 2f c6 2b 20 20 20 20 c8 99 20 |anent./.+ .. | 0000bb00 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 |"Wimp_SendMessag| 0000bb10 65 22 2c 31 37 2c 42 6c 6f 63 6b 2c 55 25 21 30 |e",17,Block,U%!0| 0000bb20 0d 2f d0 07 20 20 cd 0d 2f da 05 cc 0d 2f e4 1b |./.. ../..../..| 0000bb30 20 20 f4 20 54 75 72 6e 65 64 20 4f 46 46 20 69 | . Turned OFF i| 0000bb40 6e 20 50 72 65 66 73 0d 2f ee 11 20 20 e7 20 55 |n Prefs./.. . U| 0000bb50 25 21 30 3d 2d 31 20 8c 0d 2f f8 1c 20 20 20 20 |%!0=-1 ../.. | 0000bb60 f4 20 4e 6f 74 20 6c 6f 61 64 65 64 20 61 6c 72 |. Not loaded alr| 0000bb70 65 61 64 79 0d 30 02 24 20 20 20 20 f4 20 44 6f |eady.0.$ . Do| 0000bb80 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f 20 61 |n't need to do a| 0000bb90 6e 79 74 68 69 6e 67 2e 0d 30 0c 07 20 20 cc 0d |nything..0.. ..| 0000bba0 30 16 18 20 20 20 20 f4 20 4c 6f 61 64 65 64 20 |0.. . Loaded | 0000bbb0 61 6c 72 65 61 64 79 0d 30 20 17 20 20 20 20 f4 |already.0 . .| 0000bbc0 20 4d 61 6b 65 20 69 74 20 71 75 69 74 2e 0d 30 | Make it quit..0| 0000bbd0 2a 41 20 20 20 20 42 6c 6f 63 6b 21 30 3d 32 34 |*A Block!0=24| 0000bbe0 3a 42 6c 6f 63 6b 21 31 32 3d 30 3a 42 6c 6f 63 |:Block!12=0:Bloc| 0000bbf0 6b 21 31 36 3d 55 74 69 6c 51 75 69 74 74 69 6e |k!16=UtilQuittin| 0000bc00 67 3a 42 6c 6f 63 6b 21 32 30 3d 54 61 73 6b 0d |g:Block!20=Task.| 0000bc10 30 34 2b 20 20 20 20 c8 99 20 22 57 69 6d 70 5f |04+ .. "Wimp_| 0000bc20 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c |SendMessage",17,| 0000bc30 42 6c 6f 63 6b 2c 55 25 21 30 0d 30 3e 23 20 20 |Block,U%!0.0># | 0000bc40 20 20 55 25 21 30 3d 2d 31 3a f4 20 52 65 63 6f | U%!0=-1:. Reco| 0000bc50 72 64 20 69 74 20 61 73 20 71 75 69 74 0d 30 48 |rd it as quit.0H| 0000bc60 07 20 20 cd 0d 30 52 05 cd 0d 30 5c 1d 50 72 6f |. ..0R...0\.Pro| 0000bc70 63 65 73 73 69 6e 67 50 72 65 66 73 43 6f 75 6e |cessingPrefsCoun| 0000bc80 74 65 72 2b 3d 31 0d 30 66 05 e1 0d 30 70 05 3a |ter+=1.0f...0p.:| 0000bc90 0d 30 7a 1c dd 20 f2 46 69 6e 69 73 68 50 72 6f |.0z.. .FinishPro| 0000bca0 63 65 73 73 69 6e 67 50 72 65 66 73 0d 30 84 15 |cessingPrefs.0..| 0000bcb0 50 72 6f 63 65 73 73 69 6e 67 50 72 65 66 73 3d |ProcessingPrefs=| 0000bcc0 a3 0d 30 8e 23 f2 55 70 64 61 74 65 53 68 61 64 |..0.#.UpdateShad| 0000bcd0 65 64 46 6c 61 67 28 2d 32 2c 49 63 6f 6e 42 61 |edFlag(-2,IconBa| 0000bce0 72 2c a3 29 0d 30 98 23 f2 55 70 64 61 74 65 49 |r,.).0.#.UpdateI| 0000bcf0 63 6f 6e 43 6f 6c 6f 75 72 28 50 72 65 66 73 2c |conColour(Prefs,| 0000bd00 31 30 2c 37 2c 31 29 0d 30 a2 23 f2 55 70 64 61 |10,7,1).0.#.Upda| 0000bd10 74 65 49 63 6f 6e 43 6f 6c 6f 75 72 28 50 72 65 |teIconColour(Pre| 0000bd20 66 73 2c 31 31 2c 37 2c 31 29 0d 30 ac 38 e7 20 |fs,11,7,1).0.8. | 0000bd30 42 75 66 66 65 72 65 64 53 74 61 72 74 75 70 3e |BufferedStartup>| 0000bd40 2d 31 20 8c 20 f2 43 61 6c 6c 55 74 69 6c 69 74 |-1 . .CallUtilit| 0000bd50 79 28 42 75 66 66 65 72 65 64 53 74 61 72 74 75 |y(BufferedStartu| 0000bd60 70 29 0d 30 b6 16 42 75 66 66 65 72 65 64 53 74 |p).0..BufferedSt| 0000bd70 61 72 74 75 70 3d 2d 31 0d 30 c0 1e 57 61 69 74 |artup=-1.0..Wait| 0000bd80 54 6f 43 6c 6f 73 65 4c 6f 61 64 69 6e 67 57 69 |ToCloseLoadingWi| 0000bd90 6e 64 6f 77 3d 31 0d 30 ca 05 e1 0d 30 d4 05 3a |ndow=1.0....0..:| 0000bda0 0d 30 de 15 dd 20 f2 44 6f 50 72 65 66 73 4f 4b |.0... .DoPrefsOK| 0000bdb0 43 6c 69 63 6b 0d 30 e8 24 46 6c 61 73 68 69 6e |Click.0.$Flashin| 0000bdc0 67 3d a4 53 65 6c 65 63 74 65 64 53 74 61 74 65 |g=.SelectedState| 0000bdd0 28 50 72 65 66 73 2c 37 29 0d 30 f2 25 46 6c 61 |(Prefs,7).0.%Fla| 0000bde0 73 68 50 65 72 69 6f 64 28 30 29 3d a4 52 65 61 |shPeriod(0)=.Rea| 0000bdf0 64 49 63 6f 6e 28 50 72 65 66 73 2c 38 29 0d 30 |dIcon(Prefs,8).0| 0000be00 fc 25 46 6c 61 73 68 50 65 72 69 6f 64 28 31 29 |.%FlashPeriod(1)| 0000be10 3d a4 52 65 61 64 49 63 6f 6e 28 50 72 65 66 73 |=.ReadIcon(Prefs| 0000be20 2c 39 29 0d 31 06 12 e7 20 ac 20 46 6c 61 73 68 |,9).1... . Flash| 0000be30 69 6e 67 20 8c 0d 31 10 27 20 20 c8 99 20 22 57 |ing ..1.' .. "W| 0000be40 69 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 |imp_GetCaretPosi| 0000be50 74 69 6f 6e 22 2c 2c 43 61 72 65 74 0d 31 1a 2f |tion",,Caret.1./| 0000be60 20 20 43 61 72 65 74 21 31 36 3d 28 43 61 72 65 | Caret!16=(Care| 0000be70 74 21 31 36 20 80 20 ac 20 28 31 3c 3c 32 35 29 |t!16 . . (1<<25)| 0000be80 29 20 82 20 28 30 3c 3c 32 35 29 0d 31 24 53 20 |) . (0<<25).1$S | 0000be90 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 | .. "Wimp_SetCar| 0000bea0 65 74 50 6f 73 69 74 69 6f 6e 22 2c 43 61 72 65 |etPosition",Care| 0000beb0 74 21 30 2c 43 61 72 65 74 21 34 2c 43 61 72 65 |t!0,Caret!4,Care| 0000bec0 74 21 38 2c 43 61 72 65 74 21 31 32 2c 43 61 72 |t!8,Caret!12,Car| 0000bed0 65 74 21 31 36 2c 43 61 72 65 74 21 32 30 0d 31 |et!16,Caret!20.1| 0000bee0 2e 05 cd 0d 31 38 1f 53 65 6c 65 63 74 65 64 4c |....18.SelectedL| 0000bef0 6f 61 64 53 77 69 74 63 68 65 73 24 3d 22 59 59 |oadSwitches$="YY| 0000bf00 59 22 0d 31 42 18 e7 20 55 74 69 6c 69 74 69 65 |Y".1B.. Utilitie| 0000bf10 73 4b 6e 6f 77 6e 3e 30 20 8c 0d 31 4c 1c 20 20 |sKnown>0 ..1L. | 0000bf20 e3 20 4e 3d 31 20 b8 20 55 74 69 6c 69 74 69 65 |. N=1 . Utilitie| 0000bf30 73 4b 6e 6f 77 6e 0d 31 56 62 20 20 20 20 e7 20 |sKnown.1Vb . | 0000bf40 a4 53 65 6c 65 63 74 65 64 53 74 61 74 65 28 50 |.SelectedState(P| 0000bf50 72 65 66 73 2c 33 31 2b 28 35 2a 4e 29 29 20 8c |refs,31+(5*N)) .| 0000bf60 20 53 65 6c 65 63 74 65 64 4c 6f 61 64 53 77 69 | SelectedLoadSwi| 0000bf70 74 63 68 65 73 24 2b 3d 22 59 22 3a 8b 20 53 65 |tches$+="Y":. Se| 0000bf80 6c 65 63 74 65 64 4c 6f 61 64 53 77 69 74 63 68 |lectedLoadSwitch| 0000bf90 65 73 24 2b 3d 22 4e 22 0d 31 60 07 20 20 ed 0d |es$+="N".1`. ..| 0000bfa0 31 6a 05 cd 0d 31 74 16 f2 57 6f 72 6b 4f 75 74 |1j...1t..WorkOut| 0000bfb0 52 61 64 69 6f 50 72 65 66 73 0d 31 7e 2e 50 72 |RadioPrefs.1~.Pr| 0000bfc0 6f 63 65 73 73 69 6e 67 50 72 65 66 73 3d b9 3a |ocessingPrefs=.:| 0000bfd0 50 72 6f 63 65 73 73 69 6e 67 50 72 65 66 73 43 |ProcessingPrefsC| 0000bfe0 6f 75 6e 74 65 72 3d 30 0d 31 88 37 f4 20 54 68 |ounter=0.1.7. Th| 0000bff0 69 73 20 73 74 61 72 74 73 20 75 70 20 74 68 65 |is starts up the| 0000c000 20 6d 75 6c 74 69 2d 74 61 73 6b 69 6e 67 20 73 | multi-tasking s| 0000c010 77 69 74 63 68 69 6e 67 20 6f 6e 2f 6f 66 66 0d |witching on/off.| 0000c020 31 92 38 f4 20 6f 66 20 74 61 73 6b 73 20 61 73 |1.8. of tasks as| 0000c030 20 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 | specified by th| 0000c040 65 20 50 72 65 66 73 20 6f 70 74 69 6f 6e 20 62 |e Prefs option b| 0000c050 75 74 74 6f 6e 73 2e 0d 31 9c 07 20 20 3a 0d 31 |uttons..1.. :.1| 0000c060 a6 23 f2 55 70 64 61 74 65 53 68 61 64 65 64 46 |.#.UpdateShadedF| 0000c070 6c 61 67 28 2d 32 2c 49 63 6f 6e 42 61 72 2c b9 |lag(-2,IconBar,.| 0000c080 29 0d 31 b0 23 f2 55 70 64 61 74 65 49 63 6f 6e |).1.#.UpdateIcon| 0000c090 43 6f 6c 6f 75 72 28 50 72 65 66 73 2c 31 30 2c |Colour(Prefs,10,| 0000c0a0 33 2c 31 29 0d 31 ba 23 f2 55 70 64 61 74 65 49 |3,1).1.#.UpdateI| 0000c0b0 63 6f 6e 43 6f 6c 6f 75 72 28 50 72 65 66 73 2c |conColour(Prefs,| 0000c0c0 31 31 2c 33 2c 31 29 0d 31 c4 26 f2 4f 70 65 6e |11,3,1).1.&.Open| 0000c0d0 4c 6f 61 64 69 6e 67 57 69 6e 64 6f 77 28 22 53 |LoadingWindow("S| 0000c0e0 63 61 6e 6e 69 6e 67 20 2e 2e 2e 22 29 0d 31 ce |canning ...").1.| 0000c0f0 07 20 20 3a 0d 31 d8 4e f4 20 49 66 20 4f 6d 6e |. :.1.N. If Omn| 0000c100 69 44 65 73 6b 20 69 73 20 66 6c 61 73 68 69 6e |iDesk is flashin| 0000c110 67 20 74 68 65 20 63 61 72 65 74 20 77 68 69 6c |g the caret whil| 0000c120 73 74 20 70 72 6f 63 65 73 73 69 6e 67 20 74 68 |st processing th| 0000c130 65 20 70 72 65 66 65 72 65 6e 63 65 73 2c 20 74 |e preferences, t| 0000c140 68 65 0d 31 e2 4e f4 20 70 72 6f 63 65 73 73 69 |he.1.N. processi| 0000c150 6e 67 20 74 61 6b 65 73 20 61 20 76 65 72 79 20 |ng takes a very | 0000c160 73 69 67 6e 69 66 69 63 61 6e 74 6c 79 20 6c 6f |significantly lo| 0000c170 6e 67 65 72 20 74 69 6d 65 20 74 68 61 6e 20 69 |nger time than i| 0000c180 66 20 74 68 65 20 63 61 72 65 74 20 77 65 72 65 |f the caret were| 0000c190 0d 31 ec 4d f4 20 6e 6f 74 20 62 65 69 6e 67 20 |.1.M. not being | 0000c1a0 66 6c 61 73 68 65 64 20 28 61 73 20 4f 6d 6e 69 |flashed (as Omni| 0000c1b0 44 65 73 6b 20 63 61 6e 20 6f 6e 6c 79 20 64 65 |Desk can only de| 0000c1c0 61 6c 20 77 69 74 68 20 6f 6e 65 20 75 74 69 6c |al with one util| 0000c1d0 69 74 79 20 70 65 72 20 63 61 72 65 74 0d 31 f6 |ity per caret.1.| 0000c1e0 4d f4 20 66 6c 61 73 68 29 2e 20 54 68 65 72 65 |M. flash). There| 0000c1f0 66 6f 72 65 2c 20 75 6e 64 65 72 20 74 68 6f 73 |fore, under thos| 0000c200 65 20 63 69 72 63 75 6d 73 74 61 6e 63 65 73 20 |e circumstances | 0000c210 77 65 20 6e 65 65 64 20 74 6f 20 73 68 61 64 65 |we need to shade| 0000c220 20 74 68 65 20 69 63 6f 6e 2d 0d 32 00 4e f4 20 | the icon-.2.N. | 0000c230 62 61 72 20 69 63 6f 6e 20 73 6f 20 74 68 61 74 |bar icon so that| 0000c240 20 74 68 65 20 75 73 65 72 20 63 61 6e 27 74 20 | the user can't | 0000c250 75 70 73 65 74 20 74 68 65 20 70 72 6f 63 65 73 |upset the proces| 0000c260 73 2e 20 41 63 74 75 61 6c 6c 79 2c 20 74 68 65 |s. Actually, the| 0000c270 20 63 6f 64 65 20 69 73 0d 32 0a 4d f4 20 62 75 | code is.2.M. bu| 0000c280 69 6c 74 20 69 6e 74 6f 20 74 68 65 20 70 72 6f |ilt into the pro| 0000c290 67 72 61 6d 20 73 6f 20 74 68 61 74 20 69 66 20 |gram so that if | 0000c2a0 74 68 65 20 69 63 6f 6e 20 69 73 20 4e 4f 54 20 |the icon is NOT | 0000c2b0 73 68 61 64 65 64 2c 20 63 6c 69 63 6b 73 20 28 |shaded, clicks (| 0000c2c0 6f 74 68 65 72 0d 32 14 4d f4 20 74 68 61 6e 20 |other.2.M. than | 0000c2d0 4d 45 4e 55 29 20 77 69 6c 6c 20 62 65 20 69 67 |MENU) will be ig| 0000c2e0 6e 6f 72 65 64 20 75 6e 74 69 6c 20 70 72 6f 63 |nored until proc| 0000c2f0 65 73 73 69 6e 67 20 68 61 73 20 66 69 6e 69 73 |essing has finis| 0000c300 68 65 64 2c 20 77 68 65 72 65 75 70 6f 6e 20 74 |hed, whereupon t| 0000c310 68 65 0d 32 1e 4f f4 20 6c 61 73 74 20 63 6c 69 |he.2.O. last cli| 0000c320 63 6b 20 77 69 6c 6c 20 62 65 20 68 6f 6e 6f 75 |ck will be honou| 0000c330 72 65 64 2e 20 48 6f 77 65 76 65 72 2c 20 74 68 |red. However, th| 0000c340 69 73 20 69 73 20 61 20 62 69 74 20 73 6c 75 67 |is is a bit slug| 0000c350 67 69 73 68 20 69 6e 20 70 72 61 63 74 69 63 65 |gish in practice| 0000c360 2c 0d 32 28 47 f4 20 73 6f 20 49 20 68 61 76 65 |,.2(G. so I have| 0000c370 20 6d 61 64 65 20 74 68 65 20 69 63 6f 6e 20 67 | made the icon g| 0000c380 72 65 79 20 6f 75 74 20 77 68 65 6e 65 76 65 72 |rey out whenever| 0000c390 20 4f 4b 20 69 73 20 63 6c 69 63 6b 65 64 20 69 | OK is clicked i| 0000c3a0 6e 20 50 72 65 66 73 2e 0d 32 32 05 e1 0d 32 3c |n Prefs..22...2<| 0000c3b0 05 3a 0d 32 46 25 dd 20 f2 55 70 64 61 74 65 50 |.:.2F%. .UpdateP| 0000c3c0 72 65 66 73 57 69 6e 64 6f 77 42 65 66 6f 72 65 |refsWindowBefore| 0000c3d0 4f 70 65 6e 69 6e 67 0d 32 50 29 f2 55 70 64 61 |Opening.2P).Upda| 0000c3e0 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 50 |teSelectedFlag(P| 0000c3f0 72 65 66 73 2c 37 2c 46 6c 61 73 68 69 6e 67 29 |refs,7,Flashing)| 0000c400 0d 32 5a 2a f2 55 70 64 61 74 65 49 63 6f 6e 28 |.2Z*.UpdateIcon(| 0000c410 50 72 65 66 73 2c 38 2c c3 28 46 6c 61 73 68 50 |Prefs,8,.(FlashP| 0000c420 65 72 69 6f 64 28 30 29 29 29 0d 32 64 2a f2 55 |eriod(0))).2d*.U| 0000c430 70 64 61 74 65 49 63 6f 6e 28 50 72 65 66 73 2c |pdateIcon(Prefs,| 0000c440 39 2c c3 28 46 6c 61 73 68 50 65 72 69 6f 64 28 |9,.(FlashPeriod(| 0000c450 31 29 29 29 0d 32 6e 24 e3 20 4e 3d 31 20 b8 20 |1))).2n$. N=1 . | 0000c460 a9 28 53 65 6c 65 63 74 65 64 4c 6f 61 64 53 77 |.(SelectedLoadSw| 0000c470 69 74 63 68 65 73 24 29 0d 32 78 2f 20 20 f2 55 |itches$).2x/ .U| 0000c480 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000c490 67 28 50 72 65 66 73 2c 32 31 2b 28 35 2a 28 4e |g(Prefs,21+(5*(N| 0000c4a0 2d 31 29 29 2c a3 29 0d 32 82 53 20 20 e7 20 c1 |-1)),.).2.S . .| 0000c4b0 53 65 6c 65 63 74 65 64 4c 6f 61 64 53 77 69 74 |SelectedLoadSwit| 0000c4c0 63 68 65 73 24 2c 4e 2c 31 29 3d 22 59 22 20 8c |ches$,N,1)="Y" .| 0000c4d0 20 f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 | .UpdateSelected| 0000c4e0 46 6c 61 67 28 50 72 65 66 73 2c 32 31 2b 28 35 |Flag(Prefs,21+(5| 0000c4f0 2a 28 4e 2d 31 29 29 2c b9 29 0d 32 8c 05 ed 0d |*(N-1)),.).2....| 0000c500 32 96 1e e3 20 4e 3d 30 20 b8 20 28 55 74 69 6c |2... N=0 . (Util| 0000c510 69 74 69 65 73 4b 6e 6f 77 6e 2b 33 29 0d 32 a0 |itiesKnown+3).2.| 0000c520 68 20 20 e7 20 4e 3d 53 45 4c 45 43 54 55 74 69 |h . N=SELECTUti| 0000c530 6c 20 8c 20 f2 55 70 64 61 74 65 53 65 6c 65 63 |l . .UpdateSelec| 0000c540 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c 32 31 |tedFlag(Prefs,21| 0000c550 2b 28 35 2a 4e 29 2b 32 2c b9 29 20 8b 20 f2 55 |+(5*N)+2,.) . .U| 0000c560 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000c570 67 28 50 72 65 66 73 2c 32 31 2b 28 35 2a 4e 29 |g(Prefs,21+(5*N)| 0000c580 2b 32 2c a3 29 0d 32 aa 68 20 20 e7 20 4e 3d 44 |+2,.).2.h . N=D| 0000c590 52 41 47 55 74 69 6c 20 20 20 8c 20 f2 55 70 64 |RAGUtil . .Upd| 0000c5a0 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 |ateSelectedFlag(| 0000c5b0 50 72 65 66 73 2c 32 31 2b 28 35 2a 4e 29 2b 33 |Prefs,21+(5*N)+3| 0000c5c0 2c b9 29 20 8b 20 f2 55 70 64 61 74 65 53 65 6c |,.) . .UpdateSel| 0000c5d0 65 63 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c |ectedFlag(Prefs,| 0000c5e0 32 31 2b 28 35 2a 4e 29 2b 33 2c a3 29 0d 32 b4 |21+(5*N)+3,.).2.| 0000c5f0 68 20 20 e7 20 4e 3d 41 44 4a 55 53 54 55 74 69 |h . N=ADJUSTUti| 0000c600 6c 20 8c 20 f2 55 70 64 61 74 65 53 65 6c 65 63 |l . .UpdateSelec| 0000c610 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c 32 31 |tedFlag(Prefs,21| 0000c620 2b 28 35 2a 4e 29 2b 34 2c b9 29 20 8b 20 f2 55 |+(5*N)+4,.) . .U| 0000c630 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000c640 67 28 50 72 65 66 73 2c 32 31 2b 28 35 2a 4e 29 |g(Prefs,21+(5*N)| 0000c650 2b 34 2c a3 29 0d 32 be 05 ed 0d 32 c8 05 e1 0d |+4,.).2....2....| 0000c660 32 d2 05 3a 0d 32 dc 18 dd 20 f2 57 6f 72 6b 4f |2..:.2... .WorkO| 0000c670 75 74 52 61 64 69 6f 50 72 65 66 73 0d 32 e6 2f |utRadioPrefs.2./| 0000c680 4e 3d 30 3a 53 45 4c 45 43 54 55 74 69 6c 3d 2d |N=0:SELECTUtil=-| 0000c690 31 3a 41 44 4a 55 53 54 55 74 69 6c 3d 2d 31 3a |1:ADJUSTUtil=-1:| 0000c6a0 44 52 41 47 55 74 69 6c 3d 2d 31 0d 32 f0 05 f5 |DRAGUtil=-1.2...| 0000c6b0 0d 32 fa 37 20 20 e7 20 a4 53 65 6c 65 63 74 65 |.2.7 . .Selecte| 0000c6c0 64 53 74 61 74 65 28 50 72 65 66 73 2c 28 35 2a |dState(Prefs,(5*| 0000c6d0 4e 29 2b 32 31 2b 32 29 20 8c 20 53 45 4c 45 43 |N)+21+2) . SELEC| 0000c6e0 54 55 74 69 6c 3d 4e 0d 33 04 37 20 20 e7 20 a4 |TUtil=N.3.7 . .| 0000c6f0 53 65 6c 65 63 74 65 64 53 74 61 74 65 28 50 72 |SelectedState(Pr| 0000c700 65 66 73 2c 28 35 2a 4e 29 2b 32 31 2b 33 29 20 |efs,(5*N)+21+3) | 0000c710 8c 20 20 20 44 52 41 47 55 74 69 6c 3d 4e 0d 33 |. DRAGUtil=N.3| 0000c720 0e 37 20 20 e7 20 a4 53 65 6c 65 63 74 65 64 53 |.7 . .SelectedS| 0000c730 74 61 74 65 28 50 72 65 66 73 2c 28 35 2a 4e 29 |tate(Prefs,(5*N)| 0000c740 2b 32 31 2b 34 29 20 8c 20 41 44 4a 55 53 54 55 |+21+4) . ADJUSTU| 0000c750 74 69 6c 3d 4e 0d 33 18 0a 20 20 4e 2b 3d 31 0d |til=N.3.. N+=1.| 0000c760 33 22 1a fd 20 4e 3d 28 55 74 69 6c 69 74 69 65 |3".. N=(Utilitie| 0000c770 73 4b 6e 6f 77 6e 2b 33 29 0d 33 2c 13 c8 8e 20 |sKnown+3).3,... | 0000c780 53 45 4c 45 43 54 55 74 69 6c 20 ca 0d 33 36 2e |SELECTUtil ..36.| 0000c790 20 20 c9 20 2d 31 3a 53 45 4c 45 43 54 55 74 69 | . -1:SELECTUti| 0000c7a0 6c 24 3d 22 22 3a 53 45 4c 45 43 54 48 65 6c 70 |l$="":SELECTHelp| 0000c7b0 24 3d 22 22 3a f4 20 4f 66 66 0d 33 40 44 20 20 |$="":. Off.3@D | 0000c7c0 c9 20 30 3a 53 45 4c 45 43 54 55 74 69 6c 24 3d |. 0:SELECTUtil$=| 0000c7d0 22 4c 6f 63 61 74 65 20 63 61 72 65 74 22 3a 53 |"Locate caret":S| 0000c7e0 45 4c 45 43 54 48 65 6c 70 24 3d 22 6c 6f 63 61 |ELECTHelp$="loca| 0000c7f0 74 65 20 74 68 65 20 63 61 72 65 74 2e 22 0d 33 |te the caret.".3| 0000c800 4a 48 20 20 c9 20 31 3a 53 45 4c 45 43 54 55 74 |JH . 1:SELECTUt| 0000c810 69 6c 24 3d 22 54 75 72 6e 20 63 61 72 65 74 20 |il$="Turn caret | 0000c820 6f 66 66 22 3a 53 45 4c 45 43 54 48 65 6c 70 24 |off":SELECTHelp$| 0000c830 3d 22 74 75 72 6e 20 74 68 65 20 63 61 72 65 74 |="turn the caret| 0000c840 20 6f 66 66 2e 22 0d 33 54 67 20 20 c9 20 32 3a | off.".3Tg . 2:| 0000c850 53 45 4c 45 43 54 55 74 69 6c 24 3d 22 44 69 73 |SELECTUtil$="Dis| 0000c860 70 6c 61 79 20 73 70 72 69 74 65 22 3a 53 45 4c |play sprite":SEL| 0000c870 45 43 54 48 65 6c 70 24 3d 22 6f 70 65 6e 20 61 |ECTHelp$="open a| 0000c880 20 77 69 6e 64 6f 77 20 74 6f 20 61 63 63 65 70 | window to accep| 0000c890 74 20 61 20 73 70 72 69 74 65 20 66 69 6c 65 20 |t a sprite file | 0000c8a0 66 6f 72 20 64 69 73 70 6c 61 79 2e 22 0d 33 5e |for display.".3^| 0000c8b0 07 20 20 7f 0d 33 68 27 20 20 20 20 55 25 3d 53 |. ..3h' U%=S| 0000c8c0 6c 6f 74 45 6e 64 2b 28 31 38 38 2a 28 53 45 4c |lotEnd+(188*(SEL| 0000c8d0 45 43 54 55 74 69 6c 2d 33 29 29 0d 33 72 30 20 |ECTUtil-3)).3r0 | 0000c8e0 20 20 20 53 45 4c 45 43 54 55 74 69 6c 24 3d 24 | SELECTUtil$=$| 0000c8f0 28 55 25 2b 34 29 3a 53 45 4c 45 43 54 48 65 6c |(U%+4):SELECTHel| 0000c900 70 24 3d 24 28 55 25 2b 33 35 29 0d 33 7c 50 20 |p$=$(U%+35).3|P | 0000c910 20 20 20 e7 20 53 45 4c 45 43 54 48 65 6c 70 24 | . SELECTHelp$| 0000c920 3d 22 22 20 8c 20 53 45 4c 45 43 54 48 65 6c 70 |="" . SELECTHelp| 0000c930 24 3d 22 6f 70 65 6e 20 61 20 77 69 6e 64 6f 77 |$="open a window| 0000c940 20 74 6f 20 61 63 63 65 70 74 20 61 20 64 72 61 | to accept a dra| 0000c950 67 67 65 64 20 66 69 6c 65 2e 22 0d 33 86 05 cb |gged file.".3...| 0000c960 0d 33 90 13 c8 8e 20 41 44 4a 55 53 54 55 74 69 |.3.... ADJUSTUti| 0000c970 6c 20 ca 0d 33 9a 2e 20 20 c9 20 2d 31 3a 41 44 |l ..3.. . -1:AD| 0000c980 4a 55 53 54 55 74 69 6c 24 3d 22 22 3a 41 44 4a |JUSTUtil$="":ADJ| 0000c990 55 53 54 48 65 6c 70 24 3d 22 22 3a f4 20 4f 66 |USTHelp$="":. Of| 0000c9a0 66 0d 33 a4 44 20 20 c9 20 30 3a 41 44 4a 55 53 |f.3.D . 0:ADJUS| 0000c9b0 54 55 74 69 6c 24 3d 22 4c 6f 63 61 74 65 20 63 |TUtil$="Locate c| 0000c9c0 61 72 65 74 22 3a 41 44 4a 55 53 54 48 65 6c 70 |aret":ADJUSTHelp| 0000c9d0 24 3d 22 6c 6f 63 61 74 65 20 74 68 65 20 63 61 |$="locate the ca| 0000c9e0 72 65 74 2e 22 0d 33 ae 48 20 20 c9 20 31 3a 41 |ret.".3.H . 1:A| 0000c9f0 44 4a 55 53 54 55 74 69 6c 24 3d 22 54 75 72 6e |DJUSTUtil$="Turn| 0000ca00 20 63 61 72 65 74 20 6f 66 66 22 3a 41 44 4a 55 | caret off":ADJU| 0000ca10 53 54 48 65 6c 70 24 3d 22 74 75 72 6e 20 74 68 |STHelp$="turn th| 0000ca20 65 20 63 61 72 65 74 20 6f 66 66 2e 22 0d 33 b8 |e caret off.".3.| 0000ca30 67 20 20 c9 20 32 3a 41 44 4a 55 53 54 55 74 69 |g . 2:ADJUSTUti| 0000ca40 6c 24 3d 22 44 69 73 70 6c 61 79 20 73 70 72 69 |l$="Display spri| 0000ca50 74 65 22 3a 41 44 4a 55 53 54 48 65 6c 70 24 3d |te":ADJUSTHelp$=| 0000ca60 22 6f 70 65 6e 20 61 20 77 69 6e 64 6f 77 20 74 |"open a window t| 0000ca70 6f 20 61 63 63 65 70 74 20 61 20 73 70 72 69 74 |o accept a sprit| 0000ca80 65 20 66 69 6c 65 20 66 6f 72 20 64 69 73 70 6c |e file for displ| 0000ca90 61 79 2e 22 0d 33 c2 07 20 20 7f 0d 33 cc 27 20 |ay.".3.. ..3.' | 0000caa0 20 20 20 55 25 3d 53 6c 6f 74 45 6e 64 2b 28 31 | U%=SlotEnd+(1| 0000cab0 38 38 2a 28 41 44 4a 55 53 54 55 74 69 6c 2d 33 |88*(ADJUSTUtil-3| 0000cac0 29 29 0d 33 d6 30 20 20 20 20 41 44 4a 55 53 54 |)).3.0 ADJUST| 0000cad0 55 74 69 6c 24 3d 24 28 55 25 2b 34 29 3a 41 44 |Util$=$(U%+4):AD| 0000cae0 4a 55 53 54 48 65 6c 70 24 3d 24 28 55 25 2b 33 |JUSTHelp$=$(U%+3| 0000caf0 35 29 0d 33 e0 50 20 20 20 20 e7 20 41 44 4a 55 |5).3.P . ADJU| 0000cb00 53 54 48 65 6c 70 24 3d 22 22 20 8c 20 41 44 4a |STHelp$="" . ADJ| 0000cb10 55 53 54 48 65 6c 70 24 3d 22 6f 70 65 6e 20 61 |USTHelp$="open a| 0000cb20 20 77 69 6e 64 6f 77 20 74 6f 20 61 63 63 65 70 | window to accep| 0000cb30 74 20 61 20 64 72 61 67 67 65 64 20 66 69 6c 65 |t a dragged file| 0000cb40 2e 22 0d 33 ea 05 cb 0d 33 f4 11 c8 8e 20 44 52 |.".3....3.... DR| 0000cb50 41 47 55 74 69 6c 20 ca 0d 33 fe 2e 20 20 c9 20 |AGUtil ..3.. . | 0000cb60 2d 31 2c 30 2c 31 3a 44 52 41 47 55 74 69 6c 24 |-1,0,1:DRAGUtil$| 0000cb70 3d 22 22 3a 44 52 41 47 48 65 6c 70 24 3d 22 22 |="":DRAGHelp$=""| 0000cb80 3a f4 20 4f 66 66 0d 34 08 60 20 20 c9 20 32 3a |:. Off.4.` . 2:| 0000cb90 44 52 41 47 55 74 69 6c 24 3d 22 44 69 73 70 6c |DRAGUtil$="Displ| 0000cba0 61 79 20 73 70 72 69 74 65 22 3a 44 52 41 47 48 |ay sprite":DRAGH| 0000cbb0 65 6c 70 24 3d 22 44 72 61 67 20 61 20 73 70 72 |elp$="Drag a spr| 0000cbc0 69 74 65 20 68 65 72 65 20 74 6f 20 64 69 73 70 |ite here to disp| 0000cbd0 6c 61 79 20 69 74 20 6f 6e 20 74 68 65 20 73 63 |lay it on the sc| 0000cbe0 72 65 65 6e 2e 22 0d 34 12 07 20 20 7f 0d 34 1c |reen.".4.. ..4.| 0000cbf0 25 20 20 20 20 55 25 3d 53 6c 6f 74 45 6e 64 2b |% U%=SlotEnd+| 0000cc00 28 31 38 38 2a 28 44 52 41 47 55 74 69 6c 2d 33 |(188*(DRAGUtil-3| 0000cc10 29 29 0d 34 26 2d 20 20 20 20 44 52 41 47 55 74 |)).4&- DRAGUt| 0000cc20 69 6c 24 3d 24 28 55 25 2b 34 29 3a 44 52 41 47 |il$=$(U%+4):DRAG| 0000cc30 48 65 6c 70 24 3d 24 28 55 25 2b 31 31 32 29 0d |Help$=$(U%+112).| 0000cc40 34 30 05 cb 0d 34 3a 05 e1 0d 34 44 05 3a 0d 34 |40...4:...4D.:.4| 0000cc50 4e 13 dd 20 a4 53 61 76 65 53 65 74 74 69 6e 67 |N.. .SaveSetting| 0000cc60 73 0d 34 58 07 ea 20 85 0d 34 62 3c ee 20 85 20 |s.4X.. ..4b<. . | 0000cc70 ea 20 f7 20 85 3a f2 43 6c 6f 73 65 46 69 6c 65 |. . .:.CloseFile| 0000cc80 49 66 50 6f 73 73 28 44 61 74 61 29 3a 3d a3 3a |IfPoss(Data):=.:| 0000cc90 f4 20 45 72 72 6f 72 20 77 72 69 74 69 6e 67 20 |. Error writing | 0000cca0 66 69 6c 65 0d 34 6c 07 20 20 3a 0d 34 76 28 20 |file.4l. :.4v( | 0000ccb0 20 44 61 74 61 3d ae 20 28 22 3c 4f 6d 6e 69 44 | Data=. ("<OmniD| 0000ccc0 65 73 6b 24 44 69 72 3e 2e 53 65 74 74 69 6e 67 |esk$Dir>.Setting| 0000ccd0 73 22 29 0d 34 80 3b 20 20 d5 23 44 61 74 61 2c |s").4.; .#Data,| 0000cce0 22 7c 20 46 6c 61 73 68 69 6e 67 20 63 61 72 65 |"| Flashing care| 0000ccf0 74 20 28 2d 31 20 66 6f 72 20 54 52 55 45 2c 20 |t (-1 for TRUE, | 0000cd00 30 20 66 6f 72 20 46 41 4c 53 45 29 3a 22 0d 34 |0 for FALSE):".4| 0000cd10 8a 27 20 20 d5 23 44 61 74 61 2c c3 28 a4 53 65 |.' .#Data,.(.Se| 0000cd20 6c 65 63 74 65 64 53 74 61 74 65 28 50 72 65 66 |lectedState(Pref| 0000cd30 73 2c 37 29 29 0d 34 94 47 20 20 d5 23 44 61 74 |s,7)).4.G .#Dat| 0000cd40 61 2c 22 7c 20 43 61 72 65 74 20 66 6c 61 73 68 |a,"| Caret flash| 0000cd50 20 6f 6e 20 61 6e 64 20 6f 66 66 20 70 65 72 69 | on and off peri| 0000cd60 6f 64 73 20 28 69 6e 20 31 30 74 68 73 20 6f 66 |ods (in 10ths of| 0000cd70 20 61 20 73 65 63 6f 6e 64 29 3a 22 0d 34 9e 22 | a second):".4."| 0000cd80 20 20 d5 23 44 61 74 61 2c a4 52 65 61 64 49 63 | .#Data,.ReadIc| 0000cd90 6f 6e 53 74 72 28 50 72 65 66 73 2c 38 29 0d 34 |onStr(Prefs,8).4| 0000cda0 a8 22 20 20 d5 23 44 61 74 61 2c a4 52 65 61 64 |." .#Data,.Read| 0000cdb0 49 63 6f 6e 53 74 72 28 50 72 65 66 73 2c 39 29 |IconStr(Prefs,9)| 0000cdc0 0d 34 b2 48 20 20 d5 23 44 61 74 61 2c 22 7c 20 |.4.H .#Data,"| | 0000cdd0 55 74 69 6c 69 74 79 20 74 6f 20 61 63 74 69 76 |Utility to activ| 0000cde0 61 74 65 20 77 69 74 68 20 53 45 4c 45 43 54 20 |ate with SELECT | 0000cdf0 63 6c 69 63 6b 20 6f 6e 20 69 63 6f 6e 2d 62 61 |click on icon-ba| 0000ce00 72 20 69 63 6f 6e 3a 22 0d 34 bc 18 20 20 d5 23 |r icon:".4.. .#| 0000ce10 44 61 74 61 2c 53 45 4c 45 43 54 55 74 69 6c 24 |Data,SELECTUtil$| 0000ce20 0d 34 c6 48 20 20 d5 23 44 61 74 61 2c 22 7c 20 |.4.H .#Data,"| | 0000ce30 55 74 69 6c 69 74 79 20 74 6f 20 61 63 74 69 76 |Utility to activ| 0000ce40 61 74 65 20 77 69 74 68 20 41 44 4a 55 53 54 20 |ate with ADJUST | 0000ce50 63 6c 69 63 6b 20 6f 6e 20 69 63 6f 6e 2d 62 61 |click on icon-ba| 0000ce60 72 20 69 63 6f 6e 3a 22 0d 34 d0 18 20 20 d5 23 |r icon:".4.. .#| 0000ce70 44 61 74 61 2c 41 44 4a 55 53 54 55 74 69 6c 24 |Data,ADJUSTUtil$| 0000ce80 0d 34 da 48 20 20 d5 23 44 61 74 61 2c 22 7c 20 |.4.H .#Data,"| | 0000ce90 55 74 69 6c 69 74 79 20 74 6f 20 61 63 74 69 76 |Utility to activ| 0000cea0 61 74 65 20 77 68 65 6e 20 66 69 6c 65 20 64 72 |ate when file dr| 0000ceb0 61 67 67 65 64 20 74 6f 20 69 63 6f 6e 2d 62 61 |agged to icon-ba| 0000cec0 72 20 69 63 6f 6e 3a 22 0d 34 e4 16 20 20 d5 23 |r icon:".4.. .#| 0000ced0 44 61 74 61 2c 44 52 41 47 55 74 69 6c 24 0d 34 |Data,DRAGUtil$.4| 0000cee0 ee 28 20 20 d5 23 44 61 74 61 2c 22 7c 20 55 74 |.( .#Data,"| Ut| 0000cef0 69 6c 69 74 69 65 73 20 74 6f 20 61 75 74 6f 2d |ilities to auto-| 0000cf00 6c 6f 61 64 3a 22 0d 34 f8 1b 20 20 e7 20 55 74 |load:".4.. . Ut| 0000cf10 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 3c 3e 30 20 |ilitiesKnown<>0 | 0000cf20 8c 0d 35 02 0d 20 20 20 20 4e 3d 30 3a f5 0d 35 |..5.. N=0:..5| 0000cf30 0c 1c 20 20 20 20 20 20 55 25 3d 53 6c 6f 74 45 |.. U%=SlotE| 0000cf40 6e 64 2b 28 31 38 38 2a 4e 29 0d 35 16 0e 20 20 |nd+(188*N).5.. | 0000cf50 20 20 20 20 4e 2b 3d 31 0d 35 20 3c 20 20 20 20 | N+=1.5 < | 0000cf60 20 20 e7 20 a4 53 65 6c 65 63 74 65 64 53 74 61 | . .SelectedSta| 0000cf70 74 65 28 50 72 65 66 73 2c 28 35 2a 4e 29 2b 33 |te(Prefs,(5*N)+3| 0000cf80 31 29 20 8c 20 d5 23 44 61 74 61 2c 24 28 55 25 |1) . .#Data,$(U%| 0000cf90 2b 32 34 29 0d 35 2a 1a 20 20 20 20 fd 20 4e 3d |+24).5*. . N=| 0000cfa0 55 74 69 6c 69 74 69 65 73 4b 6e 6f 77 6e 0d 35 |UtilitiesKnown.5| 0000cfb0 34 07 20 20 cd 0d 35 3e 0c 20 20 d9 23 44 61 74 |4. ..5>. .#Dat| 0000cfc0 61 0d 35 48 2f 20 20 ff 28 22 53 65 74 74 79 70 |a.5H/ .("Settyp| 0000cfd0 65 20 3c 4f 6d 6e 69 44 65 73 6b 24 44 69 72 3e |e <OmniDesk$Dir>| 0000cfe0 2e 53 65 74 74 69 6e 67 73 20 54 65 78 74 22 29 |.Settings Text")| 0000cff0 0d 35 52 07 20 20 3a 0d 35 5c 06 3d b9 0d 35 66 |.5R. :.5\.=..5f| 0000d000 05 3a 0d 35 70 13 dd 20 a4 4c 6f 61 64 53 65 74 |.:.5p.. .LoadSet| 0000d010 74 69 6e 67 73 0d 35 7a 07 ea 20 85 0d 35 84 4f |tings.5z.. ..5.O| 0000d020 ee 20 85 20 ea 20 f7 20 85 3a f2 43 6c 6f 73 65 |. . . . .:.Close| 0000d030 46 69 6c 65 49 66 50 6f 73 73 28 44 61 74 61 29 |FileIfPoss(Data)| 0000d040 3a 3d a3 3a f4 20 27 53 65 74 74 69 6e 67 73 27 |:=.:. 'Settings'| 0000d050 20 66 69 6c 65 20 69 73 20 64 61 6d 61 67 65 64 | file is damaged| 0000d060 20 6f 72 20 6d 69 73 73 69 6e 67 0d 35 8e 07 20 | or missing.5.. | 0000d070 20 3a 0d 35 98 26 20 20 44 61 74 61 3d 8e 20 22 | :.5.& Data=. "| 0000d080 3c 4f 6d 6e 69 44 65 73 6b 24 44 69 72 3e 2e 53 |<OmniDesk$Dir>.S| 0000d090 65 74 74 69 6e 67 73 22 0d 35 a2 30 20 20 f2 55 |ettings".5.0 .U| 0000d0a0 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000d0b0 67 28 50 72 65 66 73 2c 37 2c bb 28 a4 4e 65 78 |g(Prefs,7,.(.Nex| 0000d0c0 74 45 6e 74 72 79 29 29 0d 35 ac 25 20 20 f2 55 |tEntry)).5.% .U| 0000d0d0 70 64 61 74 65 49 63 6f 6e 28 50 72 65 66 73 2c |pdateIcon(Prefs,| 0000d0e0 38 2c a4 4e 65 78 74 45 6e 74 72 79 29 0d 35 b6 |8,.NextEntry).5.| 0000d0f0 25 20 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 50 |% .UpdateIcon(P| 0000d100 72 65 66 73 2c 39 2c a4 4e 65 78 74 45 6e 74 72 |refs,9,.NextEntr| 0000d110 79 29 0d 35 c0 0c 20 20 d9 23 44 61 74 61 0d 35 |y).5.. .#Data.5| 0000d120 ca 07 20 20 3a 0d 35 d4 26 20 20 46 6c 61 73 68 |.. :.5.& Flash| 0000d130 69 6e 67 3d a4 53 65 6c 65 63 74 65 64 53 74 61 |ing=.SelectedSta| 0000d140 74 65 28 50 72 65 66 73 2c 37 29 0d 35 de 27 20 |te(Prefs,7).5.' | 0000d150 20 46 6c 61 73 68 50 65 72 69 6f 64 28 30 29 3d | FlashPeriod(0)=| 0000d160 a4 52 65 61 64 49 63 6f 6e 28 50 72 65 66 73 2c |.ReadIcon(Prefs,| 0000d170 38 29 0d 35 e8 27 20 20 46 6c 61 73 68 50 65 72 |8).5.' FlashPer| 0000d180 69 6f 64 28 31 29 3d a4 52 65 61 64 49 63 6f 6e |iod(1)=.ReadIcon| 0000d190 28 50 72 65 66 73 2c 39 29 0d 35 f2 07 20 20 3a |(Prefs,9).5.. :| 0000d1a0 0d 35 fc 06 3d b9 0d 36 06 05 3a 0d 36 10 17 dd |.5..=..6..:.6...| 0000d1b0 20 a4 46 69 6e 64 49 42 43 6c 69 63 6b 55 74 69 | .FindIBClickUti| 0000d1c0 6c 73 0d 36 1a 07 ea 20 85 0d 36 24 4f ee 20 85 |ls.6... ..6$O. .| 0000d1d0 20 ea 20 f7 20 85 3a f2 43 6c 6f 73 65 46 69 6c | . . .:.CloseFil| 0000d1e0 65 49 66 50 6f 73 73 28 44 61 74 61 29 3a 3d a3 |eIfPoss(Data):=.| 0000d1f0 3a f4 20 27 53 65 74 74 69 6e 67 73 27 20 66 69 |:. 'Settings' fi| 0000d200 6c 65 20 69 73 20 64 61 6d 61 67 65 64 20 6f 72 |le is damaged or| 0000d210 20 6d 69 73 73 69 6e 67 0d 36 2e 07 20 20 3a 0d | missing.6.. :.| 0000d220 36 38 26 20 20 44 61 74 61 3d 8e 20 22 3c 4f 6d |68& Data=. "<Om| 0000d230 6e 69 44 65 73 6b 24 44 69 72 3e 2e 53 65 74 74 |niDesk$Dir>.Sett| 0000d240 69 6e 67 73 22 0d 36 42 3c 20 20 e3 20 4e 3d 31 |ings".6B< . N=1| 0000d250 20 b8 20 33 3a 41 24 3d a4 4e 65 78 74 45 6e 74 | . 3:A$=.NextEnt| 0000d260 72 79 3a ed 3a f4 20 49 67 6e 6f 72 65 20 66 69 |ry:.:. Ignore fi| 0000d270 72 73 74 20 74 68 72 65 65 20 65 6e 74 72 69 65 |rst three entrie| 0000d280 73 0d 36 4c 1c 20 20 53 45 4c 45 43 54 55 74 69 |s.6L. SELECTUti| 0000d290 6c 24 3d a4 4e 65 78 74 45 6e 74 72 79 0d 36 56 |l$=.NextEntry.6V| 0000d2a0 1c 20 20 41 44 4a 55 53 54 55 74 69 6c 24 3d a4 |. ADJUSTUtil$=.| 0000d2b0 4e 65 78 74 45 6e 74 72 79 0d 36 60 1a 20 20 44 |NextEntry.6`. D| 0000d2c0 52 41 47 55 74 69 6c 24 3d a4 4e 65 78 74 45 6e |RAGUtil$=.NextEn| 0000d2d0 74 72 79 0d 36 6a 0c 20 20 d9 23 44 61 74 61 0d |try.6j. .#Data.| 0000d2e0 36 74 07 20 20 3a 0d 36 7e 30 20 20 f4 20 54 68 |6t. :.6~0 . Th| 0000d2f0 65 73 65 20 61 72 65 20 74 68 65 20 69 6e 2d 62 |ese are the in-b| 0000d300 75 69 6c 74 20 6f 70 74 69 6f 6e 73 3b 20 74 68 |uilt options; th| 0000d310 65 20 72 65 73 74 0d 36 88 32 20 20 f4 20 77 69 |e rest.6.2 . wi| 0000d320 6c 6c 20 62 65 20 63 61 74 65 72 65 64 20 66 6f |ll be catered fo| 0000d330 72 20 61 73 20 74 68 65 20 74 61 73 6b 73 20 73 |r as the tasks s| 0000d340 74 61 72 74 20 75 70 3a 0d 36 92 16 20 20 c8 8e |tart up:.6.. ..| 0000d350 20 53 45 4c 45 43 54 55 74 69 6c 24 20 ca 0d 36 | SELECTUtil$ ..6| 0000d360 9c 65 20 20 20 20 c9 20 22 4c 6f 63 61 74 65 20 |.e . "Locate | 0000d370 63 61 72 65 74 22 3a 53 45 4c 45 43 54 55 74 69 |caret":SELECTUti| 0000d380 6c 3d 30 3a f2 55 70 64 61 74 65 53 65 6c 65 63 |l=0:.UpdateSelec| 0000d390 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c 32 33 |tedFlag(Prefs,23| 0000d3a0 2c b9 29 3a 53 45 4c 45 43 54 48 65 6c 70 24 3d |,.):SELECTHelp$=| 0000d3b0 22 6c 6f 63 61 74 65 20 74 68 65 20 63 61 72 65 |"locate the care| 0000d3c0 74 2e 22 0d 36 a6 69 20 20 20 20 c9 20 22 54 75 |t.".6.i . "Tu| 0000d3d0 72 6e 20 63 61 72 65 74 20 6f 66 66 22 3a 53 45 |rn caret off":SE| 0000d3e0 4c 45 43 54 55 74 69 6c 3d 31 3a f2 55 70 64 61 |LECTUtil=1:.Upda| 0000d3f0 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 50 |teSelectedFlag(P| 0000d400 72 65 66 73 2c 32 38 2c b9 29 3a 53 45 4c 45 43 |refs,28,.):SELEC| 0000d410 54 48 65 6c 70 24 3d 22 74 75 72 6e 20 74 68 65 |THelp$="turn the| 0000d420 20 63 61 72 65 74 20 6f 66 66 2e 22 0d 36 b0 88 | caret off.".6..| 0000d430 20 20 20 20 c9 20 22 44 69 73 70 6c 61 79 20 73 | . "Display s| 0000d440 70 72 69 74 65 22 3a 53 45 4c 45 43 54 55 74 69 |prite":SELECTUti| 0000d450 6c 3d 32 3a f2 55 70 64 61 74 65 53 65 6c 65 63 |l=2:.UpdateSelec| 0000d460 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c 33 33 |tedFlag(Prefs,33| 0000d470 2c b9 29 3a 53 45 4c 45 43 54 48 65 6c 70 24 3d |,.):SELECTHelp$=| 0000d480 22 6f 70 65 6e 20 61 20 77 69 6e 64 6f 77 20 74 |"open a window t| 0000d490 6f 20 61 63 63 65 70 74 20 61 20 73 70 72 69 74 |o accept a sprit| 0000d4a0 65 20 66 69 6c 65 20 66 6f 72 20 64 69 73 70 6c |e file for displ| 0000d4b0 61 79 2e 22 0d 36 ba 07 20 20 cb 0d 36 c4 16 20 |ay.".6.. ..6.. | 0000d4c0 20 c8 8e 20 41 44 4a 55 53 54 55 74 69 6c 24 20 | .. ADJUSTUtil$ | 0000d4d0 ca 0d 36 ce 65 20 20 20 20 c9 20 22 4c 6f 63 61 |..6.e . "Loca| 0000d4e0 74 65 20 63 61 72 65 74 22 3a 41 44 4a 55 53 54 |te caret":ADJUST| 0000d4f0 55 74 69 6c 3d 30 3a f2 55 70 64 61 74 65 53 65 |Util=0:.UpdateSe| 0000d500 6c 65 63 74 65 64 46 6c 61 67 28 50 72 65 66 73 |lectedFlag(Prefs| 0000d510 2c 32 35 2c b9 29 3a 41 44 4a 55 53 54 48 65 6c |,25,.):ADJUSTHel| 0000d520 70 24 3d 22 6c 6f 63 61 74 65 20 74 68 65 20 63 |p$="locate the c| 0000d530 61 72 65 74 2e 22 0d 36 d8 69 20 20 20 20 c9 20 |aret.".6.i . | 0000d540 22 54 75 72 6e 20 63 61 72 65 74 20 6f 66 66 22 |"Turn caret off"| 0000d550 3a 41 44 4a 55 53 54 55 74 69 6c 3d 31 3a f2 55 |:ADJUSTUtil=1:.U| 0000d560 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000d570 67 28 50 72 65 66 73 2c 33 30 2c b9 29 3a 41 44 |g(Prefs,30,.):AD| 0000d580 4a 55 53 54 48 65 6c 70 24 3d 22 74 75 72 6e 20 |JUSTHelp$="turn | 0000d590 74 68 65 20 63 61 72 65 74 20 6f 66 66 2e 22 0d |the caret off.".| 0000d5a0 36 e2 88 20 20 20 20 c9 20 22 44 69 73 70 6c 61 |6.. . "Displa| 0000d5b0 79 20 73 70 72 69 74 65 22 3a 41 44 4a 55 53 54 |y sprite":ADJUST| 0000d5c0 55 74 69 6c 3d 32 3a f2 55 70 64 61 74 65 53 65 |Util=2:.UpdateSe| 0000d5d0 6c 65 63 74 65 64 46 6c 61 67 28 50 72 65 66 73 |lectedFlag(Prefs| 0000d5e0 2c 33 35 2c b9 29 3a 41 44 4a 55 53 54 48 65 6c |,35,.):ADJUSTHel| 0000d5f0 70 24 3d 22 6f 70 65 6e 20 61 20 77 69 6e 64 6f |p$="open a windo| 0000d600 77 20 74 6f 20 61 63 63 65 70 74 20 61 20 73 70 |w to accept a sp| 0000d610 72 69 74 65 20 66 69 6c 65 20 66 6f 72 20 64 69 |rite file for di| 0000d620 73 70 6c 61 79 2e 22 0d 36 ec 07 20 20 cb 0d 36 |splay.".6.. ..6| 0000d630 f6 8b 20 20 e7 20 44 52 41 47 55 74 69 6c 24 3d |.. . DRAGUtil$=| 0000d640 22 44 69 73 70 6c 61 79 20 73 70 72 69 74 65 22 |"Display sprite"| 0000d650 20 8c 20 44 52 41 47 55 74 69 6c 3d 32 3a f2 55 | . DRAGUtil=2:.U| 0000d660 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 |pdateSelectedFla| 0000d670 67 28 50 72 65 66 73 2c 33 34 2c b9 29 3a 44 52 |g(Prefs,34,.):DR| 0000d680 41 47 48 65 6c 70 24 3d 22 44 72 61 67 20 61 20 |AGHelp$="Drag a | 0000d690 73 70 72 69 74 65 20 68 65 72 65 20 74 6f 20 64 |sprite here to d| 0000d6a0 69 73 70 6c 61 79 20 69 74 20 6f 6e 20 74 68 65 |isplay it on the| 0000d6b0 20 73 63 72 65 65 6e 2e 22 0d 37 00 07 20 20 3a | screen.".7.. :| 0000d6c0 0d 37 0a 06 3d b9 0d 37 14 05 3a 0d 37 1e 16 dd |.7..=..7..:.7...| 0000d6d0 20 f2 44 65 66 61 75 6c 74 53 65 74 74 69 6e 67 | .DefaultSetting| 0000d6e0 73 0d 37 28 2b 53 45 4c 45 43 54 55 74 69 6c 3d |s.7(+SELECTUtil=| 0000d6f0 2d 31 3a 41 44 4a 55 53 54 55 74 69 6c 3d 2d 31 |-1:ADJUSTUtil=-1| 0000d700 3a 44 52 41 47 55 74 69 6c 3d 2d 31 0d 37 32 2e |:DRAGUtil=-1.72.| 0000d710 53 45 4c 45 43 54 55 74 69 6c 24 3d 22 22 3a 41 |SELECTUtil$="":A| 0000d720 44 4a 55 53 54 55 74 69 6c 24 3d 22 22 3a 44 52 |DJUSTUtil$="":DR| 0000d730 41 47 55 74 69 6c 24 3d 22 22 0d 37 3c 2e 53 45 |AGUtil$="".7<.SE| 0000d740 4c 45 43 54 48 65 6c 70 24 3d 22 22 3a 41 44 4a |LECTHelp$="":ADJ| 0000d750 55 53 54 48 65 6c 70 24 3d 22 22 3a 44 52 41 47 |USTHelp$="":DRAG| 0000d760 48 65 6c 70 24 3d 22 22 0d 37 46 30 46 6c 61 73 |Help$="".7F0Flas| 0000d770 68 69 6e 67 3d a3 3a 46 6c 61 73 68 50 65 72 69 |hing=.:FlashPeri| 0000d780 6f 64 28 30 29 3d 36 3a 46 6c 61 73 68 50 65 72 |od(0)=6:FlashPer| 0000d790 69 6f 64 28 31 29 3d 33 0d 37 50 29 f2 55 70 64 |iod(1)=3.7P).Upd| 0000d7a0 61 74 65 53 65 6c 65 63 74 65 64 46 6c 61 67 28 |ateSelectedFlag(| 0000d7b0 50 72 65 66 73 2c 37 2c 46 6c 61 73 68 69 6e 67 |Prefs,7,Flashing| 0000d7c0 29 0d 37 5a 2a f2 55 70 64 61 74 65 49 63 6f 6e |).7Z*.UpdateIcon| 0000d7d0 28 50 72 65 66 73 2c 38 2c c3 28 46 6c 61 73 68 |(Prefs,8,.(Flash| 0000d7e0 50 65 72 69 6f 64 28 30 29 29 29 0d 37 64 2a f2 |Period(0))).7d*.| 0000d7f0 55 70 64 61 74 65 49 63 6f 6e 28 50 72 65 66 73 |UpdateIcon(Prefs| 0000d800 2c 39 2c c3 28 46 6c 61 73 68 50 65 72 69 6f 64 |,9,.(FlashPeriod| 0000d810 28 31 29 29 29 0d 37 6e 05 e1 0d 37 78 05 3a 0d |(1))).7n...7x.:.| 0000d820 37 82 0f dd 20 f2 49 6e 69 74 56 61 72 73 0d 37 |7... .InitVars.7| 0000d830 8c 32 5a 6f 6f 6d 69 6e 67 3d a3 3a 46 6c 61 73 |.2Zooming=.:Flas| 0000d840 68 53 74 61 74 65 3d b9 3a 53 61 76 65 45 72 72 |hState=.:SaveErr| 0000d850 6f 72 3d a3 3a 52 65 61 64 45 72 72 6f 72 3d a3 |or=.:ReadError=.| 0000d860 0d 37 96 14 de 20 46 6c 61 73 68 50 65 72 69 6f |.7... FlashPerio| 0000d870 64 28 31 29 0d 37 a0 26 55 74 69 6c 69 74 69 65 |d(1).7.&Utilitie| 0000d880 73 4b 6e 6f 77 6e 3d 30 3a 55 74 69 6c 4c 69 73 |sKnown=0:UtilLis| 0000d890 74 50 6f 69 6e 74 65 72 3d 30 0d 37 aa 27 50 72 |tPointer=0.7.'Pr| 0000d8a0 65 66 73 56 61 6c 50 6f 69 6e 74 65 72 3d 30 3a |efsValPointer=0:| 0000d8b0 50 72 65 66 73 49 6e 64 50 6f 69 6e 74 65 72 3d |PrefsIndPointer=| 0000d8c0 30 0d 37 b4 21 53 74 61 72 74 69 6e 67 55 70 3d |0.7.!StartingUp=| 0000d8d0 b9 3a 53 74 61 72 74 55 70 43 6f 75 6e 74 65 72 |.:StartUpCounter| 0000d8e0 3d 30 0d 37 be 07 20 20 3a 0d 37 c8 2e 50 72 6f |=0.7.. :.7..Pro| 0000d8f0 63 65 73 73 69 6e 67 50 72 65 66 73 3d a3 3a 50 |cessingPrefs=.:P| 0000d900 72 6f 63 65 73 73 69 6e 67 50 72 65 66 73 43 6f |rocessingPrefsCo| 0000d910 75 6e 74 65 72 3d 30 0d 37 d2 16 42 75 66 66 65 |unter=0.7..Buffe| 0000d920 72 65 64 53 74 61 72 74 75 70 3d 2d 31 0d 37 dc |redStartup=-1.7.| 0000d930 4d f4 20 49 66 20 74 68 65 20 75 73 65 72 20 63 |M. If the user c| 0000d940 6c 69 63 6b 73 20 74 68 65 20 4f 6d 6e 69 44 65 |licks the OmniDe| 0000d950 73 6b 20 69 63 6f 6e 20 6f 72 20 63 68 6f 6f 73 |sk icon or choos| 0000d960 65 73 20 61 20 75 74 69 6c 69 74 79 20 66 72 6f |es a utility fro| 0000d970 6d 20 74 68 65 20 6d 65 6e 75 0d 37 e6 4b f4 20 |m the menu.7.K. | 0000d980 77 68 69 6c 73 74 20 74 68 65 20 73 74 61 72 74 |whilst the start| 0000d990 69 6e 67 2d 75 70 20 6f 72 20 71 75 69 74 74 69 |ing-up or quitti| 0000d9a0 6e 67 20 6f 66 20 74 61 73 6b 73 20 64 75 65 20 |ng of tasks due | 0000d9b0 74 6f 20 61 6e 20 4f 4b 20 63 6c 69 63 6b 20 69 |to an OK click i| 0000d9c0 6e 20 74 68 65 0d 37 f0 4a f4 20 50 72 65 66 73 |n the.7.J. Prefs| 0000d9d0 20 77 69 6e 64 6f 77 20 69 73 20 74 61 6b 69 6e | window is takin| 0000d9e0 67 20 70 6c 61 63 65 2c 20 77 65 20 6e 65 65 64 |g place, we need| 0000d9f0 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 65 20 63 | to ignore the c| 0000da00 6c 69 63 6b 20 75 6e 74 69 6c 20 74 68 69 73 0d |lick until this.| 0000da10 37 fa 4f f4 20 70 72 6f 63 65 73 73 69 6e 67 20 |7.O. processing | 0000da20 68 61 73 20 66 69 6e 69 73 68 65 64 2e 20 42 75 |has finished. Bu| 0000da30 66 66 65 72 65 64 53 74 61 72 74 75 70 20 72 65 |fferedStartup re| 0000da40 63 6f 72 64 73 20 77 68 69 63 68 20 75 74 69 6c |cords which util| 0000da50 69 74 79 20 69 73 20 77 61 6e 74 65 64 2e 0d 38 |ity is wanted..8| 0000da60 04 07 20 20 3a 0d 38 0e 15 44 72 6f 70 57 69 6e |.. :.8..DropWin| 0000da70 64 6f 77 55 74 69 6c 3d 2d 31 0d 38 18 07 20 20 |dowUtil=-1.8.. | 0000da80 3a 0d 38 22 46 53 65 6c 65 63 74 65 64 4c 6f 61 |:.8"FSelectedLoa| 0000da90 64 53 77 69 74 63 68 65 73 24 3d 22 59 59 59 22 |dSwitches$="YYY"| 0000daa0 3a f4 20 54 68 65 20 66 69 72 73 74 20 74 68 72 |:. The first thr| 0000dab0 65 65 20 75 74 69 6c 69 74 69 65 73 20 61 6c 77 |ee utilities alw| 0000dac0 61 79 73 20 6f 6e 2e 0d 38 2c 4e f4 20 57 65 20 |ays on..8,N. We | 0000dad0 6b 65 65 70 20 61 20 73 74 72 69 6e 67 20 72 65 |keep a string re| 0000dae0 63 6f 72 64 20 6f 66 20 77 68 69 63 68 20 73 77 |cord of which sw| 0000daf0 69 74 63 68 65 73 20 61 72 65 20 6f 6e 20 69 6e |itches are on in| 0000db00 20 6f 72 64 65 72 20 74 6f 20 75 70 64 61 74 65 | order to update| 0000db10 20 74 68 65 6d 0d 38 36 26 f4 20 77 68 65 6e 20 | them.86&. when | 0000db20 74 68 65 20 50 72 65 66 73 20 77 69 6e 64 6f 77 |the Prefs window| 0000db30 20 69 73 20 6f 70 65 6e 65 64 2e 0d 38 40 07 20 | is opened..8@. | 0000db40 20 3a 0d 38 4a 12 e7 20 4d 61 78 55 74 69 6c 73 | :.8J.. MaxUtils| 0000db50 3d 30 20 8c 0d 38 54 24 20 20 f4 20 4d 75 73 74 |=0 ..8T$ . Must| 0000db60 20 75 70 64 61 74 65 20 74 68 65 20 50 72 65 66 | update the Pref| 0000db70 73 20 77 69 6e 64 6f 77 0d 38 5e 15 20 20 e3 20 |s window.8^. . | 0000db80 4e 3d 32 31 20 b8 20 33 31 20 88 20 35 0d 38 68 |N=21 . 31 . 5.8h| 0000db90 26 20 20 20 20 f2 55 70 64 61 74 65 53 65 6c 65 |& .UpdateSele| 0000dba0 63 74 65 64 46 6c 61 67 28 50 72 65 66 73 2c 4e |ctedFlag(Prefs,N| 0000dbb0 2c b9 29 0d 38 72 3d 20 20 20 20 42 6c 6f 63 6b |,.).8r= Block| 0000dbc0 21 30 3d 50 72 65 66 73 3a 42 6c 6f 63 6b 21 34 |!0=Prefs:Block!4| 0000dbd0 3d 4e 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |=N:.. "Wimp_GetI| 0000dbe0 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b |conState",,Block| 0000dbf0 0d 38 7c 41 20 20 20 20 42 6c 6f 63 6b 21 38 3d |.8|A Block!8=| 0000dc00 30 3a 42 6c 6f 63 6b 21 31 32 3d 28 31 35 3c 3c |0:Block!12=(15<<| 0000dc10 31 32 29 3a c8 99 20 22 57 69 6d 70 5f 53 65 74 |12):.. "Wimp_Set| 0000dc20 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 |IconState",,Bloc| 0000dc30 6b 0d 38 86 45 20 20 20 20 f4 20 43 68 61 6e 67 |k.8.E . Chang| 0000dc40 65 20 62 75 74 74 6f 6e 20 74 79 70 65 20 74 6f |e button type to| 0000dc50 20 4e 65 76 65 72 20 61 6e 64 20 66 69 78 20 74 | Never and fix t| 0000dc60 68 65 73 65 20 62 75 74 74 6f 6e 73 20 4f 4e 2c |hese buttons ON,| 0000dc70 20 73 69 6e 63 65 0d 38 90 44 20 20 20 20 f4 20 | since.8.D . | 0000dc80 74 68 65 20 66 69 72 73 74 20 74 68 72 65 65 20 |the first three | 0000dc90 75 74 69 6c 69 74 69 65 73 20 61 72 65 20 70 72 |utilities are pr| 0000dca0 6f 76 69 64 65 64 20 62 79 20 4f 6d 6e 69 44 65 |ovided by OmniDe| 0000dcb0 73 6b 20 69 74 73 65 6c 66 2e 0d 38 9a 07 20 20 |sk itself..8.. | 0000dcc0 ed 0d 38 a4 37 20 20 f4 20 47 72 65 79 20 6f 75 |..8.7 . Grey ou| 0000dcd0 74 20 74 68 65 20 69 6e 61 70 70 72 6f 70 72 69 |t the inappropri| 0000dce0 61 74 65 20 64 72 61 67 67 69 6e 67 20 72 61 64 |ate dragging rad| 0000dcf0 69 6f 20 69 63 6f 6e 73 0d 38 ae 23 20 20 f2 55 |io icons.8.# .U| 0000dd00 70 64 61 74 65 53 68 61 64 65 64 46 6c 61 67 28 |pdateShadedFlag(| 0000dd10 50 72 65 66 73 2c 32 34 2c b9 29 0d 38 b8 23 20 |Prefs,24,.).8.# | 0000dd20 20 f2 55 70 64 61 74 65 53 68 61 64 65 64 46 6c | .UpdateShadedFl| 0000dd30 61 67 28 50 72 65 66 73 2c 32 39 2c b9 29 0d 38 |ag(Prefs,29,.).8| 0000dd40 c2 05 cd 0d 38 cc 05 e1 0d ff |....8.....| 0000dd4a