Home » Archimedes archive » Acorn User » AU 1993-10.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-10.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:

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-
2N� 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