Home » Archimedes archive » Acorn User » AU 1993-11.adf » !OmniDesk_OmniDesk » !OmniDesk/Utilities/!WindFlags/!RunImage
!OmniDesk/Utilities/!WindFlags/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1993-11.adf » !OmniDesk_OmniDesk |
Filename: | !OmniDesk/Utilities/!WindFlags/!RunImage |
Read OK: | ✔ |
File size: | 8DE4 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM >!RunImage for Window Flags 20: 30VersionNumber$="1�02 (22 June 1993)":Taskname$="Window�Flags" 40Exit=FALSE:Startup=FALSE:Done=FALSE 50DoModeChange=FALSE 60: 70DIM Block 256,Buffer 256,MenuHelp 16,Transmission 10 80IndMenuMax=64:DIM IndirectMenuText IndMenuMax 90DIM Templates 2489,InfoInd 189,LocInd 592,SpyInd 1087 100DIM IBMenu 76,MainMenu 124 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: 160ON ERROR Block!0=ERR:$(Block+4)=REPORT$+" (internal error code "+STR$(ERL)+")"+CHR$0:SYS "Wimp_ReportError",Block,1,Taskname$:END 170: 180OmniDesk=FNReadStartupString:REM Also assigns Exit and Startup 190: 200*Set WindFlags$RISCOS 3 210*RMEnsure UtilityModule 3.00 Set WindFlags$RISCOS 2 220SYS "XOS_ReadVarVal","WindFlags$RISCOS",Block,256,0,0 TO ,,len:Block?len=13:wimp$=$Block 230IF wimp$<>"3" THEN wimp$="2" 240*Unset WindFlags$RISCOS 250: 260*Set WindFlags$SpriteDrag Yes 270*RMEnsure DragASprite 0.00 Set WindFlags$SpriteDrag No 280SYS "XOS_ReadVarVal","WindFlags$SpriteDrag",Block,256,0,0 TO ,,len:Block?len=13 290IF $Block="Yes" THEN DragASprite=TRUE:ELSE DragASprite=FALSE 300*Unset WindFlags$SpriteDrag 310: 320SYS "XOS_ReadVarVal","Obey$Dir",Block,256,0,0 TO ,,len:Block?len=13:OurFileName$=$Block 330N=-1:REPEAT:N+=1:UNTIL MID$(OurFileName$,LEN(OurFileName$)-N,1)="." 340OurPathName$=LEFT$(OurFileName$,LEN(OurFileName$)-N):OurFileName$=RIGHT$(OurFileName$,N) 350: 360REM Read size of sprite file and load it. We need to DIM 16 bytes more than the file's size. 370SYS "OS_FSControl",28,"<WindFlags$Dir>.Sprites" TO ,,len 380DIM Sprites len+16:!Sprites=len+16:Sprites!4=0:Sprites!8=16:Sprites!12=16:SYS "OS_SpriteOp",256+10,Sprites,"<WindFlags$Dir>.Sprites" 390: 400IF wimp$="3" THEN 410 DIM messagelist% 36 420 messagelist%!0=&502:messagelist%!4=&400C1 430 messagelist%!8=UtilOpen:messagelist%!12=UtilQuitting 440 messagelist%!16=UtilReside:messagelist%!20=10 450 messagelist%!24=6:messagelist%!28=2:messagelist%!32=0 460 SYS "Wimp_Initialise",300,&4B534154,Taskname$,messagelist% TO wimp,Task 470ELSE 480 SYS "Wimp_Initialise",200,&4B534154,Taskname$ TO wimp,Task 490ENDIF 500: 510SYS "Interface_Initialise",Task 520: 530SYS "Wimp_OpenTemplate",,"<WindFlags$Dir>.Templates" 540SYS "Wimp_LoadTemplate",,Templates,InfoInd,InfoInd+189,-1,"Info",0 550SYS "Wimp_CreateWindow",,Templates TO Info 560SYS "Wimp_LoadTemplate",,Templates,LocInd,LocInd+592,-1,"WindowXY",0:Templates!64=Sprites 570SYS "Wimp_CreateWindow",,Templates TO Loc 580SYS "Wimp_LoadTemplate",,Templates,SpyInd,SpyInd+1087,-1,"SpyCalc",0:Templates!64=Sprites 590SYS "Wimp_CreateWindow",,Templates TO SpyCalc 600SYS "Wimp_CloseTemplate" 610: 620PROCBuildMenus 630: 640PROCCleanUpLocWindow 650ReadError=NOT(FNLoadSettings) 660PROCClearSpyCalcWindow(Spying) 670: 680PROCInitialise 690: 700IF OmniDesk=0 THEN 710 REM Put Icon on the icon-bar 720 Block!0=-1 730 Block!4=0:Block!8=0:Block!12=68:Block!16=68 740 Block!20=&17003002:$(Block+24)="!WindFlags"+CHR$13 750 SYS "Wimp_CreateIcon",,Block TO IconBar 760ENDIF 770: 780IF OmniDesk<>0 THEN PROCDeclareToOmniDesk 790IF Startup THEN Done=TRUE:REM '-Startup' parameter means 'declare and die immediately'. 800: 810PROCUpdateIcon(Info,3,VersionNumber$) 820PROCModeChange:REM To update icon-bar icon if necessary 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." 860: 870SYS "OS_ReadMonotonicTime" TO polltime% 880OldWin=0 890: 900REM Main program loop 910REPEAT 920 SYS "Wimp_PollIdle",%1100000110000,Block TO Reason 930 SYS "Interface_Poll",Reason,,Task 940 SYS "Interface_PreProcessKey",Reason,Block,Task 950 CASE Reason OF 960 WHEN 0 : SYS "OS_ReadMonotonicTime" TO polltime% 970 IF Spying AND (FNOpenState(SpyCalc)) THEN 980 OldWin=FNDoSpy(OldWin):polltime%+=10 990 ELSE 1000 polltime%+=100:REM Do a Wimp_Poll approximately once a second 1010 ENDIF 1020 IF DoModeChange THEN IF FNOpenState(SpyCalc) THEN PROCOpen(SpyCalc,FALSE,XPosition,YPosition) 1030 WHEN 1 : PROCRedraw 1040 WHEN 2 : SYS "Wimp_OpenWindow",,Block 1050 WHEN 3 : SYS "Wimp_CloseWindow",,Block 1060 IF Exit THEN Done=TRUE 1070 WHEN 6 : PROCMouseButton 1080 WHEN 7 : PROCDragFinished 1090 WHEN 8 : PROCKeyPressed 1100 WHEN 9 : PROCDecodeMenu 1110 WHEN 17,18,19 : PROCRecieveMessage 1120 ENDCASE 1130UNTIL Done 1140PROCSayGoodbye 1150END 1160: 1170DEF PROCError 1180Click=0:Block!0=ERR:CASE ERR OF 1190 WHEN 9999:REM Custom error 1200 $(Block+4)=REPORT$+CHR$0 1210 SYS "Wimp_ReportError",Block,17,"Notice from "+Taskname$ 1220 OTHERWISE 1230 $(Block+4)=REPORT$+" (internal error code "+STR$ERL+"). Click on OK to continue, or Cancel to terminate the program."+CHR$0 1240 SYS "Wimp_ReportError",Block,3,Taskname$ TO ,Click 1250ENDCASE 1260IF Click=2 THEN PROCSayGoodbye:END 1270ENDPROC 1280: 1290DEF PROCOpen(WindowHandle,TopOfStack,across,up) 1300Block!0=WindowHandle 1310SYS "Wimp_GetWindowState",,Block 1320IF (across<>-1) AND (across<>-1) THEN PROCDecideWindowPosition(Block,across,up) 1330IF TopOfStack THEN Block!28=-1 1340SYS "Wimp_OpenWindow",,Block 1350ENDPROC 1360: 1370DEF PROCClose(WindowHandle) 1380Block!0=WindowHandle 1390SYS "Wimp_GetWindowState",,Block 1400SYS "Wimp_CloseWindow",,Block 1410ENDPROC 1420: 1430DEF PROCDecideWindowPosition(Block,across,up) 1440REM Use of this procedure lets you open windows on an invisible grid which 1450REM automatically fits itself to the screen mode in use. There are five 1460REM positions across (left, mid-left, centre, mid-right, right) and five 1470REM positions up (bottom of screen, above icon-bar, centre of screen, 1480REM centre top of screen, top of screen). 1490 : 1500Xpixels=FNModeInfo("XPixels",-1):Ypixels=FNModeInfo("YPixels",-1) 1510XEigFactor=FNModeInfo("XEigFactor",-1):YEigFactor=FNModeInfo("YEigFactor",-1) 1520 : 1530top=Block!16:right=Block!12:bot=Block!8:left=Block!4 1540SYS "Wimp_OpenWindow",,Block:SYS "Wimp_GetWindowOutline",,Block 1550TB=((Block!16)-top)/(2^YEigFactor) 1560VS=((Block!12)-right)/(2^XEigFactor) 1570HS=(bot-(Block!8))/(2^YEigFactor) 1580LP=(left-(Block!4))/(2^XEigFactor) 1590REM LP is Left Pixel: normally present, but not if window is transparent. 1600width=(right-left)/(2^XEigFactor) 1610height=(top-bot)/(2^YEigFactor) 1620CASE across OF 1630 WHEN 0:x=LP 1640 WHEN 1:x=LP+((Xpixels+1)-(width+LP+VS))/4 1650 WHEN 2:x=LP+((Xpixels+1)-(width+LP+VS))/2 1660 WHEN 3:x=LP+(3*(((Xpixels+1)-(width+LP+VS))/4)) 1670 WHEN 4:x=(Xpixels+1)-(width+VS) 1680ENDCASE 1690CASE up OF 1700 WHEN 0:y=HS 1710 WHEN 1:y=HS+(132/(2^YEigFactor)) 1720 WHEN 2:y=HS+((Ypixels+1)-(height+TB+HS))/2 1730 WHEN 3:y=HS+(3*(((Ypixels+1)-(height+TB+HS))/4)) 1740 WHEN 4:y=(Ypixels+1)-(height+TB) 1750ENDCASE 1760REM Above coordinates position window. 1770REM Now convert to screen coordinates: 1780x=x*(2^XEigFactor):y=y*(2^YEigFactor) 1790width=width*(2^XEigFactor):height=height*(2^YEigFactor) 1800Block!12=x+width:Block!4=x 1810Block!16=y+height:Block!8=y 1820ENDPROC 1830: 1840REM ------------------------------------------------------------------------- 1850REM Wimp poll routines 1860REM ------------------------------------------------------------------------- 1870: 1880DEF PROCRedraw 1890IF DoModeChange THEN 1900 REM Re-opening windows need an extra wimp_poll to happen after the mode change in order to work: 1910 IF FNOpenState(SpyCalc) THEN PROCOpen(SpyCalc,FALSE,XPosition,YPosition) 1920 DoModeChange=FALSE 1930ENDIF 1940SYS "Wimp_RedrawWindow",,Block TO flag 1950WHILE flag 1960 SYS "Interface_Render3dWindow",,Block 1970 SYS "Wimp_GetRectangle",,Block TO flag 1980ENDWHILE 1990ENDPROC 2000: 2010DEF PROCRecieveMessage 2020CASE Block!16 OF 2030 WHEN 0 : Done=TRUE 2040 WHEN 2 : REM DataSaveAck 2050 REM Other task wants a transfer via <Wimp$Scrap> rather than RAM 2060 PROCWimpScrapTransmit 2070 WHEN 6 : REM RAM Fetch 2080 REM Other task is asking for data 2090 PROCRAMTransmit 2100 WHEN 10: IF OmniDesk=0 THEN PROCSaveDesktop(Block!20) 2110 REM Only save if we have not been started up by OmniDesk 2120 WHEN &502 : PROCHelp 2130 WHEN &400C1 : PROCModeChange 2140 WHEN UtilOpen : IF $(Block+24)=Taskname$ THEN PROCOmniDeskCalling 2150 WHEN UtilQuitting : IF OmniDesk<>0 THEN 2160 IF Block!20=OmniDesk THEN Done=TRUE 2170 ENDIF 2180 WHEN UtilReside : Exit=FALSE 2190ENDCASE 2200ENDPROC 2210: 2220DEF PROCDeleteWimpScrap 2230LOCAL ERROR 2240ON ERROR LOCAL RESTORE ERROR:ENDPROC 2250REM We may receive try to delete a non-existant Wimp$Scrap 2260REM file if the receiving task did not recognise the filetype. 2270OSCLI("Delete <Wimp$Scrap>") 2280ENDPROC 2290: 2300DEF PROCMouseButton 2310MouseX=Block!0:MouseY=Block!4:Buttons=Block!8 2320Window=Block!12:Icon=Block!16 2330CASE Window OF 2340 WHEN -2:REM Icon bar icon clicked 2350 CASE Buttons OF 2360 WHEN 1 : REM Adjust 2370 WHEN 2 : REM Menu 2380 M%=IBMenu:MenuX=MouseX:MenuY=MouseY:PROCMakeMenu 2390 WHEN 4 : REM Select 2400 PROCOpen(SpyCalc,TRUE,XPosition,YPosition) 2410 ENDCASE 2420 WHEN SpyCalc 2430 CASE Buttons OF 2440 WHEN 2 : REM Menu 2450 M%=MainMenu:MenuX=MouseX:MenuY=MouseY 2460 IF wimp>=310 THEN 2470 IF LEFT$($MainMenuTitle,1)="\" THEN $MainMenuTitle=RIGHT$($MainMenuTitle,LEN($MainMenuTitle)-1)+CHR$13 2480 IF XPosition=4 THEN $MainMenuTitle="\"+$MainMenuTitle+CHR$13 2490 ENDIF 2500 PROCMakeMenu 2510 WHEN 1,4 : REM Select,Adjust 2520 IF (Icon>=26) AND (Icon<=44) THEN 2530 PROCUpdateIcon(SpyCalc,46,"&"+STR$~FNWindFlags) 2540 ENDIF 2550 OTHERWISE 2560 IF (Buttons>7) AND (Window=SpyCalc) AND (Icon=46) THEN 2570 $Transmission=FNReadIconStr(SpyCalc,46) 2580 Dragging$="Flags":PROCDragBox(SpyCalc,46,5,Sprites,FNMakeDraggingSprite) 2590 ENDIF 2600 ENDCASE 2610 WHEN Loc AND Buttons<8:REM Reposition main window 2620 IF Icon>=6 THEN 2630 XPosition=FNReadWindowLocation("X") 2640 YPosition=FNReadWindowLocation("Y") 2650 IF FNOpenState(SpyCalc) THEN PROCOpen(SpyCalc,FALSE,XPosition,YPosition) 2660 ENDIF 2670ENDCASE 2680ENDPROC 2690: 2700DEF PROCDragFinished 2710IF DragASprite THEN SYS "DragASprite_Stop" 2720SYS "Wimp_GetPointerInfo",,Block 2730IF Block!12=-1 THEN ENDPROC:REM Dragged to background. 2740DraggedToX=Block!0:DraggedToY=Block!4:DraggedToWindow=Block!12:DraggedToIcon=Block!16 2750REM OK - Let's begin an inter-application save 2760MyRef=0 2770Block!0=256:Block!12=MyRef:Block!16=1:REM DataSave 2780Block!20=DraggedToWindow:Block!24=DraggedToIcon:Block!28=DraggedToX:Block!32=DraggedToY 2790Block!36=12:REM Never more than 12 bytes 2800Block!40=&FFF:REM Filetype of Text 2810$(Block+44)=Dragging$+CHR$0 2820SYS "Wimp_SendMessage",17,Block,DraggedToWindow,DraggedToIcon 2830REM DraggedToIcon included in case DraggedToWindow=-2 (icon bar) 2840ENDPROC 2850: 2860DEF PROCKeyPressed 2870Window=Block!0:Icon=Block!4:Character=Block!24 2880CASE Window OF 2890 WHEN SpyCalc: 2900 IF Character=13 THEN 2910 A$=FNReadIconStr(SpyCalc,46):IF A$="" THEN A$="0":PROCUpdateIcon(SpyCalc,46,"&0") 2920 PROCUpdateSwitches(EVAL(A$)) 2930 ELSE 2940 SYS "Wimp_ProcessKey",Character 2950 ENDIF 2960 OTHERWISE 2970 SYS "Wimp_ProcessKey",Character 2980ENDCASE 2990ENDPROC 3000: 3010DEF PROCDecodeMenu 3020Sub0=Block!0:Sub1=Block!4:Sub2=Block!8 3030CloseMenu=FALSE 3040CASE M% OF 3050 WHEN IBMenu: 3060 CASE Sub0 OF 3070 WHEN 0 3080 SYS "Wimp_GetPointerInfo",,Block 3090 SYS "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 3100 CloseMenu=TRUE 3110 WHEN 1 3120 Done=TRUE 3130 ENDCASE 3140 WHEN MainMenu: 3150 CASE Sub0 OF 3160 WHEN 0 3170 SYS "Wimp_GetPointerInfo",,Block 3180 SYS "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 3190 CloseMenu=TRUE 3200 WHEN 1 3210 Spying=NOT Spying:PROCTickMenu(MainMenu,1,Spying) 3220 PROCClearSpyCalcWindow(Spying):OldWin=0 3230 PROCUpdateIcon(SpyCalc,46,"&"+STR$~FNWindFlags) 3240 SYS "Wimp_GetCaretPosition",,Block:IF (Block!0=SpyCalc) AND Spying THEN SYS "Wimp_SetCaretPosition",-1,-1 3250 WHEN 2 3260 SYS "Wimp_GetPointerInfo",,Block 3270 SYS "Wimp_CreateMenu",,Loc,Block!0-24,Block!4+24 3280 CloseMenu=TRUE 3290 WHEN 3 3300 IF NOT FNSaveSettings THEN ERROR 9999,"An error occurred whilst writing the settings file." 3310 ENDCASE 3320ENDCASE 3330SYS "Wimp_GetPointerInfo",,Block 3340IF ((Block!8 AND 1)=1) AND (NOT CloseMenu) THEN PROCMakeMenu 3350ENDPROC 3360: 3370REM ------------------------------------------------------------------------- 3380REM Menu routines 3390REM ------------------------------------------------------------------------- 3400: 3410DEF PROCBuildMenus 3420REM This procedure should only be visited once, since it contains DIMs. 3430 : 3440REM In the menu title strings below, if a "|" character is present it will be 3450REM replaced by a space under RISC OS 3.1 (or greater), or will terminate the 3460REM string under earlier versions of the wimp. This allows the new indirected 3470REM menu titles to be used (which were introduced with RISC OS 3.1). 3480 : 3490IndirectMenuTextOffsetPointer=0 3500REM This points to a pool to be used by all menus for their indirected text. 3510 : 3520M%=IBMenu 3530IF wimp>=310 THEN Title$="Window Flags":ELSE Title$="Wind Flags" 3540DIM IBMenuTitle LEN(Title$)+1:$IBMenuTitle=Title$+CHR$13 3550PROCMenuInit(IBMenuTitle) 3560PROCMenuItem("Info",0,Info) 3570PROCMenuItem("Quit",128,-1) 3580 : 3590M%=MainMenu 3600IF wimp>=310 THEN Title$="Window Flags":ELSE Title$="Wind Flags" 3610DIM MainMenuTitle LEN(Title$)+2:$MainMenuTitle=Title$+CHR$13 3620PROCMenuInit(MainMenuTitle) 3630PROCMenuItem("Info",2,Info) 3640PROCMenuItem("Spy on windows",0,-1) 3650PROCMenuItem("Window position",2,Loc) 3660PROCMenuItem("Save settings",128,-1) 3670ENDPROC 3680: 3690DEF PROCMakeMenu 3700IF MenuX<0 THEN MenuX=0 3710IF MenuY<184 THEN MenuY=184:REM for icon bar 3720SYS "Wimp_CreateMenu",,M%,MenuX-((36+M%!16)/2),MenuY 3730ENDPROC 3740: 3750DEF PROCMenuInit(MenuTitle) 3760IF wimp>=310 THEN 3770 A=INSTR($MenuTitle,"|"):IF A<>0 THEN ?(MenuTitle+(A-1))=32 3780 MenuMax=LEN($MenuTitle) 3790 M%!0=MenuTitle 3800ELSE 3810 A=INSTR($MenuTitle,"|"):IF A<>0 THEN ?(MenuTitle+(A-1))=13 3820 MenuMax=LEN(LEFT$($MenuTitle,12)) 3830 $M%=LEFT$($MenuTitle,12) 3840ENDIF 3850M%?12=7:M%?13=2:M%?14=11:M%?15=0 3860M%!16=MenuMax*16 3870M%!20=44:M%!24=0 3880P%=M%+28 3890ENDPROC 3900: 3910DEF PROCMenuItem(Text$,Flags,Link) 3920REM Flags: 1-ticked, 2-dashed line, 4-writeable, 8-message, 128-last item 3930REM Link: menu or window handle for sub-pointer 3940P%!0=Flags:P%!4=Link 3950IF LEN(Text$)<=12 THEN 3960 P%!8=&07003021:REM Not indirected 3970 $(P%+12)=Text$ 3980ELSE 3990 P%!8=&07003121:REM Indirected 4000 P%!12=IndirectMenuText+IndirectMenuTextOffsetPointer 4010 P%!16=0:P%!20=0 4020 $(IndirectMenuText+IndirectMenuTextOffsetPointer)=Text$+CHR$13 4030 IndirectMenuTextOffsetPointer+=LEN(Text$)+1 4040 IF IndirectMenuTextOffsetPointer>IndMenuMax THEN ERROR 0,"The indirect menu text buffer has overflowed. Please allocate more space." 4050ENDIF 4060P%+=24 4070IF MenuMax<LEN(Text$) THEN MenuMax=LEN(Text$):M%!16=(MenuMax+1)*16 4080IF (Flags=128) AND (wimp>=310) THEN M%!28=(((M%!28) AND NOT 256) EOR 256) 4090 REM Indirected menu titles for RISC OS 3.1 upwards. 4100ENDPROC 4110: 4120REM ------------------------------------------------------------------------- 4130REM Responses to incoming wimp messages 4140REM ------------------------------------------------------------------------- 4150: 4160DEF PROCSaveDesktop(File) 4170LOCAL ERROR 4180ON ERROR LOCAL Block!12=Block!8:SYS "Wimp_SendMessage",19,Block,Block!4:RESTORE ERROR:ENDPROC 4190REM The above line acknowledges the message if an error occurs, thereby 4200REM aborting the desktop save. 4210BPUT#File,"Run "+OurPathName$+OurFileName$ 4220ENDPROC 4230: 4240DEF PROCHelp 4250Block!12=Block!8:Block!16=&503:HelpInfo=Block+20 4260 : 4270REM Block!32 gives window, Block!36 gives icon 4280 : 4290CASE Block!32 OF 4300 WHEN -2:PROCSend("This is the Window Flags icon.") 4310 PROCSend("Click MENU for information or to quit.") 4320 PROCSend("Click SELECT to open the Window Flags window.") 4330 WHEN SpyCalc: 4340 CASE Block!36 OF 4350 WHEN 0,1,2,3,4,5:PROCSend("This area shows the window and icon handles under the pointer.") 4360 WHEN 6,7,8,9,10,11:PROCSend("This area shows the minimum coordinates of the window under the pointer.") 4370 WHEN 12,13,14,15,16,17:PROCSend("This area shows the maximum coordinates of the window under the pointer.") 4380 WHEN 18,19,20,21,22,23:PROCSend("This area shows how much the window under the pointer has been scrolled.") 4390 WHEN 24,25,47:IF Spying THEN 4400 PROCSend("This area shows the individual flags for the window under the pointer.") 4410 ELSE 4420 PROCSend("Click the switches in this area to work out the window flags, or enter a value in the box and press RETURN to find out what it means.") 4430 ENDIF 4440 WHEN 26:PROCSend("This switch is selected if the window has a Back icon.") 4450 WHEN 27:PROCSend("This switch is selected if the window has a Close icon.") 4460 WHEN 28:PROCSend("This switch is selected if the window has a Title Bar icon.") 4470 WHEN 29:PROCSend("This switch is selected if the window has a Toggle Size icon.") 4480 WHEN 30:PROCSend("This switch is selected if the window has a vertical scroll bar.") 4490 WHEN 31:PROCSend("This switch is selected if the window has a Size icon.") 4500 WHEN 32:PROCSend("This switch is selected if the window has a horizontal scroll bar.") 4510 WHEN 33:PROCSend("This switch is selected if the window can be moved.") 4520 WHEN 34:PROCSend("This switch is selected if the window can be updated automatically by the window manager.") 4530 WHEN 35:PROCSend("This switch is selected if the window is a pane.") 4540 WHEN 36:PROCSend("This switch is selected if the window can move beyond the limits of the desktop.") 4550 WHEN 37:PROCSend("This switch is selected if window scrolling is not automatic, and the arrow icons auto-repeat.") 4560 WHEN 38:PROCSend("This switch is selected if window scrolling is not automatic, and the arrow icons do not auto-repeat.") 4570 WHEN 39:PROCSend("This switch is selected if the window's colours are treated as GCOL colours rather than Desktop colours.") 4580 WHEN 40:PROCSend("This switch is selected if other windows are not allowed to be opened behind this window.") 4590 WHEN 41:PROCSend("This switch is selected if the window genereates 'hot key' events.") 4600 WHEN 42:PROCSend("This switch is selected if the window is being forced to stay on screen (RISC OS 3 only).") 4610 WHEN 43:PROCSend("This switch is selected if the right-hand window extend is ignored during resize drags (RISC OS 3 only).") 4620 WHEN 44:PROCSend("This switch is selected if the lower window extent is ignored during resize drags (RISC OS 3 only).") 4630 WHEN 45:PROCSend("This switch is selected if the window has been defined using the new format specification.") 4640 WHEN 46:PROCSend("This shows the window flags in hexadecimal.") 4650 IF NOT Spying THEN PROCSend("Enter a value here and press RETURN to find out what it means.") 4660 IF NOT Spying THEN PROCSend("You can drag this figure out to another application or to a directory display.") 4670 OTHERWISE PROCSend("This is the Window Flags main window.") 4680 PROCSend("You can spy on windows or calculate window flags.") 4690 ENDCASE 4700 WHEN Info:PROCSend("This window displays information about Window Flags.") 4710 PROCSend("Window Flags is a member of the OmniDesk Suite of desktop utilities.") 4720 WHEN Loc: 4730 CASE TRUE OF 4740 WHEN ((Block!36)<6):PROCSend("This window lets you snap the magnifier window to an invisble screen grid.") 4750 PROCSend("The second position up puts the window just above the icon-bar, and is therefore not evenly spaced with the other rows.") 4760 OTHERWISE PROCSend("Click SELECT on the position you want the window to snap to, or ADJUST on the window icon to turn the snapping off.") 4770 PROCSend("If snapping is on, the window will open at the appropriate position when you change mode.") 4780 ENDCASE 4790OTHERWISE 4800 IF wimp>=217 THEN 4810 MenuHelp!0=-1:MenuHelp!4=-1:MenuHelp!8=-1 4820 SYS "Wimp_GetMenuState",1,MenuHelp,Block!32,Block!36 4830 CASE M% OF 4840 WHEN IBMenu: 4850 IF MenuHelp!4=-1 THEN 4860 CASE MenuHelp!0 OF 4870 WHEN 0:PROCSend("Move the pointer right to see information about Window Flags.") 4880 WHEN 1:PROCSend("Click SELECT to quit Window Flags.") 4890 OTHERWISE PROCSend("This is the Window Flags icon-bar menu.") 4900 ENDCASE 4910 ENDIF 4920 WHEN MainMenu: 4930 Direction$="right":IF wimp>=310 AND CHR$(MainMenuTitle?0)="\" THEN Direction$="left" 4940 CASE MenuHelp!0 OF 4950 WHEN 0:PROCSend("Move the pointer "+Direction$+" to see information about Window Flags.") 4960 WHEN 1:IF Spying THEN 4970 PROCSend("Click SELECT or ADJUST to stop spying and work out window flags.") 4980 ELSE 4990 PROCSend("Click SELECT or ADJUST to spy on windows you point to with the mouse pointer.") 5000 ENDIF 5010 WHEN 2:PROCSend("Move the pointer "+Direction$+" to set the position of the Window Flags window on the screen.") 5020 WHEN 3:PROCSend("Click SELECT or ADJUST to save the Window Flags window position and spying status.") 5030 OTHERWISE PROCSend("This is the Window Flags main menu.") 5040 ENDCASE 5050 ENDCASE 5060 ENDIF 5070ENDCASE 5080 : 5090?HelpInfo=0 5100Block!0=(HelpInfo+4-Block) AND NOT 3 5110SYS "Wimp_SendMessage",17,Block,Block!4 5120ENDPROC 5130: 5140DEF FNOmniHelpMessage(A$) 5150IF A$="CLICK" THEN =LEFT$("open the Window Flags window.",76)+CHR$13 5160IF A$="DRAG" THEN =LEFT$("",76)+CHR$13 5170="" 5180: 5190DEF PROCSend(Text$) 5200$HelpInfo=Text$+"|M" 5210HelpInfo+=LEN(Text$)+2 5220ENDPROC 5230: 5240DEF PROCOmniDeskCalling 5250IF OmniDesk=0 THEN ENDPROC 5260REM This first line is for if a broadcast message is received which was 5270REM intended for a transient copy of the utility. A stand-alone 5280REM instantiation of the utility should ignore such messages. 5290CASE Block!20 OF 5300 WHEN 4:PROCOpen(SpyCalc,TRUE,XPosition,YPosition) 5310ENDCASE 5320ENDPROC 5330: 5340DEF PROCModeChange 5350DoModeChange=TRUE 5360IF OmniDesk=0 THEN PROCUpdateIconForMode("!WindFlags",-2,IconBar) 5370ENDPROC 5380: 5390REM ------------------------------------------------------------------------- 5400REM General non-specific useful routines (mostly wimp) 5410REM ------------------------------------------------------------------------- 5420: 5430DEF PROCUpdateIcon(Wndw,Icn,Txt$) 5440Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5450IF LEN(Txt$)>(Block!36)-1 THEN 5460 IF ((Block!24) AND (1<<9))=(1<<9) THEN 5470 REM Right-justified 5480 Txt$="�"+RIGHT$(Txt$,(Block!36)-2) 5490 ELSE 5500 REM Left-justified or centred 5510 Txt$=LEFT$(Txt$,(Block!36)-1):RIGHT$(Txt$)="�" 5520 ENDIF 5530ENDIF 5540REM ^ Ensures the text can't overflow the maximum space in the icon. 5550IF $(Block!28)<>Txt$ THEN 5560 $(Block!28)=Txt$:Block!8=0:Block!12=0 5570 SYS "Wimp_SetIconState",,Block 5580ENDIF 5590SYS "Wimp_GetCaretPosition",,Block 5600IF Block!0=Wndw AND Block!4=Icn THEN 5610 REM If this icon owns the caret, then put it at the end. 5620 SYS "Wimp_SetCaretPosition",Wndw,Icn,0,0,-1,LEN(Txt$) 5630ENDIF 5640ENDPROC 5650: 5660DEF PROCUpdateIconColour(Wndw,Icn,FCol,BCol) 5670REM Change an icon's colours 5680Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5690IF (((Block?27)>>4)=BCol) AND (((Block?27) MOD 16)=FCol) THEN ENDPROC 5700 REM ^ Same colour, so don't change. 5710Block!12=(%11111111<<24):Block!8=(BCol<<28)+(FCol<<24) 5720SYS "Wimp_SetIconState",,Block 5730ENDPROC 5740: 5750DEF PROCUpdateSelectedFlag(Wndw,Icn,State) 5760REM Use State=TRUE to make icon become selected 5770Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5780IF ((Block!24) AND (1<<21))=((-State)<<21) THEN ENDPROC 5790Block!12=(1<<21):IF State THEN Block!8=(1<<21) ELSE Block!8=(0<<21) 5800SYS "Wimp_SetIconState",,Block 5810ENDPROC 5820: 5830DEF PROCUpdateShadedFlag(Wndw,Icn,State) 5840REM Use State=TRUE to make icon become shaded 5850Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5860IF ((Block!24) AND (1<<22))=((-State)<<22) THEN ENDPROC 5870Block!12=(1<<22):IF State THEN Block!8=(1<<22) ELSE Block!8=(0<<22) 5880SYS "Wimp_SetIconState",,Block 5890ENDPROC 5900: 5910DEF FNSelectedState(Wndw,Icn) 5920Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5930IF ((Block!24) AND (1<<21))=(1<<21) THEN =TRUE 5940=FALSE 5950: 5960DEF FNShadedState(Wndw,Icn) 5970Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 5980IF ((Block!24) AND (1<<22))=(1<<22) THEN =TRUE 5990=FALSE 6000: 6010DEF FNOpenState(Wndw) 6020REM Returns TRUE if window is open; false otherwise 6030Block!0=Wndw:SYS "Wimp_GetWindowState",,Block 6040IF ((Block!32) AND (1<<16))=(1<<16) THEN =TRUE 6050=FALSE 6060: 6070DEF PROCShadeMenu(Menu,Item,State) 6080!(Menu+28+(24*Item)+8)=(!(Menu+28+(24*Item)+8) AND NOT (1<<22)) EOR ((-State)<<22) 6090ENDPROC 6100: 6110DEF PROCTickMenu(Menu,Item,State) 6120!(Menu+28+(24*Item))=(!(Menu+28+(24*Item)) AND NOT 1) EOR (-State) 6130ENDPROC 6140: 6150DEF FNMenuShaded(Menu,Item) 6160IF (!(Menu+28+(24*Item)+8) AND (1<<22))=(1<<22) THEN =TRUE 6170=FALSE 6180: 6190DEF FNMenuTicked(Menu,Item) 6200IF (!(Menu+28+(24*Item)) AND 1)=1 THEN =TRUE 6210=FALSE 6220: 6230DEF FNReadIcon(Wndw,Icn) 6240REM Read numeric value of icon 6250Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6260=VAL($(Block!28)) 6270: 6280DEF FNReadIconStr(Wndw,Icn) 6290REM Read string value of icon 6300Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6310=$(Block!28) 6320: 6330DEF FNModeInfo(var$,mode) 6340REM Use mode=-1 for current screen mode 6350CASE var$ OF 6360 WHEN "XPixels":SYS "OS_ReadModeVariable",mode,11 TO ,,var 6370 WHEN "YPixels":SYS "OS_ReadModeVariable",mode,12 TO ,,var 6380 WHEN "NCol":SYS "OS_ReadModeVariable",mode,3 TO ,,var 6390 WHEN "XEigFactor":SYS "OS_ReadModeVariable",mode,4 TO ,,var 6400 WHEN "YEigFactor":SYS "OS_ReadModeVariable",mode,5 TO ,,var 6410 WHEN "BPP":SYS "OS_ReadModeVariable",mode,9 TO ,,var:var=2^var 6420 OTHERWISE var=-1:REM Fall-through for a faulty input value 6430ENDCASE 6440=var 6450: 6460DEF PROCUpdateIconForMode(Appname$,Wndw,Icn) 6470REM This procedure requires that ALL the icon sprites are defined in mode 20 6480REM or mode 27 (which is equivalent) with a mask but no palette. They should 6490REM still appear to have the expected resolutions and number of colours, i.e 6500REM !Sprites23: two colours, high resolution, !Sprites (actually !Sprites24) 6510REM at mode 12 resolution (double height pixels) in 16 colours, and normal 6520REM mode 20 resolution, 16 colours for the !Sprites22 icon. If this is not 6530REM adhered to, then memory shortage errors may occur on a mode change. 6540Extension$="24" 6550IF FNModeInfo("YEigFactor",-1)<2 THEN 6560 IF FNModeInfo("NCol",-1)>2 THEN 6570 Extension$="22" 6580 ELSE 6590 Extension$="23" 6600 ENDIF 6610ENDIF 6620SYS "Wimp_BaseOfSprites" TO ,iconsprite% 6630SYS "OS_SpriteOp",256+25,iconsprite%,Appname$:REM Delete icon sprite 6640REM The following three lines assume a mask but no palette: 6650SYS "OS_SpriteOp",256+40,Sprites,Appname$+Extension$ TO ,,,w,h,,mode:REM Get info about new sprite 6660SYS "OS_SpriteOp",256+15,iconsprite%,Appname$,0,w,h,mode:REM Create replacement icon sprite 6670SYS "OS_SpriteOp",256+29,iconsprite%,Appname$:REM Create mask 6680 : 6690REM Paint sprite mask into iconsprite mask: 6700SYS "OS_SpriteOp",256+61,iconsprite%,Appname$,0 TO r0,r1,r2,r3:REM Output to mask 6710SYS "OS_SpriteOp",256+49,Sprites,Appname$+Extension$,0,0:REM Paint mask from Sprites 6720GCOL 4,128:CLG:REM Invert to make mask the right way round 6730SYS "OS_SpriteOp",r0,r1,r2,r3:REM Reset screen output 6740 : 6750REM Paint sprite into iconsprite: 6760SYS "OS_SpriteOp",256+60,iconsprite%,Appname$,0 TO r0,r1,r2,r3:REM Output to new icon sprite 6770SYS "OS_SpriteOp",256+34,Sprites,Appname$+Extension$,0,0,8:REM Paint copy from Sprites 6780SYS "OS_SpriteOp",r0,r1,r2,r3:REM Reset screen output 6790Block!0=Wndw:Block!4=Icn:SYS "Wimp_GetIconState",,Block 6800Block!8=0:Block!12=0:SYS "Wimp_SetIconState",,Block:REM Re-plot icon 6810ENDPROC 6820: 6830DEF 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$) 6840Block!0=minX:Block!4=minY:Block!8=maxX:Block!12=maxY:Block!16=Xoffset:Block!20=Yoffset 6850Block!24=Handle:Block!28=Flags 6860Block?32=TitleCol:Block?33=TitleBackCol:Block?34=WorkCol:Block?35=WorkBackCol 6870Block?36=ScrollCol:Block?37=SliderCol:Block?38=InputCol:Block?39=0 6880Block!40=WminX:Block!44=WminY:Block!48=WmaxX:Block!52=WmaxY 6890Block!56=TitleFlags:Block!60=Wbutton:Block!64=SpritePoint 6900Block!68=(MinH<<15)+MinW :::::::::::: REM 0,0 sets the minimum window with to the title width 6910$(Block+72)=TitleData$:Block!84=0 ::: REM No icons initially 6920SYS "Wimp_CreateWindow",,Block TO WindowHandle 6930=WindowHandle 6940: 6950DEF FNCreateIcon(WindowHandle,minX,minY,maxX,maxY,Flags,IconData) 6960Block!0=WindowHandle 6970Block!4=minX:Block!8=minY:Block!12=maxX:Block!16=maxY:Block!20=Flags 6980Block!24=IconData!0:Block!28=IconData!4:Block!32=IconData!8 6990SYS "Wimp_CreateIcon",,Block TO IconHandle 7000=IconHandle 7010: 7020DEF PROCInitialise 7030AppSize=HIMEM-&8000:MinSize=AppSize:SlotEnd=HIMEM 7040ENDPROC 7050: 7060DEF FNAllocateMemory(Required) 7070SlotSize=FNSlotSize(-1) 7080IF SlotSize<Required THEN NewSize=FNSlotSize(Required):IF NewSize<Required THEN SlotSize=FNSlotSize(AppSize):=0:REM Returns, indicating memory not claimed 7090IF SlotSize>Required THEN SlotSize=FNSlotSize(Required) 7100=SlotSize:REM Returns with bytes claimed 7110: 7120DEF FNSlotSize(Bytes) 7130SYS "Wimp_SlotSize",Bytes,-1 TO Bytes 7140=Bytes 7150: 7160DEF PROCMinimiseWimpSlot 7170dummy=FNAllocateMemory(MinSize) 7180ENDPROC 7190: 7200DEF PROCCloseFileIfPoss(FileHandle) 7210LOCAL ERROR 7220ON ERROR LOCAL RESTORE ERROR:ENDPROC:REM Unable to close file 7230CLOSE#FileHandle 7240ENDPROC 7250: 7260DEF FNFindFileSize(FileName$) 7270IF FileName$="<Wimp$Scrap>" THEN 7280 SYS "OS_File",15,FileName$,,,FileName$ TO ,,,,FileSize 7290ELSE 7300 N=-1:REPEAT:N+=1:UNTIL MID$(FileName$,LEN(FileName$)-N,1)="." 7310 PathName$=LEFT$(FileName$,LEN(FileName$)-N):LeafName$=RIGHT$(FileName$,N) 7320 SYS "OS_File",13,LeafName$,,,PathName$ TO ,,,,FileSize 7330ENDIF 7340=FileSize 7350: 7360DEF FNNextEntry 7370REM Gets next entry (created by BPUT#Data,A$) from a file as a string. 7380REM Use as A$=FNNextEntry. 7390LOCAL ERROR 7400ON ERROR LOCAL RESTORE ERROR:="":REM Error reading file 7410NE$=GET$#Data 7420WHILE LEFT$(NE$,1)="|" 7430 NE$=GET$#Data 7440ENDWHILE 7450=NE$ 7460: 7470DEF PROCDragBox(WindowHandle,IconHandle,DragType,SpriteArea,SpriteName$) 7480Block!0=WindowHandle:SYS "Wimp_GetWindowState",,Block 7490wminx=Block!4:wmaxy=Block!16 7500Block!0=WindowHandle:Block!4=IconHandle:SYS "Wimp_GetIconState",,Block 7510iminx=Block!8:iminy=Block!12:imaxx=Block!16:imaxy=Block!20 7520Block!0=WindowHandle:Block!4=DragType 7530Block!8=(wminx+iminx) 7540Block!12=(wmaxy+iminy) 7550Block!16=(wminx+imaxx) 7560Block!20=(wmaxy+imaxy) 7570Block!24=1:Block!28=1 7580Block!32=(FNModeInfo("Xpixels",-1)+1)*(2^FNModeInfo("XEigFactor",-1)) 7590Block!36=(FNModeInfo("Ypixels",-1)+1)*(2^FNModeInfo("YEigFactor",-1)) 7600IF DragASprite THEN 7610 SYS "DragASprite_Start",%10000101,SpriteArea,SpriteName$,Block+8 7620ELSE 7630 SYS "Wimp_DragBox",,Block 7640ENDIF 7650ENDPROC 7660: 7670REM ------------------------------------------------------------------------- 7680REM Routines common to the OmniDesk utilities 7690REM ------------------------------------------------------------------------- 7700: 7710DEF PROCDeclareToOmniDesk 7720Block!0=208:Block!12=0:Block!16=UtilDeclare 7730Block!20=Task 7740$(Block+24)=Taskname$ 7750$(Block+44)=OurFileName$ 7760$(Block+55)=FNOmniHelpMessage("CLICK") 7770$(Block+132)=FNOmniHelpMessage("DRAG") 7780SYS "Wimp_SendMessage",17,Block,OmniDesk 7790ENDPROC 7800: 7810DEF PROCSayGoodbye 7820IF OmniDesk<>0 THEN 7830 Block!0=24:Block!12=0:Block!16=UtilQuitting 7840 Block!20=Task 7850 SYS "Wimp_SendMessage",17,Block,OmniDesk 7860ENDIF 7870SYS "Interface_CloseDown",Task 7880SYS "Wimp_CloseDown",Task,&4B534154 7890ENDPROC 7900: 7910DEF FNReadStartupString 7920REM Returns task handle of OmniDesk (which is passed in the command string) 7930REM or 0 if not started by OmniDesk. 7940SYS "OS_GetEnv" TO Command$ 7950A=INSTR(Command$,"-Startup") 7960IF A<>0 THEN Startup=TRUE 7970A=INSTR(Command$,"-Exit") 7980IF A<>0 THEN Exit=TRUE 7990A=INSTR(Command$,"-OmniDesk") 8000IF A=0 THEN =0 8010=VAL(MID$(Command$,A+9)) 8020: 8030DEF FNReadWindowLocation(Axis$) 8040REM Reads which radio icon (if any) is selected in the Window Position 8050REM selector window and returns the axis coordinate (two calls needed) 8060REM or -1 for no position selected. 8070Icon=5:REPEAT:Icon+=1:UNTIL (FNSelectedState(Loc,Icon)=TRUE) OR (Icon=31) 8080IF Icon=31 THEN =-1:REM All icons deselected 8090Location=-1:Icon-=6:REM Bring icon into range 0-14 8100CASE Axis$ OF 8110 WHEN "X","x":Location=Icon DIV 5 8120 WHEN "Y","y":Location=4-(Icon MOD 5) 8130ENDCASE 8140=Location 8150: 8160DEF PROCCleanUpLocWindow 8170REM Makes sure that none of the 'window' icons in the Loc window is selected. 8180N=5:REPEAT 8190N+=1:UNTIL N=30 OR FNSelectedState(Loc,N) 8200PROCUpdateSelectedFlag(Loc,N,FALSE) 8210ENDPROC 8220: 8230REM ------------------------------------------------------------------------- 8240REM Special routines for this program only 8250REM ------------------------------------------------------------------------- 8260: 8270DEF PROCClearSpyCalcWindow(Spy) 8280RESTORE +1 8290DATA 4,5,10,11,16,17,22,23 8300FOR N=1 TO 8 8310 READ Icon:PROCUpdateIcon(SpyCalc,Icon,"") 8320NEXT 8330FOR N=26 TO 44 8340 Block!0=SpyCalc:Block!4=N:SYS "Wimp_GetIconState",,Block 8350 Block!8=(0<<21):Block!12=(1<<21) 8360 IF Spy THEN Block!8+=(0<<12):ELSE Block!8+=(11<<12) 8370 Block!12+=(255<<12) 8380 SYS "Wimp_SetIconState",,Block 8390NEXT 8400Block!0=SpyCalc:Block!4=45:SYS "Wimp_GetIconState",,Block 8410Block!8=(1<<21):Block!12=(1<<21) 8420Block!8+=(0<<12):Block!12+=(255<<12) 8430SYS "Wimp_SetIconState",,Block 8440PROCUpdateIcon(SpyCalc,46,"&0") 8450Block!0=SpyCalc:Block!4=46:SYS "Wimp_GetIconState",,Block 8460IF Spy THEN Block!8=(0<<12):ELSE Block!8=(14<<12) 8470Block!12=(255<<12) 8480SYS "Wimp_SetIconState",,Block 8490ENDPROC 8500: 8510DEF FNDoSpy(OldWin) 8520SYS "Wimp_GetPointerInfo",,Block 8530Win=Block!12:Ic=Block!16 8540IF Win=-1 THEN PROCUpdateIcon(SpyCalc,4,"") ELSE PROCUpdateIcon(SpyCalc,4,STR$(Win)) 8550IF Ic=-1 THEN PROCUpdateIcon(SpyCalc,5,"") ELSE PROCUpdateIcon(SpyCalc,5,STR$(Ic)) 8560IF (Win>0) OR ((Win=-2) AND (wimp>=300)) THEN 8570 Block!0=Win:SYS "Wimp_GetWindowState",,Block 8580 VminX=Block!4:VminY=Block!8 8590 VmaxX=Block!12:VmaxY=Block!16 8600 ScrollX=Block!20:ScrollY=Block!24 8610 WindFlags=Block!32 8620 PROCUpdateIcon(SpyCalc,10,STR$(VminX)):PROCUpdateIcon(SpyCalc,11,STR$(VminY)) 8630 PROCUpdateIcon(SpyCalc,16,STR$(VmaxX)):PROCUpdateIcon(SpyCalc,17,STR$(VmaxY)) 8640 PROCUpdateIcon(SpyCalc,22,STR$(ScrollX)):PROCUpdateIcon(SpyCalc,23,STR$(ScrollY)) 8650 IF Win<>OldWin THEN PROCUpdateSwitches(WindFlags) 8660 IF Win<>OldWin THEN PROCUpdateIcon(SpyCalc,46,"&"+STR$~FNWindFlags) 8670 REM Only update flags if the window handle has changed. 8680ELSE 8690 IF Win<>OldWin THEN 8700 REM Not the same window as before, so update: 8710 RESTORE +1 8720 DATA 10,11,16,17,22,23 8730 FOR N=1 TO 6 8740 READ Icon:PROCUpdateIcon(SpyCalc,Icon,"") 8750 NEXT 8760 FOR N=26 TO 45 8770 Block!0=SpyCalc:Block!4=N:SYS "Wimp_GetIconState",,Block 8780 Block!8=(0<<21):Block!12=(1<<21) 8790 SYS "Wimp_SetIconState",,Block 8800 NEXT 8810 PROCUpdateIcon(SpyCalc,46,"&"+STR$~FNWindFlags) 8820 ENDIF 8830ENDIF 8840=Win 8850: 8860DEF PROCUpdateSwitches(WindFlags) 8870RESTORE +1 8880DATA 24,25,26,27,28,29,30,1,4,5,6,8,9,10,11,12,13,14,15,31 8890FOR N=26 TO 45 8900 READ bit 8910 PROCUpdateSelectedFlag(SpyCalc,N,(WindFlags AND (1<<bit))=(1<<bit)) 8920NEXT 8930ENDPROC 8940: 8950DEF FNWindFlags 8960WindFlags=0 8970RESTORE +1 8980DATA 24,25,26,27,28,29,30,1,4,5,6,8,9,10,11,12,13,14,15,31 8990FOR N=26 TO 45 9000 READ bit 9010 IF FNSelectedState(SpyCalc,N) THEN WindFlags+=(1<<bit) 9020NEXT 9030=WindFlags 9040: 9050DEF FNSaveSettings 9060LOCAL ERROR 9070ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM Error writing file 9080 : 9090 Data=OPENOUT ("<WindFlags$Dir>.Settings") 9100 BPUT#Data,"| X and Y grid coordinates of Window Flags window:" 9110 BPUT#Data,STR$(XPosition) 9120 BPUT#Data,STR$(YPosition) 9130 BPUT#Data,"| Spying at startup (-1 for TRUE; 0 for FALSE):" 9140 BPUT#Data,STR$(Spying) 9150 CLOSE#Data 9160 OSCLI("Settype <WindFlags$Dir>.Settings Text") 9170 : 9180=TRUE 9190: 9200DEF FNLoadSettings 9210LOCAL ERROR 9220ON ERROR LOCAL RESTORE ERROR:PROCCloseFileIfPoss(Data):=FALSE:REM 'Settings' file is damaged or missing 9230 : 9240 Data=OPENIN "<WindFlags$Dir>.Settings" 9250 XPosition=VAL(FNNextEntry) 9260 YPosition=VAL(FNNextEntry) 9270 Spying=VAL(FNNextEntry) 9280 CLOSE#Data 9290 : 9300 IF XPosition<>-1 AND YPosition<>-1 THEN PROCUpdateSelectedFlag(Loc,6+((5*XPosition)+(4-YPosition)),TRUE) 9310 PROCTickMenu(MainMenu,1,Spying) 9320 : 9330=TRUE 9340: 9350DEF PROCDefaultSettings 9360XPosition=4:YPosition=2 9370PROCUpdateSelectedFlag(Loc,6+((5*XPosition)+(4-YPosition)),TRUE) 9380Spying=TRUE 9390PROCTickMenu(MainMenu,1,Spying) 9400ENDPROC 9410: 9420DEF PROCRAMTransmit 9430OtherTaskHandle=Block!4:MyRef=Block!8:TransmitBuffer=Block!20 9440SYS "Wimp_TransferBlock",Task,Transmission,OtherTaskHandle,TransmitBuffer,10 9450Block!0=28:Block!16=7:REM RAM Transmit 9460Block!12=MyRef:Block!20=TransmitBuffer 9470Block!24=LEN($Transmission) 9480SYS "Wimp_SendMessage",17,Block,OtherTaskHandle 9490Dragging$="" 9500ENDPROC 9510: 9520DEF PROCWimpScrapTransmit 9530OtherTaskHandle=Block!4:MyRef=Block!8 9540SaveFilename$=LEFT$($(Block+44),INSTR($(Block+44),CHR$0)-1) 9550LOCAL ERROR 9560ON ERROR LOCAL RESTORE ERROR:ERROR 9999,"An error has occurred during transmission." 9570Data=OPENOUT SaveFilename$ 9580BPUT#Data,$(Transmission) 9590CLOSE#Data 9600OSCLI("SetType "+SaveFilename$+" Text") 9610Block!0=(44+LEN(SaveFilename$)):Block!0=(Block!0)+(4-((Block!0) MOD 4)):REM Word align 9620Block!12=MyRef:Block!16=3:REM DataLoad 9630Block!20=DraggedToWindow:Block!24=DraggedToIcon 9640Block!28=DraggedToX:Block!32=DraggedToY 9650Block!36=12:REM Never more than 12 bytes 9660Block!40=&FFF:REM Filetype of Text 9670$(Block+44)=SaveFilename$+CHR$0:Dragging$="" 9680SYS "Wimp_SendMessage",18,Block,OtherTaskHandle 9690ENDPROC 9700: 9710DEF FNMakeDraggingSprite 9720LOCAL ERROR 9730ON ERROR LOCAL SYS "OS_SpriteOp",r0,r1,r2,r3:RESTORE ERROR:ERROR ERR,REPORT$ 9740Scaling=FNModeInfo("YEigFactor",-1) 9750IF Scaling<=1 THEN 9760 Name$="flags_high" 9770 SYS "OS_SpriteOp",256+60,Sprites,Name$ TO r0,r1,r2,r3 9780 SYS "OS_SpriteOp",256+34,Sprites,"draghigh",0,0,8 9790ELSE 9800 Name$="flags_low" 9810 SYS "OS_SpriteOp",256+60,Sprites,Name$ TO r0,r1,r2,r3 9820 SYS "OS_SpriteOp",256+34,Sprites,"draglow",0,0,8 9830ENDIF 9840SYS "Wimp_SetColour",7 9850VDU5:MOVE (160-(16*LEN($Transmission)))/2,36 9860VDU 23,17,7,6,8;8;0;:REM Single-height text 9870IF Scaling<=1 THEN VDU 23,17,7,6,8;16;0;:REM Double-height text 9880PRINT $Transmission 9890SYS "OS_SpriteOp",r0,r1,r2,r3 9900=Name$
!� >!RunImage for Window Flags : AVersionNumber$="1�02 (22 June 1993)":Taskname$="Window�Flags" (Exit=�:Startup=�:Done=� 2DoModeChange=� <: F6� Block 256,Buffer 256,MenuHelp 16,Transmission 10 P/IndMenuMax=64:� IndirectMenuText IndMenuMax Z7� Templates 2489,InfoInd 189,LocInd 592,SpyInd 1087 d� IBMenu 76,MainMenu 124 n: x*� Messages used by the OmniDesk suite: �_UtilDeclare=&825C0:UtilOpen=&825C1:UtilQuitting=&825C2:UtilReside=&825C3:UtilAckLoad=&825C4 �+� These are official Acorn allocations. �: �n� � Block!0=�:$(Block+4)=�$+" (internal error code "+�(�)+")"+�0:ș "Wimp_ReportError",Block,1,Taskname$:� �: �?OmniDesk=�ReadStartupString:� Also assigns Exit and Startup �: �*Set WindFlags$RISCOS 3 �7*RMEnsure UtilityModule 3.00 Set WindFlags$RISCOS 2 �Zș "XOS_ReadVarVal","WindFlags$RISCOS",Block,256,0,0 � ,,len:Block?len=13:wimp$=$Block �� wimp$<>"3" � wimp$="2" �*Unset WindFlags$RISCOS �: !*Set WindFlags$SpriteDrag Yes :*RMEnsure DragASprite 0.00 Set WindFlags$SpriteDrag No Qș "XOS_ReadVarVal","WindFlags$SpriteDrag",Block,256,0,0 � ,,len:Block?len=13 "2� $Block="Yes" � DragASprite=�:� DragASprite=� ,*Unset WindFlags$SpriteDrag 6: @Yș "XOS_ReadVarVal","Obey$Dir",Block,256,0,0 � ,,len:Block?len=13:OurFileName$=$Block J8N=-1:�:N+=1:� �OurFileName$,�(OurFileName$)-N,1)="." TOOurPathName$=�OurFileName$,�(OurFileName$)-N):OurFileName$=�OurFileName$,N) ^: h^� Read size of sprite file and load it. We need to DIM 16 bytes more than the file's size. r:ș "OS_FSControl",28,"<WindFlags$Dir>.Sprites" � ,,len |�� Sprites len+16:!Sprites=len+16:Sprites!4=0:Sprites!8=16:Sprites!12=16:ș "OS_SpriteOp",256+10,Sprites,"<WindFlags$Dir>.Sprites" �: �� wimp$="3" � � � messagelist% 36 �/ messagelist%!0=&502:messagelist%!4=&400C1 �: messagelist%!8=UtilOpen:messagelist%!12=UtilQuitting �3 messagelist%!16=UtilReside:messagelist%!20=10 �; messagelist%!24=6:messagelist%!28=2:messagelist%!32=0 �K ș "Wimp_Initialise",300,&4B534154,Taskname$,messagelist% � wimp,Task �� �> ș "Wimp_Initialise",200,&4B534154,Taskname$ � wimp,Task �� �: �"ș "Interface_Initialise",Task : 7ș "Wimp_OpenTemplate",,"<WindFlags$Dir>.Templates" Eș "Wimp_LoadTemplate",,Templates,InfoInd,InfoInd+189,-1,"Info",0 &,ș "Wimp_CreateWindow",,Templates � Info 0\ș "Wimp_LoadTemplate",,Templates,LocInd,LocInd+592,-1,"WindowXY",0:Templates!64=Sprites :+ș "Wimp_CreateWindow",,Templates � Loc D\ș "Wimp_LoadTemplate",,Templates,SpyInd,SpyInd+1087,-1,"SpyCalc",0:Templates!64=Sprites N/ș "Wimp_CreateWindow",,Templates � SpyCalc Xș "Wimp_CloseTemplate" b: l�BuildMenus v: ��CleanUpLocWindow �ReadError=�(�LoadSettings) ��ClearSpyCalcWindow(Spying) �: ��Initialise �: �� OmniDesk=0 � � � Put Icon on the icon-bar � Block!0=-1 �1 Block!4=0:Block!8=0:Block!12=68:Block!16=68 �5 Block!20=&17003002:$(Block+24)="!WindFlags"+�13 �+ ș "Wimp_CreateIcon",,Block � IconBar �� : &� OmniDesk<>0 � �DeclareToOmniDesk R� Startup � Done=�:� '-Startup' parameter means 'declare and die immediately'. : *&�UpdateIcon(Info,3,VersionNumber$) 46�ModeChange:� To update icon-bar icon if necessary >: H� � �Error R�� ReadError � ReadError=�:�DefaultSettings:� 9999,"An error occurred whilst reading the settings file. Default settings will therefore be used." \: f)ș "OS_ReadMonotonicTime" � polltime% pOldWin=0 z: �� Main program loop �� �6 ș "Wimp_PollIdle",%1100000110000,Block � Reason �& ș "Interface_Poll",Reason,,Task �4 ș "Interface_PreProcessKey",Reason,Block,Task � Ȏ Reason � �3 � 0 : ș "OS_ReadMonotonicTime" � polltime% �4 � Spying � (�OpenState(SpyCalc)) � �6 OldWin=�DoSpy(OldWin):polltime%+=10 � � �N polltime%+=100:� Do a Wimp_Poll approximately once a second � � �^ � DoModeChange � � �OpenState(SpyCalc) � �Open(SpyCalc,�,XPosition,YPosition) � 1 : �Redraw ) � 2 : ș "Wimp_OpenWindow",,Block * � 3 : ș "Wimp_CloseWindow",,Block $ � Exit � Done=� . � 6 : �MouseButton 8 � 7 : �DragFinished B � 8 : �KeyPressed L � 9 : �DecodeMenu V$ � 17,18,19 : �RecieveMessage ` � j � Done t�SayGoodbye ~� �: �� �Error �Click=0:Block!0=�:Ȏ � � � � 9999:� Custom error � $(Block+4)=�$+�0 �? ș "Wimp_ReportError",Block,17,"Notice from "+Taskname$ � �v $(Block+4)=�$+" (internal error code "+Þ+"). Click on OK to continue, or Cancel to terminate the program."+�0 �8 ș "Wimp_ReportError",Block,3,Taskname$ � ,Click �� �� Click=2 � �SayGoodbye:� �� : .� �Open(WindowHandle,TopOfStack,across,up) Block!0=WindowHandle #ș "Wimp_GetWindowState",,Block (J� (across<>-1) � (across<>-1) � �DecideWindowPosition(Block,across,up) 2� TopOfStack � Block!28=-1 <ș "Wimp_OpenWindow",,Block F� P: Z� �Close(WindowHandle) dBlock!0=WindowHandle n#ș "Wimp_GetWindowState",,Block x ș "Wimp_CloseWindow",,Block �� �: �,� �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) 6K� LP is Left Pixel: normally present, but not if window is transparent. @%width=(right-left)/(2^XEigFactor) J#height=(top-bot)/(2^YEigFactor) TȎ across � ^ � 0:x=LP h, � 1:x=LP+((Xpixels+1)-(width+LP+VS))/4 r, � 2:x=LP+((Xpixels+1)-(width+LP+VS))/2 |2 � 3:x=LP+(3*(((Xpixels+1)-(width+LP+VS))/4)) �" � 4:x=(Xpixels+1)-(width+VS) �� �Ȏ 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 � &: 0O� ------------------------------------------------------------------------- :� Wimp poll routines DO� ------------------------------------------------------------------------- N: X � �Redraw b� DoModeChange � ld � Re-opening windows need an extra wimp_poll to happen after the mode change in order to work: vB � �OpenState(SpyCalc) � �Open(SpyCalc,�,XPosition,YPosition) � DoModeChange=� �� �(ș "Wimp_RedrawWindow",,Block � flag �ȕ flag �* ș "Interface_Render3dWindow",,Block �* ș "Wimp_GetRectangle",,Block � flag �� �� �: �� �RecieveMessage �Ȏ Block!16 � � � 0 : Done=� � � 2 : � DataSaveAck M � Other task wants a transfer via <Wimp$Scrap> rather than RAM ! �WimpScrapTransmit � 6 : � RAM Fetch . � Other task is asking for data * �RAMTransmit 41 � 10: � OmniDesk=0 � �SaveDesktop(Block!20) >E � Only save if we have not been started up by OmniDesk H � &502 : �Help R � &400C1 : �ModeChange \= � UtilOpen : � $(Block+24)=Taskname$ � �OmniDeskCalling f& � UtilQuitting : � OmniDesk<>0 � p8 � Block!20=OmniDesk � Done=� z � � � UtilReside : Exit=� �� �� �: �� �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 !Window=Block!12:Icon=Block!16 Ȏ Window � $" � -2:� Icon bar icon clicked . Ȏ Buttons � 8 � 1 : � Adjust B � 2 : � Menu L9 M%=IBMenu:MenuX=MouseX:MenuY=MouseY:�MakeMenu V � 4 : � Select `0 �Open(SpyCalc,�,XPosition,YPosition) j � t � SpyCalc ~ Ȏ Buttons � � � 2 : � Menu �1 M%=MainMenu:MenuX=MouseX:MenuY=MouseY � � wimp>=310 � �` � �$MainMenuTitle,1)="\" � $MainMenuTitle=�$MainMenuTitle,�($MainMenuTitle)-1)+�13 �C � XPosition=4 � $MainMenuTitle="\"+$MainMenuTitle+�13 � � � �MakeMenu �! � 1,4 : � Select,Adjust �' � (Icon>=26) � (Icon<=44) � �6 �UpdateIcon(SpyCalc,46,"&"+�~�WindFlags) � � � : � (Buttons>7) � (Window=SpyCalc) � (Icon=46) � 4 $Transmission=�ReadIconStr(SpyCalc,46) R Dragging$="Flags":�DragBox(SpyCalc,46,5,Sprites,�MakeDraggingSprite) � ( � 20 � Loc � Buttons<8:� Reposition main window < � Icon>=6 � F, XPosition=�ReadWindowLocation("X") P, YPosition=�ReadWindowLocation("Y") ZF � �OpenState(SpyCalc) � �Open(SpyCalc,�,XPosition,YPosition) d � n� x� �: �� �DragFinished �)� DragASprite � ș "DragASprite_Stop" �#ș "Wimp_GetPointerInfo",,Block �.� Block!12=-1 � �:� Dragged to background. �YDraggedToX=Block!0:DraggedToY=Block!4:DraggedToWindow=Block!12:DraggedToIcon=Block!16 �0� OK - Let's begin an inter-application save �MyRef=0 �4Block!0=256:Block!12=MyRef:Block!16=1:� DataSave �[Block!20=DraggedToWindow:Block!24=DraggedToIcon:Block!28=DraggedToX:Block!32=DraggedToY �*Block!36=12:� Never more than 12 bytes �$Block!40=&FFF:� Filetype of Text �$(Block+44)=Dragging$+�0 @ș "Wimp_SendMessage",17,Block,DraggedToWindow,DraggedToIcon B� DraggedToIcon included in case DraggedToWindow=-2 (icon bar) � ": ,� �KeyPressed 62Window=Block!0:Icon=Block!4:Character=Block!24 @Ȏ Window � J � SpyCalc: T � Character=13 � ^S A$=�ReadIconStr(SpyCalc,46):� A$="" � A$="0":�UpdateIcon(SpyCalc,46,"&0") h �UpdateSwitches(�(A$)) r � |( ș "Wimp_ProcessKey",Character � � � �& ș "Wimp_ProcessKey",Character �� �� �: �� �DecodeMenu �*Sub0=Block!0:Sub1=Block!4:Sub2=Block!8 �CloseMenu=� �Ȏ M% � � � IBMenu: � Ȏ Sub0 � � � 0 + ș "Wimp_GetPointerInfo",,Block < ș "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 CloseMenu=� & � 1 0 Done=� : � D � MainMenu: N Ȏ Sub0 � X � 0 b+ ș "Wimp_GetPointerInfo",,Block l< ș "Wimp_CreateMenu",,Info,Block!0-24,Block!4+24 v CloseMenu=� � � 1 �8 Spying=� Spying:�TickMenu(MainMenu,1,Spying) �0 �ClearSpyCalcWindow(Spying):OldWin=0 �4 �UpdateIcon(SpyCalc,46,"&"+�~�WindFlags) �m ș "Wimp_GetCaretPosition",,Block:� (Block!0=SpyCalc) � Spying � ș "Wimp_SetCaretPosition",-1,-1 � � 2 �+ ș "Wimp_GetPointerInfo",,Block �; ș "Wimp_CreateMenu",,Loc,Block!0-24,Block!4+24 � CloseMenu=� � � 3 �\ � � �SaveSettings � � 9999,"An error occurred whilst writing the settings file." � � �� #ș "Wimp_GetPointerInfo",,Block 3� ((Block!8 � 1)=1) � (� CloseMenu) � �MakeMenu � : *O� ------------------------------------------------------------------------- 4� Menu routines >O� ------------------------------------------------------------------------- H: R� �BuildMenus \I� This procedure should only be visited once, since it contains DIMs. f : pO� In the menu title strings below, if a "|" character is present it will be zO� replaced by a space under RISC OS 3.1 (or greater), or will terminate the �O� 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). � : �#IndirectMenuTextOffsetPointer=0 �N� This points to a pool to be used by all menus for their indirected text. � : � M%=IBMenu �=� wimp>=310 � Title$="Window Flags":� Title$="Wind Flags" �5� IBMenuTitle �(Title$)+1:$IBMenuTitle=Title$+�13 ��MenuInit(IBMenuTitle) ��MenuItem("Info",0,Info) ��MenuItem("Quit",128,-1) � : M%=MainMenu =� wimp>=310 � Title$="Window Flags":� Title$="Wind Flags" 9� MainMenuTitle �(Title$)+2:$MainMenuTitle=Title$+�13 $�MenuInit(MainMenuTitle) .�MenuItem("Info",2,Info) 8$�MenuItem("Spy on windows",0,-1) B&�MenuItem("Window position",2,Loc) L%�MenuItem("Save settings",128,-1) V� `: j� �MakeMenu t� MenuX<0 � MenuX=0 ~*� MenuY<184 � MenuY=184:� 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 M%!20=44:M%!24=0 (P%=M%+28 2� <: F!� �MenuItem(Text$,Flags,Link) PK� Flags: 1-ticked, 2-dashed line, 4-writeable, 8-message, 128-last item Z1� Link: menu or window handle for sub-pointer dP%!0=Flags:P%!4=Link n� �(Text$)<=12 � x% 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� ------------------------------------------------------------------------- ")� Responses to incoming wimp messages ,O� ------------------------------------------------------------------------- 6: @� �SaveDesktop(File) J� � TG� � � Block!12=Block!8:ș "Wimp_SendMessage",19,Block,Block!4:� �:� ^I� The above line acknowledges the message if an error occurs, thereby h � aborting the desktop save. r+�#File,"Run "+OurPathName$+OurFileName$ |� �: �� �Help �4Block!12=Block!8:Block!16=&503:HelpInfo=Block+20 � : �0� Block!32 gives window, Block!36 gives icon � : �Ȏ Block!32 � �2 � -2:�Send("This is the Window Flags icon.") �= �Send("Click MENU for information or to quit.") �D �Send("Click SELECT to open the Window Flags window.") � � SpyCalc: � Ȏ Block!36 � �_ � 0,1,2,3,4,5:�Send("This area shows the window and icon handles under the pointer.") k � 6,7,8,9,10,11:�Send("This area shows the minimum coordinates of the window under the pointer.") o � 12,13,14,15,16,17:�Send("This area shows the maximum coordinates of the window under the pointer.") o � 18,19,20,21,22,23:�Send("This area shows how much the window under the pointer has been scrolled.") & � 24,25,47:� Spying � 0i �Send("This area shows the individual flags for the window under the pointer.") : � D� �Send("Click the switches in this area to work out the window flags, or enter a value in the box and press RETURN to find out what it means.") N � XN � 26:�Send("This switch is selected if the window has a Back icon.") bO � 27:�Send("This switch is selected if the window has a Close icon.") lS � 28:�Send("This switch is selected if the window has a Title Bar icon.") vU � 29:�Send("This switch is selected if the window has a Toggle Size icon.") �X � 30:�Send("This switch is selected if the window has a vertical scroll bar.") �N � 31:�Send("This switch is selected if the window has a Size icon.") �Z � 32:�Send("This switch is selected if the window has a horizontal scroll bar.") �K � 33:�Send("This switch is selected if the window can be moved.") �q � 34:�Send("This switch is selected if the window can be updated automatically by the window manager.") �H � 35:�Send("This switch is selected if the window is a pane.") �h � 36:�Send("This switch is selected if the window can move beyond the limits of the desktop.") �v � 37:�Send("This switch is selected if window scrolling is not automatic, and the arrow icons auto-repeat.") �} � 38:�Send("This switch is selected if window scrolling is not automatic, and the arrow icons do not auto-repeat.") ڀ � 39:�Send("This switch is selected if the window's colours are treated as GCOL colours rather than Desktop colours.") �q � 40:�Send("This switch is selected if other windows are not allowed to be opened behind this window.") �Z � 41:�Send("This switch is selected if the window genereates 'hot key' events.") �q � 42:�Send("This switch is selected if the window is being forced to stay on screen (RISC OS 3 only).") � � 43:�Send("This switch is selected if the right-hand window extend is ignored during resize drags (RISC OS 3 only).") { � 44:�Send("This switch is selected if the lower window extent is ignored during resize drags (RISC OS 3 only).") r � 45:�Send("This switch is selected if the window has been defined using the new format specification.") C � 46:�Send("This shows the window flags in hexadecimal.") *f � � Spying � �Send("Enter a value here and press RETURN to find out what it means.") 4v � � Spying � �Send("You can drag this figure out to another application or to a directory display.") >: �Send("This is the Window Flags main window.") HN �Send("You can spy on windows or calculate window flags.") R � \J � Info:�Send("This window displays information about Window Flags.") f] �Send("Window Flags is a member of the OmniDesk Suite of desktop utilities.") p � Loc: z Ȏ � � �m � ((Block!36)<6):�Send("This window lets you snap the magnifier window to an invisble screen grid.") �� �Send("The second position up puts the window just above the icon-bar, and is therefore not evenly spaced with the other rows.") �� �Send("Click SELECT on the position you want the window to snap to, or ADJUST on the window icon to turn the snapping off.") �u �Send("If snapping is on, the window will open at the appropriate position when you change mode.") � � � � � 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 � Z � 0:�Send("Move the pointer right to see information about Window Flags.") ? � 1:�Send("Click SELECT to quit Window Flags.") B �Send("This is the Window Flags icon-bar menu.") $ � . � 8 � MainMenu: BW Direction$="right":� wimp>=310 � �(MainMenuTitle?0)="\" � Direction$="left" L Ȏ MenuHelp!0 � Va � 0:�Send("Move the pointer "+Direction$+" to see information about Window Flags.") ` � 1:� Spying � j` �Send("Click SELECT or ADJUST to stop spying and work out window flags.") t � ~m �Send("Click SELECT or ADJUST to spy on windows you point to with the mouse pointer.") � � �x � 2:�Send("Move the pointer "+Direction$+" to set the position of the Window Flags window on the screen.") �m � 3:�Send("Click SELECT or ADJUST to save the Window Flags window position and spying status.") �< �Send("This is the Window Flags main menu.") � � � � � � �� � : �?HelpInfo=0 �$Block!0=(HelpInfo+4-Block) � � 3 �*ș "Wimp_SendMessage",17,Block,Block!4 � : � �OmniHelpMessage(A$) <� A$="CLICK" � =�"open the Window Flags window.",76)+�13 (� A$="DRAG" � =�"",76)+�13 2="" <: F� �Send(Text$) P$HelpInfo=Text$+"|M" ZHelpInfo+=�(Text$)+2 d� n: x� �OmniDeskCalling �� OmniDesk=0 � � �I� This first line is for if a broadcast message is received which was �A� intended for a transient copy of the utility. A stand-alone �?� instantiation of the utility should ignore such messages. �Ȏ Block!20 � �. � 4:�Open(SpyCalc,�,XPosition,YPosition) �� �� �: �� �ModeChange �DoModeChange=� �>� OmniDesk=0 � �UpdateIconForMode("!WindFlags",-2,IconBar) �� : O� ------------------------------------------------------------------------- 8� General non-specific useful routines (mostly wimp) "O� ------------------------------------------------------------------------- ,: 6 � �UpdateIcon(Wndw,Icn,Txt$) @:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block J� �(Txt$)>(Block!36)-1 � T& � ((Block!24) � (1<<9))=(1<<9) � ^ � Right-justified h$ Txt$="�"+�Txt$,(Block!36)-2) r � |# � 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 0:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block :;� (((Block?27)>>4)=BCol) � (((Block?27) � 16)=FCol) � � D' � ^ Same colour, so don't change. N:Block!12=(%11111111<<24):Block!8=(BCol<<28)+(FCol<<24) X!ș "Wimp_SetIconState",,Block b� l: v)� �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) � =� 4=� >: H� �ShadedState(Wndw,Icn) R:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block \)� ((Block!24) � (1<<22))=(1<<22) � =� f=� p: z� �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) � =� =� $: .� �MenuTicked(Menu,Item) 8'� (!(Menu+28+(24*Item)) � 1)=1 � =� B=� L: V� �ReadIcon(Wndw,Icn) ` � Read numeric value of icon j:Block!0=Wndw:Block!4=Icn:ș "Wimp_GetIconState",,Block t=�($(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 2: <+� �UpdateIconForMode(Appname$,Wndw,Icn) FN� This procedure requires that ALL the icon sprites are defined in mode 20 PN� or mode 27 (which is equivalent) with a mask but no palette. They should ZN� still appear to have the expected resolutions and number of colours, i.e dN� !Sprites23: two colours, high resolution, !Sprites (actually !Sprites24) nL� at mode 12 resolution (double height pixels) in 16 colours, and normal xL� 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 6Uș "OS_SpriteOp",256+49,Sprites,Appname$+Extension$,0,0:� Paint mask from Sprites @7� 4,128:�:� Invert to make mask the right way round J6ș "OS_SpriteOp",r0,r1,r2,r3:� Reset screen output T : ^#� Paint sprite into iconsprite: h\ș "OS_SpriteOp",256+60,iconsprite%,Appname$,0 � r0,r1,r2,r3:� Output to new icon sprite rWș "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 : &B� �CreateIcon(WindowHandle,minX,minY,maxX,maxY,Flags,IconData) 0Block!0=WindowHandle :HBlock!4=minX:Block!8=minY:Block!12=maxX:Block!16=maxY:Block!20=Flags D?Block!24=IconData!0:Block!28=IconData!4:Block!32=IconData!8 N,ș "Wimp_CreateIcon",,Block � IconHandle X=IconHandle b: l� �Initialise v-AppSize=�-&8000:MinSize=AppSize:SlotEnd=� �� �: �� �AllocateMemory(Required) �SlotSize=�SlotSize(-1) ��� SlotSize<Required � NewSize=�SlotSize(Required):� NewSize<Required � SlotSize=�SlotSize(AppSize):=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) *� � 4&� � � � �:�:� Unable to close file >�#FileHandle H� R: \� �FindFileSize(FileName$) f � FileName$="<Wimp$Scrap>" � p: ș "OS_File",15,FileName$,,,FileName$ � ,,,,FileSize z� �4 N=-1:�:N+=1:� �FileName$,�(FileName$)-N,1)="." �B 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$ $: .G� �DragBox(WindowHandle,IconHandle,DragType,SpriteArea,SpriteName$) 88Block!0=WindowHandle:ș "Wimp_GetWindowState",,Block B wminx=Block!4:wmaxy=Block!16 LIBlock!0=WindowHandle:Block!4=IconHandle:ș "Wimp_GetIconState",,Block V>iminx=Block!8:iminy=Block!12:imaxx=Block!16:imaxy=Block!20 `)Block!0=WindowHandle:Block!4=DragType jBlock!8=(wminx+iminx) tBlock!12=(wmaxy+iminy) ~Block!16=(wminx+imaxx) �Block!20=(wmaxy+imaxy) �Block!24=1:Block!28=1 �GBlock!32=(�ModeInfo("Xpixels",-1)+1)*(2^�ModeInfo("XEigFactor",-1)) �GBlock!36=(�ModeInfo("Ypixels",-1)+1)*(2^�ModeInfo("YEigFactor",-1)) �� DragASprite � �E ș "DragASprite_Start",%10000101,SpriteArea,SpriteName$,Block+8 �� � ș "Wimp_DragBox",,Block �� �� �: �O� ------------------------------------------------------------------------- /� Routines common to the OmniDesk utilities O� ------------------------------------------------------------------------- : � �DeclareToOmniDesk (/Block!0=208:Block!12=0:Block!16=UtilDeclare 2Block!20=Task <$(Block+24)=Taskname$ F$(Block+44)=OurFileName$ P)$(Block+55)=�OmniHelpMessage("CLICK") Z)$(Block+132)=�OmniHelpMessage("DRAG") d+ș "Wimp_SendMessage",17,Block,OmniDesk n� x: �� �SayGoodbye �� OmniDesk<>0 � �1 Block!0=24:Block!12=0:Block!16=UtilQuitting � Block!20=Task �- ș "Wimp_SendMessage",17,Block,OmniDesk �� �!ș "Interface_CloseDown",Task �&ș "Wimp_CloseDown",Task,&4B534154 �� �: �� �ReadStartupString �M� Returns task handle of OmniDesk (which is passed in the command string) �&� or 0 if not started by OmniDesk. ș "OS_GetEnv" � Command$ A=�Command$,"-Startup") � A<>0 � Startup=� "A=�Command$,"-Exit") ,� A<>0 � Exit=� 6A=�Command$,"-OmniDesk") @� A=0 � =0 J=�(�Command$,A+9)) T: ^ � �ReadWindowLocation(Axis$) hH� Reads which radio icon (if any) is selected in the Window Position rH� selector window and returns the axis coordinate (two calls needed) |%� or -1 for no position selected. �?Icon=5:�:Icon+=1:� (�SelectedState(Loc,Icon)=�) � (Icon=31) �*� Icon=31 � =-1:� All icons deselected �4Location=-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� ------------------------------------------------------------------------- 0,� Special routines for this program only :O� ------------------------------------------------------------------------- D: N� �ClearSpyCalcWindow(Spy) X� +1 b� 4,5,10,11,16,17,22,23 l � N=1 � 8 v) � Icon:�UpdateIcon(SpyCalc,Icon,"") �� �� N=26 � 44 �= Block!0=SpyCalc:Block!4=N:ș "Wimp_GetIconState",,Block �& Block!8=(0<<21):Block!12=(1<<21) �2 � Spy � Block!8+=(0<<12):� Block!8+=(11<<12) � Block!12+=(255<<12) �# ș "Wimp_SetIconState",,Block �� �<Block!0=SpyCalc:Block!4=45:ș "Wimp_GetIconState",,Block �$Block!8=(1<<21):Block!12=(1<<21) �(Block!8+=(0<<12):Block!12+=(255<<12) �!ș "Wimp_SetIconState",,Block � �UpdateIcon(SpyCalc,46,"&0") !<Block!0=SpyCalc:Block!4=46:ș "Wimp_GetIconState",,Block !.� Spy � Block!8=(0<<12):� Block!8=(14<<12) !Block!12=(255<<12) ! !ș "Wimp_SetIconState",,Block !*� !4: !>� �DoSpy(OldWin) !H#ș "Wimp_GetPointerInfo",,Block !RWin=Block!12:Ic=Block!16 !\H� Win=-1 � �UpdateIcon(SpyCalc,4,"") � �UpdateIcon(SpyCalc,4,�(Win)) !fF� Ic=-1 � �UpdateIcon(SpyCalc,5,"") � �UpdateIcon(SpyCalc,5,�(Ic)) !p*� (Win>0) � ((Win=-2) � (wimp>=300)) � !z1 Block!0=Win:ș "Wimp_GetWindowState",,Block !�! VminX=Block!4:VminY=Block!8 !�# VmaxX=Block!12:VmaxY=Block!16 !�' ScrollX=Block!20:ScrollY=Block!24 !� WindFlags=Block!32 !�G �UpdateIcon(SpyCalc,10,�(VminX)):�UpdateIcon(SpyCalc,11,�(VminY)) !�G �UpdateIcon(SpyCalc,16,�(VmaxX)):�UpdateIcon(SpyCalc,17,�(VmaxY)) !�K �UpdateIcon(SpyCalc,22,�(ScrollX)):�UpdateIcon(SpyCalc,23,�(ScrollY)) !�0 � Win<>OldWin � �UpdateSwitches(WindFlags) !�> � Win<>OldWin � �UpdateIcon(SpyCalc,46,"&"+�~�WindFlags) !�; � Only update flags if the window handle has changed. !�� !� � Win<>OldWin � !�3 � Not the same window as before, so update: " � +1 " � 10,11,16,17,22,23 " � N=1 � 6 "$- � Icon:�UpdateIcon(SpyCalc,Icon,"") ". � "8 � N=26 � 45 "BA Block!0=SpyCalc:Block!4=N:ș "Wimp_GetIconState",,Block "L* Block!8=(0<<21):Block!12=(1<<21) "V' ș "Wimp_SetIconState",,Block "` � "j0 �UpdateIcon(SpyCalc,46,"&"+�~�WindFlags) "t � "~� "�=Win "�: "� � �UpdateSwitches(WindFlags) "�� +1 "�;� 24,25,26,27,28,29,30,1,4,5,6,8,9,10,11,12,13,14,15,31 "�� N=26 � 45 "� � bit "�D �UpdateSelectedFlag(SpyCalc,N,(WindFlags � (1<<bit))=(1<<bit)) "�� "�� "�: "�� �WindFlags # WindFlags=0 # � +1 #;� 24,25,26,27,28,29,30,1,4,5,6,8,9,10,11,12,13,14,15,31 #� N=26 � 45 #( � bit #27 � �SelectedState(SpyCalc,N) � WindFlags+=(1<<bit) #<� #F=WindFlags #P: #Z� �SaveSettings #d� � #n<� � � � �:�CloseFileIfPoss(Data):=�:� Error writing file #x : #�) Data=� ("<WindFlags$Dir>.Settings") #�A �#Data,"| X and Y grid coordinates of Window Flags window:" #� �#Data,�(XPosition) #� �#Data,�(YPosition) #�> �#Data,"| Spying at startup (-1 for TRUE; 0 for FALSE):" #� �#Data,�(Spying) #� �#Data #�0 �("Settype <WindFlags$Dir>.Settings Text") #� : #�=� #�: #�� �LoadSettings #�� � $O� � � � �:�CloseFileIfPoss(Data):=�:� 'Settings' file is damaged or missing $ : $' Data=� "<WindFlags$Dir>.Settings" $" XPosition=�(�NextEntry) $, YPosition=�(�NextEntry) $6 Spying=�(�NextEntry) $@ �#Data $J : $Tb � XPosition<>-1 � YPosition<>-1 � �UpdateSelectedFlag(Loc,6+((5*XPosition)+(4-YPosition)),�) $^" �TickMenu(MainMenu,1,Spying) $h : $r=� $|: $�� �DefaultSettings $�XPosition=4:YPosition=2 $�>�UpdateSelectedFlag(Loc,6+((5*XPosition)+(4-YPosition)),�) $�Spying=� $� �TickMenu(MainMenu,1,Spying) $�� $�: $�� �RAMTransmit $�AOtherTaskHandle=Block!4:MyRef=Block!8:TransmitBuffer=Block!20 $�Oș "Wimp_TransferBlock",Task,Transmission,OtherTaskHandle,TransmitBuffer,10 $�(Block!0=28:Block!16=7:� RAM Transmit $�*Block!12=MyRef:Block!20=TransmitBuffer $�Block!24=�($Transmission) %2ș "Wimp_SendMessage",17,Block,OtherTaskHandle %Dragging$="" %� %&: %0� �WimpScrapTransmit %:)OtherTaskHandle=Block!4:MyRef=Block!8 %D2SaveFilename$=�$(Block+44),�$(Block+44),�0)-1) %N� � %XA� � � � �:� 9999,"An error has occurred during transmission." %bData=� SaveFilename$ %l�#Data,$(Transmission) %v �#Data %�'�("SetType "+SaveFilename$+" Text") %�TBlock!0=(44+�(SaveFilename$)):Block!0=(Block!0)+(4-((Block!0) � 4)):� Word align %�(Block!12=MyRef:Block!16=3:� DataLoad %�3Block!20=DraggedToWindow:Block!24=DraggedToIcon %�+Block!28=DraggedToX:Block!32=DraggedToY %�*Block!36=12:� Never more than 12 bytes %�$Block!40=&FFF:� Filetype of Text %�-$(Block+44)=SaveFilename$+�0:Dragging$="" %�2ș "Wimp_SendMessage",18,Block,OtherTaskHandle %�� %�: %�� �MakeDraggingSprite %�� � &1� � � ș "OS_SpriteOp",r0,r1,r2,r3:� �:� �,�$ &&Scaling=�ModeInfo("YEigFactor",-1) &� Scaling<=1 � & Name$="flags_high" &*9 ș "OS_SpriteOp",256+60,Sprites,Name$ � r0,r1,r2,r3 &46 ș "OS_SpriteOp",256+34,Sprites,"draghigh",0,0,8 &>� &H Name$="flags_low" &R9 ș "OS_SpriteOp",256+60,Sprites,Name$ � r0,r1,r2,r3 &\5 ș "OS_SpriteOp",256+34,Sprites,"draglow",0,0,8 &f� &pș "Wimp_SetColour",7 &z)�5:� (160-(16*�($Transmission)))/2,36 &�+� 23,17,7,6,8;8;0;:� Single-height text &�;� Scaling<=1 � � 23,17,7,6,8;16;0;:� Double-height text &�� $Transmission &� ș "OS_SpriteOp",r0,r1,r2,r3 &� =Name$ �
00000000 0d 00 0a 21 f4 20 3e 21 52 75 6e 49 6d 61 67 65 |...!. >!RunImage| 00000010 20 66 6f 72 20 57 69 6e 64 6f 77 20 46 6c 61 67 | for Window Flag| 00000020 73 0d 00 14 05 3a 0d 00 1e 41 56 65 72 73 69 6f |s....:...AVersio| 00000030 6e 4e 75 6d 62 65 72 24 3d 22 31 b7 30 32 20 28 |nNumber$="1.02 (| 00000040 32 32 20 4a 75 6e 65 20 31 39 39 33 29 22 3a 54 |22 June 1993)":T| 00000050 61 73 6b 6e 61 6d 65 24 3d 22 57 69 6e 64 6f 77 |askname$="Window| 00000060 a0 46 6c 61 67 73 22 0d 00 28 1b 45 78 69 74 3d |.Flags"..(.Exit=| 00000070 a3 3a 53 74 61 72 74 75 70 3d a3 3a 44 6f 6e 65 |.:Startup=.:Done| 00000080 3d a3 0d 00 32 12 44 6f 4d 6f 64 65 43 68 61 6e |=...2.DoModeChan| 00000090 67 65 3d a3 0d 00 3c 05 3a 0d 00 46 36 de 20 42 |ge=...<.:..F6. B| 000000a0 6c 6f 63 6b 20 32 35 36 2c 42 75 66 66 65 72 20 |lock 256,Buffer | 000000b0 32 35 36 2c 4d 65 6e 75 48 65 6c 70 20 31 36 2c |256,MenuHelp 16,| 000000c0 54 72 61 6e 73 6d 69 73 73 69 6f 6e 20 31 30 0d |Transmission 10.| 000000d0 00 50 2f 49 6e 64 4d 65 6e 75 4d 61 78 3d 36 34 |.P/IndMenuMax=64| 000000e0 3a de 20 49 6e 64 69 72 65 63 74 4d 65 6e 75 54 |:. IndirectMenuT| 000000f0 65 78 74 20 49 6e 64 4d 65 6e 75 4d 61 78 0d 00 |ext IndMenuMax..| 00000100 5a 37 de 20 54 65 6d 70 6c 61 74 65 73 20 32 34 |Z7. Templates 24| 00000110 38 39 2c 49 6e 66 6f 49 6e 64 20 31 38 39 2c 4c |89,InfoInd 189,L| 00000120 6f 63 49 6e 64 20 35 39 32 2c 53 70 79 49 6e 64 |ocInd 592,SpyInd| 00000130 20 31 30 38 37 0d 00 64 1c de 20 49 42 4d 65 6e | 1087..d.. IBMen| 00000140 75 20 37 36 2c 4d 61 69 6e 4d 65 6e 75 20 31 32 |u 76,MainMenu 12| 00000150 34 0d 00 6e 05 3a 0d 00 78 2a f4 20 4d 65 73 73 |4..n.:..x*. Mess| 00000160 61 67 65 73 20 75 73 65 64 20 62 79 20 74 68 65 |ages used by the| 00000170 20 4f 6d 6e 69 44 65 73 6b 20 73 75 69 74 65 3a | OmniDesk suite:| 00000180 0d 00 82 5f 55 74 69 6c 44 65 63 6c 61 72 65 3d |..._UtilDeclare=| 00000190 26 38 32 35 43 30 3a 55 74 69 6c 4f 70 65 6e 3d |&825C0:UtilOpen=| 000001a0 26 38 32 35 43 31 3a 55 74 69 6c 51 75 69 74 74 |&825C1:UtilQuitt| 000001b0 69 6e 67 3d 26 38 32 35 43 32 3a 55 74 69 6c 52 |ing=&825C2:UtilR| 000001c0 65 73 69 64 65 3d 26 38 32 35 43 33 3a 55 74 69 |eside=&825C3:Uti| 000001d0 6c 41 63 6b 4c 6f 61 64 3d 26 38 32 35 43 34 0d |lAckLoad=&825C4.| 000001e0 00 8c 2b f4 20 54 68 65 73 65 20 61 72 65 20 6f |..+. These are o| 000001f0 66 66 69 63 69 61 6c 20 41 63 6f 72 6e 20 61 6c |fficial Acorn al| 00000200 6c 6f 63 61 74 69 6f 6e 73 2e 0d 00 96 05 3a 0d |locations.....:.| 00000210 00 a0 6e ee 20 85 20 42 6c 6f 63 6b 21 30 3d 9f |..n. . Block!0=.| 00000220 3a 24 28 42 6c 6f 63 6b 2b 34 29 3d f6 24 2b 22 |:$(Block+4)=.$+"| 00000230 20 28 69 6e 74 65 72 6e 61 6c 20 65 72 72 6f 72 | (internal error| 00000240 20 63 6f 64 65 20 22 2b c3 28 9e 29 2b 22 29 22 | code "+.(.)+")"| 00000250 2b bd 30 3a c8 99 20 22 57 69 6d 70 5f 52 65 70 |+.0:.. "Wimp_Rep| 00000260 6f 72 74 45 72 72 6f 72 22 2c 42 6c 6f 63 6b 2c |ortError",Block,| 00000270 31 2c 54 61 73 6b 6e 61 6d 65 24 3a e0 0d 00 aa |1,Taskname$:....| 00000280 05 3a 0d 00 b4 3f 4f 6d 6e 69 44 65 73 6b 3d a4 |.:...?OmniDesk=.| 00000290 52 65 61 64 53 74 61 72 74 75 70 53 74 72 69 6e |ReadStartupStrin| 000002a0 67 3a f4 20 41 6c 73 6f 20 61 73 73 69 67 6e 73 |g:. Also assigns| 000002b0 20 45 78 69 74 20 61 6e 64 20 53 74 61 72 74 75 | Exit and Startu| 000002c0 70 0d 00 be 05 3a 0d 00 c8 1b 2a 53 65 74 20 57 |p....:....*Set W| 000002d0 69 6e 64 46 6c 61 67 73 24 52 49 53 43 4f 53 20 |indFlags$RISCOS | 000002e0 33 0d 00 d2 37 2a 52 4d 45 6e 73 75 72 65 20 55 |3...7*RMEnsure U| 000002f0 74 69 6c 69 74 79 4d 6f 64 75 6c 65 20 33 2e 30 |tilityModule 3.0| 00000300 30 20 53 65 74 20 57 69 6e 64 46 6c 61 67 73 24 |0 Set WindFlags$| 00000310 52 49 53 43 4f 53 20 32 0d 00 dc 5a c8 99 20 22 |RISCOS 2...Z.. "| 00000320 58 4f 53 5f 52 65 61 64 56 61 72 56 61 6c 22 2c |XOS_ReadVarVal",| 00000330 22 57 69 6e 64 46 6c 61 67 73 24 52 49 53 43 4f |"WindFlags$RISCO| 00000340 53 22 2c 42 6c 6f 63 6b 2c 32 35 36 2c 30 2c 30 |S",Block,256,0,0| 00000350 20 b8 20 2c 2c 6c 65 6e 3a 42 6c 6f 63 6b 3f 6c | . ,,len:Block?l| 00000360 65 6e 3d 31 33 3a 77 69 6d 70 24 3d 24 42 6c 6f |en=13:wimp$=$Blo| 00000370 63 6b 0d 00 e6 1c e7 20 77 69 6d 70 24 3c 3e 22 |ck..... wimp$<>"| 00000380 33 22 20 8c 20 77 69 6d 70 24 3d 22 32 22 0d 00 |3" . wimp$="2"..| 00000390 f0 1b 2a 55 6e 73 65 74 20 57 69 6e 64 46 6c 61 |..*Unset WindFla| 000003a0 67 73 24 52 49 53 43 4f 53 0d 00 fa 05 3a 0d 01 |gs$RISCOS....:..| 000003b0 04 21 2a 53 65 74 20 57 69 6e 64 46 6c 61 67 73 |.!*Set WindFlags| 000003c0 24 53 70 72 69 74 65 44 72 61 67 20 59 65 73 0d |$SpriteDrag Yes.| 000003d0 01 0e 3a 2a 52 4d 45 6e 73 75 72 65 20 44 72 61 |..:*RMEnsure Dra| 000003e0 67 41 53 70 72 69 74 65 20 30 2e 30 30 20 53 65 |gASprite 0.00 Se| 000003f0 74 20 57 69 6e 64 46 6c 61 67 73 24 53 70 72 69 |t WindFlags$Spri| 00000400 74 65 44 72 61 67 20 4e 6f 0d 01 18 51 c8 99 20 |teDrag No...Q.. | 00000410 22 58 4f 53 5f 52 65 61 64 56 61 72 56 61 6c 22 |"XOS_ReadVarVal"| 00000420 2c 22 57 69 6e 64 46 6c 61 67 73 24 53 70 72 69 |,"WindFlags$Spri| 00000430 74 65 44 72 61 67 22 2c 42 6c 6f 63 6b 2c 32 35 |teDrag",Block,25| 00000440 36 2c 30 2c 30 20 b8 20 2c 2c 6c 65 6e 3a 42 6c |6,0,0 . ,,len:Bl| 00000450 6f 63 6b 3f 6c 65 6e 3d 31 33 0d 01 22 32 e7 20 |ock?len=13.."2. | 00000460 24 42 6c 6f 63 6b 3d 22 59 65 73 22 20 8c 20 44 |$Block="Yes" . D| 00000470 72 61 67 41 53 70 72 69 74 65 3d b9 3a 8b 20 44 |ragASprite=.:. D| 00000480 72 61 67 41 53 70 72 69 74 65 3d a3 0d 01 2c 1f |ragASprite=...,.| 00000490 2a 55 6e 73 65 74 20 57 69 6e 64 46 6c 61 67 73 |*Unset WindFlags| 000004a0 24 53 70 72 69 74 65 44 72 61 67 0d 01 36 05 3a |$SpriteDrag..6.:| 000004b0 0d 01 40 59 c8 99 20 22 58 4f 53 5f 52 65 61 64 |..@Y.. "XOS_Read| 000004c0 56 61 72 56 61 6c 22 2c 22 4f 62 65 79 24 44 69 |VarVal","Obey$Di| 000004d0 72 22 2c 42 6c 6f 63 6b 2c 32 35 36 2c 30 2c 30 |r",Block,256,0,0| 000004e0 20 b8 20 2c 2c 6c 65 6e 3a 42 6c 6f 63 6b 3f 6c | . ,,len:Block?l| 000004f0 65 6e 3d 31 33 3a 4f 75 72 46 69 6c 65 4e 61 6d |en=13:OurFileNam| 00000500 65 24 3d 24 42 6c 6f 63 6b 0d 01 4a 38 4e 3d 2d |e$=$Block..J8N=-| 00000510 31 3a f5 3a 4e 2b 3d 31 3a fd 20 c1 4f 75 72 46 |1:.:N+=1:. .OurF| 00000520 69 6c 65 4e 61 6d 65 24 2c a9 28 4f 75 72 46 69 |ileName$,.(OurFi| 00000530 6c 65 4e 61 6d 65 24 29 2d 4e 2c 31 29 3d 22 2e |leName$)-N,1)=".| 00000540 22 0d 01 54 4f 4f 75 72 50 61 74 68 4e 61 6d 65 |"..TOOurPathName| 00000550 24 3d c0 4f 75 72 46 69 6c 65 4e 61 6d 65 24 2c |$=.OurFileName$,| 00000560 a9 28 4f 75 72 46 69 6c 65 4e 61 6d 65 24 29 2d |.(OurFileName$)-| 00000570 4e 29 3a 4f 75 72 46 69 6c 65 4e 61 6d 65 24 3d |N):OurFileName$=| 00000580 c2 4f 75 72 46 69 6c 65 4e 61 6d 65 24 2c 4e 29 |.OurFileName$,N)| 00000590 0d 01 5e 05 3a 0d 01 68 5e f4 20 52 65 61 64 20 |..^.:..h^. Read | 000005a0 73 69 7a 65 20 6f 66 20 73 70 72 69 74 65 20 66 |size of sprite f| 000005b0 69 6c 65 20 61 6e 64 20 6c 6f 61 64 20 69 74 2e |ile and load it.| 000005c0 20 57 65 20 6e 65 65 64 20 74 6f 20 44 49 4d 20 | We need to DIM | 000005d0 31 36 20 62 79 74 65 73 20 6d 6f 72 65 20 74 68 |16 bytes more th| 000005e0 61 6e 20 74 68 65 20 66 69 6c 65 27 73 20 73 69 |an the file's si| 000005f0 7a 65 2e 0d 01 72 3a c8 99 20 22 4f 53 5f 46 53 |ze...r:.. "OS_FS| 00000600 43 6f 6e 74 72 6f 6c 22 2c 32 38 2c 22 3c 57 69 |Control",28,"<Wi| 00000610 6e 64 46 6c 61 67 73 24 44 69 72 3e 2e 53 70 72 |ndFlags$Dir>.Spr| 00000620 69 74 65 73 22 20 b8 20 2c 2c 6c 65 6e 0d 01 7c |ites" . ,,len..|| 00000630 85 de 20 53 70 72 69 74 65 73 20 6c 65 6e 2b 31 |.. Sprites len+1| 00000640 36 3a 21 53 70 72 69 74 65 73 3d 6c 65 6e 2b 31 |6:!Sprites=len+1| 00000650 36 3a 53 70 72 69 74 65 73 21 34 3d 30 3a 53 70 |6:Sprites!4=0:Sp| 00000660 72 69 74 65 73 21 38 3d 31 36 3a 53 70 72 69 74 |rites!8=16:Sprit| 00000670 65 73 21 31 32 3d 31 36 3a c8 99 20 22 4f 53 5f |es!12=16:.. "OS_| 00000680 53 70 72 69 74 65 4f 70 22 2c 32 35 36 2b 31 30 |SpriteOp",256+10| 00000690 2c 53 70 72 69 74 65 73 2c 22 3c 57 69 6e 64 46 |,Sprites,"<WindF| 000006a0 6c 61 67 73 24 44 69 72 3e 2e 53 70 72 69 74 65 |lags$Dir>.Sprite| 000006b0 73 22 0d 01 86 05 3a 0d 01 90 11 e7 20 77 69 6d |s"....:..... wim| 000006c0 70 24 3d 22 33 22 20 8c 0d 01 9a 17 20 20 de 20 |p$="3" ..... . | 000006d0 6d 65 73 73 61 67 65 6c 69 73 74 25 20 33 36 0d |messagelist% 36.| 000006e0 01 a4 2f 20 20 6d 65 73 73 61 67 65 6c 69 73 74 |../ messagelist| 000006f0 25 21 30 3d 26 35 30 32 3a 6d 65 73 73 61 67 65 |%!0=&502:message| 00000700 6c 69 73 74 25 21 34 3d 26 34 30 30 43 31 0d 01 |list%!4=&400C1..| 00000710 ae 3a 20 20 6d 65 73 73 61 67 65 6c 69 73 74 25 |.: messagelist%| 00000720 21 38 3d 55 74 69 6c 4f 70 65 6e 3a 6d 65 73 73 |!8=UtilOpen:mess| 00000730 61 67 65 6c 69 73 74 25 21 31 32 3d 55 74 69 6c |agelist%!12=Util| 00000740 51 75 69 74 74 69 6e 67 0d 01 b8 33 20 20 6d 65 |Quitting...3 me| 00000750 73 73 61 67 65 6c 69 73 74 25 21 31 36 3d 55 74 |ssagelist%!16=Ut| 00000760 69 6c 52 65 73 69 64 65 3a 6d 65 73 73 61 67 65 |ilReside:message| 00000770 6c 69 73 74 25 21 32 30 3d 31 30 0d 01 c2 3b 20 |list%!20=10...; | 00000780 20 6d 65 73 73 61 67 65 6c 69 73 74 25 21 32 34 | messagelist%!24| 00000790 3d 36 3a 6d 65 73 73 61 67 65 6c 69 73 74 25 21 |=6:messagelist%!| 000007a0 32 38 3d 32 3a 6d 65 73 73 61 67 65 6c 69 73 74 |28=2:messagelist| 000007b0 25 21 33 32 3d 30 0d 01 cc 4b 20 20 c8 99 20 22 |%!32=0...K .. "| 000007c0 57 69 6d 70 5f 49 6e 69 74 69 61 6c 69 73 65 22 |Wimp_Initialise"| 000007d0 2c 33 30 30 2c 26 34 42 35 33 34 31 35 34 2c 54 |,300,&4B534154,T| 000007e0 61 73 6b 6e 61 6d 65 24 2c 6d 65 73 73 61 67 65 |askname$,message| 000007f0 6c 69 73 74 25 20 b8 20 77 69 6d 70 2c 54 61 73 |list% . wimp,Tas| 00000800 6b 0d 01 d6 05 cc 0d 01 e0 3e 20 20 c8 99 20 22 |k........> .. "| 00000810 57 69 6d 70 5f 49 6e 69 74 69 61 6c 69 73 65 22 |Wimp_Initialise"| 00000820 2c 32 30 30 2c 26 34 42 35 33 34 31 35 34 2c 54 |,200,&4B534154,T| 00000830 61 73 6b 6e 61 6d 65 24 20 b8 20 77 69 6d 70 2c |askname$ . wimp,| 00000840 54 61 73 6b 0d 01 ea 05 cd 0d 01 f4 05 3a 0d 01 |Task.........:..| 00000850 fe 22 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f |.".. "Interface_| 00000860 49 6e 69 74 69 61 6c 69 73 65 22 2c 54 61 73 6b |Initialise",Task| 00000870 0d 02 08 05 3a 0d 02 12 37 c8 99 20 22 57 69 6d |....:...7.. "Wim| 00000880 70 5f 4f 70 65 6e 54 65 6d 70 6c 61 74 65 22 2c |p_OpenTemplate",| 00000890 2c 22 3c 57 69 6e 64 46 6c 61 67 73 24 44 69 72 |,"<WindFlags$Dir| 000008a0 3e 2e 54 65 6d 70 6c 61 74 65 73 22 0d 02 1c 45 |>.Templates"...E| 000008b0 c8 99 20 22 57 69 6d 70 5f 4c 6f 61 64 54 65 6d |.. "Wimp_LoadTem| 000008c0 70 6c 61 74 65 22 2c 2c 54 65 6d 70 6c 61 74 65 |plate",,Template| 000008d0 73 2c 49 6e 66 6f 49 6e 64 2c 49 6e 66 6f 49 6e |s,InfoInd,InfoIn| 000008e0 64 2b 31 38 39 2c 2d 31 2c 22 49 6e 66 6f 22 2c |d+189,-1,"Info",| 000008f0 30 0d 02 26 2c c8 99 20 22 57 69 6d 70 5f 43 72 |0..&,.. "Wimp_Cr| 00000900 65 61 74 65 57 69 6e 64 6f 77 22 2c 2c 54 65 6d |eateWindow",,Tem| 00000910 70 6c 61 74 65 73 20 b8 20 49 6e 66 6f 0d 02 30 |plates . Info..0| 00000920 5c c8 99 20 22 57 69 6d 70 5f 4c 6f 61 64 54 65 |\.. "Wimp_LoadTe| 00000930 6d 70 6c 61 74 65 22 2c 2c 54 65 6d 70 6c 61 74 |mplate",,Templat| 00000940 65 73 2c 4c 6f 63 49 6e 64 2c 4c 6f 63 49 6e 64 |es,LocInd,LocInd| 00000950 2b 35 39 32 2c 2d 31 2c 22 57 69 6e 64 6f 77 58 |+592,-1,"WindowX| 00000960 59 22 2c 30 3a 54 65 6d 70 6c 61 74 65 73 21 36 |Y",0:Templates!6| 00000970 34 3d 53 70 72 69 74 65 73 0d 02 3a 2b c8 99 20 |4=Sprites..:+.. | 00000980 22 57 69 6d 70 5f 43 72 65 61 74 65 57 69 6e 64 |"Wimp_CreateWind| 00000990 6f 77 22 2c 2c 54 65 6d 70 6c 61 74 65 73 20 b8 |ow",,Templates .| 000009a0 20 4c 6f 63 0d 02 44 5c c8 99 20 22 57 69 6d 70 | Loc..D\.. "Wimp| 000009b0 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 22 2c 2c |_LoadTemplate",,| 000009c0 54 65 6d 70 6c 61 74 65 73 2c 53 70 79 49 6e 64 |Templates,SpyInd| 000009d0 2c 53 70 79 49 6e 64 2b 31 30 38 37 2c 2d 31 2c |,SpyInd+1087,-1,| 000009e0 22 53 70 79 43 61 6c 63 22 2c 30 3a 54 65 6d 70 |"SpyCalc",0:Temp| 000009f0 6c 61 74 65 73 21 36 34 3d 53 70 72 69 74 65 73 |lates!64=Sprites| 00000a00 0d 02 4e 2f c8 99 20 22 57 69 6d 70 5f 43 72 65 |..N/.. "Wimp_Cre| 00000a10 61 74 65 57 69 6e 64 6f 77 22 2c 2c 54 65 6d 70 |ateWindow",,Temp| 00000a20 6c 61 74 65 73 20 b8 20 53 70 79 43 61 6c 63 0d |lates . SpyCalc.| 00000a30 02 58 1b c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 |.X... "Wimp_Clos| 00000a40 65 54 65 6d 70 6c 61 74 65 22 0d 02 62 05 3a 0d |eTemplate"..b.:.| 00000a50 02 6c 0f f2 42 75 69 6c 64 4d 65 6e 75 73 0d 02 |.l..BuildMenus..| 00000a60 76 05 3a 0d 02 80 15 f2 43 6c 65 61 6e 55 70 4c |v.:.....CleanUpL| 00000a70 6f 63 57 69 6e 64 6f 77 0d 02 8a 1e 52 65 61 64 |ocWindow....Read| 00000a80 45 72 72 6f 72 3d ac 28 a4 4c 6f 61 64 53 65 74 |Error=.(.LoadSet| 00000a90 74 69 6e 67 73 29 0d 02 94 1f f2 43 6c 65 61 72 |tings).....Clear| 00000aa0 53 70 79 43 61 6c 63 57 69 6e 64 6f 77 28 53 70 |SpyCalcWindow(Sp| 00000ab0 79 69 6e 67 29 0d 02 9e 05 3a 0d 02 a8 0f f2 49 |ying)....:.....I| 00000ac0 6e 69 74 69 61 6c 69 73 65 0d 02 b2 05 3a 0d 02 |nitialise....:..| 00000ad0 bc 12 e7 20 4f 6d 6e 69 44 65 73 6b 3d 30 20 8c |... OmniDesk=0 .| 00000ae0 0d 02 c6 20 20 20 f4 20 50 75 74 20 49 63 6f 6e |... . Put Icon| 00000af0 20 6f 6e 20 74 68 65 20 69 63 6f 6e 2d 62 61 72 | on the icon-bar| 00000b00 0d 02 d0 10 20 20 42 6c 6f 63 6b 21 30 3d 2d 31 |.... Block!0=-1| 00000b10 0d 02 da 31 20 20 42 6c 6f 63 6b 21 34 3d 30 3a |...1 Block!4=0:| 00000b20 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b 21 |Block!8=0:Block!| 00000b30 31 32 3d 36 38 3a 42 6c 6f 63 6b 21 31 36 3d 36 |12=68:Block!16=6| 00000b40 38 0d 02 e4 35 20 20 42 6c 6f 63 6b 21 32 30 3d |8...5 Block!20=| 00000b50 26 31 37 30 30 33 30 30 32 3a 24 28 42 6c 6f 63 |&17003002:$(Bloc| 00000b60 6b 2b 32 34 29 3d 22 21 57 69 6e 64 46 6c 61 67 |k+24)="!WindFlag| 00000b70 73 22 2b bd 31 33 0d 02 ee 2b 20 20 c8 99 20 22 |s"+.13...+ .. "| 00000b80 57 69 6d 70 5f 43 72 65 61 74 65 49 63 6f 6e 22 |Wimp_CreateIcon"| 00000b90 2c 2c 42 6c 6f 63 6b 20 b8 20 49 63 6f 6e 42 61 |,,Block . IconBa| 00000ba0 72 0d 02 f8 05 cd 0d 03 02 05 3a 0d 03 0c 26 e7 |r.........:...&.| 00000bb0 20 4f 6d 6e 69 44 65 73 6b 3c 3e 30 20 8c 20 f2 | OmniDesk<>0 . .| 00000bc0 44 65 63 6c 61 72 65 54 6f 4f 6d 6e 69 44 65 73 |DeclareToOmniDes| 00000bd0 6b 0d 03 16 52 e7 20 53 74 61 72 74 75 70 20 8c |k...R. Startup .| 00000be0 20 44 6f 6e 65 3d b9 3a f4 20 27 2d 53 74 61 72 | Done=.:. '-Star| 00000bf0 74 75 70 27 20 70 61 72 61 6d 65 74 65 72 20 6d |tup' parameter m| 00000c00 65 61 6e 73 20 27 64 65 63 6c 61 72 65 20 61 6e |eans 'declare an| 00000c10 64 20 64 69 65 20 69 6d 6d 65 64 69 61 74 65 6c |d die immediatel| 00000c20 79 27 2e 0d 03 20 05 3a 0d 03 2a 26 f2 55 70 64 |y'... .:..*&.Upd| 00000c30 61 74 65 49 63 6f 6e 28 49 6e 66 6f 2c 33 2c 56 |ateIcon(Info,3,V| 00000c40 65 72 73 69 6f 6e 4e 75 6d 62 65 72 24 29 0d 03 |ersionNumber$)..| 00000c50 34 36 f2 4d 6f 64 65 43 68 61 6e 67 65 3a f4 20 |46.ModeChange:. | 00000c60 54 6f 20 75 70 64 61 74 65 20 69 63 6f 6e 2d 62 |To update icon-b| 00000c70 61 72 20 69 63 6f 6e 20 69 66 20 6e 65 63 65 73 |ar icon if neces| 00000c80 73 61 72 79 0d 03 3e 05 3a 0d 03 48 0e ee 20 85 |sary..>.:..H.. .| 00000c90 20 f2 45 72 72 6f 72 0d 03 52 94 e7 20 52 65 61 | .Error..R.. Rea| 00000ca0 64 45 72 72 6f 72 20 8c 20 52 65 61 64 45 72 72 |dError . ReadErr| 00000cb0 6f 72 3d a3 3a f2 44 65 66 61 75 6c 74 53 65 74 |or=.:.DefaultSet| 00000cc0 74 69 6e 67 73 3a 85 20 39 39 39 39 2c 22 41 6e |tings:. 9999,"An| 00000cd0 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20 | error occurred | 00000ce0 77 68 69 6c 73 74 20 72 65 61 64 69 6e 67 20 74 |whilst reading t| 00000cf0 68 65 20 73 65 74 74 69 6e 67 73 20 66 69 6c 65 |he settings file| 00000d00 2e 20 44 65 66 61 75 6c 74 20 73 65 74 74 69 6e |. Default settin| 00000d10 67 73 20 77 69 6c 6c 20 74 68 65 72 65 66 6f 72 |gs will therefor| 00000d20 65 20 62 65 20 75 73 65 64 2e 22 0d 03 5c 05 3a |e be used."..\.:| 00000d30 0d 03 66 29 c8 99 20 22 4f 53 5f 52 65 61 64 4d |..f).. "OS_ReadM| 00000d40 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 b8 20 |onotonicTime" . | 00000d50 70 6f 6c 6c 74 69 6d 65 25 0d 03 70 0c 4f 6c 64 |polltime%..p.Old| 00000d60 57 69 6e 3d 30 0d 03 7a 05 3a 0d 03 84 17 f4 20 |Win=0..z.:..... | 00000d70 4d 61 69 6e 20 70 72 6f 67 72 61 6d 20 6c 6f 6f |Main program loo| 00000d80 70 0d 03 8e 05 f5 0d 03 98 36 20 20 c8 99 20 22 |p........6 .. "| 00000d90 57 69 6d 70 5f 50 6f 6c 6c 49 64 6c 65 22 2c 25 |Wimp_PollIdle",%| 00000da0 31 31 30 30 30 30 30 31 31 30 30 30 30 2c 42 6c |1100000110000,Bl| 00000db0 6f 63 6b 20 b8 20 52 65 61 73 6f 6e 0d 03 a2 26 |ock . Reason...&| 00000dc0 20 20 c8 99 20 22 49 6e 74 65 72 66 61 63 65 5f | .. "Interface_| 00000dd0 50 6f 6c 6c 22 2c 52 65 61 73 6f 6e 2c 2c 54 61 |Poll",Reason,,Ta| 00000de0 73 6b 0d 03 ac 34 20 20 c8 99 20 22 49 6e 74 65 |sk...4 .. "Inte| 00000df0 72 66 61 63 65 5f 50 72 65 50 72 6f 63 65 73 73 |rface_PreProcess| 00000e00 4b 65 79 22 2c 52 65 61 73 6f 6e 2c 42 6c 6f 63 |Key",Reason,Bloc| 00000e10 6b 2c 54 61 73 6b 0d 03 b6 11 20 20 c8 8e 20 52 |k,Task.... .. R| 00000e20 65 61 73 6f 6e 20 ca 0d 03 c0 33 20 20 20 20 c9 |eason ....3 .| 00000e30 20 30 20 3a 20 c8 99 20 22 4f 53 5f 52 65 61 64 | 0 : .. "OS_Read| 00000e40 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 22 20 b8 |MonotonicTime" .| 00000e50 20 70 6f 6c 6c 74 69 6d 65 25 0d 03 ca 34 20 20 | polltime%...4 | 00000e60 20 20 20 20 20 20 20 20 20 20 20 e7 20 53 70 79 | . Spy| 00000e70 69 6e 67 20 80 20 28 a4 4f 70 65 6e 53 74 61 74 |ing . (.OpenStat| 00000e80 65 28 53 70 79 43 61 6c 63 29 29 20 20 8c 0d 03 |e(SpyCalc)) ...| 00000e90 d4 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.6 | 00000ea0 20 4f 6c 64 57 69 6e 3d a4 44 6f 53 70 79 28 4f | OldWin=.DoSpy(O| 00000eb0 6c 64 57 69 6e 29 3a 70 6f 6c 6c 74 69 6d 65 25 |ldWin):polltime%| 00000ec0 2b 3d 31 30 0d 03 de 12 20 20 20 20 20 20 20 20 |+=10.... | 00000ed0 20 20 20 20 20 cc 0d 03 e8 4e 20 20 20 20 20 20 | ....N | 00000ee0 20 20 20 20 20 20 20 20 20 70 6f 6c 6c 74 69 6d | polltim| 00000ef0 65 25 2b 3d 31 30 30 3a f4 20 44 6f 20 61 20 57 |e%+=100:. Do a W| 00000f00 69 6d 70 5f 50 6f 6c 6c 20 61 70 70 72 6f 78 69 |imp_Poll approxi| 00000f10 6d 61 74 65 6c 79 20 6f 6e 63 65 20 61 20 73 65 |mately once a se| 00000f20 63 6f 6e 64 0d 03 f2 12 20 20 20 20 20 20 20 20 |cond.... | 00000f30 20 20 20 20 20 cd 0d 03 fc 5e 20 20 20 20 20 20 | ....^ | 00000f40 20 20 20 20 20 20 20 e7 20 44 6f 4d 6f 64 65 43 | . DoModeC| 00000f50 68 61 6e 67 65 20 8c 20 e7 20 a4 4f 70 65 6e 53 |hange . . .OpenS| 00000f60 74 61 74 65 28 53 70 79 43 61 6c 63 29 20 8c 20 |tate(SpyCalc) . | 00000f70 f2 4f 70 65 6e 28 53 70 79 43 61 6c 63 2c a3 2c |.Open(SpyCalc,.,| 00000f80 58 50 6f 73 69 74 69 6f 6e 2c 59 50 6f 73 69 74 |XPosition,YPosit| 00000f90 69 6f 6e 29 0d 04 06 15 20 20 20 20 c9 20 31 20 |ion).... . 1 | 00000fa0 3a 20 f2 52 65 64 72 61 77 0d 04 10 29 20 20 20 |: .Redraw...) | 00000fb0 20 c9 20 32 20 3a 20 c8 99 20 22 57 69 6d 70 5f | . 2 : .. "Wimp_| 00000fc0 4f 70 65 6e 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f |OpenWindow",,Blo| 00000fd0 63 6b 0d 04 1a 2a 20 20 20 20 c9 20 33 20 3a 20 |ck...* . 3 : | 00000fe0 c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 |.. "Wimp_CloseWi| 00000ff0 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 0d 04 24 20 |ndow",,Block..$ | 00001000 20 20 20 20 20 20 20 20 20 20 20 20 20 e7 20 45 | . E| 00001010 78 69 74 20 8c 20 44 6f 6e 65 3d b9 0d 04 2e 1a |xit . Done=.....| 00001020 20 20 20 20 c9 20 36 20 3a 20 f2 4d 6f 75 73 65 | . 6 : .Mouse| 00001030 42 75 74 74 6f 6e 0d 04 38 1b 20 20 20 20 c9 20 |Button..8. . | 00001040 37 20 3a 20 f2 44 72 61 67 46 69 6e 69 73 68 65 |7 : .DragFinishe| 00001050 64 0d 04 42 19 20 20 20 20 c9 20 38 20 3a 20 f2 |d..B. . 8 : .| 00001060 4b 65 79 50 72 65 73 73 65 64 0d 04 4c 19 20 20 |KeyPressed..L. | 00001070 20 20 c9 20 39 20 3a 20 f2 44 65 63 6f 64 65 4d | . 9 : .DecodeM| 00001080 65 6e 75 0d 04 56 24 20 20 20 20 c9 20 31 37 2c |enu..V$ . 17,| 00001090 31 38 2c 31 39 20 3a 20 f2 52 65 63 69 65 76 65 |18,19 : .Recieve| 000010a0 4d 65 73 73 61 67 65 0d 04 60 07 20 20 cb 0d 04 |Message..`. ...| 000010b0 6a 0a fd 20 44 6f 6e 65 0d 04 74 0f f2 53 61 79 |j.. Done..t..Say| 000010c0 47 6f 6f 64 62 79 65 0d 04 7e 05 e0 0d 04 88 05 |Goodbye..~......| 000010d0 3a 0d 04 92 0c dd 20 f2 45 72 72 6f 72 0d 04 9c |:..... .Error...| 000010e0 1c 43 6c 69 63 6b 3d 30 3a 42 6c 6f 63 6b 21 30 |.Click=0:Block!0| 000010f0 3d 9f 3a c8 8e 20 9f 20 ca 0d 04 a6 1b 20 20 c9 |=.:.. . ..... .| 00001100 20 39 39 39 39 3a f4 20 43 75 73 74 6f 6d 20 65 | 9999:. Custom e| 00001110 72 72 6f 72 0d 04 b0 18 20 20 20 20 24 28 42 6c |rror.... $(Bl| 00001120 6f 63 6b 2b 34 29 3d f6 24 2b bd 30 0d 04 ba 3f |ock+4)=.$+.0...?| 00001130 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 52 65 70 | .. "Wimp_Rep| 00001140 6f 72 74 45 72 72 6f 72 22 2c 42 6c 6f 63 6b 2c |ortError",Block,| 00001150 31 37 2c 22 4e 6f 74 69 63 65 20 66 72 6f 6d 20 |17,"Notice from | 00001160 22 2b 54 61 73 6b 6e 61 6d 65 24 0d 04 c4 07 20 |"+Taskname$.... | 00001170 20 7f 0d 04 ce 76 20 20 20 20 24 28 42 6c 6f 63 | ....v $(Bloc| 00001180 6b 2b 34 29 3d f6 24 2b 22 20 28 69 6e 74 65 72 |k+4)=.$+" (inter| 00001190 6e 61 6c 20 65 72 72 6f 72 20 63 6f 64 65 20 22 |nal error code "| 000011a0 2b c3 9e 2b 22 29 2e 20 43 6c 69 63 6b 20 6f 6e |+..+"). Click on| 000011b0 20 4f 4b 20 74 6f 20 63 6f 6e 74 69 6e 75 65 2c | OK to continue,| 000011c0 20 6f 72 20 43 61 6e 63 65 6c 20 74 6f 20 74 65 | or Cancel to te| 000011d0 72 6d 69 6e 61 74 65 20 74 68 65 20 70 72 6f 67 |rminate the prog| 000011e0 72 61 6d 2e 22 2b bd 30 0d 04 d8 38 20 20 20 20 |ram."+.0...8 | 000011f0 c8 99 20 22 57 69 6d 70 5f 52 65 70 6f 72 74 45 |.. "Wimp_ReportE| 00001200 72 72 6f 72 22 2c 42 6c 6f 63 6b 2c 33 2c 54 61 |rror",Block,3,Ta| 00001210 73 6b 6e 61 6d 65 24 20 b8 20 2c 43 6c 69 63 6b |skname$ . ,Click| 00001220 0d 04 e2 05 cb 0d 04 ec 1d e7 20 43 6c 69 63 6b |.......... Click| 00001230 3d 32 20 8c 20 f2 53 61 79 47 6f 6f 64 62 79 65 |=2 . .SayGoodbye| 00001240 3a e0 0d 04 f6 05 e1 0d 05 00 05 3a 0d 05 0a 2e |:..........:....| 00001250 dd 20 f2 4f 70 65 6e 28 57 69 6e 64 6f 77 48 61 |. .Open(WindowHa| 00001260 6e 64 6c 65 2c 54 6f 70 4f 66 53 74 61 63 6b 2c |ndle,TopOfStack,| 00001270 61 63 72 6f 73 73 2c 75 70 29 0d 05 14 18 42 6c |across,up)....Bl| 00001280 6f 63 6b 21 30 3d 57 69 6e 64 6f 77 48 61 6e 64 |ock!0=WindowHand| 00001290 6c 65 0d 05 1e 23 c8 99 20 22 57 69 6d 70 5f 47 |le...#.. "Wimp_G| 000012a0 65 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c |etWindowState",,| 000012b0 42 6c 6f 63 6b 0d 05 28 4a e7 20 28 61 63 72 6f |Block..(J. (acro| 000012c0 73 73 3c 3e 2d 31 29 20 80 20 28 61 63 72 6f 73 |ss<>-1) . (acros| 000012d0 73 3c 3e 2d 31 29 20 8c 20 f2 44 65 63 69 64 65 |s<>-1) . .Decide| 000012e0 57 69 6e 64 6f 77 50 6f 73 69 74 69 6f 6e 28 42 |WindowPosition(B| 000012f0 6c 6f 63 6b 2c 61 63 72 6f 73 73 2c 75 70 29 0d |lock,across,up).| 00001300 05 32 1e e7 20 54 6f 70 4f 66 53 74 61 63 6b 20 |.2.. TopOfStack | 00001310 8c 20 42 6c 6f 63 6b 21 32 38 3d 2d 31 0d 05 3c |. Block!28=-1..<| 00001320 1f c8 99 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 |... "Wimp_OpenWi| 00001330 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 0d 05 46 05 |ndow",,Block..F.| 00001340 e1 0d 05 50 05 3a 0d 05 5a 1a dd 20 f2 43 6c 6f |...P.:..Z.. .Clo| 00001350 73 65 28 57 69 6e 64 6f 77 48 61 6e 64 6c 65 29 |se(WindowHandle)| 00001360 0d 05 64 18 42 6c 6f 63 6b 21 30 3d 57 69 6e 64 |..d.Block!0=Wind| 00001370 6f 77 48 61 6e 64 6c 65 0d 05 6e 23 c8 99 20 22 |owHandle..n#.. "| 00001380 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 74 |Wimp_GetWindowSt| 00001390 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 05 78 20 c8 |ate",,Block..x .| 000013a0 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 69 6e |. "Wimp_CloseWin| 000013b0 64 6f 77 22 2c 2c 42 6c 6f 63 6b 0d 05 82 05 e1 |dow",,Block.....| 000013c0 0d 05 8c 05 3a 0d 05 96 2c dd 20 f2 44 65 63 69 |....:...,. .Deci| 000013d0 64 65 57 69 6e 64 6f 77 50 6f 73 69 74 69 6f 6e |deWindowPosition| 000013e0 28 42 6c 6f 63 6b 2c 61 63 72 6f 73 73 2c 75 70 |(Block,across,up| 000013f0 29 0d 05 a0 4c f4 20 55 73 65 20 6f 66 20 74 68 |)...L. Use of th| 00001400 69 73 20 70 72 6f 63 65 64 75 72 65 20 6c 65 74 |is procedure let| 00001410 73 20 79 6f 75 20 6f 70 65 6e 20 77 69 6e 64 6f |s you open windo| 00001420 77 73 20 6f 6e 20 61 6e 20 69 6e 76 69 73 69 62 |ws on an invisib| 00001430 6c 65 20 67 72 69 64 20 77 68 69 63 68 0d 05 aa |le grid which...| 00001440 49 f4 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 |I. automatically| 00001450 20 66 69 74 73 20 69 74 73 65 6c 66 20 74 6f 20 | fits itself to | 00001460 74 68 65 20 73 63 72 65 65 6e 20 6d 6f 64 65 20 |the screen mode | 00001470 69 6e 20 75 73 65 2e 20 54 68 65 72 65 20 61 72 |in use. There ar| 00001480 65 20 66 69 76 65 0d 05 b4 4a f4 20 70 6f 73 69 |e five...J. posi| 00001490 74 69 6f 6e 73 20 61 63 72 6f 73 73 20 28 6c 65 |tions across (le| 000014a0 66 74 2c 20 6d 69 64 2d 6c 65 66 74 2c 20 63 65 |ft, mid-left, ce| 000014b0 6e 74 72 65 2c 20 6d 69 64 2d 72 69 67 68 74 2c |ntre, mid-right,| 000014c0 20 72 69 67 68 74 29 20 61 6e 64 20 66 69 76 65 | right) and five| 000014d0 0d 05 be 47 f4 20 70 6f 73 69 74 69 6f 6e 73 20 |...G. positions | 000014e0 75 70 20 28 62 6f 74 74 6f 6d 20 6f 66 20 73 63 |up (bottom of sc| 000014f0 72 65 65 6e 2c 20 61 62 6f 76 65 20 69 63 6f 6e |reen, above icon| 00001500 2d 62 61 72 2c 20 63 65 6e 74 72 65 20 6f 66 20 |-bar, centre of | 00001510 73 63 72 65 65 6e 2c 0d 05 c8 2b f4 20 63 65 6e |screen,...+. cen| 00001520 74 72 65 20 74 6f 70 20 6f 66 20 73 63 72 65 65 |tre top of scree| 00001530 6e 2c 20 74 6f 70 20 6f 66 20 73 63 72 65 65 6e |n, top of screen| 00001540 29 2e 0d 05 d2 07 20 20 3a 0d 05 dc 43 58 70 69 |)..... :...CXpi| 00001550 78 65 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 |xels=.ModeInfo("| 00001560 58 50 69 78 65 6c 73 22 2c 2d 31 29 3a 59 70 69 |XPixels",-1):Ypi| 00001570 78 65 6c 73 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 |xels=.ModeInfo("| 00001580 59 50 69 78 65 6c 73 22 2c 2d 31 29 0d 05 e6 4f |YPixels",-1)...O| 00001590 58 45 69 67 46 61 63 74 6f 72 3d a4 4d 6f 64 65 |XEigFactor=.Mode| 000015a0 49 6e 66 6f 28 22 58 45 69 67 46 61 63 74 6f 72 |Info("XEigFactor| 000015b0 22 2c 2d 31 29 3a 59 45 69 67 46 61 63 74 6f 72 |",-1):YEigFactor| 000015c0 3d a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 |=.ModeInfo("YEig| 000015d0 46 61 63 74 6f 72 22 2c 2d 31 29 0d 05 f0 07 20 |Factor",-1).... | 000015e0 20 3a 0d 05 fa 38 74 6f 70 3d 42 6c 6f 63 6b 21 | :...8top=Block!| 000015f0 31 36 3a 72 69 67 68 74 3d 42 6c 6f 63 6b 21 31 |16:right=Block!1| 00001600 32 3a 62 6f 74 3d 42 6c 6f 63 6b 21 38 3a 6c 65 |2:bot=Block!8:le| 00001610 66 74 3d 42 6c 6f 63 6b 21 34 0d 06 04 41 c8 99 |ft=Block!4...A..| 00001620 20 22 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f | "Wimp_OpenWindo| 00001630 77 22 2c 2c 42 6c 6f 63 6b 3a c8 99 20 22 57 69 |w",,Block:.. "Wi| 00001640 6d 70 5f 47 65 74 57 69 6e 64 6f 77 4f 75 74 6c |mp_GetWindowOutl| 00001650 69 6e 65 22 2c 2c 42 6c 6f 63 6b 0d 06 0e 26 54 |ine",,Block...&T| 00001660 42 3d 28 28 42 6c 6f 63 6b 21 31 36 29 2d 74 6f |B=((Block!16)-to| 00001670 70 29 2f 28 32 5e 59 45 69 67 46 61 63 74 6f 72 |p)/(2^YEigFactor| 00001680 29 0d 06 18 28 56 53 3d 28 28 42 6c 6f 63 6b 21 |)...(VS=((Block!| 00001690 31 32 29 2d 72 69 67 68 74 29 2f 28 32 5e 58 45 |12)-right)/(2^XE| 000016a0 69 67 46 61 63 74 6f 72 29 0d 06 22 25 48 53 3d |igFactor).."%HS=| 000016b0 28 62 6f 74 2d 28 42 6c 6f 63 6b 21 38 29 29 2f |(bot-(Block!8))/| 000016c0 28 32 5e 59 45 69 67 46 61 63 74 6f 72 29 0d 06 |(2^YEigFactor)..| 000016d0 2c 26 4c 50 3d 28 6c 65 66 74 2d 28 42 6c 6f 63 |,&LP=(left-(Bloc| 000016e0 6b 21 34 29 29 2f 28 32 5e 58 45 69 67 46 61 63 |k!4))/(2^XEigFac| 000016f0 74 6f 72 29 0d 06 36 4b f4 20 4c 50 20 69 73 20 |tor)..6K. LP is | 00001700 4c 65 66 74 20 50 69 78 65 6c 3a 20 6e 6f 72 6d |Left Pixel: norm| 00001710 61 6c 6c 79 20 70 72 65 73 65 6e 74 2c 20 62 75 |ally present, bu| 00001720 74 20 6e 6f 74 20 69 66 20 77 69 6e 64 6f 77 20 |t not if window | 00001730 69 73 20 74 72 61 6e 73 70 61 72 65 6e 74 2e 0d |is transparent..| 00001740 06 40 25 77 69 64 74 68 3d 28 72 69 67 68 74 2d |.@%width=(right-| 00001750 6c 65 66 74 29 2f 28 32 5e 58 45 69 67 46 61 63 |left)/(2^XEigFac| 00001760 74 6f 72 29 0d 06 4a 23 68 65 69 67 68 74 3d 28 |tor)..J#height=(| 00001770 74 6f 70 2d 62 6f 74 29 2f 28 32 5e 59 45 69 67 |top-bot)/(2^YEig| 00001780 46 61 63 74 6f 72 29 0d 06 54 0f c8 8e 20 61 63 |Factor)..T... ac| 00001790 72 6f 73 73 20 ca 0d 06 5e 0e 20 20 c9 20 30 3a |ross ...^. . 0:| 000017a0 78 3d 4c 50 0d 06 68 2c 20 20 c9 20 31 3a 78 3d |x=LP..h, . 1:x=| 000017b0 4c 50 2b 28 28 58 70 69 78 65 6c 73 2b 31 29 2d |LP+((Xpixels+1)-| 000017c0 28 77 69 64 74 68 2b 4c 50 2b 56 53 29 29 2f 34 |(width+LP+VS))/4| 000017d0 0d 06 72 2c 20 20 c9 20 32 3a 78 3d 4c 50 2b 28 |..r, . 2:x=LP+(| 000017e0 28 58 70 69 78 65 6c 73 2b 31 29 2d 28 77 69 64 |(Xpixels+1)-(wid| 000017f0 74 68 2b 4c 50 2b 56 53 29 29 2f 32 0d 06 7c 32 |th+LP+VS))/2..|2| 00001800 20 20 c9 20 33 3a 78 3d 4c 50 2b 28 33 2a 28 28 | . 3:x=LP+(3*((| 00001810 28 58 70 69 78 65 6c 73 2b 31 29 2d 28 77 69 64 |(Xpixels+1)-(wid| 00001820 74 68 2b 4c 50 2b 56 53 29 29 2f 34 29 29 0d 06 |th+LP+VS))/4))..| 00001830 86 22 20 20 c9 20 34 3a 78 3d 28 58 70 69 78 65 |." . 4:x=(Xpixe| 00001840 6c 73 2b 31 29 2d 28 77 69 64 74 68 2b 56 53 29 |ls+1)-(width+VS)| 00001850 0d 06 90 05 cb 0d 06 9a 0b c8 8e 20 75 70 20 ca |........... up .| 00001860 0d 06 a4 0e 20 20 c9 20 30 3a 79 3d 48 53 0d 06 |.... . 0:y=HS..| 00001870 ae 23 20 20 c9 20 31 3a 79 3d 48 53 2b 28 31 33 |.# . 1:y=HS+(13| 00001880 32 2f 28 32 5e 59 45 69 67 46 61 63 74 6f 72 29 |2/(2^YEigFactor)| 00001890 29 0d 06 b8 2d 20 20 c9 20 32 3a 79 3d 48 53 2b |)...- . 2:y=HS+| 000018a0 28 28 59 70 69 78 65 6c 73 2b 31 29 2d 28 68 65 |((Ypixels+1)-(he| 000018b0 69 67 68 74 2b 54 42 2b 48 53 29 29 2f 32 0d 06 |ight+TB+HS))/2..| 000018c0 c2 33 20 20 c9 20 33 3a 79 3d 48 53 2b 28 33 2a |.3 . 3:y=HS+(3*| 000018d0 28 28 28 59 70 69 78 65 6c 73 2b 31 29 2d 28 68 |(((Ypixels+1)-(h| 000018e0 65 69 67 68 74 2b 54 42 2b 48 53 29 29 2f 34 29 |eight+TB+HS))/4)| 000018f0 29 0d 06 cc 23 20 20 c9 20 34 3a 79 3d 28 59 70 |)...# . 4:y=(Yp| 00001900 69 78 65 6c 73 2b 31 29 2d 28 68 65 69 67 68 74 |ixels+1)-(height| 00001910 2b 54 42 29 0d 06 d6 05 cb 0d 06 e0 28 f4 20 41 |+TB)........(. A| 00001920 62 6f 76 65 20 63 6f 6f 72 64 69 6e 61 74 65 73 |bove coordinates| 00001930 20 70 6f 73 69 74 69 6f 6e 20 77 69 6e 64 6f 77 | position window| 00001940 2e 0d 06 ea 28 f4 20 4e 6f 77 20 63 6f 6e 76 65 |....(. Now conve| 00001950 72 74 20 74 6f 20 73 63 72 65 65 6e 20 63 6f 6f |rt to screen coo| 00001960 72 64 69 6e 61 74 65 73 3a 0d 06 f4 29 78 3d 78 |rdinates:...)x=x| 00001970 2a 28 32 5e 58 45 69 67 46 61 63 74 6f 72 29 3a |*(2^XEigFactor):| 00001980 79 3d 79 2a 28 32 5e 59 45 69 67 46 61 63 74 6f |y=y*(2^YEigFacto| 00001990 72 29 0d 06 fe 3b 77 69 64 74 68 3d 77 69 64 74 |r)...;width=widt| 000019a0 68 2a 28 32 5e 58 45 69 67 46 61 63 74 6f 72 29 |h*(2^XEigFactor)| 000019b0 3a 68 65 69 67 68 74 3d 68 65 69 67 68 74 2a 28 |:height=height*(| 000019c0 32 5e 59 45 69 67 46 61 63 74 6f 72 29 0d 07 08 |2^YEigFactor)...| 000019d0 1e 42 6c 6f 63 6b 21 31 32 3d 78 2b 77 69 64 74 |.Block!12=x+widt| 000019e0 68 3a 42 6c 6f 63 6b 21 34 3d 78 0d 07 12 1f 42 |h:Block!4=x....B| 000019f0 6c 6f 63 6b 21 31 36 3d 79 2b 68 65 69 67 68 74 |lock!16=y+height| 00001a00 3a 42 6c 6f 63 6b 21 38 3d 79 0d 07 1c 05 e1 0d |:Block!8=y......| 00001a10 07 26 05 3a 0d 07 30 4f f4 20 2d 2d 2d 2d 2d 2d |.&.:..0O. ------| 00001a20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001a60 2d 2d 2d 0d 07 3a 18 f4 20 57 69 6d 70 20 70 6f |---..:.. Wimp po| 00001a70 6c 6c 20 72 6f 75 74 69 6e 65 73 0d 07 44 4f f4 |ll routines..DO.| 00001a80 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 00001a90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001ac0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 07 4e 05 3a 0d |----------..N.:.| 00001ad0 07 58 0d dd 20 f2 52 65 64 72 61 77 0d 07 62 14 |.X.. .Redraw..b.| 00001ae0 e7 20 44 6f 4d 6f 64 65 43 68 61 6e 67 65 20 8c |. DoModeChange .| 00001af0 0d 07 6c 64 20 20 f4 20 52 65 2d 6f 70 65 6e 69 |..ld . Re-openi| 00001b00 6e 67 20 77 69 6e 64 6f 77 73 20 6e 65 65 64 20 |ng windows need | 00001b10 61 6e 20 65 78 74 72 61 20 77 69 6d 70 5f 70 6f |an extra wimp_po| 00001b20 6c 6c 20 74 6f 20 68 61 70 70 65 6e 20 61 66 74 |ll to happen aft| 00001b30 65 72 20 74 68 65 20 6d 6f 64 65 20 63 68 61 6e |er the mode chan| 00001b40 67 65 20 69 6e 20 6f 72 64 65 72 20 74 6f 20 77 |ge in order to w| 00001b50 6f 72 6b 3a 0d 07 76 42 20 20 e7 20 a4 4f 70 65 |ork:..vB . .Ope| 00001b60 6e 53 74 61 74 65 28 53 70 79 43 61 6c 63 29 20 |nState(SpyCalc) | 00001b70 8c 20 f2 4f 70 65 6e 28 53 70 79 43 61 6c 63 2c |. .Open(SpyCalc,| 00001b80 a3 2c 58 50 6f 73 69 74 69 6f 6e 2c 59 50 6f 73 |.,XPosition,YPos| 00001b90 69 74 69 6f 6e 29 0d 07 80 14 20 20 44 6f 4d 6f |ition).... DoMo| 00001ba0 64 65 43 68 61 6e 67 65 3d a3 0d 07 8a 05 cd 0d |deChange=.......| 00001bb0 07 94 28 c8 99 20 22 57 69 6d 70 5f 52 65 64 72 |..(.. "Wimp_Redr| 00001bc0 61 77 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b |awWindow",,Block| 00001bd0 20 b8 20 66 6c 61 67 0d 07 9e 0b c8 95 20 66 6c | . flag...... fl| 00001be0 61 67 0d 07 a8 2a 20 20 c8 99 20 22 49 6e 74 65 |ag...* .. "Inte| 00001bf0 72 66 61 63 65 5f 52 65 6e 64 65 72 33 64 57 69 |rface_Render3dWi| 00001c00 6e 64 6f 77 22 2c 2c 42 6c 6f 63 6b 0d 07 b2 2a |ndow",,Block...*| 00001c10 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 52 65 | .. "Wimp_GetRe| 00001c20 63 74 61 6e 67 6c 65 22 2c 2c 42 6c 6f 63 6b 20 |ctangle",,Block | 00001c30 b8 20 66 6c 61 67 0d 07 bc 05 ce 0d 07 c6 05 e1 |. flag..........| 00001c40 0d 07 d0 05 3a 0d 07 da 15 dd 20 f2 52 65 63 69 |....:..... .Reci| 00001c50 65 76 65 4d 65 73 73 61 67 65 0d 07 e4 11 c8 8e |eveMessage......| 00001c60 20 42 6c 6f 63 6b 21 31 36 20 ca 0d 07 ee 12 20 | Block!16 ..... | 00001c70 20 c9 20 30 20 3a 20 44 6f 6e 65 3d b9 0d 07 f8 | . 0 : Done=....| 00001c80 19 20 20 c9 20 32 20 3a 20 f4 20 44 61 74 61 53 |. . 2 : . DataS| 00001c90 61 76 65 41 63 6b 0d 08 02 4d 20 20 20 20 20 20 |aveAck...M | 00001ca0 20 20 20 20 20 f4 20 4f 74 68 65 72 20 74 61 73 | . Other tas| 00001cb0 6b 20 77 61 6e 74 73 20 61 20 74 72 61 6e 73 66 |k wants a transf| 00001cc0 65 72 20 76 69 61 20 3c 57 69 6d 70 24 53 63 72 |er via <Wimp$Scr| 00001cd0 61 70 3e 20 72 61 74 68 65 72 20 74 68 61 6e 20 |ap> rather than | 00001ce0 52 41 4d 0d 08 0c 21 20 20 20 20 20 20 20 20 20 |RAM...! | 00001cf0 20 20 f2 57 69 6d 70 53 63 72 61 70 54 72 61 6e | .WimpScrapTran| 00001d00 73 6d 69 74 0d 08 16 17 20 20 c9 20 36 20 3a 20 |smit.... . 6 : | 00001d10 f4 20 52 41 4d 20 46 65 74 63 68 0d 08 20 2e 20 |. RAM Fetch.. . | 00001d20 20 20 20 20 20 20 20 20 20 20 f4 20 4f 74 68 65 | . Othe| 00001d30 72 20 74 61 73 6b 20 69 73 20 61 73 6b 69 6e 67 |r task is asking| 00001d40 20 66 6f 72 20 64 61 74 61 0d 08 2a 1b 20 20 20 | for data..*. | 00001d50 20 20 20 20 20 20 20 20 f2 52 41 4d 54 72 61 6e | .RAMTran| 00001d60 73 6d 69 74 0d 08 34 31 20 20 c9 20 31 30 3a 20 |smit..41 . 10: | 00001d70 e7 20 4f 6d 6e 69 44 65 73 6b 3d 30 20 8c 20 f2 |. OmniDesk=0 . .| 00001d80 53 61 76 65 44 65 73 6b 74 6f 70 28 42 6c 6f 63 |SaveDesktop(Bloc| 00001d90 6b 21 32 30 29 0d 08 3e 45 20 20 20 20 20 20 20 |k!20)..>E | 00001da0 20 20 20 20 f4 20 4f 6e 6c 79 20 73 61 76 65 20 | . Only save | 00001db0 69 66 20 77 65 20 68 61 76 65 20 6e 6f 74 20 62 |if we have not b| 00001dc0 65 65 6e 20 73 74 61 72 74 65 64 20 75 70 20 62 |een started up b| 00001dd0 79 20 4f 6d 6e 69 44 65 73 6b 0d 08 48 14 20 20 |y OmniDesk..H. | 00001de0 c9 20 26 35 30 32 20 3a 20 f2 48 65 6c 70 0d 08 |. &502 : .Help..| 00001df0 52 1c 20 20 c9 20 26 34 30 30 43 31 20 3a 20 f2 |R. . &400C1 : .| 00001e00 4d 6f 64 65 43 68 61 6e 67 65 0d 08 5c 3d 20 20 |ModeChange..\= | 00001e10 c9 20 55 74 69 6c 4f 70 65 6e 20 3a 20 e7 20 24 |. UtilOpen : . $| 00001e20 28 42 6c 6f 63 6b 2b 32 34 29 3d 54 61 73 6b 6e |(Block+24)=Taskn| 00001e30 61 6d 65 24 20 8c 20 f2 4f 6d 6e 69 44 65 73 6b |ame$ . .OmniDesk| 00001e40 43 61 6c 6c 69 6e 67 0d 08 66 26 20 20 c9 20 55 |Calling..f& . U| 00001e50 74 69 6c 51 75 69 74 74 69 6e 67 20 3a 20 e7 20 |tilQuitting : . | 00001e60 4f 6d 6e 69 44 65 73 6b 3c 3e 30 20 8c 0d 08 70 |OmniDesk<>0 ...p| 00001e70 38 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |8 | 00001e80 20 20 20 20 20 20 20 20 20 e7 20 42 6c 6f 63 6b | . Block| 00001e90 21 32 30 3d 4f 6d 6e 69 44 65 73 6b 20 8c 20 44 |!20=OmniDesk . D| 00001ea0 6f 6e 65 3d b9 0d 08 7a 1b 20 20 20 20 20 20 20 |one=...z. | 00001eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 cd | .| 00001ec0 0d 08 84 1b 20 20 c9 20 55 74 69 6c 52 65 73 69 |.... . UtilResi| 00001ed0 64 65 20 3a 20 45 78 69 74 3d a3 0d 08 8e 05 cb |de : Exit=......| 00001ee0 0d 08 98 05 e1 0d 08 a2 05 3a 0d 08 ac 16 dd 20 |.........:..... | 00001ef0 f2 44 65 6c 65 74 65 57 69 6d 70 53 63 72 61 70 |.DeleteWimpScrap| 00001f00 0d 08 b6 07 ea 20 85 0d 08 c0 0f ee 20 85 20 ea |..... ...... . .| 00001f10 20 f7 20 85 3a e1 0d 08 ca 3c f4 20 57 65 20 6d | . .:....<. We m| 00001f20 61 79 20 72 65 63 65 69 76 65 20 74 72 79 20 74 |ay receive try t| 00001f30 6f 20 64 65 6c 65 74 65 20 61 20 6e 6f 6e 2d 65 |o delete a non-e| 00001f40 78 69 73 74 61 6e 74 20 57 69 6d 70 24 53 63 72 |xistant Wimp$Scr| 00001f50 61 70 0d 08 d4 40 f4 20 66 69 6c 65 20 69 66 20 |ap...@. file if | 00001f60 74 68 65 20 72 65 63 65 69 76 69 6e 67 20 74 61 |the receiving ta| 00001f70 73 6b 20 64 69 64 20 6e 6f 74 20 72 65 63 6f 67 |sk did not recog| 00001f80 6e 69 73 65 20 74 68 65 20 66 69 6c 65 74 79 70 |nise the filetyp| 00001f90 65 2e 0d 08 de 1c ff 28 22 44 65 6c 65 74 65 20 |e......("Delete | 00001fa0 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 29 0d 08 |<Wimp$Scrap>")..| 00001fb0 e8 05 e1 0d 08 f2 05 3a 0d 08 fc 12 dd 20 f2 4d |.......:..... .M| 00001fc0 6f 75 73 65 42 75 74 74 6f 6e 0d 09 06 31 4d 6f |ouseButton...1Mo| 00001fd0 75 73 65 58 3d 42 6c 6f 63 6b 21 30 3a 4d 6f 75 |useX=Block!0:Mou| 00001fe0 73 65 59 3d 42 6c 6f 63 6b 21 34 3a 42 75 74 74 |seY=Block!4:Butt| 00001ff0 6f 6e 73 3d 42 6c 6f 63 6b 21 38 0d 09 10 21 57 |ons=Block!8...!W| 00002000 69 6e 64 6f 77 3d 42 6c 6f 63 6b 21 31 32 3a 49 |indow=Block!12:I| 00002010 63 6f 6e 3d 42 6c 6f 63 6b 21 31 36 0d 09 1a 0f |con=Block!16....| 00002020 c8 8e 20 57 69 6e 64 6f 77 20 ca 0d 09 24 22 20 |.. Window ...$" | 00002030 20 c9 20 2d 32 3a f4 20 49 63 6f 6e 20 62 61 72 | . -2:. Icon bar| 00002040 20 69 63 6f 6e 20 63 6c 69 63 6b 65 64 0d 09 2e | icon clicked...| 00002050 14 20 20 20 20 c8 8e 20 42 75 74 74 6f 6e 73 20 |. .. Buttons | 00002060 ca 0d 09 38 18 20 20 20 20 20 20 c9 20 31 20 3a |...8. . 1 :| 00002070 20 f4 20 41 64 6a 75 73 74 0d 09 42 16 20 20 20 | . Adjust..B. | 00002080 20 20 20 c9 20 32 20 3a 20 f4 20 4d 65 6e 75 0d | . 2 : . Menu.| 00002090 09 4c 39 20 20 20 20 20 20 20 20 4d 25 3d 49 42 |.L9 M%=IB| 000020a0 4d 65 6e 75 3a 4d 65 6e 75 58 3d 4d 6f 75 73 65 |Menu:MenuX=Mouse| 000020b0 58 3a 4d 65 6e 75 59 3d 4d 6f 75 73 65 59 3a f2 |X:MenuY=MouseY:.| 000020c0 4d 61 6b 65 4d 65 6e 75 0d 09 56 18 20 20 20 20 |MakeMenu..V. | 000020d0 20 20 c9 20 34 20 3a 20 f4 20 53 65 6c 65 63 74 | . 4 : . Select| 000020e0 0d 09 60 30 20 20 20 20 20 20 20 20 f2 4f 70 65 |..`0 .Ope| 000020f0 6e 28 53 70 79 43 61 6c 63 2c b9 2c 58 50 6f 73 |n(SpyCalc,.,XPos| 00002100 69 74 69 6f 6e 2c 59 50 6f 73 69 74 69 6f 6e 29 |ition,YPosition)| 00002110 0d 09 6a 09 20 20 20 20 cb 0d 09 74 0f 20 20 c9 |..j. ...t. .| 00002120 20 53 70 79 43 61 6c 63 0d 09 7e 14 20 20 20 20 | SpyCalc..~. | 00002130 c8 8e 20 42 75 74 74 6f 6e 73 20 ca 0d 09 88 16 |.. Buttons .....| 00002140 20 20 20 20 20 20 c9 20 32 20 3a 20 f4 20 4d 65 | . 2 : . Me| 00002150 6e 75 0d 09 92 31 20 20 20 20 20 20 20 20 4d 25 |nu...1 M%| 00002160 3d 4d 61 69 6e 4d 65 6e 75 3a 4d 65 6e 75 58 3d |=MainMenu:MenuX=| 00002170 4d 6f 75 73 65 58 3a 4d 65 6e 75 59 3d 4d 6f 75 |MouseX:MenuY=Mou| 00002180 73 65 59 0d 09 9c 19 20 20 20 20 20 20 20 20 e7 |seY.... .| 00002190 20 77 69 6d 70 3e 3d 33 31 30 20 8c 0d 09 a6 60 | wimp>=310 ....`| 000021a0 20 20 20 20 20 20 20 20 20 20 e7 20 c0 24 4d 61 | . .$Ma| 000021b0 69 6e 4d 65 6e 75 54 69 74 6c 65 2c 31 29 3d 22 |inMenuTitle,1)="| 000021c0 5c 22 20 8c 20 24 4d 61 69 6e 4d 65 6e 75 54 69 |\" . $MainMenuTi| 000021d0 74 6c 65 3d c2 24 4d 61 69 6e 4d 65 6e 75 54 69 |tle=.$MainMenuTi| 000021e0 74 6c 65 2c a9 28 24 4d 61 69 6e 4d 65 6e 75 54 |tle,.($MainMenuT| 000021f0 69 74 6c 65 29 2d 31 29 2b bd 31 33 0d 09 b0 43 |itle)-1)+.13...C| 00002200 20 20 20 20 20 20 20 20 20 20 e7 20 58 50 6f 73 | . XPos| 00002210 69 74 69 6f 6e 3d 34 20 8c 20 24 4d 61 69 6e 4d |ition=4 . $MainM| 00002220 65 6e 75 54 69 74 6c 65 3d 22 5c 22 2b 24 4d 61 |enuTitle="\"+$Ma| 00002230 69 6e 4d 65 6e 75 54 69 74 6c 65 2b bd 31 33 0d |inMenuTitle+.13.| 00002240 09 ba 0d 20 20 20 20 20 20 20 20 cd 0d 09 c4 15 |... .....| 00002250 20 20 20 20 20 20 20 20 f2 4d 61 6b 65 4d 65 6e | .MakeMen| 00002260 75 0d 09 ce 21 20 20 20 20 20 20 c9 20 31 2c 34 |u...! . 1,4| 00002270 20 3a 20 f4 20 53 65 6c 65 63 74 2c 41 64 6a 75 | : . Select,Adju| 00002280 73 74 0d 09 d8 27 20 20 20 20 20 20 20 20 e7 20 |st...' . | 00002290 28 49 63 6f 6e 3e 3d 32 36 29 20 80 20 28 49 63 |(Icon>=26) . (Ic| 000022a0 6f 6e 3c 3d 34 34 29 20 8c 0d 09 e2 36 20 20 20 |on<=44) ....6 | 000022b0 20 20 20 20 20 20 20 f2 55 70 64 61 74 65 49 63 | .UpdateIc| 000022c0 6f 6e 28 53 70 79 43 61 6c 63 2c 34 36 2c 22 26 |on(SpyCalc,46,"&| 000022d0 22 2b c3 7e a4 57 69 6e 64 46 6c 61 67 73 29 0d |"+.~.WindFlags).| 000022e0 09 ec 0d 20 20 20 20 20 20 20 20 cd 0d 09 f6 0b |... .....| 000022f0 20 20 20 20 20 20 7f 0d 0a 00 3a 20 20 20 20 20 | ....: | 00002300 20 20 20 e7 20 28 42 75 74 74 6f 6e 73 3e 37 29 | . (Buttons>7)| 00002310 20 80 20 28 57 69 6e 64 6f 77 3d 53 70 79 43 61 | . (Window=SpyCa| 00002320 6c 63 29 20 80 20 28 49 63 6f 6e 3d 34 36 29 20 |lc) . (Icon=46) | 00002330 8c 0d 0a 0a 34 20 20 20 20 20 20 20 20 20 20 24 |....4 $| 00002340 54 72 61 6e 73 6d 69 73 73 69 6f 6e 3d a4 52 65 |Transmission=.Re| 00002350 61 64 49 63 6f 6e 53 74 72 28 53 70 79 43 61 6c |adIconStr(SpyCal| 00002360 63 2c 34 36 29 0d 0a 14 52 20 20 20 20 20 20 20 |c,46)...R | 00002370 20 20 20 44 72 61 67 67 69 6e 67 24 3d 22 46 6c | Dragging$="Fl| 00002380 61 67 73 22 3a f2 44 72 61 67 42 6f 78 28 53 70 |ags":.DragBox(Sp| 00002390 79 43 61 6c 63 2c 34 36 2c 35 2c 53 70 72 69 74 |yCalc,46,5,Sprit| 000023a0 65 73 2c a4 4d 61 6b 65 44 72 61 67 67 69 6e 67 |es,.MakeDragging| 000023b0 53 70 72 69 74 65 29 0d 0a 1e 0d 20 20 20 20 20 |Sprite).... | 000023c0 20 20 20 cd 0d 0a 28 09 20 20 20 20 cb 0d 0a 32 | ...(. ...2| 000023d0 30 20 20 c9 20 4c 6f 63 20 80 20 42 75 74 74 6f |0 . Loc . Butto| 000023e0 6e 73 3c 38 3a f4 20 52 65 70 6f 73 69 74 69 6f |ns<8:. Repositio| 000023f0 6e 20 6d 61 69 6e 20 77 69 6e 64 6f 77 0d 0a 3c |n main window..<| 00002400 13 20 20 20 20 e7 20 49 63 6f 6e 3e 3d 36 20 8c |. . Icon>=6 .| 00002410 0d 0a 46 2c 20 20 20 20 20 20 58 50 6f 73 69 74 |..F, XPosit| 00002420 69 6f 6e 3d a4 52 65 61 64 57 69 6e 64 6f 77 4c |ion=.ReadWindowL| 00002430 6f 63 61 74 69 6f 6e 28 22 58 22 29 0d 0a 50 2c |ocation("X")..P,| 00002440 20 20 20 20 20 20 59 50 6f 73 69 74 69 6f 6e 3d | YPosition=| 00002450 a4 52 65 61 64 57 69 6e 64 6f 77 4c 6f 63 61 74 |.ReadWindowLocat| 00002460 69 6f 6e 28 22 59 22 29 0d 0a 5a 46 20 20 20 20 |ion("Y")..ZF | 00002470 20 20 e7 20 a4 4f 70 65 6e 53 74 61 74 65 28 53 | . .OpenState(S| 00002480 70 79 43 61 6c 63 29 20 8c 20 f2 4f 70 65 6e 28 |pyCalc) . .Open(| 00002490 53 70 79 43 61 6c 63 2c a3 2c 58 50 6f 73 69 74 |SpyCalc,.,XPosit| 000024a0 69 6f 6e 2c 59 50 6f 73 69 74 69 6f 6e 29 0d 0a |ion,YPosition)..| 000024b0 64 09 20 20 20 20 cd 0d 0a 6e 05 cb 0d 0a 78 05 |d. ...n....x.| 000024c0 e1 0d 0a 82 05 3a 0d 0a 8c 13 dd 20 f2 44 72 61 |.....:..... .Dra| 000024d0 67 46 69 6e 69 73 68 65 64 0d 0a 96 29 e7 20 44 |gFinished...). D| 000024e0 72 61 67 41 53 70 72 69 74 65 20 8c 20 c8 99 20 |ragASprite . .. | 000024f0 22 44 72 61 67 41 53 70 72 69 74 65 5f 53 74 6f |"DragASprite_Sto| 00002500 70 22 0d 0a a0 23 c8 99 20 22 57 69 6d 70 5f 47 |p"...#.. "Wimp_G| 00002510 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c |etPointerInfo",,| 00002520 42 6c 6f 63 6b 0d 0a aa 2e e7 20 42 6c 6f 63 6b |Block..... Block| 00002530 21 31 32 3d 2d 31 20 8c 20 e1 3a f4 20 44 72 61 |!12=-1 . .:. Dra| 00002540 67 67 65 64 20 74 6f 20 62 61 63 6b 67 72 6f 75 |gged to backgrou| 00002550 6e 64 2e 0d 0a b4 59 44 72 61 67 67 65 64 54 6f |nd....YDraggedTo| 00002560 58 3d 42 6c 6f 63 6b 21 30 3a 44 72 61 67 67 65 |X=Block!0:Dragge| 00002570 64 54 6f 59 3d 42 6c 6f 63 6b 21 34 3a 44 72 61 |dToY=Block!4:Dra| 00002580 67 67 65 64 54 6f 57 69 6e 64 6f 77 3d 42 6c 6f |ggedToWindow=Blo| 00002590 63 6b 21 31 32 3a 44 72 61 67 67 65 64 54 6f 49 |ck!12:DraggedToI| 000025a0 63 6f 6e 3d 42 6c 6f 63 6b 21 31 36 0d 0a be 30 |con=Block!16...0| 000025b0 f4 20 4f 4b 20 2d 20 4c 65 74 27 73 20 62 65 67 |. OK - Let's beg| 000025c0 69 6e 20 61 6e 20 69 6e 74 65 72 2d 61 70 70 6c |in an inter-appl| 000025d0 69 63 61 74 69 6f 6e 20 73 61 76 65 0d 0a c8 0b |ication save....| 000025e0 4d 79 52 65 66 3d 30 0d 0a d2 34 42 6c 6f 63 6b |MyRef=0...4Block| 000025f0 21 30 3d 32 35 36 3a 42 6c 6f 63 6b 21 31 32 3d |!0=256:Block!12=| 00002600 4d 79 52 65 66 3a 42 6c 6f 63 6b 21 31 36 3d 31 |MyRef:Block!16=1| 00002610 3a f4 20 44 61 74 61 53 61 76 65 0d 0a dc 5b 42 |:. DataSave...[B| 00002620 6c 6f 63 6b 21 32 30 3d 44 72 61 67 67 65 64 54 |lock!20=DraggedT| 00002630 6f 57 69 6e 64 6f 77 3a 42 6c 6f 63 6b 21 32 34 |oWindow:Block!24| 00002640 3d 44 72 61 67 67 65 64 54 6f 49 63 6f 6e 3a 42 |=DraggedToIcon:B| 00002650 6c 6f 63 6b 21 32 38 3d 44 72 61 67 67 65 64 54 |lock!28=DraggedT| 00002660 6f 58 3a 42 6c 6f 63 6b 21 33 32 3d 44 72 61 67 |oX:Block!32=Drag| 00002670 67 65 64 54 6f 59 0d 0a e6 2a 42 6c 6f 63 6b 21 |gedToY...*Block!| 00002680 33 36 3d 31 32 3a f4 20 4e 65 76 65 72 20 6d 6f |36=12:. Never mo| 00002690 72 65 20 74 68 61 6e 20 31 32 20 62 79 74 65 73 |re than 12 bytes| 000026a0 0d 0a f0 24 42 6c 6f 63 6b 21 34 30 3d 26 46 46 |...$Block!40=&FF| 000026b0 46 3a f4 20 46 69 6c 65 74 79 70 65 20 6f 66 20 |F:. Filetype of | 000026c0 54 65 78 74 0d 0a fa 1c 24 28 42 6c 6f 63 6b 2b |Text....$(Block+| 000026d0 34 34 29 3d 44 72 61 67 67 69 6e 67 24 2b bd 30 |44)=Dragging$+.0| 000026e0 0d 0b 04 40 c8 99 20 22 57 69 6d 70 5f 53 65 6e |...@.. "Wimp_Sen| 000026f0 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 42 6c 6f |dMessage",17,Blo| 00002700 63 6b 2c 44 72 61 67 67 65 64 54 6f 57 69 6e 64 |ck,DraggedToWind| 00002710 6f 77 2c 44 72 61 67 67 65 64 54 6f 49 63 6f 6e |ow,DraggedToIcon| 00002720 0d 0b 0e 42 f4 20 44 72 61 67 67 65 64 54 6f 49 |...B. DraggedToI| 00002730 63 6f 6e 20 69 6e 63 6c 75 64 65 64 20 69 6e 20 |con included in | 00002740 63 61 73 65 20 44 72 61 67 67 65 64 54 6f 57 69 |case DraggedToWi| 00002750 6e 64 6f 77 3d 2d 32 20 28 69 63 6f 6e 20 62 61 |ndow=-2 (icon ba| 00002760 72 29 0d 0b 18 05 e1 0d 0b 22 05 3a 0d 0b 2c 11 |r).......".:..,.| 00002770 dd 20 f2 4b 65 79 50 72 65 73 73 65 64 0d 0b 36 |. .KeyPressed..6| 00002780 32 57 69 6e 64 6f 77 3d 42 6c 6f 63 6b 21 30 3a |2Window=Block!0:| 00002790 49 63 6f 6e 3d 42 6c 6f 63 6b 21 34 3a 43 68 61 |Icon=Block!4:Cha| 000027a0 72 61 63 74 65 72 3d 42 6c 6f 63 6b 21 32 34 0d |racter=Block!24.| 000027b0 0b 40 0f c8 8e 20 57 69 6e 64 6f 77 20 ca 0d 0b |.@... Window ...| 000027c0 4a 10 20 20 c9 20 53 70 79 43 61 6c 63 3a 0d 0b |J. . SpyCalc:..| 000027d0 54 18 20 20 20 20 e7 20 43 68 61 72 61 63 74 65 |T. . Characte| 000027e0 72 3d 31 33 20 8c 0d 0b 5e 53 20 20 20 20 20 20 |r=13 ...^S | 000027f0 41 24 3d a4 52 65 61 64 49 63 6f 6e 53 74 72 28 |A$=.ReadIconStr(| 00002800 53 70 79 43 61 6c 63 2c 34 36 29 3a e7 20 41 24 |SpyCalc,46):. A$| 00002810 3d 22 22 20 8c 20 41 24 3d 22 30 22 3a f2 55 70 |="" . A$="0":.Up| 00002820 64 61 74 65 49 63 6f 6e 28 53 70 79 43 61 6c 63 |dateIcon(SpyCalc| 00002830 2c 34 36 2c 22 26 30 22 29 0d 0b 68 20 20 20 20 |,46,"&0")..h | 00002840 20 20 20 f2 55 70 64 61 74 65 53 77 69 74 63 68 | .UpdateSwitch| 00002850 65 73 28 a0 28 41 24 29 29 0d 0b 72 09 20 20 20 |es(.(A$))..r. | 00002860 20 cc 0d 0b 7c 28 20 20 20 20 20 20 c8 99 20 22 | ...|( .. "| 00002870 57 69 6d 70 5f 50 72 6f 63 65 73 73 4b 65 79 22 |Wimp_ProcessKey"| 00002880 2c 43 68 61 72 61 63 74 65 72 0d 0b 86 09 20 20 |,Character.... | 00002890 20 20 cd 0d 0b 90 07 20 20 7f 0d 0b 9a 26 20 20 | ..... ....& | 000028a0 20 20 c8 99 20 22 57 69 6d 70 5f 50 72 6f 63 65 | .. "Wimp_Proce| 000028b0 73 73 4b 65 79 22 2c 43 68 61 72 61 63 74 65 72 |ssKey",Character| 000028c0 0d 0b a4 05 cb 0d 0b ae 05 e1 0d 0b b8 05 3a 0d |..............:.| 000028d0 0b c2 11 dd 20 f2 44 65 63 6f 64 65 4d 65 6e 75 |.... .DecodeMenu| 000028e0 0d 0b cc 2a 53 75 62 30 3d 42 6c 6f 63 6b 21 30 |...*Sub0=Block!0| 000028f0 3a 53 75 62 31 3d 42 6c 6f 63 6b 21 34 3a 53 75 |:Sub1=Block!4:Su| 00002900 62 32 3d 42 6c 6f 63 6b 21 38 0d 0b d6 0f 43 6c |b2=Block!8....Cl| 00002910 6f 73 65 4d 65 6e 75 3d a3 0d 0b e0 0b c8 8e 20 |oseMenu=....... | 00002920 4d 25 20 ca 0d 0b ea 0f 20 20 c9 20 49 42 4d 65 |M% ..... . IBMe| 00002930 6e 75 3a 0d 0b f4 11 20 20 20 20 c8 8e 20 53 75 |nu:.... .. Su| 00002940 62 30 20 ca 0d 0b fe 0d 20 20 20 20 20 20 c9 20 |b0 ..... . | 00002950 30 0d 0c 08 2b 20 20 20 20 20 20 20 20 c8 99 20 |0...+ .. | 00002960 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 65 72 |"Wimp_GetPointer| 00002970 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b 0d 0c 12 3c |Info",,Block...<| 00002980 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 6d 70 | .. "Wimp| 00002990 5f 43 72 65 61 74 65 4d 65 6e 75 22 2c 2c 49 6e |_CreateMenu",,In| 000029a0 66 6f 2c 42 6c 6f 63 6b 21 30 2d 32 34 2c 42 6c |fo,Block!0-24,Bl| 000029b0 6f 63 6b 21 34 2b 32 34 0d 0c 1c 17 20 20 20 20 |ock!4+24.... | 000029c0 20 20 20 20 43 6c 6f 73 65 4d 65 6e 75 3d b9 0d | CloseMenu=..| 000029d0 0c 26 0d 20 20 20 20 20 20 c9 20 31 0d 0c 30 12 |.&. . 1..0.| 000029e0 20 20 20 20 20 20 20 20 44 6f 6e 65 3d b9 0d 0c | Done=...| 000029f0 3a 09 20 20 20 20 cb 0d 0c 44 11 20 20 c9 20 4d |:. ...D. . M| 00002a00 61 69 6e 4d 65 6e 75 3a 0d 0c 4e 11 20 20 20 20 |ainMenu:..N. | 00002a10 c8 8e 20 53 75 62 30 20 ca 0d 0c 58 0d 20 20 20 |.. Sub0 ...X. | 00002a20 20 20 20 c9 20 30 0d 0c 62 2b 20 20 20 20 20 20 | . 0..b+ | 00002a30 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 6f | .. "Wimp_GetPo| 00002a40 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 |interInfo",,Bloc| 00002a50 6b 0d 0c 6c 3c 20 20 20 20 20 20 20 20 c8 99 20 |k..l< .. | 00002a60 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 |"Wimp_CreateMenu| 00002a70 22 2c 2c 49 6e 66 6f 2c 42 6c 6f 63 6b 21 30 2d |",,Info,Block!0-| 00002a80 32 34 2c 42 6c 6f 63 6b 21 34 2b 32 34 0d 0c 76 |24,Block!4+24..v| 00002a90 17 20 20 20 20 20 20 20 20 43 6c 6f 73 65 4d 65 |. CloseMe| 00002aa0 6e 75 3d b9 0d 0c 80 0d 20 20 20 20 20 20 c9 20 |nu=..... . | 00002ab0 31 0d 0c 8a 38 20 20 20 20 20 20 20 20 53 70 79 |1...8 Spy| 00002ac0 69 6e 67 3d ac 20 53 70 79 69 6e 67 3a f2 54 69 |ing=. Spying:.Ti| 00002ad0 63 6b 4d 65 6e 75 28 4d 61 69 6e 4d 65 6e 75 2c |ckMenu(MainMenu,| 00002ae0 31 2c 53 70 79 69 6e 67 29 0d 0c 94 30 20 20 20 |1,Spying)...0 | 00002af0 20 20 20 20 20 f2 43 6c 65 61 72 53 70 79 43 61 | .ClearSpyCa| 00002b00 6c 63 57 69 6e 64 6f 77 28 53 70 79 69 6e 67 29 |lcWindow(Spying)| 00002b10 3a 4f 6c 64 57 69 6e 3d 30 0d 0c 9e 34 20 20 20 |:OldWin=0...4 | 00002b20 20 20 20 20 20 f2 55 70 64 61 74 65 49 63 6f 6e | .UpdateIcon| 00002b30 28 53 70 79 43 61 6c 63 2c 34 36 2c 22 26 22 2b |(SpyCalc,46,"&"+| 00002b40 c3 7e a4 57 69 6e 64 46 6c 61 67 73 29 0d 0c a8 |.~.WindFlags)...| 00002b50 6d 20 20 20 20 20 20 20 20 c8 99 20 22 57 69 6d |m .. "Wim| 00002b60 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 74 69 |p_GetCaretPositi| 00002b70 6f 6e 22 2c 2c 42 6c 6f 63 6b 3a e7 20 28 42 6c |on",,Block:. (Bl| 00002b80 6f 63 6b 21 30 3d 53 70 79 43 61 6c 63 29 20 80 |ock!0=SpyCalc) .| 00002b90 20 53 70 79 69 6e 67 20 8c 20 c8 99 20 22 57 69 | Spying . .. "Wi| 00002ba0 6d 70 5f 53 65 74 43 61 72 65 74 50 6f 73 69 74 |mp_SetCaretPosit| 00002bb0 69 6f 6e 22 2c 2d 31 2c 2d 31 0d 0c b2 0d 20 20 |ion",-1,-1.... | 00002bc0 20 20 20 20 c9 20 32 0d 0c bc 2b 20 20 20 20 20 | . 2...+ | 00002bd0 20 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 50 | .. "Wimp_GetP| 00002be0 6f 69 6e 74 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f |ointerInfo",,Blo| 00002bf0 63 6b 0d 0c c6 3b 20 20 20 20 20 20 20 20 c8 99 |ck...; ..| 00002c00 20 22 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e | "Wimp_CreateMen| 00002c10 75 22 2c 2c 4c 6f 63 2c 42 6c 6f 63 6b 21 30 2d |u",,Loc,Block!0-| 00002c20 32 34 2c 42 6c 6f 63 6b 21 34 2b 32 34 0d 0c d0 |24,Block!4+24...| 00002c30 17 20 20 20 20 20 20 20 20 43 6c 6f 73 65 4d 65 |. CloseMe| 00002c40 6e 75 3d b9 0d 0c da 0d 20 20 20 20 20 20 c9 20 |nu=..... . | 00002c50 33 0d 0c e4 5c 20 20 20 20 20 20 20 20 e7 20 ac |3...\ . .| 00002c60 20 a4 53 61 76 65 53 65 74 74 69 6e 67 73 20 8c | .SaveSettings .| 00002c70 20 85 20 39 39 39 39 2c 22 41 6e 20 65 72 72 6f | . 9999,"An erro| 00002c80 72 20 6f 63 63 75 72 72 65 64 20 77 68 69 6c 73 |r occurred whils| 00002c90 74 20 77 72 69 74 69 6e 67 20 74 68 65 20 73 65 |t writing the se| 00002ca0 74 74 69 6e 67 73 20 66 69 6c 65 2e 22 0d 0c ee |ttings file."...| 00002cb0 09 20 20 20 20 cb 0d 0c f8 05 cb 0d 0d 02 23 c8 |. .........#.| 00002cc0 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 |. "Wimp_GetPoint| 00002cd0 65 72 49 6e 66 6f 22 2c 2c 42 6c 6f 63 6b 0d 0d |erInfo",,Block..| 00002ce0 0c 33 e7 20 28 28 42 6c 6f 63 6b 21 38 20 80 20 |.3. ((Block!8 . | 00002cf0 31 29 3d 31 29 20 80 20 28 ac 20 43 6c 6f 73 65 |1)=1) . (. Close| 00002d00 4d 65 6e 75 29 20 8c 20 f2 4d 61 6b 65 4d 65 6e |Menu) . .MakeMen| 00002d10 75 0d 0d 16 05 e1 0d 0d 20 05 3a 0d 0d 2a 4f f4 |u....... .:..*O.| 00002d20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 00002d30 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002d60 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0d 34 13 f4 20 |----------..4.. | 00002d70 4d 65 6e 75 20 72 6f 75 74 69 6e 65 73 0d 0d 3e |Menu routines..>| 00002d80 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |O. -------------| 00002d90 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002dc0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0d 48 05 |------------..H.| 00002dd0 3a 0d 0d 52 11 dd 20 f2 42 75 69 6c 64 4d 65 6e |:..R.. .BuildMen| 00002de0 75 73 0d 0d 5c 49 f4 20 54 68 69 73 20 70 72 6f |us..\I. This pro| 00002df0 63 65 64 75 72 65 20 73 68 6f 75 6c 64 20 6f 6e |cedure should on| 00002e00 6c 79 20 62 65 20 76 69 73 69 74 65 64 20 6f 6e |ly be visited on| 00002e10 63 65 2c 20 73 69 6e 63 65 20 69 74 20 63 6f 6e |ce, since it con| 00002e20 74 61 69 6e 73 20 44 49 4d 73 2e 0d 0d 66 07 20 |tains DIMs...f. | 00002e30 20 3a 0d 0d 70 4f f4 20 49 6e 20 74 68 65 20 6d | :..pO. In the m| 00002e40 65 6e 75 20 74 69 74 6c 65 20 73 74 72 69 6e 67 |enu title string| 00002e50 73 20 62 65 6c 6f 77 2c 20 69 66 20 61 20 22 7c |s below, if a "|| 00002e60 22 20 63 68 61 72 61 63 74 65 72 20 69 73 20 70 |" character is p| 00002e70 72 65 73 65 6e 74 20 69 74 20 77 69 6c 6c 20 62 |resent it will b| 00002e80 65 0d 0d 7a 4f f4 20 72 65 70 6c 61 63 65 64 20 |e..zO. replaced | 00002e90 62 79 20 61 20 73 70 61 63 65 20 75 6e 64 65 72 |by a space under| 00002ea0 20 52 49 53 43 20 4f 53 20 33 2e 31 20 28 6f 72 | RISC OS 3.1 (or| 00002eb0 20 67 72 65 61 74 65 72 29 2c 20 6f 72 20 77 69 | greater), or wi| 00002ec0 6c 6c 20 74 65 72 6d 69 6e 61 74 65 20 74 68 65 |ll terminate the| 00002ed0 0d 0d 84 4f f4 20 73 74 72 69 6e 67 20 75 6e 64 |...O. string und| 00002ee0 65 72 20 65 61 72 6c 69 65 72 20 76 65 72 73 69 |er earlier versi| 00002ef0 6f 6e 73 20 6f 66 20 74 68 65 20 77 69 6d 70 2e |ons of the wimp.| 00002f00 20 54 68 69 73 20 61 6c 6c 6f 77 73 20 74 68 65 | This allows the| 00002f10 20 6e 65 77 20 69 6e 64 69 72 65 63 74 65 64 0d | new indirected.| 00002f20 0d 8e 46 f4 20 6d 65 6e 75 20 74 69 74 6c 65 73 |..F. menu titles| 00002f30 20 74 6f 20 62 65 20 75 73 65 64 20 28 77 68 69 | to be used (whi| 00002f40 63 68 20 77 65 72 65 20 69 6e 74 72 6f 64 75 63 |ch were introduc| 00002f50 65 64 20 77 69 74 68 20 52 49 53 43 20 4f 53 20 |ed with RISC OS | 00002f60 33 2e 31 29 2e 0d 0d 98 07 20 20 3a 0d 0d a2 23 |3.1)..... :...#| 00002f70 49 6e 64 69 72 65 63 74 4d 65 6e 75 54 65 78 74 |IndirectMenuText| 00002f80 4f 66 66 73 65 74 50 6f 69 6e 74 65 72 3d 30 0d |OffsetPointer=0.| 00002f90 0d ac 4e f4 20 54 68 69 73 20 70 6f 69 6e 74 73 |..N. This points| 00002fa0 20 74 6f 20 61 20 70 6f 6f 6c 20 74 6f 20 62 65 | to a pool to be| 00002fb0 20 75 73 65 64 20 62 79 20 61 6c 6c 20 6d 65 6e | used by all men| 00002fc0 75 73 20 66 6f 72 20 74 68 65 69 72 20 69 6e 64 |us for their ind| 00002fd0 69 72 65 63 74 65 64 20 74 65 78 74 2e 0d 0d b6 |irected text....| 00002fe0 07 20 20 3a 0d 0d c0 0d 4d 25 3d 49 42 4d 65 6e |. :....M%=IBMen| 00002ff0 75 0d 0d ca 3d e7 20 77 69 6d 70 3e 3d 33 31 30 |u...=. wimp>=310| 00003000 20 8c 20 54 69 74 6c 65 24 3d 22 57 69 6e 64 6f | . Title$="Windo| 00003010 77 20 46 6c 61 67 73 22 3a 8b 20 54 69 74 6c 65 |w Flags":. Title| 00003020 24 3d 22 57 69 6e 64 20 46 6c 61 67 73 22 0d 0d |$="Wind Flags"..| 00003030 d4 35 de 20 49 42 4d 65 6e 75 54 69 74 6c 65 20 |.5. IBMenuTitle | 00003040 a9 28 54 69 74 6c 65 24 29 2b 31 3a 24 49 42 4d |.(Title$)+1:$IBM| 00003050 65 6e 75 54 69 74 6c 65 3d 54 69 74 6c 65 24 2b |enuTitle=Title$+| 00003060 bd 31 33 0d 0d de 1a f2 4d 65 6e 75 49 6e 69 74 |.13.....MenuInit| 00003070 28 49 42 4d 65 6e 75 54 69 74 6c 65 29 0d 0d e8 |(IBMenuTitle)...| 00003080 1c f2 4d 65 6e 75 49 74 65 6d 28 22 49 6e 66 6f |..MenuItem("Info| 00003090 22 2c 30 2c 49 6e 66 6f 29 0d 0d f2 1c f2 4d 65 |",0,Info).....Me| 000030a0 6e 75 49 74 65 6d 28 22 51 75 69 74 22 2c 31 32 |nuItem("Quit",12| 000030b0 38 2c 2d 31 29 0d 0d fc 07 20 20 3a 0d 0e 06 0f |8,-1).... :....| 000030c0 4d 25 3d 4d 61 69 6e 4d 65 6e 75 0d 0e 10 3d e7 |M%=MainMenu...=.| 000030d0 20 77 69 6d 70 3e 3d 33 31 30 20 8c 20 54 69 74 | wimp>=310 . Tit| 000030e0 6c 65 24 3d 22 57 69 6e 64 6f 77 20 46 6c 61 67 |le$="Window Flag| 000030f0 73 22 3a 8b 20 54 69 74 6c 65 24 3d 22 57 69 6e |s":. Title$="Win| 00003100 64 20 46 6c 61 67 73 22 0d 0e 1a 39 de 20 4d 61 |d Flags"...9. Ma| 00003110 69 6e 4d 65 6e 75 54 69 74 6c 65 20 a9 28 54 69 |inMenuTitle .(Ti| 00003120 74 6c 65 24 29 2b 32 3a 24 4d 61 69 6e 4d 65 6e |tle$)+2:$MainMen| 00003130 75 54 69 74 6c 65 3d 54 69 74 6c 65 24 2b bd 31 |uTitle=Title$+.1| 00003140 33 0d 0e 24 1c f2 4d 65 6e 75 49 6e 69 74 28 4d |3..$..MenuInit(M| 00003150 61 69 6e 4d 65 6e 75 54 69 74 6c 65 29 0d 0e 2e |ainMenuTitle)...| 00003160 1c f2 4d 65 6e 75 49 74 65 6d 28 22 49 6e 66 6f |..MenuItem("Info| 00003170 22 2c 32 2c 49 6e 66 6f 29 0d 0e 38 24 f2 4d 65 |",2,Info)..8$.Me| 00003180 6e 75 49 74 65 6d 28 22 53 70 79 20 6f 6e 20 77 |nuItem("Spy on w| 00003190 69 6e 64 6f 77 73 22 2c 30 2c 2d 31 29 0d 0e 42 |indows",0,-1)..B| 000031a0 26 f2 4d 65 6e 75 49 74 65 6d 28 22 57 69 6e 64 |&.MenuItem("Wind| 000031b0 6f 77 20 70 6f 73 69 74 69 6f 6e 22 2c 32 2c 4c |ow position",2,L| 000031c0 6f 63 29 0d 0e 4c 25 f2 4d 65 6e 75 49 74 65 6d |oc)..L%.MenuItem| 000031d0 28 22 53 61 76 65 20 73 65 74 74 69 6e 67 73 22 |("Save settings"| 000031e0 2c 31 32 38 2c 2d 31 29 0d 0e 56 05 e1 0d 0e 60 |,128,-1)..V....`| 000031f0 05 3a 0d 0e 6a 0f dd 20 f2 4d 61 6b 65 4d 65 6e |.:..j.. .MakeMen| 00003200 75 0d 0e 74 17 e7 20 4d 65 6e 75 58 3c 30 20 8c |u..t.. MenuX<0 .| 00003210 20 4d 65 6e 75 58 3d 30 0d 0e 7e 2a e7 20 4d 65 | MenuX=0..~*. Me| 00003220 6e 75 59 3c 31 38 34 20 8c 20 4d 65 6e 75 59 3d |nuY<184 . MenuY=| 00003230 31 38 34 3a f4 20 66 6f 72 20 69 63 6f 6e 20 62 |184:. for icon b| 00003240 61 72 0d 0e 88 37 c8 99 20 22 57 69 6d 70 5f 43 |ar...7.. "Wimp_C| 00003250 72 65 61 74 65 4d 65 6e 75 22 2c 2c 4d 25 2c 4d |reateMenu",,M%,M| 00003260 65 6e 75 58 2d 28 28 33 36 2b 4d 25 21 31 36 29 |enuX-((36+M%!16)| 00003270 2f 32 29 2c 4d 65 6e 75 59 0d 0e 92 05 e1 0d 0e |/2),MenuY.......| 00003280 9c 05 3a 0d 0e a6 1a dd 20 f2 4d 65 6e 75 49 6e |..:..... .MenuIn| 00003290 69 74 28 4d 65 6e 75 54 69 74 6c 65 29 0d 0e b0 |it(MenuTitle)...| 000032a0 11 e7 20 77 69 6d 70 3e 3d 33 31 30 20 8c 0d 0e |.. wimp>=310 ...| 000032b0 ba 37 20 20 41 3d a7 24 4d 65 6e 75 54 69 74 6c |.7 A=.$MenuTitl| 000032c0 65 2c 22 7c 22 29 3a e7 20 41 3c 3e 30 20 8c 20 |e,"|"):. A<>0 . | 000032d0 3f 28 4d 65 6e 75 54 69 74 6c 65 2b 28 41 2d 31 |?(MenuTitle+(A-1| 000032e0 29 29 3d 33 32 0d 0e c4 1b 20 20 4d 65 6e 75 4d |))=32.... MenuM| 000032f0 61 78 3d a9 28 24 4d 65 6e 75 54 69 74 6c 65 29 |ax=.($MenuTitle)| 00003300 0d 0e ce 14 20 20 4d 25 21 30 3d 4d 65 6e 75 54 |.... M%!0=MenuT| 00003310 69 74 6c 65 0d 0e d8 05 cc 0d 0e e2 37 20 20 41 |itle........7 A| 00003320 3d a7 24 4d 65 6e 75 54 69 74 6c 65 2c 22 7c 22 |=.$MenuTitle,"|"| 00003330 29 3a e7 20 41 3c 3e 30 20 8c 20 3f 28 4d 65 6e |):. A<>0 . ?(Men| 00003340 75 54 69 74 6c 65 2b 28 41 2d 31 29 29 3d 31 33 |uTitle+(A-1))=13| 00003350 0d 0e ec 20 20 20 4d 65 6e 75 4d 61 78 3d a9 28 |... MenuMax=.(| 00003360 c0 24 4d 65 6e 75 54 69 74 6c 65 2c 31 32 29 29 |.$MenuTitle,12))| 00003370 0d 0e f6 19 20 20 24 4d 25 3d c0 24 4d 65 6e 75 |.... $M%=.$Menu| 00003380 54 69 74 6c 65 2c 31 32 29 0d 0f 00 05 cd 0d 0f |Title,12).......| 00003390 0a 24 4d 25 3f 31 32 3d 37 3a 4d 25 3f 31 33 3d |.$M%?12=7:M%?13=| 000033a0 32 3a 4d 25 3f 31 34 3d 31 31 3a 4d 25 3f 31 35 |2:M%?14=11:M%?15| 000033b0 3d 30 0d 0f 14 14 4d 25 21 31 36 3d 4d 65 6e 75 |=0....M%!16=Menu| 000033c0 4d 61 78 2a 31 36 0d 0f 1e 14 4d 25 21 32 30 3d |Max*16....M%!20=| 000033d0 34 34 3a 4d 25 21 32 34 3d 30 0d 0f 28 0c 50 25 |44:M%!24=0..(.P%| 000033e0 3d 4d 25 2b 32 38 0d 0f 32 05 e1 0d 0f 3c 05 3a |=M%+28..2....<.:| 000033f0 0d 0f 46 21 dd 20 f2 4d 65 6e 75 49 74 65 6d 28 |..F!. .MenuItem(| 00003400 54 65 78 74 24 2c 46 6c 61 67 73 2c 4c 69 6e 6b |Text$,Flags,Link| 00003410 29 0d 0f 50 4b f4 20 46 6c 61 67 73 3a 20 31 2d |)..PK. Flags: 1-| 00003420 74 69 63 6b 65 64 2c 20 32 2d 64 61 73 68 65 64 |ticked, 2-dashed| 00003430 20 6c 69 6e 65 2c 20 34 2d 77 72 69 74 65 61 62 | line, 4-writeab| 00003440 6c 65 2c 20 38 2d 6d 65 73 73 61 67 65 2c 20 31 |le, 8-message, 1| 00003450 32 38 2d 6c 61 73 74 20 69 74 65 6d 0d 0f 5a 31 |28-last item..Z1| 00003460 f4 20 4c 69 6e 6b 3a 20 6d 65 6e 75 20 6f 72 20 |. Link: menu or | 00003470 77 69 6e 64 6f 77 20 68 61 6e 64 6c 65 20 66 6f |window handle fo| 00003480 72 20 73 75 62 2d 70 6f 69 6e 74 65 72 0d 0f 64 |r sub-pointer..d| 00003490 18 50 25 21 30 3d 46 6c 61 67 73 3a 50 25 21 34 |.P%!0=Flags:P%!4| 000034a0 3d 4c 69 6e 6b 0d 0f 6e 14 e7 20 a9 28 54 65 78 |=Link..n.. .(Tex| 000034b0 74 24 29 3c 3d 31 32 20 8c 0d 0f 78 25 20 20 50 |t$)<=12 ...x% P| 000034c0 25 21 38 3d 26 30 37 30 30 33 30 32 31 3a f4 20 |%!8=&07003021:. | 000034d0 4e 6f 74 20 69 6e 64 69 72 65 63 74 65 64 0d 0f |Not indirected..| 000034e0 82 14 20 20 24 28 50 25 2b 31 32 29 3d 54 65 78 |.. $(P%+12)=Tex| 000034f0 74 24 0d 0f 8c 05 cc 0d 0f 96 21 20 20 50 25 21 |t$........! P%!| 00003500 38 3d 26 30 37 30 30 33 31 32 31 3a f4 20 49 6e |8=&07003121:. In| 00003510 64 69 72 65 63 74 65 64 0d 0f a0 3a 20 20 50 25 |directed...: P%| 00003520 21 31 32 3d 49 6e 64 69 72 65 63 74 4d 65 6e 75 |!12=IndirectMenu| 00003530 54 65 78 74 2b 49 6e 64 69 72 65 63 74 4d 65 6e |Text+IndirectMen| 00003540 75 54 65 78 74 4f 66 66 73 65 74 50 6f 69 6e 74 |uTextOffsetPoint| 00003550 65 72 0d 0f aa 15 20 20 50 25 21 31 36 3d 30 3a |er.... P%!16=0:| 00003560 50 25 21 32 30 3d 30 0d 0f b4 41 20 20 24 28 49 |P%!20=0...A $(I| 00003570 6e 64 69 72 65 63 74 4d 65 6e 75 54 65 78 74 2b |ndirectMenuText+| 00003580 49 6e 64 69 72 65 63 74 4d 65 6e 75 54 65 78 74 |IndirectMenuText| 00003590 4f 66 66 73 65 74 50 6f 69 6e 74 65 72 29 3d 54 |OffsetPointer)=T| 000035a0 65 78 74 24 2b bd 31 33 0d 0f be 2f 20 20 49 6e |ext$+.13.../ In| 000035b0 64 69 72 65 63 74 4d 65 6e 75 54 65 78 74 4f 66 |directMenuTextOf| 000035c0 66 73 65 74 50 6f 69 6e 74 65 72 2b 3d a9 28 54 |fsetPointer+=.(T| 000035d0 65 78 74 24 29 2b 31 0d 0f c8 82 20 20 e7 20 49 |ext$)+1.... . I| 000035e0 6e 64 69 72 65 63 74 4d 65 6e 75 54 65 78 74 4f |ndirectMenuTextO| 000035f0 66 66 73 65 74 50 6f 69 6e 74 65 72 3e 49 6e 64 |ffsetPointer>Ind| 00003600 4d 65 6e 75 4d 61 78 20 8c 20 85 20 30 2c 22 54 |MenuMax . . 0,"T| 00003610 68 65 20 69 6e 64 69 72 65 63 74 20 6d 65 6e 75 |he indirect menu| 00003620 20 74 65 78 74 20 62 75 66 66 65 72 20 68 61 73 | text buffer has| 00003630 20 6f 76 65 72 66 6c 6f 77 65 64 2e 20 50 6c 65 | overflowed. Ple| 00003640 61 73 65 20 61 6c 6c 6f 63 61 74 65 20 6d 6f 72 |ase allocate mor| 00003650 65 20 73 70 61 63 65 2e 22 0d 0f d2 05 cd 0d 0f |e space.".......| 00003660 dc 0a 50 25 2b 3d 32 34 0d 0f e6 3e e7 20 4d 65 |..P%+=24...>. Me| 00003670 6e 75 4d 61 78 3c a9 28 54 65 78 74 24 29 20 8c |nuMax<.(Text$) .| 00003680 20 4d 65 6e 75 4d 61 78 3d a9 28 54 65 78 74 24 | MenuMax=.(Text$| 00003690 29 3a 4d 25 21 31 36 3d 28 4d 65 6e 75 4d 61 78 |):M%!16=(MenuMax| 000036a0 2b 31 29 2a 31 36 0d 0f f0 41 e7 20 28 46 6c 61 |+1)*16...A. (Fla| 000036b0 67 73 3d 31 32 38 29 20 80 20 28 77 69 6d 70 3e |gs=128) . (wimp>| 000036c0 3d 33 31 30 29 20 8c 20 4d 25 21 32 38 3d 28 28 |=310) . M%!28=((| 000036d0 28 4d 25 21 32 38 29 20 80 20 ac 20 32 35 36 29 |(M%!28) . . 256)| 000036e0 20 82 20 32 35 36 29 0d 0f fa 37 20 20 f4 20 49 | . 256)...7 . I| 000036f0 6e 64 69 72 65 63 74 65 64 20 6d 65 6e 75 20 74 |ndirected menu t| 00003700 69 74 6c 65 73 20 66 6f 72 20 52 49 53 43 20 4f |itles for RISC O| 00003710 53 20 33 2e 31 20 75 70 77 61 72 64 73 2e 0d 10 |S 3.1 upwards...| 00003720 04 05 e1 0d 10 0e 05 3a 0d 10 18 4f f4 20 2d 2d |.......:...O. --| 00003730 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00003770 2d 2d 2d 2d 2d 2d 2d 0d 10 22 29 f4 20 52 65 73 |-------.."). Res| 00003780 70 6f 6e 73 65 73 20 74 6f 20 69 6e 63 6f 6d 69 |ponses to incomi| 00003790 6e 67 20 77 69 6d 70 20 6d 65 73 73 61 67 65 73 |ng wimp messages| 000037a0 0d 10 2c 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..,O. ----------| 000037b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000037e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 000037f0 10 36 05 3a 0d 10 40 18 dd 20 f2 53 61 76 65 44 |.6.:..@.. .SaveD| 00003800 65 73 6b 74 6f 70 28 46 69 6c 65 29 0d 10 4a 07 |esktop(File)..J.| 00003810 ea 20 85 0d 10 54 47 ee 20 85 20 ea 20 42 6c 6f |. ...TG. . . Blo| 00003820 63 6b 21 31 32 3d 42 6c 6f 63 6b 21 38 3a c8 99 |ck!12=Block!8:..| 00003830 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 | "Wimp_SendMessa| 00003840 67 65 22 2c 31 39 2c 42 6c 6f 63 6b 2c 42 6c 6f |ge",19,Block,Blo| 00003850 63 6b 21 34 3a f7 20 85 3a e1 0d 10 5e 49 f4 20 |ck!4:. .:...^I. | 00003860 54 68 65 20 61 62 6f 76 65 20 6c 69 6e 65 20 61 |The above line a| 00003870 63 6b 6e 6f 77 6c 65 64 67 65 73 20 74 68 65 20 |cknowledges the | 00003880 6d 65 73 73 61 67 65 20 69 66 20 61 6e 20 65 72 |message if an er| 00003890 72 6f 72 20 6f 63 63 75 72 73 2c 20 74 68 65 72 |ror occurs, ther| 000038a0 65 62 79 0d 10 68 20 f4 20 61 62 6f 72 74 69 6e |eby..h . abortin| 000038b0 67 20 74 68 65 20 64 65 73 6b 74 6f 70 20 73 61 |g the desktop sa| 000038c0 76 65 2e 0d 10 72 2b d5 23 46 69 6c 65 2c 22 52 |ve...r+.#File,"R| 000038d0 75 6e 20 22 2b 4f 75 72 50 61 74 68 4e 61 6d 65 |un "+OurPathName| 000038e0 24 2b 4f 75 72 46 69 6c 65 4e 61 6d 65 24 0d 10 |$+OurFileName$..| 000038f0 7c 05 e1 0d 10 86 05 3a 0d 10 90 0b dd 20 f2 48 ||......:..... .H| 00003900 65 6c 70 0d 10 9a 34 42 6c 6f 63 6b 21 31 32 3d |elp...4Block!12=| 00003910 42 6c 6f 63 6b 21 38 3a 42 6c 6f 63 6b 21 31 36 |Block!8:Block!16| 00003920 3d 26 35 30 33 3a 48 65 6c 70 49 6e 66 6f 3d 42 |=&503:HelpInfo=B| 00003930 6c 6f 63 6b 2b 32 30 0d 10 a4 07 20 20 3a 0d 10 |lock+20.... :..| 00003940 ae 30 f4 20 42 6c 6f 63 6b 21 33 32 20 67 69 76 |.0. Block!32 giv| 00003950 65 73 20 77 69 6e 64 6f 77 2c 20 42 6c 6f 63 6b |es window, Block| 00003960 21 33 36 20 67 69 76 65 73 20 69 63 6f 6e 0d 10 |!36 gives icon..| 00003970 b8 07 20 20 3a 0d 10 c2 11 c8 8e 20 42 6c 6f 63 |.. :...... Bloc| 00003980 6b 21 33 32 20 ca 0d 10 cc 32 20 20 c9 20 2d 32 |k!32 ....2 . -2| 00003990 3a f2 53 65 6e 64 28 22 54 68 69 73 20 69 73 20 |:.Send("This is | 000039a0 74 68 65 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 |the Window Flags| 000039b0 20 69 63 6f 6e 2e 22 29 0d 10 d6 3d 20 20 20 20 | icon.")...= | 000039c0 20 20 20 20 20 20 f2 53 65 6e 64 28 22 43 6c 69 | .Send("Cli| 000039d0 63 6b 20 4d 45 4e 55 20 66 6f 72 20 69 6e 66 6f |ck MENU for info| 000039e0 72 6d 61 74 69 6f 6e 20 6f 72 20 74 6f 20 71 75 |rmation or to qu| 000039f0 69 74 2e 22 29 0d 10 e0 44 20 20 20 20 20 20 20 |it.")...D | 00003a00 20 20 20 f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 | .Send("Click | 00003a10 53 45 4c 45 43 54 20 74 6f 20 6f 70 65 6e 20 74 |SELECT to open t| 00003a20 68 65 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 20 |he Window Flags | 00003a30 77 69 6e 64 6f 77 2e 22 29 0d 10 ea 10 20 20 c9 |window.").... .| 00003a40 20 53 70 79 43 61 6c 63 3a 0d 10 f4 15 20 20 20 | SpyCalc:.... | 00003a50 20 c8 8e 20 42 6c 6f 63 6b 21 33 36 20 ca 0d 10 | .. Block!36 ...| 00003a60 fe 5f 20 20 20 20 20 20 c9 20 30 2c 31 2c 32 2c |._ . 0,1,2,| 00003a70 33 2c 34 2c 35 3a f2 53 65 6e 64 28 22 54 68 69 |3,4,5:.Send("Thi| 00003a80 73 20 61 72 65 61 20 73 68 6f 77 73 20 74 68 65 |s area shows the| 00003a90 20 77 69 6e 64 6f 77 20 61 6e 64 20 69 63 6f 6e | window and icon| 00003aa0 20 68 61 6e 64 6c 65 73 20 75 6e 64 65 72 20 74 | handles under t| 00003ab0 68 65 20 70 6f 69 6e 74 65 72 2e 22 29 0d 11 08 |he pointer.")...| 00003ac0 6b 20 20 20 20 20 20 c9 20 36 2c 37 2c 38 2c 39 |k . 6,7,8,9| 00003ad0 2c 31 30 2c 31 31 3a f2 53 65 6e 64 28 22 54 68 |,10,11:.Send("Th| 00003ae0 69 73 20 61 72 65 61 20 73 68 6f 77 73 20 74 68 |is area shows th| 00003af0 65 20 6d 69 6e 69 6d 75 6d 20 63 6f 6f 72 64 69 |e minimum coordi| 00003b00 6e 61 74 65 73 20 6f 66 20 74 68 65 20 77 69 6e |nates of the win| 00003b10 64 6f 77 20 75 6e 64 65 72 20 74 68 65 20 70 6f |dow under the po| 00003b20 69 6e 74 65 72 2e 22 29 0d 11 12 6f 20 20 20 20 |inter.")...o | 00003b30 20 20 c9 20 31 32 2c 31 33 2c 31 34 2c 31 35 2c | . 12,13,14,15,| 00003b40 31 36 2c 31 37 3a f2 53 65 6e 64 28 22 54 68 69 |16,17:.Send("Thi| 00003b50 73 20 61 72 65 61 20 73 68 6f 77 73 20 74 68 65 |s area shows the| 00003b60 20 6d 61 78 69 6d 75 6d 20 63 6f 6f 72 64 69 6e | maximum coordin| 00003b70 61 74 65 73 20 6f 66 20 74 68 65 20 77 69 6e 64 |ates of the wind| 00003b80 6f 77 20 75 6e 64 65 72 20 74 68 65 20 70 6f 69 |ow under the poi| 00003b90 6e 74 65 72 2e 22 29 0d 11 1c 6f 20 20 20 20 20 |nter.")...o | 00003ba0 20 c9 20 31 38 2c 31 39 2c 32 30 2c 32 31 2c 32 | . 18,19,20,21,2| 00003bb0 32 2c 32 33 3a f2 53 65 6e 64 28 22 54 68 69 73 |2,23:.Send("This| 00003bc0 20 61 72 65 61 20 73 68 6f 77 73 20 68 6f 77 20 | area shows how | 00003bd0 6d 75 63 68 20 74 68 65 20 77 69 6e 64 6f 77 20 |much the window | 00003be0 75 6e 64 65 72 20 74 68 65 20 70 6f 69 6e 74 65 |under the pointe| 00003bf0 72 20 68 61 73 20 62 65 65 6e 20 73 63 72 6f 6c |r has been scrol| 00003c00 6c 65 64 2e 22 29 0d 11 26 1f 20 20 20 20 20 20 |led.")..&. | 00003c10 c9 20 32 34 2c 32 35 2c 34 37 3a e7 20 53 70 79 |. 24,25,47:. Spy| 00003c20 69 6e 67 20 8c 0d 11 30 69 20 20 20 20 20 20 20 |ing ...0i | 00003c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f2 | .| 00003c40 53 65 6e 64 28 22 54 68 69 73 20 61 72 65 61 20 |Send("This area | 00003c50 73 68 6f 77 73 20 74 68 65 20 69 6e 64 69 76 69 |shows the indivi| 00003c60 64 75 61 6c 20 66 6c 61 67 73 20 66 6f 72 20 74 |dual flags for t| 00003c70 68 65 20 77 69 6e 64 6f 77 20 75 6e 64 65 72 20 |he window under | 00003c80 74 68 65 20 70 6f 69 6e 74 65 72 2e 22 29 0d 11 |the pointer.")..| 00003c90 3a 19 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |:. | 00003ca0 20 20 20 20 20 20 cc 0d 11 44 a8 20 20 20 20 20 | ...D. | 00003cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003cc0 20 f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 74 68 | .Send("Click th| 00003cd0 65 20 73 77 69 74 63 68 65 73 20 69 6e 20 74 68 |e switches in th| 00003ce0 69 73 20 61 72 65 61 20 74 6f 20 77 6f 72 6b 20 |is area to work | 00003cf0 6f 75 74 20 74 68 65 20 77 69 6e 64 6f 77 20 66 |out the window f| 00003d00 6c 61 67 73 2c 20 6f 72 20 65 6e 74 65 72 20 61 |lags, or enter a| 00003d10 20 76 61 6c 75 65 20 69 6e 20 74 68 65 20 62 6f | value in the bo| 00003d20 78 20 61 6e 64 20 70 72 65 73 73 20 52 45 54 55 |x and press RETU| 00003d30 52 4e 20 74 6f 20 66 69 6e 64 20 6f 75 74 20 77 |RN to find out w| 00003d40 68 61 74 20 69 74 20 6d 65 61 6e 73 2e 22 29 0d |hat it means.").| 00003d50 11 4e 19 20 20 20 20 20 20 20 20 20 20 20 20 20 |.N. | 00003d60 20 20 20 20 20 20 20 cd 0d 11 58 4e 20 20 20 20 | ...XN | 00003d70 20 20 c9 20 32 36 3a f2 53 65 6e 64 28 22 54 68 | . 26:.Send("Th| 00003d80 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c |is switch is sel| 00003d90 65 63 74 65 64 20 69 66 20 74 68 65 20 77 69 6e |ected if the win| 00003da0 64 6f 77 20 68 61 73 20 61 20 42 61 63 6b 20 69 |dow has a Back i| 00003db0 63 6f 6e 2e 22 29 0d 11 62 4f 20 20 20 20 20 20 |con.")..bO | 00003dc0 c9 20 32 37 3a f2 53 65 6e 64 28 22 54 68 69 73 |. 27:.Send("This| 00003dd0 20 73 77 69 74 63 68 20 69 73 20 73 65 6c 65 63 | switch is selec| 00003de0 74 65 64 20 69 66 20 74 68 65 20 77 69 6e 64 6f |ted if the windo| 00003df0 77 20 68 61 73 20 61 20 43 6c 6f 73 65 20 69 63 |w has a Close ic| 00003e00 6f 6e 2e 22 29 0d 11 6c 53 20 20 20 20 20 20 c9 |on.")..lS .| 00003e10 20 32 38 3a f2 53 65 6e 64 28 22 54 68 69 73 20 | 28:.Send("This | 00003e20 73 77 69 74 63 68 20 69 73 20 73 65 6c 65 63 74 |switch is select| 00003e30 65 64 20 69 66 20 74 68 65 20 77 69 6e 64 6f 77 |ed if the window| 00003e40 20 68 61 73 20 61 20 54 69 74 6c 65 20 42 61 72 | has a Title Bar| 00003e50 20 69 63 6f 6e 2e 22 29 0d 11 76 55 20 20 20 20 | icon.")..vU | 00003e60 20 20 c9 20 32 39 3a f2 53 65 6e 64 28 22 54 68 | . 29:.Send("Th| 00003e70 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c |is switch is sel| 00003e80 65 63 74 65 64 20 69 66 20 74 68 65 20 77 69 6e |ected if the win| 00003e90 64 6f 77 20 68 61 73 20 61 20 54 6f 67 67 6c 65 |dow has a Toggle| 00003ea0 20 53 69 7a 65 20 69 63 6f 6e 2e 22 29 0d 11 80 | Size icon.")...| 00003eb0 58 20 20 20 20 20 20 c9 20 33 30 3a f2 53 65 6e |X . 30:.Sen| 00003ec0 64 28 22 54 68 69 73 20 73 77 69 74 63 68 20 69 |d("This switch i| 00003ed0 73 20 73 65 6c 65 63 74 65 64 20 69 66 20 74 68 |s selected if th| 00003ee0 65 20 77 69 6e 64 6f 77 20 68 61 73 20 61 20 76 |e window has a v| 00003ef0 65 72 74 69 63 61 6c 20 73 63 72 6f 6c 6c 20 62 |ertical scroll b| 00003f00 61 72 2e 22 29 0d 11 8a 4e 20 20 20 20 20 20 c9 |ar.")...N .| 00003f10 20 33 31 3a f2 53 65 6e 64 28 22 54 68 69 73 20 | 31:.Send("This | 00003f20 73 77 69 74 63 68 20 69 73 20 73 65 6c 65 63 74 |switch is select| 00003f30 65 64 20 69 66 20 74 68 65 20 77 69 6e 64 6f 77 |ed if the window| 00003f40 20 68 61 73 20 61 20 53 69 7a 65 20 69 63 6f 6e | has a Size icon| 00003f50 2e 22 29 0d 11 94 5a 20 20 20 20 20 20 c9 20 33 |.")...Z . 3| 00003f60 32 3a f2 53 65 6e 64 28 22 54 68 69 73 20 73 77 |2:.Send("This sw| 00003f70 69 74 63 68 20 69 73 20 73 65 6c 65 63 74 65 64 |itch is selected| 00003f80 20 69 66 20 74 68 65 20 77 69 6e 64 6f 77 20 68 | if the window h| 00003f90 61 73 20 61 20 68 6f 72 69 7a 6f 6e 74 61 6c 20 |as a horizontal | 00003fa0 73 63 72 6f 6c 6c 20 62 61 72 2e 22 29 0d 11 9e |scroll bar.")...| 00003fb0 4b 20 20 20 20 20 20 c9 20 33 33 3a f2 53 65 6e |K . 33:.Sen| 00003fc0 64 28 22 54 68 69 73 20 73 77 69 74 63 68 20 69 |d("This switch i| 00003fd0 73 20 73 65 6c 65 63 74 65 64 20 69 66 20 74 68 |s selected if th| 00003fe0 65 20 77 69 6e 64 6f 77 20 63 61 6e 20 62 65 20 |e window can be | 00003ff0 6d 6f 76 65 64 2e 22 29 0d 11 a8 71 20 20 20 20 |moved.")...q | 00004000 20 20 c9 20 33 34 3a f2 53 65 6e 64 28 22 54 68 | . 34:.Send("Th| 00004010 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c |is switch is sel| 00004020 65 63 74 65 64 20 69 66 20 74 68 65 20 77 69 6e |ected if the win| 00004030 64 6f 77 20 63 61 6e 20 62 65 20 75 70 64 61 74 |dow can be updat| 00004040 65 64 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 |ed automatically| 00004050 20 62 79 20 74 68 65 20 77 69 6e 64 6f 77 20 6d | by the window m| 00004060 61 6e 61 67 65 72 2e 22 29 0d 11 b2 48 20 20 20 |anager.")...H | 00004070 20 20 20 c9 20 33 35 3a f2 53 65 6e 64 28 22 54 | . 35:.Send("T| 00004080 68 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 |his switch is se| 00004090 6c 65 63 74 65 64 20 69 66 20 74 68 65 20 77 69 |lected if the wi| 000040a0 6e 64 6f 77 20 69 73 20 61 20 70 61 6e 65 2e 22 |ndow is a pane."| 000040b0 29 0d 11 bc 68 20 20 20 20 20 20 c9 20 33 36 3a |)...h . 36:| 000040c0 f2 53 65 6e 64 28 22 54 68 69 73 20 73 77 69 74 |.Send("This swit| 000040d0 63 68 20 69 73 20 73 65 6c 65 63 74 65 64 20 69 |ch is selected i| 000040e0 66 20 74 68 65 20 77 69 6e 64 6f 77 20 63 61 6e |f the window can| 000040f0 20 6d 6f 76 65 20 62 65 79 6f 6e 64 20 74 68 65 | move beyond the| 00004100 20 6c 69 6d 69 74 73 20 6f 66 20 74 68 65 20 64 | limits of the d| 00004110 65 73 6b 74 6f 70 2e 22 29 0d 11 c6 76 20 20 20 |esktop.")...v | 00004120 20 20 20 c9 20 33 37 3a f2 53 65 6e 64 28 22 54 | . 37:.Send("T| 00004130 68 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 |his switch is se| 00004140 6c 65 63 74 65 64 20 69 66 20 77 69 6e 64 6f 77 |lected if window| 00004150 20 73 63 72 6f 6c 6c 69 6e 67 20 69 73 20 6e 6f | scrolling is no| 00004160 74 20 61 75 74 6f 6d 61 74 69 63 2c 20 61 6e 64 |t automatic, and| 00004170 20 74 68 65 20 61 72 72 6f 77 20 69 63 6f 6e 73 | the arrow icons| 00004180 20 61 75 74 6f 2d 72 65 70 65 61 74 2e 22 29 0d | auto-repeat.").| 00004190 11 d0 7d 20 20 20 20 20 20 c9 20 33 38 3a f2 53 |..} . 38:.S| 000041a0 65 6e 64 28 22 54 68 69 73 20 73 77 69 74 63 68 |end("This switch| 000041b0 20 69 73 20 73 65 6c 65 63 74 65 64 20 69 66 20 | is selected if | 000041c0 77 69 6e 64 6f 77 20 73 63 72 6f 6c 6c 69 6e 67 |window scrolling| 000041d0 20 69 73 20 6e 6f 74 20 61 75 74 6f 6d 61 74 69 | is not automati| 000041e0 63 2c 20 61 6e 64 20 74 68 65 20 61 72 72 6f 77 |c, and the arrow| 000041f0 20 69 63 6f 6e 73 20 64 6f 20 6e 6f 74 20 61 75 | icons do not au| 00004200 74 6f 2d 72 65 70 65 61 74 2e 22 29 0d 11 da 80 |to-repeat.")....| 00004210 20 20 20 20 20 20 c9 20 33 39 3a f2 53 65 6e 64 | . 39:.Send| 00004220 28 22 54 68 69 73 20 73 77 69 74 63 68 20 69 73 |("This switch is| 00004230 20 73 65 6c 65 63 74 65 64 20 69 66 20 74 68 65 | selected if the| 00004240 20 77 69 6e 64 6f 77 27 73 20 63 6f 6c 6f 75 72 | window's colour| 00004250 73 20 61 72 65 20 74 72 65 61 74 65 64 20 61 73 |s are treated as| 00004260 20 47 43 4f 4c 20 63 6f 6c 6f 75 72 73 20 72 61 | GCOL colours ra| 00004270 74 68 65 72 20 74 68 61 6e 20 44 65 73 6b 74 6f |ther than Deskto| 00004280 70 20 63 6f 6c 6f 75 72 73 2e 22 29 0d 11 e4 71 |p colours.")...q| 00004290 20 20 20 20 20 20 c9 20 34 30 3a f2 53 65 6e 64 | . 40:.Send| 000042a0 28 22 54 68 69 73 20 73 77 69 74 63 68 20 69 73 |("This switch is| 000042b0 20 73 65 6c 65 63 74 65 64 20 69 66 20 6f 74 68 | selected if oth| 000042c0 65 72 20 77 69 6e 64 6f 77 73 20 61 72 65 20 6e |er windows are n| 000042d0 6f 74 20 61 6c 6c 6f 77 65 64 20 74 6f 20 62 65 |ot allowed to be| 000042e0 20 6f 70 65 6e 65 64 20 62 65 68 69 6e 64 20 74 | opened behind t| 000042f0 68 69 73 20 77 69 6e 64 6f 77 2e 22 29 0d 11 ee |his window.")...| 00004300 5a 20 20 20 20 20 20 c9 20 34 31 3a f2 53 65 6e |Z . 41:.Sen| 00004310 64 28 22 54 68 69 73 20 73 77 69 74 63 68 20 69 |d("This switch i| 00004320 73 20 73 65 6c 65 63 74 65 64 20 69 66 20 74 68 |s selected if th| 00004330 65 20 77 69 6e 64 6f 77 20 67 65 6e 65 72 65 61 |e window generea| 00004340 74 65 73 20 27 68 6f 74 20 6b 65 79 27 20 65 76 |tes 'hot key' ev| 00004350 65 6e 74 73 2e 22 29 0d 11 f8 71 20 20 20 20 20 |ents.")...q | 00004360 20 c9 20 34 32 3a f2 53 65 6e 64 28 22 54 68 69 | . 42:.Send("Thi| 00004370 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c 65 |s switch is sele| 00004380 63 74 65 64 20 69 66 20 74 68 65 20 77 69 6e 64 |cted if the wind| 00004390 6f 77 20 69 73 20 62 65 69 6e 67 20 66 6f 72 63 |ow is being forc| 000043a0 65 64 20 74 6f 20 73 74 61 79 20 6f 6e 20 73 63 |ed to stay on sc| 000043b0 72 65 65 6e 20 28 52 49 53 43 20 4f 53 20 33 20 |reen (RISC OS 3 | 000043c0 6f 6e 6c 79 29 2e 22 29 0d 12 02 80 20 20 20 20 |only).").... | 000043d0 20 20 c9 20 34 33 3a f2 53 65 6e 64 28 22 54 68 | . 43:.Send("Th| 000043e0 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c |is switch is sel| 000043f0 65 63 74 65 64 20 69 66 20 74 68 65 20 72 69 67 |ected if the rig| 00004400 68 74 2d 68 61 6e 64 20 77 69 6e 64 6f 77 20 65 |ht-hand window e| 00004410 78 74 65 6e 64 20 69 73 20 69 67 6e 6f 72 65 64 |xtend is ignored| 00004420 20 64 75 72 69 6e 67 20 72 65 73 69 7a 65 20 64 | during resize d| 00004430 72 61 67 73 20 28 52 49 53 43 20 4f 53 20 33 20 |rags (RISC OS 3 | 00004440 6f 6e 6c 79 29 2e 22 29 0d 12 0c 7b 20 20 20 20 |only).")...{ | 00004450 20 20 c9 20 34 34 3a f2 53 65 6e 64 28 22 54 68 | . 44:.Send("Th| 00004460 69 73 20 73 77 69 74 63 68 20 69 73 20 73 65 6c |is switch is sel| 00004470 65 63 74 65 64 20 69 66 20 74 68 65 20 6c 6f 77 |ected if the low| 00004480 65 72 20 77 69 6e 64 6f 77 20 65 78 74 65 6e 74 |er window extent| 00004490 20 69 73 20 69 67 6e 6f 72 65 64 20 64 75 72 69 | is ignored duri| 000044a0 6e 67 20 72 65 73 69 7a 65 20 64 72 61 67 73 20 |ng resize drags | 000044b0 28 52 49 53 43 20 4f 53 20 33 20 6f 6e 6c 79 29 |(RISC OS 3 only)| 000044c0 2e 22 29 0d 12 16 72 20 20 20 20 20 20 c9 20 34 |.")...r . 4| 000044d0 35 3a f2 53 65 6e 64 28 22 54 68 69 73 20 73 77 |5:.Send("This sw| 000044e0 69 74 63 68 20 69 73 20 73 65 6c 65 63 74 65 64 |itch is selected| 000044f0 20 69 66 20 74 68 65 20 77 69 6e 64 6f 77 20 68 | if the window h| 00004500 61 73 20 62 65 65 6e 20 64 65 66 69 6e 65 64 20 |as been defined | 00004510 75 73 69 6e 67 20 74 68 65 20 6e 65 77 20 66 6f |using the new fo| 00004520 72 6d 61 74 20 73 70 65 63 69 66 69 63 61 74 69 |rmat specificati| 00004530 6f 6e 2e 22 29 0d 12 20 43 20 20 20 20 20 20 c9 |on.").. C .| 00004540 20 34 36 3a f2 53 65 6e 64 28 22 54 68 69 73 20 | 46:.Send("This | 00004550 73 68 6f 77 73 20 74 68 65 20 77 69 6e 64 6f 77 |shows the window| 00004560 20 66 6c 61 67 73 20 69 6e 20 68 65 78 61 64 65 | flags in hexade| 00004570 63 69 6d 61 6c 2e 22 29 0d 12 2a 66 20 20 20 20 |cimal.")..*f | 00004580 20 20 20 20 20 20 20 20 20 20 e7 20 ac 20 53 70 | . . Sp| 00004590 79 69 6e 67 20 8c 20 f2 53 65 6e 64 28 22 45 6e |ying . .Send("En| 000045a0 74 65 72 20 61 20 76 61 6c 75 65 20 68 65 72 65 |ter a value here| 000045b0 20 61 6e 64 20 70 72 65 73 73 20 52 45 54 55 52 | and press RETUR| 000045c0 4e 20 74 6f 20 66 69 6e 64 20 6f 75 74 20 77 68 |N to find out wh| 000045d0 61 74 20 69 74 20 6d 65 61 6e 73 2e 22 29 0d 12 |at it means.")..| 000045e0 34 76 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |4v | 000045f0 e7 20 ac 20 53 70 79 69 6e 67 20 8c 20 f2 53 65 |. . Spying . .Se| 00004600 6e 64 28 22 59 6f 75 20 63 61 6e 20 64 72 61 67 |nd("You can drag| 00004610 20 74 68 69 73 20 66 69 67 75 72 65 20 6f 75 74 | this figure out| 00004620 20 74 6f 20 61 6e 6f 74 68 65 72 20 61 70 70 6c | to another appl| 00004630 69 63 61 74 69 6f 6e 20 6f 72 20 74 6f 20 61 20 |ication or to a | 00004640 64 69 72 65 63 74 6f 72 79 20 64 69 73 70 6c 61 |directory displa| 00004650 79 2e 22 29 0d 12 3e 3a 20 20 20 20 20 20 7f 20 |y.")..>: . | 00004660 f2 53 65 6e 64 28 22 54 68 69 73 20 69 73 20 74 |.Send("This is t| 00004670 68 65 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 20 |he Window Flags | 00004680 6d 61 69 6e 20 77 69 6e 64 6f 77 2e 22 29 0d 12 |main window.")..| 00004690 48 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |HN | 000046a0 20 20 f2 53 65 6e 64 28 22 59 6f 75 20 63 61 6e | .Send("You can| 000046b0 20 73 70 79 20 6f 6e 20 77 69 6e 64 6f 77 73 20 | spy on windows | 000046c0 6f 72 20 63 61 6c 63 75 6c 61 74 65 20 77 69 6e |or calculate win| 000046d0 64 6f 77 20 66 6c 61 67 73 2e 22 29 0d 12 52 09 |dow flags.")..R.| 000046e0 20 20 20 20 cb 0d 12 5c 4a 20 20 c9 20 49 6e 66 | ...\J . Inf| 000046f0 6f 3a f2 53 65 6e 64 28 22 54 68 69 73 20 77 69 |o:.Send("This wi| 00004700 6e 64 6f 77 20 64 69 73 70 6c 61 79 73 20 69 6e |ndow displays in| 00004710 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 |formation about | 00004720 57 69 6e 64 6f 77 20 46 6c 61 67 73 2e 22 29 0d |Window Flags.").| 00004730 12 66 5d 20 20 20 20 20 20 20 20 20 20 20 20 f2 |.f] .| 00004740 53 65 6e 64 28 22 57 69 6e 64 6f 77 20 46 6c 61 |Send("Window Fla| 00004750 67 73 20 69 73 20 61 20 6d 65 6d 62 65 72 20 6f |gs is a member o| 00004760 66 20 74 68 65 20 4f 6d 6e 69 44 65 73 6b 20 53 |f the OmniDesk S| 00004770 75 69 74 65 20 6f 66 20 64 65 73 6b 74 6f 70 20 |uite of desktop | 00004780 75 74 69 6c 69 74 69 65 73 2e 22 29 0d 12 70 0c |utilities.")..p.| 00004790 20 20 c9 20 4c 6f 63 3a 0d 12 7a 0d 20 20 20 c8 | . Loc:..z. .| 000047a0 8e 20 b9 20 ca 0d 12 84 6d 20 20 20 20 20 c9 20 |. . ....m . | 000047b0 28 28 42 6c 6f 63 6b 21 33 36 29 3c 36 29 3a f2 |((Block!36)<6):.| 000047c0 53 65 6e 64 28 22 54 68 69 73 20 77 69 6e 64 6f |Send("This windo| 000047d0 77 20 6c 65 74 73 20 79 6f 75 20 73 6e 61 70 20 |w lets you snap | 000047e0 74 68 65 20 6d 61 67 6e 69 66 69 65 72 20 77 69 |the magnifier wi| 000047f0 6e 64 6f 77 20 74 6f 20 61 6e 20 69 6e 76 69 73 |ndow to an invis| 00004800 62 6c 65 20 73 63 72 65 65 6e 20 67 72 69 64 2e |ble screen grid.| 00004810 22 29 0d 12 8e 9d 20 20 20 20 20 20 20 20 20 20 |").... | 00004820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 f2 | .| 00004830 53 65 6e 64 28 22 54 68 65 20 73 65 63 6f 6e 64 |Send("The second| 00004840 20 70 6f 73 69 74 69 6f 6e 20 75 70 20 70 75 74 | position up put| 00004850 73 20 74 68 65 20 77 69 6e 64 6f 77 20 6a 75 73 |s the window jus| 00004860 74 20 61 62 6f 76 65 20 74 68 65 20 69 63 6f 6e |t above the icon| 00004870 2d 62 61 72 2c 20 61 6e 64 20 69 73 20 74 68 65 |-bar, and is the| 00004880 72 65 66 6f 72 65 20 6e 6f 74 20 65 76 65 6e 6c |refore not evenl| 00004890 79 20 73 70 61 63 65 64 20 77 69 74 68 20 74 68 |y spaced with th| 000048a0 65 20 6f 74 68 65 72 20 72 6f 77 73 2e 22 29 0d |e other rows.").| 000048b0 12 98 87 20 20 20 20 20 7f 20 f2 53 65 6e 64 28 |... . .Send(| 000048c0 22 43 6c 69 63 6b 20 53 45 4c 45 43 54 20 6f 6e |"Click SELECT on| 000048d0 20 74 68 65 20 70 6f 73 69 74 69 6f 6e 20 79 6f | the position yo| 000048e0 75 20 77 61 6e 74 20 74 68 65 20 77 69 6e 64 6f |u want the windo| 000048f0 77 20 74 6f 20 73 6e 61 70 20 74 6f 2c 20 6f 72 |w to snap to, or| 00004900 20 41 44 4a 55 53 54 20 6f 6e 20 74 68 65 20 77 | ADJUST on the w| 00004910 69 6e 64 6f 77 20 69 63 6f 6e 20 74 6f 20 74 75 |indow icon to tu| 00004920 72 6e 20 74 68 65 20 73 6e 61 70 70 69 6e 67 20 |rn the snapping | 00004930 6f 66 66 2e 22 29 0d 12 a2 75 20 20 20 20 20 20 |off.")...u | 00004940 20 20 20 20 20 20 20 20 20 f2 53 65 6e 64 28 22 | .Send("| 00004950 49 66 20 73 6e 61 70 70 69 6e 67 20 69 73 20 6f |If snapping is o| 00004960 6e 2c 20 74 68 65 20 77 69 6e 64 6f 77 20 77 69 |n, the window wi| 00004970 6c 6c 20 6f 70 65 6e 20 61 74 20 74 68 65 20 61 |ll open at the a| 00004980 70 70 72 6f 70 72 69 61 74 65 20 70 6f 73 69 74 |ppropriate posit| 00004990 69 6f 6e 20 77 68 65 6e 20 79 6f 75 20 63 68 61 |ion when you cha| 000049a0 6e 67 65 20 6d 6f 64 65 2e 22 29 0d 12 ac 08 20 |nge mode.").... | 000049b0 20 20 cb 0d 12 b6 05 7f 0d 12 c0 13 20 20 e7 20 | .......... . | 000049c0 77 69 6d 70 3e 3d 32 31 37 20 8c 0d 12 ca 31 20 |wimp>=217 ....1 | 000049d0 20 20 20 4d 65 6e 75 48 65 6c 70 21 30 3d 2d 31 | MenuHelp!0=-1| 000049e0 3a 4d 65 6e 75 48 65 6c 70 21 34 3d 2d 31 3a 4d |:MenuHelp!4=-1:M| 000049f0 65 6e 75 48 65 6c 70 21 38 3d 2d 31 0d 12 d4 3b |enuHelp!8=-1...;| 00004a00 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 | .. "Wimp_Get| 00004a10 4d 65 6e 75 53 74 61 74 65 22 2c 31 2c 4d 65 6e |MenuState",1,Men| 00004a20 75 48 65 6c 70 2c 42 6c 6f 63 6b 21 33 32 2c 42 |uHelp,Block!32,B| 00004a30 6c 6f 63 6b 21 33 36 0d 12 de 0f 20 20 20 20 c8 |lock!36.... .| 00004a40 8e 20 4d 25 20 ca 0d 12 e8 13 20 20 20 20 20 20 |. M% ..... | 00004a50 c9 20 49 42 4d 65 6e 75 3a 0d 12 f2 1d 20 20 20 |. IBMenu:.... | 00004a60 20 20 20 20 20 e7 20 4d 65 6e 75 48 65 6c 70 21 | . MenuHelp!| 00004a70 34 3d 2d 31 20 8c 0d 12 fc 1d 20 20 20 20 20 20 |4=-1 ..... | 00004a80 20 20 20 20 c8 8e 20 4d 65 6e 75 48 65 6c 70 21 | .. MenuHelp!| 00004a90 30 20 ca 0d 13 06 5a 20 20 20 20 20 20 20 20 20 |0 ....Z | 00004aa0 20 20 20 c9 20 30 3a f2 53 65 6e 64 28 22 4d 6f | . 0:.Send("Mo| 00004ab0 76 65 20 74 68 65 20 70 6f 69 6e 74 65 72 20 72 |ve the pointer r| 00004ac0 69 67 68 74 20 74 6f 20 73 65 65 20 69 6e 66 6f |ight to see info| 00004ad0 72 6d 61 74 69 6f 6e 20 61 62 6f 75 74 20 57 69 |rmation about Wi| 00004ae0 6e 64 6f 77 20 46 6c 61 67 73 2e 22 29 0d 13 10 |ndow Flags.")...| 00004af0 3f 20 20 20 20 20 20 20 20 20 20 20 20 c9 20 31 |? . 1| 00004b00 3a f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 53 45 |:.Send("Click SE| 00004b10 4c 45 43 54 20 74 6f 20 71 75 69 74 20 57 69 6e |LECT to quit Win| 00004b20 64 6f 77 20 46 6c 61 67 73 2e 22 29 0d 13 1a 42 |dow Flags.")...B| 00004b30 20 20 20 20 20 20 20 20 20 20 20 20 7f 20 f2 53 | . .S| 00004b40 65 6e 64 28 22 54 68 69 73 20 69 73 20 74 68 65 |end("This is the| 00004b50 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 20 69 63 | Window Flags ic| 00004b60 6f 6e 2d 62 61 72 20 6d 65 6e 75 2e 22 29 0d 13 |on-bar menu.")..| 00004b70 24 0f 20 20 20 20 20 20 20 20 20 20 cb 0d 13 2e |$. ....| 00004b80 0d 20 20 20 20 20 20 20 20 cd 0d 13 38 15 20 20 |. ...8. | 00004b90 20 20 20 20 c9 20 4d 61 69 6e 4d 65 6e 75 3a 0d | . MainMenu:.| 00004ba0 13 42 57 20 20 20 20 20 20 20 20 44 69 72 65 63 |.BW Direc| 00004bb0 74 69 6f 6e 24 3d 22 72 69 67 68 74 22 3a e7 20 |tion$="right":. | 00004bc0 77 69 6d 70 3e 3d 33 31 30 20 80 20 bd 28 4d 61 |wimp>=310 . .(Ma| 00004bd0 69 6e 4d 65 6e 75 54 69 74 6c 65 3f 30 29 3d 22 |inMenuTitle?0)="| 00004be0 5c 22 20 8c 20 44 69 72 65 63 74 69 6f 6e 24 3d |\" . Direction$=| 00004bf0 22 6c 65 66 74 22 0d 13 4c 1b 20 20 20 20 20 20 |"left"..L. | 00004c00 20 20 c8 8e 20 4d 65 6e 75 48 65 6c 70 21 30 20 | .. MenuHelp!0 | 00004c10 ca 0d 13 56 61 20 20 20 20 20 20 20 20 20 20 c9 |...Va .| 00004c20 20 30 3a f2 53 65 6e 64 28 22 4d 6f 76 65 20 74 | 0:.Send("Move t| 00004c30 68 65 20 70 6f 69 6e 74 65 72 20 22 2b 44 69 72 |he pointer "+Dir| 00004c40 65 63 74 69 6f 6e 24 2b 22 20 74 6f 20 73 65 65 |ection$+" to see| 00004c50 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 61 62 6f | information abo| 00004c60 75 74 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 2e |ut Window Flags.| 00004c70 22 29 0d 13 60 1c 20 20 20 20 20 20 20 20 20 20 |")..`. | 00004c80 c9 20 31 3a e7 20 53 70 79 69 6e 67 20 8c 0d 13 |. 1:. Spying ...| 00004c90 6a 60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |j` | 00004ca0 20 20 20 20 20 f2 53 65 6e 64 28 22 43 6c 69 63 | .Send("Clic| 00004cb0 6b 20 53 45 4c 45 43 54 20 6f 72 20 41 44 4a 55 |k SELECT or ADJU| 00004cc0 53 54 20 74 6f 20 73 74 6f 70 20 73 70 79 69 6e |ST to stop spyin| 00004cd0 67 20 61 6e 64 20 77 6f 72 6b 20 6f 75 74 20 77 |g and work out w| 00004ce0 69 6e 64 6f 77 20 66 6c 61 67 73 2e 22 29 0d 13 |indow flags.")..| 00004cf0 74 16 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |t. | 00004d00 20 20 20 cc 0d 13 7e 6d 20 20 20 20 20 20 20 20 | ...~m | 00004d10 20 20 20 20 20 20 20 20 20 20 20 f2 53 65 6e 64 | .Send| 00004d20 28 22 43 6c 69 63 6b 20 53 45 4c 45 43 54 20 6f |("Click SELECT o| 00004d30 72 20 41 44 4a 55 53 54 20 74 6f 20 73 70 79 20 |r ADJUST to spy | 00004d40 6f 6e 20 77 69 6e 64 6f 77 73 20 79 6f 75 20 70 |on windows you p| 00004d50 6f 69 6e 74 20 74 6f 20 77 69 74 68 20 74 68 65 |oint to with the| 00004d60 20 6d 6f 75 73 65 20 70 6f 69 6e 74 65 72 2e 22 | mouse pointer."| 00004d70 29 0d 13 88 16 20 20 20 20 20 20 20 20 20 20 20 |).... | 00004d80 20 20 20 20 20 20 cd 0d 13 92 78 20 20 20 20 20 | ....x | 00004d90 20 20 20 20 20 c9 20 32 3a f2 53 65 6e 64 28 22 | . 2:.Send("| 00004da0 4d 6f 76 65 20 74 68 65 20 70 6f 69 6e 74 65 72 |Move the pointer| 00004db0 20 22 2b 44 69 72 65 63 74 69 6f 6e 24 2b 22 20 | "+Direction$+" | 00004dc0 74 6f 20 73 65 74 20 74 68 65 20 70 6f 73 69 74 |to set the posit| 00004dd0 69 6f 6e 20 6f 66 20 74 68 65 20 57 69 6e 64 6f |ion of the Windo| 00004de0 77 20 46 6c 61 67 73 20 77 69 6e 64 6f 77 20 6f |w Flags window o| 00004df0 6e 20 74 68 65 20 73 63 72 65 65 6e 2e 22 29 0d |n the screen.").| 00004e00 13 9c 6d 20 20 20 20 20 20 20 20 20 20 c9 20 33 |..m . 3| 00004e10 3a f2 53 65 6e 64 28 22 43 6c 69 63 6b 20 53 45 |:.Send("Click SE| 00004e20 4c 45 43 54 20 6f 72 20 41 44 4a 55 53 54 20 74 |LECT or ADJUST t| 00004e30 6f 20 73 61 76 65 20 74 68 65 20 57 69 6e 64 6f |o save the Windo| 00004e40 77 20 46 6c 61 67 73 20 77 69 6e 64 6f 77 20 70 |w Flags window p| 00004e50 6f 73 69 74 69 6f 6e 20 61 6e 64 20 73 70 79 69 |osition and spyi| 00004e60 6e 67 20 73 74 61 74 75 73 2e 22 29 0d 13 a6 3c |ng status.")...<| 00004e70 20 20 20 20 20 20 20 20 20 20 7f 20 f2 53 65 6e | . .Sen| 00004e80 64 28 22 54 68 69 73 20 69 73 20 74 68 65 20 57 |d("This is the W| 00004e90 69 6e 64 6f 77 20 46 6c 61 67 73 20 6d 61 69 6e |indow Flags main| 00004ea0 20 6d 65 6e 75 2e 22 29 0d 13 b0 0d 20 20 20 20 | menu.").... | 00004eb0 20 20 20 20 cb 0d 13 ba 09 20 20 20 20 cb 0d 13 | ..... ...| 00004ec0 c4 07 20 20 cd 0d 13 ce 05 cb 0d 13 d8 07 20 20 |.. .......... | 00004ed0 3a 0d 13 e2 0f 3f 48 65 6c 70 49 6e 66 6f 3d 30 |:....?HelpInfo=0| 00004ee0 0d 13 ec 24 42 6c 6f 63 6b 21 30 3d 28 48 65 6c |...$Block!0=(Hel| 00004ef0 70 49 6e 66 6f 2b 34 2d 42 6c 6f 63 6b 29 20 80 |pInfo+4-Block) .| 00004f00 20 ac 20 33 0d 13 f6 2a c8 99 20 22 57 69 6d 70 | . 3...*.. "Wimp| 00004f10 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 |_SendMessage",17| 00004f20 2c 42 6c 6f 63 6b 2c 42 6c 6f 63 6b 21 34 0d 14 |,Block,Block!4..| 00004f30 00 05 e1 0d 14 0a 05 3a 0d 14 14 1a dd 20 a4 4f |.......:..... .O| 00004f40 6d 6e 69 48 65 6c 70 4d 65 73 73 61 67 65 28 41 |mniHelpMessage(A| 00004f50 24 29 0d 14 1e 3c e7 20 41 24 3d 22 43 4c 49 43 |$)...<. A$="CLIC| 00004f60 4b 22 20 8c 20 3d c0 22 6f 70 65 6e 20 74 68 65 |K" . =."open the| 00004f70 20 57 69 6e 64 6f 77 20 46 6c 61 67 73 20 77 69 | Window Flags wi| 00004f80 6e 64 6f 77 2e 22 2c 37 36 29 2b bd 31 33 0d 14 |ndow.",76)+.13..| 00004f90 28 1e e7 20 41 24 3d 22 44 52 41 47 22 20 8c 20 |(.. A$="DRAG" . | 00004fa0 3d c0 22 22 2c 37 36 29 2b bd 31 33 0d 14 32 07 |=."",76)+.13..2.| 00004fb0 3d 22 22 0d 14 3c 05 3a 0d 14 46 12 dd 20 f2 53 |=""..<.:..F.. .S| 00004fc0 65 6e 64 28 54 65 78 74 24 29 0d 14 50 18 24 48 |end(Text$)..P.$H| 00004fd0 65 6c 70 49 6e 66 6f 3d 54 65 78 74 24 2b 22 7c |elpInfo=Text$+"|| 00004fe0 4d 22 0d 14 5a 18 48 65 6c 70 49 6e 66 6f 2b 3d |M"..Z.HelpInfo+=| 00004ff0 a9 28 54 65 78 74 24 29 2b 32 0d 14 64 05 e1 0d |.(Text$)+2..d...| 00005000 14 6e 05 3a 0d 14 78 16 dd 20 f2 4f 6d 6e 69 44 |.n.:..x.. .OmniD| 00005010 65 73 6b 43 61 6c 6c 69 6e 67 0d 14 82 14 e7 20 |eskCalling..... | 00005020 4f 6d 6e 69 44 65 73 6b 3d 30 20 8c 20 e1 0d 14 |OmniDesk=0 . ...| 00005030 8c 49 f4 20 54 68 69 73 20 66 69 72 73 74 20 6c |.I. This first l| 00005040 69 6e 65 20 69 73 20 66 6f 72 20 69 66 20 61 20 |ine is for if a | 00005050 62 72 6f 61 64 63 61 73 74 20 6d 65 73 73 61 67 |broadcast messag| 00005060 65 20 69 73 20 72 65 63 65 69 76 65 64 20 77 68 |e is received wh| 00005070 69 63 68 20 77 61 73 0d 14 96 41 f4 20 69 6e 74 |ich was...A. int| 00005080 65 6e 64 65 64 20 66 6f 72 20 61 20 74 72 61 6e |ended for a tran| 00005090 73 69 65 6e 74 20 63 6f 70 79 20 6f 66 20 74 68 |sient copy of th| 000050a0 65 20 75 74 69 6c 69 74 79 2e 20 41 20 73 74 61 |e utility. A sta| 000050b0 6e 64 2d 61 6c 6f 6e 65 0d 14 a0 3f f4 20 69 6e |nd-alone...?. in| 000050c0 73 74 61 6e 74 69 61 74 69 6f 6e 20 6f 66 20 74 |stantiation of t| 000050d0 68 65 20 75 74 69 6c 69 74 79 20 73 68 6f 75 6c |he utility shoul| 000050e0 64 20 69 67 6e 6f 72 65 20 73 75 63 68 20 6d 65 |d ignore such me| 000050f0 73 73 61 67 65 73 2e 0d 14 aa 11 c8 8e 20 42 6c |ssages....... Bl| 00005100 6f 63 6b 21 32 30 20 ca 0d 14 b4 2e 20 20 c9 20 |ock!20 ..... . | 00005110 34 3a f2 4f 70 65 6e 28 53 70 79 43 61 6c 63 2c |4:.Open(SpyCalc,| 00005120 b9 2c 58 50 6f 73 69 74 69 6f 6e 2c 59 50 6f 73 |.,XPosition,YPos| 00005130 69 74 69 6f 6e 29 0d 14 be 05 cb 0d 14 c8 05 e1 |ition)..........| 00005140 0d 14 d2 05 3a 0d 14 dc 11 dd 20 f2 4d 6f 64 65 |....:..... .Mode| 00005150 43 68 61 6e 67 65 0d 14 e6 12 44 6f 4d 6f 64 65 |Change....DoMode| 00005160 43 68 61 6e 67 65 3d b9 0d 14 f0 3e e7 20 4f 6d |Change=....>. Om| 00005170 6e 69 44 65 73 6b 3d 30 20 8c 20 f2 55 70 64 61 |niDesk=0 . .Upda| 00005180 74 65 49 63 6f 6e 46 6f 72 4d 6f 64 65 28 22 21 |teIconForMode("!| 00005190 57 69 6e 64 46 6c 61 67 73 22 2c 2d 32 2c 49 63 |WindFlags",-2,Ic| 000051a0 6f 6e 42 61 72 29 0d 14 fa 05 e1 0d 15 04 05 3a |onBar).........:| 000051b0 0d 15 0e 4f f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |...O. ----------| 000051c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000051f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00005200 15 18 38 f4 20 47 65 6e 65 72 61 6c 20 6e 6f 6e |..8. General non| 00005210 2d 73 70 65 63 69 66 69 63 20 75 73 65 66 75 6c |-specific useful| 00005220 20 72 6f 75 74 69 6e 65 73 20 28 6d 6f 73 74 6c | routines (mostl| 00005230 79 20 77 69 6d 70 29 0d 15 22 4f f4 20 2d 2d 2d |y wimp).."O. ---| 00005240 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00005280 2d 2d 2d 2d 2d 2d 0d 15 2c 05 3a 0d 15 36 20 dd |------..,.:..6 .| 00005290 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 57 6e 64 | .UpdateIcon(Wnd| 000052a0 77 2c 49 63 6e 2c 54 78 74 24 29 0d 15 40 3a 42 |w,Icn,Txt$)..@:B| 000052b0 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 |lock!0=Wndw:Bloc| 000052c0 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 |k!4=Icn:.. "Wimp| 000052d0 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 000052e0 42 6c 6f 63 6b 0d 15 4a 1c e7 20 a9 28 54 78 74 |Block..J.. .(Txt| 000052f0 24 29 3e 28 42 6c 6f 63 6b 21 33 36 29 2d 31 20 |$)>(Block!36)-1 | 00005300 8c 0d 15 54 26 20 20 e7 20 28 28 42 6c 6f 63 6b |...T& . ((Block| 00005310 21 32 34 29 20 80 20 28 31 3c 3c 39 29 29 3d 28 |!24) . (1<<9))=(| 00005320 31 3c 3c 39 29 20 8c 0d 15 5e 19 20 20 20 20 f4 |1<<9) ...^. .| 00005330 20 52 69 67 68 74 2d 6a 75 73 74 69 66 69 65 64 | Right-justified| 00005340 0d 15 68 24 20 20 20 20 54 78 74 24 3d 22 88 22 |..h$ Txt$="."| 00005350 2b c2 54 78 74 24 2c 28 42 6c 6f 63 6b 21 33 36 |+.Txt$,(Block!36| 00005360 29 2d 32 29 0d 15 72 07 20 20 cc 0d 15 7c 23 20 |)-2)..r. ...|# | 00005370 20 20 20 f4 20 4c 65 66 74 2d 6a 75 73 74 69 66 | . Left-justif| 00005380 69 65 64 20 6f 72 20 63 65 6e 74 72 65 64 0d 15 |ied or centred..| 00005390 86 2b 20 20 20 20 54 78 74 24 3d c0 54 78 74 24 |.+ Txt$=.Txt$| 000053a0 2c 28 42 6c 6f 63 6b 21 33 36 29 2d 31 29 3a c2 |,(Block!36)-1):.| 000053b0 54 78 74 24 29 3d 22 89 22 0d 15 90 07 20 20 cd |Txt$)=".".... .| 000053c0 0d 15 9a 05 cd 0d 15 a4 46 f4 20 5e 20 45 6e 73 |........F. ^ Ens| 000053d0 75 72 65 73 20 74 68 65 20 74 65 78 74 20 63 61 |ures the text ca| 000053e0 6e 27 74 20 6f 76 65 72 66 6c 6f 77 20 74 68 65 |n't overflow the| 000053f0 20 6d 61 78 69 6d 75 6d 20 73 70 61 63 65 20 69 | maximum space i| 00005400 6e 20 74 68 65 20 69 63 6f 6e 2e 0d 15 ae 19 e7 |n the icon......| 00005410 20 24 28 42 6c 6f 63 6b 21 32 38 29 3c 3e 54 78 | $(Block!28)<>Tx| 00005420 74 24 20 8c 0d 15 b8 2b 20 20 24 28 42 6c 6f 63 |t$ ....+ $(Bloc| 00005430 6b 21 32 38 29 3d 54 78 74 24 3a 42 6c 6f 63 6b |k!28)=Txt$:Block| 00005440 21 38 3d 30 3a 42 6c 6f 63 6b 21 31 32 3d 30 0d |!8=0:Block!12=0.| 00005450 15 c2 23 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 |..# .. "Wimp_Se| 00005460 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f |tIconState",,Blo| 00005470 63 6b 0d 15 cc 05 cd 0d 15 d6 25 c8 99 20 22 57 |ck........%.. "W| 00005480 69 6d 70 5f 47 65 74 43 61 72 65 74 50 6f 73 69 |imp_GetCaretPosi| 00005490 74 69 6f 6e 22 2c 2c 42 6c 6f 63 6b 0d 15 e0 22 |tion",,Block..."| 000054a0 e7 20 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 20 80 |. Block!0=Wndw .| 000054b0 20 42 6c 6f 63 6b 21 34 3d 49 63 6e 20 8c 0d 15 | Block!4=Icn ...| 000054c0 ea 3c 20 20 f4 20 49 66 20 74 68 69 73 20 69 63 |.< . If this ic| 000054d0 6f 6e 20 6f 77 6e 73 20 74 68 65 20 63 61 72 65 |on owns the care| 000054e0 74 2c 20 74 68 65 6e 20 70 75 74 20 69 74 20 61 |t, then put it a| 000054f0 74 20 74 68 65 20 65 6e 64 2e 0d 15 f4 38 20 20 |t the end....8 | 00005500 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 65 |.. "Wimp_SetCare| 00005510 74 50 6f 73 69 74 69 6f 6e 22 2c 57 6e 64 77 2c |tPosition",Wndw,| 00005520 49 63 6e 2c 30 2c 30 2c 2d 31 2c a9 28 54 78 74 |Icn,0,0,-1,.(Txt| 00005530 24 29 0d 15 fe 05 cd 0d 16 08 05 e1 0d 16 12 05 |$)..............| 00005540 3a 0d 16 1c 2b dd 20 f2 55 70 64 61 74 65 49 63 |:...+. .UpdateIc| 00005550 6f 6e 43 6f 6c 6f 75 72 28 57 6e 64 77 2c 49 63 |onColour(Wndw,Ic| 00005560 6e 2c 46 43 6f 6c 2c 42 43 6f 6c 29 0d 16 26 1e |n,FCol,BCol)..&.| 00005570 f4 20 43 68 61 6e 67 65 20 61 6e 20 69 63 6f 6e |. Change an icon| 00005580 27 73 20 63 6f 6c 6f 75 72 73 0d 16 30 3a 42 6c |'s colours..0:Bl| 00005590 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 6b |ock!0=Wndw:Block| 000055a0 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 5f |!4=Icn:.. "Wimp_| 000055b0 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 |GetIconState",,B| 000055c0 6c 6f 63 6b 0d 16 3a 3b e7 20 28 28 28 42 6c 6f |lock..:;. (((Blo| 000055d0 63 6b 3f 32 37 29 3e 3e 34 29 3d 42 43 6f 6c 29 |ck?27)>>4)=BCol)| 000055e0 20 80 20 28 28 28 42 6c 6f 63 6b 3f 32 37 29 20 | . (((Block?27) | 000055f0 83 20 31 36 29 3d 46 43 6f 6c 29 20 8c 20 e1 0d |. 16)=FCol) . ..| 00005600 16 44 27 20 20 f4 20 5e 20 53 61 6d 65 20 63 6f |.D' . ^ Same co| 00005610 6c 6f 75 72 2c 20 73 6f 20 64 6f 6e 27 74 20 63 |lour, so don't c| 00005620 68 61 6e 67 65 2e 0d 16 4e 3a 42 6c 6f 63 6b 21 |hange...N:Block!| 00005630 31 32 3d 28 25 31 31 31 31 31 31 31 31 3c 3c 32 |12=(%11111111<<2| 00005640 34 29 3a 42 6c 6f 63 6b 21 38 3d 28 42 43 6f 6c |4):Block!8=(BCol| 00005650 3c 3c 32 38 29 2b 28 46 43 6f 6c 3c 3c 32 34 29 |<<28)+(FCol<<24)| 00005660 0d 16 58 21 c8 99 20 22 57 69 6d 70 5f 53 65 74 |..X!.. "Wimp_Set| 00005670 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 |IconState",,Bloc| 00005680 6b 0d 16 62 05 e1 0d 16 6c 05 3a 0d 16 76 29 dd |k..b....l.:..v).| 00005690 20 f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 | .UpdateSelected| 000056a0 46 6c 61 67 28 57 6e 64 77 2c 49 63 6e 2c 53 74 |Flag(Wndw,Icn,St| 000056b0 61 74 65 29 0d 16 80 31 f4 20 55 73 65 20 53 74 |ate)...1. Use St| 000056c0 61 74 65 3d 54 52 55 45 20 74 6f 20 6d 61 6b 65 |ate=TRUE to make| 000056d0 20 69 63 6f 6e 20 62 65 63 6f 6d 65 20 73 65 6c | icon become sel| 000056e0 65 63 74 65 64 0d 16 8a 3a 42 6c 6f 63 6b 21 30 |ected...:Block!0| 000056f0 3d 57 6e 64 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 |=Wndw:Block!4=Ic| 00005700 6e 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |n:.. "Wimp_GetIc| 00005710 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d |onState",,Block.| 00005720 16 94 2f e7 20 28 28 42 6c 6f 63 6b 21 32 34 29 |../. ((Block!24)| 00005730 20 80 20 28 31 3c 3c 32 31 29 29 3d 28 28 2d 53 | . (1<<21))=((-S| 00005740 74 61 74 65 29 3c 3c 32 31 29 20 8c 20 e1 0d 16 |tate)<<21) . ...| 00005750 9e 40 42 6c 6f 63 6b 21 31 32 3d 28 31 3c 3c 32 |.@Block!12=(1<<2| 00005760 31 29 3a e7 20 53 74 61 74 65 20 8c 20 42 6c 6f |1):. State . Blo| 00005770 63 6b 21 38 3d 28 31 3c 3c 32 31 29 20 8b 20 42 |ck!8=(1<<21) . B| 00005780 6c 6f 63 6b 21 38 3d 28 30 3c 3c 32 31 29 0d 16 |lock!8=(0<<21)..| 00005790 a8 21 c8 99 20 22 57 69 6d 70 5f 53 65 74 49 63 |.!.. "Wimp_SetIc| 000057a0 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d |onState",,Block.| 000057b0 16 b2 05 e1 0d 16 bc 05 3a 0d 16 c6 27 dd 20 f2 |........:...'. .| 000057c0 55 70 64 61 74 65 53 68 61 64 65 64 46 6c 61 67 |UpdateShadedFlag| 000057d0 28 57 6e 64 77 2c 49 63 6e 2c 53 74 61 74 65 29 |(Wndw,Icn,State)| 000057e0 0d 16 d0 2f f4 20 55 73 65 20 53 74 61 74 65 3d |.../. Use State=| 000057f0 54 52 55 45 20 74 6f 20 6d 61 6b 65 20 69 63 6f |TRUE to make ico| 00005800 6e 20 62 65 63 6f 6d 65 20 73 68 61 64 65 64 0d |n become shaded.| 00005810 16 da 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a |..:Block!0=Wndw:| 00005820 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 22 |Block!4=Icn:.. "| 00005830 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 |Wimp_GetIconStat| 00005840 65 22 2c 2c 42 6c 6f 63 6b 0d 16 e4 2f e7 20 28 |e",,Block.../. (| 00005850 28 42 6c 6f 63 6b 21 32 34 29 20 80 20 28 31 3c |(Block!24) . (1<| 00005860 3c 32 32 29 29 3d 28 28 2d 53 74 61 74 65 29 3c |<22))=((-State)<| 00005870 3c 32 32 29 20 8c 20 e1 0d 16 ee 40 42 6c 6f 63 |<22) . ....@Bloc| 00005880 6b 21 31 32 3d 28 31 3c 3c 32 32 29 3a e7 20 53 |k!12=(1<<22):. S| 00005890 74 61 74 65 20 8c 20 42 6c 6f 63 6b 21 38 3d 28 |tate . Block!8=(| 000058a0 31 3c 3c 32 32 29 20 8b 20 42 6c 6f 63 6b 21 38 |1<<22) . Block!8| 000058b0 3d 28 30 3c 3c 32 32 29 0d 16 f8 21 c8 99 20 22 |=(0<<22)...!.. "| 000058c0 57 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 |Wimp_SetIconStat| 000058d0 65 22 2c 2c 42 6c 6f 63 6b 0d 17 02 05 e1 0d 17 |e",,Block.......| 000058e0 0c 05 3a 0d 17 16 1e dd 20 a4 53 65 6c 65 63 74 |..:..... .Select| 000058f0 65 64 53 74 61 74 65 28 57 6e 64 77 2c 49 63 6e |edState(Wndw,Icn| 00005900 29 0d 17 20 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 |).. :Block!0=Wnd| 00005910 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 |w:Block!4=Icn:..| 00005920 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 | "Wimp_GetIconSt| 00005930 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 17 2a 29 e7 |ate",,Block..*).| 00005940 20 28 28 42 6c 6f 63 6b 21 32 34 29 20 80 20 28 | ((Block!24) . (| 00005950 31 3c 3c 32 31 29 29 3d 28 31 3c 3c 32 31 29 20 |1<<21))=(1<<21) | 00005960 8c 20 3d b9 0d 17 34 06 3d a3 0d 17 3e 05 3a 0d |. =...4.=...>.:.| 00005970 17 48 1c dd 20 a4 53 68 61 64 65 64 53 74 61 74 |.H.. .ShadedStat| 00005980 65 28 57 6e 64 77 2c 49 63 6e 29 0d 17 52 3a 42 |e(Wndw,Icn)..R:B| 00005990 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c 6f 63 |lock!0=Wndw:Bloc| 000059a0 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 6d 70 |k!4=Icn:.. "Wimp| 000059b0 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_GetIconState",,| 000059c0 42 6c 6f 63 6b 0d 17 5c 29 e7 20 28 28 42 6c 6f |Block..\). ((Blo| 000059d0 63 6b 21 32 34 29 20 80 20 28 31 3c 3c 32 32 29 |ck!24) . (1<<22)| 000059e0 29 3d 28 31 3c 3c 32 32 29 20 8c 20 3d b9 0d 17 |)=(1<<22) . =...| 000059f0 66 06 3d a3 0d 17 70 05 3a 0d 17 7a 16 dd 20 a4 |f.=...p.:..z.. .| 00005a00 4f 70 65 6e 53 74 61 74 65 28 57 6e 64 77 29 0d |OpenState(Wndw).| 00005a10 17 84 35 f4 20 52 65 74 75 72 6e 73 20 54 52 55 |..5. Returns TRU| 00005a20 45 20 69 66 20 77 69 6e 64 6f 77 20 69 73 20 6f |E if window is o| 00005a30 70 65 6e 3b 20 66 61 6c 73 65 20 6f 74 68 65 72 |pen; false other| 00005a40 77 69 73 65 0d 17 8e 30 42 6c 6f 63 6b 21 30 3d |wise...0Block!0=| 00005a50 57 6e 64 77 3a c8 99 20 22 57 69 6d 70 5f 47 65 |Wndw:.. "Wimp_Ge| 00005a60 74 57 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 42 |tWindowState",,B| 00005a70 6c 6f 63 6b 0d 17 98 29 e7 20 28 28 42 6c 6f 63 |lock...). ((Bloc| 00005a80 6b 21 33 32 29 20 80 20 28 31 3c 3c 31 36 29 29 |k!32) . (1<<16))| 00005a90 3d 28 31 3c 3c 31 36 29 20 8c 20 3d b9 0d 17 a2 |=(1<<16) . =....| 00005aa0 06 3d a3 0d 17 ac 05 3a 0d 17 b6 21 dd 20 f2 53 |.=.....:...!. .S| 00005ab0 68 61 64 65 4d 65 6e 75 28 4d 65 6e 75 2c 49 74 |hadeMenu(Menu,It| 00005ac0 65 6d 2c 53 74 61 74 65 29 0d 17 c0 50 21 28 4d |em,State)...P!(M| 00005ad0 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 |enu+28+(24*Item)| 00005ae0 2b 38 29 3d 28 21 28 4d 65 6e 75 2b 32 38 2b 28 |+8)=(!(Menu+28+(| 00005af0 32 34 2a 49 74 65 6d 29 2b 38 29 20 80 20 ac 20 |24*Item)+8) . . | 00005b00 28 31 3c 3c 32 32 29 29 20 82 20 28 28 2d 53 74 |(1<<22)) . ((-St| 00005b10 61 74 65 29 3c 3c 32 32 29 0d 17 ca 05 e1 0d 17 |ate)<<22).......| 00005b20 d4 05 3a 0d 17 de 20 dd 20 f2 54 69 63 6b 4d 65 |..:... . .TickMe| 00005b30 6e 75 28 4d 65 6e 75 2c 49 74 65 6d 2c 53 74 61 |nu(Menu,Item,Sta| 00005b40 74 65 29 0d 17 e8 40 21 28 4d 65 6e 75 2b 32 38 |te)...@!(Menu+28| 00005b50 2b 28 32 34 2a 49 74 65 6d 29 29 3d 28 21 28 4d |+(24*Item))=(!(M| 00005b60 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 |enu+28+(24*Item)| 00005b70 29 20 80 20 ac 20 31 29 20 82 20 28 2d 53 74 61 |) . . 1) . (-Sta| 00005b80 74 65 29 0d 17 f2 05 e1 0d 17 fc 05 3a 0d 18 06 |te).........:...| 00005b90 1c dd 20 a4 4d 65 6e 75 53 68 61 64 65 64 28 4d |.. .MenuShaded(M| 00005ba0 65 6e 75 2c 49 74 65 6d 29 0d 18 10 35 e7 20 28 |enu,Item)...5. (| 00005bb0 21 28 4d 65 6e 75 2b 32 38 2b 28 32 34 2a 49 74 |!(Menu+28+(24*It| 00005bc0 65 6d 29 2b 38 29 20 80 20 28 31 3c 3c 32 32 29 |em)+8) . (1<<22)| 00005bd0 29 3d 28 31 3c 3c 32 32 29 20 8c 20 3d b9 0d 18 |)=(1<<22) . =...| 00005be0 1a 06 3d a3 0d 18 24 05 3a 0d 18 2e 1c dd 20 a4 |..=...$.:..... .| 00005bf0 4d 65 6e 75 54 69 63 6b 65 64 28 4d 65 6e 75 2c |MenuTicked(Menu,| 00005c00 49 74 65 6d 29 0d 18 38 27 e7 20 28 21 28 4d 65 |Item)..8'. (!(Me| 00005c10 6e 75 2b 32 38 2b 28 32 34 2a 49 74 65 6d 29 29 |nu+28+(24*Item))| 00005c20 20 80 20 31 29 3d 31 20 8c 20 3d b9 0d 18 42 06 | . 1)=1 . =...B.| 00005c30 3d a3 0d 18 4c 05 3a 0d 18 56 19 dd 20 a4 52 65 |=...L.:..V.. .Re| 00005c40 61 64 49 63 6f 6e 28 57 6e 64 77 2c 49 63 6e 29 |adIcon(Wndw,Icn)| 00005c50 0d 18 60 20 f4 20 52 65 61 64 20 6e 75 6d 65 72 |..` . Read numer| 00005c60 69 63 20 76 61 6c 75 65 20 6f 66 20 69 63 6f 6e |ic value of icon| 00005c70 0d 18 6a 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 |..j:Block!0=Wndw| 00005c80 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 |:Block!4=Icn:.. | 00005c90 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 |"Wimp_GetIconSta| 00005ca0 74 65 22 2c 2c 42 6c 6f 63 6b 0d 18 74 13 3d bb |te",,Block..t.=.| 00005cb0 28 24 28 42 6c 6f 63 6b 21 32 38 29 29 0d 18 7e |($(Block!28))..~| 00005cc0 05 3a 0d 18 88 1c dd 20 a4 52 65 61 64 49 63 6f |.:..... .ReadIco| 00005cd0 6e 53 74 72 28 57 6e 64 77 2c 49 63 6e 29 0d 18 |nStr(Wndw,Icn)..| 00005ce0 92 1f f4 20 52 65 61 64 20 73 74 72 69 6e 67 20 |... Read string | 00005cf0 76 61 6c 75 65 20 6f 66 20 69 63 6f 6e 0d 18 9c |value of icon...| 00005d00 3a 42 6c 6f 63 6b 21 30 3d 57 6e 64 77 3a 42 6c |:Block!0=Wndw:Bl| 00005d10 6f 63 6b 21 34 3d 49 63 6e 3a c8 99 20 22 57 69 |ock!4=Icn:.. "Wi| 00005d20 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_GetIconState"| 00005d30 2c 2c 42 6c 6f 63 6b 0d 18 a6 10 3d 24 28 42 6c |,,Block....=$(Bl| 00005d40 6f 63 6b 21 32 38 29 0d 18 b0 05 3a 0d 18 ba 1a |ock!28)....:....| 00005d50 dd 20 a4 4d 6f 64 65 49 6e 66 6f 28 76 61 72 24 |. .ModeInfo(var$| 00005d60 2c 6d 6f 64 65 29 0d 18 c4 29 f4 20 55 73 65 20 |,mode)...). Use | 00005d70 6d 6f 64 65 3d 2d 31 20 66 6f 72 20 63 75 72 72 |mode=-1 for curr| 00005d80 65 6e 74 20 73 63 72 65 65 6e 20 6d 6f 64 65 0d |ent screen mode.| 00005d90 18 ce 0d c8 8e 20 76 61 72 24 20 ca 0d 18 d8 3a |..... var$ ....:| 00005da0 20 20 c9 20 22 58 50 69 78 65 6c 73 22 3a c8 99 | . "XPixels":..| 00005db0 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 | "OS_ReadModeVar| 00005dc0 69 61 62 6c 65 22 2c 6d 6f 64 65 2c 31 31 20 b8 |iable",mode,11 .| 00005dd0 20 2c 2c 76 61 72 0d 18 e2 3a 20 20 c9 20 22 59 | ,,var...: . "Y| 00005de0 50 69 78 65 6c 73 22 3a c8 99 20 22 4f 53 5f 52 |Pixels":.. "OS_R| 00005df0 65 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 |eadModeVariable"| 00005e00 2c 6d 6f 64 65 2c 31 32 20 b8 20 2c 2c 76 61 72 |,mode,12 . ,,var| 00005e10 0d 18 ec 36 20 20 c9 20 22 4e 43 6f 6c 22 3a c8 |...6 . "NCol":.| 00005e20 99 20 22 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 |. "OS_ReadModeVa| 00005e30 72 69 61 62 6c 65 22 2c 6d 6f 64 65 2c 33 20 b8 |riable",mode,3 .| 00005e40 20 2c 2c 76 61 72 0d 18 f6 3c 20 20 c9 20 22 58 | ,,var...< . "X| 00005e50 45 69 67 46 61 63 74 6f 72 22 3a c8 99 20 22 4f |EigFactor":.. "O| 00005e60 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 |S_ReadModeVariab| 00005e70 6c 65 22 2c 6d 6f 64 65 2c 34 20 b8 20 2c 2c 76 |le",mode,4 . ,,v| 00005e80 61 72 0d 19 00 3c 20 20 c9 20 22 59 45 69 67 46 |ar...< . "YEigF| 00005e90 61 63 74 6f 72 22 3a c8 99 20 22 4f 53 5f 52 65 |actor":.. "OS_Re| 00005ea0 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 2c |adModeVariable",| 00005eb0 6d 6f 64 65 2c 35 20 b8 20 2c 2c 76 61 72 0d 19 |mode,5 . ,,var..| 00005ec0 0a 3f 20 20 c9 20 22 42 50 50 22 3a c8 99 20 22 |.? . "BPP":.. "| 00005ed0 4f 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 |OS_ReadModeVaria| 00005ee0 62 6c 65 22 2c 6d 6f 64 65 2c 39 20 b8 20 2c 2c |ble",mode,9 . ,,| 00005ef0 76 61 72 3a 76 61 72 3d 32 5e 76 61 72 0d 19 14 |var:var=2^var...| 00005f00 36 20 20 7f 20 76 61 72 3d 2d 31 3a f4 20 46 61 |6 . var=-1:. Fa| 00005f10 6c 6c 2d 74 68 72 6f 75 67 68 20 66 6f 72 20 61 |ll-through for a| 00005f20 20 66 61 75 6c 74 79 20 69 6e 70 75 74 20 76 61 | faulty input va| 00005f30 6c 75 65 0d 19 1e 05 cb 0d 19 28 08 3d 76 61 72 |lue.......(.=var| 00005f40 0d 19 32 05 3a 0d 19 3c 2b dd 20 f2 55 70 64 61 |..2.:..<+. .Upda| 00005f50 74 65 49 63 6f 6e 46 6f 72 4d 6f 64 65 28 41 70 |teIconForMode(Ap| 00005f60 70 6e 61 6d 65 24 2c 57 6e 64 77 2c 49 63 6e 29 |pname$,Wndw,Icn)| 00005f70 0d 19 46 4e f4 20 54 68 69 73 20 70 72 6f 63 65 |..FN. This proce| 00005f80 64 75 72 65 20 72 65 71 75 69 72 65 73 20 74 68 |dure requires th| 00005f90 61 74 20 41 4c 4c 20 74 68 65 20 69 63 6f 6e 20 |at ALL the icon | 00005fa0 73 70 72 69 74 65 73 20 61 72 65 20 64 65 66 69 |sprites are defi| 00005fb0 6e 65 64 20 69 6e 20 6d 6f 64 65 20 32 30 0d 19 |ned in mode 20..| 00005fc0 50 4e f4 20 6f 72 20 6d 6f 64 65 20 32 37 20 28 |PN. or mode 27 (| 00005fd0 77 68 69 63 68 20 69 73 20 65 71 75 69 76 61 6c |which is equival| 00005fe0 65 6e 74 29 20 77 69 74 68 20 61 20 6d 61 73 6b |ent) with a mask| 00005ff0 20 62 75 74 20 6e 6f 20 70 61 6c 65 74 74 65 2e | but no palette.| 00006000 20 54 68 65 79 20 73 68 6f 75 6c 64 0d 19 5a 4e | They should..ZN| 00006010 f4 20 73 74 69 6c 6c 20 61 70 70 65 61 72 20 74 |. still appear t| 00006020 6f 20 68 61 76 65 20 74 68 65 20 65 78 70 65 63 |o have the expec| 00006030 74 65 64 20 72 65 73 6f 6c 75 74 69 6f 6e 73 20 |ted resolutions | 00006040 61 6e 64 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f |and number of co| 00006050 6c 6f 75 72 73 2c 20 69 2e 65 0d 19 64 4e f4 20 |lours, i.e..dN. | 00006060 21 53 70 72 69 74 65 73 32 33 3a 20 74 77 6f 20 |!Sprites23: two | 00006070 63 6f 6c 6f 75 72 73 2c 20 68 69 67 68 20 72 65 |colours, high re| 00006080 73 6f 6c 75 74 69 6f 6e 2c 20 21 53 70 72 69 74 |solution, !Sprit| 00006090 65 73 20 28 61 63 74 75 61 6c 6c 79 20 21 53 70 |es (actually !Sp| 000060a0 72 69 74 65 73 32 34 29 0d 19 6e 4c f4 20 61 74 |rites24)..nL. at| 000060b0 20 6d 6f 64 65 20 31 32 20 72 65 73 6f 6c 75 74 | mode 12 resolut| 000060c0 69 6f 6e 20 28 64 6f 75 62 6c 65 20 68 65 69 67 |ion (double heig| 000060d0 68 74 20 70 69 78 65 6c 73 29 20 69 6e 20 31 36 |ht pixels) in 16| 000060e0 20 63 6f 6c 6f 75 72 73 2c 20 61 6e 64 20 6e 6f | colours, and no| 000060f0 72 6d 61 6c 0d 19 78 4c f4 20 6d 6f 64 65 20 32 |rmal..xL. mode 2| 00006100 30 20 72 65 73 6f 6c 75 74 69 6f 6e 2c 20 31 36 |0 resolution, 16| 00006110 20 63 6f 6c 6f 75 72 73 20 66 6f 72 20 74 68 65 | colours for the| 00006120 20 21 53 70 72 69 74 65 73 32 32 20 69 63 6f 6e | !Sprites22 icon| 00006130 2e 20 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 |. If this is not| 00006140 0d 19 82 49 f4 20 61 64 68 65 72 65 64 20 74 6f |...I. adhered to| 00006150 2c 20 74 68 65 6e 20 6d 65 6d 6f 72 79 20 73 68 |, then memory sh| 00006160 6f 72 74 61 67 65 20 65 72 72 6f 72 73 20 6d 61 |ortage errors ma| 00006170 79 20 6f 63 63 75 72 20 6f 6e 20 61 20 6d 6f 64 |y occur on a mod| 00006180 65 20 63 68 61 6e 67 65 2e 0d 19 8c 13 45 78 74 |e change.....Ext| 00006190 65 6e 73 69 6f 6e 24 3d 22 32 34 22 0d 19 96 24 |ension$="24"...$| 000061a0 e7 20 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 |. .ModeInfo("YEi| 000061b0 67 46 61 63 74 6f 72 22 2c 2d 31 29 3c 32 20 8c |gFactor",-1)<2 .| 000061c0 0d 19 a0 20 20 20 e7 20 a4 4d 6f 64 65 49 6e 66 |... . .ModeInf| 000061d0 6f 28 22 4e 43 6f 6c 22 2c 2d 31 29 3e 32 20 8c |o("NCol",-1)>2 .| 000061e0 0d 19 aa 17 20 20 20 20 45 78 74 65 6e 73 69 6f |.... Extensio| 000061f0 6e 24 3d 22 32 32 22 0d 19 b4 07 20 20 cc 0d 19 |n$="22".... ...| 00006200 be 17 20 20 20 20 45 78 74 65 6e 73 69 6f 6e 24 |.. Extension$| 00006210 3d 22 32 33 22 0d 19 c8 07 20 20 cd 0d 19 d2 05 |="23".... .....| 00006220 cd 0d 19 dc 2a c8 99 20 22 57 69 6d 70 5f 42 61 |....*.. "Wimp_Ba| 00006230 73 65 4f 66 53 70 72 69 74 65 73 22 20 b8 20 2c |seOfSprites" . ,| 00006240 69 63 6f 6e 73 70 72 69 74 65 25 0d 19 e6 45 c8 |iconsprite%...E.| 00006250 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 00006260 32 35 36 2b 32 35 2c 69 63 6f 6e 73 70 72 69 74 |256+25,iconsprit| 00006270 65 25 2c 41 70 70 6e 61 6d 65 24 3a f4 20 44 65 |e%,Appname$:. De| 00006280 6c 65 74 65 20 69 63 6f 6e 20 73 70 72 69 74 65 |lete icon sprite| 00006290 0d 19 f0 3d f4 20 54 68 65 20 66 6f 6c 6c 6f 77 |...=. The follow| 000062a0 69 6e 67 20 74 68 72 65 65 20 6c 69 6e 65 73 20 |ing three lines | 000062b0 61 73 73 75 6d 65 20 61 20 6d 61 73 6b 20 62 75 |assume a mask bu| 000062c0 74 20 6e 6f 20 70 61 6c 65 74 74 65 3a 0d 19 fa |t no palette:...| 000062d0 62 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |b.. "OS_SpriteOp| 000062e0 22 2c 32 35 36 2b 34 30 2c 53 70 72 69 74 65 73 |",256+40,Sprites| 000062f0 2c 41 70 70 6e 61 6d 65 24 2b 45 78 74 65 6e 73 |,Appname$+Extens| 00006300 69 6f 6e 24 20 b8 20 2c 2c 2c 77 2c 68 2c 2c 6d |ion$ . ,,,w,h,,m| 00006310 6f 64 65 3a f4 20 47 65 74 20 69 6e 66 6f 20 61 |ode:. Get info a| 00006320 62 6f 75 74 20 6e 65 77 20 73 70 72 69 74 65 0d |bout new sprite.| 00006330 1a 04 5c c8 99 20 22 4f 53 5f 53 70 72 69 74 65 |..\.. "OS_Sprite| 00006340 4f 70 22 2c 32 35 36 2b 31 35 2c 69 63 6f 6e 73 |Op",256+15,icons| 00006350 70 72 69 74 65 25 2c 41 70 70 6e 61 6d 65 24 2c |prite%,Appname$,| 00006360 30 2c 77 2c 68 2c 6d 6f 64 65 3a f4 20 43 72 65 |0,w,h,mode:. Cre| 00006370 61 74 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 20 |ate replacement | 00006380 69 63 6f 6e 20 73 70 72 69 74 65 0d 1a 0e 3e c8 |icon sprite...>.| 00006390 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c |. "OS_SpriteOp",| 000063a0 32 35 36 2b 32 39 2c 69 63 6f 6e 73 70 72 69 74 |256+29,iconsprit| 000063b0 65 25 2c 41 70 70 6e 61 6d 65 24 3a f4 20 43 72 |e%,Appname$:. Cr| 000063c0 65 61 74 65 20 6d 61 73 6b 0d 1a 18 07 20 20 3a |eate mask.... :| 000063d0 0d 1a 22 2d f4 20 50 61 69 6e 74 20 73 70 72 69 |.."-. Paint spri| 000063e0 74 65 20 6d 61 73 6b 20 69 6e 74 6f 20 69 63 6f |te mask into ico| 000063f0 6e 73 70 72 69 74 65 20 6d 61 73 6b 3a 0d 1a 2c |nsprite mask:..,| 00006400 51 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |Q.. "OS_SpriteOp| 00006410 22 2c 32 35 36 2b 36 31 2c 69 63 6f 6e 73 70 72 |",256+61,iconspr| 00006420 69 74 65 25 2c 41 70 70 6e 61 6d 65 24 2c 30 20 |ite%,Appname$,0 | 00006430 b8 20 72 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 |. r0,r1,r2,r3:. | 00006440 4f 75 74 70 75 74 20 74 6f 20 6d 61 73 6b 0d 1a |Output to mask..| 00006450 36 55 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f |6U.. "OS_SpriteO| 00006460 70 22 2c 32 35 36 2b 34 39 2c 53 70 72 69 74 65 |p",256+49,Sprite| 00006470 73 2c 41 70 70 6e 61 6d 65 24 2b 45 78 74 65 6e |s,Appname$+Exten| 00006480 73 69 6f 6e 24 2c 30 2c 30 3a f4 20 50 61 69 6e |sion$,0,0:. Pain| 00006490 74 20 6d 61 73 6b 20 66 72 6f 6d 20 53 70 72 69 |t mask from Spri| 000064a0 74 65 73 0d 1a 40 37 e6 20 34 2c 31 32 38 3a da |tes..@7. 4,128:.| 000064b0 3a f4 20 49 6e 76 65 72 74 20 74 6f 20 6d 61 6b |:. Invert to mak| 000064c0 65 20 6d 61 73 6b 20 74 68 65 20 72 69 67 68 74 |e mask the right| 000064d0 20 77 61 79 20 72 6f 75 6e 64 0d 1a 4a 36 c8 99 | way round..J6..| 000064e0 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 72 | "OS_SpriteOp",r| 000064f0 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 52 65 73 |0,r1,r2,r3:. Res| 00006500 65 74 20 73 63 72 65 65 6e 20 6f 75 74 70 75 74 |et screen output| 00006510 0d 1a 54 07 20 20 3a 0d 1a 5e 23 f4 20 50 61 69 |..T. :..^#. Pai| 00006520 6e 74 20 73 70 72 69 74 65 20 69 6e 74 6f 20 69 |nt sprite into i| 00006530 63 6f 6e 73 70 72 69 74 65 3a 0d 1a 68 5c c8 99 |consprite:..h\..| 00006540 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 32 | "OS_SpriteOp",2| 00006550 35 36 2b 36 30 2c 69 63 6f 6e 73 70 72 69 74 65 |56+60,iconsprite| 00006560 25 2c 41 70 70 6e 61 6d 65 24 2c 30 20 b8 20 72 |%,Appname$,0 . r| 00006570 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 4f 75 74 |0,r1,r2,r3:. Out| 00006580 70 75 74 20 74 6f 20 6e 65 77 20 69 63 6f 6e 20 |put to new icon | 00006590 73 70 72 69 74 65 0d 1a 72 57 c8 99 20 22 4f 53 |sprite..rW.. "OS| 000065a0 5f 53 70 72 69 74 65 4f 70 22 2c 32 35 36 2b 33 |_SpriteOp",256+3| 000065b0 34 2c 53 70 72 69 74 65 73 2c 41 70 70 6e 61 6d |4,Sprites,Appnam| 000065c0 65 24 2b 45 78 74 65 6e 73 69 6f 6e 24 2c 30 2c |e$+Extension$,0,| 000065d0 30 2c 38 3a f4 20 50 61 69 6e 74 20 63 6f 70 79 |0,8:. Paint copy| 000065e0 20 66 72 6f 6d 20 53 70 72 69 74 65 73 0d 1a 7c | from Sprites..|| 000065f0 36 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 |6.. "OS_SpriteOp| 00006600 22 2c 72 30 2c 72 31 2c 72 32 2c 72 33 3a f4 20 |",r0,r1,r2,r3:. | 00006610 52 65 73 65 74 20 73 63 72 65 65 6e 20 6f 75 74 |Reset screen out| 00006620 70 75 74 0d 1a 86 3a 42 6c 6f 63 6b 21 30 3d 57 |put...:Block!0=W| 00006630 6e 64 77 3a 42 6c 6f 63 6b 21 34 3d 49 63 6e 3a |ndw:Block!4=Icn:| 00006640 c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 6f 6e |.. "Wimp_GetIcon| 00006650 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 1a 90 |State",,Block...| 00006660 45 42 6c 6f 63 6b 21 38 3d 30 3a 42 6c 6f 63 6b |EBlock!8=0:Block| 00006670 21 31 32 3d 30 3a c8 99 20 22 57 69 6d 70 5f 53 |!12=0:.. "Wimp_S| 00006680 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c |etIconState",,Bl| 00006690 6f 63 6b 3a f4 20 52 65 2d 70 6c 6f 74 20 69 63 |ock:. Re-plot ic| 000066a0 6f 6e 0d 1a 9a 05 e1 0d 1a a4 05 3a 0d 1a ae d8 |on.........:....| 000066b0 dd 20 a4 43 72 65 61 74 65 57 69 6e 64 6f 77 28 |. .CreateWindow(| 000066c0 6d 69 6e 58 2c 6d 69 6e 59 2c 6d 61 78 58 2c 6d |minX,minY,maxX,m| 000066d0 61 78 59 2c 58 6f 66 66 73 65 74 2c 59 6f 66 66 |axY,Xoffset,Yoff| 000066e0 73 65 74 2c 48 61 6e 64 6c 65 2c 46 6c 61 67 73 |set,Handle,Flags| 000066f0 2c 54 69 74 6c 65 43 6f 6c 2c 54 69 74 6c 65 42 |,TitleCol,TitleB| 00006700 61 63 6b 43 6f 6c 2c 57 6f 72 6b 43 6f 6c 2c 57 |ackCol,WorkCol,W| 00006710 6f 72 6b 42 61 63 6b 43 6f 6c 2c 53 63 72 6f 6c |orkBackCol,Scrol| 00006720 6c 43 6f 6c 2c 53 6c 69 64 65 72 43 6f 6c 2c 49 |lCol,SliderCol,I| 00006730 6e 70 75 74 43 6f 6c 2c 57 6d 69 6e 58 2c 57 6d |nputCol,WminX,Wm| 00006740 69 6e 59 2c 57 6d 61 78 58 2c 57 6d 61 78 59 2c |inY,WmaxX,WmaxY,| 00006750 54 69 74 6c 65 46 6c 61 67 73 2c 57 62 75 74 74 |TitleFlags,Wbutt| 00006760 6f 6e 2c 53 70 72 69 74 65 50 6f 69 6e 74 2c 4d |on,SpritePoint,M| 00006770 69 6e 57 2c 4d 69 6e 48 2c 54 69 74 6c 65 44 61 |inW,MinH,TitleDa| 00006780 74 61 24 29 0d 1a b8 5a 42 6c 6f 63 6b 21 30 3d |ta$)...ZBlock!0=| 00006790 6d 69 6e 58 3a 42 6c 6f 63 6b 21 34 3d 6d 69 6e |minX:Block!4=min| 000067a0 59 3a 42 6c 6f 63 6b 21 38 3d 6d 61 78 58 3a 42 |Y:Block!8=maxX:B| 000067b0 6c 6f 63 6b 21 31 32 3d 6d 61 78 59 3a 42 6c 6f |lock!12=maxY:Blo| 000067c0 63 6b 21 31 36 3d 58 6f 66 66 73 65 74 3a 42 6c |ck!16=Xoffset:Bl| 000067d0 6f 63 6b 21 32 30 3d 59 6f 66 66 73 65 74 0d 1a |ock!20=Yoffset..| 000067e0 c2 22 42 6c 6f 63 6b 21 32 34 3d 48 61 6e 64 6c |."Block!24=Handl| 000067f0 65 3a 42 6c 6f 63 6b 21 32 38 3d 46 6c 61 67 73 |e:Block!28=Flags| 00006800 0d 1a cc 51 42 6c 6f 63 6b 3f 33 32 3d 54 69 74 |...QBlock?32=Tit| 00006810 6c 65 43 6f 6c 3a 42 6c 6f 63 6b 3f 33 33 3d 54 |leCol:Block?33=T| 00006820 69 74 6c 65 42 61 63 6b 43 6f 6c 3a 42 6c 6f 63 |itleBackCol:Bloc| 00006830 6b 3f 33 34 3d 57 6f 72 6b 43 6f 6c 3a 42 6c 6f |k?34=WorkCol:Blo| 00006840 63 6b 3f 33 35 3d 57 6f 72 6b 42 61 63 6b 43 6f |ck?35=WorkBackCo| 00006850 6c 0d 1a d6 46 42 6c 6f 63 6b 3f 33 36 3d 53 63 |l...FBlock?36=Sc| 00006860 72 6f 6c 6c 43 6f 6c 3a 42 6c 6f 63 6b 3f 33 37 |rollCol:Block?37| 00006870 3d 53 6c 69 64 65 72 43 6f 6c 3a 42 6c 6f 63 6b |=SliderCol:Block| 00006880 3f 33 38 3d 49 6e 70 75 74 43 6f 6c 3a 42 6c 6f |?38=InputCol:Blo| 00006890 63 6b 3f 33 39 3d 30 0d 1a e0 3f 42 6c 6f 63 6b |ck?39=0...?Block| 000068a0 21 34 30 3d 57 6d 69 6e 58 3a 42 6c 6f 63 6b 21 |!40=WminX:Block!| 000068b0 34 34 3d 57 6d 69 6e 59 3a 42 6c 6f 63 6b 21 34 |44=WminY:Block!4| 000068c0 38 3d 57 6d 61 78 58 3a 42 6c 6f 63 6b 21 35 32 |8=WmaxX:Block!52| 000068d0 3d 57 6d 61 78 59 0d 1a ea 3d 42 6c 6f 63 6b 21 |=WmaxY...=Block!| 000068e0 35 36 3d 54 69 74 6c 65 46 6c 61 67 73 3a 42 6c |56=TitleFlags:Bl| 000068f0 6f 63 6b 21 36 30 3d 57 62 75 74 74 6f 6e 3a 42 |ock!60=Wbutton:B| 00006900 6c 6f 63 6b 21 36 34 3d 53 70 72 69 74 65 50 6f |lock!64=SpritePo| 00006910 69 6e 74 0d 1a f4 5f 42 6c 6f 63 6b 21 36 38 3d |int..._Block!68=| 00006920 28 4d 69 6e 48 3c 3c 31 35 29 2b 4d 69 6e 57 20 |(MinH<<15)+MinW | 00006930 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 20 f4 20 30 |:::::::::::: . 0| 00006940 2c 30 20 73 65 74 73 20 74 68 65 20 6d 69 6e 69 |,0 sets the mini| 00006950 6d 75 6d 20 77 69 6e 64 6f 77 20 77 69 74 68 20 |mum window with | 00006960 74 6f 20 74 68 65 20 74 69 74 6c 65 20 77 69 64 |to the title wid| 00006970 74 68 0d 1a fe 3e 24 28 42 6c 6f 63 6b 2b 37 32 |th...>$(Block+72| 00006980 29 3d 54 69 74 6c 65 44 61 74 61 24 3a 42 6c 6f |)=TitleData$:Blo| 00006990 63 6b 21 38 34 3d 30 20 3a 3a 3a 20 f4 20 4e 6f |ck!84=0 ::: . No| 000069a0 20 69 63 6f 6e 73 20 69 6e 69 74 69 61 6c 6c 79 | icons initially| 000069b0 0d 1b 08 30 c8 99 20 22 57 69 6d 70 5f 43 72 65 |...0.. "Wimp_Cre| 000069c0 61 74 65 57 69 6e 64 6f 77 22 2c 2c 42 6c 6f 63 |ateWindow",,Bloc| 000069d0 6b 20 b8 20 57 69 6e 64 6f 77 48 61 6e 64 6c 65 |k . WindowHandle| 000069e0 0d 1b 12 11 3d 57 69 6e 64 6f 77 48 61 6e 64 6c |....=WindowHandl| 000069f0 65 0d 1b 1c 05 3a 0d 1b 26 42 dd 20 a4 43 72 65 |e....:..&B. .Cre| 00006a00 61 74 65 49 63 6f 6e 28 57 69 6e 64 6f 77 48 61 |ateIcon(WindowHa| 00006a10 6e 64 6c 65 2c 6d 69 6e 58 2c 6d 69 6e 59 2c 6d |ndle,minX,minY,m| 00006a20 61 78 58 2c 6d 61 78 59 2c 46 6c 61 67 73 2c 49 |axX,maxY,Flags,I| 00006a30 63 6f 6e 44 61 74 61 29 0d 1b 30 18 42 6c 6f 63 |conData)..0.Bloc| 00006a40 6b 21 30 3d 57 69 6e 64 6f 77 48 61 6e 64 6c 65 |k!0=WindowHandle| 00006a50 0d 1b 3a 48 42 6c 6f 63 6b 21 34 3d 6d 69 6e 58 |..:HBlock!4=minX| 00006a60 3a 42 6c 6f 63 6b 21 38 3d 6d 69 6e 59 3a 42 6c |:Block!8=minY:Bl| 00006a70 6f 63 6b 21 31 32 3d 6d 61 78 58 3a 42 6c 6f 63 |ock!12=maxX:Bloc| 00006a80 6b 21 31 36 3d 6d 61 78 59 3a 42 6c 6f 63 6b 21 |k!16=maxY:Block!| 00006a90 32 30 3d 46 6c 61 67 73 0d 1b 44 3f 42 6c 6f 63 |20=Flags..D?Bloc| 00006aa0 6b 21 32 34 3d 49 63 6f 6e 44 61 74 61 21 30 3a |k!24=IconData!0:| 00006ab0 42 6c 6f 63 6b 21 32 38 3d 49 63 6f 6e 44 61 74 |Block!28=IconDat| 00006ac0 61 21 34 3a 42 6c 6f 63 6b 21 33 32 3d 49 63 6f |a!4:Block!32=Ico| 00006ad0 6e 44 61 74 61 21 38 0d 1b 4e 2c c8 99 20 22 57 |nData!8..N,.. "W| 00006ae0 69 6d 70 5f 43 72 65 61 74 65 49 63 6f 6e 22 2c |imp_CreateIcon",| 00006af0 2c 42 6c 6f 63 6b 20 b8 20 49 63 6f 6e 48 61 6e |,Block . IconHan| 00006b00 64 6c 65 0d 1b 58 0f 3d 49 63 6f 6e 48 61 6e 64 |dle..X.=IconHand| 00006b10 6c 65 0d 1b 62 05 3a 0d 1b 6c 11 dd 20 f2 49 6e |le..b.:..l.. .In| 00006b20 69 74 69 61 6c 69 73 65 0d 1b 76 2d 41 70 70 53 |itialise..v-AppS| 00006b30 69 7a 65 3d 93 2d 26 38 30 30 30 3a 4d 69 6e 53 |ize=.-&8000:MinS| 00006b40 69 7a 65 3d 41 70 70 53 69 7a 65 3a 53 6c 6f 74 |ize=AppSize:Slot| 00006b50 45 6e 64 3d 93 0d 1b 80 05 e1 0d 1b 8a 05 3a 0d |End=..........:.| 00006b60 1b 94 1f dd 20 a4 41 6c 6c 6f 63 61 74 65 4d 65 |.... .AllocateMe| 00006b70 6d 6f 72 79 28 52 65 71 75 69 72 65 64 29 0d 1b |mory(Required)..| 00006b80 9e 1a 53 6c 6f 74 53 69 7a 65 3d a4 53 6c 6f 74 |..SlotSize=.Slot| 00006b90 53 69 7a 65 28 2d 31 29 0d 1b a8 92 e7 20 53 6c |Size(-1)..... Sl| 00006ba0 6f 74 53 69 7a 65 3c 52 65 71 75 69 72 65 64 20 |otSize<Required | 00006bb0 8c 20 4e 65 77 53 69 7a 65 3d a4 53 6c 6f 74 53 |. NewSize=.SlotS| 00006bc0 69 7a 65 28 52 65 71 75 69 72 65 64 29 3a e7 20 |ize(Required):. | 00006bd0 4e 65 77 53 69 7a 65 3c 52 65 71 75 69 72 65 64 |NewSize<Required| 00006be0 20 8c 20 53 6c 6f 74 53 69 7a 65 3d a4 53 6c 6f | . SlotSize=.Slo| 00006bf0 74 53 69 7a 65 28 41 70 70 53 69 7a 65 29 3a 3d |tSize(AppSize):=| 00006c00 30 3a f4 20 52 65 74 75 72 6e 73 2c 20 69 6e 64 |0:. Returns, ind| 00006c10 69 63 61 74 69 6e 67 20 6d 65 6d 6f 72 79 20 6e |icating memory n| 00006c20 6f 74 20 63 6c 61 69 6d 65 64 0d 1b b2 36 e7 20 |ot claimed...6. | 00006c30 53 6c 6f 74 53 69 7a 65 3e 52 65 71 75 69 72 65 |SlotSize>Require| 00006c40 64 20 8c 20 53 6c 6f 74 53 69 7a 65 3d a4 53 6c |d . SlotSize=.Sl| 00006c50 6f 74 53 69 7a 65 28 52 65 71 75 69 72 65 64 29 |otSize(Required)| 00006c60 0d 1b bc 2a 3d 53 6c 6f 74 53 69 7a 65 3a f4 20 |...*=SlotSize:. | 00006c70 52 65 74 75 72 6e 73 20 77 69 74 68 20 62 79 74 |Returns with byt| 00006c80 65 73 20 63 6c 61 69 6d 65 64 0d 1b c6 05 3a 0d |es claimed....:.| 00006c90 1b d0 16 dd 20 a4 53 6c 6f 74 53 69 7a 65 28 42 |.... .SlotSize(B| 00006ca0 79 74 65 73 29 0d 1b da 27 c8 99 20 22 57 69 6d |ytes)...'.. "Wim| 00006cb0 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 42 79 74 65 |p_SlotSize",Byte| 00006cc0 73 2c 2d 31 20 b8 20 42 79 74 65 73 0d 1b e4 0a |s,-1 . Bytes....| 00006cd0 3d 42 79 74 65 73 0d 1b ee 05 3a 0d 1b f8 17 dd |=Bytes....:.....| 00006ce0 20 f2 4d 69 6e 69 6d 69 73 65 57 69 6d 70 53 6c | .MinimiseWimpSl| 00006cf0 6f 74 0d 1c 02 22 64 75 6d 6d 79 3d a4 41 6c 6c |ot..."dummy=.All| 00006d00 6f 63 61 74 65 4d 65 6d 6f 72 79 28 4d 69 6e 53 |ocateMemory(MinS| 00006d10 69 7a 65 29 0d 1c 0c 05 e1 0d 1c 16 05 3a 0d 1c |ize).........:..| 00006d20 20 22 dd 20 f2 43 6c 6f 73 65 46 69 6c 65 49 66 | ". .CloseFileIf| 00006d30 50 6f 73 73 28 46 69 6c 65 48 61 6e 64 6c 65 29 |Poss(FileHandle)| 00006d40 0d 1c 2a 07 ea 20 85 0d 1c 34 26 ee 20 85 20 ea |..*.. ...4&. . .| 00006d50 20 f7 20 85 3a e1 3a f4 20 55 6e 61 62 6c 65 20 | . .:.:. Unable | 00006d60 74 6f 20 63 6c 6f 73 65 20 66 69 6c 65 0d 1c 3e |to close file..>| 00006d70 10 d9 23 46 69 6c 65 48 61 6e 64 6c 65 0d 1c 48 |..#FileHandle..H| 00006d80 05 e1 0d 1c 52 05 3a 0d 1c 5c 1e dd 20 a4 46 69 |....R.:..\.. .Fi| 00006d90 6e 64 46 69 6c 65 53 69 7a 65 28 46 69 6c 65 4e |ndFileSize(FileN| 00006da0 61 6d 65 24 29 0d 1c 66 20 e7 20 46 69 6c 65 4e |ame$)..f . FileN| 00006db0 61 6d 65 24 3d 22 3c 57 69 6d 70 24 53 63 72 61 |ame$="<Wimp$Scra| 00006dc0 70 3e 22 20 8c 0d 1c 70 3a 20 20 c8 99 20 22 4f |p>" ...p: .. "O| 00006dd0 53 5f 46 69 6c 65 22 2c 31 35 2c 46 69 6c 65 4e |S_File",15,FileN| 00006de0 61 6d 65 24 2c 2c 2c 46 69 6c 65 4e 61 6d 65 24 |ame$,,,FileName$| 00006df0 20 b8 20 2c 2c 2c 2c 46 69 6c 65 53 69 7a 65 0d | . ,,,,FileSize.| 00006e00 1c 7a 05 cc 0d 1c 84 34 20 20 4e 3d 2d 31 3a f5 |.z.....4 N=-1:.| 00006e10 3a 4e 2b 3d 31 3a fd 20 c1 46 69 6c 65 4e 61 6d |:N+=1:. .FileNam| 00006e20 65 24 2c a9 28 46 69 6c 65 4e 61 6d 65 24 29 2d |e$,.(FileName$)-| 00006e30 4e 2c 31 29 3d 22 2e 22 0d 1c 8e 42 20 20 50 61 |N,1)="."...B Pa| 00006e40 74 68 4e 61 6d 65 24 3d c0 46 69 6c 65 4e 61 6d |thName$=.FileNam| 00006e50 65 24 2c a9 28 46 69 6c 65 4e 61 6d 65 24 29 2d |e$,.(FileName$)-| 00006e60 4e 29 3a 4c 65 61 66 4e 61 6d 65 24 3d c2 46 69 |N):LeafName$=.Fi| 00006e70 6c 65 4e 61 6d 65 24 2c 4e 29 0d 1c 98 3a 20 20 |leName$,N)...: | 00006e80 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 31 33 2c |.. "OS_File",13,| 00006e90 4c 65 61 66 4e 61 6d 65 24 2c 2c 2c 50 61 74 68 |LeafName$,,,Path| 00006ea0 4e 61 6d 65 24 20 b8 20 2c 2c 2c 2c 46 69 6c 65 |Name$ . ,,,,File| 00006eb0 53 69 7a 65 0d 1c a2 05 cd 0d 1c ac 0d 3d 46 69 |Size.........=Fi| 00006ec0 6c 65 53 69 7a 65 0d 1c b6 05 3a 0d 1c c0 10 dd |leSize....:.....| 00006ed0 20 a4 4e 65 78 74 45 6e 74 72 79 0d 1c ca 48 f4 | .NextEntry...H.| 00006ee0 20 47 65 74 73 20 6e 65 78 74 20 65 6e 74 72 79 | Gets next entry| 00006ef0 20 28 63 72 65 61 74 65 64 20 62 79 20 42 50 55 | (created by BPU| 00006f00 54 23 44 61 74 61 2c 41 24 29 20 66 72 6f 6d 20 |T#Data,A$) from | 00006f10 61 20 66 69 6c 65 20 61 73 20 61 20 73 74 72 69 |a file as a stri| 00006f20 6e 67 2e 0d 1c d4 1c f4 20 55 73 65 20 61 73 20 |ng...... Use as | 00006f30 41 24 3d 46 4e 4e 65 78 74 45 6e 74 72 79 2e 0d |A$=FNNextEntry..| 00006f40 1c de 07 ea 20 85 0d 1c e8 26 ee 20 85 20 ea 20 |.... ....&. . . | 00006f50 f7 20 85 3a 3d 22 22 3a f4 20 45 72 72 6f 72 20 |. .:="":. Error | 00006f60 72 65 61 64 69 6e 67 20 66 69 6c 65 0d 1c f2 0e |reading file....| 00006f70 4e 45 24 3d be 23 44 61 74 61 0d 1c fc 12 c8 95 |NE$=.#Data......| 00006f80 20 c0 4e 45 24 2c 31 29 3d 22 7c 22 0d 1d 06 10 | .NE$,1)="|"....| 00006f90 20 20 4e 45 24 3d be 23 44 61 74 61 0d 1d 10 05 | NE$=.#Data....| 00006fa0 ce 0d 1d 1a 08 3d 4e 45 24 0d 1d 24 05 3a 0d 1d |.....=NE$..$.:..| 00006fb0 2e 47 dd 20 f2 44 72 61 67 42 6f 78 28 57 69 6e |.G. .DragBox(Win| 00006fc0 64 6f 77 48 61 6e 64 6c 65 2c 49 63 6f 6e 48 61 |dowHandle,IconHa| 00006fd0 6e 64 6c 65 2c 44 72 61 67 54 79 70 65 2c 53 70 |ndle,DragType,Sp| 00006fe0 72 69 74 65 41 72 65 61 2c 53 70 72 69 74 65 4e |riteArea,SpriteN| 00006ff0 61 6d 65 24 29 0d 1d 38 38 42 6c 6f 63 6b 21 30 |ame$)..88Block!0| 00007000 3d 57 69 6e 64 6f 77 48 61 6e 64 6c 65 3a c8 99 |=WindowHandle:..| 00007010 20 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 | "Wimp_GetWindow| 00007020 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 1d 42 |State",,Block..B| 00007030 20 77 6d 69 6e 78 3d 42 6c 6f 63 6b 21 34 3a 77 | wminx=Block!4:w| 00007040 6d 61 78 79 3d 42 6c 6f 63 6b 21 31 36 0d 1d 4c |maxy=Block!16..L| 00007050 49 42 6c 6f 63 6b 21 30 3d 57 69 6e 64 6f 77 48 |IBlock!0=WindowH| 00007060 61 6e 64 6c 65 3a 42 6c 6f 63 6b 21 34 3d 49 63 |andle:Block!4=Ic| 00007070 6f 6e 48 61 6e 64 6c 65 3a c8 99 20 22 57 69 6d |onHandle:.. "Wim| 00007080 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_GetIconState",| 00007090 2c 42 6c 6f 63 6b 0d 1d 56 3e 69 6d 69 6e 78 3d |,Block..V>iminx=| 000070a0 42 6c 6f 63 6b 21 38 3a 69 6d 69 6e 79 3d 42 6c |Block!8:iminy=Bl| 000070b0 6f 63 6b 21 31 32 3a 69 6d 61 78 78 3d 42 6c 6f |ock!12:imaxx=Blo| 000070c0 63 6b 21 31 36 3a 69 6d 61 78 79 3d 42 6c 6f 63 |ck!16:imaxy=Bloc| 000070d0 6b 21 32 30 0d 1d 60 29 42 6c 6f 63 6b 21 30 3d |k!20..`)Block!0=| 000070e0 57 69 6e 64 6f 77 48 61 6e 64 6c 65 3a 42 6c 6f |WindowHandle:Blo| 000070f0 63 6b 21 34 3d 44 72 61 67 54 79 70 65 0d 1d 6a |ck!4=DragType..j| 00007100 19 42 6c 6f 63 6b 21 38 3d 28 77 6d 69 6e 78 2b |.Block!8=(wminx+| 00007110 69 6d 69 6e 78 29 0d 1d 74 1a 42 6c 6f 63 6b 21 |iminx)..t.Block!| 00007120 31 32 3d 28 77 6d 61 78 79 2b 69 6d 69 6e 79 29 |12=(wmaxy+iminy)| 00007130 0d 1d 7e 1a 42 6c 6f 63 6b 21 31 36 3d 28 77 6d |..~.Block!16=(wm| 00007140 69 6e 78 2b 69 6d 61 78 78 29 0d 1d 88 1a 42 6c |inx+imaxx)....Bl| 00007150 6f 63 6b 21 32 30 3d 28 77 6d 61 78 79 2b 69 6d |ock!20=(wmaxy+im| 00007160 61 78 79 29 0d 1d 92 19 42 6c 6f 63 6b 21 32 34 |axy)....Block!24| 00007170 3d 31 3a 42 6c 6f 63 6b 21 32 38 3d 31 0d 1d 9c |=1:Block!28=1...| 00007180 47 42 6c 6f 63 6b 21 33 32 3d 28 a4 4d 6f 64 65 |GBlock!32=(.Mode| 00007190 49 6e 66 6f 28 22 58 70 69 78 65 6c 73 22 2c 2d |Info("Xpixels",-| 000071a0 31 29 2b 31 29 2a 28 32 5e a4 4d 6f 64 65 49 6e |1)+1)*(2^.ModeIn| 000071b0 66 6f 28 22 58 45 69 67 46 61 63 74 6f 72 22 2c |fo("XEigFactor",| 000071c0 2d 31 29 29 0d 1d a6 47 42 6c 6f 63 6b 21 33 36 |-1))...GBlock!36| 000071d0 3d 28 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 70 69 |=(.ModeInfo("Ypi| 000071e0 78 65 6c 73 22 2c 2d 31 29 2b 31 29 2a 28 32 5e |xels",-1)+1)*(2^| 000071f0 a4 4d 6f 64 65 49 6e 66 6f 28 22 59 45 69 67 46 |.ModeInfo("YEigF| 00007200 61 63 74 6f 72 22 2c 2d 31 29 29 0d 1d b0 13 e7 |actor",-1)).....| 00007210 20 44 72 61 67 41 53 70 72 69 74 65 20 8c 0d 1d | DragASprite ...| 00007220 ba 45 20 20 c8 99 20 22 44 72 61 67 41 53 70 72 |.E .. "DragASpr| 00007230 69 74 65 5f 53 74 61 72 74 22 2c 25 31 30 30 30 |ite_Start",%1000| 00007240 30 31 30 31 2c 53 70 72 69 74 65 41 72 65 61 2c |0101,SpriteArea,| 00007250 53 70 72 69 74 65 4e 61 6d 65 24 2c 42 6c 6f 63 |SpriteName$,Bloc| 00007260 6b 2b 38 0d 1d c4 05 cc 0d 1d ce 1e 20 20 c8 99 |k+8......... ..| 00007270 20 22 57 69 6d 70 5f 44 72 61 67 42 6f 78 22 2c | "Wimp_DragBox",| 00007280 2c 42 6c 6f 63 6b 0d 1d d8 05 cd 0d 1d e2 05 e1 |,Block..........| 00007290 0d 1d ec 05 3a 0d 1d f6 4f f4 20 2d 2d 2d 2d 2d |....:...O. -----| 000072a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000072e0 2d 2d 2d 2d 0d 1e 00 2f f4 20 52 6f 75 74 69 6e |----.../. Routin| 000072f0 65 73 20 63 6f 6d 6d 6f 6e 20 74 6f 20 74 68 65 |es common to the| 00007300 20 4f 6d 6e 69 44 65 73 6b 20 75 74 69 6c 69 74 | OmniDesk utilit| 00007310 69 65 73 0d 1e 0a 4f f4 20 2d 2d 2d 2d 2d 2d 2d |ies...O. -------| 00007320 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007360 2d 2d 0d 1e 14 05 3a 0d 1e 1e 18 dd 20 f2 44 65 |--....:..... .De| 00007370 63 6c 61 72 65 54 6f 4f 6d 6e 69 44 65 73 6b 0d |clareToOmniDesk.| 00007380 1e 28 2f 42 6c 6f 63 6b 21 30 3d 32 30 38 3a 42 |.(/Block!0=208:B| 00007390 6c 6f 63 6b 21 31 32 3d 30 3a 42 6c 6f 63 6b 21 |lock!12=0:Block!| 000073a0 31 36 3d 55 74 69 6c 44 65 63 6c 61 72 65 0d 1e |16=UtilDeclare..| 000073b0 32 11 42 6c 6f 63 6b 21 32 30 3d 54 61 73 6b 0d |2.Block!20=Task.| 000073c0 1e 3c 19 24 28 42 6c 6f 63 6b 2b 32 34 29 3d 54 |.<.$(Block+24)=T| 000073d0 61 73 6b 6e 61 6d 65 24 0d 1e 46 1c 24 28 42 6c |askname$..F.$(Bl| 000073e0 6f 63 6b 2b 34 34 29 3d 4f 75 72 46 69 6c 65 4e |ock+44)=OurFileN| 000073f0 61 6d 65 24 0d 1e 50 29 24 28 42 6c 6f 63 6b 2b |ame$..P)$(Block+| 00007400 35 35 29 3d a4 4f 6d 6e 69 48 65 6c 70 4d 65 73 |55)=.OmniHelpMes| 00007410 73 61 67 65 28 22 43 4c 49 43 4b 22 29 0d 1e 5a |sage("CLICK")..Z| 00007420 29 24 28 42 6c 6f 63 6b 2b 31 33 32 29 3d a4 4f |)$(Block+132)=.O| 00007430 6d 6e 69 48 65 6c 70 4d 65 73 73 61 67 65 28 22 |mniHelpMessage("| 00007440 44 52 41 47 22 29 0d 1e 64 2b c8 99 20 22 57 69 |DRAG")..d+.. "Wi| 00007450 6d 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c |mp_SendMessage",| 00007460 31 37 2c 42 6c 6f 63 6b 2c 4f 6d 6e 69 44 65 73 |17,Block,OmniDes| 00007470 6b 0d 1e 6e 05 e1 0d 1e 78 05 3a 0d 1e 82 11 dd |k..n....x.:.....| 00007480 20 f2 53 61 79 47 6f 6f 64 62 79 65 0d 1e 8c 13 | .SayGoodbye....| 00007490 e7 20 4f 6d 6e 69 44 65 73 6b 3c 3e 30 20 8c 0d |. OmniDesk<>0 ..| 000074a0 1e 96 31 20 20 42 6c 6f 63 6b 21 30 3d 32 34 3a |..1 Block!0=24:| 000074b0 42 6c 6f 63 6b 21 31 32 3d 30 3a 42 6c 6f 63 6b |Block!12=0:Block| 000074c0 21 31 36 3d 55 74 69 6c 51 75 69 74 74 69 6e 67 |!16=UtilQuitting| 000074d0 0d 1e a0 13 20 20 42 6c 6f 63 6b 21 32 30 3d 54 |.... Block!20=T| 000074e0 61 73 6b 0d 1e aa 2d 20 20 c8 99 20 22 57 69 6d |ask...- .. "Wim| 000074f0 70 5f 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 |p_SendMessage",1| 00007500 37 2c 42 6c 6f 63 6b 2c 4f 6d 6e 69 44 65 73 6b |7,Block,OmniDesk| 00007510 0d 1e b4 05 cd 0d 1e be 21 c8 99 20 22 49 6e 74 |........!.. "Int| 00007520 65 72 66 61 63 65 5f 43 6c 6f 73 65 44 6f 77 6e |erface_CloseDown| 00007530 22 2c 54 61 73 6b 0d 1e c8 26 c8 99 20 22 57 69 |",Task...&.. "Wi| 00007540 6d 70 5f 43 6c 6f 73 65 44 6f 77 6e 22 2c 54 61 |mp_CloseDown",Ta| 00007550 73 6b 2c 26 34 42 35 33 34 31 35 34 0d 1e d2 05 |sk,&4B534154....| 00007560 e1 0d 1e dc 05 3a 0d 1e e6 18 dd 20 a4 52 65 61 |.....:..... .Rea| 00007570 64 53 74 61 72 74 75 70 53 74 72 69 6e 67 0d 1e |dStartupString..| 00007580 f0 4d f4 20 52 65 74 75 72 6e 73 20 74 61 73 6b |.M. Returns task| 00007590 20 68 61 6e 64 6c 65 20 6f 66 20 4f 6d 6e 69 44 | handle of OmniD| 000075a0 65 73 6b 20 28 77 68 69 63 68 20 69 73 20 70 61 |esk (which is pa| 000075b0 73 73 65 64 20 69 6e 20 74 68 65 20 63 6f 6d 6d |ssed in the comm| 000075c0 61 6e 64 20 73 74 72 69 6e 67 29 0d 1e fa 26 f4 |and string)...&.| 000075d0 20 6f 72 20 30 20 69 66 20 6e 6f 74 20 73 74 61 | or 0 if not sta| 000075e0 72 74 65 64 20 62 79 20 4f 6d 6e 69 44 65 73 6b |rted by OmniDesk| 000075f0 2e 0d 1f 04 1d c8 99 20 22 4f 53 5f 47 65 74 45 |....... "OS_GetE| 00007600 6e 76 22 20 b8 20 43 6f 6d 6d 61 6e 64 24 0d 1f |nv" . Command$..| 00007610 0e 1b 41 3d a7 43 6f 6d 6d 61 6e 64 24 2c 22 2d |..A=.Command$,"-| 00007620 53 74 61 72 74 75 70 22 29 0d 1f 18 16 e7 20 41 |Startup")..... A| 00007630 3c 3e 30 20 8c 20 53 74 61 72 74 75 70 3d b9 0d |<>0 . Startup=..| 00007640 1f 22 18 41 3d a7 43 6f 6d 6d 61 6e 64 24 2c 22 |.".A=.Command$,"| 00007650 2d 45 78 69 74 22 29 0d 1f 2c 13 e7 20 41 3c 3e |-Exit")..,.. A<>| 00007660 30 20 8c 20 45 78 69 74 3d b9 0d 1f 36 1c 41 3d |0 . Exit=...6.A=| 00007670 a7 43 6f 6d 6d 61 6e 64 24 2c 22 2d 4f 6d 6e 69 |.Command$,"-Omni| 00007680 44 65 73 6b 22 29 0d 1f 40 0e e7 20 41 3d 30 20 |Desk")..@.. A=0 | 00007690 8c 20 3d 30 0d 1f 4a 16 3d bb 28 c1 43 6f 6d 6d |. =0..J.=.(.Comm| 000076a0 61 6e 64 24 2c 41 2b 39 29 29 0d 1f 54 05 3a 0d |and$,A+9))..T.:.| 000076b0 1f 5e 20 dd 20 a4 52 65 61 64 57 69 6e 64 6f 77 |.^ . .ReadWindow| 000076c0 4c 6f 63 61 74 69 6f 6e 28 41 78 69 73 24 29 0d |Location(Axis$).| 000076d0 1f 68 48 f4 20 52 65 61 64 73 20 77 68 69 63 68 |.hH. Reads which| 000076e0 20 72 61 64 69 6f 20 69 63 6f 6e 20 28 69 66 20 | radio icon (if | 000076f0 61 6e 79 29 20 69 73 20 73 65 6c 65 63 74 65 64 |any) is selected| 00007700 20 69 6e 20 74 68 65 20 57 69 6e 64 6f 77 20 50 | in the Window P| 00007710 6f 73 69 74 69 6f 6e 0d 1f 72 48 f4 20 73 65 6c |osition..rH. sel| 00007720 65 63 74 6f 72 20 77 69 6e 64 6f 77 20 61 6e 64 |ector window and| 00007730 20 72 65 74 75 72 6e 73 20 74 68 65 20 61 78 69 | returns the axi| 00007740 73 20 63 6f 6f 72 64 69 6e 61 74 65 20 28 74 77 |s coordinate (tw| 00007750 6f 20 63 61 6c 6c 73 20 6e 65 65 64 65 64 29 0d |o calls needed).| 00007760 1f 7c 25 f4 20 6f 72 20 2d 31 20 66 6f 72 20 6e |.|%. or -1 for n| 00007770 6f 20 70 6f 73 69 74 69 6f 6e 20 73 65 6c 65 63 |o position selec| 00007780 74 65 64 2e 0d 1f 86 3f 49 63 6f 6e 3d 35 3a f5 |ted....?Icon=5:.| 00007790 3a 49 63 6f 6e 2b 3d 31 3a fd 20 28 a4 53 65 6c |:Icon+=1:. (.Sel| 000077a0 65 63 74 65 64 53 74 61 74 65 28 4c 6f 63 2c 49 |ectedState(Loc,I| 000077b0 63 6f 6e 29 3d b9 29 20 84 20 28 49 63 6f 6e 3d |con)=.) . (Icon=| 000077c0 33 31 29 0d 1f 90 2a e7 20 49 63 6f 6e 3d 33 31 |31)...*. Icon=31| 000077d0 20 8c 20 3d 2d 31 3a f4 20 41 6c 6c 20 69 63 6f | . =-1:. All ico| 000077e0 6e 73 20 64 65 73 65 6c 65 63 74 65 64 0d 1f 9a |ns deselected...| 000077f0 34 4c 6f 63 61 74 69 6f 6e 3d 2d 31 3a 49 63 6f |4Location=-1:Ico| 00007800 6e 2d 3d 36 3a f4 20 42 72 69 6e 67 20 69 63 6f |n-=6:. Bring ico| 00007810 6e 20 69 6e 74 6f 20 72 61 6e 67 65 20 30 2d 31 |n into range 0-1| 00007820 34 0d 1f a4 0e c8 8e 20 41 78 69 73 24 20 ca 0d |4...... Axis$ ..| 00007830 1f ae 21 20 20 c9 20 22 58 22 2c 22 78 22 3a 4c |..! . "X","x":L| 00007840 6f 63 61 74 69 6f 6e 3d 49 63 6f 6e 20 81 20 35 |ocation=Icon . 5| 00007850 0d 1f b8 25 20 20 c9 20 22 59 22 2c 22 79 22 3a |...% . "Y","y":| 00007860 4c 6f 63 61 74 69 6f 6e 3d 34 2d 28 49 63 6f 6e |Location=4-(Icon| 00007870 20 83 20 35 29 0d 1f c2 05 cb 0d 1f cc 0d 3d 4c | . 5).........=L| 00007880 6f 63 61 74 69 6f 6e 0d 1f d6 05 3a 0d 1f e0 17 |ocation....:....| 00007890 dd 20 f2 43 6c 65 61 6e 55 70 4c 6f 63 57 69 6e |. .CleanUpLocWin| 000078a0 64 6f 77 0d 1f ea 4f f4 20 4d 61 6b 65 73 20 73 |dow...O. Makes s| 000078b0 75 72 65 20 74 68 61 74 20 6e 6f 6e 65 20 6f 66 |ure that none of| 000078c0 20 74 68 65 20 27 77 69 6e 64 6f 77 27 20 69 63 | the 'window' ic| 000078d0 6f 6e 73 20 69 6e 20 74 68 65 20 4c 6f 63 20 77 |ons in the Loc w| 000078e0 69 6e 64 6f 77 20 69 73 20 73 65 6c 65 63 74 65 |indow is selecte| 000078f0 64 2e 0d 1f f4 09 4e 3d 35 3a f5 0d 1f fe 27 4e |d.....N=5:....'N| 00007900 2b 3d 31 3a fd 20 4e 3d 33 30 20 84 20 a4 53 65 |+=1:. N=30 . .Se| 00007910 6c 65 63 74 65 64 53 74 61 74 65 28 4c 6f 63 2c |lectedState(Loc,| 00007920 4e 29 0d 20 08 20 f2 55 70 64 61 74 65 53 65 6c |N). . .UpdateSel| 00007930 65 63 74 65 64 46 6c 61 67 28 4c 6f 63 2c 4e 2c |ectedFlag(Loc,N,| 00007940 a3 29 0d 20 12 05 e1 0d 20 1c 05 3a 0d 20 26 4f |.). .... ..:. &O| 00007950 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |. --------------| 00007960 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007990 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 20 30 2c f4 |-----------. 0,.| 000079a0 20 53 70 65 63 69 61 6c 20 72 6f 75 74 69 6e 65 | Special routine| 000079b0 73 20 66 6f 72 20 74 68 69 73 20 70 72 6f 67 72 |s for this progr| 000079c0 61 6d 20 6f 6e 6c 79 0d 20 3a 4f f4 20 2d 2d 2d |am only. :O. ---| 000079d0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00007a10 2d 2d 2d 2d 2d 2d 0d 20 44 05 3a 0d 20 4e 1e dd |------. D.:. N..| 00007a20 20 f2 43 6c 65 61 72 53 70 79 43 61 6c 63 57 69 | .ClearSpyCalcWi| 00007a30 6e 64 6f 77 28 53 70 79 29 0d 20 58 08 f7 20 2b |ndow(Spy). X.. +| 00007a40 31 0d 20 62 1b dc 20 34 2c 35 2c 31 30 2c 31 31 |1. b.. 4,5,10,11| 00007a50 2c 31 36 2c 31 37 2c 32 32 2c 32 33 0d 20 6c 0d |,16,17,22,23. l.| 00007a60 e3 20 4e 3d 31 20 b8 20 38 0d 20 76 29 20 20 f3 |. N=1 . 8. v) .| 00007a70 20 49 63 6f 6e 3a f2 55 70 64 61 74 65 49 63 6f | Icon:.UpdateIco| 00007a80 6e 28 53 70 79 43 61 6c 63 2c 49 63 6f 6e 2c 22 |n(SpyCalc,Icon,"| 00007a90 22 29 0d 20 80 05 ed 0d 20 8a 0f e3 20 4e 3d 32 |"). .... ... N=2| 00007aa0 36 20 b8 20 34 34 0d 20 94 3d 20 20 42 6c 6f 63 |6 . 44. .= Bloc| 00007ab0 6b 21 30 3d 53 70 79 43 61 6c 63 3a 42 6c 6f 63 |k!0=SpyCalc:Bloc| 00007ac0 6b 21 34 3d 4e 3a c8 99 20 22 57 69 6d 70 5f 47 |k!4=N:.. "Wimp_G| 00007ad0 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c |etIconState",,Bl| 00007ae0 6f 63 6b 0d 20 9e 26 20 20 42 6c 6f 63 6b 21 38 |ock. .& Block!8| 00007af0 3d 28 30 3c 3c 32 31 29 3a 42 6c 6f 63 6b 21 31 |=(0<<21):Block!1| 00007b00 32 3d 28 31 3c 3c 32 31 29 0d 20 a8 32 20 20 e7 |2=(1<<21). .2 .| 00007b10 20 53 70 79 20 8c 20 42 6c 6f 63 6b 21 38 2b 3d | Spy . Block!8+=| 00007b20 28 30 3c 3c 31 32 29 3a 8b 20 42 6c 6f 63 6b 21 |(0<<12):. Block!| 00007b30 38 2b 3d 28 31 31 3c 3c 31 32 29 0d 20 b2 19 20 |8+=(11<<12). .. | 00007b40 20 42 6c 6f 63 6b 21 31 32 2b 3d 28 32 35 35 3c | Block!12+=(255<| 00007b50 3c 31 32 29 0d 20 bc 23 20 20 c8 99 20 22 57 69 |<12). .# .. "Wi| 00007b60 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 |mp_SetIconState"| 00007b70 2c 2c 42 6c 6f 63 6b 0d 20 c6 05 ed 0d 20 d0 3c |,,Block. .... .<| 00007b80 42 6c 6f 63 6b 21 30 3d 53 70 79 43 61 6c 63 3a |Block!0=SpyCalc:| 00007b90 42 6c 6f 63 6b 21 34 3d 34 35 3a c8 99 20 22 57 |Block!4=45:.. "W| 00007ba0 69 6d 70 5f 47 65 74 49 63 6f 6e 53 74 61 74 65 |imp_GetIconState| 00007bb0 22 2c 2c 42 6c 6f 63 6b 0d 20 da 24 42 6c 6f 63 |",,Block. .$Bloc| 00007bc0 6b 21 38 3d 28 31 3c 3c 32 31 29 3a 42 6c 6f 63 |k!8=(1<<21):Bloc| 00007bd0 6b 21 31 32 3d 28 31 3c 3c 32 31 29 0d 20 e4 28 |k!12=(1<<21). .(| 00007be0 42 6c 6f 63 6b 21 38 2b 3d 28 30 3c 3c 31 32 29 |Block!8+=(0<<12)| 00007bf0 3a 42 6c 6f 63 6b 21 31 32 2b 3d 28 32 35 35 3c |:Block!12+=(255<| 00007c00 3c 31 32 29 0d 20 ee 21 c8 99 20 22 57 69 6d 70 |<12). .!.. "Wimp| 00007c10 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c 2c |_SetIconState",,| 00007c20 42 6c 6f 63 6b 0d 20 f8 20 f2 55 70 64 61 74 65 |Block. . .Update| 00007c30 49 63 6f 6e 28 53 70 79 43 61 6c 63 2c 34 36 2c |Icon(SpyCalc,46,| 00007c40 22 26 30 22 29 0d 21 02 3c 42 6c 6f 63 6b 21 30 |"&0").!.<Block!0| 00007c50 3d 53 70 79 43 61 6c 63 3a 42 6c 6f 63 6b 21 34 |=SpyCalc:Block!4| 00007c60 3d 34 36 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 |=46:.. "Wimp_Get| 00007c70 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 |IconState",,Bloc| 00007c80 6b 0d 21 0c 2e e7 20 53 70 79 20 8c 20 42 6c 6f |k.!... Spy . Blo| 00007c90 63 6b 21 38 3d 28 30 3c 3c 31 32 29 3a 8b 20 42 |ck!8=(0<<12):. B| 00007ca0 6c 6f 63 6b 21 38 3d 28 31 34 3c 3c 31 32 29 0d |lock!8=(14<<12).| 00007cb0 21 16 16 42 6c 6f 63 6b 21 31 32 3d 28 32 35 35 |!..Block!12=(255| 00007cc0 3c 3c 31 32 29 0d 21 20 21 c8 99 20 22 57 69 6d |<<12).! !.. "Wim| 00007cd0 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 22 2c |p_SetIconState",| 00007ce0 2c 42 6c 6f 63 6b 0d 21 2a 05 e1 0d 21 34 05 3a |,Block.!*...!4.:| 00007cf0 0d 21 3e 14 dd 20 a4 44 6f 53 70 79 28 4f 6c 64 |.!>.. .DoSpy(Old| 00007d00 57 69 6e 29 0d 21 48 23 c8 99 20 22 57 69 6d 70 |Win).!H#.. "Wimp| 00007d10 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f 22 |_GetPointerInfo"| 00007d20 2c 2c 42 6c 6f 63 6b 0d 21 52 1c 57 69 6e 3d 42 |,,Block.!R.Win=B| 00007d30 6c 6f 63 6b 21 31 32 3a 49 63 3d 42 6c 6f 63 6b |lock!12:Ic=Block| 00007d40 21 31 36 0d 21 5c 48 e7 20 57 69 6e 3d 2d 31 20 |!16.!\H. Win=-1 | 00007d50 8c 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 53 70 |. .UpdateIcon(Sp| 00007d60 79 43 61 6c 63 2c 34 2c 22 22 29 20 8b 20 f2 55 |yCalc,4,"") . .U| 00007d70 70 64 61 74 65 49 63 6f 6e 28 53 70 79 43 61 6c |pdateIcon(SpyCal| 00007d80 63 2c 34 2c c3 28 57 69 6e 29 29 0d 21 66 46 e7 |c,4,.(Win)).!fF.| 00007d90 20 49 63 3d 2d 31 20 8c 20 f2 55 70 64 61 74 65 | Ic=-1 . .Update| 00007da0 49 63 6f 6e 28 53 70 79 43 61 6c 63 2c 35 2c 22 |Icon(SpyCalc,5,"| 00007db0 22 29 20 8b 20 f2 55 70 64 61 74 65 49 63 6f 6e |") . .UpdateIcon| 00007dc0 28 53 70 79 43 61 6c 63 2c 35 2c c3 28 49 63 29 |(SpyCalc,5,.(Ic)| 00007dd0 29 0d 21 70 2a e7 20 28 57 69 6e 3e 30 29 20 84 |).!p*. (Win>0) .| 00007de0 20 28 28 57 69 6e 3d 2d 32 29 20 80 20 28 77 69 | ((Win=-2) . (wi| 00007df0 6d 70 3e 3d 33 30 30 29 29 20 8c 0d 21 7a 31 20 |mp>=300)) ..!z1 | 00007e00 20 42 6c 6f 63 6b 21 30 3d 57 69 6e 3a c8 99 20 | Block!0=Win:.. | 00007e10 22 57 69 6d 70 5f 47 65 74 57 69 6e 64 6f 77 53 |"Wimp_GetWindowS| 00007e20 74 61 74 65 22 2c 2c 42 6c 6f 63 6b 0d 21 84 21 |tate",,Block.!.!| 00007e30 20 20 56 6d 69 6e 58 3d 42 6c 6f 63 6b 21 34 3a | VminX=Block!4:| 00007e40 56 6d 69 6e 59 3d 42 6c 6f 63 6b 21 38 0d 21 8e |VminY=Block!8.!.| 00007e50 23 20 20 56 6d 61 78 58 3d 42 6c 6f 63 6b 21 31 |# VmaxX=Block!1| 00007e60 32 3a 56 6d 61 78 59 3d 42 6c 6f 63 6b 21 31 36 |2:VmaxY=Block!16| 00007e70 0d 21 98 27 20 20 53 63 72 6f 6c 6c 58 3d 42 6c |.!.' ScrollX=Bl| 00007e80 6f 63 6b 21 32 30 3a 53 63 72 6f 6c 6c 59 3d 42 |ock!20:ScrollY=B| 00007e90 6c 6f 63 6b 21 32 34 0d 21 a2 18 20 20 57 69 6e |lock!24.!.. Win| 00007ea0 64 46 6c 61 67 73 3d 42 6c 6f 63 6b 21 33 32 0d |dFlags=Block!32.| 00007eb0 21 ac 47 20 20 f2 55 70 64 61 74 65 49 63 6f 6e |!.G .UpdateIcon| 00007ec0 28 53 70 79 43 61 6c 63 2c 31 30 2c c3 28 56 6d |(SpyCalc,10,.(Vm| 00007ed0 69 6e 58 29 29 3a f2 55 70 64 61 74 65 49 63 6f |inX)):.UpdateIco| 00007ee0 6e 28 53 70 79 43 61 6c 63 2c 31 31 2c c3 28 56 |n(SpyCalc,11,.(V| 00007ef0 6d 69 6e 59 29 29 0d 21 b6 47 20 20 f2 55 70 64 |minY)).!.G .Upd| 00007f00 61 74 65 49 63 6f 6e 28 53 70 79 43 61 6c 63 2c |ateIcon(SpyCalc,| 00007f10 31 36 2c c3 28 56 6d 61 78 58 29 29 3a f2 55 70 |16,.(VmaxX)):.Up| 00007f20 64 61 74 65 49 63 6f 6e 28 53 70 79 43 61 6c 63 |dateIcon(SpyCalc| 00007f30 2c 31 37 2c c3 28 56 6d 61 78 59 29 29 0d 21 c0 |,17,.(VmaxY)).!.| 00007f40 4b 20 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 53 |K .UpdateIcon(S| 00007f50 70 79 43 61 6c 63 2c 32 32 2c c3 28 53 63 72 6f |pyCalc,22,.(Scro| 00007f60 6c 6c 58 29 29 3a f2 55 70 64 61 74 65 49 63 6f |llX)):.UpdateIco| 00007f70 6e 28 53 70 79 43 61 6c 63 2c 32 33 2c c3 28 53 |n(SpyCalc,23,.(S| 00007f80 63 72 6f 6c 6c 59 29 29 0d 21 ca 30 20 20 e7 20 |crollY)).!.0 . | 00007f90 57 69 6e 3c 3e 4f 6c 64 57 69 6e 20 8c 20 f2 55 |Win<>OldWin . .U| 00007fa0 70 64 61 74 65 53 77 69 74 63 68 65 73 28 57 69 |pdateSwitches(Wi| 00007fb0 6e 64 46 6c 61 67 73 29 0d 21 d4 3e 20 20 e7 20 |ndFlags).!.> . | 00007fc0 57 69 6e 3c 3e 4f 6c 64 57 69 6e 20 8c 20 f2 55 |Win<>OldWin . .U| 00007fd0 70 64 61 74 65 49 63 6f 6e 28 53 70 79 43 61 6c |pdateIcon(SpyCal| 00007fe0 63 2c 34 36 2c 22 26 22 2b c3 7e a4 57 69 6e 64 |c,46,"&"+.~.Wind| 00007ff0 46 6c 61 67 73 29 0d 21 de 3b 20 20 f4 20 4f 6e |Flags).!.; . On| 00008000 6c 79 20 75 70 64 61 74 65 20 66 6c 61 67 73 20 |ly update flags | 00008010 69 66 20 74 68 65 20 77 69 6e 64 6f 77 20 68 61 |if the window ha| 00008020 6e 64 6c 65 20 68 61 73 20 63 68 61 6e 67 65 64 |ndle has changed| 00008030 2e 0d 21 e8 05 cc 0d 21 f2 15 20 20 e7 20 57 69 |..!....!.. . Wi| 00008040 6e 3c 3e 4f 6c 64 57 69 6e 20 8c 0d 21 fc 33 20 |n<>OldWin ..!.3 | 00008050 20 20 20 f4 20 4e 6f 74 20 74 68 65 20 73 61 6d | . Not the sam| 00008060 65 20 77 69 6e 64 6f 77 20 61 73 20 62 65 66 6f |e window as befo| 00008070 72 65 2c 20 73 6f 20 75 70 64 61 74 65 3a 0d 22 |re, so update:."| 00008080 06 0c 20 20 20 20 f7 20 2b 31 0d 22 10 1b 20 20 |.. . +1.".. | 00008090 20 20 dc 20 31 30 2c 31 31 2c 31 36 2c 31 37 2c | . 10,11,16,17,| 000080a0 32 32 2c 32 33 0d 22 1a 11 20 20 20 20 e3 20 4e |22,23.".. . N| 000080b0 3d 31 20 b8 20 36 0d 22 24 2d 20 20 20 20 20 20 |=1 . 6."$- | 000080c0 f3 20 49 63 6f 6e 3a f2 55 70 64 61 74 65 49 63 |. Icon:.UpdateIc| 000080d0 6f 6e 28 53 70 79 43 61 6c 63 2c 49 63 6f 6e 2c |on(SpyCalc,Icon,| 000080e0 22 22 29 0d 22 2e 09 20 20 20 20 ed 0d 22 38 13 |"").".. .."8.| 000080f0 20 20 20 20 e3 20 4e 3d 32 36 20 b8 20 34 35 0d | . N=26 . 45.| 00008100 22 42 41 20 20 20 20 20 20 42 6c 6f 63 6b 21 30 |"BA Block!0| 00008110 3d 53 70 79 43 61 6c 63 3a 42 6c 6f 63 6b 21 34 |=SpyCalc:Block!4| 00008120 3d 4e 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 |=N:.. "Wimp_GetI| 00008130 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 6b |conState",,Block| 00008140 0d 22 4c 2a 20 20 20 20 20 20 42 6c 6f 63 6b 21 |."L* Block!| 00008150 38 3d 28 30 3c 3c 32 31 29 3a 42 6c 6f 63 6b 21 |8=(0<<21):Block!| 00008160 31 32 3d 28 31 3c 3c 32 31 29 0d 22 56 27 20 20 |12=(1<<21)."V' | 00008170 20 20 20 20 c8 99 20 22 57 69 6d 70 5f 53 65 74 | .. "Wimp_Set| 00008180 49 63 6f 6e 53 74 61 74 65 22 2c 2c 42 6c 6f 63 |IconState",,Bloc| 00008190 6b 0d 22 60 09 20 20 20 20 ed 0d 22 6a 30 20 20 |k."`. .."j0 | 000081a0 20 20 f2 55 70 64 61 74 65 49 63 6f 6e 28 53 70 | .UpdateIcon(Sp| 000081b0 79 43 61 6c 63 2c 34 36 2c 22 26 22 2b c3 7e a4 |yCalc,46,"&"+.~.| 000081c0 57 69 6e 64 46 6c 61 67 73 29 0d 22 74 07 20 20 |WindFlags)."t. | 000081d0 cd 0d 22 7e 05 cd 0d 22 88 08 3d 57 69 6e 0d 22 |.."~..."..=Win."| 000081e0 92 05 3a 0d 22 9c 20 dd 20 f2 55 70 64 61 74 65 |..:.". . .Update| 000081f0 53 77 69 74 63 68 65 73 28 57 69 6e 64 46 6c 61 |Switches(WindFla| 00008200 67 73 29 0d 22 a6 08 f7 20 2b 31 0d 22 b0 3b dc |gs)."... +1.".;.| 00008210 20 32 34 2c 32 35 2c 32 36 2c 32 37 2c 32 38 2c | 24,25,26,27,28,| 00008220 32 39 2c 33 30 2c 31 2c 34 2c 35 2c 36 2c 38 2c |29,30,1,4,5,6,8,| 00008230 39 2c 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 |9,10,11,12,13,14| 00008240 2c 31 35 2c 33 31 0d 22 ba 0f e3 20 4e 3d 32 36 |,15,31."... N=26| 00008250 20 b8 20 34 35 0d 22 c4 0b 20 20 f3 20 62 69 74 | . 45.".. . bit| 00008260 0d 22 ce 44 20 20 f2 55 70 64 61 74 65 53 65 6c |.".D .UpdateSel| 00008270 65 63 74 65 64 46 6c 61 67 28 53 70 79 43 61 6c |ectedFlag(SpyCal| 00008280 63 2c 4e 2c 28 57 69 6e 64 46 6c 61 67 73 20 80 |c,N,(WindFlags .| 00008290 20 28 31 3c 3c 62 69 74 29 29 3d 28 31 3c 3c 62 | (1<<bit))=(1<<b| 000082a0 69 74 29 29 0d 22 d8 05 ed 0d 22 e2 05 e1 0d 22 |it))."...."...."| 000082b0 ec 05 3a 0d 22 f6 10 dd 20 a4 57 69 6e 64 46 6c |..:."... .WindFl| 000082c0 61 67 73 0d 23 00 0f 57 69 6e 64 46 6c 61 67 73 |ags.#..WindFlags| 000082d0 3d 30 0d 23 0a 08 f7 20 2b 31 0d 23 14 3b dc 20 |=0.#... +1.#.;. | 000082e0 32 34 2c 32 35 2c 32 36 2c 32 37 2c 32 38 2c 32 |24,25,26,27,28,2| 000082f0 39 2c 33 30 2c 31 2c 34 2c 35 2c 36 2c 38 2c 39 |9,30,1,4,5,6,8,9| 00008300 2c 31 30 2c 31 31 2c 31 32 2c 31 33 2c 31 34 2c |,10,11,12,13,14,| 00008310 31 35 2c 33 31 0d 23 1e 0f e3 20 4e 3d 32 36 20 |15,31.#... N=26 | 00008320 b8 20 34 35 0d 23 28 0b 20 20 f3 20 62 69 74 0d |. 45.#(. . bit.| 00008330 23 32 37 20 20 e7 20 a4 53 65 6c 65 63 74 65 64 |#27 . .Selected| 00008340 53 74 61 74 65 28 53 70 79 43 61 6c 63 2c 4e 29 |State(SpyCalc,N)| 00008350 20 8c 20 57 69 6e 64 46 6c 61 67 73 2b 3d 28 31 | . WindFlags+=(1| 00008360 3c 3c 62 69 74 29 0d 23 3c 05 ed 0d 23 46 0e 3d |<<bit).#<...#F.=| 00008370 57 69 6e 64 46 6c 61 67 73 0d 23 50 05 3a 0d 23 |WindFlags.#P.:.#| 00008380 5a 13 dd 20 a4 53 61 76 65 53 65 74 74 69 6e 67 |Z.. .SaveSetting| 00008390 73 0d 23 64 07 ea 20 85 0d 23 6e 3c ee 20 85 20 |s.#d.. ..#n<. . | 000083a0 ea 20 f7 20 85 3a f2 43 6c 6f 73 65 46 69 6c 65 |. . .:.CloseFile| 000083b0 49 66 50 6f 73 73 28 44 61 74 61 29 3a 3d a3 3a |IfPoss(Data):=.:| 000083c0 f4 20 45 72 72 6f 72 20 77 72 69 74 69 6e 67 20 |. Error writing | 000083d0 66 69 6c 65 0d 23 78 07 20 20 3a 0d 23 82 29 20 |file.#x. :.#.) | 000083e0 20 44 61 74 61 3d ae 20 28 22 3c 57 69 6e 64 46 | Data=. ("<WindF| 000083f0 6c 61 67 73 24 44 69 72 3e 2e 53 65 74 74 69 6e |lags$Dir>.Settin| 00008400 67 73 22 29 0d 23 8c 41 20 20 d5 23 44 61 74 61 |gs").#.A .#Data| 00008410 2c 22 7c 20 58 20 61 6e 64 20 59 20 67 72 69 64 |,"| X and Y grid| 00008420 20 63 6f 6f 72 64 69 6e 61 74 65 73 20 6f 66 20 | coordinates of | 00008430 57 69 6e 64 6f 77 20 46 6c 61 67 73 20 77 69 6e |Window Flags win| 00008440 64 6f 77 3a 22 0d 23 96 19 20 20 d5 23 44 61 74 |dow:".#.. .#Dat| 00008450 61 2c c3 28 58 50 6f 73 69 74 69 6f 6e 29 0d 23 |a,.(XPosition).#| 00008460 a0 19 20 20 d5 23 44 61 74 61 2c c3 28 59 50 6f |.. .#Data,.(YPo| 00008470 73 69 74 69 6f 6e 29 0d 23 aa 3e 20 20 d5 23 44 |sition).#.> .#D| 00008480 61 74 61 2c 22 7c 20 53 70 79 69 6e 67 20 61 74 |ata,"| Spying at| 00008490 20 73 74 61 72 74 75 70 20 28 2d 31 20 66 6f 72 | startup (-1 for| 000084a0 20 54 52 55 45 3b 20 30 20 66 6f 72 20 46 41 4c | TRUE; 0 for FAL| 000084b0 53 45 29 3a 22 0d 23 b4 16 20 20 d5 23 44 61 74 |SE):".#.. .#Dat| 000084c0 61 2c c3 28 53 70 79 69 6e 67 29 0d 23 be 0c 20 |a,.(Spying).#.. | 000084d0 20 d9 23 44 61 74 61 0d 23 c8 30 20 20 ff 28 22 | .#Data.#.0 .("| 000084e0 53 65 74 74 79 70 65 20 3c 57 69 6e 64 46 6c 61 |Settype <WindFla| 000084f0 67 73 24 44 69 72 3e 2e 53 65 74 74 69 6e 67 73 |gs$Dir>.Settings| 00008500 20 54 65 78 74 22 29 0d 23 d2 07 20 20 3a 0d 23 | Text").#.. :.#| 00008510 dc 06 3d b9 0d 23 e6 05 3a 0d 23 f0 13 dd 20 a4 |..=..#..:.#... .| 00008520 4c 6f 61 64 53 65 74 74 69 6e 67 73 0d 23 fa 07 |LoadSettings.#..| 00008530 ea 20 85 0d 24 04 4f ee 20 85 20 ea 20 f7 20 85 |. ..$.O. . . . .| 00008540 3a f2 43 6c 6f 73 65 46 69 6c 65 49 66 50 6f 73 |:.CloseFileIfPos| 00008550 73 28 44 61 74 61 29 3a 3d a3 3a f4 20 27 53 65 |s(Data):=.:. 'Se| 00008560 74 74 69 6e 67 73 27 20 66 69 6c 65 20 69 73 20 |ttings' file is | 00008570 64 61 6d 61 67 65 64 20 6f 72 20 6d 69 73 73 69 |damaged or missi| 00008580 6e 67 0d 24 0e 07 20 20 3a 0d 24 18 27 20 20 44 |ng.$.. :.$.' D| 00008590 61 74 61 3d 8e 20 22 3c 57 69 6e 64 46 6c 61 67 |ata=. "<WindFlag| 000085a0 73 24 44 69 72 3e 2e 53 65 74 74 69 6e 67 73 22 |s$Dir>.Settings"| 000085b0 0d 24 22 1d 20 20 58 50 6f 73 69 74 69 6f 6e 3d |.$". XPosition=| 000085c0 bb 28 a4 4e 65 78 74 45 6e 74 72 79 29 0d 24 2c |.(.NextEntry).$,| 000085d0 1d 20 20 59 50 6f 73 69 74 69 6f 6e 3d bb 28 a4 |. YPosition=.(.| 000085e0 4e 65 78 74 45 6e 74 72 79 29 0d 24 36 1a 20 20 |NextEntry).$6. | 000085f0 53 70 79 69 6e 67 3d bb 28 a4 4e 65 78 74 45 6e |Spying=.(.NextEn| 00008600 74 72 79 29 0d 24 40 0c 20 20 d9 23 44 61 74 61 |try).$@. .#Data| 00008610 0d 24 4a 07 20 20 3a 0d 24 54 62 20 20 e7 20 58 |.$J. :.$Tb . X| 00008620 50 6f 73 69 74 69 6f 6e 3c 3e 2d 31 20 80 20 59 |Position<>-1 . Y| 00008630 50 6f 73 69 74 69 6f 6e 3c 3e 2d 31 20 8c 20 f2 |Position<>-1 . .| 00008640 55 70 64 61 74 65 53 65 6c 65 63 74 65 64 46 6c |UpdateSelectedFl| 00008650 61 67 28 4c 6f 63 2c 36 2b 28 28 35 2a 58 50 6f |ag(Loc,6+((5*XPo| 00008660 73 69 74 69 6f 6e 29 2b 28 34 2d 59 50 6f 73 69 |sition)+(4-YPosi| 00008670 74 69 6f 6e 29 29 2c b9 29 0d 24 5e 22 20 20 f2 |tion)),.).$^" .| 00008680 54 69 63 6b 4d 65 6e 75 28 4d 61 69 6e 4d 65 6e |TickMenu(MainMen| 00008690 75 2c 31 2c 53 70 79 69 6e 67 29 0d 24 68 07 20 |u,1,Spying).$h. | 000086a0 20 3a 0d 24 72 06 3d b9 0d 24 7c 05 3a 0d 24 86 | :.$r.=..$|.:.$.| 000086b0 16 dd 20 f2 44 65 66 61 75 6c 74 53 65 74 74 69 |.. .DefaultSetti| 000086c0 6e 67 73 0d 24 90 1b 58 50 6f 73 69 74 69 6f 6e |ngs.$..XPosition| 000086d0 3d 34 3a 59 50 6f 73 69 74 69 6f 6e 3d 32 0d 24 |=4:YPosition=2.$| 000086e0 9a 3e f2 55 70 64 61 74 65 53 65 6c 65 63 74 65 |.>.UpdateSelecte| 000086f0 64 46 6c 61 67 28 4c 6f 63 2c 36 2b 28 28 35 2a |dFlag(Loc,6+((5*| 00008700 58 50 6f 73 69 74 69 6f 6e 29 2b 28 34 2d 59 50 |XPosition)+(4-YP| 00008710 6f 73 69 74 69 6f 6e 29 29 2c b9 29 0d 24 a4 0c |osition)),.).$..| 00008720 53 70 79 69 6e 67 3d b9 0d 24 ae 20 f2 54 69 63 |Spying=..$. .Tic| 00008730 6b 4d 65 6e 75 28 4d 61 69 6e 4d 65 6e 75 2c 31 |kMenu(MainMenu,1| 00008740 2c 53 70 79 69 6e 67 29 0d 24 b8 05 e1 0d 24 c2 |,Spying).$....$.| 00008750 05 3a 0d 24 cc 12 dd 20 f2 52 41 4d 54 72 61 6e |.:.$... .RAMTran| 00008760 73 6d 69 74 0d 24 d6 41 4f 74 68 65 72 54 61 73 |smit.$.AOtherTas| 00008770 6b 48 61 6e 64 6c 65 3d 42 6c 6f 63 6b 21 34 3a |kHandle=Block!4:| 00008780 4d 79 52 65 66 3d 42 6c 6f 63 6b 21 38 3a 54 72 |MyRef=Block!8:Tr| 00008790 61 6e 73 6d 69 74 42 75 66 66 65 72 3d 42 6c 6f |ansmitBuffer=Blo| 000087a0 63 6b 21 32 30 0d 24 e0 4f c8 99 20 22 57 69 6d |ck!20.$.O.. "Wim| 000087b0 70 5f 54 72 61 6e 73 66 65 72 42 6c 6f 63 6b 22 |p_TransferBlock"| 000087c0 2c 54 61 73 6b 2c 54 72 61 6e 73 6d 69 73 73 69 |,Task,Transmissi| 000087d0 6f 6e 2c 4f 74 68 65 72 54 61 73 6b 48 61 6e 64 |on,OtherTaskHand| 000087e0 6c 65 2c 54 72 61 6e 73 6d 69 74 42 75 66 66 65 |le,TransmitBuffe| 000087f0 72 2c 31 30 0d 24 ea 28 42 6c 6f 63 6b 21 30 3d |r,10.$.(Block!0=| 00008800 32 38 3a 42 6c 6f 63 6b 21 31 36 3d 37 3a f4 20 |28:Block!16=7:. | 00008810 52 41 4d 20 54 72 61 6e 73 6d 69 74 0d 24 f4 2a |RAM Transmit.$.*| 00008820 42 6c 6f 63 6b 21 31 32 3d 4d 79 52 65 66 3a 42 |Block!12=MyRef:B| 00008830 6c 6f 63 6b 21 32 30 3d 54 72 61 6e 73 6d 69 74 |lock!20=Transmit| 00008840 42 75 66 66 65 72 0d 24 fe 1d 42 6c 6f 63 6b 21 |Buffer.$..Block!| 00008850 32 34 3d a9 28 24 54 72 61 6e 73 6d 69 73 73 69 |24=.($Transmissi| 00008860 6f 6e 29 0d 25 08 32 c8 99 20 22 57 69 6d 70 5f |on).%.2.. "Wimp_| 00008870 53 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c |SendMessage",17,| 00008880 42 6c 6f 63 6b 2c 4f 74 68 65 72 54 61 73 6b 48 |Block,OtherTaskH| 00008890 61 6e 64 6c 65 0d 25 12 10 44 72 61 67 67 69 6e |andle.%..Draggin| 000088a0 67 24 3d 22 22 0d 25 1c 05 e1 0d 25 26 05 3a 0d |g$="".%....%&.:.| 000088b0 25 30 18 dd 20 f2 57 69 6d 70 53 63 72 61 70 54 |%0.. .WimpScrapT| 000088c0 72 61 6e 73 6d 69 74 0d 25 3a 29 4f 74 68 65 72 |ransmit.%:)Other| 000088d0 54 61 73 6b 48 61 6e 64 6c 65 3d 42 6c 6f 63 6b |TaskHandle=Block| 000088e0 21 34 3a 4d 79 52 65 66 3d 42 6c 6f 63 6b 21 38 |!4:MyRef=Block!8| 000088f0 0d 25 44 32 53 61 76 65 46 69 6c 65 6e 61 6d 65 |.%D2SaveFilename| 00008900 24 3d c0 24 28 42 6c 6f 63 6b 2b 34 34 29 2c a7 |$=.$(Block+44),.| 00008910 24 28 42 6c 6f 63 6b 2b 34 34 29 2c bd 30 29 2d |$(Block+44),.0)-| 00008920 31 29 0d 25 4e 07 ea 20 85 0d 25 58 41 ee 20 85 |1).%N.. ..%XA. .| 00008930 20 ea 20 f7 20 85 3a 85 20 39 39 39 39 2c 22 41 | . . .:. 9999,"A| 00008940 6e 20 65 72 72 6f 72 20 68 61 73 20 6f 63 63 75 |n error has occu| 00008950 72 72 65 64 20 64 75 72 69 6e 67 20 74 72 61 6e |rred during tran| 00008960 73 6d 69 73 73 69 6f 6e 2e 22 0d 25 62 18 44 61 |smission.".%b.Da| 00008970 74 61 3d ae 20 53 61 76 65 46 69 6c 65 6e 61 6d |ta=. SaveFilenam| 00008980 65 24 0d 25 6c 1a d5 23 44 61 74 61 2c 24 28 54 |e$.%l..#Data,$(T| 00008990 72 61 6e 73 6d 69 73 73 69 6f 6e 29 0d 25 76 0a |ransmission).%v.| 000089a0 d9 23 44 61 74 61 0d 25 80 27 ff 28 22 53 65 74 |.#Data.%.'.("Set| 000089b0 54 79 70 65 20 22 2b 53 61 76 65 46 69 6c 65 6e |Type "+SaveFilen| 000089c0 61 6d 65 24 2b 22 20 54 65 78 74 22 29 0d 25 8a |ame$+" Text").%.| 000089d0 54 42 6c 6f 63 6b 21 30 3d 28 34 34 2b a9 28 53 |TBlock!0=(44+.(S| 000089e0 61 76 65 46 69 6c 65 6e 61 6d 65 24 29 29 3a 42 |aveFilename$)):B| 000089f0 6c 6f 63 6b 21 30 3d 28 42 6c 6f 63 6b 21 30 29 |lock!0=(Block!0)| 00008a00 2b 28 34 2d 28 28 42 6c 6f 63 6b 21 30 29 20 83 |+(4-((Block!0) .| 00008a10 20 34 29 29 3a f4 20 57 6f 72 64 20 61 6c 69 67 | 4)):. Word alig| 00008a20 6e 0d 25 94 28 42 6c 6f 63 6b 21 31 32 3d 4d 79 |n.%.(Block!12=My| 00008a30 52 65 66 3a 42 6c 6f 63 6b 21 31 36 3d 33 3a f4 |Ref:Block!16=3:.| 00008a40 20 44 61 74 61 4c 6f 61 64 0d 25 9e 33 42 6c 6f | DataLoad.%.3Blo| 00008a50 63 6b 21 32 30 3d 44 72 61 67 67 65 64 54 6f 57 |ck!20=DraggedToW| 00008a60 69 6e 64 6f 77 3a 42 6c 6f 63 6b 21 32 34 3d 44 |indow:Block!24=D| 00008a70 72 61 67 67 65 64 54 6f 49 63 6f 6e 0d 25 a8 2b |raggedToIcon.%.+| 00008a80 42 6c 6f 63 6b 21 32 38 3d 44 72 61 67 67 65 64 |Block!28=Dragged| 00008a90 54 6f 58 3a 42 6c 6f 63 6b 21 33 32 3d 44 72 61 |ToX:Block!32=Dra| 00008aa0 67 67 65 64 54 6f 59 0d 25 b2 2a 42 6c 6f 63 6b |ggedToY.%.*Block| 00008ab0 21 33 36 3d 31 32 3a f4 20 4e 65 76 65 72 20 6d |!36=12:. Never m| 00008ac0 6f 72 65 20 74 68 61 6e 20 31 32 20 62 79 74 65 |ore than 12 byte| 00008ad0 73 0d 25 bc 24 42 6c 6f 63 6b 21 34 30 3d 26 46 |s.%.$Block!40=&F| 00008ae0 46 46 3a f4 20 46 69 6c 65 74 79 70 65 20 6f 66 |FF:. Filetype of| 00008af0 20 54 65 78 74 0d 25 c6 2d 24 28 42 6c 6f 63 6b | Text.%.-$(Block| 00008b00 2b 34 34 29 3d 53 61 76 65 46 69 6c 65 6e 61 6d |+44)=SaveFilenam| 00008b10 65 24 2b bd 30 3a 44 72 61 67 67 69 6e 67 24 3d |e$+.0:Dragging$=| 00008b20 22 22 0d 25 d0 32 c8 99 20 22 57 69 6d 70 5f 53 |"".%.2.. "Wimp_S| 00008b30 65 6e 64 4d 65 73 73 61 67 65 22 2c 31 38 2c 42 |endMessage",18,B| 00008b40 6c 6f 63 6b 2c 4f 74 68 65 72 54 61 73 6b 48 61 |lock,OtherTaskHa| 00008b50 6e 64 6c 65 0d 25 da 05 e1 0d 25 e4 05 3a 0d 25 |ndle.%....%..:.%| 00008b60 ee 19 dd 20 a4 4d 61 6b 65 44 72 61 67 67 69 6e |... .MakeDraggin| 00008b70 67 53 70 72 69 74 65 0d 25 f8 07 ea 20 85 0d 26 |gSprite.%... ..&| 00008b80 02 31 ee 20 85 20 ea 20 c8 99 20 22 4f 53 5f 53 |.1. . . .. "OS_S| 00008b90 70 72 69 74 65 4f 70 22 2c 72 30 2c 72 31 2c 72 |priteOp",r0,r1,r| 00008ba0 32 2c 72 33 3a f7 20 85 3a 85 20 9f 2c f6 24 0d |2,r3:. .:. .,.$.| 00008bb0 26 0c 26 53 63 61 6c 69 6e 67 3d a4 4d 6f 64 65 |&.&Scaling=.Mode| 00008bc0 49 6e 66 6f 28 22 59 45 69 67 46 61 63 74 6f 72 |Info("YEigFactor| 00008bd0 22 2c 2d 31 29 0d 26 16 12 e7 20 53 63 61 6c 69 |",-1).&... Scali| 00008be0 6e 67 3c 3d 31 20 8c 0d 26 20 18 20 20 4e 61 6d |ng<=1 ..& . Nam| 00008bf0 65 24 3d 22 66 6c 61 67 73 5f 68 69 67 68 22 0d |e$="flags_high".| 00008c00 26 2a 39 20 20 c8 99 20 22 4f 53 5f 53 70 72 69 |&*9 .. "OS_Spri| 00008c10 74 65 4f 70 22 2c 32 35 36 2b 36 30 2c 53 70 72 |teOp",256+60,Spr| 00008c20 69 74 65 73 2c 4e 61 6d 65 24 20 b8 20 72 30 2c |ites,Name$ . r0,| 00008c30 72 31 2c 72 32 2c 72 33 0d 26 34 36 20 20 c8 99 |r1,r2,r3.&46 ..| 00008c40 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 32 | "OS_SpriteOp",2| 00008c50 35 36 2b 33 34 2c 53 70 72 69 74 65 73 2c 22 64 |56+34,Sprites,"d| 00008c60 72 61 67 68 69 67 68 22 2c 30 2c 30 2c 38 0d 26 |raghigh",0,0,8.&| 00008c70 3e 05 cc 0d 26 48 17 20 20 4e 61 6d 65 24 3d 22 |>...&H. Name$="| 00008c80 66 6c 61 67 73 5f 6c 6f 77 22 0d 26 52 39 20 20 |flags_low".&R9 | 00008c90 c8 99 20 22 4f 53 5f 53 70 72 69 74 65 4f 70 22 |.. "OS_SpriteOp"| 00008ca0 2c 32 35 36 2b 36 30 2c 53 70 72 69 74 65 73 2c |,256+60,Sprites,| 00008cb0 4e 61 6d 65 24 20 b8 20 72 30 2c 72 31 2c 72 32 |Name$ . r0,r1,r2| 00008cc0 2c 72 33 0d 26 5c 35 20 20 c8 99 20 22 4f 53 5f |,r3.&\5 .. "OS_| 00008cd0 53 70 72 69 74 65 4f 70 22 2c 32 35 36 2b 33 34 |SpriteOp",256+34| 00008ce0 2c 53 70 72 69 74 65 73 2c 22 64 72 61 67 6c 6f |,Sprites,"draglo| 00008cf0 77 22 2c 30 2c 30 2c 38 0d 26 66 05 cd 0d 26 70 |w",0,0,8.&f...&p| 00008d00 19 c8 99 20 22 57 69 6d 70 5f 53 65 74 43 6f 6c |... "Wimp_SetCol| 00008d10 6f 75 72 22 2c 37 0d 26 7a 29 ef 35 3a ec 20 28 |our",7.&z).5:. (| 00008d20 31 36 30 2d 28 31 36 2a a9 28 24 54 72 61 6e 73 |160-(16*.($Trans| 00008d30 6d 69 73 73 69 6f 6e 29 29 29 2f 32 2c 33 36 0d |mission)))/2,36.| 00008d40 26 84 2b ef 20 32 33 2c 31 37 2c 37 2c 36 2c 38 |&.+. 23,17,7,6,8| 00008d50 3b 38 3b 30 3b 3a f4 20 53 69 6e 67 6c 65 2d 68 |;8;0;:. Single-h| 00008d60 65 69 67 68 74 20 74 65 78 74 0d 26 8e 3b e7 20 |eight text.&.;. | 00008d70 53 63 61 6c 69 6e 67 3c 3d 31 20 8c 20 ef 20 32 |Scaling<=1 . . 2| 00008d80 33 2c 31 37 2c 37 2c 36 2c 38 3b 31 36 3b 30 3b |3,17,7,6,8;16;0;| 00008d90 3a f4 20 44 6f 75 62 6c 65 2d 68 65 69 67 68 74 |:. Double-height| 00008da0 20 74 65 78 74 0d 26 98 13 f1 20 24 54 72 61 6e | text.&... $Tran| 00008db0 73 6d 69 73 73 69 6f 6e 0d 26 a2 20 c8 99 20 22 |smission.&. .. "| 00008dc0 4f 53 5f 53 70 72 69 74 65 4f 70 22 2c 72 30 2c |OS_SpriteOp",r0,| 00008dd0 72 31 2c 72 32 2c 72 33 0d 26 ac 0a 3d 4e 61 6d |r1,r2,r3.&..=Nam| 00008de0 65 24 0d ff |e$..| 00008de4